changeset 2:0c59e7a7782a

Working on GPIO and RCC
author cin
date Mon, 16 Jan 2017 11:04:47 +0300
parents a0b14b11ad9f
children 3d9705e842f8
files f103c8/.cproject f103c8/.mxproject f103c8/.project f103c8/.settings/com.atollic.truestudio.debug.hardware_device.prefs f103c8/.settings/language.settings.xml f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_class_marks_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_class_marks_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_convolution_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/math_helper.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/math_helper.h f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_convolution_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/math_helper.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/math_helper.h f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_dotproduct_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/GCC/arm_dotproduct_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_fft_bin_data.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_fft_bin_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/GCC/arm_fft_bin_data.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/GCC/arm_fft_bin_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_fir_data.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_fir_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/math_helper.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/math_helper.h f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_graphic_equalizer_data.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_graphic_equalizer_example_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/math_helper.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/math_helper.h f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_linear_interp_data.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_linear_interp_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/math_helper.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/math_helper.h f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_matrix_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/math_helper.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/math_helper.h f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_signal_converge_data.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_signal_converge_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/math_helper.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/math_helper.h f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_sin_cos_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_variance_example_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c f103c8/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c f103c8/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h f103c8/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h f103c8/Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h f103c8/Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s f103c8/Drivers/CMSIS/Include/arm_common_tables.h f103c8/Drivers/CMSIS/Include/arm_const_structs.h f103c8/Drivers/CMSIS/Include/arm_math.h f103c8/Drivers/CMSIS/Include/cmsis_armcc.h f103c8/Drivers/CMSIS/Include/cmsis_armcc_V6.h f103c8/Drivers/CMSIS/Include/cmsis_gcc.h f103c8/Drivers/CMSIS/Include/core_cm0.h f103c8/Drivers/CMSIS/Include/core_cm0plus.h f103c8/Drivers/CMSIS/Include/core_cm3.h f103c8/Drivers/CMSIS/Include/core_cm4.h f103c8/Drivers/CMSIS/Include/core_cm7.h f103c8/Drivers/CMSIS/Include/core_cmFunc.h f103c8/Drivers/CMSIS/Include/core_cmInstr.h f103c8/Drivers/CMSIS/Include/core_cmSimd.h f103c8/Drivers/CMSIS/Include/core_sc000.h f103c8/Drivers/CMSIS/Include/core_sc300.h f103c8/Drivers/CMSIS/RTOS/Template/cmsis_os.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c f103c8/EWARM/Project.eww f103c8/EWARM/f103c8.ewd f103c8/EWARM/f103c8.ewp f103c8/EWARM/stm32f103xb_flash.icf f103c8/EWARM/stm32f103xb_sram.icf f103c8/Inc/main.h f103c8/Inc/stm32f1xx_hal_conf.h f103c8/Inc/stm32f1xx_it.h f103c8/STM32F103C8_FLASH.ld f103c8/Src/main.c f103c8/Src/stm32f1xx_hal_msp.c f103c8/Src/stm32f1xx_it.c f103c8/Src/system_stm32f1xx.c f103c8/f103c8.elf.launch f103c8/f103c8.ioc halpp/include/gpio.h halpp/include/rcc.h l476rg-hal-test/src/main.cpp l476rg-hal-test/src/msp.cpp l476rg/.mxproject l476rg/Inc/tim.h l476rg/Src/gpio.c l476rg/Src/main.c l476rg/Src/tim.c l476rg/l476rg.elf.launch l476rg/l476rg.ioc
diffstat 385 files changed, 254471 insertions(+), 346 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/.cproject	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="com.atollic.truestudio.exe.debug.1518366166">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.atollic.truestudio.exe.debug.1518366166" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+				<externalSettings />
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser" />
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="elf" artifactName="f103c8" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="com.atollic.truestudio.exe.debug.1518366166" name="Debug" parent="com.atollic.truestudio.exe.debug" postbuildStep="" prebuildStep="">
+					<folderInfo id="com.atollic.truestudio.exe.debug.1518366166.2031504340" name="/" resourcePath="">
+						<toolChain id="com.atollic.truestudio.exe.debug.toolchain.683225115" name="Atollic ARM Tools" superClass="com.atollic.truestudio.exe.debug.toolchain">
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.atollic.truestudio.exe.debug.toolchain.platform.2054752829" isAbstract="false" name="Debug platform" superClass="com.atollic.truestudio.exe.debug.toolchain.platform" />
+							<builder buildPath="${workspace_loc:/STM32100B-EVAL/Debug}" id="com.atollic.truestudio.mbs.builder1.1222194476" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="com.atollic.truestudio.mbs.builder1">
+								<outputEntries>
+									<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug" />
+								</outputEntries>
+							</builder>
+							<tool command="arm-atollic-eabi-gcc -c" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS}" id="com.atollic.truestudio.exe.debug.toolchain.as.1545899283" name="Assembler" superClass="com.atollic.truestudio.exe.debug.toolchain.as">
+								<option id="com.atollic.truestudio.common_options.target.endianess.1608144567" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" value="com.atollic.truestudio.common_options.target.endianess.little" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.mcpu.286463162" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F103C8" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.instr_set.2033833414" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated" />
+								<option id="com.atollic.truestudio.as.general.incpath.770237934" name="Include path" superClass="com.atollic.truestudio.as.general.incpath" valueType="includePath" />
+                                                                <option id="com.atollic.truestudio.gcc.symbols.defined.1670122205" name="Defined symbols" superClass="com.atollic.truestudio.gcc.symbols.defined" valueType="definedSymbols" />
+                                                                <option id="com.atollic.truestudio.as.general.otherflags.51384659" superClass="com.atollic.truestudio.as.general.otherflags" value="" valueType="string" />
+                                                                <option id="com.atollic.truestudio.as.general.warnings.1324541152" superClass="com.atollic.truestudio.as.general.warnings" value="true" valueType="boolean" />
+                                                                <inputType id="com.atollic.truestudio.as.input.374932590" name="Input" superClass="com.atollic.truestudio.as.input" />
+                                                                <option id="com.atollic.truestudio.common_options.target.fpu.829683864" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.soft" valueType="enumerated" />
+                                                                <option id="com.atollic.truestudio.common_options.target.fpucore.1297069055" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.None" valueType="enumerated" />
+                                                        </tool>
+							<tool command="arm-atollic-eabi-gcc -c " commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS}" id="com.atollic.truestudio.exe.debug.toolchain.gcc.1836874447" name="C Compiler" superClass="com.atollic.truestudio.exe.debug.toolchain.gcc">
+								<option id="com.atollic.truestudio.gcc.directories.select.330946435" name="Include path" superClass="com.atollic.truestudio.gcc.directories.select" valueType="includePath"><listOptionValue builtIn="false" value="../Inc" /><listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include" /><listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /></option>
+								<option id="com.atollic.truestudio.gcc.symbols.defined.1670122205" name="Defined symbols" superClass="com.atollic.truestudio.gcc.symbols.defined" valueType="definedSymbols"><listOptionValue builtIn="false" value="__weak=__attribute__((weak))" /><listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32F103xB" /></option>
+								<option id="com.atollic.truestudio.common_options.target.endianess.1854274048" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" value="com.atollic.truestudio.common_options.target.endianess.little" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.mcpu.191909026" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F103C8" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.instr_set.1503159865" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated" />
+								<option id="com.atollic.truestudio.gcc.optimization.prep_garbage.586275206" name="Prepare dead code removal" superClass="com.atollic.truestudio.gcc.optimization.prep_garbage" value="true" valueType="boolean" />
+								<option id="com.atollic.truestudio.gcc.optimization.prep_data.1044766448" name="Prepare dead data removal" superClass="com.atollic.truestudio.gcc.optimization.prep_data" value="true" valueType="boolean" />
+                                                                <!--option id="com.atollic.truestudio.gcc.misc.otherflags.895097519" name="Other options" superClass="com.atollic.truestudio.gcc.misc.otherflags" value=" -Os -w -mlong-callss" valueType="string"/-->
+								<option id="com.atollic.truestudio.exe.debug.toolchain.gcc.optimization.level.1763412676" name="Optimization Level" superClass="com.atollic.truestudio.exe.debug.toolchain.gcc.optimization.level" value="com.atollic.truestudio.gcc.optimization.level.0s" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.fpu.829683864" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.soft" valueType="enumerated" />
+                                                                <option id="com.atollic.truestudio.common_options.target.fpucore.1297069055" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.None" valueType="enumerated" />
+								<inputType id="com.atollic.truestudio.gcc.input.850396938" superClass="com.atollic.truestudio.gcc.input" />
+							</tool>
+							<tool id="com.atollic.truestudio.exe.debug.toolchain.ld.1444973427" name="C Linker" superClass="com.atollic.truestudio.exe.debug.toolchain.ld">
+								<option id="com.atollic.truestudio.common_options.target.endianess.662778612" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" value="com.atollic.truestudio.common_options.target.endianess.little" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.mcpu.35700531" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F103C8" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.instr_set.566688004" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated" />
+								<option id="com.atollic.truestudio.ld.general.scriptfile.1350476438" name="Linker script" superClass="com.atollic.truestudio.ld.general.scriptfile" value="../STM32F103C8_FLASH.ld" valueType="string" />
+								<option id="com.atollic.truestudio.ld.optimization.do_garbage.1816004776" name="Dead code removal" superClass="com.atollic.truestudio.ld.optimization.do_garbage" value="true" valueType="boolean" />
+                                                                <option id="com.atollic.truestudio.ld.libraries.list.848669414" superClass="com.atollic.truestudio.ld.libraries.list" valueType="libs" />
+                                                                <option id="com.atollic.truestudio.ld.libraries.searchpath.1273009461" superClass="com.atollic.truestudio.ld.libraries.searchpath" valueType="libPaths" />
+                                                                <!--option id="com.atollic.truestudio.ld.misc.linkerflags.1948405714" superClass="com.atollic.truestudio.ld.misc.linkerflags" value="" valueType="string"/>-->
+                                                                <option id="com.atollic.truestudio.common_options.target.fpu.829683864" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.soft" valueType="enumerated" />
+                                                                <option id="com.atollic.truestudio.common_options.target.fpucore.1297069055" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.None" valueType="enumerated" />
+                                                                <inputType id="com.atollic.truestudio.ld.input.1372975870" name="Input" superClass="com.atollic.truestudio.ld.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
+									<additionalInput kind="additionalinput" paths="$(LIBS)" />
+								</inputType>
+							</tool>
+							<tool id="com.atollic.truestudio.exe.debug.toolchain.gpp.981298185" name="C++ Compiler" superClass="com.atollic.truestudio.exe.debug.toolchain.gpp">
+								<option id="com.atollic.truestudio.gpp.symbols.defined.1619552487" name="Defined symbols" superClass="com.atollic.truestudio.gpp.symbols.defined" valueType="stringList">
+									<listOptionValue builtIn="false" value="STM32F10X_MD" />
+									<listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER" />
+								</option>
+								<option id="com.atollic.truestudio.common_options.target.endianess.176262651" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" value="com.atollic.truestudio.common_options.target.endianess.little" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.mcpu.630487808" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F103C8" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.instr_set.227324580" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated" />
+								<option id="com.atollic.truestudio.gpp.optimization.prep_garbage.26464025" name="Prepare dead code removal" superClass="com.atollic.truestudio.gpp.optimization.prep_garbage" value="true" valueType="boolean" />
+								<option id="com.atollic.truestudio.gpp.optimization.fno_rtti.1009504734" name="Disable RTTI" superClass="com.atollic.truestudio.gpp.optimization.fno_rtti" />
+								<option id="com.atollic.truestudio.gpp.optimization.fno_exceptions.342217745" name="Disable exception handling" superClass="com.atollic.truestudio.gpp.optimization.fno_exceptions" />
+                                                                <option id="com.atollic.truestudio.common_options.target.fpu.829683864" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.soft" valueType="enumerated" />
+                                                                <option id="com.atollic.truestudio.common_options.target.fpucore.1297069055" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.None" valueType="enumerated" />
+                                                        </tool>
+							<tool id="com.atollic.truestudio.exe.debug.toolchain.ldcc.428260" name="C++ Linker" superClass="com.atollic.truestudio.exe.debug.toolchain.ldcc">
+								<option id="com.atollic.truestudio.common_options.target.endianess.2051741049" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess" value="com.atollic.truestudio.common_options.target.endianess.little" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.mcpu.1701726850" name="Microcontroller" superClass="com.atollic.truestudio.common_options.target.mcpu" value="STM32F103C8" valueType="enumerated" />
+								<option id="com.atollic.truestudio.common_options.target.instr_set.1600237525" name="Instruction set" superClass="com.atollic.truestudio.common_options.target.instr_set" value="com.atollic.truestudio.common_options.target.instr_set.thumb2" valueType="enumerated" />
+								<option id="com.atollic.truestudio.ldcc.optimization.do_garbage.956844137" name="Dead code removal" superClass="com.atollic.truestudio.ldcc.optimization.do_garbage" value="true" valueType="boolean" />
+								<option id="com.atollic.truestudio.ldcc.general.scriptfile.561304432" name="Linker script" superClass="com.atollic.truestudio.ldcc.general.scriptfile" value="../STM32F103C8_FLASH.ld" valueType="string" />
+                                                                <option id="com.atollic.truestudio.common_options.target.fpu.829683864" name="Floating point" superClass="com.atollic.truestudio.common_options.target.fpu" value="com.atollic.truestudio.common_options.target.fpu.soft" valueType="enumerated" />
+                                                                <option id="com.atollic.truestudio.common_options.target.fpucore.1297069055" name="FPU" superClass="com.atollic.truestudio.common_options.target.fpucore" value="com.atollic.truestudio.common_options.target.fpucore.None" valueType="enumerated" />
+                                                        </tool>
+							<tool id="com.atollic.truestudio.exe.debug.toolchain.secoutput.839033486" name="Other" superClass="com.atollic.truestudio.exe.debug.toolchain.secoutput" />
+						</toolChain>
+					</folderInfo>
+					<fileInfo id="com.atollic.truestudio.exe.debug.311825581.983937533" name="" rcbsApplicability="disable" resourcePath="nofile" toolsToInvoke="com.atollic.truestudio.exe.debug.toolchain.gcc.1123980438.1469152088">
+						<tool id="com.atollic.truestudio.exe.debug.toolchain.gcc.1836874447.1976695455" name="C Compiler" superClass="com.atollic.truestudio.exe.debug.toolchain.gcc.1836874447">
+							<!--option id="com.atollic.truestudio.gcc.symbols.defined.571688647" superClass="com.atollic.truestudio.gcc.symbols.defined" valueType="definedSymbols">
+								<listOptionValue builtIn="false" value=""/>
+							</option-->
+							<!--option id="com.atollic.truestudio.gcc.directories.select.1885522499" superClass="com.atollic.truestudio.gcc.directories.select" valueType="includePath">
+								<listOptionValue builtIn="false" value=""/>
+							</option-->
+							<!--option id="com.atollic.truestudio.exe.debug.toolchain.gcc.optimization.level.2088348838" superClass="com.atollic.truestudio.exe.debug.toolchain.gcc.optimization.level" value="" valueType="enumerated"/-->
+							<inputType id="com.atollic.truestudio.gcc.input.1274347818" superClass="com.atollic.truestudio.gcc.input" />
+						</tool>
+					</fileInfo>
+					<!--fileInfo id="com.atollic.truestudio.exe.debug.1518366166.2095950970" name="main.c" rcbsApplicability="disable" resourcePath="User/main.c" toolsToInvoke="com.atollic.truestudio.exe.debug.toolchain.gcc.1836874447.1976695455">
+						<tool id="com.atollic.truestudio.exe.debug.toolchain.gcc.1836874447.1976695455" name="C Compiler" superClass="com.atollic.truestudio.exe.debug.toolchain.gcc.1836874447">
+							<option id="com.atollic.truestudio.common_options.target.mcpu.1225149534" superClass="com.atollic.truestudio.common_options.target.mcpu" value="ARM7TDMI" valueType="enumerated"/>
+							<option id="com.atollic.truestudio.common_options.target.endianess.611625540" superClass="com.atollic.truestudio.common_options.target.endianess" value="com.atollic.truestudio.common_options.target.endianess.big" valueType="enumerated"/>
+							<option id="com.atollic.truestudio.gcc.symbols.defined.661170442" superClass="com.atollic.truestudio.gcc.symbols.defined" valueType="definedSymbols">
+								<listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/>
+								<listOptionValue builtIn="false" value=""/>
+								<listOptionValue builtIn="false" value="STM32F40XX"/>
+								<listOptionValue builtIn="false" value="test_file_settings"/>
+							</option>
+							<inputType id="com.atollic.truestudio.gcc.input.570481643" superClass="com.atollic.truestudio.gcc.input"/>
+						</tool>
+					</fileInfo-->
+					<sourceEntries><entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers" /><entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src" /><entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Inc" />
+						
+					</sourceEntries>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings" />
+			<storageModule moduleId="org.eclipse.cdt.core.language.mapping" />
+			<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings" />
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="STM32100B-EVAL.com.atollic.truestudio.exe.1549124020" name="Executable" projectType="com.atollic.truestudio.exe" />
+	</storageModule>
+	<storageModule moduleId="refreshScope" />
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="" />
+		<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath="" />
+				<parser enabled="true" />
+			</buildOutputProvider>
+			<scannerInfoProvider id="makefileGenerator">
+				<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true" />
+				<parser enabled="true" />
+			</scannerInfoProvider>
+		</profile>
+		<scannerConfigBuildInfo instanceId="com.atollic.truestudio.exe.debug.1518366166;com.atollic.truestudio.exe.debug.1518366166.303277065;com.atollic.truestudio.exe.debug.toolchain.gcc.393815702;com.atollic.truestudio.gcc.input.1088835115">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC" />
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath="" />
+					<parser enabled="true" />
+				</buildOutputProvider>
+				<scannerInfoProvider id="makefileGenerator">
+					<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true" />
+					<parser enabled="true" />
+				</scannerInfoProvider>
+			</profile>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="com.atollic.truestudio.exe.debug.1518366166;com.atollic.truestudio.exe.debug.1518366166.;com.atollic.truestudio.exe.debug.toolchain.gcc.1836874447;com.atollic.truestudio.gcc.input.850396938">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC" />
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath="" />
+					<parser enabled="true" />
+				</buildOutputProvider>
+				<scannerInfoProvider id="makefileGenerator">
+					<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true" />
+					<parser enabled="true" />
+				</scannerInfoProvider>
+			</profile>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/.mxproject	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,17 @@
+[PreviousGenFiles]
+HeaderPath=/home/sergey/Projects/ARM_workspace_7.0/f103c8/Inc
+HeaderFiles=stm32f1xx_it.h;stm32f1xx_hal_conf.h;main.h;
+SourcePath=/home/sergey/Projects/ARM_workspace_7.0/f103c8/Src
+SourceFiles=stm32f1xx_it.h;stm32f1xx_hal_conf.h;main.h;stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c;
+
+[PreviousLibFiles]
+LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/cmsis_gcc.h;
+
+[PreviousUsedIarFiles]
+SourceFiles=../Src/main.c;../Src/stm32f1xx_it.c;../Src/stm32f1xx_hal_msp.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xb.s;
+HeaderPath=../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;
+
+[PreviousUsedTStudioFiles]
+SourceFiles=../Src/main.c;../Src/stm32f1xx_it.c;../Src/stm32f1xx_hal_msp.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s;
+HeaderPath=../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/.project	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>f103c8</name>
+	<comment />
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?children?</key>
+					<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|\||</value>
+				</dictionary>
+				<dictionary>
+					<key>?name?</key>
+					<value />
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value />
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildLocation</key>
+					<value>${workspace_loc:/STM32100B-EVAL/Debug}</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name />
+			<type />
+			<location />
+		</link>
+	</linkedResources>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/.settings/com.atollic.truestudio.debug.hardware_device.prefs	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,11 @@
+BOARD=None
+CODE_LOCATION=FLASH
+ENDIAN=Little-endian
+MCU=STM32F103C8
+MCU_VENDOR=STMicroelectronics
+MODEL=Lite
+PROBE=ST-LINK
+PROJECT_FORMAT_VERSION=2
+TARGET=ARM\u00AE
+VERSION=4.1.0
+eclipse.preferences.version=1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/.settings/language.settings.xml	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+	<configuration id="com.atollic.truestudio.exe.debug.1518366166" name="Debug">
+		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="878633113351463331" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+				<language-scope id="org.eclipse.cdt.core.gcc"/>
+				<language-scope id="org.eclipse.cdt.core.g++"/>
+			</provider>
+		</extension>
+	</configuration>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_class_marks_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,211 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_class_marks_example_f32.c
+*
+* Description:   Example code to calculate Minimum, Maximum
+*                Mean, std and variance of marks obtained in a class
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup ClassMarks Class Marks Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the use the Maximum, Minimum, Mean, Standard Deviation, Variance
+ * and Matrix functions to calculate statistical values of marks obtained in a class.
+ *
+ * \note This example also demonstrates the usage of static initialization.
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testMarks_f32 points to the marks scored by 20 students in 4 subjects
+ * \li \c max_marks     Maximum of all marks
+ * \li \c min_marks     Minimum of all marks
+ * \li \c mean          Mean of all marks
+ * \li \c var           Variance of the marks
+ * \li \c std           Standard deviation of the marks
+ * \li \c numStudents   Total number of students in the class
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_mat_init_f32()
+ * - arm_mat_mult_f32()
+ * - arm_max_f32()
+ * - arm_min_f32()
+ * - arm_mean_f32()
+ * - arm_std_f32()
+ * - arm_var_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_class_marks_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_class_marks_example_f32.c
+  */
+#include "arm_math.h"
+
+#define USE_STATIC_INIT
+
+ /* ----------------------------------------------------------------------
+** Global defines
+** ------------------------------------------------------------------- */
+
+#define TEST_LENGTH_SAMPLES   (20*4)
+
+/* ----------------------------------------------------------------------
+** List of Marks scored by 20 students for 4 subjects
+** ------------------------------------------------------------------- */
+const float32_t testMarks_f32[TEST_LENGTH_SAMPLES] =
+{
+  42.000000,  37.000000,  81.000000,  28.000000,
+  83.000000,  72.000000,  36.000000,  38.000000,
+  32.000000,  51.000000,  63.000000,  64.000000,
+  97.000000,  82.000000,  95.000000,  90.000000,
+  66.000000,  51.000000,  54.000000,  42.000000,
+  67.000000,  56.000000,  45.000000,  57.000000,
+  67.000000,  69.000000,  35.000000,  52.000000,
+  29.000000,  81.000000,  58.000000,  47.000000,
+  38.000000,  76.000000, 100.000000,  29.000000,
+  33.000000,  47.000000,  29.000000,  50.000000,
+  34.000000,  41.000000,  61.000000,  46.000000,
+  52.000000,  50.000000,  48.000000,  36.000000,
+  47.000000,  55.000000,  44.000000,  40.000000,
+ 100.000000,  94.000000,  84.000000,  37.000000,
+  32.000000,  71.000000,  47.000000,  77.000000,
+  31.000000,  50.000000,  49.000000,  35.000000,
+  63.000000,  67.000000,  40.000000,  31.000000,
+  29.000000,  68.000000,  61.000000,  38.000000,
+  31.000000,  28.000000,  28.000000,  76.000000,
+  55.000000,  33.000000,  29.000000,  39.000000
+};
+
+
+/* ----------------------------------------------------------------------
+* Number of subjects X 1
+* ------------------------------------------------------------------- */
+const float32_t testUnity_f32[4] =
+{
+  1.000,  1.000,   1.000,  1.000
+};
+
+
+/* ----------------------------------------------------------------------
+** f32 Output buffer
+** ------------------------------------------------------------------- */
+static float32_t testOutput[TEST_LENGTH_SAMPLES];
+
+
+/* ------------------------------------------------------------------
+* Global defines
+*------------------------------------------------------------------- */
+#define   NUMSTUDENTS  20
+#define     NUMSUBJECTS  4
+
+/* ------------------------------------------------------------------
+* Global variables
+*------------------------------------------------------------------- */
+
+ uint32_t    numStudents = 20;
+ uint32_t    numSubjects = 4;
+float32_t    max_marks, min_marks, mean, std, var;
+ uint32_t    student_num;
+
+/* ----------------------------------------------------------------------------------
+* Main f32 test function.  It returns maximum marks secured and student number
+* ------------------------------------------------------------------------------- */
+
+int32_t main()
+{
+
+#ifndef  USE_STATIC_INIT
+
+  arm_matrix_instance_f32 srcA;
+  arm_matrix_instance_f32 srcB;
+  arm_matrix_instance_f32 dstC;
+
+  /* Input and output matrices initializations */
+  arm_mat_init_f32(&srcA, numStudents, numSubjects, (float32_t *)testMarks_f32);
+  arm_mat_init_f32(&srcB, numSubjects, 1, (float32_t *)testUnity_f32);
+  arm_mat_init_f32(&dstC, numStudents, 1, testOutput);
+
+#else
+
+  /* Static Initializations of Input and output matrix sizes and array */
+  arm_matrix_instance_f32 srcA = {NUMSTUDENTS, NUMSUBJECTS, (float32_t *)testMarks_f32};
+  arm_matrix_instance_f32 srcB = {NUMSUBJECTS, 1, (float32_t *)testUnity_f32};
+  arm_matrix_instance_f32 dstC = {NUMSTUDENTS, 1, testOutput};
+
+#endif
+
+
+  /* ----------------------------------------------------------------------
+  *Call the Matrix multiplication process function
+  * ------------------------------------------------------------------- */
+  arm_mat_mult_f32(&srcA, &srcB, &dstC);
+
+  /* ----------------------------------------------------------------------
+  ** Call the Max function to calculate max marks among numStudents
+  ** ------------------------------------------------------------------- */
+  arm_max_f32(testOutput, numStudents, &max_marks, &student_num);
+
+  /* ----------------------------------------------------------------------
+  ** Call the Min function to calculate min marks among numStudents
+  ** ------------------------------------------------------------------- */
+  arm_min_f32(testOutput, numStudents, &min_marks, &student_num);
+
+  /* ----------------------------------------------------------------------
+  ** Call the Mean function to calculate mean
+  ** ------------------------------------------------------------------- */
+  arm_mean_f32(testOutput, numStudents, &mean);
+
+  /* ----------------------------------------------------------------------
+  ** Call the std function to calculate standard deviation
+  ** ------------------------------------------------------------------- */
+  arm_std_f32(testOutput, numStudents, &std);
+
+  /* ----------------------------------------------------------------------
+  ** Call the var function to calculate variance
+  ** ------------------------------------------------------------------- */
+  arm_var_f32(testOutput, numStudents, &var);
+
+  while(1);                             /* main function does not return */
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_class_marks_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,211 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_class_marks_example_f32.c
+*
+* Description:   Example code to calculate Minimum, Maximum
+*                Mean, std and variance of marks obtained in a class
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup ClassMarks Class Marks Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the use the Maximum, Minimum, Mean, Standard Deviation, Variance
+ * and Matrix functions to calculate statistical values of marks obtained in a class.
+ *
+ * \note This example also demonstrates the usage of static initialization.
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testMarks_f32 points to the marks scored by 20 students in 4 subjects
+ * \li \c max_marks     Maximum of all marks
+ * \li \c min_marks     Minimum of all marks
+ * \li \c mean          Mean of all marks
+ * \li \c var           Variance of the marks
+ * \li \c std           Standard deviation of the marks
+ * \li \c numStudents   Total number of students in the class
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_mat_init_f32()
+ * - arm_mat_mult_f32()
+ * - arm_max_f32()
+ * - arm_min_f32()
+ * - arm_mean_f32()
+ * - arm_std_f32()
+ * - arm_var_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_class_marks_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_class_marks_example_f32.c
+  */
+#include "arm_math.h"
+
+#define USE_STATIC_INIT
+
+ /* ----------------------------------------------------------------------
+** Global defines
+** ------------------------------------------------------------------- */
+
+#define TEST_LENGTH_SAMPLES   (20*4)
+
+/* ----------------------------------------------------------------------
+** List of Marks scored by 20 students for 4 subjects
+** ------------------------------------------------------------------- */
+const float32_t testMarks_f32[TEST_LENGTH_SAMPLES] =
+{
+  42.000000,  37.000000,  81.000000,  28.000000,
+  83.000000,  72.000000,  36.000000,  38.000000,
+  32.000000,  51.000000,  63.000000,  64.000000,
+  97.000000,  82.000000,  95.000000,  90.000000,
+  66.000000,  51.000000,  54.000000,  42.000000,
+  67.000000,  56.000000,  45.000000,  57.000000,
+  67.000000,  69.000000,  35.000000,  52.000000,
+  29.000000,  81.000000,  58.000000,  47.000000,
+  38.000000,  76.000000, 100.000000,  29.000000,
+  33.000000,  47.000000,  29.000000,  50.000000,
+  34.000000,  41.000000,  61.000000,  46.000000,
+  52.000000,  50.000000,  48.000000,  36.000000,
+  47.000000,  55.000000,  44.000000,  40.000000,
+ 100.000000,  94.000000,  84.000000,  37.000000,
+  32.000000,  71.000000,  47.000000,  77.000000,
+  31.000000,  50.000000,  49.000000,  35.000000,
+  63.000000,  67.000000,  40.000000,  31.000000,
+  29.000000,  68.000000,  61.000000,  38.000000,
+  31.000000,  28.000000,  28.000000,  76.000000,
+  55.000000,  33.000000,  29.000000,  39.000000
+};
+
+
+/* ----------------------------------------------------------------------
+* Number of subjects X 1
+* ------------------------------------------------------------------- */
+const float32_t testUnity_f32[4] =
+{
+  1.000,  1.000,   1.000,  1.000
+};
+
+
+/* ----------------------------------------------------------------------
+** f32 Output buffer
+** ------------------------------------------------------------------- */
+static float32_t testOutput[TEST_LENGTH_SAMPLES];
+
+
+/* ------------------------------------------------------------------
+* Global defines
+*------------------------------------------------------------------- */
+#define   NUMSTUDENTS  20
+#define     NUMSUBJECTS  4
+
+/* ------------------------------------------------------------------
+* Global variables
+*------------------------------------------------------------------- */
+
+ uint32_t    numStudents = 20;
+ uint32_t    numSubjects = 4;
+float32_t    max_marks, min_marks, mean, std, var;
+ uint32_t    student_num;
+
+/* ----------------------------------------------------------------------------------
+* Main f32 test function.  It returns maximum marks secured and student number
+* ------------------------------------------------------------------------------- */
+
+int32_t main()
+{
+
+#ifndef  USE_STATIC_INIT
+
+  arm_matrix_instance_f32 srcA;
+  arm_matrix_instance_f32 srcB;
+  arm_matrix_instance_f32 dstC;
+
+  /* Input and output matrices initializations */
+  arm_mat_init_f32(&srcA, numStudents, numSubjects, (float32_t *)testMarks_f32);
+  arm_mat_init_f32(&srcB, numSubjects, 1, (float32_t *)testUnity_f32);
+  arm_mat_init_f32(&dstC, numStudents, 1, testOutput);
+
+#else
+
+  /* Static Initializations of Input and output matrix sizes and array */
+  arm_matrix_instance_f32 srcA = {NUMSTUDENTS, NUMSUBJECTS, (float32_t *)testMarks_f32};
+  arm_matrix_instance_f32 srcB = {NUMSUBJECTS, 1, (float32_t *)testUnity_f32};
+  arm_matrix_instance_f32 dstC = {NUMSTUDENTS, 1, testOutput};
+
+#endif
+
+
+  /* ----------------------------------------------------------------------
+  *Call the Matrix multiplication process function
+  * ------------------------------------------------------------------- */
+  arm_mat_mult_f32(&srcA, &srcB, &dstC);
+
+  /* ----------------------------------------------------------------------
+  ** Call the Max function to calculate max marks among numStudents
+  ** ------------------------------------------------------------------- */
+  arm_max_f32(testOutput, numStudents, &max_marks, &student_num);
+
+  /* ----------------------------------------------------------------------
+  ** Call the Min function to calculate min marks among numStudents
+  ** ------------------------------------------------------------------- */
+  arm_min_f32(testOutput, numStudents, &min_marks, &student_num);
+
+  /* ----------------------------------------------------------------------
+  ** Call the Mean function to calculate mean
+  ** ------------------------------------------------------------------- */
+  arm_mean_f32(testOutput, numStudents, &mean);
+
+  /* ----------------------------------------------------------------------
+  ** Call the std function to calculate standard deviation
+  ** ------------------------------------------------------------------- */
+  arm_std_f32(testOutput, numStudents, &std);
+
+  /* ----------------------------------------------------------------------
+  ** Call the var function to calculate variance
+  ** ------------------------------------------------------------------- */
+  arm_var_f32(testOutput, numStudents, &var);
+
+  while(1);                             /* main function does not return */
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_convolution_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,247 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_convolution_example_f32.c
+*
+* Description:   Example code demonstrating Convolution of two input signals using fft.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup ConvolutionExample Convolution Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the convolution theorem with the use of the Complex FFT, Complex-by-Complex
+ * Multiplication, and Support Functions.
+ *
+ * \par Algorithm:
+ * \par
+ * The convolution theorem states that convolution in the time domain corresponds to
+ * multiplication in the frequency domain. Therefore, the Fourier transform of the convoution of
+ * two signals is equal to the product of their individual Fourier transforms.
+ * The Fourier transform of a signal can be evaluated efficiently using the Fast Fourier Transform (FFT).
+ * \par
+ * Two input signals, <code>a[n]</code> and <code>b[n]</code>, with lengths \c n1 and \c n2 respectively,
+ * are zero padded so that their lengths become \c N, which is greater than or equal to <code>(n1+n2-1)</code>
+ * and is a power of 4 as FFT implementation is radix-4.
+ * The convolution of <code>a[n]</code> and <code>b[n]</code> is obtained by taking the FFT of the input
+ * signals, multiplying the Fourier transforms of the two signals, and taking the inverse FFT of
+ * the multiplied result.
+ * \par
+ * This is denoted by the following equations:
+ * <pre> A[k] = FFT(a[n],N)
+ * B[k] = FFT(b[n],N)
+ * conv(a[n], b[n]) = IFFT(A[k] * B[k], N)</pre>
+ * where <code>A[k]</code> and <code>B[k]</code> are the N-point FFTs of the signals <code>a[n]</code>
+ * and <code>b[n]</code> respectively.
+ * The length of the convolved signal is <code>(n1+n2-1)</code>.
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html Convolution.gif
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInputA_f32 points to the first input sequence
+ * \li \c srcALen length of the first input sequence
+ * \li \c testInputB_f32 points to the second input sequence
+ * \li \c srcBLen length of the second input sequence
+ * \li \c outLen length of convolution output sequence, <code>(srcALen + srcBLen - 1)</code>
+ * \li \c AxB points to the output array where the product of individual FFTs of inputs is stored.
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_fill_f32()
+ * - arm_copy_f32()
+ * - arm_cfft_radix4_init_f32()
+ * - arm_cfft_radix4_f32()
+ * - arm_cmplx_mult_cmplx_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_convolution_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_convolution_example_f32.c
+  */
+
+#include "arm_math.h"
+#include "math_helper.h"
+
+/* ----------------------------------------------------------------------
+* Defines each of the tests performed
+* ------------------------------------------------------------------- */
+#define MAX_BLOCKSIZE   128
+#define DELTA           (0.000001f)
+#define SNR_THRESHOLD   90
+
+/* ----------------------------------------------------------------------
+* Declare I/O buffers
+* ------------------------------------------------------------------- */
+float32_t Ak[MAX_BLOCKSIZE];        /* Input A */
+float32_t Bk[MAX_BLOCKSIZE];        /* Input B */
+float32_t AxB[MAX_BLOCKSIZE * 2];   /* Output */
+
+/* ----------------------------------------------------------------------
+* Test input data for Floating point Convolution example for 32-blockSize
+* Generated by the MATLAB randn() function
+* ------------------------------------------------------------------- */
+float32_t testInputA_f32[64] =
+{
+  -0.808920,   1.357369,   1.180861,  -0.504544,   1.762637,  -0.703285,
+   1.696966,   0.620571,  -0.151093,  -0.100235,  -0.872382,  -0.403579,
+  -0.860749,  -0.382648,  -1.052338,   0.128113,  -0.646269,   1.093377,
+  -2.209198,   0.471706,   0.408901,   1.266242,   0.598252,   1.176827,
+  -0.203421,   0.213596,  -0.851964,  -0.466958,   0.021841,  -0.698938,
+  -0.604107,   0.461778,  -0.318219,   0.942520,   0.577585,   0.417619,
+   0.614665,   0.563679,  -1.295073,  -0.764437,   0.952194,  -0.859222,
+  -0.618554,  -2.268542,  -1.210592,   1.655853,  -2.627219,  -0.994249,
+  -1.374704,   0.343799,   0.025619,   1.227481,  -0.708031,   0.069355,
+  -1.845228,  -1.570886,   1.010668,  -1.802084,   1.630088,   1.286090,
+  -0.161050,  -0.940794,   0.367961,   0.291907
+
+};
+
+float32_t testInputB_f32[64] =
+{
+   0.933724,   0.046881,   1.316470,   0.438345,   0.332682,   2.094885,
+   0.512081,   0.035546,   0.050894,  -2.320371,   0.168711,  -1.830493,
+  -0.444834,  -1.003242,  -0.531494,  -1.365600,  -0.155420,  -0.757692,
+  -0.431880,  -0.380021,   0.096243,  -0.695835,   0.558850,  -1.648962,
+   0.020369,  -0.363630,   0.887146,   0.845503,  -0.252864,  -0.330397,
+   1.269131,  -1.109295,  -1.027876,   0.135940,   0.116721,  -0.293399,
+  -1.349799,   0.166078,  -0.802201,   0.369367,  -0.964568,  -2.266011,
+   0.465178,   0.651222,  -0.325426,   0.320245,  -0.784178,  -0.579456,
+   0.093374,   0.604778,  -0.048225,   0.376297,  -0.394412,   0.578182,
+  -1.218141,  -1.387326,   0.692462,  -0.631297,   0.153137,  -0.638952,
+  0.635474,   -0.970468,   1.334057,  -0.111370
+};
+
+const float testRefOutput_f32[127] =
+{
+   -0.818943,    1.229484,  -0.533664,    1.016604,   0.341875,  -1.963656,
+    5.171476,    3.478033,   7.616361,    6.648384,   0.479069,   1.792012,
+   -1.295591,   -7.447818,   0.315830,  -10.657445,  -2.483469,  -6.524236,
+   -7.380591,   -3.739005,  -8.388957,    0.184147,  -1.554888,   3.786508,
+   -1.684421,    5.400610,  -1.578126,    7.403361,   8.315999,   2.080267,
+   11.077776,    2.749673,   7.138962,    2.748762,   0.660363,   0.981552,
+    1.442275,    0.552721,  -2.576892,    4.703989,   0.989156,   8.759344,
+   -0.564825,   -3.994680,   0.954710,   -5.014144,   6.592329,   1.599488,
+  -13.979146,   -0.391891,  -4.453369,   -2.311242,  -2.948764,   1.761415,
+   -0.138322,   10.433007,  -2.309103,    4.297153,   8.535523,   3.209462,
+    8.695819,    5.569919,   2.514304,    5.582029,   2.060199,   0.642280,
+    7.024616,    1.686615,  -6.481756,    1.343084,  -3.526451,   1.099073,
+   -2.965764,   -0.173723,  -4.111484,    6.528384,  -6.965658,   1.726291,
+    1.535172,   11.023435,   2.338401,   -4.690188,   1.298210,   3.943885,
+    8.407885,    5.168365,   0.684131,    1.559181,   1.859998,   2.852417,
+    8.574070,   -6.369078,   6.023458,   11.837963,  -6.027632,   4.469678,
+   -6.799093,   -2.674048,   6.250367,   -6.809971,  -3.459360,   9.112410,
+   -2.711621,   -1.336678,   1.564249,   -1.564297,  -1.296760,   8.904013,
+   -3.230109,    6.878013,  -7.819823,    3.369909,  -1.657410,  -2.007358,
+   -4.112825,    1.370685,  -3.420525,   -6.276605,   3.244873,  -3.352638,
+    1.545372,    0.902211,   0.197489,   -1.408732,   0.523390,   0.348440, 0
+};
+
+
+/* ----------------------------------------------------------------------
+* Declare Global variables
+* ------------------------------------------------------------------- */
+uint32_t srcALen = 64;   /* Length of Input A */
+uint32_t srcBLen = 64;   /* Length of Input B */
+uint32_t outLen;         /* Length of convolution output */
+float32_t snr;           /* output SNR */
+
+int32_t main(void)
+{
+  arm_status status;                           /* Status of the example */
+  arm_cfft_radix4_instance_f32 cfft_instance;  /* CFFT Structure instance */
+
+  /* CFFT Structure instance pointer */
+  arm_cfft_radix4_instance_f32 *cfft_instance_ptr =
+      (arm_cfft_radix4_instance_f32*) &cfft_instance;
+
+  /* output length of convolution */
+  outLen = srcALen + srcBLen - 1;
+
+  /* Initialise the fft input buffers with all zeros */
+  arm_fill_f32(0.0,  Ak, MAX_BLOCKSIZE);
+  arm_fill_f32(0.0,  Bk, MAX_BLOCKSIZE);
+
+  /* Copy the input values to the fft input buffers */
+  arm_copy_f32(testInputA_f32,  Ak, MAX_BLOCKSIZE/2);
+  arm_copy_f32(testInputB_f32,  Bk, MAX_BLOCKSIZE/2);
+
+  /* Initialize the CFFT function to compute 64 point fft */
+  status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 0, 1);
+
+  /* Transform input a[n] from time domain to frequency domain A[k] */
+  arm_cfft_radix4_f32(cfft_instance_ptr, Ak);
+  /* Transform input b[n] from time domain to frequency domain B[k] */
+  arm_cfft_radix4_f32(cfft_instance_ptr, Bk);
+
+  /* Complex Multiplication of the two input buffers in frequency domain */
+  arm_cmplx_mult_cmplx_f32(Ak, Bk, AxB, MAX_BLOCKSIZE/2);
+
+  /* Initialize the CIFFT function to compute 64 point ifft */
+  status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 1, 1);
+
+  /* Transform the multiplication output from frequency domain to time domain,
+     that gives the convolved output  */
+  arm_cfft_radix4_f32(cfft_instance_ptr, AxB);
+
+  /* SNR Calculation */
+  snr = arm_snr_f32((float32_t *)testRefOutput_f32, AxB, srcALen + srcBLen - 1);
+
+  /* Compare the SNR with threshold to test whether the
+     computed output is matched with the reference output values. */
+  if( snr > SNR_THRESHOLD)
+  {
+    status = ARM_MATH_SUCCESS;
+  }
+
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/math_helper.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,458 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0    
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.c
+*
+* Description:	Definition of all helper functions required.  
+*  
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+*		Include standard header files  
+* -------------------------------------------------------------------- */
+#include<math.h>
+
+/* ----------------------------------------------------------------------
+*		Include project header files  
+* -------------------------------------------------------------------- */
+#include "math_helper.h"
+
+/** 
+ * @brief  Caluclation of SNR
+ * @param  float* 	Pointer to the reference buffer
+ * @param  float*	Pointer to the test buffer
+ * @param  uint32_t	total number of samples
+ * @return float	SNR
+ * The function Caluclates signal to noise ratio for the reference output 
+ * and test output 
+ */
+
+float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
+{
+  float EnergySignal = 0.0, EnergyError = 0.0;
+  uint32_t i;
+  float SNR;
+  int temp;
+  int *test;
+
+  for (i = 0; i < buffSize; i++)
+    {
+ 	  /* Checking for a NAN value in pRef array */
+	  test =   (int *)(&pRef[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+
+	  /* Checking for a NAN value in pTest array */
+	  test =   (int *)(&pTest[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+      EnergySignal += pRef[i] * pRef[i];
+      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); 
+    }
+
+	/* Checking for a NAN value in EnergyError */
+	test =   (int *)(&EnergyError);
+    temp =  *test;
+
+    if(temp == 0x7FC00000)
+    {
+  		return(0);
+    }
+	
+
+  SNR = 10 * log10 (EnergySignal / EnergyError);
+
+  return (SNR);
+
+}
+
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q15_t* 	    Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,
+                            uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed in q12.20 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point(q12.20) values 
+ */
+
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1048576.0f corresponds to pow(2, 20) */
+      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 1.0)
+        {
+          pOut[i] = 0x000FFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q15_t* 	Pointer to Ref buffer
+ * @param  q15_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}	
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q31_t* 	Pointer to Ref buffer
+ * @param  q31_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q31 (q31_t * input_buf, 
+								 uint32_t blockSize,
+                                 uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q7 (q7_t * input_buf, 
+								uint32_t blockSize,
+                                uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+
+
+/** 
+ * @brief  Caluclates number of guard bits 
+ * @param  uint32_t 	number of additions
+ * @return none
+ * The function Caluclates the number of guard bits  
+ * depending on the numtaps 
+ */
+
+uint32_t arm_calc_guard_bits (uint32_t num_adds)
+{
+  uint32_t i = 1, j = 0;
+
+  if (num_adds == 1)
+    {
+      return (0);
+    }
+
+  while (i < num_adds)
+    {
+      i = i * 2;
+      j++;
+    }
+
+  return (j);
+}
+
+/** 
+ * @brief  Converts Q15 to floating-point
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ */
+
+void arm_apply_guard_bits (float32_t * pIn, 
+						   uint32_t numSamples, 
+						   uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);
+    }
+}
+
+/** 
+ * @brief  Calculates pow(2, numShifts)
+ * @param  uint32_t 	number of shifts
+ * @return pow(2, numShifts)
+ */
+uint32_t arm_calc_2pow(uint32_t numShifts)
+{
+
+  uint32_t i, val = 1;
+
+  for (i = 0; i < numShifts; i++)
+    {
+      val = val * 2;
+    }	
+
+  return(val);
+}
+
+
+
+/** 
+ * @brief  Converts float to fixed q14 
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q14 (float *pIn, q15_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 16384.0f corresponds to pow(2, 14) */
+      pOut[i] = (q15_t) (pIn[i] * 16384.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFF;
+        }
+
+    }
+
+}
+
+ 
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q30 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q29 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 4.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+
+/** 
+ * @brief  Converts float to fixed q28 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q28 (float *pIn, q31_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	/* 268435456.0f corresponds to pow(2, 28) */
+      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 8.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Clip the float values to +/- 1 
+ * @param  pIn 	input buffer
+ * @param  numSamples 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_clip_f32 (float *pIn, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      if(pIn[i] > 1.0f)
+	  {
+	    pIn[i] = 1.0;
+	  }
+	  else if( pIn[i] < -1.0f)
+	  {
+	    pIn[i] = -1.0;
+	  }
+	       
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/math_helper.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,63 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.h
+* 
+* Description:	Prototypes of all helper functions required.  
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+#ifndef MATH_HELPER_H
+#define MATH_HELPER_H
+
+float arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);
+void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);
+void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_clip_f32(float *pIn, uint32_t numSamples);
+uint32_t arm_calc_guard_bits(uint32_t num_adds);
+void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);
+uint32_t arm_calc_2pow(uint32_t guard_bits);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_convolution_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,247 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_convolution_example_f32.c
+*
+* Description:   Example code demonstrating Convolution of two input signals using fft.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup ConvolutionExample Convolution Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the convolution theorem with the use of the Complex FFT, Complex-by-Complex
+ * Multiplication, and Support Functions.
+ *
+ * \par Algorithm:
+ * \par
+ * The convolution theorem states that convolution in the time domain corresponds to
+ * multiplication in the frequency domain. Therefore, the Fourier transform of the convoution of
+ * two signals is equal to the product of their individual Fourier transforms.
+ * The Fourier transform of a signal can be evaluated efficiently using the Fast Fourier Transform (FFT).
+ * \par
+ * Two input signals, <code>a[n]</code> and <code>b[n]</code>, with lengths \c n1 and \c n2 respectively,
+ * are zero padded so that their lengths become \c N, which is greater than or equal to <code>(n1+n2-1)</code>
+ * and is a power of 4 as FFT implementation is radix-4.
+ * The convolution of <code>a[n]</code> and <code>b[n]</code> is obtained by taking the FFT of the input
+ * signals, multiplying the Fourier transforms of the two signals, and taking the inverse FFT of
+ * the multiplied result.
+ * \par
+ * This is denoted by the following equations:
+ * <pre> A[k] = FFT(a[n],N)
+ * B[k] = FFT(b[n],N)
+ * conv(a[n], b[n]) = IFFT(A[k] * B[k], N)</pre>
+ * where <code>A[k]</code> and <code>B[k]</code> are the N-point FFTs of the signals <code>a[n]</code>
+ * and <code>b[n]</code> respectively.
+ * The length of the convolved signal is <code>(n1+n2-1)</code>.
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html Convolution.gif
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInputA_f32 points to the first input sequence
+ * \li \c srcALen length of the first input sequence
+ * \li \c testInputB_f32 points to the second input sequence
+ * \li \c srcBLen length of the second input sequence
+ * \li \c outLen length of convolution output sequence, <code>(srcALen + srcBLen - 1)</code>
+ * \li \c AxB points to the output array where the product of individual FFTs of inputs is stored.
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_fill_f32()
+ * - arm_copy_f32()
+ * - arm_cfft_radix4_init_f32()
+ * - arm_cfft_radix4_f32()
+ * - arm_cmplx_mult_cmplx_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_convolution_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_convolution_example_f32.c
+  */
+
+#include "arm_math.h"
+#include "math_helper.h"
+
+/* ----------------------------------------------------------------------
+* Defines each of the tests performed
+* ------------------------------------------------------------------- */
+#define MAX_BLOCKSIZE   128
+#define DELTA           (0.000001f)
+#define SNR_THRESHOLD   90
+
+/* ----------------------------------------------------------------------
+* Declare I/O buffers
+* ------------------------------------------------------------------- */
+float32_t Ak[MAX_BLOCKSIZE];        /* Input A */
+float32_t Bk[MAX_BLOCKSIZE];        /* Input B */
+float32_t AxB[MAX_BLOCKSIZE * 2];   /* Output */
+
+/* ----------------------------------------------------------------------
+* Test input data for Floating point Convolution example for 32-blockSize
+* Generated by the MATLAB randn() function
+* ------------------------------------------------------------------- */
+float32_t testInputA_f32[64] =
+{
+  -0.808920,   1.357369,   1.180861,  -0.504544,   1.762637,  -0.703285,
+   1.696966,   0.620571,  -0.151093,  -0.100235,  -0.872382,  -0.403579,
+  -0.860749,  -0.382648,  -1.052338,   0.128113,  -0.646269,   1.093377,
+  -2.209198,   0.471706,   0.408901,   1.266242,   0.598252,   1.176827,
+  -0.203421,   0.213596,  -0.851964,  -0.466958,   0.021841,  -0.698938,
+  -0.604107,   0.461778,  -0.318219,   0.942520,   0.577585,   0.417619,
+   0.614665,   0.563679,  -1.295073,  -0.764437,   0.952194,  -0.859222,
+  -0.618554,  -2.268542,  -1.210592,   1.655853,  -2.627219,  -0.994249,
+  -1.374704,   0.343799,   0.025619,   1.227481,  -0.708031,   0.069355,
+  -1.845228,  -1.570886,   1.010668,  -1.802084,   1.630088,   1.286090,
+  -0.161050,  -0.940794,   0.367961,   0.291907
+
+};
+
+float32_t testInputB_f32[64] =
+{
+   0.933724,   0.046881,   1.316470,   0.438345,   0.332682,   2.094885,
+   0.512081,   0.035546,   0.050894,  -2.320371,   0.168711,  -1.830493,
+  -0.444834,  -1.003242,  -0.531494,  -1.365600,  -0.155420,  -0.757692,
+  -0.431880,  -0.380021,   0.096243,  -0.695835,   0.558850,  -1.648962,
+   0.020369,  -0.363630,   0.887146,   0.845503,  -0.252864,  -0.330397,
+   1.269131,  -1.109295,  -1.027876,   0.135940,   0.116721,  -0.293399,
+  -1.349799,   0.166078,  -0.802201,   0.369367,  -0.964568,  -2.266011,
+   0.465178,   0.651222,  -0.325426,   0.320245,  -0.784178,  -0.579456,
+   0.093374,   0.604778,  -0.048225,   0.376297,  -0.394412,   0.578182,
+  -1.218141,  -1.387326,   0.692462,  -0.631297,   0.153137,  -0.638952,
+  0.635474,   -0.970468,   1.334057,  -0.111370
+};
+
+const float testRefOutput_f32[127] =
+{
+   -0.818943,    1.229484,  -0.533664,    1.016604,   0.341875,  -1.963656,
+    5.171476,    3.478033,   7.616361,    6.648384,   0.479069,   1.792012,
+   -1.295591,   -7.447818,   0.315830,  -10.657445,  -2.483469,  -6.524236,
+   -7.380591,   -3.739005,  -8.388957,    0.184147,  -1.554888,   3.786508,
+   -1.684421,    5.400610,  -1.578126,    7.403361,   8.315999,   2.080267,
+   11.077776,    2.749673,   7.138962,    2.748762,   0.660363,   0.981552,
+    1.442275,    0.552721,  -2.576892,    4.703989,   0.989156,   8.759344,
+   -0.564825,   -3.994680,   0.954710,   -5.014144,   6.592329,   1.599488,
+  -13.979146,   -0.391891,  -4.453369,   -2.311242,  -2.948764,   1.761415,
+   -0.138322,   10.433007,  -2.309103,    4.297153,   8.535523,   3.209462,
+    8.695819,    5.569919,   2.514304,    5.582029,   2.060199,   0.642280,
+    7.024616,    1.686615,  -6.481756,    1.343084,  -3.526451,   1.099073,
+   -2.965764,   -0.173723,  -4.111484,    6.528384,  -6.965658,   1.726291,
+    1.535172,   11.023435,   2.338401,   -4.690188,   1.298210,   3.943885,
+    8.407885,    5.168365,   0.684131,    1.559181,   1.859998,   2.852417,
+    8.574070,   -6.369078,   6.023458,   11.837963,  -6.027632,   4.469678,
+   -6.799093,   -2.674048,   6.250367,   -6.809971,  -3.459360,   9.112410,
+   -2.711621,   -1.336678,   1.564249,   -1.564297,  -1.296760,   8.904013,
+   -3.230109,    6.878013,  -7.819823,    3.369909,  -1.657410,  -2.007358,
+   -4.112825,    1.370685,  -3.420525,   -6.276605,   3.244873,  -3.352638,
+    1.545372,    0.902211,   0.197489,   -1.408732,   0.523390,   0.348440, 0
+};
+
+
+/* ----------------------------------------------------------------------
+* Declare Global variables
+* ------------------------------------------------------------------- */
+uint32_t srcALen = 64;   /* Length of Input A */
+uint32_t srcBLen = 64;   /* Length of Input B */
+uint32_t outLen;         /* Length of convolution output */
+float32_t snr;           /* output SNR */
+
+int32_t main(void)
+{
+  arm_status status;                           /* Status of the example */
+  arm_cfft_radix4_instance_f32 cfft_instance;  /* CFFT Structure instance */
+
+  /* CFFT Structure instance pointer */
+  arm_cfft_radix4_instance_f32 *cfft_instance_ptr =
+      (arm_cfft_radix4_instance_f32*) &cfft_instance;
+
+  /* output length of convolution */
+  outLen = srcALen + srcBLen - 1;
+
+  /* Initialise the fft input buffers with all zeros */
+  arm_fill_f32(0.0,  Ak, MAX_BLOCKSIZE);
+  arm_fill_f32(0.0,  Bk, MAX_BLOCKSIZE);
+
+  /* Copy the input values to the fft input buffers */
+  arm_copy_f32(testInputA_f32,  Ak, MAX_BLOCKSIZE/2);
+  arm_copy_f32(testInputB_f32,  Bk, MAX_BLOCKSIZE/2);
+
+  /* Initialize the CFFT function to compute 64 point fft */
+  status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 0, 1);
+
+  /* Transform input a[n] from time domain to frequency domain A[k] */
+  arm_cfft_radix4_f32(cfft_instance_ptr, Ak);
+  /* Transform input b[n] from time domain to frequency domain B[k] */
+  arm_cfft_radix4_f32(cfft_instance_ptr, Bk);
+
+  /* Complex Multiplication of the two input buffers in frequency domain */
+  arm_cmplx_mult_cmplx_f32(Ak, Bk, AxB, MAX_BLOCKSIZE/2);
+
+  /* Initialize the CIFFT function to compute 64 point ifft */
+  status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 1, 1);
+
+  /* Transform the multiplication output from frequency domain to time domain,
+     that gives the convolved output  */
+  arm_cfft_radix4_f32(cfft_instance_ptr, AxB);
+
+  /* SNR Calculation */
+  snr = arm_snr_f32((float32_t *)testRefOutput_f32, AxB, srcALen + srcBLen - 1);
+
+  /* Compare the SNR with threshold to test whether the
+     computed output is matched with the reference output values. */
+  if( snr > SNR_THRESHOLD)
+  {
+    status = ARM_MATH_SUCCESS;
+  }
+
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/math_helper.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,458 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0    
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.c
+*
+* Description:	Definition of all helper functions required.  
+*  
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+*		Include standard header files  
+* -------------------------------------------------------------------- */
+#include<math.h>
+
+/* ----------------------------------------------------------------------
+*		Include project header files  
+* -------------------------------------------------------------------- */
+#include "math_helper.h"
+
+/** 
+ * @brief  Caluclation of SNR
+ * @param  float* 	Pointer to the reference buffer
+ * @param  float*	Pointer to the test buffer
+ * @param  uint32_t	total number of samples
+ * @return float	SNR
+ * The function Caluclates signal to noise ratio for the reference output 
+ * and test output 
+ */
+
+float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
+{
+  float EnergySignal = 0.0, EnergyError = 0.0;
+  uint32_t i;
+  float SNR;
+  int temp;
+  int *test;
+
+  for (i = 0; i < buffSize; i++)
+    {
+ 	  /* Checking for a NAN value in pRef array */
+	  test =   (int *)(&pRef[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+
+	  /* Checking for a NAN value in pTest array */
+	  test =   (int *)(&pTest[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+      EnergySignal += pRef[i] * pRef[i];
+      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); 
+    }
+
+	/* Checking for a NAN value in EnergyError */
+	test =   (int *)(&EnergyError);
+    temp =  *test;
+
+    if(temp == 0x7FC00000)
+    {
+  		return(0);
+    }
+	
+
+  SNR = 10 * log10 (EnergySignal / EnergyError);
+
+  return (SNR);
+
+}
+
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q15_t* 	    Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,
+                            uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed in q12.20 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point(q12.20) values 
+ */
+
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1048576.0f corresponds to pow(2, 20) */
+      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 1.0)
+        {
+          pOut[i] = 0x000FFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q15_t* 	Pointer to Ref buffer
+ * @param  q15_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}	
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q31_t* 	Pointer to Ref buffer
+ * @param  q31_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q31 (q31_t * input_buf, 
+								 uint32_t blockSize,
+                                 uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q7 (q7_t * input_buf, 
+								uint32_t blockSize,
+                                uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+
+
+/** 
+ * @brief  Caluclates number of guard bits 
+ * @param  uint32_t 	number of additions
+ * @return none
+ * The function Caluclates the number of guard bits  
+ * depending on the numtaps 
+ */
+
+uint32_t arm_calc_guard_bits (uint32_t num_adds)
+{
+  uint32_t i = 1, j = 0;
+
+  if (num_adds == 1)
+    {
+      return (0);
+    }
+
+  while (i < num_adds)
+    {
+      i = i * 2;
+      j++;
+    }
+
+  return (j);
+}
+
+/** 
+ * @brief  Converts Q15 to floating-point
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ */
+
+void arm_apply_guard_bits (float32_t * pIn, 
+						   uint32_t numSamples, 
+						   uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);
+    }
+}
+
+/** 
+ * @brief  Calculates pow(2, numShifts)
+ * @param  uint32_t 	number of shifts
+ * @return pow(2, numShifts)
+ */
+uint32_t arm_calc_2pow(uint32_t numShifts)
+{
+
+  uint32_t i, val = 1;
+
+  for (i = 0; i < numShifts; i++)
+    {
+      val = val * 2;
+    }	
+
+  return(val);
+}
+
+
+
+/** 
+ * @brief  Converts float to fixed q14 
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q14 (float *pIn, q15_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 16384.0f corresponds to pow(2, 14) */
+      pOut[i] = (q15_t) (pIn[i] * 16384.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFF;
+        }
+
+    }
+
+}
+
+ 
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q30 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q29 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 4.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+
+/** 
+ * @brief  Converts float to fixed q28 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q28 (float *pIn, q31_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	/* 268435456.0f corresponds to pow(2, 28) */
+      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 8.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Clip the float values to +/- 1 
+ * @param  pIn 	input buffer
+ * @param  numSamples 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_clip_f32 (float *pIn, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      if(pIn[i] > 1.0f)
+	  {
+	    pIn[i] = 1.0;
+	  }
+	  else if( pIn[i] < -1.0f)
+	  {
+	    pIn[i] = -1.0;
+	  }
+	       
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/math_helper.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,63 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.h
+* 
+* Description:	Prototypes of all helper functions required.  
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+#ifndef MATH_HELPER_H
+#define MATH_HELPER_H
+
+float arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);
+void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);
+void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_clip_f32(float *pIn, uint32_t numSamples);
+uint32_t arm_calc_guard_bits(uint32_t num_adds);
+void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);
+uint32_t arm_calc_2pow(uint32_t guard_bits);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_dotproduct_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,178 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_dotproduct_example_f32.c
+*
+* Description:   Example code computing dot product of two vectors.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup DotproductExample Dot Product Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the use of the Multiply and Add functions to perform the dot product.
+ * The dot product of two vectors is obtained by multiplying corresponding elements
+ * and summing the products.
+
+ * \par Algorithm:
+ * \par
+ * The two input vectors \c A and \c B with length \c n, are multiplied element-by-element
+ * and then added to obtain dot product.
+ * \par
+ * This is denoted by the following equation:
+ *         <pre>  dotProduct = A[0] * B[0] + A[1] * B[1] + ... + A[n-1] * B[n-1]</pre>
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html dotProduct.gif
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c srcA_buf_f32 points to first input vector
+ * \li \c srcB_buf_f32 points to second input vector
+ * \li \c testOutput   stores dot product of the two input vectors.
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_mult_f32()
+ * - arm_add_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_dotproduct_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_dotproduct_example_f32.c
+  */
+
+#include <math.h>
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+* Defines each of the tests performed
+* ------------------------------------------------------------------- */
+#define MAX_BLOCKSIZE     32
+#define DELTA           (0.000001f)
+
+/* ----------------------------------------------------------------------
+* Test input data for Floating point Dot Product example for 32-blockSize
+* Generated by the MATLAB randn() function
+* ------------------------------------------------------------------- */
+/* ----------------------------------------------------------------------
+** Test input data of srcA for blockSize 32
+** ------------------------------------------------------------------- */
+float32_t srcA_buf_f32[MAX_BLOCKSIZE] =
+{
+  -0.4325648115282207,  -1.6655843782380970,  0.1253323064748307,
+   0.2876764203585489,  -1.1464713506814637,  1.1909154656429988,
+   1.1891642016521031,  -0.0376332765933176,  0.3272923614086541,
+   0.1746391428209245,  -0.1867085776814394,  0.7257905482933027,
+  -0.5883165430141887,   2.1831858181971011, -0.1363958830865957,
+   0.1139313135208096,   1.0667682113591888,  0.0592814605236053,
+  -0.0956484054836690,  -0.8323494636500225,  0.2944108163926404,
+  -1.3361818579378040,   0.7143245518189522,  1.6235620644462707,
+  -0.6917757017022868,   0.8579966728282626,  1.2540014216025324,
+  -1.5937295764474768,  -1.4409644319010200,  0.5711476236581780,
+  -0.3998855777153632,   0.6899973754643451
+};
+
+/* ----------------------------------------------------------------------
+** Test input data of srcB for blockSize 32
+** ------------------------------------------------------------------- */
+float32_t srcB_buf_f32[MAX_BLOCKSIZE] =
+{
+   1.7491401329284098,  0.1325982188803279,   0.3252281811989881,
+  -0.7938091410349637,  0.3149236145048914,  -0.5272704888029532,
+   0.9322666565031119,  1.1646643544607362,  -2.0456694357357357,
+  -0.6443728590041911,  1.7410657940825480,   0.4867684246821860,
+   1.0488288293660140,  1.4885752747099299,   1.2705014969484090,
+  -1.8561241921210170,  2.1343209047321410,  1.4358467535865909,
+  -0.9173023332875400, -1.1060770780029008,   0.8105708062681296,
+   0.6985430696369063, -0.4015827425012831,   1.2687512030669628,
+  -0.7836083053674872,  0.2132664971465569,   0.7878984786088954,
+   0.8966819356782295, -0.1869172943544062,   1.0131816724341454,
+   0.2484350696132857,  0.0596083377937976
+};
+
+/* Reference dot product output */
+float32_t  refDotProdOut = 5.9273644806352142;
+
+/* ----------------------------------------------------------------------
+* Declare Global variables
+* ------------------------------------------------------------------- */
+float32_t multOutput[MAX_BLOCKSIZE];  /* Intermediate output */
+float32_t testOutput;  /* Final ouput */
+
+arm_status status;   /* Status of the example */
+
+int32_t main(void)
+{
+  uint32_t i;       /* Loop counter */
+  float32_t diff;     /* Difference between reference and test outputs */
+
+  /* Multiplication of two input buffers */
+  arm_mult_f32(srcA_buf_f32, srcB_buf_f32, multOutput, MAX_BLOCKSIZE);
+
+  /* Accumulate the multiplication output values to
+     get the dot product of the two inputs */
+  for(i=0; i< MAX_BLOCKSIZE; i++)
+  {
+    arm_add_f32(&testOutput, &multOutput[i], &testOutput, 1);
+  }
+
+  /* absolute value of difference between ref and test */
+  diff = fabsf(refDotProdOut - testOutput);
+
+  /* Comparison of dot product value with reference */
+  if(diff > DELTA)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+  if( status == ARM_MATH_TEST_FAILURE)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/GCC/arm_dotproduct_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,178 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_dotproduct_example_f32.c
+*
+* Description:   Example code computing dot product of two vectors.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup DotproductExample Dot Product Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the use of the Multiply and Add functions to perform the dot product.
+ * The dot product of two vectors is obtained by multiplying corresponding elements
+ * and summing the products.
+
+ * \par Algorithm:
+ * \par
+ * The two input vectors \c A and \c B with length \c n, are multiplied element-by-element
+ * and then added to obtain dot product.
+ * \par
+ * This is denoted by the following equation:
+ *         <pre>  dotProduct = A[0] * B[0] + A[1] * B[1] + ... + A[n-1] * B[n-1]</pre>
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html dotProduct.gif
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c srcA_buf_f32 points to first input vector
+ * \li \c srcB_buf_f32 points to second input vector
+ * \li \c testOutput   stores dot product of the two input vectors.
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_mult_f32()
+ * - arm_add_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_dotproduct_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_dotproduct_example_f32.c
+  */
+
+#include <math.h>
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+* Defines each of the tests performed
+* ------------------------------------------------------------------- */
+#define MAX_BLOCKSIZE     32
+#define DELTA           (0.000001f)
+
+/* ----------------------------------------------------------------------
+* Test input data for Floating point Dot Product example for 32-blockSize
+* Generated by the MATLAB randn() function
+* ------------------------------------------------------------------- */
+/* ----------------------------------------------------------------------
+** Test input data of srcA for blockSize 32
+** ------------------------------------------------------------------- */
+float32_t srcA_buf_f32[MAX_BLOCKSIZE] =
+{
+  -0.4325648115282207,  -1.6655843782380970,  0.1253323064748307,
+   0.2876764203585489,  -1.1464713506814637,  1.1909154656429988,
+   1.1891642016521031,  -0.0376332765933176,  0.3272923614086541,
+   0.1746391428209245,  -0.1867085776814394,  0.7257905482933027,
+  -0.5883165430141887,   2.1831858181971011, -0.1363958830865957,
+   0.1139313135208096,   1.0667682113591888,  0.0592814605236053,
+  -0.0956484054836690,  -0.8323494636500225,  0.2944108163926404,
+  -1.3361818579378040,   0.7143245518189522,  1.6235620644462707,
+  -0.6917757017022868,   0.8579966728282626,  1.2540014216025324,
+  -1.5937295764474768,  -1.4409644319010200,  0.5711476236581780,
+  -0.3998855777153632,   0.6899973754643451
+};
+
+/* ----------------------------------------------------------------------
+** Test input data of srcB for blockSize 32
+** ------------------------------------------------------------------- */
+float32_t srcB_buf_f32[MAX_BLOCKSIZE] =
+{
+   1.7491401329284098,  0.1325982188803279,   0.3252281811989881,
+  -0.7938091410349637,  0.3149236145048914,  -0.5272704888029532,
+   0.9322666565031119,  1.1646643544607362,  -2.0456694357357357,
+  -0.6443728590041911,  1.7410657940825480,   0.4867684246821860,
+   1.0488288293660140,  1.4885752747099299,   1.2705014969484090,
+  -1.8561241921210170,  2.1343209047321410,  1.4358467535865909,
+  -0.9173023332875400, -1.1060770780029008,   0.8105708062681296,
+   0.6985430696369063, -0.4015827425012831,   1.2687512030669628,
+  -0.7836083053674872,  0.2132664971465569,   0.7878984786088954,
+   0.8966819356782295, -0.1869172943544062,   1.0131816724341454,
+   0.2484350696132857,  0.0596083377937976
+};
+
+/* Reference dot product output */
+float32_t  refDotProdOut = 5.9273644806352142;
+
+/* ----------------------------------------------------------------------
+* Declare Global variables
+* ------------------------------------------------------------------- */
+float32_t multOutput[MAX_BLOCKSIZE];  /* Intermediate output */
+float32_t testOutput;  /* Final ouput */
+
+arm_status status;   /* Status of the example */
+
+int32_t main(void)
+{
+  uint32_t i;       /* Loop counter */
+  float32_t diff;     /* Difference between reference and test outputs */
+
+  /* Multiplication of two input buffers */
+  arm_mult_f32(srcA_buf_f32, srcB_buf_f32, multOutput, MAX_BLOCKSIZE);
+
+  /* Accumulate the multiplication output values to
+     get the dot product of the two inputs */
+  for(i=0; i< MAX_BLOCKSIZE; i++)
+  {
+    arm_add_f32(&testOutput, &multOutput[i], &testOutput, 1);
+  }
+
+  /* absolute value of difference between ref and test */
+  diff = fabsf(refDotProdOut - testOutput);
+
+  /* Comparison of dot product value with reference */
+  if(diff > DELTA)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+  if( status == ARM_MATH_TEST_FAILURE)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_fft_bin_data.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,308 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	     	arm_fft_bin_data.c
+*   
+* Description:	 Data file used for example code
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+ * -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+Test Input signal contains 10KHz signal + Uniformly distributed white noise
+** ------------------------------------------------------------------- */
+
+float32_t testInput_f32_10khz[2048] = 
+{   
+-0.865129623056441, 	0.000000000000000, 	-2.655020678073846, 	0.000000000000000, 	0.600664612949661, 	0.000000000000000, 	0.080378093886515, 	0.000000000000000, 	
+-2.899160484012034, 	0.000000000000000, 	2.563004262857762, 	0.000000000000000, 	3.078328403304206, 	0.000000000000000, 	0.105906778385130, 	0.000000000000000, 	
+0.048366940168201, 	0.000000000000000, 	-0.145696461188734, 	0.000000000000000, 	-0.023417155362879, 	0.000000000000000, 	2.127729174988954, 	0.000000000000000, 	
+-1.176633086028377, 	0.000000000000000, 	3.690223557991855, 	0.000000000000000, 	-0.622791766173194, 	0.000000000000000, 	0.722837373872203, 	0.000000000000000, 	
+2.739754205367484, 	0.000000000000000, 	-0.062610410524552, 	0.000000000000000, 	-0.891296810967338, 	0.000000000000000, 	-1.845872258871811, 	0.000000000000000, 	
+1.195039415434387, 	0.000000000000000, 	-2.177388969045026, 	0.000000000000000, 	1.078649103637905, 	0.000000000000000, 	2.570976050490193, 	0.000000000000000, 	
+-1.383551403404574, 	0.000000000000000, 	2.392141424058873, 	0.000000000000000, 	2.858002843205065, 	0.000000000000000, 	-3.682433899725536, 	0.000000000000000, 	
+-3.488146646451150, 	0.000000000000000, 	1.323468578888120, 	0.000000000000000, 	-0.099771155430726, 	0.000000000000000, 	1.561168082500454, 	0.000000000000000, 	
+1.025026795103179, 	0.000000000000000, 	0.928841900171200, 	0.000000000000000, 	2.930499509864950, 	0.000000000000000, 	2.013349089766430, 	0.000000000000000, 	
+2.381676148486737, 	0.000000000000000, 	-3.081062307950236, 	0.000000000000000, 	-0.389579115537544, 	0.000000000000000, 	0.181540149166620, 	0.000000000000000, 	
+-2.601953341353208, 	0.000000000000000, 	0.333435137783218, 	0.000000000000000, 	-2.812945856162965, 	0.000000000000000, 	2.649109640172910, 	0.000000000000000, 	
+-1.003963025744654, 	0.000000000000000, 	1.552460768755035, 	0.000000000000000, 	0.088641345335247, 	0.000000000000000, 	-2.519951327113426, 	0.000000000000000, 	
+-4.341348988610527, 	0.000000000000000, 	0.557772429359965, 	0.000000000000000, 	-1.671267412948494, 	0.000000000000000, 	0.733951350960387, 	0.000000000000000, 	
+0.409263788034864, 	0.000000000000000, 	3.566033071952806, 	0.000000000000000, 	1.882565173848352, 	0.000000000000000, 	-1.106017073793287, 	0.000000000000000, 	
+0.154456720778718, 	0.000000000000000, 	-2.513205795512153, 	0.000000000000000, 	0.310978660939421, 	0.000000000000000, 	0.579706500111723, 	0.000000000000000, 	
+0.000086383683251, 	0.000000000000000, 	-1.311866980897721, 	0.000000000000000, 	1.840007477574986, 	0.000000000000000, 	-3.253005768451345, 	0.000000000000000, 	
+1.462584328739432, 	0.000000000000000, 	1.610103610851738, 	0.000000000000000, 	0.761914676858907, 	0.000000000000000, 	0.974541361089834, 	0.000000000000000, 	
+0.686845845885983, 	0.000000000000000, 	1.849153122025191, 	0.000000000000000, 	0.787800410401453, 	0.000000000000000, 	-1.187438909666279, 	0.000000000000000, 	
+-0.754937911044720, 	0.000000000000000, 	0.084373858395232, 	0.000000000000000, 	-2.600269011710521, 	0.000000000000000, 	-0.962982842142644, 	0.000000000000000, 	
+-0.369328108540868, 	0.000000000000000, 	0.810791418361879, 	0.000000000000000, 	3.587016488699641, 	0.000000000000000, 	-0.520776145083723, 	0.000000000000000, 	
+0.640249919627884, 	0.000000000000000, 	1.103122489464969, 	0.000000000000000, 	2.231779881455556, 	0.000000000000000, 	-1.308035392685241, 	0.000000000000000, 	
+0.424070304330106, 	0.000000000000000, 	-0.200383932651189, 	0.000000000000000, 	-2.365526783356541, 	0.000000000000000, 	-0.989114757436628, 	0.000000000000000, 	
+2.770807688959777, 	0.000000000000000, 	-0.444172737462307, 	0.000000000000000, 	0.079760979374078, 	0.000000000000000, 	-0.005199118412183, 	0.000000000000000, 	
+-0.664712668309527, 	0.000000000000000, 	-0.624171857561896, 	0.000000000000000, 	0.537306979007338, 	0.000000000000000, 	-2.575955675497642, 	0.000000000000000, 	
+1.562363235756780, 	0.000000000000000, 	1.814069369848895, 	0.000000000000000, 	-1.293428583392509, 	0.000000000000000, 	-1.026188449495686, 	0.000000000000000, 	
+-2.981771815588717, 	0.000000000000000, 	-4.223468103075124, 	0.000000000000000, 	2.672674782004045, 	0.000000000000000, 	-0.856096801117735, 	0.000000000000000, 	
+0.048517345512563, 	0.000000000000000, 	-0.026860721136222, 	0.000000000000000, 	0.392932277758187, 	0.000000000000000, 	-1.331740855093099, 	0.000000000000000, 	
+-1.894292129477081, 	0.000000000000000, 	-1.425006468460681, 	0.000000000000000, 	-2.721772427617057, 	0.000000000000000, 	-1.616831100216806, 	0.000000000000000, 	
+3.551177651488947, 	0.000000000000000, 	-0.069685667896087, 	0.000000000000000, 	-3.134634907409102, 	0.000000000000000, 	-0.263627598944639, 	0.000000000000000, 	
+-1.650469945991350, 	0.000000000000000, 	-2.203580339374399, 	0.000000000000000, 	-0.872203246123242, 	0.000000000000000, 	1.230782812607287, 	0.000000000000000, 	
+0.257288860093291, 	0.000000000000000, 	1.989083106173137, 	0.000000000000000, 	-1.985638729453261, 	0.000000000000000, 	-1.416185105842892, 	0.000000000000000, 	
+-1.131097688325772, 	0.000000000000000, 	-2.245130805416057, 	0.000000000000000, 	-1.938873996219074, 	0.000000000000000, 	2.043608361562645, 	0.000000000000000, 	
+-0.583727989880841, 	0.000000000000000, 	-1.785266378212929, 	0.000000000000000, 	1.961457586224753, 	0.000000000000000, 	1.139400099963223, 	0.000000000000000, 	
+-1.979519343363991, 	0.000000000000000, 	2.003023322818429, 	0.000000000000000, 	0.229004069076829, 	0.000000000000000, 	3.452808862193135, 	0.000000000000000, 	
+2.882273808365857, 	0.000000000000000, 	-1.549450501844438, 	0.000000000000000, 	-3.283872089931876, 	0.000000000000000, 	-0.327025884099064, 	0.000000000000000, 	
+-0.054979977136430, 	0.000000000000000, 	-1.192280531479012, 	0.000000000000000, 	0.645539328365578, 	0.000000000000000, 	2.300832863404618, 	0.000000000000000, 	
+-1.092951789535240, 	0.000000000000000, 	-1.017368249363773, 	0.000000000000000, 	-0.142673056169787, 	0.000000000000000, 	0.831073544881250, 	0.000000000000000, 	
+-2.314612531587064, 	0.000000000000000, 	-2.221456299106321, 	0.000000000000000, 	0.460261143885226, 	0.000000000000000, 	0.050585301888595, 	0.000000000000000, 	
+0.364373329183988, 	0.000000000000000, 	-1.685956552069538, 	0.000000000000000, 	0.050664512351055, 	0.000000000000000, 	-0.193355783902718, 	0.000000000000000, 	
+-0.158660446046828, 	0.000000000000000, 	2.394156453841953, 	0.000000000000000, 	-1.562965718554525, 	0.000000000000000, 	-2.199750600869900, 	0.000000000000000, 	
+1.544984022381773, 	0.000000000000000, 	-1.988307216807315, 	0.000000000000000, 	-0.628240722541046, 	0.000000000000000, 	-1.436235771505429, 	0.000000000000000, 	
+1.677013691147313, 	0.000000000000000, 	1.600741781678228, 	0.000000000000000, 	-0.757380959134706, 	0.000000000000000, 	-4.784797439515566, 	0.000000000000000, 	
+0.265121462834569, 	0.000000000000000, 	3.862029485934378, 	0.000000000000000, 	2.386823577249430, 	0.000000000000000, 	-3.655779745436893, 	0.000000000000000, 	
+-0.763541621368016, 	0.000000000000000, 	-1.182140388432962, 	0.000000000000000, 	-1.349106114858063, 	0.000000000000000, 	-2.287533624396759, 	0.000000000000000, 	
+-0.028603745188423, 	0.000000000000000, 	-1.353580755934427, 	0.000000000000000, 	0.461602380352937, 	0.000000000000000, 	-0.059599055078928, 	0.000000000000000, 	
+-0.929946734342228, 	0.000000000000000, 	0.065773089295561, 	0.000000000000000, 	1.106565863102982, 	0.000000000000000, 	4.719295086373593, 	0.000000000000000, 	
+-2.108377703544395, 	0.000000000000000, 	-2.226393620240159, 	0.000000000000000, 	1.375668397437521, 	0.000000000000000, 	-0.960772428525443, 	0.000000000000000, 	
+-2.156313465390571, 	0.000000000000000, 	1.126060012375311, 	0.000000000000000, 	2.756485137030720, 	0.000000000000000, 	0.739639690862600, 	0.000000000000000, 	
+3.914769510295006, 	0.000000000000000, 	1.685232785586675, 	0.000000000000000, 	4.079058040970612, 	0.000000000000000, 	-1.174598301660513, 	0.000000000000000, 	
+-2.885776587275580, 	0.000000000000000, 	-0.241073635188767, 	0.000000000000000, 	3.080489872502403, 	0.000000000000000, 	-2.051244183999421, 	0.000000000000000, 	
+0.664330486845139, 	0.000000000000000, 	-1.697798999370016, 	0.000000000000000, 	1.452369423649782, 	0.000000000000000, 	-1.523532831019280, 	0.000000000000000, 	
+0.171981186587481, 	0.000000000000000, 	-4.685274721583927, 	0.000000000000000, 	-1.336175835319380, 	0.000000000000000, 	1.419070770428945, 	0.000000000000000, 	
+-0.035791601713475, 	0.000000000000000, 	2.291937971632081, 	0.000000000000000, 	-1.962559313450293, 	0.000000000000000, 	-4.831595589339301, 	0.000000000000000, 	
+-1.857055284000925, 	0.000000000000000, 	2.606271522635512, 	0.000000000000000, 	-0.576447978738030, 	0.000000000000000, 	0.082299166967720, 	0.000000000000000, 	
+1.888399453494614, 	0.000000000000000, 	-3.564705298046079, 	0.000000000000000, 	-0.939357831083889, 	0.000000000000000, 	-1.903578203697778, 	0.000000000000000, 	
+-2.642492215447250, 	0.000000000000000, 	-0.182990405251017, 	0.000000000000000, 	3.742026478011174, 	0.000000000000000, 	0.104295803798333, 	0.000000000000000, 	
+1.848678195370347, 	0.000000000000000, 	-1.887384346896369, 	0.000000000000000, 	0.365048973046045, 	0.000000000000000, 	-0.889638010354219, 	0.000000000000000, 	
+1.173877118428863, 	0.000000000000000, 	-1.178562827540109, 	0.000000000000000, 	0.610271645685184, 	0.000000000000000, 	1.831284815697871, 	0.000000000000000, 	
+0.449575390102283, 	0.000000000000000, 	1.597171905253443, 	0.000000000000000, 	3.918574971904773, 	0.000000000000000, 	0.868104027970404, 	0.000000000000000, 	
+0.582643134746494, 	0.000000000000000, 	2.321256382353331, 	0.000000000000000, 	-0.238118642223180, 	0.000000000000000, 	-2.890287868054370, 	0.000000000000000, 	
+0.970995414625622, 	0.000000000000000, 	0.666137930891283, 	0.000000000000000, 	-0.202435718709502, 	0.000000000000000, 	2.057930200518194, 	0.000000000000000, 	
+3.120583443719949, 	0.000000000000000, 	-0.863945271701041, 	0.000000000000000, 	0.906848893874630, 	0.000000000000000, 	-1.434124930222570, 	0.000000000000000, 	
+0.754659384848783, 	0.000000000000000, 	-5.224154442713778, 	0.000000000000000, 	2.330229744098967, 	0.000000000000000, 	1.113946320164698, 	0.000000000000000, 	
+0.523324920322840, 	0.000000000000000, 	1.750740911548348, 	0.000000000000000, 	-0.899333972913577, 	0.000000000000000, 	0.228705845203506, 	0.000000000000000, 	
+-1.934782624767648, 	0.000000000000000, 	-3.508386237231303, 	0.000000000000000, 	-2.107108523073510, 	0.000000000000000, 	0.380587645474815, 	0.000000000000000, 	
+-0.476200877183279, 	0.000000000000000, 	-2.172086712642198, 	0.000000000000000, 	1.795372535780299, 	0.000000000000000, 	-2.100318983391055, 	0.000000000000000, 	
+-0.022571122461405, 	0.000000000000000, 	0.674514020010955, 	0.000000000000000, 	-0.148872569390857, 	0.000000000000000, 	0.298175890592737, 	0.000000000000000, 	
+-1.134244492493590, 	0.000000000000000, 	-3.146848422289455, 	0.000000000000000, 	-1.357950199087602, 	0.000000000000000, 	0.667362732020878, 	0.000000000000000, 	
+-3.119397998316724, 	0.000000000000000, 	-1.189341126297637, 	0.000000000000000, 	-1.532744386856668, 	0.000000000000000, 	-1.672972484202534, 	0.000000000000000, 	
+-2.042283373871558, 	0.000000000000000, 	-1.479481547595924, 	0.000000000000000, 	-0.002668662875396, 	0.000000000000000, 	0.262737760129546, 	0.000000000000000, 	
+2.734456080621830, 	0.000000000000000, 	-0.671945925075102, 	0.000000000000000, 	-3.735078262179111, 	0.000000000000000, 	-0.161705013319883, 	0.000000000000000, 	
+0.748963512361001, 	0.000000000000000, 	1.128046374367600, 	0.000000000000000, 	0.649651335592966, 	0.000000000000000, 	1.880020215025867, 	0.000000000000000, 	
+-1.095632293842306, 	0.000000000000000, 	1.197764876160487, 	0.000000000000000, 	0.323646656252985, 	0.000000000000000, 	-1.655502751114502, 	0.000000000000000, 	
+3.666399062961496, 	0.000000000000000, 	-0.334060899735197, 	0.000000000000000, 	-2.119056978738397, 	0.000000000000000, 	3.721375117275012, 	0.000000000000000, 	
+0.044874186872307, 	0.000000000000000, 	-2.733053897593234, 	0.000000000000000, 	1.590700278891042, 	0.000000000000000, 	3.215711772781902, 	0.000000000000000, 	
+-1.792085012843801, 	0.000000000000000, 	-0.405797188885475, 	0.000000000000000, 	-0.628080020080892, 	0.000000000000000, 	-1.831815840843960, 	0.000000000000000, 	
+2.973656862522834, 	0.000000000000000, 	-0.212032655138417, 	0.000000000000000, 	0.372437389437234, 	0.000000000000000, 	-1.614030579023492, 	0.000000000000000, 	
+-0.704900996358698, 	0.000000000000000, 	1.123700273452105, 	0.000000000000000, 	-0.136371848130819, 	0.000000000000000, 	3.020284357635585, 	0.000000000000000, 	
+-0.550211350877649, 	0.000000000000000, 	5.101256236381711, 	0.000000000000000, 	3.367051512192333, 	0.000000000000000, 	-4.385131946669234, 	0.000000000000000, 	
+-3.967303337694391, 	0.000000000000000, 	-0.965894936640022, 	0.000000000000000, 	0.328366945264681, 	0.000000000000000, 	0.199041562924914, 	0.000000000000000, 	
+1.067681999025495, 	0.000000000000000, 	-1.939516091697170, 	0.000000000000000, 	-1.092980954328824, 	0.000000000000000, 	0.273786079368066, 	0.000000000000000, 	
+-0.040928322190265, 	0.000000000000000, 	-0.118368078577437, 	0.000000000000000, 	1.766589628899997, 	0.000000000000000, 	1.738321311635393, 	0.000000000000000, 	
+-2.895012794321649, 	0.000000000000000, 	1.213521771395142, 	0.000000000000000, 	0.922971726633985, 	0.000000000000000, 	1.091516563636489, 	0.000000000000000, 	
+3.226378465469620, 	0.000000000000000, 	1.149169778666974, 	0.000000000000000, 	-1.695986327709386, 	0.000000000000000, 	-0.974803077355813, 	0.000000000000000, 	
+-4.898035507513607, 	0.000000000000000, 	1.622719302889447, 	0.000000000000000, 	0.583891313586579, 	0.000000000000000, 	-1.677182424094957, 	0.000000000000000, 	
+-1.915633132814685, 	0.000000000000000, 	-1.980150370851616, 	0.000000000000000, 	0.604538269404190, 	0.000000000000000, 	0.939862406149365, 	0.000000000000000, 	
+-1.266939874246416, 	0.000000000000000, 	-1.494771249200063, 	0.000000000000000, 	0.278042784093988, 	0.000000000000000, 	0.326627416008916, 	0.000000000000000, 	
+-1.914530157643303, 	0.000000000000000, 	1.908947721862196, 	0.000000000000000, 	0.531819285694044, 	0.000000000000000, 	3.056856632319658, 	0.000000000000000, 	
+-0.389241827774643, 	0.000000000000000, 	-2.418606606780420, 	0.000000000000000, 	0.915299238878703, 	0.000000000000000, 	-0.098774174295283, 	0.000000000000000, 	
+-0.906199428444304, 	0.000000000000000, 	0.316716451217743, 	0.000000000000000, 	-4.367700643578311, 	0.000000000000000, 	1.491687997515293, 	0.000000000000000, 	
+-1.962381126288365, 	0.000000000000000, 	-0.700829196527045, 	0.000000000000000, 	3.028958963615630, 	0.000000000000000, 	-2.313461067462598, 	0.000000000000000, 	
+-1.431933239886712, 	0.000000000000000, 	-0.831153039725342, 	0.000000000000000, 	3.939495598250743, 	0.000000000000000, 	0.342974753984771, 	0.000000000000000, 	
+-2.768330763002974, 	0.000000000000000, 	-2.744010370019008, 	0.000000000000000, 	3.821352685212561, 	0.000000000000000, 	4.551065271455856, 	0.000000000000000, 	
+3.270136437041298, 	0.000000000000000, 	-3.188028411950982, 	0.000000000000000, 	-0.777075012417436, 	0.000000000000000, 	0.097110650265216, 	0.000000000000000, 	
+1.221216137608812, 	0.000000000000000, 	-1.325824244541822, 	0.000000000000000, 	-2.655296734084113, 	0.000000000000000, 	-1.074792144885704, 	0.000000000000000, 	
+2.770401584439407, 	0.000000000000000, 	5.240270645610543, 	0.000000000000000, 	0.108576672208892, 	0.000000000000000, 	-1.209394350650142, 	0.000000000000000, 	
+1.403344353838785, 	0.000000000000000, 	-0.299032904177277, 	0.000000000000000, 	4.074959450638227, 	0.000000000000000, 	1.718727473952107, 	0.000000000000000, 	
+-3.061349227080806, 	0.000000000000000, 	-1.158596888541269, 	0.000000000000000, 	3.381858904662625, 	0.000000000000000, 	0.957339964054052, 	0.000000000000000, 	
+0.179900074904899, 	0.000000000000000, 	-3.909641902506081, 	0.000000000000000, 	0.805717289408649, 	0.000000000000000, 	2.047413793928261, 	0.000000000000000, 	
+-1.273580225826614, 	0.000000000000000, 	-2.681359186869971, 	0.000000000000000, 	-0.721241345822093, 	0.000000000000000, 	-1.613090681569475, 	0.000000000000000, 	
+0.463138804815955, 	0.000000000000000, 	0.377223507800954, 	0.000000000000000, 	2.046550684968141, 	0.000000000000000, 	0.178508732797712, 	0.000000000000000, 	
+-0.477815330358845, 	0.000000000000000, 	3.763355908332053, 	0.000000000000000, 	1.300430303035163, 	0.000000000000000, 	-0.214625793857725, 	0.000000000000000, 	
+1.343267891864081, 	0.000000000000000, 	-0.340007682433245, 	0.000000000000000, 	2.062703194680005, 	0.000000000000000, 	0.042032160234235, 	0.000000000000000, 	
+0.643732569732250, 	0.000000000000000, 	-1.913502543857589, 	0.000000000000000, 	3.771340762937158, 	0.000000000000000, 	1.050024807363386, 	0.000000000000000, 	
+-4.440489488592649, 	0.000000000000000, 	0.444904302066643, 	0.000000000000000, 	2.898702265650048, 	0.000000000000000, 	1.953232980548558, 	0.000000000000000, 	
+2.761564952735079, 	0.000000000000000, 	1.963537633260397, 	0.000000000000000, 	-2.168858472916215, 	0.000000000000000, 	-4.116235357699841, 	0.000000000000000, 	
+4.183678271896528, 	0.000000000000000, 	0.600422284944681, 	0.000000000000000, 	-0.659352647255126, 	0.000000000000000, 	-0.993127338218109, 	0.000000000000000, 	
+-2.463571314945747, 	0.000000000000000, 	0.937720951545881, 	0.000000000000000, 	-3.098957308429730, 	0.000000000000000, 	-2.354719140045463, 	0.000000000000000, 	
+-0.417285119323949, 	0.000000000000000, 	2.187974075975947, 	0.000000000000000, 	1.101468905172585, 	0.000000000000000, 	-3.185800678152109, 	0.000000000000000, 	
+2.357534709345083, 	0.000000000000000, 	0.246645606729407, 	0.000000000000000, 	4.440905650784504, 	0.000000000000000, 	-2.236807716637866, 	0.000000000000000, 	
+-2.171481518317550, 	0.000000000000000, 	-2.029571795072690, 	0.000000000000000, 	0.135599790431348, 	0.000000000000000, 	-1.277965265520191, 	0.000000000000000, 	
+-1.927976233157507, 	0.000000000000000, 	-5.434492783745394, 	0.000000000000000, 	-2.026375829312657, 	0.000000000000000, 	1.009666016819321, 	0.000000000000000, 	
+0.238549782367247, 	0.000000000000000, 	-0.516403923971309, 	0.000000000000000, 	-0.933977817429352, 	0.000000000000000, 	0.155803015935614, 	0.000000000000000, 	
+-0.396194809997929, 	0.000000000000000, 	-0.915178100253214, 	0.000000000000000, 	0.666329367985015, 	0.000000000000000, 	-1.517991149945785, 	0.000000000000000, 	
+0.458266744144822, 	0.000000000000000, 	-1.242845974381418, 	0.000000000000000, 	0.057914823556477, 	0.000000000000000, 	0.994101307476875, 	0.000000000000000, 	
+-2.387209849199325, 	0.000000000000000, 	0.459297048883826, 	0.000000000000000, 	0.227711405683905, 	0.000000000000000, 	0.030255073506117, 	0.000000000000000, 	
+-1.323361608181337, 	0.000000000000000, 	-4.650244457426706, 	0.000000000000000, 	0.062908579526021, 	0.000000000000000, 	3.462831028244432, 	0.000000000000000, 	
+1.303608183314856, 	0.000000000000000, 	-1.430415193881612, 	0.000000000000000, 	-1.672886118942142, 	0.000000000000000, 	0.992890699210099, 	0.000000000000000, 	
+-0.160814531784247, 	0.000000000000000, 	-1.238132939350430, 	0.000000000000000, 	-0.589223271459376, 	0.000000000000000, 	2.326363810561534, 	0.000000000000000, 	
+-4.433789496230785, 	0.000000000000000, 	1.664686987538929, 	0.000000000000000, 	-2.366128834617921, 	0.000000000000000, 	1.212421570743837, 	0.000000000000000, 	
+-4.847914267690055, 	0.000000000000000, 	0.228485221404712, 	0.000000000000000, 	0.466139765470957, 	0.000000000000000, 	-1.344202776943546, 	0.000000000000000, 	
+-1.012053673330574, 	0.000000000000000, 	-2.844980626424742, 	0.000000000000000, 	-1.552703722026340, 	0.000000000000000, 	-1.448830983885038, 	0.000000000000000, 	
+0.127010756753980, 	0.000000000000000, 	-1.667188263752299, 	0.000000000000000, 	3.424818052085100, 	0.000000000000000, 	0.956291135453840, 	0.000000000000000, 	
+-3.725533331754662, 	0.000000000000000, 	-1.584534272368832, 	0.000000000000000, 	-1.654148210472472, 	0.000000000000000, 	0.701610500675698, 	0.000000000000000, 	
+0.164954538683927, 	0.000000000000000, 	-0.739260064712987, 	0.000000000000000, 	-2.167324026090101, 	0.000000000000000, 	-0.310240491909496, 	0.000000000000000, 	
+-2.281790349106906, 	0.000000000000000, 	1.719655331305361, 	0.000000000000000, 	-2.997005923606441, 	0.000000000000000, 	-1.999301431556852, 	0.000000000000000, 	
+-0.292229010068828, 	0.000000000000000, 	1.172317994855851, 	0.000000000000000, 	0.196734885241533, 	0.000000000000000, 	2.981365193477068, 	0.000000000000000, 	
+2.637726016926352, 	0.000000000000000, 	1.434045125217982, 	0.000000000000000, 	0.883627180451827, 	0.000000000000000, 	-1.434040761445747, 	0.000000000000000, 	
+-1.528891971086553, 	0.000000000000000, 	-3.306913135367542, 	0.000000000000000, 	-0.399059265470646, 	0.000000000000000, 	-0.265674394285178, 	0.000000000000000, 	
+3.502591252855384, 	0.000000000000000, 	0.830301156604454, 	0.000000000000000, 	-0.220021317046083, 	0.000000000000000, 	-0.090553770476646, 	0.000000000000000, 	
+0.771863477047951, 	0.000000000000000, 	1.351209629105760, 	0.000000000000000, 	3.773699756201963, 	0.000000000000000, 	0.472600118752329, 	0.000000000000000, 	
+2.332825668012222, 	0.000000000000000, 	1.853747950314528, 	0.000000000000000, 	0.759515251766178, 	0.000000000000000, 	1.327112776215496, 	0.000000000000000, 	
+2.518730296237868, 	0.000000000000000, 	0.764450208786353, 	0.000000000000000, 	-0.278275349491296, 	0.000000000000000, 	-0.041559465082020, 	0.000000000000000, 	
+1.387166083167787, 	0.000000000000000, 	2.612996769598122, 	0.000000000000000, 	-0.385404831721799, 	0.000000000000000, 	2.005630016170309, 	0.000000000000000, 	
+-0.950500047307998, 	0.000000000000000, 	-1.166884021392492, 	0.000000000000000, 	1.432973552928162, 	0.000000000000000, 	2.540370505384567, 	0.000000000000000, 	
+-1.140505295054501, 	0.000000000000000, 	-3.673358835201185, 	0.000000000000000, 	-0.450691288038056, 	0.000000000000000, 	1.601024294408014, 	0.000000000000000, 	
+0.773213556014045, 	0.000000000000000, 	2.973873693246168, 	0.000000000000000, 	-1.361548406382279, 	0.000000000000000, 	1.409136332424815, 	0.000000000000000, 	
+-0.963382518314713, 	0.000000000000000, 	-2.031268227368161, 	0.000000000000000, 	0.983309972085586, 	0.000000000000000, 	-3.461412488471631, 	0.000000000000000, 	
+-2.601124929406039, 	0.000000000000000, 	-0.533896239766343, 	0.000000000000000, 	-2.627129008866350, 	0.000000000000000, 	0.622111169161305, 	0.000000000000000, 	
+-1.160926365580422, 	0.000000000000000, 	-2.406196188132628, 	0.000000000000000, 	-1.076870362758737, 	0.000000000000000, 	-1.791866820937175, 	0.000000000000000, 	
+-0.749453071522325, 	0.000000000000000, 	-5.324156615990973, 	0.000000000000000, 	-1.038698022238289, 	0.000000000000000, 	-2.106629944730630, 	0.000000000000000, 	
+0.659295598564773, 	0.000000000000000, 	0.520940881580988, 	0.000000000000000, 	-0.055649203928700, 	0.000000000000000, 	0.292096765423137, 	0.000000000000000, 	
+-4.663743901790872, 	0.000000000000000, 	-0.125066503391666, 	0.000000000000000, 	-2.452620252445380, 	0.000000000000000, 	-0.712128227397468, 	0.000000000000000, 	
+-0.048938037970968, 	0.000000000000000, 	-1.821520226003361, 	0.000000000000000, 	0.810106421304257, 	0.000000000000000, 	-0.196636623956257, 	0.000000000000000, 	
+-0.701769836763804, 	0.000000000000000, 	2.460345045649201, 	0.000000000000000, 	3.506597671641116, 	0.000000000000000, 	-2.711322611972225, 	0.000000000000000, 	
+-0.658079876600542, 	0.000000000000000, 	-2.040082099646173, 	0.000000000000000, 	2.201668355395807, 	0.000000000000000, 	1.181507395879711, 	0.000000000000000, 	
+-1.640739552179682, 	0.000000000000000, 	-1.613393726467190, 	0.000000000000000, 	-1.156741241731352, 	0.000000000000000, 	2.527773464519963, 	0.000000000000000, 	
+-0.497040638009502, 	0.000000000000000, 	-0.975817112895589, 	0.000000000000000, 	-2.866830755546166, 	0.000000000000000, 	1.120214498507878, 	0.000000000000000, 	
+5.986771654661698, 	0.000000000000000, 	0.398219252656757, 	0.000000000000000, 	-3.545606013198135, 	0.000000000000000, 	0.312398099396191, 	0.000000000000000, 	
+-2.265327979531788, 	0.000000000000000, 	0.792121001107366, 	0.000000000000000, 	-3.736145137670100, 	0.000000000000000, 	0.762228883650802, 	0.000000000000000, 	
+2.283545661214646, 	0.000000000000000, 	3.780020629583529, 	0.000000000000000, 	3.117260228608810, 	0.000000000000000, 	-2.011159255609613, 	0.000000000000000, 	
+0.279107700476072, 	0.000000000000000, 	2.003369134246936, 	0.000000000000000, 	-1.448171234480257, 	0.000000000000000, 	0.584697150310140, 	0.000000000000000, 	
+0.919508663636197, 	0.000000000000000, 	-3.071349141675388, 	0.000000000000000, 	-1.555923649263667, 	0.000000000000000, 	2.232497079438850, 	0.000000000000000, 	
+-0.012662139119883, 	0.000000000000000, 	0.372825540734715, 	0.000000000000000, 	2.378543590847629, 	0.000000000000000, 	1.459053407813062, 	0.000000000000000, 	
+-0.967913907390927, 	0.000000000000000, 	1.322825200678212, 	0.000000000000000, 	-1.033775820061824, 	0.000000000000000, 	-1.813629552693142, 	0.000000000000000, 	
+4.794348161661486, 	0.000000000000000, 	0.655279811518676, 	0.000000000000000, 	-2.224590138589720, 	0.000000000000000, 	0.595329481295766, 	0.000000000000000, 	
+3.364055988866225, 	0.000000000000000, 	1.863416422998127, 	0.000000000000000, 	1.930305751828105, 	0.000000000000000, 	-0.284467053432545, 	0.000000000000000, 	
+-0.923374905878938, 	0.000000000000000, 	1.922988234041399, 	0.000000000000000, 	0.310482143432719, 	0.000000000000000, 	0.332122302397134, 	0.000000000000000, 	
+-1.659487472408966, 	0.000000000000000, 	-1.865943507877961, 	0.000000000000000, 	-0.186775297569864, 	0.000000000000000, 	-1.700543850628361, 	0.000000000000000, 	
+0.497157959366735, 	0.000000000000000, 	-0.471244843957418, 	0.000000000000000, 	-0.432013753969948, 	0.000000000000000, 	-4.000189880113231, 	0.000000000000000, 	
+-0.415335170016467, 	0.000000000000000, 	0.317311950972859, 	0.000000000000000, 	0.038393428927595, 	0.000000000000000, 	0.177219909465206, 	0.000000000000000, 	
+0.531650958095143, 	0.000000000000000, 	-2.711644985175806, 	0.000000000000000, 	0.328744077805156, 	0.000000000000000, 	-0.938417707547928, 	0.000000000000000, 	
+0.970379584897379, 	0.000000000000000, 	1.873649473917137, 	0.000000000000000, 	0.177938226987023, 	0.000000000000000, 	0.155609346302393, 	0.000000000000000, 	
+-1.276504241867208, 	0.000000000000000, 	-0.463725075928807, 	0.000000000000000, 	-0.064748250389500, 	0.000000000000000, 	-1.725568534062385, 	0.000000000000000, 	
+-0.139066584804067, 	0.000000000000000, 	1.975514554117767, 	0.000000000000000, 	-0.807063199499478, 	0.000000000000000, 	-0.326926659682788, 	0.000000000000000, 	
+1.445727032487938, 	0.000000000000000, 	-0.597151107739100, 	0.000000000000000, 	2.732557531709386, 	0.000000000000000, 	-2.907130934109188, 	0.000000000000000, 	
+-1.461264832679981, 	0.000000000000000, 	-1.708588604968163, 	0.000000000000000, 	3.652851925431363, 	0.000000000000000, 	0.682050868282879, 	0.000000000000000, 	
+-0.281312579963294, 	0.000000000000000, 	0.554966483307825, 	0.000000000000000, 	-0.981341739340932, 	0.000000000000000, 	1.279543331141603, 	0.000000000000000, 	
+0.036589747826856, 	0.000000000000000, 	2.312073745896073, 	0.000000000000000, 	1.754682200732425, 	0.000000000000000, 	-0.957515875428627, 	0.000000000000000, 	
+-0.833596942819695, 	0.000000000000000, 	0.437054368791033, 	0.000000000000000, 	-0.898819399360279, 	0.000000000000000, 	-0.296050580896839, 	0.000000000000000, 	
+-0.785144257649601, 	0.000000000000000, 	-2.541503089003311, 	0.000000000000000, 	2.225075846758761, 	0.000000000000000, 	-1.587290487902002, 	0.000000000000000, 	
+-1.421404172056462, 	0.000000000000000, 	-3.015149802293631, 	0.000000000000000, 	1.780874288867949, 	0.000000000000000, 	-0.865812740882613, 	0.000000000000000, 	
+-2.845327531197112, 	0.000000000000000, 	1.445225867774367, 	0.000000000000000, 	2.183733236584647, 	0.000000000000000, 	1.163371072749080, 	0.000000000000000, 	
+0.883547693520409, 	0.000000000000000, 	-1.224093106684675, 	0.000000000000000, 	-1.854501116331044, 	0.000000000000000, 	1.783082089255796, 	0.000000000000000, 	
+2.301508706196191, 	0.000000000000000, 	-0.539901944139077, 	0.000000000000000, 	1.962315832319967, 	0.000000000000000, 	-0.060709041870503, 	0.000000000000000, 	
+-1.353139923300238, 	0.000000000000000, 	-1.482887537805234, 	0.000000000000000, 	1.273732601967176, 	0.000000000000000, 	-3.456609915556321, 	0.000000000000000, 	
+-3.752320586540873, 	0.000000000000000, 	3.536356614978951, 	0.000000000000000, 	0.206035952043233, 	0.000000000000000, 	5.933966913773842, 	0.000000000000000, 	
+-0.486633898075490, 	0.000000000000000, 	-0.329595089863342, 	0.000000000000000, 	1.496414153905337, 	0.000000000000000, 	0.137868749388880, 	0.000000000000000, 	
+-0.437192030996792, 	0.000000000000000, 	2.682750615210656, 	0.000000000000000, 	-2.440234892848570, 	0.000000000000000, 	1.433910252426186, 	0.000000000000000, 	
+-0.415051506104074, 	0.000000000000000, 	1.982003013708649, 	0.000000000000000, 	1.345796609972435, 	0.000000000000000, 	-2.335949513404370, 	0.000000000000000, 	
+1.065988867433025, 	0.000000000000000, 	2.741844905000464, 	0.000000000000000, 	-1.754047930934362, 	0.000000000000000, 	0.229252730015575, 	0.000000000000000, 	
+-0.679791016408669, 	0.000000000000000, 	-2.274097820043743, 	0.000000000000000, 	0.149802252231876, 	0.000000000000000, 	-0.139697151364830, 	0.000000000000000, 	
+-2.773367420505435, 	0.000000000000000, 	-4.403400246165611, 	0.000000000000000, 	-1.468974515184135, 	0.000000000000000, 	0.664990623095844, 	0.000000000000000, 	
+-3.446979775557143, 	0.000000000000000, 	1.850006428987618, 	0.000000000000000, 	-1.550866747921936, 	0.000000000000000, 	-3.632874882935257, 	0.000000000000000, 	
+0.828039662992464, 	0.000000000000000, 	2.794055182632816, 	0.000000000000000, 	-0.593995716682633, 	0.000000000000000, 	0.142788156054200, 	0.000000000000000, 	
+0.552461945119668, 	0.000000000000000, 	0.842127129738758, 	0.000000000000000, 	1.414335509600077, 	0.000000000000000, 	-0.311559241382430, 	0.000000000000000, 	
+1.510590844695250, 	0.000000000000000, 	1.692217183824300, 	0.000000000000000, 	0.613760285711957, 	0.000000000000000, 	0.065233463207770, 	0.000000000000000, 	
+-2.571912893711505, 	0.000000000000000, 	-1.707001531141341, 	0.000000000000000, 	0.673884968382041, 	0.000000000000000, 	0.889863883420103, 	0.000000000000000, 	
+-2.395635435233346, 	0.000000000000000, 	1.129247296359819, 	0.000000000000000, 	0.569074704779735, 	0.000000000000000, 	6.139436017480722, 	0.000000000000000, 	
+0.822158309259017, 	0.000000000000000, 	-3.289872016222589, 	0.000000000000000, 	0.417612988384414, 	0.000000000000000, 	1.493982103868165, 	0.000000000000000, 	
+-0.415353391377005, 	0.000000000000000, 	0.288670764933155, 	0.000000000000000, 	-1.895650228872272, 	0.000000000000000, 	-0.139631694475020, 	0.000000000000000, 	
+1.445103299005436, 	0.000000000000000, 	2.877182243683429, 	0.000000000000000, 	1.192428490172580, 	0.000000000000000, 	-5.964591921763842, 	0.000000000000000, 	
+0.570859795882959, 	0.000000000000000, 	2.328333316356666, 	0.000000000000000, 	0.333755014930026, 	0.000000000000000, 	1.221901577771909, 	0.000000000000000, 	
+0.943358697415568, 	0.000000000000000, 	2.793063983613067, 	0.000000000000000, 	3.163005066073616, 	0.000000000000000, 	2.098300664513867, 	0.000000000000000, 	
+-3.915313164333447, 	0.000000000000000, 	-2.475766769064539, 	0.000000000000000, 	1.720472044894277, 	0.000000000000000, 	-1.273591949275665, 	0.000000000000000, 	
+-1.213451272938616, 	0.000000000000000, 	0.697439404325690, 	0.000000000000000, 	-0.309902287574293, 	0.000000000000000, 	2.622575852162781, 	0.000000000000000, 	
+-2.075881936219060, 	0.000000000000000, 	0.777847545691770, 	0.000000000000000, 	-3.967947986440650, 	0.000000000000000, 	-3.066503371806472, 	0.000000000000000, 	
+1.193780625937845, 	0.000000000000000, 	0.214246579281311, 	0.000000000000000, 	-2.610681491162162, 	0.000000000000000, 	-1.261224183972745, 	0.000000000000000, 	
+-1.165071748544285, 	0.000000000000000, 	-1.116548474834374, 	0.000000000000000, 	0.847202164846982, 	0.000000000000000, 	-3.474301529532390, 	0.000000000000000, 	
+0.020799541946476, 	0.000000000000000, 	-3.868995473288166, 	0.000000000000000, 	1.757979409638067, 	0.000000000000000, 	0.868115130183109, 	0.000000000000000, 	
+0.910167436737958, 	0.000000000000000, 	-1.878855115563720, 	0.000000000000000, 	1.710357104174161, 	0.000000000000000, 	-1.468933980990902, 	0.000000000000000, 	
+1.799544171601169, 	0.000000000000000, 	-4.922332880027887, 	0.000000000000000, 	0.219424548939720, 	0.000000000000000, 	-0.971671113451924, 	0.000000000000000, 	
+-0.940533475616266, 	0.000000000000000, 	0.122510114412152, 	0.000000000000000, 	-1.373686254916911, 	0.000000000000000, 	1.760348103896323, 	0.000000000000000, 	
+0.391745067829643, 	0.000000000000000, 	2.521958505327354, 	0.000000000000000, 	-1.300693516405092, 	0.000000000000000, 	-0.538251788309178, 	0.000000000000000, 	
+0.797184135810173, 	0.000000000000000, 	2.908800548982588, 	0.000000000000000, 	1.590902251655215, 	0.000000000000000, 	-1.070323714487264, 	0.000000000000000, 	
+-3.349764443340999, 	0.000000000000000, 	-1.190563529731447, 	0.000000000000000, 	1.363369471291963, 	0.000000000000000, 	-1.814270299924576, 	0.000000000000000, 	
+-0.023381588315711, 	0.000000000000000, 	1.719182048679569, 	0.000000000000000, 	0.839917213252626, 	0.000000000000000, 	1.006099633839122, 	0.000000000000000, 	
+0.812462674381527, 	0.000000000000000, 	1.755814336346739, 	0.000000000000000, 	2.546848681206319, 	0.000000000000000, 	-1.555300208869455, 	0.000000000000000, 	
+1.017053811631167, 	0.000000000000000, 	0.996591039170903, 	0.000000000000000, 	-1.228047247924881, 	0.000000000000000, 	4.809462271463009, 	0.000000000000000, 	
+2.318113116151685, 	0.000000000000000, 	-1.206932520679733, 	0.000000000000000, 	1.273757685623312, 	0.000000000000000, 	0.724335352481802, 	0.000000000000000, 	
+1.519876652073198, 	0.000000000000000, 	-2.749670314714158, 	0.000000000000000, 	3.424042481847581, 	0.000000000000000, 	-3.714668360421517, 	0.000000000000000, 	
+1.612834197004014, 	0.000000000000000, 	-2.038234723985566, 	0.000000000000000, 	1.470938786562152, 	0.000000000000000, 	2.111634918450302, 	0.000000000000000, 	
+1.030376670151787, 	0.000000000000000, 	-0.420877189003829, 	0.000000000000000, 	-1.502024800532894, 	0.000000000000000, 	0.452310749163804, 	0.000000000000000, 	
+-1.606059382300987, 	0.000000000000000, 	-4.006159967834147, 	0.000000000000000, 	-2.152801208196508, 	0.000000000000000, 	1.671674089372579, 	0.000000000000000, 	
+1.714536333564101, 	0.000000000000000, 	-1.011518543005344, 	0.000000000000000, 	-0.576410282180584, 	0.000000000000000, 	0.733689809480836, 	0.000000000000000, 	
+1.004245602717974, 	0.000000000000000, 	1.010090391888449, 	0.000000000000000, 	3.811459513385621, 	0.000000000000000, 	-5.230621089271954, 	0.000000000000000, 	
+0.678044861034399, 	0.000000000000000, 	1.255935859598107, 	0.000000000000000, 	1.674521701615288, 	0.000000000000000, 	-1.656695216761705, 	0.000000000000000, 	
+1.169286028869693, 	0.000000000000000, 	0.524915416191998, 	0.000000000000000, 	2.397642885039520, 	0.000000000000000, 	2.108711400616072, 	0.000000000000000, 	
+2.037618211018084, 	0.000000000000000, 	-0.623664553406925, 	0.000000000000000, 	2.984106170984409, 	0.000000000000000, 	1.132182737400932, 	0.000000000000000, 	
+-2.859274340352130, 	0.000000000000000, 	-0.975550071398723, 	0.000000000000000, 	-1.359935119997407, 	0.000000000000000, 	-2.963308211050121, 	0.000000000000000, 	
+-0.228726662781163, 	0.000000000000000, 	-1.411110379682043, 	0.000000000000000, 	0.741553355734225, 	0.000000000000000, 	0.497554254758309, 	0.000000000000000, 	
+2.371907950598855, 	0.000000000000000, 	1.063465168988748, 	0.000000000000000, 	-0.641082692081488, 	0.000000000000000, 	-0.855439878540726, 	0.000000000000000, 	
+0.578321738578726, 	0.000000000000000, 	3.005809768796194, 	0.000000000000000, 	1.961458699064065, 	0.000000000000000, 	-3.206261663772745, 	0.000000000000000, 	
+-0.364431989095434, 	0.000000000000000, 	-0.263182496622273, 	0.000000000000000, 	1.843464680631139, 	0.000000000000000, 	-0.419107530229249, 	0.000000000000000, 	
+1.662335873298487, 	0.000000000000000, 	-0.853687563304005, 	0.000000000000000, 	-2.584133404357169, 	0.000000000000000, 	3.466839568922895, 	0.000000000000000, 	
+0.881671345091973, 	0.000000000000000, 	0.454620014206908, 	0.000000000000000, 	-1.737245187402739, 	0.000000000000000, 	2.162713238369243, 	0.000000000000000, 	
+-3.868539002714486, 	0.000000000000000, 	2.014114855933826, 	0.000000000000000, 	-0.703233831811006, 	0.000000000000000, 	-3.410319935997574, 	0.000000000000000, 	
+-1.851235811006584, 	0.000000000000000, 	0.909783907894036, 	0.000000000000000, 	0.091884002136728, 	0.000000000000000, 	-2.688294201131650, 	0.000000000000000, 	
+-0.906134178460955, 	0.000000000000000, 	3.475054609035133, 	0.000000000000000, 	-0.573927964170323, 	0.000000000000000, 	-0.429542937515399, 	0.000000000000000, 	
+0.991348618739939, 	0.000000000000000, 	1.974804904926325, 	0.000000000000000, 	0.975783450796698, 	0.000000000000000, 	-3.057119549071503, 	0.000000000000000, 	
+-3.899429237481194, 	0.000000000000000, 	0.362439009175350, 	0.000000000000000, 	-1.124461670265618, 	0.000000000000000, 	1.806000360163583, 	0.000000000000000, 	
+-2.768333362600288, 	0.000000000000000, 	0.244387897900379, 	0.000000000000000, 	0.908767296720926, 	0.000000000000000, 	1.254669374391882, 	0.000000000000000, 	
+-1.420441929463686, 	0.000000000000000, 	-0.875658895966293, 	0.000000000000000, 	0.183824603376167, 	0.000000000000000, 	-3.361653917011686, 	0.000000000000000, 	
+-0.796615630227952, 	0.000000000000000, 	-1.660226542658673, 	0.000000000000000, 	1.654439358307226, 	0.000000000000000, 	2.782812946709771, 	0.000000000000000, 	
+1.418064412811531, 	0.000000000000000, 	-0.819645647243761, 	0.000000000000000, 	0.807724772592699, 	0.000000000000000, 	-0.941967976379298, 	0.000000000000000, 	
+-2.312768306047469, 	0.000000000000000, 	0.872426936477443, 	0.000000000000000, 	0.919528961530845, 	0.000000000000000, 	-2.084904575264847, 	0.000000000000000, 	
+-1.972464868459322, 	0.000000000000000, 	-1.050687203338466, 	0.000000000000000, 	1.659579707007902, 	0.000000000000000, 	-1.820640014705855, 	0.000000000000000, 	
+-1.195078061671045, 	0.000000000000000, 	-1.639773173762048, 	0.000000000000000, 	1.616744338157063, 	0.000000000000000, 	4.019216096811563, 	0.000000000000000, 	
+3.461021102549681, 	0.000000000000000, 	1.642352734361484, 	0.000000000000000, 	-0.046354693720813, 	0.000000000000000, 	-0.041936252359677, 	0.000000000000000, 	
+-2.393307519480551, 	0.000000000000000, 	-0.341471634615121, 	0.000000000000000, 	-0.392073595257017, 	0.000000000000000, 	-0.219299018372730, 	0.000000000000000, 	
+-2.016391579662071, 	0.000000000000000, 	-0.653096251969787, 	0.000000000000000, 	1.466353155666821, 	0.000000000000000, 	-2.872058864320412, 	0.000000000000000, 	
+-2.157180779503830, 	0.000000000000000, 	0.723257479841560, 	0.000000000000000, 	3.769951308104384, 	0.000000000000000, 	-1.923392042420024, 	0.000000000000000, 	
+0.644899359942840, 	0.000000000000000, 	-2.090226891621437, 	0.000000000000000, 	-0.277043982890403, 	0.000000000000000, 	-0.528271428321112, 	0.000000000000000, 	
+2.518120645960652, 	0.000000000000000, 	1.040820431111488, 	0.000000000000000, 	-4.560583754742486, 	0.000000000000000, 	-0.226899614918836, 	0.000000000000000, 	
+1.713331231108959, 	0.000000000000000, 	-3.293941019163642, 	0.000000000000000, 	-1.113331444648290, 	0.000000000000000, 	-1.032308423149906, 	0.000000000000000, 	
+1.593774272982443, 	0.000000000000000, 	-1.246840475090529, 	0.000000000000000, 	-0.190344684920137, 	0.000000000000000, 	-1.719386356896355, 	0.000000000000000, 	
+-2.827721754659679, 	0.000000000000000, 	-0.092438285279020, 	0.000000000000000, 	-0.565844430675246, 	0.000000000000000, 	-1.077916121691716, 	0.000000000000000, 	
+-1.208665809504693, 	0.000000000000000, 	-2.996014266381254, 	0.000000000000000, 	2.888573323402423, 	0.000000000000000, 	2.829507048720695, 	0.000000000000000, 	
+-0.859177034120755, 	0.000000000000000, 	-1.969302377743254, 	0.000000000000000, 	0.777437674525362, 	0.000000000000000, 	-0.124910190157646, 	0.000000000000000, 	
+0.129875493115290, 	0.000000000000000, 	-4.192139262163992, 	0.000000000000000, 	3.023496047962126, 	0.000000000000000, 	1.149775163736637, 	0.000000000000000, 	
+2.038151304801731, 	0.000000000000000, 	3.016122489841263, 	0.000000000000000, 	-4.829481812137012, 	0.000000000000000, 	-1.668436615909279, 	0.000000000000000, 	
+0.958586784636918, 	0.000000000000000, 	1.550652410058678, 	0.000000000000000, 	-1.456305257976716, 	0.000000000000000, 	-0.079588392344731, 	0.000000000000000, 	
+-2.453213599392345, 	0.000000000000000, 	0.296795909127105, 	0.000000000000000, 	-0.253426616607643, 	0.000000000000000, 	1.418937160028195, 	0.000000000000000, 	
+-1.672949529066915, 	0.000000000000000, 	-1.620990298572947, 	0.000000000000000, 	-1.085103073196045, 	0.000000000000000, 	0.738606361195386, 	0.000000000000000, 	
+-2.097831202853255, 	0.000000000000000, 	2.711952282071310, 	0.000000000000000, 	1.498539238246888, 	0.000000000000000, 	1.317457282535915, 	0.000000000000000, 	
+-0.302765938349717, 	0.000000000000000, 	-0.044623707947201, 	0.000000000000000, 	2.337405215062395, 	0.000000000000000, 	-3.980689173859100, 	0.000000000000000, 	
+
+
+};
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_fft_bin_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,158 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:	     arm_fft_bin_example_f32.c
+*
+* Description:   Example code demonstrating calculation of Max energy bin of
+*                frequency domain of input signal.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup FrequencyBin Frequency Bin Example
+ *
+ * \par Description
+ * \par
+ * Demonstrates the calculation of the maximum energy bin in the frequency
+ * domain of the input signal with the use of Complex FFT, Complex
+ * Magnitude, and Maximum functions.
+ *
+ * \par Algorithm:
+ * \par
+ * The input test signal contains a 10 kHz signal with uniformly distributed white noise.
+ * Calculating the FFT of the input signal will give us the maximum energy of the
+ * bin corresponding to the input frequency of 10 kHz.
+ *
+ * \par Block Diagram:
+ * \image html FFTBin.gif "Block Diagram"
+ * \par
+ * The figure below shows the time domain signal of 10 kHz signal with
+ * uniformly distributed white noise, and the next figure shows the input
+ * in the frequency domain. The bin with maximum energy corresponds to 10 kHz signal.
+ * \par
+ * \image html FFTBinInput.gif "Input signal in Time domain"
+ * \image html FFTBinOutput.gif "Input signal in Frequency domain"
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInput_f32_10khz points to the input data
+ * \li \c testOutput points to the output data
+ * \li \c fftSize length of FFT
+ * \li \c ifftFlag flag for the selection of CFFT/CIFFT
+ * \li \c doBitReverse Flag for selection of normal order or bit reversed order
+ * \li \c refIndex reference index value at which maximum energy of bin ocuurs
+ * \li \c testIndex calculated index value at which maximum energy of bin ocuurs
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_cfft_f32()
+ * - arm_cmplx_mag_f32()
+ * - arm_max_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_fft_bin_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_fft_bin_example_f32.c
+  */
+
+
+#include "arm_math.h"
+#include "arm_const_structs.h"
+
+#define TEST_LENGTH_SAMPLES 2048
+
+/* -------------------------------------------------------------------
+* External Input and Output buffer Declarations for FFT Bin Example
+* ------------------------------------------------------------------- */
+extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];
+static float32_t testOutput[TEST_LENGTH_SAMPLES/2];
+
+/* ------------------------------------------------------------------
+* Global variables for FFT Bin Example
+* ------------------------------------------------------------------- */
+uint32_t fftSize = 1024;
+uint32_t ifftFlag = 0;
+uint32_t doBitReverse = 1;
+
+/* Reference index at which max energy of bin ocuurs */
+uint32_t refIndex = 213, testIndex = 0;
+
+/* ----------------------------------------------------------------------
+* Max magnitude FFT Bin test
+* ------------------------------------------------------------------- */
+
+int32_t main(void)
+{
+
+  arm_status status;
+  float32_t maxValue;
+
+  status = ARM_MATH_SUCCESS;
+
+  /* Process the data through the CFFT/CIFFT module */
+  arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32_10khz, ifftFlag, doBitReverse);
+
+  /* Process the data through the Complex Magnitude Module for
+  calculating the magnitude at each bin */
+  arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize);
+
+  /* Calculates maxValue and returns corresponding BIN value */
+  arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);
+
+  if(testIndex !=  refIndex)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+  /* ----------------------------------------------------------------------
+  ** Loop here if the signals fail the PASS check.
+  ** This denotes a test failure
+  ** ------------------------------------------------------------------- */
+
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/GCC/arm_fft_bin_data.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,308 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	     	arm_fft_bin_data.c
+*   
+* Description:	 Data file used for example code
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+ * -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+Test Input signal contains 10KHz signal + Uniformly distributed white noise
+** ------------------------------------------------------------------- */
+
+float32_t testInput_f32_10khz[2048] = 
+{   
+-0.865129623056441, 	0.000000000000000, 	-2.655020678073846, 	0.000000000000000, 	0.600664612949661, 	0.000000000000000, 	0.080378093886515, 	0.000000000000000, 	
+-2.899160484012034, 	0.000000000000000, 	2.563004262857762, 	0.000000000000000, 	3.078328403304206, 	0.000000000000000, 	0.105906778385130, 	0.000000000000000, 	
+0.048366940168201, 	0.000000000000000, 	-0.145696461188734, 	0.000000000000000, 	-0.023417155362879, 	0.000000000000000, 	2.127729174988954, 	0.000000000000000, 	
+-1.176633086028377, 	0.000000000000000, 	3.690223557991855, 	0.000000000000000, 	-0.622791766173194, 	0.000000000000000, 	0.722837373872203, 	0.000000000000000, 	
+2.739754205367484, 	0.000000000000000, 	-0.062610410524552, 	0.000000000000000, 	-0.891296810967338, 	0.000000000000000, 	-1.845872258871811, 	0.000000000000000, 	
+1.195039415434387, 	0.000000000000000, 	-2.177388969045026, 	0.000000000000000, 	1.078649103637905, 	0.000000000000000, 	2.570976050490193, 	0.000000000000000, 	
+-1.383551403404574, 	0.000000000000000, 	2.392141424058873, 	0.000000000000000, 	2.858002843205065, 	0.000000000000000, 	-3.682433899725536, 	0.000000000000000, 	
+-3.488146646451150, 	0.000000000000000, 	1.323468578888120, 	0.000000000000000, 	-0.099771155430726, 	0.000000000000000, 	1.561168082500454, 	0.000000000000000, 	
+1.025026795103179, 	0.000000000000000, 	0.928841900171200, 	0.000000000000000, 	2.930499509864950, 	0.000000000000000, 	2.013349089766430, 	0.000000000000000, 	
+2.381676148486737, 	0.000000000000000, 	-3.081062307950236, 	0.000000000000000, 	-0.389579115537544, 	0.000000000000000, 	0.181540149166620, 	0.000000000000000, 	
+-2.601953341353208, 	0.000000000000000, 	0.333435137783218, 	0.000000000000000, 	-2.812945856162965, 	0.000000000000000, 	2.649109640172910, 	0.000000000000000, 	
+-1.003963025744654, 	0.000000000000000, 	1.552460768755035, 	0.000000000000000, 	0.088641345335247, 	0.000000000000000, 	-2.519951327113426, 	0.000000000000000, 	
+-4.341348988610527, 	0.000000000000000, 	0.557772429359965, 	0.000000000000000, 	-1.671267412948494, 	0.000000000000000, 	0.733951350960387, 	0.000000000000000, 	
+0.409263788034864, 	0.000000000000000, 	3.566033071952806, 	0.000000000000000, 	1.882565173848352, 	0.000000000000000, 	-1.106017073793287, 	0.000000000000000, 	
+0.154456720778718, 	0.000000000000000, 	-2.513205795512153, 	0.000000000000000, 	0.310978660939421, 	0.000000000000000, 	0.579706500111723, 	0.000000000000000, 	
+0.000086383683251, 	0.000000000000000, 	-1.311866980897721, 	0.000000000000000, 	1.840007477574986, 	0.000000000000000, 	-3.253005768451345, 	0.000000000000000, 	
+1.462584328739432, 	0.000000000000000, 	1.610103610851738, 	0.000000000000000, 	0.761914676858907, 	0.000000000000000, 	0.974541361089834, 	0.000000000000000, 	
+0.686845845885983, 	0.000000000000000, 	1.849153122025191, 	0.000000000000000, 	0.787800410401453, 	0.000000000000000, 	-1.187438909666279, 	0.000000000000000, 	
+-0.754937911044720, 	0.000000000000000, 	0.084373858395232, 	0.000000000000000, 	-2.600269011710521, 	0.000000000000000, 	-0.962982842142644, 	0.000000000000000, 	
+-0.369328108540868, 	0.000000000000000, 	0.810791418361879, 	0.000000000000000, 	3.587016488699641, 	0.000000000000000, 	-0.520776145083723, 	0.000000000000000, 	
+0.640249919627884, 	0.000000000000000, 	1.103122489464969, 	0.000000000000000, 	2.231779881455556, 	0.000000000000000, 	-1.308035392685241, 	0.000000000000000, 	
+0.424070304330106, 	0.000000000000000, 	-0.200383932651189, 	0.000000000000000, 	-2.365526783356541, 	0.000000000000000, 	-0.989114757436628, 	0.000000000000000, 	
+2.770807688959777, 	0.000000000000000, 	-0.444172737462307, 	0.000000000000000, 	0.079760979374078, 	0.000000000000000, 	-0.005199118412183, 	0.000000000000000, 	
+-0.664712668309527, 	0.000000000000000, 	-0.624171857561896, 	0.000000000000000, 	0.537306979007338, 	0.000000000000000, 	-2.575955675497642, 	0.000000000000000, 	
+1.562363235756780, 	0.000000000000000, 	1.814069369848895, 	0.000000000000000, 	-1.293428583392509, 	0.000000000000000, 	-1.026188449495686, 	0.000000000000000, 	
+-2.981771815588717, 	0.000000000000000, 	-4.223468103075124, 	0.000000000000000, 	2.672674782004045, 	0.000000000000000, 	-0.856096801117735, 	0.000000000000000, 	
+0.048517345512563, 	0.000000000000000, 	-0.026860721136222, 	0.000000000000000, 	0.392932277758187, 	0.000000000000000, 	-1.331740855093099, 	0.000000000000000, 	
+-1.894292129477081, 	0.000000000000000, 	-1.425006468460681, 	0.000000000000000, 	-2.721772427617057, 	0.000000000000000, 	-1.616831100216806, 	0.000000000000000, 	
+3.551177651488947, 	0.000000000000000, 	-0.069685667896087, 	0.000000000000000, 	-3.134634907409102, 	0.000000000000000, 	-0.263627598944639, 	0.000000000000000, 	
+-1.650469945991350, 	0.000000000000000, 	-2.203580339374399, 	0.000000000000000, 	-0.872203246123242, 	0.000000000000000, 	1.230782812607287, 	0.000000000000000, 	
+0.257288860093291, 	0.000000000000000, 	1.989083106173137, 	0.000000000000000, 	-1.985638729453261, 	0.000000000000000, 	-1.416185105842892, 	0.000000000000000, 	
+-1.131097688325772, 	0.000000000000000, 	-2.245130805416057, 	0.000000000000000, 	-1.938873996219074, 	0.000000000000000, 	2.043608361562645, 	0.000000000000000, 	
+-0.583727989880841, 	0.000000000000000, 	-1.785266378212929, 	0.000000000000000, 	1.961457586224753, 	0.000000000000000, 	1.139400099963223, 	0.000000000000000, 	
+-1.979519343363991, 	0.000000000000000, 	2.003023322818429, 	0.000000000000000, 	0.229004069076829, 	0.000000000000000, 	3.452808862193135, 	0.000000000000000, 	
+2.882273808365857, 	0.000000000000000, 	-1.549450501844438, 	0.000000000000000, 	-3.283872089931876, 	0.000000000000000, 	-0.327025884099064, 	0.000000000000000, 	
+-0.054979977136430, 	0.000000000000000, 	-1.192280531479012, 	0.000000000000000, 	0.645539328365578, 	0.000000000000000, 	2.300832863404618, 	0.000000000000000, 	
+-1.092951789535240, 	0.000000000000000, 	-1.017368249363773, 	0.000000000000000, 	-0.142673056169787, 	0.000000000000000, 	0.831073544881250, 	0.000000000000000, 	
+-2.314612531587064, 	0.000000000000000, 	-2.221456299106321, 	0.000000000000000, 	0.460261143885226, 	0.000000000000000, 	0.050585301888595, 	0.000000000000000, 	
+0.364373329183988, 	0.000000000000000, 	-1.685956552069538, 	0.000000000000000, 	0.050664512351055, 	0.000000000000000, 	-0.193355783902718, 	0.000000000000000, 	
+-0.158660446046828, 	0.000000000000000, 	2.394156453841953, 	0.000000000000000, 	-1.562965718554525, 	0.000000000000000, 	-2.199750600869900, 	0.000000000000000, 	
+1.544984022381773, 	0.000000000000000, 	-1.988307216807315, 	0.000000000000000, 	-0.628240722541046, 	0.000000000000000, 	-1.436235771505429, 	0.000000000000000, 	
+1.677013691147313, 	0.000000000000000, 	1.600741781678228, 	0.000000000000000, 	-0.757380959134706, 	0.000000000000000, 	-4.784797439515566, 	0.000000000000000, 	
+0.265121462834569, 	0.000000000000000, 	3.862029485934378, 	0.000000000000000, 	2.386823577249430, 	0.000000000000000, 	-3.655779745436893, 	0.000000000000000, 	
+-0.763541621368016, 	0.000000000000000, 	-1.182140388432962, 	0.000000000000000, 	-1.349106114858063, 	0.000000000000000, 	-2.287533624396759, 	0.000000000000000, 	
+-0.028603745188423, 	0.000000000000000, 	-1.353580755934427, 	0.000000000000000, 	0.461602380352937, 	0.000000000000000, 	-0.059599055078928, 	0.000000000000000, 	
+-0.929946734342228, 	0.000000000000000, 	0.065773089295561, 	0.000000000000000, 	1.106565863102982, 	0.000000000000000, 	4.719295086373593, 	0.000000000000000, 	
+-2.108377703544395, 	0.000000000000000, 	-2.226393620240159, 	0.000000000000000, 	1.375668397437521, 	0.000000000000000, 	-0.960772428525443, 	0.000000000000000, 	
+-2.156313465390571, 	0.000000000000000, 	1.126060012375311, 	0.000000000000000, 	2.756485137030720, 	0.000000000000000, 	0.739639690862600, 	0.000000000000000, 	
+3.914769510295006, 	0.000000000000000, 	1.685232785586675, 	0.000000000000000, 	4.079058040970612, 	0.000000000000000, 	-1.174598301660513, 	0.000000000000000, 	
+-2.885776587275580, 	0.000000000000000, 	-0.241073635188767, 	0.000000000000000, 	3.080489872502403, 	0.000000000000000, 	-2.051244183999421, 	0.000000000000000, 	
+0.664330486845139, 	0.000000000000000, 	-1.697798999370016, 	0.000000000000000, 	1.452369423649782, 	0.000000000000000, 	-1.523532831019280, 	0.000000000000000, 	
+0.171981186587481, 	0.000000000000000, 	-4.685274721583927, 	0.000000000000000, 	-1.336175835319380, 	0.000000000000000, 	1.419070770428945, 	0.000000000000000, 	
+-0.035791601713475, 	0.000000000000000, 	2.291937971632081, 	0.000000000000000, 	-1.962559313450293, 	0.000000000000000, 	-4.831595589339301, 	0.000000000000000, 	
+-1.857055284000925, 	0.000000000000000, 	2.606271522635512, 	0.000000000000000, 	-0.576447978738030, 	0.000000000000000, 	0.082299166967720, 	0.000000000000000, 	
+1.888399453494614, 	0.000000000000000, 	-3.564705298046079, 	0.000000000000000, 	-0.939357831083889, 	0.000000000000000, 	-1.903578203697778, 	0.000000000000000, 	
+-2.642492215447250, 	0.000000000000000, 	-0.182990405251017, 	0.000000000000000, 	3.742026478011174, 	0.000000000000000, 	0.104295803798333, 	0.000000000000000, 	
+1.848678195370347, 	0.000000000000000, 	-1.887384346896369, 	0.000000000000000, 	0.365048973046045, 	0.000000000000000, 	-0.889638010354219, 	0.000000000000000, 	
+1.173877118428863, 	0.000000000000000, 	-1.178562827540109, 	0.000000000000000, 	0.610271645685184, 	0.000000000000000, 	1.831284815697871, 	0.000000000000000, 	
+0.449575390102283, 	0.000000000000000, 	1.597171905253443, 	0.000000000000000, 	3.918574971904773, 	0.000000000000000, 	0.868104027970404, 	0.000000000000000, 	
+0.582643134746494, 	0.000000000000000, 	2.321256382353331, 	0.000000000000000, 	-0.238118642223180, 	0.000000000000000, 	-2.890287868054370, 	0.000000000000000, 	
+0.970995414625622, 	0.000000000000000, 	0.666137930891283, 	0.000000000000000, 	-0.202435718709502, 	0.000000000000000, 	2.057930200518194, 	0.000000000000000, 	
+3.120583443719949, 	0.000000000000000, 	-0.863945271701041, 	0.000000000000000, 	0.906848893874630, 	0.000000000000000, 	-1.434124930222570, 	0.000000000000000, 	
+0.754659384848783, 	0.000000000000000, 	-5.224154442713778, 	0.000000000000000, 	2.330229744098967, 	0.000000000000000, 	1.113946320164698, 	0.000000000000000, 	
+0.523324920322840, 	0.000000000000000, 	1.750740911548348, 	0.000000000000000, 	-0.899333972913577, 	0.000000000000000, 	0.228705845203506, 	0.000000000000000, 	
+-1.934782624767648, 	0.000000000000000, 	-3.508386237231303, 	0.000000000000000, 	-2.107108523073510, 	0.000000000000000, 	0.380587645474815, 	0.000000000000000, 	
+-0.476200877183279, 	0.000000000000000, 	-2.172086712642198, 	0.000000000000000, 	1.795372535780299, 	0.000000000000000, 	-2.100318983391055, 	0.000000000000000, 	
+-0.022571122461405, 	0.000000000000000, 	0.674514020010955, 	0.000000000000000, 	-0.148872569390857, 	0.000000000000000, 	0.298175890592737, 	0.000000000000000, 	
+-1.134244492493590, 	0.000000000000000, 	-3.146848422289455, 	0.000000000000000, 	-1.357950199087602, 	0.000000000000000, 	0.667362732020878, 	0.000000000000000, 	
+-3.119397998316724, 	0.000000000000000, 	-1.189341126297637, 	0.000000000000000, 	-1.532744386856668, 	0.000000000000000, 	-1.672972484202534, 	0.000000000000000, 	
+-2.042283373871558, 	0.000000000000000, 	-1.479481547595924, 	0.000000000000000, 	-0.002668662875396, 	0.000000000000000, 	0.262737760129546, 	0.000000000000000, 	
+2.734456080621830, 	0.000000000000000, 	-0.671945925075102, 	0.000000000000000, 	-3.735078262179111, 	0.000000000000000, 	-0.161705013319883, 	0.000000000000000, 	
+0.748963512361001, 	0.000000000000000, 	1.128046374367600, 	0.000000000000000, 	0.649651335592966, 	0.000000000000000, 	1.880020215025867, 	0.000000000000000, 	
+-1.095632293842306, 	0.000000000000000, 	1.197764876160487, 	0.000000000000000, 	0.323646656252985, 	0.000000000000000, 	-1.655502751114502, 	0.000000000000000, 	
+3.666399062961496, 	0.000000000000000, 	-0.334060899735197, 	0.000000000000000, 	-2.119056978738397, 	0.000000000000000, 	3.721375117275012, 	0.000000000000000, 	
+0.044874186872307, 	0.000000000000000, 	-2.733053897593234, 	0.000000000000000, 	1.590700278891042, 	0.000000000000000, 	3.215711772781902, 	0.000000000000000, 	
+-1.792085012843801, 	0.000000000000000, 	-0.405797188885475, 	0.000000000000000, 	-0.628080020080892, 	0.000000000000000, 	-1.831815840843960, 	0.000000000000000, 	
+2.973656862522834, 	0.000000000000000, 	-0.212032655138417, 	0.000000000000000, 	0.372437389437234, 	0.000000000000000, 	-1.614030579023492, 	0.000000000000000, 	
+-0.704900996358698, 	0.000000000000000, 	1.123700273452105, 	0.000000000000000, 	-0.136371848130819, 	0.000000000000000, 	3.020284357635585, 	0.000000000000000, 	
+-0.550211350877649, 	0.000000000000000, 	5.101256236381711, 	0.000000000000000, 	3.367051512192333, 	0.000000000000000, 	-4.385131946669234, 	0.000000000000000, 	
+-3.967303337694391, 	0.000000000000000, 	-0.965894936640022, 	0.000000000000000, 	0.328366945264681, 	0.000000000000000, 	0.199041562924914, 	0.000000000000000, 	
+1.067681999025495, 	0.000000000000000, 	-1.939516091697170, 	0.000000000000000, 	-1.092980954328824, 	0.000000000000000, 	0.273786079368066, 	0.000000000000000, 	
+-0.040928322190265, 	0.000000000000000, 	-0.118368078577437, 	0.000000000000000, 	1.766589628899997, 	0.000000000000000, 	1.738321311635393, 	0.000000000000000, 	
+-2.895012794321649, 	0.000000000000000, 	1.213521771395142, 	0.000000000000000, 	0.922971726633985, 	0.000000000000000, 	1.091516563636489, 	0.000000000000000, 	
+3.226378465469620, 	0.000000000000000, 	1.149169778666974, 	0.000000000000000, 	-1.695986327709386, 	0.000000000000000, 	-0.974803077355813, 	0.000000000000000, 	
+-4.898035507513607, 	0.000000000000000, 	1.622719302889447, 	0.000000000000000, 	0.583891313586579, 	0.000000000000000, 	-1.677182424094957, 	0.000000000000000, 	
+-1.915633132814685, 	0.000000000000000, 	-1.980150370851616, 	0.000000000000000, 	0.604538269404190, 	0.000000000000000, 	0.939862406149365, 	0.000000000000000, 	
+-1.266939874246416, 	0.000000000000000, 	-1.494771249200063, 	0.000000000000000, 	0.278042784093988, 	0.000000000000000, 	0.326627416008916, 	0.000000000000000, 	
+-1.914530157643303, 	0.000000000000000, 	1.908947721862196, 	0.000000000000000, 	0.531819285694044, 	0.000000000000000, 	3.056856632319658, 	0.000000000000000, 	
+-0.389241827774643, 	0.000000000000000, 	-2.418606606780420, 	0.000000000000000, 	0.915299238878703, 	0.000000000000000, 	-0.098774174295283, 	0.000000000000000, 	
+-0.906199428444304, 	0.000000000000000, 	0.316716451217743, 	0.000000000000000, 	-4.367700643578311, 	0.000000000000000, 	1.491687997515293, 	0.000000000000000, 	
+-1.962381126288365, 	0.000000000000000, 	-0.700829196527045, 	0.000000000000000, 	3.028958963615630, 	0.000000000000000, 	-2.313461067462598, 	0.000000000000000, 	
+-1.431933239886712, 	0.000000000000000, 	-0.831153039725342, 	0.000000000000000, 	3.939495598250743, 	0.000000000000000, 	0.342974753984771, 	0.000000000000000, 	
+-2.768330763002974, 	0.000000000000000, 	-2.744010370019008, 	0.000000000000000, 	3.821352685212561, 	0.000000000000000, 	4.551065271455856, 	0.000000000000000, 	
+3.270136437041298, 	0.000000000000000, 	-3.188028411950982, 	0.000000000000000, 	-0.777075012417436, 	0.000000000000000, 	0.097110650265216, 	0.000000000000000, 	
+1.221216137608812, 	0.000000000000000, 	-1.325824244541822, 	0.000000000000000, 	-2.655296734084113, 	0.000000000000000, 	-1.074792144885704, 	0.000000000000000, 	
+2.770401584439407, 	0.000000000000000, 	5.240270645610543, 	0.000000000000000, 	0.108576672208892, 	0.000000000000000, 	-1.209394350650142, 	0.000000000000000, 	
+1.403344353838785, 	0.000000000000000, 	-0.299032904177277, 	0.000000000000000, 	4.074959450638227, 	0.000000000000000, 	1.718727473952107, 	0.000000000000000, 	
+-3.061349227080806, 	0.000000000000000, 	-1.158596888541269, 	0.000000000000000, 	3.381858904662625, 	0.000000000000000, 	0.957339964054052, 	0.000000000000000, 	
+0.179900074904899, 	0.000000000000000, 	-3.909641902506081, 	0.000000000000000, 	0.805717289408649, 	0.000000000000000, 	2.047413793928261, 	0.000000000000000, 	
+-1.273580225826614, 	0.000000000000000, 	-2.681359186869971, 	0.000000000000000, 	-0.721241345822093, 	0.000000000000000, 	-1.613090681569475, 	0.000000000000000, 	
+0.463138804815955, 	0.000000000000000, 	0.377223507800954, 	0.000000000000000, 	2.046550684968141, 	0.000000000000000, 	0.178508732797712, 	0.000000000000000, 	
+-0.477815330358845, 	0.000000000000000, 	3.763355908332053, 	0.000000000000000, 	1.300430303035163, 	0.000000000000000, 	-0.214625793857725, 	0.000000000000000, 	
+1.343267891864081, 	0.000000000000000, 	-0.340007682433245, 	0.000000000000000, 	2.062703194680005, 	0.000000000000000, 	0.042032160234235, 	0.000000000000000, 	
+0.643732569732250, 	0.000000000000000, 	-1.913502543857589, 	0.000000000000000, 	3.771340762937158, 	0.000000000000000, 	1.050024807363386, 	0.000000000000000, 	
+-4.440489488592649, 	0.000000000000000, 	0.444904302066643, 	0.000000000000000, 	2.898702265650048, 	0.000000000000000, 	1.953232980548558, 	0.000000000000000, 	
+2.761564952735079, 	0.000000000000000, 	1.963537633260397, 	0.000000000000000, 	-2.168858472916215, 	0.000000000000000, 	-4.116235357699841, 	0.000000000000000, 	
+4.183678271896528, 	0.000000000000000, 	0.600422284944681, 	0.000000000000000, 	-0.659352647255126, 	0.000000000000000, 	-0.993127338218109, 	0.000000000000000, 	
+-2.463571314945747, 	0.000000000000000, 	0.937720951545881, 	0.000000000000000, 	-3.098957308429730, 	0.000000000000000, 	-2.354719140045463, 	0.000000000000000, 	
+-0.417285119323949, 	0.000000000000000, 	2.187974075975947, 	0.000000000000000, 	1.101468905172585, 	0.000000000000000, 	-3.185800678152109, 	0.000000000000000, 	
+2.357534709345083, 	0.000000000000000, 	0.246645606729407, 	0.000000000000000, 	4.440905650784504, 	0.000000000000000, 	-2.236807716637866, 	0.000000000000000, 	
+-2.171481518317550, 	0.000000000000000, 	-2.029571795072690, 	0.000000000000000, 	0.135599790431348, 	0.000000000000000, 	-1.277965265520191, 	0.000000000000000, 	
+-1.927976233157507, 	0.000000000000000, 	-5.434492783745394, 	0.000000000000000, 	-2.026375829312657, 	0.000000000000000, 	1.009666016819321, 	0.000000000000000, 	
+0.238549782367247, 	0.000000000000000, 	-0.516403923971309, 	0.000000000000000, 	-0.933977817429352, 	0.000000000000000, 	0.155803015935614, 	0.000000000000000, 	
+-0.396194809997929, 	0.000000000000000, 	-0.915178100253214, 	0.000000000000000, 	0.666329367985015, 	0.000000000000000, 	-1.517991149945785, 	0.000000000000000, 	
+0.458266744144822, 	0.000000000000000, 	-1.242845974381418, 	0.000000000000000, 	0.057914823556477, 	0.000000000000000, 	0.994101307476875, 	0.000000000000000, 	
+-2.387209849199325, 	0.000000000000000, 	0.459297048883826, 	0.000000000000000, 	0.227711405683905, 	0.000000000000000, 	0.030255073506117, 	0.000000000000000, 	
+-1.323361608181337, 	0.000000000000000, 	-4.650244457426706, 	0.000000000000000, 	0.062908579526021, 	0.000000000000000, 	3.462831028244432, 	0.000000000000000, 	
+1.303608183314856, 	0.000000000000000, 	-1.430415193881612, 	0.000000000000000, 	-1.672886118942142, 	0.000000000000000, 	0.992890699210099, 	0.000000000000000, 	
+-0.160814531784247, 	0.000000000000000, 	-1.238132939350430, 	0.000000000000000, 	-0.589223271459376, 	0.000000000000000, 	2.326363810561534, 	0.000000000000000, 	
+-4.433789496230785, 	0.000000000000000, 	1.664686987538929, 	0.000000000000000, 	-2.366128834617921, 	0.000000000000000, 	1.212421570743837, 	0.000000000000000, 	
+-4.847914267690055, 	0.000000000000000, 	0.228485221404712, 	0.000000000000000, 	0.466139765470957, 	0.000000000000000, 	-1.344202776943546, 	0.000000000000000, 	
+-1.012053673330574, 	0.000000000000000, 	-2.844980626424742, 	0.000000000000000, 	-1.552703722026340, 	0.000000000000000, 	-1.448830983885038, 	0.000000000000000, 	
+0.127010756753980, 	0.000000000000000, 	-1.667188263752299, 	0.000000000000000, 	3.424818052085100, 	0.000000000000000, 	0.956291135453840, 	0.000000000000000, 	
+-3.725533331754662, 	0.000000000000000, 	-1.584534272368832, 	0.000000000000000, 	-1.654148210472472, 	0.000000000000000, 	0.701610500675698, 	0.000000000000000, 	
+0.164954538683927, 	0.000000000000000, 	-0.739260064712987, 	0.000000000000000, 	-2.167324026090101, 	0.000000000000000, 	-0.310240491909496, 	0.000000000000000, 	
+-2.281790349106906, 	0.000000000000000, 	1.719655331305361, 	0.000000000000000, 	-2.997005923606441, 	0.000000000000000, 	-1.999301431556852, 	0.000000000000000, 	
+-0.292229010068828, 	0.000000000000000, 	1.172317994855851, 	0.000000000000000, 	0.196734885241533, 	0.000000000000000, 	2.981365193477068, 	0.000000000000000, 	
+2.637726016926352, 	0.000000000000000, 	1.434045125217982, 	0.000000000000000, 	0.883627180451827, 	0.000000000000000, 	-1.434040761445747, 	0.000000000000000, 	
+-1.528891971086553, 	0.000000000000000, 	-3.306913135367542, 	0.000000000000000, 	-0.399059265470646, 	0.000000000000000, 	-0.265674394285178, 	0.000000000000000, 	
+3.502591252855384, 	0.000000000000000, 	0.830301156604454, 	0.000000000000000, 	-0.220021317046083, 	0.000000000000000, 	-0.090553770476646, 	0.000000000000000, 	
+0.771863477047951, 	0.000000000000000, 	1.351209629105760, 	0.000000000000000, 	3.773699756201963, 	0.000000000000000, 	0.472600118752329, 	0.000000000000000, 	
+2.332825668012222, 	0.000000000000000, 	1.853747950314528, 	0.000000000000000, 	0.759515251766178, 	0.000000000000000, 	1.327112776215496, 	0.000000000000000, 	
+2.518730296237868, 	0.000000000000000, 	0.764450208786353, 	0.000000000000000, 	-0.278275349491296, 	0.000000000000000, 	-0.041559465082020, 	0.000000000000000, 	
+1.387166083167787, 	0.000000000000000, 	2.612996769598122, 	0.000000000000000, 	-0.385404831721799, 	0.000000000000000, 	2.005630016170309, 	0.000000000000000, 	
+-0.950500047307998, 	0.000000000000000, 	-1.166884021392492, 	0.000000000000000, 	1.432973552928162, 	0.000000000000000, 	2.540370505384567, 	0.000000000000000, 	
+-1.140505295054501, 	0.000000000000000, 	-3.673358835201185, 	0.000000000000000, 	-0.450691288038056, 	0.000000000000000, 	1.601024294408014, 	0.000000000000000, 	
+0.773213556014045, 	0.000000000000000, 	2.973873693246168, 	0.000000000000000, 	-1.361548406382279, 	0.000000000000000, 	1.409136332424815, 	0.000000000000000, 	
+-0.963382518314713, 	0.000000000000000, 	-2.031268227368161, 	0.000000000000000, 	0.983309972085586, 	0.000000000000000, 	-3.461412488471631, 	0.000000000000000, 	
+-2.601124929406039, 	0.000000000000000, 	-0.533896239766343, 	0.000000000000000, 	-2.627129008866350, 	0.000000000000000, 	0.622111169161305, 	0.000000000000000, 	
+-1.160926365580422, 	0.000000000000000, 	-2.406196188132628, 	0.000000000000000, 	-1.076870362758737, 	0.000000000000000, 	-1.791866820937175, 	0.000000000000000, 	
+-0.749453071522325, 	0.000000000000000, 	-5.324156615990973, 	0.000000000000000, 	-1.038698022238289, 	0.000000000000000, 	-2.106629944730630, 	0.000000000000000, 	
+0.659295598564773, 	0.000000000000000, 	0.520940881580988, 	0.000000000000000, 	-0.055649203928700, 	0.000000000000000, 	0.292096765423137, 	0.000000000000000, 	
+-4.663743901790872, 	0.000000000000000, 	-0.125066503391666, 	0.000000000000000, 	-2.452620252445380, 	0.000000000000000, 	-0.712128227397468, 	0.000000000000000, 	
+-0.048938037970968, 	0.000000000000000, 	-1.821520226003361, 	0.000000000000000, 	0.810106421304257, 	0.000000000000000, 	-0.196636623956257, 	0.000000000000000, 	
+-0.701769836763804, 	0.000000000000000, 	2.460345045649201, 	0.000000000000000, 	3.506597671641116, 	0.000000000000000, 	-2.711322611972225, 	0.000000000000000, 	
+-0.658079876600542, 	0.000000000000000, 	-2.040082099646173, 	0.000000000000000, 	2.201668355395807, 	0.000000000000000, 	1.181507395879711, 	0.000000000000000, 	
+-1.640739552179682, 	0.000000000000000, 	-1.613393726467190, 	0.000000000000000, 	-1.156741241731352, 	0.000000000000000, 	2.527773464519963, 	0.000000000000000, 	
+-0.497040638009502, 	0.000000000000000, 	-0.975817112895589, 	0.000000000000000, 	-2.866830755546166, 	0.000000000000000, 	1.120214498507878, 	0.000000000000000, 	
+5.986771654661698, 	0.000000000000000, 	0.398219252656757, 	0.000000000000000, 	-3.545606013198135, 	0.000000000000000, 	0.312398099396191, 	0.000000000000000, 	
+-2.265327979531788, 	0.000000000000000, 	0.792121001107366, 	0.000000000000000, 	-3.736145137670100, 	0.000000000000000, 	0.762228883650802, 	0.000000000000000, 	
+2.283545661214646, 	0.000000000000000, 	3.780020629583529, 	0.000000000000000, 	3.117260228608810, 	0.000000000000000, 	-2.011159255609613, 	0.000000000000000, 	
+0.279107700476072, 	0.000000000000000, 	2.003369134246936, 	0.000000000000000, 	-1.448171234480257, 	0.000000000000000, 	0.584697150310140, 	0.000000000000000, 	
+0.919508663636197, 	0.000000000000000, 	-3.071349141675388, 	0.000000000000000, 	-1.555923649263667, 	0.000000000000000, 	2.232497079438850, 	0.000000000000000, 	
+-0.012662139119883, 	0.000000000000000, 	0.372825540734715, 	0.000000000000000, 	2.378543590847629, 	0.000000000000000, 	1.459053407813062, 	0.000000000000000, 	
+-0.967913907390927, 	0.000000000000000, 	1.322825200678212, 	0.000000000000000, 	-1.033775820061824, 	0.000000000000000, 	-1.813629552693142, 	0.000000000000000, 	
+4.794348161661486, 	0.000000000000000, 	0.655279811518676, 	0.000000000000000, 	-2.224590138589720, 	0.000000000000000, 	0.595329481295766, 	0.000000000000000, 	
+3.364055988866225, 	0.000000000000000, 	1.863416422998127, 	0.000000000000000, 	1.930305751828105, 	0.000000000000000, 	-0.284467053432545, 	0.000000000000000, 	
+-0.923374905878938, 	0.000000000000000, 	1.922988234041399, 	0.000000000000000, 	0.310482143432719, 	0.000000000000000, 	0.332122302397134, 	0.000000000000000, 	
+-1.659487472408966, 	0.000000000000000, 	-1.865943507877961, 	0.000000000000000, 	-0.186775297569864, 	0.000000000000000, 	-1.700543850628361, 	0.000000000000000, 	
+0.497157959366735, 	0.000000000000000, 	-0.471244843957418, 	0.000000000000000, 	-0.432013753969948, 	0.000000000000000, 	-4.000189880113231, 	0.000000000000000, 	
+-0.415335170016467, 	0.000000000000000, 	0.317311950972859, 	0.000000000000000, 	0.038393428927595, 	0.000000000000000, 	0.177219909465206, 	0.000000000000000, 	
+0.531650958095143, 	0.000000000000000, 	-2.711644985175806, 	0.000000000000000, 	0.328744077805156, 	0.000000000000000, 	-0.938417707547928, 	0.000000000000000, 	
+0.970379584897379, 	0.000000000000000, 	1.873649473917137, 	0.000000000000000, 	0.177938226987023, 	0.000000000000000, 	0.155609346302393, 	0.000000000000000, 	
+-1.276504241867208, 	0.000000000000000, 	-0.463725075928807, 	0.000000000000000, 	-0.064748250389500, 	0.000000000000000, 	-1.725568534062385, 	0.000000000000000, 	
+-0.139066584804067, 	0.000000000000000, 	1.975514554117767, 	0.000000000000000, 	-0.807063199499478, 	0.000000000000000, 	-0.326926659682788, 	0.000000000000000, 	
+1.445727032487938, 	0.000000000000000, 	-0.597151107739100, 	0.000000000000000, 	2.732557531709386, 	0.000000000000000, 	-2.907130934109188, 	0.000000000000000, 	
+-1.461264832679981, 	0.000000000000000, 	-1.708588604968163, 	0.000000000000000, 	3.652851925431363, 	0.000000000000000, 	0.682050868282879, 	0.000000000000000, 	
+-0.281312579963294, 	0.000000000000000, 	0.554966483307825, 	0.000000000000000, 	-0.981341739340932, 	0.000000000000000, 	1.279543331141603, 	0.000000000000000, 	
+0.036589747826856, 	0.000000000000000, 	2.312073745896073, 	0.000000000000000, 	1.754682200732425, 	0.000000000000000, 	-0.957515875428627, 	0.000000000000000, 	
+-0.833596942819695, 	0.000000000000000, 	0.437054368791033, 	0.000000000000000, 	-0.898819399360279, 	0.000000000000000, 	-0.296050580896839, 	0.000000000000000, 	
+-0.785144257649601, 	0.000000000000000, 	-2.541503089003311, 	0.000000000000000, 	2.225075846758761, 	0.000000000000000, 	-1.587290487902002, 	0.000000000000000, 	
+-1.421404172056462, 	0.000000000000000, 	-3.015149802293631, 	0.000000000000000, 	1.780874288867949, 	0.000000000000000, 	-0.865812740882613, 	0.000000000000000, 	
+-2.845327531197112, 	0.000000000000000, 	1.445225867774367, 	0.000000000000000, 	2.183733236584647, 	0.000000000000000, 	1.163371072749080, 	0.000000000000000, 	
+0.883547693520409, 	0.000000000000000, 	-1.224093106684675, 	0.000000000000000, 	-1.854501116331044, 	0.000000000000000, 	1.783082089255796, 	0.000000000000000, 	
+2.301508706196191, 	0.000000000000000, 	-0.539901944139077, 	0.000000000000000, 	1.962315832319967, 	0.000000000000000, 	-0.060709041870503, 	0.000000000000000, 	
+-1.353139923300238, 	0.000000000000000, 	-1.482887537805234, 	0.000000000000000, 	1.273732601967176, 	0.000000000000000, 	-3.456609915556321, 	0.000000000000000, 	
+-3.752320586540873, 	0.000000000000000, 	3.536356614978951, 	0.000000000000000, 	0.206035952043233, 	0.000000000000000, 	5.933966913773842, 	0.000000000000000, 	
+-0.486633898075490, 	0.000000000000000, 	-0.329595089863342, 	0.000000000000000, 	1.496414153905337, 	0.000000000000000, 	0.137868749388880, 	0.000000000000000, 	
+-0.437192030996792, 	0.000000000000000, 	2.682750615210656, 	0.000000000000000, 	-2.440234892848570, 	0.000000000000000, 	1.433910252426186, 	0.000000000000000, 	
+-0.415051506104074, 	0.000000000000000, 	1.982003013708649, 	0.000000000000000, 	1.345796609972435, 	0.000000000000000, 	-2.335949513404370, 	0.000000000000000, 	
+1.065988867433025, 	0.000000000000000, 	2.741844905000464, 	0.000000000000000, 	-1.754047930934362, 	0.000000000000000, 	0.229252730015575, 	0.000000000000000, 	
+-0.679791016408669, 	0.000000000000000, 	-2.274097820043743, 	0.000000000000000, 	0.149802252231876, 	0.000000000000000, 	-0.139697151364830, 	0.000000000000000, 	
+-2.773367420505435, 	0.000000000000000, 	-4.403400246165611, 	0.000000000000000, 	-1.468974515184135, 	0.000000000000000, 	0.664990623095844, 	0.000000000000000, 	
+-3.446979775557143, 	0.000000000000000, 	1.850006428987618, 	0.000000000000000, 	-1.550866747921936, 	0.000000000000000, 	-3.632874882935257, 	0.000000000000000, 	
+0.828039662992464, 	0.000000000000000, 	2.794055182632816, 	0.000000000000000, 	-0.593995716682633, 	0.000000000000000, 	0.142788156054200, 	0.000000000000000, 	
+0.552461945119668, 	0.000000000000000, 	0.842127129738758, 	0.000000000000000, 	1.414335509600077, 	0.000000000000000, 	-0.311559241382430, 	0.000000000000000, 	
+1.510590844695250, 	0.000000000000000, 	1.692217183824300, 	0.000000000000000, 	0.613760285711957, 	0.000000000000000, 	0.065233463207770, 	0.000000000000000, 	
+-2.571912893711505, 	0.000000000000000, 	-1.707001531141341, 	0.000000000000000, 	0.673884968382041, 	0.000000000000000, 	0.889863883420103, 	0.000000000000000, 	
+-2.395635435233346, 	0.000000000000000, 	1.129247296359819, 	0.000000000000000, 	0.569074704779735, 	0.000000000000000, 	6.139436017480722, 	0.000000000000000, 	
+0.822158309259017, 	0.000000000000000, 	-3.289872016222589, 	0.000000000000000, 	0.417612988384414, 	0.000000000000000, 	1.493982103868165, 	0.000000000000000, 	
+-0.415353391377005, 	0.000000000000000, 	0.288670764933155, 	0.000000000000000, 	-1.895650228872272, 	0.000000000000000, 	-0.139631694475020, 	0.000000000000000, 	
+1.445103299005436, 	0.000000000000000, 	2.877182243683429, 	0.000000000000000, 	1.192428490172580, 	0.000000000000000, 	-5.964591921763842, 	0.000000000000000, 	
+0.570859795882959, 	0.000000000000000, 	2.328333316356666, 	0.000000000000000, 	0.333755014930026, 	0.000000000000000, 	1.221901577771909, 	0.000000000000000, 	
+0.943358697415568, 	0.000000000000000, 	2.793063983613067, 	0.000000000000000, 	3.163005066073616, 	0.000000000000000, 	2.098300664513867, 	0.000000000000000, 	
+-3.915313164333447, 	0.000000000000000, 	-2.475766769064539, 	0.000000000000000, 	1.720472044894277, 	0.000000000000000, 	-1.273591949275665, 	0.000000000000000, 	
+-1.213451272938616, 	0.000000000000000, 	0.697439404325690, 	0.000000000000000, 	-0.309902287574293, 	0.000000000000000, 	2.622575852162781, 	0.000000000000000, 	
+-2.075881936219060, 	0.000000000000000, 	0.777847545691770, 	0.000000000000000, 	-3.967947986440650, 	0.000000000000000, 	-3.066503371806472, 	0.000000000000000, 	
+1.193780625937845, 	0.000000000000000, 	0.214246579281311, 	0.000000000000000, 	-2.610681491162162, 	0.000000000000000, 	-1.261224183972745, 	0.000000000000000, 	
+-1.165071748544285, 	0.000000000000000, 	-1.116548474834374, 	0.000000000000000, 	0.847202164846982, 	0.000000000000000, 	-3.474301529532390, 	0.000000000000000, 	
+0.020799541946476, 	0.000000000000000, 	-3.868995473288166, 	0.000000000000000, 	1.757979409638067, 	0.000000000000000, 	0.868115130183109, 	0.000000000000000, 	
+0.910167436737958, 	0.000000000000000, 	-1.878855115563720, 	0.000000000000000, 	1.710357104174161, 	0.000000000000000, 	-1.468933980990902, 	0.000000000000000, 	
+1.799544171601169, 	0.000000000000000, 	-4.922332880027887, 	0.000000000000000, 	0.219424548939720, 	0.000000000000000, 	-0.971671113451924, 	0.000000000000000, 	
+-0.940533475616266, 	0.000000000000000, 	0.122510114412152, 	0.000000000000000, 	-1.373686254916911, 	0.000000000000000, 	1.760348103896323, 	0.000000000000000, 	
+0.391745067829643, 	0.000000000000000, 	2.521958505327354, 	0.000000000000000, 	-1.300693516405092, 	0.000000000000000, 	-0.538251788309178, 	0.000000000000000, 	
+0.797184135810173, 	0.000000000000000, 	2.908800548982588, 	0.000000000000000, 	1.590902251655215, 	0.000000000000000, 	-1.070323714487264, 	0.000000000000000, 	
+-3.349764443340999, 	0.000000000000000, 	-1.190563529731447, 	0.000000000000000, 	1.363369471291963, 	0.000000000000000, 	-1.814270299924576, 	0.000000000000000, 	
+-0.023381588315711, 	0.000000000000000, 	1.719182048679569, 	0.000000000000000, 	0.839917213252626, 	0.000000000000000, 	1.006099633839122, 	0.000000000000000, 	
+0.812462674381527, 	0.000000000000000, 	1.755814336346739, 	0.000000000000000, 	2.546848681206319, 	0.000000000000000, 	-1.555300208869455, 	0.000000000000000, 	
+1.017053811631167, 	0.000000000000000, 	0.996591039170903, 	0.000000000000000, 	-1.228047247924881, 	0.000000000000000, 	4.809462271463009, 	0.000000000000000, 	
+2.318113116151685, 	0.000000000000000, 	-1.206932520679733, 	0.000000000000000, 	1.273757685623312, 	0.000000000000000, 	0.724335352481802, 	0.000000000000000, 	
+1.519876652073198, 	0.000000000000000, 	-2.749670314714158, 	0.000000000000000, 	3.424042481847581, 	0.000000000000000, 	-3.714668360421517, 	0.000000000000000, 	
+1.612834197004014, 	0.000000000000000, 	-2.038234723985566, 	0.000000000000000, 	1.470938786562152, 	0.000000000000000, 	2.111634918450302, 	0.000000000000000, 	
+1.030376670151787, 	0.000000000000000, 	-0.420877189003829, 	0.000000000000000, 	-1.502024800532894, 	0.000000000000000, 	0.452310749163804, 	0.000000000000000, 	
+-1.606059382300987, 	0.000000000000000, 	-4.006159967834147, 	0.000000000000000, 	-2.152801208196508, 	0.000000000000000, 	1.671674089372579, 	0.000000000000000, 	
+1.714536333564101, 	0.000000000000000, 	-1.011518543005344, 	0.000000000000000, 	-0.576410282180584, 	0.000000000000000, 	0.733689809480836, 	0.000000000000000, 	
+1.004245602717974, 	0.000000000000000, 	1.010090391888449, 	0.000000000000000, 	3.811459513385621, 	0.000000000000000, 	-5.230621089271954, 	0.000000000000000, 	
+0.678044861034399, 	0.000000000000000, 	1.255935859598107, 	0.000000000000000, 	1.674521701615288, 	0.000000000000000, 	-1.656695216761705, 	0.000000000000000, 	
+1.169286028869693, 	0.000000000000000, 	0.524915416191998, 	0.000000000000000, 	2.397642885039520, 	0.000000000000000, 	2.108711400616072, 	0.000000000000000, 	
+2.037618211018084, 	0.000000000000000, 	-0.623664553406925, 	0.000000000000000, 	2.984106170984409, 	0.000000000000000, 	1.132182737400932, 	0.000000000000000, 	
+-2.859274340352130, 	0.000000000000000, 	-0.975550071398723, 	0.000000000000000, 	-1.359935119997407, 	0.000000000000000, 	-2.963308211050121, 	0.000000000000000, 	
+-0.228726662781163, 	0.000000000000000, 	-1.411110379682043, 	0.000000000000000, 	0.741553355734225, 	0.000000000000000, 	0.497554254758309, 	0.000000000000000, 	
+2.371907950598855, 	0.000000000000000, 	1.063465168988748, 	0.000000000000000, 	-0.641082692081488, 	0.000000000000000, 	-0.855439878540726, 	0.000000000000000, 	
+0.578321738578726, 	0.000000000000000, 	3.005809768796194, 	0.000000000000000, 	1.961458699064065, 	0.000000000000000, 	-3.206261663772745, 	0.000000000000000, 	
+-0.364431989095434, 	0.000000000000000, 	-0.263182496622273, 	0.000000000000000, 	1.843464680631139, 	0.000000000000000, 	-0.419107530229249, 	0.000000000000000, 	
+1.662335873298487, 	0.000000000000000, 	-0.853687563304005, 	0.000000000000000, 	-2.584133404357169, 	0.000000000000000, 	3.466839568922895, 	0.000000000000000, 	
+0.881671345091973, 	0.000000000000000, 	0.454620014206908, 	0.000000000000000, 	-1.737245187402739, 	0.000000000000000, 	2.162713238369243, 	0.000000000000000, 	
+-3.868539002714486, 	0.000000000000000, 	2.014114855933826, 	0.000000000000000, 	-0.703233831811006, 	0.000000000000000, 	-3.410319935997574, 	0.000000000000000, 	
+-1.851235811006584, 	0.000000000000000, 	0.909783907894036, 	0.000000000000000, 	0.091884002136728, 	0.000000000000000, 	-2.688294201131650, 	0.000000000000000, 	
+-0.906134178460955, 	0.000000000000000, 	3.475054609035133, 	0.000000000000000, 	-0.573927964170323, 	0.000000000000000, 	-0.429542937515399, 	0.000000000000000, 	
+0.991348618739939, 	0.000000000000000, 	1.974804904926325, 	0.000000000000000, 	0.975783450796698, 	0.000000000000000, 	-3.057119549071503, 	0.000000000000000, 	
+-3.899429237481194, 	0.000000000000000, 	0.362439009175350, 	0.000000000000000, 	-1.124461670265618, 	0.000000000000000, 	1.806000360163583, 	0.000000000000000, 	
+-2.768333362600288, 	0.000000000000000, 	0.244387897900379, 	0.000000000000000, 	0.908767296720926, 	0.000000000000000, 	1.254669374391882, 	0.000000000000000, 	
+-1.420441929463686, 	0.000000000000000, 	-0.875658895966293, 	0.000000000000000, 	0.183824603376167, 	0.000000000000000, 	-3.361653917011686, 	0.000000000000000, 	
+-0.796615630227952, 	0.000000000000000, 	-1.660226542658673, 	0.000000000000000, 	1.654439358307226, 	0.000000000000000, 	2.782812946709771, 	0.000000000000000, 	
+1.418064412811531, 	0.000000000000000, 	-0.819645647243761, 	0.000000000000000, 	0.807724772592699, 	0.000000000000000, 	-0.941967976379298, 	0.000000000000000, 	
+-2.312768306047469, 	0.000000000000000, 	0.872426936477443, 	0.000000000000000, 	0.919528961530845, 	0.000000000000000, 	-2.084904575264847, 	0.000000000000000, 	
+-1.972464868459322, 	0.000000000000000, 	-1.050687203338466, 	0.000000000000000, 	1.659579707007902, 	0.000000000000000, 	-1.820640014705855, 	0.000000000000000, 	
+-1.195078061671045, 	0.000000000000000, 	-1.639773173762048, 	0.000000000000000, 	1.616744338157063, 	0.000000000000000, 	4.019216096811563, 	0.000000000000000, 	
+3.461021102549681, 	0.000000000000000, 	1.642352734361484, 	0.000000000000000, 	-0.046354693720813, 	0.000000000000000, 	-0.041936252359677, 	0.000000000000000, 	
+-2.393307519480551, 	0.000000000000000, 	-0.341471634615121, 	0.000000000000000, 	-0.392073595257017, 	0.000000000000000, 	-0.219299018372730, 	0.000000000000000, 	
+-2.016391579662071, 	0.000000000000000, 	-0.653096251969787, 	0.000000000000000, 	1.466353155666821, 	0.000000000000000, 	-2.872058864320412, 	0.000000000000000, 	
+-2.157180779503830, 	0.000000000000000, 	0.723257479841560, 	0.000000000000000, 	3.769951308104384, 	0.000000000000000, 	-1.923392042420024, 	0.000000000000000, 	
+0.644899359942840, 	0.000000000000000, 	-2.090226891621437, 	0.000000000000000, 	-0.277043982890403, 	0.000000000000000, 	-0.528271428321112, 	0.000000000000000, 	
+2.518120645960652, 	0.000000000000000, 	1.040820431111488, 	0.000000000000000, 	-4.560583754742486, 	0.000000000000000, 	-0.226899614918836, 	0.000000000000000, 	
+1.713331231108959, 	0.000000000000000, 	-3.293941019163642, 	0.000000000000000, 	-1.113331444648290, 	0.000000000000000, 	-1.032308423149906, 	0.000000000000000, 	
+1.593774272982443, 	0.000000000000000, 	-1.246840475090529, 	0.000000000000000, 	-0.190344684920137, 	0.000000000000000, 	-1.719386356896355, 	0.000000000000000, 	
+-2.827721754659679, 	0.000000000000000, 	-0.092438285279020, 	0.000000000000000, 	-0.565844430675246, 	0.000000000000000, 	-1.077916121691716, 	0.000000000000000, 	
+-1.208665809504693, 	0.000000000000000, 	-2.996014266381254, 	0.000000000000000, 	2.888573323402423, 	0.000000000000000, 	2.829507048720695, 	0.000000000000000, 	
+-0.859177034120755, 	0.000000000000000, 	-1.969302377743254, 	0.000000000000000, 	0.777437674525362, 	0.000000000000000, 	-0.124910190157646, 	0.000000000000000, 	
+0.129875493115290, 	0.000000000000000, 	-4.192139262163992, 	0.000000000000000, 	3.023496047962126, 	0.000000000000000, 	1.149775163736637, 	0.000000000000000, 	
+2.038151304801731, 	0.000000000000000, 	3.016122489841263, 	0.000000000000000, 	-4.829481812137012, 	0.000000000000000, 	-1.668436615909279, 	0.000000000000000, 	
+0.958586784636918, 	0.000000000000000, 	1.550652410058678, 	0.000000000000000, 	-1.456305257976716, 	0.000000000000000, 	-0.079588392344731, 	0.000000000000000, 	
+-2.453213599392345, 	0.000000000000000, 	0.296795909127105, 	0.000000000000000, 	-0.253426616607643, 	0.000000000000000, 	1.418937160028195, 	0.000000000000000, 	
+-1.672949529066915, 	0.000000000000000, 	-1.620990298572947, 	0.000000000000000, 	-1.085103073196045, 	0.000000000000000, 	0.738606361195386, 	0.000000000000000, 	
+-2.097831202853255, 	0.000000000000000, 	2.711952282071310, 	0.000000000000000, 	1.498539238246888, 	0.000000000000000, 	1.317457282535915, 	0.000000000000000, 	
+-0.302765938349717, 	0.000000000000000, 	-0.044623707947201, 	0.000000000000000, 	2.337405215062395, 	0.000000000000000, 	-3.980689173859100, 	0.000000000000000, 	
+
+
+};
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/GCC/arm_fft_bin_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,158 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:	     arm_fft_bin_example_f32.c
+*
+* Description:   Example code demonstrating calculation of Max energy bin of
+*                frequency domain of input signal.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup FrequencyBin Frequency Bin Example
+ *
+ * \par Description
+ * \par
+ * Demonstrates the calculation of the maximum energy bin in the frequency
+ * domain of the input signal with the use of Complex FFT, Complex
+ * Magnitude, and Maximum functions.
+ *
+ * \par Algorithm:
+ * \par
+ * The input test signal contains a 10 kHz signal with uniformly distributed white noise.
+ * Calculating the FFT of the input signal will give us the maximum energy of the
+ * bin corresponding to the input frequency of 10 kHz.
+ *
+ * \par Block Diagram:
+ * \image html FFTBin.gif "Block Diagram"
+ * \par
+ * The figure below shows the time domain signal of 10 kHz signal with
+ * uniformly distributed white noise, and the next figure shows the input
+ * in the frequency domain. The bin with maximum energy corresponds to 10 kHz signal.
+ * \par
+ * \image html FFTBinInput.gif "Input signal in Time domain"
+ * \image html FFTBinOutput.gif "Input signal in Frequency domain"
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInput_f32_10khz points to the input data
+ * \li \c testOutput points to the output data
+ * \li \c fftSize length of FFT
+ * \li \c ifftFlag flag for the selection of CFFT/CIFFT
+ * \li \c doBitReverse Flag for selection of normal order or bit reversed order
+ * \li \c refIndex reference index value at which maximum energy of bin ocuurs
+ * \li \c testIndex calculated index value at which maximum energy of bin ocuurs
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_cfft_f32()
+ * - arm_cmplx_mag_f32()
+ * - arm_max_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_fft_bin_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_fft_bin_example_f32.c
+  */
+
+
+#include "arm_math.h"
+#include "arm_const_structs.h"
+
+#define TEST_LENGTH_SAMPLES 2048
+
+/* -------------------------------------------------------------------
+* External Input and Output buffer Declarations for FFT Bin Example
+* ------------------------------------------------------------------- */
+extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];
+static float32_t testOutput[TEST_LENGTH_SAMPLES/2];
+
+/* ------------------------------------------------------------------
+* Global variables for FFT Bin Example
+* ------------------------------------------------------------------- */
+uint32_t fftSize = 1024;
+uint32_t ifftFlag = 0;
+uint32_t doBitReverse = 1;
+
+/* Reference index at which max energy of bin ocuurs */
+uint32_t refIndex = 213, testIndex = 0;
+
+/* ----------------------------------------------------------------------
+* Max magnitude FFT Bin test
+* ------------------------------------------------------------------- */
+
+int32_t main(void)
+{
+
+  arm_status status;
+  float32_t maxValue;
+
+  status = ARM_MATH_SUCCESS;
+
+  /* Process the data through the CFFT/CIFFT module */
+  arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32_10khz, ifftFlag, doBitReverse);
+
+  /* Process the data through the Complex Magnitude Module for
+  calculating the magnitude at each bin */
+  arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize);
+
+  /* Calculates maxValue and returns corresponding BIN value */
+  arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);
+
+  if(testIndex !=  refIndex)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+  /* ----------------------------------------------------------------------
+  ** Loop here if the signals fail the PASS check.
+  ** This denotes a test failure
+  ** ------------------------------------------------------------------- */
+
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_fir_data.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,134 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	     	arm_fir_data.c
+*   
+* Description:	 Data file used for example code
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+ * -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+** Test input signal contains 1000Hz + 15000 Hz
+** ------------------------------------------------------------------- */
+
+float32_t testInput_f32_1kHz_15kHz[320] =
+{
++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, 
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, 
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, 
+-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, 
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, 
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, 
++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, 
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, 
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, 
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, 
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, 
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, 
++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, 
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, 
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, 
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, 
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, 
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, 
+-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, 
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, 
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, 
+-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, 
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, 
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, 
++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, 
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, 
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, 
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, 
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, 
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, 
+-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, 
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, 
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, 
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, 
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, 
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, 
+-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, 
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, 
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, 
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, 
+};
+
+float32_t refOutput[320] = 
+{
++0.0000000000f, -0.0010797829f, -0.0007681386f, -0.0001982932f, +0.0000644313f, +0.0020854271f, +0.0036891871f, +0.0015855941f, 
+-0.0026280805f, -0.0075907658f, -0.0119390538f, -0.0086665968f, +0.0088981202f, +0.0430539279f, +0.0974468742f, +0.1740405600f, 
++0.2681416601f, +0.3747720089f, +0.4893362230f, +0.6024154672f, +0.7058740791f, +0.7968348987f, +0.8715901940f, +0.9277881093f, 
++0.9682182661f, +0.9934674267f, +1.0012052245f, +0.9925859371f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, 
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, 
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, 
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, 
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, 
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, 
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, 
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, 
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, 
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, 
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, 
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, 
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, 
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, 
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, 
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, 
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, 
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, 
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, 
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, 
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, 
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, 
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, 
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, 
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, 
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, 
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, 
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, 
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, -0.0000000000f, +0.1309866321f, 
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, 
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, 
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, 
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, 
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, 
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, 
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, 
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f 
+};
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_fir_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,233 @@
+/* ----------------------------------------------------------------------
+ * Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+ *
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+ * Title:        arm_fir_example_f32.c
+ *
+ * Description:  Example code demonstrating how an FIR filter can be used
+ *               as a low pass filter.
+ *
+ * Target Processor: Cortex-M4/Cortex-M3
+ *
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup FIRLPF FIR Lowpass Filter Example
+ *
+ * \par Description:
+ * \par
+ * Removes high frequency signal components from the input using an FIR lowpass filter.
+ * The example demonstrates how to configure an FIR filter and then pass data through
+ * it in a block-by-block fashion.
+ * \image html FIRLPF_signalflow.gif
+ *
+ * \par Algorithm:
+ * \par
+ * The input signal is a sum of two sine waves:  1 kHz and 15 kHz.
+ * This is processed by an FIR lowpass filter with cutoff frequency 6 kHz.
+ * The lowpass filter eliminates the 15 kHz signal leaving only the 1 kHz sine wave at the output.
+ * \par
+ * The lowpass filter was designed using MATLAB with a sample rate of 48 kHz and
+ * a length of 29 points.
+ * The MATLAB code to generate the filter coefficients is shown below:
+ * <pre>
+ *     h = fir1(28, 6/24);
+ * </pre>
+ * The first argument is the "order" of the filter and is always one less than the desired length.
+ * The second argument is the normalized cutoff frequency.  This is in the range 0 (DC) to 1.0 (Nyquist).
+ * A 6 kHz cutoff with a Nyquist frequency of 24 kHz lies at a normalized frequency of 6/24 = 0.25.
+ * The CMSIS FIR filter function requires the coefficients to be in time reversed order.
+ * <pre>
+ *     fliplr(h)
+ * </pre>
+ * The resulting filter coefficients and are shown below.
+ * Note that the filter is symmetric (a property of linear phase FIR filters)
+ * and the point of symmetry is sample 14.  Thus the filter will have a delay of
+ * 14 samples for all frequencies.
+ * \par
+ * \image html FIRLPF_coeffs.gif
+ * \par
+ * The frequency response of the filter is shown next.
+ * The passband gain of the filter is 1.0 and it reaches 0.5 at the cutoff frequency 6 kHz.
+ * \par
+ * \image html FIRLPF_response.gif
+ * \par
+ * The input signal is shown below.
+ * The left hand side shows the signal in the time domain while the right hand side is a frequency domain representation.
+ * The two sine wave components can be clearly seen.
+ * \par
+ * \image html FIRLPF_input.gif
+ * \par
+ * The output of the filter is shown below.  The 15 kHz component has been eliminated.
+ * \par
+ * \image html FIRLPF_output.gif
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInput_f32_1kHz_15kHz points to the input data
+ * \li \c refOutput points to the reference output data
+ * \li \c testOutput points to the test output data
+ * \li \c firStateF32 points to state buffer
+ * \li \c firCoeffs32 points to coefficient buffer
+ * \li \c blockSize number of samples processed at a time
+ * \li \c numBlocks number of frames
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_fir_init_f32()
+ * - arm_fir_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_fir_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_fir_example_f32.c
+ */
+
+/* ----------------------------------------------------------------------
+** Include Files
+** ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "math_helper.h"
+
+/* ----------------------------------------------------------------------
+** Macro Defines
+** ------------------------------------------------------------------- */
+
+#define TEST_LENGTH_SAMPLES  320
+#define SNR_THRESHOLD_F32    140.0f
+#define BLOCK_SIZE            32
+#define NUM_TAPS              29
+
+/* -------------------------------------------------------------------
+ * The input signal and reference output (computed with MATLAB)
+ * are defined externally in arm_fir_lpf_data.c.
+ * ------------------------------------------------------------------- */
+
+extern float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES];
+extern float32_t refOutput[TEST_LENGTH_SAMPLES];
+
+/* -------------------------------------------------------------------
+ * Declare Test output buffer
+ * ------------------------------------------------------------------- */
+
+static float32_t testOutput[TEST_LENGTH_SAMPLES];
+
+/* -------------------------------------------------------------------
+ * Declare State buffer of size (numTaps + blockSize - 1)
+ * ------------------------------------------------------------------- */
+
+static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1];
+
+/* ----------------------------------------------------------------------
+** FIR Coefficients buffer generated using fir1() MATLAB function.
+** fir1(28, 6/24)
+** ------------------------------------------------------------------- */
+
+const float32_t firCoeffs32[NUM_TAPS] = {
+  -0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f, +0.0085302217f, -0.0000000000f, -0.0173976984f,
+  -0.0341458607f, -0.0333591565f, +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f, +0.2229246956f,
+  +0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f, -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f,
+  +0.0080754303f, +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f
+};
+
+/* ------------------------------------------------------------------
+ * Global variables for FIR LPF Example
+ * ------------------------------------------------------------------- */
+
+uint32_t blockSize = BLOCK_SIZE;
+uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE;
+
+float32_t  snr;
+
+/* ----------------------------------------------------------------------
+ * FIR LPF Example
+ * ------------------------------------------------------------------- */
+
+int32_t main(void)
+{
+  uint32_t i;
+  arm_fir_instance_f32 S;
+  arm_status status;
+  float32_t  *inputF32, *outputF32;
+
+  /* Initialize input and output buffer pointers */
+  inputF32 = &testInput_f32_1kHz_15kHz[0];
+  outputF32 = &testOutput[0];
+
+  /* Call FIR init function to initialize the instance structure. */
+  arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], blockSize);
+
+  /* ----------------------------------------------------------------------
+  ** Call the FIR process function for every blockSize samples
+  ** ------------------------------------------------------------------- */
+
+  for(i=0; i < numBlocks; i++)
+  {
+    arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize);
+  }
+
+  /* ----------------------------------------------------------------------
+  ** Compare the generated output against the reference output computed
+  ** in MATLAB.
+  ** ------------------------------------------------------------------- */
+
+  snr = arm_snr_f32(&refOutput[0], &testOutput[0], TEST_LENGTH_SAMPLES);
+
+  if (snr < SNR_THRESHOLD_F32)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+  else
+  {
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* ----------------------------------------------------------------------
+  ** Loop here if the signal does not match the reference output.
+  ** ------------------------------------------------------------------- */
+
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+/** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/math_helper.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,458 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0    
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.c
+*
+* Description:	Definition of all helper functions required.  
+*  
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+*		Include standard header files  
+* -------------------------------------------------------------------- */
+#include<math.h>
+
+/* ----------------------------------------------------------------------
+*		Include project header files  
+* -------------------------------------------------------------------- */
+#include "math_helper.h"
+
+/** 
+ * @brief  Caluclation of SNR
+ * @param  float* 	Pointer to the reference buffer
+ * @param  float*	Pointer to the test buffer
+ * @param  uint32_t	total number of samples
+ * @return float	SNR
+ * The function Caluclates signal to noise ratio for the reference output 
+ * and test output 
+ */
+
+float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
+{
+  float EnergySignal = 0.0, EnergyError = 0.0;
+  uint32_t i;
+  float SNR;
+  int temp;
+  int *test;
+
+  for (i = 0; i < buffSize; i++)
+    {
+ 	  /* Checking for a NAN value in pRef array */
+	  test =   (int *)(&pRef[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+
+	  /* Checking for a NAN value in pTest array */
+	  test =   (int *)(&pTest[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+      EnergySignal += pRef[i] * pRef[i];
+      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); 
+    }
+
+	/* Checking for a NAN value in EnergyError */
+	test =   (int *)(&EnergyError);
+    temp =  *test;
+
+    if(temp == 0x7FC00000)
+    {
+  		return(0);
+    }
+	
+
+  SNR = 10 * log10 (EnergySignal / EnergyError);
+
+  return (SNR);
+
+}
+
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q15_t* 	    Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,
+                            uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed in q12.20 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point(q12.20) values 
+ */
+
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1048576.0f corresponds to pow(2, 20) */
+      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 1.0)
+        {
+          pOut[i] = 0x000FFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q15_t* 	Pointer to Ref buffer
+ * @param  q15_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}	
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q31_t* 	Pointer to Ref buffer
+ * @param  q31_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q31 (q31_t * input_buf, 
+								 uint32_t blockSize,
+                                 uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q7 (q7_t * input_buf, 
+								uint32_t blockSize,
+                                uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+
+
+/** 
+ * @brief  Caluclates number of guard bits 
+ * @param  uint32_t 	number of additions
+ * @return none
+ * The function Caluclates the number of guard bits  
+ * depending on the numtaps 
+ */
+
+uint32_t arm_calc_guard_bits (uint32_t num_adds)
+{
+  uint32_t i = 1, j = 0;
+
+  if (num_adds == 1)
+    {
+      return (0);
+    }
+
+  while (i < num_adds)
+    {
+      i = i * 2;
+      j++;
+    }
+
+  return (j);
+}
+
+/** 
+ * @brief  Converts Q15 to floating-point
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ */
+
+void arm_apply_guard_bits (float32_t * pIn, 
+						   uint32_t numSamples, 
+						   uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);
+    }
+}
+
+/** 
+ * @brief  Calculates pow(2, numShifts)
+ * @param  uint32_t 	number of shifts
+ * @return pow(2, numShifts)
+ */
+uint32_t arm_calc_2pow(uint32_t numShifts)
+{
+
+  uint32_t i, val = 1;
+
+  for (i = 0; i < numShifts; i++)
+    {
+      val = val * 2;
+    }	
+
+  return(val);
+}
+
+
+
+/** 
+ * @brief  Converts float to fixed q14 
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q14 (float *pIn, q15_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 16384.0f corresponds to pow(2, 14) */
+      pOut[i] = (q15_t) (pIn[i] * 16384.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFF;
+        }
+
+    }
+
+}
+
+ 
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q30 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q29 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 4.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+
+/** 
+ * @brief  Converts float to fixed q28 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q28 (float *pIn, q31_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	/* 268435456.0f corresponds to pow(2, 28) */
+      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 8.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Clip the float values to +/- 1 
+ * @param  pIn 	input buffer
+ * @param  numSamples 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_clip_f32 (float *pIn, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      if(pIn[i] > 1.0f)
+	  {
+	    pIn[i] = 1.0;
+	  }
+	  else if( pIn[i] < -1.0f)
+	  {
+	    pIn[i] = -1.0;
+	  }
+	       
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/math_helper.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,63 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.h
+* 
+* Description:	Prototypes of all helper functions required.  
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+#ifndef MATH_HELPER_H
+#define MATH_HELPER_H
+
+float arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);
+void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);
+void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_clip_f32(float *pIn, uint32_t numSamples);
+uint32_t arm_calc_guard_bits(uint32_t num_adds);
+void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);
+uint32_t arm_calc_2pow(uint32_t guard_bits);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_graphic_equalizer_data.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,134 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	     	arm_graphic_equalizer_data.c
+*   
+* Description:	 Data file used for example code
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+ * -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+float32_t testRefOutput_f32[320] = {
+
+0.000000000000000000,	0.001898396760225296,	0.004215449094772339,	0.007432077080011368,	0.010948467999696732,	0.015026375651359558,	0.019191544502973557,	0.023574527353048325,	
+0.027919445186853409,	0.032277785241603851,	0.036551639437675476,	0.040732793509960175,	0.044799156486988068,	0.048710610717535019,	0.052476800978183746,	0.056059073656797409,	
+0.059482168406248093,	0.062726479023694992,	0.065821025520563126,	0.068763464689254761,	0.071577839553356171,	0.074270240962505341,	0.076856281608343124,	0.079344697296619415,	
+0.081745062023401260,	0.084067162126302719,	0.086318407207727432,	0.088509257882833481,	0.090647127479314804,	0.092742368578910828,	0.094802625477313995,	0.096837285906076431,	
+0.098853722214698792,	0.100859899073839190,	0.102862443774938580,	0.104867763817310330,	0.106881409883499150,	0.108908228576183320,	0.110952425748109820,	0.113017357885837550,	
+0.115105822682380680,	0.117219865322113040,	0.119361080229282380,	0.121530555188655850,	0.123729091137647630,	0.125957202166318890,	0.128215309232473370,	0.130503740161657330,	
+0.132822841405868530,	0.135173004120588300,	0.137554679065942760,	0.139968376606702800,	0.142414685338735580,	0.144894234836101530,	0.147407654672861100,	0.149955596774816510,	
+0.152538605034351350,	0.155157200992107390,	0.157811731100082400,	0.160502441227436070,	0.163229387253522870,	0.165992442518472670,	0.168791320174932480,	0.171625509858131410,	
+0.174494370818138120,	0.177397061139345170,	0.180332608520984650,	0.183299910277128220,	0.186297744512557980,	0.189324837177991870,	0.192379791289567950,	0.195461250841617580,	
+0.198567759245634080,	0.201697919517755510,	0.204850304871797560,	0.208023533225059510,	0.211216274648904800,	0.214427210390567780,	0.217655111104249950,	0.220898788422346120,	
+0.224157124757766720,	0.227429077029228210,	0.230713658034801480,	0.234009962528944020,	0.237317133694887160,	0.240634419023990630,	0.243961080908775330,	0.247296508401632310,	
+0.250640105456113820,	0.253991369158029560,	0.257349837571382520,	0.260715119540691380,	0.264086868613958360,	0.267464816570281980,	0.270848698914051060,	0.274238351732492450,	
+0.277633611112833020,	0.281034380197525020,	0.284440591931343080,	0.287852220237255100,	0.291269283741712570,	0.294691801071166990,	0.298119872808456420,	0.301553562283515930,	
+0.304993014782667160,	0.308438356965780260,	0.311889752745628360,	0.315347377210855480,	0.318811416625976560,	0.322282072156667710,	0.325759567320346830,	0.329244095832109450,	
+0.332735907286405560,	0.336235217750072480,	0.339742250740528110,	0.343257248401641850,	0.346780419349670410,	0.350311983376741410,	0.353852160274982450,	0.357401121407747270,	
+0.360959105193614960,	0.364526227116584780,	0.368102725595235820,	0.371688675135374070,	0.375284302979707720,	0.378889638930559160,	0.382504884153604510,	0.386130042374134060,	
+0.389765247702598570,	0.393410529941320420,	0.397065933793783190,	0.400731507688760760,	0.404407206922769550,	0.408093083649873730,	0.411789052188396450,	0.415495119988918300,	
+0.419211201369762420,	0.422937240451574330,	0.426673140376806260,	0.430418811738491060,	0.434174135327339170,	0.437938995659351350,	0.441713258624076840,	0.445496778935194020,	
+0.449289388954639430,	0.453090950846672060,	0.456901267170906070,	0.460720170289278030,	0.464547459036111830,	0.468382950872182850,	0.472226426005363460,	0.476077698171138760,	
+0.479936532676219940,	0.483802750706672670,	0.487676106393337250,	0.491556398570537570,	0.495443399995565410,	0.499336875975131990,	0.503236617892980580,	0.507142387330532070,	
+0.511053957045078280,	0.514971107244491580,	0.518893606960773470,	0.522821225225925450,	0.526753749698400500,	0.530690938234329220,	0.534632585942745210,	0.538578454405069350,	
+0.542528338730335240,	0.546481993049383160,	0.550439231097698210,	0.554399792104959490,	0.558363504707813260,	0.562330115586519240,	0.566299438476562500,	0.570271246135234830,	
+0.574245333671569820,	0.578221492469310760,	0.582199502736330030,	0.586179181933403020,	0.590160276740789410,	0.594142623245716090,	0.598125983029603960,	0.602110169827938080,	
+0.606094967573881150,	0.610080175101757050,	0.614065583795309070,	0.618050977587699890,	0.622036151587963100,	0.626020893454551700,	0.630004994571208950,	0.633988231420516970,	
+0.637970402836799620,	0.641951277852058410,	0.645930647850036620,	0.649908289313316350,	0.653883971273899080,	0.657857488840818410,	0.661828581243753430,	0.665797054767608640,	
+0.669762641191482540,	0.673725124448537830,	0.677684243768453600,	0.681639779359102250,	0.685591462999582290,	0.689539063721895220,	0.693482317030429840,	0.697420965880155560,	
+0.701354760676622390,	0.705283410847187040,	0.709206689149141310,	0.713124278932809830,	0.717035952955484390,	0.720941375941038130,	0.724840316921472550,	0.728732451796531680,	
+0.732617516070604320,	0.736495196819305420,	0.740365199744701390,	0.744227230548858640,	0.748080968856811520,	0.751926124095916750,	0.755762357264757160,	0.759589381515979770,	
+0.763406842947006230,	0.767214450985193250,	0.771011855453252790,	0.774798732250928880,	0.778574761003255840,	0.782339565455913540,	0.786092851310968400,	0.789834223687648770,	
+0.793563373386859890,	0.797279909253120420,	0.800983514636754990,	0.804673787206411360,	0.808350402861833570,	0.812012966722249980,	0.815661124885082240,	0.819294504821300510,	
+0.822912722826004030,	0.826515413820743560,	0.830102190375328060,	0.833672653883695600,	0.837226435542106630,	0.840763118118047710,	0.844282336533069610,	0.847783654928207400,	
+0.851266715675592420,	0.854731071740388870,	0.858176350593566890,	0.861602116376161580,	0.865007970482110980,	0.868393491953611370,	0.871758259832859040,	0.875101849436759950,	
+0.878423850983381270,	0.881723806262016300,	0.885001312941312790,	0.888255912810564040,	0.891487173736095430,	0.894694659858942030,	0.897877920418977740,	0.901036512106657030,	
+0.904169965535402300,	0.907277844846248630,	0.910359673202037810,	0.913415014743804930,	0.916443370282649990,	0.919444311410188670,	0.922417331486940380,	0.925361987203359600,	
+0.928277771919965740,	0.931164238601922990,	0.934020876884460450,	0.936847217381000520,	0.939642757177352910,	0.942407000809907910,	0.945139460265636440,	0.947839632630348210,	
+0.950507018715143200,	0.953141096979379650,	0.955741371959447860,	0.958307322114706040,	0.960838429629802700,	0.963334184139966960,	0.965794049203395840,	0.968217510730028150,	
+0.970604017376899720,	0.972953058779239650,	0.975264083594083790,	0.977536566555500030,	0.979769956320524220,	0.981963708996772770,	0.984117280691862110,	0.986230112612247470,	
+0.988301653414964680,	0.990331344306468960,	0.992318630218505860,	0.994262944906950000,	0.996163722127676010,	0.998020399361848830,	0.999832402914762500,	1.001599155366420700,	
+1.003320086747407900,	1.004994612187147100,	1.006622135639190700,	1.008202098309993700,	1.009733878076076500,	1.011216927319765100,	1.012650609016418500,	1.014034371823072400,	
+1.015367589890956900,	1.016649682074785200,	1.017880033701658200,	1.019058048725128200,	1.020183108747005500,	1.021254621446132700,	1.022271949797868700,	1.023234523832798000,	
+
+};
+/* ----------------------------------------------------------------------
+** Test input - logarithmic chirp signal
+** ------------------------------------------------------------------- */
+
+float32_t testInput_f32[320] =
+  {
+    0.000000000000000061,	0.002622410992047861,	0.005253663973466970,	0.007893770384930297,	0.010542741395035495,	0.013200587895525877,	0.015867320496454066,	0.018542949521290073,	
+0.021227485001971542,	0.023920936673895138,	0.026623313970853074,	0.029334626019908643,	0.032054881636210709,	0.034784089317753723,	0.037522257240071598,	0.040269393250875855,	
+0.043025504864628375,	0.045790599257054837,	0.048564683259595690,	0.051347763353792118,	0.054139845665610427,	0.056940935959702531,	0.059751039633601337,	0.062570161711849828,	
+0.065398306840066575,	0.068235479278943648,	0.071081682898178900,	0.073936921170339814,	0.076801197164660218,	0.079674513540768196,	0.082556872542344922,	0.085448275990715375,	
+0.088348725278367082,	0.091258221362398390,	0.094176764757897533,	0.097104355531246703,	0.100040993293358240,	0.102986677192832010,	0.105941405909045980,	0.108905177645166230,	
+0.111877990121087980,	0.114859840566297130,	0.117850725712659680,	0.120850641787131110,	0.123859584504392860,	0.126877549059407400,	0.129904530119898690,	0.132940521818751430,	
+0.135985517746334080,	0.139039510942737950,	0.142102493889940090,	0.145174458503884160,	0.148255396126476810,	0.151345297517508140,	0.154444152846483080,	0.157551951684374300,	
+0.160668682995289720,	0.163794335128054890,	0.166928895807713030,	0.170072352126936720,	0.173224690537355760,	0.176385896840798810,	0.179555956180445340,	0.182734853031894270,	
+0.185922571194139130,	0.189119093780459800,	0.192324403209221870,	0.195538481194587030,	0.198761308737133020,	0.201992866114384050,	0.205233132871247170,	0.208482087810360570,	
+0.211739708982344370,	0.215005973675965020,	0.218280858408200220,	0.221564338914212730,	0.224856390137231970,	0.228156986218334190,	0.231466100486134670,	0.234783705446379690,	
+0.238109772771442410,	0.241444273289723230,	0.244787176974952890,	0.248138452935395580,	0.251498069402956710,	0.254865993722190930,	0.258242192339209860,	0.261626630790492030,	
+0.265019273691591620,	0.268420084725748410,	0.271829026632395280,	0.275246061195565440,	0.278671149232197430,	0.282104250580339830,	0.285545324087251580,	0.288994327597401960,	
+0.292451217940364990,	0.295915950918612280,	0.299388481295203350,	0.302868762781368150,	0.306356748023990040,	0.309852388592980640,	0.313355634968552230,	0.316866436528383590,	
+0.320384741534681720,	0.323910497121136620,	0.327443649279772870,	0.330984142847692230,	0.334531921493712690,	0.338086927704900790,	0.341649102772995210,	0.345218386780727190,	
+0.348794718588032520,	0.352378035818156910,	0.355968274843654950,	0.359565370772282730,	0.363169257432780890,	0.366779867360555120,	0.370397131783246010,	0.374020980606193880,	
+0.377651342397795690,	0.381288144374756830,	0.384931312387234990,	0.388580770903877330,	0.392236442996751310,	0.395898250326170650,	0.399566113125414350,	0.403239950185338420,	
+0.406919678838884410,	0.410605214945482130,	0.414296472875345100,	0.417993365493664670,	0.421695804144698540,	0.425403698635752780,	0.429116957221065130,	0.432835486585582130,	
+0.436559191828633180,	0.440287976447505720,	0.444021742320914510,	0.447760389692375140,	0.451503817153472210,	0.455251921627031540,	0.459004598350192470,	0.462761740857380200,	
+0.466523240963184150,	0.470288988745136360,	0.474058872526396560,	0.477832778858340690,	0.481610592503056990,	0.485392196415748600,	0.489177471727042850,	0.492966297725213780,	
+0.496758551838309250,	0.500554109616195060,	0.504352844712508190,	0.508154628866524960,	0.511959331884944910,	0.515766821623591440,	0.519576963969030530,	0.523389622820107150,	
+0.527204660069405030,	0.531021935584629400,	0.534841307189911630,	0.538662630647041900,	0.542485759636628150,	0.546310545739186690,	0.550136838416161340,	0.553964484990880020,	
+0.557793330629441700,	0.561623218321546380,	0.565453988861259300,	0.569285480827721570,	0.573117530565801950,	0.576949972166696630,	0.580782637448476910,	0.584615355936589420,	
+0.588447954844309340,	0.592280259053150400,	0.596112091093235260,	0.599943271123626440,	0.603773616912622660,	0.607602943818024150,	0.611431064767369080,	0.615257790238142090,	
+0.619082928237961740,	0.622906284284749700,	0.626727661386881850,	0.630546860023327600,	0.634363678123782030,	0.638177911048790960,	0.641989351569874020,	0.645797789849653410,	
+0.649603013421986450,	0.653404807172108140,	0.657202953316791350,	0.660997231384523490,	0.664787418195706640,	0.668573287842887610,	0.672354611671016960,	0.676131158257749170,	
+0.679902693393781730,	0.683668980063242500,	0.687429778424128110,	0.691184845788802130,	0.694933936604551380,	0.698676802434213370,	0.702413191936877570,	0.706142850848662460,	
+0.709865521963579990,	0.713580945114492330,	0.717288857154159800,	0.720988991936399870,	0.724681080297347790,	0.728364850036839040,	0.732040025899910680,	0.735706329558433620,	
+0.739363479592880620,	0.743011191474238440,	0.746649177546067850,	0.750277147006723990,	0.753894805891742180,	0.757501857056394940,	0.761098000158428880,	0.764682931640995540,	
+0.768256344715771980,	0.771817929346292900,	0.775367372231492210,	0.778904356789468790,	0.782428563141483460,	0.785939668096195860,	0.789437345134148760,	0.792921264392515420,	
+0.796391092650110770,	0.799846493312681210,	0.803287126398485760,	0.806712648524170680,	0.810122712890953390,	0.813516969271127150,	0.816895063994893090,	0.820256639937531280,	
+0.823601336506926020,	0.826928789631450890,	0.830238631748229430,	0.833530491791779850,	0.836803995183058700,	0.840058763818912760,	0.843294416061954100,	0.846510566730867220,	
+0.849706827091166740,	0.852882804846411770,	0.856038104129895340,	0.859172325496819990,	0.862285065916973510,	0.865375918767918860,	0.868444473828712590,	0.871490317274166260,	
+0.874513031669661770,	0.877512195966544280,	0.880487385498096800,	0.883438171976119850,	0.886364123488128100,	0.889264804495180530,	0.892139775830360640,	0.894988594697921020,	
+0.897810814673113080,	0.900605985702712770,	0.903373654106265470,	0.906113362578062300,	0.908824650189867690,	0.911507052394417540,	0.914160101029702910,	0.916783324324059180,	
+0.919376246902079860,	0.921938389791372770,	0.924469270430179120,	0.926968402675872660,	0.929435296814361430,	0.931869459570409790,	0.934270394118903560,	0.936637600097074200,	
+0.938970573617708970,	0.941268807283364040,	0.943531790201601380,	0.945759008001275100,	0.947949942849885320,	0.950104073472023970,	0.952220875168933280,	0.954299819839202090,	
+0.956340376000621160,	0.958342008813221960,	0.960304180103520260,	0.962226348389994210,	0.964107968909812760,	0.965948493646846980,	0.967747371360983650,	0.969504047618768740,	
+0.971217964825405680,	0.972888562258134030,	0.974515276101013520,	0.976097539481141750,	0.977634782506330400,	0.979126432304266880,	0.980571913063189360,	0.981970646074102120,	
+0.983322049774557390,	0.984625539794035220,	0.985880529000944810,	0.987086427551279730,	0.988242642938953360,	0.989348580047844540,	0.990403641205582440,	0.991407226239099710,	
+0.992358732531984260,	0.993257555083659870,	0.994103086570423680,	0.994894717408374870,	0.995631835818261310,	0.996313827892278070,	0.996940077662846650,	0.997509967173408010,	
+
+  };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_graphic_equalizer_example_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,411 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_graphic_equalizer_example_q31.c
+*
+* Description:   Example showing an audio graphic equalizer constructed
+*                out of Biquad filters.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup GEQ5Band Graphic Audio Equalizer Example
+ *
+ * \par Description:
+ * \par
+ * This example demonstrates how a 5-band graphic equalizer can be constructed
+ * using the Biquad cascade functions.
+ * A graphic equalizer is used in audio applications to vary the tonal quality
+ * of the audio.
+ *
+ * \par Block Diagram:
+ * \par
+ * The design is based on a cascade of 5 filter sections.
+ * \image html GEQ_signalflow.gif
+ * Each filter section is 4th order and consists of a cascade of two Biquads.
+ * Each filter has a nominal gain of 0 dB (1.0 in linear units) and
+ * boosts or cuts signals within a specific frequency range.
+ * The edge frequencies between the 5 bands are 100, 500, 2000, and 6000 Hz.
+ * Each band has an adjustable boost or cut in the range of +/- 9 dB.
+ * For example, the band that extends from 500 to 2000 Hz has the response shown below:
+ * \par
+ * \image html GEQ_bandresponse.gif
+ * \par
+ * With 1 dB steps, each filter has a total of 19 different settings.
+ * The filter coefficients for all possible 19 settings were precomputed
+ * in MATLAB and stored in a table.  With 5 different tables, there are
+ * a total of 5 x 19 = 95 different 4th order filters.
+ * All 95 responses are shown below:
+ * \par
+ * \image html GEQ_allbandresponse.gif
+ * \par
+ * Each 4th order filter has 10 coefficents for a grand total of 950 different filter
+ * coefficients that must be tabulated. The input and output data is in Q31 format.
+ * For better noise performance, the two low frequency bands are implemented using the high
+ * precision 32x64-bit Biquad filters. The remaining 3 high frequency bands use standard
+ * 32x32-bit Biquad filters. The input signal used in the example is a logarithmic chirp.
+ * \par
+ * \image html GEQ_inputchirp.gif
+ * \par
+ * The array <code>bandGains</code> specifies the gain in dB to apply in each band.
+ * For example, if <code>bandGains={0, -3, 6, 4, -6};</code> then the output signal will be:
+ * \par
+ * \image html GEQ_outputchirp.gif
+ * \par
+ * \note The output chirp signal follows the gain or boost of each band.
+ * \par
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInput_f32 points to the input data
+ * \li \c testRefOutput_f32 points to the reference output data
+ * \li \c testOutput points to the test output data
+ * \li \c inputQ31 temporary input buffer
+ * \li \c outputQ31 temporary output buffer
+ * \li \c biquadStateBand1Q31 points to state buffer for band1
+ * \li \c biquadStateBand2Q31 points to state buffer for band2
+ * \li \c biquadStateBand3Q31 points to state buffer for band3
+ * \li \c biquadStateBand4Q31 points to state buffer for band4
+ * \li \c biquadStateBand5Q31 points to state buffer for band5
+ * \li \c coeffTable points to coefficient buffer for all bands
+ * \li \c gainDB gain buffer which has gains applied for all the bands
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_biquad_cas_df1_32x64_init_q31()
+ * - arm_biquad_cas_df1_32x64_q31()
+ * - arm_biquad_cascade_df1_init_q31()
+ * - arm_biquad_cascade_df1_q31()
+ * - arm_scale_q31()
+ * - arm_scale_f32()
+ * - arm_float_to_q31()
+ * - arm_q31_to_float()
+ *
+ * <b> Refer  </b>
+ * \link arm_graphic_equalizer_example_q31.c \endlink
+ *
+ */
+
+
+/** \example arm_graphic_equalizer_example_q31.c
+ */
+
+
+#include "arm_math.h"
+#include "math_helper.h"
+
+/* Length of the overall data in the test */
+#define TESTLENGTH 320
+
+/* Block size for the underlying processing */
+#define BLOCKSIZE 32
+
+/* Total number of blocks to run */
+#define NUMBLOCKS (TESTLENGTH/BLOCKSIZE)
+
+/* Number of 2nd order Biquad stages per filter */
+#define NUMSTAGES 2
+
+#define SNR_THRESHOLD_F32  98
+
+/* -------------------------------------------------------------------
+ * External Declarations for Input and Output buffers
+ * ------------------------------------------------------------------- */
+
+extern float32_t testInput_f32[TESTLENGTH];
+static float32_t testOutput[TESTLENGTH];
+
+extern float32_t testRefOutput_f32[TESTLENGTH];
+
+/* ----------------------------------------------------------------------
+** Q31 state buffers for Band1, Band2, Band3, Band4, Band5
+** ------------------------------------------------------------------- */
+
+static q63_t biquadStateBand1Q31[4 * 2];
+static q63_t biquadStateBand2Q31[4 * 2];
+static q31_t biquadStateBand3Q31[4 * 2];
+static q31_t biquadStateBand4Q31[4 * 2];
+static q31_t biquadStateBand5Q31[4 * 2];
+
+/* ----------------------------------------------------------------------
+** Q31 input and output buffers
+** ------------------------------------------------------------------- */
+
+q31_t inputQ31[BLOCKSIZE];
+q31_t outputQ31[BLOCKSIZE];
+
+/* ----------------------------------------------------------------------
+** Entire coefficient table.  There are 10 coefficients per 4th order Biquad
+** cascade filter.  The first 10 coefficients correspond to the -9 dB gain
+** setting of band 1; the next 10 coefficient correspond to the -8 dB gain
+** setting of band 1; and so on.  There are 10*19=190 coefficients in total
+** for band 1 (gains = -9, -8, -7, ..., 9).  After this come the 190 coefficients
+** for band 2.
+**
+** The coefficients are in Q29 format and require a postShift of 2.
+** ------------------------------------------------------------------- */
+
+const q31_t coeffTable[950] = {
+
+  /* Band 1, -9 dB gain */
+  535576962, -1071153923, 535576962, 1073741824, -536870912, 535576962, -1063501998, 527979313, 1060865294, -524146981,
+  /* Band 1, -8 dB gain */
+  535723226, -1071446451, 535723226, 1073741824, -536870912, 535723226, -1063568947, 527903217, 1061230578, -524503778,
+  535868593, -1071737186, 535868593, 1073741824, -536870912, 535868593, -1063627467, 527819780, 1061585502, -524850686,
+  536013181, -1072026363, 536013181, 1073741824, -536870912, 536013181, -1063677598, 527728935, 1061930361, -525187972,
+  536157109, -1072314217, 536157109, 1073741824, -536870912, 536157109, -1063719372, 527630607, 1062265438, -525515897,
+  536300492, -1072600983, 536300492, 1073741824, -536870912, 536300492, -1063752815, 527524720, 1062591011, -525834716,
+  536443447, -1072886894, 536443447, 1073741824, -536870912, 536443447, -1063777945, 527411186, 1062907350, -526144676,
+  536586091, -1073172183, 536586091, 1073741824, -536870912, 536586091, -1063794775, 527289917, 1063214717, -526446017,
+  536728541, -1073457082, 536728541, 1073741824, -536870912, 536728541, -1063803308, 527160815, 1063513366, -526738975,
+  536870912, -1073741824, 536870912, 1073741824, -536870912, 536870912, -1063803543, 527023777, 1063803543, -527023777,
+  537013321, -1074026642, 537013321, 1073741824, -536870912, 537013321, -1063795470, 526878696, 1064085490, -527300648,
+  537155884, -1074311768, 537155884, 1073741824, -536870912, 537155884, -1063779073, 526725455, 1064359439, -527569803,
+  537298718, -1074597435, 537298718, 1073741824, -536870912, 537298718, -1063754328, 526563934, 1064625617, -527831454,
+  537441939, -1074883878, 537441939, 1073741824, -536870912, 537441939, -1063721205, 526394005, 1064884245, -528085806,
+  537585666, -1075171331, 537585666, 1073741824, -536870912, 537585666, -1063679666, 526215534, 1065135536, -528333059,
+  537730015, -1075460030, 537730015, 1073741824, -536870912, 537730015, -1063629666, 526028380, 1065379699, -528573409,
+  537875106, -1075750212, 537875106, 1073741824, -536870912, 537875106, -1063571152, 525832396, 1065616936, -528807045,
+  538021057, -1076042114, 538021057, 1073741824, -536870912, 538021057, -1063504065, 525627429, 1065847444, -529034151,
+  538167989, -1076335977, 538167989, 1073741824, -536870912, 538167989, -1063428338, 525413317, 1066071412, -529254907,
+
+  /* Band 2, -9 dB gain */
+  531784976, -1055497692, 523873415, 1066213307, -529420241, 531784976, -1040357886, 509828014, 1028908252, -494627367,
+  /* Band 2, -8 dB gain */
+  532357636, -1056601982, 524400080, 1066115844, -529326645, 532357636, -1040623406, 509562600, 1030462237, -496062122,
+  532927392, -1057707729, 524931110, 1066024274, -529239070, 532927392, -1040848253, 509262081, 1031969246, -497457090,
+  533494678, -1058816094, 525467240, 1065939047, -529157961, 533494678, -1041032161, 508925950, 1033429976, -498812573,
+  534059929, -1059928204, 526009170, 1065860582, -529083734, 534059929, -1041174868, 508553717, 1034845124, -500128887,
+  534623580, -1061045148, 526557561, 1065789260, -529016764, 534623580, -1041276126, 508144920, 1036215393, -501406373,
+  535186068, -1062167969, 527113032, 1065725420, -528957385, 535186068, -1041335703, 507699125, 1037541500, -502645399,
+  535747827, -1063297666, 527676151, 1065669351, -528905879, 535747827, -1041353386, 507215934, 1038824183, -503846368,
+  536309295, -1064435183, 528247436, 1065621289, -528862476, 536309295, -1041328990, 506694984, 1040064203, -505009724,
+  536870912, -1065581413, 528827349, 1065581413, -528827349, 536870912, -1041262354, 506135953, 1041262354, -506135953,
+  537433117, -1066737194, 529416295, 1065549847, -528800610, 537433117, -1041153346, 505538564, 1042419457, -507225588,
+  537996352, -1067903307, 530014622, 1065526651, -528782316, 537996352, -1041001864, 504902578, 1043536370, -508279208,
+  538561061, -1069080480, 530622620, 1065511830, -528772462, 538561061, -1040807833, 504227800, 1044613981, -509297437,
+  539127690, -1070269387, 531240527, 1065505333, -528770987, 539127690, -1040571205, 503514074, 1045653211, -510280946,
+  539696690, -1071470656, 531868525, 1065507054, -528777778, 539696690, -1040291951, 502761277, 1046655011, -511230450,
+  540268512, -1072684867, 532506750, 1065516837, -528792672, 540268512, -1039970063, 501969320, 1047620358, -512146700,
+  540843613, -1073912567, 533155297, 1065534483, -528815459, 540843613, -1039605542, 501138139, 1048550251, -513030484,
+  541422451, -1075154268, 533814224, 1065559750, -528845892, 541422451, -1039198394, 500267687, 1049445708, -513882621,
+  542005489, -1076410460, 534483561, 1065592362, -528883686, 542005489, -1038748624, 499357932, 1050307760, -514703956,
+  518903861, -1001986830, 486725277, 1037235801, -502367695, 518903861, -945834422, 446371043, 902366163, -400700571,
+  520899989, -1005630916, 488289126, 1036926846, -502147311, 520899989, -946490935, 445581846, 907921945, -404936158,
+  522893209, -1009290002, 489869792, 1036650484, -501961419, 522893209, -947006359, 444685310, 913306106, -409075225,
+  524884763, -1012968199, 491470256, 1036407567, -501810737, 524884763, -947377809, 443679533, 918521018, -413116221,
+  526875910, -1016669649, 493093518, 1036198712, -501695739, 526875910, -947602324, 442562672, 923569247, -417057897,
+  528867927, -1020398503, 494742575, 1036024293, -501616651, 528867927, -947676875, 441332970, 928453558, -420899319,
+  530862111, -1024158905, 496420407, 1035884447, -501573457, 530862111, -947598385, 439988777, 933176909, -424639872,
+  532859778, -1027954970, 498129955, 1035779077, -501565907, 532859778, -947363742, 438528571, 937742446, -428279254,
+  534862260, -1031790763, 499874098, 1035707863, -501593525, 534862260, -946969823, 436950987, 942153486, -431817474,
+  536870912, -1035670279, 501655630, 1035670279, -501655630, 536870912, -946413508, 435254839, 946413508, -435254839,
+  538887107, -1039597419, 503477238, 1035665609, -501751354, 538887107, -945691703, 433439146, 950526127, -438591937,
+  540912240, -1043575967, 505341475, 1035692963, -501879659, 540912240, -944801359, 431503152, 954495080, -441829621,
+  542947726, -1047609569, 507250741, 1035751307, -502039364, 542947726, -943739490, 429446349, 958324201, -444968987,
+  544995000, -1051701717, 509207261, 1035839473, -502229165, 544995000, -942503190, 427268492, 962017400, -448011351,
+  547055523, -1055855728, 511213065, 1035956193, -502447657, 547055523, -941089647, 424969617, 965578640, -450958226,
+  549130774, -1060074734, 513269973, 1036100110, -502693359, 549130774, -939496155, 422550049, 969011913, -453811298,
+  551222259, -1064361672, 515379585, 1036269804, -502964731, 551222259, -937720119, 420010407, 972321228, -456572401,
+  553331507, -1068719280, 517543273, 1036463810, -503260192, 553331507, -935759057, 417351601, 975510582, -459243495,
+  555460072, -1073150100, 519762181, 1036680633, -503578144, 555460072, -933610600, 414574832, 978583948, -461826644,
+  494084017, -851422604, 404056273, 930151631, -423619864, 494084017, -673714108, 339502486, 561843007, -265801750,
+  498713542, -859177141, 406587077, 929211656, -423786402, 498713542, -673274906, 338185129, 573719128, -272222942,
+  503369016, -867012190, 409148384, 928362985, -424054784, 503369016, -672533059, 336693984, 585290277, -278599028,
+  508052536, -874935599, 411746438, 927604291, -424422151, 508052536, -671478538, 335026905, 596558312, -284920289,
+  512766286, -882955583, 414387826, 926933782, -424885216, 512766286, -670100998, 333182045, 607525792, -291177811,
+  517512534, -891080712, 417079474, 926349262, -425440318, 517512534, -668389789, 331157902, 618195914, -297363485,
+  522293635, -899319903, 419828635, 925848177, -426083491, 522293635, -666333963, 328953368, 628572440, -303470012,
+  527112032, -907682405, 422642886, 925427679, -426810526, 527112032, -663922286, 326567785, 638659631, -309490882,
+  531970251, -916177781, 425530105, 925084675, -427617023, 531970251, -661143261, 324000998, 648462180, -315420352,
+  536870912, -924815881, 428498454, 924815881, -428498454, 536870912, -657985147, 321253420, 657985147, -321253420,
+  541816719, -933606817, 431556352, 924617870, -429450209, 541816719, -654435997, 318326093, 667233900, -326985786,
+  546810467, -942560921, 434712438, 924487114, -430467639, 546810467, -650483688, 315220754, 676214053, -332613816,
+  551855042, -951688708, 437975532, 924420027, -431546101, 551855042, -646115970, 311939896, 684931422, -338134495,
+  556953421, -961000826, 441354588, 924413001, -432680993, 556953421, -641320513, 308486839, 693391970, -343545389,
+  562108672, -970508005, 444858642, 924462435, -433867780, 562108672, -636084967, 304865786, 701601770, -348844597,
+  567323959, -980220994, 448496743, 924564764, -435102022, 567323959, -630397020, 301081886, 709566963, -354030710,
+  572602539, -990150500, 452277894, 924716482, -436379394, 572602539, -624244471, 297141281, 717293726, -359102767,
+  577947763, -1000307125, 456210977, 924914158, -437695705, 577947763, -617615296, 293051155, 724788245, -364060214,
+  583363084, -1010701292, 460304674, 925154455, -439046908, 583363084, -610497723, 288819761, 732056685, -368902865,
+  387379495, -506912469, 196933274, 840112184, -347208270, 387379495, 506912469, 196933274, -840112184, -347208270,
+  401658082, -532275898, 207149427, 833765363, -343175316, 401658082, 532275898, 207149427, -833765363, -343175316,
+  416472483, -558722695, 217902617, 827270154, -339107319, 416472483, 558722695, 217902617, -827270154, -339107319,
+  431841949, -586290861, 229212798, 820624988, -335007540, 431841949, 586290861, 229212798, -820624988, -335007540,
+  447786335, -615019650, 241100489, 813828443, -330879528, 447786335, 615019650, 241100489, -813828443, -330879528,
+  464326111, -644949597, 253586805, 806879270, -326727141, 464326111, 644949597, 253586805, -806879270, -326727141,
+  481482377, -676122557, 266693475, 799776409, -322554559, 481482377, 676122557, 266693475, -799776409, -322554559,
+  499276882, -708581728, 280442865, 792519013, -318366296, 499276882, 708581728, 280442865, -792519013, -318366296,
+  517732032, -742371685, 294857996, 785106465, -314167221, 517732032, 742371685, 294857996, -785106465, -314167221,
+  536870912, -777538408, 309962566, 777538408, -309962566, 536870912, 777538408, 309962566, -777538408, -309962566,
+  556717294, -814129313, 325780968, 769814766, -305757943, 556717294, 814129313, 325780968, -769814766, -305757943,
+  577295658, -852193284, 342338310, 761935777, -301559360, 577295658, 852193284, 342338310, -761935777, -301559360,
+  598631206, -891780698, 359660433, 753902014, -297373230, 598631206, 891780698, 359660433, -753902014, -297373230,
+  620749877, -932943463, 377773927, 745714425, -293206383, 620749877, 932943463, 377773927, -745714425, -293206383,
+  643678365, -975735041, 396706151, 737374355, -289066077, 643678365, 975735041, 396706151, -737374355, -289066077,
+  667444134, -1020210487, 416485252, 728883588, -284960004, 667444134, 1020210487, 416485252, -728883588, -284960004,
+  692075438, -1066426476, 437140179, 720244375, -280896294, 692075438, 1066426476, 437140179, -720244375, -280896294,
+  717601336, -1114441339, 458700704, 711459472, -276883515, 717601336, 1114441339, 458700704, -711459472, -276883515,
+  744051710, -1164315096, 481197437, 702532174, -272930673, 744051710, 1164315096, 481197437, -702532174, -272930673
+
+};
+
+/* ----------------------------------------------------------------------
+** Desired gains, in dB, per band
+** ------------------------------------------------------------------- */
+
+int gainDB[5] = {0, -3, 6, 4, -6};
+
+float32_t snr;
+
+
+/* ----------------------------------------------------------------------
+ * Graphic equalizer Example
+ * ------------------------------------------------------------------- */
+
+int32_t main(void)
+{
+  float32_t  *inputF32, *outputF32;
+  arm_biquad_cas_df1_32x64_ins_q31 S1;
+  arm_biquad_cas_df1_32x64_ins_q31 S2;
+  arm_biquad_casd_df1_inst_q31 S3;
+  arm_biquad_casd_df1_inst_q31 S4;
+  arm_biquad_casd_df1_inst_q31 S5;
+  int i;
+  int32_t status;
+
+  inputF32 = &testInput_f32[0];
+  outputF32 = &testOutput[0];
+
+  /* Initialize the state and coefficient buffers for all Biquad sections */
+
+  arm_biquad_cas_df1_32x64_init_q31(&S1, NUMSTAGES,
+            (q31_t *) &coeffTable[190*0 + 10*(gainDB[0] + 9)],
+            &biquadStateBand1Q31[0], 2);
+
+  arm_biquad_cas_df1_32x64_init_q31(&S2, NUMSTAGES,
+            (q31_t *) &coeffTable[190*1 + 10*(gainDB[1] + 9)],
+            &biquadStateBand2Q31[0], 2);
+
+  arm_biquad_cascade_df1_init_q31(&S3, NUMSTAGES,
+          (q31_t *) &coeffTable[190*2 + 10*(gainDB[2] + 9)],
+          &biquadStateBand3Q31[0], 2);
+
+  arm_biquad_cascade_df1_init_q31(&S4, NUMSTAGES,
+          (q31_t *) &coeffTable[190*3 + 10*(gainDB[3] + 9)],
+          &biquadStateBand4Q31[0], 2);
+
+  arm_biquad_cascade_df1_init_q31(&S5, NUMSTAGES,
+          (q31_t *) &coeffTable[190*4 + 10*(gainDB[4] + 9)],
+          &biquadStateBand5Q31[0], 2);
+
+
+  /* Call the process functions and needs to change filter coefficients
+     for varying the gain of each band */
+
+  for(i=0; i < NUMBLOCKS; i++)
+  {
+
+    /* ----------------------------------------------------------------------
+    ** Convert block of input data from float to Q31
+    ** ------------------------------------------------------------------- */
+
+    arm_float_to_q31(inputF32 + (i*BLOCKSIZE), inputQ31, BLOCKSIZE);
+
+    /* ----------------------------------------------------------------------
+    ** Scale down by 1/8.  This provides additional headroom so that the
+    ** graphic EQ can apply gain.
+    ** ------------------------------------------------------------------- */
+
+    arm_scale_q31(inputQ31, 0x7FFFFFFF, -3, inputQ31, BLOCKSIZE);
+
+    /* ----------------------------------------------------------------------
+    ** Call the Q31 Biquad Cascade DF1 32x64 process function for band1, band2
+    ** ------------------------------------------------------------------- */
+
+    arm_biquad_cas_df1_32x64_q31(&S1, inputQ31, outputQ31, BLOCKSIZE);
+    arm_biquad_cas_df1_32x64_q31(&S2, outputQ31, outputQ31, BLOCKSIZE);
+
+    /* ----------------------------------------------------------------------
+    ** Call the Q31 Biquad Cascade DF1 process function for band3, band4, band5
+    ** ------------------------------------------------------------------- */
+
+    arm_biquad_cascade_df1_q31(&S3, outputQ31, outputQ31, BLOCKSIZE);
+    arm_biquad_cascade_df1_q31(&S4, outputQ31, outputQ31, BLOCKSIZE);
+    arm_biquad_cascade_df1_q31(&S5, outputQ31, outputQ31, BLOCKSIZE);
+
+    /* ----------------------------------------------------------------------
+    ** Convert Q31 result back to float
+    ** ------------------------------------------------------------------- */
+
+    arm_q31_to_float(outputQ31, outputF32 + (i * BLOCKSIZE), BLOCKSIZE);
+
+    /* ----------------------------------------------------------------------
+    ** Scale back up
+    ** ------------------------------------------------------------------- */
+
+    arm_scale_f32(outputF32 + (i * BLOCKSIZE), 8.0f, outputF32 + (i * BLOCKSIZE), BLOCKSIZE);
+  };
+
+  snr = arm_snr_f32(testRefOutput_f32, testOutput, TESTLENGTH);
+
+  if (snr < SNR_THRESHOLD_F32)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+  else
+  {
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* ----------------------------------------------------------------------
+  ** Loop here if the signal does not match the reference output.
+  ** ------------------------------------------------------------------- */
+
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+/** \endlink */
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/math_helper.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,458 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0    
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.c
+*
+* Description:	Definition of all helper functions required.  
+*  
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+*		Include standard header files  
+* -------------------------------------------------------------------- */
+#include<math.h>
+
+/* ----------------------------------------------------------------------
+*		Include project header files  
+* -------------------------------------------------------------------- */
+#include "math_helper.h"
+
+/** 
+ * @brief  Caluclation of SNR
+ * @param  float* 	Pointer to the reference buffer
+ * @param  float*	Pointer to the test buffer
+ * @param  uint32_t	total number of samples
+ * @return float	SNR
+ * The function Caluclates signal to noise ratio for the reference output 
+ * and test output 
+ */
+
+float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
+{
+  float EnergySignal = 0.0, EnergyError = 0.0;
+  uint32_t i;
+  float SNR;
+  int temp;
+  int *test;
+
+  for (i = 0; i < buffSize; i++)
+    {
+ 	  /* Checking for a NAN value in pRef array */
+	  test =   (int *)(&pRef[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+
+	  /* Checking for a NAN value in pTest array */
+	  test =   (int *)(&pTest[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+      EnergySignal += pRef[i] * pRef[i];
+      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); 
+    }
+
+	/* Checking for a NAN value in EnergyError */
+	test =   (int *)(&EnergyError);
+    temp =  *test;
+
+    if(temp == 0x7FC00000)
+    {
+  		return(0);
+    }
+	
+
+  SNR = 10 * log10 (EnergySignal / EnergyError);
+
+  return (SNR);
+
+}
+
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q15_t* 	    Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,
+                            uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed in q12.20 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point(q12.20) values 
+ */
+
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1048576.0f corresponds to pow(2, 20) */
+      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 1.0)
+        {
+          pOut[i] = 0x000FFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q15_t* 	Pointer to Ref buffer
+ * @param  q15_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}	
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q31_t* 	Pointer to Ref buffer
+ * @param  q31_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q31 (q31_t * input_buf, 
+								 uint32_t blockSize,
+                                 uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q7 (q7_t * input_buf, 
+								uint32_t blockSize,
+                                uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+
+
+/** 
+ * @brief  Caluclates number of guard bits 
+ * @param  uint32_t 	number of additions
+ * @return none
+ * The function Caluclates the number of guard bits  
+ * depending on the numtaps 
+ */
+
+uint32_t arm_calc_guard_bits (uint32_t num_adds)
+{
+  uint32_t i = 1, j = 0;
+
+  if (num_adds == 1)
+    {
+      return (0);
+    }
+
+  while (i < num_adds)
+    {
+      i = i * 2;
+      j++;
+    }
+
+  return (j);
+}
+
+/** 
+ * @brief  Converts Q15 to floating-point
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ */
+
+void arm_apply_guard_bits (float32_t * pIn, 
+						   uint32_t numSamples, 
+						   uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);
+    }
+}
+
+/** 
+ * @brief  Calculates pow(2, numShifts)
+ * @param  uint32_t 	number of shifts
+ * @return pow(2, numShifts)
+ */
+uint32_t arm_calc_2pow(uint32_t numShifts)
+{
+
+  uint32_t i, val = 1;
+
+  for (i = 0; i < numShifts; i++)
+    {
+      val = val * 2;
+    }	
+
+  return(val);
+}
+
+
+
+/** 
+ * @brief  Converts float to fixed q14 
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q14 (float *pIn, q15_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 16384.0f corresponds to pow(2, 14) */
+      pOut[i] = (q15_t) (pIn[i] * 16384.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFF;
+        }
+
+    }
+
+}
+
+ 
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q30 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q29 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 4.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+
+/** 
+ * @brief  Converts float to fixed q28 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q28 (float *pIn, q31_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	/* 268435456.0f corresponds to pow(2, 28) */
+      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 8.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Clip the float values to +/- 1 
+ * @param  pIn 	input buffer
+ * @param  numSamples 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_clip_f32 (float *pIn, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      if(pIn[i] > 1.0f)
+	  {
+	    pIn[i] = 1.0;
+	  }
+	  else if( pIn[i] < -1.0f)
+	  {
+	    pIn[i] = -1.0;
+	  }
+	       
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/math_helper.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,63 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.h
+* 
+* Description:	Prototypes of all helper functions required.  
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+#ifndef MATH_HELPER_H
+#define MATH_HELPER_H
+
+float arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);
+void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);
+void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_clip_f32(float *pIn, uint32_t numSamples);
+uint32_t arm_calc_guard_bits(uint32_t num_adds);
+void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);
+uint32_t arm_calc_2pow(uint32_t guard_bits);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_linear_interp_data.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,23616 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	     	arm_linear_interp_data.c
+*   
+* Description:	 Data file used for example.  Generation method described
+*               below
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+ * -------------------------------------------------------------------- */
+ 
+/* ---------------------------------------------------------------------- 
+* Table generated from following MATLAB Command
+* x = -pi: 0.00005 : (2*pi - 0.00005);
+* y = sin(x);
+* where pi value is 3.141592653589793
+* --------------------------------------------------------------------*/
+
+float arm_linear_interep_table[188495] =  {
+
+
+-0.000000000000000122,	-0.000049999999979173,	-0.000099999999833667,	-0.000149999999437717,	-0.000199999998666767,	-0.000249999997395817,	-0.000299999995500311,	-0.000349999992854362,	
+-0.000399999989333412,	-0.000449999984812462,	-0.000499999979166956,	-0.000549999972271007,	-0.000599999964000057,	-0.000649999954229107,	-0.000699999942833602,	-0.000749999929687653,	
+-0.000799999914666704,	-0.000849999897645755,	-0.000899999878500250,	-0.000949999857104302,	-0.000999999833333354,	-0.001049999807062851,	-0.001099999778166904,	-0.001149999746520957,	
+-0.001199999712000011,	-0.001249999674479510,	-0.001299999633833566,	-0.001349999589937622,	-0.001399999542666680,	-0.001449999491896183,	-0.001499999437500243,	-0.001549999379354304,	
+-0.001599999317333367,	-0.001649999251312876,	-0.001699999181166942,	-0.001749999106771011,	-0.001799999028000082,	-0.001849998944729599,	-0.001899998856833675,	-0.001949998764187754,	
+-0.001999998666666836,	-0.002049998564146365,	-0.002099998456500453,	-0.002149998343604546,	-0.002199998225334087,	-0.002249998101563188,	-0.002299997972167294,	-0.002349997837021405,	
+-0.002399997696000966,	-0.002449997548980088,	-0.002499997395834216,	-0.002549997236438351,	-0.002599997070667937,	-0.002649996898397086,	-0.002699996719501243,	-0.002749996533855408,	
+-0.002799996341335026,	-0.002849996141814208,	-0.002899995935168401,	-0.002949995721272604,	-0.002999995500002261,	-0.003049995271231486,	-0.003099995034835722,	-0.003149994790690415,	
+-0.003199994538669677,	-0.003249994278648952,	-0.003299994010503243,	-0.003349993734107991,	-0.003399993449337312,	-0.003449993156066649,	-0.003499992854171003,	-0.003549992543525819,	
+-0.003599992224005209,	-0.003649991895484619,	-0.003699991557839049,	-0.003749991210943944,	-0.003799990854673418,	-0.003849990488902914,	-0.003899990113507434,	-0.003949989728362423,	
+-0.003999989333341993,	-0.004049988928321590,	-0.004099988513176658,	-0.004149988087781312,	-0.004199987652010995,	-0.004249987205740709,	-0.004299986748845899,	-0.004349986281200678,	
+-0.004399985802680492,	-0.004449985313160341,	-0.004499984812515671,	-0.004549984300620594,	-0.004599983777350557,	-0.004649983242580561,	-0.004699982696186050,	-0.004749982138041138,	
+-0.004799981568021272,	-0.004849980986001451,	-0.004899980391857122,	-0.004949979785462398,	-0.004999979166692725,	-0.005049978535423547,	-0.005099977891528979,	-0.005149977234884466,	
+-0.005199976565365011,	-0.005249975882846058,	-0.005299975187201721,	-0.005349974478307446,	-0.005399973756038235,	-0.005449973020269535,	-0.005499972270875456,	-0.005549971507731448,	
+-0.005599970730712511,	-0.005649969939694091,	-0.005699969134550302,	-0.005749968315156590,	-0.005799967481387958,	-0.005849966633119851,	-0.005899965770226383,	-0.005949964892583000,	
+-0.005999964000064706,	-0.006049963092546945,	-0.006099962169903833,	-0.006149961232010816,	-0.006199960278743339,	-0.006249959309975518,	-0.006299958325582797,	-0.006349957325440182,	
+-0.006399956309423117,	-0.006449955277405718,	-0.006499954229263430,	-0.006549953164871257,	-0.006599952084104644,	-0.006649950986837708,	-0.006699949872945895,	-0.006749948742304206,	
+-0.006799947594788089,	-0.006849946430271660,	-0.006899945248630365,	-0.006949944049739206,	-0.006999942833473632,	-0.007049941599707755,	-0.007099940348317025,	-0.007149939079176889,	
+-0.007199937792161461,	-0.007249936487146187,	-0.007299935164006074,	-0.007349933822616566,	-0.007399932462851779,	-0.007449931084587162,	-0.007499929687697716,	-0.007549928272058891,	
+-0.007599926837544801,	-0.007649925384030893,	-0.007699923911392173,	-0.007749922419504085,	-0.007799920908240749,	-0.007849919377477610,	-0.007899917827089672,	-0.007949916256952384,	
+-0.007999914666939863,	-0.008049913056927554,	-0.008099911426790906,	-0.008149909776404035,	-0.008199908105642390,	-0.008249906414380975,	-0.008299904702495238,	-0.008349902969859295,	
+-0.008399901216348595,	-0.008449899441838141,	-0.008499897646203384,	-0.008549895829318437,	-0.008599893991058752,	-0.008649892131299332,	-0.008699890249915625,	-0.008749888346781748,	
+-0.008799886421773151,	-0.008849884474764837,	-0.008899882505632256,	-0.008949880514249525,	-0.008999878500492093,	-0.009049876464234965,	-0.009099874405353590,	-0.009149872323722084,	
+-0.009199870219215898,	-0.009249868091710479,	-0.009299865941079948,	-0.009349863767199750,	-0.009399861569944894,	-0.009449859349190827,	-0.009499857104811669,	-0.009549854836682867,	
+-0.009599852544679429,	-0.009649850228676803,	-0.009699847888549109,	-0.009749845524171793,	-0.009799843135419864,	-0.009849840722168771,	-0.009899838284292632,	-0.009949835821666898,	
+-0.009999833334166574,	-0.010049830821667110,	-0.010099828284042626,	-0.010149825721168572,	-0.010199823132920397,	-0.010249820519172219,	-0.010299817879799491,	-0.010349815214677217,	
+-0.010399812523680850,	-0.010449809806684508,	-0.010499807063563642,	-0.010549804294193258,	-0.010599801498448806,	-0.010649798676204407,	-0.010699795827335511,	-0.010749792951717126,	
+-0.010799790049224703,	-0.010849787119732359,	-0.010899784163115548,	-0.010949781179249277,	-0.010999778168008997,	-0.011049775129268828,	-0.011099772062904221,	-0.011149768968790628,	
+-0.011199765846802169,	-0.011249762696814294,	-0.011299759518702013,	-0.011349756312340777,	-0.011399753077604706,	-0.011449749814369253,	-0.011499746522509425,	-0.011549743201900674,	
+-0.011599739852417123,	-0.011649736473934221,	-0.011699733066326979,	-0.011749729629470847,	-0.011799726163239948,	-0.011849722667509732,	-0.011899719142155211,	-0.011949715587051834,	
+-0.011999712002073726,	-0.012049708387096337,	-0.012099704741995123,	-0.012149701066644201,	-0.012199697360919026,	-0.012249693624694609,	-0.012299689857846402,	-0.012349686060248525,	
+-0.012399682231776434,	-0.012449678372305137,	-0.012499674481710089,	-0.012549670559865410,	-0.012599666606646555,	-0.012649662621928532,	-0.012699658605586799,	-0.012749654557495473,	
+-0.012799650477530011,	-0.012849646365565424,	-0.012899642221477166,	-0.012949638045139357,	-0.012999633836427452,	-0.013049629595216463,	-0.013099625321381845,	-0.013149621014797719,	
+-0.013199616675339540,	-0.013249612302882765,	-0.013299607897301514,	-0.013349603458471243,	-0.013399598986266964,	-0.013449594480564131,	-0.013499589941236869,	-0.013549585368160630,	
+-0.013599580761210430,	-0.013649576120261721,	-0.013699571445188626,	-0.013749566735866605,	-0.013799561992170667,	-0.013849557213976266,	-0.013899552401157530,	-0.013949547553589911,	
+-0.013999542671148425,	-0.014049537753708525,	-0.014099532801144338,	-0.014149527813331319,	-0.014199522790144923,	-0.014249517731459277,	-0.014299512637149837,	-0.014349507507091614,	
+-0.014399502341160067,	-0.014449497139229321,	-0.014499491901174831,	-0.014549486626871612,	-0.014599481316195120,	-0.014649475969019481,	-0.014699470585220153,	-0.014749465164672147,	
+-0.014799459707250922,	-0.014849454212830605,	-0.014899448681286651,	-0.014949443112494076,	-0.014999437506328338,	-0.015049431862663561,	-0.015099426181375206,	-0.015149420462338728,	
+-0.015199414705428255,	-0.015249408910519246,	-0.015299403077486715,	-0.015349397206206119,	-0.015399391296551587,	-0.015449385348398575,	-0.015499379361622101,	-0.015549373336097624,	
+-0.015599367271699268,	-0.015649361168302494,	-0.015699355025782315,	-0.015749348844014195,	-0.015799342622872262,	-0.015849336362231969,	-0.015899330061968333,	-0.015949323721956819,	
+-0.015999317342071551,	-0.016049310922187990,	-0.016099304462181149,	-0.016149297961926493,	-0.016199291421298147,	-0.016249284840171574,	-0.016299278218422232,	-0.016349271555924253,	
+-0.016399264852553091,	-0.016449258108183769,	-0.016499251322691748,	-0.016549244495951149,	-0.016599237627837445,	-0.016649230718225643,	-0.016699223766991209,	-0.016749216774008271,	
+-0.016799209739152290,	-0.016849202662298290,	-0.016899195543321723,	-0.016949188382096723,	-0.016999181178498753,	-0.017049173932402829,	-0.017099166643684417,	-0.017149159312217641,	
+-0.017199151937877969,	-0.017249144520540861,	-0.017299137060080447,	-0.017349129556372193,	-0.017399122009291113,	-0.017449114418712670,	-0.017499106784510998,	-0.017549099106561560,	
+-0.017599091384739373,	-0.017649083618919904,	-0.017699075808977279,	-0.017749067954786969,	-0.017799060056223986,	-0.017849052113163795,	-0.017899044125480532,	-0.017949036093049660,	
+-0.017999028015746196,	-0.018049019893445605,	-0.018099011726022022,	-0.018149003513350907,	-0.018198995255307732,	-0.018248986951766622,	-0.018298978602603044,	-0.018348970207692019,	
+-0.018398961766909014,	-0.018448953280128161,	-0.018498944747224924,	-0.018548936168074327,	-0.018598927542551831,	-0.018648918870531574,	-0.018698910151889018,	-0.018748901386499189,	
+-0.018798892574237547,	-0.018848883714978233,	-0.018898874808596710,	-0.018948865854967998,	-0.018998856853967565,	-0.019048847805469546,	-0.019098838709349409,	-0.019148829565482174,	
+-0.019198820373743309,	-0.019248811134006949,	-0.019298801846148562,	-0.019348792510043615,	-0.019398783125566241,	-0.019448773692591910,	-0.019498764210995646,	-0.019548754680652914,	
+-0.019598745101437852,	-0.019648735473225928,	-0.019698725795892161,	-0.019748716069312028,	-0.019798706293359659,	-0.019848696467910525,	-0.019898686592839651,	-0.019948676668022504,	
+-0.019998666693333219,	-0.020048656668647271,	-0.020098646593839677,	-0.020148636468785914,	-0.020198626293360115,	-0.020248616067437750,	-0.020298605790894288,	-0.020348595463603868,	
+-0.020398585085441959,	-0.020448574656283587,	-0.020498564176004225,	-0.020548553644478006,	-0.020598543061580404,	-0.020648532427186443,	-0.020698521741171597,	-0.020748511003410002,	
+-0.020798500213777129,	-0.020848489372148005,	-0.020898478478398104,	-0.020948467532401559,	-0.020998456534033847,	-0.021048445483169996,	-0.021098434379685473,	-0.021148423223454418,	
+-0.021198412014352307,	-0.021248400752254610,	-0.021298389437035468,	-0.021348378068570352,	-0.021398366646734290,	-0.021448355171402755,	-0.021498343642449892,	-0.021548332059751166,	
+-0.021598320423181612,	-0.021648308732616698,	-0.021698296987930570,	-0.021748285188998701,	-0.021798273335696117,	-0.021848261427898294,	-0.021898249465479372,	-0.021948237448314829,	
+-0.021998225376279691,	-0.022048213249249434,	-0.022098201067098200,	-0.022148188829701463,	-0.022198176536934698,	-0.022248164188672048,	-0.022298151784788989,	-0.022348139325160547,	
+-0.022398126809662203,	-0.022448114238168098,	-0.022498101610553708,	-0.022548088926694063,	-0.022598076186464637,	-0.022648063389739580,	-0.022698050536394364,	-0.022748037626304021,	
+-0.022798024659344031,	-0.022848011635388531,	-0.022897998554313004,	-0.022947985415992481,	-0.022997972220302438,	-0.023047958967117019,	-0.023097945656311705,	-0.023147932287761526,	
+-0.023197918861341957,	-0.023247905376927152,	-0.023297891834392580,	-0.023347878233613725,	-0.023397864574464730,	-0.023447850856821072,	-0.023497837080557787,	-0.023547823245550353,	
+-0.023597809351672917,	-0.023647795398800960,	-0.023697781386809513,	-0.023747767315574056,	-0.023797753184968740,	-0.023847738994869038,	-0.023897724745149989,	-0.023947710435687070,	
+-0.023997696066354435,	-0.024047681637027557,	-0.024097667147581475,	-0.024147652597891669,	-0.024197637987832289,	-0.024247623317278814,	-0.024297608586106724,	-0.024347593794190169,	
+-0.024397578941404627,	-0.024447564027625143,	-0.024497549052727188,	-0.024547534016584920,	-0.024597518919073816,	-0.024647503760068912,	-0.024697488539445693,	-0.024747473257078312,	
+-0.024797457912842245,	-0.024847442506612534,	-0.024897427038264662,	-0.024947411507672778,	-0.024997395914712364,	-0.025047380259258463,	-0.025097364541186551,	-0.025147348760370787,	
+-0.025197332916686650,	-0.025247317010009623,	-0.025297301040213861,	-0.025347285007174848,	-0.025397268910767622,	-0.025447252750867667,	-0.025497236527349136,	-0.025547220240087511,	
+-0.025597203888957840,	-0.025647187473835601,	-0.025697170994594950,	-0.025747154451111372,	-0.025797137843259908,	-0.025847121170916042,	-0.025897104433953929,	-0.025947087632249056,	
+-0.025997070765676464,	-0.026047053834111638,	-0.026097036837428735,	-0.026147019775503239,	-0.026197002648210635,	-0.026246985455425084,	-0.026296968197022069,	-0.026346950872876633,	
+-0.026396933482864263,	-0.026446916026859116,	-0.026496898504736681,	-0.026546880916371998,	-0.026596863261640555,	-0.026646845540416509,	-0.026696827752575352,	-0.026746809897992125,	
+-0.026796791976542320,	-0.026846773988100085,	-0.026896755932540921,	-0.026946737809739864,	-0.026996719619572406,	-0.027046701361912708,	-0.027096683036636253,	-0.027146664643618094,	
+-0.027196646182733715,	-0.027246627653857276,	-0.027296609056864270,	-0.027346590391630184,	-0.027396571658029178,	-0.027446552855936744,	-0.027496533985227927,	-0.027546515045778219,	
+-0.027596496037461778,	-0.027646476960154098,	-0.027696457813730226,	-0.027746438598065654,	-0.027796419313034542,	-0.027846399958512381,	-0.027896380534374220,	-0.027946361040495551,	
+-0.027996341476750536,	-0.028046321843014668,	-0.028096302139162994,	-0.028146282365071010,	-0.028196262520612875,	-0.028246242605664086,	-0.028296222620100130,	-0.028346202563795178,	
+-0.028396182436624718,	-0.028446162238463801,	-0.028496141969187923,	-0.028546121628671248,	-0.028596101216789266,	-0.028646080733417033,	-0.028696060178430041,	-0.028746039551702456,	
+-0.028796018853109770,	-0.028845998082527038,	-0.028895977239829753,	-0.028945956324892084,	-0.028995935337589523,	-0.029045914277797125,	-0.029095893145390381,	-0.029145871940243463,	
+-0.029195850662231865,	-0.029245829311231087,	-0.029295807887115288,	-0.029345786389759970,	-0.029395764819040188,	-0.029445743174831437,	-0.029495721457007882,	-0.029545699665445027,	
+-0.029595677800017921,	-0.029645655860602062,	-0.029695633847071624,	-0.029745611759302099,	-0.029795589597168545,	-0.029845567360546461,	-0.029895545049310013,	-0.029945522663334705,	
+-0.029995500202495588,	-0.030045477666668166,	-0.030095455055726604,	-0.030145432369546407,	-0.030195409608002627,	-0.030245386770970769,	-0.030295363858325000,	-0.030345340869940819,	
+-0.030395317805693732,	-0.030445294665457905,	-0.030495271449108841,	-0.030545248156521602,	-0.030595224787571682,	-0.030645201342133260,	-0.030695177820081833,	-0.030745154221292460,	
+-0.030795130545640648,	-0.030845106793000565,	-0.030895082963247715,	-0.030945059056257156,	-0.030995035071904393,	-0.031045011010063600,	-0.031094986870610280,	-0.031144962653419490,	
+-0.031194938358366741,	-0.031244913985326202,	-0.031294889534173378,	-0.031344865004783770,	-0.031394840397031561,	-0.031444815710792245,	-0.031494790945940897,	-0.031544766102353010,	
+-0.031594741179902762,	-0.031644716178465669,	-0.031694691097916783,	-0.031744665938131605,	-0.031794640698984328,	-0.031844615380350445,	-0.031894589982105023,	-0.031944564504123571,	
+-0.031994538946280265,	-0.032044513308450616,	-0.032094487590509674,	-0.032144461792332962,	-0.032194435913794651,	-0.032244409954770251,	-0.032294383915135269,	-0.032344357794763884,	
+-0.032394331593531604,	-0.032444305311313495,	-0.032494278947985067,	-0.032544252503420502,	-0.032594225977495297,	-0.032644199370084531,	-0.032694172681063713,	-0.032744145910307020,	
+-0.032794119057689960,	-0.032844092123087601,	-0.032894065106375457,	-0.032944038007427706,	-0.032994010826119857,	-0.033043983562326990,	-0.033093956215924598,	-0.033143928786786875,	
+-0.033193901274789335,	-0.033243873679807037,	-0.033293846001715498,	-0.033343818240388901,	-0.033393790395702755,	-0.033443762467532584,	-0.033493734455752558,	-0.033543706360238200,	
+-0.033593678180864575,	-0.033643649917507193,	-0.033693621570040251,	-0.033743593138339245,	-0.033793564622279268,	-0.033843536021735815,	-0.033893507336583077,	-0.033943478566696578,	
+-0.033993449711951375,	-0.034043420772222999,	-0.034093391747385619,	-0.034143362637314767,	-0.034193333441885507,	-0.034243304160973355,	-0.034293274794452495,	-0.034343245342198452,	
+-0.034393215804086739,	-0.034443186179991543,	-0.034493156469788386,	-0.034543126673352333,	-0.034593096790558907,	-0.034643066821282299,	-0.034693036765398019,	-0.034743006622781153,	
+-0.034792976393307209,	-0.034842946076850380,	-0.034892915673286187,	-0.034942885182489711,	-0.034992854604336460,	-0.035042823938700625,	-0.035092793185457737,	-0.035142762344482860,	
+-0.035192731415651525,	-0.035242700398837916,	-0.035292669293917563,	-0.035342638100765975,	-0.035392606819257343,	-0.035442575449267197,	-0.035492543990670616,	-0.035542512443343117,	
+-0.035592480807158891,	-0.035642449081993467,	-0.035692417267721918,	-0.035742385364219767,	-0.035792353371361212,	-0.035842321289021775,	-0.035892289117076537,	-0.035942256855401013,	
+-0.035992224503869408,	-0.036042192062357238,	-0.036092159530739590,	-0.036142126908891986,	-0.036192094196688625,	-0.036242061394005022,	-0.036292028500716271,	-0.036341995516697888,	
+-0.036391962441824077,	-0.036441929275970356,	-0.036491896019012260,	-0.036541862670823974,	-0.036591829231281035,	-0.036641795700258523,	-0.036691762077631966,	-0.036741728363275557,	
+-0.036791694557064832,	-0.036841660658874870,	-0.036891626668581194,	-0.036941592586058017,	-0.036991558411180854,	-0.037041524143824792,	-0.037091489783865367,	-0.037141455331176770,	
+-0.037191420785634539,	-0.037241386147113753,	-0.037291351415489948,	-0.037341316590637316,	-0.037391281672431401,	-0.037441246660747718,	-0.037491211555460480,	-0.037541176356445209,	
+-0.037591141063576999,	-0.037641105676731380,	-0.037691070195782550,	-0.037741034620606045,	-0.037790998951076960,	-0.037840963187070815,	-0.037890927328461818,	-0.037940891375125504,	
+-0.037990855326936968,	-0.038040819183771730,	-0.038090782945504005,	-0.038140746612009321,	-0.038190710183162765,	-0.038240673658839881,	-0.038290637038914874,	-0.038340600323263266,	
+-0.038390563511760609,	-0.038440526604281093,	-0.038490489600700263,	-0.038540452500893212,	-0.038590415304735469,	-0.038640378012101247,	-0.038690340622866082,	-0.038740303136905060,	
+-0.038790265554093727,	-0.038840227874306285,	-0.038890190097418273,	-0.038940152223304790,	-0.038990114251841367,	-0.039040076182902214,	-0.039090038016362870,	-0.039139999752098434,	
+-0.039189961389984436,	-0.039239922929895095,	-0.039289884371705948,	-0.039339845715292532,	-0.039389806960529065,	-0.039439768107291072,	-0.039489729155453658,	-0.039539690104892368,	
+-0.039589650955481413,	-0.039639611707096324,	-0.039689572359612207,	-0.039739532912904607,	-0.039789493366847728,	-0.039839453721317121,	-0.039889413976187872,	-0.039939374131335532,	
+-0.039989334186634320,	-0.040039294141959766,	-0.040089253997186977,	-0.040139213752191497,	-0.040189173406847543,	-0.040239132961030655,	-0.040289092414616375,	-0.040339051767478921,	
+-0.040389011019493840,	-0.040438970170536229,	-0.040488929220481633,	-0.040538888169204278,	-0.040588847016579700,	-0.040638805762483000,	-0.040688764406789736,	-0.040738722949374112,	
+-0.040788681390111679,	-0.040838639728877552,	-0.040888597965547259,	-0.040938556099995034,	-0.040988514132096414,	-0.041038472061726512,	-0.041088429888760873,	-0.041138387613073715,	
+-0.041188345234540590,	-0.041238302753036603,	-0.041288260168437299,	-0.041338217480616897,	-0.041388174689450961,	-0.041438131794815029,	-0.041488088796583319,	-0.041538045694631390,	
+-0.041588002488834347,	-0.041637959179067742,	-0.041687915765205794,	-0.041737872247124060,	-0.041787828624697640,	-0.041837784897802099,	-0.041887741066311650,	-0.041937697130101842,	
+-0.041987653089047797,	-0.042037608943025065,	-0.042087564691907858,	-0.042137520335571749,	-0.042187475873891836,	-0.042237431306743671,	-0.042287386634001493,	-0.042337341855540847,	
+-0.042387296971237283,	-0.042437251980965041,	-0.042487206884599664,	-0.042537161682016274,	-0.042587116373090421,	-0.042637070957696331,	-0.042687025435709569,	-0.042736979807005242,	
+-0.042786934071458907,	-0.042836888228944790,	-0.042886842279338457,	-0.042936796222515020,	-0.042986750058350030,	-0.043036703786717728,	-0.043086657407493664,	-0.043136610920552952,	
+-0.043186564325771164,	-0.043236517623022518,	-0.043286470812182579,	-0.043336423893126905,	-0.043386376865729728,	-0.043436329729866607,	-0.043486282485412663,	-0.043536235132243459,	
+-0.043586187670233222,	-0.043636140099257516,	-0.043686092419191462,	-0.043736044629910618,	-0.043785996731289217,	-0.043835948723202824,	-0.043885900605526565,	-0.043935852378135992,	
+-0.043985804040905345,	-0.044035755593710195,	-0.044085707036425649,	-0.044135658368927279,	-0.044185609591089324,	-0.044235560702787342,	-0.044285511703896455,	-0.044335462594292240,	
+-0.044385413373848923,	-0.044435364042442069,	-0.044485314599947250,	-0.044535265046238698,	-0.044585215381191985,	-0.044635165604682239,	-0.044685115716585018,	-0.044735065716774568,	
+-0.044785015605126446,	-0.044834965381515789,	-0.044884915045818166,	-0.044934864597907805,	-0.044984814037660290,	-0.045034763364950735,	-0.045084712579654712,	-0.045134661681646468,	
+-0.045184610670801574,	-0.045234559546995151,	-0.045284508310102771,	-0.045334456959998673,	-0.045384405496558436,	-0.045434353919657632,	-0.045484302229170492,	-0.045534250424972604,	
+-0.045584198506939087,	-0.045634146474945521,	-0.045684094328866137,	-0.045734042068576522,	-0.045783989693951803,	-0.045833937204867552,	-0.045883884601198015,	-0.045933831882818764,	
+-0.045983779049604941,	-0.046033726101432110,	-0.046083673038174518,	-0.046133619859707743,	-0.046183566565906921,	-0.046233513156647622,	-0.046283459631804101,	-0.046333405991251929,	
+-0.046383352234866684,	-0.046433298362522614,	-0.046483244374095303,	-0.046533190269459880,	-0.046583136048491923,	-0.046633081711065685,	-0.046683027257056739,	-0.046732972686340225,	
+-0.046782917998791723,	-0.046832863194285486,	-0.046882808272697092,	-0.046932753233901670,	-0.046982698077774818,	-0.047032642804190769,	-0.047082587413025116,	-0.047132531904152994,	
+-0.047182476277449988,	-0.047232420532790344,	-0.047282364670049655,	-0.047332308689103049,	-0.047382252589826118,	-0.047432196372093109,	-0.047482140035779608,	-0.047532083580761206,	
+-0.047582027006912150,	-0.047631970314108020,	-0.047681913502223970,	-0.047731856571135579,	-0.047781799520717101,	-0.047831742350844128,	-0.047881685061391802,	-0.047931627652235700,	
+-0.047981570123250085,	-0.048031512474310548,	-0.048081454705292230,	-0.048131396816070718,	-0.048181338806520271,	-0.048231280676516476,	-0.048281222425934481,	-0.048331164054649871,	
+-0.048381105562536907,	-0.048431046949471181,	-0.048480988215328286,	-0.048530929359982468,	-0.048580870383309334,	-0.048630811285184018,	-0.048680752065482120,	-0.048730692724077894,	
+-0.048780633260846945,	-0.048830573675664408,	-0.048880513968405877,	-0.048930454138945624,	-0.048980394187159236,	-0.049030334112921854,	-0.049080273916109085,	-0.049130213596595189,	
+-0.049180153154255758,	-0.049230092588965949,	-0.049280031900601345,	-0.049329971089036223,	-0.049379910154146167,	-0.049429849095806784,	-0.049479787913892334,	-0.049529726608278417,	
+-0.049579665178840181,	-0.049629603625453225,	-0.049679541947991818,	-0.049729480146331551,	-0.049779418220347586,	-0.049829356169915524,	-0.049879293994909625,	-0.049929231695205488,	
+-0.049979169270678275,	-0.050029106721203580,	-0.050079044046655675,	-0.050128981246910162,	-0.050178918321842195,	-0.050228855271327380,	-0.050278792095239978,	-0.050328728793455596,	
+-0.050378665365849389,	-0.050428601812296969,	-0.050478538132672598,	-0.050528474326851883,	-0.050578410394710421,	-0.050628346336122496,	-0.050678282150963705,	-0.050728217839109205,	
+-0.050778153400434602,	-0.050828088834814177,	-0.050878024142123529,	-0.050927959322237815,	-0.050977894375032654,	-0.051027829300382306,	-0.051077764098162393,	-0.051127698768248062,	
+-0.051177633310514933,	-0.051227567724837275,	-0.051277502011090700,	-0.051327436169150371,	-0.051377370198891888,	-0.051427304100189544,	-0.051477237872918934,	-0.051527171516955676,	
+-0.051577105032174046,	-0.051627038418449650,	-0.051676971675657664,	-0.051726904803673687,	-0.051776837802372008,	-0.051826770671628226,	-0.051876703411317525,	-0.051926636021315510,	
+-0.051976568501496463,	-0.052026500851735991,	-0.052076433071909262,	-0.052126365161891904,	-0.052176297121558184,	-0.052226228950783722,	-0.052276160649443688,	-0.052326092217413696,	
+-0.052376023654568026,	-0.052425954960782298,	-0.052475886135932133,	-0.052525817179891805,	-0.052575748092536935,	-0.052625678873742691,	-0.052675609523384695,	-0.052725540041337234,	
+-0.052775470427475921,	-0.052825400681675933,	-0.052875330803812882,	-0.052925260793761066,	-0.052975190651396095,	-0.053025120376593154,	-0.053075049969227850,	-0.053124979429174476,	
+-0.053174908756308654,	-0.053224837950505567,	-0.053274767011640821,	-0.053324695939588718,	-0.053374624734224871,	-0.053424553395424908,	-0.053474481923063123,	-0.053524410317015131,	
+-0.053574338577156107,	-0.053624266703361685,	-0.053674194695506154,	-0.053724122553465134,	-0.053774050277113808,	-0.053823977866327796,	-0.053873905320981401,	-0.053923832640950242,	
+-0.053973759826109496,	-0.054023686876334805,	-0.054073613791500441,	-0.054123540571482054,	-0.054173467216154805,	-0.054223393725394337,	-0.054273320099074943,	-0.054323246337072244,	
+-0.054373172439261881,	-0.054423098405518136,	-0.054473024235716642,	-0.054522949929732598,	-0.054572875487441615,	-0.054622800908718003,	-0.054672726193437382,	-0.054722651341474957,	
+-0.054772576352706340,	-0.054822501227005840,	-0.054872425964249086,	-0.054922350564311266,	-0.054972275027068015,	-0.055022199352393636,	-0.055072123540163755,	-0.055122047590253562,	
+-0.055171971502538698,	-0.055221895276893460,	-0.055271818913193486,	-0.055321742411313962,	-0.055371665771130528,	-0.055421588992517486,	-0.055471512075350470,	-0.055521435019505121,	
+-0.055571357824855741,	-0.055621280491277958,	-0.055671203018646982,	-0.055721125406838441,	-0.055771047655726637,	-0.055820969765187224,	-0.055870891735095379,	-0.055920813565326750,	
+-0.055970735255755640,	-0.056020656806257701,	-0.056070578216708113,	-0.056120499486982521,	-0.056170420616955243,	-0.056220341606501911,	-0.056270262455497724,	-0.056320183163818323,	
+-0.056370103731338023,	-0.056420024157932465,	-0.056469944443477291,	-0.056519864587846809,	-0.056569784590916668,	-0.056619704452562064,	-0.056669624172658639,	-0.056719543751080716,	
+-0.056769463187703935,	-0.056819382482403487,	-0.056869301635055033,	-0.056919220645532884,	-0.056969139513712679,	-0.057019058239469622,	-0.057068976822679369,	-0.057118895263216229,	
+-0.057168813560955850,	-0.057218731715773435,	-0.057268649727544640,	-0.057318567596143774,	-0.057368485321446491,	-0.057418402903328433,	-0.057468320341663930,	-0.057518237636328622,	
+-0.057568154787197720,	-0.057618071794146873,	-0.057667988657050410,	-0.057717905375783973,	-0.057767821950222766,	-0.057817738380242456,	-0.057867654665717354,	-0.057917570806523114,	
+-0.057967486802534947,	-0.058017402653628508,	-0.058067318359678120,	-0.058117233920559432,	-0.058167149336147660,	-0.058217064606318460,	-0.058266979730946154,	-0.058316894709906399,	
+-0.058366809543074410,	-0.058416724230325838,	-0.058466638771535011,	-0.058516553166577591,	-0.058566467415329226,	-0.058616381517664254,	-0.058666295473458328,	-0.058716209282586661,	
+-0.058766122944924913,	-0.058816036460347415,	-0.058865949828729829,	-0.058915863049947365,	-0.058965776123875685,	-0.059015689050389127,	-0.059065601829363344,	-0.059115514460673556,	
+-0.059165426944195423,	-0.059215339279803283,	-0.059265251467372798,	-0.059315163506779178,	-0.059365075397898093,	-0.059414987140603878,	-0.059464898734772197,	-0.059514810180278710,	
+-0.059564721476997755,	-0.059614632624804993,	-0.059664543623575657,	-0.059714454473185401,	-0.059764365173508562,	-0.059814275724420815,	-0.059864186125797379,	-0.059914096377513916,	
+-0.059964006479444776,	-0.060013916431465614,	-0.060063826233451661,	-0.060113735885278588,	-0.060163645386820737,	-0.060213554737953763,	-0.060263463938552905,	-0.060313372988493832,	
+-0.060363281887650888,	-0.060413190635899734,	-0.060463099233116047,	-0.060513007679174169,	-0.060562915973949770,	-0.060612824117318082,	-0.060662732109154779,	-0.060712639949334200,	
+-0.060762547637732020,	-0.060812455174223477,	-0.060862362558684234,	-0.060912269790988648,	-0.060962176871012380,	-0.061012083798630670,	-0.061061990573719201,	-0.061111897196152308,	
+-0.061161803665805668,	-0.061211709982554520,	-0.061261616146274546,	-0.061311522156840083,	-0.061361428014126820,	-0.061411333718009983,	-0.061461239268365254,	-0.061511144665066991,	
+-0.061561049907990856,	-0.061610954997012544,	-0.061660859932006401,	-0.061710764712848115,	-0.061760669339412912,	-0.061810573811576473,	-0.061860478129213164,	-0.061910382292198654,	
+-0.061960286300408195,	-0.062010190153717455,	-0.062060093852000807,	-0.062109997395133919,	-0.062159900782992036,	-0.062209804015450842,	-0.062259707092384702,	-0.062309610013669289,	
+-0.062359512779179851,	-0.062409415388792078,	-0.062459317842380319,	-0.062509220139820271,	-0.062559122280987617,	-0.062609024265756708,	-0.062658926094003239,	-0.062708827765602451,	
+-0.062758729280430040,	-0.062808630638360369,	-0.062858531839269122,	-0.062908432883031537,	-0.062958333769523311,	-0.063008234498618809,	-0.063058135070193727,	-0.063108035484123304,	
+-0.063157935740283236,	-0.063207835838547888,	-0.063257735778792956,	-0.063307635560893666,	-0.063357535184725741,	-0.063407434650163547,	-0.063457333957082751,	-0.063507233105359065,	
+-0.063557132094866853,	-0.063607030925481811,	-0.063656929597079193,	-0.063706828109534694,	-0.063756726462722679,	-0.063806624656518859,	-0.063856522690798473,	-0.063906420565437216,	
+-0.063956318280309468,	-0.064006215835290925,	-0.064056113230256839,	-0.064106010465082922,	-0.064155907539643522,	-0.064205804453814366,	-0.064255701207470692,	-0.064305597800488210,	
+-0.064355494232741298,	-0.064405390504105639,	-0.064455286614456500,	-0.064505182563669605,	-0.064555078351619291,	-0.064604973978181296,	-0.064654869443231303,	-0.064704764746643703,	
+-0.064754659888294180,	-0.064804554868058001,	-0.064854449685810889,	-0.064904344341427209,	-0.064954238834782671,	-0.065004133165752528,	-0.065054027334212505,	-0.065103921340036966,	
+-0.065153815183101621,	-0.065203708863281737,	-0.065253602380453024,	-0.065303495734489861,	-0.065353388925267972,	-0.065403281952663039,	-0.065453174816549470,	-0.065503067516802946,	
+-0.065552960053298776,	-0.065602852425912628,	-0.065652744634518923,	-0.065702636678993342,	-0.065752528559211182,	-0.065802420275048137,	-0.065852311826378601,	-0.065902203213078284,	
+-0.065952094435022451,	-0.066001985492086829,	-0.066051876384145808,	-0.066101767111075085,	-0.066151657672749956,	-0.066201548069046129,	-0.066251438299837970,	-0.066301328365001230,	
+-0.066351218264411163,	-0.066401107997943493,	-0.066450997565472611,	-0.066500886966874243,	-0.066550776202024098,	-0.066600665270796555,	-0.066650554173067367,	-0.066700442908711785,	
+-0.066750331477605535,	-0.066800219879623021,	-0.066850108114639956,	-0.066899996182531618,	-0.066949884083173733,	-0.066999771816440706,	-0.067049659382208235,	-0.067099546780351613,	
+-0.067149434010746578,	-0.067199321073267509,	-0.067249207967790145,	-0.067299094694189751,	-0.067348981252342066,	-0.067398867642121496,	-0.067448753863403738,	-0.067498639916064113,	
+-0.067548525799978318,	-0.067598411515020773,	-0.067648297061067189,	-0.067698182437993318,	-0.067748067645673551,	-0.067797952683983601,	-0.067847837552798773,	-0.067897722251994794,	
+-0.067947606781446068,	-0.067997491141028335,	-0.068047375330616861,	-0.068097259350087397,	-0.068147143199314336,	-0.068197026878173431,	-0.068246910386539947,	-0.068296793724289637,	
+-0.068346676891296892,	-0.068396559887437453,	-0.068446442712587069,	-0.068496325366620134,	-0.068546207849412372,	-0.068596090160839104,	-0.068645972300776043,	-0.068695854269097620,	
+-0.068745736065679547,	-0.068795617690397146,	-0.068845499143126140,	-0.068895380423740937,	-0.068945261532117288,	-0.068995142468130488,	-0.069045023231656275,	-0.069094903822569068,	
+-0.069144784240744592,	-0.069194664486058155,	-0.069244544558385496,	-0.069294424457601034,	-0.069344304183580521,	-0.069394183736199239,	-0.069444063115332938,	-0.069493942320856039,	
+-0.069543821352644294,	-0.069593700210573428,	-0.069643578894517874,	-0.069693457404353371,	-0.069743335739955226,	-0.069793213901199178,	-0.069843091887959660,	-0.069892969700112398,	
+-0.069942847337532726,	-0.069992724800096370,	-0.070042602087677777,	-0.070092479200152658,	-0.070142356137396347,	-0.070192232899284598,	-0.070242109485691817,	-0.070291985896493756,	
+-0.070341862131565736,	-0.070391738190783509,	-0.070441614074021483,	-0.070491489781155436,	-0.070541365312061094,	-0.070591240666612903,	-0.070641115844686603,	-0.070690990846157514,	
+-0.070740865670901404,	-0.070790740318792678,	-0.070840614789707101,	-0.070890489083519984,	-0.070940363200107090,	-0.070990237139342854,	-0.071040110901103015,	-0.071089984485262894,	
+-0.071139857891698272,	-0.071189731120283539,	-0.071239604170894505,	-0.071289477043406435,	-0.071339349737695137,	-0.071389222253635004,	-0.071439094591101829,	-0.071488966749971350,	
+-0.071538838730118015,	-0.071588710531417590,	-0.071638582153745384,	-0.071688453596977161,	-0.071738324860987371,	-0.071788195945651764,	-0.071838066850845664,	-0.071887937576444835,	
+-0.071937808122323726,	-0.071987678488358103,	-0.072037548674423274,	-0.072087418680395018,	-0.072137288506147770,	-0.072187158151557310,	-0.072237027616498944,	-0.072286896900848469,	
+-0.072336766004480288,	-0.072386634927270210,	-0.072436503669093530,	-0.072486372229826040,	-0.072536240609342176,	-0.072586108807517716,	-0.072635976824228413,	-0.072685844659348742,	
+-0.072735712312754441,	-0.072785579784320875,	-0.072835447073923795,	-0.072885314181437663,	-0.072935181106738231,	-0.072985047849700863,	-0.073034914410201310,	-0.073084780788114020,	
+-0.073134646983314788,	-0.073184512995678935,	-0.073234378825082241,	-0.073284244471399168,	-0.073334109934505468,	-0.073383975214276503,	-0.073433840310588042,	-0.073483705223314544,	
+-0.073533569952331776,	-0.073583434497515518,	-0.073633298858740245,	-0.073683163035881710,	-0.073733027028815276,	-0.073782890837416723,	-0.073832754461560485,	-0.073882617901122369,	
+-0.073932481155977711,	-0.073982344226002292,	-0.074032207111070572,	-0.074082069811058332,	-0.074131932325840921,	-0.074181794655294106,	-0.074231656799292375,	-0.074281518757711509,	
+-0.074331380530426830,	-0.074381242117314159,	-0.074431103518247929,	-0.074480964733103935,	-0.074530825761757985,	-0.074580686604084512,	-0.074630547259959337,	-0.074680407729257797,	
+-0.074730268011855672,	-0.074780128107627436,	-0.074829988016448870,	-0.074879847738195351,	-0.074929707272742646,	-0.074979566619965229,	-0.075029425779738895,	-0.075079284751938993,	
+-0.075129143536441331,	-0.075179002133120371,	-0.075228860541851891,	-0.075278718762511271,	-0.075328576794974303,	-0.075378434639115435,	-0.075428292294810489,	-0.075478149761934815,	
+-0.075528007040364192,	-0.075577864129973124,	-0.075627721030637390,	-0.075677577742232813,	-0.075727434264633825,	-0.075777290597716263,	-0.075827146741355475,	-0.075877002695427256,	
+-0.075926858459806096,	-0.075976714034367787,	-0.076026569418987694,	-0.076076424613541610,	-0.076126279617904039,	-0.076176134431950759,	-0.076225989055557150,	-0.076275843488599004,	
+-0.076325697730950798,	-0.076375551782488366,	-0.076425405643087044,	-0.076475259312622654,	-0.076525112790969671,	-0.076574966078003903,	-0.076624819173601172,	-0.076674672077635939,	
+-0.076724524789984039,	-0.076774377310520822,	-0.076824229639122096,	-0.076874081775662365,	-0.076923933720017421,	-0.076973785472062642,	-0.077023637031673850,	-0.077073488398725520,	
+-0.077123339573093461,	-0.077173190554653062,	-0.077223041343280133,	-0.077272891938849148,	-0.077322742341235942,	-0.077372592550315866,	-0.077422442565964769,	-0.077472292388057112,	
+-0.077522142016468731,	-0.077571991451075434,	-0.077621840691751709,	-0.077671689738373392,	-0.077721538590815847,	-0.077771387248954896,	-0.077821235712665041,	-0.077871083981822090,	
+-0.077920932056301434,	-0.077970779935978882,	-0.078020627620728950,	-0.078070475110427445,	-0.078120322404949746,	-0.078170169504171688,	-0.078220016407967760,	-0.078269863116213798,	
+-0.078319709628785178,	-0.078369555945557723,	-0.078419402066405935,	-0.078469247991205637,	-0.078519093719832234,	-0.078568939252161518,	-0.078618784588068036,	-0.078668629727427580,	
+-0.078718474670115987,	-0.078768319416007773,	-0.078818163964978760,	-0.078868008316904326,	-0.078917852471660319,	-0.078967696429121242,	-0.079017540189162933,	-0.079067383751660766,	
+-0.079117227116490579,	-0.079167070283526875,	-0.079216913252645516,	-0.079266756023721852,	-0.079316598596631746,	-0.079366440971249716,	-0.079416283147451569,	-0.079466125125113155,	
+-0.079515966904108989,	-0.079565808484314909,	-0.079615649865606306,	-0.079665491047859027,	-0.079715332030947578,	-0.079765172814747792,	-0.079815013399135076,	-0.079864853783985265,	
+-0.079914693969172876,	-0.079964533954573758,	-0.080014373740063302,	-0.080064213325517358,	-0.080114052710810443,	-0.080163891895818393,	-0.080213730880416598,	-0.080263569664480935,	
+-0.080313408247885895,	-0.080363246630507340,	-0.080413084812220675,	-0.080462922792901737,	-0.080512760572425041,	-0.080562598150666451,	-0.080612435527501802,	-0.080662272702805626,	
+-0.080712109676453772,	-0.080761946448321645,	-0.080811783018285080,	-0.080861619386218636,	-0.080911455551998121,	-0.080961291515498982,	-0.081011127276597053,	-0.081060962835166867,	
+-0.081110798191084271,	-0.081160633344224672,	-0.081210468294463947,	-0.081260303041676599,	-0.081310137585738490,	-0.081359971926525040,	-0.081409806063912113,	-0.081459639997774225,	
+-0.081509473727987225,	-0.081559307254426547,	-0.081609140576968053,	-0.081658973695486248,	-0.081708806609857021,	-0.081758639319956222,	-0.081808471825658369,	-0.081858304126839351,	
+-0.081908136223374561,	-0.081957968115139876,	-0.082007799802009840,	-0.082057631283860288,	-0.082107462560566669,	-0.082157293632004830,	-0.082207124498049317,	-0.082256955158575992,	
+-0.082306785613460276,	-0.082356615862578045,	-0.082406445905803830,	-0.082456275743013493,	-0.082506105374082914,	-0.082555934798886635,	-0.082605764017300506,	-0.082655593029199975,	
+-0.082705421834460904,	-0.082755250432957839,	-0.082805078824566655,	-0.082854907009162759,	-0.082904734986622042,	-0.082954562756819047,	-0.083004390319629640,	-0.083054217674929265,	
+-0.083104044822593787,	-0.083153871762497750,	-0.083203698494517031,	-0.083253525018527078,	-0.083303351334403752,	-0.083353177442021600,	-0.083403003341256499,	-0.083452829031983894,	
+-0.083502654514079663,	-0.083552479787418352,	-0.083602304851875850,	-0.083652129707328007,	-0.083701954353649410,	-0.083751778790715936,	-0.083801603018403004,	-0.083851427036586504,	
+-0.083901250845141009,	-0.083951074443942370,	-0.084000897832866059,	-0.084050721011787927,	-0.084100543980582573,	-0.084150366739125848,	-0.084200189287293198,	-0.084250011624960527,	
+-0.084299833752002382,	-0.084349655668294651,	-0.084399477373712783,	-0.084449298868132669,	-0.084499120151428866,	-0.084548941223477253,	-0.084598762084153289,	-0.084648582733332867,	
+-0.084698403170890543,	-0.084748223396702210,	-0.084798043410643759,	-0.084847863212589761,	-0.084897682802416108,	-0.084947502179998247,	-0.084997321345212068,	-0.085047140297932144,	
+-0.085096959038034381,	-0.085146777565394210,	-0.085196595879887538,	-0.085246413981388935,	-0.085296231869774294,	-0.085346049544919075,	-0.085395867006699169,	-0.085445684254989163,	
+-0.085495501289664946,	-0.085545318110602411,	-0.085595134717676144,	-0.085644951110762035,	-0.085694767289735560,	-0.085744583254472595,	-0.085794399004847741,	-0.085844214540736888,	
+-0.085894029862015484,	-0.085943844968559460,	-0.085993659860243390,	-0.086043474536943151,	-0.086093288998534245,	-0.086143103244892549,	-0.086192917275892650,	-0.086242731091410452,	
+-0.086292544691321443,	-0.086342358075501502,	-0.086392171243825228,	-0.086441984196168525,	-0.086491796932406870,	-0.086541609452416152,	-0.086591421756070971,	-0.086641233843247234,	
+-0.086691045713820872,	-0.086740857367666430,	-0.086790668804659854,	-0.086840480024676606,	-0.086890291027592603,	-0.086940101813282433,	-0.086989912381622000,	-0.087039722732486793,	
+-0.087089532865752717,	-0.087139342781294371,	-0.087189152478987661,	-0.087238961958708075,	-0.087288771220331532,	-0.087338580263732604,	-0.087388389088787238,	-0.087438197695370895,	
+-0.087488006083359507,	-0.087537814252627646,	-0.087587622203051260,	-0.087637429934506253,	-0.087687237446867239,	-0.087737044740010137,	-0.087786851813810407,	-0.087836658668143996,	
+-0.087886465302885491,	-0.087936271717910838,	-0.087986077913095498,	-0.088035883888315403,	-0.088085689643445153,	-0.088135495178360682,	-0.088185300492937477,	-0.088235105587051457,	
+-0.088284910460577223,	-0.088334715113390735,	-0.088384519545367440,	-0.088434323756383298,	-0.088484127746312896,	-0.088533931515032194,	-0.088583735062417082,	-0.088633538388342203,	
+-0.088683341492683476,	-0.088733144375316403,	-0.088782947036116902,	-0.088832749474959588,	-0.088882551691720407,	-0.088932353686274848,	-0.088982155458498843,	-0.089031957008267007,	
+-0.089081758335455272,	-0.089131559439939154,	-0.089181360321594572,	-0.089231160980296154,	-0.089280961415919832,	-0.089330761628341096,	-0.089380561617435905,	-0.089430361383078874,	
+-0.089480160925145935,	-0.089529960243512591,	-0.089579759338054787,	-0.089629558208647153,	-0.089679356855165607,	-0.089729155277486122,	-0.089778953475483314,	-0.089828751449033115,	
+-0.089878549198011026,	-0.089928346722293023,	-0.089978144021753706,	-0.090027941096269021,	-0.090077737945714498,	-0.090127534569966056,	-0.090177330968898350,	-0.090227127142387301,	
+-0.090276923090308450,	-0.090326718812537732,	-0.090376514308949760,	-0.090426309579420522,	-0.090476104623825493,	-0.090525899442040647,	-0.090575694033940626,	-0.090625488399401349,	
+-0.090675282538298804,	-0.090725076450507619,	-0.090774870135903726,	-0.090824663594362670,	-0.090874456825760383,	-0.090924249829971521,	-0.090974042606872044,	-0.091023835156337454,	
+-0.091073627478243713,	-0.091123419572465461,	-0.091173211438878660,	-0.091223003077358839,	-0.091272794487781944,	-0.091322585670022619,	-0.091372376623956836,	-0.091422167349460112,	
+-0.091471957846408408,	-0.091521748114676379,	-0.091571538154139959,	-0.091621327964675148,	-0.091671117546156575,	-0.091720906898460214,	-0.091770696021461567,	-0.091820484915036638,	
+-0.091870273579060052,	-0.091920062013407786,	-0.091969850217955354,	-0.092019638192578745,	-0.092069425937152602,	-0.092119213451552884,	-0.092169000735655135,	-0.092218787789335330,	
+-0.092268574612468124,	-0.092318361204929464,	-0.092368147566594908,	-0.092417933697340429,	-0.092467719597040671,	-0.092517505265571606,	-0.092567290702808780,	-0.092617075908628180,	
+-0.092666860882904434,	-0.092716645625513544,	-0.092766430136331485,	-0.092816214415232912,	-0.092865998462093799,	-0.092915782276789677,	-0.092965565859196561,	-0.093015349209189080,	
+-0.093065132326643221,	-0.093114915211434529,	-0.093164697863439005,	-0.093214480282531278,	-0.093264262468587364,	-0.093314044421482792,	-0.093363826141093550,	-0.093413607627294296,	
+-0.093463388879961029,	-0.093513169898969725,	-0.093562950684195054,	-0.093612731235513016,	-0.093662511552799144,	-0.093712291635929437,	-0.093762071484778553,	-0.093811851099222493,	
+-0.093861630479136815,	-0.093911409624397493,	-0.093961188534879211,	-0.094010967210457944,	-0.094060745651009275,	-0.094110523856409167,	-0.094160301826532330,	-0.094210079561254725,	
+-0.094259857060451924,	-0.094309634323999914,	-0.094359411351773378,	-0.094409188143648320,	-0.094458964699500297,	-0.094508741019205297,	-0.094558517102638004,	-0.094608292949674419,	
+-0.094658068560190545,	-0.094707843934061051,	-0.094757619071161953,	-0.094807393971368809,	-0.094857168634557607,	-0.094906943060603058,	-0.094956717249381151,	-0.095006491200767443,	
+-0.095056264914637950,	-0.095106038390867356,	-0.095155811629331663,	-0.095205584629906442,	-0.095255357392467710,	-0.095305129916890136,	-0.095354902203049735,	-0.095404674250822080,	
+-0.095454446060083187,	-0.095504217630707725,	-0.095553988962571723,	-0.095603760055550754,	-0.095653530909520820,	-0.095703301524356618,	-0.095753071899934178,	-0.095802842036129487,	
+-0.095852611932817244,	-0.095902381589873478,	-0.095952151007173761,	-0.096001920184594094,	-0.096051689122009204,	-0.096101457819295077,	-0.096151226276327315,	-0.096200994492981917,	
+-0.096250762469133597,	-0.096300530204658383,	-0.096350297699431819,	-0.096400064953329978,	-0.096449831966227514,	-0.096499598738000486,	-0.096549365268524895,	-0.096599131557675438,	
+-0.096648897605328174,	-0.096698663411358646,	-0.096748428975642911,	-0.096798194298055668,	-0.096847959378472931,	-0.096897724216770301,	-0.096947488812823793,	-0.096997253166508118,	
+-0.097047017277699321,	-0.097096781146272987,	-0.097146544772105131,	-0.097196308155070479,	-0.097246071295045047,	-0.097295834191904434,	-0.097345596845524685,	-0.097395359255780509,	
+-0.097445121422547923,	-0.097494883345702540,	-0.097544645025120391,	-0.097594406460676186,	-0.097644167652245956,	-0.097693928599705757,	-0.097743689302930301,	-0.097793449761795617,	
+-0.097843209976177306,	-0.097892969945951411,	-0.097942729670992656,	-0.097992489151177073,	-0.098042248386380260,	-0.098092007376478274,	-0.098141766121345828,	-0.098191524620858978,	
+-0.098241282874893296,	-0.098291040883324854,	-0.098340798646028377,	-0.098390556162879894,	-0.098440313433755033,	-0.098490070458529824,	-0.098539827237078992,	-0.098589583769278594,	
+-0.098639340055004243,	-0.098689096094131970,	-0.098738851886536527,	-0.098788607432093958,	-0.098838362730680307,	-0.098888117782170298,	-0.098937872586440004,	-0.098987627143365023,	
+-0.099037381452821427,	-0.099087135514683927,	-0.099136889328828595,	-0.099186642895131030,	-0.099236396213467304,	-0.099286149283712141,	-0.099335902105741614,	-0.099385654679431334,	
+-0.099435407004657347,	-0.099485159081294405,	-0.099534910909218566,	-0.099584662488305900,	-0.099634413818431120,	-0.099684164899470323,	-0.099733915731299097,	-0.099783666313793540,	
+-0.099833416646828363,	-0.099883166730279652,	-0.099932916564023019,	-0.099982666147934537,	-0.100032415481888940,	-0.100082164565762330,	-0.100131913399430280,	-0.100181661982768900,	
+-0.100231410315652930,	-0.100281158397958430,	-0.100330906229561020,	-0.100380653810336800,	-0.100430401140160510,	-0.100480148218908200,	-0.100529895046455530,	-0.100579641622678570,	
+-0.100629387947452050,	-0.100679134020652070,	-0.100728879842154700,	-0.100778625411834670,	-0.100828370729568100,	-0.100878115795230590,	-0.100927860608698240,	-0.100977605169845790,	
+-0.101027349478549330,	-0.101077093534684480,	-0.101126837338127360,	-0.101176580888752700,	-0.101226324186436580,	-0.101276067231054660,	-0.101325810022483000,	-0.101375552560596400,	
+-0.101425294845270890,	-0.101475036876382150,	-0.101524778653806270,	-0.101574520177418000,	-0.101624261447093430,	-0.101674002462708630,	-0.101723743224138390,	-0.101773483731258800,	
+-0.101823223983945500,	-0.101872963982074590,	-0.101922703725520810,	-0.101972443214160280,	-0.102022182447868630,	-0.102071921426521980,	-0.102121660149995090,	-0.102171398618164040,	
+-0.102221136830904490,	-0.102270874788092550,	-0.102320612489602970,	-0.102370349935311870,	-0.102420087125094890,	-0.102469824058828120,	-0.102519560736386360,	-0.102569297157645710,	
+-0.102619033322482250,	-0.102668769230770760,	-0.102718504882387360,	-0.102768240277207680,	-0.102817975415107860,	-0.102867710295962640,	-0.102917444919648160,	-0.102967179286040060,	
+-0.103016913395014450,	-0.103066647246446120,	-0.103116380840211170,	-0.103166114176185280,	-0.103215847254244530,	-0.103265580074263730,	-0.103315312636118970,	-0.103365044939685930,	
+-0.103414776984840720,	-0.103464508771458140,	-0.103514240299414280,	-0.103563971568584810,	-0.103613702578845860,	-0.103663433330072220,	-0.103713163822139990,	-0.103762894054925280,	
+-0.103812624028302910,	-0.103862353742148970,	-0.103912083196339160,	-0.103961812390749570,	-0.104011541325255020,	-0.104061269999731600,	-0.104110998414055010,	-0.104160726568101370,	
+-0.104210454461745470,	-0.104260182094863430,	-0.104309909467330940,	-0.104359636579024130,	-0.104409363429817770,	-0.104459090019588000,	-0.104508816348210510,	-0.104558542415561420,	
+-0.104608268221515530,	-0.104657993765948980,	-0.104707719048737880,	-0.104757444069757040,	-0.104807168828882590,	-0.104856893325990230,	-0.104906617560956070,	-0.104956341533654920,	
+-0.105006065243962910,	-0.105055788691755750,	-0.105105511876909560,	-0.105155234799299140,	-0.105204957458800640,	-0.105254679855289730,	-0.105304401988642590,	-0.105354123858733980,	
+-0.105403845465440070,	-0.105453566808636550,	-0.105503287888199540,	-0.105553008704003890,	-0.105602729255925700,	-0.105652449543841150,	-0.105702169567625020,	-0.105751889327153460,	
+-0.105801608822302190,	-0.105851328052947320,	-0.105901047018963700,	-0.105950765720227480,	-0.106000484156614320,	-0.106050202328000400,	-0.106099920234260540,	-0.106149637875270870,	
+-0.106199355250907110,	-0.106249072361045400,	-0.106298789205560570,	-0.106348505784328760,	-0.106398222097225700,	-0.106447938144127520,	-0.106497653924909050,	-0.106547369439446440,	
+-0.106597084687615420,	-0.106646799669292120,	-0.106696514384351390,	-0.106746228832669360,	-0.106795943014122210,	-0.106845656928584750,	-0.106895370575933170,	-0.106945083956043140,	
+-0.106994797068790850,	-0.107044509914051120,	-0.107094222491700130,	-0.107143934801613580,	-0.107193646843667630,	-0.107243358617737110,	-0.107293070123698210,	-0.107342781361426620,	
+-0.107392492330798530,	-0.107442203031688760,	-0.107491913463973490,	-0.107541623627528430,	-0.107591333522229770,	-0.107641043147952320,	-0.107690752504572260,	-0.107740461591965760,	
+-0.107790170410007670,	-0.107839878958574160,	-0.107889587237540940,	-0.107939295246784210,	-0.107989002986178780,	-0.108038710455600860,	-0.108088417654926150,	-0.108138124584030840,	
+-0.108187831242789790,	-0.108237537631079140,	-0.108287243748774660,	-0.108336949595752520,	-0.108386655171887540,	-0.108436360477055950,	-0.108486065511133430,	-0.108535770273996220,	
+-0.108585474765519120,	-0.108635178985578340,	-0.108684882934050060,	-0.108734586610809120,	-0.108784290015731710,	-0.108833993148693590,	-0.108883696009570920,	-0.108933398598238570,	
+-0.108983100914572720,	-0.109032802958449120,	-0.109082504729743970,	-0.109132206228332100,	-0.109181907454089720,	-0.109231608406892570,	-0.109281309086616830,	-0.109331009493137380,	
+-0.109380709626330420,	-0.109430409486071680,	-0.109480109072237350,	-0.109529808384702320,	-0.109579507423342760,	-0.109629206188034430,	-0.109678904678653530,	-0.109728602895074930,	
+-0.109778300837174810,	-0.109827998504829380,	-0.109877695897913520,	-0.109927393016303430,	-0.109977089859874840,	-0.110026786428503970,	-0.110076482722065700,	-0.110126178740436220,	
+-0.110175874483491300,	-0.110225569951107120,	-0.110275265143158580,	-0.110324960059521890,	-0.110374654700072780,	-0.110424349064687480,	-0.110474043153240870,	-0.110523736965609160,	
+-0.110573430501668540,	-0.110623123761293910,	-0.110672816744361450,	-0.110722509450746960,	-0.110772201880326650,	-0.110821894032975390,	-0.110871585908569380,	-0.110921277506984410,	
+-0.110970968828096710,	-0.111020659871781110,	-0.111070350637913890,	-0.111120041126370780,	-0.111169731337028010,	-0.111219421269760480,	-0.111269110924444390,	-0.111318800300955510,	
+-0.111368489399170090,	-0.111418178218962990,	-0.111467866760210450,	-0.111517555022788250,	-0.111567243006572600,	-0.111616930711438400,	-0.111666618137261860,	-0.111716305283919240,	
+-0.111765992151285400,	-0.111815678739236590,	-0.111865365047648570,	-0.111915051076397580,	-0.111964736825358540,	-0.112014422294407640,	-0.112064107483420690,	-0.112113792392273910,	
+-0.112163477020842210,	-0.112213161369001820,	-0.112262845436628520,	-0.112312529223598560,	-0.112362212729786830,	-0.112411895955069560,	-0.112461578899322550,	-0.112511261562422040,	
+-0.112560943944242940,	-0.112610626044661470,	-0.112660307863553450,	-0.112709989400795090,	-0.112759670656261320,	-0.112809351629828370,	-0.112859032321372480,	-0.112908712730768570,	
+-0.112958392857892890,	-0.113008072702621210,	-0.113057752264829790,	-0.113107431544393550,	-0.113157110541188740,	-0.113206789255091160,	-0.113256467685977020,	-0.113306145833721300,	
+-0.113355823698200200,	-0.113405501279289540,	-0.113455178576865570,	-0.113504855590803210,	-0.113554532320978730,	-0.113604208767268340,	-0.113653884929546990,	-0.113703560807690940,	
+-0.113753236401575970,	-0.113802911711078360,	-0.113852586736073030,	-0.113902261476436230,	-0.113951935932043780,	-0.114001610102771930,	-0.114051283988495610,	-0.114100957589091080,	
+-0.114150630904434160,	-0.114200303934401100,	-0.114249976678866840,	-0.114299649137707640,	-0.114349321310799320,	-0.114398993198018130,	-0.114448664799239030,	-0.114498336114338270,	
+-0.114548007143191650,	-0.114597677885675460,	-0.114647348341664640,	-0.114697018511035450,	-0.114746688393664140,	-0.114796357989425680,	-0.114846027298196330,	-0.114895696319851900,	
+-0.114945365054268680,	-0.114995033501321610,	-0.115044701660886940,	-0.115094369532840520,	-0.115144037117058630,	-0.115193704413416200,	-0.115243371421789500,	-0.115293038142054380,	
+-0.115342704574087100,	-0.115392370717762640,	-0.115442036572957220,	-0.115491702139546720,	-0.115541367417407420,	-0.115591032406414250,	-0.115640697106443490,	-0.115690361517371440,	
+-0.115740025639073050,	-0.115789689471424580,	-0.115839353014301900,	-0.115889016267581270,	-0.115938679231137670,	-0.115988341904847360,	-0.116038004288586200,	-0.116087666382230480,	
+-0.116137328185655130,	-0.116186989698736480,	-0.116236650921350340,	-0.116286311853373030,	-0.116335972494679490,	-0.116385632845146010,	-0.116435292904648460,	-0.116484952673063120,	
+-0.116534612150264960,	-0.116584271336130270,	-0.116633930230535320,	-0.116683588833355130,	-0.116733247144465950,	-0.116782905163743660,	-0.116832562891064560,	-0.116882220326303590,	
+-0.116931877469337090,	-0.116981534320040880,	-0.117031190878291280,	-0.117080847143963260,	-0.117130503116933130,	-0.117180158797076740,	-0.117229814184270390,	-0.117279469278389060,	
+-0.117329124079309070,	-0.117378778586906260,	-0.117428432801056940,	-0.117478086721636110,	-0.117527740348520050,	-0.117577393681584650,	-0.117627046720706200,	-0.117676699465759700,	
+-0.117726351916621450,	-0.117776004073167750,	-0.117825655935273610,	-0.117875307502815330,	-0.117924958775668780,	-0.117974609753710270,	-0.118024260436814800,	-0.118073910824858670,	
+-0.118123560917717770,	-0.118173210715268410,	-0.118222860217385580,	-0.118272509423945600,	-0.118322158334824350,	-0.118371806949898140,	-0.118421455269041960,	-0.118471103292132160,	
+-0.118520751019044610,	-0.118570398449655600,	-0.118620045583840160,	-0.118669692421474610,	-0.118719338962435280,	-0.118768985206597150,	-0.118818631153836550,	-0.118868276804029380,	
+-0.118917922157051960,	-0.118967567212779290,	-0.119017211971087710,	-0.119066856431853090,	-0.119116500594951780,	-0.119166144460258780,	-0.119215788027650400,	-0.119265431297002570,	
+-0.119315074268191590,	-0.119364716941092490,	-0.119414359315581590,	-0.119464001391534800,	-0.119513643168828440,	-0.119563284647337540,	-0.119612925826938430,	-0.119662566707507440,	
+-0.119712207288919580,	-0.119761847571051220,	-0.119811487553778240,	-0.119861127236976980,	-0.119910766620522450,	-0.119960405704291020,	-0.120010044488158570,	-0.120059682972001450,	
+-0.120109321155694670,	-0.120158959039114610,	-0.120208596622137130,	-0.120258233904638610,	-0.120307870886494070,	-0.120357507567579850,	-0.120407143947771860,	-0.120456780026946440,	
+-0.120506415804978630,	-0.120556051281744790,	-0.120605686457120830,	-0.120655321330983080,	-0.120704955903206600,	-0.120754590173667710,	-0.120804224142242800,	-0.120853857808806880,	
+-0.120903491173236330,	-0.120953124235407040,	-0.121002756995195390,	-0.121052389452476390,	-0.121102021607126420,	-0.121151653459021420,	-0.121201285008037700,	-0.121250916254050340,	
+-0.121300547196935680,	-0.121350177836569660,	-0.121399808172828640,	-0.121449438205587650,	-0.121499067934723070,	-0.121548697360110810,	-0.121598326481627260,	-0.121647955299147440,	
+-0.121697583812547750,	-0.121747212021704530,	-0.121796839926492840,	-0.121846467526789060,	-0.121896094822469090,	-0.121945721813409350,	-0.121995348499484850,	-0.122044974880571980,	
+-0.122094600956546660,	-0.122144226727285300,	-0.122193852192662920,	-0.122243477352555920,	-0.122293102206840210,	-0.122342726755392190,	-0.122392350998086930,	-0.122441974934800770,	
+-0.122491598565409680,	-0.122541221889790040,	-0.122590844907816910,	-0.122640467619366660,	-0.122690090024315680,	-0.122739712122539040,	-0.122789333913913110,	-0.122838955398313850,	
+-0.122888576575617640,	-0.122938197445699550,	-0.122987818008435970,	-0.123037438263702840,	-0.123087058211376550,	-0.123136677851332190,	-0.123186297183446130,	-0.123235916207594320,	
+-0.123285534923653170,	-0.123335153331497730,	-0.123384771431004420,	-0.123434389222049160,	-0.123484006704508390,	-0.123533623878257160,	-0.123583240743171850,	-0.123632857299128460,	
+-0.123682473546003370,	-0.123732089483671630,	-0.123781705112009700,	-0.123831320430893930,	-0.123880935440199420,	-0.123930550139802560,	-0.123980164529579340,	-0.124029778609406140,	
+-0.124079392379158060,	-0.124129005838711490,	-0.124178618987942410,	-0.124228231826727240,	-0.124277844354941030,	-0.124327456572460210,	-0.124377068479160760,	-0.124426680074919070,	
+-0.124476291359610230,	-0.124525902333110690,	-0.124575512995296820,	-0.124625123346043710,	-0.124674733385227820,	-0.124724343112725080,	-0.124773952528411920,	-0.124823561632163450,	
+-0.124873170423856070,	-0.124922778903365760,	-0.124972387070568940,	-0.125021994925340720,	-0.125071602467557520,	-0.125121209697095310,	-0.125170816613830500,	-0.125220423217638240,	
+-0.125270029508394890,	-0.125319635485976490,	-0.125369241150259410,	-0.125418846501118810,	-0.125468451538431110,	-0.125518056262072240,	-0.125567660671918710,	-0.125617264767845570,	
+-0.125666868549729280,	-0.125716472017446230,	-0.125766075170871570,	-0.125815678009881750,	-0.125865280534352700,	-0.125914882744160910,	-0.125964484639181470,	-0.126014086219290810,	
+-0.126063687484364940,	-0.126113288434280300,	-0.126162889068911990,	-0.126212489388136450,	-0.126262089391829670,	-0.126311689079868140,	-0.126361288452126940,	-0.126410887508482530,	
+-0.126460486248810870,	-0.126510084672988470,	-0.126559682780890390,	-0.126609280572393120,	-0.126658878047372640,	-0.126708475205705410,	-0.126758072047266550,	-0.126807668571932510,	
+-0.126857264779579730,	-0.126906860670083360,	-0.126956456243319830,	-0.127006051499165160,	-0.127055646437495810,	-0.127105241058186910,	-0.127154835361114880,	-0.127204429346155780,	
+-0.127254023013186060,	-0.127303616362080820,	-0.127353209392716550,	-0.127402802104969240,	-0.127452394498715400,	-0.127501986573830110,	-0.127551578330189850,	-0.127601169767671080,	
+-0.127650760886148960,	-0.127700351685499920,	-0.127749942165600040,	-0.127799532326325710,	-0.127849122167552120,	-0.127898711689155730,	-0.127948300891012560,	-0.127997889772999060,	
+-0.128047478334990390,	-0.128097066576863040,	-0.128146654498493050,	-0.128196242099756830,	-0.128245829380529560,	-0.128295416340687750,	-0.128345002980107370,	-0.128394589298664930,	
+-0.128444175296235590,	-0.128493760972695800,	-0.128543346327921610,	-0.128592931361789480,	-0.128642516074174600,	-0.128692100464953410,	-0.128741684534002420,	-0.128791268281196800,	
+-0.128840851706412990,	-0.128890434809527050,	-0.128940017590415460,	-0.128989600048953410,	-0.129039182185017340,	-0.129088763998483290,	-0.129138345489227810,	-0.129187926657126000,	
+-0.129237507502054400,	-0.129287088023889000,	-0.129336668222506330,	-0.129386248097781570,	-0.129435827649591190,	-0.129485406877811210,	-0.129534985782318170,	-0.129584564362987240,	
+-0.129634142619694890,	-0.129683720552317170,	-0.129733298160730590,	-0.129782875444810320,	-0.129832452404432890,	-0.129882029039474740,	-0.129931605349811100,	-0.129981181335318440,	
+-0.130030756995872830,	-0.130080332331350750,	-0.130129907341627410,	-0.130179482026579310,	-0.130229056386082480,	-0.130278630420013470,	-0.130328204128247440,	-0.130377777510660900,	
+-0.130427350567129920,	-0.130476923297530990,	-0.130526495701739330,	-0.130576067779631410,	-0.130625639531083780,	-0.130675210955971590,	-0.130724782054171400,	-0.130774352825559240,	
+-0.130823923270011630,	-0.130873493387403780,	-0.130923063177612210,	-0.130972632640512980,	-0.131022201775982590,	-0.131071770583896270,	-0.131121339064130510,	-0.131170907216561410,	
+-0.131220475041065490,	-0.131270042537517920,	-0.131319609705795260,	-0.131369176545773570,	-0.131418743057329400,	-0.131468309240337890,	-0.131517875094675660,	-0.131567440620218690,	
+-0.131617005816843600,	-0.131666570684425530,	-0.131716135222841040,	-0.131765699431966670,	-0.131815263311677590,	-0.131864826861850360,	-0.131914390082361050,	-0.131963952973086220,	
+-0.132013515533901060,	-0.132063077764682120,	-0.132112639665305480,	-0.132162201235647670,	-0.132211762475583940,	-0.132261323384990780,	-0.132310883963744320,	-0.132360444211721110,	
+-0.132410004128796330,	-0.132459563714846550,	-0.132509122969748290,	-0.132558681893376770,	-0.132608240485608570,	-0.132657798746319750,	-0.132707356675386440,	-0.132756914272685180,	
+-0.132806471538091220,	-0.132856028471481040,	-0.132905585072731260,	-0.132955141341717040,	-0.133004697278315010,	-0.133054252882401220,	-0.133103808153852230,	-0.133153363092543280,	
+-0.133202917698350940,	-0.133252471971151280,	-0.133302025910820880,	-0.133351579517235000,	-0.133401132790270160,	-0.133450685729802480,	-0.133500238335708540,	-0.133549790607863570,	
+-0.133599342546144110,	-0.133648894150426720,	-0.133698445420586680,	-0.133747996356500500,	-0.133797546958044360,	-0.133847097225094770,	-0.133896647157527000,	-0.133946196755217630,	
+-0.133995746018042760,	-0.134045294945878940,	-0.134094843538601460,	-0.134144391796086890,	-0.134193939718211310,	-0.134243487304851330,	-0.134293034555882210,	-0.134342581471180500,	
+-0.134392128050622310,	-0.134441674294084270,	-0.134491220201441580,	-0.134540765772570870,	-0.134590311007348220,	-0.134639855905650250,	-0.134689400467352170,	-0.134738944692330610,	
+-0.134788488580462130,	-0.134838032131621990,	-0.134887575345686770,	-0.134937118222532600,	-0.134986660762036080,	-0.135036202964072480,	-0.135085744828518340,	-0.135135286355249880,	
+-0.135184827544143630,	-0.135234368395074860,	-0.135283908907920160,	-0.135333449082555710,	-0.135382988918858080,	-0.135432528416702530,	-0.135482067575965650,	-0.135531606396524030,	
+-0.135581144878252980,	-0.135630683021029070,	-0.135680220824728440,	-0.135729758289227260,	-0.135779295414402120,	-0.135828832200128310,	-0.135878368646282420,	-0.135927904752741050,	
+-0.135977440519379460,	-0.136026975946074300,	-0.136076511032701660,	-0.136126045779138200,	-0.136175580185259220,	-0.136225114250941250,	-0.136274647976060510,	-0.136324181360493570,	
+-0.136373714404115750,	-0.136423247106803650,	-0.136472779468433420,	-0.136522311488881690,	-0.136571843168023730,	-0.136621374505736190,	-0.136670905501895620,	-0.136720436156377360,	
+-0.136769966469058010,	-0.136819496439813750,	-0.136869026068521190,	-0.136918555355055620,	-0.136968084299293660,	-0.137017612901111500,	-0.137067141160385740,	-0.137116669076991690,	
+-0.137166196650805950,	-0.137215723881704720,	-0.137265250769564640,	-0.137314777314260980,	-0.137364303515670390,	-0.137413829373669030,	-0.137463354888133550,	-0.137512880058939220,	
+-0.137562404885962690,	-0.137611929369080180,	-0.137661453508168250,	-0.137710977303102280,	-0.137760500753758840,	-0.137810023860014590,	-0.137859546621744850,	-0.137909069038826240,	
+-0.137958591111134980,	-0.138008112838547640,	-0.138057634220939610,	-0.138107155258187480,	-0.138156675950167480,	-0.138206196296756210,	-0.138255716297829010,	-0.138305235953262520,	
+-0.138354755262932950,	-0.138404274226716920,	-0.138453792844489780,	-0.138503311116128150,	-0.138552829041508670,	-0.138602346620506690,	-0.138651863852998850,	-0.138701380738861350,	
+-0.138750897277970820,	-0.138800413470202640,	-0.138849929315433380,	-0.138899444813539330,	-0.138948959964397100,	-0.138998474767882020,	-0.139047989223870770,	-0.139097503332239550,	
+-0.139147017092865010,	-0.139196530505622470,	-0.139246043570388610,	-0.139295556287039630,	-0.139345068655452240,	-0.139394580675501700,	-0.139444092347064730,	-0.139493603670017510,	
+-0.139543114644236720,	-0.139592625269597730,	-0.139642135545977150,	-0.139691645473251690,	-0.139741155051296670,	-0.139790664279988760,	-0.139840173159204190,	-0.139889681688819630,	
+-0.139939189868710400,	-0.139988697698753220,	-0.140038205178824320,	-0.140087712308800290,	-0.140137219088556590,	-0.140186725517969820,	-0.140236231596916230,	-0.140285737325272520,	
+-0.140335242702914000,	-0.140384747729717400,	-0.140434252405558930,	-0.140483756730315270,	-0.140533260703861770,	-0.140582764326075110,	-0.140632267596831530,	-0.140681770516007750,	
+-0.140731273083479070,	-0.140780775299122250,	-0.140830277162813900,	-0.140879778674429440,	-0.140929279833845510,	-0.140978780640938380,	-0.141028281095584770,	-0.141077781197659980,	
+-0.141127280947040770,	-0.141176780343603340,	-0.141226279387224400,	-0.141275778077779330,	-0.141325276415144810,	-0.141374774399197070,	-0.141424272029812860,	-0.141473769306867560,	
+-0.141523266230237780,	-0.141572762799800300,	-0.141622259015430490,	-0.141671754877005010,	-0.141721250384400140,	-0.141770745537492610,	-0.141820240336157750,	-0.141869734780272320,	
+-0.141919228869712530,	-0.141968722604355110,	-0.142018215984075440,	-0.142067709008750240,	-0.142117201678255760,	-0.142166693992468700,	-0.142216185951264510,	-0.142265677554519830,	
+-0.142315168802110950,	-0.142364659693914600,	-0.142414150229806140,	-0.142463640409662310,	-0.142513130233359400,	-0.142562619700774080,	-0.142612108811781800,	-0.142661597566259210,	
+-0.142711085964083080,	-0.142760574005128820,	-0.142810061689273100,	-0.142859549016392220,	-0.142909035986362930,	-0.142958522599060610,	-0.143008008854361960,	-0.143057494752143300,	
+-0.143106980292281360,	-0.143156465474651500,	-0.143205950299130500,	-0.143255434765594600,	-0.143304918873920580,	-0.143354402623983800,	-0.143403886015661040,	-0.143453369048828550,	
+-0.143502851723363080,	-0.143552334039140030,	-0.143601815996036160,	-0.143651297593927750,	-0.143700778832691530,	-0.143750259712202900,	-0.143799740232338660,	-0.143849220392975490,	
+-0.143898700193988820,	-0.143948179635255410,	-0.143997658716651540,	-0.144047137438054000,	-0.144096615799338130,	-0.144146093800380760,	-0.144195571441058130,	-0.144245048721247020,	
+-0.144294525640822850,	-0.144344002199662370,	-0.144393478397641880,	-0.144442954234638130,	-0.144492429710526560,	-0.144541904825183890,	-0.144591379578486940,	-0.144640853970311070,	
+-0.144690328000533080,	-0.144739801669029280,	-0.144789274975676400,	-0.144838747920349900,	-0.144888220502926520,	-0.144937692723282580,	-0.144987164581294880,	-0.145036636076838810,	
+-0.145086107209791150,	-0.145135577980028210,	-0.145185048387426800,	-0.145234518431862300,	-0.145283988113211500,	-0.145333457431350730,	-0.145382926386156800,	-0.145432394977505070,	
+-0.145481863205272370,	-0.145531331069335000,	-0.145580798569569740,	-0.145630265705852050,	-0.145679732478058710,	-0.145729198886066470,	-0.145778664929750780,	-0.145828130608988440,	
+-0.145877595923655760,	-0.145927060873629550,	-0.145976525458785260,	-0.146025989678999630,	-0.146075453534149020,	-0.146124917024110230,	-0.146174380148758720,	-0.146223842907971250,	
+-0.146273305301624160,	-0.146322767329594230,	-0.146372228991756980,	-0.146421690287989150,	-0.146471151218167530,	-0.146520611782167580,	-0.146570071979866130,	-0.146619531811139460,	
+-0.146668991275864000,	-0.146718450373916480,	-0.146767909105172400,	-0.146817367469508550,	-0.146866825466801710,	-0.146916283096927360,	-0.146965740359762310,	-0.147015197255182940,	
+-0.147064653783065990,	-0.147114109943286970,	-0.147163565735722670,	-0.147213021160249450,	-0.147262476216744130,	-0.147311930905082180,	-0.147361385225140390,	-0.147410839176795150,	
+-0.147460292759923230,	-0.147509745974400170,	-0.147559198820102740,	-0.147608651296907730,	-0.147658103404690650,	-0.147707555143328340,	-0.147757006512697130,	-0.147806457512673850,	
+-0.147855908143133980,	-0.147905358403954330,	-0.147954808295011290,	-0.148004257816181680,	-0.148053706967340960,	-0.148103155748365990,	-0.148152604159133140,	-0.148202052199519210,	
+-0.148251499869399730,	-0.148300947168651470,	-0.148350394097150840,	-0.148399840654774680,	-0.148449286841398490,	-0.148498732656899060,	-0.148548178101152810,	-0.148597623174036550,	
+-0.148647067875425810,	-0.148696512205197360,	-0.148745956163228110,	-0.148795399749393510,	-0.148844842963570420,	-0.148894285805635210,	-0.148943728275464730,	-0.148993170372934500,	
+-0.149042612097921330,	-0.149092053450301630,	-0.149141494429952250,	-0.149190935036748680,	-0.149240375270567800,	-0.149289815131285950,	-0.149339254618780000,	-0.149388693732925510,	
+-0.149438132473599240,	-0.149487570840678120,	-0.149537008834037620,	-0.149586446453554590,	-0.149635883699105440,	-0.149685320570566580,	-0.149734757067814860,	-0.149784193190725830,	
+-0.149833628939176290,	-0.149883064313043130,	-0.149932499312201870,	-0.149981933936529370,	-0.150031368185902010,	-0.150080802060196690,	-0.150130235559288920,	-0.150179668683055570,	
+-0.150229101431373020,	-0.150278533804118180,	-0.150327965801166560,	-0.150377397422395030,	-0.150426828667680010,	-0.150476259536898360,	-0.150525690029925610,	-0.150575120146638620,	
+-0.150624549886914290,	-0.150673979250628140,	-0.150723408237657060,	-0.150772836847877430,	-0.150822265081166170,	-0.150871692937398800,	-0.150921120416452200,	-0.150970547518202800,	
+-0.151019974242527470,	-0.151069400589301740,	-0.151118826558402530,	-0.151168252149706280,	-0.151217677363089800,	-0.151267102198428700,	-0.151316526655599860,	-0.151365950734479670,	
+-0.151415374434945070,	-0.151464797756871580,	-0.151514220700136090,	-0.151563643264615080,	-0.151613065450185380,	-0.151662487256722570,	-0.151711908684103560,	-0.151761329732205210,	
+-0.151810750400903080,	-0.151860170690074100,	-0.151909590599594690,	-0.151959010129341710,	-0.152008429279190810,	-0.152057848049018810,	-0.152107266438702200,	-0.152156684448117860,	
+-0.152206102077141360,	-0.152255519325649620,	-0.152304936193519090,	-0.152354352680626640,	-0.152403768786847860,	-0.152453184512059690,	-0.152502599856138980,	-0.152552014818961330,	
+-0.152601429400403640,	-0.152650843600342370,	-0.152700257418654450,	-0.152749670855215430,	-0.152799083909902270,	-0.152848496582591360,	-0.152897908873159650,	-0.152947320781482740,	
+-0.152996732307437540,	-0.153046143450900480,	-0.153095554211748530,	-0.153144964589857240,	-0.153194374585103540,	-0.153243784197363900,	-0.153293193426515260,	-0.153342602272433180,	
+-0.153392010734994590,	-0.153441418814075970,	-0.153490826509554260,	-0.153540233821305020,	-0.153589640749205230,	-0.153639047293131740,	-0.153688453452960230,	-0.153737859228567560,	
+-0.153787264619830250,	-0.153836669626625210,	-0.153886074248828050,	-0.153935478486315720,	-0.153984882338964710,	-0.154034285806651900,	-0.154083688889252970,	-0.154133091586644790,	
+-0.154182493898703890,	-0.154231895825307190,	-0.154281297366330340,	-0.154330698521650210,	-0.154380099291143350,	-0.154429499674686670,	-0.154478899672155810,	-0.154528299283427710,	
+-0.154577698508378850,	-0.154627097346886180,	-0.154676495798825340,	-0.154725893864073260,	-0.154775291542506880,	-0.154824688834001830,	-0.154874085738435060,	-0.154923482255683060,	
+-0.154972878385622820,	-0.155022274128129940,	-0.155071669483081350,	-0.155121064450353620,	-0.155170459029823630,	-0.155219853221367080,	-0.155269247024860890,	-0.155318640440181590,	
+-0.155368033467206120,	-0.155417426105810140,	-0.155466818355870590,	-0.155516210217264420,	-0.155565601689867300,	-0.155614992773556170,	-0.155664383468207550,	-0.155713773773698410,	
+-0.155763163689904420,	-0.155812553216702510,	-0.155861942353969190,	-0.155911331101581480,	-0.155960719459415000,	-0.156010107427346720,	-0.156059495005253180,	-0.156108882193011330,	
+-0.156158268990496840,	-0.156207655397586690,	-0.156257041414157390,	-0.156306427040085900,	-0.156355812275247950,	-0.156405197119520440,	-0.156454581572779940,	-0.156503965634903430,	
+-0.156553349305766560,	-0.156602732585246350,	-0.156652115473219690,	-0.156701497969562340,	-0.156750880074151250,	-0.156800261786862930,	-0.156849643107574430,	-0.156899024036161380,	
+-0.156948404572500750,	-0.156997784716469110,	-0.157047164467943450,	-0.157096543826799440,	-0.157145922792914060,	-0.157195301366163890,	-0.157244679546425900,	-0.157294057333575790,	
+-0.157343434727490520,	-0.157392811728046670,	-0.157442188335121220,	-0.157491564548589870,	-0.157540940368329580,	-0.157590315794216980,	-0.157639690826129000,	-0.157689065463941370,	
+-0.157738439707531070,	-0.157787813556775100,	-0.157837187011549170,	-0.157886560071730270,	-0.157935932737194970,	-0.157985305007820290,	-0.158034676883481880,	-0.158084048364056820,	
+-0.158133419449421610,	-0.158182790139453300,	-0.158232160434027550,	-0.158281530333021420,	-0.158330899836311460,	-0.158380268943774720,	-0.158429637655286840,	-0.158479005970724840,	
+-0.158528373889965800,	-0.158577741412885390,	-0.158627108539360600,	-0.158676475269268060,	-0.158725841602484760,	-0.158775207538886440,	-0.158824573078350070,	-0.158873938220752270,	
+-0.158923302965970070,	-0.158972667313879180,	-0.159022031264356630,	-0.159071394817279000,	-0.159120757972523310,	-0.159170120729965280,	-0.159219483089481970,	-0.159268845050949930,	
+-0.159318206614246230,	-0.159367567779246570,	-0.159416928545827980,	-0.159466288913867080,	-0.159515648883240910,	-0.159565008453825150,	-0.159614367625496880,	-0.159663726398133140,	
+-0.159713084771609640,	-0.159762442745803420,	-0.159811800320591110,	-0.159861157495849730,	-0.159910514271455030,	-0.159959870647284040,	-0.160009226623213350,	-0.160058582199120060,	
+-0.160107937374879860,	-0.160157292150369810,	-0.160206646525466540,	-0.160256000500047100,	-0.160305354073987190,	-0.160354707247163940,	-0.160404060019454310,	-0.160453412390734130,	
+-0.160502764360880400,	-0.160552115929769780,	-0.160601467097278850,	-0.160650817863284700,	-0.160700168227663060,	-0.160749518190291010,	-0.160798867751045600,	-0.160848216909802580,	
+-0.160897565666439010,	-0.160946914020831560,	-0.160996261972857210,	-0.161045609522391800,	-0.161094956669312370,	-0.161144303413495530,	-0.161193649754818370,	-0.161242995693156670,	
+-0.161292341228387450,	-0.161341686360387400,	-0.161391031089033580,	-0.161440375414201730,	-0.161489719335768940,	-0.161539062853612280,	-0.161588405967607540,	-0.161637748677631780,	
+-0.161687090983561650,	-0.161736432885274230,	-0.161785774382645300,	-0.161835115475551930,	-0.161884456163870760,	-0.161933796447478880,	-0.161983136326252110,	-0.162032475800067470,	
+-0.162081814868801630,	-0.162131153532331710,	-0.162180491790533450,	-0.162229829643284000,	-0.162279167090459950,	-0.162328504131938420,	-0.162377840767595180,	-0.162427176997307350,	
+-0.162476512820951570,	-0.162525848238404960,	-0.162575183249543290,	-0.162624517854243640,	-0.162673852052383160,	-0.162723185843837600,	-0.162772519228484100,	-0.162821852206199270,	
+-0.162871184776860270,	-0.162920516940342850,	-0.162969848696524140,	-0.163019180045280820,	-0.163068510986489970,	-0.163117841520027420,	-0.163167171645770270,	-0.163216501363595200,	
+-0.163265830673379300,	-0.163315159574998370,	-0.163364488068329570,	-0.163413816153249960,	-0.163463143829635390,	-0.163512471097362940,	-0.163561797956309350,	-0.163611124406351230,	
+-0.163660450447365740,	-0.163709776079228710,	-0.163759101301817230,	-0.163808426115008430,	-0.163857750518678120,	-0.163907074512703450,	-0.163956398096961080,	-0.164005721271328150,	
+-0.164055044035680500,	-0.164104366389895230,	-0.164153688333849020,	-0.164203009867419060,	-0.164252330990481120,	-0.164301651702912360,	-0.164350972004589480,	-0.164400291895389600,	
+-0.164449611375188540,	-0.164498930443863460,	-0.164548249101291480,	-0.164597567347348460,	-0.164646885181911510,	-0.164696202604857370,	-0.164745519616063120,	-0.164794836215404670,	
+-0.164844152402759130,	-0.164893468178003180,	-0.164942783541014020,	-0.164992098491667460,	-0.165041413029840630,	-0.165090727155410290,	-0.165140040868253570,	-0.165189354168246320,	
+-0.165238667055265660,	-0.165287979529188330,	-0.165337291589891520,	-0.165386603237251020,	-0.165435914471144030,	-0.165485225291447240,	-0.165534535698037830,	-0.165583845690791630,	
+-0.165633155269585830,	-0.165682464434297570,	-0.165731773184802730,	-0.165781081520978420,	-0.165830389442701450,	-0.165879696949848910,	-0.165929004042296710,	-0.165978310719922000,	
+-0.166027616982601520,	-0.166076922830212410,	-0.166126228262630570,	-0.166175533279733170,	-0.166224837881396910,	-0.166274142067499020,	-0.166323445837915310,	-0.166372749192523010,	
+-0.166422052131199260,	-0.166471354653819960,	-0.166520656760262260,	-0.166569958450402900,	-0.166619259724119120,	-0.166668560581286730,	-0.166717861021782930,	-0.166767161045484500,	
+-0.166816460652268600,	-0.166865759842011100,	-0.166915058614589190,	-0.166964356969879660,	-0.167013654907759660,	-0.167062952428105090,	-0.167112249530793150,	-0.167161546215700560,	
+-0.167210842482704570,	-0.167260138331681020,	-0.167309433762507120,	-0.167358728775059670,	-0.167408023369215790,	-0.167457317544851440,	-0.167506611301843800,	-0.167555904640070060,	
+-0.167605197559406120,	-0.167654490059729180,	-0.167703782140916020,	-0.167753073802843850,	-0.167802365045388540,	-0.167851655868427350,	-0.167900946271836990,	-0.167950236255494710,	
+-0.167999525819276410,	-0.168048814963059290,	-0.168098103686720120,	-0.168147391990136150,	-0.168196679873183240,	-0.168245967335738660,	-0.168295254377679140,	-0.168344540998881910,	
+-0.168393827199222910,	-0.168443112978579330,	-0.168492398336828000,	-0.168541683273846080,	-0.168590967789509520,	-0.168640251883695550,	-0.168689535556281380,	-0.168738818807142920,	
+-0.168788101636157430,	-0.168837384043201700,	-0.168886666028152920,	-0.168935947590887060,	-0.168985228731281300,	-0.169034509449212500,	-0.169083789744557840,	-0.169133069617193290,	
+-0.169182349066996060,	-0.169231628093842960,	-0.169280906697611230,	-0.169330184878176780,	-0.169379462635416870,	-0.169428739969208740,	-0.169478016879428340,	-0.169527293365952870,	
+-0.169576569428659200,	-0.169625845067424510,	-0.169675120282124810,	-0.169724395072637290,	-0.169773669438838760,	-0.169822943380606520,	-0.169872216897816480,	-0.169921489990345900,	
+-0.169970762658071570,	-0.170020034900870810,	-0.170069306718619500,	-0.170118578111194930,	-0.170167849078473900,	-0.170217119620333700,	-0.170266389736650260,	-0.170315659427300870,	
+-0.170364928692162300,	-0.170414197531111870,	-0.170463465944025480,	-0.170512733930780450,	-0.170562001491254000,	-0.170611268625322140,	-0.170660535332862070,	-0.170709801613750680,	
+-0.170759067467865230,	-0.170808332895081680,	-0.170857597895277270,	-0.170906862468328900,	-0.170956126614113770,	-0.171005390332507920,	-0.171054653623388590,	-0.171103916486632620,	
+-0.171153178922117290,	-0.171202440929718590,	-0.171251702509313790,	-0.171300963660779710,	-0.171350224383993670,	-0.171399484678831650,	-0.171448744545170890,	-0.171498003982888280,	
+-0.171547262991861100,	-0.171596521571965310,	-0.171645779723078230,	-0.171695037445077160,	-0.171744294737838030,	-0.171793551601238160,	-0.171842808035154420,	-0.171892064039464110,	
+-0.171941319614043190,	-0.171990574758768970,	-0.172039829473518310,	-0.172089083758168530,	-0.172138337612595590,	-0.172187591036676800,	-0.172236844030289050,	-0.172286096593309620,	
+-0.172335348725614510,	-0.172384600427081040,	-0.172433851697586490,	-0.172483102537006850,	-0.172532352945219490,	-0.172581602922101260,	-0.172630852467529430,	-0.172680101581380030,	
+-0.172729350263530400,	-0.172778598513857380,	-0.172827846332238300,	-0.172877093718549170,	-0.172926340672667290,	-0.172975587194469590,	-0.173024833283833330,	-0.173074078940634590,	
+-0.173123324164750620,	-0.173172568956058340,	-0.173221813314435090,	-0.173271057239756860,	-0.173320300731900970,	-0.173369543790744350,	-0.173418786416164320,	-0.173468028608036840,	
+-0.173517270366239320,	-0.173566511690649070,	-0.173615752581142090,	-0.173664993037595750,	-0.173714233059886900,	-0.173763472647892910,	-0.173812711801489800,	-0.173861950520554920,	
+-0.173911188804965170,	-0.173960426654597880,	-0.174009664069329080,	-0.174058901049036100,	-0.174108137593595890,	-0.174157373702885780,	-0.174206609376781780,	-0.174255844615161280,	
+-0.174305079417901160,	-0.174354313784878760,	-0.174403547715970160,	-0.174452781211052680,	-0.174502014270003250,	-0.174551246892699240,	-0.174600479079016660,	-0.174649710828832880,	
+-0.174698942142025250,	-0.174748173018469840,	-0.174797403458043980,	-0.174846633460624650,	-0.174895863026089140,	-0.174945092154313560,	-0.174994320845175220,	-0.175043549098551100,	
+-0.175092776914318540,	-0.175142004292353600,	-0.175191231232533630,	-0.175240457734735620,	-0.175289683798836890,	-0.175338909424713500,	-0.175388134612242840,	-0.175437359361302280,	
+-0.175486583671767890,	-0.175535807543517050,	-0.175585030976426660,	-0.175634253970374160,	-0.175683476525235580,	-0.175732698640888310,	-0.175781920317209290,	-0.175831141554075920,	
+-0.175880362351364230,	-0.175929582708951650,	-0.175978802626715110,	-0.176028022104532000,	-0.176077241142278410,	-0.176126459739831710,	-0.176175677897068870,	-0.176224895613867260,	
+-0.176274112890102970,	-0.176323329725653400,	-0.176372546120395520,	-0.176421762074206710,	-0.176470977586963030,	-0.176520192658541940,	-0.176569407288820780,	-0.176618621477675680,	
+-0.176667835224984030,	-0.176717048530622780,	-0.176766261394469350,	-0.176815473816399840,	-0.176864685796291640,	-0.176913897334021710,	-0.176963108429467500,	-0.177012319082505060,	
+-0.177061529293011830,	-0.177110739060864770,	-0.177159948385941320,	-0.177209157268117530,	-0.177258365707270880,	-0.177307573703278740,	-0.177356781256017230,	-0.177405988365363750,	
+-0.177455195031195310,	-0.177504401253388870,	-0.177553607031821880,	-0.177602812366370460,	-0.177652017256911960,	-0.177701221703323890,	-0.177750425705482330,	-0.177799629263264670,	
+-0.177848832376547970,	-0.177898035045209620,	-0.177947237269125730,	-0.177996439048173780,	-0.178045640382230700,	-0.178094841271173950,	-0.178144041714879690,	-0.178193241713225310,	
+-0.178242441266087820,	-0.178291640373344690,	-0.178340839034872000,	-0.178390037250547220,	-0.178439235020247780,	-0.178488432343849810,	-0.178537629221230760,	-0.178586825652267630,	
+-0.178636021636837890,	-0.178685217174817670,	-0.178734412266084390,	-0.178783606910515090,	-0.178832801107987190,	-0.178881994858376860,	-0.178931188161561530,	-0.178980381017418260,	
+-0.179029573425824460,	-0.179078765386656290,	-0.179127956899791190,	-0.179177147965106230,	-0.179226338582478800,	-0.179275528751785120,	-0.179324718472902600,	-0.179373907745708300,	
+-0.179423096570079650,	-0.179472284945892820,	-0.179521472873025280,	-0.179570660351354520,	-0.179619847380756650,	-0.179669033961109170,	-0.179718220092289080,	-0.179767405774173910,	
+-0.179816591006639770,	-0.179865775789564140,	-0.179914960122824100,	-0.179964144006297090,	-0.180013327439859290,	-0.180062510423388140,	-0.180111692956760740,	-0.180160875039854530,	
+-0.180210056672545720,	-0.180259237854711730,	-0.180308418586230120,	-0.180357598866977000,	-0.180406778696829890,	-0.180455958075665860,	-0.180505137003362350,	-0.180554315479795560,	
+-0.180603493504842980,	-0.180652671078381650,	-0.180701848200289120,	-0.180751024870441510,	-0.180800201088716330,	-0.180849376854990640,	-0.180898552169141970,	-0.180947727031046470,	
+-0.180996901440581640,	-0.181046075397624600,	-0.181095248902052780,	-0.181144421953742390,	-0.181193594552570950,	-0.181242766698415550,	-0.181291938391153620,	-0.181341109630661440,	
+-0.181390280416816490,	-0.181439450749496270,	-0.181488620628576990,	-0.181537790053936170,	-0.181586959025450860,	-0.181636127542998570,	-0.181685295606455550,	-0.181734463215699280,	
+-0.181783630370606850,	-0.181832797071055790,	-0.181881963316922300,	-0.181931129108083900,	-0.181980294444417680,	-0.182029459325801170,	-0.182078623752110540,	-0.182127787723223380,	
+-0.182176951239016750,	-0.182226114299368160,	-0.182275276904153880,	-0.182324439053251380,	-0.182373600746537800,	-0.182422761983890620,	-0.182471922765186150,	-0.182521083090301850,	
+-0.182570242959115250,	-0.182619402371502650,	-0.182668561327341520,	-0.182717719826509000,	-0.182766877868882600,	-0.182816035454338580,	-0.182865192582754470,	-0.182914349254007370,	
+-0.182963505467974850,	-0.183012661224533140,	-0.183061816523559740,	-0.183110971364931820,	-0.183160125748526910,	-0.183209279674221260,	-0.183258433141892390,	-0.183307586151417870,	
+-0.183356738702673970,	-0.183405890795538210,	-0.183455042429887720,	-0.183504193605600080,	-0.183553344322551490,	-0.183602494580619560,	-0.183651644379681400,	-0.183700793719614540,	
+-0.183749942600295290,	-0.183799091021601160,	-0.183848238983409300,	-0.183897386485597310,	-0.183946533528041380,	-0.183995680110619150,	-0.184044826233207700,	-0.184093971895684600,	
+-0.184143117097926160,	-0.184192261839809940,	-0.184241406121213040,	-0.184290549942013080,	-0.184339693302086300,	-0.184388836201310270,	-0.184437978639562600,	-0.184487120616719570,	
+-0.184536262132658700,	-0.184585403187257190,	-0.184634543780392620,	-0.184683683911941260,	-0.184732823581780670,	-0.184781962789788030,	-0.184831101535840920,	-0.184880239819815610,	
+-0.184929377641589700,	-0.184978515001040340,	-0.185027651898045150,	-0.185076788332480400,	-0.185125924304223670,	-0.185175059813152100,	-0.185224194859143350,	-0.185273329442073670,	
+-0.185322463561820670,	-0.185371597218261520,	-0.185420730411273800,	-0.185469863140733800,	-0.185518995406519170,	-0.185568127208507460,	-0.185617258546575010,	-0.185666389420599430,	
+-0.185715519830457860,	-0.185764649776027940,	-0.185813779257185950,	-0.185862908273809500,	-0.185912036825775780,	-0.185961164912962440,	-0.186010292535245730,	-0.186059419692503280,	
+-0.186108546384612270,	-0.186157672611450360,	-0.186206798372893810,	-0.186255923668820270,	-0.186305048499107370,	-0.186354172863631400,	-0.186403296762269990,	-0.186452420194900350,	
+-0.186501543161400110,	-0.186550665661645550,	-0.186599787695514360,	-0.186648909262883660,	-0.186698030363631140,	-0.186747150997633120,	-0.186796271164767210,	-0.186845390864910620,	
+-0.186894510097941000,	-0.186943628863734670,	-0.186992747162169240,	-0.187041864993121980,	-0.187090982356470450,	-0.187140099252091070,	-0.187189215679861410,	-0.187238331639658750,	
+-0.187287447131360670,	-0.187336562154843540,	-0.187385676709984990,	-0.187434790796662700,	-0.187483904414752990,	-0.187533017564133540,	-0.187582130244681510,	-0.187631242456274630,	
+-0.187680354198789170,	-0.187729465472102870,	-0.187778576276092870,	-0.187827686610636870,	-0.187876796475611230,	-0.187925905870893580,	-0.187975014796361200,	-0.188024123251891690,	
+-0.188073231237361440,	-0.188122338752648110,	-0.188171445797628960,	-0.188220552372181600,	-0.188269658476182430,	-0.188318764109509120,	-0.188367869272038880,	-0.188416973963649430,	
+-0.188466078184217100,	-0.188515181933619570,	-0.188564285211734520,	-0.188613388018438330,	-0.188662490353608660,	-0.188711592217122780,	-0.188760693608858330,	-0.188809794528691730,	
+-0.188858894976500660,	-0.188907994952162320,	-0.188957094455554450,	-0.189006193486553400,	-0.189055292045036850,	-0.189104390130882090,	-0.189153487743966790,	-0.189202584884167330,	
+-0.189251681551361410,	-0.189300777745426720,	-0.189349873466239630,	-0.189398968713677900,	-0.189448063487618720,	-0.189497157787939820,	-0.189546251614517600,	-0.189595344967229740,	
+-0.189644437845953530,	-0.189693530250566650,	-0.189742622180945510,	-0.189791713636967810,	-0.189840804618510830,	-0.189889895125452260,	-0.189938985157668550,	-0.189988074715037340,	
+-0.190037163797435990,	-0.190086252404742110,	-0.190135340536832200,	-0.190184428193583940,	-0.190233515374874600,	-0.190282602080581900,	-0.190331688310582280,	-0.190380774064753430,	
+-0.190429859342973070,	-0.190478944145117620,	-0.190528028471064840,	-0.190577112320691970,	-0.190626195693876760,	-0.190675278590495630,	-0.190724361010426280,	-0.190773442953546060,	
+-0.190822524419732630,	-0.190871605408862500,	-0.190920685920813320,	-0.190969765955462440,	-0.191018845512687580,	-0.191067924592365160,	-0.191117003194372940,	-0.191166081318588640,	
+-0.191215158964888720,	-0.191264236133150880,	-0.191313312823252450,	-0.191362389035070750,	-0.191411464768483530,	-0.191460540023367180,	-0.191509614799599490,	-0.191558689097058200,	
+-0.191607762915619760,	-0.191656836255161890,	-0.191705909115561960,	-0.191754981496697670,	-0.191804053398445500,	-0.191853124820683200,	-0.191902195763288070,	-0.191951266226137920,	
+-0.192000336209109140,	-0.192049405712079540,	-0.192098474734926420,	-0.192147543277527530,	-0.192196611339759350,	-0.192245678921499660,	-0.192294746022626200,	-0.192343812643015450,	
+-0.192392878782545160,	-0.192441944441092670,	-0.192491009618535740,	-0.192540074314750870,	-0.192589138529615820,	-0.192638202263007900,	-0.192687265514804920,	-0.192736328284883350,	
+-0.192785390573120940,	-0.192834452379395090,	-0.192883513703583500,	-0.192932574545562730,	-0.192981634905210500,	-0.193030694782404200,	-0.193079754177021580,	-0.193128813088939140,	
+-0.193177871518034670,	-0.193226929464185540,	-0.193275986927269490,	-0.193325043907163070,	-0.193374100403744030,	-0.193423156416890170,	-0.193472211946477980,	-0.193521266992385250,	
+-0.193570321554489390,	-0.193619375632668120,	-0.193668429226798000,	-0.193717482336756790,	-0.193766534962421880,	-0.193815587103671080,	-0.193864638760380880,	-0.193913689932429080,	
+-0.193962740619693040,	-0.194011790822050580,	-0.194060840539378220,	-0.194109889771553770,	-0.194158938518455000,	-0.194207986779958490,	-0.194257034555941980,	-0.194306081846282900,	
+-0.194355128650858610,	-0.194404174969546930,	-0.194453220802224380,	-0.194502266148768780,	-0.194551311009057950,	-0.194600355382968410,	-0.194649399270377970,	-0.194698442671164040,	
+-0.194747485585204440,	-0.194796528012375710,	-0.194845569952555640,	-0.194894611405621640,	-0.194943652371451560,	-0.194992692849921910,	-0.195041732840910500,	-0.195090772344294780,	
+-0.195139811359952590,	-0.195188849887760390,	-0.195237887927596110,	-0.195286925479337510,	-0.195335962542861170,	-0.195384999118044940,	-0.195434035204766210,	-0.195483070802902810,	
+-0.195532105912331310,	-0.195581140532929550,	-0.195630174664574910,	-0.195679208307145300,	-0.195728241460517230,	-0.195777274124568550,	-0.195826306299176660,	-0.195875337984219470,	
+-0.195924369179573510,	-0.195973399885116610,	-0.196022430100726200,	-0.196071459826280160,	-0.196120489061655050,	-0.196169517806728700,	-0.196218546061378560,	-0.196267573825482490,	
+-0.196316601098917050,	-0.196365627881560120,	-0.196414654173289540,	-0.196463679973981900,	-0.196512705283515030,	-0.196561730101766420,	-0.196610754428613920,	-0.196659778263934100,	
+-0.196708801607604840,	-0.196757824459503570,	-0.196806846819508160,	-0.196855868687495220,	-0.196904890063342610,	-0.196953910946927770,	-0.197002931338128570,	-0.197051951236821620,	
+-0.197100970642884790,	-0.197149989556195980,	-0.197199007976631730,	-0.197248025904070010,	-0.197297043338388180,	-0.197346060279464190,	-0.197395076727174630,	-0.197444092681397340,	
+-0.197493108142009850,	-0.197542123108890020,	-0.197591137581914460,	-0.197640151560961040,	-0.197689165045907250,	-0.197738178036630960,	-0.197787190533008810,	-0.197836202534918680,	
+-0.197885214042238050,	-0.197934225054844810,	-0.197983235572615570,	-0.198032245595428260,	-0.198081255123160330,	-0.198130264155689680,	-0.198179272692892950,	-0.198228280734648040,	
+-0.198277288280832850,	-0.198326295331324010,	-0.198375301885999440,	-0.198424307944736590,	-0.198473313507413430,	-0.198522318573906560,	-0.198571323144093870,	-0.198620327217852890,	
+-0.198669330795061520,	-0.198718333875596370,	-0.198767336459335420,	-0.198816338546156100,	-0.198865340135936370,	-0.198914341228552870,	-0.198963341823883500,	-0.199012341921805810,	
+-0.199061341522197680,	-0.199110340624935740,	-0.199159339229897980,	-0.199208337336961860,	-0.199257334946005310,	-0.199306332056905010,	-0.199355328669538890,	-0.199404324783784860,	
+-0.199453320399519600,	-0.199502315516621040,	-0.199551310134966690,	-0.199600304254434480,	-0.199649297874901100,	-0.199698290996244480,	-0.199747283618342100,	-0.199796275741071980,	
+-0.199845267364310710,	-0.199894258487936290,	-0.199943249111826200,	-0.199992239235858430,	-0.200041228859909660,	-0.200090217983857790,	-0.200139206607580810,	-0.200188194730955370,	
+-0.200237182353859460,	-0.200286169476170590,	-0.200335156097766730,	-0.200384142218524550,	-0.200433127838322010,	-0.200482112957036630,	-0.200531097574546430,	-0.200580081690728050,	
+-0.200629065305459460,	-0.200678048418618190,	-0.200727031030082270,	-0.200776013139728320,	-0.200824994747434320,	-0.200873975853077870,	-0.200922956456536880,	-0.200971936557688080,	
+-0.201020916156409430,	-0.201069895252578510,	-0.201118873846073270,	-0.201167851936770420,	-0.201216829524547920,	-0.201265806609283810,	-0.201314783190854720,	-0.201363759269138690,	
+-0.201412734844013260,	-0.201461709915356420,	-0.201510684483044880,	-0.201559658546956620,	-0.201608632106969220,	-0.201657605162960690,	-0.201706577714807680,	-0.201755549762388240,	
+-0.201804521305579940,	-0.201853492344260750,	-0.201902462878307400,	-0.201951432907597900,	-0.202000402432009810,	-0.202049371451421160,	-0.202098339965708640,	-0.202147307974750280,	
+-0.202196275478423640,	-0.202245242476606750,	-0.202294208969176300,	-0.202343174956010340,	-0.202392140436986890,	-0.202441105411982650,	-0.202490069880875640,	-0.202539033843543460,	
+-0.202587997299864130,	-0.202636960249714370,	-0.202685922692972200,	-0.202734884629515220,	-0.202783846059221480,	-0.202832806981967710,	-0.202881767397631890,	-0.202930727306091660,	
+-0.202979686707225050,	-0.203028645600908770,	-0.203077603987020900,	-0.203126561865439450,	-0.203175519236041160,	-0.203224476098704060,	-0.203273432453305790,	-0.203322388299724350,	
+-0.203371343637836520,	-0.203420298467520330,	-0.203469252788653380,	-0.203518206601113750,	-0.203567159904778170,	-0.203616112699524680,	-0.203665064985230900,	-0.203714016761774920,	
+-0.203762968029033460,	-0.203811918786884570,	-0.203860869035205870,	-0.203909818773875460,	-0.203958768002770050,	-0.204007716721767710,	-0.204056664930746090,	-0.204105612629583240,	
+-0.204154559818155920,	-0.204203506496342220,	-0.204252452664020170,	-0.204301398321066560,	-0.204350343467359450,	-0.204399288102776490,	-0.204448232227195740,	-0.204497175840493980,	
+-0.204546118942549260,	-0.204595061533239280,	-0.204644003612442060,	-0.204692945180034390,	-0.204741886235894370,	-0.204790826779899630,	-0.204839766811928250,	-0.204888706331857020,	
+-0.204937645339564020,	-0.204986583834927350,	-0.205035521817823780,	-0.205084459288131400,	-0.205133396245727910,	-0.205182332690490880,	-0.205231268622298480,	-0.205280204041027480,	
+-0.205329138946555970,	-0.205378073338762010,	-0.205427007217522470,	-0.205475940582715400,	-0.205524873434218490,	-0.205573805771909810,	-0.205622737595666180,	-0.205671668905365730,	
+-0.205720599700886100,	-0.205769529982105400,	-0.205818459748900450,	-0.205867389001149340,	-0.205916317738729760,	-0.205965245961519800,	-0.206014173669396310,	-0.206063100862237390,	
+-0.206112027539921170,	-0.206160953702324400,	-0.206209879349325280,	-0.206258804480801440,	-0.206307729096631060,	-0.206356653196690890,	-0.206405576780859110,	-0.206454499849013370,	
+-0.206503422401031810,	-0.206552344436791270,	-0.206601265956169870,	-0.206650186959045300,	-0.206699107445295710,	-0.206748027414797920,	-0.206796946867430030,	-0.206845865803069790,	
+-0.206894784221595320,	-0.206943702122883460,	-0.206992619506812360,	-0.207041536373259670,	-0.207090452722103610,	-0.207139368553220990,	-0.207188283866489910,	-0.207237198661788580,	
+-0.207286112938993820,	-0.207335026697983760,	-0.207383939938636160,	-0.207432852660829110,	-0.207481764864439530,	-0.207530676549345510,	-0.207579587715424810,	-0.207628498362555590,	
+-0.207677408490614670,	-0.207726318099480220,	-0.207775227189029990,	-0.207824135759142130,	-0.207873043809693490,	-0.207921951340562240,	-0.207970858351626570,	-0.208019764842763300,	
+-0.208068670813850610,	-0.208117576264766240,	-0.208166481195387940,	-0.208215385605593880,	-0.208264289495260910,	-0.208313192864267220,	-0.208362095712490980,	-0.208410998039809060,	
+-0.208459899846099670,	-0.208508801131240510,	-0.208557701895109780,	-0.208606602137584360,	-0.208655501858542450,	-0.208704401057861750,	-0.208753299735420530,	-0.208802197891095610,	
+-0.208851095524765190,	-0.208899992636307010,	-0.208948889225599320,	-0.208997785292518940,	-0.209046680836944110,	-0.209095575858753020,	-0.209144470357822550,	-0.209193364334030910,	
+-0.209242257787255860,	-0.209291150717375580,	-0.209340043124267020,	-0.209388935007808340,	-0.209437826367877310,	-0.209486717204352160,	-0.209535607517109780,	-0.209584497306028380,	
+-0.209633386570985740,	-0.209682275311860070,	-0.209731163528528270,	-0.209780051220868570,	-0.209828938388758740,	-0.209877825032077000,	-0.209926711150700250,	-0.209975596744506720,	
+-0.210024481813374210,	-0.210073366357180940,	-0.210122250375803820,	-0.210171133869121060,	-0.210220016837010890,	-0.210268899279350270,	-0.210317781196017380,	-0.210366662586890050,	
+-0.210415543451846490,	-0.210464423790763630,	-0.210513303603519750,	-0.210562182889992570,	-0.210611061650060380,	-0.210659939883600100,	-0.210708817590489980,	-0.210757694770607800,	
+-0.210806571423831830,	-0.210855447550038990,	-0.210904323149107540,	-0.210953198220915710,	-0.211002072765340440,	-0.211050946782260000,	-0.211099820271552190,	-0.211148693233095260,	
+-0.211197565666766170,	-0.211246437572443190,	-0.211295308950004090,	-0.211344179799327150,	-0.211393050120289330,	-0.211441919912768870,	-0.211490789176643630,	-0.211539657911791860,	
+-0.211588526118090480,	-0.211637393795417790,	-0.211686260943651640,	-0.211735127562670270,	-0.211783993652350620,	-0.211832859212571000,	-0.211881724243209250,	-0.211930588744143610,	
+-0.211979452715251070,	-0.212028316156409880,	-0.212077179067498340,	-0.212126041448393420,	-0.212174903298973400,	-0.212223764619116130,	-0.212272625408699870,	-0.212321485667601620,	
+-0.212370345395699660,	-0.212419204592871810,	-0.212468063258996390,	-0.212516921393950400,	-0.212565778997612090,	-0.212614636069859340,	-0.212663492610570440,	-0.212712348619622380,	
+-0.212761204096893420,	-0.212810059042261470,	-0.212858913455604790,	-0.212907767336800420,	-0.212956620685726600,	-0.213005473502261260,	-0.213054325786282640,	-0.213103177537667800,	
+-0.213152028756294990,	-0.213200879442042580,	-0.213249729594787500,	-0.213298579214408120,	-0.213347428300782270,	-0.213396276853788290,	-0.213445124873303190,	-0.213493972359205280,	
+-0.213542819311372420,	-0.213591665729682970,	-0.213640511614013930,	-0.213689356964243570,	-0.213738201780249850,	-0.213787046061911040,	-0.213835889809104200,	-0.213884733021707630,	
+-0.213933575699599670,	-0.213982417842657310,	-0.214031259450758930,	-0.214080100523782400,	-0.214128941061606040,	-0.214177781064106900,	-0.214226620531163310,	-0.214275459462653170,	
+-0.214324297858454800,	-0.214373135718445270,	-0.214421973042502880,	-0.214470809830505590,	-0.214519646082331680,	-0.214568481797858230,	-0.214617316976963600,	-0.214666151619525620,	
+-0.214714985725422750,	-0.214763819294531950,	-0.214812652326731630,	-0.214861484821899650,	-0.214910316779914400,	-0.214959148200652930,	-0.215007979083993610,	-0.215056809429814750,	
+-0.215105639237993420,	-0.215154468508408030,	-0.215203297240936430,	-0.215252125435457050,	-0.215300953091846910,	-0.215349780209984380,	-0.215398606789747430,	-0.215447432831014360,	
+-0.215496258333662290,	-0.215545083297569580,	-0.215593907722614160,	-0.215642731608674390,	-0.215691554955627360,	-0.215740377763351480,	-0.215789200031724610,	-0.215838021760625190,	
+-0.215886842949930300,	-0.215935663599518270,	-0.215984483709267090,	-0.216033303279055150,	-0.216082122308759510,	-0.216130940798258560,	-0.216179758747430700,	-0.216228576156153010,	
+-0.216277393024303880,	-0.216326209351761250,	-0.216375025138403540,	-0.216423840384107840,	-0.216472655088752520,	-0.216521469252215580,	-0.216570282874375410,	-0.216619095955109090,	
+-0.216667908494295010,	-0.216716720491811180,	-0.216765531947535980,	-0.216814342861346520,	-0.216863153233121190,	-0.216911963062738440,	-0.216960772350075330,	-0.217009581095010280,	
+-0.217058389297421270,	-0.217107196957186750,	-0.217156004074183780,	-0.217204810648290810,	-0.217253616679385810,	-0.217302422167347210,	-0.217351227112052130,	-0.217400031513378940,	
+-0.217448835371205710,	-0.217497638685410830,	-0.217546441455871400,	-0.217595243682465860,	-0.217644045365072230,	-0.217692846503568900,	-0.217741647097833060,	-0.217790447147743070,	
+-0.217839246653176940,	-0.217888045614013180,	-0.217936844030128830,	-0.217985641901402400,	-0.218034439227712290,	-0.218083236008935640,	-0.218132032244950900,	-0.218180827935636090,	
+-0.218229623080869630,	-0.218278417680528690,	-0.218327211734491710,	-0.218376005242636670,	-0.218424798204842090,	-0.218473590620985060,	-0.218522382490944050,	-0.218571173814597090,	
+-0.218619964591822650,	-0.218668754822497840,	-0.218717544506501160,	-0.218766333643711040,	-0.218815122234004650,	-0.218863910277260460,	-0.218912697773356480,	-0.218961484722170780,	
+-0.219010271123581790,	-0.219059056977466690,	-0.219107842283703950,	-0.219156627042172040,	-0.219205411252748120,	-0.219254194915310670,	-0.219302978029737750,	-0.219351760595907800,	
+-0.219400542613698010,	-0.219449324082986900,	-0.219498105003652440,	-0.219546885375573180,	-0.219595665198626250,	-0.219644444472690160,	-0.219693223197642980,	-0.219742001373363170,	
+-0.219790778999727900,	-0.219839556076615710,	-0.219888332603905030,	-0.219937108581473110,	-0.219985884009198410,	-0.220034658886959030,	-0.220083433214633390,	-0.220132206992098760,	
+-0.220180980219233600,	-0.220229752895916010,	-0.220278525022024470,	-0.220327296597436160,	-0.220376067622029630,	-0.220424838095682920,	-0.220473608018274540,	-0.220522377389681720,	
+-0.220571146209782960,	-0.220619914478456330,	-0.220668682195580330,	-0.220717449361032210,	-0.220766215974690480,	-0.220814982036433180,	-0.220863747546138880,	-0.220912512503684770,	
+-0.220961276908949370,	-0.221010040761811240,	-0.221058804062147530,	-0.221107566809836840,	-0.221156329004757230,	-0.221205090646787230,	-0.221253851735804090,	-0.221302612271686290,	
+-0.221351372254311980,	-0.221400131683559650,	-0.221448890559306580,	-0.221497648881431250,	-0.221546406649811840,	-0.221595163864326820,	-0.221643920524853460,	-0.221692676631270320,	
+-0.221741432183455910,	-0.221790187181287480,	-0.221838941624643570,	-0.221887695513402320,	-0.221936448847441850,	-0.221985201626640680,	-0.222033953850876040,	-0.222082705520026540,	
+-0.222131456633970710,	-0.222180207192585830,	-0.222228957195750390,	-0.222277706643342590,	-0.222326455535240940,	-0.222375203871322730,	-0.222423951651466500,	-0.222472698875550380,	
+-0.222521445543452960,	-0.222570191655051490,	-0.222618937210224550,	-0.222667682208850250,	-0.222716426650807180,	-0.222765170535972640,	-0.222813913864225140,	-0.222862656635443300,	
+-0.222911398849504390,	-0.222960140506286990,	-0.223008881605669200,	-0.223057622147529670,	-0.223106362131745640,	-0.223155101558195730,	-0.223203840426758030,	-0.223252578737311190,	
+-0.223301316489732480,	-0.223350053683900460,	-0.223398790319693290,	-0.223447526396989590,	-0.223496261915666660,	-0.223544996875603060,	-0.223593731276676950,	-0.223642465118766980,	
+-0.223691198401750390,	-0.223739931125505800,	-0.223788663289911400,	-0.223837394894845780,	-0.223886125940186230,	-0.223934856425811350,	-0.223983586351599790,	-0.224032315717428790,	
+-0.224081044523177040,	-0.224129772768722670,	-0.224178500453944300,	-0.224227227578719240,	-0.224275954142926110,	-0.224324680146443110,	-0.224373405589148840,	-0.224422130470920610,	
+-0.224470854791637060,	-0.224519578551176350,	-0.224568301749417170,	-0.224617024386236760,	-0.224665746461513830,	-0.224714467975126950,	-0.224763188926953460,	-0.224811909316872010,	
+-0.224860629144760770,	-0.224909348410498390,	-0.224958067113962240,	-0.225006785255030900,	-0.225055502833582580,	-0.225104219849495970,	-0.225152936302648350,	-0.225201652192918410,	
+-0.225250367520184320,	-0.225299082284324740,	-0.225347796485217050,	-0.225396510122739840,	-0.225445223196771380,	-0.225493935707190260,	-0.225542647653873910,	-0.225591359036700910,	
+-0.225640069855549520,	-0.225688780110298390,	-0.225737489800824890,	-0.225786198927007660,	-0.225834907488725340,	-0.225883615485855340,	-0.225932322918276310,	-0.225981029785866460,	
+-0.226029736088504490,	-0.226078441826067710,	-0.226127146998434860,	-0.226175851605484120,	-0.226224555647094180,	-0.226273259123142450,	-0.226321962033507550,	-0.226370664378067740,	
+-0.226419366156701720,	-0.226468067369286820,	-0.226516768015701780,	-0.226565468095824810,	-0.226614167609534590,	-0.226662866556708560,	-0.226711564937225330,	-0.226760262750963200,	
+-0.226808959997800820,	-0.226857656677615650,	-0.226906352790286310,	-0.226955048335691520,	-0.227003743313708680,	-0.227052437724216490,	-0.227101131567093190,	-0.227149824842217520,	
+-0.227198517549466850,	-0.227247209688719860,	-0.227295901259854880,	-0.227344592262750560,	-0.227393282697284320,	-0.227441972563334870,	-0.227490661860780510,	-0.227539350589499920,	
+-0.227588038749370530,	-0.227636726340271020,	-0.227685413362080150,	-0.227734099814675290,	-0.227782785697935200,	-0.227831471011738150,	-0.227880155755962850,	-0.227928839930486710,	
+-0.227977523535188490,	-0.228026206569946460,	-0.228074889034639350,	-0.228123570929144560,	-0.228172252253340870,	-0.228220933007106550,	-0.228269613190320330,	-0.228318292802859620,	
+-0.228366971844603190,	-0.228415650315429320,	-0.228464328215216780,	-0.228513005543842990,	-0.228561682301186670,	-0.228610358487126130,	-0.228659034101540150,	-0.228707709144306160,	
+-0.228756383615302870,	-0.228805057514409080,	-0.228853730841502210,	-0.228902403596461000,	-0.228951075779163770,	-0.228999747389489310,	-0.229048418427315020,	-0.229097088892519700,	
+-0.229145758784981670,	-0.229194428104579660,	-0.229243096851191150,	-0.229291765024694890,	-0.229340432624969250,	-0.229389099651892940,	-0.229437766105343440,	-0.229486431985199520,	
+-0.229535097291339560,	-0.229583762023642250,	-0.229632426181985120,	-0.229681089766246900,	-0.229729752776305970,	-0.229778415212041120,	-0.229827077073329780,	-0.229875738360050740,	
+-0.229924399072082790,	-0.229973059209303390,	-0.230021718771591360,	-0.230070377758825050,	-0.230119036170883200,	-0.230167694007643340,	-0.230216351268984270,	-0.230265007954784270,	
+-0.230313664064922210,	-0.230362319599275560,	-0.230410974557723110,	-0.230459628940143210,	-0.230508282746414690,	-0.230556935976415020,	-0.230605588630023030,	-0.230654240707117490,	
+-0.230702892207575890,	-0.230751543131277080,	-0.230800193478099410,	-0.230848843247921710,	-0.230897492440621440,	-0.230946141056077440,	-0.230994789094168100,	-0.231043436554772220,	
+-0.231092083437767330,	-0.231140729743032210,	-0.231189375470445270,	-0.231238020619885330,	-0.231286665191229900,	-0.231335309184357800,	-0.231383952599147430,	-0.231432595435477620,	
+-0.231481237693225870,	-0.231529879372271040,	-0.231578520472491530,	-0.231627160993766120,	-0.231675800935972400,	-0.231724440298989170,	-0.231773079082695260,	-0.231821717286968240,	
+-0.231870354911686890,	-0.231918991956729690,	-0.231967628421975440,	-0.232016264307301680,	-0.232064899612587250,	-0.232113534337710590,	-0.232162168482550500,	-0.232210802046984580,	
+-0.232259435030891640,	-0.232308067434150110,	-0.232356699256638850,	-0.232405330498235420,	-0.232453961158818670,	-0.232502591238267000,	-0.232551220736459290,	-0.232599849653273070,	
+-0.232648477988587260,	-0.232697105742280250,	-0.232745732914230900,	-0.232794359504316790,	-0.232842985512416780,	-0.232891610938409740,	-0.232940235782173240,	-0.232988860043586150,	
+-0.233037483722526920,	-0.233086106818874400,	-0.233134729332506170,	-0.233183351263301140,	-0.233231972611137710,	-0.233280593375894800,	-0.233329213557449950,	-0.233377833155682110,	
+-0.233426452170469640,	-0.233475070601691510,	-0.233523688449225250,	-0.233572305712949760,	-0.233620922392743960,	-0.233669538488485430,	-0.233718154000053020,	-0.233766768927325260,	
+-0.233815383270180980,	-0.233863997028497830,	-0.233912610202154670,	-0.233961222791029990,	-0.234009834795002700,	-0.234058446213950390,	-0.234107057047751950,	-0.234155667296285870,	
+-0.234204276959431050,	-0.234252886037065120,	-0.234301494529066960,	-0.234350102435315070,	-0.234398709755688360,	-0.234447316490064450,	-0.234495922638322220,	-0.234544528200340220,	
+-0.234593133175997310,	-0.234641737565171150,	-0.234690341367740610,	-0.234738944583584690,	-0.234787547212580970,	-0.234836149254608360,	-0.234884750709545400,	-0.234933351577270990,	
+-0.234981951857662770,	-0.235030551550599650,	-0.235079150655960160,	-0.235127749173623250,	-0.235176347103466520,	-0.235224944445368900,	-0.235273541199208960,	-0.235322137364865570,	
+-0.235370732942216420,	-0.235419327931140430,	-0.235467922331516530,	-0.235516516143222420,	-0.235565109366137030,	-0.235613702000138840,	-0.235662294045106410,	-0.235710885500918680,	
+-0.235759476367453290,	-0.235808066644589230,	-0.235856656332205400,	-0.235905245430179540,	-0.235953833938390530,	-0.236002421856716970,	-0.236051009185037770,	-0.236099595923230600,	
+-0.236148182071174470,	-0.236196767628747860,	-0.236245352595829770,	-0.236293936972297860,	-0.236342520758031140,	-0.236391103952908080,	-0.236439686556807720,	-0.236488268569607700,	
+-0.236536849991187010,	-0.236585430821424610,	-0.236634011060198210,	-0.236682590707386810,	-0.236731169762868900,	-0.236779748226523510,	-0.236828326098228320,	-0.236876903377862320,	
+-0.236925480065304060,	-0.236974056160432520,	-0.237022631663125400,	-0.237071206573261720,	-0.237119780890720030,	-0.237168354615379300,	-0.237216927747117250,	-0.237265500285812890,	
+-0.237314072231344790,	-0.237362643583591940,	-0.237411214342432040,	-0.237459784507744100,	-0.237508354079406710,	-0.237556923057298860,	-0.237605491441298280,	-0.237654059231283940,	
+-0.237702626427134910,	-0.237751193028728880,	-0.237799759035944860,	-0.237848324448661470,	-0.237896889266757670,	-0.237945453490111230,	-0.237994017118601160,	-0.238042580152106030,	
+-0.238091142590504870,	-0.238139704433675460,	-0.238188265681496760,	-0.238236826333847410,	-0.238285386390606420,	-0.238333945851651550,	-0.238382504716861790,	-0.238431062986116220,	
+-0.238479620659292540,	-0.238528177736269830,	-0.238576734216926660,	-0.238625290101142080,	-0.238673845388793880,	-0.238722400079761030,	-0.238770954173922190,	-0.238819507671156390,	
+-0.238868060571341410,	-0.238916612874356280,	-0.238965164580079600,	-0.239013715688390440,	-0.239062266199166570,	-0.239110816112287020,	-0.239159365427630440,	-0.239207914145075890,	
+-0.239256462264501090,	-0.239305009785785170,	-0.239353556708806700,	-0.239402103033444780,	-0.239450648759577170,	-0.239499193887082930,	-0.239547738415841150,	-0.239596282345729610,	
+-0.239644825676627340,	-0.239693368408413020,	-0.239741910540965690,	-0.239790452074163160,	-0.239838993007884500,	-0.239887533342008350,	-0.239936073076413820,	-0.239984612210978670,	
+-0.240033150745581960,	-0.240081688680102410,	-0.240130226014419050,	-0.240178762748409710,	-0.240227298881953430,	-0.240275834414928950,	-0.240324369347215290,	-0.240372903678690270,	
+-0.240421437409233000,	-0.240469970538722130,	-0.240518503067036760,	-0.240567034994054710,	-0.240615566319655080,	-0.240664097043716970,	-0.240712627166118160,	-0.240761156686737810,	
+-0.240809685605454540,	-0.240858213922147510,	-0.240906741636694510,	-0.240955268748974660,	-0.241003795258866640,	-0.241052321166249560,	-0.241100846471001220,	-0.241149371173000780,	
+-0.241197895272126930,	-0.241246418768258750,	-0.241294941661274100,	-0.241343463951052110,	-0.241391985637471880,	-0.241440506720411260,	-0.241489027199749350,	-0.241537547075364900,	
+-0.241586066347137000,	-0.241634585014943500,	-0.241683103078663560,	-0.241731620538175850,	-0.241780137393359520,	-0.241828653644092400,	-0.241877169290253660,	-0.241925684331721990,	
+-0.241974198768376560,	-0.242022712600095170,	-0.242071225826757020,	-0.242119738448240810,	-0.242168250464425670,	-0.242216761875189480,	-0.242265272680411370,	-0.242313782879970100,	
+-0.242362292473744800,	-0.242410801461613340,	-0.242459309843454870,	-0.242507817619148550,	-0.242556324788572280,	-0.242604831351605180,	-0.242653337308125990,	-0.242701842658013920,	
+-0.242750347401146790,	-0.242798851537403800,	-0.242847355066663660,	-0.242895857988805590,	-0.242944360303707420,	-0.242992862011248370,	-0.243041363111307170,	-0.243089863603762970,	
+-0.243138363488493690,	-0.243186862765378510,	-0.243235361434296170,	-0.243283859495125850,	-0.243332356947745470,	-0.243380853792034170,	-0.243429350027870750,	-0.243477845655134390,	
+-0.243526340673702960,	-0.243574835083455700,	-0.243623328884271790,	-0.243671822076029110,	-0.243720314658606880,	-0.243768806631883880,	-0.243817297995739280,	-0.243865788750050990,	
+-0.243914278894698240,	-0.243962768429559800,	-0.244011257354514870,	-0.244059745669441360,	-0.244108233374218500,	-0.244156720468725050,	-0.244205206952840200,	-0.244253692826441940,	
+-0.244302178089409430,	-0.244350662741621930,	-0.244399146782957290,	-0.244447630213294830,	-0.244496113032513280,	-0.244544595240491880,	-0.244593076837108570,	-0.244641557822242560,	
+-0.244690038195772650,	-0.244738517957578060,	-0.244786997107536760,	-0.244835475645527990,	-0.244883953571430500,	-0.244932430885123560,	-0.244980907586485140,	-0.245029383675394420,	
+-0.245077859151730250,	-0.245126334015371870,	-0.245174808266197230,	-0.245223281904085540,	-0.245271754928915680,	-0.245320227340566850,	-0.245368699138917010,	-0.245417170323845440,	
+-0.245465640895231370,	-0.245514110852952770,	-0.245562580196888870,	-0.245611048926918540,	-0.245659517042921020,	-0.245707984544774270,	-0.245756451432357550,	-0.245804917705549740,	
+-0.245853383364230020,	-0.245901848408276450,	-0.245950312837568240,	-0.245998776651984250,	-0.246047239851403730,	-0.246095702435704690,	-0.246144164404766410,	-0.246192625758467700,	
+-0.246241086496687880,	-0.246289546619304880,	-0.246338006126198050,	-0.246386465017246180,	-0.246434923292328580,	-0.246483380951323240,	-0.246531837994109470,	-0.246580294420566530,	
+-0.246628750230572400,	-0.246677205424006420,	-0.246725660000747420,	-0.246774113960674670,	-0.246822567303666250,	-0.246871020029601370,	-0.246919472138358960,	-0.246967923629818310,	
+-0.247016374503857410,	-0.247064824760355600,	-0.247113274399191700,	-0.247161723420245030,	-0.247210171823393670,	-0.247258619608516830,	-0.247307066775493910,	-0.247355513324202860,	
+-0.247403959254523050,	-0.247452404566333330,	-0.247500849259512600,	-0.247549293333940180,	-0.247597736789494090,	-0.247646179626053680,	-0.247694621843498250,	-0.247743063441705800,	
+-0.247791504420555720,	-0.247839944779926880,	-0.247888384519698610,	-0.247936823639748920,	-0.247985262139957200,	-0.248033700020202750,	-0.248082137280363600,	-0.248130573920319120,	
+-0.248179009939948210,	-0.248227445339129770,	-0.248275880117743150,	-0.248324314275666400,	-0.248372747812778880,	-0.248421180728959880,	-0.248469613024087540,	-0.248518044698041150,	
+-0.248566475750699650,	-0.248614906181942400,	-0.248663335991647440,	-0.248711765179694150,	-0.248760193745961420,	-0.248808621690328660,	-0.248857049012673910,	-0.248905475712876550,	
+-0.248953901790815500,	-0.249002327246370110,	-0.249050752079418490,	-0.249099176289839960,	-0.249147599877513950,	-0.249196022842318510,	-0.249244445184133000,	-0.249292866902836360,	
+-0.249341287998307570,	-0.249389708470425990,	-0.249438128319069720,	-0.249486547544118110,	-0.249534966145450590,	-0.249583384122945200,	-0.249631801476481370,	-0.249680218205938030,	
+-0.249728634311194550,	-0.249777049792129090,	-0.249825464648620960,	-0.249873878880549210,	-0.249922292487793190,	-0.249970705470230980,	-0.250019117827742050,	-0.250067529560205280,	
+-0.250115940667500150,	-0.250164351149504690,	-0.250212761006098410,	-0.250261170237160660,	-0.250309578842569490,	-0.250357986822204450,	-0.250406394175944400,	-0.250454800903668340,	
+-0.250503207005255750,	-0.250551612480584720,	-0.250600017329534630,	-0.250648421551984910,	-0.250696825147813720,	-0.250745228116900480,	-0.250793630459124170,	-0.250842032174364240,	
+-0.250890433262498770,	-0.250938833723407200,	-0.250987233556969000,	-0.251035632763062290,	-0.251084031341566480,	-0.251132429292360630,	-0.251180826615323650,	-0.251229223310335090,	
+-0.251277619377273000,	-0.251326014816016910,	-0.251374409626446140,	-0.251422803808438950,	-0.251471197361874790,	-0.251519590286632570,	-0.251567982582591830,	-0.251616374249630740,	
+-0.251664765287628660,	-0.251713155696464690,	-0.251761545476018260,	-0.251809934626167580,	-0.251858323146792020,	-0.251906711037770630,	-0.251955098298982940,	-0.252003484930307050,	
+-0.252051870931622460,	-0.252100256302808580,	-0.252148641043743680,	-0.252197025154307140,	-0.252245408634378050,	-0.252293791483835460,	-0.252342173702558790,	-0.252390555290426310,	
+-0.252438936247317390,	-0.252487316573111580,	-0.252535696267687020,	-0.252584075330923250,	-0.252632453762699270,	-0.252680831562894610,	-0.252729208731387430,	-0.252777585268057270,	
+-0.252825961172783110,	-0.252874336445444440,	-0.252922711085919520,	-0.252971085094087830,	-0.253019458469828480,	-0.253067831213020840,	-0.253116203323543230,	-0.253164574801275080,	
+-0.253212945646095980,	-0.253261315857884030,	-0.253309685436518830,	-0.253358054381879360,	-0.253406422693845220,	-0.253454790372294620,	-0.253503157417106990,	-0.253551523828161480,	
+-0.253599889605337640,	-0.253648254748513600,	-0.253696619257568920,	-0.253744983132382750,	-0.253793346372834520,	-0.253841708978802430,	-0.253890070950166140,	-0.253938432286805070,	
+-0.253986792988597500,	-0.254035153055422960,	-0.254083512487160550,	-0.254131871283689300,	-0.254180229444888880,	-0.254228586970637380,	-0.254276943860814450,	-0.254325300115299640,	
+-0.254373655733971080,	-0.254422010716708390,	-0.254470365063390660,	-0.254518718773897480,	-0.254567071848107060,	-0.254615424285899010,	-0.254663776087152350,	-0.254712127251746630,	
+-0.254760477779560230,	-0.254808827670472640,	-0.254857176924362940,	-0.254905525541110790,	-0.254953873520594340,	-0.255002220862693200,	-0.255050567567286950,	-0.255098913634253910,	
+-0.255147259063473520,	-0.255195603854824980,	-0.255243948008187450,	-0.255292291523440520,	-0.255340634400462340,	-0.255388976639132630,	-0.255437318239330910,	-0.255485659200935470,	
+-0.255533999523825880,	-0.255582339207881260,	-0.255630678252981250,	-0.255679016659004110,	-0.255727354425829450,	-0.255775691553336350,	-0.255824028041404530,	-0.255872363889912140,	
+-0.255920699098738880,	-0.255969033667763860,	-0.256017367596866660,	-0.256065700885925620,	-0.256114033534820370,	-0.256162365543430410,	-0.256210696911634170,	-0.256259027639311130,	
+-0.256307357726340560,	-0.256355687172601990,	-0.256404015977973800,	-0.256452344142335530,	-0.256500671665566450,	-0.256548998547546090,	-0.256597324788152840,	-0.256645650387266220,	
+-0.256693975344765510,	-0.256742299660530300,	-0.256790623334438920,	-0.256838946366370950,	-0.256887268756206040,	-0.256935590503822590,	-0.256983911609100110,	-0.257032232071917830,	
+-0.257080551892155010,	-0.257128871069691230,	-0.257177189604404830,	-0.257225507496175450,	-0.257273824744882810,	-0.257322141350405100,	-0.257370457312622040,	-0.257418772631412830,	
+-0.257467087306657180,	-0.257515401338233310,	-0.257563714726020960,	-0.257612027469899360,	-0.257660339569748100,	-0.257708651025445550,	-0.257756961836871360,	-0.257805272003904800,	
+-0.257853581526425460,	-0.257901890404311770,	-0.257950198637443340,	-0.257998506225699810,	-0.258046813168959610,	-0.258095119467102400,	-0.258143425120007370,	-0.258191730127553750,	
+-0.258240034489621300,	-0.258288338206088260,	-0.258336641276834420,	-0.258384943701739420,	-0.258433245480681580,	-0.258481546613540670,	-0.258529847100195890,	-0.258578146940526890,	
+-0.258626446134412100,	-0.258674744681731240,	-0.258723042582363500,	-0.258771339836188550,	-0.258819636443084870,	-0.258867932402932040,	-0.258916227715609400,	-0.258964522380996650,	
+-0.259012816398972170,	-0.259061109769415600,	-0.259109402492206710,	-0.259157694567223870,	-0.259205985994346800,	-0.259254276773454810,	-0.259302566904427490,	-0.259350856387143340,	
+-0.259399145221482110,	-0.259447433407322960,	-0.259495720944545650,	-0.259544007833028610,	-0.259592294072651550,	-0.259640579663293790,	-0.259688864604834980,	-0.259737148897153600,	
+-0.259785432540129370,	-0.259833715533641930,	-0.259881997877569830,	-0.259930279571792660,	-0.259978560616189850,	-0.260026841010640610,	-0.260075120755024700,	-0.260123399849220560,	
+-0.260171678293107940,	-0.260219956086566560,	-0.260268233229474840,	-0.260316509721712550,	-0.260364785563158950,	-0.260413060753693860,	-0.260461335293195650,	-0.260509609181544140,	
+-0.260557882418618600,	-0.260606155004298790,	-0.260654426938463140,	-0.260702698220991400,	-0.260750968851762970,	-0.260799238830657530,	-0.260847508157553530,	-0.260895776832330780,	
+-0.260944044854869050,	-0.260992312225046710,	-0.261040578942743630,	-0.261088845007839130,	-0.261137110420212480,	-0.261185375179743500,	-0.261233639286310660,	-0.261281902739793680,	
+-0.261330165540072430,	-0.261378427687025290,	-0.261426689180532080,	-0.261474950020472160,	-0.261523210206725310,	-0.261571469739170000,	-0.261619728617686010,	-0.261667986842152700,	
+-0.261716244412449890,	-0.261764501328455970,	-0.261812757590050850,	-0.261861013197113800,	-0.261909268149524700,	-0.261957522447161920,	-0.262005776089905380,	-0.262054029077634810,	
+-0.262102281410228790,	-0.262150533087567030,	-0.262198784109528900,	-0.262247034475994290,	-0.262295284186841670,	-0.262343533241950810,	-0.262391781641201140,	-0.262440029384472420,	
+-0.262488276471643240,	-0.262536522902593330,	-0.262584768677202100,	-0.262633013795349420,	-0.262681258256913740,	-0.262729502061774920,	-0.262777745209812790,	-0.262825987700905870,	
+-0.262874229534934000,	-0.262922470711776550,	-0.262970711231312880,	-0.263018951093422880,	-0.263067190297985090,	-0.263115428844879320,	-0.263163666733985390,	-0.263211903965181850,	
+-0.263260140538348620,	-0.263308376453364970,	-0.263356611710110820,	-0.263404846308464720,	-0.263453080248306550,	-0.263501313529515610,	-0.263549546151971850,	-0.263597778115553790,	
+-0.263646009420141270,	-0.263694240065613760,	-0.263742470051851030,	-0.263790699378731730,	-0.263838928046135680,	-0.263887156053942750,	-0.263935383402031490,	-0.263983610090281760,	
+-0.264031836118573000,	-0.264080061486784650,	-0.264128286194796610,	-0.264176510242487390,	-0.264224733629736920,	-0.264272956356425060,	-0.264321178422430300,	-0.264369399827632690,	
+-0.264417620571911540,	-0.264465840655146780,	-0.264514060077216950,	-0.264562278838001990,	-0.264610496937381760,	-0.264658714375234860,	-0.264706931151441170,	-0.264755147265880180,	
+-0.264803362718431300,	-0.264851577508974480,	-0.264899791637388250,	-0.264948005103552540,	-0.264996217907347230,	-0.265044430048650970,	-0.265092641527343630,	-0.265140852343304700,	
+-0.265189062496414050,	-0.265237271986550340,	-0.265285480813593430,	-0.265333688977422820,	-0.265381896477918430,	-0.265430103314958870,	-0.265478309488423990,	-0.265526514998193410,	
+-0.265574719844146930,	-0.265622924026163280,	-0.265671127544122250,	-0.265719330397903850,	-0.265767532587386720,	-0.265815734112450740,	-0.265863934972975450,	-0.265912135168840270,	
+-0.265960334699925250,	-0.266008533566108930,	-0.266056731767271240,	-0.266104929303292210,	-0.266153126174050400,	-0.266201322379425730,	-0.266249517919297850,	-0.266297712793546530,	
+-0.266345907002050520,	-0.266394100544689760,	-0.266442293421343730,	-0.266490485631892370,	-0.266538677176214430,	-0.266586868054189740,	-0.266635058265697940,	-0.266683247810618860,	
+-0.266731436688831260,	-0.266779624900215060,	-0.266827812444650260,	-0.266875999322015440,	-0.266924185532190660,	-0.266972371075055450,	-0.267020555950489680,	-0.267068740158372120,	
+-0.267116923698582700,	-0.267165106571000950,	-0.267213288775506930,	-0.267261470311979220,	-0.267309651180297810,	-0.267357831380342300,	-0.267406010911992620,	-0.267454189775127530,	
+-0.267502367969626900,	-0.267550545495370830,	-0.267598722352237970,	-0.267646898540108260,	-0.267695074058861340,	-0.267743248908376750,	-0.267791423088534430,	-0.267839596599213140,	
+-0.267887769440292860,	-0.267935941611653570,	-0.267984113113173990,	-0.268032283944734160,	-0.268080454106213560,	-0.268128623597492340,	-0.268176792418449050,	-0.268224960568963830,	
+-0.268273128048916230,	-0.268321294858186180,	-0.268369460996652490,	-0.268417626464195150,	-0.268465791260693750,	-0.268513955386028290,	-0.268562118840077520,	-0.268610281622721440,	
+-0.268658443733840120,	-0.268706605173312240,	-0.268754765941017830,	-0.268802926036836530,	-0.268851085460647900,	-0.268899244212331970,	-0.268947402291767500,	-0.268995559698834540,	
+-0.269043716433413130,	-0.269091872495381970,	-0.269140027884621160,	-0.269188182601010240,	-0.269236336644429360,	-0.269284490014757130,	-0.269332642711873740,	-0.269380794735658680,	
+-0.269428946085992100,	-0.269477096762752720,	-0.269525246765820630,	-0.269573396095075360,	-0.269621544750397070,	-0.269669692731664470,	-0.269717840038757650,	-0.269765986671556660,	
+-0.269814132629940310,	-0.269862277913788580,	-0.269910422522981140,	-0.269958566457398130,	-0.270006709716918260,	-0.270054852301421570,	-0.270102994210787820,	-0.270151135444896940,	
+-0.270199276003627810,	-0.270247415886860520,	-0.270295555094474670,	-0.270343693626350360,	-0.270391831482366400,	-0.270439968662402890,	-0.270488105166339870,	-0.270536240994056100,	
+-0.270584376145431790,	-0.270632510620346490,	-0.270680644418679950,	-0.270728777540312220,	-0.270776909985122160,	-0.270825041752989770,	-0.270873172843795200,	-0.270921303257417310,	
+-0.270969432993736100,	-0.271017562052631390,	-0.271065690433983150,	-0.271113818137670270,	-0.271161945163572840,	-0.271210071511570560,	-0.271258197181543480,	-0.271306322173370530,	
+-0.271354446486931740,	-0.271402570122106890,	-0.271450693078776010,	-0.271498815356817970,	-0.271546936956112870,	-0.271595057876540870,	-0.271643178117980830,	-0.271691297680312800,	
+-0.271739416563416550,	-0.271787534767171770,	-0.271835652291458560,	-0.271883769136155810,	-0.271931885301143590,	-0.271980000786302130,	-0.272028115591510240,	-0.272076229716648020,	
+-0.272124343161595280,	-0.272172455926232070,	-0.272220568010437310,	-0.272268679414091110,	-0.272316790137073270,	-0.272364900179263850,	-0.272413009540541710,	-0.272461118220787110,	
+-0.272509226219879660,	-0.272557333537699620,	-0.272605440174125800,	-0.272653546129038360,	-0.272701651402317500,	-0.272749755993842050,	-0.272797859903492260,	-0.272845963131147780,	
+-0.272894065676688890,	-0.272942167539994340,	-0.272990268720944400,	-0.273038369219418760,	-0.273086469035297650,	-0.273134568168459930,	-0.273182666618785820,	-0.273230764386155010,	
+-0.273278861470447720,	-0.273326957871542870,	-0.273375053589320570,	-0.273423148623661130,	-0.273471242974443360,	-0.273519336641547480,	-0.273567429624853250,	-0.273615521924240490,	
+-0.273663613539589290,	-0.273711704470778690,	-0.273759794717688800,	-0.273807884280199860,	-0.273855973158190770,	-0.273904061351541770,	-0.273952148860132580,	-0.274000235683843460,	
+-0.274048321822553340,	-0.274096407276142370,	-0.274144492044490430,	-0.274192576127477660,	-0.274240659524983050,	-0.274288742236886760,	-0.274336824263068660,	-0.274384905603408890,	
+-0.274432986257786450,	-0.274481066226081540,	-0.274529145508174370,	-0.274577224103943920,	-0.274625302013270400,	-0.274673379236033630,	-0.274721455772113430,	-0.274769531621390010,	
+-0.274817606783742340,	-0.274865681259050640,	-0.274913755047195170,	-0.274961828148054870,	-0.275009900561510030,	-0.275057972287440390,	-0.275106043325726300,	-0.275154113676246650,	
+-0.275202183338881750,	-0.275250252313511360,	-0.275298320600015740,	-0.275346388198273890,	-0.275394455108166130,	-0.275442521329572200,	-0.275490586862372380,	-0.275538651706445700,	
+-0.275586715861672380,	-0.275634779327932680,	-0.275682842105105630,	-0.275730904193071450,	-0.275778965591710000,	-0.275827026300901610,	-0.275875086320525150,	-0.275923145650461050,	
+-0.275971204290589080,	-0.276019262240789490,	-0.276067319500941320,	-0.276115376070924900,	-0.276163431950619990,	-0.276211487139906950,	-0.276259541638664730,	-0.276307595446773690,	
+-0.276355648564114100,	-0.276403700990564940,	-0.276451752726006530,	-0.276499803770318740,	-0.276547854123381450,	-0.276595903785074930,	-0.276643952755278260,	-0.276692001033871650,	
+-0.276740048620735530,	-0.276788095515748790,	-0.276836141718791890,	-0.276884187229744560,	-0.276932232048487270,	-0.276980276174898900,	-0.277028319608859870,	-0.277076362350250070,	
+-0.277124404398949750,	-0.277172445754838010,	-0.277220486417795120,	-0.277268526387701050,	-0.277316565664436080,	-0.277364604247879290,	-0.277412642137910950,	-0.277460679334411490,	
+-0.277508715837259830,	-0.277556751646336420,	-0.277604786761521170,	-0.277652821182693910,	-0.277700854909735010,	-0.277748887942523560,	-0.277796920280939890,	-0.277844951924864360,	
+-0.277892982874176020,	-0.277941013128755240,	-0.277989042688481900,	-0.278037071553236370,	-0.278085099722897740,	-0.278133127197346400,	-0.278181153976462650,	-0.278229180060125540,	
+-0.278277205448215550,	-0.278325230140612500,	-0.278373254137196380,	-0.278421277437847560,	-0.278469300042445130,	-0.278517321950869420,	-0.278565343163000860,	-0.278613363678718530,	
+-0.278661383497902760,	-0.278709402620433530,	-0.278757421046191220,	-0.278805438775054980,	-0.278853455806905070,	-0.278901472141621590,	-0.278949487779084790,	-0.278997502719173900,	
+-0.279045516961769210,	-0.279093530506750790,	-0.279141543353998880,	-0.279189555503392750,	-0.279237566954812720,	-0.279285577708139220,	-0.279333587763251290,	-0.279381597120029410,	
+-0.279429605778353570,	-0.279477613738103700,	-0.279525620999160230,	-0.279573627561402250,	-0.279621633424710250,	-0.279669638588964540,	-0.279717643054044340,	-0.279765646819830020,	
+-0.279813649886201610,	-0.279861652253039440,	-0.279909653920222770,	-0.279957654887631970,	-0.280005655155146970,	-0.280053654722648320,	-0.280101653590015100,	-0.280149651757127690,	
+-0.280197649223866200,	-0.280245645990111040,	-0.280293642055741310,	-0.280341637420637450,	-0.280389632084679930,	-0.280437626047747910,	-0.280485619309721880,	-0.280533611870481760,	
+-0.280581603729907590,	-0.280629594887879860,	-0.280677585344277670,	-0.280725575098981550,	-0.280773564151871930,	-0.280821552502827980,	-0.280869540151730160,	-0.280917527098458460,	
+-0.280965513342893380,	-0.281013498884914060,	-0.281061483724401040,	-0.281109467861234700,	-0.281157451295294290,	-0.281205434026460200,	-0.281253416054612570,	-0.281301397379631450,	
+-0.281349378001397200,	-0.281397357919789090,	-0.281445337134687560,	-0.281493315645973130,	-0.281541293453525020,	-0.281589270557223600,	-0.281637246956949080,	-0.281685222652581830,	
+-0.281733197644001120,	-0.281781171931087430,	-0.281829145513720740,	-0.281877118391781700,	-0.281925090565149360,	-0.281973062033704310,	-0.282021032797326650,	-0.282069002855896810,	
+-0.282116972209294050,	-0.282164940857398850,	-0.282212908800091700,	-0.282260876037251860,	-0.282308842568759880,	-0.282356808394495730,	-0.282404773514339570,	-0.282452737928171940,	
+-0.282500701635871990,	-0.282548664637320310,	-0.282596626932397400,	-0.282644588520982510,	-0.282692549402956130,	-0.282740509578198350,	-0.282788469046589770,	-0.282836427808009610,	
+-0.282884385862338330,	-0.282932343209456090,	-0.282980299849243440,	-0.283028255781579590,	-0.283076211006345110,	-0.283124165523420070,	-0.283172119332685100,	-0.283220072434019370,	
+-0.283268024827303510,	-0.283315976512417970,	-0.283363927489242050,	-0.283411877757656310,	-0.283459827317540940,	-0.283507776168776370,	-0.283555724311241930,	-0.283603671744818210,	
+-0.283651618469385300,	-0.283699564484823750,	-0.283747509791012880,	-0.283795454387833270,	-0.283843398275164970,	-0.283891341452888630,	-0.283939283920883470,	-0.283987225679030120,	
+-0.284035166727209190,	-0.284083107065299880,	-0.284131046693182790,	-0.284178985610738070,	-0.284226923817845870,	-0.284274861314386840,	-0.284322798100240190,	-0.284370734175286580,	
+-0.284418669539406530,	-0.284466604192479430,	-0.284514538134385760,	-0.284562471365005790,	-0.284610403884220040,	-0.284658335691907850,	-0.284706266787949860,	-0.284754197172226160,	
+-0.284802126844617420,	-0.284850055805002940,	-0.284897984053263280,	-0.284945911589278680,	-0.284993838412929750,	-0.285041764524095800,	-0.285089689922657430,	-0.285137614608495240,	
+-0.285185538581488600,	-0.285233461841518100,	-0.285281384388463950,	-0.285329306222206370,	-0.285377227342625940,	-0.285425147749601980,	-0.285473067443015200,	-0.285520986422746150,	
+-0.285568904688674190,	-0.285616822240680020,	-0.285664739078643760,	-0.285712655202446100,	-0.285760570611966360,	-0.285808485307085190,	-0.285856399287682810,	-0.285904312553639850,	
+-0.285952225104835700,	-0.286000136941150950,	-0.286048048062465920,	-0.286095958468661150,	-0.286143868159616070,	-0.286191777135211320,	-0.286239685395327570,	-0.286287592939844130,	
+-0.286335499768641750,	-0.286383405881600610,	-0.286431311278601390,	-0.286479215959523470,	-0.286527119924247510,	-0.286575023172653710,	-0.286622925704622830,	-0.286670827520034140,	
+-0.286718728618768460,	-0.286766629000705930,	-0.286814528665727260,	-0.286862427613711830,	-0.286910325844540350,	-0.286958223358093460,	-0.287006120154250590,	-0.287054016232892390,	
+-0.287101911593899200,	-0.287149806237151200,	-0.287197700162529160,	-0.287245593369912400,	-0.287293485859181690,	-0.287341377630217610,	-0.287389268682899710,	-0.287437159017108650,	
+-0.287485048632724730,	-0.287532937529628550,	-0.287580825707699610,	-0.287628713166818650,	-0.287676599906865840,	-0.287724485927721980,	-0.287772371229266520,	-0.287820255811380100,	
+-0.287868139673943040,	-0.287916022816836090,	-0.287963905239938590,	-0.288011786943131400,	-0.288059667926295120,	-0.288107548189309230,	-0.288155427732054490,	-0.288203306554411230,	
+-0.288251184656259650,	-0.288299062037480570,	-0.288346938697953360,	-0.288394814637558840,	-0.288442689856177710,	-0.288490564353689420,	-0.288538438129974710,	-0.288586311184913900,	
+-0.288634183518387770,	-0.288682055130275730,	-0.288729926020458550,	-0.288777796188816550,	-0.288825665635230490,	-0.288873534359579850,	-0.288921402361745410,	-0.288969269641607410,	
+-0.289017136199046680,	-0.289065002033942700,	-0.289112867146176180,	-0.289160731535627940,	-0.289208595202177450,	-0.289256458145705440,	-0.289304320366092330,	-0.289352181863218820,	
+-0.289400042636964390,	-0.289447902687209930,	-0.289495762013835700,	-0.289543620616722450,	-0.289591478495749730,	-0.289639335650798360,	-0.289687192081748590,	-0.289735047788481300,	
+-0.289782902770875980,	-0.289830757028813390,	-0.289878610562174290,	-0.289926463370838270,	-0.289974315454686100,	-0.290022166813598160,	-0.290070017447454750,	-0.290117867356136760,	
+-0.290165716539523670,	-0.290213564997496290,	-0.290261412729935440,	-0.290309259736720620,	-0.290357106017732620,	-0.290404951572851900,	-0.290452796401959200,	-0.290500640504934070,	
+-0.290548483881657380,	-0.290596326532009450,	-0.290644168455871150,	-0.290692009653121970,	-0.290739850123642780,	-0.290787689867314010,	-0.290835528884016370,	-0.290883367173629560,	
+-0.290931204736034290,	-0.290979041571111430,	-0.291026877678740530,	-0.291074713058802450,	-0.291122547711177570,	-0.291170381635746320,	-0.291218214832389580,	-0.291266047300986870,	
+-0.291313879041419030,	-0.291361710053566920,	-0.291409540337310090,	-0.291457369892529410,	-0.291505198719105350,	-0.291553026816918690,	-0.291600854185849020,	-0.291648680825777220,	
+-0.291696506736584150,	-0.291744331918149410,	-0.291792156370353830,	-0.291839980093077880,	-0.291887803086201940,	-0.291935625349606930,	-0.291983446883172400,	-0.292031267686779280,	
+-0.292079087760308440,	-0.292126907103639420,	-0.292174725716653150,	-0.292222543599230110,	-0.292270360751251070,	-0.292318177172595730,	-0.292365992863144910,	-0.292413807822779150,	
+-0.292461622051379320,	-0.292509435548824970,	-0.292557248314997020,	-0.292605060349775960,	-0.292652871653042710,	-0.292700682224676820,	-0.292748492064559220,	-0.292796301172570830,	
+-0.292844109548591250,	-0.292891917192501410,	-0.292939724104181790,	-0.292987530283512820,	-0.293035335730375490,	-0.293083140444649340,	-0.293130944426215400,	-0.293178747674954500,	
+-0.293226550190746280,	-0.293274351973471740,	-0.293322153023011290,	-0.293369953339245870,	-0.293417752922055190,	-0.293465551771320050,	-0.293513349886921070,	-0.293561147268739160,	
+-0.293608943916653930,	-0.293656739830546350,	-0.293704535010296920,	-0.293752329455786610,	-0.293800123166895020,	-0.293847916143503090,	-0.293895708385491840,	-0.293943499892740880,	
+-0.293991290665131190,	-0.294039080702543250,	-0.294086870004857610,	-0.294134658571955250,	-0.294182446403715770,	-0.294230233500020200,	-0.294278019860749470,	-0.294325805485783240,	
+-0.294373590375002550,	-0.294421374528287870,	-0.294469157945520140,	-0.294516940626579130,	-0.294564722571345750,	-0.294612503779701000,	-0.294660284251524520,	-0.294708063986697410,	
+-0.294755842985100100,	-0.294803621246613130,	-0.294851398771117600,	-0.294899175558493150,	-0.294946951608620720,	-0.294994726921381340,	-0.295042501496654790,	-0.295090275334321920,	
+-0.295138048434263330,	-0.295185820796360130,	-0.295233592420491910,	-0.295281363306539700,	-0.295329133454384110,	-0.295376902863906050,	-0.295424671534985360,	-0.295472439467503010,	
+-0.295520206661339550,	-0.295567973116375950,	-0.295615738832492040,	-0.295663503809568740,	-0.295711268047487150,	-0.295759031546126930,	-0.295806794305369160,	-0.295854556325094390,	
+-0.295902317605183260,	-0.295950078145516720,	-0.295997837945974560,	-0.296045597006437840,	-0.296093355326787540,	-0.296141112906903430,	-0.296188869746666530,	-0.296236625845957450,	
+-0.296284381204657220,	-0.296332135822645610,	-0.296379889699803670,	-0.296427642836012030,	-0.296475395231151680,	-0.296523146885102450,	-0.296570897797745310,	-0.296618647968960980,	
+-0.296666397398630380,	-0.296714146086633430,	-0.296761894032851080,	-0.296809641237164410,	-0.296857387699453250,	-0.296905133419598620,	-0.296952878397481130,	-0.297000622632981880,	
+-0.297048366125980620,	-0.297096108876358460,	-0.297143850883996030,	-0.297191592148774440,	-0.297239332670573400,	-0.297287072449274050,	-0.297334811484756990,	-0.297382549776903370,	
+-0.297430287325592900,	-0.297478024130706730,	-0.297525760192125950,	-0.297573495509730330,	-0.297621230083400970,	-0.297668963913018500,	-0.297716696998463700,	-0.297764429339617500,	
+-0.297812160936359870,	-0.297859891788571810,	-0.297907621896134400,	-0.297955351258927580,	-0.298003079876832330,	-0.298050807749729420,	-0.298098534877499880,	-0.298146261260023640,	
+-0.298193986897181680,	-0.298241711788854780,	-0.298289435934924020,	-0.298337159335269280,	-0.298384881989771590,	-0.298432603898311720,	-0.298480325060770770,	-0.298528045477028550,	
+-0.298575765146966270,	-0.298623484070464960,	-0.298671202247404510,	-0.298718919677666060,	-0.298766636361130320,	-0.298814352297678000,	-0.298862067487190240,	-0.298909781929546870,	
+-0.298957495624629030,	-0.299005208572317880,	-0.299052920772493290,	-0.299100632225036410,	-0.299148342929827950,	-0.299196052886749000,	-0.299243762095679540,	-0.299291470556500680,	
+-0.299339178269093120,	-0.299386885233338060,	-0.299434591449115380,	-0.299482296916306180,	-0.299530001634791270,	-0.299577705604451740,	-0.299625408825167580,	-0.299673111296819840,	
+-0.299720813019289770,	-0.299768513992457300,	-0.299816214216203470,	-0.299863913690409100,	-0.299911612414955400,	-0.299959310389722230,	-0.300007007614590810,	-0.300054704089441850,	
+-0.300102399814156600,	-0.300150094788614870,	-0.300197789012697950,	-0.300245482486286520,	-0.300293175209261800,	-0.300340867181503710,	-0.300388558402893470,	-0.300436248873312270,	
+-0.300483938592640050,	-0.300531627560757960,	-0.300579315777546760,	-0.300627003242887330,	-0.300674689956660800,	-0.300722375918747060,	-0.300770061129027490,	-0.300817745587383110,	
+-0.300865429293693980,	-0.300913112247841230,	-0.300960794449705750,	-0.301008475899168680,	-0.301056156596110010,	-0.301103836540410950,	-0.301151515731952310,	-0.301199194170615250,	
+-0.301246871856279850,	-0.301294548788827220,	-0.301342224968138230,	-0.301389900394094130,	-0.301437575066574810,	-0.301485248985461580,	-0.301532922150635650,	-0.301580594561977000,	
+-0.301628266219366890,	-0.301675937122686030,	-0.301723607271815410,	-0.301771276666636170,	-0.301818945307028300,	-0.301866613192873060,	-0.301914280324051710,	-0.301961946700444240,	
+-0.302009612321931910,	-0.302057277188395590,	-0.302104941299716430,	-0.302152604655774540,	-0.302200267256451100,	-0.302247929101627070,	-0.302295590191183570,	-0.302343250525000660,	
+-0.302390910102959650,	-0.302438568924941420,	-0.302486226990827110,	-0.302533884300496820,	-0.302581540853831880,	-0.302629196650713470,	-0.302676851691021650,	-0.302724505974637680,	
+-0.302772159501442430,	-0.302819812271317270,	-0.302867464284142130,	-0.302915115539798270,	-0.302962766038166690,	-0.303010415779128630,	-0.303058064762564080,	-0.303105712988354370,	
+-0.303153360456380360,	-0.303201007166523370,	-0.303248653118663450,	-0.303296298312681900,	-0.303343942748460050,	-0.303391586425877880,	-0.303439229344816760,	-0.303486871505157570,	
+-0.303534512906781240,	-0.303582153549569020,	-0.303629793433400960,	-0.303677432558158430,	-0.303725070923722750,	-0.303772708529974010,	-0.303820345376793480,	-0.303867981464062020,	
+-0.303915616791661130,	-0.303963251359470720,	-0.304010885167372180,	-0.304058518215246430,	-0.304106150502974790,	-0.304153782030437360,	-0.304201412797515500,	-0.304249042804090100,	
+-0.304296672050042520,	-0.304344300535252850,	-0.304391928259602370,	-0.304439555222972560,	-0.304487181425243390,	-0.304534806866296300,	-0.304582431546012170,	-0.304630055464271960,	
+-0.304677678620957070,	-0.304725301015947530,	-0.304772922649124760,	-0.304820543520370080,	-0.304868163629563590,	-0.304915782976586780,	-0.304963401561320460,	-0.305011019383646050,	
+-0.305058636443443660,	-0.305106252740594720,	-0.305153868274980530,	-0.305201483046481260,	-0.305249097054978320,	-0.305296710300352600,	-0.305344322782485080,	-0.305391934501257230,	
+-0.305439545456549110,	-0.305487155648242080,	-0.305534765076217630,	-0.305582373740355850,	-0.305629981640538120,	-0.305677588776645410,	-0.305725195148559170,	-0.305772800756159540,	
+-0.305820405599327880,	-0.305868009677945250,	-0.305915612991892960,	-0.305963215541051270,	-0.306010817325301500,	-0.306058418344524740,	-0.306106018598602310,	-0.306153618087414430,	
+-0.306201216810842450,	-0.306248814768767920,	-0.306296411961070880,	-0.306344008387632870,	-0.306391604048334760,	-0.306439198943057710,	-0.306486793071683080,	-0.306534386434091030,	
+-0.306581979030162990,	-0.306629570859780430,	-0.306677161922823570,	-0.306724752219173780,	-0.306772341748712100,	-0.306819930511319950,	-0.306867518506877600,	-0.306915105735266420,	
+-0.306962692196367510,	-0.307010277890062300,	-0.307057862816230930,	-0.307105446974754950,	-0.307153030365515330,	-0.307200612988393570,	-0.307248194843269820,	-0.307295775930025610,	
+-0.307343356248542420,	-0.307390935798700360,	-0.307438514580380960,	-0.307486092593465320,	-0.307533669837834420,	-0.307581246313369750,	-0.307628822019951560,	-0.307676396957461300,	
+-0.307723971125780480,	-0.307771544524789330,	-0.307819117154369270,	-0.307866689014401450,	-0.307914260104767360,	-0.307961830425347140,	-0.308009399976022390,	-0.308056968756674540,	
+-0.308104536767183860,	-0.308152104007431820,	-0.308199670477299510,	-0.308247236176668050,	-0.308294801105418960,	-0.308342365263432390,	-0.308389928650589900,	-0.308437491266773060,	
+-0.308485053111862030,	-0.308532614185738350,	-0.308580174488283180,	-0.308627734019377930,	-0.308675292778902990,	-0.308722850766739780,	-0.308770407982769500,	-0.308817964426873590,	
+-0.308865520098932310,	-0.308913074998827250,	-0.308960629126439510,	-0.309008182481650630,	-0.309055735064340860,	-0.309103286874391760,	-0.309150837911684850,	-0.309198388176100460,	
+-0.309245937667520070,	-0.309293486385824820,	-0.309341034330895880,	-0.309388581502614780,	-0.309436127900861780,	-0.309483673525518480,	-0.309531218376466410,	-0.309578762453585900,	
+-0.309626305756758420,	-0.309673848285865250,	-0.309721390040787860,	-0.309768931021406570,	-0.309816471227602920,	-0.309864010659258120,	-0.309911549316253700,	-0.309959087198469980,	
+-0.310006624305788570,	-0.310054160638090600,	-0.310101696195257630,	-0.310149230977170010,	-0.310196764983709290,	-0.310244298214757130,	-0.310291830670193720,	-0.310339362349900780,	
+-0.310386893253759450,	-0.310434423381651340,	-0.310481952733456690,	-0.310529481309057160,	-0.310577009108333970,	-0.310624536131168640,	-0.310672062377441550,	-0.310719587847034300,	
+-0.310767112539828080,	-0.310814636455704560,	-0.310862159594543940,	-0.310909681956227980,	-0.310957203540638220,	-0.311004724347655030,	-0.311052244377160000,	-0.311099763629034410,	
+-0.311147282103159390,	-0.311194799799416610,	-0.311242316717686370,	-0.311289832857850330,	-0.311337348219790140,	-0.311384862803386180,	-0.311432376608520080,	-0.311479889635073000,	
+-0.311527401882926660,	-0.311574913351961360,	-0.311622424042058750,	-0.311669933953100110,	-0.311717443084967070,	-0.311764951437540020,	-0.311812459010700540,	-0.311859965804329900,	
+-0.311907471818309800,	-0.311954977052520620,	-0.312002481506843950,	-0.312049985181161560,	-0.312097488075353760,	-0.312144990189302200,	-0.312192491522888190,	-0.312239992075992960,	
+-0.312287491848498190,	-0.312334990840284210,	-0.312382489051232840,	-0.312429986481225610,	-0.312477483130143010,	-0.312524978997866690,	-0.312572474084277910,	-0.312619968389258370,	
+-0.312667461912688520,	-0.312714954654449980,	-0.312762446614424090,	-0.312809937792492440,	-0.312857428188535570,	-0.312904917802435180,	-0.312952406634072420,	-0.312999894683329060,	
+-0.313047381950085580,	-0.313094868434223630,	-0.313142354135624970,	-0.313189839054169970,	-0.313237323189740350,	-0.313284806542217460,	-0.313332289111482980,	-0.313379770897417310,	
+-0.313427251899902230,	-0.313474732118819040,	-0.313522211554049410,	-0.313569690205473870,	-0.313617168072974070,	-0.313664645156431390,	-0.313712121455727470,	-0.313759596970742850,	
+-0.313807071701359240,	-0.313854545647458400,	-0.313902018808920710,	-0.313949491185628040,	-0.313996962777461590,	-0.314044433584302730,	-0.314091903606033230,	-0.314139372842533570,	
+-0.314186841293685460,	-0.314234308959370660,	-0.314281775839469700,	-0.314329241933864250,	-0.314376707242435720,	-0.314424171765065820,	-0.314471635501635090,	-0.314519098452025300,	
+-0.314566560616117710,	-0.314614021993794180,	-0.314661482584935150,	-0.314708942389422430,	-0.314756401407137340,	-0.314803859637961700,	-0.314851317081775940,	-0.314898773738461920,	
+-0.314946229607901420,	-0.314993684689974850,	-0.315041138984564100,	-0.315088592491550520,	-0.315136045210815450,	-0.315183497142240700,	-0.315230948285706750,	-0.315278398641095470,	
+-0.315325848208288570,	-0.315373296987166650,	-0.315420744977611520,	-0.315468192179504450,	-0.315515638592727410,	-0.315563084217160780,	-0.315610529052686490,	-0.315657973099185860,	
+-0.315705416356540700,	-0.315752858824631610,	-0.315800300503340350,	-0.315847741392548340,	-0.315895181492137410,	-0.315942620801988090,	-0.315990059321982260,	-0.316037497052001680,	
+-0.316084933991926890,	-0.316132370141639810,	-0.316179805501021820,	-0.316227240069954670,	-0.316274673848319090,	-0.316322106835996760,	-0.316369539032869180,	-0.316416970438818170,	
+-0.316464401053724310,	-0.316511830877469480,	-0.316559259909935050,	-0.316606688151002900,	-0.316654115600553570,	-0.316701542258469030,	-0.316748968124630990,	-0.316796393198920110,	
+-0.316843817481218260,	-0.316891240971406860,	-0.316938663669367400,	-0.316986085574981650,	-0.317033506688130300,	-0.317080927008695170,	-0.317128346536558140,	-0.317175765271599800,	
+-0.317223183213702080,	-0.317270600362746400,	-0.317318016718614650,	-0.317365432281187410,	-0.317412847050346610,	-0.317460261025973690,	-0.317507674207950510,	-0.317555086596157720,	
+-0.317602498190477260,	-0.317649908990790540,	-0.317697318996979450,	-0.317744728208924630,	-0.317792136626508070,	-0.317839544249611530,	-0.317886951078115710,	-0.317934357111902490,	
+-0.317981762350853400,	-0.318029166794849940,	-0.318076570443773910,	-0.318123973297506080,	-0.318171375355928320,	-0.318218776618922510,	-0.318266177086369400,	-0.318313576758150810,	
+-0.318360975634148220,	-0.318408373714243690,	-0.318455770998317790,	-0.318503167486252460,	-0.318550563177929180,	-0.318597958073229990,	-0.318645352172035430,	-0.318692745474227490,	
+-0.318740137979687700,	-0.318787529688297930,	-0.318834920599939010,	-0.318882310714492690,	-0.318929700031841070,	-0.318977088551864800,	-0.319024476274445800,	-0.319071863199465570,	
+-0.319119249326806130,	-0.319166634656348150,	-0.319214019187973540,	-0.319261402921563910,	-0.319308785857001230,	-0.319356167994166110,	-0.319403549332940630,	-0.319450929873206220,	
+-0.319498309614844930,	-0.319545688557737460,	-0.319593066701765740,	-0.319640444046811800,	-0.319687820592756300,	-0.319735196339481280,	-0.319782571286868270,	-0.319829945434798810,	
+-0.319877318783154900,	-0.319924691331817280,	-0.319972063080667950,	-0.320019434029588880,	-0.320066804178460780,	-0.320114173527165700,	-0.320161542075585170,	-0.320208909823601170,	
+-0.320256276771094530,	-0.320303642917947160,	-0.320351008264040730,	-0.320398372809257150,	-0.320445736553477250,	-0.320493099496583000,	-0.320540461638456010,	-0.320587822978978250,	
+-0.320635183518030550,	-0.320682543255494890,	-0.320729902191253300,	-0.320777260325186500,	-0.320824617657176570,	-0.320871974187105110,	-0.320919329914853670,	-0.320966684840304380,	
+-0.321014038963337910,	-0.321061392283836400,	-0.321108744801681780,	-0.321156096516754860,	-0.321203447428937750,	-0.321250797538112030,	-0.321298146844159690,	-0.321345495346961610,	
+-0.321392843046399760,	-0.321440189942356180,	-0.321487536034711750,	-0.321534881323348510,	-0.321582225808148050,	-0.321629569488992020,	-0.321676912365762460,	-0.321724254438340240,	
+-0.321771595706607350,	-0.321818936170445880,	-0.321866275829736700,	-0.321913614684361800,	-0.321960952734202890,	-0.322008289979141990,	-0.322055626419059940,	-0.322102962053838810,	
+-0.322150296883360330,	-0.322197630907506470,	-0.322244964126158160,	-0.322292296539197440,	-0.322339628146505960,	-0.322386958947965820,	-0.322434288943457880,	-0.322481618132864190,	
+-0.322528946516066890,	-0.322576274092946810,	-0.322623600863386040,	-0.322670926827266280,	-0.322718251984469180,	-0.322765576334876900,	-0.322812899878370250,	-0.322860222614831380,	
+-0.322907544544142330,	-0.322954865666183980,	-0.323002185980838520,	-0.323049505487987550,	-0.323096824187513290,	-0.323144142079296480,	-0.323191459163219340,	-0.323238775439163570,	
+-0.323286090907011270,	-0.323333405566643360,	-0.323380719417941890,	-0.323428032460788660,	-0.323475344695065730,	-0.323522656120654010,	-0.323569966737435710,	-0.323617276545292880,	
+-0.323664585544106430,	-0.323711893733758530,	-0.323759201114130870,	-0.323806507685105600,	-0.323853813446563720,	-0.323901118398387260,	-0.323948422540458030,	-0.323995725872658120,	
+-0.324043028394868540,	-0.324090330106971360,	-0.324137631008848350,	-0.324184931100381660,	-0.324232230381452270,	-0.324279528851942280,	-0.324326826511733890,	-0.324374123360707980,	
+-0.324421419398746800,	-0.324468714625732070,	-0.324516009041545540,	-0.324563302646069420,	-0.324610595439184630,	-0.324657887420773340,	-0.324705178590717740,	-0.324752468948898750,	
+-0.324799758495198650,	-0.324847047229499140,	-0.324894335151682420,	-0.324941622261629430,	-0.324988908559222410,	-0.325036194044343090,	-0.325083478716873710,	-0.325130762576695260,	
+-0.325178045623689850,	-0.325225327857739330,	-0.325272609278725920,	-0.325319889886530600,	-0.325367169681035520,	-0.325414448662122930,	-0.325461726829673840,	-0.325509004183570370,	
+-0.325556280723694410,	-0.325603556449927780,	-0.325650831362152670,	-0.325698105460250020,	-0.325745378744102140,	-0.325792651213591240,	-0.325839922868598310,	-0.325887193709005540,	
+-0.325934463734694810,	-0.325981732945548330,	-0.326029001341447080,	-0.326076268922273320,	-0.326123535687908920,	-0.326170801638236090,	-0.326218066773135810,	-0.326265331092490400,	
+-0.326312594596181670,	-0.326359857284091840,	-0.326407119156101930,	-0.326454380212094280,	-0.326501640451951070,	-0.326548899875553360,	-0.326596158482783390,	-0.326643416273523000,	
+-0.326690673247654500,	-0.326737929405058910,	-0.326785184745618460,	-0.326832439269215120,	-0.326879692975731050,	-0.326926945865047340,	-0.326974197937046240,	-0.327021449191609690,	
+-0.327068699628619900,	-0.327115949247957950,	-0.327163198049506110,	-0.327210446033146750,	-0.327257693198760800,	-0.327304939546230630,	-0.327352185075438170,	-0.327399429786265180,	
+-0.327446673678594040,	-0.327493916752305820,	-0.327541159007282810,	-0.327588400443407310,	-0.327635641060560370,	-0.327682880858624350,	-0.327730119837481130,	-0.327777357997013020,	
+-0.327824595337101120,	-0.327871831857627690,	-0.327919067558474720,	-0.327966302439524520,	-0.328013536500658060,	-0.328060769741757850,	-0.328108002162705640,	-0.328155233763383900,	
+-0.328202464543673630,	-0.328249694503457200,	-0.328296923642616980,	-0.328344151961034000,	-0.328391379458590650,	-0.328438606135168840,	-0.328485831990650510,	-0.328533057024918030,	
+-0.328580281237852550,	-0.328627504629336260,	-0.328674727199251670,	-0.328721948947479860,	-0.328769169873903200,	-0.328816389978403570,	-0.328863609260863390,	-0.328910827721163810,	
+-0.328958045359187100,	-0.329005262174815290,	-0.329052478167930760,	-0.329099693338414660,	-0.329146907686149240,	-0.329194121211016600,	-0.329241333912899060,	-0.329288545791677770,	
+-0.329335756847235150,	-0.329382967079453530,	-0.329430176488214040,	-0.329477385073399130,	-0.329524592834890770,	-0.329571799772571340,	-0.329619005886322040,	-0.329666211176025180,	
+-0.329713415641562760,	-0.329760619282817250,	-0.329807822099669800,	-0.329855024092002790,	-0.329902225259698200,	-0.329949425602638460,	-0.329996625120704710,	-0.330043823813779450,	
+-0.330091021681745030,	-0.330138218724482620,	-0.330185414941874700,	-0.330232610333803240,	-0.330279804900150240,	-0.330326998640798120,	-0.330374191555628140,	-0.330421383644522610,	
+-0.330468574907364090,	-0.330515765344033710,	-0.330562954954413960,	-0.330610143738386760,	-0.330657331695834610,	-0.330704518826638760,	-0.330751705130681580,	-0.330798890607845120,	
+-0.330846075258011910,	-0.330893259081063040,	-0.330940442076881060,	-0.330987624245347940,	-0.331034805586346240,	-0.331081986099757030,	-0.331129165785462920,	-0.331176344643346280,	
+-0.331223522673288360,	-0.331270699875171660,	-0.331317876248878150,	-0.331365051794289990,	-0.331412226511289650,	-0.331459400399758300,	-0.331506573459578460,	-0.331553745690632560,	
+-0.331600917092801930,	-0.331648087665968980,	-0.331695257410015760,	-0.331742426324824920,	-0.331789594410277500,	-0.331836761666256140,	-0.331883928092642890,	-0.331931093689320220,	
+-0.331978258456169410,	-0.332025422393072980,	-0.332072585499912920,	-0.332119747776571880,	-0.332166909222931020,	-0.332214069838872860,	-0.332261229624280010,	-0.332308388579033610,	
+-0.332355546703016260,	-0.332402703996110050,	-0.332449860458197520,	-0.332497016089159880,	-0.332544170888879720,	-0.332591324857239130,	-0.332638477994120660,	-0.332685630299405570,	
+-0.332732781772976380,	-0.332779932414715260,	-0.332827082224504740,	-0.332874231202226030,	-0.332921379347761840,	-0.332968526660994520,	-0.333015673141805520,	-0.333062818790077380,	
+-0.333109963605692120,	-0.333157107588531950,	-0.333204250738479480,	-0.333251393055415960,	-0.333298534539223920,	-0.333345675189785970,	-0.333392815006983420,	-0.333439953990698870,	
+-0.333487092140814400,	-0.333534229457212620,	-0.333581365939774830,	-0.333628501588383640,	-0.333675636402921190,	-0.333722770383270080,	-0.333769903529311630,	-0.333817035840928420,	
+-0.333864167318002610,	-0.333911297960416800,	-0.333958427768052350,	-0.334005556740791800,	-0.334052684878517800,	-0.334099812181111620,	-0.334146938648455960,	-0.334194064280432970,	
+-0.334241189076924790,	-0.334288313037814030,	-0.334335436162982110,	-0.334382558452311570,	-0.334429679905685120,	-0.334476800522983950,	-0.334523920304090840,	-0.334571039248887920,	
+-0.334618157357257860,	-0.334665274629081910,	-0.334712391064242830,	-0.334759506662623160,	-0.334806621424104330,	-0.334853735348568940,	-0.334900848435899180,	-0.334947960685977320,	
+-0.334995072098686010,	-0.335042182673906560,	-0.335089292411521690,	-0.335136401311413980,	-0.335183509373464860,	-0.335230616597556930,	-0.335277722983572500,	-0.335324828531394170,	
+-0.335371933240903360,	-0.335419037111982680,	-0.335466140144514480,	-0.335513242338381260,	-0.335560343693464600,	-0.335607444209647000,	-0.335654543886810870,	-0.335701642724838710,	
+-0.335748740723612100,	-0.335795837883013590,	-0.335842934202925940,	-0.335890029683230510,	-0.335937124323810010,	-0.335984218124546760,	-0.336031311085322910,	-0.336078403206021170,	
+-0.336125494486523070,	-0.336172584926711200,	-0.336219674526468280,	-0.336266763285675730,	-0.336313851204216310,	-0.336360938281972280,	-0.336408024518826290,	-0.336455109914659820,	
+-0.336502194469355590,	-0.336549278182795900,	-0.336596361054863400,	-0.336643443085439530,	-0.336690524274407150,	-0.336737604621648370,	-0.336784684127046040,	-0.336831762790481600,	
+-0.336878840611837760,	-0.336925917590997210,	-0.336972993727841450,	-0.337020069022253180,	-0.337067143474114760,	-0.337114217083308520,	-0.337161289849717110,	-0.337208361773222050,	
+-0.337255432853706130,	-0.337302503091051980,	-0.337349572485141190,	-0.337396641035856480,	-0.337443708743080160,	-0.337490775606694990,	-0.337537841626582460,	-0.337584906802625320,	
+-0.337631971134706390,	-0.337679034622707040,	-0.337726097266510090,	-0.337773159065997970,	-0.337820220021052890,	-0.337867280131557700,	-0.337914339397393900,	-0.337961397818444250,	
+-0.338008455394591510,	-0.338055512125717270,	-0.338102568011704190,	-0.338149623052434680,	-0.338196677247791570,	-0.338243730597656330,	-0.338290783101911800,	-0.338337834760440270,	
+-0.338384885573124570,	-0.338431935539846240,	-0.338478984660488090,	-0.338526032934932440,	-0.338573080363062160,	-0.338620126944758790,	-0.338667172679905040,	-0.338714217568383820,	
+-0.338761261610076640,	-0.338808304804866290,	-0.338855347152635160,	-0.338902388653265660,	-0.338949429306640630,	-0.338996469112641640,	-0.339043508071151410,	-0.339090546182052870,	
+-0.339137583445227540,	-0.339184619860558260,	-0.339231655427927440,	-0.339278690147217840,	-0.339325724018311130,	-0.339372757041090160,	-0.339419789215437250,	-0.339466820541235280,	
+-0.339513851018365840,	-0.339560880646711800,	-0.339607909426155540,	-0.339654937356579920,	-0.339701964437866540,	-0.339748990669898280,	-0.339796016052557880,	-0.339843040585727120,	
+-0.339890064269288690,	-0.339937087103125150,	-0.339984109087119290,	-0.340031130221152720,	-0.340078150505108310,	-0.340125169938868600,	-0.340172188522316340,	-0.340219206255333200,	
+-0.340266223137802030,	-0.340313239169605260,	-0.340360254350625890,	-0.340407268680745390,	-0.340454282159846800,	-0.340501294787812880,	-0.340548306564525280,	-0.340595317489866930,	
+-0.340642327563720320,	-0.340689336785967860,	-0.340736345156492480,	-0.340783352675175840,	-0.340830359341900810,	-0.340877365156550320,	-0.340924370119005950,	-0.340971374229150690,	
+-0.341018377486866970,	-0.341065379892037720,	-0.341112381444544640,	-0.341159382144270550,	-0.341206381991098100,	-0.341253380984910040,	-0.341300379125588080,	-0.341347376413015270,	
+-0.341394372847073910,	-0.341441368427647110,	-0.341488363154616450,	-0.341535357027864920,	-0.341582350047275330,	-0.341629342212729500,	-0.341676333524110310,	-0.341723323981300290,	
+-0.341770313584181970,	-0.341817302332638300,	-0.341864290226550900,	-0.341911277265802840,	-0.341958263450276970,	-0.342005248779855000,	-0.342052233254419910,	-0.342099216873854250,	
+-0.342146199638040990,	-0.342193181546861790,	-0.342240162600199630,	-0.342287142797937090,	-0.342334122139957120,	-0.342381100626141410,	-0.342428078256372950,	-0.342475055030534270,	
+-0.342522030948508360,	-0.342569006010176980,	-0.342615980215423110,	-0.342662953564129680,	-0.342709926056178450,	-0.342756897691452400,	-0.342803868469834130,	-0.342850838391206610,	
+-0.342897807455451560,	-0.342944775662451960,	-0.342991743012090460,	-0.343038709504250030,	-0.343085675138812380,	-0.343132639915660560,	-0.343179603834677100,	-0.343226566895745100,	
+-0.343273529098746260,	-0.343320490443563550,	-0.343367450930080090,	-0.343414410558177560,	-0.343461369327739020,	-0.343508327238647050,	-0.343555284290784250,	-0.343602240484033650,	
+-0.343649195818277020,	-0.343696150293397450,	-0.343743103909277870,	-0.343790056665800150,	-0.343837008562847270,	-0.343883959600301880,	-0.343930909778047020,	-0.343977859095964460,	
+-0.344024807553937220,	-0.344071755151847960,	-0.344118701889579770,	-0.344165647767014420,	-0.344212592784034880,	-0.344259536940523910,	-0.344306480236364510,	-0.344353422671438480,	
+-0.344400364245628920,	-0.344447304958818870,	-0.344494244810890080,	-0.344541183801725710,	-0.344588121931208410,	-0.344635059199220770,	-0.344681995605645940,	-0.344728931150365680,	
+-0.344775865833263080,	-0.344822799654221250,	-0.344869732613121980,	-0.344916664709848390,	-0.344963595944283160,	-0.345010526316309350,	-0.345057455825808770,	-0.345104384472664620,	
+-0.345151312256759430,	-0.345198239177976430,	-0.345245165236197420,	-0.345292090431305490,	-0.345339014763183290,	-0.345385938231713980,	-0.345432860836779430,	-0.345479782578262730,	
+-0.345526703456047020,	-0.345573623470014080,	-0.345620542620047100,	-0.345667460906028790,	-0.345714378327842240,	-0.345761294885369270,	-0.345808210578493090,	-0.345855125407096400,	
+-0.345902039371062340,	-0.345948952470272740,	-0.345995864704610740,	-0.346042776073959110,	-0.346089686578200940,	-0.346136596217218100,	-0.346183504990893840,	-0.346230412899111160,	
+-0.346277319941752090,	-0.346324226118699730,	-0.346371131429836780,	-0.346418035875045990,	-0.346464939454210530,	-0.346511842167212310,	-0.346558744013934490,	-0.346605644994260220,	
+-0.346652545108071420,	-0.346699444355251240,	-0.346746342735682500,	-0.346793240249248290,	-0.346840136895830540,	-0.346887032675312460,	-0.346933927587576800,	-0.346980821632506760,	
+-0.347027714809984230,	-0.347074607119892410,	-0.347121498562114110,	-0.347168389136532420,	-0.347215278843029380,	-0.347262167681488150,	-0.347309055651791930,	-0.347355942753822590,	
+-0.347402828987463440,	-0.347449714352597190,	-0.347496598849106720,	-0.347543482476875110,	-0.347590365235784400,	-0.347637247125717750,	-0.347684128146558410,	-0.347731008298188370,	
+-0.347777887580490770,	-0.347824765993348440,	-0.347871643536644630,	-0.347918520210261320,	-0.347965396014081660,	-0.348012270947988980,	-0.348059145011865190,	-0.348106018205593500,	
+-0.348152890529056790,	-0.348199761982137870,	-0.348246632564719940,	-0.348293502276684990,	-0.348340371117916330,	-0.348387239088297160,	-0.348434106187709420,	-0.348480972416036480,	
+-0.348527837773161100,	-0.348574702258966530,	-0.348621565873334760,	-0.348668428616149110,	-0.348715290487292380,	-0.348762151486647850,	-0.348809011614097500,	-0.348855870869524630,	
+-0.348902729252812070,	-0.348949586763843130,	-0.348996443402499800,	-0.349043299168665330,	-0.349090154062223100,	-0.349137008083055030,	-0.349183861231044390,	-0.349230713506074150,	
+-0.349277564908027140,	-0.349324415436786610,	-0.349371265092234650,	-0.349418113874254480,	-0.349464961782729460,	-0.349511808817541620,	-0.349558654978574300,	-0.349605500265710300,	
+-0.349652344678832990,	-0.349699188217824360,	-0.349746030882567780,	-0.349792872672946120,	-0.349839713588842750,	-0.349886553630139600,	-0.349933392796720090,	-0.349980231088467150,	
+-0.350027068505263990,	-0.350073905046992760,	-0.350120740713536770,	-0.350167575504779340,	-0.350214409420602560,	-0.350261242460889740,	-0.350308074625523820,	-0.350354905914387730,	
+-0.350401736327364770,	-0.350448565864337090,	-0.350495394525187960,	-0.350542222309800760,	-0.350589049218057610,	-0.350635875249841860,	-0.350682700405036350,	-0.350729524683524580,	
+-0.350776348085188540,	-0.350823170609911640,	-0.350869992257577200,	-0.350916813028067380,	-0.350963632921265530,	-0.351010451937054660,	-0.351057270075317560,	-0.351104087335937790,	
+-0.351150903718797310,	-0.351197719223779630,	-0.351244533850768040,	-0.351291347599644700,	-0.351338160470292980,	-0.351384972462595870,	-0.351431783576436730,	-0.351478593811697770,	
+-0.351525403168262250,	-0.351572211646013270,	-0.351619019244834190,	-0.351665825964607100,	-0.351712631805215450,	-0.351759436766542260,	-0.351806240848470900,	-0.351853044050883470,	
+-0.351899846373663450,	-0.351946647816694210,	-0.351993448379857960,	-0.352040248063038130,	-0.352087046866117640,	-0.352133844788979520,	-0.352180641831507210,	-0.352227437993582910,	
+-0.352274233275090000,	-0.352321027675911890,	-0.352367821195930800,	-0.352414613835030200,	-0.352461405593093020,	-0.352508196470002750,	-0.352554986465641600,	-0.352601775579892970,	
+-0.352648563812639930,	-0.352695351163765880,	-0.352742137633152990,	-0.352788923220684780,	-0.352835707926244300,	-0.352882491749714920,	-0.352929274690978960,	-0.352976056749919720,	
+-0.353022837926420810,	-0.353069618220364420,	-0.353116397631633940,	-0.353163176160112450,	-0.353209953805683490,	-0.353256730568229150,	-0.353303506447633030,	-0.353350281443778170,	
+-0.353397055556547990,	-0.353443828785824750,	-0.353490601131492000,	-0.353537372593432650,	-0.353584143171530360,	-0.353630912865667280,	-0.353677681675726880,	-0.353724449601592720,	
+-0.353771216643147040,	-0.353817982800273320,	-0.353864748072854620,	-0.353911512460774010,	-0.353958275963915100,	-0.354005038582160040,	-0.354051800315392410,	-0.354098561163495700,	
+-0.354145321126352160,	-0.354192080203845350,	-0.354238838395858290,	-0.354285595702274580,	-0.354332352122976420,	-0.354379107657847410,	-0.354425862306770640,	-0.354472616069629650,	
+-0.354519368946306700,	-0.354566120936685270,	-0.354612872040648560,	-0.354659622258080120,	-0.354706371588862200,	-0.354753120032878340,	-0.354799867590012090,	-0.354846614260145740,	
+-0.354893360043162910,	-0.354940104938946620,	-0.354986848947380140,	-0.355033592068346890,	-0.355080334301729250,	-0.355127075647410810,	-0.355173816105275040,	-0.355220555675204390,	
+-0.355267294357082260,	-0.355314032150791990,	-0.355360769056217000,	-0.355407505073239650,	-0.355454240201743600,	-0.355500974441611880,	-0.355547707792728210,	-0.355594440254974830,	
+-0.355641171828235350,	-0.355687902512392910,	-0.355734632307331160,	-0.355781361212932410,	-0.355828089229080270,	-0.355874816355658260,	-0.355921542592548880,	-0.355968267939635600,	
+-0.356014992396801620,	-0.356061715963930600,	-0.356108438640904910,	-0.356155160427608090,	-0.356201881323923390,	-0.356248601329734400,	-0.356295320444923460,	-0.356342038669374250,	
+-0.356388756002969930,	-0.356435472445594150,	-0.356482187997129220,	-0.356528902657458900,	-0.356575616426466680,	-0.356622329304035040,	-0.356669041290047560,	-0.356715752384387460,	
+-0.356762462586938000,	-0.356809171897582820,	-0.356855880316204240,	-0.356902587842686030,	-0.356949294476911700,	-0.356996000218763760,	-0.357042705068125800,	-0.357089409024881070,	
+-0.357136112088913270,	-0.357182814260104730,	-0.357229515538339200,	-0.357276215923499840,	-0.357322915415470340,	-0.357369614014133200,	-0.357416311719371990,	-0.357463008531069990,	
+-0.357509704449110900,	-0.357556399473377140,	-0.357603093603752360,	-0.357649786840120280,	-0.357696479182363300,	-0.357743170630365150,	-0.357789861184009070,	-0.357836550843178340,	
+-0.357883239607756640,	-0.357929927477626420,	-0.357976614452671370,	-0.358023300532775200,	-0.358069985717820390,	-0.358116670007690600,	-0.358163353402269120,	-0.358210035901439680,	
+-0.358256717505084750,	-0.358303398213088040,	-0.358350078025332810,	-0.358396756941702810,	-0.358443434962080480,	-0.358490112086349570,	-0.358536788314393400,	-0.358583463646095670,	
+-0.358630138081338870,	-0.358676811620006700,	-0.358723484261982920,	-0.358770156007150070,	-0.358816826855391740,	-0.358863496806591410,	-0.358910165860632730,	-0.358956834017398200,	
+-0.359003501276771610,	-0.359050167638636290,	-0.359096833102875930,	-0.359143497669373090,	-0.359190161338011520,	-0.359236824108674520,	-0.359283485981245880,	-0.359330146955608110,	
+-0.359376807031644980,	-0.359423466209240210,	-0.359470124488276420,	-0.359516781868637280,	-0.359563438350206210,	-0.359610093932866530,	-0.359656748616501990,	-0.359703402400995240,	
+-0.359750055286229940,	-0.359796707272089900,	-0.359843358358457710,	-0.359890008545217130,	-0.359936657832251540,	-0.359983306219444690,	-0.360029953706679170,	-0.360076600293838760,	
+-0.360123245980806860,	-0.360169890767467250,	-0.360216534653702460,	-0.360263177639396410,	-0.360309819724432380,	-0.360356460908694220,	-0.360403101192064480,	-0.360449740574426970,	
+-0.360496379055665560,	-0.360543016635662790,	-0.360589653314302430,	-0.360636289091468000,	-0.360682923967042820,	-0.360729557940910720,	-0.360776191012954330,	-0.360822823183057470,	
+-0.360869454451103970,	-0.360916084816976460,	-0.360962714280558650,	-0.361009342841734140,	-0.361055970500386620,	-0.361102597256398760,	-0.361149223109654470,	-0.361195848060037460,	
+-0.361242472107430490,	-0.361289095251717260,	-0.361335717492781370,	-0.361382338830506130,	-0.361428959264775470,	-0.361475578795472040,	-0.361522197422479600,	-0.361568815145682120,	
+-0.361615431964962210,	-0.361662047880203670,	-0.361708662891290060,	-0.361755276998105170,	-0.361801890200531660,	-0.361848502498453460,	-0.361895113891753990,	-0.361941724380317130,	
+-0.361988333964025580,	-0.362034942642763150,	-0.362081550416413430,	-0.362128157284860200,	-0.362174763247986140,	-0.362221368305675250,	-0.362267972457811280,	-0.362314575704277000,	
+-0.362361178044956270,	-0.362407779479732630,	-0.362454380008489510,	-0.362500979631110830,	-0.362547578347479300,	-0.362594176157478850,	-0.362640773060993350,	-0.362687369057905550,	
+-0.362733964148099270,	-0.362780558331458110,	-0.362827151607865940,	-0.362873743977205510,	-0.362920335439360700,	-0.362966925994215090,	-0.363013515641652520,	-0.363060104381555780,	
+-0.363106692213808810,	-0.363153279138295040,	-0.363199865154898550,	-0.363246450263501940,	-0.363293034463989200,	-0.363339617756244350,	-0.363386200140150000,	-0.363432781615590120,	
+-0.363479362182448310,	-0.363525941840608100,	-0.363572520589953490,	-0.363619098430367100,	-0.363665675361733000,	-0.363712251383935090,	-0.363758826496856150,	-0.363805400700380200,	
+-0.363851973994390680,	-0.363898546378771670,	-0.363945117853405890,	-0.363991688418177250,	-0.364038258072969860,	-0.364084826817666410,	-0.364131394652150890,	-0.364177961576306890,	
+-0.364224527590018000,	-0.364271092693168150,	-0.364317656885640220,	-0.364364220167318060,	-0.364410782538085840,	-0.364457343997826260,	-0.364503904546423290,	-0.364550464183760530,	
+-0.364597022909722070,	-0.364643580724190560,	-0.364690137627050210,	-0.364736693618184450,	-0.364783248697477360,	-0.364829802864811760,	-0.364876356120071690,	-0.364922908463140680,	
+-0.364969459893902840,	-0.365016010412240910,	-0.365062560018038940,	-0.365109108711181020,	-0.365155656491549910,	-0.365202203359029640,	-0.365248749313503870,	-0.365295294354856250,	
+-0.365341838482970750,	-0.365388381697730300,	-0.365434923999018890,	-0.365481465386720550,	-0.365528005860718150,	-0.365574545420895740,	-0.365621084067137000,	-0.365667621799325880,	
+-0.365714158617345350,	-0.365760694521079450,	-0.365807229510411780,	-0.365853763585226420,	-0.365900296745406250,	-0.365946828990835360,	-0.365993360321397400,	-0.366039890736976460,	
+-0.366086420237455360,	-0.366132948822718180,	-0.366179476492649090,	-0.366226003247130890,	-0.366272529086047680,	-0.366319054009283110,	-0.366365578016721370,	-0.366412101108245240,	
+-0.366458623283738900,	-0.366505144543085970,	-0.366551664886170580,	-0.366598184312875610,	-0.366644702823085200,	-0.366691220416683060,	-0.366737737093553230,	-0.366784252853578690,	
+-0.366830767696643470,	-0.366877281622631780,	-0.366923794631426440,	-0.366970306722911640,	-0.367016817896971050,	-0.367063328153488470,	-0.367109837492347930,	-0.367156345913432380,	
+-0.367202853416626010,	-0.367249360001812910,	-0.367295865668875950,	-0.367342370417699350,	-0.367388874248166850,	-0.367435377160162560,	-0.367481879153569450,	-0.367528380228271560,	
+-0.367574880384152760,	-0.367621379621097200,	-0.367667877938987750,	-0.367714375337708620,	-0.367760871817143560,	-0.367807367377176730,	-0.367853862017691050,	-0.367900355738570720,	
+-0.367946848539699890,	-0.367993340420961550,	-0.368039831382239890,	-0.368086321423418570,	-0.368132810544381520,	-0.368179298745012820,	-0.368225786025195510,	-0.368272272384813690,	
+-0.368318757823751620,	-0.368365242341892220,	-0.368411725939119750,	-0.368458208615317920,	-0.368504690370371040,	-0.368551171204161980,	-0.368597651116575000,	-0.368644130107493860,	
+-0.368690608176802880,	-0.368737085324384930,	-0.368783561550124260,	-0.368830036853904700,	-0.368876511235610440,	-0.368922984695124470,	-0.368969457232331100,	-0.369015928847114480,	
+-0.369062399539357600,	-0.369108869308944710,	-0.369155338155759680,	-0.369201806079686720,	-0.369248273080608810,	-0.369294739158410270,	-0.369341204312974790,	-0.369387668544186810,	
+-0.369434131851929190,	-0.369480594236086260,	-0.369527055696541820,	-0.369573516233180190,	-0.369619975845884300,	-0.369666434534538510,	-0.369712892299027040,	-0.369759349139232920,	
+-0.369805805055040460,	-0.369852260046333480,	-0.369898714112995800,	-0.369945167254911830,	-0.369991619471964460,	-0.370038070764038050,	-0.370084521131016920,	-0.370130970572784050,	
+-0.370177419089223750,	-0.370223866680219890,	-0.370270313345656740,	-0.370316759085417500,	-0.370363203899386260,	-0.370409647787447060,	-0.370456090749484160,	-0.370502532785380590,	
+-0.370548973895020730,	-0.370595414078288390,	-0.370641853335067940,	-0.370688291665242480,	-0.370734729068696260,	-0.370781165545313650,	-0.370827601094977700,	-0.370874035717572710,	
+-0.370920469412982680,	-0.370966902181091460,	-0.371013334021783440,	-0.371059764934941580,	-0.371106194920450380,	-0.371152623978194100,	-0.371199052108055820,	-0.371245479309919910,	
+-0.371291905583670310,	-0.371338330929191380,	-0.371384755346366220,	-0.371431178835079150,	-0.371477601395214130,	-0.371524023026655490,	-0.371570443729286440,	-0.371616863502991220,	
+-0.371663282347653890,	-0.371709700263158750,	-0.371756117249388950,	-0.371802533306228870,	-0.371848948433562810,	-0.371895362631274040,	-0.371941775899246820,	-0.371988188237365180,	
+-0.372034599645513440,	-0.372081010123574860,	-0.372127419671433700,	-0.372173828288974000,	-0.372220235976080170,	-0.372266642732635320,	-0.372313048558523870,	-0.372359453453629750,	
+-0.372405857417837490,	-0.372452260451030140,	-0.372498662553092110,	-0.372545063723907890,	-0.372591463963360570,	-0.372637863271334580,	-0.372684261647713900,	-0.372730659092382620,	
+-0.372777055605225120,	-0.372823451186124530,	-0.372869845834965300,	-0.372916239551631890,	-0.372962632336007460,	-0.373009024187976490,	-0.373055415107422910,	-0.373101805094231240,	
+-0.373148194148284600,	-0.373194582269467500,	-0.373240969457664000,	-0.373287355712758400,	-0.373333741034634070,	-0.373380125423175340,	-0.373426508878266280,	-0.373472891399791400,	
+-0.373519272987633880,	-0.373565653641678150,	-0.373612033361808700,	-0.373658412147908790,	-0.373704789999862840,	-0.373751166917554890,	-0.373797542900869030,	-0.373843917949689740,	
+-0.373890292063900230,	-0.373936665243385040,	-0.373983037488028520,	-0.374029408797714070,	-0.374075779172326040,	-0.374122148611748580,	-0.374168517115866130,	-0.374214884684562040,	
+-0.374261251317720700,	-0.374307617015226250,	-0.374353981776963110,	-0.374400345602814650,	-0.374446708492665370,	-0.374493070446399230,	-0.374539431463900900,	-0.374585791545053560,	
+-0.374632150689741710,	-0.374678508897849930,	-0.374724866169261430,	-0.374771222503860800,	-0.374817577901532140,	-0.374863932362159870,	-0.374910285885627410,	-0.374956638471819200,	
+-0.375002990120619440,	-0.375049340831912600,	-0.375095690605581960,	-0.375142039441512140,	-0.375188387339587200,	-0.375234734299691730,	-0.375281080321708980,	-0.375327425405523550,	
+-0.375373769551019980,	-0.375420112758081510,	-0.375466455026592820,	-0.375512796356437970,	-0.375559136747501130,	-0.375605476199666890,	-0.375651814712818500,	-0.375698152286840610,	
+-0.375744488921617710,	-0.375790824617033230,	-0.375837159372971630,	-0.375883493189317190,	-0.375929826065954380,	-0.375976158002766630,	-0.376022488999638470,	-0.376068819056454060,	
+-0.376115148173098050,	-0.376161476349453740,	-0.376207803585405790,	-0.376254129880838280,	-0.376300455235635880,	-0.376346779649681880,	-0.376393103122861010,	-0.376439425655057720,	
+-0.376485747246155520,	-0.376532067896038880,	-0.376578387604592110,	-0.376624706371699370,	-0.376671024197245300,	-0.376717341081113210,	-0.376763657023187810,	-0.376809972023353700,	
+-0.376856286081494190,	-0.376902599197493970,	-0.376948911371237260,	-0.376995222602608700,	-0.377041532891491670,	-0.377087842237770810,	-0.377134150641330770,	-0.377180458102054920,	
+-0.377226764619827900,	-0.377273070194533990,	-0.377319374826057430,	-0.377365678514282820,	-0.377411981259093590,	-0.377458283060374430,	-0.377504583918009950,	-0.377550883831883620,	
+-0.377597182801880090,	-0.377643480827883570,	-0.377689777909778810,	-0.377736074047449130,	-0.377782369240779290,	-0.377828663489653550,	-0.377874956793956550,	-0.377921249153571730,	
+-0.377967540568383830,	-0.378013831038277020,	-0.378060120563136090,	-0.378106409142844440,	-0.378152696777286750,	-0.378198983466347730,	-0.378245269209910860,	-0.378291554007860800,	
+-0.378337837860081850,	-0.378384120766458330,	-0.378430402726874890,	-0.378476683741215070,	-0.378522963809363510,	-0.378569242931204970,	-0.378615521106622890,	-0.378661798335502060,	
+-0.378708074617726650,	-0.378754349953181520,	-0.378800624341750100,	-0.378846897783317090,	-0.378893170277766870,	-0.378939441824984120,	-0.378985712424852350,	-0.379031982077256360,	
+-0.379078250782080350,	-0.379124518539209140,	-0.379170785348526220,	-0.379217051209916330,	-0.379263316123264250,	-0.379309580088453450,	-0.379355843105368680,	-0.379402105173894330,	
+-0.379448366293915100,	-0.379494626465314570,	-0.379540885687977450,	-0.379587143961788160,	-0.379633401286631370,	-0.379679657662390700,	-0.379725913088950870,	-0.379772167566196250,	
+-0.379818421094011650,	-0.379864673672280610,	-0.379910925300887830,	-0.379957175979718180,	-0.380003425708655140,	-0.380049674487583590,	-0.380095922316387780,	-0.380142169194952250,	
+-0.380188415123161650,	-0.380234660100899620,	-0.380280904128050930,	-0.380327147204500390,	-0.380373389330131590,	-0.380419630504829350,	-0.380465870728477980,	-0.380512110000962360,	
+-0.380558348322166060,	-0.380604585691973860,	-0.380650822110270240,	-0.380697057576939950,	-0.380743292091866580,	-0.380789525654935010,	-0.380835758266029610,	-0.380881989925035250,	
+-0.380928220631835510,	-0.380974450386315220,	-0.381020679188359190,	-0.381066907037851070,	-0.381113133934675660,	-0.381159359878717410,	-0.381205584869860780,	-0.381251808907990600,	
+-0.381298031992990500,	-0.381344254124745260,	-0.381390475303139850,	-0.381436695528057870,	-0.381482914799384070,	-0.381529133117003040,	-0.381575350480799600,	-0.381621566890657290,	
+-0.381667782346461150,	-0.381713996848095540,	-0.381760210395445330,	-0.381806422988394180,	-0.381852634626826950,	-0.381898845310628180,	-0.381945055039682680,	-0.381991263813874160,	
+-0.382037471633087430,	-0.382083678497207480,	-0.382129884406117950,	-0.382176089359703650,	-0.382222293357849130,	-0.382268496400439310,	-0.382314698487357830,	-0.382360899618489570,	
+-0.382407099793719120,	-0.382453299012931290,	-0.382499497276009850,	-0.382545694582839600,	-0.382591890933305150,	-0.382638086327291400,	-0.382684280764682030,	-0.382730474245361940,	
+-0.382776666769216070,	-0.382822858336128110,	-0.382869048945983000,	-0.382915238598665280,	-0.382961427294059460,	-0.383007615032050500,	-0.383053801812522080,	-0.383099987635359180,	
+-0.383146172500446690,	-0.383192356407668360,	-0.383238539356909160,	-0.383284721348053580,	-0.383330902380986660,	-0.383377082455592040,	-0.383423261571754710,	-0.383469439729359210,	
+-0.383515616928290560,	-0.383561793168432420,	-0.383607968449669820,	-0.383654142771887310,	-0.383700316134969850,	-0.383746488538801170,	-0.383792659983266280,	-0.383838830468250130,	
+-0.383884999993636510,	-0.383931168559310420,	-0.383977336165156390,	-0.384023502811058960,	-0.384069668496903270,	-0.384115833222572980,	-0.384161996987953060,	-0.384208159792928610,	
+-0.384254321637383320,	-0.384300482521202250,	-0.384346642444269910,	-0.384392801406471470,	-0.384438959407690570,	-0.384485116447812250,	-0.384531272526721150,	-0.384577427644302310,	
+-0.384623581800439480,	-0.384669734995017660,	-0.384715887227921550,	-0.384762038499036120,	-0.384808188808245130,	-0.384854338155433740,	-0.384900486540486860,	-0.384946633963288430,	
+-0.384992780423723370,	-0.385038925921676320,	-0.385085070457032440,	-0.385131214029675430,	-0.385177356639490380,	-0.385223498286361930,	-0.385269638970175190,	-0.385315778690813900,	
+-0.385361917448163170,	-0.385408055242107640,	-0.385454192072532400,	-0.385500327939321320,	-0.385546462842359330,	-0.385592596781531630,	-0.385638729756722030,	-0.385684861767815630,	
+-0.385730992814697030,	-0.385777122897250970,	-0.385823252015362550,	-0.385869380168915530,	-0.385915507357795060,	-0.385961633581886290,	-0.386007758841072970,	-0.386053883135240310,	
+-0.386100006464272890,	-0.386146128828055880,	-0.386192250226473130,	-0.386238370659409750,	-0.386284490126750480,	-0.386330608628380370,	-0.386376726164183340,	-0.386422842734044480,	
+-0.386468958337848500,	-0.386515072975480540,	-0.386561186646824540,	-0.386607299351765520,	-0.386653411090188690,	-0.386699521861977870,	-0.386745631667018310,	-0.386791740505194660,	
+-0.386837848376391620,	-0.386883955280494410,	-0.386930061217386880,	-0.386976166186954180,	-0.387022270189081530,	-0.387068373223652730,	-0.387114475290553040,	-0.387160576389667170,	
+-0.387206676520880260,	-0.387252775684076230,	-0.387298873879140250,	-0.387344971105957110,	-0.387391067364411980,	-0.387437162654388710,	-0.387483256975772570,	-0.387529350328448260,	
+-0.387575442712301040,	-0.387621534127214780,	-0.387667624573074630,	-0.387713714049765900,	-0.387759802557172460,	-0.387805890095179460,	-0.387851976663671830,	-0.387898062262534590,	
+-0.387944146891651800,	-0.387990230550908640,	-0.388036313240189950,	-0.388082394959380850,	-0.388128475708365340,	-0.388174555487028670,	-0.388220634295255610,	-0.388266712132931350,	
+-0.388312788999939930,	-0.388358864896166500,	-0.388404939821496320,	-0.388451013775813430,	-0.388497086759002960,	-0.388543158770949800,	-0.388589229811538710,	-0.388635299880654980,	
+-0.388681368978182620,	-0.388727437104006810,	-0.388773504258012770,	-0.388819570440084640,	-0.388865635650107510,	-0.388911699887966370,	-0.388957763153546350,	-0.389003825446731510,	
+-0.389049886767407090,	-0.389095947115457970,	-0.389142006490769410,	-0.389188064893225380,	-0.389234122322711210,	-0.389280178779111750,	-0.389326234262312280,	-0.389372288772196760,	
+-0.389418342308650520,	-0.389464394871558870,	-0.389510446460805790,	-0.389556497076276600,	-0.389602546717856160,	-0.389648595385429400,	-0.389694643078881520,	-0.389740689798096620,	
+-0.389786735542960010,	-0.389832780313357000,	-0.389878824109171570,	-0.389924866930289100,	-0.389970908776594460,	-0.390016949647973010,	-0.390062989544308740,	-0.390109028465486950,	
+-0.390155066411393080,	-0.390201103381911050,	-0.390247139376926340,	-0.390293174396323720,	-0.390339208439988210,	-0.390385241507805070,	-0.390431273599658460,	-0.390477304715433570,	
+-0.390523334855015890,	-0.390569364018289460,	-0.390615392205139630,	-0.390661419415451290,	-0.390707445649109860,	-0.390753470905999380,	-0.390799495186005210,	-0.390845518489012280,	
+-0.390891540814906010,	-0.390937562163570450,	-0.390983582534891020,	-0.391029601928752580,	-0.391075620345040620,	-0.391121637783639120,	-0.391167654244433560,	-0.391213669727309310,	
+-0.391259684232150410,	-0.391305697758842330,	-0.391351710307270010,	-0.391397721877318420,	-0.391443732468872930,	-0.391489742081817690,	-0.391535750716038080,	-0.391581758371419510,	
+-0.391627765047846190,	-0.391673770745203380,	-0.391719775463376220,	-0.391765779202249980,	-0.391811781961708900,	-0.391857783741638320,	-0.391903784541923320,	-0.391949784362449320,	
+-0.391995783203100360,	-0.392041781063761970,	-0.392087777944319150,	-0.392133773844657310,	-0.392179768764660600,	-0.392225762704214440,	-0.392271755663204320,	-0.392317747641514390,	
+-0.392363738639030070,	-0.392409728655636450,	-0.392455717691218450,	-0.392501705745661620,	-0.392547692818850100,	-0.392593678910669320,	-0.392639664021004810,	-0.392685648149740660,	
+-0.392731631296762470,	-0.392777613461955170,	-0.392823594645204220,	-0.392869574846393840,	-0.392915554065409620,	-0.392961532302136870,	-0.393007509556459860,	-0.393053485828264100,	
+-0.393099461117434660,	-0.393145435423856550,	-0.393191408747415210,	-0.393237381087995000,	-0.393283352445481290,	-0.393329322819759630,	-0.393375292210714270,	-0.393421260618230680,	
+-0.393467228042193920,	-0.393513194482489500,	-0.393559159939001700,	-0.393605124411615990,	-0.393651087900217470,	-0.393697050404691610,	-0.393743011924922730,	-0.393788972460796360,	
+-0.393834932012197490,	-0.393880890579011770,	-0.393926848161123390,	-0.393972804758417890,	-0.394018760370780760,	-0.394064714998096370,	-0.394110668640250130,	-0.394156621297127250,	
+-0.394202572968612830,	-0.394248523654592400,	-0.394294473354950210,	-0.394340422069571870,	-0.394386369798342850,	-0.394432316541147520,	-0.394478262297871420,	-0.394524207068399630,	
+-0.394570150852617760,	-0.394616093650410060,	-0.394662035461662180,	-0.394707976286259200,	-0.394753916124086670,	-0.394799854975028900,	-0.394845792838971590,	-0.394891729715799720,	
+-0.394937665605398950,	-0.394983600507653630,	-0.395029534422449310,	-0.395075467349671530,	-0.395121399289204700,	-0.395167330240934370,	-0.395213260204745680,	-0.395259189180524270,	
+-0.395305117168154470,	-0.395351044167521930,	-0.395396970178511720,	-0.395442895201009500,	-0.395488819234899700,	-0.395534742280067800,	-0.395580664336399050,	-0.395626585403779040,	
+-0.395672505482092150,	-0.395718424571224030,	-0.395764342671060200,	-0.395810259781485150,	-0.395856175902384420,	-0.395902091033643270,	-0.395948005175146890,	-0.395993918326780940,	
+-0.396039830488429720,	-0.396085741659979010,	-0.396131651841314270,	-0.396177561032320050,	-0.396223469232881880,	-0.396269376442885070,	-0.396315282662215220,	-0.396361187890756750,	
+-0.396407092128395310,	-0.396452995375016160,	-0.396498897630504940,	-0.396544798894746030,	-0.396590699167625130,	-0.396636598449027490,	-0.396682496738838760,	-0.396728394036943380,	
+-0.396774290343227030,	-0.396820185657575320,	-0.396866079979872780,	-0.396911973310005000,	-0.396957865647857340,	-0.397003756993314970,	-0.397049647346263630,	-0.397095536706587760,	
+-0.397141425074173100,	-0.397187312448905210,	-0.397233198830668650,	-0.397279084219349150,	-0.397324968614831910,	-0.397370852017002620,	-0.397416734425745820,	-0.397462615840947160,	
+-0.397508496262492020,	-0.397554375690265970,	-0.397600254124153620,	-0.397646131564040610,	-0.397692008009812300,	-0.397737883461354360,	-0.397783757918551310,	-0.397829631381288850,	
+-0.397875503849452750,	-0.397921375322927480,	-0.397967245801598760,	-0.398013115285351940,	-0.398058983774072670,	-0.398104851267645610,	-0.398150717765956400,	-0.398196583268890400,	
+-0.398242447776333330,	-0.398288311288169770,	-0.398334173804285370,	-0.398380035324565620,	-0.398425895848896150,	-0.398471755377161510,	-0.398517613909247500,	-0.398563471445039840,	
+-0.398609327984423110,	-0.398655183527283070,	-0.398701038073505100,	-0.398746891622974500,	-0.398792744175577090,	-0.398838595731197400,	-0.398884446289721200,	-0.398930295851034340,	
+-0.398976144415021330,	-0.399021991981567900,	-0.399067838550559550,	-0.399113684121881970,	-0.399159528695419820,	-0.399205372271058790,	-0.399251214848684370,	-0.399297056428182310,	
+-0.399342897009437200,	-0.399388736592334870,	-0.399434575176760680,	-0.399480412762600430,	-0.399526249349738790,	-0.399572084938061510,	-0.399617919527454400,	-0.399663753117802110,	
+-0.399709585708990460,	-0.399755417300904800,	-0.399801247893430630,	-0.399847077486453760,	-0.399892906079858720,	-0.399938733673531500,	-0.399984560267357790,	-0.400030385861222300,	
+-0.400076210455010850,	-0.400122034048608850,	-0.400167856641902190,	-0.400213678234775490,	-0.400259498827114590,	-0.400305318418804900,	-0.400351137009732350,	-0.400396954599781580,	
+-0.400442771188838420,	-0.400488586776788280,	-0.400534401363517150,	-0.400580214948909550,	-0.400626027532851430,	-0.400671839115228630,	-0.400717649695925880,	-0.400763459274828980,	
+-0.400809267851823410,	-0.400855075426795100,	-0.400900881999628700,	-0.400946687570210070,	-0.400992492138424750,	-0.401038295704158610,	-0.401084098267296300,	-0.401129899827723730,	
+-0.401175700385326460,	-0.401221499939990290,	-0.401267298491600030,	-0.401313096040041450,	-0.401358892585200580,	-0.401404688126962060,	-0.401450482665211830,	-0.401496276199835410,	
+-0.401542068730718240,	-0.401587860257746340,	-0.401633650780804430,	-0.401679440299778310,	-0.401725228814554080,	-0.401771016325016330,	-0.401816802831051030,	-0.401862588332543740,	
+-0.401908372829380360,	-0.401954156321445650,	-0.401999938808625560,	-0.402045720290805600,	-0.402091500767871760,	-0.402137280239708790,	-0.402183058706202580,	-0.402228836167238760,	
+-0.402274612622703250,	-0.402320388072480770,	-0.402366162516457350,	-0.402411935954518910,	-0.402457708386550210,	-0.402503479812437280,	-0.402549250232065610,	-0.402595019645320850,	
+-0.402640788052088970,	-0.402686555452254680,	-0.402732321845703960,	-0.402778087232322890,	-0.402823851611996190,	-0.402869614984609880,	-0.402915377350049510,	-0.402961138708201110,	
+-0.403006899058949430,	-0.403052658402180520,	-0.403098416737780410,	-0.403144174065633800,	-0.403189930385626780,	-0.403235685697644900,	-0.403281440001573840,	-0.403327193297299600,	
+-0.403372945584706930,	-0.403418696863681920,	-0.403464447134110560,	-0.403510196395877710,	-0.403555944648869350,	-0.403601691892971130,	-0.403647438128069080,	-0.403693183354048020,	
+-0.403738927570793990,	-0.403784670778192690,	-0.403830412976130090,	-0.403876154164491070,	-0.403921894343161610,	-0.403967633512027470,	-0.404013371670974620,	-0.404059108819887990,	
+-0.404104844958653510,	-0.404150580087157370,	-0.404196314205284400,	-0.404242047312920570,	-0.404287779409951700,	-0.404333510496263320,	-0.404379240571741630,	-0.404424969636271390,	
+-0.404470697689738700,	-0.404516424732029760,	-0.404562150763029260,	-0.404607875782623420,	-0.404653599790697930,	-0.404699322787138770,	-0.404745044771830930,	-0.404790765744660500,	
+-0.404836485705513170,	-0.404882204654274990,	-0.404927922590830880,	-0.404973639515066990,	-0.405019355426869010,	-0.405065070326123040,	-0.405110784212713960,	-0.405156497086527960,	
+-0.405202208947451130,	-0.405247919795368340,	-0.405293629630165740,	-0.405339338451729090,	-0.405385046259944090,	-0.405430753054696890,	-0.405476458835872410,	-0.405522163603356740,	
+-0.405567867357036150,	-0.405613570096795380,	-0.405659271822520760,	-0.405704972534097930,	-0.405750672231413090,	-0.405796370914351170,	-0.405842068582798310,	-0.405887765236640660,	
+-0.405933460875763210,	-0.405979155500052090,	-0.406024849109393130,	-0.406070541703672020,	-0.406116233282774960,	-0.406161923846586890,	-0.406207613394994060,	-0.406253301927882560,	
+-0.406298989445137430,	-0.406344675946644810,	-0.406390361432290510,	-0.406436045901960700,	-0.406481729355540390,	-0.406527411792915740,	-0.406573093213972560,	-0.406618773618597050,	
+-0.406664453006674200,	-0.406710131378090260,	-0.406755808732730930,	-0.406801485070482530,	-0.406847160391229980,	-0.406892834694859540,	-0.406938507981257410,	-0.406984180250308640,	
+-0.407029851501899350,	-0.407075521735915490,	-0.407121190952242810,	-0.407166859150767560,	-0.407212526331374780,	-0.407258192493950620,	-0.407303857638381450,	-0.407349521764552190,	
+-0.407395184872349160,	-0.407440846961658170,	-0.407486508032365410,	-0.407532168084356050,	-0.407577827117516220,	-0.407623485131731800,	-0.407669142126889150,	-0.407714798102873200,	
+-0.407760453059570260,	-0.407806106996866150,	-0.407851759914647230,	-0.407897411812798480,	-0.407943062691206170,	-0.407988712549756660,	-0.408034361388334930,	-0.408080009206827350,	
+-0.408125656005119690,	-0.408171301783098290,	-0.408216946540648270,	-0.408262590277655880,	-0.408308232994006980,	-0.408353874689587950,	-0.408399515364283820,	-0.408445155017980900,	
+-0.408490793650565060,	-0.408536431261922680,	-0.408582067851938790,	-0.408627703420499750,	-0.408673337967491830,	-0.408718971492800180,	-0.408764603996311090,	-0.408810235477910510,	
+-0.408855865937484300,	-0.408901495374918880,	-0.408947123790099290,	-0.408992751182911900,	-0.409038377553243020,	-0.409084002900977790,	-0.409129627226002600,	-0.409175250528203300,	
+-0.409220872807466270,	-0.409266494063676710,	-0.409312114296720870,	-0.409357733506484740,	-0.409403351692854690,	-0.409448968855715860,	-0.409494584994954610,	-0.409540200110456890,	
+-0.409585814202109100,	-0.409631427269796340,	-0.409677039313405040,	-0.409722650332821510,	-0.409768260327930960,	-0.409813869298619790,	-0.409859477244773900,	-0.409905084166279350,	
+-0.409950690063022480,	-0.409996294934888480,	-0.410041898781763780,	-0.410087501603534690,	-0.410133103400086460,	-0.410178704171305470,	-0.410224303917077760,	-0.410269902637289630,	
+-0.410315500331826340,	-0.410361097000574330,	-0.410406692643419610,	-0.410452287260248520,	-0.410497880850946300,	-0.410543473415399370,	-0.410589064953493790,	-0.410634655465115960,	
+-0.410680244950151040,	-0.410725833408485560,	-0.410771420840005840,	-0.410817007244597240,	-0.410862592622146080,	-0.410908176972538450,	-0.410953760295660770,	-0.410999342591398250,	
+-0.411044923859637420,	-0.411090504100264260,	-0.411136083313165260,	-0.411181661498225660,	-0.411227238655331890,	-0.411272814784370060,	-0.411318389885226510,	-0.411363963957786630,	
+-0.411409537001936890,	-0.411455109017563660,	-0.411500680004552260,	-0.411546249962789160,	-0.411591818892160400,	-0.411637386792552130,	-0.411682953663850830,	-0.411728519505941690,	
+-0.411774084318711260,	-0.411819648102046020,	-0.411865210855831280,	-0.411910772579953510,	-0.411956333274298760,	-0.412001892938753670,	-0.412047451573203380,	-0.412093009177534440,	
+-0.412138565751633050,	-0.412184121295385620,	-0.412229675808677480,	-0.412275229291395100,	-0.412320781743424680,	-0.412366333164652770,	-0.412411883554964550,	-0.412457432914246640,	
+-0.412502981242385550,	-0.412548528539266660,	-0.412594074804776390,	-0.412639620038800950,	-0.412685164241226420,	-0.412730707411939460,	-0.412776249550825260,	-0.412821790657770470,	
+-0.412867330732661570,	-0.412912869775383990,	-0.412958407785824210,	-0.413003944763868420,	-0.413049480709403170,	-0.413095015622313820,	-0.413140549502486910,	-0.413186082349808640,	
+-0.413231614164165590,	-0.413277144945443040,	-0.413322674693527680,	-0.413368203408305600,	-0.413413731089663450,	-0.413459257737486600,	-0.413504783351661520,	-0.413550307932074920,	
+-0.413595831478612170,	-0.413641353991159810,	-0.413686875469604090,	-0.413732395913831600,	-0.413777915323727650,	-0.413823433699178960,	-0.413868951040071710,	-0.413914467346292450,	
+-0.413959982617726600,	-0.414005496854260800,	-0.414051010055781320,	-0.414096522222174630,	-0.414142033353326330,	-0.414187543449122840,	-0.414233052509450970,	-0.414278560534196040,	
+-0.414324067523244740,	-0.414369573476483230,	-0.414415078393797760,	-0.414460582275075100,	-0.414506085120200480,	-0.414551586929060690,	-0.414597087701542360,	-0.414642587437530850,	
+-0.414688086136912880,	-0.414733583799574760,	-0.414779080425403010,	-0.414824576014283190,	-0.414870070566101920,	-0.414915564080745480,	-0.414961056558100560,	-0.415006547998052530,	
+-0.415052038400488210,	-0.415097527765293740,	-0.415143016092355880,	-0.415188503381560050,	-0.415233989632792950,	-0.415279474845941350,	-0.415324959020890620,	-0.415370442157527440,	
+-0.415415924255738260,	-0.415461405315409200,	-0.415506885336427050,	-0.415552364318677260,	-0.415597842262046550,	-0.415643319166421670,	-0.415688795031688100,	-0.415734269857732490,	
+-0.415779743644441260,	-0.415825216391701060,	-0.415870688099397420,	-0.415916158767417050,	-0.415961628395646650,	-0.416007096983971870,	-0.416052564532279230,	-0.416098031040455290,	
+-0.416143496508386220,	-0.416188960935958810,	-0.416234424323058570,	-0.416279886669572330,	-0.416325347975386730,	-0.416370808240387360,	-0.416416267464460980,	-0.416461725647493950,	
+-0.416507182789372990,	-0.416552638889983670,	-0.416598093949212770,	-0.416643547966946640,	-0.416689000943071990,	-0.416734452877474460,	-0.416779903770040820,	-0.416825353620657420,	
+-0.416870802429211040,	-0.416916250195587200,	-0.416961696919672780,	-0.417007142601354520,	-0.417052587240518020,	-0.417098030837049990,	-0.417143473390836960,	-0.417188914901765180,	
+-0.417234355369721530,	-0.417279794794591650,	-0.417325233176262190,	-0.417370670514620120,	-0.417416106809550940,	-0.417461542060941490,	-0.417506976268678220,	-0.417552409432647880,	
+-0.417597841552736100,	-0.417643272628829780,	-0.417688702660815200,	-0.417734131648579310,	-0.417779559592007690,	-0.417824986490987150,	-0.417870412345404170,	-0.417915837155145520,	
+-0.417961260920096890,	-0.418006683640145150,	-0.418052105315177060,	-0.418097525945078320,	-0.418142945529735800,	-0.418188364069035870,	-0.418233781562865000,	-0.418279198011110130,	
+-0.418324613413656840,	-0.418370027770392060,	-0.418415441081202600,	-0.418460853345974100,	-0.418506264564593500,	-0.418551674736947210,	-0.418597083862922160,	-0.418642491942403940,	
+-0.418687898975279580,	-0.418733304961435790,	-0.418778709900758380,	-0.418824113793134220,	-0.418869516638449730,	-0.418914918436591450,	-0.418960319187446310,	-0.419005718890899990,	
+-0.419051117546839320,	-0.419096515155151280,	-0.419141911715721520,	-0.419187307228437000,	-0.419232701693184220,	-0.419278095109850090,	-0.419323487478320320,	-0.419368878798481840,	
+-0.419414269070221170,	-0.419459658293425190,	-0.419505046467979700,	-0.419550433593771530,	-0.419595819670687380,	-0.419641204698613990,	-0.419686588677437240,	-0.419731971607044010,	
+-0.419777353487321260,	-0.419822734318154700,	-0.419868114099431310,	-0.419913492831037630,	-0.419958870512860240,	-0.420004247144786070,	-0.420049622726700820,	-0.420094997258491590,	
+-0.420140370740045230,	-0.420185743171247570,	-0.420231114551985530,	-0.420276484882145750,	-0.420321854161615100,	-0.420367222390279460,	-0.420412589568025740,	-0.420457955694740540,	
+-0.420503320770310830,	-0.420548684794622480,	-0.420594047767562370,	-0.420639409689017140,	-0.420684770558873820,	-0.420730130377018170,	-0.420775489143337180,	-0.420820846857717870,	
+-0.420866203520046000,	-0.420911559130208670,	-0.420956913688092460,	-0.421002267193584300,	-0.421047619646570110,	-0.421092971046936880,	-0.421138321394571250,	-0.421183670689360190,	
+-0.421229018931189520,	-0.421274366119946340,	-0.421319712255517230,	-0.421365057337789230,	-0.421410401366648200,	-0.421455744341981190,	-0.421501086263675160,	-0.421546427131616050,	
+-0.421591766945690890,	-0.421637105705786270,	-0.421682443411788950,	-0.421727780063585860,	-0.421773115661062960,	-0.421818450204107240,	-0.421863783692605850,	-0.421909116126444550,	
+-0.421954447505510480,	-0.421999777829690280,	-0.422045107098871000,	-0.422090435312938610,	-0.422135762471780080,	-0.422181088575282190,	-0.422226413623331960,	-0.422271737615815320,	
+-0.422317060552619310,	-0.422362382433630670,	-0.422407703258736440,	-0.422453023027822620,	-0.422498341740776160,	-0.422543659397484280,	-0.422588975997832850,	-0.422634291541709010,	
+-0.422679606028999400,	-0.422724919459590790,	-0.422770231833370260,	-0.422815543150223790,	-0.422860853410038430,	-0.422906162612701360,	-0.422951470758098470,	-0.422996777846116890,	
+-0.423042083876643380,	-0.423087388849565090,	-0.423132692764767890,	-0.423177995622138980,	-0.423223297421565060,	-0.423268598162933330,	-0.423313897846129660,	-0.423359196471041310,	
+-0.423404494037554920,	-0.423449790545557700,	-0.423495085994935570,	-0.423540380385575790,	-0.423585673717365440,	-0.423630965990190460,	-0.423676257203938140,	-0.423721547358495100,	
+-0.423766836453748630,	-0.423812124489584720,	-0.423857411465890400,	-0.423902697382552600,	-0.423947982239458510,	-0.423993266036494010,	-0.424038548773546300,	-0.424083830450502300,	
+-0.424129111067249100,	-0.424174390623672680,	-0.424219669119660300,	-0.424264946555099160,	-0.424310222929875300,	-0.424355498243875810,	-0.424400772496987600,	-0.424446045689097500,	
+-0.424491317820092640,	-0.424536588889859070,	-0.424581858898284090,	-0.424627127845254800,	-0.424672395730657350,	-0.424717662554378870,	-0.424762928316306240,	-0.424808193016326660,	
+-0.424853456654326220,	-0.424898719230192180,	-0.424943980743811290,	-0.424989241195070870,	-0.425034500583856940,	-0.425079758910056780,	-0.425125016173557190,	-0.425170272374245480,	
+-0.425215527512007700,	-0.425260781586731080,	-0.425306034598302910,	-0.425351286546609250,	-0.425396537431537380,	-0.425441787252974160,	-0.425487036010806510,	-0.425532283704921630,	
+-0.425577530335205680,	-0.425622775901545850,	-0.425668020403829510,	-0.425713263841942690,	-0.425758506215772770,	-0.425803747525206560,	-0.425848987770131360,	-0.425894226950433270,	
+-0.425939465065999670,	-0.425984702116717350,	-0.426029938102473750,	-0.426075173023154840,	-0.426120406878648050,	-0.426165639668840190,	-0.426210871393618680,	-0.426256102052869570,	
+-0.426301331646480150,	-0.426346560174337860,	-0.426391787636328790,	-0.426437014032340190,	-0.426482239362259100,	-0.426527463625972820,	-0.426572686823367460,	-0.426617908954330380,	
+-0.426663130018748560,	-0.426708350016509250,	-0.426753568947498720,	-0.426798786811604270,	-0.426844003608712830,	-0.426889219338711770,	-0.426934434001487280,	-0.426979647596926690,	
+-0.427024860124917420,	-0.427070071585345550,	-0.427115281978098500,	-0.427160491303063270,	-0.427205699560126830,	-0.427250906749176540,	-0.427296112870098550,	-0.427341317922780290,	
+-0.427386521907109130,	-0.427431724822971320,	-0.427476926670254110,	-0.427522127448844660,	-0.427567327158630270,	-0.427612525799497160,	-0.427657723371332680,	-0.427702919874023980,	
+-0.427748115307458320,	-0.427793309671521960,	-0.427838502966102370,	-0.427883695191086540,	-0.427928886346361840,	-0.427974076431814510,	-0.428019265447331990,	-0.428064453392801750,	
+-0.428109640268109940,	-0.428154826073144030,	-0.428200010807791080,	-0.428245194471938100,	-0.428290377065472520,	-0.428335558588280600,	-0.428380739040249760,	-0.428425918421267480,	
+-0.428471096731220020,	-0.428516273969994810,	-0.428561450137478930,	-0.428606625233559860,	-0.428651799258123740,	-0.428696972211058180,	-0.428742144092250200,	-0.428787314901587220,	
+-0.428832484638955570,	-0.428877653304242710,	-0.428922820897335690,	-0.428967987418122090,	-0.429013152866488060,	-0.429058317242321130,	-0.429103480545508840,	-0.429148642775937450,	
+-0.429193803933494490,	-0.429238964018066940,	-0.429284123029542440,	-0.429329280967807200,	-0.429374437832748810,	-0.429419593624254250,	-0.429464748342211160,	-0.429509901986505790,	
+-0.429555054557025640,	-0.429600206053657900,	-0.429645356476289990,	-0.429690505824808330,	-0.429735654099100420,	-0.429780801299053720,	-0.429825947424554660,	-0.429871092475490710,	
+-0.429916236451749030,	-0.429961379353216770,	-0.430006521179781440,	-0.430051661931329430,	-0.430096801607748270,	-0.430141940208925490,	-0.430187077734747460,	-0.430232214185101770,	
+-0.430277349559875510,	-0.430322483858956270,	-0.430367617082230420,	-0.430412749229585560,	-0.430457880300908810,	-0.430503010296087730,	-0.430548139215008780,	-0.430593267057559460,	
+-0.430638393823626950,	-0.430683519513098860,	-0.430728644125861590,	-0.430773767661802700,	-0.430818890120809820,	-0.430864011502769260,	-0.430909131807568730,	-0.430954251035095330,	
+-0.430999369185236290,	-0.431044486257879280,	-0.431089602252910600,	-0.431134717170217950,	-0.431179831009688930,	-0.431224943771209900,	-0.431270055454668510,	-0.431315166059951960,	
+-0.431360275586947890,	-0.431405384035542790,	-0.431450491405624190,	-0.431495597697079790,	-0.431540702909795960,	-0.431585807043660400,	-0.431630910098560310,	-0.431676012074382940,	
+-0.431721112971015950,	-0.431766212788345760,	-0.431811311526260070,	-0.431856409184646520,	-0.431901505763391480,	-0.431946601262382710,	-0.431991695681507410,	-0.432036789020653340,	
+-0.432081881279706810,	-0.432126972458555640,	-0.432172062557087010,	-0.432217151575188640,	-0.432262239512747000,	-0.432307326369649750,	-0.432352412145784180,	-0.432397496841037950,	
+-0.432442580455297650,	-0.432487662988450820,	-0.432532744440385310,	-0.432577824810987500,	-0.432622904100145090,	-0.432667982307745500,	-0.432713059433675880,	-0.432758135477824050,	
+-0.432803210440076470,	-0.432848284320320850,	-0.432893357118444950,	-0.432938428834335250,	-0.432983499467879510,	-0.433028569018964970,	-0.433073637487479400,	-0.433118704873309390,	
+-0.433163771176342580,	-0.433208836396466350,	-0.433253900533568440,	-0.433298963587535340,	-0.433344025558254850,	-0.433389086445614360,	-0.433434146249501500,	-0.433479204969802860,	
+-0.433524262606406200,	-0.433569319159199330,	-0.433614374628068730,	-0.433659429012902220,	-0.433704482313587100,	-0.433749534530011190,	-0.433794585662061030,	-0.433839635709624470,	
+-0.433884684672588780,	-0.433929732550841770,	-0.433974779344270030,	-0.434019825052761320,	-0.434064869676203060,	-0.434109913214483060,	-0.434154955667487850,	-0.434199997035105260,	
+-0.434245037317223080,	-0.434290076513727920,	-0.434335114624507520,	-0.434380151649449380,	-0.434425187588440840,	-0.434470222441369740,	-0.434515256208122700,	-0.434560288888587500,	
+-0.434605320482651940,	-0.434650350990202720,	-0.434695380411127650,	-0.434740408745314060,	-0.434785435992649900,	-0.434830462153021740,	-0.434875487226317410,	-0.434920511212424420,	
+-0.434965534111230460,	-0.435010555922622330,	-0.435055576646487810,	-0.435100596282714300,	-0.435145614831189740,	-0.435190632291800720,	-0.435235648664435150,	-0.435280663948980850,	
+-0.435325678145324470,	-0.435370691253353930,	-0.435415703272956640,	-0.435460714204020050,	-0.435505724046432120,	-0.435550732800079500,	-0.435595740464850000,	-0.435640747040631600,	
+-0.435685752527310900,	-0.435730756924775810,	-0.435775760232913870,	-0.435820762451612890,	-0.435865763580759620,	-0.435910763620241950,	-0.435955762569947340,	-0.436000760429763770,	
+-0.436045757199577830,	-0.436090752879277570,	-0.436135747468750390,	-0.436180740967884230,	-0.436225733376565840,	-0.436270724694683140,	-0.436315714922124010,	-0.436360704058775140,	
+-0.436405692104524570,	-0.436450679059259770,	-0.436495664922868620,	-0.436540649695237980,	-0.436585633376255670,	-0.436630615965809320,	-0.436675597463786760,	-0.436720577870074840,	
+-0.436765557184561500,	-0.436810535407134220,	-0.436855512537681070,	-0.436900488576088710,	-0.436945463522245110,	-0.436990437376038270,	-0.437035410137354920,	-0.437080381806083000,	
+-0.437125352382110200,	-0.437170321865324010,	-0.437215290255612400,	-0.437260257552862130,	-0.437305223756961290,	-0.437350188867797750,	-0.437395152885258320,	-0.437440115809231030,	
+-0.437485077639603430,	-0.437530038376263590,	-0.437574998019098220,	-0.437619956567995350,	-0.437664914022842580,	-0.437709870383527930,	-0.437754825649938230,	-0.437799779821961440,	
+-0.437844732899485220,	-0.437889684882397550,	-0.437934635770585280,	-0.437979585563936400,	-0.438024534262339000,	-0.438069481865679840,	-0.438114428373846950,	-0.438159373786728030,	
+-0.438204318104210680,	-0.438249261326182860,	-0.438294203452531560,	-0.438339144483144760,	-0.438384084417910440,	-0.438429023256715570,	-0.438473960999448080,	-0.438518897645995720,	
+-0.438563833196246530,	-0.438608767650087330,	-0.438653701007406250,	-0.438698633268090890,	-0.438743564432029330,	-0.438788494499108510,	-0.438833423469216390,	-0.438878351342240740,	
+-0.438923278118069640,	-0.438968203796589910,	-0.439013128377689690,	-0.439058051861257010,	-0.439102974247178870,	-0.439147895535343220,	-0.439192815725637900,	-0.439237734817950860,	
+-0.439282652812169160,	-0.439327569708180820,	-0.439372485505873490,	-0.439417400205135420,	-0.439462313805853430,	-0.439507226307915610,	-0.439552137711209770,	-0.439597048015623990,	
+-0.439641957221045150,	-0.439686865327361450,	-0.439731772334460980,	-0.439776678242230710,	-0.439821583050558680,	-0.439866486759332760,	-0.439911389368440600,	-0.439956290877770330,	
+-0.440001191287208990,	-0.440046090596644620,	-0.440090988805965480,	-0.440135885915058420,	-0.440180781923811660,	-0.440225676832112940,	-0.440270570639850420,	-0.440315463346911130,	
+-0.440360354953183100,	-0.440405245458554250,	-0.440450134862912620,	-0.440495023166145310,	-0.440539910368140440,	-0.440584796468785790,	-0.440629681467969550,	-0.440674565365578700,	
+-0.440719448161501380,	-0.440764329855625910,	-0.440809210447839220,	-0.440854089938029440,	-0.440898968326084490,	-0.440943845611892150,	-0.440988721795340540,	-0.441033596876316710,	
+-0.441078470854708920,	-0.441123343730405350,	-0.441168215503293050,	-0.441213086173260160,	-0.441257955740194550,	-0.441302824203984480,	-0.441347691564516980,	-0.441392557821680190,	
+-0.441437422975362040,	-0.441482287025450730,	-0.441527149971833290,	-0.441572011814397980,	-0.441616872553032670,	-0.441661732187625560,	-0.441706590718063670,	-0.441751448144235390,	
+-0.441796304466028860,	-0.441841159683331150,	-0.441886013796030540,	-0.441930866804014890,	-0.441975718707172500,	-0.442020569505390370,	-0.442065419198556850,	-0.442110267786559820,	
+-0.442155115269287470,	-0.442199961646626890,	-0.442244806918466460,	-0.442289651084694040,	-0.442334494145197880,	-0.442379336099865070,	-0.442424176948583880,	-0.442469016691242720,	
+-0.442513855327728580,	-0.442558692857929810,	-0.442603529281734300,	-0.442648364599029950,	-0.442693198809705090,	-0.442738031913646910,	-0.442782863910743560,	-0.442827694800883460,	
+-0.442872524583953760,	-0.442917353259842770,	-0.442962180828438360,	-0.443007007289628880,	-0.443051832643301500,	-0.443096656889344580,	-0.443141480027645970,	-0.443186302058094060,	
+-0.443231122980575990,	-0.443275942794980120,	-0.443320761501194430,	-0.443365579099107180,	-0.443410395588605620,	-0.443455210969578070,	-0.443500025241912900,	-0.443544838405497240,	
+-0.443589650460219480,	-0.443634461405967630,	-0.443679271242629570,	-0.443724079970093780,	-0.443768887588247400,	-0.443813694096978790,	-0.443858499496176280,	-0.443903303785727230,	
+-0.443948106965519840,	-0.443992909035442200,	-0.444037709995382720,	-0.444082509845228510,	-0.444127308584868100,	-0.444172106214189790,	-0.444216902733080790,	-0.444261698141429520,	
+-0.444306492439124010,	-0.444351285626052310,	-0.444396077702102770,	-0.444440868667162650,	-0.444485658521120370,	-0.444530447263864310,	-0.444575234895281720,	-0.444620021415261080,	
+-0.444664806823690360,	-0.444709591120458050,	-0.444754374305451390,	-0.444799156378558710,	-0.444843937339668210,	-0.444888717188668240,	-0.444933495925446070,	-0.444978273549890170,	
+-0.445023050061888580,	-0.445067825461329780,	-0.445112599748101020,	-0.445157372922090730,	-0.445202144983187440,	-0.445246915931278350,	-0.445291685766252000,	-0.445336454487996470,	
+-0.445381222096399740,	-0.445425988591350410,	-0.445470753972735670,	-0.445515518240444050,	-0.445560281394364040,	-0.445605043434382900,	-0.445649804360389200,	-0.445694564172270940,	
+-0.445739322869916690,	-0.445784080453213770,	-0.445828836922050610,	-0.445873592276315340,	-0.445918346515896510,	-0.445963099640681430,	-0.446007851650558620,	-0.446052602545416120,	
+-0.446097352325142580,	-0.446142100989625200,	-0.446186848538752570,	-0.446231594972413270,	-0.446276340290494570,	-0.446321084492884990,	-0.446365827579472680,	-0.446410569550145850,	
+-0.446455310404792970,	-0.446500050143301460,	-0.446544788765559750,	-0.446589526271456540,	-0.446634262660879080,	-0.446678997933715960,	-0.446723732089855330,	-0.446768465129185830,	
+-0.446813197051594720,	-0.446857927856970650,	-0.446902657545202090,	-0.446947386116176570,	-0.446992113569782520,	-0.447036839905908200,	-0.447081565124441800,	-0.447126289225271920,	
+-0.447171012208285870,	-0.447215734073372280,	-0.447260454820419760,	-0.447305174449315720,	-0.447349892959948760,	-0.447394610352207070,	-0.447439326625979240,	-0.447484041781152640,	
+-0.447528755817616030,	-0.447573468735257440,	-0.447618180533965630,	-0.447662891213627960,	-0.447707600774133070,	-0.447752309215369180,	-0.447797016537224920,	-0.447841722739587720,	
+-0.447886427822346170,	-0.447931131785389010,	-0.447975834628603580,	-0.448020536351878550,	-0.448065236955102250,	-0.448109936438162770,	-0.448154634800948910,	-0.448199332043348050,	
+-0.448244028165248830,	-0.448288723166540000,	-0.448333417047108940,	-0.448378109806844280,	-0.448422801445634400,	-0.448467491963367940,	-0.448512181359932320,	-0.448556869635216240,	
+-0.448601556789107960,	-0.448646242821496230,	-0.448690927732268490,	-0.448735611521313420,	-0.448780294188519340,	-0.448824975733774890,	-0.448869656156967610,	-0.448914335457986200,	
+-0.448959013636719360,	-0.449003690693054570,	-0.449048366626880580,	-0.449093041438085650,	-0.449137715126558530,	-0.449182387692186710,	-0.449227059134858940,	-0.449271729454463480,	
+-0.449316398650889130,	-0.449361066724023370,	-0.449405733673754970,	-0.449450399499972230,	-0.449495064202563850,	-0.449539727781417490,	-0.449584390236421720,	-0.449629051567465410,	
+-0.449673711774436100,	-0.449718370857222490,	-0.449763028815712950,	-0.449807685649795840,	-0.449852341359359920,	-0.449896995944292720,	-0.449941649404483060,	-0.449986301739819680,	
+-0.450030952950190130,	-0.450075603035483160,	-0.450120251995587250,	-0.450164899830391100,	-0.450209546539782290,	-0.450254192123649590,	-0.450298836581881410,	-0.450343479914366570,	
+-0.450388122120992610,	-0.450432763201648380,	-0.450477403156222200,	-0.450522041984602940,	-0.450566679686678130,	-0.450611316262336690,	-0.450655951711467330,	-0.450700586033957680,	
+-0.450745219229696570,	-0.450789851298572410,	-0.450834482240473620,	-0.450879112055289020,	-0.450923740742906250,	-0.450968368303214130,	-0.451012994736101460,	-0.451057620041455940,	
+-0.451102244219166340,	-0.451146867269121180,	-0.451191489191209220,	-0.451236109985318160,	-0.451280729651336750,	-0.451325348189153600,	-0.451369965598657440,	-0.451414581879735990,	
+-0.451459197032278050,	-0.451503811056172160,	-0.451548423951307120,	-0.451593035717570590,	-0.451637646354851540,	-0.451682255863038730,	-0.451726864242019910,	-0.451771471491683900,	
+-0.451816077611919220,	-0.451860682602614750,	-0.451905286463658130,	-0.451949889194938340,	-0.451994490796343850,	-0.452039091267763480,	-0.452083690609084990,	-0.452128288820197290,	
+-0.452172885900988920,	-0.452217481851348630,	-0.452262076671164300,	-0.452306670360324790,	-0.452351262918718970,	-0.452395854346234580,	-0.452440444642760620,	-0.452485033808185500,	
+-0.452529621842397810,	-0.452574208745286420,	-0.452618794516739200,	-0.452663379156644900,	-0.452707962664892600,	-0.452752545041369970,	-0.452797126285966020,	-0.452841706398569240,	
+-0.452886285379068550,	-0.452930863227351820,	-0.452975439943307860,	-0.453020015526825360,	-0.453064589977793200,	-0.453109163296099130,	-0.453153735481632180,	-0.453198306534280890,	
+-0.453242876453934240,	-0.453287445240480040,	-0.453332012893807150,	-0.453376579413804660,	-0.453421144800360330,	-0.453465709053363140,	-0.453510272172701680,	-0.453554834158264530,	
+-0.453599395009940680,	-0.453643954727617980,	-0.453688513311185370,	-0.453733070760531820,	-0.453777627075545250,	-0.453822182256114650,	-0.453866736302128540,	-0.453911289213476010,	
+-0.453955840990044880,	-0.454000391631724120,	-0.454044941138402380,	-0.454089489509968690,	-0.454134036746310870,	-0.454178582847317940,	-0.454223127812878600,	-0.454267671642881840,	
+-0.454312214337215470,	-0.454356755895768570,	-0.454401296318430180,	-0.454445835605088170,	-0.454490373755631500,	-0.454534910769949010,	-0.454579446647929540,	-0.454623981389461140,	
+-0.454668514994432730,	-0.454713047462733060,	-0.454757578794251160,	-0.454802108988874910,	-0.454846638046493390,	-0.454891165966995250,	-0.454935692750269630,	-0.454980218396204390,	
+-0.455024742904688580,	-0.455069266275611280,	-0.455113788508860470,	-0.455158309604325180,	-0.455202829561894120,	-0.455247348381455970,	-0.455291866062899840,	-0.455336382606113640,	
+-0.455380898010986520,	-0.455425412277407520,	-0.455469925405264600,	-0.455514437394446860,	-0.455558948244843050,	-0.455603457956342270,	-0.455647966528832440,	-0.455692473962202690,	
+-0.455736980256341740,	-0.455781485411138780,	-0.455825989426481670,	-0.455870492302259570,	-0.455914994038361280,	-0.455959494634675890,	-0.456003994091091380,	-0.456048492407496840,	
+-0.456092989583781530,	-0.456137485619833300,	-0.456181980515541370,	-0.456226474270794490,	-0.456270966885481410,	-0.456315458359491330,	-0.456359948692712240,	-0.456404437885033210,	
+-0.456448925936343510,	-0.456493412846531110,	-0.456537898615485160,	-0.456582383243094470,	-0.456626866729248240,	-0.456671349073834440,	-0.456715830276742230,	-0.456760310337860850,	
+-0.456804789257078350,	-0.456849267034283860,	-0.456893743669366190,	-0.456938219162214110,	-0.456982693512716920,	-0.457027166720762660,	-0.457071638786240410,	-0.457116109709039490,	
+-0.457160579489047870,	-0.457205048126154810,	-0.457249515620249130,	-0.457293981971220060,	-0.457338447178955660,	-0.457382911243345120,	-0.457427374164277310,	-0.457471835941641480,	
+-0.457516296575325660,	-0.457560756065219070,	-0.457605214411210600,	-0.457649671613189480,	-0.457694127671043840,	-0.457738582584662820,	-0.457783036353935750,	-0.457827488978750700,	
+-0.457871940458996930,	-0.457916390794563310,	-0.457960839985338760,	-0.458005288031212430,	-0.458049734932072520,	-0.458094180687808270,	-0.458138625298308950,	-0.458183068763462710,	
+-0.458227511083158730,	-0.458271952257286060,	-0.458316392285733840,	-0.458360831168390270,	-0.458405268905144600,	-0.458449705495885820,	-0.458494140940503110,	-0.458538575238884640,	
+-0.458583008390919760,	-0.458627440396497390,	-0.458671871255506790,	-0.458716300967836110,	-0.458760729533374660,	-0.458805156952011790,	-0.458849583223635670,	-0.458894008348135540,	
+-0.458938432325400440,	-0.458982855155319220,	-0.459027276837781270,	-0.459071697372674730,	-0.459116116759888950,	-0.459160534999313310,	-0.459204952090835890,	-0.459249368034346070,	
+-0.459293782829732880,	-0.459338196476885620,	-0.459382608975692440,	-0.459427020326042770,	-0.459471430527825960,	-0.459515839580930120,	-0.459560247485244710,	-0.459604654240658720,	
+-0.459649059847061060,	-0.459693464304341160,	-0.459737867612387160,	-0.459782269771088550,	-0.459826670780334620,	-0.459871070640013650,	-0.459915469350014980,	-0.459959866910227670,	
+-0.460004263320541060,	-0.460048658580843370,	-0.460093052691024070,	-0.460137445650972140,	-0.460181837460576950,	-0.460226228119726850,	-0.460270617628311120,	-0.460315005986218880,	
+-0.460359393193339460,	-0.460403779249561220,	-0.460448164154773520,	-0.460492547908865790,	-0.460536930511726340,	-0.460581311963244480,	-0.460625692263309410,	-0.460670071411810100,	
+-0.460714449408635980,	-0.460758826253675370,	-0.460803201946817680,	-0.460847576487952380,	-0.460891949876967740,	-0.460936322113753240,	-0.460980693198197900,	-0.461025063130191260,	
+-0.461069431909621570,	-0.461113799536378320,	-0.461158166010350530,	-0.461202531331427690,	-0.461246895499498210,	-0.461291258514451410,	-0.461335620376176540,	-0.461379981084562960,	
+-0.461424340639499050,	-0.461468699040874290,	-0.461513056288578140,	-0.461557412382499030,	-0.461601767322526340,	-0.461646121108549250,	-0.461690473740457240,	-0.461734825218138630,	
+-0.461779175541482960,	-0.461823524710379410,	-0.461867872724717410,	-0.461912219584385330,	-0.461956565289272700,	-0.462000909839268610,	-0.462045253234262710,	-0.462089595474143240,	
+-0.462133936558799810,	-0.462178276488121930,	-0.462222615261997980,	-0.462266952880317440,	-0.462311289342969560,	-0.462355624649843480,	-0.462399958800828680,	-0.462444291795813590,	
+-0.462488623634687790,	-0.462532954317340820,	-0.462577283843661090,	-0.462621612213538150,	-0.462665939426861180,	-0.462710265483519730,	-0.462754590383402220,	-0.462798914126398230,	
+-0.462843236712397020,	-0.462887558141288010,	-0.462931878412959800,	-0.462976197527301850,	-0.463020515484203420,	-0.463064832283554110,	-0.463109147925242270,	-0.463153462409157610,	
+-0.463197775735189670,	-0.463242087903226910,	-0.463286398913158930,	-0.463330708764874980,	-0.463375017458264200,	-0.463419324993216310,	-0.463463631369619710,	-0.463507936587364000,	
+-0.463552240646338880,	-0.463596543546432700,	-0.463640845287535240,	-0.463685145869535630,	-0.463729445292323570,	-0.463773743555787490,	-0.463818040659817020,	-0.463862336604301480,	
+-0.463906631389130520,	-0.463950925014192550,	-0.463995217479377280,	-0.464039508784573950,	-0.464083798929672280,	-0.464128087914560670,	-0.464172375739128900,	-0.464216662403266530,	
+-0.464260947906862120,	-0.464305232249805360,	-0.464349515431985550,	-0.464393797453292290,	-0.464438078313614170,	-0.464482358012840820,	-0.464526636550861630,	-0.464570913927566160,	
+-0.464615190142843080,	-0.464659465196582020,	-0.464703739088672300,	-0.464748011819003600,	-0.464792283387464480,	-0.464836553793944670,	-0.464880823038333830,	-0.464925091120520610,	
+-0.464969358040394630,	-0.465013623797845220,	-0.465057888392761800,	-0.465102151825034000,	-0.465146414094550490,	-0.465190675201200890,	-0.465234935144875020,	-0.465279193925461410,	
+-0.465323451542849820,	-0.465367707996929610,	-0.465411963287590490,	-0.465456217414721100,	-0.465500470378211180,	-0.465544722177950070,	-0.465588972813827550,	-0.465633222285732230,	
+-0.465677470593553800,	-0.465721717737181740,	-0.465765963716505750,	-0.465810208531414470,	-0.465854452181797660,	-0.465898694667545080,	-0.465942935988545410,	-0.465987176144688430,	
+-0.466031415135863440,	-0.466075652961959960,	-0.466119889622867770,	-0.466164125118475380,	-0.466208359448672730,	-0.466252592613349560,	-0.466296824612394520,	-0.466341055445697430,	
+-0.466385285113147700,	-0.466429513614635140,	-0.466473740950048400,	-0.466517967119277340,	-0.466562192122211340,	-0.466606415958740250,	-0.466650638628752720,	-0.466694860132138570,	
+-0.466739080468787320,	-0.466783299638588720,	-0.466827517641431490,	-0.466871734477205480,	-0.466915950145800560,	-0.466960164647105320,	-0.467004377981009690,	-0.467048590147403130,	
+-0.467092801146175460,	-0.467137010977215380,	-0.467181219640412810,	-0.467225427135657180,	-0.467269633462838340,	-0.467313838621845060,	-0.467358042612567190,	-0.467402245434894230,	
+-0.467446447088716020,	-0.467490647573921280,	-0.467534846890399920,	-0.467579045038041870,	-0.467623242016735830,	-0.467667437826371660,	-0.467711632466838890,	-0.467755825938027000,	
+-0.467800018239826030,	-0.467844209372124560,	-0.467888399334812580,	-0.467932588127779990,	-0.467976775750915560,	-0.468020962204109160,	-0.468065147487250370,	-0.468109331600229110,	
+-0.468153514542934080,	-0.468197696315255320,	-0.468241876917082300,	-0.468286056348305000,	-0.468330234608812120,	-0.468374411698493700,	-0.468418587617239260,	-0.468462762364938720,	
+-0.468506935941480850,	-0.468551108346755670,	-0.468595279580653110,	-0.468639449643061980,	-0.468683618533872190,	-0.468727786252973400,	-0.468771952800255130,	-0.468816118175607310,	
+-0.468860282378918860,	-0.468904445410079700,	-0.468948607268979800,	-0.468992767955508040,	-0.469036927469554330,	-0.469081085811008270,	-0.469125242979759940,	-0.469169398975698090,	
+-0.469213553798712710,	-0.469257707448693880,	-0.469301859925530360,	-0.469346011229112180,	-0.469390161359329040,	-0.469434310316070410,	-0.469478458099226450,	-0.469522604708685950,	
+-0.469566750144338960,	-0.469610894406075450,	-0.469655037493784290,	-0.469699179407355560,	-0.469743320146678910,	-0.469787459711644320,	-0.469831598102140700,	-0.469875735318058100,	
+-0.469919871359286150,	-0.469964006225714880,	-0.470008139917233230,	-0.470052272433731270,	-0.470096403775098590,	-0.470140533941225290,	-0.470184662932000290,	-0.470228790747313610,	
+-0.470272917387055340,	-0.470317042851114360,	-0.470361167139380810,	-0.470405290251744320,	-0.470449412188094660,	-0.470493532948321800,	-0.470537652532314780,	-0.470581770939963560,	
+-0.470625888171158360,	-0.470670004225787970,	-0.470714119103742670,	-0.470758232804912020,	-0.470802345329186190,	-0.470846456676454080,	-0.470890566846605850,	-0.470934675839531190,	
+-0.470978783655120250,	-0.471022890293261940,	-0.471066995753846420,	-0.471111100036763430,	-0.471155203141903070,	-0.471199305069154250,	-0.471243405818407230,	-0.471287505389552110,	
+-0.471331603782477790,	-0.471375700997074430,	-0.471419797033231890,	-0.471463891890839810,	-0.471507985569788400,	-0.471552078069966680,	-0.471596169391264700,	-0.471640259533572690,	
+-0.471684348496779700,	-0.471728436280775820,	-0.471772522885450800,	-0.471816608310694940,	-0.471860692556397120,	-0.471904775622447540,	-0.471948857508736500,	-0.471992938215152870,	
+-0.472037017741586850,	-0.472081096087928360,	-0.472125173254067110,	-0.472169249239893280,	-0.472213324045295980,	-0.472257397670165390,	-0.472301470114391660,	-0.472345541377863830,	
+-0.472389611460472200,	-0.472433680362106530,	-0.472477748082657080,	-0.472521814622012810,	-0.472565879980064050,	-0.472609944156700550,	-0.472654007151812610,	-0.472698068965289260,	
+-0.472742129597020720,	-0.472786189046896900,	-0.472830247314807940,	-0.472874304400642990,	-0.472918360304292300,	-0.472962415025646070,	-0.473006468564593440,	-0.473050520921024620,	
+-0.473094572094829520,	-0.473138622085897960,	-0.473182670894120250,	-0.473226718519385470,	-0.473270764961583930,	-0.473314810220605840,	-0.473358854296340340,	-0.473402897188677670,	
+-0.473446938897507770,	-0.473490979422720950,	-0.473535018764206280,	-0.473579056921854040,	-0.473623093895554180,	-0.473667129685196920,	-0.473711164290671500,	-0.473755197711868190,	
+-0.473799229948676850,	-0.473843261000987840,	-0.473887290868690250,	-0.473931319551674450,	-0.473975347049830800,	-0.474019373363048340,	-0.474063398491217420,	-0.474107422434228040,	
+-0.474151445191970500,	-0.474195466764333940,	-0.474239487151208730,	-0.474283506352484780,	-0.474327524368052480,	-0.474371541197800950,	-0.474415556841620620,	-0.474459571299401360,	
+-0.474503584571033530,	-0.474547596656406390,	-0.474591607555410240,	-0.474635617267935520,	-0.474679625793871300,	-0.474723633133108060,	-0.474767639285535670,	-0.474811644251044220,	
+-0.474855648029524070,	-0.474899650620864420,	-0.474943652024955590,	-0.474987652241688040,	-0.475031651270950980,	-0.475075649112634830,	-0.475119645766629520,	-0.475163641232825450,	
+-0.475207635511111950,	-0.475251628601379320,	-0.475295620503517650,	-0.475339611217417300,	-0.475383600742967540,	-0.475427589080058780,	-0.475471576228580990,	-0.475515562188424720,	
+-0.475559546959479110,	-0.475603530541634680,	-0.475647512934781800,	-0.475691494138809730,	-0.475735474153608950,	-0.475779452979069430,	-0.475823430615081310,	-0.475867407061535020,	
+-0.475911382318319810,	-0.475955356385326160,	-0.475999329262444480,	-0.476043300949564100,	-0.476087271446575480,	-0.476131240753368660,	-0.476175208869834170,	-0.476219175795861260,	
+-0.476263141531340360,	-0.476307106076161610,	-0.476351069430215550,	-0.476395031593391360,	-0.476438992565579640,	-0.476482952346670430,	-0.476526910936554190,	-0.476570868335120300,	
+-0.476614824542259290,	-0.476658779557861570,	-0.476702733381816510,	-0.476746686014014600,	-0.476790637454345970,	-0.476834587702701150,	-0.476878536758969520,	-0.476922484623041490,	
+-0.476966431294807260,	-0.477010376774157360,	-0.477054321060981110,	-0.477098264155169090,	-0.477142206056611340,	-0.477186146765198550,	-0.477230086280819920,	-0.477274024603366150,	
+-0.477317961732727670,	-0.477361897668793890,	-0.477405832411455400,	-0.477449765960602290,	-0.477493698316124760,	-0.477537629477913450,	-0.477581559445857620,	-0.477625488219847850,	
+-0.477669415799774840,	-0.477713342185527860,	-0.477757267376997470,	-0.477801191374074010,	-0.477845114176647880,	-0.477889035784608620,	-0.477932956197846760,	-0.477976875416252500,	
+-0.478020793439716480,	-0.478064710268128020,	-0.478108625901377820,	-0.478152540339356060,	-0.478196453581953340,	-0.478240365629059080,	-0.478284276480563930,	-0.478328186136358470,	
+-0.478372094596332180,	-0.478416001860375580,	-0.478459907928379060,	-0.478503812800232740,	-0.478547716475827280,	-0.478591618955052090,	-0.478635520237797930,	-0.478679420323955330,	
+-0.478723319213413770,	-0.478767216906063940,	-0.478811113401796050,	-0.478855008700500740,	-0.478898902802067540,	-0.478942795706387090,	-0.478986687413349650,	-0.479030577922845920,	
+-0.479074467234765320,	-0.479118355348998550,	-0.479162242265435860,	-0.479206127983968000,	-0.479250012504484400,	-0.479293895826875820,	-0.479337777951032830,	-0.479381658876845030,	
+-0.479425538604203120,	-0.479469417132997340,	-0.479513294463117970,	-0.479557170594455790,	-0.479601045526900300,	-0.479644919260342200,	-0.479688791794672160,	-0.479732663129779800,	
+-0.479776533265555750,	-0.479820402201890370,	-0.479864269938674370,	-0.479908136475797330,	-0.479952001813149950,	-0.479995865950622940,	-0.480039728888105870,	-0.480083590625489500,	
+-0.480127451162664090,	-0.480171310499520110,	-0.480215168635948260,	-0.480259025571838080,	-0.480302881307080320,	-0.480346735841565730,	-0.480390589175183960,	-0.480434441307825700,	
+-0.480478292239381320,	-0.480522141969741190,	-0.480565990498796110,	-0.480609837826435680,	-0.480653683952551090,	-0.480697528877031820,	-0.480741372599768790,	-0.480785215120652310,	
+-0.480829056439572740,	-0.480872896556421010,	-0.480916735471086600,	-0.480960573183460360,	-0.481004409693433050,	-0.481048245000894330,	-0.481092079105735040,	-0.481135912007845500,	
+-0.481179743707116250,	-0.481223574203437980,	-0.481267403496700390,	-0.481311231586794290,	-0.481355058473610490,	-0.481398884157038690,	-0.481442708636969640,	-0.481486531913293820,	
+-0.481530353985902100,	-0.481574174854684070,	-0.481617994519530630,	-0.481661812980332560,	-0.481705630236979600,	-0.481749446289362560,	-0.481793261137371920,	-0.481837074780898100,	
+-0.481880887219831970,	-0.481924698454063270,	-0.481968508483482770,	-0.482012317307981440,	-0.482056124927448930,	-0.482099931341776090,	-0.482143736550853410,	-0.482187540554571410,	
+-0.482231343352820920,	-0.482275144945491730,	-0.482318945332474600,	-0.482362744513660570,	-0.482406542488939270,	-0.482450339258201580,	-0.482494134821338070,	-0.482537929178239620,	
+-0.482581722328795980,	-0.482625514272898020,	-0.482669305010436640,	-0.482713094541301620,	-0.482756882865383820,	-0.482800669982573870,	-0.482844455892762260,	-0.482888240595839850,	
+-0.482932024091696440,	-0.482975806380223030,	-0.483019587461310460,	-0.483063367334848560,	-0.483107146000728180,	-0.483150923458839980,	-0.483194699709074470,	-0.483238474751322590,	
+-0.483282248585474140,	-0.483326021211420430,	-0.483369792629051330,	-0.483413562838257700,	-0.483457331838930190,	-0.483501099630959390,	-0.483544866214236150,	-0.483588631588650400,	
+-0.483632395754093060,	-0.483676158710455160,	-0.483719920457626410,	-0.483763680995497880,	-0.483807440323960170,	-0.483851198442903860,	-0.483894955352219940,	-0.483938711051798200,	
+-0.483982465541529740,	-0.484026218821305480,	-0.484069970891015280,	-0.484113721750550120,	-0.484157471399800700,	-0.484201219838657990,	-0.484244967067011810,	-0.484288713084753240,	
+-0.484332457891773320,	-0.484376201487961790,	-0.484419943873209800,	-0.484463685047407940,	-0.484507425010446860,	-0.484551163762217630,	-0.484594901302610070,	-0.484638637631515270,	
+-0.484682372748824250,	-0.484726106654426950,	-0.484769839348214330,	-0.484813570830077150,	-0.484857301099906050,	-0.484901030157592060,	-0.484944758003025110,	-0.484988484636096670,	
+-0.485032210056696610,	-0.485075934264716010,	-0.485119657260045630,	-0.485163379042576060,	-0.485207099612198430,	-0.485250818968802730,	-0.485294537112279930,	-0.485338254042521180,	
+-0.485381969759416390,	-0.485425684262856700,	-0.485469397552732770,	-0.485513109628935400,	-0.485556820491355570,	-0.485600530139883360,	-0.485644238574409800,	-0.485687945794826050,	
+-0.485731651801022070,	-0.485775356592888900,	-0.485819060170317400,	-0.485862762533198600,	-0.485906463681422480,	-0.485950163614880250,	-0.485993862333462980,	-0.486037559837060650,	
+-0.486081256125564460,	-0.486124951198865120,	-0.486168645056853370,	-0.486212337699420400,	-0.486256029126456210,	-0.486299719337851990,	-0.486343408333498820,	-0.486387096113286730,	
+-0.486430782677106930,	-0.486474468024850120,	-0.486518152156407200,	-0.486561835071669280,	-0.486605516770526330,	-0.486649197252869650,	-0.486692876518590330,	-0.486736554567578470,	
+-0.486780231399725150,	-0.486823907014921340,	-0.486867581413058080,	-0.486911254594025510,	-0.486954926557714830,	-0.486998597304017180,	-0.487042266832822650,	-0.487085935144022490,	
+-0.487129602237507450,	-0.487173268113168410,	-0.487216932770896620,	-0.487260596210582100,	-0.487304258432116060,	-0.487347919435389800,	-0.487391579220293360,	-0.487435237786717930,	
+-0.487478895134554390,	-0.487522551263693650,	-0.487566206174026960,	-0.487609859865444310,	-0.487653512337837440,	-0.487697163591096330,	-0.487740813625112350,	-0.487784462439776360,	
+-0.487828110034979220,	-0.487871756410612150,	-0.487915401566565320,	-0.487959045502730000,	-0.488002688218997450,	-0.488046329715257740,	-0.488089969991402250,	-0.488133609047321840,	
+-0.488177246882907420,	-0.488220883498050260,	-0.488264518892640500,	-0.488308153066569440,	-0.488351786019728400,	-0.488395417752007450,	-0.488439048263297980,	-0.488482677553490950,	
+-0.488526305622477560,	-0.488569932470148020,	-0.488613558096393670,	-0.488657182501105790,	-0.488700805684174570,	-0.488744427645491360,	-0.488788048384947050,	-0.488831667902432650,	
+-0.488875286197839490,	-0.488918903271057640,	-0.488962519121978580,	-0.489006133750493620,	-0.489049747156492960,	-0.489093359339867860,	-0.489136970300509450,	-0.489180580038308550,	
+-0.489224188553156640,	-0.489267795844943840,	-0.489311401913561540,	-0.489355006758901090,	-0.489398610380852810,	-0.489442212779307990,	-0.489485813954157580,	-0.489529413905293090,	
+-0.489573012632604660,	-0.489616610135983680,	-0.489660206415321540,	-0.489703801470508570,	-0.489747395301436020,	-0.489790987907995020,	-0.489834579290076570,	-0.489878169447572010,	
+-0.489921758380371660,	-0.489965346088366950,	-0.490008932571449230,	-0.490052517829508820,	-0.490096101862437070,	-0.490139684670125090,	-0.490183266252463890,	-0.490226846609344900,	
+-0.490270425740658430,	-0.490314003646296290,	-0.490357580326148730,	-0.490401155780107230,	-0.490444730008062880,	-0.490488303009906650,	-0.490531874785530060,	-0.490575445334823390,	
+-0.490619014657678100,	-0.490662582753985720,	-0.490706149623636460,	-0.490749715266521780,	-0.490793279682532890,	-0.490836842871560760,	-0.490880404833496930,	-0.490923965568231650,	
+-0.490967525075656500,	-0.491011083355662900,	-0.491054640408141230,	-0.491098196232982950,	-0.491141750830079220,	-0.491185304199321440,	-0.491228856340600040,	-0.491272407253806500,	
+-0.491315956938832290,	-0.491359505395567830,	-0.491403052623904660,	-0.491446598623733800,	-0.491490143394946450,	-0.491533686937434100,	-0.491577229251087210,	-0.491620770335797210,	
+-0.491664310191455680,	-0.491707848817952990,	-0.491751386215180660,	-0.491794922383029850,	-0.491838457321391750,	-0.491881991030157950,	-0.491925523509218750,	-0.491969054758465700,	
+-0.492012584777790420,	-0.492056113567083340,	-0.492099641126235940,	-0.492143167455139420,	-0.492186692553685410,	-0.492230216421764230,	-0.492273739059267520,	-0.492317260466086930,	
+-0.492360780642112690,	-0.492404299587236580,	-0.492447817301349680,	-0.492491333784343230,	-0.492534849036108830,	-0.492578363056536960,	-0.492621875845519200,	-0.492665387402947070,	
+-0.492708897728711130,	-0.492752406822702940,	-0.492795914684813710,	-0.492839421314934690,	-0.492882926712957530,	-0.492926430878772640,	-0.492969933812272110,	-0.493013435513346310,	
+-0.493056935981886930,	-0.493100435217785240,	-0.493143933220932420,	-0.493187429991220170,	-0.493230925528538980,	-0.493274419832780480,	-0.493317912903836250,	-0.493361404741596900,	
+-0.493404895345954050,	-0.493448384716798970,	-0.493491872854022910,	-0.493535359757517500,	-0.493578845427173400,	-0.493622329862882130,	-0.493665813064535440,	-0.493709295032023820,	
+-0.493752775765238960,	-0.493796255264072170,	-0.493839733528415150,	-0.493883210558158370,	-0.493926686353193590,	-0.493970160913412450,	-0.494013634238705530,	-0.494057106328964550,	
+-0.494100577184080790,	-0.494144046803945640,	-0.494187515188450670,	-0.494230982337486580,	-0.494274448250945020,	-0.494317912928717740,	-0.494361376370695270,	-0.494404838576769370,	
+-0.494448299546831340,	-0.494491759280772600,	-0.494535217778484860,	-0.494578675039858640,	-0.494622131064785810,	-0.494665585853157950,	-0.494709039404865770,	-0.494752491719801010,	
+-0.494795942797855050,	-0.494839392638919570,	-0.494882841242885230,	-0.494926288609643770,	-0.494969734739087010,	-0.495013179631105530,	-0.495056623285591080,	-0.495100065702435090,	
+-0.495143506881528920,	-0.495186946822764370,	-0.495230385526032050,	-0.495273822991223800,	-0.495317259218231390,	-0.495360694206945400,	-0.495404127957257690,	-0.495447560469059690,	
+-0.495490991742242760,	-0.495534421776698760,	-0.495577850572318290,	-0.495621278128993590,	-0.495664704446615310,	-0.495708129525075260,	-0.495751553364264910,	-0.495794975964075680,	
+-0.495838397324399380,	-0.495881817445126660,	-0.495925236326149430,	-0.495968653967359560,	-0.496012070368647580,	-0.496055485529905470,	-0.496098899451024640,	-0.496142312131896520,	
+-0.496185723572413080,	-0.496229133772464910,	-0.496272542731943880,	-0.496315950450741890,	-0.496359356928749660,	-0.496402762165859050,	-0.496446166161961520,	-0.496489568916948950,	
+-0.496532970430712040,	-0.496576370703142760,	-0.496619769734132910,	-0.496663167523573260,	-0.496706564071355720,	-0.496749959377371710,	-0.496793353441512820,	-0.496836746263670970,	
+-0.496880137843736860,	-0.496923528181602350,	-0.496966917277159470,	-0.497010305130298870,	-0.497053691740912520,	-0.497097077108891950,	-0.497140461234128690,	-0.497183844116514670,	
+-0.497227225755940640,	-0.497270606152298900,	-0.497313985305480320,	-0.497357363215376710,	-0.497400739881879770,	-0.497444115304880920,	-0.497487489484272180,	-0.497530862419944320,	
+-0.497574234111789360,	-0.497617604559699170,	-0.497660973763564550,	-0.497704341723277540,	-0.497747708438729620,	-0.497791073909812480,	-0.497834438136418030,	-0.497877801118437100,	
+-0.497921162855761660,	-0.497964523348283730,	-0.498007882595894070,	-0.498051240598484710,	-0.498094597355947240,	-0.498137952868173690,	-0.498181307135054870,	-0.498224660156482760,	
+-0.498268011932349380,	-0.498311362462545590,	-0.498354711746963440,	-0.498398059785494450,	-0.498441406578030380,	-0.498484752124463140,	-0.498528096424683600,	-0.498571439478583840,	
+-0.498614781286055910,	-0.498658121846990600,	-0.498701461161280000,	-0.498744799228815710,	-0.498788136049489460,	-0.498831471623193250,	-0.498874805949817980,	-0.498918139029255690,	
+-0.498961470861398420,	-0.499004801446137130,	-0.499048130783363800,	-0.499091458872970130,	-0.499134785714848260,	-0.499178111308889010,	-0.499221435654984450,	-0.499264758753026730,	
+-0.499308080602906710,	-0.499351401204516490,	-0.499394720557747750,	-0.499438038662492260,	-0.499481355518642030,	-0.499524671126088000,	-0.499567985484722310,	-0.499611298594437040,	
+-0.499654610455123160,	-0.499697921066672710,	-0.499741230428977500,	-0.499784538541929220,	-0.499827845405419970,	-0.499871151019340710,	-0.499914455383583920,	-0.499957758498040640,	
+-0.500001060362602940,	-0.500044360977162650,	-0.500087660341611450,	-0.500130958455841430,	-0.500174255319743690,	-0.500217550933210300,	-0.500260845296133350,	-0.500304138408403930,	
+-0.500347430269914240,	-0.500390720880555920,	-0.500434010240220830,	-0.500477298348801060,	-0.500520585206187580,	-0.500563870812272830,	-0.500607155166948650,	-0.500650438270106250,	
+-0.500693720121637710,	-0.500737000721434900,	-0.500780280069389900,	-0.500823558165393920,	-0.500866835009339040,	-0.500910110601117450,	-0.500953384940620140,	-0.500996658027739410,	
+-0.501039929862367010,	-0.501083200444394810,	-0.501126469773715000,	-0.501169737850218570,	-0.501213004673797920,	-0.501256270244345050,	-0.501299534561751140,	-0.501342797625908390,	
+-0.501386059436708660,	-0.501429319994043720,	-0.501472579297805980,	-0.501515837347886300,	-0.501559094144177100,	-0.501602349686570470,	-0.501645603974957610,	-0.501688857009230830,	
+-0.501732108789281760,	-0.501775359315002940,	-0.501818608586285240,	-0.501861856603021070,	-0.501905103365102630,	-0.501948348872421010,	-0.501991593124868630,	-0.502034836122337120,	
+-0.502078077864718590,	-0.502121318351905320,	-0.502164557583788310,	-0.502207795560259850,	-0.502251032281212370,	-0.502294267746536850,	-0.502337501956125700,	-0.502380734909870790,	
+-0.502423966607664090,	-0.502467197049397800,	-0.502510426234963110,	-0.502553654164252790,	-0.502596880837157920,	-0.502640106253570920,	-0.502683330413383640,	-0.502726553316487970,	
+-0.502769774962776310,	-0.502812995352139860,	-0.502856214484470930,	-0.502899432359661840,	-0.502942648977603770,	-0.502985864338189040,	-0.503029078441309730,	-0.503072291286857600,	
+-0.503115502874725280,	-0.503158713204803760,	-0.503201922276985460,	-0.503245130091162670,	-0.503288336647226720,	-0.503331541945069900,	-0.503374745984584320,	-0.503417948765662150,	
+-0.503461150288194830,	-0.503504350552074540,	-0.503547549557193830,	-0.503590747303443780,	-0.503633943790716910,	-0.503677139018905210,	-0.503720332987900640,	-0.503763525697595640,	
+-0.503806717147881390,	-0.503849907338650320,	-0.503893096269794950,	-0.503936283941206490,	-0.503979470352777240,	-0.504022655504399290,	-0.504065839395964720,	-0.504109022027365960,	
+-0.504152203398494310,	-0.504195383509242090,	-0.504238562359501820,	-0.504281739949164700,	-0.504324916278123260,	-0.504368091346269590,	-0.504411265153495990,	-0.504454437699693890,	
+-0.504497608984755710,	-0.504540779008573860,	-0.504583947771039760,	-0.504627115272045730,	-0.504670281511483850,	-0.504713446489246320,	-0.504756610205225550,	-0.504799772659312860,	
+-0.504842933851400780,	-0.504886093781381720,	-0.504929252449147100,	-0.504972409854589240,	-0.505015565997600450,	-0.505058720878072690,	-0.505101874495898610,	-0.505145026850969290,	
+-0.505188177943177940,	-0.505231327772415750,	-0.505274476338575140,	-0.505317623641548420,	-0.505360769681227560,	-0.505403914457505210,	-0.505447057970272670,	-0.505490200219422590,	
+-0.505533341204847280,	-0.505576480926438250,	-0.505619619384088060,	-0.505662756577688780,	-0.505705892507132600,	-0.505749027172312180,	-0.505792160573118710,	-0.505835292709444830,	
+-0.505878423581183070,	-0.505921553188224960,	-0.505964681530462920,	-0.506007808607789160,	-0.506050934420096300,	-0.506094058967275770,	-0.506137182249220000,	-0.506180304265821720,	
+-0.506223425016972260,	-0.506266544502564250,	-0.506309662722489890,	-0.506352779676641380,	-0.506395895364911250,	-0.506439009787191030,	-0.506482122943373250,	-0.506525234833350660,	
+-0.506568345457014460,	-0.506611454814257510,	-0.506654562904971790,	-0.506697669729049840,	-0.506740775286383950,	-0.506783879576865770,	-0.506826982600387940,	-0.506870084356843000,	
+-0.506913184846122470,	-0.506956284068118990,	-0.506999382022724880,	-0.507042478709832540,	-0.507085574129333750,	-0.507128668281120910,	-0.507171761165086890,	-0.507214852781122990,	
+-0.507257943129121980,	-0.507301032208976150,	-0.507344120020577720,	-0.507387206563819420,	-0.507430291838592670,	-0.507473375844790240,	-0.507516458582304650,	-0.507559540051027660,	
+-0.507602620250851790,	-0.507645699181669240,	-0.507688776843372550,	-0.507731853235854350,	-0.507774928359006060,	-0.507818002212720890,	-0.507861074796890240,	-0.507904146111407000,	
+-0.507947216156163340,	-0.507990284931051580,	-0.508033352435964590,	-0.508076418670793780,	-0.508119483635431910,	-0.508162547329771840,	-0.508205609753704880,	-0.508248670907124000,	
+-0.508291730789921400,	-0.508334789401989400,	-0.508377846743220840,	-0.508420902813507380,	-0.508463957612741550,	-0.508507011140816310,	-0.508550063397623100,	-0.508593114383054770,	
+-0.508636164097003520,	-0.508679212539362440,	-0.508722259710022830,	-0.508765305608877560,	-0.508808350235819380,	-0.508851393590740050,	-0.508894435673532210,	-0.508937476484088270,	
+-0.508980516022300660,	-0.509023554288062010,	-0.509066591281264190,	-0.509109627001799960,	-0.509152661449561950,	-0.509195694624441920,	-0.509238726526332730,	-0.509281757155126580,	
+-0.509324786510716220,	-0.509367814592994070,	-0.509410841401852110,	-0.509453866937183530,	-0.509496891198879750,	-0.509539914186833750,	-0.509582935900938060,	-0.509625956341084980,	
+-0.509668975507167390,	-0.509711993399076910,	-0.509755010016706530,	-0.509798025359949000,	-0.509841039428696070,	-0.509884052222840390,	-0.509927063742274700,	-0.509970073986891310,	
+-0.510013082956583210,	-0.510056090651241910,	-0.510099097070760400,	-0.510142102215031530,	-0.510185106083947070,	-0.510228108677399870,	-0.510271109995282250,	-0.510314110037486950,	
+-0.510357108803906830,	-0.510400106294433440,	-0.510443102508960190,	-0.510486097447378830,	-0.510529091109582220,	-0.510572083495462900,	-0.510615074604913400,	-0.510658064437826460,	
+-0.510701052994094070,	-0.510744040273609090,	-0.510787026276264380,	-0.510830011001951690,	-0.510872994450563890,	-0.510915976621993730,	-0.510958957516133520,	-0.511001937132876450,	
+-0.511044915472114060,	-0.511087892533739320,	-0.511130868317645310,	-0.511173842823723800,	-0.511216816051867640,	-0.511259788001969360,	-0.511302758673922050,	-0.511345728067617470,	
+-0.511388696182948580,	-0.511431663019808360,	-0.511474628578088450,	-0.511517592857682170,	-0.511560555858481810,	-0.511603517580380030,	-0.511646478023269900,	-0.511689437187043180,	
+-0.511732395071592850,	-0.511775351676811870,	-0.511818307002592230,	-0.511861261048826680,	-0.511904213815408070,	-0.511947165302228950,	-0.511990115509182280,	-0.512033064436159920,	
+-0.512076012083055310,	-0.512118958449760300,	-0.512161903536167860,	-0.512204847342170640,	-0.512247789867661290,	-0.512290731112532870,	-0.512333671076677270,	-0.512376609759987560,	
+-0.512419547162356600,	-0.512462483283676380,	-0.512505418123839980,	-0.512548351682740040,	-0.512591283960269210,	-0.512634214956320670,	-0.512677144670786070,	-0.512720073103558600,	
+-0.512763000254531360,	-0.512805926123596320,	-0.512848850710646340,	-0.512891774015574290,	-0.512934696038273240,	-0.512977616778634960,	-0.513020536236552750,	-0.513063454411919470,	
+-0.513106371304627330,	-0.513149286914569070,	-0.513192201241637780,	-0.513235114285725880,	-0.513278026046726570,	-0.513320936524531810,	-0.513363845719034710,	-0.513406753630128440,	
+-0.513449660257704890,	-0.513492565601657120,	-0.513535469661878020,	-0.513578372438260210,	-0.513621273930696790,	-0.513664174139079830,	-0.513707073063302540,	-0.513749970703257790,	
+-0.513792867058837870,	-0.513835762129935760,	-0.513878655916444220,	-0.513921548418256320,	-0.513964439635264280,	-0.514007329567361170,	-0.514050218214440080,	-0.514093105576392980,	
+-0.514135991653113190,	-0.514178876444493450,	-0.514221759950426520,	-0.514264642170805590,	-0.514307523105522520,	-0.514350402754470860,	-0.514393281117543450,	-0.514436158194632400,	
+-0.514479033985631110,	-0.514521908490432110,	-0.514564781708928390,	-0.514607653641013020,	-0.514650524286578200,	-0.514693393645517470,	-0.514736261717722910,	-0.514779128503087600,	
+-0.514821994001504520,	-0.514864858212866430,	-0.514907721137066620,	-0.514950582773997080,	-0.514993443123551110,	-0.515036302185621910,	-0.515079159960101560,	-0.515122016446883380,	
+-0.515164871645860110,	-0.515207725556924620,	-0.515250578179970220,	-0.515293429514888990,	-0.515336279561574240,	-0.515379128319919060,	-0.515421975789815750,	-0.515464821971157510,	
+-0.515507666863837200,	-0.515550510467748140,	-0.515593352782782400,	-0.515636193808833300,	-0.515679033545794030,	-0.515721871993556790,	-0.515764709152015000,	-0.515807545021061300,	
+-0.515850379600588770,	-0.515893212890490730,	-0.515936044890659250,	-0.515978875600987650,	-0.516021705021369240,	-0.516064533151696200,	-0.516107359991861750,	-0.516150185541758950,	
+-0.516193009801280690,	-0.516235832770320370,	-0.516278654448769970,	-0.516321474836523020,	-0.516364293933472720,	-0.516407111739511260,	-0.516449928254532060,	-0.516492743478428110,	
+-0.516535557411092580,	-0.516578370052417800,	-0.516621181402297180,	-0.516663991460623920,	-0.516706800227290210,	-0.516749607702189580,	-0.516792413885215020,	-0.516835218776259260,	
+-0.516878022375215960,	-0.516920824681977200,	-0.516963625696436390,	-0.517006425418486850,	-0.517049223848020880,	-0.517092020984931900,	-0.517134816829112780,	-0.517177611380456700,	
+-0.517220404638856880,	-0.517263196604205720,	-0.517305987276396980,	-0.517348776655322860,	-0.517391564740876770,	-0.517434351532951810,	-0.517477137031440940,	-0.517519921236237690,	
+-0.517562704147234150,	-0.517605485764323860,	-0.517648266087400330,	-0.517691045116355660,	-0.517733822851083380,	-0.517776599291476570,	-0.517819374437428310,	-0.517862148288831920,	
+-0.517904920845579820,	-0.517947692107565420,	-0.517990462074682250,	-0.518033230746822390,	-0.518075998123879500,	-0.518118764205746650,	-0.518161528992317270,	-0.518204292483483650,	
+-0.518247054679139340,	-0.518289815579177750,	-0.518332575183491300,	-0.518375333491973290,	-0.518418090504517040,	-0.518460846221015510,	-0.518503600641362250,	-0.518546353765449660,	
+-0.518589105593171170,	-0.518631856124420310,	-0.518674605359089380,	-0.518717353297071910,	-0.518760099938261110,	-0.518802845282550160,	-0.518845589329832270,	-0.518888332080000180,	
+-0.518931073532947210,	-0.518973813688566990,	-0.519016552546751720,	-0.519059290107395150,	-0.519102026370390380,	-0.519144761335630920,	-0.519187495003009200,	-0.519230227372418640,	
+-0.519272958443752990,	-0.519315688216904550,	-0.519358416691766860,	-0.519401143868233110,	-0.519443869746196500,	-0.519486594325550670,	-0.519529317606187920,	-0.519572039588001910,	
+-0.519614760270886160,	-0.519657479654733080,	-0.519700197739436320,	-0.519742914524889080,	-0.519785630010984660,	-0.519828344197616370,	-0.519871057084676960,	-0.519913768672060290,	
+-0.519956478959658800,	-0.519999187947365990,	-0.520041895635075300,	-0.520084602022679920,	-0.520127307110073380,	-0.520170010897148210,	-0.520212713383797930,	-0.520255414569916420,	
+-0.520298114455395870,	-0.520340813040130020,	-0.520383510324012200,	-0.520426206306935480,	-0.520468900988793730,	-0.520511594369479360,	-0.520554286448886020,	-0.520596977226907230,	
+-0.520639666703435760,	-0.520682354878365010,	-0.520725041751588400,	-0.520767727322999590,	-0.520810411592491080,	-0.520853094559956540,	-0.520895776225289600,	-0.520938456588382890,	
+-0.520981135649130070,	-0.521023813407424320,	-0.521066489863159070,	-0.521109165016228060,	-0.521151838866523610,	-0.521194511413939690,	-0.521237182658369820,	-0.521279852599706550,	
+-0.521322521237843730,	-0.521365188572674660,	-0.521407854604092560,	-0.521450519331991160,	-0.521493182756263110,	-0.521535844876802050,	-0.521578505693501840,	-0.521621165206255010,	
+-0.521663823414955210,	-0.521706480319495850,	-0.521749135919770680,	-0.521791790215672350,	-0.521834443207094490,	-0.521877094893930860,	-0.521919745276074100,	-0.521962394353418070,	
+-0.522005042125855970,	-0.522047688593281320,	-0.522090333755587890,	-0.522132977612668080,	-0.522175620164415990,	-0.522218261410725140,	-0.522260901351488280,	-0.522303539986599170,	
+-0.522346177315951230,	-0.522388813339437760,	-0.522431448056952740,	-0.522474081468388700,	-0.522516713573639820,	-0.522559344372598770,	-0.522601973865159270,	-0.522644602051214990,	
+-0.522687228930659110,	-0.522729854503385600,	-0.522772478769287010,	-0.522815101728257290,	-0.522857723380190100,	-0.522900343724978290,	-0.522942962762515620,	-0.522985580492695610,	
+-0.523028196915411580,	-0.523070812030557390,	-0.523113425838025780,	-0.523156038337710740,	-0.523198649529505900,	-0.523241259413304020,	-0.523283867988999060,	-0.523326475256484350,	
+-0.523369081215653950,	-0.523411685866400410,	-0.523454289208617580,	-0.523496891242199560,	-0.523539491967038860,	-0.523582091383029360,	-0.523624689490064690,	-0.523667286288038270,	
+-0.523709881776844080,	-0.523752475956374750,	-0.523795068826524270,	-0.523837660387186490,	-0.523880250638254160,	-0.523922839579621160,	-0.523965427211181110,	-0.524008013532827550,	
+-0.524050598544454240,	-0.524093182245954140,	-0.524135764637221340,	-0.524178345718148920,	-0.524220925488630530,	-0.524263503948559810,	-0.524306081097830390,	-0.524348656936336030,	
+-0.524391231463969820,	-0.524433804680625390,	-0.524476376586196950,	-0.524518947180577120,	-0.524561516463659890,	-0.524604084435338900,	-0.524646651095507680,	-0.524689216444060300,	
+-0.524731780480889420,	-0.524774343205889120,	-0.524816904618953250,	-0.524859464719974910,	-0.524902023508847740,	-0.524944580985465590,	-0.524987137149722340,	-0.525029692001510950,	
+-0.525072245540725290,	-0.525114797767259330,	-0.525157348681006050,	-0.525199898281859420,	-0.525242446569712970,	-0.525284993544460450,	-0.525327539205995840,	-0.525370083554212000,	
+-0.525412626589002900,	-0.525455168310262730,	-0.525497708717884150,	-0.525540247811761340,	-0.525582785591787950,	-0.525625322057857500,	-0.525667857209864200,	-0.525710391047700790,	
+-0.525752923571261470,	-0.525795454780440210,	-0.525837984675129990,	-0.525880513255224780,	-0.525923040520618220,	-0.525965566471204520,	-0.526008091106876410,	-0.526050614427528210,	
+-0.526093136433053780,	-0.526135657123346090,	-0.526178176498299340,	-0.526220694557807180,	-0.526263211301763230,	-0.526305726730061600,	-0.526348240842595240,	-0.526390753639258360,	
+-0.526433265119944930,	-0.526475775284548030,	-0.526518284132961640,	-0.526560791665079520,	-0.526603297880795520,	-0.526645802780003500,	-0.526688306362596670,	-0.526730808628469440,	
+-0.526773309577514890,	-0.526815809209627010,	-0.526858307524699530,	-0.526900804522626440,	-0.526943300203301600,	-0.526985794566618200,	-0.527028287612470230,	-0.527070779340751970,	
+-0.527113269751356420,	-0.527155758844177650,	-0.527198246619109410,	-0.527240733076045690,	-0.527283218214880440,	-0.527325702035506770,	-0.527368184537818860,	-0.527410665721710910,	
+-0.527453145587075790,	-0.527495624133807910,	-0.527538101361801020,	-0.527580577270949090,	-0.527623051861145440,	-0.527665525132284150,	-0.527707997084259530,	-0.527750467716964430,	
+-0.527792937030293170,	-0.527835405024139500,	-0.527877871698397390,	-0.527920337052961040,	-0.527962801087723310,	-0.528005263802578730,	-0.528047725197421270,	-0.528090185272144240,	
+-0.528132644026641620,	-0.528175101460807370,	-0.528217557574535480,	-0.528260012367720020,	-0.528302465840254200,	-0.528344917992032200,	-0.528387368822948230,	-0.528429818332895480,	
+-0.528472266521768150,	-0.528514713389460210,	-0.528557158935865860,	-0.528599603160878280,	-0.528642046064391580,	-0.528684487646300270,	-0.528726927906497220,	-0.528769366844876960,	
+-0.528811804461333250,	-0.528854240755760040,	-0.528896675728051550,	-0.528939109378101070,	-0.528981541705802800,	-0.529023972711051060,	-0.529066402393738920,	-0.529108830753760920,	
+-0.529151257791010690,	-0.529193683505382430,	-0.529236107896770340,	-0.529278530965067500,	-0.529320952710168770,	-0.529363373131967350,	-0.529405792230357440,	-0.529448210005233010,	
+-0.529490626456488030,	-0.529533041584016930,	-0.529575455387712890,	-0.529617867867470120,	-0.529660279023183130,	-0.529702688854745030,	-0.529745097362050220,	-0.529787504544992680,	
+-0.529829910403466280,	-0.529872314937365640,	-0.529914718146583750,	-0.529957120031015030,	-0.529999520590553890,	-0.530041919825093630,	-0.530084317734528580,	-0.530126714318752690,	
+-0.530169109577660390,	-0.530211503511144990,	-0.530253896119100790,	-0.530296287401422210,	-0.530338677358002550,	-0.530381065988736240,	-0.530423453293517260,	-0.530465839272239560,	
+-0.530508223924797680,	-0.530550607251084940,	-0.530592989250995630,	-0.530635369924424170,	-0.530677749271263990,	-0.530720127291409380,	-0.530762503984754440,	-0.530804879351193360,	
+-0.530847253390620330,	-0.530889626102928890,	-0.530931997488013340,	-0.530974367545768100,	-0.531016736276086590,	-0.531059103678863330,	-0.531101469753992310,	-0.531143834501367930,	
+-0.531186197920883510,	-0.531228560012433680,	-0.531270920775912870,	-0.531313280211214380,	-0.531355638318232630,	-0.531397995096861810,	-0.531440350546996010,	-0.531482704668529650,	
+-0.531525057461356250,	-0.531567408925370130,	-0.531609759060465930,	-0.531652107866536830,	-0.531694455343477590,	-0.531736801491182190,	-0.531779146309544810,	-0.531821489798459890,	
+-0.531863831957820830,	-0.531906172787522610,	-0.531948512287458650,	-0.531990850457523260,	-0.532033187297610840,	-0.532075522807615500,	-0.532117856987431640,	-0.532160189836952790,	
+-0.532202521356073490,	-0.532244851544688260,	-0.532287180402690520,	-0.532329507929974800,	-0.532371834126435290,	-0.532414158991966200,	-0.532456482526462160,	-0.532498804729816480,	
+-0.532541125601923790,	-0.532583445142678750,	-0.532625763351974650,	-0.532668080229706130,	-0.532710395775767400,	-0.532752709990053090,	-0.532795022872456610,	-0.532837334422872620,	
+-0.532879644641195640,	-0.532921953527319080,	-0.532964261081137810,	-0.533006567302545810,	-0.533048872191437370,	-0.533091175747707150,	-0.533133477971248550,	-0.533175778861956330,	
+-0.533218078419725020,	-0.533260376644448140,	-0.533302673536020230,	-0.533344969094335710,	-0.533387263319288870,	-0.533429556210774150,	-0.533471847768685170,	-0.533514137992916580,	
+-0.533556426883363020,	-0.533598714439917910,	-0.533641000662476110,	-0.533683285550931920,	-0.533725569105179760,	-0.533767851325113290,	-0.533810132210627230,	-0.533852411761616240,	
+-0.533894689977973740,	-0.533936966859594580,	-0.533979242406373070,	-0.534021516618203410,	-0.534063789494980350,	-0.534106061036597410,	-0.534148331242949250,	-0.534190600113930710,	
+-0.534232867649435340,	-0.534275133849357760,	-0.534317398713592300,	-0.534359662242033460,	-0.534401924434575680,	-0.534444185291112820,	-0.534486444811539840,	-0.534528702995750390,	
+-0.534570959843639230,	-0.534613215355100650,	-0.534655469530028960,	-0.534697722368319030,	-0.534739973869864380,	-0.534782224034559770,	-0.534824472862300060,	-0.534866720352978780,	
+-0.534908966506490670,	-0.534951211322730160,	-0.534993454801591550,	-0.535035696942969820,	-0.535077937746758380,	-0.535120177212852100,	-0.535162415341145730,	-0.535204652131533010,	
+-0.535246887583908590,	-0.535289121698167000,	-0.535331354474202990,	-0.535373585911910200,	-0.535415816011183380,	-0.535458044771917500,	-0.535500272194006090,	-0.535542498277344010,	
+-0.535584723021825690,	-0.535626946427345540,	-0.535669168493798420,	-0.535711389221077970,	-0.535753608609079060,	-0.535795826657696540,	-0.535838043366824060,	-0.535880258736356470,	
+-0.535922472766188210,	-0.535964685456213790,	-0.536006896806327960,	-0.536049106816424590,	-0.536091315486398880,	-0.536133522816144460,	-0.536175728805556200,	-0.536217933454528620,	
+-0.536260136762956250,	-0.536302338730733850,	-0.536344539357755280,	-0.536386738643915280,	-0.536428936589108950,	-0.536471133193229810,	-0.536513328456172830,	-0.536555522377832550,	
+-0.536597714958103490,	-0.536639906196880510,	-0.536682096094057370,	-0.536724284649529040,	-0.536766471863190260,	-0.536808657734935020,	-0.536850842264658180,	-0.536893025452254150,	
+-0.536935207297617900,	-0.536977387800643300,	-0.537019566961225210,	-0.537061744779258610,	-0.537103921254637350,	-0.537146096387256190,	-0.537188270177009760,	-0.537230442623792710,	
+-0.537272613727499900,	-0.537314783488025190,	-0.537356951905263560,	-0.537399118979109970,	-0.537441284709458070,	-0.537483449096203050,	-0.537525612139239330,	-0.537567773838461660,	
+-0.537609934193764900,	-0.537652093205042920,	-0.537694250872190690,	-0.537736407195103290,	-0.537778562173674480,	-0.537820715807799220,	-0.537862868097372160,	-0.537905019042288270,	
+-0.537947168642441520,	-0.537989316897726890,	-0.538031463808039230,	-0.538073609373272640,	-0.538115753593321980,	-0.538157896468081990,	-0.538200037997447200,	-0.538242178181312700,	
+-0.538284317019572360,	-0.538326454512121240,	-0.538368590658854340,	-0.538410725459665620,	-0.538452858914450160,	-0.538494991023102390,	-0.538537121785517270,	-0.538579251201589670,	
+-0.538621379271213560,	-0.538663505994284470,	-0.538705631370696160,	-0.538747755400343700,	-0.538789878083121950,	-0.538831999418925460,	-0.538874119407649400,	-0.538916238049187650,	
+-0.538958355343435280,	-0.539000471290287390,	-0.539042585889638050,	-0.539084699141382130,	-0.539126811045414490,	-0.539168921601629770,	-0.539211030809923280,	-0.539253138670188650,	
+-0.539295245182321300,	-0.539337350346216220,	-0.539379454161767250,	-0.539421556628869810,	-0.539463657747418330,	-0.539505757517308230,	-0.539547855938433240,	-0.539589953010688680,	
+-0.539632048733969640,	-0.539674143108169970,	-0.539716236133185090,	-0.539758327808909530,	-0.539800418135238160,	-0.539842507112066160,	-0.539884594739287520,	-0.539926681016797310,	
+-0.539968765944490840,	-0.540010849522262080,	-0.540052931750006240,	-0.540095012627617940,	-0.540137092154992170,	-0.540179170332024120,	-0.540221247158607750,	-0.540263322634638170,	
+-0.540305396760010770,	-0.540347469534619430,	-0.540389540958359450,	-0.540431611031125580,	-0.540473679752813020,	-0.540515747123315960,	-0.540557813142529490,	-0.540599877810348910,	
+-0.540641941126668300,	-0.540684003091382760,	-0.540726063704387250,	-0.540768122965576530,	-0.540810180874845890,	-0.540852237432089430,	-0.540894292637202460,	-0.540936346490080040,	
+-0.540978398990616390,	-0.541020450138706700,	-0.541062499934245930,	-0.541104548377128960,	-0.541146595467250970,	-0.541188641204506050,	-0.541230685588789950,	-0.541272728619996870,	
+-0.541314770298021770,	-0.541356810622759870,	-0.541398849594105890,	-0.541440887211955160,	-0.541482923476201970,	-0.541524958386741310,	-0.541566991943468690,	-0.541609024146278210,	
+-0.541651054995065160,	-0.541693084489724420,	-0.541735112630151060,	-0.541777139416240280,	-0.541819164847886280,	-0.541861188924984360,	-0.541903211647429830,	-0.541945233015116880,	
+-0.541987253027940820,	-0.542029271685796730,	-0.542071288988579700,	-0.542113304936184150,	-0.542155319528505380,	-0.542197332765438690,	-0.542239344646878170,	-0.542281355172719360,	
+-0.542323364342857220,	-0.542365372157186610,	-0.542407378615602950,	-0.542449383718000440,	-0.542491387464274500,	-0.542533389854320540,	-0.542575390888032640,	-0.542617390565306220,	
+-0.542659388886036490,	-0.542701385850118180,	-0.542743381457446720,	-0.542785375707916520,	-0.542827368601422890,	-0.542869360137861130,	-0.542911350317125670,	-0.542953339139111810,	
+-0.542995326603714630,	-0.543037312710829450,	-0.543079297460350660,	-0.543121280852173590,	-0.543163262886193770,	-0.543205243562305370,	-0.543247222880403830,	-0.543289200840384230,	
+-0.543331177442141660,	-0.543373152685571510,	-0.543415126570568120,	-0.543457099097026890,	-0.543499070264843340,	-0.543541040073911690,	-0.543583008524127440,	-0.543624975615385700,	
+-0.543666941347581530,	-0.543708905720610370,	-0.543750868734366510,	-0.543792830388745930,	-0.543834790683642820,	-0.543876749618952830,	-0.543918707194570920,	-0.543960663410392180,	
+-0.544002618266312240,	-0.544044571762225320,	-0.544086523898027030,	-0.544128474673612810,	-0.544170424088877060,	-0.544212372143715100,	-0.544254318838022330,	-0.544296264171693740,	
+-0.544338208144624860,	-0.544380150756710090,	-0.544422092007844970,	-0.544464031897924920,	-0.544505970426844450,	-0.544547907594499110,	-0.544589843400783980,	-0.544631777845594580,	
+-0.544673710928825330,	-0.544715642650371870,	-0.544757573010129610,	-0.544799502007993100,	-0.544841429643857840,	-0.544883355917618940,	-0.544925280829171800,	-0.544967204378411730,	
+-0.545009126565233260,	-0.545051047389531920,	-0.545092966851203450,	-0.545134884950142170,	-0.545176801686243610,	-0.545218717059403170,	-0.545260631069515830,	-0.545302543716477240,	
+-0.545344455000182030,	-0.545386364920525610,	-0.545428273477403750,	-0.545470180670710740,	-0.545512086500342330,	-0.545553990966193610,	-0.545595894068160450,	-0.545637795806137030,	
+-0.545679696180019210,	-0.545721595189702420,	-0.545763492835081410,	-0.545805389116051590,	-0.545847284032508260,	-0.545889177584346850,	-0.545931069771462770,	-0.545972960593750670,	
+-0.546014850051106170,	-0.546056738143424920,	-0.546098624870601350,	-0.546140510232531300,	-0.546182394229110080,	-0.546224276860232780,	-0.546266158125795150,	-0.546308038025691720,	
+-0.546349916559818570,	-0.546391793728070340,	-0.546433669530342560,	-0.546475543966530640,	-0.546517417036529900,	-0.546559288740235850,	-0.546601159077543360,	-0.546643028048347860,	
+-0.546684895652545190,	-0.546726761890030000,	-0.546768626760697820,	-0.546810490264444060,	-0.546852352401164140,	-0.546894213170753600,	-0.546936072573107280,	-0.546977930608120720,	
+-0.547019787275689670,	-0.547061642575708880,	-0.547103496508073880,	-0.547145349072680200,	-0.547187200269423470,	-0.547229050098198440,	-0.547270898558900760,	-0.547312745651426180,	
+-0.547354591375669330,	-0.547396435731526080,	-0.547438278718891720,	-0.547480120337661690,	-0.547521960587731620,	-0.547563799468996360,	-0.547605636981351560,	-0.547647473124693080,	
+-0.547689307898915570,	-0.547731141303914760,	-0.547772973339586080,	-0.547814804005825050,	-0.547856633302527320,	-0.547898461229587630,	-0.547940287786902180,	-0.547982112974365610,	
+-0.548023936791873780,	-0.548065759239321990,	-0.548107580316606000,	-0.548149400023621340,	-0.548191218360262740,	-0.548233035326426200,	-0.548274850922007340,	-0.548316665146901140,	
+-0.548358478001003120,	-0.548400289484208940,	-0.548442099596414100,	-0.548483908337514370,	-0.548525715707404490,	-0.548567521705980220,	-0.548609326333137640,	-0.548651129588771380,	
+-0.548692931472777200,	-0.548734731985050740,	-0.548776531125487850,	-0.548818328893983300,	-0.548860125290432820,	-0.548901920314732390,	-0.548943713966776880,	-0.548985506246462030,	
+-0.549027297153683480,	-0.549069086688336650,	-0.549110874850317400,	-0.549152661639520700,	-0.549194447055842310,	-0.549236231099178180,	-0.549278013769423090,	-0.549319795066472990,	
+-0.549361574990223310,	-0.549403353540569790,	-0.549445130717408190,	-0.549486906520633480,	-0.549528680950141400,	-0.549570454005828050,	-0.549612225687588160,	-0.549653995995317720,	
+-0.549695764928912370,	-0.549737532488267950,	-0.549779298673279240,	-0.549821063483842300,	-0.549862826919853110,	-0.549904588981206530,	-0.549946349667798430,	-0.549988108979524440,	
+-0.550029866916280200,	-0.550071623477961680,	-0.550113378664463640,	-0.550155132475682260,	-0.550196884911513310,	-0.550238635971851850,	-0.550280385656593870,	-0.550322133965634790,	
+-0.550363880898870450,	-0.550405626456196730,	-0.550447370637508700,	-0.550489113442702460,	-0.550530854871673190,	-0.550572594924316650,	-0.550614333600528690,	-0.550656070900204960,	
+-0.550697806823241320,	-0.550739541369532850,	-0.550781274538975520,	-0.550823006331465410,	-0.550864736746897400,	-0.550906465785167440,	-0.550948193446171410,	-0.550989919729804930,	
+-0.551031644635963990,	-0.551073368164543550,	-0.551115090315439700,	-0.551156811088548420,	-0.551198530483764880,	-0.551240248500984850,	-0.551281965140104410,	-0.551323680401019310,	
+-0.551365394283624630,	-0.551407106787816460,	-0.551448817913490870,	-0.551490527660542960,	-0.551532236028868580,	-0.551573943018363710,	-0.551615648628924090,	-0.551657352860445590,	
+-0.551699055712823290,	-0.551740757185953390,	-0.551782457279732070,	-0.551824155994054100,	-0.551865853328815880,	-0.551907549283912950,	-0.551949243859241050,	-0.551990937054696600,	
+-0.552032628870174350,	-0.552074319305570490,	-0.552116008360781230,	-0.552157696035701530,	-0.552199382330227690,	-0.552241067244255370,	-0.552282750777680740,	-0.552324432930398790,	
+-0.552366113702305820,	-0.552407793093298020,	-0.552449471103270250,	-0.552491147732118830,	-0.552532822979739490,	-0.552574496846028220,	-0.552616169330880980,	-0.552657840434192970,	
+-0.552699510155860390,	-0.552741178495779420,	-0.552782845453845040,	-0.552824511029953560,	-0.552866175224000940,	-0.552907838035882730,	-0.552949499465495320,	-0.552991159512733810,	
+-0.553032818177494830,	-0.553074475459673360,	-0.553116131359165820,	-0.553157785875867840,	-0.553199439009675390,	-0.553241090760484780,	-0.553282741128190980,	-0.553324390112690410,	
+-0.553366037713879160,	-0.553407683931652520,	-0.553449328765906690,	-0.553490972216537420,	-0.553532614283440800,	-0.553574254966513020,	-0.553615894265649280,	-0.553657532180745650,	
+-0.553699168711698660,	-0.553740803858403410,	-0.553782437620756070,	-0.553824069998652750,	-0.553865700991989510,	-0.553907330600661660,	-0.553948958824565520,	-0.553990585663597380,	
+-0.554032211117652440,	-0.554073835186626900,	-0.554115457870416720,	-0.554157079168917990,	-0.554198699082026900,	-0.554240317609638660,	-0.554281934751649660,	-0.554323550507956230,	
+-0.554365164878453440,	-0.554406777863037830,	-0.554448389461605240,	-0.554489999674051770,	-0.554531608500273610,	-0.554573215940165950,	-0.554614821993625440,	-0.554656426660548150,	
+-0.554698029940829400,	-0.554739631834365590,	-0.554781232341052700,	-0.554822831460787150,	-0.554864429193464130,	-0.554906025538979940,	-0.554947620497231120,	-0.554989214068112970,	
+-0.555030806251521680,	-0.555072397047353340,	-0.555113986455504140,	-0.555155574475870270,	-0.555197161108347050,	-0.555238746352830990,	-0.555280330209218410,	-0.555321912677404720,	
+-0.555363493757286110,	-0.555405073448758890,	-0.555446651751718920,	-0.555488228666062730,	-0.555529804191685520,	-0.555571378328484240,	-0.555612951076354110,	-0.555654522435191640,	
+-0.555696092404892820,	-0.555737660985353820,	-0.555779228176470960,	-0.555820793978139660,	-0.555862358390256440,	-0.555903921412717720,	-0.555945483045418800,	-0.555987043288256100,	
+-0.556028602141125820,	-0.556070159603924140,	-0.556111715676547270,	-0.556153270358890840,	-0.556194823650851270,	-0.556236375552324970,	-0.556277926063207360,	-0.556319475183394860,	
+-0.556361022912783780,	-0.556402569251270410,	-0.556444114198750390,	-0.556485657755119930,	-0.556527199920275770,	-0.556568740694113330,	-0.556610280076528910,	-0.556651818067418810,	
+-0.556693354666679130,	-0.556734889874206500,	-0.556776423689896330,	-0.556817956113645040,	-0.556859487145349160,	-0.556901016784904330,	-0.556942545032206860,	-0.556984071887153040,	
+-0.557025597349639080,	-0.557067121419561380,	-0.557108644096815600,	-0.557150165381298250,	-0.557191685272905860,	-0.557233203771533850,	-0.557274720877078740,	-0.557316236589436960,	
+-0.557357750908504920,	-0.557399263834178040,	-0.557440775366353170,	-0.557482285504926620,	-0.557523794249794040,	-0.557565301600851940,	-0.557606807557996520,	-0.557648312121124200,	
+-0.557689815290131400,	-0.557731317064913750,	-0.557772817445367770,	-0.557814316431390120,	-0.557855814022876320,	-0.557897310219722890,	-0.557938805021826360,	-0.557980298429082700,	
+-0.558021790441388670,	-0.558063281058639780,	-0.558104770280733130,	-0.558146258107564130,	-0.558187744539029530,	-0.558229229575025520,	-0.558270713215448520,	-0.558312195460194950,	
+-0.558353676309160660,	-0.558395155762242080,	-0.558436633819336060,	-0.558478110480338130,	-0.558519585745144820,	-0.558561059613652540,	-0.558602532085757720,	-0.558644003161356870,	
+-0.558685472840345640,	-0.558726941122620670,	-0.558768408008078810,	-0.558809873496615590,	-0.558851337588127550,	-0.558892800282511320,	-0.558934261579663310,	-0.558975721479479380,	
+-0.559017179981856070,	-0.559058637086690240,	-0.559100092793877510,	-0.559141547103314430,	-0.559183000014897510,	-0.559224451528523180,	-0.559265901644087960,	-0.559307350361487710,	
+-0.559348797680619070,	-0.559390243601378680,	-0.559431688123662510,	-0.559473131247366970,	-0.559514572972388710,	-0.559556013298623920,	-0.559597452225969460,	-0.559638889754321080,	
+-0.559680325883575860,	-0.559721760613629440,	-0.559763193944378570,	-0.559804625875719660,	-0.559846056407549360,	-0.559887485539764200,	-0.559928913272259910,	-0.559970339604933360,	
+-0.560011764537681310,	-0.560053188070399610,	-0.560094610202984790,	-0.560136030935333480,	-0.560177450267342110,	-0.560218868198907540,	-0.560260284729925400,	-0.560301699860292550,	
+-0.560343113589905740,	-0.560384525918660840,	-0.560425936846454590,	-0.560467346373183520,	-0.560508754498744160,	-0.560550161223033140,	-0.560591566545946440,	-0.560632970467381140,	
+-0.560674372987233110,	-0.560715774105399190,	-0.560757173821775700,	-0.560798572136259390,	-0.560839969048746890,	-0.560881364559134180,	-0.560922758667318110,	-0.560964151373195440,	
+-0.561005542676662030,	-0.561046932577614840,	-0.561088321075950190,	-0.561129708171564820,	-0.561171093864355600,	-0.561212478154218150,	-0.561253861041049570,	-0.561295242524746720,	
+-0.561336622605205340,	-0.561378001282322400,	-0.561419378555994550,	-0.561460754426118540,	-0.561502128892590320,	-0.561543501955306780,	-0.561584873614164870,	-0.561626243869060350,	
+-0.561667612719890190,	-0.561708980166551130,	-0.561750346208939490,	-0.561791710846952450,	-0.561833074080485660,	-0.561874435909436310,	-0.561915796333701150,	-0.561957155353176140,	
+-0.561998512967758270,	-0.562039869177344050,	-0.562081223981830250,	-0.562122577381113710,	-0.562163929375090410,	-0.562205279963657540,	-0.562246629146711200,	-0.562287976924148340,	
+-0.562329323295865380,	-0.562370668261759190,	-0.562412011821726730,	-0.562453353975663870,	-0.562494694723467580,	-0.562536034065034940,	-0.562577372000261810,	-0.562618708529045390,	
+-0.562660043651282080,	-0.562701377366868650,	-0.562742709675702170,	-0.562784040577678500,	-0.562825370072694840,	-0.562866698160648050,	-0.562908024841434210,	-0.562949350114950180,	
+-0.562990673981092930,	-0.563031996439759210,	-0.563073317490845220,	-0.563114637134247920,	-0.563155955369864400,	-0.563197272197590640,	-0.563238587617323700,	-0.563279901628960240,	
+-0.563321214232397120,	-0.563362525427531290,	-0.563403835214258740,	-0.563445143592476660,	-0.563486450562082020,	-0.563527756122970900,	-0.563569060275040390,	-0.563610363018187230,	
+-0.563651664352308290,	-0.563692964277300420,	-0.563734262793059830,	-0.563775559899483470,	-0.563816855596468660,	-0.563858149883911360,	-0.563899442761708670,	-0.563940734229757430,	
+-0.563982024287954630,	-0.564023312936196450,	-0.564064600174379980,	-0.564105886002402410,	-0.564147170420159720,	-0.564188453427549090,	-0.564229735024467380,	-0.564271015210811240,	
+-0.564312293986477980,	-0.564353571351363660,	-0.564394847305365380,	-0.564436121848380320,	-0.564477394980304580,	-0.564518666701035450,	-0.564559937010469580,	-0.564601205908503930,	
+-0.564642473395035480,	-0.564683739469960640,	-0.564725004133176720,	-0.564766267384580020,	-0.564807529224067520,	-0.564848789651536290,	-0.564890048666883080,	-0.564931306270005100,	
+-0.564972562460798520,	-0.565013817239160550,	-0.565055070604988270,	-0.565096322558178100,	-0.565137573098627000,	-0.565178822226232060,	-0.565220069940890020,	-0.565261316242498200,	
+-0.565302561130952670,	-0.565343804606150860,	-0.565385046667989830,	-0.565426287316365790,	-0.565467526551176050,	-0.565508764372317450,	-0.565550000779687310,	-0.565591235773181930,	
+-0.565632469352698290,	-0.565673701518134010,	-0.565714932269384960,	-0.565756161606348670,	-0.565797389528922000,	-0.565838616037001810,	-0.565879841130485390,	-0.565921064809269070,	
+-0.565962287073250030,	-0.566003507922325680,	-0.566044727356392220,	-0.566085945375346960,	-0.566127161979086750,	-0.566168377167508670,	-0.566209590940510040,	-0.566250803297987050,	
+-0.566292014239837100,	-0.566333223765957410,	-0.566374431876244370,	-0.566415638570595180,	-0.566456843848906930,	-0.566498047711076920,	-0.566539250157001350,	-0.566580451186577740,	
+-0.566621650799703390,	-0.566662848996274500,	-0.566704045776188490,	-0.566745241139342440,	-0.566786435085633200,	-0.566827627614958200,	-0.566868818727213840,	-0.566910008422297440,	
+-0.566951196700106410,	-0.566992383560536940,	-0.567033569003486560,	-0.567074753028852240,	-0.567115935636531070,	-0.567157116826420450,	-0.567198296598416580,	-0.567239474952417440,	
+-0.567280651888319110,	-0.567321827406019220,	-0.567363001505414850,	-0.567404174186402880,	-0.567445345448880810,	-0.567486515292745080,	-0.567527683717893080,	-0.567568850724222250,	
+-0.567610016311628770,	-0.567651180480010400,	-0.567692343229264100,	-0.567733504559286840,	-0.567774664469976150,	-0.567815822961228570,	-0.567856980032941380,	-0.567898135685012130,	
+-0.567939289917337110,	-0.567980442729813850,	-0.568021594122339550,	-0.568062744094811610,	-0.568103892647126460,	-0.568145039779181520,	-0.568186185490874410,	-0.568227329782101440,	
+-0.568268472652760150,	-0.568309614102747720,	-0.568350754131961230,	-0.568391892740298220,	-0.568433029927655100,	-0.568474165693929390,	-0.568515300039018620,	-0.568556432962819320,	
+-0.568597564465228800,	-0.568638694546144460,	-0.568679823205463400,	-0.568720950443083130,	-0.568762076258900070,	-0.568803200652811870,	-0.568844323624716040,	-0.568885445174509010,	
+-0.568926565302088410,	-0.568967684007351430,	-0.569008801290195490,	-0.569049917150517230,	-0.569091031588214170,	-0.569132144603183950,	-0.569173256195323000,	-0.569214366364528820,	
+-0.569255475110698740,	-0.569296582433730050,	-0.569337688333520160,	-0.569378792809965840,	-0.569419895862964380,	-0.569460997492413630,	-0.569502097698210030,	-0.569543196480251200,	
+-0.569584293838434340,	-0.569625389772656750,	-0.569666484282816080,	-0.569707577368808730,	-0.569748669030532890,	-0.569789759267885000,	-0.569830848080762680,	-0.569871935469063340,	
+-0.569913021432684070,	-0.569954105971522630,	-0.569995189085475530,	-0.570036270774440520,	-0.570077351038315140,	-0.570118429876996120,	-0.570159507290380900,	-0.570200583278366980,	
+-0.570241657840851570,	-0.570282730977732410,	-0.570323802688906030,	-0.570364872974270190,	-0.570405941833722510,	-0.570447009267159630,	-0.570488075274479200,	-0.570529139855578520,	
+-0.570570203010355440,	-0.570611264738706490,	-0.570652325040529320,	-0.570693383915721770,	-0.570734441364180390,	-0.570775497385802800,	-0.570816551980486530,	-0.570857605148128890,	
+-0.570898656888627620,	-0.570939707201879370,	-0.570980756087781760,	-0.571021803546232780,	-0.571062849577128830,	-0.571103894180367670,	-0.571144937355846930,	-0.571185979103463690,	
+-0.571227019423115930,	-0.571268058314700290,	-0.571309095778114510,	-0.571350131813256330,	-0.571391166420022520,	-0.571432199598310710,	-0.571473231348018420,	-0.571514261669043400,	
+-0.571555290561282400,	-0.571596318024633180,	-0.571637344058993580,	-0.571678368664260140,	-0.571719391840330830,	-0.571760413587103060,	-0.571801433904474240,	-0.571842452792342140,	
+-0.571883470250603600,	-0.571924486279156370,	-0.571965500877898330,	-0.572006514046726200,	-0.572047525785537640,	-0.572088536094230380,	-0.572129544972701740,	-0.572170552420849690,	
+-0.572211558438570740,	-0.572252563025763330,	-0.572293566182324190,	-0.572334567908151070,	-0.572375568203141620,	-0.572416567067193240,	-0.572457564500203690,	-0.572498560502069930,	
+-0.572539555072689830,	-0.572580548211961140,	-0.572621539919780710,	-0.572662530196046520,	-0.572703519040655860,	-0.572744506453506500,	-0.572785492434496170,	-0.572826476983521850,	
+-0.572867460100481280,	-0.572908441785272340,	-0.572949422037792090,	-0.572990400857938180,	-0.573031378245608350,	-0.573072354200700350,	-0.573113328723111160,	-0.573154301812738630,	
+-0.573195273469480630,	-0.573236243693234230,	-0.573277212483897070,	-0.573318179841367010,	-0.573359145765541480,	-0.573400110256318430,	-0.573441073313594730,	-0.573482034937268240,	
+-0.573522995127237150,	-0.573563953883398200,	-0.573604911205649380,	-0.573645867093888210,	-0.573686821548012430,	-0.573727774567920010,	-0.573768726153507710,	-0.573809676304673940,	
+-0.573850625021315670,	-0.573891572303330880,	-0.573932518150617080,	-0.573973462563072020,	-0.574014405540593690,	-0.574055347083078930,	-0.574096287190425820,	-0.574137225862532350,	
+-0.574178163099295480,	-0.574219098900613180,	-0.574260033266383090,	-0.574300966196502950,	-0.574341897690870740,	-0.574382827749383540,	-0.574423756371939100,	-0.574464683558435720,	
+-0.574505609308770260,	-0.574546533622840800,	-0.574587456500544990,	-0.574628377941780900,	-0.574669297946445500,	-0.574710216514436880,	-0.574751133645653110,	-0.574792049339991060,	
+-0.574832963597348920,	-0.574873876417624330,	-0.574914787800715140,	-0.574955697746519220,	-0.574996606254933870,	-0.575037513325856840,	-0.575078418959186430,	-0.575119323154819620,	
+-0.575160225912654590,	-0.575201127232588870,	-0.575242027114520440,	-0.575282925558347260,	-0.575323822563966300,	-0.575364718131275880,	-0.575405612260174060,	-0.575446504950557820,	
+-0.575487396202325250,	-0.575528286015374310,	-0.575569174389602980,	-0.575610061324908330,	-0.575650946821188450,	-0.575691830878341640,	-0.575732713496264870,	-0.575773594674856340,	
+-0.575814474414013900,	-0.575855352713635190,	-0.575896229573618410,	-0.575937104993860750,	-0.575977978974260400,	-0.576018851514715320,	-0.576059722615122840,	-0.576100592275381020,	
+-0.576141460495387720,	-0.576182327275040820,	-0.576223192614238490,	-0.576264056512877710,	-0.576304918970857230,	-0.576345779988074010,	-0.576386639564426370,	-0.576427497699812160,	
+-0.576468354394129250,	-0.576509209647275700,	-0.576550063459148830,	-0.576590915829646830,	-0.576631766758667790,	-0.576672616246109100,	-0.576713464291868870,	-0.576754310895844840,	
+-0.576795156057935190,	-0.576835999778037900,	-0.576876842056050280,	-0.576917682891870620,	-0.576958522285397010,	-0.576999360236526870,	-0.577040196745158160,	-0.577081031811189080,	
+-0.577121865434517820,	-0.577162697615041460,	-0.577203528352658310,	-0.577244357647266780,	-0.577285185498763950,	-0.577326011907048130,	-0.577366836872017400,	-0.577407660393569500,	
+-0.577448482471602740,	-0.577489303106014540,	-0.577530122296702970,	-0.577570940043566570,	-0.577611756346502410,	-0.577652571205408800,	-0.577693384620183830,	-0.577734196590725340,	
+-0.577775007116931750,	-0.577815816198700370,	-0.577856623835929280,	-0.577897430028517120,	-0.577938234776360970,	-0.577979038079359240,	-0.578019839937410020,	-0.578060640350411380,	
+-0.578101439318260860,	-0.578142236840856860,	-0.578183032918097470,	-0.578223827549880220,	-0.578264620736103300,	-0.578305412476664890,	-0.578346202771462980,	-0.578386991620395860,	
+-0.578427779023360960,	-0.578468564980256560,	-0.578509349490981210,	-0.578550132555432080,	-0.578590914173507500,	-0.578631694345105750,	-0.578672473070124820,	-0.578713250348462990,	
+-0.578754026180017590,	-0.578794800564687570,	-0.578835573502370250,	-0.578876344992963920,	-0.578917115036366780,	-0.578957883632476800,	-0.578998650781192500,	-0.579039416482411200,	
+-0.579080180736031290,	-0.579120943541951430,	-0.579161704900068800,	-0.579202464810281810,	-0.579243223272488780,	-0.579283980286587670,	-0.579324735852476900,	-0.579365489970053990,	
+-0.579406242639217360,	-0.579446993859865420,	-0.579487743631895700,	-0.579528491955206610,	-0.579569238829696240,	-0.579609984255263220,	-0.579650728231804860,	-0.579691470759219670,	
+-0.579732211837406200,	-0.579772951466261730,	-0.579813689645684920,	-0.579854426375573940,	-0.579895161655826890,	-0.579935895486342280,	-0.579976627867017540,	-0.580017358797751290,	
+-0.580058088278441960,	-0.580098816308987080,	-0.580139542889285040,	-0.580180268019234280,	-0.580220991698732760,	-0.580261713927679220,	-0.580302434705970980,	-0.580343154033506670,	
+-0.580383871910184810,	-0.580424588335902940,	-0.580465303310559570,	-0.580506016834053010,	-0.580546728906281670,	-0.580587439527143200,	-0.580628148696536120,	-0.580668856414359060,	
+-0.580709562680509440,	-0.580750267494885900,	-0.580790970857386730,	-0.580831672767910150,	-0.580872373226354770,	-0.580913072232618120,	-0.580953769786598630,	-0.580994465888195260,	
+-0.581035160537305310,	-0.581075853733827420,	-0.581116545477659900,	-0.581157235768701040,	-0.581197924606849380,	-0.581238611992002660,	-0.581279297924059750,	-0.581319982402918160,	
+-0.581360665428476640,	-0.581401347000633510,	-0.581442027119286940,	-0.581482705784335700,	-0.581523382995677300,	-0.581564058753210490,	-0.581604733056833910,	-0.581645405906445090,	
+-0.581686077301942770,	-0.581726747243225260,	-0.581767415730190860,	-0.581808082762738320,	-0.581848748340765280,	-0.581889412464170250,	-0.581930075132852110,	-0.581970736346708370,	
+-0.582011396105637790,	-0.582052054409538780,	-0.582092711258309970,	-0.582133366651849000,	-0.582174020590054630,	-0.582214673072825590,	-0.582255324100059420,	-0.582295973671655090,	
+-0.582336621787510780,	-0.582377268447524800,	-0.582417913651596120,	-0.582458557399622270,	-0.582499199691501990,	-0.582539840527134150,	-0.582580479906416260,	-0.582621117829247190,	
+-0.582661754295525360,	-0.582702389305149170,	-0.582743022858017270,	-0.582783654954027510,	-0.582824285593078640,	-0.582864914775069410,	-0.582905542499897460,	-0.582946168767461750,	
+-0.582986793577660590,	-0.583027416930392840,	-0.583068038825556020,	-0.583108659263049330,	-0.583149278242771190,	-0.583189895764619550,	-0.583230511828493170,	-0.583271126434290580,	
+-0.583311739581910070,	-0.583352351271250620,	-0.583392961502209870,	-0.583433570274686790,	-0.583474177588580110,	-0.583514783443787710,	-0.583555387840208220,	-0.583595990777740380,	
+-0.583636592256282500,	-0.583677192275733450,	-0.583717790835991070,	-0.583758387936954670,	-0.583798983578521890,	-0.583839577760591590,	-0.583880170483062400,	-0.583920761745832850,	
+-0.583961351548801690,	-0.584001939891866770,	-0.584042526774927070,	-0.584083112197881340,	-0.584123696160627540,	-0.584164278663064420,	-0.584204859705090620,	-0.584245439286604660,	
+-0.584286017407505520,	-0.584326594067690940,	-0.584367169267059890,	-0.584407743005511350,	-0.584448315282942940,	-0.584488886099253870,	-0.584529455454342540,	-0.584570023348107930,	
+-0.584610589780447890,	-0.584651154751261390,	-0.584691718260447300,	-0.584732280307903700,	-0.584772840893529210,	-0.584813400017222820,	-0.584853957678882820,	-0.584894513878408300,	
+-0.584935068615697110,	-0.584975621890648220,	-0.585016173703160720,	-0.585056724053132360,	-0.585097272940462210,	-0.585137820365048910,	-0.585178366326791100,	-0.585218910825587630,	
+-0.585259453861336600,	-0.585299995433937290,	-0.585340535543287580,	-0.585381074189286530,	-0.585421611371832800,	-0.585462147090825110,	-0.585502681346162350,	-0.585543214137742570,	
+-0.585583745465464660,	-0.585624275329227780,	-0.585664803728929930,	-0.585705330664470060,	-0.585745856135746810,	-0.585786380142658940,	-0.585826902685105510,	-0.585867423762984400,	
+-0.585907943376194780,	-0.585948461524635640,	-0.585988978208204950,	-0.586029493426801880,	-0.586070007180325090,	-0.586110519468673540,	-0.586151030291745420,	-0.586191539649439710,	
+-0.586232047541655590,	-0.586272553968290810,	-0.586313058929244790,	-0.586353562424416050,	-0.586394064453703460,	-0.586434565017005970,	-0.586475064114221790,	-0.586515561745249990,	
+-0.586556057909989550,	-0.586596552608338650,	-0.586637045840196380,	-0.586677537605461490,	-0.586718027904032710,	-0.586758516735809250,	-0.586799004100689190,	-0.586839489998571610,	
+-0.586879974429355580,	-0.586920457392939300,	-0.586960938889221960,	-0.587001418918102200,	-0.587041897479479210,	-0.587082374573251190,	-0.587122850199317200,	-0.587163324357576450,	
+-0.587203797047927020,	-0.587244268270268100,	-0.587284738024498430,	-0.587325206310516990,	-0.587365673128222960,	-0.587406138477514330,	-0.587446602358290380,	-0.587487064770450210,	
+-0.587527525713892110,	-0.587567985188515160,	-0.587608443194218230,	-0.587648899730900180,	-0.587689354798460300,	-0.587729808396796560,	-0.587770260525808720,	-0.587810711185394960,	
+-0.587851160375454260,	-0.587891608095885810,	-0.587932054346588240,	-0.587972499127460970,	-0.588012942438402080,	-0.588053384279310750,	-0.588093824650086420,	-0.588134263550627150,	
+-0.588174700980832130,	-0.588215136940600460,	-0.588255571429830870,	-0.588296004448422780,	-0.588336435996274280,	-0.588376866073284650,	-0.588417294679353330,	-0.588457721814378390,	
+-0.588498147478259010,	-0.588538571670894410,	-0.588578994392183750,	-0.588619415642025130,	-0.588659835420318080,	-0.588700253726961660,	-0.588740670561854420,	-0.588781085924895420,	
+-0.588821499815983640,	-0.588861912235018160,	-0.588902323181898280,	-0.588942732656522190,	-0.588983140658789320,	-0.589023547188598950,	-0.589063952245849400,	-0.589104355830439850,	
+-0.589144757942269500,	-0.589185158581237210,	-0.589225557747242500,	-0.589265955440183340,	-0.589306351659959480,	-0.589346746406470000,	-0.589387139679613310,	-0.589427531479288720,	
+-0.589467921805395420,	-0.589508310657832600,	-0.589548698036498560,	-0.589589083941292950,	-0.589629468372114830,	-0.589669851328862850,	-0.589710232811436090,	-0.589750612819733840,	
+-0.589790991353654980,	-0.589831368413099020,	-0.589871743997964380,	-0.589912118108150250,	-0.589952490743556270,	-0.589992861904080620,	-0.590033231589622950,	-0.590073599800082120,	
+-0.590113966535357300,	-0.590154331795347930,	-0.590194695579952300,	-0.590235057889070380,	-0.590275418722600360,	-0.590315778080441890,	-0.590356135962493920,	-0.590396492368655660,	
+-0.590436847298826510,	-0.590477200752904880,	-0.590517552730790210,	-0.590557903232382110,	-0.590598252257578780,	-0.590638599806279860,	-0.590678945878384540,	-0.590719290473791680,	
+-0.590759633592401130,	-0.590799975234110990,	-0.590840315398820980,	-0.590880654086430530,	-0.590920991296838060,	-0.590961327029943200,	-0.591001661285644910,	-0.591041994063842950,	
+-0.591082325364435500,	-0.591122655187322320,	-0.591162983532402930,	-0.591203310399575630,	-0.591243635788740060,	-0.591283959699795410,	-0.591324282132640880,	-0.591364603087175980,	
+-0.591404922563299240,	-0.591445240560910190,	-0.591485557079908350,	-0.591525872120192250,	-0.591566185681661530,	-0.591606497764215370,	-0.591646808367752850,	-0.591687117492173840,	
+-0.591727425137376530,	-0.591767731303260660,	-0.591808035989725870,	-0.591848339196670680,	-0.591888640923994620,	-0.591928941171596890,	-0.591969239939377220,	-0.592009537227234040,	
+-0.592049833035067090,	-0.592090127362775890,	-0.592130420210258970,	-0.592170711577416080,	-0.592211001464146290,	-0.592251289870349140,	-0.592291576795924040,	-0.592331862240769610,	
+-0.592372146204785620,	-0.592412428687871580,	-0.592452709689926140,	-0.592492989210848810,	-0.592533267250539120,	-0.592573543808896260,	-0.592613818885819880,	-0.592654092481208480,	
+-0.592694364594962390,	-0.592734635226979890,	-0.592774904377160960,	-0.592815172045404570,	-0.592855438231610350,	-0.592895702935677950,	-0.592935966157505880,	-0.592976227896993890,	
+-0.593016488154041730,	-0.593056746928547930,	-0.593097004220412230,	-0.593137260029534150,	-0.593177514355812780,	-0.593217767199148090,	-0.593258018559438600,	-0.593298268436584060,	
+-0.593338516830484220,	-0.593378763741037710,	-0.593419009168144270,	-0.593459253111703330,	-0.593499495571614630,	-0.593539736547776810,	-0.593579976040089610,	-0.593620214048452890,	
+-0.593660450572765290,	-0.593700685612926550,	-0.593740919168836090,	-0.593781151240393210,	-0.593821381827498000,	-0.593861610930048860,	-0.593901838547945760,	-0.593942064681088340,	
+-0.593982289329375470,	-0.594022512492706880,	-0.594062734170981990,	-0.594102954364100320,	-0.594143173071961520,	-0.594183390294464430,	-0.594223606031508920,	-0.594263820282994850,	
+-0.594304033048820730,	-0.594344244328886550,	-0.594384454123091820,	-0.594424662431336180,	-0.594464869253518600,	-0.594505074589538940,	-0.594545278439296830,	-0.594585480802691250,	
+-0.594625681679621930,	-0.594665881069988410,	-0.594706078973690100,	-0.594746275390627080,	-0.594786470320697980,	-0.594826663763802670,	-0.594866855719841100,	-0.594907046188712040,	
+-0.594947235170315340,	-0.594987422664550510,	-0.595027608671317210,	-0.595067793190515170,	-0.595107976222043260,	-0.595148157765801880,	-0.595188337821689670,	-0.595228516389606610,	
+-0.595268693469452330,	-0.595308869061126230,	-0.595349043164528410,	-0.595389215779557610,	-0.595429386906113690,	-0.595469556544096720,	-0.595509724693405460,	-0.595549891353939990,	
+-0.595590056525599710,	-0.595630220208284270,	-0.595670382401893630,	-0.595710543106326760,	-0.595750702321483530,	-0.595790860047263780,	-0.595831016283566610,	-0.595871171030291860,	
+-0.595911324287339280,	-0.595951476054608630,	-0.595991626331998980,	-0.596031775119410300,	-0.596071922416742560,	-0.596112068223894510,	-0.596152212540766450,	-0.596192355367257790,	
+-0.596232496703268280,	-0.596272636548697780,	-0.596312774903445360,	-0.596352911767411120,	-0.596393047140494900,	-0.596433181022595680,	-0.596473313413613540,	-0.596513444313448100,	
+-0.596553573721999020,	-0.596593701639166360,	-0.596633828064849100,	-0.596673952998947650,	-0.596714076441360990,	-0.596754198391989070,	-0.596794318850731640,	-0.596834437817488460,	
+-0.596874555292159600,	-0.596914671274643930,	-0.596954785764841620,	-0.596994898762652660,	-0.597035010267976120,	-0.597075120280711970,	-0.597115228800760180,	-0.597155335828020160,	
+-0.597195441362392220,	-0.597235545403775330,	-0.597275647952069550,	-0.597315749007175100,	-0.597355848568990820,	-0.597395946637417020,	-0.597436043212353220,	-0.597476138293699720,	
+-0.597516231881355610,	-0.597556323975220850,	-0.597596414575195630,	-0.597636503681178930,	-0.597676591293071050,	-0.597716677410771720,	-0.597756762034180710,	-0.597796845163198090,	
+-0.597836926797723050,	-0.597877006937655660,	-0.597917085582896140,	-0.597957162733343540,	-0.597997238388898070,	-0.598037312549459470,	-0.598077385214927480,	-0.598117456385202530,	
+-0.598157526060183580,	-0.598197594239770700,	-0.598237660923864320,	-0.598277726112363410,	-0.598317789805168140,	-0.598357852002178390,	-0.598397912703294340,	-0.598437971908415190,	
+-0.598478029617441120,	-0.598518085830272330,	-0.598558140546808000,	-0.598598193766948230,	-0.598638245490593080,	-0.598678295717642310,	-0.598718344447996100,	-0.598758391681553650,	
+-0.598798437418215260,	-0.598838481657881120,	-0.598878524400450420,	-0.598918565645823460,	-0.598958605393900000,	-0.598998643644580110,	-0.599038680397763980,	-0.599078715653350690,	
+-0.599118749411240990,	-0.599158781671334180,	-0.599198812433530350,	-0.599238841697729450,	-0.599278869463831470,	-0.599318895731736580,	-0.599358920501344210,	-0.599398943772554540,	
+-0.599438965545267880,	-0.599478985819383410,	-0.599519004594801450,	-0.599559021871421960,	-0.599599037649145020,	-0.599639051927870700,	-0.599679064707498540,	-0.599719075987928620,	
+-0.599759085769061450,	-0.599799094050796120,	-0.599839100833033050,	-0.599879106115672300,	-0.599919109898614080,	-0.599959112181757790,	-0.599999112965003740,	-0.600039112248252240,	
+-0.600079110031402570,	-0.600119106314355170,	-0.600159101097009870,	-0.600199094379267000,	-0.600239086161026610,	-0.600279076442188250,	-0.600319065222652100,	-0.600359052502318800,	
+-0.600399038281087320,	-0.600439022558858390,	-0.600479005335531890,	-0.600518986611007780,	-0.600558966385186690,	-0.600598944657967700,	-0.600638921429251460,	-0.600678896698938150,	
+-0.600718870466927290,	-0.600758842733119300,	-0.600798813497414150,	-0.600838782759712360,	-0.600878750519913350,	-0.600918716777917310,	-0.600958681533624860,	-0.600998644786935430,	
+-0.601038606537749320,	-0.601078566785966720,	-0.601118525531487700,	-0.601158482774212690,	-0.601198438514041200,	-0.601238392750873540,	-0.601278345484610230,	-0.601318296715150800,	
+-0.601358246442395550,	-0.601398194666244670,	-0.601438141386598350,	-0.601478086603357000,	-0.601518030316420150,	-0.601557972525688540,	-0.601597913231061600,	-0.601637852432439950,	
+-0.601677790129723560,	-0.601717726322812840,	-0.601757661011607990,	-0.601797594196008760,	-0.601837525875915550,	-0.601877456051228780,	-0.601917384721848080,	-0.601957311887673980,	
+-0.601997237548606570,	-0.602037161704546020,	-0.602077084355392870,	-0.602117005501046740,	-0.602156925141408060,	-0.602196843276377460,	-0.602236759905854350,	-0.602276675029739360,	
+-0.602316588647932690,	-0.602356500760334980,	-0.602396411366845520,	-0.602436320467365170,	-0.602476228061794240,	-0.602516134150032470,	-0.602556038731980380,	-0.602595941807538060,	
+-0.602635843376606030,	-0.602675743439084700,	-0.602715641994873600,	-0.602755539043873470,	-0.602795434585984840,	-0.602835328621107220,	-0.602875221149141380,	-0.602915112169987390,	
+-0.602955001683545650,	-0.602994889689716820,	-0.603034776188400290,	-0.603074661179496930,	-0.603114544662907260,	-0.603154426638530810,	-0.603194307106268310,	-0.603234186066020080,	
+-0.603274063517686640,	-0.603313939461167850,	-0.603353813896364110,	-0.603393686823176180,	-0.603433558241503690,	-0.603473428151247380,	-0.603513296552307340,	-0.603553163444584210,	
+-0.603593028827978490,	-0.603632892702389840,	-0.603672755067718890,	-0.603712615923866490,	-0.603752475270732170,	-0.603792333108216670,	-0.603832189436220300,	-0.603872044254643470,	
+-0.603911897563386920,	-0.603951749362350300,	-0.603991599651434560,	-0.604031448430539570,	-0.604071295699565860,	-0.604111141458414050,	-0.604150985706984220,	-0.604190828445177350,	
+-0.604230669672893070,	-0.604270509390032130,	-0.604310347596495270,	-0.604350184292182120,	-0.604390019476993560,	-0.604429853150829980,	-0.604469685313591800,	-0.604509515965179660,	
+-0.604549345105493410,	-0.604589172734433800,	-0.604628998851901580,	-0.604668823457796600,	-0.604708646552019500,	-0.604748468134470700,	-0.604788288205051260,	-0.604828106763660610,	
+-0.604867923810199710,	-0.604907739344569430,	-0.604947553366669390,	-0.604987365876400450,	-0.605027176873663140,	-0.605066986358357870,	-0.605106794330385500,	-0.605146600789645770,	
+-0.605186405736039550,	-0.605226209169467680,	-0.605266011089829910,	-0.605305811497027110,	-0.605345610390959800,	-0.605385407771528490,	-0.605425203638634060,	-0.605464997992176120,	
+-0.605504790832055770,	-0.605544582158173860,	-0.605584371970430020,	-0.605624160268725340,	-0.605663947052960230,	-0.605703732323035540,	-0.605743516078851240,	-0.605783298320308080,	
+-0.605823079047307140,	-0.605862858259748060,	-0.605902635957531910,	-0.605942412140559110,	-0.605982186808730280,	-0.606021959961946300,	-0.606061731600107120,	-0.606101501723113610,	
+-0.606141270330866730,	-0.606181037423266340,	-0.606220803000213300,	-0.606260567061608250,	-0.606300329607351810,	-0.606340090637344840,	-0.606379850151487320,	-0.606419608149680540,	
+-0.606459364631824370,	-0.606499119597819880,	-0.606538873047567480,	-0.606578624980967930,	-0.606618375397922180,	-0.606658124298330100,	-0.606697871682092770,	-0.606737617549111040,	
+-0.606777361899284990,	-0.606817104732515490,	-0.606856846048703270,	-0.606896585847748970,	-0.606936324129553450,	-0.606976060894016790,	-0.607015796141040060,	-0.607055529870524140,	
+-0.607095262082368970,	-0.607134992776475760,	-0.607174721952745020,	-0.607214449611077840,	-0.607254175751374190,	-0.607293900373535030,	-0.607333623477461560,	-0.607373345063053630,	
+-0.607413065130212430,	-0.607452783678838480,	-0.607492500708832540,	-0.607532216220095790,	-0.607571930212528090,	-0.607611642686030520,	-0.607651353640504270,	-0.607691063075849300,	
+-0.607730770991966600,	-0.607770477388757000,	-0.607810182266121270,	-0.607849885623960360,	-0.607889587462174360,	-0.607929287780664800,	-0.607968986579331740,	-0.608008683858076050,	
+-0.608048379616798810,	-0.608088073855400530,	-0.608127766573782420,	-0.608167457771844560,	-0.608207147449488120,	-0.608246835606614080,	-0.608286522243122520,	-0.608326207358914850,	
+-0.608365890953891490,	-0.608405573027953510,	-0.608445253581001880,	-0.608484932612936790,	-0.608524610123659440,	-0.608564286113070900,	-0.608603960581071140,	-0.608643633527561680,	
+-0.608683304952442940,	-0.608722974855616110,	-0.608762643236982150,	-0.608802310096441150,	-0.608841975433894840,	-0.608881639249243210,	-0.608921301542387440,	-0.608960962313228380,	
+-0.609000621561667010,	-0.609040279287604400,	-0.609079935490940750,	-0.609119590171577240,	-0.609159243329415070,	-0.609198894964354530,	-0.609238545076296710,	-0.609278193665142460,	
+-0.609317840730792870,	-0.609357486273148900,	-0.609397130292110960,	-0.609436772787580130,	-0.609476413759457710,	-0.609516053207643900,	-0.609555691132040000,	-0.609595327532546860,	
+-0.609634962409065780,	-0.609674595761496960,	-0.609714227589741590,	-0.609753857893700960,	-0.609793486673275490,	-0.609833113928366140,	-0.609872739658874120,	-0.609912363864700160,	
+-0.609951986545745670,	-0.609991607701910970,	-0.610031227333097110,	-0.610070845439205640,	-0.610110462020136630,	-0.610150077075791500,	-0.610189690606071090,	-0.610229302610876600,	
+-0.610268913090109110,	-0.610308522043669030,	-0.610348129471458000,	-0.610387735373376210,	-0.610427339749325170,	-0.610466942599205750,	-0.610506543922918920,	-0.610546143720366200,	
+-0.610585741991447660,	-0.610625338736064840,	-0.610664933954119030,	-0.610704527645510530,	-0.610744119810140650,	-0.610783710447910470,	-0.610823299558721060,	-0.610862887142473720,	
+-0.610902473199068870,	-0.610942057728407820,	-0.610981640730391960,	-0.611021222204921610,	-0.611060802151898290,	-0.611100380571222850,	-0.611139957462796920,	-0.611179532826520710,	
+-0.611219106662295620,	-0.611258678970023170,	-0.611298249749603670,	-0.611337819000938530,	-0.611377386723928830,	-0.611416952918475640,	-0.611456517584480500,	-0.611496080721843690,	
+-0.611535642330466640,	-0.611575202410250870,	-0.611614760961096680,	-0.611654317982905700,	-0.611693873475578800,	-0.611733427439017370,	-0.611772979873122620,	-0.611812530777795070,	
+-0.611852080152936240,	-0.611891627998447430,	-0.611931174314229390,	-0.611970719100183300,	-0.612010262356210370,	-0.612049804082212210,	-0.612089344278089250,	-0.612128882943742790,	
+-0.612168420079074570,	-0.612207955683984890,	-0.612247489758375400,	-0.612287022302147150,	-0.612326553315201250,	-0.612366082797439430,	-0.612405610748762100,	-0.612445137169070560,	
+-0.612484662058266680,	-0.612524185416250750,	-0.612563707242924300,	-0.612603227538188740,	-0.612642746301944930,	-0.612682263534094720,	-0.612721779234538410,	-0.612761293403178090,	
+-0.612800806039914160,	-0.612840317144648260,	-0.612879826717281470,	-0.612919334757715210,	-0.612958841265850870,	-0.612998346241589110,	-0.613037849684831550,	-0.613077351595479600,	
+-0.613116851973434020,	-0.613156350818596210,	-0.613195848130867580,	-0.613235343910149330,	-0.613274838156343090,	-0.613314330869349390,	-0.613353822049069960,	-0.613393311695406230,	
+-0.613432799808258820,	-0.613472286387529490,	-0.613511771433119410,	-0.613551254944930240,	-0.613590736922862590,	-0.613630217366818110,	-0.613669696276698430,	-0.613709173652404180,	
+-0.613748649493837010,	-0.613788123800898200,	-0.613827596573489060,	-0.613867067811511240,	-0.613906537514865460,	-0.613946005683453370,	-0.613985472317176480,	-0.614024937415935670,	
+-0.614064400979632550,	-0.614103863008168330,	-0.614143323501444520,	-0.614182782459362750,	-0.614222239881823670,	-0.614261695768728910,	-0.614301150119980320,	-0.614340602935478540,	
+-0.614380054215125200,	-0.614419503958821830,	-0.614458952166469950,	-0.614498398837970310,	-0.614537843973224750,	-0.614577287572134920,	-0.614616729634601460,	-0.614656170160526210,	
+-0.614695609149810580,	-0.614735046602355890,	-0.614774482518063990,	-0.614813916896835400,	-0.614853349738572090,	-0.614892781043175800,	-0.614932210810547160,	-0.614971639040588050,	
+-0.615011065733199750,	-0.615050490888283900,	-0.615089914505742020,	-0.615129336585475080,	-0.615168757127385170,	-0.615208176131373020,	-0.615247593597340490,	-0.615287009525188890,	
+-0.615326423914819730,	-0.615365836766134990,	-0.615405248079035180,	-0.615444657853422280,	-0.615484066089198150,	-0.615523472786263400,	-0.615562877944520030,	-0.615602281563869540,	
+-0.615641683644213230,	-0.615681084185453090,	-0.615720483187489950,	-0.615759880650225470,	-0.615799276573561820,	-0.615838670957399530,	-0.615878063801640560,	-0.615917455106186450,	
+-0.615956844870938940,	-0.615996233095799100,	-0.616035619780668680,	-0.616075004925449530,	-0.616114388530042520,	-0.616153770594349500,	-0.616193151118272110,	-0.616232530101711750,	
+-0.616271907544570510,	-0.616311283446749130,	-0.616350657808149570,	-0.616390030628673700,	-0.616429401908222370,	-0.616468771646697560,	-0.616508139844000770,	-0.616547506500033650,	
+-0.616586871614698160,	-0.616626235187895170,	-0.616665597219526520,	-0.616704957709494180,	-0.616744316657699240,	-0.616783674064043440,	-0.616823029928428410,	-0.616862384250756230,	
+-0.616901737030927650,	-0.616941088268844750,	-0.616980437964409600,	-0.617019786117522840,	-0.617059132728086770,	-0.617098477796002800,	-0.617137821321172560,	-0.617177163303498140,	
+-0.617216503742880510,	-0.617255842639221620,	-0.617295179992423560,	-0.617334515802387070,	-0.617373850069014350,	-0.617413182792206920,	-0.617452513971866620,	-0.617491843607895330,	
+-0.617531171700194110,	-0.617570498248665390,	-0.617609823253210010,	-0.617649146713730060,	-0.617688468630127270,	-0.617727789002303300,	-0.617767107830160090,	-0.617806425113598960,	
+-0.617845740852521640,	-0.617885055046830330,	-0.617924367696426110,	-0.617963678801210840,	-0.618002988361086470,	-0.618042296375954650,	-0.618081602845717340,	-0.618120907770275730,	
+-0.618160211149531900,	-0.618199512983387820,	-0.618238813271744570,	-0.618278112014504440,	-0.618317409211568860,	-0.618356704862840220,	-0.618395998968219400,	-0.618435291527608680,	
+-0.618474582540910030,	-0.618513872008024550,	-0.618553159928854400,	-0.618592446303301350,	-0.618631731131267130,	-0.618671014412654040,	-0.618710296147362950,	-0.618749576335296260,	
+-0.618788854976355830,	-0.618828132070443070,	-0.618867407617459840,	-0.618906681617308110,	-0.618945954069889730,	-0.618985224975106770,	-0.619024494332860440,	-0.619063762143052920,	
+-0.619103028405586290,	-0.619142293120361730,	-0.619181556287281440,	-0.619220817906247280,	-0.619260077977161430,	-0.619299336499924970,	-0.619338593474440200,	-0.619377848900609320,	
+-0.619417102778333510,	-0.619456355107514840,	-0.619495605888055300,	-0.619534855119856840,	-0.619574102802821550,	-0.619613348936850610,	-0.619652593521846320,	-0.619691836557710870,	
+-0.619731078044345570,	-0.619770317981652500,	-0.619809556369533610,	-0.619848793207890880,	-0.619888028496626500,	-0.619927262235641650,	-0.619966494424839090,	-0.620005725064119880,	
+-0.620044954153386450,	-0.620084181692540540,	-0.620123407681484220,	-0.620162632120119680,	-0.620201855008348240,	-0.620241076346072170,	-0.620280296133193800,	-0.620319514369614300,	
+-0.620358731055235980,	-0.620397946189960800,	-0.620437159773690850,	-0.620476371806328310,	-0.620515582287774480,	-0.620554791217931780,	-0.620593998596702390,	-0.620633204423987620,	
+-0.620672408699689870,	-0.620711611423711120,	-0.620750812595953660,	-0.620790012216318800,	-0.620829210284708940,	-0.620868406801026400,	-0.620907601765172570,	-0.620946795177049650,	
+-0.620985987036559720,	-0.621025177343604850,	-0.621064366098087460,	-0.621103553299908740,	-0.621142738948971100,	-0.621181923045176940,	-0.621221105588427690,	-0.621260286578625640,	
+-0.621299466015672990,	-0.621338643899471580,	-0.621377820229923940,	-0.621416995006931370,	-0.621456168230396620,	-0.621495339900221210,	-0.621534510016307330,	-0.621573678578557280,	
+-0.621612845586873020,	-0.621652011041156860,	-0.621691174941310430,	-0.621730337287236150,	-0.621769498078836300,	-0.621808657316012310,	-0.621847814998666700,	-0.621886971126701550,	
+-0.621926125700019040,	-0.621965278718521470,	-0.622004430182110380,	-0.622043580090688280,	-0.622082728444157460,	-0.622121875242419580,	-0.622161020485377030,	-0.622200164172931780,	
+-0.622239306304986580,	-0.622278446881442740,	-0.622317585902202760,	-0.622356723367169300,	-0.622395859276243520,	-0.622434993629328190,	-0.622474126426325270,	-0.622513257667137170,	
+-0.622552387351666180,	-0.622591515479813840,	-0.622630642051482770,	-0.622669767066575510,	-0.622708890524993340,	-0.622748012426639130,	-0.622787132771414730,	-0.622826251559222550,	
+-0.622865368789965120,	-0.622904484463543850,	-0.622943598579861370,	-0.622982711138820310,	-0.623021822140322090,	-0.623060931584269340,	-0.623100039470564250,	-0.623139145799109340,	
+-0.623178250569806360,	-0.623217353782557600,	-0.623256455437265930,	-0.623295555533832760,	-0.623334654072160600,	-0.623373751052151870,	-0.623412846473708760,	-0.623451940336733900,	
+-0.623491032641128820,	-0.623530123386796140,	-0.623569212573638510,	-0.623608300201557550,	-0.623647386270455790,	-0.623686470780235540,	-0.623725553730799190,	-0.623764635122049270,	
+-0.623803714953887420,	-0.623842793226216610,	-0.623881869938938460,	-0.623920945091955610,	-0.623960018685170480,	-0.623999090718485250,	-0.624038161191802660,	-0.624077230105024360,	
+-0.624116297458052970,	-0.624155363250791130,	-0.624194427483140580,	-0.624233490155003960,	-0.624272551266283560,	-0.624311610816881800,	-0.624350668806701430,	-0.624389725235643960,	
+-0.624428780103612250,	-0.624467833410508820,	-0.624506885156235540,	-0.624545935340695020,	-0.624584983963789700,	-0.624624031025422300,	-0.624663076525494350,	-0.624702120463908830,	
+-0.624741162840568350,	-0.624780203655374570,	-0.624819242908230320,	-0.624858280599037920,	-0.624897316727699770,	-0.624936351294118730,	-0.624975384298196550,	-0.625014415739835740,	
+-0.625053445618939390,	-0.625092473935409010,	-0.625131500689147470,	-0.625170525880057170,	-0.625209549508040530,	-0.625248571573000400,	-0.625287592074838420,	-0.625326611013457550,	
+-0.625365628388760530,	-0.625404644200649010,	-0.625443658449025830,	-0.625482671133793630,	-0.625521682254855050,	-0.625560691812111940,	-0.625599699805467040,	-0.625638706234823210,	
+-0.625677711100082410,	-0.625716714401147180,	-0.625755716137920250,	-0.625794716310304030,	-0.625833714918201390,	-0.625872711961514060,	-0.625911707440144900,	-0.625950701353996890,	
+-0.625989693702971860,	-0.626028684486972460,	-0.626067673705901440,	-0.626106661359661200,	-0.626145647448154600,	-0.626184631971283600,	-0.626223614928951290,	-0.626262596321059740,	
+-0.626301576147511590,	-0.626340554408209570,	-0.626379531103056110,	-0.626418506231954160,	-0.626457479794805590,	-0.626496451791513360,	-0.626535422221980330,	-0.626574391086108460,	
+-0.626613358383800500,	-0.626652324114959190,	-0.626691288279487170,	-0.626730250877287180,	-0.626769211908261180,	-0.626808171372312260,	-0.626847129269343160,	-0.626886085599255960,	
+-0.626925040361953510,	-0.626963993557338450,	-0.627002945185313740,	-0.627041895245781360,	-0.627080843738644260,	-0.627119790663805300,	-0.627158736021166560,	-0.627197679810631010,	
+-0.627236622032101290,	-0.627275562685480010,	-0.627314501770670050,	-0.627353439287573590,	-0.627392375236093590,	-0.627431309616132920,	-0.627470242427593640,	-0.627509173670378730,	
+-0.627548103344390930,	-0.627587031449532870,	-0.627625957985707530,	-0.627664882952816970,	-0.627703806350764170,	-0.627742728179452310,	-0.627781648438783150,	-0.627820567128659970,	
+-0.627859484248985300,	-0.627898399799662330,	-0.627937313780593030,	-0.627976226191680360,	-0.628015137032827520,	-0.628054046303936460,	-0.628092954004910390,	-0.628131860135651810,	
+-0.628170764696063590,	-0.628209667686048910,	-0.628248569105509640,	-0.628287468954348950,	-0.628326367232469930,	-0.628365263939774650,	-0.628404159076166200,	-0.628443052641547430,	
+-0.628481944635820860,	-0.628520835058889890,	-0.628559723910656510,	-0.628598611191024110,	-0.628637496899894900,	-0.628676381037171940,	-0.628715263602757980,	-0.628754144596555880,	
+-0.628793024018468700,	-0.628831901868398770,	-0.628870778146248920,	-0.628909652851922570,	-0.628948525985321690,	-0.628987397546349580,	-0.629026267534908870,	-0.629065135950902520,	
+-0.629104002794233730,	-0.629142868064804570,	-0.629181731762518240,	-0.629220593887277910,	-0.629259454438985680,	-0.629298313417544940,	-0.629337170822858340,	-0.629376026654829170,	
+-0.629414880913359620,	-0.629453733598352770,	-0.629492584709712030,	-0.629531434247339480,	-0.629570282211138310,	-0.629609128601011480,	-0.629647973416861740,	-0.629686816658592500,	
+-0.629725658326105830,	-0.629764498419305040,	-0.629803336938093320,	-0.629842173882372960,	-0.629881009252047150,	-0.629919843047018760,	-0.629958675267190850,	-0.629997505912466500,	
+-0.630036334982748140,	-0.630075162477938930,	-0.630113988397942080,	-0.630152812742660000,	-0.630191635511995860,	-0.630230456705852540,	-0.630269276324133540,	-0.630308094366740960,	
+-0.630346910833578190,	-0.630385725724548430,	-0.630424539039553980,	-0.630463350778498240,	-0.630502160941284200,	-0.630540969527814580,	-0.630579776537993020,	-0.630618581971721600,	
+-0.630657385828903850,	-0.630696188109442830,	-0.630734988813241080,	-0.630773787940201780,	-0.630812585490228120,	-0.630851381463222950,	-0.630890175859089570,	-0.630928968677730520,	
+-0.630967759919049410,	-0.631006549582948550,	-0.631045337669331240,	-0.631084124178100670,	-0.631122909109159690,	-0.631161692462411830,	-0.631200474237759380,	-0.631239254435105760,	
+-0.631278033054354370,	-0.631316810095407630,	-0.631355585558168730,	-0.631394359442540850,	-0.631433131748427190,	-0.631471902475731040,	-0.631510671624354700,	-0.631549439194201700,	
+-0.631588205185175440,	-0.631626969597178340,	-0.631665732430113810,	-0.631704493683885040,	-0.631743253358395320,	-0.631782011453547070,	-0.631820767969243800,	-0.631859522905389050,	
+-0.631898276261885110,	-0.631937028038635380,	-0.631975778235543180,	-0.632014526852511470,	-0.632053273889443880,	-0.632092019346242710,	-0.632130763222811480,	-0.632169505519053710,	
+-0.632208246234871820,	-0.632246985370169320,	-0.632285722924849300,	-0.632324458898815060,	-0.632363193291969990,	-0.632401926104216530,	-0.632440657335458620,	-0.632479386985598800,	
+-0.632518115054540480,	-0.632556841542186830,	-0.632595566448441170,	-0.632634289773206790,	-0.632673011516386440,	-0.632711731677883530,	-0.632750450257601680,	-0.632789167255443320,	
+-0.632827882671312070,	-0.632866596505111120,	-0.632905308756743670,	-0.632944019426113340,	-0.632982728513122540,	-0.633021436017674910,	-0.633060141939674080,	-0.633098846279022460,	
+-0.633137549035623800,	-0.633176250209381290,	-0.633214949800198550,	-0.633253647807977990,	-0.633292344232623260,	-0.633331039074038090,	-0.633369732332125010,	-0.633408424006787540,	
+-0.633447114097929090,	-0.633485802605452840,	-0.633524489529262320,	-0.633563174869260390,	-0.633601858625350460,	-0.633640540797436150,	-0.633679221385420210,	-0.633717900389206170,	
+-0.633756577808697430,	-0.633795253643797300,	-0.633833927894409290,	-0.633872600560436150,	-0.633911271641781400,	-0.633949941138349020,	-0.633988609050041290,	-0.634027275376762070,	
+-0.634065940118414660,	-0.634104603274902810,	-0.634143264846129040,	-0.634181924831997090,	-0.634220583232410710,	-0.634259240047272520,	-0.634297895276486280,	-0.634336548919955280,	
+-0.634375200977582930,	-0.634413851449272760,	-0.634452500334927840,	-0.634491147634451580,	-0.634529793347747730,	-0.634568437474719140,	-0.634607080015269440,	-0.634645720969301940,	
+-0.634684360336720270,	-0.634722998117427940,	-0.634761634311327820,	-0.634800268918323970,	-0.634838901938319160,	-0.634877533371217000,	-0.634916163216921010,	-0.634954791475334620,	
+-0.634993418146361680,	-0.635032043229904810,	-0.635070666725867760,	-0.635109288634154500,	-0.635147908954667550,	-0.635186527687310990,	-0.635225144831988000,	-0.635263760388602110,	
+-0.635302374357057160,	-0.635340986737256030,	-0.635379597529102450,	-0.635418206732500050,	-0.635456814347351910,	-0.635495420373561770,	-0.635534024811033050,	-0.635572627659669600,	
+-0.635611228919374160,	-0.635649828590050700,	-0.635688426671603080,	-0.635727023163934040,	-0.635765618066947420,	-0.635804211380546660,	-0.635842803104635480,	-0.635881393239117630,	
+-0.635919981783895860,	-0.635958568738874240,	-0.635997154103956520,	-0.636035737879045550,	-0.636074320064045300,	-0.636112900658859170,	-0.636151479663390810,	-0.636190057077544060,	
+-0.636228632901221890,	-0.636267207134328160,	-0.636305779776766720,	-0.636344350828440430,	-0.636382920289253360,	-0.636421488159108930,	-0.636460054437911090,	-0.636498619125562830,	
+-0.636537182221967980,	-0.636575743727030520,	-0.636614303640653410,	-0.636652861962740510,	-0.636691418693195450,	-0.636729973831921870,	-0.636768527378823720,	-0.636807079333803870,	
+-0.636845629696766280,	-0.636884178467615030,	-0.636922725646252960,	-0.636961271232584060,	-0.636999815226511950,	-0.637038357627940370,	-0.637076898436773290,	-0.637115437652913450,	
+-0.637153975276265490,	-0.637192511306732270,	-0.637231045744217740,	-0.637269578588625540,	-0.637308109839859420,	-0.637346639497823330,	-0.637385167562420360,	-0.637423694033554480,	
+-0.637462218911129750,	-0.637500742195049040,	-0.637539263885216530,	-0.637577783981535860,	-0.637616302483910660,	-0.637654819392245110,	-0.637693334706442180,	-0.637731848426405850,	
+-0.637770360552040280,	-0.637808871083248460,	-0.637847380019934460,	-0.637885887362002020,	-0.637924393109355230,	-0.637962897261897030,	-0.638001399819531630,	-0.638039900782163110,	
+-0.638078400149694520,	-0.638116897922029860,	-0.638155394099072960,	-0.638193888680727570,	-0.638232381666897890,	-0.638270873057486750,	-0.638309362852398590,	-0.638347851051537240,	
+-0.638386337654806010,	-0.638424822662108980,	-0.638463306073349780,	-0.638501787888432370,	-0.638540268107260830,	-0.638578746729738240,	-0.638617223755768790,	-0.638655699185256660,	
+-0.638694173018104940,	-0.638732645254217800,	-0.638771115893499000,	-0.638809584935852710,	-0.638848052381182250,	-0.638886518229391580,	-0.638924982480384870,	-0.638963445134065560,	
+-0.639001906190337480,	-0.639040365649104710,	-0.639078823510271010,	-0.639117279773740550,	-0.639155734439416650,	-0.639194187507203360,	-0.639232638977004890,	-0.639271088848724520,	
+-0.639309537122266460,	-0.639347983797534550,	-0.639386428874432640,	-0.639424872352865050,	-0.639463314232734840,	-0.639501754513946750,	-0.639540193196403980,	-0.639578630280010610,	
+-0.639617065764670810,	-0.639655499650288230,	-0.639693931936767270,	-0.639732362624011230,	-0.639770791711924190,	-0.639809219200410560,	-0.639847645089373530,	-0.639886069378717390,	
+-0.639924492068346010,	-0.639962913158163450,	-0.640001332648073910,	-0.640039750537980790,	-0.640078166827788180,	-0.640116581517400580,	-0.640154994606721210,	-0.640193406095654230,	
+-0.640231815984103840,	-0.640270224271974220,	-0.640308630959168680,	-0.640347036045591620,	-0.640385439531147240,	-0.640423841415738940,	-0.640462241699271130,	-0.640500640381647560,	
+-0.640539037462772520,	-0.640577432942550100,	-0.640615826820883920,	-0.640654219097678060,	-0.640692609772837040,	-0.640730998846264050,	-0.640769386317863730,	-0.640807772187539810,	
+-0.640846156455196490,	-0.640884539120738170,	-0.640922920184068160,	-0.640961299645090850,	-0.640999677503710560,	-0.641038053759830810,	-0.641076428413355880,	-0.641114801464189870,	
+-0.641153172912237170,	-0.641191542757401310,	-0.641229910999586480,	-0.641268277638697310,	-0.641306642674637000,	-0.641345006107310160,	-0.641383367936620870,	-0.641421728162473000,	
+-0.641460086784771290,	-0.641498443803418920,	-0.641536799218320520,	-0.641575153029380400,	-0.641613505236502070,	-0.641651855839590060,	-0.641690204838548330,	-0.641728552233281070,	
+-0.641766898023692800,	-0.641805242209686930,	-0.641843584791168320,	-0.641881925768040370,	-0.641920265140207720,	-0.641958602907574340,	-0.641996939070044400,	-0.642035273627522440,	
+-0.642073606579912080,	-0.642111937927117630,	-0.642150267669043600,	-0.642188595805593730,	-0.642226922336672220,	-0.642265247262183480,	-0.642303570582031580,	-0.642341892296121150,	
+-0.642380212404355610,	-0.642418530906639470,	-0.642456847802877480,	-0.642495163092972940,	-0.642533476776830590,	-0.642571788854354400,	-0.642610099325449210,	-0.642648408190018340,	
+-0.642686715447966520,	-0.642725021099198160,	-0.642763325143617000,	-0.642801627581127580,	-0.642839928411633950,	-0.642878227635040540,	-0.642916525251251980,	-0.642954821260171670,	
+-0.642993115661704360,	-0.643031408455754570,	-0.643069699642225930,	-0.643107989221023080,	-0.643146277192050200,	-0.643184563555211700,	-0.643222848310411990,	-0.643261131457554920,	
+-0.643299412996545360,	-0.643337692927286930,	-0.643375971249684260,	-0.643414247963641660,	-0.643452523069063420,	-0.643490796565854280,	-0.643529068453917770,	-0.643567338733158520,	
+-0.643605607403481380,	-0.643643874464789880,	-0.643682139916988530,	-0.643720403759981960,	-0.643758665993674370,	-0.643796926617970500,	-0.643835185632773870,	-0.643873443037989320,	
+-0.643911698833521510,	-0.643949953019274160,	-0.643988205595151910,	-0.644026456561059060,	-0.644064705916900460,	-0.644102953662579750,	-0.644141199798001660,	-0.644179444323070950,	
+-0.644217687237691240,	-0.644255928541767390,	-0.644294168235203690,	-0.644332406317904450,	-0.644370642789774630,	-0.644408877650717860,	-0.644447110900638890,	-0.644485342539442560,	
+-0.644523572567032410,	-0.644561800983313390,	-0.644600027788189920,	-0.644638252981566300,	-0.644676476563347370,	-0.644714698533436990,	-0.644752918891739800,	-0.644791137638160650,	
+-0.644829354772603390,	-0.644867570294972660,	-0.644905784205173080,	-0.644943996503109300,	-0.644982207188685260,	-0.645020416261805620,	-0.645058623722375320,	-0.645096829570298120,	
+-0.645135033805478870,	-0.645173236427821980,	-0.645211437437232080,	-0.645249636833613920,	-0.645287834616871230,	-0.645326030786909090,	-0.645364225343632140,	-0.645402418286944220,	
+-0.645440609616750430,	-0.645478799332954930,	-0.645516987435462490,	-0.645555173924178050,	-0.645593358799005150,	-0.645631542059849290,	-0.645669723706614240,	-0.645707903739204840,	
+-0.645746082157525710,	-0.645784258961481390,	-0.645822434150976730,	-0.645860607725915690,	-0.645898779686203020,	-0.645936950031743900,	-0.645975118762441960,	-0.646013285878202170,	
+-0.646051451378929280,	-0.646089615264527680,	-0.646127777534902470,	-0.646165938189957380,	-0.646204097229597600,	-0.646242254653727750,	-0.646280410462252040,	-0.646318564655075200,	
+-0.646356717232101970,	-0.646394868193237330,	-0.646433017538385220,	-0.646471165267450520,	-0.646509311380338180,	-0.646547455876952280,	-0.646585598757197790,	-0.646623740020979220,	
+-0.646661879668201320,	-0.646700017698769170,	-0.646738154112586510,	-0.646776288909558520,	-0.646814422089590060,	-0.646852553652585320,	-0.646890683598449150,	-0.646928811927086290,	
+-0.646966938638401380,	-0.647005063732299380,	-0.647043187208684480,	-0.647081309067461640,	-0.647119429308535830,	-0.647157547931811130,	-0.647195664937192490,	-0.647233780324584670,	
+-0.647271894093892850,	-0.647310006245020890,	-0.647348116777873960,	-0.647386225692357040,	-0.647424332988374210,	-0.647462438665830530,	-0.647500542724630870,	-0.647538645164679740,	
+-0.647576745985882330,	-0.647614845188142720,	-0.647652942771366090,	-0.647691038735457410,	-0.647729133080320760,	-0.647767225805861320,	-0.647805316911983730,	-0.647843406398592950,	
+-0.647881494265593940,	-0.647919580512890780,	-0.647957665140389110,	-0.647995748147992880,	-0.648033829535607400,	-0.648071909303137180,	-0.648109987450487310,	-0.648148063977562750,	
+-0.648186138884267680,	-0.648224212170507300,	-0.648262283836186780,	-0.648300353881210100,	-0.648338422305482550,	-0.648376489108908990,	-0.648414554291394270,	-0.648452617852843470,	
+-0.648490679793160660,	-0.648528740112251260,	-0.648566798810020330,	-0.648604855886372070,	-0.648642911341211660,	-0.648680965174443960,	-0.648719017385974260,	-0.648757067975706650,	
+-0.648795116943546300,	-0.648833164289398520,	-0.648871210013167500,	-0.648909254114758530,	-0.648947296594076350,	-0.648985337451025930,	-0.649023376685512470,	-0.649061414297440350,	
+-0.649099450286714560,	-0.649137484653240620,	-0.649175517396922470,	-0.649213548517665660,	-0.649251578015374920,	-0.649289605889955210,	-0.649327632141311840,	-0.649365656769349100,	
+-0.649403679773972180,	-0.649441701155086480,	-0.649479720912596090,	-0.649517739046406420,	-0.649555755556422420,	-0.649593770442549290,	-0.649631783704691550,	-0.649669795342754150,	
+-0.649707805356642740,	-0.649745813746261500,	-0.649783820511515620,	-0.649821825652310280,	-0.649859829168550340,	-0.649897831060141210,	-0.649935831326987070,	-0.649973829968993440,	
+-0.650011826986065520,	-0.650049822378107710,	-0.650087816145025420,	-0.650125808286723510,	-0.650163798803107040,	-0.650201787694081430,	-0.650239774959551100,	-0.650277760599421660,	
+-0.650315744613597420,	-0.650353727001983790,	-0.650391707764485850,	-0.650429686901008770,	-0.650467664411457650,	-0.650505640295737100,	-0.650543614553752430,	-0.650581587185409150,	
+-0.650619558190611460,	-0.650657527569264870,	-0.650695495321274580,	-0.650733461446545420,	-0.650771425944983050,	-0.650809388816491640,	-0.650847350060976940,	-0.650885309678344020,	
+-0.650923267668497620,	-0.650961224031343040,	-0.650999178766785370,	-0.651037131874730110,	-0.651075083355081570,	-0.651113033207745500,	-0.651150981432627060,	-0.651188928029630910,	
+-0.651226872998662330,	-0.651264816339626630,	-0.651302758052428880,	-0.651340698136974590,	-0.651378636593168300,	-0.651416573420915300,	-0.651454508620121220,	-0.651492442190690580,	
+-0.651530374132528790,	-0.651568304445541040,	-0.651606233129632620,	-0.651644160184708940,	-0.651682085610674420,	-0.651720009407434800,	-0.651757931574895370,	-0.651795852112960870,	
+-0.651833771021536720,	-0.651871688300528220,	-0.651909603949840650,	-0.651947517969378890,	-0.651985430359048320,	-0.652023341118754480,	-0.652061250248402000,	-0.652099157747896290,	
+-0.652137063617142740,	-0.652174967856046560,	-0.652212870464513260,	-0.652250771442447470,	-0.652288670789754720,	-0.652326568506340630,	-0.652364464592109840,	-0.652402359046967860,	
+-0.652440251870819890,	-0.652478143063571440,	-0.652516032625127920,	-0.652553920555393960,	-0.652591806854275540,	-0.652629691521677270,	-0.652667574557504790,	-0.652705455961663290,	
+-0.652743335734058180,	-0.652781213874595200,	-0.652819090383178760,	-0.652856965259714480,	-0.652894838504108230,	-0.652932710116264640,	-0.652970580096089100,	-0.653008448443487270,	
+-0.653046315158364200,	-0.653084180240625760,	-0.653122043690176460,	-0.653159905506922040,	-0.653197765690768260,	-0.653235624241619740,	-0.653273481159382110,	-0.653311336443960780,	
+-0.653349190095261490,	-0.653387042113188880,	-0.653424892497648570,	-0.653462741248546530,	-0.653500588365787170,	-0.653538433849276350,	-0.653576277698919460,	-0.653614119914621930,	
+-0.653651960496289370,	-0.653689799443826660,	-0.653727636757139410,	-0.653765472436133370,	-0.653803306480713280,	-0.653841138890784990,	-0.653878969666253810,	-0.653916798807025250,	
+-0.653954626313005050,	-0.653992452184097850,	-0.654030276420209940,	-0.654068099021245960,	-0.654105919987111760,	-0.654143739317712750,	-0.654181557012954440,	-0.654219373072742580,	
+-0.654257187496981810,	-0.654295000285578190,	-0.654332811438437360,	-0.654370620955464170,	-0.654408428836564470,	-0.654446235081643680,	-0.654484039690607310,	-0.654521842663361110,	
+-0.654559643999810040,	-0.654597443699859840,	-0.654635241763416360,	-0.654673038190384470,	-0.654710832980670010,	-0.654748626134178390,	-0.654786417650815240,	-0.654824207530486310,	
+-0.654861995773096670,	-0.654899782378552290,	-0.654937567346758120,	-0.654975350677620030,	-0.655013132371043530,	-0.655050912426934250,	-0.655088690845198050,	-0.655126467625739780,	
+-0.655164242768465300,	-0.655202016273280560,	-0.655239788140090430,	-0.655277558368800860,	-0.655315326959317380,	-0.655353093911545610,	-0.655390859225391420,	-0.655428622900759650,	
+-0.655466384937556490,	-0.655504145335687570,	-0.655541904095058080,	-0.655579661215573760,	-0.655617416697140240,	-0.655655170539663600,	-0.655692922743048690,	-0.655730673307201360,	
+-0.655768422232027800,	-0.655806169517432870,	-0.655843915163322410,	-0.655881659169602170,	-0.655919401536177890,	-0.655957142262955430,	-0.655994881349839630,	-0.656032618796736800,	
+-0.656070354603552670,	-0.656108088770192330,	-0.656145821296561740,	-0.656183552182566630,	-0.656221281428112650,	-0.656259009033105740,	-0.656296734997451110,	-0.656334459321054830,	
+-0.656372182003822190,	-0.656409903045659050,	-0.656447622446471150,	-0.656485340206164110,	-0.656523056324644140,	-0.656560770801816180,	-0.656598483637586330,	-0.656636194831860530,	
+-0.656673904384543980,	-0.656711612295542650,	-0.656749318564762260,	-0.656787023192108580,	-0.656824726177487660,	-0.656862427520804590,	-0.656900127221965560,	-0.656937825280876410,	
+-0.656975521697442440,	-0.657013216471569630,	-0.657050909603163810,	-0.657088601092131070,	-0.657126290938376490,	-0.657163979141806130,	-0.657201665702326190,	-0.657239350619841730,	
+-0.657277033894258840,	-0.657314715525483480,	-0.657352395513421280,	-0.657390073857978430,	-0.657427750559060000,	-0.657465425616572290,	-0.657503099030421370,	-0.657540770800512210,	
+-0.657578440926751330,	-0.657616109409044140,	-0.657653776247296820,	-0.657691441441415340,	-0.657729104991304990,	-0.657766766896871750,	-0.657804427158022010,	-0.657842085774660860,	
+-0.657879742746694470,	-0.657917398074028830,	-0.657955051756569990,	-0.657992703794223030,	-0.658030354186894480,	-0.658068002934490300,	-0.658105650036915790,	-0.658143295494077240,	
+-0.658180939305880290,	-0.658218581472231110,	-0.658256221993035790,	-0.658293860868199630,	-0.658331498097628700,	-0.658369133681229400,	-0.658406767618907040,	-0.658444399910567690,	
+-0.658482030556117310,	-0.658519659555461880,	-0.658557286908507570,	-0.658594912615159790,	-0.658632536675325060,	-0.658670159088908580,	-0.658707779855816740,	-0.658745398975955520,	
+-0.658783016449230760,	-0.658820632275548770,	-0.658858246454814830,	-0.658895858986935370,	-0.658933469871816560,	-0.658971079109363700,	-0.659008686699483200,	-0.659046292642080920,	
+-0.659083896937062930,	-0.659121499584335520,	-0.659159100583804110,	-0.659196699935374890,	-0.659234297638954250,	-0.659271893694447500,	-0.659309488101761040,	-0.659347080860800960,	
+-0.659384671971473440,	-0.659422261433683880,	-0.659459849247338690,	-0.659497435412344180,	-0.659535019928605750,	-0.659572602796029810,	-0.659610184014522320,	-0.659647763583989350,	
+-0.659685341504337440,	-0.659722917775471760,	-0.659760492397298730,	-0.659798065369724850,	-0.659835636692655440,	-0.659873206365997000,	-0.659910774389655510,	-0.659948340763537140,	
+-0.659985905487548210,	-0.660023468561594110,	-0.660061029985581470,	-0.660098589759416490,	-0.660136147883004790,	-0.660173704356252670,	-0.660211259179066200,	-0.660248812351352020,	
+-0.660286363873015420,	-0.660323913743963040,	-0.660361461964101060,	-0.660399008533335220,	-0.660436553451571710,	-0.660474096718716930,	-0.660511638334676850,	-0.660549178299358110,	
+-0.660586716612665990,	-0.660624253274507130,	-0.660661788284787940,	-0.660699321643413940,	-0.660736853350291640,	-0.660774383405327240,	-0.660811911808426800,	-0.660849438559496960,	
+-0.660886963658443240,	-0.660924487105172380,	-0.660962008899590000,	-0.660999529041602640,	-0.661037047531116360,	-0.661074564368037580,	-0.661112079552272580,	-0.661149593083727120,	
+-0.661187104962307700,	-0.661224615187920860,	-0.661262123760472110,	-0.661299630679868080,	-0.661337135946014950,	-0.661374639558818920,	-0.661412141518186720,	-0.661449641824023770,	
+-0.661487140476236800,	-0.661524637474732220,	-0.661562132819415780,	-0.661599626510193990,	-0.661637118546973160,	-0.661674608929659790,	-0.661712097658159640,	-0.661749584732379210,	
+-0.661787070152225150,	-0.661824553917603090,	-0.661862036028419640,	-0.661899516484581120,	-0.661936995285993810,	-0.661974472432564240,	-0.662011947924198260,	-0.662049421760802390,	
+-0.662086893942283370,	-0.662124364468546720,	-0.662161833339499180,	-0.662199300555046940,	-0.662236766115096630,	-0.662274230019554650,	-0.662311692268326760,	-0.662349152861319570,	
+-0.662386611798439940,	-0.662424069079593390,	-0.662461524704686670,	-0.662498978673626170,	-0.662536430986318540,	-0.662573881642669500,	-0.662611330642585820,	-0.662648777985974100,	
+-0.662686223672740100,	-0.662723667702790450,	-0.662761110076031780,	-0.662798550792370270,	-0.662835989851712660,	-0.662873427253964810,	-0.662910862999033350,	-0.662948297086825120,	
+-0.662985729517245770,	-0.663023160290202140,	-0.663060589405600530,	-0.663098016863347570,	-0.663135442663349780,	-0.663172866805513130,	-0.663210289289744680,	-0.663247710115950070,	
+-0.663285129284036270,	-0.663322546793909560,	-0.663359962645476590,	-0.663397376838643970,	-0.663434789373317570,	-0.663472200249404230,	-0.663509609466810700,	-0.663547017025442830,	
+-0.663584422925207360,	-0.663621827166010920,	-0.663659229747759930,	-0.663696630670361110,	-0.663734029933720440,	-0.663771427537744650,	-0.663808823482340600,	-0.663846217767414260,	
+-0.663883610392872360,	-0.663921001358621310,	-0.663958390664568190,	-0.663995778310618730,	-0.664033164296679910,	-0.664070548622658350,	-0.664107931288460240,	-0.664145312293992210,	
+-0.664182691639160990,	-0.664220069323873010,	-0.664257445348035100,	-0.664294819711553350,	-0.664332192414334500,	-0.664369563456285510,	-0.664406932837312230,	-0.664444300557321730,	
+-0.664481666616220430,	-0.664519031013914960,	-0.664556393750312170,	-0.664593754825318130,	-0.664631114238839690,	-0.664668471990783830,	-0.664705828081056490,	-0.664743182509564430,	
+-0.664780535276214610,	-0.664817886380913660,	-0.664855235823567650,	-0.664892583604083650,	-0.664929929722368420,	-0.664967274178328130,	-0.665004616971869520,	-0.665041958102899460,	
+-0.665079297571324560,	-0.665116635377051680,	-0.665153971519986900,	-0.665191306000037170,	-0.665228638817109470,	-0.665265969971109870,	-0.665303299461945330,	-0.665340627289522590,	
+-0.665377953453748280,	-0.665415277954529370,	-0.665452600791772040,	-0.665489921965383480,	-0.665527241475269760,	-0.665564559321337960,	-0.665601875503494700,	-0.665639190021646730,	
+-0.665676502875701240,	-0.665713814065564070,	-0.665751123591142410,	-0.665788431452343340,	-0.665825737649072710,	-0.665863042181237820,	-0.665900345048745400,	-0.665937646251501980,	
+-0.665974945789414850,	-0.666012243662389980,	-0.666049539870334550,	-0.666086834413155530,	-0.666124127290759200,	-0.666161418503052440,	-0.666198708049942190,	-0.666235995931335530,	
+-0.666273282147138550,	-0.666310566697258300,	-0.666347849581601980,	-0.666385130800075780,	-0.666422410352586650,	-0.666459688239041560,	-0.666496964459347250,	-0.666534239013410800,	
+-0.666571511901138500,	-0.666608783122437320,	-0.666646052677214660,	-0.666683320565376380,	-0.666720586786829880,	-0.666757851341481910,	-0.666795114229239320,	-0.666832375450009280,	
+-0.666869635003698000,	-0.666906892890212880,	-0.666944149109460200,	-0.666981403661347170,	-0.667018656545780740,	-0.667055907762667540,	-0.667093157311914870,	-0.667130405193429140,	
+-0.667167651407117200,	-0.667204895952886570,	-0.667242138830643430,	-0.667279380040294860,	-0.667316619581747820,	-0.667353857454909270,	-0.667391093659686410,	-0.667428328195985520,	
+-0.667465561063713800,	-0.667502792262778420,	-0.667540021793085800,	-0.667577249654543130,	-0.667614475847057240,	-0.667651700370535670,	-0.667688923224884380,	-0.667726144410010770,	
+-0.667763363925822250,	-0.667800581772224900,	-0.667837797949126120,	-0.667875012456432880,	-0.667912225294052030,	-0.667949436461890980,	-0.667986645959856020,	-0.668023853787854450,	
+-0.668061059945793570,	-0.668098264433579780,	-0.668135467251120160,	-0.668172668398322010,	-0.668209867875092180,	-0.668247065681337960,	-0.668284261816965760,	-0.668321456281882890,	
+-0.668358649075996740,	-0.668395840199213610,	-0.668433029651440910,	-0.668470217432585610,	-0.668507403542555110,	-0.668544587981255820,	-0.668581770748595040,	-0.668618951844480170,	
+-0.668656131268817510,	-0.668693309021514580,	-0.668730485102478340,	-0.668767659511615990,	-0.668804832248834690,	-0.668842003314041090,	-0.668879172707142370,	-0.668916340428046150,	
+-0.668953506476658740,	-0.668990670852887440,	-0.669027833556639640,	-0.669064994587822090,	-0.669102153946342540,	-0.669139311632107160,	-0.669176467645023920,	-0.669213621984999120,	
+-0.669250774651940270,	-0.669287925645754460,	-0.669325074966348850,	-0.669362222613630990,	-0.669399368587507150,	-0.669436512887884860,	-0.669473655514671640,	-0.669510796467774010,	
+-0.669547935747099250,	-0.669585073352554790,	-0.669622209284047590,	-0.669659343541485260,	-0.669696476124774120,	-0.669733607033821900,	-0.669770736268536000,	-0.669807863828822850,	
+-0.669844989714590060,	-0.669882113925744820,	-0.669919236462194640,	-0.669956357323845950,	-0.669993476510606480,	-0.670030594022383630,	-0.670067709859083930,	-0.670104824020614890,	
+-0.670141936506883920,	-0.670179047317798090,	-0.670216156453264930,	-0.670253263913191070,	-0.670290369697484010,	-0.670327473806051290,	-0.670364576238799750,	-0.670401676995636690,	
+-0.670438776076469290,	-0.670475873481205080,	-0.670512969209751560,	-0.670550063262015270,	-0.670587155637903720,	-0.670624246337324650,	-0.670661335360184680,	-0.670698422706391460,	
+-0.670735508375852050,	-0.670772592368474200,	-0.670809674684164530,	-0.670846755322830780,	-0.670883834284380360,	-0.670920911568720140,	-0.670957987175757500,	-0.670995061105399970,	
+-0.671032133357554850,	-0.671069203932129540,	-0.671106272829031130,	-0.671143340048166890,	-0.671180405589444580,	-0.671217469452771050,	-0.671254531638053820,	-0.671291592145200180,	
+-0.671328650974117650,	-0.671365708124713860,	-0.671402763596895320,	-0.671439817390570350,	-0.671476869505645450,	-0.671513919942028360,	-0.671550968699626490,	-0.671588015778347150,	
+-0.671625061178098170,	-0.671662104898786190,	-0.671699146940318850,	-0.671736187302604090,	-0.671773225985548450,	-0.671810262989059880,	-0.671847298313045570,	-0.671884331957413040,	
+-0.671921363922069910,	-0.671958394206923160,	-0.671995422811880290,	-0.672032449736849280,	-0.672069474981736860,	-0.672106498546450770,	-0.672143520430898310,	-0.672180540634987440,	
+-0.672217559158624910,	-0.672254576001718450,	-0.672291591164175920,	-0.672328604645904050,	-0.672365616446810700,	-0.672402626566803270,	-0.672439635005789290,	-0.672476641763676500,	
+-0.672513646840371850,	-0.672550650235783090,	-0.672587651949818070,	-0.672624651982383530,	-0.672661650333387320,	-0.672698647002736960,	-0.672735641990340080,	-0.672772635296104430,	
+-0.672809626919936840,	-0.672846616861745070,	-0.672883605121437300,	-0.672920591698920050,	-0.672957576594101270,	-0.672994559806888600,	-0.673031541337189900,	-0.673068521184912010,	
+-0.673105499349962780,	-0.673142475832250180,	-0.673179450631681050,	-0.673216423748163260,	-0.673253395181604430,	-0.673290364931912190,	-0.673327332998994280,	-0.673364299382757660,	
+-0.673401264083110410,	-0.673438227099960260,	-0.673475188433214190,	-0.673512148082780260,	-0.673549106048565880,	-0.673586062330478690,	-0.673623016928426740,	-0.673659969842316910,	
+-0.673696921072057480,	-0.673733870617555410,	-0.673770818478718670,	-0.673807764655454890,	-0.673844709147671690,	-0.673881651955277050,	-0.673918593078177920,	-0.673955532516282370,	
+-0.673992470269498270,	-0.674029406337732670,	-0.674066340720893550,	-0.674103273418888650,	-0.674140204431625480,	-0.674177133759012230,	-0.674214061400955740,	-0.674250987357364110,	
+-0.674287911628145280,	-0.674324834213206440,	-0.674361755112455440,	-0.674398674325800140,	-0.674435591853148390,	-0.674472507694407360,	-0.674509421849485150,	-0.674546334318289590,	
+-0.674583245100727870,	-0.674620154196708070,	-0.674657061606137920,	-0.674693967328925170,	-0.674730871364977670,	-0.674767773714202820,	-0.674804674376508370,	-0.674841573351802730,	
+-0.674878470639992730,	-0.674915366240986580,	-0.674952260154692010,	-0.674989152381016750,	-0.675026042919869010,	-0.675062931771155840,	-0.675099818934785210,	-0.675136704410665530,	
+-0.675173588198703660,	-0.675210470298807870,	-0.675247350710885820,	-0.675284229434845900,	-0.675321106470594960,	-0.675357981818041190,	-0.675394855477092880,	-0.675431727447657120,	
+-0.675468597729641960,	-0.675505466322955380,	-0.675542333227505120,	-0.675579198443199360,	-0.675616061969945170,	-0.675652923807650960,	-0.675689783956224700,	-0.675726642415573680,	
+-0.675763499185606080,	-0.675800354266229640,	-0.675837207657352450,	-0.675874059358882450,	-0.675910909370727060,	-0.675947757692794690,	-0.675984604324992520,	-0.676021449267228960,	
+-0.676058292519411740,	-0.676095134081448720,	-0.676131973953248310,	-0.676168812134717580,	-0.676205648625764820,	-0.676242483426298220,	-0.676279316536225080,	-0.676316147955453810,	
+-0.676352977683892020,	-0.676389805721447800,	-0.676426632068029440,	-0.676463456723544130,	-0.676500279687900160,	-0.676537100961005940,	-0.676573920542768550,	-0.676610738433096380,	
+-0.676647554631897300,	-0.676684369139079700,	-0.676721181954550890,	-0.676757993078219040,	-0.676794802509992690,	-0.676831610249778890,	-0.676868416297486060,	-0.676905220653022170,	
+-0.676942023316295270,	-0.676978824287213680,	-0.677015623565684680,	-0.677052421151616570,	-0.677089217044917870,	-0.677126011245495650,	-0.677162803753258440,	-0.677199594568114290,	
+-0.677236383689971080,	-0.677273171118737190,	-0.677309956854320160,	-0.677346740896628500,	-0.677383523245569720,	-0.677420303901052120,	-0.677457082862983670,	-0.677493860131272550,	
+-0.677530635705827170,	-0.677567409586554810,	-0.677604181773364010,	-0.677640952266163050,	-0.677677721064859240,	-0.677714488169361310,	-0.677751253579577110,	-0.677788017295414710,	
+-0.677824779316782640,	-0.677861539643588310,	-0.677898298275740220,	-0.677935055213146560,	-0.677971810455714970,	-0.678008564003353850,	-0.678045315855971390,	-0.678082066013475870,	
+-0.678118814475774930,	-0.678155561242776980,	-0.678192306314390430,	-0.678229049690522780,	-0.678265791371082450,	-0.678302531355977620,	-0.678339269645116590,	-0.678376006238407660,	
+-0.678412741135758330,	-0.678449474337077250,	-0.678486205842272700,	-0.678522935651252430,	-0.678559663763924740,	-0.678596390180197910,	-0.678633114899980020,	-0.678669837923179810,	
+-0.678706559249704580,	-0.678743278879463060,	-0.678779996812363560,	-0.678816713048313810,	-0.678853427587222220,	-0.678890140428997090,	-0.678926851573546930,	-0.678963561020779370,	
+-0.679000268770602820,	-0.679036974822926020,	-0.679073679177656380,	-0.679110381834702630,	-0.679147082793972840,	-0.679183782055375330,	-0.679220479618818710,	-0.679257175484210610,	
+-0.679293869651459550,	-0.679330562120474160,	-0.679367252891161950,	-0.679403941963431680,	-0.679440629337191520,	-0.679477315012349870,	-0.679513998988815150,	-0.679550681266495200,	
+-0.679587361845298890,	-0.679624040725133720,	-0.679660717905908540,	-0.679697393387531550,	-0.679734067169911030,	-0.679770739252955720,	-0.679807409636573270,	-0.679844078320672280,	
+-0.679880745305161400,	-0.679917410589948370,	-0.679954074174941690,	-0.679990736060049890,	-0.680027396245181270,	-0.680064054730244560,	-0.680100711515147280,	-0.680137366599798290,	
+-0.680174019984106090,	-0.680210671667978660,	-0.680247321651324510,	-0.680283969934051940,	-0.680320616516069900,	-0.680357261397285920,	-0.680393904577608840,	-0.680430546056947310,	
+-0.680467185835209150,	-0.680503823912302910,	-0.680540460288137190,	-0.680577094962620310,	-0.680613727935660990,	-0.680650359207166990,	-0.680686988777047140,	-0.680723616645210190,	
+-0.680760242811563780,	-0.680796867276016850,	-0.680833490038477710,	-0.680870111098854870,	-0.680906730457057070,	-0.680943348112992060,	-0.680979964066568800,	-0.681016578317695800,	
+-0.681053190866281130,	-0.681089801712233430,	-0.681126410855461330,	-0.681163018295873450,	-0.681199624033377750,	-0.681236228067882870,	-0.681272830399297870,	-0.681309431027530390,	
+-0.681346029952489380,	-0.681382627174083270,	-0.681419222692220660,	-0.681455816506810200,	-0.681492408617759950,	-0.681528999024978650,	-0.681565587728375170,	-0.681602174727857450,	
+-0.681638760023334230,	-0.681675343614714160,	-0.681711925501905740,	-0.681748505684817820,	-0.681785084163358260,	-0.681821660937436350,	-0.681858236006959940,	-0.681894809371838000,	
+-0.681931381031979030,	-0.681967950987291570,	-0.682004519237684570,	-0.682041085783065880,	-0.682077650623344580,	-0.682114213758429400,	-0.682150775188228420,	-0.682187334912650490,	
+-0.682223892931604240,	-0.682260449244998180,	-0.682297003852741390,	-0.682333556754741720,	-0.682370107950908240,	-0.682406657441149810,	-0.682443205225374380,	-0.682479751303490810,	
+-0.682516295675408060,	-0.682552838341034750,	-0.682589379300279080,	-0.682625918553049990,	-0.682662456099256460,	-0.682698991938806340,	-0.682735526071608810,	-0.682772058497572500,	
+-0.682808589216606030,	-0.682845118228618380,	-0.682881645533517600,	-0.682918171131212780,	-0.682954695021612770,	-0.682991217204625740,	-0.683027737680160670,	-0.683064256448126180,	
+-0.683100773508431120,	-0.683137288860984460,	-0.683173802505694260,	-0.683210314442469490,	-0.683246824671219330,	-0.683283333191851750,	-0.683319840004275920,	-0.683356345108400380,	
+-0.683392848504134290,	-0.683429350191385840,	-0.683465850170064000,	-0.683502348440077840,	-0.683538845001335440,	-0.683575339853745970,	-0.683611832997218170,	-0.683648324431660790,	
+-0.683684814156982900,	-0.683721302173092570,	-0.683757788479899100,	-0.683794273077311440,	-0.683830755965237790,	-0.683867237143587210,	-0.683903716612268560,	-0.683940194371190690,	
+-0.683976670420262560,	-0.684013144759392460,	-0.684049617388489910,	-0.684086088307462870,	-0.684122557516220640,	-0.684159025014672070,	-0.684195490802725900,	-0.684231954880291320,	
+-0.684268417247276490,	-0.684304877903590740,	-0.684341336849143000,	-0.684377794083841580,	-0.684414249607595780,	-0.684450703420314330,	-0.684487155521906090,	-0.684523605912280230,	
+-0.684560054591345170,	-0.684596501559009860,	-0.684632946815183720,	-0.684669390359774810,	-0.684705832192692430,	-0.684742272313845430,	-0.684778710723143110,	-0.684815147420493760,	
+-0.684851582405806460,	-0.684888015678990600,	-0.684924447239954270,	-0.684960877088606980,	-0.684997305224857360,	-0.685033731648614590,	-0.685070156359787630,	-0.685106579358285120,	
+-0.685143000644016120,	-0.685179420216889930,	-0.685215838076814850,	-0.685252254223700170,	-0.685288668657454970,	-0.685325081377987980,	-0.685361492385208600,	-0.685397901679025260,	
+-0.685434309259347120,	-0.685470715126083490,	-0.685507119279142760,	-0.685543521718434250,	-0.685579922443867010,	-0.685616321455350230,	-0.685652718752792320,	-0.685689114336102580,	
+-0.685725508205190400,	-0.685761900359964090,	-0.685798290800333050,	-0.685834679526206360,	-0.685871066537492970,	-0.685907451834102180,	-0.685943835415942390,	-0.685980217282923020,	
+-0.686016597434953470,	-0.686052975871942140,	-0.686089352593798330,	-0.686125727600431110,	-0.686162100891749670,	-0.686198472467663190,	-0.686234842328080300,	-0.686271210472910510,	
+-0.686307576902062460,	-0.686343941615445540,	-0.686380304612968620,	-0.686416665894540980,	-0.686453025460072030,	-0.686489383309470180,	-0.686525739442644830,	-0.686562093859505510,	
+-0.686598446559960610,	-0.686634797543919650,	-0.686671146811291600,	-0.686707494361985750,	-0.686743840195911500,	-0.686780184312977270,	-0.686816526713092570,	-0.686852867396166910,	
+-0.686889206362108820,	-0.686925543610827690,	-0.686961879142232610,	-0.686998212956233200,	-0.687034545052737980,	-0.687070875431656350,	-0.687107204092897830,	-0.687143531036371050,	
+-0.687179856261985410,	-0.687216179769650100,	-0.687252501559274420,	-0.687288821630767770,	-0.687325139984038770,	-0.687361456618996840,	-0.687397771535551590,	-0.687434084733611670,	
+-0.687470396213086480,	-0.687506705973885300,	-0.687543014015917440,	-0.687579320339092300,	-0.687615624943318520,	-0.687651927828506040,	-0.687688228994563390,	-0.687724528441400200,	
+-0.687760826168925640,	-0.687797122177049030,	-0.687833416465679970,	-0.687869709034726990,	-0.687905999884099840,	-0.687942289013707910,	-0.687978576423459940,	-0.688014862113265570,	
+-0.688051146083034080,	-0.688087428332674670,	-0.688123708862097060,	-0.688159987671209780,	-0.688196264759922570,	-0.688232540128145050,	-0.688268813775785860,	-0.688305085702754620,	
+-0.688341355908960620,	-0.688377624394313600,	-0.688413891158722090,	-0.688450156202096040,	-0.688486419524344750,	-0.688522681125377180,	-0.688558941005102950,	-0.688595199163431260,	
+-0.688631455600271610,	-0.688667710315533640,	-0.688703963309126090,	-0.688740214580958690,	-0.688776464130941070,	-0.688812711958981860,	-0.688848958064990910,	-0.688885202448877630,	
+-0.688921445110551200,	-0.688957686049921580,	-0.688993925266897510,	-0.689030162761388510,	-0.689066398533304430,	-0.689102632582554110,	-0.689138864909047080,	-0.689175095512692960,	
+-0.689211324393401490,	-0.689247551551081310,	-0.689283776985642250,	-0.689320000696994060,	-0.689356222685045590,	-0.689392442949706590,	-0.689428661490886440,	-0.689464878308494570,	
+-0.689501093402440920,	-0.689537306772634140,	-0.689573518418984180,	-0.689609728341400660,	-0.689645936539792560,	-0.689682143014069600,	-0.689718347764141320,	-0.689754550789917100,	
+-0.689790752091306910,	-0.689826951668219390,	-0.689863149520564930,	-0.689899345648252280,	-0.689935540051191180,	-0.689971732729291240,	-0.690007923682462000,	-0.690044112910613290,	
+-0.690080300413653980,	-0.690116486191493910,	-0.690152670244042920,	-0.690188852571209990,	-0.690225033172904840,	-0.690261212049037120,	-0.690297389199516440,	-0.690333564624252550,	
+-0.690369738323154510,	-0.690405910296132070,	-0.690442080543095190,	-0.690478249063952720,	-0.690514415858614730,	-0.690550580926990620,	-0.690586744268990360,	-0.690622905884523020,	
+-0.690659065773498340,	-0.690695223935826390,	-0.690731380371415900,	-0.690767535080177080,	-0.690803688062019420,	-0.690839839316852560,	-0.690875988844586340,	-0.690912136645129960,	
+-0.690948282718393150,	-0.690984427064285980,	-0.691020569682717410,	-0.691056710573597410,	-0.691092849736835600,	-0.691128987172341720,	-0.691165122880025630,	-0.691201256859796500,	
+-0.691237389111564180,	-0.691273519635238640,	-0.691309648430729060,	-0.691345775497945400,	-0.691381900836797290,	-0.691418024447194690,	-0.691454146329046780,	-0.691490266482263420,	
+-0.691526384906754780,	-0.691562501602429820,	-0.691598616569198630,	-0.691634729806970830,	-0.691670841315656260,	-0.691706951095164890,	-0.691743059145405900,	-0.691779165466289150,	
+-0.691815270057724920,	-0.691851372919622070,	-0.691887474051890880,	-0.691923573454441000,	-0.691959671127182150,	-0.691995767070024530,	-0.692031861282877080,	-0.692067953765650220,	
+-0.692104044518253360,	-0.692140133540596230,	-0.692176220832588780,	-0.692212306394140890,	-0.692248390225162490,	-0.692284472325562780,	-0.692320552695251830,	-0.692356631334139940,	
+-0.692392708242136060,	-0.692428783419150480,	-0.692464856865092850,	-0.692500928579873110,	-0.692536998563401450,	-0.692573066815586950,	-0.692609133336339780,	-0.692645198125570020,	
+-0.692681261183186960,	-0.692717322509100790,	-0.692753382103221350,	-0.692789439965458720,	-0.692825496095722190,	-0.692861550493921950,	-0.692897603159968070,	-0.692933654093769950,	
+-0.692969703295237550,	-0.693005750764281060,	-0.693041796500810100,	-0.693077840504734980,	-0.693113882775964970,	-0.693149923314410280,	-0.693185962119981070,	-0.693221999192586650,	
+-0.693258034532137190,	-0.693294068138542660,	-0.693330100011712910,	-0.693366130151558350,	-0.693402158557988040,	-0.693438185230912390,	-0.693474210170241580,	-0.693510233375884910,	
+-0.693546254847752670,	-0.693582274585754830,	-0.693618292589801570,	-0.693654308859802280,	-0.693690323395667270,	-0.693726336197306730,	-0.693762347264629930,	-0.693798356597547410,	
+-0.693834364195968890,	-0.693870370059804560,	-0.693906374188964500,	-0.693942376583358330,	-0.693978377242896130,	-0.694014376167488290,	-0.694050373357044230,	-0.694086368811474230,	
+-0.694122362530688370,	-0.694158354514596510,	-0.694194344763109150,	-0.694230333276135590,	-0.694266320053586460,	-0.694302305095371270,	-0.694338288401400330,	-0.694374269971583580,	
+-0.694410249805831210,	-0.694446227904053530,	-0.694482204266160030,	-0.694518178892060910,	-0.694554151781666800,	-0.694590122934886870,	-0.694626092351631640,	-0.694662060031811300,	
+-0.694698025975335700,	-0.694733990182115350,	-0.694769952652059760,	-0.694805913385079240,	-0.694841872381084300,	-0.694877829639984230,	-0.694913785161689780,	-0.694949738946110780,	
+-0.694985690993157770,	-0.695021641302740130,	-0.695057589874768510,	-0.695093536709153190,	-0.695129481805803700,	-0.695165425164630420,	-0.695201366785543670,	-0.695237306668453510,	
+-0.695273244813270350,	-0.695309181219903820,	-0.695345115888264310,	-0.695381048818262350,	-0.695416980009807450,	-0.695452909462810130,	-0.695488837177180460,	-0.695524763152828740,	
+-0.695560687389665370,	-0.695596609887600080,	-0.695632530646543180,	-0.695668449666405290,	-0.695704366947095920,	-0.695740282488525710,	-0.695776196290604720,	-0.695812108353243590,	
+-0.695848018676351820,	-0.695883927259840050,	-0.695919834103618800,	-0.695955739207597680,	-0.695991642571687220,	-0.696027544195797490,	-0.696063444079839110,	-0.696099342223722270,	
+-0.696135238627356820,	-0.696171133290653280,	-0.696207026213522260,	-0.696242917395873300,	-0.696278806837617110,	-0.696314694538663790,	-0.696350580498923840,	-0.696386464718307780,	
+-0.696422347196725130,	-0.696458227934086960,	-0.696494106930302890,	-0.696529984185283670,	-0.696565859698939360,	-0.696601733471180480,	-0.696637605501917560,	-0.696673475791060310,	
+-0.696709344338519390,	-0.696745211144205400,	-0.696781076208027980,	-0.696816939529897980,	-0.696852801109725580,	-0.696888660947421300,	-0.696924519042895540,	-0.696960375396058260,	
+-0.696996230006819980,	-0.697032082875091440,	-0.697067934000782370,	-0.697103783383803520,	-0.697139631024065180,	-0.697175476921478080,	-0.697211321075951960,	-0.697247163487397570,	
+-0.697283004155725530,	-0.697318843080845690,	-0.697354680262668780,	-0.697390515701105220,	-0.697426349396065290,	-0.697462181347459740,	-0.697498011555198530,	-0.697533840019192270,	
+-0.697569666739351720,	-0.697605491715586610,	-0.697641314947807900,	-0.697677136435925770,	-0.697712956179850960,	-0.697748774179493990,	-0.697784590434764710,	-0.697820404945574290,	
+-0.697856217711832590,	-0.697892028733450350,	-0.697927838010338090,	-0.697963645542406090,	-0.697999451329565420,	-0.698035255371725730,	-0.698071057668797960,	-0.698106858220692850,	
+-0.698142657027320150,	-0.698178454088590920,	-0.698214249404415570,	-0.698250042974704610,	-0.698285834799368790,	-0.698321624878318170,	-0.698357413211463380,	-0.698393199798715390,	
+-0.698428984639984150,	-0.698464767735180400,	-0.698500549084214770,	-0.698536328686997780,	-0.698572106543440150,	-0.698607882653452080,	-0.698643657016944530,	-0.698679429633827560,	
+-0.698715200504012040,	-0.698750969627408570,	-0.698786737003927570,	-0.698822502633480000,	-0.698858266515975930,	-0.698894028651326330,	-0.698929789039441810,	-0.698965547680232560,	
+-0.699001304573609320,	-0.699037059719482930,	-0.699072813117763920,	-0.699108564768363140,	-0.699144314671190650,	-0.699180062826157300,	-0.699215809233174170,	-0.699251553892151320,	
+-0.699287296802999390,	-0.699323037965629330,	-0.699358777379952000,	-0.699394515045877350,	-0.699430250963316460,	-0.699465985132180170,	-0.699501717552378670,	-0.699537448223822910,	
+-0.699573177146423530,	-0.699608904320091150,	-0.699644629744736850,	-0.699680353420270680,	-0.699716075346603520,	-0.699751795523646640,	-0.699787513951309890,	-0.699823230629504360,	
+-0.699858945558140770,	-0.699894658737129750,	-0.699930370166382380,	-0.699966079845808940,	-0.700001787775320410,	-0.700037493954827280,	-0.700073198384240310,	-0.700108901063470350,	
+-0.700144601992428120,	-0.700180301171024700,	-0.700215998599170280,	-0.700251694276775800,	-0.700287388203752470,	-0.700323080380010340,	-0.700358770805460500,	-0.700394459480013660,	
+-0.700430146403580700,	-0.700465831576072780,	-0.700501514997399880,	-0.700537196667473160,	-0.700572876586203820,	-0.700608554753502030,	-0.700644231169278760,	-0.700679905833444970,	
+-0.700715578745911730,	-0.700751249906589210,	-0.700786919315388610,	-0.700822586972220880,	-0.700858252876996550,	-0.700893917029626450,	-0.700929579430021650,	-0.700965240078092800,	
+-0.701000898973751290,	-0.701036556116907180,	-0.701072211507471680,	-0.701107865145355950,	-0.701143517030470180,	-0.701179167162725660,	-0.701214815542033240,	-0.701250462168303780,	
+-0.701286107041448450,	-0.701321750161377650,	-0.701357391528002360,	-0.701393031141233970,	-0.701428669000982660,	-0.701464305107159620,	-0.701499939459675930,	-0.701535572058442640,	
+-0.701571202903370050,	-0.701606831994369570,	-0.701642459331352280,	-0.701678084914228560,	-0.701713708742909500,	-0.701749330817306280,	-0.701784951137329750,	-0.701820569702891080,	
+-0.701856186513900690,	-0.701891801570269870,	-0.701927414871909790,	-0.701963026418730980,	-0.701998636210644510,	-0.702034244247561560,	-0.702069850529392860,	-0.702105455056049930,	
+-0.702141057827442960,	-0.702176658843483790,	-0.702212258104082610,	-0.702247855609150710,	-0.702283451358599260,	-0.702319045352339130,	-0.702354637590281720,	-0.702390228072337420,	
+-0.702425816798417530,	-0.702461403768433360,	-0.702496988982295510,	-0.702532572439915070,	-0.702568154141203220,	-0.702603734086071020,	-0.702639312274429770,	-0.702674888706189880,	
+-0.702710463381262860,	-0.702746036299559900,	-0.702781607460991610,	-0.702817176865469300,	-0.702852744512904030,	-0.702888310403207210,	-0.702923874536289350,	-0.702959436912061750,	
+-0.702994997530435820,	-0.703030556391322170,	-0.703066113494632110,	-0.703101668840276810,	-0.703137222428167230,	-0.703172774258215010,	-0.703208324330330430,	-0.703243872644425120,	
+-0.703279419200410480,	-0.703314963998196930,	-0.703350507037695970,	-0.703386048318818680,	-0.703421587841476350,	-0.703457125605580380,	-0.703492661611041180,	-0.703528195857770380,	
+-0.703563728345679480,	-0.703599259074678910,	-0.703634788044680160,	-0.703670315255594430,	-0.703705840707333220,	-0.703741364399807170,	-0.703776886332927560,	-0.703812406506606150,	
+-0.703847924920753430,	-0.703883441575280930,	-0.703918956470099720,	-0.703954469605121200,	-0.703989980980256780,	-0.704025490595417080,	-0.704060998450513730,	-0.704096504545458140,	
+-0.704132008880160920,	-0.704167511454533710,	-0.704203012268487800,	-0.704238511321934270,	-0.704274008614784840,	-0.704309504146950040,	-0.704344997918341820,	-0.704380489928870810,	
+-0.704415980178448530,	-0.704451468666986270,	-0.704486955394395430,	-0.704522440360587420,	-0.704557923565473090,	-0.704593405008963840,	-0.704628884690971510,	-0.704664362611406640,	
+-0.704699838770180830,	-0.704735313167205390,	-0.704770785802391720,	-0.704806256675651330,	-0.704841725786895080,	-0.704877193136034360,	-0.704912658722981140,	-0.704948122547645940,	
+-0.704983584609940370,	-0.705019044909775850,	-0.705054503447064000,	-0.705089960221715660,	-0.705125415233642360,	-0.705160868482755830,	-0.705196319968966810,	-0.705231769692187040,	
+-0.705267217652327800,	-0.705302663849300520,	-0.705338108283017020,	-0.705373550953387830,	-0.705408991860324800,	-0.705444431003739550,	-0.705479868383542930,	-0.705515303999646570,	
+-0.705550737851962100,	-0.705586169940400690,	-0.705621600264874190,	-0.705657028825293350,	-0.705692455621569900,	-0.705727880653615690,	-0.705763303921341460,	-0.705798725424658930,	
+-0.705834145163479640,	-0.705869563137715320,	-0.705904979347276810,	-0.705940393792075740,	-0.705975806472024070,	-0.706011217387032540,	-0.706046626537013000,	-0.706082033921876850,	
+-0.706117439541535610,	-0.706152843395901120,	-0.706188245484884240,	-0.706223645808396690,	-0.706259044366350340,	-0.706294441158656030,	-0.706329836185225710,	-0.706365229445970690,	
+-0.706400620940802690,	-0.706436010669633460,	-0.706471398632373850,	-0.706506784828936030,	-0.706542169259230970,	-0.706577551923170510,	-0.706612932820666170,	-0.706648311951629470,	
+-0.706683689315972250,	-0.706719064913605590,	-0.706754438744441220,	-0.706789810808391090,	-0.706825181105366070,	-0.706860549635278220,	-0.706895916398038840,	-0.706931281393559760,	
+-0.706966644621752740,	-0.707002006082528830,	-0.707037365775799900,	-0.707072723701477890,	-0.707108079859473770,	-0.707143434249699390,	-0.707178786872066480,	-0.707214137726486890,	
+-0.707249486812871590,	-0.707284834131132630,	-0.707320179681181880,	-0.707355523462930400,	-0.707390865476290150,	-0.707426205721172650,	-0.707461544197489630,	-0.707496880905153170,	
+-0.707532215844074110,	-0.707567549014164520,	-0.707602880415336370,	-0.707638210047500720,	-0.707673537910569530,	-0.707708864004454540,	-0.707744188329067380,	-0.707779510884319900,	
+-0.707814831670123490,	-0.707850150686390010,	-0.707885467933031420,	-0.707920783409958900,	-0.707956097117084400,	-0.707991409054319680,	-0.708026719221576670,	-0.708062027618766580,	
+-0.708097334245801460,	-0.708132639102593280,	-0.708167942189053210,	-0.708203243505093230,	-0.708238543050625170,	-0.708273840825560770,	-0.708309136829812110,	-0.708344431063290260,	
+-0.708379723525907280,	-0.708415014217575360,	-0.708450303138205670,	-0.708485590287710190,	-0.708520875666000640,	-0.708556159272988980,	-0.708591441108587180,	-0.708626721172706530,	
+-0.708661999465259320,	-0.708697275986156840,	-0.708732550735311160,	-0.708767823712634140,	-0.708803094918037500,	-0.708838364351433440,	-0.708873632012733120,	-0.708908897901848860,	
+-0.708944162018692590,	-0.708979424363175630,	-0.709014684935210030,	-0.709049943734707750,	-0.709085200761580660,	-0.709120456015740810,	-0.709155709497099610,	-0.709190961205569010,	
+-0.709226211141061440,	-0.709261459303487940,	-0.709296705692760820,	-0.709331950308791930,	-0.709367193151493550,	-0.709402434220776760,	-0.709437673516553960,	-0.709472911038737330,	
+-0.709508146787237950,	-0.709543380761968320,	-0.709578612962840300,	-0.709613843389765630,	-0.709649072042656700,	-0.709684298921424820,	-0.709719524025982150,	-0.709754747356240890,	
+-0.709789968912112550,	-0.709825188693509300,	-0.709860406700343120,	-0.709895622932525840,	-0.709930837389969870,	-0.709966050072586510,	-0.710001260980288260,	-0.710036470112986540,	
+-0.710071677470593740,	-0.710106883053021720,	-0.710142086860182430,	-0.710177288891988170,	-0.710212489148350560,	-0.710247687629181670,	-0.710282884334393790,	-0.710318079263898450,	
+-0.710353272417607930,	-0.710388463795434190,	-0.710423653397289300,	-0.710458841223085560,	-0.710494027272734470,	-0.710529211546148340,	-0.710564394043239340,	-0.710599574763919220,	
+-0.710634753708100030,	-0.710669930875694080,	-0.710705106266613540,	-0.710740279880769820,	-0.710775451718075550,	-0.710810621778442900,	-0.710845790061783500,	-0.710880956568009540,	
+-0.710916121297033190,	-0.710951284248766520,	-0.710986445423121950,	-0.711021604820010870,	-0.711056762439345900,	-0.711091918281039350,	-0.711127072345002610,	-0.711162224631148200,	
+-0.711197375139388300,	-0.711232523869634870,	-0.711267670821800540,	-0.711302815995796700,	-0.711337959391535770,	-0.711373101008930250,	-0.711408240847891780,	-0.711443378908332540,	
+-0.711478515190165030,	-0.711513649693301440,	-0.711548782417653400,	-0.711583913363133420,	-0.711619042529654020,	-0.711654169917126600,	-0.711689295525463890,	-0.711724419354577750,	
+-0.711759541404380800,	-0.711794661674785110,	-0.711829780165702530,	-0.711864896877045460,	-0.711900011808726530,	-0.711935124960657250,	-0.711970236332750140,	-0.712005345924917380,	
+-0.712040453737071370,	-0.712075559769124510,	-0.712110664020988440,	-0.712145766492575990,	-0.712180867183798800,	-0.712215966094569500,	-0.712251063224800250,	-0.712286158574403250,	
+-0.712321252143291340,	-0.712356343931375810,	-0.712391433938569520,	-0.712426522164784970,	-0.712461608609933790,	-0.712496693273928620,	-0.712531776156681620,	-0.712566857258105200,	
+-0.712601936578111990,	-0.712637014116613620,	-0.712672089873522710,	-0.712707163848751880,	-0.712742236042212870,	-0.712777306453818320,	-0.712812375083480390,	-0.712847441931111940,	
+-0.712882506996624480,	-0.712917570279930750,	-0.712952631780943370,	-0.712987691499574190,	-0.713022749435735740,	-0.713057805589340510,	-0.713092859960300700,	-0.713127912548529030,	
+-0.713162963353937250,	-0.713198012376438100,	-0.713233059615944190,	-0.713268105072367380,	-0.713303148745620290,	-0.713338190635615320,	-0.713373230742264890,	-0.713408269065481710,	
+-0.713443305605177440,	-0.713478340361265010,	-0.713513373333657050,	-0.713548404522265310,	-0.713583433927002520,	-0.713618461547781190,	-0.713653487384513950,	-0.713688511437112760,	
+-0.713723533705490350,	-0.713758554189559250,	-0.713793572889231620,	-0.713828589804419880,	-0.713863604935036870,	-0.713898618280994770,	-0.713933629842206320,	-0.713968639618583590,	
+-0.714003647610039200,	-0.714038653816486120,	-0.714073658237835970,	-0.714108660874001710,	-0.714143661724895850,	-0.714178660790430800,	-0.714213658070519400,	-0.714248653565073610,	
+-0.714283647274006390,	-0.714318639197229820,	-0.714353629334656630,	-0.714388617686199320,	-0.714423604251770540,	-0.714458589031283120,	-0.714493572024648800,	-0.714528553231780550,	
+-0.714563532652591200,	-0.714598510286992840,	-0.714633486134898080,	-0.714668460196219660,	-0.714703432470870090,	-0.714738402958762230,	-0.714773371659808030,	-0.714808338573920450,	
+-0.714843303701012340,	-0.714878267040995660,	-0.714913228593783370,	-0.714948188359287860,	-0.714983146337422330,	-0.715018102528098500,	-0.715053056931229450,	-0.715088009546728130,	
+-0.715122960374506400,	-0.715157909414477320,	-0.715192856666553520,	-0.715227802130647410,	-0.715262745806672260,	-0.715297687694539830,	-0.715332627794163290,	-0.715367566105455490,	
+-0.715402502628328390,	-0.715437437362695050,	-0.715472370308468110,	-0.715507301465560190,	-0.715542230833884460,	-0.715577158413352790,	-0.715612084203878230,	-0.715647008205373640,	
+-0.715681930417751410,	-0.715716850840924290,	-0.715751769474805010,	-0.715786686319306640,	-0.715821601374341250,	-0.715856514639821810,	-0.715891426115661370,	-0.715926335801772120,	
+-0.715961243698067020,	-0.715996149804458910,	-0.716031054120860320,	-0.716065956647184310,	-0.716100857383343280,	-0.716135756329250080,	-0.716170653484817680,	-0.716205548849958460,	
+-0.716240442424585290,	-0.716275334208611000,	-0.716310224201948450,	-0.716345112404510600,	-0.716379998816209730,	-0.716414883436959030,	-0.716449766266670900,	-0.716484647305258400,	
+-0.716519526552634290,	-0.716554404008711290,	-0.716589279673402580,	-0.716624153546620460,	-0.716659025628277880,	-0.716693895918288030,	-0.716728764416563190,	-0.716763631123016330,	
+-0.716798496037560520,	-0.716833359160108370,	-0.716868220490573190,	-0.716903080028867160,	-0.716937937774903440,	-0.716972793728595130,	-0.717007647889854600,	-0.717042500258594840,	
+-0.717077350834728900,	-0.717112199618169850,	-0.717147046608830110,	-0.717181891806622620,	-0.717216735211460790,	-0.717251576823256800,	-0.717286416641923830,	-0.717321254667374840,	
+-0.717356090899522790,	-0.717390925338280640,	-0.717425757983561010,	-0.717460588835276970,	-0.717495417893341700,	-0.717530245157667610,	-0.717565070628167990,	-0.717599894304755680,	
+-0.717634716187343540,	-0.717669536275844950,	-0.717704354570172230,	-0.717739171070238550,	-0.717773985775957300,	-0.717808798687240790,	-0.717843609804002300,	-0.717878419126154800,	
+-0.717913226653611570,	-0.717948032386284910,	-0.717982836324088210,	-0.718017638466934670,	-0.718052438814736790,	-0.718087237367407760,	-0.718122034124860640,	-0.718156829087008510,	
+-0.718191622253764540,	-0.718226413625041250,	-0.718261203200751930,	-0.718295990980809870,	-0.718330776965127480,	-0.718365561153618270,	-0.718400343546195090,	-0.718435124142771110,	
+-0.718469902943259520,	-0.718504679947572940,	-0.718539455155624900,	-0.718574228567328000,	-0.718609000182595440,	-0.718643770001340500,	-0.718678538023476030,	-0.718713304248915550,	
+-0.718748068677571570,	-0.718782831309357380,	-0.718817592144186390,	-0.718852351181971110,	-0.718887108422624930,	-0.718921863866061050,	-0.718956617512192420,	-0.718991369360932660,	
+-0.719026119412194080,	-0.719060867665890280,	-0.719095614121934570,	-0.719130358780239560,	-0.719165101640718560,	-0.719199842703284850,	-0.719234581967851950,	-0.719269319434332250,	
+-0.719304055102639170,	-0.719338788972686330,	-0.719373521044386120,	-0.719408251317652070,	-0.719442979792397570,	-0.719477706468535480,	-0.719512431345979530,	-0.719547154424642120,	
+-0.719581875704436880,	-0.719616595185277210,	-0.719651312867075840,	-0.719686028749745970,	-0.719720742833201200,	-0.719755455117354610,	-0.719790165602119610,	-0.719824874287408930,	
+-0.719859581173136310,	-0.719894286259214480,	-0.719928989545556950,	-0.719963691032076800,	-0.719998390718687540,	-0.720033088605302680,	-0.720067784691834740,	-0.720102478978197350,	
+-0.720137171464304000,	-0.720171862150067450,	-0.720206551035401210,	-0.720241238120218670,	-0.720275923404433030,	-0.720310606887957890,	-0.720345288570705790,	-0.720379968452590670,	
+-0.720414646533525830,	-0.720449322813424110,	-0.720483997292199030,	-0.720518669969763880,	-0.720553340846032510,	-0.720588009920917430,	-0.720622677194332370,	-0.720657342666190860,	
+-0.720692006336405620,	-0.720726668204890510,	-0.720761328271558700,	-0.720795986536323490,	-0.720830642999098710,	-0.720865297659797010,	-0.720899950518332000,	-0.720934601574617420,	
+-0.720969250828566110,	-0.721003898280091590,	-0.721038543929107380,	-0.721073187775526760,	-0.721107829819263470,	-0.721142470060230470,	-0.721177108498341160,	-0.721211745133509390,	
+-0.721246379965647890,	-0.721281012994670510,	-0.721315644220490660,	-0.721350273643021960,	-0.721384901262177140,	-0.721419527077870270,	-0.721454151090014760,	-0.721488773298523570,	
+-0.721523393703310530,	-0.721558012304288840,	-0.721592629101372230,	-0.721627244094474430,	-0.721661857283508180,	-0.721696468668387210,	-0.721731078249025380,	-0.721765686025335640,	
+-0.721800291997231610,	-0.721834896164626820,	-0.721869498527434870,	-0.721904099085569410,	-0.721938697838943490,	-0.721973294787471080,	-0.722007889931065130,	-0.722042483269639380,	
+-0.722077074803107570,	-0.722111664531382870,	-0.722146252454379580,	-0.722180838572010100,	-0.722215422884188610,	-0.722250005390828950,	-0.722284586091843980,	-0.722319164987147430,	
+-0.722353742076653040,	-0.722388317360274200,	-0.722422890837924990,	-0.722457462509518140,	-0.722492032374967730,	-0.722526600434187590,	-0.722561166687090580,	-0.722595731133590550,	
+-0.722630293773601330,	-0.722664854607036670,	-0.722699413633809410,	-0.722733970853833840,	-0.722768526267023480,	-0.722803079873291620,	-0.722837631672551990,	-0.722872181664718340,	
+-0.722906729849704170,	-0.722941276227423550,	-0.722975820797789330,	-0.723010363560715570,	-0.723044904516116360,	-0.723079443663904420,	-0.723113981003993930,	-0.723148516536298520,	
+-0.723183050260731710,	-0.723217582177207770,	-0.723252112285639350,	-0.723286640585940830,	-0.723321167078025960,	-0.723355691761807810,	-0.723390214637200430,	-0.723424735704117580,	
+-0.723459254962473210,	-0.723493772412180380,	-0.723528288053153060,	-0.723562801885305310,	-0.723597313908550310,	-0.723631824122802030,	-0.723666332527974190,	-0.723700839123980530,	
+-0.723735343910735020,	-0.723769846888150940,	-0.723804348056142130,	-0.723838847414622900,	-0.723873344963506080,	-0.723907840702705970,	-0.723942334632136310,	-0.723976826751710710,	
+-0.724011317061343470,	-0.724045805560947550,	-0.724080292250437460,	-0.724114777129726270,	-0.724149260198728160,	-0.724183741457356980,	-0.724218220905526340,	-0.724252698543150550,	
+-0.724287174370142670,	-0.724321648386416770,	-0.724356120591887140,	-0.724390590986466850,	-0.724425059570070200,	-0.724459526342610790,	-0.724493991304002600,	-0.724528454454159700,	
+-0.724562915792995480,	-0.724597375320423900,	-0.724631833036359140,	-0.724666288940714500,	-0.724700743033404260,	-0.724735195314341940,	-0.724769645783442160,	-0.724804094440617890,	
+-0.724838541285783400,	-0.724872986318852770,	-0.724907429539739410,	-0.724941870948357490,	-0.724976310544620860,	-0.725010748328443590,	-0.725045184299739630,	-0.725079618458422390,	
+-0.725114050804406160,	-0.725148481337605010,	-0.725182910057932450,	-0.725217336965302660,	-0.725251762059629490,	-0.725286185340826780,	-0.725320606808809050,	-0.725355026463489480,	
+-0.725389444304782360,	-0.725423860332601870,	-0.725458274546861510,	-0.725492686947475370,	-0.725527097534357620,	-0.725561506307422330,	-0.725595913266583010,	-0.725630318411753960,	
+-0.725664721742849350,	-0.725699123259782590,	-0.725733522962468180,	-0.725767920850819760,	-0.725802316924751610,	-0.725836711184178030,	-0.725871103629012420,	-0.725905494259168950,	
+-0.725939883074562140,	-0.725974270075105180,	-0.726008655260712680,	-0.726043038631298380,	-0.726077420186776570,	-0.726111799927061650,	-0.726146177852066700,	-0.726180553961706780,	
+-0.726214928255895060,	-0.726249300734546080,	-0.726283671397573770,	-0.726318040244892440,	-0.726352407276416150,	-0.726386772492058630,	-0.726421135891734180,	-0.726455497475357200,	
+-0.726489857242841100,	-0.726524215194100380,	-0.726558571329049220,	-0.726592925647601470,	-0.726627278149671870,	-0.726661628835173710,	-0.726695977704021390,	-0.726730324756129530,	
+-0.726764669991411540,	-0.726799013409781920,	-0.726833355011154650,	-0.726867694795444440,	-0.726902032762564600,	-0.726936368912429630,	-0.726970703244954050,	-0.727005035760051490,	
+-0.727039366457636340,	-0.727073695337622670,	-0.727108022399924890,	-0.727142347644457290,	-0.727176671071133600,	-0.727210992679868110,	-0.727245312470575440,	-0.727279630443169340,	
+-0.727313946597563990,	-0.727348260933673880,	-0.727382573451413110,	-0.727416884150696160,	-0.727451193031436680,	-0.727485500093549290,	-0.727519805336948490,	-0.727554108761547800,	
+-0.727588410367261850,	-0.727622710154004810,	-0.727657008121691320,	-0.727691304270235100,	-0.727725598599550550,	-0.727759891109552300,	-0.727794181800154090,	-0.727828470671270320,	
+-0.727862757722815500,	-0.727897042954703700,	-0.727931326366849650,	-0.727965607959166870,	-0.727999887731570210,	-0.728034165683974050,	-0.728068441816292160,	-0.728102716128439240,	
+-0.728136988620329490,	-0.728171259291877200,	-0.728205528142997220,	-0.728239795173603040,	-0.728274060383609640,	-0.728308323772930870,	-0.728342585341481220,	-0.728376845089175000,	
+-0.728411103015926820,	-0.728445359121651200,	-0.728479613406261880,	-0.728513865869673370,	-0.728548116511800630,	-0.728582365332557380,	-0.728616612331858040,	-0.728650857509617220,	
+-0.728685100865749340,	-0.728719342400168890,	-0.728753582112789840,	-0.728787820003526820,	-0.728822056072294560,	-0.728856290319006890,	-0.728890522743578460,	-0.728924753345923770,	
+-0.728958982125957440,	-0.728993209083593330,	-0.729027434218746270,	-0.729061657531330900,	-0.729095879021261160,	-0.729130098688451690,	-0.729164316532816880,	-0.729198532554271360,	
+-0.729232746752729750,	-0.729266959128106020,	-0.729301169680314890,	-0.729335378409271100,	-0.729369585314888490,	-0.729403790397082140,	-0.729437993655766110,	-0.729472195090855260,	
+-0.729506394702264080,	-0.729540592489906660,	-0.729574788453698050,	-0.729608982593552220,	-0.729643174909383910,	-0.729677365401107720,	-0.729711554068637970,	-0.729745740911889710,	
+-0.729779925930776900,	-0.729814109125214160,	-0.729848290495116460,	-0.729882470040397750,	-0.729916647760972870,	-0.729950823656756340,	-0.729984997727662790,	-0.730019169973606940,	
+-0.730053340394502980,	-0.730087508990265640,	-0.730121675760809890,	-0.730155840706049550,	-0.730190003825899710,	-0.730224165120274770,	-0.730258324589089680,	-0.730292482232258620,	
+-0.730326638049696330,	-0.730360792041317650,	-0.730394944207036770,	-0.730429094546768410,	-0.730463243060427430,	-0.730497389747928330,	-0.730531534609186070,	-0.730565677644114620,	
+-0.730599818852629030,	-0.730633958234644170,	-0.730668095790074080,	-0.730702231518833730,	-0.730736365420837860,	-0.730770497496001090,	-0.730804627744238380,	-0.730838756165463790,	
+-0.730872882759592280,	-0.730907007526538920,	-0.730941130466217670,	-0.730975251578543590,	-0.731009370863431430,	-0.731043488320796130,	-0.731077603950551770,	-0.731111717752613410,	
+-0.731145829726896120,	-0.731179939873313980,	-0.731214048191781930,	-0.731248154682214710,	-0.731282259344527170,	-0.731316362178634270,	-0.731350463184450180,	-0.731384562361889980,	
+-0.731418659710868500,	-0.731452755231300270,	-0.731486848923100010,	-0.731520940786182680,	-0.731555030820463030,	-0.731589119025855990,	-0.731623205402275990,	-0.731657289949638190,	
+-0.731691372667856890,	-0.731725453556847150,	-0.731759532616523820,	-0.731793609846801640,	-0.731827685247595780,	-0.731861758818820320,	-0.731895830560390540,	-0.731929900472221510,	
+-0.731963968554227300,	-0.731998034806323190,	-0.732032099228424050,	-0.732066161820444710,	-0.732100222582300120,	-0.732134281513904810,	-0.732168338615173720,	-0.732202393886022040,	
+-0.732236447326364170,	-0.732270498936115180,	-0.732304548715189910,	-0.732338596663503650,	-0.732372642780970470,	-0.732406687067505780,	-0.732440729523024640,	-0.732474770147441330,	
+-0.732508808940671050,	-0.732542845902628860,	-0.732576881033229600,	-0.732610914332388340,	-0.732644945800019490,	-0.732678975436038330,	-0.732713003240359930,	-0.732747029212898800,	
+-0.732781053353570130,	-0.732815075662288870,	-0.732849096138969760,	-0.732883114783528300,	-0.732917131595878790,	-0.732951146575936410,	-0.732985159723616440,	-0.733019171038833290,	
+-0.733053180521502260,	-0.733087188171538170,	-0.733121193988856560,	-0.733155197973371480,	-0.733189200124998550,	-0.733223200443652860,	-0.733257198929248900,	-0.733291195581701970,	
+-0.733325190400927030,	-0.733359183386839030,	-0.733393174539353490,	-0.733427163858384580,	-0.733461151343847930,	-0.733495136995658600,	-0.733529120813731120,	-0.733563102797980870,	
+-0.733597082948322820,	-0.733631061264672150,	-0.733665037746944030,	-0.733699012395053090,	-0.733732985208914830,	-0.733766956188443900,	-0.733800925333555560,	-0.733834892644164900,	
+-0.733868858120186980,	-0.733902821761537210,	-0.733936783568130190,	-0.733970743539881120,	-0.734004701676705510,	-0.734038657978517860,	-0.734072612445233470,	-0.734106565076767640,	
+-0.734140515873035420,	-0.734174464833952100,	-0.734208411959432430,	-0.734242357249391690,	-0.734276300703745390,	-0.734310242322408050,	-0.734344182105295060,	-0.734378120052321610,	
+-0.734412056163403100,	-0.734445990438454270,	-0.734479922877390390,	-0.734513853480126990,	-0.734547782246578800,	-0.734581709176660990,	-0.734615634270288980,	-0.734649557527377820,	
+-0.734683478947843140,	-0.734717398531599450,	-0.734751316278562270,	-0.734785232188647110,	-0.734819146261768590,	-0.734853058497842100,	-0.734886968896783070,	-0.734920877458506540,	
+-0.734954784182928140,	-0.734988689069962400,	-0.735022592119525030,	-0.735056493331531560,	-0.735090392705896490,	-0.735124290242535450,	-0.735158185941363620,	-0.735192079802296620,	
+-0.735225971825249180,	-0.735259862010136820,	-0.735293750356875050,	-0.735327636865378610,	-0.735361521535563110,	-0.735395404367343850,	-0.735429285360636010,	-0.735463164515355210,	
+-0.735497041831416290,	-0.735530917308734770,	-0.735564790947226270,	-0.735598662746805410,	-0.735632532707387930,	-0.735666400828889120,	-0.735700267111224270,	-0.735734131554309110,	
+-0.735767994158058380,	-0.735801854922387810,	-0.735835713847212360,	-0.735869570932447650,	-0.735903426178009080,	-0.735937279583811830,	-0.735971131149771750,	-0.736004980875803570,	
+-0.736038828761822810,	-0.736072674807745410,	-0.736106519013485890,	-0.736140361378960220,	-0.736174201904083560,	-0.736208040588771430,	-0.736241877432939450,	-0.736275712436502580,	
+-0.736309545599376340,	-0.736343376921476560,	-0.736377206402717980,	-0.736411034043016440,	-0.736444859842287360,	-0.736478683800446340,	-0.736512505917408360,	-0.736546326193089130,	
+-0.736580144627404400,	-0.736613961220268900,	-0.736647775971598580,	-0.736681588881308860,	-0.736715399949315120,	-0.736749209175533220,	-0.736783016559877880,	-0.736816822102265070,	
+-0.736850625802610510,	-0.736884427660829180,	-0.736918227676836680,	-0.736952025850548530,	-0.736985822181880470,	-0.737019616670748110,	-0.737053409317066420,	-0.737087200120751130,	
+-0.737120989081718190,	-0.737154776199882460,	-0.737188561475159760,	-0.737222344907465740,	-0.737256126496716120,	-0.737289906242825870,	-0.737323684145710920,	-0.737357460205287030,	
+-0.737391234421469140,	-0.737425006794173220,	-0.737458777323314770,	-0.737492546008809310,	-0.737526312850572800,	-0.737560077848520290,	-0.737593841002567530,	-0.737627602312630470,	
+-0.737661361778624180,	-0.737695119400464390,	-0.737728875178066850,	-0.737762629111347050,	-0.737796381200221060,	-0.737830131444603850,	-0.737863879844411490,	-0.737897626399559140,	
+-0.737931371109962870,	-0.737965113975538100,	-0.737998854996200440,	-0.738032594171866060,	-0.738066331502449820,	-0.738100066987867900,	-0.738133800628036020,	-0.738167532422869250,	
+-0.738201262372283780,	-0.738234990476195120,	-0.738268716734518990,	-0.738302441147171250,	-0.738336163714067180,	-0.738369884435122750,	-0.738403603310253900,	-0.738437320339375700,	
+-0.738471035522404230,	-0.738504748859255210,	-0.738538460349844610,	-0.738572169994087480,	-0.738605877791900010,	-0.738639583743198050,	-0.738673287847896880,	-0.738706990105912450,	
+-0.738740690517160630,	-0.738774389081557010,	-0.738808085799017800,	-0.738841780669458050,	-0.738875473692793830,	-0.738909164868941200,	-0.738942854197815360,	-0.738976541679332470,	
+-0.739010227313408150,	-0.739043911099958260,	-0.739077593038898860,	-0.739111273130145240,	-0.739144951373613690,	-0.739178627769219500,	-0.739212302316878840,	-0.739245975016507240,	
+-0.739279645868020860,	-0.739313314871335560,	-0.739346982026366620,	-0.739380647333030330,	-0.739414310791242760,	-0.739447972400919080,	-0.739481632161975380,	-0.739515290074327700,	
+-0.739548946137891680,	-0.739582600352583720,	-0.739616252718318990,	-0.739649903235013450,	-0.739683551902583610,	-0.739717198720944550,	-0.739750843690012430,	-0.739784486809703210,	
+-0.739818128079932860,	-0.739851767500617430,	-0.739885405071672330,	-0.739919040793013960,	-0.739952674664557720,	-0.739986306686219790,	-0.740019936857916120,	-0.740053565179562560,	
+-0.740087191651075390,	-0.740120816272369920,	-0.740154439043362420,	-0.740188059963969190,	-0.740221679034105410,	-0.740255296253687580,	-0.740288911622631330,	-0.740322525140852950,	
+-0.740356136808268510,	-0.740389746624793400,	-0.740423354590343920,	-0.740456960704836350,	-0.740490564968186100,	-0.740524167380309460,	-0.740557767941122380,	-0.740591366650541150,	
+-0.740624963508481280,	-0.740658558514858960,	-0.740692151669590570,	-0.740725742972591420,	-0.740759332423778010,	-0.740792920023066180,	-0.740826505770372120,	-0.740860089665612120,	
+-0.740893671708701460,	-0.740927251899556770,	-0.740960830238094230,	-0.740994406724229230,	-0.741027981357878280,	-0.741061554138957360,	-0.741095125067382510,	-0.741128694143070140,	
+-0.741162261365935880,	-0.741195826735896120,	-0.741229390252866600,	-0.741262951916763500,	-0.741296511727503100,	-0.741330069685001370,	-0.741363625789174810,	-0.741397180039938820,	
+-0.741430732437210030,	-0.741464282980904500,	-0.741497831670938080,	-0.741531378507227060,	-0.741564923489687610,	-0.741598466618235810,	-0.741632007892788160,	-0.741665547313260290,	
+-0.741699084879568480,	-0.741732620591629250,	-0.741766154449358120,	-0.741799686452671690,	-0.741833216601486050,	-0.741866744895717580,	-0.741900271335282020,	-0.741933795920095670,	
+-0.741967318650075260,	-0.742000839525136180,	-0.742034358545195060,	-0.742067875710167970,	-0.742101391019971300,	-0.742134904474521350,	-0.742168416073733850,	-0.742201925817525420,	
+-0.742235433705812350,	-0.742268939738510490,	-0.742302443915536130,	-0.742335946236805770,	-0.742369446702235480,	-0.742402945311742000,	-0.742436442065240840,	-0.742469936962648510,	
+-0.742503430003881640,	-0.742536921188855840,	-0.742570410517487840,	-0.742603897989693730,	-0.742637383605390220,	-0.742670867364493060,	-0.742704349266918530,	-0.742737829312583590,	
+-0.742771307501403630,	-0.742804783833295510,	-0.742838258308175400,	-0.742871730925959710,	-0.742905201686564930,	-0.742938670589906810,	-0.742972137635902090,	-0.743005602824467260,	
+-0.743039066155518180,	-0.743072527628971360,	-0.743105987244743300,	-0.743139445002750200,	-0.743172900902908880,	-0.743206354945134870,	-0.743239807129345340,	-0.743273257455456140,	
+-0.743306705923383550,	-0.743340152533044310,	-0.743373597284354700,	-0.743407040177231470,	-0.743440481211590230,	-0.743473920387347720,	-0.743507357704420890,	-0.743540793162725260,	
+-0.743574226762177660,	-0.743607658502694500,	-0.743641088384192180,	-0.743674516406587440,	-0.743707942569796220,	-0.743741366873734930,	-0.743774789318320640,	-0.743808209903469190,	
+-0.743841628629097080,	-0.743875045495120850,	-0.743908460501457420,	-0.743941873648022560,	-0.743975284934732860,	-0.744008694361505410,	-0.744042101928255820,	-0.744075507634901050,	
+-0.744108911481357490,	-0.744142313467541670,	-0.744175713593370200,	-0.744209111858759380,	-0.744242508263625700,	-0.744275902807886030,	-0.744309295491456300,	-0.744342686314253270,	
+-0.744376075276193650,	-0.744409462377193740,	-0.744442847617170500,	-0.744476230996039880,	-0.744509612513718720,	-0.744542992170123650,	-0.744576369965170960,	-0.744609745898777260,	
+-0.744643119970859300,	-0.744676492181333800,	-0.744709862530116730,	-0.744743231017125030,	-0.744776597642275550,	-0.744809962405484250,	-0.744843325306668080,	-0.744876686345743670,	
+-0.744910045522627410,	-0.744943402837236370,	-0.744976758289486510,	-0.745010111879294780,	-0.745043463606578140,	-0.745076813471252430,	-0.745110161473234720,	-0.745143507612441640,	
+-0.745176851888789790,	-0.745210194302196150,	-0.745243534852576660,	-0.745276873539848510,	-0.745310210363928080,	-0.745343545324732020,	-0.745376878422177150,	-0.745410209656180100,	
+-0.745443539026657720,	-0.745476866533526290,	-0.745510192176702670,	-0.745543515956103910,	-0.745576837871645970,	-0.745610157923245920,	-0.745643476110820600,	-0.745676792434286530,	
+-0.745710106893560760,	-0.745743419488559490,	-0.745776730219199660,	-0.745810039085398220,	-0.745843346087071370,	-0.745876651224136270,	-0.745909954496509540,	-0.745943255904108150,	
+-0.745976555446848270,	-0.746009853124647070,	-0.746043148937421520,	-0.746076442885087900,	-0.746109734967563050,	-0.746143025184763940,	-0.746176313536607180,	-0.746209600023010070,	
+-0.746242884643888550,	-0.746276167399159810,	-0.746309448288741020,	-0.746342727312548250,	-0.746376004470498790,	-0.746409279762509150,	-0.746442553188496390,	-0.746475824748377480,	
+-0.746509094442068810,	-0.746542362269487340,	-0.746575628230550240,	-0.746608892325173910,	-0.746642154553275210,	-0.746675414914771180,	-0.746708673409578920,	-0.746741930037614690,	
+-0.746775184798795570,	-0.746808437693038840,	-0.746841688720260690,	-0.746874937880378290,	-0.746908185173308590,	-0.746941430598968450,	-0.746974674157275030,	-0.747007915848144630,	
+-0.747041155671494430,	-0.747074393627241480,	-0.747107629715302420,	-0.747140863935594310,	-0.747174096288034000,	-0.747207326772538430,	-0.747240555389024900,	-0.747273782137409580,	
+-0.747307007017610100,	-0.747340230029542860,	-0.747373451173125040,	-0.747406670448273690,	-0.747439887854905560,	-0.747473103392937930,	-0.747506317062287430,	-0.747539528862871010,	
+-0.747572738794606060,	-0.747605946857409000,	-0.747639153051197100,	-0.747672357375887330,	-0.747705559831396640,	-0.747738760417642310,	-0.747771959134540860,	-0.747805155982009360,	
+-0.747838350959965430,	-0.747871544068325230,	-0.747904735307006190,	-0.747937924675925350,	-0.747971112175000010,	-0.748004297804146570,	-0.748037481563282310,	-0.748070663452324760,	
+-0.748103843471190190,	-0.748137021619796010,	-0.748170197898059270,	-0.748203372305897170,	-0.748236544843226770,	-0.748269715509964680,	-0.748302884306028430,	-0.748336051231335290,	
+-0.748369216285801660,	-0.748402379469344960,	-0.748435540781882350,	-0.748468700223330900,	-0.748501857793608010,	-0.748535013492630070,	-0.748568167320314730,	-0.748601319276579140,	
+-0.748634469361340040,	-0.748667617574514720,	-0.748700763916020470,	-0.748733908385774470,	-0.748767050983693450,	-0.748800191709694810,	-0.748833330563695940,	-0.748866467545613590,	
+-0.748899602655364930,	-0.748932735892867350,	-0.748965867258037930,	-0.748998996750794070,	-0.749032124371052490,	-0.749065250118730490,	-0.749098373993745680,	-0.749131495996014810,	
+-0.749164616125455040,	-0.749197734381983780,	-0.749230850765518100,	-0.749263965275975720,	-0.749297077913273050,	-0.749330188677328040,	-0.749363297568057200,	-0.749396404585378150,	
+-0.749429509729208080,	-0.749462612999464260,	-0.749495714396064220,	-0.749528813918924560,	-0.749561911567962920,	-0.749595007343096700,	-0.749628101244242730,	-0.749661193271318420,	
+-0.749694283424241270,	-0.749727371702928360,	-0.749760458107297300,	-0.749793542637264720,	-0.749826625292748460,	-0.749859706073665810,	-0.749892784979933610,	-0.749925862011469490,	
+-0.749958937168190620,	-0.749992010450014850,	-0.750025081856858680,	-0.750058151388639740,	-0.750091219045275760,	-0.750124284826683470,	-0.750157348732780500,	-0.750190410763484140,	
+-0.750223470918711670,	-0.750256529198380930,	-0.750289585602408550,	-0.750322640130712150,	-0.750355692783209460,	-0.750388743559817220,	-0.750421792460453150,	-0.750454839485034660,	
+-0.750487884633478930,	-0.750520927905703910,	-0.750553969301626210,	-0.750587008821163910,	-0.750620046464233860,	-0.750653082230753550,	-0.750686116120640730,	-0.750719148133812460,	
+-0.750752178270186700,	-0.750785206529680060,	-0.750818232912210610,	-0.750851257417695650,	-0.750884280046052450,	-0.750917300797198430,	-0.750950319671051190,	-0.750983336667528150,	
+-0.751016351786547020,	-0.751049365028024880,	-0.751082376391879250,	-0.751115385878027840,	-0.751148393486387730,	-0.751181399216876770,	-0.751214403069412230,	-0.751247405043911960,	
+-0.751280405140292820,	-0.751313403358472740,	-0.751346399698369470,	-0.751379394159899850,	-0.751412386742981830,	-0.751445377447532700,	-0.751478366273470310,	-0.751511353220712160,	
+-0.751544338289175330,	-0.751577321478777760,	-0.751610302789437080,	-0.751643282221070460,	-0.751676259773595530,	-0.751709235446930020,	-0.751742209240991330,	-0.751775181155697410,	
+-0.751808151190965330,	-0.751841119346712940,	-0.751874085622857850,	-0.751907050019317460,	-0.751940012536009280,	-0.751972973172851170,	-0.752005931929760840,	-0.752038888806655480,	
+-0.752071843803452820,	-0.752104796920070930,	-0.752137748156426640,	-0.752170697512438040,	-0.752203644988022720,	-0.752236590583098220,	-0.752269534297582590,	-0.752302476131392780,	
+-0.752335416084446870,	-0.752368354156662590,	-0.752401290347957220,	-0.752434224658248610,	-0.752467157087454490,	-0.752500087635492370,	-0.752533016302280310,	-0.752565943087735610,	
+-0.752598867991776110,	-0.752631791014319320,	-0.752664712155282970,	-0.752697631414584900,	-0.752730548792142740,	-0.752763464287874440,	-0.752796377901697290,	-0.752829289633529020,	
+-0.752862199483287920,	-0.752895107450891050,	-0.752928013536256380,	-0.752960917739301740,	-0.752993820059944750,	-0.753026720498103490,	-0.753059619053695120,	-0.753092515726637710,	
+-0.753125410516849450,	-0.753158303424247280,	-0.753191194448749270,	-0.753224083590273370,	-0.753256970848737440,	-0.753289856224058860,	-0.753322739716155710,	-0.753355621324945930,	
+-0.753388501050346830,	-0.753421378892276450,	-0.753454254850652650,	-0.753487128925393160,	-0.753520001116416150,	-0.753552871423638910,	-0.753585739846979520,	-0.753618606386355920,	
+-0.753651471041685620,	-0.753684333812886690,	-0.753717194699876750,	-0.753750053702573970,	-0.753782910820896320,	-0.753815766054761080,	-0.753848619404086540,	-0.753881470868790540,	
+-0.753914320448790700,	-0.753947168144005090,	-0.753980013954351440,	-0.754012857879748140,	-0.754045699920112390,	-0.754078540075362350,	-0.754111378345416310,	-0.754144214730191440,	
+-0.754177049229606160,	-0.754209881843578180,	-0.754242712572025460,	-0.754275541414866300,	-0.754308368372017980,	-0.754341193443398780,	-0.754374016628926890,	-0.754406837928519590,	
+-0.754439657342095280,	-0.754472474869571700,	-0.754505290510867120,	-0.754538104265899510,	-0.754570916134586380,	-0.754603726116846120,	-0.754636534212596350,	-0.754669340421755260,	
+-0.754702144744240800,	-0.754734947179971030,	-0.754767747728864120,	-0.754800546390837600,	-0.754833343165809630,	-0.754866138053698620,	-0.754898931054422070,	-0.754931722167898060,	
+-0.754964511394044860,	-0.754997298732780320,	-0.755030084184022840,	-0.755062867747689830,	-0.755095649423699670,	-0.755128429211970760,	-0.755161207112420410,	-0.755193983124966990,	
+-0.755226757249528700,	-0.755259529486023710,	-0.755292299834369740,	-0.755325068294484980,	-0.755357834866287710,	-0.755390599549695670,	-0.755423362344627150,	-0.755456123251000200,	
+-0.755488882268732900,	-0.755521639397743750,	-0.755554394637950160,	-0.755587147989270620,	-0.755619899451623560,	-0.755652649024926350,	-0.755685396709097510,	-0.755718142504055330,	
+-0.755750886409717660,	-0.755783628426003110,	-0.755816368552829190,	-0.755849106790114300,	-0.755881843137776950,	-0.755914577595734770,	-0.755947310163906150,	-0.755980040842209160,	
+-0.756012769630562410,	-0.756045496528883530,	-0.756078221537090810,	-0.756110944655102870,	-0.756143665882837210,	-0.756176385220212350,	-0.756209102667146690,	-0.756241818223558180,	
+-0.756274531889365440,	-0.756307243664485980,	-0.756339953548838540,	-0.756372661542341510,	-0.756405367644912510,	-0.756438071856470050,	-0.756470774176932430,	-0.756503474606217810,	
+-0.756536173144244820,	-0.756568869790931190,	-0.756601564546195650,	-0.756634257409955930,	-0.756666948382130560,	-0.756699637462637800,	-0.756732324651395950,	-0.756765009948323520,	
+-0.756797693353338240,	-0.756830374866358850,	-0.756863054487303840,	-0.756895732216090740,	-0.756928408052638390,	-0.756961081996865070,	-0.756993754048689070,	-0.757026424208028900,	
+-0.757059092474802410,	-0.757091758848928100,	-0.757124423330324810,	-0.757157085918910070,	-0.757189746614602700,	-0.757222405417320890,	-0.757255062326983470,	-0.757287717343507970,	
+-0.757320370466813220,	-0.757353021696817840,	-0.757385671033439680,	-0.757418318476597240,	-0.757450964026209150,	-0.757483607682193470,	-0.757516249444469160,	-0.757548889312953940,	
+-0.757581527287566450,	-0.757614163368225510,	-0.757646797554848870,	-0.757679429847355150,	-0.757712060245662840,	-0.757744688749690480,	-0.757777315359356660,	-0.757809940074579250,	
+-0.757842562895276960,	-0.757875183821368650,	-0.757907802852771930,	-0.757940419989405870,	-0.757973035231188640,	-0.758005648578039090,	-0.758038260029875290,	-0.758070869586615740,	
+-0.758103477248179280,	-0.758136083014483870,	-0.758168686885448250,	-0.758201288860990920,	-0.758233888941030390,	-0.758266487125485390,	-0.758299083414273880,	-0.758331677807314700,	
+-0.758364270304526580,	-0.758396860905827470,	-0.758429449611136340,	-0.758462036420371470,	-0.758494621333451470,	-0.758527204350295300,	-0.758559785470820810,	-0.758592364694947060,	
+-0.758624942022592230,	-0.758657517453675050,	-0.758690090988114020,	-0.758722662625827770,	-0.758755232366735140,	-0.758787800210754090,	-0.758820366157803680,	-0.758852930207802530,	
+-0.758885492360668820,	-0.758918052616321390,	-0.758950610974678750,	-0.758983167435659630,	-0.759015721999182880,	-0.759048274665166560,	-0.759080825433529500,	-0.759113374304190680,	
+-0.759145921277068150,	-0.759178466352080860,	-0.759211009529147330,	-0.759243550808186620,	-0.759276090189116790,	-0.759308627671856580,	-0.759341163256325280,	-0.759373696942440720,	
+-0.759406228730121760,	-0.759438758619287450,	-0.759471286609856080,	-0.759503812701746940,	-0.759536336894877760,	-0.759568859189167940,	-0.759601379584536220,	-0.759633898080900650,	
+-0.759666414678180520,	-0.759698929376294240,	-0.759731442175160530,	-0.759763953074698680,	-0.759796462074826650,	-0.759828969175463610,	-0.759861474376527960,	-0.759893977677938650,	
+-0.759926479079614300,	-0.759958978581473880,	-0.759991476183436210,	-0.760023971885419590,	-0.760056465687343090,	-0.760088957589125650,	-0.760121447590685450,	-0.760153935691941780,	
+-0.760186421892813270,	-0.760218906193218640,	-0.760251388593077060,	-0.760283869092306720,	-0.760316347690826680,	-0.760348824388556110,	-0.760381299185413080,	-0.760413772081316890,	
+-0.760446243076186250,	-0.760478712169940340,	-0.760511179362497240,	-0.760543644653776330,	-0.760576108043696460,	-0.760608569532176150,	-0.760641029119134340,	-0.760673486804489980,	
+-0.760705942588161930,	-0.760738396470069360,	-0.760770848450130430,	-0.760803298528264450,	-0.760835746704390360,	-0.760868192978426780,	-0.760900637350292670,	-0.760933079819906990,	
+-0.760965520387188450,	-0.760997959052056580,	-0.761030395814429440,	-0.761062830674226310,	-0.761095263631366480,	-0.761127694685768130,	-0.761160123837350540,	-0.761192551086032680,	
+-0.761224976431733700,	-0.761257399874372020,	-0.761289821413866810,	-0.761322241050137350,	-0.761354658783101930,	-0.761387074612679960,	-0.761419488538790270,	-0.761451900561351810,	
+-0.761484310680283990,	-0.761516718895505100,	-0.761549125206934300,	-0.761581529614490990,	-0.761613932118093690,	-0.761646332717661470,	-0.761678731413113490,	-0.761711128204368590,	
+-0.761743523091346190,	-0.761775916073964670,	-0.761808307152143650,	-0.761840696325801650,	-0.761873083594857840,	-0.761905468959231390,	-0.761937852418841270,	-0.761970233973606750,	
+-0.762002613623446350,	-0.762034991368279350,	-0.762067367208025260,	-0.762099741142602480,	-0.762132113171930300,	-0.762164483295927900,	-0.762196851514514220,	-0.762229217827608770,	
+-0.762261582235129960,	-0.762293944736997080,	-0.762326305333129730,	-0.762358664023446320,	-0.762391020807866250,	-0.762423375686308690,	-0.762455728658692930,	-0.762488079724937600,	
+-0.762520428884961960,	-0.762552776138685550,	-0.762585121486026970,	-0.762617464926905630,	-0.762649806461240590,	-0.762682146088951020,	-0.762714483809956320,	-0.762746819624175230,	
+-0.762779153531527030,	-0.762811485531931230,	-0.762843815625306450,	-0.762876143811572090,	-0.762908470090647440,	-0.762940794462451550,	-0.762973116926904060,	-0.763005437483923350,	
+-0.763037756133429170,	-0.763070072875340790,	-0.763102387709576950,	-0.763134700636057260,	-0.763167011654700690,	-0.763199320765426960,	-0.763231627968154580,	-0.763263933262803170,	
+-0.763296236649292140,	-0.763328538127540310,	-0.763360837697467210,	-0.763393135358991890,	-0.763425431112033760,	-0.763457724956512320,	-0.763490016892346300,	-0.763522306919455220,	
+-0.763554595037758690,	-0.763586881247175440,	-0.763619165547624880,	-0.763651447939026510,	-0.763683728421299390,	-0.763716006994363370,	-0.763748283658136960,	-0.763780558412540110,	
+-0.763812831257491660,	-0.763845102192911130,	-0.763877371218717790,	-0.763909638334831050,	-0.763941903541170530,	-0.763974166837654840,	-0.764006428224203840,	-0.764038687700737020,	
+-0.764070945267173230,	-0.764103200923432090,	-0.764135454669432890,	-0.764167706505095130,	-0.764199956430338330,	-0.764232204445081330,	-0.764264450549243860,	-0.764296694742745530,	
+-0.764328937025505200,	-0.764361177397442580,	-0.764393415858476870,	-0.764425652408528000,	-0.764457887047514720,	-0.764490119775356750,	-0.764522350591973710,	-0.764554579497284560,	
+-0.764586806491208910,	-0.764619031573666290,	-0.764651254744576070,	-0.764683476003858000,	-0.764715695351430910,	-0.764747912787214550,	-0.764780128311128850,	-0.764812341923092440,	
+-0.764844553623025170,	-0.764876763410846540,	-0.764908971286475950,	-0.764941177249833350,	-0.764973381300837360,	-0.765005583439408050,	-0.765037783665465040,	-0.765069981978927280,	
+-0.765102178379714500,	-0.765134372867746330,	-0.765166565442942480,	-0.765198756105221920,	-0.765230944854504490,	-0.765263131690710030,	-0.765295316613757490,	-0.765327499623566500,	
+-0.765359680720056890,	-0.765391859903148060,	-0.765424037172759860,	-0.765456212528811240,	-0.765488385971222150,	-0.765520557499912320,	-0.765552727114800820,	-0.765584894815807600,	
+-0.765617060602852060,	-0.765649224475853820,	-0.765681386434732940,	-0.765713546479408150,	-0.765745704609799960,	-0.765777860825827110,	-0.765810015127409540,	-0.765842167514466990,	
+-0.765874317986919070,	-0.765906466544685640,	-0.765938613187685750,	-0.765970757915839240,	-0.766002900729066290,	-0.766035041627285640,	-0.766067180610417450,	-0.766099317678381350,	
+-0.766131452831096960,	-0.766163586068484110,	-0.766195717390462110,	-0.766227846796950770,	-0.766259974287870180,	-0.766292099863139290,	-0.766324223522678150,	-0.766356345266406390,	
+-0.766388465094244190,	-0.766420583006110490,	-0.766452699001925360,	-0.766484813081608760,	-0.766516925245079750,	-0.766549035492258500,	-0.766581143823064640,	-0.766613250237418000,	
+-0.766645354735238430,	-0.766677457316445210,	-0.766709557980958410,	-0.766741656728697870,	-0.766773753559582990,	-0.766805848473533720,	-0.766837941470469800,	-0.766870032550311050,	
+-0.766902121712977560,	-0.766934208958388370,	-0.766966294286463680,	-0.766998377697123650,	-0.767030459190287230,	-0.767062538765874820,	-0.767094616423805940,	-0.767126692164000870,	
+-0.767158765986378780,	-0.767190837890859730,	-0.767222907877363910,	-0.767254975945810600,	-0.767287042096119750,	-0.767319106328211320,	-0.767351168642005140,	-0.767383229037421290,	
+-0.767415287514379150,	-0.767447344072798690,	-0.767479398712600290,	-0.767511451433703030,	-0.767543502236027080,	-0.767575551119492490,	-0.767607598084018910,	-0.767639643129526710,	
+-0.767671686255935070,	-0.767703727463164620,	-0.767735766751134420,	-0.767767804119764860,	-0.767799839568975790,	-0.767831873098687060,	-0.767863904708819050,	-0.767895934399290820,	
+-0.767927962170022900,	-0.767959988020935350,	-0.767992011951947550,	-0.768024033962979690,	-0.768056054053951720,	-0.768088072224783590,	-0.768120088475395590,	-0.768152102805707120,	
+-0.768184115215638450,	-0.768216125705109660,	-0.768248134274040370,	-0.768280140922350640,	-0.768312145649960640,	-0.768344148456790550,	-0.768376149342759770,	-0.768408148307788700,	
+-0.768440145351797390,	-0.768472140474705580,	-0.768504133676433330,	-0.768536124956900820,	-0.768568114316027890,	-0.768600101753735050,	-0.768632087269941700,	-0.768664070864568010,	
+-0.768696052537534480,	-0.768728032288760630,	-0.768760010118166530,	-0.768791986025672560,	-0.768823960011198570,	-0.768855932074664960,	-0.768887902215991240,	-0.768919870435098020,	
+-0.768951836731904810,	-0.768983801106332130,	-0.769015763558299810,	-0.769047724087728150,	-0.769079682694537530,	-0.769111639378647350,	-0.769143594139978020,	-0.769175546978450030,	
+-0.769207497893982910,	-0.769239446886497040,	-0.769271393955912600,	-0.769303339102149540,	-0.769335282325128600,	-0.769367223624769060,	-0.769399163000991430,	-0.769431100453716210,	
+-0.769463035982863030,	-0.769494969588352170,	-0.769526901270103920,	-0.769558831028038680,	-0.769590758862076060,	-0.769622684772136580,	-0.769654608758140730,	-0.769686530820007930,	
+-0.769718450957658900,	-0.769750369171013800,	-0.769782285459992720,	-0.769814199824516150,	-0.769846112264503830,	-0.769878022779876270,	-0.769909931370553970,	-0.769941838036456440,	
+-0.769973742777504410,	-0.770005645593617950,	-0.770037546484717450,	-0.770069445450723310,	-0.770101342491555260,	-0.770133237607133920,	-0.770165130797379800,	-0.770197022062212520,	
+-0.770228911401552590,	-0.770260798815320500,	-0.770292684303436670,	-0.770324567865820820,	-0.770356449502393570,	-0.770388329213075540,	-0.770420206997786350,	-0.770452082856446620,	
+-0.770483956788976740,	-0.770515828795296900,	-0.770547698875327810,	-0.770579567028989110,	-0.770611433256201630,	-0.770643297556885760,	-0.770675159930961360,	-0.770707020378349150,	
+-0.770738878898969300,	-0.770770735492742330,	-0.770802590159588740,	-0.770834442899428370,	-0.770866293712182180,	-0.770898142597770120,	-0.770929989556112580,	-0.770961834587130080,	
+-0.770993677690742900,	-0.771025518866871980,	-0.771057358115436850,	-0.771089195436358340,	-0.771121030829557190,	-0.771152864294953220,	-0.771184695832466960,	-0.771216525442019020,	
+-0.771248353123529800,	-0.771280178876919910,	-0.771312002702109420,	-0.771343824599018730,	-0.771375644567568910,	-0.771407462607679670,	-0.771439278719271760,	-0.771471092902265680,	
+-0.771502905156582040,	-0.771534715482140920,	-0.771566523878863040,	-0.771598330346669140,	-0.771630134885479050,	-0.771661937495213720,	-0.771693738175793560,	-0.771725536927138970,	
+-0.771757333749170880,	-0.771789128641809150,	-0.771820921604974620,	-0.771852712638588010,	-0.771884501742569400,	-0.771916288916839500,	-0.771948074161318940,	-0.771979857475928120,	
+-0.772011638860587990,	-0.772043418315218390,	-0.772075195839740270,	-0.772106971434074470,	-0.772138745098141070,	-0.772170516831860660,	-0.772202286635154000,	-0.772234054507941910,	
+-0.772265820450144470,	-0.772297584461682400,	-0.772329346542476650,	-0.772361106692447290,	-0.772392864911515150,	-0.772424621199600760,	-0.772456375556624940,	-0.772488127982508430,	
+-0.772519878477171300,	-0.772551627040534480,	-0.772583373672518950,	-0.772615118373044530,	-0.772646861142032400,	-0.772678601979403190,	-0.772710340885077400,	-0.772742077858976080,	
+-0.772773812901019320,	-0.772805546011128160,	-0.772837277189223020,	-0.772869006435224600,	-0.772900733749053660,	-0.772932459130630910,	-0.772964182579877310,	-0.772995904096712930,	
+-0.773027623681058820,	-0.773059341332835940,	-0.773091057051964350,	-0.773122770838365230,	-0.773154482691959080,	-0.773186192612666860,	-0.773217900600409290,	-0.773249606655106780,	
+-0.773281310776680160,	-0.773313012965050620,	-0.773344713220138310,	-0.773376411541864210,	-0.773408107930149020,	-0.773439802384913830,	-0.773471494906078920,	-0.773503185493565230,	
+-0.773534874147293830,	-0.773566560867185000,	-0.773598245653159710,	-0.773629928505138900,	-0.773661609423043180,	-0.773693288406793860,	-0.773724965456310980,	-0.773756640571515610,	
+-0.773788313752328930,	-0.773819984998671220,	-0.773851654310463540,	-0.773883321687626750,	-0.773914987130081670,	-0.773946650637749260,	-0.773978312210550130,	-0.774009971848405140,	
+-0.774041629551235450,	-0.774073285318961470,	-0.774104939151504360,	-0.774136591048784740,	-0.774168241010724010,	-0.774199889037242350,	-0.774231535128261040,	-0.774263179283701140,	
+-0.774294821503482940,	-0.774326461787527840,	-0.774358100135756460,	-0.774389736548089850,	-0.774421371024449190,	-0.774453003564754880,	-0.774484634168927990,	-0.774516262836889790,	
+-0.774547889568560690,	-0.774579514363861850,	-0.774611137222714240,	-0.774642758145038800,	-0.774674377130756710,	-0.774705994179788360,	-0.774737609292055370,	-0.774769222467478040,	
+-0.774800833705977740,	-0.774832443007475220,	-0.774864050371891660,	-0.774895655799148320,	-0.774927259289165500,	-0.774958860841864490,	-0.774990460457166690,	-0.775022058134992360,	
+-0.775053653875263040,	-0.775085247677899440,	-0.775116839542822730,	-0.775148429469954330,	-0.775180017459214500,	-0.775211603510524540,	-0.775243187623805950,	-0.775274769798979140,	
+-0.775306350035965260,	-0.775337928334685620,	-0.775369504695061500,	-0.775401079117013170,	-0.775432651600462260,	-0.775464222145329950,	-0.775495790751536850,	-0.775527357419004250,	
+-0.775558922147653320,	-0.775590484937405010,	-0.775622045788180730,	-0.775653604699901080,	-0.775685161672487470,	-0.775716716705861180,	-0.775748269799942940,	-0.775779820954653920,	
+-0.775811370169915300,	-0.775842917445648370,	-0.775874462781774410,	-0.775906006178213930,	-0.775937547634888540,	-0.775969087151719530,	-0.776000624728627410,	-0.776032160365533800,	
+-0.776063694062359870,	-0.776095225819026900,	-0.776126755635455630,	-0.776158283511567460,	-0.776189809447283770,	-0.776221333442525420,	-0.776252855497213680,	-0.776284375611269840,	
+-0.776315893784614960,	-0.776347410017170670,	-0.776378924308857580,	-0.776410436659597190,	-0.776441947069311020,	-0.776473455537919690,	-0.776504962065344690,	-0.776536466651507330,	
+-0.776567969296328760,	-0.776599469999730510,	-0.776630968761633400,	-0.776662465581959060,	-0.776693960460628330,	-0.776725453397562720,	-0.776756944392683390,	-0.776788433445911750,	
+-0.776819920557169310,	-0.776851405726376790,	-0.776882888953455810,	-0.776914370238327770,	-0.776945849580913620,	-0.776977326981134750,	-0.777008802438912680,	-0.777040275954168580,	
+-0.777071747526824060,	-0.777103217156799860,	-0.777134684844017600,	-0.777166150588398890,	-0.777197614389864680,	-0.777229076248336260,	-0.777260536163735250,	-0.777291994135983160,	
+-0.777323450165000820,	-0.777354904250709740,	-0.777386356393031770,	-0.777417806591887640,	-0.777449254847198960,	-0.777480701158887230,	-0.777512145526873640,	-0.777543587951080030,	
+-0.777575028431427120,	-0.777606466967836750,	-0.777637903560230330,	-0.777669338208529020,	-0.777700770912654220,	-0.777732201672527660,	-0.777763630488070400,	-0.777795057359204510,	
+-0.777826482285850610,	-0.777857905267930860,	-0.777889326305366000,	-0.777920745398077870,	-0.777952162545987870,	-0.777983577749017390,	-0.778014991007088370,	-0.778046402320121460,	
+-0.778077811688038580,	-0.778109219110761470,	-0.778140624588211090,	-0.778172028120309060,	-0.778203429706977090,	-0.778234829348136480,	-0.778266227043708960,	-0.778297622793615700,	
+-0.778329016597778420,	-0.778360408456118870,	-0.778391798368557990,	-0.778423186335017500,	-0.778454572355419150,	-0.778485956429684430,	-0.778517338557734970,	-0.778548718739491940,	
+-0.778580096974877400,	-0.778611473263812410,	-0.778642847606218710,	-0.778674220002017800,	-0.778705590451131410,	-0.778736958953481270,	-0.778768325508988560,	-0.778799690117574880,	
+-0.778831052779162420,	-0.778862413493671910,	-0.778893772261025410,	-0.778925129081144530,	-0.778956483953950780,	-0.778987836879366120,	-0.779019187857311610,	-0.779050536887709090,	
+-0.779081883970480500,	-0.779113229105546920,	-0.779144572292830300,	-0.779175913532252240,	-0.779207252823734710,	-0.779238590167198760,	-0.779269925562566250,	-0.779301259009759330,	
+-0.779332590508698850,	-0.779363920059306990,	-0.779395247661505360,	-0.779426573315215480,	-0.779457897020359610,	-0.779489218776858620,	-0.779520538584634550,	-0.779551856443609470,	
+-0.779583172353704450,	-0.779614486314841540,	-0.779645798326942360,	-0.779677108389928650,	-0.779708416503722580,	-0.779739722668245090,	-0.779771026883418590,	-0.779802329149164250,	
+-0.779833629465404020,	-0.779864927832059850,	-0.779896224249053250,	-0.779927518716306500,	-0.779958811233740560,	-0.779990101801277590,	-0.780021390418839670,	-0.780052677086348070,	
+-0.780083961803724630,	-0.780115244570891430,	-0.780146525387769960,	-0.780177804254282630,	-0.780209081170350370,	-0.780240356135895490,	-0.780271629150840030,	-0.780302900215105180,	
+-0.780334169328612990,	-0.780365436491285420,	-0.780396701703044650,	-0.780427964963811730,	-0.780459226273508940,	-0.780490485632058360,	-0.780521743039381270,	-0.780552998495399830,	
+-0.780584252000036010,	-0.780615503553211410,	-0.780646753154848330,	-0.780678000804868160,	-0.780709246503192960,	-0.780740490249744900,	-0.780771732044445390,	-0.780802971887216480,	
+-0.780834209777980240,	-0.780865445716658390,	-0.780896679703173220,	-0.780927911737446130,	-0.780959141819399180,	-0.780990369948954770,	-0.781021596126034060,	-0.781052820350559340,	
+-0.781084042622452570,	-0.781115262941636020,	-0.781146481308031100,	-0.781177697721559870,	-0.781208912182144720,	-0.781240124689706940,	-0.781271335244168920,	-0.781302543845452610,	
+-0.781333750493479860,	-0.781364955188173060,	-0.781396157929453490,	-0.781427358717243670,	-0.781458557551465650,	-0.781489754432040940,	-0.781520949358891940,	-0.781552142331940480,	
+-0.781583333351108630,	-0.781614522416318790,	-0.781645709527492350,	-0.781676894684551930,	-0.781708077887419030,	-0.781739259136015830,	-0.781770438430264610,	-0.781801615770087220,	
+-0.781832791155406050,	-0.781863964586142710,	-0.781895136062219390,	-0.781926305583558470,	-0.781957473150081570,	-0.781988638761710990,	-0.782019802418368880,	-0.782050964119977100,	
+-0.782082123866458370,	-0.782113281657733860,	-0.782144437493726310,	-0.782175591374357880,	-0.782206743299550200,	-0.782237893269225660,	-0.782269041283306320,	-0.782300187341714690,	
+-0.782331331444372390,	-0.782362473591201700,	-0.782393613782125130,	-0.782424752017064180,	-0.782455888295941480,	-0.782487022618678970,	-0.782518154985198940,	-0.782549285395423790,	
+-0.782580413849275120,	-0.782611540346675460,	-0.782642664887547190,	-0.782673787471811930,	-0.782704908099392300,	-0.782736026770210370,	-0.782767143484188410,	-0.782798258241248820,	
+-0.782829371041313230,	-0.782860481884304350,	-0.782891590770144470,	-0.782922697698755330,	-0.782953802670059540,	-0.782984905683979160,	-0.783016006740436810,	-0.783047105839354110,	
+-0.783078202980653780,	-0.783109298164258120,	-0.783140391390088950,	-0.783171482658068800,	-0.783202571968119930,	-0.783233659320164640,	-0.783264744714125550,	-0.783295828149924270,	
+-0.783326909627483410,	-0.783357989146725610,	-0.783389066707572470,	-0.783420142309946720,	-0.783451215953770540,	-0.783482287638966430,	-0.783513357365456800,	-0.783544425133163580,	
+-0.783575490942009510,	-0.783606554791916430,	-0.783637616682806960,	-0.783668676614603490,	-0.783699734587228300,	-0.783730790600604020,	-0.783761844654652600,	-0.783792896749296420,	
+-0.783823946884458440,	-0.783854995060060180,	-0.783886041276024460,	-0.783917085532273680,	-0.783948127828730130,	-0.783979168165316650,	-0.784010206541954860,	-0.784041242958567590,	
+-0.784072277415077460,	-0.784103309911406420,	-0.784134340447477100,	-0.784165369023211880,	-0.784196395638533490,	-0.784227420293363900,	-0.784258442987625810,	-0.784289463721241750,	
+-0.784320482494133890,	-0.784351499306224720,	-0.784382514157436870,	-0.784413527047692740,	-0.784444537976914940,	-0.784475546945025640,	-0.784506553951947460,	-0.784537558997603130,	
+-0.784568562081914720,	-0.784599563204804840,	-0.784630562366196100,	-0.784661559566010910,	-0.784692554804172100,	-0.784723548080601630,	-0.784754539395222220,	-0.784785528747956820,	
+-0.784816516138727270,	-0.784847501567456530,	-0.784878485034066880,	-0.784909466538481480,	-0.784940446080621970,	-0.784971423660411500,	-0.785002399277772600,	-0.785033372932627540,	
+-0.785064344624899050,	-0.785095314354509630,	-0.785126282121381910,	-0.785157247925438840,	-0.785188211766602250,	-0.785219173644795210,	-0.785250133559940560,	-0.785281091511960240,	
+-0.785312047500777210,	-0.785343001526314090,	-0.785373953588493380,	-0.785404903687238140,	-0.785435851822470330,	-0.785466797994113230,	-0.785497742202088790,	-0.785528684446319960,	
+-0.785559624726729470,	-0.785590563043239930,	-0.785621499395774300,	-0.785652433784254530,	-0.785683366208603800,	-0.785714296668744820,	-0.785745225164599880,	-0.785776151696091940,	
+-0.785807076263143500,	-0.785837998865677400,	-0.785868919503616590,	-0.785899838176883250,	-0.785930754885400320,	-0.785961669629090750,	-0.785992582407876730,	-0.786023493221681190,	
+-0.786054402070426980,	-0.786085308954037050,	-0.786116213872433580,	-0.786147116825539500,	-0.786178017813278010,	-0.786208916835571150,	-0.786239813892341990,	-0.786270708983513260,	
+-0.786301602109007790,	-0.786332493268748660,	-0.786363382462657910,	-0.786394269690658840,	-0.786425154952674180,	-0.786456038248626530,	-0.786486919578438750,	-0.786517798942033550,	
+-0.786548676339334010,	-0.786579551770262950,	-0.786610425234742780,	-0.786641296732696560,	-0.786672166264047350,	-0.786703033828717420,	-0.786733899426629970,	-0.786764763057707710,	
+-0.786795624721873920,	-0.786826484419050680,	-0.786857342149161370,	-0.786888197912128830,	-0.786919051707875570,	-0.786949903536324660,	-0.786980753397399040,	-0.787011601291021550,	
+-0.787042447217115250,	-0.787073291175602650,	-0.787104133166406710,	-0.787134973189450800,	-0.787165811244657120,	-0.787196647331949050,	-0.787227481451249210,	-0.787258313602480770,	
+-0.787289143785566800,	-0.787319972000429580,	-0.787350798246992830,	-0.787381622525178740,	-0.787412444834910690,	-0.787443265176111410,	-0.787474083548704070,	-0.787504899952611750,	
+-0.787535714387756940,	-0.787566526854062810,	-0.787597337351452650,	-0.787628145879848860,	-0.787658952439174610,	-0.787689757029353180,	-0.787720559650307180,	-0.787751360301960140,	
+-0.787782158984234430,	-0.787812955697053340,	-0.787843750440340050,	-0.787874543214017180,	-0.787905334018008000,	-0.787936122852235350,	-0.787966909716622750,	-0.787997694611092590,	
+-0.788028477535568150,	-0.788059258489972940,	-0.788090037474229230,	-0.788120814488260320,	-0.788151589531989490,	-0.788182362605339690,	-0.788213133708234200,	-0.788243902840595640,	
+-0.788274670002347300,	-0.788305435193412560,	-0.788336198413713940,	-0.788366959663174830,	-0.788397718941718400,	-0.788428476249267600,	-0.788459231585745820,	-0.788489984951075810,	
+-0.788520736345181050,	-0.788551485767984170,	-0.788582233219408680,	-0.788612978699377520,	-0.788643722207813870,	-0.788674463744641230,	-0.788705203309782220,	-0.788735940903160130,	
+-0.788766676524698450,	-0.788797410174319920,	-0.788828141851947720,	-0.788858871557505230,	-0.788889599290915510,	-0.788920325052102190,	-0.788951048840987660,	-0.788981770657495530,	
+-0.789012490501549310,	-0.789043208373071630,	-0.789073924271985750,	-0.789104638198215190,	-0.789135350151683350,	-0.789166060132312720,	-0.789196768140027040,	-0.789227474174749700,	
+-0.789258178236403320,	-0.789288880324911620,	-0.789319580440197680,	-0.789350278582184760,	-0.789380974750796380,	-0.789411668945955380,	-0.789442361167585150,	-0.789473051415609310,	
+-0.789503739689950580,	-0.789534425990532470,	-0.789565110317278270,	-0.789595792670111370,	-0.789626473048955280,	-0.789657151453732610,	-0.789687827884367200,	-0.789718502340782450,	
+-0.789749174822901080,	-0.789779845330646930,	-0.789810513863943080,	-0.789841180422713230,	-0.789871845006880120,	-0.789902507616367380,	-0.789933168251098720,	-0.789963826910996870,	
+-0.789994483595985340,	-0.790025138305987750,	-0.790055791040927160,	-0.790086441800727510,	-0.790117090585311430,	-0.790147737394602650,	-0.790178382228524660,	-0.790209025087000640,	
+-0.790239665969953880,	-0.790270304877308090,	-0.790300941808986470,	-0.790331576764912840,	-0.790362209745009920,	-0.790392840749201800,	-0.790423469777411290,	-0.790454096829562030,	
+-0.790484721905577610,	-0.790515345005381450,	-0.790545966128897050,	-0.790576585276047570,	-0.790607202446756530,	-0.790637817640947870,	-0.790668430858544320,	-0.790699042099469730,	
+-0.790729651363647480,	-0.790760258651001190,	-0.790790863961454480,	-0.790821467294930300,	-0.790852068651352490,	-0.790882668030644780,	-0.790913265432730110,	-0.790943860857532320,	
+-0.790974454304974820,	-0.791005045774981540,	-0.791035635267475330,	-0.791066222782380040,	-0.791096808319619370,	-0.791127391879116510,	-0.791157973460795190,	-0.791188553064578910,	
+-0.791219130690391180,	-0.791249706338155940,	-0.791280280007796270,	-0.791310851699235760,	-0.791341421412398380,	-0.791371989147207300,	-0.791402554903586130,	-0.791433118681458600,	
+-0.791463680480748330,	-0.791494240301379050,	-0.791524798143274030,	-0.791555354006356900,	-0.791585907890551720,	-0.791616459795781440,	-0.791647009721970000,	-0.791677557669041130,	
+-0.791708103636918570,	-0.791738647625525480,	-0.791769189634785820,	-0.791799729664623310,	-0.791830267714961340,	-0.791860803785723650,	-0.791891337876833970,	-0.791921869988216010,	
+-0.791952400119793510,	-0.791982928271489860,	-0.792013454443228900,	-0.792043978634934480,	-0.792074500846529860,	-0.792105021077939010,	-0.792135539329085650,	-0.792166055599893390,	
+-0.792196569890286310,	-0.792227082200187450,	-0.792257592529521220,	-0.792288100878210780,	-0.792318607246179970,	-0.792349111633352750,	-0.792379614039652740,	-0.792410114465003870,	
+-0.792440612909329540,	-0.792471109372553610,	-0.792501603854600220,	-0.792532096355392570,	-0.792562586874854590,	-0.792593075412910240,	-0.792623561969483140,	-0.792654046544497450,	
+-0.792684529137876350,	-0.792715009749543900,	-0.792745488379424270,	-0.792775965027440630,	-0.792806439693517050,	-0.792836912377577360,	-0.792867383079545630,	-0.792897851799345240,	
+-0.792928318536900270,	-0.792958783292134650,	-0.792989246064971900,	-0.793019706855335960,	-0.793050165663150790,	-0.793080622488340210,	-0.793111077330828310,	-0.793141530190538460,	
+-0.793171981067394840,	-0.793202429961321510,	-0.793232876872241750,	-0.793263321800079860,	-0.793293764744759770,	-0.793324205706205100,	-0.793354644684340250,	-0.793385081679088610,	
+-0.793415516690374130,	-0.793445949718121210,	-0.793476380762253130,	-0.793506809822694060,	-0.793537236899368060,	-0.793567661992199080,	-0.793598085101110850,	-0.793628506226027320,	
+-0.793658925366872770,	-0.793689342523570710,	-0.793719757696045190,	-0.793750170884220290,	-0.793780582088020050,	-0.793810991307368650,	-0.793841398542189380,	-0.793871803792406630,	
+-0.793902207057944790,	-0.793932608338727030,	-0.793963007634677750,	-0.793993404945721020,	-0.794023800271780660,	-0.794054193612781180,	-0.794084584968645870,	-0.794114974339299450,	
+-0.794145361724665320,	-0.794175747124667760,	-0.794206130539230730,	-0.794236511968278490,	-0.794266891411735230,	-0.794297268869524450,	-0.794327644341570550,	-0.794358017827797690,	
+-0.794388389328129610,	-0.794418758842490580,	-0.794449126370804560,	-0.794479491912995830,	-0.794509855468988560,	-0.794540217038706480,	-0.794570576622073750,	-0.794600934219014900,	
+-0.794631289829453410,	-0.794661643453313690,	-0.794691995090519910,	-0.794722344740996340,	-0.794752692404666730,	-0.794783038081455340,	-0.794813381771286690,	-0.794843723474084270,	
+-0.794874063189772500,	-0.794904400918275630,	-0.794934736659517640,	-0.794965070413423240,	-0.794995402179915820,	-0.795025731958919900,	-0.795056059750359980,	-0.795086385554159560,	
+-0.795116709370243150,	-0.795147031198535030,	-0.795177351038959260,	-0.795207668891440460,	-0.795237984755902240,	-0.795268298632269000,	-0.795298610520465350,	-0.795328920420414810,	
+-0.795359228332041980,	-0.795389534255271150,	-0.795419838190026710,	-0.795450140136232390,	-0.795480440093812800,	-0.795510738062692350,	-0.795541034042794750,	-0.795571328034044510,	
+-0.795601620036366030,	-0.795631910049683480,	-0.795662198073921470,	-0.795692484109003620,	-0.795722768154854650,	-0.795753050211398970,	-0.795783330278560410,	-0.795813608356263470,	
+-0.795843884444432550,	-0.795874158542991930,	-0.795904430651866220,	-0.795934700770979160,	-0.795964968900255590,	-0.795995235039619220,	-0.796025499188994900,	-0.796055761348306800,	
+-0.796086021517479310,	-0.796116279696436950,	-0.796146535885103760,	-0.796176790083404140,	-0.796207042291262820,	-0.796237292508603640,	-0.796267540735351220,	-0.796297786971429940,	
+-0.796328031216764210,	-0.796358273471278740,	-0.796388513734897160,	-0.796418752007544420,	-0.796448988289145120,	-0.796479222579623000,	-0.796509454878902790,	-0.796539685186908990,	
+-0.796569913503566210,	-0.796600139828798400,	-0.796630364162530190,	-0.796660586504686410,	-0.796690806855190890,	-0.796721025213968370,	-0.796751241580943240,	-0.796781455956040000,	
+-0.796811668339183380,	-0.796841878730297330,	-0.796872087129306680,	-0.796902293536135950,	-0.796932497950709310,	-0.796962700372951360,	-0.796992900802786730,	-0.797023099240139810,	
+-0.797053295684935330,	-0.797083490137097450,	-0.797113682596551130,	-0.797143873063220210,	-0.797174061537029740,	-0.797204248017904020,	-0.797234432505767750,	-0.797264615000545680,	
+-0.797294795502161760,	-0.797324974010540810,	-0.797355150525607790,	-0.797385325047286540,	-0.797415497575502010,	-0.797445668110178700,	-0.797475836651241330,	-0.797506003198614530,	
+-0.797536167752222580,	-0.797566330311990090,	-0.797596490877842010,	-0.797626649449702520,	-0.797656806027496450,	-0.797686960611148300,	-0.797717113200583030,	-0.797747263795724690,	
+-0.797777412396498130,	-0.797807559002828400,	-0.797837703614639460,	-0.797867846231856360,	-0.797897986854403500,	-0.797928125482205820,	-0.797958262115187940,	-0.797988396753274270,	
+-0.798018529396389510,	-0.798048660044458740,	-0.798078788697406120,	-0.798108915355156380,	-0.798139040017634470,	-0.798169162684764900,	-0.798199283356472720,	-0.798229402032682110,	
+-0.798259518713317910,	-0.798289633398305170,	-0.798319746087568170,	-0.798349856781031760,	-0.798379965478620670,	-0.798410072180260060,	-0.798440176885873880,	-0.798470279595387300,	
+-0.798500380308725280,	-0.798530479025811980,	-0.798560575746572580,	-0.798590670470931690,	-0.798620763198814140,	-0.798650853930144900,	-0.798680942664848350,	-0.798711029402849440,	
+-0.798741114144073120,	-0.798771196888443890,	-0.798801277635886600,	-0.798831356386326070,	-0.798861433139687160,	-0.798891507895895030,	-0.798921580654873730,	-0.798951651416548890,	
+-0.798981720180844570,	-0.799011786947685930,	-0.799041851716997820,	-0.799071914488705070,	-0.799101975262732860,	-0.799132034039005460,	-0.799162090817447930,	-0.799192145597985460,	
+-0.799222198380542430,	-0.799252249165043780,	-0.799282297951414590,	-0.799312344739579570,	-0.799342389529464010,	-0.799372432320992200,	-0.799402473114089300,	-0.799432511908680480,	
+-0.799462548704690130,	-0.799492583502043440,	-0.799522616300665230,	-0.799552647100480800,	-0.799582675901414520,	-0.799612702703391460,	-0.799642727506336910,	-0.799672750310175370,	
+-0.799702771114831900,	-0.799732789920231560,	-0.799762806726299180,	-0.799792821532960050,	-0.799822834340138570,	-0.799852845147760010,	-0.799882853955749650,	-0.799912860764031900,	
+-0.799942865572531910,	-0.799972868381174870,	-0.800002869189885610,	-0.800032867998589410,	-0.800062864807210780,	-0.800092859615675000,	-0.800122852423907460,	-0.800152843231832330,	
+-0.800182832039375240,	-0.800212818846461000,	-0.800242803653014920,	-0.800272786458961720,	-0.800302767264226440,	-0.800332746068734500,	-0.800362722872410500,	-0.800392697675179620,	
+-0.800422670476967020,	-0.800452641277697770,	-0.800482610077297150,	-0.800512576875689770,	-0.800542541672800920,	-0.800572504468556100,	-0.800602465262879590,	-0.800632424055697010,	
+-0.800662380846933310,	-0.800692335636513760,	-0.800722288424363550,	-0.800752239210407280,	-0.800782187994570790,	-0.800812134776778590,	-0.800842079556955970,	-0.800872022335028190,	
+-0.800901963110920320,	-0.800931901884557870,	-0.800961838655865450,	-0.800991773424768240,	-0.801021706191192060,	-0.801051636955061210,	-0.801081565716301400,	-0.801111492474837590,	
+-0.801141417230595070,	-0.801171339983499210,	-0.801201260733474860,	-0.801231179480447200,	-0.801261096224341940,	-0.801291010965083710,	-0.801320923702597890,	-0.801350834436809880,	
+-0.801380743167644960,	-0.801410649895027860,	-0.801440554618884190,	-0.801470457339139350,	-0.801500358055718180,	-0.801530256768546170,	-0.801560153477548390,	-0.801590048182650340,	
+-0.801619940883777300,	-0.801649831580854230,	-0.801679720273806520,	-0.801709606962559880,	-0.801739491647038840,	-0.801769374327169220,	-0.801799255002876080,	-0.801829133674084700,	
+-0.801859010340720930,	-0.801888885002709270,	-0.801918757659975450,	-0.801948628312444960,	-0.801978496960042640,	-0.802008363602694010,	-0.802038228240324560,	-0.802068090872859800,	
+-0.802097951500224560,	-0.802127810122344350,	-0.802157666739145010,	-0.802187521350551160,	-0.802217373956488510,	-0.802247224556882470,	-0.802277073151658300,	-0.802306919740741750,	
+-0.802336764324057650,	-0.802366606901531610,	-0.802396447473089360,	-0.802426286038655730,	-0.802456122598156350,	-0.802485957151516600,	-0.802515789698662110,	-0.802545620239518250,	
+-0.802575448774010210,	-0.802605275302063710,	-0.802635099823603810,	-0.802664922338556130,	-0.802694742846846170,	-0.802724561348399420,	-0.802754377843141410,	-0.802784192330997290,	
+-0.802814004811892580,	-0.802843815285753220,	-0.802873623752504040,	-0.802903430212070780,	-0.802933234664378940,	-0.802963037109354020,	-0.802992837546921740,	-0.803022635977007180,	
+-0.803052432399535940,	-0.803082226814433970,	-0.803112019221626120,	-0.803141809621038320,	-0.803171598012595860,	-0.803201384396224680,	-0.803231168771849860,	-0.803260951139397110,	
+-0.803290731498792150,	-0.803320509849960170,	-0.803350286192826890,	-0.803380060527317920,	-0.803409832853358760,	-0.803439603170875370,	-0.803469371479792580,	-0.803499137780036450,	
+-0.803528902071532710,	-0.803558664354206530,	-0.803588424627983630,	-0.803618182892789630,	-0.803647939148550260,	-0.803677693395191130,	-0.803707445632637630,	-0.803737195860815490,	
+-0.803766944079650660,	-0.803796690289068310,	-0.803826434488994050,	-0.803856176679353720,	-0.803885916860073270,	-0.803915655031077760,	-0.803945391192293140,	-0.803975125343645350,	
+-0.804004857485059340,	-0.804034587616461290,	-0.804064315737776700,	-0.804094041848931410,	-0.804123765949851130,	-0.804153488040461270,	-0.804183208120687780,	-0.804212926190456370,	
+-0.804242642249692440,	-0.804272356298321940,	-0.804302068336270600,	-0.804331778363463920,	-0.804361486379828180,	-0.804391192385288440,	-0.804420896379770990,	-0.804450598363200990,	
+-0.804480298335504610,	-0.804509996296607350,	-0.804539692246435180,	-0.804569386184914030,	-0.804599078111969180,	-0.804628768027526590,	-0.804658455931512310,	-0.804688141823851620,	
+-0.804717825704470700,	-0.804747507573295050,	-0.804777187430250730,	-0.804806865275263790,	-0.804836541108259310,	-0.804866214929163440,	-0.804895886737902360,	-0.804925556534401340,	
+-0.804955224318586350,	-0.804984890090383320,	-0.805014553849718320,	-0.805044215596516730,	-0.805073875330704510,	-0.805103533052207940,	-0.805133188760952300,	-0.805162842456863650,	
+-0.805192494139867820,	-0.805222143809890880,	-0.805251791466858770,	-0.805281437110697000,	-0.805311080741331510,	-0.805340722358688700,	-0.805370361962693740,	-0.805399999553272910,	
+-0.805429635130352040,	-0.805459268693857090,	-0.805488900243714220,	-0.805518529779848950,	-0.805548157302187540,	-0.805577782810655510,	-0.805607406305178910,	-0.805637027785683910,	
+-0.805666647252096360,	-0.805696264704342300,	-0.805725880142347470,	-0.805755493566037930,	-0.805785104975339840,	-0.805814714370178710,	-0.805844321750480930,	-0.805873927116172230,	
+-0.805903530467178770,	-0.805933131803426630,	-0.805962731124841510,	-0.805992328431349600,	-0.806021923722877070,	-0.806051516999349400,	-0.806081108260693010,	-0.806110697506833950,	
+-0.806140284737698280,	-0.806169869953211600,	-0.806199453153300330,	-0.806229034337890730,	-0.806258613506908190,	-0.806288190660279120,	-0.806317765797929690,	-0.806347338919785720,	
+-0.806376910025773720,	-0.806406479115819200,	-0.806436046189848430,	-0.806465611247787820,	-0.806495174289562860,	-0.806524735315100050,	-0.806554294324325350,	-0.806583851317165030,	
+-0.806613406293545280,	-0.806642959253391690,	-0.806672510196630780,	-0.806702059123188820,	-0.806731606032991430,	-0.806761150925965010,	-0.806790693802035830,	-0.806820234661130060,	
+-0.806849773503173440,	-0.806879310328092460,	-0.806908845135813510,	-0.806938377926262110,	-0.806967908699364740,	-0.806997437455047590,	-0.807026964193236940,	-0.807056488913859060,	
+-0.807086011616839680,	-0.807115532302105310,	-0.807145050969582440,	-0.807174567619196590,	-0.807204082250874370,	-0.807233594864541940,	-0.807263105460125470,	-0.807292614037551590,	
+-0.807322120596745800,	-0.807351625137635030,	-0.807381127660144910,	-0.807410628164202060,	-0.807440126649732530,	-0.807469623116662700,	-0.807499117564919210,	-0.807528609994427550,	
+-0.807558100405114330,	-0.807587588796906180,	-0.807617075169728800,	-0.807646559523508720,	-0.807676041858172210,	-0.807705522173645550,	-0.807735000469855470,	-0.807764476746727580,	
+-0.807793951004188490,	-0.807823423242164830,	-0.807852893460582310,	-0.807882361659367550,	-0.807911827838446840,	-0.807941291997746890,	-0.807970754137193440,	-0.808000214256713090,	
+-0.808029672356232460,	-0.808059128435677400,	-0.808088582494974510,	-0.808118034534050180,	-0.808147484552830810,	-0.808176932551242900,	-0.808206378529212510,	-0.808235822486666030,	
+-0.808265264423530420,	-0.808294704339731270,	-0.808324142235195330,	-0.808353578109849090,	-0.808383011963618950,	-0.808412443796431510,	-0.808441873608212620,	-0.808471301398889120,	
+-0.808500727168387720,	-0.808530150916634050,	-0.808559572643555160,	-0.808588992349077220,	-0.808618410033127180,	-0.808647825695630760,	-0.808677239336514810,	-0.808706650955706040,	
+-0.808736060553130410,	-0.808765468128714530,	-0.808794873682385010,	-0.808824277214068350,	-0.808853678723691180,	-0.808883078211179660,	-0.808912475676460410,	-0.808941871119460140,	
+-0.808971264540105040,	-0.809000655938321710,	-0.809030045314036880,	-0.809059432667176730,	-0.809088817997668410,	-0.809118201305437770,	-0.809147582590411860,	-0.809176961852516640,	
+-0.809206339091679160,	-0.809235714307825820,	-0.809265087500883110,	-0.809294458670777980,	-0.809323827817436500,	-0.809353194940785390,	-0.809382560040751490,	-0.809411923117261070,	
+-0.809441284170240750,	-0.809470643199617260,	-0.809500000205317090,	-0.809529355187267320,	-0.809558708145393770,	-0.809588059079623500,	-0.809617407989883350,	-0.809646754876099380,	
+-0.809676099738198540,	-0.809705442576107550,	-0.809734783389753130,	-0.809764122179061460,	-0.809793458943959490,	-0.809822793684374150,	-0.809852126400231630,	-0.809881457091458760,	
+-0.809910785757982250,	-0.809940112399728740,	-0.809969437016625160,	-0.809998759608597800,	-0.810028080175573590,	-0.810057398717479390,	-0.810086715234241360,	-0.810116029725786670,	
+-0.810145342192041820,	-0.810174652632933650,	-0.810203961048389100,	-0.810233267438334350,	-0.810262571802696450,	-0.810291874141402470,	-0.810321174454378460,	-0.810350472741551480,	
+-0.810379769002848360,	-0.810409063238196170,	-0.810438355447520960,	-0.810467645630749800,	-0.810496933787809960,	-0.810526219918627390,	-0.810555504023129370,	-0.810584786101242520,	
+-0.810614066152893660,	-0.810643344178009980,	-0.810672620176517640,	-0.810701894148343820,	-0.810731166093415450,	-0.810760436011658920,	-0.810789703903001310,	-0.810818969767369450,	
+-0.810848233604690160,	-0.810877495414890510,	-0.810906755197896900,	-0.810936012953636600,	-0.810965268682036110,	-0.810994522383022390,	-0.811023774056522370,	-0.811053023702462910,	
+-0.811082271320771150,	-0.811111516911373510,	-0.811140760474197030,	-0.811170002009168890,	-0.811199241516215470,	-0.811228478995263960,	-0.811257714446241280,	-0.811286947869074290,	
+-0.811316179263690260,	-0.811345408630015470,	-0.811374635967977210,	-0.811403861277502520,	-0.811433084558517930,	-0.811462305810950690,	-0.811491525034727660,	-0.811520742229776100,	
+-0.811549957396022430,	-0.811579170533393790,	-0.811608381641817590,	-0.811637590721220100,	-0.811666797771528610,	-0.811696002792670180,	-0.811725205784571750,	-0.811754406747160600,	
+-0.811783605680363120,	-0.811812802584106600,	-0.811841997458318420,	-0.811871190302924870,	-0.811900381117853450,	-0.811929569903031000,	-0.811958756658384680,	-0.811987941383841670,	
+-0.812017124079328580,	-0.812046304744772800,	-0.812075483380101380,	-0.812104659985240950,	-0.812133834560119010,	-0.812163007104662380,	-0.812192177618798470,	-0.812221346102453890,	
+-0.812250512555556030,	-0.812279676978032050,	-0.812308839369808690,	-0.812337999730813220,	-0.812367158060972700,	-0.812396314360214310,	-0.812425468628465320,	-0.812454620865652570,	
+-0.812483771071703110,	-0.812512919246544560,	-0.812542065390103430,	-0.812571209502307210,	-0.812600351583082860,	-0.812629491632357650,	-0.812658629650058970,	-0.812687765636113560,	
+-0.812716899590448900,	-0.812746031512991740,	-0.812775161403669570,	-0.812804289262409440,	-0.812833415089138530,	-0.812862538883784350,	-0.812891660646273720,	-0.812920780376533700,	
+-0.812949898074492140,	-0.812979013740075640,	-0.813008127373211490,	-0.813037238973827070,	-0.813066348541849450,	-0.813095456077206350,	-0.813124561579824270,	-0.813153665049630820,	
+-0.813182766486553520,	-0.813211865890518970,	-0.813240963261454790,	-0.813270058599288140,	-0.813299151903946640,	-0.813328243175357010,	-0.813357332413446880,	-0.813386419618143510,	
+-0.813415504789373970,	-0.813444587927065530,	-0.813473669031145710,	-0.813502748101541660,	-0.813531825138181120,	-0.813560900140990580,	-0.813589973109897890,	-0.813619044044830540,	
+-0.813648112945715370,	-0.813677179812479780,	-0.813706244645051370,	-0.813735307443357200,	-0.813764368207325120,	-0.813793426936881840,	-0.813822483631955310,	-0.813851538292472250,	
+-0.813880590918360400,	-0.813909641509547030,	-0.813938690065959540,	-0.813967736587525640,	-0.813996781074172060,	-0.814025823525826530,	-0.814054863942416770,	-0.814083902323869620,	
+-0.814112938670112580,	-0.814141972981073270,	-0.814171005256679070,	-0.814200035496857600,	-0.814229063701535690,	-0.814258089870641190,	-0.814287114004101810,	-0.814316136101844280,	
+-0.814345156163796440,	-0.814374174189885670,	-0.814403190180039480,	-0.814432204134185600,	-0.814461216052250970,	-0.814490225934163540,	-0.814519233779850250,	-0.814548239589238940,	
+-0.814577243362257010,	-0.814606245098831950,	-0.814635244798891490,	-0.814664242462362690,	-0.814693238089173380,	-0.814722231679251170,	-0.814751223232523030,	-0.814780212748916990,	
+-0.814809200228360340,	-0.814838185670780700,	-0.814867169076105790,	-0.814896150444262780,	-0.814925129775179390,	-0.814954107068783350,	-0.814983082325001940,	-0.815012055543762660,	
+-0.815041026724993340,	-0.815069995868621720,	-0.815098962974574850,	-0.815127928042780560,	-0.815156891073166690,	-0.815185852065660300,	-0.815214811020189330,	-0.815243767936681300,	
+-0.815272722815063910,	-0.815301675655264900,	-0.815330626457211440,	-0.815359575220831470,	-0.815388521946052820,	-0.815417466632802570,	-0.815446409281008640,	-0.815475349890598780,	
+-0.815504288461500470,	-0.815533224993641670,	-0.815562159486949660,	-0.815591091941352380,	-0.815620022356777220,	-0.815648950733151910,	-0.815677877070404290,	-0.815706801368461960,	
+-0.815735723627252880,	-0.815764643846704330,	-0.815793562026744020,	-0.815822478167300140,	-0.815851392268299720,	-0.815880304329670960,	-0.815909214351341340,	-0.815938122333238700,	
+-0.815967028275291110,	-0.815995932177425500,	-0.816024834039570270,	-0.816053733861653030,	-0.816082631643601290,	-0.816111527385342980,	-0.816140421086805850,	-0.816169312747917930,	
+-0.816198202368606410,	-0.816227089948799440,	-0.816255975488424990,	-0.816284858987410320,	-0.816313740445683500,	-0.816342619863172360,	-0.816371497239804730,	-0.816400372575508460,	
+-0.816429245870211150,	-0.816458117123840640,	-0.816486986336325100,	-0.816515853507591930,	-0.816544718637569060,	-0.816573581726184330,	-0.816602442773365690,	-0.816631301779041310,	
+-0.816660158743138240,	-0.816689013665584880,	-0.816717866546309180,	-0.816746717385238630,	-0.816775566182301290,	-0.816804412937425010,	-0.816833257650537940,	-0.816862100321567470,	
+-0.816890940950441790,	-0.816919779537088940,	-0.816948616081436430,	-0.816977450583412310,	-0.817006283042944650,	-0.817035113459961270,	-0.817063941834390350,	-0.817092768166159390,	
+-0.817121592455196440,	-0.817150414701429680,	-0.817179234904786720,	-0.817208053065195730,	-0.817236869182584540,	-0.817265683256881200,	-0.817294495288013900,	-0.817323305275910130,	
+-0.817352113220498280,	-0.817380919121705960,	-0.817409722979461240,	-0.817438524793692390,	-0.817467324564327140,	-0.817496122291293760,	-0.817524917974519870,	-0.817553711613933750,	
+-0.817582503209463570,	-0.817611292761036830,	-0.817640080268581930,	-0.817668865732026680,	-0.817697649151299390,	-0.817726430526328320,	-0.817755209857040750,	-0.817783987143365200,	
+-0.817812762385229930,	-0.817841535582562560,	-0.817870306735291370,	-0.817899075843344310,	-0.817927842906649880,	-0.817956607925135580,	-0.817985370898729800,	-0.818014131827360820,	
+-0.818042890710956260,	-0.818071647549444390,	-0.818100402342753500,	-0.818129155090811630,	-0.818157905793546970,	-0.818186654450887450,	-0.818215401062761250,	-0.818244145629096750,	
+-0.818272888149821690,	-0.818301628624864330,	-0.818330367054152960,	-0.818359103437615750,	-0.818387837775180980,	-0.818416570066776260,	-0.818445300312330200,	-0.818474028511771200,	
+-0.818502754665026750,	-0.818531478772025480,	-0.818560200832695540,	-0.818588920846965330,	-0.818617638814762570,	-0.818646354736015660,	-0.818675068610653200,	-0.818703780438602810,	
+-0.818732490219792890,	-0.818761197954151810,	-0.818789903641607750,	-0.818818607282089110,	-0.818847308875523710,	-0.818876008421840050,	-0.818904705920966650,	-0.818933401372831220,	
+-0.818962094777362370,	-0.818990786134488170,	-0.819019475444137000,	-0.819048162706237480,	-0.819076847920717220,	-0.819105531087505170,	-0.819134212206528930,	-0.819162891277717240,	
+-0.819191568300998260,	-0.819220243276300500,	-0.819248916203552220,	-0.819277587082681500,	-0.819306255913616830,	-0.819334922696286720,	-0.819363587430618990,	-0.819392250116542380,	
+-0.819420910753985150,	-0.819449569342875610,	-0.819478225883142340,	-0.819506880374713420,	-0.819535532817517120,	-0.819564183211482390,	-0.819592831556536840,	-0.819621477852609300,	
+-0.819650122099627950,	-0.819678764297521620,	-0.819707404446218150,	-0.819736042545646140,	-0.819764678595734320,	-0.819793312596410530,	-0.819821944547603380,	-0.819850574449241480,	
+-0.819879202301253110,	-0.819907828103566880,	-0.819936451856110970,	-0.819965073558813870,	-0.819993693211604310,	-0.820022310814410350,	-0.820050926367160480,	-0.820079539869783440,	
+-0.820108151322207490,	-0.820136760724361480,	-0.820165368076173240,	-0.820193973377571610,	-0.820222576628485190,	-0.820251177828842160,	-0.820279776978571240,	-0.820308374077600820,	
+-0.820336969125859740,	-0.820365562123275940,	-0.820394153069778250,	-0.820422741965295520,	-0.820451328809755580,	-0.820479913603087360,	-0.820508496345219380,	-0.820537077036080030,	
+-0.820565655675598360,	-0.820594232263702320,	-0.820622806800320630,	-0.820651379285382230,	-0.820679949718815080,	-0.820708518100548120,	-0.820737084430509740,	-0.820765648708628780,	
+-0.820794210934833960,	-0.820822771109053220,	-0.820851329231215950,	-0.820879885301250000,	-0.820908439319084420,	-0.820936991284647700,	-0.820965541197868460,	-0.820994089058675660,	
+-0.821022634866997450,	-0.821051178622762560,	-0.821079720325900040,	-0.821108259976337960,	-0.821136797574005150,	-0.821165333118830440,	-0.821193866610742340,	-0.821222398049669790,	
+-0.821250927435541070,	-0.821279454768285010,	-0.821307980047830570,	-0.821336503274106010,	-0.821365024447040070,	-0.821393543566561580,	-0.821422060632599480,	-0.821450575645082060,	
+-0.821479088603938150,	-0.821507599509096800,	-0.821536108360486180,	-0.821564615158035250,	-0.821593119901672830,	-0.821621622591327540,	-0.821650123226928540,	-0.821678621808403900,	
+-0.821707118335682770,	-0.821735612808694120,	-0.821764105227366090,	-0.821792595591627870,	-0.821821083901408180,	-0.821849570156635730,	-0.821878054357239600,	-0.821906536503148040,	
+-0.821935016594290250,	-0.821963494630595040,	-0.821991970611990920,	-0.822020444538406950,	-0.822048916409771730,	-0.822077386226014560,	-0.822105853987063600,	-0.822134319692848110,	
+-0.822162783343297070,	-0.822191244938338730,	-0.822219704477902270,	-0.822248161961916630,	-0.822276617390310550,	-0.822305070763013180,	-0.822333522079952810,	-0.822361971341058710,	
+-0.822390418546259940,	-0.822418863695484890,	-0.822447306788662620,	-0.822475747825722190,	-0.822504186806592320,	-0.822532623731202170,	-0.822561058599480250,	-0.822589491411355960,	
+-0.822617922166757780,	-0.822646350865614660,	-0.822674777507855670,	-0.822703202093409750,	-0.822731624622206170,	-0.822760045094173220,	-0.822788463509240060,	-0.822816879867336090,	
+-0.822845294168389700,	-0.822873706412330040,	-0.822902116599086080,	-0.822930524728586850,	-0.822958930800761550,	-0.822987334815538650,	-0.823015736772847450,	-0.823044136672617220,	
+-0.823072534514776350,	-0.823100930299254130,	-0.823129324025979600,	-0.823157715694881940,	-0.823186105305889870,	-0.823214492858932450,	-0.823242878353939060,	-0.823271261790838200,	
+-0.823299643169559170,	-0.823328022490031120,	-0.823356399752183000,	-0.823384774955944090,	-0.823413148101243000,	-0.823441519188009010,	-0.823469888216171510,	-0.823498255185659000,	
+-0.823526620096400990,	-0.823554982948326300,	-0.823583343741364100,	-0.823611702475443910,	-0.823640059150494210,	-0.823668413766444620,	-0.823696766323223640,	-0.823725116820760880,	
+-0.823753465258985180,	-0.823781811637825930,	-0.823810155957212410,	-0.823838498217073110,	-0.823866838417337650,	-0.823895176557935430,	-0.823923512638794930,	-0.823951846659845670,	
+-0.823980178621016800,	-0.824008508522237500,	-0.824036836363437160,	-0.824065162144544390,	-0.824093485865488810,	-0.824121807526199790,	-0.824150127126605960,	-0.824178444666636810,	
+-0.824206760146221520,	-0.824235073565289690,	-0.824263384923769830,	-0.824291694221591540,	-0.824320001458684230,	-0.824348306634976710,	-0.824376609750398390,	-0.824404910804878540,	
+-0.824433209798346440,	-0.824461506730731600,	-0.824489801601962610,	-0.824518094411969330,	-0.824546385160680910,	-0.824574673848026300,	-0.824602960473935000,	-0.824631245038336290,	
+-0.824659527541159560,	-0.824687807982334210,	-0.824716086361789060,	-0.824744362679453720,	-0.824772636935257710,	-0.824800909129129840,	-0.824829179260999750,	-0.824857447330796690,	
+-0.824885713338450290,	-0.824913977283889270,	-0.824942239167043350,	-0.824970498987842140,	-0.824998756746214370,	-0.825027012442089650,	-0.825055266075397480,	-0.825083517646067240,	
+-0.825111767154028340,	-0.825140014599209710,	-0.825168259981541200,	-0.825196503300952180,	-0.825224744557371710,	-0.825252983750729310,	-0.825281220880954570,	-0.825309455947976670,	
+-0.825337688951725430,	-0.825365919892129710,	-0.825394148769119430,	-0.825422375582623440,	-0.825450600332571670,	-0.825478823018893300,	-0.825507043641517950,	-0.825535262200375100,	
+-0.825563478695394040,	-0.825591693126504160,	-0.825619905493635290,	-0.825648115796716490,	-0.825676324035677260,	-0.825704530210447320,	-0.825732734320956060,	-0.825760936367133210,	
+-0.825789136348907830,	-0.825817334266209510,	-0.825845530118968110,	-0.825873723907112670,	-0.825901915630572910,	-0.825930105289278350,	-0.825958292883158810,	-0.825986478412143230,	
+-0.826014661876161460,	-0.826042843275143320,	-0.826071022609017880,	-0.826099199877714850,	-0.826127375081163740,	-0.826155548219294270,	-0.826183719292036160,	-0.826211888299318460,	
+-0.826240055241071140,	-0.826268220117223780,	-0.826296382927705800,	-0.826324543672446680,	-0.826352702351376370,	-0.826380858964424150,	-0.826409013511520190,	-0.826437165992593310,	
+-0.826465316407573590,	-0.826493464756390850,	-0.826521611038974150,	-0.826549755255253430,	-0.826577897405158300,	-0.826606037488618720,	-0.826634175505563840,	-0.826662311455923390,	
+-0.826690445339627540,	-0.826718577156605240,	-0.826746706906786530,	-0.826774834590101040,	-0.826802960206478480,	-0.826831083755848790,	-0.826859205238141160,	-0.826887324653285400,	
+-0.826915442001211700,	-0.826943557281849100,	-0.826971670495127540,	-0.826999781640976870,	-0.827027890719326810,	-0.827055997730107180,	-0.827084102673247390,	-0.827112205548677480,	
+-0.827140306356326850,	-0.827168405096125550,	-0.827196501768003080,	-0.827224596371889500,	-0.827252688907714640,	-0.827280779375407670,	-0.827308867774898870,	-0.827336954106118180,	
+-0.827365038368994780,	-0.827393120563458930,	-0.827421200689440140,	-0.827449278746868360,	-0.827477354735673630,	-0.827505428655785360,	-0.827533500507133370,	-0.827561570289648050,	
+-0.827589638003258350,	-0.827617703647894780,	-0.827645767223486820,	-0.827673828729964640,	-0.827701888167257760,	-0.827729945535296110,	-0.827758000834009850,	-0.827786054063328280,	
+-0.827814105223181660,	-0.827842154313499720,	-0.827870201334212520,	-0.827898246285249880,	-0.827926289166541540,	-0.827954329978017320,	-0.827982368719607620,	-0.828010405391241820,	
+-0.828038439992849870,	-0.828066472524361830,	-0.828094502985707640,	-0.828122531376817460,	-0.828150557697620690,	-0.828178581948047610,	-0.828206604128028270,	-0.828234624237492060,	
+-0.828262642276369480,	-0.828290658244590140,	-0.828318672142084430,	-0.828346683968781860,	-0.828374693724612590,	-0.828402701409506780,	-0.828430707023393940,	-0.828458710566204350,	
+-0.828486712037868060,	-0.828514711438314900,	-0.828542708767475160,	-0.828570704025278550,	-0.828598697211655130,	-0.828626688326535190,	-0.828654677369848210,	-0.828682664341524710,	
+-0.828710649241494400,	-0.828738632069687560,	-0.828766612826034250,	-0.828794591510464310,	-0.828822568122908110,	-0.828850542663295160,	-0.828878515131555970,	-0.828906485527620470,	
+-0.828934453851418730,	-0.828962420102881010,	-0.828990384281937160,	-0.829018346388517240,	-0.829046306422551730,	-0.829074264383970250,	-0.829102220272703080,	-0.829130174088680280,	
+-0.829158125831832130,	-0.829186075502088890,	-0.829214023099380300,	-0.829241968623636530,	-0.829269912074788170,	-0.829297853452764630,	-0.829325792757496630,	-0.829353729988914100,	
+-0.829381665146947440,	-0.829409598231526490,	-0.829437529242581410,	-0.829465458180042800,	-0.829493385043840290,	-0.829521309833904370,	-0.829549232550165110,	-0.829577153192552870,	
+-0.829605071760997960,	-0.829632988255430080,	-0.829660902675779740,	-0.829688815021977330,	-0.829716725293952680,	-0.829744633491636300,	-0.829772539614958230,	-0.829800443663848860,	
+-0.829828345638238600,	-0.829856245538057260,	-0.829884143363235350,	-0.829912039113703260,	-0.829939932789390820,	-0.829967824390228540,	-0.829995713916146790,	-0.830023601367075870,	
+-0.830051486742945820,	-0.830079370043686930,	-0.830107251269230020,	-0.830135130419504600,	-0.830163007494441390,	-0.830190882493970770,	-0.830218755418022810,	-0.830246626266528230,	
+-0.830274495039416860,	-0.830302361736619310,	-0.830330226358066080,	-0.830358088903686900,	-0.830385949373412590,	-0.830413807767173440,	-0.830441664084899720,	-0.830469518326522160,	
+-0.830497370491970480,	-0.830525220581175730,	-0.830553068594067520,	-0.830580914530576810,	-0.830608758390633750,	-0.830636600174168740,	-0.830664439881112490,	-0.830692277511394960,	
+-0.830720113064946640,	-0.830747946541698370,	-0.830775777941579970,	-0.830803607264522070,	-0.830831434510455270,	-0.830859259679309740,	-0.830887082771016420,	-0.830914903785505030,	
+-0.830942722722706420,	-0.830970539582551290,	-0.830998354364969600,	-0.831026167069891960,	-0.831053977697248980,	-0.831081786246971270,	-0.831109592718988770,	-0.831137397113232310,	
+-0.831165199429632630,	-0.831192999668119770,	-0.831220797828624350,	-0.831248593911076970,	-0.831276387915408030,	-0.831304179841548360,	-0.831331969689428130,	-0.831359757458977830,	
+-0.831387543150128530,	-0.831415326762810050,	-0.831443108296953230,	-0.831470887752488670,	-0.831498665129346890,	-0.831526440427458600,	-0.831554213646754080,	-0.831581984787164270,	
+-0.831609753848619130,	-0.831637520831049800,	-0.831665285734386470,	-0.831693048558560080,	-0.831720809303501230,	-0.831748567969140100,	-0.831776324555407620,	-0.831804079062234520,	
+-0.831831831489551090,	-0.831859581837287920,	-0.831887330105375860,	-0.831915076293745500,	-0.831942820402327700,	-0.831970562431052500,	-0.831998302379851060,	-0.832026040248654010,	
+-0.832053776037391610,	-0.832081509745994820,	-0.832109241374394240,	-0.832136970922520700,	-0.832164698390304600,	-0.832192423777676770,	-0.832220147084568040,	-0.832247868310908800,	
+-0.832275587456629770,	-0.832303304521661900,	-0.832331019505935690,	-0.832358732409382180,	-0.832386443231931560,	-0.832414151973514870,	-0.832441858634063060,	-0.832469563213506400,	
+-0.832497265711775740,	-0.832524966128802000,	-0.832552664464515810,	-0.832580360718848220,	-0.832608054891729400,	-0.832635746983090510,	-0.832663436992862490,	-0.832691124920975630,	
+-0.832718810767360980,	-0.832746494531949380,	-0.832774176214671650,	-0.832801855815458290,	-0.832829533334240260,	-0.832857208770948710,	-0.832884882125513810,	-0.832912553397866740,	
+-0.832940222587938320,	-0.832967889695659270,	-0.832995554720960760,	-0.833023217663773190,	-0.833050878524027590,	-0.833078537301654930,	-0.833106193996585700,	-0.833133848608751060,	
+-0.833161501138081740,	-0.833189151584508680,	-0.833216799947963050,	-0.833244446228375120,	-0.833272090425676290,	-0.833299732539797060,	-0.833327372570668360,	-0.833355010518221360,	
+-0.833382646382386790,	-0.833410280163095820,	-0.833437911860279050,	-0.833465541473867310,	-0.833493169003792110,	-0.833520794449983620,	-0.833548417812373210,	-0.833576039090891730,	
+-0.833603658285470230,	-0.833631275396039760,	-0.833658890422530830,	-0.833686503364874710,	-0.833714114223002570,	-0.833741722996844900,	-0.833769329686332990,	-0.833796934291397670,	
+-0.833824536811970330,	-0.833852137247981350,	-0.833879735599362020,	-0.833907331866043600,	-0.833934926047956600,	-0.833962518145032420,	-0.833990108157201760,	-0.834017696084395910,	
+-0.834045281926546030,	-0.834072865683582740,	-0.834100447355437310,	-0.834128026942040910,	-0.834155604443324260,	-0.834183179859218640,	-0.834210753189654990,	-0.834238324434564580,	
+-0.834265893593878480,	-0.834293460667527410,	-0.834321025655442750,	-0.834348588557555780,	-0.834376149373797000,	-0.834403708104097920,	-0.834431264748389580,	-0.834458819306603260,	
+-0.834486371778669690,	-0.834513922164520140,	-0.834541470464086110,	-0.834569016677298100,	-0.834596560804087620,	-0.834624102844385710,	-0.834651642798123540,	-0.834679180665232500,	
+-0.834706716445643200,	-0.834734250139287150,	-0.834761781746095720,	-0.834789311265999650,	-0.834816838698930310,	-0.834844364044818770,	-0.834871887303596400,	-0.834899408475194500,	
+-0.834926927559543900,	-0.834954444556576190,	-0.834981959466222110,	-0.835009472288413160,	-0.835036983023080490,	-0.835064491670155400,	-0.835091998229569370,	-0.835119502701253010,	
+-0.835147005085137950,	-0.835174505381155560,	-0.835202003589236690,	-0.835229499709312820,	-0.835256993741315230,	-0.835284485685175100,	-0.835311975540824040,	-0.835339463308192860,	
+-0.835366948987212980,	-0.835394432577815870,	-0.835421914079932600,	-0.835449393493494450,	-0.835476870818432800,	-0.835504346054679160,	-0.835531819202164570,	-0.835559290260820320,	
+-0.835586759230578120,	-0.835614226111368820,	-0.835641690903123900,	-0.835669153605774760,	-0.835696614219252680,	-0.835724072743489480,	-0.835751529178415660,	-0.835778983523963180,	
+-0.835806435780063420,	-0.835833885946647310,	-0.835861334023646490,	-0.835888780010992320,	-0.835916223908616200,	-0.835943665716449850,	-0.835971105434423990,	-0.835998543062470350,	
+-0.836025978600520750,	-0.836053412048505810,	-0.836080843406357350,	-0.836108272674006890,	-0.836135699851385920,	-0.836163124938425480,	-0.836190547935057200,	-0.836217968841212800,	
+-0.836245387656823210,	-0.836272804381820170,	-0.836300219016135160,	-0.836327631559699580,	-0.836355042012445150,	-0.836382450374302920,	-0.836409856645204510,	-0.836437260825081740,	
+-0.836464662913865450,	-0.836492062911487700,	-0.836519460817879650,	-0.836546856632973010,	-0.836574250356699410,	-0.836601641988990010,	-0.836629031529776750,	-0.836656418978990680,	
+-0.836683804336563530,	-0.836711187602426800,	-0.836738568776512200,	-0.836765947858751360,	-0.836793324849075540,	-0.836820699747416240,	-0.836848072553705520,	-0.836875443267874330,	
+-0.836902811889854600,	-0.836930178419577840,	-0.836957542856975540,	-0.836984905201979660,	-0.837012265454521340,	-0.837039623614532320,	-0.837066979681944430,	-0.837094333656688950,	
+-0.837121685538697590,	-0.837149035327901970,	-0.837176383024234030,	-0.837203728627624930,	-0.837231072138006520,	-0.837258413555310610,	-0.837285752879468490,	-0.837313090110411880,	
+-0.837340425248072620,	-0.837367758292382300,	-0.837395089243272770,	-0.837422418100675410,	-0.837449744864521950,	-0.837477069534744320,	-0.837504392111273810,	-0.837531712594042240,	
+-0.837559030982981460,	-0.837586347278023060,	-0.837613661479099100,	-0.837640973586140760,	-0.837668283599079850,	-0.837695591517848560,	-0.837722897342378150,	-0.837750201072600340,	
+-0.837777502708447090,	-0.837804802249850320,	-0.837832099696741330,	-0.837859395049052050,	-0.837886688306714530,	-0.837913979469660060,	-0.837941268537820690,	-0.837968555511128140,	
+-0.837995840389514140,	-0.838023123172910830,	-0.838050403861249400,	-0.838077682454462010,	-0.838104958952480610,	-0.838132233355236680,	-0.838159505662662060,	-0.838186775874688710,	
+-0.838214043991248440,	-0.838241310012273310,	-0.838268573937694610,	-0.838295835767444820,	-0.838323095501455120,	-0.838350353139657670,	-0.838377608681984300,	-0.838404862128367070,	
+-0.838432113478737810,	-0.838459362733028010,	-0.838486609891169850,	-0.838513854953095380,	-0.838541097918735990,	-0.838568338788023950,	-0.838595577560890980,	-0.838622814237269140,	
+-0.838650048817090490,	-0.838677281300286400,	-0.838704511686789170,	-0.838731739976530940,	-0.838758966169443120,	-0.838786190265457860,	-0.838813412264507010,	-0.838840632166523050,	
+-0.838867849971437150,	-0.838895065679181710,	-0.838922279289688770,	-0.838949490802889940,	-0.838976700218717400,	-0.839003907537103080,	-0.839031112757978930,	-0.839058315881277330,	
+-0.839085516906929670,	-0.839112715834868240,	-0.839139912665025190,	-0.839167107397332130,	-0.839194300031721350,	-0.839221490568124890,	-0.839248679006474600,	-0.839275865346702840,	
+-0.839303049588741250,	-0.839330231732522190,	-0.839357411777977400,	-0.839384589725039040,	-0.839411765573639170,	-0.839438939323709940,	-0.839466110975183640,	-0.839493280527991770,	
+-0.839520447982066600,	-0.839547613337340740,	-0.839574776593745460,	-0.839601937751213280,	-0.839629096809676350,	-0.839656253769066610,	-0.839683408629316450,	-0.839710561390357490,	
+-0.839737712052122220,	-0.839764860614542810,	-0.839792007077551080,	-0.839819151441079330,	-0.839846293705059700,	-0.839873433869424590,	-0.839900571934105610,	-0.839927707899035260,	
+-0.839954841764145810,	-0.839981973529369100,	-0.840009103194637400,	-0.840036230759882980,	-0.840063356225037920,	-0.840090479590034690,	-0.840117600854805140,	-0.840144720019281530,	
+-0.840171837083396380,	-0.840198952047081280,	-0.840226064910268970,	-0.840253175672891370,	-0.840280284334880890,	-0.840307390896170010,	-0.840334495356690250,	-0.840361597716374310,	
+-0.840388697975154700,	-0.840415796132963020,	-0.840442892189731890,	-0.840469986145393590,	-0.840497077999880490,	-0.840524167753124440,	-0.840551255405058040,	-0.840578340955613680,	
+-0.840605424404723190,	-0.840632505752319180,	-0.840659584998333930,	-0.840686662142699710,	-0.840713737185349030,	-0.840740810126213820,	-0.840767880965226590,	-0.840794949702319940,	
+-0.840822016337425590,	-0.840849080870476160,	-0.840876143301404140,	-0.840903203630141700,	-0.840930261856621560,	-0.840957317980775440,	-0.840984372002536280,	-0.841011423921836030,	
+-0.841038473738607180,	-0.841065521452782020,	-0.841092567064293250,	-0.841119610573073160,	-0.841146651979053920,	-0.841173691282168010,	-0.841200728482348060,	-0.841227763579526000,	
+-0.841254796573634670,	-0.841281827464606340,	-0.841308856252373390,	-0.841335882936868560,	-0.841362907518023670,	-0.841389929995771670,	-0.841416950370045050,	-0.841443968640775750,	
+-0.841470984807896620,	-0.841497998871339910,	-0.841525010831038260,	-0.841552020686924360,	-0.841579028438930180,	-0.841606034086988640,	-0.841633037631031700,	-0.841660039070992290,	
+-0.841687038406802700,	-0.841714035638395530,	-0.841741030765703280,	-0.841768023788658670,	-0.841795014707194090,	-0.841822003521241590,	-0.841848990230734230,	-0.841875974835604280,	
+-0.841902957335784460,	-0.841929937731207280,	-0.841956916021805450,	-0.841983892207511020,	-0.842010866288257160,	-0.842037838263975940,	-0.842064808134600050,	-0.842091775900062120,	
+-0.842118741560294870,	-0.842145705115230680,	-0.842172666564802500,	-0.842199625908942370,	-0.842226583147583470,	-0.842253538280657850,	-0.842280491308098340,	-0.842307442229837670,	
+-0.842334391045808430,	-0.842361337755943350,	-0.842388282360174710,	-0.842415224858435670,	-0.842442165250658290,	-0.842469103536775510,	-0.842496039716719940,	-0.842522973790424290,	
+-0.842549905757821180,	-0.842576835618843560,	-0.842603763373423580,	-0.842630689021494520,	-0.842657612562988430,	-0.842684533997838270,	-0.842711453325976860,	-0.842738370547336800,	
+-0.842765285661850830,	-0.842792198669451880,	-0.842819109570072110,	-0.842846018363644920,	-0.842872925050102360,	-0.842899829629377480,	-0.842926732101403120,	-0.842953632466111880,	
+-0.842980530723436820,	-0.843007426873310100,	-0.843034320915665210,	-0.843061212850434120,	-0.843088102677550080,	-0.843114990396945820,	-0.843141876008553950,	-0.843168759512307520,	
+-0.843195640908139370,	-0.843222520195981980,	-0.843249397375768430,	-0.843276272447431200,	-0.843303145410903230,	-0.843330016266117370,	-0.843356885013006540,	-0.843383751651503480,	
+-0.843410616181541340,	-0.843437478603052520,	-0.843464338915969840,	-0.843491197120226350,	-0.843518053215754790,	-0.843544907202488200,	-0.843571759080359310,	-0.843598608849301160,	
+-0.843625456509246360,	-0.843652302060128090,	-0.843679145501878950,	-0.843705986834431760,	-0.843732826057719710,	-0.843759663171675610,	-0.843786498176232410,	-0.843813331071323060,	
+-0.843840161856880160,	-0.843866990532837200,	-0.843893817099126480,	-0.843920641555681250,	-0.843947463902434250,	-0.843974284139318740,	-0.844001102266267790,	-0.844027918283213770,	
+-0.844054732190090200,	-0.844081543986829550,	-0.844108353673365120,	-0.844135161249629730,	-0.844161966715556430,	-0.844188770071078290,	-0.844215571316128340,	-0.844242370450639320,	
+-0.844269167474544610,	-0.844295962387776710,	-0.844322755190268890,	-0.844349545881954210,	-0.844376334462765720,	-0.844403120932636360,	-0.844429905291499420,	-0.844456687539287380,	
+-0.844483467675933960,	-0.844510245701371680,	-0.844537021615533680,	-0.844563795418353250,	-0.844590567109763210,	-0.844617336689697070,	-0.844644104158087330,	-0.844670869514867580,	
+-0.844697632759970340,	-0.844724393893329100,	-0.844751152914876900,	-0.844777909824546700,	-0.844804664622271880,	-0.844831417307985500,	-0.844858167881620380,	-0.844884916343110140,	
+-0.844911662692387270,	-0.844938406929385270,	-0.844965149054037300,	-0.844991889066276540,	-0.845018626966035910,	-0.845045362753249040,	-0.845072096427848640,	-0.845098827989767880,	
+-0.845125557438940020,	-0.845152284775298250,	-0.845179009998775820,	-0.845205733109305800,	-0.845232454106821680,	-0.845259172991256190,	-0.845285889762543040,	-0.845312604420614950,	
+-0.845339316965405320,	-0.845366027396847410,	-0.845392735714874390,	-0.845419441919419530,	-0.845446146010416340,	-0.845472847987797650,	-0.845499547851496950,	-0.845526245601447180,	
+-0.845552941237581730,	-0.845579634759834000,	-0.845606326168137130,	-0.845633015462424750,	-0.845659702642629570,	-0.845686387708685320,	-0.845713070660524920,	-0.845739751498081780,	
+-0.845766430221289390,	-0.845793106830080800,	-0.845819781324389510,	-0.845846453704149010,	-0.845873123969292040,	-0.845899792119752640,	-0.845926458155463410,	-0.845953122076358090,	
+-0.845979783882369940,	-0.846006443573432350,	-0.846033101149478610,	-0.846059756610442410,	-0.846086409956256610,	-0.846113061186854920,	-0.846139710302170390,	-0.846166357302136630,	
+-0.846193002186686920,	-0.846219644955754750,	-0.846246285609273620,	-0.846272924147176590,	-0.846299560569397480,	-0.846326194875869240,	-0.846352827066525590,	-0.846379457141299810,	
+-0.846406085100125270,	-0.846432710942935710,	-0.846459334669664500,	-0.846485956280244700,	-0.846512575774610370,	-0.846539193152694210,	-0.846565808414430190,	-0.846592421559751560,	
+-0.846619032588591950,	-0.846645641500884950,	-0.846672248296563620,	-0.846698852975561910,	-0.846725455537812870,	-0.846752055983250100,	-0.846778654311807210,	-0.846805250523417710,	
+-0.846831844618015190,	-0.846858436595533170,	-0.846885026455904800,	-0.846911614199064130,	-0.846938199824944230,	-0.846964783333478800,	-0.846991364724601460,	-0.847017943998245700,	
+-0.847044521154345030,	-0.847071096192833270,	-0.847097669113643590,	-0.847124239916709930,	-0.847150808601965450,	-0.847177375169343990,	-0.847203939618779160,	-0.847230501950204330,	
+-0.847257062163553560,	-0.847283620258759810,	-0.847310176235757330,	-0.847336730094479180,	-0.847363281834859210,	-0.847389831456831000,	-0.847416378960328180,	-0.847442924345284450,	
+-0.847469467611633660,	-0.847496008759308970,	-0.847522547788244540,	-0.847549084698373420,	-0.847575619489629560,	-0.847602152161946790,	-0.847628682715258490,	-0.847655211149498600,	
+-0.847681737464600850,	-0.847708261660498510,	-0.847734783737125850,	-0.847761303694415820,	-0.847787821532302700,	-0.847814337250719970,	-0.847840850849601370,	-0.847867362328880940,	
+-0.847893871688491840,	-0.847920378928368250,	-0.847946884048443540,	-0.847973387048651550,	-0.847999887928926110,	-0.848026386689201050,	-0.848052883329409870,	-0.848079377849486840,	
+-0.848105870249365120,	-0.848132360528978890,	-0.848158848688261520,	-0.848185334727147190,	-0.848211818645569380,	-0.848238300443462050,	-0.848264780120759230,	-0.848291257677394110,	
+-0.848317733113301160,	-0.848344206428413680,	-0.848370677622665600,	-0.848397146695990980,	-0.848423613648323420,	-0.848450078479596750,	-0.848476541189745140,	-0.848503001778702080,	
+-0.848529460246401520,	-0.848555916592777290,	-0.848582370817763110,	-0.848608822921293140,	-0.848635272903300990,	-0.848661720763720710,	-0.848688166502486350,	-0.848714610119531420,	
+-0.848741051614790190,	-0.848767490988196040,	-0.848793928239683140,	-0.848820363369185430,	-0.848846796376636850,	-0.848873227261971450,	-0.848899656025122850,	-0.848926082666025210,	
+-0.848952507184612240,	-0.848978929580818000,	-0.849005349854576320,	-0.849031768005821360,	-0.849058184034486960,	-0.849084597940507390,	-0.849111009723816030,	-0.849137419384347390,	
+-0.849163826922034960,	-0.849190232336813010,	-0.849216635628615490,	-0.849243036797376340,	-0.849269435843029610,	-0.849295832765509460,	-0.849322227564749840,	-0.849348620240684250,	
+-0.849375010793247290,	-0.849401399222372680,	-0.849427785527994690,	-0.849454169710047170,	-0.849480551768464380,	-0.849506931703180150,	-0.849533309514128640,	-0.849559685201243700,	
+-0.849586058764459580,	-0.849612430203710360,	-0.849638799518929950,	-0.849665166710052660,	-0.849691531777012620,	-0.849717894719743460,	-0.849744255538179890,	-0.849770614232255420,	
+-0.849796970801904420,	-0.849823325247060950,	-0.849849677567659170,	-0.849876027763633470,	-0.849902375834917460,	-0.849928721781445740,	-0.849955065603152040,	-0.849981407299970630,	
+-0.850007746871835670,	-0.850034084318681330,	-0.850060419640441770,	-0.850086752837051480,	-0.850113083908444090,	-0.850139412854554080,	-0.850165739675315390,	-0.850192064370662410,	
+-0.850218386940529200,	-0.850244707384850030,	-0.850271025703559060,	-0.850297341896590900,	-0.850323655963878930,	-0.850349967905358220,	-0.850376277720962360,	-0.850402585410625740,	
+-0.850428890974282650,	-0.850455194411867340,	-0.850481495723314330,	-0.850507794908557320,	-0.850534091967531050,	-0.850560386900169330,	-0.850586679706406560,	-0.850612970386177230,	
+-0.850639258939415390,	-0.850665545366055430,	-0.850691829666031850,	-0.850718111839278370,	-0.850744391885729920,	-0.850770669805320230,	-0.850796945597983910,	-0.850823219263655230,	
+-0.850849490802268460,	-0.850875760213757990,	-0.850902027498058320,	-0.850928292655103610,	-0.850954555684828030,	-0.850980816587165960,	-0.851007075362051780,	-0.851033332009420000,	
+-0.851059586529204880,	-0.851085838921341040,	-0.851112089185762310,	-0.851138337322403630,	-0.851164583331198930,	-0.851190827212082720,	-0.851217068964989390,	-0.851243308589853420,	
+-0.851269546086609210,	-0.851295781455191360,	-0.851322014695533810,	-0.851348245807571510,	-0.851374474791238290,	-0.851400701646468970,	-0.851426926373197830,	-0.851453148971359370,	
+-0.851479369440888310,	-0.851505587781718590,	-0.851531803993785030,	-0.851558018077021810,	-0.851584230031363630,	-0.851610439856744780,	-0.851636647553099760,	-0.851662853120363270,	
+-0.851689056558469830,	-0.851715257867353470,	-0.851741457046949260,	-0.851767654097191130,	-0.851793849018013920,	-0.851820041809352000,	-0.851846232471140000,	-0.851872421003312510,	
+-0.851898607405804030,	-0.851924791678548950,	-0.851950973821482100,	-0.851977153834537540,	-0.852003331717650080,	-0.852029507470754340,	-0.852055681093784820,	-0.852081852586676350,	
+-0.852108021949362970,	-0.852134189181779860,	-0.852160354283860940,	-0.852186517255541180,	-0.852212678096755050,	-0.852238836807437390,	-0.852264993387522480,	-0.852291147836945370,	
+-0.852317300155640220,	-0.852343450343541980,	-0.852369598400584900,	-0.852395744326703840,	-0.852421888121833390,	-0.852448029785908280,	-0.852474169318863110,	-0.852500306720632710,	
+-0.852526441991151460,	-0.852552575130353980,	-0.852578706138174990,	-0.852604835014549310,	-0.852630961759411440,	-0.852657086372696220,	-0.852683208854338570,	-0.852709329204272560,	
+-0.852735447422433570,	-0.852761563508755650,	-0.852787677463173850,	-0.852813789285622900,	-0.852839898976037400,	-0.852866006534352180,	-0.852892111960502300,	-0.852918215254421690,	
+-0.852944316416045960,	-0.852970415445309050,	-0.852996512342146240,	-0.853022607106492030,	-0.853048699738281350,	-0.853074790237449250,	-0.853100878603929800,	-0.853126964837658490,	
+-0.853153048938569470,	-0.853179130906597800,	-0.853205210741678320,	-0.853231288443745850,	-0.853257364012735220,	-0.853283437448581370,	-0.853309508751218580,	-0.853335577920582460,	
+-0.853361644956607050,	-0.853387709859227410,	-0.853413772628378700,	-0.853439833263995420,	-0.853465891766012620,	-0.853491948134365350,	-0.853518002368987890,	-0.853544054469815740,	
+-0.853570104436783160,	-0.853596152269825330,	-0.853622197968877170,	-0.853648241533873420,	-0.853674282964749340,	-0.853700322261439330,	-0.853726359423878760,	-0.853752394452002130,	
+-0.853778427345744380,	-0.853804458105040690,	-0.853830486729825750,	-0.853856513220034640,	-0.853882537575602510,	-0.853908559796463740,	-0.853934579882553830,	-0.853960597833807180,	
+-0.853986613650159150,	-0.854012627331544480,	-0.854038638877898330,	-0.854064648289155740,	-0.854090655565251320,	-0.854116660706120580,	-0.854142663711697890,	-0.854168664581918420,	
+-0.854194663316717450,	-0.854220659916029800,	-0.854246654379790420,	-0.854272646707934790,	-0.854298636900397200,	-0.854324624957113250,	-0.854350610878017450,	-0.854376594663045270,	
+-0.854402576312131460,	-0.854428555825211270,	-0.854454533202219760,	-0.854480508443092090,	-0.854506481547762880,	-0.854532452516167720,	-0.854558421348241230,	-0.854584388043918670,	
+-0.854610352603135110,	-0.854636315025825710,	-0.854662275311925730,	-0.854688233461369910,	-0.854714189474093610,	-0.854740143350031680,	-0.854766095089119380,	-0.854792044691291890,	
+-0.854817992156484240,	-0.854843937484631610,	-0.854869880675669380,	-0.854895821729532160,	-0.854921760646155660,	-0.854947697425474500,	-0.854973632067424160,	-0.854999564571939710,	
+-0.855025494938956410,	-0.855051423168409320,	-0.855077349260233820,	-0.855103273214364860,	-0.855129195030737810,	-0.855155114709287620,	-0.855181032249949680,	-0.855206947652659030,	
+-0.855232860917351180,	-0.855258772043961280,	-0.855284681032424280,	-0.855310587882675780,	-0.855336492594650610,	-0.855362395168284160,	-0.855388295603511710,	-0.855414193900268630,	
+-0.855440090058489980,	-0.855465984078111360,	-0.855491875959067620,	-0.855517765701294230,	-0.855543653304726370,	-0.855569538769299310,	-0.855595422094948430,	-0.855621303281608900,	
+-0.855647182329216440,	-0.855673059237705870,	-0.855698934007012690,	-0.855724806637072070,	-0.855750677127819380,	-0.855776545479190130,	-0.855802411691119370,	-0.855828275763542590,	
+-0.855854137696395400,	-0.855879997489612630,	-0.855905855143130110,	-0.855931710656882670,	-0.855957564030806030,	-0.855983415264835350,	-0.856009264358906230,	-0.856035111312953960,	
+-0.856060956126914130,	-0.856086798800721690,	-0.856112639334312480,	-0.856138477727621420,	-0.856164313980584120,	-0.856190148093136090,	-0.856215980065212710,	-0.856241809896749580,	
+-0.856267637587681650,	-0.856293463137944970,	-0.856319286547474360,	-0.856345107816205430,	-0.856370926944073910,	-0.856396743931014950,	-0.856422558776964160,	-0.856448371481857150,	
+-0.856474182045629080,	-0.856499990468215680,	-0.856525796749552200,	-0.856551600889574160,	-0.856577402888217150,	-0.856603202745416570,	-0.856629000461108010,	-0.856654796035227210,	
+-0.856680589467709310,	-0.856706380758489820,	-0.856732169907504340,	-0.856757956914688480,	-0.856783741779977740,	-0.856809524503307610,	-0.856835305084613810,	-0.856861083523831610,	
+-0.856886859820896960,	-0.856912633975744910,	-0.856938405988311280,	-0.856964175858531570,	-0.856989943586341510,	-0.857015709171676470,	-0.857041472614472500,	-0.857067233914664550,	
+-0.857092993072188780,	-0.857118750086980240,	-0.857144504958974980,	-0.857170257688108280,	-0.857196008274316080,	-0.857221756717533980,	-0.857247503017697370,	-0.857273247174742070,	
+-0.857298989188603590,	-0.857324729059217530,	-0.857350466786519720,	-0.857376202370445650,	-0.857401935810931160,	-0.857427667107912070,	-0.857453396261323550,	-0.857479123271101760,	
+-0.857504848137181860,	-0.857530570859500020,	-0.857556291437991610,	-0.857582009872592480,	-0.857607726163238330,	-0.857633440309865210,	-0.857659152312408080,	-0.857684862170803420,	
+-0.857710569884986400,	-0.857736275454892840,	-0.857761978880458690,	-0.857787680161619550,	-0.857813379298311470,	-0.857839076290469630,	-0.857864771138030390,	-0.857890463840929040,	
+-0.857916154399101520,	-0.857941842812483530,	-0.857967529081010930,	-0.857993213204619630,	-0.858018895183245480,	-0.858044575016823850,	-0.858070252705290910,	-0.858095928248582270,	
+-0.858121601646633760,	-0.858147272899381200,	-0.858172942006760420,	-0.858198608968707370,	-0.858224273785158090,	-0.858249936456047970,	-0.858275596981312840,	-0.858301255360888750,	
+-0.858326911594711530,	-0.858352565682717010,	-0.858378217624841120,	-0.858403867421019820,	-0.858429515071188700,	-0.858455160575283930,	-0.858480803933241110,	-0.858506445144996300,	
+-0.858532084210485320,	-0.858557721129644120,	-0.858583355902408640,	-0.858608988528715030,	-0.858634619008498690,	-0.858660247341695990,	-0.858685873528242550,	-0.858711497568074410,	
+-0.858737119461127410,	-0.858762739207337700,	-0.858788356806641340,	-0.858813972258973930,	-0.858839585564271760,	-0.858865196722470410,	-0.858890805733506070,	-0.858916412597314660,	
+-0.858942017313832350,	-0.858967619882994860,	-0.858993220304738680,	-0.859018818578999090,	-0.859044414705712690,	-0.859070008684815090,	-0.859095600516242450,	-0.859121190199930830,	
+-0.859146777735816270,	-0.859172363123834710,	-0.859197946363922440,	-0.859223527456015160,	-0.859249106400049150,	-0.859274683195960230,	-0.859300257843684690,	-0.859325830343158350,	
+-0.859351400694317590,	-0.859376968897098470,	-0.859402534951436700,	-0.859428098857268790,	-0.859453660614530430,	-0.859479220223157920,	-0.859504777683087420,	-0.859530332994254850,	
+-0.859555886156596620,	-0.859581437170048760,	-0.859606986034547100,	-0.859632532750028270,	-0.859658077316427850,	-0.859683619733682240,	-0.859709160001727590,	-0.859734698120499960,	
+-0.859760234089935630,	-0.859785767909970970,	-0.859811299580541920,	-0.859836829101584320,	-0.859862356473034660,	-0.859887881694829210,	-0.859913404766903920,	-0.859938925689195170,	
+-0.859964444461639330,	-0.859989961084172250,	-0.860015475556730300,	-0.860040987879249540,	-0.860066498051666350,	-0.860092006073916890,	-0.860117511945937440,	-0.860143015667664160,	
+-0.860168517239033540,	-0.860194016659981520,	-0.860219513930444490,	-0.860245009050358610,	-0.860270502019660150,	-0.860295992838285510,	-0.860321481506170830,	-0.860346968023252610,	
+-0.860372452389466800,	-0.860397934604750110,	-0.860423414669038380,	-0.860448892582267980,	-0.860474368344375520,	-0.860499841955297050,	-0.860525313414968960,	-0.860550782723327860,	
+-0.860576249880309560,	-0.860601714885850800,	-0.860627177739887620,	-0.860652638442356510,	-0.860678096993193640,	-0.860703553392335730,	-0.860729007639718820,	-0.860754459735279640,	
+-0.860779909678954120,	-0.860805357470678990,	-0.860830803110390290,	-0.860856246598024620,	-0.860881687933518270,	-0.860907127116807720,	-0.860932564147829480,	-0.860957999026519700,	
+-0.860983431752815220,	-0.861008862326651860,	-0.861034290747966340,	-0.861059717016695040,	-0.861085141132774570,	-0.861110563096141090,	-0.861135982906731550,	-0.861161400564481870,	
+-0.861186816069328790,	-0.861212229421208560,	-0.861237640620057700,	-0.861263049665812690,	-0.861288456558410130,	-0.861313861297786310,	-0.861339263883878160,	-0.861364664316621840,	
+-0.861390062595953740,	-0.861415458721810360,	-0.861440852694128290,	-0.861466244512844150,	-0.861491634177894430,	-0.861517021689215850,	-0.861542407046744450,	-0.861567790250417300,	
+-0.861593171300170440,	-0.861618550195940580,	-0.861643926937664450,	-0.861669301525278430,	-0.861694673958719130,	-0.861720044237923480,	-0.861745412362827420,	-0.861770778333368010,	
+-0.861796142149481530,	-0.861821503811104670,	-0.861846863318174060,	-0.861872220670626190,	-0.861897575868398100,	-0.861922928911425860,	-0.861948279799646390,	-0.861973628532996190,	
+-0.861998975111411770,	-0.862024319534829940,	-0.862049661803187320,	-0.862075001916420610,	-0.862100339874466550,	-0.862125675677261390,	-0.862151009324742310,	-0.862176340816845470,	
+-0.862201670153507790,	-0.862226997334666010,	-0.862252322360256620,	-0.862277645230216440,	-0.862302965944482410,	-0.862328284502990710,	-0.862353600905678590,	-0.862378915152482220,	
+-0.862404227243338430,	-0.862429537178184270,	-0.862454844956956120,	-0.862480150579591150,	-0.862505454046025630,	-0.862530755356196610,	-0.862556054510040470,	-0.862581351507494270,	
+-0.862606646348494600,	-0.862631939032978410,	-0.862657229560882310,	-0.862682517932143340,	-0.862707804146697900,	-0.862733088204483240,	-0.862758370105435550,	-0.862783649849491960,	
+-0.862808927436589210,	-0.862834202866664120,	-0.862859476139653860,	-0.862884747255494580,	-0.862910016214123670,	-0.862935283015477510,	-0.862960547659493150,	-0.862985810146107420,	
+-0.863011070475257270,	-0.863036328646879290,	-0.863061584660910760,	-0.863086838517288070,	-0.863112090215948480,	-0.863137339756828490,	-0.863162587139865050,	-0.863187832364995190,	
+-0.863213075432155860,	-0.863238316341283670,	-0.863263555092316000,	-0.863288791685189240,	-0.863314026119840650,	-0.863339258396206840,	-0.863364488514224870,	-0.863389716473831670,	
+-0.863414942274964180,	-0.863440165917559570,	-0.863465387401554320,	-0.863490606726885820,	-0.863515823893490580,	-0.863541038901305740,	-0.863566251750268350,	-0.863591462440315260,	
+-0.863616670971383620,	-0.863641877343410470,	-0.863667081556332430,	-0.863692283610086880,	-0.863717483504610420,	-0.863742681239840220,	-0.863767876815713320,	-0.863793070232166780,	
+-0.863818261489137540,	-0.863843450586562870,	-0.863868637524379590,	-0.863893822302524430,	-0.863919004920934760,	-0.863944185379547540,	-0.863969363678299910,	-0.863994539817128810,	
+-0.864019713795971640,	-0.864044885614765000,	-0.864070055273446270,	-0.864095222771952280,	-0.864120388110220180,	-0.864145551288187150,	-0.864170712305790120,	-0.864195871162966480,	
+-0.864221027859653270,	-0.864246182395787320,	-0.864271334771306020,	-0.864296484986146310,	-0.864321633040245340,	-0.864346778933540280,	-0.864371922665968300,	-0.864397064237466650,	
+-0.864422203647972180,	-0.864447340897422480,	-0.864472475985754050,	-0.864497608912904610,	-0.864522739678811100,	-0.864547868283410680,	-0.864572994726640620,	-0.864598119008438300,	
+-0.864623241128740450,	-0.864648361087484660,	-0.864673478884607880,	-0.864698594520047270,	-0.864723707993740210,	-0.864748819305623970,	-0.864773928455635610,	-0.864799035443712620,	
+-0.864824140269791930,	-0.864849242933811050,	-0.864874343435706790,	-0.864899441775416670,	-0.864924537952878050,	-0.864949631968027990,	-0.864974723820804090,	-0.864999813511143190,	
+-0.865024901038983000,	-0.865049986404260340,	-0.865075069606912610,	-0.865100150646877290,	-0.865125229524091540,	-0.865150306238492760,	-0.865175380790018430,	-0.865200453178605500,	
+-0.865225523404191570,	-0.865250591466713570,	-0.865275657366109120,	-0.865300721102315600,	-0.865325782675270270,	-0.865350842084910420,	-0.865375899331173760,	-0.865400954413997230,	
+-0.865426007333318200,	-0.865451058089074080,	-0.865476106681202450,	-0.865501153109640380,	-0.865526197374325570,	-0.865551239475195410,	-0.865576279412186960,	-0.865601317185238030,	
+-0.865626352794285570,	-0.865651386239267180,	-0.865676417520120370,	-0.865701446636782500,	-0.865726473589191080,	-0.865751498377283710,	-0.865776521000997330,	-0.865801541460269770,	
+-0.865826559755038190,	-0.865851575885240310,	-0.865876589850813390,	-0.865901601651695050,	-0.865926611287822890,	-0.865951618759134070,	-0.865976624065566300,	-0.866001627207056870,	
+-0.866026628183543260,	-0.866051626994963190,	-0.866076623641253930,	-0.866101618122353200,	-0.866126610438198610,	-0.866151600588727310,	-0.866176588573877140,	-0.866201574393585360,	
+-0.866226558047789700,	-0.866251539536427530,	-0.866276518859436570,	-0.866301496016754210,	-0.866326471008318500,	-0.866351443834066260,	-0.866376414493935650,	-0.866401382987863840,	
+-0.866426349315788550,	-0.866451313477647370,	-0.866476275473377910,	-0.866501235302918000,	-0.866526192966204810,	-0.866551148463176270,	-0.866576101793769760,	-0.866601052957922890,	
+-0.866626001955573380,	-0.866650948786658940,	-0.866675893451117170,	-0.866700835948885810,	-0.866725776279902100,	-0.866750714444104230,	-0.866775650441429350,	-0.866800584271815280,	
+-0.866825515935199850,	-0.866850445431520570,	-0.866875372760715250,	-0.866900297922721610,	-0.866925220917477260,	-0.866950141744919690,	-0.866975060404986730,	-0.866999976897616100,	
+-0.867024891222745510,	-0.867049803380312790,	-0.867074713370255660,	-0.867099621192511600,	-0.867124526847018680,	-0.867149430333714280,	-0.867174331652536210,	-0.867199230803422430,	
+-0.867224127786310530,	-0.867249022601138230,	-0.867273915247843700,	-0.867298805726364090,	-0.867323694036637670,	-0.867348580178601950,	-0.867373464152194630,	-0.867398345957353660,	
+-0.867423225594016860,	-0.867448103062122280,	-0.867472978361607080,	-0.867497851492409770,	-0.867522722454467600,	-0.867547591247718520,	-0.867572457872100580,	-0.867597322327551380,	
+-0.867622184614008970,	-0.867647044731411300,	-0.867671902679695850,	-0.867696758458800790,	-0.867721612068663610,	-0.867746463509222470,	-0.867771312780415080,	-0.867796159882179400,	
+-0.867821004814453460,	-0.867845847577175090,	-0.867870688170281900,	-0.867895526593712270,	-0.867920362847403590,	-0.867945196931294020,	-0.867970028845321370,	-0.867994858589423710,	
+-0.868019686163539190,	-0.868044511567605090,	-0.868069334801560010,	-0.868094155865341440,	-0.868118974758887330,	-0.868143791482135940,	-0.868168606035024990,	-0.868193418417492540,	
+-0.868218228629476730,	-0.868243036670915180,	-0.868267842541746270,	-0.868292646241907500,	-0.868317447771337130,	-0.868342247129973100,	-0.868367044317753470,	-0.868391839334616170,	
+-0.868416632180499580,	-0.868441422855341430,	-0.868466211359079420,	-0.868490997691651940,	-0.868515781852996940,	-0.868540563843052560,	-0.868565343661756640,	-0.868590121309047670,	
+-0.868614896784863140,	-0.868639670089141670,	-0.868664441221820630,	-0.868689210182838620,	-0.868713976972133590,	-0.868738741589643590,	-0.868763504035306780,	-0.868788264309061310,	
+-0.868813022410845020,	-0.868837778340596500,	-0.868862532098253150,	-0.868887283683753560,	-0.868912033097035800,	-0.868936780338037900,	-0.868961525406698240,	-0.868986268302954560,	
+-0.869011009026745440,	-0.869035747578008610,	-0.869060483956682450,	-0.869085218162705010,	-0.869109950196014560,	-0.869134680056549150,	-0.869159407744247380,	-0.869184133259046750,	
+-0.869208856600886090,	-0.869233577769703000,	-0.869258296765436090,	-0.869283013588023290,	-0.869307728237403100,	-0.869332440713513450,	-0.869357151016293070,	-0.869381859145679450,	
+-0.869406565101611520,	-0.869431268884026890,	-0.869455970492864050,	-0.869480669928061390,	-0.869505367189556950,	-0.869530062277289350,	-0.869554755191196400,	-0.869579445931216830,	
+-0.869604134497288350,	-0.869628820889349560,	-0.869653505107338630,	-0.869678187151194050,	-0.869702867020853980,	-0.869727544716256910,	-0.869752220237340890,	-0.869776893584044420,	
+-0.869801564756305550,	-0.869826233754062650,	-0.869850900577254340,	-0.869875565225818660,	-0.869900227699694330,	-0.869924887998819170,	-0.869949546123132130,	-0.869974202072570920,	
+-0.869998855847074150,	-0.870023507446580300,	-0.870048156871027660,	-0.870072804120354700,	-0.870097449194499940,	-0.870122092093401190,	-0.870146732816997610,	-0.870171371365226930,	
+-0.870196007738027740,	-0.870220641935338660,	-0.870245273957097830,	-0.870269903803243870,	-0.870294531473715490,	-0.870319156968450410,	-0.870343780287387680,	-0.870368401430465340,	
+-0.870393020397622010,	-0.870417637188796060,	-0.870442251803925980,	-0.870466864242950610,	-0.870491474505807770,	-0.870516082592436510,	-0.870540688502774770,	-0.870565292236761380,	
+-0.870589893794334710,	-0.870614493175433380,	-0.870639090379995760,	-0.870663685407960690,	-0.870688278259266090,	-0.870712868933851030,	-0.870737457431653650,	-0.870762043752612570,	
+-0.870786627896666390,	-0.870811209863753710,	-0.870835789653812920,	-0.870860367266782840,	-0.870884942702601970,	-0.870909515961208470,	-0.870934087042541160,	-0.870958655946538650,	
+-0.870983222673139430,	-0.871007787222282230,	-0.871032349593905740,	-0.871056909787948250,	-0.871081467804348590,	-0.871106023643045120,	-0.871130577303976580,	-0.871155128787081570,	
+-0.871179678092298680,	-0.871204225219566750,	-0.871228770168824380,	-0.871253312940009850,	-0.871277853533062310,	-0.871302391947919920,	-0.871326928184521510,	-0.871351462242805800,	
+-0.871375994122711380,	-0.871400523824177210,	-0.871425051347141540,	-0.871449576691543440,	-0.871474099857321270,	-0.871498620844413760,	-0.871523139652759740,	-0.871547656282297800,	
+-0.871572170732966780,	-0.871596683004705610,	-0.871621193097452450,	-0.871645701011146470,	-0.871670206745726150,	-0.871694710301130220,	-0.871719211677297490,	-0.871743710874166800,	
+-0.871768207891676750,	-0.871792702729766500,	-0.871817195388374210,	-0.871841685867439150,	-0.871866174166899710,	-0.871890660286694820,	-0.871915144226763310,	-0.871939625987043890,	
+-0.871964105567475610,	-0.871988582967996860,	-0.872013058188546910,	-0.872037531229064020,	-0.872062002089487360,	-0.872086470769755650,	-0.872110937269807820,	-0.872135401589582580,	
+-0.872159863729019100,	-0.872184323688055760,	-0.872208781466631830,	-0.872233237064685700,	-0.872257690482156510,	-0.872282141718983110,	-0.872306590775104310,	-0.872331037650458940,	
+-0.872355482344986390,	-0.872379924858625030,	-0.872404365191313590,	-0.872428803342991330,	-0.872453239313596970,	-0.872477673103069670,	-0.872502104711348040,	-0.872526534138371450,	
+-0.872550961384078280,	-0.872575386448407820,	-0.872599809331298880,	-0.872624230032690300,	-0.872648648552521110,	-0.872673064890730380,	-0.872697479047256920,	-0.872721891022040010,	
+-0.872746300815018140,	-0.872770708426130800,	-0.872795113855316380,	-0.872819517102514260,	-0.872843918167663380,	-0.872868317050702560,	-0.872892713751571290,	-0.872917108270207960,	
+-0.872941500606552070,	-0.872965890760542210,	-0.872990278732117650,	-0.873014664521217340,	-0.873039048127780440,	-0.873063429551745980,	-0.873087808793053030,	-0.873112185851640410,	
+-0.873136560727447500,	-0.873160933420413010,	-0.873185303930476220,	-0.873209672257576060,	-0.873234038401651810,	-0.873258402362642410,	-0.873282764140487220,	-0.873307123735124980,	
+-0.873331481146495060,	-0.873355836374536290,	-0.873380189419187940,	-0.873404540280389050,	-0.873428888958078800,	-0.873453235452196550,	-0.873477579762681030,	-0.873501921889471840,	
+-0.873526261832507590,	-0.873550599591727650,	-0.873574935167071190,	-0.873599268558477360,	-0.873623599765885440,	-0.873647928789234810,	-0.873672255628463960,	-0.873696580283512820,	
+-0.873720902754320020,	-0.873745223040824910,	-0.873769541142966680,	-0.873793857060684690,	-0.873818170793917990,	-0.873842482342606200,	-0.873866791706688130,	-0.873891098886102840,	
+-0.873915403880789810,	-0.873939706690688320,	-0.873964007315737530,	-0.873988305755876720,	-0.874012602011045360,	-0.874036896081182290,	-0.874061187966227230,	-0.874085477666118880,	
+-0.874109765180796860,	-0.874134050510200540,	-0.874158333654268980,	-0.874182614612941670,	-0.874206893386157980,	-0.874231169973856860,	-0.874255444375978020,	-0.874279716592460400,	
+-0.874303986623243490,	-0.874328254468266560,	-0.874352520127469000,	-0.874376783600790410,	-0.874401044888169610,	-0.874425303989546320,	-0.874449560904859700,	-0.874473815634049130,	
+-0.874498068177054000,	-0.874522318533813680,	-0.874546566704267560,	-0.874570812688355350,	-0.874595056486015760,	-0.874619298097188860,	-0.874643537521813450,	-0.874667774759829150,	
+-0.874692009811175450,	-0.874716242675791730,	-0.874740473353617490,	-0.874764701844592100,	-0.874788928148654830,	-0.874813152265745520,	-0.874837374195803100,	-0.874861593938767170,	
+-0.874885811494577340,	-0.874910026863172870,	-0.874934240044493610,	-0.874958451038478580,	-0.874982659845067510,	-0.875006866464199670,	-0.875031070895814670,	-0.875055273139851990,	
+-0.875079473196251120,	-0.875103671064951570,	-0.875127866745893050,	-0.875152060239014600,	-0.875176251544256270,	-0.875200440661557110,	-0.875224627590856840,	-0.875248812332094950,	
+-0.875272994885211040,	-0.875297175250144720,	-0.875321353426835590,	-0.875345529415223140,	-0.875369703215246650,	-0.875393874826845830,	-0.875418044249960390,	-0.875442211484529830,	
+-0.875466376530493750,	-0.875490539387791870,	-0.875514700056363560,	-0.875538858536148660,	-0.875563014827086320,	-0.875587168929116480,	-0.875611320842178740,	-0.875635470566212710,	
+-0.875659618101158000,	-0.875683763446954420,	-0.875707906603541250,	-0.875732047570858540,	-0.875756186348845560,	-0.875780322937442010,	-0.875804457336587630,	-0.875828589546222220,	
+-0.875852719566285520,	-0.875876847396716780,	-0.875900973037456070,	-0.875925096488442860,	-0.875949217749616760,	-0.875973336820917710,	-0.875997453702285320,	-0.876021568393659190,	
+-0.876045680894979470,	-0.876069791206185330,	-0.876093899327216820,	-0.876118005258013420,	-0.876142108998515080,	-0.876166210548661390,	-0.876190309908392200,	-0.876214407077647190,	
+-0.876238502056366440,	-0.876262594844489100,	-0.876286685441955650,	-0.876310773848705150,	-0.876334860064677760,	-0.876358944089813190,	-0.876383025924051260,	-0.876407105567332030,	
+-0.876431183019594880,	-0.876455258280779860,	-0.876479331350826560,	-0.876503402229674930,	-0.876527470917264680,	-0.876551537413535860,	-0.876575601718428190,	-0.876599663831881700,	
+-0.876623723753835900,	-0.876647781484230950,	-0.876671837023006330,	-0.876695890370102090,	-0.876719941525458180,	-0.876743990489014410,	-0.876768037260710840,	-0.876792081840487070,	
+-0.876816124228283260,	-0.876840164424038890,	-0.876864202427694140,	-0.876888238239188820,	-0.876912271858462990,	-0.876936303285456350,	-0.876960332520109300,	-0.876984359562361200,	
+-0.877008384412152340,	-0.877032407069422320,	-0.877056427534111280,	-0.877080445806159180,	-0.877104461885506060,	-0.877128475772091630,	-0.877152487465856390,	-0.877176496966739610,	
+-0.877200504274681770,	-0.877224509389622490,	-0.877248512311502030,	-0.877272513040260220,	-0.877296511575837100,	-0.877320507918172950,	-0.877344502067207270,	-0.877368494022880640,	
+-0.877392483785132460,	-0.877416471353903100,	-0.877440456729132620,	-0.877464439910760950,	-0.877488420898728140,	-0.877512399692974570,	-0.877536376293439720,	-0.877560350700064220,	
+-0.877584322912787650,	-0.877608292931550180,	-0.877632260756291970,	-0.877656226386953180,	-0.877680189823473840,	-0.877704151065794140,	-0.877728110113853880,	-0.877752066967593560,	
+-0.877776021626952900,	-0.877799974091872160,	-0.877823924362291510,	-0.877847872438151100,	-0.877871818319391100,	-0.877895762005951430,	-0.877919703497772490,	-0.877943642794794200,	
+-0.877967579896956730,	-0.877991514804200230,	-0.878015447516464990,	-0.878039378033691250,	-0.878063306355819200,	-0.878087232482788640,	-0.878111156414540180,	-0.878135078151013770,	
+-0.878158997692149560,	-0.878182915037887810,	-0.878206830188168810,	-0.878230743142933030,	-0.878254653902120100,	-0.878278562465670710,	-0.878302468833524810,	-0.878326373005622660,	
+-0.878350274981904540,	-0.878374174762310830,	-0.878398072346781690,	-0.878421967735257490,	-0.878445860927678180,	-0.878469751923984470,	-0.878493640724116180,	-0.878517527328013800,	
+-0.878541411735617510,	-0.878565293946867780,	-0.878589173961704770,	-0.878613051780069100,	-0.878636927401900470,	-0.878660800827139820,	-0.878684672055726980,	-0.878708541087602430,	
+-0.878732407922706460,	-0.878756272560979550,	-0.878780135002362180,	-0.878803995246794200,	-0.878827853294216530,	-0.878851709144568890,	-0.878875562797792110,	-0.878899414253826340,	
+-0.878923263512612070,	-0.878947110574089590,	-0.878970955438199590,	-0.878994798104882010,	-0.879018638574077580,	-0.879042476845726450,	-0.879066312919769000,	-0.879090146796145830,	
+-0.879113978474797330,	-0.879137807955663870,	-0.879161635238686070,	-0.879185460323804180,	-0.879209283210958480,	-0.879233103900089460,	-0.879256922391137730,	-0.879280738684043770,	
+-0.879304552778747860,	-0.879328364675190930,	-0.879352174373312700,	-0.879375981873054320,	-0.879399787174355850,	-0.879423590277157770,	-0.879447391181400810,	-0.879471189887025330,	
+-0.879494986393971940,	-0.879518780702181260,	-0.879542572811593430,	-0.879566362722149280,	-0.879590150433789190,	-0.879613935946453540,	-0.879637719260083160,	-0.879661500374618430,	
+-0.879685279290000180,	-0.879709056006168550,	-0.879732830523064500,	-0.879756602840628180,	-0.879780372958800290,	-0.879804140877521460,	-0.879827906596732270,	-0.879851670116373330,	
+-0.879875431436385470,	-0.879899190556708840,	-0.879922947477284390,	-0.879946702198052380,	-0.879970454718953630,	-0.879994205039928650,	-0.880017953160918240,	-0.880041699081862920,	
+-0.880065442802703600,	-0.880089184323380460,	-0.880112923643834530,	-0.880136660764006100,	-0.880160395683835970,	-0.880184128403264990,	-0.880207858922233520,	-0.880231587240682730,	
+-0.880255313358552780,	-0.880279037275784710,	-0.880302758992318800,	-0.880326478508095980,	-0.880350195823057070,	-0.880373910937142570,	-0.880397623850293300,	-0.880421334562450310,	
+-0.880445043073553650,	-0.880468749383544580,	-0.880492453492363490,	-0.880516155399951210,	-0.880539855106248550,	-0.880563552611196340,	-0.880587247914735190,	-0.880610941016806150,	
+-0.880634631917349700,	-0.880658320616306440,	-0.880682007113617440,	-0.880705691409223500,	-0.880729373503065240,	-0.880753053395083580,	-0.880776731085219480,	-0.880800406573413300,	
+-0.880824079859606310,	-0.880847750943739020,	-0.880871419825752230,	-0.880895086505587010,	-0.880918750983183950,	-0.880942413258484100,	-0.880966073331428400,	-0.880989731201957340,	
+-0.881013386870012070,	-0.881037040335533210,	-0.881060691598461680,	-0.881084340658738530,	-0.881107987516304370,	-0.881131632171100580,	-0.881155274623067530,	-0.881178914872146390,	
+-0.881202552918277760,	-0.881226188761402800,	-0.881249822401462430,	-0.881273453838397390,	-0.881297083072148710,	-0.881320710102657670,	-0.881344334929864530,	-0.881367957553710780,	
+-0.881391577974136920,	-0.881415196191084100,	-0.881438812204493380,	-0.881462426014305580,	-0.881486037620461740,	-0.881509647022902910,	-0.881533254221569810,	-0.881556859216403810,	
+-0.881580462007345520,	-0.881604062594335990,	-0.881627660977316260,	-0.881651257156227500,	-0.881674851131010740,	-0.881698442901606590,	-0.881722032467956550,	-0.881745619830001330,	
+-0.881769204987681960,	-0.881792787940939630,	-0.881816368689715360,	-0.881839947233950090,	-0.881863523573585220,	-0.881887097708561220,	-0.881910669638819810,	-0.881934239364301490,	
+-0.881957806884947510,	-0.881981372200699170,	-0.882004935311497260,	-0.882028496217283080,	-0.882052054917997760,	-0.882075611413582370,	-0.882099165703977840,	-0.882122717789125210,	
+-0.882146267668965980,	-0.882169815343440970,	-0.882193360812491440,	-0.882216904076058680,	-0.882240445134083510,	-0.882263983986507410,	-0.882287520633271090,	-0.882311055074316060,	
+-0.882334587309583360,	-0.882358117339014150,	-0.882381645162549690,	-0.882405170780131360,	-0.882428694191699890,	-0.882452215397196760,	-0.882475734396563020,	-0.882499251189739930,	
+-0.882522765776668660,	-0.882546278157290480,	-0.882569788331546870,	-0.882593296299378550,	-0.882616802060727230,	-0.882640305615533640,	-0.882663806963739360,	-0.882687306105285450,	
+-0.882710803040113400,	-0.882734297768164260,	-0.882757790289379620,	-0.882781280603700310,	-0.882804768711067940,	-0.882828254611423450,	-0.882851738304708420,	-0.882875219790863920,	
+-0.882898699069831430,	-0.882922176141552220,	-0.882945651005967780,	-0.882969123663018940,	-0.882992594112647520,	-0.883016062354794460,	-0.883039528389401140,	-0.883062992216409160,	
+-0.883086453835759570,	-0.883109913247394070,	-0.883133370451253620,	-0.883156825447279910,	-0.883180278235414010,	-0.883203728815597280,	-0.883227177187771330,	-0.883250623351877430,	
+-0.883274067307856960,	-0.883297509055651520,	-0.883320948595202160,	-0.883344385926450480,	-0.883367821049337750,	-0.883391253963805470,	-0.883414684669795000,	-0.883438113167247850,	
+-0.883461539456105620,	-0.883484963536309340,	-0.883508385407800860,	-0.883531805070521200,	-0.883555222524412100,	-0.883578637769414920,	-0.883602050805471050,	-0.883625461632522090,	
+-0.883648870250509750,	-0.883672276659374980,	-0.883695680859059700,	-0.883719082849505070,	-0.883742482630652690,	-0.883765880202444070,	-0.883789275564820900,	-0.883812668717724350,	
+-0.883836059661096460,	-0.883859448394878180,	-0.883882834919011540,	-0.883906219233437480,	-0.883929601338097950,	-0.883952981232934420,	-0.883976358917888390,	-0.883999734392901690,	
+-0.884023107657915470,	-0.884046478712871790,	-0.884069847557711560,	-0.884093214192376740,	-0.884116578616808920,	-0.884139940830949600,	-0.884163300834740480,	-0.884186658628123290,	
+-0.884210014211039290,	-0.884233367583430410,	-0.884256718745237920,	-0.884280067696403550,	-0.884303414436869110,	-0.884326758966576200,	-0.884350101285466210,	-0.884373441393481290,	
+-0.884396779290562600,	-0.884420114976652070,	-0.884443448451691090,	-0.884466779715621490,	-0.884490108768384960,	-0.884513435609923130,	-0.884536760240177910,	-0.884560082659090590,	
+-0.884583402866603310,	-0.884606720862657350,	-0.884630036647194420,	-0.884653350220156560,	-0.884676661581485280,	-0.884699970731122280,	-0.884723277669009600,	-0.884746582395088630,	
+-0.884769884909301310,	-0.884793185211589010,	-0.884816483301893890,	-0.884839779180157440,	-0.884863072846321600,	-0.884886364300328300,	-0.884909653542118810,	-0.884932940571635520,	
+-0.884956225388819570,	-0.884979507993613020,	-0.885002788385957810,	-0.885026066565795520,	-0.885049342533068220,	-0.885072616287717610,	-0.885095887829685290,	-0.885119157158913540,	
+-0.885142424275343620,	-0.885165689178917690,	-0.885188951869577470,	-0.885212212347264880,	-0.885235470611921870,	-0.885258726663490260,	-0.885281980501911650,	-0.885305232127128310,	
+-0.885328481539081720,	-0.885351728737713950,	-0.885374973722966810,	-0.885398216494782230,	-0.885421457053102270,	-0.885444695397868520,	-0.885467931529023260,	-0.885491165446507860,	
+-0.885514397150264700,	-0.885537626640235390,	-0.885560853916362080,	-0.885584078978586710,	-0.885607301826851320,	-0.885630522461097410,	-0.885653740881267360,	-0.885676957087302870,	
+-0.885700171079145890,	-0.885723382856738570,	-0.885746592420022740,	-0.885769799768940440,	-0.885793004903433820,	-0.885816207823444720,	-0.885839408528914960,	-0.885862607019786590,	
+-0.885885803296001750,	-0.885908997357502390,	-0.885932189204230450,	-0.885955378836128400,	-0.885978566253137640,	-0.886001751455200550,	-0.886024934442259050,	-0.886048115214255080,	
+-0.886071293771130920,	-0.886094470112828490,	-0.886117644239289850,	-0.886140816150457370,	-0.886163985846272540,	-0.886187153326678080,	-0.886210318591615480,	-0.886233481641027110,	
+-0.886256642474854920,	-0.886279801093041280,	-0.886302957495528230,	-0.886326111682257610,	-0.886349263653171900,	-0.886372413408212930,	-0.886395560947322860,	-0.886418706270443830,	
+-0.886441849377518130,	-0.886464990268487680,	-0.886488128943295100,	-0.886511265401881960,	-0.886534399644190780,	-0.886557531670163490,	-0.886580661479742350,	-0.886603789072869520,	
+-0.886626914449487270,	-0.886650037609537640,	-0.886673158552963250,	-0.886696277279705680,	-0.886719393789707540,	-0.886742508082910890,	-0.886765620159257860,	-0.886788730018690850,	
+-0.886811837661151900,	-0.886834943086583620,	-0.886858046294927820,	-0.886881147286127100,	-0.886904246060123300,	-0.886927342616858900,	-0.886950436956276070,	-0.886973529078317170,	
+-0.886996618982924480,	-0.887019706670040490,	-0.887042792139607020,	-0.887065875391566670,	-0.887088956425861500,	-0.887112035242433980,	-0.887135111841226290,	-0.887158186222180900,	
+-0.887181258385239980,	-0.887204328330346130,	-0.887227396057441500,	-0.887250461566468140,	-0.887273524857368550,	-0.887296585930085310,	-0.887319644784560490,	-0.887342701420736570,	
+-0.887365755838556150,	-0.887388808037961050,	-0.887411858018894220,	-0.887434905781297580,	-0.887457951325113630,	-0.887480994650284740,	-0.887504035756753410,	-0.887527074644462010,	
+-0.887550111313353040,	-0.887573145763368650,	-0.887596177994451670,	-0.887619208006543920,	-0.887642235799588230,	-0.887665261373526970,	-0.887688284728302520,	-0.887711305863857490,	
+-0.887734324780134140,	-0.887757341477075080,	-0.887780355954622460,	-0.887803368212718990,	-0.887826378251307060,	-0.887849386070329260,	-0.887872391669727980,	-0.887895395049445810,	
+-0.887918396209425030,	-0.887941395149608460,	-0.887964391869938250,	-0.887987386370357010,	-0.888010378650807340,	-0.888033368711231620,	-0.888056356551572560,	-0.888079342171772870,	
+-0.888102325571774490,	-0.888125306751520570,	-0.888148285710953170,	-0.888171262450015100,	-0.888194236968648850,	-0.888217209266796930,	-0.888240179344402250,	-0.888263147201406980,	
+-0.888286112837753940,	-0.888309076253385510,	-0.888332037448244290,	-0.888354996422273110,	-0.888377953175414350,	-0.888400907707610710,	-0.888423860018805020,	-0.888446810108939440,	
+-0.888469757977957130,	-0.888492703625800130,	-0.888515647052411370,	-0.888538588257733570,	-0.888561527241709230,	-0.888584464004281150,	-0.888607398545392060,	-0.888630330864984440,	
+-0.888653260963000790,	-0.888676188839384040,	-0.888699114494076790,	-0.888722037927021760,	-0.888744959138161650,	-0.888767878127439290,	-0.888790794894797180,	-0.888813709440178120,	
+-0.888836621763524630,	-0.888859531864779620,	-0.888882439743885810,	-0.888905345400785810,	-0.888928248835422540,	-0.888951150047738840,	-0.888974049037676960,	-0.888996945805180290,	
+-0.889019840350190990,	-0.889042732672651990,	-0.889065622772506340,	-0.889088510649696520,	-0.889111396304165690,	-0.889134279735856130,	-0.889157160944711090,	-0.889180039930672960,	
+-0.889202916693684680,	-0.889225791233689170,	-0.889248663550629040,	-0.889271533644447440,	-0.889294401515087100,	-0.889317267162490600,	-0.889340130586601110,	-0.889362991787361110,	
+-0.889385850764713550,	-0.889408707518601460,	-0.889431562048967560,	-0.889454414355754790,	-0.889477264438906180,	-0.889500112298364230,	-0.889522957934072100,	-0.889545801345972500,	
+-0.889568642534008360,	-0.889591481498122500,	-0.889614318238258090,	-0.889637152754358060,	-0.889659985046364900,	-0.889682815114221980,	-0.889705642957871800,	-0.889728468577257510,	
+-0.889751291972322170,	-0.889774113143008470,	-0.889796932089259580,	-0.889819748811018440,	-0.889842563308227860,	-0.889865375580831010,	-0.889888185628770480,	-0.889910993451989540,	
+-0.889933799050431130,	-0.889956602424038180,	-0.889979403572753740,	-0.890002202496521070,	-0.890024999195282770,	-0.890047793668981790,	-0.890070585917561390,	-0.890093375940964490,	
+-0.890116163739134160,	-0.890138949312013430,	-0.890161732659545460,	-0.890184513781673070,	-0.890207292678339530,	-0.890230069349487560,	-0.890252843795060420,	-0.890275616015001160,	
+-0.890298386009252930,	-0.890321153777758670,	-0.890343919320461750,	-0.890366682637304780,	-0.890389443728231370,	-0.890412202593184100,	-0.890434959232106360,	-0.890457713644941200,	
+-0.890480465831631760,	-0.890503215792121440,	-0.890525963526352720,	-0.890548709034269410,	-0.890571452315814140,	-0.890594193370930150,	-0.890616932199560730,	-0.890639668801648910,	
+-0.890662403177138070,	-0.890685135325971270,	-0.890707865248091530,	-0.890730592943442260,	-0.890753318411966370,	-0.890776041653607130,	-0.890798762668307820,	-0.890821481456011590,	
+-0.890844198016661700,	-0.890866912350201430,	-0.890889624456573710,	-0.890912334335722140,	-0.890935041987589550,	-0.890957747412119420,	-0.890980450609254790,	-0.891003151578939170,	
+-0.891025850321115700,	-0.891048546835727540,	-0.891071241122718180,	-0.891093933182030450,	-0.891116623013607940,	-0.891139310617393930,	-0.891161995993331570,	-0.891184679141364230,	
+-0.891207360061435420,	-0.891230038753488050,	-0.891252715217465740,	-0.891275389453311420,	-0.891298061460968570,	-0.891320731240380690,	-0.891343398791490940,	-0.891366064114242910,	
+-0.891388727208579420,	-0.891411388074444420,	-0.891434046711780730,	-0.891456703120531820,	-0.891479357300641320,	-0.891502009252052360,	-0.891524658974708340,	-0.891547306468552850,	
+-0.891569951733528930,	-0.891592594769580420,	-0.891615235576650120,	-0.891637874154681760,	-0.891660510503618720,	-0.891683144623404370,	-0.891705776513982200,	-0.891728406175295810,	
+-0.891751033607288130,	-0.891773658809903110,	-0.891796281783083790,	-0.891818902526773650,	-0.891841521040916410,	-0.891864137325455220,	-0.891886751380333910,	-0.891909363205495630,	
+-0.891931972800884100,	-0.891954580166442360,	-0.891977185302114230,	-0.891999788207843090,	-0.892022388883572550,	-0.892044987329245980,	-0.892067583544807200,	-0.892090177530199260,	
+-0.892112769285365980,	-0.892135358810250630,	-0.892157946104796930,	-0.892180531168948350,	-0.892203114002648400,	-0.892225694605840670,	-0.892248272978468980,	-0.892270849120476490,	
+-0.892293423031806810,	-0.892315994712403420,	-0.892338564162210130,	-0.892361131381170460,	-0.892383696369227870,	-0.892406259126326320,	-0.892428819652408940,	-0.892451377947419690,	
+-0.892473934011301710,	-0.892496487843999040,	-0.892519039445455080,	-0.892541588815613520,	-0.892564135954417970,	-0.892586680861812250,	-0.892609223537739640,	-0.892631763982144280,	
+-0.892654302194969220,	-0.892676838176158390,	-0.892699371925655520,	-0.892721903443404190,	-0.892744432729348340,	-0.892766959783431120,	-0.892789484605596820,	-0.892812007195788460,	
+-0.892834527553950210,	-0.892857045680025550,	-0.892879561573958420,	-0.892902075235692210,	-0.892924586665171160,	-0.892947095862338340,	-0.892969602827138000,	-0.892992107559513530,	
+-0.893014610059408740,	-0.893037110326767360,	-0.893059608361533310,	-0.893082104163650190,	-0.893104597733061940,	-0.893127089069712170,	-0.893149578173544680,	-0.893172065044503190,	
+-0.893194549682531540,	-0.893217032087573410,	-0.893239512259572770,	-0.893261990198473520,	-0.893284465904219170,	-0.893306939376753760,	-0.893329410616020780,	-0.893351879621964380,	
+-0.893374346394528280,	-0.893396810933656190,	-0.893419273239292160,	-0.893441733311380220,	-0.893464191149863640,	-0.893486646754686810,	-0.893509100125793100,	-0.893531551263126780,	
+-0.893554000166631450,	-0.893576446836251260,	-0.893598891271929820,	-0.893621333473611390,	-0.893643773441239690,	-0.893666211174758310,	-0.893688646674111300,	-0.893711079939242810,	
+-0.893733510970096570,	-0.893755939766616600,	-0.893778366328746960,	-0.893800790656431140,	-0.893823212749613630,	-0.893845632608237790,	-0.893868050232248020,	-0.893890465621588030,	
+-0.893912878776201850,	-0.893935289696033530,	-0.893957698381027120,	-0.893980104831126330,	-0.894002509046275430,	-0.894024911026418120,	-0.894047310771498460,	-0.894069708281460600,	
+-0.894092103556248460,	-0.894114496595806220,	-0.894136887400077570,	-0.894159275969006790,	-0.894181662302537820,	-0.894204046400614570,	-0.894226428263181220,	-0.894248807890181800,	
+-0.894271185281560350,	-0.894293560437261160,	-0.894315933357227810,	-0.894338304041404910,	-0.894360672489736050,	-0.894383038702165400,	-0.894405402678637220,	-0.894427764419095550,	
+-0.894450123923484550,	-0.894472481191748270,	-0.894494836223830750,	-0.894517189019676250,	-0.894539539579228600,	-0.894561887902432070,	-0.894584233989230810,	-0.894606577839568980,	
+-0.894628919453390960,	-0.894651258830640340,	-0.894673595971261840,	-0.894695930875199160,	-0.894718263542396700,	-0.894740593972798480,	-0.894762922166348900,	-0.894785248122991870,	
+-0.894807571842672010,	-0.894829893325333030,	-0.894852212570919400,	-0.894874529579375190,	-0.894896844350644540,	-0.894919156884671830,	-0.894941467181401220,	-0.894963775240776970,	
+-0.894986081062743470,	-0.895008384647244750,	-0.895030685994224860,	-0.895052985103628300,	-0.895075281975399210,	-0.895097576609481970,	-0.895119869005820750,	-0.895142159164360130,	
+-0.895164447085043840,	-0.895186732767816680,	-0.895209016212622500,	-0.895231297419405660,	-0.895253576388110650,	-0.895275853118681740,	-0.895298127611063200,	-0.895320399865199510,	
+-0.895342669881034610,	-0.895364937658513220,	-0.895387203197579360,	-0.895409466498177430,	-0.895431727560251910,	-0.895453986383746960,	-0.895476242968607280,	-0.895498497314776820,	
+-0.895520749422200280,	-0.895542999290821710,	-0.895565246920585700,	-0.895587492311436420,	-0.895609735463318570,	-0.895631976376176310,	-0.895654215049954240,	-0.895676451484596510,	
+-0.895698685680047850,	-0.895720917636252280,	-0.895743147353154410,	-0.895765374830698620,	-0.895787600068829400,	-0.895809823067491240,	-0.895832043826628730,	-0.895854262346185810,	
+-0.895876478626107530,	-0.895898692666337810,	-0.895920904466821380,	-0.895943114027502710,	-0.895965321348326180,	-0.895987526429236620,	-0.896009729270178080,	-0.896031929871095370,	
+-0.896054128231932530,	-0.896076324352634510,	-0.896098518233145680,	-0.896120709873410410,	-0.896142899273373540,	-0.896165086432979540,	-0.896187271352172580,	-0.896209454030897690,	
+-0.896231634469099040,	-0.896253812666721220,	-0.896275988623708830,	-0.896298162340006590,	-0.896320333815558870,	-0.896342503050310490,	-0.896364670044205840,	-0.896386834797189390,	
+-0.896408997309205870,	-0.896431157580199760,	-0.896453315610115880,	-0.896475471398898600,	-0.896497624946492880,	-0.896519776252842850,	-0.896541925317893670,	-0.896564072141589400,	
+-0.896586216723875060,	-0.896608359064695050,	-0.896630499163994180,	-0.896652637021717050,	-0.896674772637808590,	-0.896696906012212970,	-0.896719037144875330,	-0.896741166035739830,	
+-0.896763292684751410,	-0.896785417091854780,	-0.896807539256994630,	-0.896829659180115810,	-0.896851776861162690,	-0.896873892300080190,	-0.896896005496812920,	-0.896918116451305590,	
+-0.896940225163502910,	-0.896962331633349710,	-0.896984435860790690,	-0.897006537845770780,	-0.897028637588234260,	-0.897050735088126380,	-0.897072830345391540,	-0.897094923359974540,	
+-0.897117014131820320,	-0.897139102660873490,	-0.897161188947078970,	-0.897183272990381590,	-0.897205354790725830,	-0.897227434348056960,	-0.897249511662319250,	-0.897271586733457750,	
+-0.897293659561417380,	-0.897315730146142740,	-0.897337798487579000,	-0.897359864585670630,	-0.897381928440362690,	-0.897403990051599880,	-0.897426049419327020,	-0.897448106543488940,	
+-0.897470161424030800,	-0.897492214060897080,	-0.897514264454033040,	-0.897536312603383290,	-0.897558358508892760,	-0.897580402170506280,	-0.897602443588168760,	-0.897624482761825050,	
+-0.897646519691420290,	-0.897668554376899300,	-0.897690586818206790,	-0.897712617015287930,	-0.897734644968087410,	-0.897756670676550290,	-0.897778694140621390,	-0.897800715360245860,	
+-0.897822734335368520,	-0.897844751065934530,	-0.897866765551888490,	-0.897888777793175660,	-0.897910787789740760,	-0.897932795541528830,	-0.897954801048485020,	-0.897976804310554160,	
+-0.897998805327681170,	-0.898020804099811550,	-0.898042800626889570,	-0.898064794908860820,	-0.898086786945670010,	-0.898108776737262080,	-0.898130764283582290,	-0.898152749584575580,	
+-0.898174732640187210,	-0.898196713450361780,	-0.898218692015044670,	-0.898240668334180810,	-0.898262642407715140,	-0.898284614235592920,	-0.898306583817759190,	-0.898328551154158990,	
+-0.898350516244737610,	-0.898372479089439730,	-0.898394439688210870,	-0.898416398040995710,	-0.898438354147739540,	-0.898460308008387500,	-0.898482259622884640,	-0.898504208991176220,	
+-0.898526156113207410,	-0.898548100988923240,	-0.898570043618268530,	-0.898591984001188780,	-0.898613922137629140,	-0.898635858027534650,	-0.898657791670850470,	-0.898679723067521970,	
+-0.898701652217494100,	-0.898723579120712210,	-0.898745503777121150,	-0.898767426186666380,	-0.898789346349293080,	-0.898811264264946400,	-0.898833179933571480,	-0.898855093355113930,	
+-0.898877004529518350,	-0.898898913456730450,	-0.898920820136695160,	-0.898942724569357750,	-0.898964626754663600,	-0.898986526692557740,	-0.899008424382985890,	-0.899030319825892770,	
+-0.899052213021223960,	-0.899074103968924510,	-0.899095992668939800,	-0.899117879121215100,	-0.899139763325695670,	-0.899161645282326890,	-0.899183524991054140,	-0.899205402451822340,	
+-0.899227277664577330,	-0.899249150629263800,	-0.899271021345827480,	-0.899292889814213630,	-0.899314756034367500,	-0.899336620006234600,	-0.899358481729760180,	-0.899380341204889520,	
+-0.899402198431568100,	-0.899424053409740960,	-0.899445906139353820,	-0.899467756620351830,	-0.899489604852680370,	-0.899511450836285250,	-0.899533294571111200,	-0.899555136057104130,	
+-0.899576975294208990,	-0.899598812282371480,	-0.899620647021536990,	-0.899642479511650770,	-0.899664309752658430,	-0.899686137744505450,	-0.899707963487136890,	-0.899729786980498770,	
+-0.899751608224535810,	-0.899773427219193960,	-0.899795243964418570,	-0.899817058460154920,	-0.899838870706348710,	-0.899860680702945560,	-0.899882488449890610,	-0.899904293947129340,	
+-0.899926097194607260,	-0.899947898192270060,	-0.899969696940063010,	-0.899991493437931720,	-0.900013287685821890,	-0.900035079683678680,	-0.900056869431447910,	-0.900078656929074850,	
+-0.900100442176505090,	-0.900122225173684230,	-0.900144005920557880,	-0.900165784417071400,	-0.900187560663170740,	-0.900209334658800930,	-0.900231106403908020,	-0.900252875898437170,	
+-0.900274643142334070,	-0.900296408135544350,	-0.900318170878013690,	-0.900339931369687710,	-0.900361689610511770,	-0.900383445600431820,	-0.900405199339393000,	-0.900426950827341250,	
+-0.900448700064222060,	-0.900470447049981140,	-0.900492191784564080,	-0.900513934267916820,	-0.900535674499984400,	-0.900557412480713080,	-0.900579148210048030,	-0.900600881687935060,	
+-0.900622612914320000,	-0.900644341889148330,	-0.900666068612365760,	-0.900687793083918220,	-0.900709515303751100,	-0.900731235271810320,	-0.900752952988041260,	-0.900774668452389850,	
+-0.900796381664801690,	-0.900818092625222610,	-0.900839801333598530,	-0.900861507789874730,	-0.900883211993997350,	-0.900904913945911770,	-0.900926613645563920,	-0.900948311092899520,	
+-0.900970006287864280,	-0.900991699230404120,	-0.901013389920464870,	-0.901035078357991900,	-0.901056764542931490,	-0.901078448475229000,	-0.901100130154830370,	-0.901121809581681310,	
+-0.901143486755727860,	-0.901165161676915630,	-0.901186834345190760,	-0.901208504760498740,	-0.901230172922785180,	-0.901251838831996330,	-0.901273502488077800,	-0.901295163890975640,	
+-0.901316823040635430,	-0.901338479937003450,	-0.901360134580024950,	-0.901381786969646440,	-0.901403437105813170,	-0.901425084988471400,	-0.901446730617566860,	-0.901468373993045470,	
+-0.901490015114853270,	-0.901511653982936090,	-0.901533290597239630,	-0.901554924957710170,	-0.901576557064293180,	-0.901598186916934720,	-0.901619814515580930,	-0.901641439860177530,	
+-0.901663062950670780,	-0.901684683787006060,	-0.901706302369129960,	-0.901727918696987760,	-0.901749532770525940,	-0.901771144589690210,	-0.901792754154426610,	-0.901814361464681080,	
+-0.901835966520399880,	-0.901857569321528610,	-0.901879169868013530,	-0.901900768159800360,	-0.901922364196835360,	-0.901943957979064350,	-0.901965549506433480,	-0.901987138778888700,	
+-0.902008725796376360,	-0.902030310558841970,	-0.902051893066231900,	-0.902073473318491970,	-0.902095051315568440,	-0.902116627057407250,	-0.902138200543954440,	-0.902159771775156270,	
+-0.902181340750958570,	-0.902202907471307710,	-0.902224471936149300,	-0.902246034145429810,	-0.902267594099095180,	-0.902289151797091570,	-0.902310707239365130,	-0.902332260425862120,	
+-0.902353811356528260,	-0.902375360031310030,	-0.902396906450153140,	-0.902418450613004080,	-0.902439992519808890,	-0.902461532170513720,	-0.902483069565064630,	-0.902504604703408210,	
+-0.902526137585490160,	-0.902547668211256650,	-0.902569196580653930,	-0.902590722693628170,	-0.902612246550125620,	-0.902633768150092550,	-0.902655287493475230,	-0.902676804580219370,	
+-0.902698319410271790,	-0.902719831983578190,	-0.902741342300085070,	-0.902762850359738580,	-0.902784356162484980,	-0.902805859708270430,	-0.902827360997041420,	-0.902848860028743870,	
+-0.902870356803324280,	-0.902891851320728690,	-0.902913343580903470,	-0.902934833583794780,	-0.902956321329349110,	-0.902977806817512830,	-0.902999290048231870,	-0.903020771021452840,	
+-0.903042249737121660,	-0.903063726195184820,	-0.903085200395588710,	-0.903106672338279680,	-0.903128142023203910,	-0.903149609450307870,	-0.903171074619537720,	-0.903192537530840060,	
+-0.903213998184160930,	-0.903235456579446700,	-0.903256912716643880,	-0.903278366595698820,	-0.903299818216557800,	-0.903321267579167420,	-0.903342714683473710,	-0.903364159529423390,	
+-0.903385602116962390,	-0.903407042446037530,	-0.903428480516594970,	-0.903449916328581290,	-0.903471349881942890,	-0.903492781176626010,	-0.903514210212577380,	-0.903535636989742930,	
+-0.903557061508069470,	-0.903578483767503380,	-0.903599903767991040,	-0.903621321509478940,	-0.903642736991913780,	-0.903664150215241600,	-0.903685561179409120,	-0.903706969884362610,	
+-0.903728376330048650,	-0.903749780516413860,	-0.903771182443404490,	-0.903792582110967360,	-0.903813979519048630,	-0.903835374667595230,	-0.903856767556553090,	-0.903878158185869030,	
+-0.903899546555489540,	-0.903920932665361330,	-0.903942316515430670,	-0.903963698105644480,	-0.903985077435948800,	-0.904006454506290580,	-0.904027829316616070,	-0.904049201866871990,	
+-0.904070572157004930,	-0.904091940186961480,	-0.904113305956688150,	-0.904134669466131750,	-0.904156030715238420,	-0.904177389703955230,	-0.904198746432228420,	-0.904220100900004710,	
+-0.904241453107230700,	-0.904262803053853090,	-0.904284150739818720,	-0.904305496165073720,	-0.904326839329565260,	-0.904348180233239480,	-0.904369518876043220,	-0.904390855257923070,	
+-0.904412189378825950,	-0.904433521238698250,	-0.904454850837487000,	-0.904476178175138370,	-0.904497503251599500,	-0.904518826066816770,	-0.904540146620736900,	-0.904561464913306580,	
+-0.904582780944472750,	-0.904604094714181910,	-0.904625406222380970,	-0.904646715469016430,	-0.904668022454035210,	-0.904689327177383820,	-0.904710629639009060,	-0.904731929838857640,	
+-0.904753227776876500,	-0.904774523453012570,	-0.904795816867212000,	-0.904817108019422060,	-0.904838396909589230,	-0.904859683537660440,	-0.904880967903582410,	-0.904902250007301960,	
+-0.904923529848765780,	-0.904944807427921160,	-0.904966082744714130,	-0.904987355799092170,	-0.905008626591001670,	-0.905029895120389670,	-0.905051161387202760,	-0.905072425391388100,	
+-0.905093687132892400,	-0.905114946611662470,	-0.905136203827645260,	-0.905157458780787350,	-0.905178711471035790,	-0.905199961898337510,	-0.905221210062639340,	-0.905242455963888080,	
+-0.905263699602030900,	-0.905284940977014290,	-0.905306180088785490,	-0.905327416937291020,	-0.905348651522478120,	-0.905369883844293510,	-0.905391113902684120,	-0.905412341697597100,	
+-0.905433567228979270,	-0.905454790496777460,	-0.905476011500938820,	-0.905497230241409930,	-0.905518446718137970,	-0.905539660931069970,	-0.905560872880152750,	-0.905582082565333460,	
+-0.905603289986558920,	-0.905624495143776300,	-0.905645698036932180,	-0.905666898665973940,	-0.905688097030848400,	-0.905709293131502500,	-0.905730486967883500,	-0.905751678539938430,	
+-0.905772867847614020,	-0.905794054890857630,	-0.905815239669615860,	-0.905836422183836090,	-0.905857602433465140,	-0.905878780418450270,	-0.905899956138738420,	-0.905921129594276840,	
+-0.905942300785012480,	-0.905963469710892140,	-0.905984636371863110,	-0.906005800767872520,	-0.906026962898867420,	-0.906048122764794960,	-0.906069280365602300,	-0.906090435701236370,	
+-0.906111588771644440,	-0.906132739576773430,	-0.906153888116570490,	-0.906175034390982900,	-0.906196178399957700,	-0.906217320143442030,	-0.906238459621383160,	-0.906259596833728140,	
+-0.906280731780424230,	-0.906301864461418250,	-0.906322994876657680,	-0.906344123026089580,	-0.906365248909661190,	-0.906386372527319910,	-0.906407493879012430,	-0.906428612964686460,	
+-0.906449729784288840,	-0.906470844337766810,	-0.906491956625067650,	-0.906513066646138620,	-0.906534174400926870,	-0.906555279889380010,	-0.906576383111444620,	-0.906597484067068530,	
+-0.906618582756198550,	-0.906639679178782080,	-0.906660773334766470,	-0.906681865224098880,	-0.906702954846726580,	-0.906724042202597170,	-0.906745127291657460,	-0.906766210113855050,	
+-0.906787290669136990,	-0.906808368957450760,	-0.906829444978743520,	-0.906850518732962630,	-0.906871590220055700,	-0.906892659439969550,	-0.906913726392652000,	-0.906934791078049970,	
+-0.906955853496110850,	-0.906976913646782230,	-0.906997971530011270,	-0.907019027145745340,	-0.907040080493932030,	-0.907061131574518400,	-0.907082180387452140,	-0.907103226932680200,	
+-0.907124271210150160,	-0.907145313219809510,	-0.907166352961605530,	-0.907187390435485690,	-0.907208425641397480,	-0.907229458579288270,	-0.907250489249105230,	-0.907271517650796060,	
+-0.907292543784308010,	-0.907313567649588590,	-0.907334589246585280,	-0.907355608575245550,	-0.907376625635516800,	-0.907397640427346610,	-0.907418652950682140,	-0.907439663205470980,	
+-0.907460671191660740,	-0.907481676909198790,	-0.907502680358032610,	-0.907523681538109920,	-0.907544680449377860,	-0.907565677091784260,	-0.907586671465276380,	-0.907607663569801710,	
+-0.907628653405307960,	-0.907649640971742610,	-0.907670626269053260,	-0.907691609297187170,	-0.907712590056092280,	-0.907733568545715630,	-0.907754544766005140,	-0.907775518716908310,	
+-0.907796490398372620,	-0.907817459810345780,	-0.907838426952775390,	-0.907859391825608820,	-0.907880354428793890,	-0.907901314762277980,	-0.907922272826008680,	-0.907943228619933820,	
+-0.907964182144000760,	-0.907985133398157340,	-0.908006082382351250,	-0.908027029096529770,	-0.908047973540640820,	-0.908068915714631890,	-0.908089855618450570,	-0.908110793252044580,	
+-0.908131728615361730,	-0.908152661708349630,	-0.908173592530955750,	-0.908194521083128150,	-0.908215447364813970,	-0.908236371375961140,	-0.908257293116517480,	-0.908278212586430490,	
+-0.908299129785647970,	-0.908320044714117870,	-0.908340957371787440,	-0.908361867758604840,	-0.908382775874517430,	-0.908403681719472940,	-0.908424585293419410,	-0.908445486596304310,	
+-0.908466385628075470,	-0.908487282388680930,	-0.908508176878068170,	-0.908529069096184690,	-0.908549959042978640,	-0.908570846718397610,	-0.908591732122389530,	-0.908612615254902110,	
+-0.908633496115883400,	-0.908654374705280650,	-0.908675251023042250,	-0.908696125069115460,	-0.908716996843448420,	-0.908737866345988850,	-0.908758733576684570,	-0.908779598535483510,	
+-0.908800461222333600,	-0.908821321637182430,	-0.908842179779978050,	-0.908863035650668060,	-0.908883889249200600,	-0.908904740575523280,	-0.908925589629584140,	-0.908946436411331220,	
+-0.908967280920712000,	-0.908988123157674850,	-0.909008963122167170,	-0.909029800814136980,	-0.909050636233532440,	-0.909071469380301140,	-0.909092300254391360,	-0.909113128855750910,	
+-0.909133955184327490,	-0.909154779240069270,	-0.909175601022924050,	-0.909196420532839780,	-0.909217237769764370,	-0.909238052733646000,	-0.909258865424432350,	-0.909279675842071810,	
+-0.909300483986511980,	-0.909321289857700890,	-0.909342093455586700,	-0.909362894780117110,	-0.909383693831240400,	-0.909404490608904270,	-0.909425285113057090,	-0.909446077343646580,	
+-0.909466867300621100,	-0.909487654983928140,	-0.909508440393516300,	-0.909529223529333190,	-0.909550004391327160,	-0.909570782979446050,	-0.909591559293638000,	-0.909612333333850940,	
+-0.909633105100033260,	-0.909653874592132650,	-0.909674641810097380,	-0.909695406753875500,	-0.909716169423415270,	-0.909736929818664500,	-0.909757687939571350,	-0.909778443786084080,	
+-0.909799197358150510,	-0.909819948655719140,	-0.909840697678737760,	-0.909861444427154780,	-0.909882188900918100,	-0.909902931099976000,	-0.909923671024276510,	-0.909944408673767910,	
+-0.909965144048398230,	-0.909985877148115740,	-0.910006607972868480,	-0.910027336522604810,	-0.910048062797272680,	-0.910068786796820460,	-0.910089508521196300,	-0.910110227970348350,	
+-0.910130945144224770,	-0.910151660042773920,	-0.910172372665943970,	-0.910193083013682850,	-0.910213791085939250,	-0.910234496882661000,	-0.910255200403796700,	-0.910275901649294280,	
+-0.910296600619102110,	-0.910317297313168460,	-0.910337991731441590,	-0.910358683873869650,	-0.910379373740401120,	-0.910400061330984060,	-0.910420746645566940,	-0.910441429684097800,	
+-0.910462110446525250,	-0.910482788932797330,	-0.910503465142862510,	-0.910524139076668960,	-0.910544810734165160,	-0.910565480115299140,	-0.910586147220019630,	-0.910606812048274760,	
+-0.910627474600012700,	-0.910648134875182040,	-0.910668792873730930,	-0.910689448595608080,	-0.910710102040761300,	-0.910730753209139540,	-0.910751402100690720,	-0.910772048715363550,	
+-0.910792693053106060,	-0.910813335113866970,	-0.910833974897594540,	-0.910854612404237150,	-0.910875247633743170,	-0.910895880586061190,	-0.910916511261139370,	-0.910937139658926420,	
+-0.910957765779370490,	-0.910978389622420280,	-0.910999011188024070,	-0.911019630476130220,	-0.911040247486687440,	-0.911060862219643890,	-0.911081474674948380,	-0.911102084852548950,	
+-0.911122692752394550,	-0.911143298374433200,	-0.911163901718613720,	-0.911184502784884390,	-0.911205101573194010,	-0.911225698083490630,	-0.911246292315723180,	-0.911266884269839930,	
+-0.911287473945789460,	-0.911308061343520270,	-0.911328646462981060,	-0.911349229304120100,	-0.911369809866886200,	-0.911390388151227640,	-0.911410964157093220,	-0.911431537884431320,	
+-0.911452109333190540,	-0.911472678503319590,	-0.911493245394766840,	-0.911513810007481110,	-0.911534372341410770,	-0.911554932396504540,	-0.911575490172710890,	-0.911596045669978540,	
+-0.911616598888256080,	-0.911637149827492220,	-0.911657698487635340,	-0.911678244868634360,	-0.911698788970437660,	-0.911719330792994050,	-0.911739870336252030,	-0.911760407600160530,	
+-0.911780942584667800,	-0.911801475289722770,	-0.911822005715274160,	-0.911842533861270450,	-0.911863059727660460,	-0.911883583314392680,	-0.911904104621416020,	-0.911924623648679100,	
+-0.911945140396130730,	-0.911965654863719280,	-0.911986167051393900,	-0.912006676959102980,	-0.912027184586795440,	-0.912047689934419870,	-0.912068193001925210,	-0.912088693789259830,	
+-0.912109192296372990,	-0.912129688523212970,	-0.912150182469728790,	-0.912170674135869160,	-0.912191163521582920,	-0.912211650626818640,	-0.912232135451525370,	-0.912252617995651720,	
+-0.912273098259146380,	-0.912293576241958500,	-0.912314051944036470,	-0.912334525365329550,	-0.912354996505786110,	-0.912375465365355300,	-0.912395931943985720,	-0.912416396241626520,	
+-0.912436858258226070,	-0.912457317993733640,	-0.912477775448097830,	-0.912498230621267670,	-0.912518683513191880,	-0.912539134123819370,	-0.912559582453099090,	-0.912580028500979750,	
+-0.912600472267410370,	-0.912620913752339890,	-0.912641352955717020,	-0.912661789877490910,	-0.912682224517610270,	-0.912702656876024030,	-0.912723086952681120,	-0.912743514747530570,	
+-0.912763940260521210,	-0.912784363491601860,	-0.912804784440721770,	-0.912825203107829660,	-0.912845619492874570,	-0.912866033595805430,	-0.912886445416571270,	-0.912906854955120810,	
+-0.912927262211403410,	-0.912947667185367680,	-0.912968069876962880,	-0.912988470286137940,	-0.913008868412841790,	-0.913029264257023470,	-0.913049657818632010,	-0.913070049097616350,	
+-0.913090438093925540,	-0.913110824807508830,	-0.913131209238314810,	-0.913151591386292870,	-0.913171971251391930,	-0.913192348833561150,	-0.913212724132749450,	-0.913233097148905880,	
+-0.913253467881979590,	-0.913273836331919720,	-0.913294202498675210,	-0.913314566382195210,	-0.913334927982428660,	-0.913355287299324910,	-0.913375644332832910,	-0.913395999082901920,	
+-0.913416351549480750,	-0.913436701732518790,	-0.913457049631965060,	-0.913477395247768720,	-0.913497738579878930,	-0.913518079628244720,	-0.913538418392815350,	-0.913558754873539990,	
+-0.913579089070367670,	-0.913599420983247650,	-0.913619750612129080,	-0.913640077956961010,	-0.913660403017692910,	-0.913680725794273730,	-0.913701046286652830,	-0.913721364494779140,	
+-0.913741680418602260,	-0.913761994058071010,	-0.913782305413134770,	-0.913802614483742780,	-0.913822921269844430,	-0.913843225771388550,	-0.913863527988324710,	-0.913883827920602080,	
+-0.913904125568169800,	-0.913924420930977250,	-0.913944714008973700,	-0.913965004802108290,	-0.913985293310330400,	-0.914005579533589300,	-0.914025863471834120,	-0.914046145125014480,	
+-0.914066424493079290,	-0.914086701575978160,	-0.914106976373660230,	-0.914127248886074880,	-0.914147519113171380,	-0.914167787054899090,	-0.914188052711207400,	-0.914208316082045560,	
+-0.914228577167362830,	-0.914248835967108710,	-0.914269092481232450,	-0.914289346709683650,	-0.914309598652411350,	-0.914329848309365030,	-0.914350095680494190,	-0.914370340765747970,	
+-0.914390583565075970,	-0.914410824078427440,	-0.914431062305752000,	-0.914451298246998780,	-0.914471531902117380,	-0.914491763271057080,	-0.914511992353767460,	-0.914532219150197780,	
+-0.914552443660297640,	-0.914572665884016310,	-0.914592885821303380,	-0.914613103472108220,	-0.914633318836380330,	-0.914653531914069060,	-0.914673742705124030,	-0.914693951209494700,	
+-0.914714157427130360,	-0.914734361357980700,	-0.914754563001995090,	-0.914774762359123140,	-0.914794959429314210,	-0.914815154212517910,	-0.914835346708683720,	-0.914855536917761230,	
+-0.914875724839699700,	-0.914895910474449070,	-0.914916093821958600,	-0.914936274882177880,	-0.914956453655056400,	-0.914976630140543980,	-0.914996804338589760,	-0.915016976249143690,	
+-0.915037145872155120,	-0.915057313207573770,	-0.915077478255349020,	-0.915097641015430670,	-0.915117801487768220,	-0.915137959672311150,	-0.915158115569009280,	-0.915178269177812090,	
+-0.915198420498669170,	-0.915218569531530250,	-0.915238716276345010,	-0.915258860733062840,	-0.915279002901633550,	-0.915299142782006750,	-0.915319280374132130,	-0.915339415677959290,	
+-0.915359548693437940,	-0.915379679420517570,	-0.915399807859148210,	-0.915419934009279230,	-0.915440057870860470,	-0.915460179443841390,	-0.915480298728172050,	-0.915500415723801920,	
+-0.915520530430680710,	-0.915540642848758250,	-0.915560752977984120,	-0.915580860818308140,	-0.915600966369680020,	-0.915621069632049480,	-0.915641170605366210,	-0.915661269289580030,	
+-0.915681365684640650,	-0.915701459790498000,	-0.915721551607101560,	-0.915741641134401260,	-0.915761728372346820,	-0.915781813320888150,	-0.915801895979974970,	-0.915821976349556980,	
+-0.915842054429584000,	-0.915862130220006070,	-0.915882203720772560,	-0.915902274931833740,	-0.915922343853139200,	-0.915942410484638760,	-0.915962474826282350,	-0.915982536878019670,	
+-0.916002596639800770,	-0.916022654111575240,	-0.916042709293293120,	-0.916062762184904230,	-0.916082812786358500,	-0.916102861097605640,	-0.916122907118595680,	-0.916142950849278440,	
+-0.916162992289603850,	-0.916183031439521730,	-0.916203068298982130,	-0.916223102867934740,	-0.916243135146329600,	-0.916263165134116650,	-0.916283192831245820,	-0.916303218237666920,	
+-0.916323241353330100,	-0.916343262178185180,	-0.916363280712181980,	-0.916383296955270770,	-0.916403310907401130,	-0.916423322568523320,	-0.916443331938587070,	-0.916463339017542620,	
+-0.916483343805339800,	-0.916503346301928650,	-0.916523346507258970,	-0.916543344421281160,	-0.916563340043944800,	-0.916583333375200260,	-0.916603324414997140,	-0.916623313163285940,	
+-0.916643299620016340,	-0.916663283785138620,	-0.916683265658602480,	-0.916703245240358400,	-0.916723222530356100,	-0.916743197528545720,	-0.916763170234877410,	-0.916783140649301110,	
+-0.916803108771767070,	-0.916823074602225120,	-0.916843038140625620,	-0.916862999386918290,	-0.916882958341053710,	-0.916902915002981600,	-0.916922869372652330,	-0.916942821450015710,	
+-0.916962771235022120,	-0.916982718727621600,	-0.917002663927764420,	-0.917022606835400380,	-0.917042547450479970,	-0.917062485772953020,	-0.917082421802770000,	-0.917102355539880840,	
+-0.917122286984235920,	-0.917142216135785170,	-0.917162142994478960,	-0.917182067560267320,	-0.917201989833100530,	-0.917221909812928730,	-0.917241827499702180,	-0.917261742893371150,	
+-0.917281655993885670,	-0.917301566801196120,	-0.917321475315252540,	-0.917341381536005310,	-0.917361285463404670,	-0.917381187097400800,	-0.917401086437943940,	-0.917420983484984460,	
+-0.917440878238472310,	-0.917460770698358190,	-0.917480660864592010,	-0.917500548737124280,	-0.917520434315905130,	-0.917540317600884950,	-0.917560198592013880,	-0.917580077289242290,	
+-0.917599953692520680,	-0.917619827801798960,	-0.917639699617027850,	-0.917659569138157380,	-0.917679436365138050,	-0.917699301297920100,	-0.917719163936453920,	-0.917739024280689760,	
+-0.917758882330578230,	-0.917778738086069250,	-0.917798591547113630,	-0.917818442713661420,	-0.917838291585663100,	-0.917858138163069050,	-0.917877982445829740,	-0.917897824433895340,	
+-0.917917664127216540,	-0.917937501525743490,	-0.917957336629426690,	-0.917977169438216610,	-0.917996999952063520,	-0.918016828170918010,	-0.918036654094730230,	-0.918056477723451000,	
+-0.918076299057030590,	-0.918096118095419360,	-0.918115934838567790,	-0.918135749286426490,	-0.918155561438945830,	-0.918175371296076180,	-0.918195178857768140,	-0.918214984123972180,	
+-0.918234787094638680,	-0.918254587769718360,	-0.918274386149161350,	-0.918294182232918590,	-0.918313976020940230,	-0.918333767513177080,	-0.918353556709579410,	-0.918373343610097810,	
+-0.918393128214682890,	-0.918412910523285220,	-0.918432690535855190,	-0.918452468252343390,	-0.918472243672700530,	-0.918492016796876980,	-0.918511787624823440,	-0.918531556156490400,	
+-0.918551322391828570,	-0.918571086330788320,	-0.918590847973320360,	-0.918610607319375270,	-0.918630364368903770,	-0.918650119121856230,	-0.918669871578183470,	-0.918689621737835970,	
+-0.918709369600764550,	-0.918729115166919690,	-0.918748858436251870,	-0.918768599408712030,	-0.918788338084250640,	-0.918808074462818420,	-0.918827808544366080,	-0.918847540328844190,	
+-0.918867269816203370,	-0.918886997006394420,	-0.918906721899367950,	-0.918926444495074770,	-0.918946164793465360,	-0.918965882794490650,	-0.918985598498101130,	-0.919005311904247720,	
+-0.919025023012880920,	-0.919044731823951740,	-0.919064438337410470,	-0.919084142553208360,	-0.919103844471295670,	-0.919123544091623560,	-0.919143241414142500,	-0.919162936438803310,	
+-0.919182629165556930,	-0.919202319594353830,	-0.919222007725144950,	-0.919241693557880990,	-0.919261377092512990,	-0.919281058328991320,	-0.919300737267267240,	-0.919320413907291130,	
+-0.919340088249014030,	-0.919359760292386750,	-0.919379430037360110,	-0.919399097483884710,	-0.919418762631911800,	-0.919438425481391760,	-0.919458086032275860,	-0.919477744284514560,	
+-0.919497400238059150,	-0.919517053892860090,	-0.919536705248868320,	-0.919556354306034880,	-0.919576001064310480,	-0.919595645523646250,	-0.919615287683992700,	-0.919634927545301070,	
+-0.919654565107521970,	-0.919674200370606650,	-0.919693833334505720,	-0.919713463999170200,	-0.919733092364551030,	-0.919752718430599250,	-0.919772342197265450,	-0.919791963664501000,	
+-0.919811582832256500,	-0.919831199700483100,	-0.919850814269131730,	-0.919870426538153320,	-0.919890036507498790,	-0.919909644177119180,	-0.919929249546965530,	-0.919948852616988670,	
+-0.919968453387139840,	-0.919988051857369650,	-0.920007648027629470,	-0.920027241897870110,	-0.920046833468042720,	-0.920066422738098130,	-0.920086009707987600,	-0.920105594377661930,	
+-0.920125176747072390,	-0.920144756816169810,	-0.920164334584905430,	-0.920183910053230190,	-0.920203483221095130,	-0.920223054088451400,	-0.920242622655250030,	-0.920262188921442070,	
+-0.920281752886978670,	-0.920301314551810970,	-0.920320873915889790,	-0.920340430979166620,	-0.920359985741592280,	-0.920379538203118020,	-0.920399088363694770,	-0.920418636223274020,	
+-0.920438181781806470,	-0.920457725039243610,	-0.920477265995536360,	-0.920496804650635990,	-0.920516341004493530,	-0.920535875057060360,	-0.920555406808287400,	-0.920574936258126030,	
+-0.920594463406527170,	-0.920613988253442320,	-0.920633510798822270,	-0.920653031042618640,	-0.920672548984782350,	-0.920692064625264760,	-0.920711577964016930,	-0.920731089000990210,	
+-0.920750597736135770,	-0.920770104169404750,	-0.920789608300748520,	-0.920809110130118240,	-0.920828609657465270,	-0.920848106882740660,	-0.920867601805895890,	-0.920887094426882100,	
+-0.920906584745650570,	-0.920926072762152550,	-0.920945558476339410,	-0.920965041888162190,	-0.920984522997572610,	-0.921004001804521580,	-0.921023478308960590,	-0.921042952510840780,	
+-0.921062424410113770,	-0.921081894006730570,	-0.921101361300642800,	-0.921120826291801590,	-0.921140288980158100,	-0.921159749365664140,	-0.921179207448270640,	-0.921198663227929200,	
+-0.921218116704591080,	-0.921237567878207760,	-0.921257016748730400,	-0.921276463316110570,	-0.921295907580299440,	-0.921315349541248720,	-0.921334789198909540,	-0.921354226553233400,	
+-0.921373661604171670,	-0.921393094351675820,	-0.921412524795697240,	-0.921431952936187290,	-0.921451378773097460,	-0.921470802306379340,	-0.921490223535984090,	-0.921509642461863290,	
+-0.921529059083968430,	-0.921548473402250880,	-0.921567885416662120,	-0.921587295127153650,	-0.921606702533677050,	-0.921626107636183580,	-0.921645510434624840,	-0.921664910928952310,	
+-0.921684309119117580,	-0.921703705005072040,	-0.921723098586767260,	-0.921742489864154750,	-0.921761878837185970,	-0.921781265505812520,	-0.921800649869985890,	-0.921820031929657670,	
+-0.921839411684779340,	-0.921858789135302390,	-0.921878164281178640,	-0.921897537122359450,	-0.921916907658796300,	-0.921936275890441030,	-0.921955641817244990,	-0.921975005439159780,	
+-0.921994366756137110,	-0.922013725768128570,	-0.922033082475085640,	-0.922052436876960150,	-0.922071788973703340,	-0.922091138765267270,	-0.922110486251603190,	-0.922129831432663030,	
+-0.922149174308398270,	-0.922168514878760500,	-0.922187853143701440,	-0.922207189103172900,	-0.922226522757126240,	-0.922245854105513300,	-0.922265183148285760,	-0.922284509885395230,	
+-0.922303834316793520,	-0.922323156442432010,	-0.922342476262262840,	-0.922361793776237280,	-0.922381108984307360,	-0.922400421886424680,	-0.922419732482540940,	-0.922439040772607740,	
+-0.922458346756577120,	-0.922477650434400550,	-0.922496951806029860,	-0.922516250871416750,	-0.922535547630513040,	-0.922554842083270430,	-0.922574134229640850,	-0.922593424069575780,	
+-0.922612711603027270,	-0.922631996829946900,	-0.922651279750286600,	-0.922670560363998080,	-0.922689838671033050,	-0.922709114671343640,	-0.922728388364881250,	-0.922747659751598000,	
+-0.922766928831445510,	-0.922786195604375800,	-0.922805460070340480,	-0.922824722229291570,	-0.922843982081180900,	-0.922863239625960290,	-0.922882494863581430,	-0.922901747793996470,	
+-0.922920998417157130,	-0.922940246733015220,	-0.922959492741522780,	-0.922978736442631620,	-0.922997977836293450,	-0.923017216922460530,	-0.923036453701084560,	-0.923055688172117360,	
+-0.923074920335510970,	-0.923094150191217210,	-0.923113377739188220,	-0.923132602979375720,	-0.923151825911731730,	-0.923171046536208070,	-0.923190264852756900,	-0.923209480861330030,	
+-0.923228694561879500,	-0.923247905954357240,	-0.923267115038715170,	-0.923286321814905330,	-0.923305526282879650,	-0.923324728442590170,	-0.923343928293988920,	-0.923363125837027840,	
+-0.923382321071658960,	-0.923401513997834100,	-0.923420704615505630,	-0.923439892924625470,	-0.923459078925145450,	-0.923478262617017710,	-0.923497444000194400,	-0.923516623074627450,	
+-0.923535799840268900,	-0.923554974297070900,	-0.923574146444985370,	-0.923593316283964680,	-0.923612483813960440,	-0.923631649034925230,	-0.923650811946810760,	-0.923669972549569280,	
+-0.923689130843152850,	-0.923708286827513710,	-0.923727440502603690,	-0.923746591868375160,	-0.923765740924780140,	-0.923784887671770800,	-0.923804032109299180,	-0.923823174237317520,	
+-0.923842314055777880,	-0.923861451564632510,	-0.923880586763833560,	-0.923899719653332950,	-0.923918850233083290,	-0.923937978503036270,	-0.923957104463144500,	-0.923976228113359780,	
+-0.923995349453634710,	-0.924014468483921100,	-0.924033585204171340,	-0.924052699614337670,	-0.924071811714372250,	-0.924090921504227230,	-0.924110028983854970,	-0.924129134153207630,	
+-0.924148237012237470,	-0.924167337560896640,	-0.924186435799137620,	-0.924205531726912440,	-0.924224625344173270,	-0.924243716650872790,	-0.924262805646962840,	-0.924281892332395990,	
+-0.924300976707124300,	-0.924320058771100240,	-0.924339138524275960,	-0.924358215966603950,	-0.924377291098036350,	-0.924396363918525530,	-0.924415434428023760,	-0.924434502626483410,	
+-0.924453568513856850,	-0.924472632090096340,	-0.924491693355154240,	-0.924510752308982940,	-0.924529808951534690,	-0.924548863282762090,	-0.924567915302617060,	-0.924586965011052530,	
+-0.924606012408020430,	-0.924625057493473350,	-0.924644100267363540,	-0.924663140729643510,	-0.924682178880265710,	-0.924701214719182430,	-0.924720248246346130,	-0.924739279461709080,	
+-0.924758308365223990,	-0.924777334956843000,	-0.924796359236518820,	-0.924815381204203590,	-0.924834400859850030,	-0.924853418203410380,	-0.924872433234837250,	-0.924891445954083010,	
+-0.924910456361100140,	-0.924929464455841120,	-0.924948470238258440,	-0.924967473708304680,	-0.924986474865932110,	-0.925005473711093540,	-0.925024470243741010,	-0.925043464463827570,	
+-0.925062456371305240,	-0.925081445966126960,	-0.925100433248244980,	-0.925119418217611900,	-0.925138400874180310,	-0.925157381217902700,	-0.925176359248731650,	-0.925195334966619650,	
+-0.925214308371519300,	-0.925233279463383300,	-0.925252248242164010,	-0.925271214707814150,	-0.925290178860286190,	-0.925309140699532850,	-0.925328100225506600,	-0.925347057438160260,	
+-0.925366012337446090,	-0.925384964923317010,	-0.925403915195725400,	-0.925422863154624080,	-0.925441808799965630,	-0.925460752131702540,	-0.925479693149787730,	-0.925498631854173470,	
+-0.925517568244812790,	-0.925536502321658180,	-0.925555434084662340,	-0.925574363533777870,	-0.925593290668957460,	-0.925612215490153820,	-0.925631137997319780,	-0.925650058190407690,	
+-0.925668976069370600,	-0.925687891634160990,	-0.925706804884731780,	-0.925725715821035360,	-0.925744624443024850,	-0.925763530750652760,	-0.925782434743871670,	-0.925801336422634620,	
+-0.925820235786894210,	-0.925839132836603240,	-0.925858027571714310,	-0.925876919992180470,	-0.925895810097954190,	-0.925914697888988500,	-0.925933583365236010,	-0.925952466526649640,	
+-0.925971347373181990,	-0.925990225904786080,	-0.926009102121414520,	-0.926027976023020230,	-0.926046847609556020,	-0.926065716880974720,	-0.926084583837229030,	-0.926103448478271970,	
+-0.926122310804056270,	-0.926141170814534730,	-0.926160028509660390,	-0.926178883889385850,	-0.926197736953664250,	-0.926216587702448080,	-0.926235436135690700,	-0.926254282253344500,	
+-0.926273126055362720,	-0.926291967541698070,	-0.926310806712303590,	-0.926329643567131990,	-0.926348478106136410,	-0.926367310329269440,	-0.926386140236484360,	-0.926404967827733850,	
+-0.926423793102971070,	-0.926442616062148620,	-0.926461436705219740,	-0.926480255032137160,	-0.926499071042854120,	-0.926517884737323330,	-0.926536696115497720,	-0.926555505177330430,	
+-0.926574311922774400,	-0.926593116351782650,	-0.926611918464307900,	-0.926630718260303630,	-0.926649515739722320,	-0.926668310902517440,	-0.926687103748641610,	-0.926705894278048060,	
+-0.926724682490689840,	-0.926743468386519890,	-0.926762251965491220,	-0.926781033227557010,	-0.926799812172670050,	-0.926818588800783720,	-0.926837363111850830,	-0.926856135105824650,	
+-0.926874904782658100,	-0.926893672142304230,	-0.926912437184716160,	-0.926931199909846960,	-0.926949960317649870,	-0.926968718408077820,	-0.926987474181084070,	-0.927006227636621550,	
+-0.927024978774643520,	-0.927043727595102900,	-0.927062474097953060,	-0.927081218283147050,	-0.927099960150638000,	-0.927118699700378970,	-0.927137436932323310,	-0.927156171846423960,	
+-0.927174904442634280,	-0.927193634720907210,	-0.927212362681196110,	-0.927231088323454130,	-0.927249811647634430,	-0.927268532653690250,	-0.927287251341574640,	-0.927305967711240960,	
+-0.927324681762642270,	-0.927343393495732030,	-0.927362102910463170,	-0.927380810006789180,	-0.927399514784662980,	-0.927418217244038170,	-0.927436917384867780,	-0.927455615207105070,	
+-0.927474310710703300,	-0.927493003895615730,	-0.927511694761795740,	-0.927530383309196460,	-0.927549069537771160,	-0.927567753447473330,	-0.927586435038256000,	-0.927605114310072640,	
+-0.927623791262876530,	-0.927642465896620920,	-0.927661138211259060,	-0.927679808206744450,	-0.927698475883030340,	-0.927717141240069880,	-0.927735804277816770,	-0.927754464996223940,	
+-0.927773123395245090,	-0.927791779474833380,	-0.927810433234942280,	-0.927829084675525050,	-0.927847733796535180,	-0.927866380597925810,	-0.927885025079650650,	-0.927903667241662840,	
+-0.927922307083915990,	-0.927940944606363230,	-0.927959579808958160,	-0.927978212691654150,	-0.927996843254404570,	-0.928015471497163010,	-0.928034097419882630,	-0.928052721022517010,	
+-0.928071342305019640,	-0.928089961267343890,	-0.928108577909443230,	-0.928127192231271160,	-0.928145804232781040,	-0.928164413913926570,	-0.928183021274660900,	-0.928201626314937740,	
+-0.928220229034710460,	-0.928238829433932770,	-0.928257427512557800,	-0.928276023270539370,	-0.928294616707830870,	-0.928313207824385870,	-0.928331796620157750,	-0.928350383095100320,	
+-0.928368967249166730,	-0.928387549082310800,	-0.928406128594486120,	-0.928424705785645950,	-0.928443280655744110,	-0.928461853204733960,	-0.928480423432569310,	-0.928498991339203440,	
+-0.928517556924590260,	-0.928536120188683030,	-0.928554681131435690,	-0.928573239752801480,	-0.928591796052734230,	-0.928610350031187530,	-0.928628901688114850,	-0.928647451023470020,	
+-0.928665998037206510,	-0.928684542729278030,	-0.928703085099638170,	-0.928721625148240640,	-0.928740162875039020,	-0.928758698279987030,	-0.928777231363038250,	-0.928795762124146500,	
+-0.928814290563265140,	-0.928832816680348230,	-0.928851340475349120,	-0.928869861948221850,	-0.928888381098919800,	-0.928906897927396780,	-0.928925412433606600,	-0.928943924617502860,	
+-0.928962434479039260,	-0.928980942018169610,	-0.928999447234847620,	-0.929017950129026990,	-0.929036450700661430,	-0.929054948949704860,	-0.929073444876110880,	-0.929091938479833290,	
+-0.929110429760825810,	-0.929128918719042350,	-0.929147405354436520,	-0.929165889666962120,	-0.929184371656573190,	-0.929202851323223110,	-0.929221328666866020,	-0.929239803687455620,	
+-0.929258276384945630,	-0.929276746759289950,	-0.929295214810442530,	-0.929313680538356950,	-0.929332143942987240,	-0.929350605024287120,	-0.929369063782210510,	-0.929387520216711230,	
+-0.929405974327743190,	-0.929424426115260100,	-0.929442875579216120,	-0.929461322719564830,	-0.929479767536260270,	-0.929498210029256370,	-0.929516650198506820,	-0.929535088043965670,	
+-0.929553523565586850,	-0.929571956763324270,	-0.929590387637131640,	-0.929608816186963120,	-0.929627242412772500,	-0.929645666314513950,	-0.929664087892141060,	-0.929682507145608070,	
+-0.929700924074868710,	-0.929719338679877110,	-0.929737750960587080,	-0.929756160916952790,	-0.929774568548928040,	-0.929792973856466860,	-0.929811376839523200,	-0.929829777498051180,	
+-0.929848175832004630,	-0.929866571841337810,	-0.929884965526004410,	-0.929903356885958600,	-0.929921745921154510,	-0.929940132631545960,	-0.929958517017087090,	-0.929976899077731960,	
+-0.929995278813434580,	-0.930013656224148890,	-0.930032031309829250,	-0.930050404070429380,	-0.930068774505903640,	-0.930087142616205840,	-0.930105508401290250,	-0.930123871861110780,	
+-0.930142232995621710,	-0.930160591804777060,	-0.930178948288530980,	-0.930197302446837400,	-0.930215654279650690,	-0.930234003786924890,	-0.930252350968613920,	-0.930270695824672260,	
+-0.930289038355053720,	-0.930307378559712570,	-0.930325716438602960,	-0.930344051991679240,	-0.930362385218895140,	-0.930380716120205340,	-0.930399044695563560,	-0.930417370944924270,	
+-0.930435694868241400,	-0.930454016465469440,	-0.930472335736562410,	-0.930490652681474570,	-0.930508967300159970,	-0.930527279592573090,	-0.930545589558667950,	-0.930563897198398830,	
+-0.930582202511719970,	-0.930600505498585640,	-0.930618806158950100,	-0.930637104492767490,	-0.930655400499992070,	-0.930673694180578100,	-0.930691985534480070,	-0.930710274561651900,	
+-0.930728561262048170,	-0.930746845635622930,	-0.930765127682330770,	-0.930783407402125620,	-0.930801684794961950,	-0.930819959860794130,	-0.930838232599576430,	-0.930856503011263100,	
+-0.930874771095808520,	-0.930893036853166930,	-0.930911300283292940,	-0.930929561386140580,	-0.930947820161664330,	-0.930966076609818450,	-0.930984330730557530,	-0.931002582523835720,	
+-0.931020831989607500,	-0.931039079127827130,	-0.931057323938449090,	-0.931075566421427750,	-0.931093806576717480,	-0.931112044404272640,	-0.931130279904047730,	-0.931148513075997220,	
+-0.931166743920075260,	-0.931184972436236550,	-0.931203198624435350,	-0.931221422484626250,	-0.931239644016763510,	-0.931257863220801730,	-0.931276080096695160,	-0.931294294644398500,	
+-0.931312506863866020,	-0.931330716755052410,	-0.931348924317911940,	-0.931367129552399090,	-0.931385332458468550,	-0.931403533036074590,	-0.931421731285171810,	-0.931439927205714670,	
+-0.931458120797657770,	-0.931476312060955490,	-0.931494500995562520,	-0.931512687601433240,	-0.931530871878522350,	-0.931549053826784100,	-0.931567233446173320,	-0.931585410736644470,	
+-0.931603585698152050,	-0.931621758330650640,	-0.931639928634094950,	-0.931658096608439350,	-0.931676262253638530,	-0.931694425569646990,	-0.931712586556419530,	-0.931730745213910530,	
+-0.931748901542074680,	-0.931767055540866580,	-0.931785207210240830,	-0.931803356550152010,	-0.931821503560554820,	-0.931839648241403970,	-0.931857790592653830,	-0.931875930614259330,	
+-0.931894068306174940,	-0.931912203668355480,	-0.931930336700755420,	-0.931948467403329590,	-0.931966595776032580,	-0.931984721818819080,	-0.932002845531643700,	-0.932020966914461240,	
+-0.932039085967226400,	-0.932057202689893890,	-0.932075317082418310,	-0.932093429144754350,	-0.932111538876856940,	-0.932129646278680670,	-0.932147751350180240,	-0.932165854091310480,	
+-0.932183954502026070,	-0.932202052582281730,	-0.932220148332032370,	-0.932238241751232490,	-0.932256332839837110,	-0.932274421597800830,	-0.932292508025078570,	-0.932310592121624930,	
+-0.932328673887394930,	-0.932346753322343180,	-0.932364830426424600,	-0.932382905199593880,	-0.932400977641805960,	-0.932419047753015540,	-0.932437115533177540,	-0.932455180982246780,	
+-0.932473244100178070,	-0.932491304886926220,	-0.932509363342446050,	-0.932527419466692600,	-0.932545473259620450,	-0.932563524721184640,	-0.932581573851340110,	-0.932599620650041650,	
+-0.932617665117243980,	-0.932635707252902350,	-0.932653747056971350,	-0.932671784529406020,	-0.932689819670161180,	-0.932707852479191860,	-0.932725882956452760,	-0.932743911101899140,	
+-0.932761936915485590,	-0.932779960397167260,	-0.932797981546899080,	-0.932816000364635860,	-0.932834016850332740,	-0.932852031003944540,	-0.932870042825426180,	-0.932888052314732820,	
+-0.932906059471819260,	-0.932924064296640540,	-0.932942066789151810,	-0.932960066949307780,	-0.932978064777063580,	-0.932996060272374250,	-0.933014053435194720,	-0.933032044265480140,	
+-0.933050032763185430,	-0.933068018928265520,	-0.933086002760675770,	-0.933103984260370890,	-0.933121963427306020,	-0.933139940261436320,	-0.933157914762716700,	-0.933175886931102430,	
+-0.933193856766548310,	-0.933211824269009620,	-0.933229789438441260,	-0.933247752274798500,	-0.933265712778036380,	-0.933283670948109930,	-0.933301626784974300,	-0.933319580288584750,	
+-0.933337531458896090,	-0.933355480295863680,	-0.933373426799442460,	-0.933391370969587800,	-0.933409312806254610,	-0.933427252309398270,	-0.933445189478973700,	-0.933463124314936170,	
+-0.933481056817240810,	-0.933498986985842880,	-0.933516914820697430,	-0.933534840321759710,	-0.933552763488984860,	-0.933570684322328150,	-0.933588602821744720,	-0.933606518987189720,	
+-0.933624432818618510,	-0.933642344315986140,	-0.933660253479247970,	-0.933678160308359150,	-0.933696064803274940,	-0.933713966963950480,	-0.933731866790341260,	-0.933749764282402190,	
+-0.933767659440088880,	-0.933785552263356360,	-0.933803442752159980,	-0.933821330906454920,	-0.933839216726196630,	-0.933857100211340160,	-0.933874981361841110,	-0.933892860177654490,	
+-0.933910736658735700,	-0.933928610805040190,	-0.933946482616523020,	-0.933964352093139770,	-0.933982219234845590,	-0.934000084041595850,	-0.934017946513345910,	-0.934035806650051040,	
+-0.934053664451666710,	-0.934071519918148300,	-0.934089373049450940,	-0.934107223845530240,	-0.934125072306341450,	-0.934142918431840050,	-0.934160762221981190,	-0.934178603676720560,	
+-0.934196442796013330,	-0.934214279579815180,	-0.934232114028081150,	-0.934249946140766950,	-0.934267775917827840,	-0.934285603359219170,	-0.934303428464896670,	-0.934321251234815460,	
+-0.934339071668931260,	-0.934356889767199330,	-0.934374705529575130,	-0.934392518956014160,	-0.934410330046472000,	-0.934428138800903920,	-0.934445945219265490,	-0.934463749301512210,	
+-0.934481551047599560,	-0.934499350457483000,	-0.934517147531118250,	-0.934534942268460340,	-0.934552734669465310,	-0.934570524734088300,	-0.934588312462285130,	-0.934606097854011050,	
+-0.934623880909221770,	-0.934641661627872770,	-0.934659440009919630,	-0.934677216055317950,	-0.934694989764023100,	-0.934712761135990890,	-0.934730530171176690,	-0.934748296869536200,	
+-0.934766061231025010,	-0.934783823255598610,	-0.934801582943212690,	-0.934819340293822850,	-0.934837095307384570,	-0.934854847983853540,	-0.934872598323185480,	-0.934890346325335850,	
+-0.934908091990260370,	-0.934925835317914730,	-0.934943576308254420,	-0.934961314961235250,	-0.934979051276812800,	-0.934996785254942560,	-0.935014516895580570,	-0.935032246198682080,	
+-0.935049973164203130,	-0.935067697792099200,	-0.935085420082325980,	-0.935103140034839300,	-0.935120857649594740,	-0.935138572926548010,	-0.935156285865654800,	-0.935173996466870940,	
+-0.935191704730152120,	-0.935209410655453930,	-0.935227114242732300,	-0.935244815491942830,	-0.935262514403041420,	-0.935280210975983680,	-0.935297905210725420,	-0.935315597107222340,	
+-0.935333286665430360,	-0.935350973885305080,	-0.935368658766802420,	-0.935386341309878080,	-0.935404021514487870,	-0.935421699380587610,	-0.935439374908133110,	-0.935457048097080190,	
+-0.935474718947384650,	-0.935492387459002320,	-0.935510053631888990,	-0.935527717466000610,	-0.935545378961292860,	-0.935563038117721680,	-0.935580694935242870,	-0.935598349413812370,	
+-0.935616001553385980,	-0.935633651353919630,	-0.935651298815369010,	-0.935668943937690290,	-0.935686586720839260,	-0.935704227164771640,	-0.935721865269443450,	-0.935739501034810630,	
+-0.935757134460829090,	-0.935774765547454650,	-0.935792394294643340,	-0.935810020702350980,	-0.935827644770533710,	-0.935845266499147230,	-0.935862885888147590,	-0.935880502937490700,	
+-0.935898117647132600,	-0.935915730017029210,	-0.935933340047136460,	-0.935950947737410390,	-0.935968553087807020,	-0.935986156098282060,	-0.936003756768791880,	-0.936021355099292300,	
+-0.936038951089739340,	-0.936056544740089040,	-0.936074136050297210,	-0.936091725020320230,	-0.936109311650113800,	-0.936126895939634160,	-0.936144477888837260,	-0.936162057497679110,	
+-0.936179634766115880,	-0.936197209694103580,	-0.936214782281598160,	-0.936232352528555970,	-0.936249920434932710,	-0.936267486000684770,	-0.936285049225768050,	-0.936302610110138710,	
+-0.936320168653752780,	-0.936337724856566630,	-0.936355278718535970,	-0.936372830239617260,	-0.936390379419766440,	-0.936407926258939540,	-0.936425470757093040,	-0.936443012914182640,	
+-0.936460552730164820,	-0.936478090204995620,	-0.936495625338631290,	-0.936513158131027760,	-0.936530688582141390,	-0.936548216691928230,	-0.936565742460344630,	-0.936583265887346530,	
+-0.936600786972890400,	-0.936618305716932280,	-0.936635822119428420,	-0.936653336180334860,	-0.936670847899608080,	-0.936688357277204120,	-0.936705864313079340,	-0.936723369007189890,	
+-0.936740871359492020,	-0.936758371369942000,	-0.936775869038495970,	-0.936793364365110290,	-0.936810857349741230,	-0.936828347992345050,	-0.936845836292877880,	-0.936863322251296200,	
+-0.936880805867556180,	-0.936898287141614270,	-0.936915766073426530,	-0.936933242662949420,	-0.936950716910139090,	-0.936968188814952140,	-0.936985658377344600,	-0.937003125597272950,	
+-0.937020590474693440,	-0.937038053009562550,	-0.937055513201836440,	-0.937072971051471690,	-0.937090426558424450,	-0.937107879722651080,	-0.937125330544108070,	-0.937142779022751670,	
+-0.937160225158538360,	-0.937177668951424400,	-0.937195110401366380,	-0.937212549508320560,	-0.937229986272243410,	-0.937247420693091190,	-0.937264852770820500,	-0.937282282505387590,	
+-0.937299709896749160,	-0.937317134944861240,	-0.937334557649680660,	-0.937351978011163540,	-0.937369396029266610,	-0.937386811703946000,	-0.937404225035158520,	-0.937421636022860440,	
+-0.937439044667008230,	-0.937456450967558470,	-0.937473854924467550,	-0.937491256537692050,	-0.937508655807188340,	-0.937526052732913010,	-0.937543447314822530,	-0.937560839552873500,	
+-0.937578229447022290,	-0.937595616997225600,	-0.937613002203439790,	-0.937630385065621460,	-0.937647765583727200,	-0.937665143757713590,	-0.937682519587537010,	-0.937699893073154270,	
+-0.937717264214521620,	-0.937734633011595990,	-0.937751999464333630,	-0.937769363572691360,	-0.937786725336625550,	-0.937804084756093110,	-0.937821441831050430,	-0.937838796561454080,	
+-0.937856148947260770,	-0.937873498988426980,	-0.937890846684909630,	-0.937908192036664980,	-0.937925535043649950,	-0.937942875705821020,	-0.937960214023135010,	-0.937977549995548390,	
+-0.937994883623017970,	-0.938012214905500240,	-0.938029543842952010,	-0.938046870435329970,	-0.938064194682590720,	-0.938081516584690860,	-0.938098836141587400,	-0.938116153353236730,	
+-0.938133468219595760,	-0.938150780740621080,	-0.938168090916269510,	-0.938185398746497650,	-0.938202704231262290,	-0.938220007370520140,	-0.938237308164228010,	-0.938254606612342610,	
+-0.938271902714820750,	-0.938289196471619010,	-0.938306487882694330,	-0.938323776948003510,	-0.938341063667503140,	-0.938358348041150260,	-0.938375630068901350,	-0.938392909750713430,	
+-0.938410187086543220,	-0.938427462076347530,	-0.938444734720083160,	-0.938462005017707050,	-0.938479272969175880,	-0.938496538574446590,	-0.938513801833475880,	-0.938531062746220670,	
+-0.938548321312637770,	-0.938565577532684100,	-0.938582831406316600,	-0.938600082933491840,	-0.938617332114166980,	-0.938634578948298710,	-0.938651823435844080,	-0.938669065576759780,	
+-0.938686305371002950,	-0.938703542818530300,	-0.938720777919298750,	-0.938738010673265340,	-0.938755241080386880,	-0.938772469140620290,	-0.938789694853922500,	-0.938806918220250530,	
+-0.938824139239561210,	-0.938841357911811670,	-0.938858574236958620,	-0.938875788214959210,	-0.938892999845770240,	-0.938910209129348750,	-0.938927416065651780,	-0.938944620654636350,	
+-0.938961822896259290,	-0.938979022790477740,	-0.938996220337248500,	-0.939013415536528840,	-0.939030608388275570,	-0.939047798892445830,	-0.939064987048996550,	-0.939082172857884870,	
+-0.939099356319067600,	-0.939116537432502120,	-0.939133716198145120,	-0.939150892615953970,	-0.939168066685885590,	-0.939185238407897030,	-0.939202407781945410,	-0.939219574807987680,	
+-0.939236739485981080,	-0.939253901815882530,	-0.939271061797649300,	-0.939288219431238410,	-0.939305374716607020,	-0.939322527653712050,	-0.939339678242510970,	-0.939356826482960480,	
+-0.939373972375018070,	-0.939391115918640660,	-0.939408257113785510,	-0.939425395960409640,	-0.939442532458470430,	-0.939459666607924680,	-0.939476798408729890,	-0.939493927860843070,	
+-0.939511054964221490,	-0.939528179718822300,	-0.939545302124602520,	-0.939562422181519640,	-0.939579539889530580,	-0.939596655248592820,	-0.939613768258663270,	-0.939630878919699320,	
+-0.939647987231658210,	-0.939665093194497090,	-0.939682196808173330,	-0.939699298072643960,	-0.939716396987866460,	-0.939733493553797870,	-0.939750587770395550,	-0.939767679637616870,	
+-0.939784769155418860,	-0.939801856323759120,	-0.939818941142594570,	-0.939836023611882680,	-0.939853103731580710,	-0.939870181501646140,	-0.939887256922036010,	-0.939904329992707680,	
+-0.939921400713618630,	-0.939938469084726000,	-0.939955535105987280,	-0.939972598777359610,	-0.939989660098800580,	-0.940006719070267230,	-0.940023775691717240,	-0.940040829963107670,	
+-0.940057881884396210,	-0.940074931455539890,	-0.940091978676496300,	-0.940109023547222700,	-0.940126066067676680,	-0.940143106237815380,	-0.940160144057596400,	-0.940177179526976880,	
+-0.940194212645914630,	-0.940211243414366680,	-0.940228271832290740,	-0.940245297899644170,	-0.940262321616384230,	-0.940279342982468510,	-0.940296361997854380,	-0.940313378662499530,	
+-0.940330392976361010,	-0.940347404939396720,	-0.940364414551563720,	-0.940381421812819810,	-0.940398426723122350,	-0.940415429282428830,	-0.940432429490696610,	-0.940449427347883390,	
+-0.940466422853946660,	-0.940483416008843780,	-0.940500406812532440,	-0.940517395264970020,	-0.940534381366114110,	-0.940551365115922300,	-0.940568346514352170,	-0.940585325561360990,	
+-0.940602302256906550,	-0.940619276600946350,	-0.940636248593438080,	-0.940653218234339010,	-0.940670185523607040,	-0.940687150461199440,	-0.940704113047074130,	-0.940721073281188480,	
+-0.940738031163500190,	-0.940754986693966730,	-0.940771939872545810,	-0.940788890699195020,	-0.940805839173872170,	-0.940822785296534510,	-0.940839729067140080,	-0.940856670485646250,	
+-0.940873609552010710,	-0.940890546266191170,	-0.940907480628145330,	-0.940924412637830660,	-0.940941342295204990,	-0.940958269600226100,	-0.940975194552851390,	-0.940992117153038770,	
+-0.941009037400745820,	-0.941025955295930250,	-0.941042870838549870,	-0.941059784028562270,	-0.941076694865925160,	-0.941093603350596440,	-0.941110509482533500,	-0.941127413261694470,	
+-0.941144314688036830,	-0.941161213761518510,	-0.941178110482096990,	-0.941195004849730400,	-0.941211896864376120,	-0.941228786525992180,	-0.941245673834536280,	-0.941262558789966120,	
+-0.941279441392239620,	-0.941296321641314490,	-0.941313199537148650,	-0.941330075079699680,	-0.941346948268925620,	-0.941363819104784170,	-0.941380687587233140,	-0.941397553716230350,	
+-0.941414417491733820,	-0.941431278913701040,	-0.941448137982090260,	-0.941464994696859070,	-0.941481849057965390,	-0.941498701065367040,	-0.941515550719022040,	-0.941532398018887990,	
+-0.941549242964923150,	-0.941566085557085100,	-0.941582925795331870,	-0.941599763679621280,	-0.941616599209911250,	-0.941633432386159820,	-0.941650263208324790,	-0.941667091676364090,	
+-0.941683917790235640,	-0.941700741549897360,	-0.941717562955307290,	-0.941734382006423340,	-0.941751198703203340,	-0.941768013045605420,	-0.941784825033587400,	-0.941801634667107420,	
+-0.941818441946123190,	-0.941835246870593060,	-0.941852049440474630,	-0.941868849655726150,	-0.941885647516305550,	-0.941902443022170850,	-0.941919236173280110,	-0.941936026969591110,	
+-0.941952815411062240,	-0.941969601497651190,	-0.941986385229316210,	-0.942003166606015130,	-0.942019945627706300,	-0.942036722294347540,	-0.942053496605896990,	-0.942070268562312570,	
+-0.942087038163552660,	-0.942103805409575060,	-0.942120570300338020,	-0.942137332835799480,	-0.942154093015917680,	-0.942170850840650550,	-0.942187606309956350,	-0.942204359423793100,	
+-0.942221110182119070,	-0.942237858584892170,	-0.942254604632070670,	-0.942271348323612590,	-0.942288089659476190,	-0.942304828639619510,	-0.942321565264000790,	-0.942338299532578190,	
+-0.942355031445309850,	-0.942371761002153920,	-0.942388488203068530,	-0.942405213048011950,	-0.942421935536942310,	-0.942438655669817880,	-0.942455373446596800,	-0.942472088867237320,	
+-0.942488801931697600,	-0.942505512639935870,	-0.942522220991910300,	-0.942538926987579240,	-0.942555630626900840,	-0.942572331909833360,	-0.942589030836335050,	-0.942605727406364170,	
+-0.942622421619879080,	-0.942639113476837820,	-0.942655802977198750,	-0.942672490120920250,	-0.942689174907960450,	-0.942705857338277720,	-0.942722537411830430,	-0.942739215128576720,	
+-0.942755890488475080,	-0.942772563491483530,	-0.942789234137560770,	-0.942805902426664730,	-0.942822568358754110,	-0.942839231933786940,	-0.942855893151721800,	-0.942872552012516850,	
+-0.942889208516130560,	-0.942905862662521190,	-0.942922514451647210,	-0.942939163883466990,	-0.942955810957938790,	-0.942972455675021080,	-0.942989098034672240,	-0.943005738036850730,	
+-0.943022375681514700,	-0.943039010968622860,	-0.943055643898133460,	-0.943072274470004970,	-0.943088902684195760,	-0.943105528540664320,	-0.943122152039369000,	-0.943138773180268400,	
+-0.943155391963320770,	-0.943172008388484810,	-0.943188622455718660,	-0.943205234164981030,	-0.943221843516230280,	-0.943238450509425010,	-0.943255055144523460,	-0.943271657421484440,	
+-0.943288257340266220,	-0.943304854900827270,	-0.943321450103126290,	-0.943338042947121650,	-0.943354633432771930,	-0.943371221560035610,	-0.943387807328871290,	-0.943404390739237320,	
+-0.943420971791092410,	-0.943437550484395150,	-0.943454126819103900,	-0.943470700795177360,	-0.943487272412574240,	-0.943503841671252670,	-0.943520408571171700,	-0.943536973112289680,	
+-0.943553535294565200,	-0.943570095117956860,	-0.943586652582423250,	-0.943603207687923160,	-0.943619760434414870,	-0.943636310821857280,	-0.943652858850208890,	-0.943669404519428380,	
+-0.943685947829474240,	-0.943702488780305380,	-0.943719027371880180,	-0.943735563604157560,	-0.943752097477095870,	-0.943768628990654060,	-0.943785158144790580,	-0.943801684939464370,	
+-0.943818209374633790,	-0.943834731450257760,	-0.943851251166294760,	-0.943867768522703820,	-0.943884283519443310,	-0.943900796156472270,	-0.943917306433749050,	-0.943933814351232690,	
+-0.943950319908881790,	-0.943966823106655030,	-0.943983323944511230,	-0.943999822422409100,	-0.944016318540307540,	-0.944032812298165050,	-0.944049303695940530,	-0.944065792733592810,	
+-0.944082279411080580,	-0.944098763728362660,	-0.944115245685397840,	-0.944131725282144840,	-0.944148202518562680,	-0.944164677394609850,	-0.944181149910245380,	-0.944197620065428070,	
+-0.944214087860116740,	-0.944230553294270080,	-0.944247016367847140,	-0.944263477080806600,	-0.944279935433107400,	-0.944296391424708340,	-0.944312845055568340,	-0.944329296325646220,	
+-0.944345745234900780,	-0.944362191783291060,	-0.944378635970775760,	-0.944395077797314020,	-0.944411517262864430,	-0.944427954367386250,	-0.944444389110837950,	-0.944460821493178890,	
+-0.944477251514367570,	-0.944493679174363330,	-0.944510104473124780,	-0.944526527410610940,	-0.944542947986780850,	-0.944559366201593310,	-0.944575782055007470,	-0.944592195546982150,	
+-0.944608606677476260,	-0.944625015446448950,	-0.944641421853859020,	-0.944657825899665520,	-0.944674227583827570,	-0.944690626906303900,	-0.944707023867053850,	-0.944723418466036140,	
+-0.944739810703209890,	-0.944756200578534040,	-0.944772588091967850,	-0.944788973243470000,	-0.944805356032999870,	-0.944821736460516260,	-0.944838114525978320,	-0.944854490229345090,	
+-0.944870863570575700,	-0.944887234549629080,	-0.944903603166464490,	-0.944919969421040730,	-0.944936333313317170,	-0.944952694843252840,	-0.944969054010806550,	-0.944985410815937790,	
+-0.945001765258605460,	-0.945018117338768730,	-0.945034467056386610,	-0.945050814411418470,	-0.945067159403823240,	-0.945083502033560060,	-0.945099842300588190,	-0.945116180204866650,	
+-0.945132515746354710,	-0.945148848925011500,	-0.945165179740796170,	-0.945181508193667860,	-0.945197834283585720,	-0.945214158010509120,	-0.945230479374396970,	-0.945246798375208750,	
+-0.945263115012903610,	-0.945279429287440460,	-0.945295741198778900,	-0.945312050746877960,	-0.945328357931696890,	-0.945344662753194840,	-0.945360965211331280,	-0.945377265306065140,	
+-0.945393563037356000,	-0.945409858405162780,	-0.945426151409445080,	-0.945442442050161920,	-0.945458730327272680,	-0.945475016240736600,	-0.945491299790512940,	-0.945507580976561070,	
+-0.945523859798840350,	-0.945540136257309820,	-0.945556410351929060,	-0.945572682082657100,	-0.945588951449453650,	-0.945605218452277740,	-0.945621483091088730,	-0.945637745365846110,	
+-0.945654005276509110,	-0.945670262823037120,	-0.945686518005389280,	-0.945702770823525380,	-0.945719021277404370,	-0.945735269366985930,	-0.945751515092229320,	-0.945767758453093910,	
+-0.945783999449539060,	-0.945800238081524250,	-0.945816474349008730,	-0.945832708251952200,	-0.945848939790313810,	-0.945865168964053040,	-0.945881395773129350,	-0.945897620217502340,	
+-0.945913842297131160,	-0.945930062011975270,	-0.945946279361994380,	-0.945962494347147740,	-0.945978706967394830,	-0.945994917222695240,	-0.946011125113008330,	-0.946027330638293470,	
+-0.946043533798510470,	-0.946059734593618470,	-0.946075933023577290,	-0.946092129088346170,	-0.946108322787884810,	-0.946124514122152590,	-0.946140703091109090,	-0.946156889694713790,	
+-0.946173073932926380,	-0.946189255805706120,	-0.946205435313012930,	-0.946221612454805960,	-0.946237787231045120,	-0.946253959641689790,	-0.946270129686699430,	-0.946286297366033870,	
+-0.946302462679652460,	-0.946318625627515010,	-0.946334786209580890,	-0.946350944425809910,	-0.946367100276161440,	-0.946383253760595400,	-0.946399404879071040,	-0.946415553631548280,	
+-0.946431700017986600,	-0.946447844038345700,	-0.946463985692585160,	-0.946480124980664690,	-0.946496261902543770,	-0.946512396458182410,	-0.946528528647539890,	-0.946544658470576120,	
+-0.946560785927250680,	-0.946576911017523280,	-0.946593033741353730,	-0.946609154098701390,	-0.946625272089526290,	-0.946641387713788030,	-0.946657500971446190,	-0.946673611862460680,	
+-0.946689720386791110,	-0.946705826544397280,	-0.946721930335238880,	-0.946738031759275510,	-0.946754130816467310,	-0.946770227506773530,	-0.946786321830154430,	-0.946802413786569260,	
+-0.946818503375978280,	-0.946834590598340960,	-0.946850675453617120,	-0.946866757941766670,	-0.946882838062749310,	-0.946898915816524860,	-0.946914991203053000,	-0.946931064222293890,	
+-0.946947134874206900,	-0.946963203158752150,	-0.946979269075889360,	-0.946995332625578560,	-0.947011393807779210,	-0.947027452622451580,	-0.947043509069555140,	-0.947059563149050040,	
+-0.947075614860895980,	-0.947091664205052860,	-0.947107711181480630,	-0.947123755790139190,	-0.947139798030988240,	-0.947155837903987830,	-0.947171875409097860,	-0.947187910546278160,	
+-0.947203943315488630,	-0.947219973716689420,	-0.947236001749840130,	-0.947252027414900890,	-0.947268050711831620,	-0.947284071640592140,	-0.947300090201142480,	-0.947316106393442660,	
+-0.947332120217452500,	-0.947348131673132030,	-0.947364140760441400,	-0.947380147479340180,	-0.947396151829788760,	-0.947412153811746930,	-0.947428153425174720,	-0.947444150670032070,	
+-0.947460145546279110,	-0.947476138053875760,	-0.947492128192782060,	-0.947508115962958030,	-0.947524101364363710,	-0.947540084396959250,	-0.947556065060704440,	-0.947572043355559450,	
+-0.947588019281484390,	-0.947603992838439320,	-0.947619964026384260,	-0.947635932845279360,	-0.947651899295084420,	-0.947667863375759920,	-0.947683825087265670,	-0.947699784429561930,	
+-0.947715741402608720,	-0.947731696006366090,	-0.947747648240794270,	-0.947763598105853310,	-0.947779545601503350,	-0.947795490727704530,	-0.947811433484416990,	-0.947827373871600880,	
+-0.947843311889216330,	-0.947859247537223500,	-0.947875180815582640,	-0.947891111724253670,	-0.947907040263197050,	-0.947922966432372730,	-0.947938890231741050,	-0.947954811661262050,	
+-0.947970730720896100,	-0.947986647410603340,	-0.948002561730344030,	-0.948018473680078190,	-0.948034383259766190,	-0.948050290469368170,	-0.948066195308844620,	-0.948082097778155440,	
+-0.948097997877261010,	-0.948113895606121580,	-0.948129790964697520,	-0.948145683952948850,	-0.948161574570836050,	-0.948177462818319380,	-0.948193348695358870,	-0.948209232201915220,	
+-0.948225113337948230,	-0.948240992103418610,	-0.948256868498286500,	-0.948272742522512260,	-0.948288614176056030,	-0.948304483458878410,	-0.948320350370939420,	-0.948336214912199770,	
+-0.948352077082619370,	-0.948367936882158920,	-0.948383794310778570,	-0.948399649368438790,	-0.948415502055099720,	-0.948431352370722070,	-0.948447200315265970,	-0.948463045888691900,	
+-0.948478889090960230,	-0.948494729922031320,	-0.948510568381865650,	-0.948526404470423360,	-0.948542238187665250,	-0.948558069533551480,	-0.948573898508042520,	-0.948589725111098850,	
+-0.948605549342680820,	-0.948621371202748920,	-0.948637190691263730,	-0.948653007808185400,	-0.948668822553474620,	-0.948684634927091760,	-0.948700444928997300,	-0.948716252559151710,	
+-0.948732057817515570,	-0.948747860704049260,	-0.948763661218713250,	-0.948779459361468120,	-0.948795255132274360,	-0.948811048531092440,	-0.948826839557882940,	-0.948842628212606340,	
+-0.948858414495223010,	-0.948874198405693870,	-0.948889979943979060,	-0.948905759110039380,	-0.948921535903835320,	-0.948937310325327470,	-0.948953082374476180,	-0.948968852051242370,	
+-0.948984619355586200,	-0.949000384287468690,	-0.949016146846850090,	-0.949031907033691220,	-0.949047664847952550,	-0.949063420289594780,	-0.949079173358578280,	-0.949094924054864060,	
+-0.949110672378412400,	-0.949126418329184100,	-0.949142161907139740,	-0.949157903112240020,	-0.949173641944445530,	-0.949189378403716870,	-0.949205112490014820,	-0.949220844203299880,	
+-0.949236573543532970,	-0.949252300510674550,	-0.949268025104685440,	-0.949283747325526230,	-0.949299467173157720,	-0.949315184647540390,	-0.949330899748635270,	-0.949346612476402730,	
+-0.949362322830803800,	-0.949378030811798950,	-0.949393736419349210,	-0.949409439653414950,	-0.949425140513957210,	-0.949440839000936450,	-0.949456535114313720,	-0.949472228854049690,	
+-0.949487920220104980,	-0.949503609212440590,	-0.949519295831017130,	-0.949534980075795400,	-0.949550661946736210,	-0.949566341443800370,	-0.949582018566948680,	-0.949597693316141970,	
+-0.949613365691341030,	-0.949629035692506670,	-0.949644703319599710,	-0.949660368572580960,	-0.949676031451411330,	-0.949691691956051630,	-0.949707350086462680,	-0.949723005842605380,	
+-0.949738659224440450,	-0.949754310231929020,	-0.949769958865031790,	-0.949785605123709690,	-0.949801249007923510,	-0.949816890517634180,	-0.949832529652802740,	-0.949848166413389870,	
+-0.949863800799356620,	-0.949879432810663780,	-0.949895062447272510,	-0.949910689709143500,	-0.949926314596237780,	-0.949941937108516270,	-0.949957557245940000,	-0.949973175008469670,	
+-0.949988790396066540,	-0.950004403408691410,	-0.950020014046305320,	-0.950035622308869070,	-0.950051228196343800,	-0.950066831708690440,	-0.950082432845870130,	-0.950098031607843670,	
+-0.950113627994572110,	-0.950129222006016460,	-0.950144813642137760,	-0.950160402902897050,	-0.950175989788255350,	-0.950191574298173690,	-0.950207156432613000,	-0.950222736191534520,	
+-0.950238313574899180,	-0.950253888582668020,	-0.950269461214802160,	-0.950285031471262640,	-0.950300599352010500,	-0.950316164857006980,	-0.950331727986212900,	-0.950347288739589620,	
+-0.950362847117098060,	-0.950378403118699480,	-0.950393956744354780,	-0.950409507994025240,	-0.950425056867671870,	-0.950440603365255930,	-0.950456147486738460,	-0.950471689232080590,	
+-0.950487228601243570,	-0.950502765594188340,	-0.950518300210876350,	-0.950533832451268430,	-0.950549362315326160,	-0.950564889803010350,	-0.950580414914282360,	-0.950595937649103220,	
+-0.950611458007434410,	-0.950626975989236840,	-0.950642491594471890,	-0.950658004823100590,	-0.950673515675084400,	-0.950689024150384370,	-0.950704530248961840,	-0.950720033970777980,	
+-0.950735535315794020,	-0.950751034283971230,	-0.950766530875270740,	-0.950782025089654040,	-0.950797516927082250,	-0.950813006387516650,	-0.950828493470918580,	-0.950843978177249300,	
+-0.950859460506469970,	-0.950874940458542040,	-0.950890418033426780,	-0.950905893231085430,	-0.950921366051479370,	-0.950936836494569950,	-0.950952304560318320,	-0.950967770248686060,	
+-0.950983233559634320,	-0.950998694493124460,	-0.951014153049117850,	-0.951029609227575960,	-0.951045063028460040,	-0.951060514451731340,	-0.951075963497351460,	-0.951091410165281650,	
+-0.951106854455483370,	-0.951122296367917790,	-0.951137735902546690,	-0.951153173059331000,	-0.951168607838232540,	-0.951184040239212550,	-0.951199470262232500,	-0.951214897907253660,	
+-0.951230323174237610,	-0.951245746063145830,	-0.951261166573939550,	-0.951276584706580500,	-0.951292000461029910,	-0.951307413837249260,	-0.951322824835200250,	-0.951338233454844030,	
+-0.951353639696142280,	-0.951369043559056490,	-0.951384445043547910,	-0.951399844149578340,	-0.951415240877109160,	-0.951430635226101940,	-0.951446027196518050,	-0.951461416788319080,	
+-0.951476804001466610,	-0.951492188835922130,	-0.951507571291647090,	-0.951522951368603210,	-0.951538329066751950,	-0.951553704386054910,	-0.951569077326473440,	-0.951584447887969480,	
+-0.951599816070504260,	-0.951615181874039600,	-0.951630545298536860,	-0.951645906343957850,	-0.951661265010264160,	-0.951676621297417150,	-0.951691975205378630,	-0.951707326734110180,	
+-0.951722675883573510,	-0.951738022653729980,	-0.951753367044541500,	-0.951768709055969550,	-0.951784048687975950,	-0.951799385940522050,	-0.951814720813569770,	-0.951830053307080700,	
+-0.951845383421016540,	-0.951860711155338770,	-0.951876036510009400,	-0.951891359484989820,	-0.951906680080241930,	-0.951921998295727210,	-0.951937314131407590,	-0.951952627587244750,	
+-0.951967938663200290,	-0.951983247359235900,	-0.951998553675313500,	-0.952013857611394680,	-0.952029159167441130,	-0.952044458343414780,	-0.952059755139277210,	-0.952075049554990340,	
+-0.952090341590515750,	-0.952105631245815490,	-0.952120918520850900,	-0.952136203415584250,	-0.952151485929976890,	-0.952166766063990980,	-0.952182043817588090,	-0.952197319190730030,	
+-0.952212592183378730,	-0.952227862795495980,	-0.952243131027043500,	-0.952258396877983300,	-0.952273660348277100,	-0.952288921437886680,	-0.952304180146773980,	-0.952319436474900800,	
+-0.952334690422229070,	-0.952349941988720470,	-0.952365191174337270,	-0.952380437979040930,	-0.952395682402793490,	-0.952410924445556860,	-0.952426164107292970,	-0.952441401387963630,	
+-0.952456636287530860,	-0.952471868805956360,	-0.952487098943202270,	-0.952502326699230410,	-0.952517552074002790,	-0.952532775067481240,	-0.952547995679627780,	-0.952563213910404330,	
+-0.952578429759772800,	-0.952593643227695350,	-0.952608854314133560,	-0.952624063019049780,	-0.952639269342405840,	-0.952654473284163750,	-0.952669674844285330,	-0.952684874022732830,	
+-0.952700070819468170,	-0.952715265234453270,	-0.952730457267650270,	-0.952745646919021080,	-0.952760834188527750,	-0.952776019076132410,	-0.952791201581796980,	-0.952806381705483480,	
+-0.952821559447154080,	-0.952836734806770890,	-0.952851907784295740,	-0.952867078379690870,	-0.952882246592918310,	-0.952897412423940100,	-0.952912575872718380,	-0.952927736939215180,	
+-0.952942895623392740,	-0.952958051925212880,	-0.952973205844638070,	-0.952988357381630120,	-0.953003506536151400,	-0.953018653308163820,	-0.953033797697629640,	-0.953048939704510990,	
+-0.953064079328769910,	-0.953079216570368650,	-0.953094351429269460,	-0.953109483905434260,	-0.953124613998825420,	-0.953139741709405080,	-0.953154867037135370,	-0.953169989981978330,	
+-0.953185110543896540,	-0.953200228722851930,	-0.953215344518806630,	-0.953230457931723120,	-0.953245568961563320,	-0.953260677608289700,	-0.953275783871864290,	-0.953290887752249460,	
+-0.953305989249407460,	-0.953321088363300430,	-0.953336185093890730,	-0.953351279441140620,	-0.953366371405012130,	-0.953381460985467830,	-0.953396548182469880,	-0.953411632995980530,	
+-0.953426715425962130,	-0.953441795472376950,	-0.953456873135187230,	-0.953471948414355340,	-0.953487021309843640,	-0.953502091821614380,	-0.953517159949629820,	-0.953532225693852430,	
+-0.953547289054244460,	-0.953562350030768170,	-0.953577408623386140,	-0.953592464832060500,	-0.953607518656753750,	-0.953622570097428120,	-0.953637619154046210,	-0.953652665826570160,	
+-0.953667710114962430,	-0.953682752019185510,	-0.953697791539201640,	-0.953712828674973310,	-0.953727863426462870,	-0.953742895793632810,	-0.953757925776445580,	-0.953772953374863340,	
+-0.953787978588848890,	-0.953803001418364490,	-0.953818021863372500,	-0.953833039923835610,	-0.953848055599715970,	-0.953863068890976270,	-0.953878079797578770,	-0.953893088319486160,	
+-0.953908094456660800,	-0.953923098209065290,	-0.953938099576661980,	-0.953953098559413460,	-0.953968095157282090,	-0.953983089370230570,	-0.953998081198221270,	-0.954013070641216880,	
+-0.954028057699179640,	-0.954043042372072380,	-0.954058024659857450,	-0.954073004562497550,	-0.954087982079955150,	-0.954102957212192630,	-0.954117929959172880,	-0.954132900320858180,	
+-0.954147868297211430,	-0.954162833888194780,	-0.954177797093771150,	-0.954192757913903010,	-0.954207716348553060,	-0.954222672397683660,	-0.954237626061257730,	-0.954252577339237630,	
+-0.954267526231586170,	-0.954282472738265720,	-0.954297416859239300,	-0.954312358594469170,	-0.954327297943918350,	-0.954342234907549100,	-0.954357169485324340,	-0.954372101677206650,	
+-0.954387031483158730,	-0.954401958903143170,	-0.954416883937122760,	-0.954431806585060110,	-0.954446726846918000,	-0.954461644722659040,	-0.954476560212245920,	-0.954491473315641440,	
+-0.954506384032808300,	-0.954521292363709200,	-0.954536198308306830,	-0.954551101866564000,	-0.954566003038443410,	-0.954580901823907760,	-0.954595798222919960,	-0.954610692235442590,	
+-0.954625583861438480,	-0.954640473100870410,	-0.954655359953701210,	-0.954670244419893570,	-0.954685126499410290,	-0.954700006192214290,	-0.954714883498268270,	-0.954729758417534930,	
+-0.954744630949977300,	-0.954759501095558070,	-0.954774368854240050,	-0.954789234225986160,	-0.954804097210759100,	-0.954818957808521880,	-0.954833816019237220,	-0.954848671842868040,	
+-0.954863525279377230,	-0.954878376328727520,	-0.954893224990881920,	-0.954908071265803240,	-0.954922915153454400,	-0.954937756653798210,	-0.954952595766797700,	-0.954967432492415670,	
+-0.954982266830615050,	-0.954997098781358860,	-0.955011928344609800,	-0.955026755520331010,	-0.955041580308485180,	-0.955056402709035580,	-0.955071222721944890,	-0.955086040347176150,	
+-0.955100855584692270,	-0.955115668434456390,	-0.955130478896431100,	-0.955145286970579880,	-0.955160092656865300,	-0.955174895955250510,	-0.955189696865698430,	-0.955204495388172200,	
+-0.955219291522634630,	-0.955234085269048960,	-0.955248876627377900,	-0.955263665597584800,	-0.955278452179632480,	-0.955293236373484070,	-0.955308018179102600,	-0.955322797596451000,	
+-0.955337574625492400,	-0.955352349266189950,	-0.955367121518506560,	-0.955381891382405370,	-0.955396658857849520,	-0.955411423944801940,	-0.955426186643225870,	-0.955440946953084240,	
+-0.955455704874340280,	-0.955470460406957050,	-0.955485213550897770,	-0.955499964306125270,	-0.955514712672603020,	-0.955529458650293930,	-0.955544202239161260,	-0.955558943439167920,	
+-0.955573682250277390,	-0.955588418672452590,	-0.955603152705656770,	-0.955617884349853060,	-0.955632613605004620,	-0.955647340471074690,	-0.955662064948026300,	-0.955676787035822930,	
+-0.955691506734427380,	-0.955706224043803230,	-0.955720938963913410,	-0.955735651494721280,	-0.955750361636189980,	-0.955765069388282870,	-0.955779774750963100,	-0.955794477724193790,	
+-0.955809178307938320,	-0.955823876502159940,	-0.955838572306821900,	-0.955853265721887340,	-0.955867956747319610,	-0.955882645383082100,	-0.955897331629137930,	-0.955912015485450350,	
+-0.955926696951982850,	-0.955941376028698550,	-0.955956052715560830,	-0.955970727012532940,	-0.955985398919578230,	-0.956000068436660080,	-0.956014735563741720,	-0.956029400300786540,	
+-0.956044062647757880,	-0.956058722604618990,	-0.956073380171333360,	-0.956088035347864240,	-0.956102688134175090,	-0.956117338530229070,	-0.956131986535989850,	-0.956146632151420590,	
+-0.956161275376484880,	-0.956175916211145840,	-0.956190554655367060,	-0.956205190709111920,	-0.956219824372343760,	-0.956234455645026070,	-0.956249084527122210,	-0.956263711018595640,	
+-0.956278335119409850,	-0.956292956829528200,	-0.956307576148914150,	-0.956322193077531190,	-0.956336807615342680,	-0.956351419762312190,	-0.956366029518403100,	-0.956380636883578990,	
+-0.956395241857803220,	-0.956409844441039490,	-0.956424444633250940,	-0.956439042434401480,	-0.956453637844454250,	-0.956468230863373070,	-0.956482821491121290,	-0.956497409727662400,	
+-0.956511995572960070,	-0.956526579026977570,	-0.956541160089678820,	-0.956555738761027060,	-0.956570315040986000,	-0.956584888929519090,	-0.956599460426590050,	-0.956614029532162350,	
+-0.956628596246199560,	-0.956643160568665160,	-0.956657722499523080,	-0.956672282038736440,	-0.956686839186269290,	-0.956701393942084980,	-0.956715946306147200,	-0.956730496278419550,	
+-0.956745043858865610,	-0.956759589047449180,	-0.956774131844133620,	-0.956788672248882870,	-0.956803210261660380,	-0.956817745882429850,	-0.956832279111154980,	-0.956846809947799470,	
+-0.956861338392326790,	-0.956875864444700850,	-0.956890388104885250,	-0.956904909372843780,	-0.956919428248539820,	-0.956933944731937490,	-0.956948458823000170,	-0.956962970521691770,	
+-0.956977479827975870,	-0.956991986741816400,	-0.957006491263176830,	-0.957020993392021070,	-0.957035493128312820,	-0.957049990472015890,	-0.957064485423093970,	-0.957078977981510870,	
+-0.957093468147230290,	-0.957107955920216020,	-0.957122441300431890,	-0.957136924287841580,	-0.957151404882409020,	-0.957165883084097890,	-0.957180358892872230,	-0.957194832308695510,	
+-0.957209303331531760,	-0.957223771961344670,	-0.957238238198098280,	-0.957252702041756160,	-0.957267163492282470,	-0.957281622549640670,	-0.957296079213795000,	-0.957310533484708960,	
+-0.957324985362346670,	-0.957339434846671940,	-0.957353881937648590,	-0.957368326635240630,	-0.957382768939411650,	-0.957397208850125910,	-0.957411646367347100,	-0.957426081491039250,	
+-0.957440514221166050,	-0.957454944557691650,	-0.957469372500579840,	-0.957483798049794670,	-0.957498221205300040,	-0.957512641967059760,	-0.957527060335037870,	-0.957541476309198390,	
+-0.957555889889505240,	-0.957570301075922340,	-0.957584709868413600,	-0.957599116266943160,	-0.957613520271474950,	-0.957627921881972880,	-0.957642321098401080,	-0.957656717920723490,	
+-0.957671112348904010,	-0.957685504382906780,	-0.957699894022695840,	-0.957714281268235100,	-0.957728666119488700,	-0.957743048576420560,	-0.957757428638994930,	-0.957771806307175620,	
+-0.957786181580926880,	-0.957800554460212620,	-0.957814924944996980,	-0.957829293035244110,	-0.957843658730917920,	-0.957858022031982560,	-0.957872382938402270,	-0.957886741450140860,	
+-0.957901097567162680,	-0.957915451289431790,	-0.957929802616912300,	-0.957944151549568250,	-0.957958498087363770,	-0.957972842230263130,	-0.957987183978230350,	-0.958001523331229570,	
+-0.958015860289225030,	-0.958030194852180880,	-0.958044527020061150,	-0.958058856792830090,	-0.958073184170451950,	-0.958087509152890870,	-0.958101831740110990,	-0.958116151932076550,	
+-0.958130469728751710,	-0.958144785130100710,	-0.958159098136087680,	-0.958173408746677000,	-0.958187716961832690,	-0.958202022781519220,	-0.958216326205700630,	-0.958230627234341270,	
+-0.958244925867405280,	-0.958259222104857030,	-0.958273515946660660,	-0.958287807392780520,	-0.958302096443180870,	-0.958316383097825960,	-0.958330667356680150,	-0.958344949219707590,	
+-0.958359228686872730,	-0.958373505758139730,	-0.958387780433473060,	-0.958402052712836850,	-0.958416322596195580,	-0.958430590083513500,	-0.958444855174754970,	-0.958459117869884140,	
+-0.958473378168865690,	-0.958487636071663650,	-0.958501891578242730,	-0.958516144688566940,	-0.958530395402600770,	-0.958544643720308680,	-0.958558889641654920,	-0.958573133166603970,	
+-0.958587374295120200,	-0.958601613027167950,	-0.958615849362711710,	-0.958630083301715840,	-0.958644314844144700,	-0.958658543989962860,	-0.958672770739134590,	-0.958686995091624470,	
+-0.958701217047396750,	-0.958715436606416120,	-0.958729653768646830,	-0.958743868534053360,	-0.958758080902600280,	-0.958772290874251980,	-0.958786498448973010,	-0.958800703626727760,	
+-0.958814906407480790,	-0.958829106791196480,	-0.958843304777839410,	-0.958857500367374050,	-0.958871693559765090,	-0.958885884354976680,	-0.958900072752973730,	-0.958914258753720490,	
+-0.958928442357181670,	-0.958942623563321720,	-0.958956802372105230,	-0.958970978783496690,	-0.958985152797460770,	-0.958999324413961960,	-0.959013493632964840,	-0.959027660454433880,	
+-0.959041824878333890,	-0.959055986904629340,	-0.959070146533284820,	-0.959084303764264900,	-0.959098458597534180,	-0.959112611033057340,	-0.959126761070798970,	-0.959140908710723770,	
+-0.959155053952796210,	-0.959169196796981090,	-0.959183337243242900,	-0.959197475291546420,	-0.959211610941856250,	-0.959225744194137090,	-0.959239875048353400,	-0.959254003504470210,	
+-0.959268129562451890,	-0.959282253222263350,	-0.959296374483869060,	-0.959310493347233950,	-0.959324609812322590,	-0.959338723879099690,	-0.959352835547529930,	-0.959366944817578120,	
+-0.959381051689208950,	-0.959395156162387130,	-0.959409258237077460,	-0.959423357913244620,	-0.959437455190853440,	-0.959451550069868600,	-0.959465642550254790,	-0.959479732631976940,	
+-0.959493820314999860,	-0.959507905599288000,	-0.959521988484806520,	-0.959536068971520110,	-0.959550147059393450,	-0.959564222748391480,	-0.959578296038478880,	-0.959592366929620580,	
+-0.959606435421781370,	-0.959620501514926060,	-0.959634565209019570,	-0.959648626504026600,	-0.959662685399912060,	-0.959676741896640760,	-0.959690795994177610,	-0.959704847692487650,	
+-0.959718896991535340,	-0.959732943891285940,	-0.959746988391704140,	-0.959761030492754850,	-0.959775070194403000,	-0.959789107496613390,	-0.959803142399351160,	-0.959817174902581010,	
+-0.959831205006267840,	-0.959845232710376810,	-0.959859258014872600,	-0.959873280919720240,	-0.959887301424884650,	-0.959901319530330980,	-0.959915335236023790,	-0.959929348541928460,	
+-0.959943359448009680,	-0.959957367954232480,	-0.959971374060561880,	-0.959985377766962800,	-0.959999379073400270,	-0.960013377979839320,	-0.960027374486244980,	-0.960041368592582160,	
+-0.960055360298816000,	-0.960069349604911300,	-0.960083336510833330,	-0.960097321016546880,	-0.960111303122017310,	-0.960125282827209330,	-0.960139260132088280,	-0.960153235036618980,	
+-0.960167207540766680,	-0.960181177644496180,	-0.960195145347772950,	-0.960209110650561800,	-0.960223073552827770,	-0.960237034054536200,	-0.960250992155651910,	-0.960264947856140250,	
+-0.960278901155966150,	-0.960292852055094850,	-0.960306800553491380,	-0.960320746651120990,	-0.960334690347948610,	-0.960348631643939580,	-0.960362570539058940,	-0.960376507033271930,	
+-0.960390441126543590,	-0.960404372818839170,	-0.960418302110123800,	-0.960432229000362740,	-0.960446153489521000,	-0.960460075577563970,	-0.960473995264456650,	-0.960487912550164410,	
+-0.960501827434652510,	-0.960515739917885860,	-0.960529649999829930,	-0.960543557680449860,	-0.960557462959710890,	-0.960571365837578290,	-0.960585266314017310,	-0.960599164388993070,	
+-0.960613060062470940,	-0.960626953334416170,	-0.960640844204794120,	-0.960654732673569820,	-0.960668618740708750,	-0.960682502406176140,	-0.960696383669937260,	-0.960710262531957350,	
+-0.960724138992201880,	-0.960738013050636110,	-0.960751884707225170,	-0.960765753961934640,	-0.960779620814729670,	-0.960793485265575730,	-0.960807347314437950,	-0.960821206961281820,	
+-0.960835064206072680,	-0.960848919048776010,	-0.960862771489356840,	-0.960876621527780860,	-0.960890469164013330,	-0.960904314398019600,	-0.960918157229765040,	-0.960931997659215220,	
+-0.960945835686335290,	-0.960959671311090840,	-0.960973504533447100,	-0.960987335353369660,	-0.961001163770823900,	-0.961014989785775260,	-0.961028813398189130,	-0.961042634608030970,	
+-0.961056453415266130,	-0.961070269819860210,	-0.961084083821778680,	-0.961097895420986890,	-0.961111704617450440,	-0.961125511411134560,	-0.961139315802005070,	-0.961153117790027210,	
+-0.961166917375166570,	-0.961180714557388630,	-0.961194509336658950,	-0.961208301712942910,	-0.961222091686206200,	-0.961235879256414180,	-0.961249664423532550,	-0.961263447187526650,	
+-0.961277227548362200,	-0.961291005506004660,	-0.961304781060419720,	-0.961318554211572640,	-0.961332324959429330,	-0.961346093303955150,	-0.961359859245115690,	-0.961373622782876640,	
+-0.961387383917203580,	-0.961401142648061980,	-0.961414898975417540,	-0.961428652899235850,	-0.961442404419482480,	-0.961456153536123240,	-0.961469900249123490,	-0.961483644558449040,	
+-0.961497386464065460,	-0.961511125965938460,	-0.961524863064033620,	-0.961538597758316630,	-0.961552330048753070,	-0.961566059935308750,	-0.961579787417949250,	-0.961593512496640380,	
+-0.961607235171347610,	-0.961620955442036850,	-0.961634673308673690,	-0.961648388771223720,	-0.961662101829652950,	-0.961675812483926750,	-0.961689520734011150,	-0.961703226579871730,	
+-0.961716930021474180,	-0.961730631058784420,	-0.961744329691768040,	-0.961758025920390720,	-0.961771719744618500,	-0.961785411164416850,	-0.961799100179751790,	-0.961812786790588900,	
+-0.961826470996894000,	-0.961840152798633000,	-0.961853832195771590,	-0.961867509188275570,	-0.961881183776110870,	-0.961894855959243290,	-0.961908525737638300,	-0.961922193111262260,	
+-0.961935858080080530,	-0.961949520644059250,	-0.961963180803164120,	-0.961976838557361160,	-0.961990493906615950,	-0.962004146850894640,	-0.962017797390162910,	-0.962031445524386690,	
+-0.962045091253531770,	-0.962058734577564300,	-0.962072375496449860,	-0.962086014010154480,	-0.962099650118644070,	-0.962113283821884660,	-0.962126915119841940,	-0.962140544012481950,	
+-0.962154170499770590,	-0.962167794581673790,	-0.962181416258157560,	-0.962195035529187730,	-0.962208652394730300,	-0.962222266854751320,	-0.962235878909216580,	-0.962249488558092110,	
+-0.962263095801344060,	-0.962276700638938220,	-0.962290303070840620,	-0.962303903097017190,	-0.962317500717434160,	-0.962331095932057230,	-0.962344688740852660,	-0.962358279143786350,	
+-0.962371867140824340,	-0.962385452731932540,	-0.962399035917077320,	-0.962412616696224350,	-0.962426195069339910,	-0.962439771036390000,	-0.962453344597340550,	-0.962466915752157930,	
+-0.962480484500807810,	-0.962494050843256680,	-0.962507614779470220,	-0.962521176309414920,	-0.962534735433056450,	-0.962548292150361310,	-0.962561846461295390,	-0.962575398365824950,	
+-0.962588947863915910,	-0.962602494955534520,	-0.962616039640646900,	-0.962629581919219210,	-0.962643121791217470,	-0.962656659256608040,	-0.962670194315356830,	-0.962683726967430320,	
+-0.962697257212794310,	-0.962710785051415270,	-0.962724310483259240,	-0.962737833508292450,	-0.962751354126481050,	-0.962764872337791290,	-0.962778388142189410,	-0.962791901539641450,	
+-0.962805412530113760,	-0.962818921113572480,	-0.962832427289983970,	-0.962845931059314370,	-0.962859432421530050,	-0.962872931376597020,	-0.962886427924481760,	-0.962899922065150290,	
+-0.962913413798569210,	-0.962926903124704410,	-0.962940390043522500,	-0.962953874554989490,	-0.962967356659071850,	-0.962980836355735840,	-0.962994313644947700,	-0.963007788526673790,	
+-0.963021261000880370,	-0.963034731067533900,	-0.963048198726600520,	-0.963061663978046710,	-0.963075126821838600,	-0.963088587257942890,	-0.963102045286325480,	-0.963115500906953190,	
+-0.963128954119791940,	-0.963142404924808400,	-0.963155853321968850,	-0.963169299311239730,	-0.963182742892587210,	-0.963196184065977960,	-0.963209622831378120,	-0.963223059188754390,	
+-0.963236493138072910,	-0.963249924679300260,	-0.963263353812402800,	-0.963276780537346890,	-0.963290204854099000,	-0.963303626762625600,	-0.963317046262893270,	-0.963330463354868160,	
+-0.963343878038517070,	-0.963357290313806120,	-0.963370700180702030,	-0.963384107639171150,	-0.963397512689180060,	-0.963410915330695120,	-0.963424315563682910,	-0.963437713388109910,	
+-0.963451108803942690,	-0.963464501811147620,	-0.963477892409691390,	-0.963491280599540370,	-0.963504666380661120,	-0.963518049753020240,	-0.963531430716584200,	-0.963544809271319690,	
+-0.963558185417193070,	-0.963571559154170920,	-0.963584930482219940,	-0.963598299401306700,	-0.963611665911397570,	-0.963625030012459470,	-0.963638391704458640,	-0.963651750987361890,	
+-0.963665107861135680,	-0.963678462325746830,	-0.963691814381161690,	-0.963705164027347180,	-0.963718511264269660,	-0.963731856091895820,	-0.963745198510192360,	-0.963758538519125960,	
+-0.963771876118663220,	-0.963785211308770820,	-0.963798544089415340,	-0.963811874460563490,	-0.963825202422181950,	-0.963838527974237410,	-0.963851851116696580,	-0.963865171849526030,	
+-0.963878490172692670,	-0.963891806086162980,	-0.963905119589903880,	-0.963918430683881830,	-0.963931739368063870,	-0.963945045642416450,	-0.963958349506906510,	-0.963971650961500610,	
+-0.963984950006165690,	-0.963998246640868190,	-0.964011540865575280,	-0.964024832680253410,	-0.964038122084869500,	-0.964051409079390240,	-0.964064693663782560,	-0.964077975838013130,	
+-0.964091255602048670,	-0.964104532955856190,	-0.964117807899402270,	-0.964131080432653830,	-0.964144350555577790,	-0.964157618268140840,	-0.964170883570309780,	-0.964184146462051530,	
+-0.964197406943332890,	-0.964210665014120780,	-0.964223920674382010,	-0.964237173924083480,	-0.964250424763191890,	-0.964263673191674390,	-0.964276919209497540,	-0.964290162816628600,	
+-0.964303404013034050,	-0.964316642798681120,	-0.964329879173536630,	-0.964343113137567260,	-0.964356344690740270,	-0.964369573833022240,	-0.964382800564380420,	-0.964396024884781600,	
+-0.964409246794192710,	-0.964422466292580660,	-0.964435683379912480,	-0.964448898056155080,	-0.964462110321275380,	-0.964475320175240510,	-0.964488527618017290,	-0.964501732649572730,	
+-0.964514935269873860,	-0.964528135478887600,	-0.964541333276581090,	-0.964554528662921130,	-0.964567721637874960,	-0.964580912201409510,	-0.964594100353491690,	-0.964607286094088750,	
+-0.964620469423167370,	-0.964633650340695040,	-0.964646828846638440,	-0.964660004940964820,	-0.964673178623641210,	-0.964686349894634640,	-0.964699518753912130,	-0.964712685201440930,	
+-0.964725849237187960,	-0.964739010861120350,	-0.964752170073205240,	-0.964765326873409770,	-0.964778481261700850,	-0.964791633238045840,	-0.964804782802411660,	-0.964817929954765560,	
+-0.964831074695074560,	-0.964844217023306030,	-0.964857356939426870,	-0.964870494443404340,	-0.964883629535205570,	-0.964896762214797700,	-0.964909892482147980,	-0.964923020337223440,	
+-0.964936145779991430,	-0.964949268810419090,	-0.964962389428473570,	-0.964975507634121990,	-0.964988623427331600,	-0.965001736808069780,	-0.965014847776303530,	-0.965027956332000230,	
+-0.965041062475127000,	-0.965054166205651100,	-0.965067267523539880,	-0.965080366428760380,	-0.965093462921279950,	-0.965106557001065960,	-0.965119648668085530,	-0.965132737922306030,	
+-0.965145824763694590,	-0.965158909192218690,	-0.965171991207845470,	-0.965185070810542280,	-0.965198148000276370,	-0.965211222777015100,	-0.965224295140725830,	-0.965237365091375810,	
+-0.965250432628932290,	-0.965263497753362840,	-0.965276560464634500,	-0.965289620762714850,	-0.965302678647571020,	-0.965315734119170710,	-0.965328787177480940,	-0.965341837822469180,	
+-0.965354886054102800,	-0.965367931872349370,	-0.965380975277176030,	-0.965394016268550150,	-0.965407054846439290,	-0.965420091010810830,	-0.965433124761632120,	-0.965446156098870630,	
+-0.965459185022493730,	-0.965472211532468760,	-0.965485235628763430,	-0.965498257311344980,	-0.965511276580180770,	-0.965524293435238490,	-0.965537307876485400,	-0.965550319903889060,	
+-0.965563329517416970,	-0.965576336717036470,	-0.965589341502715250,	-0.965602343874420570,	-0.965615343832120110,	-0.965628341375781240,	-0.965641336505371540,	-0.965654329220858480,	
+-0.965667319522209630,	-0.965680307409392480,	-0.965693292882374490,	-0.965706275941123350,	-0.965719256585606420,	-0.965732234815791510,	-0.965745210631645870,	-0.965758184033137290,	
+-0.965771155020233140,	-0.965784123592901220,	-0.965797089751108890,	-0.965810053494823960,	-0.965823014824013780,	-0.965835973738646160,	-0.965848930238688560,	-0.965861884324108690,	
+-0.965874835994874000,	-0.965887785250952310,	-0.965900732092311090,	-0.965913676518918020,	-0.965926618530740910,	-0.965939558127747120,	-0.965952495309904460,	-0.965965430077180610,	
+-0.965978362429543160,	-0.965991292366959800,	-0.966004219889398220,	-0.966017144996826000,	-0.966030067689211070,	-0.966042987966520770,	-0.966055905828723250,	-0.966068821275785750,	
+-0.966081734307676300,	-0.966094644924362480,	-0.966107553125812090,	-0.966120458911992830,	-0.966133362282872390,	-0.966146263238418460,	-0.966159161778599060,	-0.966172057903381680,	
+-0.966184951612734100,	-0.966197842906624140,	-0.966210731785019590,	-0.966223618247888270,	-0.966236502295197860,	-0.966249383926916170,	-0.966262263143011000,	-0.966275139943450270,	
+-0.966288014328201660,	-0.966300886297232990,	-0.966313755850512050,	-0.966326622988006870,	-0.966339487709685030,	-0.966352350015514450,	-0.966365209905463040,	-0.966378067379498610,	
+-0.966390922437588950,	-0.966403775079702100,	-0.966416625305805630,	-0.966429473115867800,	-0.966442318509856180,	-0.966455161487738800,	-0.966468002049483580,	-0.966480840195058200,	
+-0.966493675924430810,	-0.966506509237569200,	-0.966519340134441410,	-0.966532168615015120,	-0.966544994679258470,	-0.966557818327139380,	-0.966570639558625770,	-0.966583458373685420,	
+-0.966596274772286490,	-0.966609088754396880,	-0.966621900319984630,	-0.966634709469017530,	-0.966647516201463720,	-0.966660320517291010,	-0.966673122416467630,	-0.966685921898961410,	
+-0.966698718964740360,	-0.966711513613772500,	-0.966724305846025870,	-0.966737095661468480,	-0.966749883060068370,	-0.966762668041793560,	-0.966775450606611960,	-0.966788230754491940,	
+-0.966801008485401180,	-0.966813783799307940,	-0.966826556696180230,	-0.966839327175986200,	-0.966852095238693750,	-0.966864860884271150,	-0.966877624112686410,	-0.966890384923907550,	
+-0.966903143317902720,	-0.966915899294640060,	-0.966928652854087690,	-0.966941403996213640,	-0.966954152720986060,	-0.966966899028373180,	-0.966979642918343040,	-0.966992384390863660,	
+-0.967005123445903500,	-0.967017860083430380,	-0.967030594303412650,	-0.967043326105818450,	-0.967056055490616020,	-0.967068782457773280,	-0.967081507007258700,	-0.967094229139040310,	
+-0.967106948853086460,	-0.967119666149365060,	-0.967132381027844600,	-0.967145093488493200,	-0.967157803531279110,	-0.967170511156170360,	-0.967183216363135420,	-0.967195919152142540,	
+-0.967208619523159620,	-0.967221317476155360,	-0.967234013011097680,	-0.967246706127955050,	-0.967259396826695590,	-0.967272085107287790,	-0.967284770969699560,	-0.967297454413899580,	
+-0.967310135439855890,	-0.967322814047536840,	-0.967335490236910790,	-0.967348164007945990,	-0.967360835360610790,	-0.967373504294873570,	-0.967386170810702440,	-0.967398834908066000,	
+-0.967411496586932370,	-0.967424155847270150,	-0.967436812689047470,	-0.967449467112232670,	-0.967462119116794360,	-0.967474768702700660,	-0.967487415869920040,	-0.967500060618420870,	
+-0.967512702948171600,	-0.967525342859140600,	-0.967537980351296230,	-0.967550615424606740,	-0.967563248079040930,	-0.967575878314566930,	-0.967588506131153210,	-0.967601131528768140,	
+-0.967613754507380410,	-0.967626375066958140,	-0.967638993207470040,	-0.967651608928884470,	-0.967664222231169880,	-0.967676833114294640,	-0.967689441578227340,	-0.967702047622936550,	
+-0.967714651248390510,	-0.967727252454557930,	-0.967739851241407160,	-0.967752447608906770,	-0.967765041557025250,	-0.967777633085731170,	-0.967790222194993000,	-0.967802808884779320,	
+-0.967815393155058490,	-0.967827975005799310,	-0.967840554436970040,	-0.967853131448539570,	-0.967865706040476170,	-0.967878278212748520,	-0.967890847965325100,	-0.967903415298174700,	
+-0.967915980211265680,	-0.967928542704566740,	-0.967941102778046350,	-0.967953660431673300,	-0.967966215665416070,	-0.967978768479243360,	-0.967991318873123730,	-0.968003866847025660,	
+-0.968016412400918070,	-0.968028955534769310,	-0.968041496248548290,	-0.968054034542223500,	-0.968066570415763610,	-0.968079103869137310,	-0.968091634902313200,	-0.968104163515260070,	
+-0.968116689707946510,	-0.968129213480341200,	-0.968141734832412840,	-0.968154253764130220,	-0.968166770275461940,	-0.968179284366376680,	-0.968191796036843240,	-0.968204305286830320,	
+-0.968216812116306610,	-0.968229316525241020,	-0.968241818513601920,	-0.968254318081358420,	-0.968266815228479020,	-0.968279309954932720,	-0.968291802260688010,	-0.968304292145713900,	
+-0.968316779609978970,	-0.968329264653452150,	-0.968341747276102120,	-0.968354227477897790,	-0.968366705258807860,	-0.968379180618801130,	-0.968391653557846510,	-0.968404124075912700,	
+-0.968416592172968600,	-0.968429057848983030,	-0.968441521103924790,	-0.968453981937762780,	-0.968466440350465810,	-0.968478896342002790,	-0.968491349912342430,	-0.968503801061453730,	
+-0.968516249789305620,	-0.968528696095866670,	-0.968541139981106140,	-0.968553581444992710,	-0.968566020487495400,	-0.968578457108583040,	-0.968590891308224510,	-0.968603323086388630,	
+-0.968615752443044540,	-0.968628179378161150,	-0.968640603891707250,	-0.968653025983651770,	-0.968665445653963840,	-0.968677862902612150,	-0.968690277729565950,	-0.968702690134793930,	
+-0.968715100118265340,	-0.968727507679948860,	-0.968739912819813640,	-0.968752315537828700,	-0.968764715833962950,	-0.968777113708185420,	-0.968789509160465020,	-0.968801902190771000,	
+-0.968814292799072050,	-0.968826680985337530,	-0.968839066749536130,	-0.968851450091637200,	-0.968863831011609560,	-0.968876209509422440,	-0.968888585585044760,	-0.968900959238445660,	
+-0.968913330469594050,	-0.968925699278459170,	-0.968938065665010060,	-0.968950429629215740,	-0.968962791171045450,	-0.968975150290468100,	-0.968987506987452840,	-0.968999861261968910,	
+-0.969012213113985220,	-0.969024562543471020,	-0.969036909550395560,	-0.969049254134727640,	-0.969061596296436730,	-0.969073936035491750,	-0.969086273351861930,	-0.969098608245516410,	
+-0.969110940716424450,	-0.969123270764554960,	-0.969135598389877510,	-0.969147923592360900,	-0.969160246371974620,	-0.969172566728687570,	-0.969184884662469330,	-0.969197200173288700,	
+-0.969209513261115040,	-0.969221823925917710,	-0.969234132167665740,	-0.969246437986328590,	-0.969258741381875180,	-0.969271042354274970,	-0.969283340903497100,	-0.969295637029511050,	
+-0.969307930732285720,	-0.969320222011790690,	-0.969332510867994990,	-0.969344797300868090,	-0.969357081310379230,	-0.969369362896497560,	-0.969381642059192530,	-0.969393918798433510,	
+-0.969406193114189520,	-0.969418465006430140,	-0.969430734475124510,	-0.969443001520242210,	-0.969455266141752260,	-0.969467528339624240,	-0.969479788113827400,	-0.969492045464330990,	
+-0.969504300391104580,	-0.969516552894117310,	-0.969528802973338650,	-0.969541050628738080,	-0.969553295860284830,	-0.969565538667948370,	-0.969577779051698060,	-0.969590017011503270,	
+-0.969602252547333450,	-0.969614485659157980,	-0.969626716346946420,	-0.969638944610667910,	-0.969651170450292140,	-0.969663393865788370,	-0.969675614857126170,	-0.969687833424274890,	
+-0.969700049567204130,	-0.969712263285883220,	-0.969724474580281550,	-0.969736683450368790,	-0.969748889896114190,	-0.969761093917487550,	-0.969773295514458010,	-0.969785494686995380,	
+-0.969797691435068890,	-0.969809885758648240,	-0.969822077657702790,	-0.969834267132202220,	-0.969846454182116010,	-0.969858638807413630,	-0.969870821008064650,	-0.969883000784038660,	
+-0.969895178135305120,	-0.969907353061833620,	-0.969919525563593730,	-0.969931695640555150,	-0.969943863292687110,	-0.969956028519959660,	-0.969968191322342020,	-0.969980351699803900,	
+-0.969992509652314870,	-0.970004665179844630,	-0.970016818282362750,	-0.970028968959838700,	-0.970041117212242290,	-0.970053263039543090,	-0.970065406441710800,	-0.970077547418714880,	
+-0.970089685970525140,	-0.970101822097111270,	-0.970113955798442730,	-0.970126087074489330,	-0.970138215925220760,	-0.970150342350606600,	-0.970162466350616650,	-0.970174587925220380,	
+-0.970186707074387810,	-0.970198823798088420,	-0.970210938096291890,	-0.970223049968968130,	-0.970235159416086730,	-0.970247266437617380,	-0.970259371033529880,	-0.970271473203793920,	
+-0.970283572948379300,	-0.970295670267255830,	-0.970307765160393080,	-0.970319857627760960,	-0.970331947669329180,	-0.970344035285067630,	-0.970356120474945790,	-0.970368203238933800,	
+-0.970380283577001230,	-0.970392361489118120,	-0.970404436975253910,	-0.970416510035378650,	-0.970428580669462140,	-0.970440648877474170,	-0.970452714659384650,	-0.970464778015163290,	
+-0.970476838944779980,	-0.970488897448204550,	-0.970500953525406880,	-0.970513007176356800,	-0.970525058401024320,	-0.970537107199379130,	-0.970549153571391150,	-0.970561197517030290,	
+-0.970573239036266470,	-0.970585278129069470,	-0.970597314795409340,	-0.970609349035255970,	-0.970621380848579180,	-0.970633410235348880,	-0.970645437195535090,	-0.970657461729107720,	
+-0.970669483836036790,	-0.970681503516292010,	-0.970693520769843500,	-0.970705535596661280,	-0.970717547996715170,	-0.970729557969975180,	-0.970741565516411220,	-0.970753570635993430,	
+-0.970765573328691730,	-0.970777573594476140,	-0.970789571433316460,	-0.970801566845182930,	-0.970813559830045470,	-0.970825550387874210,	-0.970837538518638970,	-0.970849524222309970,	
+-0.970861507498857020,	-0.970873488348250380,	-0.970885466770460060,	-0.970897442765455980,	-0.970909416333208370,	-0.970921387473687280,	-0.970933356186862610,	-0.970945322472704600,	
+-0.970957286331183280,	-0.970969247762268670,	-0.970981206765931030,	-0.970993163342140360,	-0.971005117490866710,	-0.971017069212080310,	-0.971029018505751300,	-0.971040965371849700,	
+-0.971052909810345640,	-0.971064851821209380,	-0.971076791404410940,	-0.971088728559920570,	-0.971100663287708390,	-0.971112595587744430,	-0.971124525459999060,	-0.971136452904442390,	
+-0.971148377921044580,	-0.971160300509775860,	-0.971172220670606380,	-0.971184138403506260,	-0.971196053708445860,	-0.971207966585395430,	-0.971219877034324890,	-0.971231785055204800,	
+-0.971243690648005200,	-0.971255593812696330,	-0.971267494549248540,	-0.971279392857631980,	-0.971291288737816890,	-0.971303182189773630,	-0.971315073213472440,	-0.971326961808883560,	
+-0.971338847975977250,	-0.971350731714723860,	-0.971362613025093640,	-0.971374491907056830,	-0.971386368360583790,	-0.971398242385644870,	-0.971410113982210440,	-0.971421983150250520,	
+-0.971433849889735800,	-0.971445714200636410,	-0.971457576082922710,	-0.971469435536565060,	-0.971481292561533930,	-0.971493147157799440,	-0.971504999325332190,	-0.971516849064102290,	
+-0.971528696374080350,	-0.971540541255236700,	-0.971552383707541710,	-0.971564223730965740,	-0.971576061325479130,	-0.971587896491052480,	-0.971599729227656030,	-0.971611559535260240,	
+-0.971623387413835580,	-0.971635212863352530,	-0.971647035883781320,	-0.971658856475092650,	-0.971670674637256760,	-0.971682490370244230,	-0.971694303674025320,	-0.971706114548570810,	
+-0.971717922993850960,	-0.971729729009836340,	-0.971741532596497310,	-0.971753333753804570,	-0.971765132481728470,	-0.971776928780239470,	-0.971788722649308160,	-0.971800514088905110,	
+-0.971812303099000680,	-0.971824089679565570,	-0.971835873830570240,	-0.971847655551985160,	-0.971859434843781010,	-0.971871211705928270,	-0.971882986138397520,	-0.971894758141159220,	
+-0.971906527714184070,	-0.971918294857442520,	-0.971930059570905390,	-0.971941821854543030,	-0.971953581708326130,	-0.971965339132225160,	-0.971977094126211030,	-0.971988846690253980,	
+-0.972000596824324940,	-0.972012344528394360,	-0.972024089802433040,	-0.972035832646411360,	-0.972047573060300100,	-0.972059311044069950,	-0.972071046597691610,	-0.972082779721135440,	
+-0.972094510414372560,	-0.972106238677373220,	-0.972117964510108350,	-0.972129687912548610,	-0.972141408884664600,	-0.972153127426427120,	-0.972164843537806740,	-0.972176557218774270,	
+-0.972188268469300400,	-0.972199977289355920,	-0.972211683678911420,	-0.972223387637937810,	-0.972235089166405660,	-0.972246788264285900,	-0.972258484931548980,	-0.972270179168166050,	
+-0.972281870974107450,	-0.972293560349344330,	-0.972305247293847260,	-0.972316931807587160,	-0.972328613890534600,	-0.972340293542660610,	-0.972351970763935760,	-0.972363645554331080,	
+-0.972375317913817260,	-0.972386987842365210,	-0.972398655339945630,	-0.972410320406529420,	-0.972421983042087380,	-0.972433643246590430,	-0.972445301020009370,	-0.972456956362314990,	
+-0.972468609273478330,	-0.972480259753469970,	-0.972491907802261140,	-0.972503553419822420,	-0.972515196606124950,	-0.972526837361139320,	-0.972538475684836760,	-0.972550111577187960,	
+-0.972561745038163840,	-0.972573376067735310,	-0.972585004665873500,	-0.972596630832549100,	-0.972608254567733140,	-0.972619875871396530,	-0.972631494743510180,	-0.972643111184045120,	
+-0.972654725192972250,	-0.972666336770262710,	-0.972677945915887190,	-0.972689552629816820,	-0.972701156912022640,	-0.972712758762475540,	-0.972724358181146440,	-0.972735955168006590,	
+-0.972747549723026790,	-0.972759141846178070,	-0.972770731537431540,	-0.972782318796758250,	-0.972793903624129100,	-0.972805486019515220,	-0.972817065982887530,	-0.972828643514217270,	
+-0.972840218613475360,	-0.972851791280632930,	-0.972863361515661110,	-0.972874929318530700,	-0.972886494689213070,	-0.972898057627679220,	-0.972909618133900200,	-0.972921176207847130,	
+-0.972932731849491140,	-0.972944285058803260,	-0.972955835835754730,	-0.972967384180316590,	-0.972978930092459950,	-0.972990473572156070,	-0.973002014619375970,	-0.973013553234090780,	
+-0.973025089416271750,	-0.973036623165890010,	-0.973048154482916710,	-0.973059683367323070,	-0.973071209819080130,	-0.973082733838159240,	-0.973094255424531430,	-0.973105774578168050,	
+-0.973117291299040230,	-0.973128805587119230,	-0.973140317442376060,	-0.973151826864782300,	-0.973163333854308750,	-0.973174838410927000,	-0.973186340534608170,	-0.973197840225323520,	
+-0.973209337483044170,	-0.973220832307741480,	-0.973232324699386700,	-0.973243814657951180,	-0.973255302183406170,	-0.973266787275722800,	-0.973278269934872430,	-0.973289750160826530,	
+-0.973301227953556230,	-0.973312703313032770,	-0.973324176239227620,	-0.973335646732111930,	-0.973347114791657250,	-0.973358580417834630,	-0.973370043610615740,	-0.973381504369971620,	
+-0.973392962695873830,	-0.973404418588293520,	-0.973415872047202260,	-0.973427323072571180,	-0.973438771664371980,	-0.973450217822575680,	-0.973461661547153970,	-0.973473102838078090,	
+-0.973484541695319390,	-0.973495978118849360,	-0.973507412108639450,	-0.973518843664661020,	-0.973530272786885310,	-0.973541699475284130,	-0.973553123729828500,	-0.973564545550490210,	
+-0.973575964937240410,	-0.973587381890050900,	-0.973598796408892800,	-0.973610208493737690,	-0.973621618144557170,	-0.973633025361322570,	-0.973644430144005260,	-0.973655832492577030,	
+-0.973667232407009250,	-0.973678629887273270,	-0.973690024933340780,	-0.973701417545183250,	-0.973712807722772130,	-0.973724195466079020,	-0.973735580775075380,	-0.973746963649732790,	
+-0.973758344090022820,	-0.973769722095917060,	-0.973781097667386850,	-0.973792470804404010,	-0.973803841506939990,	-0.973815209774966270,	-0.973826575608454650,	-0.973837939007376470,	
+-0.973849299971703550,	-0.973860658501407240,	-0.973872014596459450,	-0.973883368256831530,	-0.973894719482495170,	-0.973906068273422080,	-0.973917414629583810,	-0.973928758550951960,	
+-0.973940100037498200,	-0.973951439089194240,	-0.973962775706011750,	-0.973974109887922210,	-0.973985441634897420,	-0.973996770946909060,	-0.974008097823928720,	-0.974019422265928190,	
+-0.974030744272879060,	-0.974042063844753110,	-0.974053380981521940,	-0.974064695683157340,	-0.974076007949631010,	-0.974087317780914730,	-0.974098625176980090,	-0.974109930137798900,	
+-0.974121232663342830,	-0.974132532753583800,	-0.974143830408493280,	-0.974155125628043290,	-0.974166418412205530,	-0.974177708760951670,	-0.974188996674253520,	-0.974200282152082870,	
+-0.974211565194411540,	-0.974222845801211320,	-0.974234123972453900,	-0.974245399708111190,	-0.974256673008155110,	-0.974267943872557220,	-0.974279212301289550,	-0.974290478294323800,	
+-0.974301741851631880,	-0.974313002973185570,	-0.974324261658956800,	-0.974335517908917260,	-0.974346771723039070,	-0.974358023101293820,	-0.974369272043653640,	-0.974380518550090220,	
+-0.974391762620575590,	-0.974403004255081420,	-0.974414243453579740,	-0.974425480216042580,	-0.974436714542441630,	-0.974447946432748900,	-0.974459175886936310,	-0.974470402904975770,	
+-0.974481627486839310,	-0.974492849632498710,	-0.974504069341925900,	-0.974515286615093120,	-0.974526501451971950,	-0.974537713852534630,	-0.974548923816752950,	-0.974560131344598960,	
+-0.974571336436044660,	-0.974582539091062070,	-0.974593739309623120,	-0.974604937091699820,	-0.974616132437264080,	-0.974627325346288150,	-0.974638515818743830,	-0.974649703854603260,	
+-0.974660889453838440,	-0.974672072616421300,	-0.974683253342324090,	-0.974694431631518700,	-0.974705607483977170,	-0.974716780899671730,	-0.974727951878574310,	-0.974739120420656910,	
+-0.974750286525891800,	-0.974761450194250980,	-0.974772611425706590,	-0.974783770220230550,	-0.974794926577795100,	-0.974806080498372360,	-0.974817231981934480,	-0.974828381028453480,	
+-0.974839527637901490,	-0.974850671810250760,	-0.974861813545473300,	-0.974872952843541250,	-0.974884089704426860,	-0.974895224128102370,	-0.974906356114539690,	-0.974917485663711170,	
+-0.974928612775588840,	-0.974939737450145060,	-0.974950859687351960,	-0.974961979487181660,	-0.974973096849606420,	-0.974984211774598490,	-0.974995324262129870,	-0.975006434312173150,	
+-0.975017541924700250,	-0.975028647099683510,	-0.975039749837095070,	-0.975050850136907400,	-0.975061947999092520,	-0.975073043423622780,	-0.975084136410470430,	-0.975095226959607710,	
+-0.975106315071006980,	-0.975117400744640370,	-0.975128483980480350,	-0.975139564778499170,	-0.975150643138668950,	-0.975161719060962160,	-0.975172792545351160,	-0.975183863591808090,	
+-0.975194932200305400,	-0.975205998370815340,	-0.975217062103310270,	-0.975228123397762660,	-0.975239182254144630,	-0.975250238672428660,	-0.975261292652587100,	-0.975272344194592300,	
+-0.975283393298416730,	-0.975294439964032530,	-0.975305484191412390,	-0.975316525980528430,	-0.975327565331353230,	-0.975338602243859040,	-0.975349636718018330,	-0.975360668753803670,	
+-0.975371698351187200,	-0.975382725510141600,	-0.975393750230639010,	-0.975404772512652230,	-0.975415792356153390,	-0.975426809761115180,	-0.975437824727509840,	-0.975448837255309950,	
+-0.975459847344487980,	-0.975470854995016510,	-0.975481860206867780,	-0.975492862980014470,	-0.975503863314428950,	-0.975514861210083790,	-0.975525856666951460,	-0.975536849685004540,	
+-0.975547840264215370,	-0.975558828404556650,	-0.975569814106000970,	-0.975580797368520660,	-0.975591778192088420,	-0.975602756576676610,	-0.975613732522258030,	-0.975624706028805130,	
+-0.975635677096290400,	-0.975646645724686510,	-0.975657611913965940,	-0.975668575664101370,	-0.975679536975065380,	-0.975690495846830540,	-0.975701452279369550,	-0.975712406272654760,	
+-0.975723357826659090,	-0.975734306941354990,	-0.975745253616715160,	-0.975756197852712060,	-0.975767139649318600,	-0.975778079006507260,	-0.975789015924250710,	-0.975799950402521650,	
+-0.975810882441292660,	-0.975821812040536530,	-0.975832739200225840,	-0.975843663920333280,	-0.975854586200831540,	-0.975865506041693420,	-0.975876423442891380,	-0.975887338404398450,	
+-0.975898250926187090,	-0.975909161008230220,	-0.975920068650500290,	-0.975930973852970230,	-0.975941876615612710,	-0.975952776938400660,	-0.975963674821306530,	-0.975974570264303230,	
+-0.975985463267363460,	-0.975996353830460130,	-0.976007241953565920,	-0.976018127636653520,	-0.976029010879695850,	-0.976039891682665580,	-0.976050770045535750,	-0.976061645968278820,	
+-0.976072519450867810,	-0.976083390493275530,	-0.976094259095474870,	-0.976105125257438420,	-0.976115988979139200,	-0.976126850260550020,	-0.976137709101643770,	-0.976148565502393150,	
+-0.976159419462771180,	-0.976170270982750550,	-0.976181120062304400,	-0.976191966701405400,	-0.976202810900026470,	-0.976213652658140530,	-0.976224491975720370,	-0.976235328852739110,	
+-0.976246163289169470,	-0.976256995284984440,	-0.976267824840156840,	-0.976278651954659790,	-0.976289476628465990,	-0.976300298861548680,	-0.976311118653880430,	-0.976321936005434490,	
+-0.976332750916183660,	-0.976343563386101070,	-0.976354373415159400,	-0.976365181003331920,	-0.976375986150591400,	-0.976386788856910990,	-0.976397589122263600,	-0.976408386946622240,	
+-0.976419182329959830,	-0.976429975272249510,	-0.976440765773464390,	-0.976451553833577180,	-0.976462339452561110,	-0.976473122630389210,	-0.976483903367034610,	-0.976494681662470110,	
+-0.976505457516668950,	-0.976516230929604160,	-0.976527001901248750,	-0.976537770431575860,	-0.976548536520558620,	-0.976559300168169940,	-0.976570061374383070,	-0.976580820139171020,	
+-0.976591576462506940,	-0.976602330344363830,	-0.976613081784715060,	-0.976623830783533430,	-0.976634577340792290,	-0.976645321456464770,	-0.976656063130523780,	-0.976666802362942790,	
+-0.976677539153694710,	-0.976688273502752890,	-0.976699005410090250,	-0.976709734875680140,	-0.976720461899495680,	-0.976731186481510140,	-0.976741908621696520,	-0.976752628320028290,	
+-0.976763345576478370,	-0.976774060391020100,	-0.976784772763626740,	-0.976795482694271410,	-0.976806190182927250,	-0.976816895229567830,	-0.976827597834166060,	-0.976838297996695300,	
+-0.976848995717128800,	-0.976859690995439790,	-0.976870383831601630,	-0.976881074225587450,	-0.976891762177370620,	-0.976902447686924250,	-0.976913130754221930,	-0.976923811379236670,	
+-0.976934489561941950,	-0.976945165302311010,	-0.976955838600317210,	-0.976966509455933660,	-0.976977177869133960,	-0.976987843839891230,	-0.976998507368178950,	-0.977009168453970340,	
+-0.977019827097238890,	-0.977030483297957830,	-0.977041137056100630,	-0.977051788371640530,	-0.977062437244551000,	-0.977073083674805280,	-0.977083727662376940,	-0.977094369207239240,	
+-0.977105008309365640,	-0.977115644968729490,	-0.977126279185304260,	-0.977136910959063300,	-0.977147540289980080,	-0.977158167178028060,	-0.977168791623180490,	-0.977179413625411050,	
+-0.977190033184693110,	-0.977200650301000010,	-0.977211264974305330,	-0.977221877204582420,	-0.977232486991804870,	-0.977243094335946140,	-0.977253699236979580,	-0.977264301694878880,	
+-0.977274901709617280,	-0.977285499281168590,	-0.977296094409506040,	-0.977306687094603330,	-0.977317277336433810,	-0.977327865134971160,	-0.977338450490188860,	-0.977349033402060360,	
+-0.977359613870559360,	-0.977370191895659320,	-0.977380767477333710,	-0.977391340615556330,	-0.977401911310300520,	-0.977412479561539870,	-0.977423045369248070,	-0.977433608733398680,	
+-0.977444169653965300,	-0.977454728130921380,	-0.977465284164240720,	-0.977475837753896790,	-0.977486388899863390,	-0.977496937602113980,	-0.977507483860622140,	-0.977518027675361670,	
+-0.977528569046306140,	-0.977539107973429130,	-0.977549644456704340,	-0.977560178496105550,	-0.977570710091606120,	-0.977581239243180080,	-0.977591765950800880,	-0.977602290214442340,	
+-0.977612812034078020,	-0.977623331409681610,	-0.977633848341226910,	-0.977644362828687610,	-0.977654874872037390,	-0.977665384471250070,	-0.977675891626299200,	-0.977686396337158590,	
+-0.977696898603802040,	-0.977707398426203240,	-0.977717895804335880,	-0.977728390738173860,	-0.977738883227690870,	-0.977749373272860600,	-0.977759860873656960,	-0.977770346030053530,	
+-0.977780828742024430,	-0.977791309009543140,	-0.977801786832583560,	-0.977812262211119610,	-0.977822735145124970,	-0.977833205634573430,	-0.977843673679438920,	-0.977854139279695220,	
+-0.977864602435316250,	-0.977875063146275700,	-0.977885521412547480,	-0.977895977234105480,	-0.977906430610923530,	-0.977916881542975510,	-0.977927330030235350,	-0.977937776072676730,	
+-0.977948219670273790,	-0.977958660823000200,	-0.977969099530830000,	-0.977979535793737090,	-0.977989969611695380,	-0.978000400984678660,	-0.978010829912660860,	-0.978021256395616210,	
+-0.978031680433518180,	-0.978042102026341120,	-0.978052521174058720,	-0.978062937876645110,	-0.978073352134074090,	-0.978083763946319680,	-0.978094173313355800,	-0.978104580235156670,	
+-0.978114984711695890,	-0.978125386742947800,	-0.978135786328886090,	-0.978146183469485120,	-0.978156578164718570,	-0.978166970414560580,	-0.978177360218985160,	-0.978187747577966340,	
+-0.978198132491478130,	-0.978208514959494680,	-0.978218894981989880,	-0.978229272558937770,	-0.978239647690312570,	-0.978250020376088210,	-0.978260390616238930,	-0.978270758410738520,	
+-0.978281123759561220,	-0.978291486662681180,	-0.978301847120072400,	-0.978312205131709020,	-0.978322560697565070,	-0.978332913817614780,	-0.978343264491832180,	-0.978353612720191500,	
+-0.978363958502666660,	-0.978374301839232020,	-0.978384642729861590,	-0.978394981174529500,	-0.978405317173210000,	-0.978415650725877220,	-0.978425981832505290,	-0.978436310493068450,	
+-0.978446636707540840,	-0.978456960475896590,	-0.978467281798109930,	-0.978477600674155120,	-0.978487917104006180,	-0.978498231087637560,	-0.978508542625023400,	-0.978518851716137840,	
+-0.978529158360955110,	-0.978539462559449570,	-0.978549764311595240,	-0.978560063617366580,	-0.978570360476737840,	-0.978580654889683150,	-0.978590946856176760,	-0.978601236376193010,	
+-0.978611523449706260,	-0.978621808076690640,	-0.978632090257120500,	-0.978642369990970100,	-0.978652647278213880,	-0.978662922118825880,	-0.978673194512780680,	-0.978683464460052500,	
+-0.978693731960615710,	-0.978703997014444440,	-0.978714259621513260,	-0.978724519781796420,	-0.978734777495268380,	-0.978745032761903280,	-0.978755285581675570,	-0.978765535954559730,	
+-0.978775783880530100,	-0.978786029359560940,	-0.978796272391626700,	-0.978806512976701740,	-0.978816751114760520,	-0.978826986805777510,	-0.978837220049726950,	-0.978847450846583310,	
+-0.978857679196321160,	-0.978867905098914750,	-0.978878128554338530,	-0.978888349562566980,	-0.978898568123574670,	-0.978908784237335850,	-0.978918997903825080,	-0.978929209123016840,	
+-0.978939417894885590,	-0.978949624219405790,	-0.978959828096551910,	-0.978970029526298520,	-0.978980228508619990,	-0.978990425043490880,	-0.979000619130885760,	-0.979010810770779010,	
+-0.979020999963145290,	-0.979031186707959080,	-0.979041371005194950,	-0.979051552854827260,	-0.979061732256830800,	-0.979071909211179920,	-0.979082083717849330,	-0.979092255776813580,	
+-0.979102425388047150,	-0.979112592551524610,	-0.979122757267220640,	-0.979132919535109720,	-0.979143079355166530,	-0.979153236727365650,	-0.979163391651681760,	-0.979173544128089320,	
+-0.979183694156562920,	-0.979193841737077460,	-0.979203986869607300,	-0.979214129554127120,	-0.979224269790611720,	-0.979234407579035570,	-0.979244542919373460,	-0.979254675811599970,	
+-0.979264806255689790,	-0.979274934251617600,	-0.979285059799358090,	-0.979295182898885950,	-0.979305303550175750,	-0.979315421753202410,	-0.979325537507940380,	-0.979335650814364690,	
+-0.979345761672449690,	-0.979355870082170400,	-0.979365976043501400,	-0.979376079556417480,	-0.979386180620893440,	-0.979396279236903760,	-0.979406375404423550,	-0.979416469123427280,	
+-0.979426560393889870,	-0.979436649215786100,	-0.979446735589090680,	-0.979456819513778500,	-0.979466900989824140,	-0.979476980017202630,	-0.979487056595888640,	-0.979497130725856980,	
+-0.979507202407082560,	-0.979517271639540050,	-0.979527338423204390,	-0.979537402758050350,	-0.979547464644052850,	-0.979557524081186680,	-0.979567581069426760,	-0.979577635608747780,	
+-0.979587687699124740,	-0.979597737340532570,	-0.979607784532945950,	-0.979617829276340000,	-0.979627871570689310,	-0.979637911415969010,	-0.979647948812154000,	-0.979657983759219090,	
+-0.979668016257139170,	-0.979678046305889170,	-0.979688073905444100,	-0.979698099055778870,	-0.979708121756868390,	-0.979718142008687680,	-0.979728159811211530,	-0.979738175164414970,	
+-0.979748188068273020,	-0.979758198522760580,	-0.979768206527852570,	-0.979778212083524110,	-0.979788215189750120,	-0.979798215846505620,	-0.979808214053765610,	-0.979818209811504910,	
+-0.979828203119698870,	-0.979838193978322170,	-0.979848182387350050,	-0.979858168346757540,	-0.979868151856519540,	-0.979878132916611080,	-0.979888111527007500,	-0.979898087687683490,	
+-0.979908061398614310,	-0.979918032659774840,	-0.979928001471140450,	-0.979937967832686050,	-0.979947931744386660,	-0.979957893206217510,	-0.979967852218153520,	-0.979977808780170050,	
+-0.979987762892241990,	-0.979997714554344480,	-0.980007663766452760,	-0.980017610528541860,	-0.980027554840586900,	-0.980037496702563020,	-0.980047436114445450,	-0.980057373076209330,	
+-0.980067307587829670,	-0.980077239649281840,	-0.980087169260540850,	-0.980097096421581940,	-0.980107021132380350,	-0.980116943392911220,	-0.980126863203149570,	-0.980136780563070960,	
+-0.980146695472650320,	-0.980156607931862880,	-0.980166517940683990,	-0.980176425499088790,	-0.980186330607052510,	-0.980196233264550410,	-0.980206133471557830,	-0.980216031228049790,	
+-0.980225926534001760,	-0.980235819389388750,	-0.980245709794186350,	-0.980255597748369680,	-0.980265483251913980,	-0.980275366304794500,	-0.980285246906986710,	-0.980295125058465720,	
+-0.980305000759207010,	-0.980314874009185710,	-0.980324744808377280,	-0.980334613156756960,	-0.980344479054300110,	-0.980354342500982080,	-0.980364203496778220,	-0.980374062041663770,	
+-0.980383918135614210,	-0.980393771778604870,	-0.980403622970611120,	-0.980413471711608200,	-0.980423318001571680,	-0.980433161840476910,	-0.980443003228299140,	-0.980452842165013940,	
+-0.980462678650596660,	-0.980472512685022670,	-0.980482344268267300,	-0.980492173400306140,	-0.980502000081114540,	-0.980511824310667970,	-0.980521646088941770,	-0.980531465415911520,	
+-0.980541282291552570,	-0.980551096715840400,	-0.980560908688750570,	-0.980570718210258430,	-0.980580525280339450,	-0.980590329898969220,	-0.980600132066123060,	-0.980609931781776690,	
+-0.980619729045905440,	-0.980629523858484900,	-0.980639316219490520,	-0.980649106128897770,	-0.980658893586682350,	-0.980668678592819700,	-0.980678461147285410,	-0.980688241250054830,	
+-0.980698018901103750,	-0.980707794100407540,	-0.980717566847941870,	-0.980727337143682320,	-0.980737104987604470,	-0.980746870379683780,	-0.980756633319895930,	-0.980766393808216510,	
+-0.980776151844621080,	-0.980785907429085340,	-0.980795660561584740,	-0.980805411242095080,	-0.980815159470591840,	-0.980824905247050680,	-0.980834648571447310,	-0.980844389443757290,	
+-0.980854127863956200,	-0.980863863832019960,	-0.980873597347924010,	-0.980883328411644050,	-0.980893057023155770,	-0.980902783182434850,	-0.980912506889456860,	-0.980922228144197830,	
+-0.980931946946632990,	-0.980941663296738490,	-0.980951377194489660,	-0.980961088639862530,	-0.980970797632832570,	-0.980980504173375790,	-0.980990208261467540,	-0.980999909897083850,	
+-0.981009609080200410,	-0.981019305810793000,	-0.981029000088837200,	-0.981038691914308920,	-0.981048381287183970,	-0.981058068207438130,	-0.981067752675046980,	-0.981077434689986540,	
+-0.981087114252232500,	-0.981096791361760650,	-0.981106466018546790,	-0.981116138222566820,	-0.981125807973796450,	-0.981135475272211570,	-0.981145140117788080,	-0.981154802510501690,	
+-0.981164462450328290,	-0.981174119937243790,	-0.981183774971223890,	-0.981193427552244590,	-0.981203077680281700,	-0.981212725355311230,	-0.981222370577308880,	-0.981232013346250540,	
+-0.981241653662112250,	-0.981251291524869780,	-0.981260926934499070,	-0.981270559890976110,	-0.981280190394276720,	-0.981289818444376790,	-0.981299444041252360,	-0.981309067184879420,	
+-0.981318687875233690,	-0.981328306112291270,	-0.981337921896028090,	-0.981347535226420040,	-0.981357146103443270,	-0.981366754527073560,	-0.981376360497287050,	-0.981385964014059530,	
+-0.981395565077367140,	-0.981405163687185890,	-0.981414759843491690,	-0.981424353546260560,	-0.981433944795468530,	-0.981443533591091710,	-0.981453119933106020,	-0.981462703821487590,	
+-0.981472285256212330,	-0.981481864237256360,	-0.981491440764595710,	-0.981501014838206510,	-0.981510586458064770,	-0.981520155624146520,	-0.981529722336427990,	-0.981539286594884990,	
+-0.981548848399493970,	-0.981558407750230730,	-0.981567964647071410,	-0.981577519089992250,	-0.981587071078969250,	-0.981596620613978570,	-0.981606167694996420,	-0.981615712321998850,	
+-0.981625254494961850,	-0.981634794213861910,	-0.981644331478674800,	-0.981653866289377010,	-0.981663398645944430,	-0.981672928548353420,	-0.981682455996580110,	-0.981691980990600620,	
+-0.981701503530391210,	-0.981711023615927990,	-0.981720541247187330,	-0.981730056424145240,	-0.981739569146777960,	-0.981749079415061840,	-0.981758587228973020,	-0.981768092588487630,	
+-0.981777595493582120,	-0.981787095944232520,	-0.981796593940415300,	-0.981806089482106460,	-0.981815582569282470,	-0.981825073201919580,	-0.981834561379993920,	-0.981844047103481940,	
+-0.981853530372359780,	-0.981863011186603800,	-0.981872489546190330,	-0.981881965451095520,	-0.981891438901295930,	-0.981900909896767700,	-0.981910378437487190,	-0.981919844523430730,	
+-0.981929308154574690,	-0.981938769330895410,	-0.981948228052369140,	-0.981957684318972230,	-0.981967138130681260,	-0.981976589487472350,	-0.981986038389321970,	-0.981995484836206580,	
+-0.982004928828102420,	-0.982014370364985960,	-0.982023809446833430,	-0.982033246073621520,	-0.982042680245326480,	-0.982052111961924770,	-0.982061541223392730,	-0.982070968029706840,	
+-0.982080392380843550,	-0.982089814276779330,	-0.982099233717490420,	-0.982108650702953610,	-0.982118065233145040,	-0.982127477308041400,	-0.982136886927619020,	-0.982146294091854390,	
+-0.982155698800724060,	-0.982165101054204510,	-0.982174500852272200,	-0.982183898194903590,	-0.982193293082075260,	-0.982202685513763660,	-0.982212075489945490,	-0.982221463010596980,	
+-0.982230848075694830,	-0.982240230685215600,	-0.982249610839135870,	-0.982258988537431990,	-0.982268363780080640,	-0.982277736567058410,	-0.982287106898341870,	-0.982296474773907580,	
+-0.982305840193732020,	-0.982315203157791970,	-0.982324563666063800,	-0.982333921718524290,	-0.982343277315149920,	-0.982352630455917470,	-0.982361981140803310,	-0.982371329369784330,	
+-0.982380675142836890,	-0.982390018459937900,	-0.982399359321063700,	-0.982408697726191220,	-0.982418033675297010,	-0.982427367168357660,	-0.982436698205349850,	-0.982446026786250370,	
+-0.982455352911035810,	-0.982464676579682950,	-0.982473997792168260,	-0.982483316548468650,	-0.982492632848560700,	-0.982501946692421190,	-0.982511258080026820,	-0.982520567011354370,	
+-0.982529873486380430,	-0.982539177505081800,	-0.982548479067435250,	-0.982557778173417500,	-0.982567074823005320,	-0.982576369016175400,	-0.982585660752904650,	-0.982594950033169660,	
+-0.982604236856947310,	-0.982613521224214410,	-0.982622803134947650,	-0.982632082589123930,	-0.982641359586719940,	-0.982650634127712590,	-0.982659906212078770,	-0.982669175839794960,	
+-0.982678443010838400,	-0.982687707725185660,	-0.982696969982813640,	-0.982706229783699260,	-0.982715487127819200,	-0.982724742015150590,	-0.982733994445669890,	-0.982743244419354460,	
+-0.982752491936180750,	-0.982761736996125790,	-0.982770979599166590,	-0.982780219745279850,	-0.982789457434442680,	-0.982798692666631780,	-0.982807925441824160,	-0.982817155759996730,	
+-0.982826383621126400,	-0.982835609025190180,	-0.982844831972164880,	-0.982854052462027510,	-0.982863270494754970,	-0.982872486070324290,	-0.982881699188712380,	-0.982890909849896240,	
+-0.982900118053852800,	-0.982909323800559060,	-0.982918527089992170,	-0.982927727922128790,	-0.982936926296946070,	-0.982946122214421130,	-0.982955315674530870,	-0.982964506677252330,	
+-0.982973695222562500,	-0.982982881310438430,	-0.982992064940857110,	-0.983001246113795690,	-0.983010424829231180,	-0.983019601087140480,	-0.983028774887500960,	-0.983037946230289390,	
+-0.983047115115482930,	-0.983056281543058690,	-0.983065445512993800,	-0.983074607025265390,	-0.983083766079850260,	-0.983092922676725880,	-0.983102076815869030,	-0.983111228497257180,	
+-0.983120377720867130,	-0.983129524486676120,	-0.983138668794661390,	-0.983147810644799950,	-0.983156950037068930,	-0.983166086971445590,	-0.983175221447907030,	-0.983184353466430410,	
+-0.983193483026992940,	-0.983202610129571770,	-0.983211734774144030,	-0.983220856960686950,	-0.983229976689177660,	-0.983239093959593520,	-0.983248208771911660,	-0.983257321126109310,	
+-0.983266431022163600,	-0.983275538460051780,	-0.983284643439751190,	-0.983293745961238860,	-0.983302846024492360,	-0.983311943629488590,	-0.983321038776205030,	-0.983330131464618780,	
+-0.983339221694707330,	-0.983348309466447800,	-0.983357394779817430,	-0.983366477634793680,	-0.983375558031353680,	-0.983384635969474670,	-0.983393711449134230,	-0.983402784470309490,	
+-0.983411855032977790,	-0.983420923137116380,	-0.983429988782702710,	-0.983439051969714040,	-0.983448112698127820,	-0.983457170967921290,	-0.983466226779071690,	-0.983475280131556720,	
+-0.983484331025353490,	-0.983493379460439350,	-0.983502425436791780,	-0.983511468954388230,	-0.983520510013205950,	-0.983529548613222500,	-0.983538584754415020,	-0.983547618436761200,	
+-0.983556649660238260,	-0.983565678424823790,	-0.983574704730495020,	-0.983583728577229530,	-0.983592749965004680,	-0.983601768893798020,	-0.983610785363586930,	-0.983619799374348850,	
+-0.983628810926061250,	-0.983637820018701700,	-0.983646826652247560,	-0.983655830826676290,	-0.983664832541965460,	-0.983673831798092650,	-0.983682828595035200,	-0.983691822932770690,	
+-0.983700814811276580,	-0.983709804230530450,	-0.983718791190509870,	-0.983727775691192190,	-0.983736757732555200,	-0.983745737314576260,	-0.983754714437232950,	-0.983763689100502940,	
+-0.983772661304363690,	-0.983781631048792680,	-0.983790598333767700,	-0.983799563159266200,	-0.983808525525265760,	-0.983817485431744080,	-0.983826442878678600,	-0.983835397866047010,	
+-0.983844350393827010,	-0.983853300461996040,	-0.983862248070531910,	-0.983871193219412080,	-0.983880135908614340,	-0.983889076138116270,	-0.983898013907895440,	-0.983906949217929540,	
+-0.983915882068196360,	-0.983924812458673470,	-0.983933740389338450,	-0.983942665860169210,	-0.983951588871143200,	-0.983960509422238340,	-0.983969427513432080,	-0.983978343144702340,	
+-0.983987256316026790,	-0.983996167027382910,	-0.984005075278748810,	-0.984013981070101850,	-0.984022884401420050,	-0.984031785272680980,	-0.984040683683862550,	-0.984049579634942330,	
+-0.984058473125898230,	-0.984067364156707810,	-0.984076252727349110,	-0.984085138837799690,	-0.984094022488037460,	-0.984102903678040210,	-0.984111782407785630,	-0.984120658677251630,	
+-0.984129532486415990,	-0.984138403835256530,	-0.984147272723751020,	-0.984156139151877380,	-0.984165003119613410,	-0.984173864626936900,	-0.984182723673825640,	-0.984191580260257660,	
+-0.984200434386210740,	-0.984209286051662690,	-0.984218135256591520,	-0.984226982000974910,	-0.984235826284790890,	-0.984244668108017250,	-0.984253507470632010,	-0.984262344372612950,	
+-0.984271178813938110,	-0.984280010794585270,	-0.984288840314532340,	-0.984297667373757460,	-0.984306491972238300,	-0.984315314109952880,	-0.984324133786879220,	-0.984332951002995230,	
+-0.984341765758278920,	-0.984350578052708090,	-0.984359387886260980,	-0.984368195258915280,	-0.984377000170649110,	-0.984385802621440380,	-0.984394602611267210,	-0.984403400140107520,	
+-0.984412195207939320,	-0.984420987814740630,	-0.984429777960489470,	-0.984438565645163850,	-0.984447350868741910,	-0.984456133631201550,	-0.984464913932520780,	-0.984473691772677850,	
+-0.984482467151650550,	-0.984491240069417240,	-0.984500010525955700,	-0.984508778521244190,	-0.984517544055260710,	-0.984526307127983390,	-0.984535067739390370,	-0.984543825889459550,	
+-0.984552581578169270,	-0.984561334805497460,	-0.984570085571422340,	-0.984578833875922040,	-0.984587579718974590,	-0.984596323100558220,	-0.984605064020651070,	-0.984613802479231250,	
+-0.984622538476276900,	-0.984631272011766260,	-0.984640003085677340,	-0.984648731697988500,	-0.984657457848677750,	-0.984666181537723450,	-0.984674902765103720,	-0.984683621530796580,	
+-0.984692337834780610,	-0.984701051677033590,	-0.984709763057533990,	-0.984718471976260060,	-0.984727178433189910,	-0.984735882428301790,	-0.984744583961573940,	-0.984753283032984710,	
+-0.984761979642512220,	-0.984770673790134720,	-0.984779365475830670,	-0.984788054699578090,	-0.984796741461355540,	-0.984805425761140940,	-0.984814107598912860,	-0.984822786974649530,	
+-0.984831463888329210,	-0.984840138339930230,	-0.984848810329430950,	-0.984857479856809600,	-0.984866146922044550,	-0.984874811525114140,	-0.984883473665996710,	-0.984892133344670630,	
+-0.984900790561114130,	-0.984909445315305780,	-0.984918097607223710,	-0.984926747436846380,	-0.984935394804152260,	-0.984944039709119590,	-0.984952682151726820,	-0.984961322131952420,	
+-0.984969959649774630,	-0.984978594705172020,	-0.984987227298122820,	-0.984995857428605740,	-0.985004485096598770,	-0.985013110302080830,	-0.985021733045029930,	-0.985030353325424770,	
+-0.985038971143243790,	-0.985047586498465240,	-0.985056199391067810,	-0.985064809821029840,	-0.985073417788329910,	-0.985082023292946360,	-0.985090626334857890,	-0.985099226914042720,	
+-0.985107825030479560,	-0.985116420684146730,	-0.985125013875022940,	-0.985133604603086630,	-0.985142192868316280,	-0.985150778670690450,	-0.985159362010187610,	-0.985167942886786440,	
+-0.985176521300465400,	-0.985185097251203070,	-0.985193670738978010,	-0.985202241763768690,	-0.985210810325553910,	-0.985219376424312010,	-0.985227940060021680,	-0.985236501232661490,	
+-0.985245059942210010,	-0.985253616188645930,	-0.985262169971947820,	-0.985270721292094250,	-0.985279270149063910,	-0.985287816542835370,	-0.985296360473387310,	-0.985304901940698310,	
+-0.985313440944747040,	-0.985321977485512310,	-0.985330511562972470,	-0.985339043177106520,	-0.985347572327892830,	-0.985356099015310180,	-0.985364623239337380,	-0.985373144999952990,	
+-0.985381664297135810,	-0.985390181130864300,	-0.985398695501117470,	-0.985407207407873910,	-0.985415716851112290,	-0.985424223830811300,	-0.985432728346949840,	-0.985441230399506600,	
+-0.985449729988460250,	-0.985458227113789500,	-0.985466721775473230,	-0.985475213973490140,	-0.985483703707819130,	-0.985492190978438760,	-0.985500675785327960,	-0.985509158128465400,	
+-0.985517638007829990,	-0.985526115423400410,	-0.985534590375155670,	-0.985543062863074360,	-0.985551532887135480,	-0.985560000447317730,	-0.985568465543599890,	-0.985576928175960990,	
+-0.985585388344379810,	-0.985593846048835040,	-0.985602301289305700,	-0.985610754065770590,	-0.985619204378208600,	-0.985627652226598650,	-0.985636097610919530,	-0.985644540531150250,	
+-0.985652980987269500,	-0.985661418979256410,	-0.985669854507089660,	-0.985678287570748380,	-0.985686718170211250,	-0.985695146305457400,	-0.985703571976465630,	-0.985711995183215060,	
+-0.985720415925684380,	-0.985728834203852710,	-0.985737250017698960,	-0.985745663367202150,	-0.985754074252341070,	-0.985762482673094850,	-0.985770888629442400,	-0.985779292121362730,	
+-0.985787693148834850,	-0.985796091711837800,	-0.985804487810350460,	-0.985812881444351860,	-0.985821272613821130,	-0.985829661318737170,	-0.985838047559079000,	-0.985846431334825860,	
+-0.985854812645956540,	-0.985863191492450160,	-0.985871567874285870,	-0.985879941791442670,	-0.985888313243899580,	-0.985896682231635730,	-0.985905048754630140,	-0.985913412812862040,	
+-0.985921774406310240,	-0.985930133534954070,	-0.985938490198772670,	-0.985946844397744940,	-0.985955196131850120,	-0.985963545401067230,	-0.985971892205375620,	-0.985980236544754200,	
+-0.985988578419182190,	-0.985996917828638740,	-0.986005254773102970,	-0.986013589252554110,	-0.986021921266971300,	-0.986030250816333660,	-0.986038577900620330,	-0.986046902519810640,	
+-0.986055224673883620,	-0.986063544362818620,	-0.986071861586594770,	-0.986080176345191180,	-0.986088488638587220,	-0.986096798466762010,	-0.986105105829694790,	-0.986113410727364800,	
+-0.986121713159751280,	-0.986130013126833570,	-0.986138310628590700,	-0.986146605665002120,	-0.986154898236047070,	-0.986163188341704690,	-0.986171475981954430,	-0.986179761156775300,	
+-0.986188043866147000,	-0.986196324110048430,	-0.986204601888459150,	-0.986212877201358310,	-0.986221150048725240,	-0.986229420430539410,	-0.986237688346779940,	-0.986245953797426300,	
+-0.986254216782457730,	-0.986262477301853570,	-0.986270735355593290,	-0.986278990943656230,	-0.986287244066021530,	-0.986295494722668860,	-0.986303742913577360,	-0.986311988638726600,	
+-0.986320231898095810,	-0.986328472691664460,	-0.986336711019411890,	-0.986344946881317690,	-0.986353180277360960,	-0.986361411207521300,	-0.986369639671778150,	-0.986377865670110880,	
+-0.986386089202498930,	-0.986394310268921880,	-0.986402528869358970,	-0.986410745003789670,	-0.986418958672193540,	-0.986427169874550040,	-0.986435378610838630,	-0.986443584881038780,	
+-0.986451788685129950,	-0.986459990023091590,	-0.986468188894903400,	-0.986476385300544600,	-0.986484579239994890,	-0.986492770713233710,	-0.986500959720240660,	-0.986509146260995170,	
+-0.986517330335476840,	-0.986525511943665110,	-0.986533691085539680,	-0.986541867761079990,	-0.986550041970265750,	-0.986558213713076280,	-0.986566382989491290,	-0.986574549799490330,	
+-0.986582714143052990,	-0.986590876020158940,	-0.986599035430787640,	-0.986607192374918780,	-0.986615346852531830,	-0.986623498863606670,	-0.986631648408122670,	-0.986639795486059620,	
+-0.986647940097396980,	-0.986656082242114540,	-0.986664221920191880,	-0.986672359131608670,	-0.986680493876344600,	-0.986688626154379360,	-0.986696755965692400,	-0.986704883310263630,	
+-0.986713008188072620,	-0.986721130599099160,	-0.986729250543322830,	-0.986737368020723320,	-0.986745483031280510,	-0.986753595574973890,	-0.986761705651783340,	-0.986769813261688440,	
+-0.986777918404669110,	-0.986786021080704900,	-0.986794121289775730,	-0.986802219031861160,	-0.986810314306941220,	-0.986818407114995240,	-0.986826497456003480,	-0.986834585329945280,	
+-0.986842670736800760,	-0.986850753676549510,	-0.986858834149171420,	-0.986866912154646170,	-0.986874987692953680,	-0.986883060764073620,	-0.986891131367986010,	-0.986899199504670640,	
+-0.986907265174107210,	-0.986915328376275600,	-0.986923389111155620,	-0.986931447378727290,	-0.986939503178970170,	-0.986947556511864500,	-0.986955607377389740,	-0.986963655775526140,	
+-0.986971701706253260,	-0.986979745169551230,	-0.986987786165399730,	-0.986995824693778890,	-0.987003860754668390,	-0.987011894348048260,	-0.987019925473898390,	-0.987027954132198790,	
+-0.987035980322929160,	-0.987044004046069730,	-0.987052025301600190,	-0.987060044089500650,	-0.987068060409750920,	-0.987076074262331130,	-0.987084085647221050,	-0.987092094564400830,	
+-0.987100101013850370,	-0.987108104995549680,	-0.987116106509478670,	-0.987124105555617360,	-0.987132102133945870,	-0.987140096244444100,	-0.987148087887092180,	-0.987156077061869920,	
+-0.987164063768757540,	-0.987172048007734950,	-0.987180029778782280,	-0.987188009081879430,	-0.987195985917006640,	-0.987203960284143920,	-0.987211932183271300,	-0.987219901614368790,	
+-0.987227868577416510,	-0.987235833072394600,	-0.987243795099283170,	-0.987251754658062140,	-0.987259711748711740,	-0.987267666371212100,	-0.987275618525543350,	-0.987283568211685500,	
+-0.987291515429618680,	-0.987299460179323130,	-0.987307402460778860,	-0.987315342273966220,	-0.987323279618865120,	-0.987331214495455800,	-0.987339146903718490,	-0.987347076843633320,	
+-0.987355004315180420,	-0.987362929318340130,	-0.987370851853092370,	-0.987378771919417590,	-0.987386689517295800,	-0.987394604646707360,	-0.987402517307632400,	-0.987410427500051040,	
+-0.987418335223943730,	-0.987426240479290510,	-0.987434143266071710,	-0.987442043584267570,	-0.987449941433858340,	-0.987457836814824130,	-0.987465729727145520,	-0.987473620170802420,	
+-0.987481508145775400,	-0.987489393652044580,	-0.987497276689590200,	-0.987505157258392720,	-0.987513035358432270,	-0.987520910989689300,	-0.987528784152143960,	-0.987536654845776800,	
+-0.987544523070567840,	-0.987552388826497650,	-0.987560252113546590,	-0.987568112931694770,	-0.987575971280922670,	-0.987583827161210740,	-0.987591680572539100,	-0.987599531514888330,	
+-0.987607379988238780,	-0.987615225992570790,	-0.987623069527864610,	-0.987630910594100910,	-0.987638749191259820,	-0.987646585319321920,	-0.987654418978267450,	-0.987662250168077070,	
+-0.987670078888730930,	-0.987677905140209700,	-0.987685728922493730,	-0.987693550235563380,	-0.987701369079399210,	-0.987709185453981560,	-0.987716999359290910,	-0.987724810795307830,	
+-0.987732619762012650,	-0.987740426259385960,	-0.987748230287408320,	-0.987756031846059980,	-0.987763830935321610,	-0.987771627555173560,	-0.987779421705596520,	-0.987787213386570940,	
+-0.987795002598077290,	-0.987802789340096240,	-0.987810573612608160,	-0.987818355415593600,	-0.987826134749033140,	-0.987833911612907340,	-0.987841686007196800,	-0.987849457931882060,	
+-0.987857227386943700,	-0.987864994372362190,	-0.987872758888118210,	-0.987880520934192430,	-0.987888280510565210,	-0.987896037617217450,	-0.987903792254129390,	-0.987911544421282040,	
+-0.987919294118655760,	-0.987927041346231220,	-0.987934786103989100,	-0.987942528391909990,	-0.987950268209974560,	-0.987958005558163490,	-0.987965740436457350,	-0.987973472844836940,	
+-0.987981202783282830,	-0.987988930251775700,	-0.987996655250296230,	-0.988004377778825100,	-0.988012097837343120,	-0.988019815425830840,	-0.988027530544269060,	-0.988035243192638360,	
+-0.988042953370919630,	-0.988050661079093450,	-0.988058366317140720,	-0.988066069085042020,	-0.988073769382778130,	-0.988081467210329740,	-0.988089162567677870,	-0.988096855454802970,	
+-0.988104545871685950,	-0.988112233818307590,	-0.988119919294648600,	-0.988127602300689860,	-0.988135282836412050,	-0.988142960901796100,	-0.988150636496822780,	-0.988158309621472770,	
+-0.988165980275727110,	-0.988173648459566350,	-0.988181314172971610,	-0.988188977415923490,	-0.988196638188402980,	-0.988204296490390880,	-0.988211952321867980,	-0.988219605682815190,	
+-0.988227256573213420,	-0.988234904993043560,	-0.988242550942286300,	-0.988250194420922770,	-0.988257835428933750,	-0.988265473966300160,	-0.988273110033002890,	-0.988280743629022850,	
+-0.988288374754340840,	-0.988296003408937970,	-0.988303629592795050,	-0.988311253305893200,	-0.988318874548213100,	-0.988326493319735770,	-0.988334109620442320,	-0.988341723450313570,	
+-0.988349334809330400,	-0.988356943697473960,	-0.988364550114725240,	-0.988372154061065040,	-0.988379755536474500,	-0.988387354540934630,	-0.988394951074426320,	-0.988402545136930600,	
+-0.988410136728428590,	-0.988417725848901200,	-0.988425312498329430,	-0.988432896676694430,	-0.988440478383977190,	-0.988448057620158750,	-0.988455634385220220,	-0.988463208679142610,	
+-0.988470780501906840,	-0.988478349853494250,	-0.988485916733885750,	-0.988493481143062460,	-0.988501043081005500,	-0.988508602547695900,	-0.988516159543114780,	-0.988523714067243260,	
+-0.988531266120062480,	-0.988538815701553550,	-0.988546362811697500,	-0.988553907450475670,	-0.988561449617868960,	-0.988568989313858610,	-0.988576526538425870,	-0.988584061291551850,	
+-0.988591593573217580,	-0.988599123383404390,	-0.988606650722093310,	-0.988614175589265680,	-0.988621697984902630,	-0.988629217908985280,	-0.988636735361494880,	-0.988644250342412660,	
+-0.988651762851719850,	-0.988659272889397590,	-0.988666780455427110,	-0.988674285549789760,	-0.988681788172466660,	-0.988689288323439050,	-0.988696786002688290,	-0.988704281210195600,	
+-0.988711773945942120,	-0.988719264209909190,	-0.988726752002078160,	-0.988734237322430260,	-0.988741720170946750,	-0.988749200547608950,	-0.988756678452398120,	-0.988764153885295590,	
+-0.988771626846282730,	-0.988779097335340750,	-0.988786565352451020,	-0.988794030897594880,	-0.988801493970753680,	-0.988808954571908760,	-0.988816412701041480,	-0.988823868358133070,	
+-0.988831321543165110,	-0.988838772256118710,	-0.988846220496975460,	-0.988853666265716690,	-0.988861109562323760,	-0.988868550386778010,	-0.988875988739060910,	-0.988883424619153790,	
+-0.988890858027038130,	-0.988898288962695380,	-0.988905717426106780,	-0.988913143417254000,	-0.988920566936118410,	-0.988927987982681220,	-0.988935406556924250,	-0.988942822658828600,	
+-0.988950236288375970,	-0.988957647445547820,	-0.988965056130325480,	-0.988972462342690430,	-0.988979866082624340,	-0.988987267350108560,	-0.988994666145124550,	-0.989002062467653990,	
+-0.989009456317678230,	-0.989016847695178720,	-0.989024236600137270,	-0.989031623032535110,	-0.989039006992353920,	-0.989046388479575160,	-0.989053767494180500,	-0.989061144036151420,	
+-0.989068518105469470,	-0.989075889702116240,	-0.989083258826073290,	-0.989090625477322180,	-0.989097989655844390,	-0.989105351361621810,	-0.989112710594635790,	-0.989120067354867900,	
+-0.989127421642299940,	-0.989134773456913470,	-0.989142122798689960,	-0.989149469667611190,	-0.989156814063658740,	-0.989164155986814290,	-0.989171495437059400,	-0.989178832414375760,	
+-0.989186166918745060,	-0.989193498950148960,	-0.989200828508569160,	-0.989208155593987230,	-0.989215480206384950,	-0.989222802345743890,	-0.989230122012045850,	-0.989237439205272520,	
+-0.989244753925405670,	-0.989252066172426780,	-0.989259375946317850,	-0.989266683247060460,	-0.989273988074636400,	-0.989281290429027240,	-0.989288590310214990,	-0.989295887718181110,	
+-0.989303182652907620,	-0.989310475114376200,	-0.989317765102568520,	-0.989325052617466500,	-0.989332337659051820,	-0.989339620227306260,	-0.989346900322211730,	-0.989354177943749800,	
+-0.989361453091902600,	-0.989368725766651690,	-0.989375995967978980,	-0.989383263695866270,	-0.989390528950295330,	-0.989397791731248200,	-0.989405052038706430,	-0.989412309872652160,	
+-0.989419565233067070,	-0.989426818119933160,	-0.989434068533232010,	-0.989441316472945860,	-0.989448561939056390,	-0.989455804931545500,	-0.989463045450395100,	-0.989470283495587080,	
+-0.989477519067103240,	-0.989484752164925820,	-0.989491982789036380,	-0.989499210939416950,	-0.989506436616049640,	-0.989513659818916150,	-0.989520880547998470,	-0.989528098803278630,	
+-0.989535314584738530,	-0.989542527892360190,	-0.989549738726125510,	-0.989556947086016490,	-0.989564152972015050,	-0.989571356384103320,	-0.989578557322263070,	-0.989585755786476560,	
+-0.989592951776725570,	-0.989600145292992230,	-0.989607336335258550,	-0.989614524903506540,	-0.989621710997718230,	-0.989628894617875510,	-0.989636075763960730,	-0.989643254435955580,	
+-0.989650430633842500,	-0.989657604357603190,	-0.989664775607219880,	-0.989671944382674700,	-0.989679110683949650,	-0.989686274511026750,	-0.989693435863888250,	-0.989700594742516150,	
+-0.989707751146892580,	-0.989714905076999550,	-0.989722056532819310,	-0.989729205514333970,	-0.989736352021525550,	-0.989743496054376280,	-0.989750637612868190,	-0.989757776696983620,	
+-0.989764913306704460,	-0.989772047442013190,	-0.989779179102891700,	-0.989786308289322350,	-0.989793435001287140,	-0.989800559238768420,	-0.989807681001748210,	-0.989814800290208850,	
+-0.989821917104132480,	-0.989829031443501320,	-0.989836143308297610,	-0.989843252698503480,	-0.989850359614101280,	-0.989857464055073240,	-0.989864566021401380,	-0.989871665513068270,	
+-0.989878762530055910,	-0.989885857072346550,	-0.989892949139922760,	-0.989900038732766440,	-0.989907125850860050,	-0.989914210494185820,	-0.989921292662726100,	-0.989928372356463250,	
+-0.989935449575379380,	-0.989942524319456840,	-0.989949596588677980,	-0.989956666383025260,	-0.989963733702480810,	-0.989970798547026960,	-0.989977860916646190,	-0.989984920811320720,	
+-0.989991978231033020,	-0.989999033175765320,	-0.990006085645499970,	-0.990013135640219530,	-0.990020183159906140,	-0.990027228204542480,	-0.990034270774110550,	-0.990041310868593040,	
+-0.990048348487972190,	-0.990055383632230560,	-0.990062416301350390,	-0.990069446495314250,	-0.990076474214104390,	-0.990083499457703460,	-0.990090522226093730,	-0.990097542519257750,	
+-0.990104560337177860,	-0.990111575679836540,	-0.990118588547216350,	-0.990125598939299630,	-0.990132606856068960,	-0.990139612297506690,	-0.990146615263595490,	-0.990153615754317710,	
+-0.990160613769655920,	-0.990167609309592470,	-0.990174602374110150,	-0.990181592963191300,	-0.990188581076818400,	-0.990195566714974110,	-0.990202549877640890,	-0.990209530564801210,	
+-0.990216508776437850,	-0.990223484512533170,	-0.990230457773069730,	-0.990237428558030210,	-0.990244396867397070,	-0.990251362701152880,	-0.990258326059280440,	-0.990265286941762080,	
+-0.990272245348580490,	-0.990279201279718360,	-0.990286154735158130,	-0.990293105714882600,	-0.990300054218874240,	-0.990307000247115820,	-0.990313943799589810,	-0.990320884876279120,	
+-0.990327823477165970,	-0.990334759602233490,	-0.990341693251463930,	-0.990348624424840280,	-0.990355553122344910,	-0.990362479343960820,	-0.990369403089670470,	-0.990376324359456550,	
+-0.990383243153301950,	-0.990390159471189140,	-0.990397073313101010,	-0.990403984679020130,	-0.990410893568929310,	-0.990417799982811210,	-0.990424703920648630,	-0.990431605382424360,	
+-0.990438504368120980,	-0.990445400877721370,	-0.990452294911208340,	-0.990459186468564460,	-0.990466075549772730,	-0.990472962154815730,	-0.990479846283676360,	-0.990486727936337300,	
+-0.990493607112781560,	-0.990500483812991720,	-0.990507358036950670,	-0.990514229784641210,	-0.990521099056046130,	-0.990527965851148440,	-0.990534830169930710,	-0.990541692012375960,	
+-0.990548551378466980,	-0.990555408268186670,	-0.990562262681517700,	-0.990569114618443210,	-0.990575964078945880,	-0.990582811063008720,	-0.990589655570614400,	-0.990596497601746060,	
+-0.990603337156386380,	-0.990610174234518360,	-0.990617008836124910,	-0.990623840961189050,	-0.990630670609693450,	-0.990637497781621250,	-0.990644322476955330,	-0.990651144695678500,	
+-0.990657964437773870,	-0.990664781703224360,	-0.990671596492012860,	-0.990678408804122390,	-0.990685218639535960,	-0.990692025998236360,	-0.990698830880206720,	-0.990705633285430040,	
+-0.990712433213889240,	-0.990719230665567440,	-0.990726025640447430,	-0.990732818138512440,	-0.990739608159745490,	-0.990746395704129370,	-0.990753180771647310,	-0.990759963362282340,	
+-0.990766743476017450,	-0.990773521112835680,	-0.990780296272720020,	-0.990787068955653720,	-0.990793839161619780,	-0.990800606890601230,	-0.990807372142581080,	-0.990814134917542550,	
+-0.990820895215468680,	-0.990827653036342570,	-0.990834408380147360,	-0.990841161246866160,	-0.990847911636482000,	-0.990854659548978000,	-0.990861404984337390,	-0.990868147942543410,	
+-0.990874888423578850,	-0.990881626427427160,	-0.990888361954071480,	-0.990895095003494820,	-0.990901825575680410,	-0.990908553670611480,	-0.990915279288271170,	-0.990922002428642590,	
+-0.990928723091709100,	-0.990935441277453700,	-0.990942156985859750,	-0.990948870216910360,	-0.990955580970588890,	-0.990962289246878350,	-0.990968995045762190,	-0.990975698367223550,	
+-0.990982399211245650,	-0.990989097577811620,	-0.990995793466905030,	-0.991002486878508890,	-0.991009177812606450,	-0.991015866269181140,	-0.991022552248216230,	-0.991029235749694810,	
+-0.991035916773600370,	-0.991042595319916120,	-0.991049271388625420,	-0.991055944979711610,	-0.991062616093157820,	-0.991069284728947510,	-0.991075950887064020,	-0.991082614567490580,	
+-0.991089275770210660,	-0.991095934495207500,	-0.991102590742464540,	-0.991109244511965140,	-0.991115895803692640,	-0.991122544617630390,	-0.991129190953761730,	-0.991135834812070130,	
+-0.991142476192538810,	-0.991149115095151470,	-0.991155751519891330,	-0.991162385466741740,	-0.991169016935686260,	-0.991175645926708150,	-0.991182272439790960,	-0.991188896474918150,	
+-0.991195518032073060,	-0.991202137111239170,	-0.991208753712399910,	-0.991215367835538760,	-0.991221979480639280,	-0.991228588647684710,	-0.991235195336658830,	-0.991241799547544880,	
+-0.991248401280326430,	-0.991255000534986940,	-0.991261597311509980,	-0.991268191609879110,	-0.991274783430077690,	-0.991281372772089280,	-0.991287959635897440,	-0.991294544021485760,	
+-0.991301125928837680,	-0.991307705357936770,	-0.991314282308766730,	-0.991320856781310880,	-0.991327428775552800,	-0.991333998291476280,	-0.991340565329064670,	-0.991347129888301760,	
+-0.991353691969171000,	-0.991360251571655970,	-0.991366808695740230,	-0.991373363341407580,	-0.991379915508641570,	-0.991386465197425680,	-0.991393012407743580,	-0.991399557139579060,	
+-0.991406099392915570,	-0.991412639167736920,	-0.991419176464026550,	-0.991425711281768370,	-0.991432243620945840,	-0.991438773481542750,	-0.991445300863542660,	-0.991451825766929360,	
+-0.991458348191686540,	-0.991464868137797770,	-0.991471385605246840,	-0.991477900594017410,	-0.991484413104093300,	-0.991490923135458170,	-0.991497430688095700,	-0.991503935761989590,	
+-0.991510438357123820,	-0.991516938473481770,	-0.991523436111047430,	-0.991529931269804490,	-0.991536423949736840,	-0.991542914150827960,	-0.991549401873061950,	-0.991555887116422290,	
+-0.991562369880892970,	-0.991568850166457790,	-0.991575327973100440,	-0.991581803300804810,	-0.991588276149554580,	-0.991594746519333660,	-0.991601214410125940,	-0.991607679821915220,	
+-0.991614142754685180,	-0.991620603208419830,	-0.991627061183103060,	-0.991633516678718570,	-0.991639969695250260,	-0.991646420232682010,	-0.991652868290997750,	-0.991659313870181360,	
+-0.991665756970216640,	-0.991672197591087600,	-0.991678635732777920,	-0.991685071395271730,	-0.991691504578552930,	-0.991697935282605300,	-0.991704363507412870,	-0.991710789252959410,	
+-0.991717212519229170,	-0.991723633306205720,	-0.991730051613873290,	-0.991736467442215660,	-0.991742880791216970,	-0.991749291660861010,	-0.991755700051131780,	-0.991762105962013420,	
+-0.991768509393489710,	-0.991774910345544770,	-0.991781308818162510,	-0.991787704811326940,	-0.991794098325022190,	-0.991800489359232150,	-0.991806877913940950,	-0.991813263989132500,	
+-0.991819647584790910,	-0.991826028700900200,	-0.991832407337444380,	-0.991838783494407570,	-0.991845157171773790,	-0.991851528369527170,	-0.991857897087651710,	-0.991864263326131420,	
+-0.991870627084950550,	-0.991876988364093100,	-0.991883347163543210,	-0.991889703483284980,	-0.991896057323302440,	-0.991902408683579710,	-0.991908757564101020,	-0.991915103964850390,	
+-0.991921447885812050,	-0.991927789326970120,	-0.991934128288308630,	-0.991940464769811900,	-0.991946798771463860,	-0.991953130293248940,	-0.991959459335151170,	-0.991965785897154780,	
+-0.991972109979244010,	-0.991978431581402860,	-0.991984750703615580,	-0.991991067345866510,	-0.991997381508139760,	-0.992003693190419590,	-0.992010002392690100,	-0.992016309114935660,	
+-0.992022613357140370,	-0.992028915119288700,	-0.992035214401364660,	-0.992041511203352490,	-0.992047805525236640,	-0.992054097367001340,	-0.992060386728630730,	-0.992066673610109140,	
+-0.992072958011420810,	-0.992079239932550210,	-0.992085519373481440,	-0.992091796334198860,	-0.992098070814686820,	-0.992104342814929650,	-0.992110612334911490,	-0.992116879374616900,	
+-0.992123143934030120,	-0.992129406013135480,	-0.992135665611917240,	-0.992141922730359950,	-0.992148177368447740,	-0.992154429526165170,	-0.992160679203496490,	-0.992166926400426140,	
+-0.992173171116938480,	-0.992179413353017850,	-0.992185653108648700,	-0.992191890383815390,	-0.992198125178502370,	-0.992204357492694090,	-0.992210587326374900,	-0.992216814679529270,	
+-0.992223039552141530,	-0.992229261944196250,	-0.992235481855677780,	-0.992241699286570580,	-0.992247914236859210,	-0.992254126706528020,	-0.992260336695561460,	-0.992266544203944110,	
+-0.992272749231660420,	-0.992278951778694850,	-0.992285151845031850,	-0.992291349430656000,	-0.992297544535551750,	-0.992303737159703660,	-0.992309927303096310,	-0.992316114965714040,	
+-0.992322300147541530,	-0.992328482848563230,	-0.992334663068763720,	-0.992340840808127570,	-0.992347016066639330,	-0.992353188844283580,	-0.992359359141044890,	-0.992365526956907720,	
+-0.992371692291856730,	-0.992377855145876510,	-0.992384015518951720,	-0.992390173411066830,	-0.992396328822206520,	-0.992402481752355350,	-0.992408632201498000,	-0.992414780169619150,	
+-0.992420925656703260,	-0.992427068662735110,	-0.992433209187699280,	-0.992439347231580450,	-0.992445482794363180,	-0.992451615876032260,	-0.992457746476572260,	-0.992463874595967850,	
+-0.992470000234203840,	-0.992476123391264790,	-0.992482244067135480,	-0.992488362261800480,	-0.992494477975244700,	-0.992500591207452600,	-0.992506701958409070,	-0.992512810228098790,	
+-0.992518916016506550,	-0.992525019323616920,	-0.992531120149414800,	-0.992537218493884770,	-0.992543314357011820,	-0.992549407738780530,	-0.992555498639175800,	-0.992561587058182200,	
+-0.992567672995784740,	-0.992573756451967990,	-0.992579837426716960,	-0.992585915920016220,	-0.992591991931850770,	-0.992598065462205410,	-0.992604136511064720,	-0.992610205078413800,	
+-0.992616271164237340,	-0.992622334768520240,	-0.992628395891247180,	-0.992634454532403290,	-0.992640510691973120,	-0.992646564369941810,	-0.992652615566294030,	-0.992658664281014680,	
+-0.992664710514088670,	-0.992670754265501000,	-0.992676795535236360,	-0.992682834323279640,	-0.992688870629615970,	-0.992694904454230030,	-0.992700935797106940,	-0.992706964658231380,	
+-0.992712991037588590,	-0.992719014935163120,	-0.992725036350940230,	-0.992731055284904680,	-0.992737071737041620,	-0.992743085707335720,	-0.992749097195772200,	-0.992755106202335870,	
+-0.992761112727011840,	-0.992767116769785020,	-0.992773118330640410,	-0.992779117409563040,	-0.992785114006537790,	-0.992791108121549800,	-0.992797099754584080,	-0.992803088905625520,	
+-0.992809075574659360,	-0.992815059761670390,	-0.992821041466643850,	-0.992827020689564630,	-0.992832997430417970,	-0.992838971689188780,	-0.992844943465862050,	-0.992850912760423030,	
+-0.992856879572856730,	-0.992862843903148270,	-0.992868805751282670,	-0.992874765117245150,	-0.992880722001020620,	-0.992886676402594310,	-0.992892628321951240,	-0.992898577759076640,	
+-0.992904524713955630,	-0.992910469186573330,	-0.992916411176914760,	-0.992922350684965260,	-0.992928287710709840,	-0.992934222254133750,	-0.992940154315221980,	-0.992946083893960000,	
+-0.992952010990332700,	-0.992957935604325330,	-0.992963857735923220,	-0.992969777385111390,	-0.992975694551875180,	-0.992981609236199710,	-0.992987521438070230,	-0.992993431157471960,	
+-0.992999338394390030,	-0.993005243148809780,	-0.993011145420716450,	-0.993017045210095260,	-0.993022942516931460,	-0.993028837341210280,	-0.993034729682917060,	-0.993040619542037040,	
+-0.993046506918555340,	-0.993052391812457520,	-0.993058274223728610,	-0.993064154152354050,	-0.993070031598319190,	-0.993075906561609160,	-0.993081779042209290,	-0.993087649040105160,	
+-0.993093516555281770,	-0.993099381587724590,	-0.993105244137418960,	-0.993111104204350340,	-0.993116961788503840,	-0.993122816889864920,	-0.993128669508419050,	-0.993134519644151450,	
+-0.993140367297047580,	-0.993146212467092780,	-0.993152055154272410,	-0.993157895358572020,	-0.993163733079976740,	-0.993169568318472250,	-0.993175401074043780,	-0.993181231346676800,	
+-0.993187059136356740,	-0.993192884443069080,	-0.993198707266799150,	-0.993204527607532530,	-0.993210345465254550,	-0.993216160839950680,	-0.993221973731606480,	-0.993227784140207290,	
+-0.993233592065738580,	-0.993239397508186020,	-0.993245200467534840,	-0.993251000943770720,	-0.993256798936879130,	-0.993262594446845500,	-0.993268387473655420,	-0.993274178017294340,	
+-0.993279966077747820,	-0.993285751655001440,	-0.993291534749040640,	-0.993297315359851000,	-0.993303093487418080,	-0.993308869131727330,	-0.993314642292764560,	-0.993320412970515100,	
+-0.993326181164964630,	-0.993331946876098710,	-0.993337710103902930,	-0.993343470848362830,	-0.993349229109464100,	-0.993354984887192320,	-0.993360738181533030,	-0.993366488992471930,	
+-0.993372237319994580,	-0.993377983164086650,	-0.993383726524733720,	-0.993389467401921470,	-0.993395205795635560,	-0.993400941705861680,	-0.993406675132585510,	-0.993412406075792510,	
+-0.993418134535468570,	-0.993423860511599250,	-0.993429584004170360,	-0.993435305013167460,	-0.993441023538576330,	-0.993446739580382650,	-0.993452453138572000,	-0.993458164213130380,	
+-0.993463872804043250,	-0.993469578911296500,	-0.993475282534875710,	-0.993480983674766780,	-0.993486682330955380,	-0.993492378503427310,	-0.993498072192168240,	-0.993503763397163950,	
+-0.993509452118400360,	-0.993515138355863140,	-0.993520822109537960,	-0.993526503379410840,	-0.993532182165467350,	-0.993537858467693490,	-0.993543532286074950,	-0.993549203620597620,	
+-0.993554872471247300,	-0.993560538838009770,	-0.993566202720870820,	-0.993571864119816460,	-0.993577523034832380,	-0.993583179465904460,	-0.993588833413018730,	-0.993594484876160760,	
+-0.993600133855316650,	-0.993605780350472310,	-0.993611424361613320,	-0.993617065888725890,	-0.993622704931795830,	-0.993628341490808920,	-0.993633975565751170,	-0.993639607156608480,	
+-0.993645236263366760,	-0.993650862886012010,	-0.993656487024530130,	-0.993662108678906920,	-0.993667727849128600,	-0.993673344535180750,	-0.993678958737049700,	-0.993684570454721140,	
+-0.993690179688181300,	-0.993695786437415850,	-0.993701390702411040,	-0.993706992483152750,	-0.993712591779627010,	-0.993718188591819710,	-0.993723782919716970,	-0.993729374763304700,	
+-0.993734964122569120,	-0.993740550997496030,	-0.993746135388071660,	-0.993751717294281800,	-0.993757296716112790,	-0.993762873653550540,	-0.993768448106581050,	-0.993774020075190450,	
+-0.993779589559364740,	-0.993785156559090170,	-0.993790721074352620,	-0.993796283105138340,	-0.993801842651433230,	-0.993807399713223630,	-0.993812954290495540,	-0.993818506383234990,	
+-0.993824055991428200,	-0.993829603115061300,	-0.993835147754120410,	-0.993840689908591650,	-0.993846229578461030,	-0.993851766763715010,	-0.993857301464339480,	-0.993862833680320690,	
+-0.993868363411644860,	-0.993873890658298120,	-0.993879415420266590,	-0.993884937697536610,	-0.993890457490094300,	-0.993895974797925800,	-0.993901489621017320,	-0.993907001959355110,	
+-0.993912511812925500,	-0.993918019181714520,	-0.993923524065708500,	-0.993929026464893670,	-0.993934526379256390,	-0.993940023808782660,	-0.993945518753458930,	-0.993951011213271340,	
+-0.993956501188206330,	-0.993961988678249920,	-0.993967473683388670,	-0.993972956203608700,	-0.993978436238896370,	-0.993983913789237890,	-0.993989388854619630,	-0.993994861435027910,	
+-0.994000331530449090,	-0.994005799140869390,	-0.994011264266275170,	-0.994016726906652880,	-0.994022187061988640,	-0.994027644732269010,	-0.994033099917480230,	-0.994038552617608760,	
+-0.994044002832640940,	-0.994049450562563000,	-0.994054895807361500,	-0.994060338567022810,	-0.994065778841533130,	-0.994071216630879160,	-0.994076651935047020,	-0.994082084754023380,	
+-0.994087515087794360,	-0.994092942936346760,	-0.994098368299666690,	-0.994103791177740610,	-0.994109211570555210,	-0.994114629478096700,	-0.994120044900351660,	-0.994125457837306440,	
+-0.994130868288947590,	-0.994136276255261690,	-0.994141681736234960,	-0.994147084731854090,	-0.994152485242105530,	-0.994157883266975630,	-0.994163278806451170,	-0.994168671860518380,	
+-0.994174062429164060,	-0.994179450512374440,	-0.994184836110136310,	-0.994190219222436000,	-0.994195599849260200,	-0.994200977990595370,	-0.994206353646428180,	-0.994211726816745080,	
+-0.994217097501532530,	-0.994222465700777440,	-0.994227831414466020,	-0.994233194642585080,	-0.994238555385121180,	-0.994243913642060880,	-0.994249269413390760,	-0.994254622699097480,	
+-0.994259973499167620,	-0.994265321813587840,	-0.994270667642344840,	-0.994276010985425060,	-0.994281351842815300,	-0.994286690214502220,	-0.994292026100472290,	-0.994297359500712410,	
+-0.994302690415209020,	-0.994308018843949040,	-0.994313344786918910,	-0.994318668244105420,	-0.994323989215495360,	-0.994329307701075190,	-0.994334623700831810,	-0.994339937214751890,	
+-0.994345248242822110,	-0.994350556785029260,	-0.994355862841360020,	-0.994361166411801060,	-0.994366467496339170,	-0.994371766094961140,	-0.994377062207653650,	-0.994382355834403600,	
+-0.994387646975197660,	-0.994392935630022510,	-0.994398221798865060,	-0.994403505481712080,	-0.994408786678550370,	-0.994414065389366610,	-0.994419341614147690,	-0.994424615352880510,	
+-0.994429886605551760,	-0.994435155372148220,	-0.994440421652656780,	-0.994445685447064350,	-0.994450946755357720,	-0.994456205577523790,	-0.994461461913549230,	-0.994466715763421050,	
+-0.994471967127126040,	-0.994477216004651220,	-0.994482462395983260,	-0.994487706301109160,	-0.994492947720015840,	-0.994498186652690070,	-0.994503423099118880,	-0.994508657059289150,	
+-0.994513888533187780,	-0.994519117520801690,	-0.994524344022117760,	-0.994529568037123000,	-0.994534789565804320,	-0.994540008608148730,	-0.994545225164143010,	-0.994550439233774290,	
+-0.994555650817029460,	-0.994560859913895530,	-0.994566066524359420,	-0.994571270648408110,	-0.994576472286028750,	-0.994581671437208100,	-0.994586868101933310,	-0.994592062280191260,	
+-0.994597253971969190,	-0.994602443177253880,	-0.994607629896032570,	-0.994612814128292060,	-0.994617995874019560,	-0.994623175133202090,	-0.994628351905826660,	-0.994633526191880390,	
+-0.994638697991350300,	-0.994643867304223490,	-0.994649034130487000,	-0.994654198470127810,	-0.994659360323133290,	-0.994664519689490320,	-0.994669676569185920,	-0.994674830962207550,	
+-0.994679982868541980,	-0.994685132288176450,	-0.994690279221098090,	-0.994695423667294020,	-0.994700565626751350,	-0.994705705099457440,	-0.994710842085399060,	-0.994715976584563680,	
+-0.994721108596938410,	-0.994726238122510260,	-0.994731365161266590,	-0.994736489713194500,	-0.994741611778281240,	-0.994746731356513810,	-0.994751848447879670,	-0.994756963052365830,	
+-0.994762075169959630,	-0.994767184800648190,	-0.994772291944418850,	-0.994777396601258750,	-0.994782498771155210,	-0.994787598454095370,	-0.994792695650066560,	-0.994797790359055910,	
+-0.994802882581050980,	-0.994807972316038680,	-0.994813059564006560,	-0.994818144324941640,	-0.994823226598831490,	-0.994828306385663220,	-0.994833383685424290,	-0.994838458498101820,	
+-0.994843530823683150,	-0.994848600662155750,	-0.994853668013506720,	-0.994858732877723640,	-0.994863795254793740,	-0.994868855144704240,	-0.994873912547442730,	-0.994878967462996310,	
+-0.994884019891352560,	-0.994889069832498700,	-0.994894117286422300,	-0.994899162253110480,	-0.994904204732550810,	-0.994909244724730520,	-0.994914282229637290,	-0.994919317247258240,	
+-0.994924349777580930,	-0.994929379820592710,	-0.994934407376281140,	-0.994939432444633450,	-0.994944455025637220,	-0.994949475119279780,	-0.994954492725548810,	-0.994959507844431430,	
+-0.994964520475915440,	-0.994969530619988050,	-0.994974538276636840,	-0.994979543445849380,	-0.994984546127613000,	-0.994989546321915160,	-0.994994544028743540,	-0.994999539248085600,	
+-0.995004531979928770,	-0.995009522224260650,	-0.995014509981068660,	-0.995019495250340390,	-0.995024478032063510,	-0.995029458326225250,	-0.995034436132813500,	-0.995039411451815630,	
+-0.995044384283219170,	-0.995049354627011720,	-0.995054322483180930,	-0.995059287851714380,	-0.995064250732599630,	-0.995069211125824140,	-0.995074169031375690,	-0.995079124449241850,	
+-0.995084077379410180,	-0.995089027821868250,	-0.995093975776603860,	-0.995098921243604440,	-0.995103864222857680,	-0.995108804714351370,	-0.995113742718073070,	-0.995118678234010350,	
+-0.995123611262150880,	-0.995128541802482450,	-0.995133469854992620,	-0.995138395419669200,	-0.995143318496499730,	-0.995148239085472010,	-0.995153157186573600,	-0.995158072799792400,	
+-0.995162985925115980,	-0.995167896562532020,	-0.995172804712028400,	-0.995177710373592820,	-0.995182613547212940,	-0.995187514232876440,	-0.995192412430571220,	-0.995197308140284950,	
+-0.995202201362005430,	-0.995207092095720340,	-0.995211980341417560,	-0.995216866099084880,	-0.995221749368710000,	-0.995226630150280680,	-0.995231508443784940,	-0.995236384249210350,	
+-0.995241257566544690,	-0.995246128395776090,	-0.995250996736891990,	-0.995255862589880520,	-0.995260725954729360,	-0.995265586831426300,	-0.995270445219959330,	-0.995275301120316370,	
+-0.995280154532484970,	-0.995285005456453260,	-0.995289853892209030,	-0.995294699839740170,	-0.995299543299034580,	-0.995304384270080170,	-0.995309222752864710,	-0.995314058747376220,	
+-0.995318892253602590,	-0.995323723271531850,	-0.995328551801151650,	-0.995333377842450130,	-0.995338201395415180,	-0.995343022460034590,	-0.995347841036296590,	-0.995352657124188970,	
+-0.995357470723699620,	-0.995362281834816680,	-0.995367090457528030,	-0.995371896591821680,	-0.995376700237685540,	-0.995381501395107620,	-0.995386300064076020,	-0.995391096244578550,	
+-0.995395889936603440,	-0.995400681140138580,	-0.995405469855172090,	-0.995410256081691870,	-0.995415039819686040,	-0.995419821069142510,	-0.995424599830049490,	-0.995429376102395010,	
+-0.995434149886167070,	-0.995438921181353690,	-0.995443689987943080,	-0.995448456305923270,	-0.995453220135282260,	-0.995457981476008170,	-0.995462740328089240,	-0.995467496691513350,	
+-0.995472250566268760,	-0.995477001952343570,	-0.995481750849725790,	-0.995486497258403770,	-0.995491241178365400,	-0.995495982609598930,	-0.995500721552092570,	-0.995505458005834340,	
+-0.995510191970812470,	-0.995514923447015200,	-0.995519652434430520,	-0.995524378933046790,	-0.995529102942852020,	-0.995533824463834540,	-0.995538543495982590,	-0.995543260039284170,	
+-0.995547974093727640,	-0.995552685659301110,	-0.995557394735992920,	-0.995562101323791300,	-0.995566805422684390,	-0.995571507032660400,	-0.995576206153707680,	-0.995580902785814460,	
+-0.995585596928969090,	-0.995590288583159570,	-0.995594977748374350,	-0.995599664424601680,	-0.995604348611830000,	-0.995609030310047330,	-0.995613709519242000,	-0.995618386239402580,	
+-0.995623060470517070,	-0.995627732212573950,	-0.995632401465561420,	-0.995637068229468070,	-0.995641732504281900,	-0.995646394289991470,	-0.995651053586585010,	-0.995655710394050870,	
+-0.995660364712377510,	-0.995665016541553260,	-0.995669665881566470,	-0.995674312732405480,	-0.995678957094058740,	-0.995683598966514590,	-0.995688238349761390,	-0.995692875243787690,	
+-0.995697509648581720,	-0.995702141564132060,	-0.995706770990427040,	-0.995711397927455000,	-0.995716022375204620,	-0.995720644333664030,	-0.995725263802821890,	-0.995729880782666550,	
+-0.995734495273186580,	-0.995739107274370320,	-0.995743716786206320,	-0.995748323808683060,	-0.995752928341788970,	-0.995757530385512510,	-0.995762129939842260,	-0.995766727004766650,	
+-0.995771321580274260,	-0.995775913666353650,	-0.995780503262993170,	-0.995785090370181370,	-0.995789674987906940,	-0.995794257116158320,	-0.995798836754923980,	-0.995803413904192580,	
+-0.995807988563952700,	-0.995812560734192780,	-0.995817130414901500,	-0.995821697606067420,	-0.995826262307679010,	-0.995830824519725040,	-0.995835384242193980,	-0.995839941475074370,	
+-0.995844496218355020,	-0.995849048472024380,	-0.995853598236071110,	-0.995858145510483910,	-0.995862690295251320,	-0.995867232590361920,	-0.995871772395804490,	-0.995876309711567710,	
+-0.995880844537640030,	-0.995885376874010350,	-0.995889906720667130,	-0.995894434077599260,	-0.995898958944795190,	-0.995903481322243820,	-0.995908001209933720,	-0.995912518607853570,	
+-0.995917033515992140,	-0.995921545934338130,	-0.995926055862880300,	-0.995930563301607230,	-0.995935068250507820,	-0.995939570709570730,	-0.995944070678784770,	-0.995948568158138590,	
+-0.995953063147621000,	-0.995957555647220660,	-0.995962045656926590,	-0.995966533176727230,	-0.995971018206611710,	-0.995975500746568490,	-0.995979980796586670,	-0.995984458356654830,	
+-0.995988933426761760,	-0.995993406006896450,	-0.995997876097047600,	-0.996002343697204080,	-0.996006808807354700,	-0.996011271427488350,	-0.996015731557593710,	-0.996020189197659780,	
+-0.996024644347675460,	-0.996029097007629430,	-0.996033547177510690,	-0.996037994857308040,	-0.996042440047010480,	-0.996046882746606800,	-0.996051322956085890,	-0.996055760675436660,	
+-0.996060195904648000,	-0.996064628643708930,	-0.996069058892608330,	-0.996073486651334990,	-0.996077911919877930,	-0.996082334698226160,	-0.996086754986368450,	-0.996091172784293930,	
+-0.996095588091991500,	-0.996100000909450060,	-0.996104411236658600,	-0.996108819073606160,	-0.996113224420281610,	-0.996117627276674080,	-0.996122027642772470,	-0.996126425518565670,	
+-0.996130820904042920,	-0.996135213799193120,	-0.996139604204005270,	-0.996143992118468380,	-0.996148377542571570,	-0.996152760476303740,	-0.996157140919654130,	-0.996161518872611510,	
+-0.996165894335165230,	-0.996170267307304070,	-0.996174637789017380,	-0.996179005780294060,	-0.996183371281123220,	-0.996187734291493880,	-0.996192094811395260,	-0.996196452840816480,	
+-0.996200808379746450,	-0.996205161428174500,	-0.996209511986089540,	-0.996213860053480890,	-0.996218205630337470,	-0.996222548716648730,	-0.996226889312403440,	-0.996231227417591070,	
+-0.996235563032200510,	-0.996239896156221110,	-0.996244226789641970,	-0.996248554932452230,	-0.996252880584641120,	-0.996257203746197750,	-0.996261524417111470,	-0.996265842597371390,	
+-0.996270158286966630,	-0.996274471485886440,	-0.996278782194120140,	-0.996283090411656860,	-0.996287396138485940,	-0.996291699374596380,	-0.996296000119977650,	-0.996300298374618980,	
+-0.996304594138509470,	-0.996308887411638590,	-0.996313178193995340,	-0.996317466485569290,	-0.996321752286349450,	-0.996326035596325270,	-0.996330316415486080,	-0.996334594743821020,	
+-0.996338870581319420,	-0.996343143927970740,	-0.996347414783764210,	-0.996351683148689050,	-0.996355949022734720,	-0.996360212405890570,	-0.996364473298145930,	-0.996368731699490030,	
+-0.996372987609912220,	-0.996377241029402060,	-0.996381491957948780,	-0.996385740395541730,	-0.996389986342170350,	-0.996394229797823990,	-0.996398470762492110,	-0.996402709236164030,	
+-0.996406945218829110,	-0.996411178710476910,	-0.996415409711096770,	-0.996419638220678030,	-0.996423864239210260,	-0.996428087766682790,	-0.996432308803085200,	-0.996436527348406710,	
+-0.996440743402637000,	-0.996444956965765290,	-0.996449168037781270,	-0.996453376618674390,	-0.996457582708433990,	-0.996461786307049740,	-0.996465987414510870,	-0.996470186030807170,	
+-0.996474382155927870,	-0.996478575789862760,	-0.996482766932601070,	-0.996486955584132580,	-0.996491141744446640,	-0.996495325413532920,	-0.996499506591380760,	-0.996503685277979940,	
+-0.996507861473319820,	-0.996512035177390180,	-0.996516206390180350,	-0.996520375111680010,	-0.996524541341878730,	-0.996528705080766190,	-0.996532866328331710,	-0.996537025084565210,	
+-0.996541181349456130,	-0.996545335122994040,	-0.996549486405168610,	-0.996553635195969510,	-0.996557781495386320,	-0.996561925303408700,	-0.996566066620026230,	-0.996570205445228560,	
+-0.996574341779005390,	-0.996578475621346490,	-0.996582606972241210,	-0.996586735831679560,	-0.996590862199650980,	-0.996594986076145380,	-0.996599107461152210,	-0.996603226354661250,	
+-0.996607342756662300,	-0.996611456667144900,	-0.996615568086098860,	-0.996619677013513950,	-0.996623783449379850,	-0.996627887393686350,	-0.996631988846423010,	-0.996636087807579840,	
+-0.996640184277146290,	-0.996644278255112370,	-0.996648369741467750,	-0.996652458736202230,	-0.996656545239305470,	-0.996660629250767480,	-0.996664710770577830,	-0.996668789798726420,	
+-0.996672866335203020,	-0.996676940379997430,	-0.996681011933099550,	-0.996685080994499150,	-0.996689147564186030,	-0.996693211642150080,	-0.996697273228380980,	-0.996701332322868840,	
+-0.996705388925603230,	-0.996709443036574270,	-0.996713494655771640,	-0.996717543783185330,	-0.996721590418805040,	-0.996725634562620870,	-0.996729676214622610,	-0.996733715374800160,	
+-0.996737752043143410,	-0.996741786219642270,	-0.996745817904286620,	-0.996749847097066490,	-0.996753873797971760,	-0.996757898006992330,	-0.996761919724118210,	-0.996765938949339180,	
+-0.996769955682645370,	-0.996773969924026560,	-0.996777981673472980,	-0.996781990930974420,	-0.996785997696520760,	-0.996790001970102260,	-0.996794003751708680,	-0.996798003041330040,	
+-0.996801999838956450,	-0.996805994144577930,	-0.996809985958184370,	-0.996813975279765780,	-0.996817962109312280,	-0.996821946446813880,	-0.996825928292260690,	-0.996829907645642610,	
+-0.996833884506949760,	-0.996837858876172270,	-0.996841830753300020,	-0.996845800138323250,	-0.996849767031231960,	-0.996853731432016280,	-0.996857693340666320,	-0.996861652757172090,	
+-0.996865609681523710,	-0.996869564113711300,	-0.996873516053724980,	-0.996877465501554870,	-0.996881412457191090,	-0.996885356920623860,	-0.996889298891843080,	-0.996893238370839210,	
+-0.996897175357602140,	-0.996901109852122210,	-0.996905041854389440,	-0.996908971364394160,	-0.996912898382126380,	-0.996916822907576330,	-0.996920744940734240,	-0.996924664481590340,	
+-0.996928581530134750,	-0.996932496086357700,	-0.996936408150249420,	-0.996940317721800030,	-0.996944224800999980,	-0.996948129387839280,	-0.996952031482308270,	-0.996955931084397280,	
+-0.996959828194096340,	-0.996963722811395890,	-0.996967614936286160,	-0.996971504568757270,	-0.996975391708799790,	-0.996979276356403710,	-0.996983158511559500,	-0.996987038174257380,	
+-0.996990915344487580,	-0.996994790022240560,	-0.996998662207506550,	-0.997002531900275990,	-0.997006399100539010,	-0.997010263808286060,	-0.997014126023507360,	-0.997017985746193490,	
+-0.997021842976334560,	-0.997025697713921020,	-0.997029549958943220,	-0.997033399711391600,	-0.997037246971256510,	-0.997041091738528280,	-0.997044934013197270,	-0.997048773795253920,	
+-0.997052611084688680,	-0.997056445881491890,	-0.997060278185654010,	-0.997064107997165490,	-0.997067935316016560,	-0.997071760142197890,	-0.997075582475699830,	-0.997079402316512820,	
+-0.997083219664627210,	-0.997087034520033670,	-0.997090846882722430,	-0.997094656752684160,	-0.997098464129909210,	-0.997102269014388030,	-0.997106071406111290,	-0.997109871305069340,	
+-0.997113668711252730,	-0.997117463624651920,	-0.997121256045257480,	-0.997125045973059840,	-0.997128833408049700,	-0.997132618350217380,	-0.997136400799553460,	-0.997140180756048710,	
+-0.997143958219693370,	-0.997147733190478110,	-0.997151505668393610,	-0.997155275653430430,	-0.997159043145578900,	-0.997162808144829830,	-0.997166570651173760,	-0.997170330664601150,	
+-0.997174088185102780,	-0.997177843212669220,	-0.997181595747291040,	-0.997185345788958900,	-0.997189093337663370,	-0.997192838393395120,	-0.997196580956144720,	-0.997200321025902950,	
+-0.997204058602660260,	-0.997207793686407550,	-0.997211526277135270,	-0.997215256374834210,	-0.997218983979495040,	-0.997222709091108330,	-0.997226431709664960,	-0.997230151835155400,	
+-0.997233869467570530,	-0.997237584606900930,	-0.997241297253137370,	-0.997245007406270640,	-0.997248715066291310,	-0.997252420233190270,	-0.997256122906958200,	-0.997259823087585760,	
+-0.997263520775063750,	-0.997267215969382950,	-0.997270908670534140,	-0.997274598878508000,	-0.997278286593295430,	-0.997281971814887090,	-0.997285654543273890,	-0.997289334778446500,	
+-0.997293012520395820,	-0.997296687769112510,	-0.997300360524587590,	-0.997304030786811730,	-0.997307698555775720,	-0.997311363831470570,	-0.997315026613886930,	-0.997318686903015840,	
+-0.997322344698847950,	-0.997326000001374170,	-0.997329652810585500,	-0.997333303126472610,	-0.997336950949026410,	-0.997340596278238010,	-0.997344239114097970,	-0.997347879456597420,	
+-0.997351517305727020,	-0.997355152661478010,	-0.997358785523841050,	-0.997362415892807050,	-0.997366043768367130,	-0.997369669150512060,	-0.997373292039232750,	-0.997376912434520310,	
+-0.997380530336365530,	-0.997384145744759530,	-0.997387758659693090,	-0.997391369081157220,	-0.997394977009142920,	-0.997398582443641210,	-0.997402185384643090,	-0.997405785832139460,	
+-0.997409383786121320,	-0.997412979246579790,	-0.997416572213505770,	-0.997420162686890380,	-0.997423750666724510,	-0.997427336152999280,	-0.997430919145705810,	-0.997434499644834880,	
+-0.997438077650377840,	-0.997441653162325580,	-0.997445226180669110,	-0.997448796705399650,	-0.997452364736508110,	-0.997455930273985820,	-0.997459493317823580,	-0.997463053868012590,	
+-0.997466611924544000,	-0.997470167487408910,	-0.997473720556598440,	-0.997477271132103600,	-0.997480819213915510,	-0.997484364802025510,	-0.997487907896424500,	-0.997491448497103810,	
+-0.997494986604054450,	-0.997498522217267650,	-0.997502055336734530,	-0.997505585962446210,	-0.997509114094394020,	-0.997512639732568980,	-0.997516162876962320,	-0.997519683527565370,	
+-0.997523201684369140,	-0.997526717347364870,	-0.997530230516543880,	-0.997533741191897310,	-0.997537249373416370,	-0.997540755061092300,	-0.997544258254916330,	-0.997547758954879680,	
+-0.997551257160973700,	-0.997554752873189510,	-0.997558246091518550,	-0.997561736815951840,	-0.997565225046480930,	-0.997568710783096830,	-0.997572194025791000,	-0.997575674774554670,	
+-0.997579153029379160,	-0.997582628790255830,	-0.997586102057175910,	-0.997589572830130720,	-0.997593041109111510,	-0.997596506894109840,	-0.997599970185116810,	-0.997603430982123900,	
+-0.997606889285122420,	-0.997610345094103620,	-0.997613798409059060,	-0.997617249229979960,	-0.997620697556857780,	-0.997624143389683860,	-0.997627586728449530,	-0.997631027573146260,	
+-0.997634465923765370,	-0.997637901780298430,	-0.997641335142736560,	-0.997644766011071550,	-0.997648194385294510,	-0.997651620265397000,	-0.997655043651370480,	-0.997658464543206280,	
+-0.997661882940895970,	-0.997665298844431000,	-0.997668712253802710,	-0.997672123169002670,	-0.997675531590022310,	-0.997678937516853100,	-0.997682340949486600,	-0.997685741887914150,	
+-0.997689140332127410,	-0.997692536282117850,	-0.997695929737876910,	-0.997699320699396150,	-0.997702709166667150,	-0.997706095139681340,	-0.997709478618430180,	-0.997712859602905460,	
+-0.997716238093098620,	-0.997719614089001010,	-0.997722987590604520,	-0.997726358597900490,	-0.997729727110880590,	-0.997733093129536400,	-0.997736456653859460,	-0.997739817683841350,	
+-0.997743176219473730,	-0.997746532260748160,	-0.997749885807656220,	-0.997753236860189570,	-0.997756585418339890,	-0.997759931482098740,	-0.997763275051457680,	-0.997766616126408600,	
+-0.997769954706942850,	-0.997773290793052210,	-0.997776624384728360,	-0.997779955481962970,	-0.997783284084747700,	-0.997786610193074130,	-0.997789933806934150,	-0.997793254926319320,	
+-0.997796573551221310,	-0.997799889681631800,	-0.997803203317542690,	-0.997806514458945530,	-0.997809823105832110,	-0.997813129258194100,	-0.997816432916023290,	-0.997819734079311350,	
+-0.997823032748050180,	-0.997826328922231330,	-0.997829622601846600,	-0.997832913786887990,	-0.997836202477346950,	-0.997839488673215480,	-0.997842772374485270,	-0.997846053581148080,	
+-0.997849332293195830,	-0.997852608510620190,	-0.997855882233413150,	-0.997859153461566280,	-0.997862422195071600,	-0.997865688433920760,	-0.997868952178105780,	-0.997872213427618450,	
+-0.997875472182450540,	-0.997878728442593950,	-0.997881982208040470,	-0.997885233478782220,	-0.997888482254810750,	-0.997891728536118070,	-0.997894972322696080,	-0.997898213614536680,	
+-0.997901452411631750,	-0.997904688713973200,	-0.997907922521552910,	-0.997911153834362800,	-0.997914382652394850,	-0.997917608975640970,	-0.997920832804092940,	-0.997924054137742990,	
+-0.997927272976582790,	-0.997930489320604460,	-0.997933703169799900,	-0.997936914524161000,	-0.997940123383679880,	-0.997943329748348430,	-0.997946533618158770,	-0.997949734993102690,	
+-0.997952933873172190,	-0.997956130258359500,	-0.997959324148656400,	-0.997962515544055020,	-0.997965704444547350,	-0.997968890850125410,	-0.997972074760781200,	-0.997975256176506840,	
+-0.997978435097294450,	-0.997981611523135800,	-0.997984785454023250,	-0.997987956889948680,	-0.997991125830904210,	-0.997994292276881970,	-0.997997456227873950,	-0.998000617683872270,	
+-0.998003776644869060,	-0.998006933110856420,	-0.998010087081826480,	-0.998013238557771350,	-0.998016387538683050,	-0.998019534024553790,	-0.998022678015375700,	-0.998025819511141000,	
+-0.998028958511841590,	-0.998032095017469920,	-0.998035229028018000,	-0.998038360543477940,	-0.998041489563841980,	-0.998044616089102330,	-0.998047740119251130,	-0.998050861654280590,	
+-0.998053980694182940,	-0.998057097238950310,	-0.998060211288574920,	-0.998063322843048990,	-0.998066431902364770,	-0.998069538466514470,	-0.998072642535490330,	-0.998075744109284570,	
+-0.998078843187889420,	-0.998081939771297220,	-0.998085033859500200,	-0.998088125452490480,	-0.998091214550260620,	-0.998094301152802510,	-0.998097385260108830,	-0.998100466872171580,	
+-0.998103545988983210,	-0.998106622610535950,	-0.998109696736822150,	-0.998112768367834140,	-0.998115837503564140,	-0.998118904144004620,	-0.998121968289147790,	-0.998125029938986110,	
+-0.998128089093511690,	-0.998131145752717220,	-0.998134199916594800,	-0.998137251585136890,	-0.998140300758335930,	-0.998143347436184160,	-0.998146391618673910,	-0.998149433305797860,	
+-0.998152472497548130,	-0.998155509193917270,	-0.998158543394897620,	-0.998161575100481540,	-0.998164604310661560,	-0.998167631025430160,	-0.998170655244779550,	-0.998173676968702410,	
+-0.998176696197191070,	-0.998179712930237990,	-0.998182727167835520,	-0.998185738909976310,	-0.998188748156652820,	-0.998191754907857390,	-0.998194759163582580,	-0.998197760923820840,	
+-0.998200760188564740,	-0.998203756957806720,	-0.998206751231539350,	-0.998209743009755070,	-0.998212732292446340,	-0.998215719079605930,	-0.998218703371226090,	-0.998221685167299590,	
+-0.998224664467818880,	-0.998227641272776520,	-0.998230615582164970,	-0.998233587395976900,	-0.998236556714204970,	-0.998239523536841530,	-0.998242487863879370,	-0.998245449695310930,	
+-0.998248409031128880,	-0.998251365871325790,	-0.998254320215894330,	-0.998257272064827060,	-0.998260221418116540,	-0.998263168275755560,	-0.998266112637736570,	-0.998269054504052340,	
+-0.998271993874695560,	-0.998274930749658670,	-0.998277865128934460,	-0.998280797012515710,	-0.998283726400394870,	-0.998286653292564720,	-0.998289577689017940,	-0.998292499589747200,	
+-0.998295418994745280,	-0.998298335904004740,	-0.998301250317518480,	-0.998304162235278960,	-0.998307071657279050,	-0.998309978583511560,	-0.998312883013969030,	-0.998315784948644370,	
+-0.998318684387530130,	-0.998321581330619210,	-0.998324475777904400,	-0.998327367729378360,	-0.998330257185033990,	-0.998333144144863850,	-0.998336028608860950,	-0.998338910577017960,	
+-0.998341790049327660,	-0.998344667025782840,	-0.998347541506376390,	-0.998350413491101100,	-0.998353282979949850,	-0.998356149972915330,	-0.998359014469990420,	-0.998361876471168030,	
+-0.998364735976440820,	-0.998367592985801910,	-0.998370447499243970,	-0.998373299516759900,	-0.998376149038342600,	-0.998378996063984840,	-0.998381840593679740,	-0.998384682627419970,	
+-0.998387522165198440,	-0.998390359207008140,	-0.998393193752841970,	-0.998396025802692820,	-0.998398855356553590,	-0.998401682414417180,	-0.998404506976276580,	-0.998407329042124810,	
+-0.998410148611954540,	-0.998412965685759100,	-0.998415780263531170,	-0.998418592345263760,	-0.998421401930949860,	-0.998424209020582490,	-0.998427013614154530,	-0.998429815711659120,	
+-0.998432615313089130,	-0.998435412418437580,	-0.998438207027697590,	-0.998440999140862040,	-0.998443788757923940,	-0.998446575878876420,	-0.998449360503712470,	-0.998452142632425100,	
+-0.998454922265007320,	-0.998457699401452240,	-0.998460474041752980,	-0.998463246185902540,	-0.998466015833893940,	-0.998468782985720280,	-0.998471547641374800,	-0.998474309800850280,	
+-0.998477069464140050,	-0.998479826631237240,	-0.998482581302134740,	-0.998485333476825780,	-0.998488083155303570,	-0.998490830337561140,	-0.998493575023591600,	-0.998496317213388160,	
+-0.998499056906943850,	-0.998501794104251990,	-0.998504528805305600,	-0.998507261010097900,	-0.998509990718622010,	-0.998512717930871150,	-0.998515442646838560,	-0.998518164866517340,	
+-0.998520884589900630,	-0.998523601816981850,	-0.998526316547753920,	-0.998529028782210280,	-0.998531738520344050,	-0.998534445762148560,	-0.998537150507616820,	-0.998539852756742290,	
+-0.998542552509518070,	-0.998545249765937500,	-0.998547944525993820,	-0.998550636789680260,	-0.998553326556990140,	-0.998556013827916700,	-0.998558698602453170,	-0.998561380880592870,	
+-0.998564060662329170,	-0.998566737947655380,	-0.998569412736564630,	-0.998572085029050480,	-0.998574754825106050,	-0.998577422124724670,	-0.998580086927899790,	-0.998582749234624760,	
+-0.998585409044892790,	-0.998588066358697350,	-0.998590721176031650,	-0.998593373496889150,	-0.998596023321263290,	-0.998598670649147310,	-0.998601315480534770,	-0.998603957815418770,	
+-0.998606597653793000,	-0.998609234995650690,	-0.998611869840985380,	-0.998614502189790310,	-0.998617132042058930,	-0.998619759397784800,	-0.998622384256961260,	-0.998625006619581760,	
+-0.998627626485639740,	-0.998630243855128660,	-0.998632858728041970,	-0.998635471104373120,	-0.998638080984115660,	-0.998640688367262940,	-0.998643293253808520,	-0.998645895643745840,	
+-0.998648495537068360,	-0.998651092933769750,	-0.998653687833843340,	-0.998656280237282810,	-0.998658870144081500,	-0.998661457554232970,	-0.998664042467730880,	-0.998666624884568700,	
+-0.998669204804739860,	-0.998671782228238050,	-0.998674357155056810,	-0.998676929585189720,	-0.998679499518630220,	-0.998682066955371980,	-0.998684631895408680,	-0.998687194338733650,	
+-0.998689754285340680,	-0.998692311735223440,	-0.998694866688375260,	-0.998697419144790040,	-0.998699969104461240,	-0.998702516567382400,	-0.998705061533547430,	-0.998707604002949670,	
+-0.998710143975583000,	-0.998712681451440990,	-0.998715216430517190,	-0.998717748912805400,	-0.998720278898299170,	-0.998722806386992400,	-0.998725331378878420,	-0.998727853873951240,	
+-0.998730373872204420,	-0.998732891373631640,	-0.998735406378226550,	-0.998737918885983070,	-0.998740428896894740,	-0.998742936410955350,	-0.998745441428158690,	-0.998747943948498310,	
+-0.998750443971968100,	-0.998752941498561750,	-0.998755436528273140,	-0.998757929061095840,	-0.998760419097023840,	-0.998762906636050720,	-0.998765391678170360,	-0.998767874223376430,	
+-0.998770354271662940,	-0.998772831823023450,	-0.998775306877451970,	-0.998777779434942170,	-0.998780249495487940,	-0.998782717059083060,	-0.998785182125721430,	-0.998787644695396830,	
+-0.998790104768103150,	-0.998792562343834180,	-0.998795017422583810,	-0.998797470004345820,	-0.998799920089114220,	-0.998802367676882910,	-0.998804812767645540,	-0.998807255361396250,	
+-0.998809695458128700,	-0.998812133057837000,	-0.998814568160514950,	-0.998817000766156540,	-0.998819430874755550,	-0.998821858486306000,	-0.998824283600801780,	-0.998826706218236880,	
+-0.998829126338605210,	-0.998831543961900660,	-0.998833959088117340,	-0.998836371717249150,	-0.998838781849289980,	-0.998841189484233840,	-0.998843594622074730,	-0.998845997262806650,	
+-0.998848397406423620,	-0.998850795052919520,	-0.998853190202288470,	-0.998855582854524470,	-0.998857973009621420,	-0.998860360667573550,	-0.998862745828374640,	-0.998865128492019030,	
+-0.998867508658500490,	-0.998869886327813260,	-0.998872261499951230,	-0.998874634174908630,	-0.998877004352679340,	-0.998879372033257610,	-0.998881737216637420,	-0.998884099902812910,	
+-0.998886460091778170,	-0.998888817783527230,	-0.998891172978054300,	-0.998893525675353390,	-0.998895875875418730,	-0.998898223578244320,	-0.998900568783824380,	-0.998902911492153050,	
+-0.998905251703224310,	-0.998907589417032620,	-0.998909924633571870,	-0.998912257352836290,	-0.998914587574820100,	-0.998916915299517430,	-0.998919240526922380,	-0.998921563257029410,	
+-0.998923883489832410,	-0.998926201225325720,	-0.998928516463503560,	-0.998930829204360050,	-0.998933139447889530,	-0.998935447194086110,	-0.998937752442944140,	-0.998940055194457720,	
+-0.998942355448621200,	-0.998944653205428800,	-0.998946948464874750,	-0.998949241226953390,	-0.998951531491658830,	-0.998953819258985520,	-0.998956104528927580,	-0.998958387301479460,	
+-0.998960667576635260,	-0.998962945354389450,	-0.998965220634736360,	-0.998967493417670100,	-0.998969763703185240,	-0.998972031491275890,	-0.998974296781936390,	-0.998976559575161290,	
+-0.998978819870944720,	-0.998981077669281130,	-0.998983332970164730,	-0.998985585773590090,	-0.998987836079551550,	-0.998990083888043330,	-0.998992329199059890,	-0.998994572012595670,	
+-0.998996812328645010,	-0.998999050147202360,	-0.999001285468262060,	-0.999003518291818550,	-0.999005748617866170,	-0.999007976446399490,	-0.999010201777412840,	-0.999012424610900780,	
+-0.999014644946857540,	-0.999016862785277790,	-0.999019078126155760,	-0.999021290969486110,	-0.999023501315263300,	-0.999025709163481550,	-0.999027914514135640,	-0.999030117367220030,	
+-0.999032317722729050,	-0.999034515580657260,	-0.999036710940999110,	-0.999038903803749270,	-0.999041094168902190,	-0.999043282036452320,	-0.999045467406394330,	-0.999047650278722550,	
+-0.999049830653431780,	-0.999052008530516340,	-0.999054183909970920,	-0.999056356791789950,	-0.999058527175968210,	-0.999060695062500060,	-0.999062860451380260,	-0.999065023342603280,	
+-0.999067183736163770,	-0.999069341632056180,	-0.999071497030275310,	-0.999073649930815710,	-0.999075800333672050,	-0.999077948238838780,	-0.999080093646310670,	-0.999082236556082300,	
+-0.999084376968148450,	-0.999086514882503550,	-0.999088650299142400,	-0.999090783218059660,	-0.999092913639249900,	-0.999095041562707900,	-0.999097166988428210,	-0.999099289916405730,	
+-0.999101410346634910,	-0.999103528279110640,	-0.999105643713827480,	-0.999107756650780330,	-0.999109867089963740,	-0.999111975031372390,	-0.999114080475001280,	-0.999116183420844850,	
+-0.999118283868897890,	-0.999120381819155300,	-0.999122477271611850,	-0.999124570226262110,	-0.999126660683100960,	-0.999128748642123090,	-0.999130834103323480,	-0.999132917066696710,	
+-0.999134997532237670,	-0.999137075499941130,	-0.999139150969801880,	-0.999141223941814700,	-0.999143294415974600,	-0.999145362392276140,	-0.999147427870714310,	-0.999149490851284020,	
+-0.999151551333979930,	-0.999153609318796930,	-0.999155664805729930,	-0.999157717794773690,	-0.999159768285923230,	-0.999161816279173330,	-0.999163861774518990,	-0.999165904771954880,	
+-0.999167945271476010,	-0.999169983273077380,	-0.999172018776753660,	-0.999174051782499960,	-0.999176082290311070,	-0.999178110300182110,	-0.999180135812107740,	-0.999182158826083080,	
+-0.999184179342103020,	-0.999186197360162560,	-0.999188212880256610,	-0.999190225902380050,	-0.999192236426527990,	-0.999194244452695330,	-0.999196249980876970,	-0.999198253011068130,	
+-0.999200253543263580,	-0.999202251577458340,	-0.999204247113647530,	-0.999206240151826130,	-0.999208230691989160,	-0.999210218734131520,	-0.999212204278248420,	-0.999214187324334760,	
+-0.999216167872385540,	-0.999218145922395990,	-0.999220121474361120,	-0.999222094528275930,	-0.999224065084135530,	-0.999226033141934810,	-0.999227998701669230,	-0.999229961763333450,	
+-0.999231922326922930,	-0.999233880392432550,	-0.999235835959857430,	-0.999237789029192690,	-0.999239739600433550,	-0.999241687673575020,	-0.999243633248612320,	-0.999245576325540560,	
+-0.999247516904354760,	-0.999249454985050240,	-0.999251390567622020,	-0.999253323652065430,	-0.999255254238375470,	-0.999257182326547370,	-0.999259107916576240,	-0.999261031008457420,	
+-0.999262951602186030,	-0.999264869697757300,	-0.999266785295166330,	-0.999268698394408460,	-0.999270608995478820,	-0.999272517098372610,	-0.999274422703085090,	-0.999276325809611570,	
+-0.999278226417947280,	-0.999280124528087340,	-0.999282020140027090,	-0.999283913253761870,	-0.999285803869286780,	-0.999287691986597280,	-0.999289577605688480,	-0.999291460726555720,	
+-0.999293341349194340,	-0.999295219473599560,	-0.999297095099766830,	-0.999298968227691260,	-0.999300838857368310,	-0.999302706988793310,	-0.999304572621961480,	-0.999306435756868280,	
+-0.999308296393508930,	-0.999310154531878880,	-0.999312010171973350,	-0.999313863313787910,	-0.999315713957317770,	-0.999317562102558400,	-0.999319407749505010,	-0.999321250898153160,	
+-0.999323091548498190,	-0.999324929700535550,	-0.999326765354260460,	-0.999328598509668600,	-0.999330429166755190,	-0.999332257325515670,	-0.999334082985945500,	-0.999335906148040130,	
+-0.999337726811795000,	-0.999339544977205560,	-0.999341360644267260,	-0.999343173812975550,	-0.999344984483325980,	-0.999346792655313900,	-0.999348598328934750,	-0.999350401504184190,	
+-0.999352202181057690,	-0.999354000359550580,	-0.999355796039658520,	-0.999357589221376960,	-0.999359379904701360,	-0.999361168089627380,	-0.999362953776150480,	-0.999364736964266200,	
+-0.999366517653970110,	-0.999368295845257660,	-0.999370071538124520,	-0.999371844732566130,	-0.999373615428578170,	-0.999375383626156190,	-0.999377149325295750,	-0.999378912525992420,	
+-0.999380673228241760,	-0.999382431432039530,	-0.999384187137381090,	-0.999385940344262310,	-0.999387691052678660,	-0.999389439262625690,	-0.999391184974099180,	-0.999392928187094690,	
+-0.999394668901607890,	-0.999396407117634440,	-0.999398142835170030,	-0.999399876054210100,	-0.999401606774750650,	-0.999403334996787130,	-0.999405060720315210,	-0.999406783945330670,	
+-0.999408504671829180,	-0.999410222899806410,	-0.999411938629258150,	-0.999413651860179940,	-0.999415362592567690,	-0.999417070826416950,	-0.999418776561723620,	-0.999420479798483250,	
+-0.999422180536691850,	-0.999423878776344870,	-0.999425574517438190,	-0.999427267759967600,	-0.999428958503928880,	-0.999430646749317700,	-0.999432332496129950,	-0.999434015744361300,	
+-0.999435696494007650,	-0.999437374745064780,	-0.999439050497528460,	-0.999440723751394590,	-0.999442394506658840,	-0.999444062763317100,	-0.999445728521365150,	-0.999447391780798890,	
+-0.999449052541614200,	-0.999450710803806870,	-0.999452366567372800,	-0.999454019832307860,	-0.999455670598607740,	-0.999457318866268540,	-0.999458964635285940,	-0.999460607905656050,	
+-0.999462248677374540,	-0.999463886950437420,	-0.999465522724840680,	-0.999467156000580000,	-0.999468786777651500,	-0.999470415056051050,	-0.999472040835774570,	-0.999473664116817930,	
+-0.999475284899177140,	-0.999476903182848210,	-0.999478518967826910,	-0.999480132254109480,	-0.999481743041691570,	-0.999483351330569310,	-0.999484957120738700,	-0.999486560412195750,	
+-0.999488161204936330,	-0.999489759498956580,	-0.999491355294252370,	-0.999492948590819830,	-0.999494539388654850,	-0.999496127687753530,	-0.999497713488111890,	-0.999499296789726040,	
+-0.999500877592591870,	-0.999502455896705500,	-0.999504031702063030,	-0.999505605008660480,	-0.999507175816493950,	-0.999508744125559460,	-0.999510309935853100,	-0.999511873247371010,	
+-0.999513434060109170,	-0.999514992374063720,	-0.999516548189230860,	-0.999518101505606600,	-0.999519652323187070,	-0.999521200641968480,	-0.999522746461946830,	-0.999524289783118250,	
+-0.999525830605479060,	-0.999527368929025270,	-0.999528904753753000,	-0.999530438079658580,	-0.999531968906737900,	-0.999533497234987410,	-0.999535023064403230,	-0.999536546394981350,	
+-0.999538067226718230,	-0.999539585559609870,	-0.999541101393652600,	-0.999542614728842540,	-0.999544125565175910,	-0.999545633902649060,	-0.999547139741258080,	-0.999548643080999220,	
+-0.999550143921868810,	-0.999551642263862950,	-0.999553138106978100,	-0.999554631451210260,	-0.999556122296555990,	-0.999557610643011300,	-0.999559096490572620,	-0.999560579839236300,	
+-0.999562060688998440,	-0.999563539039855400,	-0.999565014891803600,	-0.999566488244839180,	-0.999567959098958570,	-0.999569427454158000,	-0.999570893310434030,	-0.999572356667782660,	
+-0.999573817526200450,	-0.999575275885683730,	-0.999576731746228850,	-0.999578185107832030,	-0.999579635970489820,	-0.999581084334198570,	-0.999582530198954490,	-0.999583973564754150,	
+-0.999585414431593880,	-0.999586852799470020,	-0.999588288668379120,	-0.999589722038317420,	-0.999591152909281470,	-0.999592581281267600,	-0.999594007154272270,	-0.999595430528292030,	
+-0.999596851403323110,	-0.999598269779362060,	-0.999599685656405330,	-0.999601099034449380,	-0.999602509913490760,	-0.999603918293525790,	-0.999605324174551060,	-0.999606727556563100,	
+-0.999608128439558150,	-0.999609526823532990,	-0.999610922708484060,	-0.999612316094407700,	-0.999613706981300590,	-0.999615095369159270,	-0.999616481257980190,	-0.999617864647759920,	
+-0.999619245538494900,	-0.999620623930181810,	-0.999621999822817190,	-0.999623373216397600,	-0.999624744110919510,	-0.999626112506379560,	-0.999627478402774330,	-0.999628841800100480,	
+-0.999630202698354450,	-0.999631561097532930,	-0.999632916997632570,	-0.999634270398649830,	-0.999635621300581480,	-0.999636969703423970,	-0.999638315607174200,	-0.999639659011828500,	
+-0.999640999917383750,	-0.999642338323836420,	-0.999643674231183280,	-0.999645007639420990,	-0.999646338548546120,	-0.999647666958555450,	-0.999648992869445530,	-0.999650316281213260,	
+-0.999651637193855080,	-0.999652955607367890,	-0.999654271521748240,	-0.999655584936993020,	-0.999656895853098800,	-0.999658204270062250,	-0.999659510187880240,	-0.999660813606549460,	
+-0.999662114526066680,	-0.999663412946428580,	-0.999664708867632030,	-0.999666002289673620,	-0.999667293212550210,	-0.999668581636258600,	-0.999669867560795460,	-0.999671150986157660,	
+-0.999672431912342120,	-0.999673710339345380,	-0.999674986267164440,	-0.999676259695795990,	-0.999677530625236900,	-0.999678799055483960,	-0.999680064986533940,	-0.999681328418383860,	
+-0.999682589351030490,	-0.999683847784470610,	-0.999685103718701120,	-0.999686357153718900,	-0.999687608089520730,	-0.999688856526103510,	-0.999690102463464240,	-0.999691345901599690,	
+-0.999692586840506770,	-0.999693825280182360,	-0.999695061220623350,	-0.999696294661826750,	-0.999697525603789440,	-0.999698754046508320,	-0.999699979989980280,	-0.999701203434202210,	
+-0.999702424379171230,	-0.999703642824884220,	-0.999704858771337970,	-0.999706072218529700,	-0.999707283166456180,	-0.999708491615114550,	-0.999709697564501560,	-0.999710901014614350,	
+-0.999712101965450020,	-0.999713300417005240,	-0.999714496369277340,	-0.999715689822263220,	-0.999716880775959770,	-0.999718069230364210,	-0.999719255185473440,	-0.999720438641284570,	
+-0.999721619597794490,	-0.999722798055000420,	-0.999723974012899360,	-0.999725147471488440,	-0.999726318430764540,	-0.999727486890724990,	-0.999728652851366580,	-0.999729816312686540,	
+-0.999730977274682080,	-0.999732135737350090,	-0.999733291700687810,	-0.999734445164692230,	-0.999735596129360580,	-0.999736744594689860,	-0.999737890560677410,	-0.999739034027320230,	
+-0.999740174994615320,	-0.999741313462560120,	-0.999742449431151540,	-0.999743582900386900,	-0.999744713870263310,	-0.999745842340777900,	-0.999746968311927890,	-0.999748091783710490,	
+-0.999749212756122830,	-0.999750331229162130,	-0.999751447202825600,	-0.999752560677110490,	-0.999753671652013900,	-0.999754780127533270,	-0.999755886103665500,	-0.999756989580408150,	
+-0.999758090557758330,	-0.999759189035713260,	-0.999760285014270170,	-0.999761378493426500,	-0.999762469473179260,	-0.999763557953525890,	-0.999764643934463630,	-0.999765727415989680,	
+-0.999766808398101500,	-0.999767886880796320,	-0.999768962864071350,	-0.999770036347924050,	-0.999771107332351530,	-0.999772175817351340,	-0.999773241802920710,	-0.999774305289056970,	
+-0.999775366275757470,	-0.999776424763019530,	-0.999777480750840610,	-0.999778534239217920,	-0.999779585228148800,	-0.999780633717630930,	-0.999781679707661300,	-0.999782723198237580,	
+-0.999783764189356990,	-0.999784802681016990,	-0.999785838673215020,	-0.999786872165948410,	-0.999787903159214620,	-0.999788931653011080,	-0.999789957647335250,	-0.999790981142184560,	
+-0.999792002137556370,	-0.999793020633448100,	-0.999794036629857330,	-0.999795050126781490,	-0.999796061124218040,	-0.999797069622164410,	-0.999798075620618180,	-0.999799079119576660,	
+-0.999800080119037430,	-0.999801078618998140,	-0.999802074619456030,	-0.999803068120408760,	-0.999804059121853770,	-0.999805047623788750,	-0.999806033626211010,	-0.999807017129118240,	
+-0.999807998132507980,	-0.999808976636377580,	-0.999809952640724810,	-0.999810926145547230,	-0.999811897150842290,	-0.999812865656607540,	-0.999813831662840660,	-0.999814795169539310,	
+-0.999815756176700820,	-0.999816714684322980,	-0.999817670692403460,	-0.999818624200939590,	-0.999819575209929260,	-0.999820523719370020,	-0.999821469729259450,	-0.999822413239595200,	
+-0.999823354250374830,	-0.999824292761596230,	-0.999825228773256750,	-0.999826162285354260,	-0.999827093297886440,	-0.999828021810850840,	-0.999828947824245140,	-0.999829871338067110,	
+-0.999830792352314310,	-0.999831710866984640,	-0.999832626882075640,	-0.999833540397585100,	-0.999834451413510790,	-0.999835359929850180,	-0.999836265946601240,	-0.999837169463761670,	
+-0.999838070481329220,	-0.999838968999301470,	-0.999839865017676410,	-0.999840758536451600,	-0.999841649555624930,	-0.999842538075194190,	-0.999843424095157030,	-0.999844307615511350,	
+-0.999845188636254930,	-0.999846067157385440,	-0.999846943178900880,	-0.999847816700798920,	-0.999848687723077440,	-0.999849556245734240,	-0.999850422268767080,	-0.999851285792173970,	
+-0.999852146815952580,	-0.999853005340100800,	-0.999853861364616510,	-0.999854714889497620,	-0.999855565914742010,	-0.999856414440347340,	-0.999857260466311740,	-0.999858103992632860,	
+-0.999858945019308830,	-0.999859783546337420,	-0.999860619573716520,	-0.999861453101444140,	-0.999862284129518050,	-0.999863112657936370,	-0.999863938686696760,	-0.999864762215797340,	
+-0.999865583245236110,	-0.999866401775010850,	-0.999867217805119560,	-0.999868031335560240,	-0.999868842366330890,	-0.999869650897429410,	-0.999870456928853790,	-0.999871260460602040,	
+-0.999872061492672160,	-0.999872860025062040,	-0.999873656057769900,	-0.999874449590793520,	-0.999875240624131020,	-0.999876029157780510,	-0.999876815191739880,	-0.999877598726007120,	
+-0.999878379760580470,	-0.999879158295457810,	-0.999879934330637270,	-0.999880707866116940,	-0.999881478901894830,	-0.999882247437969050,	-0.999883013474337610,	-0.999883777010998620,	
+-0.999884538047950190,	-0.999885296585190430,	-0.999886052622717350,	-0.999886806160529270,	-0.999887557198624100,	-0.999888305737000050,	-0.999889051775655240,	-0.999889795314587880,	
+-0.999890536353795880,	-0.999891274893277670,	-0.999892010933031260,	-0.999892744473054760,	-0.999893475513346400,	-0.999894204053904390,	-0.999894930094726850,	-0.999895653635812010,	
+-0.999896374677157970,	-0.999897093218763080,	-0.999897809260625440,	-0.999898522802743160,	-0.999899233845114700,	-0.999899942387738160,	-0.999900648430611770,	-0.999901351973733640,	
+-0.999902053017102220,	-0.999902751560715730,	-0.999903447604572280,	-0.999904141148670210,	-0.999904832193007740,	-0.999905520737583320,	-0.999906206782394950,	-0.999906890327441180,	
+-0.999907571372720130,	-0.999908249918230130,	-0.999908925963969630,	-0.999909599509936740,	-0.999910270556129800,	-0.999910939102547250,	-0.999911605149187310,	-0.999912268696048320,	
+-0.999912929743128730,	-0.999913588290426870,	-0.999914244337940960,	-0.999914897885669450,	-0.999915548933610680,	-0.999916197481763080,	-0.999916843530124890,	-0.999917487078694660,	
+-0.999918128127470720,	-0.999918766676451520,	-0.999919402725635290,	-0.999920036275020570,	-0.999920667324605830,	-0.999921295874389380,	-0.999921921924369680,	-0.999922545474545180,	
+-0.999923166524914420,	-0.999923785075475640,	-0.999924401126227380,	-0.999925014677168100,	-0.999925625728296350,	-0.999926234279610580,	-0.999926840331109120,	-0.999927443882790650,	
+-0.999928044934653480,	-0.999928643486696300,	-0.999929239538917440,	-0.999929833091315450,	-0.999930424143888890,	-0.999931012696636310,	-0.999931598749556280,	-0.999932182302647130,	
+-0.999932763355907530,	-0.999933341909336030,	-0.999933917962931180,	-0.999934491516691560,	-0.999935062570615710,	-0.999935631124702300,	-0.999936197178949660,	-0.999936760733356580,	
+-0.999937321787921610,	-0.999937880342643300,	-0.999938436397520340,	-0.999938989952551260,	-0.999939541007734740,	-0.999940089563069350,	-0.999940635618553620,	-0.999941179174186460,	
+-0.999941720229966300,	-0.999942258785891820,	-0.999942794841961690,	-0.999943328398174680,	-0.999943859454529240,	-0.999944388011024140,	-0.999944914067658170,	-0.999945437624429780,	
+-0.999945958681337840,	-0.999946477238381040,	-0.999946993295558140,	-0.999947506852867600,	-0.999948017910308410,	-0.999948526467879020,	-0.999949032525578430,	-0.999949536083405310,	
+-0.999950037141358220,	-0.999950535699436150,	-0.999951031757637670,	-0.999951525315961650,	-0.999952016374406780,	-0.999952504932971830,	-0.999952990991655690,	-0.999953474550457130,	
+-0.999953955609374720,	-0.999954434168407570,	-0.999954910227554230,	-0.999955383786813700,	-0.999955854846184660,	-0.999956323405665980,	-0.999956789465256570,	-0.999957253024955080,	
+-0.999957714084760530,	-0.999958172644671680,	-0.999958628704687440,	-0.999959082264806560,	-0.999959533325027960,	-0.999959981885350510,	-0.999960427945773220,	-0.999960871506294760,	
+-0.999961312566914230,	-0.999961751127630310,	-0.999962187188441990,	-0.999962620749348270,	-0.999963051810348060,	-0.999963480371440120,	-0.999963906432623560,	-0.999964329993897170,	
+-0.999964751055259950,	-0.999965169616710890,	-0.999965585678248890,	-0.999965999239872950,	-0.999966410301581950,	-0.999966818863375020,	-0.999967224925250920,	-0.999967628487208880,	
+-0.999968029549247680,	-0.999968428111366440,	-0.999968824173564140,	-0.999969217735839800,	-0.999969608798192410,	-0.999969997360620980,	-0.999970383423124500,	-0.999970766985702090,	
+-0.999971148048352850,	-0.999971526611075690,	-0.999971902673869710,	-0.999972276236733900,	-0.999972647299667510,	-0.999973015862669400,	-0.999973381925738810,	-0.999973745488874850,	
+-0.999974106552076410,	-0.999974465115342710,	-0.999974821178672870,	-0.999975174742065990,	-0.999975525805521180,	-0.999975874369037570,	-0.999976220432614250,	-0.999976563996250340,	
+-0.999976905059945080,	-0.999977243623697550,	-0.999977579687506890,	-0.999977913251372310,	-0.999978244315292920,	-0.999978572879267950,	-0.999978898943296500,	-0.999979222507377810,	
+-0.999979543571511090,	-0.999979862135695450,	-0.999980178199930240,	-0.999980491764214550,	-0.999980802828547620,	-0.999981111392928670,	-0.999981417457357020,	-0.999981721021831800,	
+-0.999982022086352230,	-0.999982320650917630,	-0.999982616715527240,	-0.999982910280180270,	-0.999983201344876060,	-0.999983489909613830,	-0.999983775974392920,	-0.999984059539212540,	
+-0.999984340604071930,	-0.999984619168970630,	-0.999984895233907660,	-0.999985168798882550,	-0.999985439863894430,	-0.999985708428942740,	-0.999985974494026710,	-0.999986238059145880,	
+-0.999986499124299380,	-0.999986757689486640,	-0.999987013754707000,	-0.999987267319959790,	-0.999987518385244470,	-0.999987766950560350,	-0.999988013015906780,	-0.999988256581283210,	
+-0.999988497646689070,	-0.999988736212123590,	-0.999988972277586320,	-0.999989205843076490,	-0.999989436908593770,	-0.999989665474137480,	-0.999989891539706970,	-0.999990115105301780,	
+-0.999990336170921260,	-0.999990554736564840,	-0.999990770802232090,	-0.999990984367922440,	-0.999991195433635350,	-0.999991403999370140,	-0.999991610065126600,	-0.999991813630903950,	
+-0.999992014696701740,	-0.999992213262519520,	-0.999992409328356760,	-0.999992602894212990,	-0.999992793960087670,	-0.999992982525980460,	-0.999993168591890690,	-0.999993352157818040,	
+-0.999993533223762050,	-0.999993711789722180,	-0.999993887855698090,	-0.999994061421689230,	-0.999994232487695140,	-0.999994401053715620,	-0.999994567119749990,	-0.999994730685798030,	
+-0.999994891751859180,	-0.999995050317933120,	-0.999995206384019400,	-0.999995359950117680,	-0.999995511016227630,	-0.999995659582348710,	-0.999995805648480670,	-0.999995949214623090,	
+-0.999996090280775740,	-0.999996228846938060,	-0.999996364913109840,	-0.999996498479290730,	-0.999996629545480410,	-0.999996758111678430,	-0.999996884177884570,	-0.999997007744098500,	
+-0.999997128810319990,	-0.999997247376548600,	-0.999997363442784120,	-0.999997477009026190,	-0.999997588075274610,	-0.999997696641529040,	-0.999997802707789150,	-0.999997906274054830,	
+-0.999998007340325730,	-0.999998105906601650,	-0.999998201972882250,	-0.999998295539167410,	-0.999998386605456810,	-0.999998475171750220,	-0.999998561238047420,	-0.999998644804348300,	
+-0.999998725870652530,	-0.999998804436959880,	-0.999998880503270350,	-0.999998954069583500,	-0.999999025135899330,	-0.999999093702217620,	-0.999999159768538040,	-0.999999223334860690,	
+-0.999999284401185240,	-0.999999342967511580,	-0.999999399033839610,	-0.999999452600169090,	-0.999999503666499920,	-0.999999552232832100,	-0.999999598299165290,	-0.999999641865499500,	
+-0.999999682931834610,	-0.999999721498170510,	-0.999999757564507100,	-0.999999791130844360,	-0.999999822197182090,	-0.999999850763520270,	-0.999999876829858910,	-0.999999900396197680,	
+-0.999999921462536800,	-0.999999940028876160,	-0.999999956095215640,	-0.999999969661555240,	-0.999999980727894870,	-0.999999989294234610,	-0.999999995360574270,	-0.999999998926914050,	
+-0.999999999993253730,	-0.999999998559593540,	-0.999999994625933250,	-0.999999988192273090,	-0.999999979258612840,	-0.999999967824952710,	-0.999999953891292590,	-0.999999937457632600,	
+-0.999999918523972850,	-0.999999897090313230,	-0.999999873156653950,	-0.999999846722994910,	-0.999999817789336220,	-0.999999786355678100,	-0.999999752422020440,	-0.999999715988363350,	
+-0.999999677054707050,	-0.999999635621051540,	-0.999999591687396940,	-0.999999545253743350,	-0.999999496320091000,	-0.999999444886439770,	-0.999999390952790000,	-0.999999334519141690,	
+-0.999999275585495170,	-0.999999214151850340,	-0.999999150218207510,	-0.999999083784566810,	-0.999999014850928350,	-0.999998943417292450,	-0.999998869483659130,	-0.999998793050028700,	
+-0.999998714116401180,	-0.999998632682777000,	-0.999998548749156170,	-0.999998462315538910,	-0.999998373381925540,	-0.999998281948316300,	-0.999998188014711300,	-0.999998091581110860,	
+-0.999997992647515100,	-0.999997891213924460,	-0.999997787280339060,	-0.999997680846759220,	-0.999997571913185170,	-0.999997460479617130,	-0.999997346546055540,	-0.999997230112500520,	
+-0.999997111178952400,	-0.999996989745411510,	-0.999996865811878190,	-0.999996739378352760,	-0.999996610444835340,	-0.999996479011326490,	-0.999996345077826420,	-0.999996208644335470,	
+-0.999996069710853970,	-0.999995928277382370,	-0.999995784343920890,	-0.999995637910470080,	-0.999995488977030060,	-0.999995337543601260,	-0.999995183610184250,	-0.999995027176779240,	
+-0.999994868243386570,	-0.999994706810006790,	-0.999994542876640360,	-0.999994376443287370,	-0.999994207509948610,	-0.999994036076624290,	-0.999993862143314760,	-0.999993685710020670,	
+-0.999993506776742370,	-0.999993325343480290,	-0.999993141410234990,	-0.999992954977006690,	-0.999992766043796060,	-0.999992574610603540,	-0.999992380677429570,	-0.999992184244274610,	
+-0.999991985311139310,	-0.999991783878023900,	-0.999991579944929150,	-0.999991373511855300,	-0.999991164578803100,	-0.999990953145773020,	-0.999990739212765600,	-0.999990522779781290,	
+-0.999990303846820640,	-0.999990082413884210,	-0.999989858480972550,	-0.999989632048086330,	-0.999989403115225990,	-0.999989171682392210,	-0.999988937749585420,	-0.999988701316806280,	
+-0.999988462384055480,	-0.999988220951333440,	-0.999987977018640840,	-0.999987730585978340,	-0.999987481653346500,	-0.999987230220745980,	-0.999986976288177340,	-0.999986719855641360,	
+-0.999986460923138480,	-0.999986199490669470,	-0.999985935558234900,	-0.999985669125835640,	-0.999985400193472040,	-0.999985128761145090,	-0.999984854828855240,	-0.999984578396603260,	
+-0.999984299464389830,	-0.999984018032215700,	-0.999983734100081460,	-0.999983447667987970,	-0.999983158735935800,	-0.999982867303925720,	-0.999982573371958510,	-0.999982276940034830,	
+-0.999981978008155470,	-0.999981676576321200,	-0.999981372644532680,	-0.999981066212790700,	-0.999980757281096140,	-0.999980445849449670,	-0.999980131917852070,	-0.999979815486304210,	
+-0.999979496554806670,	-0.999979175123360540,	-0.999978851191966390,	-0.999978524760625100,	-0.999978195829337560,	-0.999977864398104430,	-0.999977530466926720,	-0.999977194035805210,	
+-0.999976855104740660,	-0.999976513673733970,	-0.999976169742786030,	-0.999975823311897600,	-0.999975474381069710,	-0.999975122950303110,	-0.999974769019598700,	-0.999974412588957250,	
+-0.999974053658379880,	-0.999973692227867360,	-0.999973328297420690,	-0.999972961867040540,	-0.999972592936728130,	-0.999972221506484130,	-0.999971847576309640,	-0.999971471146205550,	
+-0.999971092216172750,	-0.999970710786212250,	-0.999970326856324920,	-0.999969940426511770,	-0.999969551496773800,	-0.999969160067111900,	-0.999968766137527170,	-0.999968369708020500,	
+-0.999967970778592900,	-0.999967569349245360,	-0.999967165419978990,	-0.999966758990794570,	-0.999966350061693320,	-0.999965938632676240,	-0.999965524703744220,	-0.999965108274898480,	
+-0.999964689346139910,	-0.999964267917469620,	-0.999963843988888710,	-0.999963417560398080,	-0.999962988631999060,	-0.999962557203692430,	-0.999962123275479510,	-0.999961686847361200,	
+-0.999961247919338710,	-0.999960806491413170,	-0.999960362563585560,	-0.999959916135857000,	-0.999959467208228700,	-0.999959015780701680,	-0.999958561853277140,	-0.999958105425956200,	
+-0.999957646498740080,	-0.999957185071629780,	-0.999956721144626530,	-0.999956254717731420,	-0.999955785790945680,	-0.999955314364270540,	-0.999954840437707100,	-0.999954364011256480,	
+-0.999953885084920000,	-0.999953403658698890,	-0.999952919732594150,	-0.999952433306607210,	-0.999951944380739090,	-0.999951452954991220,	-0.999950959029364590,	-0.999950462603860670,	
+-0.999949963678480550,	-0.999949462253225560,	-0.999948958328096830,	-0.999948451903095780,	-0.999947942978223540,	-0.999947431553481540,	-0.999946917628870890,	-0.999946401204392930,	
+-0.999945882280048990,	-0.999945360855840400,	-0.999944836931768390,	-0.999944310507834170,	-0.999943781584039290,	-0.999943250160384990,	-0.999942716236872480,	-0.999942179813503200,	
+-0.999941640890278480,	-0.999941099467199670,	-0.999940555544268080,	-0.999940009121485060,	-0.999939460198852050,	-0.999938908776370480,	-0.999938354854041590,	-0.999937798431866810,	
+-0.999937239509847480,	-0.999936678087985030,	-0.999936114166281030,	-0.999935547744736590,	-0.999934978823353360,	-0.999934407402132690,	-0.999933833481076010,	-0.999933257060184770,	
+-0.999932678139460300,	-0.999932096718904150,	-0.999931512798517770,	-0.999930926378302610,	-0.999930337458260210,	-0.999929746038391910,	-0.999929152118699260,	-0.999928555699183710,	
+-0.999927956779846800,	-0.999927355360689880,	-0.999926751441714720,	-0.999926145022922650,	-0.999925536104315120,	-0.999924924685893890,	-0.999924310767660310,	-0.999923694349615920,	
+-0.999923075431762290,	-0.999922454014100960,	-0.999921830096633490,	-0.999921203679361550,	-0.999920574762286460,	-0.999919943345410010,	-0.999919309428733750,	-0.999918673012259120,	
+-0.999918034095987780,	-0.999917392679921520,	-0.999916748764061670,	-0.999916102348409890,	-0.999915453432967950,	-0.999914802017737410,	-0.999914148102719720,	-0.999913491687916770,	
+-0.999912832773330100,	-0.999912171358961270,	-0.999911507444812050,	-0.999910841030884120,	-0.999910172117179030,	-0.999909500703698550,	-0.999908826790444240,	-0.999908150377417980,	
+-0.999907471464621220,	-0.999906790052055850,	-0.999906106139723530,	-0.999905419727625810,	-0.999904730815764700,	-0.999904039404141740,	-0.999903345492758610,	-0.999902649081617190,	
+-0.999901950170719030,	-0.999901248760066140,	-0.999900544849660070,	-0.999899838439502590,	-0.999899129529595590,	-0.999898418119940740,	-0.999897704210539810,	-0.999896987801394690,	
+-0.999896268892507050,	-0.999895547483878660,	-0.999894823575511520,	-0.999894097167407290,	-0.999893368259567870,	-0.999892636851994920,	-0.999891902944690440,	-0.999891166537656200,	
+-0.999890427630894090,	-0.999889686224405880,	-0.999888942318193360,	-0.999888195912258640,	-0.999887447006603370,	-0.999886695601229450,	-0.999885941696138760,	-0.999885185291333300,	
+-0.999884426386814850,	-0.999883664982585300,	-0.999882901078646640,	-0.999882134675000640,	-0.999881365771649430,	-0.999880594368594780,	-0.999879820465838560,	-0.999879044063382790,	
+-0.999878265161229460,	-0.999877483759380570,	-0.999876699857837780,	-0.999875913456603320,	-0.999875124555679170,	-0.999874333155067130,	-0.999873539254769180,	-0.999872742854787440,	
+-0.999871943955123910,	-0.999871142555780470,	-0.999870338656759120,	-0.999869532258061970,	-0.999868723359691010,	-0.999867911961648260,	-0.999867098063935700,	-0.999866281666555450,	
+-0.999865462769509380,	-0.999864641372799730,	-0.999863817476428500,	-0.999862991080397670,	-0.999862162184709360,	-0.999861330789365680,	-0.999860496894368620,	-0.999859660499720420,	
+-0.999858821605422940,	-0.999857980211478540,	-0.999857136317889080,	-0.999856289924656800,	-0.999855441031783810,	-0.999854589639272210,	-0.999853735747124220,	-0.999852879355341840,	
+-0.999852020463927180,	-0.999851159072882580,	-0.999850295182210020,	-0.999849428791911740,	-0.999848559901989840,	-0.999847688512446650,	-0.999846814623284170,	-0.999845938234504630,	
+-0.999845059346110340,	-0.999844177958103320,	-0.999843294070485890,	-0.999842407683260160,	-0.999841518796428460,	-0.999840627409993020,	-0.999839733523955940,	-0.999838837138319560,	
+-0.999837938253086090,	-0.999837036868257760,	-0.999836132983836780,	-0.999835226599825600,	-0.999834317716226220,	-0.999833406333041070,	-0.999832492450272500,	-0.999831576067922610,	
+-0.999830657185993840,	-0.999829735804488420,	-0.999828811923408560,	-0.999827885542756810,	-0.999826956662535290,	-0.999826025282746330,	-0.999825091403392370,	-0.999824155024475640,	
+-0.999823216145998560,	-0.999822274767963480,	-0.999821330890372620,	-0.999820384513228520,	-0.999819435636533420,	-0.999818484260289630,	-0.999817530384499720,	-0.999816574009166010,	
+-0.999815615134290850,	-0.999814653759876660,	-0.999813689885925780,	-0.999812723512440770,	-0.999811754639423840,	-0.999810783266877670,	-0.999809809394804460,	-0.999808833023206670,	
+-0.999807854152086840,	-0.999806872781447420,	-0.999805888911290740,	-0.999804902541619470,	-0.999803913672435820,	-0.999802922303742460,	-0.999801928435541720,	-0.999800932067836160,	
+-0.999799933200628320,	-0.999798931833920660,	-0.999797927967715610,	-0.999796921602015830,	-0.999795912736823670,	-0.999794901372141780,	-0.999793887507972600,	-0.999792871144318700,	
+-0.999791852281182610,	-0.999790830918566910,	-0.999789807056474130,	-0.999788780694906840,	-0.999787751833867590,	-0.999786720473359040,	-0.999785686613383630,	-0.999784650253943920,	
+-0.999783611395042680,	-0.999782570036682360,	-0.999781526178865730,	-0.999780479821595120,	-0.999779430964873430,	-0.999778379608703190,	-0.999777325753086870,	-0.999776269398027330,	
+-0.999775210543527030,	-0.999774149189588850,	-0.999773085336215120,	-0.999772018983408840,	-0.999770950131172450,	-0.999769878779508630,	-0.999768804928420130,	-0.999767728577909740,	
+-0.999766649727979910,	-0.999765568378633510,	-0.999764484529873100,	-0.999763398181701570,	-0.999762309334121470,	-0.999761217987135690,	-0.999760124140746780,	-0.999759027794957620,	
+-0.999757928949770890,	-0.999756827605189360,	-0.999755723761215690,	-0.999754617417852760,	-0.999753508575103260,	-0.999752397232969940,	-0.999751283391455690,	-0.999750167050563300,	
+-0.999749048210295420,	-0.999747926870654830,	-0.999746803031644540,	-0.999745676693267190,	-0.999744547855525690,	-0.999743416518422800,	-0.999742282681961410,	-0.999741146346144300,	
+-0.999740007510974250,	-0.999738866176454240,	-0.999737722342587070,	-0.999736576009375600,	-0.999735427176822730,	-0.999734275844931240,	-0.999733122013704010,	-0.999731965683144040,	
+-0.999730806853254110,	-0.999729645524037200,	-0.999728481695496220,	-0.999727315367633930,	-0.999726146540453440,	-0.999724975213957530,	-0.999723801388149200,	-0.999722625063031440,	
+-0.999721446238607040,	-0.999720264914878980,	-0.999719081091850370,	-0.999717894769524000,	-0.999716705947902850,	-0.999715514626990040,	-0.999714320806788350,	-0.999713124487300870,	
+-0.999711925668530620,	-0.999710724350480580,	-0.999709520533153650,	-0.999708314216552930,	-0.999707105400681530,	-0.999705894085542220,	-0.999704680271138240,	-0.999703463957472670,	
+-0.999702245144548310,	-0.999701023832368360,	-0.999699800020935840,	-0.999698573710253830,	-0.999697344900325360,	-0.999696113591153620,	-0.999694879782741520,	-0.999693643475092260,	
+-0.999692404668208860,	-0.999691163362094400,	-0.999689919556752130,	-0.999688673252185020,	-0.999687424448396200,	-0.999686173145388880,	-0.999684919343166060,	-0.999683663041731060,	
+-0.999682404241086790,	-0.999681142941236560,	-0.999679879142183370,	-0.999678612843930670,	-0.999677344046481230,	-0.999676072749838610,	-0.999674798954005680,	-0.999673522658985790,	
+-0.999672243864782150,	-0.999670962571397870,	-0.999669678778836170,	-0.999668392487100270,	-0.999667103696193380,	-0.999665812406118850,	-0.999664518616879660,	-0.999663222328479150,	
+-0.999661923540920650,	-0.999660622254207380,	-0.999659318468342440,	-0.999658012183329280,	-0.999656703399171120,	-0.999655392115871180,	-0.999654078333432670,	-0.999652762051859050,	
+-0.999651443271153520,	-0.999650121991319420,	-0.999648798212359970,	-0.999647471934278500,	-0.999646143157078340,	-0.999644811880762930,	-0.999643478105335380,	-0.999642141830799140,	
+-0.999640803057157630,	-0.999639461784414100,	-0.999638118012571850,	-0.999636771741634340,	-0.999635422971604900,	-0.999634071702486860,	-0.999632717934283650,	-0.999631361666998730,	
+-0.999630002900635310,	-0.999628641635196940,	-0.999627277870686950,	-0.999625911607108790,	-0.999624542844465780,	-0.999623171582761480,	-0.999621797821999230,	-0.999620421562182560,	
+-0.999619042803314710,	-0.999617661545399330,	-0.999616277788439760,	-0.999614891532439540,	-0.999613502777402020,	-0.999612111523330850,	-0.999610717770229360,	-0.999609321518101000,	
+-0.999607922766949430,	-0.999606521516777980,	-0.999605117767590310,	-0.999603711519389760,	-0.999602302772179980,	-0.999600891525964430,	-0.999599477780746650,	-0.999598061536530190,	
+-0.999596642793318610,	-0.999595221551115350,	-0.999593797809924080,	-0.999592371569748340,	-0.999590942830591580,	-0.999589511592457570,	-0.999588077855349750,	-0.999586641619271690,	
+-0.999585202884227030,	-0.999583761650219450,	-0.999582317917252380,	-0.999580871685329500,	-0.999579422954454460,	-0.999577971724630920,	-0.999576517995862450,	-0.999575061768152580,	
+-0.999573603041505110,	-0.999572141815923690,	-0.999570678091411870,	-0.999569211867973430,	-0.999567743145611810,	-0.999566271924330900,	-0.999564798204134350,	-0.999563321985025840,	
+-0.999561843267008920,	-0.999560362050087470,	-0.999558878334265040,	-0.999557392119545530,	-0.999555903405932370,	-0.999554412193429550,	-0.999552918482040750,	-0.999551422271769630,	
+-0.999549923562619960,	-0.999548422354595400,	-0.999546918647699840,	-0.999545412441936950,	-0.999543903737310610,	-0.999542392533824490,	-0.999540878831482350,	-0.999539362630287980,	
+-0.999537843930245250,	-0.999536322731357950,	-0.999534799033629740,	-0.999533272837064610,	-0.999531744141666230,	-0.999530212947438600,	-0.999528679254385380,	-0.999527143062510450,	
+-0.999525604371817700,	-0.999524063182310910,	-0.999522519493993960,	-0.999520973306870730,	-0.999519424620945010,	-0.999517873436220780,	-0.999516319752701940,	-0.999514763570392150,	
+-0.999513204889295510,	-0.999511643709415920,	-0.999510080030757140,	-0.999508513853323290,	-0.999506945177118020,	-0.999505374002145450,	-0.999503800328409350,	-0.999502224155913830,	
+-0.999500645484662780,	-0.999499064314660070,	-0.999497480645909710,	-0.999495894478415690,	-0.999494305812181900,	-0.999492714647212340,	-0.999491120983511010,	-0.999489524821081890,	
+-0.999487926159928870,	-0.999486325000056080,	-0.999484721341467490,	-0.999483115184167100,	-0.999481506528158930,	-0.999479895373447060,	-0.999478281720035390,	-0.999476665567927910,	
+-0.999475046917128850,	-0.999473425767642200,	-0.999471802119472060,	-0.999470175972622330,	-0.999468547327097110,	-0.999466916182900620,	-0.999465282540036750,	-0.999463646398509710,	
+-0.999462007758323610,	-0.999460366619482340,	-0.999458722981990340,	-0.999457076845851390,	-0.999455428211069810,	-0.999453777077649710,	-0.999452123445595090,	-0.999450467314910160,	
+-0.999448808685599150,	-0.999447147557666060,	-0.999445483931115100,	-0.999443817805950370,	-0.999442149182176220,	-0.999440478059796520,	-0.999438804438815830,	-0.999437128319238030,	
+-0.999435449701067350,	-0.999433768584308100,	-0.999432084968964520,	-0.999430398855040590,	-0.999428710242540760,	-0.999427019131469140,	-0.999425325521829940,	-0.999423629413627390,	
+-0.999421930806865810,	-0.999420229701549420,	-0.999418526097682450,	-0.999416819995269210,	-0.999415111394313830,	-0.999413400294820730,	-0.999411686696794140,	-0.999409970600238280,	
+-0.999408252005157480,	-0.999406530911556180,	-0.999404807319438370,	-0.999403081228808720,	-0.999401352639671230,	-0.999399621552030440,	-0.999397887965890570,	-0.999396151881255970,	
+-0.999394413298131060,	-0.999392672216520060,	-0.999390928636427310,	-0.999389182557857360,	-0.999387433980814420,	-0.999385682905302830,	-0.999383929331327030,	-0.999382173258891560,	
+-0.999380414688000540,	-0.999378653618658410,	-0.999376890050869830,	-0.999375123984638900,	-0.999373355419970190,	-0.999371584356868130,	-0.999369810795337040,	-0.999368034735381380,	
+-0.999366256177005810,	-0.999364475120214420,	-0.999362691565012010,	-0.999360905511402780,	-0.999359116959391280,	-0.999357325908981960,	-0.999355532360179380,	-0.999353736312987960,	
+-0.999351937767412160,	-0.999350136723456520,	-0.999348333181125590,	-0.999346527140423820,	-0.999344718601355760,	-0.999342907563925850,	-0.999341094028138640,	-0.999339277993998800,	
+-0.999337459461510650,	-0.999335638430678960,	-0.999333814901508080,	-0.999331988874002760,	-0.999330160348167350,	-0.999328329324006610,	-0.999326495801525110,	-0.999324659780727260,	
+-0.999322821261617760,	-0.999320980244201240,	-0.999319136728482270,	-0.999317290714465510,	-0.999315442202155510,	-0.999313591191556830,	-0.999311737682674230,	-0.999309881675512270,	
+-0.999308023170075610,	-0.999306162166368920,	-0.999304298664396850,	-0.999302432664163960,	-0.999300564165675030,	-0.999298693168934600,	-0.999296819673947570,	-0.999294943680718360,	
+-0.999293065189251870,	-0.999291184199552760,	-0.999289300711625690,	-0.999287414725475220,	-0.999285526241106340,	-0.999283635258523590,	-0.999281741777731880,	-0.999279845798735630,	
+-0.999277947321539850,	-0.999276046346149190,	-0.999274142872568440,	-0.999272236900802360,	-0.999270328430855610,	-0.999268417462733090,	-0.999266503996439570,	-0.999264588031979710,	
+-0.999262669569358390,	-0.999260748608580500,	-0.999258825149650590,	-0.999256899192573660,	-0.999254970737354590,	-0.999253039783997930,	-0.999251106332508800,	-0.999249170382891850,	
+-0.999247231935151970,	-0.999245290989294040,	-0.999243347545322850,	-0.999241401603243260,	-0.999239453163060290,	-0.999237502224778580,	-0.999235548788403150,	-0.999233592853938870,	
+-0.999231634421390510,	-0.999229673490763190,	-0.999227710062061570,	-0.999225744135290750,	-0.999223775710455510,	-0.999221804787560950,	-0.999219831366611740,	-0.999217855447613100,	
+-0.999215877030569690,	-0.999213896115486610,	-0.999211912702368870,	-0.999209926791221340,	-0.999207938382048910,	-0.999205947474856690,	-0.999203954069649570,	-0.999201958166432540,	
+-0.999199959765210700,	-0.999197958865988940,	-0.999195955468772270,	-0.999193949573565670,	-0.999191941180374240,	-0.999189930289202890,	-0.999187916900056820,	-0.999185901012940910,	
+-0.999183882627860290,	-0.999181861744819930,	-0.999179838363824850,	-0.999177812484880250,	-0.999175784107991130,	-0.999173753233162490,	-0.999171719860399540,	-0.999169683989707180,	
+-0.999167645621090730,	-0.999165604754555070,	-0.999163561390105540,	-0.999161515527747010,	-0.999159467167484610,	-0.999157416309323640,	-0.999155362953269120,	-0.999153307099326260,	
+-0.999151248747500050,	-0.999149187897795720,	-0.999147124550218370,	-0.999145058704773330,	-0.999142990361465590,	-0.999140919520300370,	-0.999138846181282900,	-0.999136770344418170,	
+-0.999134692009711610,	-0.999132611177168340,	-0.999130527846793570,	-0.999128442018592410,	-0.999126353692570190,	-0.999124262868732020,	-0.999122169547083330,	-0.999120073727629120,	
+-0.999117975410374730,	-0.999115874595325360,	-0.999113771282486350,	-0.999111665471862920,	-0.999109557163460280,	-0.999107446357283880,	-0.999105333053338710,	-0.999103217251630320,	
+-0.999101098952163810,	-0.999098978154944530,	-0.999096854859977900,	-0.999094729067269150,	-0.999092600776823490,	-0.999090469988646370,	-0.999088336702743000,	-0.999086200919118930,	
+-0.999084062637779270,	-0.999081921858729460,	-0.999079778581974830,	-0.999077632807520710,	-0.999075484535372650,	-0.999073333765535750,	-0.999071180498015580,	-0.999069024732817450,	
+-0.999066866469946690,	-0.999064705709408860,	-0.999062542451209290,	-0.999060376695353300,	-0.999058208441846340,	-0.999056037690693950,	-0.999053864441901360,	-0.999051688695474120,	
+-0.999049510451417770,	-0.999047329709737530,	-0.999045146470439070,	-0.999042960733527610,	-0.999040772499008910,	-0.999038581766888200,	-0.999036388537171030,	-0.999034192809862830,	
+-0.999031994584969270,	-0.999029793862495570,	-0.999027590642447500,	-0.999025384924830510,	-0.999023176709649910,	-0.999020965996911480,	-0.999018752786620560,	-0.999016537078782800,	
+-0.999014318873403750,	-0.999012098170488750,	-0.999009874970043680,	-0.999007649272073750,	-0.999005421076584850,	-0.999003190383582320,	-0.999000957193071800,	-0.998998721505058970,	
+-0.998996483319549270,	-0.998994242636548350,	-0.998991999456061870,	-0.998989753778095400,	-0.998987505602654480,	-0.998985254929744880,	-0.998983001759372050,	-0.998980746091541860,	
+-0.998978487926259650,	-0.998976227263531300,	-0.998973964103362370,	-0.998971698445758500,	-0.998969430290725380,	-0.998967159638268760,	-0.998964886488394210,	-0.998962610841107380,	
+-0.998960332696414150,	-0.998958052054319980,	-0.998955768914830730,	-0.998953483277951970,	-0.998951195143689570,	-0.998948904512049210,	-0.998946611383036640,	-0.998944315756657430,	
+-0.998942017632917460,	-0.998939717011822490,	-0.998937413893378200,	-0.998935108277590360,	-0.998932800164464730,	-0.998930489554007090,	-0.998928176446223340,	-0.998925860841119010,	
+-0.998923542738700100,	-0.998921222138972280,	-0.998918899041941530,	-0.998916573447613420,	-0.998914245355993930,	-0.998911914767088850,	-0.998909581680903940,	-0.998907246097445080,	
+-0.998904908016718050,	-0.998902567438728850,	-0.998900224363483140,	-0.998897878790986900,	-0.998895530721246040,	-0.998893180154266200,	-0.998890827090053500,	-0.998888471528613820,	
+-0.998886113469952820,	-0.998883752914076610,	-0.998881389860991060,	-0.998879024310701970,	-0.998876656263215310,	-0.998874285718536980,	-0.998871912676672970,	-0.998869537137629270,	
+-0.998867159101411660,	-0.998864778568026130,	-0.998862395537478690,	-0.998860010009775200,	-0.998857621984921670,	-0.998855231462924210,	-0.998852838443788580,	-0.998850442927520900,	
+-0.998848044914127040,	-0.998845644403613120,	-0.998843241395985130,	-0.998840835891248950,	-0.998838427889410800,	-0.998836017390476450,	-0.998833604394452120,	-0.998831188901343810,	
+-0.998828770911157520,	-0.998826350423899220,	-0.998823927439575040,	-0.998821501958191190,	-0.998819073979753450,	-0.998816643504268130,	-0.998814210531741130,	-0.998811775062178550,	
+-0.998809337095586610,	-0.998806896631971310,	-0.998804453671338850,	-0.998802008213695140,	-0.998799560259046480,	-0.998797109807398890,	-0.998794656858758460,	-0.998792201413131520,	
+-0.998789743470523960,	-0.998787283030942110,	-0.998784820094392070,	-0.998782354660879950,	-0.998779886730411960,	-0.998777416302994210,	-0.998774943378632930,	-0.998772467957334320,	
+-0.998769990039104600,	-0.998767509623949780,	-0.998765026711876280,	-0.998762541302890110,	-0.998760053396997690,	-0.998757562994205150,	-0.998755070094518580,	-0.998752574697944430,	
+-0.998750076804488800,	-0.998747576414158010,	-0.998745073526958290,	-0.998742568142895860,	-0.998740060261977040,	-0.998737549884208040,	-0.998735037009595210,	-0.998732521638144740,	
+-0.998730003769862980,	-0.998727483404756140,	-0.998724960542830660,	-0.998722435184092760,	-0.998719907328548870,	-0.998717376976205110,	-0.998714844127067900,	-0.998712308781143590,	
+-0.998709770938438600,	-0.998707230598959050,	-0.998704687762711480,	-0.998702142429702230,	-0.998699594599937620,	-0.998697044273423980,	-0.998694491450167750,	-0.998691936130175260,	
+-0.998689378313452950,	-0.998686818000007250,	-0.998684255189844490,	-0.998681689882971010,	-0.998679122079393360,	-0.998676551779117960,	-0.998673978982151040,	-0.998671403688499270,	
+-0.998668825898168970,	-0.998666245611166680,	-0.998663662827498740,	-0.998661077547171590,	-0.998658489770191780,	-0.998655899496565750,	-0.998653306726299930,	-0.998650711459400870,	
+-0.998648113695875030,	-0.998645513435728940,	-0.998642910678969040,	-0.998640305425601780,	-0.998637697675633930,	-0.998635087429071700,	-0.998632474685921760,	-0.998629859446190760,	
+-0.998627241709884930,	-0.998624621477011140,	-0.998621998747575730,	-0.998619373521585360,	-0.998616745799046470,	-0.998614115579965820,	-0.998611482864349860,	-0.998608847652205140,	
+-0.998606209943538330,	-0.998603569738356070,	-0.998600927036664810,	-0.998598281838471210,	-0.998595634143781940,	-0.998592983952603650,	-0.998590331264942790,	-0.998587676080806120,	
+-0.998585018400200310,	-0.998582358223131910,	-0.998579695549607680,	-0.998577030379634190,	-0.998574362713218090,	-0.998571692550366040,	-0.998569019891084820,	-0.998566344735381080,	
+-0.998563667083261500,	-0.998560986934732610,	-0.998558304289801410,	-0.998555619148474350,	-0.998552931510758300,	-0.998550241376659820,	-0.998547548746185900,	-0.998544853619342980,	
+-0.998542155996137940,	-0.998539455876577550,	-0.998536753260668600,	-0.998534048148417620,	-0.998531340539831610,	-0.998528630434917130,	-0.998525917833681160,	-0.998523202736130490,	
+-0.998520485142271650,	-0.998517765052111650,	-0.998515042465657250,	-0.998512317382915350,	-0.998509589803892480,	-0.998506859728595760,	-0.998504127157031850,	-0.998501392089207630,	
+-0.998498654525129870,	-0.998495914464805570,	-0.998493171908241380,	-0.998490426855444310,	-0.998487679306421240,	-0.998484929261178930,	-0.998482176719724280,	-0.998479421682064160,	
+-0.998476664148205460,	-0.998473904118155180,	-0.998471141591920070,	-0.998468376569507270,	-0.998465609050923300,	-0.998462839036175500,	-0.998460066525270530,	-0.998457291518215380,	
+-0.998454514015016950,	-0.998451734015682320,	-0.998448951520218290,	-0.998446166528631940,	-0.998443379040930170,	-0.998440589057119960,	-0.998437796577208210,	-0.998435001601202020,	
+-0.998432204129108380,	-0.998429404160934180,	-0.998426601696686400,	-0.998423796736372160,	-0.998420989279998450,	-0.998418179327572260,	-0.998415366879100710,	-0.998412551934590550,	
+-0.998409734494049130,	-0.998406914557483430,	-0.998404092124900330,	-0.998401267196307060,	-0.998398439771710610,	-0.998395609851118080,	-0.998392777434536470,	-0.998389942521973000,	
+-0.998387105113434650,	-0.998384265208928530,	-0.998381422808461650,	-0.998378577912041320,	-0.998375730519674540,	-0.998372880631368420,	-0.998370028247130060,	-0.998367173366966680,	
+-0.998364315990885380,	-0.998361456118893260,	-0.998358593750997450,	-0.998355728887205250,	-0.998352861527523670,	-0.998349991671960040,	-0.998347119320521340,	-0.998344244473214790,	
+-0.998341367130047730,	-0.998338487291027140,	-0.998335604956160470,	-0.998332720125454710,	-0.998329832798917180,	-0.998326942976555000,	-0.998324050658375480,	-0.998321155844385970,	
+-0.998318258534593440,	-0.998315358729005230,	-0.998312456427628780,	-0.998309551630471080,	-0.998306644337539460,	-0.998303734548841360,	-0.998300822264383770,	-0.998297907484174240,	
+-0.998294990208219880,	-0.998292070436528120,	-0.998289148169106080,	-0.998286223405961290,	-0.998283296147100870,	-0.998280366392532150,	-0.998277434142262670,	-0.998274499396299530,	
+-0.998271562154650070,	-0.998268622417321730,	-0.998265680184321940,	-0.998262735455657910,	-0.998259788231336990,	-0.998256838511366600,	-0.998253886295754180,	-0.998250931584506950,	
+-0.998247974377632460,	-0.998245014675138040,	-0.998242052477031020,	-0.998239087783318930,	-0.998236120594009120,	-0.998233150909108910,	-0.998230178728625960,	-0.998227204052567480,	
+-0.998224226880941030,	-0.998221247213754050,	-0.998218265051013850,	-0.998215280392728000,	-0.998212293238904040,	-0.998209303589549290,	-0.998206311444671310,	-0.998203316804277540,	
+-0.998200319668375410,	-0.998197320036972590,	-0.998194317910076400,	-0.998191313287694500,	-0.998188306169834230,	-0.998185296556503230,	-0.998182284447708960,	-0.998179269843458950,	
+-0.998176252743760870,	-0.998173233148622050,	-0.998170211058050260,	-0.998167186472052830,	-0.998164159390637520,	-0.998161129813811780,	-0.998158097741583260,	-0.998155063173959410,	
+-0.998152026110948000,	-0.998148986552556460,	-0.998145944498792460,	-0.998142899949663540,	-0.998139852905177480,	-0.998136803365341720,	-0.998133751330164020,	-0.998130696799651830,	
+-0.998127639773813020,	-0.998124580252655050,	-0.998121518236185670,	-0.998118453724412440,	-0.998115386717343120,	-0.998112317214985280,	-0.998109245217346670,	-0.998106170724434970,	
+-0.998103093736257830,	-0.998100014252822910,	-0.998096932274137980,	-0.998093847800210820,	-0.998090760831048970,	-0.998087671366660210,	-0.998084579407052200,	-0.998081484952232810,	
+-0.998078388002209720,	-0.998075288556990680,	-0.998072186616583370,	-0.998069082180995660,	-0.998065975250235220,	-0.998062865824309810,	-0.998059753903227210,	-0.998056639486995300,	
+-0.998053522575621740,	-0.998050403169114420,	-0.998047281267481100,	-0.998044156870729450,	-0.998041029978867570,	-0.998037900591903000,	-0.998034768709843760,	-0.998031634332697480,	
+-0.998028497460472290,	-0.998025358093175720,	-0.998022216230815770,	-0.998019071873400330,	-0.998015925020937170,	-0.998012775673434270,	-0.998009623830899420,	-0.998006469493340380,	
+-0.998003312660765250,	-0.998000153333181930,	-0.997996991510598060,	-0.997993827193021880,	-0.997990660380461030,	-0.997987491072923500,	-0.997984319270417310,	-0.997981144972950320,	
+-0.997977968180530420,	-0.997974788893165600,	-0.997971607110863860,	-0.997968422833633070,	-0.997965236061481240,	-0.997962046794416360,	-0.997958855032446300,	-0.997955660775579180,	
+-0.997952464023822760,	-0.997949264777185260,	-0.997946063035674680,	-0.997942858799298890,	-0.997939652068065900,	-0.997936442841983800,	-0.997933231121060690,	-0.997930016905304360,	
+-0.997926800194723020,	-0.997923580989324770,	-0.997920359289117490,	-0.997917135094109290,	-0.997913908404308380,	-0.997910679219722540,	-0.997907447540360090,	-0.997904213366229030,	
+-0.997900976697337460,	-0.997897737533693370,	-0.997894495875304990,	-0.997891251722180290,	-0.997888005074327510,	-0.997884755931754740,	-0.997881504294470090,	-0.997878250162481660,	
+-0.997874993535797670,	-0.997871734414426110,	-0.997868472798375210,	-0.997865208687653160,	-0.997861942082268080,	-0.997858672982228190,	-0.997855401387541590,	-0.997852127298216480,	
+-0.997848850714260990,	-0.997845571635683440,	-0.997842290062491920,	-0.997839005994694770,	-0.997835719432299980,	-0.997832430375315990,	-0.997829138823750910,	-0.997825844777612940,	
+-0.997822548236910410,	-0.997819249201651440,	-0.997815947671844450,	-0.997812643647497440,	-0.997809337128618970,	-0.997806028115217130,	-0.997802716607300130,	-0.997799402604876430,	
+-0.997796086107954230,	-0.997792767116541750,	-0.997789445630647310,	-0.997786121650279360,	-0.997782795175446100,	-0.997779466206155760,	-0.997776134742416890,	-0.997772800784237580,	
+-0.997769464331626280,	-0.997766125384591420,	-0.997762783943141110,	-0.997759440007283890,	-0.997756093577028100,	-0.997752744652382060,	-0.997749393233354210,	-0.997746039319952760,	
+-0.997742682912186260,	-0.997739324010063160,	-0.997735962613591650,	-0.997732598722780200,	-0.997729232337637330,	-0.997725863458171380,	-0.997722492084390680,	-0.997719118216303770,	
+-0.997715741853919200,	-0.997712362997245080,	-0.997708981646290180,	-0.997705597801062830,	-0.997702211461571450,	-0.997698822627824500,	-0.997695431299830630,	-0.997692037477598050,	
+-0.997688641161135430,	-0.997685242350451200,	-0.997681841045553910,	-0.997678437246451890,	-0.997675030953153910,	-0.997671622165668290,	-0.997668210884003590,	-0.997664797108168470,	
+-0.997661380838171240,	-0.997657962074020580,	-0.997654540815725130,	-0.997651117063293240,	-0.997647690816733550,	-0.997644262076054610,	-0.997640830841264980,	-0.997637397112373430,	
+-0.997633960889388270,	-0.997630522172318180,	-0.997627080961171920,	-0.997623637255957820,	-0.997620191056684760,	-0.997616742363361060,	-0.997613291175995620,	-0.997609837494596970,	
+-0.997606381319173670,	-0.997602922649734380,	-0.997599461486287860,	-0.997595997828842670,	-0.997592531677407470,	-0.997589063031991020,	-0.997585591892601760,	-0.997582118259248580,	
+-0.997578642131940140,	-0.997575163510685090,	-0.997571682395492100,	-0.997568198786369930,	-0.997564712683327360,	-0.997561224086372820,	-0.997557732995515310,	-0.997554239410763490,	
+-0.997550743332126120,	-0.997547244759611760,	-0.997543743693229400,	-0.997540240132987590,	-0.997536734078895200,	-0.997533225530961020,	-0.997529714489193810,	-0.997526200953602230,	
+-0.997522684924195160,	-0.997519166400981370,	-0.997515645383969750,	-0.997512121873168960,	-0.997508595868587870,	-0.997505067370235250,	-0.997501536378120000,	-0.997498002892250880,	
+-0.997494466912636770,	-0.997490928439286550,	-0.997487387472209000,	-0.997483844011412880,	-0.997480298056907190,	-0.997476749608700810,	-0.997473198666802510,	-0.997469645231221280,	
+-0.997466089301965900,	-0.997462530879045240,	-0.997458969962468300,	-0.997455406552243960,	-0.997451840648381110,	-0.997448272250888610,	-0.997444701359775480,	-0.997441127975050470,	
+-0.997437552096722800,	-0.997433973724801140,	-0.997430392859294580,	-0.997426809500212120,	-0.997423223647562530,	-0.997419635301354910,	-0.997416044461598260,	-0.997412451128301460,	
+-0.997408855301473500,	-0.997405256981123370,	-0.997401656167260180,	-0.997398052859892800,	-0.997394447059030350,	-0.997390838764681710,	-0.997387227976856080,	-0.997383614695562250,	
+-0.997379998920809420,	-0.997376380652606590,	-0.997372759890962860,	-0.997369136635887220,	-0.997365510887388780,	-0.997361882645476430,	-0.997358251910159480,	-0.997354618681446920,	
+-0.997350982959347760,	-0.997347344743871100,	-0.997343704035026150,	-0.997340060832821900,	-0.997336415137267560,	-0.997332766948372140,	-0.997329116266144730,	-0.997325463090594670,	
+-0.997321807421730820,	-0.997318149259562530,	-0.997314488604098880,	-0.997310825455348990,	-0.997307159813321960,	-0.997303491678027120,	-0.997299821049473570,	-0.997296147927670410,	
+-0.997292472312626970,	-0.997288794204352240,	-0.997285113602855540,	-0.997281430508146110,	-0.997277744920233020,	-0.997274056839125620,	-0.997270366264833120,	-0.997266673197364620,	
+-0.997262977636729550,	-0.997259279582936920,	-0.997255579035996150,	-0.997251875995916470,	-0.997248170462707080,	-0.997244462436377210,	-0.997240751916936170,	-0.997237038904393300,	
+-0.997233323398757920,	-0.997229605400039130,	-0.997225884908246260,	-0.997222161923388750,	-0.997218436445475920,	-0.997214708474516880,	-0.997210978010521170,	-0.997207245053497890,	
+-0.997203509603456610,	-0.997199771660406520,	-0.997196031224356960,	-0.997192288295317360,	-0.997188542873297060,	-0.997184794958305360,	-0.997181044550351730,	-0.997177291649445350,	
+-0.997173536255595900,	-0.997169778368812600,	-0.997166017989104760,	-0.997162255116481930,	-0.997158489750953450,	-0.997154721892528740,	-0.997150951541217250,	-0.997147178697028400,	
+-0.997143403359971540,	-0.997139625530056200,	-0.997135845207291820,	-0.997132062391687720,	-0.997128277083253580,	-0.997124489281998700,	-0.997120698987932650,	-0.997116906201064860,	
+-0.997113110921404750,	-0.997109313148961900,	-0.997105512883745710,	-0.997101710125765760,	-0.997097904875031580,	-0.997094097131552610,	-0.997090286895338410,	-0.997086474166398510,	
+-0.997082658944742350,	-0.997078841230379600,	-0.997075021023319690,	-0.997071198323572270,	-0.997067373131146910,	-0.997063545446053020,	-0.997059715268300280,	-0.997055882597898350,	
+-0.997052047434856650,	-0.997048209779184850,	-0.997044369630892490,	-0.997040526989989240,	-0.997036681856484640,	-0.997032834230388350,	-0.997028984111709930,	-0.997025131500459130,	
+-0.997021276396645510,	-0.997017418800278610,	-0.997013558711368210,	-0.997009696129923960,	-0.997005831055955420,	-0.997001963489472340,	-0.996998093430484290,	-0.996994220879001030,	
+-0.996990345835032210,	-0.996986468298587500,	-0.996982588269676670,	-0.996978705748309380,	-0.996974820734495280,	-0.996970933228244150,	-0.996967043229565750,	-0.996963150738469640,	
+-0.996959255754965800,	-0.996955358279063670,	-0.996951458310773140,	-0.996947555850104080,	-0.996943650897066050,	-0.996939743451668910,	-0.996935833513922450,	-0.996931921083836330,	
+-0.996928006161420520,	-0.996924088746684590,	-0.996920168839638520,	-0.996916246440291980,	-0.996912321548654830,	-0.996908394164736870,	-0.996904464288547840,	-0.996900531920097750,	
+-0.996896597059396370,	-0.996892659706453470,	-0.996888719861278920,	-0.996884777523882490,	-0.996880832694274190,	-0.996876885372463770,	-0.996872935558461130,	-0.996868983252276240,	
+-0.996865028453918780,	-0.996861071163398840,	-0.996857111380726190,	-0.996853149105910830,	-0.996849184338962520,	-0.996845217079891270,	-0.996841247328706940,	-0.996837275085419530,	
+-0.996833300350038920,	-0.996829323122575000,	-0.996825343403037860,	-0.996821361191437380,	-0.996817376487783460,	-0.996813389292086070,	-0.996809399604355220,	-0.996805407424600890,	
+-0.996801412752832960,	-0.996797415589061650,	-0.996793415933296730,	-0.996789413785548200,	-0.996785409145826250,	-0.996781402014140670,	-0.996777392390501670,	-0.996773380274919130,	
+-0.996769365667403260,	-0.996765348567963840,	-0.996761328976611070,	-0.996757306893355070,	-0.996753282318205700,	-0.996749255251173190,	-0.996745225692267530,	-0.996741193641498710,	
+-0.996737159098877060,	-0.996733122064412450,	-0.996729082538114990,	-0.996725040519994890,	-0.996720996010062140,	-0.996716949008326970,	-0.996712899514799360,	-0.996708847529489520,	
+-0.996704793052407560,	-0.996700736083563580,	-0.996696676622967790,	-0.996692614670630310,	-0.996688550226561330,	-0.996684483290770970,	-0.996680413863269330,	-0.996676341944066730,	
+-0.996672267533173280,	-0.996668190630599080,	-0.996664111236354460,	-0.996660029350449620,	-0.996655944972894670,	-0.996651858103699830,	-0.996647768742875310,	-0.996643676890431430,	
+-0.996639582546378300,	-0.996635485710726240,	-0.996631386383485470,	-0.996627284564666320,	-0.996623180254278870,	-0.996619073452333470,	-0.996614964158840430,	-0.996610852373809860,	
+-0.996606738097252310,	-0.996602621329177870,	-0.996598502069596880,	-0.996594380318519550,	-0.996590256075956420,	-0.996586129341917480,	-0.996582000116413290,	-0.996577868399454170,	
+-0.996573734191050330,	-0.996569597491212100,	-0.996565458299949910,	-0.996561316617274100,	-0.996557172443194970,	-0.996553025777722980,	-0.996548876620868330,	-0.996544724972641570,	
+-0.996540570833052920,	-0.996536414202112920,	-0.996532255079831900,	-0.996528093466220180,	-0.996523929361288200,	-0.996519762765046500,	-0.996515593677505310,	-0.996511422098675160,	
+-0.996507248028566380,	-0.996503071467189640,	-0.996498892414555030,	-0.996494710870673320,	-0.996490526835554840,	-0.996486340309210020,	-0.996482151291649300,	-0.996477959782883230,	
+-0.996473765782922350,	-0.996469569291776880,	-0.996465370309457700,	-0.996461168835974910,	-0.996456964871339280,	-0.996452758415561250,	-0.996448549468651250,	-0.996444338030619940,	
+-0.996440124101477750,	-0.996435907681235360,	-0.996431688769903070,	-0.996427467367491660,	-0.996423243474011460,	-0.996419017089473220,	-0.996414788213887510,	-0.996410556847264760,	
+-0.996406322989615510,	-0.996402086640950650,	-0.996397847801280490,	-0.996393606470615700,	-0.996389362648966830,	-0.996385116336344630,	-0.996380867532759670,	-0.996376616238222490,	
+-0.996372362452743740,	-0.996368106176334200,	-0.996363847409004300,	-0.996359586150764810,	-0.996355322401626280,	-0.996351056161599580,	-0.996346787430695160,	-0.996342516208923780,	
+-0.996338242496296100,	-0.996333966292822890,	-0.996329687598514700,	-0.996325406413382300,	-0.996321122737436340,	-0.996316836570687590,	-0.996312547913146830,	-0.996308256764824600,	
+-0.996303963125731770,	-0.996299666995879020,	-0.996295368375277210,	-0.996291067263936790,	-0.996286763661868860,	-0.996282457569083960,	-0.996278148985592860,	-0.996273837911406450,	
+-0.996269524346535480,	-0.996265208290990630,	-0.996260889744782880,	-0.996256568707922780,	-0.996252245180421330,	-0.996247919162289160,	-0.996243590653537290,	-0.996239259654176480,	
+-0.996234926164217380,	-0.996230590183671110,	-0.996226251712548310,	-0.996221910750859860,	-0.996217567298616660,	-0.996213221355829460,	-0.996208872922509260,	-0.996204521998666940,	
+-0.996200168584313260,	-0.996195812679459220,	-0.996191454284115600,	-0.996187093398293370,	-0.996182730022003300,	-0.996178364155256510,	-0.996173995798063760,	-0.996169624950436040,	
+-0.996165251612384340,	-0.996160875783919430,	-0.996156497465052300,	-0.996152116655793950,	-0.996147733356155360,	-0.996143347566147420,	-0.996138959285781000,	-0.996134568515067320,	
+-0.996130175254017150,	-0.996125779502641580,	-0.996121381260951620,	-0.996116980528958030,	-0.996112577306672130,	-0.996108171594104810,	-0.996103763391266940,	-0.996099352698169740,	
+-0.996094939514824200,	-0.996090523841241190,	-0.996086105677431940,	-0.996081685023407440,	-0.996077261879178670,	-0.996072836244756840,	-0.996068408120152850,	-0.996063977505377900,	
+-0.996059544400442860,	-0.996055108805359080,	-0.996050670720137530,	-0.996046230144789320,	-0.996041787079325450,	-0.996037341523757220,	-0.996032893478095540,	-0.996028442942351710,	
+-0.996023989916536730,	-0.996019534400661710,	-0.996015076394737960,	-0.996010615898776490,	-0.996006152912788490,	-0.996001687436785080,	-0.995997219470777460,	-0.995992749014776750,	
+-0.995988276068794250,	-0.995983800632840980,	-0.995979322706928240,	-0.995974842291067250,	-0.995970359385269120,	-0.995965873989545060,	-0.995961386103906390,	-0.995956895728364100,	
+-0.995952402862929740,	-0.995947907507614310,	-0.995943409662429110,	-0.995938909327385380,	-0.995934406502494320,	-0.995929901187767360,	-0.995925393383215620,	-0.995920883088850300,	
+-0.995916370304682830,	-0.995911855030724440,	-0.995907337266986440,	-0.995902817013480160,	-0.995898294270216700,	-0.995893769037207610,	-0.995889241314463990,	-0.995884711101997390,	
+-0.995880178399818900,	-0.995875643207939980,	-0.995871105526372040,	-0.995866565355126300,	-0.995862022694214090,	-0.995857477543646840,	-0.995852929903435990,	-0.995848379773592750,	
+-0.995843827154128450,	-0.995839272045054740,	-0.995834714446382830,	-0.995830154358124050,	-0.995825591780289950,	-0.995821026712891850,	-0.995816459155941190,	-0.995811889109449400,	
+-0.995807316573427910,	-0.995802741547888060,	-0.995798164032841380,	-0.995793584028299320,	-0.995789001534273300,	-0.995784416550774760,	-0.995779829077815150,	-0.995775239115406000,	
+-0.995770646663558750,	-0.995766051722284830,	-0.995761454291595900,	-0.995756854371503300,	-0.995752251962018440,	-0.995747647063153110,	-0.995743039674918620,	-0.995738429797326410,	
+-0.995733817430388250,	-0.995729202574115570,	-0.995724585228519810,	-0.995719965393612630,	-0.995715343069405460,	-0.995710718255910070,	-0.995706090953137780,	-0.995701461161100250,	
+-0.995696828879809150,	-0.995692194109275900,	-0.995687556849512160,	-0.995682917100529590,	-0.995678274862339730,	-0.995673630134954140,	-0.995668982918384460,	-0.995664333212642470,	
+-0.995659681017739500,	-0.995655026333687300,	-0.995650369160497650,	-0.995645709498181990,	-0.995641047346752070,	-0.995636382706219570,	-0.995631715576596130,	-0.995627045957893420,	
+-0.995622373850122980,	-0.995617699253296680,	-0.995613022167426090,	-0.995608342592523070,	-0.995603660528599050,	-0.995598975975665930,	-0.995594288933735360,	-0.995589599402819100,	
+-0.995584907382928820,	-0.995580212874076280,	-0.995575515876273240,	-0.995570816389531380,	-0.995566114413862450,	-0.995561409949278220,	-0.995556702995790580,	-0.995551993553411060,	
+-0.995547281622151560,	-0.995542567202023940,	-0.995537850293039870,	-0.995533130895211120,	-0.995528409008549660,	-0.995523684633067060,	-0.995518957768775300,	-0.995514228415686150,	
+-0.995509496573811380,	-0.995504762243162980,	-0.995500025423752600,	-0.995495286115592130,	-0.995490544318693440,	-0.995485800033068520,	-0.995481053258728930,	-0.995476303995686870,	
+-0.995471552243953890,	-0.995466798003542100,	-0.995462041274463360,	-0.995457282056729450,	-0.995452520350352370,	-0.995447756155343980,	-0.995442989471716280,	-0.995438220299481040,	
+-0.995433448638650240,	-0.995428674489235780,	-0.995423897851249630,	-0.995419118724703790,	-0.995414337109610140,	-0.995409553005980660,	-0.995404766413827360,	-0.995399977333161990,	
+-0.995395185763996770,	-0.995390391706343580,	-0.995385595160214410,	-0.995380796125621250,	-0.995375994602576090,	-0.995371190591091030,	-0.995366384091177950,	-0.995361575102848840,	
+-0.995356763626115800,	-0.995351949660990940,	-0.995347133207486130,	-0.995342314265613480,	-0.995337492835385080,	-0.995332668916812930,	-0.995327842509909130,	-0.995323013614685670,	
+-0.995318182231154760,	-0.995313348359328390,	-0.995308511999218550,	-0.995303673150837560,	-0.995298831814197320,	-0.995293987989310010,	-0.995289141676187650,	-0.995284292874842550,	
+-0.995279441585286690,	-0.995274587807532200,	-0.995269731541591260,	-0.995264872787476000,	-0.995260011545198500,	-0.995255147814771090,	-0.995250281596205770,	-0.995245412889514620,	
+-0.995240541694710100,	-0.995235668011804190,	-0.995230791840808980,	-0.995225913181736920,	-0.995221032034600110,	-0.995216148399410640,	-0.995211262276180840,	-0.995206373664922820,	
+-0.995201482565648890,	-0.995196588978371270,	-0.995191692903102280,	-0.995186794339853910,	-0.995181893288638600,	-0.995176989749468550,	-0.995172083722356100,	-0.995167175207313350,	
+-0.995162264204352720,	-0.995157350713486320,	-0.995152434734726700,	-0.995147516268085840,	-0.995142595313576290,	-0.995137671871210270,	-0.995132745940999990,	-0.995127817522957980,	
+-0.995122886617096250,	-0.995117953223427440,	-0.995113017341963670,	-0.995108078972717360,	-0.995103138115700950,	-0.995098194770926540,	-0.995093248938406780,	-0.995088300618153900,	
+-0.995083349810180100,	-0.995078396514498140,	-0.995073440731120030,	-0.995068482460058410,	-0.995063521701325500,	-0.995058558454933850,	-0.995053592720895770,	-0.995048624499223820,	
+-0.995043653789930200,	-0.995038680593027470,	-0.995033704908528050,	-0.995028726736444380,	-0.995023746076788780,	-0.995018762929573920,	-0.995013777294812110,	-0.995008789172515900,	
+-0.995003798562697720,	-0.994998805465370010,	-0.994993809880545310,	-0.994988811808236060,	-0.994983811248454810,	-0.994978808201213980,	-0.994973802666526240,	-0.994968794644403910,	
+-0.994963784134859640,	-0.994958771137905870,	-0.994953755653555150,	-0.994948737681820130,	-0.994943717222713130,	-0.994938694276246930,	-0.994933668842434060,	-0.994928640921286860,	
+-0.994923610512818190,	-0.994918577617040390,	-0.994913542233966220,	-0.994908504363608230,	-0.994903464005978840,	-0.994898421161090950,	-0.994893375828956870,	-0.994888328009589480,	
+-0.994883277703001110,	-0.994878224909204740,	-0.994873169628212590,	-0.994868111860037650,	-0.994863051604692460,	-0.994857988862189570,	-0.994852923632541740,	-0.994847855915761640,	
+-0.994842785711861800,	-0.994837713020855110,	-0.994832637842754110,	-0.994827560177571460,	-0.994822480025319920,	-0.994817397386012160,	-0.994812312259660940,	-0.994807224646279020,	
+-0.994802134545878960,	-0.994797041958473520,	-0.994791946884075570,	-0.994786849322697670,	-0.994781749274352700,	-0.994776646739053310,	-0.994771541716812370,	-0.994766434207642550,	
+-0.994761324211556610,	-0.994756211728567430,	-0.994751096758687670,	-0.994745979301930090,	-0.994740859358307690,	-0.994735736927833130,	-0.994730612010519160,	-0.994725484606378770,	
+-0.994720354715424530,	-0.994715222337669510,	-0.994710087473126390,	-0.994704950121808040,	-0.994699810283727340,	-0.994694667958897160,	-0.994689523147330170,	-0.994684375849039460,	
+-0.994679226064037800,	-0.994674073792338190,	-0.994668919033953270,	-0.994663761788896040,	-0.994658602057179490,	-0.994653439838816380,	-0.994648275133819700,	-0.994643107942202230,	
+-0.994637938263977060,	-0.994632766099157070,	-0.994627591447755140,	-0.994622414309784260,	-0.994617234685257310,	-0.994612052574187390,	-0.994606867976587150,	-0.994601680892469920,	
+-0.994596491321848350,	-0.994591299264735660,	-0.994586104721144610,	-0.994580907691088310,	-0.994575708174579850,	-0.994570506171632010,	-0.994565301682257990,	-0.994560094706470670,	
+-0.994554885244283150,	-0.994549673295708310,	-0.994544458860759480,	-0.994539241939449310,	-0.994534022531791130,	-0.994528800637797920,	-0.994523576257482670,	-0.994518349390858480,	
+-0.994513120037938350,	-0.994507888198735480,	-0.994502653873262870,	-0.994497417061533720,	-0.994492177763560910,	-0.994486935979357780,	-0.994481691708937190,	-0.994476444952312470,	
+-0.994471195709496490,	-0.994465943980502700,	-0.994460689765343960,	-0.994455433064033500,	-0.994450173876584410,	-0.994444912203010010,	-0.994439648043323190,	-0.994434381397537370,	
+-0.994429112265665550,	-0.994423840647720940,	-0.994418566543716740,	-0.994413289953666070,	-0.994408010877582240,	-0.994402729315478350,	-0.994397445267367620,	-0.994392158733263360,	
+-0.994386869713178690,	-0.994381578207126800,	-0.994376284215120920,	-0.994370987737174360,	-0.994365688773300450,	-0.994360387323512170,	-0.994355083387822970,	-0.994349776966246050,	
+-0.994344468058794730,	-0.994339156665482230,	-0.994333842786321860,	-0.994328526421326850,	-0.994323207570510510,	-0.994317886233886170,	-0.994312562411467040,	-0.994307236103266660,	
+-0.994301907309298130,	-0.994296576029574770,	-0.994291242264109920,	-0.994285906012917110,	-0.994280567276009440,	-0.994275226053400460,	-0.994269882345103270,	-0.994264536151131530,	
+-0.994259187471498330,	-0.994253836306217220,	-0.994248482655301520,	-0.994243126518764560,	-0.994237767896619880,	-0.994232406788880700,	-0.994227043195560540,	-0.994221677116672750,	
+-0.994216308552230750,	-0.994210937502247980,	-0.994205563966737870,	-0.994200187945713960,	-0.994194809439189480,	-0.994189428447177950,	-0.994184044969692930,	-0.994178659006747730,	
+-0.994173270558355910,	-0.994167879624530900,	-0.994162486205286240,	-0.994157090300635260,	-0.994151691910591720,	-0.994146291035168830,	-0.994140887674380250,	-0.994135481828239410,	
+-0.994130073496759860,	-0.994124662679955250,	-0.994119249377838910,	-0.994113833590424380,	-0.994108415317725310,	-0.994102994559755260,	-0.994097571316527650,	-0.994092145588056140,	
+-0.994086717374354280,	-0.994081286675435600,	-0.994075853491313670,	-0.994070417822002230,	-0.994064979667514610,	-0.994059539027864590,	-0.994054095903065700,	-0.994048650293131720,	
+-0.994043202198075960,	-0.994037751617912190,	-0.994032298552654070,	-0.994026843002315250,	-0.994021384966909280,	-0.994015924446449930,	-0.994010461440950620,	-0.994004995950425240,	
+-0.993999527974887440,	-0.993994057514350770,	-0.993988584568828880,	-0.993983109138335540,	-0.993977631222884520,	-0.993972150822489350,	-0.993966667937163820,	-0.993961182566921670,	
+-0.993955694711776470,	-0.993950204371742090,	-0.993944711546832280,	-0.993939216237060500,	-0.993933718442440830,	-0.993928218162986820,	-0.993922715398712240,	-0.993917210149630970,	
+-0.993911702415756550,	-0.993906192197102970,	-0.993900679493683880,	-0.993895164305513060,	-0.993889646632604370,	-0.993884126474971490,	-0.993878603832628380,	-0.993873078705588720,	
+-0.993867551093866370,	-0.993862020997475120,	-0.993856488416428930,	-0.993850953350741360,	-0.993845415800426510,	-0.993839875765498150,	-0.993834333245969930,	-0.993828788241856050,	
+-0.993823240753170080,	-0.993817690779926100,	-0.993812138322137880,	-0.993806583379819310,	-0.993801025952984250,	-0.993795466041646700,	-0.993789903645820430,	-0.993784338765519410,	
+-0.993778771400757430,	-0.993773201551548690,	-0.993767629217906840,	-0.993762054399846000,	-0.993756477097380020,	-0.993750897310522800,	-0.993745315039288310,	-0.993739730283690560,	
+-0.993734143043743520,	-0.993728553319461080,	-0.993722961110857340,	-0.993717366417946060,	-0.993711769240741450,	-0.993706169579257390,	-0.993700567433507990,	-0.993694962803507110,	
+-0.993689355689268860,	-0.993683746090807120,	-0.993678134008136090,	-0.993672519441269660,	-0.993666902390222040,	-0.993661282855007100,	-0.993655660835638940,	-0.993650036332131670,	
+-0.993644409344499270,	-0.993638779872755950,	-0.993633147916915590,	-0.993627513476992300,	-0.993621876553000270,	-0.993616237144953620,	-0.993610595252866320,	-0.993604950876752600,	
+-0.993599304016626440,	-0.993593654672502050,	-0.993588002844393410,	-0.993582348532314860,	-0.993576691736280490,	-0.993571032456304290,	-0.993565370692400580,	-0.993559706444583470,	
+-0.993554039712867040,	-0.993548370497265520,	-0.993542698797793000,	-0.993537024614463800,	-0.993531347947292030,	-0.993525668796292010,	-0.993519987161477600,	-0.993514303042863370,	
+-0.993508616440463400,	-0.993502927354291800,	-0.993497235784362890,	-0.993491541730690990,	-0.993485845193290080,	-0.993480146172174730,	-0.993474444667358900,	-0.993468740678856930,	
+-0.993463034206683250,	-0.993457325250851840,	-0.993451613811377250,	-0.993445899888273480,	-0.993440183481555050,	-0.993434464591236190,	-0.993428743217331100,	-0.993423019359854220,	
+-0.993417293018819760,	-0.993411564194242040,	-0.993405832886135380,	-0.993400099094514210,	-0.993394362819392750,	-0.993388624060785430,	-0.993382882818706460,	-0.993377139093170380,	
+-0.993371392884191410,	-0.993365644191783970,	-0.993359893015962390,	-0.993354139356741220,	-0.993348383214134540,	-0.993342624588156920,	-0.993336863478822770,	-0.993331099886146540,	
+-0.993325333810142430,	-0.993319565250824990,	-0.993313794208208760,	-0.993308020682307950,	-0.993302244673137100,	-0.993296466180710660,	-0.993290685205043040,	-0.993284901746148700,	
+-0.993279115804042160,	-0.993273327378737750,	-0.993267536470250010,	-0.993261743078593500,	-0.993255947203782630,	-0.993250148845831850,	-0.993244348004755810,	-0.993238544680568710,	
+-0.993232738873285450,	-0.993226930582920220,	-0.993221119809487680,	-0.993215306553002390,	-0.993209490813478760,	-0.993203672590931450,	-0.993197851885374900,	-0.993192028696823770,	
+-0.993186203025292590,	-0.993180374870795910,	-0.993174544233348280,	-0.993168711112964230,	-0.993162875509658430,	-0.993157037423445520,	-0.993151196854339950,	-0.993145353802356360,	
+-0.993139508267509410,	-0.993133660249813750,	-0.993127809749283830,	-0.993121956765934510,	-0.993116101299780120,	-0.993110243350835640,	-0.993104382919115510,	-0.993098520004634390,	
+-0.993092654607407030,	-0.993086786727447990,	-0.993080916364772030,	-0.993075043519393690,	-0.993069168191327840,	-0.993063290380589050,	-0.993057410087191950,	-0.993051527311151430,	
+-0.993045642052482020,	-0.993039754311198510,	-0.993033864087315640,	-0.993027971380848080,	-0.993022076191810710,	-0.993016178520218060,	-0.993010278366084910,	-0.993004375729426130,	
+-0.992998470610256370,	-0.992992563008590510,	-0.992986652924443210,	-0.992980740357829240,	-0.992974825308763460,	-0.992968907777260550,	-0.992962987763335470,	-0.992957065267002890,	
+-0.992951140288277580,	-0.992945212827174520,	-0.992939282883708360,	-0.992933350457893990,	-0.992927415549746280,	-0.992921478159280000,	-0.992915538286510020,	-0.992909595931451340,	
+-0.992903651094118490,	-0.992897703774526570,	-0.992891753972690360,	-0.992885801688624840,	-0.992879846922344770,	-0.992873889673865140,	-0.992867929943200720,	-0.992861967730366500,	
+-0.992856003035377350,	-0.992850035858248160,	-0.992844066198993900,	-0.992838094057629570,	-0.992832119434169820,	-0.992826142328629980,	-0.992820162741024580,	-0.992814180671368950,	
+-0.992808196119677740,	-0.992802209085966170,	-0.992796219570248990,	-0.992790227572541210,	-0.992784233092858020,	-0.992778236131214080,	-0.992772236687624600,	-0.992766234762104570,	
+-0.992760230354668980,	-0.992754223465332710,	-0.992748214094110960,	-0.992742202241018720,	-0.992736187906070880,	-0.992730171089282630,	-0.992724151790668970,	-0.992718130010244780,	
+-0.992712105748025490,	-0.992706079004025740,	-0.992700049778260870,	-0.992694018070745860,	-0.992687983881495930,	-0.992681947210525830,	-0.992675908057851000,	-0.992669866423486420,	
+-0.992663822307447100,	-0.992657775709748220,	-0.992651726630404910,	-0.992645675069432350,	-0.992639621026845550,	-0.992633564502659720,	-0.992627505496889940,	-0.992621444009551430,	
+-0.992615380040659300,	-0.992609313590228750,	-0.992603244658274870,	-0.992597173244812890,	-0.992591099349858010,	-0.992585022973425320,	-0.992578944115530050,	-0.992572862776187500,	
+-0.992566778955412790,	-0.992560692653221110,	-0.992554603869627680,	-0.992548512604647830,	-0.992542418858296640,	-0.992536322630589330,	-0.992530223921541330,	-0.992524122731167750,	
+-0.992518019059483780,	-0.992511912906504870,	-0.992505804272246110,	-0.992499693156722820,	-0.992493579559950320,	-0.992487463481943940,	-0.992481344922718890,	-0.992475223882290370,	
+-0.992469100360673820,	-0.992462974357884550,	-0.992456845873937900,	-0.992450714908849060,	-0.992444581462633480,	-0.992438445535306470,	-0.992432307126883240,	-0.992426166237379340,	
+-0.992420022866809970,	-0.992413877015190570,	-0.992407728682536460,	-0.992401577868863070,	-0.992395424574185720,	-0.992389268798519740,	-0.992383110541880660,	-0.992376949804283810,	
+-0.992370786585744510,	-0.992364620886278410,	-0.992358452705900620,	-0.992352282044626670,	-0.992346108902472100,	-0.992339933279452250,	-0.992333755175582530,	-0.992327574590878500,	
+-0.992321391525355370,	-0.992315205979028890,	-0.992309017951914400,	-0.992302827444027310,	-0.992296634455383190,	-0.992290438985997450,	-0.992284241035885640,	-0.992278040605063190,	
+-0.992271837693545770,	-0.992265632301348570,	-0.992259424428487470,	-0.992253214074977690,	-0.992247001240834870,	-0.992240785926074560,	-0.992234568130712310,	-0.992228347854763660,	
+-0.992222125098244150,	-0.992215899861169310,	-0.992209672143554710,	-0.992203441945415880,	-0.992197209266768580,	-0.992190974107628130,	-0.992184736468010200,	-0.992178496347930540,	
+-0.992172253747404590,	-0.992166008666448110,	-0.992159761105076530,	-0.992153511063305520,	-0.992147258541150710,	-0.992141003538627890,	-0.992134746055752470,	-0.992128486092540120,	
+-0.992122223649006710,	-0.992115958725167670,	-0.992109691321038660,	-0.992103421436635550,	-0.992097149071973770,	-0.992090874227069210,	-0.992084596901937400,	-0.992078317096594110,	
+-0.992072034811054990,	-0.992065750045335810,	-0.992059462799452340,	-0.992053173073420110,	-0.992046880867255010,	-0.992040586180972680,	-0.992034289014588900,	-0.992027989368119420,	
+-0.992021687241579910,	-0.992015382634986230,	-0.992009075548354050,	-0.992002765981699230,	-0.991996453935037440,	-0.991990139408384540,	-0.991983822401756310,	-0.991977502915168510,	
+-0.991971180948637010,	-0.991964856502177470,	-0.991958529575805880,	-0.991952200169537890,	-0.991945868283389380,	-0.991939533917376210,	-0.991933197071514280,	-0.991926857745819350,	
+-0.991920515940307170,	-0.991914171654993850,	-0.991907824889894930,	-0.991901475645026620,	-0.991895123920404460,	-0.991888769716044670,	-0.991882413031962780,	-0.991876053868175010,	
+-0.991869692224697010,	-0.991863328101544760,	-0.991856961498734260,	-0.991850592416281370,	-0.991844220854201990,	-0.991837846812511970,	-0.991831470291227420,	-0.991825091290364110,	
+-0.991818709809938140,	-0.991812325849965370,	-0.991805939410461800,	-0.991799550491443420,	-0.991793159092926090,	-0.991786765214925920,	-0.991780368857458790,	-0.991773970020540800,	
+-0.991767568704187810,	-0.991761164908415930,	-0.991754758633241250,	-0.991748349878679550,	-0.991741938644747020,	-0.991735524931459560,	-0.991729108738833350,	-0.991722690066884400,	
+-0.991716268915628700,	-0.991709845285082330,	-0.991703419175261280,	-0.991696990586181770,	-0.991690559517859780,	-0.991684125970311300,	-0.991677689943552650,	-0.991671251437599710,	
+-0.991664810452468570,	-0.991658366988175440,	-0.991651921044736430,	-0.991645472622167620,	-0.991639021720485130,	-0.991632568339705030,	-0.991626112479843560,	-0.991619654140916800,	
+-0.991613193322940960,	-0.991606730025932030,	-0.991600264249906330,	-0.991593795994879960,	-0.991587325260869120,	-0.991580852047890040,	-0.991574376355958690,	-0.991567898185091500,	
+-0.991561417535304470,	-0.991554934406614020,	-0.991548448799036140,	-0.991541960712587160,	-0.991535470147283270,	-0.991528977103140700,	-0.991522481580175640,	-0.991515983578404430,	
+-0.991509483097843370,	-0.991502980138508460,	-0.991496474700416130,	-0.991489966783582590,	-0.991483456388024260,	-0.991476943513757150,	-0.991470428160797780,	-0.991463910329162260,	
+-0.991457390018867010,	-0.991450867229928260,	-0.991444341962362310,	-0.991437814216185600,	-0.991431283991414340,	-0.991424751288064840,	-0.991418216106153440,	-0.991411678445696440,	
+-0.991405138306710400,	-0.991398595689211400,	-0.991392050593215890,	-0.991385503018740400,	-0.991378952965801030,	-0.991372400434414320,	-0.991365845424596600,	-0.991359287936364300,	
+-0.991352727969733730,	-0.991346165524721320,	-0.991339600601343630,	-0.991333033199616850,	-0.991326463319557430,	-0.991319890961181890,	-0.991313316124506680,	-0.991306738809548120,	
+-0.991300159016322740,	-0.991293576744846970,	-0.991286991995137260,	-0.991280404767210020,	-0.991273815061081810,	-0.991267222876769050,	-0.991260628214288290,	-0.991254031073655840,	
+-0.991247431454888470,	-0.991240829358002400,	-0.991234224783014260,	-0.991227617729940610,	-0.991221008198797880,	-0.991214396189602610,	-0.991207781702371450,	-0.991201164737120720,	
+-0.991194545293867190,	-0.991187923372627180,	-0.991181298973417450,	-0.991174672096254430,	-0.991168042741154780,	-0.991161410908135030,	-0.991154776597211630,	-0.991148139808401440,	
+-0.991141500541720790,	-0.991134858797186440,	-0.991128214574814930,	-0.991121567874622910,	-0.991114918696626930,	-0.991108267040843650,	-0.991101612907289710,	-0.991094956295981770,	
+-0.991088297206936470,	-0.991081635640170380,	-0.991074971595700130,	-0.991068305073542600,	-0.991061636073714220,	-0.991054964596231770,	-0.991048290641111880,	-0.991041614208371340,	
+-0.991034935298026660,	-0.991028253910094750,	-0.991021570044592130,	-0.991014883701535560,	-0.991008194880941830,	-0.991001503582827570,	-0.990994809807209660,	-0.990988113554104650,	
+-0.990981414823529310,	-0.990974713615500490,	-0.990968009930034870,	-0.990961303767149300,	-0.990954595126860350,	-0.990947884009184990,	-0.990941170414139980,	-0.990934454341741880,	
+-0.990927735792007770,	-0.990921014764954310,	-0.990914291260598270,	-0.990907565278956510,	-0.990900836820045820,	-0.990894105883883050,	-0.990887372470485080,	-0.990880636579868580,	
+-0.990873898212050520,	-0.990867157367047780,	-0.990860414044877120,	-0.990853668245555430,	-0.990846919969099460,	-0.990840169215526310,	-0.990833415984852750,	-0.990826660277095540,	
+-0.990819902092271780,	-0.990813141430398230,	-0.990806378291491870,	-0.990799612675569490,	-0.990792844582648160,	-0.990786074012744660,	-0.990779300965875960,	-0.990772525442059070,	
+-0.990765747441310740,	-0.990758966963648180,	-0.990752184009088150,	-0.990745398577647650,	-0.990738610669343660,	-0.990731820284193150,	-0.990725027422213130,	-0.990718232083420470,	
+-0.990711434267832260,	-0.990704633975465490,	-0.990697831206337140,	-0.990691025960464210,	-0.990684218237863680,	-0.990677408038552640,	-0.990670595362547980,	-0.990663780209866900,	
+-0.990656962580526490,	-0.990650142474543530,	-0.990643319891935210,	-0.990636494832718650,	-0.990629667296910820,	-0.990622837284528820,	-0.990616004795589760,	-0.990609169830110710,	
+-0.990602332388108690,	-0.990595492469600880,	-0.990588650074604280,	-0.990581805203136100,	-0.990574957855213320,	-0.990568108030853270,	-0.990561255730072920,	-0.990554400952889380,	
+-0.990547543699319850,	-0.990540683969381440,	-0.990533821763091350,	-0.990526957080466790,	-0.990520089921524740,	-0.990513220286282530,	-0.990506348174757130,	-0.990499473586965990,	
+-0.990492596522926090,	-0.990485716982654860,	-0.990478834966169170,	-0.990471950473486460,	-0.990465063504623820,	-0.990458174059598570,	-0.990451282138427920,	-0.990444387741128970,	
+-0.990437490867719150,	-0.990430591518215550,	-0.990423689692635500,	-0.990416785390996090,	-0.990409878613314860,	-0.990402969359608920,	-0.990396057629895580,	-0.990389143424192040,	
+-0.990382226742515640,	-0.990375307584883680,	-0.990368385951313490,	-0.990361461841822280,	-0.990354535256427470,	-0.990347606195146280,	-0.990340674657996130,	-0.990333740644994240,	
+-0.990326804156158040,	-0.990319865191504830,	-0.990312923751051840,	-0.990305979834816720,	-0.990299033442816560,	-0.990292084575068790,	-0.990285133231590840,	-0.990278179412400040,	
+-0.990271223117513810,	-0.990264264346949590,	-0.990257303100724570,	-0.990250339378856430,	-0.990243373181362350,	-0.990236404508259890,	-0.990229433359566370,	-0.990222459735299320,	
+-0.990215483635476070,	-0.990208505060114150,	-0.990201524009230890,	-0.990194540482843940,	-0.990187554480970620,	-0.990180566003628360,	-0.990173575050834700,	-0.990166581622607070,	
+-0.990159585718963010,	-0.990152587339920070,	-0.990145586485495550,	-0.990138583155707130,	-0.990131577350572220,	-0.990124569070108370,	-0.990117558314333120,	-0.990110545083263900,	
+-0.990103529376918370,	-0.990096511195314060,	-0.990089490538468400,	-0.990082467406399050,	-0.990075441799123550,	-0.990068413716659430,	-0.990061383159024260,	-0.990054350126235660,	
+-0.990047314618311190,	-0.990040276635268390,	-0.990033236177124910,	-0.990026193243898400,	-0.990019147835606290,	-0.990012099952266470,	-0.990005049593896240,	-0.989997996760513480,	
+-0.989990941452135730,	-0.989983883668780650,	-0.989976823410465780,	-0.989969760677208880,	-0.989962695469027600,	-0.989955627785939600,	-0.989948557627962410,	-0.989941484995114030,	
+-0.989934409887411770,	-0.989927332304873510,	-0.989920252247517010,	-0.989913169715359810,	-0.989906084708419680,	-0.989898997226714370,	-0.989891907270261550,	-0.989884814839078970,	
+-0.989877719933184300,	-0.989870622552595390,	-0.989863522697329910,	-0.989856420367405620,	-0.989849315562840280,	-0.989842208283651660,	-0.989835098529857520,	-0.989827986301475620,	
+-0.989820871598523830,	-0.989813754421019710,	-0.989806634768981340,	-0.989799512642426380,	-0.989792388041372590,	-0.989785260965837850,	-0.989778131415839920,	-0.989770999391396680,	
+-0.989763864892525880,	-0.989756727919245520,	-0.989749588471573350,	-0.989742446549527140,	-0.989735302153124770,	-0.989728155282384340,	-0.989721005937323370,	-0.989713854117959870,	
+-0.989706699824311810,	-0.989699543056396960,	-0.989692383814233300,	-0.989685222097838600,	-0.989678057907230850,	-0.989670891242428020,	-0.989663722103448000,	-0.989656550490308540,	
+-0.989649376403027750,	-0.989642199841623600,	-0.989635020806113870,	-0.989627839296516650,	-0.989620655312849820,	-0.989613468855131240,	-0.989606279923379130,	-0.989599088517611250,	
+-0.989591894637845690,	-0.989584698284100340,	-0.989577499456393280,	-0.989570298154742510,	-0.989563094379165900,	-0.989555888129681650,	-0.989548679406307640,	-0.989541468209061970,	
+-0.989534254537962510,	-0.989527038393027580,	-0.989519819774274940,	-0.989512598681722810,	-0.989505375115389160,	-0.989498149075291990,	-0.989490920561449610,	-0.989483689573879780,	
+-0.989476456112600820,	-0.989469220177630620,	-0.989461981768987480,	-0.989454740886689390,	-0.989447497530754340,	-0.989440251701200650,	-0.989433003398046300,	-0.989425752621309380,	
+-0.989418499371008120,	-0.989411243647160710,	-0.989403985449785030,	-0.989396724778899510,	-0.989389461634522130,	-0.989382196016671100,	-0.989374927925364520,	-0.989367657360620710,	
+-0.989360384322457760,	-0.989353108810893780,	-0.989345830825947070,	-0.989338550367635850,	-0.989331267435978100,	-0.989323982030992250,	-0.989316694152696520,	-0.989309403801108990,	
+-0.989302110976247980,	-0.989294815678131600,	-0.989287517906778270,	-0.989280217662206200,	-0.989272914944433480,	-0.989265609753478550,	-0.989258302089359500,	-0.989250991952094760,	
+-0.989243679341702540,	-0.989236364258201050,	-0.989229046701608830,	-0.989221726671943860,	-0.989214404169224570,	-0.989207079193469290,	-0.989199751744696320,	-0.989192421822923880,	
+-0.989185089428170520,	-0.989177754560454430,	-0.989170417219793820,	-0.989163077406207350,	-0.989155735119713000,	-0.989148390360329420,	-0.989141043128074830,	-0.989133693422967750,	
+-0.989126341245026300,	-0.989118986594269000,	-0.989111629470714290,	-0.989104269874380490,	-0.989096907805286030,	-0.989089543263449330,	-0.989082176248888720,	-0.989074806761622630,	
+-0.989067434801669590,	-0.989060060369047920,	-0.989052683463776170,	-0.989045304085872660,	-0.989037922235355920,	-0.989030537912244270,	-0.989023151116556360,	-0.989015761848310640,	
+-0.989008370107525400,	-0.989000975894219310,	-0.988993579208410690,	-0.988986180050118180,	-0.988978778419360330,	-0.988971374316155340,	-0.988963967740522090,	-0.988956558692478780,	
+-0.988949147172044190,	-0.988941733179236620,	-0.988934316714074830,	-0.988926897776577160,	-0.988919476366762250,	-0.988912052484648640,	-0.988904626130254980,	-0.988897197303599710,	
+-0.988889766004701460,	-0.988882332233578800,	-0.988874895990250250,	-0.988867457274734460,	-0.988860016087050100,	-0.988852572427215690,	-0.988845126295249790,	-0.988837677691171150,	
+-0.988830226614998200,	-0.988822773066749820,	-0.988815317046444430,	-0.988807858554100800,	-0.988800397589737480,	-0.988792934153373220,	-0.988785468245026560,	-0.988777999864716260,	
+-0.988770529012460990,	-0.988763055688279380,	-0.988755579892190100,	-0.988748101624211890,	-0.988740620884363430,	-0.988733137672663350,	-0.988725651989130540,	-0.988718163833783530,	
+-0.988710673206641080,	-0.988703180107721960,	-0.988695684537045040,	-0.988688186494628750,	-0.988680685980492080,	-0.988673182994653570,	-0.988665677537132190,	-0.988658169607946610,	
+-0.988650659207115700,	-0.988643146334658000,	-0.988635630990592480,	-0.988628113174937930,	-0.988620592887713090,	-0.988613070128936730,	-0.988605544898627730,	-0.988598017196804730,	
+-0.988590487023486840,	-0.988582954378692700,	-0.988575419262441190,	-0.988567881674751070,	-0.988560341615641320,	-0.988552799085130610,	-0.988545254083238010,	-0.988537706609982300,	
+-0.988530156665382240,	-0.988522604249456820,	-0.988515049362224900,	-0.988507492003705250,	-0.988499932173916960,	-0.988492369872878920,	-0.988484805100609880,	-0.988477237857128820,	
+-0.988469668142454630,	-0.988462095956606280,	-0.988454521299602760,	-0.988446944171462950,	-0.988439364572205710,	-0.988431782501850040,	-0.988424197960414920,	-0.988416610947919330,	
+-0.988409021464382250,	-0.988401429509822570,	-0.988393835084259380,	-0.988386238187711540,	-0.988378638820198160,	-0.988371036981738120,	-0.988363432672350490,	-0.988355825892054280,	
+-0.988348216640868580,	-0.988340604918812260,	-0.988332990725904410,	-0.988325374062164140,	-0.988317754927610430,	-0.988310133322262360,	-0.988302509246138940,	-0.988294882699259250,	
+-0.988287253681642270,	-0.988279622193307230,	-0.988271988234273090,	-0.988264351804559070,	-0.988256712904184040,	-0.988249071533167320,	-0.988241427691527900,	-0.988233781379284970,	
+-0.988226132596457530,	-0.988218481343064780,	-0.988210827619125820,	-0.988203171424659740,	-0.988195512759685760,	-0.988187851624223070,	-0.988180188018290660,	-0.988172521941907860,	
+-0.988164853395093750,	-0.988157182377867430,	-0.988149508890248220,	-0.988141832932255220,	-0.988134154503907620,	-0.988126473605224650,	-0.988118790236225400,	-0.988111104396929290,	
+-0.988103416087355410,	-0.988095725307522990,	-0.988088032057451220,	-0.988080336337159420,	-0.988072638146666790,	-0.988064937485992440,	-0.988057234355155910,	-0.988049528754176180,	
+-0.988041820683072670,	-0.988034110141864600,	-0.988026397130571280,	-0.988018681649211920,	-0.988010963697805940,	-0.988003243276372460,	-0.987995520384930880,	-0.987987795023500540,	
+-0.987980067192100740,	-0.987972336890750700,	-0.987964604119469850,	-0.987956868878277490,	-0.987949131167192960,	-0.987941390986235680,	-0.987933648335424740,	-0.987925903214779800,	
+-0.987918155624320060,	-0.987910405564065060,	-0.987902653034033910,	-0.987894898034246130,	-0.987887140564721160,	-0.987879380625478310,	-0.987871618216537020,	-0.987863853337916710,	
+-0.987856085989636700,	-0.987848316171716530,	-0.987840543884175530,	-0.987832769127033220,	-0.987824991900309040,	-0.987817212204022300,	-0.987809430038192550,	-0.987801645402839100,	
+-0.987793858297981720,	-0.987786068723639610,	-0.987778276679832310,	-0.987770482166579370,	-0.987762685183900200,	-0.987754885731814360,	-0.987747083810341260,	-0.987739279419500460,	
+-0.987731472559311490,	-0.987723663229793770,	-0.987715851430966960,	-0.987708037162850490,	-0.987700220425463900,	-0.987692401218826840,	-0.987684579542958740,	-0.987676755397879140,	
+-0.987668928783607680,	-0.987661099700163910,	-0.987653268147567380,	-0.987645434125837720,	-0.987637597634994480,	-0.987629758675057200,	-0.987621917246045530,	-0.987614073347979130,	
+-0.987606226980877410,	-0.987598378144760260,	-0.987590526839647100,	-0.987582673065557580,	-0.987574816822511470,	-0.987566958110528300,	-0.987559096929627730,	-0.987551233279829410,	
+-0.987543367161152990,	-0.987535498573618110,	-0.987527627517244540,	-0.987519753992051940,	-0.987511877998059950,	-0.987503999535288220,	-0.987496118603756520,	-0.987488235203484390,	
+-0.987480349334491910,	-0.987472460996798420,	-0.987464570190423770,	-0.987456676915387740,	-0.987448781171709980,	-0.987440882959410240,	-0.987432982278508400,	-0.987425079129024000,	
+-0.987417173510977020,	-0.987409265424387010,	-0.987401354869273830,	-0.987393441845657250,	-0.987385526353557140,	-0.987377608392993160,	-0.987369687963985280,	-0.987361765066553040,	
+-0.987353839700716440,	-0.987345911866495230,	-0.987337981563909170,	-0.987330048792978250,	-0.987322113553722240,	-0.987314175846160880,	-0.987306235670314060,	-0.987298293026201760,	
+-0.987290347913843620,	-0.987282400333259650,	-0.987274450284469700,	-0.987266497767493530,	-0.987258542782351260,	-0.987250585329062510,	-0.987242625407647400,	-0.987234663018125680,	
+-0.987226698160517220,	-0.987218730834842130,	-0.987210761041120160,	-0.987202788779371400,	-0.987194814049615510,	-0.987186836851872700,	-0.987178857186162720,	-0.987170875052505560,	
+-0.987162890450921320,	-0.987154903381429750,	-0.987146913844051070,	-0.987138921838805030,	-0.987130927365711620,	-0.987122930424790930,	-0.987114931016062960,	-0.987106929139547670,	
+-0.987098924795264950,	-0.987090917983235010,	-0.987082908703477810,	-0.987074896956013250,	-0.987066882740861520,	-0.987058866058042490,	-0.987050846907576380,	-0.987042825289483170,	
+-0.987034801203782840,	-0.987026774650495490,	-0.987018745629641310,	-0.987010714141240090,	-0.987002680185312230,	-0.986994643761877620,	-0.986986604870956350,	-0.986978563512568740,	
+-0.986970519686734550,	-0.986962473393474090,	-0.986954424632807470,	-0.986946373404754880,	-0.986938319709336210,	-0.986930263546571870,	-0.986922204916481750,	-0.986914143819086150,	
+-0.986906080254405180,	-0.986898014222459150,	-0.986889945723267940,	-0.986881874756851960,	-0.986873801323231210,	-0.986865725422426010,	-0.986857647054456440,	-0.986849566219342720,	
+-0.986841482917105160,	-0.986833397147763860,	-0.986825308911339130,	-0.986817218207851070,	-0.986809125037319990,	-0.986801029399766110,	-0.986792931295209620,	-0.986784830723670850,	
+-0.986776727685170000,	-0.986768622179727270,	-0.986760514207362990,	-0.986752403768097470,	-0.986744290861950920,	-0.986736175488943660,	-0.986728057649095990,	-0.986719937342428130,	
+-0.986711814568960510,	-0.986703689328713220,	-0.986695561621706800,	-0.986687431447961450,	-0.986679298807497500,	-0.986671163700335250,	-0.986663026126495150,	-0.986654886085997610,	
+-0.986646743578862620,	-0.986638598605110940,	-0.986630451164762780,	-0.986622301257838340,	-0.986614148884358280,	-0.986605994044342790,	-0.986597836737812320,	-0.986589676964787280,	
+-0.986581514725288100,	-0.986573350019334990,	-0.986565182846948610,	-0.986557013208149260,	-0.986548841102957370,	-0.986540666531393380,	-0.986532489493477720,	-0.986524309989230800,	
+-0.986516128018673170,	-0.986507943581825140,	-0.986499756678707370,	-0.986491567309340180,	-0.986483375473743980,	-0.986475181171939440,	-0.986466984403946870,	-0.986458785169786910,	
+-0.986450583469479890,	-0.986442379303046460,	-0.986434172670507150,	-0.986425963571882390,	-0.986417752007192620,	-0.986409537976458580,	-0.986401321479700610,	-0.986393102516939350,	
+-0.986384881088195440,	-0.986376657193489210,	-0.986368430832841430,	-0.986360202006272500,	-0.986351970713803090,	-0.986343736955453740,	-0.986335500731244990,	-0.986327262041197580,	
+-0.986319020885331970,	-0.986310777263668890,	-0.986302531176228790,	-0.986294282623032430,	-0.986286031604100330,	-0.986277778119453160,	-0.986269522169111460,	-0.986261263753096080,	
+-0.986253002871427360,	-0.986244739524126280,	-0.986236473711213370,	-0.986228205432709280,	-0.986219934688634560,	-0.986211661479010070,	-0.986203385803856470,	-0.986195107663194290,	
+-0.986186827057044410,	-0.986178543985427480,	-0.986170258448364260,	-0.986161970445875280,	-0.986153679977981420,	-0.986145387044703340,	-0.986137091646061780,	-0.986128793782077520,	
+-0.986120493452771310,	-0.986112190658163800,	-0.986103885398275760,	-0.986095577673128170,	-0.986087267482741560,	-0.986078954827136700,	-0.986070639706334570,	-0.986062322120355830,	
+-0.986054002069221220,	-0.986045679552951640,	-0.986037354571567830,	-0.986029027125090660,	-0.986020697213540910,	-0.986012364836939440,	-0.986004029995307120,	-0.985995692688664600,	
+-0.985987352917032880,	-0.985979010680432920,	-0.985970665978885270,	-0.985962318812411030,	-0.985953969181030950,	-0.985945617084765910,	-0.985937262523636890,	-0.985928905497664760,	
+-0.985920546006870290,	-0.985912184051274450,	-0.985903819630898240,	-0.985895452745762400,	-0.985887083395887930,	-0.985878711581295810,	-0.985870337302006900,	-0.985861960558042090,	
+-0.985853581349422360,	-0.985845199676168790,	-0.985836815538302160,	-0.985828428935843440,	-0.985820039868813720,	-0.985811648337233890,	-0.985803254341124920,	-0.985794857880507800,	
+-0.985786458955403620,	-0.985778057565833250,	-0.985769653711817680,	-0.985761247393378000,	-0.985752838610535200,	-0.985744427363310360,	-0.985736013651724470,	-0.985727597475798410,	
+-0.985719178835553490,	-0.985710757731010580,	-0.985702334162190770,	-0.985693908129115060,	-0.985685479631804640,	-0.985677048670280500,	-0.985668615244563840,	-0.985660179354675540,	
+-0.985651741000636790,	-0.985643300182468710,	-0.985634856900192370,	-0.985626411153828990,	-0.985617962943399430,	-0.985609512268925010,	-0.985601059130426840,	-0.985592603527926100,	
+-0.985584145461443680,	-0.985575684931001010,	-0.985567221936619050,	-0.985558756478319140,	-0.985550288556122260,	-0.985541818170049710,	-0.985533345320122600,	-0.985524870006362130,	
+-0.985516392228789400,	-0.985507911987425820,	-0.985499429282292390,	-0.985490944113410320,	-0.985482456480801020,	-0.985473966384485480,	-0.985465473824485130,	-0.985456978800821060,	
+-0.985448481313514480,	-0.985439981362586700,	-0.985431478948059050,	-0.985422974069952720,	-0.985414466728288920,	-0.985405956923088850,	-0.985397444654373960,	-0.985388929922165540,	
+-0.985380412726484690,	-0.985371893067352840,	-0.985363370944791210,	-0.985354846358821200,	-0.985346319309464040,	-0.985337789796741140,	-0.985329257820673820,	-0.985320723381283290,	
+-0.985312186478590870,	-0.985303647112618090,	-0.985295105283386150,	-0.985286560990916490,	-0.985278014235230310,	-0.985269465016349270,	-0.985260913334294440,	-0.985252359189087380,	
+-0.985243802580749390,	-0.985235243509301920,	-0.985226681974766370,	-0.985218117977164080,	-0.985209551516516460,	-0.985200982592844940,	-0.985192411206171070,	-0.985183837356516160,	
+-0.985175261043901520,	-0.985166682268348910,	-0.985158101029879440,	-0.985149517328514860,	-0.985140931164276370,	-0.985132342537185620,	-0.985123751447264050,	-0.985115157894532970,	
+-0.985106561879014130,	-0.985097963400728750,	-0.985089362459698580,	-0.985080759055944940,	-0.985072153189489490,	-0.985063544860353520,	-0.985054934068558820,	-0.985046320814126690,	
+-0.985037705097078780,	-0.985029086917436620,	-0.985020466275221770,	-0.985011843170455760,	-0.985003217603160120,	-0.984994589573356390,	-0.984985959081066230,	-0.984977326126311170,	
+-0.984968690709112750,	-0.984960052829492730,	-0.984951412487472420,	-0.984942769683073700,	-0.984934124416318000,	-0.984925476687227070,	-0.984916826495822350,	-0.984908173842125590,	
+-0.984899518726158440,	-0.984890861147942440,	-0.984882201107499240,	-0.984873538604850610,	-0.984864873640018180,	-0.984856206213023500,	-0.984847536323888330,	-0.984838863972634320,	
+-0.984830189159283110,	-0.984821511883856470,	-0.984812832146376050,	-0.984804149946863490,	-0.984795465285340570,	-0.984786778161829020,	-0.984778088576350520,	-0.984769396528926810,	
+-0.984760702019579660,	-0.984752005048330710,	-0.984743305615201740,	-0.984734603720214490,	-0.984725899363390720,	-0.984717192544752210,	-0.984708483264320700,	-0.984699771522118070,	
+-0.984691057318165970,	-0.984682340652486170,	-0.984673621525100630,	-0.984664899936030900,	-0.984656175885299080,	-0.984647449372926700,	-0.984638720398935630,	-0.984629988963347970,	
+-0.984621255066185140,	-0.984612518707469350,	-0.984603779887222140,	-0.984595038605465490,	-0.984586294862221270,	-0.984577548657511350,	-0.984568799991357490,	-0.984560048863781680,	
+-0.984551295274805670,	-0.984542539224451560,	-0.984533780712741000,	-0.984525019739695970,	-0.984516256305338460,	-0.984507490409690320,	-0.984498722052773330,	-0.984489951234609690,	
+-0.984481177955221050,	-0.984472402214629510,	-0.984463624012857030,	-0.984454843349925390,	-0.984446060225856790,	-0.984437274640672880,	-0.984428486594395860,	-0.984419696087047600,	
+-0.984410903118650090,	-0.984402107689225310,	-0.984393309798795360,	-0.984384509447382090,	-0.984375706635007510,	-0.984366901361693690,	-0.984358093627462630,	-0.984349283432336300,	
+-0.984340470776336800,	-0.984331655659485990,	-0.984322838081806210,	-0.984314018043319190,	-0.984305195544047270,	-0.984296370584012310,	-0.984287543163236410,	-0.984278713281741660,	
+-0.984269880939550150,	-0.984261046136683860,	-0.984252208873165000,	-0.984243369149015670,	-0.984234526964257840,	-0.984225682318913720,	-0.984216835213005400,	-0.984207985646555090,	
+-0.984199133619584670,	-0.984190279132116430,	-0.984181422184172590,	-0.984172562775775140,	-0.984163700906946270,	-0.984154836577708190,	-0.984145969788082890,	-0.984137100538092780,	
+-0.984128228827759970,	-0.984119354657106430,	-0.984110478026154590,	-0.984101598934926550,	-0.984092717383444620,	-0.984083833371730780,	-0.984074946899807350,	-0.984066057967696530,	
+-0.984057166575420640,	-0.984048272723001770,	-0.984039376410462350,	-0.984030477637824360,	-0.984021576405110230,	-0.984012672712342160,	-0.984003766559542360,	-0.983994857946733140,	
+-0.983985946873936920,	-0.983977033341175700,	-0.983968117348471890,	-0.983959198895847820,	-0.983950277983325790,	-0.983941354610928020,	-0.983932428778676820,	-0.983923500486594600,	
+-0.983914569734703590,	-0.983905636523026320,	-0.983896700851584760,	-0.983887762720401570,	-0.983878822129498840,	-0.983869879078899220,	-0.983860933568624810,	-0.983851985598698130,	
+-0.983843035169141400,	-0.983834082279977150,	-0.983825126931227590,	-0.983816169122915360,	-0.983807208855062560,	-0.983798246127691840,	-0.983789280940825520,	-0.983780313294486010,	
+-0.983771343188695640,	-0.983762370623476930,	-0.983753395598852220,	-0.983744418114844140,	-0.983735438171475020,	-0.983726455768767270,	-0.983717470906743330,	-0.983708483585425730,	
+-0.983699493804837010,	-0.983690501564999490,	-0.983681506865935700,	-0.983672509707668170,	-0.983663510090219350,	-0.983654508013611760,	-0.983645503477867940,	-0.983636496483010330,	
+-0.983627487029061440,	-0.983618475116043940,	-0.983609460743980150,	-0.983600443912892700,	-0.983591424622804240,	-0.983582402873737220,	-0.983573378665714040,	-0.983564351998757580,	
+-0.983555322872890160,	-0.983546291288134420,	-0.983537257244513020,	-0.983528220742048380,	-0.983519181780763250,	-0.983510140360680190,	-0.983501096481821710,	-0.983492050144210590,	
+-0.983483001347869260,	-0.983473950092820460,	-0.983464896379086740,	-0.983455840206690860,	-0.983446781575655240,	-0.983437720486002860,	-0.983428656937756050,	-0.983419590930937670,	
+-0.983410522465570260,	-0.983401451541676570,	-0.983392378159279160,	-0.983383302318400880,	-0.983374224019064380,	-0.983365143261292320,	-0.983356060045107340,	-0.983346974370532200,	
+-0.983337886237589660,	-0.983328795646302490,	-0.983319702596693210,	-0.983310607088784700,	-0.983301509122599730,	-0.983292408698160920,	-0.983283305815491170,	-0.983274200474613000,	
+-0.983265092675549510,	-0.983255982418323130,	-0.983246869702956940,	-0.983237754529473480,	-0.983228636897895750,	-0.983219516808246260,	-0.983210394260548020,	-0.983201269254823870,	
+-0.983192141791096490,	-0.983183011869388830,	-0.983173879489723570,	-0.983164744652123670,	-0.983155607356611890,	-0.983146467603211010,	-0.983137325391943980,	-0.983128180722833810,	
+-0.983119033595903020,	-0.983109884011174720,	-0.983100731968671650,	-0.983091577468416800,	-0.983082420510432930,	-0.983073261094743130,	-0.983064099221370060,	-0.983054934890336800,	
+-0.983045768101666220,	-0.983036598855381190,	-0.983027427151504600,	-0.983018252990059520,	-0.983009076371068820,	-0.982999897294555390,	-0.982990715760542310,	-0.982981531769052340,	
+-0.982972345320108580,	-0.982963156413733890,	-0.982953965049951470,	-0.982944771228783990,	-0.982935574950254630,	-0.982926376214386280,	-0.982917175021202130,	-0.982907971370724940,	
+-0.982898765262977810,	-0.982889556697983830,	-0.982880345675765880,	-0.982871132196347140,	-0.982861916259750500,	-0.982852697865999160,	-0.982843477015115980,	-0.982834253707124180,	
+-0.982825027942046630,	-0.982815799719906620,	-0.982806569040727160,	-0.982797335904531220,	-0.982788100311341890,	-0.982778862261182380,	-0.982769621754075670,	-0.982760378790044960,	
+-0.982751133369113240,	-0.982741885491303700,	-0.982732635156639440,	-0.982723382365143670,	-0.982714127116839360,	-0.982704869411749730,	-0.982695609249897960,	-0.982686346631307160,	
+-0.982677081556000530,	-0.982667814024001160,	-0.982658544035332260,	-0.982649271590016920,	-0.982639996688078550,	-0.982630719329540050,	-0.982621439514424820,	-0.982612157242755970,	
+-0.982602872514556800,	-0.982593585329850420,	-0.982584295688660010,	-0.982575003591008910,	-0.982565709036920310,	-0.982556412026417410,	-0.982547112559523540,	-0.982537810636261780,	
+-0.982528506256655660,	-0.982519199420728070,	-0.982509890128502650,	-0.982500578380002490,	-0.982491264175250790,	-0.982481947514270980,	-0.982472628397086270,	-0.982463306823720070,	
+-0.982453982794195490,	-0.982444656308536060,	-0.982435327366764870,	-0.982425995968905450,	-0.982416662114981020,	-0.982407325805015000,	-0.982397987039030580,	-0.982388645817051210,	
+-0.982379302139100300,	-0.982369956005201050,	-0.982360607415376900,	-0.982351256369651260,	-0.982341902868047570,	-0.982332546910589020,	-0.982323188497299050,	-0.982313827628201190,	
+-0.982304464303318750,	-0.982295098522675160,	-0.982285730286293850,	-0.982276359594198120,	-0.982266986446411640,	-0.982257610842957600,	-0.982248232783859530,	-0.982238852269140870,	
+-0.982229469298825150,	-0.982220083872935690,	-0.982210695991496020,	-0.982201305654529570,	-0.982191912862059980,	-0.982182517614110460,	-0.982173119910704770,	-0.982163719751866230,	
+-0.982154317137618470,	-0.982144912067984820,	-0.982135504542988920,	-0.982126094562654210,	-0.982116682127004310,	-0.982107267236062790,	-0.982097849889852940,	-0.982088430088398520,	
+-0.982079007831723080,	-0.982069583119850150,	-0.982060155952803160,	-0.982050726330605860,	-0.982041294253281680,	-0.982031859720854270,	-0.982022422733347280,	-0.982012983290784240,	
+-0.982003541393188570,	-0.981994097040584270,	-0.981984650232994530,	-0.981975200970443330,	-0.981965749252953990,	-0.981956295080550380,	-0.981946838453256030,	-0.981937379371094600,	
+-0.981927917834089610,	-0.981918453842264950,	-0.981908987395644030,	-0.981899518494250720,	-0.981890047138108570,	-0.981880573327241320,	-0.981871097061672750,	-0.981861618341426270,	
+-0.981852137166525860,	-0.981842653536995070,	-0.981833167452857650,	-0.981823678914137240,	-0.981814187920857730,	-0.981804694473042750,	-0.981795198570715950,	-0.981785700213901210,	
+-0.981776199402622280,	-0.981766696136902710,	-0.981757190416766570,	-0.981747682242237300,	-0.981738171613338870,	-0.981728658530095060,	-0.981719142992529600,	-0.981709625000666160,	
+-0.981700104554528830,	-0.981690581654141140,	-0.981681056299526960,	-0.981671528490710270,	-0.981661998227714610,	-0.981652465510564070,	-0.981642930339282290,	-0.981633392713893270,	
+-0.981623852634420760,	-0.981614310100888510,	-0.981604765113320620,	-0.981595217671740740,	-0.981585667776172840,	-0.981576115426640810,	-0.981566560623168380,	-0.981557003365779670,	
+-0.981547443654498310,	-0.981537881489348510,	-0.981528316870353910,	-0.981518749797538500,	-0.981509180270926260,	-0.981499608290541060,	-0.981490033856406760,	-0.981480456968547470,	
+-0.981470877626987040,	-0.981461295831749460,	-0.981451711582858490,	-0.981442124880338330,	-0.981432535724212960,	-0.981422944114506040,	-0.981413350051241970,	-0.981403753534444420,	
+-0.981394154564137480,	-0.981384553140345120,	-0.981374949263091430,	-0.981365342932400410,	-0.981355734148295910,	-0.981346122910802140,	-0.981336509219943090,	-0.981326893075742830,	
+-0.981317274478225140,	-0.981307653427414440,	-0.981298029923334590,	-0.981288403966009580,	-0.981278775555463610,	-0.981269144691720660,	-0.981259511374804940,	-0.981249875604740420,	
+-0.981240237381551080,	-0.981230596705261360,	-0.981220953575895010,	-0.981211307993476330,	-0.981201659958029330,	-0.981192009469578190,	-0.981182356528147000,	-0.981172701133759980,	
+-0.981163043286441220,	-0.981153382986214790,	-0.981143720233104920,	-0.981134055027135800,	-0.981124387368331520,	-0.981114717256716170,	-0.981105044692314190,	-0.981095369675149430,	
+-0.981085692205246440,	-0.981076012282629080,	-0.981066329907321680,	-0.981056645079348530,	-0.981046957798733740,	-0.981037268065501510,	-0.981027575879676260,	-0.981017881241281970,	
+-0.981008184150342970,	-0.980998484606883440,	-0.980988782610927810,	-0.980979078162500180,	-0.980969371261624870,	-0.980959661908326170,	-0.980949950102628310,	-0.980940235844555470,	
+-0.980930519134132100,	-0.980920799971382480,	-0.980911078356330850,	-0.980901354289001490,	-0.980891627769418740,	-0.980881898797606900,	-0.980872167373590400,	-0.980862433497393440,	
+-0.980852697169040330,	-0.980842958388555510,	-0.980833217155963390,	-0.980823473471288180,	-0.980813727334554190,	-0.980803978745785950,	-0.980794227705007790,	-0.980784474212244020,	
+-0.980774718267519050,	-0.980764959870857430,	-0.980755199022283250,	-0.980745435721821160,	-0.980735669969495350,	-0.980725901765330480,	-0.980716131109350850,	-0.980706358001580900,	
+-0.980696582442045050,	-0.980686804430767720,	-0.980677023967773340,	-0.980667241053086450,	-0.980657455686731460,	-0.980647667868732810,	-0.980637877599115030,	-0.980628084877902540,	
+-0.980618289705119880,	-0.980608492080791370,	-0.980598692004941760,	-0.980588889477595370,	-0.980579084498776730,	-0.980569277068510380,	-0.980559467186820970,	-0.980549654853732690,	
+-0.980539840069270420,	-0.980530022833458470,	-0.980520203146321490,	-0.980510381007884010,	-0.980500556418170580,	-0.980490729377205830,	-0.980480899885014080,	-0.980471067941620200,	
+-0.980461233547048620,	-0.980451396701323970,	-0.980441557404470920,	-0.980431715656513880,	-0.980421871457477500,	-0.980412024807386540,	-0.980402175706265420,	-0.980392324154139020,	
+-0.980382470151031640,	-0.980372613696968150,	-0.980362754791973100,	-0.980352893436071240,	-0.980343029629287100,	-0.980333163371645330,	-0.980323294663170810,	-0.980313423503887840,	
+-0.980303549893821510,	-0.980293673832996150,	-0.980283795321436720,	-0.980273914359167780,	-0.980264030946214060,	-0.980254145082600110,	-0.980244256768351030,	-0.980234366003491120,	
+-0.980224472788045480,	-0.980214577122038520,	-0.980204679005495130,	-0.980194778438440050,	-0.980184875420898050,	-0.980174969952893880,	-0.980165062034452310,	-0.980155151665597970,	
+-0.980145238846355850,	-0.980135323576750590,	-0.980125405856806960,	-0.980115485686549940,	-0.980105563066004160,	-0.980095637995194500,	-0.980085710474145610,	-0.980075780502882580,	
+-0.980065848081430050,	-0.980055913209813000,	-0.980045975888055980,	-0.980036036116184170,	-0.980026093894222240,	-0.980016149222195040,	-0.980006202100127450,	-0.979996252528044450,	
+-0.979986300505970800,	-0.979976346033931360,	-0.979966389111951000,	-0.979956429740054700,	-0.979946467918267340,	-0.979936503646613890,	-0.979926536925119110,	-0.979916567753807980,	
+-0.979906596132705480,	-0.979896622061836360,	-0.979886645541225840,	-0.979876666570898560,	-0.979866685150879710,	-0.979856701281194180,	-0.979846714961866820,	-0.979836726192922720,	
+-0.979826734974386770,	-0.979816741306284040,	-0.979806745188639420,	-0.979796746621477980,	-0.979786745604824590,	-0.979776742138704360,	-0.979766736223142360,	-0.979756727858163370,	
+-0.979746717043792680,	-0.979736703780055170,	-0.979726688066975940,	-0.979716669904579950,	-0.979706649292892200,	-0.979696626231937980,	-0.979686600721742070,	-0.979676572762329780,	
+-0.979666542353725970,	-0.979656509495955840,	-0.979646474189044380,	-0.979636436433016790,	-0.979626396227898040,	-0.979616353573713460,	-0.979606308470487800,	-0.979596260918246480,	
+-0.979586210917014480,	-0.979576158466817000,	-0.979566103567679040,	-0.979556046219625890,	-0.979545986422682650,	-0.979535924176874300,	-0.979525859482226260,	-0.979515792338763510,	
+-0.979505722746511380,	-0.979495650705494820,	-0.979485576215739280,	-0.979475499277269730,	-0.979465419890111380,	-0.979455338054289530,	-0.979445253769829380,	-0.979435167036756040,	
+-0.979425077855094810,	-0.979414986224870780,	-0.979404892146109370,	-0.979394795618835690,	-0.979384696643075150,	-0.979374595218852730,	-0.979364491346193860,	-0.979354385025123730,	
+-0.979344276255667780,	-0.979334165037850980,	-0.979324051371698760,	-0.979313935257236530,	-0.979303816694489400,	-0.979293695683482790,	-0.979283572224241890,	-0.979273446316792030,	
+-0.979263317961158620,	-0.979253187157366870,	-0.979243053905442080,	-0.979232918205409810,	-0.979222780057295130,	-0.979212639461123580,	-0.979202496416920360,	-0.979192350924711020,	
+-0.979182202984520630,	-0.979172052596374850,	-0.979161899760298880,	-0.979151744476318250,	-0.979141586744458170,	-0.979131426564744170,	-0.979121263937201560,	-0.979111098861855880,	
+-0.979100931338732330,	-0.979090761367856550,	-0.979080588949253870,	-0.979070414082949590,	-0.979060236768969470,	-0.979050057007338600,	-0.979039874798082630,	-0.979029690141226980,	
+-0.979019503036797190,	-0.979009313484818570,	-0.978999121485316650,	-0.978988927038316860,	-0.978978730143844840,	-0.978968530801926030,	-0.978958329012585840,	-0.978948124775849800,	
+-0.978937918091743580,	-0.978927708960292460,	-0.978917497381522010,	-0.978907283355457960,	-0.978897066882125520,	-0.978886847961550570,	-0.978876626593758400,	-0.978866402778774790,	
+-0.978856176516625040,	-0.978845947807334920,	-0.978835716650929940,	-0.978825483047435660,	-0.978815246996877610,	-0.978805008499281540,	-0.978794767554672870,	-0.978784524163077370,	
+-0.978774278324520460,	-0.978764030039028010,	-0.978753779306625330,	-0.978743526127338280,	-0.978733270501192300,	-0.978723012428213250,	-0.978712751908426660,	-0.978702488941858180,	
+-0.978692223528533470,	-0.978681955668478150,	-0.978671685361718110,	-0.978661412608278660,	-0.978651137408185770,	-0.978640859761465090,	-0.978630579668142150,	-0.978620297128242830,	
+-0.978610012141792770,	-0.978599724708817620,	-0.978589434829343240,	-0.978579142503395170,	-0.978568847730999390,	-0.978558550512181440,	-0.978548250846967060,	-0.978537948735382020,	
+-0.978527644177452190,	-0.978517337173203220,	-0.978507027722660960,	-0.978496715825851070,	-0.978486401482799420,	-0.978476084693531760,	-0.978465765458073840,	-0.978455443776451550,	
+-0.978445119648690630,	-0.978434793074816960,	-0.978424464054856280,	-0.978414132588834470,	-0.978403798676777290,	-0.978393462318710600,	-0.978383123514660280,	-0.978372782264652190,	
+-0.978362438568712080,	-0.978352092426865940,	-0.978341743839139410,	-0.978331392805558700,	-0.978321039326149440,	-0.978310683400937630,	-0.978300325029949010,	-0.978289964213209680,	
+-0.978279600950745400,	-0.978269235242582020,	-0.978258867088745760,	-0.978248496489262150,	-0.978238123444157390,	-0.978227747953457350,	-0.978217370017187890,	-0.978206989635375000,	
+-0.978196606808044660,	-0.978186221535222720,	-0.978175833816935290,	-0.978165443653208340,	-0.978155051044067750,	-0.978144655989539480,	-0.978134258489649630,	-0.978123858544424070,	
+-0.978113456153888890,	-0.978103051318070070,	-0.978092644036993590,	-0.978082234310685530,	-0.978071822139171880,	-0.978061407522478720,	-0.978050990460632040,	-0.978040570953657820,	
+-0.978030149001582250,	-0.978019724604431210,	-0.978009297762230890,	-0.977998868475007390,	-0.977988436742786680,	-0.977978002565594860,	-0.977967565943458130,	-0.977957126876402350,	
+-0.977946685364453840,	-0.977936241407638570,	-0.977925795005982760,	-0.977915346159512370,	-0.977904894868253720,	-0.977894441132232780,	-0.977883984951475660,	-0.977873526326008660,	
+-0.977863065255857870,	-0.977852601741049380,	-0.977842135781609390,	-0.977831667377564000,	-0.977821196528939510,	-0.977810723235762010,	-0.977800247498057830,	-0.977789769315852820,	
+-0.977779288689173520,	-0.977768805618045910,	-0.977758320102496410,	-0.977747832142551010,	-0.977737341738236120,	-0.977726848889577730,	-0.977716353596602360,	-0.977705855859336000,	
+-0.977695355677805080,	-0.977684853052035780,	-0.977674347982054210,	-0.977663840467886900,	-0.977653330509559940,	-0.977642818107099740,	-0.977632303260532410,	-0.977621785969884360,	
+-0.977611266235181800,	-0.977600744056451140,	-0.977590219433718600,	-0.977579692367010480,	-0.977569162856353090,	-0.977558630901772860,	-0.977548096503296100,	-0.977537559660949020,	
+-0.977527020374758030,	-0.977516478644749550,	-0.977505934470949800,	-0.977495387853385300,	-0.977484838792082260,	-0.977474287287067200,	-0.977463733338366340,	-0.977453176946006200,	
+-0.977442618110013100,	-0.977432056830413450,	-0.977421493107233700,	-0.977410926940500140,	-0.977400358330239310,	-0.977389787276477630,	-0.977379213779241420,	-0.977368637838557210,	
+-0.977358059454451420,	-0.977347478626950370,	-0.977336895356080700,	-0.977326309641868840,	-0.977315721484341200,	-0.977305130883524110,	-0.977294537839444310,	-0.977283942352128230,	
+-0.977273344421602190,	-0.977262744047892820,	-0.977252141231026660,	-0.977241535971030030,	-0.977230928267929570,	-0.977220318121751810,	-0.977209705532523290,	-0.977199090500270540,	
+-0.977188473025019990,	-0.977177853106798280,	-0.977167230745631940,	-0.977156605941547520,	-0.977145978694571540,	-0.977135349004730760,	-0.977124716872051490,	-0.977114082296560380,	
+-0.977103445278284190,	-0.977092805817249330,	-0.977082163913482460,	-0.977071519567010220,	-0.977060872777859020,	-0.977050223546055860,	-0.977039571871627040,	-0.977028917754599210,	
+-0.977018261194999240,	-0.977007602192853540,	-0.976996940748188770,	-0.976986276861031790,	-0.976975610531409020,	-0.976964941759347230,	-0.976954270544873160,	-0.976943596888013350,	
+-0.976932920788794570,	-0.976922242247243440,	-0.976911561263386740,	-0.976900877837251100,	-0.976890191968863400,	-0.976879503658250050,	-0.976868812905438030,	-0.976858119710454000,	
+-0.976847424073324590,	-0.976836725994076670,	-0.976826025472737000,	-0.976815322509332120,	-0.976804617103888990,	-0.976793909256434390,	-0.976783198966994950,	-0.976772486235597540,	
+-0.976761771062268910,	-0.976751053447035830,	-0.976740333389925160,	-0.976729610890963660,	-0.976718885950178080,	-0.976708158567595410,	-0.976697428743242170,	-0.976686696477145460,	
+-0.976675961769331910,	-0.976665224619828630,	-0.976654485028662140,	-0.976643742995859540,	-0.976632998521447470,	-0.976622251605453020,	-0.976611502247902830,	-0.976600750448824000,	
+-0.976589996208243160,	-0.976579239526187410,	-0.976568480402683630,	-0.976557718837758550,	-0.976546954831439160,	-0.976536188383752450,	-0.976525419494725270,	-0.976514648164384490,	
+-0.976503874392757100,	-0.976493098179870070,	-0.976482319525750260,	-0.976471538430424670,	-0.976460754893920260,	-0.976449968916263900,	-0.976439180497482680,	-0.976428389637603370,	
+-0.976417596336653260,	-0.976406800594659010,	-0.976396002411647920,	-0.976385201787646650,	-0.976374398722682500,	-0.976363593216782340,	-0.976352785269973160,	-0.976341974882282030,	
+-0.976331162053735930,	-0.976320346784362080,	-0.976309529074187220,	-0.976298708923238560,	-0.976287886331543060,	-0.976277061299127950,	-0.976266233826020180,	-0.976255403912246860,	
+-0.976244571557834950,	-0.976233736762811670,	-0.976222899527203980,	-0.976212059851039090,	-0.976201217734343980,	-0.976190373177145960,	-0.976179526179471900,	-0.976168676741349000,	
+-0.976157824862804450,	-0.976146970543865340,	-0.976136113784558890,	-0.976125254584912060,	-0.976114392944952170,	-0.976103528864706190,	-0.976092662344201440,	-0.976081793383465010,	
+-0.976070921982524210,	-0.976060048141405900,	-0.976049171860137620,	-0.976038293138746350,	-0.976027411977259400,	-0.976016528375703960,	-0.976005642334107140,	-0.975994753852496230,	
+-0.975983862930898450,	-0.975972969569340880,	-0.975962073767851050,	-0.975951175526455940,	-0.975940274845182860,	-0.975929371724059250,	-0.975918466163112060,	-0.975907558162368850,	
+-0.975896647721856580,	-0.975885734841602790,	-0.975874819521634680,	-0.975863901761979460,	-0.975852981562664530,	-0.975842058923717110,	-0.975831133845164620,	-0.975820206327034260,	
+-0.975809276369353330,	-0.975798343972149260,	-0.975787409135449260,	-0.975776471859280850,	-0.975765532143671120,	-0.975754589988647720,	-0.975743645394237750,	-0.975732698360468720,	
+-0.975721748887367850,	-0.975710796974962660,	-0.975699842623280470,	-0.975688885832348700,	-0.975677926602194770,	-0.975666964932845880,	-0.975656000824329680,	-0.975645034276673480,	
+-0.975634065289904710,	-0.975623093864050660,	-0.975612119999138990,	-0.975601143695197020,	-0.975590164952252150,	-0.975579183770331810,	-0.975568200149463660,	-0.975557214089674880,	
+-0.975546225590993130,	-0.975535234653445830,	-0.975524241277060390,	-0.975513245461864350,	-0.975502247207885140,	-0.975491246515150510,	-0.975480243383687550,	-0.975469237813524130,	
+-0.975458229804687550,	-0.975447219357205460,	-0.975436206471105180,	-0.975425191146414460,	-0.975414173383160830,	-0.975403153181371720,	-0.975392130541074650,	-0.975381105462297390,	
+-0.975370077945067250,	-0.975359047989411980,	-0.975348015595359110,	-0.975336980762936180,	-0.975325943492170720,	-0.975314903783090490,	-0.975303861635723020,	-0.975292817050095850,	
+-0.975281770026236620,	-0.975270720564172970,	-0.975259668663932540,	-0.975248614325543000,	-0.975237557549031850,	-0.975226498334426760,	-0.975215436681755590,	-0.975204372591045640,	
+-0.975193306062324900,	-0.975182237095620800,	-0.975171165690961180,	-0.975160091848373600,	-0.975149015567885800,	-0.975137936849525430,	-0.975126855693320250,	-0.975115772099298010,	
+-0.975104686067486240,	-0.975093597597912810,	-0.975082506690605370,	-0.975071413345591550,	-0.975060317562899350,	-0.975049219342556280,	-0.975038118684590120,	-0.975027015589028820,	
+-0.975015910055899830,	-0.975004802085231210,	-0.974993691677050410,	-0.974982578831385500,	-0.974971463548264140,	-0.974960345827714070,	-0.974949225669763160,	-0.974938103074439290,	
+-0.974926978041769980,	-0.974915850571783320,	-0.974904720664507060,	-0.974893588319968970,	-0.974882453538196800,	-0.974871316319218640,	-0.974860176663062130,	-0.974849034569755250,	
+-0.974837890039325750,	-0.974826743071801390,	-0.974815593667210380,	-0.974804441825580240,	-0.974793287546939060,	-0.974782130831314710,	-0.974770971678734940,	-0.974759810089227740,	
+-0.974748646062821080,	-0.974737479599542820,	-0.974726310699420840,	-0.974715139362483000,	-0.974703965588757380,	-0.974692789378271860,	-0.974681610731054300,	-0.974670429647132800,	
+-0.974659246126535210,	-0.974648060169289510,	-0.974636871775423570,	-0.974625680944965490,	-0.974614487677943230,	-0.974603291974384780,	-0.974592093834318110,	-0.974580893257771200,	
+-0.974569690244771910,	-0.974558484795348570,	-0.974547276909528910,	-0.974536066587341150,	-0.974524853828813150,	-0.974513638633973110,	-0.974502421002848900,	-0.974491200935468700,	
+-0.974479978431860410,	-0.974468753492052200,	-0.974457526116072170,	-0.974446296303948300,	-0.974435064055708570,	-0.974423829371381390,	-0.974412592250994410,	-0.974401352694576170,	
+-0.974390110702154420,	-0.974378866273757360,	-0.974367619409413190,	-0.974356370109149990,	-0.974345118372995870,	-0.974333864200978890,	-0.974322607593127280,	-0.974311348549469210,	
+-0.974300087070032680,	-0.974288823154846000,	-0.974277556803937240,	-0.974266288017334610,	-0.974255016795066210,	-0.974243743137160330,	-0.974232467043645080,	-0.974221188514548640,	
+-0.974209907549899220,	-0.974198624149725020,	-0.974187338314054350,	-0.974176050042915190,	-0.974164759336336060,	-0.974153466194344950,	-0.974142170616970060,	-0.974130872604239920,	
+-0.974119572156182500,	-0.974108269272826230,	-0.974096963954199200,	-0.974085656200329940,	-0.974074346011246320,	-0.974063033386976970,	-0.974051718327550000,	-0.974040400832993700,	
+-0.974029080903336400,	-0.974017758538606500,	-0.974006433738832110,	-0.973995106504041640,	-0.973983776834263400,	-0.973972444729525820,	-0.973961110189856980,	-0.973949773215285420,	
+-0.973938433805839440,	-0.973927091961547360,	-0.973915747682437600,	-0.973904400968538360,	-0.973893051819878290,	-0.973881700236485460,	-0.973870346218388420,	-0.973858989765615470,	
+-0.973847630878195150,	-0.973836269556155650,	-0.973824905799525520,	-0.973813539608333170,	-0.973802170982606910,	-0.973790799922375270,	-0.973779426427666570,	-0.973768050498509340,	
+-0.973756672134932000,	-0.973745291336962860,	-0.973733908104630670,	-0.973722522437963640,	-0.973711134336990300,	-0.973699743801739070,	-0.973688350832238480,	-0.973676955428517180,	
+-0.973665557590603250,	-0.973654157318525670,	-0.973642754612312530,	-0.973631349471992590,	-0.973619941897594150,	-0.973608531889145980,	-0.973597119446676480,	-0.973585704570214090,	
+-0.973574287259787560,	-0.973562867515425200,	-0.973551445337155760,	-0.973540020725007670,	-0.973528593679009460,	-0.973517164199189880,	-0.973505732285577350,	-0.973494297938200530,	
+-0.973482861157087820,	-0.973471421942268100,	-0.973459980293769790,	-0.973448536211621530,	-0.973437089695851960,	-0.973425640746489520,	-0.973414189363563160,	-0.973402735547101220,	
+-0.973391279297132540,	-0.973379820613685550,	-0.973368359496789130,	-0.973356895946471680,	-0.973345429962762080,	-0.973333961545688850,	-0.973322490695280760,	-0.973311017411566450,	
+-0.973299541694574550,	-0.973288063544333840,	-0.973276582960872940,	-0.973265099944220500,	-0.973253614494405510,	-0.973242126611456370,	-0.973230636295401850,	-0.973219143546270820,	
+-0.973207648364091900,	-0.973196150748893980,	-0.973184650700705480,	-0.973173148219555470,	-0.973161643305472610,	-0.973150135958485650,	-0.973138626178623230,	-0.973127113965914450,	
+-0.973115599320387710,	-0.973104082242072010,	-0.973092562730996090,	-0.973081040787188820,	-0.973069516410678960,	-0.973057989601495250,	-0.973046460359666580,	-0.973034928685221790,	
+-0.973023394578189650,	-0.973011858038599020,	-0.973000319066478770,	-0.972988777661857650,	-0.972977233824764750,	-0.972965687555228610,	-0.972954138853278310,	-0.972942587718942600,	
+-0.972931034152250570,	-0.972919478153230770,	-0.972907919721912480,	-0.972896358858324260,	-0.972884795562495190,	-0.972873229834454010,	-0.972861661674229940,	-0.972850091081851610,	
+-0.972838518057348000,	-0.972826942600748200,	-0.972815364712081080,	-0.972803784391375380,	-0.972792201638660430,	-0.972780616453964740,	-0.972769028837317640,	-0.972757438788747990,	
+-0.972745846308284760,	-0.972734251395956820,	-0.972722654051793260,	-0.972711054275823160,	-0.972699452068075400,	-0.972687847428578940,	-0.972676240357362890,	-0.972664630854456310,	
+-0.972653018919888090,	-0.972641404553687310,	-0.972629787755883050,	-0.972618168526504290,	-0.972606546865580120,	-0.972594922773139640,	-0.972583296249211800,	-0.972571667293825710,	
+-0.972560035907010460,	-0.972548402088795120,	-0.972536765839208780,	-0.972525127158280540,	-0.972513486046039490,	-0.972501842502514700,	-0.972490196527735380,	-0.972478548121730400,	
+-0.972466897284529170,	-0.972455244016160680,	-0.972443588316654120,	-0.972431930186038570,	-0.972420269624343140,	-0.972408606631597120,	-0.972396941207829490,	-0.972385273353069570,	
+-0.972373603067346440,	-0.972361930350689300,	-0.972350255203127340,	-0.972338577624689780,	-0.972326897615405810,	-0.972315215175304500,	-0.972303530304415080,	-0.972291843002767050,	
+-0.972280153270389190,	-0.972268461107311130,	-0.972256766513561850,	-0.972245069489170670,	-0.972233370034166770,	-0.972221668148579470,	-0.972209963832437960,	-0.972198257085771680,	
+-0.972186547908609590,	-0.972174836300981230,	-0.972163122262915790,	-0.972151405794442480,	-0.972139686895590720,	-0.972127965566389700,	-0.972116241806868730,	-0.972104515617057240,	
+-0.972092786996984430,	-0.972081055946679710,	-0.972069322466172170,	-0.972057586555491460,	-0.972045848214666770,	-0.972034107443727420,	-0.972022364242702940,	-0.972010618611622410,	
+-0.971998870550515370,	-0.971987120059411120,	-0.971975367138339100,	-0.971963611787328710,	-0.971951854006409270,	-0.971940093795610080,	-0.971928331154960800,	-0.971916566084490620,	
+-0.971904798584229070,	-0.971893028654205460,	-0.971881256294449440,	-0.971869481504990080,	-0.971857704285857160,	-0.971845924637079860,	-0.971834142558687830,	-0.971822358050710380,	
+-0.971810571113177040,	-0.971798781746117330,	-0.971786989949560700,	-0.971775195723536540,	-0.971763399068074300,	-0.971751599983203710,	-0.971739798468954090,	-0.971727994525354970,	
+-0.971716188152435770,	-0.971704379350226240,	-0.971692568118755710,	-0.971680754458053690,	-0.971668938368149830,	-0.971657119849073660,	-0.971645298900854600,	-0.971633475523522420,	
+-0.971621649717106520,	-0.971609821481636440,	-0.971597990817141820,	-0.971586157723652200,	-0.971574322201197330,	-0.971562484249806510,	-0.971550643869509510,	-0.971538801060335850,	
+-0.971526955822315300,	-0.971515108155477260,	-0.971503258059851600,	-0.971491405535467640,	-0.971479550582355240,	-0.971467693200543940,	-0.971455833390063360,	-0.971443971150943280,	
+-0.971432106483213210,	-0.971420239386902920,	-0.971408369862042040,	-0.971396497908660230,	-0.971384623526787120,	-0.971372746716452460,	-0.971360867477686020,	-0.971348985810517320,	
+-0.971337101714976230,	-0.971325215191092380,	-0.971313326238895440,	-0.971301434858415250,	-0.971289541049681350,	-0.971277644812723720,	-0.971265746147571880,	-0.971253845054255830,	
+-0.971241941532804960,	-0.971230035583249380,	-0.971218127205618620,	-0.971206216399942650,	-0.971194303166251100,	-0.971182387504573750,	-0.971170469414940450,	-0.971158548897381070,	
+-0.971146625951925250,	-0.971134700578602850,	-0.971122772777443630,	-0.971110842548477570,	-0.971098909891734420,	-0.971086974807243930,	-0.971075037295036080,	-0.971063097355140510,	
+-0.971051154987587320,	-0.971039210192406130,	-0.971027262969627050,	-0.971015313319279700,	-0.971003361241394190,	-0.970991406736000150,	-0.970979449803127670,	-0.970967490442806500,	
+-0.970955528655066740,	-0.970943564439938010,	-0.970931597797450530,	-0.970919628727633930,	-0.970907657230518310,	-0.970895683306133410,	-0.970883706954509430,	-0.970871728175676240,	
+-0.970859746969663600,	-0.970847763336501690,	-0.970835777276220280,	-0.970823788788849450,	-0.970811797874419180,	-0.970799804532959440,	-0.970787808764500100,	-0.970775810569071360,	
+-0.970763809946703080,	-0.970751806897425240,	-0.970739801421267810,	-0.970727793518261000,	-0.970715783188434540,	-0.970703770431818770,	-0.970691755248443530,	-0.970679737638338920,	
+-0.970667717601534920,	-0.970655695138061710,	-0.970643670247949180,	-0.970631642931227500,	-0.970619613187926780,	-0.970607581018076870,	-0.970595546421708200,	-0.970583509398850520,	
+-0.970571469949534140,	-0.970559428073789030,	-0.970547383771645400,	-0.970535337043133330,	-0.970523287888282900,	-0.970511236307124210,	-0.970499182299687460,	-0.970487125866002720,	
+-0.970475067006100200,	-0.970463005720009990,	-0.970450942007762270,	-0.970438875869387260,	-0.970426807304915040,	-0.970414736314375690,	-0.970402662897799640,	-0.970390587055216860,	
+-0.970378508786657550,	-0.970366428092152120,	-0.970354344971730450,	-0.970342259425423070,	-0.970330171453259950,	-0.970318081055271510,	-0.970305988231487730,	-0.970293892981939130,	
+-0.970281795306655590,	-0.970269695205667750,	-0.970257592679005580,	-0.970245487726699500,	-0.970233380348779590,	-0.970221270545276400,	-0.970209158316219900,	-0.970197043661640500,	
+-0.970184926581568520,	-0.970172807076034260,	-0.970160685145067920,	-0.970148560788699930,	-0.970136434006960480,	-0.970124304799879990,	-0.970112173167488770,	-0.970100039109817010,	
+-0.970087902626895260,	-0.970075763718753700,	-0.970063622385422760,	-0.970051478626932750,	-0.970039332443313970,	-0.970027183834596960,	-0.970015032800811920,	-0.970002879341989370,	
+-0.969990723458159620,	-0.969978565149352990,	-0.969966404415600000,	-0.969954241256930970,	-0.969942075673376420,	-0.969929907664966560,	-0.969917737231732020,	-0.969905564373703120,	
+-0.969893389090910270,	-0.969881211383384010,	-0.969869031251154650,	-0.969856848694252700,	-0.969844663712708720,	-0.969832476306553000,	-0.969820286475816080,	-0.969808094220528600,	
+-0.969795899540720760,	-0.969783702436423200,	-0.969771502907666340,	-0.969759300954480820,	-0.969747096576896950,	-0.969734889774945370,	-0.969722680548656510,	-0.969710468898061120,	
+-0.969698254823189390,	-0.969686038324072070,	-0.969673819400739600,	-0.969661598053222720,	-0.969649374281551730,	-0.969637148085757290,	-0.969624919465870150,	-0.969612688421920500,	
+-0.969600454953939320,	-0.969588219061956910,	-0.969575980746003930,	-0.969563740006111010,	-0.969551496842308790,	-0.969539251254627700,	-0.969527003243098710,	-0.969514752807752010,	
+-0.969502499948618480,	-0.969490244665728750,	-0.969477986959113360,	-0.969465726828802940,	-0.969453464274828370,	-0.969441199297220060,	-0.969428931896008760,	-0.969416662071225010,	
+-0.969404389822899780,	-0.969392115151063490,	-0.969379838055746900,	-0.969367558536980760,	-0.969355276594795700,	-0.969342992229222490,	-0.969330705440291760,	-0.969318416228034270,	
+-0.969306124592480670,	-0.969293830533661920,	-0.969281534051608440,	-0.969269235146351220,	-0.969256933817920880,	-0.969244630066348200,	-0.969232323891664030,	-0.969220015293898900,	
+-0.969207704273083780,	-0.969195390829249550,	-0.969183074962426620,	-0.969170756672646180,	-0.969158435959938780,	-0.969146112824335160,	-0.969133787265866410,	-0.969121459284563170,	
+-0.969109128880456310,	-0.969096796053576570,	-0.969084460803954940,	-0.969072123131622050,	-0.969059783036608890,	-0.969047440518946200,	-0.969035095578665070,	-0.969022748215796040,	
+-0.969010398430370290,	-0.968998046222418470,	-0.968985691591971570,	-0.968973334539060320,	-0.968960975063715810,	-0.968948613165968920,	-0.968936248845850390,	-0.968923882103391310,	
+-0.968911512938622430,	-0.968899141351574960,	-0.968886767342279520,	-0.968874390910767100,	-0.968862012057068790,	-0.968849630781215440,	-0.968837247083238040,	-0.968824860963167440,	
+-0.968812472421034740,	-0.968800081456870910,	-0.968787688070706810,	-0.968775292262573530,	-0.968762894032501930,	-0.968750493380523210,	-0.968738090306668130,	-0.968725684810967990,	
+-0.968713276893453430,	-0.968700866554155880,	-0.968688453793106090,	-0.968676038610335130,	-0.968663621005874110,	-0.968651200979753990,	-0.968638778532005970,	-0.968626353662660920,	
+-0.968613926371750030,	-0.968601496659304280,	-0.968589064525354760,	-0.968576629969932660,	-0.968564192993068950,	-0.968551753594794730,	-0.968539311775141190,	-0.968526867534139300,	
+-0.968514420871820380,	-0.968501971788215290,	-0.968489520283355220,	-0.968477066357271490,	-0.968464610009994950,	-0.968452151241557040,	-0.968439690051988710,	-0.968427226441321070,	
+-0.968414760409585410,	-0.968402291956812820,	-0.968389821083034510,	-0.968377347788281660,	-0.968364872072585480,	-0.968352393935977160,	-0.968339913378487680,	-0.968327430400148570,	
+-0.968314945000990800,	-0.968302457181045790,	-0.968289966940344530,	-0.968277474278918420,	-0.968264979196798550,	-0.968252481694016230,	-0.968239981770602780,	-0.968227479426589380,	
+-0.968214974662007230,	-0.968202467476887650,	-0.968189957871261830,	-0.968177445845161300,	-0.968164931398616920,	-0.968152414531660340,	-0.968139895244322760,	-0.968127373536635360,	
+-0.968114849408629690,	-0.968102322860336710,	-0.968089793891788060,	-0.968077262503014730,	-0.968064728694048470,	-0.968052192464920250,	-0.968039653815661590,	-0.968027112746303820,	
+-0.968014569256878230,	-0.968002023347416250,	-0.967989475017949190,	-0.967976924268508450,	-0.967964371099125480,	-0.967951815509831450,	-0.967939257500657900,	-0.967926697071636260,	
+-0.967914134222797820,	-0.967901568954174120,	-0.967889001265796470,	-0.967876431157696280,	-0.967863858629904980,	-0.967851283682454210,	-0.967838706315375050,	-0.967826126528699260,	
+-0.967813544322458030,	-0.967800959696683010,	-0.967788372651405490,	-0.967775783186657250,	-0.967763191302469350,	-0.967750596998873560,	-0.967738000275901290,	-0.967725401133583960,	
+-0.967712799571953220,	-0.967700195591040370,	-0.967687589190877160,	-0.967674980371494910,	-0.967662369132925140,	-0.967649755475199490,	-0.967637139398349500,	-0.967624520902406580,	
+-0.967611899987402490,	-0.967599276653368530,	-0.967586650900336460,	-0.967574022728337700,	-0.967561392137404000,	-0.967548759127566660,	-0.967536123698857550,	-0.967523485851307980,	
+-0.967510845584949820,	-0.967498202899814470,	-0.967485557795933700,	-0.967472910273339040,	-0.967460260332062120,	-0.967447607972134360,	-0.967434953193587740,	-0.967422295996453680,	
+-0.967409636380763940,	-0.967396974346550140,	-0.967384309893843830,	-0.967371643022676750,	-0.967358973733080550,	-0.967346302025086980,	-0.967333627898727570,	-0.967320951354034180,	
+-0.967308272391038340,	-0.967295591009771800,	-0.967282907210266330,	-0.967270220992553660,	-0.967257532356665340,	-0.967244841302633220,	-0.967232147830488940,	-0.967219451940264370,	
+-0.967206753631991160,	-0.967194052905701150,	-0.967181349761425890,	-0.967168644199197240,	-0.967155936219047050,	-0.967143225821006870,	-0.967130513005108880,	-0.967117797771384400,	
+-0.967105080119865510,	-0.967092360050583850,	-0.967079637563571400,	-0.967066912658859800,	-0.967054185336480910,	-0.967041455596466590,	-0.967028723438848600,	-0.967015988863658800,	
+-0.967003251870929060,	-0.966990512460691230,	-0.966977770632977070,	-0.966965026387818450,	-0.966952279725247330,	-0.966939530645295480,	-0.966926779147994740,	-0.966914025233377110,	
+-0.966901268901474430,	-0.966888510152318580,	-0.966875748985941420,	-0.966862985402374920,	-0.966850219401650950,	-0.966837450983801470,	-0.966824680148858250,	-0.966811906896853480,	
+-0.966799131227818800,	-0.966786353141786400,	-0.966773572638788050,	-0.966760789718855820,	-0.966748004382021580,	-0.966735216628317300,	-0.966722426457775060,	-0.966709633870426740,	
+-0.966696838866304200,	-0.966684041445439730,	-0.966671241607865110,	-0.966658439353612400,	-0.966645634682713580,	-0.966632827595200640,	-0.966620018091105650,	-0.966607206170460590,	
+-0.966594391833297540,	-0.966581575079648480,	-0.966568755909545610,	-0.966555934323020670,	-0.966543110320105980,	-0.966530283900833510,	-0.966517455065235340,	-0.966504623813343570,	
+-0.966491790145190270,	-0.966478954060807420,	-0.966466115560227210,	-0.966453274643481630,	-0.966440431310602980,	-0.966427585561623110,	-0.966414737396574460,	-0.966401886815488780,	
+-0.966389033818398580,	-0.966376178405335630,	-0.966363320576332230,	-0.966350460331420690,	-0.966337597670632880,	-0.966324732594001090,	-0.966311865101557420,	-0.966298995193334180,	
+-0.966286122869363440,	-0.966273248129677410,	-0.966260370974308170,	-0.966247491403288140,	-0.966234609416649180,	-0.966221725014423940,	-0.966208838196644160,	-0.966195948963342490,	
+-0.966183057314550790,	-0.966170163250301580,	-0.966157266770626850,	-0.966144367875559020,	-0.966131466565130160,	-0.966118562839372810,	-0.966105656698318940,	-0.966092748142000860,	
+-0.966079837170451090,	-0.966066923783701510,	-0.966054007981784870,	-0.966041089764733020,	-0.966028169132578500,	-0.966015246085353610,	-0.966002320623090550,	-0.965989392745821740,	
+-0.965976462453579380,	-0.965963529746395880,	-0.965950594624303660,	-0.965937657087334810,	-0.965924717135521860,	-0.965911774768897110,	-0.965898829987492990,	-0.965885882791341800,	
+-0.965872933180475850,	-0.965859981154927550,	-0.965847026714729330,	-0.965834069859913490,	-0.965821110590512570,	-0.965808148906558860,	-0.965795184808084680,	-0.965782218295122670,	
+-0.965769249367705030,	-0.965756278025864280,	-0.965743304269632840,	-0.965730328099043130,	-0.965717349514127580,	-0.965704368514918700,	-0.965691385101448920,	-0.965678399273750650,	
+-0.965665411031856320,	-0.965652420375798570,	-0.965639427305609700,	-0.965626431821322240,	-0.965613433922968720,	-0.965600433610581680,	-0.965587430884193520,	-0.965574425743836780,	
+-0.965561418189544000,	-0.965548408221347580,	-0.965535395839280270,	-0.965522381043374400,	-0.965509363833662590,	-0.965496344210177380,	-0.965483322172951300,	-0.965470297722016870,	
+-0.965457270857406740,	-0.965444241579153430,	-0.965431209887289590,	-0.965418175781847630,	-0.965405139262860200,	-0.965392100330359940,	-0.965379058984379590,	-0.965366015224951360,	
+-0.965352969052108320,	-0.965339920465882680,	-0.965326869466307300,	-0.965313816053414710,	-0.965300760227237650,	-0.965287701987808670,	-0.965274641335160390,	-0.965261578269325570,	
+-0.965248512790336740,	-0.965235444898226660,	-0.965222374593027950,	-0.965209301874773380,	-0.965196226743495480,	-0.965183149199227100,	-0.965170069242000770,	-0.965156986871849250,	
+-0.965143902088805290,	-0.965130814892901650,	-0.965117725284170840,	-0.965104633262645840,	-0.965091538828359070,	-0.965078441981343630,	-0.965065342721632020,	-0.965052241049257020,	
+-0.965039136964251590,	-0.965026030466648140,	-0.965012921556479660,	-0.964999810233778900,	-0.964986696498578600,	-0.964973580350911520,	-0.964960461790810630,	-0.964947340818308460,	
+-0.964934217433437990,	-0.964921091636231850,	-0.964907963426723140,	-0.964894832804944480,	-0.964881699770928750,	-0.964868564324708690,	-0.964855426466317280,	-0.964842286195787270,	
+-0.964829143513151630,	-0.964815998418443010,	-0.964802850911694490,	-0.964789700992938810,	-0.964776548662208850,	-0.964763393919537580,	-0.964750236764957750,	-0.964737077198502440,	
+-0.964723915220204290,	-0.964710750830096500,	-0.964697584028211710,	-0.964684414814583110,	-0.964671243189243350,	-0.964658069152225520,	-0.964644892703562460,	-0.964631713843287280,	
+-0.964618532571432710,	-0.964605348888031950,	-0.964592162793117660,	-0.964578974286723010,	-0.964565783368880990,	-0.964552590039624460,	-0.964539394298986390,	-0.964526196146999970,	
+-0.964512995583697960,	-0.964499792609113450,	-0.964486587223279510,	-0.964473379426229130,	-0.964460169217995270,	-0.964446956598611020,	-0.964433741568109350,	-0.964420524126523240,	
+-0.964407304273885990,	-0.964394082010230360,	-0.964380857335589540,	-0.964367630249996610,	-0.964354400753484660,	-0.964341168846086560,	-0.964327934527835720,	-0.964314697798764890,	
+-0.964301458658907370,	-0.964288217108296150,	-0.964274973146964530,	-0.964261726774945260,	-0.964248477992271870,	-0.964235226798977220,	-0.964221973195094510,	-0.964208717180656820,	
+-0.964195458755697340,	-0.964182197920249280,	-0.964168934674345720,	-0.964155669018019750,	-0.964142400951304660,	-0.964129130474233540,	-0.964115857586839600,	-0.964102582289156130,	
+-0.964089304581216110,	-0.964076024463052850,	-0.964062741934699430,	-0.964049456996189270,	-0.964036169647555450,	-0.964022879888831170,	-0.964009587720049630,	-0.963996293141244240,	
+-0.963982996152448090,	-0.963969696753694370,	-0.963956394945016500,	-0.963943090726447680,	-0.963929784098021100,	-0.963916475059769960,	-0.963903163611727790,	-0.963889849753927550,	
+-0.963876533486402790,	-0.963863214809186690,	-0.963849893722312560,	-0.963836570225813590,	-0.963823244319723330,	-0.963809916004074840,	-0.963796585278901660,	-0.963783252144236990,	
+-0.963769916600114240,	-0.963756578646566610,	-0.963743238283627510,	-0.963729895511330370,	-0.963716550329708490,	-0.963703202738795280,	-0.963689852738623950,	-0.963676500329228140,	
+-0.963663145510640920,	-0.963649788282895940,	-0.963636428646026500,	-0.963623066600065910,	-0.963609702145047710,	-0.963596335281005300,	-0.963582966007972000,	-0.963569594325981220,	
+-0.963556220235066490,	-0.963542843735261330,	-0.963529464826598850,	-0.963516083509112890,	-0.963502699782836650,	-0.963489313647803660,	-0.963475925104047450,	-0.963462534151601320,	
+-0.963449140790498930,	-0.963435745020773560,	-0.963422346842458980,	-0.963408946255588480,	-0.963395543260195720,	-0.963382137856313880,	-0.963368730043976940,	-0.963355319823217980,	
+-0.963341907194070870,	-0.963328492156568910,	-0.963315074710745730,	-0.963301654856634770,	-0.963288232594269880,	-0.963274807923684250,	-0.963261380844911640,	-0.963247951357985580,	
+-0.963234519462939700,	-0.963221085159807420,	-0.963207648448622500,	-0.963194209329418350,	-0.963180767802228830,	-0.963167323867087250,	-0.963153877524027480,	-0.963140428773082920,	
+-0.963126977614287340,	-0.963113524047674360,	-0.963100068073277530,	-0.963086609691130580,	-0.963073148901266940,	-0.963059685703720580,	-0.963046220098525030,	-0.963032752085713820,	
+-0.963019281665320800,	-0.963005808837379520,	-0.962992333601923710,	-0.962978855958987130,	-0.962965375908603430,	-0.962951893450806230,	-0.962938408585629290,	-0.962924921313106470,	
+-0.962911431633271200,	-0.962897939546157320,	-0.962884445051798710,	-0.962870948150228890,	-0.962857448841481720,	-0.962843947125590960,	-0.962830443002590350,	-0.962816936472513650,	
+-0.962803427535394500,	-0.962789916191266860,	-0.962776402440164490,	-0.962762886282121030,	-0.962749367717170350,	-0.962735846745346290,	-0.962722323366682620,	-0.962708797581213080,	
+-0.962695269388971540,	-0.962681738789991860,	-0.962668205784307900,	-0.962654670371953290,	-0.962641132552962130,	-0.962627592327368050,	-0.962614049695205030,	-0.962600504656506930,	
+-0.962586957211307490,	-0.962573407359640700,	-0.962559855101540410,	-0.962546300437040480,	-0.962532743366174780,	-0.962519183888977280,	-0.962505622005481730,	-0.962492057715722100,	
+-0.962478491019732370,	-0.962464921917546510,	-0.962451350409198270,	-0.962437776494721620,	-0.962424200174150530,	-0.962410621447518990,	-0.962397040314860840,	-0.962383456776210180,	
+-0.962369870831600750,	-0.962356282481066750,	-0.962342691724642040,	-0.962329098562360490,	-0.962315502994256280,	-0.962301905020363280,	-0.962288304640715570,	-0.962274701855347140,	
+-0.962261096664291830,	-0.962247489067583840,	-0.962233879065257150,	-0.962220266657345720,	-0.962206651843883650,	-0.962193034624904910,	-0.962179415000443680,	-0.962165792970533840,	
+-0.962152168535209570,	-0.962138541694504750,	-0.962124912448453770,	-0.962111280797090300,	-0.962097646740448730,	-0.962084010278563050,	-0.962070371411467340,	-0.962056730139195790,	
+-0.962043086461782270,	-0.962029440379261080,	-0.962015791891666310,	-0.962002140999032030,	-0.961988487701392450,	-0.961974831998781640,	-0.961961173891233700,	-0.961947513378782930,	
+-0.961933850461463290,	-0.961920185139308990,	-0.961906517412354330,	-0.961892847280633290,	-0.961879174744180170,	-0.961865499803029160,	-0.961851822457214340,	-0.961838142706769930,	
+-0.961824460551730210,	-0.961810775992129270,	-0.961797089028001540,	-0.961783399659380980,	-0.961769707886302010,	-0.961756013708798600,	-0.961742317126905280,	-0.961728618140656130,	
+-0.961714916750085580,	-0.961701212955227590,	-0.961687506756116580,	-0.961673798152786750,	-0.961660087145272510,	-0.961646373733608060,	-0.961632657917827700,	-0.961618939697965640,	
+-0.961605219074056270,	-0.961591496046133810,	-0.961577770614232550,	-0.961564042778386920,	-0.961550312538631210,	-0.961536579894999740,	-0.961522844847526810,	-0.961509107396246730,	
+-0.961495367541193910,	-0.961481625282402660,	-0.961467880619907290,	-0.961454133553742320,	-0.961440384083941950,	-0.961426632210540700,	-0.961412877933572770,	-0.961399121253072700,	
+-0.961385362169074780,	-0.961371600681613540,	-0.961357836790723290,	-0.961344070496438440,	-0.961330301798793310,	-0.961316530697822520,	-0.961302757193560400,	-0.961288981286041340,	
+-0.961275202975299890,	-0.961261422261370350,	-0.961247639144287350,	-0.961233853624085200,	-0.961220065700798430,	-0.961206275374461460,	-0.961192482645108930,	-0.961178687512775020,	
+-0.961164889977494500,	-0.961151090039301660,	-0.961137287698231260,	-0.961123482954317490,	-0.961109675807595100,	-0.961095866258098400,	-0.961082054305862240,	-0.961068239950920720,	
+-0.961054423193308800,	-0.961040604033060690,	-0.961026782470211120,	-0.961012958504794510,	-0.960999132136845620,	-0.960985303366398870,	-0.960971472193488770,	-0.960957638618150200,	
+-0.960943802640417340,	-0.960929964260325060,	-0.960916123477907780,	-0.960902280293200350,	-0.960888434706237080,	-0.960874586717052840,	-0.960860736325682030,	-0.960846883532159410,	
+-0.960833028336519620,	-0.960819170738797190,	-0.960805310739026860,	-0.960791448337243280,	-0.960777583533481080,	-0.960763716327774910,	-0.960749846720159400,	-0.960735974710669400,	
+-0.960722100299339350,	-0.960708223486203990,	-0.960694344271298300,	-0.960680462654656560,	-0.960666578636313770,	-0.960652692216304450,	-0.960638803394663450,	-0.960624912171425430,	
+-0.960611018546625120,	-0.960597122520297160,	-0.960583224092476540,	-0.960569323263197880,	-0.960555420032495830,	-0.960541514400405250,	-0.960527606366960880,	-0.960513695932197490,	
+-0.960499783096149920,	-0.960485867858852820,	-0.960471950220341150,	-0.960458030180649460,	-0.960444107739812810,	-0.960430182897865860,	-0.960416255654843450,	-0.960402326010780350,	
+-0.960388393965711520,	-0.960374459519671710,	-0.960360522672695670,	-0.960346583424818380,	-0.960332641776074580,	-0.960318697726499250,	-0.960304751276127020,	-0.960290802424993100,	
+-0.960276851173132110,	-0.960262897520579030,	-0.960248941467368610,	-0.960234983013535940,	-0.960221022159115760,	-0.960207058904143040,	-0.960193093248652540,	-0.960179125192679560,	
+-0.960165154736258520,	-0.960151181879424720,	-0.960137206622213020,	-0.960123228964658180,	-0.960109248906795390,	-0.960095266448659390,	-0.960081281590285270,	-0.960067294331707900,	
+-0.960053304672962350,	-0.960039312614083480,	-0.960025318155106390,	-0.960011321296065920,	-0.959997322036997280,	-0.959983320377935210,	-0.959969316318914910,	-0.959955309859971240,	
+-0.959941301001139390,	-0.959927289742454230,	-0.959913276083950830,	-0.959899260025664280,	-0.959885241567629670,	-0.959871220709881840,	-0.959857197452455900,	-0.959843171795387030,	
+-0.959829143738710310,	-0.959815113282460720,	-0.959801080426673230,	-0.959787045171383140,	-0.959773007516625310,	-0.959758967462435160,	-0.959744925008847450,	-0.959730880155897470,	
+-0.959716832903620310,	-0.959702783252051050,	-0.959688731201224780,	-0.959674676751176790,	-0.959660619901941960,	-0.959646560653555800,	-0.959632499006052960,	-0.959618434959469080,	
+-0.959604368513839010,	-0.959590299669198070,	-0.959576228425581430,	-0.959562154783024090,	-0.959548078741561560,	-0.959534000301228600,	-0.959519919462060830,	-0.959505836224093130,	
+-0.959491750587360910,	-0.959477662551899260,	-0.959463572117743580,	-0.959449479284928850,	-0.959435384053490490,	-0.959421286423463580,	-0.959407186394883540,	-0.959393083967785440,	
+-0.959378979142204710,	-0.959364871918176540,	-0.959350762295736240,	-0.959336650274918880,	-0.959322535855759990,	-0.959308419038294780,	-0.959294299822558430,	-0.959280178208586460,	
+-0.959266054196413860,	-0.959251927786076260,	-0.959237798977608860,	-0.959223667771046950,	-0.959209534166425850,	-0.959195398163780850,	-0.959181259763147390,	-0.959167118964560860,	
+-0.959152975768056470,	-0.959138830173669740,	-0.959124682181435760,	-0.959110531791390160,	-0.959096379003568260,	-0.959082223818005450,	-0.959068066234736950,	-0.959053906253798380,	
+-0.959039743875224950,	-0.959025579099052280,	-0.959011411925315580,	-0.958997242354050370,	-0.958983070385292070,	-0.958968896019076090,	-0.958954719255437850,	-0.958940540094412870,	
+-0.958926358536036470,	-0.958912174580344170,	-0.958897988227371600,	-0.958883799477153850,	-0.958869608329726670,	-0.958855414785125480,	-0.958841218843385800,	-0.958827020504543050,	
+-0.958812819768632750,	-0.958798616635690330,	-0.958784411105751410,	-0.958770203178851420,	-0.958755992855026110,	-0.958741780134310550,	-0.958727565016740720,	-0.958713347502351930,	
+-0.958699127591179700,	-0.958684905283259780,	-0.958670680578627590,	-0.958656453477318650,	-0.958642223979368490,	-0.958627992084812970,	-0.958613757793687290,	-0.958599521106027310,	
+-0.958585282021868430,	-0.958571040541246530,	-0.958556796664196800,	-0.958542550390755310,	-0.958528301720957270,	-0.958514050654838520,	-0.958499797192434720,	-0.958485541333781390,	
+-0.958471283078914160,	-0.958457022427868790,	-0.958442759380680690,	-0.958428493937385830,	-0.958414226098019740,	-0.958399955862618060,	-0.958385683231216530,	-0.958371408203850810,	
+-0.958357130780556510,	-0.958342850961369400,	-0.958328568746325220,	-0.958314284135459490,	-0.958299997128808200,	-0.958285707726406750,	-0.958271415928291130,	-0.958257121734496950,	
+-0.958242825145059980,	-0.958228526160015970,	-0.958214224779400660,	-0.958199921003249690,	-0.958185614831599030,	-0.958171306264484210,	-0.958156995301941210,	-0.958142681944005760,	
+-0.958128366190713510,	-0.958114048042100430,	-0.958099727498202160,	-0.958085404559054670,	-0.958071079224693480,	-0.958056751495154790,	-0.958042421370474130,	-0.958028088850687460,	
+-0.958013753935830550,	-0.957999416625939240,	-0.957985076921049390,	-0.957970734821196880,	-0.957956390326417440,	-0.957942043436747160,	-0.957927694152221680,	-0.957913342472876960,	
+-0.957898988398748870,	-0.957884631929873390,	-0.957870273066286250,	-0.957855911808023430,	-0.957841548155121010,	-0.957827182107614530,	-0.957812813665540160,	-0.957798442828933670,	
+-0.957784069597831240,	-0.957769693972268520,	-0.957755315952281580,	-0.957740935537906290,	-0.957726552729178840,	-0.957712167526134860,	-0.957697779928810560,	-0.957683389937241670,	
+-0.957668997551464400,	-0.957654602771514600,	-0.957640205597428350,	-0.957625806029241520,	-0.957611404066990300,	-0.957596999710710440,	-0.957582592960438130,	-0.957568183816209340,	
+-0.957553772278060040,	-0.957539358346026330,	-0.957524942020144270,	-0.957510523300449830,	-0.957496102186979000,	-0.957481678679768080,	-0.957467252778852810,	-0.957452824484269490,	
+-0.957438393796054110,	-0.957423960714242740,	-0.957409525238871460,	-0.957395087369976470,	-0.957380647107593630,	-0.957366204451759240,	-0.957351759402509270,	-0.957337311959879920,	
+-0.957322862123907270,	-0.957308409894627510,	-0.957293955272076720,	-0.957279498256290990,	-0.957265038847306630,	-0.957250577045159590,	-0.957236112849886190,	-0.957221646261522400,	
+-0.957207177280104520,	-0.957192705905668740,	-0.957178232138251150,	-0.957163755977888050,	-0.957149277424615530,	-0.957134796478469770,	-0.957120313139487090,	-0.957105827407703560,	
+-0.957091339283155480,	-0.957076848765879060,	-0.957062355855910600,	-0.957047860553286060,	-0.957033362858042080,	-0.957018862770214530,	-0.957004360289839930,	-0.956989855416954360,	
+-0.956975348151594130,	-0.956960838493795650,	-0.956946326443594900,	-0.956931812001028500,	-0.956917295166132440,	-0.956902775938943240,	-0.956888254319497090,	-0.956873730307830290,	
+-0.956859203903979160,	-0.956844675107980100,	-0.956830143919869200,	-0.956815610339683100,	-0.956801074367457760,	-0.956786536003229940,	-0.956771995247035710,	-0.956757452098911500,	
+-0.956742906558893600,	-0.956728358627018550,	-0.956713808303322530,	-0.956699255587841970,	-0.956684700480613270,	-0.956670142981672860,	-0.956655583091057030,	-0.956641020808802310,	
+-0.956626456134945010,	-0.956611889069521550,	-0.956597319612568440,	-0.956582747764122000,	-0.956568173524218750,	-0.956553596892894880,	-0.956539017870187250,	-0.956524436456131940,	
+-0.956509852650765600,	-0.956495266454124530,	-0.956480677866245350,	-0.956466086887164500,	-0.956451493516918380,	-0.956436897755543520,	-0.956422299603076560,	-0.956407699059553700,	
+-0.956393096125011550,	-0.956378490799486890,	-0.956363883083015790,	-0.956349272975635100,	-0.956334660477381140,	-0.956320045588290650,	-0.956305428308399930,	-0.956290808637745740,	
+-0.956276186576364370,	-0.956261562124292700,	-0.956246935281567010,	-0.956232306048224070,	-0.956217674424300280,	-0.956203040409832390,	-0.956188404004856830,	-0.956173765209410330,	
+-0.956159124023529320,	-0.956144480447250640,	-0.956129834480610620,	-0.956115186123646100,	-0.956100535376393610,	-0.956085882238889680,	-0.956071226711171170,	-0.956056568793274500,	
+-0.956041908485236510,	-0.956027245787093640,	-0.956012580698882840,	-0.955997913220640430,	-0.955983243352403260,	-0.955968571094207960,	-0.955953896446091300,	-0.955939219408089790,	
+-0.955924539980240410,	-0.955909858162579450,	-0.955895173955144010,	-0.955880487357970600,	-0.955865798371095980,	-0.955851106994556890,	-0.955836413228389970,	-0.955821717072631970,	
+-0.955807018527319750,	-0.955792317592490060,	-0.955777614268179420,	-0.955762908554424920,	-0.955748200451262960,	-0.955733489958730640,	-0.955718777076864590,	-0.955704061805701550,	
+-0.955689344145278400,	-0.955674624095631860,	-0.955659901656798700,	-0.955645176828815890,	-0.955630449611720060,	-0.955615720005548170,	-0.955600988010336880,	-0.955586253626123260,	
+-0.955571516852943840,	-0.955556777690835800,	-0.955542036139835680,	-0.955527292199980560,	-0.955512545871307180,	-0.955497797153852410,	-0.955483046047653220,	-0.955468292552746350,	
+-0.955453536669168770,	-0.955438778396957340,	-0.955424017736148930,	-0.955409254686780510,	-0.955394489248889030,	-0.955379721422511260,	-0.955364951207684170,	-0.955350178604444710,	
+-0.955335403612829760,	-0.955320626232876390,	-0.955305846464621470,	-0.955291064308101840,	-0.955276279763354610,	-0.955261492830416610,	-0.955246703509324950,	-0.955231911800116460,	
+-0.955217117702828240,	-0.955202321217497260,	-0.955187522344160490,	-0.955172721082854890,	-0.955157917433617440,	-0.955143111396485220,	-0.955128302971495200,	-0.955113492158684460,	
+-0.955098678958089970,	-0.955083863369748820,	-0.955069045393697970,	-0.955054225029974500,	-0.955039402278615500,	-0.955024577139658050,	-0.955009749613139000,	-0.954994919699095780,	
+-0.954980087397565120,	-0.954965252708584230,	-0.954950415632190300,	-0.954935576168420290,	-0.954920734317311280,	-0.954905890078900480,	-0.954891043453224950,	-0.954876194440321790,	
+-0.954861343040228290,	-0.954846489252981320,	-0.954831633078618070,	-0.954816774517175840,	-0.954801913568691600,	-0.954787050233202650,	-0.954772184510746080,	-0.954757316401358970,	
+-0.954742445905078620,	-0.954727573021942110,	-0.954712697751986750,	-0.954697820095249510,	-0.954682940051767790,	-0.954668057621578800,	-0.954653172804719620,	-0.954638285601227430,	
+-0.954623396011139550,	-0.954608504034493270,	-0.954593609671325670,	-0.954578712921674070,	-0.954563813785575640,	-0.954548912263067710,	-0.954534008354187450,	-0.954519102058972280,	
+-0.954504193377459290,	-0.954489282309685770,	-0.954474368855689040,	-0.954459453015506500,	-0.954444534789175240,	-0.954429614176732780,	-0.954414691178216090,	-0.954399765793662810,	
+-0.954384838023110030,	-0.954369907866595260,	-0.954354975324155590,	-0.954340040395828540,	-0.954325103081651420,	-0.954310163381661410,	-0.954295221295896170,	-0.954280276824392760,	
+-0.954265329967188710,	-0.954250380724321330,	-0.954235429095828040,	-0.954220475081746120,	-0.954205518682113010,	-0.954190559896966110,	-0.954175598726342940,	-0.954160635170280600,	
+-0.954145669228816720,	-0.954130700901988700,	-0.954115730189833870,	-0.954100757092389730,	-0.954085781609693820,	-0.954070803741783320,	-0.954055823488695890,	-0.954040840850468810,	
+-0.954025855827139610,	-0.954010868418745830,	-0.953995878625324870,	-0.953980886446914260,	-0.953965891883551410,	-0.953950894935273850,	-0.953935895602119000,	-0.953920893884124490,	
+-0.953905889781327620,	-0.953890883293766150,	-0.953875874421477370,	-0.953860863164499030,	-0.953845849522868440,	-0.953830833496623230,	-0.953815815085800930,	-0.953800794290439180,	
+-0.953785771110575390,	-0.953770745546247190,	-0.953755717597492000,	-0.953740687264347690,	-0.953725654546851540,	-0.953710619445041320,	-0.953695581958954540,	-0.953680542088628850,	
+-0.953665499834101760,	-0.953650455195410810,	-0.953635408172593960,	-0.953620358765688400,	-0.953605306974732000,	-0.953590252799762280,	-0.953575196240817100,	-0.953560137297933760,	
+-0.953545075971150120,	-0.953530012260503820,	-0.953514946166032500,	-0.953499877687773780,	-0.953484806825765420,	-0.953469733580044940,	-0.953454657950650210,	-0.953439579937618740,	
+-0.953424499540988510,	-0.953409416760796820,	-0.953394331597081650,	-0.953379244049880730,	-0.953364154119231590,	-0.953349061805172200,	-0.953333967107740100,	-0.953318870026973020,	
+-0.953303770562908830,	-0.953288668715585260,	-0.953273564485039860,	-0.953258457871310690,	-0.953243348874435290,	-0.953228237494451620,	-0.953213123731397220,	-0.953198007585310150,	
+-0.953182889056227940,	-0.953167768144188690,	-0.953152644849229790,	-0.953137519171389450,	-0.953122391110705180,	-0.953107260667214960,	-0.953092127840956760,	-0.953076992631967990,	
+-0.953061855040286950,	-0.953046715065951180,	-0.953031572708998630,	-0.953016427969467060,	-0.953001280847394550,	-0.952986131342818730,	-0.952970979455777690,	-0.952955825186309170,	
+-0.952940668534451140,	-0.952925509500241350,	-0.952910348083717770,	-0.952895184284918370,	-0.952880018103881010,	-0.952864849540643540,	-0.952849678595244050,	-0.952834505267720290,	
+-0.952819329558110330,	-0.952804151466452030,	-0.952788970992783260,	-0.952773788137142200,	-0.952758602899566490,	-0.952743415280094430,	-0.952728225278763770,	-0.952713032895612600,	
+-0.952697838130678760,	-0.952682640984000460,	-0.952667441455615440,	-0.952652239545561890,	-0.952637035253877660,	-0.952621828580600960,	-0.952606619525769640,	-0.952591408089421780,	
+-0.952576194271595340,	-0.952560978072328420,	-0.952545759491659090,	-0.952530538529625330,	-0.952515315186265200,	-0.952500089461616790,	-0.952484861355718300,	-0.952469630868607480,	
+-0.952454398000322720,	-0.952439162750901900,	-0.952423925120383210,	-0.952408685108804610,	-0.952393442716204410,	-0.952378197942620460,	-0.952362950788091190,	-0.952347701252654440,	
+-0.952332449336348530,	-0.952317195039211310,	-0.952301938361281300,	-0.952286679302596360,	-0.952271417863194690,	-0.952256154043114480,	-0.952240887842394020,	-0.952225619261071190,	
+-0.952210348299184380,	-0.952195074956771690,	-0.952179799233871300,	-0.952164521130521410,	-0.952149240646760210,	-0.952133957782625990,	-0.952118672538156740,	-0.952103384913390860,	
+-0.952088094908366540,	-0.952072802523121990,	-0.952057507757695380,	-0.952042210612125130,	-0.952026911086449210,	-0.952011609180706150,	-0.951996304894933920,	-0.951980998229171040,	
+-0.951965689183455590,	-0.951950377757825980,	-0.951935063952320410,	-0.951919747766977190,	-0.951904429201834600,	-0.951889108256930850,	-0.951873784932304460,	-0.951858459227993500,	
+-0.951843131144036400,	-0.951827800680471460,	-0.951812467837337190,	-0.951797132614671580,	-0.951781795012513250,	-0.951766455030900290,	-0.951751112669871340,	-0.951735767929464460,	
+-0.951720420809718300,	-0.951705071310671060,	-0.951689719432361140,	-0.951674365174826840,	-0.951659008538106700,	-0.951643649522239010,	-0.951628288127262190,	-0.951612924353214650,	
+-0.951597558200134920,	-0.951582189668061070,	-0.951566818757031860,	-0.951551445467085700,	-0.951536069798260780,	-0.951520691750595840,	-0.951505311324128970,	-0.951489928518899020,	
+-0.951474543334944080,	-0.951459155772302890,	-0.951443765831013750,	-0.951428373511115310,	-0.951412978812645750,	-0.951397581735643930,	-0.951382182280148040,	-0.951366780446196820,	
+-0.951351376233828480,	-0.951335969643081870,	-0.951320560673995170,	-0.951305149326607150,	-0.951289735600956200,	-0.951274319497081080,	-0.951258901015019980,	-0.951243480154811640,	
+-0.951228056916494700,	-0.951212631300107580,	-0.951197203305688910,	-0.951181772933277100,	-0.951166340182911020,	-0.951150905054628960,	-0.951135467548469780,	-0.951120027664471790,	
+-0.951104585402673840,	-0.951089140763114350,	-0.951073693745832060,	-0.951058244350865500,	-0.951042792578253420,	-0.951027338428034220,	-0.951011881900246770,	-0.950996422994929590,	
+-0.950980961712121320,	-0.950965498051860700,	-0.950950032014186260,	-0.950934563599136860,	-0.950919092806750910,	-0.950903619637067380,	-0.950888144090124680,	-0.950872666165961670,	
+-0.950857185864616980,	-0.950841703186129370,	-0.950826218130537360,	-0.950810730697880020,	-0.950795240888195670,	-0.950779748701523380,	-0.950764254137901550,	-0.950748757197369180,	
+-0.950733257879964880,	-0.950717756185727510,	-0.950702252114695720,	-0.950686745666908250,	-0.950671236842403950,	-0.950655725641221580,	-0.950640212063399880,	-0.950624696108977600,	
+-0.950609177777993590,	-0.950593657070486710,	-0.950578133986495600,	-0.950562608526059230,	-0.950547080689216340,	-0.950531550476005680,	-0.950516017886466220,	-0.950500482920636600,	
+-0.950484945578555900,	-0.950469405860262740,	-0.950453863765796210,	-0.950438319295194840,	-0.950422772448497820,	-0.950407223225743780,	-0.950391671626971690,	-0.950376117652220410,	
+-0.950360561301528910,	-0.950345002574935930,	-0.950329441472480440,	-0.950313877994201420,	-0.950298312140137710,	-0.950282743910328190,	-0.950267173304811810,	-0.950251600323627540,	
+-0.950236024966814140,	-0.950220447234410790,	-0.950204867126456240,	-0.950189284642989570,	-0.950173699784049750,	-0.950158112549675640,	-0.950142522939906200,	-0.950126930954780510,	
+-0.950111336594337440,	-0.950095739858616060,	-0.950080140747655340,	-0.950064539261494260,	-0.950048935400171770,	-0.950033329163727070,	-0.950017720552198910,	-0.950002109565626470,	
+-0.949986496204048850,	-0.949970880467505000,	-0.949955262356033890,	-0.949939641869674610,	-0.949924019008466240,	-0.949908393772447850,	-0.949892766161658410,	-0.949877136176137120,	
+-0.949861503815922940,	-0.949845869081055060,	-0.949830231971572460,	-0.949814592487514320,	-0.949798950628919720,	-0.949783306395827640,	-0.949767659788277370,	-0.949752010806307890,	
+-0.949736359449958490,	-0.949720705719268140,	-0.949705049614275930,	-0.949689391135021270,	-0.949673730281543000,	-0.949658067053880450,	-0.949642401452072680,	-0.949626733476159000,	
+-0.949611063126178490,	-0.949595390402170230,	-0.949579715304173510,	-0.949564037832227650,	-0.949548357986371490,	-0.949532675766644570,	-0.949516991173085860,	-0.949501304205734860,	
+-0.949485614864630350,	-0.949469923149812050,	-0.949454229061318710,	-0.949438532599189980,	-0.949422833763464810,	-0.949407132554182630,	-0.949391428971382510,	-0.949375723015103870,	
+-0.949360014685386000,	-0.949344303982267990,	-0.949328590905789360,	-0.949312875455989080,	-0.949297157632906670,	-0.949281437436581440,	-0.949265714867052580,	-0.949249989924359380,	
+-0.949234262608541270,	-0.949218532919637430,	-0.949202800857687380,	-0.949187066422730210,	-0.949171329614805440,	-0.949155590433952260,	-0.949139848880210190,	-0.949124104953618430,	
+-0.949108358654216500,	-0.949092609982043590,	-0.949076858937139220,	-0.949061105519542700,	-0.949045349729293330,	-0.949029591566430740,	-0.949013831030994020,	-0.948998068123022790,	
+-0.948982302842556360,	-0.948966535189634250,	-0.948950765164295770,	-0.948934992766580330,	-0.948919217996527450,	-0.948903440854176550,	-0.948887661339566920,	-0.948871879452738320,	
+-0.948856095193729930,	-0.948840308562581280,	-0.948824519559331890,	-0.948808728184021180,	-0.948792934436688660,	-0.948777138317373870,	-0.948761339826116100,	-0.948745538962954990,	
+-0.948729735727930180,	-0.948713930121080850,	-0.948698122142446860,	-0.948682311792067520,	-0.948666499069982350,	-0.948650683976230980,	-0.948634866510852940,	-0.948619046673887630,	
+-0.948603224465374820,	-0.948587399885353790,	-0.948571572933864400,	-0.948555743610945970,	-0.948539911916638330,	-0.948524077850980700,	-0.948508241414013130,	-0.948492402605774720,	
+-0.948476561426305430,	-0.948460717875644680,	-0.948444871953832200,	-0.948429023660907530,	-0.948413172996910190,	-0.948397319961880040,	-0.948381464555856590,	-0.948365606778879490,	
+-0.948349746630988260,	-0.948333884112222750,	-0.948318019222622490,	-0.948302151962227340,	-0.948286282331076590,	-0.948270410329210220,	-0.948254535956667870,	-0.948238659213489150,	
+-0.948222780099713720,	-0.948206898615381430,	-0.948191014760531800,	-0.948175128535204800,	-0.948159239939439850,	-0.948143348973276790,	-0.948127455636755380,	-0.948111559929915360,	
+-0.948095661852796370,	-0.948079761405438260,	-0.948063858587880780,	-0.948047953400163680,	-0.948032045842326700,	-0.948016135914409470,	-0.948000223616452090,	-0.947984308948493950,	
+-0.947968391910575250,	-0.947952472502735400,	-0.947936550725014480,	-0.947920626577452020,	-0.947904700060088200,	-0.947888771172962440,	-0.947872839916114930,	-0.947856906289585190,	
+-0.947840970293413300,	-0.947825031927638890,	-0.947809091192301940,	-0.947793148087442190,	-0.947777202613099610,	-0.947761254769314170,	-0.947745304556125380,	-0.947729351973573440,	
+-0.947713397021698100,	-0.947697439700539320,	-0.947681480010136860,	-0.947665517950530780,	-0.947649553521760830,	-0.947633586723866990,	-0.947617617556889220,	-0.947601646020867490,	
+-0.947585672115841550,	-0.947569695841851470,	-0.947553717198937000,	-0.947537736187138440,	-0.947521752806495420,	-0.947505767057048140,	-0.947489778938836240,	-0.947473788451900110,	
+-0.947457795596279410,	-0.947441800372014090,	-0.947425802779144450,	-0.947409802817710260,	-0.947393800487751570,	-0.947377795789308360,	-0.947361788722420720,	-0.947345779287128490,	
+-0.947329767483471970,	-0.947313753311490920,	-0.947297736771225530,	-0.947281717862715760,	-0.947265696586001680,	-0.947249672941123390,	-0.947233646928120950,	-0.947217618547034350,	
+-0.947201587797903750,	-0.947185554680769150,	-0.947169519195670720,	-0.947153481342648320,	-0.947137441121742360,	-0.947121398532992820,	-0.947105353576439660,	-0.947089306252123290,	
+-0.947073256560083450,	-0.947057204500360680,	-0.947041150072994720,	-0.947025093278025980,	-0.947009034115494530,	-0.946992972585440460,	-0.946976908687903850,	-0.946960842422925110,	
+-0.946944773790544200,	-0.946928702790801440,	-0.946912629423736880,	-0.946896553689390740,	-0.946880475587803190,	-0.946864395119014430,	-0.946848312283064760,	-0.946832227079994260,	
+-0.946816139509843220,	-0.946800049572651740,	-0.946783957268460320,	-0.946767862597308830,	-0.946751765559237790,	-0.946735666154287280,	-0.946719564382497600,	-0.946703460243909060,	
+-0.946687353738561830,	-0.946671244866496230,	-0.946655133627752550,	-0.946639020022370990,	-0.946622904050391960,	-0.946606785711855530,	-0.946590665006802220,	-0.946574541935272240,	
+-0.946558416497305990,	-0.946542288692943550,	-0.946526158522225550,	-0.946510025985191960,	-0.946493891081883420,	-0.946477753812340120,	-0.946461614176602460,	-0.946445472174710760,	
+-0.946429327806705410,	-0.946413181072626730,	-0.946397031972515010,	-0.946380880506410780,	-0.946364726674354340,	-0.946348570476386100,	-0.946332411912546470,	-0.946316250982875750,	
+-0.946300087687414360,	-0.946283922026202930,	-0.946267753999281540,	-0.946251583606690820,	-0.946235410848471070,	-0.946219235724662930,	-0.946203058235306590,	-0.946186878380442580,	
+-0.946170696160111400,	-0.946154511574353490,	-0.946138324623209350,	-0.946122135306719400,	-0.946105943624924060,	-0.946089749577863850,	-0.946073553165579400,	-0.946057354388110890,	
+-0.946041153245499090,	-0.946024949737784390,	-0.946008743865007330,	-0.945992535627208310,	-0.945976325024428080,	-0.945960112056706940,	-0.945943896724085630,	-0.945927679026604570,	
+-0.945911458964304290,	-0.945895236537225290,	-0.945879011745408230,	-0.945862784588893610,	-0.945846555067722080,	-0.945830323181934160,	-0.945814088931570480,	-0.945797852316671570,	
+-0.945781613337277950,	-0.945765371993430360,	-0.945749128285169330,	-0.945732882212535490,	-0.945716633775569360,	-0.945700382974311690,	-0.945684129808803120,	-0.945667874279084160,	
+-0.945651616385195570,	-0.945635356127177970,	-0.945619093505071890,	-0.945602828518918080,	-0.945586561168757280,	-0.945570291454630010,	-0.945554019376577020,	-0.945537744934639050,	
+-0.945521468128856620,	-0.945505188959270490,	-0.945488907425921510,	-0.945472623528850200,	-0.945456337268097300,	-0.945440048643703570,	-0.945423757655709850,	-0.945407464304156560,	
+-0.945391168589084670,	-0.945374870510534930,	-0.945358570068547950,	-0.945342267263164500,	-0.945325962094425540,	-0.945309654562371480,	-0.945293344667043400,	-0.945277032408481930,	
+-0.945260717786727930,	-0.945244400801822040,	-0.945228081453805210,	-0.945211759742718090,	-0.945195435668601760,	-0.945179109231496620,	-0.945162780431443860,	-0.945146449268484120,	
+-0.945130115742658150,	-0.945113779854007020,	-0.945097441602571360,	-0.945081100988392260,	-0.945064758011510240,	-0.945048412671966380,	-0.945032064969801410,	-0.945015714905056430,	
+-0.944999362477772050,	-0.944983007687989370,	-0.944966650535749020,	-0.944950291021092180,	-0.944933929144059490,	-0.944917564904692140,	-0.944901198303030650,	-0.944884829339116330,	
+-0.944868458012989910,	-0.944852084324692250,	-0.944835708274264550,	-0.944819329861747440,	-0.944802949087182100,	-0.944786565950609390,	-0.944770180452070170,	-0.944753792591605520,	
+-0.944737402369256520,	-0.944721009785063900,	-0.944704614839068760,	-0.944688217531312050,	-0.944671817861834960,	-0.944655415830678140,	-0.944639011437882870,	-0.944622604683490020,	
+-0.944606195567540770,	-0.944589784090075880,	-0.944573370251136630,	-0.944556954050763900,	-0.944540535488998860,	-0.944524114565882480,	-0.944507691281455730,	-0.944491265635759800,	
+-0.944474837628835660,	-0.944458407260724500,	-0.944441974531467280,	-0.944425539441105190,	-0.944409101989679090,	-0.944392662177230390,	-0.944376220003799950,	-0.944359775469429060,	
+-0.944343328574158590,	-0.944326879318029940,	-0.944310427701083980,	-0.944293973723361990,	-0.944277517384905060,	-0.944261058685754380,	-0.944244597625951030,	-0.944228134205536200,	
+-0.944211668424551060,	-0.944195200283036610,	-0.944178729781034340,	-0.944162256918585130,	-0.944145781695730270,	-0.944129304112511060,	-0.944112824168968470,	-0.944096341865143910,	
+-0.944079857201078450,	-0.944063370176813410,	-0.944046880792389850,	-0.944030389047849080,	-0.944013894943232510,	-0.943997398478581000,	-0.943980899653936170,	-0.943964398469338880,	
+-0.943947894924830780,	-0.943931389020452930,	-0.943914880756246520,	-0.943898370132252970,	-0.943881857148513470,	-0.943865341805069310,	-0.943848824101961800,	-0.943832304039232240,	
+-0.943815781616921920,	-0.943799256835072150,	-0.943782729693724230,	-0.943766200192919570,	-0.943749668332699240,	-0.943733134113104890,	-0.943716597534177580,	-0.943700058595958960,	
+-0.943683517298489980,	-0.943666973641812400,	-0.943650427625967180,	-0.943633879250996070,	-0.943617328516940250,	-0.943600775423841020,	-0.943584219971739910,	-0.943567662160678220,	
+-0.943551101990697360,	-0.943534539461838740,	-0.943517974574143880,	-0.943501407327653970,	-0.943484837722410540,	-0.943468265758455100,	-0.943451691435828970,	-0.943435114754573530,	
+-0.943418535714730440,	-0.943401954316340880,	-0.943385370559446490,	-0.943368784444088670,	-0.943352195970308950,	-0.943335605138148630,	-0.943319011947649440,	-0.943302416398852590,	
+-0.943285818491799710,	-0.943269218226532310,	-0.943252615603091930,	-0.943236010621519960,	-0.943219403281857940,	-0.943202793584147380,	-0.943186181528429920,	-0.943169567114746980,	
+-0.943152950343140060,	-0.943136331213650920,	-0.943119709726320750,	-0.943103085881191520,	-0.943086459678304400,	-0.943069831117701260,	-0.943053200199423400,	-0.943036566923512680,	
+-0.943019931290010490,	-0.943003293298958490,	-0.942986652950398190,	-0.942970010244371330,	-0.942953365180919430,	-0.942936717760084140,	-0.942920067981906970,	-0.942903415846429670,	
+-0.942886761353693870,	-0.942870104503741090,	-0.942853445296613080,	-0.942836783732351470,	-0.942820119810997890,	-0.942803453532593980,	-0.942786784897181600,	-0.942770113904802140,	
+-0.942753440555497370,	-0.942736764849309020,	-0.942720086786278830,	-0.942703406366448230,	-0.942686723589859280,	-0.942670038456553510,	-0.942653350966572660,	-0.942636661119958360,	
+-0.942619968916752480,	-0.942603274356996530,	-0.942586577440732600,	-0.942569878168002080,	-0.942553176538846960,	-0.942536472553308860,	-0.942519766211429520,	-0.942503057513250810,	
+-0.942486346458814460,	-0.942469633048162340,	-0.942452917281335960,	-0.942436199158377400,	-0.942419478679328290,	-0.942402755844230500,	-0.942386030653125870,	-0.942369303106056160,	
+-0.942352573203063090,	-0.942335840944188650,	-0.942319106329474690,	-0.942302369358962830,	-0.942285630032695170,	-0.942268888350713320,	-0.942252144313059260,	-0.942235397919774950,	
+-0.942218649170902030,	-0.942201898066482580,	-0.942185144606558330,	-0.942168388791171150,	-0.942151630620363110,	-0.942134870094175960,	-0.942118107212651660,	-0.942101341975832060,	
+-0.942084574383759140,	-0.942067804436474750,	-0.942051032134020860,	-0.942034257476439320,	-0.942017480463772320,	-0.942000701096061380,	-0.941983919373348910,	-0.941967135295676440,	
+-0.941950348863086370,	-0.941933560075620240,	-0.941916768933320330,	-0.941899975436228390,	-0.941883179584386500,	-0.941866381377836740,	-0.941849580816620960,	-0.941832777900781350,	
+-0.941815972630359650,	-0.941799165005398060,	-0.941782355025938540,	-0.941765542692023280,	-0.941748728003694020,	-0.941731910960993070,	-0.941715091563962160,	-0.941698269812643710,	
+-0.941681445707079460,	-0.941664619247311600,	-0.941647790433382200,	-0.941630959265333360,	-0.941614125743207130,	-0.941597289867045610,	-0.941580451636890750,	-0.941563611052784850,	
+-0.941546768114769890,	-0.941529922822888050,	-0.941513075177181300,	-0.941496225177691940,	-0.941479372824462040,	-0.941462518117533680,	-0.941445661056949050,	-0.941428801642750220,	
+-0.941411939874979400,	-0.941395075753678760,	-0.941378209278890490,	-0.941361340450656560,	-0.941344469269019380,	-0.941327595734020920,	-0.941310719845703580,	-0.941293841604109450,	
+-0.941276961009280710,	-0.941260078061259440,	-0.941243192760088050,	-0.941226305105808740,	-0.941209415098463680,	-0.941192522738094950,	-0.941175628024744970,	-0.941158730958455920,	
+-0.941141831539270000,	-0.941124929767229610,	-0.941108025642376830,	-0.941091119164754080,	-0.941074210334403420,	-0.941057299151367270,	-0.941040385615687810,	-0.941023469727407580,	
+-0.941006551486568420,	-0.940989630893213080,	-0.940972707947383520,	-0.940955782649122390,	-0.940938854998471630,	-0.940921924995473780,	-0.940904992640171020,	-0.940888057932605990,	
+-0.940871120872820650,	-0.940854181460857640,	-0.940837239696759030,	-0.940820295580567350,	-0.940803349112324990,	-0.940786400292074170,	-0.940769449119857490,	-0.940752495595717050,	
+-0.940735539719695480,	-0.940718581491834960,	-0.940701620912178130,	-0.940684657980767060,	-0.940667692697644500,	-0.940650725062852630,	-0.940633755076434100,	-0.940616782738430970,	
+-0.940599808048885990,	-0.940582831007841460,	-0.940565851615339900,	-0.940548869871423610,	-0.940531885776135220,	-0.940514899329517150,	-0.940497910531611800,	-0.940480919382461590,	
+-0.940463925882109140,	-0.940446930030596980,	-0.940429931827967300,	-0.940412931274262950,	-0.940395928369526240,	-0.940378923113799670,	-0.940361915507125780,	-0.940344905549547190,	
+-0.940327893241106220,	-0.940310878581845590,	-0.940293861571807720,	-0.940276842211035360,	-0.940259820499570690,	-0.940242796437456560,	-0.940225770024735400,	-0.940208741261449820,	
+-0.940191710147642470,	-0.940174676683355750,	-0.940157640868632290,	-0.940140602703514850,	-0.940123562188045820,	-0.940106519322267960,	-0.940089474106223790,	-0.940072426539955820,	
+-0.940055376623507020,	-0.940038324356919590,	-0.940021269740236360,	-0.940004212773499990,	-0.939987153456753100,	-0.939970091790038320,	-0.939953027773398290,	-0.939935961406875740,	
+-0.939918892690513320,	-0.939901821624353540,	-0.939884748208439260,	-0.939867672442813110,	-0.939850594327517830,	-0.939833513862595950,	-0.939816431048090430,	-0.939799345884043790,	
+-0.939782258370498670,	-0.939765168507498030,	-0.939748076295084390,	-0.939730981733300720,	-0.939713884822189430,	-0.939696785561793480,	-0.939679683952155510,	-0.939662579993318480,	
+-0.939645473685324810,	-0.939628365028217560,	-0.939611254022039380,	-0.939594140666833110,	-0.939577024962641390,	-0.939559906909507300,	-0.939542786507473250,	-0.939525663756582310,	
+-0.939508538656877220,	-0.939491411208400740,	-0.939474281411195710,	-0.939457149265304990,	-0.939440014770771550,	-0.939422877927637900,	-0.939405738735947130,	-0.939388597195741970,	
+-0.939371453307065400,	-0.939354307069960040,	-0.939337158484469080,	-0.939320007550635160,	-0.939302854268501240,	-0.939285698638110070,	-0.939268540659504820,	-0.939251380332728150,	
+-0.939234217657823000,	-0.939217052634832350,	-0.939199885263799050,	-0.939182715544765960,	-0.939165543477776250,	-0.939148369062872580,	-0.939131192300098010,	-0.939114013189495390,	
+-0.939096831731107810,	-0.939079647924978110,	-0.939062461771149270,	-0.939045273269664360,	-0.939028082420566230,	-0.939010889223897970,	-0.938993693679702310,	-0.938976495788022560,	
+-0.938959295548901560,	-0.938942092962382290,	-0.938924888028507710,	-0.938907680747321120,	-0.938890471118865140,	-0.938873259143183090,	-0.938856044820317810,	-0.938838828150312500,	
+-0.938821609133210000,	-0.938804387769053620,	-0.938787164057886090,	-0.938769937999750840,	-0.938752709594690590,	-0.938735478842748660,	-0.938718245743968010,	-0.938701010298391810,	
+-0.938683772506063050,	-0.938666532367024800,	-0.938649289881320240,	-0.938632045048992450,	-0.938614797870084620,	-0.938597548344639710,	-0.938580296472701030,	-0.938563042254311530,	
+-0.938545785689514410,	-0.938528526778352860,	-0.938511265520870050,	-0.938494001917108970,	-0.938476735967112900,	-0.938459467670925030,	-0.938442197028588550,	-0.938424924040146440,	
+-0.938407648705642080,	-0.938390371025118690,	-0.938373090998619210,	-0.938355808626187170,	-0.938338523907865430,	-0.938321236843697500,	-0.938303947433726470,	-0.938286655677995630,	
+-0.938269361576547940,	-0.938252065129427050,	-0.938234766336675910,	-0.938217465198337930,	-0.938200161714456190,	-0.938182855885074110,	-0.938165547710234860,	-0.938148237189981750,	
+-0.938130924324358070,	-0.938113609113407130,	-0.938096291557172000,	-0.938078971655696310,	-0.938061649409023040,	-0.938044324817195680,	-0.938026997880257670,	-0.938009668598251970,	
+-0.937992336971222200,	-0.937975002999211550,	-0.937957666682263440,	-0.937940328020421150,	-0.937922987013728000,	-0.937905643662227400,	-0.937888297965962740,	-0.937870949924977330,	
+-0.937853599539314460,	-0.937836246809017670,	-0.937818891734130240,	-0.937801534314695480,	-0.937784174550757130,	-0.937766812442358160,	-0.937749447989542180,	-0.937732081192352520,	
+-0.937714712050832790,	-0.937697340565026180,	-0.937679966734976220,	-0.937662590560726540,	-0.937645212042320100,	-0.937627831179800860,	-0.937610447973211910,	-0.937593062422596880,	
+-0.937575674527999170,	-0.937558284289462310,	-0.937540891707029700,	-0.937523496780744870,	-0.937506099510651340,	-0.937488699896792620,	-0.937471297939212020,	-0.937453893637953170,	
+-0.937436486993059590,	-0.937419078004574910,	-0.937401666672542430,	-0.937384252997005900,	-0.937366836978008600,	-0.937349418615594290,	-0.937331997909806370,	-0.937314574860688480,	
+-0.937297149468284240,	-0.937279721732636960,	-0.937262291653790490,	-0.937244859231788240,	-0.937227424466673950,	-0.937209987358491040,	-0.937192547907283120,	-0.937175106113093850,	
+-0.937157661975966840,	-0.937140215495945620,	-0.937122766673073930,	-0.937105315507395290,	-0.937087861998953440,	-0.937070406147791800,	-0.937052947953954220,	-0.937035487417484210,	
+-0.937018024538425530,	-0.937000559316821800,	-0.936983091752716660,	-0.936965621846153840,	-0.936948149597176870,	-0.936930675005829610,	-0.936913198072155560,	-0.936895718796198600,	
+-0.936878237178002340,	-0.936860753217610530,	-0.936843266915066700,	-0.936825778270414800,	-0.936808287283698470,	-0.936790793954961340,	-0.936773298284247270,	-0.936755800271599990,	
+-0.936738299917063140,	-0.936720797220680690,	-0.936703292182496040,	-0.936685784802553380,	-0.936668275080896010,	-0.936650763017568110,	-0.936633248612613320,	-0.936615731866075270,	
+-0.936598212777998040,	-0.936580691348425140,	-0.936563167577400660,	-0.936545641464968210,	-0.936528113011171670,	-0.936510582216054770,	-0.936493049079661470,	-0.936475513602035510,	
+-0.936457975783220880,	-0.936440435623261180,	-0.936422893122200510,	-0.936405348280082480,	-0.936387801096951190,	-0.936370251572850250,	-0.936352699707823870,	-0.936335145501915660,	
+-0.936317588955169590,	-0.936300030067629520,	-0.936282468839339300,	-0.936264905270343010,	-0.936247339360684490,	-0.936229771110407620,	-0.936212200519556230,	-0.936194627588174400,	
+-0.936177052316305990,	-0.936159474703994960,	-0.936141894751285180,	-0.936124312458220810,	-0.936106727824845500,	-0.936089140851203430,	-0.936071551537338560,	-0.936053959883294760,	
+-0.936036365889115980,	-0.936018769554846420,	-0.936001170880529920,	-0.935983569866210450,	-0.935965966511932090,	-0.935948360817738690,	-0.935930752783674550,	-0.935913142409783520,	
+-0.935895529696109560,	-0.935877914642696760,	-0.935860297249589300,	-0.935842677516830920,	-0.935825055444466040,	-0.935807431032538380,	-0.935789804281092150,	-0.935772175190171420,	
+-0.935754543759820370,	-0.935736909990082850,	-0.935719273881003070,	-0.935701635432625080,	-0.935683994644993080,	-0.935666351518151030,	-0.935648706052143120,	-0.935631058247013430,	
+-0.935613408102806130,	-0.935595755619565210,	-0.935578100797334940,	-0.935560443636159530,	-0.935542784136082940,	-0.935525122297149460,	-0.935507458119403060,	-0.935489791602888030,	
+-0.935472122747648570,	-0.935454451553728750,	-0.935436778021172870,	-0.935419102150024990,	-0.935401423940329320,	-0.935383743392130260,	-0.935366060505471660,	-0.935348375280398050,	
+-0.935330687716953380,	-0.935312997815182070,	-0.935295305575128190,	-0.935277610996836150,	-0.935259914080350030,	-0.935242214825714010,	-0.935224513232972620,	-0.935206809302169930,	
+-0.935189103033350120,	-0.935171394426557610,	-0.935153683481836700,	-0.935135970199231450,	-0.935118254578786390,	-0.935100536620545600,	-0.935082816324553480,	-0.935065093690854330,	
+-0.935047368719492460,	-0.935029641410512150,	-0.935011911763957810,	-0.934994179779873540,	-0.934976445458303940,	-0.934958708799293210,	-0.934940969802885770,	-0.934923228469125790,	
+-0.934905484798057800,	-0.934887738789726090,	-0.934869990444174960,	-0.934852239761448930,	-0.934834486741592310,	-0.934816731384649380,	-0.934798973690664670,	-0.934781213659682590,	
+-0.934763451291747430,	-0.934745686586903710,	-0.934727919545195630,	-0.934710150166667920,	-0.934692378451364660,	-0.934674604399330590,	-0.934656828010610010,	-0.934639049285247330,	
+-0.934621268223286950,	-0.934603484824773510,	-0.934585699089751310,	-0.934567911018264860,	-0.934550120610358580,	-0.934532327866077090,	-0.934514532785464700,	-0.934496735368566030,	
+-0.934478935615425610,	-0.934461133526087620,	-0.934443329100597020,	-0.934425522338998000,	-0.934407713241335200,	-0.934389901807653130,	-0.934372088037996210,	-0.934354271932409160,	
+-0.934336453490936410,	-0.934318632713622590,	-0.934300809600512090,	-0.934282984151649560,	-0.934265156367079630,	-0.934247326246846810,	-0.934229493790995740,	-0.934211658999570820,	
+-0.934193821872616790,	-0.934175982410178190,	-0.934158140612299630,	-0.934140296479025740,	-0.934122450010401060,	-0.934104601206470320,	-0.934086750067278040,	-0.934068896592868960,	
+-0.934051040783287490,	-0.934033182638578600,	-0.934015322158786580,	-0.933997459343956390,	-0.933979594194132460,	-0.933961726709359620,	-0.933943856889682400,	-0.933925984735145650,	
+-0.933908110245793790,	-0.933890233421671770,	-0.933872354262824110,	-0.933854472769295560,	-0.933836588941130860,	-0.933818702778374750,	-0.933800814281071760,	-0.933782923449266720,	
+-0.933765030283004500,	-0.933747134782329510,	-0.933729236947286930,	-0.933711336777921060,	-0.933693434274276980,	-0.933675529436399200,	-0.933657622264332690,	-0.933639712758122080,	
+-0.933621800917812220,	-0.933603886743447850,	-0.933585970235073730,	-0.933568051392734690,	-0.933550130216475590,	-0.933532206706341070,	-0.933514280862376090,	-0.933496352684625390,	
+-0.933478422173133930,	-0.933460489327946230,	-0.933442554149107370,	-0.933424616636662100,	-0.933406676790655250,	-0.933388734611131920,	-0.933370790098136500,	-0.933352843251714300,	
+-0.933334894071909840,	-0.933316942558768290,	-0.933298988712334300,	-0.933281032532652820,	-0.933263074019768820,	-0.933245113173727160,	-0.933227149994572570,	-0.933209184482350240,	
+-0.933191216637104910,	-0.933173246458881560,	-0.933155273947725020,	-0.933137299103680370,	-0.933119321926792480,	-0.933101342417106290,	-0.933083360574666680,	-0.933065376399518590,	
+-0.933047389891707210,	-0.933029401051277300,	-0.933011409878273910,	-0.932993416372742020,	-0.932975420534726600,	-0.932957422364272480,	-0.932939421861424980,	-0.932921419026228830,	
+-0.932903413858729210,	-0.932885406358970990,	-0.932867396526999240,	-0.932849384362859020,	-0.932831369866595430,	-0.932813353038253300,	-0.932795333877877830,	-0.932777312385513980,	
+-0.932759288561206930,	-0.932741262405001550,	-0.932723233916943010,	-0.932705203097076500,	-0.932687169945446980,	-0.932669134462099540,	-0.932651096647079130,	-0.932633056500431160,	
+-0.932615014022200370,	-0.932596969212432180,	-0.932578922071171550,	-0.932560872598463540,	-0.932542820794353360,	-0.932524766658886280,	-0.932506710192107070,	-0.932488651394061230,	
+-0.932470590264793620,	-0.932452526804349760,	-0.932434461012774380,	-0.932416392890112910,	-0.932398322436410520,	-0.932380249651712290,	-0.932362174536063400,	-0.932344097089509050,	
+-0.932326017312094520,	-0.932307935203864900,	-0.932289850764865480,	-0.932271763995141440,	-0.932253674894737980,	-0.932235583463700280,	-0.932217489702073740,	-0.932199393609903340,	
+-0.932181295187234580,	-0.932163194434112440,	-0.932145091350582430,	-0.932126985936689630,	-0.932108878192479450,	-0.932090768117996960,	-0.932072655713287680,	-0.932054540978396680,	
+-0.932036423913369380,	-0.932018304518250960,	-0.932000182793086720,	-0.931982058737922170,	-0.931963932352802390,	-0.931945803637772800,	-0.931927672592878680,	-0.931909539218165440,	
+-0.931891403513678270,	-0.931873265479462700,	-0.931855125115563900,	-0.931836982422027280,	-0.931818837398898150,	-0.931800690046222010,	-0.931782540364044180,	-0.931764388352409930,	
+-0.931746234011364690,	-0.931728077340953980,	-0.931709918341222960,	-0.931691757012217180,	-0.931673593353981920,	-0.931655427366562820,	-0.931637259050005050,	-0.931619088404354150,	
+-0.931600915429655620,	-0.931582740125954770,	-0.931564562493297000,	-0.931546382531727830,	-0.931528200241292790,	-0.931510015622037170,	-0.931491828674006590,	-0.931473639397246370,	
+-0.931455447791802120,	-0.931437253857719140,	-0.931419057595043180,	-0.931400859003819410,	-0.931382658084093600,	-0.931364454835911130,	-0.931346249259317530,	-0.931328041354358200,	
+-0.931309831121078900,	-0.931291618559524910,	-0.931273403669741980,	-0.931255186451775520,	-0.931236966905671040,	-0.931218745031474170,	-0.931200520829230440,	-0.931182294298985470,	
+-0.931164065440784670,	-0.931145834254673790,	-0.931127600740698220,	-0.931109364898903720,	-0.931091126729335810,	-0.931072886232040100,	-0.931054643407062120,	-0.931036398254447620,	
+-0.931018150774241990,	-0.930999900966491100,	-0.930981648831240350,	-0.930963394368535590,	-0.930945137578422340,	-0.930926878460946240,	-0.930908617016152800,	-0.930890353244087860,	
+-0.930872087144797190,	-0.930853818718326180,	-0.930835547964720680,	-0.930817274884026320,	-0.930798999476288750,	-0.930780721741553570,	-0.930762441679866770,	-0.930744159291273740,	
+-0.930725874575820460,	-0.930707587533552320,	-0.930689298164515290,	-0.930671006468755000,	-0.930652712446317310,	-0.930634416097247620,	-0.930616117421592120,	-0.930597816419396100,	
+-0.930579513090705750,	-0.930561207435566470,	-0.930542899454024240,	-0.930524589146124680,	-0.930506276511913640,	-0.930487961551437090,	-0.930469644264740440,	-0.930451324651869860,	
+-0.930433002712870880,	-0.930414678447789360,	-0.930396351856671130,	-0.930378022939562180,	-0.930359691696508010,	-0.930341358127554700,	-0.930323022232747880,	-0.930304684012133620,	
+-0.930286343465757560,	-0.930268000593665770,	-0.930249655395903870,	-0.930231307872517840,	-0.930212958023553530,	-0.930194605849056890,	-0.930176251349073670,	-0.930157894523649830,	
+-0.930139535372831340,	-0.930121173896663930,	-0.930102810095193580,	-0.930084443968466230,	-0.930066075516527760,	-0.930047704739424110,	-0.930029331637201250,	-0.930010956209905040,	
+-0.929992578457581430,	-0.929974198380276280,	-0.929955815978035780,	-0.929937431250905670,	-0.929919044198932010,	-0.929900654822160670,	-0.929882263120637820,	-0.929863869094409100,	
+-0.929845472743520920,	-0.929827074068019010,	-0.929808673067949340,	-0.929790269743357990,	-0.929771864094291020,	-0.929753456120794410,	-0.929735045822914110,	-0.929716633200696200,	
+-0.929698218254186750,	-0.929679800983431730,	-0.929661381388477200,	-0.929642959469369260,	-0.929624535226153850,	-0.929606108658877160,	-0.929587679767585160,	-0.929569248552324030,	
+-0.929550815013139630,	-0.929532379150078360,	-0.929513940963186070,	-0.929495500452508950,	-0.929477057618092960,	-0.929458612459984510,	-0.929440164978229340,	-0.929421715172873860,	
+-0.929403263043964150,	-0.929384808591546150,	-0.929366351815666290,	-0.929347892716370420,	-0.929329431293704930,	-0.929310967547715690,	-0.929292501478449220,	-0.929274033085951360,	
+-0.929255562370268520,	-0.929237089331446780,	-0.929218613969532200,	-0.929200136284571210,	-0.929181656276609870,	-0.929163173945694250,	-0.929144689291870880,	-0.929126202315185610,	
+-0.929107713015684960,	-0.929089221393414990,	-0.929070727448422010,	-0.929052231180752090,	-0.929033732590451630,	-0.929015231677566940,	-0.928996728442144090,	-0.928978222884229380,	
+-0.928959715003869200,	-0.928941204801109750,	-0.928922692275997220,	-0.928904177428578000,	-0.928885660258898290,	-0.928867140767004500,	-0.928848618952942790,	-0.928830094816759600,	
+-0.928811568358501090,	-0.928793039578213690,	-0.928774508475943670,	-0.928755975051737460,	-0.928737439305641230,	-0.928718901237701510,	-0.928700360847964480,	-0.928681818136476540,	
+-0.928663273103284000,	-0.928644725748433260,	-0.928626176071970840,	-0.928607624073942930,	-0.928589069754395920,	-0.928570513113376240,	-0.928551954150930390,	-0.928533392867104460,	
+-0.928514829261945170,	-0.928496263335498840,	-0.928477695087811860,	-0.928459124518930530,	-0.928440551628901490,	-0.928421976417770910,	-0.928403398885585540,	-0.928384819032391670,	
+-0.928366236858235720,	-0.928347652363164190,	-0.928329065547223500,	-0.928310476410460160,	-0.928291884952920590,	-0.928273291174651400,	-0.928254695075698910,	-0.928236096656109730,	
+-0.928217495915930280,	-0.928198892855207070,	-0.928180287473986620,	-0.928161679772315560,	-0.928143069750240190,	-0.928124457407807250,	-0.928105842745063030,	-0.928087225762054380,	
+-0.928068606458827490,	-0.928049984835429220,	-0.928031360891905850,	-0.928012734628304250,	-0.927994106044670590,	-0.927975475141051830,	-0.927956841917494390,	-0.927938206374044780,	
+-0.927919568510749640,	-0.927900928327655580,	-0.927882285824809250,	-0.927863641002257160,	-0.927844993860046040,	-0.927826344398222420,	-0.927807692616832940,	-0.927789038515924090,	
+-0.927770382095542860,	-0.927751723355735520,	-0.927733062296548950,	-0.927714398918029650,	-0.927695733220224470,	-0.927677065203179830,	-0.927658394866942680,	-0.927639722211559440,	
+-0.927621047237076950,	-0.927602369943541730,	-0.927583690331000630,	-0.927565008399500290,	-0.927546324149087440,	-0.927527637579808830,	-0.927508948691711080,	-0.927490257484841040,	
+-0.927471563959245240,	-0.927452868114970630,	-0.927434169952063850,	-0.927415469470571630,	-0.927396766670540610,	-0.927378061552017850,	-0.927359354115049880,	-0.927340644359683550,	
+-0.927321932285965490,	-0.927303217893942770,	-0.927284501183661790,	-0.927265782155169750,	-0.927247060808513160,	-0.927228337143738980,	-0.927209611160893840,	-0.927190882860024820,	
+-0.927172152241178550,	-0.927153419304401760,	-0.927134684049741640,	-0.927115946477244600,	-0.927097206586957930,	-0.927078464378928050,	-0.927059719853202120,	-0.927040973009826800,	
+-0.927022223848849140,	-0.927003472370315880,	-0.926984718574273890,	-0.926965962460770120,	-0.926947204029851530,	-0.926928443281564870,	-0.926909680215957100,	-0.926890914833075170,	
+-0.926872147132965950,	-0.926853377115676280,	-0.926834604781253240,	-0.926815830129743670,	-0.926797053161194540,	-0.926778273875652700,	-0.926759492273165230,	-0.926740708353779090,	
+-0.926721922117541120,	-0.926703133564498400,	-0.926684342694697680,	-0.926665549508186360,	-0.926646754005010950,	-0.926627956185218760,	-0.926609156048856630,	-0.926590353595971640,	
+-0.926571548826610750,	-0.926552741740821030,	-0.926533932338649450,	-0.926515120620143070,	-0.926496306585348760,	-0.926477490234313810,	-0.926458671567085060,	-0.926439850583709700,	
+-0.926421027284234590,	-0.926402201668707010,	-0.926383373737173940,	-0.926364543489682330,	-0.926345710926279490,	-0.926326876047012250,	-0.926308038851927920,	-0.926289199341073450,	
+-0.926270357514496050,	-0.926251513372242650,	-0.926232666914360570,	-0.926213818140896760,	-0.926194967051898410,	-0.926176113647412700,	-0.926157257927486600,	-0.926138399892167400,	
+-0.926119539541502280,	-0.926100676875538210,	-0.926081811894322480,	-0.926062944597902280,	-0.926044074986324680,	-0.926025203059636760,	-0.926006328817885920,	-0.925987452261119340,	
+-0.925968573389384100,	-0.925949692202727380,	-0.925930808701196480,	-0.925911922884838590,	-0.925893034753700770,	-0.925874144307830440,	-0.925855251547274770,	-0.925836356472080960,	
+-0.925817459082296180,	-0.925798559377967840,	-0.925779657359143030,	-0.925760753025869130,	-0.925741846378193340,	-0.925722937416162960,	-0.925704026139825160,	-0.925685112549227470,	
+-0.925666196644416850,	-0.925647278425440700,	-0.925628357892346430,	-0.925609435045181230,	-0.925590509883992500,	-0.925571582408827420,	-0.925552652619733520,	-0.925533720516757860,	
+-0.925514786099947970,	-0.925495849369351030,	-0.925476910325014560,	-0.925457968966985730,	-0.925439025295312080,	-0.925420079310040780,	-0.925401131011219350,	-0.925382180398894970,	
+-0.925363227473115280,	-0.925344272233927460,	-0.925325314681379020,	-0.925306354815517150,	-0.925287392636389480,	-0.925268428144043310,	-0.925249461338526040,	-0.925230492219885290,	
+-0.925211520788168150,	-0.925192547043422240,	-0.925173570985694970,	-0.925154592615033740,	-0.925135611931486080,	-0.925116628935099380,	-0.925097643625921060,	-0.925078656003998740,	
+-0.925059666069379730,	-0.925040673822111530,	-0.925021679262241660,	-0.925002682389817530,	-0.924983683204886780,	-0.924964681707496790,	-0.924945677897695110,	-0.924926671775529230,	
+-0.924907663341046680,	-0.924888652594294870,	-0.924869639535321530,	-0.924850624164174070,	-0.924831606480900130,	-0.924812586485547090,	-0.924793564178162610,	-0.924774539558794180,	
+-0.924755512627489450,	-0.924736483384295930,	-0.924717451829261240,	-0.924698417962432790,	-0.924679381783858450,	-0.924660343293585480,	-0.924641302491661770,	-0.924622259378134800,	
+-0.924603213953052230,	-0.924584166216461560,	-0.924565116168410530,	-0.924546063808946550,	-0.924527009138117580,	-0.924507952155971040,	-0.924488892862554530,	-0.924469831257915930,	
+-0.924450767342102630,	-0.924431701115162490,	-0.924412632577143010,	-0.924393561728092060,	-0.924374488568057150,	-0.924355413097086130,	-0.924336335315226410,	-0.924317255222525950,	
+-0.924298172819032260,	-0.924279088104793310,	-0.924260001079856510,	-0.924240911744269810,	-0.924221820098080630,	-0.924202726141337140,	-0.924183629874086640,	-0.924164531296377210,	
+-0.924145430408256360,	-0.924126327209771950,	-0.924107221700971700,	-0.924088113881903370,	-0.924069003752614910,	-0.924049891313153850,	-0.924030776563568020,	-0.924011659503905290,	
+-0.923992540134213500,	-0.923973418454540170,	-0.923954294464933490,	-0.923935168165440860,	-0.923916039556110570,	-0.923896908636989920,	-0.923877775408127210,	-0.923858639869569950,	
+-0.923839502021366110,	-0.923820361863563530,	-0.923801219396210070,	-0.923782074619353470,	-0.923762927533041790,	-0.923743778137322670,	-0.923724626432244180,	-0.923705472417854170,	
+-0.923686316094200380,	-0.923667157461330880,	-0.923647996519293410,	-0.923628833268136050,	-0.923609667707906530,	-0.923590499838652930,	-0.923571329660422990,	-0.923552157173264780,	
+-0.923532982377226030,	-0.923513805272355050,	-0.923494625858699350,	-0.923475444136307330,	-0.923456260105226520,	-0.923437073765505100,	-0.923417885117190920,	-0.923398694160332160,	
+-0.923379500894976560,	-0.923360305321172300,	-0.923341107438967250,	-0.923321907248409350,	-0.923302704749546790,	-0.923283499942427310,	-0.923264292827099320,	-0.923245083403610440,	
+-0.923225871672008870,	-0.923206657632342660,	-0.923187441284659790,	-0.923168222629008330,	-0.923149001665436340,	-0.923129778393991680,	-0.923110552814722760,	-0.923091324927677430,	
+-0.923072094732903750,	-0.923052862230449800,	-0.923033627420363770,	-0.923014390302693610,	-0.922995150877487510,	-0.922975909144793550,	-0.922956665104659680,	-0.922937418757134310,	
+-0.922918170102265290,	-0.922898919140100920,	-0.922879665870689260,	-0.922860410294078390,	-0.922841152410316500,	-0.922821892219451770,	-0.922802629721532260,	-0.922783364916606170,	
+-0.922764097804721680,	-0.922744828385926970,	-0.922725556660270230,	-0.922706282627799520,	-0.922687006288563150,	-0.922667727642609290,	-0.922648446689986020,	-0.922629163430741750,	
+-0.922609877864924430,	-0.922590589992582480,	-0.922571299813764070,	-0.922552007328517390,	-0.922532712536890730,	-0.922513415438932170,	-0.922494116034690230,	-0.922474814324212970,	
+-0.922455510307548690,	-0.922436203984745460,	-0.922416895355851920,	-0.922397584420916020,	-0.922378271179986280,	-0.922358955633110770,	-0.922339637780337900,	-0.922320317621715960,	
+-0.922300995157293250,	-0.922281670387117950,	-0.922262343311238570,	-0.922243013929703200,	-0.922223682242560460,	-0.922204348249858310,	-0.922185011951645370,	-0.922165673347970060,	
+-0.922146332438880450,	-0.922126989224425040,	-0.922107643704652040,	-0.922088295879610050,	-0.922068945749347280,	-0.922049593313912230,	-0.922030238573353090,	-0.922010881527718370,	
+-0.921991522177056490,	-0.921972160521415840,	-0.921952796560844610,	-0.921933430295391540,	-0.921914061725104820,	-0.921894690850033060,	-0.921875317670224460,	-0.921855942185727750,	
+-0.921836564396590900,	-0.921817184302862860,	-0.921797801904591820,	-0.921778417201826180,	-0.921759030194614580,	-0.921739640883005310,	-0.921720249267047100,	-0.921700855346788140,	
+-0.921681459122277060,	-0.921662060593562370,	-0.921642659760692480,	-0.921623256623716030,	-0.921603851182681400,	-0.921584443437637010,	-0.921565033388631720,	-0.921545621035713690,	
+-0.921526206378931790,	-0.921506789418334190,	-0.921487370153969750,	-0.921467948585886760,	-0.921448524714133970,	-0.921429098538759870,	-0.921409670059813000,	-0.921390239277341980,	
+-0.921370806191395220,	-0.921351370802021670,	-0.921331933109269530,	-0.921312493113187640,	-0.921293050813824510,	-0.921273606211228780,	-0.921254159305448960,	-0.921234710096533790,	
+-0.921215258584531790,	-0.921195804769491810,	-0.921176348651462140,	-0.921156890230491740,	-0.921137429506628910,	-0.921117966479922720,	-0.921098501150421470,	-0.921079033518174110,	
+-0.921059563583229050,	-0.921040091345635140,	-0.921020616805440890,	-0.921001139962695170,	-0.920981660817446590,	-0.920962179369743890,	-0.920942695619635820,	-0.920923209567170890,	
+-0.920903721212397940,	-0.920884230555365720,	-0.920864737596122970,	-0.920845242334718210,	-0.920825744771200600,	-0.920806244905618350,	-0.920786742738020750,	-0.920767238268456080,	
+-0.920747731496973530,	-0.920728222423621400,	-0.920708711048448980,	-0.920689197371504560,	-0.920669681392837220,	-0.920650163112495700,	-0.920630642530528840,	-0.920611119646985280,	
+-0.920591594461913850,	-0.920572066975363530,	-0.920552537187383060,	-0.920533005098021270,	-0.920513470707326810,	-0.920493934015348850,	-0.920474395022136020,	-0.920454853727737170,	
+-0.920435310132201150,	-0.920415764235576920,	-0.920396216037913220,	-0.920376665539259120,	-0.920357112739663140,	-0.920337557639174570,	-0.920318000237841940,	-0.920298440535714520,	
+-0.920278878532840850,	-0.920259314229269990,	-0.920239747625050790,	-0.920220178720232320,	-0.920200607514863430,	-0.920181034008992870,	-0.920161458202669920,	-0.920141880095943220,	
+-0.920122299688861830,	-0.920102716981474720,	-0.920083131973830740,	-0.920063544665978950,	-0.920043955057968430,	-0.920024363149847810,	-0.920004768941666500,	-0.919985172433473110,	
+-0.919965573625316950,	-0.919945972517246640,	-0.919926369109311580,	-0.919906763401560520,	-0.919887155394042530,	-0.919867545086806680,	-0.919847932479902040,	-0.919828317573377460,	
+-0.919808700367282020,	-0.919789080861665000,	-0.919769459056575140,	-0.919749834952061750,	-0.919730208548173780,	-0.919710579844960300,	-0.919690948842470160,	-0.919671315540752880,	
+-0.919651679939857190,	-0.919632042039832400,	-0.919612401840727340,	-0.919592759342591440,	-0.919573114545473520,	-0.919553467449423010,	-0.919533818054488640,	-0.919514166360719810,	
+-0.919494512368165480,	-0.919474856076874960,	-0.919455197486897300,	-0.919435536598281590,	-0.919415873411077110,	-0.919396207925332830,	-0.919376540141098150,	-0.919356870058422040,	
+-0.919337197677353780,	-0.919317522997942560,	-0.919297846020237560,	-0.919278166744287750,	-0.919258485170142750,	-0.919238801297851400,	-0.919219115127463130,	-0.919199426659027100,	
+-0.919179735892592390,	-0.919160042828208400,	-0.919140347465924320,	-0.919120649805789340,	-0.919100949847852840,	-0.919081247592163810,	-0.919061543038771740,	-0.919041836187725720,	
+-0.919022127039075150,	-0.919002415592869440,	-0.918982701849157420,	-0.918962985807988850,	-0.918943267469412680,	-0.918923546833478540,	-0.918903823900235280,	-0.918884098669732640,	
+-0.918864371142019690,	-0.918844641317145830,	-0.918824909195160360,	-0.918805174776112680,	-0.918785438060051860,	-0.918765699047027650,	-0.918745957737089110,	-0.918726214130285770,	
+-0.918706468226666790,	-0.918686720026281600,	-0.918666969529179700,	-0.918647216735410390,	-0.918627461645022960,	-0.918607704258066930,	-0.918587944574591590,	-0.918568182594646450,	
+-0.918548418318280820,	-0.918528651745544100,	-0.918508882876485910,	-0.918489111711155330,	-0.918469338249602090,	-0.918449562491875480,	-0.918429784438024920,	-0.918410004088099920,	
+-0.918390221442149990,	-0.918370436500224430,	-0.918350649262372750,	-0.918330859728644480,	-0.918311067899089120,	-0.918291273773755970,	-0.918271477352694760,	-0.918251678635954690,	
+-0.918231877623585490,	-0.918212074315636780,	-0.918192268712157640,	-0.918172460813198030,	-0.918152650618807130,	-0.918132838129034680,	-0.918113023343930080,	-0.918093206263542960,	
+-0.918073386887922730,	-0.918053565217119120,	-0.918033741251181650,	-0.918013914990159720,	-0.917994086434103070,	-0.917974255583061230,	-0.917954422437083580,	-0.917934586996220100,	
+-0.917914749260519970,	-0.917894909230033140,	-0.917875066904808910,	-0.917855222284897020,	-0.917835375370347100,	-0.917815526161208760,	-0.917795674657531650,	-0.917775820859365150,	
+-0.917755964766759360,	-0.917736106379763440,	-0.917716245698427470,	-0.917696382722800740,	-0.917676517452933100,	-0.917656649888874080,	-0.917636780030673620,	-0.917616907878381020,	
+-0.917597033432046240,	-0.917577156691718800,	-0.917557277657448660,	-0.917537396329285100,	-0.917517512707278220,	-0.917497626791477510,	-0.917477738581932710,	-0.917457848078693460,	
+-0.917437955281809710,	-0.917418060191331100,	-0.917398162807307240,	-0.917378263129788100,	-0.917358361158823190,	-0.917338456894462470,	-0.917318550336755580,	-0.917298641485752240,	
+-0.917278730341502310,	-0.917258816904055640,	-0.917238901173461850,	-0.917218983149770910,	-0.917199062833032430,	-0.917179140223296390,	-0.917159215320612290,	-0.917139288125030430,	
+-0.917119358636600100,	-0.917099426855371490,	-0.917079492781394330,	-0.917059556414718370,	-0.917039617755393550,	-0.917019676803469630,	-0.916999733558996670,	-0.916979788022024290,	
+-0.916959840192602460,	-0.916939890070780920,	-0.916919937656609840,	-0.916899982950138750,	-0.916880025951417820,	-0.916860066660496690,	-0.916840105077425530,	-0.916820141202254080,	
+-0.916800175035032310,	-0.916780206575809940,	-0.916760235824637280,	-0.916740262781563840,	-0.916720287446639910,	-0.916700309819915130,	-0.916680329901439660,	-0.916660347691263260,	
+-0.916640363189436090,	-0.916620376396007910,	-0.916600387311028890,	-0.916580395934548870,	-0.916560402266617840,	-0.916540406307285840,	-0.916520408056602730,	-0.916500407514618700,	
+-0.916480404681383700,	-0.916460399556947580,	-0.916440392141360530,	-0.916420382434672500,	-0.916400370436933450,	-0.916380356148193580,	-0.916360339568502600,	-0.916340320697911050,	
+-0.916320299536468540,	-0.916300276084225370,	-0.916280250341231390,	-0.916260222307536900,	-0.916240191983191730,	-0.916220159368246080,	-0.916200124462750120,	-0.916180087266753820,	
+-0.916160047780307350,	-0.916140006003460680,	-0.916119961936264100,	-0.916099915578767580,	-0.916079866931021280,	-0.916059815993075180,	-0.916039762764979670,	-0.916019707246784720,	
+-0.915999649438540620,	-0.915979589340297220,	-0.915959526952104920,	-0.915939462274013790,	-0.915919395306074020,	-0.915899326048335680,	-0.915879254500849170,	-0.915859180663664450,	
+-0.915839104536831820,	-0.915819026120401340,	-0.915798945414423300,	-0.915778862418948010,	-0.915758777134025430,	-0.915738689559706050,	-0.915718599696039750,	-0.915698507543077130,	
+-0.915678413100868170,	-0.915658316369463270,	-0.915638217348912490,	-0.915618116039266130,	-0.915598012440574480,	-0.915577906552887950,	-0.915557798376256500,	-0.915537687910730650,	
+-0.915517575156360450,	-0.915497460113196440,	-0.915477342781288780,	-0.915457223160687780,	-0.915437101251443620,	-0.915416977053606700,	-0.915396850567227420,	-0.915376721792355960,	
+-0.915356590729042740,	-0.915336457377337930,	-0.915316321737292160,	-0.915296183808955500,	-0.915276043592378350,	-0.915255901087611120,	-0.915235756294704220,	-0.915215609213707810,	
+-0.915195459844672430,	-0.915175308187648360,	-0.915155154242686120,	-0.915134998009835780,	-0.915114839489148180,	-0.915094678680673400,	-0.915074515584461960,	-0.915054350200564140,	
+-0.915034182529030460,	-0.915014012569911330,	-0.914993840323257150,	-0.914973665789118430,	-0.914953488967545470,	-0.914933309858588890,	-0.914913128462299000,	-0.914892944778726290,	
+-0.914872758807921180,	-0.914852570549934300,	-0.914832380004815810,	-0.914812187172616590,	-0.914791992053386680,	-0.914771794647176950,	-0.914751594954037570,	-0.914731392974019400,	
+-0.914711188707172610,	-0.914690982153547940,	-0.914670773313195680,	-0.914650562186166580,	-0.914630348772511040,	-0.914610133072279560,	-0.914589915085522900,	-0.914569694812291330,	
+-0.914549472252635720,	-0.914529247406606240,	-0.914509020274253740,	-0.914488790855628620,	-0.914468559150781510,	-0.914448325159763040,	-0.914428088882623840,	-0.914407850319414290,	
+-0.914387609470185160,	-0.914367366334986940,	-0.914347120913870490,	-0.914326873206886100,	-0.914306623214084510,	-0.914286370935516350,	-0.914266116371232450,	-0.914245859521283010,	
+-0.914225600385719090,	-0.914205338964591110,	-0.914185075257949680,	-0.914164809265845760,	-0.914144540988329650,	-0.914124270425452300,	-0.914103997577264240,	-0.914083722443816190,	
+-0.914063445025158790,	-0.914043165321342890,	-0.914022883332418990,	-0.914002599058437950,	-0.913982312499450280,	-0.913962023655507050,	-0.913941732526658560,	-0.913921439112955870,	
+-0.913901143414449390,	-0.913880845431190300,	-0.913860545163228900,	-0.913840242610616250,	-0.913819937773402870,	-0.913799630651639830,	-0.913779321245377530,	-0.913759009554666930,	
+-0.913738695579559000,	-0.913718379320104130,	-0.913698060776353520,	-0.913677739948357550,	-0.913657416836167410,	-0.913637091439833520,	-0.913616763759407150,	-0.913596433794938710,	
+-0.913576101546479170,	-0.913555767014079480,	-0.913535430197790270,	-0.913515091097662490,	-0.913494749713747110,	-0.913474406046094760,	-0.913454060094756380,	-0.913433711859782840,	
+-0.913413361341225190,	-0.913393008539133970,	-0.913372653453560220,	-0.913352296084554930,	-0.913331936432168810,	-0.913311574496452840,	-0.913291210277457970,	-0.913270843775235150,	
+-0.913250474989835140,	-0.913230103921308990,	-0.913209730569707560,	-0.913189354935081800,	-0.913168977017482560,	-0.913148596816961030,	-0.913128214333567940,	-0.913107829567354370,	
+-0.913087442518371150,	-0.913067053186669360,	-0.913046661572299970,	-0.913026267675313920,	-0.913005871495762070,	-0.912985473033695700,	-0.912965072289165570,	-0.912944669262222730,	
+-0.912924263952918260,	-0.912903856361303110,	-0.912883446487428360,	-0.912863034331344970,	-0.912842619893104110,	-0.912822203172756530,	-0.912801784170353510,	-0.912781362885946020,	
+-0.912760939319585130,	-0.912740513471321900,	-0.912720085341207410,	-0.912699654929292610,	-0.912679222235628810,	-0.912658787260266830,	-0.912638350003257990,	-0.912617910464653240,	
+-0.912597468644503750,	-0.912577024542860490,	-0.912556578159774650,	-0.912536129495297500,	-0.912515678549479900,	-0.912495225322373150,	-0.912474769814028310,	-0.912454312024496670,	
+-0.912433851953829090,	-0.912413389602077070,	-0.912392924969291360,	-0.912372458055523470,	-0.912351988860824360,	-0.912331517385245430,	-0.912311043628837530,	-0.912290567591652170,	
+-0.912270089273740200,	-0.912249608675153260,	-0.912229125795942060,	-0.912208640636158250,	-0.912188153195852670,	-0.912167663475076830,	-0.912147171473881690,	-0.912126677192318660,	
+-0.912106180630439020,	-0.912085681788293860,	-0.912065180665934560,	-0.912044677263412320,	-0.912024171580778310,	-0.912003663618083940,	-0.911983153375380380,	-0.911962640852718830,	
+-0.911942126050150900,	-0.911921608967727450,	-0.911901089605500090,	-0.911880567963520020,	-0.911860044041838510,	-0.911839517840506870,	-0.911818989359576390,	-0.911798458599098470,	
+-0.911777925559124510,	-0.911757390239705590,	-0.911736852640893210,	-0.911716312762738790,	-0.911695770605293500,	-0.911675226168608850,	-0.911654679452736040,	-0.911634130457726680,	
+-0.911613579183631840,	-0.911593025630503150,	-0.911572469798391900,	-0.911551911687349500,	-0.911531351297427240,	-0.911510788628676630,	-0.911490223681149070,	-0.911469656454895970,	
+-0.911449086949968620,	-0.911428515166418650,	-0.911407941104297350,	-0.911387364763656230,	-0.911366786144546690,	-0.911346205247020260,	-0.911325622071128110,	-0.911305036616921970,	
+-0.911284448884453370,	-0.911263858873773590,	-0.911243266584934150,	-0.911222672017986570,	-0.911202075172982240,	-0.911181476049972790,	-0.911160874649009630,	-0.911140270970144270,	
+-0.911119665013428340,	-0.911099056778913010,	-0.911078446266650240,	-0.911057833476691340,	-0.911037218409087800,	-0.911016601063891260,	-0.910995981441153240,	-0.910975359540925120,	
+-0.910954735363258770,	-0.910934108908205480,	-0.910913480175816970,	-0.910892849166144660,	-0.910872215879240280,	-0.910851580315155450,	-0.910830942473941470,	-0.910810302355650410,	
+-0.910789659960333340,	-0.910769015288042330,	-0.910748368338828660,	-0.910727719112744080,	-0.910707067609840220,	-0.910686413830168680,	-0.910665757773781110,	-0.910645099440729240,	
+-0.910624438831064480,	-0.910603775944838660,	-0.910583110782103410,	-0.910562443342910480,	-0.910541773627311260,	-0.910521101635357710,	-0.910500427367101350,	-0.910479750822593910,	
+-0.910459072001887250,	-0.910438390905032760,	-0.910417707532082400,	-0.910397021883087690,	-0.910376333958100470,	-0.910355643757172370,	-0.910334951280355240,	-0.910314256527700590,	
+-0.910293559499260500,	-0.910272860195086350,	-0.910252158615230120,	-0.910231454759743430,	-0.910210748628678230,	-0.910190040222086050,	-0.910169329540018830,	-0.910148616582528210,	
+-0.910127901349666150,	-0.910107183841484260,	-0.910086464058034390,	-0.910065741999368400,	-0.910045017665538030,	-0.910024291056595210,	-0.910003562172591480,	-0.909982831013579020,	
+-0.909962097579609440,	-0.909941361870734600,	-0.909920623887006340,	-0.909899883628476620,	-0.909879141095197070,	-0.909858396287219760,	-0.909837649204596310,	-0.909816899847378900,	
+-0.909796148215619160,	-0.909775394309369050,	-0.909754638128680520,	-0.909733879673605310,	-0.909713118944195380,	-0.909692355940502790,	-0.909671590662579190,	-0.909650823110476630,	
+-0.909630053284247060,	-0.909609281183942240,	-0.909588506809614450,	-0.909567730161315200,	-0.909546951239096680,	-0.909526170043010730,	-0.909505386573109530,	-0.909484600829444600,	
+-0.909463812812068450,	-0.909443022521032480,	-0.909422229956389220,	-0.909401435118190270,	-0.909380638006487720,	-0.909359838621333520,	-0.909339036962779850,	-0.909318233030878440,	
+-0.909297426825681600,	-0.909276618347241270,	-0.909255807595609090,	-0.909234994570837560,	-0.909214179272978650,	-0.909193361702083980,	-0.909172541858206170,	-0.909151719741396970,	
+-0.909130895351708550,	-0.909110068689192640,	-0.909089239753901770,	-0.909068408545887770,	-0.909047575065202730,	-0.909026739311898590,	-0.909005901286027870,	-0.908985060987642310,	
+-0.908964218416794090,	-0.908943373573535160,	-0.908922526457918050,	-0.908901677069994470,	-0.908880825409816850,	-0.908859971477436910,	-0.908839115272907170,	-0.908818256796279810,	
+-0.908797396047606450,	-0.908776533026939840,	-0.908755667734331920,	-0.908734800169834880,	-0.908713930333500560,	-0.908693058225381710,	-0.908672183845530060,	-0.908651307193998110,	
+-0.908630428270837620,	-0.908609547076101200,	-0.908588663609841030,	-0.908567777872109070,	-0.908546889862957620,	-0.908525999582439070,	-0.908505107030605500,	-0.908484212207509190,	
+-0.908463315113202110,	-0.908442415747736990,	-0.908421514111165780,	-0.908400610203540900,	-0.908379704024914190,	-0.908358795575338500,	-0.908337884854865770,	-0.908316971863548090,	
+-0.908296056601438200,	-0.908275139068588140,	-0.908254219265050340,	-0.908233297190876750,	-0.908212372846120110,	-0.908191446230832480,	-0.908170517345066260,	-0.908149586188873650,	
+-0.908128652762307140,	-0.908107717065419040,	-0.908086779098261740,	-0.908065838860887210,	-0.908044896353348290,	-0.908023951575697040,	-0.908003004527985990,	-0.907982055210267310,	
+-0.907961103622593630,	-0.907940149765017130,	-0.907919193637590110,	-0.907898235240365390,	-0.907877274573394950,	-0.907856311636731310,	-0.907835346430426850,	-0.907814378954534100,	
+-0.907793409209105450,	-0.907772437194193200,	-0.907751462909849760,	-0.907730486356127740,	-0.907709507533079660,	-0.907688526440757700,	-0.907667543079214270,	-0.907646557448502200,	
+-0.907625569548673680,	-0.907604579379781230,	-0.907583586941877240,	-0.907562592235014340,	-0.907541595259245050,	-0.907520596014621540,	-0.907499594501196770,	-0.907478590719023040,	
+-0.907457584668152740,	-0.907436576348638390,	-0.907415565760532730,	-0.907394552903888150,	-0.907373537778757180,	-0.907352520385192210,	-0.907331500723246090,	-0.907310478792971220,	
+-0.907289454594420230,	-0.907268428127645300,	-0.907247399392699600,	-0.907226368389635330,	-0.907205335118505210,	-0.907184299579361530,	-0.907163261772257260,	-0.907142221697244790,	
+-0.907121179354376640,	-0.907100134743705770,	-0.907079087865284570,	-0.907058038719165570,	-0.907036987305401280,	-0.907015933624044760,	-0.906994877675148410,	-0.906973819458764870,	
+-0.906952758974946540,	-0.906931696223746590,	-0.906910631205217310,	-0.906889563919411560,	-0.906868494366381620,	-0.906847422546180670,	-0.906826348458861120,	-0.906805272104475700,	
+-0.906784193483077040,	-0.906763112594717980,	-0.906742029439451150,	-0.906720944017329170,	-0.906699856328404770,	-0.906678766372730820,	-0.906657674150360030,	-0.906636579661344810,	
+-0.906615482905738350,	-0.906594383883593260,	-0.906573282594962060,	-0.906552179039897600,	-0.906531073218452830,	-0.906509965130680270,	-0.906488854776632990,	-0.906467742156363280,	
+-0.906446627269924420,	-0.906425510117368940,	-0.906404390698749780,	-0.906383269014119360,	-0.906362145063531080,	-0.906341018847037330,	-0.906319890364691070,	-0.906298759616544940,	
+-0.906277626602651990,	-0.906256491323065070,	-0.906235353777836710,	-0.906214213967020180,	-0.906193071890668000,	-0.906171927548833240,	-0.906150780941568530,	-0.906129632068926940,	
+-0.906108480930961300,	-0.906087327527724470,	-0.906066171859269190,	-0.906045013925648620,	-0.906023853726915410,	-0.906002691263122720,	-0.905981526534323070,	-0.905960359540569750,	
+-0.905939190281915610,	-0.905918018758413380,	-0.905896844970116020,	-0.905875668917076720,	-0.905854490599348190,	-0.905833310016983310,	-0.905812127170035340,	-0.905790942058557040,	
+-0.905769754682601350,	-0.905748565042221120,	-0.905727373137469650,	-0.905706178968399780,	-0.905684982535064460,	-0.905663783837516450,	-0.905642582875809230,	-0.905621379649995450,	
+-0.905600174160128280,	-0.905578966406260570,	-0.905557756388445490,	-0.905536544106736120,	-0.905515329561185300,	-0.905494112751846100,	-0.905472893678771710,	-0.905451672342015070,	
+-0.905430448741629370,	-0.905409222877667230,	-0.905387994750182280,	-0.905366764359227360,	-0.905345531704855320,	-0.905324296787119560,	-0.905303059606073160,	-0.905281820161769060,	
+-0.905260578454260220,	-0.905239334483600170,	-0.905218088249841850,	-0.905196839753038220,	-0.905175588993242240,	-0.905154335970507540,	-0.905133080684887070,	-0.905111823136433790,	
+-0.905090563325200770,	-0.905069301251241630,	-0.905048036914609110,	-0.905026770315356610,	-0.905005501453536980,	-0.904984230329203720,	-0.904962956942409910,	-0.904941681293208510,	
+-0.904920403381653140,	-0.904899123207796750,	-0.904877840771692530,	-0.904856556073393550,	-0.904835269112953310,	-0.904813979890424890,	-0.904792688405861580,	-0.904771394659316330,	
+-0.904750098650842880,	-0.904728800380494080,	-0.904707499848323330,	-0.904686197054383580,	-0.904664891998728570,	-0.904643584681411260,	-0.904622275102485050,	-0.904600963262003010,	
+-0.904579649160018650,	-0.904558332796585260,	-0.904537014171755800,	-0.904515693285584010,	-0.904494370138123060,	-0.904473044729426020,	-0.904451717059546300,	-0.904430387128537410,	
+-0.904409054936452630,	-0.904387720483345150,	-0.904366383769268260,	-0.904345044794275470,	-0.904323703558420180,	-0.904302360061755570,	-0.904281014304334940,	-0.904259666286211910,	
+-0.904238316007439650,	-0.904216963468071680,	-0.904195608668161180,	-0.904174251607761770,	-0.904152892286926750,	-0.904131530705709290,	-0.904110166864163120,	-0.904088800762341660,	
+-0.904067432400298080,	-0.904046061778085890,	-0.904024688895758600,	-0.904003313753369620,	-0.903981936350972350,	-0.903960556688620080,	-0.903939174766366650,	-0.903917790584265250,	
+-0.903896404142369270,	-0.903875015440732230,	-0.903853624479407760,	-0.903832231258449250,	-0.903810835777910220,	-0.903789438037843840,	-0.903768038038304080,	-0.903746635779344220,	
+-0.903725231261017780,	-0.903703824483378050,	-0.903682415446478980,	-0.903661004150373870,	-0.903639590595116000,	-0.903618174780759340,	-0.903596756707357280,	-0.903575336374963340,	
+-0.903553913783630920,	-0.903532488933413870,	-0.903511061824365580,	-0.903489632456539680,	-0.903468200829989470,	-0.903446766944768890,	-0.903425330800931460,	-0.903403892398530690,	
+-0.903382451737620000,	-0.903361008818253430,	-0.903339563640484290,	-0.903318116204366190,	-0.903296666509952660,	-0.903275214557297650,	-0.903253760346454550,	-0.903232303877476990,	
+-0.903210845150418720,	-0.903189384165333450,	-0.903167920922274710,	-0.903146455421295900,	-0.903124987662451200,	-0.903103517645794000,	-0.903082045371378040,	-0.903060570839256730,	
+-0.903039094049484240,	-0.903017615002113970,	-0.902996133697199670,	-0.902974650134794830,	-0.902953164314953540,	-0.902931676237729410,	-0.902910185903176070,	-0.902888693311347020,	
+-0.902867198462296460,	-0.902845701356078000,	-0.902824201992744930,	-0.902802700372351660,	-0.902781196494951590,	-0.902759690360598550,	-0.902738181969346080,	-0.902716671321248440,	
+-0.902695158416359060,	-0.902673643254731760,	-0.902652125836420070,	-0.902630606161478390,	-0.902609084229960220,	-0.902587560041919200,	-0.902566033597409170,	-0.902544504896484300,	
+-0.902522973939198110,	-0.902501440725604450,	-0.902479905255757050,	-0.902458367529710090,	-0.902436827547517200,	-0.902415285309232210,	-0.902393740814908860,	-0.902372194064601230,	
+-0.902350645058363270,	-0.902329093796248370,	-0.902307540278311060,	-0.902285984504604840,	-0.902264426475183680,	-0.902242866190101190,	-0.902221303649411780,	-0.902199738853169180,	
+-0.902178171801427120,	-0.902156602494239460,	-0.902135030931660590,	-0.902113457113744020,	-0.902091881040543830,	-0.902070302712113750,	-0.902048722128508170,	-0.902027139289780730,	
+-0.902005554195985490,	-0.901983966847176080,	-0.901962377243407000,	-0.901940785384731990,	-0.901919191271204790,	-0.901897594902879800,	-0.901875996279810850,	-0.901854395402051920,	
+-0.901832792269656850,	-0.901811186882679920,	-0.901789579241175090,	-0.901767969345196210,	-0.901746357194797230,	-0.901724742790032670,	-0.901703126130956160,	-0.901681507217621860,	
+-0.901659886050083630,	-0.901638262628395750,	-0.901616636952612290,	-0.901595009022787330,	-0.901573378838974480,	-0.901551746401228480,	-0.901530111709603180,	-0.901508474764152300,	
+-0.901486835564930480,	-0.901465194111991550,	-0.901443550405389590,	-0.901421904445178670,	-0.901400256231413070,	-0.901378605764146860,	-0.901356953043434220,	-0.901335298069328880,	
+-0.901313640841885590,	-0.901291981361158180,	-0.901270319627200720,	-0.901248655640067400,	-0.901226989399812610,	-0.901205320906490300,	-0.901183650160154670,	-0.901161977160859770,	
+-0.901140301908660120,	-0.901118624403609680,	-0.901096944645762510,	-0.901075262635173120,	-0.901053578371895700,	-0.901031891855984200,	-0.901010203087492910,	-0.900988512066476120,	
+-0.900966818792988230,	-0.900945123267083200,	-0.900923425488815210,	-0.900901725458238770,	-0.900880023175408160,	-0.900858318640377350,	-0.900836611853200630,	-0.900814902813932620,	
+-0.900793191522627270,	-0.900771477979338990,	-0.900749762184121730,	-0.900728044137030340,	-0.900706323838118880,	-0.900684601287441540,	-0.900662876485052500,	-0.900641149431006480,	
+-0.900619420125357560,	-0.900597688568159920,	-0.900575954759468280,	-0.900554218699336720,	-0.900532480387819630,	-0.900510739824971100,	-0.900488997010845950,	-0.900467251945498370,	
+-0.900445504628982650,	-0.900423755061352860,	-0.900402003242663950,	-0.900380249172969990,	-0.900358492852325500,	-0.900336734280784530,	-0.900314973458401950,	-0.900293210385231910,	
+-0.900271445061328830,	-0.900249677486746890,	-0.900227907661541040,	-0.900206135585765450,	-0.900184361259474210,	-0.900162584682722370,	-0.900140805855564000,	-0.900119024778053610,	
+-0.900097241450245500,	-0.900075455872194510,	-0.900053668043954810,	-0.900031877965581040,	-0.900010085637127260,	-0.899988291058648530,	-0.899966494230199030,	-0.899944695151833400,	
+-0.899922893823605690,	-0.899901090245571080,	-0.899879284417783640,	-0.899857476340298000,	-0.899835666013168560,	-0.899813853436450040,	-0.899792038610196960,	-0.899770221534463620,	
+-0.899748402209304850,	-0.899726580634775060,	-0.899704756810928870,	-0.899682930737820570,	-0.899661102415505120,	-0.899639271844037030,	-0.899617439023470580,	-0.899595603953860510,	
+-0.899573766635261450,	-0.899551927067728130,	-0.899530085251314950,	-0.899508241186076310,	-0.899486394872067270,	-0.899464546309342360,	-0.899442695497955970,	-0.899420842437962610,	
+-0.899398987129417460,	-0.899377129572374810,	-0.899355269766889290,	-0.899333407713015400,	-0.899311543410808210,	-0.899289676860322130,	-0.899267808061611660,	-0.899245937014731990,	
+-0.899224063719737400,	-0.899202188176682630,	-0.899180310385622180,	-0.899158430346611140,	-0.899136548059704110,	-0.899114663524955620,	-0.899092776742420270,	-0.899070887712153270,	
+-0.899048996434208990,	-0.899027102908642180,	-0.899005207135507470,	-0.898983309114860020,	-0.898961408846754130,	-0.898939506331244860,	-0.898917601568386520,	-0.898895694558234480,	
+-0.898873785300843050,	-0.898851873796267080,	-0.898829960044561620,	-0.898808044045781300,	-0.898786125799980740,	-0.898764205307214790,	-0.898742282567538410,	-0.898720357581006430,	
+-0.898698430347673490,	-0.898676500867594320,	-0.898654569140824090,	-0.898632635167417430,	-0.898610698947429180,	-0.898588760480913960,	-0.898566819767927070,	-0.898544876808523130,	
+-0.898522931602756980,	-0.898500984150683250,	-0.898479034452357330,	-0.898457082507833850,	-0.898435128317167430,	-0.898413171880413360,	-0.898391213197626380,	-0.898369252268861440,	
+-0.898347289094173050,	-0.898325323673616730,	-0.898303356007247090,	-0.898281386095118980,	-0.898259413937287250,	-0.898237439533807190,	-0.898215462884733530,	-0.898193483990121220,	
+-0.898171502850025010,	-0.898149519464500280,	-0.898127533833601670,	-0.898105545957384340,	-0.898083555835902820,	-0.898061563469212620,	-0.898039568857368580,	-0.898017572000425420,	
+-0.897995572898438450,	-0.897973571551462620,	-0.897951567959552890,	-0.897929562122763980,	-0.897907554041151300,	-0.897885543714769810,	-0.897863531143674450,	-0.897841516327920090,	
+-0.897819499267562100,	-0.897797479962655460,	-0.897775458413255010,	-0.897753434619415810,	-0.897731408581193160,	-0.897709380298642000,	-0.897687349771817300,	-0.897665317000774120,	
+-0.897643281985567860,	-0.897621244726253380,	-0.897599205222885830,	-0.897577163475519970,	-0.897555119484211520,	-0.897533073249015210,	-0.897511024769986010,	-0.897488974047179420,	
+-0.897466921080650400,	-0.897444865870454130,	-0.897422808416645460,	-0.897400748719279990,	-0.897378686778412590,	-0.897356622594098540,	-0.897334556166392680,	-0.897312487495350640,	
+-0.897290416581027480,	-0.897268343423478170,	-0.897246268022757860,	-0.897224190378922090,	-0.897202110492025810,	-0.897180028362124180,	-0.897157943989272400,	-0.897135857373525860,	
+-0.897113768514939740,	-0.897091677413568990,	-0.897069584069469240,	-0.897047488482695550,	-0.897025390653303110,	-0.897003290581347090,	-0.896981188266883000,	-0.896959083709965800,	
+-0.896936976910651000,	-0.896914867868993660,	-0.896892756585049190,	-0.896870643058872870,	-0.896848527290520000,	-0.896826409280045530,	-0.896804289027505310,	-0.896782166532954280,	
+-0.896760041796447970,	-0.896737914818041220,	-0.896715785597789970,	-0.896693654135749200,	-0.896671520431974180,	-0.896649384486520430,	-0.896627246299443350,	-0.896605105870798000,	
+-0.896582963200639790,	-0.896560818289024450,	-0.896538671136006940,	-0.896516521741642760,	-0.896494370105987090,	-0.896472216229095790,	-0.896450060111023790,	-0.896427901751826740,	
+-0.896405741151559800,	-0.896383578310278590,	-0.896361413228038420,	-0.896339245904894780,	-0.896317076340902850,	-0.896294904536118380,	-0.896272730490596640,	-0.896250554204393150,	
+-0.896228375677562970,	-0.896206194910162070,	-0.896184011902245730,	-0.896161826653869120,	-0.896139639165088210,	-0.896117449435958170,	-0.896095257466534510,	-0.896073063256872530,	
+-0.896050866807028060,	-0.896028668117056390,	-0.896006467187013040,	-0.895984264016953410,	-0.895962058606933230,	-0.895939850957008010,	-0.895917641067233040,	-0.895895428937663830,	
+-0.895873214568356220,	-0.895850997959365620,	-0.895828779110747540,	-0.895806558022557260,	-0.895784334694850860,	-0.895762109127683500,	-0.895739881321110820,	-0.895717651275188540,	
+-0.895695418989972070,	-0.895673184465517140,	-0.895650947701879030,	-0.895628708699113820,	-0.895606467457276790,	-0.895584223976423570,	-0.895561978256609550,	-0.895539730297890910,	
+-0.895517480100322840,	-0.895495227663961060,	-0.895472972988861080,	-0.895450716075078870,	-0.895428456922669810,	-0.895406195531689650,	-0.895383931902193790,	-0.895361666034238280,	
+-0.895339397927878640,	-0.895317127583170280,	-0.895294855000169370,	-0.895272580178931190,	-0.895250303119511700,	-0.895228023821966200,	-0.895205742286350750,	-0.895183458512721080,	
+-0.895161172501132700,	-0.895138884251641230,	-0.895116593764302640,	-0.895094301039172650,	-0.895072006076306880,	-0.895049708875760960,	-0.895027409437590960,	-0.895005107761852380,	
+-0.894982803848601070,	-0.894960497697892540,	-0.894938189309782970,	-0.894915878684327870,	-0.894893565821582970,	-0.894871250721604230,	-0.894848933384447490,	-0.894826613810168370,	
+-0.894804291998822500,	-0.894781967950466160,	-0.894759641665154760,	-0.894737313142944360,	-0.894714982383890470,	-0.894692649388049380,	-0.894670314155476600,	-0.894647976686227970,	
+-0.894625636980359350,	-0.894603295037926790,	-0.894580950858985920,	-0.894558604443592700,	-0.894536255791802850,	-0.894513904903672440,	-0.894491551779257320,	-0.894469196418613330,	
+-0.894446838821796210,	-0.894424478988862130,	-0.894402116919866820,	-0.894379752614866020,	-0.894357386073916130,	-0.894335017297072650,	-0.894312646284391780,	-0.894290273035928900,	
+-0.894267897551740740,	-0.894245519831882720,	-0.894223139876410890,	-0.894200757685381100,	-0.894178373258849520,	-0.894155986596872010,	-0.894133597699504620,	-0.894111206566802990,	
+-0.894088813198823500,	-0.894066417595622000,	-0.894044019757254560,	-0.894021619683776800,	-0.893999217375245130,	-0.893976812831715480,	-0.893954406053243610,	-0.893931997039885800,	
+-0.893909585791698100,	-0.893887172308736490,	-0.893864756591056690,	-0.893842338638715210,	-0.893819918451767890,	-0.893797496030270700,	-0.893775071374279690,	-0.893752644483851060,	
+-0.893730215359040960,	-0.893707783999905250,	-0.893685350406499880,	-0.893662914578881360,	-0.893640476517105540,	-0.893618036221228600,	-0.893595593691306260,	-0.893573148927395140,	
+-0.893550701929551220,	-0.893528252697830320,	-0.893505801232288950,	-0.893483347532983090,	-0.893460891599968890,	-0.893438433433302310,	-0.893415973033039770,	-0.893393510399237310,	
+-0.893371045531951010,	-0.893348578431237050,	-0.893326109097151710,	-0.893303637529751170,	-0.893281163729091500,	-0.893258687695228760,	-0.893236209428219460,	-0.893213728928119680,	
+-0.893191246194985580,	-0.893168761228873120,	-0.893146274029838930,	-0.893123784597939060,	-0.893101292933229820,	-0.893078799035767150,	-0.893056302905607560,	-0.893033804542807340,	
+-0.893011303947422340,	-0.892988801119509290,	-0.892966296059124250,	-0.892943788766323410,	-0.892921279241162940,	-0.892898767483699560,	-0.892876253493989140,	-0.892853737272088170,	
+-0.892831218818052610,	-0.892808698131939190,	-0.892786175213803990,	-0.892763650063703510,	-0.892741122681693590,	-0.892718593067831080,	-0.892696061222172040,	-0.892673527144772880,	
+-0.892650990835689770,	-0.892628452294979220,	-0.892605911522697750,	-0.892583368518901190,	-0.892560823283646390,	-0.892538275816989520,	-0.892515726118987110,	-0.892493174189694980,	
+-0.892470620029170210,	-0.892448063637468980,	-0.892425505014647460,	-0.892402944160762050,	-0.892380381075869480,	-0.892357815760025820,	-0.892335248213287800,	-0.892312678435711380,	
+-0.892290106427353510,	-0.892267532188270260,	-0.892244955718518360,	-0.892222377018153770,	-0.892199796087233430,	-0.892177212925813530,	-0.892154627533950470,	-0.892132039911701090,	
+-0.892109450059121570,	-0.892086857976268410,	-0.892064263663197910,	-0.892041667119967020,	-0.892019068346631920,	-0.891996467343249110,	-0.891973864109874890,	-0.891951258646566330,	
+-0.891928650953379590,	-0.891906041030371190,	-0.891883428877597530,	-0.891860814495115450,	-0.891838197882981350,	-0.891815579041251750,	-0.891792957969983040,	-0.891770334669232060,	
+-0.891747709139055320,	-0.891725081379509120,	-0.891702451390650300,	-0.891679819172535470,	-0.891657184725221040,	-0.891634548048763410,	-0.891611909143219750,	-0.891589268008646130,	
+-0.891566624645099500,	-0.891543979052636050,	-0.891521331231312830,	-0.891498681181186360,	-0.891476028902313030,	-0.891453374394749590,	-0.891430717658552860,	-0.891408058693779260,	
+-0.891385397500485620,	-0.891362734078728240,	-0.891340068428564280,	-0.891317400550050040,	-0.891294730443242370,	-0.891272058108197650,	-0.891249383544973070,	-0.891226706753624920,	
+-0.891204027734209920,	-0.891181346486784930,	-0.891158663011406670,	-0.891135977308131650,	-0.891113289377016500,	-0.891090599218118400,	-0.891067906831493840,	-0.891045212217199340,	
+-0.891022515375291760,	-0.890999816305828030,	-0.890977115008864780,	-0.890954411484458750,	-0.890931705732666450,	-0.890908997753545150,	-0.890886287547151380,	-0.890863575113541860,	
+-0.890840860452773110,	-0.890818143564902520,	-0.890795424449986490,	-0.890772703108081760,	-0.890749979539245400,	-0.890727253743534230,	-0.890704525721004780,	-0.890681795471713890,	
+-0.890659062995718730,	-0.890636328293075820,	-0.890613591363842220,	-0.890590852208074320,	-0.890568110825829540,	-0.890545367217164490,	-0.890522621382136000,	-0.890499873320800830,	
+-0.890477123033216130,	-0.890454370519438540,	-0.890431615779525120,	-0.890408858813532490,	-0.890386099621517820,	-0.890363338203537970,	-0.890340574559649540,	-0.890317808689909840,	
+-0.890295040594375700,	-0.890272270273103960,	-0.890249497726151250,	-0.890226722953575080,	-0.890203945955432060,	-0.890181166731779160,	-0.890158385282673210,	-0.890135601608171510,	
+-0.890112815708330670,	-0.890090027583207990,	-0.890067237232859850,	-0.890044444657343890,	-0.890021649856716830,	-0.889998852831035640,	-0.889976053580357140,	-0.889953252104738750,	
+-0.889930448404237180,	-0.889907642478909410,	-0.889884834328812380,	-0.889862023954003490,	-0.889839211354539580,	-0.889816396530477390,	-0.889793579481874430,	-0.889770760208787540,	
+-0.889747938711273670,	-0.889725114989389780,	-0.889702289043193370,	-0.889679460872741190,	-0.889656630478090400,	-0.889633797859297750,	-0.889610963016420840,	-0.889588125949516530,	
+-0.889565286658641980,	-0.889542445143853940,	-0.889519601405209910,	-0.889496755442766960,	-0.889473907256582150,	-0.889451056846712330,	-0.889428204213215110,	-0.889405349356147350,	
+-0.889382492275565980,	-0.889359632971528650,	-0.889336771444092180,	-0.889313907693313870,	-0.889291041719250550,	-0.889268173521959750,	-0.889245303101498630,	-0.889222430457924150,	
+-0.889199555591293490,	-0.889176678501664040,	-0.889153799189092990,	-0.889130917653637390,	-0.889108033895354310,	-0.889085147914301270,	-0.889062259710535430,	-0.889039369284113980,	
+-0.889016476635093870,	-0.888993581763532830,	-0.888970684669487700,	-0.888947785353015770,	-0.888924883814174560,	-0.888901980053021120,	-0.888879074069612640,	-0.888856165864006400,	
+-0.888833255436259910,	-0.888810342786430340,	-0.888787427914574880,	-0.888764510820750590,	-0.888741591505015300,	-0.888718669967425990,	-0.888695746208039930,	-0.888672820226914410,	
+-0.888649892024107050,	-0.888626961599674910,	-0.888604028953675410,	-0.888581094086165590,	-0.888558156997203200,	-0.888535217686845510,	-0.888512276155149490,	-0.888489332402173090,	
+-0.888466386427973260,	-0.888443438232607520,	-0.888420487816133030,	-0.888397535178607420,	-0.888374580320087980,	-0.888351623240632100,	-0.888328663940296970,	-0.888305702419140420,	
+-0.888282738677219630,	-0.888259772714591890,	-0.888236804531314590,	-0.888213834127445480,	-0.888190861503041830,	-0.888167886658160930,	-0.888144909592860190,	-0.888121930307197330,	
+-0.888098948801229640,	-0.888075965075014630,	-0.888052979128609480,	-0.888029990962072020,	-0.888007000575459670,	-0.887984007968829590,	-0.887961013142239630,	-0.887938016095747300,	
+-0.887915016829409760,	-0.887892015343284550,	-0.887869011637429480,	-0.887846005711901980,	-0.887822997566759310,	-0.887799987202058990,	-0.887776974617858980,	-0.887753959814216450,	
+-0.887730942791189140,	-0.887707923548834100,	-0.887684902087209630,	-0.887661878406372780,	-0.887638852506381300,	-0.887615824387292470,	-0.887592794049164250,	-0.887569761492054020,	
+-0.887546726716019310,	-0.887523689721117840,	-0.887500650507407230,	-0.887477609074945000,	-0.887454565423788530,	-0.887431519553995800,	-0.887408471465624290,	-0.887385421158731650,	
+-0.887362368633375250,	-0.887339313889613070,	-0.887316256927502710,	-0.887293197747101580,	-0.887270136348467410,	-0.887247072731657930,	-0.887224006896730870,	-0.887200938843743850,	
+-0.887177868572754160,	-0.887154796083819970,	-0.887131721376998920,	-0.887108644452348270,	-0.887085565309926330,	-0.887062483949790370,	-0.887039400371998240,	-0.887016314576607350,	
+-0.886993226563675960,	-0.886970136333261490,	-0.886947043885421670,	-0.886923949220214000,	-0.886900852337696670,	-0.886877753237927280,	-0.886854651920963470,	-0.886831548386862730,	
+-0.886808442635683370,	-0.886785334667482990,	-0.886762224482319230,	-0.886739112080249690,	-0.886715997461332560,	-0.886692880625625460,	-0.886669761573186220,	-0.886646640304072250,	
+-0.886623516818341950,	-0.886600391116052820,	-0.886577263197262600,	-0.886554133062029350,	-0.886531000710410800,	-0.886507866142464680,	-0.886484729358248740,	-0.886461590357821240,	
+-0.886438449141239700,	-0.886415305708562080,	-0.886392160059845890,	-0.886369012195149630,	-0.886345862114530700,	-0.886322709818047280,	-0.886299555305756770,	-0.886276398577717560,	
+-0.886253239633987500,	-0.886230078474624210,	-0.886206915099685520,	-0.886183749509229850,	-0.886160581703314690,	-0.886137411681997890,	-0.886114239445337850,	-0.886091064993392070,	
+-0.886067888326218740,	-0.886044709443875480,	-0.886021528346420670,	-0.885998345033911950,	-0.885975159506407480,	-0.885951971763964790,	-0.885928781806642470,	-0.885905589634498170,	
+-0.885882395247589830,	-0.885859198645975400,	-0.885835999829713060,	-0.885812798798860770,	-0.885789595553476580,	-0.885766390093618130,	-0.885743182419343910,	-0.885719972530711660,	
+-0.885696760427779340,	-0.885673546110605340,	-0.885650329579247500,	-0.885627110833763780,	-0.885603889874212010,	-0.885580666700650830,	-0.885557441313137960,	-0.885534213711731470,	
+-0.885510983896489300,	-0.885487751867469860,	-0.885464517624731000,	-0.885441281168330870,	-0.885418042498327230,	-0.885394801614778790,	-0.885371558517743410,	-0.885348313207279030,	
+-0.885325065683443710,	-0.885301815946295870,	-0.885278563995893550,	-0.885255309832294610,	-0.885232053455557550,	-0.885208794865740440,	-0.885185534062901350,	-0.885162271047098100,	
+-0.885139005818389450,	-0.885115738376833330,	-0.885092468722487810,	-0.885069196855410970,	-0.885045922775661300,	-0.885022646483296760,	-0.884999367978375640,	-0.884976087260956000,	
+-0.884952804331096240,	-0.884929519188854430,	-0.884906231834288960,	-0.884882942267457560,	-0.884859650488419190,	-0.884836356497231580,	-0.884813060293953010,	-0.884789761878641670,	
+-0.884766461251356160,	-0.884743158412154450,	-0.884719853361094710,	-0.884696546098235450,	-0.884673236623634840,	-0.884649924937351170,	-0.884626611039442510,	-0.884603294929967480,	
+-0.884579976608984240,	-0.884556656076550980,	-0.884533333332725990,	-0.884510008377567770,	-0.884486681211134610,	-0.884463351833484680,	-0.884440020244676160,	-0.884416686444767900,	
+-0.884393350433817840,	-0.884370012211884380,	-0.884346671779025820,	-0.884323329135300650,	-0.884299984280767170,	-0.884276637215483550,	-0.884253287939508640,	-0.884229936452900380,	
+-0.884206582755717290,	-0.884183226848017530,	-0.884159868729859970,	-0.884136508401302760,	-0.884113145862404190,	-0.884089781113222670,	-0.884066414153816820,	-0.884043044984244910,	
+-0.884019673604565460,	-0.883996300014836530,	-0.883972924215117080,	-0.883949546205465400,	-0.883926165985939760,	-0.883902783556598570,	-0.883879398917500670,	-0.883856012068704120,	
+-0.883832623010267440,	-0.883809231742249460,	-0.883785838264708250,	-0.883762442577702530,	-0.883739044681290500,	-0.883715644575531090,	-0.883692242260482490,	-0.883668837736203310,	
+-0.883645431002751840,	-0.883622022060187030,	-0.883598610908567170,	-0.883575197547950770,	-0.883551781978396120,	-0.883528364199962280,	-0.883504944212707530,	-0.883481522016690390,	
+-0.883458097611969250,	-0.883434670998603070,	-0.883411242176650240,	-0.883387811146169270,	-0.883364377907218560,	-0.883340942459857060,	-0.883317504804143280,	-0.883294064940135510,	
+-0.883270622867892820,	-0.883247178587473590,	-0.883223732098936340,	-0.883200283402339580,	-0.883176832497742370,	-0.883153379385203000,	-0.883129924064780300,	-0.883106466536532460,	
+-0.883083006800518660,	-0.883059544856797380,	-0.883036080705427270,	-0.883012614346466720,	-0.882989145779974890,	-0.882965675006010200,	-0.882942202024631250,	-0.882918726835896560,	
+-0.882895249439865300,	-0.882871769836595990,	-0.882848288026147010,	-0.882824804008577440,	-0.882801317783945990,	-0.882777829352311190,	-0.882754338713731550,	-0.882730845868266330,	
+-0.882707350815973960,	-0.882683853556913260,	-0.882660354091142630,	-0.882636852418721470,	-0.882613348539708080,	-0.882589842454161280,	-0.882566334162139810,	-0.882542823663702620,	
+-0.882519310958908340,	-0.882495796047815810,	-0.882472278930483630,	-0.882448759606970890,	-0.882425238077336300,	-0.882401714341638390,	-0.882378188399936430,	-0.882354660252288920,	
+-0.882331129898754840,	-0.882307597339392680,	-0.882284062574261730,	-0.882260525603420720,	-0.882236986426928270,	-0.882213445044843230,	-0.882189901457224760,	-0.882166355664131490,	
+-0.882142807665622470,	-0.882119257461756120,	-0.882095705052591830,	-0.882072150438188320,	-0.882048593618604330,	-0.882025034593898800,	-0.882001473364130820,	-0.881977909929359090,	
+-0.881954344289642700,	-0.881930776445040140,	-0.881907206395610930,	-0.881883634141413690,	-0.881860059682507140,	-0.881836483018950680,	-0.881812904150802930,	-0.881789323078122970,	
+-0.881765739800969510,	-0.881742154319401950,	-0.881718566633478920,	-0.881694976743259470,	-0.881671384648802460,	-0.881647790350167160,	-0.881624193847412310,	-0.881600595140597080,	
+-0.881576994229780090,	-0.881553391115020850,	-0.881529785796378080,	-0.881506178273910870,	-0.881482568547678040,	-0.881458956617738990,	-0.881435342484152560,	-0.881411726146977600,	
+-0.881388107606273510,	-0.881364486862099120,	-0.881340863914513490,	-0.881317238763575480,	-0.881293611409344590,	-0.881269981851879770,	-0.881246350091239860,	-0.881222716127483930,	
+-0.881199079960671480,	-0.881175441590861250,	-0.881151801018112410,	-0.881128158242483920,	-0.881104513264035270,	-0.881080866082825210,	-0.881057216698913130,	-0.881033565112357640,	
+-0.881009911323218600,	-0.880986255331554720,	-0.880962597137424970,	-0.880938936740888970,	-0.880915274142005660,	-0.880891609340834100,	-0.880867942337433260,	-0.880844273131862860,	
+-0.880820601724181750,	-0.880796928114449210,	-0.880773252302724070,	-0.880749574289065970,	-0.880725894073533970,	-0.880702211656187230,	-0.880678527037084820,	-0.880654840216286260,	
+-0.880631151193850600,	-0.880607459969837030,	-0.880583766544304590,	-0.880560070917313030,	-0.880536373088921190,	-0.880512673059188230,	-0.880488970828173900,	-0.880465266395937030,	
+-0.880441559762537020,	-0.880417850928032930,	-0.880394139892484380,	-0.880370426655950560,	-0.880346711218490620,	-0.880322993580163640,	-0.880299273741029450,	-0.880275551701147130,	
+-0.880251827460575840,	-0.880228101019374760,	-0.880204372377603740,	-0.880180641535321720,	-0.880156908492588100,	-0.880133173249461940,	-0.880109435806003200,	-0.880085696162270730,	
+-0.880061954318324120,	-0.880038210274222350,	-0.880014464030025260,	-0.879990715585792120,	-0.879966964941581890,	-0.879943212097454410,	-0.879919457053468970,	-0.879895699809684850,	
+-0.879871940366161340,	-0.879848178722958170,	-0.879824414880134520,	-0.879800648837749890,	-0.879776880595863340,	-0.879753110154534830,	-0.879729337513823540,	-0.879705562673788970,	
+-0.879681785634490180,	-0.879658006395987240,	-0.879634224958339210,	-0.879610441321605710,	-0.879586655485845800,	-0.879562867451119450,	-0.879539077217486030,	-0.879515284785004630,	
+-0.879491490153735290,	-0.879467693323737200,	-0.879443894295069860,	-0.879420093067792560,	-0.879396289641965260,	-0.879372484017647230,	-0.879348676194897980,	-0.879324866173776920,	
+-0.879301053954343770,	-0.879277239536658040,	-0.879253422920779240,	-0.879229604106766650,	-0.879205783094680230,	-0.879181959884579370,	-0.879158134476523690,	-0.879134306870572370,	
+-0.879110477066785580,	-0.879086645065222490,	-0.879062810865942620,	-0.879038974469005920,	-0.879015135874471890,	-0.878991295082399930,	-0.878967452092849430,	-0.878943606905880690,	
+-0.878919759521552770,	-0.878895909939925610,	-0.878872058161058400,	-0.878848204185011190,	-0.878824348011843500,	-0.878800489641615060,	-0.878776629074385030,	-0.878752766310213710,	
+-0.878728901349160480,	-0.878705034191284980,	-0.878681164836646710,	-0.878657293285305620,	-0.878633419537321440,	-0.878609543592753670,	-0.878585665451661830,	-0.878561785114105990,	
+-0.878537902580145750,	-0.878514017849840510,	-0.878490130923250460,	-0.878466241800435090,	-0.878442350481454140,	-0.878418456966367000,	-0.878394561255233960,	-0.878370663348114640,	
+-0.878346763245068550,	-0.878322860946155300,	-0.878298956451435190,	-0.878275049760967710,	-0.878251140874812600,	-0.878227229793029360,	-0.878203316515678290,	-0.878179401042818890,	
+-0.878155483374511100,	-0.878131563510814230,	-0.878107641451788770,	-0.878083717197494230,	-0.878059790747990120,	-0.878035862103336730,	-0.878011931263593780,	-0.877987998228820900,	
+-0.877964062999077920,	-0.877940125574424910,	-0.877916185954921600,	-0.877892244140627830,	-0.877868300131603220,	-0.877844353927908160,	-0.877820405529602170,	-0.877796454936745070,	
+-0.877772502149396730,	-0.877748547167617300,	-0.877724589991466520,	-0.877700630621004340,	-0.877676669056290270,	-0.877652705297384710,	-0.877628739344347490,	-0.877604771197238120,	
+-0.877580800856117120,	-0.877556828321044090,	-0.877532853592079000,	-0.877508876669281460,	-0.877484897552712080,	-0.877460916242430390,	-0.877436932738496430,	-0.877412947040969840,	
+-0.877388959149911220,	-0.877364969065380200,	-0.877340976787436720,	-0.877316982316140530,	-0.877292985651552120,	-0.877268986793731330,	-0.877244985742737900,	-0.877220982498632010,	
+-0.877196977061473700,	-0.877172969431323060,	-0.877148959608239800,	-0.877124947592284210,	-0.877100933383516360,	-0.877076916981996190,	-0.877052898387783440,	-0.877028877600938730,	
+-0.877004854621521780,	-0.876980829449592770,	-0.876956802085211320,	-0.876932772528438260,	-0.876908740779333120,	-0.876884706837956270,	-0.876860670704367350,	-0.876836632378626970,	
+-0.876812591860794970,	-0.876788549150931520,	-0.876764504249096580,	-0.876740457155350540,	-0.876716407869753240,	-0.876692356392365090,	-0.876668302723245700,	-0.876644246862455790,	
+-0.876620188810055320,	-0.876596128566104140,	-0.876572066130662850,	-0.876548001503791420,	-0.876523934685550010,	-0.876499865675998470,	-0.876475794475197520,	-0.876451721083207120,	
+-0.876427645500087340,	-0.876403567725898340,	-0.876379487760700520,	-0.876355405604554050,	-0.876331321257519000,	-0.876307234719655550,	-0.876283145991024190,	-0.876259055071684890,	
+-0.876234961961698030,	-0.876210866661123470,	-0.876186769170022030,	-0.876162669488453670,	-0.876138567616478350,	-0.876114463554156900,	-0.876090357301549270,	-0.876066248858715760,	
+-0.876042138225716300,	-0.876018025402611870,	-0.875993910389462280,	-0.875969793186327950,	-0.875945673793268930,	-0.875921552210345960,	-0.875897428437619090,	-0.875873302475148610,	
+-0.875849174322994690,	-0.875825043981217970,	-0.875800911449878820,	-0.875776776729037200,	-0.875752639818753510,	-0.875728500719088480,	-0.875704359430102160,	-0.875680215951854750,	
+-0.875656070284406950,	-0.875631922427819060,	-0.875607772382151260,	-0.875583620147463940,	-0.875559465723817710,	-0.875535309111272750,	-0.875511150309889690,	-0.875486989319728350,	
+-0.875462826140849910,	-0.875438660773314340,	-0.875414493217182120,	-0.875390323472513440,	-0.875366151539369140,	-0.875341977417809500,	-0.875317801107894920,	-0.875293622609685680,	
+-0.875269441923242520,	-0.875245259048625710,	-0.875221073985895880,	-0.875196886735113090,	-0.875172697296338290,	-0.875148505669631760,	-0.875124311855053680,	-0.875100115852665120,	
+-0.875075917662526240,	-0.875051717284697660,	-0.875027514719239450,	-0.875003309966212670,	-0.874979103025677720,	-0.874954893897694870,	-0.874930682582324650,	-0.874906469079627990,	
+-0.874882253389665080,	-0.874858035512496520,	-0.874833815448182730,	-0.874809593196784530,	-0.874785368758362440,	-0.874761142132976950,	-0.874736913320688260,	-0.874712682321557630,	
+-0.874688449135645250,	-0.874664213763011510,	-0.874639976203717360,	-0.874615736457823420,	-0.874591494525390090,	-0.874567250406477760,	-0.874543004101147600,	-0.874518755609459910,	
+-0.874494504931475400,	-0.874470252067254260,	-0.874445997016857770,	-0.874421739780346320,	-0.874397480357780530,	-0.874373218749220800,	-0.874348954954728200,	-0.874324688974363220,	
+-0.874300420808186600,	-0.874276150456258620,	-0.874251877918640450,	-0.874227603195392720,	-0.874203326286575710,	-0.874179047192250590,	-0.874154765912477760,	-0.874130482447318170,	
+-0.874106196796832100,	-0.874081908961080730,	-0.874057618940124570,	-0.874033326734024450,	-0.874009032342840770,	-0.873984735766634710,	-0.873960437005466770,	-0.873936136059397790,	
+-0.873911832928488170,	-0.873887527612799310,	-0.873863220112391590,	-0.873838910427325750,	-0.873814598557662410,	-0.873790284503462970,	-0.873765968264787700,	-0.873741649841697220,	
+-0.873717329234252940,	-0.873693006442515240,	-0.873668681466545080,	-0.873644354306403080,	-0.873620024962150300,	-0.873595693433847460,	-0.873571359721555530,	-0.873547023825334780,	
+-0.873522685745246830,	-0.873498345481352080,	-0.873474003033711590,	-0.873449658402385750,	-0.873425311587436080,	-0.873400962588923080,	-0.873376611406907590,	-0.873352258041450450,	
+-0.873327902492612940,	-0.873303544760455570,	-0.873279184845039300,	-0.873254822746424960,	-0.873230458464673730,	-0.873206091999846330,	-0.873181723352003610,	-0.873157352521206740,	
+-0.873132979507516340,	-0.873108604310993690,	-0.873084226931699180,	-0.873059847369694440,	-0.873035465625039970,	-0.873011081697796950,	-0.872986695588025880,	-0.872962307295788390,	
+-0.872937916821145080,	-0.872913524164157020,	-0.872889129324884830,	-0.872864732303390120,	-0.872840333099733630,	-0.872815931713976200,	-0.872791528146178770,	-0.872767122396402750,	
+-0.872742714464708860,	-0.872718304351158050,	-0.872693892055811720,	-0.872669477578730590,	-0.872645060919975730,	-0.872620642079608100,	-0.872596221057688970,	-0.872571797854279410,	
+-0.872547372469440250,	-0.872522944903232570,	-0.872498515155717640,	-0.872474083226956410,	-0.872449649117010060,	-0.872425212825939320,	-0.872400774353805700,	-0.872376333700670250,	
+-0.872351890866593930,	-0.872327445851637680,	-0.872302998655862920,	-0.872278549279330790,	-0.872254097722102050,	-0.872229643984238300,	-0.872205188065800390,	-0.872180729966849590,	
+-0.872156269687446640,	-0.872131807227653270,	-0.872107342587530420,	-0.872082875767139170,	-0.872058406766540560,	-0.872033935585796120,	-0.872009462224966890,	-0.871984986684113950,	
+-0.871960508963298350,	-0.871936029062581720,	-0.871911546982024890,	-0.871887062721689370,	-0.871862576281635880,	-0.871838087661926160,	-0.871813596862621280,	-0.871789103883782280,	
+-0.871764608725470460,	-0.871740111387747210,	-0.871715611870673810,	-0.871691110174311110,	-0.871666606298720730,	-0.871642100243963940,	-0.871617592010101920,	-0.871593081597195730,	
+-0.871568569005306990,	-0.871544054234496880,	-0.871519537284826560,	-0.871495018156357220,	-0.871470496849150570,	-0.871445973363267680,	-0.871421447698769840,	-0.871396919855718100,	
+-0.871372389834174420,	-0.871347857634199640,	-0.871323323255855260,	-0.871298786699202350,	-0.871274247964302750,	-0.871249707051217400,	-0.871225163960007710,	-0.871200618690735280,	
+-0.871176071243461190,	-0.871151521618247050,	-0.871126969815153920,	-0.871102415834243530,	-0.871077859675577050,	-0.871053301339215990,	-0.871028740825221410,	-0.871004178133655160,	
+-0.870979613264578620,	-0.870955046218052860,	-0.870930476994139390,	-0.870905905592899930,	-0.870881332014395660,	-0.870856756258688080,	-0.870832178325838480,	-0.870807598215908580,	
+-0.870783015928959680,	-0.870758431465052940,	-0.870733844824250420,	-0.870709256006613310,	-0.870684665012203100,	-0.870660071841080960,	-0.870635476493308860,	-0.870610878968947950,	
+-0.870586279268059980,	-0.870561677390706110,	-0.870537073336948190,	-0.870512467106847600,	-0.870487858700465860,	-0.870463248117864350,	-0.870438635359104820,	-0.870414020424248760,	
+-0.870389403313357570,	-0.870364784026492640,	-0.870340162563716050,	-0.870315538925089060,	-0.870290913110672970,	-0.870266285120529840,	-0.870241654954720940,	-0.870217022613308020,	
+-0.870192388096352240,	-0.870167751403915670,	-0.870143112536059800,	-0.870118471492846160,	-0.870093828274336010,	-0.870069182880591650,	-0.870044535311674250,	-0.870019885567645530,	
+-0.869995233648566790,	-0.869970579554500300,	-0.869945923285507350,	-0.869921264841649560,	-0.869896604222988420,	-0.869871941429586020,	-0.869847276461503730,	-0.869822609318803170,	
+-0.869797940001545980,	-0.869773268509794080,	-0.869748594843609110,	-0.869723919003052350,	-0.869699240988185960,	-0.869674560799071570,	-0.869649878435770800,	-0.869625193898345030,	
+-0.869600507186856550,	-0.869575818301366770,	-0.869551127241937500,	-0.869526434008630060,	-0.869501738601506920,	-0.869477041020629280,	-0.869452341266059080,	-0.869427639337857940,	
+-0.869402935236087800,	-0.869378228960810300,	-0.869353520512087250,	-0.869328809889980290,	-0.869304097094551360,	-0.869279382125862310,	-0.869254664983974520,	-0.869229945668950400,	
+-0.869205224180851220,	-0.869180500519739160,	-0.869155774685675510,	-0.869131046678722760,	-0.869106316498942320,	-0.869081584146396020,	-0.869056849621145600,	-0.869032112923253330,	
+-0.869007374052780720,	-0.868982633009789730,	-0.868957889794341850,	-0.868933144406499600,	-0.868908396846324370,	-0.868883647113878220,	-0.868858895209222660,	-0.868834141132420080,	
+-0.868809384883532210,	-0.868784626462620670,	-0.868759865869747740,	-0.868735103104975150,	-0.868710338168364850,	-0.868685571059978460,	-0.868660801779878260,	-0.868636030328126200,	
+-0.868611256704784010,	-0.868586480909913420,	-0.868561702943576930,	-0.868536922805836050,	-0.868512140496752960,	-0.868487356016389270,	-0.868462569364807480,	-0.868437780542069220,	
+-0.868412989548236540,	-0.868388196383371060,	-0.868363401047535400,	-0.868338603540791290,	-0.868313803863200560,	-0.868289002014825170,	-0.868264197995727400,	-0.868239391805969210,	
+-0.868214583445612310,	-0.868189772914719220,	-0.868164960213351660,	-0.868140145341571690,	-0.868115328299441160,	-0.868090509087022450,	-0.868065687704377530,	-0.868040864151568450,	
+-0.868016038428656930,	-0.867991210535705490,	-0.867966380472776080,	-0.867941548239930750,	-0.867916713837231240,	-0.867891877264740260,	-0.867867038522519450,	-0.867842197610631190,	
+-0.867817354529137110,	-0.867792509278099920,	-0.867767661857581470,	-0.867742812267643600,	-0.867717960508349040,	-0.867693106579759400,	-0.867668250481937080,	-0.867643392214943910,	
+-0.867618531778842520,	-0.867593669173694740,	-0.867568804399562850,	-0.867543937456508710,	-0.867519068344594910,	-0.867494197063883420,	-0.867469323614436520,	-0.867444447996316040,	
+-0.867419570209584710,	-0.867394690254304380,	-0.867369808130537320,	-0.867344923838345610,	-0.867320037377791730,	-0.867295148748937760,	-0.867270257951845760,	-0.867245364986578340,	
+-0.867220469853197450,	-0.867195572551765380,	-0.867170673082344190,	-0.867145771444996490,	-0.867120867639784470,	-0.867095961666770170,	-0.867071053526015770,	-0.867046143217584000,	
+-0.867021230741536920,	-0.866996316097936700,	-0.866971399286845410,	-0.866946480308325880,	-0.866921559162440180,	-0.866896635849250590,	-0.866871710368819160,	-0.866846782721208630,	
+-0.866821852906481280,	-0.866796920924698950,	-0.866771986775924600,	-0.866747050460220270,	-0.866722111977648370,	-0.866697171328270840,	-0.866672228512150640,	-0.866647283529349940,	
+-0.866622336379931020,	-0.866597387063956060,	-0.866572435581487780,	-0.866547481932588460,	-0.866522526117320390,	-0.866497568135745740,	-0.866472607987927470,	-0.866447645673927740,	
+-0.866422681193808830,	-0.866397714547632920,	-0.866372745735463080,	-0.866347774757361360,	-0.866322801613390150,	-0.866297826303611630,	-0.866272848828088860,	-0.866247869186884010,	
+-0.866222887380059260,	-0.866197903407677440,	-0.866172917269800950,	-0.866147928966492060,	-0.866122938497813190,	-0.866097945863827160,	-0.866072951064596360,	-0.866047954100183090,	
+-0.866022954970649740,	-0.865997953676059250,	-0.865972950216473800,	-0.865947944591956010,	-0.865922936802568160,	-0.865897926848373190,	-0.865872914729433400,	-0.865847900445811390,	
+-0.865822883997569240,	-0.865797865384770220,	-0.865772844607476610,	-0.865747821665750480,	-0.865722796559655120,	-0.865697769289252790,	-0.865672739854606020,	-0.865647708255777190,	
+-0.865622674492829260,	-0.865597638565824720,	-0.865572600474825980,	-0.865547560219895540,	-0.865522517801096460,	-0.865497473218491130,	-0.865472426472142060,	-0.865447377562111760,	
+-0.865422326488463180,	-0.865397273251258810,	-0.865372217850561180,	-0.865347160286432880,	-0.865322100558936880,	-0.865297038668135570,	-0.865271974614091550,	-0.865246908396867690,	
+-0.865221840016526690,	-0.865196769473130960,	-0.865171696766743210,	-0.865146621897426420,	-0.865121544865242950,	-0.865096465670255780,	-0.865071384312527060,	-0.865046300792120190,	
+-0.865021215109097570,	-0.864996127263521930,	-0.864971037255455770,	-0.864945945084962140,	-0.864920850752103790,	-0.864895754256943210,	-0.864870655599543010,	-0.864845554779966500,	
+-0.864820451798275940,	-0.864795346654534390,	-0.864770239348804150,	-0.864745129881148600,	-0.864720018251630250,	-0.864694904460311610,	-0.864669788507255950,	-0.864644670392525790,	
+-0.864619550116183970,	-0.864594427678292980,	-0.864569303078916220,	-0.864544176318116200,	-0.864519047395955640,	-0.864493916312497390,	-0.864468783067804500,	-0.864443647661939600,	
+-0.864418510094965730,	-0.864393370366945190,	-0.864368228477941590,	-0.864343084428017330,	-0.864317938217235350,	-0.864292789845658380,	-0.864267639313349600,	-0.864242486620371730,	
+-0.864217331766787390,	-0.864192174752660080,	-0.864167015578052200,	-0.864141854243026810,	-0.864116690747646520,	-0.864091525091974840,	-0.864066357276074280,	-0.864041187300007780,	
+-0.864016015163838190,	-0.863990840867628670,	-0.863965664411442180,	-0.863940485795341440,	-0.863915305019389290,	-0.863890122083649130,	-0.863864936988183670,	-0.863839749733055770,	
+-0.863814560318328370,	-0.863789368744064760,	-0.863764175010327650,	-0.863738979117180010,	-0.863713781064685100,	-0.863688580852905790,	-0.863663378481904890,	-0.863638173951745470,	
+-0.863612967262490700,	-0.863587758414203540,	-0.863562547406947050,	-0.863537334240783940,	-0.863512118915777730,	-0.863486901431991250,	-0.863461681789487460,	-0.863436459988329300,	
+-0.863411236028580160,	-0.863386009910302900,	-0.863360781633560670,	-0.863335551198416320,	-0.863310318604933240,	-0.863285083853174370,	-0.863259846943202570,	-0.863234607875081330,	
+-0.863209366648873600,	-0.863184123264642560,	-0.863158877722450920,	-0.863133630022362320,	-0.863108380164439580,	-0.863083128148745880,	-0.863057873975344170,	-0.863032617644298060,	
+-0.863007359155670390,	-0.862982098509524230,	-0.862956835705922630,	-0.862931570744929210,	-0.862906303626606920,	-0.862881034351018820,	-0.862855762918227850,	-0.862830489328297760,	
+-0.862805213581291470,	-0.862779935677272070,	-0.862754655616302600,	-0.862729373398446800,	-0.862704089023767500,	-0.862678802492327760,	-0.862653513804191310,	-0.862628222959420990,	
+-0.862602929958080190,	-0.862577634800231750,	-0.862552337485939510,	-0.862527038015266420,	-0.862501736388275760,	-0.862476432605030490,	-0.862451126665594310,	-0.862425818570030420,	
+-0.862400508318401980,	-0.862375195910771940,	-0.862349881347204250,	-0.862324564627761750,	-0.862299245752507940,	-0.862273924721505770,	-0.862248601534818970,	-0.862223276192510710,	
+-0.862197948694644060,	-0.862172619041282730,	-0.862147287232489790,	-0.862121953268328740,	-0.862096617148862430,	-0.862071278874154910,	-0.862045938444269240,	-0.862020595859268600,	
+-0.861995251119216380,	-0.861969904224176190,	-0.861944555174211200,	-0.861919203969384930,	-0.861893850609760310,	-0.861868495095401310,	-0.861843137426371090,	-0.861817777602733040,	
+-0.861792415624550330,	-0.861767051491886820,	-0.861741685204805650,	-0.861716316763370130,	-0.861690946167643860,	-0.861665573417690340,	-0.861640198513572870,	-0.861614821455354730,	
+-0.861589442243099750,	-0.861564060876871100,	-0.861538677356732290,	-0.861513291682746600,	-0.861487903854977870,	-0.861462513873489490,	-0.861437121738344750,	-0.861411727449607030,	
+-0.861386331007340080,	-0.861360932411607380,	-0.861335531662472450,	-0.861310128759998350,	-0.861284723704249130,	-0.861259316495288200,	-0.861233907133178930,	-0.861208495617984630,	
+-0.861183081949769450,	-0.861157666128596460,	-0.861132248154529050,	-0.861106828027631280,	-0.861081405747966430,	-0.861055981315598130,	-0.861030554730589650,	-0.861005125993004940,	
+-0.860979695102907390,	-0.860954262060360740,	-0.860928826865428040,	-0.860903389518173580,	-0.860877950018660740,	-0.860852508366952930,	-0.860827064563113640,	-0.860801618607206830,	
+-0.860776170499296110,	-0.860750720239444880,	-0.860725267827716630,	-0.860699813264175440,	-0.860674356548884690,	-0.860648897681907890,	-0.860623436663309090,	-0.860597973493151590,	
+-0.860572508171499220,	-0.860547040698415370,	-0.860521571073964210,	-0.860496099298209030,	-0.860470625371213550,	-0.860445149293041390,	-0.860419671063756500,	-0.860394190683422490,	
+-0.860368708152102980,	-0.860343223469861470,	-0.860317736636762140,	-0.860292247652868490,	-0.860266756518244250,	-0.860241263232952800,	-0.860215767797058440,	-0.860190270210624660,	
+-0.860164770473714980,	-0.860139268586393670,	-0.860113764548724120,	-0.860088258360770190,	-0.860062750022595360,	-0.860037239534263920,	-0.860011726895839380,	-0.859986212107385460,	
+-0.859960695168965890,	-0.859935176080644740,	-0.859909654842485600,	-0.859884131454552340,	-0.859858605916908660,	-0.859833078229618520,	-0.859807548392745760,	-0.859782016406354210,	
+-0.859756482270507270,	-0.859730945985269450,	-0.859705407550704130,	-0.859679866966875150,	-0.859654324233846800,	-0.859628779351682470,	-0.859603232320446330,	-0.859577683140201780,	
+-0.859552131811013310,	-0.859526578332944550,	-0.859501022706059330,	-0.859475464930421260,	-0.859449905006094860,	-0.859424342933143630,	-0.859398778711631510,	-0.859373212341622230,	
+-0.859347643823180190,	-0.859322073156368990,	-0.859296500341252710,	-0.859270925377894850,	-0.859245348266359900,	-0.859219769006711600,	-0.859194187599014000,	-0.859168604043330510,	
+-0.859143018339725840,	-0.859117430488263610,	-0.859091840489007550,	-0.859066248342022170,	-0.859040654047371180,	-0.859015057605118540,	-0.858989459015327970,	-0.858963858278063990,	
+-0.858938255393390420,	-0.858912650361371210,	-0.858887043182070100,	-0.858861433855551580,	-0.858835822381879610,	-0.858810208761118020,	-0.858784592993330540,	-0.858758975078582010,	
+-0.858733355016935930,	-0.858707732808456470,	-0.858682108453207470,	-0.858656481951253440,	-0.858630853302658200,	-0.858605222507485610,	-0.858579589565800160,	-0.858553954477665800,	
+-0.858528317243146490,	-0.858502677862306160,	-0.858477036335209440,	-0.858451392661920050,	-0.858425746842502170,	-0.858400098877019730,	-0.858374448765537260,	-0.858348796508118680,	
+-0.858323142104828070,	-0.858297485555729490,	-0.858271826860887320,	-0.858246166020365630,	-0.858220503034228480,	-0.858194837902539920,	-0.858169170625364350,	-0.858143501202766060,	
+-0.858117829634808650,	-0.858092155921556850,	-0.858066480063074730,	-0.858040802059426460,	-0.858015121910675860,	-0.857989439616887780,	-0.857963755178126060,	-0.857938068594454980,	
+-0.857912379865938380,	-0.857886688992641200,	-0.857860995974627280,	-0.857835300811960800,	-0.857809603504705920,	-0.857783904052927150,	-0.857758202456688770,	-0.857732498716054730,	
+-0.857706792831089300,	-0.857681084801857120,	-0.857655374628422230,	-0.857629662310848810,	-0.857603947849201130,	-0.857578231243543710,	-0.857552512493940820,	-0.857526791600456420,	
+-0.857501068563155110,	-0.857475343382101300,	-0.857449616057359030,	-0.857423886588992490,	-0.857398154977066510,	-0.857372421221645140,	-0.857346685322792680,	-0.857320947280573400,	
+-0.857295207095051800,	-0.857269464766292290,	-0.857243720294359140,	-0.857217973679316400,	-0.857192224921229040,	-0.857166474020161000,	-0.857140720976176770,	-0.857114965789340650,	
+-0.857089208459717260,	-0.857063448987370860,	-0.857037687372365520,	-0.857011923614766300,	-0.856986157714637260,	-0.856960389672042800,	-0.856934619487047190,	-0.856908847159715160,	
+-0.856883072690111100,	-0.856857296078299300,	-0.856831517324344150,	-0.856805736428310260,	-0.856779953390262140,	-0.856754168210264070,	-0.856728380888380440,	-0.856702591424676090,	
+-0.856676799819215180,	-0.856651006072062350,	-0.856625210183281640,	-0.856599412152938220,	-0.856573611981096270,	-0.856547809667820070,	-0.856522005213174680,	-0.856496198617224150,	
+-0.856470389880033100,	-0.856444579001665930,	-0.856418765982187470,	-0.856392950821662110,	-0.856367133520154370,	-0.856341314077728620,	-0.856315492494449830,	-0.856289668770382150,	
+-0.856263842905590430,	-0.856238014900138960,	-0.856212184754092550,	-0.856186352467515730,	-0.856160518040472880,	-0.856134681473028740,	-0.856108842765248010,	-0.856083001917195110,	
+-0.856057158928934530,	-0.856031313800531320,	-0.856005466532049790,	-0.855979617123554640,	-0.855953765575110160,	-0.855927911886781520,	-0.855902056058633120,	-0.855876198090729570,	
+-0.855850337983135260,	-0.855824475735915470,	-0.855798611349134370,	-0.855772744822856700,	-0.855746876157146950,	-0.855721005352070410,	-0.855695132407691130,	-0.855669257324074170,	
+-0.855643380101283820,	-0.855617500739385140,	-0.855591619238442850,	-0.855565735598521450,	-0.855539849819685450,	-0.855513961902000130,	-0.855488071845529880,	-0.855462179650339220,	
+-0.855436285316493290,	-0.855410388844056620,	-0.855384490233094040,	-0.855358589483670050,	-0.855332686595849820,	-0.855306781569697750,	-0.855280874405278890,	-0.855254965102657420,	
+-0.855229053661898940,	-0.855203140083067750,	-0.855177224366228780,	-0.855151306511446440,	-0.855125386518786110,	-0.855099464388312190,	-0.855073540120089740,	-0.855047613714183140,	
+-0.855021685170657800,	-0.854995754489578320,	-0.854969821671009100,	-0.854943886715015530,	-0.854917949621662340,	-0.854892010391014150,	-0.854866069023135890,	-0.854840125518092520,	
+-0.854814179875948990,	-0.854788232096769800,	-0.854762282180620000,	-0.854736330127564670,	-0.854710375937668410,	-0.854684419610996390,	-0.854658461147612900,	-0.854632500547583660,	
+-0.854606537810973070,	-0.854580572937846170,	-0.854554605928267600,	-0.854528636782302730,	-0.854502665500016300,	-0.854476692081472920,	-0.854450716526738100,	-0.854424738835876440,	
+-0.854398759008953010,	-0.854372777046032320,	-0.854346792947180080,	-0.854320806712460690,	-0.854294818341939430,	-0.854268827835680810,	-0.854242835193750440,	-0.854216840416212930,	
+-0.854190843503133230,	-0.854164844454576300,	-0.854138843270607520,	-0.854112839951291500,	-0.854086834496693430,	-0.854060826906878120,	-0.854034817181910990,	-0.854008805321856750,	
+-0.853982791326780450,	-0.853956775196746950,	-0.853930756931821740,	-0.853904736532069770,	-0.853878713997555660,	-0.853852689328344900,	-0.853826662524502570,	-0.853800633586093480,	
+-0.853774602513182600,	-0.853748569305835430,	-0.853722533964116790,	-0.853696496488091870,	-0.853670456877825500,	-0.853644415133383290,	-0.853618371254829870,	-0.853592325242230610,	
+-0.853566277095650360,	-0.853540226815154620,	-0.853514174400808230,	-0.853488119852676470,	-0.853462063170824180,	-0.853436004355316970,	-0.853409943406219780,	-0.853383880323597350,	
+-0.853357815107515630,	-0.853331747758039330,	-0.853305678275233630,	-0.853279606659163470,	-0.853253532909894590,	-0.853227457027491810,	-0.853201379012020420,	-0.853175298863545370,	
+-0.853149216582132270,	-0.853123132167846190,	-0.853097045620752280,	-0.853070956940915390,	-0.853044866128401470,	-0.853018773183275350,	-0.852992678105602310,	-0.852966580895447300,	
+-0.852940481552876160,	-0.852914380077953730,	-0.852888276470745170,	-0.852862170731316090,	-0.852836062859731680,	-0.852809952856056990,	-0.852783840720357290,	-0.852757726452698210,	
+-0.852731610053144800,	-0.852705491521762340,	-0.852679370858615890,	-0.852653248063771300,	-0.852627123137293610,	-0.852600996079248000,	-0.852574866889699750,	-0.852548735568714580,	
+-0.852522602116357550,	-0.852496466532694060,	-0.852470328817789060,	-0.852444188971708590,	-0.852418046994517620,	-0.852391902886281530,	-0.852365756647065380,	-0.852339608276935110,	
+-0.852313457775955910,	-0.852287305144192710,	-0.852261150381711570,	-0.852234993488577450,	-0.852208834464855960,	-0.852182673310612150,	-0.852156510025911750,	-0.852130344610820160,	
+-0.852104177065402760,	-0.852078007389724610,	-0.852051835583851780,	-0.852025661647849210,	-0.851999485581782620,	-0.851973307385716970,	-0.851947127059718420,	-0.851920944603851930,	
+-0.851894760018183090,	-0.851868573302777210,	-0.851842384457700000,	-0.851816193483016960,	-0.851790000378793160,	-0.851763805145094530,	-0.851737607781986480,	-0.851711408289534290,	
+-0.851685206667803450,	-0.851659002916859810,	-0.851632797036768640,	-0.851606589027595450,	-0.851580378889405630,	-0.851554166622265130,	-0.851527952226239120,	-0.851501735701393200,	
+-0.851475517047792780,	-0.851449296265503810,	-0.851423073354591550,	-0.851396848315121630,	-0.851370621147159330,	-0.851344391850770820,	-0.851318160426021150,	-0.851291926872976060,	
+-0.851265691191701260,	-0.851239453382262260,	-0.851213213444724560,	-0.851186971379153670,	-0.851160727185615530,	-0.851134480864175650,	-0.851108232414899520,	-0.851081981837852550,	
+-0.851055729133100900,	-0.851029474300709850,	-0.851003217340745240,	-0.850976958253272240,	-0.850950697038357130,	-0.850924433696065300,	-0.850898168226462360,	-0.850871900629613820,	
+-0.850845630905585630,	-0.850819359054443500,	-0.850793085076252620,	-0.850766808971079370,	-0.850740530738989030,	-0.850714250380047440,	-0.850687967894319890,	-0.850661683281872750,	
+-0.850635396542771320,	-0.850609107677081420,	-0.850582816684868570,	-0.850556523566198820,	-0.850530228321137890,	-0.850503930949751300,	-0.850477631452104640,	-0.850451329828264210,	
+-0.850425026078295400,	-0.850398720202264040,	-0.850372412200235630,	-0.850346102072276340,	-0.850319789818451910,	-0.850293475438828050,	-0.850267158933470160,	-0.850240840302444620,	
+-0.850214519545817060,	-0.850188196663652860,	-0.850161871656018530,	-0.850135544522979460,	-0.850109215264601480,	-0.850082883880950320,	-0.850056550372092050,	-0.850030214738092480,	
+-0.850003876979017470,	-0.849977537094932400,	-0.849951195085903780,	-0.849924850951997100,	-0.849898504693278320,	-0.849872156309813160,	-0.849845805801667690,	-0.849819453168907830,	
+-0.849793098411599220,	-0.849766741529807800,	-0.849740382523599620,	-0.849714021393040530,	-0.849687658138196130,	-0.849661292759132820,	-0.849634925255916330,	-0.849608555628612480,	
+-0.849582183877287010,	-0.849555810002006310,	-0.849529434002836090,	-0.849503055879842320,	-0.849476675633090590,	-0.849450293262647430,	-0.849423908768578650,	-0.849397522150949990,	
+-0.849371133409827280,	-0.849344742545277030,	-0.849318349557364850,	-0.849291954446156900,	-0.849265557211718810,	-0.849239157854116970,	-0.849212756373417310,	-0.849186352769685460,	
+-0.849159947042988030,	-0.849133539193390740,	-0.849107129220959660,	-0.849080717125760390,	-0.849054302907859660,	-0.849027886567323090,	-0.849001468104216840,	-0.848975047518606640,	
+-0.848948624810559100,	-0.848922199980140070,	-0.848895773027415480,	-0.848869343952451170,	-0.848842912755313760,	-0.848816479436069080,	-0.848790043994783310,	-0.848763606431522040,	
+-0.848737166746352020,	-0.848710724939339190,	-0.848684281010549380,	-0.848657834960048760,	-0.848631386787903730,	-0.848604936494180230,	-0.848578484078944210,	-0.848552029542262170,	
+-0.848525572884200050,	-0.848499114104824040,	-0.848472653204199960,	-0.848446190182394530,	-0.848419725039473600,	-0.848393257775503340,	-0.848366788390549800,	-0.848340316884679480,	
+-0.848313843257958330,	-0.848287367510452530,	-0.848260889642228120,	-0.848234409653351730,	-0.848207927543889300,	-0.848181443313907100,	-0.848154956963470990,	-0.848128468492647780,	
+-0.848101977901503430,	-0.848075485190103780,	-0.848048990358515780,	-0.848022493406805240,	-0.847995994335038470,	-0.847969493143281410,	-0.847942989831600990,	-0.847916484400062950,	
+-0.847889976848733800,	-0.847863467177679460,	-0.847836955386966680,	-0.847810441476661510,	-0.847783925446830230,	-0.847757407297538900,	-0.847730887028854350,	-0.847704364640842530,	
+-0.847677840133569730,	-0.847651313507102210,	-0.847624784761506600,	-0.847598253896848950,	-0.847571720913195550,	-0.847545185810613000,	-0.847518648589167590,	-0.847492109248925480,	
+-0.847465567789952860,	-0.847439024212316540,	-0.847412478516082700,	-0.847385930701317620,	-0.847359380768087480,	-0.847332828716459210,	-0.847306274546498760,	-0.847279718258272750,	
+-0.847253159851847130,	-0.847226599327288830,	-0.847200036684664040,	-0.847173471924039250,	-0.847146905045480400,	-0.847120336049054570,	-0.847093764934828020,	-0.847067191702866710,	
+-0.847040616353237690,	-0.847014038886007010,	-0.846987459301241420,	-0.846960877599006840,	-0.846934293779370350,	-0.846907707842398110,	-0.846881119788156500,	-0.846854529616712040,	
+-0.846827937328131330,	-0.846801342922480880,	-0.846774746399826970,	-0.846748147760236100,	-0.846721547003775000,	-0.846694944130510050,	-0.846668339140507760,	-0.846641732033834420,	
+-0.846615122810556840,	-0.846588511470741660,	-0.846561898014455030,	-0.846535282441763460,	-0.846508664752734010,	-0.846482044947432840,	-0.846455423025926250,	-0.846428798988281380,	
+-0.846402172834564540,	-0.846375544564842320,	-0.846348914179180900,	-0.846322281677647560,	-0.846295647060308460,	-0.846269010327230120,	-0.846242371478479140,	-0.846215730514122470,	
+-0.846189087434226490,	-0.846162442238857730,	-0.846135794928082660,	-0.846109145501968250,	-0.846082493960581110,	-0.846055840303987730,	-0.846029184532254400,	-0.846002526645448390,	
+-0.845975866643636110,	-0.845949204526883940,	-0.845922540295258930,	-0.845895873948827590,	-0.845869205487656540,	-0.845842534911812270,	-0.845815862221361960,	-0.845789187416371880,	
+-0.845762510496908870,	-0.845735831463039430,	-0.845709150314830630,	-0.845682467052348840,	-0.845655781675661020,	-0.845629094184833340,	-0.845602404579933300,	-0.845575712861027280,	
+-0.845549019028181800,	-0.845522323081463690,	-0.845495625020940000,	-0.845468924846677240,	-0.845442222558741910,	-0.845415518157201170,	-0.845388811642121760,	-0.845362103013570290,	
+-0.845335392271613360,	-0.845308679416318150,	-0.845281964447751170,	-0.845255247365979350,	-0.845228528171069190,	-0.845201806863087990,	-0.845175083442102130,	-0.845148357908178660,	
+-0.845121630261384090,	-0.845094900501785600,	-0.845068168629449890,	-0.845041434644443810,	-0.845014698546833750,	-0.844987960336687330,	-0.844961220014071030,	-0.844934477579051600,	
+-0.844907733031695750,	-0.844880986372070760,	-0.844854237600243470,	-0.844827486716280160,	-0.844800733720248440,	-0.844773978612214930,	-0.844747221392246450,	-0.844720462060409630,	
+-0.844693700616771960,	-0.844666937061399950,	-0.844640171394360650,	-0.844613403615720790,	-0.844586633725547540,	-0.844559861723907730,	-0.844533087610868320,	-0.844506311386495790,	
+-0.844479533050857880,	-0.844452752604021080,	-0.844425970046052350,	-0.844399185377018520,	-0.844372398596986980,	-0.844345609706024460,	-0.844318818704197670,	-0.844292025591574010,	
+-0.844265230368220320,	-0.844238433034203540,	-0.844211633589590390,	-0.844184832034448500,	-0.844158028368844460,	-0.844131222592845450,	-0.844104414706517980,	-0.844077604709929870,	
+-0.844050792603147640,	-0.844023978386238550,	-0.843997162059269110,	-0.843970343622307160,	-0.843943523075419310,	-0.843916700418672620,	-0.843889875652133910,	-0.843863048775870820,	
+-0.843836219789950050,	-0.843809388694438440,	-0.843782555489403730,	-0.843755720174912520,	-0.843728882751032080,	-0.843702043217829270,	-0.843675201575371460,	-0.843648357823725710,	
+-0.843621511962958980,	-0.843594663993138320,	-0.843567813914331220,	-0.843540961726604640,	-0.843514107430025530,	-0.843487251024661040,	-0.843460392510578580,	-0.843433531887845090,	
+-0.843406669156527840,	-0.843379804316693680,	-0.843352937368410330,	-0.843326068311744500,	-0.843299197146763380,	-0.843272323873534460,	-0.843245448492124680,	-0.843218571002601340,	
+-0.843191691405031250,	-0.843164809699482260,	-0.843137925886021210,	-0.843111039964715370,	-0.843084151935631580,	-0.843057261798837780,	-0.843030369554400800,	-0.843003475202387940,	
+-0.842976578742866020,	-0.842949680175902990,	-0.842922779501565690,	-0.842895876719921610,	-0.842868971831037370,	-0.842842064834981140,	-0.842815155731819640,	-0.842788244521620270,	
+-0.842761331204450070,	-0.842734415780376670,	-0.842707498249467330,	-0.842680578611789020,	-0.842653656867409450,	-0.842626733016395790,	-0.842599807058815320,	-0.842572878994734990,	
+-0.842545948824222850,	-0.842519016547345730,	-0.842492082164171040,	-0.842465145674766050,	-0.842438207079198250,	-0.842411266377535050,	-0.842384323569843610,	-0.842357378656191200,	
+-0.842330431636645560,	-0.842303482511273850,	-0.842276531280143460,	-0.842249577943321450,	-0.842222622500875760,	-0.842195664952873460,	-0.842168705299381810,	-0.842141743540468670,	
+-0.842114779676201080,	-0.842087813706646650,	-0.842060845631872330,	-0.842033875451946190,	-0.842006903166935380,	-0.841979928776907300,	-0.841952952281929120,	-0.841925973682068900,	
+-0.841898992977393680,	-0.841872010167970970,	-0.841845025253867950,	-0.841818038235152670,	-0.841791049111892290,	-0.841764057884154320,	-0.841737064552005920,	-0.841710069115515160,	
+-0.841683071574749090,	-0.841656071929775210,	-0.841629070180661350,	-0.841602066327474920,	-0.841575060370283180,	-0.841548052309153640,	-0.841521042144154130,	-0.841494029875352050,	
+-0.841467015502815000,	-0.841439999026610040,	-0.841412980446805350,	-0.841385959763468190,	-0.841358936976666190,	-0.841331912086466630,	-0.841304885092937440,	-0.841277855996146130,	
+-0.841250824796160090,	-0.841223791493046820,	-0.841196756086874280,	-0.841169718577709840,	-0.841142678965621120,	-0.841115637250675400,	-0.841088593432940960,	-0.841061547512484960,	
+-0.841034499489374810,	-0.841007449363678660,	-0.840980397135463910,	-0.840953342804798280,	-0.840926286371748930,	-0.840899227836384040,	-0.840872167198771230,	-0.840845104458977980,	
+-0.840818039617071690,	-0.840790972673120530,	-0.840763903627191890,	-0.840736832479353600,	-0.840709759229672950,	-0.840682683878218100,	-0.840655606425056550,	-0.840628526870256020,	
+-0.840601445213883910,	-0.840574361456008500,	-0.840547275596697060,	-0.840520187636017320,	-0.840493097574037230,	-0.840466005410824500,	-0.840438911146446750,	-0.840411814780971380,	
+-0.840384716314466760,	-0.840357615747000410,	-0.840330513078639930,	-0.840303408309453050,	-0.840276301439507820,	-0.840249192468871750,	-0.840222081397612790,	-0.840194968225798420,	
+-0.840167852953496830,	-0.840140735580775620,	-0.840113616107702520,	-0.840086494534345140,	-0.840059370860771870,	-0.840032245087050100,	-0.840005117213247440,	-0.839977987239432290,	
+-0.839950855165672140,	-0.839923720992034940,	-0.839896584718588080,	-0.839869446345400060,	-0.839842305872538390,	-0.839815163300071000,	-0.839788018628065400,	-0.839760871856590100,	
+-0.839733722985712470,	-0.839706572015500700,	-0.839679418946022160,	-0.839652263777345250,	-0.839625106509537810,	-0.839597947142667560,	-0.839570785676802210,	-0.839543622112010060,	
+-0.839516456448358930,	-0.839489288685916430,	-0.839462118824750860,	-0.839434946864930140,	-0.839407772806521900,	-0.839380596649594080,	-0.839353418394214960,	-0.839326238040452370,	
+-0.839299055588374140,	-0.839271871038048010,	-0.839244684389542470,	-0.839217495642925250,	-0.839190304798264290,	-0.839163111855627200,	-0.839135916815082710,	-0.839108719676698310,	
+-0.839081520440542180,	-0.839054319106682040,	-0.839027115675186290,	-0.838999910146122850,	-0.838972702519559580,	-0.838945492795564180,	-0.838918280974205510,	-0.838891067055550940,	
+-0.838863851039668540,	-0.838836632926626800,	-0.838809412716493450,	-0.838782190409336550,	-0.838754966005223920,	-0.838727739504224190,	-0.838700510906405070,	-0.838673280211834630,	
+-0.838646047420580800,	-0.838618812532712090,	-0.838591575548296330,	-0.838564336467401690,	-0.838537095290095900,	-0.838509852016447680,	-0.838482606646524740,	-0.838455359180395380,	
+-0.838428109618127190,	-0.838400857959789140,	-0.838373604205448930,	-0.838346348355174410,	-0.838319090409034300,	-0.838291830367096540,	-0.838264568229429070,	-0.838237303996099970,	
+-0.838210037667177940,	-0.838182769242730720,	-0.838155498722826690,	-0.838128226107533570,	-0.838100951396920090,	-0.838073674591054310,	-0.838046395690004390,	-0.838019114693838160,	
+-0.837991831602624360,	-0.837964546416431030,	-0.837937259135326350,	-0.837909969759378260,	-0.837882678288655480,	-0.837855384723225960,	-0.837828089063157870,	-0.837800791308519700,	
+-0.837773491459379520,	-0.837746189515805710,	-0.837718885477866100,	-0.837691579345629540,	-0.837664271119164080,	-0.837636960798537890,	-0.837609648383819130,	-0.837582333875076410,	
+-0.837555017272377910,	-0.837527698575791790,	-0.837500377785386220,	-0.837473054901230030,	-0.837445729923391060,	-0.837418402851937920,	-0.837391073686938440,	-0.837363742428461450,	
+-0.837336409076575250,	-0.837309073631347990,	-0.837281736092847730,	-0.837254396461143410,	-0.837227054736303100,	-0.837199710918394960,	-0.837172365007487710,	-0.837145017003649630,	
+-0.837117666906948890,	-0.837090314717453880,	-0.837062960435233210,	-0.837035604060355260,	-0.837008245592888220,	-0.836980885032900250,	-0.836953522380460390,	-0.836926157635636820,	
+-0.836898790798497720,	-0.836871421869111450,	-0.836844050847546870,	-0.836816677733872140,	-0.836789302528155750,	-0.836761925230465780,	-0.836734545840871370,	-0.836707164359440480,	
+-0.836679780786241500,	-0.836652395121343260,	-0.836625007364814040,	-0.836597617516722350,	-0.836570225577136340,	-0.836542831546125080,	-0.836515435423756730,	-0.836488037210099680,	
+-0.836460636905222430,	-0.836433234509193710,	-0.836405830022081910,	-0.836378423443955630,	-0.836351014774883050,	-0.836323604014933110,	-0.836296191164174090,	-0.836268776222674700,	
+-0.836241359190503130,	-0.836213940067728420,	-0.836186518854418750,	-0.836159095550642610,	-0.836131670156469050,	-0.836104242671966260,	-0.836076813097202830,	-0.836049381432247050,	
+-0.836021947677168200,	-0.835994511832034440,	-0.835967073896914380,	-0.835939633871876420,	-0.835912191756989610,	-0.835884747552322340,	-0.835857301257943110,	-0.835829852873920530,	
+-0.835802402400323440,	-0.835774949837220450,	-0.835747495184679940,	-0.835720038442770540,	-0.835692579611561290,	-0.835665118691120590,	-0.835637655681516820,	-0.835610190582819270,	
+-0.835582723395096090,	-0.835555254118416140,	-0.835527782752847890,	-0.835500309298460310,	-0.835472833755322000,	-0.835445356123501680,	-0.835417876403067640,	-0.835390394594089150,	
+-0.835362910696634710,	-0.835335424710773040,	-0.835307936636572550,	-0.835280446474102380,	-0.835252954223431150,	-0.835225459884627490,	-0.835197963457759980,	-0.835170464942897820,	
+-0.835142964340109480,	-0.835115461649463710,	-0.835087956871029100,	-0.835060450004874830,	-0.835032941051069400,	-0.835005430009681300,	-0.834977916880780050,	-0.834950401664433910,	
+-0.834922884360711710,	-0.834895364969682090,	-0.834867843491414300,	-0.834840319925976960,	-0.834812794273438800,	-0.834785266533868420,	-0.834757736707335110,	-0.834730204793907470,	
+-0.834702670793654230,	-0.834675134706644120,	-0.834647596532946510,	-0.834620056272629810,	-0.834592513925762950,	-0.834564969492414650,	-0.834537422972654100,	-0.834509874366550000,	
+-0.834482323674170970,	-0.834454770895586400,	-0.834427216030864890,	-0.834399659080075300,	-0.834372100043286320,	-0.834344538920567480,	-0.834316975711987150,	-0.834289410417614400,	
+-0.834261843037517940,	-0.834234273571767050,	-0.834206702020430460,	-0.834179128383577220,	-0.834151552661275830,	-0.834123974853595800,	-0.834096394960605950,	-0.834068812982375010,	
+-0.834041228918971810,	-0.834013642770465750,	-0.833986054536925540,	-0.833958464218420130,	-0.833930871815018680,	-0.833903277326790040,	-0.833875680753803250,	-0.833848082096127040,	
+-0.833820481353830800,	-0.833792878526983360,	-0.833765273615653780,	-0.833737666619910670,	-0.833710057539823750,	-0.833682446375461630,	-0.833654833126893480,	-0.833627217794187910,	
+-0.833599600377414540,	-0.833571980876642190,	-0.833544359291939930,	-0.833516735623376470,	-0.833489109871021430,	-0.833461482034943630,	-0.833433852115212150,	-0.833406220111895690,	
+-0.833378586025063980,	-0.833350949854785860,	-0.833323311601130160,	-0.833295671264166260,	-0.833268028843963340,	-0.833240384340590220,	-0.833212737754115970,	-0.833185089084610090,	
+-0.833157438332141510,	-0.833129785496779300,	-0.833102130578592500,	-0.833074473577650520,	-0.833046814494022290,	-0.833019153327777100,	-0.832991490078983880,	-0.832963824747712020,	
+-0.832936157334030700,	-0.832908487838008970,	-0.832880816259715660,	-0.832853142599220720,	-0.832825466856592870,	-0.832797789031901050,	-0.832770109125215100,	-0.832742427136603740,	
+-0.832714743066136460,	-0.832687056913882010,	-0.832659368679910080,	-0.832631678364289860,	-0.832603985967090400,	-0.832576291488380750,	-0.832548594928230630,	-0.832520896286708890,	
+-0.832493195563885010,	-0.832465492759827950,	-0.832437787874607320,	-0.832410080908292270,	-0.832382371860951990,	-0.832354660732655520,	-0.832326947523472690,	-0.832299232233472460,	
+-0.832271514862723880,	-0.832243795411296780,	-0.832216073879260220,	-0.832188350266683470,	-0.832160624573635600,	-0.832132896800186430,	-0.832105166946405020,	-0.832077435012360640,	
+-0.832049700998122480,	-0.832021964903760240,	-0.831994226729343200,	-0.831966486474940430,	-0.831938744140621300,	-0.831910999726455550,	-0.831883253232512330,	-0.831855504658860930,	
+-0.831827754005570630,	-0.831800001272711030,	-0.831772246460351530,	-0.831744489568561170,	-0.831716730597409800,	-0.831688969546966580,	-0.831661206417300900,	-0.831633441208482040,	
+-0.831605673920579820,	-0.831577904553663430,	-0.831550133107802240,	-0.831522359583065530,	-0.831494583979523030,	-0.831466806297244230,	-0.831439026536298310,	-0.831411244696754650,	
+-0.831383460778683080,	-0.831355674782152780,	-0.831327886707233450,	-0.831300096553994060,	-0.831272304322504760,	-0.831244510012834610,	-0.831216713625053230,	-0.831188915159229770,	
+-0.831161114615434290,	-0.831133311993736080,	-0.831105507294204290,	-0.831077700516908990,	-0.831049891661919450,	-0.831022080729305170,	-0.830994267719135430,	-0.830966452631480280,	
+-0.830938635466409000,	-0.830910816223991100,	-0.830882994904295960,	-0.830855171507393630,	-0.830827346033353290,	-0.830799518482244650,	-0.830771688854136880,	-0.830743857149100150,	
+-0.830716023367203740,	-0.830688187508517360,	-0.830660349573110300,	-0.830632509561052500,	-0.830604667472413460,	-0.830576823307262570,	-0.830548977065669770,	-0.830521128747704670,	
+-0.830493278353436670,	-0.830465425882935150,	-0.830437571336270390,	-0.830409714713511770,	-0.830381856014728690,	-0.830353995239990870,	-0.830326132389368250,	-0.830298267462930340,	
+-0.830270400460746740,	-0.830242531382886840,	-0.830214660229420920,	-0.830186787000418260,	-0.830158911695948800,	-0.830131034316081710,	-0.830103154860887260,	-0.830075273330434960,	
+-0.830047389724794190,	-0.830019504044035240,	-0.829991616288227490,	-0.829963726457440760,	-0.829935834551744470,	-0.829907940571208760,	-0.829880044515903250,	-0.829852146385897660,	
+-0.829824246181261380,	-0.829796343902064800,	-0.829768439548377310,	-0.829740533120268740,	-0.829712624617808590,	-0.829684714041067140,	-0.829656801390113880,	-0.829628886665018660,	
+-0.829600969865850970,	-0.829573050992681080,	-0.829545130045578500,	-0.829517207024613180,	-0.829489281929854600,	-0.829461354761373060,	-0.829433425519238040,	-0.829405494203519390,	
+-0.829377560814287040,	-0.829349625351610940,	-0.829321687815560700,	-0.829293748206206050,	-0.829265806523617250,	-0.829237862767863930,	-0.829209916939016020,	-0.829181969037142920,	
+-0.829154019062315230,	-0.829126067014602560,	-0.829098112894074650,	-0.829070156700801200,	-0.829042198434852610,	-0.829014238096298590,	-0.828986275685208880,	-0.828958311201653310,	
+-0.828930344645702140,	-0.828902376017425220,	-0.828874405316892050,	-0.828846432544173120,	-0.828818457699338040,	-0.828790480782456870,	-0.828762501793599230,	-0.828734520732835600,	
+-0.828706537600235720,	-0.828678552395869410,	-0.828650565119806500,	-0.828622575772117510,	-0.828594584352872030,	-0.828566590862140020,	-0.828538595299991300,	-0.828510597666496370,	
+-0.828482597961724960,	-0.828454596185747130,	-0.828426592338632470,	-0.828398586420451500,	-0.828370578431274150,	-0.828342568371170150,	-0.828314556240209890,	-0.828286542038463300,	
+-0.828258525766000340,	-0.828230507422890840,	-0.828202487009205290,	-0.828174464525013530,	-0.828146439970385620,	-0.828118413345391380,	-0.828090384650101320,	-0.828062353884585270,	
+-0.828034321048913390,	-0.828006286143155410,	-0.827978249167382050,	-0.827950210121662920,	-0.827922169006068410,	-0.827894125820668240,	-0.827866080565532900,	-0.827838033240732350,	
+-0.827809983846336530,	-0.827781932382416040,	-0.827753878849040610,	-0.827725823246280520,	-0.827697765574205710,	-0.827669705832886680,	-0.827641644022393370,	-0.827613580142795960,	
+-0.827585514194164370,	-0.827557446176569230,	-0.827529376090080370,	-0.827501303934768170,	-0.827473229710702470,	-0.827445153417953990,	-0.827417075056592570,	-0.827388994626688470,	
+-0.827360912128311640,	-0.827332827561532700,	-0.827304740926421810,	-0.827276652223049020,	-0.827248561451484290,	-0.827220468611798430,	-0.827192373704061510,	-0.827164276728343360,	
+-0.827136177684714700,	-0.827108076573245590,	-0.827079973394006410,	-0.827051868147066880,	-0.827023760832498070,	-0.826995651450369800,	-0.826967540000752450,	-0.826939426483715880,	
+-0.826911310899331120,	-0.826883193247668010,	-0.826855073528796950,	-0.826826951742787970,	-0.826798827889711820,	-0.826770701969638640,	-0.826742573982638620,	-0.826714443928782020,	
+-0.826686311808139560,	-0.826658177620781310,	-0.826630041366777310,	-0.826601903046198520,	-0.826573762659114860,	-0.826545620205596960,	-0.826517475685714650,	-0.826489329099538870,	
+-0.826461180447139900,	-0.826433029728587900,	-0.826404876943953040,	-0.826376722093306260,	-0.826348565176717730,	-0.826320406194257730,	-0.826292245145996530,	-0.826264082032004850,	
+-0.826235916852353090,	-0.826207749607111520,	-0.826179580296350300,	-0.826151408920140270,	-0.826123235478551820,	-0.826095059971655110,	-0.826066882399520860,	-0.826038702762219470,	
+-0.826010521059821310,	-0.825982337292396670,	-0.825954151460016380,	-0.825925963562750720,	-0.825897773600670070,	-0.825869581573844820,	-0.825841387482345920,	-0.825813191326243420,	
+-0.825784993105608050,	-0.825756792820509840,	-0.825728590471019990,	-0.825700386057208640,	-0.825672179579146290,	-0.825643971036903350,	-0.825615760430550630,	-0.825587547760158520,	
+-0.825559333025797540,	-0.825531116227538050,	-0.825502897365450910,	-0.825474676439606590,	-0.825446453450075390,	-0.825418228396928130,	-0.825390001280235430,	-0.825361772100067670,	
+-0.825333540856495350,	-0.825305307549589310,	-0.825277072179420030,	-0.825248834746058040,	-0.825220595249573810,	-0.825192353690038290,	-0.825164110067521880,	-0.825135864382095190,	
+-0.825107616633828590,	-0.825079366822793150,	-0.825051114949059360,	-0.825022861012697730,	-0.824994605013778750,	-0.824966346952373470,	-0.824938086828552410,	-0.824909824642385820,	
+-0.824881560393944890,	-0.824853294083300100,	-0.824825025710522080,	-0.824796755275681190,	-0.824768482778848730,	-0.824740208220094970,	-0.824711931599490740,	-0.824683652917106550,	
+-0.824655372173013320,	-0.824627089367281680,	-0.824598804499982350,	-0.824570517571185820,	-0.824542228580963150,	-0.824513937529384950,	-0.824485644416521830,	-0.824457349242444510,	
+-0.824429052007223940,	-0.824400752710930830,	-0.824372451353635460,	-0.824344147935409330,	-0.824315842456322830,	-0.824287534916446680,	-0.824259225315851380,	-0.824230913654608320,	
+-0.824202599932787990,	-0.824174284150461230,	-0.824145966307698430,	-0.824117646404570970,	-0.824089324441149350,	-0.824061000417504520,	-0.824032674333706860,	-0.824004346189827760,	
+-0.823976015985937840,	-0.823947683722107920,	-0.823919349398408500,	-0.823891013014910970,	-0.823862674571685830,	-0.823834334068803800,	-0.823805991506336150,	-0.823777646884353620,	
+-0.823749300202926920,	-0.823720951462126760,	-0.823692600662024430,	-0.823664247802690540,	-0.823635892884196140,	-0.823607535906611730,	-0.823579176870008700,	-0.823550815774457770,	
+-0.823522452620029770,	-0.823494087406795310,	-0.823465720134826000,	-0.823437350804192340,	-0.823408979414965270,	-0.823380605967215520,	-0.823352230461014580,	-0.823323852896433060,	
+-0.823295473273541800,	-0.823267091592411630,	-0.823238707853114040,	-0.823210322055719650,	-0.823181934200299280,	-0.823153544286924220,	-0.823125152315665410,	-0.823096758286593570,	
+-0.823068362199779750,	-0.823039964055295110,	-0.823011563853210730,	-0.822983161593597300,	-0.822954757276525780,	-0.822926350902067560,	-0.822897942470293580,	-0.822869531981274660,	
+-0.822841119435081650,	-0.822812704831786150,	-0.822784288171458880,	-0.822755869454170790,	-0.822727448679992920,	-0.822699025848996570,	-0.822670600961252660,	-0.822642174016832040,	
+-0.822613745015806200,	-0.822585313958246080,	-0.822556880844222630,	-0.822528445673806670,	-0.822500008447069940,	-0.822471569164083150,	-0.822443127824917460,	-0.822414684429643610,	
+-0.822386238978333410,	-0.822357791471057590,	-0.822329341907887200,	-0.822300890288893300,	-0.822272436614147400,	-0.822243980883720420,	-0.822215523097683420,	-0.822187063256107460,	
+-0.822158601359064050,	-0.822130137406624110,	-0.822101671398858700,	-0.822073203335839220,	-0.822044733217636820,	-0.822016261044322460,	-0.821987786815967290,	-0.821959310532642930,	
+-0.821930832194420310,	-0.821902351801370500,	-0.821873869353564660,	-0.821845384851074390,	-0.821816898293970640,	-0.821788409682324580,	-0.821759919016207260,	-0.821731426295690400,	
+-0.821702931520845060,	-0.821674434691742280,	-0.821645935808453240,	-0.821617434871049660,	-0.821588931879602360,	-0.821560426834182840,	-0.821531919734861950,	-0.821503410581711500,	
+-0.821474899374802560,	-0.821446386114206060,	-0.821417870799993950,	-0.821389353432237180,	-0.821360834011006900,	-0.821332312536374290,	-0.821303789008411280,	-0.821275263427188710,	
+-0.821246735792777960,	-0.821218206105250090,	-0.821189674364677050,	-0.821161140571129770,	-0.821132604724679640,	-0.821104066825397830,	-0.821075526873356050,	-0.821046984868625370,	
+-0.821018440811277280,	-0.820989894701382950,	-0.820961346539013980,	-0.820932796324241760,	-0.820904244057137240,	-0.820875689737772360,	-0.820847133366218170,	-0.820818574942546290,	
+-0.820790014466827640,	-0.820761451939134300,	-0.820732887359537310,	-0.820704320728107950,	-0.820675752044917720,	-0.820647181310038220,	-0.820618608523540850,	-0.820590033685496990,	
+-0.820561456795977700,	-0.820532877855055130,	-0.820504296862800240,	-0.820475713819284750,	-0.820447128724579590,	-0.820418541578756930,	-0.820389952381887940,	-0.820361361134043790,	
+-0.820332767835296410,	-0.820304172485717190,	-0.820275575085377520,	-0.820246975634348670,	-0.820218374132702710,	-0.820189770580510680,	-0.820161164977844300,	-0.820132557324774750,	
+-0.820103947621374060,	-0.820075335867713530,	-0.820046722063864530,	-0.820018106209898570,	-0.819989488305887580,	-0.819960868351902960,	-0.819932246348016090,	-0.819903622294298360,	
+-0.819874996190821830,	-0.819846368037657760,	-0.819817737834877770,	-0.819789105582553250,	-0.819760471280756240,	-0.819731834929557920,	-0.819703196529029900,	-0.819674556079244110,	
+-0.819645913580271830,	-0.819617269032184900,	-0.819588622435054480,	-0.819559973788952730,	-0.819531323093951160,	-0.819502670350121140,	-0.819474015557534300,	-0.819445358716262670,	
+-0.819416699826377550,	-0.819388038887950750,	-0.819359375901053570,	-0.819330710865758260,	-0.819302043782136110,	-0.819273374650258850,	-0.819244703470197950,	-0.819216030242025490,	
+-0.819187354965812960,	-0.819158677641631860,	-0.819129998269554240,	-0.819101316849651710,	-0.819072633381995760,	-0.819043947866658130,	-0.819015260303710750,	-0.818986570693225340,	
+-0.818957879035273400,	-0.818929185329926530,	-0.818900489577257030,	-0.818871791777336160,	-0.818843091930235970,	-0.818814390036027740,	-0.818785686094783750,	-0.818756980106575490,	
+-0.818728272071474920,	-0.818699561989553400,	-0.818670849860883120,	-0.818642135685535790,	-0.818613419463582900,	-0.818584701195096630,	-0.818555980880148580,	-0.818527258518810700,	
+-0.818498534111154360,	-0.818469807657251970,	-0.818441079157175010,	-0.818412348610995430,	-0.818383616018784620,	-0.818354881380615070,	-0.818326144696558400,	-0.818297405966686210,	
+-0.818268665191070330,	-0.818239922369783050,	-0.818211177502895960,	-0.818182430590481010,	-0.818153681632609600,	-0.818124930629354320,	-0.818096177580786680,	-0.818067422486978390,	
+-0.818038665348001740,	-0.818009906163928440,	-0.817981144934830320,	-0.817952381660779220,	-0.817923616341847290,	-0.817894848978106380,	-0.817866079569628310,	-0.817837308116484810,	
+-0.817808534618748360,	-0.817779759076490480,	-0.817750981489783200,	-0.817722201858698260,	-0.817693420183308040,	-0.817664636463684370,	-0.817635850699898970,	-0.817607062892023780,	
+-0.817578273040131090,	-0.817549481144292820,	-0.817520687204580820,	-0.817491891221066800,	-0.817463093193823380,	-0.817434293122922150,	-0.817405491008434960,	-0.817376686850434410,	
+-0.817347880648992000,	-0.817319072404179890,	-0.817290262116069920,	-0.817261449784734580,	-0.817232635410245490,	-0.817203818992674910,	-0.817175000532094460,	-0.817146180028576860,	
+-0.817117357482193720,	-0.817088532893017190,	-0.817059706261119120,	-0.817030877586572000,	-0.817002046869447770,	-0.816973214109818380,	-0.816944379307755650,	-0.816915542463332200,	
+-0.816886703576619970,	-0.816857862647690670,	-0.816829019676617030,	-0.816800174663470770,	-0.816771327608324160,	-0.816742478511248930,	-0.816713627372317790,	-0.816684774191602570,	
+-0.816655918969175440,	-0.816627061705108130,	-0.816598202399473560,	-0.816569341052343470,	-0.816540477663790010,	-0.816511612233885020,	-0.816482744762701330,	-0.816453875250310770,	
+-0.816425003696785500,	-0.816396130102197470,	-0.816367254466619400,	-0.816338376790123220,	-0.816309497072780780,	-0.816280615314664890,	-0.816251731515847510,	-0.816222845676400690,	
+-0.816193957796396590,	-0.816165067875907810,	-0.816136175915006310,	-0.816107281913764470,	-0.816078385872254120,	-0.816049487790548090,	-0.816020587668718320,	-0.815991685506837090,	
+-0.815962781304976350,	-0.815933875063208910,	-0.815904966781606840,	-0.815876056460242300,	-0.815847144099187460,	-0.815818229698514920,	-0.815789313258296840,	-0.815760394778605510,	
+-0.815731474259512870,	-0.815702551701091850,	-0.815673627103414400,	-0.815644700466552690,	-0.815615771790579420,	-0.815586841075566780,	-0.815557908321587030,	-0.815528973528712230,	
+-0.815500036697015210,	-0.815471097826568130,	-0.815442156917443370,	-0.815413213969712890,	-0.815384268983449730,	-0.815355321958725730,	-0.815326372895613600,	-0.815297421794185180,	
+-0.815268468654513520,	-0.815239513476670560,	-0.815210556260728910,	-0.815181597006760630,	-0.815152635714838650,	-0.815123672385035030,	-0.815094707017421930,	-0.815065739612072400,	
+-0.815036770169058510,	-0.815007798688452630,	-0.814978825170327050,	-0.814949849614754700,	-0.814920872021807630,	-0.814891892391558350,	-0.814862910724079240,	-0.814833927019443020,	
+-0.814804941277721960,	-0.814775953498988570,	-0.814746963683315120,	-0.814717971830774430,	-0.814688977941438800,	-0.814659982015380810,	-0.814630984052672540,	-0.814601984053387020,	
+-0.814572982017596650,	-0.814543977945373480,	-0.814514971836790670,	-0.814485963691920390,	-0.814456953510835250,	-0.814427941293607520,	-0.814398927040310030,	-0.814369910751015390,	
+-0.814340892425795880,	-0.814311872064723890,	-0.814282849667872570,	-0.814253825235313980,	-0.814224798767120950,	-0.814195770263365540,	-0.814166739724121010,	-0.814137707149459660,	
+-0.814108672539454070,	-0.814079635894176530,	-0.814050597213700100,	-0.814021556498097270,	-0.813992513747440190,	-0.813963468961802160,	-0.813934422141255440,	-0.813905373285872650,	
+-0.813876322395726160,	-0.813847269470889150,	-0.813818214511433880,	-0.813789157517433190,	-0.813760098488959360,	-0.813731037426085440,	-0.813701974328884030,	-0.813672909197427520,	
+-0.813643842031788630,	-0.813614772832040420,	-0.813585701598255160,	-0.813556628330505680,	-0.813527553028864370,	-0.813498475693404500,	-0.813469396324198350,	-0.813440314921318740,	
+-0.813411231484838180,	-0.813382146014829720,	-0.813353058511365860,	-0.813323968974519080,	-0.813294877404362680,	-0.813265783800969140,	-0.813236688164411080,	-0.813207590494761100,	
+-0.813178490792092370,	-0.813149389056477380,	-0.813120285287988960,	-0.813091179486699510,	-0.813062071652682410,	-0.813032961786010140,	-0.813003849886755450,	-0.812974735954990920,	
+-0.812945619990789740,	-0.812916501994224490,	-0.812887381965368140,	-0.812858259904292950,	-0.812829135811072410,	-0.812800009685778920,	-0.812770881528485310,	-0.812741751339264630,	
+-0.812712619118189710,	-0.812683484865333150,	-0.812654348580767570,	-0.812625210264566470,	-0.812596069916802330,	-0.812566927537548000,	-0.812537783126876080,	-0.812508636684859950,	
+-0.812479488211572340,	-0.812450337707085860,	-0.812421185171473330,	-0.812392030604808140,	-0.812362874007162890,	-0.812333715378610320,	-0.812304554719223360,	-0.812275392029075170,	
+-0.812246227308238590,	-0.812217060556786110,	-0.812187891774791230,	-0.812158720962326660,	-0.812129548119465250,	-0.812100373246279710,	-0.812071196342843530,	-0.812042017409229320,	
+-0.812012836445510140,	-0.811983653451758600,	-0.811954468428048080,	-0.811925281374451520,	-0.811896092291041650,	-0.811866901177891400,	-0.811837708035074050,	-0.811808512862662530,	
+-0.811779315660729580,	-0.811750116429348250,	-0.811720915168591790,	-0.811691711878533060,	-0.811662506559245100,	-0.811633299210800520,	-0.811604089833273030,	-0.811574878426735260,	
+-0.811545664991260130,	-0.811516449526921040,	-0.811487232033790810,	-0.811458012511942490,	-0.811428790961448930,	-0.811399567382383610,	-0.811370341774819370,	-0.811341114138829260,	
+-0.811311884474486210,	-0.811282652781863620,	-0.811253419061034430,	-0.811224183312071580,	-0.811194945535048120,	-0.811165705730037550,	-0.811136463897112690,	-0.811107220036346720,	
+-0.811077974147812460,	-0.811048726231583420,	-0.811019476287732630,	-0.810990224316332940,	-0.810960970317457840,	-0.810931714291180380,	-0.810902456237573620,	-0.810873196156710500,	
+-0.810843934048664620,	-0.810814669913508810,	-0.810785403751316470,	-0.810756135562160310,	-0.810726865346114050,	-0.810697593103250620,	-0.810668318833643210,	-0.810639042537364850,	
+-0.810609764214488940,	-0.810580483865088740,	-0.810551201489237320,	-0.810521917087007710,	-0.810492630658473430,	-0.810463342203707750,	-0.810434051722783270,	-0.810404759215774040,	
+-0.810375464682752900,	-0.810346168123793010,	-0.810316869538967530,	-0.810287568928350080,	-0.810258266292013700,	-0.810228961630031770,	-0.810199654942477030,	-0.810170346229423520,	
+-0.810141035490944070,	-0.810111722727112180,	-0.810082407938000570,	-0.810053091123683180,	-0.810023772284233170,	-0.809994451419723700,	-0.809965128530227840,	-0.809935803615819410,	
+-0.809906476676571450,	-0.809877147712557030,	-0.809847816723849980,	-0.809818483710523450,	-0.809789148672650730,	-0.809759811610304860,	-0.809730472523559670,	-0.809701131412488340,	
+-0.809671788277164240,	-0.809642443117660320,	-0.809613095934050620,	-0.809583746726408090,	-0.809554395494806230,	-0.809525042239318090,	-0.809495686960017720,	-0.809466329656978070,	
+-0.809436970330272510,	-0.809407608979974440,	-0.809378245606157450,	-0.809348880208894950,	-0.809319512788260200,	-0.809290143344326360,	-0.809260771877167500,	-0.809231398386856650,	
+-0.809202022873467100,	-0.809172645337072780,	-0.809143265777746760,	-0.809113884195562630,	-0.809084500590593560,	-0.809055114962913490,	-0.809025727312595590,	-0.808996337639713350,	
+-0.808966945944340040,	-0.808937552226549620,	-0.808908156486415340,	-0.808878758724010720,	-0.808849358939408790,	-0.808819957132683840,	-0.808790553303909030,	-0.808761147453157750,	
+-0.808731739580503370,	-0.808702329686019850,	-0.808672917769780560,	-0.808643503831858680,	-0.808614087872328360,	-0.808584669891262760,	-0.808555249888735620,	-0.808525827864819970,	
+-0.808496403819589980,	-0.808466977753119040,	-0.808437549665480650,	-0.808408119556748180,	-0.808378687426995590,	-0.808349253276296360,	-0.808319817104723890,	-0.808290378912351670,	
+-0.808260938699253860,	-0.808231496465503520,	-0.808202052211174580,	-0.808172605936340220,	-0.808143157641074580,	-0.808113707325451070,	-0.808084254989542950,	-0.808054800633424500,	
+-0.808025344257169100,	-0.807995885860850360,	-0.807966425444541560,	-0.807936963008316970,	-0.807907498552249970,	-0.807878032076414290,	-0.807848563580883190,	-0.807819093065731080,	
+-0.807789620531031090,	-0.807760145976857080,	-0.807730669403282530,	-0.807701190810381500,	-0.807671710198227480,	-0.807642227566894190,	-0.807612742916455020,	-0.807583256246984350,	
+-0.807553767558555460,	-0.807524276851242170,	-0.807494784125117990,	-0.807465289380257080,	-0.807435792616732930,	-0.807406293834619040,	-0.807376793033989680,	-0.807347290214918360,	
+-0.807317785377478780,	-0.807288278521744560,	-0.807258769647789750,	-0.807229258755688180,	-0.807199745845513350,	-0.807170230917338970,	-0.807140713971239210,	-0.807111195007287670,	
+-0.807081674025558190,	-0.807052151026124260,	-0.807022626009060160,	-0.806993098974439490,	-0.806963569922336200,	-0.806934038852823550,	-0.806904505765976170,	-0.806874970661867530,	
+-0.806845433540571140,	-0.806815894402161500,	-0.806786353246712110,	-0.806756810074296780,	-0.806727264884989250,	-0.806697717678863780,	-0.806668168455993980,	-0.806638617216453800,	
+-0.806609063960316730,	-0.806579508687657380,	-0.806549951398549240,	-0.806520392093066140,	-0.806490830771281920,	-0.806461267433270850,	-0.806431702079106530,	-0.806402134708863020,	
+-0.806372565322613920,	-0.806342993920433630,	-0.806313420502395850,	-0.806283845068574310,	-0.806254267619043400,	-0.806224688153876820,	-0.806195106673148420,	-0.806165523176932130,	
+-0.806135937665302230,	-0.806106350138332540,	-0.806076760596096900,	-0.806047169038669130,	-0.806017575466123740,	-0.805987979878534320,	-0.805958382275975050,	-0.805928782658519530,	
+-0.805899181026242360,	-0.805869577379217160,	-0.805839971717517980,	-0.805810364041218750,	-0.805780754350393760,	-0.805751142645116940,	-0.805721528925462000,	-0.805691913191503460,	
+-0.805662295443315140,	-0.805632675680971080,	-0.805603053904545120,	-0.805573430114111750,	-0.805543804309744820,	-0.805514176491518350,	-0.805484546659506200,	-0.805454914813782950,	
+-0.805425280954422340,	-0.805395645081498630,	-0.805366007195085550,	-0.805336367295257590,	-0.805306725382088810,	-0.805277081455653240,	-0.805247435516024730,	-0.805217787563277780,	
+-0.805188137597486420,	-0.805158485618724720,	-0.805128831627066500,	-0.805099175622586480,	-0.805069517605358610,	-0.805039857575456600,	-0.805010195532955160,	-0.804980531477928360,	
+-0.804950865410450130,	-0.804921197330594530,	-0.804891527238436160,	-0.804861855134048950,	-0.804832181017507200,	-0.804802504888884720,	-0.804772826748256230,	-0.804743146595695570,	
+-0.804713464431277110,	-0.804683780255074810,	-0.804654094067163150,	-0.804624405867616410,	-0.804594715656508640,	-0.804565023433913670,	-0.804535329199906560,	-0.804505632954561120,	
+-0.804475934697951310,	-0.804446234430151840,	-0.804416532151236870,	-0.804386827861280570,	-0.804357121560356880,	-0.804327413248540730,	-0.804297702925905970,	-0.804267990592527070,	
+-0.804238276248477880,	-0.804208559893833220,	-0.804178841528667140,	-0.804149121153054040,	-0.804119398767067730,	-0.804089674370783380,	-0.804059947964274710,	-0.804030219547616220,	
+-0.804000489120881840,	-0.803970756684146640,	-0.803941022237484430,	-0.803911285780969490,	-0.803881547314676540,	-0.803851806838679740,	-0.803822064353053370,	-0.803792319857871700,	
+-0.803762573353209440,	-0.803732824839140660,	-0.803703074315739950,	-0.803673321783081150,	-0.803643567241239420,	-0.803613810690288810,	-0.803584052130303590,	-0.803554291561357940,	
+-0.803524528983526890,	-0.803494764396884500,	-0.803464997801505270,	-0.803435229197463130,	-0.803405458584833370,	-0.803375685963689800,	-0.803345911334107150,	-0.803316134696159370,	
+-0.803286356049921490,	-0.803256575395467800,	-0.803226792732872340,	-0.803197008062210170,	-0.803167221383555560,	-0.803137432696982790,	-0.803107642002566240,	-0.803077849300380840,	
+-0.803048054590500770,	-0.803018257873000630,	-0.802988459147954580,	-0.802958658415437570,	-0.802928855675524080,	-0.802899050928288280,	-0.802869244173804670,	-0.802839435412148190,	
+-0.802809624643393120,	-0.802779811867614050,	-0.802749997084885040,	-0.802720180295281470,	-0.802690361498877400,	-0.802660540695747100,	-0.802630717885965740,	-0.802600893069607580,	
+-0.802571066246747230,	-0.802541237417458860,	-0.802511406581817740,	-0.802481573739898150,	-0.802451738891774570,	-0.802421902037521280,	-0.802392063177213680,	-0.802362222310925800,	
+-0.802332379438732370,	-0.802302534560707770,	-0.802272687676927050,	-0.802242838787464720,	-0.802212987892395150,	-0.802183134991792950,	-0.802153280085733170,	-0.802123423174290200,	
+-0.802093564257538310,	-0.802063703335552880,	-0.802033840408408080,	-0.802003975476178740,	-0.801974108538939250,	-0.801944239596764640,	-0.801914368649729540,	-0.801884495697908540,	
+-0.801854620741375920,	-0.801824743780207070,	-0.801794864814476370,	-0.801764983844258540,	-0.801735100869627960,	-0.801705215890659790,	-0.801675328907428650,	-0.801645439920009250,	
+-0.801615548928475970,	-0.801585655932903980,	-0.801555760933368000,	-0.801525863929942290,	-0.801495964922702140,	-0.801466063911722150,	-0.801436160897076920,	-0.801406255878841070,	
+-0.801376348857089860,	-0.801346439831897790,	-0.801316528803339480,	-0.801286615771489740,	-0.801256700736423740,	-0.801226783698215870,	-0.801196864656941070,	-0.801166943612673930,	
+-0.801137020565489630,	-0.801107095515462770,	-0.801077168462668190,	-0.801047239407180480,	-0.801017308349074810,	-0.800987375288426010,	-0.800957440225308680,	-0.800927503159797440,	
+-0.800897564091967880,	-0.800867623021894290,	-0.800837679949651380,	-0.800807734875314540,	-0.800777787798958360,	-0.800747838720657690,	-0.800717887640487240,	-0.800687934558522270,	
+-0.800657979474837520,	-0.800628022389507700,	-0.800598063302607740,	-0.800568102214212820,	-0.800538139124397530,	-0.800508174033236930,	-0.800478206940805740,	-0.800448237847179220,	
+-0.800418266752432110,	-0.800388293656639330,	-0.800358318559875600,	-0.800328341462216320,	-0.800298362363736190,	-0.800268381264509830,	-0.800238398164612840,	-0.800208413064119830,	
+-0.800178425963105840,	-0.800148436861645500,	-0.800118445759814280,	-0.800088452657686910,	-0.800058457555338550,	-0.800028460452843700,	-0.799998461350277970,	-0.799968460247716060,	
+-0.799938457145233040,	-0.799908452042903620,	-0.799878444940803290,	-0.799848435839006890,	-0.799818424737589350,	-0.799788411636625510,	-0.799758396536190960,	-0.799728379436360330,	
+-0.799698360337208540,	-0.799668339238811090,	-0.799638316141242810,	-0.799608291044578760,	-0.799578263948893750,	-0.799548234854263300,	-0.799518203760762210,	-0.799488170668465670,	
+-0.799458135577448380,	-0.799428098487786070,	-0.799398059399553550,	-0.799368018312825780,	-0.799337975227677800,	-0.799307930144185110,	-0.799277883062422530,	-0.799247833982465350,	
+-0.799217782904388270,	-0.799187729828267020,	-0.799157674754176430,	-0.799127617682191650,	-0.799097558612387520,	-0.799067497544839860,	-0.799037434479623390,	-0.799007369416813050,	
+-0.798977302356484560,	-0.798947233298712870,	-0.798917162243573010,	-0.798887089191140040,	-0.798857014141489570,	-0.798826937094696650,	-0.798796858050836330,	-0.798766777009983550,	
+-0.798736693972214250,	-0.798706608937603040,	-0.798676521906225400,	-0.798646432878156180,	-0.798616341853471080,	-0.798586248832245270,	-0.798556153814553690,	-0.798526056800471510,	
+-0.798495957790074540,	-0.798465856783437510,	-0.798435753780635690,	-0.798405648781744800,	-0.798375541786839670,	-0.798345432795995680,	-0.798315321809287880,	-0.798285208826792100,	
+-0.798255093848583290,	-0.798224976874736700,	-0.798194857905327400,	-0.798164736940431220,	-0.798134613980123200,	-0.798104489024478610,	-0.798074362073572630,	-0.798044233127480960,	
+-0.798014102186278660,	-0.797983969250041230,	-0.797953834318843480,	-0.797923697392761480,	-0.797893558471870160,	-0.797863417556244790,	-0.797833274645961100,	-0.797803129741094240,	
+-0.797772982841719490,	-0.797742833947912010,	-0.797712683059747850,	-0.797682530177301840,	-0.797652375300649590,	-0.797622218429866030,	-0.797592059565027320,	-0.797561898706208420,	
+-0.797531735853484690,	-0.797501571006931420,	-0.797471404166624540,	-0.797441235332639110,	-0.797411064505050620,	-0.797380891683934110,	-0.797350716869365650,	-0.797320540061420500,	
+-0.797290361260173610,	-0.797260180465701240,	-0.797229997678078340,	-0.797199812897380400,	-0.797169626123682700,	-0.797139437357061160,	-0.797109246597591080,	-0.797079053845347830,	
+-0.797048859100406790,	-0.797018662362843800,	-0.796988463632734120,	-0.796958262910153260,	-0.796928060195176590,	-0.796897855487879950,	-0.796867648788338710,	-0.796837440096628380,	
+-0.796807229412824110,	-0.796777016737002080,	-0.796746802069237430,	-0.796716585409605880,	-0.796686366758182610,	-0.796656146115043650,	-0.796625923480264290,	-0.796595698853919900,	
+-0.796565472236086420,	-0.796535243626839360,	-0.796505013026254200,	-0.796474780434406230,	-0.796444545851371590,	-0.796414309277225560,	-0.796384070712043760,	-0.796353830155901440,	
+-0.796323587608874890,	-0.796293343071039380,	-0.796263096542470520,	-0.796232848023243680,	-0.796202597513434920,	-0.796172345013119730,	-0.796142090522373610,	-0.796111834041271950,	
+-0.796081575569891120,	-0.796051315108306290,	-0.796021052656592840,	-0.795990788214827050,	-0.795960521783084410,	-0.795930253361440300,	-0.795899982949970440,	-0.795869710548750780,	
+-0.795839436157856910,	-0.795809159777364330,	-0.795778881407348760,	-0.795748601047886140,	-0.795718318699051960,	-0.795688034360922170,	-0.795657748033571920,	-0.795627459717077600,	
+-0.795597169411514590,	-0.795566877116958620,	-0.795536582833485270,	-0.795506286561170730,	-0.795475988300090360,	-0.795445688050319900,	-0.795415385811935380,	-0.795385081585012530,	
+-0.795354775369626840,	-0.795324467165854030,	-0.795294156973770260,	-0.795263844793451140,	-0.795233530624972370,	-0.795203214468409470,	-0.795172896323838920,	-0.795142576191335990,	
+-0.795112254070976740,	-0.795081929962836550,	-0.795051603866991810,	-0.795021275783518000,	-0.794990945712491070,	-0.794960613653986510,	-0.794930279608080600,	-0.794899943574849050,	
+-0.794869605554367700,	-0.794839265546712030,	-0.794808923551958420,	-0.794778579570182500,	-0.794748233601459960,	-0.794717885645866980,	-0.794687535703479390,	-0.794657183774372890,	
+-0.794626829858623210,	-0.794596473956306730,	-0.794566116067499050,	-0.794535756192276010,	-0.794505394330713320,	-0.794475030482887480,	-0.794444664648874090,	-0.794414296828748980,	
+-0.794383927022587870,	-0.794353555230467250,	-0.794323181452462720,	-0.794292805688650240,	-0.794262427939105400,	-0.794232048203904810,	-0.794201666483124180,	-0.794171282776839020,	
+-0.794140897085125920,	-0.794110509408060610,	-0.794080119745719020,	-0.794049728098176870,	-0.794019334465510650,	-0.793988938847796090,	-0.793958541245109230,	-0.793928141657525790,	
+-0.793897740085122150,	-0.793867336527974250,	-0.793836930986157930,	-0.793806523459749000,	-0.793776113948824080,	-0.793745702453458880,	-0.793715288973729450,	-0.793684873509711510,	
+-0.793654456061481660,	-0.793624036629115630,	-0.793593615212689230,	-0.793563191812279190,	-0.793532766427961000,	-0.793502339059811050,	-0.793471909707904820,	-0.793441478372319150,	
+-0.793411045053129870,	-0.793380609750412910,	-0.793350172464244110,	-0.793319733194700280,	-0.793289291941856930,	-0.793258848705790550,	-0.793228403486576640,	-0.793197956284292020,	
+-0.793167507099012510,	-0.793137055930814290,	-0.793106602779773180,	-0.793076147645965680,	-0.793045690529467940,	-0.793015231430355680,	-0.792984770348705630,	-0.792954307284593600,	
+-0.792923842238095870,	-0.792893375209288150,	-0.792862906198247400,	-0.792832435205049310,	-0.792801962229770170,	-0.792771487272485810,	-0.792741010333272930,	-0.792710531412207600,	
+-0.792680050509366070,	-0.792649567624823970,	-0.792619082758658330,	-0.792588595910944880,	-0.792558107081760000,	-0.792527616271179620,	-0.792497123479280360,	-0.792466628706138380,	
+-0.792436131951829830,	-0.792405633216430650,	-0.792375132500017680,	-0.792344629802666840,	-0.792314125124454200,	-0.792283618465456470,	-0.792253109825749700,	-0.792222599205410160,	
+-0.792192086604513900,	-0.792161572023137640,	-0.792131055461357540,	-0.792100536919249750,	-0.792070016396890340,	-0.792039493894356130,	-0.792008969411723160,	-0.791978442949067830,	
+-0.791947914506466180,	-0.791917384083994920,	-0.791886851681730230,	-0.791856317299748370,	-0.791825780938125500,	-0.791795242596938450,	-0.791764702276263280,	-0.791734159976176020,	
+-0.791703615696753740,	-0.791673069438072360,	-0.791642521200208280,	-0.791611970983237660,	-0.791581418787237420,	-0.791550864612283630,	-0.791520308458452670,	-0.791489750325820580,	
+-0.791459190214464540,	-0.791428628124460350,	-0.791398064055884750,	-0.791367498008813560,	-0.791336929983324060,	-0.791306359979492170,	-0.791275787997394290,	-0.791245214037106790,	
+-0.791214638098706510,	-0.791184060182269610,	-0.791153480287872250,	-0.791122898415591580,	-0.791092314565503550,	-0.791061728737684770,	-0.791031140932211390,	-0.791000551149160460,	
+-0.790969959388608030,	-0.790939365650630830,	-0.790908769935305010,	-0.790878172242707400,	-0.790847572572914380,	-0.790816970926002450,	-0.790786367302047880,	-0.790755761701127600,	
+-0.790725154123317900,	-0.790694544568695370,	-0.790663933037336180,	-0.790633319529317370,	-0.790602704044715330,	-0.790572086583606560,	-0.790541467146067210,	-0.790510845732174560,	
+-0.790480222342004660,	-0.790449596975634110,	-0.790418969633139730,	-0.790388340314597930,	-0.790357709020085290,	-0.790327075749678090,	-0.790296440503453490,	-0.790265803281487880,	
+-0.790235164083857630,	-0.790204522910639250,	-0.790173879761909780,	-0.790143234637745720,	-0.790112587538223550,	-0.790081938463419560,	-0.790051287413411020,	-0.790020634388274300,	
+-0.789989979388086020,	-0.789959322412922440,	-0.789928663462860840,	-0.789898002537977590,	-0.789867339638349100,	-0.789836674764052500,	-0.789806007915164310,	-0.789775339091761010,	
+-0.789744668293919090,	-0.789713995521715730,	-0.789683320775227400,	-0.789652644054530840,	-0.789621965359702300,	-0.789591284690819300,	-0.789560602047957970,	-0.789529917431195050,	
+-0.789499230840607140,	-0.789468542276271500,	-0.789437851738264420,	-0.789407159226662710,	-0.789376464741542880,	-0.789345768282982090,	-0.789315069851056930,	-0.789284369445843790,	
+-0.789253667067420060,	-0.789222962715862120,	-0.789192256391246790,	-0.789161548093650470,	-0.789130837823150630,	-0.789100125579823670,	-0.789069411363746420,	-0.789038695174995360,	
+-0.789007977013647780,	-0.788977256879780380,	-0.788946534773469770,	-0.788915810694792550,	-0.788885084643826010,	-0.788854356620646850,	-0.788823626625331790,	-0.788792894657957430,	
+-0.788762160718600950,	-0.788731424807339150,	-0.788700686924248550,	-0.788669947069406520,	-0.788639205242889660,	-0.788608461444774700,	-0.788577715675138350,	-0.788546967934057990,	
+-0.788516218221610110,	-0.788485466537871770,	-0.788454712882919460,	-0.788423957256830680,	-0.788393199659682020,	-0.788362440091550320,	-0.788331678552512290,	-0.788300915042645320,	
+-0.788270149562026010,	-0.788239382110731410,	-0.788208612688838020,	-0.788177841296423430,	-0.788147067933564150,	-0.788116292600337220,	-0.788085515296819360,	-0.788054736023087950,	
+-0.788023954779219720,	-0.787993171565291250,	-0.787962386381380160,	-0.787931599227563170,	-0.787900810103917100,	-0.787870019010518790,	-0.787839225947445710,	-0.787808430914774480,	
+-0.787777633912582260,	-0.787746834940945660,	-0.787716033999942280,	-0.787685231089648720,	-0.787654426210142140,	-0.787623619361499160,	-0.787592810543797480,	-0.787561999757113830,	
+-0.787531187001525020,	-0.787500372277108120,	-0.787469555583940490,	-0.787438736922098980,	-0.787407916291660400,	-0.787377093692702260,	-0.787346269125301370,	-0.787315442589534790,	
+-0.787284614085479340,	-0.787253783613212740,	-0.787222951172811490,	-0.787192116764353080,	-0.787161280387914000,	-0.787130442043571970,	-0.787099601731403810,	-0.787068759451486690,	
+-0.787037915203897430,	-0.787007068988713530,	-0.786976220806012150,	-0.786945370655870110,	-0.786914518538364360,	-0.786883664453572610,	-0.786852808401571680,	-0.786821950382438520,	
+-0.786791090396250610,	-0.786760228443085130,	-0.786729364523019000,	-0.786698498636129170,	-0.786667630782493470,	-0.786636760962188600,	-0.786605889175291840,	-0.786575015421880130,	
+-0.786544139702031080,	-0.786513262015821720,	-0.786482382363329240,	-0.786451500744630550,	-0.786420617159803270,	-0.786389731608924560,	-0.786358844092071460,	-0.786327954609321030,	
+-0.786297063160750880,	-0.786266169746438150,	-0.786235274366460010,	-0.786204377020893410,	-0.786173477709816050,	-0.786142576433305100,	-0.786111673191437380,	-0.786080767984290830,	
+-0.786049860811942280,	-0.786018951674469110,	-0.785988040571948270,	-0.785957127504457560,	-0.785926212472074170,	-0.785895295474875130,	-0.785864376512937610,	-0.785833455586339440,	
+-0.785802532695157650,	-0.785771607839469420,	-0.785740681019352020,	-0.785709752234883150,	-0.785678821486139880,	-0.785647888773199580,	-0.785616954096139190,	-0.785586017455036870,	
+-0.785555078849969330,	-0.785524138281013970,	-0.785493195748248390,	-0.785462251251749950,	-0.785431304791595840,	-0.785400356367863210,	-0.785369405980629880,	-0.785338453629973120,	
+-0.785307499315970210,	-0.785276543038698200,	-0.785245584798235250,	-0.785214624594658180,	-0.785183662428044720,	-0.785152698298471670,	-0.785121732206017220,	-0.785090764150758510,	
+-0.785059794132772830,	-0.785028822152137320,	-0.784997848208930150,	-0.784966872303228260,	-0.784935894435108920,	-0.784904914604650170,	-0.784873932811929190,	-0.784842949057023230,	
+-0.784811963340009690,	-0.784780975660966610,	-0.784749986019970920,	-0.784718994417100360,	-0.784688000852432070,	-0.784657005326043990,	-0.784626007838013400,	-0.784595008388417890,	
+-0.784564006977334530,	-0.784533003604841350,	-0.784501998271015740,	-0.784470990975935090,	-0.784439981719676770,	-0.784408970502318610,	-0.784377957323938220,	-0.784346942184612760,	
+-0.784315925084419830,	-0.784284906023437260,	-0.784253885001742420,	-0.784222862019412600,	-0.784191837076525950,	-0.784160810173159750,	-0.784129781309391370,	-0.784098750485298420,	
+-0.784067717700958730,	-0.784036682956449900,	-0.784005646251849210,	-0.783974607587234250,	-0.783943566962682970,	-0.783912524378272750,	-0.783881479834081300,	-0.783850433330185890,	
+-0.783819384866664580,	-0.783788334443594860,	-0.783757282061054330,	-0.783726227719120260,	-0.783695171417870930,	-0.783664113157383600,	-0.783633052937735890,	-0.783601990759005720,	
+-0.783570926621270480,	-0.783539860524608000,	-0.783508792469095660,	-0.783477722454811510,	-0.783446650481833150,	-0.783415576550238080,	-0.783384500660103790,	-0.783353422811508660,	
+-0.783322343004529850,	-0.783291261239245200,	-0.783260177515732070,	-0.783229091834068860,	-0.783198004194332940,	-0.783166914596601930,	-0.783135823040953420,	-0.783104729527465570,	
+-0.783073634056215990,	-0.783042536627281960,	-0.783011437240741850,	-0.782980335896673150,	-0.782949232595153700,	-0.782918127336260870,	-0.782887020120072940,	-0.782855910946667510,	
+-0.782824799816122300,	-0.782793686728514790,	-0.782762571683923270,	-0.782731454682425440,	-0.782700335724098920,	-0.782669214809021300,	-0.782638091937270960,	-0.782606967108925300,	
+-0.782575840324062360,	-0.782544711582759400,	-0.782513580885095040,	-0.782482448231146650,	-0.782451313620991850,	-0.782420177054709120,	-0.782389038532375960,	-0.782357898054070080,	
+-0.782326755619869310,	-0.782295611229851810,	-0.782264464884095400,	-0.782233316582677810,	-0.782202166325676520,	-0.782171014113170250,	-0.782139859945236380,	-0.782108703821952860,	
+-0.782077545743397270,	-0.782046385709648130,	-0.782015223720783030,	-0.781984059776879900,	-0.781952893878016250,	-0.781921726024270790,	-0.781890556215720900,	-0.781859384452444630,	
+-0.781828210734519690,	-0.781797035062024470,	-0.781765857435036570,	-0.781734677853633820,	-0.781703496317894710,	-0.781672312827896840,	-0.781641127383718160,	-0.781609939985436370,	
+-0.781578750633129980,	-0.781547559326876810,	-0.781516366066754680,	-0.781485170852841300,	-0.781453973685215300,	-0.781422774563954480,	-0.781391573489136570,	-0.781360370460839610,	
+-0.781329165479141880,	-0.781297958544121320,	-0.781266749655855740,	-0.781235538814423090,	-0.781204326019901860,	-0.781173111272369880,	-0.781141894571904750,	-0.781110675918585180,	
+-0.781079455312488900,	-0.781048232753694060,	-0.781017008242278380,	-0.780985781778320340,	-0.780954553361897900,	-0.780923322993089090,	-0.780892090671971740,	-0.780860856398624350,	
+-0.780829620173124850,	-0.780798381995551290,	-0.780767141865981510,	-0.780735899784494200,	-0.780704655751167100,	-0.780673409766078350,	-0.780642161829305790,	-0.780610911940928130,	
+-0.780579660101023200,	-0.780548406309668820,	-0.780517150566943710,	-0.780485892872925690,	-0.780454633227692930,	-0.780423371631323360,	-0.780392108083895700,	-0.780360842585487660,	
+-0.780329575136177510,	-0.780298305736043200,	-0.780267034385163430,	-0.780235761083616030,	-0.780204485831479280,	-0.780173208628830990,	-0.780141929475749900,	-0.780110648372314030,	
+-0.780079365318601560,	-0.780048080314690420,	-0.780016793360659320,	-0.779985504456586210,	-0.779954213602549460,	-0.779922920798626800,	-0.779891626044897150,	-0.779860329341438340,	
+-0.779829030688328540,	-0.779797730085646460,	-0.779766427533469920,	-0.779735123031877420,	-0.779703816580946780,	-0.779672508180756950,	-0.779641197831385860,	-0.779609885532911660,	
+-0.779578571285412520,	-0.779547255088967270,	-0.779515936943653840,	-0.779484616849550620,	-0.779453294806735530,	-0.779421970815287410,	-0.779390644875284530,	-0.779359316986804940,	
+-0.779327987149926790,	-0.779296655364728920,	-0.779265321631289480,	-0.779233985949686400,	-0.779202648319998640,	-0.779171308742304340,	-0.779139967216681660,	-0.779108623743208880,	
+-0.779077278321964720,	-0.779045930953027430,	-0.779014581636475300,	-0.778983230372386480,	-0.778951877160839800,	-0.778920522001913420,	-0.778889164895685830,	-0.778857805842234960,	
+-0.778826444841639880,	-0.778795081893978610,	-0.778763716999329780,	-0.778732350157771310,	-0.778700981369382150,	-0.778669610634240670,	-0.778638237952424930,	-0.778606863324013740,	
+-0.778575486749085390,	-0.778544108227718470,	-0.778512727759990810,	-0.778481345345981790,	-0.778449960985769240,	-0.778418574679431870,	-0.778387186427047850,	-0.778355796228696000,	
+-0.778324404084454800,	-0.778293009994402540,	-0.778261613958617480,	-0.778230215977178560,	-0.778198816050164280,	-0.778167414177652890,	-0.778136010359722570,	-0.778104604596452700,	
+-0.778073196887921200,	-0.778041787234206470,	-0.778010375635387440,	-0.777978962091542600,	-0.777947546602750340,	-0.777916129169088920,	-0.777884709790637400,	-0.777853288467474150,	
+-0.777821865199677660,	-0.777790439987326330,	-0.777759012830499090,	-0.777727583729274310,	-0.777696152683730600,	-0.777664719693946240,	-0.777633284760000270,	-0.777601847881971180,	
+-0.777570409059937460,	-0.777538968293977390,	-0.777507525584170240,	-0.777476080930594280,	-0.777444634333328110,	-0.777413185792450000,	-0.777381735308039220,	-0.777350282880174160,	
+-0.777318828508933190,	-0.777287372194395250,	-0.777255913936638950,	-0.777224453735742890,	-0.777192991591785450,	-0.777161527504845790,	-0.777130061475002300,	-0.777098593502333570,	
+-0.777067123586918210,	-0.777035651728835260,	-0.777004177928163120,	-0.776972702184980710,	-0.776941224499366090,	-0.776909744871398740,	-0.776878263301157060,	-0.776846779788719740,	
+-0.776815294334165190,	-0.776783806937572650,	-0.776752317599020530,	-0.776720826318587410,	-0.776689333096352460,	-0.776657837932394290,	-0.776626340826791380,	-0.776594841779622460,	
+-0.776563340790966670,	-0.776531837860902520,	-0.776500332989508710,	-0.776468826176863970,	-0.776437317423047220,	-0.776405806728137300,	-0.776374294092212920,	-0.776342779515352470,	
+-0.776311262997635310,	-0.776279744539140060,	-0.776248224139945320,	-0.776216701800129920,	-0.776185177519772900,	-0.776153651298952970,	-0.776122123137748640,	-0.776090593036239400,	
+-0.776059060994503500,	-0.776027527012620010,	-0.775995991090667530,	-0.775964453228725200,	-0.775932913426871760,	-0.775901371685186140,	-0.775869828003746710,	-0.775838282382632970,	
+-0.775806734821923640,	-0.775775185321697420,	-0.775743633882032930,	-0.775712080503009660,	-0.775680525184706200,	-0.775648967927201390,	-0.775617408730573940,	-0.775585847594903120,	
+-0.775554284520267870,	-0.775522719506746780,	-0.775491152554418580,	-0.775459583663362870,	-0.775428012833658140,	-0.775396440065383220,	-0.775364865358617370,	-0.775333288713439320,	
+-0.775301710129928210,	-0.775270129608162440,	-0.775238547148221600,	-0.775206962750184410,	-0.775175376414129810,	-0.775143788140136510,	-0.775112197928284010,	-0.775080605778651010,	
+-0.775049011691316570,	-0.775017415666359180,	-0.774985817703858660,	-0.774954217803893510,	-0.774922615966542880,	-0.774891012191885390,	-0.774859406480000620,	-0.774827798830967420,	
+-0.774796189244864380,	-0.774764577721771210,	-0.774732964261766520,	-0.774701348864929470,	-0.774669731531338780,	-0.774638112261073930,	-0.774606491054213860,	-0.774574867910837630,	
+-0.774543242831023940,	-0.774511615814852390,	-0.774479986862401710,	-0.774448355973751170,	-0.774416723148979470,	-0.774385088388166220,	-0.774353451691390250,	-0.774321813058730600,	
+-0.774290172490266220,	-0.774258529986076690,	-0.774226885546240750,	-0.774195239170837320,	-0.774163590859946240,	-0.774131940613645990,	-0.774100288432015950,	-0.774068634315134950,	
+-0.774036978263082600,	-0.774005320275937820,	-0.773973660353779680,	-0.773941998496687210,	-0.773910334704740020,	-0.773878668978016940,	-0.773847001316597230,	-0.773815331720559610,	
+-0.773783660189984120,	-0.773751986724949380,	-0.773720311325534650,	-0.773688633991818970,	-0.773656954723881850,	-0.773625273521802440,	-0.773593590385659560,	-0.773561905315532930,	
+-0.773530218311501590,	-0.773498529373644720,	-0.773466838502041230,	-0.773435145696770850,	-0.773403450957912630,	-0.773371754285545940,	-0.773340055679749390,	-0.773308355140603030,	
+-0.773276652668185790,	-0.773244948262577060,	-0.773213241923855540,	-0.773181533652101180,	-0.773149823447393030,	-0.773118111309810230,	-0.773086397239431950,	-0.773054681236338030,	
+-0.773022963300607380,	-0.772991243432319170,	-0.772959521631552680,	-0.772927797898387730,	-0.772896072232903240,	-0.772864344635178280,	-0.772832615105292660,	-0.772800883643325550,	
+-0.772769150249356330,	-0.772737414923463820,	-0.772705677665728170,	-0.772673938476228230,	-0.772642197355043470,	-0.772610454302252950,	-0.772578709317936600,	-0.772546962402173460,	
+-0.772515213555042930,	-0.772483462776624050,	-0.772451710066996760,	-0.772419955426240310,	-0.772388198854433880,	-0.772356440351656740,	-0.772324679917988700,	-0.772292917553508930,	
+-0.772261153258296700,	-0.772229387032431820,	-0.772197618875993470,	-0.772165848789061030,	-0.772134076771713750,	-0.772102302824031580,	-0.772070526946093570,	-0.772038749137979320,	
+-0.772006969399767870,	-0.771975187731539280,	-0.771943404133372810,	-0.771911618605347740,	-0.771879831147543330,	-0.771848041760039630,	-0.771816250442915910,	-0.771784457196251440,	
+-0.771752662020125600,	-0.771720864914618440,	-0.771689065879809010,	-0.771657264915776690,	-0.771625462022601520,	-0.771593657200362770,	-0.771561850449139720,	-0.771530041769011850,	
+-0.771498231160059110,	-0.771466418622360760,	-0.771434604155996410,	-0.771402787761045320,	-0.771370969437587430,	-0.771339149185702230,	-0.771307327005469110,	-0.771275502896967450,	
+-0.771243676860277170,	-0.771211848895477780,	-0.771180019002648760,	-0.771148187181869500,	-0.771116353433219940,	-0.771084517756779550,	-0.771052680152627850,	-0.771020840620844190,	
+-0.770988999161508650,	-0.770957155774700700,	-0.770925310460499500,	-0.770893463218985330,	-0.770861614050237560,	-0.770829762954335700,	-0.770797909931359100,	-0.770766054981388060,	
+-0.770734198104501940,	-0.770702339300780250,	-0.770670478570302460,	-0.770638615913148750,	-0.770606751329398490,	-0.770574884819131390,	-0.770543016382426730,	-0.770511146019364880,	
+-0.770479273730025120,	-0.770447399514487150,	-0.770415523372830480,	-0.770383645305135260,	-0.770351765311480970,	-0.770319883391946900,	-0.770287999546613420,	-0.770256113775559910,	
+-0.770224226078866200,	-0.770192336456611560,	-0.770160444908876470,	-0.770128551435740220,	-0.770096656037282500,	-0.770064758713582930,	-0.770032859464721780,	-0.770000958290778410,	
+-0.769969055191832670,	-0.769937150167964050,	-0.769905243219252800,	-0.769873334345778430,	-0.769841423547620750,	-0.769809510824859270,	-0.769777596177574240,	-0.769745679605845280,	
+-0.769713761109751760,	-0.769681840689374170,	-0.769649918344791910,	-0.769617994076085000,	-0.769586067883332610,	-0.769554139766615460,	-0.769522209726013040,	-0.769490277761604950,	
+-0.769458343873470900,	-0.769426408061691380,	-0.769394470326345780,	-0.769362530667513920,	-0.769330589085275520,	-0.769298645579711060,	-0.769266700150899820,	-0.769234752798921840,	
+-0.769202803523856730,	-0.769170852325784970,	-0.769138899204785950,	-0.769106944160939500,	-0.769074987194325880,	-0.769043028305024910,	-0.769011067493116210,	-0.768979104758679700,	
+-0.768947140101795660,	-0.768915173522543790,	-0.768883205021003930,	-0.768851234597255790,	-0.768819262251379860,	-0.768787287983455860,	-0.768755311793563490,	-0.768723333681782690,	
+-0.768691353648193740,	-0.768659371692876460,	-0.768627387815910780,	-0.768595402017376310,	-0.768563414297353640,	-0.768531424655922390,	-0.768499433093162600,	-0.768467439609153870,	
+-0.768435444203976910,	-0.768403446877711340,	-0.768371447630436850,	-0.768339446462234070,	-0.768307443373182570,	-0.768275438363362540,	-0.768243431432853670,	-0.768211422581736470,	
+-0.768179411810090640,	-0.768147399117996340,	-0.768115384505533290,	-0.768083367972781980,	-0.768051349519822350,	-0.768019329146734320,	-0.767987306853597620,	-0.767955282640493060,	
+-0.767923256507500150,	-0.767891228454699150,	-0.767859198482169880,	-0.767827166589992840,	-0.767795132778247850,	-0.767763097047014730,	-0.767731059396374200,	-0.767699019826405980,	
+-0.767666978337190220,	-0.767634934928806740,	-0.767602889601336270,	-0.767570842354858510,	-0.767538793189453620,	-0.767506742105201530,	-0.767474689102182860,	-0.767442634180477420,	
+-0.767410577340165490,	-0.767378518581326660,	-0.767346457904041990,	-0.767314395308391070,	-0.767282330794454290,	-0.767250264362311250,	-0.767218196012042890,	-0.767186125743729020,	
+-0.767154053557449590,	-0.767121979453285310,	-0.767089903431316110,	-0.767057825491622050,	-0.767025745634283270,	-0.766993663859380280,	-0.766961580166993230,	-0.766929494557202160,	
+-0.766897407030087130,	-0.766865317585728850,	-0.766833226224207240,	-0.766801132945602590,	-0.766769037749994830,	-0.766736940637464780,	-0.766704841608092380,	-0.766672740661957790,	
+-0.766640637799141160,	-0.766608533019723200,	-0.766576426323783870,	-0.766544317711403520,	-0.766512207182662110,	-0.766480094737640340,	-0.766447980376418480,	-0.766415864099076360,	
+-0.766383745905694800,	-0.766351625796353850,	-0.766319503771133890,	-0.766287379830114970,	-0.766255253973377790,	-0.766223126201002410,	-0.766190996513069320,	-0.766158864909658450,	
+-0.766126731390850630,	-0.766094595956726130,	-0.766062458607364990,	-0.766030319342847490,	-0.765998178163254440,	-0.765966035068666010,	-0.765933890059162460,	-0.765901743134823840,	
+-0.765869594295731200,	-0.765837443541964590,	-0.765805290873604050,	-0.765773136290730630,	-0.765740979793424260,	-0.765708821381765550,	-0.765676661055834430,	-0.765644498815711950,	
+-0.765612334661478270,	-0.765580168593213760,	-0.765548000610998480,	-0.765515830714913470,	-0.765483658905039000,	-0.765451485181455340,	-0.765419309544242640,	-0.765387131993481960,	
+-0.765354952529253450,	-0.765322771151637490,	-0.765290587860714470,	-0.765258402656565200,	-0.765226215539269840,	-0.765194026508908780,	-0.765161835565562940,	-0.765129642709312390,	
+-0.765097447940237820,	-0.765065251258419290,	-0.765033052663937950,	-0.765000852156874080,	-0.764968649737307940,	-0.764936445405319910,	-0.764904239160991150,	-0.764872031004401710,	
+-0.764839820935632190,	-0.764807608954762850,	-0.764775395061874750,	-0.764743179257048160,	-0.764710961540363670,	-0.764678741911901440,	-0.764646520371742630,	-0.764614296919967630,	
+-0.764582071556656470,	-0.764549844281890540,	-0.764517615095749890,	-0.764485383998315230,	-0.764453150989666930,	-0.764420916069885940,	-0.764388679239052630,	-0.764356440497247710,	
+-0.764324199844551360,	-0.764291957281044710,	-0.764259712806808270,	-0.764227466421922520,	-0.764195218126467850,	-0.764162967920525400,	-0.764130715804175580,	-0.764098461777498850,	
+-0.764066205840575720,	-0.764033947993487450,	-0.764001688236314200,	-0.763969426569136800,	-0.763937162992035510,	-0.763904897505091610,	-0.763872630108385580,	-0.763840360801997580,	
+-0.763808089586008990,	-0.763775816460500080,	-0.763743541425551790,	-0.763711264481244270,	-0.763678985627658790,	-0.763646704864875960,	-0.763614422192976370,	-0.763582137612040410,	
+-0.763549851122149350,	-0.763517562723383780,	-0.763485272415824200,	-0.763452980199551210,	-0.763420686074645970,	-0.763388390041189080,	-0.763356092099261250,	-0.763323792248942870,	
+-0.763291490490315310,	-0.763259186823458950,	-0.763226881248454390,	-0.763194573765382910,	-0.763162264374325110,	-0.763129953075361470,	-0.763097639868572710,	-0.763065324754040210,	
+-0.763033007731844350,	-0.763000688802065950,	-0.762968367964785620,	-0.762936045220084620,	-0.762903720568043450,	-0.762871394008743040,	-0.762839065542263770,	-0.762806735168687240,	
+-0.762774402888093840,	-0.762742068700564380,	-0.762709732606179470,	-0.762677394605020600,	-0.762645054697168150,	-0.762612712882702830,	-0.762580369161705910,	-0.762548023534258210,	
+-0.762515676000440350,	-0.762483326560333130,	-0.762450975214017830,	-0.762418621961575060,	-0.762386266803085740,	-0.762353909738630490,	-0.762321550768290670,	-0.762289189892147110,	
+-0.762256827110280530,	-0.762224462422771530,	-0.762192095829701710,	-0.762159727331151670,	-0.762127356927202240,	-0.762094984617934120,	-0.762062610403428930,	-0.762030234283767150,	
+-0.761997856259029830,	-0.761965476329297560,	-0.761933094494651850,	-0.761900710755173520,	-0.761868325110943050,	-0.761835937562042040,	-0.761803548108551110,	-0.761771156750551400,	
+-0.761738763488123530,	-0.761706368321349080,	-0.761673971250308560,	-0.761641572275083220,	-0.761609171395753680,	-0.761576768612401420,	-0.761544363925107270,	-0.761511957333952270,	
+-0.761479548839017030,	-0.761447138440383140,	-0.761414726138131550,	-0.761382311932343070,	-0.761349895823098530,	-0.761317477810479540,	-0.761285057894566800,	-0.761252636075441250,	
+-0.761220212353184270,	-0.761187786727876790,	-0.761155359199599870,	-0.761122929768434320,	-0.761090498434461640,	-0.761058065197762760,	-0.761025630058418720,	-0.760993193016510250,	
+-0.760960754072119160,	-0.760928313225326170,	-0.760895870476212430,	-0.760863425824858660,	-0.760830979271346690,	-0.760798530815757210,	-0.760766080458171400,	-0.760733628198670080,	
+-0.760701174037335060,	-0.760668717974247070,	-0.760636260009487030,	-0.760603800143136550,	-0.760571338375276570,	-0.760538874705988350,	-0.760506409135352610,	-0.760473941663451060,	
+-0.760441472290364740,	-0.760409001016174700,	-0.760376527840961880,	-0.760344052764807990,	-0.760311575787794070,	-0.760279096910001170,	-0.760246616131510230,	-0.760214133452402960,	
+-0.760181648872760410,	-0.760149162392663840,	-0.760116674012193960,	-0.760084183731432720,	-0.760051691550461040,	-0.760019197469359750,	-0.759986701488210900,	-0.759954203607095200,	
+-0.759921703826093920,	-0.759889202145288210,	-0.759856698564759790,	-0.759824193084589590,	-0.759791685704858890,	-0.759759176425648720,	-0.759726665247040910,	-0.759694152169116400,	
+-0.759661637191956450,	-0.759629120315642230,	-0.759596601540255430,	-0.759564080865877230,	-0.759531558292588670,	-0.759499033820471010,	-0.759466507449606090,	-0.759433979180074940,	
+-0.759401449011958720,	-0.759368916945338590,	-0.759336382980296490,	-0.759303847116913460,	-0.759271309355270540,	-0.759238769695449680,	-0.759206228137531800,	-0.759173684681598290,	
+-0.759141139327730310,	-0.759108592076009890,	-0.759076042926517980,	-0.759043491879335840,	-0.759010938934544740,	-0.758978384092226620,	-0.758945827352462520,	-0.758913268715333820,	
+-0.758880708180921680,	-0.758848145749308150,	-0.758815581420574150,	-0.758783015194801180,	-0.758750447072070400,	-0.758717877052463850,	-0.758685305136062470,	-0.758652731322947640,	
+-0.758620155613201290,	-0.758587578006904570,	-0.758554998504138880,	-0.758522417104985360,	-0.758489833809526060,	-0.758457248617842250,	-0.758424661530015310,	-0.758392072546126390,	
+-0.758359481666257660,	-0.758326888890490160,	-0.758294294218905480,	-0.758261697651584690,	-0.758229099188610030,	-0.758196498830062570,	-0.758163896576023900,	-0.758131292426575180,	
+-0.758098686381798450,	-0.758066078441775200,	-0.758033468606586270,	-0.758000856876314020,	-0.757968243251039730,	-0.757935627730844660,	-0.757903010315810310,	-0.757870391006018720,	
+-0.757837769801551260,	-0.757805146702489220,	-0.757772521708914070,	-0.757739894820907980,	-0.757707266038552100,	-0.757674635361928030,	-0.757642002791117040,	-0.757609368326201400,	
+-0.757576731967262380,	-0.757544093714381470,	-0.757511453567640050,	-0.757478811527120270,	-0.757446167592903400,	-0.757413521765071260,	-0.757380874043704910,	-0.757348224428886720,	
+-0.757315572920697950,	-0.757282919519220000,	-0.757250264224535010,	-0.757217607036724360,	-0.757184947955869660,	-0.757152286982052390,	-0.757119624115354610,	-0.757086959355857790,	
+-0.757054292703643550,	-0.757021624158793260,	-0.756988953721389300,	-0.756956281391512940,	-0.756923607169245780,	-0.756890931054669420,	-0.756858253047866030,	-0.756825573148916850,	
+-0.756792891357903950,	-0.756760207674908370,	-0.756727522100012600,	-0.756694834633298120,	-0.756662145274846100,	-0.756629454024739130,	-0.756596760883058490,	-0.756564065849886000,	
+-0.756531368925303040,	-0.756498670109391870,	-0.756465969402234100,	-0.756433266803911320,	-0.756400562314505140,	-0.756367855934097830,	-0.756335147662770990,	-0.756302437500606110,	
+-0.756269725447684890,	-0.756237011504089730,	-0.756204295669901990,	-0.756171577945203510,	-0.756138858330075880,	-0.756106136824601260,	-0.756073413428861360,	-0.756040688142937570,	
+-0.756007960966912470,	-0.755975231900867350,	-0.755942500944884130,	-0.755909768099044530,	-0.755877033363430710,	-0.755844296738124250,	-0.755811558223207220,	-0.755778817818760880,	
+-0.755746075524867830,	-0.755713331341609560,	-0.755680585269067890,	-0.755647837307324540,	-0.755615087456461890,	-0.755582335716561530,	-0.755549582087705400,	-0.755516826569974880,	
+-0.755484069163452680,	-0.755451309868220290,	-0.755418548684359310,	-0.755385785611952240,	-0.755353020651080680,	-0.755320253801826660,	-0.755287485064271680,	-0.755254714438498230,	
+-0.755221941924588020,	-0.755189167522622990,	-0.755156391232684740,	-0.755123613054855760,	-0.755090832989217860,	-0.755058051035852770,	-0.755025267194842310,	-0.754992481466268960,	
+-0.754959693850214440,	-0.754926904346760570,	-0.754894112955989180,	-0.754861319677982980,	-0.754828524512823230,	-0.754795727460592310,	-0.754762928521371830,	-0.754730127695244170,	
+-0.754697324982291360,	-0.754664520382594790,	-0.754631713896237290,	-0.754598905523300440,	-0.754566095263866420,	-0.754533283118016820,	-0.754500469085834350,	-0.754467653167400610,	
+-0.754434835362797870,	-0.754402015672107630,	-0.754369194095412700,	-0.754336370632794790,	-0.754303545284335960,	-0.754270718050117920,	-0.754237888930223480,	-0.754205057924734130,	
+-0.754172225033732270,	-0.754139390257299590,	-0.754106553595518700,	-0.754073715048471430,	-0.754040874616239480,	-0.754008032298905780,	-0.753975188096551950,	-0.753942342009260140,	
+-0.753909494037112160,	-0.753876644180190740,	-0.753843792438577690,	-0.753810938812355170,	-0.753778083301605120,	-0.753745225906410020,	-0.753712366626851930,	-0.753679505463012880,	
+-0.753646642414974810,	-0.753613777482820320,	-0.753580910666631460,	-0.753548041966490390,	-0.753515171382478920,	-0.753482298914679770,	-0.753449424563174870,	-0.753416548328046050,	
+-0.753383670209376240,	-0.753350790207247160,	-0.753317908321741170,	-0.753285024552940220,	-0.753252138900926900,	-0.753219251365783160,	-0.753186361947591370,	-0.753153470646433450,	
+-0.753120577462392030,	-0.753087682395549240,	-0.753054785445987250,	-0.753021886613787990,	-0.752988985899034290,	-0.752956083301808080,	-0.752923178822191730,	-0.752890272460267070,	
+-0.752857364216117150,	-0.752824454089823680,	-0.752791542081469260,	-0.752758628191135480,	-0.752725712418905510,	-0.752692794764861280,	-0.752659875229084730,	-0.752626953811658890,	
+-0.752594030512665490,	-0.752561105332187120,	-0.752528178270305710,	-0.752495249327104100,	-0.752462318502664430,	-0.752429385797068860,	-0.752396451210399660,	-0.752363514742739550,	
+-0.752330576394170670,	-0.752297636164775300,	-0.752264694054635590,	-0.752231750063834470,	-0.752198804192453880,	-0.752165856440576430,	-0.752132906808283930,	-0.752099955295659430,	
+-0.752067001902785080,	-0.752034046629743050,	-0.752001089476616040,	-0.751968130443486320,	-0.751935169530436380,	-0.751902206737548150,	-0.751869242064904690,	-0.751836275512588140,	
+-0.751803307080680880,	-0.751770336769265080,	-0.751737364578423770,	-0.751704390508239010,	-0.751671414558793270,	-0.751638436730168720,	-0.751605457022448410,	-0.751572475435714370,	
+-0.751539491970049210,	-0.751506506625534980,	-0.751473519402254820,	-0.751440530300290790,	-0.751407539319725260,	-0.751374546460641060,	-0.751341551723120560,	-0.751308555107246150,	
+-0.751275556613100080,	-0.751242556240765410,	-0.751209553990324300,	-0.751176549861859330,	-0.751143543855452680,	-0.751110535971187600,	-0.751077526209146030,	-0.751044514569410680,	
+-0.751011501052063710,	-0.750978485657188390,	-0.750945468384866750,	-0.750912449235181520,	-0.750879428208214850,	-0.750846405304049780,	-0.750813380522768910,	-0.750780353864454190,	
+-0.750747325329188860,	-0.750714294917055210,	-0.750681262628135840,	-0.750648228462513110,	-0.750615192420269970,	-0.750582154501489020,	-0.750549114706252520,	-0.750516073034642960,	
+-0.750483029486743500,	-0.750449984062636520,	-0.750416936762404620,	-0.750383887586129950,	-0.750350836533896000,	-0.750317783605784940,	-0.750284728801879350,	-0.750251672122261630,	
+-0.750218613567015140,	-0.750185553136222040,	-0.750152490829965050,	-0.750119426648326540,	-0.750086360591389780,	-0.750053292659237150,	-0.750020222851950910,	-0.749987151169614450,	
+-0.749954077612310140,	-0.749921002180120590,	-0.749887924873128280,	-0.749854845691416360,	-0.749821764635067440,	-0.749788681704164130,	-0.749755596898788680,	-0.749722510219024580,	
+-0.749689421664954340,	-0.749656331236660420,	-0.749623238934225330,	-0.749590144757732560,	-0.749557048707264360,	-0.749523950782903570,	-0.749490850984732560,	-0.749457749312834820,	
+-0.749424645767292620,	-0.749391540348188560,	-0.749358433055605900,	-0.749325323889627140,	-0.749292212850335090,	-0.749259099937812260,	-0.749225985152141890,	-0.749192868493406610,	
+-0.749159749961689210,	-0.749126629557072100,	-0.749093507279638640,	-0.749060383129471430,	-0.749027257106653410,	-0.748994129211266850,	-0.748960999443395230,	-0.748927867803121150,	
+-0.748894734290527330,	-0.748861598905696480,	-0.748828461648711860,	-0.748795322519656080,	-0.748762181518611850,	-0.748729038645662200,	-0.748695893900890200,	-0.748662747284378320,	
+-0.748629598796209380,	-0.748596448436466670,	-0.748563296205232880,	-0.748530142102590830,	-0.748496986128623030,	-0.748463828283413180,	-0.748430668567043770,	-0.748397506979597620,	
+-0.748364343521157440,	-0.748331178191806720,	-0.748298010991627960,	-0.748264841920704300,	-0.748231670979118140,	-0.748198498166953160,	-0.748165323484291880,	-0.748132146931217320,	
+-0.748098968507812100,	-0.748065788214159810,	-0.748032606050343050,	-0.747999422016444430,	-0.747966236112547530,	-0.747933048338734970,	-0.747899858695089900,	-0.747866667181694920,	
+-0.747833473798633520,	-0.747800278545988410,	-0.747767081423842630,	-0.747733882432278900,	-0.747700681571380700,	-0.747667478841230750,	-0.747634274241912200,	-0.747601067773507650,	
+-0.747567859436100710,	-0.747534649229774080,	-0.747501437154610810,	-0.747468223210693730,	-0.747435007398106420,	-0.747401789716931500,	-0.747368570167251890,	-0.747335348749151080,	
+-0.747302125462711910,	-0.747268900308017400,	-0.747235673285150390,	-0.747202444394194480,	-0.747169213635232480,	-0.747135981008347440,	-0.747102746513622180,	-0.747069510151140310,	
+-0.747036271920984650,	-0.747003031823238350,	-0.746969789857984120,	-0.746936546025305680,	-0.746903300325286070,	-0.746870052758008110,	-0.746836803323554620,	-0.746803552022009540,	
+-0.746770298853455470,	-0.746737043817975450,	-0.746703786915653090,	-0.746670528146571200,	-0.746637267510813050,	-0.746604005008461470,	-0.746570740639600160,	-0.746537474404311950,	
+-0.746504206302680110,	-0.746470936334787450,	-0.746437664500717690,	-0.746404390800553870,	-0.746371115234378930,	-0.746337837802276030,	-0.746304558504328750,	-0.746271277340620150,	
+-0.746237994311233280,	-0.746204709416251170,	-0.746171422655757640,	-0.746138134029835420,	-0.746104843538567990,	-0.746071551182038050,	-0.746038256960329660,	-0.746004960873525520,	
+-0.745971662921708690,	-0.745938363104962980,	-0.745905061423371430,	-0.745871757877017210,	-0.745838452465983350,	-0.745805145190353570,	-0.745771836050210910,	-0.745738525045638760,	
+-0.745705212176719920,	-0.745671897443538350,	-0.745638580846177070,	-0.745605262384719360,	-0.745571942059248150,	-0.745538619869847370,	-0.745505295816600080,	-0.745471969899589530,	
+-0.745438642118898760,	-0.745405312474611730,	-0.745371980966811340,	-0.745338647595580770,	-0.745305312361003840,	-0.745271975263163580,	-0.745238636302143490,	-0.745205295478026500,	
+-0.745171952790896540,	-0.745138608240836660,	-0.745105261827930240,	-0.745071913552260430,	-0.745038563413911170,	-0.745005211412965500,	-0.744971857549506680,	-0.744938501823617980,	
+-0.744905144235383340,	-0.744871784784885800,	-0.744838423472208970,	-0.744805060297435540,	-0.744771695260649900,	-0.744738328361934990,	-0.744704959601373950,	-0.744671588979050840,	
+-0.744638216495048690,	-0.744604842149451110,	-0.744571465942341030,	-0.744538087873802600,	-0.744504707943918990,	-0.744471326152773560,	-0.744437942500449590,	-0.744404556987031010,	
+-0.744371169612601080,	-0.744337780377243190,	-0.744304389281040480,	-0.744270996324077230,	-0.744237601506436360,	-0.744204204828201600,	-0.744170806289455980,	-0.744137405890283650,	
+-0.744104003630767790,	-0.744070599510991640,	-0.744037193531039250,	-0.744003785690994010,	-0.743970375990939180,	-0.743936964430958140,	-0.743903551011135030,	-0.743870135731553030,	
+-0.743836718592295610,	-0.743803299593446150,	-0.743769878735088710,	-0.743736456017306650,	-0.743703031440183350,	-0.743669605003802190,	-0.743636176708247440,	-0.743602746553602150,	
+-0.743569314539950010,	-0.743535880667374300,	-0.743502444935959180,	-0.743469007345787910,	-0.743435567896944090,	-0.743402126589511210,	-0.743368683423573100,	-0.743335238399213450,	
+-0.743301791516515320,	-0.743268342775563080,	-0.743234892176439900,	-0.743201439719229580,	-0.743167985404015300,	-0.743134529230881300,	-0.743101071199911090,	-0.743067611311188150,	
+-0.743034149564795960,	-0.743000685960818590,	-0.742967220499339610,	-0.742933753180442520,	-0.742900284004210710,	-0.742866812970728540,	-0.742833340080079290,	-0.742799865332346650,	
+-0.742766388727614140,	-0.742732910265966000,	-0.742699429947485500,	-0.742665947772256140,	-0.742632463740362180,	-0.742598977851887110,	-0.742565490106914640,	-0.742532000505528030,	
+-0.742498509047811780,	-0.742465015733849270,	-0.742431520563724190,	-0.742398023537520050,	-0.742364524655321210,	-0.742331023917210950,	-0.742297521323273090,	-0.742264016873591230,	
+-0.742230510568249620,	-0.742197002407331660,	-0.742163492390921280,	-0.742129980519101840,	-0.742096466791957620,	-0.742062951209572440,	-0.742029433772029570,	-0.741995914479413270,	
+-0.741962393331807250,	-0.741928870329295220,	-0.741895345471960790,	-0.741861818759888210,	-0.741828290193161210,	-0.741794759771863380,	-0.741761227496078310,	-0.741727693365890620,	
+-0.741694157381383560,	-0.741660619542641180,	-0.741627079849746960,	-0.741593538302785290,	-0.741559994901839770,	-0.741526449646994320,	-0.741492902538332330,	-0.741459353575938510,	
+-0.741425802759896220,	-0.741392250090289530,	-0.741358695567201800,	-0.741325139190717740,	-0.741291580960920740,	-0.741258020877894610,	-0.741224458941723620,	-0.741190895152491480,	
+-0.741157329510282130,	-0.741123762015179150,	-0.741090192667267060,	-0.741056621466629540,	-0.741023048413350430,	-0.740989473507513320,	-0.740955896749202920,	-0.740922318138502730,	
+-0.740888737675496900,	-0.740855155360268690,	-0.740821571192903040,	-0.740787985173483430,	-0.740754397302093800,	-0.740720807578818090,	-0.740687216003740430,	-0.740653622576944780,	
+-0.740620027298514840,	-0.740586430168535090,	-0.740552831187089260,	-0.740519230354261370,	-0.740485627670135040,	-0.740452023134794970,	-0.740418416748324870,	-0.740384808510808680,	
+-0.740351198422330330,	-0.740317586482974190,	-0.740283972692823980,	-0.740250357051963960,	-0.740216739560477730,	-0.740183120218449900,	-0.740149499025964270,	-0.740115875983104910,	
+-0.740082251089955620,	-0.740048624346600900,	-0.740014995753124680,	-0.739981365309610780,	-0.739947733016143580,	-0.739914098872807120,	-0.739880462879685340,	-0.739846825036862280,	
+-0.739813185344422310,	-0.739779543802449480,	-0.739745900411027720,	-0.739712255170240860,	-0.739678608080173830,	-0.739644959140910110,	-0.739611308352533970,	-0.739577655715129460,	
+-0.739544001228780950,	-0.739510344893572480,	-0.739476686709588100,	-0.739443026676911860,	-0.739409364795628240,	-0.739375701065821180,	-0.739342035487574600,	-0.739308368060973220,	
+-0.739274698786100970,	-0.739241027663041890,	-0.739207354691880040,	-0.739173679872700000,	-0.739140003205585930,	-0.739106324690621760,	-0.739072644327891440,	-0.739038962117479770,	
+-0.739005278059470690,	-0.738971592153948590,	-0.738937904400997050,	-0.738904214800701120,	-0.738870523353144630,	-0.738836830058411830,	-0.738803134916586670,	-0.738769437927753960,	
+-0.738735739091997630,	-0.738702038409401960,	-0.738668335880050990,	-0.738634631504029420,	-0.738600925281421180,	-0.738567217212310450,	-0.738533507296781910,	-0.738499795534919620,	
+-0.738466081926807850,	-0.738432366472530520,	-0.738398649172172680,	-0.738364930025818160,	-0.738331209033551320,	-0.738297486195456100,	-0.738263761511617540,	-0.738230034982119590,	
+-0.738196306607046490,	-0.738162576386482420,	-0.738128844320512070,	-0.738095110409219710,	-0.738061374652689620,	-0.738027637051005710,	-0.737993897604252940,	-0.737960156312515550,	
+-0.737926413175877370,	-0.737892668194423560,	-0.737858921368238050,	-0.737825172697405220,	-0.737791422182009100,	-0.737757669822134750,	-0.737723915617866320,	-0.737690159569288070,	
+-0.737656401676484050,	-0.737622641939539300,	-0.737588880358538090,	-0.737555116933564570,	-0.737521351664703010,	-0.737487584552038330,	-0.737453815595654700,	-0.737420044795636500,	
+-0.737386272152068090,	-0.737352497665034080,	-0.737318721334618840,	-0.737284943160906540,	-0.737251163143982200,	-0.737217381283930000,	-0.737183597580834180,	-0.737149812034779250,	
+-0.737116024645849910,	-0.737082235414130650,	-0.737048444339705840,	-0.737014651422659430,	-0.736980856663076890,	-0.736947060061042160,	-0.736913261616639730,	-0.736879461329953860,	
+-0.736845659201069590,	-0.736811855230071200,	-0.736778049417043170,	-0.736744241762069760,	-0.736710432265236030,	-0.736676620926626220,	-0.736642807746324850,	-0.736608992724416160,	
+-0.736575175860985310,	-0.736541357156116570,	-0.736507536609893990,	-0.736473714222402930,	-0.736439889993727670,	-0.736406063923952580,	-0.736372236013162040,	-0.736338406261441310,	
+-0.736304574668874450,	-0.736270741235546260,	-0.736236905961540790,	-0.736203068846943420,	-0.736169229891838420,	-0.736135389096310270,	-0.736101546460443350,	-0.736067701984322920,	
+-0.736033855668033250,	-0.736000007511658950,	-0.735966157515284270,	-0.735932305678994480,	-0.735898452002873960,	-0.735864596487006970,	-0.735830739131478890,	-0.735796879936373880,	
+-0.735763018901776640,	-0.735729156027771670,	-0.735695291314444000,	-0.735661424761878120,	-0.735627556370158750,	-0.735593686139370150,	-0.735559814069597580,	-0.735525940160925540,	
+-0.735492064413438620,	-0.735458186827221310,	-0.735424307402358760,	-0.735390426138935460,	-0.735356543037036130,	-0.735322658096745130,	-0.735288771318147740,	-0.735254882701328330,	
+-0.735220992246371610,	-0.735187099953362620,	-0.735153205822385860,	-0.735119309853526140,	-0.735085412046867840,	-0.735051512402496220,	-0.735017610920496000,	-0.734983707600951550,	
+-0.734949802443947700,	-0.734915895449569480,	-0.734881986617901720,	-0.734848075949028790,	-0.734814163443035520,	-0.734780249100007050,	-0.734746332920028000,	-0.734712414903183060,	
+-0.734678495049556850,	-0.734644573359234720,	-0.734610649832301180,	-0.734576724468840590,	-0.734542797268938560,	-0.734508868232679580,	-0.734474937360148350,	-0.734441004651429470,	
+-0.734407070106608440,	-0.734373133725769730,	-0.734339195508998180,	-0.734305255456378370,	-0.734271313567995690,	-0.734237369843934730,	-0.734203424284280310,	-0.734169476889117050,	
+-0.734135527658530410,	-0.734101576592604890,	-0.734067623691425530,	-0.734033668955076820,	-0.733999712383644140,	-0.733965753977212200,	-0.733931793735865920,	-0.733897831659689800,	
+-0.733863867748769440,	-0.733829902003189430,	-0.733795934423034370,	-0.733761965008389750,	-0.733727993759340170,	-0.733694020675970670,	-0.733660045758365850,	-0.733626069006611090,	
+-0.733592090420791320,	-0.733558110000991250,	-0.733524127747295580,	-0.733490143659789820,	-0.733456157738558880,	-0.733422169983687370,	-0.733388180395260210,	-0.733354188973362910,	
+-0.733320195718080160,	-0.733286200629496900,	-0.733252203707697840,	-0.733218204952768570,	-0.733184204364793810,	-0.733150201943858270,	-0.733116197690047430,	-0.733082191603446120,	
+-0.733048183684139380,	-0.733014173932211800,	-0.732980162347749100,	-0.732946148930836090,	-0.732912133681557610,	-0.732878116599998570,	-0.732844097686244480,	-0.732810076940380140,	
+-0.732776054362490600,	-0.732742029952660690,	-0.732708003710976000,	-0.732673975637521240,	-0.732639945732381670,	-0.732605913995641790,	-0.732571880427387520,	-0.732537845027703470,	
+-0.732503807796674570,	-0.732469768734386410,	-0.732435727840923810,	-0.732401685116371940,	-0.732367640560815490,	-0.732333594174340410,	-0.732299545957031170,	-0.732265495908973160,	
+-0.732231444030251090,	-0.732197390320950660,	-0.732163334781156800,	-0.732129277410954570,	-0.732095218210428890,	-0.732061157179665470,	-0.732027094318749130,	-0.731993029627765020,	
+-0.731958963106798090,	-0.731924894755934030,	-0.731890824575257780,	-0.731856752564854380,	-0.731822678724808770,	-0.731788603055206880,	-0.731754525556133520,	-0.731720446227673400,	
+-0.731686365069912580,	-0.731652282082935760,	-0.731618197266828310,	-0.731584110621675050,	-0.731550022147561820,	-0.731515931844573420,	-0.731481839712795350,	-0.731447745752312310,	
+-0.731413649963210230,	-0.731379552345573950,	-0.731345452899488820,	-0.731311351625039910,	-0.731277248522312680,	-0.731243143591392530,	-0.731209036832364380,	-0.731174928245313380,	
+-0.731140817830325360,	-0.731106705587485360,	-0.731072591516878310,	-0.731038475618589920,	-0.731004357892705460,	-0.730970238339310190,	-0.730936116958488810,	-0.730901993750327610,	
+-0.730867868714911270,	-0.730833741852325410,	-0.730799613162654850,	-0.730765482645985510,	-0.730731350302402440,	-0.730697216131991120,	-0.730663080134836380,	-0.730628942311024270,	
+-0.730594802660639810,	-0.730560661183768280,	-0.730526517880494830,	-0.730492372750905390,	-0.730458225795085010,	-0.730424077013118840,	-0.730389926405092700,	-0.730355773971091750,	
+-0.730321619711201350,	-0.730287463625506670,	-0.730253305714093640,	-0.730219145977047290,	-0.730184984414453010,	-0.730150821026396060,	-0.730116655812962370,	-0.730082488774236980,	
+-0.730048319910305390,	-0.730014149221252740,	-0.729979976707164970,	-0.729945802368127340,	-0.729911626204225120,	-0.729877448215543570,	-0.729843268402168620,	-0.729809086764185540,	
+-0.729774903301679490,	-0.729740718014736500,	-0.729706530903441620,	-0.729672341967880440,	-0.729638151208138130,	-0.729603958624300830,	-0.729569764216453590,	-0.729535567984681890,	
+-0.729501369929070890,	-0.729467170049706850,	-0.729432968346674930,	-0.729398764820060500,	-0.729364559469948940,	-0.729330352296426290,	-0.729296143299577700,	-0.729261932479488780,	
+-0.729227719836244680,	-0.729193505369931660,	-0.729159289080634760,	-0.729125070968439810,	-0.729090851033431740,	-0.729056629275696920,	-0.729022405695320510,	-0.728988180292387770,	
+-0.728953953066984850,	-0.728919724019197020,	-0.728885493149110000,	-0.728851260456808920,	-0.728817025942379960,	-0.728782789605908370,	-0.728748551447479960,	-0.728714311467179690,	
+-0.728680069665094130,	-0.728645826041308230,	-0.728611580595907920,	-0.728577333328978230,	-0.728543084240605540,	-0.728508833330875130,	-0.728474580599872690,	-0.728440326047683500,	
+-0.728406069674393700,	-0.728371811480088780,	-0.728337551464854020,	-0.728303289628775770,	-0.728269025971939210,	-0.728234760494430140,	-0.728200493196333840,	-0.728166224077736570,	
+-0.728131953138723700,	-0.728097680379381050,	-0.728063405799793890,	-0.728029129400048490,	-0.727994851180230330,	-0.727960571140425010,	-0.727926289280717900,	-0.727892005601195380,	
+-0.727857720101942830,	-0.727823432783046060,	-0.727789143644590350,	-0.727754852686662070,	-0.727720559909346700,	-0.727686265312729620,	-0.727651968896897210,	-0.727617670661934830,	
+-0.727583370607928330,	-0.727549068734962940,	-0.727514765043125400,	-0.727480459532500840,	-0.727446152203175100,	-0.727411843055233760,	-0.727377532088762990,	-0.727343219303848490,	
+-0.727308904700575960,	-0.727274588279030800,	-0.727240270039299470,	-0.727205949981467590,	-0.727171628105620750,	-0.727137304411844540,	-0.727102978900225240,	-0.727068651570848660,	
+-0.727034322423800510,	-0.726999991459166050,	-0.726965658677032000,	-0.726931324077483950,	-0.726896987660607060,	-0.726862649426488150,	-0.726828309375212480,	-0.726793967506866200,	
+-0.726759623821534580,	-0.726725278319304220,	-0.726690931000260720,	-0.726656581864489890,	-0.726622230912077230,	-0.726587878143109320,	-0.726553523557671780,	-0.726519167155850410,	
+-0.726484808937730710,	-0.726450448903399490,	-0.726416087052942030,	-0.726381723386444240,	-0.726347357903992070,	-0.726312990605671670,	-0.726278621491568850,	-0.726244250561769110,	
+-0.726209877816359040,	-0.726175503255424350,	-0.726141126879050860,	-0.726106748687324280,	-0.726072368680331090,	-0.726037986858157010,	-0.726003603220887970,	-0.725969217768609560,	
+-0.725934830501408500,	-0.725900441419370270,	-0.725866050522581020,	-0.725831657811126350,	-0.725797263285092750,	-0.725762866944566040,	-0.725728468789632150,	-0.725694068820376790,	
+-0.725659667036886560,	-0.725625263439247160,	-0.725590858027544310,	-0.725556450801864590,	-0.725522041762293850,	-0.725487630908917880,	-0.725453218241822520,	-0.725418803761094470,	
+-0.725384387466819440,	-0.725349969359083470,	-0.725315549437972160,	-0.725281127703572340,	-0.725246704155969700,	-0.725212278795250300,	-0.725177851621499950,	-0.725143422634805250,	
+-0.725108991835251900,	-0.725074559222926180,	-0.725040124797913690,	-0.725005688560301230,	-0.724971250510174530,	-0.724936810647619390,	-0.724902368972722530,	-0.724867925485569780,	
+-0.724833480186247160,	-0.724799033074840620,	-0.724764584151436740,	-0.724730133416121360,	-0.724695680868980840,	-0.724661226510100680,	-0.724626770339567680,	-0.724592312357467790,	
+-0.724557852563887160,	-0.724523390958911720,	-0.724488927542627950,	-0.724454462315121890,	-0.724419995276479600,	-0.724385526426787110,	-0.724351055766131120,	-0.724316583294597470,	
+-0.724282109012272410,	-0.724247632919241660,	-0.724213155015592250,	-0.724178675301409890,	-0.724144193776780520,	-0.724109710441790950,	-0.724075225296527240,	-0.724040738341075300,	
+-0.724006249575521290,	-0.723971758999951920,	-0.723937266614453230,	-0.723902772419111380,	-0.723868276414012190,	-0.723833778599242690,	-0.723799278974888830,	-0.723764777541036630,	
+-0.723730274297772150,	-0.723695769245182420,	-0.723661262383353150,	-0.723626753712370840,	-0.723592243232321300,	-0.723557730943291460,	-0.723523216845367250,	-0.723488700938634710,	
+-0.723454183223180670,	-0.723419663699091280,	-0.723385142366452680,	-0.723350619225350930,	-0.723316094275872960,	-0.723281567518104680,	-0.723247038952132600,	-0.723212508578042420,	
+-0.723177976395921520,	-0.723143442405855490,	-0.723108906607930920,	-0.723074369002233870,	-0.723039829588851050,	-0.723005288367868700,	-0.722970745339373110,	-0.722936200503450420,	
+-0.722901653860187570,	-0.722867105409670470,	-0.722832555151985410,	-0.722798003087219200,	-0.722763449215457990,	-0.722728893536788150,	-0.722694336051295740,	-0.722659776759067900,	
+-0.722625215660190560,	-0.722590652754750210,	-0.722556088042832780,	-0.722521521524525650,	-0.722486953199914520,	-0.722452383069086100,	-0.722417811132126440,	-0.722383237389122580,	
+-0.722348661840160560,	-0.722314084485326970,	-0.722279505324707750,	-0.722244924358390160,	-0.722210341586460250,	-0.722175757009004380,	-0.722141170626108940,	-0.722106582437860740,	
+-0.722071992444346280,	-0.722037400645651360,	-0.722002807041863370,	-0.721968211633068240,	-0.721933614419352660,	-0.721899015400802810,	-0.721864414577505610,	-0.721829811949547430,	
+-0.721795207517014650,	-0.721760601279993640,	-0.721725993238571340,	-0.721691383392834120,	-0.721656771742868460,	-0.721622158288760530,	-0.721587543030597470,	-0.721552925968465650,	
+-0.721518307102451460,	-0.721483686432641160,	-0.721449063959122010,	-0.721414439681980160,	-0.721379813601301880,	-0.721345185717174430,	-0.721310556029684080,	-0.721275924538917200,	
+-0.721241291244960280,	-0.721206656147900470,	-0.721172019247823930,	-0.721137380544817350,	-0.721102740038967130,	-0.721068097730360290,	-0.721033453619083110,	-0.720998807705222510,	
+-0.720964159988864430,	-0.720929510470096350,	-0.720894859149004310,	-0.720860206025675240,	-0.720825551100195420,	-0.720790894372651980,	-0.720756235843131310,	-0.720721575511719670,	
+-0.720686913378504430,	-0.720652249443571980,	-0.720617583707008790,	-0.720582916168901470,	-0.720548246829337050,	-0.720513575688402130,	-0.720478902746183090,	-0.720444228002766640,	
+-0.720409551458239930,	-0.720374873112689220,	-0.720340192966201440,	-0.720305511018862870,	-0.720270827270760750,	-0.720236141721981580,	-0.720201454372612180,	-0.720166765222738700,	
+-0.720132074272448630,	-0.720097381521828450,	-0.720062686970964430,	-0.720027990619944050,	-0.719993292468853690,	-0.719958592517780050,	-0.719923890766809630,	-0.719889187216029900,	
+-0.719854481865527030,	-0.719819774715388050,	-0.719785065765699340,	-0.719750355016548270,	-0.719715642468021330,	-0.719680928120205230,	-0.719646211973186460,	-0.719611494027052600,	
+-0.719576774281889930,	-0.719542052737785260,	-0.719507329394825310,	-0.719472604253097230,	-0.719437877312687600,	-0.719403148573683370,	-0.719368418036170910,	-0.719333685700237810,	
+-0.719298951565970460,	-0.719264215633455330,	-0.719229477902780020,	-0.719194738374031030,	-0.719159997047295160,	-0.719125253922659020,	-0.719090509000209990,	-0.719055762280034760,	
+-0.719021013762220160,	-0.718986263446852680,	-0.718951511334019800,	-0.718916757423808230,	-0.718882001716304670,	-0.718847244211595850,	-0.718812484909769230,	-0.718777723810911430,	
+-0.718742960915109250,	-0.718708196222449410,	-0.718673429733019290,	-0.718638661446905800,	-0.718603891364195220,	-0.718569119484975150,	-0.718534345809332400,	-0.718499570337353680,	
+-0.718464793069125810,	-0.718430014004736270,	-0.718395233144271670,	-0.718360450487819050,	-0.718325666035464880,	-0.718290879787296890,	-0.718256091743401770,	-0.718221301903866350,	
+-0.718186510268777330,	-0.718151716838222430,	-0.718116921612288240,	-0.718082124591061690,	-0.718047325774629600,	-0.718012525163079340,	-0.717977722756497960,	-0.717942918554971830,	
+-0.717908112558588770,	-0.717873304767435490,	-0.717838495181598810,	-0.717803683801165660,	-0.717768870626223630,	-0.717734055656859440,	-0.717699238893160010,	-0.717664420335212270,	
+-0.717629599983103720,	-0.717594777836921270,	-0.717559953896751760,	-0.717525128162682100,	-0.717490300634799900,	-0.717455471313191980,	-0.717420640197945380,	-0.717385807289146920,	
+-0.717350972586884180,	-0.717316136091244120,	-0.717281297802313640,	-0.717246457720179590,	-0.717211615844929650,	-0.717176772176650770,	-0.717141926715429650,	-0.717107079461353990,	
+-0.717072230414510630,	-0.717037379574986700,	-0.717002526942868920,	-0.716967672518245340,	-0.716932816301202420,	-0.716897958291827450,	-0.716863098490207350,	-0.716828236896429830,	
+-0.716793373510581700,	-0.716758508332750010,	-0.716723641363021910,	-0.716688772601485000,	-0.716653902048226100,	-0.716619029703332470,	-0.716584155566890920,	-0.716549279638989290,	
+-0.716514401919714490,	-0.716479522409153360,	-0.716444641107393700,	-0.716409758014522560,	-0.716374873130626980,	-0.716339986455793780,	-0.716305097990111110,	-0.716270207733665560,	
+-0.716235315686544530,	-0.716200421848834920,	-0.716165526220624570,	-0.716130628802000400,	-0.716095729593049680,	-0.716060828593859220,	-0.716025925804517070,	-0.715991021225110160,	
+-0.715956114855725630,	-0.715921206696450430,	-0.715886296747372700,	-0.715851385008579140,	-0.715816471480156810,	-0.715781556162193630,	-0.715746639054776530,	-0.715711720157992780,	
+-0.715676799471929530,	-0.715641876996674590,	-0.715606952732314780,	-0.715572026678937820,	-0.715537098836630300,	-0.715502169205480490,	-0.715467237785575190,	-0.715432304577001800,	
+-0.715397369579847340,	-0.715362432794199750,	-0.715327494220146080,	-0.715292553857773680,	-0.715257611707169620,	-0.715222667768421800,	-0.715187722041617400,	-0.715152774526843340,	
+-0.715117825224187540,	-0.715082874133737280,	-0.715047921255579810,	-0.715012966589802180,	-0.714978010136492540,	-0.714943051895737810,	-0.714908091867625490,	-0.714873130052242620,	
+-0.714838166449677240,	-0.714803201060016490,	-0.714768233883347650,	-0.714733264919757970,	-0.714698294169335390,	-0.714663321632167060,	-0.714628347308340460,	-0.714593371197942750,	
+-0.714558393301061860,	-0.714523413617784930,	-0.714488432148199570,	-0.714453448892392820,	-0.714418463850452710,	-0.714383477022466410,	-0.714348488408521170,	-0.714313498008705030,	
+-0.714278505823105040,	-0.714243511851808900,	-0.714208516094903540,	-0.714173518552477350,	-0.714138519224617240,	-0.714103518111410930,	-0.714068515212945450,	-0.714033510529309080,	
+-0.713998504060588850,	-0.713963495806872350,	-0.713928485768246860,	-0.713893473944800410,	-0.713858460336620370,	-0.713823444943794130,	-0.713788427766408830,	-0.713753408804552960,	
+-0.713718388058313450,	-0.713683365527777780,	-0.713648341213033890,	-0.713613315114169260,	-0.713578287231271260,	-0.713543257564427270,	-0.713508226113725440,	-0.713473192879253040,	
+-0.713438157861097650,	-0.713403121059346560,	-0.713368082474087890,	-0.713333042105409150,	-0.713297999953397710,	-0.713262956018141050,	-0.713227910299727320,	-0.713192862798243680,	
+-0.713157813513777940,	-0.713122762446417370,	-0.713087709596250230,	-0.713052654963363790,	-0.713017598547845410,	-0.712982540349783370,	-0.712947480369264920,	-0.712912418606377880,	
+-0.712877355061209420,	-0.712842289733847780,	-0.712807222624380570,	-0.712772153732895260,	-0.712737083059479250,	-0.712702010604220780,	-0.712666936367207350,	-0.712631860348526550,	
+-0.712596782548265860,	-0.712561702966513440,	-0.712526621603356780,	-0.712491538458883580,	-0.712456453533181210,	-0.712421366826338050,	-0.712386278338441370,	-0.712351188069579200,	
+-0.712316096019838580,	-0.712281002189308010,	-0.712245906578075070,	-0.712210809186226920,	-0.712175710013852160,	-0.712140609061038040,	-0.712105506327872510,	-0.712070401814442810,	
+-0.712035295520837440,	-0.712000187447143770,	-0.711965077593449850,	-0.711929965959842700,	-0.711894852546411050,	-0.711859737353242260,	-0.711824620380424040,	-0.711789501628044110,	
+-0.711754381096190600,	-0.711719258784951240,	-0.711684134694413610,	-0.711649008824665420,	-0.711613881175795050,	-0.711578751747889870,	-0.711543620541037590,	-0.711508487555326590,	
+-0.711473352790844230,	-0.711438216247678670,	-0.711403077925917170,	-0.711367937825648220,	-0.711332795946959530,	-0.711297652289938800,	-0.711262506854673630,	-0.711227359641252500,	
+-0.711192210649763010,	-0.711157059880292990,	-0.711121907332930010,	-0.711086753007762580,	-0.711051596904878180,	-0.711016439024364840,	-0.710981279366310170,	-0.710946117930802530,	
+-0.710910954717929530,	-0.710875789727778980,	-0.710840622960439150,	-0.710805454415997850,	-0.710770284094542900,	-0.710735111996161910,	-0.710699938120943450,	-0.710664762468975140,	
+-0.710629585040344900,	-0.710594405835140440,	-0.710559224853450240,	-0.710524042095362020,	-0.710488857560963690,	-0.710453671250342870,	-0.710418483163588130,	-0.710383293300787310,	
+-0.710348101662028110,	-0.710312908247398460,	-0.710277713056986840,	-0.710242516090880960,	-0.710207317349168310,	-0.710172116831937930,	-0.710136914539277080,	-0.710101710471274020,	
+-0.710066504628016350,	-0.710031297009592670,	-0.709996087616090790,	-0.709960876447598750,	-0.709925663504204160,	-0.709890448785995720,	-0.709855232293061240,	-0.709820014025488550,	
+-0.709784793983365580,	-0.709749572166780920,	-0.709714348575822380,	-0.709679123210577910,	-0.709643896071135320,	-0.709608667157583310,	-0.709573436470009700,	-0.709538204008502430,	
+-0.709502969773149310,	-0.709467733764039150,	-0.709432495981259570,	-0.709397256424898480,	-0.709362015095044600,	-0.709326771991785730,	-0.709291527115209820,	-0.709256280465404790,	
+-0.709221032042459450,	-0.709185781846461420,	-0.709150529877499050,	-0.709115276135659940,	-0.709080020621033040,	-0.709044763333706030,	-0.709009504273767190,	-0.708974243441304110,	
+-0.708938980836405830,	-0.708903716459160170,	-0.708868450309655170,	-0.708833182387978660,	-0.708797912694219660,	-0.708762641228465770,	-0.708727367990804940,	-0.708692092981326070,	
+-0.708656816200117000,	-0.708621537647265760,	-0.708586257322860400,	-0.708550975226989730,	-0.708515691359741680,	-0.708480405721204410,	-0.708445118311465730,	-0.708409829130614680,	
+-0.708374538178738970,	-0.708339245455926860,	-0.708303950962266390,	-0.708268654697846390,	-0.708233356662754670,	-0.708198056857079590,	-0.708162755280909110,	-0.708127451934332020,	
+-0.708092146817436260,	-0.708056839930309880,	-0.708021531273041680,	-0.707986220845719720,	-0.707950908648432130,	-0.707915594681266970,	-0.707880278944313050,	-0.707844961437658630,	
+-0.707809642161391750,	-0.707774321115600350,	-0.707738998300373460,	-0.707703673715799120,	-0.707668347361965600,	-0.707633019238960940,	-0.707597689346874060,	-0.707562357685792900,	
+-0.707527024255805830,	-0.707491689057000880,	-0.707456352089467110,	-0.707421013353292330,	-0.707385672848565130,	-0.707350330575373440,	-0.707314986533806200,	-0.707279640723951440,	
+-0.707244293145897320,	-0.707208943799732760,	-0.707173592685545800,	-0.707138239803424940,	-0.707102885153458200,	-0.707067528735734420,	-0.707032170550341950,	-0.706996810597368960,	
+-0.706961448876903710,	-0.706926085389035120,	-0.706890720133851240,	-0.706855353111440650,	-0.706819984321891410,	-0.706784613765292450,	-0.706749241441731900,	-0.706713867351298370,	
+-0.706678491494079800,	-0.706643113870165320,	-0.706607734479642980,	-0.706572353322601040,	-0.706536970399128660,	-0.706501585709313650,	-0.706466199253244830,	-0.706430811031010130,	
+-0.706395421042698700,	-0.706360029288398810,	-0.706324635768198710,	-0.706289240482186780,	-0.706253843430452060,	-0.706218444613082810,	-0.706183044030167300,	-0.706147641681794000,	
+-0.706112237568051750,	-0.706076831689029020,	-0.706041424044814180,	-0.706006014635495500,	-0.705970603461162140,	-0.705935190521902230,	-0.705899775817803940,	-0.705864359348956640,	
+-0.705828941115448360,	-0.705793521117367820,	-0.705758099354803050,	-0.705722675827843430,	-0.705687250536577100,	-0.705651823481092680,	-0.705616394661478300,	-0.705580964077823340,	
+-0.705545531730215950,	-0.705510097618744610,	-0.705474661743497820,	-0.705439224104564720,	-0.705403784702033580,	-0.705368343535992870,	-0.705332900606530980,	-0.705297455913737270,	
+-0.705262009457699790,	-0.705226561238507350,	-0.705191111256248230,	-0.705155659511011670,	-0.705120206002885830,	-0.705084750731959310,	-0.705049293698321140,	-0.705013834902059710,	
+-0.704978374343263820,	-0.704942912022021530,	-0.704907447938422300,	-0.704871982092554530,	-0.704836514484506790,	-0.704801045114367360,	-0.704765573982225720,	-0.704730101088170140,	
+-0.704694626432289310,	-0.704659150014671610,	-0.704623671835406310,	-0.704588191894581770,	-0.704552710192286820,	-0.704517226728609840,	-0.704481741503640070,	-0.704446254517465900,	
+-0.704410765770175810,	-0.704375275261859170,	-0.704339782992604250,	-0.704304288962499860,	-0.704268793171634490,	-0.704233295620097510,	-0.704197796307977190,	-0.704162295235362450,	
+-0.704126792402341550,	-0.704091287809004100,	-0.704055781455438350,	-0.704020273341733230,	-0.703984763467977110,	-0.703949251834259270,	-0.703913738440668400,	-0.703878223287293210,	
+-0.703842706374222080,	-0.703807187701544600,	-0.703771667269349030,	-0.703736145077724080,	-0.703700621126759020,	-0.703665095416542430,	-0.703629567947163030,	-0.703594038718709400,	
+-0.703558507731271150,	-0.703522974984936430,	-0.703487440479794390,	-0.703451904215933400,	-0.703416366193443050,	-0.703380826412411730,	-0.703345284872928240,	-0.703309741575081300,	
+-0.703274196518960390,	-0.703238649704653880,	-0.703203101132250820,	-0.703167550801839680,	-0.703131998713509950,	-0.703096444867350230,	-0.703060889263449120,	-0.703025331901896090,	
+-0.702989772782779630,	-0.702954211906188900,	-0.702918649272212150,	-0.702883084880939310,	-0.702847518732458540,	-0.702811950826859100,	-0.702776381164229470,	-0.702740809744659130,	
+-0.702705236568236800,	-0.702669661635051400,	-0.702634084945191530,	-0.702598506498746780,	-0.702562926295805750,	-0.702527344336457360,	-0.702491760620790330,	-0.702456175148894250,	
+-0.702420587920857710,	-0.702384998936769640,	-0.702349408196718760,	-0.702313815700794760,	-0.702278221449086140,	-0.702242625441681700,	-0.702207027678671050,	-0.702171428160142770,	
+-0.702135826886185920,	-0.702100223856889190,	-0.702064619072342190,	-0.702029012532633720,	-0.701993404237852610,	-0.701957794188087790,	-0.701922182383428740,	-0.701886568823964270,	
+-0.701850953509783330,	-0.701815336440974710,	-0.701779717617628140,	-0.701744097039832200,	-0.701708474707675940,	-0.701672850621248290,	-0.701637224780638840,	-0.701601597185936290,	
+-0.701565967837229460,	-0.701530336734607960,	-0.701494703878160710,	-0.701459069267976630,	-0.701423432904144550,	-0.701387794786754170,	-0.701352154915894420,	-0.701316513291654230,	
+-0.701280869914122420,	-0.701245224783388800,	-0.701209577899542080,	-0.701173929262671410,	-0.701138278872865620,	-0.701102626730214510,	-0.701066972834806680,	-0.701031317186731510,	
+-0.700995659786077810,	-0.700960000632935180,	-0.700924339727392540,	-0.700888677069538720,	-0.700853012659463650,	-0.700817346497255910,	-0.700781678583004890,	-0.700746008916799280,	
+-0.700710337498729020,	-0.700674664328882920,	-0.700638989407350140,	-0.700603312734219610,	-0.700567634309581020,	-0.700531954133523430,	-0.700496272206135970,	-0.700460588527507480,	
+-0.700424903097727760,	-0.700389215916885850,	-0.700353526985070920,	-0.700317836302371880,	-0.700282143868878440,	-0.700246449684679750,	-0.700210753749864970,	-0.700175056064522900,	
+-0.700139356628743490,	-0.700103655442615770,	-0.700067952506228550,	-0.700032247819671770,	-0.699996541383034470,	-0.699960833196405670,	-0.699925123259874550,	-0.699889411573530910,	
+-0.699853698137463680,	-0.699817982951762340,	-0.699782266016515610,	-0.699746547331813630,	-0.699710826897745220,	-0.699675104714399750,	-0.699639380781866160,	-0.699603655100234480,	
+-0.699567927669593750,	-0.699532198490033120,	-0.699496467561641630,	-0.699460734884509330,	-0.699425000458725240,	-0.699389264284378200,	-0.699353526361558450,	-0.699317786690354830,	
+-0.699282045270856800,	-0.699246302103153190,	-0.699210557187334270,	-0.699174810523488950,	-0.699139062111706620,	-0.699103311952076200,	-0.699067560044687950,	-0.699031806389630810,	
+-0.698996050986994020,	-0.698960293836866860,	-0.698924534939339260,	-0.698888774294500360,	-0.698853011902439540,	-0.698817247763245830,	-0.698781481877009390,	-0.698745714243819150,	
+-0.698709944863764370,	-0.698674173736934970,	-0.698638400863420220,	-0.698602626243309490,	-0.698566849876691710,	-0.698531071763657250,	-0.698495291904295160,	-0.698459510298694800,	
+-0.698423726946945320,	-0.698387941849136770,	-0.698352155005358520,	-0.698316366415699830,	-0.698280576080249850,	-0.698244783999098730,	-0.698208990172335730,	-0.698173194600050230,	
+-0.698137397282331370,	-0.698101598219269430,	-0.698065797410953430,	-0.698029994857472640,	-0.697994190558917200,	-0.697958384515376280,	-0.697922576726939360,	-0.697886767193695690,	
+-0.697850955915735430,	-0.697815142893147830,	-0.697779328126022280,	-0.697743511614448140,	-0.697707693358515570,	-0.697671873358313710,	-0.697636051613932270,	-0.697600228125460300,	
+-0.697564402892988040,	-0.697528575916604780,	-0.697492747196400200,	-0.697456916732463350,	-0.697421084524884490,	-0.697385250573753000,	-0.697349414879158250,	-0.697313577441189820,	
+-0.697277738259937660,	-0.697241897335491130,	-0.697206054667939610,	-0.697170210257373250,	-0.697134364103881410,	-0.697098516207553590,	-0.697062666568479150,	-0.697026815186748470,	
+-0.696990962062450590,	-0.696955107195675440,	-0.696919250586512160,	-0.696883392235051020,	-0.696847532141381510,	-0.696811670305593100,	-0.696775806727775170,	-0.696739941408018090,	
+-0.696704074346411130,	-0.696668205543043980,	-0.696632334998006030,	-0.696596462711387530,	-0.696560588683277970,	-0.696524712913766500,	-0.696488835402943600,	-0.696452956150898640,	
+-0.696417075157721220,	-0.696381192423500940,	-0.696345307948327830,	-0.696309421732291600,	-0.696273533775481730,	-0.696237644077987720,	-0.696201752639899920,	-0.696165859461307710,	
+-0.696129964542300920,	-0.696094067882968790,	-0.696058169483401820,	-0.696022269343689490,	-0.695986367463921510,	-0.695950463844187240,	-0.695914558484577170,	-0.695878651385180680,	
+-0.695842742546087250,	-0.695806831967387350,	-0.695770919649170260,	-0.695735005591525900,	-0.695699089794543760,	-0.695663172258314200,	-0.695627252982926600,	-0.695591331968471000,	
+-0.695555409215036670,	-0.695519484722714190,	-0.695483558491593050,	-0.695447630521762950,	-0.695411700813313380,	-0.695375769366334940,	-0.695339836180917100,	-0.695303901257149690,	
+-0.695267964595122080,	-0.695232026194924970,	-0.695196086056647840,	-0.695160144180380520,	-0.695124200566212380,	-0.695088255214234120,	-0.695052308124535220,	-0.695016359297205290,	
+-0.694980408732334690,	-0.694944456430013120,	-0.694908502390330420,	-0.694872546613376050,	-0.694836589099240730,	-0.694800629848013940,	-0.694764668859785610,	-0.694728706134645210,	
+-0.694692741672683360,	-0.694656775473989740,	-0.694620807538654070,	-0.694584837866766060,	-0.694548866458416400,	-0.694512893313694480,	-0.694476918432690330,	-0.694440941815493650,	
+-0.694404963462194820,	-0.694368983372883660,	-0.694333001547649650,	-0.694297017986583500,	-0.694261032689774900,	-0.694225045657313580,	-0.694189056889289340,	-0.694153066385792880,	
+-0.694117074146913590,	-0.694081080172741730,	-0.694045084463366880,	-0.694009087018879530,	-0.693973087839369620,	-0.693937086924926840,	-0.693901084275641120,	-0.693865079891602950,	
+-0.693829073772902040,	-0.693793065919628530,	-0.693757056331872010,	-0.693721045009723200,	-0.693685031953271690,	-0.693649017162607300,	-0.693613000637820720,	-0.693576982379001670,	
+-0.693540962386240190,	-0.693504940659625870,	-0.693468917199249630,	-0.693432892005201080,	-0.693396865077570260,	-0.693360836416446970,	-0.693324806021921810,	-0.693288773894084830,	
+-0.693252740033025730,	-0.693216704438834540,	-0.693180667111601980,	-0.693144628051417630,	-0.693108587258371770,	-0.693072544732554200,	-0.693036500474055520,	-0.693000454482965540,	
+-0.692964406759374100,	-0.692928357303371990,	-0.692892306115049040,	-0.692856253194495290,	-0.692820198541800550,	-0.692784142157055640,	-0.692748084040350490,	-0.692712024191775020,	
+-0.692675962611419170,	-0.692639899299373750,	-0.692603834255728580,	-0.692567767480573800,	-0.692531698973999350,	-0.692495628736095940,	-0.692459556766953480,	-0.692423483066662130,	
+-0.692387407635311700,	-0.692351330472993130,	-0.692315251579796120,	-0.692279170955811150,	-0.692243088601127820,	-0.692207004515837170,	-0.692170918700028890,	-0.692134831153793040,	
+-0.692098741877220420,	-0.692062650870401090,	-0.692026558133424950,	-0.691990463666382170,	-0.691954367469363560,	-0.691918269542459050,	-0.691882169885758790,	-0.691846068499352820,	
+-0.691809965383332060,	-0.691773860537786330,	-0.691737753962805900,	-0.691701645658480910,	-0.691665535624901960,	-0.691629423862159310,	-0.691593310370343000,	-0.691557195149543170,	
+-0.691521078199850650,	-0.691484959521355360,	-0.691448839114147450,	-0.691412716978317740,	-0.691376593113956160,	-0.691340467521153190,	-0.691304340199998760,	-0.691268211150583680,	
+-0.691232080372998100,	-0.691195947867332410,	-0.691159813633676510,	-0.691123677672121350,	-0.691087539982756960,	-0.691051400565673820,	-0.691015259420961760,	-0.690979116548711910,	
+-0.690942971949014330,	-0.690906825621959260,	-0.690870677567636760,	-0.690834527786137960,	-0.690798376277552810,	-0.690762223041971430,	-0.690726068079484780,	-0.690689911390182990,	
+-0.690653752974156430,	-0.690617592831495150,	-0.690581430962290190,	-0.690545267366631690,	-0.690509102044609910,	-0.690472934996315240,	-0.690436766221838360,	-0.690400595721269660,	
+-0.690364423494699510,	-0.690328249542217940,	-0.690292073863916110,	-0.690255896459884060,	-0.690219717330212260,	-0.690183536474990870,	-0.690147353894310920,	-0.690111169588262570,	
+-0.690074983556936310,	-0.690038795800422380,	-0.690002606318811610,	-0.689966415112194480,	-0.689930222180660910,	-0.689894027524302070,	-0.689857831143208200,	-0.689821633037469790,	
+-0.689785433207176890,	-0.689749231652420860,	-0.689713028373291630,	-0.689676823369879900,	-0.689640616642275830,	-0.689604408190570450,	-0.689568198014854030,	-0.689531986115217150,	
+-0.689495772491750090,	-0.689459557144543770,	-0.689423340073688660,	-0.689387121279275150,	-0.689350900761393490,	-0.689314678520134950,	-0.689278454555589670,	-0.689242228867847920,	
+-0.689206001457000950,	-0.689169772323139030,	-0.689133541466352640,	-0.689097308886732040,	-0.689061074584368600,	-0.689024838559352370,	-0.688988600811774040,	-0.688952361341723880,	
+-0.688916120149293150,	-0.688879877234572220,	-0.688843632597651470,	-0.688807386238621370,	-0.688771138157573180,	-0.688734888354597060,	-0.688698636829783720,	-0.688662383583223510,	
+-0.688626128615007600,	-0.688589871925226470,	-0.688553613513970260,	-0.688517353381330350,	-0.688481091527397120,	-0.688444827952261030,	-0.688408562656012690,	-0.688372295638743140,	
+-0.688336026900542960,	-0.688299756441502650,	-0.688263484261712690,	-0.688227210361264220,	-0.688190934740247840,	-0.688154657398754140,	-0.688118378336873390,	-0.688082097554697070,	
+-0.688045815052315430,	-0.688009530829819300,	-0.687973244887299050,	-0.687936957224845940,	-0.687900667842550550,	-0.687864376740503050,	-0.687828083918795020,	-0.687791789377516730,	
+-0.687755493116758990,	-0.687719195136612170,	-0.687682895437167760,	-0.687646594018516020,	-0.687610290880747880,	-0.687573986023953590,	-0.687537679448224750,	-0.687501371153651620,	
+-0.687465061140325130,	-0.687428749408335650,	-0.687392435957774550,	-0.687356120788732540,	-0.687319803901300100,	-0.687283485295567820,	-0.687247164971627190,	-0.687210842929568580,	
+-0.687174519169482910,	-0.687138193691460670,	-0.687101866495593240,	-0.687065537581971090,	-0.687029206950684810,	-0.686992874601825900,	-0.686956540535484720,	-0.686920204751752190,	
+-0.686883867250718820,	-0.686847528032476170,	-0.686811187097114640,	-0.686774844444725140,	-0.686738500075398270,	-0.686702153989225410,	-0.686665806186297130,	-0.686629456666704390,	
+-0.686593105430537750,	-0.686556752477888610,	-0.686520397808847550,	-0.686484041423505500,	-0.686447683321953050,	-0.686411323504281800,	-0.686374961970582120,	-0.686338598720944710,	
+-0.686302233755461290,	-0.686265867074222100,	-0.686229498677318310,	-0.686193128564840490,	-0.686156756736880150,	-0.686120383193527860,	-0.686084007934874670,	-0.686047630961011070,	
+-0.686011252272028860,	-0.685974871868018420,	-0.685938489749070790,	-0.685902105915276560,	-0.685865720366727550,	-0.685829333103514130,	-0.685792944125727330,	-0.685756553433457980,	
+-0.685720161026797450,	-0.685683766905836660,	-0.685647371070665980,	-0.685610973521377230,	-0.685574574258061120,	-0.685538173280808570,	-0.685501770589710180,	-0.685465366184857760,	
+-0.685428960066341910,	-0.685392552234253550,	-0.685356142688683610,	-0.685319731429723580,	-0.685283318457464260,	-0.685246903771996710,	-0.685210487373411500,	-0.685174069261800360,	
+-0.685137649437254080,	-0.685101227899863720,	-0.685064804649719860,	-0.685028379686914430,	-0.684991953011538040,	-0.684955524623681700,	-0.684919094523436240,	-0.684882662710893380,	
+-0.684846229186143800,	-0.684809793949278430,	-0.684773357000388880,	-0.684736918339565960,	-0.684700477966900700,	-0.684664035882483810,	-0.684627592086407330,	-0.684591146578761740,	
+-0.684554699359638420,	-0.684518250429127950,	-0.684481799787322150,	-0.684445347434311960,	-0.684408893370188290,	-0.684372437595042070,	-0.684335980108965130,	-0.684299520912048260,	
+-0.684263060004382530,	-0.684226597386058840,	-0.684190133057169030,	-0.684153667017803780,	-0.684117199268054140,	-0.684080729808011820,	-0.684044258637767630,	-0.684007785757412830,	
+-0.683971311167038240,	-0.683934834866735670,	-0.683898356856595950,	-0.683861877136710430,	-0.683825395707169940,	-0.683788912568066180,	-0.683752427719490190,	-0.683715941161533110,	
+-0.683679452894285890,	-0.683642962917840320,	-0.683606471232287350,	-0.683569977837718220,	-0.683533482734223760,	-0.683496985921896010,	-0.683460487400825770,	-0.683423987171103970,	
+-0.683387485232822560,	-0.683350981586072330,	-0.683314476230944770,	-0.683277969167530590,	-0.683241460395921930,	-0.683204949916209500,	-0.683168437728484790,	-0.683131923832838610,	
+-0.683095408229362990,	-0.683058890918148750,	-0.683022371899287380,	-0.682985851172869700,	-0.682949328738987840,	-0.682912804597732510,	-0.682876278749195210,	-0.682839751193466960,	
+-0.682803221930639580,	-0.682766690960804220,	-0.682730158284051700,	-0.682693623900474170,	-0.682657087810162540,	-0.682620550013208320,	-0.682584010509702300,	-0.682547469299736530,	
+-0.682510926383402160,	-0.682474381760790450,	-0.682437835431992430,	-0.682401287397100260,	-0.682364737656204760,	-0.682328186209397500,	-0.682291633056769320,	-0.682255078198412470,	
+-0.682218521634417980,	-0.682181963364877130,	-0.682145403389881060,	-0.682108841709521800,	-0.682072278323890390,	-0.682035713233078320,	-0.681999146437176630,	-0.681962577936277460,	
+-0.681926007730471740,	-0.681889435819850730,	-0.681852862204506470,	-0.681816286884530110,	-0.681779709860012910,	-0.681743131131046230,	-0.681706550697721900,	-0.681669968560131290,	
+-0.681633384718365760,	-0.681596799172516480,	-0.681560211922675460,	-0.681523622968933870,	-0.681487032311383300,	-0.681450439950114780,	-0.681413845885220580,	-0.681377250116791620,	
+-0.681340652644919720,	-0.681304053469695690,	-0.681267452591211910,	-0.681230850009559520,	-0.681194245724829670,	-0.681157639737114520,	-0.681121032046505310,	-0.681084422653093440,	
+-0.681047811556970250,	-0.681011198758227910,	-0.680974584256957450,	-0.680937968053250580,	-0.680901350147198550,	-0.680864730538893290,	-0.680828109228426400,	-0.680791486215889140,	
+-0.680754861501372770,	-0.680718235084969650,	-0.680681606966770940,	-0.680644977146868340,	-0.680608345625352770,	-0.680571712402316730,	-0.680535077477851470,	-0.680498440852048030,	
+-0.680461802524998990,	-0.680425162496795410,	-0.680388520767528870,	-0.680351877337290740,	-0.680315232206173180,	-0.680278585374267550,	-0.680241936841665560,	-0.680205286608458250,	
+-0.680168634674738200,	-0.680131981040596470,	-0.680095325706124850,	-0.680058668671414510,	-0.680022009936557930,	-0.679985349501646240,	-0.679948687366771170,	-0.679912023532024070,	
+-0.679875357997497320,	-0.679838690763282070,	-0.679802021829470140,	-0.679765351196152780,	-0.679728678863422480,	-0.679692004831370380,	-0.679655329100087970,	-0.679618651669667620,	
+-0.679581972540200590,	-0.679545291711778580,	-0.679508609184493070,	-0.679471924958436340,	-0.679435239033699840,	-0.679398551410375200,	-0.679361862088553870,	-0.679325171068328240,	
+-0.679288478349789670,	-0.679251783933029870,	-0.679215087818140330,	-0.679178390005213410,	-0.679141690494340480,	-0.679104989285613360,	-0.679068286379123310,	-0.679031581774963030,	
+-0.678994875473223680,	-0.678958167473996950,	-0.678921457777375000,	-0.678884746383449420,	-0.678848033292312030,	-0.678811318504054180,	-0.678774602018768380,	-0.678737883836546100,	
+-0.678701163957479150,	-0.678664442381658910,	-0.678627719109177850,	-0.678590994140127580,	-0.678554267474599680,	-0.678517539112685970,	-0.678480809054478610,	-0.678444077300069280,	
+-0.678407343849549700,	-0.678370608703011470,	-0.678333871860547170,	-0.678297133322248060,	-0.678260393088205740,	-0.678223651158512910,	-0.678186907533260830,	-0.678150162212541540,	
+-0.678113415196446410,	-0.678076666485068260,	-0.678039916078498340,	-0.678003163976828580,	-0.677966410180150690,	-0.677929654688557040,	-0.677892897502139210,	-0.677856138620989260,	
+-0.677819378045198540,	-0.677782615774859760,	-0.677745851810064410,	-0.677709086150904420,	-0.677672318797471360,	-0.677635549749857850,	-0.677598779008155570,	-0.677562006572455910,	
+-0.677525232442851570,	-0.677488456619434130,	-0.677451679102295650,	-0.677414899891527480,	-0.677378118987222550,	-0.677341336389472250,	-0.677304552098368600,	-0.677267766114003300,	
+-0.677230978436468840,	-0.677194189065856930,	-0.677157398002259600,	-0.677120605245768450,	-0.677083810796476060,	-0.677047014654474260,	-0.677010216819854850,	-0.676973417292709550,	
+-0.676936616073131050,	-0.676899813161210950,	-0.676863008557041400,	-0.676826202260713990,	-0.676789394272321320,	-0.676752584591955310,	-0.676715773219707440,	-0.676678960155670420,	
+-0.676642145399936060,	-0.676605328952596290,	-0.676568510813742920,	-0.676531690983468550,	-0.676494869461864990,	-0.676458046249024280,	-0.676421221345038130,	-0.676384394749999230,	
+-0.676347566463999290,	-0.676310736487130470,	-0.676273904819484460,	-0.676237071461154080,	-0.676200236412231040,	-0.676163399672807360,	-0.676126561242974770,	-0.676089721122826170,	
+-0.676052879312453280,	-0.676016035811947910,	-0.675979190621402770,	-0.675942343740909560,	-0.675905495170560530,	-0.675868644910447510,	-0.675831792960663200,	-0.675794939321299300,	
+-0.675758083992448080,	-0.675721226974201450,	-0.675684368266651900,	-0.675647507869891580,	-0.675610645784012420,	-0.675573782009106340,	-0.675536916545266040,	-0.675500049392583570,	
+-0.675463180551150840,	-0.675426310021060020,	-0.675389437802403680,	-0.675352563895273650,	-0.675315688299761960,	-0.675278811015961430,	-0.675241932043963770,	-0.675205051383861330,	
+-0.675168169035745950,	-0.675131284999710420,	-0.675094399275846690,	-0.675057511864247010,	-0.675020622765003190,	-0.674983731978208160,	-0.674946839503953730,	-0.674909945342332280,	
+-0.674873049493435630,	-0.674836151957356690,	-0.674799252734187390,	-0.674762351824019890,	-0.674725449226946220,	-0.674688544943059300,	-0.674651638972450950,	-0.674614731315213540,	
+-0.674577821971438900,	-0.674540910941220150,	-0.674503998224649020,	-0.674467083821817640,	-0.674430167732818830,	-0.674393249957744630,	-0.674356330496687310,	-0.674319409349738770,	
+-0.674282486516992070,	-0.674245561998539240,	-0.674208635794472430,	-0.674171707904883680,	-0.674134778329866010,	-0.674097847069511370,	-0.674060914123912220,	-0.674023979493160400,	
+-0.673987043177348920,	-0.673950105176569840,	-0.673913165490915510,	-0.673876224120477870,	-0.673839281065350070,	-0.673802336325624030,	-0.673765389901391900,	-0.673728441792746600,	
+-0.673691491999780180,	-0.673654540522585000,	-0.673617587361253210,	-0.673580632515877740,	-0.673543675986550630,	-0.673506717773364460,	-0.673469757876411060,	-0.673432796295783560,	
+-0.673395833031574240,	-0.673358868083875240,	-0.673321901452778700,	-0.673284933138377780,	-0.673247963140764520,	-0.673210991460031380,	-0.673174018096270420,	-0.673137043049574670,	
+-0.673100066320036380,	-0.673063087907747600,	-0.673026107812801480,	-0.672989126035289930,	-0.672952142575305670,	-0.672915157432940720,	-0.672878170608288250,	-0.672841182101440280,	
+-0.672804191912489410,	-0.672767200041527680,	-0.672730206488648340,	-0.672693211253943430,	-0.672656214337505440,	-0.672619215739426730,	-0.672582215459800240,	-0.672545213498718210,	
+-0.672508209856273130,	-0.672471204532557150,	-0.672434197527663650,	-0.672397188841684530,	-0.672360178474712080,	-0.672323166426839650,	-0.672286152698159170,	-0.672249137288763340,	
+-0.672212120198744320,	-0.672175101428195370,	-0.672138080977208730,	-0.672101058845876790,	-0.672064035034291910,	-0.672027009542547350,	-0.671989982370735150,	-0.671952953518948020,	
+-0.671915922987278200,	-0.671878890775818860,	-0.671841856884662360,	-0.671804821313901180,	-0.671767784063627580,	-0.671730745133934830,	-0.671693704524915390,	-0.671656662236661540,	
+-0.671619618269265750,	-0.671582572622821170,	-0.671545525297420290,	-0.671508476293155130,	-0.671471425610119190,	-0.671434373248404710,	-0.671397319208104190,	-0.671360263489310220,	
+-0.671323206092115820,	-0.671286147016613380,	-0.671249086262895590,	-0.671212023831054720,	-0.671174959721184130,	-0.671137893933376200,	-0.671100826467723510,	-0.671063757324318440,	
+-0.671026686503254250,	-0.670989614004623420,	-0.670952539828518550,	-0.670915463975031880,	-0.670878386444257010,	-0.670841307236286100,	-0.670804226351211730,	-0.670767143789126940,	
+-0.670730059550124440,	-0.670692973634296700,	-0.670655886041736200,	-0.670618796772536330,	-0.670581705826789440,	-0.670544613204588360,	-0.670507518906025330,	-0.670470422931193850,	
+-0.670433325280186400,	-0.670396225953095560,	-0.670359124950013820,	-0.670322022271034660,	-0.670284917916250440,	-0.670247811885753890,	-0.670210704179637460,	-0.670173594797994650,	
+-0.670136483740917830,	-0.670099371008499480,	-0.670062256600832960,	-0.670025140518010880,	-0.669988022760125920,	-0.669950903327270590,	-0.669913782219538230,	-0.669876659437021570,	
+-0.669839534979813190,	-0.669802408848005680,	-0.669765281041692420,	-0.669728151560965990,	-0.669691020405919210,	-0.669653887576644460,	-0.669616753073235430,	-0.669579616895784490,	
+-0.669542479044384460,	-0.669505339519127940,	-0.669468198320108400,	-0.669431055447418320,	-0.669393910901150630,	-0.669356764681397820,	-0.669319616788253470,	-0.669282467221810060,	
+-0.669245315982160190,	-0.669208163069397340,	-0.669171008483613990,	-0.669133852224903180,	-0.669096694293357500,	-0.669059534689070310,	-0.669022373412134330,	-0.668985210462642370,	
+-0.668948045840687120,	-0.668910879546361970,	-0.668873711579759720,	-0.668836541940973190,	-0.668799370630094980,	-0.668762197647218670,	-0.668725022992436750,	-0.668687846665842360,	
+-0.668650668667528090,	-0.668613488997587440,	-0.668576307656112980,	-0.668539124643197540,	-0.668501939958934590,	-0.668464753603416730,	-0.668427565576736990,	-0.668390375878988090,	
+-0.668353184510263490,	-0.668315991470656010,	-0.668278796760258480,	-0.668241600379163690,	-0.668204402327465250,	-0.668167202605255750,	-0.668130001212628220,	-0.668092798149675370,	
+-0.668055593416490900,	-0.668018387013167400,	-0.667981178939797910,	-0.667943969196475250,	-0.667906757783292890,	-0.667869544700343650,	-0.667832329947720240,	-0.667795113525516350,	
+-0.667757895433824690,	-0.667720675672738300,	-0.667683454242349870,	-0.667646231142753120,	-0.667609006374040750,	-0.667571779936305900,	-0.667534551829641280,	-0.667497322054140700,	
+-0.667460090609896640,	-0.667422857497002480,	-0.667385622715550800,	-0.667348386265635420,	-0.667311148147349040,	-0.667273908360784820,	-0.667236666906035450,	-0.667199423783194740,	
+-0.667162178992355530,	-0.667124932533610600,	-0.667087684407053570,	-0.667050434612777350,	-0.667013183150874990,	-0.666975930021439400,	-0.666938675224564290,	-0.666901418760342590,	
+-0.666864160628867220,	-0.666826900830231220,	-0.666789639364528290,	-0.666752376231851130,	-0.666715111432293120,	-0.666677844965947060,	-0.666640576832906670,	-0.666603307033264760,	
+-0.666566035567114690,	-0.666528762434549170,	-0.666491487635662020,	-0.666454211170546260,	-0.666416933039294830,	-0.666379653242000880,	-0.666342371778757990,	-0.666305088649659320,	
+-0.666267803854797450,	-0.666230517394266530,	-0.666193229268159270,	-0.666155939476568930,	-0.666118648019588420,	-0.666081354897311570,	-0.666044060109831420,	-0.666006763657240990,	
+-0.665969465539633430,	-0.665932165757102460,	-0.665894864309741210,	-0.665857561197642720,	-0.665820256420899930,	-0.665782949979606960,	-0.665745641873856540,	-0.665708332103742030,	
+-0.665671020669356350,	-0.665633707570793430,	-0.665596392808146310,	-0.665559076381507800,	-0.665521758290971930,	-0.665484438536631750,	-0.665447117118580400,	-0.665409794036910920,	
+-0.665372469291717340,	-0.665335142883092480,	-0.665297814811129930,	-0.665260485075922390,	-0.665223153677564020,	-0.665185820616147730,	-0.665148485891766890,	-0.665111149504514550,	
+-0.665073811454484630,	-0.665036471741770160,	-0.664999130366464630,	-0.664961787328660850,	-0.664924442628452850,	-0.664887096265933900,	-0.664849748241196800,	-0.664812398554335720,	
+-0.664775047205443560,	-0.664737694194613820,	-0.664700339521939520,	-0.664662983187514710,	-0.664625625191432420,	-0.664588265533786030,	-0.664550904214668670,	-0.664513541234174500,	
+-0.664476176592396330,	-0.664438810289427750,	-0.664401442325361800,	-0.664364072700292630,	-0.664326701414313270,	-0.664289328467517090,	-0.664251953859997360,	-0.664214577591847990,	
+-0.664177199663162240,	-0.664139820074033490,	-0.664102438824554890,	-0.664065055914820460,	-0.664027671344923350,	-0.663990285114956840,	-0.663952897225014830,	-0.663915507675190590,	
+-0.663878116465577710,	-0.663840723596269110,	-0.663803329067359060,	-0.663765932878940700,	-0.663728535031107400,	-0.663691135523952540,	-0.663653734357570140,	-0.663616331532053460,	
+-0.663578927047495880,	-0.663541520903990660,	-0.663504113101632040,	-0.663466703640513080,	-0.663429292520727350,	-0.663391879742368020,	-0.663354465305529440,	-0.663317049210304540,	
+-0.663279631456786810,	-0.663242212045070280,	-0.663204790975248320,	-0.663167368247414290,	-0.663129943861661460,	-0.663092517818084200,	-0.663055090116775550,	-0.663017660757829310,	
+-0.662980229741338520,	-0.662942797067397450,	-0.662905362736099460,	-0.662867926747538030,	-0.662830489101806420,	-0.662793049798998890,	-0.662755608839208810,	-0.662718166222529660,	
+-0.662680721949054810,	-0.662643276018878510,	-0.662605828432093920,	-0.662568379188794520,	-0.662530928289074450,	-0.662493475733027080,	-0.662456021520746010,	-0.662418565652324600,	
+-0.662381108127857000,	-0.662343648947436690,	-0.662306188111157270,	-0.662268725619112100,	-0.662231261471395330,	-0.662193795668100550,	-0.662156328209321130,	-0.662118859095150670,	
+-0.662081388325683310,	-0.662043915901012530,	-0.662006441821232030,	-0.661968966086434960,	-0.661931488696715920,	-0.661894009652168050,	-0.661856528952885270,	-0.661819046598960740,	
+-0.661781562590489040,	-0.661744076927563320,	-0.661706589610277060,	-0.661669100638724750,	-0.661631610012999640,	-0.661594117733195540,	-0.661556623799405720,	-0.661519128211724760,	
+-0.661481630970246040,	-0.661444132075063140,	-0.661406631526269550,	-0.661369129323959860,	-0.661331625468227210,	-0.661294119959165540,	-0.661256612796868200,	-0.661219103981429690,	
+-0.661181593512943480,	-0.661144081391503160,	-0.661106567617202430,	-0.661069052190135560,	-0.661031535110396030,	-0.660994016378077420,	-0.660956495993274000,	-0.660918973956079460,	
+-0.660881450266587400,	-0.660843924924891410,	-0.660806397931085860,	-0.660768869285264350,	-0.660731338987520790,	-0.660693807037948440,	-0.660656273436641910,	-0.660618738183694650,	
+-0.660581201279200610,	-0.660543662723253270,	-0.660506122515947090,	-0.660468580657375570,	-0.660431037147632630,	-0.660393491986811740,	-0.660355945175007400,	-0.660318396712313290,	
+-0.660280846598822800,	-0.660243294834630510,	-0.660205741419830130,	-0.660168186354515240,	-0.660130629638779550,	-0.660093071272717660,	-0.660055511256423140,	-0.660017949589989830,	
+-0.659980386273511300,	-0.659942821307082040,	-0.659905254690795860,	-0.659867686424746470,	-0.659830116509027560,	-0.659792544943733740,	-0.659754971728958470,	-0.659717396864795800,	
+-0.659679820351339320,	-0.659642242188683610,	-0.659604662376922280,	-0.659567080916149020,	-0.659529497806458310,	-0.659491913047943860,	-0.659454326640699700,	-0.659416738584819310,	
+-0.659379148880397500,	-0.659341557527527770,	-0.659303964526304130,	-0.659266369876820300,	-0.659228773579170870,	-0.659191175633449420,	-0.659153576039750110,	-0.659115974798166530,	
+-0.659078371908793260,	-0.659040767371724120,	-0.659003161187053040,	-0.658965553354873830,	-0.658927943875280970,	-0.658890332748368280,	-0.658852719974229670,	-0.658815105552959080,	
+-0.658777489484650980,	-0.658739871769399080,	-0.658702252407297300,	-0.658664631398440230,	-0.658627008742921460,	-0.658589384440835260,	-0.658551758492275210,	-0.658514130897336130,	
+-0.658476501656111710,	-0.658438870768696120,	-0.658401238235182930,	-0.658363604055666960,	-0.658325968230242030,	-0.658288330759002170,	-0.658250691642041090,	-0.658213050879453700,	
+-0.658175408471333600,	-0.658137764417775050,	-0.658100118718871750,	-0.658062471374718520,	-0.658024822385409050,	-0.657987171751037160,	-0.657949519471697770,	-0.657911865547484490,	
+-0.657874209978491550,	-0.657836552764812790,	-0.657798893906543000,	-0.657761233403776010,	-0.657723571256605850,	-0.657685907465126450,	-0.657648242029432620,	-0.657610574949618280,	
+-0.657572906225777350,	-0.657535235858003890,	-0.657497563846392690,	-0.657459890191037570,	-0.657422214892032670,	-0.657384537949471940,	-0.657346859363450280,	-0.657309179134061390,	
+-0.657271497261399220,	-0.657233813745558670,	-0.657196128586633570,	-0.657158441784718050,	-0.657120753339906270,	-0.657083063252292820,	-0.657045371521971730,	-0.657007678149037270,	
+-0.656969983133583240,	-0.656932286475704560,	-0.656894588175495180,	-0.656856888233049330,	-0.656819186648460950,	-0.656781483421824960,	-0.656743778553235180,	-0.656706072042785970,	
+-0.656668363890571370,	-0.656630654096686080,	-0.656592942661224140,	-0.656555229584279920,	-0.656517514865947230,	-0.656479798506321100,	-0.656442080505495460,	-0.656404360863564350,	
+-0.656366639580622580,	-0.656328916656764290,	-0.656291192092083750,	-0.656253465886674770,	-0.656215738040632490,	-0.656178008554050950,	-0.656140277427024300,	-0.656102544659646680,	
+-0.656064810252013020,	-0.656027074204217240,	-0.655989336516353940,	-0.655951597188516810,	-0.655913856220801120,	-0.655876113613300780,	-0.655838369366110060,	-0.655800623479323220,	
+-0.655762875953035060,	-0.655725126787339740,	-0.655687375982331290,	-0.655649623538104740,	-0.655611869454754140,	-0.655574113732373840,	-0.655536356371057890,	-0.655498597370901440,	
+-0.655460836731998510,	-0.655423074454443370,	-0.655385310538330270,	-0.655347544983754250,	-0.655309777790809460,	-0.655272008959590040,	-0.655234238490190360,	-0.655196466382705460,	
+-0.655158692637229370,	-0.655120917253856460,	-0.655083140232680990,	-0.655045361573798000,	-0.655007581277301630,	-0.654969799343285920,	-0.654932015771846120,	-0.654894230563076270,	
+-0.654856443717070860,	-0.654818655233923910,	-0.654780865113730680,	-0.654743073356585330,	-0.654705279962582320,	-0.654667484931815700,	-0.654629688264380730,	-0.654591889960371540,	
+-0.654554090019882630,	-0.654516288443008240,	-0.654478485229843420,	-0.654440680380482310,	-0.654402873895019500,	-0.654365065773549250,	-0.654327256016166590,	-0.654289444622965900,	
+-0.654251631594041210,	-0.654213816929487770,	-0.654176000629399730,	-0.654138182693871810,	-0.654100363122998020,	-0.654062541916873630,	-0.654024719075593010,	-0.653986894599250410,	
+-0.653949068487940430,	-0.653911240741757990,	-0.653873411360797460,	-0.653835580345153430,	-0.653797747694920160,	-0.653759913410192790,	-0.653722077491065590,	-0.653684239937633250,	
+-0.653646400749990030,	-0.653608559928231080,	-0.653570717472450770,	-0.653532873382743680,	-0.653495027659203980,	-0.653457180301927120,	-0.653419331311007270,	-0.653381480686538780,	
+-0.653343628428616930,	-0.653305774537335960,	-0.653267919012790690,	-0.653230061855075150,	-0.653192203064284830,	-0.653154342640513970,	-0.653116480583857300,	-0.653078616894409160,	
+-0.653040751572264710,	-0.653002884617518430,	-0.652965016030264910,	-0.652927145810598520,	-0.652889273958614620,	-0.652851400474407480,	-0.652813525358071910,	-0.652775648609702160,	
+-0.652737770229393610,	-0.652699890217240620,	-0.652662008573337560,	-0.652624125297779910,	-0.652586240390661930,	-0.652548353852078210,	-0.652510465682123450,	-0.652472575880892800,	
+-0.652434684448480630,	-0.652396791384981860,	-0.652358896690490740,	-0.652321000365102650,	-0.652283102408912070,	-0.652245202822013810,	-0.652207301604502130,	-0.652169398756472620,	
+-0.652131494278019530,	-0.652093588169237790,	-0.652055680430221660,	-0.652017771061066730,	-0.651979860061867370,	-0.651941947432717940,	-0.651904033173714040,	-0.651866117284950140,	
+-0.651828199766520840,	-0.651790280618520730,	-0.651752359841045180,	-0.651714437434188890,	-0.651676513398046330,	-0.651638587732712220,	-0.651600660438282020,	-0.651562731514850220,	
+-0.651524800962511420,	-0.651486868781360420,	-0.651448934971492590,	-0.651410999533002300,	-0.651373062465984590,	-0.651335123770533930,	-0.651297183446745700,	-0.651259241494714590,	
+-0.651221297914535420,	-0.651183352706302570,	-0.651145405870111720,	-0.651107457406057350,	-0.651069507314233960,	-0.651031555594737130,	-0.650993602247661450,	-0.650955647273101850,	
+-0.650917690671152680,	-0.650879732441909660,	-0.650841772585467270,	-0.650803811101920540,	-0.650765847991363830,	-0.650727883253892860,	-0.650689916889602200,	-0.650651948898586800,	
+-0.650613979280941110,	-0.650576008036760970,	-0.650538035166140620,	-0.650500060669175320,	-0.650462084545959440,	-0.650424106796588690,	-0.650386127421157760,	-0.650348146419761020,	
+-0.650310163792494400,	-0.650272179539452270,	-0.650234193660729760,	-0.650196206156421370,	-0.650158217026622910,	-0.650120226271428850,	-0.650082233890934110,	-0.650044239885233630,	
+-0.650006244254422770,	-0.649968246998596340,	-0.649930248117849270,	-0.649892247612276260,	-0.649854245481973010,	-0.649816241727034120,	-0.649778236347554610,	-0.649740229343629180,	
+-0.649702220715353440,	-0.649664210462822190,	-0.649626198586130130,	-0.649588185085372860,	-0.649550169960645190,	-0.649512153212042030,	-0.649474134839658210,	-0.649436114843589430,	
+-0.649398093223930270,	-0.649360069980775890,	-0.649322045114220980,	-0.649284018624361360,	-0.649245990511291620,	-0.649207960775106900,	-0.649169929415902010,	-0.649131896433772560,	
+-0.649093861828813460,	-0.649055825601119630,	-0.649017787750786000,	-0.648979748277908160,	-0.648941707182580930,	-0.648903664464899110,	-0.648865620124958520,	-0.648827574162853860,	
+-0.648789526578680160,	-0.648751477372532470,	-0.648713426544506260,	-0.648675374094696670,	-0.648637320023198520,	-0.648599264330106730,	-0.648561207015517120,	-0.648523148079524490,	
+-0.648485087522224110,	-0.648447025343710570,	-0.648408961544079790,	-0.648370896123426580,	-0.648332829081846200,	-0.648294760419433460,	-0.648256690136284060,	-0.648218618232492940,	
+-0.648180544708155340,	-0.648142469563365960,	-0.648104392798220740,	-0.648066314412814590,	-0.648028234407242330,	-0.647990152781599770,	-0.647952069535981940,	-0.647913984670483780,	
+-0.647875898185200420,	-0.647837810080227670,	-0.647799720355660360,	-0.647761629011593730,	-0.647723536048122720,	-0.647685441465343130,	-0.647647345263349990,	-0.647609247442238580,	
+-0.647571148002103580,	-0.647533046943041150,	-0.647494944265145980,	-0.647456839968513550,	-0.647418734053238690,	-0.647380626519417300,	-0.647342517367144320,	-0.647304406596514670,	
+-0.647266294207624380,	-0.647228180200568380,	-0.647190064575441930,	-0.647151947332340050,	-0.647113828471358570,	-0.647075707992592510,	-0.647037585896137140,	-0.646999462182087480,	
+-0.646961336850539580,	-0.646923209901588250,	-0.646885081335328960,	-0.646846951151856640,	-0.646808819351267220,	-0.646770685933655830,	-0.646732550899117630,	-0.646694414247747760,	
+-0.646656275979642260,	-0.646618136094895930,	-0.646579994593604050,	-0.646541851475862410,	-0.646503706741766270,	-0.646465560391410790,	-0.646427412424890990,	-0.646389262842303140,	
+-0.646351111643742040,	-0.646312958829303290,	-0.646274804399081690,	-0.646236648353173400,	-0.646198490691673570,	-0.646160331414677440,	-0.646122170522280160,	-0.646084008014577770,	
+-0.646045843891665420,	-0.646007678153638460,	-0.645969510800591950,	-0.645931341832622020,	-0.645893171249823710,	-0.645854999052292490,	-0.645816825240123400,	-0.645778649813412600,	
+-0.645740472772255210,	-0.645702294116746290,	-0.645664113846981860,	-0.645625931963057290,	-0.645587748465067830,	-0.645549563353108650,	-0.645511376627275980,	-0.645473188287664760,	
+-0.645434998334370680,	-0.645396806767488670,	-0.645358613587114990,	-0.645320418793344790,	-0.645282222386273640,	-0.645244024365996480,	-0.645205824732609680,	-0.645167623486208260,	
+-0.645129420626887720,	-0.645091216154743410,	-0.645053010069871370,	-0.645014802372366750,	-0.644976593062324800,	-0.644938382139841780,	-0.644900169605012730,	-0.644861955457933230,	
+-0.644823739698698550,	-0.644785522327404940,	-0.644747303344147430,	-0.644709082749021610,	-0.644670860542122860,	-0.644632636723547310,	-0.644594411293390010,	-0.644556184251746880,	
+-0.644517955598712830,	-0.644479725334384250,	-0.644441493458856370,	-0.644403259972224700,	-0.644365024874584580,	-0.644326788166032280,	-0.644288549846662950,	-0.644250309916571950,	
+-0.644212068375855430,	-0.644173825224608860,	-0.644135580462927630,	-0.644097334090907190,	-0.644059086108643710,	-0.644020836516232540,	-0.643982585313769280,	-0.643944332501349190,	
+-0.643906078079068630,	-0.643867822047022860,	-0.643829564405307480,	-0.643791305154017950,	-0.643753044293250420,	-0.643714781823100380,	-0.643676517743663300,	-0.643638252055034550,	
+-0.643599984757310620,	-0.643561715850586640,	-0.643523445334958090,	-0.643485173210521230,	-0.643446899477371440,	-0.643408624135604400,	-0.643370347185315490,	-0.643332068626601080,	
+-0.643293788459556430,	-0.643255506684277330,	-0.643217223300859060,	-0.643178938309398210,	-0.643140651709989910,	-0.643102363502729980,	-0.643064073687713900,	-0.643025782265037930,	
+-0.642987489234797430,	-0.642949194597088320,	-0.642910898352005770,	-0.642872600499646450,	-0.642834301040105530,	-0.642795999973478800,	-0.642757697299861870,	-0.642719393019350990,	
+-0.642681087132041640,	-0.642642779638029180,	-0.642604470537410100,	-0.642566159830279870,	-0.642527847516734310,	-0.642489533596868670,	-0.642451218070779650,	-0.642412900938562510,	
+-0.642374582200313180,	-0.642336261856127020,	-0.642297939906100510,	-0.642259616350329130,	-0.642221291188908800,	-0.642182964421934900,	-0.642144636049503890,	-0.642106306071711260,	
+-0.642067974488652940,	-0.642029641300424280,	-0.641991306507121880,	-0.641952970108841230,	-0.641914632105677780,	-0.641876292497728150,	-0.641837951285087690,	-0.641799608467852440,	
+-0.641761264046117770,	-0.641722918019980380,	-0.641684570389535640,	-0.641646221154879460,	-0.641607870316107330,	-0.641569517873315950,	-0.641531163826600690,	-0.641492808176057580,	
+-0.641454450921782100,	-0.641416092063870850,	-0.641377731602419400,	-0.641339369537523570,	-0.641301005869278960,	-0.641262640597782260,	-0.641224273723128960,	-0.641185905245414520,	
+-0.641147535164735770,	-0.641109163481188070,	-0.641070790194867570,	-0.641032415305869630,	-0.640994038814291070,	-0.640955660720227470,	-0.640917281023774650,	-0.640878899725028320,	
+-0.640840516824085050,	-0.640802132321040440,	-0.640763746215990640,	-0.640725358509031010,	-0.640686969200258360,	-0.640648578289768290,	-0.640610185777656830,	-0.640571791664019450,	
+-0.640533395948952980,	-0.640494998632553100,	-0.640456599714915640,	-0.640418199196136410,	-0.640379797076311870,	-0.640341393355537970,	-0.640302988033910280,	-0.640264581111525400,	
+-0.640226172588479030,	-0.640187762464867300,	-0.640149350740785720,	-0.640110937416331180,	-0.640072522491599290,	-0.640034105966686080,	-0.639995687841687260,	-0.639957268116699620,	
+-0.639918846791818760,	-0.639880423867140840,	-0.639841999342761420,	-0.639803573218777450,	-0.639765145495284400,	-0.639726716172378640,	-0.639688285250155640,	-0.639649852728712330,	
+-0.639611418608144410,	-0.639572982888547580,	-0.639534545570018540,	-0.639496106652653330,	-0.639457666136547640,	-0.639419224021797630,	-0.639380780308499760,	-0.639342334996749970,	
+-0.639303888086644400,	-0.639265439578278750,	-0.639226989471749830,	-0.639188537767153450,	-0.639150084464585650,	-0.639111629564142470,	-0.639073173065920370,	-0.639034714970015410,	
+-0.638996255276523710,	-0.638957793985540980,	-0.638919331097164140,	-0.638880866611488910,	-0.638842400528611190,	-0.638803932848627910,	-0.638765463571634660,	-0.638726992697727810,	
+-0.638688520227003180,	-0.638650046159557560,	-0.638611570495486780,	-0.638573093234887090,	-0.638534614377854410,	-0.638496133924485450,	-0.638457651874876130,	-0.638419168229122810,	
+-0.638380682987321090,	-0.638342196149568110,	-0.638303707715959570,	-0.638265217686591720,	-0.638226726061560610,	-0.638188232840962930,	-0.638149738024894720,	-0.638111241613451790,	
+-0.638072743606731160,	-0.638034244004828550,	-0.637995742807840440,	-0.637957240015862630,	-0.637918735628992040,	-0.637880229647324490,	-0.637841722070956570,	-0.637803212899983870,	
+-0.637764702134503540,	-0.637726189774611370,	-0.637687675820403870,	-0.637649160271976710,	-0.637610643129427060,	-0.637572124392850830,	-0.637533604062344160,	-0.637495082138003210,	
+-0.637456558619924900,	-0.637418033508205250,	-0.637379506802940420,	-0.637340978504226550,	-0.637302448612160570,	-0.637263917126838500,	-0.637225384048356160,	-0.637186849376810800,	
+-0.637148313112298360,	-0.637109775254915080,	-0.637071235804757000,	-0.637032694761921260,	-0.636994152126503680,	-0.636955607898600730,	-0.636917062078308450,	-0.636878514665723870,	
+-0.636839965660943030,	-0.636801415064062180,	-0.636762862875177580,	-0.636724309094386040,	-0.636685753721783820,	-0.636647196757467170,	-0.636608638201532130,	-0.636570078054075950,	
+-0.636531516315194560,	-0.636492952984983980,	-0.636454388063541380,	-0.636415821550962770,	-0.636377253447344640,	-0.636338683752783130,	-0.636300112467375170,	-0.636261539591216900,	
+-0.636222965124404790,	-0.636184389067034890,	-0.636145811419204450,	-0.636107232181009510,	-0.636068651352546420,	-0.636030068933911340,	-0.635991484925201410,	-0.635952899326512890,	
+-0.635914312137942030,	-0.635875723359584980,	-0.635837132991539100,	-0.635798541033900320,	-0.635759947486764900,	-0.635721352350229860,	-0.635682755624391470,	-0.635644157309346200,	
+-0.635605557405190200,	-0.635566955912020730,	-0.635528352829933810,	-0.635489748159025920,	-0.635451141899393450,	-0.635412534051133400,	-0.635373924614342060,	-0.635335313589115880,	
+-0.635296700975551020,	-0.635258086773744850,	-0.635219470983793390,	-0.635180853605793240,	-0.635142234639840650,	-0.635103614086032890,	-0.635064991944465970,	-0.635026368215236610,	
+-0.634987742898441070,	-0.634949115994176360,	-0.634910487502538980,	-0.634871857423625060,	-0.634833225757531760,	-0.634794592504355440,	-0.634755957664192570,	-0.634717321237139530,	
+-0.634678683223293460,	-0.634640043622750840,	-0.634601402435607920,	-0.634562759661961300,	-0.634524115301908000,	-0.634485469355544510,	-0.634446821822967300,	-0.634408172704272740,	
+-0.634369521999557980,	-0.634330869708919500,	-0.634292215832453880,	-0.634253560370257260,	-0.634214903322427250,	-0.634176244689059860,	-0.634137584470251590,	-0.634098922666099570,	
+-0.634060259276700400,	-0.634021594302150440,	-0.633982927742546280,	-0.633944259597985060,	-0.633905589868563270,	-0.633866918554377380,	-0.633828245655523980,	-0.633789571172100220,	
+-0.633750895104202570,	-0.633712217451927740,	-0.633673538215371870,	-0.633634857394632660,	-0.633596174989806250,	-0.633557491000989350,	-0.633518805428278430,	-0.633480118271770860,	
+-0.633441429531562910,	-0.633402739207751140,	-0.633364047300432830,	-0.633325353809704340,	-0.633286658735662590,	-0.633247962078403730,	-0.633209263838025340,	-0.633170564014623900,	
+-0.633131862608295900,	-0.633093159619138040,	-0.633054455047247440,	-0.633015748892720830,	-0.632977041155654900,	-0.632938331836145900,	-0.632899620934291420,	-0.632860908450187940,	
+-0.632822194383932280,	-0.632783478735620690,	-0.632744761505350750,	-0.632706042693218840,	-0.632667322299321540,	-0.632628600323756340,	-0.632589876766619600,	-0.632551151628008120,	
+-0.632512424908018400,	-0.632473696606748010,	-0.632434966724293450,	-0.632396235260751390,	-0.632357502216218450,	-0.632318767590791970,	-0.632280031384568670,	-0.632241293597645360,	
+-0.632202554230118400,	-0.632163813282085370,	-0.632125070753642880,	-0.632086326644887620,	-0.632047580955916290,	-0.632008833686826250,	-0.631970084837714220,	-0.631931334408676880,	
+-0.631892582399810940,	-0.631853828811213880,	-0.631815073642982280,	-0.631776316895212630,	-0.631737558568002510,	-0.631698798661448510,	-0.631660037175647450,	-0.631621274110696020,	
+-0.631582509466691700,	-0.631543743243731190,	-0.631504975441911200,	-0.631466206061328530,	-0.631427435102080660,	-0.631388662564264180,	-0.631349888447976130,	-0.631311112753312980,	
+-0.631272335480372320,	-0.631233556629250850,	-0.631194776200045490,	-0.631155994192852840,	-0.631117210607770600,	-0.631078425444895340,	-0.631039638704323560,	-0.631000850386153170,	
+-0.630962060490480540,	-0.630923269017402810,	-0.630884475967016580,	-0.630845681339419540,	-0.630806885134708170,	-0.630768087352979730,	-0.630729287994330590,	-0.630690487058858660,	
+-0.630651684546660540,	-0.630612880457833150,	-0.630574074792473180,	-0.630535267550678460,	-0.630496458732545560,	-0.630457648338171420,	-0.630418836367652840,	-0.630380022821087630,	
+-0.630341207698572270,	-0.630302391000203580,	-0.630263572726079250,	-0.630224752876295870,	-0.630185931450950810,	-0.630147108450140440,	-0.630108283873962670,	-0.630069457722514210,	
+-0.630030629995892100,	-0.629991800694193140,	-0.629952969817514920,	-0.629914137365954250,	-0.629875303339608280,	-0.629836467738573820,	-0.629797630562948350,	-0.629758791812828900,	
+-0.629719951488312500,	-0.629681109589495860,	-0.629642266116476780,	-0.629603421069352080,	-0.629564574448218670,	-0.629525726253173600,	-0.629486876484314560,	-0.629448025141738370,	
+-0.629409172225541710,	-0.629370317735822420,	-0.629331461672677390,	-0.629292604036203680,	-0.629253744826498210,	-0.629214884043658660,	-0.629176021687781860,	-0.629137157758965060,	
+-0.629098292257304960,	-0.629059425182899590,	-0.629020556535845540,	-0.628981686316240070,	-0.628942814524180220,	-0.628903941159763560,	-0.628865066223087020,	-0.628826189714247860,	
+-0.628787311633342890,	-0.628748431980469920,	-0.628709550755725880,	-0.628670667959207670,	-0.628631783591013130,	-0.628592897651239160,	-0.628554010139982910,	-0.628515121057341310,	
+-0.628476230403412270,	-0.628437338178292610,	-0.628398444382079590,	-0.628359549014870120,	-0.628320652076762130,	-0.628281753567852540,	-0.628242853488238500,	-0.628203951838017030,	
+-0.628165048617286060,	-0.628126143826142400,	-0.628087237464683420,	-0.628048329533006040,	-0.628009420031208080,	-0.627970508959386660,	-0.627931596317638620,	-0.627892682106061860,	
+-0.627853766324753430,	-0.627814848973810570,	-0.627775930053330320,	-0.627737009563410500,	-0.627698087504148240,	-0.627659163875640690,	-0.627620238677984890,	-0.627581311911278860,	
+-0.627542383575619530,	-0.627503453671104270,	-0.627464522197830110,	-0.627425589155894860,	-0.627386654545395660,	-0.627347718366429890,	-0.627308780619094340,	-0.627269841303487290,	
+-0.627230900419705640,	-0.627191957967846440,	-0.627153013948007600,	-0.627114068360286270,	-0.627075121204779710,	-0.627036172481585050,	-0.626997222190800340,	-0.626958270332522490,	
+-0.626919316906848990,	-0.626880361913876860,	-0.626841405353704250,	-0.626802447226428080,	-0.626763487532145720,	-0.626724526270954320,	-0.626685563442952010,	-0.626646599048235720,	
+-0.626607633086903040,	-0.626568665559050890,	-0.626529696464777300,	-0.626490725804179640,	-0.626451753577355050,	-0.626412779784400800,	-0.626373804425414900,	-0.626334827500494520,	
+-0.626295849009736670,	-0.626256868953239620,	-0.626217887331100400,	-0.626178904143416370,	-0.626139919390284790,	-0.626100933071803810,	-0.626061945188070460,	-0.626022955739182210,	
+-0.625983964725236210,	-0.625944972146330710,	-0.625905978002562760,	-0.625866982294029820,	-0.625827985020829150,	-0.625788986183058780,	-0.625749985780816090,	-0.625710983814198320,	
+-0.625671980283302730,	-0.625632975188227580,	-0.625593968529070010,	-0.625554960305927170,	-0.625515950518897190,	-0.625476939168077450,	-0.625437926253565310,	-0.625398911775458030,	
+-0.625359895733853750,	-0.625320878128849730,	-0.625281858960543560,	-0.625242838229032480,	-0.625203815934414540,	-0.625164792076787100,	-0.625125766656247640,	-0.625086739672893410,	
+-0.625047711126822780,	-0.625008681018132780,	-0.624969649346921120,	-0.624930616113284930,	-0.624891581317322590,	-0.624852544959131340,	-0.624813507038808340,	-0.624774467556451940,	
+-0.624735426512159300,	-0.624696383906028220,	-0.624657339738155740,	-0.624618294008640220,	-0.624579246717579030,	-0.624540197865069760,	-0.624501147451209550,	-0.624462095476096880,	
+-0.624423041939829000,	-0.624383986842503510,	-0.624344930184217660,	-0.624305871965069810,	-0.624266812185157340,	-0.624227750844577820,	-0.624188687943428630,	-0.624149623481807910,	
+-0.624110557459813250,	-0.624071489877542240,	-0.624032420735092020,	-0.623993350032561180,	-0.623954277770046970,	-0.623915203947646770,	-0.623876128565458820,	-0.623837051623580610,	
+-0.623797973122109720,	-0.623758893061143520,	-0.623719811440780480,	-0.623680728261117980,	-0.623641643522253600,	-0.623602557224284700,	-0.623563469367309780,	-0.623524379951426290,	
+-0.623485288976731720,	-0.623446196443323660,	-0.623407102351300480,	-0.623368006700759420,	-0.623328909491798420,	-0.623289810724514840,	-0.623250710399007040,	-0.623211608515372490,	
+-0.623172505073708580,	-0.623133400074113660,	-0.623094293516685330,	-0.623055185401521270,	-0.623016075728718870,	-0.622976964498376580,	-0.622937851710591910,	-0.622898737365462640,	
+-0.622859621463086150,	-0.622820504003561040,	-0.622781384986984540,	-0.622742264413454700,	-0.622703142283068780,	-0.622664018595925350,	-0.622624893352121900,	-0.622585766551756240,	
+-0.622546638194925730,	-0.622507508281729070,	-0.622468376812263640,	-0.622429243786626780,	-0.622390109204917330,	-0.622350973067232530,	-0.622311835373670300,	-0.622272696124328120,	
+-0.622233555319304580,	-0.622194412958697150,	-0.622155269042603650,	-0.622116123571121670,	-0.622076976544349680,	-0.622037827962385270,	-0.621998677825326250,	-0.621959526133270320,	
+-0.621920372886315740,	-0.621881218084560430,	-0.621842061728101970,	-0.621802903817037960,	-0.621763744351467080,	-0.621724583331486840,	-0.621685420757194800,	-0.621646256628689550,	
+-0.621607090946068700,	-0.621567923709430150,	-0.621528754918871380,	-0.621489584574490990,	-0.621450412676386790,	-0.621411239224656460,	-0.621372064219397720,	-0.621332887660709150,	
+-0.621293709548688340,	-0.621254529883433330,	-0.621215348665041580,	-0.621176165893611910,	-0.621136981569241690,	-0.621097795692029160,	-0.621058608262071710,	-0.621019419279468020,	
+-0.620980228744315910,	-0.620941036656713190,	-0.620901843016757440,	-0.620862647824547590,	-0.620823451080181000,	-0.620784252783755490,	-0.620745052935369630,	-0.620705851535121140,	
+-0.620666648583108050,	-0.620627444079428050,	-0.620588238024179730,	-0.620549030417460790,	-0.620509821259369380,	-0.620470610550002970,	-0.620431398289460480,	-0.620392184477839390,	
+-0.620352969115237850,	-0.620313752201753550,	-0.620274533737485310,	-0.620235313722530600,	-0.620196092156987680,	-0.620156869040954130,	-0.620117644374528880,	-0.620078418157809400,	
+-0.620039190390893500,	-0.619999961073880110,	-0.619960730206866710,	-0.619921497789951540,	-0.619882263823232190,	-0.619843028306807600,	-0.619803791240775450,	-0.619764552625233780,	
+-0.619725312460280400,	-0.619686070746014120,	-0.619646827482532640,	-0.619607582669934100,	-0.619568336308316200,	-0.619529088397777870,	-0.619489838938416800,	-0.619450587930331140,	
+-0.619411335373618700,	-0.619372081268378170,	-0.619332825614707480,	-0.619293568412704440,	-0.619254309662467750,	-0.619215049364095330,	-0.619175787517685210,	-0.619136524123335420,	
+-0.619097259181144550,	-0.619057992691210530,	-0.619018724653631610,	-0.618979455068505490,	-0.618940183935931090,	-0.618900911256006210,	-0.618861637028829010,	-0.618822361254497410,	
+-0.618783083933110320,	-0.618743805064765450,	-0.618704524649561050,	-0.618665242687595040,	-0.618625959178966230,	-0.618586674123772550,	-0.618547387522112140,	-0.618508099374083020,	
+-0.618468809679783900,	-0.618429518439312820,	-0.618390225652767580,	-0.618350931320247100,	-0.618311635441849190,	-0.618272338017672340,	-0.618233039047814240,	-0.618193738532373920,	
+-0.618154436471449300,	-0.618115132865138530,	-0.618075827713539530,	-0.618036521016751440,	-0.617997212774871960,	-0.617957902987999460,	-0.617918591656231860,	-0.617879278779668080,	
+-0.617839964358406160,	-0.617800648392544340,	-0.617761330882180550,	-0.617722011827413710,	-0.617682691228341850,	-0.617643369085063010,	-0.617604045397675990,	-0.617564720166278950,	
+-0.617525393390970010,	-0.617486065071847330,	-0.617446735209009830,	-0.617407403802555430,	-0.617368070852582610,	-0.617328736359189170,	-0.617289400322474260,	-0.617250062742535910,	
+-0.617210723619472380,	-0.617171382953381590,	-0.617132040744362790,	-0.617092696992513900,	-0.617053351697933180,	-0.617014004860718890,	-0.616974656480969830,	-0.616935306558784150,	
+-0.616895955094259760,	-0.616856602087495930,	-0.616817247538590570,	-0.616777891447642170,	-0.616738533814748520,	-0.616699174640009010,	-0.616659813923521540,	-0.616620451665384590,	
+-0.616581087865696100,	-0.616541722524555300,	-0.616502355642060130,	-0.616462987218309060,	-0.616423617253400220,	-0.616384245747432670,	-0.616344872700504420,	-0.616305498112714070,	
+-0.616266121984159640,	-0.616226744314940290,	-0.616187365105154040,	-0.616147984354899370,	-0.616108602064274310,	-0.616069218233378240,	-0.616029832862309060,	-0.615990445951164920,	
+-0.615951057500044970,	-0.615911667509047470,	-0.615872275978270770,	-0.615832882907813130,	-0.615793488297773470,	-0.615754092148250170,	-0.615714694459341680,	-0.615675295231146060,	
+-0.615635894463762550,	-0.615596492157289290,	-0.615557088311824760,	-0.615517682927467220,	-0.615478276004315820,	-0.615438867542468680,	-0.615399457542024520,	-0.615360046003081250,	
+-0.615320632925738130,	-0.615281218310093530,	-0.615241802156245580,	-0.615202384464293430,	-0.615162965234335330,	-0.615123544466469770,	-0.615084122160795000,	-0.615044698317410380,	
+-0.615005272936413940,	-0.614965846017904270,	-0.614926417561979740,	-0.614886987568739380,	-0.614847556038281670,	-0.614808122970704970,	-0.614768688366107760,	-0.614729252224589070,	
+-0.614689814546247270,	-0.614650375331180940,	-0.614610934579488340,	-0.614571492291268730,	-0.614532048466620350,	-0.614492603105641580,	-0.614453156208431550,	-0.614413707775088750,	
+-0.614374257805711640,	-0.614334806300398490,	-0.614295353259248670,	-0.614255898682360520,	-0.614216442569832650,	-0.614176984921763310,	-0.614137525738251750,	-0.614098065019396460,	
+-0.614058602765296000,	-0.614019138976048760,	-0.613979673651753880,	-0.613940206792509930,	-0.613900738398415410,	-0.613861268469568680,	-0.613821797006069200,	-0.613782324008015130,	
+-0.613742849475504950,	-0.613703373408638010,	-0.613663895807512570,	-0.613624416672227450,	-0.613584936002881000,	-0.613545453799572480,	-0.613505970062400370,	-0.613466484791463260,	
+-0.613426997986859620,	-0.613387509648688820,	-0.613348019777049340,	-0.613308528372039750,	-0.613269035433758440,	-0.613229540962304980,	-0.613190044957777620,	-0.613150547420275080,	
+-0.613111048349895940,	-0.613071547746739440,	-0.613032045610904190,	-0.612992541942488760,	-0.612953036741591520,	-0.612913530008312170,	-0.612874021742748960,	-0.612834511945000380,	
+-0.612795000615165790,	-0.612755487753343760,	-0.612715973359633010,	-0.612676457434131900,	-0.612636939976940130,	-0.612597420988155950,	-0.612557900467878170,	-0.612518378416205380,	
+-0.612478854833236940,	-0.612439329719071330,	-0.612399803073807370,	-0.612360274897543630,	-0.612320745190379600,	-0.612281213952413640,	-0.612241681183744670,	-0.612202146884471050,	
+-0.612162611054692500,	-0.612123073694507470,	-0.612083534804014340,	-0.612043994383312700,	-0.612004452432501120,	-0.611964908951678320,	-0.611925363940942990,	-0.611885817400394600,	
+-0.611846269330131640,	-0.611806719730253020,	-0.611767168600857230,	-0.611727615942043950,	-0.611688061753911550,	-0.611648506036558960,	-0.611608948790084870,	-0.611569390014588650,	
+-0.611529829710169000,	-0.611490267876924840,	-0.611450704514954540,	-0.611411139624357890,	-0.611371573205233390,	-0.611332005257679610,	-0.611292435781796150,	-0.611252864777681590,	
+-0.611213292245434970,	-0.611173718185154650,	-0.611134142596940430,	-0.611094565480890810,	-0.611054986837104910,	-0.611015406665681100,	-0.610975824966719090,	-0.610936241740317580,	
+-0.610896656986575360,	-0.610857070705591250,	-0.610817482897464850,	-0.610777893562294620,	-0.610738302700179700,	-0.610698710311218700,	-0.610659116395511290,	-0.610619520953156080,	
+-0.610579923984252090,	-0.610540325488897920,	-0.610500725467193250,	-0.610461123919236790,	-0.610421520845127130,	-0.610381916244964070,	-0.610342310118846210,	-0.610302702466872570,	
+-0.610263093289141860,	-0.610223482585753650,	-0.610183870356806880,	-0.610144256602400350,	-0.610104641322632870,	-0.610065024517604030,	-0.610025406187412740,	-0.609985786332157940,	
+-0.609946164951938320,	-0.609906542046853570,	-0.609866917617002510,	-0.609827291662484170,	-0.609787664183397250,	-0.609748035179841440,	-0.609708404651915670,	-0.609668772599718410,	
+-0.609629139023349700,	-0.609589503922908120,	-0.609549867298492700,	-0.609510229150202250,	-0.609470589478136700,	-0.609430948282394520,	-0.609391305563075080,	-0.609351661320277070,	
+-0.609312015554100080,	-0.609272368264643260,	-0.609232719452005410,	-0.609193069116285350,	-0.609153417257583100,	-0.609113763875997250,	-0.609074108971626950,	-0.609034452544571110,	
+-0.608994794594929440,	-0.608955135122800750,	-0.608915474128283950,	-0.608875811611478750,	-0.608836147572484050,	-0.608796482011398910,	-0.608756814928322340,	-0.608717146323354050,	
+-0.608677476196592850,	-0.608637804548137980,	-0.608598131378088270,	-0.608558456686543510,	-0.608518780473602640,	-0.608479102739364900,	-0.608439423483928990,	-0.608399742707394830,	
+-0.608360060409861350,	-0.608320376591427790,	-0.608280691252192860,	-0.608241004392256590,	-0.608201316011717790,	-0.608161626110675260,	-0.608121934689229150,	-0.608082241747478160,	
+-0.608042547285521540,	-0.608002851303458210,	-0.607963153801388100,	-0.607923454779410120,	-0.607883754237623530,	-0.607844052176127140,	-0.607804348595021080,	-0.607764643494404070,	
+-0.607724936874375450,	-0.607685228735034170,	-0.607645519076480120,	-0.607605807898812240,	-0.607566095202130010,	-0.607526380986532000,	-0.607486665252118470,	-0.607446947998988350,	
+-0.607407229227240770,	-0.607367508936974780,	-0.607327787128290390,	-0.607288063801286530,	-0.607248338956062120,	-0.607208612592717190,	-0.607168884711350780,	-0.607129155312062130,	
+-0.607089424394950280,	-0.607049691960115270,	-0.607009958007655890,	-0.606970222537671740,	-0.606930485550261630,	-0.606890747045525700,	-0.606851007023562870,	-0.606811265484472510,	
+-0.606771522428353640,	-0.606731777855306300,	-0.606692031765429520,	-0.606652284158822660,	-0.606612535035584770,	-0.606572784395815860,	-0.606533032239615080,	-0.606493278567081240,	
+-0.606453523378314600,	-0.606413766673414180,	-0.606374008452479350,	-0.606334248715609150,	-0.606294487462903600,	-0.606254724694461840,	-0.606214960410383360,	-0.606175194610767080,	
+-0.606135427295713240,	-0.606095658465320760,	-0.606055888119689130,	-0.606016116258917380,	-0.605976342883105760,	-0.605936567992353290,	-0.605896791586759350,	-0.605857013666423080,	
+-0.605817234231444730,	-0.605777453281923120,	-0.605737670817957710,	-0.605697886839648310,	-0.605658101347094300,	-0.605618314340395040,	-0.605578525819649550,	-0.605538735784958200,	
+-0.605498944236420030,	-0.605459151174134400,	-0.605419356598200560,	-0.605379560508718770,	-0.605339762905787950,	-0.605299963789507790,	-0.605260163159977330,	-0.605220361017296930,	
+-0.605180557361565510,	-0.605140752192882770,	-0.605100945511347740,	-0.605061137317060680,	-0.605021327610120840,	-0.604981516390627690,	-0.604941703658680390,	-0.604901889414379060,	
+-0.604862073657823180,	-0.604822256389111690,	-0.604782437608344830,	-0.604742617315621960,	-0.604702795511042560,	-0.604662972194705770,	-0.604623147366711970,	-0.604583321027160280,	
+-0.604543493176150300,	-0.604503663813781180,	-0.604463832940153270,	-0.604424000555365830,	-0.604384166659518330,	-0.604344331252710030,	-0.604304494335041410,	-0.604264655906611380,	
+-0.604224815967519760,	-0.604184974517865790,	-0.604145131557749740,	-0.604105287087270850,	-0.604065441106528380,	-0.604025593615622690,	-0.603985744614652930,	-0.603945894103718910,	
+-0.603906042082919760,	-0.603866188552355740,	-0.603826333512126450,	-0.603786476962331230,	-0.603746618903069470,	-0.603706759334441510,	-0.603666898256546620,	-0.603627035669484500,	
+-0.603587171573354510,	-0.603547305968256900,	-0.603507438854291030,	-0.603467570231556620,	-0.603427700100152790,	-0.603387828460180130,	-0.603347955311737900,	-0.603308080654925470,	
+-0.603268204489843200,	-0.603228326816590330,	-0.603188447635266690,	-0.603148566945971630,	-0.603108684748805410,	-0.603068801043867510,	-0.603028915831257620,	-0.602989029111075100,	
+-0.602949140883420330,	-0.602909251148392780,	-0.602869359906092030,	-0.602829467156617560,	-0.602789572900069740,	-0.602749677136548030,	-0.602709779866152150,	-0.602669881088981450,	
+-0.602629980805136300,	-0.602590079014716280,	-0.602550175717820770,	-0.602510270914550120,	-0.602470364605003810,	-0.602430456789281530,	-0.602390547467482770,	-0.602350636639708000,	
+-0.602310724306056700,	-0.602270810466628450,	-0.602230895121522950,	-0.602190978270840560,	-0.602151059914680650,	-0.602111140053143150,	-0.602071218686327400,	-0.602031295814334010,	
+-0.601991371437262330,	-0.601951445555212290,	-0.601911518168283250,	-0.601871589276575800,	-0.601831658880189300,	-0.601791726979223670,	-0.601751793573778390,	-0.601711858663954050,	
+-0.601671922249849890,	-0.601631984331565730,	-0.601592044909201930,	-0.601552103982857970,	-0.601512161552633760,	-0.601472217618628790,	-0.601432272180943640,	-0.601392325239677890,	
+-0.601352376794931250,	-0.601312426846803310,	-0.601272475395394630,	-0.601232522440804830,	-0.601192567983133700,	-0.601152612022480830,	-0.601112654558946690,	-0.601072695592630990,	
+-0.601032735123633530,	-0.600992773152053910,	-0.600952809677992580,	-0.600912844701549380,	-0.600872878222823650,	-0.600832910241916100,	-0.600792940758926310,	-0.600752969773954090,	
+-0.600712997287099150,	-0.600673023298462060,	-0.600633047808142310,	-0.600593070816240030,	-0.600553092322854810,	-0.600513112328087020,	-0.600473130832036570,	-0.600433147834803280,	
+-0.600393163336486730,	-0.600353177337187740,	-0.600313189837005660,	-0.600273200836040740,	-0.600233210334392360,	-0.600193218332161330,	-0.600153224829447220,	-0.600113229826349740,	
+-0.600073233322969580,	-0.600033235319406330,	-0.599993235815759920,	-0.599953234812130140,	-0.599913232308617590,	-0.599873228305321970,	-0.599833222802343300,	-0.599793215799781180,	
+-0.599753207297736290,	-0.599713197296308560,	-0.599673185795597700,	-0.599633172795703610,	-0.599593158296726880,	-0.599553142298767330,	-0.599513124801924870,	-0.599473105806299200,	
+-0.599433085311991240,	-0.599393063319100470,	-0.599353039827727030,	-0.599313014837970730,	-0.599272988349932150,	-0.599232960363711210,	-0.599192930879407390,	-0.599152899897121730,	
+-0.599112867416953690,	-0.599072833439003530,	-0.599032797963370940,	-0.598992760990156750,	-0.598952722519460630,	-0.598912682551382640,	-0.598872641086022670,	-0.598832598123481440,	
+-0.598792553663858750,	-0.598752507707254630,	-0.598712460253768790,	-0.598672411303502350,	-0.598632360856554690,	-0.598592308913026280,	-0.598552255473016710,	-0.598512200536626790,	
+-0.598472144103956440,	-0.598432086175105350,	-0.598392026750174330,	-0.598351965829263310,	-0.598311903412472420,	-0.598271839499901370,	-0.598231774091651070,	-0.598191707187821330,	
+-0.598151638788512300,	-0.598111568893823890,	-0.598071497503856800,	-0.598031424618711060,	-0.597991350238486710,	-0.597951274363283660,	-0.597911196993202830,	-0.597871118128343930,	
+-0.597831037768807310,	-0.597790955914692670,	-0.597750872566101040,	-0.597710787723132130,	-0.597670701385885960,	-0.597630613554463450,	-0.597590524228964410,	-0.597550433409488990,	
+-0.597510341096137100,	-0.597470247289009770,	-0.597430151988206810,	-0.597390055193828480,	-0.597349956905974700,	-0.597309857124746270,	-0.597269755850243330,	-0.597229653082565930,	
+-0.597189548821814080,	-0.597149443068088590,	-0.597109335821489620,	-0.597069227082117290,	-0.597029116850071540,	-0.596989005125453280,	-0.596948891908362530,	-0.596908777198899230,	
+-0.596868660997164400,	-0.596828543303257850,	-0.596788424117279950,	-0.596748303439330610,	-0.596708181269510970,	-0.596668057607920740,	-0.596627932454660390,	-0.596587805809829950,	
+-0.596547677673530230,	-0.596507548045861480,	-0.596467416926923730,	-0.596427284316817020,	-0.596387150215642590,	-0.596347014623500260,	-0.596306877540490390,	-0.596266738966712890,	
+-0.596226598902269030,	-0.596186457347258610,	-0.596146314301782000,	-0.596106169765939330,	-0.596066023739831530,	-0.596025876223558740,	-0.595985727217220760,	-0.595945576720918970,	
+-0.595905424734753160,	-0.595865271258823830,	-0.595825116293230980,	-0.595784959838075670,	-0.595744801893457910,	-0.595704642459478180,	-0.595664481536236520,	-0.595624319123833960,	
+-0.595584155222370630,	-0.595543989831947010,	-0.595503822952662910,	-0.595463654584619690,	-0.595423484727917280,	-0.595383313382656150,	-0.595343140548936440,	-0.595302966226859190,	
+-0.595262790416524630,	-0.595222613118032600,	-0.595182434331484430,	-0.595142254056980180,	-0.595102072294620310,	-0.595061889044504970,	-0.595021704306735180,	-0.594981518081411090,	
+-0.594941330368633280,	-0.594901141168501790,	-0.594860950481117760,	-0.594820758306581430,	-0.594780564644993180,	-0.594740369496453040,	-0.594700172861062470,	-0.594659974738921400,	
+-0.594619775130130420,	-0.594579574034789670,	-0.594539371453000290,	-0.594499167384862530,	-0.594458961830476530,	-0.594418754789943330,	-0.594378546263363390,	-0.594338336250836980,	
+-0.594298124752464460,	-0.594257911768346970,	-0.594217697298584650,	-0.594177481343278190,	-0.594137263902527520,	-0.594097044976434230,	-0.594056824565098120,	-0.594016602668620110,	
+-0.593976379287100120,	-0.593936154420639630,	-0.593895928069338770,	-0.593855700233298030,	-0.593815470912617660,	-0.593775240107399020,	-0.593735007817742240,	-0.593694774043748040,	
+-0.593654538785516440,	-0.593614302043148910,	-0.593574063816745600,	-0.593533824106406760,	-0.593493582912233750,	-0.593453340234326720,	-0.593413096072786360,	-0.593372850427712930,	
+-0.593332603299207780,	-0.593292354687371070,	-0.593252104592303490,	-0.593211853014105280,	-0.593171599952877720,	-0.593131345408721260,	-0.593091089381736380,	-0.593050831872023450,	
+-0.593010572879683840,	-0.592970312404817790,	-0.592930050447525890,	-0.592889787007908510,	-0.592849522086067120,	-0.592809255682101850,	-0.592768987796113090,	-0.592728718428202180,	
+-0.592688447578469500,	-0.592648175247015740,	-0.592607901433941150,	-0.592567626139347210,	-0.592527349363334180,	-0.592487071106002740,	-0.592446791367453260,	-0.592406510147787220,	
+-0.592366227447104880,	-0.592325943265506920,	-0.592285657603093820,	-0.592245370459966840,	-0.592205081836226550,	-0.592164791731973450,	-0.592124500147308110,	-0.592084207082331890,	
+-0.592043912537145060,	-0.592003616511848070,	-0.591963319006542530,	-0.591923020021328570,	-0.591882719556307110,	-0.591842417611578520,	-0.591802114187244150,	-0.591761809283404610,	
+-0.591721502900160460,	-0.591681195037612300,	-0.591640885695861370,	-0.591600574875008390,	-0.591560262575153820,	-0.591519948796398350,	-0.591479633538843250,	-0.591439316802589210,	
+-0.591398998587736810,	-0.591358678894386540,	-0.591318357722639850,	-0.591278035072597350,	-0.591237710944359510,	-0.591197385338027570,	-0.591157058253702240,	-0.591116729691484320,	
+-0.591076399651474180,	-0.591036068133773410,	-0.590995735138482360,	-0.590955400665702070,	-0.590915064715532900,	-0.590874727288076440,	-0.590834388383433160,	-0.590794048001703990,	
+-0.590753706142989170,	-0.590713362807390620,	-0.590673017995008490,	-0.590632671705943910,	-0.590592323940297260,	-0.590551974698170220,	-0.590511623979663170,	-0.590471271784877130,	
+-0.590430918113912570,	-0.590390562966870980,	-0.590350206343853050,	-0.590309848244959250,	-0.590269488670291160,	-0.590229127619949280,	-0.590188765094034730,	-0.590148401092647770,	
+-0.590108035615890200,	-0.590067668663862620,	-0.590027300236665830,	-0.589986930334400420,	-0.589946558957167970,	-0.589906186105069290,	-0.589865811778204960,	-0.589825435976675800,	
+-0.589785058700583510,	-0.589744679950028550,	-0.589704299725111740,	-0.589663918025933990,	-0.589623534852596660,	-0.589583150205200580,	-0.589542764083846320,	-0.589502376488635460,	
+-0.589461987419668600,	-0.589421596877046870,	-0.589381204860870760,	-0.589340811371241950,	-0.589300416408261140,	-0.589260019972029260,	-0.589219622062647000,	-0.589179222680216050,	
+-0.589138821824837010,	-0.589098419496610900,	-0.589058015695638430,	-0.589017610422021280,	-0.588977203675860150,	-0.588936795457255970,	-0.588896385766309430,	-0.588855974603122220,	
+-0.588815561967795160,	-0.588775147860428840,	-0.588734732281124940,	-0.588694315229984280,	-0.588653896707107770,	-0.588613476712596230,	-0.588573055246551350,	-0.588532632309073820,	
+-0.588492207900264690,	-0.588451782020224630,	-0.588411354669055590,	-0.588370925846858130,	-0.588330495553733290,	-0.588290063789781880,	-0.588249630555105710,	-0.588209195849805470,	
+-0.588168759673982190,	-0.588128322027736680,	-0.588087882911170650,	-0.588047442324384990,	-0.588007000267480760,	-0.587966556740558640,	-0.587926111743720450,	-0.587885665277066980,	
+-0.587845217340699060,	-0.587804767934718360,	-0.587764317059225830,	-0.587723864714322360,	-0.587683410900109000,	-0.587642955616687450,	-0.587602498864158500,	-0.587562040642623300,	
+-0.587521580952182650,	-0.587481119792938490,	-0.587440657164991390,	-0.587400193068442710,	-0.587359727503393160,	-0.587319260469944760,	-0.587278791968198100,	-0.587238321998254430,	
+-0.587197850560214670,	-0.587157377654180630,	-0.587116903280253120,	-0.587076427438533060,	-0.587035950129122240,	-0.586995471352121490,	-0.586954991107632160,	-0.586914509395754960,	
+-0.586874026216591790,	-0.586833541570243590,	-0.586793055456811600,	-0.586752567876396510,	-0.586712078829100480,	-0.586671588315024200,	-0.586631096334268910,	-0.586590602886935540,	
+-0.586550107973126010,	-0.586509611592941240,	-0.586469113746482470,	-0.586428614433850410,	-0.586388113655147310,	-0.586347611410473980,	-0.586307107699931110,	-0.586266602523620950,	
+-0.586226095881644200,	-0.586185587774102230,	-0.586145078201095960,	-0.586104567162727300,	-0.586064054659097280,	-0.586023540690307150,	-0.585983025256457730,	-0.585942508357651160,	
+-0.585901989993988240,	-0.585861470165570440,	-0.585820948872498580,	-0.585780426114874690,	-0.585739901892799790,	-0.585699376206375020,	-0.585658849055701540,	-0.585618320440881250,	
+-0.585577790362015180,	-0.585537258819204260,	-0.585496725812550630,	-0.585456191342155100,	-0.585415655408119130,	-0.585375118010543650,	-0.585334579149530800,	-0.585294038825181380,	
+-0.585253497037596990,	-0.585212953786878430,	-0.585172409073127840,	-0.585131862896446140,	-0.585091315256934920,	-0.585050766154694980,	-0.585010215589828570,	-0.584969663562436510,	
+-0.584929110072620380,	-0.584888555120481100,	-0.584847998706120810,	-0.584807440829640420,	-0.584766881491141530,	-0.584726320690725050,	-0.584685758428493130,	-0.584645194704546790,	
+-0.584604629518987170,	-0.584564062871916200,	-0.584523494763435240,	-0.584482925193645420,	-0.584442354162648000,	-0.584401781670545020,	-0.584361207717437600,	-0.584320632303427120,	
+-0.584280055428614720,	-0.584239477093102530,	-0.584198897296991700,	-0.584158316040383600,	-0.584117733323379350,	-0.584077149146081110,	-0.584036563508590010,	-0.583995976411007530,	
+-0.583955387853434700,	-0.583914797835973780,	-0.583874206358725890,	-0.583833613421792070,	-0.583793019025274700,	-0.583752423169274670,	-0.583711825853893580,	-0.583671227079232580,	
+-0.583630626845393910,	-0.583590025152478600,	-0.583549422000588350,	-0.583508817389824070,	-0.583468211320288140,	-0.583427603792081690,	-0.583386994805306200,	-0.583346384360062920,	
+-0.583305772456453990,	-0.583265159094580650,	-0.583224544274544400,	-0.583183927996446470,	-0.583143310260389120,	-0.583102691066473390,	-0.583062070414800630,	-0.583021448305472980,	
+-0.582980824738591810,	-0.582940199714258480,	-0.582899573232574350,	-0.582858945293641680,	-0.582818315897561610,	-0.582777685044435720,	-0.582737052734365270,	-0.582696418967452610,	
+-0.582655783743798890,	-0.582615147063505700,	-0.582574508926674170,	-0.582533869333406900,	-0.582493228283804900,	-0.582452585777969770,	-0.582411941816002860,	-0.582371296398006440,	
+-0.582330649524081760,	-0.582290001194330500,	-0.582249351408853810,	-0.582208700167754170,	-0.582168047471132820,	-0.582127393319090910,	-0.582086737711730920,	-0.582046080649154090,	
+-0.582005422131462000,	-0.581964762158756030,	-0.581924100731138540,	-0.581883437848710770,	-0.581842773511574430,	-0.581802107719830760,	-0.581761440473582140,	-0.581720771772930020,	
+-0.581680101617975900,	-0.581639430008821230,	-0.581598756945568280,	-0.581558082428318520,	-0.581517406457173420,	-0.581476729032234570,	-0.581436050153604220,	-0.581395369821383730,	
+-0.581354688035674470,	-0.581314004796578910,	-0.581273320104198190,	-0.581232633958634230,	-0.581191946359988390,	-0.581151257308363030,	-0.581110566803859530,	-0.581069874846579570,	
+-0.581029181436624520,	-0.580988486574096960,	-0.580947790259098150,	-0.580907092491729890,	-0.580866393272093550,	-0.580825692600291490,	-0.580784990476425290,	-0.580744286900596540,	
+-0.580703581872906830,	-0.580662875393458400,	-0.580622167462352850,	-0.580581458079691530,	-0.580540747245576920,	-0.580500034960110490,	-0.580459321223393830,	-0.580418606035528640,	
+-0.580377889396617270,	-0.580337171306761100,	-0.580296451766062040,	-0.580255730774621560,	-0.580215008332542030,	-0.580174284439925030,	-0.580133559096872250,	-0.580092832303485300,	
+-0.580052104059866620,	-0.580011374366117600,	-0.579970643222340150,	-0.579929910628635860,	-0.579889176585107080,	-0.579848441091855290,	-0.579807704148982080,	-0.579766965756590040,	
+-0.579726225914780510,	-0.579685484623655430,	-0.579644741883316270,	-0.579603997693865610,	-0.579563252055405040,	-0.579522504968036260,	-0.579481756431860840,	-0.579441006446981490,	
+-0.579400255013499570,	-0.579359502131516990,	-0.579318747801135240,	-0.579277992022457110,	-0.579237234795583980,	-0.579196476120617640,	-0.579155715997659910,	-0.579114954426813160,	
+-0.579074191408178950,	-0.579033426941859440,	-0.578992661027955880,	-0.578951893666571070,	-0.578911124857806490,	-0.578870354601763730,	-0.578829582898545470,	-0.578788809748253310,	
+-0.578748035150989050,	-0.578707259106854390,	-0.578666481615951910,	-0.578625702678383200,	-0.578584922294250290,	-0.578544140463654770,	-0.578503357186699100,	-0.578462572463485200,	
+-0.578421786294114780,	-0.578380998678689530,	-0.578340209617312140,	-0.578299419110084310,	-0.578258627157107850,	-0.578217833758484460,	-0.578177038914316820,	-0.578136242624706640,	
+-0.578095444889755510,	-0.578054645709566110,	-0.578013845084240030,	-0.577973043013879420,	-0.577932239498585850,	-0.577891434538462030,	-0.577850628133609550,	-0.577809820284130530,	
+-0.577769010990126670,	-0.577728200251700570,	-0.577687388068954030,	-0.577646574441988970,	-0.577605759370907080,	-0.577564942855811280,	-0.577524124896803050,	-0.577483305493984410,	
+-0.577442484647457290,	-0.577401662357324260,	-0.577360838623687030,	-0.577320013446647410,	-0.577279186826308190,	-0.577238358762770850,	-0.577197529256137650,	-0.577156698306510400,	
+-0.577115865913991670,	-0.577075032078683270,	-0.577034196800687240,	-0.576993360080105380,	-0.576952521917040500,	-0.576911682311594290,	-0.576870841263869010,	-0.576829998773966120,	
+-0.576789154841988560,	-0.576748309468038230,	-0.576707462652217060,	-0.576666614394626960,	-0.576625764695370640,	-0.576584913554549880,	-0.576544060972266850,	-0.576503206948623340,	
+-0.576462351483722050,	-0.576421494577665010,	-0.576380636230553800,	-0.576339776442491460,	-0.576298915213579570,	-0.576258052543920480,	-0.576217188433615800,	-0.576176322882768540,	
+-0.576135455891480520,	-0.576094587459853870,	-0.576053717587990290,	-0.576012846275992920,	-0.575971973523963340,	-0.575931099332003820,	-0.575890223700216250,	-0.575849346628703460,	
+-0.575808468117567250,	-0.575767588166909980,	-0.575726706776833240,	-0.575685823947440170,	-0.575644939678832570,	-0.575604053971112250,	-0.575563166824382130,	-0.575522278238744130,	
+-0.575481388214300390,	-0.575440496751152830,	-0.575399603849404360,	-0.575358709509156910,	-0.575317813730512720,	-0.575276916513573600,	-0.575236017858442470,	-0.575195117765221480,	
+-0.575154216234012530,	-0.575113313264917770,	-0.575072408858040010,	-0.575031503013481270,	-0.574990595731343810,	-0.574949687011729440,	-0.574908776854741290,	-0.574867865260481170,	
+-0.574826952229051000,	-0.574786037760553810,	-0.574745121855091520,	-0.574704204512766490,	-0.574663285733680530,	-0.574622365517936660,	-0.574581443865637030,	-0.574540520776883670,	
+-0.574499596251778710,	-0.574458670290425080,	-0.574417742892924800,	-0.574376814059380130,	-0.574335883789893090,	-0.574294952084566710,	-0.574254018943502920,	-0.574213084366804070,	
+-0.574172148354572200,	-0.574131210906910330,	-0.574090272023920380,	-0.574049331705704380,	-0.574008389952365470,	-0.573967446764005460,	-0.573926502140726940,	-0.573885556082631810,	
+-0.573844608589823110,	-0.573803659662402990,	-0.573762709300473570,	-0.573721757504137120,	-0.573680804273496660,	-0.573639849608654110,	-0.573598893509711940,	-0.573557935976772180,	
+-0.573516977009937980,	-0.573476016609311360,	-0.573435054774994680,	-0.573394091507089980,	-0.573353126805700390,	-0.573312160670928050,	-0.573271193102875220,	-0.573230224101644040,	
+-0.573189253667337750,	-0.573148281800058280,	-0.573107308499907760,	-0.573066333766989340,	-0.573025357601405050,	-0.572984380003257350,	-0.572943400972648400,	-0.572902420509681320,	
+-0.572861438614458150,	-0.572820455287081360,	-0.572779470527653100,	-0.572738484336276500,	-0.572697496713053810,	-0.572656507658087180,	-0.572615517171479070,	-0.572574525253332520,	
+-0.572533531903749560,	-0.572492537122832880,	-0.572451540910684400,	-0.572410543267407480,	-0.572369544193104150,	-0.572328543687876670,	-0.572287541751828170,	-0.572246538385060790,	
+-0.572205533587677120,	-0.572164527359779180,	-0.572123519701470350,	-0.572082510612852760,	-0.572041500094028770,	-0.572000488145100740,	-0.571959474766171820,	-0.571918459957344250,	
+-0.571877443718720510,	-0.571836426050402750,	-0.571795406952494420,	-0.571754386425097460,	-0.571713364468314560,	-0.571672341082247960,	-0.571631316267000700,	-0.571590290022675250,	
+-0.571549262349373750,	-0.571508233247199460,	-0.571467202716254510,	-0.571426170756641590,	-0.571385137368462860,	-0.571344102551821780,	-0.571303066306820260,	-0.571262028633561130,	
+-0.571220989532146620,	-0.571179949002679990,	-0.571138907045263490,	-0.571097863659999700,	-0.571056818846990890,	-0.571015772606340290,	-0.570974724938150380,	-0.570933675842523640,	
+-0.570892625319562420,	-0.570851573369369870,	-0.570810519992048460,	-0.570769465187700780,	-0.570728408956428960,	-0.570687351298336590,	-0.570646292213525810,	-0.570605231702098870,	
+-0.570564169764159250,	-0.570523106399809300,	-0.570482041609151500,	-0.570440975392288220,	-0.570399907749322920,	-0.570358838680357750,	-0.570317768185495620,	-0.570276696264838680,	
+-0.570235622918490280,	-0.570194548146552900,	-0.570153471949129020,	-0.570112394326321210,	-0.570071315278232850,	-0.570030234804966060,	-0.569989152906623770,	-0.569948069583308130,	
+-0.569906984835122810,	-0.569865898662169970,	-0.569824811064551960,	-0.569783722042372380,	-0.569742631595733460,	-0.569701539724738030,	-0.569660446429488320,	-0.569619351710087820,	
+-0.569578255566638990,	-0.569537157999244540,	-0.569496059008006710,	-0.569454958593029190,	-0.569413856754414250,	-0.569372753492264790,	-0.569331648806682970,	-0.569290542697772350,	
+-0.569249435165635420,	-0.569208326210374980,	-0.569167215832093290,	-0.569126104030893920,	-0.569084990806879240,	-0.569043876160151840,	-0.569002760090814960,	-0.568961642598971310,	
+-0.568920523684723570,	-0.568879403348174110,	-0.568838281589426400,	-0.568797158408583140,	-0.568756033805746910,	-0.568714907781020300,	-0.568673780334506660,	-0.568632651466308700,	
+-0.568591521176529000,	-0.568550389465270260,	-0.568509256332635830,	-0.568468121778728190,	-0.568426985803650360,	-0.568385848407504720,	-0.568344709590394740,	-0.568303569352422990,	
+-0.568262427693692400,	-0.568221284614305320,	-0.568180140114365350,	-0.568138994193975070,	-0.568097846853236940,	-0.568056698092254560,	-0.568015547911130400,	-0.567974396309967490,	
+-0.567933243288868070,	-0.567892088847935960,	-0.567850932987273740,	-0.567809775706984100,	-0.567768617007169630,	-0.567727456887934020,	-0.567686295349379750,	-0.567645132391609740,	
+-0.567603968014726460,	-0.567562802218833710,	-0.567521635004033960,	-0.567480466370430150,	-0.567439296318124730,	-0.567398124847221520,	-0.567356951957822990,	-0.567315777650031610,	
+-0.567274601923951180,	-0.567233424779684300,	-0.567192246217333880,	-0.567151066237002400,	-0.567109884838793650,	-0.567068702022810230,	-0.567027517789155060,	-0.566986332137930700,	
+-0.566945145069240870,	-0.566903956583188150,	-0.566862766679875560,	-0.566821575359405690,	-0.566780382621882240,	-0.566739188467407900,	-0.566697992896085580,	-0.566656795908017760,	
+-0.566615597503308480,	-0.566574397682060190,	-0.566533196444375500,	-0.566491993790358190,	-0.566450789720110870,	-0.566409584233736550,	-0.566368377331337940,	-0.566327169013018830,	
+-0.566285959278881700,	-0.566244748129029700,	-0.566203535563565510,	-0.566162321582592830,	-0.566121106186214250,	-0.566079889374533020,	-0.566038671147651610,	-0.565997451505673930,	
+-0.565956230448702690,	-0.565915007976840800,	-0.565873784090191070,	-0.565832558788857190,	-0.565791332072941970,	-0.565750103942547990,	-0.565708874397779170,	-0.565667643438738100,	
+-0.565626411065527910,	-0.565585177278251420,	-0.565543942077012310,	-0.565502705461913390,	-0.565461467433057590,	-0.565420227990547920,	-0.565378987134487860,	-0.565337744864980450,	
+-0.565296501182128710,	-0.565255256086035330,	-0.565214009576804120,	-0.565172761654537890,	-0.565131512319339780,	-0.565090261571312480,	-0.565049009410559910,	-0.565007755837184880,	
+-0.564966500851290410,	-0.564925244452979310,	-0.564883986642355510,	-0.564842727419521680,	-0.564801466784580760,	-0.564760204737636550,	-0.564718941278791740,	-0.564677676408149590,	
+-0.564636410125812890,	-0.564595142431885580,	-0.564553873326470330,	-0.564512602809670420,	-0.564471330881588630,	-0.564430057542328890,	-0.564388782791994110,	-0.564347506630687220,	
+-0.564306229058511240,	-0.564264950075570090,	-0.564223669681966580,	-0.564182387877803840,	-0.564141104663184790,	-0.564099820038213350,	-0.564058534002992330,	-0.564017246557624640,	
+-0.563975957702214200,	-0.563934667436863930,	-0.563893375761676860,	-0.563852082676756130,	-0.563810788182205420,	-0.563769492278127780,	-0.563728194964626450,	-0.563686896241804240,	
+-0.563645596109765170,	-0.563604294568612050,	-0.563562991618448250,	-0.563521687259376680,	-0.563480381491501150,	-0.563439074314924680,	-0.563397765729750530,	-0.563356455736081620,	
+-0.563315144334021860,	-0.563273831523674380,	-0.563232517305141790,	-0.563191201678528430,	-0.563149884643937000,	-0.563108566201470870,	-0.563067246351232950,	-0.563025925093327270,	
+-0.562984602427856750,	-0.562943278354924750,	-0.562901952874634180,	-0.562860625987089190,	-0.562819297692392470,	-0.562777967990647610,	-0.562736636881957520,	-0.562695304366426120,	
+-0.562653970444156440,	-0.562612635115251840,	-0.562571298379815340,	-0.562529960237950880,	-0.562488620689761580,	-0.562447279735350690,	-0.562405937374821360,	-0.562364593608277400,	
+-0.562323248435822040,	-0.562281901857558110,	-0.562240553873589840,	-0.562199204484020280,	-0.562157853688952550,	-0.562116501488489910,	-0.562075147882736380,	-0.562033792871795000,	
+-0.561992436455769130,	-0.561951078634761680,	-0.561909719408877020,	-0.561868358778218060,	-0.561826996742888160,	-0.561785633302990470,	-0.561744268458629010,	-0.561702902209906820,	
+-0.561661534556927470,	-0.561620165499793880,	-0.561578795038610300,	-0.561537423173479660,	-0.561496049904505080,	-0.561454675231790820,	-0.561413299155439800,	-0.561371921675555610,	
+-0.561330542792241150,	-0.561289162505600790,	-0.561247780815737450,	-0.561206397722754710,	-0.561165013226755600,	-0.561123627327844380,	-0.561082240026124060,	-0.561040851321698120,	
+-0.560999461214669590,	-0.560958069705142950,	-0.560916676793220990,	-0.560875282479007420,	-0.560833886762605260,	-0.560792489644118760,	-0.560751091123650960,	-0.560709691201305200,	
+-0.560668289877185530,	-0.560626887151395080,	-0.560585483024037430,	-0.560544077495215730,	-0.560502670565034220,	-0.560461262233595940,	-0.560419852501004570,	-0.560378441367363260,	
+-0.560337028832776140,	-0.560295614897346470,	-0.560254199561177720,	-0.560212782824373150,	-0.560171364687036990,	-0.560129945149272390,	-0.560088524211182940,	-0.560047101872871880,	
+-0.560005678134443350,	-0.559964252996000610,	-0.559922826457647020,	-0.559881398519486590,	-0.559839969181622710,	-0.559798538444158830,	-0.559757106307198330,	-0.559715672770845440,	
+-0.559674237835203310,	-0.559632801500375530,	-0.559591363766465570,	-0.559549924633577440,	-0.559508484101814420,	-0.559467042171280290,	-0.559425598842078210,	-0.559384154114312530,	
+-0.559342707988086390,	-0.559301260463503480,	-0.559259811540667060,	-0.559218361219681490,	-0.559176909500650020,	-0.559135456383676230,	-0.559094001868863490,	-0.559052545956316150,	
+-0.559011088646137360,	-0.558969629938430470,	-0.558928169833299960,	-0.558886708330848970,	-0.558845245431181190,	-0.558803781134399990,	-0.558762315440609610,	-0.558720848349913530,	
+-0.558679379862415340,	-0.558637909978218270,	-0.558596438697426810,	-0.558554966020144320,	-0.558513491946474370,	-0.558472016476520230,	-0.558430539610386580,	-0.558389061348176450,	
+-0.558347581689993770,	-0.558306100635941660,	-0.558264618186124720,	-0.558223134340646300,	-0.558181649099609540,	-0.558140162463119150,	-0.558098674431278250,	-0.558057185004190770,	
+-0.558015694181959840,	-0.557974201964690160,	-0.557932708352484990,	-0.557891213345447890,	-0.557849716943682570,	-0.557808219147293170,	-0.557766719956383270,	-0.557725219371056680,	
+-0.557683717391416530,	-0.557642214017567530,	-0.557600709249613020,	-0.557559203087656610,	-0.557517695531801970,	-0.557476186582153370,	-0.557434676238814380,	-0.557393164501888250,	
+-0.557351651371479570,	-0.557310136847691820,	-0.557268620930628680,	-0.557227103620393740,	-0.557185584917091250,	-0.557144064820824900,	-0.557102543331698400,	-0.557061020449815090,	
+-0.557019496175279680,	-0.556977970508195420,	-0.556936443448666330,	-0.556894914996795660,	-0.556853385152688230,	-0.556811853916447270,	-0.556770321288176610,	-0.556728787267979810,	
+-0.556687251855961460,	-0.556645715052224930,	-0.556604176856874130,	-0.556562637270012540,	-0.556521096291744730,	-0.556479553922174070,	-0.556438010161404260,	-0.556396465009539760,	
+-0.556354918466684170,	-0.556313370532941280,	-0.556271821208414450,	-0.556230270493208610,	-0.556188718387427010,	-0.556147164891173550,	-0.556105610004551940,	-0.556064053727666540,	
+-0.556022496060621150,	-0.555980937003519360,	-0.555939376556464970,	-0.555897814719562570,	-0.555856251492915510,	-0.555814686876627830,	-0.555773120870803110,	-0.555731553475545930,	
+-0.555689984690959870,	-0.555648414517148530,	-0.555606842954216470,	-0.555565270002267300,	-0.555523695661404910,	-0.555482119931733020,	-0.555440542813356200,	-0.555398964306377920,	
+-0.555357384410902320,	-0.555315803127032770,	-0.555274220454874180,	-0.555232636394530020,	-0.555191050946104330,	-0.555149464109700560,	-0.555107875885423540,	-0.555066286273376840,	
+-0.555024695273664380,	-0.554983102886389860,	-0.554941509111657850,	-0.554899913949572170,	-0.554858317400236280,	-0.554816719463754990,	-0.554775120140231890,	-0.554733519429771120,	
+-0.554691917332476030,	-0.554650313848451540,	-0.554608708977801230,	-0.554567102720629260,	-0.554525495077039080,	-0.554483886047135610,	-0.554442275631022330,	-0.554400663828803380,	
+-0.554359050640582440,	-0.554317436066464220,	-0.554275820106552410,	-0.554234202760951030,	-0.554192584029763790,	-0.554150963913095480,	-0.554109342411049810,	-0.554067719523730350,	
+-0.554026095251241910,	-0.553984469593688300,	-0.553942842551173540,	-0.553901214123801220,	-0.553859584311676370,	-0.553817953114902450,	-0.553776320533583610,	-0.553734686567823650,	
+-0.553693051217727380,	-0.553651414483398500,	-0.553609776364941020,	-0.553568136862458760,	-0.553526495976056520,	-0.553484853705838000,	-0.553443210051907440,	-0.553401565014368440,	
+-0.553359918593325780,	-0.553318270788883520,	-0.553276621601145440,	-0.553234971030215460,	-0.553193319076198510,	-0.553151665739198160,	-0.553110011019318340,	-0.553068354916663840,	
+-0.553026697431338480,	-0.552985038563446380,	-0.552943378313091260,	-0.552901716680378130,	-0.552860053665410580,	-0.552818389268293080,	-0.552776723489129100,	-0.552735056328023780,	
+-0.552693387785080700,	-0.552651717860404230,	-0.552610046554098070,	-0.552568373866267230,	-0.552526699797015410,	-0.552485024346446750,	-0.552443347514665280,	-0.552401669301775810,	
+-0.552359989707882140,	-0.552318308733088070,	-0.552276626377498640,	-0.552234942641217640,	-0.552193257524349330,	-0.552151571026997410,	-0.552109883149267010,	-0.552068193891261830,	
+-0.552026503253086220,	-0.551984811234844000,	-0.551943117836640180,	-0.551901423058578480,	-0.551859726900763240,	-0.551818029363298270,	-0.551776330446288600,	-0.551734630149838150,	
+-0.551692928474051160,	-0.551651225419031330,	-0.551609520984883920,	-0.551567815171712720,	-0.551526107979621650,	-0.551484399408715520,	-0.551442689459098580,	-0.551400978130874740,	
+-0.551359265424148260,	-0.551317551339023830,	-0.551275835875605580,	-0.551234119033997770,	-0.551192400814304320,	-0.551150681216630130,	-0.551108960241079360,	-0.551067237887756130,	
+-0.551025514156764370,	-0.550983789048209330,	-0.550942062562194690,	-0.550900334698824930,	-0.550858605458203980,	-0.550816874840436950,	-0.550775142845627670,	-0.550733409473880500,	
+-0.550691674725299450,	-0.550649938599989670,	-0.550608201098054970,	-0.550566462219599370,	-0.550524721964728010,	-0.550482980333544920,	-0.550441237326154240,	-0.550399492942660220,	
+-0.550357747183167770,	-0.550316000047781030,	-0.550274251536604250,	-0.550232501649741360,	-0.550190750387297700,	-0.550148997749377200,	-0.550107243736084110,	-0.550065488347522560,	
+-0.550023731583797690,	-0.549981973445013540,	-0.549940213931274350,	-0.549898453042684370,	-0.549856690779348510,	-0.549814927141371030,	-0.549773162128855740,	-0.549731395741907990,	
+-0.549689627980631810,	-0.549647858845131450,	-0.549606088335511170,	-0.549564316451875980,	-0.549522543194330030,	-0.549480768562977670,	-0.549438992557923060,	-0.549397215179271310,	
+-0.549355436427126590,	-0.549313656301593120,	-0.549271874802775280,	-0.549230091930778100,	-0.549188307685705700,	-0.549146522067662460,	-0.549104735076752610,	-0.549062946713081310,	
+-0.549021156976752580,	-0.548979365867870660,	-0.548937573386540700,	-0.548895779532866720,	-0.548853984306953310,	-0.548812187708904610,	-0.548770389738825860,	-0.548728590396820980,	
+-0.548686789682994780,	-0.548644987597451170,	-0.548603184140295410,	-0.548561379311631850,	-0.548519573111564630,	-0.548477765540198230,	-0.548435956597637770,	-0.548394146283987420,	
+-0.548352334599351730,	-0.548310521543834860,	-0.548268707117541940,	-0.548226891320577340,	-0.548185074153045070,	-0.548143255615050620,	-0.548101435706697890,	-0.548059614428091590,	
+-0.548017791779335960,	-0.547975967760536140,	-0.547934142371796500,	-0.547892315613221380,	-0.547850487484915270,	-0.547808657986983190,	-0.547766827119529510,	-0.547724994882658690,	
+-0.547683161276475090,	-0.547641326301083860,	-0.547599489956589470,	-0.547557652243096270,	-0.547515813160708520,	-0.547473972709531690,	-0.547432130889669800,	-0.547390287701227770,	
+-0.547348443144309530,	-0.547306597219020530,	-0.547264749925465140,	-0.547222901263747400,	-0.547181051233972870,	-0.547139199836245700,	-0.547097347070670480,	-0.547055492937351560,	
+-0.547013637436394200,	-0.546971780567902850,	-0.546929922331982010,	-0.546888062728736020,	-0.546846201758270150,	-0.546804339420688850,	-0.546762475716096710,	-0.546720610644597980,	
+-0.546678744206298140,	-0.546636876401301430,	-0.546595007229712440,	-0.546553136691635630,	-0.546511264787176380,	-0.546469391516438920,	-0.546427516879527620,	-0.546385640876547950,	
+-0.546343763507604050,	-0.546301884772800840,	-0.546260004672242560,	-0.546218123206034580,	-0.546176240374281360,	-0.546134356177087500,	-0.546092470614557350,	-0.546050583686796490,	
+-0.546008695393909060,	-0.545966805735999980,	-0.545924914713173500,	-0.545883022325535090,	-0.545841128573189120,	-0.545799233456240260,	-0.545757336974793010,	-0.545715439128952820,	
+-0.545673539918823950,	-0.545631639344510980,	-0.545589737406119160,	-0.545547834103753070,	-0.545505929437517410,	-0.545464023407516540,	-0.545422116013855930,	-0.545380207256640050,	
+-0.545338297135973700,	-0.545296385651961150,	-0.545254472804708070,	-0.545212558594318830,	-0.545170643020898130,	-0.545128726084550430,	-0.545086807785381430,	-0.545044888123495270,	
+-0.545002967098996980,	-0.544961044711990810,	-0.544919120962582440,	-0.544877195850876350,	-0.544835269376977130,	-0.544793341540989460,	-0.544751412343018830,	-0.544709481783169580,	
+-0.544667549861546310,	-0.544625616578254480,	-0.544583681933398680,	-0.544541745927083600,	-0.544499808559413930,	-0.544457869830494930,	-0.544415929740431400,	-0.544373988289327930,	
+-0.544332045477289190,	-0.544290101304420680,	-0.544248155770826970,	-0.544206208876612750,	-0.544164260621882720,	-0.544122311006742470,	-0.544080360031296340,	-0.544038407695649370,	
+-0.543996453999906040,	-0.543954498944171800,	-0.543912542528551480,	-0.543870584753149310,	-0.543828625618071100,	-0.543786665123421330,	-0.543744703269304910,	-0.543702740055826310,	
+-0.543660775483091330,	-0.543618809551204340,	-0.543576842260270250,	-0.543534873610393770,	-0.543492903601680570,	-0.543450932234235020,	-0.543408959508162040,	-0.543366985423566430,	
+-0.543325009980553660,	-0.543283033179228440,	-0.543241055019695550,	-0.543199075502059700,	-0.543157094626426470,	-0.543115112392900560,	-0.543073128801586540,	-0.543031143852589990,	
+-0.542989157546015620,	-0.542947169881968340,	-0.542905180860552840,	-0.542863190481874590,	-0.542821198746038510,	-0.542779205653149410,	-0.542737211203311860,	-0.542695215396631790,	
+-0.542653218233213550,	-0.542611219713162280,	-0.542569219836582570,	-0.542527218603580330,	-0.542485216014259920,	-0.542443212068726480,	-0.542401206767084590,	-0.542359200109440160,	
+-0.542317192095897680,	-0.542275182726561830,	-0.542233172001538420,	-0.542191159920932140,	-0.542149146484847800,	-0.542107131693390420,	-0.542065115546665480,	-0.542023098044777660,	
+-0.541981079187832230,	-0.541939058975933750,	-0.541897037409187930,	-0.541855014487699460,	-0.541812990211573590,	-0.541770964580914780,	-0.541728937595828960,	-0.541686909256420710,	
+-0.541644879562795280,	-0.541602848515057240,	-0.541560816113312530,	-0.541518782357665710,	-0.541476747248221920,	-0.541434710785085980,	-0.541392672968363580,	-0.541350633798159400,	
+-0.541308593274578360,	-0.541266551397726280,	-0.541224508167707730,	-0.541182463584627960,	-0.541140417648591550,	-0.541098370359704540,	-0.541056321718071610,	-0.541014271723797900,	
+-0.540972220376988110,	-0.540930167677748150,	-0.540888113626182720,	-0.540846058222397060,	-0.540804001466495880,	-0.540761943358585070,	-0.540719883898769460,	-0.540677823087154060,	
+-0.540635760923843690,	-0.540593697408944360,	-0.540551632542560780,	-0.540509566324797740,	-0.540467498755761170,	-0.540425429835555860,	-0.540383359564286960,	-0.540341287942059270,	
+-0.540299214968978700,	-0.540257140645150180,	-0.540215064970678730,	-0.540172987945669260,	-0.540130909570227800,	-0.540088829844458940,	-0.540046748768468030,	-0.540004666342359880,	
+-0.539962582566240520,	-0.539920497440214640,	-0.539878410964387490,	-0.539836323138863980,	-0.539794233963749930,	-0.539752143439150460,	-0.539710051565170160,	-0.539667958341915170,	
+-0.539625863769490180,	-0.539583767848000550,	-0.539541670577551200,	-0.539499571958248050,	-0.539457471990195890,	-0.539415370673500090,	-0.539373268008265570,	-0.539331163994598130,	
+-0.539289058632602790,	-0.539246951922384920,	-0.539204843864049210,	-0.539162734457701800,	-0.539120623703447490,	-0.539078511601391640,	-0.539036398151639170,	-0.538994283354296110,	
+-0.538952167209467260,	-0.538910049717258090,	-0.538867930877773290,	-0.538825810691119120,	-0.538783689157400380,	-0.538741566276722090,	-0.538699442049190290,	-0.538657316474909780,	
+-0.538615189553986130,	-0.538573061286524050,	-0.538530931672629660,	-0.538488800712407900,	-0.538446668405964220,	-0.538404534753403440,	-0.538362399754831800,	-0.538320263410354110,	
+-0.538278125720075720,	-0.538235986684101660,	-0.538193846302537970,	-0.538151704575489780,	-0.538109561503062220,	-0.538067417085360430,	-0.538025271322490450,	-0.537983124214557300,	
+-0.537940975761666000,	-0.537898825963922580,	-0.537856674821432180,	-0.537814522334300050,	-0.537772368502631220,	-0.537730213326531810,	-0.537688056806106870,	-0.537645898941461860,	
+-0.537603739732701700,	-0.537561579179932520,	-0.537519417283259470,	-0.537477254042787900,	-0.537435089458622730,	-0.537392923530870200,	-0.537350756259635460,	-0.537308587645023760,	
+-0.537266417687140230,	-0.537224246386091010,	-0.537182073741981240,	-0.537139899754915830,	-0.537097724425001030,	-0.537055547752341990,	-0.537013369737044060,	-0.536971190379212370,	
+-0.536929009678952960,	-0.536886827636371190,	-0.536844644251572190,	-0.536802459524661320,	-0.536760273455744620,	-0.536718086044927320,	-0.536675897292314690,	-0.536633707198011960,	
+-0.536591515762125380,	-0.536549322984759990,	-0.536507128866021370,	-0.536464933406014420,	-0.536422736604845630,	-0.536380538462619900,	-0.536338338979442500,	-0.536296138155419650,	
+-0.536253935990656410,	-0.536211732485258330,	-0.536169527639330570,	-0.536127321452979370,	-0.536085113926309860,	-0.536042905059427640,	-0.536000694852437620,	-0.535958483305446380,	
+-0.535916270418558830,	-0.535874056191880670,	-0.535831840625516920,	-0.535789623719574060,	-0.535747405474157110,	-0.535705185889371550,	-0.535662964965322730,	-0.535620742702116900,	
+-0.535578519099859100,	-0.535536294158655110,	-0.535494067878609980,	-0.535451840259830060,	-0.535409611302420490,	-0.535367381006486620,	-0.535325149372134600,	-0.535282916399469680,	
+-0.535240682088597540,	-0.535198446439623220,	-0.535156209452653300,	-0.535113971127792690,	-0.535071731465147300,	-0.535029490464822180,	-0.534987248126923660,	-0.534945004451557020,	
+-0.534902759438827920,	-0.534860513088841530,	-0.534818265401704180,	-0.534776016377521150,	-0.534733766016398220,	-0.534691514318440420,	-0.534649261283754120,	-0.534607006912444780,	
+-0.534564751204617550,	-0.534522494160378780,	-0.534480235779833720,	-0.534437976063088180,	-0.534395715010247300,	-0.534353452621417420,	-0.534311188896704040,	-0.534268923836212610,	
+-0.534226657440048490,	-0.534184389708318160,	-0.534142120641126760,	-0.534099850238580090,	-0.534057578500783500,	-0.534015305427843260,	-0.533973031019864820,	-0.533930755276953770,	
+-0.533888478199215370,	-0.533846199786756290,	-0.533803920039681580,	-0.533761638958096810,	-0.533719356542108230,	-0.533677072791821310,	-0.533634787707341740,	-0.533592501288774780,	
+-0.533550213536226890,	-0.533507924449803550,	-0.533465634029610340,	-0.533423342275752720,	-0.533381049188337180,	-0.533338754767468840,	-0.533296459013253730,	-0.533254161925797110,	
+-0.533211863505205440,	-0.533169563751584090,	-0.533127262665038850,	-0.533084960245675090,	-0.533042656493599280,	-0.533000351408916770,	-0.532958044991733490,	-0.532915737242154690,	
+-0.532873428160286930,	-0.532831117746235590,	-0.532788806000106030,	-0.532746492922004930,	-0.532704178512037550,	-0.532661862770309690,	-0.532619545696926820,	-0.532577227291995410,	
+-0.532534907555621050,	-0.532492586487909310,	-0.532450264088965790,	-0.532407940358897050,	-0.532365615297808350,	-0.532323288905805600,	-0.532280961182994280,	-0.532238632129480970,	
+-0.532196301745371030,	-0.532153970030770360,	-0.532111636985784450,	-0.532069302610519770,	-0.532026966905081890,	-0.531984629869576060,	-0.531942291504109210,	-0.531899951808786460,	
+-0.531857610783713960,	-0.531815268428997070,	-0.531772924744742360,	-0.531730579731055310,	-0.531688233388041720,	-0.531645885715807290,	-0.531603536714458480,	-0.531561186384100880,	
+-0.531518834724840290,	-0.531476481736782190,	-0.531434127420033380,	-0.531391771774699100,	-0.531349414800885490,	-0.531307056498697920,	-0.531264696868243070,	-0.531222335909626530,	
+-0.531179973622953770,	-0.531137610008331480,	-0.531095245065865140,	-0.531052878795660650,	-0.531010511197823610,	-0.530968142272460700,	-0.530925772019677390,	-0.530883400439579600,	
+-0.530841027532273020,	-0.530798653297864240,	-0.530756277736458840,	-0.530713900848162720,	-0.530671522633081480,	-0.530629143091321810,	-0.530586762222989170,	-0.530544380028189820,	
+-0.530501996507029010,	-0.530459611659613640,	-0.530417225486049190,	-0.530374837986441360,	-0.530332449160896720,	-0.530290059009521090,	-0.530247667532420250,	-0.530205274729699920,	
+-0.530162880601466660,	-0.530120485147826280,	-0.530078088368884700,	-0.530035690264747390,	-0.529993290835521380,	-0.529950890081312130,	-0.529908488002225560,	-0.529866084598367480,	
+-0.529823679869844580,	-0.529781273816762430,	-0.529738866439227070,	-0.529696457737344200,	-0.529654047711220600,	-0.529611636360961870,	-0.529569223686674030,	-0.529526809688462770,	
+-0.529484394366434800,	-0.529441977720695900,	-0.529399559751351670,	-0.529357140458508900,	-0.529314719842273300,	-0.529272297902750880,	-0.529229874640047340,	-0.529187450054269480,	
+-0.529145024145523110,	-0.529102596913914040,	-0.529060168359548170,	-0.529017738482532200,	-0.528975307282971930,	-0.528932874760973390,	-0.528890440916642280,	-0.528848005750085500,	
+-0.528805569261408650,	-0.528763131450717850,	-0.528720692318118910,	-0.528678251863718530,	-0.528635810087622620,	-0.528593366989936750,	-0.528550922570767860,	-0.528508476830221620,	
+-0.528466029768404180,	-0.528423581385421340,	-0.528381131681379900,	-0.528338680656385670,	-0.528296228310544680,	-0.528253774643962840,	-0.528211319656746840,	-0.528168863349002590,	
+-0.528126405720836130,	-0.528083946772353370,	-0.528041486503661010,	-0.527999024914865060,	-0.527956562006071440,	-0.527914097777386070,	-0.527871632228915870,	-0.527829165360766520,	
+-0.527786697173043940,	-0.527744227665854940,	-0.527701756839305420,	-0.527659284693501540,	-0.527616811228548980,	-0.527574336444554870,	-0.527531860341624800,	-0.527489382919865140,	
+-0.527446904179381670,	-0.527404424120281320,	-0.527361942742669900,	-0.527319460046653530,	-0.527276976032338250,	-0.527234490699830860,	-0.527192004049237270,	-0.527149516080663630,	
+-0.527107026794215840,	-0.527064536190000930,	-0.527022044268124600,	-0.526979551028693200,	-0.526937056471812440,	-0.526894560597589550,	-0.526852063406130220,	-0.526809564897540270,	
+-0.526767065071926940,	-0.526724563929395820,	-0.526682061470053360,	-0.526639557694005280,	-0.526597052601358810,	-0.526554546192219640,	-0.526512038466694140,	-0.526469529424888120,	
+-0.526427019066908700,	-0.526384507392861690,	-0.526341994402853340,	-0.526299480096989790,	-0.526256964475377840,	-0.526214447538123410,	-0.526171929285332960,	-0.526129409717112310,	
+-0.526086888833568470,	-0.526044366634807470,	-0.526001843120935120,	-0.525959318292058550,	-0.525916792148283680,	-0.525874264689716760,	-0.525831735916463930,	-0.525789205828632090,	
+-0.525746674426327170,	-0.525704141709655630,	-0.525661607678723390,	-0.525619072333637470,	-0.525576535674503910,	-0.525533997701428950,	-0.525491458414518610,	-0.525448917813880030,	
+-0.525406375899619140,	-0.525363832671842280,	-0.525321288130655590,	-0.525278742276165890,	-0.525236195108479410,	-0.525193646627702180,	-0.525151096833941010,	-0.525108545727302260,	
+-0.525065993307892050,	-0.525023439575816540,	-0.524980884531182750,	-0.524938328174096800,	-0.524895770504664960,	-0.524853211522993360,	-0.524810651229189130,	-0.524768089623358300,	
+-0.524725526705607130,	-0.524682962476041850,	-0.524640396934769600,	-0.524597830081896200,	-0.524555261917528330,	-0.524512692441771900,	-0.524470121654734170,	-0.524427549556521040,	
+-0.524384976147238780,	-0.524342401426994400,	-0.524299825395893930,	-0.524257248054044060,	-0.524214669401550590,	-0.524172089438520780,	-0.524129508165060880,	-0.524086925581277120,	
+-0.524044341687275650,	-0.524001756483163720,	-0.523959169969047460,	-0.523916582145033230,	-0.523873993011227170,	-0.523831402567736410,	-0.523788810814667330,	-0.523746217752126150,	
+-0.523703623380219030,	-0.523661027699053210,	-0.523618430708734820,	-0.523575832409370330,	-0.523533232801066010,	-0.523490631883928860,	-0.523448029658065140,	-0.523405426123580990,	
+-0.523362821280583650,	-0.523320215129179370,	-0.523277607669474400,	-0.523234998901575100,	-0.523192388825588610,	-0.523149777441621280,	-0.523107164749779360,	-0.523064550750169220,	
+-0.523021935442898100,	-0.522979318828072140,	-0.522936700905797910,	-0.522894081676181450,	-0.522851461139330230,	-0.522808839295350380,	-0.522766216144348370,	-0.522723591686430460,	
+-0.522680965921703990,	-0.522638338850275110,	-0.522595710472249950,	-0.522553080787735880,	-0.522510449796839140,	-0.522467817499666310,	-0.522425183896323530,	-0.522382548986918160,	
+-0.522339912771556450,	-0.522297275250344860,	-0.522254636423389870,	-0.522211996290798510,	-0.522169354852677240,	-0.522126712109132530,	-0.522084068060270750,	-0.522041422706199130,	
+-0.521998776047023940,	-0.521956128082851860,	-0.521913478813789020,	-0.521870828239942910,	-0.521828176361419650,	-0.521785523178325610,	-0.521742868690768140,	-0.521700212898853600,	
+-0.521657555802688360,	-0.521614897402378990,	-0.521572237698032740,	-0.521529576689755750,	-0.521486914377654930,	-0.521444250761836540,	-0.521401585842407700,	-0.521358919619475000,	
+-0.521316252093145030,	-0.521273583263524020,	-0.521230913130719450,	-0.521188241694837570,	-0.521145568955985070,	-0.521102894914268310,	-0.521060219569794650,	-0.521017542922670550,	
+-0.520974864973002490,	-0.520932185720896830,	-0.520889505166461260,	-0.520846823309801810,	-0.520804140151024940,	-0.520761455690238020,	-0.520718769927547620,	-0.520676082863060220,	
+-0.520633394496882170,	-0.520590704829121180,	-0.520548013859883250,	-0.520505321589275430,	-0.520462628017403840,	-0.520419933144376070,	-0.520377236970298470,	-0.520334539495277750,	
+-0.520291840719420360,	-0.520249140642833670,	-0.520206439265624150,	-0.520163736587898610,	-0.520121032609763280,	-0.520078327331325860,	-0.520035620752692500,	-0.519992912873969760,	
+-0.519950203695265010,	-0.519907493216684950,	-0.519864781438336030,	-0.519822068360324740,	-0.519779353982758760,	-0.519736638305744350,	-0.519693921329388300,	-0.519651203053797080,	
+-0.519608483479078290,	-0.519565762605338270,	-0.519523040432683820,	-0.519480316961221430,	-0.519437592191058560,	-0.519394866122301790,	-0.519352138755057810,	-0.519309410089433100,	
+-0.519266680125535230,	-0.519223948863470790,	-0.519181216303345900,	-0.519138482445268500,	-0.519095747289344820,	-0.519053010835681780,	-0.519010273084385850,	-0.518967534035564610,	
+-0.518924793689324540,	-0.518882052045772530,	-0.518839309105014970,	-0.518796564867159530,	-0.518753819332312570,	-0.518711072500581240,	-0.518668324372071670,	-0.518625574946891770,	
+-0.518582824225148010,	-0.518540072206947090,	-0.518497318892395590,	-0.518454564281601190,	-0.518411808374670380,	-0.518369051171710060,	-0.518326292672826710,	-0.518283532878128120,	
+-0.518240771787720540,	-0.518198009401710790,	-0.518155245720206330,	-0.518112480743313730,	-0.518069714471139920,	-0.518026946903791470,	-0.517984178041376090,	-0.517941407884000230,	
+-0.517898636431770810,	-0.517855863684794420,	-0.517813089643178850,	-0.517770314307030470,	-0.517727537676456300,	-0.517684759751562920,	-0.517641980532458020,	-0.517599200019248200,	
+-0.517556418212040350,	-0.517513635110941060,	-0.517470850716058140,	-0.517428065027498050,	-0.517385278045367380,	-0.517342489769773930,	-0.517299700200824160,	-0.517256909338625230,	
+-0.517214117183283690,	-0.517171323734907150,	-0.517128528993602400,	-0.517085732959476240,	-0.517042935632635370,	-0.517000137013187590,	-0.516957337101239480,	-0.516914535896897950,	
+-0.516871733400269710,	-0.516828929611462540,	-0.516786124530583150,	-0.516743318157738330,	-0.516700510493034780,	-0.516657701536580420,	-0.516614891288481810,	-0.516572079748845560,	
+-0.516529266917779560,	-0.516486452795390290,	-0.516443637381785000,	-0.516400820677070160,	-0.516358002681353680,	-0.516315183394742140,	-0.516272362817342790,	-0.516229540949261990,	
+-0.516186717790607760,	-0.516143893341486800,	-0.516101067602006030,	-0.516058240572272230,	-0.516015412252393220,	-0.515972582642475700,	-0.515929751742626670,	-0.515886919552952960,	
+-0.515844086073562250,	-0.515801251304561340,	-0.515758415246056920,	-0.515715577898156920,	-0.515672739260967910,	-0.515629899334597020,	-0.515587058119151060,	-0.515544215614737840,	
+-0.515501371821464050,	-0.515458526739436820,	-0.515415680368762950,	-0.515372832709550250,	-0.515329983761905420,	-0.515287133525935580,	-0.515244282001747660,	-0.515201429189449330,	
+-0.515158575089147420,	-0.515115719700949160,	-0.515072863024961140,	-0.515030005061291370,	-0.514987145810046560,	-0.514944285271333960,	-0.514901423445260240,	-0.514858560331933330,	
+-0.514815695931459930,	-0.514772830243947040,	-0.514729963269502380,	-0.514687095008232840,	-0.514644225460245570,	-0.514601354625647380,	-0.514558482504546060,	-0.514515609097048630,	
+-0.514472734403262240,	-0.514429858423293580,	-0.514386981157250570,	-0.514344102605240220,	-0.514301222767369560,	-0.514258341643745400,	-0.514215459234475870,	-0.514172575539667660,	
+-0.514129690559428030,	-0.514086804293863770,	-0.514043916743082920,	-0.514001027907192260,	-0.513958137786298620,	-0.513915246380510000,	-0.513872353689933340,	-0.513829459714675750,	
+-0.513786564454844050,	-0.513743667910546490,	-0.513700770081889630,	-0.513657870968980860,	-0.513614970571927070,	-0.513572068890836290,	-0.513529165925815210,	-0.513486261676971310,	
+-0.513443356144411280,	-0.513400449328243360,	-0.513357541228574240,	-0.513314631845511290,	-0.513271721179161420,	-0.513228809229632540,	-0.513185895997031680,	-0.513142981481465750,	
+-0.513100065683042670,	-0.513057148601869460,	-0.513014230238053370,	-0.512971310591701310,	-0.512928389662921420,	-0.512885467451820510,	-0.512842543958505930,	-0.512799619183084590,	
+-0.512756693125664630,	-0.512713765786352860,	-0.512670837165256740,	-0.512627907262483080,	-0.512584976078140130,	-0.512542043612334690,	-0.512499109865174220,	-0.512456174836765420,	
+-0.512413238527216760,	-0.512370300936634830,	-0.512327362065127300,	-0.512284421912800880,	-0.512241480479763810,	-0.512198537766123010,	-0.512155593771985610,	-0.512112648497459520,	
+-0.512069701942651780,	-0.512026754107669850,	-0.511983804992620530,	-0.511940854597612180,	-0.511897902922751720,	-0.511854949968146400,	-0.511811995733903460,	-0.511769040220130810,	
+-0.511726083426935600,	-0.511683125354425170,	-0.511640166002706560,	-0.511597205371887910,	-0.511554243462076230,	-0.511511280273378890,	-0.511468315805903020,	-0.511425350059756760,	
+-0.511382383035047130,	-0.511339414731881160,	-0.511296445150366980,	-0.511253474290611740,	-0.511210502152722900,	-0.511167528736807260,	-0.511124554042973300,	-0.511081578071327920,	
+-0.511038600821978490,	-0.510995622295032260,	-0.510952642490597460,	-0.510909661408780910,	-0.510866679049690300,	-0.510823695413432530,	-0.510780710500115980,	-0.510737724309847540,	
+-0.510694736842734920,	-0.510651748098885030,	-0.510608758078406110,	-0.510565766781405310,	-0.510522774207989750,	-0.510479780358267580,	-0.510436785232345920,	-0.510393788830332480,	
+-0.510350791152334060,	-0.510307792198459010,	-0.510264791968814580,	-0.510221790463508130,	-0.510178787682646790,	-0.510135783626338820,	-0.510092778294691460,	-0.510049771687812180,	
+-0.510006763805808010,	-0.509963754648787400,	-0.509920744216857400,	-0.509877732510125470,	-0.509834719528698850,	-0.509791705272685800,	-0.509748689742193560,	-0.509705672937329160,	
+-0.509662654858200950,	-0.509619635504916180,	-0.509576614877582210,	-0.509533592976306400,	-0.509490569801197000,	-0.509447545352361030,	-0.509404519629906400,	-0.509361492633939930,	
+-0.509318464364570180,	-0.509275434821904290,	-0.509232404006049740,	-0.509189371917113890,	-0.509146338555204970,	-0.509103303920430130,	-0.509060268012897050,	-0.509017230832713000,	
+-0.508974192379986200,	-0.508931152654823920,	-0.508888111657333830,	-0.508845069387622970,	-0.508802025845799810,	-0.508758981031971700,	-0.508715934946245670,	-0.508672887588730190,	
+-0.508629838959532510,	-0.508586789058760200,	-0.508543737886520630,	-0.508500685442922040,	-0.508457631728071680,	-0.508414576742077350,	-0.508371520485046080,	-0.508328462957086450,	
+-0.508285404158305700,	-0.508242344088811420,	-0.508199282748710850,	-0.508156220138112460,	-0.508113156257123610,	-0.508070091105851770,	-0.508027024684404420,	-0.507983956992889780,	
+-0.507940888031415240,	-0.507897817800088250,	-0.507854746299016950,	-0.507811673528308800,	-0.507768599488071510,	-0.507725524178412320,	-0.507682447599439700,	-0.507639369751261000,	
+-0.507596290633983930,	-0.507553210247715600,	-0.507510128592564720,	-0.507467045668638540,	-0.507423961476044630,	-0.507380876014890570,	-0.507337789285284610,	-0.507294701287334230,	
+-0.507251612021146990,	-0.507208521486830490,	-0.507165429684492960,	-0.507122336614241890,	-0.507079242276184620,	-0.507036146670429620,	-0.506993049797084260,	-0.506949951656256230,	
+-0.506906852248052990,	-0.506863751572583010,	-0.506820649629953550,	-0.506777546420272620,	-0.506734441943647360,	-0.506691336200186360,	-0.506648229189996970,	-0.506605120913187100,	
+-0.506562011369864010,	-0.506518900560136260,	-0.506475788484111340,	-0.506432675141896940,	-0.506389560533600400,	-0.506346444659330320,	-0.506303327519194160,	-0.506260209113299720,	
+-0.506217089441754360,	-0.506173968504666670,	-0.506130846302144000,	-0.506087722834293820,	-0.506044598101224820,	-0.506001472103044250,	-0.505958344839860020,	-0.505915216311779600,	
+-0.505872086518911470,	-0.505828955461363080,	-0.505785823139242360,	-0.505742689552656670,	-0.505699554701714680,	-0.505656418586523770,	-0.505613281207191730,	-0.505570142563826260,	
+-0.505527002656535720,	-0.505483861485427680,	-0.505440719050610050,	-0.505397575352190210,	-0.505354430390276830,	-0.505311284164977280,	-0.505268136676399250,	-0.505224987924651200,	
+-0.505181837909840730,	-0.505138686632075620,	-0.505095534091463460,	-0.505052380288112720,	-0.505009225222131210,	-0.504966068893626500,	-0.504922911302706280,	-0.504879752449479140,	
+-0.504836592334052650,	-0.504793430956534730,	-0.504750268317032740,	-0.504707104415655580,	-0.504663939252510630,	-0.504620772827705790,	-0.504577605141348640,	-0.504534436193547870,	
+-0.504491265984410960,	-0.504448094514045600,	-0.504404921782560360,	-0.504361747790062710,	-0.504318572536660790,	-0.504275396022462070,	-0.504232218247575140,	-0.504189039212107780,	
+-0.504145858916167810,	-0.504102677359862690,	-0.504059494543301460,	-0.504016310466591340,	-0.503973125129840490,	-0.503929938533156370,	-0.503886750676647900,	-0.503843561560422540,	
+-0.503800371184588200,	-0.503757179549252590,	-0.503713986654524490,	-0.503670792500511280,	-0.503627597087320860,	-0.503584400415061690,	-0.503541202483841600,	-0.503498003293768480,	
+-0.503454802844950030,	-0.503411601137494840,	-0.503368398171510690,	-0.503325193947105620,	-0.503281988464387100,	-0.503238781723464030,	-0.503195573724444010,	-0.503152364467435050,	
+-0.503109153952544740,	-0.503065942179881990,	-0.503022729149554370,	-0.502979514861669920,	-0.502936299316336320,	-0.502893082513662270,	-0.502849864453755680,	-0.502806645136724240,	
+-0.502763424562675980,	-0.502720202731719470,	-0.502676979643962410,	-0.502633755299512490,	-0.502590529698478730,	-0.502547302840968490,	-0.502504074727090020,	-0.502460845356951010,	
+-0.502417614730660270,	-0.502374382848325470,	-0.502331149710054770,	-0.502287915315955740,	-0.502244679666137390,	-0.502201442760707330,	-0.502158204599773560,	-0.502114965183444010,	
+-0.502071724511827360,	-0.502028482585031410,	-0.501985239403164310,	-0.501941994966333630,	-0.501898749274648390,	-0.501855502328216300,	-0.501812254127145030,	-0.501769004671543510,	
+-0.501725753961519530,	-0.501682501997181120,	-0.501639248778636080,	-0.501595994305993330,	-0.501552738579360560,	-0.501509481598846010,	-0.501466223364557260,	-0.501422963876603460,	
+-0.501379703135092170,	-0.501336441140131650,	-0.501293177891829590,	-0.501249913390295010,	-0.501206647635635720,	-0.501163380627959730,	-0.501120112367374970,	-0.501076842853990230,	
+-0.501033572087913440,	-0.500990300069252270,	-0.500947026798115760,	-0.500903752274611700,	-0.500860476498848240,	-0.500817199470933280,	-0.500773921190975630,	-0.500730641659083210,	
+-0.500687360875364140,	-0.500644078839926340,	-0.500600795552878620,	-0.500557511014328990,	-0.500514225224385600,	-0.500470938183156240,	-0.500427649890749950,	-0.500384360347274510,	
+-0.500341069552838190,	-0.500297777507548780,	-0.500254484211515300,	-0.500211189664845680,	-0.500167893867648040,	-0.500124596820030300,	-0.500081298522101480,	-0.500037998973969280,	
+-0.499994698175741830,	-0.499951396127527980,	-0.499908092829435660,	-0.499864788281573050,	-0.499821482484048120,	-0.499778175436969900,	-0.499734867140446180,	-0.499691557594585330,	
+-0.499648246799495210,	-0.499604934755284840,	-0.499561621462062120,	-0.499518306919935370,	-0.499474991129012450,	-0.499431674089402480,	-0.499388355801213270,	-0.499345036264553180,	
+-0.499301715479530170,	-0.499258393446253170,	-0.499215070164830240,	-0.499171745635369260,	-0.499128419857979290,	-0.499085092832768250,	-0.499041764559844500,	-0.498998435039315960,	
+-0.498955104271291690,	-0.498911772255879680,	-0.498868438993188220,	-0.498825104483325290,	-0.498781768726400010,	-0.498738431722520250,	-0.498695093471794470,	-0.498651753974330540,	
+-0.498608413230237580,	-0.498565071239623630,	-0.498521728002597030,	-0.498478383519265660,	-0.498435037789738740,	-0.498391690814124270,	-0.498348342592530140,	-0.498304993125065540,	
+-0.498261642411838460,	-0.498218290452957290,	-0.498174937248530010,	-0.498131582798665760,	-0.498088227103472560,	-0.498044870163058760,	-0.498001511977532450,	-0.497958152547002710,	
+-0.497914791871577610,	-0.497871429951365520,	-0.497828066786474450,	-0.497784702377013670,	-0.497741336723091070,	-0.497697969824815120,	-0.497654601682293920,	-0.497611232295636530,	
+-0.497567861664951090,	-0.497524489790345640,	-0.497481116671929350,	-0.497437742309810190,	-0.497394366704096760,	-0.497350989854897010,	-0.497307611762320130,	-0.497264232426474270,	
+-0.497220851847467840,	-0.497177470025408850,	-0.497134086960406560,	-0.497090702652569110,	-0.497047317102004840,	-0.497003930308821950,	-0.496960542273129580,	-0.496917152995035860,	
+-0.496873762474649260,	-0.496830370712077920,	-0.496786977707430970,	-0.496743583460816600,	-0.496700187972343280,	-0.496656791242119090,	-0.496613393270253280,	-0.496569994056854040,	
+-0.496526593602029440,	-0.496483191905888690,	-0.496439788968539960,	-0.496396384790091790,	-0.496352979370652260,	-0.496309572710330660,	-0.496266164809235130,	-0.496222755667474260,	
+-0.496179345285156000,	-0.496135933662389840,	-0.496092520799283840,	-0.496049106695946480,	-0.496005691352486010,	-0.495962274769011720,	-0.495918856945631700,	-0.495875437882454580,	
+-0.495832017579588450,	-0.495788596037142650,	-0.495745173255225380,	-0.495701749233944830,	-0.495658323973410250,	-0.495614897473729830,	-0.495571469735012200,	-0.495528040757365510,	
+-0.495484610540899100,	-0.495441179085721160,	-0.495397746391940290,	-0.495354312459664660,	-0.495310877289003640,	-0.495267440880065410,	-0.495224003232958620,	-0.495180564347791400,	
+-0.495137124224673150,	-0.495093682863712080,	-0.495050240265016870,	-0.495006796428695610,	-0.494963351354857750,	-0.494919905043611550,	-0.494876457495065150,	-0.494833008709328000,	
+-0.494789558686508370,	-0.494746107426714820,	-0.494702654930055610,	-0.494659201196640200,	-0.494615746226576720,	-0.494572290019973880,	-0.494528832576939970,	-0.494485373897584350,	
+-0.494441913982015260,	-0.494398452830341400,	-0.494354990442671060,	-0.494311526819113610,	-0.494268061959777350,	-0.494224595864770910,	-0.494181128534202600,	-0.494137659968181870,	
+-0.494094190166816990,	-0.494050719130216590,	-0.494007246858489070,	-0.493963773351743800,	-0.493920298610089070,	-0.493876822633633250,	-0.493833345422485690,	-0.493789866976754870,	
+-0.493746387296549290,	-0.493702906381977390,	-0.493659424233148620,	-0.493615940850171300,	-0.493572456233154100,	-0.493528970382205390,	-0.493485483297434640,	-0.493441994978950140,	
+-0.493398505426860700,	-0.493355014641274630,	-0.493311522622301380,	-0.493268029370049320,	-0.493224534884627200,	-0.493181039166143310,	-0.493137542214707240,	-0.493094044030427340,	
+-0.493050544613411910,	-0.493007043963770540,	-0.492963542081611530,	-0.492920038967043670,	-0.492876534620175330,	-0.492833029041116030,	-0.492789522229974190,	-0.492746014186858540,	
+-0.492702504911877450,	-0.492658994405140490,	-0.492615482666756030,	-0.492571969696832870,	-0.492528455495479410,	-0.492484940062805190,	-0.492441423398918610,	-0.492397905503928480,	
+-0.492354386377943210,	-0.492310866021072380,	-0.492267344433424350,	-0.492223821615107580,	-0.492180297566231660,	-0.492136772286904940,	-0.492093245777236340,	-0.492049718037334270,	
+-0.492006189067308250,	-0.491962658867266760,	-0.491919127437318580,	-0.491875594777572260,	-0.491832060888137300,	-0.491788525769122240,	-0.491744989420635830,	-0.491701451842786570,	
+-0.491657913035684010,	-0.491614372999436720,	-0.491570831734153500,	-0.491527289239942820,	-0.491483745516914320,	-0.491440200565176400,	-0.491396654384837650,	-0.491353106976007590,	
+-0.491309558338794810,	-0.491266008473308150,	-0.491222457379656030,	-0.491178905057948150,	-0.491135351508293070,	-0.491091796730799560,	-0.491048240725576180,	-0.491004683492732570,	
+-0.490961125032377320,	-0.490917565344619170,	-0.490874004429566800,	-0.490830442287329750,	-0.490786878918016590,	-0.490743314321736290,	-0.490699748498597270,	-0.490656181448709260,	
+-0.490612613172180800,	-0.490569043669120850,	-0.490525472939637890,	-0.490481900983841590,	-0.490438327801840600,	-0.490394753393743330,	-0.490351177759659640,	-0.490307600899697940,	
+-0.490264022813967300,	-0.490220443502576150,	-0.490176862965634340,	-0.490133281203250340,	-0.490089698215533160,	-0.490046114002591350,	-0.490002528564534580,	-0.489958941901471550,	
+-0.489915354013511160,	-0.489871764900761950,	-0.489828174563333770,	-0.489784583001335150,	-0.489740990214875050,	-0.489697396204062110,	-0.489653800969006070,	-0.489610204509815460,	
+-0.489566606826599030,	-0.489523007919466460,	-0.489479407788526330,	-0.489435806433887730,	-0.489392203855659180,	-0.489348600053950530,	-0.489304995028870370,	-0.489261388780527720,	
+-0.489217781309031260,	-0.489174172614490700,	-0.489130562697014710,	-0.489086951556712280,	-0.489043339193692140,	-0.488999725608063980,	-0.488956110799936560,	-0.488912494769418840,	
+-0.488868877516619500,	-0.488825259041648360,	-0.488781639344614050,	-0.488738018425625250,	-0.488694396284791830,	-0.488650772922222420,	-0.488607148338026040,	-0.488563522532311450,	
+-0.488519895505188370,	-0.488476267256765630,	-0.488432637787152180,	-0.488389007096456720,	-0.488345375184789150,	-0.488301742052258180,	-0.488258107698972820,	-0.488214472125041820,	
+-0.488170835330575040,	-0.488127197315681160,	-0.488083558080469270,	-0.488039917625048110,	-0.487996275949527550,	-0.487952633054016320,	-0.487908988938623440,	-0.487865343603457740,	
+-0.487821697048629100,	-0.487778049274246170,	-0.487734400280417760,	-0.487690750067253710,	-0.487647098634862770,	-0.487603445983354140,	-0.487559792112836510,	-0.487516137023419730,	
+-0.487472480715212650,	-0.487428823188324370,	-0.487385164442863620,	-0.487341504478940310,	-0.487297843296663310,	-0.487254180896141700,	-0.487210517277484210,	-0.487166852440800820,	
+-0.487123186386200340,	-0.487079519113791830,	-0.487035850623684210,	-0.486992180915987280,	-0.486948509990809960,	-0.486904837848260940,	-0.486861164488450180,	-0.486817489911486550,	
+-0.486773814117479220,	-0.486730137106536950,	-0.486686458878769710,	-0.486642779434286350,	-0.486599098773196010,	-0.486555416895607550,	-0.486511733801630930,	-0.486468049491374950,	
+-0.486424363964948870,	-0.486380677222461530,	-0.486336989264022860,	-0.486293300089741700,	-0.486249609699727300,	-0.486205918094088470,	-0.486162225272935290,	-0.486118531236376490,	
+-0.486074835984521000,	-0.486031139517478780,	-0.485987441835358750,	-0.485943742938270080,	-0.485900042826321710,	-0.485856341499623590,	-0.485812638958284580,	-0.485768935202414040,	
+-0.485725230232120770,	-0.485681524047514750,	-0.485637816648704980,	-0.485594108035800660,	-0.485550398208910660,	-0.485506687168145050,	-0.485462974913612730,	-0.485419261445423020,	
+-0.485375546763684720,	-0.485331830868507950,	-0.485288113760001580,	-0.485244395438274580,	-0.485200675903436960,	-0.485156955155597650,	-0.485113233194865930,	-0.485069510021350790,	
+-0.485025785635162240,	-0.484982060036409200,	-0.484938333225201020,	-0.484894605201646620,	-0.484850875965856130,	-0.484807145517938410,	-0.484763413858002870,	-0.484719680986158360,	
+-0.484675946902515090,	-0.484632211607181900,	-0.484588475100268200,	-0.484544737381882920,	-0.484500998452136180,	-0.484457258311136950,	-0.484413516958994590,	-0.484369774395818020,	
+-0.484326030621717420,	-0.484282285636801760,	-0.484238539441180000,	-0.484194792034962240,	-0.484151043418257540,	-0.484107293591175210,	-0.484063542553824280,	-0.484019790306314810,	
+-0.483976036848755950,	-0.483932282181256950,	-0.483888526303926870,	-0.483844769216875860,	-0.483801010920212940,	-0.483757251414047520,	-0.483713490698488510,	-0.483669728773646220,	
+-0.483625965639629560,	-0.483582201296548050,	-0.483538435744510610,	-0.483494668983627470,	-0.483450901014007670,	-0.483407131835760230,	-0.483363361448995330,	-0.483319589853822060,	
+-0.483275817050349780,	-0.483232043038687550,	-0.483188267818945640,	-0.483144491391233060,	-0.483100713755659270,	-0.483056934912333260,	-0.483013154861365310,	-0.482969373602864520,	
+-0.482925591136940220,	-0.482881807463701630,	-0.482838022583258860,	-0.482794236495721060,	-0.482750449201197640,	-0.482706660699797730,	-0.482662870991631580,	-0.482619080076808200,	
+-0.482575287955436800,	-0.482531494627627510,	-0.482487700093489510,	-0.482443904353132220,	-0.482400107406664840,	-0.482356309254197540,	-0.482312509895839510,	-0.482268709331700180,	
+-0.482224907561888680,	-0.482181104586515310,	-0.482137300405689140,	-0.482093495019519760,	-0.482049688428116240,	-0.482005880631588890,	-0.481962071630046840,	-0.481918261423599610,	
+-0.481874450012356350,	-0.481830637396427400,	-0.481786823575921790,	-0.481743008550949090,	-0.481699192321618560,	-0.481655374888040390,	-0.481611556250323810,	-0.481567736408577920,	
+-0.481523915362913110,	-0.481480093113438480,	-0.481436269660263650,	-0.481392445003497700,	-0.481348619143251110,	-0.481304792079632890,	-0.481260963812752740,	-0.481217134342719790,	
+-0.481173303669644390,	-0.481129471793635740,	-0.481085638714803370,	-0.481041804433256560,	-0.480997968949105630,	-0.480954132262459750,	-0.480910294373428530,	-0.480866455282121190,	
+-0.480822614988648140,	-0.480778773493118540,	-0.480734930795641560,	-0.480691086896327720,	-0.480647241795286120,	-0.480603395492626430,	-0.480559547988457850,	-0.480515699282890780,	
+-0.480471849376034490,	-0.480427998267998590,	-0.480384145958892230,	-0.480340292448825980,	-0.480296437737908980,	-0.480252581826250860,	-0.480208724713960920,	-0.480164866401149530,	
+-0.480121006887925970,	-0.480077146174399950,	-0.480033284260680590,	-0.479989421146878480,	-0.479945556833102800,	-0.479901691319462810,	-0.479857824606069020,	-0.479813956693030620,	
+-0.479770087580457420,	-0.479726217268458540,	-0.479682345757144520,	-0.479638473046624600,	-0.479594599137008530,	-0.479550724028405590,	-0.479506847720926220,	-0.479462970214679710,	
+-0.479419091509775800,	-0.479375211606323790,	-0.479331330504434110,	-0.479287448204216090,	-0.479243564705779500,	-0.479199680009233580,	-0.479155794114688840,	-0.479111907022254590,	
+-0.479068018732040250,	-0.479024129244156220,	-0.478980238558711860,	-0.478936346675816860,	-0.478892453595580690,	-0.478848559318113710,	-0.478804663843525380,	-0.478760767171925390,	
+-0.478716869303423050,	-0.478672970238128940,	-0.478629069976152450,	-0.478585168517603240,	-0.478541265862590710,	-0.478497362011225450,	-0.478453456963616740,	-0.478409550719874400,	
+-0.478365643280107830,	-0.478321734644427510,	-0.478277824812942840,	-0.478233913785763630,	-0.478190001562999230,	-0.478146088144760230,	-0.478102173531156030,	-0.478058257722295990,	
+-0.478014340718290690,	-0.477970422519249540,	-0.477926503125282290,	-0.477882582536498460,	-0.477838660753008520,	-0.477794737774921980,	-0.477750813602348560,	-0.477706888235397700,	
+-0.477662961674180040,	-0.477619033918804950,	-0.477575104969382270,	-0.477531174826021480,	-0.477487243488833150,	-0.477443310957926640,	-0.477399377233411910,	-0.477355442315398340,	
+-0.477311506203996540,	-0.477267568899315990,	-0.477223630401466090,	-0.477179690710557550,	-0.477135749826699760,	-0.477091807750002590,	-0.477047864480575570,	-0.477003920018529200,	
+-0.476959974363973080,	-0.476916027517017000,	-0.476872079477770490,	-0.476828130246344130,	-0.476784179822847490,	-0.476740228207390370,	-0.476696275400082300,	-0.476652321401033920,	
+-0.476608366210354740,	-0.476564409828154620,	-0.476520452254543150,	-0.476476493489630890,	-0.476432533533527440,	-0.476388572386342250,	-0.476344610048185960,	-0.476300646519168200,	
+-0.476256681799398840,	-0.476212715888987340,	-0.476168748788044440,	-0.476124780496679720,	-0.476080811015002990,	-0.476036840343123880,	-0.475992868481153080,	-0.475948895429200050,	
+-0.475904921187374820,	-0.475860945755786910,	-0.475816969134547020,	-0.475772991323764660,	-0.475729012323549860,	-0.475685032134012140,	-0.475641050755262200,	-0.475597068187409660,	
+-0.475553084430564430,	-0.475509099484836160,	-0.475465113350335480,	-0.475421126027172010,	-0.475377137515455350,	-0.475333147815296230,	-0.475289156926804290,	-0.475245164850089390,	
+-0.475201171585261210,	-0.475157177132430500,	-0.475113181491706840,	-0.475069184663200250,	-0.475025186647020260,	-0.474981187443277720,	-0.474937187052082210,	-0.474893185473543760,	
+-0.474849182707771930,	-0.474805178754877490,	-0.474761173614970170,	-0.474717167288159880,	-0.474673159774556320,	-0.474629151074270230,	-0.474585141187411240,	-0.474541130114089050,	
+-0.474497117854414400,	-0.474453104408496970,	-0.474409089776446750,	-0.474365073958373410,	-0.474321056954387810,	-0.474277038764599530,	-0.474233019389118720,	-0.474188998828054930,	
+-0.474144977081519040,	-0.474100954149620670,	-0.474056930032469960,	-0.474012904730176540,	-0.473968878242851220,	-0.473924850570603680,	-0.473880821713544060,	-0.473836791671782000,	
+-0.473792760445428340,	-0.473748728034592780,	-0.473704694439385010,	-0.473660659659915880,	-0.473616623696295090,	-0.473572586548632770,	-0.473528548217038600,	-0.473484508701623400,	
+-0.473440468002497010,	-0.473396426119769400,	-0.473352383053550320,	-0.473308338803950680,	-0.473264293371080220,	-0.473220246755049030,	-0.473176198955966800,	-0.473132149973944480,	
+-0.473088099809091780,	-0.473044048461518820,	-0.472999995931335350,	-0.472955942218652340,	-0.472911887323579420,	-0.472867831246226390,	-0.472823773986704170,	-0.472779715545122550,	
+-0.472735655921591610,	-0.472691595116221110,	-0.472647533129122050,	-0.472603469960404200,	-0.472559405610177620,	-0.472515340078552120,	-0.472471273365638710,	-0.472427205471547100,	
+-0.472383136396387460,	-0.472339066140269600,	-0.472294994703304490,	-0.472250922085601880,	-0.472206848287271940,	-0.472162773308424490,	-0.472118697149170540,	-0.472074619809619790,	
+-0.472030541289882530,	-0.471986461590068520,	-0.471942380710288770,	-0.471898298650653030,	-0.471854215411271150,	-0.471810130992254160,	-0.471766045393711810,	-0.471721958615754390,	
+-0.471677870658491650,	-0.471633781522034610,	-0.471589691206493130,	-0.471545599711977400,	-0.471501507038597330,	-0.471457413186463840,	-0.471413318155686820,	-0.471369221946376540,	
+-0.471325124558642780,	-0.471281025992596640,	-0.471236926248347900,	-0.471192825326006870,	-0.471148723225683350,	-0.471104619947488420,	-0.471060515491531940,	-0.471016409857923810,	
+-0.470972303046775010,	-0.470928195058195500,	-0.470884085892295470,	-0.470839975549184830,	-0.470795864028974660,	-0.470751751331774830,	-0.470707637457695620,	-0.470663522406846890,	
+-0.470619406179339780,	-0.470575288775284150,	-0.470531170194790290,	-0.470487050437968120,	-0.470442929504928720,	-0.470398807395781990,	-0.470354684110638300,	-0.470310559649607440,	
+-0.470266434012800550,	-0.470222307200327650,	-0.470178179212298540,	-0.470134050048824360,	-0.470089919710015120,	-0.470045788195981030,	-0.470001655506832090,	-0.469957521642679400,	
+-0.469913386603632910,	-0.469869250389802980,	-0.469825113001299480,	-0.469780974438233630,	-0.469736834700715310,	-0.469692693788854920,	-0.469648551702762430,	-0.469604408442548920,	
+-0.469560264008324400,	-0.469516118400199240,	-0.469471971618283360,	-0.469427823662687930,	-0.469383674533522980,	-0.469339524230898810,	-0.469295372754925500,	-0.469251220105714070,	
+-0.469207066283374660,	-0.469162911288017130,	-0.469118755119752760,	-0.469074597778691480,	-0.469030439264943700,	-0.468986279578619440,	-0.468942118719829880,	-0.468897956688685060,	
+-0.468853793485295270,	-0.468809629109770640,	-0.468765463562222370,	-0.468721296842760370,	-0.468677128951495160,	-0.468632959888536760,	-0.468588789653996310,	-0.468544618247983930,	
+-0.468500445670609940,	-0.468456271921984520,	-0.468412097002218750,	-0.468367920911422760,	-0.468323743649706580,	-0.468279565217181450,	-0.468235385613957390,	-0.468191204840144870,	
+-0.468147022895853970,	-0.468102839781195880,	-0.468058655496280670,	-0.468014470041218820,	-0.467970283416120460,	-0.467926095621096720,	-0.467881906656257780,	-0.467837716521714080,	
+-0.467793525217575670,	-0.467749332743953860,	-0.467705139100958680,	-0.467660944288700700,	-0.467616748307289940,	-0.467572551156837710,	-0.467528352837454090,	-0.467484153349249200,	
+-0.467439952692334350,	-0.467395750866819560,	-0.467351547872815460,	-0.467307343710432030,	-0.467263138379780670,	-0.467218931880971470,	-0.467174724214114930,	-0.467130515379321210,	
+-0.467086305376701590,	-0.467042094206366170,	-0.466997881868425560,	-0.466953668362989790,	-0.466909453690170280,	-0.466865237850077160,	-0.466821020842820960,	-0.466776802668511740,	
+-0.466732583327260970,	-0.466688362819178690,	-0.466644141144375520,	-0.466599918302961660,	-0.466555694295048340,	-0.466511469120745760,	-0.466467242780164160,	-0.466423015273414840,	
+-0.466378786600608000,	-0.466334556761854150,	-0.466290325757263540,	-0.466246093586947520,	-0.466201860251016230,	-0.466157625749580360,	-0.466113390082749990,	-0.466069153250636530,	
+-0.466024915253350160,	-0.465980676091001520,	-0.465936435763700860,	-0.465892194271559420,	-0.465847951614687560,	-0.465803707793195800,	-0.465759462807194320,	-0.465715216656794660,	
+-0.465670969342106890,	-0.465626720863241360,	-0.465582471220309380,	-0.465538220413421240,	-0.465493968442687530,	-0.465449715308218550,	-0.465405461010125640,	-0.465361205548519120,	
+-0.465316948923509550,	-0.465272691135207190,	-0.465228432183723560,	-0.465184172069168790,	-0.465139910791653620,	-0.465095648351288250,	-0.465051384748184190,	-0.465007119982451640,	
+-0.464962854054201350,	-0.464918586963543490,	-0.464874318710589540,	-0.464830049295449800,	-0.464785778718234570,	-0.464741506979055250,	-0.464697234078022160,	-0.464652960015246030,	
+-0.464608684790837060,	-0.464564408404906810,	-0.464520130857565550,	-0.464475852148923900,	-0.464431572279092260,	-0.464387291248182120,	-0.464343009056303710,	-0.464298725703567780,	
+-0.464254441190084630,	-0.464210155515965780,	-0.464165868681321590,	-0.464121580686262690,	-0.464077291530899440,	-0.464033001215343350,	-0.463988709739704740,	-0.463944417104094010,	
+-0.463900123308622630,	-0.463855828353400890,	-0.463811532238539600,	-0.463767234964149120,	-0.463722936530340910,	-0.463678636937225390,	-0.463634336184913230,	-0.463590034273514860,	
+-0.463545731203141850,	-0.463501426973904450,	-0.463457121585913510,	-0.463412815039279340,	-0.463368507334113560,	-0.463324198470526470,	-0.463279888448628940,	-0.463235577268531260,	
+-0.463191264930345070,	-0.463146951434180660,	-0.463102636780148900,	-0.463058320968360190,	-0.463014003998926000,	-0.462969685871956860,	-0.462925366587563060,	-0.462881046145856290,	
+-0.462836724546946850,	-0.462792401790945660,	-0.462748077877963020,	-0.462703752808110600,	-0.462659426581498830,	-0.462615099198238460,	-0.462570770658439930,	-0.462526440962214900,	
+-0.462482110109673770,	-0.462437778100927340,	-0.462393444936086080,	-0.462349110615261630,	-0.462304775138564330,	-0.462260438506105150,	-0.462216100717994460,	-0.462171761774343940,	
+-0.462127421675263990,	-0.462083080420865100,	-0.462038738011258940,	-0.461994394446555880,	-0.461950049726866820,	-0.461905703852302290,	-0.461861356822973910,	-0.461817008638992110,	
+-0.461772659300467790,	-0.461728308807511420,	-0.461683957160234640,	-0.461639604358748010,	-0.461595250403162400,	-0.461550895293588230,	-0.461506539030137220,	-0.461462181612919850,	
+-0.461417823042047040,	-0.461373463317629300,	-0.461329102439778260,	-0.461284740408604450,	-0.461240377224218460,	-0.461196012886731840,	-0.461151647396255250,	-0.461107280752899530,	
+-0.461062912956775210,	-0.461018544007993970,	-0.460974173906666400,	-0.460929802652903400,	-0.460885430246815500,	-0.460841056688514440,	-0.460796681978110690,	-0.460752306115715270,	
+-0.460707929101438650,	-0.460663550935392630,	-0.460619171617687730,	-0.460574791148434910,	-0.460530409527744710,	-0.460486026755728920,	-0.460441642832498000,	-0.460397257758163040,	
+-0.460352871532834500,	-0.460308484156624120,	-0.460264095629642600,	-0.460219705952000460,	-0.460175315123809440,	-0.460130923145180060,	-0.460086530016223460,	-0.460042135737050110,	
+-0.459997740307771800,	-0.459953343728499160,	-0.459908945999343180,	-0.459864547120414410,	-0.459820147091824670,	-0.459775745913684530,	-0.459731343586105070,	-0.459686940109196860,	
+-0.459642535483071660,	-0.459598129707840140,	-0.459553722783613340,	-0.459509314710501770,	-0.459464905488617350,	-0.459420495118070650,	-0.459376083598972310,	-0.459331670931434180,	
+-0.459287257115566840,	-0.459242842151481370,	-0.459198426039288400,	-0.459154008779099790,	-0.459109590371026110,	-0.459065170815178500,	-0.459020750111667540,	-0.458976328260605080,	
+-0.458931905262101870,	-0.458887481116268810,	-0.458843055823216720,	-0.458798629383057380,	-0.458754201795901430,	-0.458709773061860000,	-0.458665343181043740,	-0.458620912153564490,	
+-0.458576479979532990,	-0.458532046659059890,	-0.458487612192257090,	-0.458443176579235220,	-0.458398739820105430,	-0.458354301914978390,	-0.458309862863966020,	-0.458265422667178960,	
+-0.458220981324728330,	-0.458176538836724880,	-0.458132095203280460,	-0.458087650424505830,	-0.458043204500512060,	-0.457998757431409890,	-0.457954309217311170,	-0.457909859858326720,	
+-0.457865409354567650,	-0.457820957706144620,	-0.457776504913169620,	-0.457732050975753310,	-0.457687595894006540,	-0.457643139668041100,	-0.457598682297967850,	-0.457554223783897930,	
+-0.457509764125942020,	-0.457465303324212090,	-0.457420841378818890,	-0.457376378289873650,	-0.457331914057487020,	-0.457287448681771010,	-0.457242982162836380,	-0.457198514500794300,	
+-0.457154045695755520,	-0.457109575747832010,	-0.457065104657134570,	-0.457020632423774390,	-0.456976159047862260,	-0.456931684529510050,	-0.456887208868828660,	-0.456842732065929290,	
+-0.456798254120922680,	-0.456753775033920780,	-0.456709294805034470,	-0.456664813434374540,	-0.456620330922053010,	-0.456575847268180570,	-0.456531362472868570,	-0.456486876536227770,	
+-0.456442389458370120,	-0.456397901239406540,	-0.456353411879448220,	-0.456308921378605960,	-0.456264429736991770,	-0.456219936954716520,	-0.456175443031891450,	-0.456130947968627350,	
+-0.456086451765036260,	-0.456041954421229080,	-0.455997455937317000,	-0.455952956313410870,	-0.455908455549622780,	-0.455863953646063520,	-0.455819450602843960,	-0.455774946420076210,	
+-0.455730441097871090,	-0.455685934636339880,	-0.455641427035593400,	-0.455596918295743780,	-0.455552408416901810,	-0.455507897399178910,	-0.455463385242685810,	-0.455418871947534660,	
+-0.455374357513836310,	-0.455329841941702060,	-0.455285325231242880,	-0.455240807382570720,	-0.455196288395796570,	-0.455151768271031650,	-0.455107247008386950,	-0.455062724607974530,	
+-0.455018201069905310,	-0.454973676394290150,	-0.454929150581241230,	-0.454884623630869460,	-0.454840095543286080,	-0.454795566318602070,	-0.454751035956929560,	-0.454706504458379460,	
+-0.454661971823063060,	-0.454617438051091390,	-0.454572903142576480,	-0.454528367097629340,	-0.454483829916361270,	-0.454439291598883240,	-0.454394752145307390,	-0.454350211555744620,	
+-0.454305669830306350,	-0.454261126969103480,	-0.454216582972248260,	-0.454172037839851490,	-0.454127491572024700,	-0.454082944168878730,	-0.454038395630525840,	-0.453993845957076920,	
+-0.453949295148643020,	-0.453904743205336250,	-0.453860190127267640,	-0.453815635914548600,	-0.453771080567289990,	-0.453726524085604150,	-0.453681966469601960,	-0.453637407719394870,	
+-0.453592847835093850,	-0.453548286816811090,	-0.453503724664657600,	-0.453459161378744870,	-0.453414596959183790,	-0.453370031406086620,	-0.453325464719564420,	-0.453280896899728500,	
+-0.453236327946689940,	-0.453191757860560980,	-0.453147186641452650,	-0.453102614289475900,	-0.453058040804743050,	-0.453013466187365100,	-0.452968890437453480,	-0.452924313555119200,	
+-0.452879735540474560,	-0.452835156393630590,	-0.452790576114698750,	-0.452745994703790010,	-0.452701412161016730,	-0.452656828486489910,	-0.452612243680320990,	-0.452567657742621090,	
+-0.452523070673502450,	-0.452478482473076150,	-0.452433893141453600,	-0.452389302678745940,	-0.452344711085065410,	-0.452300118360523140,	-0.452255524505230160,	-0.452210929519298750,	
+-0.452166333402840010,	-0.452121736155965460,	-0.452077137778786160,	-0.452032538271414430,	-0.451987937633961330,	-0.451943335866538400,	-0.451898732969256700,	-0.451854128942228590,	
+-0.451809523785565210,	-0.451764917499377970,	-0.451720310083778000,	-0.451675701538877710,	-0.451631091864788170,	-0.451586481061620860,	-0.451541869129486960,	-0.451497256068498830,	
+-0.451452641878767550,	-0.451408026560404240,	-0.451363410113521270,	-0.451318792538229760,	-0.451274173834641250,	-0.451229554002866960,	-0.451184933043019150,	-0.451140310955209010,	
+-0.451095687739548110,	-0.451051063396147590,	-0.451006437925119800,	-0.450961811326575920,	-0.450917183600627490,	-0.450872554747385750,	-0.450827924766962980,	-0.450783293659470450,	
+-0.450738661425019620,	-0.450694028063721770,	-0.450649393575689280,	-0.450604757961033280,	-0.450560121219865330,	-0.450515483352296740,	-0.450470844358439870,	-0.450426204238405850,	
+-0.450381562992305920,	-0.450336920620252430,	-0.450292277122356700,	-0.450247632498730290,	-0.450202986749484390,	-0.450158339874731360,	-0.450113691874582560,	-0.450069042749149490,	
+-0.450024392498543420,	-0.449979741122876750,	-0.449935088622260780,	-0.449890434996807030,	-0.449845780246626860,	-0.449801124371832620,	-0.449756467372535500,	-0.449711809248847290,	
+-0.449667150000879150,	-0.449622489628743460,	-0.449577828132551650,	-0.449533165512414790,	-0.449488501768445460,	-0.449443836900754850,	-0.449399170909454690,	-0.449354503794656130,	
+-0.449309835556471750,	-0.449265166195012830,	-0.449220495710390910,	-0.449175824102717390,	-0.449131151372104740,	-0.449086477518664150,	-0.449041802542507420,	-0.448997126443745790,	
+-0.448952449222491720,	-0.448907770878856530,	-0.448863091412951890,	-0.448818410824889160,	-0.448773729114780750,	-0.448729046282738080,	-0.448684362328872320,	-0.448639677253296120,	
+-0.448594991056120720,	-0.448550303737457800,	-0.448505615297418780,	-0.448460925736116070,	-0.448416235053661070,	-0.448371543250165480,	-0.448326850325740660,	-0.448282156280499060,	
+-0.448237461114552090,	-0.448192764828011460,	-0.448148067420988560,	-0.448103368893595870,	-0.448058669245944730,	-0.448013968478146950,	-0.447969266590313830,	-0.447924563582557940,	
+-0.447879859454990650,	-0.447835154207723740,	-0.447790447840868520,	-0.447745740354537570,	-0.447701031748842290,	-0.447656322023893990,	-0.447611611179805360,	-0.447566899216687630,	
+-0.447522186134652670,	-0.447477471933811880,	-0.447432756614277780,	-0.447388040176161790,	-0.447343322619575710,	-0.447298603944630890,	-0.447253884151440020,	-0.447209163240114390,	
+-0.447164441210765870,	-0.447119718063505870,	-0.447074993798446950,	-0.447030268415700540,	-0.446985541915378480,	-0.446940814297592140,	-0.446896085562454190,	-0.446851355710076000,	
+-0.446806624740569040,	-0.446761892654045870,	-0.446717159450618020,	-0.446672425130397290,	-0.446627689693495030,	-0.446582953140024000,	-0.446538215470095590,	-0.446493476683821610,	
+-0.446448736781313580,	-0.446403995762684080,	-0.446359253628044570,	-0.446314510377506970,	-0.446269766011182680,	-0.446225020529184340,	-0.446180273931623460,	-0.446135526218611910,	
+-0.446090777390261150,	-0.446046027446683870,	-0.446001276387991470,	-0.445956524214295550,	-0.445911770925708660,	-0.445867016522342340,	-0.445822261004308500,	-0.445777504371718590,	
+-0.445732746624685370,	-0.445687987763320250,	-0.445643227787735130,	-0.445598466698041600,	-0.445553704494352280,	-0.445508941176778640,	-0.445464176745432710,	-0.445419411200425940,	
+-0.445374644541871030,	-0.445329876769879510,	-0.445285107884563270,	-0.445240337886033900,	-0.445195566774404080,	-0.445150794549785340,	-0.445106021212289200,	-0.445061246762028410,	
+-0.445016471199114530,	-0.444971694523659420,	-0.444926916735774720,	-0.444882137835573120,	-0.444837357823166190,	-0.444792576698665840,	-0.444747794462183650,	-0.444703011113832370,	
+-0.444658226653723570,	-0.444613441081969210,	-0.444568654398680820,	-0.444523866603971250,	-0.444479077697951970,	-0.444434287680735010,	-0.444389496552431930,	-0.444344704313155480,	
+-0.444299910963017300,	-0.444255116502129340,	-0.444210320930603200,	-0.444165524248551660,	-0.444120726456086250,	-0.444075927553318710,	-0.444031127540361670,	-0.443986326417326880,	
+-0.443941524184326250,	-0.443896720841471360,	-0.443851916388875170,	-0.443807110826649090,	-0.443762304154905310,	-0.443717496373755290,	-0.443672687483312010,	-0.443627877483686980,	
+-0.443583066374992230,	-0.443538254157339440,	-0.443493440830841410,	-0.443448626395609780,	-0.443403810851756620,	-0.443358994199393450,	-0.443314176438633250,	-0.443269357569587630,	
+-0.443224537592368180,	-0.443179716507087760,	-0.443134894313858110,	-0.443090071012791190,	-0.443045246603998690,	-0.443000421087593520,	-0.442955594463687260,	-0.442910766732391990,	
+-0.442865937893819450,	-0.442821107948082440,	-0.442776276895292640,	-0.442731444735562200,	-0.442686611469002730,	-0.442641777095727110,	-0.442596941615847060,	-0.442552105029474670,	
+-0.442507267336721580,	-0.442462428537700740,	-0.442417588632523840,	-0.442372747621302580,	-0.442327905504149800,	-0.442283062281177310,	-0.442238217952497130,	-0.442193372518221050,	
+-0.442148525978461880,	-0.442103678333331420,	-0.442058829582941790,	-0.442013979727404640,	-0.441969128766832970,	-0.441924276701338490,	-0.441879423531033320,	-0.441834569256029150,	
+-0.441789713876439010,	-0.441744857392374570,	-0.441699999803947970,	-0.441655141111270970,	-0.441610281314456510,	-0.441565420413616350,	-0.441520558408862670,	-0.441475695300307170,	
+-0.441430831088062800,	-0.441385965772241430,	-0.441341099352954680,	-0.441296231830315630,	-0.441251363204435980,	-0.441206493475427900,	-0.441161622643403200,	-0.441116750708474840,	
+-0.441071877670754620,	-0.441027003530354680,	-0.440982128287386870,	-0.440937251941964090,	-0.440892374494198210,	-0.440847495944201420,	-0.440802616292085450,	-0.440757735537963380,	
+-0.440712853681946900,	-0.440667970724148370,	-0.440623086664679480,	-0.440578201503653230,	-0.440533315241181500,	-0.440488427877376130,	-0.440443539412350040,	-0.440398649846215130,	
+-0.440353759179083590,	-0.440308867411067230,	-0.440263974542279110,	-0.440219080572831100,	-0.440174185502835320,	-0.440129289332403690,	-0.440084392061649290,	-0.440039493690683850,	
+-0.439994594219619730,	-0.439949693648568670,	-0.439904791977643820,	-0.439859889206956960,	-0.439814985336620390,	-0.439770080366745920,	-0.439725174297446730,	-0.439680267128834510,	
+-0.439635358861021290,	-0.439590449494120070,	-0.439545539028242730,	-0.439500627463501490,	-0.439455714800008330,	-0.439410801037876280,	-0.439365886177217170,	-0.439320970218143430,	
+-0.439276053160766790,	-0.439231135005200450,	-0.439186215751556310,	-0.439141295399946560,	-0.439096373950483230,	-0.439051451403279340,	-0.439006527758446840,	-0.438961603016097990,	
+-0.438916677176344750,	-0.438871750239300200,	-0.438826822205076290,	-0.438781893073784960,	-0.438736962845539260,	-0.438692031520451160,	-0.438647099098632980,	-0.438602165580196600,	
+-0.438557230965255280,	-0.438512295253920880,	-0.438467358446305690,	-0.438422420542521730,	-0.438377481542682130,	-0.438332541446898820,	-0.438287600255284180,	-0.438242657967950090,	
+-0.438197714585009780,	-0.438152770106575220,	-0.438107824532758650,	-0.438062877863672210,	-0.438017930099428910,	-0.437972981240140840,	-0.437928031285920280,	-0.437883080236879220,	
+-0.437838128093130880,	-0.437793174854787250,	-0.437748220521960270,	-0.437703265094763150,	-0.437658308573307840,	-0.437613350957706760,	-0.437568392248071920,	-0.437523432444516470,	
+-0.437478471547152470,	-0.437433509556092280,	-0.437388546471447930,	-0.437343582293332590,	-0.437298617021858290,	-0.437253650657137450,	-0.437208683199282130,	-0.437163714648405420,	
+-0.437118745004619500,	-0.437073774268036670,	-0.437028802438769020,	-0.436983829516929770,	-0.436938855502630950,	-0.436893880395984590,	-0.436848904197103930,	-0.436803926906101040,	
+-0.436758948523088280,	-0.436713969048177770,	-0.436668988481482720,	-0.436624006823115200,	-0.436579024073187720,	-0.436534040231812190,	-0.436489055299102040,	-0.436444069275169210,	
+-0.436399082160126180,	-0.436354093954085090,	-0.436309104657159160,	-0.436264114269460490,	-0.436219122791101480,	-0.436174130222194310,	-0.436129136562852180,	-0.436084141813187220,	
+-0.436039145973311500,	-0.435994149043338330,	-0.435949151023379830,	-0.435904151913548370,	-0.435859151713956170,	-0.435814150424716500,	-0.435769148045941470,	-0.435724144577743500,	
+-0.435679140020234830,	-0.435634134373528710,	-0.435589127637737220,	-0.435544119812972920,	-0.435499110899347950,	-0.435454100896975560,	-0.435409089805967930,	-0.435364077626437580,	
+-0.435319064358496650,	-0.435274050002258440,	-0.435229034557835130,	-0.435184018025339240,	-0.435139000404882850,	-0.435093981696579420,	-0.435048961900540990,	-0.435003941016879780,	
+-0.434958919045709100,	-0.434913895987141140,	-0.434868871841288420,	-0.434823846608263180,	-0.434778820288178660,	-0.434733792881147110,	-0.434688764387281050,	-0.434643734806692720,	
+-0.434598704139495420,	-0.434553672385801390,	-0.434508639545723160,	-0.434463605619372970,	-0.434418570606864120,	-0.434373534508308850,	-0.434328497323819780,	-0.434283459053509010,	
+-0.434238419697490050,	-0.434193379255874980,	-0.434148337728776150,	-0.434103295116306800,	-0.434058251418579230,	-0.434013206635706030,	-0.433968160767799430,	-0.433923113814972840,	
+-0.433878065777338400,	-0.433833016655008840,	-0.433787966448096360,	-0.433742915156714310,	-0.433697862780975050,	-0.433652809320991100,	-0.433607754776874690,	-0.433562699148739290,	
+-0.433517642436697210,	-0.433472584640860970,	-0.433427525761342860,	-0.433382465798256400,	-0.433337404751713730,	-0.433292342621827140,	-0.433247279408710110,	-0.433202215112474860,	
+-0.433157149733234100,	-0.433112083271100070,	-0.433067015726186220,	-0.433021947098604810,	-0.432976877388468570,	-0.432931806595889700,	-0.432886734720981770,	-0.432841661763856970,	
+-0.432796587724627980,	-0.432751512603407160,	-0.432706436400307930,	-0.432661359115442680,	-0.432616280748923940,	-0.432571201300864130,	-0.432526120771376750,	-0.432481039160574070,	
+-0.432435956468568360,	-0.432390872695473160,	-0.432345787841400760,	-0.432300701906463970,	-0.432255614890774960,	-0.432210526794447330,	-0.432165437617593350,	-0.432120347360325840,	
+-0.432075256022756980,	-0.432030163605000460,	-0.431985070107168470,	-0.431939975529373850,	-0.431894879871728870,	-0.431849783134347130,	-0.431804685317340900,	-0.431759586420822910,	
+-0.431714486444905620,	-0.431669385389702510,	-0.431624283255325920,	-0.431579180041888610,	-0.431534075749502980,	-0.431488970378282490,	-0.431443863928339670,	-0.431398756399786750,	
+-0.431353647792737330,	-0.431308538107303800,	-0.431263427343598900,	-0.431218315501735060,	-0.431173202581825840,	-0.431128088583983600,	-0.431082973508321140,	-0.431037857354950820,	
+-0.430992740123986310,	-0.430947621815539920,	-0.430902502429724440,	-0.430857381966652350,	-0.430812260426437220,	-0.430767137809191400,	-0.430722014115027750,	-0.430676889344058680,	
+-0.430631763496397760,	-0.430586636572157460,	-0.430541508571450130,	-0.430496379494389460,	-0.430451249341087860,	-0.430406118111658080,	-0.430360985806212630,	-0.430315852424865140,	
+-0.430270717967727980,	-0.430225582434914040,	-0.430180445826535750,	-0.430135308142706780,	-0.430090169383539500,	-0.430045029549146810,	-0.429999888639641110,	-0.429954746655136110,	
+-0.429909603595744260,	-0.429864459461578420,	-0.429819314252750990,	-0.429774167969375680,	-0.429729020611564980,	-0.429683872179431270,	-0.429638722673088340,	-0.429593572092648590,	
+-0.429548420438224890,	-0.429503267709929750,	-0.429458113907876860,	-0.429412959032178630,	-0.429367803082948090,	-0.429322646060297570,	-0.429277487964340840,	-0.429232328795190410,	
+-0.429187168552959190,	-0.429142007237759580,	-0.429096844849705390,	-0.429051681388909090,	-0.429006516855483580,	-0.428961351249541380,	-0.428916184571196180,	-0.428871016820560560,	
+-0.428825847997747370,	-0.428780678102869180,	-0.428735507136039700,	-0.428690335097371420,	-0.428645161986976890,	-0.428599987804969880,	-0.428554812551462940,	-0.428509636226568900,	
+-0.428464458830400410,	-0.428419280363071200,	-0.428374100824693740,	-0.428328920215381050,	-0.428283738535245650,	-0.428238555784401290,	-0.428193371962960530,	-0.428148187071036410,	
+-0.428103001108741390,	-0.428057814076189260,	-0.428012625973492540,	-0.427967436800764320,	-0.427922246558117110,	-0.427877055245664660,	-0.427831862863519600,	-0.427786669411794440,	
+-0.427741474890603050,	-0.427696279300057940,	-0.427651082640272180,	-0.427605884911358260,	-0.427560686113430070,	-0.427515486246600130,	-0.427470285310981470,	-0.427425083306686720,	
+-0.427379880233829670,	-0.427334676092522900,	-0.427289470882879440,	-0.427244264605011910,	-0.427199057259034120,	-0.427153848845058690,	-0.427108639363198650,	-0.427063428813566570,	
+-0.427018217196276360,	-0.426973004511440600,	-0.426927790759171920,	-0.426882575939584120,	-0.426837360052789940,	-0.426792143098902340,	-0.426746925078034020,	-0.426701705990298720,	
+-0.426656485835809170,	-0.426611264614678460,	-0.426566042327019170,	-0.426520818972945140,	-0.426475594552569060,	-0.426430369066004010,	-0.426385142513362680,	-0.426339914894758860,	
+-0.426294686210305250,	-0.426249456460114920,	-0.426204225644300550,	-0.426158993762976000,	-0.426113760816253960,	-0.426068526804247170,	-0.426023291727069430,	-0.425978055584833480,	
+-0.425932818377652340,	-0.425887580105638820,	-0.425842340768906700,	-0.425797100367568790,	-0.425751858901738060,	-0.425706616371527350,	-0.425661372777050410,	-0.425616128118420090,	
+-0.425570882395749470,	-0.425525635609151240,	-0.425480387758739310,	-0.425435138844626410,	-0.425389888866925640,	-0.425344637825749770,	-0.425299385721212670,	-0.425254132553427140,	
+-0.425208878322506310,	-0.425163623028562860,	-0.425118366671710710,	-0.425073109252062710,	-0.425027850769731490,	-0.424982591224831060,	-0.424937330617474180,	-0.424892068947773930,	
+-0.424846806215843140,	-0.424801542421795690,	-0.424756277565744410,	-0.424711011647802450,	-0.424665744668082550,	-0.424620476626698660,	-0.424575207523763600,	-0.424529937359390540,	
+-0.424484666133692230,	-0.424439393846782640,	-0.424394120498774560,	-0.424348846089781240,	-0.424303570619915360,	-0.424258294089290940,	-0.424213016498020790,	-0.424167737846217700,	
+-0.424122458133995680,	-0.424077177361467490,	-0.424031895528746370,	-0.423986612635945110,	-0.423941328683177740,	-0.423896043670557050,	-0.423850757598196240,	-0.423805470466208090,	
+-0.423760182274706740,	-0.423714893023804880,	-0.423669602713615810,	-0.423624311344252320,	-0.423579018915828500,	-0.423533725428457080,	-0.423488430882251350,	-0.423443135277324130,	
+-0.423397838613789490,	-0.423352540891760280,	-0.423307242111349290,	-0.423261942272670610,	-0.423216641375837090,	-0.423171339420961910,	-0.423126036408158050,	-0.423080732337539460,	
+-0.423035427209219050,	-0.422990121023310070,	-0.422944813779925380,	-0.422899505479179040,	-0.422854196121183970,	-0.422808885706053410,	-0.422763574233900210,	-0.422718261704838450,	
+-0.422672948118981100,	-0.422627633476441330,	-0.422582317777332130,	-0.422537001021767500,	-0.422491683209860360,	-0.422446364341724000,	-0.422401044417471390,	-0.422355723437216500,	
+-0.422310401401072340,	-0.422265078309151780,	-0.422219754161568930,	-0.422174428958436650,	-0.422129102699868360,	-0.422083775385976860,	-0.422038447016876370,	-0.421993117592679710,	
+-0.421947787113500280,	-0.421902455579451000,	-0.421857122990645980,	-0.421811789347198150,	-0.421766454649220800,	-0.421721118896826950,	-0.421675782090130740,	-0.421630444229245000,	
+-0.421585105314283230,	-0.421539765345358200,	-0.421494424322584220,	-0.421449082246074190,	-0.421403739115941030,	-0.421358394932298930,	-0.421313049695260840,	-0.421267703404940130,	
+-0.421222356061449750,	-0.421177007664903900,	-0.421131658215415540,	-0.421086307713097960,	-0.421040956158064310,	-0.420995603550428590,	-0.420950249890303880,	-0.420904895177803610,	
+-0.420859539413040660,	-0.420814182596129240,	-0.420768824727182360,	-0.420723465806313420,	-0.420678105833635460,	-0.420632744809262600,	-0.420587382733307870,	-0.420542019605884330,	
+-0.420496655427106130,	-0.420451290197086270,	-0.420405923915938170,	-0.420360556583774860,	-0.420315188200710620,	-0.420269818766858320,	-0.420224448282331520,	-0.420179076747243200,	
+-0.420133704161707590,	-0.420088330525837720,	-0.420042955839747050,	-0.419997580103548540,	-0.419952203317356500,	-0.419906825481284000,	-0.419861446595444390,	-0.419816066659950750,	
+-0.419770685674917320,	-0.419725303640457240,	-0.419679920556683460,	-0.419634536423710290,	-0.419589151241650800,	-0.419543765010618410,	-0.419498377730726240,	-0.419452989402088470,	
+-0.419407600024818250,	-0.419362209599029030,	-0.419316818124833900,	-0.419271425602347150,	-0.419226032031681790,	-0.419180637412951360,	-0.419135241746268930,	-0.419089845031748790,	
+-0.419044447269504070,	-0.418999048459648190,	-0.418953648602294340,	-0.418908247697556750,	-0.418862845745548550,	-0.418817442746383220,	-0.418772038700173880,	-0.418726633607034830,	
+-0.418681227467079200,	-0.418635820280420120,	-0.418590412047171900,	-0.418545002767447600,	-0.418499592441360870,	-0.418454181069024710,	-0.418408768650553490,	-0.418363355186060380,	
+-0.418317940675658860,	-0.418272525119462110,	-0.418227108517584380,	-0.418181690870138960,	-0.418136272177239250,	-0.418090852438998520,	-0.418045431655531040,	-0.418000009826949960,	
+-0.417954586953368900,	-0.417909163034900940,	-0.417863738071660440,	-0.417818312063760630,	-0.417772885011314650,	-0.417727456914436860,	-0.417682027773240430,	-0.417636597587838890,	
+-0.417591166358345480,	-0.417545734084874550,	-0.417500300767539300,	-0.417454866406453300,	-0.417409431001729720,	-0.417363994553482940,	-0.417318557061826250,	-0.417273118526873100,	
+-0.417227678948736750,	-0.417182238327531650,	-0.417136796663370890,	-0.417091353956368200,	-0.417045910206636730,	-0.417000465414290810,	-0.416955019579443810,	-0.416909572702208800,	
+-0.416864124782700300,	-0.416818675821031490,	-0.416773225817315960,	-0.416727774771666950,	-0.416682322684198970,	-0.416636869555025100,	-0.416591415384259140,	-0.416545960172014170,	
+-0.416500503918404760,	-0.416455046623544050,	-0.416409588287545760,	-0.416364128910523050,	-0.416318668492590470,	-0.416273207033861170,	-0.416227744534448880,	-0.416182280994466800,	
+-0.416136816414029500,	-0.416091350793250050,	-0.416045884132242310,	-0.416000416431119400,	-0.415954947689995910,	-0.415909477908984970,	-0.415864007088199980,	-0.415818535227755410,	
+-0.415773062327764450,	-0.415727588388340840,	-0.415682113409597880,	-0.415636637391650020,	-0.415591160334610580,	-0.415545682238593230,	-0.415500203103711270,	-0.415454722930079230,	
+-0.415409241717810350,	-0.415363759467018370,	-0.415318276177816580,	-0.415272791850319570,	-0.415227306484640510,	-0.415181820080893220,	-0.415136332639190920,	-0.415090844159648250,	
+-0.415045354642378460,	-0.414999864087494900,	-0.414954372495112020,	-0.414908879865343250,	-0.414863386198302260,	-0.414817891494102420,	-0.414772395752858290,	-0.414726898974683120,	
+-0.414681401159690710,	-0.414635902307994410,	-0.414590402419708740,	-0.414544901494947050,	-0.414499399533823140,	-0.414453896536450320,	-0.414408392502943150,	-0.414362887433415040,	
+-0.414317381327979680,	-0.414271874186750430,	-0.414226366009841920,	-0.414180856797367550,	-0.414135346549440560,	-0.414089835266175650,	-0.414044322947686120,	-0.413998809594085800,	
+-0.413953295205488070,	-0.413907779782007490,	-0.413862263323757470,	-0.413816745830851760,	-0.413771227303403820,	-0.413725707741528230,	-0.413680187145338330,	-0.413634665514947990,	
+-0.413589142850470550,	-0.413543619152020650,	-0.413498094419711750,	-0.413452568653657590,	-0.413407041853971590,	-0.413361514020768430,	-0.413315985154161460,	-0.413270455254264530,	
+-0.413224924321191070,	-0.413179392355055690,	-0.413133859355971800,	-0.413088325324052870,	-0.413042790259413590,	-0.412997254162167260,	-0.412951717032427830,	-0.412906178870308730,	
+-0.412860639675924510,	-0.412815099449388770,	-0.412769558190815230,	-0.412724015900317430,	-0.412678472578009990,	-0.412632928224006320,	-0.412587382838420390,	-0.412541836421365550,	
+-0.412496288972956540,	-0.412450740493306820,	-0.412405190982530260,	-0.412359640440740300,	-0.412314088868051650,	-0.412268536264577770,	-0.412222982630432170,	-0.412177427965729480,	
+-0.412131872270583230,	-0.412086315545107270,	-0.412040757789415180,	-0.411995199003621580,	-0.411949639187839940,	-0.411904078342184290,	-0.411858516466767970,	-0.411812953561705770,	
+-0.411767389627111180,	-0.411721824663098150,	-0.411676258669780140,	-0.411630691647271900,	-0.411585123595686890,	-0.411539554515139130,	-0.411493984405742030,	-0.411448413267610390,	
+-0.411402841100857730,	-0.411357267905597570,	-0.411311693681944590,	-0.411266118430012430,	-0.411220542149914940,	-0.411174964841765690,	-0.411129386505679480,	-0.411083807141769790,	
+-0.411038226750150560,	-0.410992645330935320,	-0.410947062884238930,	-0.410901479410174850,	-0.410855894908857100,	-0.410810309380399200,	-0.410764722824915940,	-0.410719135242520850,	
+-0.410673546633327950,	-0.410627956997450750,	-0.410582366335004110,	-0.410536774646101500,	-0.410491181930856600,	-0.410445588189384090,	-0.410399993421797670,	-0.410354397628211240,	
+-0.410308800808738380,	-0.410263202963493940,	-0.410217604092591500,	-0.410172004196145080,	-0.410126403274268190,	-0.410080801327075750,	-0.410035198354681270,	-0.409989594357198840,	
+-0.409943989334741970,	-0.409898383287425560,	-0.409852776215363150,	-0.409807168118668850,	-0.409761558997456200,	-0.409715948851840040,	-0.409670337681934060,	-0.409624725487852230,	
+-0.409579112269708110,	-0.409533498027616680,	-0.409487882761691510,	-0.409442266472046180,	-0.409396649158795590,	-0.409351030822053430,	-0.409305411461933670,	-0.409259791078549980,	
+-0.409214169672017180,	-0.409168547242449000,	-0.409122923789959460,	-0.409077299314662190,	-0.409031673816672050,	-0.408986047296102720,	-0.408940419753068330,	-0.408894791187682460,	
+-0.408849161600060020,	-0.408803530990314630,	-0.408757899358560440,	-0.408712266704911120,	-0.408666633029481530,	-0.408620998332385350,	-0.408575362613736280,	-0.408529725873649220,	
+-0.408484088112237800,	-0.408438449329616200,	-0.408392809525898070,	-0.408347168701198300,	-0.408301526855630590,	-0.408255883989309120,	-0.408210240102347520,	-0.408164595194860700,	
+-0.408118949266962410,	-0.408073302318766710,	-0.408027654350387400,	-0.407982005361939350,	-0.407936355353536230,	-0.407890704325292290,	-0.407845052277321150,	-0.407799399209737790,	
+-0.407753745122655940,	-0.407708090016189350,	-0.407662433890452920,	-0.407616776745560410,	-0.407571118581625920,	-0.407525459398763280,	-0.407479799197087320,	-0.407434137976711960,	
+-0.407388475737751170,	-0.407342812480318840,	-0.407297148204529890,	-0.407251482910498010,	-0.407205816598337490,	-0.407160149268161960,	-0.407114480920086510,	-0.407068811554224860,	
+-0.407023141170691160,	-0.406977469769599200,	-0.406931797351064000,	-0.406886123915199290,	-0.406840449462119280,	-0.406794773991937700,	-0.406749097504769620,	-0.406703420000728790,	
+-0.406657741479929000,	-0.406612061942485280,	-0.406566381388511420,	-0.406520699818121560,	-0.406475017231429590,	-0.406429333628550440,	-0.406383649009598000,	-0.406337963374686420,	
+-0.406292276723929480,	-0.406246589057442320,	-0.406200900375338620,	-0.406155210677732750,	-0.406109519964738430,	-0.406063828236470690,	-0.406018135493043390,	-0.405972441734570700,	
+-0.405926746961166600,	-0.405881051172945980,	-0.405835354370022720,	-0.405789656552510700,	-0.405743957720524910,	-0.405698257874179240,	-0.405652557013587930,	-0.405606855138864850,	
+-0.405561152250125010,	-0.405515448347482270,	-0.405469743431050970,	-0.405424037500944860,	-0.405378330557279070,	-0.405332622600167450,	-0.405286913629724240,	-0.405241203646063420,	
+-0.405195492649299940,	-0.405149780639547760,	-0.405104067616921080,	-0.405058353581533860,	-0.405012638533501170,	-0.404966922472936860,	-0.404921205399954850,	-0.404875487314670270,	
+-0.404829768217196910,	-0.404784048107649170,	-0.404738326986140870,	-0.404692604852787190,	-0.404646881707701970,	-0.404601157550999570,	-0.404555432382793840,	-0.404509706203199980,	
+-0.404463979012331830,	-0.404418250810303750,	-0.404372521597229640,	-0.404326791373224580,	-0.404281060138402590,	-0.404235327892877920,	-0.404189594636764570,	-0.404143860370177580,	
+-0.404098125093230950,	-0.404052388806038660,	-0.404006651508715730,	-0.403960913201376230,	-0.403915173884134450,	-0.403869433557104310,	-0.403823692220400930,	-0.403777949874138400,	
+-0.403732206518430950,	-0.403686462153392600,	-0.403640716779138540,	-0.403594970395782630,	-0.403549223003439320,	-0.403503474602222520,	-0.403457725192247480,	-0.403411974773628110,	
+-0.403366223346478760,	-0.403320470910913500,	-0.403274717467047460,	-0.403228963014994610,	-0.403183207554869360,	-0.403137451086785730,	-0.403091693610858840,	-0.403045935127202660,	
+-0.403000175635931320,	-0.402954415137159900,	-0.402908653631002480,	-0.402862891117573400,	-0.402817127596986680,	-0.402771363069357570,	-0.402725597534800030,	-0.402679830993428520,	
+-0.402634063445357020,	-0.402588294890700750,	-0.402542525329573740,	-0.402496754762090460,	-0.402450983188364860,	-0.402405210608512200,	-0.402359437022646540,	-0.402313662430882240,	
+-0.402267886833333420,	-0.402222110230115280,	-0.402176332621341840,	-0.402130554007127160,	-0.402084774387586550,	-0.402038993762833970,	-0.401993212132983950,	-0.401947429498150430,	
+-0.401901645858448790,	-0.401855861213992970,	-0.401810075564897560,	-0.401764288911276580,	-0.401718501253245210,	-0.401672712590917640,	-0.401626922924408270,	-0.401581132253831190,	
+-0.401535340579301680,	-0.401489547900933770,	-0.401443754218842040,	-0.401397959533140560,	-0.401352163843944510,	-0.401306367151368140,	-0.401260569455525350,	-0.401214770756531610,	
+-0.401168971054500890,	-0.401123170349547810,	-0.401077368641786340,	-0.401031565931331880,	-0.400985762218298510,	-0.400939957502800700,	-0.400894151784952630,	-0.400848345064869550,	
+-0.400802537342665630,	-0.400756728618455400,	-0.400710918892352890,	-0.400665108164473480,	-0.400619296434931380,	-0.400573483703840940,	-0.400527669971316450,	-0.400481855237473150,	
+-0.400436039502425290,	-0.400390222766287270,	-0.400344405029173290,	-0.400298586291198690,	-0.400252766552477660,	-0.400206945813124270,	-0.400161124073253940,	-0.400115301332980790,	
+-0.400069477592419400,	-0.400023652851683900,	-0.399977827110889690,	-0.399932000370150920,	-0.399886172629582150,	-0.399840343889297510,	-0.399794514149412420,	-0.399748683410041050,	
+-0.399702851671297990,	-0.399657018933297410,	-0.399611185196154680,	-0.399565350459983930,	-0.399519514724899880,	-0.399473677991016570,	-0.399427840258449520,	-0.399382001527312850,	
+-0.399336161797720750,	-0.399290321069788680,	-0.399244479343630830,	-0.399198636619361720,	-0.399152792897095650,	-0.399106948176948030,	-0.399061102459033030,	-0.399015255743465250,	
+-0.398969408030358910,	-0.398923559319829480,	-0.398877709611991150,	-0.398831858906958550,	-0.398786007204845860,	-0.398740154505768610,	-0.398694300809840970,	-0.398648446117177540,	
+-0.398602590427892640,	-0.398556733742101600,	-0.398510876059918810,	-0.398465017381458340,	-0.398419157706835780,	-0.398373297036165310,	-0.398327435369561610,	-0.398281572707138930,	
+-0.398235709049012730,	-0.398189844395297200,	-0.398143978746107070,	-0.398098112101556660,	-0.398052244461761300,	-0.398006375826835350,	-0.397960506196893490,	-0.397914635572049920,	
+-0.397868763952420210,	-0.397822891338118540,	-0.397777017729259660,	-0.397731143125957860,	-0.397685267528328560,	-0.397639390936486150,	-0.397593513350544770,	-0.397547634770620110,	
+-0.397501755196826290,	-0.397455874629278120,	-0.397409993068089830,	-0.397364110513377000,	-0.397318226965253870,	-0.397272342423835190,	-0.397226456889235250,	-0.397180570361569560,	
+-0.397134682840952440,	-0.397088794327498610,	-0.397042904821322370,	-0.396997014322539310,	-0.396951122831263710,	-0.396905230347610270,	-0.396859336871693390,	-0.396813442403628590,	
+-0.396767546943530110,	-0.396721650491512810,	-0.396675753047690980,	-0.396629854612180200,	-0.396583955185094760,	-0.396538054766549020,	-0.396492153356658550,	-0.396446250955537650,	
+-0.396400347563301170,	-0.396354443180063410,	-0.396308537805940000,	-0.396262631441045180,	-0.396216724085493800,	-0.396170815739400160,	-0.396124906402879950,	-0.396078996076047460,	
+-0.396033084759017500,	-0.395987172451904350,	-0.395941259154823750,	-0.395895344867889960,	-0.395849429591217830,	-0.395803513324921700,	-0.395757596069117200,	-0.395711677823918750,	
+-0.395665758589440640,	-0.395619838365798560,	-0.395573917153106910,	-0.395527994951480440,	-0.395482071761033560,	-0.395436147581881950,	-0.395390222414139960,	-0.395344296257922390,	
+-0.395298369113343650,	-0.395252440980519480,	-0.395206511859564120,	-0.395160581750592540,	-0.395114650653719090,	-0.395068718569059400,	-0.395022785496727920,	-0.394976851436839470,	
+-0.394930916389508500,	-0.394884980354850650,	-0.394839043332980310,	-0.394793105324012020,	-0.394747166328061340,	-0.394701226345242740,	-0.394655285375671070,	-0.394609343419460800,	
+-0.394563400476727550,	-0.394517456547585800,	-0.394471511632150440,	-0.394425565730535890,	-0.394379618842857830,	-0.394333670969230670,	-0.394287722109769370,	-0.394241772264588400,	
+-0.394195821433803330,	-0.394149869617528790,	-0.394103916815879530,	-0.394057963028970060,	-0.394012008256916120,	-0.393966052499832130,	-0.393920095757833040,	-0.393874138031033270,	
+-0.393828179319548550,	-0.393782219623493410,	-0.393736258942982360,	-0.393690297278130990,	-0.393644334629053900,	-0.393598370995866030,	-0.393552406378681770,	-0.393506440777616930,	
+-0.393460474192785960,	-0.393414506624303830,	-0.393368538072285000,	-0.393322568536845220,	-0.393276598018099060,	-0.393230626516161360,	-0.393184654031146720,	-0.393138680563170860,	
+-0.393092706112348310,	-0.393046730678793920,	-0.393000754262622380,	-0.392954776863949310,	-0.392908798482889340,	-0.392862819119556950,	-0.392816838774067920,	-0.392770857446536780,	
+-0.392724875137078490,	-0.392678891845807620,	-0.392632907572839920,	-0.392586922318289950,	-0.392540936082272700,	-0.392494948864902660,	-0.392448960666295700,	-0.392402971486566330,	
+-0.392356981325829520,	-0.392310990184199850,	-0.392264998061793100,	-0.392219004958723860,	-0.392173010875107090,	-0.392127015811057410,	-0.392081019766690630,	-0.392035022742121260,	
+-0.391989024737463940,	-0.391943025752834460,	-0.391897025788347400,	-0.391851024844117820,	-0.391805022920260200,	-0.391759020016890500,	-0.391713016134123240,	-0.391667011272073430,	
+-0.391621005430855650,	-0.391574998610585810,	-0.391528990811378430,	-0.391482982033348580,	-0.391436972276610890,	-0.391390961541281220,	-0.391344949827474090,	-0.391298937135304560,	
+-0.391252923464887330,	-0.391206908816338180,	-0.391160893189771760,	-0.391114876585302700,	-0.391068859003046890,	-0.391022840443118860,	-0.390976820905633790,	-0.390930800390706270,	
+-0.390884778898452080,	-0.390838756428986020,	-0.390792732982423010,	-0.390746708558877830,	-0.390700683158466230,	-0.390654656781302960,	-0.390608629427503020,	-0.390562601097181110,	
+-0.390516571790453070,	-0.390470541507433650,	-0.390424510248237820,	-0.390378478012980370,	-0.390332444801777090,	-0.390286410614742730,	-0.390240375451992360,	-0.390194339313640610,	
+-0.390148302199803400,	-0.390102264110595450,	-0.390056225046131470,	-0.390010185006527290,	-0.389964143991897660,	-0.389918102002357660,	-0.389872059038022020,	-0.389826015099006610,	
+-0.389779970185426210,	-0.389733924297395840,	-0.389687877435030310,	-0.389641829598445400,	-0.389595780787755970,	-0.389549731003077100,	-0.389503680244523480,	-0.389457628512211110,	
+-0.389411575806254630,	-0.389365522126769170,	-0.389319467473869530,	-0.389273411847671670,	-0.389227355248290220,	-0.389181297675840030,	-0.389135239130436960,	-0.389089179612195800,	
+-0.389043119121231740,	-0.388997057657659410,	-0.388950995221594880,	-0.388904931813152830,	-0.388858867432448460,	-0.388812802079596560,	-0.388766735754712990,	-0.388720668457912640,	
+-0.388674600189310600,	-0.388628530949021610,	-0.388582460737161790,	-0.388536389553845730,	-0.388490317399188770,	-0.388444244273305540,	-0.388398170176312170,	-0.388352095108323300,	
+-0.388306019069453830,	-0.388259942059819730,	-0.388213864079535790,	-0.388167785128717140,	-0.388121705207478680,	-0.388075624315936340,	-0.388029542454204900,	-0.387983459622399660,	
+-0.387937375820635310,	-0.387891291049027980,	-0.387845205307692400,	-0.387799118596743760,	-0.387753030916296980,	-0.387706942266468010,	-0.387660852647371710,	-0.387614762059123210,	
+-0.387568670501837460,	-0.387522577975630440,	-0.387476484480616950,	-0.387430390016912260,	-0.387384294584631190,	-0.387338198183889760,	-0.387292100814802860,	-0.387246002477485310,	
+-0.387199903172053160,	-0.387153802898621220,	-0.387107701657304850,	-0.387061599448218720,	-0.387015496271479080,	-0.386969392127200660,	-0.386923287015498770,	-0.386877180936488260,	
+-0.386831073890285150,	-0.386784965877004390,	-0.386738856896761240,	-0.386692746949670540,	-0.386646636035848370,	-0.386600524155409630,	-0.386554411308469570,	-0.386508297495143040,	
+-0.386462182715546170,	-0.386416066969793910,	-0.386369950258001030,	-0.386323832580283690,	-0.386277713936756750,	-0.386231594327535510,	-0.386185473752734930,	-0.386139352212471030,	
+-0.386093229706858780,	-0.386047106236013460,	-0.386000981800049940,	-0.385954856399084390,	-0.385908730033231730,	-0.385862602702607190,	-0.385816474407325750,	-0.385770345147503520,	
+-0.385724214923255480,	-0.385678083734696860,	-0.385631951581942630,	-0.385585818465108920,	-0.385539684384310690,	-0.385493549339662840,	-0.385447413331281520,	-0.385401276359281620,	
+-0.385355138423778610,	-0.385308999524887290,	-0.385262859662723890,	-0.385216718837403330,	-0.385170577049041010,	-0.385124434297751780,	-0.385078290583651950,	-0.385032145906856360,	
+-0.384986000267480370,	-0.384939853665638990,	-0.384893706101448410,	-0.384847557575023540,	-0.384801408086479780,	-0.384755257635932100,	-0.384709106223496690,	-0.384662953849288500,	
+-0.384616800513422510,	-0.384570646216014940,	-0.384524490957180780,	-0.384478334737035350,	-0.384432177555693700,	-0.384386019413272000,	-0.384339860309885260,	-0.384293700245648910,	
+-0.384247539220677840,	-0.384201377235088350,	-0.384155214288995410,	-0.384109050382514470,	-0.384062885515760450,	-0.384016719688849650,	-0.383970552901897020,	-0.383924385155018030,	
+-0.383878216448327700,	-0.383832046781942220,	-0.383785876155976590,	-0.383739704570546290,	-0.383693532025766340,	-0.383647358521752910,	-0.383601184058621150,	-0.383555008636486010,	
+-0.383508832255463730,	-0.383462654915669390,	-0.383416476617218390,	-0.383370297360225820,	-0.383324117144807910,	-0.383277935971079680,	-0.383231753839156640,	-0.383185570749153770,	
+-0.383139386701187410,	-0.383093201695372590,	-0.383047015731824760,	-0.383000828810658940,	-0.382954640931991550,	-0.382908452095937490,	-0.382862262302612280,	-0.382816071552131040,	
+-0.382769879844610030,	-0.382723687180164360,	-0.382677493558909010,	-0.382631298980960320,	-0.382585103446433430,	-0.382538906955443790,	-0.382492709508106430,	-0.382446511104537700,	
+-0.382400311744852730,	-0.382354111429166980,	-0.382307910157595520,	-0.382261707930254710,	-0.382215504747259630,	-0.382169300608725780,	-0.382123095514768250,	-0.382076889465503390,	
+-0.382030682461046320,	-0.381984474501512570,	-0.381938265587017210,	-0.381892055717676590,	-0.381845844893605850,	-0.381799633114920050,	-0.381753420381735600,	-0.381707206694167580,	
+-0.381660992052331560,	-0.381614776456342670,	-0.381568559906317220,	-0.381522342402370370,	-0.381476123944617720,	-0.381429904533174270,	-0.381383684168156490,	-0.381337462849679560,	
+-0.381291240577858900,	-0.381245017352809750,	-0.381198793174648500,	-0.381152568043490240,	-0.381106341959450530,	-0.381060114922644580,	-0.381013886933188770,	-0.380967657991198250,	
+-0.380921428096788530,	-0.380875197250074900,	-0.380828965451173620,	-0.380782732700199970,	-0.380736498997269080,	-0.380690264342497360,	-0.380644028735999950,	-0.380597792177892470,	
+-0.380551554668290100,	-0.380505316207309260,	-0.380459076795065130,	-0.380412836431673340,	-0.380366595117249020,	-0.380320352851908570,	-0.380274109635767300,	-0.380227865468940770,	
+-0.380181620351544130,	-0.380135374283693870,	-0.380089127265505140,	-0.380042879297093630,	-0.379996630378574510,	-0.379950380510064190,	-0.379904129691677970,	-0.379857877923530980,	
+-0.379811625205739690,	-0.379765371538419380,	-0.379719116921685640,	-0.379672861355653650,	-0.379626604840439970,	-0.379580347376159750,	-0.379534088962928670,	-0.379487829600861970,	
+-0.379441569290076050,	-0.379395308030686270,	-0.379349045822808210,	-0.379302782666557090,	-0.379256518562049450,	-0.379210253509400520,	-0.379163987508725930,	-0.379117720560140980,	
+-0.379071452663762130,	-0.379025183819704680,	-0.378978914028083810,	-0.378932643289016100,	-0.378886371602616790,	-0.378840098969001560,	-0.378793825388285600,	-0.378747550860585540,	
+-0.378701275386016610,	-0.378654998964694510,	-0.378608721596734420,	-0.378562443282253020,	-0.378516164021365450,	-0.378469883814187500,	-0.378423602660834470,	-0.378377320561422810,	
+-0.378331037516067840,	-0.378284753524885280,	-0.378238468587990430,	-0.378192182705499810,	-0.378145895877528730,	-0.378099608104192520,	-0.378053319385607660,	-0.378007029721889540,	
+-0.377960739113153870,	-0.377914447559515860,	-0.377868155061092230,	-0.377821861617998130,	-0.377775567230349440,	-0.377729271898261390,	-0.377682975621850600,	-0.377636678401232330,	
+-0.377590380236522420,	-0.377544081127836110,	-0.377497781075290030,	-0.377451480078999480,	-0.377405178139080200,	-0.377358875255647600,	-0.377312571428818240,	-0.377266266658707440,	
+-0.377219960945430920,	-0.377173654289104150,	-0.377127346689843660,	-0.377081038147764720,	-0.377034728662982880,	-0.376988418235614580,	-0.376942106865775230,	-0.376895794553580630,	
+-0.376849481299146080,	-0.376803167102588320,	-0.376756851964022590,	-0.376710535883564730,	-0.376664218861330170,	-0.376617900897435410,	-0.376571581991995920,	-0.376525262145127490,	
+-0.376478941356945480,	-0.376432619627566520,	-0.376386296957106070,	-0.376339973345679810,	-0.376293648793403210,	-0.376247323300392960,	-0.376200996866764340,	-0.376154669492632820,	
+-0.376108341178115040,	-0.376062011923326440,	-0.376015681728382790,	-0.375969350593399530,	-0.375923018518493300,	-0.375876685503779510,	-0.375830351549374050,	-0.375784016655392240,	
+-0.375737680821950860,	-0.375691344049165210,	-0.375645006337151250,	-0.375598667686024350,	-0.375552328095901220,	-0.375505987566897240,	-0.375459646099128300,	-0.375413303692709810,	
+-0.375366960347758460,	-0.375320616064389770,	-0.375274270842719080,	-0.375227924682863150,	-0.375181577584937420,	-0.375135229549057700,	-0.375088880575339570,	-0.375042530663899590,	
+-0.374996179814853280,	-0.374949828028316560,	-0.374903475304404820,	-0.374857121643234810,	-0.374810767044922000,	-0.374764411509582280,	-0.374718055037331130,	-0.374671697628285230,	
+-0.374625339282560090,	-0.374578980000271620,	-0.374532619781535290,	-0.374486258626467780,	-0.374439896535184670,	-0.374393533507801800,	-0.374347169544434700,	-0.374300804645200100,	
+-0.374254438810213470,	-0.374208072039590280,	-0.374161704333447360,	-0.374115335691900200,	-0.374068966115064680,	-0.374022595603056400,	-0.373976224155991970,	-0.373929851773986970,	
+-0.373883478457157360,	-0.373837104205618660,	-0.373790729019487620,	-0.373744352898879690,	-0.373697975843910960,	-0.373651597854696820,	-0.373605218931354120,	-0.373558839073998390,	
+-0.373512458282745540,	-0.373466076557711140,	-0.373419693899011970,	-0.373373310306763570,	-0.373326925781081450,	-0.373280540322082470,	-0.373234153929882070,	-0.373187766604596350,	
+-0.373141378346340760,	-0.373094989155232200,	-0.373048599031386100,	-0.373002207974918510,	-0.372955815985945020,	-0.372909423064582410,	-0.372863029210946220,	-0.372816634425152450,	
+-0.372770238707316680,	-0.372723842057555770,	-0.372677444475985160,	-0.372631045962721010,	-0.372584646517878810,	-0.372538246141575440,	-0.372491844833926440,	-0.372445442595047420,	
+-0.372399039425055200,	-0.372352635324065370,	-0.372306230292193950,	-0.372259824329556570,	-0.372213417436270010,	-0.372167009612449920,	-0.372120600858212300,	-0.372074191173672800,	
+-0.372027780558948200,	-0.371981369014154130,	-0.371934956539406670,	-0.371888543134821390,	-0.371842128800515200,	-0.371795713536603620,	-0.371749297343202830,	-0.371702880220428360,	
+-0.371656462168397090,	-0.371610043187224680,	-0.371563623277026740,	-0.371517202437920140,	-0.371470780670020540,	-0.371424357973443970,	-0.371377934348306130,	-0.371331509794723850,	
+-0.371285084312812820,	-0.371238657902689060,	-0.371192230564468260,	-0.371145802298267270,	-0.371099373104201770,	-0.371052942982387890,	-0.371006511932941150,	-0.370960079955978630,	
+-0.370913647051615890,	-0.370867213219969020,	-0.370820778461153690,	-0.370774342775286810,	-0.370727906162484130,	-0.370681468622861670,	-0.370635030156535090,	-0.370588590763621380,	
+-0.370542150444236160,	-0.370495709198495170,	-0.370449267026515370,	-0.370402823928412340,	-0.370356379904302260,	-0.370309934954300810,	-0.370263489078524970,	-0.370217042277090400,	
+-0.370170594550113200,	-0.370124145897709140,	-0.370077696319995100,	-0.370031245817086800,	-0.369984794389100420,	-0.369938342036151610,	-0.369891888758357380,	-0.369845434555833410,	
+-0.369798979428695880,	-0.369752523377060490,	-0.369706066401044200,	-0.369659608500762740,	-0.369613149676331850,	-0.369566689927868450,	-0.369520229255488390,	-0.369473767659307730,	
+-0.369427305139442270,	-0.369380841696008930,	-0.369334377329123500,	-0.369287912038902100,	-0.369241445825460530,	-0.369194978688915710,	-0.369148510629383530,	-0.369102041646980020,	
+-0.369055571741820960,	-0.369009100914023450,	-0.368962629163703150,	-0.368916156490976310,	-0.368869682895958670,	-0.368823208378767200,	-0.368776732939517680,	-0.368730256578325980,	
+-0.368683779295309040,	-0.368637301090582630,	-0.368590821964262960,	-0.368544341916465850,	-0.368497860947308300,	-0.368451379056906060,	-0.368404896245375420,	-0.368358412512832130,	
+-0.368311927859393150,	-0.368265442285174440,	-0.368218955790292070,	-0.368172468374861890,	-0.368125980039000990,	-0.368079490782825090,	-0.368033000606450500,	-0.367986509509993010,	
+-0.367940017493569640,	-0.367893524557296240,	-0.367847030701288990,	-0.367800535925663810,	-0.367754040230537650,	-0.367707543616026420,	-0.367661046082245920,	-0.367614547629313170,	
+-0.367568048257344130,	-0.367521547966454920,	-0.367475046756761400,	-0.367428544628380700,	-0.367382041581428680,	-0.367335537616021500,	-0.367289032732275090,	-0.367242526930306510,	
+-0.367196020210231620,	-0.367149512572166660,	-0.367103004016227530,	-0.367056494542531310,	-0.367009984151193790,	-0.366963472842331380,	-0.366916960616059830,	-0.366870447472496310,	
+-0.366823933411756680,	-0.366777418433956840,	-0.366730902539213810,	-0.366684385727643500,	-0.366637867999362270,	-0.366591349354485950,	-0.366544829793131690,	-0.366498309315415330,	
+-0.366451787921453220,	-0.366405265611361220,	-0.366358742385256450,	-0.366312218243254830,	-0.366265693185472640,	-0.366219167212025850,	-0.366172640323031540,	-0.366126112518605610,	
+-0.366079583798864410,	-0.366033054163923840,	-0.365986523613901050,	-0.365939992148911990,	-0.365893459769072500,	-0.365846926474499730,	-0.365800392265309690,	-0.365753857141618680,	
+-0.365707321103542590,	-0.365660784151198630,	-0.365614246284702680,	-0.365567707504171170,	-0.365521167809719940,	-0.365474627201466230,	-0.365428085679525890,	-0.365381543244015390,	
+-0.365334999895050580,	-0.365288455632748750,	-0.365241910457225700,	-0.365195364368597950,	-0.365148817366981350,	-0.365102269452493080,	-0.365055720625249160,	-0.365009170885365550,	
+-0.364962620232959390,	-0.364916068668146690,	-0.364869516191043850,	-0.364822962801766790,	-0.364776408500432690,	-0.364729853287157620,	-0.364683297162057940,	-0.364636740125249550,	
+-0.364590182176849740,	-0.364543623316974490,	-0.364497063545740130,	-0.364450502863262750,	-0.364403941269659530,	-0.364357378765046420,	-0.364310815349539910,	-0.364264251023255880,	
+-0.364217685786311700,	-0.364171119638823260,	-0.364124552580907090,	-0.364077984612679040,	-0.364031415734256510,	-0.363984845945755420,	-0.363938275247291780,	-0.363891703638982880,	
+-0.363845131120944740,	-0.363798557693293720,	-0.363751983356145950,	-0.363705408109618600,	-0.363658831953827750,	-0.363612254888889820,	-0.363565676914920810,	-0.363519098032038020,	
+-0.363472518240357530,	-0.363425937539995750,	-0.363379355931068680,	-0.363332773413693630,	-0.363286189987986620,	-0.363239605654064210,	-0.363193020412042320,	-0.363146434262038300,	
+-0.363099847204168210,	-0.363053259238548090,	-0.363006670365295210,	-0.362960080584525670,	-0.362913489896355910,	-0.362866898300902020,	-0.362820305798281340,	-0.362773712388609840,	
+-0.362727118072004080,	-0.362680522848580100,	-0.362633926718455290,	-0.362587329681745560,	-0.362540731738567600,	-0.362494132889037370,	-0.362447533133272160,	-0.362400932471388220,	
+-0.362354330903501890,	-0.362307728429729300,	-0.362261125050187820,	-0.362214520764993550,	-0.362167915574262530,	-0.362121309478112160,	-0.362074702476658520,	-0.362028094570018110,	
+-0.361981485758307080,	-0.361934876041642710,	-0.361888265420141130,	-0.361841653893918920,	-0.361795041463092160,	-0.361748428127778240,	-0.361701813888093250,	-0.361655198744153690,	
+-0.361608582696075710,	-0.361561965743976700,	-0.361515347887972790,	-0.361468729128180510,	-0.361422109464715980,	-0.361375488897696610,	-0.361328867427238460,	-0.361282245053458180,	
+-0.361235621776471890,	-0.361188997596396940,	-0.361142372513349520,	-0.361095746527445750,	-0.361049119638803040,	-0.361002491847537470,	-0.360955863153765710,	-0.360909233557603900,	
+-0.360862603059169400,	-0.360815971658578370,	-0.360769339355947460,	-0.360722706151392740,	-0.360676072045031660,	-0.360629437036980470,	-0.360582801127355630,	-0.360536164316273390,	
+-0.360489526603851140,	-0.360442887990205070,	-0.360396248475451820,	-0.360349608059707500,	-0.360302966743089590,	-0.360256324525714270,	-0.360209681407697710,	-0.360163037389157340,	
+-0.360116392470209430,	-0.360069746650970470,	-0.360023099931556790,	-0.359976452312085750,	-0.359929803792673590,	-0.359883154373436930,	-0.359836504054491910,	-0.359789852835956100,	
+-0.359743200717945690,	-0.359696547700577180,	-0.359649893783966950,	-0.359603238968232430,	-0.359556583253489770,	-0.359509926639855650,	-0.359463269127446310,	-0.359416610716379200,	
+-0.359369951406770580,	-0.359323291198736630,	-0.359276630092394910,	-0.359229968087861620,	-0.359183305185253380,	-0.359136641384686430,	-0.359089976686278340,	-0.359043311090145310,	
+-0.358996644596404010,	-0.358949977205170630,	-0.358903308916562800,	-0.358856639730696650,	-0.358809969647688910,	-0.358763298667655830,	-0.358716626790714920,	-0.358669954016982430,	
+-0.358623280346575090,	-0.358576605779609090,	-0.358529930316202010,	-0.358483253956470130,	-0.358436576700530090,	-0.358389898548498180,	-0.358343219500491970,	-0.358296539556627660,	
+-0.358249858717021640,	-0.358203176981791380,	-0.358156494351053180,	-0.358109810824923710,	-0.358063126403519340,	-0.358016441086957520,	-0.357969754875354650,	-0.357923067768827370,	
+-0.357876379767491980,	-0.357829690871466100,	-0.357783001080865970,	-0.357736310395808330,	-0.357689618816409540,	-0.357642926342787050,	-0.357596232975057330,	-0.357549538713336950,	
+-0.357502843557742370,	-0.357456147508391050,	-0.357409450565399360,	-0.357362752728883630,	-0.357316053998961490,	-0.357269354375749140,	-0.357222653859363470,	-0.357175952449920680,	
+-0.357129250147538490,	-0.357082546952333160,	-0.357035842864421420,	-0.356989137883919730,	-0.356942432010945550,	-0.356895725245615300,	-0.356849017588045770,	-0.356802309038353250,	
+-0.356755599596655370,	-0.356708889263068480,	-0.356662178037709390,	-0.356615465920694430,	-0.356568752912141240,	-0.356522039012166170,	-0.356475324220885570,	-0.356428608538417070,	
+-0.356381891964877070,	-0.356335174500382320,	-0.356288456145049230,	-0.356241736898995410,	-0.356195016762337280,	-0.356148295735191580,	-0.356101573817674710,	-0.356054851009904310,	
+-0.356008127311996820,	-0.355961402724069010,	-0.355914677246237270,	-0.355867950878619220,	-0.355821223621331340,	-0.355774495474490420,	-0.355727766438212800,	-0.355681036512616180,	
+-0.355634305697816950,	-0.355587573993931590,	-0.355540841401077670,	-0.355494107919371690,	-0.355447373548930410,	-0.355400638289870290,	-0.355353902142309000,	-0.355307165106362950,	
+-0.355260427182148950,	-0.355213688369783510,	-0.355166948669384250,	-0.355120208081067650,	-0.355073466604950480,	-0.355026724241149230,	-0.354979980989781620,	-0.354933236850964010,	
+-0.354886491824813350,	-0.354839745911446070,	-0.354792999110979780,	-0.354746251423531000,	-0.354699502849216640,	-0.354652753388153050,	-0.354606003040458030,	-0.354559251806247980,	
+-0.354512499685639420,	-0.354465746678749970,	-0.354418992785696220,	-0.354372238006594950,	-0.354325482341562690,	-0.354278725790717120,	-0.354231968354174700,	-0.354185210032052440,	
+-0.354138450824466710,	-0.354091690731535240,	-0.354044929753374540,	-0.353998167890101520,	-0.353951405141832710,	-0.353904641508685780,	-0.353857876990777250,	-0.353811111588223980,	
+-0.353764345301142590,	-0.353717578129650710,	-0.353670810073864860,	-0.353624041133901610,	-0.353577271309878700,	-0.353530500601912550,	-0.353483729010120210,	-0.353436956534618040,	
+-0.353390183175523950,	-0.353343408932954410,	-0.353296633807026360,	-0.353249857797856280,	-0.353203080905562020,	-0.353156303130259970,	-0.353109524472067230,	-0.353062744931100240,	
+-0.353015964507476800,	-0.352969183201313490,	-0.352922401012727200,	-0.352875617941834470,	-0.352828833988753140,	-0.352782049153599670,	-0.352735263436490700,	-0.352688476837544010,	
+-0.352641689356876120,	-0.352594900994604000,	-0.352548111750844160,	-0.352501321625714510,	-0.352454530619331570,	-0.352407738731812250,	-0.352360945963273220,	-0.352314152313832230,	
+-0.352267357783605850,	-0.352220562372711040,	-0.352173766081264440,	-0.352126968909383890,	-0.352080170857185850,	-0.352033371924787400,	-0.351986572112305110,	-0.351939771419856830,	
+-0.351892969847559080,	-0.351846167395528930,	-0.351799364063882900,	-0.351752559852738960,	-0.351705754762213550,	-0.351658948792423380,	-0.351612141943486220,	-0.351565334215518720,	
+-0.351518525608637890,	-0.351471716122960350,	-0.351424905758603910,	-0.351378094515685190,	-0.351331282394321260,	-0.351284469394628710,	-0.351237655516725370,	-0.351190840760727930,	
+-0.351144025126753360,	-0.351097208614918330,	-0.351050391225340710,	-0.351003572958137060,	-0.350956753813424500,	-0.350909933791319680,	-0.350863112891940390,	-0.350816291115403360,	
+-0.350769468461825160,	-0.350722644931323710,	-0.350675820524015640,	-0.350628995240018000,	-0.350582169079447500,	-0.350535342042421980,	-0.350488514129058070,	-0.350441685339472950,	
+-0.350394855673783150,	-0.350348025132106610,	-0.350301193714560030,	-0.350254361421260480,	-0.350207528252324600,	-0.350160694207870330,	-0.350113859288014310,	-0.350067023492873610,	
+-0.350020186822564970,	-0.349973349277206250,	-0.349926510856914170,	-0.349879671561805440,	-0.349832831391997890,	-0.349785990347608320,	-0.349739148428753750,	-0.349692305635550870,	
+-0.349645461968117630,	-0.349598617426570780,	-0.349551772011027380,	-0.349504925721604130,	-0.349458078558418930,	-0.349411230521588620,	-0.349364381611230180,	-0.349317531827460390,	
+-0.349270681170397170,	-0.349223829640157250,	-0.349176977236857760,	-0.349130123960615430,	-0.349083269811548190,	-0.349036414789772760,	-0.348989558895405890,	-0.348942702128565540,	
+-0.348895844489368450,	-0.348848985977931740,	-0.348802126594372150,	-0.348755266338807660,	-0.348708405211354990,	-0.348661543212131280,	-0.348614680341253370,	-0.348567816598839120,	
+-0.348520951985005320,	-0.348474086499869160,	-0.348427220143547380,	-0.348380352916157990,	-0.348333484817817670,	-0.348286615848643680,	-0.348239746008752680,	-0.348192875298262760,	
+-0.348146003717290650,	-0.348099131265953540,	-0.348052257944368170,	-0.348005383752652610,	-0.347958508690923540,	-0.347911632759297820,	-0.347864755957893400,	-0.347817878286827140,	
+-0.347770999746216170,	-0.347724120336177220,	-0.347677240056828430,	-0.347630358908286590,	-0.347583476890668760,	-0.347536594004091870,	-0.347489710248673920,	-0.347442825624531710,	
+-0.347395940131782380,	-0.347349053770542810,	-0.347302166540931050,	-0.347255278443063860,	-0.347208389477058450,	-0.347161499643031670,	-0.347114608941101580,	-0.347067717371384920,	
+-0.347020824933998550,	-0.346973931629060540,	-0.346927037456687740,	-0.346880142416997330,	-0.346833246510106110,	-0.346786349736132260,	-0.346739452095192470,	-0.346692553587404080,	
+-0.346645654212883900,	-0.346598753971750000,	-0.346551852864119160,	-0.346504950890108740,	-0.346458048049835540,	-0.346411144343417580,	-0.346364239770971800,	-0.346317334332615410,	
+-0.346270428028465300,	-0.346223520858639500,	-0.346176612823254900,	-0.346129703922428370,	-0.346082794156277960,	-0.346035883524920600,	-0.345988972028473510,	-0.345942059667053600,	
+-0.345895146440778960,	-0.345848232349766420,	-0.345801317394133280,	-0.345754401573996510,	-0.345707484889474060,	-0.345660567340682960,	-0.345613648927740440,	-0.345566729650763350,	
+-0.345519809509869880,	-0.345472888505176880,	-0.345425966636801640,	-0.345379043904861130,	-0.345332120309473360,	-0.345285195850755290,	-0.345238270528824280,	-0.345191344343797110,	
+-0.345144417295792040,	-0.345097489384925960,	-0.345050560611315670,	-0.345003630975079410,	-0.344956700476334090,	-0.344909769115197050,	-0.344862836891785150,	-0.344815903806216520,	
+-0.344768969858608220,	-0.344722035049077450,	-0.344675099377741160,	-0.344628162844717530,	-0.344581225450123540,	-0.344534287194076470,	-0.344487348076693230,	-0.344440408098092070,	
+-0.344393467258389870,	-0.344346525557704060,	-0.344299582996151430,	-0.344252639573850330,	-0.344205695290917600,	-0.344158750147470220,	-0.344111804143626410,	-0.344064857279503030,	
+-0.344017909555217550,	-0.343970960970886860,	-0.343924011526629210,	-0.343877061222561510,	-0.343830110058801150,	-0.343783158035465160,	-0.343736205152671610,	-0.343689251410537580,	
+-0.343642296809180460,	-0.343595341348717110,	-0.343548385029265880,	-0.343501427850943670,	-0.343454469813867850,	-0.343407510918155520,	-0.343360551163924780,	-0.343313590551292620,	
+-0.343266629080376140,	-0.343219666751293510,	-0.343172703564161630,	-0.343125739519098080,	-0.343078774616219720,	-0.343031808855644830,	-0.342984842237490430,	-0.342937874761873930,	
+-0.342890906428912350,	-0.342843937238723860,	-0.342796967191425610,	-0.342749996287134870,	-0.342703024525968740,	-0.342656051908045490,	-0.342609078433482090,	-0.342562104102396010,	
+-0.342515128914904270,	-0.342468152871125090,	-0.342421175971175500,	-0.342374198215172620,	-0.342327219603234590,	-0.342280240135478590,	-0.342233259812021960,	-0.342186278632981730,	
+-0.342139296598476250,	-0.342092313708622530,	-0.342045329963538040,	-0.341998345363339780,	-0.341951359908146070,	-0.341904373598073960,	-0.341857386433240930,	-0.341810398413764040,	
+-0.341763409539761530,	-0.341716419811350540,	-0.341669429228648460,	-0.341622437791772370,	-0.341575445500840680,	-0.341528452355970290,	-0.341481458357278830,	-0.341434463504883270,	
+-0.341387467798902000,	-0.341340471239452050,	-0.341293473826650540,	-0.341246475560615710,	-0.341199476441464700,	-0.341152476469315010,	-0.341105475644283730,	-0.341058473966489140,	
+-0.341011471436048370,	-0.340964468053078950,	-0.340917463817697940,	-0.340870458730023640,	-0.340823452790173230,	-0.340776445998264180,	-0.340729438354413610,	-0.340682429858739870,	
+-0.340635420511360030,	-0.340588410312391680,	-0.340541399261951820,	-0.340494387360158910,	-0.340447374607130040,	-0.340400361002982320,	-0.340353346547834110,	-0.340306331241802540,	
+-0.340259315085005120,	-0.340212298077559040,	-0.340165280219582590,	-0.340118261511192950,	-0.340071241952507650,	-0.340024221543643870,	-0.339977200284719890,	-0.339930178175852970,	
+-0.339883155217160560,	-0.339836131408759850,	-0.339789106750769230,	-0.339742081243305850,	-0.339695054886487270,	-0.339648027680430680,	-0.339600999625254360,	-0.339553970721075570,	
+-0.339506940968011480,	-0.339459910366180400,	-0.339412878915699550,	-0.339365846616686510,	-0.339318813469258460,	-0.339271779473533760,	-0.339224744629629590,	-0.339177708937663640,	
+-0.339130672397752910,	-0.339083635010015980,	-0.339036596774569930,	-0.338989557691532440,	-0.338942517761020580,	-0.338895476983152870,	-0.338848435358046430,	-0.338801392885818950,	
+-0.338754349566587560,	-0.338707305400470730,	-0.338660260387585570,	-0.338613214528049820,	-0.338566167821980570,	-0.338519120269496380,	-0.338472071870714320,	-0.338425022625751750,	
+-0.338377972534726960,	-0.338330921597757290,	-0.338283869814960280,	-0.338236817186453210,	-0.338189763712354490,	-0.338142709392781350,	-0.338095654227851480,	-0.338048598217682020,	
+-0.338001541362391470,	-0.337954483662097130,	-0.337907425116916520,	-0.337860365726966980,	-0.337813305492366880,	-0.337766244413233550,	-0.337719182489684630,	-0.337672119721837300,	
+-0.337625056109810140,	-0.337577991653720270,	-0.337530926353685030,	-0.337483860209822910,	-0.337436793222251170,	-0.337389725391087360,	-0.337342656716448920,	-0.337295587198454150,	
+-0.337248516837220510,	-0.337201445632865530,	-0.337154373585506480,	-0.337107300695261960,	-0.337060226962249190,	-0.337013152386585860,	-0.336966076968389210,	-0.336919000707777800,	
+-0.336871923604868890,	-0.336824845659780160,	-0.336777766872628890,	-0.336730687243533670,	-0.336683606772611670,	-0.336636525459980240,	-0.336589443305757960,	-0.336542360310062020,	
+-0.336495276473010250,	-0.336448191794719800,	-0.336401106275309340,	-0.336354019914896050,	-0.336306932713597790,	-0.336259844671531750,	-0.336212755788816490,	-0.336165666065569360,	
+-0.336118575501908050,	-0.336071484097949900,	-0.336024391853813440,	-0.335977298769616020,	-0.335930204845475370,	-0.335883110081508730,	-0.335836014477834790,	-0.335788918034570780,	
+-0.335741820751834120,	-0.335694722629743260,	-0.335647623668415610,	-0.335600523867968900,	-0.335553423228520440,	-0.335506321750188910,	-0.335459219433091540,	-0.335412116277346070,	
+-0.335365012283069970,	-0.335317907450381700,	-0.335270801779398660,	-0.335223695270238650,	-0.335176587923018960,	-0.335129479737858280,	-0.335082370714873850,	-0.335035260854183500,	
+-0.334988150155904550,	-0.334941038620155670,	-0.334893926247054220,	-0.334846813036717930,	-0.334799698989264150,	-0.334752584104811570,	-0.334705468383477530,	-0.334658351825379450,	
+-0.334611234430635840,	-0.334564116199364160,	-0.334516997131682200,	-0.334469877227707320,	-0.334422756487558200,	-0.334375634911352190,	-0.334328512499207030,	-0.334281389251240240,	
+-0.334234265167570320,	-0.334187140248314810,	-0.334140014493591430,	-0.334092887903517600,	-0.334045760478211940,	-0.333998632217791860,	-0.333951503122375260,	-0.333904373192079440,	
+-0.333857242427023140,	-0.333810110827323700,	-0.333762978393098600,	-0.333715845124466450,	-0.333668711021544660,	-0.333621576084451140,	-0.333574440313303240,	-0.333527303708219700,	
+-0.333480166269317870,	-0.333433027996715590,	-0.333385888890530340,	-0.333338748950880780,	-0.333291608177884390,	-0.333244466571658960,	-0.333197324132321950,	-0.333150180859992040,	
+-0.333103036754786640,	-0.333055891816823710,	-0.333008746046220610,	-0.332961599443096060,	-0.332914452007567530,	-0.332867303739752430,	-0.332820154639769440,	-0.332773004707736130,	
+-0.332725853943770300,	-0.332678702347989410,	-0.332631549920512190,	-0.332584396661456120,	-0.332537242570938970,	-0.332490087649078390,	-0.332442931895992940,	-0.332395775311800200,	
+-0.332348617896618010,	-0.332301459650563900,	-0.332254300573756490,	-0.332207140666313410,	-0.332159979928352390,	-0.332112818359991070,	-0.332065655961348070,	-0.332018492732540970,	
+-0.331971328673687620,	-0.331924163784905520,	-0.331876998066313430,	-0.331829831518028860,	-0.331782664140169270,	-0.331735495932853510,	-0.331688326896198930,	-0.331641157030323540,	
+-0.331593986335344870,	-0.331546814811381650,	-0.331499642458551400,	-0.331452469276972030,	-0.331405295266761050,	-0.331358120428037250,	-0.331310944760918210,	-0.331263768265521730,	
+-0.331216590941965480,	-0.331169412790368100,	-0.331122233810847270,	-0.331075054003520770,	-0.331027873368506310,	-0.330980691905922500,	-0.330933509615887020,	-0.330886326498517290,	
+-0.330839142553932210,	-0.330791957782249240,	-0.330744772183586390,	-0.330697585758061240,	-0.330650398505792480,	-0.330603210426897720,	-0.330556021521494990,	-0.330508831789701750,	
+-0.330461641231636850,	-0.330414449847417860,	-0.330367257637162740,	-0.330320064600989060,	-0.330272870739015620,	-0.330225676051360000,	-0.330178480538140200,	-0.330131284199473800,	
+-0.330084087035479590,	-0.330036889046275150,	-0.329989690231978110,	-0.329942490592707250,	-0.329895290128580150,	-0.329848088839714840,	-0.329800886726228870,	-0.329753683788241100,	
+-0.329706480025869110,	-0.329659275439230960,	-0.329612070028444170,	-0.329564863793627650,	-0.329517656734898970,	-0.329470448852376090,	-0.329423240146176740,	-0.329376030616419680,	
+-0.329328820263222520,	-0.329281609086703340,	-0.329234397086979710,	-0.329187184264170540,	-0.329139970618393400,	-0.329092756149765850,	-0.329045540858406930,	-0.328998324744434080,	
+-0.328951107807965440,	-0.328903890049118630,	-0.328856671468012450,	-0.328809452064764640,	-0.328762231839493210,	-0.328715010792315800,	-0.328667788923351250,	-0.328620566232717180,	
+-0.328573342720531790,	-0.328526118386912540,	-0.328478893231978490,	-0.328431667255847160,	-0.328384440458636680,	-0.328337212840464630,	-0.328289984401450020,	-0.328242755141710420,	
+-0.328195525061363960,	-0.328148294160528260,	-0.328101062439322240,	-0.328053829897863580,	-0.328006596536269900,	-0.327959362354660170,	-0.327912127353152010,	-0.327864891531863540,	
+-0.327817654890912470,	-0.327770417430417630,	-0.327723179150496760,	-0.327675940051267930,	-0.327628700132848840,	-0.327581459395358430,	-0.327534217838914340,	-0.327486975463634760,	
+-0.327439732269637240,	-0.327392488257040870,	-0.327345243425963270,	-0.327297997776522580,	-0.327250751308836460,	-0.327203504023023840,	-0.327156255919202500,	-0.327109006997490130,	
+-0.327061757258005630,	-0.327014506700866740,	-0.326967255326191530,	-0.326920003134097860,	-0.326872750124704510,	-0.326825496298129350,	-0.326778241654490430,	-0.326730986193905500,	
+-0.326683729916493470,	-0.326636472822372180,	-0.326589214911659650,	-0.326541956184473740,	-0.326494696640933280,	-0.326447436281156130,	-0.326400175105260370,	-0.326352913113363790,	
+-0.326305650305585280,	-0.326258386682042660,	-0.326211122242853700,	-0.326163856988137320,	-0.326116590918011320,	-0.326069324032593810,	-0.326022056332002600,	-0.325974787816356640,	
+-0.325927518485773730,	-0.325880248340371990,	-0.325832977380269280,	-0.325785705605584510,	-0.325738433016435460,	-0.325691159612940320,	-0.325643885395216880,	-0.325596610363384160,	
+-0.325549334517559910,	-0.325502057857862290,	-0.325454780384409170,	-0.325407502097319450,	-0.325360222996711020,	-0.325312943082702030,	-0.325265662355410210,	-0.325218380814954740,	
+-0.325171098461453260,	-0.325123815295023600,	-0.325076531315784840,	-0.325029246523854790,	-0.324981960919351610,	-0.324934674502393050,	-0.324887387273098290,	-0.324840099231585020,	
+-0.324792810377971530,	-0.324745520712375610,	-0.324698230234916290,	-0.324650938945711340,	-0.324603646844879130,	-0.324556353932537340,	-0.324509060208805100,	-0.324461765673800200,	
+-0.324414470327640870,	-0.324367174170444970,	-0.324319877202331520,	-0.324272579423418420,	-0.324225280833823400,	-0.324177981433665660,	-0.324130681223062930,	-0.324083380202133510,	
+-0.324036078370995180,	-0.323988775729767140,	-0.323941472278567120,	-0.323894168017513420,	-0.323846862946723880,	-0.323799557066317630,	-0.323752250376412480,	-0.323704942877126700,	
+-0.323657634568578100,	-0.323610325450885860,	-0.323563015524167830,	-0.323515704788542250,	-0.323468393244127020,	-0.323421080891041160,	-0.323373767729402630,	-0.323326453759329280,	
+-0.323279138980940180,	-0.323231823394353250,	-0.323184506999686760,	-0.323137189797058580,	-0.323089871786587880,	-0.323042552968392460,	-0.322995233342590670,	-0.322947912909300360,	
+-0.322900591668640710,	-0.322853269620729580,	-0.322805946765685250,	-0.322758623103625690,	-0.322711298634669960,	-0.322663973358935980,	-0.322616647276542050,	-0.322569320387606110,	
+-0.322521992692247240,	-0.322474664190583460,	-0.322427334882732560,	-0.322380004768813730,	-0.322332673848944930,	-0.322285342123244390,	-0.322238009591830130,	-0.322190676254821230,	
+-0.322143342112335640,	-0.322096007164491720,	-0.322048671411407360,	-0.322001334853201760,	-0.321953997489992760,	-0.321906659321898820,	-0.321859320349037800,	-0.321811980571528880,	
+-0.321764639989490010,	-0.321717298603039550,	-0.321669956412295450,	-0.321622613417376860,	-0.321575269618401720,	-0.321527925015488440,	-0.321480579608754870,	-0.321433233398320310,	
+-0.321385886384302650,	-0.321338538566819880,	-0.321291189945991150,	-0.321243840521934500,	-0.321196490294768210,	-0.321149139264610250,	-0.321101787431579910,	-0.321054434795795100,	
+-0.321007081357374160,	-0.320959727116435110,	-0.320912372073097200,	-0.320865016227478320,	-0.320817659579696930,	-0.320770302129870950,	-0.320722943878119670,	-0.320675584824560990,	
+-0.320628224969313370,	-0.320580864312494720,	-0.320533502854224380,	-0.320486140594620270,	-0.320438777533800400,	-0.320391413671884010,	-0.320344049008989050,	-0.320296683545234000,	
+-0.320249317280736800,	-0.320201950215616700,	-0.320154582349991780,	-0.320107213683980370,	-0.320059844217700560,	-0.320012473951271530,	-0.319965102884811280,	-0.319917731018438290,	
+-0.319870358352270570,	-0.319822984886427350,	-0.319775610621026720,	-0.319728235556187010,	-0.319680859692026310,	-0.319633483028663900,	-0.319586105566217750,	-0.319538727304805930,	
+-0.319491348244547720,	-0.319443968385561110,	-0.319396587727964590,	-0.319349206271876180,	-0.319301824017415190,	-0.319254440964699630,	-0.319207057113848000,	-0.319159672464978280,	
+-0.319112287018209760,	-0.319064900773660560,	-0.319017513731449150,	-0.318970125891693490,	-0.318922737254512920,	-0.318875347820025520,	-0.318827957588349810,	-0.318780566559603680,	
+-0.318733174733906610,	-0.318685782111376600,	-0.318638388692132180,	-0.318590994476291300,	-0.318543599463973370,	-0.318496203655296460,	-0.318448807050378590,	-0.318401409649339160,	
+-0.318354011452296190,	-0.318306612459368200,	-0.318259212670673250,	-0.318211812086330700,	-0.318164410706458620,	-0.318117008531175470,	-0.318069605560599430,	-0.318022201794849800,	
+-0.317974797234044650,	-0.317927391878302490,	-0.317879985727741400,	-0.317832578782480830,	-0.317785171042638810,	-0.317737762508333800,	-0.317690353179684030,	-0.317642943056808790,	
+-0.317595532139826160,	-0.317548120428854270,	-0.317500707924012530,	-0.317453294625419050,	-0.317405880533192300,	-0.317358465647450410,	-0.317311049968312770,	-0.317263633495897530,	
+-0.317216216230323260,	-0.317168798171707960,	-0.317121379320171090,	-0.317073959675830800,	-0.317026539238805580,	-0.316979118009213580,	-0.316931695987174240,	-0.316884273172805650,	
+-0.316836849566226380,	-0.316789425167554590,	-0.316741999976909610,	-0.316694573994409640,	-0.316647147220172840,	-0.316599719654318600,	-0.316552291296964990,	-0.316504862148230700,	
+-0.316457432208233860,	-0.316410001477093860,	-0.316362569954928790,	-0.316315137641857370,	-0.316267704537997630,	-0.316220270643469080,	-0.316172835958389850,	-0.316125400482878520,	
+-0.316077964217053250,	-0.316030527161033530,	-0.315983089314937520,	-0.315935650678883740,	-0.315888211252990380,	-0.315840771037376960,	-0.315793330032161590,	-0.315745888237462520,	
+-0.315698445653399110,	-0.315651002280089580,	-0.315603558117652560,	-0.315556113166206240,	-0.315508667425870030,	-0.315461220896762150,	-0.315413773579001240,	-0.315366325472705430,	
+-0.315318876577994290,	-0.315271426894985940,	-0.315223976423799010,	-0.315176525164551690,	-0.315129073117363550,	-0.315081620282352650,	-0.315034166659637740,	-0.314986712249337000,	
+-0.314939257051569890,	-0.314891801066454650,	-0.314844344294109900,	-0.314796886734653840,	-0.314749428388206020,	-0.314701969254884640,	-0.314654509334807870,	-0.314607048628095300,	
+-0.314559587134865040,	-0.314512124855235890,	-0.314464661789325920,	-0.314417197937254810,	-0.314369733299140640,	-0.314322267875102150,	-0.314274801665257560,	-0.314227334669726410,	
+-0.314179866888626920,	-0.314132398322077790,	-0.314084928970197190,	-0.314037458833104740,	-0.313989987910918590,	-0.313942516203757520,	-0.313895043711739710,	-0.313847570434984680,	
+-0.313800096373610780,	-0.313752621527736200,	-0.313705145897480500,	-0.313657669482961920,	-0.313610192284299150,	-0.313562714301610480,	-0.313515235535015480,	-0.313467755984632390,	
+-0.313420275650579890,	-0.313372794532976280,	-0.313325312631941080,	-0.313277829947592680,	-0.313230346480049600,	-0.313182862229430310,	-0.313135377195854270,	-0.313087891379439760,	
+-0.313040404780305540,	-0.312992917398569880,	-0.312945429234352370,	-0.312897940287771290,	-0.312850450558944890,	-0.312802960047992800,	-0.312755468755033350,	-0.312707976680185180,	
+-0.312660483823566700,	-0.312612990185297370,	-0.312565495765495640,	-0.312518000564280090,	-0.312470504581769170,	-0.312423007818082410,	-0.312375510273338100,	-0.312328011947655030,	
+-0.312280512841151490,	-0.312233012953947120,	-0.312185512286160200,	-0.312138010837909540,	-0.312090508609313370,	-0.312043005600491360,	-0.311995501811561880,	-0.311947997242643600,	
+-0.311900491893854940,	-0.311852985765315450,	-0.311805478857143490,	-0.311757971169457470,	-0.311710462702376900,	-0.311662953456020130,	-0.311615443430506070,	-0.311567932625952890,	
+-0.311520421042480340,	-0.311472908680206720,	-0.311425395539250860,	-0.311377881619731070,	-0.311330366921767020,	-0.311282851445477020,	-0.311235335190979900,	-0.311187818158394030,	
+-0.311140300347839020,	-0.311092781759433280,	-0.311045262393295610,	-0.310997742249544300,	-0.310950221328299080,	-0.310902699629678310,	-0.310855177153800400,	-0.310807653900784910,	
+-0.310760129870750360,	-0.310712605063815430,	-0.310665079480098580,	-0.310617553119719450,	-0.310570025982796430,	-0.310522498069448370,	-0.310474969379793630,	-0.310427439913951890,	
+-0.310379909672041540,	-0.310332378654181400,	-0.310284846860489900,	-0.310237314291086750,	-0.310189780946090290,	-0.310142246825619360,	-0.310094711929792380,	-0.310047176258729070,	
+-0.309999639812547800,	-0.309952102591367070,	-0.309904564595306460,	-0.309857025824484430,	-0.309809486279019830,	-0.309761945959031120,	-0.309714404864637920,	-0.309666862995958750,	
+-0.309619320353112400,	-0.309571776936217350,	-0.309524232745393260,	-0.309476687780758600,	-0.309429142042432210,	-0.309381595530532570,	-0.309334048245179350,	-0.309286500186491010,	
+-0.309238951354586400,	-0.309191401749584040,	-0.309143851371603550,	-0.309096300220763450,	-0.309048748297182150,	-0.309001195600979440,	-0.308953642132273720,	-0.308906087891183900,	
+-0.308858532877828440,	-0.308810977092327080,	-0.308763420534798270,	-0.308715863205360870,	-0.308668305104133460,	-0.308620746231235640,	-0.308573186586786010,	-0.308525626170903400,	
+-0.308478064983706280,	-0.308430503025314440,	-0.308382940295846340,	-0.308335376795420890,	-0.308287812524156550,	-0.308240247482173100,	-0.308192681669589070,	-0.308145115086523310,	
+-0.308097547733094390,	-0.308049979609421990,	-0.308002410715624620,	-0.307954841051820800,	-0.307907270618130340,	-0.307859699414671670,	-0.307812127441563780,	-0.307764554698925110,	
+-0.307716981186875460,	-0.307669406905533400,	-0.307621831855017850,	-0.307574256035447250,	-0.307526679446941450,	-0.307479102089618930,	-0.307431523963598690,	-0.307383945068999190,	
+-0.307336365405940280,	-0.307288784974540430,	-0.307241203774918650,	-0.307193621807193400,	-0.307146039071484520,	-0.307098455567910540,	-0.307050871296590030,	-0.307003286257642730,	
+-0.306955700451187250,	-0.306908113877342510,	-0.306860526536227030,	-0.306812938427960700,	-0.306765349552661990,	-0.306717759910449920,	-0.306670169501443050,	-0.306622578325761120,	
+-0.306574986383522820,	-0.306527393674846990,	-0.306479800199852270,	-0.306432205958658500,	-0.306384610951384200,	-0.306337015178148380,	-0.306289418639069560,	-0.306241821334267640,	
+-0.306194223263861200,	-0.306146624427968750,	-0.306099024826710140,	-0.306051424460204000,	-0.306003823328569290,	-0.305956221431924640,	-0.305908618770389770,	-0.305861015344083440,	
+-0.305813411153124490,	-0.305765806197631660,	-0.305718200477724690,	-0.305670593993522250,	-0.305622986745143320,	-0.305575378732706520,	-0.305527769956331630,	-0.305480160416137400,	
+-0.305432550112242680,	-0.305384939044766210,	-0.305337327213827840,	-0.305289714619546130,	-0.305242101262040100,	-0.305194487141428440,	-0.305146872257830990,	-0.305099256611366330,	
+-0.305051640202153080,	-0.305004023030311210,	-0.304956405095959280,	-0.304908786399216310,	-0.304861166940200930,	-0.304813546719033100,	-0.304765925735831390,	-0.304718303990714870,	
+-0.304670681483802160,	-0.304623058215213180,	-0.304575434185066500,	-0.304527809393481290,	-0.304480183840576120,	-0.304432557526470910,	-0.304384930451284340,	-0.304337302615135420,	
+-0.304289674018142780,	-0.304242044660426430,	-0.304194414542104940,	-0.304146783663297000,	-0.304099152024122580,	-0.304051519624700230,	-0.304003886465149030,	-0.303956252545587780,	
+-0.303908617866136270,	-0.303860982426913230,	-0.303813346228037740,	-0.303765709269628430,	-0.303718071551805300,	-0.303670433074687000,	-0.303622793838392580,	-0.303575153843040790,	
+-0.303527513088751530,	-0.303479871575643490,	-0.303432229303835730,	-0.303384586273447000,	-0.303336942484597250,	-0.303289297937405110,	-0.303241652631989320,	-0.303194006568469840,	
+-0.303146359746965300,	-0.303098712167594870,	-0.303051063830477310,	-0.303003414735732450,	-0.302955764883479030,	-0.302908114273836240,	-0.302860462906922700,	-0.302812810782858490,	
+-0.302765157901762230,	-0.302717504263753050,	-0.302669849868949680,	-0.302622194717472150,	-0.302574538809439080,	-0.302526882144969700,	-0.302479224724182700,	-0.302431566547198050,	
+-0.302383907614134470,	-0.302336247925111160,	-0.302288587480246780,	-0.302240926279661310,	-0.302193264323473600,	-0.302145601611802260,	-0.302097938144767380,	-0.302050273922487620,	
+-0.302002608945082180,	-0.301954943212669800,	-0.301907276725370490,	-0.301859609483302980,	-0.301811941486586470,	-0.301764272735339620,	-0.301716603229682580,	-0.301668932969734020,	
+-0.301621261955613120,	-0.301573590187438620,	-0.301525917665330550,	-0.301478244389407730,	-0.301430570359789320,	-0.301382895576594030,	-0.301335220039941900,	-0.301287543749951760,	
+-0.301239866706742300,	-0.301192188910433640,	-0.301144510361144480,	-0.301096831058994040,	-0.301049151004101120,	-0.301001470196585740,	-0.300953788636566690,	-0.300906106324163150,	
+-0.300858423259493910,	-0.300810739442679050,	-0.300763054873837370,	-0.300715369553088030,	-0.300667683480549840,	-0.300619996656342870,	-0.300572309080585910,	-0.300524620753398140,	
+-0.300476931674898470,	-0.300429241845206860,	-0.300381551264442100,	-0.300333859932723100,	-0.300286167850169870,	-0.300238475016901150,	-0.300190781433036350,	-0.300143087098694080,	
+-0.300095392013994540,	-0.300047696179056580,	-0.299999999593999310,	-0.299952302258941650,	-0.299904604174003660,	-0.299856905339304150,	-0.299809205754962340,	-0.299761505421097140,	
+-0.299713804337828570,	-0.299666102505275530,	-0.299618399923557210,	-0.299570696592792450,	-0.299522992513101380,	-0.299475287684602850,	-0.299427582107415660,	-0.299379875781659980,	
+-0.299332168707454550,	-0.299284460884918720,	-0.299236752314171350,	-0.299189042995332440,	-0.299141332928521020,	-0.299093622113856210,	-0.299045910551456910,	-0.298998198241443300,	
+-0.298950485183934190,	-0.298902771379048800,	-0.298855056826906160,	-0.298807341527626220,	-0.298759625481327950,	-0.298711908688130630,	-0.298664191148153120,	-0.298616472861515550,	
+-0.298568753828336810,	-0.298521034048736140,	-0.298473313522832520,	-0.298425592250746000,	-0.298377870232595490,	-0.298330147468499900,	-0.298282423958579400,	-0.298234699702952800,	
+-0.298186974701739440,	-0.298139248955058220,	-0.298091522463029330,	-0.298043795225771620,	-0.297996067243404440,	-0.297948338516046630,	-0.297900609043818430,	-0.297852878826838700,	
+-0.297805147865226770,	-0.297757416159101560,	-0.297709683708583190,	-0.297661950513790690,	-0.297614216574843220,	-0.297566481891859860,	-0.297518746464960680,	-0.297471010294264650,	
+-0.297423273379890660,	-0.297375535721958910,	-0.297327797320588340,	-0.297280058175898250,	-0.297232318288007610,	-0.297184577657036600,	-0.297136836283104110,	-0.297089094166329560,	
+-0.297041351306831850,	-0.296993607704731210,	-0.296945863360146500,	-0.296898118273197180,	-0.296850372444002090,	-0.296802625872681520,	-0.296754878559354400,	-0.296707130504140050,	
+-0.296659381707157500,	-0.296611632168526870,	-0.296563881888367190,	-0.296516130866797340,	-0.296468379103937640,	-0.296420626599906980,	-0.296372873354824710,	-0.296325119368809900,	
+-0.296277364641982680,	-0.296229609174462060,	-0.296181852966367400,	-0.296134096017817650,	-0.296086338328933160,	-0.296038579899832790,	-0.295990820730635980,	-0.295943060821461660,	
+-0.295895300172430150,	-0.295847538783660380,	-0.295799776655271740,	-0.295752013787383250,	-0.295704250180115150,	-0.295656485833586450,	-0.295608720747916500,	-0.295560954923224370,	
+-0.295513188359630200,	-0.295465421057253150,	-0.295417653016212030,	-0.295369884236627240,	-0.295322114718617800,	-0.295274344462303000,	-0.295226573467801960,	-0.295178801735234860,	
+-0.295131029264720790,	-0.295083256056379140,	-0.295035482110328930,	-0.294987707426690450,	-0.294939932005582660,	-0.294892155847125080,	-0.294844378951436670,	-0.294796601318637720,	
+-0.294748822948847300,	-0.294701043842184820,	-0.294653263998769290,	-0.294605483418721060,	-0.294557702102159090,	-0.294509920049202400,	-0.294462137259971390,	-0.294414353734585020,	
+-0.294366569473162810,	-0.294318784475823710,	-0.294270998742688080,	-0.294223212273874930,	-0.294175425069503780,	-0.294127637129693640,	-0.294079848454564810,	-0.294032059044236350,	
+-0.293984268898827780,	-0.293936478018458070,	-0.293888686403247670,	-0.293840894053315480,	-0.293793100968781080,	-0.293745307149763490,	-0.293697512596383050,	-0.293649717308758880,	
+-0.293601921287009960,	-0.293554124531256620,	-0.293506327041618050,	-0.293458528818213600,	-0.293410729861162460,	-0.293362930170584850,	-0.293315129746599960,	-0.293267328589327250,	
+-0.293219526698885740,	-0.293171724075395880,	-0.293123920718976750,	-0.293076116629747750,	-0.293028311807828070,	-0.292980506253337990,	-0.292932699966396700,	-0.292884892947123670,	
+-0.292837085195637950,	-0.292789276712059900,	-0.292741467496508700,	-0.292693657549103430,	-0.292645846869964420,	-0.292598035459210810,	-0.292550223316962070,	-0.292502410443337360,	
+-0.292454596838457090,	-0.292406782502440290,	-0.292358967435406570,	-0.292311151637474950,	-0.292263335108765900,	-0.292215517849398530,	-0.292167699859492370,	-0.292119881139166480,	
+-0.292072061688541380,	-0.292024241507736090,	-0.291976420596870180,	-0.291928598956062820,	-0.291880776585434430,	-0.291832953485104020,	-0.291785129655191270,	-0.291737305095815250,	
+-0.291689479807096420,	-0.291641653789153850,	-0.291593827042106790,	-0.291545999566075520,	-0.291498171361179280,	-0.291450342427537590,	-0.291402512765269630,	-0.291354682374495800,	
+-0.291306851255335290,	-0.291259019407907660,	-0.291211186832332050,	-0.291163353528728910,	-0.291115519497217310,	-0.291067684737917000,	-0.291019849250947040,	-0.290972013036427830,	
+-0.290924176094478630,	-0.290876338425218980,	-0.290828500028768030,	-0.290780660905246290,	-0.290732821054772880,	-0.290684980477467050,	-0.290637139173449130,	-0.290589297142838380,	
+-0.290541454385754410,	-0.290493610902316350,	-0.290445766692644660,	-0.290397921756858580,	-0.290350076095077740,	-0.290302229707421260,	-0.290254382594009600,	-0.290206534754962000,	
+-0.290158686190398090,	-0.290110836900436990,	-0.290062986885199270,	-0.290015136144804060,	-0.289967284679371000,	-0.289919432489019300,	-0.289871579573869440,	-0.289823725934040650,	
+-0.289775871569652120,	-0.289728016480824360,	-0.289680160667676550,	-0.289632304130328310,	-0.289584446868898890,	-0.289536588883508810,	-0.289488730174277230,	-0.289440870741323850,	
+-0.289393010584767800,	-0.289345149704729740,	-0.289297288101328760,	-0.289249425774684540,	-0.289201562724916370,	-0.289153698952144710,	-0.289105834456488800,	-0.289057969238068260,	
+-0.289010103297002440,	-0.288962236633411750,	-0.288914369247415480,	-0.288866501139133260,	-0.288818632308684380,	-0.288770762756189350,	-0.288722892481767410,	-0.288675021485537810,	
+-0.288627149767621110,	-0.288579277328136540,	-0.288531404167203740,	-0.288483530284942000,	-0.288435655681471890,	-0.288387780356912590,	-0.288339904311383900,	-0.288292027545004990,	
+-0.288244150057896440,	-0.288196271850177540,	-0.288148392921967920,	-0.288100513273386930,	-0.288052632904555070,	-0.288004751815591600,	-0.287956870006616290,	-0.287908987477748350,	
+-0.287861104229108380,	-0.287813220260815680,	-0.287765335572989440,	-0.287717450165750340,	-0.287669564039217620,	-0.287621677193510950,	-0.287573789628749690,	-0.287525901345054350,	
+-0.287478012342544280,	-0.287430122621339160,	-0.287382232181558340,	-0.287334341023322340,	-0.287286449146750500,	-0.287238556551962560,	-0.287190663239077770,	-0.287142769208216740,	
+-0.287094874459498830,	-0.287046978993043660,	-0.286999082808970680,	-0.286951185907400430,	-0.286903288288452190,	-0.286855389952245300,	-0.286807490898900340,	-0.286759591128536660,	
+-0.286711690641274000,	-0.286663789437231750,	-0.286615887516530390,	-0.286567984879289310,	-0.286520081525628300,	-0.286472177455666670,	-0.286424272669524970,	-0.286376367167322620,	
+-0.286328460949179350,	-0.286280554015214520,	-0.286232646365548680,	-0.286184738000301250,	-0.286136828919592020,	-0.286088919123540230,	-0.286041008612266610,	-0.285993097385890460,	
+-0.285945185444531120,	-0.285897272788309230,	-0.285849359417344180,	-0.285801445331755780,	-0.285753530531663300,	-0.285705615017187390,	-0.285657698788447490,	-0.285609781845563290,	
+-0.285561864188654260,	-0.285513945817840950,	-0.285466026733242840,	-0.285418106934979600,	-0.285370186423170690,	-0.285322265197936740,	-0.285274343259397160,	-0.285226420607671670,	
+-0.285178497242879690,	-0.285130573165141950,	-0.285082648374577750,	-0.285034722871306930,	-0.284986796655448900,	-0.284938869727124290,	-0.284890942086452490,	-0.284843013733552920,	
+-0.284795084668546250,	-0.284747154891551830,	-0.284699224402689580,	-0.284651293202078830,	-0.284603361289840210,	-0.284555428666093240,	-0.284507495330957700,	-0.284459561284553020,	
+-0.284411626526999810,	-0.284363691058417580,	-0.284315754878926070,	-0.284267817988644760,	-0.284219880387694360,	-0.284171942076194230,	-0.284124003054264270,	-0.284076063322023900,	
+-0.284028122879593730,	-0.283980181727093330,	-0.283932239864642000,	-0.283884297292360480,	-0.283836354010368270,	-0.283788410018785130,	-0.283740465317730560,	-0.283692519907325250,	
+-0.283644573787688650,	-0.283596626958940610,	-0.283548679421200540,	-0.283500731174589240,	-0.283452782219226100,	-0.283404832555231020,	-0.283356882182723420,	-0.283308931101824040,	
+-0.283260979312652320,	-0.283213026815328170,	-0.283165073609971010,	-0.283117119696701610,	-0.283069165075639400,	-0.283021209746903870,	-0.282973253710615710,	-0.282925296966894450,	
+-0.282877339515859920,	-0.282829381357631640,	-0.282781422492330290,	-0.282733462920075450,	-0.282685502640986910,	-0.282637541655184180,	-0.282589579962788050,	-0.282541617563917940,	
+-0.282493654458693790,	-0.282445690647235070,	-0.282397726129662570,	-0.282349760906095760,	-0.282301794976654590,	-0.282253828341458400,	-0.282205861000628170,	-0.282157892954283230,	
+-0.282109924202543550,	-0.282061954745528640,	-0.282013984583359300,	-0.281966013716154980,	-0.281918042144035210,	-0.281870069867120760,	-0.281822096885531110,	-0.281774123199386270,	
+-0.281726148808805640,	-0.281678173713910070,	-0.281630197914819080,	-0.281582221411652620,	-0.281534244204530160,	-0.281486266293572480,	-0.281438287678899170,	-0.281390308360630170,	
+-0.281342328338884950,	-0.281294347613784300,	-0.281246366185447790,	-0.281198384053995390,	-0.281150401219546600,	-0.281102417682222220,	-0.281054433442141820,	-0.281006448499424910,	
+-0.280958462854192290,	-0.280910476506563530,	-0.280862489456658540,	-0.280814501704596930,	-0.280766513250499450,	-0.280718524094485720,	-0.280670534236675710,	-0.280622543677188920,	
+-0.280574552416146210,	-0.280526560453667080,	-0.280478567789871570,	-0.280430574424879180,	-0.280382580358810810,	-0.280334585591785980,	-0.280286590123924710,	-0.280238593955346560,	
+-0.280190597086172280,	-0.280142599516521540,	-0.280094601246513920,	-0.280046602276270150,	-0.279998602605909920,	-0.279950602235553180,	-0.279902601165319450,	-0.279854599395329700,	
+-0.279806596925703480,	-0.279758593756560700,	-0.279710589888021060,	-0.279662585320205330,	-0.279614580053233200,	-0.279566574087224570,	-0.279518567422299080,	-0.279470560058577620,	
+-0.279422551996179710,	-0.279374543235225480,	-0.279326533775834440,	-0.279278523618127490,	-0.279230512762224210,	-0.279182501208244280,	-0.279134488956308490,	-0.279086476006536470,	
+-0.279038462359048280,	-0.278990448013963500,	-0.278942432971403030,	-0.278894417231486450,	-0.278846400794333870,	-0.278798383660064820,	-0.278750365828800250,	-0.278702347300659790,	
+-0.278654328075763400,	-0.278606308154230820,	-0.278558287536182890,	-0.278510266221739240,	-0.278462244211019890,	-0.278414221504144580,	-0.278366198101234090,	-0.278318174002408100,	
+-0.278270149207786700,	-0.278222123717489440,	-0.278174097531637350,	-0.278126070650350050,	-0.278078043073747120,	-0.278030014801949440,	-0.277981985835076830,	-0.277933956173249170,	
+-0.277885925816586220,	-0.277837894765208930,	-0.277789863019236860,	-0.277741830578790090,	-0.277693797443988370,	-0.277645763614952580,	-0.277597729091802410,	-0.277549693874657890,	
+-0.277501657963638680,	-0.277453621358865750,	-0.277405584060458840,	-0.277357546068537910,	-0.277309507383222690,	-0.277261468004634140,	-0.277213427932891940,	-0.277165387168115670,	
+-0.277117345710426450,	-0.277069303559943800,	-0.277021260716787950,	-0.276973217181078480,	-0.276925172952936390,	-0.276877128032481380,	-0.276829082419833560,	-0.276781036115112620,	
+-0.276732989118439470,	-0.276684941429933880,	-0.276636893049715950,	-0.276588843977905340,	-0.276540794214623020,	-0.276492743759988780,	-0.276444692614122630,	-0.276396640777144320,	
+-0.276348588249174850,	-0.276300535030333920,	-0.276252481120741190,	-0.276204426520517740,	-0.276156371229783150,	-0.276108315248657700,	-0.276060258577261020,	-0.276012201215714130,	
+-0.275964143164136700,	-0.275916084422648920,	-0.275868024991370530,	-0.275819964870422480,	-0.275771904059924520,	-0.275723842559996820,	-0.275675780370759070,	-0.275627717492332280,	
+-0.275579653924836190,	-0.275531589668391030,	-0.275483524723116380,	-0.275435459089133420,	-0.275387392766561770,	-0.275339325755521670,	-0.275291258056132800,	-0.275243189668516240,	
+-0.275195120592791660,	-0.275147050829078920,	-0.275098980377498910,	-0.275050909238171490,	-0.275002837411216780,	-0.274954764896754580,	-0.274906691694905890,	-0.274858617805790460,	
+-0.274810543229528470,	-0.274762467966239710,	-0.274714392016045190,	-0.274666315379064720,	-0.274618238055418410,	-0.274570160045226110,	-0.274522081348608840,	-0.274474001965686390,	
+-0.274425921896578880,	-0.274377841141406180,	-0.274329759700289330,	-0.274281677573348040,	-0.274233594760702140,	-0.274185511262472650,	-0.274137427078779420,	-0.274089342209742630,	
+-0.274041256655482010,	-0.273993170416118700,	-0.273945083491772490,	-0.273896995882563500,	-0.273848907588611690,	-0.273800818610037970,	-0.273752728946962230,	-0.273704638599504670,	
+-0.273656547567785070,	-0.273608455851924500,	-0.273560363452042820,	-0.273512270368260260,	-0.273464176600696550,	-0.273416082149472880,	-0.273367987014708990,	-0.273319891196524670,	
+-0.273271794695041090,	-0.273223697510378010,	-0.273175599642655640,	-0.273127501091993910,	-0.273079401858513810,	-0.273031301942335210,	-0.272983201343578400,	-0.272935100062363100,	
+-0.272886998098810510,	-0.272838895453040410,	-0.272790792125173100,	-0.272742688115328370,	-0.272694583423627350,	-0.272646478050189880,	-0.272598371995136150,	-0.272550265258586110,	
+-0.272502157840660840,	-0.272454049741480190,	-0.272405940961163940,	-0.272357831499833340,	-0.272309721357608110,	-0.272261610534608570,	-0.272213499030954600,	-0.272165386846767280,	
+-0.272117273982166510,	-0.272069160437272580,	-0.272021046212205300,	-0.271972931307085830,	-0.271924815722034030,	-0.271876699457170190,	-0.271828582512614160,	-0.271780464888487120,	
+-0.271732346584908910,	-0.271684227601999840,	-0.271636107939879800,	-0.271587987598669870,	-0.271539866578490000,	-0.271491744879460480,	-0.271443622501701120,	-0.271395499445333140,	
+-0.271347375710476460,	-0.271299251297250850,	-0.271251126205777630,	-0.271203000436176510,	-0.271154873988567910,	-0.271106746863071730,	-0.271058619059809050,	-0.271010490578899870,	
+-0.270962361420464480,	-0.270914231584622690,	-0.270866101071495780,	-0.270817969881203660,	-0.270769838013866560,	-0.270721705469604450,	-0.270673572248538550,	-0.270625438350788670,	
+-0.270577303776475210,	-0.270529168525718070,	-0.270481032598638430,	-0.270432895995356190,	-0.270384758715991270,	-0.270336620760664950,	-0.270288482129497020,	-0.270240342822607890,	
+-0.270192202840117470,	-0.270144062182147040,	-0.270095920848816400,	-0.270047778840245940,	-0.269999636156555640,	-0.269951492797866620,	-0.269903348764298940,	-0.269855204055972850,	
+-0.269807058673008360,	-0.269758912615526590,	-0.269710765883647560,	-0.269662618477491680,	-0.269614470397178730,	-0.269566321642830060,	-0.269518172214565640,	-0.269470022112505310,	
+-0.269421871336770370,	-0.269373719887480770,	-0.269325567764756800,	-0.269277414968718540,	-0.269229261499487170,	-0.269181107357182650,	-0.269132952541925370,	-0.269084797053835260,	
+-0.269036640893033590,	-0.268988484059640260,	-0.268940326553775810,	-0.268892168375560070,	-0.268844009525114340,	-0.268795850002558620,	-0.268747689808013220,	-0.268699528941598210,	
+-0.268651367403434760,	-0.268603205193642950,	-0.268555042312343120,	-0.268506878759655230,	-0.268458714535700580,	-0.268410549640599130,	-0.268362384074470880,	-0.268314217837437140,	
+-0.268266050929617810,	-0.268217883351133330,	-0.268169715102103800,	-0.268121546182650330,	-0.268073376592893040,	-0.268025206332952290,	-0.267977035402948090,	-0.267928863803001740,	
+-0.267880691533233240,	-0.267832518593763000,	-0.267784344984711040,	-0.267736170706198650,	-0.267687995758345790,	-0.267639820141273020,	-0.267591643855100200,	-0.267543466899948730,	
+-0.267495289275938570,	-0.267447110983189800,	-0.267398932021823690,	-0.267350752391960210,	-0.267302572093719830,	-0.267254391127222660,	-0.267206209492589890,	-0.267158027189941580,	
+-0.267109844219398260,	-0.267061660581079830,	-0.267013476275107740,	-0.266965291301601960,	-0.266917105660682890,	-0.266868919352470700,	-0.266820732377086590,	-0.266772544734650670,	
+-0.266724356425283360,	-0.266676167449104770,	-0.266627977806236200,	-0.266579787496797670,	-0.266531596520909190,	-0.266483404878692210,	-0.266435212570266700,	-0.266387019595753170,	
+-0.266338825955271640,	-0.266290631648943510,	-0.266242436676888740,	-0.266194241039227950,	-0.266146044736081060,	-0.266097847767569510,	-0.266049650133813380,	-0.266001451834933070,	
+-0.265953252871048760,	-0.265905053242281700,	-0.265856852948752000,	-0.265808651990580180,	-0.265760450367886310,	-0.265712248080791750,	-0.265664045129416600,	-0.265615841513880850,	
+-0.265567637234305930,	-0.265519432290811930,	-0.265471226683519360,	-0.265423020412548280,	-0.265374813478020110,	-0.265326605880054860,	-0.265278397618773140,	-0.265230188694294990,	
+-0.265181979106741740,	-0.265133768856233630,	-0.265085557942891010,	-0.265037346366834130,	-0.264989134128184310,	-0.264940921227061640,	-0.264892707663586640,	-0.264844493437879470,	
+-0.264796278550061490,	-0.264748063000252830,	-0.264699846788574000,	-0.264651629915145130,	-0.264603412380087550,	-0.264555194183521520,	-0.264506975325567050,	-0.264458755806345590,	
+-0.264410535625977220,	-0.264362314784582500,	-0.264314093282281560,	-0.264265871119195860,	-0.264217648295445470,	-0.264169424811150910,	-0.264121200666432410,	-0.264072975861411320,	
+-0.264024750396207820,	-0.263976524270942370,	-0.263928297485735260,	-0.263880070040707790,	-0.263831841935980140,	-0.263783613171672930,	-0.263735383747906230,	-0.263687153664801500,	
+-0.263638922922478870,	-0.263590691521058520,	-0.263542459460661900,	-0.263494226741409100,	-0.263445993363420730,	-0.263397759326816970,	-0.263349524631719180,	-0.263301289278247640,	
+-0.263253053266522870,	-0.263204816596665000,	-0.263156579268795540,	-0.263108341283034670,	-0.263060102639502910,	-0.263011863338320440,	-0.262963623379608770,	-0.262915382763488080,	
+-0.262867141490078890,	-0.262818899559501440,	-0.262770656971877130,	-0.262722413727326190,	-0.262674169825968810,	-0.262625925267926390,	-0.262577680053319220,	-0.262529434182267820,	
+-0.262481187654892370,	-0.262432940471314440,	-0.262384692631654150,	-0.262336444136032080,	-0.262288194984568510,	-0.262239945177384860,	-0.262191694714601350,	-0.262143443596338620,	
+-0.262095191822716840,	-0.262046939393857540,	-0.261998686309880880,	-0.261950432570907500,	-0.261902178177057580,	-0.261853923128452680,	-0.261805667425212940,	-0.261757411067459090,	
+-0.261709154055311200,	-0.261660896388890900,	-0.261612638068318360,	-0.261564379093713770,	-0.261516119465198700,	-0.261467859182893340,	-0.261419598246918290,	-0.261371336657393820,	
+-0.261323074414441470,	-0.261274811518181440,	-0.261226547968734350,	-0.261178283766220430,	-0.261130018910761260,	-0.261081753402477080,	-0.261033487241488500,	-0.260985220427915720,	
+-0.260936952961880350,	-0.260888684843502640,	-0.260840416072903150,	-0.260792146650202230,	-0.260743876575521390,	-0.260695605848980830,	-0.260647334470700820,	-0.260599062440802940,	
+-0.260550789759407380,	-0.260502516426634800,	-0.260454242442605570,	-0.260405967807441130,	-0.260357692521261790,	-0.260309416584188210,	-0.260261139996340650,	-0.260212862757840670,	
+-0.260164584868808560,	-0.260116306329364940,	-0.260068027139630180,	-0.260019747299725710,	-0.259971466809771960,	-0.259923185669889480,	-0.259874903880198630,	-0.259826621440820920,	
+-0.259778338351876690,	-0.259730054613486190,	-0.259681770225770990,	-0.259633485188851320,	-0.259585199502847970,	-0.259536913167881190,	-0.259488626184072530,	-0.259440338551542300,	
+-0.259392050270411290,	-0.259343761340799670,	-0.259295471762829080,	-0.259247181536619850,	-0.259198890662292620,	-0.259150599139967740,	-0.259102306969766830,	-0.259054014151810120,	
+-0.259005720686218350,	-0.258957426573111880,	-0.258909131812612270,	-0.258860836404839870,	-0.258812540349914910,	-0.258764243647959020,	-0.258715946299092500,	-0.258667648303436190,	
+-0.258619349661110280,	-0.258571050372236430,	-0.258522750436934960,	-0.258474449855326580,	-0.258426148627531660,	-0.258377846753671810,	-0.258329544233867390,	-0.258281241068239080,	
+-0.258232937256907210,	-0.258184632799993430,	-0.258136327697618070,	-0.258088021949901940,	-0.258039715556965250,	-0.257991408518929770,	-0.257943100835915710,	-0.257894792508043920,	
+-0.257846483535434710,	-0.257798173918209750,	-0.257749863656489330,	-0.257701552750393860,	-0.257653241200044900,	-0.257604929005562810,	-0.257556616167068430,	-0.257508302684682110,	
+-0.257459988558525420,	-0.257411673788718760,	-0.257363358375382930,	-0.257315042318638280,	-0.257266725618606470,	-0.257218408275407820,	-0.257170090289163160,	-0.257121771659992840,	
+-0.257073452388018540,	-0.257025132473360560,	-0.256976811916139800,	-0.256928490716476550,	-0.256880168874492500,	-0.256831846390308040,	-0.256783523264043520,	-0.256735199495820690,	
+-0.256686875085759770,	-0.256638550033981730,	-0.256590224340606850,	-0.256541898005756830,	-0.256493571029552060,	-0.256445243412113390,	-0.256396915153561170,	-0.256348586254017130,	
+-0.256300256713601570,	-0.256251926532435390,	-0.256203595710638940,	-0.256155264248333960,	-0.256106932145640840,	-0.256058599402680330,	-0.256010266019572940,	-0.255961931996440300,	
+-0.255913597333402850,	-0.255865262030580910,	-0.255816926088096310,	-0.255768589506069400,	-0.255720252284620970,	-0.255671914423871490,	-0.255623575923942690,	-0.255575236784954920,	
+-0.255526897007029070,	-0.255478556590285510,	-0.255430215534846070,	-0.255381873840831000,	-0.255333531508361300,	-0.255285188537557330,	-0.255236844928540820,	-0.255188500681432170,	
+-0.255140155796352300,	-0.255091810273421650,	-0.255043464112761850,	-0.254995117314493370,	-0.254946769878737160,	-0.254898421805613560,	-0.254850073095244320,	-0.254801723747749900,	
+-0.254753373763250750,	-0.254705023141868600,	-0.254656671883723930,	-0.254608319988937510,	-0.254559967457629930,	-0.254511614289922810,	-0.254463260485936650,	-0.254414906045792370,	
+-0.254366550969610360,	-0.254318195257512420,	-0.254269838909619020,	-0.254221481926050990,	-0.254173124306928840,	-0.254124766052374330,	-0.254076407162507840,	-0.254028047637450400,	
+-0.253979687477322410,	-0.253931326682245610,	-0.253882965252340440,	-0.253834603187727490,	-0.253786240488528440,	-0.253737877154863790,	-0.253689513186854450,	-0.253641148584620950,	
+-0.253592783348284940,	-0.253544417477966970,	-0.253496050973788020,	-0.253447683835868460,	-0.253399316064330140,	-0.253350947659293500,	-0.253302578620879510,	-0.253254208949208640,	
+-0.253205838644402710,	-0.253157467706582150,	-0.253109096135867910,	-0.253060723932380550,	-0.253012351096241760,	-0.252963977627572110,	-0.252915603526492060,	-0.252867228793123460,	
+-0.252818853427586810,	-0.252770477430002970,	-0.252722100800492570,	-0.252673723539177330,	-0.252625345646177780,	-0.252576967121614810,	-0.252528587965609060,	-0.252480208178282260,	
+-0.252431827759754920,	-0.252383446710148010,	-0.252335065029582030,	-0.252286682718178890,	-0.252238299776058990,	-0.252189916203343360,	-0.252141532000152490,	-0.252093147166608240,	
+-0.252044761702831130,	-0.251996375608941670,	-0.251947988885061700,	-0.251899601531311750,	-0.251851213547812810,	-0.251802824934685370,	-0.251754435692051360,	-0.251706045820031200,	
+-0.251657655318745950,	-0.251609264188316140,	-0.251560872428863600,	-0.251512480040508910,	-0.251464087023372970,	-0.251415693377576410,	-0.251367299103241020,	-0.251318904200487410,	
+-0.251270508669436510,	-0.251222112510208930,	-0.251173715722926520,	-0.251125318307709790,	-0.251076920264679760,	-0.251028521593957000,	-0.250980122295663410,	-0.250931722369919450,	
+-0.250883321816845810,	-0.250834920636564260,	-0.250786518829195390,	-0.250738116394860270,	-0.250689713333679400,	-0.250641309645774690,	-0.250592905331266710,	-0.250544500390276480,	
+-0.250496094822924560,	-0.250447688629332810,	-0.250399281809621840,	-0.250350874363912680,	-0.250302466292325890,	-0.250254057594983370,	-0.250205648272005750,	-0.250157238323513940,	
+-0.250108827749628670,	-0.250060416550471680,	-0.250012004726163690,	-0.249963592276825300,	-0.249915179202578300,	-0.249866765503543390,	-0.249818351179841550,	-0.249769936231593410,	
+-0.249721520658920840,	-0.249673104461944490,	-0.249624687640785350,	-0.249576270195564110,	-0.249527852126402580,	-0.249479433433421440,	-0.249431014116741710,	-0.249382594176484010,	
+-0.249334173612770270,	-0.249285752425721100,	-0.249237330615457530,	-0.249188908182100210,	-0.249140485125771060,	-0.249092061446590680,	-0.249043637144679720,	-0.248995212220160110,	
+-0.248946786673152450,	-0.248898360503777840,	-0.248849933712156880,	-0.248801506298411550,	-0.248753078262662440,	-0.248704649605030610,	-0.248656220325636750,	-0.248607790424602760,	
+-0.248559359902049300,	-0.248510928758097440,	-0.248462496992867820,	-0.248414064606482410,	-0.248365631599061800,	-0.248317197970727150,	-0.248268763721599060,	-0.248220328851799480,	
+-0.248171893361449100,	-0.248123457250668980,	-0.248075020519579780,	-0.248026583168303450,	-0.247978145196960680,	-0.247929706605672100,	-0.247881267394559710,	-0.247832827563744110,	
+-0.247784387113346470,	-0.247735946043487420,	-0.247687504354288960,	-0.247639062045871720,	-0.247590619118356840,	-0.247542175571864950,	-0.247493731406518090,	-0.247445286622436870,	
+-0.247396841219742450,	-0.247348395198555500,	-0.247299948558997980,	-0.247251501301190580,	-0.247203053425254450,	-0.247154604931310250,	-0.247106155819479980,	-0.247057706089884280,	
+-0.247009255742643930,	-0.246960804777880850,	-0.246912353195715750,	-0.246863900996269790,	-0.246815448179663640,	-0.246766994746019290,	-0.246718540695457460,	-0.246670086028099260,	
+-0.246621630744065430,	-0.246573174843477960,	-0.246524718326457560,	-0.246476261193125350,	-0.246427803443602040,	-0.246379345078009680,	-0.246330886096468940,	-0.246282426499101010,	
+-0.246233966286026560,	-0.246185505457367640,	-0.246137044013244930,	-0.246088581953779200,	-0.246040119279092450,	-0.245991655989305390,	-0.245943192084539190,	-0.245894727564914590,	
+-0.245846262430553600,	-0.245797796681576950,	-0.245749330318105810,	-0.245700863340260920,	-0.245652395748164280,	-0.245603927541936660,	-0.245555458721699230,	-0.245506989287572720,	
+-0.245458519239679180,	-0.245410048578139330,	-0.245361577303074340,	-0.245313105414605020,	-0.245264632912853330,	-0.245216159797940060,	-0.245167686069986400,	-0.245119211729113110,	
+-0.245070736775442190,	-0.245022261209094460,	-0.244973785030190630,	-0.244925308238852750,	-0.244876830835201620,	-0.244828352819358410,	-0.244779874191443900,	-0.244731394951580110,	
+-0.244682915099887850,	-0.244634434636488320,	-0.244585953561502230,	-0.244537471875051700,	-0.244488989577257510,	-0.244440506668240850,	-0.244392023148122470,	-0.244343539017024460,	
+-0.244295054275067620,	-0.244246568922373150,	-0.244198082959061810,	-0.244149596385255680,	-0.244101109201075580,	-0.244052621406642300,	-0.244004133002077850,	-0.243955643987503110,	
+-0.243907154363039220,	-0.243858664128807050,	-0.243810173284928630,	-0.243761681831524770,	-0.243713189768716730,	-0.243664697096625250,	-0.243616203815372500,	-0.243567709925079200,	
+-0.243519215425866660,	-0.243470720317855630,	-0.243422224601168250,	-0.243373728275925270,	-0.243325231342248010,	-0.243276733800257220,	-0.243228235650075040,	-0.243179736891822260,	
+-0.243131237525619710,	-0.243082737551589490,	-0.243034236969852440,	-0.242985735780529790,	-0.242937233983742370,	-0.242888731579612300,	-0.242840228568260370,	-0.242791724949807910,	
+-0.242743220724375680,	-0.242694715892085850,	-0.242646210453059230,	-0.242597704407417070,	-0.242549197755280220,	-0.242500690496770810,	-0.242452182632009680,	-0.242403674161118100,	
+-0.242355165084216890,	-0.242306655401428210,	-0.242258145112872860,	-0.242209634218671750,	-0.242161122718946960,	-0.242112610613819390,	-0.242064097903410270,	-0.242015584587840500,	
+-0.241967070667232190,	-0.241918556141706180,	-0.241870041011383820,	-0.241821525276385900,	-0.241773008936834590,	-0.241724491992850790,	-0.241675974444555740,	-0.241627456292070300,	
+-0.241578937535516680,	-0.241530418175015720,	-0.241481898210688720,	-0.241433377642656520,	-0.241384856471041300,	-0.241336334695963970,	-0.241287812317545790,	-0.241239289335907630,	
+-0.241190765751171710,	-0.241142241563458870,	-0.241093716772889960,	-0.241045191379587210,	-0.240996665383671510,	-0.240948138785264110,	-0.240899611584485950,	-0.240851083781459200,	
+-0.240802555376304710,	-0.240754026369143860,	-0.240705496760097500,	-0.240656966549287840,	-0.240608435736835740,	-0.240559904322862560,	-0.240511372307489200,	-0.240462839690837840,	
+-0.240414306473029390,	-0.240365772654185160,	-0.240317238234426050,	-0.240268703213874310,	-0.240220167592650800,	-0.240171631370876440,	-0.240123094548673420,	-0.240074557126162660,	
+-0.240026019103465520,	-0.239977480480702910,	-0.239928941257997020,	-0.239880401435468770,	-0.239831861013239530,	-0.239783319991430180,	-0.239734778370162990,	-0.239686236149558860,	
+-0.239637693329739110,	-0.239589149910824720,	-0.239540605892937880,	-0.239492061276199510,	-0.239443516060731030,	-0.239394970246653290,	-0.239346423834088550,	-0.239297876823157780,	
+-0.239249329213981870,	-0.239200781006683070,	-0.239152232201382320,	-0.239103682798200990,	-0.239055132797260010,	-0.239006582198681650,	-0.238958031002586810,	-0.238909479209096910,	
+-0.238860926818332870,	-0.238812373830416950,	-0.238763820245470100,	-0.238715266063613710,	-0.238666711284968690,	-0.238618155909657350,	-0.238569599937800610,	-0.238521043369519880,	
+-0.238472486204936110,	-0.238423928444171540,	-0.238375370087347160,	-0.238326811134584370,	-0.238278251586004100,	-0.238229691441728620,	-0.238181130701878930,	-0.238132569366575980,	
+-0.238084007435942050,	-0.238035444910098090,	-0.237986881789165520,	-0.237938318073265320,	-0.237889753762519750,	-0.237841188857049800,	-0.237792623356976870,	-0.237744057262421950,	
+-0.237695490573507310,	-0.237646923290353970,	-0.237598355413083300,	-0.237549786941816300,	-0.237501217876675300,	-0.237452648217781230,	-0.237404077965255560,	-0.237355507119219240,	
+-0.237306935679794610,	-0.237258363647102620,	-0.237209791021264300,	-0.237161217802401900,	-0.237112643990636500,	-0.237064069586089470,	-0.237015494588881850,	-0.236966918999135910,	
+-0.236918342816972660,	-0.236869766042513590,	-0.236821188675879650,	-0.236772610717193160,	-0.236724032166575170,	-0.236675453024147080,	-0.236626873290029930,	-0.236578292964346040,	
+-0.236529712047216400,	-0.236481130538762490,	-0.236432548439105330,	-0.236383965748367230,	-0.236335382466669190,	-0.236286798594132290,	-0.236238214130878810,	-0.236189629077029810,	
+-0.236141043432706730,	-0.236092457198030600,	-0.236043870373123770,	-0.235995282958107260,	-0.235946694953102530,	-0.235898106358230640,	-0.235849517173613910,	-0.235800927399373420,	
+-0.235752337035630590,	-0.235703746082506470,	-0.235655154540123420,	-0.235606562408602500,	-0.235557969688065170,	-0.235509376378632480,	-0.235460782480426790,	-0.235412187993569140,	
+-0.235363592918180600,	-0.235314997254383480,	-0.235266401002298900,	-0.235217804162048290,	-0.235169206733752740,	-0.235120608717534620,	-0.235072010113514970,	-0.235023410921815310,	
+-0.234974811142556670,	-0.234926210775861430,	-0.234877609821850690,	-0.234829008280645900,	-0.234780406152368170,	-0.234731803437139840,	-0.234683200135082040,	-0.234634596246316220,	
+-0.234585991770963450,	-0.234537386709146170,	-0.234488781060985390,	-0.234440174826602680,	-0.234391568006119100,	-0.234342960599657040,	-0.234294352607337550,	-0.234245744029281780,	
+-0.234197134865612060,	-0.234148525116449510,	-0.234099914781915660,	-0.234051303862131580,	-0.234002692357219650,	-0.233954080267301020,	-0.233905467592497200,	-0.233856854332929240,	
+-0.233808240488719590,	-0.233759626059989340,	-0.233711011046860040,	-0.233662395449452780,	-0.233613779267889950,	-0.233565162502292670,	-0.233516545152782500,	-0.233467927219480510,	
+-0.233419308702509150,	-0.233370689601989530,	-0.233322069918042750,	-0.233273449650791190,	-0.233224828800356050,	-0.233176207366858820,	-0.233127585350420640,	-0.233078962751163940,	
+-0.233030339569209820,	-0.232981715804679860,	-0.232933091457695170,	-0.232884466528378190,	-0.232835841016850040,	-0.232787214923232290,	-0.232738588247646070,	-0.232689960990213800,	
+-0.232641333151056650,	-0.232592704730296140,	-0.232544075728053470,	-0.232495446144451000,	-0.232446815979609950,	-0.232398185233651410,	-0.232349553906697870,	-0.232300921998870400,	
+-0.232252289510290640,	-0.232203656441079740,	-0.232155022791360130,	-0.232106388561252960,	-0.232057753750879810,	-0.232009118360361840,	-0.231960482389821530,	-0.231911845839379990,	
+-0.231863208709158860,	-0.231814570999279240,	-0.231765932709863650,	-0.231717293841033230,	-0.231668654392909570,	-0.231620014365613830,	-0.231571373759268510,	-0.231522732573994750,	
+-0.231474090809914130,	-0.231425448467147880,	-0.231376805545818440,	-0.231328162046046980,	-0.231279517967954680,	-0.231230873311664030,	-0.231182228077296190,	-0.231133582264972770,	
+-0.231084935874814960,	-0.231036288906945250,	-0.230987641361484840,	-0.230938993238555300,	-0.230890344538277840,	-0.230841695260774970,	-0.230793045406167850,	-0.230744394974578130,	
+-0.230695743966126960,	-0.230647092380936890,	-0.230598440219129090,	-0.230549787480825190,	-0.230501134166146370,	-0.230452480275215170,	-0.230403825808152750,	-0.230355170765080330,	
+-0.230306515146120440,	-0.230257858951394250,	-0.230209202181023420,	-0.230160544835129130,	-0.230111886913833940,	-0.230063228417259010,	-0.230014569345526030,	-0.229965909698756160,	
+-0.229917249477071980,	-0.229868588680594650,	-0.229819927309445870,	-0.229771265363746840,	-0.229722602843620060,	-0.229673939749186790,	-0.229625276080568680,	-0.229576611837886910,	
+-0.229527947021264080,	-0.229479281630821370,	-0.229430615666680020,	-0.229381949128962560,	-0.229333282017790240,	-0.229284614333284700,	-0.229235946075567220,	-0.229187277244760290,	
+-0.229138607840985160,	-0.229089937864363520,	-0.229041267315016590,	-0.228992596193066940,	-0.228943924498635790,	-0.228895252231844840,	-0.228846579392815300,	-0.228797905981669770,	
+-0.228749231998529480,	-0.228700557443516080,	-0.228651882316750880,	-0.228603206618356400,	-0.228554530348453910,	-0.228505853507164650,	-0.228457176094611190,	-0.228408498110914790,	
+-0.228359819556197140,	-0.228311140430579510,	-0.228262460734184490,	-0.228213780467133280,	-0.228165099629547650,	-0.228116418221548820,	-0.228067736243259380,	-0.228019053694800610,	
+-0.227970370576294180,	-0.227921686887861410,	-0.227873002629624840,	-0.227824317801705780,	-0.227775632404225940,	-0.227726946437306570,	-0.227678259901070240,	-0.227629572795638310,	
+-0.227580885121132420,	-0.227532196877673870,	-0.227483508065385280,	-0.227434818684387920,	-0.227386128734803100,	-0.227337438216753370,	-0.227288747130360040,	-0.227240055475744830,	
+-0.227191363253029080,	-0.227142670462335330,	-0.227093977103784930,	-0.227045283177499560,	-0.226996588683600560,	-0.226947893622210520,	-0.226899197993450760,	-0.226850501797442980,	
+-0.226801805034308520,	-0.226753107704170010,	-0.226704409807148700,	-0.226655711343366370,	-0.226607012312944330,	-0.226558312716005210,	-0.226509612552670270,	-0.226460911823060910,	
+-0.226412210527299680,	-0.226363508665507920,	-0.226314806237807390,	-0.226266103244319420,	-0.226217399685166630,	-0.226168695560470310,	-0.226119990870352280,	-0.226071285614933840,	
+-0.226022579794337620,	-0.225973873408684940,	-0.225925166458097570,	-0.225876458942696870,	-0.225827750862605450,	-0.225779042217944650,	-0.225730333008836240,	-0.225681623235401560,	
+-0.225632912897763270,	-0.225584201996042680,	-0.225535490530361180,	-0.225486778500841370,	-0.225438065907604600,	-0.225389352750772680,	-0.225340639030466940,	-0.225291924746810030,	
+-0.225243209899923330,	-0.225194494489928590,	-0.225145778516947200,	-0.225097061981101770,	-0.225048344882513710,	-0.224999627221304760,	-0.224950908997596320,	-0.224902190211511060,	
+-0.224853470863170310,	-0.224804750952695860,	-0.224756030480209150,	-0.224707309445832750,	-0.224658587849688090,	-0.224609865691896980,	-0.224561142972580760,	-0.224512419691862110,	
+-0.224463695849862420,	-0.224414971446703050,	-0.224366246482506660,	-0.224317520957394710,	-0.224268794871488930,	-0.224220068224910720,	-0.224171341017782770,	-0.224122613250226480,	
+-0.224073884922363660,	-0.224025156034315690,	-0.223976426586205260,	-0.223927696578153780,	-0.223878966010283040,	-0.223830234882714450,	-0.223781503195570720,	-0.223732770948973230,	
+-0.223684038143043800,	-0.223635304777903860,	-0.223586570853676090,	-0.223537836370481860,	-0.223489101328442630,	-0.223440365727681080,	-0.223391629568318620,	-0.223342892850477090,	
+-0.223294155574277900,	-0.223245417739843720,	-0.223196679347296030,	-0.223147940396756620,	-0.223099200888346950,	-0.223050460822189680,	-0.223001720198406280,	-0.222952979017118580,	
+-0.222904237278447990,	-0.222855494982517250,	-0.222806752129447750,	-0.222758008719361380,	-0.222709264752379570,	-0.222660520228625040,	-0.222611775148219170,	-0.222563029511283460,	
+-0.222514283317940600,	-0.222465536568312030,	-0.222416789262519620,	-0.222368041400684810,	-0.222319292982930320,	-0.222270544009377600,	-0.222221794480148530,	-0.222173044395364530,	
+-0.222124293755148360,	-0.222075542559621450,	-0.222026790808905670,	-0.221978038503122500,	-0.221929285642394670,	-0.221880532226843620,	-0.221831778256591230,	-0.221783023731758950,	
+-0.221734268652469590,	-0.221685513018844510,	-0.221636756831005250,	-0.221588000089074500,	-0.221539242793173770,	-0.221490484943424940,	-0.221441726539949450,	-0.221392967582870080,	
+-0.221344208072308280,	-0.221295448008385990,	-0.221246687391224630,	-0.221197926220946970,	-0.221149164497674520,	-0.221100402221529160,	-0.221051639392632340,	-0.221002876011106850,	
+-0.220954112077074190,	-0.220905347590656250,	-0.220856582551974490,	-0.220807816961151730,	-0.220759050818309400,	-0.220710284123569470,	-0.220661516877053400,	-0.220612749078883950,	
+-0.220563980729182620,	-0.220515211828070930,	-0.220466442375671650,	-0.220417672372106240,	-0.220368901817496660,	-0.220320130711964380,	-0.220271359055632220,	-0.220222586848621640,	
+-0.220173814091054630,	-0.220125040783052620,	-0.220076266924738470,	-0.220027492516233630,	-0.219978717557660080,	-0.219929942049139270,	-0.219881165990794050,	-0.219832389382745940,	
+-0.219783612225116830,	-0.219734834518028280,	-0.219686056261603040,	-0.219637277455962680,	-0.219588498101228710,	-0.219539718197523910,	-0.219490937744969810,	-0.219442156743688390,	
+-0.219393375193801120,	-0.219344593095430830,	-0.219295810448699090,	-0.219247027253727830,	-0.219198243510638550,	-0.219149459219554090,	-0.219100674380595990,	-0.219051888993886220,	
+-0.219003103059546260,	-0.218954316577699010,	-0.218905529548465950,	-0.218856741971969050,	-0.218807953848329910,	-0.218759165177671270,	-0.218710375960114750,	-0.218661586195781830,	
+-0.218612795884795400,	-0.218564005027276960,	-0.218515213623348530,	-0.218466421673131630,	-0.218417629176749090,	-0.218368836134322510,	-0.218320042545973810,	-0.218271248411824580,	
+-0.218222453731997670,	-0.218173658506614600,	-0.218124862735797400,	-0.218076066419667620,	-0.218027269558348110,	-0.217978472151960400,	-0.217929674200626530,	-0.217880875704468040,	
+-0.217832076663607790,	-0.217783277078167360,	-0.217734476948268720,	-0.217685676274033460,	-0.217636875055584430,	-0.217588073293043220,	-0.217539270986531420,	-0.217490468136171840,	
+-0.217441664742086120,	-0.217392860804396210,	-0.217344056323223730,	-0.217295251298691540,	-0.217246445730921220,	-0.217197639620034800,	-0.217148832966153840,	-0.217100025769401210,	
+-0.217051218029898550,	-0.217002409747767830,	-0.216953600923130650,	-0.216904791556109890,	-0.216855981646827150,	-0.216807171195404490,	-0.216758360201963430,	-0.216709548666626920,	
+-0.216660736589516540,	-0.216611923970753910,	-0.216563110810461870,	-0.216514297108762050,	-0.216465482865776490,	-0.216416668081626800,	-0.216367852756435890,	-0.216319036890325310,	
+-0.216270220483417150,	-0.216221403535833020,	-0.216172586047695820,	-0.216123768019127140,	-0.216074949450249050,	-0.216026130341183150,	-0.215977310692052340,	-0.215928490502978270,	
+-0.215879669774082960,	-0.215830848505488060,	-0.215782026697316470,	-0.215733204349689790,	-0.215684381462729700,	-0.215635558036559070,	-0.215586734071299550,	-0.215537909567073190,	
+-0.215489084524001620,	-0.215440258942207780,	-0.215391432821813310,	-0.215342606162940240,	-0.215293778965710200,	-0.215244951230246170,	-0.215196122956669760,	-0.215147294145103060,	
+-0.215098464795667660,	-0.215049634908486550,	-0.215000804483681330,	-0.214951973521374130,	-0.214903142021686560,	-0.214854309984741560,	-0.214805477410660780,	-0.214756644299565870,	
+-0.214707810651579790,	-0.214658976466824190,	-0.214610141745421120,	-0.214561306487492300,	-0.214512470693160620,	-0.214463634362547780,	-0.214414797495775860,	-0.214365960092966490,	
+-0.214317122154242670,	-0.214268283679726030,	-0.214219444669538680,	-0.214170605123802320,	-0.214121765042639860,	-0.214072924426172980,	-0.214024083274523800,	-0.213975241587813950,	
+-0.213926399366166450,	-0.213877556609702950,	-0.213828713318545580,	-0.213779869492815970,	-0.213731025132637110,	-0.213682180238130710,	-0.213633334809418430,	-0.213584488846623230,	
+-0.213535642349866800,	-0.213486795319271280,	-0.213437947754958330,	-0.213389099657050970,	-0.213340251025670840,	-0.213291401860940060,	-0.213242552162980380,	-0.213193701931914730,	
+-0.213144851167864830,	-0.213095999870952820,	-0.213047148041300340,	-0.212998295679030450,	-0.212949442784264810,	-0.212900589357125580,	-0.212851735397734440,	-0.212802880906214380,	
+-0.212754025882687130,	-0.212705170327274370,	-0.212656314240099120,	-0.212607457621283110,	-0.212558600470948430,	-0.212509742789216830,	-0.212460884576211290,	-0.212412025832053540,	
+-0.212363166556865740,	-0.212314306750769570,	-0.212265446413888090,	-0.212216585546342980,	-0.212167724148256410,	-0.212118862219750100,	-0.212069999760947060,	-0.212021136771969020,	
+-0.211972273252938160,	-0.211923409203976150,	-0.211874544625206080,	-0.211825679516749630,	-0.211776813878728540,	-0.211727947711265880,	-0.211679081014483320,	-0.211630213788503080,	
+-0.211581346033446860,	-0.211532477749437700,	-0.211483608936597370,	-0.211434739595047990,	-0.211385869724911360,	-0.211336999326310480,	-0.211288128399367090,	-0.211239256944203370,	
+-0.211190384960941090,	-0.211141512449703280,	-0.211092639410611680,	-0.211043765843788510,	-0.210994891749355460,	-0.210946017127435630,	-0.210897141978150740,	-0.210848266301623010,	
+-0.210799390097974190,	-0.210750513367327310,	-0.210701636109804140,	-0.210652758325526460,	-0.210603880014617330,	-0.210555001177198470,	-0.210506121813392150,	-0.210457241923320050,	
+-0.210408361507105290,	-0.210359480564869640,	-0.210310599096735270,	-0.210261717102823990,	-0.210212834583258850,	-0.210163951538161610,	-0.210115067967654500,	-0.210066183871859270,	
+-0.210017299250899010,	-0.209968414104895530,	-0.209919528433971020,	-0.209870642238247220,	-0.209821755517847260,	-0.209772868272892930,	-0.209723980503505990,	-0.209675092209809510,	
+-0.209626203391925340,	-0.209577314049975620,	-0.209528424184082210,	-0.209479533794368150,	-0.209430642880955280,	-0.209381751443965790,	-0.209332859483521480,	-0.209283966999745470,	
+-0.209235073992759530,	-0.209186180462685920,	-0.209137286409646410,	-0.209088391833764130,	-0.209039496735160840,	-0.208990601113958840,	-0.208941704970279890,	-0.208892808304247140,	
+-0.208843911115982330,	-0.208795013405607330,	-0.208746115173245230,	-0.208697216419017840,	-0.208648317143047410,	-0.208599417345455730,	-0.208550517026365980,	-0.208501616185899910,	
+-0.208452714824179820,	-0.208403812941327480,	-0.208354910537466080,	-0.208306007612717360,	-0.208257104167203670,	-0.208208200201046740,	-0.208159295714369780,	-0.208110390707294560,	
+-0.208061485179943360,	-0.208012579132438010,	-0.207963672564901670,	-0.207914765477456130,	-0.207865857870223240,	-0.207816949743326150,	-0.207768041096886680,	-0.207719131931027120,	
+-0.207670222245869280,	-0.207621312041536330,	-0.207572401318150110,	-0.207523490075832870,	-0.207474578314706480,	-0.207425666034894070,	-0.207376753236517470,	-0.207327839919699030,	
+-0.207278926084560530,	-0.207230011731225160,	-0.207181096859814760,	-0.207132181470451620,	-0.207083265563257600,	-0.207034349138355830,	-0.206985432195868210,	-0.206936514735916980,	
+-0.206887596758624060,	-0.206838678264112560,	-0.206789759252504370,	-0.206740839723921350,	-0.206691919678486660,	-0.206642999116322200,	-0.206594078037550200,	-0.206545156442292600,	
+-0.206496234330672520,	-0.206447311702811890,	-0.206398388558832940,	-0.206349464898857610,	-0.206300540723009050,	-0.206251616031409120,	-0.206202690824180160,	-0.206153765101444040,	
+-0.206104838863323950,	-0.206055912109941760,	-0.206006984841419770,	-0.205958057057879920,	-0.205909128759445340,	-0.205860199946237940,	-0.205811270618379590,	-0.205762340775993540,	
+-0.205713410419201600,	-0.205664479548126140,	-0.205615548162889040,	-0.205566616263613530,	-0.205517683850421460,	-0.205468750923435190,	-0.205419817482776600,	-0.205370883528568910,	
+-0.205321949060934010,	-0.205273014079994240,	-0.205224078585871490,	-0.205175142578688990,	-0.205126206058568630,	-0.205077269025632750,	-0.205028331480003270,	-0.204979393421803380,	
+-0.204930454851155020,	-0.204881515768180090,	-0.204832576173001800,	-0.204783636065742070,	-0.204734695446523260,	-0.204685754315467260,	-0.204636812672697320,	-0.204587870518335320,	
+-0.204538927852503690,	-0.204489984675324280,	-0.204441040986920340,	-0.204392096787413820,	-0.204343152076927050,	-0.204294206855581940,	-0.204245261123501780,	-0.204196314880808440,	
+-0.204147368127624320,	-0.204098420864071370,	-0.204049473090272770,	-0.204000524806350500,	-0.203951576012426920,	-0.203902626708623970,	-0.203853676895064890,	-0.203804726571871600,	
+-0.203755775739166090,	-0.203706824397071550,	-0.203657872545709940,	-0.203608920185203680,	-0.203559967315674660,	-0.203511013937246160,	-0.203462060050040140,	-0.203413105654178940,	
+-0.203364150749784590,	-0.203315195336980250,	-0.203266239415887950,	-0.203217282986630030,	-0.203168326049328500,	-0.203119368604106560,	-0.203070410651086220,	-0.203021452190389830,	
+-0.202972493222139390,	-0.202923533746458130,	-0.202874573763468070,	-0.202825613273291130,	-0.202776652276050570,	-0.202727690771868420,	-0.202678728760867010,	-0.202629766243168360,	
+-0.202580803218895710,	-0.202531839688171070,	-0.202482875651116830,	-0.202433911107854970,	-0.202384946058508740,	-0.202335980503200170,	-0.202287014442051630,	-0.202238047875185150,	
+-0.202189080802723960,	-0.202140113224790090,	-0.202091145141505920,	-0.202042176552993450,	-0.201993207459375960,	-0.201944237860775480,	-0.201895267757313950,	-0.201846297149114700,	
+-0.201797326036299710,	-0.201748354418991390,	-0.201699382297311770,	-0.201650409671384120,	-0.201601436541330450,	-0.201552462907273160,	-0.201503488769334300,	-0.201454514127637150,	
+-0.201405538982303730,	-0.201356563333456450,	-0.201307587181217330,	-0.201258610525709670,	-0.201209633367055500,	-0.201160655705377220,	-0.201111677540796870,	-0.201062698873437780,	
+-0.201013719703421940,	-0.200964740030871360,	-0.200915759855909370,	-0.200866779178657970,	-0.200817797999239630,	-0.200768816317776350,	-0.200719834134391480,	-0.200670851449207020,	
+-0.200621868262345400,	-0.200572884573928720,	-0.200523900384080240,	-0.200474915692922030,	-0.200425930500576500,	-0.200376944807165720,	-0.200327958612813020,	-0.200278971917640440,	
+-0.200229984721770390,	-0.200180997025324990,	-0.200132008828427490,	-0.200083020131200000,	-0.200034030933764930,	-0.199985041236244360,	-0.199936051038761640,	-0.199887060341438770,	
+-0.199838069144397830,	-0.199789077447762140,	-0.199740085251653770,	-0.199691092556195160,	-0.199642099361508420,	-0.199593105667716850,	-0.199544111474942500,	-0.199495116783307890,	
+-0.199446121592935070,	-0.199397125903947340,	-0.199348129716466820,	-0.199299133030615970,	-0.199250135846516850,	-0.199201138164292830,	-0.199152139984065970,	-0.199103141305958740,	
+-0.199054142130093260,	-0.199005142456592820,	-0.198956142285579530,	-0.198907141617175460,	-0.198858140451503990,	-0.198809138788687140,	-0.198760136628847450,	-0.198711133972106990,	
+-0.198662130818589130,	-0.198613127168415950,	-0.198564123021709920,	-0.198515118378593170,	-0.198466113239189060,	-0.198417107603619660,	-0.198368101472007510,	-0.198319094844474660,	
+-0.198270087721144490,	-0.198221080102139120,	-0.198172071987581050,	-0.198123063377592360,	-0.198074054272296430,	-0.198025044671815390,	-0.197976034576271300,	-0.197927023985787570,	
+-0.197878012900486260,	-0.197829001320489920,	-0.197779989245920630,	-0.197730976676901820,	-0.197681963613555580,	-0.197632950056004400,	-0.197583936004370440,	-0.197534921458777050,	
+-0.197485906419346380,	-0.197436890886200920,	-0.197387874859462800,	-0.197338858339255440,	-0.197289841325700930,	-0.197240823818921830,	-0.197191805819040220,	-0.197142787326179540,	
+-0.197093768340461880,	-0.197044748862009820,	-0.196995728890945440,	-0.196946708427392150,	-0.196897687471472130,	-0.196848666023307420,	-0.196799644083021500,	-0.196750621650736480,	
+-0.196701598726574890,	-0.196652575310658860,	-0.196603551403111840,	-0.196554527004055930,	-0.196505502113613730,	-0.196456476731907300,	-0.196407450859060140,	-0.196358424495194360,	
+-0.196309397640432510,	-0.196260370294896710,	-0.196211342458710440,	-0.196162314131995810,	-0.196113285314875400,	-0.196064256007471350,	-0.196015226209907080,	-0.195966195922304740,	
+-0.195917165144786490,	-0.195868133877475760,	-0.195819102120494660,	-0.195770069873965860,	-0.195721037138011420,	-0.195672003912754830,	-0.195622970198318230,	-0.195573935994824200,	
+-0.195524901302394890,	-0.195475866121153780,	-0.195426830451222970,	-0.195377794292725120,	-0.195328757645782340,	-0.195279720510518090,	-0.195230682887054560,	-0.195181644775514310,	
+-0.195132606176019520,	-0.195083567088693620,	-0.195034527513658850,	-0.194985487451037300,	-0.194936446900952460,	-0.194887405863526510,	-0.194838364338882050,	-0.194789322327141250,	
+-0.194740279828427560,	-0.194691236842863190,	-0.194642193370570700,	-0.194593149411672330,	-0.194544104966291490,	-0.194495060034550390,	-0.194446014616571660,	-0.194396968712477440,	
+-0.194347922322391260,	-0.194298875446435260,	-0.194249828084732040,	-0.194200780237403860,	-0.194151731904574130,	-0.194102683086365110,	-0.194053633782898920,	-0.194004583994299070,	
+-0.193955533720687770,	-0.193906482962187650,	-0.193857431718920890,	-0.193808379991010970,	-0.193759327778580100,	-0.193710275081750930,	-0.193661221900645610,	-0.193612168235387680,	
+-0.193563114086099330,	-0.193514059452903200,	-0.193465004335921480,	-0.193415948735277700,	-0.193366892651094020,	-0.193317836083493150,	-0.193268779032597200,	-0.193219721498529780,	
+-0.193170663481413040,	-0.193121604981369650,	-0.193072545998521810,	-0.193023486532993030,	-0.192974426584905550,	-0.192925366154381550,	-0.192876305241544590,	-0.192827243846516870,	
+-0.192778181969421010,	-0.192729119610379280,	-0.192680056769515190,	-0.192630993446950950,	-0.192581929642809240,	-0.192532865357212260,	-0.192483800590283530,	-0.192434735342145340,	
+-0.192385669612920280,	-0.192336603402730620,	-0.192287536711699900,	-0.192238469539950330,	-0.192189401887604580,	-0.192140333754784900,	-0.192091265141614790,	-0.192042196048216540,	
+-0.191993126474712370,	-0.191944056421225830,	-0.191894985887879120,	-0.191845914874794960,	-0.191796843382095600,	-0.191747771409904540,	-0.191698698958344040,	-0.191649626027536820,	
+-0.191600552617605090,	-0.191551478728672400,	-0.191502404360861020,	-0.191453329514293640,	-0.191404254189092520,	-0.191355178385381160,	-0.191306102103281860,	-0.191257025342917330,	
+-0.191207948104409780,	-0.191158870387882820,	-0.191109792193458670,	-0.191060713521259580,	-0.191011634371409170,	-0.190962554744029650,	-0.190913474639243770,	-0.190864394057173760,	
+-0.190815312997943190,	-0.190766231461674350,	-0.190717149448489910,	-0.190668066958512180,	-0.190618983991864720,	-0.190569900548669820,	-0.190520816629050130,	-0.190471732233127970,	
+-0.190422647361026930,	-0.190373562012869260,	-0.190324476188777710,	-0.190275389888874490,	-0.190226303113283260,	-0.190177215862126270,	-0.190128128135526240,	-0.190079039933605450,	
+-0.190029951256487500,	-0.189980862104294660,	-0.189931772477149240,	-0.189882682375174830,	-0.189833591798493710,	-0.189784500747228610,	-0.189735409221501810,	-0.189686317221436950,	
+-0.189637224747156270,	-0.189588131798782530,	-0.189539038376438040,	-0.189489944480246390,	-0.189440850110329880,	-0.189391755266811230,	-0.189342659949812750,	-0.189293564159458080,	
+-0.189244467895869490,	-0.189195371159169730,	-0.189146273949481110,	-0.189097176266927240,	-0.189048078111630410,	-0.188998979483712970,	-0.188949880383298520,	-0.188900780810509340,	
+-0.188851680765468240,	-0.188802580248297490,	-0.188753479259120730,	-0.188704377798060260,	-0.188655275865238860,	-0.188606173460778820,	-0.188557070584803810,	-0.188507967237436100,	
+-0.188458863418798470,	-0.188409759129013250,	-0.188360654368204070,	-0.188311549136493260,	-0.188262443434003580,	-0.188213337260857340,	-0.188164230617178210,	-0.188115123503088480,	
+-0.188066015918710530,	-0.188016907864167970,	-0.187967799339583130,	-0.187918690345078800,	-0.187869580880777320,	-0.187820470946802290,	-0.187771360543276120,	-0.187722249670321530,	
+-0.187673138328060870,	-0.187624026516617830,	-0.187574914236114690,	-0.187525801486674280,	-0.187476688268418930,	-0.187427574581472300,	-0.187378460425956740,	-0.187329345801995010,	
+-0.187280230709709480,	-0.187231115149223830,	-0.187181999120660390,	-0.187132882624141930,	-0.187083765659790850,	-0.187034648227730780,	-0.186985530328084070,	-0.186936411960973130,	
+-0.186887293126521580,	-0.186838173824851820,	-0.186789054056086590,	-0.186739933820348310,	-0.186690813117760650,	-0.186641691948445930,	-0.186592570312526990,	-0.186543448210126170,	
+-0.186494325641367200,	-0.186445202606372370,	-0.186396079105264570,	-0.186346955138166130,	-0.186297830705200730,	-0.186248705806490750,	-0.186199580442159040,	-0.186150454612327900,	
+-0.186101328317121090,	-0.186052201556660940,	-0.186003074331069860,	-0.185953946640471520,	-0.185904818484988330,	-0.185855689864743070,	-0.185806560779858160,	-0.185757431230457290,	
+-0.185708301216662850,	-0.185659170738597640,	-0.185610039796384070,	-0.185560908390145830,	-0.185511776520005330,	-0.185462644186085410,	-0.185413511388508400,	-0.185364378127398090,	
+-0.185315244402876810,	-0.185266110215067420,	-0.185216975564092310,	-0.185167840450075200,	-0.185118704873138500,	-0.185069568833404610,	-0.185020432330997210,	-0.184971295366038760,	
+-0.184922157938652050,	-0.184873020048959500,	-0.184823881697084860,	-0.184774742883150520,	-0.184725603607279300,	-0.184676463869593630,	-0.184627323670217250,	-0.184578183009272560,	
+-0.184529041886882430,	-0.184479900303169240,	-0.184430758258256750,	-0.184381615752267330,	-0.184332472785323910,	-0.184283329357548850,	-0.184234185469065920,	-0.184185041119997510,	
+-0.184135896310466060,	-0.184086751040595300,	-0.184037605310507700,	-0.183988459120326050,	-0.183939312470172810,	-0.183890165360171750,	-0.183841017790445260,	-0.183791869761116250,	
+-0.183742721272307120,	-0.183693572324141600,	-0.183644422916742180,	-0.183595273050231680,	-0.183546122724732560,	-0.183496971940368600,	-0.183447820697262180,	-0.183398668995536220,	
+-0.183349516835313140,	-0.183300364216716720,	-0.183251211139869390,	-0.183202057604894030,	-0.183152903611913080,	-0.183103749161050320,	-0.183054594252428180,	-0.183005438886169100,	
+-0.182956283062396890,	-0.182907126781233940,	-0.182857970042803210,	-0.182808812847227110,	-0.182759655194629390,	-0.182710497085132570,	-0.182661338518859460,	-0.182612179495932610,	
+-0.182563020016475730,	-0.182513860080611300,	-0.182464699688462210,	-0.182415538840150940,	-0.182366377535801260,	-0.182317215775535640,	-0.182268053559477010,	-0.182218890887747760,	
+-0.182169727760471740,	-0.182120564177771390,	-0.182071400139769220,	-0.182022235646588980,	-0.181973070698353140,	-0.181923905295184620,	-0.181874739437205890,	-0.181825573124540780,	
+-0.181776406357311710,	-0.181727239135641650,	-0.181678071459653030,	-0.181628903329469680,	-0.181579734745214080,	-0.181530565707009120,	-0.181481396214977330,	-0.181432226269242460,	
+-0.181383055869927060,	-0.181333885017154000,	-0.181284713711045790,	-0.181235541951726250,	-0.181186369739317840,	-0.181137197073943070,	-0.181088023955725740,	-0.181038850384788370,	
+-0.180989676361253850,	-0.180940501885244710,	-0.180891326956884760,	-0.180842151576296490,	-0.180792975743602840,	-0.180743799458926300,	-0.180694622722390700,	-0.180645445534118570,	
+-0.180596267894232800,	-0.180547089802855940,	-0.180497911260111780,	-0.180448732266122850,	-0.180399552821012080,	-0.180350372924902000,	-0.180301192577916440,	-0.180252011780177880,	
+-0.180202830531809270,	-0.180153648832933190,	-0.180104466683673390,	-0.180055284084152440,	-0.180006101034492850,	-0.179956917534818430,	-0.179907733585251720,	-0.179858549185915680,	
+-0.179809364336932810,	-0.179760179038427000,	-0.179710993290520730,	-0.179661807093336980,	-0.179612620446998270,	-0.179563433351628440,	-0.179514245807350040,	-0.179465057814286010,	
+-0.179415869372558910,	-0.179366680482292570,	-0.179317491143609510,	-0.179268301356632740,	-0.179219111121484780,	-0.179169920438289470,	-0.179120729307169380,	-0.179071537728247020,	
+-0.179022345701646240,	-0.178973153227489610,	-0.178923960305900100,	-0.178874766937000250,	-0.178825573120913910,	-0.178776378857763650,	-0.178727184147672440,	-0.178677988990762810,	
+-0.178628793387158670,	-0.178579597336982530,	-0.178530400840357430,	-0.178481203897405850,	-0.178432006508251720,	-0.178382808673017560,	-0.178333610391826380,	-0.178284411664800750,	
+-0.178235212492064530,	-0.178186012873740280,	-0.178136812809950560,	-0.178087612300819210,	-0.178038411346468860,	-0.177989209947022500,	-0.177940008102602630,	-0.177890805813333220,	
+-0.177841603079336770,	-0.177792399900736340,	-0.177743196277654450,	-0.177693992210215010,	-0.177644787698540580,	-0.177595582742754190,	-0.177546377342978400,	-0.177497171499337110,	
+-0.177447965211952910,	-0.177398758480948770,	-0.177349551306447310,	-0.177300343688572390,	-0.177251135627446630,	-0.177201927123192600,	-0.177152718175934170,	-0.177103508785793950,	
+-0.177054298952894980,	-0.177005088677359810,	-0.176955877959312340,	-0.176906666798875210,	-0.176857455196171380,	-0.176808243151323490,	-0.176759030664455420,	-0.176709817735689780,	
+-0.176660604365149600,	-0.176611390552957460,	-0.176562176299237290,	-0.176512961604111670,	-0.176463746467703660,	-0.176414530890135840,	-0.176365314871532120,	-0.176316098412015120,	
+-0.176266881511707880,	-0.176217664170733010,	-0.176168446389214390,	-0.176119228167274680,	-0.176070009505036460,	-0.176020790402623640,	-0.175971570860158830,	-0.175922350877765120,	
+-0.175873130455565070,	-0.175823909593682660,	-0.175774688292240470,	-0.175725466551361540,	-0.175676244371168520,	-0.175627021751785320,	-0.175577798693334590,	-0.175528575195939340,	
+-0.175479351259722220,	-0.175430126884807160,	-0.175380902071316790,	-0.175331676819374140,	-0.175282451129101870,	-0.175233225000623940,	-0.175183998434062900,	-0.175134771429541450,	
+-0.175085543987183540,	-0.175036316107111730,	-0.174987087789449130,	-0.174937859034318380,	-0.174888629841843450,	-0.174839400212146890,	-0.174790170145351860,	-0.174740939641580970,	
+-0.174691708700958180,	-0.174642477323606080,	-0.174593245509647830,	-0.174544013259205990,	-0.174494780572404580,	-0.174445547449366220,	-0.174396313890213980,	-0.174347079895070510,	
+-0.174297845464059800,	-0.174248610597304450,	-0.174199375294927160,	-0.174150139557051860,	-0.174100903383801210,	-0.174051666775298290,	-0.174002429731665800,	-0.173953192253027630,	
+-0.173903954339506510,	-0.173854715991225480,	-0.173805477208307250,	-0.173756237990875750,	-0.173706998339053680,	-0.173657758252964090,	-0.173608517732729640,	-0.173559276778474380,	
+-0.173510035390320920,	-0.173460793568392360,	-0.173411551312811360,	-0.173362308623701940,	-0.173313065501186750,	-0.173263821945388890,	-0.173214577956431050,	-0.173165333534437190,	
+-0.173116088679530020,	-0.173066843391832180,	-0.173017597671467650,	-0.172968351518559130,	-0.172919104933229730,	-0.172869857915602170,	-0.172820610465800360,	-0.172771362583947040,	
+-0.172722114270165290,	-0.172672865524577830,	-0.172623616347308660,	-0.172574366738480450,	-0.172525116698216300,	-0.172475866226638940,	-0.172426615323872350,	-0.172377363990039220,	
+-0.172328112225262680,	-0.172278860029665410,	-0.172229607403371430,	-0.172180354346503440,	-0.172131100859184120,	-0.172081846941537500,	-0.172032592593686250,	-0.171983337815753530,	
+-0.171934082607862030,	-0.171884826970135740,	-0.171835570902697380,	-0.171786314405670100,	-0.171737057479176610,	-0.171687800123340920,	-0.171638542338285710,	-0.171589284124134160,	
+-0.171540025481008940,	-0.171490766409034100,	-0.171441506908332380,	-0.171392246979026860,	-0.171342986621240280,	-0.171293725835096670,	-0.171244464620718770,	-0.171195202978229240,	
+-0.171145940907752180,	-0.171096678409410230,	-0.171047415483326610,	-0.170998152129623990,	-0.170948888348426450,	-0.170899624139856680,	-0.170850359504037850,	-0.170801094441092680,	
+-0.170751828951145210,	-0.170702563034318160,	-0.170653296690734730,	-0.170604029920517600,	-0.170554762723790830,	-0.170505495100677170,	-0.170456227051299760,	-0.170406958575781340,	
+-0.170357689674245970,	-0.170308420346816400,	-0.170259150593615290,	-0.170209880414766780,	-0.170160609810393550,	-0.170111338780618820,	-0.170062067325565280,	-0.170012795445357020,	
+-0.169963523140116760,	-0.169914250409967720,	-0.169864977255032580,	-0.169815703675435470,	-0.169766429671299070,	-0.169717155242746610,	-0.169667880389900830,	-0.169618605112885790,	
+-0.169569329411824200,	-0.169520053286839330,	-0.169470776738053890,	-0.169421499765591930,	-0.169372222369576190,	-0.169322944550129940,	-0.169273666307375860,	-0.169224387641438070,	
+-0.169175108552439310,	-0.169125829040502360,	-0.169076549105751230,	-0.169027268748308760,	-0.168977987968298100,	-0.168928706765842070,	-0.168879425141064660,	-0.168830143094088720,	
+-0.168780860625037420,	-0.168731577734033520,	-0.168682294421201110,	-0.168633010686662980,	-0.168583726530542320,	-0.168534441952961880,	-0.168485156954045810,	-0.168435871533916840,	
+-0.168386585692698180,	-0.168337299430512620,	-0.168288012747484260,	-0.168238725643735850,	-0.168189438119390190,	-0.168140150174571370,	-0.168090861809402190,	-0.168041573024005850,	
+-0.167992283818505140,	-0.167942994193024160,	-0.167893704147685700,	-0.167844413682612960,	-0.167795122797928770,	-0.167745831493757190,	-0.167696539770221030,	-0.167647247627443540,	
+-0.167597955065547500,	-0.167548662084656990,	-0.167499368684894820,	-0.167450074866384250,	-0.167400780629248040,	-0.167351485973610330,	-0.167302190899593890,	-0.167252895407321550,	
+-0.167203599496917400,	-0.167154303168504240,	-0.167105006422205330,	-0.167055709258143480,	-0.167006411676442780,	-0.166957113677226070,	-0.166907815260616540,	-0.166858516426737070,	
+-0.166809217175711730,	-0.166759917507663340,	-0.166710617422715170,	-0.166661316920990010,	-0.166612016002612020,	-0.166562714667703950,	-0.166513412916389130,	-0.166464110748790310,	
+-0.166414808165031680,	-0.166365505165236020,	-0.166316201749526580,	-0.166266897918026210,	-0.166217593670859030,	-0.166168289008147870,	-0.166118983930015560,	-0.166069678436586210,	
+-0.166020372527982660,	-0.165971066204328190,	-0.165921759465745610,	-0.165872452312359090,	-0.165823144744291410,	-0.165773836761665900,	-0.165724528364605330,	-0.165675219553233890,	
+-0.165625910327674400,	-0.165576600688050140,	-0.165527290634483930,	-0.165477980167099940,	-0.165428669286021010,	-0.165379357991370380,	-0.165330046283270940,	-0.165280734161846830,	
+-0.165231421627220850,	-0.165182108679515910,	-0.165132795318856110,	-0.165083481545364340,	-0.165034167359163850,	-0.164984852760377530,	-0.164935537749129500,	-0.164886222325542620,	
+-0.164836906489740200,	-0.164787590241845060,	-0.164738273581981400,	-0.164688956510272020,	-0.164639639026840280,	-0.164590321131808990,	-0.164541002825302350,	-0.164491684107443190,	
+-0.164442364978354850,	-0.164393045438160130,	-0.164343725486983230,	-0.164294405124947030,	-0.164245084352174390,	-0.164195763168789450,	-0.164146441574915120,	-0.164097119570674690,	
+-0.164047797156191000,	-0.163998474331588260,	-0.163949151096989350,	-0.163899827452517580,	-0.163850503398295770,	-0.163801178934448150,	-0.163751854061097570,	-0.163702528778367380,	
+-0.163653203086380400,	-0.163603876985260880,	-0.163554550475131650,	-0.163505223556116050,	-0.163455896228336950,	-0.163406568491918560,	-0.163357240346983730,	-0.163307911793655390,	
+-0.163258582832057690,	-0.163209253462313520,	-0.163159923684546240,	-0.163110593498878690,	-0.163061262905435100,	-0.163011931904338350,	-0.162962600495711790,	-0.162913268679678290,	
+-0.162863936456362050,	-0.162814603825885950,	-0.162765270788373360,	-0.162715937343947150,	-0.162666603492731540,	-0.162617269234849400,	-0.162567934570424120,	-0.162518599499578530,	
+-0.162469264022436920,	-0.162419928139122120,	-0.162370591849757500,	-0.162321255154465970,	-0.162271918053371740,	-0.162222580546597720,	-0.162173242634266800,	-0.162123904316503230,	
+-0.162074565593429890,	-0.162025226465170120,	-0.161975886931846860,	-0.161926546993584330,	-0.161877206650505420,	-0.161827865902733490,	-0.161778524750391480,	-0.161729183193603580,	
+-0.161679841232492710,	-0.161630498867182250,	-0.161581156097795110,	-0.161531812924455510,	-0.161482469347286380,	-0.161433125366411080,	-0.161383780981952520,	-0.161334436194034950,	
+-0.161285091002781290,	-0.161235745408314450,	-0.161186399410758710,	-0.161137053010236950,	-0.161087706206872570,	-0.161038359000788500,	-0.160989011392108940,	-0.160939663380956890,	
+-0.160890314967455650,	-0.160840966151728190,	-0.160791616933898760,	-0.160742267314090280,	-0.160692917292426130,	-0.160643566869029250,	-0.160594216044023910,	-0.160544864817533020,	
+-0.160495513189679940,	-0.160446161160587690,	-0.160396808730380420,	-0.160347455899181170,	-0.160298102667112840,	-0.160248749034299670,	-0.160199395000864640,	-0.160150040566931110,	
+-0.160100685732622070,	-0.160051330498061720,	-0.160001974863373060,	-0.159952618828679450,	-0.159903262394103880,	-0.159853905559770580,	-0.159804548325802510,	-0.159755190692323080,	
+-0.159705832659455200,	-0.159656474227323240,	-0.159607115396050050,	-0.159557756165759070,	-0.159508396536573280,	-0.159459036508616920,	-0.159409676082012980,	-0.159360315256884850,	
+-0.159310954033355490,	-0.159261592411549190,	-0.159212230391588910,	-0.159162867973597600,	-0.159113505157699560,	-0.159064141944017770,	-0.159014778332675630,	-0.158965414323796100,	
+-0.158916049917503470,	-0.158866685113920710,	-0.158817319913171250,	-0.158767954315378050,	-0.158718588320665380,	-0.158669221929156250,	-0.158619855140974100,	-0.158570487956241820,	
+-0.158521120375083780,	-0.158471752397622960,	-0.158422384023982730,	-0.158373015254286130,	-0.158323646088657400,	-0.158274276527219570,	-0.158224906570095610,	-0.158175536217409820,	
+-0.158126165469285210,	-0.158076794325845150,	-0.158027422787212680,	-0.157978050853512100,	-0.157928678524866390,	-0.157879305801398970,	-0.157829932683232870,	-0.157780559170492360,	
+-0.157731185263300460,	-0.157681810961780610,	-0.157632436266055780,	-0.157583061176250290,	-0.157533685692487160,	-0.157484309814889780,	-0.157434933543581230,	-0.157385556878685770,	
+-0.157336179820326410,	-0.157286802368626190,	-0.157237424523709370,	-0.157188046285699020,	-0.157138667654718540,	-0.157089288630890940,	-0.157039909214340580,	-0.156990529405190430,	
+-0.156941149203563950,	-0.156891768609584180,	-0.156842387623375410,	-0.156793006245060680,	-0.156743624474763420,	-0.156694242312606670,	-0.156644859758714760,	-0.156595476813210700,	
+-0.156546093476217920,	-0.156496709747859510,	-0.156447325628259750,	-0.156397941117541660,	-0.156348556215828300,	-0.156299170923243970,	-0.156249785239911730,	-0.156200399165955020,	
+-0.156151012701496870,	-0.156101625846661620,	-0.156052238601572300,	-0.156002850966352410,	-0.155953462941124940,	-0.155904074526014260,	-0.155854685721143390,	-0.155805296526635800,	
+-0.155755906942614510,	-0.155706516969203930,	-0.155657126606527030,	-0.155607735854707330,	-0.155558344713867840,	-0.155508953184132940,	-0.155459561265625660,	-0.155410168958469460,	
+-0.155360776262787410,	-0.155311383178703850,	-0.155261989706341840,	-0.155212595845824420,	-0.155163201597275950,	-0.155113806960819470,	-0.155064411936578470,	-0.155015016524676000,	
+-0.154965620725236420,	-0.154916224538382800,	-0.154866827964238620,	-0.154817431002926940,	-0.154768033654572120,	-0.154718635919297190,	-0.154669237797225690,	-0.154619839288480660,	
+-0.154570440393186460,	-0.154521041111466170,	-0.154471641443443270,	-0.154422241389240820,	-0.154372840948983210,	-0.154323440122793500,	-0.154274038910794780,	-0.154224637313111370,	
+-0.154175235329866350,	-0.154125832961183260,	-0.154076430207185170,	-0.154027027067996420,	-0.153977623543740120,	-0.153928219634539730,	-0.153878815340518370,	-0.153829410661800420,	
+-0.153780005598508930,	-0.153730600150767420,	-0.153681194318699000,	-0.153631788102428000,	-0.153582381502077560,	-0.153532974517771150,	-0.153483567149631850,	-0.153434159397784100,	
+-0.153384751262350930,	-0.153335342743455450,	-0.153285933841222080,	-0.153236524555773830,	-0.153187114887234300,	-0.153137704835726530,	-0.153088294401374920,	-0.153038883584302590,	
+-0.152989472384633060,	-0.152940060802489420,	-0.152890648837996050,	-0.152841236491276070,	-0.152791823762452980,	-0.152742410651649900,	-0.152692997158991230,	-0.152643583284600070,	
+-0.152594169028599960,	-0.152544754391113980,	-0.152495339372266530,	-0.152445923972180760,	-0.152396508190980190,	-0.152347092028787880,	-0.152297675485728280,	-0.152248258561924530,	
+-0.152198841257499660,	-0.152149423572578130,	-0.152100005507283060,	-0.152050587061737960,	-0.152001168236065960,	-0.151951749030391460,	-0.151902329444837610,	-0.151852909479527930,	
+-0.151803489134585550,	-0.151754068410134860,	-0.151704647306299010,	-0.151655225823201570,	-0.151605803960965600,	-0.151556381719715550,	-0.151506959099574540,	-0.151457536100666150,	
+-0.151408112723113500,	-0.151358688967040970,	-0.151309264832571730,	-0.151259840319828890,	-0.151210415428936900,	-0.151160990160018850,	-0.151111564513198350,	-0.151062138488598480,	
+-0.151012712086343730,	-0.150963285306557170,	-0.150913858149362400,	-0.150864430614882560,	-0.150815002703242080,	-0.150765574414564090,	-0.150716145748972160,	-0.150666716706589430,	
+-0.150617287287540340,	-0.150567857491948040,	-0.150518427319936090,	-0.150468996771627640,	-0.150419565847147140,	-0.150370134546617710,	-0.150320702870162530,	-0.150271270817906010,	
+-0.150221838389971300,	-0.150172405586482010,	-0.150122972407561280,	-0.150073538853333550,	-0.150024104923921990,	-0.149974670619450130,	-0.149925235940041170,	-0.149875800885819560,	
+-0.149826365456908470,	-0.149776929653431450,	-0.149727493475511650,	-0.149678056923273570,	-0.149628619996840350,	-0.149579182696335580,	-0.149529745021882400,	-0.149480306973605310,	
+-0.149430868551627460,	-0.149381429756071990,	-0.149331990587063400,	-0.149282551044724790,	-0.149233111129179840,	-0.149183670840551670,	-0.149134230178964770,	-0.149084789144542260,	
+-0.149035347737407810,	-0.148985905957684540,	-0.148936463805496940,	-0.148887021280968200,	-0.148837578384221870,	-0.148788135115381190,	-0.148738691474570610,	-0.148689247461913280,	
+-0.148639803077532830,	-0.148590358321552460,	-0.148540913194096620,	-0.148491467695288480,	-0.148442021825251680,	-0.148392575584109400,	-0.148343128971986120,	-0.148293681989005000,	
+-0.148244234635289240,	-0.148194786910963360,	-0.148145338816150500,	-0.148095890350974260,	-0.148046441515557880,	-0.147996992310025830,	-0.147947542734501310,	-0.147898092789107930,	
+-0.147848642473968890,	-0.147799191789208670,	-0.147749740734950450,	-0.147700289311317900,	-0.147650837518434190,	-0.147601385356423840,	-0.147551932825409990,	-0.147502479925516320,	
+-0.147453026656866020,	-0.147403573019583590,	-0.147354119013792250,	-0.147304664639615140,	-0.147255209897176800,	-0.147205754786600470,	-0.147156299308009750,	-0.147106843461527830,	
+-0.147057387247279240,	-0.147007930665387170,	-0.146958473715975290,	-0.146909016399166790,	-0.146859558715086160,	-0.146810100663856660,	-0.146760642245601900,	-0.146711183460445090,	
+-0.146661724308510770,	-0.146612264789922150,	-0.146562804904802860,	-0.146513344653276120,	-0.146463884035466420,	-0.146414423051497070,	-0.146364961701491190,	-0.146315499985573330,	
+-0.146266037903866750,	-0.146216575456495080,	-0.146167112643581510,	-0.146117649465250600,	-0.146068185921625570,	-0.146018722012830090,	-0.145969257738987330,	-0.145919793100221910,	
+-0.145870328096656980,	-0.145820862728416240,	-0.145771396995622890,	-0.145721930898401490,	-0.145672464436875290,	-0.145622997611167900,	-0.145573530421402590,	-0.145524062867703860,	
+-0.145474594950195020,	-0.145425126668999680,	-0.145375658024241070,	-0.145326189016043740,	-0.145276719644530980,	-0.145227249909825970,	-0.145177779812053260,	-0.145128309351336110,	
+-0.145078838527798180,	-0.145029367341562710,	-0.144979895792754280,	-0.144930423881496070,	-0.144880951607911840,	-0.144831478972124780,	-0.144782005974259470,	-0.144732532614439140,	
+-0.144683058892787490,	-0.144633584809427730,	-0.144584110364484460,	-0.144534635558080910,	-0.144485160390340760,	-0.144435684861387280,	-0.144386208971345050,	-0.144336732720337260,	
+-0.144287256108487220,	-0.144237779135919480,	-0.144188301802757300,	-0.144138824109124350,	-0.144089346055143900,	-0.144039867640940510,	-0.143990388866637480,	-0.143940909732358460,	
+-0.143891430238226730,	-0.143841950384366870,	-0.143792470170902130,	-0.143742989597956230,	-0.143693508665652390,	-0.143644027374115250,	-0.143594545723468000,	-0.143545063713834410,	
+-0.143495581345337710,	-0.143446098618102510,	-0.143396615532252080,	-0.143347132087909640,	-0.143297648285199810,	-0.143248164124245870,	-0.143198679605171520,	-0.143149194728100030,	
+-0.143099709493156010,	-0.143050223900462680,	-0.143000737950143810,	-0.142951251642322670,	-0.142901764977123810,	-0.142852277954670560,	-0.142802790575086630,	-0.142753302838495240,	
+-0.142703814745021060,	-0.142654326294787360,	-0.142604837487917800,	-0.142555348324535730,	-0.142505858804765740,	-0.142456368928731090,	-0.142406878696555080,	-0.142357388108362320,	
+-0.142307897164276080,	-0.142258405864420100,	-0.142208914208917650,	-0.142159422197893380,	-0.142109929831470560,	-0.142060437109772900,	-0.142010944032923690,	-0.141961450601047590,	
+-0.141911956814267850,	-0.141862462672708220,	-0.141812968176491970,	-0.141763473325743770,	-0.141713978120586890,	-0.141664482561145060,	-0.141614986647541570,	-0.141565490379901040,	
+-0.141515993758346810,	-0.141466496783002600,	-0.141416999453991690,	-0.141367501771438750,	-0.141318003735467020,	-0.141268505346199860,	-0.141219006603761880,	-0.141169507508276370,	
+-0.141120008059867100,	-0.141070508258657360,	-0.141021008104771810,	-0.140971507598333710,	-0.140922006739466870,	-0.140872505528294560,	-0.140823003964941430,	-0.140773502049530790,	
+-0.140723999782186390,	-0.140674497163031570,	-0.140624994192190910,	-0.140575490869787790,	-0.140525987195945950,	-0.140476483170788670,	-0.140426978794440660,	-0.140377474067025170,	
+-0.140327968988665590,	-0.140278463559486500,	-0.140228957779611250,	-0.140179451649163620,	-0.140129945168266910,	-0.140080438337045780,	-0.140030931155623570,	-0.139981423624124020,	
+-0.139931915742670470,	-0.139882407511387560,	-0.139832898930398660,	-0.139783389999827480,	-0.139733880719797390,	-0.139684371090433050,	-0.139634861111857800,	-0.139585350784195370,	
+-0.139535840107569140,	-0.139486329082103730,	-0.139436817707922520,	-0.139387305985148810,	-0.139337793913907270,	-0.139288281494321260,	-0.139238768726514530,	-0.139189255610610460,	
+-0.139139742146733690,	-0.139090228335007530,	-0.139040714175555830,	-0.138991199668501900,	-0.138941684813970430,	-0.138892169612084730,	-0.138842654062968580,	-0.138793138166745380,	
+-0.138743621923539780,	-0.138694105333475120,	-0.138644588396675210,	-0.138595071113263360,	-0.138545553483364280,	-0.138496035507101320,	-0.138446517184598270,	-0.138396998515978500,	
+-0.138347479501366670,	-0.138297960140886130,	-0.138248440434660250,	-0.138198920382813730,	-0.138149399985469910,	-0.138099879242752550,	-0.138050358154785090,	-0.138000836721692170,	
+-0.137951314943597140,	-0.137901792820623810,	-0.137852270352895600,	-0.137802747540537120,	-0.137753224383671800,	-0.137703700882423400,	-0.137654177036915320,	-0.137604652847272220,	
+-0.137555128313617490,	-0.137505603436074960,	-0.137456078214767960,	-0.137406552649821210,	-0.137357026741358080,	-0.137307500489501970,	-0.137257973894377520,	-0.137208446956108120,	
+-0.137158919674817640,	-0.137109392050629390,	-0.137059864083668100,	-0.137010335774057190,	-0.136960807121920410,	-0.136911278127381160,	-0.136861748790564170,	-0.136812219111592800,	
+-0.136762689090590920,	-0.136713158727681830,	-0.136663628022990310,	-0.136614096976639700,	-0.136564565588753880,	-0.136515033859456180,	-0.136465501788871320,	-0.136415969377122750,	
+-0.136366436624333790,	-0.136316903530629170,	-0.136267370096132300,	-0.136217836320967010,	-0.136168302205256690,	-0.136118767749126040,	-0.136069232952698490,	-0.136019697816097850,	
+-0.135970162339447530,	-0.135920626522872230,	-0.135871090366495360,	-0.135821553870440790,	-0.135772017034831880,	-0.135722479859793380,	-0.135672942345448660,	-0.135623404491921590,	
+-0.135573866299335570,	-0.135524327767815340,	-0.135474788897484270,	-0.135425249688465810,	-0.135375710140884650,	-0.135326170254864210,	-0.135276630030528370,	-0.135227089468000490,	
+-0.135177548567405330,	-0.135128007328866290,	-0.135078465752507260,	-0.135028923838451610,	-0.134979381586824070,	-0.134929838997748100,	-0.134880296071347520,	-0.134830752807745790,	
+-0.134781209207067570,	-0.134731665269436360,	-0.134682120994975980,	-0.134632576383809850,	-0.134583031436062730,	-0.134533486151858030,	-0.134483940531319620,	-0.134434394574570900,	
+-0.134384848281736660,	-0.134335301652940280,	-0.134285754688305200,	-0.134236207387956190,	-0.134186659752016660,	-0.134137111780610470,	-0.134087563473861080,	-0.134038014831893200,	
+-0.133988465854830290,	-0.133938916542796220,	-0.133889366895914410,	-0.133839816914309630,	-0.133790266598105310,	-0.133740715947425310,	-0.133691164962393080,	-0.133641613643133400,	
+-0.133592061989769670,	-0.133542510002425780,	-0.133492957681225180,	-0.133443405026292650,	-0.133393852037751590,	-0.133344298715725450,	-0.133294745060339000,	-0.133245191071715700,	
+-0.133195636749979420,	-0.133146082095253610,	-0.133096527107663040,	-0.133046971787331130,	-0.132997416134381820,	-0.132947860148938500,	-0.132898303831126000,	-0.132848747181067710,	
+-0.132799190198887580,	-0.132749632884709010,	-0.132700075238656820,	-0.132650517260854420,	-0.132600958951425730,	-0.132551400310494230,	-0.132501841338184660,	-0.132452282034620480,	
+-0.132402722399925150,	-0.132353162434223460,	-0.132303602137638840,	-0.132254041510295240,	-0.132204480552316090,	-0.132154919263826190,	-0.132105357644948990,	-0.132055795695808390,	
+-0.132006233416527840,	-0.131956670807232170,	-0.131907107868044830,	-0.131857544599089690,	-0.131807981000490270,	-0.131758417072371350,	-0.131708852814856360,	-0.131659288228069240,	
+-0.131609723312133470,	-0.131560158067173830,	-0.131510592493313820,	-0.131461026590677290,	-0.131411460359387780,	-0.131361893799570060,	-0.131312326911347590,	-0.131262759694843860,	
+-0.131213192150183680,	-0.131163624277490510,	-0.131114056076888280,	-0.131064487548500470,	-0.131014918692451910,	-0.130965349508866010,	-0.130915779997866770,	-0.130866210159577640,	
+-0.130816639994123410,	-0.130767069501627560,	-0.130717498682214080,	-0.130667927536006370,	-0.130618356063129330,	-0.130568784263706360,	-0.130519212137861440,	-0.130469639685718060,	
+-0.130420066907401020,	-0.130370493803033780,	-0.130320920372739900,	-0.130271346616644160,	-0.130221772534870020,	-0.130172198127541490,	-0.130122623394782010,	-0.130073048336716400,	
+-0.130023472953468190,	-0.129973897245161290,	-0.129924321211919190,	-0.129874744853866740,	-0.129825168171127440,	-0.129775591163825200,	-0.129726013832083540,	-0.129676436176027310,	
+-0.129626858195779960,	-0.129577279891465470,	-0.129527701263207370,	-0.129478122311130430,	-0.129428543035358200,	-0.129378963436014150,	-0.129329383513223150,	-0.129279803267108690,	
+-0.129230222697794720,	-0.129180641805404760,	-0.129131060590063600,	-0.129081479051894820,	-0.129031897191022340,	-0.128982315007569680,	-0.128932732501661680,	-0.128883149673421820,	
+-0.128833566522974120,	-0.128783983050442030,	-0.128734399255950450,	-0.128684815139622850,	-0.128635230701583230,	-0.128585645941955070,	-0.128536060860863250,	-0.128486475458431280,	
+-0.128436889734783120,	-0.128387303690042310,	-0.128337717324333660,	-0.128288130637780720,	-0.128238543630507020,	-0.128188956302637410,	-0.128139368654295400,	-0.128089780685604950,	
+-0.128040192396689620,	-0.127990603787674270,	-0.127941014858682390,	-0.127891425609837990,	-0.127841836041264560,	-0.127792246153086990,	-0.127742655945428800,	-0.127693065418413990,	
+-0.127643474572166070,	-0.127593883406809880,	-0.127544291922469020,	-0.127494700119267390,	-0.127445107997328610,	-0.127395515556777470,	-0.127345922797737540,	-0.127296329720332390,	
+-0.127246736324686830,	-0.127197142610924440,	-0.127147548579169180,	-0.127097954229544650,	-0.127048359562175640,	-0.126998764577185730,	-0.126949169274698900,	-0.126899573654838730,	
+-0.126849977717730070,	-0.126800381463496450,	-0.126750784892261880,	-0.126701188004149900,	-0.126651590799285400,	-0.126601993277791920,	-0.126552395439793460,	-0.126502797285413580,	
+-0.126453198814777120,	-0.126403600028007680,	-0.126354000925228800,	-0.126304401506565360,	-0.126254801772140910,	-0.126205201722079470,	-0.126155601356504580,	-0.126106000675541120,	
+-0.126056399679312650,	-0.126006798367943210,	-0.125957196741556310,	-0.125907594800276860,	-0.125857992544228410,	-0.125808389973535000,	-0.125758787088320170,	-0.125709183888708830,	
+-0.125659580374824500,	-0.125609976546791240,	-0.125560372404732580,	-0.125510767948773440,	-0.125461163179037380,	-0.125411558095647970,	-0.125361952698730100,	-0.125312346988407370,	
+-0.125262740964803750,	-0.125213134628042840,	-0.125163527978249560,	-0.125113921015547440,	-0.125064313740060500,	-0.125014706151912350,	-0.124965098251227880,	-0.124915490038130670,	
+-0.124865881512744720,	-0.124816272675193630,	-0.124766663525602310,	-0.124717054064094320,	-0.124667444290793700,	-0.124617834205824020,	-0.124568223809310210,	-0.124518613101375820,	
+-0.124469002082144910,	-0.124419390751741060,	-0.124369779110289170,	-0.124320167157912820,	-0.124270554894735620,	-0.124220942320882470,	-0.124171329436476980,	-0.124121716241643160,	
+-0.124072102736504600,	-0.124022488921186220,	-0.123972874795811640,	-0.123923260360504860,	-0.123873645615389480,	-0.123824030560590420,	-0.123774415196231310,	-0.123724799522436150,	
+-0.123675183539328550,	-0.123625567247033430,	-0.123575950645674390,	-0.123526333735375480,	-0.123476716516260300,	-0.123427098988453750,	-0.123377481152079470,	-0.123327863007261030,	
+-0.123278244554123400,	-0.123228625792790130,	-0.123179006723385320,	-0.123129387346032540,	-0.123079767660856740,	-0.123030147667981510,	-0.122980527367530910,	-0.122930906759628560,	
+-0.122881285844399380,	-0.122831664621966980,	-0.122782043092455430,	-0.122732421255988320,	-0.122682799112690600,	-0.122633176662685890,	-0.122583553906098240,	-0.122533930843051250,	
+-0.122484307473669880,	-0.122434683798077750,	-0.122385059816398470,	-0.122335435528756980,	-0.122285810935276880,	-0.122236186036082270,	-0.122186560831296750,	-0.122136935321045280,	
+-0.122087309505451460,	-0.122037683384639370,	-0.121988056958732630,	-0.121938430227856190,	-0.121888803192133670,	-0.121839175851689140,	-0.121789548206646240,	-0.121739920257129920,	
+-0.121690292003263770,	-0.121640663445171910,	-0.121591034582977940,	-0.121541405416806830,	-0.121491775946782220,	-0.121442146173028150,	-0.121392516095668280,	-0.121342885714827560,	
+-0.121293255030629630,	-0.121243624043198120,	-0.121193992752657990,	-0.121144361159132880,	-0.121094729262746860,	-0.121045097063623580,	-0.120995464561888010,	-0.120945831757663750,	
+-0.120896198651074940,	-0.120846565242245170,	-0.120796931531299450,	-0.120747297518361390,	-0.120697663203555090,	-0.120648028587004190,	-0.120598393668833650,	-0.120548758449167130,	
+-0.120499122928128710,	-0.120449487105842050,	-0.120399850982432120,	-0.120350214558022560,	-0.120300577832737010,	-0.120250940806700470,	-0.120201303480036560,	-0.120151665852869400,	
+-0.120102027925322650,	-0.120052389697521260,	-0.120002751169588890,	-0.119953112341649650,	-0.119903473213827190,	-0.119853833786246480,	-0.119804194059031190,	-0.119754554032305410,	
+-0.119704913706192810,	-0.119655273080818360,	-0.119605632156305740,	-0.119555990932779020,	-0.119506349410361900,	-0.119456707589179340,	-0.119407065469355010,	-0.119357423051012570,	
+-0.119307780334277020,	-0.119258137319272030,	-0.119208494006121680,	-0.119158850394949670,	-0.119109206485880960,	-0.119059562279039230,	-0.119009917774548610,	-0.118960272972532750,	
+-0.118910627873116640,	-0.118860982476423970,	-0.118811336782578840,	-0.118761690791704930,	-0.118712044503927240,	-0.118662397919369430,	-0.118612751038155620,	-0.118563103860409500,	
+-0.118513456386256060,	-0.118463808615818980,	-0.118414160549221940,	-0.118364512186589930,	-0.118314863528046640,	-0.118265214573716210,	-0.118215565323722280,	-0.118165915778189880,	
+-0.118116265937242710,	-0.118066615801004860,	-0.118016965369600030,	-0.117967314643153230,	-0.117917663621788140,	-0.117868012305628910,	-0.117818360694799190,	-0.117768708789424010,	
+-0.117719056589627060,	-0.117669404095532460,	-0.117619751307263920,	-0.117570098224946450,	-0.117520444848703720,	-0.117470791178659880,	-0.117421137214938620,	-0.117371482957664960,	
+-0.117321828406962610,	-0.117272173562955220,	-0.117222518425767850,	-0.117172862995524190,	-0.117123207272348360,	-0.117073551256364080,	-0.117023894947696360,	-0.116974238346468900,	
+-0.116924581452805850,	-0.116874924266830910,	-0.116825266788669090,	-0.116775609018444100,	-0.116725950956280090,	-0.116676292602300770,	-0.116626633956631160,	-0.116576975019394960,	
+-0.116527315790716320,	-0.116477656270718950,	-0.116427996459527880,	-0.116378336357266830,	-0.116328675964059480,	-0.116279015280030900,	-0.116229354305304760,	-0.116179693040005250,	
+-0.116130031484256060,	-0.116080369638182250,	-0.116030707501907500,	-0.115981045075555980,	-0.115931382359251410,	-0.115881719353118820,	-0.115832056057281930,	-0.115782392471864910,	
+-0.115732728596991460,	-0.115683064432786640,	-0.115633399979374150,	-0.115583735236878160,	-0.115534070205422400,	-0.115484404885131900,	-0.115434739276130390,	-0.115385073378541580,	
+-0.115335407192490540,	-0.115285740718100980,	-0.115236073955497060,	-0.115186406904802520,	-0.115136739566142400,	-0.115087071939640430,	-0.115037404025420800,	-0.114987735823607200,	
+-0.114938067334324700,	-0.114888398557697040,	-0.114838729493848380,	-0.114789060142902450,	-0.114739390504984330,	-0.114689720580217720,	-0.114640050368726810,	-0.114590379870635330,	
+-0.114540709086068340,	-0.114491038015149580,	-0.114441366658003220,	-0.114391695014753020,	-0.114342023085524010,	-0.114292350870439940,	-0.114242678369624570,	-0.114193005583202920,	
+-0.114143332511298770,	-0.114093659154036280,	-0.114043985511539210,	-0.113994311583932630,	-0.113944637371340250,	-0.113894962873886270,	-0.113845288091694460,	-0.113795613024889870,	
+-0.113745937673596240,	-0.113696262037937770,	-0.113646586118038200,	-0.113596909914022600,	-0.113547233426014750,	-0.113497556654138800,	-0.113447879598518510,	-0.113398202259278980,	
+-0.113348524636543920,	-0.113298846730437120,	-0.113249168541083650,	-0.113199490068607260,	-0.113149811313132130,	-0.113100132274782050,	-0.113050452953682070,	-0.113000773349955950,	
+-0.112951093463727910,	-0.112901413295121700,	-0.112851732844262380,	-0.112802052111273740,	-0.112752371096279960,	-0.112702689799404810,	-0.112653008220773380,	-0.112603326360509450,	
+-0.112553644218737180,	-0.112503961795580370,	-0.112454279091164090,	-0.112404596105612110,	-0.112354912839048210,	-0.112305229291597460,	-0.112255545463383640,	-0.112205861354530950,	
+-0.112156176965163180,	-0.112106492295405400,	-0.112056807345381380,	-0.112007122115215350,	-0.111957436605031090,	-0.111907750814953660,	-0.111858064745106860,	-0.111808378395614890,	
+-0.111758691766601540,	-0.111709004858191890,	-0.111659317670509750,	-0.111609630203679300,	-0.111559942457824340,	-0.111510254433069960,	-0.111460566129539950,	-0.111410877547358080,	
+-0.111361188686649460,	-0.111311499547537860,	-0.111261810130147520,	-0.111212120434602210,	-0.111162430461027040,	-0.111112740209545800,	-0.111063049680282700,	-0.111013358873361540,	
+-0.110963667788907430,	-0.110913976427044130,	-0.110864284787895910,	-0.110814592871586530,	-0.110764900678241100,	-0.110715208207983430,	-0.110665515460937740,	-0.110615822437227810,	
+-0.110566129136978770,	-0.110516435560314420,	-0.110466741707358970,	-0.110417047578236230,	-0.110367353173071290,	-0.110317658491987990,	-0.110267963535110110,	-0.110218268302562730,	
+-0.110168572794469700,	-0.110118877010955240,	-0.110069180952143140,	-0.110019484618158540,	-0.109969788009125210,	-0.109920091125167430,	-0.109870393966408980,	-0.109820696532974970,	
+-0.109770998824989220,	-0.109721300842575990,	-0.109671602585859050,	-0.109621904054963550,	-0.109572205250013290,	-0.109522506171132520,	-0.109472806818445040,	-0.109423107192075990,	
+-0.109373407292149170,	-0.109323707118788390,	-0.109274006672118770,	-0.109224305952264150,	-0.109174604959348760,	-0.109124903693496420,	-0.109075202154832250,	-0.109025500343480090,	
+-0.108975798259564170,	-0.108926095903208310,	-0.108876393274537660,	-0.108826690373676020,	-0.108776987200747670,	-0.108727283755876400,	-0.108677580039187360,	-0.108627876050804370,	
+-0.108578171790851690,	-0.108528467259453140,	-0.108478762456733870,	-0.108429057382817680,	-0.108379352037828420,	-0.108329646421891200,	-0.108279940535129890,	-0.108230234377668710,	
+-0.108180527949631510,	-0.108130821251143430,	-0.108081114282328310,	-0.108031407043310380,	-0.107981699534213510,	-0.107931991755162830,	-0.107882283706282150,	-0.107832575387695780,	
+-0.107782866799527530,	-0.107733157941902550,	-0.107683448814944680,	-0.107633739418778180,	-0.107584029753526910,	-0.107534319819315980,	-0.107484609616269270,	-0.107434899144511030,	
+-0.107385188404165100,	-0.107335477395356630,	-0.107285766118209490,	-0.107236054572847480,	-0.107186342759395770,	-0.107136630677978210,	-0.107086918328719070,	-0.107037205711742190,	
+-0.106987492827172740,	-0.106937779675134560,	-0.106888066255751940,	-0.106838352569148700,	-0.106788638615450020,	-0.106738924394779750,	-0.106689209907262160,	-0.106639495153021110,	
+-0.106589780132181760,	-0.106540064844867970,	-0.106490349291204020,	-0.106440633471313730,	-0.106390917385322320,	-0.106341201033353610,	-0.106291484415531460,	-0.106241767531981040,	
+-0.106192050382826200,	-0.106142332968191230,	-0.106092615288199990,	-0.106042897342977660,	-0.105993179132648070,	-0.105943460657335540,	-0.105893741917163910,	-0.105844022912258390,	
+-0.105794303642742800,	-0.105744584108741440,	-0.105694864310378180,	-0.105645144247778210,	-0.105595423921065380,	-0.105545703330363990,	-0.105495982475797900,	-0.105446261357492290,	
+-0.105396539975571020,	-0.105346818330157980,	-0.105297096421378330,	-0.105247374249355930,	-0.105197651814215090,	-0.105147929116079690,	-0.105098206155074900,	-0.105048482931324600,	
+-0.104998759444953100,	-0.104949035696084240,	-0.104899311684843250,	-0.104849587411353970,	-0.104799862875740740,	-0.104750138078127400,	-0.104700413018639150,	-0.104650687697399870,	
+-0.104600962114533870,	-0.104551236270165030,	-0.104501510164418540,	-0.104451783797418280,	-0.104402057169288100,	-0.104352330280153230,	-0.104302603130137530,	-0.104252875719365340,	
+-0.104203148047960490,	-0.104153420116048240,	-0.104103691923752420,	-0.104053963471197390,	-0.104004234758506980,	-0.103954505785806450,	-0.103904776553219640,	-0.103855047060870900,	
+-0.103805317308884090,	-0.103755587297384450,	-0.103705857026495820,	-0.103656126496342550,	-0.103606395707048530,	-0.103556664658738960,	-0.103506933351537720,	-0.103457201785569160,	
+-0.103407469960957150,	-0.103357737877826900,	-0.103308005536302320,	-0.103258272936507270,	-0.103208540078566990,	-0.103158806962605350,	-0.103109073588746700,	-0.103059339957114910,	
+-0.103009606067835230,	-0.102959871921031520,	-0.102910137516828150,	-0.102860402855348980,	-0.102810667936719240,	-0.102760932761062840,	-0.102711197328504100,	-0.102661461639166940,	
+-0.102611725693176560,	-0.102561989490656850,	-0.102512253031732180,	-0.102462516316526450,	-0.102412779345164850,	-0.102363042117771310,	-0.102313304634469720,	-0.102263566895385310,	
+-0.102213828900641980,	-0.102164090650364090,	-0.102114352144675530,	-0.102064613383701530,	-0.102014874367565980,	-0.101965135096393270,	-0.101915395570307250,	-0.101865655789433210,	
+-0.101815915753895020,	-0.101766175463817040,	-0.101716434919323180,	-0.101666694120538680,	-0.101616953067587430,	-0.101567211760593810,	-0.101517470199681710,	-0.101467728384976390,	
+-0.101417986316601750,	-0.101368243994681680,	-0.101318501419341470,	-0.101268758590704990,	-0.101219015508896610,	-0.101169272174040260,	-0.101119528586261160,	-0.101069784745683250,	
+-0.101020040652430880,	-0.100970296306627960,	-0.100920551708399740,	-0.100870806857870140,	-0.100821061755163520,	-0.100771316400403810,	-0.100721570793716260,	-0.100671824935224770,	
+-0.100622078825053710,	-0.100572332463327030,	-0.100522585850169950,	-0.100472838985706410,	-0.100423091870060770,	-0.100373344503356960,	-0.100323596885720230,	-0.100273849017274500,	
+-0.100224100898143720,	-0.100174352528453120,	-0.100124603908326640,	-0.100074855037888650,	-0.100025105917263090,	-0.099975356546575203,	-0.099925606925948915,	-0.099875857055508624,	
+-0.099826106935378231,	-0.099776356565683025,	-0.099726605946546920,	-0.099676855078094304,	-0.099627103960449118,	-0.099577352593736609,	-0.099527600978080707,	-0.099477849113605812,	
+-0.099428097000435853,	-0.099378344638696089,	-0.099328592028510465,	-0.099278839170002922,	-0.099229086063298721,	-0.099179332708521806,	-0.099129579105796561,	-0.099079825255246917,	
+-0.099030071156998162,	-0.098980316811174224,	-0.098930562217899504,	-0.098880807377297916,	-0.098831052289494764,	-0.098781296954613990,	-0.098731541372779966,	-0.098681785544116635,	
+-0.098632029468749299,	-0.098582273146801888,	-0.098532516578398788,	-0.098482759763663955,	-0.098433002702722663,	-0.098383245395698871,	-0.098333487842716519,	-0.098283730043900883,	
+-0.098233971999375932,	-0.098184213709266041,	-0.098134455173695193,	-0.098084696392788634,	-0.098034937366670336,	-0.097985178095464698,	-0.097935418579295663,	-0.097885658818288535,	
+-0.097835898812567254,	-0.097786138562256222,	-0.097736378067479410,	-0.097686617328362091,	-0.097636856345028236,	-0.097587095117602232,	-0.097537333646208049,	-0.097487571930970976,	
+-0.097437809972014969,	-0.097388047769463998,	-0.097338285323443352,	-0.097288522634076988,	-0.097238759701489333,	-0.097188996525804316,	-0.097139233107147255,	-0.097089469445642118,	
+-0.097039705541413307,	-0.096989941394584792,	-0.096940177005281861,	-0.096890412373628484,	-0.096840647499749077,	-0.096790882383767610,	-0.096741117025809384,	-0.096691351425998356,	
+-0.096641585584458956,	-0.096591819501315151,	-0.096542053176692233,	-0.096492286610714198,	-0.096442519803505433,	-0.096392752755189923,	-0.096342985465892983,	-0.096293217935738570,	
+-0.096243450164850683,	-0.096193682153354609,	-0.096143913901374320,	-0.096094145409034257,	-0.096044376676458376,	-0.095994607703772009,	-0.095944838491099110,	-0.095895069038564124,	
+-0.095845299346291032,	-0.095795529414405112,	-0.095745759243030387,	-0.095695988832291259,	-0.095646218182311712,	-0.095596447293217063,	-0.095546676165131295,	-0.095496904798178836,	
+-0.095447133192483685,	-0.095397361348171131,	-0.095347589265365171,	-0.095297816944189803,	-0.095248044384770331,	-0.095198271587230751,	-0.095148498551695493,	-0.095098725278288540,	
+-0.095048951767135223,	-0.094999178018359526,	-0.094949404032085891,	-0.094899629808438288,	-0.094849855347542061,	-0.094800080649521196,	-0.094750305714500133,	-0.094700530542602857,	
+-0.094650755133954698,	-0.094600979488679640,	-0.094551203606902154,	-0.094501427488746209,	-0.094451651134337136,	-0.094401874543798933,	-0.094352097717255598,	-0.094302320654832475,	
+-0.094252543356653534,	-0.094202765822843246,	-0.094152988053525608,	-0.094103210048825922,	-0.094053431808868229,	-0.094003653333776943,	-0.093953874623676090,	-0.093904095678690985,	
+-0.093854316498945656,	-0.093804537084564515,	-0.093754757435671604,	-0.093704977552392238,	-0.093655197434850429,	-0.093605417083170619,	-0.093555636497476835,	-0.093505855677894406,	
+-0.093456074624547317,	-0.093406293337560065,	-0.093356511817056620,	-0.093306730063162341,	-0.093256948076001239,	-0.093207165855697327,	-0.093157383402375948,	-0.093107600716161101,	
+-0.093057817797177256,	-0.093008034645548424,	-0.092958251261399949,	-0.092908467644855844,	-0.092858683796040564,	-0.092808899715078136,	-0.092759115402093903,	-0.092709330857211877,	
+-0.092659546080556529,	-0.092609761072251884,	-0.092559975832423258,	-0.092510190361194705,	-0.092460404658690681,	-0.092410618725035185,	-0.092360832560353601,	-0.092311046164769928,	
+-0.092261259538408205,	-0.092211472681393764,	-0.092161685593850642,	-0.092111898275903312,	-0.092062110727675797,	-0.092012322949293443,	-0.091962534940880289,	-0.091912746702560791,	
+-0.091862958234458975,	-0.091813169536700212,	-0.091763380609408529,	-0.091713591452708396,	-0.091663802066723837,	-0.091614012451580226,	-0.091564222607401574,	-0.091514432534312365,	
+-0.091464642232436638,	-0.091414851701899738,	-0.091365060942825718,	-0.091315269955338604,	-0.091265478739563755,	-0.091215687295625208,	-0.091165895623647436,	-0.091116103723754491,	
+-0.091066311596071731,	-0.091016519240723182,	-0.090966726657833341,	-0.090916933847526249,	-0.090867140809927249,	-0.090817347545160410,	-0.090767554053350200,	-0.090717760334620659,	
+-0.090667966389097160,	-0.090618172216903742,	-0.090568377818164902,	-0.090518583193004667,	-0.090468788341548423,	-0.090418993263920208,	-0.090369197960244063,	-0.090319402430645360,	
+-0.090269606675248165,	-0.090219810694176950,	-0.090170014487555752,	-0.090120218055509974,	-0.090070421398163653,	-0.090020624515641273,	-0.089970827408066889,	-0.089921030075565872,	
+-0.089871232518262290,	-0.089821434736280625,	-0.089771636729744933,	-0.089721838498780584,	-0.089672040043511647,	-0.089622241364062605,	-0.089572442460557511,	-0.089522643333121765,	
+-0.089472843981879407,	-0.089423044406954935,	-0.089373244608472416,	-0.089323444586557221,	-0.089273644341333419,	-0.089223843872925063,	-0.089174043181457552,	-0.089124242267054912,	
+-0.089074441129841683,	-0.089024639769941905,	-0.088974838187480962,	-0.088925036382582923,	-0.088875234355372298,	-0.088825432105973143,	-0.088775629634510855,	-0.088725826941109490,	
+-0.088676024025893557,	-0.088626220888987126,	-0.088576417530515580,	-0.088526613950602989,	-0.088476810149373863,	-0.088427006126952284,	-0.088377201883463610,	-0.088327397419031950,	
+-0.088277592733781343,	-0.088227787827837204,	-0.088177982701323585,	-0.088128177354365012,	-0.088078371787085566,	-0.088028565999610620,	-0.087978759992064254,	-0.087928953764571008,	
+-0.087879147317254921,	-0.087829340650241408,	-0.087779533763654549,	-0.087729726657618856,	-0.087679919332258396,	-0.087630111787698584,	-0.087580304024063499,	-0.087530496041477640,	
+-0.087480687840065116,	-0.087430879419951299,	-0.087381070781260298,	-0.087331261924116166,	-0.087281452848644331,	-0.087231643554968846,	-0.087181834043214265,	-0.087132024313504669,	
+-0.087082214365965430,	-0.087032404200720670,	-0.086982593817894902,	-0.086932783217612206,	-0.086882972399997982,	-0.086833161365176340,	-0.086783350113271790,	-0.086733538644408414,	
+-0.086683726958711654,	-0.086633915056305563,	-0.086584102937314680,	-0.086534290601863101,	-0.086484478050076252,	-0.086434665282078188,	-0.086384852297993475,	-0.086335039097946181,	
+-0.086285225682061734,	-0.086235412050464227,	-0.086185598203277744,	-0.086135784140627697,	-0.086085969862638209,	-0.086036155369433778,	-0.085986340661138527,	-0.085936525737877870,	
+-0.085886710599775887,	-0.085836895246957146,	-0.085787079679545700,	-0.085737263897667018,	-0.085687447901445168,	-0.085637631691004704,	-0.085587815266469705,	-0.085537998627965614,	
+-0.085488181775616540,	-0.085438364709546993,	-0.085388547429881112,	-0.085338729936744295,	-0.085288912230260652,	-0.085239094310554278,	-0.085189276177750628,	-0.085139457831973769,	
+-0.085089639273348283,	-0.085039820501998251,	-0.084990001518049099,	-0.084940182321624952,	-0.084890362912850362,	-0.084840543291849396,	-0.084790723458747538,	-0.084740903413668855,	
+-0.084691083156737929,	-0.084641262688078839,	-0.084591442007817041,	-0.084541621116076632,	-0.084491800012982177,	-0.084441978698657771,	-0.084392157173228871,	-0.084342335436819571,	
+-0.084292513489553994,	-0.084242691331557581,	-0.084192868962954429,	-0.084143046383869116,	-0.084093223594425739,	-0.084043400594749740,	-0.083993577384965240,	-0.083943753965196807,	
+-0.083893930335568537,	-0.083844106496205884,	-0.083794282447232971,	-0.083744458188774351,	-0.083694633720954134,	-0.083644809043897789,	-0.083594984157729410,	-0.083545159062573579,	
+-0.083495333758554405,	-0.083445508245797342,	-0.083395682524426501,	-0.083345856594566017,	-0.083296030456341333,	-0.083246204109876570,	-0.083196377555296297,	-0.083146550792724636,	
+-0.083096723822287041,	-0.083046896644107637,	-0.082997069258311004,	-0.082947241665021237,	-0.082897413864363820,	-0.082847585856462860,	-0.082797757641442940,	-0.082747929219428182,	
+-0.082698100590544055,	-0.082648271754914668,	-0.082598442712664588,	-0.082548613463917980,	-0.082498784008800272,	-0.082448954347435599,	-0.082399124479948543,	-0.082349294406463242,	
+-0.082299464127105135,	-0.082249633641998374,	-0.082199802951267095,	-0.082149972055036741,	-0.082100140953431461,	-0.082050309646575822,	-0.082000478134593963,	-0.081950646417611364,	
+-0.081900814495752150,	-0.081850982369140887,	-0.081801150037901726,	-0.081751317502160151,	-0.081701484762040269,	-0.081651651817666676,	-0.081601818669163509,	-0.081551985316656236,	
+-0.081502151760269009,	-0.081452318000126395,	-0.081402484036352543,	-0.081352649869072924,	-0.081302815498411687,	-0.081252980924492957,	-0.081203146147442229,	-0.081153311167383627,	
+-0.081103475984441759,	-0.081053640598740748,	-0.081003805010406077,	-0.080953969219561897,	-0.080904133226332803,	-0.080854297030842917,	-0.080804460633217737,	-0.080754624033581413,	
+-0.080704787232058525,	-0.080654950228773226,	-0.080605113023850983,	-0.080555275617415975,	-0.080505438009592770,	-0.080455600200505531,	-0.080405762190279728,	-0.080355923979039526,	
+-0.080306085566909061,	-0.080256246954013830,	-0.080206408140477983,	-0.080156569126426117,	-0.080106729911982380,	-0.080056890497272271,	-0.080007050882419925,	-0.079957211067549966,	
+-0.079907371052786530,	-0.079857530838255100,	-0.079807690424079855,	-0.079757849810385376,	-0.079708008997295826,	-0.079658167984936704,	-0.079608326773432159,	-0.079558485362906800,	
+-0.079508643753484792,	-0.079458801945291604,	-0.079408959938451415,	-0.079359117733088833,	-0.079309275329328008,	-0.079259432727294438,	-0.079209589927112287,	-0.079159746928905719,	
+-0.079109903732800219,	-0.079060060338919977,	-0.079010216747389561,	-0.078960372958333178,	-0.078910528971876295,	-0.078860684788143107,	-0.078810840407258193,	-0.078760995829345731,	
+-0.078711151054531234,	-0.078661306082938851,	-0.078611460914693204,	-0.078561615549918459,	-0.078511769988740127,	-0.078461924231282371,	-0.078412078277669786,	-0.078362232128026579,	
+-0.078312385782478233,	-0.078262539241148926,	-0.078212692504162823,	-0.078162845571645420,	-0.078112998443720924,	-0.078063151120513916,	-0.078013303602148601,	-0.077963455888750463,	
+-0.077913607980443680,	-0.077863759877352876,	-0.077813911579602241,	-0.077764063087317259,	-0.077714214400622136,	-0.077664365519641454,	-0.077614516444499432,	-0.077564667175321553,	
+-0.077514817712232009,	-0.077464968055355424,	-0.077415118204815975,	-0.077365268160739173,	-0.077315417923249197,	-0.077265567492470238,	-0.077215716868527809,	-0.077165866051546073,	
+-0.077116015041649680,	-0.077066163838962809,	-0.077016312443610971,	-0.076966460855718344,	-0.076916609075409578,	-0.076866757102808839,	-0.076816904938041650,	-0.076767052581232190,	
+-0.076717200032505109,	-0.076667347291984586,	-0.076617494359796132,	-0.076567641236063938,	-0.076517787920912655,	-0.076467934414466449,	-0.076418080716850856,	-0.076368226828190056,	
+-0.076318372748608254,	-0.076268518478230948,	-0.076218664017182358,	-0.076168809365587106,	-0.076118954523569385,	-0.076069099491254732,	-0.076019244268767314,	-0.075969388856231793,	
+-0.075919533253772362,	-0.075869677461514531,	-0.075819821479582508,	-0.075769965308100928,	-0.075720108947193998,	-0.075670252396987242,	-0.075620395657604852,	-0.075570538729171480,	
+-0.075520681611811302,	-0.075470824305649872,	-0.075420966810811382,	-0.075371109127420469,	-0.075321251255601351,	-0.075271393195479541,	-0.075221534947179244,	-0.075171676510824681,	
+-0.075121817886541362,	-0.075071959074453493,	-0.075022100074685724,	-0.074972240887362276,	-0.074922381512608660,	-0.074872521950549081,	-0.074822662201308218,	-0.074772802265010235,	
+-0.074722942141780699,	-0.074673081831743815,	-0.074623221335024220,	-0.074573360651746134,	-0.074523499782035083,	-0.074473638726015284,	-0.074423777483811390,	-0.074373916055547606,	
+-0.074324054441349471,	-0.074274192641341205,	-0.074224330655647014,	-0.074174468484392436,	-0.074124606127701692,	-0.074074743585699432,	-0.074024880858509876,	-0.073975017946258548,	
+-0.073925154849069682,	-0.073875291567067930,	-0.073825428100377510,	-0.073775564449123948,	-0.073725700613431491,	-0.073675836593424776,	-0.073625972389228023,	-0.073576108000966783,	
+-0.073526243428765278,	-0.073476378672748172,	-0.073426513733039656,	-0.073376648609765310,	-0.073326783303049342,	-0.073276917813015971,	-0.073227052139790749,	-0.073177186283497897,	
+-0.073127320244262092,	-0.073077454022207528,	-0.073027587617459769,	-0.072977721030143050,	-0.072927854260382022,	-0.072877987308300932,	-0.072828120174025290,	-0.072778252857679374,	
+-0.072728385359387804,	-0.072678517679274843,	-0.072628649817466029,	-0.072578781774085582,	-0.072528913549258181,	-0.072479045143108059,	-0.072429176555760769,	-0.072379307787340530,	
+-0.072329438837972021,	-0.072279569707779476,	-0.072229700396888460,	-0.072179830905423181,	-0.072129961233507886,	-0.072080091381268127,	-0.072030221348828138,	-0.071980351136312598,	
+-0.071930480743845740,	-0.071880610171553130,	-0.071830739419558975,	-0.071780868487987995,	-0.071730997376964381,	-0.071681126086613728,	-0.071631254617060255,	-0.071581382968428642,	
+-0.071531511140843135,	-0.071481639134429287,	-0.071431766949311346,	-0.071381894585613989,	-0.071332022043461452,	-0.071282149322979299,	-0.071232276424291779,	-0.071182403347523127,	
+-0.071132530092798907,	-0.071082656660243354,	-0.071032783049981160,	-0.070982909262136573,	-0.070933035296835159,	-0.070883161154201138,	-0.070833286834359230,	-0.070783412337433654,	
+-0.070733537663550006,	-0.070683662812832504,	-0.070633787785405841,	-0.070583912581394265,	-0.070534037200923355,	-0.070484161644117346,	-0.070434285911100944,	-0.070384410001998368,	
+-0.070334533916935227,	-0.070284657656035740,	-0.070234781219424169,	-0.070184904607226095,	-0.070135027819565751,	-0.070085150856567843,	-0.070035273718356605,	-0.069985396405057645,	
+-0.069935518916795170,	-0.069885641253693911,	-0.069835763415878105,	-0.069785885403473330,	-0.069736007216603849,	-0.069686128855394353,	-0.069636250319969076,	-0.069586371610453626,	
+-0.069536492726972252,	-0.069486613669649630,	-0.069436734438610051,	-0.069386855033979067,	-0.069336975455880939,	-0.069287095704440388,	-0.069237215779781647,	-0.069187335682030310,	
+-0.069137455411310625,	-0.069087574967746868,	-0.069037694351464618,	-0.068987813562588138,	-0.068937932601242105,	-0.068888051467550809,	-0.068838170161639831,	-0.068788288683633431,	
+-0.068738407033656301,	-0.068688525211832704,	-0.068638643218288248,	-0.068588761053147179,	-0.068538878716534204,	-0.068488996208573599,	-0.068439113529390944,	-0.068389230679110499,	
+-0.068339347657856986,	-0.068289464465754651,	-0.068239581102929103,	-0.068189697569504604,	-0.068139813865605414,	-0.068089929991357129,	-0.068040045946884037,	-0.067990161732310817,	
+-0.067940277347761743,	-0.067890392793362425,	-0.067840508069237124,	-0.067790623175510559,	-0.067740738112306992,	-0.067690852879752017,	-0.067640967477969910,	-0.067591081907085390,	
+-0.067541196167222720,	-0.067491310258507506,	-0.067441424181064011,	-0.067391537935016954,	-0.067341651520490611,	-0.067291764937610590,	-0.067241878186501153,	-0.067191991267286574,	
+-0.067142104180092449,	-0.067092216925043080,	-0.067042329502263159,	-0.066992441911876977,	-0.066942554154010139,	-0.066892666228786909,	-0.066842778136332007,	-0.066792889876769734,	
+-0.066743001450225659,	-0.066693112856824097,	-0.066643224096689740,	-0.066593335169946893,	-0.066543446076721136,	-0.066493556817136770,	-0.066443667391318517,	-0.066393777799390652,	
+-0.066343888041478782,	-0.066293998117707184,	-0.066244108028200160,	-0.066194217773083305,	-0.066144327352480908,	-0.066094436766517689,	-0.066044546015317937,	-0.065994655099007260,	
+-0.065944764017709948,	-0.065894872771550733,	-0.065844981360653879,	-0.065795089785145033,	-0.065745198045148445,	-0.065695306140788862,	-0.065645414072190586,	-0.065595521839479212,	
+-0.065545629442779030,	-0.065495736882214772,	-0.065445844157910729,	-0.065395951269992522,	-0.065346058218584441,	-0.065296165003811205,	-0.065246271625797117,	-0.065196378084667786,	
+-0.065146484380547529,	-0.065096590513560607,	-0.065046696483832642,	-0.064996802291487951,	-0.064946907936651241,	-0.064897013419446828,	-0.064847118740000320,	-0.064797223898436021,	
+-0.064747328894878664,	-0.064697433729452539,	-0.064647538402283267,	-0.064597642913495151,	-0.064547747263212926,	-0.064497851451560895,	-0.064447955478664679,	-0.064398059344648567,	
+-0.064348163049637322,	-0.064298266593755204,	-0.064248369977127878,	-0.064198473199879619,	-0.064148576262134743,	-0.064098679164018860,	-0.064048781905656285,	-0.063998884487171753,	
+-0.063948986908689567,	-0.063899089170335363,	-0.063849191272233430,	-0.063799293214508529,	-0.063749394997284936,	-0.063699496620688301,	-0.063649598084842940,	-0.063599699389873560,	
+-0.063549800535904505,	-0.063499901523061397,	-0.063450002351468526,	-0.063400103021250639,	-0.063350203532532068,	-0.063300303885438419,	-0.063250404080094025,	-0.063200504116623160,	
+-0.063150603995151489,	-0.063100703715803313,	-0.063050803278703368,	-0.063000902683975971,	-0.062951001931746770,	-0.062901101022140055,	-0.062851199955280587,	-0.062801298731292685,	
+-0.062751397350301968,	-0.062701495812432770,	-0.062651594117809822,	-0.062601692266557443,	-0.062551790258801282,	-0.062501888094665656,	-0.062451985774275298,	-0.062402083297754533,	
+-0.062352180665229004,	-0.062302277876823027,	-0.062252374932661350,	-0.062202471832868297,	-0.062152568577569504,	-0.062102665166889288,	-0.062052761600951974,	-0.062002857879883196,	
+-0.061952954003807272,	-0.061903049972848963,	-0.061853145787132580,	-0.061803241446783785,	-0.061753336951926883,	-0.061703432302686635,	-0.061653527499187365,	-0.061603622541554721,	
+-0.061553717429913023,	-0.061503812164387030,	-0.061453906745101060,	-0.061404001172180769,	-0.061354095445750476,	-0.061304189565934947,	-0.061254283532858493,	-0.061204377346646778,	
+-0.061154471007424119,	-0.061104564515314840,	-0.061054657870444597,	-0.061004751072937700,	-0.060954844122918933,	-0.060904937020512612,	-0.060855029765844386,	-0.060805122359038587,	
+-0.060755214800219989,	-0.060705307089512904,	-0.060655399227042994,	-0.060605491212934591,	-0.060555583047312456,	-0.060505674730300926,	-0.060455766262025645,	-0.060405857642610951,	
+-0.060355948872181618,	-0.060306039950861964,	-0.060256130878777653,	-0.060206221656053015,	-0.060156312282812381,	-0.060106402759181408,	-0.060056493085284435,	-0.060006583261246221,	
+-0.059956673287191106,	-0.059906763163244760,	-0.059856852889531499,	-0.059806942466176106,	-0.059757031893302913,	-0.059707121171037582,	-0.059657210299504451,	-0.059607299278828296,	
+-0.059557388109133448,	-0.059507476790545570,	-0.059457565323189007,	-0.059407653707188528,	-0.059357741942668470,	-0.059307830029754496,	-0.059257917968570953,	-0.059208005759242170,	
+-0.059158093401893819,	-0.059108180896650230,	-0.059058268243636192,	-0.059008355442976036,	-0.058958442494795441,	-0.058908529399218736,	-0.058858616156370704,	-0.058808702766375689,	
+-0.058758789229359371,	-0.058708875545446071,	-0.058658961714760580,	-0.058609047737427249,	-0.058559133613571734,	-0.058509219343318389,	-0.058459304926791994,	-0.058409390364116895,	
+-0.058359475655418769,	-0.058309560800821947,	-0.058259645800451225,	-0.058209730654430941,	-0.058159815362886780,	-0.058109899925943079,	-0.058059984343724183,	-0.058010068616355770,	
+-0.057960152743962184,	-0.057910236726668222,	-0.057860320564598215,	-0.057810404257877861,	-0.057760487806631490,	-0.057710571210983899,	-0.057660654471059440,	-0.057610737586983783,	
+-0.057560820558881287,	-0.057510903386876741,	-0.057460986071094490,	-0.057411068611660218,	-0.057361151008698277,	-0.057311233262333450,	-0.057261315372690108,	-0.057211397339893909,	
+-0.057161479164069225,	-0.057111560845340401,	-0.057061642383833114,	-0.057011723779671723,	-0.056961805032981018,	-0.056911886143885364,	-0.056861967112510431,	-0.056812047938980585,	
+-0.056762128623420616,	-0.056712209165954888,	-0.056662289566709073,	-0.056612369825807543,	-0.056562449943375080,	-0.056512529919536050,	-0.056462609754416145,	-0.056412689448139708,	
+-0.056362769000831550,	-0.056312848412616030,	-0.056262927683618826,	-0.056213006813964309,	-0.056163085803776831,	-0.056113164653182078,	-0.056063243362304414,	-0.056013321931268643,	
+-0.055963400360199124,	-0.055913478649221547,	-0.055863556798460272,	-0.055813634808040108,	-0.055763712678085414,	-0.055713790408721875,	-0.055663868000073870,	-0.055613945452266188,	
+-0.055564022765423202,	-0.055514099939670596,	-0.055464176975132749,	-0.055414253871934452,	-0.055364330630200083,	-0.055314407250055327,	-0.055264483731624556,	-0.055214560075032573,	
+-0.055164636280403752,	-0.055114712347863776,	-0.055064788277537025,	-0.055014864069547857,	-0.054964939724021972,	-0.054915015241083741,	-0.054865090620857968,	-0.054815165863469031,	
+-0.054765240969042617,	-0.054715315937703103,	-0.054665390769575294,	-0.054615465464783568,	-0.054565540023453624,	-0.054515614445709834,	-0.054465688731677002,	-0.054415762881479500,	
+-0.054365836895243040,	-0.054315910773091988,	-0.054265984515151161,	-0.054216058121544924,	-0.054166131592398990,	-0.054116204927837724,	-0.054066278127985506,	-0.054016351192968035,	
+-0.053966424122909681,	-0.053916496917935271,	-0.053866569578169175,	-0.053816642103737100,	-0.053766714494763418,	-0.053716786751372946,	-0.053666858873690070,	-0.053616930861840488,	
+-0.053567002715948574,	-0.053517074436139157,	-0.053467146022536612,	-0.053417217475266648,	-0.053367288794453634,	-0.053317359980222405,	-0.053267431032697328,	-0.053217501952004115,	
+-0.053167572738267152,	-0.053117643391610812,	-0.053067713912160808,	-0.053017784300041511,	-0.052967854555377766,	-0.052917924678293933,	-0.052867994668915730,	-0.052818064527367550,	
+-0.052768134253774197,	-0.052718203848260071,	-0.052668273310950885,	-0.052618342641971010,	-0.052568411841445277,	-0.052518480909498066,	-0.052468549846255104,	-0.052418618651840769,	
+-0.052368687326379885,	-0.052318755869996833,	-0.052268824282817344,	-0.052218892564965785,	-0.052168960716566563,	-0.052119028737745376,	-0.052069096628626611,	-0.052019164389335112,	
+-0.051969232019995260,	-0.051919299520732771,	-0.051869366891672028,	-0.051819434132937874,	-0.051769501244654688,	-0.051719568226948190,	-0.051669635079942773,	-0.051619701803763268,	
+-0.051569768398534069,	-0.051519834864380887,	-0.051469901201428123,	-0.051419967409800607,	-0.051370033489622720,	-0.051320099441020200,	-0.051270165264117429,	-0.051220230959039249,	
+-0.051170296525910042,	-0.051120361964855539,	-0.051070427276000134,	-0.051020492459468214,	-0.050970557515385512,	-0.050920622443876414,	-0.050870687245065757,	-0.050820751919077936,	
+-0.050770816466038683,	-0.050720880886072392,	-0.050670945179303893,	-0.050621009345857587,	-0.050571073385859207,	-0.050521137299433139,	-0.050471201086704227,	-0.050421264747796873,	
+-0.050371328282836796,	-0.050321391691948401,	-0.050271454975256528,	-0.050221518132885570,	-0.050171581164961267,	-0.050121644071608004,	-0.050071706852950190,	-0.050021769509113558,	
+-0.049971832040222493,	-0.049921894446401854,	-0.049871956727776029,	-0.049822018884470763,	-0.049772080916610451,	-0.049722142824319929,	-0.049672204607723612,	-0.049622266266947226,	
+-0.049572327802115172,	-0.049522389213352301,	-0.049472450500783006,	-0.049422511664533035,	-0.049372572704726787,	-0.049322633621489108,	-0.049272694414944397,	-0.049222755085218395,	
+-0.049172815632435501,	-0.049122876056720131,	-0.049072936358198010,	-0.049022996536993553,	-0.048973056593231604,	-0.048923116527036563,	-0.048873176338534184,	-0.048823236027848854,	
+-0.048773295595105438,	-0.048723355040428344,	-0.048673414363943304,	-0.048623473565774726,	-0.048573532646047461,	-0.048523591604885931,	-0.048473650442415854,	-0.048423709158761659,	
+-0.048373767754048190,	-0.048323826228399855,	-0.048273884581942400,	-0.048223942814800233,	-0.048174000927098205,	-0.048124058918960738,	-0.048074116790513564,	-0.048024174541881098,	
+-0.047974232173187754,	-0.047924289684559272,	-0.047874347076120066,	-0.047824404347994988,	-0.047774461500308459,	-0.047724518533186225,	-0.047674575446752687,	-0.047624632241132711,	
+-0.047574688916450718,	-0.047524745472832440,	-0.047474801910402299,	-0.047424858229285154,	-0.047374914429605418,	-0.047324970511488845,	-0.047275026475059843,	-0.047225082320443271,	
+-0.047175138047763555,	-0.047125193657146437,	-0.047075249148716330,	-0.047025304522597663,	-0.046975359778916176,	-0.046925414917796282,	-0.046875469939362861,	-0.046825524843740321,	
+-0.046775579631054408,	-0.046725634301429543,	-0.046675688854990599,	-0.046625743291861990,	-0.046575797612169463,	-0.046525851816037439,	-0.046475905903590790,	-0.046425959874953932,	
+-0.046376013730252616,	-0.046326067469611265,	-0.046276121093154751,	-0.046226174601007489,	-0.046176227993295231,	-0.046126281270142400,	-0.046076334431673430,	-0.046026387478014061,	
+-0.045976440409288728,	-0.045926493225622290,	-0.045876545927139183,	-0.045826598513965144,	-0.045776650986224618,	-0.045726703344042462,	-0.045676755587543104,	-0.045626807716852298,	
+-0.045576859732094473,	-0.045526911633394500,	-0.045476963420876808,	-0.045427015094667143,	-0.045377066654889948,	-0.045327118101670082,	-0.045277169435131978,	-0.045227220655401391,	
+-0.045177271762602757,	-0.045127322756860502,	-0.045077373638300375,	-0.045027424407046823,	-0.044977475063224706,	-0.044927525606958459,	-0.044877576038373841,	-0.044827626357595282,	
+-0.044777676564747661,	-0.044727726659955398,	-0.044677776643344269,	-0.044627826515038695,	-0.044577876275163554,	-0.044527925923843276,	-0.044477975461203634,	-0.044428024887369050,	
+-0.044378074202464403,	-0.044328123406614128,	-0.044278172499943987,	-0.044228221482578413,	-0.044178270354642286,	-0.044128319116260042,	-0.044078367767557448,	-0.044028416308658926,	
+-0.043978464739688923,	-0.043928513060773201,	-0.043878561272036203,	-0.043828609373602792,	-0.043778657365597419,	-0.043728705248145844,	-0.043678753021372509,	-0.043628800685402293,	
+-0.043578848240359624,	-0.043528895686370285,	-0.043478943023558703,	-0.043428990252049771,	-0.043379037371967910,	-0.043329084383438903,	-0.043279131286587183,	-0.043229178081537638,	
+-0.043179224768414702,	-0.043129271347344150,	-0.043079317818450417,	-0.043029364181857946,	-0.042979410437692510,	-0.042929456586078552,	-0.042879502627140943,	-0.042829548561004141,	
+-0.042779594387793912,	-0.042729640107634692,	-0.042679685720651374,	-0.042629731226968400,	-0.042579776626711537,	-0.042529821920005234,	-0.042479867106974378,	-0.042429912187743411,	
+-0.042379957162438107,	-0.042330002031182909,	-0.042280046794102702,	-0.042230091451321942,	-0.042180136002966391,	-0.042130180449160504,	-0.042080224790028722,	-0.042030269025696815,	
+-0.041980313156289244,	-0.041930357181930888,	-0.041880401102746191,	-0.041830444918860940,	-0.041780488630399577,	-0.041730532237486989,	-0.041680575740247632,	-0.041630619138807272,	
+-0.041580662433290366,	-0.041530705623821808,	-0.041480748710526039,	-0.041430791693528847,	-0.041380834572954668,	-0.041330877348928409,	-0.041280920021574505,	-0.041230962591018751,	
+-0.041181005057385589,	-0.041131047420799920,	-0.041081089681386178,	-0.041031131839270166,	-0.040981173894576318,	-0.040931215847429092,	-0.040881257697954275,	-0.040831299446276309,	
+-0.040781341092520094,	-0.040731382636810080,	-0.040681424079272062,	-0.040631465420030481,	-0.040581506659210231,	-0.040531547796935775,	-0.040481588833332895,	-0.040431629768526038,	
+-0.040381670602640106,	-0.040331711335799561,	-0.040281751968130178,	-0.040231792499756412,	-0.040181832930803164,	-0.040131873261394897,	-0.040081913491657385,	-0.040031953621715091,	
+-0.039981993651692471,	-0.039932033581715307,	-0.039882073411908060,	-0.039832113142395632,	-0.039782152773302472,	-0.039732192304754381,	-0.039682231736875802,	-0.039632271069791648,	
+-0.039582310303626377,	-0.039532349438505768,	-0.039482388474554285,	-0.039432427411896828,	-0.039382466250657867,	-0.039332504990963177,	-0.039282543632937234,	-0.039232582176704923,	
+-0.039182620622390717,	-0.039132658970120401,	-0.039082697220018434,	-0.039032735372209290,	-0.038982773426818745,	-0.038932811383971262,	-0.038882849243791762,	-0.038832887006404686,	
+-0.038782924671935837,	-0.038732962240509677,	-0.038682999712251115,	-0.038633037087284612,	-0.038583074365735957,	-0.038533111547729613,	-0.038483148633390495,	-0.038433185622843057,	
+-0.038383222516213102,	-0.038333259313625086,	-0.038283296015203923,	-0.038233332621074083,	-0.038183369131361347,	-0.038133405546190192,	-0.038083441865685082,	-0.038033478089971810,	
+-0.037983514219174841,	-0.037933550253419088,	-0.037883586192829014,	-0.037833622037530414,	-0.037783657787647765,	-0.037733693443305967,	-0.037683729004629497,	-0.037633764471744144,	
+-0.037583799844774383,	-0.037533835123845123,	-0.037483870309080826,	-0.037433905400607301,	-0.037383940398549018,	-0.037333975303030877,	-0.037284010114177354,	-0.037234044832114253,	
+-0.037184079456966036,	-0.037134113988857617,	-0.037084148427913480,	-0.037034182774259405,	-0.036984217028019878,	-0.036934251189319367,	-0.036884285258283668,	-0.036834319235037258,	
+-0.036784353119705050,	-0.036734386912411515,	-0.036684420613282455,	-0.036634454222442346,	-0.036584487740016103,	-0.036534521166128195,	-0.036484554500904424,	-0.036434587744469268,	
+-0.036384620896947648,	-0.036334653958464025,	-0.036284686929144216,	-0.036234719809112692,	-0.036184752598494359,	-0.036134785297413707,	-0.036084817905996540,	-0.036034850424367319,	
+-0.035984882852650536,	-0.035934915190971986,	-0.035884947439456145,	-0.035834979598227942,	-0.035785011667411840,	-0.035735043647133653,	-0.035685075537517860,	-0.035635107338689381,	
+-0.035585139050772686,	-0.035535170673893585,	-0.035485202208176560,	-0.035435233653746533,	-0.035385265010727973,	-0.035335296279246690,	-0.035285327459427175,	-0.035235358551394341,	
+-0.035185389555272659,	-0.035135420471187957,	-0.035085451299264700,	-0.035035482039627364,	-0.034985512692401778,	-0.034935543257712399,	-0.034885573735684169,	-0.034835604126441565,	
+-0.034785634430110388,	-0.034735664646815122,	-0.034685694776680702,	-0.034635724819831598,	-0.034585754776393626,	-0.034535784646491263,	-0.034485814430249444,	-0.034435844127792645,	
+-0.034385873739246675,	-0.034335903264736026,	-0.034285932704385617,	-0.034235962058319927,	-0.034185991326664784,	-0.034136020509544659,	-0.034086049607084480,	-0.034036078619408737,	
+-0.033986107546643239,	-0.033936136388912477,	-0.033886165146340928,	-0.033836193819054408,	-0.033786222407177401,	-0.033736250910834840,	-0.033686279330151211,	-0.033636307665252323,	
+-0.033586335916262672,	-0.033536364083307180,	-0.033486392166510330,	-0.033436420165997946,	-0.033386448081894511,	-0.033336475914324953,	-0.033286503663413763,	-0.033236531329286757,	
+-0.033186558912068426,	-0.033136586411883696,	-0.033086613828857053,	-0.033036641163114326,	-0.032986668414779992,	-0.032936695583978541,	-0.032886722670835804,	-0.032836749675476250,	
+-0.032786776598024828,	-0.032736803438606014,	-0.032686830197345640,	-0.032636856874368195,	-0.032586883469798600,	-0.032536909983761353,	-0.032486936416382277,	-0.032436962767785862,	
+-0.032386989038097037,	-0.032337015227440299,	-0.032287041335941465,	-0.032237067363725030,	-0.032187093310915925,	-0.032137119177638639,	-0.032087144964019002,	-0.032037170670181504,	
+-0.031987196296250631,	-0.031937221842352218,	-0.031887247308610742,	-0.031837272695151159,	-0.031787298002097938,	-0.031737323229576925,	-0.031687348377712601,	-0.031637373446629903,	
+-0.031587398436453334,	-0.031537423347308705,	-0.031487448179320525,	-0.031437472932613716,	-0.031387497607312791,	-0.031337522203543557,	-0.031287546721430526,	-0.031237571161098619,	
+-0.031187595522672348,	-0.031137619806277529,	-0.031087644012038659,	-0.031037668140080237,	-0.030987692190528087,	-0.030937716163506709,	-0.030887740059141040,	-0.030837763877555574,	
+-0.030787787618876145,	-0.030737811283227248,	-0.030687834870733819,	-0.030637858381520361,	-0.030587881815712703,	-0.030537905173435336,	-0.030487928454813209,	-0.030437951659970819,	
+-0.030387974789033989,	-0.030337997842127224,	-0.030288020819375466,	-0.030238043720903211,	-0.030188066546836291,	-0.030138089297299202,	-0.030088111972416894,	-0.030038134572313861,	
+-0.029988157097115935,	-0.029938179546947614,	-0.029888201921933404,	-0.029838224222199131,	-0.029788246447869298,	-0.029738268599068848,	-0.029688290675922283,	-0.029638312678555434,	
+-0.029588334607092807,	-0.029538356461659341,	-0.029488378242379539,	-0.029438399949379235,	-0.029388421582782934,	-0.029338443142715578,	-0.029288464629301670,	-0.029238486042667045,	
+-0.029188507382936203,	-0.029138528650234096,	-0.029088549844685219,	-0.029038570966415416,	-0.028988592015549181,	-0.028938612992211024,	-0.028888633896526780,	-0.028838654728620950,	
+-0.028788675488618482,	-0.028738696176643885,	-0.028688716792822987,	-0.028638737337280298,	-0.028588757810140770,	-0.028538778211528899,	-0.028488798541570527,	-0.028438818800390162,	
+-0.028388838988112744,	-0.028338859104862790,	-0.028288879150766128,	-0.028238899125947271,	-0.028188919030531168,	-0.028138938864642318,	-0.028088958628406571,	-0.028038978321948422,	
+-0.027988997945392387,	-0.027939017498864301,	-0.027889036982488669,	-0.027839056396390446,	-0.027789075740694134,	-0.027739095015525583,	-0.027689114221009292,	-0.027639133357270213,	
+-0.027589152424432859,	-0.027539171422623070,	-0.027489190351965349,	-0.027439209212584654,	-0.027389228004605491,	-0.027339246728153702,	-0.027289265383353797,	-0.027239283970330725,	
+-0.027189302489209005,	-0.027139320940114467,	-0.027089339323171632,	-0.027039357638505446,	-0.026989375886240421,	-0.026939394066502403,	-0.026889412179415897,	-0.026839430225105418,	
+-0.026789448203696806,	-0.026739466115314577,	-0.026689483960083679,	-0.026639501738128631,	-0.026589519449575268,	-0.026539537094548111,	-0.026489554673172107,	-0.026439572185571775,	
+-0.026389589631872955,	-0.026339607012200162,	-0.026289624326678352,	-0.026239641575432036,	-0.026189658758587062,	-0.026139675876267938,	-0.026089692928599625,	-0.026039709915706640,	
+-0.025989726837714819,	-0.025939743694748683,	-0.025889760486932745,	-0.025839777214392848,	-0.025789793877253508,	-0.025739810475639682,	-0.025689827009675890,	-0.025639843479487973,	
+-0.025589859885200444,	-0.025539876226938270,	-0.025489892504825959,	-0.025439908718989358,	-0.025389924869552990,	-0.025339940956641806,	-0.025289956980380328,	-0.025239972940894403,	
+-0.025189988838308544,	-0.025140004672747712,	-0.025090020444336423,	-0.025040036153200530,	-0.024990051799464546,	-0.024940067383252988,	-0.024890082904691704,	-0.024840098363905216,	
+-0.024790113761018480,	-0.024740129096156017,	-0.024690144369443674,	-0.024640159581005971,	-0.024590174730967869,	-0.024540189819453884,	-0.024490204846589869,	-0.024440219812500344,	
+-0.024390234717310270,	-0.024340249561144164,	-0.024290264344127878,	-0.024240279066385931,	-0.024190293728043284,	-0.024140308329224463,	-0.024090322870055313,	-0.024040337350660357,	
+-0.023990351771164112,	-0.023940366131692432,	-0.023890380432369837,	-0.023840394673321292,	-0.023790408854671315,	-0.023740422976545758,	-0.023690437039069145,	-0.023640451042366440,	
+-0.023590464986562164,	-0.023540478871782171,	-0.023490492698150980,	-0.023440506465793553,	-0.023390520174834419,	-0.023340533825399429,	-0.023290547417613106,	-0.023240560951600410,	
+-0.023190574427485872,	-0.023140587845395338,	-0.023090601205453337,	-0.023040614507784832,	-0.022990627752514349,	-0.022940640939767738,	-0.022890654069669527,	-0.022840667142344236,	
+-0.022790680157917718,	-0.022740693116514502,	-0.022690706018259555,	-0.022640718863277398,	-0.022590731651693886,	-0.022540744383633547,	-0.022490757059221343,	-0.022440769678581808,	
+-0.022390782241840788,	-0.022340794749122816,	-0.022290807200552855,	-0.022240819596255432,	-0.022190831936356407,	-0.022140844220980300,	-0.022090856450252081,	-0.022040868624296280,	
+-0.021990880743238749,	-0.021940892807204019,	-0.021890904816316611,	-0.021840916770702382,	-0.021790928670485866,	-0.021740940515792024,	-0.021690952306745389,	-0.021640964043471819,	
+-0.021590975726095838,	-0.021540987354742417,	-0.021490998929536084,	-0.021441010450602697,	-0.021391021918066782,	-0.021341033332053314,	-0.021291044692686820,	-0.021241056000093156,	
+-0.021191067254396855,	-0.021141078455722884,	-0.021091089604195774,	-0.021041100699941383,	-0.020991111743084240,	-0.020941122733748874,	-0.020891133672061146,	-0.020841144558145581,	
+-0.020791155392127156,	-0.020741166174130399,	-0.020691176904281173,	-0.020641187582704001,	-0.020591198209523862,	-0.020541208784865282,	-0.020491219308854124,	-0.020441229781614920,	
+-0.020391240203272640,	-0.020341250573951818,	-0.020291260893778310,	-0.020241271162876651,	-0.020191281381371814,	-0.020141291549388329,	-0.020091301667052062,	-0.020041311734487539,	
+-0.019991321751819734,	-0.019941331719173186,	-0.019891341636673748,	-0.019841351504445957,	-0.019791361322614345,	-0.019741371091304773,	-0.019691380810641774,	-0.019641390480750320,	
+-0.019591400101754950,	-0.019541409673781519,	-0.019491419196954567,	-0.019441428671399068,	-0.019391438097239550,	-0.019341447474601883,	-0.019291456803610597,	-0.019241466084390670,	
+-0.019191475317066633,	-0.019141484501764349,	-0.019091493638608358,	-0.019041502727723630,	-0.018991511769234703,	-0.018941520763267439,	-0.018891529709946373,	-0.018841538609396039,	
+-0.018791547461742303,	-0.018741556267109698,	-0.018691565025623205,	-0.018641573737407352,	-0.018591582402588010,	-0.018541591021289713,	-0.018491599593637435,	-0.018441608119755717,	
+-0.018391616599770424,	-0.018341625033806087,	-0.018291633421987689,	-0.018241641764439761,	-0.018191650061288176,	-0.018141658312657464,	-0.018091666518672604,	-0.018041674679458136,	
+-0.017991682795139925,	-0.017941690865842509,	-0.017891698891690420,	-0.017841706872809528,	-0.017791714809324368,	-0.017741722701359919,	-0.017691730549040725,	-0.017641738352492643,	
+-0.017591746111840219,	-0.017541753827208427,	-0.017491761498721808,	-0.017441769126506232,	-0.017391776710686230,	-0.017341784251386785,	-0.017291791748732438,	-0.017241799202849052,	
+-0.017191806613861171,	-0.017141813981893773,	-0.017091821307071396,	-0.017041828589519911,	-0.016991835829363852,	-0.016941843026727764,	-0.016891850181737507,	-0.016841857294517627,	
+-0.016791864365193105,	-0.016741871393888476,	-0.016691878380729611,	-0.016641885325841054,	-0.016591892229347781,	-0.016541899091374334,	-0.016491905912046585,	-0.016441912691489070,	
+-0.016391919429826773,	-0.016341926127184235,	-0.016291932783687322,	-0.016241939399460580,	-0.016191945974628988,	-0.016141952509317090,	-0.016091959003650753,	-0.016041965457754517,	
+-0.015991971871753368,	-0.015941978245771846,	-0.015891984579935823,	-0.015841990874369837,	-0.015791997129198432,	-0.015742003344547475,	-0.015692009520541512,	-0.015642015657305525,	
+-0.015592021754964054,	-0.015542027813642972,	-0.015492033833466822,	-0.015442039814560587,	-0.015392045757048809,	-0.015342051661057361,	-0.015292057526710782,	-0.015242063354134061,	
+-0.015192069143451736,	-0.015142074894789683,	-0.015092080608272444,	-0.015042086284025001,	-0.014992091922171899,	-0.014942097522839011,	-0.014892103086150882,	-0.014842108612232048,	
+-0.014792114101208387,	-0.014742119553204442,	-0.014692124968345198,	-0.014642130346755197,	-0.014592135688560314,	-0.014542140993885093,	-0.014492146262854519,	-0.014442151495593135,	
+-0.014392156692226815,	-0.014342161852880104,	-0.014292166977677989,	-0.014242172066745013,	-0.014192177120207049,	-0.014142182138188644,	-0.014092187120814784,	-0.014042192068210011,	
+-0.013992196980500202,	-0.013942201857809901,	-0.013892206700263652,	-0.013842211507987328,	-0.013792216281105477,	-0.013742221019743085,	-0.013692225724024697,	-0.013642230394076187,	
+-0.013592235030022102,	-0.013542239631987430,	-0.013492244200096714,	-0.013442248734475831,	-0.013392253235249328,	-0.013342257702542191,	-0.013292262136478966,	-0.013242266537185529,	
+-0.013192270904786427,	-0.013142275239406646,	-0.013092279541170733,	-0.013042283810204567,	-0.012992288046632690,	-0.012942292250580094,	-0.012892296422171321,	-0.012842300561532254,	
+-0.012792304668787434,	-0.012742308744061409,	-0.012692312787480056,	-0.012642316799167920,	-0.012592320779249993,	-0.012542324727850820,	-0.012492328645096279,	-0.012442332531110916,	
+-0.012392336386019722,	-0.012342340209947242,	-0.012292344003019358,	-0.012242347765360612,	-0.012192351497095997,	-0.012142355198350059,	-0.012092358869248677,	-0.012042362509916400,	
+-0.011992366120478215,	-0.011942369701058671,	-0.011892373251783646,	-0.011842376772777687,	-0.011792380264165344,	-0.011742383726072494,	-0.011692387158623684,	-0.011642390561943907,	
+-0.011592393936157710,	-0.011542397281390971,	-0.011492400597768239,	-0.011442403885414506,	-0.011392407144454319,	-0.011342410375013557,	-0.011292413577216770,	-0.011242416751188949,	
+-0.011192419897054643,	-0.011142423014939730,	-0.011092426104968760,	-0.011042429167266726,	-0.010992432201958174,	-0.010942435209168985,	-0.010892438189023709,	-0.010842441141646892,	
+-0.010792444067164416,	-0.010742446965700833,	-0.010692449837381129,	-0.010642452682329858,	-0.010592455500672900,	-0.010542458292534803,	-0.010492461058040558,	-0.010442463797314719,	
+-0.010392466510483164,	-0.010342469197670442,	-0.010292471859001548,	-0.010242474494601028,	-0.010192477104594769,	-0.010142479689107316,	-0.010092482248263663,	-0.010042484782188360,	
+-0.009992487291007291,	-0.009942489774845003,	-0.009892492233826490,	-0.009842494668076303,	-0.009792497077720322,	-0.009742499462883100,	-0.009692501823689184,	-0.009642504160264459,	
+-0.009592506472733473,	-0.009542508761221220,	-0.009492511025852251,	-0.009442513266752450,	-0.009392515484046364,	-0.009342517677858991,	-0.009292519848314879,	-0.009242521995539911,	
+-0.009192524119658639,	-0.009142526220796057,	-0.009092528299076714,	-0.009042530354626495,	-0.008992532387569949,	-0.008942534398032073,	-0.008892536386137417,	-0.008842538352011865,	
+-0.008792540295779966,	-0.008742542217566273,	-0.008692544117496667,	-0.008642545995695701,	-0.008592547852288371,	-0.008542549687399228,	-0.008492551501154154,	-0.008442553293677700,	
+-0.008392555065094865,	-0.008342556815530196,	-0.008292558545109581,	-0.008242560253957568,	-0.008192561942199155,	-0.008142563609958894,	-0.008092565257362667,	-0.008042566884535028,	
+-0.007992568491600970,	-0.007942570078685048,	-0.007892571645913145,	-0.007842573193409811,	-0.007792574721299603,	-0.007742576229708400,	-0.007692577718760757,	-0.007642579188581669,	
+-0.007592580639295690,	-0.007542582071028704,	-0.007492583483905262,	-0.007442584878050361,	-0.007392586253588554,	-0.007342587610645725,	-0.007292588949346428,	-0.007242590269815658,	
+-0.007192591572177969,	-0.007142592856559244,	-0.007092594123084038,	-0.007042595371877345,	-0.006992596603063722,	-0.006942597816769049,	-0.006892599013117883,	-0.006842600192234775,	
+-0.006792601354245611,	-0.006742602499274943,	-0.006692603627447769,	-0.006642604738888642,	-0.006592605833723447,	-0.006542606912076737,	-0.006492607974073510,	-0.006442609019838320,	
+-0.006392610049497051,	-0.006342611063174256,	-0.006292612060994934,	-0.006242613043083638,	-0.006192614009566253,	-0.006142614960567333,	-0.006092615896211876,	-0.006042616816624435,	
+-0.005992617721930896,	-0.005942618612255812,	-0.005892619487724183,	-0.005842620348460561,	-0.005792621194590831,	-0.005742622026239549,	-0.005692622843531267,	-0.005642623646591872,	
+-0.005592624435545919,	-0.005542625210518404,	-0.005492625971633882,	-0.005442626719018240,	-0.005392627452796030,	-0.005342628173092252,	-0.005292628880031459,	-0.005242629573739539,	
+-0.005192630254341044,	-0.005142630921960973,	-0.005092631576723882,	-0.005042632218755655,	-0.004992632848180848,	-0.004942633465124459,	-0.004892634069711042,	-0.004842634662066484,	
+-0.004792635242315340,	-0.004742635810582162,	-0.004692636366992840,	-0.004642636911671927,	-0.004592637444744421,	-0.004542637966334878,	-0.004492638476569184,	-0.004442638975571894,	
+-0.004392639463468006,	-0.004342639940382076,	-0.004292640406439990,	-0.004242640861766302,	-0.004192641306486013,	-0.004142641740723677,	-0.004092642164605180,	-0.004042642578255077,	
+-0.003992642981798369,	-0.003942643375359608,	-0.003892643759064683,	-0.003842644133038149,	-0.003792644497404561,	-0.003742644852289805,	-0.003692645197818437,	-0.003642645534115456,	
+-0.003592645861305418,	-0.003542646179514209,	-0.003492646488866384,	-0.003442646789486943,	-0.003392647081500441,	-0.003342647365032765,	-0.003292647640208471,	-0.003242647907152558,	
+-0.003192648165989581,	-0.003142648416845428,	-0.003092648659844654,	-0.003042648895112258,	-0.002992649122772795,	-0.002942649342952154,	-0.002892649555774890,	-0.002842649761366002,	
+-0.002792649959850045,	-0.002742650151352907,	-0.002692650335999144,	-0.002642650513913312,	-0.002592650685221296,	-0.002542650850047655,	-0.002492651008517386,	-0.002442651160755045,	
+-0.002392651306886521,	-0.002342651447036368,	-0.002292651581329587,	-0.002242651709890733,	-0.002192651832845693,	-0.002142651950319024,	-0.002092652062435725,	-0.002042652169320352,	
+-0.001992652271098793,	-0.001942652367895603,	-0.001892652459835782,	-0.001842652547043885,	-0.001792652629645802,	-0.001742652707766087,	-0.001692652781529296,	-0.001642652851061317,	
+-0.001592652916486706,	-0.001542652977930462,	-0.001492653035517143,	-0.001442653089372634,	-0.001392653139621493,	-0.001342653186388719,	-0.001292653229798869,	-0.001242653269977829,	
+-0.001192653307050155,	-0.001142653341140849,	-0.001092653372374465,	-0.001042653400876892,	-0.000992653426772685,	-0.000942653450186845,	-0.000892653471243927,	-0.000842653490069820,	
+-0.000792653506789079,	-0.000742653521526259,	-0.000692653534407251,	-0.000642653545556608,	-0.000592653555099331,	-0.000542653563159977,	-0.000492653569864433,	-0.000442653575337254,	
+-0.000392653579703442,	-0.000342653583087552,	-0.000292653585615472,	-0.000242653587411758,	-0.000192653588601410,	-0.000142653589308984,	-0.000092653589660368,	-0.000042653589780118,	
+0.000007346410206766,	0.000057346410175728,	0.000107346410000880,	0.000157346409557666,	0.000207346408721530,	0.000257346407366583,	0.000307346405368271,	0.000357346402601593,	
+0.000407346398941993,	0.000457346394263583,	0.000507346388441806,	0.000557346381351664,	0.000607346372868600,	0.000657346362866726,	0.000707346351221486,	0.000757346337807880,	
+0.000807346322501352,	0.000857346305176015,	0.000907346285707312,	0.000957346263970243,	0.001007346239840252,	0.001057346213191452,	0.001107346183899286,	0.001157346151838755,	
+0.001207346116885302,	0.001257346078913040,	0.001307346037797413,	0.001357345993413865,	0.001407345945636508,	0.001457345894340786,	0.001507345839401699,	0.001557345780694692,	
+0.001607345718093876,	0.001657345651474696,	0.001707345580712151,	0.001757345505681687,	0.001807345426257415,	0.001857345342314780,	0.001907345253728781,	0.001957345160374863,	
+0.002007345062127138,	0.002057344958861051,	0.002107344850451600,	0.002157344736774233,	0.002207344617703058,	0.002257344493113523,	0.002307344362881071,	0.002357344226879813,	
+0.002407344084985194,	0.002457343937072216,	0.002507343783016322,	0.002557343622691624,	0.002607343455973567,	0.002657343282737152,	0.002707343102857823,	0.002757342916209691,	
+0.002807342722668203,	0.002857342522108357,	0.002907342314405600,	0.002957342099434042,	0.003007341877069129,	0.003057341647185862,	0.003107341409659684,	0.003157341164364709,	
+0.003207340911176381,	0.003257340649970145,	0.003307340380620113,	0.003357340103001730,	0.003407339816989997,	0.003457339522460358,	0.003507339219286927,	0.003557338907345147,	
+0.003607338586510021,	0.003657338256656991,	0.003707337917660173,	0.003757337569395009,	0.003807337211736501,	0.003857336844560094,	0.003907336467739902,	0.003957336081151368,	
+0.004007335684669494,	0.004057335278169725,	0.004107334861526173,	0.004157334434614284,	0.004207333997309060,	0.004257333549485944,	0.004307333091019050,	0.004357332621783824,	
+0.004407332141655711,	0.004457331650508822,	0.004507331148218605,	0.004557330634660059,	0.004607330109708632,	0.004657329573238434,	0.004707329025124913,	0.004757328465243070,	
+0.004807327893468349,	0.004857327309674865,	0.004907326713738062,	0.004957326105532942,	0.005007325484934952,	0.005057324851818203,	0.005107324206058143,	0.005157323547529772,	
+0.005207322876108536,	0.005257322191668548,	0.005307321494085256,	0.005357320783234103,	0.005407320058989205,	0.005457319321226006,	0.005507318569819510,	0.005557317804645160,	
+0.005607317025577073,	0.005657316232490692,	0.005707315425261022,	0.005757314603763507,	0.005807313767872260,	0.005857312917462730,	0.005907312052409917,	0.005957311172589269,	
+0.006007310277874899,	0.006057309368142251,	0.006107308443266332,	0.006157307503122585,	0.006207306547585126,	0.006257305576529399,	0.006307304589830853,	0.006357303587363602,	
+0.006407302569003091,	0.006457301534624325,	0.006507300484102748,	0.006557299417312476,	0.006607298334128956,	0.006657297234427190,	0.006707296118082624,	0.006757294984969375,	
+0.006807293834962888,	0.006857292667938166,	0.006907291483770657,	0.006957290282334475,	0.007007289063505067,	0.007057287827157437,	0.007107286573167031,	0.007157285301407965,	
+0.007207284011755685,	0.007257282704085639,	0.007307281378271943,	0.007357280034190043,	0.007407278671714943,	0.007457277290722091,	0.007507275891085601,	0.007557274472680921,	
+0.007607273035383055,	0.007657271579067451,	0.007707270103608224,	0.007757268608880821,	0.007807267094760247,	0.007857265561121950,	0.007907264007840044,	0.007957262434789978,	
+0.008007260841846756,	0.008057259228885828,	0.008107257595781304,	0.008157255942408639,	0.008207254268642833,	0.008257252574359336,	0.008307250859432264,	0.008357249123737063,	
+0.008407247367149184,	0.008457245589542743,	0.008507243790793187,	0.008557241970775523,	0.008607240129365198,	0.008657238266436327,	0.008707236381864362,	0.008757234475524305,	
+0.008807232547291606,	0.008857230597040383,	0.008907228624646083,	0.008957226629983710,	0.009007224612928716,	0.009057222573355216,	0.009107220511138658,	0.009157218426154051,	
+0.009207216318276841,	0.009257214187381147,	0.009307212033342416,	0.009357209856036100,	0.009407207655336316,	0.009457205431118511,	0.009507203183257693,	0.009557200911629312,	
+0.009607198616107484,	0.009657196296567659,	0.009707193952884843,	0.009757191584934488,	0.009807189192590708,	0.009857186775728957,	0.009907184334224238,	0.009957181867952003,	
+0.010007179376786367,	0.010057176860602784,	0.010107174319276260,	0.010157171752682244,	0.010207169160694854,	0.010257166543189540,	0.010307163900041756,	0.010357161231125615,	
+0.010407158536316574,	0.010457155815489635,	0.010507153068520252,	0.010557150295282541,	0.010607147495651954,	0.010657144669503498,	0.010707141816712626,	0.010757138937153455,	
+0.010807136030701436,	0.010857133097231577,	0.010907130136619330,	0.010957127148738812,	0.011007124133465478,	0.011057121090674332,	0.011107118020240829,	0.011157114922039087,	
+0.011207111795944556,	0.011257108641832247,	0.011307105459577610,	0.011357102249054764,	0.011407099010139164,	0.011457095742706260,	0.011507092446630172,	0.011557089121786353,	
+0.011607085768049813,	0.011657082385296001,	0.011707078973399039,	0.011757075532234380,	0.011807072061677032,	0.011857068561602449,	0.011907065031884750,	0.011957061472399387,	
+0.012007057883021371,	0.012057054263626155,	0.012107050614087858,	0.012157046934281936,	0.012207043224083397,	0.012257039483367692,	0.012307035712008946,	0.012357031909882609,	
+0.012407028076864139,	0.012457024212827652,	0.012507020317648606,	0.012557016391202009,	0.012607012433363315,	0.012657008444006645,	0.012707004423007455,	0.012757000370240754,	
+0.012806996285581995,	0.012856992168905302,	0.012906988020086128,	0.012956983838999486,	0.013006979625520826,	0.013056975379524275,	0.013106971100885283,	0.013156966789478865,	
+0.013206962445180475,	0.013256958067864233,	0.013306953657405597,	0.013356949213680020,	0.013406944736561626,	0.013456940225925871,	0.013506935681647764,	0.013556931103602763,	
+0.013606926491664990,	0.013656921845709900,	0.013706917165612507,	0.013756912451248264,	0.013806907702491296,	0.013856902919217059,	0.013906898101300564,	0.013956893248617269,	
+0.014006888361041296,	0.014056883438448102,	0.014106878480712700,	0.014156873487710546,	0.014206868459315763,	0.014256863395403810,	0.014306858295850142,	0.014356853160528885,	
+0.014406847989315495,	0.014456842782084983,	0.014506837538712810,	0.014556832259073098,	0.014606826943041308,	0.014656821590492449,	0.014706816201301980,	0.014756810775344026,	
+0.014806805312494044,	0.014856799812627051,	0.014906794275618501,	0.014956788701342523,	0.015006783089674571,	0.015056777440489662,	0.015106771753663255,	0.015156766029069473,	
+0.015206760266583777,	0.015256754466081180,	0.015306748627437141,	0.015356742750525785,	0.015406736835222574,	0.015456730881402963,	0.015506724888941083,	0.015556718857712390,	
+0.015606712787591900,	0.015656706678455069,	0.015706700530176032,	0.015756694342630242,	0.015806688115692715,	0.015856681849238913,	0.015906675543142960,	0.015956669197280320,	
+0.016006662811526007,	0.016056656385755482,	0.016106649919842873,	0.016156643413663636,	0.016206636867092790,	0.016256630280005797,	0.016306623652276787,	0.016356616983781214,	
+0.016406610274394547,	0.016456603523990906,	0.016506596732445759,	0.016556589899634117,	0.016606583025431446,	0.016656576109711874,	0.016706569152350862,	0.016756562153223426,	
+0.016806555112205031,	0.016856548029169801,	0.016906540903993204,	0.016956533736550251,	0.017006526526716411,	0.017056519274365810,	0.017106511979373910,	0.017156504641615729,	
+0.017206497260966732,	0.017256489837301048,	0.017306482370494140,	0.017356474860421470,	0.017406467306957166,	0.017456459709976696,	0.017506452069355076,	0.017556444384967770,	
+0.017606436656688911,	0.017656428884393959,	0.017706421067957934,	0.017756413207256301,	0.017806405302163191,	0.017856397352554065,	0.017906389358303951,	0.017956381319288305,	
+0.018006373235381259,	0.018056365106458284,	0.018106356932394395,	0.018156348713065058,	0.018206340448344405,	0.018256332138107900,	0.018306323782230564,	0.018356315380587865,	
+0.018406306933053930,	0.018456298439504231,	0.018506289899814229,	0.018556281313858058,	0.018606272681511184,	0.018656264002648627,	0.018706255277145856,	0.018756246504877002,	
+0.018806237685717531,	0.018856228819542468,	0.018906219906227276,	0.018956210945646090,	0.019006201937674376,	0.019056192882187156,	0.019106183779059899,	0.019156174628166739,	
+0.019206165429383144,	0.019256156182584132,	0.019306146887645176,	0.019356137544440408,	0.019406128152845297,	0.019456118712735310,	0.019506109223984578,	0.019556099686468577,	
+0.019606090100062326,	0.019656080464641294,	0.019706070780079618,	0.019756061046252764,	0.019806051263035755,	0.019856041430304065,	0.019906031547931826,	0.019956021615794507,	
+0.020006011633767137,	0.020056001601725180,	0.020105991519542774,	0.020155981387095390,	0.020205971204258055,	0.020255960970906234,	0.020305950686914067,	0.020355940352157022,	
+0.020405929966510569,	0.020455919529848852,	0.020505909042047330,	0.020555898502981042,	0.020605887912525447,	0.020655877270554689,	0.020705866576944239,	0.020755855831569123,	
+0.020805845034304809,	0.020855834185025440,	0.020905823283606486,	0.020955812329922975,	0.021005801323850375,	0.021055790265262827,	0.021105779154035803,	0.021155767990044334,	
+0.021205756773163886,	0.021255745503268607,	0.021305734180233959,	0.021355722803935422,	0.021405711374247134,	0.021455699891044566,	0.021505688354202749,	0.021555676763597157,	
+0.021605665119101929,	0.021655653420592537,	0.021705641667944010,	0.021755629861031824,	0.021805617999730121,	0.021855606083914372,	0.021905594113459607,	0.021955582088241301,	
+0.022005570008133593,	0.022055557873011965,	0.022105545682751439,	0.022155533437227495,	0.022205521136314271,	0.022255508779887245,	0.022305496367821448,	0.022355483899992354,	
+0.022405471376274109,	0.022455458796542180,	0.022505446160672050,	0.022555433468537861,	0.022605420720015090,	0.022655407914978765,	0.022705395053304368,	0.022755382134866033,	
+0.022805369159539249,	0.022855356127199036,	0.022905343037720880,	0.022955329890978923,	0.023005316686848642,	0.023055303425205068,	0.023105290105923677,	0.023155276728878620,	
+0.023205263293945372,	0.023255249800998964,	0.023305236249914874,	0.023355222640567250,	0.023405208972831573,	0.023455195246583314,	0.023505181461696622,	0.023555167618046980,	
+0.023605153715509416,	0.023655139753959414,	0.023705125733271118,	0.023755111653320005,	0.023805097513981115,	0.023855083315129925,	0.023905069056640586,	0.023955054738388569,	
+0.024005040360248919,	0.024055025922097111,	0.024105011423807294,	0.024154996865254946,	0.024204982246315107,	0.024254967566863260,	0.024304952826773547,	0.024354938025921452,	
+0.024404923164182458,	0.024454908241430710,	0.024504893257541693,	0.024554878212390441,	0.024604863105852439,	0.024654847937801833,	0.024704832708114109,	0.024754817416664302,	
+0.024804802063327899,	0.024854786647979042,	0.024904771170493223,	0.024954755630745472,	0.025004740028611278,	0.025054724363964789,	0.025104708636681492,	0.025154692846636420,	
+0.025204676993705061,	0.025254661077761566,	0.025304645098681418,	0.025354629056339659,	0.025404612950611770,	0.025454596781371904,	0.025504580548495547,	0.025554564251858179,	
+0.025604547891333960,	0.025654531466798372,	0.025704514978126453,	0.025754498425193690,	0.025804481807874240,	0.025854465126043585,	0.025904448379576766,	0.025954431568349270,	
+0.026004414692235252,	0.026054397751110195,	0.026104380744849144,	0.026154363673327588,	0.026204346536419676,	0.026254329334000900,	0.026304312065946300,	0.026354294732131363,	
+0.026404277332430247,	0.026454259866718434,	0.026504242334871420,	0.026554224736763353,	0.026604207072269726,	0.026654189341265580,	0.026704171543626403,	0.026754153679226355,	
+0.026804135747940924,	0.026854117749645152,	0.026904099684214530,	0.026954081551523217,	0.027004063351446696,	0.027054045083860022,	0.027104026748638675,	0.027154008345656819,	
+0.027203989874789940,	0.027253971335913087,	0.027303952728901751,	0.027353934053630090,	0.027403915309973593,	0.027453896497807748,	0.027503877617006723,	0.027553858667446002,	
+0.027603839649000633,	0.027653820561546111,	0.027703801404956593,	0.027753782179107570,	0.027803762883874095,	0.027853743519131655,	0.027903724084754410,	0.027953704580617859,	
+0.028003685006597043,	0.028053665362567461,	0.028103645648403269,	0.028153625863979966,	0.028203606009172596,	0.028253586083856655,	0.028303566087906306,	0.028353546021197041,	
+0.028403525883604355,	0.028453505675002412,	0.028503485395266703,	0.028553465044272280,	0.028603444621894639,	0.028653424128007941,	0.028703403562487687,	0.028753382925208921,	
+0.028803362216047141,	0.028853341434876514,	0.028903320581572533,	0.028953299656010248,	0.029003278658065158,	0.029053257587611431,	0.029103236444524557,	0.029153215228679592,	
+0.029203193939952035,	0.029253172578216049,	0.029303151143347129,	0.029353129635220333,	0.029403108053711158,	0.029453086398693769,	0.029503064670043662,	0.029553042867636336,	
+0.029603020991345961,	0.029652999041048032,	0.029702977016617609,	0.029752954917930185,	0.029802932744859928,	0.029852910497282344,	0.029902888175072480,	0.029952865778105839,	
+0.030002843306256591,	0.030052820759400235,	0.030102798137411828,	0.030152775440166868,	0.030202752667539527,	0.030252729819405303,	0.030302706895639252,	0.030352683896116880,	
+0.030402660820712357,	0.030452637669301178,	0.030502614441758853,	0.030552591137959544,	0.030602567757778761,	0.030652544301091555,	0.030702520767773432,	0.030752497157698566,	
+0.030802473470742456,	0.030852449706780163,	0.030902425865687186,	0.030952401947337706,	0.031002377951607218,	0.031052353878370784,	0.031102329727503913,	0.031152305498880772,	
+0.031202281192376866,	0.031252256807867258,	0.031302232345227450,	0.031352207804331622,	0.031402183185055270,	0.031452158487273903,	0.031502133710861698,	0.031552108855694164,	
+0.031602083921646353,	0.031652058908593773,	0.031702033816410603,	0.031752008644972352,	0.031801983394154076,	0.031851958063831287,	0.031901932653878161,	0.031951907164170200,	
+0.032001881594582476,	0.032051855944990486,	0.032101830215268419,	0.032151804405291771,	0.032201778514935615,	0.032251752544075453,	0.032301726492585468,	0.032351700360341164,	
+0.032401674147217611,	0.032451647853090321,	0.032501621477833462,	0.032551595021322551,	0.032601568483433097,	0.032651541864039277,	0.032701515163016601,	0.032751488380240140,	
+0.032801461515585398,	0.032851434568926564,	0.032901407540139142,	0.032951380429098197,	0.033001353235679251,	0.033051325959756475,	0.033101298601205378,	0.033151271159901040,	
+0.033201243635718969,	0.033251216028533349,	0.033301188338219684,	0.033351160564653044,	0.033401132707708954,	0.033451104767261583,	0.033501076743186455,	0.033551048635359078,	
+0.033601020443653630,	0.033650992167945634,	0.033700963808110163,	0.033750935364022717,	0.033800906835557497,	0.033850878222590003,	0.033900849524995322,	0.033950820742648956,	
+0.034000791875425096,	0.034050762923199251,	0.034100733885846501,	0.034150704763242362,	0.034200675555261018,	0.034250646261777984,	0.034300616882668333,	0.034350587417807589,	
+0.034400557867069928,	0.034450528230330874,	0.034500498507465942,	0.034550468698349317,	0.034600438802856522,	0.034650408820862635,	0.034700378752243168,	0.034750348596872302,	
+0.034800318354625576,	0.034850288025378047,	0.034900257609005246,	0.034950227105381357,	0.035000196514381895,	0.035050165835881948,	0.035100135069757024,	0.035150104215881321,	
+0.035200073274130363,	0.035250042244379214,	0.035300011126503404,	0.035349979920377125,	0.035399948625875900,	0.035449917242875238,	0.035499885771249351,	0.035549854210873741,	
+0.035599822561623494,	0.035649790823374140,	0.035699758995999864,	0.035749727079376188,	0.035799695073378199,	0.035849662977881412,	0.035899630792760026,	0.035949598517889557,	
+0.035999566153145098,	0.036049533698402164,	0.036099501153534955,	0.036149468518418992,	0.036199435792929363,	0.036249402976941583,	0.036299370070329851,	0.036349337072969695,	
+0.036399303984736196,	0.036449270805504877,	0.036499237535149942,	0.036549204173546915,	0.036599170720571318,	0.036649137176097350,	0.036699103540000541,	0.036749069812155970,	
+0.036799035992439173,	0.036849002080724343,	0.036898968076887001,	0.036948933980802241,	0.036998899792345594,	0.037048865511391249,	0.037098831137814745,	0.037148796671491159,	
+0.037198762112296030,	0.037248727460103548,	0.037298692714789250,	0.037348657876228215,	0.037398622944295981,	0.037448587918866752,	0.037498552799816044,	0.037548517587019402,	
+0.037598482280351023,	0.037648446879686437,	0.037698411384900737,	0.037748375795869447,	0.037798340112466779,	0.037848304334568261,	0.037898268462048981,	0.037948232494784469,	
+0.037998196432648935,	0.038048160275517912,	0.038098124023266490,	0.038148087675770194,	0.038198051232903242,	0.038248014694541158,	0.038297978060559040,	0.038347941330832420,	
+0.038397904505235503,	0.038447867583643824,	0.038497830565932915,	0.038547793451976994,	0.038597756241651585,	0.038647718934831786,	0.038697681531393135,	0.038747644031209838,	
+0.038797606434157424,	0.038847568740110999,	0.038897530948946095,	0.038947493060536922,	0.038997455074759012,	0.039047416991487470,	0.039097378810597820,	0.039147340531964288,	
+0.039197302155462403,	0.039247263680967259,	0.039297225108354407,	0.039347186437498044,	0.039397147668273715,	0.039447108800556512,	0.039497069834221986,	0.039547030769144342,	
+0.039596991605199118,	0.039646952342261864,	0.039696912980206778,	0.039746873518909417,	0.039796833958244869,	0.039846794298088677,	0.039896754538315059,	0.039946714678799553,	
+0.039996674719417265,	0.040046634660043733,	0.040096594500553161,	0.040146554240821114,	0.040196513880722679,	0.040246473420133398,	0.040296432858927492,	0.040346392196980503,	
+0.040396351434167539,	0.040446310570364137,	0.040496269605444515,	0.040546228539284218,	0.040596187371758789,	0.040646146102742454,	0.040696104732110758,	0.040746063259738792,	
+0.040796021685502115,	0.040845980009274939,	0.040895938230932814,	0.040945896350350841,	0.040995854367404570,	0.041045812281968228,	0.041095770093917343,	0.041145727803127044,	
+0.041195685409472861,	0.041245642912829027,	0.041295600313071078,	0.041345557610074135,	0.041395514803713743,	0.041445471893864112,	0.041495428880400809,	0.041545385763199376,	
+0.041595342542134033,	0.041645299217080337,	0.041695255787913388,	0.041745212254508744,	0.041795168616740631,	0.041845124874484593,	0.041895081027615744,	0.041945037076009634,	
+0.041994993019540489,	0.042044948858083860,	0.042094904591514860,	0.042144860219709042,	0.042194815742540630,	0.042244771159885175,	0.042294726471617798,	0.042344681677614043,	
+0.042394636777748143,	0.042444591771895655,	0.042494546659932124,	0.042544501441731788,	0.042594456117170200,	0.042644410686122465,	0.042694365148464149,	0.042744319504069483,	
+0.042794273752814013,	0.042844227894572859,	0.042894181929221578,	0.042944135856634397,	0.042994089676686879,	0.043044043389254140,	0.043093996994211729,	0.043143950491433887,	
+0.043193903880796164,	0.043243857162173688,	0.043293810335442010,	0.043343763400475362,	0.043393716357149302,	0.043443669205338958,	0.043493621944919882,	0.043543574575766304,	
+0.043593527097753798,	0.043643479510757907,	0.043693431814652885,	0.043743384009314275,	0.043793336094617205,	0.043843288070437240,	0.043893239936648613,	0.043943191693126889,	
+0.043993143339747180,	0.044043094876385060,	0.044093046302914753,	0.044142997619211838,	0.044192948825151422,	0.044242899920609084,	0.044292850905459050,	0.044342801779576890,	
+0.044392752542837727,	0.044442703195117124,	0.044492653736289314,	0.044542604166229877,	0.044592554484814369,	0.044642504691917037,	0.044692454787413440,	0.044742404771178704,	
+0.044792354643088401,	0.044842304403016765,	0.044892254050839374,	0.044942203586431341,	0.044992153009668252,	0.045042102320424326,	0.045092051518575156,	0.045142000603995848,	
+0.045191949576561988,	0.045241898436147801,	0.045291847182628880,	0.045341795815880333,	0.045391744335777744,	0.045441692742195346,	0.045491641035008724,	0.045541589214093438,	
+0.045591537279323732,	0.045641485230575186,	0.045691433067722928,	0.045741380790642536,	0.045791328399208242,	0.045841275893295626,	0.045891223272779821,	0.045941170537536401,	
+0.045991117687439617,	0.046041064722365035,	0.046091011642187790,	0.046140958446783460,	0.046190905136026292,	0.046240851709791857,	0.046290798167955297,	0.046340744510392183,	
+0.046390690736976763,	0.046440636847584621,	0.046490582842090886,	0.046540528720371135,	0.046590474482299617,	0.046640420127751915,	0.046690365656603609,	0.046740311068728939,	
+0.046790256364003496,	0.046840201542302409,	0.046890146603501263,	0.046940091547474312,	0.046990036374097127,	0.047039981083244850,	0.047089925674793066,	0.047139870148616023,	
+0.047189814504589311,	0.047239758742588053,	0.047289702862487848,	0.047339646864162942,	0.047389590747488913,	0.047439534512340918,	0.047489478158594521,	0.047539421686123989,	
+0.047589365094804902,	0.047639308384512843,	0.047689251555122075,	0.047739194606508176,	0.047789137538546286,	0.047839080351112000,	0.047889023044079569,	0.047938965617324580,	
+0.047988908070722182,	0.048038850404147952,	0.048088792617476152,	0.048138734710582373,	0.048188676683341758,	0.048238618535629892,	0.048288560267321035,	0.048338501878290779,	
+0.048388443368414268,	0.048438384737567092,	0.048488325985623512,	0.048538267112459121,	0.048588208117949498,	0.048638149001968917,	0.048688089764392962,	0.048738030405096777,	
+0.048787970923955967,	0.048837911320844786,	0.048887851595638819,	0.048937791748213229,	0.048987731778443601,	0.049037671686204203,	0.049087611471370626,	0.049137551133818021,	
+0.049187490673421978,	0.049237430090056766,	0.049287369383597977,	0.049337308553920767,	0.049387247600900727,	0.049437186524412126,	0.049487125324330562,	0.049537064000531178,	
+0.049587002552889586,	0.049636940981280041,	0.049686879285578141,	0.049736817465659486,	0.049786755521398343,	0.049836693452670312,	0.049886631259350549,	0.049936568941314652,	
+0.049986506498436889,	0.050036443930592860,	0.050086381237657719,	0.050136318419507067,	0.050186255476015185,	0.050236192407057650,	0.050286129212509648,	0.050336065892246755,	
+0.050386002446143260,	0.050435938874074757,	0.050485875175916406,	0.050535811351543815,	0.050585747400831250,	0.050635683323654312,	0.050685619119888614,	0.050735554789408423,	
+0.050785490332089352,	0.050835425747806542,	0.050885361036435622,	0.050935296197850852,	0.050985231231927844,	0.051035166138541754,	0.051085100917568189,	0.051135035568881437,	
+0.051184970092357090,	0.051234904487870318,	0.051284838755296734,	0.051334772894510605,	0.051384706905387545,	0.051434640787802716,	0.051484574541631731,	0.051534508166748864,	
+0.051584441663029730,	0.051634375030349934,	0.051684308268583758,	0.051734241377606807,	0.051784174357294252,	0.051834107207521712,	0.051884039928163456,	0.051933972519095095,	
+0.051983904980191807,	0.052033837311329205,	0.052083769512381563,	0.052133701583224494,	0.052183633523733175,	0.052233565333783212,	0.052283497013248900,	0.052333428562005839,	
+0.052383359979929205,	0.052433291266894617,	0.052483222422776359,	0.052533153447450041,	0.052583084340791286,	0.052633015102674381,	0.052682945732974933,	0.052732876231568117,	
+0.052782806598329561,	0.052832736833133540,	0.052882666935855679,	0.052932596906371150,	0.052982526744555572,	0.053032456450283240,	0.053082386023429760,	0.053132315463870317,	
+0.053182244771480529,	0.053232173946134685,	0.053282102987708406,	0.053332031896076867,	0.053381960671115697,	0.053431889312699175,	0.053481817820702937,	0.053531746195002151,	
+0.053581674435472446,	0.053631602541988108,	0.053681530514424765,	0.053731458352658037,	0.053781386056562221,	0.053831313626012942,	0.053881241060885376,	0.053931168361055153,	
+0.053981095526396565,	0.054031022556785241,	0.054080949452096357,	0.054130876212205546,	0.054180802836987098,	0.054230729326316639,	0.054280655680069366,	0.054330581898120893,	
+0.054380507980345522,	0.054430433926618879,	0.054480359736816149,	0.054530285410812972,	0.054580210948483629,	0.054630136349703762,	0.054680061614348997,	0.054729986742293638,	
+0.054779911733413310,	0.054829836587583204,	0.054879761304678948,	0.054929685884574850,	0.054979610327146530,	0.055029534632269186,	0.055079458799818452,	0.055129382829668623,	
+0.055179306721695340,	0.055229230475773793,	0.055279154091779609,	0.055329077569587097,	0.055379000909071892,	0.055428924110109190,	0.055478847172574612,	0.055528770096342474,	
+0.055578692881288416,	0.055628615527288067,	0.055678538034215734,	0.055728460401947059,	0.055778382630357233,	0.055828304719321889,	0.055878226668715343,	0.055928148478413230,	
+0.055978070148290746,	0.056027991678223532,	0.056077913068085891,	0.056127834317753471,	0.056177755427101468,	0.056227676396005517,	0.056277597224339927,	0.056327517911980346,	
+0.056377438458801978,	0.056427358864680449,	0.056477279129490084,	0.056527199253106515,	0.056577119235404955,	0.056627039076261036,	0.056676958775549076,	0.056726878333144722,	
+0.056776797748923614,	0.056826717022760063,	0.056876636154529731,	0.056926555144107799,	0.056976473991369923,	0.057026392696190427,	0.057076311258444944,	0.057126229678008678,	
+0.057176147954757291,	0.057226066088565085,	0.057275984079307708,	0.057325901926860379,	0.057375819631098737,	0.057425737191897107,	0.057475654609131129,	0.057525571882676013,	
+0.057575489012407409,	0.057625405998199646,	0.057675322839928364,	0.057725239537469220,	0.057775156090696535,	0.057825072499485958,	0.057874988763712699,	0.057924904883252408,	
+0.057974820857979420,	0.058024736687769370,	0.058074652372497489,	0.058124567912039411,	0.058174483306269474,	0.058224398555063332,	0.058274313658296190,	0.058324228615843708,	
+0.058374143427580211,	0.058424058093381352,	0.058473972613122351,	0.058523886986678861,	0.058573801213925213,	0.058623715294737061,	0.058673629228990061,	0.058723543016558549,	
+0.058773456657318174,	0.058823370151144166,	0.058873283497912168,	0.058923196697496523,	0.058973109749772878,	0.059023022654616467,	0.059072935411902942,	0.059122848021506635,	
+0.059172760483303208,	0.059222672797167877,	0.059272584962976306,	0.059322496980602830,	0.059372408849923120,	0.059422320570812377,	0.059472232143146279,	0.059522143566799163,	
+0.059572054841646682,	0.059621965967564507,	0.059671876944426980,	0.059721787772109756,	0.059771698450488062,	0.059821608979437564,	0.059871519358832608,	0.059921429588548847,	
+0.059971339668461514,	0.060021249598446270,	0.060071159378377467,	0.060121069008130759,	0.060170978487581385,	0.060220887816605000,	0.060270796995075961,	0.060320706022869923,	
+0.060370614899862118,	0.060420523625928230,	0.060470432200942580,	0.060520340624780851,	0.060570248897318275,	0.060620157018430515,	0.060670064987991920,	0.060719972805878167,	
+0.060769880471964917,	0.060819787986126528,	0.060869695348238669,	0.060919602558176571,	0.060969509615815910,	0.061019416521031038,	0.061069323273697615,	0.061119229873690888,	
+0.061169136320886532,	0.061219042615158883,	0.061268948756383640,	0.061318854744436012,	0.061368760579191703,	0.061418666260525043,	0.061468571788311714,	0.061518477162426963,	
+0.061568382382746457,	0.061618287449144556,	0.061668192361496933,	0.061718097119679273,	0.061768001723565925,	0.061817906173032580,	0.061867810467954462,	0.061917714608207261,	
+0.061967618593665334,	0.062017522424204365,	0.062067426099699584,	0.062117329620026682,	0.062167232985060009,	0.062217136194675254,	0.062267039248747665,	0.062316942147152915,	
+0.062366844889765370,	0.062416747476460713,	0.062466649907114188,	0.062516552181601473,	0.062566454299796945,	0.062616356261576273,	0.062666258066815167,	0.062716159715387965,	
+0.062766061207170362,	0.062815962542037598,	0.062865863719865384,	0.062915764740528068,	0.062965665603901336,	0.063015566309860438,	0.063065466858281058,	0.063115367249037588,	
+0.063165267482005683,	0.063215167557060623,	0.063265067474078077,	0.063314967232932423,	0.063364866833499345,	0.063414766275654108,	0.063464665559272396,	0.063514564684228586,	
+0.063564463650398348,	0.063614362457656962,	0.063664261105880110,	0.063714159594942157,	0.063764057924718814,	0.063813956095085764,	0.063863854105917384,	0.063913751957089357,	
+0.063963649648476964,	0.064013547179955888,	0.064063444551400492,	0.064113341762686502,	0.064163238813689141,	0.064213135704284136,	0.064263032434345849,	0.064312929003749963,	
+0.064362825412371774,	0.064412721660086963,	0.064462617746769896,	0.064512513672296296,	0.064562409436541401,	0.064612305039380924,	0.064662200480689255,	0.064712095760342078,	
+0.064761990878215103,	0.064811885834182709,	0.064861780628120591,	0.064911675259904031,	0.064961569729408725,	0.065011464036509051,	0.065061358181080720,	0.065111252162998998,	
+0.065161145982139582,	0.065211039638376850,	0.065260933131586527,	0.065310826461643878,	0.065360719628424602,	0.065410612631803075,	0.065460505471655023,	0.065510398147855711,	
+0.065560290660280837,	0.065610183008804793,	0.065660075193303302,	0.065709967213652062,	0.065759859069725465,	0.065809750761399208,	0.065859642288548584,	0.065909533651049290,	
+0.065959424848775733,	0.066009315881603609,	0.066059206749408184,	0.066109097452065196,	0.066158987989449011,	0.066208878361435367,	0.066258768567899529,	0.066308658608717208,	
+0.066358548483762783,	0.066408438192912006,	0.066458327736040129,	0.066508217113022877,	0.066558106323734628,	0.066607995368051121,	0.066657884245848079,	0.066707772956999867,	
+0.066757661501382237,	0.066807549878870442,	0.066857438089340221,	0.066907326132665965,	0.066957214008723384,	0.067007101717387774,	0.067056989258534844,	0.067106876632039014,	
+0.067156763837775982,	0.067206650875621041,	0.067256537745449915,	0.067306424447136998,	0.067356310980558026,	0.067406197345588281,	0.067456083542103487,	0.067505969569978022,	
+0.067555855429087652,	0.067605741119307644,	0.067655626640513708,	0.067705511992580278,	0.067755397175383064,	0.067805282188797805,	0.067855167032698893,	0.067905051706962066,	
+0.067954936211462605,	0.068004820546076247,	0.068054704710677399,	0.068104588705141786,	0.068154472529344701,	0.068204356183161882,	0.068254239666467723,	0.068304122979137960,	
+0.068354006121047903,	0.068403889092073275,	0.068453771892088469,	0.068503654520969237,	0.068553536978590873,	0.068603419264829102,	0.068653301379558357,	0.068703183322654335,	
+0.068753065093992816,	0.068802946693448178,	0.068852828120896187,	0.068902709376212123,	0.068952590459271726,	0.069002471369949400,	0.069052352108120912,	0.069102232673661529,	
+0.069152113066447016,	0.069201993286351779,	0.069251873333251557,	0.069301753207021644,	0.069351632907537791,	0.069401512434674420,	0.069451391788307268,	0.069501270968311643,	
+0.069551149974563270,	0.069601028806936582,	0.069650907465307332,	0.069700785949551244,	0.069750664259542752,	0.069800542395157608,	0.069850420356271092,	0.069900298142758985,	
+0.069950175754495678,	0.070000053191356937,	0.070049930453218057,	0.070099807539954803,	0.070149684451441582,	0.070199561187554146,	0.070249437748167817,	0.070299314133158333,	
+0.070349190342400114,	0.070399066375768926,	0.070448942233140077,	0.070498817914389306,	0.070548693419391045,	0.070598568748021062,	0.070648443900154650,	0.070698318875667562,	
+0.070748193674434245,	0.070798068296330452,	0.070847942741231920,	0.070897817009013084,	0.070947691099549709,	0.070997565012717118,	0.071047438748391048,	0.071097312306445934,	
+0.071147185686757541,	0.071197058889201192,	0.071246931913652625,	0.071296804759986301,	0.071346677428077959,	0.071396549917802921,	0.071446422229036952,	0.071496294361654486,	
+0.071546166315531276,	0.071596038090542657,	0.071645909686564396,	0.071695781103470899,	0.071745652341137958,	0.071795523399441341,	0.071845394278255453,	0.071895264977456089,	
+0.071945135496918555,	0.071995005836518633,	0.072044875996130756,	0.072094745975630689,	0.072144615774893756,	0.072194485393795721,	0.072244354832211033,	0.072294224090015458,	
+0.072344093167084317,	0.072393962063293391,	0.072443830778517113,	0.072493699312631263,	0.072543567665511163,	0.072593435837032594,	0.072643303827069974,	0.072693171635499113,	
+0.072743039262195761,	0.072792906707034366,	0.072842773969890709,	0.072892641050640111,	0.072942507949158353,	0.072992374665319881,	0.073042241199000477,	0.073092107550075461,	
+0.073141973718420628,	0.073191839703910425,	0.073241705506420604,	0.073291571125826530,	0.073341436562003981,	0.073391301814827378,	0.073441166884172529,	0.073491031769914769,	
+0.073540896471929865,	0.073590760990092277,	0.073640625324277800,	0.073690489474362186,	0.073740353440219911,	0.073790217221726753,	0.073840080818758050,	0.073889944231189594,	
+0.073939807458895820,	0.073989670501752536,	0.074039533359635090,	0.074089396032419236,	0.074139258519979448,	0.074189120822191520,	0.074238982938930789,	0.074288844870073048,	
+0.074338706615492745,	0.074388568175065686,	0.074438429548667195,	0.074488290736173079,	0.074538151737457786,	0.074588012552397123,	0.074637873180866426,	0.074687733622741490,	
+0.074737593877896774,	0.074787453946208074,	0.074837313827551169,	0.074887173521800562,	0.074937033028832006,	0.074986892348520864,	0.075036751480742944,	0.075086610425372693,	
+0.075136469182285934,	0.075186327751357987,	0.075236186132464661,	0.075286044325480431,	0.075335902330281090,	0.075385760146742004,	0.075435617774738950,	0.075485475214146405,	
+0.075535332464840177,	0.075585189526695615,	0.075635046399588526,	0.075684903083393387,	0.075734759577985977,	0.075784615883242118,	0.075834471999036271,	0.075884327925244244,	
+0.075934183661741400,	0.075984039208403534,	0.076033894565105134,	0.076083749731721995,	0.076133604708129479,	0.076183459494203395,	0.076233314089818233,	0.076283168494849771,	
+0.076333022709173387,	0.076382876732664903,	0.076432730565198767,	0.076482584206650814,	0.076532437656896407,	0.076582290915811341,	0.076632143983270104,	0.076681996859148505,	
+0.076731849543322364,	0.076781702035666144,	0.076831554336055680,	0.076881406444366321,	0.076931258360473903,	0.076981110084252888,	0.077030961615579097,	0.077080812954327907,	
+0.077130664100375113,	0.077180515053595231,	0.077230365813864055,	0.077280216381056963,	0.077330066755049789,	0.077379916935716983,	0.077429766922934393,	0.077479616716577396,	
+0.077529466316521786,	0.077579315722642067,	0.077629164934814074,	0.077679013952913156,	0.077728862776815150,	0.077778711406394543,	0.077828559841527159,	0.077878408082088818,	
+0.077928256127954010,	0.077978103978998570,	0.078027951635097861,	0.078077799096127720,	0.078127646361962635,	0.078177493432478443,	0.078227340307550505,	0.078277186987054673,	
+0.078327033470865420,	0.078376879758858584,	0.078426725850909554,	0.078476571746894153,	0.078526417446686869,	0.078576262950163553,	0.078626108257199581,	0.078675953367670776,	
+0.078725798281451639,	0.078775642998418008,	0.078825487518445717,	0.078875331841409269,	0.078925175967184485,	0.078975019895646759,	0.079024863626671937,	0.079074707160134511,	
+0.079124550495910301,	0.079174393633874726,	0.079224236573903609,	0.079274079315871465,	0.079323921859654117,	0.079373764205126957,	0.079423606352165846,	0.079473448300645261,	
+0.079523290050441064,	0.079573131601428634,	0.079622972953483820,	0.079672814106481138,	0.079722655060296410,	0.079772495814805500,	0.079822336369882896,	0.079872176725404462,	
+0.079922016881245575,	0.079971856837282099,	0.080021696593388522,	0.080071536149440722,	0.080121375505314077,	0.080171214660884421,	0.080221053616026300,	0.080270892370615549,	
+0.080320730924527559,	0.080370569277638179,	0.080420407429821941,	0.080470245380954694,	0.080520083130911815,	0.080569920679569182,	0.080619758026801311,	0.080669595172484024,	
+0.080719432116493212,	0.080769268858703364,	0.080819105398990357,	0.080868941737229569,	0.080918777873296877,	0.080968613807066811,	0.081018449538415194,	0.081068285067217458,	
+0.081118120393349452,	0.081167955516685708,	0.081217790437102061,	0.081267625154473944,	0.081317459668677219,	0.081367293979586391,	0.081417128087077323,	0.081466961991025447,	
+0.081516795691306598,	0.081566629187795323,	0.081616462480367483,	0.081666295568898470,	0.081716128453264175,	0.081765961133339116,	0.081815793608999141,	0.081865625880120127,	
+0.081915457946576620,	0.081965289808244454,	0.082015121464999077,	0.082064952916716324,	0.082114784163270754,	0.082164615204538216,	0.082214446040394157,	0.082264276670714412,	
+0.082314107095373540,	0.082363937314247390,	0.082413767327211410,	0.082463597134141448,	0.082513426734912049,	0.082563256129399076,	0.082613085317477977,	0.082662914299024601,	
+0.082712743073913492,	0.082762571642020527,	0.082812400003221584,	0.082862228157391193,	0.082912056104405232,	0.082961883844139134,	0.083011711376468761,	0.083061538701268672,	
+0.083111365818414731,	0.083161192727782385,	0.083211019429247496,	0.083260845922684623,	0.083310672207969616,	0.083360498284977949,	0.083410324153585472,	0.083460149813666729,	
+0.083509975265097625,	0.083559800507753579,	0.083609625541510482,	0.083659450366242866,	0.083709274981826634,	0.083759099388137651,	0.083808923585050488,	0.083858747572441009,	
+0.083908571350184646,	0.083958394918157320,	0.084008218276233559,	0.084058041424289243,	0.084107864362199830,	0.084157687089841199,	0.084207509607087908,	0.084257331913815833,	
+0.084307154009900437,	0.084356975895217609,	0.084406797569641881,	0.084456619033049171,	0.084506440285314899,	0.084556261326314983,	0.084606082155923967,	0.084655902774017744,	
+0.084705723180471773,	0.084755543375161918,	0.084805363357962779,	0.084855183128750220,	0.084905002687400158,	0.084954822033787139,	0.085004641167787068,	0.085054460089275391,	
+0.085104278798128014,	0.085154097294219480,	0.085203915577425723,	0.085253733647622162,	0.085303551504684716,	0.085353369148487956,	0.085403186578907761,	0.085453003795819604,	
+0.085502820799099377,	0.085552637588621666,	0.085602454164262348,	0.085652270525896898,	0.085702086673401220,	0.085751902606649888,	0.085801718325518792,	0.085851533829883836,	
+0.085901349119619608,	0.085951164194602012,	0.086000979054706495,	0.086050793699808989,	0.086100608129784040,	0.086150422344507580,	0.086200236343855055,	0.086250050127702399,	
+0.086299863695924156,	0.086349677048396259,	0.086399490184994182,	0.086449303105593817,	0.086499115810069735,	0.086548928298297884,	0.086598740570153709,	0.086648552625513117,	
+0.086698364464250707,	0.086748176086242385,	0.086797987491364054,	0.086847798679490329,	0.086897609650497101,	0.086947420404259845,	0.086997230940654480,	0.087047041259555605,	
+0.087096851360839111,	0.087146661244380502,	0.087196470910055682,	0.087246280357739237,	0.087296089587307099,	0.087345898598634730,	0.087395707391598049,	0.087445515966071669,	
+0.087495324321931495,	0.087545132459053016,	0.087594940377312150,	0.087644748076583484,	0.087694555556742937,	0.087744362817666469,	0.087794169859228624,	0.087843976681305377,	
+0.087893783283772176,	0.087943589666504965,	0.087993395829378332,	0.088043201772268209,	0.088093007495050085,	0.088142812997599893,	0.088192618279792218,	0.088242423341502993,	
+0.088292228182607721,	0.088342032802982307,	0.088391837202501378,	0.088441641381040853,	0.088491445338476221,	0.088541249074683429,	0.088591052589537062,	0.088640855882913067,	
+0.088690658954686932,	0.088740461804734591,	0.088790264432930657,	0.088840066839151063,	0.088889869023271742,	0.088939670985167307,	0.088989472724713692,	0.089039274241786398,	
+0.089089075536261358,	0.089138876608013187,	0.089188677456917817,	0.089238478082850764,	0.089288278485687961,	0.089338078665304008,	0.089387878621574865,	0.089437678354376021,	
+0.089487477863583437,	0.089537277149071698,	0.089587076210716779,	0.089636875048394168,	0.089686673661979813,	0.089736472051348326,	0.089786270216375655,	0.089836068156937759,	
+0.089885865872909240,	0.089935663364166071,	0.089985460630583741,	0.090035257672038196,	0.090085054488404065,	0.090134851079557293,	0.090184647445373398,	0.090234443585728324,	
+0.090284239500496716,	0.090334035189554490,	0.090383830652777178,	0.090433625890040739,	0.090483420901219788,	0.090533215686190285,	0.090583010244827747,	0.090632804577008119,	
+0.090682598682606044,	0.090732392561497469,	0.090782186213558352,	0.090831979638663338,	0.090881772836688371,	0.090931565807508968,	0.090981358551001090,	0.091031151067039379,	
+0.091080943355499794,	0.091130735416257838,	0.091180527249189500,	0.091230318854169393,	0.091280110231073491,	0.091329901379777312,	0.091379692300156815,	0.091429482992086655,	
+0.091479273455442781,	0.091529063690100734,	0.091578853695936463,	0.091628643472824622,	0.091678433020641159,	0.091728222339261617,	0.091778011428561970,	0.091827800288416847,	
+0.091877588918702222,	0.091927377319294068,	0.091977165490067042,	0.092026953430897090,	0.092076741141659743,	0.092126528622231002,	0.092176315872485495,	0.092226102892299197,	
+0.092275889681547638,	0.092325676240106805,	0.092375462567851327,	0.092425248664657206,	0.092475034530399958,	0.092524820164955557,	0.092574605568198673,	0.092624390740005266,	
+0.092674175680250895,	0.092723960388811519,	0.092773744865561808,	0.092823529110377723,	0.092873313123135265,	0.092923096903709076,	0.092972880451975159,	0.093022663767809030,	
+0.093072446851086690,	0.093122229701682782,	0.093172012319473307,	0.093221794704333796,	0.093271576856140237,	0.093321358774767299,	0.093371140460090971,	0.093420921911986782,	
+0.093470703130330735,	0.093520484114997485,	0.093570264865863020,	0.093620045382802899,	0.093669825665693110,	0.093719605714408322,	0.093769385528824509,	0.093819165108817673,	
+0.093868944454262485,	0.093918723565034931,	0.093968502441010571,	0.094018281082065405,	0.094068059488074077,	0.094117837658912615,	0.094167615594456550,	0.094217393294581897,	
+0.094267170759163313,	0.094316947988076813,	0.094366724981197928,	0.094416501738402672,	0.094466278259565731,	0.094516054544563091,	0.094565830593270311,	0.094615606405563407,	
+0.094665381981317034,	0.094715157320407209,	0.094764932422709933,	0.094814707288099875,	0.094864481916453067,	0.094914256307645037,	0.094964030461551815,	0.095013804378048086,	
+0.095063578057009823,	0.095113351498312640,	0.095163124701832497,	0.095212897667444119,	0.095262670395023494,	0.095312442884446180,	0.095362215135588208,	0.095411987148324259,	
+0.095461758922530338,	0.095511530458082028,	0.095561301754855332,	0.095611072812724934,	0.095660843631566850,	0.095710614211256664,	0.095760384551670394,	0.095810154652682708,	
+0.095859924514169637,	0.095909694136007195,	0.095959463518070082,	0.096009232660234298,	0.096059001562375443,	0.096108770224369519,	0.096158538646091238,	0.096208306827416601,	
+0.096258074768221208,	0.096307842468381061,	0.096357609927770871,	0.096407377146266654,	0.096457144123743982,	0.096506910860078912,	0.096556677355146114,	0.096606443608821618,	
+0.096656209620981023,	0.096705975391500332,	0.096755740920254268,	0.096805506207118863,	0.096855271251970118,	0.096905036054682758,	0.096954800615132813,	0.097004564933195855,	
+0.097054329008747942,	0.097104092841663756,	0.097153856431819341,	0.097203619779090283,	0.097253382883352613,	0.097303145744481054,	0.097352908362351623,	0.097402670736839919,	
+0.097452432867821986,	0.097502194755172536,	0.097551956398767584,	0.097601717798482743,	0.097651478954194057,	0.097701239865776224,	0.097751000533105301,	0.097800760956057317,	
+0.097850521134506985,	0.097900281068330347,	0.097950040757403017,	0.097999800201601012,	0.098049559400799083,	0.098099318354873233,	0.098149077063699103,	0.098198835527152722,	
+0.098248593745108803,	0.098298351717443402,	0.098348109444032134,	0.098397866924751012,	0.098447624159474806,	0.098497381148079516,	0.098547137890440784,	0.098596894386434653,	
+0.098646650635935834,	0.098696406638820400,	0.098746162394963949,	0.098795917904242525,	0.098845673166530867,	0.098895428181705033,	0.098945182949641067,	0.098994937470213692,	
+0.099044691743298982,	0.099094445768772535,	0.099144199546510423,	0.099193953076387370,	0.099243706358279435,	0.099293459392062244,	0.099343212177611828,	0.099392964714802953,	
+0.099442717003511663,	0.099492469043613571,	0.099542220834984763,	0.099591972377499949,	0.099641723671035201,	0.099691474715466161,	0.099741225510668857,	0.099790976056518058,	
+0.099840726352889819,	0.099890476399660214,	0.099940226196703966,	0.099989975743897147,	0.100039725041115400,	0.100089474088234780,	0.100139222885130020,	0.100188971431677220,	
+0.100238719727751990,	0.100288467773230390,	0.100338215567987190,	0.100387963111898450,	0.100437710404839800,	0.100487457446687310,	0.100537204237315740,	0.100586950776601170,	
+0.100636697064419200,	0.100686443100645950,	0.100736188885156130,	0.100785934417825860,	0.100835679698531190,	0.100885424727146870,	0.100935169503549000,	0.100984914027613200,	
+0.101034658299215550,	0.101084402318230820,	0.101134146084535080,	0.101183889598003980,	0.101233632858513600,	0.101283375865938690,	0.101333118620155340,	0.101382861121039200,	
+0.101432603368466340,	0.101482345362311540,	0.101532087102450870,	0.101581828588759980,	0.101631569821114970,	0.101681310799390580,	0.101731051523462930,	0.101780791993208080,	
+0.101830532208500820,	0.101880272169217220,	0.101930011875232930,	0.101979751326424060,	0.102029490522665380,	0.102079229463832970,	0.102128968149802480,	0.102178706580450020,	
+0.102228444755650350,	0.102278182675279560,	0.102327920339213310,	0.102377657747327720,	0.102427394899497540,	0.102477131795598860,	0.102526868435507360,	0.102576604819099120,	
+0.102626340946248940,	0.102676076816832900,	0.102725812430726660,	0.102775547787806340,	0.102825282887946720,	0.102875017731023880,	0.102924752316913930,	0.102974486645491680,	
+0.103024220716633200,	0.103073954530214160,	0.103123688086110680,	0.103173421384197550,	0.103223154424350860,	0.103272887206446280,	0.103322619730359930,	0.103372351995966570,	
+0.103422084003142360,	0.103471815751762920,	0.103521547241704380,	0.103571278472841550,	0.103621009445050510,	0.103670740158206940,	0.103720470612186980,	0.103770200806865390,	
+0.103819930742118300,	0.103869660417821820,	0.103919389833850750,	0.103969118990081210,	0.104018847886388880,	0.104068576522649850,	0.104118304898738950,	0.104168033014532290,	
+0.104217760869905540,	0.104267488464734840,	0.104317215798894970,	0.104366942872262060,	0.104416669684711790,	0.104466396236120290,	0.104516122526362370,	0.104565848555314130,	
+0.104615574322851280,	0.104665299828849920,	0.104715025073184880,	0.104764750055732270,	0.104814474776368240,	0.104864199234967560,	0.104913923431406400,	0.104963647365560420,	
+0.105013371037305780,	0.105063094446517260,	0.105112817593071010,	0.105162540476842700,	0.105212263097708490,	0.105261985455543190,	0.105311707550222910,	0.105361429381623360,	
+0.105411150949620700,	0.105460872254089700,	0.105510593294906530,	0.105560314071946880,	0.105610034585086870,	0.105659754834201360,	0.105709474819166440,	0.105759194539857840,	
+0.105808913996151690,	0.105858633187922810,	0.105908352115047360,	0.105958070777401460,	0.106007789174859950,	0.106057507307298970,	0.106107225174594210,	0.106156942776621840,	
+0.106206660113256660,	0.106256377184374850,	0.106306093989852080,	0.106355810529564510,	0.106405526803386980,	0.106455242811195640,	0.106504958552866190,	0.106554674028274790,	
+0.106604389237296250,	0.106654104179806750,	0.106703818855681980,	0.106753533264798110,	0.106803247407029960,	0.106852961282253690,	0.106902674890345470,	0.106952388231180110,	
+0.107002101304633790,	0.107051814110582210,	0.107101526648901530,	0.107151238919466610,	0.107200950922153580,	0.107250662656838180,	0.107300374123396550,	0.107350085321703550,	
+0.107399796251635340,	0.107449506913067640,	0.107499217305876610,	0.107548927429937100,	0.107598637285125270,	0.107648346871316840,	0.107698056188388000,	0.107747765236213570,	
+0.107797474014669730,	0.107847182523632640,	0.107896890762977150,	0.107946598732579450,	0.107996306432315240,	0.108046013862060700,	0.108095721021690700,	0.108145427911081380,	
+0.108195134530108500,	0.108244840878648220,	0.108294546956575410,	0.108344252763766220,	0.108393958300096390,	0.108443663565442120,	0.108493368559678250,	0.108543073282680950,	
+0.108592777734325980,	0.108642481914489500,	0.108692185823046360,	0.108741889459872770,	0.108791592824844460,	0.108841295917837600,	0.108890998738727070,	0.108940701287389030,	
+0.108990403563699680,	0.109040105567533890,	0.109089807298767840,	0.109139508757277250,	0.109189209942938350,	0.109238910855625980,	0.109288611495216320,	0.109338311861585140,	
+0.109388011954608620,	0.109437711774161630,	0.109487411320120370,	0.109537110592360570,	0.109586809590758440,	0.109636508315188840,	0.109686206765527970,	0.109735904941651590,	
+0.109785602843435890,	0.109835300470755720,	0.109884997823487320,	0.109934694901506850,	0.109984391704689220,	0.110034088232910610,	0.110083784486046780,	0.110133480463973910,	
+0.110183176166566920,	0.110232871593701970,	0.110282566745254860,	0.110332261621101770,	0.110381956221117570,	0.110431650545178490,	0.110481344593160280,	0.110531038364939160,	
+0.110580731860390000,	0.110630425079389000,	0.110680118021811950,	0.110729810687535040,	0.110779503076433170,	0.110829195188382520,	0.110878887023259350,	0.110928578580938510,	
+0.110978269861296220,	0.111027960864208260,	0.111077651589550840,	0.111127342037198850,	0.111177032207028500,	0.111226722098915570,	0.111276411712736280,	0.111326101048365520,	
+0.111375790105679500,	0.111425478884554010,	0.111475167384865260,	0.111524855606488160,	0.111574543549298910,	0.111624231213173300,	0.111673918597987570,	0.111723605703616590,	
+0.111773292529936600,	0.111822979076823810,	0.111872665344153150,	0.111922351331800810,	0.111972037039642610,	0.112021722467554740,	0.112071407615412120,	0.112121092483090990,	
+0.112170777070467130,	0.112220461377416770,	0.112270145403814820,	0.112319829149537490,	0.112369512614460600,	0.112419195798460370,	0.112468878701411700,	0.112518561323190840,	
+0.112568243663673570,	0.112617925722736140,	0.112667607500253450,	0.112717288996101740,	0.112766970210156820,	0.112816651142294900,	0.112866331792390930,	0.112916012160321110,	
+0.112965692245961720,	0.113015372049187640,	0.113065051569875130,	0.113114730807900010,	0.113164409763138490,	0.113214088435465500,	0.113263766824757310,	0.113313444930889680,	
+0.113363122753738890,	0.113412800293179850,	0.113462477549088810,	0.113512154521341570,	0.113561831209814390,	0.113611507614382200,	0.113661183734921230,	0.113710859571307300,	
+0.113760535123416680,	0.113810210391124250,	0.113859885374306320,	0.113909560072839100,	0.113959234486597550,	0.114008908615457910,	0.114058582459296010,	0.114108256017988070,	
+0.114157929291409070,	0.114207602279435240,	0.114257274981942410,	0.114306947398806830,	0.114356619529903430,	0.114406291375108490,	0.114455962934297830,	0.114505634207347690,	
+0.114555305194133030,	0.114604975894530100,	0.114654646308414740,	0.114704316435663200,	0.114753986276150440,	0.114803655829752700,	0.114853325096346270,	0.114902994075806080,	
+0.114952662768008400,	0.115002331172829070,	0.115051999290144360,	0.115101667119829190,	0.115151334661759880,	0.115201001915812220,	0.115250668881862490,	0.115300335559785650,	
+0.115350001949457980,	0.115399668050755300,	0.115449333863553880,	0.115498999387728700,	0.115548664623156020,	0.115598329569711670,	0.115647994227271940,	0.115697658595711790,	
+0.115747322674907490,	0.115796986464734880,	0.115846649965070240,	0.115896313175788550,	0.115945976096766060,	0.115995638727879090,	0.116045301069002570,	0.116094963120012790,	
+0.116144624880785610,	0.116194286351197320,	0.116243947531122850,	0.116293608420438520,	0.116343269019020190,	0.116392929326744110,	0.116442589343485270,	0.116492249069119950,	
+0.116541908503524010,	0.116591567646573750,	0.116641226498144110,	0.116690885058111410,	0.116740543326351500,	0.116790201302740690,	0.116839858987153920,	0.116889516379467500,	
+0.116939173479557730,	0.116988830287299590,	0.117038486802569370,	0.117088143025242940,	0.117137798955196590,	0.117187454592305300,	0.117237109936445370,	0.117286764987492670,	
+0.117336419745323510,	0.117386074209812840,	0.117435728380837000,	0.117485382258271830,	0.117535035841993650,	0.117584689131877430,	0.117634342127799500,	0.117683994829635710,	
+0.117733647237262370,	0.117783299350554480,	0.117832951169388330,	0.117882602693640260,	0.117932253923185220,	0.117981904857899560,	0.118031555497659130,	0.118081205842340260,	
+0.118130855891817930,	0.118180505645968460,	0.118230155104667740,	0.118279804267792050,	0.118329453135216420,	0.118379101706817160,	0.118428749982470150,	0.118478397962051690,	
+0.118528045645436800,	0.118577693032501800,	0.118627340123122570,	0.118676986917175420,	0.118726633414535380,	0.118776279615078740,	0.118825925518681850,	0.118875571125219700,	
+0.118925216434568620,	0.118974861446604500,	0.119024506161203680,	0.119074150578241140,	0.119123794697593220,	0.119173438519135820,	0.119223082042745270,	0.119272725268296580,	
+0.119322368195666060,	0.119372010824729630,	0.119421653155363610,	0.119471295187443020,	0.119520936920844190,	0.119570578355443020,	0.119620219491115840,	0.119669860327737670,	
+0.119719500865184850,	0.119769141103333280,	0.119818781042059300,	0.119868420681237920,	0.119918060020745500,	0.119967699060458360,	0.120017337800251530,	0.120066976240001360,	
+0.120116614379583750,	0.120166252218875040,	0.120215889757750270,	0.120265526996085770,	0.120315163933757450,	0.120364800570641670,	0.120414436906613440,	0.120464072941549120,	
+0.120513708675324610,	0.120563344107816270,	0.120612979238899150,	0.120662614068449550,	0.120712248596343440,	0.120761882822457150,	0.120811516746665700,	0.120861150368845450,	
+0.120910783688872790,	0.120960416706622710,	0.121010049421971590,	0.121059681834795350,	0.121109313944970350,	0.121158945752371610,	0.121208577256875530,	0.121258208458358000,	
+0.121307839356695370,	0.121357469951762720,	0.121407100243436390,	0.121456730231592310,	0.121506359916106840,	0.121555989296855040,	0.121605618373713250,	0.121655247146557440,	
+0.121704875615263930,	0.121754503779707800,	0.121804131639765400,	0.121853759195313130,	0.121903386446226020,	0.121953013392380430,	0.122002640033652310,	0.122052266369918030,	
+0.122101892401052650,	0.122151518126932530,	0.122201143547433620,	0.122250768662432300,	0.122300393471803600,	0.122350017975423940,	0.122399642173169220,	0.122449266064915840,	
+0.122498889650538840,	0.122548512929914630,	0.122598135902919140,	0.122647758569428740,	0.122697380929318510,	0.122747002982464830,	0.122796624728743640,	0.122846246168031330,	
+0.122895867300202950,	0.122945488125134920,	0.122995108642703600,	0.123044728852784070,	0.123094348755252730,	0.123143968349985510,	0.123193587636858810,	0.123243206615747700,	
+0.123292825286528560,	0.123342443649077370,	0.123392061703270510,	0.123441679448983060,	0.123491296886091410,	0.123540914014471510,	0.123590530833999760,	0.123640147344551250,	
+0.123689763546002390,	0.123739379438229100,	0.123788995021107810,	0.123838610294513580,	0.123888225258322840,	0.123937839912411970,	0.123987454256656070,	0.124037068290931520,	
+0.124086682015114300,	0.124136295429080820,	0.124185908532706170,	0.124235521325866740,	0.124285133808438500,	0.124334745980297880,	0.124384357841319950,	0.124433969391381110,	
+0.124483580630357370,	0.124533191558125100,	0.124582802174559430,	0.124632412479536740,	0.124682022472933020,	0.124731632154624680,	0.124781241524486830,	0.124830850582395870,	
+0.124880459328228240,	0.124930067761859000,	0.124979675883164600,	0.125029283692021010,	0.125078891188304650,	0.125128498371890630,	0.125178105242655350,	0.125227711800474820,	
+0.125277318045225430,	0.125326923976782330,	0.125376529595021910,	0.125426134899820160,	0.125475739891053510,	0.125525344568597070,	0.125574948932327290,	0.125624552982120140,	
+0.125674156717852010,	0.125723760139398070,	0.125773363246634740,	0.125822966039438430,	0.125872568517684270,	0.125922170681248670,	0.125971772530007660,	0.126021374063837680,	
+0.126070975282613800,	0.126120576186212470,	0.126170176774509730,	0.126219777047381960,	0.126269377004704310,	0.126318976646353250,	0.126368575972204720,	0.126418174982135200,	
+0.126467773676019770,	0.126517372053734950,	0.126566970115156690,	0.126616567860161430,	0.126666165288624320,	0.126715762400421790,	0.126765359195429860,	0.126814955673524990,	
+0.126864551834582260,	0.126914147678478170,	0.126963743205089160,	0.127013338414290330,	0.127062933305958160,	0.127112527879968660,	0.127162122136198260,	0.127211716074522140,	
+0.127261309694816720,	0.127310902996958020,	0.127360495980822520,	0.127410088646285340,	0.127459680993222910,	0.127509273021511300,	0.127558864731026960,	0.127608456121645010,	
+0.127658047193241890,	0.127707637945693670,	0.127757228378876820,	0.127806818492666420,	0.127856408286939010,	0.127905997761570990,	0.127955586916437550,	0.128005175751415150,	
+0.128054764266379790,	0.128104352461207970,	0.128153940335774850,	0.128203527889956840,	0.128253115123630020,	0.128302702036670880,	0.128352288628954540,	0.128401874900357450,	
+0.128451460850755680,	0.128501046480025720,	0.128550631788042690,	0.128600216774683060,	0.128649801439822910,	0.128699385783338700,	0.128748969805105580,	0.128798553505000050,	
+0.128848136882898560,	0.128897719938676270,	0.128947302672209720,	0.128996885083374900,	0.129046467172048290,	0.129096048938105080,	0.129145630381421740,	0.129195211501874350,	
+0.129244792299339360,	0.129294372773691930,	0.129343952924808600,	0.129393532752565380,	0.129443112256838740,	0.129492691437503920,	0.129542270294437320,	0.129591848827515090,	
+0.129641427036613660,	0.129691004921608230,	0.129740582482375270,	0.129790159718790880,	0.129839736630731510,	0.129889313218072370,	0.129938889480689930,	0.129988465418460740,	
+0.130038041031259930,	0.130087616318964010,	0.130137191281449040,	0.130186765918591550,	0.130236340230266700,	0.130285914216351000,	0.130335487876720500,	0.130385061211251760,	
+0.130434634219819880,	0.130484206902301450,	0.130533779258572490,	0.130583351288509510,	0.130632922991987730,	0.130682494368883630,	0.130732065419073310,	0.130781636142433240,	
+0.130831206538838670,	0.130880776608166080,	0.130930346350291970,	0.130979915765091550,	0.131029484852441370,	0.131079053612217440,	0.131128622044296340,	0.131178190148553250,	
+0.131227757924864690,	0.131277325373106710,	0.131326892493155850,	0.131376459284887340,	0.131426025748177690,	0.131475591882902950,	0.131525157688939690,	0.131574723166163090,	
+0.131624288314449690,	0.131673853133675550,	0.131723417623717250,	0.131772981784449930,	0.131822545615750190,	0.131872109117494500,	0.131921672289558090,	0.131971235131817520,	
+0.132020797644148870,	0.132070359826428650,	0.132119921678532090,	0.132169483200335720,	0.132219044391715640,	0.132268605252548410,	0.132318165782709220,	0.132367725982074610,	
+0.132417285850520680,	0.132466845387924000,	0.132516404594159750,	0.132565963469104490,	0.132615522012634300,	0.132665080224625780,	0.132714638104954100,	0.132764195653495810,	
+0.132813752870127500,	0.132863309754724350,	0.132912866307162950,	0.132962422527319350,	0.133011978415070150,	0.133061533970290580,	0.133111089192857160,	0.133160644082646020,	
+0.133210198639533710,	0.133259752863395450,	0.133309306754107820,	0.133358860311546920,	0.133408413535589330,	0.133457966426110240,	0.133507518982986240,	0.133557071206093450,	
+0.133606623095308410,	0.133656174650506360,	0.133705725871563900,	0.133755276758357110,	0.133804827310762600,	0.133854377528655530,	0.133903927411912570,	0.133953476960410180,	
+0.134003026174023680,	0.134052575052629630,	0.134102123596104130,	0.134151671804323750,	0.134201219677163780,	0.134250767214500740,	0.134300314416210760,	0.134349861282170470,	
+0.134399407812255070,	0.134448954006341160,	0.134498499864304870,	0.134548045386022750,	0.134597590571370110,	0.134647135420223470,	0.134696679932458980,	0.134746224107953260,	
+0.134795767946581520,	0.134845311448220350,	0.134894854612746360,	0.134944397440034780,	0.134993939929962230,	0.135043482082404800,	0.135093023897239120,	0.135142565374340440,	
+0.135192106513585350,	0.135241647314850000,	0.135291187778010940,	0.135340727902943490,	0.135390267689524220,	0.135439807137629290,	0.135489346247135290,	0.135538885017917470,	
+0.135588423449852450,	0.135637961542816350,	0.135687499296685780,	0.135737036711336050,	0.135786573786643720,	0.135836110522485400,	0.135885646918736340,	0.135935182975273180,	
+0.135984718691972070,	0.136034254068709590,	0.136083789105361040,	0.136133323801803010,	0.136182858157911670,	0.136232392173563640,	0.136281925848634190,	0.136331459182999910,	
+0.136380992176536990,	0.136430524829122020,	0.136480057140630300,	0.136529589110938460,	0.136579120739922620,	0.136628652027459440,	0.136678182973424180,	0.136727713577693450,	
+0.136777243840143450,	0.136826773760650780,	0.136876303339090730,	0.136925832575339940,	0.136975361469274970,	0.137024890020771200,	0.137074418229705170,	0.137123946095953130,	
+0.137173473619391640,	0.137223000799896020,	0.137272527637342910,	0.137322054131608470,	0.137371580282569350,	0.137421106090100830,	0.137470631554079570,	0.137520156674381690,	
+0.137569681450883880,	0.137619205883461440,	0.137668729971990980,	0.137718253716348660,	0.137767777116411190,	0.137817300172053820,	0.137866822883153190,	0.137916345249585960,	
+0.137965867271227420,	0.138015388947954200,	0.138064910279642520,	0.138114431266169010,	0.138163951907408960,	0.138213472203239040,	0.138262992153535460,	0.138312511758174830,	
+0.138362031017032460,	0.138411549929985030,	0.138461068496908730,	0.138510586717680180,	0.138560104592174740,	0.138609622120269030,	0.138659139301839260,	0.138708656136762090,	
+0.138758172624912860,	0.138807688766168170,	0.138857204560404710,	0.138906720007497790,	0.138956235107324080,	0.139005749859759780,	0.139055264264681510,	0.139104778321964690,	
+0.139154292031485910,	0.139203805393121380,	0.139253318406747790,	0.139302831072240480,	0.139352343389476080,	0.139401855358330830,	0.139451366978681350,	0.139500878250403050,	
+0.139550389173372540,	0.139599899747466060,	0.139649409972560260,	0.139698919848530500,	0.139748429375253450,	0.139797938552605750,	0.139847447380462790,	0.139896955858701180,	
+0.139946463987197180,	0.139995971765827480,	0.140045479194467410,	0.140094986272993630,	0.140144493001282400,	0.140193999379210370,	0.140243505406652900,	0.140293011083486690,	
+0.140342516409587920,	0.140392021384833310,	0.140441526009098210,	0.140491030282259290,	0.140540534204192800,	0.140590037774775380,	0.140639540993882480,	0.140689043861390690,	
+0.140738546377176310,	0.140788048541115980,	0.140837550353085120,	0.140887051812960380,	0.140936552920618440,	0.140986053675934670,	0.141035554078785790,	0.141085054129048010,	
+0.141134553826598010,	0.141184053171311220,	0.141233552163064300,	0.141283050801733480,	0.141332549087195470,	0.141382047019325660,	0.141431544598000720,	0.141481041823096950,	
+0.141530538694490980,	0.141580035212058250,	0.141629531375675410,	0.141679027185218740,	0.141728522640564960,	0.141778017741589430,	0.141827512488168860,	0.141877006880179930,	
+0.141926500917498060,	0.141975994599999930,	0.142025487927561810,	0.142074980900060430,	0.142124473517371150,	0.142173965779370660,	0.142223457685935280,	0.142272949236941700,	
+0.142322440432265300,	0.142371931271782800,	0.142421421755370450,	0.142470911882905000,	0.142520401654261860,	0.142569891069317670,	0.142619380127948780,	0.142668868830031880,	
+0.142718357175442350,	0.142767845164056940,	0.142817332795752370,	0.142866820070403990,	0.142916306987888600,	0.142965793548082420,	0.143015279750862200,	0.143064765596103340,	
+0.143114251083682590,	0.143163736213476170,	0.143213220985360880,	0.143262705399212100,	0.143312189454906540,	0.143361673152320510,	0.143411156491330740,	0.143460639471812620,	
+0.143510122093642920,	0.143559604356697930,	0.143609086260854340,	0.143658567805987620,	0.143708048991974450,	0.143757529818691190,	0.143807010286014530,	0.143856490393819900,	
+0.143905970141984060,	0.143955449530383720,	0.144004928558894320,	0.144054407227392600,	0.144103885535754870,	0.144153363483857850,	0.144202841071576990,	0.144252318298789010,	
+0.144301795165370260,	0.144351271671197460,	0.144400747816146040,	0.144450223600092740,	0.144499699022913870,	0.144549174084486230,	0.144598648784685170,	0.144648123123387510,	
+0.144697597100469560,	0.144747070715808030,	0.144796543969278410,	0.144846016860757400,	0.144895489390121810,	0.144944961557247040,	0.144994433362009870,	0.145043904804286610,	
+0.145093375883954050,	0.145142846600887610,	0.145192316954964040,	0.145241786946059690,	0.145291256574051290,	0.145340725838814330,	0.145390194740225550,	0.145439663278161270,	
+0.145489131452498280,	0.145538599263112020,	0.145588066709879280,	0.145637533792676350,	0.145687000511380030,	0.145736466865865780,	0.145785932856010350,	0.145835398481690550,	
+0.145884863742781780,	0.145934328639160890,	0.145983793170704150,	0.146033257337288360,	0.146082721138789010,	0.146132184575082870,	0.146181647646046240,	0.146231110351555920,	
+0.146280572691487420,	0.146330034665717450,	0.146379496274122420,	0.146428957516579080,	0.146478418392962910,	0.146527878903150690,	0.146577339047018810,	0.146626798824443960,	
+0.146676258235301730,	0.146725717279468810,	0.146775175956822050,	0.146824634267236910,	0.146874092210590200,	0.146923549786758260,	0.146973006995617860,	0.147022463837044510,	
+0.147071920310915010,	0.147121376417105710,	0.147170832155493400,	0.147220287525953590,	0.147269742528363030,	0.147319197162598140,	0.147368651428535670,	0.147418105326051150,	
+0.147467558855021390,	0.147517012015322690,	0.147566464806831920,	0.147615917229424550,	0.147665369282977380,	0.147714820967366790,	0.147764272282469580,	0.147813723228161280,	
+0.147863173804318630,	0.147912624010818510,	0.147962073847536370,	0.148011523314349080,	0.148060972411132950,	0.148110421137764850,	0.148159869494120240,	0.148209317480075960,	
+0.148258765095508390,	0.148308212340294370,	0.148357659214309350,	0.148407105717430180,	0.148456551849533270,	0.148505997610495400,	0.148555443000192110,	0.148604888018500190,	
+0.148654332665296070,	0.148703776940456560,	0.148753220843857140,	0.148802664375374700,	0.148852107534886040,	0.148901550322266650,	0.148950992737393400,	0.149000434780142660,	
+0.149049876450391280,	0.149099317748014740,	0.149148758672889930,	0.149198199224893220,	0.149247639403901460,	0.149297079209790160,	0.149346518642436170,	0.149395957701715880,	
+0.149445396387506120,	0.149494834699682420,	0.149544272638121640,	0.149593710202700210,	0.149643147393294930,	0.149692584209781320,	0.149742020652036260,	0.149791456719936600,	
+0.149840892413357850,	0.149890327732176860,	0.149939762676270070,	0.149989197245514290,	0.150038631439785100,	0.150088065258959320,	0.150137498702913370,	0.150186931771524150,	
+0.150236364464667120,	0.150285796782219210,	0.150335228724056770,	0.150384660290056730,	0.150434091480094590,	0.150483522294047210,	0.150532952731791040,	0.150582382793202910,	
+0.150631812478158410,	0.150681241786534360,	0.150730670718207200,	0.150780099273053830,	0.150829527450949740,	0.150878955251771860,	0.150928382675397020,	0.150977809721700770,	
+0.151027236390560010,	0.151076662681851160,	0.151126088595451100,	0.151175514131235370,	0.151224939289080850,	0.151274364068863960,	0.151323788470461630,	0.151373212493749380,	
+0.151422636138604130,	0.151472059404902240,	0.151521482292520660,	0.151570904801334950,	0.151620326931221960,	0.151669748682058150,	0.151719170053720430,	0.151768591046084340,	
+0.151818011659026750,	0.151867431892424600,	0.151916851746153410,	0.151966271220090100,	0.152015690314111110,	0.152065109028093340,	0.152114527361912330,	0.152163945315445030,	
+0.152213362888567880,	0.152262780081157730,	0.152312196893090200,	0.152361613324242170,	0.152411029374490140,	0.152460445043710920,	0.152509860331780210,	0.152559275238574820,	
+0.152608689763971240,	0.152658103907846370,	0.152707517670075820,	0.152756931050536450,	0.152806344049105200,	0.152855756665657650,	0.152905168900070720,	0.152954580752220880,	
+0.153003992221984990,	0.153053403309238720,	0.153102814013858920,	0.153152224335722090,	0.153201634274705120,	0.153251043830683640,	0.153300453003534560,	0.153349861793134340,	
+0.153399270199359890,	0.153448678222086850,	0.153498085861192100,	0.153547493116552140,	0.153596899988043880,	0.153646306475542950,	0.153695712578926220,	0.153745118298070690,	
+0.153794523632851900,	0.153843928583146800,	0.153893333148831880,	0.153942737329784090,	0.153992141125878970,	0.154041544536993540,	0.154090947563004230,	0.154140350203788000,	
+0.154189752459220450,	0.154239154329178510,	0.154288555813538700,	0.154337956912177910,	0.154387357624971830,	0.154436757951797320,	0.154486157892530950,	0.154535557447049580,	
+0.154584956615228920,	0.154634355396945840,	0.154683753792076880,	0.154733151800498990,	0.154782549422087770,	0.154831946656720180,	0.154881343504273160,	0.154930739964622340,	
+0.154980136037644660,	0.155029531723216650,	0.155078927021215260,	0.155128321931516100,	0.155177716453996140,	0.155227110588531890,	0.155276504335000310,	0.155325897693277010,	
+0.155375290663238990,	0.155424683244762720,	0.155474075437725210,	0.155523467242002030,	0.155572858657470230,	0.155622249684006260,	0.155671640321487090,	0.155721030569788390,	
+0.155770420428787110,	0.155819809898360250,	0.155869198978383390,	0.155918587668733540,	0.155967975969287240,	0.156017363879921410,	0.156066751400511770,	0.156116138530935230,	
+0.156165525271068330,	0.156214911620788070,	0.156264297579970100,	0.156313683148491370,	0.156363068326228430,	0.156412453113058260,	0.156461837508856530,	0.156511221513500190,	
+0.156560605126865810,	0.156609988348830360,	0.156659371179269510,	0.156708753618060190,	0.156758135665079460,	0.156807517320202950,	0.156856898583307650,	0.156906279454270080,	
+0.156955659932967260,	0.157005040019274870,	0.157054419713069850,	0.157103799014228800,	0.157153177922628700,	0.157202556438145210,	0.157251934560655310,	0.157301312290035580,	
+0.157350689626163030,	0.157400066568913280,	0.157449443118163390,	0.157498819273789890,	0.157548195035669770,	0.157597570403678750,	0.157646945377693780,	0.157696319957591450,	
+0.157745694143248770,	0.157795067934541400,	0.157844441331346370,	0.157893814333540690,	0.157943186941000010,	0.157992559153601360,	0.158041930971221320,	0.158091302393736920,	
+0.158140673421023780,	0.158190044052958970,	0.158239414289419070,	0.158288784130281050,	0.158338153575420660,	0.158387522624714870,	0.158436891278040250,	0.158486259535273870,	
+0.158535627396291400,	0.158584994860969860,	0.158634361929185810,	0.158683728600816340,	0.158733094875737060,	0.158782460753825070,	0.158831826234957370,	0.158881191319009660,	
+0.158930556005858980,	0.158979920295381880,	0.159029284187455430,	0.159078647681955340,	0.159128010778758660,	0.159177373477741910,	0.159226735778782190,	0.159276097681755160,	
+0.159325459186537900,	0.159374820293007010,	0.159424181001039500,	0.159473541310511090,	0.159522901221298840,	0.159572260733279320,	0.159621619846329610,	0.159670978560325390,	
+0.159720336875143730,	0.159769694790661660,	0.159819052306754920,	0.159868409423300550,	0.159917766140175170,	0.159967122457255810,	0.160016478374418180,	0.160065833891539390,	
+0.160115189008495970,	0.160164543725165060,	0.160213898041422330,	0.160263251957144860,	0.160312605472209270,	0.160361958586492580,	0.160411311299870570,	0.160460663612220280,	
+0.160510015523418340,	0.160559367033341780,	0.160608718141866390,	0.160658068848869180,	0.160707419154227260,	0.160756769057816330,	0.160806118559513490,	0.160855467659195370,	
+0.160904816356738980,	0.160954164652020140,	0.161003512544915880,	0.161052860035302840,	0.161102207123058090,	0.161151553808057370,	0.161200900090177790,	0.161250245969295960,	
+0.161299591445288940,	0.161348936518032500,	0.161398281187403710,	0.161447625453279230,	0.161496969315536140,	0.161546312774050150,	0.161595655828698420,	0.161644998479357540,	
+0.161694340725904580,	0.161743682568215340,	0.161793024006166910,	0.161842365039636340,	0.161891705668499420,	0.161941045892633250,	0.161990385711914460,	0.162039725126220140,	
+0.162089064135426060,	0.162138402739409330,	0.162187740938046610,	0.162237078731214960,	0.162286416118790160,	0.162335753100649320,	0.162385089676669120,	0.162434425846726630,	
+0.162483761610697640,	0.162533096968459220,	0.162582431919888080,	0.162631766464861300,	0.162681100603254660,	0.162730434334945270,	0.162779767659810230,	0.162829100577725340,	
+0.162878433088567700,	0.162927765192213970,	0.162977096888541260,	0.163026428177425380,	0.163075759058743410,	0.163125089532372060,	0.163174419598188430,	0.163223749256068310,	
+0.163273078505888790,	0.163322407347526590,	0.163371735780858840,	0.163421063805761270,	0.163470391422111060,	0.163519718629784870,	0.163569045428659830,	0.163618371818611720,	
+0.163667697799517700,	0.163717023371254850,	0.163766348533699040,	0.163815673286727330,	0.163864997630216420,	0.163914321564043480,	0.163963645088084310,	0.164012968202216000,	
+0.164062290906315300,	0.164111613200259270,	0.164160935083923790,	0.164210256557185990,	0.164259577619922520,	0.164308898272010560,	0.164358218513325910,	0.164407538343745720,	
+0.164456857763146700,	0.164506176771405940,	0.164555495368399330,	0.164604813554003970,	0.164654131328096560,	0.164703448690554280,	0.164752765641252940,	0.164802082180069670,	
+0.164851398306881640,	0.164900714021564670,	0.164950029323995940,	0.164999344214052100,	0.165048658691610370,	0.165097972756546560,	0.165147286408737800,	0.165196599648060800,	
+0.165245912474392770,	0.165295224887609530,	0.165344536887588210,	0.165393848474205550,	0.165443159647338690,	0.165492470406863520,	0.165541780752657160,	0.165591090684596350,	
+0.165640400202558270,	0.165689709306418740,	0.165739017996054920,	0.165788326271344020,	0.165837634132161850,	0.165886941578385600,	0.165936248609891980,	0.165985555226558200,	
+0.166034861428260070,	0.166084167214874820,	0.166133472586279110,	0.166182777542350200,	0.166232082082963860,	0.166281386207997340,	0.166330689917327380,	0.166379993210831110,	
+0.166429296088384420,	0.166478598549864490,	0.166527900595148050,	0.166577202224112320,	0.166626503436633130,	0.166675804232587680,	0.166725104611853160,	0.166774404574305450,	
+0.166823704119821730,	0.166873003248278750,	0.166922301959553680,	0.166971600253522450,	0.167020898130062180,	0.167070195589049700,	0.167119492630362160,	0.167168789253875430,	
+0.167218085459466730,	0.167267381247012850,	0.167316676616390940,	0.167365971567476870,	0.167415266100147900,	0.167464560214280770,	0.167513853909752650,	0.167563147186439500,	
+0.167612440044218440,	0.167661732482966290,	0.167711024502560260,	0.167760316102876230,	0.167809607283791410,	0.167858898045183000,	0.167908188386926890,	0.167957478308900340,	
+0.168006767810980090,	0.168056056893043340,	0.168105345554966030,	0.168154633796625350,	0.168203921617898100,	0.168253209018661450,	0.168302495998791380,	0.168351782558165050,	
+0.168401068696659250,	0.168450354414151240,	0.168499639710516870,	0.168548924585633450,	0.168598209039377670,	0.168647493071626830,	0.168696776682256830,	0.168746059871144880,	
+0.168795342638168200,	0.168844624983202740,	0.168893906906125740,	0.168943188406813940,	0.168992469485144630,	0.169041750140993680,	0.169091030374238370,	0.169140310184755500,	
+0.169189589572422280,	0.169238868537114650,	0.169288147078709840,	0.169337425197084670,	0.169386702892116350,	0.169435980163680860,	0.169485257011655430,	0.169534533435916850,	
+0.169583809436342350,	0.169633085012807910,	0.169682360165190750,	0.169731634893368150,	0.169780909197216000,	0.169830183076611600,	0.169879456531431720,	0.169928729561553640,	
+0.169978002166853300,	0.170027274347207960,	0.170076546102494420,	0.170125817432589980,	0.170175088337370550,	0.170224358816713380,	0.170273628870495320,	0.170322898498593640,	
+0.170372167700884260,	0.170421436477244480,	0.170470704827551080,	0.170519972751681380,	0.170569240249511310,	0.170618507320918130,	0.170667773965779120,	0.170717040183970240,	
+0.170766305975368770,	0.170815571339851510,	0.170864836277295790,	0.170914100787577520,	0.170963364870574010,	0.171012628526162060,	0.171061891754219010,	0.171111154554620780,	
+0.171160416927244650,	0.171209678871967500,	0.171258940388666570,	0.171308201477217870,	0.171357462137498670,	0.171406722369385810,	0.171455982172756570,	0.171505241547486950,	
+0.171554500493454220,	0.171603759010535230,	0.171653017098607280,	0.171702274757546370,	0.171751531987229760,	0.171800788787534770,	0.171850045158337350,	0.171899301099514850,	
+0.171948556610944050,	0.171997811692502330,	0.172047066344065640,	0.172096320565511270,	0.172145574356716100,	0.172194827717557450,	0.172244080647911270,	0.172293333147654910,	
+0.172342585216665210,	0.172391836854819490,	0.172441088061993740,	0.172490338838065250,	0.172539589182910930,	0.172588839096408070,	0.172638088578432660,	0.172687337628862040,	
+0.172736586247573540,	0.172785834434443120,	0.172835082189348090,	0.172884329512165370,	0.172933576402772270,	0.172982822861044800,	0.173032068886860260,	0.173081314480095530,	
+0.173130559640627980,	0.173179804368333580,	0.173229048663089690,	0.173278292524773170,	0.173327535953261340,	0.173376778948430230,	0.173426021510157180,	0.173475263638319080,	
+0.173524505332793260,	0.173573746593455760,	0.173622987420183870,	0.173672227812854930,	0.173721467771345010,	0.173770707295531400,	0.173819946385291050,	0.173869185040501250,	
+0.173918423261038070,	0.173967661046778830,	0.174016898397600400,	0.174066135313380190,	0.174115371793994220,	0.174164607839319810,	0.174213843449233850,	0.174263078623613760,	
+0.174312313362335520,	0.174361547665276480,	0.174410781532313600,	0.174460014963324190,	0.174509247958184290,	0.174558480516771310,	0.174607712638962100,	0.174656944324634050,	
+0.174706175573663190,	0.174755406385926900,	0.174804636761302530,	0.174853866699666160,	0.174903096200895090,	0.174952325264866290,	0.175001553891457110,	0.175050782080543620,	
+0.175100009832003160,	0.175149237145712680,	0.175198464021549540,	0.175247690459389820,	0.175296916459110860,	0.175346142020589600,	0.175395367143703430,	0.175444591828328420,	
+0.175493816074341920,	0.175543039881620870,	0.175592263250042680,	0.175641486179483390,	0.175690708669820370,	0.175739930720931030,	0.175789152332691410,	0.175838373504978910,	
+0.175887594237670470,	0.175936814530643500,	0.175986034383774050,	0.176035253796939520,	0.176084472770016850,	0.176133691302883450,	0.176182909395415370,	0.176232127047490030,	
+0.176281344258984340,	0.176330561029775760,	0.176379777359740310,	0.176428993248755440,	0.176478208696698090,	0.176527423703445650,	0.176576638268874210,	0.176625852392861160,	
+0.176675066075283940,	0.176724279316018610,	0.176773492114942590,	0.176822704471932820,	0.176871916386866720,	0.176921127859620410,	0.176970338890071300,	0.177019549478096310,	
+0.177068759623572910,	0.177117969326377160,	0.177167178586386480,	0.177216387403477870,	0.177265595777528710,	0.177314803708415130,	0.177364011196014530,	0.177413218240203920,	
+0.177462424840860690,	0.177511630997860990,	0.177560836711082170,	0.177610041980401730,	0.177659246805695730,	0.177708451186841620,	0.177757655123716380,	0.177806858616197440,	
+0.177856061664160900,	0.177905264267484240,	0.177954466426044370,	0.178003668139718820,	0.178052869408383630,	0.178102070231916290,	0.178151270610193760,	0.178200470543093490,	
+0.178249670030491610,	0.178298869072265580,	0.178348067668292340,	0.178397265818449390,	0.178446463522612810,	0.178495660780660120,	0.178544857592468240,	0.178594053957914670,	
+0.178643249876875520,	0.178692445349228230,	0.178741640374850300,	0.178790834953617810,	0.178840029085408220,	0.178889222770098580,	0.178938416007566330,	0.178987608797687580,	
+0.179036801140339820,	0.179085993035400040,	0.179135184482745740,	0.179184375482253020,	0.179233566033799360,	0.179282756137261800,	0.179331945792517770,	0.179381134999443470,	
+0.179430323757916290,	0.179479512067813350,	0.179528699929012020,	0.179577887341388520,	0.179627074304820310,	0.179676260819184840,	0.179725446884358290,	0.179774632500218130,	
+0.179823817666641380,	0.179873002383505510,	0.179922186650686710,	0.179971370468062440,	0.180020553835509740,	0.180069736752906110,	0.180118919220127680,	0.180168101237051990,	
+0.180217282803556010,	0.180266463919517260,	0.180315644584811920,	0.180364824799317480,	0.180414004562910960,	0.180463183875469890,	0.180512362736870410,	0.180561541146990020,	
+0.180610719105706200,	0.180659896612895170,	0.180709073668434390,	0.180758250272200940,	0.180807426424072270,	0.180856602123924630,	0.180905777371635460,	0.180954952167081850,	
+0.181004126510141310,	0.181053300400690010,	0.181102473838605450,	0.181151646823764720,	0.181200819356045290,	0.181249991435323390,	0.181299163061476530,	0.181348334234381740,	
+0.181397504953916540,	0.181446675219957170,	0.181495845032381090,	0.181545014391065410,	0.181594183295887610,	0.181643351746723940,	0.181692519743451880,	0.181741687285948940,	
+0.181790854374091370,	0.181840021007756670,	0.181889187186821900,	0.181938352911164610,	0.181987518180661000,	0.182036682995188580,	0.182085847354624460,	0.182135011258846150,	
+0.182184174707729910,	0.182233337701153190,	0.182282500238993140,	0.182331662321127300,	0.182380823947431850,	0.182429985117784330,	0.182479145832061870,	0.182528306090141950,	
+0.182577465891900850,	0.182626625237216090,	0.182675784125965190,	0.182724942558024410,	0.182774100533271260,	0.182823258051582870,	0.182872415112836750,	0.182921571716909180,	
+0.182970727863677660,	0.183019883553019320,	0.183069038784811730,	0.183118193558931110,	0.183167347875254990,	0.183216501733660500,	0.183265655134025180,	0.183314808076225300,	
+0.183363960560138400,	0.183413112585641610,	0.183462264152612440,	0.183511415260927210,	0.183560565910463440,	0.183609716101098660,	0.183658865832709180,	0.183708015105172540,	
+0.183757163918365830,	0.183806312272166680,	0.183855460166451300,	0.183904607601097250,	0.183953754575981730,	0.184002901090982220,	0.184052047145975030,	0.184101192740837720,	
+0.184150337875447430,	0.184199482549681740,	0.184248626763416910,	0.184297770516530510,	0.184346913808899670,	0.184396056640401980,	0.184445199010913750,	0.184494340920312470,	
+0.184543482368475810,	0.184592623355280010,	0.184641763880602630,	0.184690903944320860,	0.184740043546312240,	0.184789182686453090,	0.184838321364621000,	0.184887459580693080,	
+0.184936597334546950,	0.184985734626058910,	0.185034871455106530,	0.185084007821566950,	0.185133143725317810,	0.185182279166235360,	0.185231414144197220,	0.185280548659080560,	
+0.185329682710762940,	0.185378816299120670,	0.185427949424031370,	0.185477082085372220,	0.185526214283020770,	0.185575346016853350,	0.185624477286747580,	0.185673608092581040,	
+0.185722738434230070,	0.185771868311572250,	0.185820997724484740,	0.185870126672845170,	0.185919255156529850,	0.185968383175416390,	0.186017510729382000,	0.186066637818304240,	
+0.186115764442059460,	0.186164890600525270,	0.186214016293578840,	0.186263141521097800,	0.186312266282958490,	0.186361390579038530,	0.186410514409215050,	0.186459637773365740,	
+0.186508760671366900,	0.186557883103096180,	0.186607005068431170,	0.186656126567248200,	0.186705247599424940,	0.186754368164838540,	0.186803488263366650,	0.186852607894885610,	
+0.186901727059273080,	0.186950845756406190,	0.186999963986162640,	0.187049081748418750,	0.187098199043052170,	0.187147315869940050,	0.187196432228960100,	0.187245548119988640,	
+0.187294663542903310,	0.187343778497581300,	0.187392892983900300,	0.187442007001736630,	0.187491120550967920,	0.187540233631471880,	0.187589346243124790,	0.187638458385804340,	
+0.187687570059387770,	0.187736681263752670,	0.187785791998775460,	0.187834902264333780,	0.187884012060304810,	0.187933121386566260,	0.187982230242994490,	0.188031338629467110,	
+0.188080446545861400,	0.188129553992055030,	0.188178660967924320,	0.188227767473346940,	0.188276873508200160,	0.188325979072361650,	0.188375084165707720,	0.188424188788116090,	
+0.188473292939464020,	0.188522396619629110,	0.188571499828487810,	0.188620602565917730,	0.188669704831796600,	0.188718806626000770,	0.188767907948407920,	0.188817008798895290,	
+0.188866109177340590,	0.188915209083620170,	0.188964308517611730,	0.189013407479192510,	0.189062505968240230,	0.189111603984631230,	0.189160701528243210,	0.189209798598953480,	
+0.189258895196639660,	0.189307991321178150,	0.189357086972446690,	0.189406182150322510,	0.189455276854683300,	0.189504371085405470,	0.189553464842366710,	0.189602558125444710,	
+0.189651650934515890,	0.189700743269457960,	0.189749835130148150,	0.189798926516464180,	0.189848017428282470,	0.189897107865480720,	0.189946197827936200,	0.189995287315526620,	
+0.190044376328128400,	0.190093464865619200,	0.190142552927876380,	0.190191640514777600,	0.190240727626199290,	0.190289814262019130,	0.190338900422114460,	0.190387986106362980,	
+0.190437071314641080,	0.190486156046826500,	0.190535240302796980,	0.190584324082428920,	0.190633407385600060,	0.190682490212187670,	0.190731572562069490,	0.190780654435121960,	
+0.190829735831222760,	0.190878816750249260,	0.190927897192079120,	0.190976977156588820,	0.191026056643656070,	0.191075135653158170,	0.191124214184972880,	0.191173292238976610,	
+0.191222369815047120,	0.191271446913061720,	0.191320523532898110,	0.191369599674432760,	0.191418675337543420,	0.191467750522107820,	0.191516825228002420,	0.191565899455104940,	
+0.191614973203292740,	0.191664046472443510,	0.191713119262433730,	0.191762191573141170,	0.191811263404443130,	0.191860334756217360,	0.191909405628340330,	0.191958476020689770,	
+0.192007545933143010,	0.192056615365577860,	0.192105684317870700,	0.192154752789899350,	0.192203820781541110,	0.192252888292673760,	0.192301955323173730,	0.192351021872918830,	
+0.192400087941786370,	0.192449153529654140,	0.192498218636398570,	0.192547283261897460,	0.192596347406028600,	0.192645411068668420,	0.192694474249694710,	0.192743536948984800,	
+0.192792599166416500,	0.192841660901866270,	0.192890722155211890,	0.192939782926330680,	0.192988843215100490,	0.193037903021397730,	0.193086962345100200,	0.193136021186085280,	
+0.193185079544230750,	0.193234137419413060,	0.193283194811510050,	0.193332251720399060,	0.193381308145957860,	0.193430364088062970,	0.193479419546592150,	0.193528474521423220,	
+0.193577529012432660,	0.193626583019498310,	0.193675636542497480,	0.193724689581307980,	0.193773742135806340,	0.193822794205870340,	0.193871845791377370,	0.193920896892205210,	
+0.193969947508230350,	0.194018997639330640,	0.194068047285383460,	0.194117096446266570,	0.194166145121856510,	0.194215193312031080,	0.194264241016667670,	0.194313288235644090,	
+0.194362334968836870,	0.194411381216123810,	0.194460426977382720,	0.194509472252490130,	0.194558517041323880,	0.194607561343761310,	0.194656605159680280,	0.194705648488957300,	
+0.194754691331470190,	0.194803733687096360,	0.194852775555713650,	0.194901816937198550,	0.194950857831428900,	0.194999898238282120,	0.195048938157636020,	0.195097977589367140,	
+0.195147016533353340,	0.195196054989471960,	0.195245092957600900,	0.195294130437616680,	0.195343167429397110,	0.195392203932819640,	0.195441239947762080,	0.195490275474101000,	
+0.195539310511714220,	0.195588345060479620,	0.195637379120273710,	0.195686412690974340,	0.195735445772458940,	0.195784478364605390,	0.195833510467290170,	0.195882542080391190,	
+0.195931573203785870,	0.195980603837352020,	0.196029633980966260,	0.196078663634506410,	0.196127692797849890,	0.196176721470874560,	0.196225749653457020,	0.196274777345475080,	
+0.196323804546806200,	0.196372831257328270,	0.196421857476917790,	0.196470883205452700,	0.196519908442810810,	0.196568933188868730,	0.196617957443504300,	0.196666981206595010,	
+0.196716004478018680,	0.196765027257651910,	0.196814049545372540,	0.196863071341058100,	0.196912092644586370,	0.196961113455834000,	0.197010133774678850,	0.197059153600998350,	
+0.197108172934670390,	0.197157191775571590,	0.197206210123579810,	0.197255227978572510,	0.197304245340427540,	0.197353262209021550,	0.197402278584232400,	0.197451294465937980,	
+0.197500309854014900,	0.197549324748341030,	0.197598339148793850,	0.197647353055251270,	0.197696366467589870,	0.197745379385687560,	0.197794391809421790,	0.197843403738670490,	
+0.197892415173310220,	0.197941426113218940,	0.197990436558274090,	0.198039446508353560,	0.198088455963333990,	0.198137464923093280,	0.198186473387508920,	0.198235481356458800,	
+0.198284488829819560,	0.198333495807469060,	0.198382502289285310,	0.198431508275144830,	0.198480513764925590,	0.198529518758505050,	0.198578523255761170,	0.198627527256570540,	
+0.198676530760811100,	0.198725533768360300,	0.198774536279096140,	0.198823538292895170,	0.198872539809635400,	0.198921540829194250,	0.198970541351449680,	0.199019541376278340,	
+0.199068540903558130,	0.199117539933166580,	0.199166538464981590,	0.199215536498879850,	0.199264534034739260,	0.199313531072437320,	0.199362527611852000,	0.199411523652859940,	
+0.199460519195339050,	0.199509514239167300,	0.199558508784221320,	0.199607502830379090,	0.199656496377518090,	0.199705489425516300,	0.199754481974250330,	0.199803474023598160,	
+0.199852465573437300,	0.199901456623645720,	0.199950447174100070,	0.199999437224678310,	0.200048426775257940,	0.200097415825716940,	0.200146404375931980,	0.200195392425780990,	
+0.200244379975141520,	0.200293367023891560,	0.200342353571907720,	0.200391339619067990,	0.200440325165250370,	0.200489310210331480,	0.200538294754189330,	0.200587278796701430,	
+0.200636262337745790,	0.200685245377199060,	0.200734227914939200,	0.200783209950843780,	0.200832191484790760,	0.200881172516656830,	0.200930153046319980,	0.200979133073657720,	
+0.201028112598548080,	0.201077091620867730,	0.201126070140494630,	0.201175048157306390,	0.201224025671180940,	0.201273002681994990,	0.201321979189626550,	0.201370955193953590,	
+0.201419930694852780,	0.201468905692202190,	0.201517880185879290,	0.201566854175762170,	0.201615827661727450,	0.201664800643653160,	0.201713773121416890,	0.201762745094896580,	
+0.201811716563969010,	0.201860687528512130,	0.201909657988403550,	0.201958627943521260,	0.202007597393741970,	0.202056566338943640,	0.202105534779003950,	0.202154502713800840,	
+0.202203470143211020,	0.202252437067112540,	0.202301403485382970,	0.202350369397900330,	0.202399334804541310,	0.202448299705183970,	0.202497264099706310,	0.202546227987985050,	
+0.202595191369898230,	0.202644154245323420,	0.202693116614138690,	0.202742078476220690,	0.202791039831447530,	0.202840000679696760,	0.202888961020846410,	0.202937920854773250,	
+0.202986880181355270,	0.203035839000470090,	0.203084797311995750,	0.203133755115808970,	0.203182712411787810,	0.203231669199809870,	0.203280625479753200,	0.203329581251494530,	
+0.203378536514911890,	0.203427491269883350,	0.203476445516285660,	0.203525399253996850,	0.203574352482894540,	0.203623305202856790,	0.203672257413760330,	0.203721209115483220,	
+0.203770160307903100,	0.203819110990898030,	0.203868061164344720,	0.203917010828121280,	0.203965959982105290,	0.204014908626174860,	0.204063856760206720,	0.204112804384078920,	
+0.204161751497669130,	0.204210698100855380,	0.204259644193514440,	0.204308589775524410,	0.204357534846763330,	0.204406479407107990,	0.204455423456436440,	0.204504366994626350,	
+0.204553310021555750,	0.204602252537101460,	0.204651194541141530,	0.204700136033553610,	0.204749077014215800,	0.204798017483004860,	0.204846957439798860,	0.204895896884475490,	
+0.204944835816912780,	0.204993774236987590,	0.205042712144577920,	0.205091649539561490,	0.205140586421816370,	0.205189522791219350,	0.205238458647648530,	0.205287393990982000,	
+0.205336328821096540,	0.205385263137870260,	0.205434196941180810,	0.205483130230906310,	0.205532063006923560,	0.205580995269110640,	0.205629927017345250,	0.205678858251505480,	
+0.205727788971468100,	0.205776719177111270,	0.205825648868312620,	0.205874578044950300,	0.205923506706901100,	0.205972434854043150,	0.206021362486254080,	0.206070289603412060,	
+0.206119216205393860,	0.206168142292077640,	0.206217067863341070,	0.206265992919062250,	0.206314917459118010,	0.206363841483386490,	0.206412764991745800,	0.206461687984072740,	
+0.206510610460245490,	0.206559532420141690,	0.206608453863639520,	0.206657374790615770,	0.206706295200948580,	0.206755215094515640,	0.206804134471195110,	0.206853053330863820,	
+0.206901971673399880,	0.206950889498681010,	0.206999806806585360,	0.207048723596989750,	0.207097639869772340,	0.207146555624810820,	0.207195470861983370,	0.207244385581166780,	
+0.207293299782239230,	0.207342213465078890,	0.207391126629562550,	0.207440039275568420,	0.207488951402974160,	0.207537863011658000,	0.207586774101496700,	0.207635684672368510,	
+0.207684594724151070,	0.207733504256722600,	0.207782413269959910,	0.207831321763741220,	0.207880229737944210,	0.207929137192447070,	0.207978044127126640,	0.208026950541861100,	
+0.208075856436528210,	0.208124761811006090,	0.208173666665171620,	0.208222570998903010,	0.208271474812078390,	0.208320378104574650,	0.208369280876269960,	0.208418183127042080,	
+0.208467084856769180,	0.208515986065328120,	0.208564886752597100,	0.208613786918453860,	0.208662686562776590,	0.208711585685442180,	0.208760484286328790,	0.208809382365314180,	
+0.208858279922276570,	0.208907176957092820,	0.208956073469641120,	0.209004969459799270,	0.209053864927445400,	0.209102759872456440,	0.209151654294710580,	0.209200548194085570,	
+0.209249441570459630,	0.209298334423709650,	0.209347226753713870,	0.209396118560350420,	0.209445009843496260,	0.209493900603029550,	0.209542790838828100,	0.209591680550770130,	
+0.209640569738732490,	0.209689458402593450,	0.209738346542230750,	0.209787234157522620,	0.209836121248345970,	0.209885007814579030,	0.209933893856099560,	0.209982779372785780,	
+0.210031664364514650,	0.210080548831164340,	0.210129432772612650,	0.210178316188737810,	0.210227199079416750,	0.210276081444527700,	0.210324963283948900,	0.210373844597557230,	
+0.210422725385230940,	0.210471605646847860,	0.210520485382286180,	0.210569364591422860,	0.210618243274136140,	0.210667121430303810,	0.210715999059804090,	0.210764876162513960,	
+0.210813752738311630,	0.210862628787074930,	0.210911504308682080,	0.210960379303010040,	0.211009253769937040,	0.211058127709340900,	0.211107001121099900,	0.211155874005090950,	
+0.211204746361192320,	0.211253618189282260,	0.211302489489237720,	0.211351360260936950,	0.211400230504257800,	0.211449100219078480,	0.211497969405275990,	0.211546838062728560,	
+0.211595706191314040,	0.211644573790910700,	0.211693440861395490,	0.211742307402646680,	0.211791173414542090,	0.211840038896960010,	0.211888903849777400,	0.211937768272872530,	
+0.211986632166123230,	0.212035495529407810,	0.212084358362603200,	0.212133220665587680,	0.212182082438239550,	0.212230943680435800,	0.212279804392054660,	0.212328664572974030,	
+0.212377524223072180,	0.212426383342226080,	0.212475241930314000,	0.212524099987213830,	0.212572957512803830,	0.212621814506961020,	0.212670670969563690,	0.212719526900489650,	
+0.212768382299617250,	0.212817237166823440,	0.212866091501986540,	0.212914945304984420,	0.212963798575695390,	0.213012651313996410,	0.213061503519765800,	0.213110355192881430,	
+0.213159206333221610,	0.213208056940663330,	0.213256907015084930,	0.213305756556364660,	0.213354605564379600,	0.213403454039008010,	0.213452301980127800,	0.213501149387617250,	
+0.213549996261353400,	0.213598842601214560,	0.213647688407078620,	0.213696533678823880,	0.213745378416327380,	0.213794222619467430,	0.213843066288121940,	0.213891909422169210,	
+0.213940752021486270,	0.213989594085951450,	0.214038435615442640,	0.214087276609838170,	0.214136117069015090,	0.214184956992851700,	0.214233796381226360,	0.214282635234016080,	
+0.214331473551099240,	0.214380311332353720,	0.214429148577657820,	0.214477985286888630,	0.214526821459924490,	0.214575657096643310,	0.214624492196923390,	0.214673326760641820,	
+0.214722160787676920,	0.214770994277906630,	0.214819827231209290,	0.214868659647461930,	0.214917491526542940,	0.214966322868330230,	0.215015153672702130,	0.215063983939535710,	
+0.215112813668709320,	0.215161642860101370,	0.215210471513588820,	0.215259299629050130,	0.215308127206363190,	0.215356954245406380,	0.215405780746056740,	0.215454606708192640,	
+0.215503432131692010,	0.215552257016433240,	0.215601081362293420,	0.215649905169150860,	0.215698728436883560,	0.215747551165369870,	0.215796373354486870,	0.215845195004112920,	
+0.215894016114126010,	0.215942836684404480,	0.215991656714825430,	0.216040476205267230,	0.216089295155607850,	0.216138113565725650,	0.216186931435497750,	0.216235748764802500,	
+0.216284565553518330,	0.216333381801522310,	0.216382197508692810,	0.216431012674907860,	0.216479827300045780,	0.216528641383983700,	0.216577454926600050,	0.216626267927772730,	
+0.216675080387380180,	0.216723892305299480,	0.216772703681409080,	0.216821514515586900,	0.216870324807711370,	0.216919134557659630,	0.216967943765310010,	0.217016752430540550,	
+0.217065560553229620,	0.217114368133254380,	0.217163175170493220,	0.217211981664824550,	0.217260787616125490,	0.217309593024274470,	0.217358397889149430,	0.217407202210628870,	
+0.217456005988589860,	0.217504809222910820,	0.217553611913469780,	0.217602414060145130,	0.217651215662814030,	0.217700016721354860,	0.217748817235645680,	0.217797617205564870,	
+0.217846416630989580,	0.217895215511798270,	0.217944013847868910,	0.217992811639079940,	0.218041608885308520,	0.218090405586433080,	0.218139201742332060,	0.218187997352882580,	
+0.218236792417963120,	0.218285586937451700,	0.218334380911226730,	0.218383174339165380,	0.218431967221146080,	0.218480759557046850,	0.218529551346746180,	0.218578342590121180,	
+0.218627133287050360,	0.218675923437411680,	0.218724713041083620,	0.218773502097943360,	0.218822290607869310,	0.218871078570739560,	0.218919865986432570,	0.218968652854825450,	
+0.219017439175796720,	0.219066224949224790,	0.219115010174986890,	0.219163794852961470,	0.219212578983026540,	0.219261362565060620,	0.219310145598940850,	0.219358928084545710,	
+0.219407710021753270,	0.219456491410441960,	0.219505272250489020,	0.219554052541772880,	0.219602832284171600,	0.219651611477563680,	0.219700390121826320,	0.219749168216837960,	
+0.219797945762476690,	0.219846722758620970,	0.219895499205148030,	0.219944275101936340,	0.219993050448863970,	0.220041825245809400,	0.220090599492649810,	0.220139373189263740,	
+0.220188146335529690,	0.220236918931324830,	0.220285690976527640,	0.220334462471016260,	0.220383233414669140,	0.220432003807363520,	0.220480773648977890,	0.220529542939390310,	
+0.220578311678479300,	0.220627079866122090,	0.220675847502197180,	0.220724614586582660,	0.220773381119157040,	0.220822147099797500,	0.220870912528382620,	0.220919677404790460,	
+0.220968441728899540,	0.221017205500587070,	0.221065968719731580,	0.221114731386211630,	0.221163493499904410,	0.221212255060688450,	0.221261016068441840,	0.221309776523043120,	
+0.221358536424369560,	0.221407295772299640,	0.221456054566711470,	0.221504812807483600,	0.221553570494493280,	0.221602327627619030,	0.221651084206738960,	0.221699840231731620,	
+0.221748595702474210,	0.221797350618845340,	0.221846104980723100,	0.221894858787986010,	0.221943612040511360,	0.221992364738177680,	0.222041116880863500,	0.222089868468446110,	
+0.222138619500804050,	0.222187369977815440,	0.222236119899358820,	0.222284869265311490,	0.222333618075551990,	0.222382366329958420,	0.222431114028409400,	0.222479861170782140,	
+0.222528607756955240,	0.222577353786806790,	0.222626099260215430,	0.222674844177058350,	0.222723588537214190,	0.222772332340561040,	0.222821075586977500,	0.222869818276340840,	
+0.222918560408529640,	0.222967301983422040,	0.223016043000896610,	0.223064783460830640,	0.223113523363102690,	0.223162262707591400,	0.223211001494174000,	0.223259739722729110,	
+0.223308477393134860,	0.223357214505269850,	0.223405951059011370,	0.223454687054238020,	0.223503422490827970,	0.223552157368659770,	0.223600891687610740,	0.223649625447559510,	
+0.223698358648384190,	0.223747091289963400,	0.223795823372174460,	0.223844554894895960,	0.223893285858006080,	0.223942016261383440,	0.223990746104905300,	0.224039475388450290,	
+0.224088204111897030,	0.224136932275122820,	0.224185659878006290,	0.224234386920425600,	0.224283113402259400,	0.224331839323384960,	0.224380564683680920,	0.224429289483025480,	
+0.224478013721297250,	0.224526737398373560,	0.224575460514133020,	0.224624183068453830,	0.224672905061214600,	0.224721626492292690,	0.224770347361566700,	0.224819067668914850,	
+0.224867787414215760,	0.224916506597346770,	0.224965225218186540,	0.225013943276613640,	0.225062660772505470,	0.225111377705740660,	0.225160094076197390,	0.225208809883754300,	
+0.225257525128288780,	0.225306239809679430,	0.225354953927804500,	0.225403667482542590,	0.225452380473771110,	0.225501092901368660,	0.225549804765213470,	0.225598516065184220,	
+0.225647226801158260,	0.225695936973014210,	0.225744646580630310,	0.225793355623885250,	0.225842064102656340,	0.225890772016822280,	0.225939479366261300,	0.225988186150852060,	
+0.226036892370471890,	0.226085598024999530,	0.226134303114313600,	0.226183007638291470,	0.226231711596811800,	0.226280414989752880,	0.226329117816993330,	0.226377820078410590,	
+0.226426521773883280,	0.226475222903289640,	0.226523923466508400,	0.226572623463416940,	0.226621322893893890,	0.226670021757817560,	0.226718720055066570,	0.226767417785518370,	
+0.226816114949051630,	0.226864811545544610,	0.226913507574875970,	0.226962203036923130,	0.227010897931564810,	0.227059592258679670,	0.227108286018145090,	0.227156979209839820,	
+0.227205671833642100,	0.227254363889430630,	0.227303055377082790,	0.227351746296477340,	0.227400436647492520,	0.227449126430007060,	0.227497815643898320,	0.227546504289045050,	
+0.227595192365325520,	0.227643879872618470,	0.227692566810801240,	0.227741253179752630,	0.227789938979350880,	0.227838624209474700,	0.227887308870001550,	0.227935992960810100,	
+0.227984676481779110,	0.228033359432786020,	0.228082041813709500,	0.228130723624427880,	0.228179404864819910,	0.228228085534762980,	0.228276765634135820,	0.228325445162816780,	
+0.228374124120684530,	0.228422802507616540,	0.228471480323491540,	0.228520157568187860,	0.228568834241584200,	0.228617510343558040,	0.228666185873988100,	0.228714860832752690,	
+0.228763535219730560,	0.228812209034799150,	0.228860882277837240,	0.228909554948723530,	0.228958227047335510,	0.229006898573551940,	0.229055569527251120,	0.229104239908311800,	
+0.229152909716611420,	0.229201578952028810,	0.229250247614442240,	0.229298915703730480,	0.229347583219771000,	0.229396250162442560,	0.229444916531623490,	0.229493582327192550,	
+0.229542247549027250,	0.229590912197006340,	0.229639576271008120,	0.229688239770911410,	0.229736902696593640,	0.229785565047933630,	0.229834226824809720,	0.229882888027100660,	
+0.229931548654683960,	0.229980208707438380,	0.230028868185242710,	0.230077527087974440,	0.230126185415512360,	0.230174843167734790,	0.230223500344520580,	0.230272156945747150,	
+0.230320812971293360,	0.230369468421037530,	0.230418123294858450,	0.230466777592633650,	0.230515431314241880,	0.230564084459561560,	0.230612737028471430,	0.230661389020849040,	
+0.230710040436573170,	0.230758691275522200,	0.230807341537574960,	0.230855991222608910,	0.230904640330502900,	0.230953288861135700,	0.231001936814384860,	0.231050584190129170,	
+0.231099230988247030,	0.231147877208617240,	0.231196522851117300,	0.231245167915626080,	0.231293812402021960,	0.231342456310183710,	0.231391099639988880,	0.231439742391316320,	
+0.231488384564044410,	0.231537026158051940,	0.231585667173216490,	0.231634307609416890,	0.231682947466531510,	0.231731586744439190,	0.231780225443017460,	0.231828863562145190,	
+0.231877501101701190,	0.231926138061562980,	0.231974774441609440,	0.232023410241718960,	0.232072045461770400,	0.232120680101641270,	0.232169314161210480,	0.232217947640356360,	
+0.232266580538957820,	0.232315212856892410,	0.232363844594038970,	0.232412475750275900,	0.232461106325482090,	0.232509736319535060,	0.232558365732313700,	0.232606994563696430,	
+0.232655622813562110,	0.232704250481788280,	0.232752877568253860,	0.232801504072837200,	0.232850129995417240,	0.232898755335871540,	0.232947380094078920,	0.232996004269918290,	
+0.233044627863267210,	0.233093250874004590,	0.233141873302008810,	0.233190495147158810,	0.233239116409332120,	0.233287737088407640,	0.233336357184263820,	0.233384976696779540,	
+0.233433595625832380,	0.233482213971301230,	0.233530831733064550,	0.233579448911001240,	0.233628065504988850,	0.233676681514906310,	0.233725296940632040,	0.233773911782044990,	
+0.233822526039022730,	0.233871139711444130,	0.233919752799188140,	0.233968365302132330,	0.234016977220155600,	0.234065588553136420,	0.234114199300953730,	0.234162809463485080,	
+0.234211419040609410,	0.234260028032205190,	0.234308636438151360,	0.234357244258325490,	0.234405851492606510,	0.234454458140872870,	0.234503064203003570,	0.234551669678876140,	
+0.234600274568369540,	0.234648878871362270,	0.234697482587733240,	0.234746085717360050,	0.234794688260121650,	0.234843290215896980,	0.234891891584563640,	0.234940492366000560,	
+0.234989092560086270,	0.235037692166699670,	0.235086291185718390,	0.235134889617021420,	0.235183487460487200,	0.235232084715994690,	0.235280681383421560,	0.235329277462646700,	
+0.235377872953548670,	0.235426467856006380,	0.235475062169897470,	0.235523655895100940,	0.235572249031495230,	0.235620841578959350,	0.235669433537370940,	0.235718024906608950,	
+0.235766615686552330,	0.235815205877078720,	0.235863795478067100,	0.235912384489396000,	0.235960972910944370,	0.236009560742589890,	0.236058147984211490,	0.236106734635687710,	
+0.236155320696897540,	0.236203906167718640,	0.236252491048029980,	0.236301075337710080,	0.236349659036637900,	0.236398242144691180,	0.236446824661748850,	0.236495406587689440,	
+0.236543987922391950,	0.236592568665734080,	0.236641148817594770,	0.236689728377852600,	0.236738307346386510,	0.236786885723074240,	0.236835463507794770,	0.236884040700427070,	
+0.236932617300848800,	0.236981193308939020,	0.237029768724576260,	0.237078343547639490,	0.237126917778006460,	0.237175491415556110,	0.237224064460167030,	0.237272636911718240,	
+0.237321208770087390,	0.237369780035153550,	0.237418350706795260,	0.237466920784891510,	0.237515490269320030,	0.237564059159959850,	0.237612627456689480,	0.237661195159387990,	
+0.237709762267933080,	0.237758328782203790,	0.237806894702079080,	0.237855460027436710,	0.237904024758155700,	0.237952588894114610,	0.238001152435192490,	0.238049715381267040,	
+0.238098277732217340,	0.238146839487921920,	0.238195400648259840,	0.238243961213108810,	0.238292521182347890,	0.238341080555855680,	0.238389639333511180,	0.238438197515192160,	
+0.238486755100777630,	0.238535312090146220,	0.238583868483176980,	0.238632424279747620,	0.238680979479737210,	0.238729534083024770,	0.238778088089488080,	0.238826641499006150,	
+0.238875194311457650,	0.238923746526721550,	0.238972298144675690,	0.239020849165199060,	0.239069399588170330,	0.239117949413468510,	0.239166498640971390,	0.239215047270558030,	
+0.239263595302107060,	0.239312142735497530,	0.239360689570607190,	0.239409235807315160,	0.239457781445500010,	0.239506326485040860,	0.239554870925815460,	0.239603414767702860,	
+0.239651958010581730,	0.239700500654331160,	0.239749042698828880,	0.239797584143954020,	0.239846124989585600,	0.239894665235601460,	0.239943204881880650,	0.239991743928301830,	
+0.240040282374744090,	0.240088820221085190,	0.240137357467204240,	0.240185894112979910,	0.240234430158291300,	0.240282965603016150,	0.240331500447033580,	0.240380034690222290,	
+0.240428568332461320,	0.240477101373628520,	0.240525633813602950,	0.240574165652263310,	0.240622696889488650,	0.240671227525156850,	0.240719757559146990,	0.240768286991338150,	
+0.240816815821608160,	0.240865344049836120,	0.240913871675900730,	0.240962398699681110,	0.241010925121055040,	0.241059450939901660,	0.241107976156099660,	0.241156500769528160,	
+0.241205024780064950,	0.241253548187589210,	0.241302070991979560,	0.241350593193115190,	0.241399114790873920,	0.241447635785134840,	0.241496156175776660,	0.241544675962678560,	
+0.241593195145718310,	0.241641713724775080,	0.241690231699728000,	0.241738749070454890,	0.241787265836834940,	0.241835781998746810,	0.241884297556069630,	0.241932812508681320,	
+0.241981326856460950,	0.242029840599287280,	0.242078353737039430,	0.242126866269595260,	0.242175378196833930,	0.242223889518634160,	0.242272400234875090,	0.242320910345434600,	
+0.242369419850191840,	0.242417928749025490,	0.242466437041814780,	0.242514944728437540,	0.242563451808772950,	0.242611958282700160,	0.242660464150097010,	0.242708969410842750,	
+0.242757474064816040,	0.242805978111896080,	0.242854481551960740,	0.242902984384889190,	0.242951486610560180,	0.242999988228852880,	0.243048489239645200,	0.243096989642816290,	
+0.243145489438244910,	0.243193988625810240,	0.243242487205390160,	0.243290985176863840,	0.243339482540110090,	0.243387979295008050,	0.243436475441435620,	0.243484970979272020,	
+0.243533465908396000,	0.243581960228686720,	0.243630453940022110,	0.243678947042281380,	0.243727439535343730,	0.243775931419087020,	0.243824422693390500,	0.243872913358132910,	
+0.243921403413193490,	0.243969892858450110,	0.244018381693781980,	0.244066869919067920,	0.244115357534187120,	0.244163844539017490,	0.244212330933438250,	0.244260816717328190,	
+0.244309301890566520,	0.244357786453031130,	0.244406270404601310,	0.244454753745155800,	0.244503236474573840,	0.244551718592733360,	0.244600200099513580,	0.244648680994793750,	
+0.244697161278451760,	0.244745640950366880,	0.244794120010417890,	0.244842598458484020,	0.244891076294443260,	0.244939553518174790,	0.244988030129557420,	0.245036506128470420,	
+0.245084981514791720,	0.245133456288400580,	0.245181930449175800,	0.245230403996996610,	0.245278876931740970,	0.245327349253288170,	0.245375820961516970,	0.245424292056306640,	
+0.245472762537535170,	0.245521232405081810,	0.245569701658825770,	0.245618170298645050,	0.245666638324418900,	0.245715105736026170,	0.245763572533346100,	0.245812038716256680,	
+0.245860504284637150,	0.245908969238366360,	0.245957433577323580,	0.246005897301386780,	0.246054360410435240,	0.246102822904347790,	0.246151284783003740,	0.246199746046281030,	
+0.246248206694058950,	0.246296666726216360,	0.246345126142632540,	0.246393584943185470,	0.246442043127754420,	0.246490500696218280,	0.246538957648456320,	0.246587413984346530,	
+0.246635869703768220,	0.246684324806600630,	0.246732779292721830,	0.246781233162011090,	0.246829686414347240,	0.246878139049609620,	0.246926591067676200,	0.246975042468426330,	
+0.247023493251738830,	0.247071943417493060,	0.247120392965566980,	0.247168841895839900,	0.247217290208190750,	0.247265737902498780,	0.247314184978642050,	0.247362631436499860,	
+0.247411077275951070,	0.247459522496875060,	0.247507967099149770,	0.247556411082654580,	0.247604854447268790,	0.247653297192870440,	0.247701739319338840,	0.247750180826552900,	
+0.247798621714391900,	0.247847061982733960,	0.247895501631458350,	0.247943940660444010,	0.247992379069570220,	0.248040816858715040,	0.248089254027757860,	0.248137690576577500,	
+0.248186126505053370,	0.248234561813063500,	0.248282996500487210,	0.248331430567203440,	0.248379864013091510,	0.248428296838029500,	0.248476729041896740,	0.248525160624572610,	
+0.248573591585935120,	0.248622021925863660,	0.248670451644237150,	0.248718880740934960,	0.248767309215835090,	0.248815737068816990,	0.248864164299759520,	0.248912590908542090,	
+0.248961016895042740,	0.249009442259140850,	0.249057867000715360,	0.249106291119645630,	0.249154714615809740,	0.249203137489087070,	0.249251559739356560,	0.249299981366497560,	
+0.249348402370388190,	0.249396822750907830,	0.249445242507935820,	0.249493661641350280,	0.249542080151030580,	0.249590498036855680,	0.249638915298704990,	0.249687331936456560,	
+0.249735747949989790,	0.249784163339183680,	0.249832578103917570,	0.249880992244069590,	0.249929405759519140,	0.249977818650145150,	0.250026230915827040,	0.250074642556442960,	
+0.250123053571872260,	0.250171463961993910,	0.250219873726687360,	0.250268282865830690,	0.250316691379303290,	0.250365099266984190,	0.250413506528752720,	0.250461913164487130,	
+0.250510319174066690,	0.250558724557370880,	0.250607129314277870,	0.250655533444667070,	0.250703936948417360,	0.250752339825408290,	0.250800742075517890,	0.250849143698625650,	
+0.250897544694610560,	0.250945945063352050,	0.250994344804728260,	0.251042743918618580,	0.251091142404902050,	0.251139540263458080,	0.251187937494164850,	0.251236334096901770,	
+0.251284730071547830,	0.251333125417982530,	0.251381520136084000,	0.251429914225731630,	0.251478307686804900,	0.251526700519182020,	0.251575092722742370,	0.251623484297364970,	
+0.251671875242929280,	0.251720265559313480,	0.251768655246397020,	0.251817044304058930,	0.251865432732178710,	0.251913820530634380,	0.251962207699305550,	0.252010594238071210,	
+0.252058980146810770,	0.252107365425402520,	0.252155750073725820,	0.252204134091659700,	0.252252517479083730,	0.252300900235876040,	0.252349282361916060,	0.252397663857083340,	
+0.252446044721256040,	0.252494424954313570,	0.252542804556135090,	0.252591183526599980,	0.252639561865586500,	0.252687939572974140,	0.252736316648641930,	0.252784693092469370,	
+0.252833068904334600,	0.252881444084117170,	0.252929818631696170,	0.252978192546951030,	0.253026565829759960,	0.253074938480002510,	0.253123310497557650,	0.253171681882304990,	
+0.253220052634122730,	0.253268422752890300,	0.253316792238486800,	0.253365161090791770,	0.253413529309683420,	0.253461896895041230,	0.253510263846744690,	0.253558630164672120,	
+0.253606995848702940,	0.253655360898716260,	0.253703725314591680,	0.253752089096207280,	0.253800452243442720,	0.253848814756176990,	0.253897176634289620,	0.253945537877658940,	
+0.253993898486164380,	0.254042258459685090,	0.254090617798100600,	0.254138976501289080,	0.254187334569130170,	0.254235692001502920,	0.254284048798286870,	0.254332404959360210,	
+0.254380760484602620,	0.254429115373893510,	0.254477469627111210,	0.254525823244135200,	0.254574176224844630,	0.254622528569119100,	0.254670880276836760,	0.254719231347877270,	
+0.254767581782119670,	0.254815931579443600,	0.254864280739727220,	0.254912629262850130,	0.254960977148691480,	0.255009324397130810,	0.255057671008046440,	0.255106016981317850,	
+0.255154362316824260,	0.255202707014445140,	0.255251051074058820,	0.255299394495544950,	0.255347737278782960,	0.255396079423651220,	0.255444420930029280,	0.255492761797796230,	
+0.255541102026831780,	0.255589441617014130,	0.255637780568222840,	0.255686118880337150,	0.255734456553236570,	0.255782793586799400,	0.255831129980905290,	0.255879465735433300,	
+0.255927800850263120,	0.255976135325272970,	0.256024469160342550,	0.256072802355350900,	0.256121134910177680,	0.256169466824701210,	0.256217798098801020,	0.256266128732356820,	
+0.256314458725246890,	0.256362788077350750,	0.256411116788547670,	0.256459444858717240,	0.256507772287737750,	0.256556099075488820,	0.256604425221849670,	0.256652750726699850,	
+0.256701075589917780,	0.256749399811382950,	0.256797723390974670,	0.256846046328572500,	0.256894368624054790,	0.256942690277301160,	0.256991011288190800,	0.257039331656603360,	
+0.257087651382417130,	0.257135970465511790,	0.257184288905766500,	0.257232606703060920,	0.257280923857273410,	0.257329240368283580,	0.257377556235971080,	0.257425871460214280,	
+0.257474186040892780,	0.257522499977885840,	0.257570813271073060,	0.257619125920332810,	0.257667437925544750,	0.257715749286588140,	0.257764060003342510,	0.257812370075686360,	
+0.257860679503499280,	0.257908988286660480,	0.257957296425049610,	0.258005603918545100,	0.258053910767026610,	0.258102216970373330,	0.258150522528464930,	0.258198827441179780,	
+0.258247131708397530,	0.258295435329997940,	0.258343738305859330,	0.258392040635861350,	0.258440342319883280,	0.258488643357804750,	0.258536943749504200,	0.258585243494861340,	
+0.258633542593755320,	0.258681841046065900,	0.258730138851671400,	0.258778436010451580,	0.258826732522285720,	0.258875028387053400,	0.258923323604633100,	0.258971618174904490,	
+0.259019912097746830,	0.259068205373039820,	0.259116498000661890,	0.259164789980492690,	0.259213081312411940,	0.259261371996298060,	0.259309662032030760,	0.259357951419489310,	
+0.259406240158553400,	0.259454528249101420,	0.259502815691013190,	0.259551102484167910,	0.259599388628445280,	0.259647674123723750,	0.259695958969883010,	0.259744243166802390,	
+0.259792526714361650,	0.259840809612439110,	0.259889091860914520,	0.259937373459667280,	0.259985654408576960,	0.260033934707522120,	0.260082214356382400,	0.260130493355037180,	
+0.260178771703366170,	0.260227049401247750,	0.260275326448561770,	0.260323602845187850,	0.260371878591004520,	0.260420153685891500,	0.260468428129728090,	0.260516701922394010,	
+0.260564975063767800,	0.260613247553729110,	0.260661519392157310,	0.260709790578932120,	0.260758061113932070,	0.260806330997036820,	0.260854600228125790,	0.260902868807078640,	
+0.260951136733773960,	0.260999404008091350,	0.261047670629910300,	0.261095936599110460,	0.261144201915570360,	0.261192466579169780,	0.261240730589788420,	0.261288993947304870,	
+0.261337256651598790,	0.261385518702549560,	0.261433780100036980,	0.261482040843939500,	0.261530300934136930,	0.261578560370508640,	0.261626819152934340,	0.261675077281292580,	
+0.261723334755463110,	0.261771591575325310,	0.261819847740758950,	0.261868103251642560,	0.261916358107855910,	0.261964612309278370,	0.262012865855789700,	0.262061118747268450,	
+0.262109370983594440,	0.262157622564647420,	0.262205873490305890,	0.262254123760449650,	0.262302373374958150,	0.262350622333711150,	0.262398870636587120,	0.262447118283465950,	
+0.262495365274226950,	0.262543611608750000,	0.262591857286913590,	0.262640102308597520,	0.262688346673681180,	0.262736590382044440,	0.262784833433565790,	0.262833075828125040,	
+0.262881317565601620,	0.262929558645875310,	0.262977799068824680,	0.263026038834329570,	0.263074277942269790,	0.263122516392523880,	0.263170754184971660,	0.263218991319492560,	
+0.263267227795966450,	0.263315463614271830,	0.263363698774288500,	0.263411933275895960,	0.263460167118974020,	0.263508400303401220,	0.263556632829057450,	0.263604864695822060,	
+0.263653095903574940,	0.263701326452194680,	0.263749556341561050,	0.263797785571553590,	0.263846014142052050,	0.263894242052935100,	0.263942469304082490,	0.263990695895373770,	
+0.264038921826688700,	0.264087147097905870,	0.264135371708905220,	0.264183595659566510,	0.264231818949768440,	0.264280041579390780,	0.264328263548313070,	0.264376484856415070,	
+0.264424705503575500,	0.264472925489674100,	0.264521144814590440,	0.264569363478204310,	0.264617581480394330,	0.264665798821040410,	0.264714015500021990,	0.264762231517219000,	
+0.264810446872509990,	0.264858661565774810,	0.264906875596893020,	0.264955088965744490,	0.265003301672207760,	0.265051513716162810,	0.265099725097489470,	0.265147935816066440,	
+0.265196145871773540,	0.265244355264490250,	0.265292563994096510,	0.265340772060470960,	0.265388979463493490,	0.265437186203043520,	0.265485392279001030,	0.265533597691244680,	
+0.265581802439654290,	0.265630006524109400,	0.265678209944489930,	0.265726412700674490,	0.265774614792543050,	0.265822816219975060,	0.265871016982850430,	0.265919217081047880,	
+0.265967416514447220,	0.266015615282928500,	0.266063813386370310,	0.266112010824652580,	0.266160207597654800,	0.266208403705256950,	0.266256599147337680,	0.266304793923776870,	
+0.266352988034454120,	0.266401181479249290,	0.266449374258041110,	0.266497566370709480,	0.266545757817133910,	0.266593948597194430,	0.266642138710769640,	0.266690328157739460,	
+0.266738516937983510,	0.266786705051381630,	0.266834892497812610,	0.266883079277156320,	0.266931265389292400,	0.266979450834100680,	0.267027635611459920,	0.267075819721250110,	
+0.267124003163351110,	0.267172185937641750,	0.267220368044001840,	0.267268549482311100,	0.267316730252449340,	0.267364910354295380,	0.267413089787729100,	0.267461268552630140,	
+0.267509446648878440,	0.267557624076352640,	0.267605800834932790,	0.267653976924498490,	0.267702152344929610,	0.267750327096104970,	0.267798501177904490,	0.267846674590207780,	
+0.267894847332894810,	0.267943019405844250,	0.267991190808936190,	0.268039361542050550,	0.268087531605066100,	0.268135700997862820,	0.268183869720320270,	0.268232037772318470,	
+0.268280205153736180,	0.268328371864453350,	0.268376537904349620,	0.268424703273304920,	0.268472867971198070,	0.268521031997909050,	0.268569195353317470,	0.268617358037303300,	
+0.268665520049745310,	0.268713681390523540,	0.268761842059517530,	0.268810002056607380,	0.268858161381671790,	0.268906320034590750,	0.268954478015244410,	0.269002635323511430,	
+0.269050791959271840,	0.269098947922405240,	0.269147103212791730,	0.269195257830310060,	0.269243411774840240,	0.269291565046261840,	0.269339717644455020,	0.269387869569298440,	
+0.269436020820672200,	0.269484171398455870,	0.269532321302529580,	0.269580470532772070,	0.269628619089063330,	0.269676766971283120,	0.269724914179311330,	0.269773060713026870,	
+0.269821206572309790,	0.269869351757040080,	0.269917496267096600,	0.269965640102359350,	0.270013783262707970,	0.270061925748022620,	0.270110067558182010,	0.270158208693066230,	
+0.270206349152554930,	0.270254488936528150,	0.270302628044864770,	0.270350766477444770,	0.270398904234147920,	0.270447041314854200,	0.270495177719442430,	0.270543313447792750,	
+0.270591448499784780,	0.270639582875298600,	0.270687716574213030,	0.270735849596408170,	0.270783981941763730,	0.270832113610159690,	0.270880244601474970,	0.270928374915589690,	
+0.270976504552383870,	0.271024633511736330,	0.271072761793527240,	0.271120889397636230,	0.271169016323943410,	0.271217142572327650,	0.271265268142668990,	0.271313393034847190,	
+0.271361517248742360,	0.271409640784233300,	0.271457763641200110,	0.271505885819522510,	0.271554007319080640,	0.271602128139753320,	0.271650248281420700,	0.271698367743962440,	
+0.271746486527258690,	0.271794604631188260,	0.271842722055631370,	0.271890838800468100,	0.271938954865577290,	0.271987070250839070,	0.272035184956133210,	0.272083298981339820,	
+0.272131412326337750,	0.272179524991007120,	0.272227636975227730,	0.272275748278879630,	0.272323858901841740,	0.272371968843994230,	0.272420078105216730,	0.272468186685389520,	
+0.272516294584391420,	0.272564401802102560,	0.272612508338402730,	0.272660614193172000,	0.272708719366289320,	0.272756823857634890,	0.272804927667088800,	0.272853030794529940,	
+0.272901133239838500,	0.272949235002894250,	0.272997336083577350,	0.273045436481766710,	0.273093536197342450,	0.273141635230184310,	0.273189733580172570,	0.273237831247186040,	
+0.273285928231104920,	0.273334024531808990,	0.273382120149178400,	0.273430215083092120,	0.273478309333430310,	0.273526402900072680,	0.273574495782899500,	0.273622587981789680,	
+0.273670679496623380,	0.273718770327280370,	0.273766860473640850,	0.273814949935583750,	0.273863038712989280,	0.273911126805737650,	0.273959214213707780,	0.274007300936779830,	
+0.274055386974833670,	0.274103472327749450,	0.274151556995406160,	0.274199640977683960,	0.274247724274462650,	0.274295806885622440,	0.274343888811042270,	0.274391970050602450,	
+0.274440050604182640,	0.274488130471663150,	0.274536209652922910,	0.274584288147842190,	0.274632365956300690,	0.274680443078178740,	0.274728519513355200,	0.274776595261710390,	
+0.274824670323124580,	0.274872744697476580,	0.274920818384646770,	0.274968891384514860,	0.275016963696961210,	0.275065035321864710,	0.275113106259105620,	0.275161176508563750,	
+0.275209246070119370,	0.275257314943651410,	0.275305383129040240,	0.275353450626165560,	0.275401517434907710,	0.275449583555145590,	0.275497648986759550,	0.275545713729629380,	
+0.275593777783635360,	0.275641841148656470,	0.275689903824572980,	0.275737965811265140,	0.275786027108612000,	0.275834087716493760,	0.275882147634790300,	0.275930206863381880,	
+0.275978265402147540,	0.276026323250967540,	0.276074380409721710,	0.276122436878290360,	0.276170492656552520,	0.276218547744388420,	0.276266602141677970,	0.276314655848301450,	
+0.276362708864137830,	0.276410761189067430,	0.276458812822970190,	0.276506863765726310,	0.276554914017214830,	0.276602963577316060,	0.276651012445910340,	0.276699060622876640,	
+0.276747108108095270,	0.276795154901446180,	0.276843201002809570,	0.276891246412064580,	0.276939291129091440,	0.276987335153770110,	0.277035378485980870,	0.277083421125602750,	
+0.277131463072516020,	0.277179504326600710,	0.277227544887737040,	0.277275584755804050,	0.277323623930682110,	0.277371662412251140,	0.277419700200391420,	0.277467737294982030,	
+0.277515773695903300,	0.277563809403035100,	0.277611844416257860,	0.277659878735450560,	0.277707912360493530,	0.277755945291267180,	0.277803977527650510,	0.277852009069523950,	
+0.277900039916767320,	0.277948070069261030,	0.277996099526884140,	0.278044128289517020,	0.278092156357039600,	0.278140183729332140,	0.278188210406273840,	0.278236236387745030,	
+0.278284261673625580,	0.278332286263795970,	0.278380310158135140,	0.278428333356523620,	0.278476355858841170,	0.278524377664968350,	0.278572398774784070,	0.278620419188168880,	
+0.278668438905003040,	0.278716457925165640,	0.278764476248537120,	0.278812493874997400,	0.278860510804426860,	0.278908527036704660,	0.278956542571711100,	0.279004557409326230,	
+0.279052571549430360,	0.279100584991902660,	0.279148597736623480,	0.279196609783472770,	0.279244621132331010,	0.279292631783077280,	0.279340641735591920,	0.279388650989755020,	
+0.279436659545446890,	0.279484667402546630,	0.279532674560934780,	0.279580681020491660,	0.279628686781096370,	0.279676691842629390,	0.279724696204970650,	0.279772699868000630,	
+0.279820702831598430,	0.279868705095644490,	0.279916706660018780,	0.279964707524601670,	0.280012707689272440,	0.280060707153911400,	0.280108705918398590,	0.280156703982614500,	
+0.280204701346438160,	0.280252698009750060,	0.280300693972430240,	0.280348689234359130,	0.280396683795415880,	0.280444677655480870,	0.280492670814434190,	0.280540663272156270,	
+0.280588655028526260,	0.280636646083424590,	0.280684636436731750,	0.280732626088326890,	0.280780615038090490,	0.280828603285902530,	0.280876590831643460,	0.280924577675192520,	
+0.280972563816430150,	0.281020549255236340,	0.281068533991491560,	0.281116518025075090,	0.281164501355867290,	0.281212483983748210,	0.281260465908598380,	0.281308447130296960,	
+0.281356427648724430,	0.281404407463760780,	0.281452386575286590,	0.281500364983180980,	0.281548342687324480,	0.281596319687597520,	0.281644295983879360,	0.281692271576050480,	
+0.281740246463990870,	0.281788220647581080,	0.281836194126700360,	0.281884166901229080,	0.281932138971047460,	0.281980110336035870,	0.282028080996073570,	0.282076050951041100,	
+0.282124020200818500,	0.282171988745286260,	0.282219956584323640,	0.282267923717811120,	0.282315890145628800,	0.282363855867657170,	0.282411820883775420,	0.282459785193864220,	
+0.282507748797803940,	0.282555711695473830,	0.282603673886754450,	0.282651635371525930,	0.282699596149668720,	0.282747556221062070,	0.282795515585586580,	0.282843474243122280,	
+0.282891432193549670,	0.282939389436748120,	0.282987345972598060,	0.283035301800979690,	0.283083256921773440,	0.283131211334858630,	0.283179165040115810,	0.283227118037425060,	
+0.283275070326666930,	0.283323021907720740,	0.283370972780466970,	0.283418922944785770,	0.283466872400557680,	0.283514821147661970,	0.283562769185979220,	0.283610716515389990,	
+0.283658663135773540,	0.283706609047010390,	0.283754554248980770,	0.283802498741565160,	0.283850442524642920,	0.283898385598094550,	0.283946327961800190,	0.283994269615640450,	
+0.284042210559494630,	0.284090150793243290,	0.284138090316766510,	0.284186029129945010,	0.284233967232657980,	0.284281904624786030,	0.284329841306209310,	0.284377777276808410,	
+0.284425712536462650,	0.284473647085052570,	0.284521580922458880,	0.284569514048560730,	0.284617446463238830,	0.284665378166373330,	0.284713309157844820,	0.284761239437532570,	
+0.284809169005317280,	0.284857097861078990,	0.284905026004698410,	0.284952953436054870,	0.285000880155028950,	0.285048806161500800,	0.285096731455351030,	0.285144656036459050,	
+0.285192579904705420,	0.285240503059970340,	0.285288425502134460,	0.285336347231077040,	0.285384268246678790,	0.285432188548820240,	0.285480108137380840,	0.285528027012241170,	
+0.285575945173281440,	0.285623862620382250,	0.285671779353422970,	0.285719695372284250,	0.285767610676846310,	0.285815525266989780,	0.285863439142593990,	0.285911352303539590,	
+0.285959264749706840,	0.286007176480976290,	0.286055087497227470,	0.286102997798340860,	0.286150907384196740,	0.286198816254675860,	0.286246724409657430,	0.286294631849022260,	
+0.286342538572650910,	0.286390444580422730,	0.286438349872218500,	0.286486254447918360,	0.286534158307403090,	0.286582061450551930,	0.286629963877245600,	0.286677865587364410,	
+0.286725766580788970,	0.286773666857398690,	0.286821566417074180,	0.286869465259695810,	0.286917363385144230,	0.286965260793298760,	0.287013157484040160,	0.287061053457248690,	
+0.287108948712805010,	0.287156843250588490,	0.287204737070479890,	0.287252630172359470,	0.287300522556107830,	0.287348414221604510,	0.287396305168730160,	0.287444195397365430,	
+0.287492084907389810,	0.287539973698684000,	0.287587861771128270,	0.287635749124603270,	0.287683635758988480,	0.287731521674164600,	0.287779406870011910,	0.287827291346411160,	
+0.287875175103241730,	0.287923058140384380,	0.287970940457719370,	0.288018822055127410,	0.288066702932487980,	0.288114583089681800,	0.288162462526589170,	0.288210341243090810,	
+0.288258219239066190,	0.288306096514395980,	0.288353973068960990,	0.288401848902640650,	0.288449724015315660,	0.288497598406866400,	0.288545472077173510,	0.288593345026116550,	
+0.288641217253576220,	0.288689088759432830,	0.288736959543567150,	0.288784829605858660,	0.288832698946188130,	0.288880567564435810,	0.288928435460482470,	0.288976302634207650,	
+0.289024169085492060,	0.289072034814216060,	0.289119899820260430,	0.289167764103504590,	0.289215627663829360,	0.289263490501115440,	0.289311352615242380,	0.289359214006090990,	
+0.289407074673541490,	0.289454934617474790,	0.289502793837770330,	0.289550652334308820,	0.289598510106970740,	0.289646367155636800,	0.289694223480186530,	0.289742079080500650,	
+0.289789933956459630,	0.289837788107944140,	0.289885641534833820,	0.289933494237009370,	0.289981346214351180,	0.290029197466740050,	0.290077047994055480,	0.290124897796178340,	
+0.290172746872988880,	0.290220595224368050,	0.290268442850195260,	0.290316289750351400,	0.290364135924717210,	0.290411981373172310,	0.290459826095597400,	0.290507670091872950,	
+0.290555513361879740,	0.290603355905497300,	0.290651197722606500,	0.290699038813087730,	0.290746879176821740,	0.290794718813688120,	0.290842557723567760,	0.290890395906340970,	
+0.290938233361888620,	0.290986070090090250,	0.291033906090826740,	0.291081741363978410,	0.291129575909426170,	0.291177409727049590,	0.291225242816729510,	0.291273075178346720,	
+0.291320906811780800,	0.291368737716912630,	0.291416567893622580,	0.291464397341791580,	0.291512226061299120,	0.291560054052026120,	0.291607881313853010,	0.291655707846660620,	
+0.291703533650328470,	0.291751358724737560,	0.291799183069768210,	0.291847006685301340,	0.291894829571216540,	0.291942651727394640,	0.291990473153716120,	0.292038293850061860,	
+0.292086113816311440,	0.292133933052345700,	0.292181751558045600,	0.292229569333290640,	0.292277386377961800,	0.292325202691939510,	0.292373018275104590,	0.292420833127336740,	
+0.292468647248516790,	0.292516460638525210,	0.292564273297242940,	0.292612085224549510,	0.292659896420325920,	0.292707706884452520,	0.292755516616810320,	0.292803325617278950,	
+0.292851133885739190,	0.292898941422071620,	0.292946748226157130,	0.292994554297875350,	0.293042359637107170,	0.293090164243733520,	0.293137968117634040,	0.293185771258689660,	
+0.293233573666780820,	0.293281375341788500,	0.293329176283592290,	0.293376976492073120,	0.293424775967111530,	0.293472574708588450,	0.293520372716383480,	0.293568169990377600,	
+0.293615966530451300,	0.293663762336485450,	0.293711557408359860,	0.293759351745955300,	0.293807145349152370,	0.293854938217832040,	0.293902730351873920,	0.293950521751158990,	
+0.293998312415567730,	0.294046102344981130,	0.294093891539278840,	0.294141679998341790,	0.294189467722051010,	0.294237254710286110,	0.294285040962928120,	0.294332826479857480,	
+0.294380611260955220,	0.294428395306100990,	0.294476178615175830,	0.294523961188060180,	0.294571743024635010,	0.294619524124780100,	0.294667304488376410,	0.294715084115304390,	
+0.294762863005445130,	0.294810641158678280,	0.294858418574884820,	0.294906195253945350,	0.294953971195740790,	0.295001746400150870,	0.295049520867056550,	0.295097294596338930,	
+0.295145067587877620,	0.295192839841553590,	0.295240611357247500,	0.295288382134840320,	0.295336152174211770,	0.295383921475242780,	0.295431690037814050,	0.295479457861806460,	
+0.295527224947099880,	0.295574991293575170,	0.295622756901113000,	0.295670521769594350,	0.295718285898899040,	0.295766049288907930,	0.295813811939501740,	0.295861573850561440,	
+0.295909335021966760,	0.295957095453598770,	0.296004855145338470,	0.296052614097065570,	0.296100372308661150,	0.296148129780005820,	0.296195886510980610,	0.296243642501465180,	
+0.296291397751340720,	0.296339152260487740,	0.296386906028787310,	0.296434659056119150,	0.296482411342364360,	0.296530162887403580,	0.296577913691117800,	0.296625663753386780,	
+0.296673413074091620,	0.296721161653112960,	0.296768909490331800,	0.296816656585627950,	0.296864402938882390,	0.296912148549975890,	0.296959893418789420,	0.297007637545202820,	
+0.297055380929097110,	0.297103123570353400,	0.297150865468851390,	0.297198606624472280,	0.297246347037096630,	0.297294086706605510,	0.297341825632878750,	0.297389563815797450,	
+0.297437301255242260,	0.297485037951094210,	0.297532773903233180,	0.297580509111540160,	0.297628243575895900,	0.297675977296181450,	0.297723710272276620,	0.297771442504062570,	
+0.297819173991419880,	0.297866904734229660,	0.297914634732371730,	0.297962363985727290,	0.298010092494177310,	0.298057820257601690,	0.298105547275881510,	0.298153273548897480,	
+0.298200999076530690,	0.298248723858660970,	0.298296447895169400,	0.298344171185936760,	0.298391893730844130,	0.298439615529771270,	0.298487336582599460,	0.298535056889209230,	
+0.298582776449481830,	0.298630495263297050,	0.298678213330536070,	0.298725930651079500,	0.298773647224808540,	0.298821363051603060,	0.298869078131344170,	0.298916792463913010,	
+0.298964506049189390,	0.299012218887054590,	0.299059930977389200,	0.299107642320074420,	0.299155352914990070,	0.299203062762017360,	0.299250771861036990,	0.299298480211930170,	
+0.299346187814576670,	0.299393894668857690,	0.299441600774653980,	0.299489306131846710,	0.299537010740315750,	0.299584714599942290,	0.299632417710607000,	0.299680120072191140,	
+0.299727821684574510,	0.299775522547638340,	0.299823222661263770,	0.299870922025330720,	0.299918620639720410,	0.299966318504313490,	0.300014015618991210,	0.300061711983633520,	
+0.300109407598121490,	0.300157102462335960,	0.300204796576158120,	0.300252489939467850,	0.300300182552146360,	0.300347874414074400,	0.300395565525133190,	0.300443255885202600,	
+0.300490945494163940,	0.300538634351897870,	0.300586322458285650,	0.300634009813207200,	0.300681696416543740,	0.300729382268176030,	0.300777067367985260,	0.300824751715851440,	
+0.300872435311655690,	0.300920118155279360,	0.300967800246602250,	0.301015481585505620,	0.301063162171870350,	0.301110842005577530,	0.301158521086507200,	0.301206199414540630,	
+0.301253876989558520,	0.301301553811442140,	0.301349229880071400,	0.301396905195327640,	0.301444579757091600,	0.301492253565244560,	0.301539926619666440,	0.301587598920238510,	
+0.301635270466841580,	0.301682941259356910,	0.301730611297664490,	0.301778280581645460,	0.301825949111181210,	0.301873616886151660,	0.301921283906438080,	0.301968950171921270,	
+0.302016615682482500,	0.302064280438001760,	0.302111944438360370,	0.302159607683439080,	0.302207270173119210,	0.302254931907280700,	0.302302592885804910,	0.302350253108572610,	
+0.302397912575465110,	0.302445571286362400,	0.302493229241145800,	0.302540886439696070,	0.302588542881894570,	0.302636198567621310,	0.302683853496757530,	0.302731507669184550,	
+0.302779161084782370,	0.302826813743432290,	0.302874465645015130,	0.302922116789412330,	0.302969767176503760,	0.303017416806170730,	0.303065065678294220,	0.303112713792755450,	
+0.303160361149434450,	0.303208007748212600,	0.303255653588970660,	0.303303298671590060,	0.303350942995950780,	0.303398586561934140,	0.303446229369421060,	0.303493871418292820,	
+0.303541512708429440,	0.303589153239712310,	0.303636793012022290,	0.303684432025240700,	0.303732070279247650,	0.303779707773924380,	0.303827344509152280,	0.303874980484811370,	
+0.303922615700783050,	0.303970250156948170,	0.304017883853188060,	0.304065516789382870,	0.304113148965413860,	0.304160780381162010,	0.304208411036508590,	0.304256040931333740,	
+0.304303670065518780,	0.304351298438944650,	0.304398926051492660,	0.304446552903043010,	0.304494178993476920,	0.304541804322675410,	0.304589428890519760,	0.304637052696890180,	
+0.304684675741667970,	0.304732298024734450,	0.304779919545969780,	0.304827540305255270,	0.304875160302471970,	0.304922779537501190,	0.304970398010223020,	0.305018015720518840,	
+0.305065632668269640,	0.305113248853356780,	0.305160864275660360,	0.305208478935061810,	0.305256092831442060,	0.305303705964682480,	0.305351318334663220,	0.305398929941265660,	
+0.305446540784370780,	0.305494150863859950,	0.305541760179613320,	0.305589368731512320,	0.305636976519438330,	0.305684583543271440,	0.305732189802893130,	0.305779795298184330,	
+0.305827400029026420,	0.305875003995299650,	0.305922607196885350,	0.305970209633664500,	0.306017811305518580,	0.306065412212327690,	0.306113012353973310,	0.306160611730336370,	
+0.306208210341298300,	0.306255808186739360,	0.306303405266540820,	0.306351001580583810,	0.306398597128749730,	0.306446191910918650,	0.306493785926972180,	0.306541379176791640,	
+0.306588971660257230,	0.306636563377250370,	0.306684154327652110,	0.306731744511343940,	0.306779333928205940,	0.306826922578119610,	0.306874510460965980,	0.306922097576626470,	
+0.306969683924981310,	0.307017269505911960,	0.307064854319299420,	0.307112438365025160,	0.307160021642969350,	0.307207604153013570,	0.307255185895038700,	0.307302766868926320,	
+0.307350347074556610,	0.307397926511811030,	0.307445505180570620,	0.307493083080716880,	0.307540660212130000,	0.307588236574691480,	0.307635812168282790,	0.307683386992784190,	
+0.307730961048077070,	0.307778534334042560,	0.307826106850562110,	0.307873678597516020,	0.307921249574785670,	0.307968819782252270,	0.308016389219797180,	0.308063957887300730,	
+0.308111525784644400,	0.308159092911709230,	0.308206659268376760,	0.308254224854527190,	0.308301789670042070,	0.308349353714802490,	0.308396916988689930,	0.308444479491584710,	
+0.308492041223368210,	0.308539602183922070,	0.308587162373126560,	0.308634721790863040,	0.308682280437012790,	0.308729838311457230,	0.308777395414076670,	0.308824951744752610,	
+0.308872507303366130,	0.308920062089798890,	0.308967616103930980,	0.309015169345644100,	0.309062721814819250,	0.309110273511338070,	0.309157824435080720,	0.309205374585928890,	
+0.309252923963763580,	0.309300472568466380,	0.309348020399917540,	0.309395567457998680,	0.309443113742591370,	0.309490659253575770,	0.309538203990833590,	0.309585747954245870,	
+0.309633291143694200,	0.309680833559058900,	0.309728375200221510,	0.309775916067063170,	0.309823456159465490,	0.309870995477308730,	0.309918534020474480,	0.309966071788843890,	
+0.310013608782298500,	0.310061145000718740,	0.310108680443986100,	0.310156215111981710,	0.310203749004587250,	0.310251282121683010,	0.310298814463150550,	0.310346346028871010,	
+0.310393876818726100,	0.310441406832596020,	0.310488936070362430,	0.310536464531906970,	0.310583992217109860,	0.310631519125852850,	0.310679045258016980,	0.310726570613483910,	
+0.310774095192134060,	0.310821618993848910,	0.310869142018509740,	0.310916664265998120,	0.310964185736194390,	0.311011706428980240,	0.311059226344236830,	0.311106745481845750,	
+0.311154263841687430,	0.311201781423643410,	0.311249298227594890,	0.311296814253423650,	0.311344329501009880,	0.311391843970235280,	0.311439357660981580,	0.311486870573128960,	
+0.311534382706559200,	0.311581894061153500,	0.311629404636793510,	0.311676914433359540,	0.311724423450733310,	0.311771931688796020,	0.311819439147429270,	0.311866945826513590,	
+0.311914451725930460,	0.311961956845561270,	0.312009461185287550,	0.312056964744989780,	0.312104467524549620,	0.312151969523848270,	0.312199470742767440,	0.312246971181187490,	
+0.312294470838990090,	0.312341969716056990,	0.312389467812268510,	0.312436965127506350,	0.312484461661651840,	0.312531957414586500,	0.312579452386190890,	0.312626946576346710,	
+0.312674439984935100,	0.312721932611837780,	0.312769424456935290,	0.312816915520109210,	0.312864405801240810,	0.312911895300211850,	0.312959384016902710,	0.313006871951195090,	
+0.313054359102970300,	0.313101845472110060,	0.313149331058494800,	0.313196815862006210,	0.313244299882525950,	0.313291783119934550,	0.313339265574113680,	0.313386747244944700,	
+0.313434228132309200,	0.313481708236087730,	0.313529187556161990,	0.313576666092413300,	0.313624143844723370,	0.313671620812972620,	0.313719096997042870,	0.313766572396815320,	
+0.313814047012171800,	0.313861520842992740,	0.313908993889159880,	0.313956466150554560,	0.314003937627058420,	0.314051408318552050,	0.314098878224917220,	0.314146347346035140,	
+0.314193815681787610,	0.314241283232055080,	0.314288749996719410,	0.314336215975662250,	0.314383681168764140,	0.314431145575906850,	0.314478609196971680,	0.314526072031840410,	
+0.314573534080393510,	0.314620995342512810,	0.314668455818079620,	0.314715915506975700,	0.314763374409081590,	0.314810832524278990,	0.314858289852449350,	0.314905746393474410,	
+0.314953202147234660,	0.315000657113611910,	0.315048111292487550,	0.315095564683743280,	0.315143017287259740,	0.315190469102918590,	0.315237920130601760,	0.315285370370189670,	
+0.315332819821564140,	0.315380268484606600,	0.315427716359198750,	0.315475163445221250,	0.315522609742555800,	0.315570055251083840,	0.315617499970687170,	0.315664943901246330,	
+0.315712387042643150,	0.315759829394758940,	0.315807270957475630,	0.315854711730673700,	0.315902151714235020,	0.315949590908040920,	0.315997029311973270,	0.316044466925912650,	
+0.316091903749740830,	0.316139339783339690,	0.316186775026589820,	0.316234209479372970,	0.316281643141570590,	0.316329076013064540,	0.316376508093735350,	0.316423939383464910,	
+0.316471369882134650,	0.316518799589626370,	0.316566228505820670,	0.316613656630599370,	0.316661083963843960,	0.316708510505436250,	0.316755936255256830,	0.316803361213187580,	
+0.316850785379109930,	0.316898208752905750,	0.316945631334455640,	0.316993053123641400,	0.317040474120344530,	0.317087894324446950,	0.317135313735829210,	0.317182732354373110,	
+0.317230150179960650,	0.317277567212472410,	0.317324983451790220,	0.317372398897795620,	0.317419813550370410,	0.317467227409395260,	0.317514640474751970,	0.317562052746322150,	
+0.317609464223987610,	0.317656874907629010,	0.317704284797128200,	0.317751693892366680,	0.317799102193226320,	0.317846509699587830,	0.317893916411333020,	0.317941322328343430,	
+0.317988727450501000,	0.318036131777686300,	0.318083535309781230,	0.318130938046667810,	0.318178339988226590,	0.318225741134339490,	0.318273141484888110,	0.318320541039754270,	
+0.318367939798818610,	0.318415337761963180,	0.318462734929069350,	0.318510131300019090,	0.318557526874693130,	0.318604921652973330,	0.318652315634741220,	0.318699708819878750,	
+0.318747101208266600,	0.318794492799786670,	0.318841883594320530,	0.318889273591750070,	0.318936662791956040,	0.318984051194820320,	0.319031438800224940,	0.319078825608050510,	
+0.319126211618179000,	0.319173596830492010,	0.319220981244871420,	0.319268364861197970,	0.319315747679353610,	0.319363129699219870,	0.319410510920678680,	0.319457891343610860,	
+0.319505270967898270,	0.319552649793422520,	0.319600027820065580,	0.319647405047708170,	0.319694781476232200,	0.319742157105519290,	0.319789531935451400,	0.319836905965909250,	
+0.319884279196774870,	0.319931651627930190,	0.319979023259255980,	0.320026394090634210,	0.320073764121946440,	0.320121133353074680,	0.320168501783899660,	0.320215869414303410,	
+0.320263236244167470,	0.320310602273373880,	0.320357967501803340,	0.320405331929337900,	0.320452695555859090,	0.320500058381249010,	0.320547420405388360,	0.320594781628159130,	
+0.320642142049442970,	0.320689501669121860,	0.320736860487076560,	0.320784218503189170,	0.320831575717341170,	0.320878932129414710,	0.320926287739290440,	0.320973642546850460,	
+0.321020996551976800,	0.321068349754550290,	0.321115702154452840,	0.321163053751566120,	0.321210404545772210,	0.321257754536951880,	0.321305103724987160,	0.321352452109759710,	
+0.321399799691151510,	0.321447146469043380,	0.321494492443317400,	0.321541837613855190,	0.321589181980538820,	0.321636525543249060,	0.321683868301868010,	0.321731210256277270,	
+0.321778551406358910,	0.321825891751993780,	0.321873231293063890,	0.321920570029451350,	0.321967907961036970,	0.322015245087702850,	0.322062581409330580,	0.322109916925802320,	
+0.322157251636998820,	0.322204585542802180,	0.322251918643094050,	0.322299250937756580,	0.322346582426670580,	0.322393913109718100,	0.322441242986780840,	0.322488572057740900,	
+0.322535900322479090,	0.322583227780877560,	0.322630554432817910,	0.322677880278182340,	0.322725205316851670,	0.322772529548707940,	0.322819852973633300,	0.322867175591508630,	
+0.322914497402216010,	0.322961818405637200,	0.323009138601654200,	0.323056457990147930,	0.323103776571000530,	0.323151094344093730,	0.323198411309309600,	0.323245727466528960,	
+0.323293042815634090,	0.323340357356506570,	0.323387671089028550,	0.323434984013080960,	0.323482296128545900,	0.323529607435305120,	0.323576917933240730,	0.323624227622233640,	
+0.323671536502165960,	0.323718844572919440,	0.323766151834376240,	0.323813458286417220,	0.323860763928924600,	0.323908068761780410,	0.323955372784865690,	0.324002675998062540,	
+0.324049978401252660,	0.324097279994318310,	0.324144580777140310,	0.324191880749600870,	0.324239179911581690,	0.324286478262965030,	0.324333775803631710,	0.324381072533463990,	
+0.324428368452343570,	0.324475663560152620,	0.324522957856772150,	0.324570251342084230,	0.324617544015970700,	0.324664835878313740,	0.324712126928994320,	0.324759417167894530,	
+0.324806706594896580,	0.324853995209881510,	0.324901283012731410,	0.324948570003328110,	0.324995856181553850,	0.325043141547289470,	0.325090426100417270,	0.325137709840818970,	
+0.325184992768376870,	0.325232274882971790,	0.325279556184486120,	0.325326836672801490,	0.325374116347800220,	0.325421395209363200,	0.325468673257372720,	0.325515950491710560,	
+0.325563226912258970,	0.325610502518898840,	0.325657777311512460,	0.325705051289982120,	0.325752324454188670,	0.325799596804014440,	0.325846868339341180,	0.325894139060051210,	
+0.325941408966025470,	0.325988678057146150,	0.326035946333295190,	0.326083213794354790,	0.326130480440205930,	0.326177746270730870,	0.326225011285811380,	0.326272275485329890,	
+0.326319538869167200,	0.326366801437205700,	0.326414063189327200,	0.326461324125413950,	0.326508584245347010,	0.326555843549008570,	0.326603102036280960,	0.326650359707045150,	
+0.326697616561183460,	0.326744872598577710,	0.326792127819110210,	0.326839382222661960,	0.326886635809115260,	0.326933888578351980,	0.326981140530254400,	0.327028391664703540,	
+0.327075641981581730,	0.327122891480770780,	0.327170140162153010,	0.327217388025609510,	0.327264635071022550,	0.327311881298273930,	0.327359126707246100,	0.327406371297820020,	
+0.327453615069877970,	0.327500858023301920,	0.327548100157974140,	0.327595341473775670,	0.327642581970588880,	0.327689821648296020,	0.327737060506778200,	0.327784298545917730,	
+0.327831535765596540,	0.327878772165696890,	0.327926007746099920,	0.327973242506687910,	0.328020476447342780,	0.328067709567946900,	0.328114941868381360,	0.328162173348528430,	
+0.328209404008270030,	0.328256633847488600,	0.328303862866065170,	0.328351091063882050,	0.328398318440821180,	0.328445544996764980,	0.328492770731594500,	0.328539995645192040,	
+0.328587219737440040,	0.328634443008219590,	0.328681665457413010,	0.328728887084902280,	0.328776107890569770,	0.328823327874296520,	0.328870547035965020,	0.328917765375457080,	
+0.328964982892655190,	0.329012199587440380,	0.329059415459695140,	0.329106630509301330,	0.329153844736141340,	0.329201058140096310,	0.329248270721048670,	0.329295482478880350,	
+0.329342693413473770,	0.329389903524709980,	0.329437112812471460,	0.329484321276640570,	0.329531528917098470,	0.329578735733727530,	0.329625941726409740,	0.329673146895027580,	
+0.329720351239462080,	0.329767554759595680,	0.329814757455310470,	0.329861959326488710,	0.329909160373011660,	0.329956360594761740,	0.330003559991620900,	0.330050758563471550,	
+0.330097956310194900,	0.330145153231673370,	0.330192349327788960,	0.330239544598424080,	0.330286739043459900,	0.330333932662778940,	0.330381125456263080,	0.330428317423794860,	
+0.330475508565255430,	0.330522698880527210,	0.330569888369492690,	0.330617077032032970,	0.330664264868030630,	0.330711451877367610,	0.330758638059926340,	0.330805823415588120,	
+0.330853007944235280,	0.330900191645749960,	0.330947374520014550,	0.330994556566910290,	0.331041737786319680,	0.331088918178124690,	0.331136097742207810,	0.331183276478450310,	
+0.331230454386734540,	0.331277631466942720,	0.331324807718957230,	0.331371983142659250,	0.331419157737931350,	0.331466331504655990,	0.331513504442714320,	0.331560676551988950,	
+0.331607847832361860,	0.331655018283715570,	0.331702187905931310,	0.331749356698891610,	0.331796524662478500,	0.331843691796574520,	0.331890858101060840,	0.331938023575820080,	
+0.331985188220734200,	0.332032352035685820,	0.332079515020556100,	0.332126677175227590,	0.332173838499582430,	0.332220998993503050,	0.332268158656870820,	0.332315317489568110,	
+0.332362475491477570,	0.332409632662480410,	0.332456789002459170,	0.332503944511296000,	0.332551099188873320,	0.332598253035072510,	0.332645406049776050,	0.332692558232866090,	
+0.332739709584225160,	0.332786860103734540,	0.332834009791276750,	0.332881158646733900,	0.332928306669988630,	0.332975453860922140,	0.333022600219417040,	0.333069745745355470,	
+0.333116890438619920,	0.333164034299091690,	0.333211177326653400,	0.333258319521187620,	0.333305460882575570,	0.333352601410699890,	0.333399741105442740,	0.333446879966686590,	
+0.333494017994312890,	0.333541155188204100,	0.333588291548242430,	0.333635427074310490,	0.333682561766289520,	0.333729695624062130,	0.333776828647510570,	0.333823960836517280,	
+0.333871092190963730,	0.333918222710732400,	0.333965352395705520,	0.334012481245765710,	0.334059609260794250,	0.334106736440673790,	0.334153862785286470,	0.334200988294514940,	
+0.334248112968240470,	0.334295236806345760,	0.334342359808713350,	0.334389481975224670,	0.334436603305762250,	0.334483723800208300,	0.334530843458445530,	0.334577962280355190,	
+0.334625080265819940,	0.334672197414721980,	0.334719313726943970,	0.334766429202367210,	0.334813543840874420,	0.334860657642347740,	0.334907770606669870,	0.334954882733722150,	
+0.335001994023387210,	0.335049104475547310,	0.335096214090085050,	0.335143322866881810,	0.335190430805820280,	0.335237537906783120,	0.335284644169651650,	0.335331749594308610,	
+0.335378854180636180,	0.335425957928517040,	0.335473060837832570,	0.335520162908465480,	0.335567264140297920,	0.335614364533212690,	0.335661464087091080,	0.335708562801815820,	
+0.335755660677269200,	0.335802757713333790,	0.335849853909891080,	0.335896949266823790,	0.335944043784014050,	0.335991137461344620,	0.336038230298697000,	0.336085322295953730,	
+0.336132413452997600,	0.336179503769710060,	0.336226593245973700,	0.336273681881670890,	0.336320769676684280,	0.336367856630895360,	0.336414942744186760,	0.336462028016440820,	
+0.336509112447540230,	0.336556196037366420,	0.336603278785802150,	0.336650360692729630,	0.336697441758031680,	0.336744521981589660,	0.336791601363286400,	0.336838679903004090,	
+0.336885757600625500,	0.336932834456032120,	0.336979910469106640,	0.337026985639731380,	0.337074059967789110,	0.337121133453161250,	0.337168206095730560,	0.337215277895379750,	
+0.337262348851990360,	0.337309418965445030,	0.337356488235626200,	0.337403556662416610,	0.337450624245697660,	0.337497690985352150,	0.337544756881262400,	0.337591821933311220,	
+0.337638886141380050,	0.337685949505351630,	0.337733012025108410,	0.337780073700533030,	0.337827134531507030,	0.337874194517913230,	0.337921253659633940,	0.337968311956551910,	
+0.338015369408548700,	0.338062426015507070,	0.338109481777309760,	0.338156536693838380,	0.338203590764975640,	0.338250643990603890,	0.338297696370605970,	0.338344747904863410,	
+0.338391798593258960,	0.338438848435675010,	0.338485897431994360,	0.338532945582098570,	0.338579992885870430,	0.338627039343192270,	0.338674084953946910,	0.338721129718015990,	
+0.338768173635282170,	0.338815216705627980,	0.338862258928936120,	0.338909300305088200,	0.338956340833967080,	0.339003380515455480,	0.339050419349435030,	0.339097457335788500,	
+0.339144494474398320,	0.339191530765147350,	0.339238566207917150,	0.339285600802590510,	0.339332634549049880,	0.339379667447178070,	0.339426699496856720,	0.339473730697968550,	
+0.339520761050396080,	0.339567790554022140,	0.339614819208728320,	0.339661847014397440,	0.339708873970911930,	0.339755900078154650,	0.339802925336007200,	0.339849949744352450,	
+0.339896973303072840,	0.339943996012051160,	0.339991017871169140,	0.340038038880309530,	0.340085059039355260,	0.340132078348187930,	0.340179096806690400,	0.340226114414745100,	
+0.340273131172234950,	0.340320147079041570,	0.340367162135047810,	0.340414176340136150,	0.340461189694189480,	0.340508202197089380,	0.340555213848718790,	0.340602224648960170,	
+0.340649234597696420,	0.340696243694809160,	0.340743251940181290,	0.340790259333695280,	0.340837265875234050,	0.340884271564679210,	0.340931276401913730,	0.340978280386820430,	
+0.341025283519281070,	0.341072285799178480,	0.341119287226395170,	0.341166287800814040,	0.341213287522316780,	0.341260286390786320,	0.341307284406105140,	0.341354281568156170,	
+0.341401277876821060,	0.341448273331982800,	0.341495267933523810,	0.341542261681327060,	0.341589254575274280,	0.341636246615248330,	0.341683237801131800,	0.341730228132807570,	
+0.341777217610157340,	0.341824206233064090,	0.341871194001410750,	0.341918180915078970,	0.341965166973951800,	0.342012152177911640,	0.342059136526841560,	0.342106120020623180,	
+0.342153102659139560,	0.342200084442273120,	0.342247065369906960,	0.342294045441922660,	0.342341024658203260,	0.342388003018631320,	0.342434980523089790,	0.342481957171460350,	
+0.342528932963626020,	0.342575907899469400,	0.342622881978873420,	0.342669855201719780,	0.342716827567891570,	0.342763799077271670,	0.342810769729741840,	0.342857739525185110,	
+0.342904708463483980,	0.342951676544521580,	0.342998643768179510,	0.343045610134340820,	0.343092575642888140,	0.343139540293704470,	0.343186504086671450,	0.343233467021672230,	
+0.343280429098589300,	0.343327390317305750,	0.343374350677703330,	0.343421310179664980,	0.343468268823073410,	0.343515226607811530,	0.343562183533761170,	0.343609139600805360,	
+0.343656094808826750,	0.343703049157708270,	0.343750002647331740,	0.343796955277580250,	0.343843907048336730,	0.343890857959483100,	0.343937808010902290,	0.343984757202476950,	
+0.344031705534090130,	0.344078653005623620,	0.344125599616960490,	0.344172545367983360,	0.344219490258575290,	0.344266434288618080,	0.344313377457994780,	0.344360319766588040,	
+0.344407261214280950,	0.344454201800955260,	0.344501141526494030,	0.344548080390780000,	0.344595018393696160,	0.344641955535124390,	0.344688891814947660,	0.344735827233049190,	
+0.344782761789310720,	0.344829695483615310,	0.344876628315845700,	0.344923560285884890,	0.344970491393614800,	0.345017421638918460,	0.345064351021678590,	0.345111279541778280,	
+0.345158207199099290,	0.345205133993524820,	0.345252059924937520,	0.345298984993220480,	0.345345909198255590,	0.345392832539925860,	0.345439755018114080,	0.345486676632703330,	
+0.345533597383575470,	0.345580517270613670,	0.345627436293700910,	0.345674354452719210,	0.345721271747551570,	0.345768188178080800,	0.345815103744189940,	0.345862018445760920,	
+0.345908932282676830,	0.345955845254820430,	0.346002757362074860,	0.346049668604321960,	0.346096578981444860,	0.346143488493326320,	0.346190397139849500,	0.346237304920896270,	
+0.346284211836349780,	0.346331117886092720,	0.346378023070008310,	0.346424927387978420,	0.346471830839886250,	0.346518733425614460,	0.346565635145046290,	0.346612535998063580,	
+0.346659435984549510,	0.346706335104387310,	0.346753233357458830,	0.346800130743647290,	0.346847027262835450,	0.346893922914906390,	0.346940817699742170,	0.346987711617225860,	
+0.347034604667240290,	0.347081496849668600,	0.347128388164392790,	0.347175278611295990,	0.347222168190260970,	0.347269056901170990,	0.347315944743907920,	0.347362831718355030,	
+0.347409717824395000,	0.347456603061911170,	0.347503487430785350,	0.347550370930900850,	0.347597253562140830,	0.347644135324387200,	0.347691016217523300,	0.347737896241431870,	
+0.347784775395996060,	0.347831653681097920,	0.347878531096620650,	0.347925407642447060,	0.347972283318460360,	0.348019158124542540,	0.348066032060576850,	0.348112905126446050,	
+0.348159777322033400,	0.348206648647220900,	0.348253519101891730,	0.348300388685928830,	0.348347257399215350,	0.348394125241633320,	0.348440992213065960,	0.348487858313396510,	
+0.348534723542507090,	0.348581587900280760,	0.348628451386600540,	0.348675314001349550,	0.348722175744409890,	0.348769036615664770,	0.348815896614997070,	0.348862755742290030,	
+0.348909613997425700,	0.348956471380287350,	0.349003327890757830,	0.349050183528720360,	0.349097038294057030,	0.349143892186651150,	0.349190745206385490,	0.349237597353143360,	
+0.349284448626806850,	0.349331299027259230,	0.349378148554383820,	0.349424997208062580,	0.349471844988178850,	0.349518691894615490,	0.349565537927255810,	0.349612383085981910,	
+0.349659227370677010,	0.349706070781224070,	0.349752913317506350,	0.349799754979405960,	0.349846595766806160,	0.349893435679589860,	0.349940274717640390,	0.349987112880839830,	
+0.350033950169071520,	0.350080786582218310,	0.350127622120163520,	0.350174456782789300,	0.350221290569978920,	0.350268123481615290,	0.350314955517581790,	0.350361786677760470,	
+0.350408616962034740,	0.350455446370287800,	0.350502274902401880,	0.350549102558260270,	0.350595929337745920,	0.350642755240742120,	0.350689580267131040,	0.350736404416795990,	
+0.350783227689619950,	0.350830050085486290,	0.350876871604277050,	0.350923692245875610,	0.350970512010164940,	0.351017330897028470,	0.351064148906348180,	0.351110966038007570,	
+0.351157782291889540,	0.351204597667877430,	0.351251412165853430,	0.351298225785700910,	0.351345038527303260,	0.351391850390542600,	0.351438661375302270,	0.351485471481465310,	
+0.351532280708915070,	0.351579089057533770,	0.351625896527204660,	0.351672703117810900,	0.351719508829235750,	0.351766313661361410,	0.351813117614071300,	0.351859920687248360,	
+0.351906722880776070,	0.351953524194536570,	0.352000324628413240,	0.352047124182289060,	0.352093922856047570,	0.352140720649570800,	0.352187517562742250,	0.352234313595445270,	
+0.352281108747562130,	0.352327903018976260,	0.352374696409570590,	0.352421488919228590,	0.352468280547832470,	0.352515071295265600,	0.352561861161411080,	0.352608650146152340,	
+0.352655438249371570,	0.352702225470952200,	0.352749011810777220,	0.352795797268730170,	0.352842581844693190,	0.352889365538549770,	0.352936148350182940,	0.352982930279476140,	
+0.353029711326311610,	0.353076491490572800,	0.353123270772142780,	0.353170049170905000,	0.353216826686741650,	0.353263603319536210,	0.353310379069172230,	0.353357153935531850,	
+0.353403927918498620,	0.353450701017955560,	0.353497473233786160,	0.353544244565872630,	0.353591015014098560,	0.353637784578346880,	0.353684553258501230,	0.353731321054443710,	
+0.353778087966057920,	0.353824853993226880,	0.353871619135834150,	0.353918383393761970,	0.353965146766893830,	0.354011909255112780,	0.354058670858302390,	0.354105431576344940,	
+0.354152191409123910,	0.354198950356522770,	0.354245708418423840,	0.354292465594710670,	0.354339221885266340,	0.354385977289974340,	0.354432731808717040,	0.354479485441377860,	
+0.354526238187839960,	0.354572990047986920,	0.354619741021700960,	0.354666491108865670,	0.354713240309364130,	0.354759988623079890,	0.354806736049895320,	0.354853482589693850,	
+0.354900228242358730,	0.354946973007773390,	0.354993716885820270,	0.355040459876382830,	0.355087201979344620,	0.355133943194588020,	0.355180683521996610,	0.355227422961453430,	
+0.355274161512842130,	0.355320899176044980,	0.355367635950945620,	0.355414371837427130,	0.355461106835373190,	0.355507840944666030,	0.355554574165189260,	0.355601306496826090,	
+0.355648037939460040,	0.355694768492973430,	0.355741498157249980,	0.355788226932172770,	0.355834954817625390,	0.355881681813490220,	0.355928407919650800,	0.355975133135990830,	
+0.356021857462392620,	0.356068580898739720,	0.356115303444915380,	0.356162025100803190,	0.356208745866285590,	0.356255465741246060,	0.356302184725567850,	0.356348902819134670,	
+0.356395620021828730,	0.356442336333533780,	0.356489051754133040,	0.356535766283510020,	0.356582479921547180,	0.356629192668128150,	0.356675904523136130,	0.356722615486454790,	
+0.356769325557966480,	0.356816034737554850,	0.356862743025103120,	0.356909450420494930,	0.356956156923612770,	0.357002862534340160,	0.357049567252560820,	0.357096271078157170,	
+0.357142974011012860,	0.357189676051011040,	0.357236377198035530,	0.357283077451968580,	0.357329776812694010,	0.357376475280094970,	0.357423172854055120,	0.357469869534456970,	
+0.357516565321184140,	0.357563260214119880,	0.357609954213147900,	0.357656647318150610,	0.357703339529011730,	0.357750030845614460,	0.357796721267842570,	0.357843410795578410,	
+0.357890099428705750,	0.357936787167108250,	0.357983474010668380,	0.358030159959269840,	0.358076845012795850,	0.358123529171130220,	0.358170212434155310,	0.358216894801754890,	
+0.358263576273812220,	0.358310256850211010,	0.358356936530833780,	0.358403615315564190,	0.358450293204285560,	0.358496970196881650,	0.358543646293234820,	0.358590321493228950,	
+0.358636995796747240,	0.358683669203673450,	0.358730341713890120,	0.358777013327280900,	0.358823684043729550,	0.358870353863118610,	0.358917022785331720,	0.358963690810252310,	
+0.359010357937764090,	0.359057024167749590,	0.359103689500092530,	0.359150353934676200,	0.359197017471384440,	0.359243680110099660,	0.359290341850705740,	0.359337002693085940,	
+0.359383662637124070,	0.359430321682702610,	0.359476979829705390,	0.359523637078015660,	0.359570293427517280,	0.359616948878092760,	0.359663603429625830,	0.359710257081999940,	
+0.359756909835098780,	0.359803561688804950,	0.359850212643002210,	0.359896862697574370,	0.359943511852403920,	0.359990160107374720,	0.360036807462370160,	0.360083453917273920,	
+0.360130099471968670,	0.360176744126338160,	0.360223387880265810,	0.360270030733635390,	0.360316672686329500,	0.360363313738231880,	0.360409953889226030,	0.360456593139195650,	
+0.360503231488023430,	0.360549868935593100,	0.360596505481788120,	0.360643141126492260,	0.360689775869588170,	0.360736409710959600,	0.360783042650490440,	0.360829674688063260,	
+0.360876305823561890,	0.360922936056869760,	0.360969565387870730,	0.361016193816447340,	0.361062821342483460,	0.361109447965862530,	0.361156073686468400,	0.361202698504183680,	
+0.361249322418892240,	0.361295945430477440,	0.361342567538823210,	0.361389188743812150,	0.361435809045328130,	0.361482428443254570,	0.361529046937475400,	0.361575664527873150,	
+0.361622281214331760,	0.361668896996735050,	0.361715511874965700,	0.361762125848907600,	0.361808738918444120,	0.361855351083459230,	0.361901962343835590,	0.361948572699457020,	
+0.361995182150207040,	0.362041790695969480,	0.362088398336627040,	0.362135005072063590,	0.362181610902162670,	0.362228215826808090,	0.362274819845882610,	0.362321422959270060,	
+0.362368025166853960,	0.362414626468518190,	0.362461226864145390,	0.362507826353619610,	0.362554424936824660,	0.362601022613643190,	0.362647619383959230,	0.362694215247656160,	
+0.362740810204618010,	0.362787404254727390,	0.362833997397868260,	0.362880589633924170,	0.362927180962778980,	0.362973771384315470,	0.363020360898417490,	0.363066949504968650,	
+0.363113537203852810,	0.363160123994952730,	0.363206709878152290,	0.363253294853335130,	0.363299878920385180,	0.363346462079185080,	0.363393044329618780,	0.363439625671569950,	
+0.363486206104922440,	0.363532785629558990,	0.363579364245363580,	0.363625941952220140,	0.363672518750011500,	0.363719094638621510,	0.363765669617933770,	0.363812243687832330,	
+0.363858816848199820,	0.363905389098920280,	0.363951960439877260,	0.363998530870954800,	0.364045100392035580,	0.364091669003003600,	0.364138236703742400,	0.364184803494136070,	
+0.364231369374067300,	0.364277934343420150,	0.364324498402078150,	0.364371061549925270,	0.364417623786844390,	0.364464185112719390,	0.364510745527434340,	0.364557305030872080,	
+0.364603863622916520,	0.364650421303451270,	0.364696978072360400,	0.364743533929526690,	0.364790088874834160,	0.364836642908166360,	0.364883196029407390,	0.364929748238440040,	
+0.364976299535148260,	0.365022849919415800,	0.365069399391126590,	0.365115947950163440,	0.365162495596410450,	0.365209042329751270,	0.365255588150069810,	0.365302133057249010,	
+0.365348677051172910,	0.365395220131725480,	0.365441762298789610,	0.365488303552249320,	0.365534843891988310,	0.365581383317890580,	0.365627921829838940,	0.365674459427717540,	
+0.365720996111409960,	0.365767531880800360,	0.365814066735771440,	0.365860600676207400,	0.365907133701991850,	0.365953665813008920,	0.366000197009141380,	0.366046727290273320,	
+0.366093256656288450,	0.366139785107070900,	0.366186312642503400,	0.366232839262470190,	0.366279364966854810,	0.366325889755541480,	0.366372413628413000,	0.366418936585353520,	
+0.366465458626247080,	0.366511979750976550,	0.366558499959426130,	0.366605019251479420,	0.366651537627020570,	0.366698055085932510,	0.366744571628099260,	0.366791087253404650,	
+0.366837601961732650,	0.366884115752966310,	0.366930628626989610,	0.366977140583686410,	0.367023651622940710,	0.367070161744635470,	0.367116670948654860,	0.367163179234882560,	
+0.367209686603202750,	0.367256193053498270,	0.367302698585653340,	0.367349203199552050,	0.367395706895077330,	0.367442209672113380,	0.367488711530543910,	0.367535212470253000,	
+0.367581712491123700,	0.367628211593040160,	0.367674709775886010,	0.367721207039545580,	0.367767703383901630,	0.367814198808838480,	0.367860693314239820,	0.367907186899989860,	
+0.367953679565971530,	0.368000171312068970,	0.368046662138165950,	0.368093152044146720,	0.368139641029894220,	0.368186129095292580,	0.368232616240226070,	0.368279102464577570,	
+0.368325587768231320,	0.368372072151071150,	0.368418555612981150,	0.368465038153844350,	0.368511519773545020,	0.368558000471966850,	0.368604480248994060,	0.368650959104509680,	
+0.368697437038397910,	0.368743914050542580,	0.368790390140827820,	0.368836865309136670,	0.368883339555353410,	0.368929812879361770,	0.368976285281045980,	0.369022756760289120,	
+0.369069227316975330,	0.369115696950988950,	0.369162165662212830,	0.369208633450531340,	0.369255100315828260,	0.369301566257987820,	0.369348031276893090,	0.369394495372428240,	
+0.369440958544477230,	0.369487420792924180,	0.369533882117652150,	0.369580342518545430,	0.369626801995487860,	0.369673260548363690,	0.369719718177055960,	0.369766174881448920,	
+0.369812630661426500,	0.369859085516872850,	0.369905539447671130,	0.369951992453705520,	0.369998444534859920,	0.370044895691018620,	0.370091345922064720,	0.370137795227882430,	
+0.370184243608356060,	0.370230691063368640,	0.370277137592804560,	0.370323583196547570,	0.370370027874482090,	0.370416471626491050,	0.370462914452458880,	0.370509356352269450,	
+0.370555797325807010,	0.370602237372954670,	0.370648676493596730,	0.370695114687617120,	0.370741551954900110,	0.370787988295328830,	0.370834423708787550,	0.370880858195160260,	
+0.370927291754331200,	0.370973724386183530,	0.371020156090601520,	0.371066586867469520,	0.371113016716670690,	0.371159445638089280,	0.371205873631609230,	0.371252300697114960,	
+0.371298726834489500,	0.371345152043617230,	0.371391576324382080,	0.371437999676668410,	0.371484422100359310,	0.371530843595339170,	0.371577264161491950,	0.371623683798701920,	
+0.371670102506852280,	0.371716520285827410,	0.371762937135511230,	0.371809353055788160,	0.371855768046541250,	0.371902182107654910,	0.371948595239013520,	0.371995007440500290,	
+0.372041418711999470,	0.372087829053395160,	0.372134238464571660,	0.372180646945412140,	0.372227054495801070,	0.372273461115622320,	0.372319866804760310,	0.372366271563098210,	
+0.372412675390520480,	0.372459078286911050,	0.372505480252154300,	0.372551881286133480,	0.372598281388732970,	0.372644680559836680,	0.372691078799329170,	0.372737476107093510,	
+0.372783872483014200,	0.372830267926975210,	0.372876662438860920,	0.372923056018554580,	0.372969448665940620,	0.373015840380903410,	0.373062231163326210,	0.373108621013093440,	
+0.373155009930089100,	0.373201397914197650,	0.373247784965302310,	0.373294171083287500,	0.373340556268037300,	0.373386940519436050,	0.373433323837367100,	0.373479706221714780,	
+0.373526087672363230,	0.373572468189196870,	0.373618847772098920,	0.373665226420953900,	0.373711604135645750,	0.373757980916059050,	0.373804356762076910,	0.373850731673583960,	
+0.373897105650464520,	0.373943478692601970,	0.373989850799880730,	0.374036221972184780,	0.374082592209398770,	0.374128961511405840,	0.374175329878090490,	0.374221697309336850,	
+0.374268063805029360,	0.374314429365051270,	0.374360793989287120,	0.374407157677621010,	0.374453520429937400,	0.374499882246119580,	0.374546243126052060,	0.374592603069618950,	
+0.374638962076704720,	0.374685320147192690,	0.374731677280967350,	0.374778033477913220,	0.374824388737913570,	0.374870743060853000,	0.374917096446615530,	0.374963448895085760,	
+0.375009800406146950,	0.375056150979683640,	0.375102500615579980,	0.375148849313720440,	0.375195197073988350,	0.375241543896268290,	0.375287889780444420,	0.375334234726401150,	
+0.375380578734021920,	0.375426921803191260,	0.375473263933793320,	0.375519605125712590,	0.375565945378832420,	0.375612284693037420,	0.375658623068212070,	0.375704960504239790,	
+0.375751297001005120,	0.375797632558392210,	0.375843967176285600,	0.375890300854568700,	0.375936633593126010,	0.375982965391841730,	0.376029296250600500,	0.376075626169285580,	
+0.376121955147781570,	0.376168283185972730,	0.376214610283743590,	0.376260936440977470,	0.376307261657559010,	0.376353585933372430,	0.376399909268302300,	0.376446231662231960,	
+0.376492553115046040,	0.376538873626628750,	0.376585193196864680,	0.376631511825637200,	0.376677829512830960,	0.376724146258330560,	0.376770462062019420,	0.376816776923782070,	
+0.376863090843502780,	0.376909403821066190,	0.376955715856355680,	0.377002026949255890,	0.377048337099651020,	0.377094646307425730,	0.377140954572463380,	0.377187261894648680,	
+0.377233568273865780,	0.377279873709999440,	0.377326178202932960,	0.377372481752551060,	0.377418784358737940,	0.377465086021378240,	0.377511386740355450,	0.377557686515554160,	
+0.377603985346859130,	0.377650283234153670,	0.377696580177322550,	0.377742876176249910,	0.377789171230820560,	0.377835465340917830,	0.377881758506426410,	0.377928050727230680,	
+0.377974342003215170,	0.378020632334263420,	0.378066921720260070,	0.378113210161089400,	0.378159497656636150,	0.378205784206783750,	0.378252069811416850,	0.378298354470419820,	
+0.378344638183677310,	0.378390920951072740,	0.378437202772490930,	0.378483483647816530,	0.378529763576932960,	0.378576042559724990,	0.378622320596076920,	0.378668597685873460,	
+0.378714873828998160,	0.378761149025335590,	0.378807423274770180,	0.378853696577186590,	0.378899968932468410,	0.378946240340500280,	0.378992510801166530,	0.379038780314351900,	
+0.379085048879939930,	0.379131316497815400,	0.379177583167862490,	0.379223848889966080,	0.379270113664009590,	0.379316377489877900,	0.379362640367455210,	0.379408902296626330,	
+0.379455163277274800,	0.379501423309285320,	0.379547682392542720,	0.379593940526930520,	0.379640197712333430,	0.379686453948635870,	0.379732709235722610,	0.379778963573477120,	
+0.379825216961784280,	0.379871469400528350,	0.379917720889594190,	0.379963971428865290,	0.380010221018226460,	0.380056469657562120,	0.380102717346756940,	0.380148964085694600,	
+0.380195209874259870,	0.380241454712337110,	0.380287698599811100,	0.380333941536565470,	0.380380183522484930,	0.380426424557454400,	0.380472664641357320,	0.380518903774078650,	
+0.380565141955502730,	0.380611379185514300,	0.380657615463997070,	0.380703850790835740,	0.380750085165914850,	0.380796318589119110,	0.380842551060332210,	0.380888782579438870,	
+0.380935013146323610,	0.380981242760871250,	0.381027471422965340,	0.381073699132490780,	0.381119925889331970,	0.381166151693373700,	0.381212376544499690,	0.381258600442594740,	
+0.381304823387543680,	0.381351045379230150,	0.381397266417539020,	0.381443486502354710,	0.381489705633562100,	0.381535923811044840,	0.381582141034687740,	0.381628357304375330,	
+0.381674572619992380,	0.381720786981422640,	0.381767000388550880,	0.381813212841261630,	0.381859424339439810,	0.381905634882968970,	0.381951844471734080,	0.381998053105619520,	
+0.382044260784510310,	0.382090467508289950,	0.382136673276843530,	0.382182878090055740,	0.382229081947810410,	0.382275284849992350,	0.382321486796486090,	0.382367687787176500,	
+0.382413887821947300,	0.382460086900683340,	0.382506285023269220,	0.382552482189589760,	0.382598678399528710,	0.382644873652970950,	0.382691067949801010,	0.382737261289903820,	
+0.382783453673163020,	0.382829645099463660,	0.382875835568690150,	0.382922025080727420,	0.382968213635459300,	0.383014401232770580,	0.383060587872545880,	0.383106773554670100,	
+0.383152958279027010,	0.383199142045501540,	0.383245324853978610,	0.383291506704341920,	0.383337687596476460,	0.383383867530266820,	0.383430046505597920,	0.383476224522353530,	
+0.383522401580418500,	0.383568577679677500,	0.383614752820015450,	0.383660927001316150,	0.383707100223464490,	0.383753272486345110,	0.383799443789842930,	0.383845614133841770,	
+0.383891783518226560,	0.383937951942881880,	0.383984119407692730,	0.384030285912542850,	0.384076451457317280,	0.384122616041901010,	0.384168779666177800,	0.384214942330032620,	
+0.384261104033350060,	0.384307264776015180,	0.384353424557911720,	0.384399583378924660,	0.384445741238938710,	0.384491898137838740,	0.384538054075508670,	0.384584209051833440,	
+0.384630363066697730,	0.384676516119986490,	0.384722668211583570,	0.384768819341373970,	0.384814969509242270,	0.384861118715073610,	0.384907266958751770,	0.384953414240161720,	
+0.384999560559188550,	0.385045705915716070,	0.385091850309629340,	0.385137993740812920,	0.385184136209151980,	0.385230277714530330,	0.385276418256832900,	0.385322557835944490,	
+0.385368696451750090,	0.385414834104133520,	0.385460970792979860,	0.385507106518173770,	0.385553241279600330,	0.385599375077143370,	0.385645507910688020,	0.385691639780118830,	
+0.385737770685321000,	0.385783900626178290,	0.385830029602575900,	0.385876157614398360,	0.385922284661530890,	0.385968410743857290,	0.386014535861262610,	0.386060660013632040,	
+0.386106783200849460,	0.386152905422799840,	0.386199026679368010,	0.386245146970438990,	0.386291266295896720,	0.386337384655626280,	0.386383502049512330,	0.386429618477440120,	
+0.386475733939293410,	0.386521848434957350,	0.386567961964316700,	0.386614074527256490,	0.386660186123660770,	0.386706296753414560,	0.386752406416402570,	0.386798515112510010,	
+0.386844622841620740,	0.386890729603619920,	0.386936835398392690,	0.386982940225822910,	0.387029044085795860,	0.387075146978196170,	0.387121248902909000,	0.387167349859818320,	
+0.387213449848809230,	0.387259548869766550,	0.387305646922575410,	0.387351744007119750,	0.387397840123284710,	0.387443935270955050,	0.387490029450016040,	0.387536122660351480,	
+0.387582214901846630,	0.387628306174386210,	0.387674396477855450,	0.387720485812138360,	0.387766574177119960,	0.387812661572685570,	0.387858747998719170,	0.387904833455105850,	
+0.387950917941730420,	0.387997001458478150,	0.388043084005232960,	0.388089165581880000,	0.388135246188304190,	0.388181325824390690,	0.388227404490023410,	0.388273482185087670,	
+0.388319558909468180,	0.388365634663050240,	0.388411709445717790,	0.388457783257356030,	0.388503856097849880,	0.388549927967084430,	0.388595998864943840,	0.388642068791313190,	
+0.388688137746077740,	0.388734205729121600,	0.388780272740329950,	0.388826338779587610,	0.388872403846779790,	0.388918467941790580,	0.388964531064505240,	0.389010593214808520,	
+0.389056654392585740,	0.389102714597720890,	0.389148773830099270,	0.389194832089605760,	0.389240889376125550,	0.389286945689542700,	0.389333001029742440,	0.389379055396609770,	
+0.389425108790029780,	0.389471161209886670,	0.389517212656065650,	0.389563263128451580,	0.389609312626929770,	0.389655361151384270,	0.389701408701700390,	0.389747455277763390,	
+0.389793500879457300,	0.389839545506667500,	0.389885589159278840,	0.389931631837176610,	0.389977673540244870,	0.390023714268368960,	0.390069754021433730,	0.390115792799324570,	
+0.390161830601925500,	0.390207867429121890,	0.390253903280798560,	0.390299938156840940,	0.390345972057133010,	0.390392004981560180,	0.390438036930007340,	0.390484067902359790,	
+0.390530097898501680,	0.390576126918318280,	0.390622154961695060,	0.390668182028515940,	0.390714208118666470,	0.390760233232031410,	0.390806257368496170,	0.390852280527944910,	
+0.390898302710262990,	0.390944323915335230,	0.390990344143047120,	0.391036363393282740,	0.391082381665927400,	0.391128398960866150,	0.391174415277984360,	0.391220430617166050,	
+0.391266444978296660,	0.391312458361261220,	0.391358470765944990,	0.391404482192232170,	0.391450492640008200,	0.391496502109158320,	0.391542510599566850,	0.391588518111119050,	
+0.391634524643700020,	0.391680530197195060,	0.391726534771488330,	0.391772538366465310,	0.391818540982010910,	0.391864542618010630,	0.391910543274348490,	0.391956542950910040,	
+0.392002541647580250,	0.392048539364244500,	0.392094536100786980,	0.392140531857093130,	0.392186526633047980,	0.392232520428536900,	0.392278513243444090,	0.392324505077654980,	
+0.392370495931054660,	0.392416485803528500,	0.392462474694960710,	0.392508462605236700,	0.392554449534242010,	0.392600435481860740,	0.392646420447978370,	0.392692404432479990,	
+0.392738387435250970,	0.392784369456175560,	0.392830350495139260,	0.392876330552027090,	0.392922309626724530,	0.392968287719115740,	0.393014264829086250,	0.393060240956521090,	
+0.393106216101305690,	0.393152190263324430,	0.393198163442462610,	0.393244135638605440,	0.393290106851638340,	0.393336077081445520,	0.393382046327912570,	0.393428014590924860,	
+0.393473981870366750,	0.393519948166123620,	0.393565913478080680,	0.393611877806123330,	0.393657841150135910,	0.393703803510003840,	0.393749764885612310,	0.393795725276846750,	
+0.393841684683591490,	0.393887643105731990,	0.393933600543153410,	0.393979556995741220,	0.394025512463379690,	0.394071466945954460,	0.394117420443350520,	0.394163372955453450,	
+0.394209324482147520,	0.394255275023318310,	0.394301224578851250,	0.394347173148630770,	0.394393120732542400,	0.394439067330471180,	0.394485012942302700,	0.394530957567921280,	
+0.394576901207212450,	0.394622843860061410,	0.394668785526353650,	0.394714726205973530,	0.394760665898806600,	0.394806604604737930,	0.394852542323653240,	0.394898479055436790,	
+0.394944414799974110,	0.394990349557150400,	0.395036283326851200,	0.395082216108960880,	0.395128147903365090,	0.395174078709948860,	0.395220008528597840,	0.395265937359196460,	
+0.395311865201630200,	0.395357792055784640,	0.395403717921544220,	0.395449642798794520,	0.395495566687420750,	0.395541489587308390,	0.395587411498341980,	0.395633332420406990,	
+0.395679252353388690,	0.395725171297172660,	0.395771089251643280,	0.395817006216686200,	0.395862922192186550,	0.395908837178030050,	0.395954751174101060,	0.396000664180285180,	
+0.396046576196467660,	0.396092487222534040,	0.396138397258368860,	0.396184306303857650,	0.396230214358886110,	0.396276121423338620,	0.396322027497100830,	0.396367932580057980,	
+0.396413836672095680,	0.396459739773098400,	0.396505641882951730,	0.396551543001541000,	0.396597443128751780,	0.396643342264468570,	0.396689240408577000,	0.396735137560962350,	
+0.396781033721510250,	0.396826928890105180,	0.396872823066632740,	0.396918716250978300,	0.396964608443027440,	0.397010499642664660,	0.397056389849775590,	0.397102279064246000,	
+0.397148167285960310,	0.397194054514804160,	0.397239940750662930,	0.397285825993422210,	0.397331710242966540,	0.397377593499181610,	0.397423475761952690,	0.397469357031165480,	
+0.397515237306704460,	0.397561116588455330,	0.397606994876303410,	0.397652872170134450,	0.397698748469832890,	0.397744623775284470,	0.397790498086374460,	0.397836371402988610,	
+0.397882243725011460,	0.397928115052328670,	0.397973985384825980,	0.398019854722387990,	0.398065723064900290,	0.398111590412248360,	0.398157456764317800,	0.398203322120993190,	
+0.398249186482160290,	0.398295049847704420,	0.398340912217511390,	0.398386773591465570,	0.398432633969452890,	0.398478493351358600,	0.398524351737068520,	0.398570209126467120,	
+0.398616065519440180,	0.398661920915873100,	0.398707775315651600,	0.398753628718660270,	0.398799481124784920,	0.398845332533910800,	0.398891182945923790,	0.398937032360708380,	
+0.398982880778150420,	0.399028728198135670,	0.399074574620548680,	0.399120420045275260,	0.399166264472200770,	0.399212107901211030,	0.399257950332190640,	0.399303791765025340,	
+0.399349632199600570,	0.399395471635802140,	0.399441310073514630,	0.399487147512623820,	0.399532983953015170,	0.399578819394574460,	0.399624653837186260,	0.399670487280736510,	
+0.399716319725110460,	0.399762151170194040,	0.399807981615871830,	0.399853811062029660,	0.399899639508553400,	0.399945466955327620,	0.399991293402238160,	0.400037118849170480,	
+0.400082943296010410,	0.400128766742642580,	0.400174589188952820,	0.400220410634826610,	0.400266231080149750,	0.400312050524806950,	0.400357868968683970,	0.400403686411666350,	
+0.400449502853639890,	0.400495318294489310,	0.400541132734100410,	0.400586946172358680,	0.400632758609149990,	0.400678570044359030,	0.400724380477871620,	0.400770189909573640,	
+0.400815998339349780,	0.400861805767085970,	0.400907612192667630,	0.400953417615980630,	0.400999222036909740,	0.401045025455340760,	0.401090827871159180,	0.401136629284250980,	
+0.401182429694500800,	0.401228229101794560,	0.401274027506017710,	0.401319824907056260,	0.401365621304794750,	0.401411416699119280,	0.401457211089915220,	0.401503004477068550,	
+0.401548796860463910,	0.401594588239987340,	0.401640378615524260,	0.401686167986960660,	0.401731956354181240,	0.401777743717071980,	0.401823530075518690,	0.401869315429406180,	
+0.401915099778620390,	0.401960883123046840,	0.402006665462571520,	0.402052446797079130,	0.402098227126455600,	0.402144006450586510,	0.402189784769357790,	0.402235562082654260,	
+0.402281338390361790,	0.402327113692365960,	0.402372887988552750,	0.402418661278806930,	0.402464433563014480,	0.402510204841060870,	0.402555975112832250,	0.402601744378213220,	
+0.402647512637089870,	0.402693279889348110,	0.402739046134872770,	0.402784811373549770,	0.402830575605264810,	0.402876338829903760,	0.402922101047351490,	0.402967862257493980,	
+0.403013622460216770,	0.403059381655405950,	0.403105139842946210,	0.403150897022723660,	0.403196653194623890,	0.403242408358532870,	0.403288162514335410,	0.403333915661917560,	
+0.403379667801164970,	0.403425418931963540,	0.403471169054198220,	0.403516918167754920,	0.403562666272519740,	0.403608413368377490,	0.403654159455214270,	0.403699904532915600,	
+0.403745648601367580,	0.403791391660455020,	0.403837133710063970,	0.403882874750080110,	0.403928614780389440,	0.403974353800876870,	0.404020091811428390,	0.404065828811929710,	
+0.404111564802266840,	0.404157299782324670,	0.404203033751989240,	0.404248766711146180,	0.404294498659681640,	0.404340229597480500,	0.404385959524428740,	0.404431688440412500,	
+0.404477416345316590,	0.404523143239027220,	0.404568869121429920,	0.404614593992410900,	0.404660317851854970,	0.404706040699648220,	0.404751762535676410,	0.404797483359825570,	
+0.404843203171980640,	0.404888921972027690,	0.404934639759852440,	0.404980356535340980,	0.405026072298378230,	0.405071787048850330,	0.405117500786642940,	0.405163213511642200,	
+0.405208925223733030,	0.405254635922801530,	0.405300345608733460,	0.405346054281414900,	0.405391761940730840,	0.405437468586567370,	0.405483174218810580,	0.405528878837345510,	
+0.405574582442058240,	0.405620285032834480,	0.405665986609560440,	0.405711687172121030,	0.405757386720402350,	0.405803085254290260,	0.405848782773670870,	0.405894479278429090,	
+0.405940174768451120,	0.405985869243622680,	0.406031562703830010,	0.406077255148958040,	0.406122946578892920,	0.406168636993520400,	0.406214326392726750,	0.406260014776396840,	
+0.406305702144416910,	0.406351388496673130,	0.406397073833050460,	0.406442758153435110,	0.406488441457712850,	0.406534123745769920,	0.406579805017491250,	0.406625485272763100,	
+0.406671164511471170,	0.406716842733501840,	0.406762519938739910,	0.406808196127071700,	0.406853871298383020,	0.406899545452560070,	0.406945218589487840,	0.406990890709052530,	
+0.407036561811140060,	0.407082231895636580,	0.407127900962427070,	0.407173569011397840,	0.407219236042435100,	0.407264902055423820,	0.407310567050250320,	0.407356231026800410,	
+0.407401893984960290,	0.407447555924615070,	0.407493216845650930,	0.407538876747953750,	0.407584535631409840,	0.407630193495904130,	0.407675850341322920,	0.407721506167552150,	
+0.407767160974477960,	0.407812814761985500,	0.407858467529960970,	0.407904119278290290,	0.407949770006859720,	0.407995419715554310,	0.408041068404260350,	0.408086716072863730,	
+0.408132362721250750,	0.408178008349306400,	0.408223652956917090,	0.408269296543968980,	0.408314939110347270,	0.408360580655938220,	0.408406221180627750,	0.408451860684302060,	
+0.408497499166846360,	0.408543136628146900,	0.408588773068089610,	0.408634408486560740,	0.408680042883445500,	0.408725676258630100,	0.408771308612000560,	0.408816939943443150,	
+0.408862570252842950,	0.408908199540086390,	0.408953827805059290,	0.408999455047648010,	0.409045081267737700,	0.409090706465214670,	0.409136330639965300,	0.409181953791874720,	
+0.409227575920829200,	0.409273197026714770,	0.409318817109417750,	0.409364436168823340,	0.409410054204817800,	0.409455671217287100,	0.409501287206117610,	0.409546902171194550,	
+0.409592516112404210,	0.409638129029632590,	0.409683740922766050,	0.409729351791689730,	0.409774961636290070,	0.409820570456452980,	0.409866178252064840,	0.409911785023010900,	
+0.409957390769177480,	0.410002995490450990,	0.410048599186716600,	0.410094201857860720,	0.410139803503769330,	0.410185404124328860,	0.410231003719424450,	0.410276602288942530,	
+0.410322199832769070,	0.410367796350790570,	0.410413391842892160,	0.410458986308960270,	0.410504579748880940,	0.410550172162540530,	0.410595763549824300,	0.410641353910618680,	
+0.410686943244809640,	0.410732531552283620,	0.410778118832925920,	0.410823705086622910,	0.410869290313261030,	0.410914874512725570,	0.410960457684902860,	0.411006039829679040,	
+0.411051620946940530,	0.411097201036572550,	0.411142780098461560,	0.411188358132493600,	0.411233935138555220,	0.411279511116531550,	0.411325086066309080,	0.411370659987773950,	
+0.411416232880812530,	0.411461804745310130,	0.411507375581153250,	0.411552945388227900,	0.411598514166420570,	0.411644081915616580,	0.411689648635702400,	0.411735214326564070,	
+0.411780778988088130,	0.411826342620159820,	0.411871905222665700,	0.411917466795492180,	0.411963027338524580,	0.412008586851649430,	0.412054145334752820,	0.412099702787721230,	
+0.412145259210439980,	0.412190814602795610,	0.412236368964674190,	0.412281922295962280,	0.412327474596545120,	0.412373025866309250,	0.412418576105140880,	0.412464125312926420,	
+0.412509673489551250,	0.412555220634901960,	0.412600766748864530,	0.412646311831325660,	0.412691855882170560,	0.412737398901285860,	0.412782940888558050,	0.412828481843872440,	
+0.412874021767115680,	0.412919560658173870,	0.412965098516933530,	0.413010635343280030,	0.413056171137099970,	0.413101705898279490,	0.413147239626705130,	0.413192772322262260,	
+0.413238303984837460,	0.413283834614316890,	0.413329364210587190,	0.413374892773533620,	0.413420420303042880,	0.413465946799001060,	0.413511472261294750,	0.413556996689809390,	
+0.413602520084431490,	0.413648042445047710,	0.413693563771543480,	0.413739084063805270,	0.413784603321719400,	0.413830121545172400,	0.413875638734049700,	0.413921154888237890,	
+0.413966670007623220,	0.414012184092092230,	0.414057697141530400,	0.414103209155824380,	0.414148720134860260,	0.414194230078524790,	0.414239738986703300,	0.414285246859282530,	
+0.414330753696148580,	0.414376259497188200,	0.414421764262286720,	0.414467267991330880,	0.414512770684206830,	0.414558272340801230,	0.414603772960999590,	0.414649272544688530,	
+0.414694771091754680,	0.414740268602083460,	0.414785765075561640,	0.414831260512075360,	0.414876754911511330,	0.414922248273755010,	0.414967740598693120,	0.415013231886211810,	
+0.415058722136197880,	0.415104211348536700,	0.415149699523114980,	0.415195186659819080,	0.415240672758535550,	0.415286157819149960,	0.415331641841548970,	0.415377124825618890,	
+0.415422606771246370,	0.415468087678317000,	0.415513567546717310,	0.415559046376334170,	0.415604524167053010,	0.415650000918760530,	0.415695476631343040,	0.415740951304687300,	
+0.415786424938678730,	0.415831897533204100,	0.415877369088149760,	0.415922839603402370,	0.415968309078847520,	0.416013777514371850,	0.416059244909861740,	0.416104711265203930,	
+0.416150176580283970,	0.416195640854988560,	0.416241104089204010,	0.416286566282817130,	0.416332027435713400,	0.416377487547779650,	0.416422946618902560,	0.416468404648967670,	
+0.416513861637861800,	0.416559317585471320,	0.416604772491682870,	0.416650226356382160,	0.416695679179455820,	0.416741130960790300,	0.416786581700272380,	0.416832031397787570,	
+0.416877480053222730,	0.416922927666464160,	0.416968374237398690,	0.417013819765911840,	0.417059264251890440,	0.417104707695220960,	0.417150150095790040,	0.417195591453483340,	
+0.417241031768187720,	0.417286471039789890,	0.417331909268175430,	0.417377346453231270,	0.417422782594843720,	0.417468217692899600,	0.417513651747284550,	0.417559084757885390,	
+0.417604516724588480,	0.417649947647280690,	0.417695377525847620,	0.417740806360176130,	0.417786234150152650,	0.417831660895663930,	0.417877086596595670,	0.417922511252834690,	
+0.417967934864267480,	0.418013357430780770,	0.418058778952260290,	0.418104199428592890,	0.418149618859664950,	0.418195037245363390,	0.418240454585573850,	0.418285870880183150,	
+0.418331286129078160,	0.418376700332144580,	0.418422113489269280,	0.418467525600338620,	0.418512936665239590,	0.418558346683857830,	0.418603755656080160,	0.418649163581793160,	
+0.418694570460883600,	0.418739976293237230,	0.418785381078740910,	0.418830784817281140,	0.418876187508744830,	0.418921589153017640,	0.418966989749986470,	0.419012389299537880,	
+0.419057787801558670,	0.419103185255934540,	0.419148581662552530,	0.419193977021299400,	0.419239371332060960,	0.419284764594724140,	0.419330156809175350,	0.419375547975301580,	
+0.419420938092988530,	0.419466327162123120,	0.419511715182591950,	0.419557102154281880,	0.419602488077078620,	0.419647872950869140,	0.419693256775539980,	0.419738639550978120,	
+0.419784021277069210,	0.419829401953700280,	0.419874781580757810,	0.419920160158128830,	0.419965537685699050,	0.420010914163355400,	0.420056289590984840,	0.420101663968473200,	
+0.420147037295707400,	0.420192409572573980,	0.420237780798959960,	0.420283150974751110,	0.420328520099834350,	0.420373888174096270,	0.420419255197423900,	0.420464621169702960,	
+0.420509986090820520,	0.420555349960663070,	0.420600712779117650,	0.420646074546070060,	0.420691435261407290,	0.420736794925015920,	0.420782153536783000,	0.420827511096594220,	
+0.420872867604336730,	0.420918223059897070,	0.420963577463162210,	0.421008930814018020,	0.421054283112351550,	0.421099634358049700,	0.421144984550998410,	0.421190333691084660,	
+0.421235681778195040,	0.421281028812216630,	0.421326374793035250,	0.421371719720537940,	0.421417063594611340,	0.421462406415142490,	0.421507748182017190,	0.421553088895122550,	
+0.421598428554345150,	0.421643767159572140,	0.421689104710689270,	0.421734441207583630,	0.421779776650141880,	0.421825111038251150,	0.421870444371797160,	0.421915776650667150,	
+0.421961107874748000,	0.422006438043925740,	0.422051767158087400,	0.422097095217119630,	0.422142422220909470,	0.422187748169342900,	0.422233073062306950,	0.422278396899688320,	
+0.422323719681374110,	0.422369041407250180,	0.422414362077203680,	0.422459681691121250,	0.422505000248890040,	0.422550317750395870,	0.422595634195525980,	0.422640949584166980,	
+0.422686263916205950,	0.422731577191528930,	0.422776889410022950,	0.422822200571575100,	0.422867510676071420,	0.422912819723398950,	0.422958127713444380,	0.423003434646094910,	
+0.423048740521236480,	0.423094045338756220,	0.423139349098540780,	0.423184651800477430,	0.423229953444452020,	0.423275254030351710,	0.423320553558063310,	0.423365852027473900,	
+0.423411149438469410,	0.423456445790937110,	0.423501741084763680,	0.423547035319836280,	0.423592328496040950,	0.423637620613264760,	0.423682911671394940,	0.423728201670317380,	
+0.423773490609919370,	0.423818778490087640,	0.423864065310709300,	0.423909351071670440,	0.423954635772858250,	0.423999919414159380,	0.424045201995461200,	0.424090483516649570,	
+0.424135763977611710,	0.424181043378234480,	0.424226321718405020,	0.424271598998009370,	0.424316875216934670,	0.424362150375067860,	0.424407424472296010,	0.424452697508505230,	
+0.424497969483582700,	0.424543240397415260,	0.424588510249890140,	0.424633779040893280,	0.424679046770312040,	0.424724313438033520,	0.424769579043943860,	0.424814843587930260,	
+0.424860107069879530,	0.424905369489678940,	0.424950630847214520,	0.424995891142373520,	0.425041150375042810,	0.425086408545109600,	0.425131665652459970,	0.425176921696981180,	
+0.425222176678560100,	0.425267430597083940,	0.425312683452438830,	0.425357935244512040,	0.425403185973190380,	0.425448435638361160,	0.425493684239910460,	0.425538931777725560,	
+0.425584178251693700,	0.425629423661701030,	0.425674668007634760,	0.425719911289381860,	0.425765153506829530,	0.425810394659863980,	0.425855634748372400,	0.425900873772241730,	
+0.425946111731359320,	0.425991348625611170,	0.426036584454884680,	0.426081819219066740,	0.426127052918044650,	0.426172285551704500,	0.426217517119933660,	0.426262747622619060,	
+0.426307977059647960,	0.426353205430906490,	0.426398432736282030,	0.426443658975661890,	0.426488884148932210,	0.426534108255980320,	0.426579331296693120,	0.426624553270958050,	
+0.426669774178661140,	0.426714994019689820,	0.426760212793931000,	0.426805430501272120,	0.426850647141599200,	0.426895862714799680,	0.426941077220760470,	0.426986290659368990,	
+0.427031503030511410,	0.427076714334075010,	0.427121924569946910,	0.427167133738014350,	0.427212341838163530,	0.427257548870281890,	0.427302754834256390,	0.427347959729974360,	
+0.427393163557322100,	0.427438366316186870,	0.427483568006456150,	0.427528768628016090,	0.427573968180754100,	0.427619166664557240,	0.427664364079312850,	0.427709560424907100,	
+0.427754755701227510,	0.427799949908161000,	0.427845143045595010,	0.427890335113415790,	0.427935526111510700,	0.427980716039766840,	0.428025904898071520,	0.428071092686311110,	
+0.428116279404372910,	0.428161465052144030,	0.428206649629511940,	0.428251833136362780,	0.428297015572584040,	0.428342196938063140,	0.428387377232686380,	0.428432556456341150,	
+0.428477734608914530,	0.428522911690293990,	0.428568087700365810,	0.428613262639017330,	0.428658436506135780,	0.428703609301608450,	0.428748781025321770,	0.428793951677163110,	
+0.428839121257019560,	0.428884289764778600,	0.428929457200326550,	0.428974623563550820,	0.429019788854338560,	0.429064953072577250,	0.429110116218153090,	0.429155278290953680,	
+0.429200439290866490,	0.429245599217777770,	0.429290758071575070,	0.429335915852145480,	0.429381072559376460,	0.429426228193154400,	0.429471382753366770,	0.429516536239900660,	
+0.429561688652643660,	0.429606839991481970,	0.429651990256303180,	0.429697139446994500,	0.429742287563443290,	0.429787434605535980,	0.429832580573160090,	0.429877725466202790,	
+0.429922869284551530,	0.429968012028092710,	0.430013153696713830,	0.430058294290302510,	0.430103433808744990,	0.430148572251928930,	0.430193709619741460,	0.430238845912070120,	
+0.430283981128801230,	0.430329115269822370,	0.430374248335020800,	0.430419380324283950,	0.430464511237498240,	0.430509641074551250,	0.430554769835330200,	0.430599897519722610,	
+0.430645024127614850,	0.430690149658894570,	0.430735274113448920,	0.430780397491165420,	0.430825519791930620,	0.430870641015631940,	0.430915761162156690,	0.430960880231392450,	
+0.431005998223225610,	0.431051115137543740,	0.431096230974234500,	0.431141345733184300,	0.431186459414280690,	0.431231572017410970,	0.431276683542462740,	0.431321793989322360,	
+0.431366903357877470,	0.431412011648015400,	0.431457118859623620,	0.431502224992588720,	0.431547330046798240,	0.431592434022139370,	0.431637536918499880,	0.431682638735766120,	
+0.431727739473825810,	0.431772839132566090,	0.431817937711874710,	0.431863035211638050,	0.431908131631743850,	0.431953226972079720,	0.431998321232532070,	0.432043414412988660,	
+0.432088506513336690,	0.432133597533463860,	0.432178687473256660,	0.432223776332602730,	0.432268864111389320,	0.432313950809504190,	0.432359036426833760,	0.432404120963265800,	
+0.432449204418687510,	0.432494286792986570,	0.432539368086049540,	0.432584448297764050,	0.432629527428017470,	0.432674605476697500,	0.432719682443690580,	0.432764758328884500,	
+0.432809833132166870,	0.432854906853424260,	0.432899979492544440,	0.432945051049414610,	0.432990121523922580,	0.433035190915954830,	0.433080259225399110,	0.433125326452142740,	
+0.433170392596073480,	0.433215457657077810,	0.433260521635043530,	0.433305584529857900,	0.433350646341408740,	0.433395707069582580,	0.433440766714267120,	0.433485825275349730,	
+0.433530882752718230,	0.433575939146259080,	0.433620994455860110,	0.433666048681408620,	0.433711101822792430,	0.433756153879898080,	0.433801204852613360,	0.433846254740826000,	
+0.433891303544422620,	0.433936351263291000,	0.433981397897318490,	0.434026443446392850,	0.434071487910400730,	0.434116531289229890,	0.434161573582767750,	0.434206614790902060,	
+0.434251654913519410,	0.434296693950507630,	0.434341731901754120,	0.434386768767146660,	0.434431804546571930,	0.434476839239917640,	0.434521872847071280,	0.434566905367920640,	
+0.434611936802352330,	0.434656967150254150,	0.434701996411513970,	0.434747024586018440,	0.434792051673655310,	0.434837077674312010,	0.434882102587876460,	0.434927126414235250,	
+0.434972149153276260,	0.435017170804886890,	0.435062191368954960,	0.435107210845367130,	0.435152229234011310,	0.435197246534774930,	0.435242262747545790,	0.435287277872210670,	
+0.435332291908657300,	0.435377304856773170,	0.435422316716446210,	0.435467327487563060,	0.435512337170011590,	0.435557345763679720,	0.435602353268454030,	0.435647359684222470,	
+0.435692365010872500,	0.435737369248292040,	0.435782372396367750,	0.435827374454987540,	0.435872375424038890,	0.435917375303409680,	0.435962374092986660,	0.436007371792657690,	
+0.436052368402310260,	0.436097363921832350,	0.436142358351110650,	0.436187351690032980,	0.436232343938486980,	0.436277335096360520,	0.436322325163540300,	0.436367314139914310,	
+0.436412302025370400,	0.436457288819795340,	0.436502274523077110,	0.436547259135103120,	0.436592242655761410,	0.436637225084938680,	0.436682206422522920,	0.436727186668401660,	
+0.436772165822462750,	0.436817143884593080,	0.436862120854680570,	0.436907096732612740,	0.436952071518277580,	0.436997045211561800,	0.437042017812353410,	0.437086989320540020,	
+0.437131959736009550,	0.437176929058648740,	0.437221897288345650,	0.437266864424987800,	0.437311830468463170,	0.437356795418658570,	0.437401759275462040,	0.437446722038761450,	
+0.437491683708443660,	0.437536644284396700,	0.437581603766508060,	0.437626562154665890,	0.437671519448756870,	0.437716475648669060,	0.437761430754290030,	0.437806384765507870,	
+0.437851337682209350,	0.437896289504282440,	0.437941240231614850,	0.437986189864094540,	0.438031138401608340,	0.438076085844044340,	0.438121032191290120,	0.438165977443233660,	
+0.438210921599761940,	0.438255864660762830,	0.438300806626124530,	0.438345747495733800,	0.438390687269478660,	0.438435625947246830,	0.438480563528926340,	0.438525500014404050,	
+0.438570435403567990,	0.438615369696305820,	0.438660302892505680,	0.438705234992054330,	0.438750165994839900,	0.438795095900750110,	0.438840024709672930,	0.438884952421495280,	
+0.438929879036105310,	0.438974804553390610,	0.439019728973239260,	0.439064652295538260,	0.439109574520175570,	0.439154495647039340,	0.439199415676016500,	0.439244334606995130,	
+0.439289252439862890,	0.439334169174507960,	0.439379084810817170,	0.439423999348678710,	0.439468912787980230,	0.439513825128609870,	0.439558736370454510,	0.439603646513402340,	
+0.439648555557341060,	0.439693463502158820,	0.439738370347742490,	0.439783276093980210,	0.439828180740759740,	0.439873084287969280,	0.439917986735495650,	0.439962888083227090,	
+0.440007788331051310,	0.440052687478856400,	0.440097585526529440,	0.440142482473958490,	0.440187378321031720,	0.440232273067636130,	0.440277166713659850,	0.440322059258990650,	
+0.440366950703516720,	0.440411841047125000,	0.440456730289703670,	0.440501618431140500,	0.440546505471323730,	0.440591391410140250,	0.440636276247478310,	0.440681159983225660,	
+0.440726042617270550,	0.440770924149499920,	0.440815804579801960,	0.440860683908064540,	0.440905562134175750,	0.440950439258022690,	0.440995315279493540,	0.441040190198476460,	
+0.441085064014858530,	0.441129936728527900,	0.441174808339372500,	0.441219678847280420,	0.441264548252138790,	0.441309416553835760,	0.441354283752259210,	0.441399149847297330,	
+0.441444014838837160,	0.441488878726767010,	0.441533741510974630,	0.441578603191348280,	0.441623463767775060,	0.441668323240143160,	0.441713181608340440,	0.441758038872255180,	
+0.441802895031774390,	0.441847750086786450,	0.441892604037179450,	0.441937456882840580,	0.441982308623658060,	0.442027159259519740,	0.442072008790313940,	0.442116857215927750,	
+0.442161704536249370,	0.442206550751166770,	0.442251395860568160,	0.442296239864340690,	0.442341082762372610,	0.442385924554551830,	0.442430765240766630,	0.442475604820904090,	
+0.442520443294852570,	0.442565280662499950,	0.442610116923734530,	0.442654952078443350,	0.442699786126514890,	0.442744619067837300,	0.442789450902297770,	0.442834281629784610,	
+0.442879111250185750,	0.442923939763389560,	0.442968767169283070,	0.443013593467754650,	0.443058418658692280,	0.443103242741984260,	0.443148065717517750,	0.443192887585181050,	
+0.443237708344862150,	0.443282527996449350,	0.443327346539829860,	0.443372163974891990,	0.443416980301523660,	0.443461795519613340,	0.443506609629048140,	0.443551422629716360,	
+0.443596234521506090,	0.443641045304305590,	0.443685854978002110,	0.443730663542483970,	0.443775470997639590,	0.443820277343356110,	0.443865082579521950,	0.443909886706025050,	
+0.443954689722753870,	0.443999491629595570,	0.444044292426438500,	0.444089092113170770,	0.444133890689680620,	0.444178688155855430,	0.444223484511583440,	0.444268279756752820,	
+0.444313073891251850,	0.444357866914967810,	0.444402658827789070,	0.444447449629603750,	0.444492239320300130,	0.444537027899765570,	0.444581815367888430,	0.444626601724557150,	
+0.444671386969658970,	0.444716171103082260,	0.444760954124715220,	0.444805736034446120,	0.444850516832162310,	0.444895296517752230,	0.444940075091103890,	0.444984852552105740,	
+0.445029628900645070,	0.445074404136610370,	0.445119178259889610,	0.445163951270371280,	0.445208723167942740,	0.445253493952492360,	0.445298263623908230,	0.445343032182078880,	
+0.445387799626891510,	0.445432565958234660,	0.445477331175996800,	0.445522095280065260,	0.445566858270328380,	0.445611620146674440,	0.445656380908991790,	0.445701140557167810,	
+0.445745899091091020,	0.445790656510649420,	0.445835412815731640,	0.445880168006224880,	0.445924922082017670,	0.445969675042998230,	0.446014426889054960,	0.446059177620075240,	
+0.446103927235947550,	0.446148675736560090,	0.446193423121801320,	0.446238169391558580,	0.446282914545720390,	0.446327658584174950,	0.446372401506810790,	0.446417143313515170,	
+0.446461884004176750,	0.446506623578683980,	0.446551362036924250,	0.446596099378786140,	0.446640835604157740,	0.446685570712927690,	0.446730304704983320,	0.446775037580213140,	
+0.446819769338505420,	0.446864499979748640,	0.446909229503830220,	0.446953957910638740,	0.446998685200062360,	0.447043411371989610,	0.447088136426308010,	0.447132860362906060,	
+0.447177583181671940,	0.447222304882494260,	0.447267025465260430,	0.447311744929859030,	0.447356463276178620,	0.447401180504106710,	0.447445896613531850,	0.447490611604342230,	
+0.447535325476426490,	0.447580038229672020,	0.447624749863967500,	0.447669460379201080,	0.447714169775261410,	0.447758878052035900,	0.447803585209413210,	0.447848291247281540,	
+0.447892996165529580,	0.447937699964044640,	0.447982402642715550,	0.448027104201430440,	0.448071804640077900,	0.448116503958545520,	0.448161202156721840,	0.448205899234495610,	
+0.448250595191754140,	0.448295290028386250,	0.448339983744280140,	0.448384676339324440,	0.448429367813406700,	0.448474058166415500,	0.448518747398239160,	0.448563435508766320,	
+0.448608122497884510,	0.448652808365482440,	0.448697493111448300,	0.448742176735670850,	0.448786859238037520,	0.448831540618437110,	0.448876220876757770,	0.448920900012888310,	
+0.448965578026716220,	0.449010254918130180,	0.449054930687018520,	0.449099605333269870,	0.449144278856771880,	0.449188951257413150,	0.449233622535082420,	0.449278292689667290,	
+0.449322961721056400,	0.449367629629138120,	0.449412296413801150,	0.449456962074933020,	0.449501626612422540,	0.449546290026157980,	0.449590952316028080,	0.449635613481920380,	
+0.449680273523723640,	0.449724932441326270,	0.449769590234616930,	0.449814246903483210,	0.449858902447813900,	0.449903556867497330,	0.449948210162422260,	0.449992862332476260,	
+0.450037513377548100,	0.450082163297526590,	0.450126812092299270,	0.450171459761754880,	0.450216106305781850,	0.450260751724268990,	0.450305396017103790,	0.450350039184175150,	
+0.450394681225371410,	0.450439322140581360,	0.450483961929692590,	0.450528600592593920,	0.450573238129173770,	0.450617874539320900,	0.450662509822922940,	0.450707143979868720,	
+0.450751777010046650,	0.450796408913345490,	0.450841039689652940,	0.450885669338857820,	0.450930297860848930,	0.450974925255513860,	0.451019551522741480,	0.451064176662420210,	
+0.451108800674438930,	0.451153423558685210,	0.451198045315047980,	0.451242665943415610,	0.451287285443676970,	0.451331903815719690,	0.451376521059432710,	0.451421137174704390,	
+0.451465752161423650,	0.451510366019478140,	0.451554978748756660,	0.451599590349147760,	0.451644200820540300,	0.451688810162821920,	0.451733418375881550,	0.451778025459607990,	
+0.451822631413889010,	0.451867236238613410,	0.451911839933669730,	0.451956442498946900,	0.452001043934332490,	0.452045644239715490,	0.452090243414984440,	0.452134841460028080,	
+0.452179438374734290,	0.452224034158991870,	0.452268628812689420,	0.452313222335715750,	0.452357814727958610,	0.452402405989306980,	0.452446996119649280,	0.452491585118874550,	
+0.452536172986870430,	0.452580759723525850,	0.452625345328729390,	0.452669929802369970,	0.452714513144335360,	0.452759095354514420,	0.452803676432796180,	0.452848256379068340,	
+0.452892835193219820,	0.452937412875139220,	0.452981989424715510,	0.453026564841836450,	0.453071139126390960,	0.453115712278267580,	0.453160284297355390,	0.453204855183542030,	
+0.453249424936716550,	0.453293993556767530,	0.453338561043583890,	0.453383127397053500,	0.453427692617065230,	0.453472256703507770,	0.453516819656270050,	0.453561381475239890,	
+0.453605942160306250,	0.453650501711358180,	0.453695060128283480,	0.453739617410971070,	0.453784173559309670,	0.453828728573188230,	0.453873282452494530,	0.453917835197117650,	
+0.453962386806946230,	0.454006937281869190,	0.454051486621774410,	0.454096034826550920,	0.454140581896087300,	0.454185127830272710,	0.454229672628994830,	0.454274216292142820,	
+0.454318758819605210,	0.454363300211271140,	0.454407840467028420,	0.454452379586766100,	0.454496917570373250,	0.454541454417737630,	0.454585990128748450,	0.454630524703294290,	
+0.454675058141264190,	0.454719590442546060,	0.454764121607028950,	0.454808651634601550,	0.454853180525152890,	0.454897708278570900,	0.454942234894744610,	0.454986760373562780,	
+0.455031284714914440,	0.455075807918687460,	0.455120329984770980,	0.455164850913053700,	0.455209370703424650,	0.455253889355771770,	0.455298406869984180,	0.455342923245950600,	
+0.455387438483560110,	0.455431952582700580,	0.455476465543261210,	0.455520977365131030,	0.455565488048198080,	0.455609997592351320,	0.455654505997479640,	0.455699013263472060,	
+0.455743519390216570,	0.455788024377602240,	0.455832528225517900,	0.455877030933852620,	0.455921532502494340,	0.455966032931332250,	0.456010532220255120,	0.456055030369151960,	
+0.456099527377910930,	0.456144023246421000,	0.456188517974571050,	0.456233011562250210,	0.456277504009346410,	0.456321995315748910,	0.456366485481346780,	0.456410974506028020,	
+0.456455462389681820,	0.456499949132196990,	0.456544434733462730,	0.456588919193366920,	0.456633402511798850,	0.456677884688647230,	0.456722365723801320,	0.456766845617149090,	
+0.456811324368579800,	0.456855801977982150,	0.456900278445245390,	0.456944753770257510,	0.456989227952907810,	0.457033700993084990,	0.457078172890678370,	0.457122643645575870,	
+0.457167113257666790,	0.457211581726840290,	0.457256049052984450,	0.457300515235988530,	0.457344980275741280,	0.457389444172132010,	0.457433906925048710,	0.457478368534380620,	
+0.457522829000016620,	0.457567288321845960,	0.457611746499756670,	0.457656203533638060,	0.457700659423378900,	0.457745114168868480,	0.457789567769994910,	0.457834020226647380,	
+0.457878471538714800,	0.457922921706086510,	0.457967370728650460,	0.458011818606295970,	0.458056265338912360,	0.458100710926387660,	0.458145155368611220,	0.458189598665471880,	
+0.458234040816858920,	0.458278481822660510,	0.458322921682765840,	0.458367360397063940,	0.458411797965443960,	0.458456234387794090,	0.458500669664003660,	0.458545103793961570,	
+0.458589536777557090,	0.458633968614678420,	0.458678399305214760,	0.458722828849055130,	0.458767257246088860,	0.458811684496204020,	0.458856110599289990,	0.458900535555235630,	
+0.458944959363930370,	0.458989382025262290,	0.459033803539120820,	0.459078223905395160,	0.459122643123973610,	0.459167061194745370,	0.459211478117599550,	0.459255893892425380,	
+0.459300308519111130,	0.459344721997546060,	0.459389134327619240,	0.459433545509219940,	0.459477955542236360,	0.459522364426557920,	0.459566772162073590,	0.459611178748672690,	
+0.459655584186243470,	0.459699988474675300,	0.459744391613857160,	0.459788793603678410,	0.459833194444027260,	0.459877594134793180,	0.459921992675865480,	0.459966390067132410,	
+0.460010786308483350,	0.460055181399807330,	0.460099575340993770,	0.460143968131930870,	0.460188359772508050,	0.460232750262614340,	0.460277139602139120,	0.460321527790970690,	
+0.460365914828998410,	0.460410300716111330,	0.460454685452198920,	0.460499069037149430,	0.460543451470852240,	0.460587832753196420,	0.460632212884071410,	0.460676591863365460,	
+0.460720969690968040,	0.460765346366768640,	0.460809721890655390,	0.460854096262517890,	0.460898469482245170,	0.460942841549726650,	0.460987212464850580,	0.461031582227506560,	
+0.461075950837583510,	0.461120318294971020,	0.461164684599557340,	0.461209049751231950,	0.461253413749883930,	0.461297776595402780,	0.461342138287676780,	0.461386498826595440,	
+0.461430858212047880,	0.461475216443923530,	0.461519573522110760,	0.461563929446499040,	0.461608284216977530,	0.461652637833435690,	0.461696990295761830,	0.461741341603845560,	
+0.461785691757576280,	0.461830040756842360,	0.461874388601533400,	0.461918735291538430,	0.461963080826747030,	0.462007425207047520,	0.462051768432329420,	0.462096110502481950,	
+0.462140451417394570,	0.462184791176955710,	0.462229129781054790,	0.462273467229581130,	0.462317803522424130,	0.462362138659472290,	0.462406472640615070,	0.462450805465741690,	
+0.462495137134741660,	0.462539467647503420,	0.462583797003916500,	0.462628125203870480,	0.462672452247253730,	0.462716778133955840,	0.462761102863866070,	0.462805426436873890,	
+0.462849748852867780,	0.462894070111737280,	0.462938390213371580,	0.462982709157660320,	0.463027026944491940,	0.463071343573755900,	0.463115659045341580,	0.463159973359138500,	
+0.463204286515035040,	0.463248598512920880,	0.463292909352685240,	0.463337219034217760,	0.463381527557406800,	0.463425834922142010,	0.463470141128313030,	0.463514446175808340,	
+0.463558750064517470,	0.463603052794329780,	0.463647354365134820,	0.463691654776821120,	0.463735954029278250,	0.463780252122395490,	0.463824549056062520,	0.463868844830167770,	
+0.463913139444600890,	0.463957432899251180,	0.464001725194008290,	0.464046016328760690,	0.464090306303398040,	0.464134595117809630,	0.464178882771885130,	0.464223169265512990,	
+0.464267454598582980,	0.464311738770984690,	0.464356021782606710,	0.464400303633338620,	0.464444584323069790,	0.464488863851689910,	0.464533142219087480,	0.464577419425152180,	
+0.464621695469773330,	0.464665970352840630,	0.464710244074242610,	0.464754516633869020,	0.464798788031609070,	0.464843058267352620,	0.464887327340988090,	0.464931595252405240,	
+0.464975862001493380,	0.465020127588142260,	0.465064392012240480,	0.465108655273677670,	0.465152917372343270,	0.465197178308126960,	0.465241438080917280,	0.465285696690603990,	
+0.465329954137076900,	0.465374210420224530,	0.465418465539936600,	0.465462719496102520,	0.465506972288612040,	0.465551223917353760,	0.465595474382217380,	0.465639723683092310,	
+0.465683971819868370,	0.465728218792434090,	0.465772464600679230,	0.465816709244493250,	0.465860952723765880,	0.465905195038385730,	0.465949436188242580,	0.465993676173225850,	
+0.466037914993225330,	0.466082152648129630,	0.466126389137828560,	0.466170624462211860,	0.466214858621168240,	0.466259091614587510,	0.466303323442358970,	0.466347554104372560,	
+0.466391783600516860,	0.466436011930681740,	0.466480239094756550,	0.466524465092631180,	0.466568689924194260,	0.466612913589335600,	0.466657136087944620,	0.466701357419911260,	
+0.466745577585124080,	0.466789796583472970,	0.466834014414847340,	0.466878231079137060,	0.466922446576230830,	0.466966660906018520,	0.467010874068389930,	0.467055086063233700,	
+0.467099296890439830,	0.467143506549897670,	0.467187715041497200,	0.467231922365127010,	0.467276128520677010,	0.467320333508036700,	0.467364537327095930,	0.467408739977743400,	
+0.467452941459869100,	0.467497141773362380,	0.467541340918113220,	0.467585538894010330,	0.467629735700943570,	0.467673931338802470,	0.467718125807476960,	0.467762319106855730,	
+0.467806511236828700,	0.467850702197285420,	0.467894891988115740,	0.467939080609208410,	0.467983268060453430,	0.468027454341740650,	0.468071639452958880,	0.468115823393997990,	
+0.468160006164747510,	0.468204187765097420,	0.468248368194936480,	0.468292547454154660,	0.468336725542641390,	0.468380902460286740,	0.468425078206979480,	0.468469252782609480,	
+0.468513426187066370,	0.468557598420240030,	0.468601769482019370,	0.468645939372294260,	0.468690108090954290,	0.468734275637889440,	0.468778442012988570,	0.468822607216141550,	
+0.468866771247238360,	0.468910934106167910,	0.468955095792820130,	0.468999256307084560,	0.469043415648851270,	0.469087573818009030,	0.469131730814447920,	0.469175886638057430,	
+0.469220041288727630,	0.469264194766347340,	0.469308347070806540,	0.469352498201994870,	0.469396648159802370,	0.469440796944117830,	0.469484944554831360,	0.469529090991832490,	
+0.469573236255011240,	0.469617380344256540,	0.469661523259458420,	0.469705665000506870,	0.469749805567290730,	0.469793944959700120,	0.469838083177624650,	0.469882220220954330,	
+0.469926356089578110,	0.469970490783385930,	0.470014624302267590,	0.470058756646113070,	0.470102887814811240,	0.470147017808252190,	0.470191146626325660,	0.470235274268921590,	
+0.470279400735928940,	0.470323526027237810,	0.470367650142737900,	0.470411773082319180,	0.470455894845870690,	0.470500015433282460,	0.470544134844444570,	0.470588253079245960,	
+0.470632370137576690,	0.470676486019326550,	0.470720600724385540,	0.470764714252642660,	0.470808826603987980,	0.470852937778311220,	0.470897047775502560,	0.470941156595450830,	
+0.470985264238046260,	0.471029370703178460,	0.471073475990737680,	0.471117580100612830,	0.471161683032694010,	0.471205784786870970,	0.471249885363033860,	0.471293984761071650,	
+0.471338082980874480,	0.471382180022332120,	0.471426275885334700,	0.471470370569771200,	0.471514464075531770,	0.471558556402506550,	0.471602647550584560,	0.471646737519655910,	
+0.471690826309610460,	0.471734913920338340,	0.471779000351728540,	0.471823085603671260,	0.471867169676056240,	0.471911252568773700,	0.471955334281712600,	0.471999414814763210,	
+0.472043494167815270,	0.472087572340758990,	0.472131649333483390,	0.472175725145878630,	0.472219799777834570,	0.472263873229241460,	0.472307945499988220,	0.472352016589965120,	
+0.472396086499062400,	0.472440155227169030,	0.472484222774175290,	0.472528289139971030,	0.472572354324446390,	0.472616418327490460,	0.472660481148993510,	0.472704542788845380,	
+0.472748603246936290,	0.472792662523155270,	0.472836720617392570,	0.472880777529538110,	0.472924833259482090,	0.472968887807113600,	0.473012941172322900,	0.473056993354999840,	
+0.473101044355034640,	0.473145094172316480,	0.473189142806735570,	0.473233190258182220,	0.473277236526545520,	0.473321281611715660,	0.473365325513582680,	0.473409368232036720,	
+0.473453409766966930,	0.473497450118263660,	0.473541489285816740,	0.473585527269516530,	0.473629564069252050,	0.473673599684913740,	0.473717634116391340,	0.473761667363575280,	
+0.473805699426354700,	0.473849730304619850,	0.473893759998260670,	0.473937788507167450,	0.473981815831229390,	0.474025841970336810,	0.474069866924379580,	0.474113890693248110,	
+0.474157913276831540,	0.474201934675020140,	0.474245954887704320,	0.474289973914773230,	0.474333991756117180,	0.474378008411626200,	0.474422023881190540,	0.474466038164699460,	
+0.474510051262043260,	0.474554063173111940,	0.474598073897795850,	0.474642083435984190,	0.474686091787567320,	0.474730098952435230,	0.474774104930478280,	0.474818109721585670,	
+0.474862113325647820,	0.474906115742554650,	0.474950116972196580,	0.474994117014462810,	0.475038115869243830,	0.475082113536429870,	0.475126110015910260,	0.475170105307575360,	
+0.475214099411315210,	0.475258092327020210,	0.475302084054579580,	0.475346074593883780,	0.475390063944822750,	0.475434052107286950,	0.475478039081165650,	0.475522024866349200,	
+0.475566009462727760,	0.475609992870191680,	0.475653975088630170,	0.475697956117933750,	0.475741935957992470,	0.475785914608696680,	0.475829892069935760,	0.475873868341600110,	
+0.475917843423580180,	0.475961817315765260,	0.476005790018045770,	0.476049761530311810,	0.476093731852453850,	0.476137700984361150,	0.476181668925924170,	0.476225635677033080,	
+0.476269601237578280,	0.476313565607449090,	0.476357528786535980,	0.476401490774728990,	0.476445451571918750,	0.476489411177994430,	0.476533369592846650,	0.476577326816365390,	
+0.476621282848441190,	0.476665237688963410,	0.476709191337822580,	0.476753143794909070,	0.476797095060112420,	0.476841045133322980,	0.476884994014430910,	0.476928941703326780,	
+0.476972888199899860,	0.477016833504040780,	0.477060777615639590,	0.477104720534586800,	0.477148662260771850,	0.477192602794085260,	0.477236542134417190,	0.477280480281658090,	
+0.477324417235697460,	0.477368352996425770,	0.477412287563733160,	0.477456220937510280,	0.477500153117646430,	0.477544084104032150,	0.477588013896557750,	0.477631942495113650,	
+0.477675869899589320,	0.477719796109875310,	0.477763721125862180,	0.477807644947439380,	0.477851567574497430,	0.477895489006926630,	0.477939409244617470,	0.477983328287459370,	
+0.478027246135342980,	0.478071162788158480,	0.478115078245796410,	0.478158992508146310,	0.478202905575098700,	0.478246817446543850,	0.478290728122372330,	0.478334637602473630,	
+0.478378545886738280,	0.478422452975056590,	0.478466358867319200,	0.478510263563415470,	0.478554167063236110,	0.478598069366671710,	0.478641970473611730,	0.478685870383946830,	
+0.478729769097567260,	0.478773666614363710,	0.478817562934225560,	0.478861458057043500,	0.478905351982707780,	0.478949244711109060,	0.478993136242136910,	0.479037026575681870,	
+0.479080915711634250,	0.479124803649884750,	0.479168690390322840,	0.479212575932839220,	0.479256460277324160,	0.479300343423668340,	0.479344225371761250,	0.479388106121493630,	
+0.479431985672756130,	0.479475864025438240,	0.479519741179430690,	0.479563617134623810,	0.479607491890908290,	0.479651365448173660,	0.479695237806310570,	0.479739108965209440,	
+0.479782978924760910,	0.479826847684854510,	0.479870715245381000,	0.479914581606230740,	0.479958446767294380,	0.480002310728461560,	0.480046173489622920,	0.480090035050668830,	
+0.480133895411490100,	0.480177754571976200,	0.480221612532017890,	0.480265469291505600,	0.480309324850330010,	0.480353179208380720,	0.480397032365548480,	0.480440884321724050,	
+0.480484735076797010,	0.480528584630658120,	0.480572432983197790,	0.480616280134306790,	0.480660126083874650,	0.480703970831792230,	0.480747814377949890,	0.480791656722238390,	
+0.480835497864547380,	0.480879337804767600,	0.480923176542789490,	0.480967014078503790,	0.481010850411800190,	0.481054685542569470,	0.481098519470702040,	0.481142352196088700,	
+0.481186183718619100,	0.481230014038184000,	0.481273843154674310,	0.481317671067979570,	0.481361497777990700,	0.481405323284598060,	0.481449147587692470,	0.481492970687163680,	
+0.481536792582902440,	0.481580613274799230,	0.481624432762744860,	0.481668251046629030,	0.481712068126342540,	0.481755884001775940,	0.481799698672819960,	0.481843512139364380,	
+0.481887324401300000,	0.481931135458517290,	0.481974945310907180,	0.482018753958359300,	0.482062561400764530,	0.482106367638013730,	0.482150172669996660,	0.482193976496604120,	
+0.482237779117726690,	0.482281580533255150,	0.482325380743079290,	0.482369179747089980,	0.482412977545177760,	0.482456774137233420,	0.482500569523146790,	0.482544363702808730,	
+0.482588156676109710,	0.482631948442940770,	0.482675739003191550,	0.482719528356752970,	0.482763316503515560,	0.482807103443370240,	0.482850889176206780,	0.482894673701916130,	
+0.482938457020389120,	0.482982239131515670,	0.483026020035186520,	0.483069799731292380,	0.483113578219724120,	0.483157355500371530,	0.483201131573125550,	0.483244906437876760,	
+0.483288680094516090,	0.483332452542933280,	0.483376223783019370,	0.483419993814664940,	0.483463762637760860,	0.483507530252197000,	0.483551296657864340,	0.483595061854653400,	
+0.483638825842455210,	0.483682588621159590,	0.483726350190657460,	0.483770110550839460,	0.483813869701596620,	0.483857627642818640,	0.483901384374396670,	0.483945139896221570,	
+0.483988894208183250,	0.484032647310172700,	0.484076399202080510,	0.484120149883797760,	0.484163899355214200,	0.484207647616220930,	0.484251394666708520,	0.484295140506568020,	
+0.484338885135689230,	0.484382628553963300,	0.484426370761280760,	0.484470111757532680,	0.484513851542608950,	0.484557590116400590,	0.484601327478798250,	0.484645063629693010,	
+0.484688798568974680,	0.484732532296534350,	0.484776264812263100,	0.484819996116050810,	0.484863726207788500,	0.484907455087366880,	0.484951182754677020,	0.484994909209608800,	
+0.485038634452053310,	0.485082358481901290,	0.485126081299043720,	0.485169802903370530,	0.485213523294772850,	0.485257242473141390,	0.485300960438367180,	0.485344677190340190,	
+0.485388392728951510,	0.485432107054091900,	0.485475820165652330,	0.485519532063522830,	0.485563242747594550,	0.485606952217758510,	0.485650660473904710,	0.485694367515924260,	
+0.485738073343707940,	0.485781777957146780,	0.485825481356130790,	0.485869183540551090,	0.485912884510298460,	0.485956584265263950,	0.486000282805337640,	0.486043980130410610,	
+0.486087676240373630,	0.486131371135117840,	0.486175064814533260,	0.486218757278510990,	0.486262448526941840,	0.486306138559716940,	0.486349827376726330,	0.486393514977861150,	
+0.486437201363012160,	0.486480886532070560,	0.486524570484926370,	0.486568253221470740,	0.486611934741594860,	0.486655615045188780,	0.486699294132143630,	0.486742972002350280,	
+0.486786648655699870,	0.486830324092082490,	0.486873998311389280,	0.486917671313511050,	0.486961343098339050,	0.487005013665763260,	0.487048683015675000,	0.487092351147965010,	
+0.487136018062524490,	0.487179683759243590,	0.487223348238013440,	0.487267011498724980,	0.487310673541269330,	0.487354334365536600,	0.487397993971418090,	0.487441652358804930,	
+0.487485309527587280,	0.487528965477656340,	0.487572620208902960,	0.487616273721218460,	0.487659926014492870,	0.487703577088617500,	0.487747226943483160,	0.487790875578981150,	
+0.487834522995001520,	0.487878169191435620,	0.487921814168174320,	0.487965457925108810,	0.488009100462129310,	0.488052741779127050,	0.488096381875992970,	0.488140020752618310,	
+0.488183658408893160,	0.488227294844708890,	0.488270930059956810,	0.488314564054526950,	0.488358196828310720,	0.488401828381199000,	0.488445458713083090,	0.488489087823853140,	
+0.488532715713400510,	0.488576342381616070,	0.488619967828391120,	0.488663592053615870,	0.488707215057181680,	0.488750836838979460,	0.488794457398900480,	0.488838076736835050,	
+0.488881694852674350,	0.488925311746309430,	0.488968927417631650,	0.489012541866531150,	0.489056155092899290,	0.489099767096627390,	0.489143377877605760,	0.489186987435725640,	
+0.489230595770878070,	0.489274202882954420,	0.489317808771844830,	0.489361413437440720,	0.489405016879633110,	0.489448619098313330,	0.489492220093371620,	0.489535819864699350,	
+0.489579418412187550,	0.489623015735727530,	0.489666611835209650,	0.489710206710525230,	0.489753800361565240,	0.489797392788221210,	0.489840983990383280,	0.489884573967942880,	
+0.489928162720791040,	0.489971750248819230,	0.490015336551917590,	0.490058921629977660,	0.490102505482890800,	0.490146088110547270,	0.490189669512838540,	0.490233249689655650,	
+0.490276828640890010,	0.490320406366431930,	0.490363982866172780,	0.490407558140003700,	0.490451132187816110,	0.490494705009500320,	0.490538276604947750,	0.490581846974049500,	
+0.490625416116697020,	0.490668984032780590,	0.490712550722191720,	0.490756116184821510,	0.490799680420561320,	0.490843243429301580,	0.490886805210933750,	0.490930365765349260,	
+0.490973925092438530,	0.491017483192092930,	0.491061040064203650,	0.491104595708662110,	0.491148150125358730,	0.491191703314184990,	0.491235255275031980,	0.491278806007791170,	
+0.491322355512353040,	0.491365903788608950,	0.491409450836450160,	0.491452996655768080,	0.491496541246453140,	0.491540084608396880,	0.491583626741490360,	0.491627167645625200,	
+0.491670707320691740,	0.491714245766581460,	0.491757782983185950,	0.491801318970395640,	0.491844853728102050,	0.491888387256196270,	0.491931919554569940,	0.491975450623113430,	
+0.492018980461718270,	0.492062509070275660,	0.492106036448677180,	0.492149562596813190,	0.492193087514575360,	0.492236611201854750,	0.492280133658543060,	0.492323654884530560,	
+0.492367174879708990,	0.492410693643969500,	0.492454211177203620,	0.492497727479301820,	0.492541242550155740,	0.492584756389656540,	0.492628268997695800,	0.492671780374164040,	
+0.492715290518952800,	0.492758799431953720,	0.492802307113057280,	0.492845813562155070,	0.492889318779138330,	0.492932822763898660,	0.492976325516326590,	0.493019827036313640,	
+0.493063327323751190,	0.493106826378530760,	0.493150324200542890,	0.493193820789679220,	0.493237316145831000,	0.493280810268889870,	0.493324303158746310,	0.493367794815292030,	
+0.493411285238418260,	0.493454774428016610,	0.493498262383977700,	0.493541749106193080,	0.493585234594554500,	0.493628718848952490,	0.493672201869278630,	0.493715683655424290,	
+0.493759164207281110,	0.493802643524739630,	0.493846121607691530,	0.493889598456028140,	0.493933074069641150,	0.493976548448421090,	0.494020021592259660,	0.494063493501048170,	
+0.494106964174678360,	0.494150433613040730,	0.494193901816027010,	0.494237368783528530,	0.494280834515437030,	0.494324299011643040,	0.494367762272038320,	0.494411224296514570,	
+0.494454685084962380,	0.494498144637273480,	0.494541602953339210,	0.494585060033051300,	0.494628515876300410,	0.494671970482978170,	0.494715423852976070,	0.494758875986185730,	
+0.494802326882497870,	0.494845776541804170,	0.494889224963996010,	0.494932672148965190,	0.494976118096602300,	0.495019562806799100,	0.495063006279447050,	0.495106448514437800,	
+0.495149889511662060,	0.495193329271011620,	0.495236767792378240,	0.495280205075652570,	0.495323641120726350,	0.495367075927491070,	0.495410509495838420,	0.495453941825659160,	
+0.495497372916845040,	0.495540802769287470,	0.495584231382878330,	0.495627658757508190,	0.495671084893068880,	0.495714509789451860,	0.495757933446549000,	0.495801355864250890,	
+0.495844777042449390,	0.495888196981035980,	0.495931615679902400,	0.495975033138939430,	0.496018449358038900,	0.496061864337092210,	0.496105278075991250,	0.496148690574626740,	
+0.496192101832890480,	0.496235511850674380,	0.496278920627869100,	0.496322328164366500,	0.496365734460058050,	0.496409139514835730,	0.496452543328590120,	0.496495945901213150,	
+0.496539347232596350,	0.496582747322631520,	0.496626146171209480,	0.496669543778222090,	0.496712940143560770,	0.496756335267117540,	0.496799729148783060,	0.496843121788449300,	
+0.496886513186007680,	0.496929903341350230,	0.496973292254367590,	0.497016679924951690,	0.497060066352994550,	0.497103451538386810,	0.497146835481020450,	0.497190218180787010,	
+0.497233599637578410,	0.497276979851285380,	0.497320358821799920,	0.497363736549013610,	0.497407113032818320,	0.497450488273104840,	0.497493862269765160,	0.497537235022690870,	
+0.497580606531773830,	0.497623976796904840,	0.497667345817976000,	0.497710713594878730,	0.497754080127505110,	0.497797445415745890,	0.497840809459493050,	0.497884172258638570,	
+0.497927533813073250,	0.497970894122689130,	0.498014253187377740,	0.498057611007031160,	0.498100967581540100,	0.498144322910796690,	0.498187676994692410,	0.498231029833119340,	
+0.498274381425968360,	0.498317731773131380,	0.498361080874500100,	0.498404428729966430,	0.498447775339421360,	0.498491120702756860,	0.498534464819864580,	0.498577807690636480,	
+0.498621149314963490,	0.498664489692737580,	0.498707828823850510,	0.498751166708194250,	0.498794503345659670,	0.498837838736138790,	0.498881172879523770,	0.498924505775705410,	
+0.498967837424575730,	0.499011167826026560,	0.499054496979949800,	0.499097824886236390,	0.499141151544778450,	0.499184476955467640,	0.499227801118195980,	0.499271124032854450,	
+0.499314445699335140,	0.499357766117529690,	0.499401085287330240,	0.499444403208627650,	0.499487719881314070,	0.499531035305281200,	0.499574349480421120,	0.499617662406624750,	
+0.499660974083784290,	0.499704284511791720,	0.499747593690538060,	0.499790901619915460,	0.499834208299815560,	0.499877513730130560,	0.499920817910751380,	0.499964120841570160,	
+0.500007422522478650,	0.500050722953368940,	0.500094022134132010,	0.500137320064660050,	0.500180616744844820,	0.500223912174578400,	0.500267206353751880,	0.500310499282257240,	
+0.500353790959986440,	0.500397081386831480,	0.500440370562683420,	0.500483658487434480,	0.500526945160976840,	0.500570230583201380,	0.500613514754000400,	0.500656797673265540,	
+0.500700079340889110,	0.500743359756762100,	0.500786638920776680,	0.500829916832824740,	0.500873193492798350,	0.500916468900588500,	0.500959743056087590,	0.501003015959187280,	
+0.501046287609779870,	0.501089558007756230,	0.501132827153008780,	0.501176095045429260,	0.501219361684909880,	0.501262627071341730,	0.501305891204616990,	0.501349154084627550,	
+0.501392415711265580,	0.501435676084422190,	0.501478935203989560,	0.501522193069860120,	0.501565449681924620,	0.501608705040075710,	0.501651959144204910,	0.501695211994204530,	
+0.501738463589965880,	0.501781713931380930,	0.501824963018341790,	0.501868210850740630,	0.501911457428468540,	0.501954702751417850,	0.501997946819480400,	0.502041189632548400,	
+0.502084431190513050,	0.502127671493266650,	0.502170910540701070,	0.502214148332708610,	0.502257384869180370,	0.502300620150008650,	0.502343854175085760,	0.502387086944302900,	
+0.502430318457552370,	0.502473548714725940,	0.502516777715716010,	0.502560005460413910,	0.502603231948711590,	0.502646457180501380,	0.502689681155675250,	0.502732903874124610,	
+0.502776125335741670,	0.502819345540418520,	0.502862564488047340,	0.502905782178519330,	0.502948998611726930,	0.502992213787561980,	0.503035427705916800,	0.503078640366682820,	
+0.503121851769752100,	0.503165061915017200,	0.503208270802369300,	0.503251478431700710,	0.503294684802903400,	0.503337889915869810,	0.503381093770491010,	0.503424296366659530,	
+0.503467497704267350,	0.503510697783206780,	0.503553896603369020,	0.503597094164646600,	0.503640290466931480,	0.503683485510115880,	0.503726679294091320,	0.503769871818749990,	
+0.503813063083983990,	0.503856253089685730,	0.503899441835746420,	0.503942629322058580,	0.503985815548514520,	0.504029000515005430,	0.504072184221423970,	0.504115366667661990,	
+0.504158547853612030,	0.504201727779165280,	0.504244906444214160,	0.504288083848650870,	0.504331259992367720,	0.504374434875256020,	0.504417608497208180,	0.504460780858116410,	
+0.504503951957873010,	0.504547121796369400,	0.504590290373498010,	0.504633457689150800,	0.504676623743220420,	0.504719788535598070,	0.504762952066176160,	0.504806114334847010,	
+0.504849275341502810,	0.504892435086035210,	0.504935593568336390,	0.504978750788299010,	0.505021906745814380,	0.505065061440775010,	0.505108214873072890,	0.505151367042600660,	
+0.505194517949249630,	0.505237667592912330,	0.505280815973480960,	0.505323963090847820,	0.505367108944904330,	0.505410253535543140,	0.505453396862656330,	0.505496538926136440,	
+0.505539679725874770,	0.505582819261763850,	0.505625957533695990,	0.505669094541563500,	0.505712230285258020,	0.505755364764671870,	0.505798497979697670,	0.505841629930226970,	
+0.505884760616152060,	0.505927890037365380,	0.505971018193759230,	0.506014145085225240,	0.506057270711655850,	0.506100395072943240,	0.506143518168980070,	0.506186639999657740,	
+0.506229760564868790,	0.506272879864505530,	0.506315997898460380,	0.506359114666624750,	0.506402230168891410,	0.506445344405152540,	0.506488457375300680,	0.506531569079227250,	
+0.506574679516825000,	0.506617788687986350,	0.506660896592602830,	0.506704003230567080,	0.506747108601771300,	0.506790212706108250,	0.506833315543469110,	0.506876417113746870,	
+0.506919517416833500,	0.506962616452621640,	0.507005714221002930,	0.507048810721869910,	0.507091905955114890,	0.507134999920630490,	0.507178092618308260,	0.507221184048040730,	
+0.507264274209720200,	0.507307363103239430,	0.507350450728489830,	0.507393537085364170,	0.507436622173754630,	0.507479705993553960,	0.507522788544653600,	0.507565869826946180,	
+0.507608949840324560,	0.507652028584680170,	0.507695106059905750,	0.507738182265893510,	0.507781257202536310,	0.507824330869725450,	0.507867403267353800,	0.507910474395313670,	
+0.507953544253497700,	0.507996612841797530,	0.508039680160105810,	0.508082746208314840,	0.508125810986317480,	0.508168874494005160,	0.508211936731270630,	0.508254997698006310,	
+0.508298057394104830,	0.508341115819457840,	0.508384172973957990,	0.508427228857498250,	0.508470283469969920,	0.508513336811265980,	0.508556388881278630,	0.508599439679900730,	
+0.508642489207023820,	0.508685537462540640,	0.508728584446343720,	0.508771630158325720,	0.508814674598378150,	0.508857717766393990,	0.508900759662265450,	0.508943800285885480,	
+0.508986839637145640,	0.509029877715938660,	0.509072914522156970,	0.509115950055693430,	0.509158984316439580,	0.509202017304288270,	0.509245049019132260,	0.509288079460863300,	
+0.509331108629374140,	0.509374136524557210,	0.509417163146305360,	0.509460188494510140,	0.509503212569064500,	0.509546235369860880,	0.509589256896791910,	0.509632277149749570,	
+0.509675296128626500,	0.509718313833315120,	0.509761330263708400,	0.509804345419697880,	0.509847359301176640,	0.509890371908036880,	0.509933383240171570,	0.509976393297472460,	
+0.510019402079832430,	0.510062409587144220,	0.510105415819299580,	0.510148420776191490,	0.510191424457712260,	0.510234426863754860,	0.510277427994211050,	0.510320427848973580,	
+0.510363426427935200,	0.510406423730988550,	0.510449419758025380,	0.510492414508938790,	0.510535407983621070,	0.510578400181965210,	0.510621391103863060,	0.510664380749207390,	
+0.510707369117890720,	0.510750356209806020,	0.510793342024845170,	0.510836326562900790,	0.510879309823865760,	0.510922291807632710,	0.510965272514093630,	0.511008251943141260,	
+0.511051230094668680,	0.511094206968567780,	0.511137182564731170,	0.511180156883051740,	0.511223129923422230,	0.511266101685734500,	0.511309072169881640,	0.511352041375755960,	
+0.511395009303250660,	0.511437975952257370,	0.511480941322669190,	0.511523905414378640,	0.511566868227278700,	0.511609829761261240,	0.511652790016219220,	0.511695748992045170,	
+0.511738706688632080,	0.511781663105871920,	0.511824618243657660,	0.511867572101882160,	0.511910524680437300,	0.511953475979216250,	0.511996425998111460,	0.512039374737016000,	
+0.512082322195821620,	0.512125268374421520,	0.512168213272708230,	0.512211156890574840,	0.512254099227913100,	0.512297040284616200,	0.512339980060576570,	0.512382918555687520,	
+0.512425855769840680,	0.512468791702929250,	0.512511726354845880,	0.512554659725483530,	0.512597591814734080,	0.512640522622490710,	0.512683452148646520,	0.512726380393093150,	
+0.512769307355723900,	0.512812233036431420,	0.512855157435108680,	0.512898080551647760,	0.512941002385941540,	0.512983922937882860,	0.513026842207364720,	0.513069760194279080,	
+0.513112676898519030,	0.513155592319977320,	0.513198506458547030,	0.513241419314120150,	0.513284330886589650,	0.513327241175848270,	0.513370150181789220,	0.513413057904304470,	
+0.513455964343287000,	0.513498869498629660,	0.513541773370225550,	0.513584675957966530,	0.513627577261745900,	0.513670477281456650,	0.513713376016990850,	0.513756273468241710,	
+0.513799169635101750,	0.513842064517464280,	0.513884958115221280,	0.513927850428265940,	0.513970741456490910,	0.514013631199789380,	0.514056519658053430,	0.514099406831176160,	
+0.514142292719050430,	0.514185177321569320,	0.514228060638624920,	0.514270942670110310,	0.514313823415918360,	0.514356702875942260,	0.514399581050074000,	0.514442457938206750,	
+0.514485333540233740,	0.514528207856047140,	0.514571080885539820,	0.514613952628604990,	0.514656823085135610,	0.514699692255023660,	0.514742560138162660,	0.514785426734445160,	
+0.514828292043764460,	0.514871156066012640,	0.514914018801083010,	0.514956880248868320,	0.514999740409261770,	0.515042599282155460,	0.515085456867442780,	0.515128313165016280,	
+0.515171168174769490,	0.515214021896594380,	0.515256874330384250,	0.515299725476032310,	0.515342575333430640,	0.515385423902472550,	0.515428271183050900,	0.515471117175058890,	
+0.515513961878388720,	0.515556805292933680,	0.515599647418586660,	0.515642488255240950,	0.515685327802788530,	0.515728166061122820,	0.515771003030136680,	0.515813838709723420,	
+0.515856673099775230,	0.515899506200185320,	0.515942338010846660,	0.515985168531652550,	0.516027997762495080,	0.516070825703267680,	0.516113652353863530,	0.516156477714174940,	
+0.516199301784095010,	0.516242124563517040,	0.516284946052333990,	0.516327766250438190,	0.516370585157723050,	0.516413402774081430,	0.516456219099406640,	0.516499034133591000,	
+0.516541847876527680,	0.516584660328109790,	0.516627471488230740,	0.516670281356782500,	0.516713089933658500,	0.516755897218751930,	0.516798703211955870,	0.516841507913162750,	
+0.516884311322265870,	0.516927113439158090,	0.516969914263733070,	0.517012713795882760,	0.517055512035500710,	0.517098308982480330,	0.517141104636713700,	0.517183898998094360,	
+0.517226692066515280,	0.517269483841869770,	0.517312274324050250,	0.517355063512950020,	0.517397851408462060,	0.517440638010480010,	0.517483423318895850,	0.517526207333603220,	
+0.517568990054494970,	0.517611771481464760,	0.517654551614404660,	0.517697330453208200,	0.517740107997768370,	0.517782884247978690,	0.517825659203731360,	0.517868432864920010,	
+0.517911205231437850,	0.517953976303177300,	0.517996746080031880,	0.518039514561894570,	0.518082281748658780,	0.518125047640217050,	0.518167812236462580,	0.518210575537288660,	
+0.518253337542588620,	0.518296098252254870,	0.518338857666180820,	0.518381615784259680,	0.518424372606384960,	0.518467128132448770,	0.518509882362344850,	0.518552635295966290,	
+0.518595386933206390,	0.518638137273957690,	0.518680886318113710,	0.518723634065567870,	0.518766380516212490,	0.518809125669941200,	0.518851869526647190,	0.518894612086223780,	
+0.518937353348563500,	0.518980093313559760,	0.519022831981105880,	0.519065569351095270,	0.519108305423420350,	0.519151040197974640,	0.519193773674651360,	0.519236505853344020,	
+0.519279236733945050,	0.519321966316347970,	0.519364694600445990,	0.519407421586132620,	0.519450147273300410,	0.519492871661842770,	0.519535594751652900,	0.519578316542624540,	
+0.519621037034649900,	0.519663756227622730,	0.519706474121436560,	0.519749190715983690,	0.519791906011157990,	0.519834620006852430,	0.519877332702960770,	0.519920044099375420,	
+0.519962754195989920,	0.520005462992697560,	0.520048170489391890,	0.520090876685965430,	0.520133581582311710,	0.520176285178324150,	0.520218987473896170,	0.520261688468920400,	
+0.520304388163290390,	0.520347086556899430,	0.520389783649641060,	0.520432479441407910,	0.520475173932093530,	0.520517867121591650,	0.520560559009794700,	0.520603249596596320,	
+0.520645938881889810,	0.520688626865568830,	0.520731313547526000,	0.520773998927654750,	0.520816683005848600,	0.520859365782001090,	0.520902047256004860,	0.520944727427753440,	
+0.520987406297140130,	0.521030083864058800,	0.521072760128401870,	0.521115435090062970,	0.521158108748935530,	0.521200781104913190,	0.521243452157888590,	0.521286121907755250,	
+0.521328790354407050,	0.521371457497736390,	0.521414123337637150,	0.521456787874002630,	0.521499451106726570,	0.521542113035701420,	0.521584773660821010,	0.521627432981978670,	
+0.521670090999068140,	0.521712747711981950,	0.521755403120613970,	0.521798057224857390,	0.521840710024606080,	0.521883361519752680,	0.521926011710190820,	0.521968660595813930,	
+0.522011308176515750,	0.522053954452188940,	0.522096599422727240,	0.522139243088024510,	0.522181885447973170,	0.522224526502467200,	0.522267166251399790,	0.522309804694665040,	
+0.522352441832155230,	0.522395077663764360,	0.522437712189385840,	0.522480345408913420,	0.522522977322239730,	0.522565607929258550,	0.522608237229863380,	0.522650865223947990,	
+0.522693491911405130,	0.522736117292128430,	0.522778741366011550,	0.522821364132948110,	0.522863985592830980,	0.522906605745553810,	0.522949224591010120,	0.522991842129093780,	
+0.523034458359697420,	0.523077073282714910,	0.523119686898040110,	0.523162299205565780,	0.523204910205185670,	0.523247519896793190,	0.523290128280282430,	0.523332735355545810,	
+0.523375341122477520,	0.523417945580970770,	0.523460548730919630,	0.523503150572216640,	0.523545751104755760,	0.523588350328430540,	0.523630948243134830,	0.523673544848761390,	
+0.523716140145204070,	0.523758734132356410,	0.523801326810112270,	0.523843918178364510,	0.523886508237006890,	0.523929096985933370,	0.523971684425036720,	0.524014270554210900,	
+0.524056855373349450,	0.524099438882346110,	0.524142021081093870,	0.524184601969486570,	0.524227181547417760,	0.524269759814781410,	0.524312336771470270,	0.524354912417378300,	
+0.524397486752398940,	0.524440059776426380,	0.524482631489353260,	0.524525201891073430,	0.524567770981480770,	0.524610338760469030,	0.524652905227930950,	0.524695470383760740,	
+0.524738034227852150,	0.524780596760098140,	0.524823157980392590,	0.524865717888629240,	0.524908276484701840,	0.524950833768503490,	0.524993389739928040,	0.525035944398869030,	
+0.525078497745220640,	0.525121049778875530,	0.525163600499727880,	0.525206149907671120,	0.525248698002599430,	0.525291244784405700,	0.525333790252983770,	0.525376334408227400,	
+0.525418877250030560,	0.525461418778286120,	0.525503958992888150,	0.525546497893730310,	0.525589035480706570,	0.525631571753709890,	0.525674106712634260,	0.525716640357373750,	
+0.525759172687821240,	0.525801703703870800,	0.525844233405416080,	0.525886761792351170,	0.525929288864569020,	0.525971814621963630,	0.526014339064428740,	0.526056862191858320,	
+0.526099384004145350,	0.526141904501184030,	0.526184423682867890,	0.526226941549091000,	0.526269458099746460,	0.526311973334728230,	0.526354487253930080,	0.526396999857246080,	
+0.526439511144569220,	0.526482021115793560,	0.526524529770813320,	0.526567037109521240,	0.526609543131811630,	0.526652047837578240,	0.526694551226715050,	0.526737053299115020,	
+0.526779554054672470,	0.526822053493280930,	0.526864551614834700,	0.526907048419226750,	0.526949543906351180,	0.526992038076101620,	0.527034530928372490,	0.527077022463056540,	
+0.527119512680048090,	0.527162001579240870,	0.527204489160529090,	0.527246975423805610,	0.527289460368964740,	0.527331943995900550,	0.527374426304506150,	0.527416907294675610,	
+0.527459386966302900,	0.527501865319282110,	0.527544342353506220,	0.527586818068869420,	0.527629292465265690,	0.527671765542589100,	0.527714237300732640,	0.527756707739590600,	
+0.527799176859056860,	0.527841644659025500,	0.527884111139389710,	0.527926576300043580,	0.527969040140881090,	0.528011502661796310,	0.528053963862682330,	0.528096423743433570,	
+0.528138882303944010,	0.528181339544106950,	0.528223795463816590,	0.528266250062966680,	0.528308703341451520,	0.528351155299164210,	0.528393605935999040,	0.528436055251849780,	
+0.528478503246610830,	0.528520949920175290,	0.528563395272437230,	0.528605839303290860,	0.528648282012630140,	0.528690723400348390,	0.528733163466339810,	0.528775602210498350,	
+0.528818039632718230,	0.528860475732892630,	0.528902910510915870,	0.528945343966681800,	0.528987776100084740,	0.529030206911017880,	0.529072636399375520,	0.529115064565051970,	
+0.529157491407940330,	0.529199916927935000,	0.529242341124929850,	0.529284763998819300,	0.529327185549496430,	0.529369605776855550,	0.529412024680790630,	0.529454442261196090,	
+0.529496858517965020,	0.529539273450991830,	0.529581687060170500,	0.529624099345395230,	0.529666510306559420,	0.529708919943557290,	0.529751328256282910,	0.529793735244630580,	
+0.529836140908493510,	0.529878545247766010,	0.529920948262342590,	0.529963349952116470,	0.530005750316981940,	0.530048149356833090,	0.530090547071564110,	0.530132943461068540,	
+0.530175338525240460,	0.530217732263974170,	0.530260124677163880,	0.530302515764702890,	0.530344905526485500,	0.530387293962406030,	0.530429681072358550,	0.530472066856236600,	
+0.530514451313934490,	0.530556834445346180,	0.530599216250366210,	0.530641596728887780,	0.530683975880805400,	0.530726353706013400,	0.530768730204405180,	0.530811105375875170,	
+0.530853479220317340,	0.530895851737626210,	0.530938222927695100,	0.530980592790418430,	0.531022961325690270,	0.531065328533405050,	0.531107694413456180,	0.531150058965737970,	
+0.531192422190144730,	0.531234784086570770,	0.531277144654909490,	0.531319503895055330,	0.531361861806902370,	0.531404218390345240,	0.531446573645277140,	0.531488927571592610,	
+0.531531280169185720,	0.531573631437951000,	0.531615981377781880,	0.531658329988572760,	0.531700677270218190,	0.531743023222611580,	0.531785367845647450,	0.531827711139219780,	
+0.531870053103223330,	0.531912393737551280,	0.531954733042098280,	0.531997071016758530,	0.532039407661426320,	0.532081742975995420,	0.532124076960360020,	0.532166409614414420,	
+0.532208740938053260,	0.532251070931169750,	0.532293399593658620,	0.532335726925413980,	0.532378052926330450,	0.532420377596301450,	0.532462700935221410,	0.532505022942984960,	
+0.532547343619485640,	0.532589662964617960,	0.532631980978276130,	0.532674297660354790,	0.532716613010747240,	0.532758927029348130,	0.532801239716051760,	0.532843551070752650,	
+0.532885861093344350,	0.532928169783721260,	0.532970477141777920,	0.533012783167408630,	0.533055087860507040,	0.533097391220967780,	0.533139693248684930,	0.533181993943553370,	
+0.533224293305466280,	0.533266591334318530,	0.533308888030004760,	0.533351183392418270,	0.533393477421453930,	0.533435770117005830,	0.533478061478968700,	0.533520351507236090,	
+0.533562640201702520,	0.533604927562262410,	0.533647213588810290,	0.533689498281239790,	0.533731781639445570,	0.533774063663321920,	0.533816344352763370,	0.533858623707663680,	
+0.533900901727917490,	0.533943178413418870,	0.533985453764062810,	0.534027727779742720,	0.534070000460353240,	0.534112271805789240,	0.534154541815944130,	0.534196810490712660,	
+0.534239077829989250,	0.534281343833668430,	0.534323608501643840,	0.534365871833810350,	0.534408133830062030,	0.534450394490293860,	0.534492653814399370,	0.534534911802273080,	
+0.534577168453809650,	0.534619423768903700,	0.534661677747448660,	0.534703930389339610,	0.534746181694470630,	0.534788431662736490,	0.534830680294031020,	0.534872927588248780,	
+0.534915173545284280,	0.534957418165032280,	0.534999661447386200,	0.535041903392241110,	0.535084143999491560,	0.535126383269031280,	0.535168621200755030,	0.535210857794557240,	
+0.535253093050332750,	0.535295326967975100,	0.535337559547379050,	0.535379790788439220,	0.535422020691050270,	0.535464249255105830,	0.535506476480500760,	0.535548702367129590,	
+0.535590926914886970,	0.535633150123666750,	0.535675371993363570,	0.535717592523871970,	0.535759811715086690,	0.535802029566901590,	0.535844246079211440,	0.535886461251911080,	
+0.535928675084894060,	0.535970887578055440,	0.536013098731289660,	0.536055308544491350,	0.536097517017554480,	0.536139724150373810,	0.536181929942843860,	0.536224134394859500,	
+0.536266337506314360,	0.536308539277103310,	0.536350739707120990,	0.536392938796262260,	0.536435136544420770,	0.536477332951491360,	0.536519528017368690,	0.536561721741947490,	
+0.536603914125121760,	0.536646105166786120,	0.536688294866835670,	0.536730483225164030,	0.536772670241666190,	0.536814855916236790,	0.536857040248770460,	0.536899223239161280,	
+0.536941404887304020,	0.536983585193093190,	0.537025764156423780,	0.537067941777189640,	0.537110118055285630,	0.537152292990606290,	0.537194466583046590,	0.537236638832500390,	
+0.537278809738862660,	0.537320979302027820,	0.537363147521890850,	0.537405314398345710,	0.537447479931287280,	0.537489644120610180,	0.537531806966209280,	0.537573968467978560,	
+0.537616128625812870,	0.537658287439607200,	0.537700444909255500,	0.537742601034652660,	0.537784755815693290,	0.537826909252272500,	0.537869061344283920,	0.537911212091622850,	
+0.537953361494183600,	0.537995509551861370,	0.538037656264550020,	0.538079801632144530,	0.538121945654539520,	0.538164088331630100,	0.538206229663310000,	0.538248369649474310,	
+0.538290508290017680,	0.538332645584835290,	0.538374781533820790,	0.538416916136869370,	0.538459049393876010,	0.538501181304734680,	0.538543311869340350,	0.538585441087587770,	
+0.538627568959372030,	0.538669695484586870,	0.538711820663127620,	0.538753944494888670,	0.538796066979765340,	0.538838188117651380,	0.538880307908442100,	0.538922426352031910,	
+0.538964543448316010,	0.539006659197188490,	0.539048773598544310,	0.539090886652278110,	0.539132998358285100,	0.539175108716459240,	0.539217217726695620,	0.539259325388889320,	
+0.539301431702934320,	0.539343536668725700,	0.539385640286158320,	0.539427742555127150,	0.539469843475526290,	0.539511943047250810,	0.539554041270195460,	0.539596138144255330,	
+0.539638233669324620,	0.539680327845298180,	0.539722420672070990,	0.539764512149538130,	0.539806602277593690,	0.539848691056132650,	0.539890778485049850,	0.539932864564240500,	
+0.539974949293598680,	0.540017032673019480,	0.540059114702397980,	0.540101195381628370,	0.540143274710605750,	0.540185352689225070,	0.540227429317381210,	0.540269504594968470,	
+0.540311578521882050,	0.540353651098016590,	0.540395722323267380,	0.540437792197528520,	0.540479860720695200,	0.540521927892662180,	0.540563993713324640,	0.540606058182576900,	
+0.540648121300313920,	0.540690183066430690,	0.540732243480822380,	0.540774302543382990,	0.540816360254007920,	0.540858416612591930,	0.540900471619030320,	0.540942525273217180,	
+0.540984577575047590,	0.541026628524417070,	0.541068678121219500,	0.541110726365350290,	0.541152773256704300,	0.541194818795176610,	0.541236862980661650,	0.541278905813054490,	
+0.541320947292250000,	0.541362987418143590,	0.541405026190629360,	0.541447063609602490,	0.541489099674957950,	0.541531134386591170,	0.541573167744396010,	0.541615199748267990,	
+0.541657230398101990,	0.541699259693793290,	0.541741287635236100,	0.541783314222325620,	0.541825339454957260,	0.541867363333025210,	0.541909385856424790,	0.541951407025050850,	
+0.541993426838798700,	0.542035445297562650,	0.542077462401238000,	0.542119478149719720,	0.542161492542903130,	0.542203505580682310,	0.542245517262952890,	0.542287527589609630,	
+0.542329536560547830,	0.542371544175661910,	0.542413550434847070,	0.542455555337998390,	0.542497558885011280,	0.542539561075779720,	0.542581561910199350,	0.542623561388165480,	
+0.542665559509572290,	0.542707556274315220,	0.542749551682289330,	0.542791545733389840,	0.542833538427511140,	0.542875529764548560,	0.542917519744397170,	0.542959508366952390,	
+0.543001495632108420,	0.543043481539760790,	0.543085466089804350,	0.543127449282134630,	0.543169431116645950,	0.543211411593233720,	0.543253390711792910,	0.543295368472219040,	
+0.543337344874406440,	0.543379319918250280,	0.543421293603645990,	0.543463265930488770,	0.543505236898673030,	0.543547206508094180,	0.543589174758647760,	0.543631141650227970,	
+0.543673107182730320,	0.543715071356049910,	0.543757034170082250,	0.543798995624721560,	0.543840955719863350,	0.543882914455402820,	0.543924871831235390,	0.543966827847255360,	
+0.544008782503358270,	0.544050735799439190,	0.544092687735393770,	0.544134638311116080,	0.544176587526501890,	0.544218535381446270,	0.544260481875844640,	0.544302427009591420,	
+0.544344370782582130,	0.544386313194712310,	0.544428254245876380,	0.544470193935969740,	0.544512132264887700,	0.544554069232525580,	0.544596004838778010,	0.544637939083540410,	
+0.544679871966707860,	0.544721803488176120,	0.544763733647839480,	0.544805662445593470,	0.544847589881333420,	0.544889515954954610,	0.544931440666351690,	0.544973364015420180,	
+0.545015286002055290,	0.545057206626152540,	0.545099125887606450,	0.545141043786312450,	0.545182960322166290,	0.545224875495062270,	0.545266789304896140,	0.545308701751562990,	
+0.545350612834958450,	0.545392522554977060,	0.545434430911514330,	0.545476337904465590,	0.545518243533726240,	0.545560147799191040,	0.545602050700755400,	0.545643952238314630,	
+0.545685852411764370,	0.545727751220999150,	0.545769648665914490,	0.545811544746405700,	0.545853439462368420,	0.545895332813697290,	0.545937224800287720,	0.545979115422035480,	
+0.546021004678835080,	0.546062892570582160,	0.546104779097172030,	0.546146664258500230,	0.546188548054461490,	0.546230430484951460,	0.546272311549865220,	0.546314191249098640,	
+0.546356069582546120,	0.546397946550103540,	0.546439822151666090,	0.546481696387129400,	0.546523569256388120,	0.546565440759337880,	0.546607310895874000,	0.546649179665892330,	
+0.546691047069287280,	0.546732913105954620,	0.546774777775789640,	0.546816641078688210,	0.546858503014544750,	0.546900363583255000,	0.546942222784714720,	0.546984080618818420,	
+0.547025937085462100,	0.547067792184540820,	0.547109645915950460,	0.547151498279585650,	0.547193349275342020,	0.547235198903115010,	0.547277047162800460,	0.547318894054292900,	
+0.547360739577488100,	0.547402583732281340,	0.547444426518568620,	0.547486267936244440,	0.547528107985204570,	0.547569946665344420,	0.547611783976559850,	0.547653619918745390,	
+0.547695454491796910,	0.547737287695610140,	0.547779119530079740,	0.547820949995101560,	0.547862779090571020,	0.547904606816383980,	0.547946433172434970,	0.547988258158619850,	
+0.548030081774834140,	0.548071904020973610,	0.548113724896932890,	0.548155544402607940,	0.548197362537894080,	0.548239179302687170,	0.548280994696881960,	0.548322808720374310,	
+0.548364621373059520,	0.548406432654833690,	0.548448242565591330,	0.548490051105228300,	0.548531858273640590,	0.548573664070722830,	0.548615468496370990,	0.548657271550480390,	
+0.548699073232947090,	0.548740873543665630,	0.548782672482531990,	0.548824470049441680,	0.548866266244290580,	0.548908061066973430,	0.548949854517386200,	0.548991646595424320,	
+0.549033437300983640,	0.549075226633959020,	0.549117014594246330,	0.549158801181741100,	0.549200586396339170,	0.549242370237935430,	0.549284152706425830,	0.549325933801705800,	
+0.549367713523671420,	0.549409491872217210,	0.549451268847239380,	0.549493044448633780,	0.549534818676295170,	0.549576591530119400,	0.549618363010002220,	0.549660133115839610,	
+0.549701901847526210,	0.549743669204957990,	0.549785435188030690,	0.549827199796640190,	0.549868963030681220,	0.549910724890049880,	0.549952485374641810,	0.549994244484352750,	
+0.550036002219077780,	0.550077758578712880,	0.550119513563153470,	0.550161267172295740,	0.550203019406034440,	0.550244770264265550,	0.550286519746885140,	0.550328267853788080,	
+0.550370014584870340,	0.550411759940027560,	0.550453503919155710,	0.550495246522149760,	0.550536987748905690,	0.550578727599319140,	0.550620466073286190,	0.550662203170701690,	
+0.550703938891461630,	0.550745673235461750,	0.550787406202598030,	0.550829137792765540,	0.550870868005860050,	0.550912596841777510,	0.550954324300413800,	0.550996050381663880,	
+0.551037775085423950,	0.551079498411589870,	0.551121220360056620,	0.551162940930720380,	0.551204660123476800,	0.551246377938221950,	0.551288094374850710,	0.551329809433259270,	
+0.551371523113343360,	0.551413235414998980,	0.551454946338121090,	0.551496655882605880,	0.551538364048348990,	0.551580070835246630,	0.551621776243193750,	0.551663480272086340,	
+0.551705182921820250,	0.551746884192291560,	0.551788584083395370,	0.551830282595027640,	0.551871979727084240,	0.551913675479461240,	0.551955369852053620,	0.551997062844757690,	
+0.552038754457469420,	0.552080444690083880,	0.552122133542497280,	0.552163821014605370,	0.552205507106304230,	0.552247191817488940,	0.552288875148055690,	0.552330557097900240,	
+0.552372237666918680,	0.552413916855006290,	0.552455594662059070,	0.552497271087972860,	0.552538946132643870,	0.552580619795967070,	0.552622292077838750,	0.552663962978154680,	
+0.552705632496811150,	0.552747300633703140,	0.552788967388726850,	0.552830632761778570,	0.552872296752753290,	0.552913959361547300,	0.552955620588056360,	0.552997280432176770,	
+0.553038938893803620,	0.553080595972833100,	0.553122251669161070,	0.553163905982683830,	0.553205558913296370,	0.553247210460895090,	0.553288860625375860,	0.553330509406634750,	
+0.553372156804566970,	0.553413802819068820,	0.553455447450036160,	0.553497090697365300,	0.553538732560951320,	0.553580373040690520,	0.553622012136479100,	0.553663649848212370,	
+0.553705286175786400,	0.553746921119097290,	0.553788554678041220,	0.553830186852513400,	0.553871817642410220,	0.553913447047627350,	0.553955075068061300,	0.553996701703607150,	
+0.554038326954161330,	0.554079950819619580,	0.554121573299878430,	0.554163194394832860,	0.554204814104379380,	0.554246432428413870,	0.554288049366832620,	0.554329664919530950,	
+0.554371279086405040,	0.554412891867351320,	0.554454503262264970,	0.554496113271042420,	0.554537721893579530,	0.554579329129772700,	0.554620934979517250,	0.554662539442709490,	
+0.554704142519245270,	0.554745744209021120,	0.554787344511932230,	0.554828943427874920,	0.554870540956745370,	0.554912137098439780,	0.554953731852853460,	0.554995325219882820,	
+0.555036917199423940,	0.555078507791373020,	0.555120096995625590,	0.555161684812077730,	0.555203271240625850,	0.555244856281166040,	0.555286439933593830,	0.555328022197805420,	
+0.555369603073697320,	0.555411182561164950,	0.555452760660104520,	0.555494337370412210,	0.555535912691984430,	0.555577486624716510,	0.555619059168504850,	0.555660630323245640,	
+0.555702200088835090,	0.555743768465168710,	0.555785335452142930,	0.555826901049653820,	0.555868465257597810,	0.555910028075870310,	0.555951589504367740,	0.555993149542986180,	
+0.556034708191622040,	0.556076265450170860,	0.556117821318528940,	0.556159375796592910,	0.556200928884257980,	0.556242480581420780,	0.556284030887977400,	0.556325579803824240,	
+0.556367127328856850,	0.556408673462971630,	0.556450218206064660,	0.556491761558032590,	0.556533303518770730,	0.556574844088175590,	0.556616383266143270,	0.556657921052570500,	
+0.556699457447352500,	0.556740992450385770,	0.556782526061566640,	0.556824058280791620,	0.556865589107956030,	0.556907118542956490,	0.556948646585689430,	0.556990173236050490,	
+0.557031698493936080,	0.557073222359242390,	0.557114744831866070,	0.557156265911702530,	0.557197785598648300,	0.557239303892599570,	0.557280820793452980,	0.557322336301103950,	
+0.557363850415449110,	0.557405363136384670,	0.557446874463807140,	0.557488384397612060,	0.557529892937696060,	0.557571400083955340,	0.557612905836286420,	0.557654410194584840,	
+0.557695913158747340,	0.557737414728670000,	0.557778914904249470,	0.557820413685381270,	0.557861911071962150,	0.557903407063888520,	0.557944901661056040,	0.557986394863361320,	
+0.558027886670700580,	0.558069377082970550,	0.558110866100066660,	0.558152353721885540,	0.558193839948323610,	0.558235324779277510,	0.558276808214642650,	0.558318290254315790,	
+0.558359770898193110,	0.558401250146171480,	0.558442727998146320,	0.558484204454014370,	0.558525679513671940,	0.558567153177015660,	0.558608625443941080,	0.558650096314344920,	
+0.558691565788123960,	0.558733033865173700,	0.558774500545390800,	0.558815965828671770,	0.558857429714913030,	0.558898892204010460,	0.558940353295860670,	0.558981812990359870,	
+0.559023271287405030,	0.559064728186891570,	0.559106183688716340,	0.559147637792775650,	0.559189090498966260,	0.559230541807183680,	0.559271991717324890,	0.559313440229285970,	
+0.559354887342963900,	0.559396333058254200,	0.559437777375053740,	0.559479220293259140,	0.559520661812766160,	0.559562101933471560,	0.559603540655271630,	0.559644977978063230,	
+0.559686413901742010,	0.559727848426204820,	0.559769281551347970,	0.559810713277068220,	0.559852143603261410,	0.559893572529824190,	0.559935000056653090,	0.559976426183644740,	
+0.560017850910695110,	0.560059274237700740,	0.560100696164558260,	0.560142116691164430,	0.560183535817414870,	0.560224953543206450,	0.560266369868436030,	0.560307784792999360,	
+0.560349198316793200,	0.560390610439714050,	0.560432021161658800,	0.560473430482523070,	0.560514838402203730,	0.560556244920597300,	0.560597650037600650,	0.560639053753109520,	
+0.560680456067020770,	0.560721856979230830,	0.560763256489636650,	0.560804654598134000,	0.560846051304619620,	0.560887446608990260,	0.560928840511142560,	0.560970233010972370,	
+0.561011624108376570,	0.561053013803251790,	0.561094402095494770,	0.561135788985001490,	0.561177174471668590,	0.561218558555393270,	0.561259941236071040,	0.561301322513599100,	
+0.561342702387873760,	0.561384080858791990,	0.561425457926249760,	0.561466833590143820,	0.561508207850370810,	0.561549580706827700,	0.561590952159410240,	0.561632322208015400,	
+0.561673690852539710,	0.561715058092880250,	0.561756423928932660,	0.561797788360594020,	0.561839151387760970,	0.561880513010330370,	0.561921873228198200,	0.561963232041261310,	
+0.562004589449416670,	0.562045945452560260,	0.562087300050588930,	0.562128653243399330,	0.562170005030888540,	0.562211355412952310,	0.562252704389487710,	0.562294051960391280,	
+0.562335398125560220,	0.562376742884890260,	0.562418086238278380,	0.562459428185621340,	0.562500768726816090,	0.562542107861758510,	0.562583445590345680,	0.562624781912474230,	
+0.562666116828041240,	0.562707450336942580,	0.562748782439075220,	0.562790113134336360,	0.562831442422621730,	0.562872770303828650,	0.562914096777853530,	0.562955421844593570,	
+0.562996745503944740,	0.563038067755804010,	0.563079388600068120,	0.563120708036634050,	0.563162026065397890,	0.563203342686256710,	0.563244657899107160,	0.563285971703846310,	
+0.563327284100370140,	0.563368595088575840,	0.563409904668359940,	0.563451212839619740,	0.563492519602251110,	0.563533824956151230,	0.563575128901216750,	0.563616431437344740,	
+0.563657732564431410,	0.563699032282373610,	0.563740330591068650,	0.563781627490412610,	0.563822922980302340,	0.563864217060634830,	0.563905509731307150,	0.563946800992215390,	
+0.563988090843256520,	0.564029379284327500,	0.564070666315325320,	0.564111951936146160,	0.564153236146687110,	0.564194518946845030,	0.564235800336516880,	0.564277080315598980,	
+0.564318358883988400,	0.564359636041581900,	0.564400911788276560,	0.564442186123968680,	0.564483459048555350,	0.564524730561933640,	0.564566000663999870,	0.564607269354651000,	
+0.564648536633784000,	0.564689802501295970,	0.564731066957083190,	0.564772330001042660,	0.564813591633071320,	0.564854851853066280,	0.564896110660923820,	0.564937368056541160,	
+0.564978624039815020,	0.565019878610642620,	0.565061131768920260,	0.565102383514545000,	0.565143633847413730,	0.565184882767423850,	0.565226130274471330,	0.565267376368453590,	
+0.565308621049267710,	0.565349864316809890,	0.565391106170977430,	0.565432346611667190,	0.565473585638776480,	0.565514823252201370,	0.565556059451839290,	0.565597294237586980,	
+0.565638527609341860,	0.565679759567000010,	0.565720990110458730,	0.565762219239615120,	0.565803446954366240,	0.565844673254608300,	0.565885898140238820,	0.565927121611154550,	
+0.565968343667252790,	0.566009564308429860,	0.566050783534582940,	0.566092001345609550,	0.566133217741405680,	0.566174432721868850,	0.566215646286895910,	0.566256858436384180,	
+0.566298069170229960,	0.566339278488330540,	0.566380486390583030,	0.566421692876884600,	0.566462897947131560,	0.566504101601221330,	0.566545303839050770,	0.566586504660517300,	
+0.566627704065517320,	0.566668902053947930,	0.566710098625706430,	0.566751293780690000,	0.566792487518794960,	0.566833679839918720,	0.566874870743958260,	0.566916060230810980,	
+0.566957248300373200,	0.566998434952542210,	0.567039620187215650,	0.567080804004289620,	0.567121986403661520,	0.567163167385228540,	0.567204346948887990,	0.567245525094536180,	
+0.567286701822070530,	0.567327877131388100,	0.567369051022386440,	0.567410223494961730,	0.567451394549011500,	0.567492564184432840,	0.567533732401123040,	0.567574899198978520,	
+0.567616064577896820,	0.567657228537774890,	0.567698391078510280,	0.567739552199999390,	0.567780711902139630,	0.567821870184828330,	0.567863027047962100,	0.567904182491438260,	
+0.567945336515154000,	0.567986489119006730,	0.568027640302892880,	0.568068790066709850,	0.568109938410354950,	0.568151085333725490,	0.568192230836717990,	0.568233374919229980,	
+0.568274517581158430,	0.568315658822401090,	0.568356798642854160,	0.568397937042415150,	0.568439074020981370,	0.568480209578450250,	0.568521343714718300,	0.568562476429682940,	
+0.568603607723241810,	0.568644737595291220,	0.568685866045728790,	0.568726993074451740,	0.568768118681357570,	0.568809242866342710,	0.568850365629304800,	0.568891486970140910,	
+0.568932606888748690,	0.568973725385024550,	0.569014842458866130,	0.569055958110170620,	0.569097072338835550,	0.569138185144757450,	0.569179296527833940,	0.569220406487962130,	
+0.569261515025039630,	0.569302622138963100,	0.569343727829629940,	0.569384832096937470,	0.569425934940783310,	0.569467036361063880,	0.569508136357676830,	0.569549234930519900,	
+0.569590332079489500,	0.569631427804483280,	0.569672522105398430,	0.569713614982132690,	0.569754706434582590,	0.569795796462645670,	0.569836885066219210,	0.569877972245200980,	
+0.569919057999487390,	0.569960142328976180,	0.570001225233564670,	0.570042306713150370,	0.570083386767630040,	0.570124465396901200,	0.570165542600861160,	0.570206618379407670,	
+0.570247692732437250,	0.570288765659847650,	0.570329837161536400,	0.570370907237400250,	0.570411975887336830,	0.570453043111243450,	0.570494108909017860,	0.570535173280556700,	
+0.570576236225757480,	0.570617297744517750,	0.570658357836735020,	0.570699416502306160,	0.570740473741128680,	0.570781529553100130,	0.570822583938118020,	0.570863636896079110,	
+0.570904688426881140,	0.570945738530421410,	0.570986787206597680,	0.571027834455306690,	0.571068880276446090,	0.571109924669913620,	0.571150967635605910,	0.571192009173420940,	
+0.571233049283255800,	0.571274087965008450,	0.571315125218575530,	0.571356161043854890,	0.571397195440743740,	0.571438228409139940,	0.571479259948940220,	0.571520290060042460,	
+0.571561318742343840,	0.571602345995742330,	0.571643371820134690,	0.571684396215418560,	0.571725419181491330,	0.571766440718251000,	0.571807460825594190,	0.571848479503418770,	
+0.571889496751622480,	0.571930512570102080,	0.571971526958755420,	0.572012539917479910,	0.572053551446173540,	0.572094561544732820,	0.572135570213055720,	0.572176577451039670,	
+0.572217583258582520,	0.572258587635581020,	0.572299590581933140,	0.572340592097536290,	0.572381592182288230,	0.572422590836085930,	0.572463588058827130,	0.572504583850409250,	
+0.572545578210730380,	0.572586571139687250,	0.572627562637177620,	0.572668552703099020,	0.572709541337349530,	0.572750528539825780,	0.572791514310425630,	0.572832498649047170,	
+0.572873481555587040,	0.572914463029943200,	0.572955443072013180,	0.572996421681694960,	0.573037398858885380,	0.573078374603482210,	0.573119348915383190,	0.573160321794486060,	
+0.573201293240687800,	0.573242263253886280,	0.573283231833979220,	0.573324198980864290,	0.573365164694438660,	0.573406128974599970,	0.573447091821245980,	0.573488053234274760,	
+0.573529013213582850,	0.573569971759068540,	0.573610928870629590,	0.573651884548163070,	0.573692838791566740,	0.573733791600738340,	0.573774742975575850,	0.573815692915976120,	
+0.573856641421837120,	0.573897588493056500,	0.573938534129532330,	0.573979478331161470,	0.574020421097841900,	0.574061362429471260,	0.574102302325947610,	0.574143240787167830,	
+0.574184177813029880,	0.574225113403431520,	0.574266047558270820,	0.574306980277444530,	0.574347911560850850,	0.574388841408387750,	0.574429769819952200,	0.574470696795442160,	
+0.574511622334755500,	0.574552546437790080,	0.574593469104442870,	0.574634390334612060,	0.574675310128195280,	0.574716228485090520,	0.574757145405194850,	0.574798060888406350,	
+0.574838974934622660,	0.574879887543741970,	0.574920798715661150,	0.574961708450278270,	0.575002616747491200,	0.575043523607197900,	0.575084429029295460,	0.575125333013681960,	
+0.575166235560255150,	0.575207136668913100,	0.575248036339552790,	0.575288934572072420,	0.575329831366370060,	0.575370726722342800,	0.575411620639888710,	0.575452513118905550,	
+0.575493404159291510,	0.575534293760943560,	0.575575181923759890,	0.575616068647638260,	0.575656953932476840,	0.575697837778172630,	0.575738720184623910,	0.575779601151728330,	
+0.575820480679384070,	0.575861358767488340,	0.575902235415939100,	0.575943110624634320,	0.575983984393472200,	0.576024856722349600,	0.576065727611165030,	0.576106597059816370,	
+0.576147465068200910,	0.576188331636216860,	0.576229196763761830,	0.576270060450734260,	0.576310922697031210,	0.576351783502550790,	0.576392642867190940,	0.576433500790849870,	
+0.576474357273424660,	0.576515212314813510,	0.576556065914914370,	0.576596918073625450,	0.576637768790843830,	0.576678618066467810,	0.576719465900395250,	0.576760312292524450,	
+0.576801157242752380,	0.576842000750977470,	0.576882842817098010,	0.576923683441010970,	0.576964522622614770,	0.577005360361807270,	0.577046196658486670,	0.577087031512550250,	
+0.577127864923896230,	0.577168696892422560,	0.577209527418027560,	0.577250356500608300,	0.577291184140063200,	0.577332010336290110,	0.577372835089187460,	0.577413658398652220,	
+0.577454480264582900,	0.577495300686877380,	0.577536119665433940,	0.577576937200149910,	0.577617753290923460,	0.577658567937653020,	0.577699381140235780,	0.577740192898570150,	
+0.577781003212553990,	0.577821812082085720,	0.577862619507062520,	0.577903425487382720,	0.577944230022944480,	0.577985033113645910,	0.578025834759384520,	0.578066634960058390,	
+0.578107433715565830,	0.578148231025804930,	0.578189026890673090,	0.578229821310068730,	0.578270614283889820,	0.578311405812034770,	0.578352195894400790,	0.578392984530886280,	
+0.578433771721389430,	0.578474557465808450,	0.578515341764040620,	0.578556124615984600,	0.578596906021538570,	0.578637685980599840,	0.578678464493066920,	0.578719241558837920,	
+0.578760017177811110,	0.578800791349883940,	0.578841564074954800,	0.578882335352921660,	0.578923105183683170,	0.578963873567136410,	0.579004640503180120,	0.579045405991712170,	
+0.579086170032630960,	0.579126932625834150,	0.579167693771219900,	0.579208453468686430,	0.579249211718132150,	0.579289968519454580,	0.579330723872552020,	0.579371477777323010,	
+0.579412230233664950,	0.579452981241476260,	0.579493730800655140,	0.579534478911100100,	0.579575225572708570,	0.579615970785378850,	0.579656714549009240,	0.579697456863498270,	
+0.579738197728743240,	0.579778937144642680,	0.579819675111094780,	0.579860411627998170,	0.579901146695250060,	0.579941880312749070,	0.579982612480393510,	0.580023343198081690,	
+0.580064072465711120,	0.580104800283180340,	0.580145526650387990,	0.580186251567231470,	0.580226975033609320,	0.580267697049419720,	0.580308417614561310,	0.580349136728931400,	
+0.580389854392428630,	0.580430570604951290,	0.580471285366397920,	0.580511998676665810,	0.580552710535653830,	0.580593420943260050,	0.580634129899383120,	0.580674837403920450,	
+0.580715543456770790,	0.580756248057832100,	0.580796951207003250,	0.580837652904181660,	0.580878353149265950,	0.580919051942154320,	0.580959749282745410,	0.581000445170936850,	
+0.581041139606627070,	0.581081832589714910,	0.581122524120097680,	0.581163214197674250,	0.581203902822342800,	0.581244589994001860,	0.581285275712549070,	0.581325959977883170,	
+0.581366642789902350,	0.581407324148505270,	0.581448004053589540,	0.581488682505053810,	0.581529359502796380,	0.581570035046715890,	0.581610709136709870,	0.581651381772677170,	
+0.581692052954515980,	0.581732722682125060,	0.581773390955401930,	0.581814057774245440,	0.581854723138554020,	0.581895387048225520,	0.581936049503158470,	0.581976710503251390,	
+0.582017370048402820,	0.582058028138510490,	0.582098684773473040,	0.582139339953189010,	0.582179993677556910,	0.582220645946474490,	0.582261296759840400,	0.582301946117553040,	
+0.582342594019511270,	0.582383240465612630,	0.582423885455755850,	0.582464528989839360,	0.582505171067762010,	0.582545811689421320,	0.582586450854716050,	0.582627088563545060,	
+0.582667724815805980,	0.582708359611397550,	0.582748992950218200,	0.582789624832166790,	0.582830255257140940,	0.582870884225039520,	0.582911511735760830,	0.582952137789203630,	
+0.582992762385265870,	0.583033385523846090,	0.583074007204842930,	0.583114627428155120,	0.583155246193680310,	0.583195863501317470,	0.583236479350964900,	0.583277093742521570,	
+0.583317706675885010,	0.583358318150954290,	0.583398928167628170,	0.583439536725804290,	0.583480143825381600,	0.583520749466258540,	0.583561353648333950,	0.583601956371505690,	
+0.583642557635672410,	0.583683157440732850,	0.583723755786585750,	0.583764352673128760,	0.583804948100261070,	0.583845542067880970,	0.583886134575887230,	0.583926725624178020,	
+0.583967315212651880,	0.584007903341207450,	0.584048490009743570,	0.584089075218158120,	0.584129658966350050,	0.584170241254217790,	0.584210822081660310,	0.584251401448575460,	
+0.584291979354861990,	0.584332555800419100,	0.584373130785144300,	0.584413704308936690,	0.584454276371694890,	0.584494846973317770,	0.584535416113703080,	0.584575983792749890,	
+0.584616550010356840,	0.584657114766422680,	0.584697678060845380,	0.584738239893523800,	0.584778800264356800,	0.584819359173243010,	0.584859916620080520,	0.584900472604768300,	
+0.584941027127204750,	0.584981580187289070,	0.585022131784919130,	0.585062681919993890,	0.585103230592412200,	0.585143777802072050,	0.585184323548872510,	0.585224867832712210,	
+0.585265410653490030,	0.585305952011104020,	0.585346491905453070,	0.585387030336435910,	0.585427567303951620,	0.585468102807897960,	0.585508636848174110,	0.585549169424678610,	
+0.585589700537310520,	0.585630230185967830,	0.585670758370549600,	0.585711285090954490,	0.585751810347081460,	0.585792334138828590,	0.585832856466094950,	0.585873377328779420,	
+0.585913896726780180,	0.585954414659996090,	0.585994931128326010,	0.586035446131669020,	0.586075959669922990,	0.586116471742987090,	0.586156982350759970,	0.586197491493140820,	
+0.586237999170027500,	0.586278505381319200,	0.586319010126914670,	0.586359513406713000,	0.586400015220612140,	0.586440515568511290,	0.586481014450309090,	0.586521511865904840,	
+0.586562007815196300,	0.586602502298082750,	0.586642995314463070,	0.586683486864236100,	0.586723976947300160,	0.586764465563554330,	0.586804952712897570,	0.586845438395228070,	
+0.586885922610445030,	0.586926405358447200,	0.586966886639133770,	0.587007366452402590,	0.587047844798153080,	0.587088321676284000,	0.587128797086694520,	0.587169271029282620,	
+0.587209743503947500,	0.587250214510588010,	0.587290684049103450,	0.587331152119391800,	0.587371618721352130,	0.587412083854883530,	0.587452547519885070,	0.587493009716254950,	
+0.587533470443892150,	0.587573929702696170,	0.587614387492564890,	0.587654843813397720,	0.587695298665093510,	0.587735752047551240,	0.587776203960669320,	0.587816654404346940,	
+0.587857103378482850,	0.587897550882976460,	0.587937996917725750,	0.587978441482630010,	0.588018884577588220,	0.588059326202499570,	0.588099766357262240,	0.588140205041775550,	
+0.588180642255938250,	0.588221077999649730,	0.588261512272808210,	0.588301945075312860,	0.588342376407063110,	0.588382806267956910,	0.588423234657893810,	0.588463661576772550,	
+0.588504087024492530,	0.588544511000951950,	0.588584933506050010,	0.588625354539685790,	0.588665774101758580,	0.588706192192166580,	0.588746608810808980,	0.588787023957584980,	
+0.588827437632393760,	0.588867849835133520,	0.588908260565703780,	0.588948669824003290,	0.588989077609931470,	0.589029483923386610,	0.589069888764268130,	0.589110292132475230,	
+0.589150694027906210,	0.589191094450460470,	0.589231493400037000,	0.589271890876535200,	0.589312286879853260,	0.589352681409890610,	0.589393074466546210,	0.589433466049719580,	
+0.589473856159308920,	0.589514244795213530,	0.589554631957332600,	0.589595017645565430,	0.589635401859810340,	0.589675784599966720,	0.589716165865933780,	0.589756545657610600,	
+0.589796923974895800,	0.589837300817688700,	0.589877676185888270,	0.589918050079394130,	0.589958422498104370,	0.589998793441918630,	0.590039162910736330,	0.590079530904455640,	
+0.590119897422976210,	0.590160262466197020,	0.590200626034017460,	0.590240988126336070,	0.590281348743052160,	0.590321707884064910,	0.590362065549273620,	0.590402421738576930,	
+0.590442776451874260,	0.590483129689064470,	0.590523481450047290,	0.590563831734721160,	0.590604180542985360,	0.590644527874739090,	0.590684873729881880,	0.590725218108312020,	
+0.590765561009929270,	0.590805902434632930,	0.590846242382321420,	0.590886580852894360,	0.590926917846250840,	0.590967253362290390,	0.591007587400911530,	0.591047919962013560,	
+0.591088251045495780,	0.591128580651257840,	0.591168908779198030,	0.591209235429216000,	0.591249560601210810,	0.591289884295082110,	0.591330206510728430,	0.591370527248049060,	
+0.591410846506943530,	0.591451164287311150,	0.591491480589050540,	0.591531795412061130,	0.591572108756242780,	0.591612420621493660,	0.591652731007713540,	0.591693039914801490,	
+0.591733347342657370,	0.591773653291179370,	0.591813957760267350,	0.591854260749820390,	0.591894562259738130,	0.591934862289919090,	0.591975160840262920,	0.592015457910668900,	
+0.592055753501036450,	0.592096047611264440,	0.592136340241252170,	0.592176631390899040,	0.592216921060104820,	0.592257209248767900,	0.592297495956787930,	0.592337781184064220,	
+0.592378064930496380,	0.592418347195983070,	0.592458627980423810,	0.592498907283718460,	0.592539185105765420,	0.592579461446464340,	0.592619736305714740,	0.592660009683416140,	
+0.592700281579467080,	0.592740551993767410,	0.592780820926216310,	0.592821088376713550,	0.592861354345157630,	0.592901618831448430,	0.592941881835485020,	0.592982143357167370,	
+0.593022403396394000,	0.593062661953064670,	0.593102919027078680,	0.593143174618335660,	0.593183428726734460,	0.593223681352174630,	0.593263932494555890,	0.593304182153777000,	
+0.593344430329737720,	0.593384677022337330,	0.593424922231475580,	0.593465165957051230,	0.593505408198963910,	0.593545648957113040,	0.593585888231398460,	0.593626126021718830,	
+0.593666362327973870,	0.593706597150062910,	0.593746830487885900,	0.593787062341341490,	0.593827292710329300,	0.593867521594748980,	0.593907748994500160,	0.593947974909481700,	
+0.593988199339593240,	0.594028422284734630,	0.594068643744804610,	0.594108863719702950,	0.594149082209329160,	0.594189299213583100,	0.594229514732363300,	0.594269728765569830,	
+0.594309941313102000,	0.594350152374859660,	0.594390361950741570,	0.594430570040647590,	0.594470776644477120,	0.594510981762130130,	0.594551185393505380,	0.594591387538502600,	
+0.594631588197021330,	0.594671787368961540,	0.594711985054221850,	0.594752181252702240,	0.594792375964302460,	0.594832569188921470,	0.594872760926459020,	0.594912951176814640,	
+0.594953139939888300,	0.594993327215578740,	0.595033513003785820,	0.595073697304409180,	0.595113880117348560,	0.595154061442502940,	0.595194241279772160,	0.595234419629055770,	
+0.595274596490253720,	0.595314771863264870,	0.595354945747988970,	0.595395118144325770,	0.595435289052175130,	0.595475458471435900,	0.595515626402008060,	0.595555792843791120,	
+0.595595957796685060,	0.595636121260588740,	0.595676283235402120,	0.595716443721025170,	0.595756602717356640,	0.595796760224296730,	0.595836916241744950,	0.595877070769601170,	
+0.595917223807764350,	0.595957375356134470,	0.595997525414611150,	0.596037673983094370,	0.596077821061483100,	0.596117966649677200,	0.596158110747576410,	0.596198253355080810,	
+0.596238394472089040,	0.596278534098501400,	0.596318672234217420,	0.596358808879137060,	0.596398944033159410,	0.596439077696184320,	0.596479209868111980,	0.596519340548841150,	
+0.596559469738272010,	0.596599597436304200,	0.596639723642837790,	0.596679848357771660,	0.596719971581005870,	0.596760093312440290,	0.596800213551974770,	0.596840332299508280,	
+0.596880449554941020,	0.596920565318172720,	0.596960679589103260,	0.597000792367631710,	0.597040903653658250,	0.597081013447082530,	0.597121121747804630,	0.597161228555723620,	
+0.597201333870739480,	0.597241437692752290,	0.597281540021661230,	0.597321640857366280,	0.597361740199767290,	0.597401838048764340,	0.597441934404256300,	0.597482029266143580,	
+0.597522122634325690,	0.597562214508702840,	0.597602304889174100,	0.597642393775639660,	0.597682481167999160,	0.597722567066152900,	0.597762651469999850,	0.597802734379440090,	
+0.597842815794373590,	0.597882895714700320,	0.597922974140319470,	0.597963051071131240,	0.598003126507035350,	0.598043200447932020,	0.598083272893720320,	0.598123343844300440,	
+0.598163413299572570,	0.598203481259435790,	0.598243547723790290,	0.598283612692535940,	0.598323676165572920,	0.598363738142800310,	0.598403798624118410,	0.598443857609427090,	
+0.598483915098626310,	0.598523971091615480,	0.598564025588294690,	0.598604078588563900,	0.598644130092323200,	0.598684180099471890,	0.598724228609910040,	0.598764275623537730,	
+0.598804321140254950,	0.598844365159961090,	0.598884407682556350,	0.598924448707940930,	0.598964488236014000,	0.599004526266675890,	0.599044562799826430,	0.599084597835365830,	
+0.599124631373193490,	0.599164663413209620,	0.599204693955313950,	0.599244722999407010,	0.599284750545387880,	0.599324776593156860,	0.599364801142613920,	0.599404824193659370,	
+0.599444845746192280,	0.599484865800113180,	0.599524884355321920,	0.599564901411718810,	0.599604916969203040,	0.599644931027674910,	0.599684943587034950,	0.599724954647182230,	
+0.599764964208017060,	0.599804972269439520,	0.599844978831349910,	0.599884983893647530,	0.599924987456232680,	0.599964989519005340,	0.600004990081865920,	0.600044989144713600,	
+0.600084986707448810,	0.600124982769971620,	0.600164977332182330,	0.600204970393980240,	0.600244961955265670,	0.600284952015938680,	0.600324940575899690,	0.600364927635048010,	
+0.600404913193284040,	0.600444897250507760,	0.600484879806619580,	0.600524860861518790,	0.600564840415105940,	0.600604818467281310,	0.600644795017944320,	0.600684770066995280,	
+0.600724743614334370,	0.600764715659861890,	0.600804686203477380,	0.600844655245081020,	0.600884622784573110,	0.600924588821853960,	0.600964553356822970,	0.601004516389380680,	
+0.601044477919427060,	0.601084437946862500,	0.601124396471586550,	0.601164353493499730,	0.601204309012501880,	0.601244263028493650,	0.601284215541374460,	0.601324166551044700,	
+0.601364116057404810,	0.601404064060354400,	0.601444010559793680,	0.601483955555623060,	0.601523899047742840,	0.601563841036052540,	0.601603781520452690,	0.601643720500843250,	
+0.601683657977124970,	0.601723593949197170,	0.601763528416960460,	0.601803461380314820,	0.601843392839160880,	0.601883322793398180,	0.601923251242927120,	0.601963178187648000,	
+0.602003103627461230,	0.602043027562266350,	0.602082949991963880,	0.602122870916454330,	0.602162790335637350,	0.602202708249413470,	0.602242624657682630,	0.602282539560345720,	
+0.602322452957302020,	0.602362364848452290,	0.602402275233696600,	0.602442184112935600,	0.602482091486068680,	0.602521997352996610,	0.602561901713619560,	0.602601804567838070,	
+0.602641705915551770,	0.602681605756661190,	0.602721504091066510,	0.602761400918668590,	0.602801296239366620,	0.602841190053061580,	0.602881082359653760,	0.602920973159043030,	
+0.602960862451129790,	0.603000750235814450,	0.603040636512997550,	0.603080521282578720,	0.603120404544458480,	0.603160286298537350,	0.603200166544715870,	0.603240045282893540,	
+0.603279922512971130,	0.603319798234848940,	0.603359672448427590,	0.603399545153606720,	0.603439416350286970,	0.603479286038368650,	0.603519154217752480,	0.603559020888338130,	
+0.603598886050026100,	0.603638749702717030,	0.603678611846311330,	0.603718472480708760,	0.603758331605810050,	0.603798189221515850,	0.603838045327725780,	0.603877899924340600,	
+0.603917753011260720,	0.603957604588386760,	0.603997454655618490,	0.604037303212856540,	0.604077150260001310,	0.604116995796953550,	0.604156839823613010,	0.604196682339880330,	
+0.604236523345656030,	0.604276362840840740,	0.604316200825334100,	0.604356037299037090,	0.604395872261849880,	0.604435705713673330,	0.604475537654407310,	0.604515368083952340,	
+0.604555197002209280,	0.604595024409077860,	0.604634850304458960,	0.604674674688252870,	0.604714497560360550,	0.604754318920681540,	0.604794138769116700,	0.604833957105566640,	
+0.604873773929931910,	0.604913589242112470,	0.604953403042009060,	0.604993215329522100,	0.605033026104552450,	0.605072835366999960,	0.605112643116765270,	0.605152449353749010,	
+0.605192254077852040,	0.605232057288974110,	0.605271858987015960,	0.605311659171878460,	0.605351457843461560,	0.605391255001666020,	0.605431050646392240,	0.605470844777541320,	
+0.605510637395012870,	0.605550428498707770,	0.605590218088526640,	0.605630006164370350,	0.605669792726138630,	0.605709577773732470,	0.605749361307052370,	0.605789143325999310,	
+0.605828923830472930,	0.605868702820374190,	0.605908480295603850,	0.605948256256062520,	0.605988030701650300,	0.606027803632267940,	0.606067575047816050,	0.606107344948195630,	
+0.606147113333306510,	0.606186880203049560,	0.606226645557325750,	0.606266409396035040,	0.606306171719078190,	0.606345932526356050,	0.606385691817769360,	0.606425449593218090,	
+0.606465205852603220,	0.606504960595825260,	0.606544713822785300,	0.606584465533383190,	0.606624215727520010,	0.606663964405096180,	0.606703711566012880,	0.606743457210169870,	
+0.606783201337468210,	0.606822943947808670,	0.606862685041091980,	0.606902424617218330,	0.606942162676088580,	0.606981899217603700,	0.607021634241663780,	0.607061367748169770,	
+0.607101099737022420,	0.607140830208122590,	0.607180559161370370,	0.607220286596666710,	0.607260012513912370,	0.607299736913008310,	0.607339459793854620,	0.607379181156352250,	
+0.607418901000401860,	0.607458619325904610,	0.607498336132760500,	0.607538051420870580,	0.607577765190135510,	0.607617477440456350,	0.607657188171733090,	0.607696897383866900,	
+0.607736605076758860,	0.607776311250308950,	0.607816015904418250,	0.607855719038987500,	0.607895420653917770,	0.607935120749109160,	0.607974819324462850,	0.608014516379879360,	
+0.608054211915259990,	0.608093905930504720,	0.608133598425514620,	0.608173289400190660,	0.608212978854433710,	0.608252666788144050,	0.608292353201222660,	0.608332038093570390,	
+0.608371721465088440,	0.608411403315676780,	0.608451083645236700,	0.608490762453669180,	0.608530439740874400,	0.608570115506753550,	0.608609789751207390,	0.608649462474137090,	
+0.608689133675442860,	0.608728803355025770,	0.608768471512786570,	0.608808138148626670,	0.608847803262446030,	0.608887466854145850,	0.608927128923626990,	0.608966789470790750,	
+0.609006448495537090,	0.609046105997767430,	0.609085761977382400,	0.609125416434283310,	0.609165069368370340,	0.609204720779544790,	0.609244370667707310,	0.609284019032759310,	
+0.609323665874600960,	0.609363311193133360,	0.609402954988257920,	0.609442597259874600,	0.609482238007884920,	0.609521877232189650,	0.609561514932689950,	0.609601151109286140,	
+0.609640785761879520,	0.609680418890370830,	0.609720050494661490,	0.609759680574651690,	0.609799309130242720,	0.609838936161335440,	0.609878561667831160,	0.609918185649630070,	
+0.609957808106633690,	0.609997429038742660,	0.610037048445858380,	0.610076666327881160,	0.610116282684712300,	0.610155897516253100,	0.610195510822403750,	0.610235122603065670,	
+0.610274732858139820,	0.610314341587527400,	0.610353948791128810,	0.610393554468845360,	0.610433158620578010,	0.610472761246228180,	0.610512362345696060,	0.610551961918882950,	
+0.610591559965690030,	0.610631156486018510,	0.610670751479768790,	0.610710344946842180,	0.610749936887139630,	0.610789527300562680,	0.610829116187011520,	0.610868703546387560,	
+0.610908289378592210,	0.610947873683525880,	0.610987456461089760,	0.611027037711185050,	0.611066617433713040,	0.611106195628574160,	0.611145772295669800,	0.611185347434900940,	
+0.611224921046169210,	0.611264493129374700,	0.611304063684419030,	0.611343632711203180,	0.611383200209628550,	0.611422766179595680,	0.611462330621005750,	0.611501893533760050,	
+0.611541454917760020,	0.611581014772905940,	0.611620573099099340,	0.611660129896241410,	0.611699685164233340,	0.611739238902975770,	0.611778791112370100,	0.611818341792317870,	
+0.611857890942719360,	0.611897438563476110,	0.611936984654489310,	0.611976529215660480,	0.612016072246889810,	0.612055613748079040,	0.612095153719129260,	0.612134692159941980,	
+0.612174229070417520,	0.612213764450457500,	0.612253298299963110,	0.612292830618835770,	0.612332361406976110,	0.612371890664285430,	0.612411418390665040,	0.612450944586016570,	
+0.612490469250240310,	0.612529992383237800,	0.612569513984910770,	0.612609034055159540,	0.612648552593885840,	0.612688069600990650,	0.612727585076375590,	0.612767099019941310,	
+0.612806611431589320,	0.612846122311220710,	0.612885631658737220,	0.612925139474039150,	0.612964645757028360,	0.613004150507605930,	0.613043653725673490,	0.613083155411131560,	
+0.613122655563881790,	0.613162154183825250,	0.613201651270863790,	0.613241146824897830,	0.613280640845829010,	0.613320133333558950,	0.613359624287988070,	0.613399113709018230,	
+0.613438601596550610,	0.613478087950486860,	0.613517572770727490,	0.613557056057174250,	0.613596537809728340,	0.613636018028291490,	0.613675496712764110,	0.613714973863048070,	
+0.613754449479044560,	0.613793923560655320,	0.613833396107780980,	0.613872867120323070,	0.613912336598183010,	0.613951804541262410,	0.613991270949461930,	0.614030735822683420,	
+0.614070199160828280,	0.614109660963797380,	0.614149121231492230,	0.614188579963814370,	0.614228037160665430,	0.614267492821945930,	0.614306946947557830,	0.614346399537402220,	
+0.614385850591381070,	0.614425300109394890,	0.614464748091345550,	0.614504194537134230,	0.614543639446662790,	0.614583082819831980,	0.614622524656543430,	0.614661964956698560,	
+0.614701403720199100,	0.614740840946945810,	0.614780276636840430,	0.614819710789784260,	0.614859143405679260,	0.614898574484426090,	0.614938004025926350,	0.614977432030082040,	
+0.615016858496793770,	0.615056283425963410,	0.615095706817492260,	0.615135128671282280,	0.615174548987234120,	0.615213967765249500,	0.615253385005230080,	0.615292800707077480,	
+0.615332214870692450,	0.615371627495976960,	0.615411038582832410,	0.615450448131160680,	0.615489856140862380,	0.615529262611839490,	0.615568667543993420,	0.615608070937226030,	
+0.615647472791438060,	0.615686873106531470,	0.615726271882408030,	0.615765669118968570,	0.615805064816114970,	0.615844458973748730,	0.615883851591771610,	0.615923242670084580,	
+0.615962632208589380,	0.616002020207187640,	0.616041406665781110,	0.616080791584270870,	0.616120174962558550,	0.616159556800545790,	0.616198937098134560,	0.616238315855225590,	
+0.616277693071720760,	0.616317068747521790,	0.616356442882530550,	0.616395815476647680,	0.616435186529775470,	0.616474556041815450,	0.616513924012668800,	0.616553290442237390,	
+0.616592655330422620,	0.616632018677126690,	0.616671380482250340,	0.616710740745695430,	0.616750099467363810,	0.616789456647157230,	0.616828812284976660,	0.616868166380723950,	
+0.616907518934300960,	0.616946869945609540,	0.616986219414550560,	0.617025567341025980,	0.617064913724937550,	0.617104258566187110,	0.617143601864675760,	0.617182943620305350,	
+0.617222283832977610,	0.617261622502594420,	0.617300959629056960,	0.617340295212267080,	0.617379629252126750,	0.617418961748537050,	0.617458292701399850,	0.617497622110616980,	
+0.617536949976090430,	0.617576276297721160,	0.617615601075411140,	0.617654924309062210,	0.617694245998576250,	0.617733566143854330,	0.617772884744798520,	0.617812201801310470,	
+0.617851517313292240,	0.617890831280644930,	0.617930143703270480,	0.617969454581070780,	0.618008763913947660,	0.618048071701802430,	0.618087377944536830,	0.618126682642053280,	
+0.618165985794252640,	0.618205287401037080,	0.618244587462308150,	0.618283885977968240,	0.618323182947918220,	0.618362478372060260,	0.618401772250296130,	0.618441064582527900,	
+0.618480355368656640,	0.618519644608584440,	0.618558932302213260,	0.618598218449444960,	0.618637503050180840,	0.618676786104322970,	0.618716067611773110,	0.618755347572433450,	
+0.618794625986205050,	0.618833902852990110,	0.618873178172690720,	0.618912451945208050,	0.618951724170444310,	0.618990994848301220,	0.619030263978680990,	0.619069531561484700,	
+0.619108797596614640,	0.619148062083972550,	0.619187325023460740,	0.619226586414980180,	0.619265846258433170,	0.619305104553721560,	0.619344361300747550,	0.619383616499412320,	
+0.619422870149617940,	0.619462122251266400,	0.619501372804259990,	0.619540621808499780,	0.619579869263887970,	0.619619115170326860,	0.619658359527717640,	0.619697602335962490,	
+0.619736843594963280,	0.619776083304622420,	0.619815321464840970,	0.619854558075521140,	0.619893793136565010,	0.619933026647874750,	0.619972258609351570,	0.620011489020897640,	
+0.620050717882415060,	0.620089945193806000,	0.620129170954971780,	0.620168395165814680,	0.620207617826236460,	0.620246838936139630,	0.620286058495425400,	0.620325276503995940,	
+0.620364492961753330,	0.620403707868599770,	0.620442921224436670,	0.620482133029166220,	0.620521343282690820,	0.620560551984911670,	0.620599759135731180,	0.620638964735051200,	
+0.620678168782774260,	0.620717371278801560,	0.620756572223035370,	0.620795771615377800,	0.620834969455731130,	0.620874165743996680,	0.620913360480076840,	0.620952553663873590,	
+0.620991745295289220,	0.621030935374225270,	0.621070123900583910,	0.621109310874267240,	0.621148496295177650,	0.621187680163216460,	0.621226862478286180,	0.621266043240289000,	
+0.621305222449126340,	0.621344400104700600,	0.621383576206913980,	0.621422750755668660,	0.621461923750866170,	0.621501095192408810,	0.621540265080198770,	0.621579433414138350,	
+0.621618600194129070,	0.621657765420073340,	0.621696929091873020,	0.621736091209430850,	0.621775251772648140,	0.621814410781427180,	0.621853568235670280,	0.621892724135279850,	
+0.621931878480157190,	0.621971031270204810,	0.622010182505325250,	0.622049332185419910,	0.622088480310391210,	0.622127626880141230,	0.622166771894572590,	0.622205915353586710,	
+0.622245057257086010,	0.622284197604972670,	0.622323336397149210,	0.622362473633517040,	0.622401609313978700,	0.622440743438436250,	0.622479876006792440,	0.622519007018948470,	
+0.622558136474807070,	0.622597264374270210,	0.622636390717240640,	0.622675515503619770,	0.622714638733310010,	0.622753760406213660,	0.622792880522233360,	0.622831999081270400,	
+0.622871116083227540,	0.622910231528007170,	0.622949345415510950,	0.622988457745641270,	0.623027568518300550,	0.623066677733391190,	0.623105785390814740,	0.623144891490473920,	
+0.623183996032270810,	0.623223099016108060,	0.623262200441887290,	0.623301300309510920,	0.623340398618881350,	0.623379495369901120,	0.623418590562471840,	0.623457684196496050,	
+0.623496776271876050,	0.623535866788514470,	0.623574955746312830,	0.623614043145173880,	0.623653128985000140,	0.623692213265693130,	0.623731295987155710,	0.623770377149290070,	
+0.623809456751998730,	0.623848534795183430,	0.623887611278746810,	0.623926686202591170,	0.623965759566619150,	0.624004831370732480,	0.624043901614833580,	0.624082970298824980,	
+0.624122037422609300,	0.624161102986088290,	0.624200166989164360,	0.624239229431740040,	0.624278290313718070,	0.624317349634999960,	0.624356407395488590,	0.624395463595086350,	
+0.624434518233695330,	0.624473571311217830,	0.624512622827556490,	0.624551672782613920,	0.624590721176291890,	0.624629768008492900,	0.624668813279119610,	0.624707856988074630,	
+0.624746899135259600,	0.624785939720577390,	0.624824978743930280,	0.624864016205221140,	0.624903052104351600,	0.624942086441224400,	0.624981119215741950,	0.625020150427807120,	
+0.625059180077321530,	0.625098208164187930,	0.625137234688309170,	0.625176259649587120,	0.625215283047924290,	0.625254304883223310,	0.625293325155386830,	0.625332343864316800,	
+0.625371361009915860,	0.625410376592086540,	0.625449390610731570,	0.625488403065752820,	0.625527413957053020,	0.625566423284534710,	0.625605431048100740,	0.625644437247652840,	
+0.625683441883093770,	0.625722444954326160,	0.625761446461252760,	0.625800446403775410,	0.625839444781796870,	0.625878441595219770,	0.625917436843946960,	0.625956430527880190,	
+0.625995422646922320,	0.626034413200976300,	0.626073402189943780,	0.626112389613727840,	0.626151375472230990,	0.626190359765355970,	0.626229342493004660,	0.626268323655080010,	
+0.626307303251484540,	0.626346281282121220,	0.626385257746891910,	0.626424232645699350,	0.626463205978446180,	0.626502177745035470,	0.626541147945368860,	0.626580116579349420,	
+0.626619083646879680,	0.626658049147862610,	0.626697013082200050,	0.626735975449794980,	0.626774936250550250,	0.626813895484367830,	0.626852853151150800,	0.626891809250801460,	
+0.626930763783223100,	0.626969716748317360,	0.627008668145987440,	0.627047617976135840,	0.627086566238665430,	0.627125512933478290,	0.627164458060477490,	0.627203401619565450,	
+0.627242343610645240,	0.627281284033618820,	0.627320222888389290,	0.627359160174859150,	0.627398095892931380,	0.627437030042508060,	0.627475962623492260,	0.627514893635786830,	
+0.627553823079293750,	0.627592750953916200,	0.627631677259556820,	0.627670601996118460,	0.627709525163503310,	0.627748446761614340,	0.627787366790354300,	0.627826285249626140,	
+0.627865202139331950,	0.627904117459374800,	0.627943031209657220,	0.627981943390082510,	0.628020854000552630,	0.628059763040970550,	0.628098670511239020,	0.628137576411261220,	
+0.628176480740939120,	0.628215383500175810,	0.628254284688874120,	0.628293184306937040,	0.628332082354266520,	0.628370978830765870,	0.628409873736338160,	0.628448767070885370,	
+0.628487658834310790,	0.628526549026516950,	0.628565437647407020,	0.628604324696883320,	0.628643210174848700,	0.628682094081206010,	0.628720976415858560,	0.628759857178708190,	
+0.628798736369658330,	0.628837613988611490,	0.628876490035470970,	0.628915364510138960,	0.628954237412518550,	0.628993108742512460,	0.629031978500024010,	0.629070846684955160,	
+0.629109713297209330,	0.629148578336689470,	0.629187441803297890,	0.629226303696937660,	0.629265164017511760,	0.629304022764923140,	0.629342879939074230,	0.629381735539868090,	
+0.629420589567207590,	0.629459442020996020,	0.629498292901135460,	0.629537142207529100,	0.629575989940080020,	0.629614836098691180,	0.629653680683264990,	0.629692523693704540,	
+0.629731365129912900,	0.629770204991793040,	0.629809043279247470,	0.629847879992179170,	0.629886715130491550,	0.629925548694086790,	0.629964380682868200,	0.630003211096738620,	
+0.630042039935601370,	0.630080867199358740,	0.630119692887913920,	0.630158517001169760,	0.630197339539029790,	0.630236160501395970,	0.630274979888171830,	0.630313797699260330,	
+0.630352613934564540,	0.630391428593986890,	0.630430241677430780,	0.630469053184798960,	0.630507863115994940,	0.630546671470920810,	0.630585478249480080,	0.630624283451575950,	
+0.630663087077110830,	0.630701889125987900,	0.630740689598110360,	0.630779488493381390,	0.630818285811703290,	0.630857081552979590,	0.630895875717113140,	0.630934668304007350,	
+0.630973459313564520,	0.631012248745688060,	0.631051036600280950,	0.631089822877246580,	0.631128607576487370,	0.631167390697906620,	0.631206172241407400,	0.631244952206893030,	
+0.631283730594266010,	0.631322507403429660,	0.631361282634287040,	0.631400056286741560,	0.631438828360695540,	0.631477598856052480,	0.631516367772715800,	0.631555135110587810,	
+0.631593900869572010,	0.631632665049571500,	0.631671427650489560,	0.631710188672228830,	0.631748948114692510,	0.631787705977783890,	0.631826462261406370,	0.631865216965462270,	
+0.631903970089855220,	0.631942721634488170,	0.631981471599264770,	0.632020219984087190,	0.632058966788859200,	0.632097712013483750,	0.632136455657864360,	0.632175197721903450,	
+0.632213938205504530,	0.632252677108571250,	0.632291414431005780,	0.632330150172711880,	0.632368884333592510,	0.632407616913551300,	0.632446347912490770,	0.632485077330314230,	
+0.632523805166925080,	0.632562531422226850,	0.632601256096121830,	0.632639979188513670,	0.632678700699305650,	0.632717420628401190,	0.632756138975702820,	0.632794855741114050,	
+0.632833570924538180,	0.632872284525878740,	0.632910996545038240,	0.632949706981920320,	0.632988415836428400,	0.633027123108465100,	0.633065828797934050,	0.633104532904738340,	
+0.633143235428781700,	0.633181936369966560,	0.633220635728196650,	0.633259333503375150,	0.633298029695405610,	0.633336724304190630,	0.633375417329633980,	0.633414108771638620,	
+0.633452798630108390,	0.633491486904945830,	0.633530173596054570,	0.633568858703337900,	0.633607542226699350,	0.633646224166041660,	0.633684904521268470,	0.633723583292282950,	
+0.633762260478988760,	0.633800936081288620,	0.633839610099086180,	0.633878282532285060,	0.633916953380787800,	0.633955622644498230,	0.633994290323319550,	0.634032956417155510,	
+0.634071620925908740,	0.634110283849482980,	0.634148945187781420,	0.634187604940707920,	0.634226263108164990,	0.634264919690056490,	0.634303574686285620,	0.634342228096756220,	
+0.634380879921370820,	0.634419530160033270,	0.634458178812646880,	0.634496825879115380,	0.634535471359341520,	0.634574115253228930,	0.634612757560681360,	0.634651398281601660,	
+0.634690037415893360,	0.634728674963460080,	0.634767310924205350,	0.634805945298032030,	0.634844578084843960,	0.634883209284544340,	0.634921838897037020,	0.634960466922224740,	
+0.634999093360011370,	0.635037718210300190,	0.635076341472995190,	0.635114963147998870,	0.635153583235215200,	0.635192201734547490,	0.635230818645899700,	0.635269433969174570,	
+0.635308047704275740,	0.635346659851107170,	0.635385270409571600,	0.635423879379572900,	0.635462486761014470,	0.635501092553800160,	0.635539696757832840,	0.635578299373016240,	
+0.635616900399253780,	0.635655499836449530,	0.635694097684506240,	0.635732693943327650,	0.635771288612817290,	0.635809881692879000,	0.635848473183415750,	0.635887063084331290,	
+0.635925651395529260,	0.635964238116913380,	0.636002823248386530,	0.636041406789852660,	0.636079988741215630,	0.636118569102378180,	0.636157147873244400,	0.636195725053717690,	
+0.636234300643702120,	0.636272874643100340,	0.636311447051816410,	0.636350017869753870,	0.636388587096816670,	0.636427154732907670,	0.636465720777930730,	0.636504285231789480,	
+0.636542848094387880,	0.636581409365628790,	0.636619969045416180,	0.636658527133653670,	0.636697083630245240,	0.636735638535093740,	0.636774191848103020,	0.636812743569176940,	
+0.636851293698219360,	0.636889842235133120,	0.636928389179822310,	0.636966934532190890,	0.637005478292141710,	0.637044020459578970,	0.637082561034406080,	0.637121100016527110,	
+0.637159637405845140,	0.637198173202264020,	0.637236707405687500,	0.637275240016019540,	0.637313771033163110,	0.637352300457022290,	0.637390828287500710,	0.637429354524502330,	
+0.637467879167930350,	0.637506402217688510,	0.637544923673680760,	0.637583443535811090,	0.637621961803982450,	0.637660478478098810,	0.637698993558064480,	0.637737507043782180,	
+0.637776018935156230,	0.637814529232090140,	0.637853037934488110,	0.637891545042253090,	0.637930050555289290,	0.637968554473500320,	0.638007056796790260,	0.638045557525062310,	
+0.638084056658220430,	0.638122554196168370,	0.638161050138810300,	0.638199544486049210,	0.638238037237789380,	0.638276528393934340,	0.638315017954388390,	0.638353505919054490,	
+0.638391992287836940,	0.638430477060639600,	0.638468960237365880,	0.638507441817919630,	0.638545921802204820,	0.638584400190125520,	0.638622876981584930,	0.638661352176487120,	
+0.638699825774735940,	0.638738297776235590,	0.638776768180889130,	0.638815236988600650,	0.638853704199274230,	0.638892169812813830,	0.638930633829122630,	0.638969096248104830,	
+0.639007557069664280,	0.639046016293705280,	0.639084473920130790,	0.639122929948845230,	0.639161384379752230,	0.639199837212756190,	0.639238288447760210,	0.639276738084668450,	
+0.639315186123385230,	0.639353632563813720,	0.639392077405858130,	0.639430520649422300,	0.639468962294410530,	0.639507402340726010,	0.639545840788272920,	0.639584277636955360,	
+0.639622712886677380,	0.639661146537342300,	0.639699578588854290,	0.639738009041117440,	0.639776437894035820,	0.639814865147512850,	0.639853290801452590,	0.639891714855759240,	
+0.639930137310336880,	0.639968558165088800,	0.640006977419919300,	0.640045395074732790,	0.640083811129432470,	0.640122225583922510,	0.640160638438107110,	0.640199049691890340,	
+0.640237459345175730,	0.640275867397867350,	0.640314273849869390,	0.640352678701086030,	0.640391081951420690,	0.640429483600777560,	0.640467883649060710,	0.640506282096174660,	
+0.640544678942022380,	0.640583074186508510,	0.640621467829536880,	0.640659859871012040,	0.640698250310837050,	0.640736639148916540,	0.640775026385154820,	0.640813412019455080,	
+0.640851796051721820,	0.640890178481859140,	0.640928559309771330,	0.640966938535361800,	0.641005316158534840,	0.641043692179194660,	0.641082066597245650,	0.641120439412591000,	
+0.641158810625135360,	0.641197180234782560,	0.641235548241437250,	0.641273914645002720,	0.641312279445383380,	0.641350642642483430,	0.641389004236207150,	0.641427364226457960,	
+0.641465722613140390,	0.641504079396158940,	0.641542434575416820,	0.641580788150818760,	0.641619140122268620,	0.641657490489671020,	0.641695839252929280,	0.641734186411948020,	
+0.641772531966631310,	0.641810875916883570,	0.641849218262608320,	0.641887559003709970,	0.641925898140092820,	0.641964235671661170,	0.642002571598318640,	0.642040905919969650,	
+0.642079238636518390,	0.642117569747869490,	0.642155899253926240,	0.642194227154593180,	0.642232553449774590,	0.642270878139375000,	0.642309201223297820,	0.642347522701447680,	
+0.642385842573729100,	0.642424160840045500,	0.642462477500301610,	0.642500792554401400,	0.642539106002249620,	0.642577417843749670,	0.642615728078806290,	0.642654036707323460,	
+0.642692343729205920,	0.642730649144357290,	0.642768952952681880,	0.642807255154084210,	0.642845555748468690,	0.642883854735738950,	0.642922152115799510,	0.642960447888554780,	
+0.642998742053909170,	0.643037034611766420,	0.643075325562031170,	0.643113614904607830,	0.643151902639400140,	0.643190188766312730,	0.643228473285249790,	0.643266756196116060,	
+0.643305037498815070,	0.643343317193251550,	0.643381595279329700,	0.643419871756954140,	0.643458146626028630,	0.643496419886457780,	0.643534691538145800,	0.643572961580997420,	
+0.643611230014916380,	0.643649496839807210,	0.643687762055574320,	0.643726025662122340,	0.643764287659355010,	0.643802548047176960,	0.643840806825492830,	0.643879063994206360,	
+0.643917319553222180,	0.643955573502444810,	0.643993825841778780,	0.644032076571127820,	0.644070325690396680,	0.644108573199489780,	0.644146819098311730,	0.644185063386766400,	
+0.644223306064758310,	0.644261547132191970,	0.644299786588972130,	0.644338024435002430,	0.644376260670187720,	0.644414495294432290,	0.644452728307641000,	0.644490959709717590,	
+0.644529189500566810,	0.644567417680092960,	0.644605644248200990,	0.644643869204794440,	0.644682092549778370,	0.644720314283057320,	0.644758534404535230,	0.644796752914116640,	
+0.644834969811706290,	0.644873185097208920,	0.644911398770528050,	0.644949610831568880,	0.644987821280235570,	0.645026030116433110,	0.645064237340065130,	0.645102442951036690,	
+0.645140646949252110,	0.645178849334616220,	0.645217050107032790,	0.645255249266406870,	0.645293446812642780,	0.645331642745645360,	0.645369837065318590,	0.645408029771567190,	
+0.645446220864296040,	0.645484410343408980,	0.645522598208810860,	0.645560784460406320,	0.645598969098100220,	0.645637152121796290,	0.645675333531399390,	0.645713513326814260,	
+0.645751691507945650,	0.645789868074697520,	0.645828043026974720,	0.645866216364681670,	0.645904388087723550,	0.645942558196004100,	0.645980726689428300,	0.646018893567900650,	
+0.646057058831326030,	0.646095222479608490,	0.646133384512652900,	0.646171544930364220,	0.646209703732646300,	0.646247860919404000,	0.646286016490542180,	0.646324170445965680,	
+0.646362322785578370,	0.646400473509285310,	0.646438622616991030,	0.646476770108600500,	0.646514915984017670,	0.646553060243147630,	0.646591202885894890,	0.646629343912164530,	
+0.646667483321860530,	0.646705621114887720,	0.646743757291150860,	0.646781891850555010,	0.646820024793004040,	0.646858156118403030,	0.646896285826656590,	0.646934413917669810,	
+0.646972540391346660,	0.647010665247592100,	0.647048788486311200,	0.647086910107408150,	0.647125030110787700,	0.647163148496354700,	0.647201265264014220,	0.647239380413670130,	
+0.647277493945227710,	0.647315605858591490,	0.647353716153666550,	0.647391824830357070,	0.647429931888567900,	0.647468037328204020,	0.647506141149170380,	0.647544243351371060,	
+0.647582343934711040,	0.647620442899095260,	0.647658540244428590,	0.647696635970615330,	0.647734730077560440,	0.647772822565169100,	0.647810913433345400,	0.647849002681994300,	
+0.647887090311020760,	0.647925176320329870,	0.647963260709825680,	0.648001343479413290,	0.648039424628997550,	0.648077504158483640,	0.648115582067775640,	0.648153658356778630,	
+0.648191733025397450,	0.648229806073537420,	0.648267877501102370,	0.648305947307997730,	0.648344015494128120,	0.648382082059398850,	0.648420147003714090,	0.648458210326978920,	
+0.648496272029098650,	0.648534332109977240,	0.648572390569520100,	0.648610447407631850,	0.648648502624217920,	0.648686556219182360,	0.648724608192430500,	0.648762658543867050,	
+0.648800707273397230,	0.648838754380925420,	0.648876799866356600,	0.648914843729595850,	0.648952885970548340,	0.648990926589118280,	0.649028965585210840,	0.649067002958731100,	
+0.649105038709584140,	0.649143072837674250,	0.649181105342906630,	0.649219136225186570,	0.649257165484418360,	0.649295193120507320,	0.649333219133358170,	0.649371243522876450,	
+0.649409266288966220,	0.649447287431532790,	0.649485306950481120,	0.649523324845716620,	0.649561341117143360,	0.649599355764666760,	0.649637368788191890,	0.649675380187623830,	
+0.649713389962866980,	0.649751398113826650,	0.649789404640407910,	0.649827409542515940,	0.649865412820055170,	0.649903414472930760,	0.649941414501047920,	0.649979412904311830,	
+0.650017409682626780,	0.650055404835898300,	0.650093398364031680,	0.650131390266931230,	0.650169380544502240,	0.650207369196649790,	0.650245356223279280,	0.650283341624295020,	
+0.650321325399602520,	0.650359307549106540,	0.650397288072712800,	0.650435266970325390,	0.650473244241849820,	0.650511219887191180,	0.650549193906254760,	0.650587166298945090,	
+0.650625137065167450,	0.650663106204827040,	0.650701073717829150,	0.650739039604078200,	0.650777003863479700,	0.650814966495939060,	0.650852927501360590,	0.650890886879649910,	
+0.650928844630711880,	0.650966800754452120,	0.651004755250775060,	0.651042708119586090,	0.651080659360790400,	0.651118608974293300,	0.651156556959999410,	0.651194503317814140,	
+0.651232448047642580,	0.651270391149390230,	0.651308332622961620,	0.651346272468262160,	0.651384210685197030,	0.651422147273671650,	0.651460082233590530,	0.651498015564859310,	
+0.651535947267383290,	0.651573877341067200,	0.651611805785816230,	0.651649732601535910,	0.651687657788131540,	0.651725581345507730,	0.651763503273569910,	0.651801423572223370,	
+0.651839342241373520,	0.651877259280925100,	0.651915174690783420,	0.651953088470853870,	0.651991000621041980,	0.652028911141252170,	0.652066820031390050,	0.652104727291360930,	
+0.652142632921070440,	0.652180536920422880,	0.652218439289323990,	0.652256340027679070,	0.652294239135393640,	0.652332136612372220,	0.652370032458520430,	0.652407926673744030,	
+0.652445819257947420,	0.652483710211036130,	0.652521599532915660,	0.652559487223491660,	0.652597373282668420,	0.652635257710351800,	0.652673140506447090,	0.652711021670859810,	
+0.652748901203494600,	0.652786779104257200,	0.652824655373052900,	0.652862530009787220,	0.652900403014364920,	0.652938274386691610,	0.652976144126672600,	0.653014012234213510,	
+0.653051878709219100,	0.653089743551594990,	0.653127606761246930,	0.653165468338079420,	0.653203328281998340,	0.653241186592908860,	0.653279043270716730,	0.653316898315326690,	
+0.653354751726644480,	0.653392603504575290,	0.653430453649024970,	0.653468302159898150,	0.653506149037100580,	0.653543994280537670,	0.653581837890115040,	0.653619679865737550,	
+0.653657520207310830,	0.653695358914740290,	0.653733195987931780,	0.653771031426789830,	0.653808865231220390,	0.653846697401129110,	0.653884527936420710,	0.653922356837000950,	
+0.653960184102775340,	0.653998009733649630,	0.654035833729528560,	0.654073656090317980,	0.654111476815923080,	0.654149295906249930,	0.654187113361203280,	0.654224929180688750,	
+0.654262743364611880,	0.654300555912878500,	0.654338366825393480,	0.654376176102062450,	0.654413983742791030,	0.654451789747484970,	0.654489594116049120,	0.654527396848389230,	
+0.654565197944411150,	0.654602997404019840,	0.654640795227121040,	0.654678591413620170,	0.654716385963423190,	0.654754178876434940,	0.654791970152561190,	0.654829759791707540,	
+0.654867547793779870,	0.654905334158682910,	0.654943118886322730,	0.654980901976604630,	0.655018683429434700,	0.655056463244717670,	0.655094241422359500,	0.655132017962265830,	
+0.655169792864342290,	0.655207566128494070,	0.655245337754626790,	0.655283107742646200,	0.655320876092458260,	0.655358642803967720,	0.655396407877080640,	0.655434171311702900,	
+0.655471933107739320,	0.655509693265095890,	0.655547451783678240,	0.655585208663392320,	0.655622963904143100,	0.655660717505836320,	0.655698469468377840,	0.655736219791673510,	
+0.655773968475628300,	0.655811715520148280,	0.655849460925138850,	0.655887204690506100,	0.655924946816154990,	0.655962687301991590,	0.656000426147921420,	0.656038163353850460,	
+0.656075898919683880,	0.656113632845327530,	0.656151365130687390,	0.656189095775668530,	0.656226824780176910,	0.656264552144118160,	0.656302277867398480,	0.656340001949922700,	
+0.656377724391596920,	0.656415445192326860,	0.656453164352018610,	0.656490881870576910,	0.656528597747908170,	0.656566311983917910,	0.656604024578512190,	0.656641735531595990,	
+0.656679444843075500,	0.656717152512856450,	0.656754858540844810,	0.656792562926945770,	0.656830265671065280,	0.656867966773109440,	0.656905666232983300,	0.656943364050593060,	
+0.656981060225844350,	0.657018754758643350,	0.657056447648895150,	0.657094138896505810,	0.657131828501381190,	0.657169516463427250,	0.657207202782549290,	0.657244887458653170,	
+0.657282570491644960,	0.657320251881430620,	0.657357931627915230,	0.657395609731005190,	0.657433286190605930,	0.657470961006623940,	0.657508634178964100,	0.657546305707532810,	
+0.657583975592235690,	0.657621643832978940,	0.657659310429667740,	0.657696975382208280,	0.657734638690506750,	0.657772300354468210,	0.657809960373998970,	0.657847618749004880,	
+0.657885275479392020,	0.657922930565065570,	0.657960584005931940,	0.657998235801896760,	0.658035885952866330,	0.658073534458745830,	0.658111181319441570,	0.658148826534859290,	
+0.658186470104905390,	0.658224112029484830,	0.658261752308504030,	0.658299390941868960,	0.658337027929485560,	0.658374663271259370,	0.658412296967096580,	0.658449929016903250,	
+0.658487559420584900,	0.658525188178047500,	0.658562815289197250,	0.658600440753940310,	0.658638064572181770,	0.658675686743828260,	0.658713307268785410,	0.658750926146959740,	
+0.658788543378256320,	0.658826158962581570,	0.658863772899841440,	0.658901385189942120,	0.658938995832789140,	0.658976604828288570,	0.659014212176346480,	0.659051817876869280,	
+0.659089421929762160,	0.659127024334931530,	0.659164625092283570,	0.659202224201723810,	0.659239821663158420,	0.659277417476493600,	0.659315011641635420,	0.659352604158489400,	
+0.659390195026961940,	0.659427784246959030,	0.659465371818386830,	0.659502957741150970,	0.659540542015157770,	0.659578124640313180,	0.659615705616523500,	0.659653284943694350,	
+0.659690862621731930,	0.659728438650542430,	0.659766013030032020,	0.659803585760106340,	0.659841156840671680,	0.659878726271634570,	0.659916294052900200,	0.659953860184375070,	
+0.659991424665965280,	0.660028987497577320,	0.660066548679116630,	0.660104108210489480,	0.660141666091601960,	0.660179222322360810,	0.660216776902671110,	0.660254329832439590,	
+0.660291881111572110,	0.660329430739975410,	0.660366978717554680,	0.660404525044216540,	0.660442069719867190,	0.660479612744412910,	0.660517154117759240,	0.660554693839812690,	
+0.660592231910479440,	0.660629768329665910,	0.660667303097277610,	0.660704836213221180,	0.660742367677402910,	0.660779897489728320,	0.660817425650104040,	0.660854952158436260,	
+0.660892477014631390,	0.660930000218594940,	0.660967521770233550,	0.661005041669453290,	0.661042559916160790,	0.661080076510261570,	0.661117591451662160,	0.661155104740268840,	
+0.661192616375988030,	0.661230126358725360,	0.661267634688387340,	0.661305141364880170,	0.661342646388110580,	0.661380149757984090,	0.661417651474407120,	0.661455151537286400,	
+0.661492649946527460,	0.661530146702036910,	0.661567641803720960,	0.661605135251486230,	0.661642627045238350,	0.661680117184883950,	0.661717605670329220,	0.661755092501480790,	
+0.661792577678244290,	0.661830061200526340,	0.661867543068233370,	0.661905023281271650,	0.661942501839547280,	0.661979978742966440,	0.662017453991435740,	0.662054927584861840,	
+0.662092399523150130,	0.662129869806207470,	0.662167338433940600,	0.662204805406254930,	0.662242270723057190,	0.662279734384253800,	0.662317196389751510,	0.662354656739455820,	
+0.662392115433273480,	0.662429572471110890,	0.662467027852874700,	0.662504481578470640,	0.662541933647805230,	0.662579384060785090,	0.662616832817316870,	0.662654279917306190,	
+0.662691725360659790,	0.662729169147284080,	0.662766611277085800,	0.662804051749970700,	0.662841490565845400,	0.662878927724616320,	0.662916363226190410,	0.662953797070473190,	
+0.662991229257371420,	0.663028659786791930,	0.663066088658640580,	0.663103515872823900,	0.663140941429248400,	0.663178365327820930,	0.663215787568447230,	0.663253208151034060,	
+0.663290627075487800,	0.663328044341715330,	0.663365459949622480,	0.663402873899115900,	0.663440286190102200,	0.663477696822488140,	0.663515105796179450,	0.663552513111082990,	
+0.663589918767105270,	0.663627322764153040,	0.663664725102132260,	0.663702125780949560,	0.663739524800512020,	0.663776922160725260,	0.663814317861496140,	0.663851711902731290,	
+0.663889104284337450,	0.663926495006220590,	0.663963884068287440,	0.664001271470444520,	0.664038657212598920,	0.664076041294656140,	0.664113423716523380,	0.664150804478107040,	
+0.664188183579314080,	0.664225561020050260,	0.664262936800222530,	0.664300310919737510,	0.664337683378501960,	0.664375054176421950,	0.664412423313404330,	0.664449790789355950,	
+0.664487156604182670,	0.664524520757791670,	0.664561883250089250,	0.664599244080982480,	0.664636603250377210,	0.664673960758180530,	0.664711316604298940,	0.664748670788639310,	
+0.664786023311107700,	0.664823374171611080,	0.664860723370055970,	0.664898070906349450,	0.664935416780397360,	0.664972760992106780,	0.665010103541384230,	0.665047444428136790,	
+0.665084783652270420,	0.665122121213692070,	0.665159457112308730,	0.665196791348026450,	0.665234123920752210,	0.665271454830392630,	0.665308784076854790,	0.665346111660044540,	
+0.665383437579869170,	0.665420761836235110,	0.665458084429049520,	0.665495405358218270,	0.665532724623648650,	0.665570042225247180,	0.665607358162920940,	0.665644672436575880,	
+0.665681985046119310,	0.665719295991457630,	0.665756605272498140,	0.665793912889146800,	0.665831218841310580,	0.665868523128896330,	0.665905825751811230,	0.665943126709961140,	
+0.665980426003253250,	0.666017723631594620,	0.666055019594891330,	0.666092313893050570,	0.666129606525978970,	0.666166897493583600,	0.666204186795770760,	0.666241474432447410,	
+0.666278760403520410,	0.666316044708896830,	0.666353327348482850,	0.666390608322185440,	0.666427887629911670,	0.666465165271568400,	0.666502441247061930,	0.666539715556299320,	
+0.666576988199187430,	0.666614259175633330,	0.666651528485543430,	0.666688796128824590,	0.666726062105384100,	0.666763326415128140,	0.666800589057963800,	0.666837850033798030,	
+0.666875109342538020,	0.666912366984089840,	0.666949622958360800,	0.666986877265257630,	0.667024129904687620,	0.667061380876557090,	0.667098630180772870,	0.667135877817242260,	
+0.667173123785872240,	0.667210368086569080,	0.667247610719239990,	0.667284851683791810,	0.667322090980131840,	0.667359328608166380,	0.667396564567802610,	0.667433798858947710,	
+0.667471031481507990,	0.667508262435390740,	0.667545491720502810,	0.667582719336751510,	0.667619945284043000,	0.667657169562284710,	0.667694392171383380,	0.667731613111246510,	
+0.667768832381780310,	0.667806049982891950,	0.667843265914488390,	0.667880480176477050,	0.667917692768764340,	0.667954903691257210,	0.667992112943862850,	0.668029320526488670,	
+0.668066526439040740,	0.668103730681426480,	0.668140933253552950,	0.668178134155327340,	0.668215333386656170,	0.668252530947446630,	0.668289726837606010,	0.668326921057040830,	
+0.668364113605658390,	0.668401304483365540,	0.668438493690069800,	0.668475681225677580,	0.668512867090096050,	0.668550051283232420,	0.668587233804993960,	0.668624414655287100,	
+0.668661593834019240,	0.668698771341097340,	0.668735947176428920,	0.668773121339920170,	0.668810293831478720,	0.668847464651011530,	0.668884633798426000,	0.668921801273628550,	
+0.668958967076526580,	0.668996131207027500,	0.669033293665037830,	0.669070454450464870,	0.669107613563215800,	0.669144771003198020,	0.669181926770317960,	0.669219080864483120,	
+0.669256233285600580,	0.669293384033577740,	0.669330533108321140,	0.669367680509738160,	0.669404826237736120,	0.669441970292222190,	0.669479112673103120,	0.669516253380286200,	
+0.669553392413678620,	0.669590529773188000,	0.669627665458720660,	0.669664799470184090,	0.669701931807485940,	0.669739062470532610,	0.669776191459231620,	0.669813318773490150,	
+0.669850444413215730,	0.669887568378314870,	0.669924690668695090,	0.669961811284263580,	0.669998930224927850,	0.670036047490594420,	0.670073163081170930,	0.670110276996564560,	
+0.670147389236682820,	0.670184499801432240,	0.670221608690720450,	0.670258715904454630,	0.670295821442542290,	0.670332925304890080,	0.670370027491405620,	0.670407128001996420,	
+0.670444226836569010,	0.670481323995031130,	0.670518419477289850,	0.670555513283252800,	0.670592605412826730,	0.670629695865919140,	0.670666784642437340,	0.670703871742288850,	
+0.670740957165380400,	0.670778040911619520,	0.670815122980913610,	0.670852203373170090,	0.670889282088295790,	0.670926359126198360,	0.670963434486784970,	0.671000508169963260,	
+0.671037580175640080,	0.671074650503722840,	0.671111719154119050,	0.671148786126736230,	0.671185851421481130,	0.671222915038261370,	0.671259976976984700,	0.671297037237557850,	
+0.671334095819888230,	0.671371152723883480,	0.671408207949451220,	0.671445261496497970,	0.671482313364931690,	0.671519363554659580,	0.671556412065589360,	0.671593458897627780,	
+0.671630504050682590,	0.671667547524661180,	0.671704589319471190,	0.671741629435019360,	0.671778667871213540,	0.671815704627960920,	0.671852739705169450,	0.671889773102745890,	
+0.671926804820597750,	0.671963834858632980,	0.672000863216758340,	0.672037889894881450,	0.672074914892909940,	0.672111938210751440,	0.672148959848312690,	0.672185979805501650,	
+0.672222998082225520,	0.672260014678392360,	0.672297029593908800,	0.672334042828682590,	0.672371054382621350,	0.672408064255632820,	0.672445072447623750,	0.672482078958501980,	
+0.672519083788175040,	0.672556086936550780,	0.672593088403535930,	0.672630088189038360,	0.672667086292965900,	0.672704082715225300,	0.672741077455724650,	0.672778070514371220,	
+0.672815061891072990,	0.672852051585736800,	0.672889039598270400,	0.672926025928581420,	0.672963010576577700,	0.672999993542166110,	0.673036974825254600,	0.673073954425750580,	
+0.673110932343562120,	0.673147908578595850,	0.673184883130759970,	0.673221855999961760,	0.673258827186109300,	0.673295796689109330,	0.673332764508870030,	0.673369730645298700,	
+0.673406695098303420,	0.673443657867791030,	0.673480618953669620,	0.673517578355846910,	0.673554536074229880,	0.673591492108726600,	0.673628446459244580,	0.673665399125691680,	
+0.673702350107975080,	0.673739299406002520,	0.673776247019681640,	0.673813192948920610,	0.673850137193626190,	0.673887079753706430,	0.673924020629069090,	0.673960959819621900,	
+0.673997897325272040,	0.674034833145927380,	0.674071767281495650,	0.674108699731884920,	0.674145630497002050,	0.674182559576755100,	0.674219486971052050,	0.674256412679799970,	
+0.674293336702906920,	0.674330259040280430,	0.674367179691828690,	0.674404098657458650,	0.674441015937078390,	0.674477931530595540,	0.674514845437918180,	0.674551757658953480,	
+0.674588668193609300,	0.674625577041793490,	0.674662484203414010,	0.674699389678378060,	0.674736293466593580,	0.674773195567968440,	0.674810095982410600,	0.674846994709827120,	
+0.674883891750126310,	0.674920787103216010,	0.674957680769003420,	0.674994572747396600,	0.675031463038303300,	0.675068351641631810,	0.675105238557288990,	0.675142123785183120,	
+0.675179007325221960,	0.675215889177313680,	0.675252769341365240,	0.675289647817284840,	0.675326524604980440,	0.675363399704359990,	0.675400273115330680,	0.675437144837800820,	
+0.675474014871678020,	0.675510883216870470,	0.675547749873285360,	0.675584614840830990,	0.675621478119415310,	0.675658339708945730,	0.675695199609330220,	0.675732057820476630,	
+0.675768914342293360,	0.675805769174687490,	0.675842622317567090,	0.675879473770840120,	0.675916323534414890,	0.675953171608198460,	0.675990017992099120,	0.676026862686024740,	
+0.676063705689883500,	0.676100547003582800,	0.676137386627030600,	0.676174224560134980,	0.676211060802804020,	0.676247895354945230,	0.676284728216466680,	0.676321559387276230,	
+0.676358388867282280,	0.676395216656392020,	0.676432042754513630,	0.676468867161555630,	0.676505689877424990,	0.676542510902030210,	0.676579330235279050,	0.676616147877080020,	
+0.676652963827340190,	0.676689778085967970,	0.676726590652871440,	0.676763401527958660,	0.676800210711136940,	0.676837018202314900,	0.676873824001400170,	0.676910628108301270,	
+0.676947430522925390,	0.676984231245181030,	0.677021030274976070,	0.677057827612218780,	0.677094623256816690,	0.677131417208677980,	0.677168209467711170,	0.677205000033823450,	
+0.677241788906923100,	0.677278576086918440,	0.677315361573717630,	0.677352145367228100,	0.677388927467358130,	0.677425707874015900,	0.677462486587109720,	0.677499263606547000,	
+0.677536038932236130,	0.677572812564085190,	0.677609584502002480,	0.677646354745895520,	0.677683123295672600,	0.677719890151242010,	0.677756655312511840,	0.677793418779389920,	
+0.677830180551784340,	0.677866940629603620,	0.677903699012755160,	0.677940455701147580,	0.677977210694688860,	0.678013963993287390,	0.678050715596850710,	0.678087465505287200,	
+0.678124213718505060,	0.678160960236412700,	0.678197705058917630,	0.678234448185928260,	0.678271189617352780,	0.678307929353099690,	0.678344667393076420,	0.678381403737191470,	
+0.678418138385353030,	0.678454871337469510,	0.678491602593448540,	0.678528332153198630,	0.678565060016627860,	0.678601786183644750,	0.678638510654156810,	0.678675233428072570,	
+0.678711954505300640,	0.678748673885748440,	0.678785391569324600,	0.678822107555937300,	0.678858821845495060,	0.678895534437905400,	0.678932245333076940,	0.678968954530917770,	
+0.679005662031336720,	0.679042367834240990,	0.679079071939539420,	0.679115774347140210,	0.679152475056951870,	0.679189174068882020,	0.679225871382839190,	0.679262566998731780,	
+0.679299260916468190,	0.679335953135956180,	0.679372643657104260,	0.679409332479821050,	0.679446019604014180,	0.679482705029592290,	0.679519388756463560,	0.679556070784536730,	
+0.679592751113719420,	0.679629429743920270,	0.679666106675047450,	0.679702781907009830,	0.679739455439714810,	0.679776127273071130,	0.679812797406987190,	0.679849465841371630,	
+0.679886132576131950,	0.679922797611177020,	0.679959460946415130,	0.679996122581754790,	0.680032782517103970,	0.680069440752371080,	0.680106097287464960,	0.680142752122293250,	
+0.680179405256764680,	0.680216056690787660,	0.680252706424270710,	0.680289354457121800,	0.680326000789249320,	0.680362645420562020,	0.680399288350968300,	0.680435929580376130,	
+0.680472569108694140,	0.680509206935830610,	0.680545843061694520,	0.680582477486193380,	0.680619110209236160,	0.680655741230731030,	0.680692370550586960,	0.680728998168711690,	
+0.680765624085013840,	0.680802248299402280,	0.680838870811784850,	0.680875491622070060,	0.680912110730166660,	0.680948728135983390,	0.680985343839427880,	0.681021957840408980,	
+0.681058570138835200,	0.681095180734615390,	0.681131789627657190,	0.681168396817869670,	0.681205002305161010,	0.681241606089440290,	0.681278208170615130,	0.681314808548594500,	
+0.681351407223286800,	0.681388004194600990,	0.681424599462444820,	0.681461193026727140,	0.681497784887356460,	0.681534375044241640,	0.681570963497290520,	0.681607550246412060,	
+0.681644135291515020,	0.681680718632507340,	0.681717300269297890,	0.681753880201795060,	0.681790458429908040,	0.681827034953544460,	0.681863609772613290,	0.681900182887023030,	
+0.681936754296682770,	0.681973324001500240,	0.682009892001384400,	0.682046458296243770,	0.682083022885987320,	0.682119585770523120,	0.682156146949759900,	0.682192706423606190,	
+0.682229264191971160,	0.682265820254762680,	0.682302374611889580,	0.682338927263260840,	0.682375478208784520,	0.682412027448369480,	0.682448574981924350,	0.682485120809358190,	
+0.682521664930578860,	0.682558207345495330,	0.682594748054016320,	0.682631287056050700,	0.682667824351506640,	0.682704359940292990,	0.682740893822318400,	0.682777425997491920,	
+0.682813956465721520,	0.682850485226916270,	0.682887012280984810,	0.682923537627836200,	0.682960061267378290,	0.682996583199520280,	0.683033103424171230,	0.683069621941238990,	
+0.683106138750632750,	0.683142653852261140,	0.683179167246033110,	0.683215678931856970,	0.683252188909641680,	0.683288697179295750,	0.683325203740728580,	0.683361708593847930,	
+0.683398211738563080,	0.683434713174782660,	0.683471212902415860,	0.683507710921370640,	0.683544207231556180,	0.683580701832881220,	0.683617194725254730,	0.683653685908585000,	
+0.683690175382781100,	0.683726663147751660,	0.683763149203405970,	0.683799633549652010,	0.683836116186399060,	0.683872597113556080,	0.683909076331031260,	0.683945553838733790,	
+0.683982029636572400,	0.684018503724456270,	0.684054976102293600,	0.684091446769993450,	0.684127915727464790,	0.684164382974616570,	0.684200848511356980,	0.684237312337595440,	
+0.684273774453240560,	0.684310234858201530,	0.684346693552386530,	0.684383150535704980,	0.684419605808065380,	0.684456059369377150,	0.684492511219548460,	0.684528961358488510,	
+0.684565409786106470,	0.684601856502310540,	0.684638301507010110,	0.684674744800113810,	0.684711186381530950,	0.684747626251169810,	0.684784064408939570,	0.684820500854749330,	
+0.684856935588508020,	0.684893368610124060,	0.684929799919506750,	0.684966229516564830,	0.685002657401207800,	0.685039083573343750,	0.685075508032881860,	0.685111930779731430,	
+0.685148351813801290,	0.685184771135000090,	0.685221188743236900,	0.685257604638421000,	0.685294018820460930,	0.685330431289265630,	0.685366842044744410,	0.685403251086806330,	
+0.685439658415359810,	0.685476064030314140,	0.685512467931578270,	0.685548870119061630,	0.685585270592672490,	0.685621669352320050,	0.685658066397913600,	0.685694461729362210,	
+0.685730855346574410,	0.685767247249459370,	0.685803637437926270,	0.685840025911884420,	0.685876412671242220,	0.685912797715908850,	0.685949181045793940,	0.685985562660805680,	
+0.686021942560853580,	0.686058320745846610,	0.686094697215694050,	0.686131071970304540,	0.686167445009587370,	0.686203816333451510,	0.686240185941806470,	0.686276553834560650,	
+0.686312920011623360,	0.686349284472903890,	0.686385647218311520,	0.686422008247754680,	0.686458367561142760,	0.686494725158384940,	0.686531081039390760,	0.686567435204068380,	
+0.686603787652327550,	0.686640138384077230,	0.686676487399226820,	0.686712834697684850,	0.686749180279360830,	0.686785524144164160,	0.686821866292003480,	0.686858206722787970,	
+0.686894545436427030,	0.686930882432830070,	0.686967217711905500,	0.687003551273563050,	0.687039883117711580,	0.687076213244260710,	0.687112541653119080,	0.687148868344195970,	
+0.687185193317400800,	0.687221516572642970,	0.687257838109830990,	0.687294157928874380,	0.687330476029682450,	0.687366792412164580,	0.687403107076229420,	0.687439420021786600,	
+0.687475731248745390,	0.687512040757014660,	0.687548348546503710,	0.687584654617122040,	0.687620958968778950,	0.687657261601383190,	0.687693562514844150,	0.687729861709071360,	
+0.687766159183974100,	0.687802454939461240,	0.687838748975442280,	0.687875041291826310,	0.687911331888523160,	0.687947620765441250,	0.687983907922490420,	0.688020193359579760,	
+0.688056477076618880,	0.688092759073516640,	0.688129039350182330,	0.688165317906525800,	0.688201594742455680,	0.688237869857881600,	0.688274143252712860,	0.688310414926858960,	
+0.688346684880228770,	0.688382953112731900,	0.688419219624277660,	0.688455484414775660,	0.688491747484134550,	0.688528008832264170,	0.688564268459073700,	0.688600526364473000,	
+0.688636782548370570,	0.688673037010676170,	0.688709289751299190,	0.688745540770149380,	0.688781790067135360,	0.688818037642166870,	0.688854283495153210,	0.688890527626004220,	
+0.688926770034628540,	0.688963010720936020,	0.688999249684836280,	0.689035486926238060,	0.689071722445051100,	0.689107956241184930,	0.689144188314549040,	0.689180418665052530,	
+0.689216647292604900,	0.689252874197115670,	0.689289099378494470,	0.689325322836650270,	0.689361544571492790,	0.689397764582931450,	0.689433982870875980,	0.689470199435235240,	
+0.689506414275919080,	0.689542627392836780,	0.689578838785898320,	0.689615048455012420,	0.689651256400088840,	0.689687462621037530,	0.689723667117767110,	0.689759869890187670,	
+0.689796070938208490,	0.689832270261739430,	0.689868467860689450,	0.689904663734968170,	0.689940857884485340,	0.689977050309150690,	0.690013241008872960,	0.690049429983562220,	
+0.690085617233128000,	0.690121802757479920,	0.690157986556527050,	0.690194168630179240,	0.690230348978346010,	0.690266527600937210,	0.690302704497861800,	0.690338879669029630,	
+0.690375053114350550,	0.690411224833733520,	0.690447394827088390,	0.690483563094324790,	0.690519729635352690,	0.690555894450080810,	0.690592057538419350,	0.690628218900277590,	
+0.690664378535565730,	0.690700536444192490,	0.690736692626067960,	0.690772847081101760,	0.690808999809203740,	0.690845150810282860,	0.690881300084249080,	0.690917447631012040,	
+0.690953593450481800,	0.690989737542567210,	0.691025879907178230,	0.691062020544224610,	0.691098159453616300,	0.691134296635262160,	0.691170432089072360,	0.691206565814956760,	
+0.691242697812824440,	0.691278828082585340,	0.691314956624149210,	0.691351083437426020,	0.691387208522324830,	0.691423331878755490,	0.691459453506627960,	0.691495573405851990,	
+0.691531691576336870,	0.691567808017992560,	0.691603922730728570,	0.691640035714455200,	0.691676146969081420,	0.691712256494517290,	0.691748364290672440,	0.691784470357457050,	
+0.691820574694780090,	0.691856677302551850,	0.691892778180682070,	0.691928877329080150,	0.691964974747655950,	0.692001070436319420,	0.692037164394980420,	0.692073256623548240,	
+0.692109347121932950,	0.692145435890044290,	0.692181522927792340,	0.692217608235086160,	0.692253691811836050,	0.692289773657951750,	0.692325853773343320,	0.692361932157919970,	
+0.692398008811591750,	0.692434083734268400,	0.692470156925860340,	0.692506228386276400,	0.692542298115427000,	0.692578366113222100,	0.692614432379571100,	0.692650496914383850,	
+0.692686559717570540,	0.692722620789041010,	0.692758680128704670,	0.692794737736471600,	0.692830793612251640,	0.692866847755955080,	0.692902900167491120,	0.692938950846769820,	
+0.692974999793701250,	0.693011047008195380,	0.693047092490161610,	0.693083136239510230,	0.693119178256150880,	0.693155218539993840,	0.693191257090948640,	0.693227293908925120,	
+0.693263328993833810,	0.693299362345583760,	0.693335393964085390,	0.693371423849248440,	0.693407452000983300,	0.693443478419199180,	0.693479503103806460,	0.693515526054714890,	
+0.693551547271834880,	0.693587566755075600,	0.693623584504347470,	0.693659600519560330,	0.693695614800624580,	0.693731627347449420,	0.693767638159945240,	0.693803647238021900,	
+0.693839654581589800,	0.693875660190558240,	0.693911664064837620,	0.693947666204337680,	0.693983666608969040,	0.694019665278640780,	0.694055662213263420,	0.694091657412747250,	
+0.694127650877001570,	0.694163642605936770,	0.694199632599462930,	0.694235620857490240,	0.694271607379928210,	0.694307592166687140,	0.694343575217677200,	0.694379556532808470,	
+0.694415536111990690,	0.694451513955133940,	0.694487490062148490,	0.694523464432944550,	0.694559437067431730,	0.694595407965520330,	0.694631377127120310,	0.694667344552142190,	
+0.694703310240495480,	0.694739274192090360,	0.694775236406837470,	0.694811196884646100,	0.694847155625426760,	0.694883112629089640,	0.694919067895544920,	0.694955021424702220,	
+0.694990973216472070,	0.695026923270764430,	0.695062871587489810,	0.695098818166557610,	0.695134763007878460,	0.695170706111362340,	0.695206647476919850,	0.695242587104460410,	
+0.695278524993894420,	0.695314461145132180,	0.695350395558084090,	0.695386328232659780,	0.695422259168769540,	0.695458188366324000,	0.695494115825232680,	0.695530041545405990,	
+0.695565965526754320,	0.695601887769188080,	0.695637808272616680,	0.695673727036950850,	0.695709644062100560,	0.695745559347976660,	0.695781472894488440,	0.695817384701546530,	
+0.695853294769061210,	0.695889203096943020,	0.695925109685101350,	0.695961014533447050,	0.695996917641890090,	0.696032819010341310,	0.696068718638710000,	0.696104616526906920,	
+0.696140512674842450,	0.696176407082426900,	0.696212299749570000,	0.696248190676182380,	0.696284079862174550,	0.696319967307456270,	0.696355853011938140,	0.696391736975530250,	
+0.696427619198143440,	0.696463499679687130,	0.696499378420072150,	0.696535255419208800,	0.696571130677007490,	0.696607004193378070,	0.696642875968231160,	0.696678746001477170,	
+0.696714614293026500,	0.696750480842789010,	0.696786345650675320,	0.696822208716595730,	0.696858070040460960,	0.696893929622180660,	0.696929787461665560,	0.696965643558826400,	
+0.697001497913572690,	0.697037350525815390,	0.697073201395464580,	0.697109050522431110,	0.697144897906624710,	0.697180743547956010,	0.697216587446335520,	0.697252429601673880,	
+0.697288270013880830,	0.697324108682867090,	0.697359945608543090,	0.697395780790819540,	0.697431614229606200,	0.697467445924813910,	0.697503275876352970,	0.697539104084134110,	
+0.697574930548067180,	0.697610755268062930,	0.697646578244032200,	0.697682399475884620,	0.697718218963531030,	0.697754036706881850,	0.697789852705848030,	0.697825666960339210,	
+0.697861479470266220,	0.697897290235539480,	0.697933099256069830,	0.697968906531767130,	0.698004712062542220,	0.698040515848305510,	0.698076317888967850,	0.698112118184438970,	
+0.698147916734629950,	0.698183713539451080,	0.698219508598813210,	0.698255301912626300,	0.698291093480801090,	0.698326883303248440,	0.698362671379878290,	0.698398457710601490,	
+0.698434242295328470,	0.698470025133970270,	0.698505806226436650,	0.698541585572638460,	0.698577363172486310,	0.698613139025891170,	0.698648913132762780,	0.698684685493012100,	
+0.698720456106549760,	0.698756224973286600,	0.698791992093132590,	0.698827757465998460,	0.698863521091795060,	0.698899282970433130,	0.698935043101822640,	0.698970801485874650,	
+0.699006558122499570,	0.699042313011608460,	0.699078066153111190,	0.699113817546918810,	0.699149567192942190,	0.699185315091091280,	0.699221061241277140,	0.699256805643410420,	
+0.699292548297401950,	0.699328289203161700,	0.699364028360600740,	0.699399765769629810,	0.699435501430159760,	0.699471235342100650,	0.699506967505363340,	0.699542697919858680,	
+0.699578426585497630,	0.699614153502190140,	0.699649878669847290,	0.699685602088379820,	0.699721323757698580,	0.699757043677713740,	0.699792761848336280,	0.699828478269477250,	
+0.699864192941046630,	0.699899905862955580,	0.699935617035114750,	0.699971326457435210,	0.700007034129827010,	0.700042740052201350,	0.700078444224468740,	0.700114146646540370,	
+0.700149847318326300,	0.700185546239737500,	0.700221243410684920,	0.700256938831079640,	0.700292632500831620,	0.700328324419852040,	0.700364014588051640,	0.700399703005341490,	
+0.700435389671631770,	0.700471074586833550,	0.700506757750858020,	0.700542439163615250,	0.700578118825016420,	0.700613796734972260,	0.700649472893393970,	0.700685147300191600,	
+0.700720819955276460,	0.700756490858559180,	0.700792160009951040,	0.700827827409362230,	0.700863493056703810,	0.700899156951886650,	0.700934819094821910,	0.700970479485419800,	
+0.701006138123591470,	0.701041795009247790,	0.701077450142299940,	0.701113103522658210,	0.701148755150233670,	0.701184405024937290,	0.701220053146680230,	0.701255699515372700,	
+0.701291344130925860,	0.701326986993251020,	0.701362628102258360,	0.701398267457859160,	0.701433905059964280,	0.701469540908485010,	0.701505175003331540,	0.701540807344415040,	
+0.701576437931646700,	0.701612066764937480,	0.701647693844197780,	0.701683319169338790,	0.701718942740271580,	0.701754564556907320,	0.701790184619156320,	0.701825802926929860,	
+0.701861419480138920,	0.701897034278694760,	0.701932647322507600,	0.701968258611488930,	0.702003868145549830,	0.702039475924600810,	0.702075081948553060,	0.702110686217317650,	
+0.702146288730805870,	0.702181889488928010,	0.702217488491595380,	0.702253085738719140,	0.702288681230210380,	0.702324274965979710,	0.702359866945938220,	0.702395457169997180,	
+0.702431045638067800,	0.702466632350060460,	0.702502217305886580,	0.702537800505457110,	0.702573381948683460,	0.702608961635476040,	0.702644539565746240,	0.702680115739405360,	
+0.702715690156363930,	0.702751262816533220,	0.702786833719824420,	0.702822402866148830,	0.702857970255416850,	0.702893535887540000,	0.702929099762429340,	0.702964661879996180,	
+0.703000222240151130,	0.703035780842805490,	0.703071337687870330,	0.703106892775257180,	0.703142446104876530,	0.703177997676639690,	0.703213547490457950,	0.703249095546242600,	
+0.703284641843904270,	0.703320186383354250,	0.703355729164504060,	0.703391270187264330,	0.703426809451546340,	0.703462346957261400,	0.703497882704320790,	0.703533416692635250,	
+0.703568948922116190,	0.703604479392674680,	0.703640008104222340,	0.703675535056669690,	0.703711060249928130,	0.703746583683908970,	0.703782105358523700,	0.703817625273682750,	
+0.703853143429297830,	0.703888659825280040,	0.703924174461540760,	0.703959687337990970,	0.703995198454541840,	0.704030707811104660,	0.704066215407591070,	0.704101721243911680,	
+0.704137225319978020,	0.704172727635701490,	0.704208228190992940,	0.704243726985763760,	0.704279224019925150,	0.704314719293388960,	0.704350212806065690,	0.704385704557866750,	
+0.704421194548703560,	0.704456682778487830,	0.704492169247129980,	0.704527653954541640,	0.704563136900634320,	0.704598618085319430,	0.704634097508507580,	0.704669575170110530,	
+0.704705051070039560,	0.704740525208206290,	0.704775997584521360,	0.704811468198896510,	0.704846937051243240,	0.704882404141472410,	0.704917869469495420,	0.704953333035223890,	
+0.704988794838569240,	0.705024254879442310,	0.705059713157754730,	0.705095169673417900,	0.705130624426343560,	0.705166077416442220,	0.705201528643625730,	0.705236978107805390,	
+0.705272425808892930,	0.705307871746799100,	0.705343315921435510,	0.705378758332713800,	0.705414198980545360,	0.705449637864841160,	0.705485074985512830,	0.705520510342472210,	
+0.705555943935629930,	0.705591375764897830,	0.705626805830187220,	0.705662234131410050,	0.705697660668476830,	0.705733085441299530,	0.705768508449789560,	0.705803929693858520,	
+0.705839349173417400,	0.705874766888377910,	0.705910182838651590,	0.705945597024150050,	0.705981009444784150,	0.706016420100465720,	0.706051828991106410,	0.706087236116617720,	
+0.706122641476910620,	0.706158045071896940,	0.706193446901488110,	0.706228846965595960,	0.706264245264131450,	0.706299641797006330,	0.706335036564132320,	0.706370429565420510,	
+0.706405820800782620,	0.706441210270130180,	0.706476597973374920,	0.706511983910427910,	0.706547368081201000,	0.706582750485605700,	0.706618131123553760,	0.706653509994956130,	
+0.706688887099724770,	0.706724262437771200,	0.706759636009007370,	0.706795007813344030,	0.706830377850693250,	0.706865746120966420,	0.706901112624075620,	0.706936477359931700,	
+0.706971840328446620,	0.707007201529532110,	0.707042560963099480,	0.707077918629060330,	0.707113274527326420,	0.707148628657809700,	0.707183981020421020,	0.707219331615072330,	
+0.707254680441675390,	0.707290027500142030,	0.707325372790383320,	0.707360716312311120,	0.707396058065837270,	0.707431398050873520,	0.707466736267330920,	0.707502072715121440,	
+0.707537407394156830,	0.707572740304349020,	0.707608071445609110,	0.707643400817848930,	0.707678728420980560,	0.707714054254915180,	0.707749378319564530,	0.707784700614840450,	
+0.707820021140655010,	0.707855339896919180,	0.707890656883544910,	0.707925972100444060,	0.707961285547528570,	0.707996597224709530,	0.708031907131899120,	0.708067215269008840,	
+0.708102521635950890,	0.708137826232636210,	0.708173129058977110,	0.708208430114885100,	0.708243729400272470,	0.708279026915049960,	0.708314322659130080,	0.708349616632424570,	
+0.708384908834844840,	0.708420199266302730,	0.708455487926710200,	0.708490774815979220,	0.708526059934020960,	0.708561343280747600,	0.708596624856070890,	0.708631904659902890,	
+0.708667182692154900,	0.708702458952738870,	0.708737733441566760,	0.708773006158550540,	0.708808277103601610,	0.708843546276631930,	0.708878813677553340,	0.708914079306278030,	
+0.708949343162717290,	0.708984605246783080,	0.709019865558387470,	0.709055124097442420,	0.709090380863859230,	0.709125635857550280,	0.709160889078427340,	0.709196140526401900,	
+0.709231390201386260,	0.709266638103291940,	0.709301884232031440,	0.709337128587515960,	0.709372371169657570,	0.709407611978368320,	0.709442851013560300,	0.709478088275144910,	
+0.709513323763034220,	0.709548557477140300,	0.709583789417375210,	0.709619019583650370,	0.709654247975877950,	0.709689474593970030,	0.709724699437838670,	0.709759922507395170,	
+0.709795143802551930,	0.709830363323221140,	0.709865581069314190,	0.709900797040743270,	0.709936011237420230,	0.709971223659257580,	0.710006434306166610,	0.710041643178059510,	
+0.710076850274848240,	0.710112055596445190,	0.710147259142761670,	0.710182460913710070,	0.710217660909202240,	0.710252859129150590,	0.710288055573466530,	0.710323250242062330,	
+0.710358443134849970,	0.710393634251741850,	0.710428823592649250,	0.710464011157484700,	0.710499196946160260,	0.710534380958587670,	0.710569563194679120,	0.710604743654346560,	
+0.710639922337502620,	0.710675099244058470,	0.710710274373926530,	0.710745447727018980,	0.710780619303248100,	0.710815789102525300,	0.710850957124763090,	0.710886123369873450,	
+0.710921287837768870,	0.710956450528360760,	0.710991611441561420,	0.711026770577283140,	0.711061927935438210,	0.711097083515938260,	0.711132237318695460,	0.711167389343622110,	
+0.711202539590630620,	0.711237688059632390,	0.711272834750540040,	0.711307979663265870,	0.711343122797721490,	0.711378264153819220,	0.711413403731471330,	0.711448541530590230,	
+0.711483677551087550,	0.711518811792875570,	0.711553944255866600,	0.711589074939973030,	0.711624203845106610,	0.711659330971179500,	0.711694456318104240,	0.711729579885793000,	
+0.711764701674157510,	0.711799821683110400,	0.711834939912563640,	0.711870056362429840,	0.711905171032620520,	0.711940283923048420,	0.711975395033625840,	0.712010504364264500,	
+0.712045611914876810,	0.712080717685375180,	0.712115821675672000,	0.712150923885679020,	0.712186024315308640,	0.712221122964473370,	0.712256219833085510,	0.712291314921056680,	
+0.712326408228299730,	0.712361499754726620,	0.712396589500250200,	0.712431677464781980,	0.712466763648234470,	0.712501848050520080,	0.712536930671551440,	0.712572011511240170,	
+0.712607090569498780,	0.712642167846240020,	0.712677243341375610,	0.712712317054817970,	0.712747388986479600,	0.712782459136273030,	0.712817527504110090,	0.712852594089903310,	
+0.712887658893564870,	0.712922721915007830,	0.712957783154143600,	0.712992842610884800,	0.713027900285144070,	0.713062956176833800,	0.713098010285865840,	0.713133062612152810,	
+0.713168113155607130,	0.713203161916141530,	0.713238208893667740,	0.713273254088098390,	0.713308297499346210,	0.713343339127322950,	0.713378378971941450,	0.713413417033113890,	
+0.713448453310753130,	0.713483487804770890,	0.713518520515080020,	0.713553551441592830,	0.713588580584222030,	0.713623607942879490,	0.713658633517477940,	0.713693657307929770,	
+0.713728679314147740,	0.713763699536043680,	0.713798717973530560,	0.713833734626520440,	0.713868749494926400,	0.713903762578660170,	0.713938773877634600,	0.713973783391761980,	
+0.714008791120955280,	0.714043797065126220,	0.714078801224187650,	0.714113803598052540,	0.714148804186632510,	0.714183802989840410,	0.714218800007588860,	0.714253795239790600,	
+0.714288788686357590,	0.714323780347202670,	0.714358770222238150,	0.714393758311377080,	0.714428744614531320,	0.714463729131613710,	0.714498711862536770,	0.714533692807213350,	
+0.714568671965555290,	0.714603649337475780,	0.714638624922886990,	0.714673598721701890,	0.714708570733832650,	0.714743540959191790,	0.714778509397692610,	0.714813476049246610,	
+0.714848440913767090,	0.714883403991166460,	0.714918365281357550,	0.714953324784252440,	0.714988282499764090,	0.715023238427805020,	0.715058192568288060,	0.715093144921125410,	
+0.715128095486229800,	0.715163044263514070,	0.715197991252890960,	0.715232936454272660,	0.715267879867571900,	0.715302821492701520,	0.715337761329574270,	0.715372699378102440,	
+0.715407635638198870,	0.715442570109776410,	0.715477502792747240,	0.715512433687024440,	0.715547362792520400,	0.715582290109148420,	0.715617215636820240,	0.715652139375449140,	
+0.715687061324947640,	0.715721981485228810,	0.715756899856204720,	0.715791816437788330,	0.715826731229892490,	0.715861644232430040,	0.715896555445313170,	0.715931464868455050,	
+0.715966372501768090,	0.716001278345165690,	0.716036182398559600,	0.716071084661863200,	0.716105985134989020,	0.716140883817850240,	0.716175780710358810,	0.716210675812428030,	
+0.716245569123970970,	0.716280460644899470,	0.716315350375126950,	0.716350238314566010,	0.716385124463129850,	0.716420008820730430,	0.716454891387281130,	0.716489772162694490,	
+0.716524651146883800,	0.716559528339761220,	0.716594403741239730,	0.716629277351232270,	0.716664149169651930,	0.716699019196410880,	0.716733887431422190,	0.716768753874598930,	
+0.716803618525854060,	0.716838481385099870,	0.716873342452249430,	0.716908201727215920,	0.716943059209911640,	0.716977914900249650,	0.717012768798142910,	0.717047620903504600,	
+0.717082471216246910,	0.717117319736283010,	0.717152166463525860,	0.717187011397888540,	0.717221854539283440,	0.717256695887623640,	0.717291535442822090,	0.717326373204792090,	
+0.717361209173445920,	0.717396043348696550,	0.717430875730457160,	0.717465706318640930,	0.717500535113160030,	0.717535362113927880,	0.717570187320857530,	0.717605010733861400,	
+0.717639832352852890,	0.717674652177744620,	0.717709470208450220,	0.717744286444881750,	0.717779100886952510,	0.717813913534575580,	0.717848724387664230,	0.717883533446130650,	
+0.717918340709888250,	0.717953146178849980,	0.717987949852929240,	0.718022751732038330,	0.718057551816090430,	0.718092350104998720,	0.718127146598676490,	0.718161941297035920,	
+0.718196734199990640,	0.718231525307453820,	0.718266314619337760,	0.718301102135556090,	0.718335887856021540,	0.718370671780647620,	0.718405453909346740,	0.718440234242032180,	
+0.718475012778617030,	0.718509789519014790,	0.718544564463137640,	0.718579337610899090,	0.718614108962212230,	0.718648878516990330,	0.718683646275146030,	0.718718412236592610,	
+0.718753176401243030,	0.718787938769010930,	0.718822699339808580,	0.718857458113549620,	0.718892215090146890,	0.718926970269514020,	0.718961723651563410,	0.718996475236208470,	
+0.719031225023362590,	0.719065973012938400,	0.719100719204849300,	0.719135463599008370,	0.719170206195329120,	0.719204946993724060,	0.719239685994106480,	0.719274423196389790,	
+0.719309158600487390,	0.719343892206311790,	0.719378624013776390,	0.719413354022794490,	0.719448082233279500,	0.719482808645143910,	0.719517533258301370,	0.719552256072665040,	
+0.719586977088148340,	0.719621696304663880,	0.719656413722125190,	0.719691129340445770,	0.719725843159538250,	0.719760555179316030,	0.719795265399692520,	0.719829973820581110,	
+0.719864680441894440,	0.719899385263546130,	0.719934088285449360,	0.719968789507517530,	0.720003488929663590,	0.720038186551800850,	0.720072882373842700,	0.720107576395702550,	
+0.720142268617293250,	0.720176959038528300,	0.720211647659320890,	0.720246334479584640,	0.720281019499232290,	0.720315702718177350,	0.720350384136333570,	0.720385063753613440,	
+0.720419741569930610,	0.720454417585198570,	0.720489091799330630,	0.720523764212239740,	0.720558434823839410,	0.720593103634042940,	0.720627770642764180,	0.720662435849915630,	
+0.720697099255410920,	0.720731760859163460,	0.720766420661086980,	0.720801078661094110,	0.720835734859098460,	0.720870389255013570,	0.720905041848753040,	0.720939692640229500,	
+0.720974341629356810,	0.721008988816048250,	0.721043634200217550,	0.721078277781777350,	0.721112919560641610,	0.721147559536723710,	0.721182197709936750,	0.721216834080194210,	
+0.721251468647409520,	0.721286101411496630,	0.721320732372368050,	0.721355361529937730,	0.721389988884118980,	0.721424614434825530,	0.721459238181970220,	0.721493860125466900,	
+0.721528480265228870,	0.721563098601169960,	0.721597715133203030,	0.721632329861241820,	0.721666942785199720,	0.721701553904990690,	0.721736163220527250,	0.721770770731723580,	
+0.721805376438493300,	0.721839980340749140,	0.721874582438405190,	0.721909182731374610,	0.721943781219571480,	0.721978377902908640,	0.722012972781299830,	0.722047565854658460,	
+0.722082157122898580,	0.722116746585933060,	0.722151334243675610,	0.722185920096039770,	0.722220504142939480,	0.722255086384287700,	0.722289666819998070,	0.722324245449984410,	
+0.722358822274160370,	0.722393397292438900,	0.722427970504734060,	0.722462541910959600,	0.722497111511028360,	0.722531679304854510,	0.722566245292351250,	0.722600809473432860,	
+0.722635371848012080,	0.722669932416002860,	0.722704491177318830,	0.722739048131873840,	0.722773603279580960,	0.722808156620354140,	0.722842708154106780,	0.722877257880753080,	
+0.722911805800205860,	0.722946351912379100,	0.722980896217186530,	0.723015438714541990,	0.723049979404358560,	0.723084518286550180,	0.723119055361030830,	0.723153590627713560,	
+0.723188124086512230,	0.723222655737340680,	0.723257185580112650,	0.723291713614741430,	0.723326239841140970,	0.723360764259224910,	0.723395286868907190,	0.723429807670101010,	
+0.723464326662720310,	0.723498843846678730,	0.723533359221890440,	0.723567872788268280,	0.723602384545726670,	0.723636894494178890,	0.723671402633539350,	0.723705908963720780,	
+0.723740413484637690,	0.723774916196203380,	0.723809417098332130,	0.723843916190937130,	0.723878413473932230,	0.723912908947231700,	0.723947402610748410,	0.723981894464396760,	
+0.724016384508090360,	0.724050872741743400,	0.724085359165268730,	0.724119843778580850,	0.724154326581593290,	0.724188807574220220,	0.724223286756374820,	0.724257764127971160,	
+0.724292239688923090,	0.724326713439144790,	0.724361185378549430,	0.724395655507050980,	0.724430123824563510,	0.724464590331000970,	0.724499055026276760,	0.724533517910304850,	
+0.724567978982999410,	0.724602438244273730,	0.724636895694041990,	0.724671351332217940,	0.724705805158715850,	0.724740257173449030,	0.724774707376331430,	0.724809155767277110,	
+0.724843602346200270,	0.724878047113014070,	0.724912490067632700,	0.724946931209970220,	0.724981370539940610,	0.725015808057457360,	0.725050243762434540,	0.725084677654786120,	
+0.725119109734426280,	0.725153540001268420,	0.725187968455226710,	0.725222395096215330,	0.725256819924147590,	0.725291242938937990,	0.725325664140500150,	0.725360083528748480,	
+0.725394501103596380,	0.725428916864957920,	0.725463330812747160,	0.725497742946878410,	0.725532153267265060,	0.725566561773821280,	0.725600968466461050,	0.725635373345098760,	
+0.725669776409647690,	0.725704177660022260,	0.725738577096136320,	0.725772974717904250,	0.725807370525239470,	0.725841764518056150,	0.725876156696268590,	0.725910547059790860,	
+0.725944935608536460,	0.725979322342419690,	0.726013707261354950,	0.726048090365255640,	0.726082471654036170,	0.726116851127610370,	0.726151228785892890,	0.726185604628796890,	
+0.726219978656237000,	0.726254350868127170,	0.726288721264381600,	0.726323089844914120,	0.726357456609638800,	0.726391821558469930,	0.726426184691321810,	0.726460546008107830,	
+0.726494905508742520,	0.726529263193139930,	0.726563619061214580,	0.726597973112879770,	0.726632325348050110,	0.726666675766639900,	0.726701024368562650,	0.726735371153732880,	
+0.726769716122064760,	0.726804059273472580,	0.726838400607869970,	0.726872740125171330,	0.726907077825290850,	0.726941413708142910,	0.726975747773641270,	0.727010080021700200,	
+0.727044410452233890,	0.727078739065156960,	0.727113065860382820,	0.727147390837825980,	0.727181713997400610,	0.727216035339021350,	0.727250354862601700,	0.727284672568056180,	
+0.727318988455299300,	0.727353302524244570,	0.727387614774806620,	0.727421925206899630,	0.727456233820438110,	0.727490540615335800,	0.727524845591506990,	0.727559148748866180,	
+0.727593450087327680,	0.727627749606805320,	0.727662047307213620,	0.727696343188466770,	0.727730637250479370,	0.727764929493165070,	0.727799219916438480,	0.727833508520213890,	
+0.727867795304405710,	0.727902080268927780,	0.727936363413694610,	0.727970644738620940,	0.728004924243620290,	0.728039201928607270,	0.728073477793496400,	0.728107751838201980,	
+0.728142024062637950,	0.728176294466718830,	0.728210563050359030,	0.728244829813473160,	0.728279094755974850,	0.728313357877778840,	0.728347619178799420,	0.728381878658951100,	
+0.728416136318148060,	0.728450392156304470,	0.728484646173334970,	0.728518898369154180,	0.728553148743675830,	0.728587397296814540,	0.728621644028484840,	0.728655888938601230,	
+0.728690132027077660,	0.728724373293828780,	0.728758612738769300,	0.728792850361812960,	0.728827086162874500,	0.728861320141868330,	0.728895552298709060,	0.728929782633310760,	
+0.728964011145587950,	0.728998237835455030,	0.729032462702826840,	0.729066685747617240,	0.729100906969740950,	0.729135126369112370,	0.729169343945646250,	0.729203559699256540,	
+0.729237773629857870,	0.729271985737364740,	0.729306196021692000,	0.729340404482753390,	0.729374611120463870,	0.729408815934738050,	0.729443018925489910,	0.729477220092634270,	
+0.729511419436085550,	0.729545616955758590,	0.729579812651567240,	0.729614006523426450,	0.729648198571250520,	0.729682388794954510,	0.729716577194452150,	0.729750763769658420,	
+0.729784948520487700,	0.729819131446854950,	0.729853312548674030,	0.729887491825859880,	0.729921669278327020,	0.729955844905990190,	0.729990018708763570,	0.730024190686561880,	
+0.730058360839299980,	0.730092529166891820,	0.730126695669252480,	0.730160860346296350,	0.730195023197938280,	0.730229184224092330,	0.730263343424673580,	0.730297500799596320,	
+0.730331656348775730,	0.730365810072125640,	0.730399961969561030,	0.730434112040996510,	0.730468260286347040,	0.730502406705526570,	0.730536551298450190,	0.730570694065032390,	
+0.730604835005188020,	0.730638974118831390,	0.730673111405877320,	0.730707246866240450,	0.730741380499835720,	0.730775512306577340,	0.730809642286380120,	0.730843770439159050,	
+0.730877896764828390,	0.730912021263302790,	0.730946143934497310,	0.730980264778326670,	0.731014383794705180,	0.731048500983547570,	0.731082616344768790,	0.731116729878283800,	
+0.731150841584006670,	0.731184951461852470,	0.731219059511735820,	0.731253165733571910,	0.731287270127274680,	0.731321372692759320,	0.731355473429940560,	0.731389572338733360,	
+0.731423669419051900,	0.731457764670811360,	0.731491858093926690,	0.731525949688312080,	0.731560039453882590,	0.731594127390552960,	0.731628213498238370,	0.731662297776852880,	
+0.731696380226311670,	0.731730460846529480,	0.731764539637421500,	0.731798616598901890,	0.731832691730885610,	0.731866765033287740,	0.731900836506023220,	0.731934906149006360,	
+0.731968973962152100,	0.732003039945375520,	0.732037104098591570,	0.732071166421714550,	0.732105226914659620,	0.732139285577342090,	0.732173342409675800,	0.732207397411576370,	
+0.732241450582958310,	0.732275501923736920,	0.732309551433826480,	0.732343599113142170,	0.732377644961598960,	0.732411688979111910,	0.732445731165595190,	0.732479771520964330,	
+0.732513810045133940,	0.732547846738019310,	0.732581881599534750,	0.732615914629595630,	0.732649945828116600,	0.732683975195013050,	0.732718002730199160,	0.732752028433590440,	
+0.732786052305101520,	0.732820074344647800,	0.732854094552143560,	0.732888112927504220,	0.732922129470644720,	0.732956144181479700,	0.732990157059924320,	0.733024168105893550,	
+0.733058177319302560,	0.733092184700065990,	0.733126190248098770,	0.733160193963316220,	0.733194195845633390,	0.733228195894964910,	0.733262194111225840,	0.733296190494331260,	
+0.733330185044196560,	0.733364177760736040,	0.733398168643865200,	0.733432157693498790,	0.733466144909552420,	0.733500130291940280,	0.733534113840577870,	0.733568095555380490,	
+0.733602075436262440,	0.733636053483139430,	0.733670029695926100,	0.733704004074538060,	0.733737976618889620,	0.733771947328896390,	0.733805916204473220,	0.733839883245535620,	
+0.733873848451997880,	0.733907811823775620,	0.733941773360783810,	0.733975733062937950,	0.734009690930152340,	0.734043646962342590,	0.734077601159423660,	0.734111553521310970,	
+0.734145504047919230,	0.734179452739163630,	0.734213399594959790,	0.734247344615222010,	0.734281287799865900,	0.734315229148806650,	0.734349168661959650,	0.734383106339239310,	
+0.734417042180561360,	0.734450976185840760,	0.734484908354992920,	0.734518838687932550,	0.734552767184575180,	0.734586693844835770,	0.734620618668629930,	0.734654541655872300,	
+0.734688462806478260,	0.734722382120363230,	0.734756299597442370,	0.734790215237630440,	0.734824129040843040,	0.734858041006995700,	0.734891951136002810,	0.734925859427780100,	
+0.734959765882242880,	0.734993670499306310,	0.735027573278885460,	0.735061474220895630,	0.735095373325251990,	0.735129270591870390,	0.735163166020665120,	0.735197059611552130,	
+0.735230951364446380,	0.735264841279263500,	0.735298729355918330,	0.735332615594326280,	0.735366499994402730,	0.735400382556063210,	0.735434263279222460,	0.735468142163796080,	
+0.735502019209699260,	0.735535894416847640,	0.735569767785156150,	0.735603639314540200,	0.735637509004915310,	0.735671376856196440,	0.735705242868299190,	0.735739107041138760,	
+0.735772969374630880,	0.735806829868690280,	0.735840688523232590,	0.735874545338173200,	0.735908400313427750,	0.735942253448911070,	0.735976104744538560,	0.736009954200225970,	
+0.736043801815888690,	0.736077647591441670,	0.736111491526800550,	0.736145333621880620,	0.736179173876597700,	0.736213012290866550,	0.736246848864602900,	0.736280683597722360,	
+0.736314516490139900,	0.736348347541771030,	0.736382176752531370,	0.736416004122336540,	0.736449829651101400,	0.736483653338741770,	0.736517475185172850,	0.736551295190310710,	
+0.736585113354069950,	0.736618929676366330,	0.736652744157115460,	0.736686556796233070,	0.736720367593633910,	0.736754176549233920,	0.736787983662948510,	0.736821788934693300,	
+0.736855592364383360,	0.736889393951934530,	0.736923193697262450,	0.736956991600282050,	0.736990787660909200,	0.737024581879059390,	0.737058374254648490,	0.737092164787591320,	
+0.737125953477803740,	0.737159740325201260,	0.737193525329699620,	0.737227308491213980,	0.737261089809660100,	0.737294869284953470,	0.737328646917009940,	0.737362422705744480,	
+0.737396196651073030,	0.737429968752911000,	0.737463739011174350,	0.737497507425778130,	0.737531273996638090,	0.737565038723669850,	0.737598801606789370,	0.737632562645911590,	
+0.737666321840952380,	0.737700079191827670,	0.737733834698452440,	0.737767588360742630,	0.737801340178613870,	0.737835090151982120,	0.737868838280762220,	0.737902584564870230,	
+0.737936329004221900,	0.737970071598732960,	0.738003812348318580,	0.738037551252894610,	0.738071288312376780,	0.738105023526681060,	0.738138756895722500,	0.738172488419416960,	
+0.738206218097680280,	0.738239945930428300,	0.738273671917576200,	0.738307396059039940,	0.738341118354735480,	0.738374838804577880,	0.738408557408483210,	0.738442274166367100,	
+0.738475989078145710,	0.738509702143734010,	0.738543413363047960,	0.738577122736003510,	0.738610830262516500,	0.738644535942502010,	0.738678239775876320,	0.738711941762554950,	
+0.738745641902454060,	0.738779340195488850,	0.738813036641575160,	0.738846731240628940,	0.738880423992566150,	0.738914114897302080,	0.738947803954752680,	0.738981491164834030,	
+0.739015176527461400,	0.739048860042550770,	0.739082541710018080,	0.739116221529779290,	0.739149899501749590,	0.739183575625845250,	0.739217249901981900,	0.739250922330075830,	
+0.739284592910042000,	0.739318261641796810,	0.739351928525255890,	0.739385593560335510,	0.739419256746950750,	0.739452918085018010,	0.739486577574452800,	0.739520235215171520,	
+0.739553891007089350,	0.739587544950122470,	0.739621197044187050,	0.739654847289198280,	0.739688495685072440,	0.739722142231725280,	0.739755786929073180,	0.739789429777031220,	
+0.739823070775515790,	0.739856709924442520,	0.739890347223727930,	0.739923982673287070,	0.739957616273036360,	0.739991248022891510,	0.740024877922768830,	0.740058505972583710,	
+0.740092132172252340,	0.740125756521690660,	0.740159379020814740,	0.740192999669540220,	0.740226618467783150,	0.740260235415459600,	0.740293850512485640,	0.740327463758776780,	
+0.740361075154249320,	0.740394684698819530,	0.740428292392402600,	0.740461898234915040,	0.740495502226272690,	0.740529104366391850,	0.740562704655188030,	0.740596303092577400,	
+0.740629899678476030,	0.740663494412800110,	0.740697087295465240,	0.740730678326387610,	0.740764267505483410,	0.740797854832668690,	0.740831440307859190,	0.740865023930970870,	
+0.740898605701920230,	0.740932185620623240,	0.740965763686995520,	0.740999339900953350,	0.741032914262413240,	0.741066486771290390,	0.741100057427501400,	0.741133626230962240,	
+0.741167193181589410,	0.741200758279298210,	0.741234321524005150,	0.741267882915626290,	0.741301442454078030,	0.741335000139275780,	0.741368555971136050,	0.741402109949575010,	
+0.741435662074508950,	0.741469212345853390,	0.741502760763524950,	0.741536307327439470,	0.741569852037513580,	0.741603394893662670,	0.741636935895803370,	0.741670475043851970,	
+0.741704012337724090,	0.741737547777336250,	0.741771081362604500,	0.741804613093445360,	0.741838142969774350,	0.741871670991508080,	0.741905197158562510,	0.741938721470854270,	
+0.741972243928298970,	0.742005764530813130,	0.742039283278312700,	0.742072800170714530,	0.742106315207933910,	0.742139828389887570,	0.742173339716491690,	0.742206849187662780,	
+0.742240356803316350,	0.742273862563369140,	0.742307366467737100,	0.742340868516337070,	0.742374368709084690,	0.742407867045896230,	0.742441363526688440,	0.742474858151376930,	
+0.742508350919878210,	0.742541841832108700,	0.742575330887984890,	0.742608818087422410,	0.742642303430337880,	0.742675786916647710,	0.742709268546268180,	0.742742748319115350,	
+0.742776226235105530,	0.742809702294155220,	0.742843176496180920,	0.742876648841098390,	0.742910119328824230,	0.742943587959274840,	0.742977054732366640,	0.743010519648015680,	
+0.743043982706138250,	0.743077443906651200,	0.743110903249470270,	0.743144360734512070,	0.743177816361693000,	0.743211270130929690,	0.743244722042137870,	0.743278172095234390,	
+0.743311620290135310,	0.743345066626757480,	0.743378511105016740,	0.743411953724829820,	0.743445394486112800,	0.743478833388782730,	0.743512270432755250,	0.743545705617947080,	
+0.743579138944274740,	0.743612570411654740,	0.743646000020003030,	0.743679427769236350,	0.743712853659271420,	0.743746277690023990,	0.743779699861410900,	0.743813120173348550,	
+0.743846538625753780,	0.743879955218542220,	0.743913369951630930,	0.743946782824936090,	0.743980193838374660,	0.744013602991862370,	0.744047010285316170,	0.744080415718652350,	
+0.744113819291787880,	0.744147221004638480,	0.744180620857121110,	0.744214018849152170,	0.744247414980648500,	0.744280809251525950,	0.744314201661701370,	0.744347592211091590,	
+0.744380980899612580,	0.744414367727181060,	0.744447752693713550,	0.744481135799127110,	0.744514517043337490,	0.744547896426261510,	0.744581273947815920,	0.744614649607917340,	
+0.744648023406481840,	0.744681395343426260,	0.744714765418667210,	0.744748133632121560,	0.744781499983705350,	0.744814864473335340,	0.744848227100928130,	0.744881587866400690,	
+0.744914946769668960,	0.744948303810649910,	0.744981658989260050,	0.745015012305416340,	0.745048363759034830,	0.745081713350032370,	0.745115061078325920,	0.745148406943831660,	
+0.745181750946466210,	0.745215093086146420,	0.745248433362789230,	0.745281771776310720,	0.745315108326627730,	0.745348443013656880,	0.745381775837315350,	0.745415106797518990,	
+0.745448435894184860,	0.745481763127229690,	0.745515088496570440,	0.745548412002123070,	0.745581733643804760,	0.745615053421532110,	0.745648371335222100,	0.745681687384790900,	
+0.745715001570155470,	0.745748313891232750,	0.745781624347939040,	0.745814932940191190,	0.745848239667906030,	0.745881544531000640,	0.745914847529391080,	0.745948148662994410,	
+0.745981447931727270,	0.746014745335506820,	0.746048040874249360,	0.746081334547871620,	0.746114626356290670,	0.746147916299423450,	0.746181204377186050,	0.746214490589495630,	
+0.746247774936269040,	0.746281057417423340,	0.746314338032874720,	0.746347616782540140,	0.746380893666336860,	0.746414168684181090,	0.746447441835989880,	0.746480713121680070,	
+0.746513982541168850,	0.746547250094372170,	0.746580515781207540,	0.746613779601591590,	0.746647041555441370,	0.746680301642673410,	0.746713559863204650,	0.746746816216951940,	
+0.746780070703832570,	0.746813323323762710,	0.746846574076659440,	0.746879822962439820,	0.746913069981020920,	0.746946315132319020,	0.746979558416251410,	0.747012799832734830,	
+0.747046039381686570,	0.747079277063022910,	0.747112512876661140,	0.747145746822518330,	0.747178978900510880,	0.747212209110555970,	0.747245437452570440,	0.747278663926471690,	
+0.747311888532176010,	0.747345111269600570,	0.747378332138662340,	0.747411551139278600,	0.747444768271365630,	0.747477983534840850,	0.747511196929621090,	0.747544408455623530,	
+0.747577618112764800,	0.747610825900961950,	0.747644031820131950,	0.747677235870192300,	0.747710438051059190,	0.747743638362650010,	0.747776836804882050,	0.747810033377671710,	
+0.747843228080936170,	0.747876420914592720,	0.747909611878558420,	0.747942800972749900,	0.747975988197084220,	0.748009173551478670,	0.748042357035850420,	0.748075538650116110,	
+0.748108718394192800,	0.748141896267997760,	0.748175072271448300,	0.748208246404460820,	0.748241418666952820,	0.748274589058841140,	0.748307757580043310,	0.748340924230475930,	
+0.748374089010056090,	0.748407251918701390,	0.748440412956328240,	0.748473572122854040,	0.748506729418195850,	0.748539884842271300,	0.748573038394996670,	0.748606190076289370,	
+0.748639339886066680,	0.748672487824245890,	0.748705633890743630,	0.748738778085477170,	0.748771920408363930,	0.748805060859321080,	0.748838199438265350,	0.748871336145114030,	
+0.748904470979784410,	0.748937603942194000,	0.748970735032259190,	0.749003864249897510,	0.749036991595026570,	0.749070117067562770,	0.749103240667423730,	0.749136362394526520,	
+0.749169482248788770,	0.749202600230126970,	0.749235716338458760,	0.749268830573701190,	0.749301942935771900,	0.749335053424587280,	0.749368162040065290,	0.749401268782122650,	
+0.749434373650677330,	0.749467476645645610,	0.749500577766945340,	0.749533677014493580,	0.749566774388207850,	0.749599869888004980,	0.749632963513802380,	0.749666055265517440,	
+0.749699145143067570,	0.749732233146369610,	0.749765319275341070,	0.749798403529899460,	0.749831485909961630,	0.749864566415444970,	0.749897645046266990,	0.749930721802345210,	
+0.749963796683596250,	0.749996869689937840,	0.750029940821287270,	0.750063010077562150,	0.750096077458679120,	0.750129142964556020,	0.750162206595110010,	0.750195268350258740,	
+0.750228328229919030,	0.750261386234008510,	0.750294442362444580,	0.750327496615144750,	0.750360548992025980,	0.750393599493005770,	0.750426648118001860,	0.750459694866930980,	
+0.750492739739710980,	0.750525782736259030,	0.750558823856492970,	0.750591863100329550,	0.750624900467686480,	0.750657935958481070,	0.750690969572631260,	0.750724001310053680,	
+0.750757031170666060,	0.750790059154385900,	0.750823085261130840,	0.750856109490817820,	0.750889131843364590,	0.750922152318688420,	0.750955170916707160,	0.750988187637337660,	
+0.751021202480497860,	0.751054215446105180,	0.751087226534076780,	0.751120235744330180,	0.751153243076783110,	0.751186248531353180,	0.751219252107957370,	0.751252253806513390,	
+0.751285253626938760,	0.751318251569151330,	0.751351247633067930,	0.751384241818606520,	0.751417234125684400,	0.751450224554219500,	0.751483213104128800,	0.751516199775330020,	
+0.751549184567740780,	0.751582167481278820,	0.751615148515861200,	0.751648127671405650,	0.751681104947829800,	0.751714080345051490,	0.751747053862987680,	0.751780025501556310,	
+0.751812995260675130,	0.751845963140261090,	0.751878929140232240,	0.751911893260506000,	0.751944855501000430,	0.751977815861632260,	0.752010774342319670,	0.752043730942980160,	
+0.752076685663531470,	0.752109638503890900,	0.752142589463976270,	0.752175538543705110,	0.752208485742995370,	0.752241431061764110,	0.752274374499929290,	0.752307316057408530,	
+0.752340255734119780,	0.752373193529980220,	0.752406129444907480,	0.752439063478819840,	0.752471995631634140,	0.752504925903268560,	0.752537854293640620,	0.752570780802668370,	
+0.752603705430268780,	0.752636628176360010,	0.752669549040859700,	0.752702468023685680,	0.752735385124755350,	0.752768300343986450,	0.752801213681296820,	0.752834125136604530,	
+0.752867034709826520,	0.752899942400880980,	0.752932848209685650,	0.752965752136158350,	0.752998654180216500,	0.753031554341777930,	0.753064452620760830,	0.753097349017082250,	
+0.753130243530660270,	0.753163136161412840,	0.753196026909257690,	0.753228915774112330,	0.753261802755894600,	0.753294687854522360,	0.753327571069913660,	0.753360452401985790,	
+0.753393331850656820,	0.753426209415844370,	0.753459085097466840,	0.753491958895441290,	0.753524830809685800,	0.753557700840118190,	0.753590568986656770,	0.753623435249218490,	
+0.753656299627721630,	0.753689162122084370,	0.753722022732223880,	0.753754881458058470,	0.753787738299505740,	0.753820593256483980,	0.753853446328910380,	0.753886297516703220,	
+0.753919146819780340,	0.753951994238059810,	0.753984839771459030,	0.754017683419896170,	0.754050525183289080,	0.754083365061556040,	0.754116203054614240,	0.754149039162381960,	
+0.754181873384777050,	0.754214705721717780,	0.754247536173121350,	0.754280364738906250,	0.754313191418990110,	0.754346016213291340,	0.754378839121727210,	0.754411660144215900,	
+0.754444479280675930,	0.754477296531024360,	0.754510111895179580,	0.754542925373059450,	0.754575736964582360,	0.754608546669665590,	0.754641354488227560,	0.754674160420185980,	
+0.754706964465459370,	0.754739766623965140,	0.754772566895621440,	0.754805365280346250,	0.754838161778057960,	0.754870956388674070,	0.754903749112112780,	0.754936539948292020,	
+0.754969328897130200,	0.755002115958544830,	0.755034901132454190,	0.755067684418776590,	0.755100465817429400,	0.755133245328331150,	0.755166022951399670,	0.755198798686553490,	
+0.755231572533710090,	0.755264344492787680,	0.755297114563704410,	0.755329882746378580,	0.755362649040727810,	0.755395413446670490,	0.755428175964124590,	0.755460936593008500,	
+0.755493695333239850,	0.755526452184736910,	0.755559207147417870,	0.755591960221201010,	0.755624711406004070,	0.755657460701745330,	0.755690208108343200,	0.755722953625715290,	
+0.755755697253780000,	0.755788438992455400,	0.755821178841660110,	0.755853916801311530,	0.755886652871328060,	0.755919387051628090,	0.755952119342129910,	0.755984849742751040,	
+0.756017578253410210,	0.756050304874025360,	0.756083029604515010,	0.756115752444796780,	0.756148473394789300,	0.756181192454410510,	0.756213909623579040,	0.756246624902212620,	
+0.756279338290229530,	0.756312049787548070,	0.756344759394086850,	0.756377467109763390,	0.756410172934496310,	0.756442876868204110,	0.756475578910804410,	0.756508279062215630,	
+0.756540977322356260,	0.756573673691144810,	0.756606368168498800,	0.756639060754336850,	0.756671751448577350,	0.756704440251138700,	0.756737127161938640,	0.756769812180895670,	
+0.756802495307928310,	0.756835176542954740,	0.756867855885893110,	0.756900533336662520,	0.756933208895179900,	0.756965882561364320,	0.756998554335134080,	0.757031224216407450,	
+0.757063892205102730,	0.757096558301138310,	0.757129222504433040,	0.757161884814904100,	0.757194545232470540,	0.757227203757050550,	0.757259860388562520,	0.757292515126924970,	
+0.757325167972055960,	0.757357818923874220,	0.757390467982298370,	0.757423115147245810,	0.757455760418635380,	0.757488403796385710,	0.757521045280414970,	0.757553684870641560,	
+0.757586322566983990,	0.757618958369360550,	0.757651592277690410,	0.757684224291890640,	0.757716854411880410,	0.757749482637577910,	0.757782108968901750,	0.757814733405770320,	
+0.757847355948102040,	0.757879976595815960,	0.757912595348829270,	0.757945212207061240,	0.757977827170430050,	0.758010440238854440,	0.758043051412252700,	0.758075660690543220,	
+0.758108268073644620,	0.758140873561476080,	0.758173477153954670,	0.758206078850999440,	0.758238678652529140,	0.758271276558462160,	0.758303872568717010,	0.758336466683212200,	
+0.758369058901866680,	0.758401649224597960,	0.758434237651325120,	0.758466824181966760,	0.758499408816441290,	0.758531991554667330,	0.758564572396563270,	0.758597151342047970,	
+0.758629728391040260,	0.758662303543457650,	0.758694876799219320,	0.758727448158243780,	0.758760017620449530,	0.758792585185755430,	0.758825150854079760,	0.758857714625341130,	
+0.758890276499458950,	0.758922836476350390,	0.758955394555934750,	0.758987950738130630,	0.759020505022856670,	0.759053057410031480,	0.759085607899573580,	0.759118156491402240,	
+0.759150703185434980,	0.759183247981590980,	0.759215790879788740,	0.759248331879947110,	0.759280870981984600,	0.759313408185819940,	0.759345943491371740,	0.759378476898559310,	
+0.759411008407300140,	0.759443538017513410,	0.759476065729117740,	0.759508591542031990,	0.759541115456174860,	0.759573637471464780,	0.759606157587820690,	0.759638675805161760,	
+0.759671192123405610,	0.759703706542471440,	0.759736219062277950,	0.759768729682744000,	0.759801238403788100,	0.759833745225329200,	0.759866250147286590,	0.759898753169577670,	
+0.759931254292121830,	0.759963753514838030,	0.759996250837644660,	0.760028746260460690,	0.760061239783204940,	0.760093731405796060,	0.760126221128153420,	0.760158708950194660,	
+0.760191194871839170,	0.760223678893005570,	0.760256161013612820,	0.760288641233579750,	0.760321119552825000,	0.760353595971268060,	0.760386070488826560,	0.760418543105419900,	
+0.760451013820966800,	0.760483482635386230,	0.760515949548596910,	0.760548414560517800,	0.760580877671067520,	0.760613338880165690,	0.760645798187730040,	0.760678255593679740,	
+0.760710711097933870,	0.760743164700411260,	0.760775616401030640,	0.760808066199711090,	0.760840514096371320,	0.760872960090930860,	0.760905404183307430,	0.760937846373420430,	
+0.760970286661188820,	0.761002725046531550,	0.761035161529367450,	0.761067596109615390,	0.761100028787194960,	0.761132459562023910,	0.761164888434021750,	0.761197315403107310,	
+0.761229740469199560,	0.761262163632217440,	0.761294584892080020,	0.761327004248706030,	0.761359421702015090,	0.761391837251925160,	0.761424250898355530,	0.761456662641225250,	
+0.761489072480453390,	0.761521480415958800,	0.761553886447660530,	0.761586290575478220,	0.761618692799329480,	0.761651093119134040,	0.761683491534810850,	0.761715888046278880,	
+0.761748282653457290,	0.761780675356264920,	0.761813066154620970,	0.761845455048444810,	0.761877842037654520,	0.761910227122169600,	0.761942610301909130,	0.761974991576792050,	
+0.762007370946737540,	0.762039748411664660,	0.762072123971492380,	0.762104497626140300,	0.762136869375526490,	0.762169239219570470,	0.762201607158191300,	0.762233973191308150,	
+0.762266337318840080,	0.762298699540706170,	0.762331059856826140,	0.762363418267117840,	0.762395774771501000,	0.762428129369894680,	0.762460482062218060,	0.762492832848390200,	
+0.762525181728330280,	0.762557528701957480,	0.762589873769191410,	0.762622216929950030,	0.762654558184153180,	0.762686897531719810,	0.762719234972569330,	0.762751570506620680,	
+0.762783904133793160,	0.762816235854005820,	0.762848565667178510,	0.762880893573229190,	0.762913219572077580,	0.762945543663642980,	0.762977865847844550,	0.763010186124601360,	
+0.763042504493832820,	0.763074820955458530,	0.763107135509396680,	0.763139448155566890,	0.763171758893888550,	0.763204067724280840,	0.763236374646662830,	0.763268679660954020,	
+0.763300982767073480,	0.763333283964941050,	0.763365583254474790,	0.763397880635594660,	0.763430176108219730,	0.763462469672269380,	0.763494761327662920,	0.763527051074319510,	
+0.763559338912159100,	0.763591624841099660,	0.763623908861061240,	0.763656190971963020,	0.763688471173724400,	0.763720749466264560,	0.763753025849502780,	0.763785300323358450,	
+0.763817572887751430,	0.763849843542599990,	0.763882112287823880,	0.763914379123342590,	0.763946644049075200,	0.763978907064941310,	0.764011168170860120,	0.764043427366751020,	
+0.764075684652533840,	0.764107940028126990,	0.764140193493450190,	0.764172445048422970,	0.764204694692964700,	0.764236942426994580,	0.764269188250432220,	0.764301432163197350,	
+0.764333674165208370,	0.764365914256385230,	0.764398152436647220,	0.764430388705913950,	0.764462623064104620,	0.764494855511138720,	0.764527086046935760,	0.764559314671415580,	
+0.764591541384496590,	0.764623766186098730,	0.764655989076141520,	0.764688210054544240,	0.764720429121226510,	0.764752646276107620,	0.764784861519107180,	0.764817074850145160,	
+0.764849286269139840,	0.764881495776011390,	0.764913703370679100,	0.764945909053062590,	0.764978112823081370,	0.765010314680654720,	0.765042514625702940,	0.765074712658144310,	
+0.765106908777898890,	0.765139102984886190,	0.765171295279025830,	0.765203485660237100,	0.765235674128439740,	0.765267860683553120,	0.765300045325497450,	0.765332228054191100,	
+0.765364408869554260,	0.765396587771506320,	0.765428764759966910,	0.765460939834855520,	0.765493112996091910,	0.765525284243596000,	0.765557453577286440,	0.765589620997083050,	
+0.765621786502905800,	0.765653950094673960,	0.765686111772307280,	0.765718271535725360,	0.765750429384847720,	0.765782585319594530,	0.765814739339884310,	0.765846891445637330,	
+0.765879041636773120,	0.765911189913211170,	0.765943336274871430,	0.765975480721673210,	0.766007623253536330,	0.766039763870380970,	0.766071902572125650,	0.766104039358690540,	
+0.766136174229995360,	0.766168307185959740,	0.766200438226503300,	0.766232567351545880,	0.766264694561007540,	0.766296819854806910,	0.766328943232864160,	0.766361064695099130,	
+0.766393184241431440,	0.766425301871780710,	0.766457417586066780,	0.766489531384209280,	0.766521643266128590,	0.766553753231743240,	0.766585861280973390,	0.766617967413739000,	
+0.766650071629959570,	0.766682173929555070,	0.766714274312445100,	0.766746372778549400,	0.766778469327788370,	0.766810563960080630,	0.766842656675346460,	0.766874747473505700,	
+0.766906836354477980,	0.766938923318183250,	0.766971008364541130,	0.767003091493472120,	0.767035172704894740,	0.767067251998729490,	0.767099329374896110,	0.767131404833314430,	
+0.767163478373904200,	0.767195549996585240,	0.767227619701277510,	0.767259687487901190,	0.767291753356375120,	0.767323817306619690,	0.767355879338554650,	0.767387939452100040,	
+0.767419997647175500,	0.767452053923700970,	0.767484108281596860,	0.767516160720781880,	0.767548211241176560,	0.767580259842700730,	0.767612306525274240,	0.767644351288816920,	
+0.767676394133248730,	0.767708435058489620,	0.767740474064460000,	0.767772511151078580,	0.767804546318265890,	0.767836579565941870,	0.767868610894026360,	0.767900640302439320,	
+0.767932667791100700,	0.767964693359930340,	0.767996717008848860,	0.768028738737775110,	0.768060758546629360,	0.768092776435331800,	0.768124792403802380,	0.768156806451960830,	
+0.768188818579727320,	0.768220828787022360,	0.768252837073764680,	0.768284843439875020,	0.768316847885273210,	0.768348850409879210,	0.768380851013613200,	0.768412849696395010,	
+0.768444846458144700,	0.768476841298782800,	0.768508834218228240,	0.768540825216401660,	0.768572814293222990,	0.768604801448612210,	0.768636786682489580,	0.768668769994774850,	
+0.768700751385388180,	0.768732730854250310,	0.768764708401279970,	0.768796684026397890,	0.768828657729524020,	0.768860629510578650,	0.768892599369481620,	0.768924567306153110,	
+0.768956533320513720,	0.768988497412482540,	0.769020459581979950,	0.769052419828926360,	0.769084378153241600,	0.769116334554845960,	0.769148289033659500,	0.769180241589602300,	
+0.769212192222595070,	0.769244140932556770,	0.769276087719408030,	0.769308032583069230,	0.769339975523460230,	0.769371916540501410,	0.769403855634112730,	0.769435792804214920,	
+0.769467728050727160,	0.769499661373570070,	0.769531592772663810,	0.769563522247928570,	0.769595449799284510,	0.769627375426651830,	0.769659299129950680,	0.769691220909101910,	
+0.769723140764024480,	0.769755058694639230,	0.769786974700866320,	0.769818888782625940,	0.769850800939838380,	0.769882711172423790,	0.769914619480302490,	0.769946525863395070,	
+0.769978430321620940,	0.770010332854900610,	0.770042233463154480,	0.770074132146302830,	0.770106028904265830,	0.770137923736963660,	0.770169816644317380,	0.770201707626245850,	
+0.770233596682670110,	0.770265483813510450,	0.770297369018686950,	0.770329252298120220,	0.770361133651730200,	0.770393013079437420,	0.770424890581162590,	0.770456766156825010,	
+0.770488639806345520,	0.770520511529644400,	0.770552381326642060,	0.770584249197258760,	0.770616115141414810,	0.770647979159031160,	0.770679841250026980,	0.770711701414323210,	
+0.770743559651840270,	0.770775415962498320,	0.770807270346217770,	0.770839122802919220,	0.770870973332522750,	0.770902821934949410,	0.770934668610118500,	0.770966513357950860,	
+0.770998356178366980,	0.771030197071287170,	0.771062036036631930,	0.771093873074321530,	0.771125708184276500,	0.771157541366417790,	0.771189372620664670,	0.771221201946938000,	
+0.771253029345158380,	0.771284854815246220,	0.771316678357121920,	0.771348499970705870,	0.771380319655919240,	0.771412137412681220,	0.771443953240912750,	0.771475767140534450,	
+0.771507579111466830,	0.771539389153630180,	0.771571197266945010,	0.771603003451331930,	0.771634807706711890,	0.771666610033004190,	0.771698410430130100,	0.771730208898009920,	
+0.771762005436564150,	0.771793800045713410,	0.771825592725378210,	0.771857383475478940,	0.771889172295936900,	0.771920959186671360,	0.771952744147603290,	0.771984527178653510,	
+0.772016308279742320,	0.772048087450790340,	0.772079864691718190,	0.772111640002446920,	0.772143413382896050,	0.772175184832986530,	0.772206954352639200,	0.772238721941774340,	
+0.772270487600312800,	0.772302251328174980,	0.772334013125281490,	0.772365772991553620,	0.772397530926910660,	0.772429286931273880,	0.772461041004563920,	0.772492793146701380,	
+0.772524543357606900,	0.772556291637200960,	0.772588037985404870,	0.772619782402138130,	0.772651524887322030,	0.772683265440876950,	0.772715004062723860,	0.772746740752783160,	
+0.772778475510975670,	0.772810208337221920,	0.772841939231443290,	0.772873668193559290,	0.772905395223491000,	0.772937120321159240,	0.772968843486484760,	0.773000564719388050,	
+0.773032284019790070,	0.773064001387611330,	0.773095716822773120,	0.773127430325195040,	0.773159141894798400,	0.773190851531503910,	0.773222559235232310,	0.773254265005904330,	
+0.773285968843440590,	0.773317670747762590,	0.773349370718789840,	0.773381068756443630,	0.773412764860644810,	0.773444459031313980,	0.773476151268372100,	0.773507841571739800,	
+0.773539529941337790,	0.773571216377087700,	0.773602900878908930,	0.773634583446722870,	0.773666264080450360,	0.773697942780012250,	0.773729619545329260,	0.773761294376322130,	
+0.773792967272911910,	0.773824638235019790,	0.773856307262565490,	0.773887974355470410,	0.773919639513655390,	0.773951302737041270,	0.773982964025549000,	0.774014623379099210,	
+0.774046280797613400,	0.774077936281011400,	0.774109589829214520,	0.774141241442143690,	0.774172891119719760,	0.774204538861863580,	0.774236184668496090,	0.774267828539538130,	
+0.774299470474911100,	0.774331110474534840,	0.774362748538330870,	0.774394384666220010,	0.774426018858123230,	0.774457651113961370,	0.774489281433655360,	0.774520909817126620,	
+0.774552536264295210,	0.774584160775082300,	0.774615783349409170,	0.774647403987196450,	0.774679022688365300,	0.774710639452836470,	0.774742254280531120,	0.774773867171370760,	
+0.774805478125275120,	0.774837087142165700,	0.774868694221963690,	0.774900299364589930,	0.774931902569965360,	0.774963503838011050,	0.774995103168647950,	0.775026700561797680,	
+0.775058296017380190,	0.775089889535316880,	0.775121481115528810,	0.775153070757937050,	0.775184658462462650,	0.775216244229026570,	0.775247828057550550,	0.775279409947954300,	
+0.775310989900159450,	0.775342567914087290,	0.775374143989658650,	0.775405718126794600,	0.775437290325416310,	0.775468860585444730,	0.775500428906801600,	0.775531995289406860,	
+0.775563559733182140,	0.775595122238048500,	0.775626682803926990,	0.775658241430738920,	0.775689798118405100,	0.775721352866846850,	0.775752905675985760,	0.775784456545741910,	
+0.775816005476036800,	0.775847552466791820,	0.775879097517927830,	0.775910640629366210,	0.775942181801027920,	0.775973721032834800,	0.776005258324706680,	0.776036793676565530,	
+0.776068327088332400,	0.776099858559928360,	0.776131388091274800,	0.776162915682292680,	0.776194441332903270,	0.776225965043028320,	0.776257486812587880,	0.776289006641503800,	
+0.776320524529697130,	0.776352040477089280,	0.776383554483601190,	0.776415066549154260,	0.776446576673670230,	0.776478084857069150,	0.776509591099272870,	0.776541095400202660,	
+0.776572597759779710,	0.776604098177925310,	0.776635596654560610,	0.776667093189606920,	0.776698587782986060,	0.776730080434618110,	0.776761571144425010,	0.776793059912327940,	
+0.776824546738248300,	0.776856031622107260,	0.776887514563826100,	0.776918995563326220,	0.776950474620529350,	0.776981951735355780,	0.777013426907727340,	0.777044900137565330,	
+0.777076371424791020,	0.777107840769325820,	0.777139308171091000,	0.777170773630008530,	0.777202237145998450,	0.777233698718982850,	0.777265158348883100,	0.777296616035620280,	
+0.777328071779116000,	0.777359525579291550,	0.777390977436068330,	0.777422427349368170,	0.777453875319111360,	0.777485321345219860,	0.777516765427615050,	0.777548207566218340,	
+0.777579647760951230,	0.777611086011734900,	0.777642522318490850,	0.777673956681141030,	0.777705389099605740,	0.777736819573807030,	0.777768248103666290,	0.777799674689104940,	
+0.777831099330044350,	0.777862522026406040,	0.777893942778111970,	0.777925361585082520,	0.777956778447239650,	0.777988193364504750,	0.778019606336799450,	0.778051017364045140,	
+0.778082426446163320,	0.778113833583075400,	0.778145238774703430,	0.778176642020967810,	0.778208043321790610,	0.778239442677093220,	0.778270840086797260,	0.778302235550824230,	
+0.778333629069095640,	0.778365020641533460,	0.778396410268058280,	0.778427797948591960,	0.778459183683056220,	0.778490567471372460,	0.778521949313462410,	0.778553329209247360,	
+0.778584707158649030,	0.778616083161589480,	0.778647457217989110,	0.778678829327770220,	0.778710199490854180,	0.778741567707162630,	0.778772933976617180,	0.778804298299139440,	
+0.778835660674650930,	0.778867021103073820,	0.778898379584328500,	0.778929736118337380,	0.778961090705021840,	0.778992443344303620,	0.779023794036104220,	0.779055142780345380,	
+0.779086489576949370,	0.779117834425836380,	0.779149177326928900,	0.779180518280148450,	0.779211857285416750,	0.779243194342655320,	0.779274529451785990,	0.779305862612730270,	
+0.779337193825410450,	0.779368523089747130,	0.779399850405662510,	0.779431175773078300,	0.779462499191916010,	0.779493820662097600,	0.779525140183544570,	0.779556457756179320,	
+0.779587773379922360,	0.779619087054695850,	0.779650398780421750,	0.779681708557021570,	0.779713016384417150,	0.779744322262530210,	0.779775626191282490,	0.779806928170596160,	
+0.779838228200392060,	0.779869526280592360,	0.779900822411118800,	0.779932116591893210,	0.779963408822837320,	0.779994699103872980,	0.780025987434921800,	0.780057273815906280,	
+0.780088558246746940,	0.780119840727366290,	0.780151121257685930,	0.780182399837627830,	0.780213676467113700,	0.780244951146065510,	0.780276223874405320,	0.780307494652054180,	
+0.780338763478934160,	0.780370030354967330,	0.780401295280075400,	0.780432558254180230,	0.780463819277203650,	0.780495078349067510,	0.780526335469694190,	0.780557590639004540,	
+0.780588843856920960,	0.780620095123365170,	0.780651344438259230,	0.780682591801524880,	0.780713837213084070,	0.780745080672858640,	0.780776322180771090,	0.780807561736742150,	
+0.780838799340694330,	0.780870034992549480,	0.780901268692229640,	0.780932500439656560,	0.780963730234752180,	0.780994958077439130,	0.781026183967638010,	0.781057407905271560,	
+0.781088629890261510,	0.781119849922529920,	0.781151068001998630,	0.781182284128589810,	0.781213498302225200,	0.781244710522827400,	0.781275920790317270,	0.781307129104617300,	
+0.781338335465649570,	0.781369539873335910,	0.781400742327598490,	0.781431942828359260,	0.781463141375540630,	0.781494337969063650,	0.781525532608850830,	0.781556725294824120,	
+0.781587916026905580,	0.781619104805017280,	0.781650291629081280,	0.781681476499019530,	0.781712659414754540,	0.781743840376207480,	0.781775019383300740,	0.781806196435956500,	
+0.781837371534096710,	0.781868544677643550,	0.781899715866518960,	0.781930885100645230,	0.781962052379944650,	0.781993217704338490,	0.782024381073749280,	0.782055542488099160,	
+0.782086701947310110,	0.782117859451304300,	0.782149015000003890,	0.782180168593331500,	0.782211320231208100,	0.782242469913556390,	0.782273617640298570,	0.782304763411356690,	
+0.782335907226652800,	0.782367049086109210,	0.782398188989648080,	0.782429326937191920,	0.782460462928662000,	0.782491596963980740,	0.782522729043070630,	0.782553859165853630,	
+0.782584987332252120,	0.782616113542187960,	0.782647237795583650,	0.782678360092361690,	0.782709480432443370,	0.782740598815751310,	0.782771715242207790,	0.782802829711734980,	
+0.782833942224255060,	0.782865052779690210,	0.782896161377963360,	0.782927268018995590,	0.782958372702709630,	0.782989475429027750,	0.783020576197872130,	0.783051675009165060,	
+0.783082771862828820,	0.783113866758785690,	0.783144959696958410,	0.783176050677268250,	0.783207139699637840,	0.783238226763989690,	0.783269311870245950,	0.783300395018328930,	
+0.783331476208160900,	0.783362555439664710,	0.783393632712761630,	0.783424708027374410,	0.783455781383425530,	0.783486852780837070,	0.783517922219531540,	0.783548989699431210,	
+0.783580055220458370,	0.783611118782535980,	0.783642180385585200,	0.783673240029528980,	0.783704297714289730,	0.783735353439789730,	0.783766407205951250,	0.783797459012696820,	
+0.783828508859948700,	0.783859556747629860,	0.783890602675661690,	0.783921646643966910,	0.783952688652468030,	0.783983728701087460,	0.784014766789747460,	0.784045802918370670,	
+0.784076837086879920,	0.784107869295196380,	0.784138899543243340,	0.784169927830942970,	0.784200954158217780,	0.784231978524990270,	0.784263000931182730,	0.784294021376717780,	
+0.784325039861518250,	0.784356056385505540,	0.784387070948602720,	0.784418083550732280,	0.784449094191816520,	0.784480102871778160,	0.784511109590539490,	0.784542114348023010,	
+0.784573117144151900,	0.784604117978847330,	0.784635116852032470,	0.784666113763629820,	0.784697108713561910,	0.784728101701751330,	0.784759092728120390,	0.784790081792592240,	
+0.784821068895088400,	0.784852054035531820,	0.784883037213845220,	0.784914018429950900,	0.784944997683771570,	0.784975974975229860,	0.785006950304248050,	0.785037923670749540,	
+0.785068895074655600,	0.785099864515889420,	0.785130831994373610,	0.785161797510030680,	0.785192761062783350,	0.785223722652554020,	0.785254682279265980,	0.785285639942840620,	
+0.785316595643201330,	0.785347549380270400,	0.785378501153970570,	0.785409450964224540,	0.785440398810954950,	0.785471344694084310,	0.785502288613535880,	0.785533230569231080,	
+0.785564170561093290,	0.785595108589045130,	0.785626044653009110,	0.785656978752907960,	0.785687910888664410,	0.785718841060201070,	0.785749769267441220,	0.785780695510306380,	
+0.785811619788719720,	0.785842542102604070,	0.785873462451882050,	0.785904380836476400,	0.785935297256309840,	0.785966211711305540,	0.785997124201385120,	0.786028034726471980,	
+0.786058943286488620,	0.786089849881357990,	0.786120754511002830,	0.786151657175345630,	0.786182557874309350,	0.786213456607817160,	0.786244353375790910,	0.786275248178153750,	
+0.786306141014828320,	0.786337031885737670,	0.786367920790804420,	0.786398807729951410,	0.786429692703101260,	0.786460575710177580,	0.786491456751101770,	0.786522335825797450,	
+0.786553212934187230,	0.786584088076193950,	0.786614961251740460,	0.786645832460749590,	0.786676701703144630,	0.786707568978847420,	0.786738434287781230,	0.786769297629869020,	
+0.786800159005033640,	0.786831018413197690,	0.786861875854284350,	0.786892731328216240,	0.786923584834916870,	0.786954436374307950,	0.786985285946313010,	0.787016133550854760,	
+0.787046979187856270,	0.787077822857240260,	0.787108664558929690,	0.787139504292848070,	0.787170342058917120,	0.787201177857060340,	0.787232011687200580,	0.787262843549260790,	
+0.787293673443163920,	0.787324501368832810,	0.787355327326190510,	0.787386151315160430,	0.787416973335664410,	0.787447793387625940,	0.787478611470967980,	0.787509427585613490,	
+0.787540241731485510,	0.787571053908506900,	0.787601864116600600,	0.787632672355690230,	0.787663478625697520,	0.787694282926546310,	0.787725085258159210,	0.787755885620459510,	
+0.787786684013370040,	0.787817480436813990,	0.787848274890714630,	0.787879067374994020,	0.787909857889575900,	0.787940646434383000,	0.787971433009338580,	0.788002217614365510,	
+0.788033000249386940,	0.788063780914325830,	0.788094559609105790,	0.788125336333648900,	0.788156111087878640,	0.788186883871717980,	0.788217654685090310,	0.788248423527918350,	
+0.788279190400125400,	0.788309955301634950,	0.788340718232369180,	0.788371479192251590,	0.788402238181205250,	0.788432995199153330,	0.788463750246018890,	0.788494503321725100,	
+0.788525254426195030,	0.788556003559352400,	0.788586750721119280,	0.788617495911419280,	0.788648239130175450,	0.788678980377310990,	0.788709719652749160,	0.788740456956413040,	
+0.788771192288225790,	0.788801925648111020,	0.788832657035990930,	0.788863386451789220,	0.788894113895429070,	0.788924839366833550,	0.788955562865925940,	0.788986284392629520,	
+0.789017003946867910,	0.789047721528563170,	0.789078437137639140,	0.789109150774019110,	0.789139862437626130,	0.789170572128383490,	0.789201279846214470,	0.789231985591042130,	
+0.789262689362790540,	0.789293391161381530,	0.789324090986739170,	0.789354788838786510,	0.789385484717446850,	0.789416178622643570,	0.789446870554299740,	0.789477560512338860,	
+0.789508248496684550,	0.789538934507259090,	0.789569618543986220,	0.789600300606789430,	0.789630980695591790,	0.789661658810316690,	0.789692334950887530,	0.789723009117228040,	
+0.789753681309260490,	0.789784351526908730,	0.789815019770096050,	0.789845686038745830,	0.789876350332781470,	0.789907012652126150,	0.789937672996703370,	0.789968331366436960,	
+0.789998987761249110,	0.790029642181063750,	0.790060294625804400,	0.790090945095394240,	0.790121593589756750,	0.790152240108815240,	0.790182884652493760,	0.790213527220714470,	
+0.790244167813401340,	0.790274806430477870,	0.790305443071867230,	0.790336077737493150,	0.790366710427278800,	0.790397341141147680,	0.790427969879023750,	0.790458596640829290,	
+0.790489221426488480,	0.790519844235924470,	0.790550465069060900,	0.790581083925821270,	0.790611700806128860,	0.790642315709907170,	0.790672928637080160,	0.790703539587570450,	
+0.790734148561301750,	0.790764755558197810,	0.790795360578181890,	0.790825963621177630,	0.790856564687108410,	0.790887163775898290,	0.790917760887469790,	0.790948356021746850,	
+0.790978949178653080,	0.791009540358111880,	0.791040129560046880,	0.791070716784381460,	0.791101302031039340,	0.791131885299944490,	0.791162466591019410,	0.791193045904188040,	
+0.791223623239374120,	0.791254198596501150,	0.791284771975492740,	0.791315343376272410,	0.791345912798763650,	0.791376480242890650,	0.791407045708575900,	0.791437609195743570,	
+0.791468170704317190,	0.791498730234220460,	0.791529287785376790,	0.791559843357710010,	0.791590396951144080,	0.791620948565601610,	0.791651498201006890,	0.791682045857283300,	
+0.791712591534354690,	0.791743135232144570,	0.791773676950576540,	0.791804216689574350,	0.791834754449062260,	0.791865290228962570,	0.791895824029199780,	0.791926355849697390,	
+0.791956885690379140,	0.791987413551168640,	0.792017939431989610,	0.792048463332766350,	0.792078985253421350,	0.792109505193878790,	0.792140023154062510,	0.792170539133896230,	
+0.792201053133303580,	0.792231565152208270,	0.792262075190534150,	0.792292583248205280,	0.792323089325144390,	0.792353593421275870,	0.792384095536523340,	0.792414595670810520,	
+0.792445093824061250,	0.792475589996199270,	0.792506084187148300,	0.792536576396832610,	0.792567066625174950,	0.792597554872099600,	0.792628041137530490,	0.792658525421391150,	
+0.792689007723605620,	0.792719488044097420,	0.792749966382791160,	0.792780442739609460,	0.792810917114476490,	0.792841389507316420,	0.792871859918052760,	0.792902328346609450,	
+0.792932794792910340,	0.792963259256879270,	0.792993721738440630,	0.793024182237517030,	0.793054640754033090,	0.793085097287912430,	0.793115551839079110,	0.793146004407456860,	
+0.793176454992969630,	0.793206903595541360,	0.793237350215096230,	0.793267794851557180,	0.793298237504848740,	0.793328678174894610,	0.793359116861618860,	0.793389553564945340,	
+0.793419988284797870,	0.793450421021100970,	0.793480851773777470,	0.793511280542751880,	0.793541707327948150,	0.793572132129290010,	0.793602554946701620,	0.793632975780106830,	
+0.793663394629429590,	0.793693811494594500,	0.793724226375524200,	0.793754639272143400,	0.793785050184376060,	0.793815459112146020,	0.793845866055377320,	0.793876271013993940,	
+0.793906673987920470,	0.793937074977079770,	0.793967473981396440,	0.793997871000794330,	0.794028266035197610,	0.794058659084530220,	0.794089050148716110,	0.794119439227679360,	
+0.794149826321344680,	0.794180211429634800,	0.794210594552474450,	0.794240975689787580,	0.794271354841498240,	0.794301732007530630,	0.794332107187808560,	0.794362480382256320,	
+0.794392851590798310,	0.794423220813357700,	0.794453588049858990,	0.794483953300226360,	0.794514316564383870,	0.794544677842255580,	0.794575037133765540,	0.794605394438838490,	
+0.794635749757397480,	0.794666103089366920,	0.794696454434671300,	0.794726803793234460,	0.794757151164980580,	0.794787496549833830,	0.794817839947718370,	0.794848181358558840,	
+0.794878520782278280,	0.794908858218801420,	0.794939193668052440,	0.794969527129955500,	0.794999858604434670,	0.795030188091414350,	0.795060515590818360,	0.795090841102571780,	
+0.795121164626597430,	0.795151486162820280,	0.795181805711164370,	0.795212123271553880,	0.795242438843913210,	0.795272752428166420,	0.795303064024238230,	0.795333373632051810,	
+0.795363681251532010,	0.795393986882602990,	0.795424290525189040,	0.795454592179214330,	0.795484891844603140,	0.795515189521279750,	0.795545485209168900,	0.795575778908193860,	
+0.795606070618279260,	0.795636360339349590,	0.795666648071328920,	0.795696933814141750,	0.795727217567712140,	0.795757499331965050,	0.795787779106823740,	0.795818056892212860,	
+0.795848332688056990,	0.795878606494280110,	0.795908878310806810,	0.795939148137561390,	0.795969415974468020,	0.795999681821451640,	0.796029945678435550,	0.796060207545344570,	
+0.796090467422103100,	0.796120725308635420,	0.796150981204865940,	0.796181235110719030,	0.796211487026118990,	0.796241736950990760,	0.796271984885257740,	0.796302230828844660,	
+0.796332474781676130,	0.796362716743676310,	0.796392956714769730,	0.796423194694880760,	0.796453430683934260,	0.796483664681853720,	0.796513896688564090,	0.796544126703989660,	
+0.796574354728054820,	0.796604580760684190,	0.796634804801802150,	0.796665026851333000,	0.796695246909201900,	0.796725464975332030,	0.796755681049648670,	0.796785895132075980,	
+0.796816107222538590,	0.796846317320960900,	0.796876525427267390,	0.796906731541382700,	0.796936935663231650,	0.796967137792737650,	0.796997337929825860,	0.797027536074420780,	
+0.797057732226446820,	0.797087926385828480,	0.797118118552490370,	0.797148308726357560,	0.797178496907353320,	0.797208683095402940,	0.797238867290430810,	0.797269049492361550,	
+0.797299229701119660,	0.797329407916629650,	0.797359584138816140,	0.797389758367604170,	0.797419930602917380,	0.797450100844680600,	0.797480269092818660,	0.797510435347256070,	
+0.797540599607917340,	0.797570761874727200,	0.797600922147610580,	0.797631080426491220,	0.797661236711294070,	0.797691391001943860,	0.797721543298365200,	0.797751693600482700,	
+0.797781841908220880,	0.797811988221504450,	0.797842132540258710,	0.797872274864407040,	0.797902415193874610,	0.797932553528586270,	0.797962689868466410,	0.797992824213439980,	
+0.798022956563431360,	0.798053086918365410,	0.798083215278167280,	0.798113341642760600,	0.798143466012070530,	0.798173588386021820,	0.798203708764539050,	0.798233827147547090,	
+0.798263943534970540,	0.798294057926734690,	0.798324170322763150,	0.798354280722981200,	0.798384389127313470,	0.798414495535684890,	0.798444599948019970,	0.798474702364243560,	
+0.798504802784280490,	0.798534901208055810,	0.798564997635493490,	0.798595092066518570,	0.798625184501055910,	0.798655274939030320,	0.798685363380366550,	0.798715449824989430,	
+0.798745534272824130,	0.798775616723794490,	0.798805697177825790,	0.798835775634842870,	0.798865852094770570,	0.798895926557533500,	0.798925999023056720,	0.798956069491264960,	
+0.798986137962083510,	0.799016204435436190,	0.799046268911248300,	0.799076331389444890,	0.799106391869950580,	0.799136450352690210,	0.799166506837588830,	0.799196561324571060,	
+0.799226613813562530,	0.799256664304486830,	0.799286712797269590,	0.799316759291835540,	0.799346803788109520,	0.799376846286016460,	0.799406886785481440,	0.799436925286429620,	
+0.799466961788785070,	0.799496996292472950,	0.799527028797418440,	0.799557059303546370,	0.799587087810781580,	0.799617114319049140,	0.799647138828273870,	0.799677161338381290,	
+0.799707181849295350,	0.799737200360941420,	0.799767216873244480,	0.799797231386129460,	0.799827243899521310,	0.799857254413345210,	0.799887262927525880,	0.799917269441988930,	
+0.799947273956658320,	0.799977276471459440,	0.800007276986317350,	0.800037275501157220,	0.800067272015903770,	0.800097266530482190,	0.800127259044817960,	0.800157249558835160,	
+0.800187238072459060,	0.800217224585614950,	0.800247209098227770,	0.800277191610222590,	0.800307172121524470,	0.800337150632058240,	0.800367127141749850,	0.800397101650523020,	
+0.800427074158303500,	0.800457044665016220,	0.800487013170586350,	0.800516979674939070,	0.800546944177999210,	0.800576906679692500,	0.800606867179943120,	0.800636825678676440,	
+0.800666782175817770,	0.800696736671292040,	0.800726689165024650,	0.800756639656940440,	0.800786588146964570,	0.800816534635022890,	0.800846479121039230,	0.800876421604939440,	
+0.800906362086648560,	0.800936300566091770,	0.800966237043194250,	0.800996171517881160,	0.801026103990077680,	0.801056034459709410,	0.801085962926700420,	0.801115889390976670,	
+0.801145813852463200,	0.801175736311085070,	0.801205656766767690,	0.801235575219436220,	0.801265491669016280,	0.801295406115432040,	0.801325318558609330,	0.801355228998473330,	
+0.801385137434949210,	0.801415043867962360,	0.801444948297437840,	0.801474850723300940,	0.801504751145477370,	0.801534649563891530,	0.801564545978468930,	0.801594440389135080,	
+0.801624332795815020,	0.801654223198434270,	0.801684111596917880,	0.801713997991191140,	0.801743882381180110,	0.801773764766808730,	0.801803645148002950,	0.801833523524688060,	
+0.801863399896789340,	0.801893274264232180,	0.801923146626941750,	0.801953016984844000,	0.801982885337863220,	0.802012751685925230,	0.802042616028955440,	0.802072478366878890,	
+0.802102338699621330,	0.802132197027107920,	0.802162053349263940,	0.802191907666015340,	0.802221759977286510,	0.802251610283003290,	0.802281458583090970,	0.802311304877475040,	
+0.802341149166080900,	0.802370991448833840,	0.802400831725659790,	0.802430669996483160,	0.802460506261229890,	0.802490340519825260,	0.802520172772194900,	0.802550003018264070,	
+0.802579831257958180,	0.802609657491202830,	0.802639481717923760,	0.802669303938045480,	0.802699124151493910,	0.802728942358194590,	0.802758758558072880,	0.802788572751054310,	
+0.802818384937064260,	0.802848195116028340,	0.802878003287872400,	0.802907809452520830,	0.802937613609899900,	0.802967415759934800,	0.802997215902551240,	0.803027014037674620,	
+0.803056810165230450,	0.803086604285144890,	0.803116396397342220,	0.803146186501748520,	0.803175974598289380,	0.803205760686890200,	0.803235544767476830,	0.803265326839974430,	
+0.803295106904308830,	0.803324884960405880,	0.803354661008190310,	0.803384435047587940,	0.803414207078524620,	0.803443977100925630,	0.803473745114716810,	0.803503511119823650,	
+0.803533275116171670,	0.803563037103687040,	0.803592797082294250,	0.803622555051919480,	0.803652311012488350,	0.803682064963926470,	0.803711816906159450,	0.803741566839112800,	
+0.803771314762712800,	0.803801060676883950,	0.803830804581552540,	0.803860546476644070,	0.803890286362084150,	0.803920024237798620,	0.803949760103713000,	0.803979493959752990,	
+0.804009225805844770,	0.804038955641912860,	0.804068683467883740,	0.804098409283682810,	0.804128133089235810,	0.804157854884468560,	0.804187574669306680,	0.804217292443676350,	
+0.804247008207502280,	0.804276721960710650,	0.804306433703227300,	0.804336143434977830,	0.804365851155887880,	0.804395556865883490,	0.804425260564890050,	0.804454962252834080,	
+0.804484661929640190,	0.804514359595234650,	0.804544055249543090,	0.804573748892491560,	0.804603440524005560,	0.804633130144010940,	0.804662817752433530,	0.804692503349199620,	
+0.804722186934233920,	0.804751868507462720,	0.804781548068811860,	0.804811225618207170,	0.804840901155574380,	0.804870574680839330,	0.804900246193928410,	0.804929915694766350,	
+0.804959583183279430,	0.804989248659393590,	0.805018912123034670,	0.805048573574128400,	0.805078233012600840,	0.805107890438377490,	0.805137545851385080,	0.805167199251548230,	
+0.805196850638793430,	0.805226500013046410,	0.805256147374233230,	0.805285792722279630,	0.805315436057111640,	0.805345077378654910,	0.805374716686836130,	0.805404353981580060,	
+0.805433989262812950,	0.805463622530461000,	0.805493253784449910,	0.805522883024705760,	0.805552510251154370,	0.805582135463722260,	0.805611758662334250,	0.805641379846916860,	
+0.805670999017396030,	0.805700616173697700,	0.805730231315747720,	0.805759844443472260,	0.805789455556797260,	0.805819064655649010,	0.805848671739952670,	0.805878276809634640,	
+0.805907879864620870,	0.805937480904837410,	0.805967079930210330,	0.805996676940665460,	0.806026271936129410,	0.806055864916527250,	0.806085455881785370,	0.806115044831829830,	
+0.806144631766586680,	0.806174216685981990,	0.806203799589941710,	0.806233380478391990,	0.806262959351259360,	0.806292536208468750,	0.806322111049946780,	0.806351683875619510,	
+0.806381254685413110,	0.806410823479253640,	0.806440390257066930,	0.806469955018779380,	0.806499517764317500,	0.806529078493606110,	0.806558637206572170,	0.806588193903141630,	
+0.806617748583240530,	0.806647301246795180,	0.806676851893731510,	0.806706400523976240,	0.806735947137454450,	0.806765491734092730,	0.806795034313817380,	0.806824574876554350,	
+0.806854113422230010,	0.806883649950770220,	0.806913184462101470,	0.806942716956150160,	0.806972247432841570,	0.807001775892102420,	0.807031302333858780,	0.807060826758036810,	
+0.807090349164562900,	0.807119869553363120,	0.807149387924364080,	0.807178904277491170,	0.807208418612670900,	0.807237930929829650,	0.807267441228893490,	0.807296949509788810,	
+0.807326455772441660,	0.807355960016778450,	0.807385462242725890,	0.807414962450209160,	0.807444460639154980,	0.807473956809489630,	0.807503450961139400,	0.807532943094030560,	
+0.807562433208089290,	0.807591921303241980,	0.807621407379415460,	0.807650891436534900,	0.807680373474527040,	0.807709853493318250,	0.807739331492834830,	0.807768807473003060,	
+0.807798281433749320,	0.807827753375000350,	0.807857223296681530,	0.807886691198719700,	0.807916157081041030,	0.807945620943572030,	0.807975082786238970,	0.808004542608968150,	
+0.808034000411686050,	0.808063456194319410,	0.808092909956793730,	0.808122361699035620,	0.808151811420971700,	0.808181259122528140,	0.808210704803631550,	0.808240148464208110,	
+0.808269590104184420,	0.808299029723487220,	0.808328467322041890,	0.808357902899775380,	0.808387336456614200,	0.808416767992484630,	0.808446197507313170,	0.808475625001026100,	
+0.808505050473550590,	0.808534473924811930,	0.808563895354737050,	0.808593314763252470,	0.808622732150284570,	0.808652147515759870,	0.808681560859604850,	0.808710972181745810,	
+0.808740381482109920,	0.808769788760622550,	0.808799194017210790,	0.808828597251800900,	0.808857998464319610,	0.808887397654693310,	0.808916794822848510,	0.808946189968712260,	
+0.808975583092209960,	0.809004974193268780,	0.809034363271815100,	0.809063750327775550,	0.809093135361076520,	0.809122518371644730,	0.809151899359406680,	0.809181278324289430,	
+0.809210655266218380,	0.809240030185120700,	0.809269403080922990,	0.809298773953551760,	0.809328142802933530,	0.809357509628995000,	0.809386874431662800,	0.809416237210863750,	
+0.809445597966523710,	0.809474956698569610,	0.809504313406928190,	0.809533668091525940,	0.809563020752289480,	0.809592371389145530,	0.809621720002021150,	0.809651066590841960,	
+0.809680411155535130,	0.809709753696027160,	0.809739094212244880,	0.809768432704114920,	0.809797769171563870,	0.809827103614518260,	0.809856436032905580,	0.809885766426651220,	
+0.809915094795682470,	0.809944421139925930,	0.809973745459308340,	0.810003067753756410,	0.810032388023196770,	0.810061706267556250,	0.810091022486761900,	0.810120336680739570,	
+0.810149648849416320,	0.810178958992718970,	0.810208267110574140,	0.810237573202908790,	0.810266877269649410,	0.810296179310723400,	0.810325479326056360,	0.810354777315575700,	
+0.810384073279208030,	0.810413367216880290,	0.810442659128519090,	0.810471949014051170,	0.810501236873403360,	0.810530522706503050,	0.810559806513275970,	0.810589088293649280,	
+0.810618368047549830,	0.810647645774904560,	0.810676921475640190,	0.810706195149683450,	0.810735466796961730,	0.810764736417400880,	0.810794004010928160,	0.810823269577470420,	
+0.810852533116954490,	0.810881794629307320,	0.810911054114455520,	0.810940311572326160,	0.810969567002846610,	0.810998820405942510,	0.811028071781541460,	0.811057321129570190,	
+0.811086568449955530,	0.811115813742624650,	0.811145057007504060,	0.811174298244520920,	0.811203537453602520,	0.811232774634674690,	0.811262009787664940,	0.811291242912500320,	
+0.811320474009107450,	0.811349703077413390,	0.811378930117345190,	0.811408155128830020,	0.811437378111794060,	0.811466599066164700,	0.811495817991868760,	0.811525034888833210,	
+0.811554249756985200,	0.811583462596251470,	0.811612673406559180,	0.811641882187835620,	0.811671088940006950,	0.811700293663000450,	0.811729496356743300,	0.811758697021162320,	
+0.811787895656184700,	0.811817092261737260,	0.811846286837747180,	0.811875479384141840,	0.811904669900847310,	0.811933858387791090,	0.811963044844900230,	0.811992229272101680,	
+0.812021411669322620,	0.812050592036489990,	0.812079770373531520,	0.812108946680373030,	0.812138120956942160,	0.812167293203166050,	0.812196463418971560,	0.812225631604286070,	
+0.812254797759036420,	0.812283961883149770,	0.812313123976553750,	0.812342284039174410,	0.812371442070939360,	0.812400598071775780,	0.812429752041610610,	0.812458903980371130,	
+0.812488053887984290,	0.812517201764377920,	0.812546347609477970,	0.812575491423212170,	0.812604633205507690,	0.812633772956291580,	0.812662910675491010,	0.812692046363033270,	
+0.812721180018845300,	0.812750311642854940,	0.812779441234988350,	0.812808568795173050,	0.812837694323336410,	0.812866817819405510,	0.812895939283307500,	0.812925058714969670,	
+0.812954176114319300,	0.812983291481283900,	0.813012404815789740,	0.813041516117764650,	0.813070625387135700,	0.813099732623830170,	0.813128837827775450,	0.813157940998898490,	
+0.813187042137127230,	0.813216141242387950,	0.813245238314608150,	0.813274333353715350,	0.813303426359636710,	0.813332517332299500,	0.813361606271631010,	0.813390693177558520,	
+0.813419778050009760,	0.813448860888911000,	0.813477941694190190,	0.813507020465774500,	0.813536097203591210,	0.813565171907567720,	0.813594244577631300,	0.813623315213709230,	
+0.813652383815729460,	0.813681450383618170,	0.813710514917303280,	0.813739577416712100,	0.813768637881771890,	0.813797696312410170,	0.813826752708554200,	0.813855807070131940,	
+0.813884859397069560,	0.813913909689295000,	0.813942957946735660,	0.813972004169319030,	0.814001048356972290,	0.814030090509623050,	0.814059130627198480,	0.814088168709626640,	
+0.814117204756833800,	0.814146238768748030,	0.814175270745296610,	0.814204300686407030,	0.814233328592006700,	0.814262354462023110,	0.814291378296384090,	0.814320400095016050,	
+0.814349419857847150,	0.814378437584804550,	0.814407453275815870,	0.814436466930808620,	0.814465478549710300,	0.814494488132448180,	0.814523495678950330,	0.814552501189143240,	
+0.814581504662954870,	0.814610506100312830,	0.814639505501144500,	0.814668502865377290,	0.814697498192938910,	0.814726491483756870,	0.814755482737759000,	0.814784471954871910,	
+0.814813459135023680,	0.814842444278141790,	0.814871427384153860,	0.814900408452987280,	0.814929387484569670,	0.814958364478829190,	0.814987339435692240,	0.815016312355086870,	
+0.815045283236940810,	0.815074252081181560,	0.815103218887736620,	0.815132183656533620,	0.815161146387500150,	0.815190107080564390,	0.815219065735652840,	0.815248022352693560,	
+0.815276976931614270,	0.815305929472342590,	0.815334879974806030,	0.815363828438932290,	0.815392774864649450,	0.815421719251884220,	0.815450661600564670,	0.815479601910618520,	
+0.815508540181973270,	0.815537476414556650,	0.815566410608296490,	0.815595342763120180,	0.815624272878956110,	0.815653200955730790,	0.815682126993372390,	0.815711050991808740,	
+0.815739972950967560,	0.815768892870776360,	0.815797810751162870,	0.815826726592054910,	0.815855640393380650,	0.815884552155066830,	0.815913461877041610,	0.815942369559232720,	
+0.815971275201567870,	0.816000178803974800,	0.816029080366381330,	0.816057979888715760,	0.816086877370904570,	0.816115772812876280,	0.816144666214558610,	0.816173557575879170,	
+0.816202446896765910,	0.816231334177146440,	0.816260219416948710,	0.816289102616100990,	0.816317983774529910,	0.816346862892163850,	0.816375739968930760,	0.816404615004758250,	
+0.816433487999574160,	0.816462358953306320,	0.816491227865882680,	0.816520094737231420,	0.816548959567279460,	0.816577822355955110,	0.816606683103186180,	0.816635541808900520,	
+0.816664398473026080,	0.816693253095490570,	0.816722105676222500,	0.816750956215148590,	0.816779804712197350,	0.816808651167296510,	0.816837495580374110,	0.816866337951357990,	
+0.816895178280175990,	0.816924016566756060,	0.816952852811026590,	0.816981687012914510,	0.817010519172348130,	0.817039349289255480,	0.817068177363564520,	0.817097003395203080,	
+0.817125827384099110,	0.817154649330181120,	0.817183469233375930,	0.817212287093612160,	0.817241102910817640,	0.817269916684920330,	0.817298728415848270,	0.817327538103529430,	
+0.817356345747891620,	0.817385151348863470,	0.817413954906372030,	0.817442756420345700,	0.817471555890712410,	0.817500353317400230,	0.817529148700337220,	0.817557942039451310,	
+0.817586733334670580,	0.817615522585923520,	0.817644309793137070,	0.817673094956239850,	0.817701878075159930,	0.817730659149825350,	0.817759438180164170,	0.817788215166104230,	
+0.817816990107574360,	0.817845763004501510,	0.817874533856814300,	0.817903302664440670,	0.817932069427308780,	0.817960834145346700,	0.817989596818482600,	0.818018357446644530,	
+0.818047116029760990,	0.818075872567759270,	0.818104627060567750,	0.818133379508114710,	0.818162129910328220,	0.818190878267136430,	0.818219624578467420,	0.818248368844249340,	
+0.818277111064410920,	0.818305851238879110,	0.818334589367582740,	0.818363325450449870,	0.818392059487408670,	0.818420791478387310,	0.818449521423314060,	0.818478249322117430,	
+0.818506975174724700,	0.818535698981064490,	0.818564420741065170,	0.818593140454654590,	0.818621858121761360,	0.818650573742313310,	0.818679287316238960,	0.818707998843466900,	
+0.818736708323924200,	0.818765415757539810,	0.818794121144241880,	0.818822824483958710,	0.818851525776618460,	0.818880225022149300,	0.818908922220480170,	0.818937617371538140,	
+0.818966310475252150,	0.818995001531550360,	0.819023690540361060,	0.819052377501612640,	0.819081062415233150,	0.819109745281150990,	0.819138426099294990,	0.819167104869592540,	
+0.819195781591972150,	0.819224456266362420,	0.819253128892691530,	0.819281799470887860,	0.819310468000879590,	0.819339134482595210,	0.819367798915963560,	0.819396461300911820,	
+0.819425121637368910,	0.819453779925263250,	0.819482436164523100,	0.819511090355076850,	0.819539742496852910,	0.819568392589780200,	0.819597040633785910,	0.819625686628798980,	
+0.819654330574747900,	0.819682972471560970,	0.819711612319166670,	0.819740250117493300,	0.819768885866469230,	0.819797519566023540,	0.819826151216083490,	0.819854780816578140,	
+0.819883408367435780,	0.819912033868584910,	0.819940657319953910,	0.819969278721471300,	0.819997898073065560,	0.820026515374665530,	0.820055130626198720,	0.820083743827594080,	
+0.820112354978779990,	0.820140964079685180,	0.820169571130237810,	0.820198176130366610,	0.820226779080000410,	0.820255379979066830,	0.820283978827494710,	0.820312575625212760,	
+0.820341170372149260,	0.820369763068232840,	0.820398353713392090,	0.820426942307555420,	0.820455528850651870,	0.820484113342609070,	0.820512695783355840,	0.820541276172821020,	
+0.820569854510933010,	0.820598430797620290,	0.820627005032811500,	0.820655577216435670,	0.820684147348420430,	0.820712715428694840,	0.820741281457187500,	0.820769845433826920,	
+0.820798407358541700,	0.820826967231260470,	0.820855525051911840,	0.820884080820424860,	0.820912634536727250,	0.820941186200747960,	0.820969735812415720,	0.820998283371659250,	
+0.821026828878406940,	0.821055372332587630,	0.821083913734129920,	0.821112453082962880,	0.821140990379014220,	0.821169525622213130,	0.821198058812488090,	0.821226589949768050,	
+0.821255119033981410,	0.821283646065057100,	0.821312171042924090,	0.821340693967510190,	0.821369214838744480,	0.821397733656555770,	0.821426250420872810,	0.821454765131624190,	
+0.821483277788738640,	0.821511788392144780,	0.821540296941772110,	0.821568803437548120,	0.821597307879402110,	0.821625810267262890,	0.821654310601059200,	0.821682808880719650,	
+0.821711305106173070,	0.821739799277348190,	0.821768291394174400,	0.821796781456579310,	0.821825269464492300,	0.821853755417842110,	0.821882239316557570,	0.821910721160567400,	
+0.821939200949800440,	0.821967678684185970,	0.821996154363651810,	0.822024627988127250,	0.822053099557541130,	0.822081569071822280,	0.822110036530899420,	0.822138501934701500,	
+0.822166965283157470,	0.822195426576196380,	0.822223885813746280,	0.822252342995736460,	0.822280798122095760,	0.822309251192753000,	0.822337702207637240,	0.822366151166677220,	
+0.822394598069802200,	0.822423042916940240,	0.822451485708020740,	0.822479926442972520,	0.822508365121724430,	0.822536801744205400,	0.822565236310344390,	0.822593668820070350,	
+0.822622099273312650,	0.822650527669999130,	0.822678954010059300,	0.822707378293422000,	0.822735800520016380,	0.822764220689771290,	0.822792638802615550,	0.822821054858478230,	
+0.822849468857288820,	0.822877880798975280,	0.822906290683466880,	0.822934698510692900,	0.822963104280582060,	0.822991507993063530,	0.823019909648066260,	0.823048309245519640,	
+0.823076706785351830,	0.823105102267492230,	0.823133495691869780,	0.823161887058413640,	0.823190276367052890,	0.823218663617716340,	0.823247048810333170,	0.823275431944832880,	
+0.823303813021143420,	0.823332192039194500,	0.823360568998915190,	0.823388943900234320,	0.823417316743081160,	0.823445687527384670,	0.823474056253074460,	0.823502422920078690,	
+0.823530787528326760,	0.823559150077747940,	0.823587510568271170,	0.823615868999825640,	0.823644225372340500,	0.823672579685744810,	0.823700931939968070,	0.823729282134938570,	
+0.823757630270585790,	0.823785976346839030,	0.823814320363627340,	0.823842662320879770,	0.823871002218525610,	0.823899340056493900,	0.823927675834714270,	0.823956009553115100,	
+0.823984341211625780,	0.824012670810175710,	0.824040998348693930,	0.824069323827109620,	0.824097647245352060,	0.824125968603350860,	0.824154287901034180,	0.824182605138331860,	
+0.824210920315172960,	0.824239233431486750,	0.824267544487202520,	0.824295853482249430,	0.824324160416556650,	0.824352465290054020,	0.824380768102669690,	0.824409068854333520,	
+0.824437367544974650,	0.824465664174522270,	0.824493958742905870,	0.824522251250054410,	0.824550541695897480,	0.824578830080364590,	0.824607116403384130,	0.824635400664885940,	
+0.824663682864799190,	0.824691963003053250,	0.824720241079577420,	0.824748517094300970,	0.824776791047153850,	0.824805062938064100,	0.824833332766961690,	0.824861600533776000,	
+0.824889866238436300,	0.824918129880871990,	0.824946391461012340,	0.824974650978786640,	0.825002908434124830,	0.825031163826955290,	0.825059417157207760,	0.825087668424811850,	
+0.825115917629696600,	0.825144164771791640,	0.825172409851026250,	0.825200652867330350,	0.825228893820632250,	0.825257132710861980,	0.825285369537948840,	0.825313604301822320,	
+0.825341837002411820,	0.825370067639646710,	0.825398296213456390,	0.825426522723770820,	0.825454747170518480,	0.825482969553629210,	0.825511189873032620,	0.825539408128658000,	
+0.825567624320434850,	0.825595838448292650,	0.825624050512160810,	0.825652260511969490,	0.825680468447646860,	0.825708674319123090,	0.825736878126327680,	0.825765079869190120,	
+0.825793279547639810,	0.825821477161606250,	0.825849672711019500,	0.825877866195808160,	0.825906057615902080,	0.825934246971230860,	0.825962434261724110,	0.825990619487311120,	
+0.826018802647921710,	0.826046983743485290,	0.826075162773931890,	0.826103339739190030,	0.826131514639189880,	0.826159687473860930,	0.826187858243132790,	0.826216026946934860,	
+0.826244193585196960,	0.826272358157848610,	0.826300520664819850,	0.826328681106039300,	0.826356839481437010,	0.826384995790942710,	0.826413150034485790,	0.826441302211996080,	
+0.826469452323403080,	0.826497600368636950,	0.826525746347626320,	0.826553890260301350,	0.826582032106591650,	0.826610171886426940,	0.826638309599736720,	0.826666445246450720,	
+0.826694578826498550,	0.826722710339810480,	0.826750839786315250,	0.826778967165942790,	0.826807092478622940,	0.826835215724285310,	0.826863336902859740,	0.826891456014275830,	
+0.826919573058463750,	0.826947688035352120,	0.826975800944871440,	0.827003911786951210,	0.827032020561521140,	0.827060127268511080,	0.827088231907850640,	0.827116334479469640,	
+0.827144434983298370,	0.827172533419265440,	0.827200629787301240,	0.827228724087335500,	0.827256816319297820,	0.827284906483118140,	0.827312994578726310,	0.827341080606051830,	
+0.827369164565025290,	0.827397246455575220,	0.827425326277632100,	0.827453404031125660,	0.827481479715985730,	0.827509553332142040,	0.827537624879524540,	0.827565694358063380,	
+0.827593761767687620,	0.827621827108327320,	0.827649890379912550,	0.827677951582373010,	0.827706010715638540,	0.827734067779639090,	0.827762122774304500,	0.827790175699565140,	
+0.827818226555349760,	0.827846275341588830,	0.827874322058212210,	0.827902366705149830,	0.827930409282331530,	0.827958449789687130,	0.827986488227146710,	0.828014524594640420,	
+0.828042558892097440,	0.828070591119448030,	0.828098621276622150,	0.828126649363549740,	0.828154675380160630,	0.828182699326384890,	0.828210721202153000,	0.828238741007393700,	
+0.828266758742037480,	0.828294774406014400,	0.828322787999254520,	0.828350799521687550,	0.828378808973243560,	0.828406816353852600,	0.828434821663445060,	0.828462824901950000,	
+0.828490826069297910,	0.828518825165418750,	0.828546822190242450,	0.828574817143699180,	0.828602810025718780,	0.828630800836231860,	0.828658789575167590,	0.828686776242456240,	
+0.828714760838027860,	0.828742743361812750,	0.828770723813740730,	0.828798702193741850,	0.828826678501746180,	0.828854652737684440,	0.828882624901485450,	0.828910594993079950,	
+0.828938563012397990,	0.828966528959369510,	0.828994492833924790,	0.829022454635993890,	0.829050414365506750,	0.829078372022394210,	0.829106327606585090,	0.829134281118010240,	
+0.829162232556599710,	0.829190181922283550,	0.829218129214991940,	0.829246074434655030,	0.829274017581203340,	0.829301958654566240,	0.829329897654674130,	0.829357834581457400,	
+0.829385769434845990,	0.829413702214770180,	0.829441632921160130,	0.829469561553945910,	0.829497488113058350,	0.829525412598426600,	0.829553335009981300,	0.829581255347652700,	
+0.829609173611370880,	0.829637089801066210,	0.829665003916668750,	0.829692915958108790,	0.829720825925317150,	0.829748733818222780,	0.829776639636756630,	0.829804543380848970,	
+0.829832445050429860,	0.829860344645429680,	0.829888242165778610,	0.829916137611407480,	0.829944030982245450,	0.829971922278223360,	0.829999811499271490,	0.830027698645320000,	
+0.830055583716299390,	0.830083466712139730,	0.830111347632771500,	0.830139226478125320,	0.830167103248130590,	0.830194977942718020,	0.830222850561818100,	0.830250721105361130,	
+0.830278589573277270,	0.830306455965496900,	0.830334320281950980,	0.830362182522568660,	0.830390042687281000,	0.830417900776018070,	0.830445756788710580,	0.830473610725288580,	
+0.830501462585682580,	0.830529312369822970,	0.830557160077640470,	0.830585005709064570,	0.830612849264026230,	0.830640690742455830,	0.830668530144283660,	0.830696367469440090,	
+0.830724202717855630,	0.830752035889460670,	0.830779866984186150,	0.830807696001961470,	0.830835522942717450,	0.830863347806384710,	0.830891170592893640,	0.830918991302174610,	
+0.830946809934158040,	0.830974626488774960,	0.831002440965954880,	0.831030253365628640,	0.831058063687726830,	0.831085871932179750,	0.831113678098918120,	0.831141482187872200,	
+0.831169284198972620,	0.831197084132150320,	0.831224881987334800,	0.831252677764457100,	0.831280471463447750,	0.831308263084237110,	0.831336052626755920,	0.831363840090934560,	
+0.831391625476703530,	0.831419408783994010,	0.831447190012735480,	0.831474969162858900,	0.831502746234294990,	0.831530521226974130,	0.831558294140827050,	0.831586064975784130,	
+0.831613833731776660,	0.831641600408734030,	0.831669365006587390,	0.831697127525267370,	0.831724887964704560,	0.831752646324829480,	0.831780402605572840,	0.831808156806865150,	
+0.831835908928637570,	0.831863658970819820,	0.831891406933342740,	0.831919152816137260,	0.831946896619133900,	0.831974638342263260,	0.832002377985456070,	0.832030115548643370,	
+0.832057851031754890,	0.832085584434721800,	0.832113315757474830,	0.832141044999944460,	0.832168772162061530,	0.832196497243756660,	0.832224220244960570,	0.832251941165604410,	
+0.832279660005617820,	0.832307376764932160,	0.832335091443478060,	0.832362804041186230,	0.832390514557987400,	0.832418222993812300,	0.832445929348591520,	0.832473633622256570,	
+0.832501335814736950,	0.832529035925964060,	0.832556733955868490,	0.832584429904381080,	0.832612123771432680,	0.832639815556953990,	0.832667505260876180,	0.832695192883129100,	
+0.832722878423644120,	0.832750561882351860,	0.832778243259183260,	0.832805922554069040,	0.832833599766939940,	0.832861274897726990,	0.832888947946361260,	0.832916618912772690,	
+0.832944287796892450,	0.832971954598651590,	0.832999619317980830,	0.833027281954811130,	0.833054942509073080,	0.833082600980698200,	0.833110257369616410,	0.833137911675758900,	
+0.833165563899056600,	0.833193214039440360,	0.833220862096841210,	0.833248508071189780,	0.833276151962417110,	0.833303793770454600,	0.833331433495232090,	0.833359071136681060,	
+0.833386706694732250,	0.833414340169316700,	0.833441971560365370,	0.833469600867809080,	0.833497228091578670,	0.833524853231605740,	0.833552476287820250,	0.833580097260153590,	
+0.833607716148536570,	0.833635332952900380,	0.833662947673175840,	0.833690560309293890,	0.833718170861186050,	0.833745779328782240,	0.833773385712013980,	0.833800990010812320,	
+0.833828592225108190,	0.833856192354832550,	0.833883790399916450,	0.833911386360290830,	0.833938980235887310,	0.833966572026635710,	0.833994161732467880,	0.834021749353314520,	
+0.834049334889106710,	0.834076918339775710,	0.834104499705252360,	0.834132078985467820,	0.834159656180353480,	0.834187231289839510,	0.834214804313857530,	0.834242375252338460,	
+0.834269944105213490,	0.834297510872413770,	0.834325075553870140,	0.834352638149514330,	0.834380198659276480,	0.834407757083088120,	0.834435313420880290,	0.834462867672584260,	
+0.834490419838131100,	0.834517969917451750,	0.834545517910477600,	0.834573063817140140,	0.834600607637369430,	0.834628149371097310,	0.834655689018254710,	0.834683226578773030,	
+0.834710762052583210,	0.834738295439616420,	0.834765826739804480,	0.834793355953077460,	0.834820883079366970,	0.834848408118604390,	0.834875931070720670,	0.834903451935647300,	
+0.834930970713315120,	0.834958487403655640,	0.834986002006600340,	0.835013514522079610,	0.835041024950025080,	0.835068533290367900,	0.835096039543039460,	0.835123543707970930,	
+0.835151045785093580,	0.835178545774338590,	0.835206043675637670,	0.835233539488921210,	0.835261033214120820,	0.835288524851167890,	0.835316014399993700,	0.835343501860529410,	
+0.835370987232706420,	0.835398470516456440,	0.835425951711709750,	0.835453430818398290,	0.835480907836453120,	0.835508382765805750,	0.835535855606387430,	0.835563326358129470,	
+0.835590795020963120,	0.835618261594820330,	0.835645726079631390,	0.835673188475328230,	0.835700648781841910,	0.835728106999104160,	0.835755563127046020,	0.835783017165599000,	
+0.835810469114694480,	0.835837918974264180,	0.835865366744238720,	0.835892812424549710,	0.835920256015128760,	0.835947697515907140,	0.835975136926816240,	0.836002574247787570,	
+0.836030009478752940,	0.836057442619642770,	0.836084873670388970,	0.836112302630923070,	0.836139729501176430,	0.836167154281080350,	0.836194576970566430,	0.836221997569566060,	
+0.836249416078011290,	0.836276832495832290,	0.836304246822961340,	0.836331659059329820,	0.836359069204869020,	0.836386477259510650,	0.836413883223186110,	0.836441287095827210,	
+0.836468688877364700,	0.836496088567730500,	0.836523486166856010,	0.836550881674672840,	0.836578275091112490,	0.836605666416106340,	0.836633055649586120,	0.836660442791483770,	
+0.836687827841729790,	0.836715210800256240,	0.836742591666994720,	0.836769970441876620,	0.836797347124833670,	0.836824721715797250,	0.836852094214699080,	0.836879464621471230,	
+0.836906832936044180,	0.836934199158350100,	0.836961563288320390,	0.836988925325886870,	0.837016285270981040,	0.837043643123534520,	0.837070998883479240,	0.837098352550746160,	
+0.837125704125267100,	0.837153053606973780,	0.837180400995797820,	0.837207746291670940,	0.837235089494524630,	0.837262430604290510,	0.837289769620900960,	0.837317106544286370,	
+0.837344441374379130,	0.837371774111110740,	0.837399104754412930,	0.837426433304217290,	0.837453759760455550,	0.837481084123059550,	0.837508406391961220,	0.837535726567091410,	
+0.837563044648382270,	0.837590360635765530,	0.837617674529172910,	0.837644986328536120,	0.837672296033786900,	0.837699603644857290,	0.837726909161678250,	0.837754212584181920,	
+0.837781513912300160,	0.837808813145964560,	0.837836110285106850,	0.837863405329658970,	0.837890698279552540,	0.837917989134719820,	0.837945277895091660,	0.837972564560600320,	
+0.837999849131177530,	0.838027131606755130,	0.838054411987264940,	0.838081690272638680,	0.838108966462808750,	0.838136240557705860,	0.838163512557262400,	0.838190782461410100,	
+0.838218050270080890,	0.838245315983206510,	0.838272579600718880,	0.838299841122549850,	0.838327100548631580,	0.838354357878895120,	0.838381613113272860,	0.838408866251696530,	
+0.838436117294097950,	0.838463366240409070,	0.838490613090561940,	0.838517857844488070,	0.838545100502120170,	0.838572341063389070,	0.838599579528227060,	0.838626815896566070,	
+0.838654050168338050,	0.838681282343474940,	0.838708512421908580,	0.838735740403571460,	0.838762966288394530,	0.838790190076310060,	0.838817411767250220,	0.838844631361146840,	
+0.838871848857931870,	0.838899064257537350,	0.838926277559895020,	0.838953488764937580,	0.838980697872595990,	0.839007904882802520,	0.839035109795489340,	0.839062312610588390,	
+0.839089513328031720,	0.839116711947751170,	0.839143908469678900,	0.839171102893747410,	0.839198295219887540,	0.839225485448031990,	0.839252673578112730,	0.839279859610061800,	
+0.839307043543811250,	0.839334225379293030,	0.839361405116439750,	0.839388582755182470,	0.839415758295453670,	0.839442931737185650,	0.839470103080310110,	0.839497272324759460,	
+0.839524439470465510,	0.839551604517360550,	0.839578767465376960,	0.839605928314446140,	0.839633087064500350,	0.839660243715471880,	0.839687398267292770,	0.839714550719895200,	
+0.839741701073211330,	0.839768849327173550,	0.839795995481713240,	0.839823139536763020,	0.839850281492254820,	0.839877421348120930,	0.839904559104293510,	0.839931694760704730,	
+0.839958828317286740,	0.839985959773972060,	0.840013089130692060,	0.840040216387379360,	0.840067341543966120,	0.840094464600384390,	0.840121585556566690,	0.840148704412444940,	
+0.840175821167951420,	0.840202935823018750,	0.840230048377578420,	0.840257158831562820,	0.840284267184904450,	0.840311373437535370,	0.840338477589387840,	0.840365579640394160,	
+0.840392679590486910,	0.840419777439597620,	0.840446873187658760,	0.840473966834602740,	0.840501058380361820,	0.840528147824868290,	0.840555235168054420,	0.840582320409852370,	
+0.840609403550195090,	0.840636484589013740,	0.840663563526241160,	0.840690640361809740,	0.840717715095651740,	0.840744787727699450,	0.840771858257885140,	0.840798926686141650,	
+0.840825993012400460,	0.840853057236594200,	0.840880119358655250,	0.840907179378516110,	0.840934237296109060,	0.840961293111366250,	0.840988346824220300,	0.841015398434603930,	
+0.841042447942448650,	0.841069495347687270,	0.841096540650252080,	0.841123583850075570,	0.841150624947090030,	0.841177663941228060,	0.841204700832421830,	0.841231735620604380,	
+0.841258768305707120,	0.841285798887662860,	0.841312827366404110,	0.841339853741863370,	0.841366878013972920,	0.841393900182665360,	0.841420920247873520,	0.841447938209528790,	
+0.841474954067564340,	0.841501967821912440,	0.841528979472505600,	0.841555989019276420,	0.841582996462157170,	0.841610001801080480,	0.841637005035979160,	0.841664006166784940,	
+0.841691005193430760,	0.841718002115849020,	0.841744996933972200,	0.841771989647732920,	0.841798980257063680,	0.841825968761897080,	0.841852955162165960,	0.841879939457801930,	
+0.841906921648738150,	0.841933901734906900,	0.841960879716241010,	0.841987855592672970,	0.842014829364135190,	0.842041801030560920,	0.842068770591881570,	0.842095738048030400,	
+0.842122703398939800,	0.842149666644542490,	0.842176627784770980,	0.842203586819557870,	0.842230543748835880,	0.842257498572537950,	0.842284451290595810,	0.842311401902942510,	
+0.842338350409510770,	0.842365296810233090,	0.842392241105042180,	0.842419183293870670,	0.842446123376651700,	0.842473061353317010,	0.842499997223799530,	0.842526930988032220,	
+0.842553862645947450,	0.842580792197478060,	0.842607719642556650,	0.842634644981116070,	0.842661568213089240,	0.842688489338408010,	0.842715408357005540,	0.842742325268814650,	
+0.842769240073767860,	0.842796152771797980,	0.842823063362837850,	0.842849971846819870,	0.842876878223677520,	0.842903782493342520,	0.842930684655748050,	0.842957584710826820,	
+0.842984482658511780,	0.843011378498735310,	0.843038272231430570,	0.843065163856530630,	0.843092053373967200,	0.843118940783673660,	0.843145826085582750,	0.843172709279627400,	
+0.843199590365740100,	0.843226469343853920,	0.843253346213901580,	0.843280220975816340,	0.843307093629530050,	0.843333964174976080,	0.843360832612087160,	0.843387698940796130,	
+0.843414563161035910,	0.843441425272739240,	0.843468285275839060,	0.843495143170268520,	0.843521998955959810,	0.843548852632845960,	0.843575704200860030,	0.843602553659934860,	
+0.843629401010003390,	0.843656246250998330,	0.843683089382853080,	0.843709930405499690,	0.843736769318871430,	0.843763606122901360,	0.843790440817522190,	0.843817273402666880,	
+0.843844103878268470,	0.843870932244259690,	0.843897758500574140,	0.843924582647143760,	0.843951404683901840,	0.843978224610781420,	0.844005042427715460,	0.844031858134636880,	
+0.844058671731478750,	0.844085483218174340,	0.844112292594655700,	0.844139099860856330,	0.844165905016709290,	0.844192708062147410,	0.844219508997103850,	0.844246307821511440,	
+0.844273104535303350,	0.844299899138412860,	0.844326691630772230,	0.844353482012314860,	0.844380270282973690,	0.844407056442681990,	0.844433840491372490,	0.844460622428978570,	
+0.844487402255432950,	0.844514179970669350,	0.844540955574619830,	0.844567729067217890,	0.844594500448396680,	0.844621269718089260,	0.844648036876228580,	0.844674801922747800,	
+0.844701564857580520,	0.844728325680658920,	0.844755084391916380,	0.844781840991286170,	0.844808595478701460,	0.844835347854095090,	0.844862098117400540,	0.844888846268550650,	
+0.844915592307479040,	0.844942336234118070,	0.844969078048401270,	0.844995817750261780,	0.845022555339632660,	0.845049290816447200,	0.845076024180638540,	0.845102755432139750,	
+0.845129484570884660,	0.845156211596805320,	0.845182936509835450,	0.845209659309908210,	0.845236379996956890,	0.845263098570914530,	0.845289815031714520,	0.845316529379290360,	
+0.845343241613574440,	0.845369951734500470,	0.845396659742001510,	0.845423365636011060,	0.845450069416462060,	0.845476771083287890,	0.845503470636421840,	0.845530168075797620,	
+0.845556863401347500,	0.845583556613005110,	0.845610247710703920,	0.845636936694377120,	0.845663623563957970,	0.845690308319379750,	0.845716990960576180,	0.845743671487479750,	
+0.845770349900024090,	0.845797026198142570,	0.845823700381768460,	0.845850372450835160,	0.845877042405275840,	0.845903710245023980,	0.845930375970013300,	0.845957039580176210,	
+0.845983701075446510,	0.846010360455757620,	0.846037017721042780,	0.846063672871235410,	0.846090325906268870,	0.846116976826076450,	0.846143625630592090,	0.846170272319748170,	
+0.846196916893478650,	0.846223559351716780,	0.846250199694396080,	0.846276837921449810,	0.846303474032811480,	0.846330108028414910,	0.846356739908192600,	0.846383369672078390,	
+0.846409997320005880,	0.846436622851908240,	0.846463246267719180,	0.846489867567371880,	0.846516486750800050,	0.846543103817937400,	0.846569718768716450,	0.846596331603071350,	
+0.846622942320935270,	0.846649550922241920,	0.846676157406924700,	0.846702761774916990,	0.846729364026152510,	0.846755964160565090,	0.846782562178087120,	0.846809158078652870,	
+0.846835751862195730,	0.846862343528649200,	0.846888933077946770,	0.846915520510022060,	0.846942105824809000,	0.846968689022240210,	0.846995270102249730,	0.847021849064771070,	
+0.847048425909737720,	0.847075000637083410,	0.847101573246741510,	0.847128143738645640,	0.847154712112729970,	0.847181278368926980,	0.847207842507170850,	0.847234404527395180,	
+0.847260964429533360,	0.847287522213519220,	0.847314077879286250,	0.847340631426768520,	0.847367182855898740,	0.847393732166611070,	0.847420279358839010,	0.847446824432516290,	
+0.847473367387576500,	0.847499908223953270,	0.847526446941580300,	0.847552983540391660,	0.847579518020320170,	0.847606050381299770,	0.847632580623264300,	0.847659108746147360,	
+0.847685634749882680,	0.847712158634403860,	0.847738680399644730,	0.847765200045539240,	0.847791717572020430,	0.847818232979022260,	0.847844746266478430,	0.847871257434322790,	
+0.847897766482489050,	0.847924273410910920,	0.847950778219522470,	0.847977280908256640,	0.848003781477047690,	0.848030279925829240,	0.848056776254535020,	0.848083270463098950,	
+0.848109762551454650,	0.848136252519535950,	0.848162740367277120,	0.848189226094610890,	0.848215709701471750,	0.848242191187793200,	0.848268670553509190,	0.848295147798553530,	
+0.848321622922860060,	0.848348095926362960,	0.848374566808995030,	0.848401035570690800,	0.848427502211383970,	0.848453966731008480,	0.848480429129497950,	0.848506889406786310,	
+0.848533347562807520,	0.848559803597495830,	0.848586257510784200,	0.848612709302606900,	0.848639158972897770,	0.848665606521590730,	0.848692051948619740,	0.848718495253918630,	
+0.848744936437421330,	0.848771375499062010,	0.848797812438773950,	0.848824247256491190,	0.848850679952147910,	0.848877110525677940,	0.848903538977015090,	0.848929965306093550,	
+0.848956389512847460,	0.848982811597209900,	0.849009231559115450,	0.849035649398497850,	0.849062065115291030,	0.849088478709429160,	0.849114890180846070,	0.849141299529475700,	
+0.849167706755252660,	0.849194111858109780,	0.849220514837981670,	0.849246915694802260,	0.849273314428505620,	0.849299711039025680,	0.849326105526296390,	0.849352497890251910,	
+0.849378888130826630,	0.849405276247953590,	0.849431662241567410,	0.849458046111602140,	0.849484427857991610,	0.849510807480670200,	0.849537184979571650,	0.849563560354630540,	
+0.849589933605780170,	0.849616304732955020,	0.849642673736089040,	0.849669040615116280,	0.849695405369971010,	0.849721768000587300,	0.849748128506899070,	0.849774486888841050,	
+0.849800843146346300,	0.849827197279349410,	0.849853549287784560,	0.849879899171585910,	0.849906246930687390,	0.849932592565023400,	0.849958936074528220,	0.849985277459135320,	
+0.850011616718779230,	0.850037953853394090,	0.850064288862914070,	0.850090621747273350,	0.850116952506406070,	0.850143281140246400,	0.850169607648728950,	0.850195932031787120,	
+0.850222254289355380,	0.850248574421368030,	0.850274892427759220,	0.850301208308463230,	0.850327522063414110,	0.850353833692546250,	0.850380143195794360,	0.850406450573091500,	
+0.850432755824372610,	0.850459058949571860,	0.850485359948623400,	0.850511658821461510,	0.850537955568020480,	0.850564250188235120,	0.850590542682038600,	0.850616833049365750,	
+0.850643121290150740,	0.850669407404327950,	0.850695691391831770,	0.850721973252596240,	0.850748252986555760,	0.850774530593645160,	0.850800806073797820,	0.850827079426948350,	
+0.850853350653031250,	0.850879619751980790,	0.850905886723731240,	0.850932151568217000,	0.850958414285372440,	0.850984674875132190,	0.851010933337429830,	0.851037189672200210,	
+0.851063443879377490,	0.851089695958896280,	0.851115945910690730,	0.851142193734695460,	0.851168439430844970,	0.851194682999073080,	0.851220924439314410,	0.851247163751503440,	
+0.851273400935574580,	0.851299635991462190,	0.851325868919100780,	0.851352099718424630,	0.851378328389368670,	0.851404554931866510,	0.851430779345852870,	0.851457001631262370,	
+0.851483221788029270,	0.851509439816088180,	0.851535655715373490,	0.851561869485820130,	0.851588081127361620,	0.851614290639932880,	0.851640498023468420,	0.851666703277902730,	
+0.851692906403170300,	0.851719107399205640,	0.851745306265943140,	0.851771503003317830,	0.851797697611263340,	0.851823890089714600,	0.851850080438606220,	0.851876268657872470,	
+0.851902454747448190,	0.851928638707267650,	0.851954820537265680,	0.851981000237377000,	0.852007177807535320,	0.852033353247675820,	0.852059526557732870,	0.852085697737641090,	
+0.852111866787335080,	0.852138033706749340,	0.852164198495819040,	0.852190361154477770,	0.852216521682660710,	0.852242680080302240,	0.852268836347337080,	0.852294990483699830,	
+0.852321142489325110,	0.852347292364147520,	0.852373440108102120,	0.852399585721122730,	0.852425729203144300,	0.852451870554101650,	0.852478009773929290,	0.852504146862561930,	
+0.852530281819934180,	0.852556414645980640,	0.852582545340636600,	0.852608673903835770,	0.852634800335513200,	0.852660924635603610,	0.852687046804041730,	0.852713166840762260,	
+0.852739284745699930,	0.852765400518789800,	0.852791514159965680,	0.852817625669162750,	0.852843735046315830,	0.852869842291359540,	0.852895947404228580,	0.852922050384857800,	
+0.852948151233181910,	0.852974249949136070,	0.853000346532654220,	0.853026440983671420,	0.853052533302122610,	0.853078623487942390,	0.853104711541065600,	0.853130797461427060,	
+0.853156881248962050,	0.853182962903604290,	0.853209042425289170,	0.853235119813951390,	0.853261195069525910,	0.853287268191947330,	0.853313339181150710,	0.853339408037070650,	
+0.853365474759642530,	0.853391539348800300,	0.853417601804479120,	0.853443662126614040,	0.853469720315139790,	0.853495776369991190,	0.853521830291103180,	0.853547882078410700,	
+0.853573931731848810,	0.853599979251351780,	0.853626024636854660,	0.853652067888292510,	0.853678109005600260,	0.853704147988712750,	0.853730184837564800,	0.853756219552091800,	
+0.853782252132227910,	0.853808282577908310,	0.853834310889068140,	0.853860337065642020,	0.853886361107565110,	0.853912383014772350,	0.853938402787198570,	0.853964420424779270,	
+0.853990435927448500,	0.854016449295141530,	0.854042460527793530,	0.854068469625339330,	0.854094476587713980,	0.854120481414852530,	0.854146484106689810,	0.854172484663161310,	
+0.854198483084201100,	0.854224479369744770,	0.854250473519727160,	0.854276465534083430,	0.854302455412748520,	0.854328443155657480,	0.854354428762745700,	0.854380412233947560,	
+0.854406393569198230,	0.854432372768432980,	0.854458349831586860,	0.854484324758594820,	0.854510297549391900,	0.854536268203913370,	0.854562236722094530,	0.854588203103869630,	
+0.854614167349174280,	0.854640129457943430,	0.854666089430112350,	0.854692047265615980,	0.854718002964389600,	0.854743956526368590,	0.854769907951487220,	0.854795857239681100,	
+0.854821804390885290,	0.854847749405035050,	0.854873692282065440,	0.854899633021911520,	0.854925571624508550,	0.854951508089792140,	0.854977442417696460,	0.855003374608157230,	
+0.855029304661109490,	0.855055232576488520,	0.855081158354229490,	0.855107081994267550,	0.855133003496537870,	0.855158922860976280,	0.855184840087516720,	0.855210755176095240,	
+0.855236668126646780,	0.855262578939106620,	0.855288487613410030,	0.855314394149492290,	0.855340298547288990,	0.855366200806734530,	0.855392100927764520,	0.855417998910314230,	
+0.855443894754318920,	0.855469788459713890,	0.855495680026434500,	0.855521569454415820,	0.855547456743593670,	0.855573341893902440,	0.855599224905277840,	0.855625105777655160,	
+0.855650984510969770,	0.855676861105156950,	0.855702735560151860,	0.855728607875890450,	0.855754478052307090,	0.855780346089337510,	0.855806211986917090,	0.855832075744981100,	
+0.855857937363464940,	0.855883796842303870,	0.855909654181433390,	0.855935509380789220,	0.855961362440305850,	0.855987213359919010,	0.856013062139564180,	0.856038908779176650,	
+0.856064753278691910,	0.856090595638045240,	0.856116435857172120,	0.856142273936008390,	0.856168109874488440,	0.856193943672548310,	0.856219775330123170,	0.856245604847148730,	
+0.856271432223560170,	0.856297257459293190,	0.856323080554283410,	0.856348901508465430,	0.856374720321775310,	0.856400536994148310,	0.856426351525520050,	0.856452163915825790,	
+0.856477974165001150,	0.856503782272981630,	0.856529588239703150,	0.856555392065100120,	0.856581193749108680,	0.856606993291664230,	0.856632790692702370,	0.856658585952158490,	
+0.856684379069968080,	0.856710170046066870,	0.856735958880390560,	0.856761745572873990,	0.856787530123452990,	0.856813312532063160,	0.856839092798640010,	0.856864870923119250,	
+0.856890646905436260,	0.856916420745527100,	0.856942192443326370,	0.856967961998770230,	0.856993729411794190,	0.857019494682333850,	0.857045257810324700,	0.857071018795702470,	
+0.857096777638402640,	0.857122534338361390,	0.857148288895513310,	0.857174041309794470,	0.857199791581140570,	0.857225539709487230,	0.857251285694769940,	0.857277029536924530,	
+0.857302771235886940,	0.857328510791592000,	0.857354248203975770,	0.857379983472973950,	0.857405716598522160,	0.857431447580556010,	0.857457176419011310,	0.857482903113823690,	
+0.857508627664929190,	0.857534350072262750,	0.857560070335760430,	0.857585788455357820,	0.857611504430990880,	0.857637218262595090,	0.857662929950106290,	0.857688639493460190,	
+0.857714346892592850,	0.857740052147439310,	0.857765755257935520,	0.857791456224017420,	0.857817155045620730,	0.857842851722681040,	0.857868546255134310,	0.857894238642916580,	
+0.857919928885962910,	0.857945616984209350,	0.857971302937591720,	0.857996986746045850,	0.858022668409507580,	0.858048347927912620,	0.858074025301196700,	0.858099700529296290,	
+0.858125373612146140,	0.858151044549682500,	0.858176713341841310,	0.858202379988558310,	0.858228044489769300,	0.858253706845410250,	0.858279367055416960,	0.858305025119725620,	
+0.858330681038271370,	0.858356334810990380,	0.858381986437818490,	0.858407635918691740,	0.858433283253545730,	0.858458928442316640,	0.858484571484940730,	0.858510212381352830,	
+0.858535851131489450,	0.858561487735286510,	0.858587122192679740,	0.858612754503605190,	0.858638384667998800,	0.858664012685796400,	0.858689638556934360,	0.858715262281347870,	
+0.858740883858973290,	0.858766503289746350,	0.858792120573603210,	0.858817735710479810,	0.858843348700311980,	0.858868959543036330,	0.858894568238587790,	0.858920174786902860,	
+0.858945779187917480,	0.858971381441567590,	0.858996981547789250,	0.859022579506518500,	0.859048175317691290,	0.859073768981244100,	0.859099360497112110,	0.859124949865231580,	
+0.859150537085538790,	0.859176122157969570,	0.859201705082460080,	0.859227285858946370,	0.859252864487364380,	0.859278440967650710,	0.859304015299740540,	0.859329587483570250,	
+0.859355157519075990,	0.859380725406193920,	0.859406291144860000,	0.859431854735010270,	0.859457416176581450,	0.859482975469508580,	0.859508532613728280,	0.859534087609176710,	
+0.859559640455789920,	0.859585191153503960,	0.859610739702255100,	0.859636286101979290,	0.859661830352613340,	0.859687372454092210,	0.859712912406352730,	0.859738450209331040,	
+0.859763985862963100,	0.859789519367185280,	0.859815050721933650,	0.859840579927144360,	0.859866106982754120,	0.859891631888698100,	0.859917154644913030,	0.859942675251335160,	
+0.859968193707900450,	0.859993710014545390,	0.860019224171205910,	0.860044736177818960,	0.860070246034319700,	0.860095753740644730,	0.860121259296730440,	0.860146762702513000,	
+0.860172263957928670,	0.860197763062913620,	0.860223260017404230,	0.860248754821337110,	0.860274247474647650,	0.860299737977272550,	0.860325226329148210,	0.860350712530210670,	
+0.860376196580396440,	0.860401678479641660,	0.860427158227883180,	0.860452635825056380,	0.860478111271097970,	0.860503584565944220,	0.860529055709531530,	0.860554524701796280,	
+0.860579991542674620,	0.860605456232103050,	0.860630918770018180,	0.860656379156355620,	0.860681837391052200,	0.860707293474044180,	0.860732747405267840,	0.860758199184659680,	
+0.860783648812155970,	0.860809096287693200,	0.860834541611208090,	0.860859984782636150,	0.860885425801914290,	0.860910864668978930,	0.860936301383766310,	0.860961735946212950,	
+0.860987168356255330,	0.861012598613830170,	0.861038026718873080,	0.861063452671321010,	0.861088876471110210,	0.861114298118177190,	0.861139717612458440,	0.861165134953890470,	
+0.861190550142409640,	0.861215963177952790,	0.861241374060455640,	0.861266782789855130,	0.861292189366087650,	0.861317593789089560,	0.861342996058797610,	0.861368396175148150,	
+0.861393794138077710,	0.861419189947523200,	0.861444583603420240,	0.861469975105705890,	0.861495364454316630,	0.861520751649188840,	0.861546136690259260,	0.861571519577464360,	
+0.861596900310740990,	0.861622278890025070,	0.861647655315253340,	0.861673029586362490,	0.861698401703289150,	0.861723771665969700,	0.861749139474340840,	0.861774505128339200,	
+0.861799868627901700,	0.861825229972964070,	0.861850589163463350,	0.861875946199336160,	0.861901301080519210,	0.861926653806948880,	0.861952004378562010,	0.861977352795295530,	
+0.862002699057085150,	0.862028043163868160,	0.862053385115580940,	0.862078724912160310,	0.862104062553542880,	0.862129398039665260,	0.862154731370464280,	0.862180062545876760,	
+0.862205391565838640,	0.862230718430287090,	0.862256043139158820,	0.862281365692390330,	0.862306686089918450,	0.862332004331679890,	0.862357320417611260,	0.862382634347649830,	
+0.862407946121731330,	0.862433255739793010,	0.862458563201771610,	0.862483868507603610,	0.862509171657226070,	0.862534472650575590,	0.862559771487589440,	0.862585068168203350,	
+0.862610362692354580,	0.862635655059979860,	0.862660945271016110,	0.862686233325399840,	0.862711519223068100,	0.862736802963957610,	0.862762084548005400,	0.862787363975147660,	
+0.862812641245321530,	0.862837916358463740,	0.862863189314511110,	0.862888460113400590,	0.862913728755068890,	0.862938995239452830,	0.862964259566489810,	0.862989521736115650,	
+0.863014781748267730,	0.863040039602882780,	0.863065295299897840,	0.863090548839249520,	0.863115800220874860,	0.863141049444711260,	0.863166296510694540,	0.863191541418761980,	
+0.863216784168850610,	0.863242024760897400,	0.863267263194839040,	0.863292499470612480,	0.863317733588154780,	0.863342965547403090,	0.863368195348293570,	0.863393422990763600,	
+0.863418648474750030,	0.863443871800189780,	0.863469092967020010,	0.863494311975177340,	0.863519528824599480,	0.863544743515222260,	0.863569956046983280,	0.863595166419819260,	
+0.863620374633667480,	0.863645580688464640,	0.863670784584147920,	0.863695986320654250,	0.863721185897921020,	0.863746383315884380,	0.863771578574481720,	0.863796771673650210,	
+0.863821962613326780,	0.863847151393448360,	0.863872338013952130,	0.863897522474775030,	0.863922704775854530,	0.863947884917126930,	0.863973062898529600,	0.863998238719999480,	
+0.864023412381473950,	0.864048583882889740,	0.864073753224184120,	0.864098920405294570,	0.864124085426157260,	0.864149248286709800,	0.864174408986889130,	0.864199567526632520,	
+0.864224723905876900,	0.864249878124559560,	0.864275030182617420,	0.864300180079988320,	0.864325327816608200,	0.864350473392414780,	0.864375616807345090,	0.864400758061336540,	
+0.864425897154325940,	0.864451034086250680,	0.864476168857048250,	0.864501301466654940,	0.864526431915008440,	0.864551560202045820,	0.864576686327704240,	0.864601810291921070,	
+0.864626932094633260,	0.864652051735778190,	0.864677169215293470,	0.864702284533115260,	0.864727397689181390,	0.864752508683429120,	0.864777617515795400,	0.864802724186217840,	
+0.864827828694633370,	0.864852931040979270,	0.864878031225193360,	0.864903129247211910,	0.864928225106972650,	0.864953318804412840,	0.864978410339469650,	0.865003499712080570,	
+0.865028586922182650,	0.865053671969713720,	0.865078754854610170,	0.865103835576809700,	0.865128914136249700,	0.865153990532867350,	0.865179064766600110,	0.865204136837385170,	
+0.865229206745159910,	0.865254274489862030,	0.865279340071428040,	0.865304403489795650,	0.865329464744902350,	0.865354523836685320,	0.865379580765082030,	0.865404635530029780,	
+0.865429688131465810,	0.865454738569328200,	0.865479786843553310,	0.865504832954078870,	0.865529876900842490,	0.865554918683781200,	0.865579958302832850,	0.865604995757934480,	
+0.865630031049024030,	0.865655064176038100,	0.865680095138914530,	0.865705123937590690,	0.865730150572004090,	0.865755175042092100,	0.865780197347792100,	0.865805217489041710,	
+0.865830235465778640,	0.865855251277939610,	0.865880264925462440,	0.865905276408284520,	0.865930285726343450,	0.865955292879576730,	0.865980297867921740,	0.866005300691316430,	
+0.866030301349697500,	0.866055299843002780,	0.866080296171169770,	0.866105290334135970,	0.866130282331839090,	0.866155272164216390,	0.866180259831205610,	0.866205245332744460,	
+0.866230228668769860,	0.866255209839219660,	0.866280188844031570,	0.866305165683142860,	0.866330140356491250,	0.866355112864014340,	0.866380083205649630,	0.866405051381335170,	
+0.866430017391007560,	0.866454981234604960,	0.866479942912064980,	0.866504902423325010,	0.866529859768322860,	0.866554814946996040,	0.866579767959282710,	0.866604718805119360,	
+0.866629667484444370,	0.866654613997195120,	0.866679558343309340,	0.866704500522724740,	0.866729440535378810,	0.866754378381209280,	0.866779314060154290,	0.866804247572150470,	
+0.866829178917136180,	0.866854108095048810,	0.866879035105826310,	0.866903959949406170,	0.866928882625725980,	0.866953803134723810,	0.866978721476337480,	0.867003637650503810,	
+0.867028551657161200,	0.867053463496247120,	0.867078373167699420,	0.867103280671455810,	0.867128186007453890,	0.867153089175632050,	0.867177990175927000,	0.867202889008277020,	
+0.867227785672619820,	0.867252680168893120,	0.867277572497034740,	0.867302462656982410,	0.867327350648673940,	0.867352236472047510,	0.867377120127040050,	0.867402001613589820,	
+0.867426880931634560,	0.867451758081112080,	0.867476633061960210,	0.867501505874116790,	0.867526376517520070,	0.867551244992106900,	0.867576111297815640,	0.867600975434584140,	
+0.867625837402350220,	0.867650697201051700,	0.867675554830626310,	0.867700410291012190,	0.867725263582147410,	0.867750114703969010,	0.867774963656415380,	0.867799810439424340,	
+0.867824655052933710,	0.867849497496881450,	0.867874337771205480,	0.867899175875843750,	0.867924011810734420,	0.867948845575814640,	0.867973677171022700,	0.867998506596296630,	
+0.868023333851574260,	0.868048158936793660,	0.868072981851892520,	0.868097802596809460,	0.868122621171481420,	0.868147437575846780,	0.868172251809843590,	0.868197063873409780,	
+0.868221873766483300,	0.868246681489002080,	0.868271487040904290,	0.868296290422128080,	0.868321091632610840,	0.868345890672290730,	0.868370687541106020,	0.868395482238994540,	
+0.868420274765894340,	0.868445065121743460,	0.868469853306479970,	0.868494639320042230,	0.868519423162367410,	0.868544204833394120,	0.868568984333060290,	0.868593761661303980,	
+0.868618536818063340,	0.868643309803276200,	0.868668080616881390,	0.868692849258815850,	0.868717615729018180,	0.868742380027426540,	0.868767142153978880,	0.868791902108613460,	
+0.868816659891268220,	0.868841415501881320,	0.868866168940391370,	0.868890920206735530,	0.868915669300852290,	0.868940416222680030,	0.868965160972156700,	0.868989903549220340,	
+0.869014643953809340,	0.869039382185862190,	0.869064118245316040,	0.869088852132109730,	0.869113583846181200,	0.869138313387468720,	0.869163040755910440,	0.869187765951444650,	
+0.869212488974009380,	0.869237209823543360,	0.869261928499983850,	0.869286645003269460,	0.869311359333338470,	0.869336071490129150,	0.869360781473579650,	0.869385489283628130,	
+0.869410194920212990,	0.869434898383272700,	0.869459599672744780,	0.869484298788567920,	0.869508995730680190,	0.869533690499020070,	0.869558383093525620,	0.869583073514135330,	
+0.869607761760787690,	0.869632447833420310,	0.869657131731971680,	0.869681813456380290,	0.869706493006584420,	0.869731170382522230,	0.869755845584132210,	0.869780518611352530,	
+0.869805189464122000,	0.869829858142378010,	0.869854524646059390,	0.869879188975104520,	0.869903851129451570,	0.869928511109039130,	0.869953168913805360,	0.869977824543688550,	
+0.870002477998627730,	0.870027129278560300,	0.870051778383424960,	0.870076425313160210,	0.870101070067704430,	0.870125712646996010,	0.870150353050973210,	0.870174991279574980,	
+0.870199627332738920,	0.870224261210403750,	0.870248892912507950,	0.870273522438989810,	0.870298149789787920,	0.870322774964840780,	0.870347397964086560,	0.870372018787464290,	
+0.870396637434911580,	0.870421253906367260,	0.870445868201769830,	0.870470480321057670,	0.870495090264169380,	0.870519698031043340,	0.870544303621618500,	0.870568907035832450,	
+0.870593508273624140,	0.870618107334932060,	0.870642704219694700,	0.870667298927850550,	0.870691891459338230,	0.870716481814096110,	0.870741069992063240,	0.870765655993177230,	
+0.870790239817377130,	0.870814821464601430,	0.870839400934788730,	0.870863978227877420,	0.870888553343806220,	0.870913126282513610,	0.870937697043938640,	0.870962265628019040,	
+0.870986832034693740,	0.871011396263901340,	0.871035958315580450,	0.871060518189669670,	0.871085075886107620,	0.871109631404833220,	0.871134184745784410,	0.871158735908900140,	
+0.871183284894119000,	0.871207831701379610,	0.871232376330620670,	0.871256918781780800,	0.871281459054798700,	0.871305997149613320,	0.871330533066162480,	0.871355066804385350,	
+0.871379598364220520,	0.871404127745606720,	0.871428654948482650,	0.871453179972786820,	0.871477702818458600,	0.871502223485435600,	0.871526741973657090,	0.871551258283061680,	
+0.871575772413588190,	0.871600284365175230,	0.871624794137761620,	0.871649301731285960,	0.871673807145687430,	0.871698310380904060,	0.871722811436874910,	0.871747310313538690,	
+0.871771807010834120,	0.871796301528700130,	0.871820793867075340,	0.871845284025898670,	0.871869772005109070,	0.871894257804644690,	0.871918741424444700,	0.871943222864447810,	
+0.871967702124592850,	0.871992179204818640,	0.872016654105064020,	0.872041126825268130,	0.872065597365369040,	0.872090065725305900,	0.872114531905017750,	0.872138995904443100,	
+0.872163457723521000,	0.872187917362190370,	0.872212374820389820,	0.872236830098058860,	0.872261283195135300,	0.872285734111558520,	0.872310182847267470,	0.872334629402200970,	
+0.872359073776297840,	0.872383515969497150,	0.872407955981737480,	0.872432393812958450,	0.872456829463098100,	0.872481262932095600,	0.872505694219889880,	0.872530123326419990,	
+0.872554550251624760,	0.872578974995443120,	0.872603397557814580,	0.872627817938677050,	0.872652236137970050,	0.872676652155632390,	0.872701065991603020,	0.872725477645821090,	
+0.872749887118225430,	0.872774294408755090,	0.872798699517349450,	0.872823102443946560,	0.872847503188486030,	0.872871901750906680,	0.872896298131147550,	0.872920692329147710,	
+0.872945084344846080,	0.872969474178182270,	0.872993861829094220,	0.873018247297521640,	0.873042630583403370,	0.873067011686678550,	0.873091390607286130,	0.873115767345165380,	
+0.873140141900255130,	0.873164514272494970,	0.873188884461822970,	0.873213252468178940,	0.873237618291501700,	0.873261981931730440,	0.873286343388804180,	0.873310702662662090,	
+0.873335059753243210,	0.873359414660487170,	0.873383767384332210,	0.873408117924717730,	0.873432466281583000,	0.873456812454867060,	0.873481156444509080,	0.873505498250448320,	
+0.873529837872624170,	0.873554175310975010,	0.873578510565440340,	0.873602843635959530,	0.873627174522471520,	0.873651503224915580,	0.873675829743230880,	0.873700154077356570,	
+0.873724476227232370,	0.873748796192796550,	0.873773113973988710,	0.873797429570748130,	0.873821742983013960,	0.873846054210725360,	0.873870363253821720,	0.873894670112242200,	
+0.873918974785926280,	0.873943277274812690,	0.873967577578840800,	0.873991875697949890,	0.874016171632079450,	0.874040465381168420,	0.874064756945156400,	0.874089046323982770,	
+0.874113333517586130,	0.874137618525906210,	0.874161901348882160,	0.874186181986453480,	0.874210460438559210,	0.874234736705138850,	0.874259010786131660,	0.874283282681477370,	
+0.874307552391114460,	0.874331819914982660,	0.874356085253021330,	0.874380348405169760,	0.874404609371367330,	0.874428868151553300,	0.874453124745667610,	0.874477379153648650,	
+0.874501631375436350,	0.874525881410969870,	0.874550129260188710,	0.874574374923032140,	0.874598618399439750,	0.874622859689350720,	0.874647098792705080,	0.874671335709441220,	
+0.874695570439498970,	0.874719802982817820,	0.874744033339337150,	0.874768261508996450,	0.874792487491735100,	0.874816711287492500,	0.874840932896208460,	0.874865152317821800,	
+0.874889369552272260,	0.874913584599499190,	0.874937797459442220,	0.874962008132040720,	0.874986216617234300,	0.875010422914962670,	0.875034627025164550,	0.875058828947779980,	
+0.875083028682748230,	0.875107226230008920,	0.875131421589501520,	0.875155614761165660,	0.875179805744940700,	0.875203994540766690,	0.875228181148582140,	0.875252365568327310,	
+0.875276547799941460,	0.875300727843364320,	0.875324905698535270,	0.875349081365394020,	0.875373254843880070,	0.875397426133933340,	0.875421595235492680,	0.875445762148498010,	
+0.875469926872888940,	0.875494089408605070,	0.875518249755586010,	0.875542407913771250,	0.875566563883100950,	0.875590717663513820,	0.875614869254949800,	0.875639018657348720,	
+0.875663165870650070,	0.875687310894793460,	0.875711453729718590,	0.875735594375365080,	0.875759732831673080,	0.875783869098581190,	0.875808003176029690,	0.875832135063958180,	
+0.875856264762306380,	0.875880392271013890,	0.875904517590020410,	0.875928640719266130,	0.875952761658689740,	0.875976880408231520,	0.876000996967830960,	0.876025111337428000,	
+0.876049223516962350,	0.876073333506373510,	0.876097441305601410,	0.876121546914586100,	0.876145650333266410,	0.876169751561582720,	0.876193850599474630,	0.876217947446881860,	
+0.876242042103744350,	0.876266134570001580,	0.876290224845593600,	0.876314312930460360,	0.876338398824541010,	0.876362482527775600,	0.876386564040104070,	0.876410643361466010,	
+0.876434720491801490,	0.876458795431049990,	0.876482868179152110,	0.876506938736046460,	0.876531007101673640,	0.876555073275973150,	0.876579137258885030,	0.876603199050349110,	
+0.876627258650305220,	0.876651316058693060,	0.876675371275453140,	0.876699424300524280,	0.876723475133846960,	0.876747523775360800,	0.876771570225005960,	0.876795614482722140,	
+0.876819656548449400,	0.876843696422127450,	0.876867734103696670,	0.876891769593096120,	0.876915802890266050,	0.876939833995146630,	0.876963862907677580,	0.876987889627798830,	
+0.877011914155450430,	0.877035936490572650,	0.877059956633104540,	0.877083974582986590,	0.877107990340158740,	0.877132003904560810,	0.877156015276132960,	0.877180024454815020,	
+0.877204031440547040,	0.877228036233269390,	0.877252038832921240,	0.877276039239443080,	0.877300037452774740,	0.877324033472856260,	0.877348027299627690,	0.877372018933029190,	
+0.877396008373000910,	0.877419995619482250,	0.877443980672413690,	0.877467963531735060,	0.877491944197386520,	0.877515922669308220,	0.877539898947440000,	0.877563873031722120,	
+0.877587844922094960,	0.877611814618497800,	0.877635782120871010,	0.877659747429154760,	0.877683710543289200,	0.877707671463214380,	0.877731630188870350,	0.877755586720197270,	
+0.877779541057135630,	0.877803493199624700,	0.877827443147605080,	0.877851390901016830,	0.877875336459800090,	0.877899279823895040,	0.877923220993241720,	0.877947159967780830,	
+0.877971096747451660,	0.877995031332194700,	0.878018963721950210,	0.878042893916658240,	0.878066821916258950,	0.878090747720692730,	0.878114671329899620,	0.878138592743820330,	
+0.878162511962394030,	0.878186428985561540,	0.878210343813262910,	0.878234256445438400,	0.878258166882028290,	0.878282075122972740,	0.878305981168212460,	0.878329885017686830,	
+0.878353786671336350,	0.878377686129101500,	0.878401583390922450,	0.878425478456739460,	0.878449371326492700,	0.878473262000122550,	0.878497150477569710,	0.878521036758773580,	
+0.878544920843674750,	0.878568802732213720,	0.878592682424330640,	0.878616559919965790,	0.878640435219059660,	0.878664308321552400,	0.878688179227384740,	0.878712047936496270,	
+0.878735914448827700,	0.878759778764319210,	0.878783640882911390,	0.878807500804544510,	0.878831358529158830,	0.878855214056695090,	0.878879067387092980,	0.878902918520293230,	
+0.878926767456236100,	0.878950614194862090,	0.878974458736111570,	0.878998301079924830,	0.879022141226242450,	0.879045979175005040,	0.879069814926152330,	0.879093648479625010,	
+0.879117479835363700,	0.879141308993308560,	0.879165135953400180,	0.879188960715578950,	0.879212783279785360,	0.879236603645960240,	0.879260421814043180,	0.879284237783975020,	
+0.879308051555696360,	0.879331863129147460,	0.879355672504268940,	0.879379479681001270,	0.879403284659285300,	0.879427087439060730,	0.879450888020268380,	0.879474686402848870,	
+0.879498482586742570,	0.879522276571890080,	0.879546068358232010,	0.879569857945708630,	0.879593645334261100,	0.879617430523829010,	0.879641213514353320,	0.879664994305774720,	
+0.879688772898033490,	0.879712549291070340,	0.879736323484825890,	0.879760095479241060,	0.879783865274255560,	0.879807632869810340,	0.879831398265846110,	0.879855161462303360,	
+0.879878922459122690,	0.879902681256244710,	0.879926437853610020,	0.879950192251159670,	0.879973944448833370,	0.879997694446572280,	0.880021442244317000,	0.880045187842008030,	
+0.880068931239586070,	0.880092672436991850,	0.880116411434165860,	0.880140148231049360,	0.880163882827582070,	0.880187615223705030,	0.880211345419358970,	0.880235073414484480,	
+0.880258799209022390,	0.880282522802913300,	0.880306244196098260,	0.880329963388517210,	0.880353680380111300,	0.880377395170821140,	0.880401107760587550,	0.880424818149351140,	
+0.880448526337052730,	0.880472232323632920,	0.880495936109033090,	0.880519637693192860,	0.880543337076053590,	0.880567034257556000,	0.880590729237640810,	0.880614422016248730,	
+0.880638112593320700,	0.880661800968797310,	0.880685487142619850,	0.880709171114728350,	0.880732852885063870,	0.880756532453567220,	0.880780209820179240,	0.880803884984840750,	
+0.880827557947492570,	0.880851228708075860,	0.880874897266530680,	0.880898563622798280,	0.880922227776819500,	0.880945889728535050,	0.880969549477885970,	0.880993207024812990,	
+0.881016862369257030,	0.881040515511159250,	0.881064166450459820,	0.881087815187099890,	0.881111461721020510,	0.881135106052162500,	0.881158748180466690,	0.881182388105874010,	
+0.881206025828325750,	0.881229661347762040,	0.881253294664124160,	0.881276925777353060,	0.881300554687389660,	0.881324181394174790,	0.881347805897649490,	0.881371428197754710,	
+0.881395048294431830,	0.881418666187620880,	0.881442281877263260,	0.881465895363299890,	0.881489506645671830,	0.881513115724320010,	0.881536722599185360,	0.881560327270208940,	
+0.881583929737332130,	0.881607530000494970,	0.881631128059639170,	0.881654723914705450,	0.881678317565634860,	0.881701909012368560,	0.881725498254847470,	0.881749085293012990,	
+0.881772670126805490,	0.881796252756166240,	0.881819833181036410,	0.881843411401356910,	0.881866987417068930,	0.881890561228113490,	0.881914132834431650,	0.881937702235964900,	
+0.881961269432653520,	0.881984834424438870,	0.882008397211262230,	0.882031957793064540,	0.882055516169786950,	0.882079072341370620,	0.882102626307756600,	0.882126178068886380,	
+0.882149727624700340,	0.882173274975139980,	0.882196820120146330,	0.882220363059660780,	0.882243903793624270,	0.882267442321977960,	0.882290978644663550,	0.882314512761621210,	
+0.882338044672792530,	0.882361574378118910,	0.882385101877541160,	0.882408627171000770,	0.882432150258438800,	0.882455671139796500,	0.882479189815015390,	0.882502706284035820,	
+0.882526220546799630,	0.882549732603247760,	0.882573242453321580,	0.882596750096962370,	0.882620255534111280,	0.882643758764709910,	0.882667259788698750,	0.882690758606019420,	
+0.882714255216613180,	0.882737749620421290,	0.882761241817385130,	0.882784731807445770,	0.882808219590544670,	0.882831705166623350,	0.882855188535622390,	0.882878669697483410,	
+0.882902148652147780,	0.882925625399556880,	0.882949099939651760,	0.882972572272374020,	0.882996042397664830,	0.883019510315465880,	0.883042976025717800,	0.883066439528362170,	
+0.883089900823340600,	0.883113359910594140,	0.883136816790064390,	0.883160271461692510,	0.883183723925420440,	0.883207174181188660,	0.883230622228938890,	0.883254068068612510,	
+0.883277511700151120,	0.883300953123495770,	0.883324392338588170,	0.883347829345369480,	0.883371264143781750,	0.883394696733765360,	0.883418127115262350,	0.883441555288213890,	
+0.883464981252561570,	0.883488405008246770,	0.883511826555211100,	0.883535245893395720,	0.883558663022742660,	0.883582077943192550,	0.883605490654687300,	0.883628901157168300,	
+0.883652309450576930,	0.883675715534854910,	0.883699119409943610,	0.883722521075784860,	0.883745920532319370,	0.883769317779489190,	0.883792712817235590,	0.883816105645500280,	
+0.883839496264224760,	0.883862884673350390,	0.883886270872818900,	0.883909654862572110,	0.883933036642550740,	0.883956416212696830,	0.883979793572951870,	0.884003168723257350,	
+0.884026541663554990,	0.884049912393786270,	0.884073280913893140,	0.884096647223816420,	0.884120011323498160,	0.884143373212879720,	0.884166732891902950,	0.884190090360509330,	
+0.884213445618640460,	0.884236798666238060,	0.884260149503243940,	0.884283498129599170,	0.884306844545245550,	0.884330188750124810,	0.884353530744178660,	0.884376870527348700,	
+0.884400208099576530,	0.884423543460803870,	0.884446876610972770,	0.884470207550023920,	0.884493536277899730,	0.884516862794541670,	0.884540187099891350,	0.884563509193890710,	
+0.884586829076481120,	0.884610146747605080,	0.884633462207203070,	0.884656775455217480,	0.884680086491590020,	0.884703395316262300,	0.884726701929176020,	0.884750006330273010,	
+0.884773308519495090,	0.884796608496784210,	0.884819906262081400,	0.884843201815328830,	0.884866495156468310,	0.884889786285441570,	0.884913075202190310,	0.884936361906656370,	
+0.884959646398781890,	0.884982928678507920,	0.885006208745776620,	0.885029486600529820,	0.885052762242709350,	0.885076035672256900,	0.885099306889114310,	0.885122575893223520,	
+0.885145842684526780,	0.885169107262964940,	0.885192369628480360,	0.885215629781014760,	0.885238887720510180,	0.885262143446908350,	0.885285396960151180,	0.885308648260180520,	
+0.885331897346938730,	0.885355144220366650,	0.885378388880406760,	0.885401631327000890,	0.885424871560090980,	0.885448109579618840,	0.885471345385526520,	0.885494578977756190,	
+0.885517810356248880,	0.885541039520947200,	0.885564266471792870,	0.885587491208727930,	0.885610713731694200,	0.885633934040633730,	0.885657152135488350,	0.885680368016200540,	
+0.885703581682711460,	0.885726793134963280,	0.885750002372898250,	0.885773209396458210,	0.885796414205585080,	0.885819616800220920,	0.885842817180307770,	0.885866015345788020,	
+0.885889211296602700,	0.885912405032694420,	0.885935596554005110,	0.885958785860476830,	0.885981972952051610,	0.886005157828671400,	0.886028340490278790,	0.886051520936814830,	
+0.886074699168222120,	0.886097875184442610,	0.886121048985418440,	0.886144220571091660,	0.886167389941404320,	0.886190557096298460,	0.886213722035716690,	0.886236884759600160,	
+0.886260045267891480,	0.886283203560532700,	0.886306359637465850,	0.886329513498633090,	0.886352665143976590,	0.886375814573438840,	0.886398961786961090,	0.886422106784485960,	
+0.886445249565955500,	0.886468390131312070,	0.886491528480497500,	0.886514664613454180,	0.886537798530124270,	0.886560930230450240,	0.886584059714373370,	0.886607186981836490,	
+0.886630312032781530,	0.886653434867150870,	0.886676555484886550,	0.886699673885930960,	0.886722790070226030,	0.886745904037714690,	0.886769015788338110,	0.886792125322038990,	
+0.886815232638759500,	0.886838337738442010,	0.886861440621028670,	0.886884541286461660,	0.886907639734683780,	0.886930735965636430,	0.886953829979262090,	0.886976921775503360,	
+0.887000011354302180,	0.887023098715601030,	0.887046183859342090,	0.887069266785467710,	0.887092347493920630,	0.887115425984642210,	0.887138502257575290,	0.887161576312662010,	
+0.887184648149844880,	0.887207717769066150,	0.887230785170268100,	0.887253850353392990,	0.887276913318383760,	0.887299974065181800,	0.887323032593729910,	0.887346088903970490,	
+0.887369142995845790,	0.887392194869298320,	0.887415244524270230,	0.887438291960704560,	0.887461337178542700,	0.887484380177727460,	0.887507420958201340,	0.887530459519906610,	
+0.887553495862785760,	0.887576529986781160,	0.887599561891835200,	0.887622591577890810,	0.887645619044889480,	0.887668644292774140,	0.887691667321487190,	0.887714688130971100,	
+0.887737706721168250,	0.887760723092021140,	0.887783737243472590,	0.887806749175464320,	0.887829758887939250,	0.887852766380839650,	0.887875771654108250,	0.887898774707687300,	
+0.887921775541519520,	0.887944774155547290,	0.887967770549713540,	0.887990764723959880,	0.888013756678229350,	0.888036746412464440,	0.888059733926607640,	0.888082719220601560,	
+0.888105702294388680,	0.888128683147911490,	0.888151661781113040,	0.888174638193934940,	0.888197612386320330,	0.888220584358211720,	0.888243554109551580,	0.888266521640282520,	
+0.888289486950347260,	0.888312450039688620,	0.888335410908248520,	0.888358369555969810,	0.888381325982795180,	0.888404280188667350,	0.888427232173528700,	0.888450181937322060,	
+0.888473129479989910,	0.888496074801475300,	0.888519017901720170,	0.888541958780667440,	0.888564897438259840,	0.888587833874440070,	0.888610768089150630,	0.888633700082334220,	
+0.888656629853933680,	0.888679557403891930,	0.888702482732150910,	0.888725405838653560,	0.888748326723342810,	0.888771245386161260,	0.888794161827051510,	0.888817076045956390,	
+0.888839988042818940,	0.888862897817581210,	0.888885805370186240,	0.888908710700576640,	0.888931613808695340,	0.888954514694485050,	0.888977413357888380,	0.889000309798848250,	
+0.889023204017307720,	0.889046096013208720,	0.889068985786494630,	0.889091873337107930,	0.889114758664991570,	0.889137641770088360,	0.889160522652341020,	0.889183401311692820,	
+0.889206277748085690,	0.889229151961462900,	0.889252023951767170,	0.889274893718941420,	0.889297761262928370,	0.889320626583670950,	0.889343489681111990,	0.889366350555194750,	
+0.889389209205861180,	0.889412065633054530,	0.889434919836717740,	0.889457771816793750,	0.889480621573225270,	0.889503469105955240,	0.889526314414926470,	0.889549157500082340,	
+0.889571998361365020,	0.889594836998717660,	0.889617673412083090,	0.889640507601404450,	0.889663339566624580,	0.889686169307686290,	0.889708996824532970,	0.889731822117106770,	
+0.889754645185350970,	0.889777466029208600,	0.889800284648622600,	0.889823101043535900,	0.889845915213891450,	0.889868727159632170,	0.889891536880701440,	0.889914344377041530,	
+0.889937149648595720,	0.889959952695307030,	0.889982753517118530,	0.890005552113973030,	0.890028348485813690,	0.890051142632583560,	0.890073934554225900,	0.890096724250682980,	
+0.890119511721898290,	0.890142296967814880,	0.890165079988375680,	0.890187860783523740,	0.890210639353202220,	0.890233415697354480,	0.890256189815922800,	0.890278961708850570,	
+0.890301731376081040,	0.890324498817557150,	0.890347264033221950,	0.890370027023018710,	0.890392787786890240,	0.890415546324780370,	0.890438302636631150,	0.890461056722386180,	
+0.890483808581988610,	0.890506558215381380,	0.890529305622507870,	0.890552050803311120,	0.890574793757734630,	0.890597534485720770,	0.890620272987213020,	0.890643009262154560,	
+0.890665743310488640,	0.890688475132158320,	0.890711204727106850,	0.890733932095277400,	0.890756657236613460,	0.890779380151057510,	0.890802100838553050,	0.890824819299043340,	
+0.890847535532471650,	0.890870249538781130,	0.890892961317914960,	0.890915670869816380,	0.890938378194429000,	0.890961083291695320,	0.890983786161558930,	0.891006486803962990,	
+0.891029185218850880,	0.891051881406165870,	0.891074575365851110,	0.891097267097850310,	0.891119956602105970,	0.891142643878561680,	0.891165328927160830,	0.891188011747846680,	
+0.891210692340562490,	0.891233370705251550,	0.891256046841857110,	0.891278720750323110,	0.891301392430591810,	0.891324061882607040,	0.891346729106312070,	0.891369394101650280,	
+0.891392056868565150,	0.891414717406999730,	0.891437375716897520,	0.891460031798202320,	0.891482685650856640,	0.891505337274804300,	0.891527986669988560,	0.891550633836352800,	
+0.891573278773840520,	0.891595921482395080,	0.891618561961960210,	0.891641200212478500,	0.891663836233893780,	0.891686470026149540,	0.891709101589189030,	0.891731730922955880,	
+0.891754358027393330,	0.891776982902444890,	0.891799605548054370,	0.891822225964164490,	0.891844844150719070,	0.891867460107661490,	0.891890073834935240,	0.891912685332483800,	
+0.891935294600250670,	0.891957901638179670,	0.891980506446213630,	0.892003109024296250,	0.892025709372371130,	0.892048307490381660,	0.892070903378271440,	0.892093497035984060,	
+0.892116088463462800,	0.892138677660651800,	0.892161264627493680,	0.892183849363932470,	0.892206431869911550,	0.892229012145374530,	0.892251590190265120,	0.892274166004526580,	
+0.892296739588102740,	0.892319310940937300,	0.892341880062973320,	0.892364446954154620,	0.892387011614424800,	0.892409574043727450,	0.892432134242006180,	0.892454692209204480,	
+0.892477247945266510,	0.892499801450135080,	0.892522352723754130,	0.892544901766067270,	0.892567448577018090,	0.892589993156550410,	0.892612535504607620,	0.892635075621133640,	
+0.892657613506072200,	0.892680149159366440,	0.892702682580960310,	0.892725213770797500,	0.892747742728821510,	0.892770269454976280,	0.892792793949205410,	0.892815316211452940,	
+0.892837836241661690,	0.892860354039775930,	0.892882869605739260,	0.892905382939495400,	0.892927894040988050,	0.892950402910161030,	0.892972909546957960,	0.892995413951323090,	
+0.893017916123199250,	0.893040416062530600,	0.893062913769260950,	0.893085409243333910,	0.893107902484693410,	0.893130393493283160,	0.893152882269046990,	0.893175368811928940,	
+0.893197853121872050,	0.893220335198820600,	0.893242815042718300,	0.893265292653508960,	0.893287768031136300,	0.893310241175544250,	0.893332712086677080,	0.893355180764477730,	
+0.893377647208890350,	0.893400111419858870,	0.893422573397327110,	0.893445033141239020,	0.893467490651538190,	0.893489945928168770,	0.893512398971074820,	0.893534849780199480,	
+0.893557298355486920,	0.893579744696881280,	0.893602188804326180,	0.893624630677765650,	0.893647070317143520,	0.893669507722403720,	0.893691942893490520,	0.893714375830347070,	
+0.893736806532917760,	0.893759235001146400,	0.893781661234976930,	0.893804085234353280,	0.893826506999219510,	0.893848926529519750,	0.893871343825197400,	0.893893758886196600,	
+0.893916171712461400,	0.893938582303935860,	0.893960990660563780,	0.893983396782289220,	0.894005800669056220,	0.894028202320809040,	0.894050601737491070,	0.894072998919046570,	
+0.894095393865419470,	0.894117786576553940,	0.894140177052394010,	0.894162565292883630,	0.894184951297967160,	0.894207335067587980,	0.894229716601690370,	0.894252095900218590,	
+0.894274472963116460,	0.894296847790328250,	0.894319220381797790,	0.894341590737469440,	0.894363958857287370,	0.894386324741195060,	0.894408688389137010,	0.894431049801057140,	
+0.894453408976899620,	0.894475765916608710,	0.894498120620128350,	0.894520473087402570,	0.894542823318376090,	0.894565171312992180,	0.894587517071195330,	0.894609860592929680,	
+0.894632201878139300,	0.894654540926768550,	0.894676877738761370,	0.894699212314062460,	0.894721544652615000,	0.894743874754363790,	0.894766202619252880,	0.894788528247226430,	
+0.894810851638228600,	0.894833172792203760,	0.894855491709095950,	0.894877808388849780,	0.894900122831408740,	0.894922435036717310,	0.894944745004719880,	0.894967052735360590,	
+0.894989358228583610,	0.895011661484333200,	0.895033962502553740,	0.895056261283189710,	0.895078557826184620,	0.895100852131483160,	0.895123144199029610,	0.895145434028768120,	
+0.895167721620643060,	0.895190006974598720,	0.895212290090579790,	0.895234570968529760,	0.895256849608393250,	0.895279126010114610,	0.895301400173638130,	0.895323672098908170,	
+0.895345941785869130,	0.895368209234465140,	0.895390474444641040,	0.895412737416340310,	0.895434998149507780,	0.895457256644087820,	0.895479512900024590,	0.895501766917262690,	
+0.895524018695746270,	0.895546268235420270,	0.895568515536228180,	0.895590760598114820,	0.895613003421024570,	0.895635244004901800,	0.895657482349690890,	0.895679718455336340,	
+0.895701952321782400,	0.895724183948974020,	0.895746413336854790,	0.895768640485369530,	0.895790865394462730,	0.895813088064078670,	0.895835308494161930,	0.895857526684656900,	
+0.895879742635508070,	0.895901956346660260,	0.895924167818057170,	0.895946377049643750,	0.895968584041364260,	0.895990788793163410,	0.896012991304985460,	0.896035191576775140,	
+0.896057389608477250,	0.896079585400035410,	0.896101778951394650,	0.896123970262499460,	0.896146159333294330,	0.896168346163723760,	0.896190530753732340,	0.896212713103264670,	
+0.896234893212265570,	0.896257071080678760,	0.896279246708449380,	0.896301420095521830,	0.896323591241840800,	0.896345760147350680,	0.896367926811996290,	0.896390091235722000,	
+0.896412253418472860,	0.896434413360192690,	0.896456571060826550,	0.896478726520318900,	0.896500879738614590,	0.896523030715657980,	0.896545179451393780,	0.896567325945767050,	
+0.896589470198721590,	0.896611612210202470,	0.896633751980154270,	0.896655889508521710,	0.896678024795249500,	0.896700157840282120,	0.896722288643564400,	0.896744417205041390,	
+0.896766543524656900,	0.896788667602356090,	0.896810789438083570,	0.896832909031784140,	0.896855026383402310,	0.896877141492883000,	0.896899254360171260,	0.896921364985210910,	
+0.896943473367947220,	0.896965579508324780,	0.896987683406288540,	0.897009785061782970,	0.897031884474752910,	0.897053981645143160,	0.897076076572898900,	0.897098169257964040,	
+0.897120259700283750,	0.897142347899802740,	0.897164433856465940,	0.897186517570218060,	0.897208599041003920,	0.897230678268768230,	0.897252755253456160,	0.897274829995011960,	
+0.897296902493380570,	0.897318972748507030,	0.897341040760335940,	0.897363106528812350,	0.897385170053880850,	0.897407231335486940,	0.897429290373574550,	0.897451347168088940,	
+0.897473401718974940,	0.897495454026177470,	0.897517504089641370,	0.897539551909311450,	0.897561597485132650,	0.897583640817050220,	0.897605681905008450,	0.897627720748952360,	
+0.897649757348826900,	0.897671791704577230,	0.897693823816147930,	0.897715853683484170,	0.897737881306530760,	0.897759906685232980,	0.897781929819535090,	0.897803950709382350,	
+0.897825969354719700,	0.897847985755492180,	0.897869999911644730,	0.897892011823122170,	0.897914021489870100,	0.897936028911832440,	0.897958034088954800,	0.897980037021182120,	
+0.898002037708459320,	0.898024036150731340,	0.898046032347943330,	0.898068026300040230,	0.898090018006967530,	0.898112007468669260,	0.898133994685091030,	0.898155979656177880,	
+0.898177962381874750,	0.898199942862126680,	0.898221921096878710,	0.898243897086076440,	0.898265870829664030,	0.898287842327586850,	0.898309811579790060,	0.898331778586218820,	
+0.898353743346818060,	0.898375705861533040,	0.898397666130308690,	0.898419624153090620,	0.898441579929822990,	0.898463533460451490,	0.898485484744921180,	0.898507433783177100,	
+0.898529380575164520,	0.898551325120828360,	0.898573267420114010,	0.898595207472966840,	0.898617145279331230,	0.898639080839152780,	0.898661014152376650,	0.898682945218947870,	
+0.898704874038811830,	0.898726800611913570,	0.898748724938198800,	0.898770647017611780,	0.898792566850098120,	0.898814484435602970,	0.898836399774071700,	0.898858312865449370,	
+0.898880223709681350,	0.898902132306712680,	0.898924038656489180,	0.898945942758955010,	0.898967844614056100,	0.898989744221737610,	0.899011641581944690,	0.899033536694622710,	
+0.899055429559716960,	0.899077320177172900,	0.899099208546935150,	0.899121094668949410,	0.899142978543161050,	0.899164860169515130,	0.899186739547957030,	0.899208616678432100,	
+0.899230491560885640,	0.899252364195263440,	0.899274234581509790,	0.899296102719570610,	0.899317968609391170,	0.899339832250916850,	0.899361693644092910,	0.899383552788864730,	
+0.899405409685177680,	0.899427264332977590,	0.899449116732208840,	0.899470966882817250,	0.899492814784748410,	0.899514660437947370,	0.899536503842359720,	0.899558344997930860,	
+0.899580183904606480,	0.899602020562331290,	0.899623854971051130,	0.899645687130711140,	0.899667517041257030,	0.899689344702634180,	0.899711170114787850,	0.899732993277663760,	
+0.899754814191207400,	0.899776632855363690,	0.899798449270078460,	0.899820263435297090,	0.899842075350964940,	0.899863885017027740,	0.899885692433430750,	0.899907497600119570,	
+0.899929300517040010,	0.899951101184136790,	0.899972899601355850,	0.899994695768642660,	0.900016489685942720,	0.900038281353201520,	0.900060070770364760,	0.900081857937378050,	
+0.900103642854186430,	0.900125425520735600,	0.900147205936971280,	0.900168984102838850,	0.900190760018284020,	0.900212533683252380,	0.900234305097689310,	0.900256074261540860,	
+0.900277841174751850,	0.900299605837268200,	0.900321368249035640,	0.900343128409999530,	0.900364886320105700,	0.900386641979299630,	0.900408395387527370,	0.900430146544733630,	
+0.900451895450864570,	0.900473642105865890,	0.900495386509682970,	0.900517128662261630,	0.900538868563547480,	0.900560606213486100,	0.900582341612023660,	0.900604074759104980,	
+0.900625805654676090,	0.900647534298682610,	0.900669260691070450,	0.900690984831785000,	0.900712706720772190,	0.900734426357977510,	0.900756143743347230,	0.900777858876826150,	
+0.900799571758360560,	0.900821282387895940,	0.900842990765378100,	0.900864696890752770,	0.900886400763965760,	0.900908102384963110,	0.900929801753689750,	0.900951498870091960,	
+0.900973193734115440,	0.900994886345705900,	0.901016576704809170,	0.901038264811370950,	0.901059950665337060,	0.901081634266653770,	0.901103315615265910,	0.901124994711119840,	
+0.901146671554161170,	0.901168346144335940,	0.901190018481589860,	0.901211688565868640,	0.901233356397118210,	0.901255021975284840,	0.901276685300313460,	0.901298346372150450,	
+0.901320005190741510,	0.901341661756032590,	0.901363316067969490,	0.901384968126498150,	0.901406617931564740,	0.901428265483114390,	0.901449910781093380,	0.901471553825447520,	
+0.901493194616122870,	0.901514833153065240,	0.901536469436220570,	0.901558103465534670,	0.901579735240953810,	0.901601364762423360,	0.901622992029889380,	0.901644617043298010,	
+0.901666239802595080,	0.901687860307726520,	0.901709478558638370,	0.901731094555276890,	0.901752708297587250,	0.901774319785515810,	0.901795929019008620,	0.901817535998011620,	
+0.901839140722470840,	0.901860743192332110,	0.901882343407541590,	0.901903941368045530,	0.901925537073789200,	0.901947130524719090,	0.901968721720781240,	0.901990310661921480,	
+0.902011897348085960,	0.902033481779220710,	0.902055063955271690,	0.902076643876185470,	0.902098221541907220,	0.902119796952383420,	0.902141370107560130,	0.902162941007383480,	
+0.902184509651799420,	0.902206076040754090,	0.902227640174193990,	0.902249202052064380,	0.902270761674311750,	0.902292319040882140,	0.902313874151721820,	0.902335427006776820,	
+0.902356977605993320,	0.902378525949317220,	0.902400072036695260,	0.902421615868072790,	0.902443157443396200,	0.902464696762611760,	0.902486233825665620,	0.902507768632503820,	
+0.902529301183072620,	0.902550831477318180,	0.902572359515187110,	0.902593885296624650,	0.902615408821577540,	0.902636930089991910,	0.902658449101813920,	0.902679965856989730,	
+0.902701480355465710,	0.902722992597188470,	0.902744502582103260,	0.902766010310156800,	0.902787515781295240,	0.902809018995465060,	0.902830519952612210,	0.902852018652683050,	
+0.902873515095623970,	0.902895009281381330,	0.902916501209900860,	0.902937990881129140,	0.902959478295012440,	0.902980963451497030,	0.903002446350529290,	0.903023926992055360,	
+0.903045405376021960,	0.903066881502374800,	0.903088355371060250,	0.903109826982024910,	0.903131296335215050,	0.903152763430576930,	0.903174228268056820,	0.903195690847601210,	
+0.903217151169156680,	0.903238609232668970,	0.903260065038084760,	0.903281518585350330,	0.903302969874412160,	0.903324418905216530,	0.903345865677709800,	0.903367310191838470,	
+0.903388752447549240,	0.903410192444787710,	0.903431630183500810,	0.903453065663634700,	0.903474498885135980,	0.903495929847951020,	0.903517358552026200,	0.903538784997308440,	
+0.903560209183743250,	0.903581631111277540,	0.903603050779857810,	0.903624468189430430,	0.903645883339941890,	0.903667296231338680,	0.903688706863567170,	0.903710115236574300,	
+0.903731521350305770,	0.903752925204708400,	0.903774326799728690,	0.903795726135313230,	0.903817123211408500,	0.903838518027960890,	0.903859910584916990,	0.903881300882223630,	
+0.903902688919826720,	0.903924074697673110,	0.903945458215709260,	0.903966839473881790,	0.903988218472137170,	0.904009595210422120,	0.904030969688683350,	0.904052341906866790,	
+0.904073711864919470,	0.904095079562787780,	0.904116445000418430,	0.904137808177757910,	0.904159169094752910,	0.904180527751350050,	0.904201884147496140,	0.904223238283137220,	
+0.904244590158220230,	0.904265939772691650,	0.904287287126498310,	0.904308632219586680,	0.904329975051903600,	0.904351315623395770,	0.904372653934009450,	0.904393989983691360,	
+0.904415323772388420,	0.904436655300047130,	0.904457984566614190,	0.904479311572036200,	0.904500636316260100,	0.904521958799232690,	0.904543279020900040,	0.904564596981209170,	
+0.904585912680106800,	0.904607226117539630,	0.904628537293454380,	0.904649846207797870,	0.904671152860516690,	0.904692457251558000,	0.904713759380867840,	0.904735059248393260,	
+0.904756356854081070,	0.904777652197877870,	0.904798945279730700,	0.904820236099586060,	0.904841524657391210,	0.904862810953092180,	0.904884094986636130,	0.904905376757969890,	
+0.904926656267040160,	0.904947933513793770,	0.904969208498177520,	0.904990481220138370,	0.905011751679623330,	0.905033019876578470,	0.905054285810951150,	0.905075549482688090,	
+0.905096810891736100,	0.905118070038042230,	0.905139326921553080,	0.905160581542215900,	0.905181833899977080,	0.905203083994783550,	0.905224331826582350,	0.905245577395320300,	
+0.905266820700944330,	0.905288061743401370,	0.905309300522638140,	0.905330537038602110,	0.905351771291239340,	0.905373003280497080,	0.905394233006322380,	0.905415460468662170,	
+0.905436685667463160,	0.905457908602672500,	0.905479129274237130,	0.905500347682104190,	0.905521563826220070,	0.905542777706532130,	0.905563989322987100,	0.905585198675532220,	
+0.905606405764114220,	0.905627610588680240,	0.905648813149177670,	0.905670013445552650,	0.905691211477752670,	0.905712407245724550,	0.905733600749415450,	0.905754791988772400,	
+0.905775980963742340,	0.905797167674272320,	0.905818352120309700,	0.905839534301800860,	0.905860714218693190,	0.905881891870933820,	0.905903067258469590,	0.905924240381247750,	
+0.905945411239215350,	0.905966579832319320,	0.905987746160507370,	0.906008910223725540,	0.906030072021921540,	0.906051231555042300,	0.906072388823034980,	0.906093543825846610,	
+0.906114696563424470,	0.906135847035716040,	0.906156995242667460,	0.906178141184226460,	0.906199284860340180,	0.906220426270955560,	0.906241565416019970,	0.906262702295480450,	
+0.906283836909284160,	0.906304969257378690,	0.906326099339710310,	0.906347227156226840,	0.906368352706875210,	0.906389475991602690,	0.906410597010356530,	0.906431715763083790,	
+0.906452832249732280,	0.906473946470248150,	0.906495058424579230,	0.906516168112672660,	0.906537275534475720,	0.906558380689935550,	0.906579483578999420,	0.906600584201614600,	
+0.906621682557728680,	0.906642778647288150,	0.906663872470240720,	0.906684964026533650,	0.906706053316114090,	0.906727140338929430,	0.906748225094926920,	0.906769307584053830,	
+0.906790387806257870,	0.906811465761485520,	0.906832541449684610,	0.906853614870802290,	0.906874686024785830,	0.906895754911582810,	0.906916821531140280,	0.906937885883406180,	
+0.906958947968326990,	0.906980007785850310,	0.907001065335923730,	0.907022120618494410,	0.907043173633509840,	0.907064224380917270,	0.907085272860664200,	0.907106319072698340,	
+0.907127363016966280,	0.907148404693415840,	0.907169444101994290,	0.907190481242649230,	0.907211516115327910,	0.907232548719977830,	0.907253579056546360,	0.907274607124981420,	
+0.907295632925229410,	0.907316656457238470,	0.907337677720955860,	0.907358696716328960,	0.907379713443305370,	0.907400727901832570,	0.907421740091858280,	0.907442750013329190,	
+0.907463757666193360,	0.907484763050398050,	0.907505766165890850,	0.907526767012619140,	0.907547765590530630,	0.907568761899572700,	0.907589755939693270,	0.907610747710838940,	
+0.907631737212957870,	0.907652724445997430,	0.907673709409905220,	0.907694692104628610,	0.907715672530115310,	0.907736650686313260,	0.907757626573169160,	0.907778600190631060,	
+0.907799571538646430,	0.907820540617162890,	0.907841507426127900,	0.907862471965489190,	0.907883434235194350,	0.907904394235191310,	0.907925351965426900,	0.907946307425849030,	
+0.907967260616405420,	0.907988211537043680,	0.908009160187711490,	0.908030106568356250,	0.908051050678925890,	0.908071992519368210,	0.908092932089630160,	0.908113869389659770,	
+0.908134804419404750,	0.908155737178812710,	0.908176667667831230,	0.908197595886408250,	0.908218521834491590,	0.908239445512028180,	0.908260366918966170,	0.908281286055253380,	
+0.908302202920837190,	0.908323117515665630,	0.908344029839686210,	0.908364939892846720,	0.908385847675095340,	0.908406753186378870,	0.908427656426645470,	0.908448557395843070,	
+0.908469456093919160,	0.908490352520821660,	0.908511246676498300,	0.908532138560896870,	0.908553028173965330,	0.908573915515650920,	0.908594800585901700,	0.908615683384665580,	
+0.908636563911890070,	0.908657442167523310,	0.908678318151512900,	0.908699191863806990,	0.908720063304352840,	0.908740932473098510,	0.908761799369991800,	0.908782663994980640,	
+0.908803526348012760,	0.908824386429036070,	0.908845244237998510,	0.908866099774848110,	0.908886953039532150,	0.908907804031998780,	0.908928652752195920,	0.908949499200071400,	
+0.908970343375573140,	0.908991185278649080,	0.909012024909247370,	0.909032862267315170,	0.909053697352800950,	0.909074530165652320,	0.909095360705817530,	0.909116188973244200,	
+0.909137014967880460,	0.909157838689674260,	0.909178660138573740,	0.909199479314526270,	0.909220296217480020,	0.909241110847383020,	0.909261923204183310,	0.909282733287828830,	
+0.909303541098267390,	0.909324346635447260,	0.909345149899316470,	0.909365950889822530,	0.909386749606913680,	0.909407546050537970,	0.909428340220643340,	0.909449132117177930,	
+0.909469921740089670,	0.909490709089327050,	0.909511494164837230,	0.909532276966568580,	0.909553057494469350,	0.909573835748487490,	0.909594611728570920,	0.909615385434667910,	
+0.909636156866726500,	0.909656926024694950,	0.909677692908520740,	0.909698457518152370,	0.909719219853537760,	0.909739979914625190,	0.909760737701362570,	0.909781493213698170,	
+0.909802246451580030,	0.909822997414956650,	0.909843746103775390,	0.909864492517984740,	0.909885236657532960,	0.909905978522367990,	0.909926718112438080,	0.909947455427691400,	
+0.909968190468076530,	0.909988923233540750,	0.910009653724032640,	0.910030381939500370,	0.910051107879892180,	0.910071831545156250,	0.910092552935240720,	0.910113272050093740,	
+0.910133988889664010,	0.910154703453898930,	0.910175415742747180,	0.910196125756156830,	0.910216833494076120,	0.910237538956453320,	0.910258242143236700,	0.910278943054374850,	
+0.910299641689815360,	0.910320338049506630,	0.910341032133397120,	0.910361723941435000,	0.910382413473568630,	0.910403100729746170,	0.910423785709916000,	0.910444468414026710,	
+0.910465148842025900,	0.910485826993862160,	0.910506502869483870,	0.910527176468839410,	0.910547847791876920,	0.910568516838544780,	0.910589183608791490,	0.910609848102565510,	
+0.910630510319814570,	0.910651170260487360,	0.910671827924532160,	0.910692483311897450,	0.910713136422531490,	0.910733787256382770,	0.910754435813399880,	0.910775082093530530,	
+0.910795726096723550,	0.910816367822927190,	0.910837007272089940,	0.910857644444160060,	0.910878279339086270,	0.910898911956816600,	0.910919542297300100,	0.910940170360484360,	
+0.910960796146318200,	0.910981419654750100,	0.911002040885728450,	0.911022659839201610,	0.911043276515118180,	0.911063890913426880,	0.911084503034075510,	0.911105112877012900,	
+0.911125720442187540,	0.911146325729547790,	0.911166928739042370,	0.911187529470619540,	0.911208127924227900,	0.911228724099816260,	0.911249317997332440,	0.911269909616725380,	
+0.911290498957943560,	0.911311086020935360,	0.911331670805649590,	0.911352253312034620,	0.911372833540038950,	0.911393411489611620,	0.911413987160700430,	0.911434560553254220,	
+0.911455131667221590,	0.911475700502551110,	0.911496267059191510,	0.911516831337091160,	0.911537393336199100,	0.911557953056463140,	0.911578510497832340,	0.911599065660255280,	
+0.911619618543680570,	0.911640169148056790,	0.911660717473332550,	0.911681263519456550,	0.911701807286377730,	0.911722348774044120,	0.911742887982404550,	0.911763424911407830,	
+0.911783959561002440,	0.911804491931137220,	0.911825022021760860,	0.911845549832821840,	0.911866075364269220,	0.911886598616051260,	0.911907119588116650,	0.911927638280414230,	
+0.911948154692892810,	0.911968668825500980,	0.911989180678187460,	0.912009690250901390,	0.912030197543590710,	0.912050702556204460,	0.912071205288691570,	0.912091705741000620,	
+0.912112203913080340,	0.912132699804879650,	0.912153193416347150,	0.912173684747432100,	0.912194173798082430,	0.912214660568247290,	0.912235145057875510,	0.912255627266915890,	
+0.912276107195317270,	0.912296584843028340,	0.912317060209998250,	0.912337533296175170,	0.912358004101508250,	0.912378472625946400,	0.912398938869438240,	0.912419402831932790,	
+0.912439864513378880,	0.912460323913725340,	0.912480781032921300,	0.912501235870914920,	0.912521688427655460,	0.912542138703091750,	0.912562586697172720,	0.912583032409847280,	
+0.912603475841064160,	0.912623916990772390,	0.912644355858921230,	0.912664792445458840,	0.912685226750334370,	0.912705658773496850,	0.912726088514895230,	0.912746515974478420,	
+0.912766941152195250,	0.912787364047995100,	0.912807784661826220,	0.912828202993637870,	0.912848619043378990,	0.912869032810998630,	0.912889444296445580,	0.912909853499669020,	
+0.912930260420617760,	0.912950665059241160,	0.912971067415487610,	0.912991467489306370,	0.913011865280646480,	0.913032260789456980,	0.913052654015686800,	0.913073044959284870,	
+0.913093433620200460,	0.913113819998382810,	0.913134204093780210,	0.913154585906342130,	0.913174965436017510,	0.913195342682755600,	0.913215717646505220,	0.913236090327215640,	
+0.913256460724836130,	0.913276828839315160,	0.913297194670602110,	0.913317558218646020,	0.913337919483396040,	0.913358278464801330,	0.913378635162810810,	0.913398989577373870,	
+0.913419341708439640,	0.913439691555956830,	0.913460039119874720,	0.913480384400142560,	0.913500727396709400,	0.913521068109524380,	0.913541406538536770,	0.913561742683696050,	
+0.913582076544950490,	0.913602408122249800,	0.913622737415543120,	0.913643064424779490,	0.913663389149908300,	0.913683711590878580,	0.913704031747639590,	0.913724349620140930,	
+0.913744665208330980,	0.913764978512159430,	0.913785289531575450,	0.913805598266528070,	0.913825904716966900,	0.913846208882840850,	0.913866510764099300,	0.913886810360691860,	
+0.913907107672567000,	0.913927402699674430,	0.913947695441963300,	0.913967985899383000,	0.913988274071882660,	0.914008559959411660,	0.914028843561919600,	0.914049124879355080,	
+0.914069403911667800,	0.914089680658807020,	0.914109955120721910,	0.914130227297362040,	0.914150497188676580,	0.914170764794614790,	0.914191030115126480,	0.914211293150160360,	
+0.914231553899665930,	0.914251812363592540,	0.914272068541889690,	0.914292322434506640,	0.914312574041392880,	0.914332823362497550,	0.914353070397770580,	0.914373315147160580,	
+0.914393557610617250,	0.914413797788090070,	0.914434035679528410,	0.914454271284881660,	0.914474504604099180,	0.914494735637130910,	0.914514964383925320,	0.914535190844432360,	
+0.914555415018601380,	0.914575636906381990,	0.914595856507723350,	0.914616073822575150,	0.914636288850886770,	0.914656501592608030,	0.914676712047687750,	0.914696920216075520,	
+0.914717126097721160,	0.914737329692573820,	0.914757531000583320,	0.914777730021698820,	0.914797926755870460,	0.914818121203046950,	0.914838313363178110,	0.914858503236213430,	
+0.914878690822102600,	0.914898876120794900,	0.914919059132240140,	0.914939239856387700,	0.914959418293187500,	0.914979594442588360,	0.914999768304540330,	0.915019939878992770,	
+0.915040109165895510,	0.915060276165197810,	0.915080440876849480,	0.915100603300800120,	0.915120763436999550,	0.915140921285396700,	0.915161076845941500,	0.915181230118583770,	
+0.915201381103272870,	0.915221529799958410,	0.915241676208590320,	0.915261820329118290,	0.915281962161491380,	0.915302101705659510,	0.915322238961572500,	0.915342373929179720,	
+0.915362506608431210,	0.915382636999276240,	0.915402765101664850,	0.915422890915546850,	0.915443014440871170,	0.915463135677588080,	0.915483254625647060,	0.915503371284997920,	
+0.915523485655590390,	0.915543597737374150,	0.915563707530298920,	0.915583815034314740,	0.915603920249370650,	0.915624023175416800,	0.915644123812402900,	0.915664222160278650,	
+0.915684318218993880,	0.915704411988498280,	0.915724503468742010,	0.915744592659674230,	0.915764679561244850,	0.915784764173403820,	0.915804846496100830,	0.915824926529285820,	
+0.915845004272908380,	0.915865079726918550,	0.915885152891266260,	0.915905223765900780,	0.915925292350772250,	0.915945358645830490,	0.915965422651025320,	0.915985484366306670,	
+0.916005543791624240,	0.916025600926928310,	0.916045655772168010,	0.916065708327293620,	0.916085758592254830,	0.916105806567001800,	0.916125852251484130,	0.916145895645651960,	
+0.916165936749455010,	0.916185975562843540,	0.916206012085766690,	0.916226046318174950,	0.916246078260018030,	0.916266107911245960,	0.916286135271808580,	0.916306160341655910,	
+0.916326183120737770,	0.916346203609004540,	0.916366221806405480,	0.916386237712890850,	0.916406251328410690,	0.916426262652914820,	0.916446271686353290,	0.916466278428676120,	
+0.916486282879833580,	0.916506285039775050,	0.916526284908450780,	0.916546282485810710,	0.916566277771804990,	0.916586270766383660,	0.916606261469496530,	0.916626249881093760,	
+0.916646236001125820,	0.916666219829541880,	0.916686201366292310,	0.916706180611327360,	0.916726157564596860,	0.916746132226051060,	0.916766104595639900,	0.916786074673313410,	
+0.916806042459022200,	0.916826007952715400,	0.916845971154343630,	0.916865932063857030,	0.916885890681205520,	0.916905847006339260,	0.916925801039208400,	0.916945752779763420,	
+0.916965702227953710,	0.916985649383729730,	0.917005594247041530,	0.917025536817839490,	0.917045477096073540,	0.917065415081693920,	0.917085350774650700,	0.917105284174894560,	
+0.917125215282374780,	0.917145144097041950,	0.917165070618846330,	0.917184994847738080,	0.917204916783667220,	0.917224836426584140,	0.917244753776439210,	0.917264668833182140,	
+0.917284581596763400,	0.917304492067133270,	0.917324400244241780,	0.917344306128039410,	0.917364209718476210,	0.917384111015502430,	0.917404010019068790,	0.917423906729124770,	
+0.917443801145620960,	0.917463693268507630,	0.917483583097735140,	0.917503470633253660,	0.917523355875013550,	0.917543238822964960,	0.917563119477058710,	0.917582997837244170,	
+0.917602873903472280,	0.917622747675693180,	0.917642619153857140,	0.917662488337914640,	0.917682355227815830,	0.917702219823511630,	0.917722082124951430,	0.917741942132086040,	
+0.917761799844865720,	0.917781655263240960,	0.917801508387162120,	0.917821359216579370,	0.917841207751443400,	0.917861053991704590,	0.917880897937312870,	0.917900739588218940,	
+0.917920578944373180,	0.917940416005725960,	0.917960250772227650,	0.917980083243828740,	0.917999913420479930,	0.918019741302131040,	0.918039566888732780,	0.918059390180235520,	
+0.918079211176589860,	0.918099029877746280,	0.918118846283654920,	0.918138660394266610,	0.918158472209531950,	0.918178281729400750,	0.918198088953823820,	0.918217893882751660,	
+0.918237696516134850,	0.918257496853923770,	0.918277294896068910,	0.918297090642520850,	0.918316884093230310,	0.918336675248147330,	0.918356464107222600,	0.918376250670406740,	
+0.918396034937650320,	0.918415816908903730,	0.918435596584117550,	0.918455373963242840,	0.918475149046229290,	0.918494921833027830,	0.918514692323589180,	0.918534460517863690,	
+0.918554226415802090,	0.918573990017354960,	0.918593751322472780,	0.918613510331106610,	0.918633267043206360,	0.918653021458722850,	0.918672773577606790,	0.918692523399808890,	
+0.918712270925279630,	0.918732016153969710,	0.918751759085829730,	0.918771499720810740,	0.918791238058862540,	0.918810974099936400,	0.918830707843982690,	0.918850439290952340,	
+0.918870168440795830,	0.918889895293463880,	0.918909619848907510,	0.918929342107076770,	0.918949062067922710,	0.918968779731396010,	0.918988495097447290,	0.919008208166027350,	
+0.919027918937086910,	0.919047627410576770,	0.919067333586447770,	0.919087037464650150,	0.919106739045134850,	0.919126438327852790,	0.919146135312754690,	0.919165829999791130,	
+0.919185522388913050,	0.919205212480071480,	0.919224900273216570,	0.919244585768299370,	0.919264268965270800,	0.919283949864081460,	0.919303628464682280,	0.919323304767024060,	
+0.919342978771057530,	0.919362650476733930,	0.919382319884003320,	0.919401986992816940,	0.919421651803125630,	0.919441314314880080,	0.919460974528031330,	0.919480632442530200,	
+0.919500288058327400,	0.919519941375374180,	0.919539592393620820,	0.919559241113018570,	0.919578887533518130,	0.919598531655070440,	0.919618173477626420,	0.919637813001137010,	
+0.919657450225553450,	0.919677085150825800,	0.919696717776905540,	0.919716348103743480,	0.919735976131290540,	0.919755601859497670,	0.919775225288315790,	0.919794846417695820,	
+0.919814465247589030,	0.919834081777945790,	0.919853696008717360,	0.919873307939854670,	0.919892917571308750,	0.919912524903030550,	0.919932129934970980,	0.919951732667081080,	
+0.919971333099312230,	0.919990931231614680,	0.920010527063939820,	0.920030120596238570,	0.920049711828462070,	0.920069300760561370,	0.920088887392487290,	0.920108471724191410,	
+0.920128053755624010,	0.920147633486736450,	0.920167210917479880,	0.920186786047805240,	0.920206358877663550,	0.920225929407006090,	0.920245497635783670,	0.920265063563947990,	
+0.920284627191449210,	0.920304188518238920,	0.920323747544268160,	0.920343304269487960,	0.920362858693849480,	0.920382410817303990,	0.920401960639802730,	0.920421508161296310,	
+0.920441053381735990,	0.920460596301073130,	0.920480136919258780,	0.920499675236243990,	0.920519211251980110,	0.920538744966418190,	0.920558276379509710,	0.920577805491205270,	
+0.920597332301456240,	0.920616856810213880,	0.920636379017429450,	0.920655898923053990,	0.920675416527038770,	0.920694931829335150,	0.920714444829894400,	0.920733955528667320,	
+0.920753463925605200,	0.920772970020659500,	0.920792473813781380,	0.920811975304922090,	0.920831474494032910,	0.920850971381065310,	0.920870465965969890,	0.920889958248698460,	
+0.920909448229201950,	0.920928935907431970,	0.920948421283339540,	0.920967904356876140,	0.920987385127992940,	0.921006863596641630,	0.921026339762772820,	0.921045813626338190,	
+0.921065285187289030,	0.921084754445576580,	0.921104221401152330,	0.921123686053967440,	0.921143148403973380,	0.921162608451121860,	0.921182066195363360,	0.921201521636649700,	
+0.921220974774932370,	0.921240425610162510,	0.921259874142291490,	0.921279320371270920,	0.921298764297052370,	0.921318205919586570,	0.921337645238825220,	0.921357082254719790,	
+0.921376516967221670,	0.921395949376282220,	0.921415379481852930,	0.921434807283885160,	0.921454232782330740,	0.921473655977140370,	0.921493076868265870,	0.921512495455658720,	
+0.921531911739270290,	0.921551325719052070,	0.921570737394955540,	0.921590146766932520,	0.921609553834933810,	0.921628958598911140,	0.921648361058816090,	0.921667761214600260,	
+0.921687159066214900,	0.921706554613611730,	0.921725947856742110,	0.921745338795557980,	0.921764727430010140,	0.921784113760050540,	0.921803497785630640,	0.921822879506701940,	
+0.921842258923216140,	0.921861636035124610,	0.921881010842379060,	0.921900383344931180,	0.921919753542732150,	0.921939121435733640,	0.921958487023887390,	0.921977850307144960,	
+0.921997211285457860,	0.922016569958777680,	0.922035926327056440,	0.922055280390245090,	0.922074632148295550,	0.922093981601159410,	0.922113328748788260,	0.922132673591133820,	
+0.922152016128147680,	0.922171356359781540,	0.922190694285987320,	0.922210029906716080,	0.922229363221919730,	0.922248694231549980,	0.922268022935558430,	0.922287349333896890,	
+0.922306673426516950,	0.922325995213370330,	0.922345314694409170,	0.922364631869584280,	0.922383946738847830,	0.922403259302151500,	0.922422569559447010,	0.922441877510686070,	
+0.922461183155820490,	0.922480486494802300,	0.922499787527582550,	0.922519086254113270,	0.922538382674346290,	0.922557676788233420,	0.922576968595726350,	0.922596258096776810,	
+0.922615545291336600,	0.922634830179357990,	0.922654112760791900,	0.922673393035590480,	0.922692671003705670,	0.922711946665089040,	0.922731220019692660,	0.922750491067468200,	
+0.922769759808367840,	0.922789026242342820,	0.922808290369345090,	0.922827552189326770,	0.922846811702239480,	0.922866068908035240,	0.922885323806665770,	0.922904576398082990,	
+0.922923826682239160,	0.922943074659085430,	0.922962320328573950,	0.922981563690656650,	0.923000804745285450,	0.923020043492412290,	0.923039279931989090,	0.923058514063967550,	
+0.923077745888300160,	0.923096975404937960,	0.923116202613833430,	0.923135427514938380,	0.923154650108204740,	0.923173870393584450,	0.923193088371029540,	0.923212304040492150,	
+0.923231517401923770,	0.923250728455276560,	0.923269937200502430,	0.923289143637553540,	0.923308347766381820,	0.923327549586939190,	0.923346749099177800,	0.923365946303049690,	
+0.923385141198506560,	0.923404333785500460,	0.923423524063983540,	0.923442712033907820,	0.923461897695225350,	0.923481081047888060,	0.923500262091848430,	0.923519440827057840,	
+0.923538617253468640,	0.923557791371033000,	0.923576963179702730,	0.923596132679430080,	0.923615299870167110,	0.923634464751865950,	0.923653627324478870,	0.923672787587957460,	
+0.923691945542254090,	0.923711101187320800,	0.923730254523109750,	0.923749405549573080,	0.923768554266662930,	0.923787700674331360,	0.923806844772530940,	0.923825986561213060,	
+0.923845126040330090,	0.923864263209834390,	0.923883398069678120,	0.923902530619813200,	0.923921660860192010,	0.923940788790767020,	0.923959914411489720,	0.923979037722312710,	
+0.923998158723188020,	0.924017277414067920,	0.924036393794904650,	0.924055507865650380,	0.924074619626257370,	0.924093729076678190,	0.924112836216864240,	0.924131941046768320,	
+0.924151043566342480,	0.924170143775538970,	0.924189241674310160,	0.924208337262608310,	0.924227430540385590,	0.924246521507594570,	0.924265610164186960,	0.924284696510115240,	
+0.924303780545331910,	0.924322862269788990,	0.924341941683439080,	0.924361018786234220,	0.924380093578127120,	0.924399166059069470,	0.924418236229013980,	0.924437304087912800,	
+0.924456369635718420,	0.924475432872383100,	0.924494493797859200,	0.924513552412099090,	0.924532608715055380,	0.924551662706679880,	0.924570714386925170,	0.924589763755743640,	
+0.924608810813087770,	0.924627855558909810,	0.924646897993162350,	0.924665938115797780,	0.924684975926768240,	0.924704011426026100,	0.924723044613523950,	0.924742075489214280,	
+0.924761104053049340,	0.924780130304981740,	0.924799154244963730,	0.924818175872948120,	0.924837195188886850,	0.924856212192732510,	0.924875226884437680,	0.924894239263954750,	
+0.924913249331236310,	0.924932257086234720,	0.924951262528902360,	0.924970265659192270,	0.924989266477056260,	0.925008264982447040,	0.925027261175317080,	0.925046255055618990,	
+0.925065246623305360,	0.925084235878328440,	0.925103222820641390,	0.925122207450195910,	0.925141189766944930,	0.925160169770841030,	0.925179147461836600,	0.925198122839884340,	
+0.925217095904936840,	0.925236066656946580,	0.925255035095866370,	0.925274001221648380,	0.925292965034245300,	0.925311926533609830,	0.925330885719694570,	0.925349842592452120,	
+0.925368797151834950,	0.925387749397795890,	0.925406699330287740,	0.925425646949262550,	0.925444592254673240,	0.925463535246472400,	0.925482475924612750,	0.925501414289046860,	
+0.925520350339727570,	0.925539284076607680,	0.925558215499639240,	0.925577144608775160,	0.925596071403968380,	0.925614995885171270,	0.925633918052336750,	0.925652837905417410,	
+0.925671755444366080,	0.925690670669135570,	0.925709583579678140,	0.925728494175946710,	0.925747402457894000,	0.925766308425472810,	0.925785212078635840,	0.925804113417335930,	
+0.925823012441525980,	0.925841909151158160,	0.925860803546185610,	0.925879695626561030,	0.925898585392237240,	0.925917472843166940,	0.925936357979303070,	0.925955240800598210,	
+0.925974121307005520,	0.925992999498477350,	0.926011875374966540,	0.926030748936426120,	0.926049620182808790,	0.926068489114067470,	0.926087355730154880,	0.926106220031023940,	
+0.926125082016627690,	0.926143941686918490,	0.926162799041849390,	0.926181654081373320,	0.926200506805443080,	0.926219357214011610,	0.926238205307031830,	0.926257051084456770,	
+0.926275894546238710,	0.926294735692331010,	0.926313574522686370,	0.926332411037257830,	0.926351245235998320,	0.926370077118860660,	0.926388906685797870,	0.926407733936763010,	
+0.926426558871708550,	0.926445381490587750,	0.926464201793353430,	0.926483019779958620,	0.926501835450356250,	0.926520648804499360,	0.926539459842340760,	0.926558268563833830,	
+0.926577074968931050,	0.926595879057585450,	0.926614680829750180,	0.926633480285378170,	0.926652277424422470,	0.926671072246836090,	0.926689864752572420,	0.926708654941583720,	
+0.926727442813823350,	0.926746228369244470,	0.926765011607799890,	0.926783792529442870,	0.926802571134126340,	0.926821347421803440,	0.926840121392427440,	0.926858893045950820,	
+0.926877662382326940,	0.926896429401508850,	0.926915194103449800,	0.926933956488102730,	0.926952716555420770,	0.926971474305357310,	0.926990229737864930,	0.927008982852896900,	
+0.927027733650406470,	0.927046482130346570,	0.927065228292670570,	0.927083972137331510,	0.927102713664282540,	0.927121452873477030,	0.927140189764867670,	0.927158924338407740,	
+0.927177656594050490,	0.927196386531749180,	0.927215114151456850,	0.927233839453126760,	0.927252562436712060,	0.927271283102166330,	0.927290001449441960,	0.927308717478492640,	
+0.927327431189271520,	0.927346142581731870,	0.927364851655826830,	0.927383558411509660,	0.927402262848733950,	0.927420964967452190,	0.927439664767618080,	0.927458362249184760,	
+0.927477057412105620,	0.927495750256333800,	0.927514440781822550,	0.927533128988525250,	0.927551814876395380,	0.927570498445385750,	0.927589179695449740,	0.927607858626540940,	
+0.927626535238612380,	0.927645209531617550,	0.927663881505509710,	0.927682551160242120,	0.927701218495768480,	0.927719883512041490,	0.927738546209014750,	0.927757206586641630,	
+0.927775864644875600,	0.927794520383669830,	0.927813173802977790,	0.927831824902753070,	0.927850473682948480,	0.927869120143517740,	0.927887764284414220,	0.927906406105591270,	
+0.927925045607002400,	0.927943682788600730,	0.927962317650339990,	0.927980950192173750,	0.927999580414054840,	0.928018208315936840,	0.928036833897773470,	0.928055457159517980,	
+0.928074078101123860,	0.928092696722544460,	0.928111313023733730,	0.928129927004644360,	0.928148538665230170,	0.928167148005444640,	0.928185755025241250,	0.928204359724573490,	
+0.928222962103394830,	0.928241562161658650,	0.928260159899318980,	0.928278755316328640,	0.928297348412641330,	0.928315939188210650,	0.928334527642990180,	0.928353113776933410,	
+0.928371697589993830,	0.928390279082124900,	0.928408858253280680,	0.928427435103414080,	0.928446009632478700,	0.928464581840428460,	0.928483151727216740,	0.928501719292797120,	
+0.928520284537123100,	0.928538847460148810,	0.928557408061827070,	0.928575966342111810,	0.928594522300956630,	0.928613075938315100,	0.928631627254140950,	0.928650176248387640,	
+0.928668722921008990,	0.928687267271958830,	0.928705809301190070,	0.928724349008656970,	0.928742886394312910,	0.928761421458111580,	0.928779954200006700,	0.928798484619952070,	
+0.928817012717901400,	0.928835538493807960,	0.928854061947625650,	0.928872583079308200,	0.928891101888809300,	0.928909618376082550,	0.928928132541081860,	0.928946644383760840,	
+0.928965153904073530,	0.928983661101972950,	0.929002165977413250,	0.929020668530348150,	0.929039168760731340,	0.929057666668516640,	0.929076162253657860,	0.929094655516108590,	
+0.929113146455822990,	0.929131635072754200,	0.929150121366856260,	0.929168605338083100,	0.929187086986388410,	0.929205566311726020,	0.929224043314049730,	0.929242517993313700,	
+0.929260990349470960,	0.929279460382475770,	0.929297928092281960,	0.929316393478843210,	0.929334856542113560,	0.929353317282046840,	0.929371775698596750,	0.929390231791717540,	
+0.929408685561362470,	0.929427137007485690,	0.929445586130041020,	0.929464032928982390,	0.929482477404263710,	0.929500919555838800,	0.929519359383661590,	0.929537796887686340,	
+0.929556232067866310,	0.929574664924155640,	0.929593095456508260,	0.929611523664878200,	0.929629949549219400,	0.929648373109485560,	0.929666794345631260,	0.929685213257609670,	
+0.929703629845374910,	0.929722044108881150,	0.929740456048082310,	0.929758865662932310,	0.929777272953385080,	0.929795677919394770,	0.929814080560915520,	0.929832480877900710,	
+0.929850878870304820,	0.929869274538081660,	0.929887667881185260,	0.929906058899569790,	0.929924447593189150,	0.929942833961997730,	0.929961218005948780,	0.929979599724996890,	
+0.929997979119095990,	0.930016356188200220,	0.930034730932263410,	0.930053103351239810,	0.930071473445083560,	0.930089841213748820,	0.930108206657189300,	0.930126569775359120,	
+0.930144930568212570,	0.930163289035703670,	0.930181645177786560,	0.930199998994415410,	0.930218350485544130,	0.930236699651127430,	0.930255046491118560,	0.930273391005472130,	
+0.930291733194142270,	0.930310073057083020,	0.930328410594248530,	0.930346745805593070,	0.930365078691071100,	0.930383409250636010,	0.930401737484242490,	0.930420063391844580,	
+0.930438386973396540,	0.930456708228852510,	0.930475027158166770,	0.930493343761293450,	0.930511658038187030,	0.930529969988801110,	0.930548279613090390,	0.930566586911008910,	
+0.930584891882510920,	0.930603194527550800,	0.930621494846082590,	0.930639792838060750,	0.930658088503439670,	0.930676381842173050,	0.930694672854215480,	0.930712961539521210,	
+0.930731247898044620,	0.930749531929739860,	0.930767813634561290,	0.930786093012463510,	0.930804370063400110,	0.930822644787325790,	0.930840917184194930,	0.930859187253961770,	
+0.930877454996580590,	0.930895720412005860,	0.930913983500191720,	0.930932244261093000,	0.930950502694663400,	0.930968758800857500,	0.930987012579629680,	0.931005264030934310,	
+0.931023513154725760,	0.931041759950958500,	0.931060004419587140,	0.931078246560565480,	0.931096486373848120,	0.931114723859389650,	0.931132959017144320,	0.931151191847066630,	
+0.931169422349110820,	0.931187650523231600,	0.931205876369383570,	0.931224099887520420,	0.931242321077597190,	0.931260539939568030,	0.931278756473387540,	0.931296970679010180,	
+0.931315182556390340,	0.931333392105482600,	0.931351599326241670,	0.931369804218621480,	0.931388006782576720,	0.931406207018061980,	0.931424404925031650,	0.931442600503440410,	
+0.931460793753242640,	0.931478984674393160,	0.931497173266845890,	0.931515359530555750,	0.931533543465477230,	0.931551725071564810,	0.931569904348773070,	0.931588081297056500,	
+0.931606255916369810,	0.931624428206667800,	0.931642598167904400,	0.931660765800034540,	0.931678931103012700,	0.931697094076793570,	0.931715254721331650,	0.931733413036581640,	
+0.931751569022498120,	0.931769722679036020,	0.931787874006149150,	0.931806023003792780,	0.931824169671921280,	0.931842314010489340,	0.931860456019451560,	0.931878595698762750,	
+0.931896733048377720,	0.931914868068250520,	0.931933000758336180,	0.931951131118589290,	0.931969259148964560,	0.931987384849416790,	0.932005508219900470,	0.932023629260370410,	
+0.932041747970781650,	0.932059864351088120,	0.932077978401244960,	0.932096090121206870,	0.932114199510928550,	0.932132306570364720,	0.932150411299470070,	0.932168513698199750,	
+0.932186613766507800,	0.932204711504349360,	0.932222806911679140,	0.932240899988451940,	0.932258990734622480,	0.932277079150145460,	0.932295165234975800,	0.932313248989068530,	
+0.932331330412377920,	0.932349409504858890,	0.932367486266466260,	0.932385560697155060,	0.932403632796879880,	0.932421702565595640,	0.932439770003257170,	0.932457835109819500,	
+0.932475897885236990,	0.932493958329464800,	0.932512016442457630,	0.932530072224170390,	0.932548125674558030,	0.932566176793575340,	0.932584225581177590,	0.932602272037318820,	
+0.932620316161954510,	0.932638357955039350,	0.932656397416528280,	0.932674434546376220,	0.932692469344538090,	0.932710501810968820,	0.932728531945623550,	0.932746559748456660,	
+0.932764585219423400,	0.932782608358478590,	0.932800629165577380,	0.932818647640674570,	0.932836663783725100,	0.932854677594683880,	0.932872689073506400,	0.932890698220146920,	
+0.932908705034560580,	0.932926709516702530,	0.932944711666527820,	0.932962711483991130,	0.932980708969047830,	0.932998704121652980,	0.933016696941761040,	0.933034687429327380,	
+0.933052675584307050,	0.933070661406654960,	0.933088644896326260,	0.933106626053275990,	0.933124604877459070,	0.933142581368830990,	0.933160555527346110,	0.933178527352959920,	
+0.933196496845627330,	0.933214464005303610,	0.933232428831943570,	0.933250391325502580,	0.933268351485935900,	0.933286309313198000,	0.933304264807244380,	0.933322217968030050,	
+0.933340168795510180,	0.933358117289639910,	0.933376063450374270,	0.933394007277668520,	0.933411948771478150,	0.933429887931757520,	0.933447824758462220,	0.933465759251547290,	
+0.933483691410967990,	0.933501621236679460,	0.933519548728636850,	0.933537473886795420,	0.933555396711110540,	0.933573317201536910,	0.933591235358030010,	0.933609151180544990,	
+0.933627064669037110,	0.933644975823461620,	0.933662884643773560,	0.933680791129928740,	0.933698695281881540,	0.933716597099587650,	0.933734496583002230,	0.933752393732080520,	
+0.933770288546777900,	0.933788181027049640,	0.933806071172850750,	0.933823958984137170,	0.933841844460863270,	0.933859727602984750,	0.933877608410456970,	0.933895486883235090,	
+0.933913363021274590,	0.933931236824530610,	0.933949108292958850,	0.933966977426514020,	0.933984844225151820,	0.934002708688827400,	0.934020570817496340,	0.934038430611113800,	
+0.934056288069635140,	0.934074143193015740,	0.934091995981211400,	0.934109846434176610,	0.934127694551867280,	0.934145540334238800,	0.934163383781246300,	0.934181224892845500,	
+0.934199063668991530,	0.934216900109639980,	0.934234734214746450,	0.934252565984265760,	0.934270395418153710,	0.934288222516365560,	0.934306047278857020,	0.934323869705583230,	
+0.934341689796499790,	0.934359507551562500,	0.934377322970726070,	0.934395136053946310,	0.934412946801178810,	0.934430755212378840,	0.934448561287501980,	0.934466365026503820,	
+0.934484166429339740,	0.934501965495965430,	0.934519762226336040,	0.934537556620407160,	0.934555348678134390,	0.934573138399473200,	0.934590925784379300,	0.934608710832807940,	
+0.934626493544714940,	0.934644273920055890,	0.934662051958785930,	0.934679827660860880,	0.934697601026236110,	0.934715372054867540,	0.934733140746710320,	0.934750907101720370,	
+0.934768671119853510,	0.934786432801064550,	0.934804192145309630,	0.934821949152544130,	0.934839703822723740,	0.934857456155804180,	0.934875206151740910,	0.934892953810489760,	
+0.934910699132006420,	0.934928442116246040,	0.934946182763164550,	0.934963921072717530,	0.934981657044860800,	0.934999390679549960,	0.935017121976740580,	0.935034850936388720,	
+0.935052577558449390,	0.935070301842878650,	0.935088023789632180,	0.935105743398665590,	0.935123460669934680,	0.935141175603395160,	0.935158888199002610,	0.935176598456713190,	
+0.935194306376482040,	0.935212011958264980,	0.935229715202018030,	0.935247416107696680,	0.935265114675256860,	0.935282810904654260,	0.935300504795844590,	0.935318196348783990,	
+0.935335885563427620,	0.935353572439731500,	0.935371256977651440,	0.935388939177143160,	0.935406619038162690,	0.935424296560665610,	0.935441971744608080,	0.935459644589945350,	
+0.935477315096633450,	0.935494983264628320,	0.935512649093885650,	0.935530312584361480,	0.935547973736011400,	0.935565632548791440,	0.935583289022657750,	0.935600943157565480,	
+0.935618594953470880,	0.935636244410329780,	0.935653891528098080,	0.935671536306731720,	0.935689178746186400,	0.935706818846418150,	0.935724456607383240,	0.935742092029036800,	
+0.935759725111335210,	0.935777355854234270,	0.935794984257689920,	0.935812610321658080,	0.935830234046094780,	0.935847855430956170,	0.935865474476197610,	0.935883091181775370,	
+0.935900705547645370,	0.935918317573763650,	0.935935927260086120,	0.935953534606568830,	0.935971139613167690,	0.935988742279838970,	0.936006342606538030,	0.936023940593221360,	
+0.936041536239844760,	0.936059129546364390,	0.936076720512736050,	0.936094309138916000,	0.936111895424860510,	0.936129479370524930,	0.936147060975865750,	0.936164640240838790,	
+0.936182217165400290,	0.936199791749506290,	0.936217363993112730,	0.936234933896175740,	0.936252501458651800,	0.936270066680496280,	0.936287629561665670,	0.936305190102115880,	
+0.936322748301803070,	0.936340304160683480,	0.936357857678713160,	0.936375408855848130,	0.936392957692044890,	0.936410504187259020,	0.936428048341446770,	0.936445590154564410,	
+0.936463129626568190,	0.936480666757414040,	0.936498201547058320,	0.936515733995457290,	0.936533264102566760,	0.936550791868342890,	0.936568317292742150,	0.936585840375720680,	
+0.936603361117234520,	0.936620879517239930,	0.936638395575693170,	0.936655909292550830,	0.936673420667768260,	0.936690929701302190,	0.936708436393108860,	0.936725940743144410,	
+0.936743442751365010,	0.936760942417727120,	0.936778439742186890,	0.936795934724700800,	0.936813427365224550,	0.936830917663714740,	0.936848405620127720,	0.936865891234419550,	
+0.936883374506546800,	0.936900855436465510,	0.936918334024132380,	0.936935810269503230,	0.936953284172534430,	0.936970755733182450,	0.936988224951403550,	0.937005691827154210,	
+0.937023156360390570,	0.937040618551069020,	0.937058078399146230,	0.937075535904577930,	0.937092991067320800,	0.937110443887331220,	0.937127894364565560,	0.937145342498980070,	
+0.937162788290531350,	0.937180231739175860,	0.937197672844869540,	0.937215111607568980,	0.937232548027230660,	0.937249982103810940,	0.937267413837266420,	0.937284843227553230,	
+0.937302270274627980,	0.937319694978447360,	0.937337117338967070,	0.937354537356144160,	0.937371955029934870,	0.937389370360295570,	0.937406783347182970,	0.937424193990553430,	
+0.937441602290363330,	0.937459008246569580,	0.937476411859128000,	0.937493813127995290,	0.937511212053128150,	0.937528608634482950,	0.937546002872016280,	0.937563394765684510,	
+0.937580784315444670,	0.937598171521252470,	0.937615556383064930,	0.937632938900838430,	0.937650319074529560,	0.937667696904095020,	0.937685072389491060,	0.937702445530674610,	
+0.937719816327602150,	0.937737184780230050,	0.937754550888514780,	0.937771914652413270,	0.937789276071882010,	0.937806635146877450,	0.937823991877356320,	0.937841346263275310,	
+0.937858698304591120,	0.937876048001259900,	0.937893395353238570,	0.937910740360483830,	0.937928083022952160,	0.937945423340600270,	0.937962761313384850,	0.937980096941262830,	
+0.937997430224190350,	0.938014761162124230,	0.938032089755021170,	0.938049416002837870,	0.938066739905531130,	0.938084061463057450,	0.938101380675373630,	0.938118697542436710,	
+0.938136012064202720,	0.938153324240628690,	0.938170634071671340,	0.938187941557287350,	0.938205246697433660,	0.938222549492066740,	0.938239849941143730,	0.938257148044620900,	
+0.938274443802455060,	0.938291737214603240,	0.938309028281022030,	0.938326317001668240,	0.938343603376498690,	0.938360887405470080,	0.938378169088539550,	0.938395448425663360,	
+0.938412725416798540,	0.938430000061901910,	0.938447272360930170,	0.938464542313840360,	0.938481809920589160,	0.938499075181133510,	0.938516338095430340,	0.938533598663436110,	
+0.938550856885107860,	0.938568112760402530,	0.938585366289276800,	0.938602617471687720,	0.938619866307592090,	0.938637112796947170,	0.938654356939709110,	0.938671598735835170,	
+0.938688838185282150,	0.938706075288007090,	0.938723310043966810,	0.938740542453118330,	0.938757772515418480,	0.938775000230824500,	0.938792225599292650,	0.938809448620780310,	
+0.938826669295244280,	0.938843887622641700,	0.938861103602929290,	0.938878317236064190,	0.938895528522003200,	0.938912737460703810,	0.938929944052122160,	0.938947148296215730,	
+0.938964350192941330,	0.938981549742256230,	0.938998746944117110,	0.939015941798481140,	0.939033134305305660,	0.939050324464547060,	0.939067512276162590,	0.939084697740109390,	
+0.939101880856344380,	0.939119061624824720,	0.939136240045507440,	0.939153416118349570,	0.939170589843308370,	0.939187761220340420,	0.939204930249403100,	0.939222096930453440,	
+0.939239261263448480,	0.939256423248345460,	0.939273582885101320,	0.939290740173673640,	0.939307895114018690,	0.939325047706094040,	0.939342197949856740,	0.939359345845263930,	
+0.939376491392272860,	0.939393634590840470,	0.939410775440924000,	0.939427913942480930,	0.939445050095467750,	0.939462183899841930,	0.939479315355560730,	0.939496444462581180,	
+0.939513571220860540,	0.939530695630355960,	0.939547817691024580,	0.939564937402824100,	0.939582054765710880,	0.939599169779642530,	0.939616282444576290,	0.939633392760469310,	
+0.939650500727278850,	0.939667606344962160,	0.939684709613476720,	0.939701810532779240,	0.939718909102827180,	0.939736005323577930,	0.939753099194988620,	0.939770190717016510,	
+0.939787279889618970,	0.939804366712753250,	0.939821451186376940,	0.939838533310446640,	0.939855613084920050,	0.939872690509754420,	0.939889765584907110,	0.939906838310335280,	
+0.939923908685996400,	0.939940976711848060,	0.939958042387846970,	0.939975105713950820,	0.939992166690116870,	0.940009225316302490,	0.940026281592465040,	0.940043335518561900,	
+0.940060387094550420,	0.940077436320388320,	0.940094483196032280,	0.940111527721440020,	0.940128569896569010,	0.940145609721376510,	0.940162647195819990,	0.940179682319856940,	
+0.940196715093444600,	0.940213745516540690,	0.940230773589102230,	0.940247799311086820,	0.940264822682451930,	0.940281843703154930,	0.940298862373153410,	0.940315878692404630,	
+0.940332892660866500,	0.940349904278495850,	0.940366913545250480,	0.940383920461087760,	0.940400925025965280,	0.940417927239840410,	0.940434927102670850,	0.940451924614413850,	
+0.940468919775027450,	0.940485912584468340,	0.940502903042694460,	0.940519891149663390,	0.940536876905332610,	0.940553860309659600,	0.940570841362601940,	0.940587820064117120,	
+0.940604796414163060,	0.940621770412696790,	0.940638742059676130,	0.940655711355058430,	0.940672678298801630,	0.940689642890863100,	0.940706605131200410,	0.940723565019771500,	
+0.940740522556533400,	0.940757477741444030,	0.940774430574460860,	0.940791381055541720,	0.940808329184644080,	0.940825274961725630,	0.940842218386744090,	0.940859159459657150,	
+0.940876098180422060,	0.940893034548996750,	0.940909968565338820,	0.940926900229406060,	0.940943829541155960,	0.940960756500546340,	0.940977681107535100,	0.940994603362079300,	
+0.941011523264137060,	0.941028440813665990,	0.941045356010623890,	0.941062268854968350,	0.941079179346657080,	0.941096087485647880,	0.941112993271898790,	0.941129896705366950,	
+0.941146797786010400,	0.941163696513786730,	0.941180592888653860,	0.941197486910569590,	0.941214378579491530,	0.941231267895377590,	0.941248154858185690,	0.941265039467873100,	
+0.941281921724397950,	0.941298801627718060,	0.941315679177791130,	0.941332554374574970,	0.941349427218027390,	0.941366297708106650,	0.941383165844769780,	0.941400031627975030,	
+0.941416895057680110,	0.941433756133843060,	0.941450614856421560,	0.941467471225373550,	0.941484325240656950,	0.941501176902229680,	0.941518026210049320,	0.941534873164073800,	
+0.941551717764261160,	0.941568560010569100,	0.941585399902955760,	0.941602237441378940,	0.941619072625796470,	0.941635905456166600,	0.941652735932446690,	0.941669564054594900,	
+0.941686389822569250,	0.941703213236327660,	0.941720034295827960,	0.941736853001028160,	0.941753669351886650,	0.941770483348360550,	0.941787294990408250,	0.941804104277987770,	
+0.941820911211057040,	0.941837715789573980,	0.941854518013496620,	0.941871317882783000,	0.941888115397391370,	0.941904910557279210,	0.941921703362404770,	0.941938493812725990,	
+0.941955281908200990,	0.941972067648787830,	0.941988851034444520,	0.942005632065129330,	0.942022410740799730,	0.942039187061414210,	0.942055961026930570,	0.942072732637307180,	
+0.942089501892501850,	0.942106268792472830,	0.942123033337178170,	0.942139795526576120,	0.942156555360624370,	0.942173312839281190,	0.942190067962504820,	0.942206820730253190,	
+0.942223571142484450,	0.942240319199156850,	0.942257064900228540,	0.942273808245657760,	0.942290549235402120,	0.942307287869420200,	0.942324024147670030,	0.942340758070109860,	
+0.942357489636697740,	0.942374218847391810,	0.942390945702150760,	0.942407670200931970,	0.942424392343694130,	0.942441112130395160,	0.942457829560993440,	0.942474544635447220,	
+0.942491257353714640,	0.942507967715753850,	0.942524675721523430,	0.942541381370981090,	0.942558084664085190,	0.942574785600794220,	0.942591484181066200,	0.942608180404859500,	
+0.942624874272132370,	0.942641565782842970,	0.942658254936949990,	0.942674941734411130,	0.942691626175184870,	0.942708308259229580,	0.942724987986503500,	0.942741665356964910,	
+0.942758340370572160,	0.942775013027283950,	0.942791683327057760,	0.942808351269852520,	0.942825016855626250,	0.942841680084337550,	0.942858340955944670,	0.942874999470405870,	
+0.942891655627679630,	0.942908309427724410,	0.942924960870498260,	0.942941609955959660,	0.942958256684067080,	0.942974901054778770,	0.942991543068053330,	0.943008182723848900,	
+0.943024820022124400,	0.943041454962837530,	0.943058087545947000,	0.943074717771411280,	0.943091345639188730,	0.943107971149237830,	0.943124594301517070,	0.943141215095984810,	
+0.943157833532599740,	0.943174449611319800,	0.943191063332103790,	0.943207674694910070,	0.943224283699697130,	0.943240890346423560,	0.943257494635047710,	0.943274096565528190,	
+0.943290696137823680,	0.943307293351892120,	0.943323888207692420,	0.943340480705182840,	0.943357070844322190,	0.943373658625068830,	0.943390244047381370,	0.943406827111218480,	
+0.943423407816538330,	0.943439986163299600,	0.943456562151460900,	0.943473135780980800,	0.943489707051817890,	0.943506275963930660,	0.943522842517277800,	0.943539406711818130,	
+0.943555968547509670,	0.943572528024311240,	0.943589085142181540,	0.943605639901079040,	0.943622192300962450,	0.943638742341790460,	0.943655290023521550,	0.943671835346114760,	
+0.943688378309528010,	0.943704918913720440,	0.943721457158650520,	0.943737993044276860,	0.943754526570558360,	0.943771057737453400,	0.943787586544921230,	0.943804112992919770,	
+0.943820637081407950,	0.943837158810344580,	0.943853678179688350,	0.943870195189397850,	0.943886709839431900,	0.943903222129749200,	0.943919732060308770,	0.943936239631068650,	
+0.943952744841987880,	0.943969247693025370,	0.943985748184139720,	0.944002246315289620,	0.944018742086433990,	0.944035235497531770,	0.944051726548541080,	0.944068215239421190,	
+0.944084701570130690,	0.944101185540628500,	0.944117667150873310,	0.944134146400824050,	0.944150623290439310,	0.944167097819678340,	0.944183569988499280,	0.944200039796861290,	
+0.944216507244723280,	0.944232972332043950,	0.944249435058782230,	0.944265895424896920,	0.944282353430346830,	0.944298809075091230,	0.944315262359088250,	0.944331713282297150,	
+0.944348161844676740,	0.944364608046185940,	0.944381051886783560,	0.944397493366428640,	0.944413932485080210,	0.944430369242696740,	0.944446803639237280,	0.944463235674660840,	
+0.944479665348926250,	0.944496092661992640,	0.944512517613818600,	0.944528940204363400,	0.944545360433586170,	0.944561778301445170,	0.944578193807899760,	0.944594606952908870,	
+0.944611017736431410,	0.944627426158426430,	0.944643832218852840,	0.944660235917670120,	0.944676637254836420,	0.944693036230311090,	0.944709432844053180,	0.944725827096021710,	
+0.944742218986175720,	0.944758608514474130,	0.944774995680875970,	0.944791380485340730,	0.944807762927826640,	0.944824143008293200,	0.944840520726699440,	0.944856896083004270,	
+0.944873269077166960,	0.944889639709146410,	0.944906007978901790,	0.944922373886392440,	0.944938737431576860,	0.944955098614414510,	0.944971457434864330,	0.944987813892885550,	
+0.945004167988437230,	0.945020519721478380,	0.945036869091968600,	0.945053216099866370,	0.945069560745131150,	0.945085903027722000,	0.945102242947598040,	0.945118580504718530,	
+0.945134915699042510,	0.945151248530529230,	0.945167578999138170,	0.945183907104827800,	0.945200232847557720,	0.945216556227287060,	0.945232877243974980,	0.945249195897580720,	
+0.945265512188063430,	0.945281826115382360,	0.945298137679497000,	0.945314446880366140,	0.945330753717949060,	0.945347058192205100,	0.945363360303093540,	0.945379660050573500,	
+0.945395957434604360,	0.945412252455145600,	0.945428545112155900,	0.945444835405594870,	0.945461123335421760,	0.945477408901595820,	0.945493692104076410,	0.945509972942822690,	
+0.945526251417794120,	0.945542527528950180,	0.945558801276249580,	0.945575072659652020,	0.945591341679116850,	0.945607608334603220,	0.945623872626070620,	0.945640134553478280,	
+0.945656394116785930,	0.945672651315952350,	0.945688906150937040,	0.945705158621699570,	0.945721408728199210,	0.945737656470395200,	0.945753901848247150,	0.945770144861714400,	
+0.945786385510756440,	0.945802623795332310,	0.945818859715401580,	0.945835093270923740,	0.945851324461858160,	0.945867553288164300,	0.945883779749801530,	0.945900003846729230,	
+0.945916225578907310,	0.945932444946294470,	0.945948661948850630,	0.945964876586535050,	0.945981088859307320,	0.945997298767126790,	0.946013506309953070,	0.946029711487745840,	
+0.946045914300464030,	0.946062114748067560,	0.946078312830515690,	0.946094508547768110,	0.946110701899784190,	0.946126892886523520,	0.946143081507945680,	0.946159267764010380,	
+0.946175451654676540,	0.946191633179904180,	0.946207812339652790,	0.946223989133881730,	0.946240163562550810,	0.946256335625619390,	0.946272505323047190,	0.946288672654793990,	
+0.946304837620818850,	0.946321000221081570,	0.946337160455541840,	0.946353318324159140,	0.946369473826893290,	0.946385626963703650,	0.946401777734550140,	0.946417926139392020,	
+0.946434072178189090,	0.946450215850900940,	0.946466357157487280,	0.946482496097907690,	0.946498632672121860,	0.946514766880089510,	0.946530898721770540,	0.946547028197124000,	
+0.946563155306109790,	0.946579280048687850,	0.946595402424817660,	0.946611522434458900,	0.946627640077571390,	0.946643755354115050,	0.946659868264049020,	0.946675978807333340,	
+0.946692086983927710,	0.946708192793791930,	0.946724296236885590,	0.946740397313168500,	0.946756496022600480,	0.946772592365141440,	0.946788686340750640,	0.946804777949388110,	
+0.946820867191013770,	0.946836954065587100,	0.946853038573068130,	0.946869120713416560,	0.946885200486592190,	0.946901277892555070,	0.946917352931264440,	0.946933425602680570,	
+0.946949495906763030,	0.946965563843471750,	0.946981629412766530,	0.946997692614607310,	0.947013753448954110,	0.947029811915766300,	0.947045868015003900,	0.947061921746626840,	
+0.947077973110594940,	0.947094022106868110,	0.947110068735406260,	0.947126112996169220,	0.947142154889117240,	0.947158194414209560,	0.947174231571406340,	0.947190266360667610,	
+0.947206298781953170,	0.947222328835223060,	0.947238356520437090,	0.947254381837555170,	0.947270404786537570,	0.947286425367343750,	0.947302443579933870,	0.947318459424267840,	
+0.947334472900305700,	0.947350484008007370,	0.947366492747332760,	0.947382499118242240,	0.947398503120695290,	0.947414504754651940,	0.947430504020072450,	0.947446500916916620,	
+0.947462495445144490,	0.947478487604716200,	0.947494477395591670,	0.947510464817731270,	0.947526449871094360,	0.947542432555641410,	0.947558412871332360,	0.947574390818127220,	
+0.947590366395986150,	0.947606339604869060,	0.947622310444736550,	0.947638278915547860,	0.947654245017263590,	0.947670208749843650,	0.947686170113248180,	0.947702129107437340,	
+0.947718085732371150,	0.947734039988009650,	0.947749991874313410,	0.947765941391241930,	0.947781888538755560,	0.947797833316814550,	0.947813775725378840,	0.947829715764408780,	
+0.947845653433864400,	0.947861588733705850,	0.947877521663893720,	0.947893452224387370,	0.947909380415147500,	0.947925306236134140,	0.947941229687307430,	0.947957150768627740,	
+0.947973069480055110,	0.947988985821550220,	0.948004899793072450,	0.948020811394582500,	0.948036720626040500,	0.948052627487406710,	0.948068531978641270,	0.948084434099704660,	
+0.948100333850556810,	0.948116231231158510,	0.948132126241469250,	0.948148018881449840,	0.948163909151060190,	0.948179797050260900,	0.948195682579012100,	0.948211565737274050,	
+0.948227446525007120,	0.948243324942171780,	0.948259200988727960,	0.948275074664636120,	0.948290945969856520,	0.948306814904349650,	0.948322681468075630,	0.948338545660994960,	
+0.948354407483068210,	0.948370266934255190,	0.948386124014516500,	0.948401978723812490,	0.948417831062103530,	0.948433681029350000,	0.948449528625512240,	0.948465373850550630,	
+0.948481216704425980,	0.948497057187097870,	0.948512895298527230,	0.948528731038674300,	0.948544564407499570,	0.948560395404963400,	0.948576224031026260,	0.948592050285648750,	
+0.948607874168791000,	0.948623695680413490,	0.948639514820476700,	0.948655331588941110,	0.948671145985767290,	0.948686958010915520,	0.948702767664346360,	0.948718574946020630,	
+0.948734379855898150,	0.948750182393939710,	0.948765982560105800,	0.948781780354357010,	0.948797575776653690,	0.948813368826956440,	0.948829159505225840,	0.948844947811422480,	
+0.948860733745506610,	0.948876517307438830,	0.948892298497179820,	0.948908077314689960,	0.948923853759929940,	0.948939627832860340,	0.948955399533441990,	0.948971168861634800,	
+0.948986935817399680,	0.949002700400697230,	0.949018462611488030,	0.949034222449732680,	0.949049979915391750,	0.949065735008425840,	0.949081487728795970,	0.949097238076462070,	
+0.949112986051385050,	0.949128731653525510,	0.949144474882844260,	0.949160215739301760,	0.949175954222858720,	0.949191690333476060,	0.949207424071113910,	0.949223155435733210,	
+0.949238884427294650,	0.949254611045758810,	0.949270335291086510,	0.949286057163238330,	0.949301776662174970,	0.949317493787857570,	0.949333208540246050,	0.949348920919301560,	
+0.949364630924984800,	0.949380338557256340,	0.949396043816077120,	0.949411746701407820,	0.949427447213209040,	0.949443145351442030,	0.949458841116066820,	0.949474534507044550,	
+0.949490225524335930,	0.949505914167901750,	0.949521600437702840,	0.949537284333699770,	0.949552965855853910,	0.949568645004125300,	0.949584321778475070,	0.949599996178864150,	
+0.949615668205253120,	0.949631337857602900,	0.949647005135874410,	0.949662670040028360,	0.949678332570025980,	0.949693992725827440,	0.949709650507393870,	0.949725305914686290,	
+0.949740958947665300,	0.949756609606292050,	0.949772257890527220,	0.949787903800331730,	0.949803547335666850,	0.949819188496492720,	0.949834827282770690,	0.949850463694461470,	
+0.949866097731526190,	0.949881729393925680,	0.949897358681620840,	0.949912985594572820,	0.949928610132742100,	0.949944232296089820,	0.949959852084577010,	0.949975469498164580,	
+0.949991084536813470,	0.950006697200484580,	0.950022307489139070,	0.950037915402737960,	0.950053520941241850,	0.950069124104611860,	0.950084724892809150,	0.950100323305794530,	
+0.950115919343529240,	0.950131513005973980,	0.950147104293090350,	0.950162693204838700,	0.950178279741180190,	0.950193863902076050,	0.950209445687487220,	0.950225025097374830,	
+0.950240602131699920,	0.950256176790423400,	0.950271749073506760,	0.950287318980910460,	0.950302886512595870,	0.950318451668524020,	0.950334014448656170,	0.950349574852953130,	
+0.950365132881376250,	0.950380688533886460,	0.950396241810445350,	0.950411792711013280,	0.950427341235551730,	0.950442887384021830,	0.950458431156384730,	0.950473972552601460,	
+0.950489511572633390,	0.950505048216441770,	0.950520582483987190,	0.950536114375231220,	0.950551643890135020,	0.950567171028659620,	0.950582695790766260,	0.950598218176416320,	
+0.950613738185570710,	0.950629255818191020,	0.950644771074237950,	0.950660283953672970,	0.950675794456457220,	0.950691302582552080,	0.950706808331918560,	0.950722311704518150,	
+0.950737812700311880,	0.950753311319261440,	0.950768807561327310,	0.950784301426471300,	0.950799792914654440,	0.950815282025838090,	0.950830768759983620,	0.950846253117052180,	
+0.950861735097005440,	0.950877214699804020,	0.950892691925409590,	0.950908166773783430,	0.950923639244886760,	0.950939109338681090,	0.950954577055127650,	0.950970042394187810,	
+0.950985505355823050,	0.951000965939994280,	0.951016424146663100,	0.951031879975790860,	0.951047333427338940,	0.951062784501268690,	0.951078233197541370,	0.951093679516118900,	
+0.951109123456961860,	0.951124565020032060,	0.951140004205290770,	0.951155441012699550,	0.951170875442219680,	0.951186307493812610,	0.951201737167439830,	0.951217164463062930,	
+0.951232589380642920,	0.951248011920141410,	0.951263432081519870,	0.951278849864739650,	0.951294265269762460,	0.951309678296549550,	0.951325088945062400,	0.951340497215262810,	
+0.951355903107111710,	0.951371306620570900,	0.951386707755601750,	0.951402106512165950,	0.951417502890224750,	0.951432896889739870,	0.951448288510672980,	0.951463677752985130,	
+0.951479064616638110,	0.951494449101593310,	0.951509831207812520,	0.951525210935257100,	0.951540588283888660,	0.951555963253668760,	0.951571335844559220,	0.951586706056521070,	
+0.951602073889516120,	0.951617439343505960,	0.951632802418452270,	0.951648163114316550,	0.951663521431060480,	0.951678877368645540,	0.951694230927033650,	0.951709582106185950,	
+0.951724930906064360,	0.951740277326630360,	0.951755621367845750,	0.951770963029672010,	0.951786302312070840,	0.951801639215004270,	0.951816973738433210,	0.951832305882319820,	
+0.951847635646625670,	0.951862963031312460,	0.951878288036341670,	0.951893610661675330,	0.951908930907274910,	0.951924248773102440,	0.951939564259119080,	0.951954877365286830,	
+0.951970188091567300,	0.951985496437922410,	0.952000802404313730,	0.952016105990702970,	0.952031407197052370,	0.952046706023322860,	0.952062002469476590,	0.952077296535475350,	
+0.952092588221280960,	0.952107877526855000,	0.952123164452159280,	0.952138448997155720,	0.952153731161806350,	0.952169010946072310,	0.952184288349915860,	0.952199563373298590,	
+0.952214836016182400,	0.952230106278529220,	0.952245374160300640,	0.952260639661458690,	0.952275902781965390,	0.952291163521782110,	0.952306421880870890,	0.952321677859193640,	
+0.952336931456712170,	0.952352182673388390,	0.952367431509184130,	0.952382677964061620,	0.952397922037982130,	0.952413163730907790,	0.952428403042800520,	0.952443639973622250,	
+0.952458874523335000,	0.952474106691900470,	0.952489336479280690,	0.952504563885437800,	0.952519788910333290,	0.952535011553929280,	0.952550231816187700,	0.952565449697070580,	
+0.952580665196539830,	0.952595878314557390,	0.952611089051085380,	0.952626297406085840,	0.952641503379520250,	0.952656706971350850,	0.952671908181539790,	0.952687107010048990,	
+0.952702303456840370,	0.952717497521875960,	0.952732689205118110,	0.952747878506528200,	0.952763065426068700,	0.952778249963701530,	0.952793432119388610,	0.952808611893092180,	
+0.952823789284774290,	0.952838964294396850,	0.952854136921922330,	0.952869307167312110,	0.952884475030528750,	0.952899640511534090,	0.952914803610290350,	0.952929964326759690,	
+0.952945122660904030,	0.952960278612685840,	0.952975432182066710,	0.952990583369008990,	0.953005732173474730,	0.953020878595426280,	0.953036022634825560,	0.953051164291634830,	
+0.953066303565816120,	0.953081440457331900,	0.953096574966143860,	0.953111707092214490,	0.953126836835505700,	0.953141964195979850,	0.953157089173599090,	0.953172211768325670,	
+0.953187331980121730,	0.953202449808949640,	0.953217565254771190,	0.953232678317548880,	0.953247788997244830,	0.953262897293821300,	0.953278003207240540,	0.953293106737464700,	
+0.953308207884456470,	0.953323306648177440,	0.953338403028590080,	0.953353497025656750,	0.953368588639339710,	0.953383677869601100,	0.953398764716403390,	0.953413849179708730,	
+0.953428931259479700,	0.953444010955678100,	0.953459088268266530,	0.953474163197207130,	0.953489235742462360,	0.953504305903994600,	0.953519373681765980,	0.953534439075739200,	
+0.953549502085875970,	0.953564562712139070,	0.953579620954490780,	0.953594676812893450,	0.953609730287309440,	0.953624781377701010,	0.953639830084030750,	0.953654876406261120,	
+0.953669920344354050,	0.953684961898272120,	0.953700001067977810,	0.953715037853433590,	0.953730072254601600,	0.953745104271444540,	0.953760133903924780,	0.953775161152004890,	
+0.953790186015646800,	0.953805208494813320,	0.953820228589466690,	0.953835246299569620,	0.953850261625084350,	0.953865274565973480,	0.953880285122199690,	0.953895293293724910,	
+0.953910299080511840,	0.953925302482523050,	0.953940303499721030,	0.953955302132068250,	0.953970298379527290,	0.953985292242060410,	0.954000283719630750,	0.954015272812200000,	
+0.954030259519731080,	0.954045243842186470,	0.954060225779528870,	0.954075205331720630,	0.954090182498724460,	0.954105157280502710,	0.954120129677018420,	0.954135099688233510,	
+0.954150067314110780,	0.954165032554613050,	0.954179995409702550,	0.954194955879342220,	0.954209913963494420,	0.954224869662122170,	0.954239822975187390,	0.954254773902653120,	
+0.954269722444481830,	0.954284668600636320,	0.954299612371079080,	0.954314553755772900,	0.954329492754680260,	0.954344429367764090,	0.954359363594986740,	0.954374295436310920,	
+0.954389224891699310,	0.954404151961114610,	0.954419076644519640,	0.954433998941876970,	0.954448918853149530,	0.954463836378299460,	0.954478751517289890,	0.954493664270083420,	
+0.954508574636642850,	0.954523482616930760,	0.954538388210909970,	0.954553291418543280,	0.954568192239793500,	0.954583090674623100,	0.954597986722994900,	0.954612880384871800,	
+0.954627771660216400,	0.954642660548991610,	0.954657547051160240,	0.954672431166684880,	0.954687312895528770,	0.954702192237654180,	0.954717069193024010,	0.954731943761601200,	
+0.954746815943348540,	0.954761685738228840,	0.954776553146205020,	0.954791418167239890,	0.954806280801296150,	0.954821141048336600,	0.954835998908324160,	0.954850854381221750,	
+0.954865707466992290,	0.954880558165598470,	0.954895406477003220,	0.954910252401169780,	0.954925095938060520,	0.954939937087638360,	0.954954775849866540,	0.954969612224707660,	
+0.954984446212124750,	0.954999277812080720,	0.955014107024538590,	0.955028933849461300,	0.955043758286811540,	0.955058580336552330,	0.955073399998646710,	0.955088217273057590,	
+0.955103032159747900,	0.955117844658680660,	0.955132654769819010,	0.955147462493125540,	0.955162267828563280,	0.955177070776095480,	0.955191871335684950,	0.955206669507294830,	
+0.955221465290887920,	0.955236258686427360,	0.955251049693876530,	0.955265838313197670,	0.955280624544354360,	0.955295408387309310,	0.955310189842025870,	0.955324968908466960,	
+0.955339745586595510,	0.955354519876375100,	0.955369291777768080,	0.955384061290737830,	0.955398828415247370,	0.955413593151259950,	0.955428355498738390,	0.955443115457646040,	
+0.955457873027945940,	0.955472628209601330,	0.955487381002575020,	0.955502131406830160,	0.955516879422329990,	0.955531625049037550,	0.955546368286916190,	0.955561109135928840,	
+0.955575847596038640,	0.955590583667209170,	0.955605317349403020,	0.955620048642583430,	0.955634777546713890,	0.955649504061757300,	0.955664228187676930,	0.955678949924436030,	
+0.955693669271998060,	0.955708386230325610,	0.955723100799382270,	0.955737812979131070,	0.955752522769535370,	0.955767230170558420,	0.955781935182163370,	0.955796637804313450,	
+0.955811338036972160,	0.955826035880102290,	0.955840731333667430,	0.955855424397630600,	0.955870115071955300,	0.955884803356604750,	0.955899489251542110,	0.955914172756730740,	
+0.955928853872134220,	0.955943532597715360,	0.955958208933437640,	0.955972882879264300,	0.955987554435158930,	0.956002223601084560,	0.956016890377004660,	0.956031554762882710,	
+0.956046216758681730,	0.956060876364365210,	0.956075533579896390,	0.956090188405238850,	0.956104840840355740,	0.956119490885210640,	0.956134138539766700,	0.956148783803987710,	
+0.956163426677836600,	0.956178067161276850,	0.956192705254271910,	0.956207340956785170,	0.956221974268780190,	0.956236605190220130,	0.956251233721068910,	0.956265859861289420,	
+0.956280483610845170,	0.956295104969699720,	0.956309723937816550,	0.956324340515159020,	0.956338954701690720,	0.956353566497375020,	0.956368175902175600,	0.956382782916055500,	
+0.956397387538978410,	0.956411989770907910,	0.956426589611807380,	0.956441187061640500,	0.956455782120370520,	0.956470374787961150,	0.956484965064376080,	0.956499552949578340,	
+0.956514138443531730,	0.956528721546199830,	0.956543302257546020,	0.956557880577533990,	0.956572456506127320,	0.956587030043289710,	0.956601601188984190,	0.956616169943174780,	
+0.956630736305824960,	0.956645300276898200,	0.956659861856358320,	0.956674421044168670,	0.956688977840293050,	0.956703532244695180,	0.956718084257338290,	0.956732633878186080,	
+0.956747181107202360,	0.956761725944350720,	0.956776268389594730,	0.956790808442897990,	0.956805346104224300,	0.956819881373537570,	0.956834414250800850,	0.956848944735978040,	
+0.956863472829032840,	0.956877998529929050,	0.956892521838630160,	0.956907042755100080,	0.956921561279302610,	0.956936077411200900,	0.956950591150759090,	0.956965102497940760,	
+0.956979611452709710,	0.956994118015029650,	0.957008622184864270,	0.957023123962177260,	0.957037623346932760,	0.957052120339094040,	0.957066614938624880,	0.957081107145489220,	
+0.957095596959650850,	0.957110084381073370,	0.957124569409720790,	0.957139052045557050,	0.957153532288545380,	0.957168010138649830,	0.957182485595834300,	0.957196958660062600,	
+0.957211429331298440,	0.957225897609505720,	0.957240363494648250,	0.957254826986690180,	0.957269288085594750,	0.957283746791326110,	0.957298203103848060,	0.957312657023124510,	
+0.957327108549119400,	0.957341557681796520,	0.957356004421119680,	0.957370448767053020,	0.957384890719560120,	0.957399330278604910,	0.957413767444151410,	0.957428202216163540,	
+0.957442634594604990,	0.957457064579440020,	0.957471492170632650,	0.957485917368146140,	0.957500340171944960,	0.957514760581992920,	0.957529178598253930,	0.957543594220692020,	
+0.957558007449271220,	0.957572418283955340,	0.957586826724708630,	0.957601232771494560,	0.957615636424277490,	0.957630037683021350,	0.957644436547690050,	0.957658833018247610,	
+0.957673227094658190,	0.957687618776885690,	0.957702008064894360,	0.957716394958647800,	0.957730779458110250,	0.957745161563245630,	0.957759541274018300,	0.957773918590391960,	
+0.957788293512330860,	0.957802666039799360,	0.957817036172760930,	0.957831403911179820,	0.957845769255020190,	0.957860132204246260,	0.957874492758821970,	0.957888850918711340,	
+0.957903206683878630,	0.957917560054288190,	0.957931911029903600,	0.957946259610689240,	0.957960605796609240,	0.957974949587627740,	0.957989290983708770,	0.958003629984816700,	
+0.958017966590915650,	0.958032300801969550,	0.958046632617942650,	0.958060962038799200,	0.958075289064503340,	0.958089613695019330,	0.958103935930311180,	0.958118255770343150,	
+0.958132573215079830,	0.958146888264484800,	0.958161200918522530,	0.958175511177157270,	0.958189819040353270,	0.958204124508074680,	0.958218427580285860,	0.958232728256950830,	
+0.958247026538034290,	0.958261322423500040,	0.958275615913312340,	0.958289907007435660,	0.958304195705834250,	0.958318482008472250,	0.958332765915314130,	0.958347047426324260,	
+0.958361326541466660,	0.958375603260705590,	0.958389877584005620,	0.958404149511330910,	0.958418419042645800,	0.958432686177914770,	0.958446950917101860,	0.958461213260171970,	
+0.958475473207088700,	0.958489730757816740,	0.958503985912320560,	0.958518238670564290,	0.958532489032512540,	0.958546736998129420,	0.958560982567379870,	0.958575225740227470,	
+0.958589466516637120,	0.958603704896572980,	0.958617940879999740,	0.958632174466881540,	0.958646405657182950,	0.958660634450868350,	0.958674860847902320,	0.958689084848249000,	
+0.958703306451872960,	0.958717525658738580,	0.958731742468810430,	0.958745956882052890,	0.958760168898430520,	0.958774378517907700,	0.958788585740449120,	0.958802790566018910,	
+0.958816992994581780,	0.958831193026102090,	0.958845390660544420,	0.958859585897873230,	0.958873778738053130,	0.958887969181048790,	0.958902157226824370,	0.958916342875344440,	
+0.958930526126573700,	0.958944706980476620,	0.958958885437017900,	0.958973061496161790,	0.958987235157873210,	0.959001406422116620,	0.959015575288856390,	0.959029741758057110,	
+0.959043905829683570,	0.959058067503700260,	0.959072226780071760,	0.959086383658762640,	0.959100538139737610,	0.959114690222961470,	0.959128839908398370,	0.959142987196013210,	
+0.959157132085770580,	0.959171274577635070,	0.959185414671571370,	0.959199552367544170,	0.959213687665518290,	0.959227820565457970,	0.959241951067328120,	0.959256079171093350,	
+0.959270204876718440,	0.959284328184167980,	0.959298449093406670,	0.959312567604399310,	0.959326683717110720,	0.959340797431505240,	0.959354908747547700,	0.959369017665202880,	
+0.959383124184435610,	0.959397228305210460,	0.959411330027492240,	0.959425429351245970,	0.959439526276435810,	0.959453620803026870,	0.959467712930983870,	0.959481802660271610,	
+0.959495889990854890,	0.959509974922698410,	0.959524057455766970,	0.959538137590025710,	0.959552215325438770,	0.959566290661971300,	0.959580363599588090,	0.959594434138254070,	
+0.959608502277933930,	0.959622568018592470,	0.959636631360194610,	0.959650692302705390,	0.959664750846089270,	0.959678806990311270,	0.959692860735336220,	0.959706912081129020,	
+0.959720961027654470,	0.959735007574877620,	0.959749051722763480,	0.959763093471276530,	0.959777132820381680,	0.959791169770044080,	0.959805204320228640,	0.959819236470900060,	
+0.959833266222023470,	0.959847293573563690,	0.959861318525485950,	0.959875341077754630,	0.959889361230334970,	0.959903378983191890,	0.959917394336290420,	0.959931407289595360,	
+0.959945417843071860,	0.959959425996684820,	0.959973431750399400,	0.959987435104180160,	0.960001436057992490,	0.960015434611801060,	0.960029430765571120,	0.960043424519267500,	
+0.960057415872855420,	0.960071404826300050,	0.960085391379565940,	0.960099375532618260,	0.960113357285422240,	0.960127336637942700,	0.960141313590144870,	0.960155288141993800,	
+0.960169260293454510,	0.960183230044492350,	0.960197197395071810,	0.960211162345158240,	0.960225124894716900,	0.960239085043712580,	0.960253042792110660,	0.960266998139876040,	
+0.960280951086974310,	0.960294901633369840,	0.960308849779028200,	0.960322795523914310,	0.960336738867993530,	0.960350679811230900,	0.960364618353591550,	0.960378554495040730,	
+0.960392488235543680,	0.960406419575065120,	0.960420348513570610,	0.960434275051025190,	0.960448199187394100,	0.960462120922642490,	0.960476040256735610,	0.960489957189638590,	
+0.960503871721316900,	0.960517783851735360,	0.960531693580859320,	0.960545600908654040,	0.960559505835084760,	0.960573408360116730,	0.960587308483715210,	0.960601206205845660,	
+0.960615101526472780,	0.960628994445562270,	0.960642884963079150,	0.960656773078988890,	0.960670658793256640,	0.960684542105847750,	0.960698423016727590,	0.960712301525861510,	
+0.960726177633214550,	0.960740051338752070,	0.960753922642439420,	0.960767791544241970,	0.960781658044125080,	0.960795522142054100,	0.960809383837994300,	0.960823243131911250,	
+0.960837100023769760,	0.960850954513535640,	0.960864806601174130,	0.960878656286650590,	0.960892503569930390,	0.960906348450978890,	0.960920190929761890,	0.960934031006244080,	
+0.960947868680391170,	0.960961703952168620,	0.960975536821541800,	0.960989367288476170,	0.961003195352937100,	0.961017021014890060,	0.961030844274300630,	0.961044665131133960,	
+0.961058483585355620,	0.961072299636930970,	0.961086113285825610,	0.961099924532004990,	0.961113733375434600,	0.961127539816080120,	0.961141343853906480,	0.961155145488879480,	
+0.961168944720964700,	0.961182741550127510,	0.961196535976333480,	0.961210327999547980,	0.961224117619736810,	0.961237904836865550,	0.961251689650899350,	0.961265472061803790,	
+0.961279252069544680,	0.961293029674087360,	0.961306804875397440,	0.961320577673440590,	0.961334348068182300,	0.961348116059588360,	0.961361881647623820,	0.961375644832254680,	
+0.961389405613446320,	0.961403163991164540,	0.961416919965374820,	0.961430673536042830,	0.961444424703134290,	0.961458173466614550,	0.961471919826449420,	0.961485663782604360,	
+0.961499405335045190,	0.961513144483737480,	0.961526881228647050,	0.961540615569739240,	0.961554347506980210,	0.961568077040335090,	0.961581804169769790,	0.961595528895249910,	
+0.961609251216741230,	0.961622971134209470,	0.961636688647620310,	0.961650403756939330,	0.961664116462132570,	0.961677826763165380,	0.961691534660003570,	0.961705240152612940,	
+0.961718943240959190,	0.961732643925008120,	0.961746342204725320,	0.961760038080077040,	0.961773731551028410,	0.961787422617545350,	0.961801111279593890,	0.961814797537139500,	
+0.961828481390148200,	0.961842162838585700,	0.961855841882417790,	0.961869518521610510,	0.961883192756129210,	0.961896864585939810,	0.961910534011008340,	0.961924201031300610,	
+0.961937865646782300,	0.961951527857419330,	0.961965187663177850,	0.961978845064022980,	0.961992500059921210,	0.962006152650838110,	0.962019802836739600,	0.962033450617591600,	
+0.962047095993359910,	0.962060738964010560,	0.962074379529509580,	0.962088017689822440,	0.962101653444915160,	0.962115286794753890,	0.962128917739304310,	0.962142546278532460,	
+0.962156172412404250,	0.962169796140885600,	0.962183417463942650,	0.962197036381540970,	0.962210652893646710,	0.962224267000225900,	0.962237878701244220,	0.962251487996668040,	
+0.962265094886463060,	0.962278699370595510,	0.962292301449031110,	0.962305901121735860,	0.962319498388675920,	0.962333093249817200,	0.962346685705125720,	0.962360275754567510,	
+0.962373863398108710,	0.962387448635715460,	0.962401031467353230,	0.962414611892988600,	0.962428189912587270,	0.962441765526115600,	0.962455338733539500,	0.962468909534825000,	
+0.962482477929938460,	0.962496043918845580,	0.962509607501512490,	0.962523168677905440,	0.962536727447990460,	0.962550283811733580,	0.962563837769101040,	0.962577389320058980,	
+0.962590938464573660,	0.962604485202610660,	0.962618029534136550,	0.962631571459117370,	0.962645110977519150,	0.962658648089308230,	0.962672182794450770,	0.962685715092912670,	
+0.962699244984660640,	0.962712772469660250,	0.962726297547877970,	0.962739820219279840,	0.962753340483832210,	0.962766858341501330,	0.962780373792253120,	0.962793886836054380,	
+0.962807397472870590,	0.962820905702668320,	0.962834411525413820,	0.962847914941073250,	0.962861415949612940,	0.962874914550999050,	0.962888410745197820,	0.962901904532175950,	
+0.962915395911899010,	0.962928884884333480,	0.962942371449445830,	0.962955855607202320,	0.962969337357569070,	0.962982816700512450,	0.962996293635998920,	0.963009768163994750,	
+0.963023240284466060,	0.963036709997379110,	0.963050177302700480,	0.963063642200396420,	0.963077104690433280,	0.963090564772777320,	0.963104022447395240,	0.963117477714252820,	
+0.963130930573316670,	0.963144381024553240,	0.963157829067928910,	0.963171274703409910,	0.963184717930962830,	0.963198158750553810,	0.963211597162149770,	0.963225033165716390,	
+0.963238466761220490,	0.963251897948628420,	0.963265326727906660,	0.963278753099021560,	0.963292177061939480,	0.963305598616627230,	0.963319017763050840,	0.963332434501176890,	
+0.963345848830971740,	0.963359260752402080,	0.963372670265434160,	0.963386077370034680,	0.963399482066169990,	0.963412884353806790,	0.963426284232911100,	0.963439681703449740,	
+0.963453076765389270,	0.963466469418695960,	0.963479859663336600,	0.963493247499277450,	0.963506632926485310,	0.963520015944926760,	0.963533396554567930,	0.963546774755375650,	
+0.963560150547316470,	0.963573523930356890,	0.963586894904463480,	0.963600263469602810,	0.963613629625741710,	0.963626993372846300,	0.963640354710883380,	0.963653713639819660,	
+0.963667070159621610,	0.963680424270255910,	0.963693775971689150,	0.963707125263887910,	0.963720472146819110,	0.963733816620448990,	0.963747158684744250,	0.963760498339671590,	
+0.963773835585197690,	0.963787170421289250,	0.963800502847912850,	0.963813832865035190,	0.963827160472623180,	0.963840485670642950,	0.963853808459061660,	0.963867128837845750,	
+0.963880446806962050,	0.963893762366377250,	0.963907075516058030,	0.963920386255971320,	0.963933694586083470,	0.963947000506361400,	0.963960304016771800,	0.963973605117281360,	
+0.963986903807857010,	0.964000200088465430,	0.964013493959073210,	0.964026785419647590,	0.964040074470154720,	0.964053361110561720,	0.964066645340835300,	0.964079927160942260,	
+0.964093206570849400,	0.964106483570523530,	0.964119758159931670,	0.964133030339040300,	0.964146300107816210,	0.964159567466226440,	0.964172832414237680,	0.964186094951816840,	
+0.964199355078930840,	0.964212612795546380,	0.964225868101630690,	0.964239120997150030,	0.964252371482071660,	0.964265619556362360,	0.964278865219988960,	0.964292108472918350,	
+0.964305349315117470,	0.964318587746553320,	0.964331823767192840,	0.964345057377002600,	0.964358288575949740,	0.964371517364001170,	0.964384743741123710,	0.964397967707284480,	
+0.964411189262450290,	0.964424408406588380,	0.964437625139665240,	0.964450839461648000,	0.964464051372503680,	0.964477260872199200,	0.964490467960701700,	0.964503672637977870,	
+0.964516874903994960,	0.964530074758719990,	0.964543272202119660,	0.964556467234161220,	0.964569659854811470,	0.964582850064037660,	0.964596037861806700,	0.964609223248085730,	
+0.964622406222841570,	0.964635586786041670,	0.964648764937652610,	0.964661940677641660,	0.964675114005975830,	0.964688284922622150,	0.964701453427547870,	0.964714619520719910,	
+0.964727783202105620,	0.964740944471671580,	0.964754103329385270,	0.964767259775213600,	0.964780413809123940,	0.964793565431083080,	0.964806714641058380,	0.964819861439016990,	
+0.964833005824926040,	0.964846147798752440,	0.964859287360463340,	0.964872424510026190,	0.964885559247407820,	0.964898691572575680,	0.964911821485496700,	0.964924948986138450,	
+0.964938074074467630,	0.964951196750451600,	0.964964317014057600,	0.964977434865252780,	0.964990550304004380,	0.965003663330279650,	0.965016773944045610,	0.965029882145270080,	
+0.965042987933919520,	0.965056091309961390,	0.965069192273363190,	0.965082290824091920,	0.965095386962114940,	0.965108480687399520,	0.965121571999912890,	0.965134660899622520,	
+0.965147747386495230,	0.965160831460498690,	0.965173913121599950,	0.965186992369766570,	0.965200069204965590,	0.965213143627164480,	0.965226215636330710,	0.965239285232431300,	
+0.965252352415433500,	0.965265417185304900,	0.965278479542012850,	0.965291539485524490,	0.965304597015807290,	0.965317652132828610,	0.965330704836556030,	0.965343755126956470,	
+0.965356803003997510,	0.965369848467646510,	0.965382891517870930,	0.965395932154638150,	0.965408970377915510,	0.965422006187670380,	0.965435039583870560,	0.965448070566482850,	
+0.965461099135475060,	0.965474125290814440,	0.965487149032468460,	0.965500170360404700,	0.965513189274590510,	0.965526205774993600,	0.965539219861580870,	0.965552231534320130,	
+0.965565240793178740,	0.965578247638124280,	0.965591252069124220,	0.965604254086146140,	0.965617253689157300,	0.965630250878125600,	0.965643245653017960,	0.965656238013802290,	
+0.965669227960445960,	0.965682215492916660,	0.965695200611181750,	0.965708183315208910,	0.965721163604965740,	0.965734141480419470,	0.965747116941537920,	0.965760089988288440,	
+0.965773060620638830,	0.965786028838556580,	0.965798994642009250,	0.965811958030964420,	0.965824919005389910,	0.965837877565252860,	0.965850833710521160,	0.965863787441162300,	
+0.965876738757144080,	0.965889687658433970,	0.965902634144999660,	0.965915578216808730,	0.965928519873828990,	0.965941459116027910,	0.965954395943373070,	0.965967330355832270,	
+0.965980262353373090,	0.965993191935963340,	0.966006119103570590,	0.966019043856162770,	0.966031966193707130,	0.966044886116171450,	0.966057803623523670,	0.966070718715731360,	
+0.966083631392762320,	0.966096541654584140,	0.966109449501164620,	0.966122354932471670,	0.966135257948472550,	0.966148158549135380,	0.966161056734427870,	0.966173952504317590,	
+0.966186845858772460,	0.966199736797760280,	0.966212625321248960,	0.966225511429205760,	0.966238395121598930,	0.966251276398396030,	0.966264155259564880,	0.966277031705073400,	
+0.966289905734889380,	0.966302777348980620,	0.966315646547315050,	0.966328513329860140,	0.966341377696584010,	0.966354239647454480,	0.966367099182439240,	0.966379956301506300,	
+0.966392811004623490,	0.966405663291758590,	0.966418513162879740,	0.966431360617954540,	0.966444205656950770,	0.966457048279836580,	0.966469888486579780,	0.966482726277148150,	
+0.966495561651509850,	0.966508394609632780,	0.966521225151484530,	0.966534053277033230,	0.966546878986246690,	0.966559702279093050,	0.966572523155540210,	0.966585341615555980,	
+0.966598157659108390,	0.966610971286165690,	0.966623782496695230,	0.966636591290665370,	0.966649397668044030,	0.966662201628799230,	0.966675003172898890,	0.966687802300311150,	
+0.966700599011003800,	0.966713393304945210,	0.966726185182102850,	0.966738974642445070,	0.966751761685939790,	0.966764546312555260,	0.966777328522259280,	0.966790108315019990,	
+0.966802885690805640,	0.966815660649583800,	0.966828433191322830,	0.966841203315990880,	0.966853971023555860,	0.966866736313985900,	0.966879499187249030,	0.966892259643313490,	
+0.966905017682147540,	0.966917773303718860,	0.966930526507995710,	0.966943277294946220,	0.966956025664538530,	0.966968771616740770,	0.966981515151521090,	0.966994256268847830,	
+0.967006994968688800,	0.967019731251012150,	0.967032465115786220,	0.967045196562979160,	0.967057925592559100,	0.967070652204494290,	0.967083376398752750,	0.967096098175303060,	
+0.967108817534112820,	0.967121534475150590,	0.967134248998384520,	0.967146961103782840,	0.967159670791313710,	0.967172378060945470,	0.967185082912646270,	0.967197785346384560,	
+0.967210485362128170,	0.967223182959845550,	0.967235878139504960,	0.967248570901074740,	0.967261261244523050,	0.967273949169818240,	0.967286634676928770,	0.967299317765822450,	
+0.967311998436467870,	0.967324676688833260,	0.967337352522887000,	0.967350025938597420,	0.967362696935932690,	0.967375365514861250,	0.967388031675351590,	0.967400695417371610,	
+0.967413356740889910,	0.967426015645874830,	0.967438672132294730,	0.967451326200117980,	0.967463977849312820,	0.967476627079847830,	0.967489273891691370,	0.967501918284811580,	
+0.967514560259176930,	0.967527199814755990,	0.967539836951516910,	0.967552471669428370,	0.967565103968458630,	0.967577733848576260,	0.967590361309749400,	0.967602986351946640,	
+0.967615608975136430,	0.967628229179287150,	0.967640846964367360,	0.967653462330345440,	0.967666075277189730,	0.967678685804869270,	0.967691293913351740,	0.967703899602605940,	
+0.967716502872600470,	0.967729103723303790,	0.967741702154684250,	0.967754298166710550,	0.967766891759351270,	0.967779482932574540,	0.967792071686349060,	0.967804658020643420,	
+0.967817241935426180,	0.967829823430665810,	0.967842402506330910,	0.967854979162389940,	0.967867553398811810,	0.967880125215564550,	0.967892694612616960,	0.967905261589937730,	
+0.967917826147495220,	0.967930388285258240,	0.967942948003195250,	0.967955505301274830,	0.967968060179465910,	0.967980612637736600,	0.967993162676055840,	0.968005710294392090,	
+0.968018255492714140,	0.968030798270990480,	0.968043338629189900,	0.968055876567281090,	0.968068412085232530,	0.968080945183012800,	0.968093475860590800,	0.968106004117935020,	
+0.968118529955014240,	0.968131053371797170,	0.968143574368252490,	0.968156092944349010,	0.968168609100055200,	0.968181122835339750,	0.968193634150171570,	0.968206143044519240,	
+0.968218649518351680,	0.968231153571637360,	0.968243655204345190,	0.968256154416444190,	0.968268651207902510,	0.968281145578689160,	0.968293637528772950,	0.968306127058122690,	
+0.968318614166707170,	0.968331098854495090,	0.968343581121455350,	0.968356060967556550,	0.968368538392767600,	0.968381013397057290,	0.968393485980394430,	0.968405956142747940,	
+0.968418423884086500,	0.968430889204378920,	0.968443352103594450,	0.968455812581701330,	0.968468270638668690,	0.968480726274465460,	0.968493179489060330,	0.968505630282422200,	
+0.968518078654520000,	0.968530524605322960,	0.968542968134799230,	0.968555409242918160,	0.968567847929648560,	0.968580284194959340,	0.968592718038819410,	0.968605149461197690,	
+0.968617578462063090,	0.968630005041384750,	0.968642429199131240,	0.968654850935271590,	0.968667270249774840,	0.968679687142609880,	0.968692101613745750,	0.968704513663151360,	
+0.968716923290795620,	0.968729330496647890,	0.968741735280676530,	0.968754137642850900,	0.968766537583139910,	0.968778935101512580,	0.968791330197937840,	0.968803722872384920,	
+0.968816113124822740,	0.968828500955220220,	0.968840886363546370,	0.968853269349770230,	0.968865649913861040,	0.968878028055787710,	0.968890403775519270,	0.968902777073024860,	
+0.968915147948273600,	0.968927516401234420,	0.968939882431876340,	0.968952246040168610,	0.968964607226080240,	0.968976965989580390,	0.968989322330638060,	0.969001676249222510,	
+0.969014027745302870,	0.969026376818848070,	0.969038723469827220,	0.969051067698209700,	0.969063409503964410,	0.969075748887060610,	0.969088085847467420,	0.969100420385154200,	
+0.969112752500089770,	0.969125082192243470,	0.969137409461584440,	0.969149734308081930,	0.969162056731705080,	0.969174376732423020,	0.969186694310205100,	0.969199009465020580,	
+0.969211322196838370,	0.969223632505627820,	0.969235940391358190,	0.969248245853998820,	0.969260548893518650,	0.969272849509887240,	0.969285147703073950,	0.969297443473047470,	
+0.969309736819777390,	0.969322027743233060,	0.969334316243383620,	0.969346602320198310,	0.969358885973646610,	0.969371167203697650,	0.969383446010321000,	0.969395722393485480,	
+0.969407996353160660,	0.969420267889315900,	0.969432537001920450,	0.969444803690943660,	0.969457067956354780,	0.969469329798123390,	0.969481589216218740,	0.969493846210609970,	
+0.969506100781266640,	0.969518352928157910,	0.969530602651253460,	0.969542849950522420,	0.969555094825934270,	0.969567337277458590,	0.969579577305064280,	0.969591814908721150,	
+0.969604050088398450,	0.969616282844065650,	0.969628513175692100,	0.969640741083247270,	0.969652966566700520,	0.969665189626021660,	0.969677410261179600,	0.969689628472144020,	
+0.969701844258884280,	0.969714057621370080,	0.969726268559570670,	0.969738477073455510,	0.969750683162994510,	0.969762886828156480,	0.969775088068911330,	0.969787286885228420,	
+0.969799483277077210,	0.969811677244427410,	0.969823868787248360,	0.969836057905509640,	0.969848244599180950,	0.969860428868231540,	0.969872610712630980,	0.969884790132348850,	
+0.969896967127354850,	0.969909141697618440,	0.969921313843109090,	0.969933483563796490,	0.969945650859650340,	0.969957815730639990,	0.969969978176735030,	0.969982138197905130,	
+0.969994295794119780,	0.970006450965348770,	0.970018603711561680,	0.970030754032728320,	0.970042901928817700,	0.970055047399799970,	0.970067190445644600,	0.970079331066321160,	
+0.970091469261799570,	0.970103605032049180,	0.970115738377039790,	0.970127869296741220,	0.970139997791122920,	0.970152123860154480,	0.970164247503805810,	0.970176368722046490,	
+0.970188487514846210,	0.970200603882174770,	0.970212717824001760,	0.970224829340297190,	0.970236938431030430,	0.970249045096171270,	0.970261149335689410,	0.970273251149554760,	
+0.970285350537737010,	0.970297447500205750,	0.970309542036931210,	0.970321634147882640,	0.970333723833029850,	0.970345811092342860,	0.970357895925791250,	0.970369978333344930,	
+0.970382058314973710,	0.970394135870647380,	0.970406211000335750,	0.970418283704008510,	0.970430353981635570,	0.970442421833186740,	0.970454487258631810,	0.970466550257940710,	
+0.970478610831083220,	0.970490668978029380,	0.970502724698748650,	0.970514777993211180,	0.970526828861386750,	0.970538877303245170,	0.970550923318756480,	0.970562966907890460,	
+0.970575008070617030,	0.970587046806906220,	0.970599083116727710,	0.970611117000051430,	0.970623148456847270,	0.970635177487085390,	0.970647204090735460,	0.970659228267767630,	
+0.970671250018151580,	0.970683269341857780,	0.970695286238855480,	0.970707300709114930,	0.970719312752606260,	0.970731322369299270,	0.970743329559163870,	0.970755334322170200,	
+0.970767336658288520,	0.970779336567488160,	0.970791334049739500,	0.970803329105012550,	0.970815321733277230,	0.970827311934503560,	0.970839299708661670,	0.970851285055721490,	
+0.970863267975653370,	0.970875248468426880,	0.970887226534012160,	0.970899202172379460,	0.970911175383498690,	0.970923146167340100,	0.970935114523873600,	0.970947080453069210,	
+0.970959043954897410,	0.970971005029327760,	0.970982963676330630,	0.970994919895876160,	0.971006873687934260,	0.971018825052475280,	0.971030773989469130,	0.971042720498886400,	
+0.971054664580696560,	0.971066606234870070,	0.971078545461377060,	0.971090482260187680,	0.971102416631272170,	0.971114348574600550,	0.971126278090143070,	0.971138205177870080,	
+0.971150129837751400,	0.971162052069757360,	0.971173971873858230,	0.971185889250024140,	0.971197804198225320,	0.971209716718432040,	0.971221626810614640,	0.971233534474743030,	
+0.971245439710787470,	0.971257342518718430,	0.971269242898506020,	0.971281140850120410,	0.971293036373532040,	0.971304929468711050,	0.971316820135627920,	0.971328708374252560,	
+0.971340594184555430,	0.971352477566506780,	0.971364358520076960,	0.971376237045236230,	0.971388113141954950,	0.971399986810203340,	0.971411858049952000,	0.971423726861170730,	
+0.971435593243830220,	0.971447457197900710,	0.971459318723352560,	0.971471177820156130,	0.971483034488281770,	0.971494888727700070,	0.971506740538380820,	0.971518589920294830,	
+0.971530436873412230,	0.971542281397703710,	0.971554123493139300,	0.971565963159689680,	0.971577800397325220,	0.971589635206016380,	0.971601467585733290,	0.971613297536446430,	
+0.971625125058126480,	0.971636950150743580,	0.971648772814268420,	0.971660593048671250,	0.971672410853922640,	0.971684226229993180,	0.971696039176852990,	0.971707849694472660,	
+0.971719657782822770,	0.971731463441873670,	0.971743266671595940,	0.971755067471959940,	0.971766865842936590,	0.971778661784495900,	0.971790455296608460,	0.971802246379244950,	
+0.971814035032375840,	0.971825821255971610,	0.971837605050002720,	0.971849386414439960,	0.971861165349253930,	0.971872941854414750,	0.971884715929893230,	0.971896487575659940,	
+0.971908256791685350,	0.971920023577940160,	0.971931787934394940,	0.971943549861020380,	0.971955309357786850,	0.971967066424665020,	0.971978821061625480,	0.971990573268638910,	
+0.972002323045675910,	0.972014070392707040,	0.972025815309703110,	0.972037557796634810,	0.972049297853472380,	0.972061035480186630,	0.972072770676748470,	0.972084503443128240,	
+0.972096233779296770,	0.972107961685224730,	0.972119687160882820,	0.972131410206241940,	0.972143130821272240,	0.972154849005944730,	0.972166564760230110,	0.972178278084099070,	
+0.972189988977522400,	0.972201697440470690,	0.972213403472914960,	0.972225107074825570,	0.972236808246173310,	0.972248506986929110,	0.972260203297063530,	0.972271897176547610,	
+0.972283588625351800,	0.972295277643447140,	0.972306964230804430,	0.972318648387394120,	0.972330330113187150,	0.972342009408154410,	0.972353686272266590,	0.972365360705494510,	
+0.972377032707809170,	0.972388702279181170,	0.972400369419581630,	0.972412034128980920,	0.972423696407350160,	0.972435356254660150,	0.972447013670881820,	0.972458668655985850,	
+0.972470321209943260,	0.972481971332725070,	0.972493619024301760,	0.972505264284644460,	0.972516907113723960,	0.972528547511511080,	0.972540185477976940,	0.972551821013092340,	
+0.972563454116828210,	0.972575084789155550,	0.972586713030045070,	0.972598338839467670,	0.972609962217394600,	0.972621583163796540,	0.972633201678644530,	0.972644817761909470,	
+0.972656431413562620,	0.972668042633574540,	0.972679651421916260,	0.972691257778558920,	0.972702861703473310,	0.972714463196630690,	0.972726062258001840,	0.972737658887557810,	
+0.972749253085269940,	0.972760844851108700,	0.972772434185045330,	0.972784021087050870,	0.972795605557096320,	0.972807187595152830,	0.972818767201191310,	0.972830344375182900,	
+0.972841919117098830,	0.972853491426909800,	0.972865061304586940,	0.972876628750101500,	0.972888193763424500,	0.972899756344526970,	0.972911316493380140,	0.972922874209955160,	
+0.972934429494222710,	0.972945982346154260,	0.972957532765720940,	0.972969080752893680,	0.972980626307643700,	0.972992169429942270,	0.973003710119760280,	0.973015248377069320,	
+0.973026784201839970,	0.973038317594043690,	0.973049848553651620,	0.973061377080635000,	0.973072903174964860,	0.973084426836612450,	0.973095948065549000,	0.973107466861745870,	
+0.973118983225173870,	0.973130497155804460,	0.973142008653608670,	0.973153517718557960,	0.973165024350623460,	0.973176528549776430,	0.973188030315988220,	0.973199529649229730,	
+0.973211026549472450,	0.973222521016687600,	0.973234013050846450,	0.973245502651920340,	0.973256989819880400,	0.973268474554697890,	0.973279956856344500,	0.973291436724791010,	
+0.973302914160008910,	0.973314389161969550,	0.973325861730644280,	0.973337331866004240,	0.973348799568020890,	0.973360264836665820,	0.973371727671909830,	0.973383188073724480,	
+0.973394646042081260,	0.973406101576951290,	0.973417554678306150,	0.973429005346117200,	0.973440453580355580,	0.973451899380993190,	0.973463342748000730,	0.973474783681349990,	
+0.973486222181012220,	0.973497658246958890,	0.973509091879161460,	0.973520523077591290,	0.973531951842219860,	0.973543378173018730,	0.973554802069958920,	0.973566223533012030,	
+0.973577642562149740,	0.973589059157343280,	0.973600473318564140,	0.973611885045783780,	0.973623294338973990,	0.973634701198105800,	0.973646105623150790,	0.973657507614080540,	
+0.973668907170866520,	0.973680304293480180,	0.973691698981893120,	0.973703091236076790,	0.973714481056003000,	0.973725868441642770,	0.973737253392967790,	0.973748635909949760,	
+0.973760015992560120,	0.973771393640770480,	0.973782768854552390,	0.973794141633877450,	0.973805511978717010,	0.973816879889042860,	0.973828245364826480,	0.973839608406039450,	
+0.973850969012653440,	0.973862327184639940,	0.973873682921970630,	0.973885036224617420,	0.973896387092551330,	0.973907735525744280,	0.973919081524167840,	0.973930425087793820,	
+0.973941766216593670,	0.973953104910539100,	0.973964441169601790,	0.973975774993753540,	0.973987106382965710,	0.973998435337210090,	0.974009761856458380,	0.974021085940682260,	
+0.974032407589853430,	0.974043726803943580,	0.974055043582924610,	0.974066357926767770,	0.974077669835445080,	0.974088979308928240,	0.974100286347189040,	0.974111590950198950,	
+0.974122893117929990,	0.974134192850353740,	0.974145490147442230,	0.974156785009166910,	0.974168077435499490,	0.974179367426411870,	0.974190654981875850,	0.974201940101863230,	
+0.974213222786345810,	0.974224503035295290,	0.974235780848683670,	0.974247056226482440,	0.974258329168663510,	0.974269599675198770,	0.974280867746060040,	0.974292133381219230,	
+0.974303396580648020,	0.974314657344318550,	0.974325915672202170,	0.974337171564271020,	0.974348425020496900,	0.974359676040851830,	0.974370924625307500,	0.974382170773835930,	
+0.974393414486408820,	0.974404655762998400,	0.974415894603576250,	0.974427131008114290,	0.974438364976584430,	0.974449596508958790,	0.974460825605209080,	0.974472052265307310,	
+0.974483276489225610,	0.974494498276935570,	0.974505717628409210,	0.974516934543618650,	0.974528149022535710,	0.974539361065132390,	0.974550570671380620,	0.974561777841252530,	
+0.974572982574720030,	0.974584184871755020,	0.974595384732329540,	0.974606582156415490,	0.974617777143985120,	0.974628969695010230,	0.974640159809462950,	0.974651347487315300,	
+0.974662532728539420,	0.974673715533107000,	0.974684895900990280,	0.974696073832161390,	0.974707249326592250,	0.974718422384255100,	0.974729593005121740,	0.974740761189164750,	
+0.974751926936355590,	0.974763090246666520,	0.974774251120069880,	0.974785409556537470,	0.974796565556041660,	0.974807719118554350,	0.974818870244047790,	0.974830018932494210,	
+0.974841165183865430,	0.974852308998133800,	0.974863450375271330,	0.974874589315250170,	0.974885725818042560,	0.974896859883620740,	0.974907991511956730,	0.974919120703022890,	
+0.974930247456791020,	0.974941371773233590,	0.974952493652322730,	0.974963613094030680,	0.974974730098329470,	0.974985844665191560,	0.974996956794589200,	0.975008066486494180,	
+0.975019173740879100,	0.975030278557716070,	0.975041380936977230,	0.975052480878635050,	0.975063578382661670,	0.975074673449029320,	0.975085766077710470,	0.975096856268677040,	
+0.975107944021901480,	0.975119029337355950,	0.975130112215013000,	0.975141192654844670,	0.975152270656823420,	0.975163346220921600,	0.975174419347111240,	0.975185490035364920,	
+0.975196558285654770,	0.975207624097953360,	0.975218687472232730,	0.975229748408465550,	0.975240806906623850,	0.975251862966680430,	0.975262916588607090,	0.975273967772376520,	
+0.975285016517960960,	0.975296062825332880,	0.975307106694464630,	0.975318148125328690,	0.975329187117897290,	0.975340223672143130,	0.975351257788038330,	0.975362289465555250,	
+0.975373318704666480,	0.975384345505344470,	0.975395369867561590,	0.975406391791290180,	0.975417411276503050,	0.975428428323172230,	0.975439442931270380,	0.975450455100769780,	
+0.975461464831643200,	0.975472472123862900,	0.975483476977401340,	0.975494479392231220,	0.975505479368324990,	0.975516476905654910,	0.975527472004193650,	0.975538464663913700,	
+0.975549454884787500,	0.975560442666787760,	0.975571428009886940,	0.975582410914057510,	0.975593391379272260,	0.975604369405503320,	0.975615344992723400,	0.975626318140905170,	
+0.975637288850021210,	0.975648257120043990,	0.975659222950946090,	0.975670186342700310,	0.975681147295278990,	0.975692105808654620,	0.975703061882800090,	0.975714015517687990,	
+0.975724966713290790,	0.975735915469581050,	0.975746861786531690,	0.975757805664115300,	0.975768747102304210,	0.975779686101071240,	0.975790622660389070,	0.975801556780230280,	
+0.975812488460567670,	0.975823417701373820,	0.975834344502621630,	0.975845268864283360,	0.975856190786331900,	0.975867110268740070,	0.975878027311480320,	0.975888941914525580,	
+0.975899854077848520,	0.975910763801421830,	0.975921671085218320,	0.975932575929210570,	0.975943478333371250,	0.975954378297673290,	0.975965275822089470,	0.975976170906592390,	
+0.975987063551154830,	0.975997953755749600,	0.976008841520349830,	0.976019726844927660,	0.976030609729456210,	0.976041490173908180,	0.976052368178256470,	0.976063243742473770,	
+0.976074116866533000,	0.976084987550407180,	0.976095855794068660,	0.976106721597490570,	0.976117584960645600,	0.976128445883506670,	0.976139304366046570,	0.976150160408238320,	
+0.976161014010054620,	0.976171865171468590,	0.976182713892452700,	0.976193560172980090,	0.976204404013023440,	0.976215245412555890,	0.976226084371550230,	0.976236920889979260,	
+0.976247754967816020,	0.976258586605033620,	0.976269415801604650,	0.976280242557502010,	0.976291066872698840,	0.976301888747167950,	0.976312708180882340,	0.976323525173814930,	
+0.976334339725938970,	0.976345151837226920,	0.976355961507652030,	0.976366768737187200,	0.976377573525805560,	0.976388375873479820,	0.976399175780183200,	0.976409973245888740,	
+0.976420768270569450,	0.976431560854198020,	0.976442350996747700,	0.976453138698191610,	0.976463923958502570,	0.976474706777653690,	0.976485487155618110,	0.976496265092368980,	
+0.976507040587879070,	0.976517813642121420,	0.976528584255069390,	0.976539352426695760,	0.976550118156973790,	0.976560881445876610,	0.976571642293377120,	0.976582400699448790,	
+0.976593156664064210,	0.976603910187196830,	0.976614661268819570,	0.976625409908905670,	0.976636156107428270,	0.976646899864360480,	0.976657641179675460,	0.976668380053346550,	
+0.976679116485346440,	0.976689850475648600,	0.976700582024226050,	0.976711311131052140,	0.976722037796099900,	0.976732762019342560,	0.976743483800753490,	0.976754203140305590,	
+0.976764920037972110,	0.976775634493726400,	0.976786346507541480,	0.976797056079390820,	0.976807763209247450,	0.976818467897084710,	0.976829170142875960,	0.976839869946594110,	
+0.976850567308212630,	0.976861262227704750,	0.976871954705043620,	0.976882644740202700,	0.976893332333155010,	0.976904017483874340,	0.976914700192333400,	0.976925380458505630,	
+0.976936058282364520,	0.976946733663883180,	0.976957406603035090,	0.976968077099793390,	0.976978745154131520,	0.976989410766023080,	0.977000073935440750,	0.977010734662358330,	
+0.977021392946749060,	0.977032048788586400,	0.977042702187843500,	0.977053353144493930,	0.977064001658510930,	0.977074647729868070,	0.977085291358538500,	0.977095932544495670,	
+0.977106571287712940,	0.977117207588163780,	0.977127841445821650,	0.977138472860660020,	0.977149101832652240,	0.977159728361771560,	0.977170352447991550,	0.977180974091285790,	
+0.977191593291627410,	0.977202210048990110,	0.977212824363347330,	0.977223436234672450,	0.977234045662939250,	0.977244652648120660,	0.977255257190190460,	0.977265859289122130,	
+0.977276458944889130,	0.977287056157464920,	0.977297650926823190,	0.977308243252937300,	0.977318833135780940,	0.977329420575327350,	0.977340005571550210,	0.977350588124422990,	
+0.977361168233919390,	0.977371745900012860,	0.977382321122676980,	0.977392893901885440,	0.977403464237611490,	0.977414032129828800,	0.977424597578511190,	0.977435160583632000,	
+0.977445721145164930,	0.977456279263083540,	0.977466834937361420,	0.977477388167972470,	0.977487938954889830,	0.977498487298087300,	0.977509033197538570,	0.977519576653217310,	
+0.977530117665097120,	0.977540656233151560,	0.977551192357354550,	0.977561726037679430,	0.977572257274100020,	0.977582786066589880,	0.977593312415122820,	0.977603836319672510,	
+0.977614357780212550,	0.977624876796716720,	0.977635393369158830,	0.977645907497512350,	0.977656419181751060,	0.977666928421848770,	0.977677435217779170,	0.977687939569515940,	
+0.977698441477032780,	0.977708940940303580,	0.977719437959302270,	0.977729932534002200,	0.977740424664377160,	0.977750914350401180,	0.977761401592047830,	0.977771886389291020,	
+0.977782368742104560,	0.977792848650462230,	0.977803326114337730,	0.977813801133704860,	0.977824273708537420,	0.977834743838809420,	0.977845211524494440,	0.977855676765566510,	
+0.977866139561999410,	0.977876599913767080,	0.977887057820843060,	0.977897513283201400,	0.977907966300816000,	0.977918416873660660,	0.977928865001709280,	0.977939310684935780,	
+0.977949753923313960,	0.977960194716817940,	0.977970633065421200,	0.977981068969097980,	0.977991502427822070,	0.978001933441567380,	0.978012362010307830,	0.978022788134017330,	
+0.978033211812670110,	0.978043633046239760,	0.978054051834700180,	0.978064468178025610,	0.978074882076189760,	0.978085293529166730,	0.978095702536930460,	0.978106109099454950,	
+0.978116513216714440,	0.978126914888682310,	0.978137314115333000,	0.978147710896640320,	0.978158105232578400,	0.978168497123121260,	0.978178886568242810,	0.978189273567917410,	
+0.978199658122118620,	0.978210040230820590,	0.978220419893997550,	0.978230797111623530,	0.978241171883672320,	0.978251544210118400,	0.978261914090935440,	0.978272281526098020,	
+0.978282646515579610,	0.978293009059354570,	0.978303369157397130,	0.978313726809681090,	0.978324082016180930,	0.978334434776870430,	0.978344785091723850,	0.978355132960715520,	
+0.978365478383819260,	0.978375821361009200,	0.978386161892259580,	0.978396499977544630,	0.978406835616838390,	0.978417168810115090,	0.978427499557348980,	0.978437827858513960,	
+0.978448153713584400,	0.978458477122534420,	0.978468798085338260,	0.978479116601970180,	0.978489432672404290,	0.978499746296614740,	0.978510057474576090,	0.978520366206262040,	
+0.978530672491647050,	0.978540976330705470,	0.978551277723411440,	0.978561576669739200,	0.978571873169662990,	0.978582167223157050,	0.978592458830195970,	0.978602747990753530,	
+0.978613034704804210,	0.978623318972322350,	0.978633600793282210,	0.978643880167658020,	0.978654157095424030,	0.978664431576555030,	0.978674703611024600,	0.978684973198807540,	
+0.978695240339877980,	0.978705505034210280,	0.978715767281778890,	0.978726027082558070,	0.978736284436522160,	0.978746539343645750,	0.978756791803902740,	0.978767041817267810,	
+0.978777289383715220,	0.978787534503219540,	0.978797777175754890,	0.978808017401295860,	0.978818255179817020,	0.978828490511292280,	0.978838723395696330,	0.978848953833003520,	
+0.978859181823188430,	0.978869407366225300,	0.978879630462088700,	0.978889851110753000,	0.978900069312192870,	0.978910285066382340,	0.978920498373296200,	0.978930709232908700,	
+0.978940917645194530,	0.978951123610128040,	0.978961327127683690,	0.978971528197836060,	0.978981726820559730,	0.978991922995828930,	0.979002116723618370,	0.979012308003902490,	
+0.979022496836655880,	0.979032683221853000,	0.979042867159468420,	0.979053048649476840,	0.979063227691852500,	0.979073404286569970,	0.979083578433604050,	0.979093750132929100,	
+0.979103919384519910,	0.979114086188350830,	0.979124250544396450,	0.979134412452631770,	0.979144571913030840,	0.979154728925568430,	0.979164883490219240,	0.979175035606957840,	
+0.979185185275758820,	0.979195332496596850,	0.979205477269446620,	0.979215619594282830,	0.979225759471079700,	0.979235896899812270,	0.979246031880455110,	0.979256164412982910,	
+0.979266294497370240,	0.979276422133591900,	0.979286547321622570,	0.979296670061436720,	0.979306790353009270,	0.979316908196314780,	0.979327023591328060,	0.979337136538023790,	
+0.979347247036376660,	0.979357355086361350,	0.979367460687952880,	0.979377563841125620,	0.979387664545854350,	0.979397762802113990,	0.979407858609879220,	0.979417951969124840,	
+0.979428042879825540,	0.979438131341956340,	0.979448217355491590,	0.979458300920406310,	0.979468382036675300,	0.979478460704273360,	0.979488536923175170,	0.979498610693355750,	
+0.979508682014789690,	0.979518750887452220,	0.979528817311317580,	0.979538881286361020,	0.979548942812557220,	0.979559001889880990,	0.979569058518307330,	0.979579112697810950,	
+0.979589164428366850,	0.979599213709950070,	0.979609260542534940,	0.979619304926096720,	0.979629346860610320,	0.979639386346050410,	0.979649423382392140,	0.979659457969610290,	
+0.979669490107680010,	0.979679519796575750,	0.979689547036272760,	0.979699571826745830,	0.979709594167969990,	0.979719614059920140,	0.979729631502571310,	0.979739646495898400,	
+0.979749659039876540,	0.979759669134480320,	0.979769676779684960,	0.979779681975465500,	0.979789684721796730,	0.979799685018653780,	0.979809682866011560,	0.979819678263845310,	
+0.979829671212129830,	0.979839661710840030,	0.979849649759951150,	0.979859635359438100,	0.979869618509276010,	0.979879599209439790,	0.979889577459904680,	0.979899553260645710,	
+0.979909526611637660,	0.979919497512855900,	0.979929465964275330,	0.979939431965871190,	0.979949395517618390,	0.979959356619492070,	0.979969315271467360,	0.979979271473519600,	
+0.979989225225623480,	0.979999176527754260,	0.980009125379887160,	0.980019071781997210,	0.980029015734059540,	0.980038957236049390,	0.980048896287942010,	0.980058832889712180,	
+0.980068767041335280,	0.980078698742786520,	0.980088627994040950,	0.980098554795073800,	0.980108479145860300,	0.980118401046375600,	0.980128320496595040,	0.980138237496493540,	
+0.980148152046046440,	0.980158064145228990,	0.980167973794016320,	0.980177880992383790,	0.980187785740306520,	0.980197688037759750,	0.980207587884718960,	0.980217485281159040,	
+0.980227380227055470,	0.980237272722383370,	0.980247162767118100,	0.980257050361234890,	0.980266935504709110,	0.980276818197516110,	0.980286698439630900,	0.980296576231028950,	
+0.980306451571685610,	0.980316324461576130,	0.980326194900675850,	0.980336062888960020,	0.980345928426404110,	0.980355791512983470,	0.980365652148673220,	0.980375510333448830,	
+0.980385366067285660,	0.980395219350159050,	0.980405070182044480,	0.980414918562917180,	0.980424764492752730,	0.980434607971526260,	0.980444448999213240,	0.980454287575789120,	
+0.980464123701229260,	0.980473957375509020,	0.980483788598603970,	0.980493617370489460,	0.980503443691141060,	0.980513267560533810,	0.980523088978643490,	0.980532907945445450,	
+0.980542724460915060,	0.980552538525027880,	0.980562350137759390,	0.980572159299085030,	0.980581966008980400,	0.980591770267420730,	0.980601572074381590,	0.980611371429838560,	
+0.980621168333767110,	0.980630962786142700,	0.980640754786940900,	0.980650544336137410,	0.980660331433707340,	0.980670116079626510,	0.980679898273870370,	0.980689678016414380,	
+0.980699455307234350,	0.980709230146305620,	0.980719002533603780,	0.980728772469104610,	0.980738539952783370,	0.980748304984615740,	0.980758067564577400,	0.980767827692643810,	
+0.980777585368790780,	0.980787340592993660,	0.980797093365228250,	0.980806843685470330,	0.980816591553695050,	0.980826336969878310,	0.980836079933995690,	0.980845820446022980,	
+0.980855558505935640,	0.980865294113709370,	0.980875027269320080,	0.980884757972743100,	0.980894486223954140,	0.980904212022928990,	0.980913935369643330,	0.980923656264072850,	
+0.980933374706193240,	0.980943090695980180,	0.980952804233409580,	0.980962515318456680,	0.980972223951097620,	0.980981930131307970,	0.980991633859063520,	0.981001335134339850,	
+0.981011033957112980,	0.981020730327358700,	0.981030424245052380,	0.981040115710170020,	0.981049804722687320,	0.981059491282580080,	0.981069175389824190,	0.981078857044395350,	
+0.981088536246269350,	0.981098212995422210,	0.981107887291829410,	0.981117559135466830,	0.981127228526310290,	0.981136895464335800,	0.981146559949519050,	0.981156221981835830,	
+0.981165881561262050,	0.981175538687773850,	0.981185193361346570,	0.981194845581956240,	0.981204495349578880,	0.981214142664190270,	0.981223787525766330,	0.981233429934282860,	
+0.981243069889715990,	0.981252707392041290,	0.981262342441234890,	0.981271975037272480,	0.981281605180130300,	0.981291232869784040,	0.981300858106209710,	0.981310480889383220,	
+0.981320101219280700,	0.981329719095877740,	0.981339334519150450,	0.981348947489074860,	0.981358558005626990,	0.981368166068782630,	0.981377771678517810,	0.981387374834808650,	
+0.981396975537631170,	0.981406573786961170,	0.981416169582774670,	0.981425762925047680,	0.981435353813756460,	0.981444942248876680,	0.981454528230384590,	0.981464111758256430,	
+0.981473692832467770,	0.981483271452994850,	0.981492847619813810,	0.981502421332900670,	0.981511992592231320,	0.981521561397782130,	0.981531127749529000,	0.981540691647448280,	
+0.981550253091515560,	0.981559812081707280,	0.981569368617999370,	0.981578922700368170,	0.981588474328789600,	0.981598023503239880,	0.981607570223695160,	0.981617114490131450,	
+0.981626656302524990,	0.981636195660851810,	0.981645732565088140,	0.981655267015210220,	0.981664799011194080,	0.981674328553015840,	0.981683855640652080,	0.981693380274078490,	
+0.981702902453271410,	0.981712422178207090,	0.981721939448861770,	0.981731454265211580,	0.981740966627232760,	0.981750476534901440,	0.981759983988194200,	0.981769488987086710,	
+0.981778991531555680,	0.981788491621577000,	0.981797989257127130,	0.981807484438182330,	0.981816977164718830,	0.981826467436713090,	0.981835955254140910,	0.981845440616978870,	
+0.981854923525203320,	0.981864403978790380,	0.981873881977716410,	0.981883357521957770,	0.981892830611490690,	0.981902301246291740,	0.981911769426336840,	0.981921235151602570,	
+0.981930698422065260,	0.981940159237701060,	0.981949617598486530,	0.981959073504398040,	0.981968526955411810,	0.981977977951504430,	0.981987426492651920,	0.981996872578830840,	
+0.982006316210017550,	0.982015757386188510,	0.982025196107320090,	0.982034632373388620,	0.982044066184370790,	0.982053497540242630,	0.982062926440980700,	0.982072352886561470,	
+0.982081776876961410,	0.982091198412156750,	0.982100617492124290,	0.982110034116840170,	0.982119448286281170,	0.982128860000423320,	0.982138269259243410,	0.982147676062717800,	
+0.982157080410822950,	0.982166482303535430,	0.982175881740831700,	0.982185278722688460,	0.982194673249081830,	0.982204065319988610,	0.982213454935385140,	0.982222842095248020,	
+0.982232226799553800,	0.982241609048279060,	0.982250988841400270,	0.982260366178894120,	0.982269741060736950,	0.982279113486905440,	0.982288483457376180,	0.982297850972125630,	
+0.982307216031130470,	0.982316578634367280,	0.982325938781812620,	0.982335296473443310,	0.982344651709235570,	0.982354004489166210,	0.982363354813211910,	0.982372702681349130,	
+0.982382048093554670,	0.982391391049805000,	0.982400731550077120,	0.982410069594347180,	0.982419405182592080,	0.982428738314788390,	0.982438068990913020,	0.982447397210942320,	
+0.982456722974853200,	0.982466046282622240,	0.982475367134226450,	0.982484685529641970,	0.982494001468845800,	0.982503314951814530,	0.982512625978525070,	0.982521934548954090,	
+0.982531240663078180,	0.982540544320874450,	0.982549845522319050,	0.982559144267389110,	0.982568440556061300,	0.982577734388312420,	0.982587025764119160,	0.982596314683458430,	
+0.982605601146306800,	0.982614885152641390,	0.982624166702438570,	0.982633445795675350,	0.982642722432328530,	0.982651996612374900,	0.982661268335791260,	0.982670537602554410,	
+0.982679804412641240,	0.982689068766028790,	0.982698330662693520,	0.982707590102612330,	0.982716847085762240,	0.982726101612119930,	0.982735353681662430,	0.982744603294366530,	
+0.982753850450209350,	0.982763095149167380,	0.982772337391217610,	0.982781577176336960,	0.982790814504502450,	0.982800049375690880,	0.982809281789879140,	0.982818511747044270,	
+0.982827739247163270,	0.982836964290212720,	0.982846186876169760,	0.982855407005011390,	0.982864624676714540,	0.982873839891255980,	0.982883052648612980,	0.982892262948762200,	
+0.982901470791681000,	0.982910676177345950,	0.982919879105734200,	0.982929079576822740,	0.982938277590588600,	0.982947473147008810,	0.982956666246060370,	0.982965856887720310,	
+0.982975045071965540,	0.982984230798773060,	0.982993414068120130,	0.983002594879983540,	0.983011773234340520,	0.983020949131168110,	0.983030122570443200,	0.983039293552143260,	
+0.983048462076244860,	0.983057628142725350,	0.983066791751561750,	0.983075952902731200,	0.983085111596210700,	0.983094267831977510,	0.983103421610008740,	0.983112572930281310,	
+0.983121721792772460,	0.983130868197459210,	0.983140012144318900,	0.983149153633328550,	0.983158292664465190,	0.983167429237706280,	0.983176563353028830,	0.983185695010409870,	
+0.983194824209826620,	0.983203950951256340,	0.983213075234676160,	0.983222197060063310,	0.983231316427395030,	0.983240433336648350,	0.983249547787800830,	0.983258659780829270,	
+0.983267769315711030,	0.983276876392423340,	0.983285981010943550,	0.983295083171248700,	0.983304182873316220,	0.983313280117123380,	0.983322374902647290,	0.983331467229865200,	
+0.983340557098754340,	0.983349644509292190,	0.983358729461455970,	0.983367811955222940,	0.983376891990570320,	0.983385969567475590,	0.983395044685915760,	0.983404117345868410,	
+0.983413187547310770,	0.983422255290220090,	0.983431320574573830,	0.983440383400349230,	0.983449443767523750,	0.983458501676074740,	0.983467557125979330,	0.983476610117214990,	
+0.983485660649759170,	0.983494708723589240,	0.983503754338682530,	0.983512797495016410,	0.983521838192568440,	0.983530876431315650,	0.983539912211235820,	0.983548945532306100,	
+0.983557976394504040,	0.983567004797807010,	0.983576030742192580,	0.983585054227637980,	0.983594075254120900,	0.983603093821618480,	0.983612109930108390,	0.983621123579567990,	
+0.983630134769974740,	0.983639143501306210,	0.983648149773539760,	0.983657153586653180,	0.983666154940623480,	0.983675153835428470,	0.983684150271045500,	0.983693144247452130,	
+0.983702135764626060,	0.983711124822544520,	0.983720111421185210,	0.983729095560525680,	0.983738077240543410,	0.983747056461215850,	0.983756033222520700,	0.983765007524435410,	
+0.983773979366937670,	0.983782948750004940,	0.983791915673614790,	0.983800880137745140,	0.983809842142372990,	0.983818801687476370,	0.983827758773032630,	0.983836713399019570,	
+0.983845665565414640,	0.983854615272195640,	0.983863562519340260,	0.983872507306825740,	0.983881449634629980,	0.983890389502730670,	0.983899326911105270,	0.983908261859731570,	
+0.983917194348587270,	0.983926124377650040,	0.983935051946897570,	0.983943977056307320,	0.983952899705857090,	0.983961819895524670,	0.983970737625287750,	0.983979652895123900,	
+0.983988565705010920,	0.983997476054926600,	0.984006383944848630,	0.984015289374754690,	0.984024192344622460,	0.984033092854429750,	0.984041990904154230,	0.984050886493773810,	
+0.984059779623266180,	0.984068670292609250,	0.984077558501780470,	0.984086444250757750,	0.984095327539519000,	0.984104208368041910,	0.984113086736304380,	0.984121962644283980,	
+0.984130836091958730,	0.984139707079306540,	0.984148575606304980,	0.984157441672931950,	0.984166305279165380,	0.984175166424982930,	0.984184025110362630,	0.984192881335282270,	
+0.984201735099719870,	0.984210586403652890,	0.984219435247059570,	0.984228281629917600,	0.984237125552204880,	0.984245967013899440,	0.984254806014979060,	0.984263642555421540,	
+0.984272476635205230,	0.984281308254307490,	0.984290137412706550,	0.984298964110380200,	0.984307788347306480,	0.984316610123463280,	0.984325429438828500,	0.984334246293380180,	
+0.984343060687096430,	0.984351872619954940,	0.984360682091933610,	0.984369489103010700,	0.984378293653163980,	0.984387095742371600,	0.984395895370611450,	0.984404692537861670,	
+0.984413487244100050,	0.984422279489304720,	0.984431069273453700,	0.984439856596525000,	0.984448641458496640,	0.984457423859346650,	0.984466203799053140,	0.984474981277594360,	
+0.984483756294947890,	0.984492528851091950,	0.984501298946004800,	0.984510066579664330,	0.984518831752048800,	0.984527594463136090,	0.984536354712904460,	0.984545112501332030,	
+0.984553867828396710,	0.984562620694076740,	0.984571371098350130,	0.984580119041195130,	0.984588864522589870,	0.984597607542512470,	0.984606348100941160,	0.984615086197853870,	
+0.984623821833228830,	0.984632555007044160,	0.984641285719278230,	0.984650013969909030,	0.984658739758914820,	0.984667463086273730,	0.984676183951964210,	0.984684902355963950,	
+0.984693618298251530,	0.984702331778805060,	0.984711042797602690,	0.984719751354622750,	0.984728457449843500,	0.984737161083243160,	0.984745862254799760,	0.984754560964491770,	
+0.984763257212297400,	0.984771950998194810,	0.984780642322162450,	0.984789331184178440,	0.984798017584221030,	0.984806701522268790,	0.984815382998299630,	0.984824062012292000,	
+0.984832738564224260,	0.984841412654074650,	0.984850084281821530,	0.984858753447443110,	0.984867420150917880,	0.984876084392224290,	0.984884746171340250,	0.984893405488244330,	
+0.984902062342915000,	0.984910716735330480,	0.984919368665469140,	0.984928018133309440,	0.984936665138829710,	0.984945309682008330,	0.984953951762823520,	0.984962591381253970,	
+0.984971228537277920,	0.984979863230873720,	0.984988495462019940,	0.984997125230694830,	0.985005752536877170,	0.985014377380544870,	0.985022999761676730,	0.985031619680250990,	
+0.985040237136246330,	0.985048852129640990,	0.985057464660413550,	0.985066074728542460,	0.985074682334006300,	0.985083287476783200,	0.985091890156852060,	0.985100490374191120,	
+0.985109088128778840,	0.985117683420594030,	0.985126276249614910,	0.985134866615820280,	0.985143454519188280,	0.985152039959697690,	0.985160622937326980,	0.985169203452054720,	
+0.985177781503859480,	0.985186357092719730,	0.985194930218614150,	0.985203500881521420,	0.985212069081419670,	0.985220634818287810,	0.985229198092104410,	0.985237758902847930,	
+0.985246317250497160,	0.985254873135030460,	0.985263426556426850,	0.985271977514664440,	0.985280526009722160,	0.985289072041578560,	0.985297615610212230,	0.985306156715601840,	
+0.985314695357726090,	0.985323231536563650,	0.985331765252093210,	0.985340296504293220,	0.985348825293142490,	0.985357351618619810,	0.985365875480703650,	0.985374396879372780,	
+0.985382915814605910,	0.985391432286381820,	0.985399946294679310,	0.985408457839476730,	0.985416966920752980,	0.985425473538486860,	0.985433977692657060,	0.985442479383242250,	
+0.985450978610221350,	0.985459475373573150,	0.985467969673275990,	0.985476461509309010,	0.985484950881650890,	0.985493437790280310,	0.985501922235176190,	0.985510404216317190,	
+0.985518883733682240,	0.985527360787250230,	0.985535835376999740,	0.985544307502909560,	0.985552777164958590,	0.985561244363125750,	0.985569709097389830,	0.985578171367729630,	
+0.985586631174124040,	0.985595088516551860,	0.985603543394991900,	0.985611995809423050,	0.985620445759824220,	0.985628893246174310,	0.985637338268452120,	0.985645780826636560,	
+0.985654220920706760,	0.985662658550641280,	0.985671093716419140,	0.985679526418019260,	0.985687956655420530,	0.985696384428601970,	0.985704809737542380,	0.985713232582220880,	
+0.985721652962616270,	0.985730070878707560,	0.985738486330473560,	0.985746899317893390,	0.985755309840945950,	0.985763717899610260,	0.985772123493865230,	0.985780526623690090,	
+0.985788927289063420,	0.985797325489964460,	0.985805721226372220,	0.985814114498265730,	0.985822505305623880,	0.985830893648425690,	0.985839279526650400,	0.985847662940277040,	
+0.985856043889284270,	0.985864422373651460,	0.985872798393357620,	0.985881171948381760,	0.985889543038703020,	0.985897911664300410,	0.985906277825152940,	0.985914641521239980,	
+0.985923002752540300,	0.985931361519033040,	0.985939717820697450,	0.985948071657512530,	0.985956423029457410,	0.985964771936511220,	0.985973118378653310,	0.985981462355862370,	
+0.985989803868117850,	0.985998142915398890,	0.986006479497684380,	0.986014813614953800,	0.986023145267186150,	0.986031474454360680,	0.986039801176456620,	0.986048125433452990,	
+0.986056447225329040,	0.986064766552063880,	0.986073083413636860,	0.986081397810027130,	0.986089709741213900,	0.986098019207176550,	0.986106326207893960,	0.986114630743345600,	
+0.986122932813510600,	0.986131232418368310,	0.986139529557897960,	0.986147824232078810,	0.986156116440890070,	0.986164406184311230,	0.986172693462321170,	0.986180978274899370,	
+0.986189260622025170,	0.986197540503677690,	0.986205817919836520,	0.986214092870480790,	0.986222365355589710,	0.986230635375142990,	0.986238902929119420,	0.986247168017498680,	
+0.986255430640260000,	0.986263690797382740,	0.986271948488846250,	0.986280203714629990,	0.986288456474713190,	0.986296706769075220,	0.986304954597695400,	0.986313199960553330,	
+0.986321442857628130,	0.986329683288899360,	0.986337921254346380,	0.986346156753948660,	0.986354389787685640,	0.986362620355536460,	0.986370848457480800,	0.986379074093498010,	
+0.986387297263567440,	0.986395517967668780,	0.986403736205781260,	0.986411951977884340,	0.986420165283957710,	0.986428376123980600,	0.986436584497932480,	0.986444790405792920,	
+0.986452993847541370,	0.986461194823157310,	0.986469393332620400,	0.986477589375910010,	0.986485782953005490,	0.986493974063886610,	0.986502162708532750,	0.986510348886923460,	
+0.986518532599038320,	0.986526713844856910,	0.986534892624358670,	0.986543068937523300,	0.986551242784330150,	0.986559414164758900,	0.986567583078789110,	0.986575749526400370,	
+0.986583913507572240,	0.986592075022284300,	0.986600234070516340,	0.986608390652247700,	0.986616544767458080,	0.986624696416127040,	0.986632845598234280,	0.986640992313759460,	
+0.986649136562682050,	0.986657278344981850,	0.986665417660638640,	0.986673554509631680,	0.986681688891940860,	0.986689820807545860,	0.986697950256426260,	0.986706077238561740,	
+0.986714201753932100,	0.986722323802517010,	0.986730443384296160,	0.986738560499249020,	0.986746675147355590,	0.986754787328595450,	0.986762897042948280,	0.986771004290393880,	
+0.986779109070912040,	0.986787211384482550,	0.986795311231084770,	0.986803408610698820,	0.986811503523304380,	0.986819595968881140,	0.986827685947408880,	0.986835773458867420,	
+0.986843858503236530,	0.986851941080496230,	0.986860021190625770,	0.986868098833605380,	0.986876174009414740,	0.986884246718033540,	0.986892316959441910,	0.986900384733619300,	
+0.986908450040545840,	0.986916512880201440,	0.986924573252565550,	0.986932631157618200,	0.986940686595339290,	0.986948739565708720,	0.986956790068706180,	0.986964838104311790,	
+0.986972883672505350,	0.986980926773266650,	0.986988967406575600,	0.986997005572412100,	0.987005041270756170,	0.987013074501587600,	0.987021105264886290,	0.987029133560632270,	
+0.987037159388805540,	0.987045182749385690,	0.987053203642353050,	0.987061222067687320,	0.987069238025368500,	0.987077251515376620,	0.987085262537691580,	0.987093271092293610,	
+0.987101277179162180,	0.987109280798277640,	0.987117281949619900,	0.987125280633168960,	0.987133276848904840,	0.987141270596807560,	0.987149261876857030,	0.987157250689033480,	
+0.987165237033316710,	0.987173220909686840,	0.987181202318123900,	0.987189181258607880,	0.987197157731119050,	0.987205131735637290,	0.987213103272142620,	0.987221072340615400,	
+0.987229038941035310,	0.987237003073382690,	0.987244964737637560,	0.987252923933779950,	0.987260880661790070,	0.987268834921647960,	0.987276786713333960,	0.987284736036827870,	
+0.987292682892109920,	0.987300627279160240,	0.987308569197958950,	0.987316508648486300,	0.987324445630722300,	0.987332380144647300,	0.987340312190241430,	0.987348241767484590,	
+0.987356168876357240,	0.987364093516839400,	0.987372015688911420,	0.987379935392553310,	0.987387852627745420,	0.987395767394467880,	0.987403679692701040,	0.987411589522424800,	
+0.987419496883619740,	0.987427401776265870,	0.987435304200343420,	0.987443204155832750,	0.987451101642714100,	0.987458996660967810,	0.987466889210573910,	0.987474779291512840,	
+0.987482666903764740,	0.987490552047310070,	0.987498434722128950,	0.987506314928201730,	0.987514192665508660,	0.987522067934030410,	0.987529940733746780,	0.987537811064638230,	
+0.987545678926685210,	0.987553544319867970,	0.987561407244166970,	0.987569267699562330,	0.987577125686034730,	0.987584981203564080,	0.987592834252131070,	0.987600684831716040,	
+0.987608532942299110,	0.987616378583860980,	0.987624221756381870,	0.987632062459842250,	0.987639900694222580,	0.987647736459502990,	0.987655569755664150,	0.987663400582686310,	
+0.987671228940549930,	0.987679054829235570,	0.987686878248723480,	0.987694699198994220,	0.987702517680028480,	0.987710333691806160,	0.987718147234308060,	0.987725958307514530,	
+0.987733766911406240,	0.987741573045963440,	0.987749376711166690,	0.987757177906996690,	0.987764976633433540,	0.987772772890458060,	0.987780566678050590,	0.987788357996191690,	
+0.987796146844861830,	0.987803933224041700,	0.987811717133711740,	0.987819498573852540,	0.987827277544444550,	0.987835054045468340,	0.987842828076904490,	0.987850599638733560,	
+0.987858368730936130,	0.987866135353492770,	0.987873899506384270,	0.987881661189590750,	0.987889420403093240,	0.987897177146872090,	0.987904931420908070,	0.987912683225181660,	
+0.987920432559673540,	0.987928179424364280,	0.987935923819234780,	0.987943665744265400,	0.987951405199436690,	0.987959142184729580,	0.987966876700124620,	0.987974608745602500,	
+0.987982338321143790,	0.987990065426729290,	0.987997790062339680,	0.988005512227955520,	0.988013231923557500,	0.988020949149126530,	0.988028663904643060,	0.988036376190087990,	
+0.988044086005442020,	0.988051793350685940,	0.988059498225800190,	0.988067200630765810,	0.988074900565563350,	0.988082598030173620,	0.988090293024577400,	0.988097985548755500,	
+0.988105675602688580,	0.988113363186357670,	0.988121048299743230,	0.988128730942826050,	0.988136411115587140,	0.988144088818007190,	0.988151764050066990,	0.988159436811747450,	
+0.988167107103029240,	0.988174774923893380,	0.988182440274320560,	0.988190103154291570,	0.988197763563787300,	0.988205421502788670,	0.988213076971276470,	0.988220729969231600,	
+0.988228380496634970,	0.988236028553467260,	0.988243674139709590,	0.988251317255342650,	0.988258957900347350,	0.988266596074704800,	0.988274231778395680,	0.988281865011401030,	
+0.988289495773701730,	0.988297124065278700,	0.988304749886112830,	0.988312373236185040,	0.988319994115476330,	0.988327612523967610,	0.988335228461639900,	0.988342841928474210,	
+0.988350452924451340,	0.988358061449552410,	0.988365667503758210,	0.988373271087049870,	0.988380872199408290,	0.988388470840814600,	0.988396067011249710,	0.988403660710694850,	
+0.988411251939130600,	0.988418840696538290,	0.988426426982898840,	0.988434010798193370,	0.988441592142402790,	0.988449171015508330,	0.988456747417490900,	0.988464321348331730,	
+0.988471892808011620,	0.988479461796511800,	0.988487028313813300,	0.988494592359897230,	0.988502153934744720,	0.988509713038336790,	0.988517269670654790,	0.988524823831679390,	
+0.988532375521391950,	0.988539924739773590,	0.988547471486805440,	0.988555015762468510,	0.988562557566744160,	0.988570096899613280,	0.988577633761057450,	0.988585168151057350,	
+0.988592700069594210,	0.988600229516649500,	0.988607756492204110,	0.988615280996239410,	0.988622803028736400,	0.988630322589676420,	0.988637839679040840,	0.988645354296810440,	
+0.988652866442966680,	0.988660376117490800,	0.988667883320363930,	0.988675388051567290,	0.988682890311082250,	0.988690390098890150,	0.988697887414971890,	0.988705382259309040,	
+0.988712874631882620,	0.988720364532673980,	0.988727851961664460,	0.988735336918835310,	0.988742819404167860,	0.988750299417643470,	0.988757776959243160,	0.988765252028948490,	
+0.988772724626740600,	0.988780194752601040,	0.988787662406510840,	0.988795127588451560,	0.988802590298404560,	0.988810050536350960,	0.988817508302272220,	0.988824963596149800,	
+0.988832416417964930,	0.988839866767698970,	0.988847314645333380,	0.988854760050849490,	0.988862202984228780,	0.988869643445452470,	0.988877081434502150,	0.988884516951359040,	
+0.988891949996004600,	0.988899380568420310,	0.988906808668587600,	0.988914234296487840,	0.988921657452102700,	0.988929078135413200,	0.988936496346401020,	0.988943912085047620,	
+0.988951325351334450,	0.988958736145242880,	0.988966144466754570,	0.988973550315850990,	0.988980953692513490,	0.988988354596723520,	0.988995753028462650,	0.989003148987712350,	
+0.989010542474454300,	0.989017933488669840,	0.989025322030340550,	0.989032708099448100,	0.989040091695973730,	0.989047472819899130,	0.989054851471205860,	0.989062227649875500,	
+0.989069601355889510,	0.989076972589229550,	0.989084341349877110,	0.989091707637813950,	0.989099071453021450,	0.989106432795481270,	0.989113791665174990,	0.989121148062084180,	
+0.989128501986190620,	0.989135853437475680,	0.989143202415921350,	0.989150548921508780,	0.989157892954219850,	0.989165234514036260,	0.989172573600939580,	0.989179910214911360,	
+0.989187244355933410,	0.989194576023987420,	0.989201905219055040,	0.989209231941117870,	0.989216556190157580,	0.989223877966155850,	0.989231197269094480,	0.989238514098955020,	
+0.989245828455719400,	0.989253140339369290,	0.989260449749886140,	0.989267756687251980,	0.989275061151448360,	0.989282363142456990,	0.989289662660259860,	0.989296959704838550,	
+0.989304254276174850,	0.989311546374250560,	0.989318835999047350,	0.989326123150547020,	0.989333407828731360,	0.989340690033582270,	0.989347969765081440,	0.989355247023210650,	
+0.989362521807951700,	0.989369794119286610,	0.989377063957196930,	0.989384331321664590,	0.989391596212671360,	0.989398858630199160,	0.989406118574229890,	0.989413376044745220,	
+0.989420631041727280,	0.989427883565157650,	0.989435133615018340,	0.989442381191291130,	0.989449626293958050,	0.989456868923000890,	0.989464109078401430,	0.989471346760141810,	
+0.989478581968203930,	0.989485814702569470,	0.989493044963220550,	0.989500272750138850,	0.989507498063306620,	0.989514720902705540,	0.989521941268317720,	0.989529159160125070,	
+0.989536374578109610,	0.989543587522253130,	0.989550797992537650,	0.989558005988945060,	0.989565211511457600,	0.989572414560057070,	0.989579615134725480,	0.989586813235445060,	
+0.989594008862197390,	0.989601202014964710,	0.989608392693729130,	0.989615580898472460,	0.989622766629176920,	0.989629949885824420,	0.989637130668396980,	0.989644308976876940,	
+0.989651484811245870,	0.989658658171486240,	0.989665829057579940,	0.989672997469508990,	0.989680163407255620,	0.989687326870801740,	0.989694487860129810,	0.989701646375221400,	
+0.989708802416058960,	0.989715955982624520,	0.989723107074900190,	0.989730255692867990,	0.989737401836510270,	0.989744545505809040,	0.989751686700746540,	0.989758825421304670,	
+0.989765961667465780,	0.989773095439211990,	0.989780226736525440,	0.989787355559388240,	0.989794481907782740,	0.989801605781691070,	0.989808727181095470,	0.989815846105977950,	
+0.989822962556320740,	0.989830076532106200,	0.989837188033316440,	0.989844297059933710,	0.989851403611940240,	0.989858507689318490,	0.989865609292050250,	0.989872708420117990,	
+0.989879805073503930,	0.989886899252190310,	0.989893990956159600,	0.989901080185393800,	0.989908166939875380,	0.989915251219586570,	0.989922333024509600,	0.989929412354626730,	
+0.989936489209920280,	0.989943563590372720,	0.989950635495966180,	0.989957704926683110,	0.989964771882505870,	0.989971836363416570,	0.989978898369397790,	0.989985957900431650,	
+0.989993014956500610,	0.990000069537587010,	0.990007121643673330,	0.990014171274741780,	0.990021218430774950,	0.990028263111754960,	0.990035305317664260,	0.990042345048485320,	
+0.990049382304200590,	0.990056417084792310,	0.990063449390243040,	0.990070479220535150,	0.990077506575651190,	0.990084531455573290,	0.990091553860284130,	0.990098573789766070,	
+0.990105591244001550,	0.990112606222973040,	0.990119618726662990,	0.990126628755054080,	0.990133636308128450,	0.990140641385868770,	0.990147643988257390,	0.990154644115276980,	
+0.990161641766909910,	0.990168636943138840,	0.990175629643946010,	0.990182619869314330,	0.990189607619226030,	0.990196592893663690,	0.990203575692609750,	0.990210556016047020,	
+0.990217533863957830,	0.990224509236324770,	0.990231482133130500,	0.990238452554357610,	0.990245420499988540,	0.990252385970005870,	0.990259348964392160,	0.990266309483130100,	
+0.990273267526202370,	0.990280223093591430,	0.990287176185280060,	0.990294126801250620,	0.990301074941485780,	0.990308020605968340,	0.990314963794680870,	0.990321904507605930,	
+0.990328842744726210,	0.990335778506024500,	0.990342711791483370,	0.990349642601085380,	0.990356570934813220,	0.990363496792649680,	0.990370420174577440,	0.990377341080579070,	
+0.990384259510637350,	0.990391175464735210,	0.990398088942854860,	0.990404999944979440,	0.990411908471091400,	0.990418814521173640,	0.990425718095208850,	0.990432619193179710,	
+0.990439517815069110,	0.990446413960859750,	0.990453307630534300,	0.990460198824075540,	0.990467087541466400,	0.990473973782689420,	0.990480857547727520,	0.990487738836563490,	
+0.990494617649180120,	0.990501493985560310,	0.990508367845686630,	0.990515239229542100,	0.990522108137109390,	0.990528974568371520,	0.990535838523311060,	0.990542700001911140,	
+0.990549559004154530,	0.990556415530023940,	0.990563269579502250,	0.990570121152572370,	0.990576970249217310,	0.990583816869419760,	0.990590661013162620,	0.990597502680428900,	
+0.990604341871201500,	0.990611178585463100,	0.990618012823196840,	0.990624844584385490,	0.990631673869011960,	0.990638500677059390,	0.990645325008510550,	0.990652146863348350,	
+0.990658966241555810,	0.990665783143115930,	0.990672597568011400,	0.990679409516225460,	0.990686218987741010,	0.990693025982541050,	0.990699830500608500,	0.990706632541926480,	
+0.990713432106477780,	0.990720229194245410,	0.990727023805212600,	0.990733815939362160,	0.990740605596677200,	0.990747392777140630,	0.990754177480735690,	0.990760959707445380,	
+0.990767739457252610,	0.990774516730140500,	0.990781291526091960,	0.990788063845090330,	0.990794833687118510,	0.990801601052159530,	0.990808365940196720,	0.990815128351212880,	
+0.990821888285191240,	0.990828645742114930,	0.990835400721966850,	0.990842153224730460,	0.990848903250388550,	0.990855650798924460,	0.990862395870321320,	0.990869138464562040,	
+0.990875878581629950,	0.990882616221508080,	0.990889351384179770,	0.990896084069628150,	0.990902814277836220,	0.990909542008787230,	0.990916267262464510,	0.990922990038851090,	
+0.990929710337930090,	0.990936428159684860,	0.990943143504098620,	0.990949856371154400,	0.990956566760835660,	0.990963274673125620,	0.990969980108007190,	0.990976683065463830,	
+0.990983383545478770,	0.990990081548035250,	0.990996777073116510,	0.991003470120705890,	0.991010160690786510,	0.991016848783341950,	0.991023534398355110,	0.991030217535809440,	
+0.991036898195688190,	0.991043576377974690,	0.991050252082652290,	0.991056925309704240,	0.991063596059113870,	0.991070264330864650,	0.991076930124939580,	0.991083593441322240,	
+0.991090254279995970,	0.991096912640944020,	0.991103568524149820,	0.991110221929596640,	0.991116872857268020,	0.991123521307147200,	0.991130167279217430,	0.991136810773462380,	
+0.991143451789865180,	0.991150090328409390,	0.991156726389078480,	0.991163359971855670,	0.991169991076724540,	0.991176619703668330,	0.991183245852670590,	0.991189869523714790,	
+0.991196490716784280,	0.991203109431862520,	0.991209725668933060,	0.991216339427979260,	0.991222950708984580,	0.991229559511932590,	0.991236165836806630,	0.991242769683590260,	
+0.991249371052266960,	0.991255969942820170,	0.991262566355233580,	0.991269160289490640,	0.991275751745574700,	0.991282340723469320,	0.991288927223158090,	0.991295511244624670,	
+0.991302092787852310,	0.991308671852824790,	0.991315248439525680,	0.991321822547938440,	0.991328394178046520,	0.991334963329833730,	0.991341530003283400,	0.991348094198379330,	
+0.991354655915104970,	0.991361215153444110,	0.991367771913380210,	0.991374326194896740,	0.991380877997977470,	0.991387427322606100,	0.991393974168766070,	0.991400518536441070,	
+0.991407060425614880,	0.991413599836270980,	0.991420136768393250,	0.991426671221964930,	0.991433203196970040,	0.991439732693392140,	0.991446259711214920,	0.991452784250422050,	
+0.991459306310997100,	0.991465825892924090,	0.991472342996186470,	0.991478857620767930,	0.991485369766652250,	0.991491879433823110,	0.991498386622264300,	0.991504891331959510,	
+0.991511393562892530,	0.991517893315047140,	0.991524390588407020,	0.991530885382955750,	0.991537377698677340,	0.991543867535555570,	0.991550354893574020,	0.991556839772716580,	
+0.991563322172967050,	0.991569802094309450,	0.991576279536727110,	0.991582754500204060,	0.991589226984724180,	0.991595696990271170,	0.991602164516829030,	0.991608629564381450,	
+0.991615092132912320,	0.991621552222405440,	0.991628009832844600,	0.991634464964213810,	0.991640917616496750,	0.991647367789677550,	0.991653815483739760,	0.991660260698667530,	
+0.991666703434444850,	0.991673143691055190,	0.991679581468482670,	0.991686016766711200,	0.991692449585724670,	0.991698879925507090,	0.991705307786042270,	0.991711733167314200,	
+0.991718156069306910,	0.991724576492004070,	0.991730994435389810,	0.991737409899448030,	0.991743822884162740,	0.991750233389517950,	0.991756641415497580,	0.991763046962085730,	
+0.991769450029266090,	0.991775850617022780,	0.991782248725339930,	0.991788644354201440,	0.991795037503591330,	0.991801428173493590,	0.991807816363892370,	0.991814202074771670,	
+0.991820585306115390,	0.991826966057907540,	0.991833344330132370,	0.991839720122773880,	0.991846093435815980,	0.991852464269242890,	0.991858832623038760,	0.991865198497187460,	
+0.991871561891673140,	0.991877922806479910,	0.991884281241591890,	0.991890637196993110,	0.991896990672667790,	0.991903341668600060,	0.991909690184773930,	0.991916036221173640,	
+0.991922379777783080,	0.991928720854586720,	0.991935059451568460,	0.991941395568712640,	0.991947729206003270,	0.991954060363424590,	0.991960389040960840,	0.991966715238596030,	
+0.991973038956314500,	0.991979360194100270,	0.991985678951937680,	0.991991995229810850,	0.991998309027704140,	0.992004620345601660,	0.992010929183487540,	0.992017235541346130,	
+0.992023539419161660,	0.992029840816918360,	0.992036139734600360,	0.992042436172192010,	0.992048730129677650,	0.992055021607041620,	0.992061310604267830,	0.992067597121340740,	
+0.992073881158244690,	0.992080162714964020,	0.992086441791482860,	0.992092718387785570,	0.992098992503856470,	0.992105264139680140,	0.992111533295240380,	0.992117799970521850,	
+0.992124064165508910,	0.992130325880185680,	0.992136585114536730,	0.992142841868546290,	0.992149096142198820,	0.992155347935478440,	0.992161597248369830,	0.992167844080857120,	
+0.992174088432924870,	0.992180330304557430,	0.992186569695739040,	0.992192806606454370,	0.992199041036687660,	0.992205272986423360,	0.992211502455645820,	0.992217729444339500,	
+0.992223953952488860,	0.992230175980078340,	0.992236395527092420,	0.992242612593515540,	0.992248827179332160,	0.992255039284526630,	0.992261248909083520,	0.992267456052987160,	
+0.992273660716222360,	0.992279862898773240,	0.992286062600624570,	0.992292259821760840,	0.992298454562166370,	0.992304646821825730,	0.992310836600723390,	0.992317023898844130,	
+0.992323208716172190,	0.992329391052692240,	0.992335570908388860,	0.992341748283246620,	0.992347923177249960,	0.992354095590383460,	0.992360265522631680,	0.992366432973979310,	
+0.992372597944410790,	0.992378760433910820,	0.992384920442463960,	0.992391077970054770,	0.992397233016667930,	0.992403385582288020,	0.992409535666899600,	0.992415683270487240,	
+0.992421828393035830,	0.992427971034529730,	0.992434111194953950,	0.992440248874292610,	0.992446384072530830,	0.992452516789652960,	0.992458647025643790,	0.992464774780488110,	
+0.992470900054170380,	0.992477022846675490,	0.992483143157988130,	0.992489260988092760,	0.992495376336974270,	0.992501489204617340,	0.992507599591006760,	0.992513707496127110,	
+0.992519812919963160,	0.992525915862499830,	0.992532016323721570,	0.992538114303613270,	0.992544209802159740,	0.992550302819345640,	0.992556393355155770,	0.992562481409574930,	
+0.992568566982587890,	0.992574650074179550,	0.992580730684334500,	0.992586808813037620,	0.992592884460273720,	0.992598957626027570,	0.992605028310283970,	0.992611096513027920,	
+0.992617162234244230,	0.992623225473917460,	0.992629286232032610,	0.992635344508574600,	0.992641400303528210,	0.992647453616878340,	0.992653504448609780,	0.992659552798707550,	
+0.992665598667156530,	0.992671642053941320,	0.992677682959047130,	0.992683721382458640,	0.992689757324160870,	0.992695790784138720,	0.992701821762377090,	0.992707850258860880,	
+0.992713876273575210,	0.992719899806504660,	0.992725920857634450,	0.992731939426949370,	0.992737955514434440,	0.992743969120074680,	0.992749980243854970,	0.992755988885760330,	
+0.992761995045775780,	0.992767998723886100,	0.992773999920076530,	0.992779998634331860,	0.992785994866637210,	0.992791988616977710,	0.992797979885338130,	0.992803968671703620,	
+0.992809954976059170,	0.992815938798389920,	0.992821920138680760,	0.992827898996916700,	0.992833875373082990,	0.992839849267164620,	0.992845820679146620,	0.992851789609014100,	
+0.992857756056751970,	0.992863720022345570,	0.992869681505779810,	0.992875640507039910,	0.992881597026110780,	0.992887551062977770,	0.992893502617625990,	0.992899451690040240,	
+0.992905398280205960,	0.992911342388108190,	0.992917284013732030,	0.992923223157062610,	0.992929159818085270,	0.992935093996784920,	0.992941025693146910,	0.992946954907156340,	
+0.992952881638798360,	0.992958805888058070,	0.992964727654920940,	0.992970646939371870,	0.992976563741396200,	0.992982478060979170,	0.992988389898106010,	0.992994299252761730,	
+0.993000206124931780,	0.993006110514601190,	0.993012012421755410,	0.993017911846379660,	0.993023808788459080,	0.993029703247979010,	0.993035595224924680,	0.993041484719281330,	
+0.993047371731034300,	0.993053256260168830,	0.993059138306670140,	0.993065017870523700,	0.993070894951714630,	0.993076769550228500,	0.993082641666050310,	0.993088511299165530,	
+0.993094378449559500,	0.993100243117217450,	0.993106105302124840,	0.993111965004266910,	0.993117822223629210,	0.993123676960196880,	0.993129529213955360,	0.993135378984890020,	
+0.993141226272986180,	0.993147071078229300,	0.993152913400604740,	0.993158753240097950,	0.993164590596694370,	0.993170425470379150,	0.993176257861137830,	0.993182087768956000,	
+0.993187915193818880,	0.993193740135711930,	0.993199562594620720,	0.993205382570530590,	0.993211200063427000,	0.993217015073295410,	0.993222827600121260,	0.993228637643890020,	
+0.993234445204587260,	0.993240250282198310,	0.993246052876708750,	0.993251852988104140,	0.993257650616369840,	0.993263445761491390,	0.993269238423454380,	0.993275028602244150,	
+0.993280816297846480,	0.993286601510246720,	0.993292384239430450,	0.993298164485383330,	0.993303942248090710,	0.993309717527538160,	0.993315490323711360,	0.993321260636595870,	
+0.993327028466177260,	0.993332793812441000,	0.993338556675372850,	0.993344317054958290,	0.993350074951182880,	0.993355830364032300,	0.993361583293492110,	0.993367333739548000,	
+0.993373081702185520,	0.993378827181390370,	0.993384570177148210,	0.993390310689444610,	0.993396048718265150,	0.993401784263595600,	0.993407517325421650,	0.993413247903728760,	
+0.993418975998502930,	0.993424701609729510,	0.993430424737394510,	0.993436145381483390,	0.993441863541981830,	0.993447579218875610,	0.993453292412150410,	0.993459003121792140,	
+0.993464711347786240,	0.993470417090118630,	0.993476120348774970,	0.993481821123740950,	0.993487519415002350,	0.993493215222545080,	0.993498908546354700,	0.993504599386417000,	
+0.993510287742717880,	0.993515973615243020,	0.993521657003978210,	0.993527337908909350,	0.993533016330022000,	0.993538692267302180,	0.993544365720735570,	0.993550036690308170,	
+0.993555705176005550,	0.993561371177813850,	0.993567034695718500,	0.993572695729705750,	0.993578354279761160,	0.993584010345870630,	0.993589663928020170,	0.993595315026195470,	
+0.993600963640382640,	0.993606609770567250,	0.993612253416735420,	0.993617894578872950,	0.993623533256965620,	0.993629169450999550,	0.993634803160960530,	0.993640434386834580,	
+0.993646063128607590,	0.993651689386265360,	0.993657313159793890,	0.993662934449179080,	0.993668553254406950,	0.993674169575463510,	0.993679783412334650,	0.993685394765006390,	
+0.993691003633464520,	0.993696610017695160,	0.993702213917684320,	0.993707815333417900,	0.993713414264881910,	0.993719010712062480,	0.993724604674945500,	0.993730196153516990,	
+0.993735785147763060,	0.993741371657669510,	0.993746955683222690,	0.993752537224408370,	0.993758116281212690,	0.993763692853621760,	0.993769266941621600,	0.993774838545198440,	
+0.993780407664338060,	0.993785974299026600,	0.993791538449250170,	0.993797100114995000,	0.993802659296247000,	0.993808215992992410,	0.993813770205217330,	0.993819321932907780,	
+0.993824871176049900,	0.993830417934629780,	0.993835962208633680,	0.993841503998047720,	0.993847043302858000,	0.993852580123050560,	0.993858114458611830,	0.993863646309527730,	
+0.993869175675784480,	0.993874702557368320,	0.993880226954265370,	0.993885748866461970,	0.993891268293944030,	0.993896785236698110,	0.993902299694710110,	0.993907811667966380,	
+0.993913321156453140,	0.993918828160156530,	0.993924332679062880,	0.993929834713158430,	0.993935334262429420,	0.993940831326862060,	0.993946325906442610,	0.993951818001157280,	
+0.993957307610992550,	0.993962794735934410,	0.993968279375969320,	0.993973761531083520,	0.993979241201263350,	0.993984718386495160,	0.993990193086765060,	0.993995665302059520,	
+0.994001135032364760,	0.994006602277667240,	0.994012067037953080,	0.994017529313208860,	0.994022989103420910,	0.994028446408575350,	0.994033901228658760,	0.994039353563657360,	
+0.994044803413557500,	0.994050250778345750,	0.994055695658008330,	0.994061138052531710,	0.994066577961902230,	0.994072015386106340,	0.994077450325130290,	0.994082882778960730,	
+0.994088312747583910,	0.994093740230986290,	0.994099165229154310,	0.994104587742074440,	0.994110007769733240,	0.994115425312116940,	0.994120840369212000,	0.994126252941004980,	
+0.994131663027482350,	0.994137070628630550,	0.994142475744436040,	0.994147878374885500,	0.994153278519965160,	0.994158676179661580,	0.994164071353961340,	0.994169464042850890,	
+0.994174854246316800,	0.994180241964345620,	0.994185627196923720,	0.994191009944037970,	0.994196390205674520,	0.994201767981820140,	0.994207143272461290,	0.994212516077584650,	
+0.994217886397176680,	0.994223254231224040,	0.994228619579713310,	0.994233982442630950,	0.994239342819963620,	0.994244700711698020,	0.994250056117820580,	0.994255409038317990,	
+0.994260759473176940,	0.994266107422383970,	0.994271452885925780,	0.994276795863788920,	0.994282136355960080,	0.994287474362425820,	0.994292809883172920,	0.994298142918188080,	
+0.994303473467457730,	0.994308801530968790,	0.994314127108707920,	0.994319450200661590,	0.994324770806816690,	0.994330088927159910,	0.994335404561677900,	0.994340717710357260,	
+0.994346028373184980,	0.994351336550147620,	0.994356642241231770,	0.994361945446424420,	0.994367246165712260,	0.994372544399081850,	0.994377840146520200,	0.994383133408013880,	
+0.994388424183549670,	0.994393712473114590,	0.994398998276695090,	0.994404281594278070,	0.994409562425850440,	0.994414840771398860,	0.994420116630910120,	0.994425390004371130,	
+0.994430660891768680,	0.994435929293089660,	0.994441195208320750,	0.994446458637448850,	0.994451719580460750,	0.994456978037343450,	0.994462234008083650,	0.994467487492668220,	
+0.994472738491084200,	0.994477987003318240,	0.994483233029357370,	0.994488476569188260,	0.994493717622798150,	0.994498956190173590,	0.994504192271301710,	0.994509425866169420,	
+0.994514656974763600,	0.994519885597070940,	0.994525111733078670,	0.994530335382773690,	0.994535556546142780,	0.994540775223172970,	0.994545991413851250,	0.994551205118164640,	
+0.994556416336099920,	0.994561625067644120,	0.994566831312784340,	0.994572035071507490,	0.994577236343800460,	0.994582435129650390,	0.994587631429044270,	0.994592825241969130,	
+0.994598016568411850,	0.994603205408359450,	0.994608391761799050,	0.994613575628717770,	0.994618757009102520,	0.994623935902940290,	0.994629112310218330,	0.994634286230923650,	
+0.994639457665043140,	0.994644626612564030,	0.994649793073473230,	0.994654957047758080,	0.994660118535405480,	0.994665277536402660,	0.994670434050736630,	0.994675588078394510,	
+0.994680739619363320,	0.994685888673630390,	0.994691035241182740,	0.994696179322007380,	0.994701320916091650,	0.994706460023422670,	0.994711596643987560,	0.994716730777773340,	
+0.994721862424767340,	0.994726991584956700,	0.994732118258328630,	0.994737242444870160,	0.994742364144568620,	0.994747483357411140,	0.994752600083385170,	0.994757714322477500,	
+0.994762826074675590,	0.994767935339966550,	0.994773042118337720,	0.994778146409776240,	0.994783248214269440,	0.994788347531804560,	0.994793444362368830,	0.994798538705949360,	
+0.994803630562533630,	0.994808719932108840,	0.994813806814662250,	0.994818891210181080,	0.994823973118652670,	0.994829052540064480,	0.994834129474403530,	0.994839203921657260,	
+0.994844275881813010,	0.994849345354858030,	0.994854412340779760,	0.994859476839565330,	0.994864538851202410,	0.994869598375678010,	0.994874655412979590,	0.994879709963094610,	
+0.994884762026010280,	0.994889811601714080,	0.994894858690193340,	0.994899903291435520,	0.994904945405427950,	0.994909985032158000,	0.994915022171612980,	0.994920056823780490,	
+0.994925088988647840,	0.994930118666202400,	0.994935145856431720,	0.994940170559323270,	0.994945192774864370,	0.994950212503042390,	0.994955229743844980,	0.994960244497259390,	
+0.994965256763273190,	0.994970266541873930,	0.994975273833048960,	0.994980278636785840,	0.994985280953072040,	0.994990280781895000,	0.994995278123242290,	0.995000272977101250,	
+0.995005265343459680,	0.995010255222304910,	0.995015242613624510,	0.995020227517406040,	0.995025209933636860,	0.995030189862304740,	0.995035167303397140,	0.995040142256901630,	
+0.995045114722805770,	0.995050084701097130,	0.995055052191763270,	0.995060017194791870,	0.995064979710170270,	0.995069939737886270,	0.995074897277927420,	0.995079852330281400,	
+0.995084804894935670,	0.995089754971877900,	0.995094702561095890,	0.995099647662577080,	0.995104590276309040,	0.995109530402279560,	0.995114468040476320,	0.995119403190886880,	
+0.995124335853498910,	0.995129266028300100,	0.995134193715278230,	0.995139118914420750,	0.995144041625715460,	0.995148961849150140,	0.995153879584712350,	0.995158794832389890,	
+0.995163707592170430,	0.995168617864041870,	0.995173525647991550,	0.995178430944007490,	0.995183333752077350,	0.995188234072188930,	0.995193131904329900,	0.995198027248487940,	
+0.995202920104650950,	0.995207810472806820,	0.995212698352943010,	0.995217583745047540,	0.995222466649107960,	0.995227347065112400,	0.995232224993048310,	0.995237100432903700,	
+0.995241973384666360,	0.995246843848324180,	0.995251711823864850,	0.995256577311276150,	0.995261440310546090,	0.995266300821662340,	0.995271158844612920,	0.995276014379385620,	
+0.995280867425968330,	0.995285717984348730,	0.995290566054514940,	0.995295411636454630,	0.995300254730155820,	0.995305095335606400,	0.995309933452794280,	0.995314769081707240,	
+0.995319602222333400,	0.995324432874660550,	0.995329261038676470,	0.995334086714369290,	0.995338909901727020,	0.995343730600737330,	0.995348548811388350,	0.995353364533668070,	
+0.995358177767564300,	0.995362988513065150,	0.995367796770158410,	0.995372602538832310,	0.995377405819074630,	0.995382206610873400,	0.995387004914216720,	0.995391800729092610,	
+0.995396594055488970,	0.995401384893393690,	0.995406173242795010,	0.995410959103680940,	0.995415742476039480,	0.995420523359858640,	0.995425301755126450,	0.995430077661831230,	
+0.995434851079960550,	0.995439622009502870,	0.995444390450446080,	0.995449156402778310,	0.995453919866487680,	0.995458680841562190,	0.995463439327990200,	0.995468195325759360,	
+0.995472948834858150,	0.995477699855274570,	0.995482448386996730,	0.995487194430012770,	0.995491937984310790,	0.995496679049879040,	0.995501417626705520,	0.995506153714778570,	
+0.995510887314086100,	0.995515618424616440,	0.995520347046357720,	0.995525073179298170,	0.995529796823426020,	0.995534517978729270,	0.995539236645196280,	0.995543952822815160,	
+0.995548666511574140,	0.995553377711461460,	0.995558086422465350,	0.995562792644574030,	0.995567496377775750,	0.995572197622058840,	0.995576896377411310,	0.995581592643821510,	
+0.995586286421277780,	0.995590977709768230,	0.995595666509281330,	0.995600352819805190,	0.995605036641328270,	0.995609717973838790,	0.995614396817325000,	0.995619073171775120,	
+0.995623747037177600,	0.995628418413520680,	0.995633087300792700,	0.995637753698982110,	0.995642417608077150,	0.995647079028066040,	0.995651737958937240,	0.995656394400679100,	
+0.995661048353280060,	0.995665699816728260,	0.995670348791012350,	0.995674995276120470,	0.995679639272041170,	0.995684280778762810,	0.995688919796273610,	0.995693556324562130,	
+0.995698190363616840,	0.995702821913426070,	0.995707450973978170,	0.995712077545261700,	0.995716701627265110,	0.995721323219976640,	0.995725942323384960,	0.995730558937478310,	
+0.995735173062245350,	0.995739784697674430,	0.995744393843754020,	0.995749000500472770,	0.995753604667818930,	0.995758206345781050,	0.995762805534347590,	0.995767402233507240,	
+0.995771996443248320,	0.995776588163559410,	0.995781177394429060,	0.995785764135845740,	0.995790348387798010,	0.995794930150274430,	0.995799509423263560,	0.995804086206753870,	
+0.995808660500733910,	0.995813232305192360,	0.995817801620117680,	0.995822368445498650,	0.995826932781323610,	0.995831494627581250,	0.995836053984260120,	0.995840610851348780,	
+0.995845165228836040,	0.995849717116710330,	0.995854266514960340,	0.995858813423574740,	0.995863357842541990,	0.995867899771850970,	0.995872439211490050,	0.995876976161448100,	
+0.995881510621713820,	0.995886042592275640,	0.995890572073122480,	0.995895099064242780,	0.995899623565625340,	0.995904145577258810,	0.995908665099132010,	0.995913182131233480,	
+0.995917696673551900,	0.995922208726076290,	0.995926718288795090,	0.995931225361697090,	0.995935729944770980,	0.995940232038005520,	0.995944731641389520,	0.995949228754911650,	
+0.995953723378560810,	0.995958215512325660,	0.995962705156194890,	0.995967192310157400,	0.995971676974201970,	0.995976159148317270,	0.995980638832492220,	0.995985116026715470,	
+0.995989590730976040,	0.995994062945262710,	0.995998532669564060,	0.996002999903869090,	0.996007464648166700,	0.996011926902445670,	0.996016386666694680,	0.996020843940902840,	
+0.996025298725058960,	0.996029751019151700,	0.996034200823170070,	0.996038648137102970,	0.996043092960939290,	0.996047535294667830,	0.996051975138277480,	0.996056412491757250,	
+0.996060847355096150,	0.996065279728282740,	0.996069709611306140,	0.996074137004155260,	0.996078561906819090,	0.996082984319286550,	0.996087404241546400,	0.996091821673587900,	
+0.996096236615399810,	0.996100649066971160,	0.996105059028290720,	0.996109466499347730,	0.996113871480131090,	0.996118273970629800,	0.996122673970832760,	0.996127071480729210,	
+0.996131466500307820,	0.996135859029557810,	0.996140249068468100,	0.996144636617027790,	0.996149021675225900,	0.996153404243051430,	0.996157784320493400,	0.996162161907541140,	
+0.996166537004183230,	0.996170909610409110,	0.996175279726207670,	0.996179647351568050,	0.996184012486479250,	0.996188375130930500,	0.996192735284910810,	0.996197092948409190,	
+0.996201448121414980,	0.996205800803916960,	0.996210150995904600,	0.996214498697366780,	0.996218843908292740,	0.996223186628671600,	0.996227526858492580,	0.996231864597744600,	
+0.996236199846416980,	0.996240532604498960,	0.996244862871979550,	0.996249190648847870,	0.996253515935093370,	0.996257838730705060,	0.996262159035672170,	0.996266476849983820,	
+0.996270792173629240,	0.996275105006597770,	0.996279415348878540,	0.996283723200460660,	0.996288028561333580,	0.996292331431486430,	0.996296631810908440,	0.996300929699588830,	
+0.996305225097516840,	0.996309518004681930,	0.996313808421073090,	0.996318096346679780,	0.996322381781491240,	0.996326664725496910,	0.996330945178685700,	0.996335223141047170,	
+0.996339498612570650,	0.996343771593245280,	0.996348042083060600,	0.996352310082005750,	0.996356575590070070,	0.996360838607243120,	0.996365099133513900,	0.996369357168871980,	
+0.996373612713306710,	0.996377865766807420,	0.996382116329363350,	0.996386364400964060,	0.996390609981599010,	0.996394853071257190,	0.996399093669928400,	0.996403331777601760,	
+0.996407567394266840,	0.996411800519913070,	0.996416031154529700,	0.996420259298106290,	0.996424484950632290,	0.996428708112097050,	0.996432928782490010,	0.996437146961800630,	
+0.996441362650018370,	0.996445575847132780,	0.996449786553133210,	0.996453994768009220,	0.996458200491750160,	0.996462403724345690,	0.996466604465785170,	0.996470802716058040,	
+0.996474998475153970,	0.996479191743062430,	0.996483382519772980,	0.996487570805275060,	0.996491756599558130,	0.996495939902611760,	0.996500120714425620,	0.996504299034989160,	
+0.996508474864291950,	0.996512648202323660,	0.996516819049073630,	0.996520987404531660,	0.996525153268687070,	0.996529316641529660,	0.996533477523048990,	0.996537635913234630,	
+0.996541791812076140,	0.996545945219563190,	0.996550096135685460,	0.996554244560432400,	0.996558390493793690,	0.996562533935759000,	0.996566674886318120,	0.996570813345460380,	
+0.996574949313175700,	0.996579082789453620,	0.996583213774283940,	0.996587342267656110,	0.996591468269559910,	0.996595591779985130,	0.996599712798921230,	0.996603831326358210,	
+0.996607947362285530,	0.996612060906693080,	0.996616171959570310,	0.996620280520907230,	0.996624386590693410,	0.996628490168918630,	0.996632591255572580,	0.996636689850645130,	
+0.996640785954125860,	0.996644879566004780,	0.996648970686271340,	0.996653059314915550,	0.996657145451927070,	0.996661229097295820,	0.996665310251011350,	0.996669388913063670,	
+0.996673465083442570,	0.996677538762137830,	0.996681609949139240,	0.996685678644436580,	0.996689744848019640,	0.996693808559878440,	0.996697869780002740,	0.996701928508382240,	
+0.996705984745007050,	0.996710038489866830,	0.996714089742951610,	0.996718138504251060,	0.996722184773755180,	0.996726228551453870,	0.996730269837336920,	0.996734308631394340,	
+0.996738344933616130,	0.996742378743991850,	0.996746410062511750,	0.996750438889165590,	0.996754465223943290,	0.996758489066834840,	0.996762510417830150,	0.996766529276919220,	
+0.996770545644092070,	0.996774559519338470,	0.996778570902648430,	0.996782579794011970,	0.996786586193419090,	0.996790590100859690,	0.996794591516323880,	0.996798590439801570,	
+0.996802586871282760,	0.996806580810757570,	0.996810572258215900,	0.996814561213647750,	0.996818547677043140,	0.996822531648392300,	0.996826513127685000,	0.996830492114911590,	
+0.996834468610061750,	0.996838442613125930,	0.996842414124093800,	0.996846383142955820,	0.996850349669701760,	0.996854313704321870,	0.996858275246806260,	0.996862234297144930,	
+0.996866190855327900,	0.996870144921345510,	0.996874096495187770,	0.996878045576844670,	0.996881992166306570,	0.996885936263563480,	0.996889877868605500,	0.996893816981422880,	
+0.996897753602005720,	0.996901687730344150,	0.996905619366428300,	0.996909548510248490,	0.996913475161794740,	0.996917399321057270,	0.996921320988026440,	0.996925240162692240,	
+0.996929156845045020,	0.996933071035074780,	0.996936982732771870,	0.996940891938126520,	0.996944798651128950,	0.996948702871769510,	0.996952604600038210,	0.996956503835925380,	
+0.996960400579421260,	0.996964294830516180,	0.996968186589200390,	0.996972075855464100,	0.996975962629297660,	0.996979846910691300,	0.996983728699635250,	0.996987607996119960,	
+0.996991484800135660,	0.996995359111672590,	0.996999230930721180,	0.997003100257271570,	0.997006967091314310,	0.997010831432839750,	0.997014693281837890,	0.997018552638299420,	
+0.997022409502214550,	0.997026263873573630,	0.997030115752367110,	0.997033965138585220,	0.997037812032218530,	0.997041656433257260,	0.997045498341691760,	0.997049337757512590,	
+0.997053174680710090,	0.997057009111274590,	0.997060841049196570,	0.997064670494466570,	0.997068497447074820,	0.997072321907011780,	0.997076143874268020,	0.997079963348833860,	
+0.997083780330699780,	0.997087594819856200,	0.997091406816293710,	0.997095216320002750,	0.997099023330973670,	0.997102827849197020,	0.997106629874663360,	0.997110429407363050,	
+0.997114226447286760,	0.997118020994424810,	0.997121813048767790,	0.997125602610306360,	0.997129389679030860,	0.997133174254931980,	0.997136956338000040,	0.997140735928225720,	
+0.997144513025599590,	0.997148287630112210,	0.997152059741754030,	0.997155829360515830,	0.997159596486387970,	0.997163361119361100,	0.997167123259425800,	0.997170882906572740,	
+0.997174640060792480,	0.997178394722075590,	0.997182146890412850,	0.997185896565794590,	0.997189643748211620,	0.997193388437654590,	0.997197130634113970,	0.997200870337580650,	
+0.997204607548045070,	0.997208342265498040,	0.997212074489930210,	0.997215804221332050,	0.997219531459694440,	0.997223256205008070,	0.997226978457263490,	0.997230698216451380,	
+0.997234415482562640,	0.997238130255587830,	0.997241842535517730,	0.997245552322343020,	0.997249259616054370,	0.997252964416642680,	0.997256666724098410,	0.997260366538412660,	
+0.997264063859575890,	0.997267758687579000,	0.997271451022412660,	0.997275140864067770,	0.997278828212534880,	0.997282513067805020,	0.997286195429868960,	0.997289875298717270,	
+0.997293552674340940,	0.997297227556730780,	0.997300899945877560,	0.997304569841771960,	0.997308237244405090,	0.997311902153767530,	0.997315564569850270,	0.997319224492643990,	
+0.997322881922139800,	0.997326536858328390,	0.997330189301200540,	0.997333839250747260,	0.997337486706959320,	0.997341131669827740,	0.997344774139343300,	0.997348414115497020,	
+0.997352051598279670,	0.997355686587682140,	0.997359319083695350,	0.997362949086310290,	0.997366576595517970,	0.997370201611309070,	0.997373824133674700,	0.997377444162605760,	
+0.997381061698093370,	0.997384676740128210,	0.997388289288701270,	0.997391899343803680,	0.997395506905426330,	0.997399111973560240,	0.997402714548196400,	0.997406314629325720,	
+0.997409912216939310,	0.997413507311028070,	0.997417099911583000,	0.997420690018595240,	0.997424277632055770,	0.997427862751955610,	0.997431445378285760,	0.997435025511037470,	
+0.997438603150201390,	0.997442178295768870,	0.997445750947730910,	0.997449321106078650,	0.997452888770802960,	0.997456453941895080,	0.997460016619346130,	0.997463576803147120,	
+0.997467134493289160,	0.997470689689763380,	0.997474242392560770,	0.997477792601672690,	0.997481340317090020,	0.997484885538804100,	0.997488428266805950,	0.997491968501086680,	
+0.997495506241637520,	0.997499041488449590,	0.997502574241514010,	0.997506104500822000,	0.997509632266364800,	0.997513157538133520,	0.997516680316119290,	0.997520200600313430,	
+0.997523718390706970,	0.997527233687291350,	0.997530746490057460,	0.997534256798996880,	0.997537764614100490,	0.997541269935359850,	0.997544772762765990,	0.997548273096310220,	
+0.997551770935983680,	0.997555266281777710,	0.997558759133683640,	0.997562249491692700,	0.997565737355796010,	0.997569222725985140,	0.997572705602251200,	0.997576185984585420,	
+0.997579663872979140,	0.997583139267423700,	0.997586612167910450,	0.997590082574430710,	0.997593550486975730,	0.997597015905536950,	0.997600478830105500,	0.997603939260672920,	
+0.997607397197230460,	0.997610852639769560,	0.997614305588281460,	0.997617756042757710,	0.997621204003189540,	0.997624649469568300,	0.997628092441885440,	0.997631532920132290,	
+0.997634970904300420,	0.997638406394381060,	0.997641839390365770,	0.997645269892245780,	0.997648697900012760,	0.997652123413657830,	0.997655546433172670,	0.997658966958548610,	
+0.997662384989777110,	0.997665800526849720,	0.997669213569757800,	0.997672624118492890,	0.997676032173046350,	0.997679437733409720,	0.997682840799574590,	0.997686241371532280,	
+0.997689639449274360,	0.997693035032792390,	0.997696428122077820,	0.997699818717122210,	0.997703206817917020,	0.997706592424453810,	0.997709975536724140,	0.997713356154719460,	
+0.997716734278431440,	0.997720109907851650,	0.997723483042971430,	0.997726853683782670,	0.997730221830276710,	0.997733587482445230,	0.997736950640279670,	0.997740311303771830,	
+0.997743669472913150,	0.997747025147695310,	0.997750378328109980,	0.997753729014148720,	0.997757077205803090,	0.997760422903064660,	0.997763766105925320,	0.997767106814376530,	
+0.997770445028409950,	0.997773780748017150,	0.997777113973190130,	0.997780444703920130,	0.997783772940199150,	0.997787098682018650,	0.997790421929370400,	0.997793742682246190,	
+0.997797060940637580,	0.997800376704536250,	0.997803689973934090,	0.997807000748822670,	0.997810309029193650,	0.997813614815038940,	0.997816918106350200,	0.997820218903119120,	
+0.997823517205337570,	0.997826813012997250,	0.997830106326089820,	0.997833397144607170,	0.997836685468540980,	0.997839971297883040,	0.997843254632625240,	0.997846535472759260,	
+0.997849813818276980,	0.997853089669170190,	0.997856363025430680,	0.997859633887050120,	0.997862902254020630,	0.997866168126333890,	0.997869431503981660,	0.997872692386955860,	
+0.997875950775248380,	0.997879206668850880,	0.997882460067755490,	0.997885710971953890,	0.997888959381438070,	0.997892205296199820,	0.997895448716231040,	0.997898689641523730,	
+0.997901928072069680,	0.997905164007860780,	0.997908397448888930,	0.997911628395146130,	0.997914856846624180,	0.997918082803315180,	0.997921306265210920,	0.997924527232303400,	
+0.997927745704584650,	0.997930961682046420,	0.997934175164680860,	0.997937386152479840,	0.997940594645435270,	0.997943800643539380,	0.997947004146783830,	0.997950205155160860,	
+0.997953403668662360,	0.997956599687280340,	0.997959793211006920,	0.997962984239833870,	0.997966172773753430,	0.997969358812757500,	0.997972542356838300,	0.997975723405987610,	
+0.997978901960197670,	0.997982078019460480,	0.997985251583768160,	0.997988422653112610,	0.997991591227486040,	0.997994757306880480,	0.997997920891288030,	0.998001081980700810,	
+0.998004240575110830,	0.998007396674510330,	0.998010550278891300,	0.998013701388245860,	0.998016850002566120,	0.998019996121844330,	0.998023139746072600,	0.998026280875242920,	
+0.998029419509347650,	0.998032555648378780,	0.998035689292328440,	0.998038820441188970,	0.998041949094952360,	0.998045075253610970,	0.998048198917156900,	0.998051320085582280,	
+0.998054438758879450,	0.998057554937040400,	0.998060668620057490,	0.998063779807922940,	0.998066888500628970,	0.998069994698167710,	0.998073098400531490,	0.998076199607712540,	
+0.998079298319703100,	0.998082394536495390,	0.998085488258081740,	0.998088579484454290,	0.998091668215605470,	0.998094754451527510,	0.998097838192212540,	0.998100919437653000,	
+0.998103998187841230,	0.998107074442769360,	0.998110148202429940,	0.998113219466815080,	0.998116288235917140,	0.998119354509728550,	0.998122418288241550,	0.998125479571448480,	
+0.998128538359341790,	0.998131594651913590,	0.998134648449156560,	0.998137699751062810,	0.998140748557624910,	0.998143794868835090,	0.998146838684685790,	0.998149880005169350,	
+0.998152918830278240,	0.998155955160004880,	0.998158988994341520,	0.998162020333280830,	0.998165049176815030,	0.998168075524936580,	0.998171099377637930,	0.998174120734911520,	
+0.998177139596749920,	0.998180155963145350,	0.998183169834090500,	0.998186181209577580,	0.998189190089599390,	0.998192196474148140,	0.998195200363216300,	0.998198201756796630,	
+0.998201200654881270,	0.998204197057463110,	0.998207190964534250,	0.998210182376087610,	0.998213171292115400,	0.998216157712610300,	0.998219141637564760,	0.998222123066971450,	
+0.998225102000822820,	0.998228078439111320,	0.998231052381829740,	0.998234023828970530,	0.998236992780526240,	0.998239959236489450,	0.998242923196852710,	0.998245884661608680,	
+0.998248843630750060,	0.998251800104269170,	0.998254754082158910,	0.998257705564411730,	0.998260654551020310,	0.998263601041977200,	0.998266545037275080,	0.998269486536906610,	
+0.998272425540864480,	0.998275362049141250,	0.998278296061729580,	0.998281227578622250,	0.998284156599811730,	0.998287083125290910,	0.998290007155052340,	0.998292928689088810,	
+0.998295847727392880,	0.998298764269957340,	0.998301678316774970,	0.998304589867838430,	0.998307498923140300,	0.998310405482673470,	0.998313309546430610,	0.998316211114404490,	
+0.998319110186587810,	0.998322006762973450,	0.998324900843554080,	0.998327792428322370,	0.998330681517271110,	0.998333568110393310,	0.998336452207681520,	0.998339333809128540,	
+0.998342212914727250,	0.998345089524470540,	0.998347963638350990,	0.998350835256361590,	0.998353704378495130,	0.998356571004744290,	0.998359435135102060,	0.998362296769561340,	
+0.998365155908114810,	0.998368012550755470,	0.998370866697475990,	0.998373718348269380,	0.998376567503128420,	0.998379414162046120,	0.998382258325015260,	0.998385099992028740,	
+0.998387939163079550,	0.998390775838160380,	0.998393610017264340,	0.998396441700384330,	0.998399270887513120,	0.998402097578643840,	0.998404921773769160,	0.998407743472882300,	
+0.998410562675976050,	0.998413379383043420,	0.998416193594077290,	0.998419005309070680,	0.998421814528016590,	0.998424621250908030,	0.998427425477737770,	0.998430227208499050,	
+0.998433026443184770,	0.998435823181787920,	0.998438617424301400,	0.998441409170718440,	0.998444198421031940,	0.998446985175234890,	0.998449769433320420,	0.998452551195281530,	
+0.998455330461111350,	0.998458107230802750,	0.998460881504348860,	0.998463653281742800,	0.998466422562977570,	0.998469189348046290,	0.998471953636942080,	0.998474715429658040,	
+0.998477474726187090,	0.998480231526522540,	0.998482985830657420,	0.998485737638584720,	0.998488486950297790,	0.998491233765789630,	0.998493978085053360,	0.998496719908082090,	
+0.998499459234869160,	0.998502196065407470,	0.998504930399690350,	0.998507662237710810,	0.998510391579462200,	0.998513118424937620,	0.998515842774130190,	0.998518564627033140,	
+0.998521283983639710,	0.998524000843943100,	0.998526715207936450,	0.998529427075613100,	0.998532136446966030,	0.998534843321988720,	0.998537547700674380,	0.998540249583016020,	
+0.998542948969007080,	0.998545645858640810,	0.998548340251910420,	0.998551032148809140,	0.998553721549330200,	0.998556408453467160,	0.998559092861213030,	0.998561774772561030,	
+0.998564454187504720,	0.998567131106037230,	0.998569805528152000,	0.998572477453842140,	0.998575146883101120,	0.998577813815922260,	0.998580478252298900,	0.998583140192224270,	
+0.998585799635691830,	0.998588456582694910,	0.998591111033226730,	0.998593762987280860,	0.998596412444850650,	0.998599059405929300,	0.998601703870510390,	0.998604345838587150,	
+0.998606985310153130,	0.998609622285201560,	0.998612256763726000,	0.998614888745719690,	0.998617518231176280,	0.998620145220089020,	0.998622769712451450,	0.998625391708256930,	
+0.998628011207498890,	0.998630628210170790,	0.998633242716266190,	0.998635854725778430,	0.998638464238701170,	0.998641071255027660,	0.998643675774751440,	0.998646277797866080,	
+0.998648877324364910,	0.998651474354241620,	0.998654068887489750,	0.998656660924102660,	0.998659250464073890,	0.998661837507396900,	0.998664422054065470,	0.998667004104072830,	
+0.998669583657412760,	0.998672160714078830,	0.998674735274064360,	0.998677307337363150,	0.998679876903968640,	0.998682443973874400,	0.998685008547074090,	0.998687570623561170,	
+0.998690130203329420,	0.998692687286372280,	0.998695241872683550,	0.998697793962256550,	0.998700343555085190,	0.998702890651162910,	0.998705435250483390,	0.998707977353040290,	
+0.998710516958827290,	0.998713054067837950,	0.998715588680066050,	0.998718120795505150,	0.998720650414148920,	0.998723177535991050,	0.998725702161025300,	0.998728224289245240,	
+0.998730743920644650,	0.998733261055217200,	0.998735775692956570,	0.998738287833856540,	0.998740797477910780,	0.998743304625112960,	0.998745809275456970,	0.998748311428936390,	
+0.998750811085545090,	0.998753308245276750,	0.998755802908125050,	0.998758295074083980,	0.998760784743147110,	0.998763271915308230,	0.998765756590561220,	0.998768238768899860,	
+0.998770718450317840,	0.998773195634809040,	0.998775670322367250,	0.998778142512986360,	0.998780612206660030,	0.998783079403382180,	0.998785544103146570,	0.998788006305947220,	
+0.998790466011777790,	0.998792923220632180,	0.998795377932504280,	0.998797830147387990,	0.998800279865277090,	0.998802727086165460,	0.998805171810047020,	0.998807614036915650,	
+0.998810053766765350,	0.998812490999589800,	0.998814925735383110,	0.998817357974138950,	0.998819787715851560,	0.998822214960514600,	0.998824639708122080,	0.998827061958668110,	
+0.998829481712146360,	0.998831898968550960,	0.998834313727875790,	0.998836725990114860,	0.998839135755262060,	0.998841543023311410,	0.998843947794257000,	0.998846350068092750,	
+0.998848749844812530,	0.998851147124410370,	0.998853541906880470,	0.998855934192216630,	0.998858323980412970,	0.998860711271463590,	0.998863096065362390,	0.998865478362103380,	
+0.998867858161680780,	0.998870235464088490,	0.998872610269320500,	0.998874982577371170,	0.998877352388234270,	0.998879719701904030,	0.998882084518374460,	0.998884446837639770,	
+0.998886806659693870,	0.998889163984530980,	0.998891518812145110,	0.998893871142530590,	0.998896220975681200,	0.998898568311591410,	0.998900913150255200,	0.998903255491666700,	
+0.998905595335820020,	0.998907932682709390,	0.998910267532328810,	0.998912599884672740,	0.998914929739735060,	0.998917257097510000,	0.998919581957991910,	0.998921904321174890,	
+0.998924224187053070,	0.998926541555620660,	0.998928856426871900,	0.998931168800801020,	0.998933478677402120,	0.998935786056669660,	0.998938090938597760,	0.998940393323180520,	
+0.998942693210412290,	0.998944990600287410,	0.998947285492799990,	0.998949577887944360,	0.998951867785714880,	0.998954155186105640,	0.998956440089111110,	0.998958722494725390,	
+0.998961002402942830,	0.998963279813757770,	0.998965554727164640,	0.998967827143157460,	0.998970097061730790,	0.998972364482878960,	0.998974629406596090,	0.998976891832876750,	
+0.998979151761715150,	0.998981409193105630,	0.998983664127042540,	0.998985916563520430,	0.998988166502533410,	0.998990413944076060,	0.998992658888142590,	0.998994901334727570,	
+0.998997141283825220,	0.998999378735429990,	0.999001613689536440,	0.999003846146138690,	0.999006076105231510,	0.999008303566809030,	0.999010528530865800,	0.999012750997396280,	
+0.999014970966394800,	0.999017188437856030,	0.999019403411774200,	0.999021615888143870,	0.999023825866959480,	0.999026033348215600,	0.999028238331906570,	0.999030440818026940,	
+0.999032640806571280,	0.999034838297533920,	0.999037033290909540,	0.999039225786692580,	0.999041415784877480,	0.999043603285458940,	0.999045788288431270,	0.999047970793789260,	
+0.999050150801527260,	0.999052328311639930,	0.999054503324121710,	0.999056675838967290,	0.999058845856171110,	0.999061013375727840,	0.999063178397632030,	0.999065340921878380,	
+0.999067500948461310,	0.999069658477375390,	0.999071813508615400,	0.999073966042176020,	0.999076116078051580,	0.999078263616236860,	0.999080408656726430,	0.999082551199515060,	
+0.999084691244597310,	0.999086828791967750,	0.999088963841621270,	0.999091096393552200,	0.999093226447755560,	0.999095354004225670,	0.999097479062957540,	0.999099601623945620,	
+0.999101721687184810,	0.999103839252669660,	0.999105954320394840,	0.999108066890355250,	0.999110176962545340,	0.999112284536960100,	0.999114389613594110,	0.999116492192442140,	
+0.999118592273498970,	0.999120689856759390,	0.999122784942217960,	0.999124877529869560,	0.999126967619709090,	0.999129055211731120,	0.999131140305930530,	0.999133222902302000,	
+0.999135303000840520,	0.999137380601540780,	0.999139455704397550,	0.999141528309405720,	0.999143598416560090,	0.999145666025855420,	0.999147731137286500,	0.999149793750848340,	
+0.999151853866535710,	0.999153911484343520,	0.999155966604266420,	0.999158019226299430,	0.999160069350437440,	0.999162116976675230,	0.999164162105007800,	0.999166204735429830,	
+0.999168244867936540,	0.999170282502522490,	0.999172317639182790,	0.999174350277912240,	0.999176380418705820,	0.999178408061558550,	0.999180433206465100,	0.999182455853420690,	
+0.999184476002420220,	0.999186493653458350,	0.999188508806530430,	0.999190521461631120,	0.999192531618755540,	0.999194539277898590,	0.999196544439055370,	0.999198547102220780,	
+0.999200547267389830,	0.999202544934557510,	0.999204540103718730,	0.999206532774868710,	0.999208522948002330,	0.999210510623114610,	0.999212495800200660,	0.999214478479255490,	
+0.999216458660273980,	0.999218436343251470,	0.999220411528182860,	0.999222384215063150,	0.999224354403887460,	0.999226322094651010,	0.999228287287348690,	0.999230249981975630,	
+0.999232210178526930,	0.999234167876997810,	0.999236123077383190,	0.999238075779678270,	0.999240025983878180,	0.999241973689978020,	0.999243918897972930,	0.999245861607858000,	
+0.999247801819628470,	0.999249739533279340,	0.999251674748805940,	0.999253607466203400,	0.999255537685466710,	0.999257465406591330,	0.999259390629572250,	0.999261313354404600,	
+0.999263233581083710,	0.999265151309604800,	0.999267066539962890,	0.999268979272153410,	0.999270889506171490,	0.999272797242012350,	0.999274702479671210,	0.999276605219143190,	
+0.999278505460423850,	0.999280403203508080,	0.999282298448391450,	0.999284191195068950,	0.999286081443536030,	0.999287969193787930,	0.999289854445819860,	0.999291737199627160,	
+0.999293617455205170,	0.999295495212549010,	0.999297370471654230,	0.999299243232515950,	0.999301113495129620,	0.999302981259490570,	0.999304846525593930,	0.999306709293435240,	
+0.999308569563009730,	0.999310427334312860,	0.999312282607339950,	0.999314135382086240,	0.999315985658547290,	0.999317833436718320,	0.999319678716594770,	0.999321521498171990,	
+0.999323361781445430,	0.999325199566410530,	0.999327034853062510,	0.999328867641396950,	0.999330697931409270,	0.999332525723094830,	0.999334351016449070,	0.999336173811467440,	
+0.999337994108145390,	0.999339811906478250,	0.999341627206461690,	0.999343440008091060,	0.999345250311361790,	0.999347058116269450,	0.999348863422809370,	0.999350666230977240,	
+0.999352466540768370,	0.999354264352178330,	0.999356059665202580,	0.999357852479836880,	0.999359642796076360,	0.999361430613916800,	0.999363215933353640,	0.999364998754382450,	
+0.999366779076998780,	0.999368556901198190,	0.999370332226976130,	0.999372105054328390,	0.999373875383250180,	0.999375643213737400,	0.999377408545785490,	0.999379171379390140,	
+0.999380931714546780,	0.999382689551251090,	0.999384444889498620,	0.999386197729285160,	0.999387948070606160,	0.999389695913457280,	0.999391441257834190,	0.999393184103732460,	
+0.999394924451147750,	0.999396662300075730,	0.999398397650512080,	0.999400130502452470,	0.999401860855892550,	0.999403588710827910,	0.999405314067254300,	0.999407036925167410,	
+0.999408757284563020,	0.999410475145436570,	0.999412190507784070,	0.999413903371601080,	0.999415613736883260,	0.999417321603626510,	0.999419026971826390,	0.999420729841478670,	
+0.999422430212579150,	0.999424128085123600,	0.999425823459107690,	0.999427516334527200,	0.999429206711378030,	0.999430894589655730,	0.999432579969356190,	0.999434262850475210,	
+0.999435943233008660,	0.999437621116952220,	0.999439296502301680,	0.999440969389052910,	0.999442639777201710,	0.999444307666743970,	0.999445973057675460,	0.999447635949991970,	
+0.999449296343689400,	0.999450954238763620,	0.999452609635210320,	0.999454262533025610,	0.999455912932205260,	0.999457560832745060,	0.999459206234641020,	0.999460849137889020,	
+0.999462489542484840,	0.999464127448424390,	0.999465762855703650,	0.999467395764318530,	0.999469026174264810,	0.999470654085538700,	0.999472279498135770,	0.999473902412052250,	
+0.999475522827284020,	0.999477140743826990,	0.999478756161677030,	0.999480369080830160,	0.999481979501282370,	0.999483587423029670,	0.999485192846067960,	0.999486795770393340,	
+0.999488396196001720,	0.999489994122889080,	0.999491589551051440,	0.999493182480484910,	0.999494772911185380,	0.999496360843148860,	0.999497946276371450,	0.999499529210849280,	
+0.999501109646578230,	0.999502687583554320,	0.999504263021773750,	0.999505835961232550,	0.999507406401926700,	0.999508974343852440,	0.999510539787005660,	0.999512102731382580,	
+0.999513663176979210,	0.999515221123791650,	0.999516776571816150,	0.999518329521048580,	0.999519879971485280,	0.999521427923122260,	0.999522973375955640,	0.999524516329981630,	
+0.999526056785196240,	0.999527594741595800,	0.999529130199176330,	0.999530663157934040,	0.999532193617865160,	0.999533721578965690,	0.999535247041231980,	0.999536770004660120,	
+0.999538290469246360,	0.999539808434986910,	0.999541323901877890,	0.999542836869915520,	0.999544347339096140,	0.999545855309415860,	0.999547360780870920,	0.999548863753457640,	
+0.999550364227172140,	0.999551862202010750,	0.999553357677969710,	0.999554850655045240,	0.999556341133233660,	0.999557829112531330,	0.999559314592934340,	0.999560797574439050,	
+0.999562278057041790,	0.999563756040738770,	0.999565231525526450,	0.999566704511401060,	0.999568174998358820,	0.999569642986396170,	0.999571108475509450,	0.999572571465695000,	
+0.999574031956949050,	0.999575489949268040,	0.999576945442648300,	0.999578398437086180,	0.999579848932578120,	0.999581296929120340,	0.999582742426709410,	0.999584185425341550,	
+0.999585625925013320,	0.999587063925720940,	0.999588499427460970,	0.999589932430229760,	0.999591362934023620,	0.999592790938839130,	0.999594216444672720,	0.999595639451520630,	
+0.999597059959379530,	0.999598477968245860,	0.999599893478115840,	0.999601306488986150,	0.999602717000853240,	0.999604125013713540,	0.999605530527563510,	0.999606933542399600,	
+0.999608334058218360,	0.999609732075016360,	0.999611127592789920,	0.999612520611535830,	0.999613911131250310,	0.999615299151930040,	0.999616684673571450,	0.999618067696171230,	
+0.999619448219725930,	0.999620826244231870,	0.999622201769685750,	0.999623574796084210,	0.999624945323423720,	0.999626313351700820,	0.999627678880912090,	0.999629041911054280,	
+0.999630402442123760,	0.999631760474117280,	0.999633116007031420,	0.999634469040862840,	0.999635819575607990,	0.999637167611263530,	0.999638513147826260,	0.999639856185292610,	
+0.999641196723659480,	0.999642534762923200,	0.999643870303080660,	0.999645203344128430,	0.999646533886063170,	0.999647861928881660,	0.999649187472580360,	0.999650510517156250,	
+0.999651831062605690,	0.999653149108925660,	0.999654464656112740,	0.999655777704163690,	0.999657088253075200,	0.999658396302843920,	0.999659701853466750,	0.999661004904940250,	
+0.999662305457261200,	0.999663603510426490,	0.999664899064432680,	0.999666192119276650,	0.999667482674955200,	0.999668770731464980,	0.999670056288802790,	0.999671339346965500,	
+0.999672619905949910,	0.999673897965752790,	0.999675173526370920,	0.999676446587800970,	0.999677717150040060,	0.999678985213084850,	0.999680250776932120,	0.999681513841578770,	
+0.999682774407021580,	0.999684032473257540,	0.999685288040283450,	0.999686541108096070,	0.999687791676692310,	0.999689039746069150,	0.999690285316223390,	0.999691528387151810,	
+0.999692768958851510,	0.999694007031319280,	0.999695242604552000,	0.999696475678546690,	0.999697706253300120,	0.999698934328809300,	0.999700159905071110,	0.999701382982082550,	
+0.999702603559840530,	0.999703821638342040,	0.999705037217583970,	0.999706250297563210,	0.999707460878277000,	0.999708668959721990,	0.999709874541895420,	0.999711077624794050,	
+0.999712278208415130,	0.999713476292755420,	0.999714671877812040,	0.999715864963582000,	0.999717055550062180,	0.999718243637249810,	0.999719429225141900,	0.999720612313735320,	
+0.999721792903027320,	0.999722970993014770,	0.999724146583694680,	0.999725319675064390,	0.999726490267120680,	0.999727658359860880,	0.999728823953281890,	0.999729987047380810,	
+0.999731147642154760,	0.999732305737600860,	0.999733461333716100,	0.999734614430497830,	0.999735765027942920,	0.999736913126048620,	0.999738058724812140,	0.999739201824230370,	
+0.999740342424300650,	0.999741480525020100,	0.999742616126385820,	0.999743749228395040,	0.999744879831044870,	0.999746007934332440,	0.999747133538255060,	0.999748256642809860,	
+0.999749377247993950,	0.999750495353804670,	0.999751610960239120,	0.999752724067294540,	0.999753834674968140,	0.999754942783257160,	0.999756048392158920,	0.999757151501670440,	
+0.999758252111789040,	0.999759350222512170,	0.999760445833836830,	0.999761538945760360,	0.999762629558279990,	0.999763717671393160,	0.999764803285096980,	0.999765886399388900,	
+0.999766967014265930,	0.999768045129725610,	0.999769120745765290,	0.999770193862381970,	0.999771264479573320,	0.999772332597336440,	0.999773398215668800,	0.999774461334567600,	
+0.999775521954030300,	0.999776580074054120,	0.999777635694636510,	0.999778688815774810,	0.999779739437466450,	0.999780787559708670,	0.999781833182498910,	0.999782876305834620,	
+0.999783916929713130,	0.999784955054131900,	0.999785990679088240,	0.999787023804579510,	0.999788054430603370,	0.999789082557157040,	0.999790108184237970,	0.999791131311843610,	
+0.999792151939971510,	0.999793170068619010,	0.999794185697783560,	0.999795198827462590,	0.999796209457653680,	0.999797217588354270,	0.999798223219561800,	0.999799226351273720,	
+0.999800226983487580,	0.999801225116200950,	0.999802220749411270,	0.999803213883115990,	0.999804204517312670,	0.999805192651998850,	0.999806178287172000,	0.999807161422829770,	
+0.999808142058969620,	0.999809120195589100,	0.999810095832685760,	0.999811068970257290,	0.999812039608301010,	0.999813007746814700,	0.999813973385795920,	0.999814936525242120,	
+0.999815897165150960,	0.999816855305520110,	0.999817810946347140,	0.999818764087629600,	0.999819714729365150,	0.999820662871551470,	0.999821608514186110,	0.999822551657266740,	
+0.999823492300790930,	0.999824430444756440,	0.999825366089160840,	0.999826299234001900,	0.999827229879277190,	0.999828158024984370,	0.999829083671121110,	0.999830006817685190,	
+0.999830927464674280,	0.999831845612086050,	0.999832761259918160,	0.999833674408168390,	0.999834585056834420,	0.999835493205914030,	0.999836398855404870,	0.999837302005304740,	
+0.999838202655611300,	0.999839100806322430,	0.999839996457435820,	0.999840889608949120,	0.999841780260860240,	0.999842668413166940,	0.999843554065866890,	0.999844437218958100,	
+0.999845317872438130,	0.999846196026304870,	0.999847071680556090,	0.999847944835189680,	0.999848815490203320,	0.999849683645595010,	0.999850549301362520,	0.999851412457503530,	
+0.999852273114016140,	0.999853131270898030,	0.999853986928147090,	0.999854840085761200,	0.999855690743738150,	0.999856538902075930,	0.999857384560772330,	0.999858227719825240,	
+0.999859068379232660,	0.999859906538992370,	0.999860742199102260,	0.999861575359560330,	0.999862406020364470,	0.999863234181512680,	0.999864059843002640,	0.999864883004832560,	
+0.999865703667000340,	0.999866521829503750,	0.999867337492340910,	0.999868150655509600,	0.999868961319008040,	0.999869769482834010,	0.999870575146985630,	0.999871378311460780,	
+0.999872178976257460,	0.999872977141373800,	0.999873772806807560,	0.999874565972556970,	0.999875356638619930,	0.999876144804994540,	0.999876930471678690,	0.999877713638670620,	
+0.999878494305968200,	0.999879272473569560,	0.999880048141472800,	0.999880821309675820,	0.999881591978176830,	0.999882360146973960,	0.999883125816065090,	0.999883888985448440,	
+0.999884649655122030,	0.999885407825083950,	0.999886163495332440,	0.999886916665865490,	0.999887667336681220,	0.999888415507777850,	0.999889161179153390,	0.999889904350806050,	
+0.999890645022733950,	0.999891383194935200,	0.999892118867408030,	0.999892852040150550,	0.999893582713160980,	0.999894310886437430,	0.999895036559978020,	0.999895759733781090,	
+0.999896480407844850,	0.999897198582167300,	0.999897914256746790,	0.999898627431581420,	0.999899338106669530,	0.999900046282009350,	0.999900751957598980,	0.999901455133436760,	
+0.999902155809520910,	0.999902853985849660,	0.999903549662421340,	0.999904242839234070,	0.999904933516286180,	0.999905621693576000,	0.999906307371101750,	0.999906990548861780,	
+0.999907671226854310,	0.999908349405077670,	0.999909025083530080,	0.999909698262209990,	0.999910368941115620,	0.999911037120245430,	0.999911702799597510,	0.999912365979170440,	
+0.999913026658962420,	0.999913684838971810,	0.999914340519197030,	0.999914993699636320,	0.999915644380288130,	0.999916292561150890,	0.999916938242222940,	0.999917581423502620,	
+0.999918222104988370,	0.999918860286678530,	0.999919495968571550,	0.999920129150665750,	0.999920759832959800,	0.999921388015451830,	0.999922013698140380,	0.999922636881023900,	
+0.999923257564100940,	0.999923875747369740,	0.999924491430828840,	0.999925104614476700,	0.999925715298311870,	0.999926323482332680,	0.999926929166537800,	0.999927532350925460,	
+0.999928133035494330,	0.999928731220242950,	0.999929326905169670,	0.999929920090273040,	0.999930510775551620,	0.999931098961003960,	0.999931684646628630,	0.999932267832423950,	
+0.999932848518388710,	0.999933426704521230,	0.999934002390820310,	0.999934575577284270,	0.999935146263911890,	0.999935714450701620,	0.999936280137652010,	0.999936843324761740,	
+0.999937404012029350,	0.999937962199453520,	0.999938517887032700,	0.999939071074765650,	0.999939621762650830,	0.999940169950687020,	0.999940715638872770,	0.999941258827206750,	
+0.999941799515687510,	0.999942337704313840,	0.999942873393084410,	0.999943406581997650,	0.999943937271052460,	0.999944465460247400,	0.999944991149581130,	0.999945514339052430,	
+0.999946035028659970,	0.999946553218402310,	0.999947068908278450,	0.999947582098286820,	0.999948092788426220,	0.999948600978695420,	0.999949106669093090,	0.999949609859618000,	
+0.999950110550268830,	0.999950608741044470,	0.999951104431943570,	0.999951597622964930,	0.999952088314107200,	0.999952576505369390,	0.999953062196750060,	0.999953545388248100,	
+0.999954026079862280,	0.999954504271591380,	0.999954979963434190,	0.999955453155389580,	0.999955923847456350,	0.999956392039633270,	0.999956857731919220,	0.999957320924313000,	
+0.999957781616813590,	0.999958239809419670,	0.999958695502130120,	0.999959148694943840,	0.999959599387859720,	0.999960047580876530,	0.999960493273993280,	0.999960936467208740,	
+0.999961377160521910,	0.999961815353931690,	0.999962251047436860,	0.999962684241036400,	0.999963114934729220,	0.999963543128514320,	0.999963968822390580,	0.999964392016356780,	
+0.999964812710412150,	0.999965230904555470,	0.999965646598785620,	0.999966059793101710,	0.999966470487502650,	0.999966878681987410,	0.999967284376554910,	0.999967687571204240,	
+0.999968088265934420,	0.999968486460744320,	0.999968882155633070,	0.999969275350599540,	0.999969666045642860,	0.999970054240762020,	0.999970439935956020,	0.999970823131223870,	
+0.999971203826564680,	0.999971582021977560,	0.999971957717461500,	0.999972330913015410,	0.999972701608638600,	0.999973069804329980,	0.999973435500088770,	0.999973798695913850,	
+0.999974159391804560,	0.999974517587759790,	0.999974873283778760,	0.999975226479860590,	0.999975577176004270,	0.999975925372209030,	0.999976271068473980,	0.999976614264798220,	
+0.999976954961181000,	0.999977293157621410,	0.999977628854118450,	0.999977962050671580,	0.999978292747279670,	0.999978620943942080,	0.999978946640658010,	0.999979269837426470,	
+0.999979590534246790,	0.999979908731118080,	0.999980224428039690,	0.999980537625010710,	0.999980848322030380,	0.999981156519097910,	0.999981462216212650,	0.999981765413373580,	
+0.999982066110580270,	0.999982364307831610,	0.999982660005127140,	0.999982953202466000,	0.999983243899847500,	0.999983532097270870,	0.999983817794735440,	0.999984100992240440,	
+0.999984381689785210,	0.999984659887369070,	0.999984935584991130,	0.999985208782650960,	0.999985479480347770,	0.999985747678080910,	0.999986013375849580,	0.999986276573653240,	
+0.999986537271491230,	0.999986795469362980,	0.999987051167267600,	0.999987304365204670,	0.999987555063173380,	0.999987803261173310,	0.999988048959203680,	0.999988292157263920,	
+0.999988532855353500,	0.999988771053471730,	0.999989006751617950,	0.999989239949791720,	0.999989470647992370,	0.999989698846219350,	0.999989924544472110,	0.999990147742750080,	
+0.999990368441052600,	0.999990586639379230,	0.999990802337729410,	0.999991015536102590,	0.999991226234498210,	0.999991434432915720,	0.999991640131354780,	0.999991843329814610,	
+0.999992044028294890,	0.999992242226795060,	0.999992437925314560,	0.999992631123853060,	0.999992821822409890,	0.999993010020984730,	0.999993195719577120,	0.999993378918186400,	
+0.999993559616812240,	0.999993737815454200,	0.999993913514111820,	0.999994086712784670,	0.999994257411472300,	0.999994425610174260,	0.999994591308890230,	0.999994754507619650,	
+0.999994915206362190,	0.999995073405117510,	0.999995229103885050,	0.999995382302664600,	0.999995533001455610,	0.999995681200257840,	0.999995826899070850,	0.999995970097894320,	
+0.999996110796727900,	0.999996248995571160,	0.999996384694423760,	0.999996517893285470,	0.999996648592155870,	0.999996776791034600,	0.999996902489921460,	0.999997025688815990,	
+0.999997146387717970,	0.999997264586627080,	0.999997380285543080,	0.999997493484465540,	0.999997604183394340,	0.999997712382329150,	0.999997818081269640,	0.999997921280215580,	
+0.999998021979166760,	0.999998120178122840,	0.999998215877083600,	0.999998309076048920,	0.999998399775018370,	0.999998487973991820,	0.999998573672969180,	0.999998656871950000,	
+0.999998737570934160,	0.999998815769921560,	0.999998891468911850,	0.999998964667904940,	0.999999035366900600,	0.999999103565898610,	0.999999169264898960,	0.999999232463901320,	
+0.999999293162905700,	0.999999351361911760,	0.999999407060919500,	0.999999460259928700,	0.999999510958939240,	0.999999559157951020,	0.999999604856963820,	0.999999648055977740,	
+0.999999688754992460,	0.999999726954007960,	0.999999762653024150,	0.999999795852040910,	0.999999826551058240,	0.999999854750076020,	0.999999880449094050,	0.999999903648112530,	
+0.999999924347131140,	0.999999942546149990,	0.999999958245168960,	0.999999971444187950,	0.999999982143207180,	0.999999990342226310,	0.999999996041245560,	0.999999999240264840,	
+0.999999999939284010,	0.999999998138303310,	0.999999993837322520,	0.999999987036341740,	0.999999977735361090,	0.999999965934380450,	0.999999951633399830,	0.999999934832419330,	
+0.999999915531439080,	0.999999893730459060,	0.999999869429479270,	0.999999842628499720,	0.999999813327520640,	0.999999781526542010,	0.999999747225563950,	0.999999710424586570,	
+0.999999671123609770,	0.999999629322633980,	0.999999585021658980,	0.999999538220684990,	0.999999488919712240,	0.999999437118740730,	0.999999382817770680,	0.999999326016802190,	
+0.999999266715835280,	0.999999204914870270,	0.999999140613907270,	0.999999073812946390,	0.999999004511987750,	0.999998932711031690,	0.999998858410078300,	0.999998781609127700,	
+0.999998702308180220,	0.999998620507235980,	0.999998536206295090,	0.999998449405357980,	0.999998360104424670,	0.999998268303495470,	0.999998174002570630,	0.999998077201650350,	
+0.999997977900734860,	0.999997876099824490,	0.999997771798919350,	0.999997664998019790,	0.999997555697126120,	0.999997443896238570,	0.999997329595357360,	0.999997212794482840,	
+0.999997093493615210,	0.999996971692754920,	0.999996847391902310,	0.999996720591057380,	0.999996591290220780,	0.999996459489392640,	0.999996325188573400,	0.999996188387763390,	
+0.999996049086962820,	0.999995907286172160,	0.999995762985391720,	0.999995616184621850,	0.999995466883862980,	0.999995315083115450,	0.999995160782379600,	0.999995003981655860,	
+0.999994844680944570,	0.999994682880246290,	0.999994518579561230,	0.999994351778889850,	0.999994182478232570,	0.999994010677589860,	0.999993836376962150,	0.999993659576349890,	
+0.999993480275753410,	0.999993298475173260,	0.999993114174609790,	0.999992927374063640,	0.999992738073535170,	0.999992546273024810,	0.999992351972533110,	0.999992155172060530,	
+0.999991955871607500,	0.999991754071174580,	0.999991549770762320,	0.999991342970371180,	0.999991133670001700,	0.999990921869654440,	0.999990707569329840,	0.999990490769028350,	
+0.999990271468750750,	0.999990049668497470,	0.999989825368269080,	0.999989598568066020,	0.999989369267889060,	0.999989137467738650,	0.999988903167615460,	0.999988666367519930,	
+0.999988427067452720,	0.999988185267414510,	0.999987940967405840,	0.999987694167427280,	0.999987444867479480,	0.999987193067563120,	0.999986938767678750,	0.999986681967826920,	
+0.999986422668008520,	0.999986160868224010,	0.999985896568474140,	0.999985629768759490,	0.999985360469080820,	0.999985088669438690,	0.999984814369833890,	0.999984537570267060,	
+0.999984258270738780,	0.999983976471249920,	0.999983692171801160,	0.999983405372393160,	0.999983116073026590,	0.999982824273702330,	0.999982529974420940,	0.999982233175183200,	
+0.999981933875989880,	0.999981632076841760,	0.999981327777739630,	0.999981020978684020,	0.999980711679675950,	0.999980399880716190,	0.999980085581805290,	0.999979768782944260,	
+0.999979449484133750,	0.999979127685374560,	0.999978803386667670,	0.999978476588013750,	0.999978147289413590,	0.999977815490868170,	0.999977481192378060,	0.999977144393944360,	
+0.999976805095567740,	0.999976463297249100,	0.999976118998989420,	0.999975772200789260,	0.999975422902649850,	0.999975071104571730,	0.999974716806556030,	0.999974360008603510,	
+0.999974000710715070,	0.999973638912891700,	0.999973274615134190,	0.999972907817443410,	0.999972538519820490,	0.999972166722266190,	0.999971792424781400,	0.999971415627367240,	
+0.999971036330024490,	0.999970654532754130,	0.999970270235557180,	0.999969883438434510,	0.999969494141387140,	0.999969102344416050,	0.999968708047522140,	0.999968311250706510,	
+0.999967911953970170,	0.999967510157314000,	0.999967105860739000,	0.999966699064246290,	0.999966289767836860,	0.999965877971511600,	0.999965463675271730,	0.999965046879118250,	
+0.999964627583052050,	0.999964205787074350,	0.999963781491186030,	0.999963354695388440,	0.999962925399682350,	0.999962493604068970,	0.999962059308549310,	0.999961622513124480,	
+0.999961183217795700,	0.999960741422563860,	0.999960297127430290,	0.999959850332395870,	0.999959401037461840,	0.999958949242629290,	0.999958494947899460,	0.999958038153273330,	
+0.999957578858752140,	0.999957117064336990,	0.999956652770028990,	0.999956185975829470,	0.999955716681739330,	0.999955244887760000,	0.999954770593892590,	0.999954293800138230,	
+0.999953814506498120,	0.999953332712973490,	0.999952848419565440,	0.999952361626275320,	0.999951872333104340,	0.999951380540053610,	0.999950886247124470,	0.999950389454318130,	
+0.999949890161635820,	0.999949388369078760,	0.999948884076648280,	0.999948377284345600,	0.999947867992171830,	0.999947356200128530,	0.999946841908216810,	0.999946325116438000,	
+0.999945805824793310,	0.999945284033284200,	0.999944759741911770,	0.999944232950677580,	0.999943703659582630,	0.999943171868628580,	0.999942637577816540,	0.999942100787147850,	
+0.999941561496624050,	0.999941019706246270,	0.999940475416015940,	0.999939928625934390,	0.999939379336002960,	0.999938827546223210,	0.999938273256596340,	0.999937716467123820,	
+0.999937157177806960,	0.999936595388647210,	0.999936031099646020,	0.999935464310804710,	0.999934895022124850,	0.999934323233607650,	0.999933748945254660,	0.999933172157067230,	
+0.999932592869046900,	0.999932011081195120,	0.999931426793513320,	0.999930840006002960,	0.999930250718665480,	0.999929658931502430,	0.999929064644515140,	0.999928467857705280,	
+0.999927868571074190,	0.999927266784623400,	0.999926662498354490,	0.999926055712268890,	0.999925446426368270,	0.999924834640653960,	0.999924220355127510,	0.999923603569790490,	
+0.999922984284644540,	0.999922362499691130,	0.999921738214931800,	0.999921111430368100,	0.999920482146001710,	0.999919850361833950,	0.999919216077866710,	0.999918579294101440,	
+0.999917940010539570,	0.999917298227183000,	0.999916653944033060,	0.999916007161091640,	0.999915357878360060,	0.999914706095840210,	0.999914051813533540,	0.999913395031441720,	
+0.999912735749566410,	0.999912073967909270,	0.999911409686471960,	0.999910742905256060,	0.999910073624263430,	0.999909401843495530,	0.999908727562954120,	0.999908050782640890,	
+0.999907371502557600,	0.999906689722705800,	0.999906005443087280,	0.999905318663703800,	0.999904629384557040,	0.999903937605648660,	0.999903243326980440,	0.999902546548554150,	
+0.999901847270371460,	0.999901145492434140,	0.999900441214743970,	0.999899734437302730,	0.999899025160112090,	0.999898313383173920,	0.999897599106490010,	0.999896882330062020,	
+0.999896163053891950,	0.999895441277981360,	0.999894717002332230,	0.999893990226946250,	0.999893260951825290,	0.999892529176971250,	0.999891794902385780,	0.999891058128070890,	
+0.999890318854028350,	0.999889577080260050,	0.999888832806767770,	0.999888086033553390,	0.999887336760618920,	0.999886584987966010,	0.999885830715596560,	0.999885073943512670,	
+0.999884314671716010,	0.999883552900208580,	0.999882788628992270,	0.999882021858069070,	0.999881252587440650,	0.999880480817109230,	0.999879706547076590,	0.999878929777344600,	
+0.999878150507915400,	0.999877368738790740,	0.999876584469972740,	0.999875797701463180,	0.999875008433264270,	0.999874216665377680,	0.999873422397805630,	0.999872625630550020,	
+0.999871826363612830,	0.999871024596996060,	0.999870220330701830,	0.999869413564731910,	0.999868604299088530,	0.999867792533773670,	0.999866978268789230,	0.999866161504137430,	
+0.999865342239820270,	0.999864520475839620,	0.999863696212197730,	0.999862869448896570,	0.999862040185938270,	0.999861208423324930,	0.999860374161058550,	0.999859537399141130,	
+0.999858698137575000,	0.999857856376362040,	0.999857012115504480,	0.999856165355004320,	0.999855316094863780,	0.999854464335084960,	0.999853610075669970,	0.999852753316621050,	
+0.999851894057940170,	0.999851032299629460,	0.999850168041691360,	0.999849301284127740,	0.999848432026940850,	0.999847560270132880,	0.999846686013705970,	0.999845809257662420,	
+0.999844930002004360,	0.999844048246734010,	0.999843163991853470,	0.999842277237364960,	0.999841387983270820,	0.999840496229573270,	0.999839601976274420,	0.999838705223376590,	
+0.999837805970882010,	0.999836904218792790,	0.999835999967111480,	0.999835093215840080,	0.999834183964980920,	0.999833272214536330,	0.999832357964508640,	0.999831441214899970,	
+0.999830521965712760,	0.999829600216949220,	0.999828675968611580,	0.999827749220702390,	0.999826819973223760,	0.999825888226178020,	0.999824953979567720,	0.999824017233394870,	
+0.999823077987662120,	0.999822136242371600,	0.999821191997525730,	0.999820245253126960,	0.999819296009177520,	0.999818344265679840,	0.999817390022636250,	0.999816433280049210,	
+0.999815474037921150,	0.999814512296254400,	0.999813548055051290,	0.999812581314314390,	0.999811612074046010,	0.999810640334248600,	0.999809666094924500,	0.999808689356076360,	
+0.999807710117706420,	0.999806728379817320,	0.999805744142411300,	0.999804757405490910,	0.999803768169058690,	0.999802776433116990,	0.999801782197668350,	0.999800785462715340,	
+0.999799786228260270,	0.999798784494305810,	0.999797780260854310,	0.999796773527908410,	0.999795764295470570,	0.999794752563543330,	0.999793738332129260,	0.999792721601230780,	
+0.999791702370850470,	0.999790680640990970,	0.999789656411654740,	0.999788629682844320,	0.999787600454562390,	0.999786568726811380,	0.999785534499594060,	0.999784497772912890,	
+0.999783458546770420,	0.999782416821169310,	0.999781372596112110,	0.999780325871601590,	0.999779276647640210,	0.999778224924230630,	0.999777170701375510,	0.999776113979077400,	
+0.999775054757339080,	0.999773993036163100,	0.999772928815552130,	0.999771862095508830,	0.999770792876035870,	0.999769721157136030,	0.999768646938811730,	0.999767570221065880,	
+0.999766491003901140,	0.999765409287320160,	0.999764325071325620,	0.999763238355920290,	0.999762149141106840,	0.999761057426888140,	0.999759963213266660,	0.999758866500245260,	
+0.999757767287826840,	0.999756665576013840,	0.999755561364809250,	0.999754454654215750,	0.999753345444236110,	0.999752233734873100,	0.999751119526129610,	0.999750002818008190,	
+0.999748883610511840,	0.999747761903643230,	0.999746637697405240,	0.999745510991800650,	0.999744381786832230,	0.999743250082502980,	0.999742115878815450,	0.999740979175772760,	
+0.999739839973377560,	0.999738698271632750,	0.999737554070541210,	0.999736407370105830,	0.999735258170329380,	0.999734106471214860,	0.999732952272764930,	0.999731795574982820,	
+0.999730636377871070,	0.999729474681432690,	0.999728310485670790,	0.999727143790588020,	0.999725974596187390,	0.999724802902471790,	0.999723628709444310,	0.999722452017107630,	
+0.999721272825464860,	0.999720091134518870,	0.999718906944272680,	0.999717720254729270,	0.999716531065891530,	0.999715339377762470,	0.999714145190345070,	0.999712948503642230,	
+0.999711749317657160,	0.999710547632392640,	0.999709343447851780,	0.999708136764037470,	0.999706927580952920,	0.999705715898601020,	0.999704501716984770,	0.999703285036107280,	
+0.999702065855971660,	0.999700844176580890,	0.999699619997937880,	0.999698393320045950,	0.999697164142907990,	0.999695932466527100,	0.999694698290906400,	0.999693461616048880,	
+0.999692222441957770,	0.999690980768636160,	0.999689736596087060,	0.999688489924313580,	0.999687240753318940,	0.999685989083106130,	0.999684734913678370,	0.999683478245038780,	
+0.999682219077190460,	0.999680957410136630,	0.999679693243880400,	0.999678426578424980,	0.999677157413773390,	0.999675885749929050,	0.999674611586894860,	0.999673334924674250,	
+0.999672055763270230,	0.999670774102686120,	0.999669489942925040,	0.999668203283990200,	0.999666914125884930,	0.999665622468612350,	0.999664328312175670,	0.999663031656578220,	
+0.999661732501823220,	0.999660430847913780,	0.999659126694853350,	0.999657820042645140,	0.999656510891292260,	0.999655199240798150,	0.999653885091166040,	0.999652568442399250,	
+0.999651249294501110,	0.999649927647474730,	0.999648603501323560,	0.999647276856050930,	0.999645947711660040,	0.999644616068154250,	0.999643281925536980,	0.999641945283811560,	
+0.999640606142981230,	0.999639264503049300,	0.999637920364019330,	0.999636573725894540,	0.999635224588678260,	0.999633872952373940,	0.999632518816985010,	0.999631162182514690,	
+0.999629803048966540,	0.999628441416343770,	0.999627077284649950,	0.999625710653888500,	0.999624341524062650,	0.999622969895176070,	0.999621595767232090,	0.999620219140234020,	
+0.999618840014185440,	0.999617458389089770,	0.999616074264950360,	0.999614687641770860,	0.999613298519554610,	0.999611906898305150,	0.999610512778025930,	0.999609116158720390,	
+0.999607717040392090,	0.999606315423044460,	0.999604911306681050,	0.999603504691305430,	0.999602095576920920,	0.999600683963531300,	0.999599269851139890,	0.999597853239750370,	
+0.999596434129366160,	0.999595012519990830,	0.999593588411628040,	0.999592161804281230,	0.999590732697954070,	0.999589301092650100,	0.999587866988372880,	0.999586430385125850,	
+0.999584991282912890,	0.999583549681737460,	0.999582105581602990,	0.999580658982513360,	0.999579209884472130,	0.999577758287482850,	0.999576304191549190,	0.999574847596674700,	
+0.999573388502863150,	0.999571926910118090,	0.999570462818443200,	0.999568996227842230,	0.999567527138318760,	0.999566055549876430,	0.999564581462518920,	0.999563104876250110,	
+0.999561625791073440,	0.999560144206992680,	0.999558660124011510,	0.999557173542133800,	0.999555684461363110,	0.999554192881703220,	0.999552698803157890,	0.999551202225730790,	
+0.999549703149425590,	0.999548201574246290,	0.999546697500196310,	0.999545190927279780,	0.999543681855500130,	0.999542170284861360,	0.999540656215367140,	0.999539139647021240,	
+0.999537620579827530,	0.999536099013789700,	0.999534574948911740,	0.999533048385197300,	0.999531519322650160,	0.999529987761274330,	0.999528453701073460,	0.999526917142051440,	
+0.999525378084212270,	0.999523836527559490,	0.999522292472097230,	0.999520745917829130,	0.999519196864759210,	0.999517645312891330,	0.999516091262229400,	0.999514534712777180,	
+0.999512975664538560,	0.999511414117517540,	0.999509850071718000,	0.999508283527143830,	0.999506714483799020,	0.999505142941687350,	0.999503568900812820,	0.999501992361179430,	
+0.999500413322790940,	0.999498831785651460,	0.999497247749765010,	0.999495661215135330,	0.999494072181766560,	0.999492480649662560,	0.999490886618827350,	0.999489290089264900,	
+0.999487691060979340,	0.999486089533974440,	0.999484485508254420,	0.999482878983823150,	0.999481269960684650,	0.999479658438843010,	0.999478044418302130,	0.999476427899066210,	
+0.999474808881139270,	0.999473187364525280,	0.999471563349228260,	0.999469936835252430,	0.999468307822601650,	0.999466676311280170,	0.999465042301291960,	0.999463405792641150,	
+0.999461766785331940,	0.999460125279368230,	0.999458481274754120,	0.999456834771493940,	0.999455185769591580,	0.999453534269051370,	0.999451880269877190,	0.999450223772073380,	
+0.999448564775644030,	0.999446903280593270,	0.999445239286925190,	0.999443572794644020,	0.999441903803753970,	0.999440232314259160,	0.999438558326163680,	0.999436881839471880,	
+0.999435202854187850,	0.999433521370315820,	0.999431837387860010,	0.999430150906824630,	0.999428461927213800,	0.999426770449031830,	0.999425076472282960,	0.999423379996971390,	
+0.999421681023101360,	0.999419979550677180,	0.999418275579703090,	0.999416569110183170,	0.999414860142121890,	0.999413148675523440,	0.999411434710392180,	0.999409718246732300,	
+0.999407999284548150,	0.999406277823843950,	0.999404553864624120,	0.999402827406892790,	0.999401098450654500,	0.999399366995913470,	0.999397633042673930,	0.999395896590940410,	
+0.999394157640717040,	0.999392416192008360,	0.999390672244818590,	0.999388925799152170,	0.999387176855013440,	0.999385425412406820,	0.999383671471336550,	0.999381915031807180,	
+0.999380156093822910,	0.999378394657388310,	0.999376630722507820,	0.999374864289185650,	0.999373095357426240,	0.999371323927234270,	0.999369549998613830,	0.999367773571569580,	
+0.999365994646105980,	0.999364213222227350,	0.999362429299938130,	0.999360642879242870,	0.999358853960146010,	0.999357062542652000,	0.999355268626765270,	0.999353472212490490,	
+0.999351673299831990,	0.999349871888794320,	0.999348067979381920,	0.999346261571599340,	0.999344452665451130,	0.999342641260941860,	0.999340827358075940,	0.999339010956857950,	
+0.999337192057292430,	0.999335370659383940,	0.999333546763137020,	0.999331720368556110,	0.999329891475646100,	0.999328060084411220,	0.999326226194856230,	0.999324389806985680,	
+0.999322550920804240,	0.999320709536316350,	0.999318865653526680,	0.999317019272439770,	0.999315170393060390,	0.999313319015393110,	0.999311465139442580,	0.999309608765213350,	
+0.999307749892709980,	0.999305888521937360,	0.999304024652899910,	0.999302158285602540,	0.999300289420049670,	0.999298418056246200,	0.999296544194196560,	0.999294667833905640,	
+0.999292788975377990,	0.999290907618618380,	0.999289023763631490,	0.999287137410422080,	0.999285248558994810,	0.999283357209354350,	0.999281463361505580,	0.999279567015453170,	
+0.999277668171201780,	0.999275766828756300,	0.999273862988121380,	0.999271956649301680,	0.999270047812302220,	0.999268136477127640,	0.999266222643782620,	0.999264306312272140,	
+0.999262387482600880,	0.999260466154773600,	0.999258542328795190,	0.999256616004670420,	0.999254687182404180,	0.999252755862001130,	0.999250822043466270,	0.999248885726804260,	
+0.999246946912020100,	0.999245005599118550,	0.999243061788104510,	0.999241115478982760,	0.999239166671758270,	0.999237215366435840,	0.999235261563020450,	0.999233305261516770,	
+0.999231346461929900,	0.999229385164264630,	0.999227421368525940,	0.999225455074718720,	0.999223486282847850,	0.999221514992918220,	0.999219541204934840,	0.999217564918902570,	
+0.999215586134826420,	0.999213604852711270,	0.999211621072562230,	0.999209634794383960,	0.999207646018181790,	0.999205654743960390,	0.999203660971724860,	0.999201664701480200,	
+0.999199665933231280,	0.999197664666983340,	0.999195660902741150,	0.999193654640509910,	0.999191645880294410,	0.999189634622099860,	0.999187620865931270,	0.999185604611793510,	
+0.999183585859691800,	0.999181564609631150,	0.999179540861616530,	0.999177514615653070,	0.999175485871745870,	0.999173454629899930,	0.999171420890120340,	0.999169384652412230,	
+0.999167345916780690,	0.999165304683230730,	0.999163260951767440,	0.999161214722396160,	0.999159165995121780,	0.999157114769949390,	0.999155061046884340,	0.999153004825931500,	
+0.999150946107096320,	0.999148884890383670,	0.999146821175798780,	0.999144754963346980,	0.999142686253033150,	0.999140615044862620,	0.999138541338840610,	0.999136465134972230,	
+0.999134386433262690,	0.999132305233717210,	0.999130221536340900,	0.999128135341139090,	0.999126046648116880,	0.999123955457279610,	0.999121861768632380,	0.999119765582180630,	
+0.999117666897929360,	0.999115565715884000,	0.999113462036049670,	0.999111355858431690,	0.999109247183035290,	0.999107136009865780,	0.999105022338928510,	0.999102906170228680,	
+0.999100787503771510,	0.999098666339562350,	0.999096542677606610,	0.999094416517909530,	0.999092287860476320,	0.999090156705312430,	0.999088023052423170,	0.999085886901813770,	
+0.999083748253489780,	0.999081607107456300,	0.999079463463718900,	0.999077317322282780,	0.999075168683153380,	0.999073017546336040,	0.999070863911836190,	0.999068707779659170,	
+0.999066549149810410,	0.999064388022295250,	0.999062224397119110,	0.999060058274287450,	0.999057889653805600,	0.999055718535679090,	0.999053544919913160,	0.999051368806513460,	
+0.999049190195485330,	0.999047009086834300,	0.999044825480565610,	0.999042639376684920,	0.999040450775197650,	0.999038259676109150,	0.999036066079425080,	0.999033869985150870,	
+0.999031671393291960,	0.999029470303853920,	0.999027266716842170,	0.999025060632262150,	0.999022852050119650,	0.999020640970419870,	0.999018427393168600,	0.999016211318371260,	
+0.999013992746033310,	0.999011771676160510,	0.999009548108758190,	0.999007322043831910,	0.999005093481387440,	0.999002862421430220,	0.999000628863965900,	0.998998392808999940,	
+0.998996154256537980,	0.998993913206585700,	0.998991669659148540,	0.998989423614232260,	0.998987175071842430,	0.998984924031984690,	0.998982670494664600,	0.998980414459887830,	
+0.998978155927660040,	0.998975894897986880,	0.998973631370873920,	0.998971365346326910,	0.998969096824351530,	0.998966825804953440,	0.998964552288138190,	0.998962276273911650,	
+0.998959997762279280,	0.998957716753247070,	0.998955433246820460,	0.998953147243005320,	0.998950858741807330,	0.998948567743232150,	0.998946274247285550,	0.998943978253973300,	
+0.998941679763301060,	0.998939378775274610,	0.998937075289899830,	0.998934769307182280,	0.998932460827127830,	0.998930149849742150,	0.998927836375031130,	0.998925520403000640,	
+0.998923201933656250,	0.998920880967003820,	0.998918557503049250,	0.998916231541798210,	0.998913903083256670,	0.998911572127430310,	0.998909238674325130,	0.998906902723946780,	
+0.998904564276301140,	0.998902223331394110,	0.998899879889231570,	0.998897533949819280,	0.998895185513163140,	0.998892834579269140,	0.998890481148142940,	0.998888125219790650,	
+0.998885766794217920,	0.998883405871430870,	0.998881042451435270,	0.998878676534237010,	0.998876308119842180,	0.998873937208256460,	0.998871563799486050,	0.998869187893536630,	
+0.998866809490414180,	0.998864428590124810,	0.998862045192674300,	0.998859659298068750,	0.998857270906313930,	0.998854880017416070,	0.998852486631380930,	0.998850090748214630,	
+0.998847692367923030,	0.998845291490512270,	0.998842888115988200,	0.998840482244356950,	0.998838073875624510,	0.998835663009796980,	0.998833249646880140,	0.998830833786880200,	
+0.998828415429803270,	0.998825994575655240,	0.998823571224442210,	0.998821145376170280,	0.998818717030845460,	0.998816286188473850,	0.998813852849061550,	0.998811417012614560,	
+0.998808978679139090,	0.998806537848641150,	0.998804094521126840,	0.998801648696602370,	0.998799200375073750,	0.998796749556547180,	0.998794296241028560,	0.998791840428524310,	
+0.998789382119040450,	0.998786921312583180,	0.998784458009158600,	0.998781992208772840,	0.998779523911432100,	0.998777053117142600,	0.998774579825910340,	0.998772104037741750,	
+0.998769625752642940,	0.998767144970619910,	0.998764661691679210,	0.998762175915826720,	0.998759687643068770,	0.998757196873411690,	0.998754703606861580,	0.998752207843424670,	
+0.998749709583107270,	0.998747208825915610,	0.998744705571856020,	0.998742199820934600,	0.998739691573157560,	0.998737180828531360,	0.998734667587062310,	0.998732151848756520,	
+0.998729633613620330,	0.998727112881660050,	0.998724589652882020,	0.998722063927292570,	0.998719535704897910,	0.998717004985704370,	0.998714471769718280,	0.998711936056946080,	
+0.998709397847394100,	0.998706857141068550,	0.998704313937975870,	0.998701768238122400,	0.998699220041514570,	0.998696669348158590,	0.998694116158061030,	0.998691560471228090,	
+0.998689002287666330,	0.998686441607382070,	0.998683878430381640,	0.998681312756671490,	0.998678744586258160,	0.998676173919147870,	0.998673600755347170,	0.998671025094862500,	
+0.998668446937700290,	0.998665866283867000,	0.998663283133368940,	0.998660697486212780,	0.998658109342404730,	0.998655518701951460,	0.998652925564859410,	0.998650329931135120,	
+0.998647731800784920,	0.998645131173815480,	0.998642528050233120,	0.998639922430044400,	0.998637314313255970,	0.998634703699874170,	0.998632090589905760,	0.998629474983356970,	
+0.998626856880234560,	0.998624236280545090,	0.998621613184294880,	0.998618987591490700,	0.998616359502139010,	0.998613728916246560,	0.998611095833819680,	0.998608460254865050,	
+0.998605822179389310,	0.998603181607399030,	0.998600538538900740,	0.998597892973901110,	0.998595244912406700,	0.998592594354424270,	0.998589941299960370,	0.998587285749021560,	
+0.998584627701614600,	0.998581967157745940,	0.998579304117422460,	0.998576638580650710,	0.998573970547437350,	0.998571300017789150,	0.998568626991712560,	0.998565951469214450,	
+0.998563273450301490,	0.998560592934980340,	0.998557909923257770,	0.998555224415140330,	0.998552536410634790,	0.998549845909748050,	0.998547152912486640,	0.998544457418857330,	
+0.998541759428866920,	0.998539058942522040,	0.998536355959829480,	0.998533650480796120,	0.998530942505428620,	0.998528232033733750,	0.998525519065718290,	0.998522803601389120,	
+0.998520085640752900,	0.998517365183816400,	0.998514642230586500,	0.998511916781069990,	0.998509188835273730,	0.998506458393204510,	0.998503725454869100,	0.998500990020274480,	
+0.998498252089427220,	0.998495511662334410,	0.998492768739002830,	0.998490023319439370,	0.998487275403650790,	0.998484524991643970,	0.998481772083425920,	0.998479016679003520,	
+0.998476258778383420,	0.998473498381572730,	0.998470735488578340,	0.998467970099407020,	0.998465202214065870,	0.998462431832561670,	0.998459658954901410,	0.998456883581091970,	
+0.998454105711140350,	0.998451325345053430,	0.998448542482838210,	0.998445757124501680,	0.998442969270050720,	0.998440178919492330,	0.998437386072833500,	0.998434590730081230,	
+0.998431792891242510,	0.998428992556324220,	0.998426189725333480,	0.998423384398277270,	0.998420576575162700,	0.998417766255996540,	0.998414953440786010,	0.998412138129538110,	
+0.998409320322259820,	0.998406500018958360,	0.998403677219640520,	0.998400851924313600,	0.998398024132984400,	0.998395193845660330,	0.998392361062348080,	0.998389525783055070,	
+0.998386688007788180,	0.998383847736554530,	0.998381004969361330,	0.998378159706215680,	0.998375311947124480,	0.998372461692095150,	0.998369608941134470,	0.998366753694249990,	
+0.998363895951448480,	0.998361035712737270,	0.998358172978123460,	0.998355307747614270,	0.998352440021216810,	0.998349569798938190,	0.998346697080785610,	0.998343821866766400,	
+0.998340944156887570,	0.998338063951156430,	0.998335181249580090,	0.998332296052165780,	0.998329408358920810,	0.998326518169852290,	0.998323625484967340,	0.998320730304273480,	
+0.998317832627777730,	0.998314932455487410,	0.998312029787409850,	0.998309124623552150,	0.998306216963921630,	0.998303306808525530,	0.998300394157371150,	0.998297479010465840,	
+0.998294561367816800,	0.998291641229431480,	0.998288718595316870,	0.998285793465480630,	0.998282865839929870,	0.998279935718671800,	0.998277003101713970,	0.998274067989063710,	
+0.998271130380728230,	0.998268190276714980,	0.998265247677031180,	0.998262302581684250,	0.998259354990681640,	0.998256404904030560,	0.998253452321738450,	0.998250497243812870,	
+0.998247539670260920,	0.998244579601090140,	0.998241617036307870,	0.998238651975921650,	0.998235684419938710,	0.998232714368366580,	0.998229741821212710,	0.998226766778484540,	
+0.998223789240189400,	0.998220809206334710,	0.998217826676928040,	0.998214841651976830,	0.998211854131488500,	0.998208864115470500,	0.998205871603930370,	0.998202876596875680,	
+0.998199879094313620,	0.998196879096251990,	0.998193876602698090,	0.998190871613659490,	0.998187864129143730,	0.998184854149158360,	0.998181841673710820,	0.998178826702808660,	
+0.998175809236459430,	0.998172789274670680,	0.998169766817449950,	0.998166741864804810,	0.998163714416742790,	0.998160684473271550,	0.998157652034398550,	0.998154617100131540,	
+0.998151579670477850,	0.998148539745445260,	0.998145497325041320,	0.998142452409273570,	0.998139404998149790,	0.998136355091677420,	0.998133302689864220,	0.998130247792717750,	
+0.998127190400245670,	0.998124130512455630,	0.998121068129355080,	0.998118003250952120,	0.998114935877253970,	0.998111866008268620,	0.998108793644003510,	0.998105718784466520,	
+0.998102641429665090,	0.998099561579607110,	0.998096479234300230,	0.998093394393752220,	0.998090307057970640,	0.998087217226963360,	0.998084124900737950,	0.998081030079302380,	
+0.998077932762664100,	0.998074832950830990,	0.998071730643810830,	0.998068625841611380,	0.998065518544240300,	0.998062408751705490,	0.998059296464014590,	0.998056181681175490,	
+0.998053064403195970,	0.998049944630083670,	0.998046822361846610,	0.998043697598492430,	0.998040570340029130,	0.998037440586464260,	0.998034308337805930,	0.998031173594061680,	
+0.998028036355239620,	0.998024896621347410,	0.998021754392392930,	0.998018609668384070,	0.998015462449328820,	0.998012312735234830,	0.998009160526110000,	0.998006005821962310,	
+0.998002848622799530,	0.997999688928629780,	0.997996526739460710,	0.997993362055300310,	0.997990194876156590,	0.997987025202037300,	0.997983853032950560,	0.997980678368904140,	
+0.997977501209905920,	0.997974321555963990,	0.997971139407086370,	0.997967954763280820,	0.997964767624555330,	0.997961577990918000,	0.997958385862376730,	0.997955191238939500,	
+0.997951994120614190,	0.997948794507409030,	0.997945592399331780,	0.997942387796390550,	0.997939180698593440,	0.997935971105948340,	0.997932759018463340,	0.997929544436146340,	
+0.997926327359005550,	0.997923107787048960,	0.997919885720284560,	0.997916661158720460,	0.997913434102364770,	0.997910204551225370,	0.997906972505310570,	0.997903737964628280,	
+0.997900500929186700,	0.997897261398993820,	0.997894019374057750,	0.997890774854386710,	0.997887527839988690,	0.997884278330871900,	0.997881026327044340,	0.997877771828514230,	
+0.997874514835289770,	0.997871255347378970,	0.997867993364790040,	0.997864728887531080,	0.997861461915610310,	0.997858192449035950,	0.997854920487815990,	0.997851646031958860,	
+0.997848369081472560,	0.997845089636365310,	0.997841807696645430,	0.997838523262320920,	0.997835236333400210,	0.997831946909891410,	0.997828654991802620,	0.997825360579142170,	
+0.997822063671918500,	0.997818764270139600,	0.997815462373813690,	0.997812157982949310,	0.997808851097554350,	0.997805541717637360,	0.997802229843206430,	0.997798915474270020,	
+0.997795598610836330,	0.997792279252913580,	0.997788957400510210,	0.997785633053634440,	0.997782306212294470,	0.997778976876498860,	0.997775645046255710,	0.997772310721573460,	
+0.997768973902460550,	0.997765634588925090,	0.997762292780975610,	0.997758948478620340,	0.997755601681867830,	0.997752252390726070,	0.997748900605203830,	0.997745546325309430,	
+0.997742189551050980,	0.997738830282437260,	0.997735468519476370,	0.997732104262176730,	0.997728737510546800,	0.997725368264595120,	0.997721996524330020,	0.997718622289759940,	
+0.997715245560893300,	0.997711866337738560,	0.997708484620304150,	0.997705100408598500,	0.997701713702630060,	0.997698324502407470,	0.997694932807938970,	0.997691538619233100,	
+0.997688141936298510,	0.997684742759143540,	0.997681341087776620,	0.997677936922206410,	0.997674530262441240,	0.997671121108489880,	0.997667709460360760,	0.997664295318062220,	
+0.997660878681603020,	0.997657459550991720,	0.997654037926236640,	0.997650613807346430,	0.997647187194329770,	0.997643758087195080,	0.997640326485951130,	0.997636892390606270,	
+0.997633455801169130,	0.997630016717648390,	0.997626575140052710,	0.997623131068390400,	0.997619684502670360,	0.997616235442901120,	0.997612783889091360,	0.997609329841249610,	
+0.997605873299384440,	0.997602414263504710,	0.997598952733618760,	0.997595488709735580,	0.997592022191863710,	0.997588553180011720,	0.997585081674188360,	0.997581607674402290,	
+0.997578131180662190,	0.997574652192976810,	0.997571170711354700,	0.997567686735804650,	0.997564200266335520,	0.997560711302955870,	0.997557219845674360,	0.997553725894499870,	
+0.997550229449441050,	0.997546730510506570,	0.997543229077705320,	0.997539725151046050,	0.997536218730537440,	0.997532709816188250,	0.997529198408007360,	0.997525684506003430,	
+0.997522168110185240,	0.997518649220561660,	0.997515127837141470,	0.997511603959933430,	0.997508077588946440,	0.997504548724189260,	0.997501017365670760,	0.997497483513399620,	
+0.997493947167384820,	0.997490408327635030,	0.997486866994159340,	0.997483323166966420,	0.997479776846065260,	0.997476228031464630,	0.997472676723173410,	0.997469122921200490,	
+0.997465566625554740,	0.997462007836245170,	0.997458446553280530,	0.997454882776669830,	0.997451316506421830,	0.997447747742545630,	0.997444176485050020,	0.997440602733943970,	
+0.997437026489236380,	0.997433447750936230,	0.997429866519052410,	0.997426282793594020,	0.997422696574569940,	0.997419107861989060,	0.997415516655860480,	0.997411922956193080,	
+0.997408326762995730,	0.997404728076277670,	0.997401126896047870,	0.997397523222315230,	0.997393917055088730,	0.997390308394377480,	0.997386697240190360,	0.997383083592536580,	
+0.997379467451425030,	0.997375848816864920,	0.997372227688865130,	0.997368604067434770,	0.997364977952582830,	0.997361349344318530,	0.997357718242650850,	0.997354084647588790,	
+0.997350448559141680,	0.997346809977318280,	0.997343168902128040,	0.997339525333579720,	0.997335879271682660,	0.997332230716445940,	0.997328579667878580,	0.997324926125989660,	
+0.997321270090788640,	0.997317611562284380,	0.997313950540485990,	0.997310287025402810,	0.997306621017043930,	0.997302952515418450,	0.997299281520535600,	0.997295608032404580,	
+0.997291932051034500,	0.997288253576434580,	0.997284572608614140,	0.997280889147582170,	0.997277203193348010,	0.997273514745920740,	0.997269823805309710,	0.997266130371524230,	
+0.997262434444573410,	0.997258736024466460,	0.997255035111212720,	0.997251331704821280,	0.997247625805301570,	0.997243917412662830,	0.997240206526914250,	0.997236493148065170,	
+0.997232777276124920,	0.997229058911102580,	0.997225338053007730,	0.997221614701849560,	0.997217888857637290,	0.997214160520380140,	0.997210429690087770,	0.997206696366769400,	
+0.997202960550434110,	0.997199222241091590,	0.997195481438750920,	0.997191738143421550,	0.997187992355112800,	0.997184244073834100,	0.997180493299594790,	0.997176740032404200,	
+0.997172984272271860,	0.997169226019206990,	0.997165465273219140,	0.997161702034317530,	0.997157936302511590,	0.997154168077810990,	0.997150397360224930,	0.997146624149762850,	
+0.997142848446434190,	0.997139070250248390,	0.997135289561215000,	0.997131506379343340,	0.997127720704642840,	0.997123932537123170,	0.997120141876793540,	0.997116348723663730,	
+0.997112553077742940,	0.997108754939040720,	0.997104954307566740,	0.997101151183330310,	0.997097345566340890,	0.997093537456608230,	0.997089726854141660,	0.997085913758950840,	
+0.997082098171045320,	0.997078280090434420,	0.997074459517127810,	0.997070636451135030,	0.997066810892465740,	0.997062982841129490,	0.997059152297135710,	0.997055319260493960,	
+0.997051483731213990,	0.997047645709305370,	0.997043805194777530,	0.997039962187640240,	0.997036116687903040,	0.997032268695575490,	0.997028418210667340,	0.997024565233188160,	
+0.997020709763147490,	0.997016851800555100,	0.997012991345420540,	0.997009128397753570,	0.997005262957563750,	0.997001395024860740,	0.996997524599654290,	0.996993651681953970,	
+0.996989776271769660,	0.996985898369110780,	0.996982017973987110,	0.996978135086408420,	0.996974249706384490,	0.996970361833924960,	0.996966471469039380,	0.996962578611737760,	
+0.996958683262029630,	0.996954785419924770,	0.996950885085432950,	0.996946982258563930,	0.996943076939327490,	0.996939169127733280,	0.996935258823791190,	0.996931346027510990,	
+0.996927430738902440,	0.996923512957975210,	0.996919592684739180,	0.996915669919204330,	0.996911744661380220,	0.996907816911276720,	0.996903886668903730,	0.996899953934271000,	
+0.996896018707388420,	0.996892080988265650,	0.996888140776912790,	0.996884198073339610,	0.996880252877555990,	0.996876305189571600,	0.996872355009396530,	0.996868402337040550,	
+0.996864447172513550,	0.996860489515825400,	0.996856529366986100,	0.996852566726005420,	0.996848601592893350,	0.996844633967659770,	0.996840663850314670,	0.996836691240867820,	
+0.996832716139329220,	0.996828738545708860,	0.996824758460016720,	0.996820775882262590,	0.996816790812456670,	0.996812803250608610,	0.996808813196728650,	0.996804820650826650,	
+0.996800825612912500,	0.996796828082996300,	0.996792828061088150,	0.996788825547197830,	0.996784820541335550,	0.996780813043511070,	0.996776803053734730,	0.996772790572016180,	
+0.996768775598365740,	0.996764758132793420,	0.996760738175309190,	0.996756715725923060,	0.996752690784645230,	0.996748663351485600,	0.996744633426454360,	0.996740601009561410,	
+0.996736566100817070,	0.996732528700231320,	0.996728488807814280,	0.996724446423575940,	0.996720401547526500,	0.996716354179676080,	0.996712304320034770,	0.996708251968612680,	
+0.996704197125419910,	0.996700139790466790,	0.996696079963763190,	0.996692017645319450,	0.996687952835145660,	0.996683885533252050,	0.996679815739648590,	0.996675743454345730,	
+0.996671668677353460,	0.996667591408682000,	0.996663511648341550,	0.996659429396342330,	0.996655344652694560,	0.996651257417408450,	0.996647167690494110,	0.996643075471961850,	
+0.996638980761822000,	0.996634883560084670,	0.996630783866760180,	0.996626681681858640,	0.996622577005390480,	0.996618469837365790,	0.996614360177794920,	0.996610248026688180,	
+0.996606133384055790,	0.996602016249908180,	0.996597896624255460,	0.996593774507107950,	0.996589649898476090,	0.996585522798369980,	0.996581393206800170,	0.996577261123776870,	
+0.996573126549310410,	0.996568989483411110,	0.996564849926089400,	0.996560707877355510,	0.996556563337219870,	0.996552416305692800,	0.996548266782784630,	0.996544114768505910,	
+0.996539960262866840,	0.996535803265877980,	0.996531643777549440,	0.996527481797891970,	0.996523317326915570,	0.996519150364631010,	0.996514980911048620,	0.996510808966178720,	
+0.996506634530031850,	0.996502457602618350,	0.996498278183948650,	0.996494096274033400,	0.996489911872882720,	0.996485724980507360,	0.996481535596917770,	0.996477343722124260,	
+0.996473149356137400,	0.996468952498967610,	0.996464753150625550,	0.996460551311121550,	0.996456346980466150,	0.996452140158669900,	0.996447930845743230,	0.996443719041696820,	
+0.996439504746541190,	0.996435287960286690,	0.996431068682943950,	0.996426846914523550,	0.996422622655036120,	0.996418395904491990,	0.996414166662902060,	0.996409934930276520,	
+0.996405700706626260,	0.996401463991961720,	0.996397224786293560,	0.996392983089632200,	0.996388738901988540,	0.996384492223373000,	0.996380243053796240,	0.996375991393268820,	
+0.996371737241801500,	0.996367480599404720,	0.996363221466089240,	0.996358959841865840,	0.996354695726744950,	0.996350429120737350,	0.996346160023853680,	0.996341888436104610,	
+0.996337614357500790,	0.996333337788053000,	0.996329058727771670,	0.996324777176667900,	0.996320493134752130,	0.996316206602035130,	0.996311917578527550,	0.996307626064240280,	
+0.996303332059183980,	0.996299035563369180,	0.996294736576806890,	0.996290435099507770,	0.996286131131482570,	0.996281824672741960,	0.996277515723296920,	0.996273204283158020,	
+0.996268890352336120,	0.996264573930841890,	0.996260255018686310,	0.996255933615880160,	0.996251609722434090,	0.996247283338358990,	0.996242954463665730,	0.996238623098365080,	
+0.996234289242467930,	0.996229952895984930,	0.996225614058927070,	0.996221272731305230,	0.996216928913130180,	0.996212582604412810,	0.996208233805164100,	0.996203882515394710,	
+0.996199528735115520,	0.996195172464337530,	0.996190813703071720,	0.996186452451328860,	0.996182088709119840,	0.996177722476455640,	0.996173353753347040,	0.996168982539805130,	
+0.996164608835840680,	0.996160232641464800,	0.996155853956688260,	0.996151472781522160,	0.996147089115977380,	0.996142702960064910,	0.996138314313795630,	0.996133923177180520,	
+0.996129529550230600,	0.996125133432956830,	0.996120734825370340,	0.996116333727481980,	0.996111930139302770,	0.996107524060843800,	0.996103115492115940,	0.996098704433130310,	
+0.996094290883897890,	0.996089874844429790,	0.996085456314736990,	0.996081035294830500,	0.996076611784721510,	0.996072185784421030,	0.996067757293939930,	0.996063326313289530,	
+0.996058892842480730,	0.996054456881524830,	0.996050018430432730,	0.996045577489215630,	0.996041134057884530,	0.996036688136450630,	0.996032239724924940,	0.996027788823318660,	
+0.996023335431642900,	0.996018879549908860,	0.996014421178127660,	0.996009960316310280,	0.996005496964468160,	0.996001031122612180,	0.995996562790753550,	0.995992091968903700,	
+0.995987618657073530,	0.995983142855274340,	0.995978664563517250,	0.995974183781813570,	0.995969700510174420,	0.995965214748610990,	0.995960726497134410,	0.995956235755756090,	
+0.995951742524487260,	0.995947246803339010,	0.995942748592322680,	0.995938247891449470,	0.995933744700730710,	0.995929239020177490,	0.995924730849801150,	0.995920220189613010,	
+0.995915707039624400,	0.995911191399846410,	0.995906673270290480,	0.995902152650967930,	0.995897629541889980,	0.995893103943067850,	0.995888575854513070,	0.995884045276236750,	
+0.995879512208250440,	0.995874976650565240,	0.995870438603192690,	0.995865898066144010,	0.995861355039430630,	0.995856809523063770,	0.995852261517054860,	0.995847711021415450,	
+0.995843158036156640,	0.995838602561289980,	0.995834044596826900,	0.995829484142778610,	0.995824921199156550,	0.995820355765972280,	0.995815787843237100,	0.995811217430962460,	
+0.995806644529159790,	0.995802069137840420,	0.995797491257016000,	0.995792910886697750,	0.995788328026897210,	0.995783742677625930,	0.995779154838895340,	0.995774564510716780,	
+0.995769971693101770,	0.995765376386062000,	0.995760778589608650,	0.995756178303753400,	0.995751575528507570,	0.995746970263882920,	0.995742362509890900,	0.995737752266542930,	
+0.995733139533850560,	0.995728524311825350,	0.995723906600478830,	0.995719286399822430,	0.995714663709867940,	0.995710038530626780,	0.995705410862110620,	0.995700780704330770,	
+0.995696148057299110,	0.995691512921026980,	0.995686875295526130,	0.995682235180808010,	0.995677592576884260,	0.995672947483766670,	0.995668299901466660,	0.995663649829995890,	
+0.995658997269366020,	0.995654342219588710,	0.995649684680675500,	0.995645024652637930,	0.995640362135487900,	0.995635697129237050,	0.995631029633896940,	0.995626359649479210,	
+0.995621687175995530,	0.995617012213457770,	0.995612334761877270,	0.995607654821266120,	0.995602972391635750,	0.995598287472997940,	0.995593600065364570,	0.995588910168747070,	
+0.995584217783157310,	0.995579522908606960,	0.995574825545107790,	0.995570125692671560,	0.995565423351310150,	0.995560718521035120,	0.995556011201858220,	0.995551301393791330,	
+0.995546589096846240,	0.995541874311034580,	0.995537157036368360,	0.995532437272859120,	0.995527715020518840,	0.995522990279359310,	0.995518263049392280,	0.995513533330629640,	
+0.995508801123083150,	0.995504066426764480,	0.995499329241685830,	0.995494589567858860,	0.995489847405295340,	0.995485102754007260,	0.995480355614006380,	0.995475605985304600,	
+0.995470853867913900,	0.995466099261845930,	0.995461342167112790,	0.995456582583726270,	0.995451820511698340,	0.995447055951040880,	0.995442288901765670,	0.995437519363884800,	
+0.995432747337410160,	0.995427972822353620,	0.995423195818727180,	0.995418416326542710,	0.995413634345812200,	0.995408849876547650,	0.995404062918760930,	0.995399273472464040,	
+0.995394481537668960,	0.995389687114387690,	0.995384890202632320,	0.995380090802414630,	0.995375288913746710,	0.995370484536640570,	0.995365677671108170,	0.995360868317161640,	
+0.995356056474812840,	0.995351242144074000,	0.995346425324957100,	0.995341606017474120,	0.995336784221637070,	0.995331959937458040,	0.995327133164949140,	0.995322303904122350,	
+0.995317472154989890,	0.995312637917563750,	0.995307801191856020,	0.995302961977878710,	0.995298120275644130,	0.995293276085164160,	0.995288429406451010,	0.995283580239516690,	
+0.995278728584373500,	0.995273874441033550,	0.995269017809508830,	0.995264158689811550,	0.995259297081953930,	0.995254432985948070,	0.995249566401806060,	0.995244697329540240,	
+0.995239825769162590,	0.995234951720685430,	0.995230075184120880,	0.995225196159481240,	0.995220314646778510,	0.995215430646025020,	0.995210544157232760,	0.995205655180414370,	
+0.995200763715581750,	0.995195869762747320,	0.995190973321923080,	0.995186074393121570,	0.995181172976354780,	0.995176269071635030,	0.995171362678974550,	0.995166453798385750,	
+0.995161542429880860,	0.995156628573472090,	0.995151712229171760,	0.995146793396992080,	0.995141872076945490,	0.995136948269044090,	0.995132021973300420,	0.995127093189726700,	
+0.995122161918335250,	0.995117228159138390,	0.995112291912148450,	0.995107353177377860,	0.995102411954838730,	0.995097468244543590,	0.995092522046504890,	0.995087573360734830,	
+0.995082622187245860,	0.995077668526050400,	0.995072712377160660,	0.995067753740589200,	0.995062792616348220,	0.995057829004450390,	0.995052862904907910,	0.995047894317733330,	
+0.995042923242939080,	0.995037949680537490,	0.995032973630541000,	0.995027995092962030,	0.995023014067813020,	0.995018030555106630,	0.995013044554855060,	0.995008056067070880,	
+0.995003065091766610,	0.994998071628954710,	0.994993075678647590,	0.994988077240857800,	0.994983076315597680,	0.994978072902880100,	0.994973067002717150,	0.994968058615121610,	
+0.994963047740106020,	0.994958034377682710,	0.994953018527864330,	0.994948000190663320,	0.994942979366092330,	0.994937956054163910,	0.994932930254890710,	0.994927901968285070,	
+0.994922871194359740,	0.994917837933127270,	0.994912802184600100,	0.994907763948790880,	0.994902723225712380,	0.994897680015377040,	0.994892634317797510,	0.994887586132986330,	
+0.994882535460956290,	0.994877482301719910,	0.994872426655289740,	0.994867368521678450,	0.994862307900898800,	0.994857244792963450,	0.994852179197884930,	0.994847111115675920,	
+0.994842040546349280,	0.994836967489917460,	0.994831891946393100,	0.994826813915789090,	0.994821733398118080,	0.994816650393392730,	0.994811564901625810,	0.994806476922829970,	
+0.994801386457017880,	0.994796293504202290,	0.994791198064395980,	0.994786100137611710,	0.994780999723862140,	0.994775896823160140,	0.994770791435518390,	0.994765683560949630,	
+0.994760573199466760,	0.994755460351082310,	0.994750345015809280,	0.994745227193660430,	0.994740106884648420,	0.994734984088786240,	0.994729858806086550,	0.994724731036562230,	
+0.994719600780226030,	0.994714468037090850,	0.994709332807169440,	0.994704195090474810,	0.994699054887019710,	0.994693912196816910,	0.994688767019879410,	0.994683619356219850,	
+0.994678469205851350,	0.994673316568786550,	0.994668161445038560,	0.994663003834620140,	0.994657843737544290,	0.994652681153823770,	0.994647516083471570,	0.994642348526500570,	
+0.994637178482923660,	0.994632005952753810,	0.994626830936004010,	0.994621653432687050,	0.994616473442816010,	0.994611290966403770,	0.994606106003463330,	0.994600918554007670,	
+0.994595728618049570,	0.994590536195602230,	0.994585341286678530,	0.994580143891291460,	0.994574944009454120,	0.994569741641179390,	0.994564536786480270,	0.994559329445369840,	
+0.994554119617861000,	0.994548907303966940,	0.994543692503700560,	0.994538475217075060,	0.994533255444103310,	0.994528033184798430,	0.994522808439173400,	0.994517581207241320,	
+0.994512351489015400,	0.994507119284508630,	0.994501884593734010,	0.994496647416704630,	0.994491407753433700,	0.994486165603934210,	0.994480920968219380,	0.994475673846302090,	
+0.994470424238195760,	0.994465172143913280,	0.994459917563467970,	0.994454660496872810,	0.994449400944141030,	0.994444138905285710,	0.994438874380319970,	0.994433607369257120,	
+0.994428337872110270,	0.994423065888892620,	0.994417791419617280,	0.994412514464297460,	0.994407235022946260,	0.994401953095577110,	0.994396668682202890,	0.994391381782837150,	
+0.994386092397492980,	0.994380800526183490,	0.994375506168922010,	0.994370209325721840,	0.994364909996596100,	0.994359608181558110,	0.994354303880620960,	0.994348997093798200,	
+0.994343687821102940,	0.994338376062548380,	0.994333061818147960,	0.994327745087914880,	0.994322425871862480,	0.994317104170003850,	0.994311779982352540,	0.994306453308921760,	
+0.994301124149724940,	0.994295792504775290,	0.994290458374086140,	0.994285121757670810,	0.994279782655542730,	0.994274441067715120,	0.994269096994201410,	0.994263750435015030,	
+0.994258401390169190,	0.994253049859677440,	0.994247695843553100,	0.994242339341809390,	0.994236980354459950,	0.994231618881517900,	0.994226254922996880,	0.994220888478910330,	
+0.994215519549271450,	0.994210148134093810,	0.994204774233390820,	0.994199397847175810,	0.994194018975462330,	0.994188637618263820,	0.994183253775593690,	0.994177867447465500,	
+0.994172478633892580,	0.994167087334888570,	0.994161693550466800,	0.994156297280640700,	0.994150898525423820,	0.994145497284829820,	0.994140093558872010,	0.994134687347564050,	
+0.994129278650919380,	0.994123867468951430,	0.994118453801673850,	0.994113037649100080,	0.994107619011243780,	0.994102197888118380,	0.994096774279737530,	0.994091348186114780,	
+0.994085919607263560,	0.994080488543197640,	0.994075054993930450,	0.994069618959475540,	0.994064180439846680,	0.994058739435057400,	0.994053295945121260,	0.994047849970051910,	
+0.994042401509862890,	0.994036950564567870,	0.994031497134180490,	0.994026041218714180,	0.994020582818182950,	0.994015121932600220,	0.994009658561979760,	0.994004192706335110,	
+0.993998724365679930,	0.993993253540027990,	0.993987780229392830,	0.993982304433788320,	0.993976826153228020,	0.993971345387725690,	0.993965862137294990,	0.993960376401949670,	
+0.993954888181703300,	0.993949397476569850,	0.993943904286562650,	0.993938408611695910,	0.993932910451983060,	0.993927409807437990,	0.993921906678074450,	0.993916401063906110,	
+0.993910892964946720,	0.993905382381210070,	0.993899869312709900,	0.993894353759460230,	0.993888835721474570,	0.993883315198766940,	0.993877792191350860,	0.993872266699240450,	
+0.993866738722449240,	0.993861208260991220,	0.993855675314880170,	0.993850139884130070,	0.993844601968754460,	0.993839061568767450,	0.993833518684182790,	0.993827973315014270,	
+0.993822425461275860,	0.993816875122981220,	0.993811322300144570,	0.993805766992779560,	0.993800209200900180,	0.993794648924520300,	0.993789086163653690,	0.993783520918314460,	
+0.993777953188516250,	0.993772382974273390,	0.993766810275599430,	0.993761235092508580,	0.993755657425014480,	0.993750077273131360,	0.993744494636872980,	0.993738909516253430,	
+0.993733321911286490,	0.993727731821986370,	0.993722139248366830,	0.993716544190441970,	0.993710946648225790,	0.993705346621732270,	0.993699744110975280,	0.993694139115969040,	
+0.993688531636727320,	0.993682921673264330,	0.993677309225594050,	0.993671694293730480,	0.993666076877687710,	0.993660456977479730,	0.993654834593120650,	0.993649209724624340,	
+0.993643582372005120,	0.993637952535276980,	0.993632320214453910,	0.993626685409550010,	0.993621048120579500,	0.993615408347556350,	0.993609766090494560,	0.993604121349408340,	
+0.993598474124311900,	0.993592824415219340,	0.993587172222144650,	0.993581517545102040,	0.993575860384105610,	0.993570200739169570,	0.993564538610307910,	0.993558873997535060,	
+0.993553206900865020,	0.993547537320311870,	0.993541865255889940,	0.993536190707613340,	0.993530513675496270,	0.993524834159552950,	0.993519152159797360,	0.993513467676244040,	
+0.993507780708907110,	0.993502091257800650,	0.993496399322938980,	0.993490704904336330,	0.993485008002006900,	0.993479308615964900,	0.993473606746224540,	0.993467902392800360,	
+0.993462195555706360,	0.993456486234956860,	0.993450774430566170,	0.993445060142548520,	0.993439343370918220,	0.993433624115689470,	0.993427902376876840,	0.993422178154494410,	
+0.993416451448556500,	0.993410722259077450,	0.993404990586071570,	0.993399256429553290,	0.993393519789536830,	0.993387780666036500,	0.993382039059066750,	0.993376294968641990,	
+0.993370548394776450,	0.993364799337484560,	0.993359047796780640,	0.993353293772679110,	0.993347537265194420,	0.993341778274340670,	0.993336016800132620,	0.993330252842584580,	
+0.993324486401710780,	0.993318717477525870,	0.993312946070044170,	0.993307172179280110,	0.993301395805248010,	0.993295616947962420,	0.993289835607437890,	0.993284051783688730,	
+0.993278265476729480,	0.993272476686574590,	0.993266685413238480,	0.993260891656735590,	0.993255095417080460,	0.993249296694287630,	0.993243495488371650,	0.993237691799346840,	
+0.993231885627227860,	0.993226076972029140,	0.993220265833765210,	0.993214452212450530,	0.993208636108099730,	0.993202817520727480,	0.993196996450348090,	0.993191172896976340,	
+0.993185346860626540,	0.993179518341313460,	0.993173687339051540,	0.993167853853855200,	0.993162017885739430,	0.993156179434718680,	0.993150338500807360,	0.993144495084020250,	
+0.993138649184371890,	0.993132800801876940,	0.993126949936549930,	0.993121096588405530,	0.993115240757458380,	0.993109382443723150,	0.993103521647214490,	0.993097658367947060,	
+0.993091792605935500,	0.993085924361194360,	0.993080053633738410,	0.993074180423582420,	0.993068304730740930,	0.993062426555228690,	0.993056545897060380,	0.993050662756250760,	
+0.993044777132814360,	0.993038889026766180,	0.993032998438120540,	0.993027105366892540,	0.993021209813096830,	0.993015311776748070,	0.993009411257861020,	0.993003508256450450,	
+0.992997602772531020,	0.992991694806117710,	0.992985784357225070,	0.992979871425867970,	0.992973956012061290,	0.992968038115819680,	0.992962117737157920,	0.992956194876090880,	
+0.992950269532633430,	0.992944341706800130,	0.992938411398606170,	0.992932478608066100,	0.992926543335194810,	0.992920605580007280,	0.992914665342518150,	0.992908722622742320,	
+0.992902777420694770,	0.992896829736390150,	0.992890879569843570,	0.992884926921069780,	0.992878971790083660,	0.992873014176900100,	0.992867054081533970,	0.992861091504000260,	
+0.992855126444313730,	0.992849158902489480,	0.992843188878542280,	0.992837216372487230,	0.992831241384339090,	0.992825263914112740,	0.992819283961823280,	0.992813301527485700,	
+0.992807316611114650,	0.992801329212725570,	0.992795339332332990,	0.992789346969952140,	0.992783352125597980,	0.992777354799285310,	0.992771354991029310,	0.992765352700844980,	
+0.992759347928747090,	0.992753340674750960,	0.992747330938871570,	0.992741318721123700,	0.992735304021522660,	0.992729286840083320,	0.992723267176820690,	0.992717245031749850,	
+0.992711220404886020,	0.992705193296244070,	0.992699163705839220,	0.992693131633686440,	0.992687097079800850,	0.992681060044197430,	0.992675020526891380,	0.992668978527897710,	
+0.992662934047231720,	0.992656887084908400,	0.992650837640942860,	0.992644785715350200,	0.992638731308145510,	0.992632674419344110,	0.992626615048960990,	0.992620553197011150,	
+0.992614488863510110,	0.992608422048472880,	0.992602352751914550,	0.992596280973850330,	0.992590206714295430,	0.992584129973264950,	0.992578050750774100,	0.992571969046838200,	
+0.992565884861472460,	0.992559798194691870,	0.992553709046511860,	0.992547617416947640,	0.992541523306014310,	0.992535426713727190,	0.992529327640101380,	0.992523226085152310,	
+0.992517122048895310,	0.992511015531345350,	0.992504906532517990,	0.992498795052428220,	0.992492681091091570,	0.992486564648523140,	0.992480445724738260,	0.992474324319752350,	
+0.992468200433580640,	0.992462074066238430,	0.992455945217741050,	0.992449813888103830,	0.992443680077341960,	0.992437543785470890,	0.992431405012506040,	0.992425263758462740,	
+0.992419120023356190,	0.992412973807201840,	0.992406825110015100,	0.992400673931811310,	0.992394520272605770,	0.992388364132413820,	0.992382205511251110,	0.992376044409132850,	
+0.992369880826074580,	0.992363714762091510,	0.992357546217199180,	0.992351375191413030,	0.992345201684748270,	0.992339025697220660,	0.992332847228845400,	0.992326666279638060,	
+0.992320482849614160,	0.992314296938788920,	0.992308108547177990,	0.992301917674796810,	0.992295724321660690,	0.992289528487785400,	0.992283330173186260,	0.992277129377878820,	
+0.992270926101878500,	0.992264720345200970,	0.992258512107861530,	0.992252301389875860,	0.992246088191259370,	0.992239872512027720,	0.992233654352196460,	0.992227433711781020,	
+0.992221210590796930,	0.992214984989259860,	0.992208756907185350,	0.992202526344588830,	0.992196293301486070,	0.992190057777892600,	0.992183819773823970,	0.992177579289295840,	
+0.992171336324323750,	0.992165090878923240,	0.992158842953110080,	0.992152592546899690,	0.992146339660307960,	0.992140084293350320,	0.992133826446042530,	0.992127566118400140,	
+0.992121303310438800,	0.992115038022174270,	0.992108770253621990,	0.992102500004797940,	0.992096227275717560,	0.992089952066396720,	0.992083674376850970,	0.992077394207095950,	
+0.992071111557147560,	0.992064826427021320,	0.992058538816732890,	0.992052248726298270,	0.992045956155732990,	0.992039661105052820,	0.992033363574273520,	0.992027063563410860,	
+0.992020761072480490,	0.992014456101498190,	0.992008148650479700,	0.992001838719440920,	0.991995526308397490,	0.991989211417365290,	0.991982894046360090,	0.991976574195397640,	
+0.991970251864493720,	0.991963927053664100,	0.991957599762924750,	0.991951269992291440,	0.991944937741779940,	0.991938603011406130,	0.991932265801185760,	0.991925926111134730,	
+0.991919583941268890,	0.991913239291604020,	0.991906892162156110,	0.991900542552940910,	0.991894190463974420,	0.991887835895272520,	0.991881478846850960,	0.991875119318725740,	
+0.991868757310912730,	0.991862392823427590,	0.991856025856286740,	0.991849656409505730,	0.991843284483100660,	0.991836910077087300,	0.991830533191481730,	0.991824153826299740,	
+0.991817771981557290,	0.991811387657270620,	0.991805000853455350,	0.991798611570127610,	0.991792219807303370,	0.991785825564998610,	0.991779428843229230,	0.991773029642011310,	
+0.991766627961360610,	0.991760223801293580,	0.991753817161825980,	0.991747408042973790,	0.991740996444753110,	0.991734582367179930,	0.991728165810270230,	0.991721746774040120,	
+0.991715325258505700,	0.991708901263682940,	0.991702474789587950,	0.991696045836236720,	0.991689614403645450,	0.991683180491830130,	0.991676744100806860,	0.991670305230591630,	
+0.991663863881200760,	0.991657420052650120,	0.991650973744956030,	0.991644524958134490,	0.991638073692201690,	0.991631619947173640,	0.991625163723066530,	0.991618705019896460,	
+0.991612243837679650,	0.991605780176432310,	0.991599314036170520,	0.991592845416910400,	0.991586374318668140,	0.991579900741460070,	0.991573424685302070,	0.991566946150210570,	
+0.991560465136201770,	0.991553981643291780,	0.991547495671496800,	0.991541007220833160,	0.991534516291316950,	0.991528022882964490,	0.991521526995791770,	0.991515028629815440,	
+0.991508527785051500,	0.991502024461516250,	0.991495518659225920,	0.991489010378196810,	0.991482499618445150,	0.991475986379987240,	0.991469470662839300,	0.991462952467017880,	
+0.991456431792538950,	0.991449908639418950,	0.991443383007674210,	0.991436854897320920,	0.991430324308375630,	0.991423791240854340,	0.991417255694773680,	0.991410717670149990,	
+0.991404177166999360,	0.991397634185338330,	0.991391088725183220,	0.991384540786550470,	0.991377990369456290,	0.991371437473916980,	0.991364882099949330,	0.991358324247569310,	
+0.991351763916793580,	0.991345201107638460,	0.991338635820120270,	0.991332068054255560,	0.991325497810060520,	0.991318925087551820,	0.991312349886745880,	0.991305772207659030,	
+0.991299192050307700,	0.991292609414708430,	0.991286024300877640,	0.991279436708831780,	0.991272846638587280,	0.991266254090160670,	0.991259659063568500,	0.991253061558827200,	
+0.991246461575953200,	0.991239859114963040,	0.991233254175873270,	0.991226646758700310,	0.991220036863460720,	0.991213424490171020,	0.991206809638847890,	0.991200192309507620,	
+0.991193572502167000,	0.991186950216842330,	0.991180325453550280,	0.991173698212307390,	0.991167068493130300,	0.991160436296035560,	0.991153801621039830,	0.991147164468159430,	
+0.991140524837411220,	0.991133882728811640,	0.991127238142377460,	0.991120591078125000,	0.991113941536071130,	0.991107289516232500,	0.991100635018625550,	0.991093978043267040,	
+0.991087318590173630,	0.991080656659361960,	0.991073992250848470,	0.991067325364650030,	0.991060656000783410,	0.991053984159265160,	0.991047309840111800,	0.991040633043340340,	
+0.991033953768967190,	0.991027272017009240,	0.991020587787482920,	0.991013901080405210,	0.991007211895792880,	0.991000520233662360,	0.990993826094030640,	0.990987129476914360,	
+0.990980430382330300,	0.990973728810295110,	0.990967024760825430,	0.990960318233938380,	0.990953609229650480,	0.990946897747978620,	0.990940183788939440,	0.990933467352549830,	
+0.990926748438826550,	0.990920027047786370,	0.990913303179446150,	0.990906576833822660,	0.990899848010932780,	0.990893116710793280,	0.990886382933420910,	0.990879646678832660,	
+0.990872907947045300,	0.990866166738075480,	0.990859423051940410,	0.990852676888656750,	0.990845928248241470,	0.990839177130711350,	0.990832423536083250,	0.990825667464374060,	
+0.990818908915600760,	0.990812147889780110,	0.990805384386929110,	0.990798618407064740,	0.990791849950203750,	0.990785079016363150,	0.990778305605559910,	0.990771529717810790,	
+0.990764751353132910,	0.990757970511543130,	0.990751187193058440,	0.990744401397695820,	0.990737613125472150,	0.990730822376404530,	0.990724029150509720,	0.990717233447804930,	
+0.990710435268306930,	0.990703634612033040,	0.990696831478999900,	0.990690025869224830,	0.990683217782724610,	0.990676407219516330,	0.990669594179617090,	0.990662778663043750,	
+0.990655960669813540,	0.990649140199943430,	0.990642317253450530,	0.990635491830351820,	0.990628663930664290,	0.990621833554405140,	0.990615000701591470,	0.990608165372240170,	
+0.990601327566368540,	0.990594487283993570,	0.990587644525132480,	0.990580799289802140,	0.990573951578019860,	0.990567101389802750,	0.990560248725167900,	0.990553393584132190,	
+0.990546535966713270,	0.990539675872927900,	0.990532813302793300,	0.990525948256326780,	0.990519080733545330,	0.990512210734466160,	0.990505338259106470,	0.990498463307483480,	
+0.990491585879614280,	0.990484705975516190,	0.990477823595206200,	0.990470938738701840,	0.990464051406020010,	0.990457161597178120,	0.990450269312193150,	0.990443374551082670,	
+0.990436477313863640,	0.990429577600553500,	0.990422675411169460,	0.990415770745728730,	0.990408863604248510,	0.990401953986746130,	0.990395041893238790,	0.990388127323744040,	
+0.990381210278278860,	0.990374290756860680,	0.990367368759506710,	0.990360444286234380,	0.990353517337061010,	0.990346587912003700,	0.990339656011079980,	0.990332721634307080,	
+0.990325784781702410,	0.990318845453283410,	0.990311903649067180,	0.990304959369071150,	0.990298012613312850,	0.990291063381809280,	0.990284111674578190,	0.990277157491636920,	
+0.990270200833002660,	0.990263241698692950,	0.990256280088725130,	0.990249316003116500,	0.990242349441884610,	0.990235380405046880,	0.990228408892620760,	0.990221434904623550,	
+0.990214458441072810,	0.990207479501985840,	0.990200498087380310,	0.990193514197273420,	0.990186527831682710,	0.990179538990625720,	0.990172547674119890,	0.990165553882182750,	
+0.990158557614831740,	0.990151558872084280,	0.990144557653957920,	0.990137553960470210,	0.990130547791638450,	0.990123539147480410,	0.990116528028013640,	0.990109514433255460,	
+0.990102498363223500,	0.990095479817935330,	0.990088458797408480,	0.990081435301660260,	0.990074409330708670,	0.990067380884571020,	0.990060349963264970,	0.990053316566807950,	
+0.990046280695217720,	0.990039242348511710,	0.990032201526707680,	0.990025158229822950,	0.990018112457875520,	0.990011064210882810,	0.990004013488862360,	0.989996960291831930,	
+0.989989904619809070,	0.989982846472811540,	0.989975785850856770,	0.989968722753962530,	0.989961657182146460,	0.989954589135426330,	0.989947518613819800,	0.989940445617344400,	
+0.989933370146017900,	0.989926292199857950,	0.989919211778882090,	0.989912128883108420,	0.989905043512554370,	0.989897955667237820,	0.989890865347176300,	0.989883772552387580,	
+0.989876677282889530,	0.989869579538699700,	0.989862479319835840,	0.989855376626315840,	0.989848271458157460,	0.989841163815378460,	0.989834053697996490,	0.989826941106029310,	
+0.989819826039494920,	0.989812708498410740,	0.989805588482794980,	0.989798465992665190,	0.989791341028039230,	0.989784213588934980,	0.989777083675370210,	0.989769951287362670,	
+0.989762816424930250,	0.989755679088090700,	0.989748539276862020,	0.989741396991262070,	0.989734252231308620,	0.989727104997019440,	0.989719955288412610,	0.989712803105505800,	
+0.989705648448317100,	0.989698491316864050,	0.989691331711164970,	0.989684169631237510,	0.989677005077099660,	0.989669838048769290,	0.989662668546264280,	0.989655496569602610,	
+0.989648322118802160,	0.989641145193880910,	0.989633965794856850,	0.989626783921747850,	0.989619599574572020,	0.989612412753347100,	0.989605223458091100,	0.989598031688822100,	
+0.989590837445557870,	0.989583640728316730,	0.989576441537116440,	0.989569239871974980,	0.989562035732910570,	0.989554829119940970,	0.989547620033084270,	0.989540408472358470,	
+0.989533194437781760,	0.989525977929372020,	0.989518758947147360,	0.989511537491125860,	0.989504313561325400,	0.989497087157764300,	0.989489858280460430,	0.989482626929431670,	
+0.989475393104696680,	0.989468156806273090,	0.989460918034179020,	0.989453676788432770,	0.989446433069052330,	0.989439186876055810,	0.989431938209461290,	0.989424687069286770,	
+0.989417433455550670,	0.989410177368271080,	0.989402918807466000,	0.989395657773153530,	0.989388394265351970,	0.989381128284079540,	0.989373859829354000,	0.989366588901194000,	
+0.989359315499617530,	0.989352039624642800,	0.989344761276287900,	0.989337480454571150,	0.989330197159510760,	0.989322911391124830,	0.989315623149431440,	0.989308332434449160,	
+0.989301039246196060,	0.989293743584690350,	0.989286445449950260,	0.989279144841994080,	0.989271841760840040,	0.989264536206506340,	0.989257228179011290,	0.989249917678373230,	
+0.989242604704610340,	0.989235289257740960,	0.989227971337783400,	0.989220650944755860,	0.989213328078676790,	0.989206002739564160,	0.989198674927436630,	0.989191344642312510,	
+0.989184011884210010,	0.989176676653147460,	0.989169338949143270,	0.989161998772215670,	0.989154656122383070,	0.989147310999663690,	0.989139963404076280,	0.989132613335638840,	
+0.989125260794369910,	0.989117905780287800,	0.989110548293410940,	0.989103188333757770,	0.989095825901346370,	0.989088460996195630,	0.989081093618323750,	0.989073723767749050,	
+0.989066351444490180,	0.989058976648565350,	0.989051599379993100,	0.989044219638791740,	0.989036837424979830,	0.989029452738575900,	0.989022065579598380,	0.989014675948065690,	
+0.989007283843996280,	0.988999889267408670,	0.988992492218321310,	0.988985092696752830,	0.988977690702721350,	0.988970286236245830,	0.988962879297344610,	0.988955469886036220,	
+0.988948058002339090,	0.988940643646271880,	0.988933226817853010,	0.988925807517101020,	0.988918385744034570,	0.988910961498672080,	0.988903534781032320,	0.988896105591133720,	
+0.988888673928994820,	0.988881239794634160,	0.988873803188070500,	0.988866364109322160,	0.988858922558408130,	0.988851478535346610,	0.988844032040156580,	0.988836583072856380,	
+0.988829131633464750,	0.988821677722000250,	0.988814221338481620,	0.988806762482927200,	0.988799301155356080,	0.988791837355786680,	0.988784371084237780,	0.988776902340727900,	
+0.988769431125275710,	0.988761957437899960,	0.988754481278619200,	0.988747002647452410,	0.988739521544418020,	0.988732037969534900,	0.988724551922821710,	0.988717063404297100,	
+0.988709572413979830,	0.988702078951888660,	0.988694583018042140,	0.988687084612459240,	0.988679583735158740,	0.988672080386159170,	0.988664574565479400,	0.988657066273138320,	
+0.988649555509154450,	0.988642042273546680,	0.988634526566333770,	0.988627008387534700,	0.988619487737168010,	0.988611964615252690,	0.988604439021807390,	0.988596910956850980,	
+0.988589380420402340,	0.988581847412480120,	0.988574311933103410,	0.988566773982290870,	0.988559233560061480,	0.988551690666433890,	0.988544145301427200,	0.988536597465060060,	
+0.988529047157351460,	0.988521494378320150,	0.988513939127985130,	0.988506381406365380,	0.988498821213479540,	0.988491258549346830,	0.988483693413985790,	0.988476125807415620,	
+0.988468555729654970,	0.988460983180723060,	0.988453408160638760,	0.988445830669420930,	0.988438250707088460,	0.988430668273660440,	0.988423083369155630,	0.988415495993593240,	
+0.988407906146991920,	0.988400313829370880,	0.988392719040749210,	0.988385121781145680,	0.988377522050579270,	0.988369919849069190,	0.988362315176634200,	0.988354708033293510,	
+0.988347098419065870,	0.988339486333970620,	0.988331871778026620,	0.988324254751253070,	0.988316635253668750,	0.988309013285292860,	0.988301388846144490,	0.988293761936242520,	
+0.988286132555606270,	0.988278500704254600,	0.988270866382206740,	0.988263229589481760,	0.988255590326098670,	0.988247948592076540,	0.988240304387434710,	0.988232657712191820,	
+0.988225008566367520,	0.988217356949980590,	0.988209702863050320,	0.988202046305595830,	0.988194387277636200,	0.988186725779190640,	0.988179061810278040,	0.988171395370918030,	
+0.988163726461129490,	0.988156055080931630,	0.988148381230343650,	0.988140704909384660,	0.988133026118073960,	0.988125344856430670,	0.988117661124473860,	0.988109974922223080,	
+0.988102286249697310,	0.988094595106915890,	0.988086901493898000,	0.988079205410662740,	0.988071506857229550,	0.988063805833617640,	0.988056102339845980,	0.988048396375934220,	
+0.988040687941901470,	0.988032977037767050,	0.988025263663550150,	0.988017547819270090,	0.988009829504946200,	0.988002108720597570,	0.987994385466243850,	0.987986659741904140,	
+0.987978931547597750,	0.987971200883344000,	0.987963467749162330,	0.987955732145071930,	0.987947994071092240,	0.987940253527242460,	0.987932510513542140,	0.987924765030010480,	
+0.987917017076667010,	0.987909266653530960,	0.987901513760621740,	0.987893758397958680,	0.987886000565561310,	0.987878240263448840,	0.987870477491640810,	0.987862712250156650,	
+0.987854944539015680,	0.987847174358237320,	0.987839401707841010,	0.987831626587846290,	0.987823848998272360,	0.987816068939138870,	0.987808286410465250,	0.987800501412270830,	
+0.987792713944575240,	0.987784924007397920,	0.987777131600758200,	0.987769336724675710,	0.987761539379169660,	0.987753739564259940,	0.987745937279965960,	0.987738132526307040,	
+0.987730325303302740,	0.987722515610972680,	0.987714703449336430,	0.987706888818413180,	0.987699071718222910,	0.987691252148784840,	0.987683430110118720,	0.987675605602244100,	
+0.987667778625180290,	0.987659949178947170,	0.987652117263564170,	0.987644282879050710,	0.987636446025426660,	0.987628606702711580,	0.987620764910924880,	0.987612920650086320,	
+0.987605073920215460,	0.987597224721331820,	0.987589373053455290,	0.987581518916605060,	0.987573662310801240,	0.987565803236063240,	0.987557941692410730,	0.987550077679863360,	
+0.987542211198440770,	0.987534342248162720,	0.987526470829048650,	0.987518596941118540,	0.987510720584391930,	0.987502841758888470,	0.987494960464628040,	0.987487076701630050,	
+0.987479190469914500,	0.987471301769500930,	0.987463410600408990,	0.987455516962658540,	0.987447620856269470,	0.987439722281261200,	0.987431821237653720,	0.987423917725466670,	
+0.987416011744719820,	0.987408103295432830,	0.987400192377625660,	0.987392278991317980,	0.987384363136529660,	0.987376444813280460,	0.987368524021590140,	0.987360600761478470,	
+0.987352675032965310,	0.987344746836070320,	0.987336816170813700,	0.987328883037214890,	0.987320947435293970,	0.987313009365070720,	0.987305068826564880,	0.987297125819796340,	
+0.987289180344784970,	0.987281232401550520,	0.987273281990113220,	0.987265329110492700,	0.987257373762708830,	0.987249415946781510,	0.987241455662730580,	0.987233492910576160,	
+0.987225527690337780,	0.987217560002035750,	0.987209589845689740,	0.987201617221319830,	0.987193642128945890,	0.987185664568587810,	0.987177684540265550,	0.987169702043999120,	
+0.987161717079808270,	0.987153729647713310,	0.987145739747734010,	0.987137747379890350,	0.987129752544202320,	0.987121755240689900,	0.987113755469373190,	0.987105753230271940,	
+0.987097748523406260,	0.987089741348796350,	0.987081731706462070,	0.987073719596423430,	0.987065705018700500,	0.987057687973313280,	0.987049668460281970,	0.987041646479626220,	
+0.987033622031366580,	0.987025595115522790,	0.987017565732115080,	0.987009533881163410,	0.987001499562688010,	0.986993462776708740,	0.986985423523245920,	0.986977381802319310,	
+0.986969337613949450,	0.986961290958156210,	0.986953241834959690,	0.986945190244380210,	0.986937136186437640,	0.986929079661152290,	0.986921020668544040,	0.986912959208633420,	
+0.986904895281440320,	0.986896828886985160,	0.986888760025287800,	0.986880688696368580,	0.986872614900247580,	0.986864538636945120,	0.986856459906481080,	0.986848378708876100,	
+0.986840295044150160,	0.986832208912323480,	0.986824120313416380,	0.986816029247448820,	0.986807935714441250,	0.986799839714413870,	0.986791741247386670,	0.986783640313380390,	
+0.986775536912414930,	0.986767431044510590,	0.986759322709687690,	0.986751211907966550,	0.986743098639367380,	0.986734982903910260,	0.986726864701615860,	0.986718744032504260,	
+0.986710620896595780,	0.986702495293910850,	0.986694367224469570,	0.986686236688292470,	0.986678103685399770,	0.986669968215811540,	0.986661830279548680,	0.986653689876631160,	
+0.986645547007079520,	0.986637401670913960,	0.986629253868154810,	0.986621103598822600,	0.986612950862937650,	0.986604795660520170,	0.986596637991590810,	0.986588477856169880,	
+0.986580315254277700,	0.986572150185934800,	0.986563982651161520,	0.986555812649978270,	0.986547640182405370,	0.986539465248463480,	0.986531287848172900,	0.986523107981554180,	
+0.986514925648627640,	0.986506740849413810,	0.986498553583933120,	0.986490363852206010,	0.986482171654252890,	0.986473976990094540,	0.986465779859751150,	0.986457580263243370,	
+0.986449378200591640,	0.986441173671816380,	0.986432966676938250,	0.986424757215977550,	0.986416545288955060,	0.986408330895891310,	0.986400114036806720,	0.986391894711721730,	
+0.986383672920657100,	0.986375448663633250,	0.986367221940670840,	0.986358992751790180,	0.986350761097012140,	0.986342526976357270,	0.986334290389846100,	0.986326051337499180,	
+0.986317809819337030,	0.986309565835380430,	0.986301319385650020,	0.986293070470166010,	0.986284819088949490,	0.986276565242021010,	0.986268308929401090,	0.986260050151110400,	
+0.986251788907169580,	0.986243525197599280,	0.986235259022419930,	0.986226990381652730,	0.986218719275318010,	0.986210445703436410,	0.986202169666028810,	0.986193891163115730,	
+0.986185610194717950,	0.986177326760856120,	0.986169040861550770,	0.986160752496823000,	0.986152461666693460,	0.986144168371182680,	0.986135872610311440,	0.986127574384100590,	
+0.986119273692570800,	0.986110970535742700,	0.986102664913637180,	0.986094356826275110,	0.986086046273677130,	0.986077733255864010,	0.986069417772856620,	0.986061099824675600,	
+0.986052779411341840,	0.986044456532876090,	0.986036131189299230,	0.986027803380632120,	0.986019473106895530,	0.986011140368110220,	0.986002805164296950,	0.985994467495476810,	
+0.985986127361670460,	0.985977784762898660,	0.985969439699182490,	0.985961092170542730,	0.985952742177000240,	0.985944389718576010,	0.985936034795290680,	0.985927677407165250,	
+0.985919317554220580,	0.985910955236477650,	0.985902590453957450,	0.985894223206680740,	0.985885853494668400,	0.985877481317941510,	0.985869106676520830,	0.985860729570427470,	
+0.985852349999682190,	0.985843967964306070,	0.985835583464319990,	0.985827196499745040,	0.985818807070602100,	0.985810415176912150,	0.985802020818696170,	0.985793623995975030,	
+0.985785224708769840,	0.985776822957101670,	0.985768418740991410,	0.985760012060460040,	0.985751602915528770,	0.985743191306218460,	0.985734777232550210,	0.985726360694544780,	
+0.985717941692223600,	0.985709520225607650,	0.985701096294717800,	0.985692669899575270,	0.985684241040201140,	0.985675809716616280,	0.985667375928841900,	0.985658939676898990,	
+0.985650500960808860,	0.985642059780592490,	0.985633616136270980,	0.985625170027865430,	0.985616721455396920,	0.985608270418886660,	0.985599816918355630,	0.985591360953824940,	
+0.985582902525316110,	0.985574441632849910,	0.985565978276447650,	0.985557512456130440,	0.985549044171919460,	0.985540573423835830,	0.985532100211900630,	0.985523624536135290,	
+0.985515146396561010,	0.985506665793198790,	0.985498182726069930,	0.985489697195195520,	0.985481209200597010,	0.985472718742295360,	0.985464225820311790,	0.985455730434667830,	
+0.985447232585384580,	0.985438732272483130,	0.985430229495985020,	0.985421724255911240,	0.985413216552283090,	0.985404706385121900,	0.985396193754448980,	0.985387678660285650,	
+0.985379161102653000,	0.985370641081572570,	0.985362118597065460,	0.985353593649153090,	0.985345066237856780,	0.985336536363197620,	0.985328004025197270,	0.985319469223876810,	
+0.985310931959257790,	0.985302392231361400,	0.985293850040209080,	0.985285305385822150,	0.985276758268221920,	0.985268208687429590,	0.985259656643466930,	0.985251102136355140,	
+0.985242545166115650,	0.985233985732769660,	0.985225423836338820,	0.985216859476844340,	0.985208292654307650,	0.985199723368750280,	0.985191151620193660,	0.985182577408659220,	
+0.985174000734168280,	0.985165421596742360,	0.985156839996402800,	0.985148255933171240,	0.985139669407068870,	0.985131080418117370,	0.985122488966338250,	0.985113895051752950,	
+0.985105298674382900,	0.985096699834249630,	0.985088098531374470,	0.985079494765779050,	0.985070888537485030,	0.985062279846513730,	0.985053668692886800,	0.985045055076625650,	
+0.985036438997751840,	0.985027820456287010,	0.985019199452252580,	0.985010575985669990,	0.985001950056561100,	0.984993321664947350,	0.984984690810850380,	0.984976057494291620,	
+0.984967421715292720,	0.984958783473875220,	0.984950142770060770,	0.984941499603870900,	0.984932853975327370,	0.984924205884451620,	0.984915555331265510,	0.984906902315790480,	
+0.984898246838048160,	0.984889588898060220,	0.984880928495848070,	0.984872265631433930,	0.984863600304838990,	0.984854932516085140,	0.984846262265193890,	0.984837589552187030,	
+0.984828914377086200,	0.984820236739913040,	0.984811556640689200,	0.984802874079436560,	0.984794189056176770,	0.984785501570931480,	0.984776811623722440,	0.984768119214571410,	
+0.984759424343500060,	0.984750727010530120,	0.984742027215683270,	0.984733324958981470,	0.984724620240446270,	0.984715913060099650,	0.984707203417963250,	0.984698491314058730,	
+0.984689776748408070,	0.984681059721032810,	0.984672340231955050,	0.984663618281196420,	0.984654893868778800,	0.984646166994723850,	0.984637437659053540,	0.984628705861789630,	
+0.984619971602954000,	0.984611234882568190,	0.984602495700654500,	0.984593754057234590,	0.984585009952330230,	0.984576263385963490,	0.984567514358155930,	0.984558762868929630,	
+0.984550008918306350,	0.984541252506308080,	0.984532493632956810,	0.984523732298274170,	0.984514968502282260,	0.984506202245002960,	0.984497433526458130,	0.984488662346669760,	
+0.984479888705659500,	0.984471112603449770,	0.984462334040062110,	0.984453553015518730,	0.984444769529841500,	0.984435983583052290,	0.984427195175173080,	0.984418404306225960,	
+0.984409610976232590,	0.984400815185215380,	0.984392016933196220,	0.984383216220196980,	0.984374413046239630,	0.984365607411346270,	0.984356799315538880,	0.984347988758839440,	
+0.984339175741270060,	0.984330360262852810,	0.984321542323609580,	0.984312721923562560,	0.984303899062733740,	0.984295073741145220,	0.984286245958818970,	0.984277415715776870,	
+0.984268583012041450,	0.984259747847634590,	0.984250910222578380,	0.984242070136894910,	0.984233227590606160,	0.984224382583734460,	0.984215535116301670,	0.984206685188329990,	
+0.984197832799841740,	0.984188977950858910,	0.984180120641403590,	0.984171260871497980,	0.984162398641164280,	0.984153533950424600,	0.984144666799300790,	0.984135797187815520,	
+0.984126925115990870,	0.984118050583848820,	0.984109173591411590,	0.984100294138701480,	0.984091412225740700,	0.984082527852551350,	0.984073641019155510,	0.984064751725575730,	
+0.984055859971833980,	0.984046965757952700,	0.984038069083953970,	0.984029169949860120,	0.984020268355693230,	0.984011364301475620,	0.984002457787229720,	0.983993548812977630,	
+0.983984637378741760,	0.983975723484544210,	0.983966807130407410,	0.983957888316353560,	0.983948967042404980,	0.983940043308583870,	0.983931117114912770,	0.983922188461413880,	
+0.983913257348109530,	0.983904323775022020,	0.983895387742173670,	0.983886449249586900,	0.983877508297284040,	0.983868564885287180,	0.983859619013619180,	0.983850670682302030,	
+0.983841719891358270,	0.983832766640810100,	0.983823810930680160,	0.983814852760990570,	0.983805892131763730,	0.983796929043022290,	0.983787963494788590,	0.983778995487085030,	
+0.983770025019933820,	0.983761052093357740,	0.983752076707378850,	0.983743098862019830,	0.983734118557302970,	0.983725135793250940,	0.983716150569886040,	0.983707162887230810,	
+0.983698172745307580,	0.983689180144138970,	0.983680185083747440,	0.983671187564155500,	0.983662187585385260,	0.983653185147459920,	0.983644180250401460,	0.983635172894232630,	
+0.983626163078975770,	0.983617150804653620,	0.983608136071288500,	0.983599118878902940,	0.983590099227519720,	0.983581077117161250,	0.983572052547850180,	0.983563025519608840,	
+0.983553996032459970,	0.983544964086426220,	0.983535929681529920,	0.983526892817793710,	0.983517853495240350,	0.983508811713892480,	0.983499767473772550,	0.983490720774903070,	
+0.983481671617306930,	0.983472620001006550,	0.983463565926024460,	0.983454509392383660,	0.983445450400106560,	0.983436388949215920,	0.983427325039734180,	0.983418258671684200,	
+0.983409189845088520,	0.983400118559969890,	0.983391044816350760,	0.983381968614254310,	0.983372889953702870,	0.983363808834719190,	0.983354725257325920,	0.983345639221545940,	
+0.983336550727401780,	0.983327459774916310,	0.983318366364112070,	0.983309270495011930,	0.983300172167638760,	0.983291071382015100,	0.983281968138163710,	0.983272862436107450,	
+0.983263754275869100,	0.983254643657471170,	0.983245530580936780,	0.983236415046288450,	0.983227297053549280,	0.983218176602741690,	0.983209053693888780,	0.983199928327013200,	
+0.983190800502137810,	0.983181670219285260,	0.983172537478478660,	0.983163402279740750,	0.983154264623094300,	0.983145124508562170,	0.983135981936167250,	0.983126836905932390,	
+0.983117689417880470,	0.983108539472034140,	0.983099387068416600,	0.983090232207050610,	0.983081074887959040,	0.983071915111164870,	0.983062752876690760,	0.983053588184559900,	
+0.983044421034794840,	0.983035251427418880,	0.983026079362454790,	0.983016904839925540,	0.983007727859854020,	0.982998548422263200,	0.982989366527175950,	0.982980182174615360,	
+0.982970995364604080,	0.982961806097165440,	0.982952614372322400,	0.982943420190097730,	0.982934223550514630,	0.982925024453595860,	0.982915822899364520,	0.982906618887843480,	
+0.982897412419056150,	0.982888203493025190,	0.982878992109773810,	0.982869778269324870,	0.982860561971701460,	0.982851343216926690,	0.982842122005023630,	0.982832898336014950,	
+0.982823672209924280,	0.982814443626774500,	0.982805212586588480,	0.982795979089389540,	0.982786743135200540,	0.982777504724044790,	0.982768263855945180,	0.982759020530924790,	
+0.982749774749007040,	0.982740526510214820,	0.982731275814571310,	0.982722022662099630,	0.982712767052822840,	0.982703508986764170,	0.982694248463946480,	0.982684985484393430,	
+0.982675720048127870,	0.982666452155173010,	0.982657181805552060,	0.982647908999288110,	0.982638633736404480,	0.982629356016924140,	0.982620075840870300,	0.982610793208266500,	
+0.982601508119135600,	0.982592220573501040,	0.982582930571385900,	0.982573638112813400,	0.982564343197806830,	0.982555045826389310,	0.982545745998584130,	0.982536443714414730,	
+0.982527138973904200,	0.982517831777075860,	0.982508522123952900,	0.982499210014558640,	0.982489895448916290,	0.982480578427049170,	0.982471258948980690,	0.982461937014734050,	
+0.982452612624332590,	0.982443285777799600,	0.982433956475158410,	0.982424624716432330,	0.982415290501644670,	0.982405953830818630,	0.982396614703977880,	0.982387273121145600,	
+0.982377929082345110,	0.982368582587599740,	0.982359233636933000,	0.982349882230368120,	0.982340528367928400,	0.982331172049637600,	0.982321813275518820,	0.982312452045595470,	
+0.982303088359891000,	0.982293722218428810,	0.982284353621232340,	0.982274982568324910,	0.982265609059729930,	0.982256233095471170,	0.982246854675571710,	0.982237473800055110,	
+0.982228090468944880,	0.982218704682264350,	0.982209316440037170,	0.982199925742286650,	0.982190532589036100,	0.982181136980309510,	0.982171738916129970,	0.982162338396521120,	
+0.982152935421506390,	0.982143529991109320,	0.982134122105353450,	0.982124711764262080,	0.982115298967859210,	0.982105883716168030,	0.982096466009212080,	0.982087045847015010,	
+0.982077623229600350,	0.982068198156991530,	0.982058770629212320,	0.982049340646286020,	0.982039908208236500,	0.982030473315087190,	0.982021035966861740,	0.982011596163583690,	
+0.982002153905276560,	0.981992709191964240,	0.981983262023669810,	0.981973812400417480,	0.981964360322230560,	0.981954905789132800,	0.981945448801147760,	0.981935989358299070,	
+0.981926527460610380,	0.981917063108105450,	0.981907596300807590,	0.981898127038741020,	0.981888655321929040,	0.981879181150395520,	0.981869704524164000,	0.981860225443258240,	
+0.981850743907701880,	0.981841259917518690,	0.981831773472732210,	0.981822284573366400,	0.981812793219444810,	0.981803299410991430,	0.981793803148029660,	0.981784304430583400,	
+0.981774803258676390,	0.981765299632332280,	0.981755793551575050,	0.981746285016428240,	0.981736774026915840,	0.981727260583061480,	0.981717744684888930,	0.981708226332422050,	
+0.981698705525684500,	0.981689182264700140,	0.981679656549492960,	0.981670128380086600,	0.981660597756505050,	0.981651064678771830,	0.981641529146911050,	0.981631991160946460,	
+0.981622450720901930,	0.981612907826801000,	0.981603362478667970,	0.981593814676526620,	0.981584264420400700,	0.981574711710314070,	0.981565156546290730,	0.981555598928354420,	
+0.981546038856529020,	0.981536476330838630,	0.981526911351307100,	0.981517343917958310,	0.981507774030816130,	0.981498201689904540,	0.981488626895247410,	0.981479049646868720,	
+0.981469469944792230,	0.981459887789042250,	0.981450303179642550,	0.981440716116617100,	0.981431126599989770,	0.981421534629784760,	0.981411940206025850,	0.981402343328736880,	
+0.981392743997942300,	0.981383142213665850,	0.981373537975931520,	0.981363931284763290,	0.981354322140185360,	0.981344710542221500,	0.981335096490896010,	0.981325479986232430,	
+0.981315861028255410,	0.981306239616988820,	0.981296615752456520,	0.981286989434682730,	0.981277360663691420,	0.981267729439506690,	0.981258095762152730,	0.981248459631653300,	
+0.981238821048032950,	0.981229180011315430,	0.981219536521525050,	0.981209890578685790,	0.981200242182821870,	0.981190591333957360,	0.981180938032116150,	0.981171282277322750,	
+0.981161624069601170,	0.981151963408975480,	0.981142300295469890,	0.981132634729108610,	0.981122966709915720,	0.981113296237915430,	0.981103623313131610,	0.981093947935589020,	
+0.981084270105311520,	0.981074589822323430,	0.981064907086648730,	0.981055221898311850,	0.981045534257336980,	0.981035844163748120,	0.981026151617569560,	0.981016456618825750,	
+0.981006759167540880,	0.980997059263739040,	0.980987356907444650,	0.980977652098681710,	0.980967944837474740,	0.980958235123847720,	0.980948522957825310,	0.980938808339431590,	
+0.980929091268690770,	0.980919371745627380,	0.980909649770265400,	0.980899925342629380,	0.980890198462743500,	0.980880469130631980,	0.980870737346319470,	0.980861003109830150,	
+0.980851266421188250,	0.980841527280418180,	0.980831785687544370,	0.980822041642591010,	0.980812295145582440,	0.980802546196543280,	0.980792794795497750,	0.980783040942470260,	
+0.980773284637485140,	0.980763525880566810,	0.980753764671739690,	0.980744001011028100,	0.980734234898456460,	0.980724466334049310,	0.980714695317830950,	0.980704921849825940,	
+0.980695145930058580,	0.980685367558553400,	0.980675586735334730,	0.980665803460427200,	0.980656017733854910,	0.980646229555642730,	0.980636438925815090,	0.980626645844396180,	
+0.980616850311410770,	0.980607052326883280,	0.980597251890838020,	0.980587449003299530,	0.980577643664292680,	0.980567835873841550,	0.980558025631970920,	0.980548212938705310,	
+0.980538397794069040,	0.980528580198086750,	0.980518760150783100,	0.980508937652182390,	0.980499112702309490,	0.980489285301188730,	0.980479455448844850,	0.980469623145302280,	
+0.980459788390585670,	0.980449951184719670,	0.980440111527728700,	0.980430269419637290,	0.980420424860470320,	0.980410577850252430,	0.980400728389007940,	0.980390876476761710,	
+0.980381022113538390,	0.980371165299362410,	0.980361306034258310,	0.980351444318251160,	0.980341580151365410,	0.980331713533625690,	0.980321844465056660,	0.980311972945683060,	
+0.980302098975529560,	0.980292222554620780,	0.980282343682981170,	0.980272462360636030,	0.980262578587609680,	0.980252692363926870,	0.980242803689612360,	0.980232912564690810,	
+0.980223018989186960,	0.980213122963125460,	0.980203224486531190,	0.980193323559429010,	0.980183420181843460,	0.980173514353799400,	0.980163606075321490,	0.980153695346434590,	
+0.980143782167163470,	0.980133866537532650,	0.980123948457567450,	0.980114027927292300,	0.980104104946732060,	0.980094179515911600,	0.980084251634855800,	0.980074321303589180,	
+0.980064388522136840,	0.980054453290523430,	0.980044515608773930,	0.980034575476913190,	0.980024632894966110,	0.980014687862957310,	0.980004740380911900,	0.979994790448854510,	
+0.979984838066810030,	0.979974883234803640,	0.979964925952860110,	0.979954966221004200,	0.979945004039260880,	0.979935039407655030,	0.979925072326211620,	0.979915102794955530,	
+0.979905130813911400,	0.979895156383104760,	0.979885179502560160,	0.979875200172302560,	0.979865218392357070,	0.979855234162748450,	0.979845247483501880,	0.979835258354642020,	
+0.979825266776193970,	0.979815272748182810,	0.979805276270633630,	0.979795277343571080,	0.979785275967020470,	0.979775272141006570,	0.979765265865554570,	0.979755257140689230,	
+0.979745245966435860,	0.979735232342819450,	0.979725216269864860,	0.979715197747597300,	0.979705176776041740,	0.979695153355223280,	0.979685127485166900,	0.979675099165897460,	
+0.979665068397440500,	0.979655035179820890,	0.979644999513063720,	0.979634961397193970,	0.979624920832236850,	0.979614877818217430,	0.979604832355160720,	0.979594784443092000,	
+0.979584734082036390,	0.979574681272018850,	0.979564626013064710,	0.979554568305198940,	0.979544508148446740,	0.979534445542833310,	0.979524380488383640,	0.979514312985123040,	
+0.979504243033076820,	0.979494170632269960,	0.979484095782727550,	0.979474018484475020,	0.979463938737537450,	0.979453856541939950,	0.979443771897707700,	0.979433684804866140,	
+0.979423595263440470,	0.979413503273455780,	0.979403408834937260,	0.979393311947910240,	0.979383212612400020,	0.979373110828431480,	0.979363006596030370,	0.979352899915221790,	
+0.979342790786030930,	0.979332679208483100,	0.979322565182603630,	0.979312448708417600,	0.979302329785950550,	0.979292208415227570,	0.979282084596274080,	0.979271958329115510,	
+0.979261829613777060,	0.979251698450283930,	0.979241564838661650,	0.979231428778935320,	0.979221290271130360,	0.979211149315272310,	0.979201005911386370,	0.979190860059497960,	
+0.979180711759632390,	0.979170561011815100,	0.979160407816071280,	0.979150252172426570,	0.979140094080905960,	0.979129933541535320,	0.979119770554339850,	0.979109605119344970,	
+0.979099437236576000,	0.979089266906058580,	0.979079094127817910,	0.979068918901879410,	0.979058741228268530,	0.979048561107011000,	0.979038378538132030,	0.979028193521657150,	
+0.979018006057611800,	0.979007816146021390,	0.978997623786911460,	0.978987428980307330,	0.978977231726234740,	0.978967032024719020,	0.978956829875785810,	0.978946625279460520,	
+0.978936418235768710,	0.978926208744735790,	0.978915996806387300,	0.978905782420748770,	0.978895565587845850,	0.978885346307704070,	0.978875124580348870,	0.978864900405805870,	
+0.978854673784100740,	0.978844444715258780,	0.978834213199305750,	0.978823979236267070,	0.978813742826168510,	0.978803503969035700,	0.978793262664894080,	0.978783018913769290,	
+0.978772772715687080,	0.978762524070672770,	0.978752272978752000,	0.978742019439950760,	0.978731763454294580,	0.978721505021808880,	0.978711244142519420,	0.978700980816451850,	
+0.978690715043631810,	0.978680446824084950,	0.978670176157836910,	0.978659903044913570,	0.978649627485340460,	0.978639349479143220,	0.978629069026347720,	0.978618786126979500,	
+0.978608500781064210,	0.978598212988627590,	0.978587922749695640,	0.978577630064293880,	0.978567334932447960,	0.978557037354183870,	0.978546737329527020,	0.978536434858503390,	
+0.978526129941138630,	0.978515822577458510,	0.978505512767488870,	0.978495200511255490,	0.978484885808784120,	0.978474568660100520,	0.978464249065230440,	0.978453927024199870,	
+0.978443602537034440,	0.978433275603759700,	0.978422946224402070,	0.978412614398987080,	0.978402280127540490,	0.978391943410088280,	0.978381604246656210,	0.978371262637270030,	
+0.978360918581955620,	0.978350572080739060,	0.978340223133645990,	0.978329871740702520,	0.978319517901934280,	0.978309161617367250,	0.978298802887027310,	0.978288441710940320,	
+0.978278078089132140,	0.978267712021628880,	0.978257343508456390,	0.978246972549640550,	0.978236599145207220,	0.978226223295182380,	0.978215844999592020,	0.978205464258462000,	
+0.978195081071818180,	0.978184695439686890,	0.978174307362093880,	0.978163916839065010,	0.978153523870626370,	0.978143128456803960,	0.978132730597623620,	0.978122330293111350,	
+0.978111927543293460,	0.978101522348195700,	0.978091114707844160,	0.978080704622264820,	0.978070292091483770,	0.978059877115527000,	0.978049459694420480,	0.978039039828190070,	
+0.978028617516862320,	0.978018192760463090,	0.978007765559018250,	0.977997335912554110,	0.977986903821096540,	0.977976469284671750,	0.977966032303305590,	0.977955592877024600,	
+0.977945151005854550,	0.977934706689821630,	0.977924259928951930,	0.977913810723271660,	0.977903359072806790,	0.977892904977583520,	0.977882448437627840,	0.977871989452966270,	
+0.977861528023624690,	0.977851064149629190,	0.977840597831006190,	0.977830129067781550,	0.977819657859981710,	0.977809184207632630,	0.977798708110760420,	0.977788229569391710,	
+0.977777748583552380,	0.977767265153268620,	0.977756779278566750,	0.977746290959472960,	0.977735800196013360,	0.977725306988214140,	0.977714811336101830,	0.977704313239702530,	
+0.977693812699042430,	0.977683309714147740,	0.977672804285044770,	0.977662296411759830,	0.977651786094319130,	0.977641273332748860,	0.977630758127075560,	0.977620240477325320,	
+0.977609720383524450,	0.977599197845699370,	0.977588672863876180,	0.977578145438081410,	0.977567615568341260,	0.977557083254681820,	0.977546548497129960,	0.977536011295711660,	
+0.977525471650453340,	0.977514929561381420,	0.977504385028522100,	0.977493838051901820,	0.977483288631546770,	0.977472736767483700,	0.977462182459738700,	0.977451625708338320,	
+0.977441066513308860,	0.977430504874676750,	0.977419940792468410,	0.977409374266710150,	0.977398805297428290,	0.977388233884649680,	0.977377660028400430,	0.977367083728706950,	
+0.977356504985595900,	0.977345923799093460,	0.977335340169226300,	0.977324754096020600,	0.977314165579503120,	0.977303574619700300,	0.977292981216638550,	0.977282385370344290,	
+0.977271787080844170,	0.977261186348164500,	0.977250583172331820,	0.977239977553372550,	0.977229369491313560,	0.977218758986181160,	0.977208146038001770,	0.977197530646802040,	
+0.977186912812608500,	0.977176292535447690,	0.977165669815346140,	0.977155044652330270,	0.977144417046426960,	0.977133786997662510,	0.977123154506063680,	0.977112519571657010,	
+0.977101882194468920,	0.977091242374526270,	0.977080600111855270,	0.977069955406482890,	0.977059308258435680,	0.977048658667740160,	0.977038006634422970,	0.977027352158510890,	
+0.977016695240030320,	0.977006035879008030,	0.976995374075470550,	0.976984709829444740,	0.976974043140957150,	0.976963374010034520,	0.976952702436703400,	0.976942028420990540,	
+0.976931351962922580,	0.976920673062526280,	0.976909991719828060,	0.976899307934855130,	0.976888621707633800,	0.976877933038191040,	0.976867241926553390,	0.976856548372747710,	
+0.976845852376800550,	0.976835153938738650,	0.976824453058589000,	0.976813749736378250,	0.976803043972133130,	0.976792335765880430,	0.976781625117646770,	0.976770912027459140,	
+0.976760196495344290,	0.976749478521328650,	0.976738758105439530,	0.976728035247703570,	0.976717309948147430,	0.976706582206798070,	0.976695852023682250,	0.976685119398826850,	
+0.976674384332258390,	0.976663646824004190,	0.976652906874090900,	0.976642164482545260,	0.976631419649394260,	0.976620672374664770,	0.976609922658383530,	0.976599170500577430,	
+0.976588415901273320,	0.976577658860498300,	0.976566899378279230,	0.976556137454642760,	0.976545373089616090,	0.976534606283225860,	0.976523837035499160,	0.976513065346462870,	
+0.976502291216143850,	0.976491514644569180,	0.976480735631765630,	0.976469954177760390,	0.976459170282580220,	0.976448383946252110,	0.976437595168803020,	0.976426803950259830,	
+0.976416010290649730,	0.976405214189999700,	0.976394415648336510,	0.976383614665687350,	0.976372811242079200,	0.976362005377539030,	0.976351197072093720,	0.976340386325770360,	
+0.976329573138596140,	0.976318757510598050,	0.976307939441803050,	0.976297118932238140,	0.976286295981930510,	0.976275470590907140,	0.976264642759194780,	0.976253812486821080,	
+0.976242979773812910,	0.976232144620197250,	0.976221307026001180,	0.976210466991251910,	0.976199624515976530,	0.976188779600202010,	0.976177932243955330,	0.976167082447264020,	
+0.976156230210154960,	0.976145375532655460,	0.976134518414792370,	0.976123658856593130,	0.976112796858084610,	0.976101932419294220,	0.976091065540248710,	0.976080196220975750,	
+0.976069324461502410,	0.976058450261855560,	0.976047573622062740,	0.976036694542150920,	0.976025813022147410,	0.976014929062079100,	0.976004042661973710,	0.975993153821858250,	
+0.975982262541759900,	0.975971368821705880,	0.975960472661723370,	0.975949574061839690,	0.975938673022082150,	0.975927769542477730,	0.975916863623053970,	0.975905955263838170,	
+0.975895044464857420,	0.975884131226139150,	0.975873215547710450,	0.975862297429598740,	0.975851376871831320,	0.975840453874435190,	0.975829528437438200,	0.975818600560867330,	
+0.975807670244750010,	0.975796737489113440,	0.975785802293985150,	0.975774864659392230,	0.975763924585361990,	0.975752982071922180,	0.975742037119099900,	0.975731089726922460,	
+0.975720139895417390,	0.975709187624611900,	0.975698232914533500,	0.975687275765209530,	0.975676316176667060,	0.975665354148934070,	0.975654389682037770,	0.975643422776005350,	
+0.975632453430864470,	0.975621481646642420,	0.975610507423366750,	0.975599530761064540,	0.975588551659763660,	0.975577570119491420,	0.975566586140275360,	0.975555599722142670,	
+0.975544610865121120,	0.975533619569238010,	0.975522625834520760,	0.975511629660996920,	0.975500631048694110,	0.975489629997639660,	0.975478626507861210,	0.975467620579386190,	
+0.975456612212242110,	0.975445601406456530,	0.975434588162056860,	0.975423572479070630,	0.975412554357525610,	0.975401533797449210,	0.975390510798868960,	0.975379485361812400,	
+0.975368457486307180,	0.975357427172380830,	0.975346394420060660,	0.975335359229374750,	0.975324321600350430,	0.975313281533015330,	0.975302239027396990,	0.975291194083523050,	
+0.975280146701421160,	0.975269096881118850,	0.975258044622643650,	0.975246989926023540,	0.975235932791285950,	0.975224873218458520,	0.975213811207568890,	0.975202746758644820,	
+0.975191679871713730,	0.975180610546803490,	0.975169538783941640,	0.975158464583156030,	0.975147387944474310,	0.975136308867924130,	0.975125227353533130,	0.975114143401329070,	
+0.975103057011339700,	0.975091968183592450,	0.975080876918115400,	0.975069783214936310,	0.975058687074082610,	0.975047588495582260,	0.975036487479463030,	0.975025384025752450,	
+0.975014278134478500,	0.975003169805668590,	0.974992059039351040,	0.974980945835553280,	0.974969830194303170,	0.974958712115628460,	0.974947591599557020,	0.974936468646116490,	
+0.974925343255334750,	0.974914215427239770,	0.974903085161859200,	0.974891952459221000,	0.974880817319352940,	0.974869679742282780,	0.974858539728038380,	0.974847397276647710,	
+0.974836252388138310,	0.974825105062538500,	0.974813955299875910,	0.974802803100178420,	0.974791648463473990,	0.974780491389790390,	0.974769331879155490,	0.974758169931597360,	
+0.974747005547143550,	0.974735838725822480,	0.974724669467661790,	0.974713497772689450,	0.974702323640933340,	0.974691147072421440,	0.974679968067181600,	0.974668786625241700,	
+0.974657602746630050,	0.974646416431374400,	0.974635227679502720,	0.974624036491042900,	0.974612842866023010,	0.974601646804471030,	0.974590448306414950,	0.974579247371882510,	
+0.974568044000902130,	0.974556838193501700,	0.974545629949709170,	0.974534419269552530,	0.974523206153059870,	0.974511990600259280,	0.974500772611178620,	0.974489552185845760,	
+0.974478329324289350,	0.974467104026537020,	0.974455876292616980,	0.974444646122557210,	0.974433413516385900,	0.974422178474131040,	0.974410940995820480,	0.974399701081482770,	
+0.974388458731145880,	0.974377213944837780,	0.974365966722586680,	0.974354717064420670,	0.974343464970367830,	0.974332210440456370,	0.974320953474714150,	0.974309694073169700,	
+0.974298432235851110,	0.974287167962786360,	0.974275901254003760,	0.974264632109531400,	0.974253360529397370,	0.974242086513629870,	0.974230810062257310,	0.974219531175307680,	
+0.974208249852809290,	0.974196966094790230,	0.974185679901278690,	0.974174391272303100,	0.974163100207891430,	0.974151806708071780,	0.974140510772872890,	0.974129212402322750,	
+0.974117911596449450,	0.974106608355281510,	0.974095302678846920,	0.974083994567174210,	0.974072684020291460,	0.974061371038226760,	0.974050055621008880,	0.974038737768665790,	
+0.974027417481225900,	0.974016094758717530,	0.974004769601168880,	0.973993442008608270,	0.973982111981063880,	0.973970779518564480,	0.973959444621138040,	0.973948107288812980,	
+0.973936767521617730,	0.973925425319580480,	0.973914080682729670,	0.973902733611093700,	0.973891384104700770,	0.973880032163579430,	0.973868677787758100,	0.973857320977265070,	
+0.973845961732128670,	0.973834600052377430,	0.973823235938039770,	0.973811869389143880,	0.973800500405718190,	0.973789128987791460,	0.973777755135391890,	0.973766378848547890,	
+0.973755000127288000,	0.973743618971640520,	0.973732235381634110,	0.973720849357296860,	0.973709460898657620,	0.973698070005744820,	0.973686676678586770,	0.973675280917212120,	
+0.973663882721649280,	0.973652482091926670,	0.973641079028072840,	0.973629673530116090,	0.973618265598085400,	0.973606855232009070,	0.973595442431915650,	0.973584027197833550,	
+0.973572609529791300,	0.973561189427817660,	0.973549766891940840,	0.973538341922189690,	0.973526914518592860,	0.973515484681178660,	0.973504052409975620,	0.973492617705012610,	
+0.973481180566318050,	0.973469740993920470,	0.973458298987848410,	0.973446854548130740,	0.973435407674795970,	0.973423958367872650,	0.973412506627389430,	0.973401052453374940,	
+0.973389595845857940,	0.973378136804866840,	0.973366675330430200,	0.973355211422577080,	0.973343745081335920,	0.973332276306735470,	0.973320805098804250,	0.973309331457571040,	
+0.973297855383064460,	0.973286376875313050,	0.973274895934346020,	0.973263412560191670,	0.973251926752878750,	0.973240438512436020,	0.973228947838892240,	0.973217454732276050,	
+0.973205959192616320,	0.973194461219941350,	0.973182960814280570,	0.973171457975662290,	0.973159952704115370,	0.973148444999668570,	0.973136934862350760,	0.973125422292190460,	
+0.973113907289216540,	0.973102389853457980,	0.973090869984943430,	0.973079347683701750,	0.973067822949761680,	0.973056295783152110,	0.973044766183901680,	0.973033234152039460,	
+0.973021699687593890,	0.973010162790594270,	0.972998623461069250,	0.972987081699047680,	0.972975537504558340,	0.972963990877630190,	0.972952441818292100,	0.972940890326572940,	
+0.972929336402501340,	0.972917780046106520,	0.972906221257417330,	0.972894660036462520,	0.972883096383271080,	0.972871530297871990,	0.972859961780293990,	0.972848390830565850,	
+0.972836817448716970,	0.972825241634776130,	0.972813663388772070,	0.972802082710733870,	0.972790499600690530,	0.972778914058670900,	0.972767326084703950,	0.972755735678818570,	
+0.972744142841044050,	0.972732547571409030,	0.972720949869942840,	0.972709349736674110,	0.972697747171632040,	0.972686142174845720,	0.972674534746343910,	0.972662924886155580,	
+0.972651312594310260,	0.972639697870836480,	0.972628080715763570,	0.972616461129120480,	0.972604839110936200,	0.972593214661239820,	0.972581587780060210,	0.972569958467426780,	
+0.972558326723368500,	0.972546692547914370,	0.972535055941093570,	0.972523416902935090,	0.972511775433468120,	0.972500131532721630,	0.972488485200724620,	0.972476836437506600,	
+0.972465185243096550,	0.972453531617523570,	0.972441875560816630,	0.972430217073005030,	0.972418556154117990,	0.972406892804184240,	0.972395227023233550,	0.972383558811294790,	
+0.972371888168397040,	0.972360215094569710,	0.972348539589841690,	0.972336861654242380,	0.972325181287800990,	0.972313498490546380,	0.972301813262508200,	0.972290125603715530,	
+0.972278435514197570,	0.972266742993983520,	0.972255048043102480,	0.972243350661583960,	0.972231650849457060,	0.972219948606750760,	0.972208243933494810,	0.972196536829718290,	
+0.972184827295450420,	0.972173115330720480,	0.972161400935557700,	0.972149684109991470,	0.972137964854050800,	0.972126243167765520,	0.972114519051164530,	0.972102792504277220,	
+0.972091063527133040,	0.972079332119761050,	0.972067598282190800,	0.972055862014451600,	0.972044123316572530,	0.972032382188583340,	0.972020638630513130,	0.972008892642391430,	
+0.971997144224247430,	0.971985393376110670,	0.971973640098010350,	0.971961884389975880,	0.971950126252036580,	0.971938365684222090,	0.971926602686561720,	0.971914837259084900,	
+0.971903069401820920,	0.971891299114799320,	0.971879526398049420,	0.971867751251600520,	0.971855973675482490,	0.971844193669724520,	0.971832411234356040,	0.971820626369406470,	
+0.971808839074905450,	0.971797049350882180,	0.971785257197366410,	0.971773462614387240,	0.971761665601974630,	0.971749866160157900,	0.971738064288966470,	0.971726259988429870,	
+0.971714453258577640,	0.971702644099439290,	0.971690832511044160,	0.971679018493422090,	0.971667202046602510,	0.971655383170614840,	0.971643561865488840,	0.971631738131253810,	
+0.971619911967939510,	0.971608083375575360,	0.971596252354190890,	0.971584418903815970,	0.971572583024480020,	0.971560744716212570,	0.971548903979043250,	0.971537060813001730,	
+0.971525215218117520,	0.971513367194420270,	0.971501516741939410,	0.971489663860704900,	0.971477808550746280,	0.971465950812093190,	0.971454090644775170,	0.971442228048821850,	
+0.971430363024263110,	0.971418495571128140,	0.971406625689447250,	0.971394753379249740,	0.971382878640565270,	0.971371001473423700,	0.971359121877854560,	0.971347239853887710,	
+0.971335355401552690,	0.971323468520879140,	0.971311579211897040,	0.971299687474636020,	0.971287793309125850,	0.971275896715396050,	0.971263997693476600,	0.971252096243397260,	
+0.971240192365187550,	0.971228286058877120,	0.971216377324496280,	0.971204466162074450,	0.971192552571641500,	0.971180636553227060,	0.971168718106861120,	0.971156797232573420,	
+0.971144873930393390,	0.971132948200351450,	0.971121020042477130,	0.971109089456800300,	0.971097156443350820,	0.971085221002158330,	0.971073283133252810,	0.971061342836664010,	
+0.971049400112421800,	0.971037454960556160,	0.971025507381096940,	0.971013557374074020,	0.971001604939517150,	0.970989650077456190,	0.970977692787921230,	0.970965733070941810,	
+0.970953770926548220,	0.970941806354770120,	0.970929839355637700,	0.970917869929180500,	0.970905898075428710,	0.970893923794412190,	0.970881947086160820,	0.970869967950704460,	
+0.970857986388073300,	0.970846002398297210,	0.970834015981406060,	0.970822027137429930,	0.970810035866398800,	0.970798042168342420,	0.970786046043291000,	0.970774047491274270,	
+0.970762046512322670,	0.970750043106465950,	0.970738037273734090,	0.970726029014157170,	0.970714018327765050,	0.970702005214588050,	0.970689989674655700,	0.970677971707998630,	
+0.970665951314646720,	0.970653928494629840,	0.970641903247978170,	0.970629875574721690,	0.970617845474890610,	0.970605812948514780,	0.970593777995624300,	0.970581740616249580,	
+0.970569700810420600,	0.970557658578167230,	0.970545613919519770,	0.970533566834508310,	0.970521517323162830,	0.970509465385513640,	0.970497411021590590,	0.970485354231424120,	
+0.970473295015044310,	0.970461233372481360,	0.970449169303765240,	0.970437102808926260,	0.970425033887994390,	0.970412962540999850,	0.970400888767973040,	0.970388812568944050,	
+0.970376733943943080,	0.970364652893000220,	0.970352569416145670,	0.970340483513409740,	0.970328395184822610,	0.970316304430414280,	0.970304211250215490,	0.970292115644255990,	
+0.970280017612566330,	0.970267917155176570,	0.970255814272117050,	0.970243708963418050,	0.970231601229109450,	0.970219491069222120,	0.970207378483786130,	0.970195263472831580,	
+0.970183146036388890,	0.970171026174488360,	0.970158903887160310,	0.970146779174434930,	0.970134652036342420,	0.970122522472913530,	0.970110390484178240,	0.970098256070167090,	
+0.970086119230910150,	0.970073979966438070,	0.970061838276780940,	0.970049694161969290,	0.970037547622033090,	0.970025398657003320,	0.970013247266909960,	0.970001093451783650,	
+0.969988937211654470,	0.969976778546552950,	0.969964617456509530,	0.969952453941554380,	0.969940288001718280,	0.969928119637031410,	0.969915948847524300,	0.969903775633227270,	
+0.969891599994170850,	0.969879421930385340,	0.969867241441901400,	0.969855058528749090,	0.969842873190959300,	0.969830685428562430,	0.969818495241588810,	0.969806302630068950,	
+0.969794107594033280,	0.969781910133512340,	0.969769710248536750,	0.969757507939136510,	0.969745303205342800,	0.969733096047185830,	0.969720886464696120,	0.969708674457904210,	
+0.969696460026840620,	0.969684243171535790,	0.969672023892020230,	0.969659802188324820,	0.969647578060479850,	0.969635351508515990,	0.969623122532463740,	0.969610891132353660,	
+0.969598657308216370,	0.969586421060082420,	0.969574182387982210,	0.969561941291946730,	0.969549697772006500,	0.969537451828191950,	0.969525203460533720,	0.969512952669062570,	
+0.969500699453809010,	0.969488443814803480,	0.969476185752077060,	0.969463925265660160,	0.969451662355583550,	0.969439397021877650,	0.969427129264573310,	0.969414859083701170,	
+0.969402586479291890,	0.969390311451375890,	0.969378033999984230,	0.969365754125147690,	0.969353471826896570,	0.969341187105261960,	0.969328899960274270,	0.969316610391964370,	
+0.969304318400362910,	0.969292023985500410,	0.969279727147408180,	0.969267427886116530,	0.969255126201656330,	0.969242822094058320,	0.969230515563353270,	0.969218206609571920,	
+0.969205895232744810,	0.969193581432903240,	0.969181265210077750,	0.969168946564298970,	0.969156625495597890,	0.969144302004005250,	0.969131976089551820,	0.969119647752268550,	
+0.969107316992185890,	0.969094983809335120,	0.969082648203746900,	0.969070310175452090,	0.969057969724481440,	0.969045626850865930,	0.969033281554636310,	0.969020933835823330,	
+0.969008583694458190,	0.968996231130571650,	0.968983876144194460,	0.968971518735357580,	0.968959158904091900,	0.968946796650428380,	0.968934431974397880,	0.968922064876031050,	
+0.968909695355359200,	0.968897323412413190,	0.968884949047223890,	0.968872572259822150,	0.968860193050239070,	0.968847811418505510,	0.968835427364652340,	0.968823040888710410,	
+0.968810651990711040,	0.968798260670685200,	0.968785866928663530,	0.968773470764677350,	0.968761072178757400,	0.968748671170934770,	0.968736267741240220,	0.968723861889705270,	
+0.968711453616360680,	0.968699042921237430,	0.968686629804366590,	0.968674214265779150,	0.968661796305506200,	0.968649375923578690,	0.968636953120027620,	0.968624527894884400,	
+0.968612100248179790,	0.968599670179944860,	0.968587237690210930,	0.968574802779008760,	0.968562365446369640,	0.968549925692324680,	0.968537483516904610,	0.968525038920140970,	
+0.968512591902064850,	0.968500142462707210,	0.968487690602099270,	0.968475236320271990,	0.968462779617256690,	0.968450320493084220,	0.968437858947786220,	0.968425394981393460,	
+0.968412928593937350,	0.968400459785448860,	0.968387988555959200,	0.968375514905499560,	0.968363038834101130,	0.968350560341794900,	0.968338079428612500,	0.968325596094584910,	
+0.968313110339743320,	0.968300622164118940,	0.968288131567742960,	0.968275638550646690,	0.968263143112861210,	0.968250645254417950,	0.968238144975348100,	0.968225642275682970,	
+0.968213137155453650,	0.968200629614691550,	0.968188119653427880,	0.968175607271693830,	0.968163092469520590,	0.968150575246939820,	0.968138055603982580,	0.968125533540680320,	
+0.968113009057064100,	0.968100482153165460,	0.968087952829015610,	0.968075421084645840,	0.968062886920087240,	0.968050350335371680,	0.968037811330530350,	0.968025269905594340,	
+0.968012726060595300,	0.968000179795564300,	0.967987631110532990,	0.967975080005532230,	0.967962526480594110,	0.967949970535749600,	0.967937412171030240,	0.967924851386467330,	
+0.967912288182092300,	0.967899722557936440,	0.967887154514031400,	0.967874584050408160,	0.967862011167098800,	0.967849435864134300,	0.967836858141546300,	0.967824277999366100,	
+0.967811695437625240,	0.967799110456355140,	0.967786523055587210,	0.967773933235352770,	0.967761340995683780,	0.967748746336611340,	0.967736149258167090,	0.967723549760382440,	
+0.967710947843288930,	0.967698343506918080,	0.967685736751301100,	0.967673127576470060,	0.967660515982456170,	0.967647901969290960,	0.967635285537006060,	0.967622666685632900,	
+0.967610045415203120,	0.967597421725748250,	0.967584795617299490,	0.967572167089889020,	0.967559536143548170,	0.967546902778308460,	0.967534266994201420,	0.967521628791258800,	
+0.967508988169512140,	0.967496345128992630,	0.967483699669732580,	0.967471051791763290,	0.967458401495116420,	0.967445748779823480,	0.967433093645916120,	0.967420436093426090,	
+0.967407776122385040,	0.967395113732824160,	0.967382448924775870,	0.967369781698271370,	0.967357112053342520,	0.967344439990020730,	0.967331765508337990,	0.967319088608325720,	
+0.967306409290015770,	0.967293727553439680,	0.967281043398629300,	0.967268356825616400,	0.967255667834432620,	0.967242976425109700,	0.967230282597679290,	0.967217586352173250,	
+0.967204887688623010,	0.967192186607060630,	0.967179483107517890,	0.967166777190026530,	0.967154068854618080,	0.967141358101324510,	0.967128644930177580,	0.967115929341208940,	
+0.967103211334450320,	0.967090490909933930,	0.967077768067691300,	0.967065042807754180,	0.967052315130154550,	0.967039585034924040,	0.967026852522094640,	0.967014117591698090,	
+0.967001380243766030,	0.966988640478330770,	0.966975898295423850,	0.966963153695077130,	0.966950406677322680,	0.966937657242192160,	0.966924905389717430,	0.966912151119930230,	
+0.966899394432862880,	0.966886635328547130,	0.966873873807014730,	0.966861109868297650,	0.966848343512427770,	0.966835574739437040,	0.966822803549357350,	0.966810029942220430,	
+0.966797253918058710,	0.966784475476903940,	0.966771694618787870,	0.966758911343742480,	0.966746125651799960,	0.966733337542992070,	0.966720547017350550,	0.966707754074908050,	
+0.966694958715696000,	0.966682160939746680,	0.966669360747091870,	0.966656558137763740,	0.966643753111794070,	0.966630945669215150,	0.966618135810058620,	0.966605323534356910,	
+0.966592508842141980,	0.966579691733445710,	0.966566872208300290,	0.966554050266737570,	0.966541225908789880,	0.966528399134488960,	0.966515569943866890,	0.966502738336956210,	
+0.966489904313788560,	0.966477067874396130,	0.966464229018811130,	0.966451387747065520,	0.966438544059191500,	0.966425697955220820,	0.966412849435186130,	0.966399998499119280,	
+0.966387145147052480,	0.966374289379017810,	0.966361431195047470,	0.966348570595173540,	0.966335707579428100,	0.966322842147843250,	0.966309974300451510,	0.966297104037284750,	
+0.966284231358375270,	0.966271356263755270,	0.966258478753456830,	0.966245598827512260,	0.966232716485953660,	0.966219831728812980,	0.966206944556122990,	0.966194054967915660,	
+0.966181162964223180,	0.966168268545077760,	0.966155371710511690,	0.966142472460557180,	0.966129570795246310,	0.966116666714611720,	0.966103760218685490,	0.966090851307499830,	
+0.966077939981087040,	0.966065026239479320,	0.966052110082709080,	0.966039191510808640,	0.966026270523809960,	0.966013347121745800,	0.966000421304648360,	0.965987493072549720,	
+0.965974562425482520,	0.965961629363478740,	0.965948693886571010,	0.965935755994791310,	0.965922815688172400,	0.965909872966746460,	0.965896927830545820,	0.965883980279602870,	
+0.965871030313950050,	0.965858077933619550,	0.965845123138643900,	0.965832165929055300,	0.965819206304886380,	0.965806244266169460,	0.965793279812936940,	0.965780312945221260,	
+0.965767343663054830,	0.965754371966469960,	0.965741397855499170,	0.965728421330174780,	0.965715442390529420,	0.965702461036595520,	0.965689477268405480,	0.965676491085991630,	
+0.965663502489386700,	0.965650511478622910,	0.965637518053732660,	0.965624522214748810,	0.965611523961703690,	0.965598523294629810,	0.965585520213559590,	0.965572514718525570,	
+0.965559506809560150,	0.965546496486696100,	0.965533483749965500,	0.965520468599401440,	0.965507451035036320,	0.965494431056902470,	0.965481408665032510,	0.965468383859459100,	
+0.965455356640214650,	0.965442327007331680,	0.965429294960843070,	0.965416260500781220,	0.965403223627178670,	0.965390184340068180,	0.965377142639482160,	0.965364098525453240,	
+0.965351051998014190,	0.965338003057197190,	0.965324951703035450,	0.965311897935561270,	0.965298841754807400,	0.965285783160806490,	0.965272722153591060,	0.965259658733193750,	
+0.965246592899647430,	0.965233524652984290,	0.965220453993237640,	0.965207380920439780,	0.965194305434623480,	0.965181227535821470,	0.965168147224066410,	0.965155064499390920,	
+0.965141979361827550,	0.965128891811409480,	0.965115801848169140,	0.965102709472139390,	0.965089614683352750,	0.965076517481842200,	0.965063417867640270,	0.965050315840779830,	
+0.965037211401293280,	0.965024104549214060,	0.965010995284574570,	0.964997883607407460,	0.964984769517745810,	0.964971653015622160,	0.964958534101069350,	0.964945412774120270,	
+0.964932289034807320,	0.964919162883163930,	0.964906034319222730,	0.964892903343016360,	0.964879769954577690,	0.964866634153939700,	0.964853495941135010,	0.964840355316196390,	
+0.964827212279157130,	0.964814066830049890,	0.964800918968907410,	0.964787768695762660,	0.964774616010648510,	0.964761460913597820,	0.964748303404643460,	0.964735143483818060,	
+0.964721981151155040,	0.964708816406687150,	0.964695649250447150,	0.964682479682468120,	0.964669307702782810,	0.964656133311424190,	0.964642956508425130,	0.964629777293818820,	
+0.964616595667638020,	0.964603411629915810,	0.964590225180685160,	0.964577036319978820,	0.964563845047829880,	0.964550651364271430,	0.964537455269335990,	0.964524256763057200,	
+0.964511055845467810,	0.964497852516600810,	0.964484646776489040,	0.964471438625165820,	0.964458228062663900,	0.964445015089016370,	0.964431799704256190,	0.964418581908416670,	
+0.964405361701530680,	0.964392139083631310,	0.964378914054751620,	0.964365686614924610,	0.964352456764183350,	0.964339224502560820,	0.964325989830090440,	0.964312752746805060,	
+0.964299513252737770,	0.964286271347921660,	0.964273027032389930,	0.964259780306175650,	0.964246531169311920,	0.964233279621831580,	0.964220025663768300,	0.964206769295155030,	
+0.964193510516024750,	0.964180249326410670,	0.964166985726346070,	0.964153719715863940,	0.964140451294997480,	0.964127180463779650,	0.964113907222244220,	0.964100631570423920,	
+0.964087353508352060,	0.964074073036061850,	0.964060790153586480,	0.964047504860959030,	0.964034217158212690,	0.964020927045381000,	0.964007634522496940,	0.963994339589593910,	
+0.963981042246704890,	0.963967742493863410,	0.963954440331102450,	0.963941135758455530,	0.963927828775955400,	0.963914519383636040,	0.963901207581530310,	0.963887893369671510,	
+0.963874576748093070,	0.963861257716828180,	0.963847936275910140,	0.963834612425372050,	0.963821286165247650,	0.963807957495570020,	0.963794626416372480,	0.963781292927688330,	
+0.963767957029550980,	0.963754618721993860,	0.963741278005050050,	0.963727934878752860,	0.963714589343136030,	0.963701241398232770,	0.963687891044076480,	0.963674538280700380,	
+0.963661183108137860,	0.963647825526422470,	0.963634465535587510,	0.963621103135666180,	0.963607738326692330,	0.963594371108699050,	0.963581001481719880,	0.963567629445788220,	
+0.963554255000937500,	0.963540878147201130,	0.963527498884612310,	0.963514117213205010,	0.963500733133012430,	0.963487346644067990,	0.963473957746405210,	0.963460566440057510,	
+0.963447172725058420,	0.963433776601441360,	0.963420378069239640,	0.963406977128487220,	0.963393573779217300,	0.963380168021463530,	0.963366759855259320,	0.963353349280638200,	
+0.963339936297633700,	0.963326520906279350,	0.963313103106608450,	0.963299682898655090,	0.963286260282452460,	0.963272835258034200,	0.963259407825433840,	0.963245977984685030,	
+0.963232545735821180,	0.963219111078875810,	0.963205674013882910,	0.963192234540875770,	0.963178792659888040,	0.963165348370953360,	0.963151901674105250,	0.963138452569377470,	
+0.963125001056803540,	0.963111547136416780,	0.963098090808251480,	0.963084632072340960,	0.963071170928718860,	0.963057707377418800,	0.963044241418474440,	0.963030773051919530,	
+0.963017302277787480,	0.963003829096112260,	0.962990353506927630,	0.962976875510267120,	0.962963395106164350,	0.962949912294653100,	0.962936427075767100,	0.962922939449539990,	
+0.962909449416005310,	0.962895956975197250,	0.962882462127149230,	0.962868964871895110,	0.962855465209468630,	0.962841963139903450,	0.962828458663233410,	0.962814951779492170,	
+0.962801442488713240,	0.962787930790931060,	0.962774416686179020,	0.962760900174490900,	0.962747381255900650,	0.962733859930441800,	0.962720336198148340,	0.962706810059053900,	
+0.962693281513192560,	0.962679750560598070,	0.962666217201304190,	0.962652681435344770,	0.962639143262753570,	0.962625602683564670,	0.962612059697811610,	0.962598514305528230,	
+0.962584966506748850,	0.962571416301507000,	0.962557863689836650,	0.962544308671771540,	0.962530751247345770,	0.962517191416593090,	0.962503629179547350,	0.962490064536242420,	
+0.962476497486712490,	0.962462928030991320,	0.962449356169112870,	0.962435781901111010,	0.962422205227019710,	0.962408626146872950,	0.962395044660704250,	0.962381460768548250,	
+0.962367874470438590,	0.962354285766409360,	0.962340694656494300,	0.962327101140727500,	0.962313505219142940,	0.962299906891774580,	0.962286306158656290,	0.962272703019822480,	
+0.962259097475306910,	0.962245489525143550,	0.962231879169366480,	0.962218266408009780,	0.962204651241107320,	0.962191033668693070,	0.962177413690801450,	0.962163791307466320,	
+0.962150166518721650,	0.962136539324601640,	0.962122909725140140,	0.962109277720371470,	0.962095643310329600,	0.962082006495048380,	0.962068367274562460,	0.962054725648905480,	
+0.962041081618111750,	0.962027435182215340,	0.962013786341250340,	0.962000135095250840,	0.961986481444251030,	0.961972825388284770,	0.961959166927386700,	0.961945506061590680,	
+0.961931842790930910,	0.961918177115441590,	0.961904509035156790,	0.961890838550110590,	0.961877165660337210,	0.961863490365871150,	0.961849812666746300,	0.961836132562996940,	
+0.961822450054657270,	0.961808765141761500,	0.961795077824343700,	0.961781388102438290,	0.961767695976079250,	0.961754001445301100,	0.961740304510137920,	0.961726605170624030,	
+0.961712903426793610,	0.961699199278680970,	0.961685492726320310,	0.961671783769745710,	0.961658072408991820,	0.961644358644092810,	0.961630642475082900,	0.961616923901996380,	
+0.961603202924867560,	0.961589479543730750,	0.961575753758620140,	0.961562025569569930,	0.961548294976614980,	0.961534561979789260,	0.961520826579127070,	0.961507088774662950,	
+0.961493348566430980,	0.961479605954465690,	0.961465860938801380,	0.961452113519472240,	0.961438363696512920,	0.961424611469957830,	0.961410856839841180,	0.961397099806197360,	
+0.961383340369060810,	0.961369578528465830,	0.961355814284446720,	0.961342047637038340,	0.961328278586274790,	0.961314507132190580,	0.961300733274820130,	0.961286957014197860,	
+0.961273178350358080,	0.961259397283335430,	0.961245613813164090,	0.961231827939878940,	0.961218039663514160,	0.961204248984104280,	0.961190455901683840,	0.961176660416287240,	
+0.961162862527948910,	0.961149062236703600,	0.961135259542585270,	0.961121454445629020,	0.961107646945869140,	0.961093837043340170,	0.961080024738076630,	0.961066210030113060,	
+0.961052392919483860,	0.961038573406223450,	0.961024751490366920,	0.961010927171948470,	0.960997100451002730,	0.960983271327564230,	0.960969439801667490,	0.960955605873347270,	
+0.960941769542637990,	0.960927930809573950,	0.960914089674190450,	0.960900246136521700,	0.960886400196602320,	0.960872551854466850,	0.960858701110150150,	0.960844847963686630,	
+0.960830992415110720,	0.960817134464457600,	0.960803274111761700,	0.960789411357057530,	0.960775546200379860,	0.960761678641763320,	0.960747808681242540,	0.960733936318852290,	
+0.960720061554626970,	0.960706184388601780,	0.960692304820811030,	0.960678422851289570,	0.960664538480072050,	0.960650651707193210,	0.960636762532687700,	0.960622870956590270,	
+0.960608976978935440,	0.960595080599758510,	0.960581181819093690,	0.960567280636976050,	0.960553377053440240,	0.960539471068520890,	0.960525562682252860,	0.960511651894670690,	
+0.960497738705809680,	0.960483823115704350,	0.960469905124389340,	0.960455984731899640,	0.960442061938269980,	0.960428136743535220,	0.960414209147730010,	0.960400279150889100,	
+0.960386346753047790,	0.960372411954240500,	0.960358474754502200,	0.960344535153867750,	0.960330593152372010,	0.960316648750049740,	0.960302701946935790,	0.960288752743064910,	
+0.960274801138472410,	0.960260847133192820,	0.960246890727261220,	0.960232931920712350,	0.960218970713581090,	0.960205007105902510,	0.960191041097711030,	0.960177072689042290,	
+0.960163101879930920,	0.960149128670411690,	0.960135153060519660,	0.960121175050289820,	0.960107194639756910,	0.960093211828956130,	0.960079226617922000,	0.960065239006690160,	
+0.960051248995295150,	0.960037256583772040,	0.960023261772155690,	0.960009264560481300,	0.959995264948783730,	0.959981262937097730,	0.959967258525458830,	0.959953251713901780,	
+0.959939242502461540,	0.959925230891173320,	0.959911216880071970,	0.959897200469192580,	0.959883181658570120,	0.959869160448239560,	0.959855136838236200,	0.959841110828595130,	
+0.959827082419351330,	0.959813051610539650,	0.959799018402195500,	0.959784982794353760,	0.959770944787049500,	0.959756904380317690,	0.959742861574193860,	0.959728816368712880,	
+0.959714768763909820,	0.959700718759819880,	0.959686666356478150,	0.959672611553919700,	0.959658554352179500,	0.959644494751293210,	0.959630432751295670,	0.959616368352221970,	
+0.959602301554107420,	0.959588232356987090,	0.959574160760896190,	0.959560086765869900,	0.959546010371943200,	0.959531931579151620,	0.959517850387530240,	0.959503766797114240,	
+0.959489680807938840,	0.959475592420039210,	0.959461501633450680,	0.959447408448208310,	0.959433312864347190,	0.959419214881903070,	0.959405114500910820,	0.959391011721405840,	
+0.959376906543423340,	0.959362798966998610,	0.959348688992166850,	0.959334576618963150,	0.959320461847423140,	0.959306344677582130,	0.959292225109475210,	0.959278103143137660,	
+0.959263978778604920,	0.959249852015912170,	0.959235722855094840,	0.959221591296188000,	0.959207457339227300,	0.959193320984248030,	0.959179182231285510,	0.959165041080375040,	
+0.959150897531551920,	0.959136751584851450,	0.959122603240309070,	0.959108452497960280,	0.959094299357840410,	0.959080143819984740,	0.959065985884428710,	0.959051825551207830,	
+0.959037662820357300,	0.959023497691912640,	0.959009330165908950,	0.958995160242382180,	0.958980987921367540,	0.958966813202900450,	0.958952636087016310,	0.958938456573750540,	
+0.958924274663138680,	0.958910090355216130,	0.958895903650018090,	0.958881714547580530,	0.958867523047938650,	0.958853329151128090,	0.958839132857184140,	0.958824934166142340,	
+0.958810733078038210,	0.958796529592906950,	0.958782323710784650,	0.958768115431706590,	0.958753904755708210,	0.958739691682825020,	0.958725476213092680,	0.958711258346546690,	
+0.958697038083222490,	0.958682815423155370,	0.958668590366381520,	0.958654362912936260,	0.958640133062855000,	0.958625900816173490,	0.958611666172927150,	0.958597429133151710,	
+0.958583189696882610,	0.958568947864155360,	0.958554703635005940,	0.958540457009469880,	0.958526207987582590,	0.958511956569379820,	0.958497702754897100,	0.958483446544170170,	
+0.958469187937234350,	0.958454926934125710,	0.958440663534879890,	0.958426397739532420,	0.958412129548118940,	0.958397858960675090,	0.958383585977236610,	0.958369310597839140,	
+0.958355032822518220,	0.958340752651309910,	0.958326470084249650,	0.958312185121373390,	0.958297897762716570,	0.958283608008315020,	0.958269315858204410,	0.958255021312420240,	
+0.958240724370998830,	0.958226425033975590,	0.958212123301386280,	0.958197819173266740,	0.958183512649652510,	0.958169203730579680,	0.958154892416083650,	0.958140578706200290,	
+0.958126262600965670,	0.958111944100415340,	0.958097623204585250,	0.958083299913511040,	0.958068974227228590,	0.958054646145773740,	0.958040315669182240,	0.958025982797489740,	
+0.958011647530732540,	0.957997309868946160,	0.957982969812166460,	0.957968627360429430,	0.957954282513770790,	0.957939935272226540,	0.957925585635832080,	0.957911233604623940,	
+0.957896879178637750,	0.957882522357909380,	0.957868163142474690,	0.957853801532369540,	0.957839437527629900,	0.957825071128291740,	0.957810702334390580,	0.957796331145962850,	
+0.957781957563044410,	0.957767581585671100,	0.957753203213878690,	0.957738822447703360,	0.957724439287180980,	0.957710053732347300,	0.957695665783238730,	0.957681275439890900,	
+0.957666882702339910,	0.957652487570621710,	0.957638090044772290,	0.957623690124827730,	0.957609287810823880,	0.957594883102796610,	0.957580476000782330,	0.957566066504816790,	
+0.957551654614936190,	0.957537240331176490,	0.957522823653573550,	0.957508404582163690,	0.957493983116982750,	0.957479559258066600,	0.957465133005451770,	0.957450704359174230,	
+0.957436273319269840,	0.957421839885774780,	0.957407404058725040,	0.957392965838156920,	0.957378525224106050,	0.957364082216609180,	0.957349636815702070,	0.957335189021420900,	
+0.957320738833801750,	0.957306286252880720,	0.957291831278693990,	0.957277373911277650,	0.957262914150667670,	0.957248451996900670,	0.957233987450012540,	0.957219520510039450,	
+0.957205051177017490,	0.957190579450982960,	0.957176105331971950,	0.957161628820020650,	0.957147149915165030,	0.957132668617441840,	0.957118184926887050,	0.957103698843536630,	
+0.957089210367427110,	0.957074719498594460,	0.957060226237075100,	0.957045730582904870,	0.957031232536120550,	0.957016732096758190,	0.957002229264853900,	0.956987724040444190,	
+0.956973216423565030,	0.956958706414252960,	0.956944194012544050,	0.956929679218474380,	0.956915162032080820,	0.956900642453399340,	0.956886120482466240,	0.956871596119317820,	
+0.956857069363990400,	0.956842540216520380,	0.956828008676943730,	0.956813474745297320,	0.956798938421617230,	0.956784399705939760,	0.956769858598301330,	0.956755315098738120,	
+0.956740769207286790,	0.956726220923983520,	0.956711670248864390,	0.956697117181966260,	0.956682561723325440,	0.956668003872978230,	0.956653443630961050,	0.956638880997310090,	
+0.956624315972062100,	0.956609748555253270,	0.956595178746919790,	0.956580606547098640,	0.956566031955825900,	0.956551454973138200,	0.956536875599071750,	0.956522293833663160,	
+0.956507709676948870,	0.956493123128965060,	0.956478534189748600,	0.956463942859335890,	0.956449349137763250,	0.956434753025067310,	0.956420154521284480,	0.956405553626451300,	
+0.956390950340604170,	0.956376344663779410,	0.956361736596014090,	0.956347126137344410,	0.956332513287806880,	0.956317898047438050,	0.956303280416274550,	0.956288660394352790,	
+0.956274037981709400,	0.956259413178380700,	0.956244785984403660,	0.956230156399814680,	0.956215524424650300,	0.956200890058947150,	0.956186253302741760,	0.956171614156070770,	
+0.956156972618970370,	0.956142328691477860,	0.956127682373629550,	0.956113033665462080,	0.956098382567011960,	0.956083729078315850,	0.956069073199410480,	0.956054414930332390,	
+0.956039754271118090,	0.956025091221804570,	0.956010425782428340,	0.955995757953026050,	0.955981087733634330,	0.955966415124289930,	0.955951740125029590,	0.955937062735889520,	
+0.955922382956907010,	0.955907700788118710,	0.955893016229561020,	0.955878329281270810,	0.955863639943284830,	0.955848948215639700,	0.955834254098372190,	0.955819557591518820,	
+0.955804858695116890,	0.955790157409202700,	0.955775453733813120,	0.955760747668984890,	0.955746039214754870,	0.955731328371159710,	0.955716615138236250,	0.955701899516021030,	
+0.955687181504551230,	0.955672461103863500,	0.955657738313994700,	0.955643013134981460,	0.955628285566860750,	0.955613555609669320,	0.955598823263443700,	0.955584088528221300,	
+0.955569351404038650,	0.955554611890932710,	0.955539869988940140,	0.955525125698098000,	0.955510379018442930,	0.955495629950012030,	0.955480878492841690,	0.955466124646969450,	
+0.955451368412431950,	0.955436609789265920,	0.955421848777508460,	0.955407085377196320,	0.955392319588366570,	0.955377551411055960,	0.955362780845301130,	0.955348007891139720,	
+0.955333232548608250,	0.955318454817743690,	0.955303674698583020,	0.955288892191163090,	0.955274107295520980,	0.955259320011693450,	0.955244530339717680,	0.955229738279630760,	
+0.955214943831469430,	0.955200146995270670,	0.955185347771071670,	0.955170546158909170,	0.955155742158820380,	0.955140935770842030,	0.955126126995011540,	0.955111315831365660,	
+0.955096502279941580,	0.955081686340776170,	0.955066868013906610,	0.955052047299369880,	0.955037224197202830,	0.955022398707442880,	0.955007570830126990,	0.954992740565292150,	
+0.954977907912975430,	0.954963072873213910,	0.954948235446044790,	0.954933395631505140,	0.954918553429631610,	0.954903708840462050,	0.954888861864033100,	0.954874012500382060,	
+0.954859160749546020,	0.954844306611562050,	0.954829450086467360,	0.954814591174299010,	0.954799729875093870,	0.954784866188889800,	0.954770000115723440,	0.954755131655632190,	
+0.954740260808653040,	0.954725387574823170,	0.954710511954179890,	0.954695633946760160,	0.954680753552601510,	0.954665870771741030,	0.954650985604215800,	0.954636098050063110,	
+0.954621208109320270,	0.954606315782024370,	0.954591421068212600,	0.954576523967922140,	0.954561624481190530,	0.954546722608054950,	0.954531818348552500,	0.954516911702720460,	
+0.954502002670596260,	0.954487091252216980,	0.954472177447620030,	0.954457261256842270,	0.954442342679921670,	0.954427421716895210,	0.954412498367800290,	0.954397572632674000,	
+0.954382644511553860,	0.954367714004477060,	0.954352781111480700,	0.954337845832602730,	0.954322908167880010,	0.954307968117350190,	0.954293025681050340,	0.954278080859017890,	
+0.954263133651290340,	0.954248184057904900,	0.954233232078898760,	0.954218277714309780,	0.954203320964175150,	0.954188361828532170,	0.954173400307418370,	0.954158436400870950,	
+0.954143470108927530,	0.954128501431625090,	0.954113530369001710,	0.954098556921094580,	0.954083581087940890,	0.954068602869578400,	0.954053622266044290,	0.954038639277376200,	
+0.954023653903611550,	0.954008666144787410,	0.953993676000941870,	0.953978683472112120,	0.953963688558335800,	0.953948691259650090,	0.953933691576092760,	0.953918689507701200,	
+0.953903685054512840,	0.953888678216565090,	0.953873668993895920,	0.953858657386542520,	0.953843643394542420,	0.953828627017933360,	0.953813608256752650,	0.953798587111037930,	
+0.953783563580826390,	0.953768537666156320,	0.953753509367064930,	0.953738478683589630,	0.953723445615768270,	0.953708410163638280,	0.953693372327237170,	0.953678332106602690,	
+0.953663289501772150,	0.953648244512783630,	0.953633197139674430,	0.953618147382482300,	0.953603095241244760,	0.953588040715999560,	0.953572983806784240,	0.953557924513636410,	
+0.953542862836593510,	0.953527798775693710,	0.953512732330974440,	0.953497663502473340,	0.953482592290228140,	0.953467518694276370,	0.953452442714655790,	0.953437364351403920,	
+0.953422283604558940,	0.953407200474158170,	0.953392114960239350,	0.953377027062840330,	0.953361936781998760,	0.953346844117752280,	0.953331749070138730,	0.953316651639195540,	
+0.953301551824960900,	0.953286449627472440,	0.953271345046767920,	0.953256238082884950,	0.953241128735861420,	0.953226017005735060,	0.953210902892543400,	0.953195786396324850,	
+0.953180667517116720,	0.953165546254956860,	0.953150422609883250,	0.953135296581933520,	0.953120168171145640,	0.953105037377557250,	0.953089904201206100,	0.953074768642130370,	
+0.953059630700367700,	0.953044490375955950,	0.953029347668933100,	0.953014202579336780,	0.952999055107204950,	0.952983905252575480,	0.952968753015486000,	0.952953598395974930,	
+0.952938441394079790,	0.952923282009838670,	0.952908120243289190,	0.952892956094469560,	0.952877789563417510,	0.952862620650170580,	0.952847449354767510,	0.952832275677245820,	
+0.952817099617643380,	0.952801921175998160,	0.952786740352348230,	0.952771557146731340,	0.952756371559185690,	0.952741183589748800,	0.952725993238459190,	0.952710800505354620,	
+0.952695605390473040,	0.952680407893852440,	0.952665208015530780,	0.952650005755546150,	0.952634801113936170,	0.952619594090739600,	0.952604384685993950,	0.952589172899737320,	
+0.952573958732007790,	0.952558742182843420,	0.952543523252282090,	0.952528301940361980,	0.952513078247120840,	0.952497852172597300,	0.952482623716829120,	0.952467392879854380,	
+0.952452159661711260,	0.952436924062437630,	0.952421686082071670,	0.952406445720651580,	0.952391202978215000,	0.952375957854800780,	0.952360710350446670,	0.952345460465190750,	
+0.952330208199071100,	0.952314953552126030,	0.952299696524393610,	0.952284437115911600,	0.952269175326718730,	0.952253911156852980,	0.952238644606352550,	0.952223375675255390,	
+0.952208104363599820,	0.952192830671423910,	0.952177554598766070,	0.952162276145663950,	0.952146995312156520,	0.952131712098281510,	0.952116426504077240,	0.952101138529581890,	
+0.952085848174833770,	0.952070555439870960,	0.952055260324731760,	0.952039962829454240,	0.952024662954076950,	0.952009360698638060,	0.951994056063175780,	0.951978749047728390,	
+0.951963439652334100,	0.951948127877031200,	0.951932813721857670,	0.951917497186852370,	0.951902178272053370,	0.951886856977498970,	0.951871533303227380,	0.951856207249277000,	
+0.951840878815686020,	0.951825548002492860,	0.951810214809735600,	0.951794879237453100,	0.951779541285683320,	0.951764200954464790,	0.951748858243835700,	0.951733513153834480,	
+0.951718165684499410,	0.951702815835868800,	0.951687463607981290,	0.951672109000875180,	0.951656752014588770,	0.951641392649160480,	0.951626030904628720,	0.951610666781031900,	
+0.951595300278408330,	0.951579931396796310,	0.951564560136234800,	0.951549186496761790,	0.951533810478415790,	0.951518432081235320,	0.951503051305258810,	0.951487668150524660,	
+0.951472282617071290,	0.951456894704937000,	0.951441504414160640,	0.951426111744780640,	0.951410716696835300,	0.951395319270363140,	0.951379919465402680,	0.951364517281992560,	
+0.951349112720170750,	0.951333705779976450,	0.951318296461447830,	0.951302884764623550,	0.951287470689542110,	0.951272054236241840,	0.951256635404761570,	0.951241214195139630,	
+0.951225790607414410,	0.951210364641625010,	0.951194936297809710,	0.951179505576007060,	0.951164072476255560,	0.951148636998593980,	0.951133199143060830,	0.951117758909694520,	
+0.951102316298533700,	0.951086871309617330,	0.951071423942983720,	0.951055974198671610,	0.951040522076719520,	0.951025067577166210,	0.951009610700050190,	0.950994151445409770,	
+0.950978689813284370,	0.950963225803712180,	0.950947759416731930,	0.950932290652382380,	0.950916819510701950,	0.950901345991729600,	0.950885870095503850,	0.950870391822063120,	
+0.950854911171446720,	0.950839428143693040,	0.950823942738840740,	0.950808454956928560,	0.950792964797995350,	0.950777472262079650,	0.950761977349220080,	0.950746480059455720,	
+0.950730980392825220,	0.950715478349367320,	0.950699973929120650,	0.950684467132124070,	0.950668957958416330,	0.950653446408036170,	0.950637932481022240,	0.950622416177413610,	
+0.950606897497249030,	0.950591376440567130,	0.950575853007406880,	0.950560327197806920,	0.950544799011806110,	0.950529268449443410,	0.950513735510757130,	0.950498200195786900,	
+0.950482662504571140,	0.950467122437148700,	0.950451579993558560,	0.950436035173839340,	0.950420487978030140,	0.950404938406169350,	0.950389386458296510,	0.950373832134450260,	
+0.950358275434669330,	0.950342716358992810,	0.950327154907459450,	0.950311591080108210,	0.950296024876977950,	0.950280456298107420,	0.950264885343536040,	0.950249312013302430,	
+0.950233736307445450,	0.950218158226004190,	0.950202577769017620,	0.950186994936524480,	0.950171409728563950,	0.950155822145174580,	0.950140232186395870,	0.950124639852266690,	
+0.950109045142825900,	0.950093448058112470,	0.950077848598165350,	0.950062246763023640,	0.950046642552726080,	0.950031035967312200,	0.950015427006820730,	0.949999815671290660,	
+0.949984201960761050,	0.949968585875270890,	0.949952967414859350,	0.949937346579565410,	0.949921723369427710,	0.949906097784486090,	0.949890469824779200,	0.949874839490346120,	
+0.949859206781225930,	0.949843571697457700,	0.949827934239080630,	0.949812294406133350,	0.949796652198655610,	0.949781007616686380,	0.949765360660264510,	0.949749711329429200,	
+0.949734059624219750,	0.949718405544675020,	0.949702749090834410,	0.949687090262736570,	0.949671429060421230,	0.949655765483927380,	0.949640099533294200,	0.949624431208560660,	
+0.949608760509766060,	0.949593087436949590,	0.949577411990150330,	0.949561734169407370,	0.949546053974760220,	0.949530371406248070,	0.949514686463909910,	0.949498999147785020,	
+0.949483309457912710,	0.949467617394332050,	0.949451922957082140,	0.949436226146202600,	0.949420526961732620,	0.949404825403711290,	0.949389121472177800,	0.949373415167171660,	
+0.949357706488731860,	0.949341995436897790,	0.949326282011708540,	0.949310566213203870,	0.949294848041422720,	0.949279127496404420,	0.949263404578188360,	0.949247679286813750,	
+0.949231951622319990,	0.949216221584746390,	0.949200489174131910,	0.949184754390516420,	0.949169017233939090,	0.949153277704439250,	0.949137535802056180,	0.949121791526829290,	
+0.949106044878797910,	0.949090295858001200,	0.949074544464478920,	0.949058790698270370,	0.949043034559414860,	0.949027276047951670,	0.949011515163920350,	0.948995751907360190,	
+0.948979986278310710,	0.948964218276810990,	0.948948447902900890,	0.948932675156619830,	0.948916900038006990,	0.948901122547101910,	0.948885342683944090,	0.948869560448572850,	
+0.948853775841027370,	0.948837988861347850,	0.948822199509573250,	0.948806407785743210,	0.948790613689897140,	0.948774817222074570,	0.948759018382314910,	0.948743217170657790,	
+0.948727413587142300,	0.948711607631808510,	0.948695799304695720,	0.948679988605843460,	0.948664175535291250,	0.948648360093078510,	0.948632542279244980,	0.948616722093829970,	
+0.948600899536872990,	0.948585074608414010,	0.948569247308492350,	0.948553417637147510,	0.948537585594419250,	0.948521751180346870,	0.948505914394970230,	0.948490075238328510,	
+0.948474233710461800,	0.948458389811409620,	0.948442543541211380,	0.948426694899906830,	0.948410843887535490,	0.948394990504137110,	0.948379134749751220,	0.948363276624417220,	
+0.948347416128175300,	0.948331553261064770,	0.948315688023125490,	0.948299820414396870,	0.948283950434918750,	0.948268078084730790,	0.948252203363872390,	0.948236326272383630,	
+0.948220446810304150,	0.948204564977673580,	0.948188680774531560,	0.948172794200917820,	0.948156905256872020,	0.948141013942434110,	0.948125120257643280,	0.948109224202539960,	
+0.948093325777163540,	0.948077424981553900,	0.948061521815750650,	0.948045616279793560,	0.948029708373722470,	0.948013798097577130,	0.947997885451396960,	0.947981970435222370,	
+0.947966053049092870,	0.947950133293048340,	0.947934211167128280,	0.947918286671372790,	0.947902359805821600,	0.947886430570514250,	0.947870498965491030,	0.947854564990791570,	
+0.947838628646455740,	0.947822689932523390,	0.947806748849034260,	0.947790805396028220,	0.947774859573545240,	0.947758911381624710,	0.947742960820307290,	0.947727007889632490,	
+0.947711052589640060,	0.947695094920370070,	0.947679134881862280,	0.947663172474156770,	0.947647207697293270,	0.947631240551311430,	0.947615271036251870,	0.947599299152154020,	
+0.947583324899057940,	0.947567348277003620,	0.947551369286030900,	0.947535387926179750,	0.947519404197489810,	0.947503418100001720,	0.947487429633754990,	0.947471438798789810,	
+0.947455445595145940,	0.947439450022863450,	0.947423452081982420,	0.947407451772542710,	0.947391449094584060,	0.947375444048147110,	0.947359436633271490,	0.947343426849997280,	
+0.947327414698364570,	0.947311400178413310,	0.947295383290183590,	0.947279364033715040,	0.947263342409048410,	0.947247318416223450,	0.947231292055280120,	0.947215263326258610,	
+0.947199232229198880,	0.947183198764141140,	0.947167162931125460,	0.947151124730191470,	0.947135084161380040,	0.947119041224730780,	0.947102995920284020,	0.947086948248079820,	
+0.947070898208158150,	0.947054845800559210,	0.947038791025323290,	0.947022733882490030,	0.947006674372100180,	0.946990612494193700,	0.946974548248810670,	0.946958481635991280,	
+0.946942412655775610,	0.946926341308203970,	0.946910267593316200,	0.946894191511153060,	0.946878113061754400,	0.946862032245160520,	0.946845949061411510,	0.946829863510547650,	
+0.946813775592609150,	0.946797685307636190,	0.946781592655668750,	0.946765497636747550,	0.946749400250912700,	0.946733300498204260,	0.946717198378662640,	0.946701093892327930,	
+0.946684987039240530,	0.946668877819440760,	0.946652766232968460,	0.946636652279864490,	0.946620535960168820,	0.946604417273921970,	0.946588296221163920,	0.946572172801935290,	
+0.946556047016276050,	0.946539918864226500,	0.946523788345827510,	0.946507655461118920,	0.946491520210141270,	0.946475382592934840,	0.946459242609539950,	0.946443100259996890,	
+0.946426955544346080,	0.946410808462627710,	0.946394659014882510,	0.946378507201150690,	0.946362353021472540,	0.946346196475888580,	0.946330037564439120,	0.946313876287164570,	
+0.946297712644105000,	0.946281546635301400,	0.946265378260794040,	0.946249207520623250,	0.946233034414829310,	0.946216858943452870,	0.946200681106534320,	0.946184500904113990,	
+0.946168318336232160,	0.946152133402929810,	0.946135946104247120,	0.946119756440224500,	0.946103564410902600,	0.946087370016321820,	0.946071173256522460,	0.946054974131545270,	
+0.946038772641430330,	0.946022568786218820,	0.946006362565950830,	0.945990153980666880,	0.945973943030407600,	0.945957729715213520,	0.945941514035125050,	0.945925295990182490,	
+0.945909075580427030,	0.945892852805898850,	0.945876627666638490,	0.945860400162686690,	0.945844170294083740,	0.945827938060870510,	0.945811703463087290,	0.945795466500774620,	
+0.945779227173973560,	0.945762985482724420,	0.945746741427067830,	0.945730495007044310,	0.945714246222694620,	0.945697995074059380,	0.945681741561179010,	0.945665485684094140,	
+0.945649227442845740,	0.945632966837474330,	0.945616703868020550,	0.945600438534524910,	0.945584170837028170,	0.945567900775571070,	0.945551628350193910,	0.945535353560937990,	
+0.945519076407843610,	0.945502796890951620,	0.945486515010302560,	0.945470230765937280,	0.945453944157896410,	0.945437655186220690,	0.945421363850950550,	0.945405070152127270,	
+0.945388774089791270,	0.945372475663983410,	0.945356174874744330,	0.945339871722114760,	0.945323566206135560,	0.945307258326847140,	0.945290948084290930,	0.945274635478507320,	
+0.945258320509537060,	0.945242003177421020,	0.945225683482200040,	0.945209361423914760,	0.945193037002606150,	0.945176710218314620,	0.945160381071081580,	0.945144049560947660,	
+0.945127715687953620,	0.945111379452140190,	0.945095040853548450,	0.945078699892219040,	0.945062356568192820,	0.945046010881510520,	0.945029662832213460,	0.945013312420342140,	
+0.944996959645937660,	0.944980604509040760,	0.944964247009692280,	0.944947887147933210,	0.944931524923804170,	0.944915160337346570,	0.944898793388601170,	0.944882424077608700,	
+0.944866052404410130,	0.944849678369046540,	0.944833301971558680,	0.944816923211987510,	0.944800542090373900,	0.944784158606759130,	0.944767772761183950,	0.944751384553689340,	
+0.944734993984316260,	0.944718601053105790,	0.944702205760098780,	0.944685808105336200,	0.944669408088858800,	0.944653005710708200,	0.944636600970925170,	0.944620193869550540,	
+0.944603784406625400,	0.944587372582190940,	0.944570958396287910,	0.944554541848957260,	0.944538122940240530,	0.944521701670178460,	0.944505278038812120,	0.944488852046182710,	
+0.944472423692331090,	0.944455992977298430,	0.944439559901125710,	0.944423124463853900,	0.944406686665524520,	0.944390246506178420,	0.944373803985856800,	0.944357359104600500,	
+0.944340911862450950,	0.944324462259449100,	0.944308010295635710,	0.944291555971052630,	0.944275099285740720,	0.944258640239741040,	0.944242178833094690,	0.944225715065842960,	
+0.944209248938026930,	0.944192780449687800,	0.944176309600866400,	0.944159836391604500,	0.944143360821942950,	0.944126882891923150,	0.944110402601586070,	0.944093919950972920,	
+0.944077434940125080,	0.944060947569083650,	0.944044457837889480,	0.944027965746584430,	0.944011471295209570,	0.943994974483805980,	0.943978475312414970,	0.943961973781077820,	
+0.943945469889835630,	0.943928963638729580,	0.943912455027801300,	0.943895944057091980,	0.943879430726642820,	0.943862915036495000,	0.943846396986689930,	0.943829876577268800,	
+0.943813353808273030,	0.943796828679743680,	0.943780301191722400,	0.943763771344250490,	0.943747239137369020,	0.943730704571119520,	0.943714167645543280,	0.943697628360681610,	
+0.943681086716575580,	0.943664542713267160,	0.943647996350797320,	0.943631447629207480,	0.943614896548539140,	0.943598343108833390,	0.943581787310131870,	0.943565229152475870,	
+0.943548668635906580,	0.943532105760465870,	0.943515540526194800,	0.943498972933135010,	0.943482402981327680,	0.943465830670814460,	0.943449256001636540,	0.943432678973835540,	
+0.943416099587452540,	0.943399517842529620,	0.943382933739107870,	0.943366347277228790,	0.943349758456933810,	0.943333167278264550,	0.943316573741262210,	0.943299977845968310,	
+0.943283379592424590,	0.943266778980672570,	0.943250176010753560,	0.943233570682709080,	0.943216962996580640,	0.943200352952409890,	0.943183740550238130,	0.943167125790106860,	
+0.943150508672057960,	0.943133889196132840,	0.943117267362373000,	0.943100643170819990,	0.943084016621515420,	0.943067387714500720,	0.943050756449817620,	0.943034122827507320,	
+0.943017486847612000,	0.943000848510172850,	0.942984207815231730,	0.942967564762830060,	0.942950919353009450,	0.942934271585811560,	0.942917621461277670,	0.942900968979450080,	
+0.942884314140369990,	0.942867656944079150,	0.942850997390619170,	0.942834335480031700,	0.942817671212358490,	0.942801004587640930,	0.942784335605920680,	0.942767664267239900,	
+0.942750990571639910,	0.942734314519162450,	0.942717636109849160,	0.942700955343741760,	0.942684272220882020,	0.942667586741311350,	0.942650898905072030,	0.942634208712205380,	
+0.942617516162753240,	0.942600821256757260,	0.942584123994259280,	0.942567424375301060,	0.942550722399924100,	0.942534018068170170,	0.942517311380081440,	0.942500602335699540,	
+0.942483890935066020,	0.942467177178222810,	0.942450461065211580,	0.942433742596074260,	0.942417021770852630,	0.942400298589588070,	0.942383573052323120,	0.942366845159099300,	
+0.942350114909958240,	0.942333382304941900,	0.942316647344092150,	0.942299910027450840,	0.942283170355059370,	0.942266428326960280,	0.942249683943195190,	0.942232937203805850,	
+0.942216188108834120,	0.942199436658321950,	0.942182682852311220,	0.942165926690843760,	0.942149168173961100,	0.942132407301706000,	0.942115644074119740,	0.942098878491244410,	
+0.942082110553121850,	0.942065340259794050,	0.942048567611302960,	0.942031792607690430,	0.942015015248998000,	0.941998235535268400,	0.941981453466543270,	0.941964669042864470,	
+0.941947882264273950,	0.941931093130813800,	0.941914301642525880,	0.941897507799451920,	0.941880711601634450,	0.941863913049115320,	0.941847112141936280,	0.941830308880139520,	
+0.941813503263766890,	0.941796695292860590,	0.941779884967462570,	0.941763072287614580,	0.941746257253359140,	0.941729439864738000,	0.941712620121793350,	0.941695798024567150,	
+0.941678973573101370,	0.941662146767438200,	0.941645317607619380,	0.941628486093687540,	0.941611652225684550,	0.941594816003652360,	0.941577977427633160,	0.941561136497669040,	
+0.941544293213802060,	0.941527447576074320,	0.941510599584527650,	0.941493749239204810,	0.941476896540147660,	0.941460041487398150,	0.941443184080998700,	0.941426324320991160,	
+0.941409462207417840,	0.941392597740320800,	0.941375730919742030,	0.941358861745724250,	0.941341990218309330,	0.941325116337539350,	0.941308240103456710,	0.941291361516103380,	
+0.941274480575521650,	0.941257597281753400,	0.941240711634841460,	0.941223823634827820,	0.941206933281754530,	0.941190040575664020,	0.941173145516598250,	0.941156248104599750,	
+0.941139348339710580,	0.941122446221972720,	0.941105541751429130,	0.941088634928121560,	0.941071725752092520,	0.941054814223384110,	0.941037900342038600,	0.941020984108098420,	
+0.941004065521605760,	0.940987144582602690,	0.940970221291131950,	0.940953295647235730,	0.940936367650956340,	0.940919437302335960,	0.940902504601416890,	0.940885569548241650,	
+0.940868632142852210,	0.940851692385291430,	0.940834750275601480,	0.940817805813824680,	0.940800859000003320,	0.940783909834179810,	0.940766958316396450,	0.940750004446695760,	
+0.940733048225119830,	0.940716089651711500,	0.940699128726512960,	0.940682165449566620,	0.940665199820914900,	0.940648231840600090,	0.940631261508664720,	0.940614288825150970,	
+0.940597313790101700,	0.940580336403559200,	0.940563356665565900,	0.940546374576164080,	0.940529390135396490,	0.940512403343305330,	0.940495414199933100,	0.940478422705322110,	
+0.940461428859515450,	0.940444432662555060,	0.940427434114483710,	0.940410433215343680,	0.940393429965177610,	0.940376424364028020,	0.940359416411937320,	0.940342406108947700,	
+0.940325393455102470,	0.940308378450443790,	0.940291361095014100,	0.940274341388856020,	0.940257319332012060,	0.940240294924524770,	0.940223268166436530,	0.940206239057790330,	
+0.940189207598628670,	0.940172173788993870,	0.940155137628928660,	0.940138099118475570,	0.940121058257677330,	0.940104015046576370,	0.940086969485215080,	0.940069921573636780,	
+0.940052871311883530,	0.940035818699998190,	0.940018763738023290,	0.940001706426001450,	0.939984646763975310,	0.939967584751987610,	0.939950520390080650,	0.939933453678297610,	
+0.939916384616681030,	0.939899313205273530,	0.939882239444117640,	0.939865163333256200,	0.939848084872731860,	0.939831004062587020,	0.939813920902864860,	0.939796835393608030,	
+0.939779747534859040,	0.939762657326660760,	0.939745564769055690,	0.939728469862086800,	0.939711372605796740,	0.939694273000228010,	0.939677171045423810,	0.939660066741426660,	
+0.939642960088279410,	0.939625851086024810,	0.939608739734705490,	0.939591626034364300,	0.939574509985043770,	0.939557391586787300,	0.939540270839637310,	0.939523147743636770,	
+0.939506022298828180,	0.939488894505254630,	0.939471764362958870,	0.939454631871983640,	0.939437497032371560,	0.939420359844166050,	0.939403220307409530,	0.939386078422145050,	
+0.939368934188415380,	0.939351787606263370,	0.939334638675731970,	0.939317487396863830,	0.939300333769701790,	0.939283177794289160,	0.939266019470668570,	0.939248858798882870,	
+0.939231695778975140,	0.939214530410988120,	0.939197362694964790,	0.939180192630947760,	0.939163020218980570,	0.939145845459105840,	0.939128668351366440,	0.939111488895805310,	
+0.939094307092465550,	0.939077122941390010,	0.939059936442621650,	0.939042747596203210,	0.939025556402178110,	0.939008362860589200,	0.938991166971479330,	0.938973968734891580,	
+0.938956768150868930,	0.938939565219454210,	0.938922359940690400,	0.938905152314621020,	0.938887942341288690,	0.938870730020736510,	0.938853515353007540,	0.938836298338144750,	
+0.938819078976191210,	0.938801857267190010,	0.938784633211183880,	0.938767406808216460,	0.938750178058330500,	0.938732946961569060,	0.938715713517975340,	0.938698477727592300,	
+0.938681239590463010,	0.938663999106630680,	0.938646756276138030,	0.938629511099028810,	0.938612263575345770,	0.938595013705132100,	0.938577761488430970,	0.938560506925285360,	
+0.938543250015738460,	0.938525990759833120,	0.938508729157613190,	0.938491465209121410,	0.938474198914400980,	0.938456930273494970,	0.938439659286446680,	0.938422385953299300,	
+0.938405110274095900,	0.938387832248879450,	0.938370551877693690,	0.938353269160581480,	0.938335984097586230,	0.938318696688751010,	0.938301406934119010,	0.938284114833733420,	
+0.938266820387637650,	0.938249523595874550,	0.938232224458487860,	0.938214922975520560,	0.938197619147016050,	0.938180312973017520,	0.938163004453568150,	0.938145693588711250,	
+0.938128380378489890,	0.938111064822947820,	0.938093746922128100,	0.938076426676074050,	0.938059104084828840,	0.938041779148436010,	0.938024451866938610,	0.938007122240380190,	
+0.937989790268803580,	0.937972455952252760,	0.937955119290770910,	0.937937780284401220,	0.937920438933187000,	0.937903095237171750,	0.937885749196398780,	0.937868400810911160,	
+0.937851050080752760,	0.937833697005966750,	0.937816341586596550,	0.937798983822685450,	0.937781623714276980,	0.937764261261414320,	0.937746896464141110,	0.937729529322500310,	
+0.937712159836536000,	0.937694788006291250,	0.937677413831809580,	0.937660037313134410,	0.937642658450309030,	0.937625277243377080,	0.937607893692381960,	0.937590507797366750,	
+0.937573119558375630,	0.937555728975451700,	0.937538336048638450,	0.937520940777979320,	0.937503543163517810,	0.937486143205297550,	0.937468740903361520,	0.937451336257754010,	
+0.937433929268518100,	0.937416519935697410,	0.937399108259335480,	0.937381694239475700,	0.937364277876161720,	0.937346859169436940,	0.937329438119344880,	0.937312014725929400,	
+0.937294588989233900,	0.937277160909302020,	0.937259730486177170,	0.937242297719902970,	0.937224862610523070,	0.937207425158080980,	0.937189985362620100,	0.937172543224184530,	
+0.937155098742817550,	0.937137651918562800,	0.937120202751464020,	0.937102751241564720,	0.937085297388908440,	0.937067841193538700,	0.937050382655499670,	0.937032921774834660,	
+0.937015458551587300,	0.936997992985801330,	0.936980525077520390,	0.936963054826788210,	0.936945582233648320,	0.936928107298144130,	0.936910630020320050,	0.936893150400219250,	
+0.936875668437885720,	0.936858184133362970,	0.936840697486694850,	0.936823208497924890,	0.936805717167096600,	0.936788223494254390,	0.936770727479441570,	0.936753229122701870,	
+0.936735728424079150,	0.936718225383617150,	0.936700720001359620,	0.936683212277350190,	0.936665702211632480,	0.936648189804250800,	0.936630675055248660,	0.936613157964669820,	
+0.936595638532558120,	0.936578116758957300,	0.936560592643911230,	0.936543066187463640,	0.936525537389658050,	0.936508006250538980,	0.936490472770149850,	0.936472936948534510,	
+0.936455398785736910,	0.936437858281800710,	0.936420315436769960,	0.936402770250688080,	0.936385222723599590,	0.936367672855548010,	0.936350120646577300,	0.936332566096731210,	
+0.936315009206053820,	0.936297449974588860,	0.936279888402380190,	0.936262324489471660,	0.936244758235907470,	0.936227189641731460,	0.936209618706987490,	0.936192045431719410,	
+0.936174469815971300,	0.936156891859786900,	0.936139311563210400,	0.936121728926285200,	0.936104143949056060,	0.936086556631566590,	0.936068966973860660,	0.936051374975982340,	
+0.936033780637975600,	0.936016183959884400,	0.935998584941752370,	0.935980983583624250,	0.935963379885543680,	0.935945773847554620,	0.935928165469701150,	0.935910554752027220,	
+0.935892941694576930,	0.935875326297394340,	0.935857708560523080,	0.935840088484007900,	0.935822466067892430,	0.935804841312220860,	0.935787214217037140,	0.935769584782385370,	
+0.935751953008309710,	0.935734318894853810,	0.935716682442062410,	0.935699043649979360,	0.935681402518648620,	0.935663759048114390,	0.935646113238420840,	0.935628465089611950,	
+0.935610814601731900,	0.935593161774824540,	0.935575506608934520,	0.935557849104105780,	0.935540189260382400,	0.935522527077808590,	0.935504862556428400,	0.935487195696286130,	
+0.935469526497425760,	0.935451854959891360,	0.935434181083727560,	0.935416504868978430,	0.935398826315687940,	0.935381145423900380,	0.935363462193659960,	0.935345776625010950,	
+0.935328088717997110,	0.935310398472663400,	0.935292705889053670,	0.935275010967212220,	0.935257313707183240,	0.935239614109010910,	0.935221912172739640,	0.935204207898413520,	
+0.935186501286076610,	0.935168792335773660,	0.935151081047548850,	0.935133367421446260,	0.935115651457510300,	0.935097933155785150,	0.935080212516315230,	0.935062489539144840,	
+0.935044764224317810,	0.935027036571879240,	0.935009306581872980,	0.934991574254343540,	0.934973839589335110,	0.934956102586892210,	0.934938363247058920,	0.934920621569879430,	
+0.934902877555398800,	0.934885131203660900,	0.934867382514710130,	0.934849631488590900,	0.934831878125347630,	0.934814122425024710,	0.934796364387666450,	0.934778604013317030,	
+0.934760841302021310,	0.934743076253823470,	0.934725308868768030,	0.934707539146899300,	0.934689767088261680,	0.934671992692899690,	0.934654215960857400,	0.934636436892179790,	
+0.934618655486911250,	0.934600871745095980,	0.934583085666778500,	0.934565297252003320,	0.934547506500814970,	0.934529713413257750,	0.934511917989376050,	0.934494120229214740,	
+0.934476320132818230,	0.934458517700230920,	0.934440712931497220,	0.934422905826661880,	0.934405096385769180,	0.934387284608863780,	0.934369470495989840,	0.934351654047192560,	
+0.934333835262516010,	0.934316014142005050,	0.934298190685703970,	0.934280364893657400,	0.934262536765909980,	0.934244706302505890,	0.934226873503490320,	0.934209038368907560,	
+0.934191200898802250,	0.934173361093218910,	0.934155518952202170,	0.934137674475796650,	0.934119827664046890,	0.934101978516997280,	0.934084127034693010,	0.934066273217178500,	
+0.934048417064498260,	0.934030558576696920,	0.934012697753819230,	0.933994834595909820,	0.933976969103013310,	0.933959101275174120,	0.933941231112437430,	0.933923358614847650,	
+0.933905483782449530,	0.933887606615287690,	0.933869727113406770,	0.933851845276851610,	0.933833961105666410,	0.933816074599896680,	0.933798185759586840,	0.933780294584781510,	
+0.933762401075525330,	0.933744505231863250,	0.933726607053839920,	0.933708706541500070,	0.933690803694888110,	0.933672898514049440,	0.933654990999028490,	0.933637081149870100,	
+0.933619168966619010,	0.933601254449320070,	0.933583337598017930,	0.933565418412757090,	0.933547496893583070,	0.933529573040540290,	0.933511646853673600,	0.933493718333027860,	
+0.933475787478647680,	0.933457854290578150,	0.933439918768863900,	0.933421980913549550,	0.933404040724680640,	0.933386098202301560,	0.933368153346457290,	0.933350206157192550,	
+0.933332256634552330,	0.933314304778581460,	0.933296350589324810,	0.933278394066827110,	0.933260435211133550,	0.933242474022288990,	0.933224510500338280,	0.933206544645326260,	
+0.933188576457297910,	0.933170605936298080,	0.933152633082371400,	0.933134657895563490,	0.933116680375918990,	0.933098700523482650,	0.933080718338299640,	0.933062733820414820,	
+0.933044746969873160,	0.933026757786719730,	0.933008766270998930,	0.932990772422756630,	0.932972776242037450,	0.932954777728886240,	0.932936776883348080,	0.932918773705468050,	
+0.932900768195291000,	0.932882760352861770,	0.932864750178225900,	0.932846737671428230,	0.932828722832513720,	0.932810705661527350,	0.932792686158514180,	0.932774664323519410,	
+0.932756640156587880,	0.932738613657764450,	0.932720584827094860,	0.932702553664623730,	0.932684520170396270,	0.932666484344457540,	0.932648446186852500,	0.932630405697626450,	
+0.932612362876824360,	0.932594317724490970,	0.932576270240672130,	0.932558220425412700,	0.932540168278757630,	0.932522113800752230,	0.932504056991441450,	0.932485997850870610,	
+0.932467936379084430,	0.932449872576128660,	0.932431806442048260,	0.932413737976888310,	0.932395667180694110,	0.932377594053510620,	0.932359518595383240,	0.932341440806357060,	
+0.932323360686476920,	0.932305278235788680,	0.932287193454337300,	0.932269106342167860,	0.932251016899325770,	0.932232925125856090,	0.932214831021804020,	0.932196734587214970,	
+0.932178635822133780,	0.932160534726606200,	0.932142431300677420,	0.932124325544392510,	0.932106217457796760,	0.932088107040935480,	0.932069994293853840,	0.932051879216597050,	
+0.932033761809210830,	0.932015642071740150,	0.931997520004230420,	0.931979395606726930,	0.931961268879274880,	0.931943139821919670,	0.931925008434706600,	0.931906874717680740,	
+0.931888738670887950,	0.931870600294373410,	0.931852459588182300,	0.931834316552360040,	0.931816171186952040,	0.931798023492003580,	0.931779873467559640,	0.931761721113666510,	
+0.931743566430368930,	0.931725409417712540,	0.931707250075742620,	0.931689088404504480,	0.931670924404043750,	0.931652758074405620,	0.931634589415635260,	0.931616418427778760,	
+0.931598245110881300,	0.931580069464988170,	0.931561891490144900,	0.931543711186396780,	0.931525528553789560,	0.931507343592368420,	0.931489156302178540,	0.931470966683266230,	
+0.931452774735676340,	0.931434580459454710,	0.931416383854646420,	0.931398184921297330,	0.931379983659452740,	0.931361780069157820,	0.931343574150458870,	0.931325365903400870,	
+0.931307155328029550,	0.931288942424390310,	0.931270727192528680,	0.931252509632490290,	0.931234289744320540,	0.931216067528064850,	0.931197842983769180,	0.931179616111479040,	
+0.931161386911239840,	0.931143155383097110,	0.931124921527096470,	0.931106685343283560,	0.931088446831704000,	0.931070205992402980,	0.931051962825426680,	0.931033717330820520,	
+0.931015469508630120,	0.930997219358901010,	0.930978966881678920,	0.930960712077009260,	0.930942454944937660,	0.930924195485510090,	0.930905933698772170,	0.930887669584769320,	
+0.930869403143547380,	0.930851134375151880,	0.930832863279628550,	0.930814589857023030,	0.930796314107380730,	0.930778036030748050,	0.930759755627170170,	0.930741472896692960,	
+0.930723187839362030,	0.930704900455223140,	0.930686610744322020,	0.930668318706704080,	0.930650024342415620,	0.930631727651502150,	0.930613428634009310,	0.930595127289982840,	
+0.930576823619468700,	0.930558517622512400,	0.930540209299159820,	0.930521898649456450,	0.930503585673448600,	0.930485270371181780,	0.930466952742701860,	0.930448632788054450,	
+0.930430310507285530,	0.930411985900440830,	0.930393658967566100,	0.930375329708706960,	0.930356998123909820,	0.930338664213220200,	0.930320327976683850,	0.930301989414346720,	
+0.930283648526254670,	0.930265305312453440,	0.930246959772988660,	0.930228611907906730,	0.930210261717253300,	0.930191909201074310,	0.930173554359415400,	0.930155197192322760,	
+0.930136837699842010,	0.930118475882019120,	0.930100111738899840,	0.930081745270530560,	0.930063376476956920,	0.930045005358224870,	0.930026631914380290,	0.930008256145469110,	
+0.929989878051537320,	0.929971497632630760,	0.929953114888795170,	0.929934729820077190,	0.929916342426522320,	0.929897952708176660,	0.929879560665086040,	0.929861166297296540,	
+0.929842769604854120,	0.929824370587804430,	0.929805969246194190,	0.929787565580069030,	0.929769159589474930,	0.929750751274457940,	0.929732340635064050,	0.929713927671339310,	
+0.929695512383329810,	0.929677094771081070,	0.929658674834640040,	0.929640252574052250,	0.929621827989363880,	0.929603401080621010,	0.929584971847869480,	0.929566540291155600,	
+0.929548106410525100,	0.929529670206024620,	0.929511231677699890,	0.929492790825597210,	0.929474347649762440,	0.929455902150241870,	0.929437454327081470,	0.929419004180327520,	
+0.929400551710025670,	0.929382096916222870,	0.929363639798964750,	0.929345180358297500,	0.929326718594267300,	0.929308254506920340,	0.929289788096302800,	0.929271319362460660,	
+0.929252848305439970,	0.929234374925287490,	0.929215899222049170,	0.929197421195770980,	0.929178940846499210,	0.929160458174280170,	0.929141973179159920,	0.929123485861184430,	
+0.929104996220400550,	0.929086504256854240,	0.929068009970591580,	0.929049513361658970,	0.929031014430102610,	0.929012513175968560,	0.928994009599303340,	0.928975503700152800,	
+0.928956995478563700,	0.928938484934582200,	0.928919972068254500,	0.928901456879626890,	0.928882939368745550,	0.928864419535656900,	0.928845897380407240,	0.928827372903042510,	
+0.928808846103609590,	0.928790316982154640,	0.928771785538723860,	0.928753251773363650,	0.928734715686120320,	0.928716177277040140,	0.928697636546169210,	0.928679093493554490,	
+0.928660548119242040,	0.928642000423278270,	0.928623450405709480,	0.928604898066582090,	0.928586343405942480,	0.928567786423836970,	0.928549227120311630,	0.928530665495413520,	
+0.928512101549188840,	0.928493535281683880,	0.928474966692945050,	0.928456395783018860,	0.928437822551951620,	0.928419246999789500,	0.928400669126579590,	0.928382088932368070,	
+0.928363506417201330,	0.928344921581125800,	0.928326334424187880,	0.928307744946434200,	0.928289153147911160,	0.928270559028664950,	0.928251962588742650,	0.928233363828190440,	
+0.928214762747054720,	0.928196159345382240,	0.928177553623219300,	0.928158945580612400,	0.928140335217608300,	0.928121722534252850,	0.928103107530593550,	0.928084490206676490,	
+0.928065870562548190,	0.928047248598255160,	0.928028624313844030,	0.928009997709361320,	0.927991368784853330,	0.927972737540367240,	0.927954103975949240,	0.927935468091646070,	
+0.927916829887504240,	0.927898189363570270,	0.927879546519890800,	0.927860901356512560,	0.927842253873481740,	0.927823604070845520,	0.927804951948650310,	0.927786297506942750,	
+0.927767640745769450,	0.927748981665177050,	0.927730320265212180,	0.927711656545921250,	0.927692990507351430,	0.927674322149549150,	0.927655651472561020,	0.927636978476433890,	
+0.927618303161214190,	0.927599625526948750,	0.927580945573684310,	0.927562263301467180,	0.927543578710344650,	0.927524891800363240,	0.927506202571569570,	0.927487511024010390,	
+0.927468817157732440,	0.927450120972782450,	0.927431422469207070,	0.927412721647052910,	0.927394018506367270,	0.927375313047196560,	0.927356605269587630,	0.927337895173587110,	
+0.927319182759241860,	0.927300468026598600,	0.927281750975703980,	0.927263031606605170,	0.927244309919348920,	0.927225585913981850,	0.927206859590550710,	0.927188130949102570,	
+0.927169399989684060,	0.927150666712342030,	0.927131931117123000,	0.927113193204074370,	0.927094452973242890,	0.927075710424675290,	0.927056965558418320,	0.927038218374519050,	
+0.927019468873024110,	0.927000717053980570,	0.926981962917434950,	0.926963206463434660,	0.926944447692026440,	0.926925686603257030,	0.926906923197173490,	0.926888157473822580,	
+0.926869389433251260,	0.926850619075506140,	0.926831846400634870,	0.926813071408683960,	0.926794294099700270,	0.926775514473730970,	0.926756732530822800,	0.926737948271022850,	
+0.926719161694378070,	0.926700372800934980,	0.926681581590741320,	0.926662788063843720,	0.926643992220289150,	0.926625194060124560,	0.926606393583397030,	0.926587590790153400,	
+0.926568785680440540,	0.926549978254306070,	0.926531168511796730,	0.926512356452959370,	0.926493542077841070,	0.926474725386489010,	0.926455906378950140,	0.926437085055271450,	
+0.926418261415499770,	0.926399435459682730,	0.926380607187867080,	0.926361776600100000,	0.926342943696428330,	0.926324108476899390,	0.926305270941560230,	0.926286431090457830,	
+0.926267588923639030,	0.926248744441151570,	0.926229897643042310,	0.926211048529358320,	0.926192197100146660,	0.926173343355454430,	0.926154487295328900,	0.926135628919816930,	
+0.926116768228966050,	0.926097905222823310,	0.926079039901435920,	0.926060172264850820,	0.926041302313115320,	0.926022430046276490,	0.926003555464381730,	0.925984678567477680,	
+0.925965799355612180,	0.925946917828832320,	0.925928033987185040,	0.925909147830717760,	0.925890259359477550,	0.925871368573511820,	0.925852475472867530,	0.925833580057591750,	
+0.925814682327732340,	0.925795782283336250,	0.925776879924450790,	0.925757975251123020,	0.925739068263400360,	0.925720158961329980,	0.925701247344958960,	0.925682333414335030,	
+0.925663417169505400,	0.925644498610517120,	0.925625577737417600,	0.925606654550254260,	0.925587729049074160,	0.925568801233924820,	0.925549871104853090,	0.925530938661907050,	
+0.925512003905133550,	0.925493066834580210,	0.925474127450294120,	0.925455185752322660,	0.925436241740713370,	0.925417295415512990,	0.925398346776769800,	0.925379395824530770,	
+0.925360442558843200,	0.925341486979754490,	0.925322529087312050,	0.925303568881563400,	0.925284606362555720,	0.925265641530336300,	0.925246674384953010,	0.925227704926453120,	
+0.925208733154883830,	0.925189759070292880,	0.925170782672727450,	0.925151803962235060,	0.925132822938863120,	0.925113839602658920,	0.925094853953670300,	0.925075865991944580,	
+0.925056875717529260,	0.925037883130471750,	0.925018888230819460,	0.924999891018620010,	0.924980891493920490,	0.924961889656769070,	0.924942885507212930,	0.924923879045299600,	
+0.924904870271076600,	0.924885859184591320,	0.924866845785891400,	0.924847830075024470,	0.924828812052037600,	0.924809791716978970,	0.924790769069895880,	0.924771744110835850,	
+0.924752716839846500,	0.924733687256975360,	0.924714655362270040,	0.924695621155777970,	0.924676584637546650,	0.924657545807624160,	0.924638504666057680,	0.924619461212895070,	
+0.924600415448183830,	0.924581367371971500,	0.924562316984305690,	0.924543264285233810,	0.924524209274804170,	0.924505151953063930,	0.924486092320060850,	0.924467030375842440,	
+0.924447966120456540,	0.924428899553950690,	0.924409830676372610,	0.924390759487769720,	0.924371685988190080,	0.924352610177681330,	0.924333532056291100,	0.924314451624067000,	
+0.924295368881056680,	0.924276283827308090,	0.924257196462868300,	0.924238106787785950,	0.924219014802108330,	0.924199920505883180,	0.924180823899158230,	0.924161724981981240,	
+0.924142623754399820,	0.924123520216461940,	0.924104414368214890,	0.924085306209707190,	0.924066195740986140,	0.924047082962099700,	0.924027967873095490,	0.924008850474021370,	
+0.923989730764925080,	0.923970608745854570,	0.923951484416857150,	0.923932357777981330,	0.923913228829274620,	0.923894097570784890,	0.923874964002559860,	0.923855828124647390,	
+0.923836689937095450,	0.923817549439951420,	0.923798406633263850,	0.923779261517080230,	0.923760114091448430,	0.923740964356416390,	0.923721812312031990,	0.923702657958342940,	
+0.923683501295397340,	0.923664342323242680,	0.923645181041927390,	0.923626017451499190,	0.923606851552005950,	0.923587683343495610,	0.923568512826016040,	0.923549339999615190,	
+0.923530164864341030,	0.923510987420241070,	0.923491807667364050,	0.923472625605757380,	0.923453441235469240,	0.923434254556547480,	0.923415065569040070,	0.923395874272995080,	
+0.923376680668460010,	0.923357484755483520,	0.923338286534113320,	0.923319086004397490,	0.923299883166383890,	0.923280678020120590,	0.923261470565655660,	0.923242260803036950,	
+0.923223048732312310,	0.923203834353530370,	0.923184617666738870,	0.923165398671985770,	0.923146177369319140,	0.923126953758787170,	0.923107727840437820,	0.923088499614318710,	
+0.923069269080478820,	0.923050036238965640,	0.923030801089827490,	0.923011563633112210,	0.922992323868868090,	0.922973081797143100,	0.922953837417985530,	0.922934590731442910,	
+0.922915341737564180,	0.922896090436397200,	0.922876836827989820,	0.922857580912390450,	0.922838322689647160,	0.922819062159808020,	0.922799799322921220,	0.922780534179034610,	
+0.922761266728196920,	0.922741996970456110,	0.922722724905860380,	0.922703450534457680,	0.922684173856296530,	0.922664894871424890,	0.922645613579890610,	0.922626329981742650,	
+0.922607044077028870,	0.922587755865797550,	0.922568465348096780,	0.922549172523974840,	0.922529877393480020,	0.922510579956660530,	0.922491280213564190,	0.922471978164239980,	
+0.922452673808735860,	0.922433367147100000,	0.922414058179380820,	0.922394746905626390,	0.922375433325885120,	0.922356117440204960,	0.922336799248634880,	0.922317478751222720,	
+0.922298155948016900,	0.922278830839065700,	0.922259503424417430,	0.922240173704120370,	0.922220841678222940,	0.922201507346772980,	0.922182170709819670,	0.922162831767410870,	
+0.922143490519594990,	0.922124146966420420,	0.922104801107935470,	0.922085452944188530,	0.922066102475227910,	0.922046749701101790,	0.922027394621859120,	0.922008037237547870,	
+0.921988677548216560,	0.921969315553913590,	0.921949951254687370,	0.921930584650586190,	0.921911215741658240,	0.921891844527952590,	0.921872471009517300,	0.921853095186400910,	
+0.921833717058651690,	0.921814336626318290,	0.921794953889448990,	0.921775568848092200,	0.921756181502296320,	0.921736791852110220,	0.921717399897582170,	0.921698005638760700,	
+0.921678609075694100,	0.921659210208431000,	0.921639809037019920,	0.921620405561509260,	0.921600999781947320,	0.921581591698383160,	0.921562181310865090,	0.921542768619441510,	
+0.921523353624160930,	0.921503936325072100,	0.921484516722223420,	0.921465094815663080,	0.921445670605440250,	0.921426244091603340,	0.921406815274200870,	0.921387384153281250,	
+0.921367950728893210,	0.921348515001085390,	0.921329076969906180,	0.921309636635403880,	0.921290193997627900,	0.921270749056626540,	0.921251301812448190,	0.921231852265141590,	
+0.921212400414755380,	0.921192946261338190,	0.921173489804938180,	0.921154031045604890,	0.921134569983386500,	0.921115106618331740,	0.921095640950489130,	0.921076172979907510,	
+0.921056702706635420,	0.921037230130721470,	0.921017755252214300,	0.920998278071162970,	0.920978798587615890,	0.920959316801621910,	0.920939832713229540,	0.920920346322487650,	
+0.920900857629444960,	0.920881366634150100,	0.920861873336651370,	0.920842377736998400,	0.920822879835239470,	0.920803379631423340,	0.920783877125598730,	0.920764372317814490,	
+0.920744865208119270,	0.920725355796561560,	0.920705844083190780,	0.920686330068055340,	0.920666813751204180,	0.920647295132685950,	0.920627774212549490,	0.920608250990843540,	
+0.920588725467617050,	0.920569197642918340,	0.920549667516797010,	0.920530135089301590,	0.920510600360480710,	0.920491063330383330,	0.920471523999058410,	0.920451982366554570,	
+0.920432438432920770,	0.920412892198205550,	0.920393343662458510,	0.920373792825728070,	0.920354239688063070,	0.920334684249512590,	0.920315126510125370,	0.920295566469950250,	
+0.920276004129035980,	0.920256439487431970,	0.920236872545186930,	0.920217303302349630,	0.920197731758969130,	0.920178157915094270,	0.920158581770774030,	0.920139003326057360,	
+0.920119422580992770,	0.920099839535630020,	0.920080254190017710,	0.920060666544204710,	0.920041076598240080,	0.920021484352172680,	0.920001889806051580,	0.919982292959925510,	
+0.919962693813843990,	0.919943092367855760,	0.919923488622009790,	0.919903882576355030,	0.919884274230940660,	0.919864663585815530,	0.919845050641028840,	0.919825435396629090,	
+0.919805817852666130,	0.919786198009188590,	0.919766575866245550,	0.919746951423886180,	0.919727324682159340,	0.919707695641114210,	0.919688064300799860,	0.919668430661264910,	
+0.919648794722559340,	0.919629156484731760,	0.919609515947831250,	0.919589873111906990,	0.919570227977008050,	0.919550580543183500,	0.919530930810482210,	0.919511278778953890,	
+0.919491624448647400,	0.919471967819611820,	0.919452308891896330,	0.919432647665550110,	0.919412984140622220,	0.919393318317161980,	0.919373650195218000,	0.919353979774840240,	
+0.919334307056077550,	0.919314632038979010,	0.919294954723594020,	0.919275275109971530,	0.919255593198160970,	0.919235908988211390,	0.919216222480171650,	0.919196533674091710,	
+0.919176842570020410,	0.919157149168007060,	0.919137453468100830,	0.919117755470350910,	0.919098055174806690,	0.919078352581516930,	0.919058647690531690,	0.919038940501899710,	
+0.919019231015670510,	0.918999519231893160,	0.918979805150617060,	0.918960088771891390,	0.918940370095765570,	0.918920649122288440,	0.918900925851510060,	0.918881200283479300,	
+0.918861472418245560,	0.918841742255858240,	0.918822009796366410,	0.918802275039819700,	0.918782537986266860,	0.918762798635758050,	0.918743056988342240,	0.918723313044068730,	
+0.918703566802987040,	0.918683818265146450,	0.918664067430596250,	0.918644314299385870,	0.918624558871564360,	0.918604801147181790,	0.918585041126287250,	0.918565278808930130,	
+0.918545514195159730,	0.918525747285025670,	0.918505978078577150,	0.918486206575863660,	0.918466432776934400,	0.918446656681839340,	0.918426878290627640,	0.918407097603348820,	
+0.918387314620052190,	0.918367529340787250,	0.918347741765603520,	0.918327951894550080,	0.918308159727677100,	0.918288365265033770,	0.918268568506669490,	0.918248769452633780,	
+0.918228968102976160,	0.918209164457746140,	0.918189358516993240,	0.918169550280766520,	0.918149739749116290,	0.918129926922091720,	0.918110111799742330,	0.918090294382117640,	
+0.918070474669267280,	0.918050652661240750,	0.918030828358087470,	0.918011001759856840,	0.917991172866599040,	0.917971341678363360,	0.917951508195199220,	0.917931672417156450,	
+0.917911834344284360,	0.917891993976632790,	0.917872151314250820,	0.917852306357188840,	0.917832459105496160,	0.917812609559222280,	0.917792757718416840,	0.917772903583129570,	
+0.917753047153410000,	0.917733188429307840,	0.917713327410872300,	0.917693464098153780,	0.917673598491201670,	0.917653730590065610,	0.917633860394795110,	0.917613987905440020,	
+0.917594113122049970,	0.917574236044674250,	0.917554356673363270,	0.917534475008166430,	0.917514591049133470,	0.917494704796314010,	0.917474816249757690,	0.917454925409514340,	
+0.917435032275633830,	0.917415136848165220,	0.917395239127159260,	0.917375339112665110,	0.917355436804732640,	0.917335532203411570,	0.917315625308751660,	0.917295716120802630,	
+0.917275804639614440,	0.917255890865236290,	0.917235974797718790,	0.917216056437111350,	0.917196135783463820,	0.917176212836825930,	0.917156287597247430,	0.917136360064778280,	
+0.917116430239467870,	0.917096498121366730,	0.917076563710524370,	0.917056627006990640,	0.917036688010815280,	0.917016746722048250,	0.916996803140739280,	0.916976857266938340,	
+0.916956909100694830,	0.916936958642059490,	0.916917005891081720,	0.916897050847811480,	0.916877093512298620,	0.916857133884593000,	0.916837171964744460,	0.916817207752802730,	
+0.916797241248818340,	0.916777272452840800,	0.916757301364920170,	0.916737327985106210,	0.916717352313448970,	0.916697374349998320,	0.916677394094804200,	0.916657411547916250,	
+0.916637426709385190,	0.916617439579260450,	0.916597450157592200,	0.916577458444430390,	0.916557464439824780,	0.916537468143825640,	0.916517469556482720,	0.916497468677845870,	
+0.916477465507965720,	0.916457460046891770,	0.916437452294674330,	0.916417442251363120,	0.916397429917008340,	0.916377415291660060,	0.916357398375367780,	0.916337379168182480,	
+0.916317357670153650,	0.916297333881331390,	0.916277307801765860,	0.916257279431507140,	0.916237248770605080,	0.916217215819109980,	0.916197180577071450,	0.916177143044540340,	
+0.916157103221566290,	0.916137061108199590,	0.916117016704490190,	0.916096970010488290,	0.916076921026243940,	0.916056869751807330,	0.916036816187228100,	0.916016760332557300,	
+0.915996702187844460,	0.915976641753139980,	0.915956579028493810,	0.915936514013956260,	0.915916446709577390,	0.915896377115407060,	0.915876305231496210,	0.915856231057894490,	
+0.915836154594652290,	0.915816075841819570,	0.915795994799446730,	0.915775911467583970,	0.915755825846281350,	0.915735737935588820,	0.915715647735557360,	0.915695555246236690,	
+0.915675460467677230,	0.915655363399929030,	0.915635264043042520,	0.915615162397067750,	0.915595058462054800,	0.915574952238054520,	0.915554843725116860,	0.915534732923292020,	
+0.915514619832630490,	0.915494504453182260,	0.915474386784997930,	0.915454266828127470,	0.915434144582621070,	0.915414020048529680,	0.915393893225903250,	0.915373764114792100,	
+0.915353632715246500,	0.915333499027316750,	0.915313363051053370,	0.915293224786506540,	0.915273084233726330,	0.915252941392763700,	0.915232796263668710,	0.915212648846491780,	
+0.915192499141283200,	0.915172347148093370,	0.915152192866972690,	0.915132036297971240,	0.915111877441139980,	0.915091716296528970,	0.915071552864188730,	0.915051387144169670,	
+0.915031219136522080,	0.915011048841296470,	0.914990876258543140,	0.914970701388312380,	0.914950524230655150,	0.914930344785621630,	0.914910163053262340,	0.914889979033627570,	
+0.914869792726767830,	0.914849604132733530,	0.914829413251575410,	0.914809220083343200,	0.914789024628088420,	0.914768826885861140,	0.914748626856711660,	0.914728424540690700,	
+0.914708219937848680,	0.914688013048235990,	0.914667803871903050,	0.914647592408900920,	0.914627378659279790,	0.914607162623090160,	0.914586944300382680,	0.914566723691207840,	
+0.914546500795616170,	0.914526275613658290,	0.914506048145384390,	0.914485818390845640,	0.914465586350092450,	0.914445352023175230,	0.914425115410144600,	0.914404876511051180,	
+0.914384635325945610,	0.914364391854878170,	0.914344146097899930,	0.914323898055061420,	0.914303647726413260,	0.914283395112005850,	0.914263140211890040,	0.914242883026116230,	
+0.914222623554735380,	0.914202361797797570,	0.914182097755354190,	0.914161831427455550,	0.914141562814152380,	0.914121291915495180,	0.914101018731534930,	0.914080743262322030,	
+0.914060465507907200,	0.914040185468340980,	0.914019903143674650,	0.913999618533958500,	0.913979331639243390,	0.913959042459579820,	0.913938750995018760,	0.913918457245610720,	
+0.913898161211406320,	0.913877862892456760,	0.913857562288812540,	0.913837259400524520,	0.913816954227643200,	0.913796646770219660,	0.913776337028304410,	0.913756025001948300,	
+0.913735710691201850,	0.913715394096116350,	0.913695075216742540,	0.913674754053130920,	0.913654430605332470,	0.913634104873397910,	0.913613776857378100,	0.913593446557323770,	
+0.913573113973285560,	0.913552779105314960,	0.913532441953462280,	0.913512102517778590,	0.913491760798314620,	0.913471416795121230,	0.913451070508249360,	0.913430721937749430,	
+0.913410371083673070,	0.913390017946070780,	0.913369662524993410,	0.913349304820491930,	0.913328944832617060,	0.913308582561420000,	0.913288218006951370,	0.913267851169261900,	
+0.913247482048403110,	0.913227110644425630,	0.913206736957380420,	0.913186360987318310,	0.913165982734290280,	0.913145602198347390,	0.913125219379540050,	0.913104834277920110,	
+0.913084446893537960,	0.913064057226444790,	0.913043665276691450,	0.913023271044328900,	0.913002874529408310,	0.912982475731980440,	0.912962074652096000,	0.912941671289806740,	
+0.912921265645163290,	0.912900857718216720,	0.912880447509017980,	0.912860035017618140,	0.912839620244068170,	0.912819203188419250,	0.912798783850721880,	0.912778362231027930,	
+0.912757938329388120,	0.912737512145853410,	0.912717083680474880,	0.912696652933303710,	0.912676219904390850,	0.912655784593787160,	0.912635347001544360,	0.912614907127713090,	
+0.912594464972344640,	0.912574020535489970,	0.912553573817200370,	0.912533124817526690,	0.912512673536520320,	0.912492219974231800,	0.912471764130713180,	0.912451306006015090,	
+0.912430845600188830,	0.912410382913285360,	0.912389917945355950,	0.912369450696451700,	0.912348981166623880,	0.912328509355923250,	0.912308035264401740,	0.912287558892110110,	
+0.912267080239099530,	0.912246599305421290,	0.912226116091126580,	0.912205630596266580,	0.912185142820892140,	0.912164652765055210,	0.912144160428806640,	0.912123665812197610,	
+0.912103168915279430,	0.912082669738103370,	0.912062168280720620,	0.912041664543182470,	0.912021158525539780,	0.912000650227844600,	0.911980139650147680,	0.911959626792500530,	
+0.911939111654954230,	0.911918594237560280,	0.911898074540369750,	0.911877552563433610,	0.911857028306804040,	0.911836501770531880,	0.911815972954668430,	0.911795441859265090,	
+0.911774908484373150,	0.911754372830043900,	0.911733834896328750,	0.911713294683278660,	0.911692752190945700,	0.911672207419380820,	0.911651660368635430,	0.911631111038760930,	
+0.911610559429808620,	0.911590005541829900,	0.911569449374876270,	0.911548890928998490,	0.911528330204248950,	0.911507767200678610,	0.911487201918338760,	0.911466634357280920,	
+0.911446064517556500,	0.911425492399217000,	0.911404918002313380,	0.911384341326897720,	0.911363762373021300,	0.911343181140735430,	0.911322597630091710,	0.911302011841141350,	
+0.911281423773936060,	0.911260833428527260,	0.911240240804965910,	0.911219645903304290,	0.911199048723593700,	0.911178449265885320,	0.911157847530230990,	0.911137243516681910,	
+0.911116637225289790,	0.911096028656106060,	0.911075417809181890,	0.911054804684569450,	0.911034189282320160,	0.911013571602485310,	0.910992951645116510,	0.910972329410265400,	
+0.910951704897983380,	0.910931078108321860,	0.910910449041332890,	0.910889817697067890,	0.910869184075578260,	0.910848548176915740,	0.910827910001131840,	0.910807269548278060,	
+0.910786626818406280,	0.910765981811567430,	0.910745334527814030,	0.910724684967197380,	0.910704033129768890,	0.910683379015580390,	0.910662722624683400,	0.910642063957129650,	
+0.910621403012970340,	0.910600739792257970,	0.910580074295043620,	0.910559406521379120,	0.910538736471316220,	0.910518064144906330,	0.910497389542201390,	0.910476712663252920,	
+0.910456033508112330,	0.910435352076832020,	0.910414668369463280,	0.910393982386057840,	0.910373294126667560,	0.910352603591343960,	0.910331910780138860,	0.910311215693104030,	
+0.910290518330290840,	0.910269818691751610,	0.910249116777537840,	0.910228412587701370,	0.910207706122293850,	0.910186997381366990,	0.910166286364972650,	0.910145573073162240,	
+0.910124857505988370,	0.910104139663502230,	0.910083419545755780,	0.910062697152800750,	0.910041972484688990,	0.910021245541472350,	0.910000516323202560,	0.909979784829931140,	
+0.909959051061710600,	0.909938315018592460,	0.909917576700628450,	0.909896836107870530,	0.909876093240370660,	0.909855348098180360,	0.909834600681351470,	0.909813850989936390,	
+0.909793099023986640,	0.909772344783554180,	0.909751588268690850,	0.909730829479448610,	0.909710068415879200,	0.909689305078034690,	0.909668539465966490,	0.909647771579727320,	
+0.909627001419368810,	0.909606228984942700,	0.909585454276501060,	0.909564677294095740,	0.909543898037778800,	0.909523116507602090,	0.909502332703617130,	0.909481546625876880,	
+0.909460758274432620,	0.909439967649336540,	0.909419174750640490,	0.909398379578396530,	0.909377582132656630,	0.909356782413472400,	0.909335980420896580,	0.909315176154980810,	
+0.909294369615777140,	0.909273560803337430,	0.909252749717713860,	0.909231936358958490,	0.909211120727123290,	0.909190302822259880,	0.909169482644420990,	0.909148660193658480,	
+0.909127835470024290,	0.909107008473570620,	0.909086179204349310,	0.909065347662412650,	0.909044513847812490,	0.909023677760600780,	0.909002839400830150,	0.908981998768552570,	
+0.908961155863819870,	0.908940310686684350,	0.908919463237197970,	0.908898613515413010,	0.908877761521381110,	0.908856907255155220,	0.908836050716786970,	0.908815191906328760,	
+0.908794330823832430,	0.908773467469350280,	0.908752601842934490,	0.908731733944637240,	0.908710863774510160,	0.908689991332606420,	0.908669116618977650,	0.908648239633676140,	
+0.908627360376753960,	0.908606478848263400,	0.908585595048256640,	0.908564708976785540,	0.908543820633903040,	0.908522930019661000,	0.908502037134111600,	0.908481141977307120,	
+0.908460244549299740,	0.908439344850141770,	0.908418442879885490,	0.908397538638582750,	0.908376632126286500,	0.908355723343048590,	0.908334812288921540,	0.908313898963957310,	
+0.908292983368208410,	0.908272065501727010,	0.908251145364565420,	0.908230222956775690,	0.908209298278410680,	0.908188371329522460,	0.908167442110163430,	0.908146510620385650,	
+0.908125576860241650,	0.908104640829783700,	0.908083702529063790,	0.908062761958134960,	0.908041819117049180,	0.908020874005858960,	0.907999926624616480,	0.907978976973374150,	
+0.907958025052184480,	0.907937070861099760,	0.907916114400171840,	0.907895155669454110,	0.907874194668998550,	0.907853231398857430,	0.907832265859083280,	0.907811298049728380,	
+0.907790327970845250,	0.907769355622486400,	0.907748381004703670,	0.907727404117550370,	0.907706424961078670,	0.907685443535340860,	0.907664459840389350,	0.907643473876276750,	
+0.907622485643055590,	0.907601495140777700,	0.907580502369496500,	0.907559507329263940,	0.907538510020132750,	0.907517510442155230,	0.907496508595383890,	0.907475504479871350,	
+0.907454498095670030,	0.907433489442832090,	0.907412478521410830,	0.907391465331458310,	0.907370449873027170,	0.907349432146169810,	0.907328412150938960,	0.907307389887387130,	
+0.907286365355566390,	0.907265338555530150,	0.907244309487330480,	0.907223278151020110,	0.907202244546651440,	0.907181208674277320,	0.907160170533950040,	0.907139130125722450,	
+0.907118087449646620,	0.907097042505775830,	0.907075995294162610,	0.907054945814859350,	0.907033894067918680,	0.907012840053393220,	0.906991783771335820,	0.906970725221798890,	
+0.906949664404834710,	0.906928601320496800,	0.906907535968837440,	0.906886468349909160,	0.906865398463764680,	0.906844326310456750,	0.906823251890038100,	0.906802175202560790,	
+0.906781096248078460,	0.906760015026643500,	0.906738931538308420,	0.906717845783125980,	0.906696757761149000,	0.906675667472430000,	0.906654574917021950,	0.906633480094977020,	
+0.906612383006348830,	0.906591283651189680,	0.906570182029552310,	0.906549078141489440,	0.906527971987053930,	0.906506863566298390,	0.906485752879275800,	0.906464639926038430,	
+0.906443524706639800,	0.906422407221132430,	0.906401287469568940,	0.906380165452002280,	0.906359041168485200,	0.906337914619070540,	0.906316785803810700,	0.906295654722759300,	
+0.906274521375968760,	0.906253385763491900,	0.906232247885381590,	0.906211107741690670,	0.906189965332471870,	0.906168820657778260,	0.906147673717662250,	0.906126524512177340,	
+0.906105373041376170,	0.906084219305311580,	0.906063063304036410,	0.906041905037603620,	0.906020744506066070,	0.905999581709476250,	0.905978416647887920,	0.905957249321353460,	
+0.905936079729925960,	0.905914907873658140,	0.905893733752603180,	0.905872557366813820,	0.905851378716343030,	0.905830197801243520,	0.905809014621568820,	0.905787829177371550,	
+0.905766641468704780,	0.905745451495621360,	0.905724259258174350,	0.905703064756416710,	0.905681867990401400,	0.905660668960181050,	0.905639467665809380,	0.905618264107339030,	
+0.905597058284822950,	0.905575850198314320,	0.905554639847866110,	0.905533427233531140,	0.905512212355362390,	0.905490995213413360,	0.905469775807736910,	0.905448554138386100,	
+0.905427330205413770,	0.905406104008873220,	0.905384875548817300,	0.905363644825299300,	0.905342411838371720,	0.905321176588088530,	0.905299939074502350,	0.905278699297666360,	
+0.905257457257633620,	0.905236212954457330,	0.905214966388190430,	0.905193717558886110,	0.905172466466597100,	0.905151213111377250,	0.905129957493279510,	0.905108699612356740,	
+0.905087439468662320,	0.905066177062249230,	0.905044912393170750,	0.905023645461479620,	0.905002376267229680,	0.904981104810473890,	0.904959831091265320,	0.904938555109657150,	
+0.904917276865702560,	0.904895996359454840,	0.904874713590967160,	0.904853428560292270,	0.904832141267484120,	0.904810851712595680,	0.904789559895680110,	0.904768265816790600,	
+0.904746969475980540,	0.904725670873302910,	0.904704370008810880,	0.904683066882558170,	0.904661761494597870,	0.904640453844983150,	0.904619143933767190,	0.904597831761003500,	
+0.904576517326745270,	0.904555200631045660,	0.904533881673957650,	0.904512560455535300,	0.904491236975831670,	0.904469911234899840,	0.904448583232793310,	0.904427252969565280,	
+0.904405920445269130,	0.904384585659958160,	0.904363248613685330,	0.904341909306504820,	0.904320567738469470,	0.904299223909632690,	0.904277877820047980,	0.904256529469768420,	
+0.904235178858847630,	0.904213825987338460,	0.904192470855295190,	0.904171113462770680,	0.904149753809818320,	0.904128391896491750,	0.904107027722844010,	0.904085661288928870,	
+0.904064292594799480,	0.904042921640509030,	0.904021548426111600,	0.904000172951660350,	0.903978795217208590,	0.903957415222809920,	0.903936032968517660,	0.903914648454385410,	
+0.903893261680466020,	0.903871872646814010,	0.903850481353482230,	0.903829087800524180,	0.903807691987993490,	0.903786293915943670,	0.903764893584427910,	0.903743490993500040,	
+0.903722086143213030,	0.903700679033621280,	0.903679269664777740,	0.903657858036736040,	0.903636444149549690,	0.903615028003272200,	0.903593609597957200,	0.903572188933658090,	
+0.903550766010428270,	0.903529340828321810,	0.903507913387392000,	0.903486483687692470,	0.903465051729276710,	0.903443617512198260,	0.903422181036510840,	0.903400742302267520,	
+0.903379301309522820,	0.903357858058329800,	0.903336412548742080,	0.903314964780813410,	0.903293514754597290,	0.903272062470147460,	0.903250607927517430,	0.903229151126760500,	
+0.903207692067931060,	0.903186230751082400,	0.903164767176268150,	0.903143301343541930,	0.903121833252957580,	0.903100362904568520,	0.903078890298428690,	0.903057415434591170,	
+0.903035938313110460,	0.903014458934039980,	0.902992977297433330,	0.902971493403344150,	0.902950007251826390,	0.902928518842933460,	0.902907028176718970,	0.902885535253237230,	
+0.902864040072541730,	0.902842542634686000,	0.902821042939723980,	0.902799540987709430,	0.902778036778695950,	0.902756530312737390,	0.902735021589887170,	0.902713510610199670,	
+0.902691997373728410,	0.902670481880527230,	0.902648964130649880,	0.902627444124149970,	0.902605921861081570,	0.902584397341497980,	0.902562870565453700,	0.902541341533002360,	
+0.902519810244197580,	0.902498276699093220,	0.902476740897743320,	0.902455202840201420,	0.902433662526521680,	0.902412119956757300,	0.902390575130962990,	0.902369028049192280,	
+0.902347478711498900,	0.902325927117936910,	0.902304373268560170,	0.902282817163422400,	0.902261258802577570,	0.902239698186079300,	0.902218135313982090,	0.902196570186339590,	
+0.902175002803205620,	0.902153433164634260,	0.902131861270679240,	0.902110287121394520,	0.902088710716833720,	0.902067132057051580,	0.902045551142101500,	0.902023967972037650,	
+0.902002382546913890,	0.901980794866784060,	0.901959204931702340,	0.901937612741722570,	0.901916018296898380,	0.901894421597284610,	0.901872822642934670,	0.901851221433902730,	
+0.901829617970242750,	0.901808012252008680,	0.901786404279254720,	0.901764794052034580,	0.901743181570402120,	0.901721566834412070,	0.901699949844118160,	0.901678330599574360,	
+0.901656709100834730,	0.901635085347953340,	0.901613459340984250,	0.901591831079981090,	0.901570200564998700,	0.901548567796090830,	0.901526932773311640,	0.901505295496714990,	
+0.901483655966355160,	0.901462014182286220,	0.901440370144562130,	0.901418723853236850,	0.901397075308365100,	0.901375424510000630,	0.901353771458197730,	0.901332116153010230,	
+0.901310458594492550,	0.901288798782698740,	0.901267136717682440,	0.901245472399498810,	0.901223805828201390,	0.901202137003844550,	0.901180465926482270,	0.901158792596168820,	
+0.901137117012958510,	0.901115439176905290,	0.901093759088063220,	0.901072076746487040,	0.901050392152230710,	0.901028705305348290,	0.901007016205894180,	0.900985324853922580,	
+0.900963631249487640,	0.900941935392643670,	0.900920237283444390,	0.900898536921944880,	0.900876834308199090,	0.900855129442261200,	0.900833422324185510,	0.900811712954026290,	
+0.900790001331837730,	0.900768287457673790,	0.900746571331589530,	0.900724852953638800,	0.900703132323876000,	0.900681409442355310,	0.900659684309131130,	0.900637956924257740,	
+0.900616227287789450,	0.900594495399780200,	0.900572761260285180,	0.900551024869358120,	0.900529286227053640,	0.900507545333425810,	0.900485802188529250,	0.900464056792418140,	
+0.900442309145146780,	0.900420559246769340,	0.900398807097340990,	0.900377052696915480,	0.900355296045547430,	0.900333537143291010,	0.900311775990200850,	0.900290012586331230,	
+0.900268246931736240,	0.900246479026470920,	0.900224708870589470,	0.900202936464146290,	0.900181161807195650,	0.900159384899792190,	0.900137605741990310,	0.900115824333844290,	
+0.900094040675408440,	0.900072254766737800,	0.900050466607886570,	0.900028676198909140,	0.900006883539860030,	0.899985088630793740,	0.899963291471764680,	0.899941492062827030,	
+0.899919690404036080,	0.899897886495445780,	0.899876080337110860,	0.899854271929085740,	0.899832461271424910,	0.899810648364183010,	0.899788833207414320,	0.899767015801173350,	
+0.899745196145515070,	0.899723374240493870,	0.899701550086164260,	0.899679723682580760,	0.899657895029797980,	0.899636064127870340,	0.899614230976852670,	0.899592395576798930,	
+0.899570557927764750,	0.899548718029804070,	0.899526875882971530,	0.899505031487321860,	0.899483184842909680,	0.899461335949789500,	0.899439484808015500,	0.899417631417643300,	
+0.899395775778726980,	0.899373917891321150,	0.899352057755480660,	0.899330195371259910,	0.899308330738713750,	0.899286463857896680,	0.899264594728863110,	0.899242723351668440,	
+0.899220849726366960,	0.899198973853013390,	0.899177095731662380,	0.899155215362368640,	0.899133332745186810,	0.899111447880171610,	0.899089560767377560,	0.899067671406859840,	
+0.899045779798673060,	0.899023885942871750,	0.899001989839510740,	0.898980091488644770,	0.898958190890328580,	0.898936288044616450,	0.898914382951564120,	0.898892475611225760,	
+0.898870566023656110,	0.898848654188910250,	0.898826740107042670,	0.898804823778108220,	0.898782905202161640,	0.898760984379257550,	0.898739061309451250,	0.898717135992797460,	
+0.898695208429350690,	0.898673278619165910,	0.898651346562298060,	0.898629412258801660,	0.898607475708731450,	0.898585536912142930,	0.898563595869090630,	0.898541652579629260,	
+0.898519707043813790,	0.898497759261699060,	0.898475809233339920,	0.898453856958791210,	0.898431902438107550,	0.898409945671344470,	0.898387986658556460,	0.898366025399798600,	
+0.898344061895125610,	0.898322096144592570,	0.898300128148254220,	0.898278157906165500,	0.898256185418381040,	0.898234210684956460,	0.898212233705946490,	0.898190254481405770,	
+0.898168273011389570,	0.898146289295952530,	0.898124303335149920,	0.898102315129036040,	0.898080324677666850,	0.898058331981096750,	0.898036337039380910,	0.898014339852574170,	
+0.897992340420731620,	0.897970338743908190,	0.897948334822158970,	0.897926328655538450,	0.897904320244102610,	0.897882309587905820,	0.897860296687003400,	0.897838281541450180,	
+0.897816264151301220,	0.897794244516611610,	0.897772222637436060,	0.897750198513830310,	0.897728172145848990,	0.897706143533547270,	0.897684112676980340,	0.897662079576202920,	
+0.897640044231270420,	0.897618006642237790,	0.897595966809159760,	0.897573924732092190,	0.897551880411089800,	0.897529833846207770,	0.897507785037501060,	0.897485733985024960,	
+0.897463680688834530,	0.897441625148984850,	0.897419567365530750,	0.897397507338528080,	0.897375445068031690,	0.897353380554096640,	0.897331313796778220,	0.897309244796131390,	
+0.897287173552211550,	0.897265100065073320,	0.897243024334772770,	0.897220946361364740,	0.897198866144904180,	0.897176783685446620,	0.897154698983047010,	0.897132612037760620,	
+0.897110522849642770,	0.897088431418748170,	0.897066337745132890,	0.897044241828851780,	0.897022143669960140,	0.897000043268513010,	0.896977940624565930,	0.896955835738173830,	
+0.896933728609392240,	0.896911619238275890,	0.896889507624880960,	0.896867393769262170,	0.896845277671474930,	0.896823159331574530,	0.896801038749616140,	0.896778915925655280,	
+0.896756790859746690,	0.896734663551946420,	0.896712534002309550,	0.896690402210891470,	0.896668268177747250,	0.896646131902932410,	0.896623993386502230,	0.896601852628512000,	
+0.896579709629016790,	0.896557564388072770,	0.896535416905734790,	0.896513267182058260,	0.896491115217098570,	0.896468961010911000,	0.896446804563551190,	0.896424645875073870,	
+0.896402484945535320,	0.896380321774990610,	0.896358156363495140,	0.896335988711104200,	0.896313818817873310,	0.896291646683857860,	0.896269472309113360,	0.896247295693694660,	
+0.896225116837658260,	0.896202935741059030,	0.896180752403952340,	0.896158566826393940,	0.896136379008439010,	0.896114188950143160,	0.896091996651561810,	0.896069802112750110,	
+0.896047605333764370,	0.896025406314659540,	0.896003205055491140,	0.895981001556314770,	0.895958795817185960,	0.895936587838160100,	0.895914377619292380,	0.895892165160639190,	
+0.895869950462255480,	0.895847733524196890,	0.895825514346519030,	0.895803292929277410,	0.895781069272527430,	0.895758843376324940,	0.895736615240724790,	0.895714384865783590,	
+0.895692152251556410,	0.895669917398098870,	0.895647680305466600,	0.895625440973714990,	0.895603199402899900,	0.895580955593076710,	0.895558709544300720,	0.895536461256628450,	
+0.895514210730114950,	0.895491957964815950,	0.895469702960787100,	0.895447445718083990,	0.895425186236762260,	0.895402924516877090,	0.895380660558485090,	0.895358394361641330,	
+0.895336125926401660,	0.895313855252821700,	0.895291582340957070,	0.895269307190863510,	0.895247029802596740,	0.895224750176211840,	0.895202468311765640,	0.895180184209313110,	
+0.895157897868910200,	0.895135609290612530,	0.895113318474475840,	0.895091025420555850,	0.895068730128907860,	0.895046432599588600,	0.895024132832653140,	0.895001830828157320,	
+0.894979526586156980,	0.894957220106707750,	0.894934911389865580,	0.894912600435685990,	0.894890287244224590,	0.894867971815537900,	0.894845654149681200,	0.894823334246710460,	
+0.894801012106681390,	0.894778687729649750,	0.894756361115671360,	0.894734032264802080,	0.894711701177097310,	0.894689367852613660,	0.894667032291406650,	0.894644694493532010,	
+0.894622354459045700,	0.894600012188003450,	0.894577667680461210,	0.894555320936474390,	0.894532971956099710,	0.894510620739392470,	0.894488267286408840,	0.894465911597204450,	
+0.894443553671835260,	0.894421193510357200,	0.894398831112826250,	0.894376466479297690,	0.894354099609828480,	0.894331730504473900,	0.894309359163290130,	0.894286985586332910,	
+0.894264609773658180,	0.894242231725321910,	0.894219851441380160,	0.894197468921888340,	0.894175084166903170,	0.894152697176480380,	0.894130307950675830,	0.894107916489545460,	
+0.894085522793145350,	0.894063126861531440,	0.894040728694759370,	0.894018328292885740,	0.893995925655966420,	0.893973520784057230,	0.893951113677214140,	0.893928704335493430,	
+0.893906292758950840,	0.893883878947642540,	0.893861462901624270,	0.893839044620952650,	0.893816624105683410,	0.893794201355872620,	0.893771776371576230,	0.893749349152850540,	
+0.893726919699751380,	0.893704488012334600,	0.893682054090656930,	0.893659617934774220,	0.893637179544742420,	0.893614738920617710,	0.893592296062456050,	0.893569850970313720,	
+0.893547403644246670,	0.893524954084310870,	0.893502502290562940,	0.893480048263058820,	0.893457592001854590,	0.893435133507006430,	0.893412672778570390,	0.893390209816602670,	
+0.893367744621159420,	0.893345277192296390,	0.893322807530070540,	0.893300335634537700,	0.893277861505754060,	0.893255385143775670,	0.893232906548658940,	0.893210425720459830,	
+0.893187942659234400,	0.893165457365039380,	0.893142969837930730,	0.893120480077964740,	0.893097988085197470,	0.893075493859685320,	0.893052997401484360,	0.893030498710650880,	
+0.893007997787240830,	0.892985494631311160,	0.892962989242917730,	0.892940481622116920,	0.892917971768964810,	0.892895459683517800,	0.892872945365832060,	0.892850428815964100,	
+0.892827910033969550,	0.892805389019905690,	0.892782865773828370,	0.892760340295793870,	0.892737812585858490,	0.892715282644078620,	0.892692750470510550,	0.892670216065210130,	
+0.892647679428234640,	0.892625140559639930,	0.892602599459482390,	0.892580056127818320,	0.892557510564704120,	0.892534962770196060,	0.892512412744350670,	0.892489860487223900,	
+0.892467305998872810,	0.892444749279353470,	0.892422190328722280,	0.892399629147035630,	0.892377065734349940,	0.892354500090721480,	0.892331932216206440,	0.892309362110861870,	
+0.892286789774744070,	0.892264215207909110,	0.892241638410413710,	0.892219059382314270,	0.892196478123667090,	0.892173894634528790,	0.892151308914955310,	0.892128720965003950,	
+0.892106130784730780,	0.892083538374192300,	0.892060943733444910,	0.892038346862545240,	0.892015747761549680,	0.891993146430514750,	0.891970542869496620,	0.891947937078552470,	
+0.891925329057738470,	0.891902718807111140,	0.891880106326726980,	0.891857491616642630,	0.891834874676914580,	0.891812255507598910,	0.891789634108752890,	0.891767010480432940,	
+0.891744384622695340,	0.891721756535596930,	0.891699126219194000,	0.891676493673543290,	0.891653858898701300,	0.891631221894724320,	0.891608582661669760,	0.891585941199593670,	
+0.891563297508552680,	0.891540651588603520,	0.891518003439802700,	0.891495353062206840,	0.891472700455872240,	0.891450045620856280,	0.891427388557215260,	0.891404729265005690,	
+0.891382067744284300,	0.891359403995107710,	0.891336738017532770,	0.891314069811615870,	0.891291399377413310,	0.891268726714982810,	0.891246051824380440,	0.891223374705662930,	
+0.891200695358887020,	0.891178013784109320,	0.891155329981386580,	0.891132643950775520,	0.891109955692332530,	0.891087265206114920,	0.891064572492179190,	0.891041877550582060,	
+0.891019180381380280,	0.890996480984630470,	0.890973779360389570,	0.890951075508713660,	0.890928369429660580,	0.890905661123286510,	0.890882950589648390,	0.890860237828802860,	
+0.890837522840806640,	0.890814805625716690,	0.890792086183589740,	0.890769364514482080,	0.890746640618451550,	0.890723914495554330,	0.890701186145847260,	0.890678455569387300,	
+0.890655722766231280,	0.890632987736435840,	0.890610250480057930,	0.890587510997154050,	0.890564769287781830,	0.890542025351997560,	0.890519279189858290,	0.890496530801420880,	
+0.890473780186742060,	0.890451027345878890,	0.890428272278887660,	0.890405514985826210,	0.890382755466750940,	0.890359993721718810,	0.890337229750786660,	0.890314463554011450,	
+0.890291695131450010,	0.890268924483159420,	0.890246151609196070,	0.890223376509617800,	0.890200599184481020,	0.890177819633842790,	0.890155037857760070,	0.890132253856289690,	
+0.890109467629488620,	0.890086679177413580,	0.890063888500122190,	0.890041095597671080,	0.890018300470117210,	0.889995503117517630,	0.889972703539929300,	0.889949901737409180,	
+0.889927097710014330,	0.889904291457801370,	0.889881482980828030,	0.889858672279150940,	0.889835859352827270,	0.889813044201913870,	0.889790226826467910,	0.889767407226546350,	
+0.889744585402206250,	0.889721761353504340,	0.889698935080498470,	0.889676106583245140,	0.889653275861801650,	0.889630442916224950,	0.889607607746572100,	0.889584770352900290,	
+0.889561930735266020,	0.889539088893727460,	0.889516244828341130,	0.889493398539164200,	0.889470550026253750,	0.889447699289666940,	0.889424846329460950,	0.889401991145692740,	
+0.889379133738419260,	0.889356274107698240,	0.889333412253586640,	0.889310548176141410,	0.889287681875419840,	0.889264813351479110,	0.889241942604376280,	0.889219069634168640,	
+0.889196194440912910,	0.889173317024667060,	0.889150437385487940,	0.889127555523432810,	0.889104671438558650,	0.889081785130922950,	0.889058896600582680,	0.889036005847594790,	
+0.889013112872017340,	0.888990217673907070,	0.888967320253321260,	0.888944420610317200,	0.888921518744951960,	0.888898614657283040,	0.888875708347367510,	0.888852799815262440,	
+0.888829889061025670,	0.888806976084714150,	0.888784060886385170,	0.888761143466096140,	0.888738223823904220,	0.888715301959866700,	0.888692377874040540,	0.888669451566483910,	
+0.888646523037253560,	0.888623592286406970,	0.888600659314001340,	0.888577724120094060,	0.888554786704742530,	0.888531847068004030,	0.888508905209935420,	0.888485961130594970,	
+0.888463014830039750,	0.888440066308326840,	0.888417115565513840,	0.888394162601658040,	0.888371207416816850,	0.888348250011047560,	0.888325290384407330,	0.888302328536954230,	
+0.888279364468745340,	0.888256398179838040,	0.888233429670289730,	0.888210458940157930,	0.888187485989499810,	0.888164510818372670,	0.888141533426834660,	0.888118553814942870,	
+0.888095571982754570,	0.888072587930327510,	0.888049601657718850,	0.888026613164986210,	0.888003622452187000,	0.887980629519378390,	0.887957634366618560,	0.887934636993964690,	
+0.887911637401474270,	0.887888635589204720,	0.887865631557213540,	0.887842625305558240,	0.887819616834296440,	0.887796606143485210,	0.887773593233182940,	0.887750578103446600,	
+0.887727560754333790,	0.887704541185902140,	0.887681519398209050,	0.887658495391312250,	0.887635469165268810,	0.887612440720137010,	0.887589410055974140,	0.887566377172837820,	
+0.887543342070785450,	0.887520304749874870,	0.887497265210163370,	0.887474223451708790,	0.887451179474568310,	0.887428133278800100,	0.887405084864461680,	0.887382034231610550,	
+0.887358981380304330,	0.887335926310600650,	0.887312869022557240,	0.887289809516231150,	0.887266747791680910,	0.887243683848963900,	0.887220617688137540,	0.887197549309259760,	
+0.887174478712388080,	0.887151405897580240,	0.887128330864893840,	0.887105253614386190,	0.887082174146115790,	0.887059092460140030,	0.887036008556516540,	0.887012922435302940,	
+0.886989834096557180,	0.886966743540336670,	0.886943650766699450,	0.886920555775702610,	0.886897458567404760,	0.886874359141863300,	0.886851257499135960,	0.886828153639280470,	
+0.886805047562354680,	0.886781939268416090,	0.886758828757522320,	0.886735716029732000,	0.886712601085102300,	0.886689483923691070,	0.886666364545556140,	0.886643242950755360,	
+0.886620119139346350,	0.886596993111387180,	0.886573864866935010,	0.886550734406048590,	0.886527601728785420,	0.886504466835203230,	0.886481329725359870,	0.886458190399313170,	
+0.886435048857120990,	0.886411905098841160,	0.886388759124531190,	0.886365610934249700,	0.886342460528054210,	0.886319307906002550,	0.886296153068152680,	0.886272996014562440,	
+0.886249836745289680,	0.886226675260391890,	0.886203511559927830,	0.886180345643954980,	0.886157177512531200,	0.886134007165714550,	0.886110834603562990,	0.886087659826134240,	
+0.886064482833486270,	0.886041303625676790,	0.886018122202764440,	0.885994938564806710,	0.885971752711861790,	0.885948564643987300,	0.885925374361241520,	0.885902181863682300,	
+0.885878987151367260,	0.885855790224355010,	0.885832591082703400,	0.885809389726470280,	0.885786186155713700,	0.885762980370491610,	0.885739772370862100,	0.885716562156883210,	
+0.885693349728612470,	0.885670135086108700,	0.885646918229429650,	0.885623699158633370,	0.885600477873777710,	0.885577254374920960,	0.885554028662121070,	0.885530800735436000,	
+0.885507570594923690,	0.885484338240642770,	0.885461103672650960,	0.885437866891006450,	0.885414627895767190,	0.885391386686991470,	0.885368143264737230,	0.885344897629062210,	
+0.885321649780025480,	0.885298399717684430,	0.885275147442097570,	0.885251892953322740,	0.885228636251418120,	0.885205377336442000,	0.885182116208452440,	0.885158852867507170,	
+0.885135587313665150,	0.885112319546984220,	0.885089049567522430,	0.885065777375337980,	0.885042502970489140,	0.885019226353034090,	0.884995947523030900,	0.884972666480537410,	
+0.884949383225612780,	0.884926097758314660,	0.884902810078701200,	0.884879520186830800,	0.884856228082761540,	0.884832933766551810,	0.884809637238259230,	0.884786338497942970,	
+0.884763037545660990,	0.884739734381471240,	0.884716429005432350,	0.884693121417602260,	0.884669811618039370,	0.884646499606801970,	0.884623185383947910,	0.884599868949536350,	
+0.884576550303625030,	0.884553229446272350,	0.884529906377536700,	0.884506581097476150,	0.884483253606149210,	0.884459923903613720,	0.884436591989928860,	0.884413257865152460,	
+0.884389921529342930,	0.884366582982558660,	0.884343242224857830,	0.884319899256298950,	0.884296554076940410,	0.884273206686839950,	0.884249857086056860,	0.884226505274649190,	
+0.884203151252675350,	0.884179795020193500,	0.884156436577262170,	0.884133075923939860,	0.884109713060284740,	0.884086347986354990,	0.884062980702209790,	0.884039611207907080,	
+0.884016239503505390,	0.883992865589063090,	0.883969489464638600,	0.883946111130290420,	0.883922730586076510,	0.883899347832056260,	0.883875962868287510,	0.883852575694829000,	
+0.883829186311739010,	0.883805794719075940,	0.883782400916898530,	0.883759004905265040,	0.883735606684233680,	0.883712206253863710,	0.883688803614213200,	0.883665398765340670,	
+0.883641991707304620,	0.883618582440163670,	0.883595170963976220,	0.883571757278800440,	0.883548341384695620,	0.883524923281720050,	0.883501502969932130,	0.883478080449390470,	
+0.883454655720153580,	0.883431228782279980,	0.883407799635828380,	0.883384368280856870,	0.883360934717424940,	0.883337498945590550,	0.883314060965412430,	0.883290620776949200,	
+0.883267178380259370,	0.883243733775401660,	0.883220286962434600,	0.883196837941416350,	0.883173386712406530,	0.883149933275463090,	0.883126477630644890,	0.883103019778010530,	
+0.883079559717618650,	0.883056097449527840,	0.883032632973796310,	0.883009166290483650,	0.882985697399648050,	0.882962226301348240,	0.882938752995642840,	0.882915277482590580,	
+0.882891799762250180,	0.882868319834680170,	0.882844837699939040,	0.882821353358086200,	0.882797866809179930,	0.882774378053279070,	0.882750887090442250,	0.882727393920728190,	
+0.882703898544195620,	0.882680400960903280,	0.882656901170909670,	0.882633399174274080,	0.882609894971055020,	0.882586388561311220,	0.882562879945101520,	0.882539369122484540,	
+0.882515856093519240,	0.882492340858263780,	0.882468823416777900,	0.882445303769120000,	0.882421781915348810,	0.882398257855523170,	0.882374731589701920,	0.882351203117943790,	
+0.882327672440307630,	0.882304139556851940,	0.882280604467636340,	0.882257067172719120,	0.882233527672159350,	0.882209985966015740,	0.882186442054347150,	0.882162895937212420,	
+0.882139347614670060,	0.882115797086779670,	0.882092244353599900,	0.882068689415189460,	0.882045132271607300,	0.882021572922912390,	0.881998011369163450,	0.881974447610419540,	
+0.881950881646739070,	0.881927313478181870,	0.881903743104806240,	0.881880170526671340,	0.881856595743836010,	0.881833018756359220,	0.881809439564299910,	0.881785858167716930,	
+0.881762274566668890,	0.881738688761215640,	0.881715100751415680,	0.881691510537327860,	0.881667918119011350,	0.881644323496525000,	0.881620726669927860,	0.881597127639278550,	
+0.881573526404636710,	0.881549922966061160,	0.881526317323610750,	0.881502709477344550,	0.881479099427321610,	0.881455487173600890,	0.881431872716241460,	0.881408256055301930,	
+0.881384637190842150,	0.881361016122920840,	0.881337392851596960,	0.881313767376929570,	0.881290139698977850,	0.881266509817800750,	0.881242877733457330,	0.881219243446006330,	
+0.881195606955507580,	0.881171968262019820,	0.881148327365602220,	0.881124684266313740,	0.881101038964213660,	0.881077391459360810,	0.881053741751814170,	0.881030089841633560,	
+0.881006435728877710,	0.880982779413605810,	0.880959120895877020,	0.880935460175750310,	0.880911797253285060,	0.880888132128540220,	0.880864464801574650,	0.880840795272448410,	
+0.880817123541220100,	0.880793449607949030,	0.880769773472694250,	0.880746095135515160,	0.880722414596470720,	0.880698731855619870,	0.880675046913022670,	0.880651359768737760,	
+0.880627670422824530,	0.880603978875342030,	0.880580285126349670,	0.880556589175906620,	0.880532891024072060,	0.880509190670904830,	0.880485488116464990,	0.880461783360811490,	
+0.880438076404003510,	0.880414367246100450,	0.880390655887161370,	0.880366942327245660,	0.880343226566412620,	0.880319508604721080,	0.880295788442231110,	0.880272066079001770,	
+0.880248341515092240,	0.880224614750561910,	0.880200885785469960,	0.880177154619875780,	0.880153421253838330,	0.880129685687417780,	0.880105947920672980,	0.880082207953663430,	
+0.880058465786448200,	0.880034721419086900,	0.880010974851638710,	0.879987226084163130,	0.879963475116719020,	0.879939721949366760,	0.879915966582165090,	0.879892209015173510,	
+0.879868449248451530,	0.879844687282058340,	0.879820923116053420,	0.879797156750496190,	0.879773388185445590,	0.879749617420962030,	0.879725844457104440,	0.879702069293932130,	
+0.879678291931504820,	0.879654512369881680,	0.879630730609122220,	0.879606946649285510,	0.879583160490431950,	0.879559372132620480,	0.879535581575910500,	0.879511788820361630,	
+0.879487993866033270,	0.879464196712984920,	0.879440397361275990,	0.879416595810965760,	0.879392792062114400,	0.879368986114781090,	0.879345177969025340,	0.879321367624906650,	
+0.879297555082484530,	0.879273740341818490,	0.879249923402967700,	0.879226104265992570,	0.879202282930952150,	0.879178459397905950,	0.879154633666913710,	0.879130805738034820,	
+0.879106975611328890,	0.879083143286855550,	0.879059308764673970,	0.879035472044844560,	0.879011633127426360,	0.878987792012479120,	0.878963948700062450,	0.878940103190235860,	
+0.878916255483059070,	0.878892405578591610,	0.878868553476892630,	0.878844699178022770,	0.878820842682041190,	0.878796983989007520,	0.878773123098981370,	0.878749260012022360,	
+0.878725394728190220,	0.878701527247544130,	0.878677657570144710,	0.878653785696051130,	0.878629911625323110,	0.878606035358020290,	0.878582156894202380,	0.878558276233929010,	
+0.878534393377260030,	0.878510508324254700,	0.878486621074973440,	0.878462731629475630,	0.878438839987821020,	0.878414946150069320,	0.878391050116280160,	0.878367151886513490,	
+0.878343251460828920,	0.878319348839285750,	0.878295444021944590,	0.878271537008864960,	0.878247627800106350,	0.878223716395728720,	0.878199802795791800,	0.878175887000355430,	
+0.878151969009478890,	0.878128048823222820,	0.878104126441646700,	0.878080201864810170,	0.878056275092773180,	0.878032346125595440,	0.878008414963336930,	0.877984481606057350,	
+0.877960546053816130,	0.877936608306673970,	0.877912668364690290,	0.877888726227925020,	0.877864781896437800,	0.877840835370288670,	0.877816886649537500,	0.877792935734243660,	
+0.877768982624467900,	0.877745027320269710,	0.877721069821708940,	0.877697110128845550,	0.877673148241739250,	0.877649184160450120,	0.877625217885038110,	0.877601249415562610,	
+0.877577278752084360,	0.877553305894662960,	0.877529330843358270,	0.877505353598230230,	0.877481374159338800,	0.877457392526744040,	0.877433408700505680,	0.877409422680683450,	
+0.877385434467338080,	0.877361444060529070,	0.877337451460316500,	0.877313456666760310,	0.877289459679920450,	0.877265460499856990,	0.877241459126629320,	0.877217455560298510,	
+0.877193449800924060,	0.877169441848566040,	0.877145431703284410,	0.877121419365139100,	0.877097404834190300,	0.877073388110498060,	0.877049369194121800,	0.877025348085122670,	
+0.877001324783560080,	0.876977299289494190,	0.876953271602985080,	0.876929241724092810,	0.876905209652877330,	0.876881175389398470,	0.876857138933717200,	0.876833100285892900,	
+0.876809059445985970,	0.876785016414056370,	0.876760971190164160,	0.876736923774369630,	0.876712874166732710,	0.876688822367313160,	0.876664768376172020,	0.876640712193369030,	
+0.876616653818964140,	0.876592593253017750,	0.876568530495589690,	0.876544465546740480,	0.876520398406530070,	0.876496329075018180,	0.876472257552265880,	0.876448183838333010,	
+0.876424107933279630,	0.876400029837166030,	0.876375949550052380,	0.876351867071998750,	0.876327782403065080,	0.876303695543312440,	0.876279606492800460,	0.876255515251589510,	
+0.876231421819739790,	0.876207326197311450,	0.876183228384364800,	0.876159128380960220,	0.876135026187157220,	0.876110921803017200,	0.876086815228599770,	0.876062706463965330,	
+0.876038595509174180,	0.876014482364286580,	0.875990367029362730,	0.875966249504462890,	0.875942129789647030,	0.875918007884976310,	0.875893883790510590,	0.875869757506310130,	
+0.875845629032435240,	0.875821498368946290,	0.875797365515903700,	0.875773230473367190,	0.875749093241398050,	0.875724953820056110,	0.875700812209401770,	0.875676668409495540,	
+0.875652522420397480,	0.875628374242168220,	0.875604223874868030,	0.875580071318556860,	0.875555916573295900,	0.875531759639145090,	0.875507600516164940,	0.875483439204415850,	
+0.875459275703958100,	0.875435110014852190,	0.875410942137157980,	0.875386772070936960,	0.875362599816248980,	0.875338425373154540,	0.875314248741713930,	0.875290069921987770,	
+0.875265888914036450,	0.875241705717920370,	0.875217520333699590,	0.875193332761435410,	0.875169143001187980,	0.875144951053017710,	0.875120756916984990,	0.875096560593150330,	
+0.875072362081574350,	0.875048161382317450,	0.875023958495439680,	0.874999753421002560,	0.874975546159065920,	0.874951336709690500,	0.874927125072936680,	0.874902911248865100,	
+0.874878695237536250,	0.874854477039010200,	0.874830256653348350,	0.874806034080610970,	0.874781809320858360,	0.874757582374151350,	0.874733353240550350,	0.874709121920115960,	
+0.874684888412908700,	0.874660652718988850,	0.874636414838417810,	0.874612174771255750,	0.874587932517563280,	0.874563688077400920,	0.874539441450829290,	0.874515192637909110,	
+0.874490941638701000,	0.874466688453265030,	0.874442433081662810,	0.874418175523954510,	0.874393915780200760,	0.874369653850462170,	0.874345389734799580,	0.874321123433273390,	
+0.874296854945944000,	0.874272584272872910,	0.874248311414120290,	0.874224036369746990,	0.874199759139813630,	0.874175479724380810,	0.874151198123509280,	0.874126914337259750,	
+0.874102628365692520,	0.874078340208869100,	0.874054049866849870,	0.874029757339695570,	0.874005462627466810,	0.873981165730224440,	0.873956866648029180,	0.873932565380941220,	
+0.873908261929022380,	0.873883956292332840,	0.873859648470933340,	0.873835338464884810,	0.873811026274247890,	0.873786711899083410,	0.873762395339452210,	0.873738076595414580,	
+0.873713755667032130,	0.873689432554365260,	0.873665107257474930,	0.873640779776421740,	0.873616450111266650,	0.873592118262070390,	0.873567784228893920,	0.873543448011797510,	
+0.873519109610842890,	0.873494769026090470,	0.873470426257601180,	0.873446081305435880,	0.873421734169655290,	0.873397384850320370,	0.873373033347491500,	0.873348679661230640,	
+0.873324323791597970,	0.873299965738654540,	0.873275605502461080,	0.873251243083078780,	0.873226878480568240,	0.873202511694990520,	0.873178142726406150,	0.873153771574876840,	
+0.873129398240463090,	0.873105022723225880,	0.873080645023226020,	0.873056265140524590,	0.873031883075182540,	0.873007498827260810,	0.872983112396819800,	0.872958723783921480,	
+0.872934332988626330,	0.872909940010995420,	0.872885544851089600,	0.872861147508969930,	0.872836747984697460,	0.872812346278332600,	0.872787942389937290,	0.872763536319572150,	
+0.872739128067298250,	0.872714717633176430,	0.872690305017267850,	0.872665890219633480,	0.872641473240334480,	0.872617054079431240,	0.872592632736985950,	0.872568209213059000,	
+0.872543783507711450,	0.872519355621004580,	0.872494925552999230,	0.872470493303756590,	0.872446058873337260,	0.872421622261803200,	0.872397183469215130,	0.872372742495634120,	
+0.872348299341121240,	0.872323854005737530,	0.872299406489544290,	0.872274956792602470,	0.872250504914972910,	0.872226050856717450,	0.872201594617896810,	0.872177136198572290,	
+0.872152675598804940,	0.872128212818655820,	0.872103747858186230,	0.872079280717457220,	0.872054811396529630,	0.872030339895465410,	0.872005866214325300,	0.871981390353170570,	
+0.871956912312062400,	0.871932432091061860,	0.871907949690230330,	0.871883465109628440,	0.871858978349318360,	0.871834489409360810,	0.871809998289816980,	0.871785504990748250,	
+0.871761009512215690,	0.871736511854280690,	0.871712012017004320,	0.871687510000447530,	0.871663005804672380,	0.871638499429739700,	0.871613990875710900,	0.871589480142646920,	
+0.871564967230609390,	0.871540452139659360,	0.871515934869858230,	0.871491415421266850,	0.871466893793947370,	0.871442369987960650,	0.871417844003367970,	0.871393315840230720,	
+0.871368785498610190,	0.871344252978567660,	0.871319718280164080,	0.871295181403461630,	0.871270642348521250,	0.871246101115404240,	0.871221557704171980,	0.871197012114885870,	
+0.871172464347607200,	0.871147914402397360,	0.871123362279317300,	0.871098807978429200,	0.871074251499794230,	0.871049692843473560,	0.871025132009528580,	0.871000568998020810,	
+0.870976003809011750,	0.870951436442562120,	0.870926866898734330,	0.870902295177589440,	0.870877721279188720,	0.870853145203593800,	0.870828566950865970,	0.870803986521066720,	
+0.870779403914257450,	0.870754819130499350,	0.870730232169854570,	0.870705643032384180,	0.870681051718149690,	0.870656458227212600,	0.870631862559634430,	0.870607264715476560,	
+0.870582664694800500,	0.870558062497667320,	0.870533458124139510,	0.870508851574277930,	0.870484242848144300,	0.870459631945800120,	0.870435018867306790,	0.870410403612725920,	
+0.870385786182118590,	0.870361166575547300,	0.870336544793072990,	0.870311920834757390,	0.870287294700661910,	0.870262666390848260,	0.870238035905377960,	0.870213403244312510,	
+0.870188768407713200,	0.870164131395642300,	0.870139492208161110,	0.870114850845331240,	0.870090207307214200,	0.870065561593871720,	0.870040913705365180,	0.870016263641756100,	
+0.869991611403106660,	0.869966956989478240,	0.869942300400932460,	0.869917641637530940,	0.869892980699335180,	0.869868317586407150,	0.869843652298808220,	0.869818984836599700,	
+0.869794315199844180,	0.869769643388602850,	0.869744969402937550,	0.869720293242909670,	0.869695614908581160,	0.869670934400013530,	0.869646251717268610,	0.869621566860407590,	
+0.869596879829493190,	0.869572190624586460,	0.869547499245749370,	0.869522805693043410,	0.869498109966530540,	0.869473412066272380,	0.869448711992330200,	0.869424009744766750,	
+0.869399305323643180,	0.869374598729021450,	0.869349889960963180,	0.869325179019530100,	0.869300465904784160,	0.869275750616787080,	0.869251033155600150,	0.869226313521286100,	
+0.869201591713906210,	0.869176867733522430,	0.869152141580196380,	0.869127413253990010,	0.869102682754965160,	0.869077950083183560,	0.869053215238706710,	0.869028478221597120,	
+0.869003739031916410,	0.868978997669726420,	0.868954254135088870,	0.868929508428065710,	0.868904760548718790,	0.868880010497109500,	0.868855258273300570,	0.868830503877353610,	
+0.868805747309330250,	0.868780988569292640,	0.868756227657302540,	0.868731464573421870,	0.868706699317712490,	0.868681931890236010,	0.868657162291055050,	0.868632390520231220,	
+0.868607616577826370,	0.868582840463902550,	0.868558062178521610,	0.868533281721745490,	0.868508499093635700,	0.868483714294255190,	0.868458927323665360,	0.868434138181928270,	
+0.868409346869105760,	0.868384553385259880,	0.868359757730452600,	0.868334959904745960,	0.868310159908201480,	0.868285357740882000,	0.868260553402849130,	0.868235746894164940,	
+0.868210938214891370,	0.868186127365090490,	0.868161314344824240,	0.868136499154154690,	0.868111681793143460,	0.868086862261853500,	0.868062040560346300,	0.868037216688684050,	
+0.868012390646928810,	0.867987562435142520,	0.867962732053387360,	0.867937899501724950,	0.867913064780218240,	0.867888227888928830,	0.867863388827918800,	0.867838547597250320,	
+0.867813704196985560,	0.867788858627186470,	0.867764010887915220,	0.867739160979233540,	0.867714308901204380,	0.867689454653889470,	0.867664598237350980,	0.867639739651650870,	
+0.867614878896851520,	0.867590015973014880,	0.867565150880203250,	0.867540283618478240,	0.867515414187903120,	0.867490542588539300,	0.867465668820449180,	0.867440792883694910,	
+0.867415914778338680,	0.867391034504442550,	0.867366152062068460,	0.867341267451279490,	0.867316380672137340,	0.867291491724704100,	0.867266600609042260,	0.867241707325213880,	
+0.867216811873281260,	0.867191914253306660,	0.867167014465351720,	0.867142112509479700,	0.867117208385752460,	0.867092302094232160,	0.867067393634981200,	0.867042483008061640,	
+0.867017570213535870,	0.866992655251465740,	0.866967738121914520,	0.866942818824943840,	0.866917897360616200,	0.866892973728993770,	0.866868047930138830,	0.866843119964113900,	
+0.866818189830981130,	0.866793257530802390,	0.866768323063641040,	0.866743386429558840,	0.866718447628618160,	0.866693506660881300,	0.866668563526410750,	0.866643618225268810,	
+0.866618670757517750,	0.866593721123219640,	0.866568769322437650,	0.866543815355233730,	0.866518859221670270,	0.866493900921809670,	0.866468940455714320,	0.866443977823446620,	
+0.866419013025068520,	0.866394046060643410,	0.866369076930233130,	0.866344105633900070,	0.866319132171706860,	0.866294156543715780,	0.866269178749989320,	0.866244198790589890,	
+0.866219216665579550,	0.866194232375021580,	0.866169245918978040,	0.866144257297511430,	0.866119266510684160,	0.866094273558558610,	0.866069278441197520,	0.866044281158663170,	
+0.866019281711017720,	0.865994280098324460,	0.865969276320645580,	0.865944270378043450,	0.865919262270580580,	0.865894251998319600,	0.865869239561323000,	0.865844224959652850,	
+0.865819208193372660,	0.865794189262544370,	0.865769168167230600,	0.865744144907493960,	0.865719119483396970,	0.865694091895002130,	0.865669062142372050,	0.865644030225568910,	
+0.865618996144656090,	0.865593959899695900,	0.865568921490750710,	0.865543880917883150,	0.865518838181156050,	0.865493793280631700,	0.865468746216372490,	0.865443696988441920,	
+0.865418645596902070,	0.865393592041815540,	0.865368536323245170,	0.865343478441253370,	0.865318418395902840,	0.865293356187256220,	0.865268291815375900,	0.865243225280325270,	
+0.865218156582166500,	0.865193085720962430,	0.865168012696775570,	0.865142937509668750,	0.865117860159704600,	0.865092780646945720,	0.865067698971454410,	0.865042615133294390,	
+0.865017529132527830,	0.864992440969217460,	0.864967350643425890,	0.864942258155215970,	0.864917163504650530,	0.864892066691791640,	0.864866967716703020,	0.864841866579446950,	
+0.864816763280086280,	0.864791657818683720,	0.864766550195301910,	0.864741440410003780,	0.864716328462852070,	0.864691214353909170,	0.864666098083238580,	0.864640979650902700,	
+0.864615859056964480,	0.864590736301486530,	0.864565611384531810,	0.864540484306163040,	0.864515355066443060,	0.864490223665434150,	0.864465090103200270,	0.864439954379803590,	
+0.864414816495307050,	0.864389676449773490,	0.864364534243265650,	0.864339389875846580,	0.864314243347578560,	0.864289094658525330,	0.864263943808749380,	0.864238790798313560,	
+0.864213635627280820,	0.864188478295713990,	0.864163318803675920,	0.864138157151229550,	0.864112993338437390,	0.864087827365363160,	0.864062659232069370,	0.864037488938618870,	
+0.864012316485074710,	0.863987141871499830,	0.863961965097956970,	0.863936786164508860,	0.863911605071219110,	0.863886421818150450,	0.863861236405365720,	0.863836048832927860,	
+0.863810859100899940,	0.863785667209344800,	0.863760473158325490,	0.863735276947904640,	0.863710078578145970,	0.863684878049112090,	0.863659675360866070,	0.863634470513470860,	
+0.863609263506989410,	0.863584054341484890,	0.863558843017020130,	0.863533629533657860,	0.863508413891462050,	0.863483196090495060,	0.863457976130820200,	0.863432754012500300,	
+0.863407529735598640,	0.863382303300178070,	0.863357074706301300,	0.863331843954032290,	0.863306611043433650,	0.863281375974568550,	0.863256138747499960,	0.863230899362291030,	
+0.863205657819004930,	0.863180414117704630,	0.863155168258452840,	0.863129920241313520,	0.863104670066349500,	0.863079417733623730,	0.863054163243199390,	0.863028906595139760,	
+0.863003647789507780,	0.862978386826366290,	0.862953123705779260,	0.862927858427809390,	0.862902590992519870,	0.862877321399973860,	0.862852049650234540,	0.862826775743365190,	
+0.862801499679428870,	0.862776221458488310,	0.862750941080607680,	0.862725658545849710,	0.862700373854277560,	0.862675087005954410,	0.862649798000943660,	0.862624506839308360,	
+0.862599213521111800,	0.862573918046416810,	0.862548620415287350,	0.862523320627786470,	0.862498018683977240,	0.862472714583922940,	0.862447408327686850,	0.862422099915332250,	
+0.862396789346921990,	0.862371476622520230,	0.862346161742189700,	0.862320844705993790,	0.862295525513995800,	0.862270204166258880,	0.862244880662846550,	0.862219555003822080,	
+0.862194227189248210,	0.862168897219189210,	0.862143565093707930,	0.862118230812867760,	0.862092894376732090,	0.862067555785364090,	0.862042215038827280,	0.862016872137184920,	
+0.861991527080499860,	0.861966179868836500,	0.861940830502257670,	0.861915478980826770,	0.861890125304607070,	0.861864769473662200,	0.861839411488055320,	0.861814051347849500,	
+0.861788689053109010,	0.861763324603896820,	0.861737958000276310,	0.861712589242310870,	0.861687218330063900,	0.861661845263599010,	0.861636470042979500,	0.861611092668268300,	
+0.861585713139529810,	0.861560331456827090,	0.861534947620223530,	0.861509561629782540,	0.861484173485567720,	0.861458783187642460,	0.861433390736069730,	0.861407996130914010,	
+0.861382599372238270,	0.861357200460106110,	0.861331799394580930,	0.861306396175726240,	0.861280990803605540,	0.861255583278282330,	0.861230173599819790,	0.861204761768282200,	
+0.861179347783732730,	0.861153931646234880,	0.861128513355852280,	0.861103092912648300,	0.861077670316686690,	0.861052245568030840,	0.861026818666743910,	0.861001389612890410,	
+0.860975958406533400,	0.860950525047736500,	0.860925089536563330,	0.860899651873077380,	0.860874212057342380,	0.860848770089421400,	0.860823325969378830,	0.860797879697278060,	
+0.860772431273182480,	0.860746980697155940,	0.860721527969261930,	0.860696073089563970,	0.860670616058126000,	0.860645156875010970,	0.860619695540283500,	0.860594232054006760,	
+0.860568766416244470,	0.860543298627060250,	0.860517828686517830,	0.860492356594680820,	0.860466882351612840,	0.860441405957377280,	0.860415927412038650,	0.860390446715660230,	
+0.860364963868305630,	0.860339478870038700,	0.860313991720923040,	0.860288502421022280,	0.860263010970399920,	0.860237517369120570,	0.860212021617247300,	0.860186523714844050,	
+0.860161023661974440,	0.860135521458702310,	0.860110017105091270,	0.860084510601205390,	0.860059001947107600,	0.860033491142862760,	0.860007978188534360,	0.859982463084185910,	
+0.859956945829881250,	0.859931426425684320,	0.859905904871658740,	0.859880381167868020,	0.859854855314376780,	0.859829327311248390,	0.859803797158546710,	0.859778264856335460,	
+0.859752730404678590,	0.859727193803639930,	0.859701655053283220,	0.859676114153671960,	0.859650571104870860,	0.859625025906943340,	0.859599478559953330,	0.859573929063964460,	
+0.859548377419040890,	0.859522823625246350,	0.859497267682644780,	0.859471709591299480,	0.859446149351275500,	0.859420586962636010,	0.859395022425445190,	0.859369455739766750,	
+0.859343886905664660,	0.859318315923202850,	0.859292742792444830,	0.859267167513455330,	0.859241590086297970,	0.859216010511036690,	0.859190428787735330,	0.859164844916457840,	
+0.859139258897268280,	0.859113670730230710,	0.859088080415408300,	0.859062487952866220,	0.859036893342667970,	0.859011296584877400,	0.858985697679558680,	0.858960096626775640,	
+0.858934493426592450,	0.858908888079072950,	0.858883280584280760,	0.858857670942280940,	0.858832059153136760,	0.858806445216912630,	0.858780829133672260,	0.858755210903479840,	
+0.858729590526399410,	0.858703968002494490,	0.858678343331830240,	0.858652716514469950,	0.858627087550478010,	0.858601456439918360,	0.858575823182854970,	0.858550187779352100,	
+0.858524550229473720,	0.858498910533283530,	0.858473268690846500,	0.858447624702226350,	0.858421978567487030,	0.858396330286692820,	0.858370679859907890,	0.858345027287196080,	
+0.858319372568621340,	0.858293715704248620,	0.858268056694141630,	0.858242395538364460,	0.858216732236981360,	0.858191066790056410,	0.858165399197653780,	0.858139729459837630,	
+0.858114057576671700,	0.858088383548221150,	0.858062707374549590,	0.858037029055721210,	0.858011348591800390,	0.857985665982851090,	0.857959981228937680,	0.857934294330124250,	
+0.857908605286474720,	0.857882914098054060,	0.857857220764926100,	0.857831525287155120,	0.857805827664805400,	0.857780127897941000,	0.857754425986626320,	0.857728721930925090,	
+0.857703015730902570,	0.857677307386622510,	0.857651596898149180,	0.857625884265546870,	0.857600169488879850,	0.857574452568212300,	0.857548733503608720,	0.857523012295132840,	
+0.857497288942849820,	0.857471563446823630,	0.857445835807118530,	0.857420106023798920,	0.857394374096928980,	0.857368640026573090,	0.857342903812795540,	0.857317165455660390,	
+0.857291424955232690,	0.857265682311576520,	0.857239937524756020,	0.857214190594835830,	0.857188441521880010,	0.857162690305953160,	0.857136936947119120,	0.857111181445443290,	
+0.857085423800989400,	0.857059664013821940,	0.857033902084005430,	0.857008138011604030,	0.856982371796682350,	0.856956603439304800,	0.856930832939535200,	0.856905060297438960,	
+0.856879285513080120,	0.856853508586522980,	0.856827729517832150,	0.856801948307072010,	0.856776164954306970,	0.856750379459601090,	0.856724591823019740,	0.856698802044626780,	
+0.856673010124486930,	0.856647216062664580,	0.856621419859224130,	0.856595621514230080,	0.856569821027747040,	0.856544018399839070,	0.856518213630571350,	0.856492406720008260,	
+0.856466597668213980,	0.856440786475253350,	0.856414973141190640,	0.856389157666090580,	0.856363340050017570,	0.856337520293035780,	0.856311698395210710,	0.856285874356606300,	
+0.856260048177287290,	0.856234219857318070,	0.856208389396763360,	0.856182556795687670,	0.856156722054155160,	0.856130885172231240,	0.856105046149980060,	0.856079204987466370,	
+0.856053361684754650,	0.856027516241909540,	0.856001668658995520,	0.855975818936077440,	0.855949967073219350,	0.855924113070486770,	0.855898256927943970,	0.855872398645655450,	
+0.855846538223685950,	0.855820675662100180,	0.855794810960962660,	0.855768944120338100,	0.855743075140290690,	0.855717204020886140,	0.855691330762188510,	0.855665455364262640,	
+0.855639577827173040,	0.855613698150984540,	0.855587816335761750,	0.855561932381568970,	0.855536046288471910,	0.855510158056534630,	0.855484267685821980,	0.855458375176398670,	
+0.855432480528329430,	0.855406583741678990,	0.855380684816512080,	0.855354783752893090,	0.855328880550887400,	0.855302975210559650,	0.855277067731974430,	0.855251158115196590,	
+0.855225246360290850,	0.855199332467321940,	0.855173416436354250,	0.855147498267453510,	0.855121577960684000,	0.855095655516110550,	0.855069730933797900,	0.855043804213810990,	
+0.855017875356214540,	0.854991944361073510,	0.854966011228452060,	0.854940075958416030,	0.854914138551029820,	0.854888199006358260,	0.854862257324466300,	0.854836313505418550,	
+0.854810367549280080,	0.854784419456115720,	0.854758469225989860,	0.854732516858968230,	0.854706562355115330,	0.854680605714496000,	0.854654646937175190,	0.854628686023217840,	
+0.854602722972688690,	0.854576757785652230,	0.854550790462174410,	0.854524821002319630,	0.854498849406152730,	0.854472875673738750,	0.854446899805142550,	0.854420921800429060,	
+0.854394941659663340,	0.854368959382909800,	0.854342974970234260,	0.854316988421701340,	0.854290999737375990,	0.854265008917323150,	0.854239015961607670,	0.854213020870294710,	
+0.854187023643448780,	0.854161024281135720,	0.854135022783420020,	0.854109019150366850,	0.854083013382041180,	0.854057005478507820,	0.854030995439832070,	0.854004983266078880,	
+0.853978968957312620,	0.853952952513599480,	0.853926933935003960,	0.853900913221591120,	0.853874890373426010,	0.853848865390573590,	0.853822838273099020,	0.853796809021067470,	
+0.853770777634543340,	0.853744744113592690,	0.853718708458280240,	0.853692670668671050,	0.853666630744830180,	0.853640588686822690,	0.853614544494713750,	0.853588498168567970,	
+0.853562449708451410,	0.853536399114428690,	0.853510346386565090,	0.853484291524925550,	0.853458234529575250,	0.853432175400579360,	0.853406114138003160,	0.853380050741911030,	
+0.853353985212369380,	0.853327917549442700,	0.853301847753196290,	0.853275775823695180,	0.853249701761004680,	0.853223625565189820,	0.853197547236316020,	0.853171466774447880,	
+0.853145384179651470,	0.853119299451991610,	0.853093212591533590,	0.853067123598342470,	0.853041032472483530,	0.853014939214022050,	0.852988843823022760,	0.852962746299551820,	
+0.852936646643673970,	0.852910544855454590,	0.852884440934958740,	0.852858334882251820,	0.852832226697399110,	0.852806116380465770,	0.852780003931516760,	0.852753889350618130,	
+0.852727772637834840,	0.852701653793232040,	0.852675532816875140,	0.852649409708829410,	0.852623284469160250,	0.852597157097932270,	0.852571027595211970,	0.852544895961063980,	
+0.852518762195553890,	0.852492626298746780,	0.852466488270708140,	0.852440348111503270,	0.852414205821197650,	0.852388061399855900,	0.852361914847544530,	0.852335766164328380,	
+0.852309615350272720,	0.852283462405443170,	0.852257307329904900,	0.852231150123723300,	0.852204990786963880,	0.852178829319691580,	0.852152665721972570,	0.852126499993871910,	
+0.852100332135455000,	0.852074162146787330,	0.852047990027934190,	0.852021815778961080,	0.851995639399932950,	0.851969460890916300,	0.851943280251975850,	0.851917097483177340,	
+0.851890912584585940,	0.851864725556267350,	0.851838536398286990,	0.851812345110710250,	0.851786151693602060,	0.851759956147029150,	0.851733758471056150,	0.851707558665748880,	
+0.851681356731172730,	0.851655152667393220,	0.851628946474475730,	0.851602738152485880,	0.851576527701488730,	0.851550315121550770,	0.851524100412736960,	0.851497883575113020,	
+0.851471664608744240,	0.851445443513696330,	0.851419220290034810,	0.851392994937824830,	0.851366767457132800,	0.851340537848023770,	0.851314306110563470,	0.851288072244817400,	
+0.851261836250851170,	0.851235598128730400,	0.851209357878520480,	0.851183115500286800,	0.851156870994095870,	0.851130624360012630,	0.851104375598102810,	0.851078124708432140,	
+0.851051871691066220,	0.851025616546070450,	0.850999359273510340,	0.850973099873452150,	0.850946838345961300,	0.850920574691103380,	0.850894308908944020,	0.850868040999548820,	
+0.850841770962983520,	0.850815498799313840,	0.850789224508604840,	0.850762948090923340,	0.850736669546334530,	0.850710388874903910,	0.850684106076697420,	0.850657821151780680,	
+0.850631534100219300,	0.850605244922079120,	0.850578953617425300,	0.850552660186324690,	0.850526364628842350,	0.850500066945044100,	0.850473767134995780,	0.850447465198762910,	
+0.850421161136411420,	0.850394854948006600,	0.850368546633615050,	0.850342236193302180,	0.850315923627133710,	0.850289608935175470,	0.850263292117493190,	0.850236973174152590,	
+0.850210652105219620,	0.850184328910759570,	0.850158003590839150,	0.850131676145523760,	0.850105346574879130,	0.850079014878971080,	0.850052681057865580,	0.850026345111628330,	
+0.850000007040325300,	0.849973666844021760,	0.849947324522784430,	0.849920980076678930,	0.849894633505770880,	0.849868284810126220,	0.849841933989810890,	0.849815581044890740,	
+0.849789225975431160,	0.849762868781498980,	0.849736509463159590,	0.849710148020479060,	0.849683784453522990,	0.849657418762357560,	0.849631050947048600,	0.849604681007661950,	
+0.849578308944263120,	0.849551934756919040,	0.849525558445695110,	0.849499180010657270,	0.849472799451871490,	0.849446416769403800,	0.849420031963319940,	0.849393645033685530,	
+0.849367255980567610,	0.849340864804031370,	0.849314471504143080,	0.849288076080968570,	0.849261678534573900,	0.849235278865025030,	0.849208877072388010,	0.849182473156728230,	
+0.849156067118112760,	0.849129658956607190,	0.849103248672277380,	0.849076836265189480,	0.849050421735409570,	0.849024005083003570,	0.848997586308037460,	0.848971165410577040,	
+0.848944742390689070,	0.848918317248439360,	0.848891889983893750,	0.848865460597118540,	0.848839029088179540,	0.848812595457143050,	0.848786159704074560,	0.848759721829041140,	
+0.848733281832108500,	0.848706839713342600,	0.848680395472809490,	0.848653949110575570,	0.848627500626706670,	0.848601050021269070,	0.848574597294328380,	0.848548142445951560,	
+0.848521685476204550,	0.848495226385153180,	0.848468765172863850,	0.848442301839402500,	0.848415836384835530,	0.848389368809228880,	0.848362899112648390,	0.848336427295161010,	
+0.848309953356832680,	0.848283477297729460,	0.848256999117917520,	0.848230518817463030,	0.848204036396432380,	0.848177551854891080,	0.848151065192906390,	0.848124576410543950,	
+0.848098085507870140,	0.848071592484951120,	0.848045097341853180,	0.848018600078642380,	0.847992100695385110,	0.847965599192147200,	0.847939095568995720,	0.847912589825996490,	
+0.847886081963215800,	0.847859571980719820,	0.847833059878575050,	0.847806545656847540,	0.847780029315603150,	0.847753510854909240,	0.847726990274831560,	0.847700467575436380,	
+0.847673942756790090,	0.847647415818958860,	0.847620886762009080,	0.847594355586007150,	0.847567822291018790,	0.847541286877111390,	0.847514749344350780,	0.847488209692803360,	
+0.847461667922535300,	0.847435124033613100,	0.847408578026103140,	0.847382029900071720,	0.847355479655584660,	0.847328927292709480,	0.847302372811511990,	0.847275816212058500,	
+0.847249257494415490,	0.847222696658649350,	0.847196133704826490,	0.847169568633012740,	0.847143001443275590,	0.847116432135681000,	0.847089860710295240,	0.847063287167184930,	
+0.847036711506416240,	0.847010133728055890,	0.846983553832170280,	0.846956971818825120,	0.846930387688088150,	0.846903801440025190,	0.846877213074702650,	0.846850622592187130,	
+0.846824029992545020,	0.846797435275842950,	0.846770838442146730,	0.846744239491523890,	0.846717638424040460,	0.846691035239762860,	0.846664429938757790,	0.846637822521091540,	
+0.846611212986830840,	0.846584601336042080,	0.846557987568791300,	0.846531371685146030,	0.846504753685172420,	0.846478133568936860,	0.846451511336505870,	0.846424886987946270,	
+0.846398260523324340,	0.846371631942706810,	0.846345001246159740,	0.846318368433750630,	0.846291733505545540,	0.846265096461611190,	0.846238457302014080,	0.846211816026820830,	
+0.846185172636097940,	0.846158527129911800,	0.846131879508329690,	0.846105229771418000,	0.846078577919243120,	0.846051923951871900,	0.846025267869370820,	0.845998609671806510,	
+0.845971949359245800,	0.845945286931754640,	0.845918622389400850,	0.845891955732250400,	0.845865286960370110,	0.845838616073826600,	0.845811943072686480,	0.845785267957016580,	
+0.845758590726883530,	0.845731911382353490,	0.845705229923494060,	0.845678546350371760,	0.845651860663052870,	0.845625172861604430,	0.845598482946093190,	0.845571790916585520,	
+0.845545096773148040,	0.845518400515848260,	0.845491702144752440,	0.845465001659927440,	0.845438299061439860,	0.845411594349356530,	0.845384887523744300,	0.845358178584669770,	
+0.845331467532199340,	0.845304754366400730,	0.845278039087340230,	0.845251321695084660,	0.845224602189700750,	0.845197880571255330,	0.845171156839815250,	0.845144430995446780,	
+0.845117703038217650,	0.845090972968194350,	0.845064240785443620,	0.845037506490032180,	0.845010770082027070,	0.844984031561495040,	0.844957290928502910,	0.844930548183117080,	
+0.844903803325405380,	0.844877056355434090,	0.844850307273270260,	0.844823556078980520,	0.844796802772632030,	0.844770047354291510,	0.844743289824025800,	0.844716530181901510,	
+0.844689768427986270,	0.844663004562346660,	0.844636238585049440,	0.844609470496161750,	0.844582700295750330,	0.844555927983882130,	0.844529153560623640,	0.844502377026042810,	
+0.844475598380206030,	0.844448817623180140,	0.844422034755032300,	0.844395249775829470,	0.844368462685638370,	0.844341673484526160,	0.844314882172559230,	0.844288088749805650,	
+0.844261293216331810,	0.844234495572204760,	0.844207695817491440,	0.844180893952258930,	0.844154089976574150,	0.844127283890504180,	0.844100475694115500,	0.844073665387476080,	
+0.844046852970652520,	0.844020038443711870,	0.843993221806721090,	0.843966403059747240,	0.843939582202857360,	0.843912759236118080,	0.843885934159597450,	0.843859106973361860,	
+0.843832277677478590,	0.843805446272014590,	0.843778612757037030,	0.843751777132612850,	0.843724939398809210,	0.843698099555692860,	0.843671257603331610,	0.843644413541792320,	
+0.843617567371142020,	0.843590719091447780,	0.843563868702776660,	0.843537016205195940,	0.843510161598772120,	0.843483304883573480,	0.843456446059666520,	0.843429585127118410,	
+0.843402722085996430,	0.843375856936367630,	0.843348989678299080,	0.843322120311858160,	0.843295248837111490,	0.843268375254127120,	0.843241499562971790,	0.843214621763712760,	
+0.843187741856417090,	0.843160859841152190,	0.843133975717984980,	0.843107089486982990,	0.843080201148212800,	0.843053310701742500,	0.843026418147638900,	0.842999523485969290,	
+0.842972626716800950,	0.842945727840200940,	0.842918826856236650,	0.842891923764974790,	0.842865018566483660,	0.842838111260829970,	0.842811201848081000,	0.842784290328303930,	
+0.842757376701566250,	0.842730460967935020,	0.842703543127477750,	0.842676623180261150,	0.842649701126353400,	0.842622776965821440,	0.842595850698732440,	0.842568922325153900,	
+0.842541991845153100,	0.842515059258797220,	0.842488124566153740,	0.842461187767289510,	0.842434248862272690,	0.842407307851170350,	0.842380364734049760,	0.842353419510978090,	
+0.842326472182023060,	0.842299522747251730,	0.842272571206731160,	0.842245617560529620,	0.842218661808714080,	0.842191703951351900,	0.842164743988510380,	0.842137781920257010,	
+0.842110817746659190,	0.842083851467784420,	0.842056883083699410,	0.842029912594472800,	0.842002940000171280,	0.841975965300862490,	0.841948988496613810,	0.841922009587492640,	
+0.841895028573566350,	0.841868045454902130,	0.841841060231568240,	0.841814072903631640,	0.841787083471159940,	0.841760091934220520,	0.841733098292880790,	0.841706102547208460,	
+0.841679104697270810,	0.841652104743134900,	0.841625102684869120,	0.841598098522540750,	0.841571092256217070,	0.841544083885965580,	0.841517073411854000,	0.841490060833949620,	
+0.841463046152320150,	0.841436029367032660,	0.841409010478155420,	0.841381989485755820,	0.841354966389901150,	0.841327941190659010,	0.841300913888097130,	0.841273884482282910,	
+0.841246852973283500,	0.841219819361167520,	0.841192783646001920,	0.841165745827854310,	0.841138705906792410,	0.841111663882883720,	0.841084619756195860,	0.841057573526796440,	
+0.841030525194752740,	0.841003474760133040,	0.840976422223004730,	0.840949367583435300,	0.840922310841492490,	0.840895251997244020,	0.840868191050757270,	0.840841128002100090,	
+0.840814062851339640,	0.840786995598544420,	0.840759926243781820,	0.840732854787119340,	0.840705781228624720,	0.840678705568365660,	0.840651627806409900,	0.840624547942824480,	
+0.840597465977678260,	0.840570381911038390,	0.840543295742972480,	0.840516207473548380,	0.840489117102833690,	0.840462024630896360,	0.840434930057803790,	0.840407833383623570,	
+0.840380734608424110,	0.840353633732272900,	0.840326530755237560,	0.840299425677386020,	0.840272318498785810,	0.840245209219504740,	0.840218097839610320,	0.840190984359171060,	
+0.840163868778254330,	0.840136751096927870,	0.840109631315259620,	0.840082509433317300,	0.840055385451168650,	0.840028259368881590,	0.840001131186523310,	0.839974000904162740,	
+0.839946868521867170,	0.839919734039704440,	0.839892597457742470,	0.839865458776048900,	0.839838317994691660,	0.839811175113738590,	0.839784030133257200,	0.839756883053316190,	
+0.839729733873982980,	0.839702582595325380,	0.839675429217411450,	0.839648273740308810,	0.839621116164085520,	0.839593956488808970,	0.839566794714548090,	0.839539630841370070,	
+0.839512464869343060,	0.839485296798534900,	0.839458126629013530,	0.839430954360846800,	0.839403779994102650,	0.839376603528848570,	0.839349424965153520,	0.839322244303084890,	
+0.839295061542710610,	0.839267876684098750,	0.839240689727317140,	0.839213500672433830,	0.839186309519516340,	0.839159116268633490,	0.839131920919852780,	0.839104723473242390,	
+0.839077523928870140,	0.839050322286804100,	0.839023118547112200,	0.838995912709862620,	0.838968704775122640,	0.838941494742961420,	0.838914282613446580,	0.838887068386645950,	
+0.838859852062627590,	0.838832633641459660,	0.838805413123210110,	0.838778190507947110,	0.838750965795738050,	0.838723738986652090,	0.838696510080756850,	0.838669279078120280,	
+0.838642045978810540,	0.838614810782895680,	0.838587573490443770,	0.838560334101522420,	0.838533092616200680,	0.838505849034546280,	0.838478603356627270,	0.838451355582511830,	
+0.838424105712267890,	0.838396853745963620,	0.838369599683667310,	0.838342343525446560,	0.838315085271370330,	0.838287824921506440,	0.838260562475923070,	0.838233297934688150,	
+0.838206031297870080,	0.838178762565536920,	0.838151491737756830,	0.838124218814597530,	0.838096943796128090,	0.838069666682416450,	0.838042387473530550,	0.838015106169538670,	
+0.837987822770509090,	0.837960537276509880,	0.837933249687608850,	0.837905960003875180,	0.837878668225376710,	0.837851374352181490,	0.837824078384357800,	0.837796780321974020,	
+0.837769480165098220,	0.837742177913798680,	0.837714873568143230,	0.837687567128201140,	0.837660258594040140,	0.837632947965728400,	0.837605635243334420,	0.837578320426926260,	
+0.837551003516572300,	0.837523684512340380,	0.837496363414299670,	0.837469040222518110,	0.837441714937063990,	0.837414387558005460,	0.837387058085411030,	0.837359726519348980,	
+0.837332392859887590,	0.837305057107094800,	0.837277719261039780,	0.837250379321790470,	0.837223037289415160,	0.837195693163982350,	0.837168346945560300,	0.837140998634217310,	
+0.837113648230021880,	0.837086295733041830,	0.837058941143346560,	0.837031584461003900,	0.837004225686082240,	0.836976864818650080,	0.836949501858775700,	0.836922136806527610,	
+0.836894769661973740,	0.836867400425183370,	0.836840029096224460,	0.836812655675165610,	0.836785280162074980,	0.836757902557021200,	0.836730522860072660,	0.836703141071297840,	
+0.836675757190764700,	0.836648371218542630,	0.836620983154699570,	0.836593592999304140,	0.836566200752424720,	0.836538806414129700,	0.836511409984487810,	0.836484011463567320,	
+0.836456610851436300,	0.836429208148164240,	0.836401803353819200,	0.836374396468469560,	0.836346987492184060,	0.836319576425031070,	0.836292163267079000,	0.836264748018396230,	
+0.836237330679051930,	0.836209911249114370,	0.836182489728652060,	0.836155066117733490,	0.836127640416427180,	0.836100212624801830,	0.836072782742925960,	0.836045350770867610,	
+0.836017916708696410,	0.835990480556480400,	0.835963042314288310,	0.835935601982188410,	0.835908159560249660,	0.835880715048540450,	0.835853268447128930,	0.835825819756084830,	
+0.835798368975476100,	0.835770916105371460,	0.835743461145839530,	0.835716004096948910,	0.835688544958768320,	0.835661083731366380,	0.835633620414811260,	0.835606155009172570,	
+0.835578687514518470,	0.835551217930917690,	0.835523746258438840,	0.835496272497150530,	0.835468796647121700,	0.835441318708420750,	0.835413838681116070,	0.835386356565277270,	
+0.835358872360972620,	0.835331386068270730,	0.835303897687240450,	0.835276407217950380,	0.835248914660469240,	0.835221420014865430,	0.835193923281208450,	0.835166424459566790,	
+0.835138923550008960,	0.835111420552603900,	0.835083915467420220,	0.835056408294526760,	0.835028899033992360,	0.835001387685885170,	0.834973874250275030,	0.834946358727230110,	
+0.834918841116819350,	0.834891321419111490,	0.834863799634175340,	0.834836275762079640,	0.834808749802893320,	0.834781221756684570,	0.834753691623523310,	0.834726159403477830,	
+0.834698625096616960,	0.834671088703009430,	0.834643550222724300,	0.834616009655830270,	0.834588467002395640,	0.834560922262490460,	0.834533375436182890,	0.834505826523541880,	
+0.834478275524636270,	0.834450722439535000,	0.834423167268307010,	0.834395610011021030,	0.834368050667745550,	0.834340489238550420,	0.834312925723504020,	0.834285360122675400,	
+0.834257792436133290,	0.834230222663946750,	0.834202650806184720,	0.834175076862915480,	0.834147500834209080,	0.834119922720133910,	0.834092342520758920,	0.834064760236153060,	
+0.834037175866385370,	0.834009589411524700,	0.833982000871639980,	0.833954410246799950,	0.833926817537074210,	0.833899222742531480,	0.833871625863240820,	0.833844026899270950,	
+0.833816425850691050,	0.833788822717570040,	0.833761217499977000,	0.833733610197980420,	0.833706000811650360,	0.833678389341055310,	0.833650775786264230,	0.833623160147346280,	
+0.833595542424370280,	0.833567922617405640,	0.833540300726520520,	0.833512676751785200,	0.833485050693268170,	0.833457422551038610,	0.833429792325165340,	0.833402160015717760,	
+0.833374525622764590,	0.833346889146375220,	0.833319250586618150,	0.833291609943563440,	0.833263967217279690,	0.833236322407835960,	0.833208675515301530,	0.833181026539745350,	
+0.833153375481236580,	0.833125722339844500,	0.833098067115637500,	0.833070409808685850,	0.833042750419058180,	0.833015088946823630,	0.832987425392051390,	0.832959759754810510,	
+0.832932092035170270,	0.832904422233199380,	0.832876750348967800,	0.832849076382544460,	0.832821400333998430,	0.832793722203398760,	0.832766041990814940,	0.832738359696315930,	
+0.832710675319971010,	0.832682988861848990,	0.832655300322019950,	0.832627609700552610,	0.832599916997516340,	0.832572222212980220,	0.832544525347013510,	0.832516826399685490,	
+0.832489125371065010,	0.832461422261222110,	0.832433717070225730,	0.832406009798145050,	0.832378300445049350,	0.832350589011007780,	0.832322875496089850,	0.832295159900364730,	
+0.832267442223901140,	0.832239722466769580,	0.832212000629038550,	0.832184276710777660,	0.832156550712055960,	0.832128822632942970,	0.832101092473507940,	0.832073360233820060,	
+0.832045625913948370,	0.832017889513963160,	0.831990151033933150,	0.831962410473927720,	0.831934667834016370,	0.831906923114268280,	0.831879176314752940,	0.831851427435539080,	
+0.831823676476697190,	0.831795923438296110,	0.831768168320405230,	0.831740411123093940,	0.831712651846431620,	0.831684890490487660,	0.831657127055331460,	0.831629361541031950,	
+0.831601593947659530,	0.831573824275283150,	0.831546052523972290,	0.831518278693796130,	0.831490502784824390,	0.831462724797126350,	0.831434944730770950,	0.831407162585828810,	
+0.831379378362368640,	0.831351592060460170,	0.831323803680172560,	0.831296013221575540,	0.831268220684738490,	0.831240426069730810,	0.831212629376621660,	0.831184830605481430,	
+0.831157029756379060,	0.831129226829384060,	0.831101421824566140,	0.831073614741994590,	0.831045805581739020,	0.831017994343868920,	0.830990181028453350,	0.830962365635562810,	
+0.830934548165266350,	0.830906728617633590,	0.830878906992733920,	0.830851083290637060,	0.830823257511412390,	0.830795429655129200,	0.830767599721857870,	0.830739767711667580,	
+0.830711933624627810,	0.830684097460808180,	0.830656259220278410,	0.830628418903107900,	0.830600576509366470,	0.830572732039122960,	0.830544885492448200,	0.830517036869411250,	
+0.830489186170081610,	0.830461333394529100,	0.830433478542823120,	0.830405621615033620,	0.830377762611229970,	0.830349901531481470,	0.830322038375858610,	0.830294173144430770,	
+0.830266305837267460,	0.830238436454438290,	0.830210564996013090,	0.830182691462061580,	0.830154815852652720,	0.830126938167857430,	0.830099058407744670,	0.830071176572384380,	
+0.830043292661846070,	0.830015406676199550,	0.829987518615514450,	0.829959628479860710,	0.829931736269307270,	0.829903841983924970,	0.829875945623783200,	0.829848047188951440,	
+0.829820146679499660,	0.829792244095497460,	0.829764339437014660,	0.829736432704120450,	0.829708523896885760,	0.829680613015379650,	0.829652700059672070,	0.829624785029832830,	
+0.829596867925931460,	0.829568948748037990,	0.829541027496222160,	0.829513104170553350,	0.829485178771102170,	0.829457251297938010,	0.829429321751130820,	0.829401390130750320,	
+0.829373456436866330,	0.829345520669548590,	0.829317582828867140,	0.829289642914891270,	0.829261700927691800,	0.829233756867338020,	0.829205810733899870,	0.829177862527447180,	
+0.829149912248049790,	0.829121959895777750,	0.829094005470700220,	0.829066048972888160,	0.829038090402410940,	0.829010129759338630,	0.828982167043740840,	0.828954202255687720,	
+0.828926235395249120,	0.828898266462494980,	0.828870295457494580,	0.828842322380318960,	0.828814347231037530,	0.828786370009720220,	0.828758390716436980,	0.828730409351257750,	
+0.828702425914252580,	0.828674440405491320,	0.828646452825043460,	0.828618463172979940,	0.828590471449370260,	0.828562477654284370,	0.828534481787792320,	0.828506483849964060,	
+0.828478483840869640,	0.828450481760578450,	0.828422477609161540,	0.828394471386688540,	0.828366463093229250,	0.828338452728853870,	0.828310440293632320,	0.828282425787634780,	
+0.828254409210931080,	0.828226390563590820,	0.828198369845685180,	0.828170347057283540,	0.828142322198456070,	0.828114295269272720,	0.828086266269803750,	0.828058235200119010,	
+0.828030202060288210,	0.828002166850382420,	0.827974129570471230,	0.827946090220624710,	0.827918048800913020,	0.827890005311406110,	0.827861959752174250,	0.827833912123287500,	
+0.827805862424815350,	0.827777810656829200,	0.827749756819398440,	0.827721700912593230,	0.827693642936483950,	0.827665582891140450,	0.827637520776632880,	0.827609456593031640,	
+0.827581390340406340,	0.827553322018827920,	0.827525251628366210,	0.827497179169091490,	0.827469104641073700,	0.827441028044383240,	0.827412949379090160,	0.827384868645264170,	
+0.827356785842976560,	0.827328700972296940,	0.827300614033295580,	0.827272525026042760,	0.827244433950608540,	0.827216340807063300,	0.827188245595477100,	0.827160148315919890,	
+0.827132048968462820,	0.827103947553175510,	0.827075844070128460,	0.827047738519391730,	0.827019630901035700,	0.826991521215130530,	0.826963409461746620,	0.826935295640953690,	
+0.826907179752823020,	0.826879061797424320,	0.826850941774827990,	0.826822819685104400,	0.826794695528323630,	0.826766569304556280,	0.826738441013871840,	0.826710310656341930,	
+0.826682178232036160,	0.826654043741025020,	0.826625907183378690,	0.826597768559167670,	0.826569627868462110,	0.826541485111332630,	0.826513340287848840,	0.826485193398082240,	
+0.826457044442102660,	0.826428893419980380,	0.826400740331786010,	0.826372585177589710,	0.826344427957461880,	0.826316268671472560,	0.826288107319693040,	0.826259943902193370,	
+0.826231778419043720,	0.826203610870314690,	0.826175441256076560,	0.826147269576399830,	0.826119095831355010,	0.826090920021011810,	0.826062742145441950,	0.826034562204715160,	
+0.826006380198902050,	0.825978196128072880,	0.825950009992298280,	0.825921821791648640,	0.825893631526194440,	0.825865439196005640,	0.825837244801153840,	0.825809048341708870,	
+0.825780849817741250,	0.825752649229321570,	0.825724446576520220,	0.825696241859407710,	0.825668035078054200,	0.825639826232530960,	0.825611615322908280,	0.825583402349256530,	
+0.825555187311646230,	0.825526970210148090,	0.825498751044832390,	0.825470529815769850,	0.825442306523030520,	0.825414081166685910,	0.825385853746806060,	0.825357624263461600,	
+0.825329392716723120,	0.825301159106661130,	0.825272923433346240,	0.825244685696848950,	0.825216445897239640,	0.825188204034589590,	0.825159960108968970,	0.825131714120448610,	
+0.825103466069098790,	0.825075215954990450,	0.825046963778193980,	0.825018709538779650,	0.824990453236819080,	0.824962194872382320,	0.824933934445540080,	0.824905671956363000,	
+0.824877407404921770,	0.824849140791287020,	0.824820872115529350,	0.824792601377719150,	0.824764328577927810,	0.824736053716225710,	0.824707776792683370,	0.824679497807371710,	
+0.824651216760361240,	0.824622933651722790,	0.824594648481526530,	0.824566361249844060,	0.824538071956745780,	0.824509780602302180,	0.824481487186584210,	0.824453191709662580,	
+0.824424894171607910,	0.824396594572490930,	0.824368292912382120,	0.824339989191352980,	0.824311683409473920,	0.824283375566815520,	0.824255065663448860,	0.824226753699444430,	
+0.824198439674873160,	0.824170123589805790,	0.824141805444312590,	0.824113485238465390,	0.824085162972334470,	0.824056838645990660,	0.824028512259504690,	0.824000183812947480,	
+0.823971853306389890,	0.823943520739902070,	0.823915186113555960,	0.823886849427421850,	0.823858510681570680,	0.823830169876073270,	0.823801827011000350,	0.823773482086422870,	
+0.823745135102411760,	0.823716786059037310,	0.823688434956371340,	0.823660081794484240,	0.823631726573446970,	0.823603369293330450,	0.823575009954205410,	0.823546648556142900,	
+0.823518285099213760,	0.823489919583488490,	0.823461552009038810,	0.823433182375935320,	0.823404810684248870,	0.823376436934050270,	0.823348061125410700,	0.823319683258400990,	
+0.823291303333091530,	0.823262921349554260,	0.823234537307859780,	0.823206151208078940,	0.823177763050282670,	0.823149372834542040,	0.823120980560927970,	0.823092586229511420,	
+0.823064189840363000,	0.823035791393554430,	0.823007390889156530,	0.822978988327240150,	0.822950583707876220,	0.822922177031135900,	0.822893768297090040,	0.822865357505809360,	
+0.822836944657365790,	0.822808529751829720,	0.822780112789272540,	0.822751693769764870,	0.822723272693378080,	0.822694849560183130,	0.822666424370250950,	0.822637997123652260,	
+0.822609567820459130,	0.822581136460742050,	0.822552703044572180,	0.822524267572020460,	0.822495830043158070,	0.822467390458056170,	0.822438948816785810,	0.822410505119417490,	
+0.822382059366023490,	0.822353611556674300,	0.822325161691441100,	0.822296709770394930,	0.822268255793607070,	0.822239799761148580,	0.822211341673090070,	0.822182881529503580,	
+0.822154419330460070,	0.822125955076030370,	0.822097488766285970,	0.822069020401297700,	0.822040549981136850,	0.822012077505874680,	0.821983602975581820,	0.821955126390330530,	
+0.821926647750191310,	0.821898167055235440,	0.821869684305534310,	0.821841199501158860,	0.821812712642180370,	0.821784223728669660,	0.821755732760698910,	0.821727239738338830,	
+0.821698744661660600,	0.821670247530735590,	0.821641748345634860,	0.821613247106429910,	0.821584743813191690,	0.821556238465991130,	0.821527731064900510,	0.821499221609990560,	
+0.821470710101332550,	0.821442196538997860,	0.821413680923057550,	0.821385163253583130,	0.821356643530645750,	0.821328121754316240,	0.821299597924666890,	0.821271072041768630,	
+0.821242544105692640,	0.821214014116510400,	0.821185482074292980,	0.821156947979111980,	0.821128411831038020,	0.821099873630143580,	0.821071333376499400,	0.821042791070176970,	
+0.821014246711247450,	0.820985700299782460,	0.820957151835853050,	0.820928601319530940,	0.820900048750886620,	0.820871494129992830,	0.820842937456920270,	0.820814378731740350,	
+0.820785817954524540,	0.820757255125344140,	0.820728690244270640,	0.820700123311375320,	0.820671554326729340,	0.820642983290404860,	0.820614410202472940,	0.820585835063004980,	
+0.820557257872072450,	0.820528678629746770,	0.820500097336099410,	0.820471513991201330,	0.820442928595124910,	0.820414341147941210,	0.820385751649721720,	0.820357160100537720,	
+0.820328566500460930,	0.820299970849562630,	0.820271373147914430,	0.820242773395587380,	0.820214171592653860,	0.820185567739184830,	0.820156961835252000,	0.820128353880926640,	
+0.820099743876280480,	0.820071131821384910,	0.820042517716311090,	0.820013901561131410,	0.819985283355916920,	0.819956663100739340,	0.819928040795670050,	0.819899416440780680,	
+0.819870790036142720,	0.819842161581827880,	0.819813531077907000,	0.819784898524452910,	0.819756263921536550,	0.819727627269229430,	0.819698988567603370,	0.819670347816729760,	
+0.819641705016680320,	0.819613060167526660,	0.819584413269339840,	0.819555764322192350,	0.819527113326155580,	0.819498460281301020,	0.819469805187700300,	0.819441148045425010,	
+0.819412488854546870,	0.819383827615137060,	0.819355164327268180,	0.819326498991011400,	0.819297831606438320,	0.819269162173620670,	0.819240490692630050,	0.819211817163538300,	
+0.819183141586417030,	0.819154463961337290,	0.819125784288372020,	0.819097102567592160,	0.819068418799069660,	0.819039732982876020,	0.819011045119083180,	0.818982355207762640,	
+0.818953663248986220,	0.818924969242825100,	0.818896273189352100,	0.818867575088638390,	0.818838874940755800,	0.818810172745775940,	0.818781468503770760,	0.818752762214811860,	
+0.818724053878970510,	0.818695343496319560,	0.818666631066930270,	0.818637916590874370,	0.818609200068223690,	0.818580481499050050,	0.818551760883425070,	0.818523038221420810,	
+0.818494313513108420,	0.818465586758560740,	0.818436857957849150,	0.818408127111045380,	0.818379394218221260,	0.818350659279448720,	0.818321922294799500,	0.818293183264344970,	
+0.818264442188157970,	0.818235699066309890,	0.818206953898872550,	0.818178206685917790,	0.818149457427517550,	0.818120706123743660,	0.818091952774668060,	0.818063197380362040,	
+0.818034439940898530,	0.818005680456348920,	0.817976918926785030,	0.817948155352278940,	0.817919389732902460,	0.817890622068727420,	0.817861852359825890,	0.817833080606269250,	
+0.817804306808130320,	0.817775530965480720,	0.817746753078392290,	0.817717973146936950,	0.817689191171186660,	0.817660407151213350,	0.817631621087088640,	0.817602832978885250,	
+0.817574042826674900,	0.817545250630529410,	0.817516456390520730,	0.817487660106720910,	0.817458861779202020,	0.817430061408035980,	0.817401258993294190,	0.817372454535049810,	
+0.817343648033374340,	0.817314839488339720,	0.817286028900017890,	0.817257216268481130,	0.817228401593801280,	0.817199584876050490,	0.817170766115300150,	0.817141945311623430,	
+0.817113122465091820,	0.817084297575777390,	0.817055470643752280,	0.817026641669088450,	0.816997810651858060,	0.816968977592132610,	0.816940142489985140,	0.816911305345487390,	
+0.816882466158711410,	0.816853624929729240,	0.816824781658613050,	0.816795936345434790,	0.816767088990266840,	0.816738239593180590,	0.816709388154249210,	0.816680534673544400,	
+0.816651679151138230,	0.816622821587102870,	0.816593961981510460,	0.816565100334433190,	0.816536236645942550,	0.816507370916111920,	0.816478503145012800,	0.816449633332717470,	
+0.816420761479298100,	0.816391887584826730,	0.816363011649375750,	0.816334133673017100,	0.816305253655822740,	0.816276371597865700,	0.816247487499217720,	0.816218601359951060,	
+0.816189713180137890,	0.816160822959850370,	0.816131930699160900,	0.816103036398141520,	0.816074140056864070,	0.816045241675401710,	0.816016341253826380,	0.815987438792210140,	
+0.815958534290625260,	0.815929627749144130,	0.815900719167838790,	0.815871808546781320,	0.815842895886044750,	0.815813981185700920,	0.815785064445822110,	0.815756145666480690,	
+0.815727224847748960,	0.815698301989699060,	0.815669377092403500,	0.815640450155933890,	0.815611521180363730,	0.815582590165764730,	0.815553657112209280,	0.815524722019769670,	
+0.815495784888518370,	0.815466845718527460,	0.815437904509869530,	0.815408961262616310,	0.815380015976841070,	0.815351068652615970,	0.815322119290013080,	0.815293167889105000,	
+0.815264214449963890,	0.815235258972662360,	0.815206301457272020,	0.815177341903866590,	0.815148380312517680,	0.815119416683297900,	0.815090451016279530,	0.815061483311535050,	
+0.815032513569136860,	0.815003541789157460,	0.814974567971668560,	0.814945592116743890,	0.814916614224455160,	0.814887634294874870,	0.814858652328075530,	0.814829668324129620,	
+0.814800682283109530,	0.814771694205087100,	0.814742704090136050,	0.814713711938328200,	0.814684717749736160,	0.814655721524432220,	0.814626723262488970,	0.814597722963978920,	
+0.814568720628974670,	0.814539716257547950,	0.814510709849772590,	0.814481701405720400,	0.814452690925463910,	0.814423678409075810,	0.814394663856628400,	0.814365647268194380,	
+0.814336628643846260,	0.814307607983655980,	0.814278585287697250,	0.814249560556042030,	0.814220533788762910,	0.814191504985932510,	0.814162474147623330,	0.814133441273907970,	
+0.814104406364858480,	0.814075369420548480,	0.814046330441050010,	0.814017289426435810,	0.813988246376778360,	0.813959201292150160,	0.813930154172624150,	0.813901105018272620,	
+0.813872053829167940,	0.813843000605383500,	0.813813945346991700,	0.813784888054064900,	0.813755828726675960,	0.813726767364897460,	0.813697703968802030,	0.813668638538461720,	
+0.813639571073950460,	0.813610501575340320,	0.813581430042703780,	0.813552356476113680,	0.813523280875642740,	0.813494203241363680,	0.813465123573348990,	0.813436041871670960,	
+0.813406958136403400,	0.813377872367618490,	0.813348784565388840,	0.813319694729787270,	0.813290602860886390,	0.813261508958759040,	0.813232413023477930,	0.813203315055115230,	
+0.813174215053744760,	0.813145113019438810,	0.813116008952270100,	0.813086902852311330,	0.813057794719635240,	0.813028684554314760,	0.812999572356421950,	0.812970458126030860,	
+0.812941341863213540,	0.812912223568042820,	0.812883103240591650,	0.812853980880932640,	0.812824856489138710,	0.812795730065282610,	0.812766601609436700,	0.812737471121674830,	
+0.812708338602069260,	0.812679204050692830,	0.812650067467618360,	0.812620928852918810,	0.812591788206666890,	0.812562645528935420,	0.812533500819796920,	0.812504354079325200,	
+0.812475205307592540,	0.812446054504671890,	0.812416901670636070,	0.812387746805558030,	0.812358589909510600,	0.812329430982566160,	0.812300270024798770,	0.812271107036280580,	
+0.812241942017084770,	0.812212774967283950,	0.812183605886951270,	0.812154434776159560,	0.812125261634981780,	0.812096086463490300,	0.812066909261759060,	0.812037730029860680,	
+0.812008548767867880,	0.811979365475853810,	0.811950180153891200,	0.811920992802053210,	0.811891803420412230,	0.811862612009042190,	0.811833418568015720,	0.811804223097405630,	
+0.811775025597284980,	0.811745826067726830,	0.811716624508804110,	0.811687420920589760,	0.811658215303156410,	0.811629007656577970,	0.811599797980927070,	0.811570586276276650,	
+0.811541372542699760,	0.811512156780269440,	0.811482938989058770,	0.811453719169140770,	0.811424497320587860,	0.811395273443474290,	0.811366047537872560,	0.811336819603855620,	
+0.811307589641496630,	0.811278357650868750,	0.811249123632044930,	0.811219887585097780,	0.811190649510101450,	0.811161409407128550,	0.811132167276252040,	0.811102923117545170,	
+0.811073676931080900,	0.811044428716932500,	0.811015178475173130,	0.810985926205875170,	0.810956671909112910,	0.810927415584958950,	0.810898157233486570,	0.810868896854768710,	
+0.810839634448878630,	0.810810370015889510,	0.810781103555874410,	0.810751835068906020,	0.810722564555058530,	0.810693292014404760,	0.810664017447017660,	0.810634740852970490,	
+0.810605462232336540,	0.810576181585188960,	0.810546898911600370,	0.810517614211644920,	0.810488327485395570,	0.810459038732925460,	0.810429747954307670,	0.810400455149615560,	
+0.810371160318922200,	0.810341863462300970,	0.810312564579824700,	0.810283263671567440,	0.810253960737602030,	0.810224655778001730,	0.810195348792839720,	0.810166039782189370,	
+0.810136728746123970,	0.810107415684716230,	0.810078100598040420,	0.810048783486169380,	0.810019464349176380,	0.809990143187134690,	0.809960820000117710,	0.809931494788198700,	
+0.809902167551450840,	0.809872838289947160,	0.809843507003761840,	0.809814173692967710,	0.809784838357638260,	0.809755500997846660,	0.809726161613666280,	0.809696820205170530,	
+0.809667476772432670,	0.809638131315525640,	0.809608783834523840,	0.809579434329499970,	0.809550082800527650,	0.809520729247680040,	0.809491373671030630,	0.809462016070652820,	
+0.809432656446619440,	0.809403294799004860,	0.809373931127882140,	0.809344565433324560,	0.809315197715405500,	0.809285827974198570,	0.809256456209776930,	0.809227082422214310,	
+0.809197706611583300,	0.809168328777958630,	0.809138948921413140,	0.809109567042020310,	0.809080183139853530,	0.809050797214986290,	0.809021409267492110,	0.808992019297444240,	
+0.808962627304915970,	0.808933233289981570,	0.808903837252714200,	0.808874439193187130,	0.808845039111473980,	0.808815637007648250,	0.808786232881783420,	0.808756826733952440,	
+0.808727418564229920,	0.808698008372688900,	0.808668596159402900,	0.808639181924445280,	0.808609765667889780,	0.808580347389809880,	0.808550927090279090,	0.808521504769370570,	
+0.808492080427158700,	0.808462654063716650,	0.808433225679117910,	0.808403795273436200,	0.808374362846744910,	0.808344928399117760,	0.808315491930627790,	0.808286053441349630,	
+0.808256612931356200,	0.808227170400721340,	0.808197725849518540,	0.808168279277821530,	0.808138830685703690,	0.808109380073238850,	0.808079927440499950,	0.808050472787561810,	
+0.808021016114497500,	0.807991557421380620,	0.807962096708284890,	0.807932633975283810,	0.807903169222451310,	0.807873702449860790,	0.807844233657585510,	0.807814762845700200,	
+0.807785290014277900,	0.807755815163392340,	0.807726338293117350,	0.807696859403526530,	0.807667378494693500,	0.807637895566691520,	0.807608410619595320,	0.807578923653478050,	
+0.807549434668413560,	0.807519943664475440,	0.807490450641737520,	0.807460955600273420,	0.807431458540156850,	0.807401959461461200,	0.807372458364261190,	0.807342955248629980,	
+0.807313450114641510,	0.807283942962369270,	0.807254433791887220,	0.807224922603269060,	0.807195409396588630,	0.807165894171919200,	0.807136376929335490,	0.807106857668910880,	
+0.807077336390719100,	0.807047813094833980,	0.807018287781329220,	0.806988760450278900,	0.806959231101756050,	0.806929699735835730,	0.806900166352591100,	0.806870630952096100,	
+0.806841093534424570,	0.806811554099650220,	0.806782012647846990,	0.806752469179088720,	0.806722923693448780,	0.806693376191002120,	0.806663826671821900,	0.806634275135982180,	
+0.806604721583556780,	0.806575166014619540,	0.806545608429244390,	0.806516048827504720,	0.806486487209475470,	0.806456923575229910,	0.806427357924842100,	0.806397790258385980,	
+0.806368220575935270,	0.806338648877564010,	0.806309075163346160,	0.806279499433355080,	0.806249921687665850,	0.806220341926351840,	0.806190760149486870,	0.806161176357145020,	
+0.806131590549400200,	0.806102002726326480,	0.806072412887997690,	0.806042821034487320,	0.806013227165870540,	0.805983631282220610,	0.805954033383611600,	0.805924433470117550,	
+0.805894831541812410,	0.805865227598770110,	0.805835621641064370,	0.805806013668769920,	0.805776403681960570,	0.805746791680710170,	0.805717177665092770,	0.805687561635182400,	
+0.805657943591053250,	0.805628323532779130,	0.805598701460433770,	0.805569077374092110,	0.805539451273827760,	0.805509823159714760,	0.805480193031827160,	0.805450560890239250,	
+0.805420926735024860,	0.805391290566257580,	0.805361652384012580,	0.805332012188363480,	0.805302369979384420,	0.805272725757149370,	0.805243079521732460,	0.805213431273207990,	
+0.805183781011649780,	0.805154128737131770,	0.805124474449728790,	0.805094818149514780,	0.805065159836563570,	0.805035499510949550,	0.805005837172746760,	0.804976172822029380,	
+0.804946506458871560,	0.804916838083347020,	0.804887167695530810,	0.804857495295496770,	0.804827820883318950,	0.804798144459071610,	0.804768466022828810,	0.804738785574664940,	
+0.804709103114653600,	0.804679418642869960,	0.804649732159387730,	0.804620043664281300,	0.804590353157624620,	0.804560660639492160,	0.804530966109958000,	0.804501269569096510,	
+0.804471571016981190,	0.804441870453687540,	0.804412167879289260,	0.804382463293860540,	0.804352756697475630,	0.804323048090208830,	0.804293337472134380,	0.804263624843326590,	
+0.804233910203859260,	0.804204193553807680,	0.804174474893245560,	0.804144754222247290,	0.804115031540887150,	0.804085306849239400,	0.804055580147378430,	0.804025851435377970,	
+0.803996120713313390,	0.803966387981258520,	0.803936653239287650,	0.803906916487475140,	0.803877177725895400,	0.803847436954622680,	0.803817694173731390,	0.803787949383295340,	
+0.803758202583389920,	0.803728453774088970,	0.803698702955466970,	0.803668950127598090,	0.803639195290556940,	0.803609438444417790,	0.803579679589254470,	0.803549918725142480,	
+0.803520155852155750,	0.803490390970368560,	0.803460624079855410,	0.803430855180690790,	0.803401084272948870,	0.803371311356704370,	0.803341536432031100,	0.803311759499004350,	
+0.803281980557698280,	0.803252199608187280,	0.803222416650545830,	0.803192631684848220,	0.803162844711169170,	0.803133055729582930,	0.803103264740163470,	0.803073471742986490,	
+0.803043676738125710,	0.803013879725655850,	0.802984080705651190,	0.802954279678186440,	0.802924476643335880,	0.802894671601173670,	0.802864864551775300,	0.802835055495214830,	
+0.802805244431566640,	0.802775431360905340,	0.802745616283305430,	0.802715799198841510,	0.802685980107588180,	0.802656159009619290,	0.802626335905010540,	0.802596510793835980,	
+0.802566683676170120,	0.802536854552087450,	0.802507023421662800,	0.802477190284970550,	0.802447355142085320,	0.802417517993081140,	0.802387678838033750,	0.802357837677017070,	
+0.802327994510105840,	0.802298149337374640,	0.802268302158898110,	0.802238452974750720,	0.802208601785006750,	0.802178748589741810,	0.802148893389029950,	0.802119036182945890,	
+0.802089176971564230,	0.802059315754959590,	0.802029452533206790,	0.801999587306380210,	0.801969720074554250,	0.801939850837804390,	0.801909979596205020,	0.801880106349830650,	
+0.801850231098755970,	0.801820353843055830,	0.801790474582804720,	0.801760593318076920,	0.801730710048948140,	0.801700824775492650,	0.801670937497785060,	0.801641048215900100,	
+0.801611156929912580,	0.801581263639897120,	0.801551368345928440,	0.801521471048080910,	0.801491571746430150,	0.801461670441050540,	0.801431767132016800,	0.801401861819403540,	
+0.801371954503285580,	0.801342045183737860,	0.801312133860835000,	0.801282220534651260,	0.801252305205262470,	0.801222387872742910,	0.801192468537167410,	0.801162547198610800,	
+0.801132623857147670,	0.801102698512853100,	0.801072771165801220,	0.801042841816068000,	0.801012910463727580,	0.800982977108855020,	0.800953041751524930,	0.800923104391812140,	
+0.800893165029791690,	0.800863223665538300,	0.800833280299126370,	0.800803334930631720,	0.800773387560128840,	0.800743438187692340,	0.800713486813397380,	0.800683533437318570,	
+0.800653578059530970,	0.800623620680109500,	0.800593661299128350,	0.800563699916663650,	0.800533736532789700,	0.800503771147581420,	0.800473803761113660,	0.800443834373461340,	
+0.800413862984699520,	0.800383889594902480,	0.800353914204146260,	0.800323936812505240,	0.800293957420054380,	0.800263976026868720,	0.800233992633022970,	0.800204007238592310,	
+0.800174019843651660,	0.800144030448275420,	0.800114039052539640,	0.800084045656518690,	0.800054050260287640,	0.800024052863921530,	0.799994053467495300,	0.799964052071083900,	
+0.799934048674761810,	0.799904043278605200,	0.799874035882688350,	0.799844026487086520,	0.799814015091874660,	0.799784001697127600,	0.799753986302920720,	0.799723968909328730,	
+0.799693949516426360,	0.799663928124289660,	0.799633904732993120,	0.799603879342611790,	0.799573851953220840,	0.799543822564895200,	0.799513791177710040,	0.799483757791740410,	
+0.799453722407060810,	0.799423685023747390,	0.799393645641874870,	0.799363604261518200,	0.799333560882752430,	0.799303515505652820,	0.799273468130294430,	0.799243418756751870,	
+0.799213367385101290,	0.799183314015417200,	0.799153258647774980,	0.799123201282249450,	0.799093141918916010,	0.799063080557849690,	0.799033017199125670,	0.799002951842818670,	
+0.798972884489004720,	0.798942815137758560,	0.798912743789155330,	0.798882670443270330,	0.798852595100178590,	0.798822517759955390,	0.798792438422675890,	0.798762357088414810,	
+0.798732273757248310,	0.798702188429251110,	0.798672101104498490,	0.798642011783065600,	0.798611920465027710,	0.798581827150460000,	0.798551731839437170,	0.798521634532035510,	
+0.798491535228329830,	0.798461433928395300,	0.798431330632307090,	0.798401225340140690,	0.798371118051971140,	0.798341008767873840,	0.798310897487923500,	0.798280784212196390,	
+0.798250668940767350,	0.798220551673711640,	0.798190432411104540,	0.798160311153021440,	0.798130187899537490,	0.798100062650727530,	0.798069935406667930,	0.798039806167433530,	
+0.798009674933099600,	0.797979541703741520,	0.797949406479434580,	0.797919269260254030,	0.797889130046275490,	0.797858988837573450,	0.797828845634224510,	0.797798700436303410,	
+0.797768553243885630,	0.797738404057046440,	0.797708252875861220,	0.797678099700405370,	0.797647944530754270,	0.797617787366982740,	0.797587628209167400,	0.797557467057382840,	
+0.797527303911704790,	0.797497138772208290,	0.797466971638969070,	0.797436802512062390,	0.797406631391563200,	0.797376458277547880,	0.797346283170091490,	0.797316106069269390,	
+0.797285926975156990,	0.797255745887829770,	0.797225562807363230,	0.797195377733832760,	0.797165190667313280,	0.797135001607881420,	0.797104810555612000,	0.797074617510580510,	
+0.797044422472862560,	0.797014225442533530,	0.796984026419668920,	0.796953825404343790,	0.796923622396634500,	0.796893417396616230,	0.796863210404364470,	0.796833001419954610,	
+0.796802790443462250,	0.796772577474963000,	0.796742362514532230,	0.796712145562245010,	0.796681926618177940,	0.796651705682406060,	0.796621482755004990,	0.796591257836050120,	
+0.796561030925617250,	0.796530802023781680,	0.796500571130619120,	0.796470338246204610,	0.796440103370614770,	0.796409866503924760,	0.796379627646209950,	0.796349386797546190,	
+0.796319143958008850,	0.796288899127673750,	0.796258652306615860,	0.796228403494911860,	0.796198152692636830,	0.796167899899866470,	0.796137645116676280,	0.796107388343141990,	
+0.796077129579339290,	0.796046868825343700,	0.796016606081230480,	0.795986341347076130,	0.795956074622956140,	0.795925805908945790,	0.795895535205121020,	0.795865262511557310,	
+0.795834987828330620,	0.795804711155516320,	0.795774432493189690,	0.795744151841427660,	0.795713869200305180,	0.795683584569897960,	0.795653297950281830,	0.795623009341532410,	
+0.795592718743725500,	0.795562426156936290,	0.795532131581241590,	0.795501835016716450,	0.795471536463436820,	0.795441235921478310,	0.795410933390916620,	0.795380628871827700,	
+0.795350322364287270,	0.795320013868370370,	0.795289703384154060,	0.795259390911713380,	0.795229076451124280,	0.795198760002462590,	0.795168441565803910,	0.795138121141224060,	
+0.795107798728798440,	0.795077474328603870,	0.795047147940715630,	0.795016819565209420,	0.794986489202161310,	0.794956156851646890,	0.794925822513742110,	0.794895486188522790,	
+0.794865147876064100,	0.794834807576443200,	0.794804465289735250,	0.794774121016016080,	0.794743774755361730,	0.794713426507847820,	0.794683076273550390,	0.794652724052545280,	
+0.794622369844907860,	0.794592013650714970,	0.794561655470042090,	0.794531295302965070,	0.794500933149559830,	0.794470569009902320,	0.794440202884068250,	0.794409834772133230,	
+0.794379464674174090,	0.794349092590266310,	0.794318718520485860,	0.794288342464908540,	0.794257964423610410,	0.794227584396667300,	0.794197202384155250,	0.794166818386149780,	
+0.794136432402727690,	0.794106044433964490,	0.794075654479936220,	0.794045262540718830,	0.794014868616388260,	0.793984472707020550,	0.793954074812691650,	0.793923674933477040,	
+0.793893273069453790,	0.793862869220697260,	0.793832463387283640,	0.793802055569288840,	0.793771645766788940,	0.793741233979859960,	0.793710820208577190,	0.793680404453018020,	
+0.793649986713257930,	0.793619566989372750,	0.793589145281438650,	0.793558721589531670,	0.793528295913727980,	0.793497868254103510,	0.793467438610733770,	0.793437006983696010,	
+0.793406573373065750,	0.793376137778919130,	0.793345700201332100,	0.793315260640380830,	0.793284819096141350,	0.793254375568689270,	0.793223930058101880,	0.793193482564454650,	
+0.793163033087823650,	0.793132581628285150,	0.793102128185915080,	0.793071672760789830,	0.793041215352985330,	0.793010755962577200,	0.792980294589642810,	0.792949831234257660,	
+0.792919365896497920,	0.792888898576439740,	0.792858429274159390,	0.792827957989732930,	0.792797484723236520,	0.792767009474745880,	0.792736532244338270,	0.792706053032089410,	
+0.792675571838075350,	0.792645088662372380,	0.792614603505056640,	0.792584116366204410,	0.792553627245891400,	0.792523136144194780,	0.792492643061190380,	0.792462147996954360,	
+0.792431650951562980,	0.792401151925092420,	0.792370650917619050,	0.792340147929219030,	0.792309642959968090,	0.792279136009943600,	0.792248627079221170,	0.792218116167877300,	
+0.792187603275988140,	0.792157088403629860,	0.792126571550878960,	0.792096052717811580,	0.792065531904503570,	0.792035009111032310,	0.792004484337473390,	0.791973957583903320,	
+0.791943428850398480,	0.791912898137034920,	0.791882365443889120,	0.791851830771036940,	0.791821294118555730,	0.791790755486521220,	0.791760214875009800,	0.791729672284097850,	
+0.791699127713861860,	0.791668581164377880,	0.791638032635722520,	0.791607482127971610,	0.791576929641202410,	0.791546375175490980,	0.791515818730913480,	0.791485260307546510,	
+0.791454699905466460,	0.791424137524749600,	0.791393573165471880,	0.791363006827710660,	0.791332438511542110,	0.791301868217042290,	0.791271295944287910,	0.791240721693355240,	
+0.791210145464320780,	0.791179567257261020,	0.791148987072251670,	0.791118404909370470,	0.791087820768693330,	0.791057234650296540,	0.791026646554256700,	0.790996056480650190,	
+0.790965464429553620,	0.790934870401043270,	0.790904274395195280,	0.790873676412087170,	0.790843076451794860,	0.790812474514394850,	0.790781870599963630,	0.790751264708577710,	
+0.790720656840313670,	0.790690046995247480,	0.790659435173456710,	0.790628821375017330,	0.790598205600005820,	0.790567587848498900,	0.790536968120572950,	0.790506346416304680,	
+0.790475722735770380,	0.790445097079046420,	0.790414469446210080,	0.790383839837337730,	0.790353208252505660,	0.790322574691790570,	0.790291939155269190,	0.790261301643017780,	
+0.790230662155113170,	0.790200020691631420,	0.790169377252650130,	0.790138731838245460,	0.790108084448493790,	0.790077435083472060,	0.790046783743256650,	0.790016130427924400,	
+0.789985475137551240,	0.789954817872214890,	0.789924158631991500,	0.789893497416957690,	0.789862834227190170,	0.789832169062765540,	0.789801501923760530,	0.789770832810251730,	
+0.789740161722315430,	0.789709488660029100,	0.789678813623469140,	0.789648136612712160,	0.789617457627834750,	0.789586776668913750,	0.789556093736025750,	0.789525408829247040,	
+0.789494721948655330,	0.789464033094326890,	0.789433342266338320,	0.789402649464766350,	0.789371954689687790,	0.789341257941179380,	0.789310559219317700,	0.789279858524179150,	
+0.789249155855841540,	0.789218451214381060,	0.789187744599874400,	0.789157036012398390,	0.789126325452029760,	0.789095612918845330,	0.789064898412921820,	0.789034181934335610,	
+0.789003463483164410,	0.788972743059484620,	0.788942020663372930,	0.788911296294906310,	0.788880569954161340,	0.788849841641214860,	0.788819111356143350,	0.788788379099024660,	
+0.788757644869934940,	0.788726908668951120,	0.788696170496149930,	0.788665430351608520,	0.788634688235403390,	0.788603944147611590,	0.788573198088309280,	0.788542450057574620,	
+0.788511700055483880,	0.788480948082113780,	0.788450194137541360,	0.788419438221843460,	0.788388680335097010,	0.788357920477378740,	0.788327158648765240,	0.788296394849334340,	
+0.788265629079162420,	0.788234861338326540,	0.788204091626903410,	0.788173319944970090,	0.788142546292603500,	0.788111770669879920,	0.788080993076877510,	0.788050213513672550,	
+0.788019431980342080,	0.787988648476963040,	0.787957863003612480,	0.787927075560367120,	0.787896286147304230,	0.787865494764499960,	0.787834701412032490,	0.787803906089978300,	
+0.787773108798414330,	0.787742309537417640,	0.787711508307065040,	0.787680705107433820,	0.787649899938600240,	0.787619092800642460,	0.787588283693636980,	0.787557472617660740,	
+0.787526659572790780,	0.787495844559104260,	0.787465027576678130,	0.787434208625589330,	0.787403387705914560,	0.787372564817731880,	0.787341739961117670,	0.787310913136149200,	
+0.787280084342903420,	0.787249253581457480,	0.787218420851888310,	0.787187586154273200,	0.787156749488688520,	0.787125910855212440,	0.787095070253921670,	0.787064227684893260,	
+0.787033383148204260,	0.787002536643931830,	0.786971688172152910,	0.786940837732944320,	0.786909985326384230,	0.786879130952549130,	0.786848274611516190,	0.786817416303362550,	
+0.786786556028165500,	0.786755693786001850,	0.786724829576949110,	0.786693963401083770,	0.786663095258483990,	0.786632225149226480,	0.786601353073388410,	0.786570479031047040,	
+0.786539603022279320,	0.786508725047162740,	0.786477845105773680,	0.786446963198190630,	0.786416079324490200,	0.786385193484749450,	0.786354305679045850,	0.786323415907456360,	
+0.786292524170058460,	0.786261630466929210,	0.786230734798145310,	0.786199837163785050,	0.786168937563925360,	0.786138035998643180,	0.786107132468016000,	0.786076226972120980,	
+0.786045319511035400,	0.786014410084836410,	0.785983498693600960,	0.785952585337407310,	0.785921670016332170,	0.785890752730452840,	0.785859833479846670,	0.785828912264590950,	
+0.785797989084762840,	0.785767063940439270,	0.785736136831698520,	0.785705207758617520,	0.785674276721273430,	0.785643343719743760,	0.785612408754105650,	0.785581471824436490,	
+0.785550532930813670,	0.785519592073314010,	0.785488649252015890,	0.785457704466996140,	0.785426757718332260,	0.785395809006101290,	0.785364858330380830,	0.785333905691248390,	
+0.785302951088781010,	0.785271994523055740,	0.785241035994151070,	0.785210075502143830,	0.785179113047111300,	0.785148148629131070,	0.785117182248280530,	0.785086213904636950,	
+0.785055243598277270,	0.785024271329279990,	0.784993297097722140,	0.784962320903681010,	0.784931342747234080,	0.784900362628458750,	0.784869380547432600,	0.784838396504232930,	
+0.784807410498936760,	0.784776422531622610,	0.784745432602367400,	0.784714440711248520,	0.784683446858343680,	0.784652451043730160,	0.784621453267485450,	0.784590453529686700,	
+0.784559451830412200,	0.784528448169739210,	0.784497442547745010,	0.784466434964507300,	0.784435425420103360,	0.784404413914611020,	0.784373400448107550,	0.784342385020670000,	
+0.784311367632377080,	0.784280348283305730,	0.784249326973533560,	0.784218303703138050,	0.784187278472196710,	0.784156251280787250,	0.784125222128987160,	0.784094191016873500,	
+0.784063157944524860,	0.784032122912018290,	0.784001085919431520,	0.783970046966841920,	0.783939006054327200,	0.783907963181965100,	0.783876918349832420,	0.783845871558008000,	
+0.783814822806569000,	0.783783772095592800,	0.783752719425157230,	0.783721664795339890,	0.783690608206218390,	0.783659549657870440,	0.783628489150372980,	0.783597426683804830,	
+0.783566362258243050,	0.783535295873765470,	0.783504227530449680,	0.783473157228373300,	0.783442084967613920,	0.783411010748249480,	0.783379934570356820,	0.783348856434014970,	
+0.783317776339301000,	0.783286694286292500,	0.783255610275067290,	0.783224524305703110,	0.783193436378277540,	0.783162346492867870,	0.783131254649552910,	0.783100160848409830,	
+0.783069065089516240,	0.783037967372950060,	0.783006867698789020,	0.782975766067110720,	0.782944662477992990,	0.782913556931513100,	0.782882449427749870,	0.782851339966780580,	
+0.782820228548682830,	0.782789115173534560,	0.782757999841413480,	0.782726882552397420,	0.782695763306563650,	0.782664642103991000,	0.782633518944756630,	0.782602393828938590,	
+0.782571266756614480,	0.782540137727862350,	0.782509006742759690,	0.782477873801384670,	0.782446738903814330,	0.782415602050127720,	0.782384463240402010,	0.782353322474715230,	
+0.782322179753145220,	0.782291035075769690,	0.782259888442666470,	0.782228739853913610,	0.782197589309588380,	0.782166436809769720,	0.782135282354535000,	0.782104125943962060,	
+0.782072967578128720,	0.782041807257113030,	0.782010644980992820,	0.781979480749845470,	0.781948314563749910,	0.781917146422783650,	0.781885976327024390,	0.781854804276550300,	
+0.781823630271439200,	0.781792454311769030,	0.781761276397617610,	0.781730096529062560,	0.781698914706182800,	0.781667730929055730,	0.781636545197759270,	0.781605357512371590,	
+0.781574167872970400,	0.781542976279633870,	0.781511782732439820,	0.781480587231465850,	0.781449389776790900,	0.781418190368492470,	0.781386989006648710,	0.781355785691337350,	
+0.781324580422636530,	0.781293373200624200,	0.781262164025377960,	0.781230952896976860,	0.781199739815498400,	0.781168524781020500,	0.781137307793621450,	0.781106088853378950,	
+0.781074867960371400,	0.781043645114676500,	0.781012420316372080,	0.780981193565537080,	0.780949964862249100,	0.780918734206586310,	0.780887501598626520,	0.780856267038448130,	
+0.780825030526128950,	0.780793792061746710,	0.780762551645380550,	0.780731309277107990,	0.780700064957007170,	0.780668818685156250,	0.780637570461633180,	0.780606320286516220,	
+0.780575068159883420,	0.780543814081812390,	0.780512558052382510,	0.780481300071671160,	0.780450040139756500,	0.780418778256716790,	0.780387514422630100,	0.780356248637574690,	
+0.780324980901628610,	0.780293711214869570,	0.780262439577376730,	0.780231165989227820,	0.780199890450501090,	0.780168612961274490,	0.780137333521626400,	0.780106052131635090,	
+0.780074768791377940,	0.780043483500934550,	0.780012196260382320,	0.779980907069799720,	0.779949615929264820,	0.779918322838855870,	0.779887027798651040,	0.779855730808728720,	
+0.779824431869166500,	0.779793130980043770,	0.779761828141438240,	0.779730523353428070,	0.779699216616091650,	0.779667907929507240,	0.779636597293752900,	0.779605284708907220,	
+0.779573970175047700,	0.779542653692253840,	0.779511335260603230,	0.779480014880174380,	0.779448692551045540,	0.779417368273294890,	0.779386042047000900,	0.779354713872241200,	
+0.779323383749095270,	0.779292051677640820,	0.779260717657956350,	0.779229381690120020,	0.779198043774210310,	0.779166703910305400,	0.779135362098483770,	0.779104018338823150,	
+0.779072672631403120,	0.779041324976301300,	0.779009975373596290,	0.778978623823366250,	0.778947270325689670,	0.778915914880644930,	0.778884557488309760,	0.778853198148763860,	
+0.778821836862084950,	0.778790473628351410,	0.778759108447641730,	0.778727741320034310,	0.778696372245607390,	0.778665001224439710,	0.778633628256608870,	0.778602253342194570,	
+0.778570876481274540,	0.778539497673927490,	0.778508116920231590,	0.778476734220265420,	0.778445349574107380,	0.778413962981835960,	0.778382574443529100,	0.778351183959266390,	
+0.778319791529125670,	0.778288397153185430,	0.778257000831524270,	0.778225602564220690,	0.778194202351352950,	0.778162800192999220,	0.778131396089239090,	0.778099990040150400,	
+0.778068582045811750,	0.778037172106301630,	0.778005760221698540,	0.777974346392081180,	0.777942930617527840,	0.777911512898116660,	0.777880093233927260,	0.777848671625037680,	
+0.777817248071526300,	0.777785822573471840,	0.777754395130952900,	0.777722965744047980,	0.777691534412835010,	0.777660101137393700,	0.777628665917802220,	0.777597228754139060,	
+0.777565789646482930,	0.777534348594912220,	0.777502905599505630,	0.777471460660341900,	0.777440013777498830,	0.777408564951056260,	0.777377114181092340,	0.777345661467685690,	
+0.777314206810914790,	0.777282750210858460,	0.777251291667595210,	0.777219831181203750,	0.777188368751762120,	0.777156904379350140,	0.777125438064045880,	0.777093969805928040,	
+0.777062499605075230,	0.777031027461566270,	0.776999553375479660,	0.776968077346893660,	0.776936599375887990,	0.776905119462540820,	0.776873637606930960,	0.776842153809136900,	
+0.776810668069237490,	0.776779180387311310,	0.776747690763437300,	0.776716199197693520,	0.776684705690159680,	0.776653210240914160,	0.776621712850035560,	0.776590213517602820,	
+0.776558712243694440,	0.776527209028389230,	0.776495703871766030,	0.776464196773903100,	0.776432687734880170,	0.776401176754775490,	0.776369663833667900,	0.776338148971636110,	
+0.776306632168759060,	0.776275113425115350,	0.776243592740783250,	0.776212070115842810,	0.776180545550372190,	0.776149019044450220,	0.776117490598155600,	0.776085960211567390,	
+0.776054427884764200,	0.776022893617824950,	0.775991357410827920,	0.775959819263853050,	0.775928279176978600,	0.775896737150283510,	0.775865193183846500,	0.775833647277746620,	
+0.775802099432062580,	0.775770549646872640,	0.775738997922256980,	0.775707444258293850,	0.775675888655061980,	0.775644331112640530,	0.775612771631108200,	0.775581210210543940,	
+0.775549646851026670,	0.775518081552634690,	0.775486514315448020,	0.775454945139545160,	0.775423374025004940,	0.775391800971906190,	0.775360225980328050,	0.775328649050349260,	
+0.775297070182048850,	0.775265489375505210,	0.775233906630798500,	0.775202321948006980,	0.775170735327209590,	0.775139146768485390,	0.775107556271913300,	0.775075963837572380,	
+0.775044369465541010,	0.775012773155899230,	0.774981174908725530,	0.774949574724098870,	0.774917972602098270,	0.774886368542802790,	0.774854762546291380,	0.774823154612642950,	
+0.774791544741936230,	0.774759932934251160,	0.774728319189666230,	0.774696703508260480,	0.774665085890112960,	0.774633466335302830,	0.774601844843908930,	0.774570221416010510,	
+0.774538596051685960,	0.774506968751015430,	0.774475339514077430,	0.774443708340951220,	0.774412075231715620,	0.774380440186449910,	0.774348803205233030,	0.774317164288143680,	
+0.774285523435261910,	0.774253880646666340,	0.774222235922436110,	0.774190589262650270,	0.774158940667387880,	0.774127290136728210,	0.774095637670750290,	0.774063983269532740,	
+0.774032326933155820,	0.774000668661698030,	0.773969008455238640,	0.773937346313856580,	0.773905682237631340,	0.773874016226641760,	0.773842348280966650,	0.773810678400686180,	
+0.773779006585879060,	0.773747332836624450,	0.773715657153001390,	0.773683979535089270,	0.773652299982967250,	0.773620618496714370,	0.773588935076409470,	0.773557249722132690,	
+0.773525562433962870,	0.773493873211979150,	0.773462182056260720,	0.773430488966886820,	0.773398793943936740,	0.773367096987489620,	0.773335398097624300,	0.773303697274420940,	
+0.773271994517958360,	0.773240289828315830,	0.773208583205572510,	0.773176874649807780,	0.773145164161100910,	0.773113451739530500,	0.773081737385177050,	0.773050021098119270,	
+0.773018302878436430,	0.772986582726207790,	0.772954860641512750,	0.772923136624430570,	0.772891410675040410,	0.772859682793421320,	0.772827952979653570,	0.772796221233815860,	
+0.772764487555987590,	0.772732751946248130,	0.772701014404676870,	0.772669274931352960,	0.772637533526356000,	0.772605790189764500,	0.772574044921659150,	0.772542297722118690,	
+0.772510548591222480,	0.772478797529049910,	0.772447044535680360,	0.772415289611193100,	0.772383532755667180,	0.772351773969182980,	0.772320013251819200,	0.772288250603655580,	
+0.772256486024771150,	0.772224719515245630,	0.772192951075158280,	0.772161180704588610,	0.772129408403615320,	0.772097634172319140,	0.772065858010778870,	0.772034079919073910,	
+0.772002299897283860,	0.771970517945487880,	0.771938734063765790,	0.771906948252196190,	0.771875160510859800,	0.771843370839835560,	0.771811579239202850,	0.771779785709041160,	
+0.771747990249430080,	0.771716192860449010,	0.771684393542177440,	0.771652592294694300,	0.771620789118080300,	0.771588984012414270,	0.771557176977775820,	0.771525368014244430,	
+0.771493557121899600,	0.771461744300820820,	0.771429929551087800,	0.771398112872779260,	0.771366294265976140,	0.771334473730757140,	0.771302651267202100,	0.771270826875390390,	
+0.771239000555401510,	0.771207172307315280,	0.771175342131210420,	0.771143510027167860,	0.771111675995266530,	0.771079840035585940,	0.771048002148205790,	0.771016162333205690,	
+0.770984320590665130,	0.770952476920663710,	0.770920631323280590,	0.770888783798596490,	0.770856934346690450,	0.770825082967641960,	0.770793229661530850,	0.770761374428436620,	
+0.770729517268438970,	0.770697658181617510,	0.770665797168051390,	0.770633934227821340,	0.770602069361006390,	0.770570202567686380,	0.770538333847940790,	0.770506463201849350,	
+0.770474590629491750,	0.770442716130947170,	0.770410839706296310,	0.770378961355618340,	0.770347081078992970,	0.770315198876499910,	0.770283314748218870,	0.770251428694229580,	
+0.770219540714611630,	0.770187650809444290,	0.770155758978808500,	0.770123865222783200,	0.770091969541448210,	0.770060071934883350,	0.770028172403168340,	0.769996270946382790,	
+0.769964367564606180,	0.769932462257919110,	0.769900555026400870,	0.769868645870131260,	0.769836734789190010,	0.769804821783656950,	0.769772906853611880,	0.769740989999134430,	
+0.769709071220303960,	0.769677150517201540,	0.769645227889906080,	0.769613303338497530,	0.769581376863055830,	0.769549448463660690,	0.769517518140391930,	0.769485585893329270,	
+0.769453651722552090,	0.769421715628141430,	0.769389777610176460,	0.769357837668737000,	0.769325895803902980,	0.769293952015754230,	0.769262006304370580,	0.769230058669831410,	
+0.769198109112217640,	0.769166157631608560,	0.769134204228084100,	0.769102248901724070,	0.769070291652608540,	0.769038332480817210,	0.769006371386430020,	0.768974408369526460,	
+0.768942443430187250,	0.768910476568492100,	0.768878507784520710,	0.768846537078353040,	0.768814564450069020,	0.768782589899748570,	0.768750613427471090,	0.768718635033317720,	
+0.768686654717367630,	0.768654672479700980,	0.768622688320397710,	0.768590702239537630,	0.768558714237200790,	0.768526724313467250,	0.768494732468416260,	0.768462738702129000,	
+0.768430743014684950,	0.768398745406163930,	0.768366745876646220,	0.768334744426211520,	0.768302741054940010,	0.768270735762911610,	0.768238728550205810,	0.768206719416903770,	
+0.768174708363084880,	0.768142695388829290,	0.768110680494216940,	0.768078663679327870,	0.768046644944242240,	0.768014624289039330,	0.767982601713800390,	0.767950577218605050,	
+0.767918550803533220,	0.767886522468665070,	0.767854492214080530,	0.767822460039859770,	0.767790425946082930,	0.767758389932829300,	0.767726352000180470,	0.767694312148215600,	
+0.767662270377015070,	0.767630226686658810,	0.767598181077226990,	0.767566133548799660,	0.767534084101457070,	0.767502032735278620,	0.767469979450345790,	0.767437924246737960,	
+0.767405867124535180,	0.767373808083817940,	0.767341747124666070,	0.767309684247159840,	0.767277619451378850,	0.767245552737404360,	0.767213484105315980,	0.767181413555193980,	
+0.767149341087118300,	0.767117266701169420,	0.767085190397427290,	0.767053112175972160,	0.767021032036883770,	0.766988949980243250,	0.766956866006130440,	0.766924780114625390,	
+0.766892692305808480,	0.766860602579759850,	0.766828510936559680,	0.766796417376287560,	0.766764321899025100,	0.766732224504851790,	0.766700125193847890,	0.766668023966093680,	
+0.766635920821669540,	0.766603815760655500,	0.766571708783131860,	0.766539599889178410,	0.766507489078876560,	0.766475376352306000,	0.766443261709547020,	0.766411145150679870,	
+0.766379026675784840,	0.766346906284942180,	0.766314783978232380,	0.766282659755734950,	0.766250533617531480,	0.766218405563701690,	0.766186275594325950,	0.766154143709484430,	
+0.766122009909257500,	0.766089874193725650,	0.766057736562968490,	0.766025597017067630,	0.765993455556102650,	0.765961312180154060,	0.765929166889302240,	0.765897019683627560,	
+0.765864870563210290,	0.765832719528130810,	0.765800566578468960,	0.765768411714306320,	0.765736254935722620,	0.765704096242798230,	0.765671935635613640,	0.765639773114249240,	
+0.765607608678785300,	0.765575442329302520,	0.765543274065880410,	0.765511103888600770,	0.765478931797543340,	0.765446757792788590,	0.765414581874416910,	0.765382404042508790,	
+0.765350224297144610,	0.765318042638404420,	0.765285859066369590,	0.765253673581120180,	0.765221486182736670,	0.765189296871299220,	0.765157105646888660,	0.765124912509585360,	
+0.765092717459469720,	0.765060520496621770,	0.765028321621123110,	0.764996120833053570,	0.764963918132493760,	0.764931713519524160,	0.764899506994225260,	0.764867298556677570,	
+0.764835088206961110,	0.764802875945157500,	0.764770661771346670,	0.764738445685609220,	0.764706227688025650,	0.764674007778676450,	0.764641785957642320,	0.764609562225003650,	
+0.764577336580840480,	0.764545109025234650,	0.764512879558265970,	0.764480648180015150,	0.764448414890562700,	0.764416179689989210,	0.764383942578375160,	0.764351703555801400,	
+0.764319462622347730,	0.764287219778095990,	0.764254975023126230,	0.764222728357519030,	0.764190479781355010,	0.764158229294714770,	0.764125976897678920,	0.764093722590327600,	
+0.764061466372742530,	0.764029208245003870,	0.763996948207192110,	0.763964686259387960,	0.763932422401672140,	0.763900156634125250,	0.763867888956828000,	0.763835619369860440,	
+0.763803347873304390,	0.763771074467239910,	0.763738799151747920,	0.763706521926908800,	0.763674242792803380,	0.763641961749512380,	0.763609678797116500,	0.763577393935695790,	
+0.763545107165332190,	0.763512818486105860,	0.763480527898097390,	0.763448235401387730,	0.763415940996057360,	0.763383644682187220,	0.763351346459857360,	0.763319046329149710,	
+0.763286744290144540,	0.763254440342922340,	0.763222134487564150,	0.763189826724150590,	0.763157517052762470,	0.763125205473480510,	0.763092891986385080,	0.763060576591557900,	
+0.763028259289079360,	0.762995940079030040,	0.762963618961490900,	0.762931295936542850,	0.762898971004266400,	0.762866644164742040,	0.762834315418051690,	0.762801984764275410,	
+0.762769652203494240,	0.762737317735789010,	0.762704981361240320,	0.762672643079929320,	0.762640302891936630,	0.762607960797342720,	0.762575616796229430,	0.762543270888677020,	
+0.762510923074766530,	0.762478573354578690,	0.762446221728194430,	0.762413868195694570,	0.762381512757160040,	0.762349155412671230,	0.762316796162310070,	0.762284435006156950,	
+0.762252071944292680,	0.762219706976798190,	0.762187340103754550,	0.762154971325242570,	0.762122600641342520,	0.762090228052136550,	0.762057853557704950,	0.762025477158128850,	
+0.761993098853488980,	0.761960718643866390,	0.761928336529342000,	0.761895952509996640,	0.761863566585911030,	0.761831178757166990,	0.761798789023845010,	0.761766397386026030,	
+0.761734003843791090,	0.761701608397221120,	0.761669211046397180,	0.761636811791400080,	0.761604410632310550,	0.761572007569210400,	0.761539602602180340,	0.761507195731301320,	
+0.761474786956654160,	0.761442376278320120,	0.761409963696380140,	0.761377549210914720,	0.761345132822005890,	0.761312714529734260,	0.761280294334180980,	0.761247872235426780,	
+0.761215448233553030,	0.761183022328640550,	0.761150594520770610,	0.761118164810023590,	0.761085733196481650,	0.761053299680225500,	0.761020864261336080,	0.760988426939894440,	
+0.760955987715981720,	0.760923546589679090,	0.760891103561067040,	0.760858658630227720,	0.760826211797241750,	0.760793763062190380,	0.760761312425154430,	0.760728859886215300,	
+0.760696405445454030,	0.760663949102951760,	0.760631490858789010,	0.760599030713048130,	0.760566568665809630,	0.760534104717154770,	0.760501638867164600,	0.760469171115920270,	
+0.760436701463503170,	0.760404229909994230,	0.760371756455474060,	0.760339281100025130,	0.760306803843728060,	0.760274324686664000,	0.760241843628914000,	0.760209360670559550,	
+0.760176875811681580,	0.760144389052360920,	0.760111900392679730,	0.760079409832718930,	0.760046917372559580,	0.760014423012282950,	0.759981926751970180,	0.759949428591702670,	
+0.759916928531561560,	0.759884426571627470,	0.759851922711982990,	0.759819416952708710,	0.759786909293885810,	0.759754399735595780,	0.759721888277919640,	0.759689374920938800,	
+0.759656859664733950,	0.759624342509387480,	0.759591823454980220,	0.759559302501593430,	0.759526779649308370,	0.759494254898206210,	0.759461728248368550,	0.759429199699876540,	
+0.759396669252811020,	0.759364136907254350,	0.759331602663287360,	0.759299066520991330,	0.759266528480447620,	0.759233988541737630,	0.759201446704942610,	0.759168902970144050,	
+0.759136357337422680,	0.759103809806860870,	0.759071260378539670,	0.759038709052540230,	0.759006155828944040,	0.758973600707832490,	0.758941043689286830,	0.758908484773388130,	
+0.758875923960218750,	0.758843361249859520,	0.758810796642391930,	0.758778230137897250,	0.758745661736457080,	0.758713091438152800,	0.758680519243065680,	0.758647945151276760,	
+0.758615369162868540,	0.758582791277921940,	0.758550211496518360,	0.758517629818739160,	0.758485046244665950,	0.758452460774380110,	0.758419873407963130,	0.758387284145495830,	
+0.758354692987060930,	0.758322099932739360,	0.758289504982612490,	0.758256908136761830,	0.758224309395268970,	0.758191708758215290,	0.758159106225681720,	0.758126501797750980,	
+0.758093895474504120,	0.758061287256022400,	0.758028677142387530,	0.757996065133680900,	0.757963451229984100,	0.757930835431378740,	0.757898217737945630,	0.757865598149767620,	
+0.757832976666925620,	0.757800353289501130,	0.757767728017575750,	0.757735100851231080,	0.757702471790548620,	0.757669840835609510,	0.757637207986496250,	0.757604573243290110,	
+0.757571936606072470,	0.757539298074924930,	0.757506657649929190,	0.757474015331166760,	0.757441371118719340,	0.757408725012667980,	0.757376077013095280,	0.757343427120082400,	
+0.757310775333711050,	0.757278121654062720,	0.757245466081219010,	0.757212808615261630,	0.757180149256272310,	0.757147488004331960,	0.757114824859523640,	0.757082159821928060,	
+0.757049492891627150,	0.757016824068702520,	0.756984153353235770,	0.756951480745308710,	0.756918806245002410,	0.756886129852399670,	0.756853451567581550,	0.756820771390629750,	
+0.756788089321626110,	0.756755405360652110,	0.756722719507789470,	0.756690031763120220,	0.756657342126725970,	0.756624650598688330,	0.756591957179088780,	0.756559261868009590,	
+0.756526564665532360,	0.756493865571738590,	0.756461164586709870,	0.756428461710528580,	0.756395756943276100,	0.756363050285034030,	0.756330341735884540,	0.756297631295909210,	
+0.756264918965189770,	0.756232204743807810,	0.756199488631845610,	0.756166770629384640,	0.756134050736506860,	0.756101328953293520,	0.756068605279827220,	0.756035879716189460,	
+0.756003152262461840,	0.755970422918726180,	0.755937691685064750,	0.755904958561559040,	0.755872223548290980,	0.755839486645341950,	0.755806747852794670,	0.755774007170730400,	
+0.755741264599231190,	0.755708520138378530,	0.755675773788254790,	0.755643025548941690,	0.755610275420520620,	0.755577523403074270,	0.755544769496684140,	0.755512013701431950,	
+0.755479256017399510,	0.755446496444669210,	0.755413734983322760,	0.755380971633441870,	0.755348206395108250,	0.755315439268404390,	0.755282670253412000,	0.755249899350212920,	
+0.755217126558888730,	0.755184351879522150,	0.755151575312194570,	0.755118796856988130,	0.755086016513984330,	0.755053234283265870,	0.755020450164914260,	0.754987664159011200,	
+0.754954876265639400,	0.754922086484880350,	0.754889294816815990,	0.754856501261528260,	0.754823705819099410,	0.754790908489611390,	0.754758109273146130,	0.754725308169785230,	
+0.754692505179611390,	0.754659700302706240,	0.754626893539151910,	0.754594084889030010,	0.754561274352423260,	0.754528461929413250,	0.754495647620082140,	0.754462831424511540,	
+0.754430013342784140,	0.754397193374981790,	0.754364371521186180,	0.754331547781479930,	0.754298722155944730,	0.754265894644662760,	0.754233065247715830,	0.754200233965186430,	
+0.754167400797156500,	0.754134565743708070,	0.754101728804922880,	0.754068889980883730,	0.754036049271672340,	0.754003206677370750,	0.753970362198060910,	0.753937515833825510,	
+0.753904667584746280,	0.753871817450905370,	0.753838965432384600,	0.753806111529266690,	0.753773255741633560,	0.753740398069567270,	0.753707538513149760,	0.753674677072463610,	
+0.753641813747590760,	0.753608948538613150,	0.753576081445613500,	0.753543212468673510,	0.753510341607875560,	0.753477468863301470,	0.753444594235033960,	0.753411717723155070,	
+0.753378839327746740,	0.753345959048891120,	0.753313076886670820,	0.753280192841167870,	0.753247306912464440,	0.753214419100642460,	0.753181529405784760,	0.753148637827973140,	
+0.753115744367290010,	0.753082849023817280,	0.753049951797637560,	0.753017052688833120,	0.752984151697485670,	0.752951248823678140,	0.752918344067492470,	0.752885437429010930,	
+0.752852528908315550,	0.752819618505489060,	0.752786706220613610,	0.752753792053771350,	0.752720876005044340,	0.752687958074515500,	0.752655038262266650,	0.752622116568380290,	
+0.752589192992938250,	0.752556267536023670,	0.752523340197718270,	0.752490410978104650,	0.752457479877264630,	0.752424546895281150,	0.752391612032236370,	0.752358675288212320,	
+0.752325736663291830,	0.752292796157556950,	0.752259853771090060,	0.752226909503973310,	0.752193963356289630,	0.752161015328120960,	0.752128065419549800,	0.752095113630658170,	
+0.752062159961529030,	0.752029204412244520,	0.751996246982886920,	0.751963287673538480,	0.751930326484282150,	0.751897363415199970,	0.751864398466374320,	0.751831431637887460,	
+0.751798462929822220,	0.751765492342260980,	0.751732519875285550,	0.751699545528979220,	0.751666569303424010,	0.751633591198702320,	0.751600611214896410,	0.751567629352089320,	
+0.751534645610363090,	0.751501659989800120,	0.751468672490482880,	0.751435683112494200,	0.751402691855916350,	0.751369698720831810,	0.751336703707322640,	0.751303706815471980,	
+0.751270708045362110,	0.751237707397075520,	0.751204704870694240,	0.751171700466301660,	0.751138694183979600,	0.751105686023811000,	0.751072675985877790,	0.751039664070263240,	
+0.751006650277049490,	0.750973634606318940,	0.750940617058154510,	0.750907597632638480,	0.750874576329853440,	0.750841553149881770,	0.750808528092806520,	0.750775501158709830,	
+0.750742472347674550,	0.750709441659782590,	0.750676409095117460,	0.750643374653761300,	0.750610338335796710,	0.750577300141305860,	0.750544260070372230,	0.750511218123077860,	
+0.750478174299505470,	0.750445128599737330,	0.750412081023856700,	0.750379031571945740,	0.750345980244087050,	0.750312927040363680,	0.750279871960857990,	0.750246815005652600,	
+0.750213756174829880,	0.750180695468473100,	0.750147632886664530,	0.750114568429486870,	0.750081502097022510,	0.750048433889354720,	0.750015363806565860,	0.749982291848738440,	
+0.749949218015955150,	0.749916142308299060,	0.749883064725852640,	0.749849985268698500,	0.749816903936919240,	0.749783820730597910,	0.749750735649816980,	0.749717648694659070,	
+0.749684559865207210,	0.749651469161543900,	0.749618376583752080,	0.749585282131914000,	0.749552185806112830,	0.749519087606431380,	0.749485987532952150,	0.749452885585757620,	
+0.749419781764931290,	0.749386676070555310,	0.749353568502712840,	0.749320459061486030,	0.749287347746958490,	0.749254234559212470,	0.749221119498330920,	0.749188002564396220,	
+0.749154883757491840,	0.749121763077700180,	0.749088640525104270,	0.749055516099786270,	0.749022389801830000,	0.748989261631317630,	0.748956131588331740,	0.748922999672955950,	
+0.748889865885272510,	0.748856730225364590,	0.748823592693314440,	0.748790453289205570,	0.748757312013120680,	0.748724168865142480,	0.748691023845353460,	0.748657876953837230,	
+0.748624728190676380,	0.748591577555953620,	0.748558425049751670,	0.748525270672153910,	0.748492114423243040,	0.748458956303101890,	0.748425796311813050,	0.748392634449459910,	
+0.748359470716125300,	0.748326305111891690,	0.748293137636842580,	0.748259968291060670,	0.748226797074628800,	0.748193623987629670,	0.748160449030146670,	0.748127272202262720,	
+0.748094093504060530,	0.748060912935622710,	0.748027730497032970,	0.747994546188373910,	0.747961360009728570,	0.747928171961179440,	0.747894982042810240,	0.747861790254703450,	
+0.747828596596942340,	0.747795401069609290,	0.747762203672788120,	0.747729004406561430,	0.747695803271012040,	0.747662600266223330,	0.747629395392278130,	0.747596188649259360,	
+0.747562980037249970,	0.747529769556333320,	0.747496557206592360,	0.747463342988109900,	0.747430126900968880,	0.747396908945252790,	0.747363689121044340,	0.747330467428426680,	
+0.747297243867482750,	0.747264018438295820,	0.747230791140948920,	0.747197561975525000,	0.747164330942106880,	0.747131098040778370,	0.747097863271621980,	0.747064626634720620,	
+0.747031388130158010,	0.746998147758016980,	0.746964905518380570,	0.746931661411331490,	0.746898415436953680,	0.746865167595329730,	0.746831917886543020,	0.746798666310676150,	
+0.746765412867812840,	0.746732157558036120,	0.746698900381428830,	0.746665641338074120,	0.746632380428055580,	0.746599117651456030,	0.746565853008358760,	0.746532586498846570,	
+0.746499318123003190,	0.746466047880911530,	0.746432775772654770,	0.746399501798315710,	0.746366225957978190,	0.746332948251725140,	0.746299668679639370,	0.746266387241804830,	
+0.746233103938304220,	0.746199818769220920,	0.746166531734637760,	0.746133242834638550,	0.746099952069306240,	0.746066659438724080,	0.746033364942974900,	0.746000068582142630,	
+0.745966770356310200,	0.745933470265560890,	0.745900168309977630,	0.745866864489644120,	0.745833558804643530,	0.745800251255059000,	0.745766941840973590,	0.745733630562471110,	
+0.745700317419634610,	0.745667002412546910,	0.745633685541292060,	0.745600366805952990,	0.745567046206613070,	0.745533723743355140,	0.745500399416263230,	0.745467073225420270,	
+0.745433745170909770,	0.745400415252814420,	0.745367083471218490,	0.745333749826204710,	0.745300414317856760,	0.745267076946257270,	0.745233737711490480,	0.745200396613639350,	
+0.745167053652787240,	0.745133708829017190,	0.745100362142413150,	0.745067013593058160,	0.745033663181035370,	0.745000310906428710,	0.744966956769321340,	0.744933600769796530,	
+0.744900242907937440,	0.744866883183827990,	0.744833521597551450,	0.744800158149190980,	0.744766792838829850,	0.744733425666552100,	0.744700056632440770,	0.744666685736579240,	
+0.744633312979050670,	0.744599938359939210,	0.744566561879327790,	0.744533183537300140,	0.744499803333939060,	0.744466421269328830,	0.744433037343552590,	0.744399651556693740,	
+0.744366263908835420,	0.744332874400061790,	0.744299483030455900,	0.744266089800101120,	0.744232694709081380,	0.744199297757479840,	0.744165898945380100,	0.744132498272865320,	
+0.744099095740019530,	0.744065691346926020,	0.744032285093668370,	0.743998876980329630,	0.743965467006994060,	0.743932055173744720,	0.743898641480665310,	0.743865225927838990,	
+0.743831808515349910,	0.743798389243281340,	0.743764968111716660,	0.743731545120739470,	0.743698120270433580,	0.743664693560882380,	0.743631264992169250,	0.743597834564378110,	
+0.743564402277592570,	0.743530968131895900,	0.743497532127371570,	0.743464094264103540,	0.743430654542175500,	0.743397212961670720,	0.743363769522672580,	0.743330324225265350,	
+0.743296877069532290,	0.743263428055557120,	0.743229977183422990,	0.743196524453214270,	0.743163069865014240,	0.743129613418906490,	0.743096155114974510,	0.743062694953302350,	
+0.743029232933973380,	0.742995769057071210,	0.742962303322679760,	0.742928835730882640,	0.742895366281763340,	0.742861894975405450,	0.742828421811893010,	0.742794946791309640,	
+0.742761469913738810,	0.742727991179264020,	0.742694510587969540,	0.742661028139938840,	0.742627543835255530,	0.742594057674003110,	0.742560569656265710,	0.742527079782127060,	
+0.742493588051670650,	0.742460094464979850,	0.742426599022139260,	0.742393101723232140,	0.742359602568341990,	0.742326101557553080,	0.742292598690948880,	0.742259093968613340,	
+0.742225587390629600,	0.742192078957082280,	0.742158568668054740,	0.742125056523630810,	0.742091542523893870,	0.742058026668928390,	0.742024508958817890,	0.741990989393646050,	
+0.741957467973496490,	0.741923944698453570,	0.741890419568600800,	0.741856892584021880,	0.741823363744800510,	0.741789833051020970,	0.741756300502766970,	0.741722766100122110,	
+0.741689229843170090,	0.741655691731995300,	0.741622151766681230,	0.741588609947311460,	0.741555066273970610,	0.741521520746741940,	0.741487973365709600,	0.741454424130956860,	
+0.741420873042568430,	0.741387320100627910,	0.741353765305219010,	0.741320208656425450,	0.741286650154331590,	0.741253089799021160,	0.741219527590577960,	0.741185963529085720,	
+0.741152397614628810,	0.741118829847290940,	0.741085260227155930,	0.741051688754307490,	0.741018115428830230,	0.740984540250807620,	0.740950963220323280,	0.740917384337461900,	
+0.740883803602307100,	0.740850221014942690,	0.740816636575452490,	0.740783050283921000,	0.740749462140431910,	0.740715872145069070,	0.740682280297916380,	0.740648686599058250,	
+0.740615091048578260,	0.740581493646560670,	0.740547894393089100,	0.740514293288248030,	0.740480690332121270,	0.740447085524792660,	0.740413478866346120,	0.740379870356866250,	
+0.740346259996436550,	0.740312647785141050,	0.740279033723064140,	0.740245417810289740,	0.740211800046901680,	0.740178180432983890,	0.740144558968620970,	0.740110935653896520,	
+0.740077310488894910,	0.740043683473699640,	0.740010054608395420,	0.739976423893066060,	0.739942791327795720,	0.739909156912668120,	0.739875520647767850,	0.739841882533178730,	
+0.739808242568985030,	0.739774600755270350,	0.739740957092119510,	0.739707311579616220,	0.739673664217844750,	0.739640015006888700,	0.739606363946832990,	0.739572711037761340,	
+0.739539056279757690,	0.739505399672906630,	0.739471741217291980,	0.739438080912998120,	0.739404418760108760,	0.739370754758708500,	0.739337088908881500,	0.739303421210711800,	
+0.739269751664283100,	0.739236080269680460,	0.739202407026987580,	0.739168731936288630,	0.739135054997667630,	0.739101376211209190,	0.739067695576997470,	0.739034013095116290,	
+0.739000328765649920,	0.738966642588683050,	0.738932954564299530,	0.738899264692583270,	0.738865572973619210,	0.738831879407491290,	0.738798183994283540,	0.738764486734080130,	
+0.738730787626965760,	0.738697086673024470,	0.738663383872340320,	0.738629679224997560,	0.738595972731080800,	0.738562264390674180,	0.738528554203861880,	0.738494842170727810,	
+0.738461128291357130,	0.738427412565833440,	0.738393694994241350,	0.738359975576664660,	0.738326254313188320,	0.738292531203896370,	0.738258806248872750,	0.738225079448202480,	
+0.738191350801969510,	0.738157620310258110,	0.738123887973152430,	0.738090153790737280,	0.738056417763096720,	0.738022679890315110,	0.737988940172476520,	0.737955198609665960,	
+0.737921455201967280,	0.737887709949465060,	0.737853962852243250,	0.737820213910386770,	0.737786463123979770,	0.737752710493106640,	0.737718956017851420,	0.737685199698299150,	
+0.737651441534533880,	0.737617681526639650,	0.737583919674701600,	0.737550155978803690,	0.737516390439030390,	0.737482623055465860,	0.737448853828195030,	0.737415082757302050,	
+0.737381309842871420,	0.737347535084987180,	0.737313758483734370,	0.737279980039197150,	0.737246199751460110,	0.737212417620607190,	0.737178633646723420,	0.737144847829893310,	
+0.737111060170200890,	0.737077270667730540,	0.737043479322567420,	0.737009686134795450,	0.736975891104499350,	0.736942094231763270,	0.736908295516672250,	0.736874494959310460,	
+0.736840692559762030,	0.736806888318112250,	0.736773082234445260,	0.736739274308845560,	0.736705464541397400,	0.736671652932185840,	0.736637839481295130,	0.736604024188809880,	
+0.736570207054814240,	0.736536388079393370,	0.736502567262631520,	0.736468744604613420,	0.736434920105423000,	0.736401093765145510,	0.736367265583865450,	0.736333435561667080,	
+0.736299603698634900,	0.736265769994854050,	0.736231934450408690,	0.736198097065383190,	0.736164257839862830,	0.736130416773931760,	0.736096573867674690,	0.736062729121175870,	
+0.736028882534520480,	0.735995034107792990,	0.735961183841077780,	0.735927331734459460,	0.735893477788023050,	0.735859622001852950,	0.735825764376033750,	0.735791904910649830,	
+0.735758043605786560,	0.735724180461528100,	0.735690315477959160,	0.735656448655164220,	0.735622579993228440,	0.735588709492236090,	0.735554837152271770,	0.735520962973420730,	
+0.735487086955767140,	0.735453209099395930,	0.735419329404391360,	0.735385447870838700,	0.735351564498822440,	0.735317679288427390,	0.735283792239737720,	0.735249903352839020,	
+0.735216012627815330,	0.735182120064751810,	0.735148225663732610,	0.735114329424843120,	0.735080431348167920,	0.735046531433791510,	0.735012629681798480,	0.734978726092274210,	
+0.734944820665303090,	0.734910913400970030,	0.734877004299359320,	0.734843093360556420,	0.734809180584645730,	0.734775265971711830,	0.734741349521840110,	0.734707431235114950,	
+0.734673511111621160,	0.734639589151443450,	0.734605665354666980,	0.734571739721376350,	0.734537812251656370,	0.734503882945591550,	0.734469951803267350,	0.734436018824768280,	
+0.734402084010179150,	0.734368147359584440,	0.734334208873069770,	0.734300268550719500,	0.734266326392618570,	0.734232382398851470,	0.734198436569503790,	0.734164488904660130,	
+0.734130539404404760,	0.734096588068823390,	0.734062634898000610,	0.734028679892021140,	0.733994723050969800,	0.733960764374931850,	0.733926803863992010,	0.733892841518235190,	
+0.733858877337746020,	0.733824911322609850,	0.733790943472911410,	0.733756973788735720,	0.733723002270167180,	0.733689028917291490,	0.733655053730193240,	0.733621076708957260,	
+0.733587097853668380,	0.733553117164412070,	0.733519134641272940,	0.733485150284335700,	0.733451164093685830,	0.733417176069408040,	0.733383186211587380,	0.733349194520308330,	
+0.733315200995656720,	0.733281205637717040,	0.733247208446574430,	0.733213209422313380,	0.733179208565019720,	0.733145205874777940,	0.733111201351673290,	0.733077194995790160,	
+0.733043186807214480,	0.733009176786030730,	0.732975164932324060,	0.732941151246179310,	0.732907135727681850,	0.732873118376916600,	0.732839099193968170,	0.732805078178922380,	
+0.732771055331863820,	0.732737030652877760,	0.732703004142048700,	0.732668975799462440,	0.732634945625203820,	0.732600913619357750,	0.732566879782009180,	0.732532844113243600,	
+0.732498806613146040,	0.732464767281801320,	0.732430726119294500,	0.732396683125711160,	0.732362638301136020,	0.732328591645654340,	0.732294543159350830,	0.732260492842311430,	
+0.732226440694620620,	0.732192386716363770,	0.732158330907625610,	0.732124273268492050,	0.732090213799047710,	0.732056152499377500,	0.732022089369567250,	0.731988024409701900,	
+0.731953957619866370,	0.731919889000145600,	0.731885818550625510,	0.731851746271390710,	0.731817672162526690,	0.731783596224118150,	0.731749518456251020,	0.731715438859009910,	
+0.731681357432480310,	0.731647274176747020,	0.731613189091895770,	0.731579102178011700,	0.731545013435179750,	0.731510922863484960,	0.731476830463013260,	0.731442736233849370,	
+0.731408640176078430,	0.731374542289786160,	0.731340442575057480,	0.731306341031977780,	0.731272237660631870,	0.731238132461105690,	0.731204025433484170,	0.731169916577852570,	
+0.731135805894295940,	0.731101693382900100,	0.731067579043749970,	0.731033462876930830,	0.730999344882527820,	0.730965225060626780,	0.730931103411312620,	0.730896979934670730,	
+0.730862854630786040,	0.730828727499744590,	0.730794598541631310,	0.730760467756531140,	0.730726335144530230,	0.730692200705713390,	0.730658064440166120,	0.730623926347973350,	
+0.730589786429221010,	0.730555644683994250,	0.730521501112378460,	0.730487355714458550,	0.730453208490320470,	0.730419059440049480,	0.730384908563730840,	0.730350755861449600,	
+0.730316601333291790,	0.730282444979342360,	0.730248286799686900,	0.730214126794410450,	0.730179964963598940,	0.730145801307337640,	0.730111635825711700,	0.730077468518806390,	
+0.730043299386707760,	0.730009128429500830,	0.729974955647270880,	0.729940781040103740,	0.729906604608084650,	0.729872426351299010,	0.729838246269832180,	0.729804064363769880,	
+0.729769880633197480,	0.729735695078200350,	0.729701507698863660,	0.729667318495273550,	0.729633127467515070,	0.729598934615673930,	0.729564739939835060,	0.729530543440084610,	
+0.729496345116507740,	0.729462144969190150,	0.729427942998216890,	0.729393739203674010,	0.729359533585646760,	0.729325326144220410,	0.729291116879481120,	0.729256905791513920,	
+0.729222692880404530,	0.729188478146237990,	0.729154261589100680,	0.729120043209077640,	0.729085823006254570,	0.729051600980716640,	0.729017377132549880,	0.728983151461839900,	
+0.728948923968671840,	0.728914694653131300,	0.728880463515304220,	0.728846230555276090,	0.728811995773132270,	0.728777759168958150,	0.728743520742840100,	0.728709280494863050,	
+0.728675038425112610,	0.728640794533674920,	0.728606548820635140,	0.728572301286078970,	0.728538051930091910,	0.728503800752759890,	0.728469547754168390,	0.728435292934403010,	
+0.728401036293549130,	0.728366777831693010,	0.728332517548919810,	0.728298255445315460,	0.728263991520964990,	0.728229725775955020,	0.728195458210370680,	0.728161188824297700,	
+0.728126917617821330,	0.728092644591028180,	0.728058369744003290,	0.728024093076832470,	0.727989814589601100,	0.727955534282395570,	0.727921252155301120,	0.727886968208403370,	
+0.727852682441788360,	0.727818394855541670,	0.727784105449749030,	0.727749814224495920,	0.727715521179868490,	0.727681226315952220,	0.727646929632832840,	0.727612631130595930,	
+0.727578330809327770,	0.727544028669113720,	0.727509724710039610,	0.727475418932190920,	0.727441111335653920,	0.727406801920514210,	0.727372490686857390,	0.727338177634769160,	
+0.727303862764335670,	0.727269546075642650,	0.727235227568775460,	0.727200907243820360,	0.727166585100863070,	0.727132261139989410,	0.727097935361284640,	0.727063607764835470,	
+0.727029278350727170,	0.726994947119045780,	0.726960614069876660,	0.726926279203306320,	0.726891942519420240,	0.726857604018304350,	0.726823263700044130,	0.726788921564726080,	
+0.726754577612435670,	0.726720231843258850,	0.726685884257281200,	0.726651534854589000,	0.726617183635268060,	0.726582830599403980,	0.726548475747082920,	0.726514119078390700,	
+0.726479760593413350,	0.726445400292236140,	0.726411038174945790,	0.726376674241627770,	0.726342308492368140,	0.726307940927252480,	0.726273571546367180,	0.726239200349797940,	
+0.726204827337630810,	0.726170452509951270,	0.726136075866845810,	0.726101697408400250,	0.726067317134700410,	0.726032935045832000,	0.725998551141881610,	0.725964165422934740,	
+0.725929777889077200,	0.725895388540395480,	0.725860997376975290,	0.725826604398902680,	0.725792209606263120,	0.725757812999143440,	0.725723414577629230,	0.725689014341806440,	
+0.725654612291760870,	0.725620208427579020,	0.725585802749346700,	0.725551395257149840,	0.725516985951074170,	0.725482574831206370,	0.725448161897632170,	0.725413747150437490,	
+0.725379330589708160,	0.725344912215530880,	0.725310492027991250,	0.725276070027175420,	0.725241646213169110,	0.725207220586058910,	0.725172793145930750,	0.725138363892870230,	
+0.725103932826964170,	0.725069499948298280,	0.725035065256958600,	0.725000628753030950,	0.724966190436602040,	0.724931750307757690,	0.724897308366583950,	0.724862864613166620,	
+0.724828419047592430,	0.724793971669947190,	0.724759522480317050,	0.724725071478787840,	0.724690618665446150,	0.724656164040377910,	0.724621707603669400,	0.724587249355406190,	
+0.724552789295675240,	0.724518327424562240,	0.724483863742153120,	0.724449398248534710,	0.724414930943792830,	0.724380461828013520,	0.724345990901282820,	0.724311518163687440,	
+0.724277043615313310,	0.724242567256246470,	0.724208089086572970,	0.724173609106379510,	0.724139127315752030,	0.724104643714776790,	0.724070158303539600,	0.724035671082127300,	
+0.724001182050625800,	0.723966691209121490,	0.723932198557699970,	0.723897704096448380,	0.723863207825452550,	0.723828709744798290,	0.723794209854572550,	0.723759708154861350,	
+0.723725204645750850,	0.723690699327327100,	0.723656192199676810,	0.723621683262886120,	0.723587172517041190,	0.723552659962227950,	0.723518145598533560,	0.723483629426043610,	
+0.723449111444844690,	0.723414591655022640,	0.723380070056664380,	0.723345546649856060,	0.723311021434683840,	0.723276494411233760,	0.723241965579592640,	0.723207434939846740,	
+0.723172902492082210,	0.723138368236385110,	0.723103832172842460,	0.723069294301540100,	0.723034754622564280,	0.723000213136001820,	0.722965669841938880,	0.722931124740461840,	
+0.722896577831656620,	0.722862029115610150,	0.722827478592408700,	0.722792926262138650,	0.722758372124885810,	0.722723816180737440,	0.722689258429779490,	0.722654698872098430,	
+0.722620137507780310,	0.722585574336912170,	0.722551009359580050,	0.722516442575870440,	0.722481873985869380,	0.722447303589664020,	0.722412731387340300,	0.722378157378984480,	
+0.722343581564683590,	0.722309003944523800,	0.722274424518591470,	0.722239843286972660,	0.722205260249754620,	0.722170675407023510,	0.722136088758865590,	0.722101500305367240,	
+0.722066910046615380,	0.722032317982696290,	0.721997724113696340,	0.721963128439701900,	0.721928530960799790,	0.721893931677076490,	0.721859330588618290,	0.721824727695511430,	
+0.721790122997843180,	0.721755516495699470,	0.721720908189166680,	0.721686298078332070,	0.721651686163281570,	0.721617072444102000,	0.721582456920879300,	0.721547839593700830,	
+0.721513220462652760,	0.721478599527821560,	0.721443976789293620,	0.721409352247156080,	0.721374725901495100,	0.721340097752397380,	0.721305467799948970,	0.721270836044237360,	
+0.721236202485348590,	0.721201567123369250,	0.721166929958385830,	0.721132290990485260,	0.721097650219754030,	0.721063007646278290,	0.721028363270145410,	0.720993717091441550,	
+0.720959069110253540,	0.720924419326667510,	0.720889767740770630,	0.720855114352649370,	0.720820459162390460,	0.720785802170079930,	0.720751143375805260,	0.720716482779652720,	
+0.720681820381709030,	0.720647156182060430,	0.720612490180794210,	0.720577822377996840,	0.720543152773754910,	0.720508481368154820,	0.720473808161283700,	0.720439133153228160,	
+0.720404456344074800,	0.720369777733909870,	0.720335097322820970,	0.720300415110894270,	0.720265731098216120,	0.720231045284874140,	0.720196357670954360,	0.720161668256543820,	
+0.720126977041728680,	0.720092284026596530,	0.720057589211233640,	0.720022892595726720,	0.719988194180162240,	0.719953493964627710,	0.719918791949209380,	0.719884088133994070,	
+0.719849382519068160,	0.719814675104519130,	0.719779965890433580,	0.719745254876897890,	0.719710542063998870,	0.719675827451823790,	0.719641111040459140,	0.719606392829991390,	
+0.719571672820508050,	0.719536951012095470,	0.719502227404840490,	0.719467501998829580,	0.719432774794150240,	0.719398045790889060,	0.719363314989132750,	0.719328582388967800,	
+0.719293847990481680,	0.719259111793761010,	0.719224373798892480,	0.719189634005962810,	0.719154892415059250,	0.719120149026268530,	0.719085403839677450,	0.719050656855372510,	
+0.719015908073441290,	0.718981157493970180,	0.718946405117045990,	0.718911650942756110,	0.718876894971187010,	0.718842137202425730,	0.718807377636558780,	0.718772616273673610,	
+0.718737853113857070,	0.718703088157195750,	0.718668321403776460,	0.718633552853686690,	0.718598782507013030,	0.718564010363842430,	0.718529236424261470,	0.718494460688357760,	
+0.718459683156217890,	0.718424903827928780,	0.718390122703577050,	0.718355339783250500,	0.718320555067035400,	0.718285768555019020,	0.718250980247287950,	0.718216190143929680,	
+0.718181398245030910,	0.718146604550678360,	0.718111809060959620,	0.718077011775961390,	0.718042212695770620,	0.718007411820473900,	0.717972609150159040,	0.717937804684912750,	
+0.717902998424821750,	0.717868190369973070,	0.717833380520454200,	0.717798568876351960,	0.717763755437753170,	0.717728940204744760,	0.717694123177414320,	0.717659304355848460,	
+0.717624483740134430,	0.717589661330358840,	0.717554837126609500,	0.717520011128973010,	0.717485183337536190,	0.717450353752386640,	0.717415522373611280,	0.717380689201297050,	
+0.717345854235530880,	0.717311017476400360,	0.717276178923992310,	0.717241338578393780,	0.717206496439691590,	0.717171652507973540,	0.717136806783326250,	0.717101959265836970,	
+0.717067109955592530,	0.717032258852680630,	0.716997405957188080,	0.716962551269201940,	0.716927694788809130,	0.716892836516097480,	0.716857976451153680,	0.716823114594064670,	
+0.716788250944918160,	0.716753385503800970,	0.716718518270800350,	0.716683649246003140,	0.716648778429497150,	0.716613905821369190,	0.716579031421706420,	0.716544155230595780,	
+0.716509277248125080,	0.716474397474381130,	0.716439515909451210,	0.716404632553422350,	0.716369747406382040,	0.716334860468417430,	0.716299971739615680,	0.716265081220063600,	
+0.716230188909849240,	0.716195294809059300,	0.716160398917780940,	0.716125501236101750,	0.716090601764108880,	0.716055700501889490,	0.716020797449530620,	0.715985892607119980,	
+0.715950985974744600,	0.715916077552491760,	0.715881167340448490,	0.715846255338702610,	0.715811341547341050,	0.715776425966451080,	0.715741508596119740,	0.715706589436435060,	
+0.715671668487483760,	0.715636745749353430,	0.715601821222130900,	0.715566894905903970,	0.715531966800759920,	0.715497036906786010,	0.715462105224069170,	0.715427171752697320,	
+0.715392236492757630,	0.715357299444336900,	0.715322360607523300,	0.715287419982403860,	0.715252477569065850,	0.715217533367596300,	0.715182587378083160,	0.715147639600613670,	
+0.715112690035275000,	0.715077738682154410,	0.715042785541339710,	0.715007830612917950,	0.714972873896976720,	0.714937915393603070,	0.714902955102884820,	0.714867993024909220,	
+0.714833029159763540,	0.714798063507535050,	0.714763096068311790,	0.714728126842180790,	0.714693155829229100,	0.714658183029544760,	0.714623208443215030,	0.714588232070327400,	
+0.714553253910968690,	0.714518273965227270,	0.714483292233190070,	0.714448308714944800,	0.714413323410578280,	0.714378336320178890,	0.714343347443833540,	0.714308356781629960,	
+0.714273364333655070,	0.714238370099997130,	0.714203374080743190,	0.714168376275980840,	0.714133376685797350,	0.714098375310280640,	0.714063372149517980,	0.714028367203596640,	
+0.713993360472604640,	0.713958351956629160,	0.713923341655757990,	0.713888329570077970,	0.713853315699677580,	0.713818300044643860,	0.713783282605064410,	0.713748263381026370,	
+0.713713242372618020,	0.713678219579926610,	0.713643195003039520,	0.713608168642044240,	0.713573140497028800,	0.713538110568080590,	0.713503078855287080,	0.713468045358735540,	
+0.713433010078514120,	0.713397973014710310,	0.713362934167411480,	0.713327893536705000,	0.713292851122679150,	0.713257806925421180,	0.713222760945018350,	0.713187713181558940,	
+0.713152663635130190,	0.713117612305819830,	0.713082559193715100,	0.713047504298904400,	0.713012447621474750,	0.712977389161514100,	0.712942328919109690,	0.712907266894349690,	
+0.712872203087321580,	0.712837137498112950,	0.712802070126811180,	0.712767000973504540,	0.712731930038280390,	0.712696857321226340,	0.712661782822429980,	0.712626706541979350,	
+0.712591628479962050,	0.712556548636465340,	0.712521467011577480,	0.712486383605386080,	0.712451298417978610,	0.712416211449442670,	0.712381122699866530,	0.712346032169337450,	
+0.712310939857943470,	0.712275845765771630,	0.712240749892910640,	0.712205652239447760,	0.712170552805470700,	0.712135451591066950,	0.712100348596324870,	0.712065243821331960,	
+0.712030137266175920,	0.711995028930944240,	0.711959918815725290,	0.711924806920606560,	0.711889693245675530,	0.711854577791020460,	0.711819460556729070,	0.711784341542888940,	
+0.711749220749587690,	0.711714098176913670,	0.711678973824954490,	0.711643847693797850,	0.711608719783531240,	0.711573590094243150,	0.711538458626021050,	0.711503325378952890,	
+0.711468190353126030,	0.711433053548629070,	0.711397914965549380,	0.711362774603975010,	0.711327632463993330,	0.711292488545692820,	0.711257342849161200,	0.711222195374485830,	
+0.711187046121755320,	0.711151895091057250,	0.711116742282479340,	0.711081587696109410,	0.711046431332035710,	0.711011273190345960,	0.710976113271127970,	0.710940951574469460,	
+0.710905788100458900,	0.710870622849183790,	0.710835455820732150,	0.710800287015191600,	0.710765116432650500,	0.710729944073196780,	0.710694769936918160,	0.710659594023902330,	
+0.710624416334237790,	0.710589236868012120,	0.710554055625313490,	0.710518872606229370,	0.710483687810848360,	0.710448501239258180,	0.710413312891546410,	0.710378122767801660,	
+0.710342930868111510,	0.710307737192564130,	0.710272541741247100,	0.710237344514249140,	0.710202145511657610,	0.710166944733560790,	0.710131742180046380,	0.710096537851202750,	
+0.710061331747117940,	0.710026123867879780,	0.709990914213575960,	0.709955702784295210,	0.709920489580125100,	0.709885274601153800,	0.709850057847469020,	0.709814839319159450,	
+0.709779619016312810,	0.709744396939016700,	0.709709173087359920,	0.709673947461430310,	0.709638720061315790,	0.709603490887104060,	0.709568259938884060,	0.709533027216743380,	
+0.709497792720770070,	0.709462556451051940,	0.709427318407677810,	0.709392078590735390,	0.709356837000312710,	0.709321593636497720,	0.709286348499378990,	0.709251101589044360,	
+0.709215852905581980,	0.709180602449079770,	0.709145350219626320,	0.709110096217309360,	0.709074840442217020,	0.709039582894437800,	0.709004323574059630,	0.708969062481170640,	
+0.708933799615858780,	0.708898534978212650,	0.708863268568320160,	0.708828000386269590,	0.708792730432148630,	0.708757458706046120,	0.708722185208050080,	0.708686909938248450,	
+0.708651632896729280,	0.708616354083581370,	0.708581073498892660,	0.708545791142751070,	0.708510507015244870,	0.708475221116462550,	0.708439933446492360,	0.708404644005422250,	
+0.708369352793340120,	0.708334059810335040,	0.708298765056494810,	0.708263468531907250,	0.708228170236661400,	0.708192870170845200,	0.708157568334546790,	0.708122264727854110,	
+0.708086959350856080,	0.708051652203640640,	0.708016343286296150,	0.707981032598910430,	0.707945720141572420,	0.707910405914370040,	0.707875089917391790,	0.707839772150725470,	
+0.707804452614460010,	0.707769131308683350,	0.707733808233483970,	0.707698483388949700,	0.707663156775169560,	0.707627828392231480,	0.707592498240223630,	0.707557166319234820,	
+0.707521832629352980,	0.707486497170666690,	0.707451159943263800,	0.707415820947233210,	0.707380480182663200,	0.707345137649641910,	0.707309793348257500,	0.707274447278599010,	
+0.707239099440754250,	0.707203749834811820,	0.707168398460859770,	0.707133045318986910,	0.707097690409281500,	0.707062333731831800,	0.707026975286726090,	0.706991615074053170,	
+0.706956253093901200,	0.706920889346358330,	0.706885523831513480,	0.706850156549454820,	0.706814787500270820,	0.706779416684049530,	0.706744044100880100,	0.706708669750850450,	
+0.706673293634049070,	0.706637915750564230,	0.706602536100484960,	0.706567154683899300,	0.706531771500895630,	0.706496386551562440,	0.706460999835988420,	0.706425611354261960,	
+0.706390221106471540,	0.706354829092705190,	0.706319435313052080,	0.706284039767600460,	0.706248642456438260,	0.706213243379654960,	0.706177842537338400,	0.706142439929577260,	
+0.706107035556459820,	0.706071629418075000,	0.706036221514511180,	0.706000811845856720,	0.705965400412199910,	0.705929987213629980,	0.705894572250235110,	0.705859155522103770,	
+0.705823737029324220,	0.705788316771985610,	0.705752894750176220,	0.705717470963984630,	0.705682045413498990,	0.705646618098808580,	0.705611189020001640,	0.705575758177166780,	
+0.705540325570392150,	0.705504891199767000,	0.705469455065379720,	0.705434017167318350,	0.705398577505672360,	0.705363136080529920,	0.705327692891979500,	0.705292247940109700,	
+0.705256801225009560,	0.705221352746767340,	0.705185902505471750,	0.705150450501211170,	0.705114996734074740,	0.705079541204150840,	0.705044083911528060,	0.705008624856294790,	
+0.704973164038540160,	0.704937701458352770,	0.704902237115821010,	0.704866771011033450,	0.704831303144079160,	0.704795833515046710,	0.704760362124024380,	0.704724888971101300,	
+0.704689414056366200,	0.704653937379907450,	0.704618458941813520,	0.704582978742173790,	0.704547496781076640,	0.704512013058610660,	0.704476527574864450,	0.704441040329927160,	
+0.704405551323887380,	0.704370060556833600,	0.704334568028854410,	0.704299073740039080,	0.704263577690476090,	0.704228079880254150,	0.704192580309461750,	0.704157078978188130,	
+0.704121575886521800,	0.704086071034551340,	0.704050564422365910,	0.704015056050054100,	0.703979545917704620,	0.703944034025405950,	0.703908520373247580,	0.703873004961317880,	
+0.703837487789705670,	0.703801968858499440,	0.703766448167788550,	0.703730925717661600,	0.703695401508207310,	0.703659875539514260,	0.703624347811671710,	0.703588818324768380,	
+0.703553287078892970,	0.703517754074134080,	0.703482219310581080,	0.703446682788322560,	0.703411144507447240,	0.703375604468043810,	0.703340062670201660,	0.703304519114009490,	
+0.703268973799555550,	0.703233426726929570,	0.703197877896220010,	0.703162327307515710,	0.703126774960905250,	0.703091220856478240,	0.703055664994323150,	0.703020107374528910,	
+0.702984547997184130,	0.702948986862378280,	0.702913423970199850,	0.702877859320737990,	0.702842292914081180,	0.702806724750318800,	0.702771154829539670,	0.702735583151832710,	
+0.702700009717286520,	0.702664434525990590,	0.702628857578033510,	0.702593278873503980,	0.702557698412491600,	0.702522116195084980,	0.702486532221373030,	0.702450946491444460,	
+0.702415359005388870,	0.702379769763294860,	0.702344178765251350,	0.702308586011347160,	0.702272991501671770,	0.702237395236314010,	0.702201797215362690,	0.702166197438906510,	
+0.702130595907035190,	0.702094992619837430,	0.702059387577402160,	0.702023780779818090,	0.701988172227174910,	0.701952561919561240,	0.701916949857065870,	0.701881336039778540,	
+0.701845720467787700,	0.701810103141182750,	0.701774484060052050,	0.701738863224485640,	0.701703240634571900,	0.701667616290400090,	0.701631990192059020,	0.701596362339638180,	
+0.701560732733226500,	0.701525101372913020,	0.701489468258786440,	0.701453833390936480,	0.701418196769451940,	0.701382558394421870,	0.701346918265935200,	0.701311276384081420,	
+0.701275632748949550,	0.701239987360628200,	0.701204340219207300,	0.701168691324775440,	0.701133040677421990,	0.701097388277235560,	0.701061734124305950,	0.701026078218721980,	
+0.700990420560572810,	0.700954761149947370,	0.700919099986935250,	0.700883437071625370,	0.700847772404107010,	0.700812105984468750,	0.700776437812800630,	0.700740767889191480,	
+0.700705096213730340,	0.700669422786506120,	0.700633747607608660,	0.700598070677126870,	0.700562391995149910,	0.700526711561766600,	0.700491029377066870,	0.700455345441139520,	
+0.700419659754073610,	0.700383972315958720,	0.700348283126884020,	0.700312592186938530,	0.700276899496211300,	0.700241205054792150,	0.700205508862769890,	0.700169810920233890,	
+0.700134111227273090,	0.700098409783977300,	0.700062706590435460,	0.700027001646736920,	0.699991294952970520,	0.699955586509226290,	0.699919876315592940,	0.699884164372160060,	
+0.699848450679016350,	0.699812735236251760,	0.699777018043955420,	0.699741299102216270,	0.699705578411124130,	0.699669855970768030,	0.699634131781237350,	0.699598405842621010,	
+0.699562678155008940,	0.699526948718490190,	0.699491217533154020,	0.699455484599089570,	0.699419749916386670,	0.699384013485134350,	0.699348275305422100,	0.699312535377338840,	
+0.699276793700974510,	0.699241050276418140,	0.699205305103759220,	0.699169558183086790,	0.699133809514490670,	0.699098059098060110,	0.699062306933884050,	0.699026553022052520,	
+0.698990797362654570,	0.698955039955779680,	0.698919280801516880,	0.698883519899956230,	0.698847757251186640,	0.698811992855297830,	0.698776226712378600,	0.698740458822519230,	
+0.698704689185808640,	0.698668917802336310,	0.698633144672191400,	0.698597369795463940,	0.698561593172242980,	0.698525814802618110,	0.698490034686678470,	0.698454252824513900,	
+0.698418469216213870,	0.698382683861867530,	0.698346896761564250,	0.698311107915393970,	0.698275317323445940,	0.698239524985809320,	0.698203730902574150,	0.698167935073829680,	
+0.698132137499665410,	0.698096338180170470,	0.698060537115435030,	0.698024734305548230,	0.697988929750599560,	0.697953123450678280,	0.697917315405874430,	0.697881505616277380,	
+0.697845694081976610,	0.697809880803061170,	0.697774065779621420,	0.697738249011746530,	0.697702430499525960,	0.697666610243048990,	0.697630788242405760,	0.697594964497685650,	
+0.697559139008977810,	0.697523311776372390,	0.697487482799958760,	0.697451652079826400,	0.697415819616064580,	0.697379985408763560,	0.697344149458012490,	0.697308311763901180,	
+0.697272472326518680,	0.697236631145955240,	0.697200788222300360,	0.697164943555643510,	0.697129097146073850,	0.697093248993681860,	0.697057399098556800,	0.697021547460788150,	
+0.696985694080465400,	0.696949838957678590,	0.696913982092517310,	0.696878123485070720,	0.696842263135429190,	0.696806401043681970,	0.696770537209918660,	0.696734671634228750,	
+0.696698804316702500,	0.696662935257429280,	0.696627064456498690,	0.696591191913999990,	0.696555317630023760,	0.696519441604659280,	0.696483563837996140,	0.696447684330123720,	
+0.696411803081132490,	0.696375920091111710,	0.696340035360151100,	0.696304148888340140,	0.696268260675769080,	0.696232370722527420,	0.696196479028704520,	0.696160585594390650,	
+0.696124690419675400,	0.696088793504648470,	0.696052894849399140,	0.696016994454017880,	0.695981092318594170,	0.695945188443217730,	0.695909282827978040,	0.695873375472965460,	
+0.695837466378269380,	0.695801555543979710,	0.695765642970185730,	0.695729728656978020,	0.695693812604445960,	0.695657894812679480,	0.695621975281767830,	0.695586054011801620,	
+0.695550131002870220,	0.695514206255063550,	0.695478279768470990,	0.695442351543183120,	0.695406421579289220,	0.695370489876879110,	0.695334556436043030,	0.695298621256870590,	
+0.695262684339451600,	0.695226745683875550,	0.695190805290232920,	0.695154863158613300,	0.695118919289106520,	0.695082973681802160,	0.695047026336790720,	0.695011077254161670,	
+0.694975126434004940,	0.694939173876410020,	0.694903219581467500,	0.694867263549266980,	0.694831305779898270,	0.694795346273450960,	0.694759385030015660,	0.694723422049681850,	
+0.694687457332539230,	0.694651490878678170,	0.694615522688188490,	0.694579552761159900,	0.694543581097682220,	0.694507607697845810,	0.694471632561740490,	0.694435655689455980,	
+0.694399677081082080,	0.694363696736709280,	0.694327714656427290,	0.694291730840325920,	0.694255745288494990,	0.694219758001024980,	0.694183768978005490,	0.694147778219526670,	
+0.694111785725678110,	0.694075791496550410,	0.694039795532233160,	0.694003797832816180,	0.693967798398389960,	0.693931797229044300,	0.693895794324869030,	0.693859789685954080,	
+0.693823783312389920,	0.693787775204266380,	0.693751765361673380,	0.693715753784700520,	0.693679740473438720,	0.693643725427977480,	0.693607708648407040,	0.693571690134816900,	
+0.693535669887297870,	0.693499647905939760,	0.693463624190832410,	0.693427598742065830,	0.693391571559730410,	0.693355542643916190,	0.693319511994712980,	0.693283479612210820,	
+0.693247445496500190,	0.693211409647670920,	0.693175372065812920,	0.693139332751016690,	0.693103291703372150,	0.693067248922969450,	0.693031204409898290,	0.692995158164249390,	
+0.692959110186112670,	0.692923060475578060,	0.692887009032735590,	0.692850955857675870,	0.692814900950488810,	0.692778844311264350,	0.692742785940092640,	0.692706725837064160,	
+0.692670664002268950,	0.692634600435797050,	0.692598535137738390,	0.692562468108183560,	0.692526399347222710,	0.692490328854945440,	0.692454256631442670,	0.692418182676804330,	
+0.692382106991120460,	0.692346029574481100,	0.692309950426976960,	0.692273869548697850,	0.692237786939734150,	0.692201702600175660,	0.692165616530113210,	0.692129528729636730,	
+0.692093439198836370,	0.692057347937802160,	0.692021254946624920,	0.691985160225394470,	0.691949063774201180,	0.691912965593134870,	0.691876865682286570,	0.691840764041745990,	
+0.691804660671603180,	0.691768555571949050,	0.691732448742873540,	0.691696340184467020,	0.691660229896819190,	0.691624117880021090,	0.691588004134162770,	0.691551888659334480,	
+0.691515771455626040,	0.691479652523128600,	0.691443531861931970,	0.691407409472126530,	0.691371285353802210,	0.691335159507050050,	0.691299031931959960,	0.691262902628622220,	
+0.691226771597126980,	0.691190638837565150,	0.691154504350026680,	0.691118368134601700,	0.691082230191381040,	0.691046090520454850,	0.691009949121913380,	0.690973805995846790,	
+0.690937661142345890,	0.690901514561500950,	0.690865366253402220,	0.690829216218139750,	0.690793064455804460,	0.690756910966486610,	0.690720755750276470,	0.690684598807264070,	
+0.690648440137540560,	0.690612279741195990,	0.690576117618320610,	0.690539953769004680,	0.690503788193339130,	0.690467620891414220,	0.690431451863320110,	0.690395281109147160,	
+0.690359108628986310,	0.690322934422927580,	0.690286758491061360,	0.690250580833478460,	0.690214401450269130,	0.690178220341523870,	0.690142037507332610,	0.690105852947786590,	
+0.690069666662976090,	0.690033478652991250,	0.689997288917922450,	0.689961097457860830,	0.689924904272896430,	0.689888709363119630,	0.689852512728620910,	0.689816314369491200,	
+0.689780114285820640,	0.689743912477699840,	0.689707708945218930,	0.689671503688469080,	0.689635296707540420,	0.689599088002523230,	0.689562877573508650,	0.689526665420586830,	
+0.689490451543848470,	0.689454235943383510,	0.689418018619283310,	0.689381799571638140,	0.689345578800538480,	0.689309356306074480,	0.689273132088337400,	0.689236906147417510,	
+0.689200678483405380,	0.689164449096391300,	0.689128217986466280,	0.689091985153720720,	0.689055750598245310,	0.689019514320130200,	0.688983276319466540,	0.688947036596344710,	
+0.688910795150854960,	0.688874551983088560,	0.688838307093135760,	0.688802060481087270,	0.688765812147033250,	0.688729562091065060,	0.688693310313272860,	0.688657056813747560,	
+0.688620801592579100,	0.688584544649859080,	0.688548285985677630,	0.688512025600125590,	0.688475763493292980,	0.688439499665271400,	0.688403234116151120,	0.688366966846022610,	
+0.688330697854976470,	0.688294427143103850,	0.688258154710495230,	0.688221880557241210,	0.688185604683432150,	0.688149327089159320,	0.688113047774513320,	0.688076766739584290,	
+0.688040483984463710,	0.688004199509241850,	0.687967913314009530,	0.687931625398857110,	0.687895335763875960,	0.687859044409156460,	0.687822751334789320,	0.687786456540865010,	
+0.687750160027474910,	0.687713861794709390,	0.687677561842659160,	0.687641260171414800,	0.687604956781067480,	0.687568651671707890,	0.687532344843426620,	0.687496036296314170,	
+0.687459726030461900,	0.687423414045960410,	0.687387100342900070,	0.687350784921372250,	0.687314467781467430,	0.687278148923276540,	0.687241828346889850,	0.687205506052398940,	
+0.687169182039894300,	0.687132856309466740,	0.687096528861206650,	0.687060199695205600,	0.687023868811553970,	0.686987536210342810,	0.686951201891662370,	0.686914865855604240,	
+0.686878528102259020,	0.686842188631717420,	0.686805847444070140,	0.686769504539408440,	0.686733159917823020,	0.686696813579404370,	0.686660465524244090,	0.686624115752432540,	
+0.686587764264060760,	0.686551411059219240,	0.686515056137999460,	0.686478699500492010,	0.686442341146787930,	0.686405981076977590,	0.686369619291152700,	0.686333255789403740,	
+0.686296890571821640,	0.686260523638496880,	0.686224154989521270,	0.686187784624985200,	0.686151412544979690,	0.686115038749595340,	0.686078663238923750,	0.686042286013055390,	
+0.686005907072081420,	0.685969526416092320,	0.685933144045179690,	0.685896759959434330,	0.685860374158946630,	0.685823986643808280,	0.685787597414110110,	0.685751206469942810,	
+0.685714813811397320,	0.685678419438565000,	0.685642023351536570,	0.685605625550403270,	0.685569226035255500,	0.685532824806184940,	0.685496421863282300,	0.685460017206638740,	
+0.685423610836344730,	0.685387202752491990,	0.685350792955171210,	0.685314381444473540,	0.685277968220489590,	0.685241553283310930,	0.685205136633028510,	0.685168718269732910,	
+0.685132298193515840,	0.685095876404468010,	0.685059452902680440,	0.685023027688243970,	0.684986600761250290,	0.684950172121789990,	0.684913741769954340,	0.684877309705834050,	
+0.684840875929520700,	0.684804440441105220,	0.684768003240678660,	0.684731564328331820,	0.684695123704156310,	0.684658681368242930,	0.684622237320682950,	0.684585791561566960,	
+0.684549344090986890,	0.684512894909033550,	0.684476444015797550,	0.684439991411370690,	0.684403537095843890,	0.684367081069308330,	0.684330623331854680,	0.684294163883574890,	
+0.684257702724559550,	0.684221239854900020,	0.684184775274687020,	0.684148308984012470,	0.684111840982967180,	0.684075371271642200,	0.684038899850128560,	0.684002426718517850,	
+0.683965951876901230,	0.683929475325369630,	0.683892997064014070,	0.683856517092926270,	0.683820035412197270,	0.683783552021917760,	0.683747066922179790,	0.683710580113074170,	
+0.683674091594691950,	0.683637601367124370,	0.683601109430462930,	0.683564615784798880,	0.683528120430223150,	0.683491623366826890,	0.683455124594701810,	0.683418624113939050,	
+0.683382121924629660,	0.683345618026864550,	0.683309112420735780,	0.683272605106334250,	0.683236096083751240,	0.683199585353077680,	0.683163072914405370,	0.683126558767825460,	
+0.683090042913429120,	0.683053525351307370,	0.683017006081552140,	0.682980485104254350,	0.682943962419505060,	0.682907438027396290,	0.682870911928018740,	0.682834384121464020,	
+0.682797854607822940,	0.682761323387187650,	0.682724790459648960,	0.682688255825298350,	0.682651719484226760,	0.682615181436526220,	0.682578641682287660,	0.682542100221602550,	
+0.682505557054561840,	0.682469012181257550,	0.682432465601780840,	0.682395917316222840,	0.682359367324674730,	0.682322815627228520,	0.682286262223975370,	0.682249707115006210,	
+0.682213150300412960,	0.682176591780287000,	0.682140031554719580,	0.682103469623801640,	0.682066905987625430,	0.682030340646281870,	0.681993773599862570,	0.681957204848458450,	
+0.681920634392161660,	0.681884062231063240,	0.681847488365254770,	0.681810912794827080,	0.681774335519872540,	0.681737756540482190,	0.681701175856747390,	0.681664593468759410,	
+0.681628009376610170,	0.681591423580390930,	0.681554836080192850,	0.681518246876107960,	0.681481655968227520,	0.681445063356642900,	0.681408469041445250,	0.681371873022726840,	
+0.681335275300578690,	0.681298675875092410,	0.681262074746359030,	0.681225471914470800,	0.681188867379519000,	0.681152261141594880,	0.681115653200789820,	0.681079043557196060,	
+0.681042432210904660,	0.681005819162007090,	0.680969204410594720,	0.680932587956759590,	0.680895969800593080,	0.680859349942186550,	0.680822728381631380,	0.680786105119019710,	
+0.680749480154442810,	0.680712853487991820,	0.680676225119759120,	0.680639595049835730,	0.680602963278313490,	0.680566329805283420,	0.680529694630837900,	0.680493057755068080,	
+0.680456419178065650,	0.680419778899921890,	0.680383136920728940,	0.680346493240578170,	0.680309847859561170,	0.680273200777769200,	0.680236551995294650,	0.680199901512228640,	
+0.680163249328662900,	0.680126595444688680,	0.680089939860398340,	0.680053282575883160,	0.680016623591234380,	0.679979962906544390,	0.679943300521904550,	0.679906636437406340,	
+0.679869970653141360,	0.679833303169201650,	0.679796633985678800,	0.679759963102664290,	0.679723290520249600,	0.679686616238526890,	0.679649940257587740,	0.679613262577523750,	
+0.679576583198426290,	0.679539902120387620,	0.679503219343499220,	0.679466534867852800,	0.679429848693539730,	0.679393160820652380,	0.679356471249282000,	0.679319779979520200,	
+0.679283087011459340,	0.679246392345190690,	0.679209695980806050,	0.679172997918396910,	0.679136298158055540,	0.679099596699873410,	0.679062893543942340,	0.679026188690353690,	
+0.678989482139199960,	0.678952773890572400,	0.678916063944562940,	0.678879352301263060,	0.678842638960765130,	0.678805923923160530,	0.678769207188541170,	0.678732488756998430,	
+0.678695768628624800,	0.678659046803511750,	0.678622323281750760,	0.678585598063434330,	0.678548871148653810,	0.678512142537501250,	0.678475412230067910,	0.678438680226446380,	
+0.678401946526728140,	0.678365211131005120,	0.678328474039368690,	0.678291735251911330,	0.678254994768724640,	0.678218252589900540,	0.678181508715530510,	0.678144763145706930,	
+0.678108015880521500,	0.678071266920066030,	0.678034516264432120,	0.677997763913712140,	0.677961009867997790,	0.677924254127381000,	0.677887496691953140,	0.677850737561806920,	
+0.677813976737033810,	0.677777214217725410,	0.677740450003974430,	0.677703684095872230,	0.677666916493510850,	0.677630147196981780,	0.677593376206377720,	0.677556603521790260,	
+0.677519829143311210,	0.677483053071032290,	0.677446275305046090,	0.677409495845444190,	0.677372714692318630,	0.677335931845760800,	0.677299147305863600,	0.677262361072718530,	
+0.677225573146417400,	0.677188783527052250,	0.677151992214715340,	0.677115199209498360,	0.677078404511493150,	0.677041608120792280,	0.677004810037487360,	0.676968010261670420,	
+0.676931208793433160,	0.676894405632868070,	0.676857600780067070,	0.676820794235122090,	0.676783985998124840,	0.676747176069167790,	0.676710364448342980,	0.676673551135742120,	
+0.676636736131457140,	0.676599919435580620,	0.676563101048204270,	0.676526280969420140,	0.676489459199320020,	0.676452635737996630,	0.676415810585541680,	0.676378983742046750,	
+0.676342155207604770,	0.676305324982307330,	0.676268493066246700,	0.676231659459514470,	0.676194824162203330,	0.676157987174405230,	0.676121148496212080,	0.676084308127715810,	
+0.676047466069009010,	0.676010622320183610,	0.675973776881331640,	0.675936929752544930,	0.675900080933916180,	0.675863230425537200,	0.675826378227500250,	0.675789524339896920,	
+0.675752668762820140,	0.675715811496361730,	0.675678952540613830,	0.675642091895668040,	0.675605229561617500,	0.675568365538553820,	0.675531499826569020,	0.675494632425755690,	
+0.675457763336205770,	0.675420892558011410,	0.675384020091264640,	0.675347145936058050,	0.675310270092483570,	0.675273392560633460,	0.675236513340599530,	0.675199632432474610,	
+0.675162749836350720,	0.675125865552319790,	0.675088979580473980,	0.675052091920905980,	0.675015202573707840,	0.674978311538971700,	0.674941418816789370,	0.674904524407253790,	
+0.674867628310456990,	0.674830730526490790,	0.674793831055448100,	0.674756929897420750,	0.674720027052501110,	0.674683122520781110,	0.674646216302353660,	0.674609308397310590,	
+0.674572398805744270,	0.674535487527746720,	0.674498574563410670,	0.674461659912828140,	0.674424743576091500,	0.674387825553292800,	0.674350905844524730,	0.674313984449879440,	
+0.674277061369449200,	0.674240136603325930,	0.674203210151602670,	0.674166282014371450,	0.674129352191724100,	0.674092420683753750,	0.674055487490552330,	0.674018552612212220,	
+0.673981616048825340,	0.673944677800484840,	0.673907737867282640,	0.673870796249311010,	0.673833852946662090,	0.673796907959428930,	0.673759961287703430,	0.673723012931577990,	
+0.673686062891144740,	0.673649111166496730,	0.673612157757725870,	0.673575202664924650,	0.673538245888185010,	0.673501287427600180,	0.673464327283262110,	0.673427365455262830,	
+0.673390401943695590,	0.673353436748652220,	0.673316469870225310,	0.673279501308506890,	0.673242531063590110,	0.673205559135566900,	0.673168585524529850,	0.673131610230571000,	
+0.673094633253783380,	0.673057654594259260,	0.673020674252091000,	0.672983692227370760,	0.672946708520191560,	0.672909723130645570,	0.672872736058825360,	0.672835747304822870,	
+0.672798756868731470,	0.672761764750643090,	0.672724770950650310,	0.672687775468845280,	0.672650778305321160,	0.672613779460170090,	0.672576778933484220,	0.672539776725356700,	
+0.672502772835879780,	0.672465767265145950,	0.672428760013247250,	0.672391751080277160,	0.672354740466327590,	0.672317728171491160,	0.672280714195860110,	0.672243698539527590,	
+0.672206681202585870,	0.672169662185127410,	0.672132641487244500,	0.672095619109030260,	0.672058595050576970,	0.672021569311977320,	0.671984541893323240,	0.671947512794708210,	
+0.671910482016224500,	0.671873449557964130,	0.671836415420020480,	0.671799379602485810,	0.671762342105452710,	0.671725302929013330,	0.671688262073261160,	0.671651219538288210,	
+0.671614175324187320,	0.671577129431050630,	0.671540081858971400,	0.671503032608042010,	0.671465981678355030,	0.671428929070002730,	0.671391874783078490,	0.671354818817674560,	
+0.671317761173883530,	0.671280701851797890,	0.671243640851510670,	0.671206578173114470,	0.671169513816701420,	0.671132447782364920,	0.671095380070197310,	0.671058310680291310,	
+0.671021239612739070,	0.670984166867634180,	0.670947092445068890,	0.670910016345135810,	0.670872938567927400,	0.670835859113536940,	0.670798777982056780,	0.670761695173579750,	
+0.670724610688198110,	0.670687524526005330,	0.670650436687093680,	0.670613347171555960,	0.670576255979484560,	0.670539163110972840,	0.670502068566113160,	0.670464972344998470,	
+0.670427874447720900,	0.670390774874373930,	0.670353673625050050,	0.670316570699841740,	0.670279466098842260,	0.670242359822144080,	0.670205251869840040,	0.670168142242022590,	
+0.670131030938785120,	0.670093917960220000,	0.670056803306420150,	0.670019686977477820,	0.669982568973486740,	0.669945449294539250,	0.669908327940728080,	0.669871204912145800,	
+0.669834080208885800,	0.669796953831040650,	0.669759825778703080,	0.669722696051965550,	0.669685564650921660,	0.669648431575663890,	0.669611296826284730,	0.669574160402877540,	
+0.669537022305535130,	0.669499882534350000,	0.669462741089414950,	0.669425597970823350,	0.669388453178667690,	0.669351306713040990,	0.669314158574035640,	0.669277008761745230,	
+0.669239857276262230,	0.669202704117679680,	0.669165549286090070,	0.669128392781586760,	0.669091234604262670,	0.669054074754210410,	0.669016913231522570,	0.668979750036292840,	
+0.668942585168613710,	0.668905418628577770,	0.668868250416278620,	0.668831080531808840,	0.668793908975261480,	0.668756735746728890,	0.668719560846304790,	0.668682384274081890,	
+0.668645206030152870,	0.668608026114610680,	0.668570844527548670,	0.668533661269059550,	0.668496476339236260,	0.668459289738171480,	0.668422101465958820,	0.668384911522690860,	
+0.668347719908460650,	0.668310526623360770,	0.668273331667484930,	0.668236135040925830,	0.668198936743775950,	0.668161736776129110,	0.668124535138077900,	0.668087331829715360,	
+0.668050126851134190,	0.668012920202428080,	0.667975711883689540,	0.667938501895011800,	0.667901290236487480,	0.667864076908210260,	0.667826861910272850,	0.667789645242768290,	
+0.667752426905789290,	0.667715206899429540,	0.667677985223781740,	0.667640761878939060,	0.667603536864994070,	0.667566310182040600,	0.667529081830171340,	0.667491851809479340,	
+0.667454620120057520,	0.667417386761999350,	0.667380151735397660,	0.667342915040345370,	0.667305676676936080,	0.667268436645262700,	0.667231194945418160,	0.667193951577495280,	
+0.667156706541587870,	0.667119459837788640,	0.667082211466190840,	0.667044961426887180,	0.667007709719971360,	0.666970456345536310,	0.666933201303675170,	0.666895944594480650,	
+0.666858686218046560,	0.666821426174465830,	0.666784164463831490,	0.666746901086236470,	0.666709636041774470,	0.666672369330538420,	0.666635100952621020,	0.666597830908116310,	
+0.666560559197116990,	0.666523285819716320,	0.666486010776007000,	0.666448734066083070,	0.666411455690037240,	0.666374175647962750,	0.666336893939952550,	0.666299610566100430,	
+0.666262325526499330,	0.666225038821242400,	0.666187750450422560,	0.666150460414133620,	0.666113168712468510,	0.666075875345520490,	0.666038580313382480,	0.666001283616148300,	
+0.665963985253910980,	0.665926685226763350,	0.665889383534799320,	0.665852080178111820,	0.665814775156794210,	0.665777468470939220,	0.665740160120640970,	0.665702850105992280,	
+0.665665538427086420,	0.665628225084016420,	0.665590910076876210,	0.665553593405758810,	0.665516275070757280,	0.665478955071964750,	0.665441633409475260,	0.665404310083381630,	
+0.665366985093777230,	0.665329658440754980,	0.665292330124408910,	0.665255000144832080,	0.665217668502117830,	0.665180335196358890,	0.665143000227649610,	0.665105663596082700,	
+0.665068325301751420,	0.665030985344749580,	0.664993643725170220,	0.664956300443106940,	0.664918955498652430,	0.664881608891900840,	0.664844260622945330,	0.664806910691879140,	
+0.664769559098795320,	0.664732205843787890,	0.664694850926950020,	0.664657494348374960,	0.664620136108155850,	0.664582776206386840,	0.664545414643160750,	0.664508051418571170,	
+0.664470686532711130,	0.664433319985674790,	0.664395951777555060,	0.664358581908445100,	0.664321210378439050,	0.664283837187629960,	0.664246462336111290,	0.664209085823976090,	
+0.664171707651318610,	0.664134327818231780,	0.664096946324809200,	0.664059563171143900,	0.664022178357329910,	0.663984791883460600,	0.663947403749629240,	0.663910013955929080,	
+0.663872622502454270,	0.663835229389297840,	0.663797834616553280,	0.663760438184313850,	0.663723040092673690,	0.663685640341725950,	0.663648238931563660,	0.663610835862281200,	
+0.663573431133971710,	0.663536024746728570,	0.663498616700645030,	0.663461206995815230,	0.663423795632332450,	0.663386382610290260,	0.663348967929781710,	0.663311551590901050,	
+0.663274133593741540,	0.663236713938396670,	0.663199292624959800,	0.663161869653524970,	0.663124445024185330,	0.663087018737034790,	0.663049590792166190,	0.663012161189674100,	
+0.662974729929651450,	0.662937297012191730,	0.662899862437389080,	0.662862426205336860,	0.662824988316128460,	0.662787548769857350,	0.662750107566617560,	0.662712664706502700,	
+0.662675220189606010,	0.662637774016020980,	0.662600326185841860,	0.662562876699162030,	0.662525425556074850,	0.662487972756673820,	0.662450518301053280,	0.662413062189306290,	
+0.662375604421526760,	0.662338144997807850,	0.662300683918243930,	0.662263221182928240,	0.662225756791954610,	0.662188290745416190,	0.662150823043407330,	0.662113353686021420,	
+0.662075882673351820,	0.662038410005492910,	0.662000935682537930,	0.661963459704580590,	0.661925982071714270,	0.661888502784033330,	0.661851021841631140,	0.661813539244601400,	
+0.661776054993037490,	0.661738569087033770,	0.661701081526683610,	0.661663592312080720,	0.661626101443318570,	0.661588608920491540,	0.661551114743692880,	0.661513618913016520,	
+0.661476121428555720,	0.661438622290404950,	0.661401121498657710,	0.661363619053407240,	0.661326114954748020,	0.661288609202773660,	0.661251101797577730,	0.661213592739253620,	
+0.661176082027895910,	0.661138569663597960,	0.661101055646453720,	0.661063539976556420,	0.661026022654000570,	0.660988503678879740,	0.660950983051287630,	0.660913460771317630,	
+0.660875936839064430,	0.660838411254621390,	0.660800884018082240,	0.660763355129540650,	0.660725824589090900,	0.660688292396826580,	0.660650758552841280,	0.660613223057229360,	
+0.660575685910084420,	0.660538147111500270,	0.660500606661570400,	0.660463064560389390,	0.660425520808050610,	0.660387975404648110,	0.660350428350275350,	0.660312879645026830,	
+0.660275329288996130,	0.660237777282277060,	0.660200223624963220,	0.660162668317149200,	0.660125111358928480,	0.660087552750394990,	0.660049992491642310,	0.660012430582764930,	
+0.659974867023856550,	0.659937301815010980,	0.659899734956321820,	0.659862166447883540,	0.659824596289789960,	0.659787024482134550,	0.659749451025011920,	0.659711875918515540,	
+0.659674299162739560,	0.659636720757777570,	0.659599140703724050,	0.659561559000672700,	0.659523975648717450,	0.659486390647951890,	0.659448803998470720,	0.659411215700367540,	
+0.659373625753736260,	0.659336034158670590,	0.659298440915265240,	0.659260846023613790,	0.659223249483810170,	0.659185651295948080,	0.659148051460122230,	0.659110449976426320,	
+0.659072846844953820,	0.659035242065799660,	0.658997635639057330,	0.658960027564820860,	0.658922417843184060,	0.658884806474241520,	0.658847193458086950,	0.658809578794814500,	
+0.658771962484517640,	0.658734344527291290,	0.658696724923229060,	0.658659103672424970,	0.658621480774972850,	0.658583856230967380,	0.658546230040502170,	0.658508602203671470,	
+0.658470972720568870,	0.658433341591289190,	0.658395708815926240,	0.658358074394573610,	0.658320438327326120,	0.658282800614277570,	0.658245161255522020,	0.658207520251153140,	
+0.658169877601265880,	0.658132233305953940,	0.658094587365311350,	0.658056939779432030,	0.658019290548410680,	0.657981639672341020,	0.657943987151317410,	0.657906332985433330,	
+0.657868677174783920,	0.657831019719462670,	0.657793360619563950,	0.657755699875181450,	0.657718037486410110,	0.657680373453343630,	0.657642707776075920,	0.657605040454701690,	
+0.657567371489314880,	0.657529700880009730,	0.657492028626879940,	0.657454354730020450,	0.657416679189524960,	0.657379002005487820,	0.657341323178002870,	0.657303642707165010,	
+0.657265960593067970,	0.657228276835805980,	0.657190591435473090,	0.657152904392163890,	0.657115215705972530,	0.657077525376993150,	0.657039833405319570,	0.657002139791046820,	
+0.656964444534268610,	0.656926747635079410,	0.656889049093572930,	0.656851348909844200,	0.656813647083987040,	0.656775943616095480,	0.656738238506264340,	0.656700531754587650,	
+0.656662823361159660,	0.656625113326074210,	0.656587401649426420,	0.656549688331310000,	0.656511973371819440,	0.656474256771048540,	0.656436538529092340,	0.656398818646044880,	
+0.656361097122000300,	0.656323373957052650,	0.656285649151296950,	0.656247922704827120,	0.656210194617737440,	0.656172464890121930,	0.656134733522075630,	0.656097000513692460,	
+0.656059265865066470,	0.656021529576292670,	0.655983791647465010,	0.655946052078677950,	0.655908310870025320,	0.655870568021602370,	0.655832823533502920,	0.655795077405821440,	
+0.655757329638651850,	0.655719580232089320,	0.655681829186227860,	0.655644076501161850,	0.655606322176985330,	0.655568566213793220,	0.655530808611679780,	0.655493049370739380,	
+0.655455288491065930,	0.655417525972754600,	0.655379761815899520,	0.655341996020594620,	0.655304228586935040,	0.655266459515014940,	0.655228688804928790,	0.655190916456770410,	
+0.655153142470635160,	0.655115366846617090,	0.655077589584810550,	0.655039810685309700,	0.655002030148209680,	0.654964247973604640,	0.654926464161588840,	0.654888678712256640,	
+0.654850891625703090,	0.654813102902022210,	0.654775312541308720,	0.654737520543656530,	0.654699726909160900,	0.654661931637915860,	0.654624134730016130,	0.654586336185555620,	
+0.654548536004629700,	0.654510734187332410,	0.654472930733757900,	0.654435125644001410,	0.654397318918157110,	0.654359510556319580,	0.654321700558582850,	0.654283888925042300,	
+0.654246075655791960,	0.654208260750926420,	0.654170444210539940,	0.654132626034727660,	0.654094806223583850,	0.654056984777202980,	0.654019161695679310,	0.653981336979108100,	
+0.653943510627583490,	0.653905682641200190,	0.653867853020052240,	0.653830021764235100,	0.653792188873842830,	0.653754354348969780,	0.653716518189711220,	0.653678680396161280,	
+0.653640840968414680,	0.653602999906565670,	0.653565157210709510,	0.653527312880940460,	0.653489466917352990,	0.653451619320041700,	0.653413770089101620,	0.653375919224627120,	
+0.653338066726712800,	0.653300212595453010,	0.653262356830943030,	0.653224499433277090,	0.653186640402549920,	0.653148779738855880,	0.653110917442290220,	0.653073053512947200,	
+0.653035187950921300,	0.652997320756307680,	0.652959451929200800,	0.652921581469695260,	0.652883709377885420,	0.652845835653866670,	0.652807960297733360,	0.652770083309580080,	
+0.652732204689501330,	0.652694324437592450,	0.652656442553947610,	0.652618559038661730,	0.652580673891829170,	0.652542787113545190,	0.652504898703904270,	0.652467008663001110,	
+0.652429116990930090,	0.652391223687786680,	0.652353328753665140,	0.652315432188659950,	0.652277533992866480,	0.652239634166379200,	0.652201732709292830,	0.652163829621701830,	
+0.652125924903701580,	0.652088018555386450,	0.652050110576851360,	0.652012200968190570,	0.651974289729499670,	0.651936376860873130,	0.651898462362405560,	0.651860546234191430,	
+0.651822628476326440,	0.651784709088904730,	0.651746788072021350,	0.651708865425770560,	0.651670941150248040,	0.651633015245548060,	0.651595087711765660,	0.651557158548995100,	
+0.651519227757332060,	0.651481295336870940,	0.651443361287706190,	0.651405425609933420,	0.651367488303647100,	0.651329549368942050,	0.651291608805912750,	0.651253666614654780,	
+0.651215722795262630,	0.651177777347831220,	0.651139830272455030,	0.651101881569229550,	0.651063931238249460,	0.651025979279609480,	0.650988025693404190,	0.650950070479729190,	
+0.650912113638679070,	0.650874155170348630,	0.650836195074832480,	0.650798233352226090,	0.650760270002624150,	0.650722305026121270,	0.650684338422812920,	0.650646370192793700,	
+0.650608400336158630,	0.650570428853002090,	0.650532455743420000,	0.650494481007506620,	0.650456504645357090,	0.650418526657066010,	0.650380547042728850,	0.650342565802440430,	
+0.650304582936295450,	0.650266598444388830,	0.650228612326815950,	0.650190624583671610,	0.650152635215050620,	0.650114644221047810,	0.650076651601758650,	0.650038657357277950,	
+0.650000661487700190,	0.649962663993121080,	0.649924664873635430,	0.649886664129338040,	0.649848661760323630,	0.649810657766688000,	0.649772652148525640,	0.649734644905931690,	
+0.649696636039000740,	0.649658625547828610,	0.649620613432509870,	0.649582599693139580,	0.649544584329812550,	0.649506567342624240,	0.649468548731669590,	0.649430528497043640,	
+0.649392506638840960,	0.649354483157157380,	0.649316458052087600,	0.649278431323726530,	0.649240402972169230,	0.649202372997511160,	0.649164341399847240,	0.649126308179272080,	
+0.649088273335881480,	0.649050236869770150,	0.649012198781033330,	0.648974159069765630,	0.648936117736062860,	0.648898074780019820,	0.648860030201731550,	0.648821984001292870,	
+0.648783936178799590,	0.648745886734346520,	0.648707835668028700,	0.648669782979940930,	0.648631728670179040,	0.648593672738837830,	0.648555615186012460,	0.648517556011797720,	
+0.648479495216289340,	0.648441432799582330,	0.648403368761771400,	0.648365303102952370,	0.648327235823220050,	0.648289166922669580,	0.648251096401396000,	0.648213024259494900,	
+0.648174950497061310,	0.648136875114190270,	0.648098798110976810,	0.648060719487516650,	0.648022639243904690,	0.647984557380236080,	0.647946473896605760,	0.647908388793109640,	
+0.647870302069842530,	0.647832213726899590,	0.647794123764375840,	0.647756032182367210,	0.647717938980968410,	0.647679844160274350,	0.647641747720381080,	0.647603649661383510,	
+0.647565549983376790,	0.647527448686455840,	0.647489345770716600,	0.647451241236253970,	0.647413135083163230,	0.647375027311539400,	0.647336917921478290,	0.647298806913074840,	
+0.647260694286424410,	0.647222580041621920,	0.647184464178763300,	0.647146346697943580,	0.647108227599257900,	0.647070106882801310,	0.647031984548669840,	0.646993860596958400,	
+0.646955735027762050,	0.646917607841176580,	0.646879479037297140,	0.646841348616219000,	0.646803216578037190,	0.646765082922847620,	0.646726947650745340,	0.646688810761825720,	
+0.646650672256183780,	0.646612532133915340,	0.646574390395115770,	0.646536247039880110,	0.646498102068303490,	0.646459955480481960,	0.646421807276510550,	0.646383657456484630,	
+0.646345506020499230,	0.646307352968650490,	0.646269198301033240,	0.646231042017743060,	0.646192884118874880,	0.646154724604524830,	0.646116563474788070,	0.646078400729759420,	
+0.646040236369535230,	0.646002070394210430,	0.645963902803880390,	0.645925733598640250,	0.645887562778586170,	0.645849390343813170,	0.645811216294416730,	0.645773040630491790,	
+0.645734863352134700,	0.645696684459440400,	0.645658503952504460,	0.645620321831421820,	0.645582138096288840,	0.645543952747200440,	0.645505765784252120,	0.645467577207539110,	
+0.645429387017157460,	0.645391195213202320,	0.645353001795768930,	0.645314806764953340,	0.645276610120850690,	0.645238411863556570,	0.645200211993166130,	0.645162010509775400,	
+0.645123807413479630,	0.645085602704374430,	0.645047396382554820,	0.645009188448117170,	0.644970978901156400,	0.644932767741768220,	0.644894554970047880,	0.644856340586091430,	
+0.644818124589994100,	0.644779906981851390,	0.644741687761758660,	0.644703466929812060,	0.644665244486106850,	0.644627020430738050,	0.644588794763802150,	0.644550567485394190,	
+0.644512338595609860,	0.644474108094544420,	0.644435875982293900,	0.644397642258953800,	0.644359406924619460,	0.644321169979386380,	0.644282931423350690,	0.644244691256607660,	
+0.644206449479252980,	0.644168206091381700,	0.644129961093090400,	0.644091714484474000,	0.644053466265628430,	0.644015216436648830,	0.643976964997631570,	0.643938711948671920,	
+0.643900457289865450,	0.643862201021307420,	0.643823943143094320,	0.643785683655321410,	0.643747422558083810,	0.643709159851478140,	0.643670895535599420,	0.643632629610543570,	
+0.643594362076405750,	0.643556092933282420,	0.643517822181268850,	0.643479549820460740,	0.643441275850953340,	0.643403000272843140,	0.643364723086225390,	0.643326444291195900,	
+0.643288163887849930,	0.643249881876283850,	0.643211598256593130,	0.643173313028873370,	0.643135026193220050,	0.643096737749729530,	0.643058447698497070,	0.643020156039618150,	
+0.642981862773189250,	0.642943567899305620,	0.642905271418063080,	0.642866973329557110,	0.642828673633883960,	0.642790372331139110,	0.642752069421418380,	0.642713764904817130,	
+0.642675458781431840,	0.642637151051357880,	0.642598841714691060,	0.642560530771526750,	0.642522218221961430,	0.642483904066090680,	0.642445588304010110,	0.642407270935815180,	
+0.642368951961602490,	0.642330631381467290,	0.642292309195505280,	0.642253985403812840,	0.642215660006485440,	0.642177333003618900,	0.642139004395308580,	0.642100674181651180,	
+0.642062342362742070,	0.642024008938677060,	0.641985673909551750,	0.641947337275462600,	0.641908999036505110,	0.641870659192775080,	0.641832317744368110,	0.641793974691380660,	
+0.641755630033908340,	0.641717283772046840,	0.641678935905891870,	0.641640586435539890,	0.641602235361086400,	0.641563882682627320,	0.641525528400258230,	0.641487172514075610,	
+0.641448815024175060,	0.641410455930652160,	0.641372095233603500,	0.641333732933124570,	0.641295369029311280,	0.641257003522259340,	0.641218636412065110,	0.641180267698824300,	
+0.641141897382632830,	0.641103525463586290,	0.641065151941781370,	0.641026776817313460,	0.640988400090278580,	0.640950021760772430,	0.640911641828891600,	0.640873260294731570,	
+0.640834877158388380,	0.640796492419957730,	0.640758106079536200,	0.640719718137219400,	0.640681328593102890,	0.640642937447283400,	0.640604544699856620,	0.640566150350918460,	
+0.640527754400564640,	0.640489356848891740,	0.640450957695995470,	0.640412556941971740,	0.640374154586916270,	0.640335750630925850,	0.640297345074095970,	0.640258937916522770,	
+0.640220529158301850,	0.640182118799530020,	0.640143706840302860,	0.640105293280716410,	0.640066878120866380,	0.640028461360849450,	0.639990043000761450,	0.639951623040697970,	
+0.639913201480755810,	0.639874778321030570,	0.639836353561618500,	0.639797927202615080,	0.639759499244117350,	0.639721069686220670,	0.639682638529021410,	0.639644205772615270,	
+0.639605771417098850,	0.639567335462568050,	0.639528897909118930,	0.639490458756847180,	0.639452018005849720,	0.639413575656222140,	0.639375131708060600,	0.639336686161460890,	
+0.639298239016519830,	0.639259790273333240,	0.639221339931996700,	0.639182887992607250,	0.639144434455260590,	0.639105979320052750,	0.639067522587079660,	0.639029064256438240,	
+0.638990604328223970,	0.638952142802533320,	0.638913679679461890,	0.638875214959106600,	0.638836748641563370,	0.638798280726928120,	0.638759811215296900,	0.638721340106766510,	
+0.638682867401432760,	0.638644393099391920,	0.638605917200739670,	0.638567439705572950,	0.638528960613987670,	0.638490479926079990,	0.638451997641945710,	0.638413513761681870,	
+0.638375028285384170,	0.638336541213148530,	0.638298052545071990,	0.638259562281250250,	0.638221070421779670,	0.638182576966755950,	0.638144081916276250,	0.638105585270436260,	
+0.638067087029332350,	0.638028587193060440,	0.637990085761717340,	0.637951582735398980,	0.637913078114201730,	0.637874571898221390,	0.637836064087555000,	0.637797554682298480,	
+0.637759043682547990,	0.637720531088399660,	0.637682016899950190,	0.637643501117295840,	0.637604983740532320,	0.637566464769756650,	0.637527944205064870,	0.637489422046553230,	
+0.637450898294317670,	0.637412372948455210,	0.637373846009061880,	0.637335317476233840,	0.637296787350067230,	0.637258255630658970,	0.637219722318105090,	0.637181187412501850,	
+0.637142650913945290,	0.637104112822532540,	0.637065573138359430,	0.637027031861522430,	0.636988488992117460,	0.636949944530241670,	0.636911398475990990,	0.636872850829461430,	
+0.636834301590750160,	0.636795750759953090,	0.636757198337166710,	0.636718644322486930,	0.636680088716010890,	0.636641531517834650,	0.636602972728054550,	0.636564412346766640,	
+0.636525850374068170,	0.636487286810054950,	0.636448721654823580,	0.636410154908470080,	0.636371586571091500,	0.636333016642783970,	0.636294445123643860,	0.636255872013767320,	
+0.636217297313251380,	0.636178721022192310,	0.636140143140686340,	0.636101563668829750,	0.636062982606719560,	0.636024399954451920,	0.635985815712122870,	0.635947229879829660,	
+0.635908642457668430,	0.635870053445735550,	0.635831462844127280,	0.635792870652940540,	0.635754276872271710,	0.635715681502217240,	0.635677084542873190,	0.635638485994336700,	
+0.635599885856704020,	0.635561284130071740,	0.635522680814535780,	0.635484075910193510,	0.635445469417140970,	0.635406861335474860,	0.635368251665291210,	0.635329640406687270,	
+0.635291027559759300,	0.635252413124603340,	0.635213797101316760,	0.635175179489995580,	0.635136560290736510,	0.635097939503635690,	0.635059317128790380,	0.635020693166296830,	
+0.634982067616251420,	0.634943440478750620,	0.634904811753891460,	0.634866181441770430,	0.634827549542483770,	0.634788916056127970,	0.634750280982800170,	0.634711644322596750,	
+0.634673006075614170,	0.634634366241948800,	0.634595724821697790,	0.634557081814957400,	0.634518437221824110,	0.634479791042394940,	0.634441143276766370,	0.634402493925035000,	
+0.634363842987296980,	0.634325190463649660,	0.634286536354189410,	0.634247880659012830,	0.634209223378216170,	0.634170564511896790,	0.634131904060150960,	0.634093242023075490,	
+0.634054578400766510,	0.634015913193321400,	0.633977246400836520,	0.633938578023408580,	0.633899908061133830,	0.633861236514109640,	0.633822563382432370,	0.633783888666198280,	
+0.633745212365504850,	0.633706534480448450,	0.633667855011125660,	0.633629173957632850,	0.633590491320067510,	0.633551807098525990,	0.633513121293104890,	0.633474433903900680,	
+0.633435744931010620,	0.633397054374531310,	0.633358362234559320,	0.633319668511191040,	0.633280973204524030,	0.633242276314654570,	0.633203577841679350,	0.633164877785694860,	
+0.633126176146798560,	0.633087472925086820,	0.633048768120656360,	0.633010061733603640,	0.632971353764026130,	0.632932644212020220,	0.632893933077682380,	0.632855220361109970,	
+0.632816506062399590,	0.632777790181648040,	0.632739072718951470,	0.632700353674407690,	0.632661633048112960,	0.632622910840164200,	0.632584187050657780,	0.632545461679691280,	
+0.632506734727361080,	0.632468006193764090,	0.632429276078996680,	0.632390544383156450,	0.632351811106339870,	0.632313076248643750,	0.632274339810164680,	0.632235601791000020,	
+0.632196862191246380,	0.632158121011000220,	0.632119378250359130,	0.632080633909419490,	0.632041887988278430,	0.632003140487032210,	0.631964391405778540,	0.631925640744613770,	
+0.631886888503635060,	0.631848134682938660,	0.631809379282622260,	0.631770622302782470,	0.631731863743516200,	0.631693103604919810,	0.631654341887091020,	0.631615578590126400,	
+0.631576813714122890,	0.631538047259176950,	0.631499279225386180,	0.631460509612847280,	0.631421738421656720,	0.631382965651912210,	0.631344191303710220,	0.631305415377147790,	
+0.631266637872321510,	0.631227858789328970,	0.631189078128266750,	0.631150295889231770,	0.631111512072320860,	0.631072726677631370,	0.631033939705260230,	0.630995151155304130,	
+0.630956361027859790,	0.630917569323024900,	0.630878776040896150,	0.630839981181570360,	0.630801184745144350,	0.630762386731715700,	0.630723587141381100,	0.630684785974237490,	
+0.630645983230381680,	0.630607178909911140,	0.630568373012922680,	0.630529565539513000,	0.630490756489779700,	0.630451945863819470,	0.630413133661729460,	0.630374319883606260,	
+0.630335504529547560,	0.630296687599650070,	0.630257869094010940,	0.630219049012726740,	0.630180227355895290,	0.630141404123613300,	0.630102579315977680,	0.630063752933085360,	
+0.630024924975034040,	0.629986095441920410,	0.629947264333841410,	0.629908431650894050,	0.629869597393175830,	0.629830761560783770,	0.629791924153814350,	0.629753085172365500,	
+0.629714244616533910,	0.629675402486416740,	0.629636558782110670,	0.629597713503713630,	0.629558866651322210,	0.629520018225033670,	0.629481168224944710,	0.629442316651153240,	
+0.629403463503755980,	0.629364608782850050,	0.629325752488532180,	0.629286894620900370,	0.629248035180051240,	0.629209174166082020,	0.629170311579089650,	0.629131447419171710,	
+0.629092581686425230,	0.629053714380946930,	0.629014845502834600,	0.628975975052185280,	0.628937103029096000,	0.628898229433663580,	0.628859354265985940,	0.628820477526159880,	
+0.628781599214282670,	0.628742719330451120,	0.628703837874763140,	0.628664954847315550,	0.628626070248205600,	0.628587184077530110,	0.628548296335387000,	0.628509407021873080,	
+0.628470516137085710,	0.628431623681121710,	0.628392729654079000,	0.628353834056054380,	0.628314936887144900,	0.628276038147448480,	0.628237137837061920,	0.628198235956082480,	
+0.628159332504607090,	0.628120427482733780,	0.628081520890559350,	0.628042612728181180,	0.628003702995696080,	0.627964791693202070,	0.627925878820796090,	0.627886964378575390,	
+0.627848048366636990,	0.627809130785078830,	0.627770211633997710,	0.627731290913491220,	0.627692368623656070,	0.627653444764590400,	0.627614519336391010,	0.627575592339155390,	
+0.627536663772980450,	0.627497733637964240,	0.627458801934203670,	0.627419868661795670,	0.627380933820838370,	0.627341997411428820,	0.627303059433664270,	0.627264119887641640,	
+0.627225178773459070,	0.627186236091213600,	0.627147291841002490,	0.627108346022922870,	0.627069398637072670,	0.627030449683549040,	0.626991499162449230,	0.626952547073870380,	
+0.626913593417910420,	0.626874638194666600,	0.626835681404236070,	0.626796723046716080,	0.626757763122204550,	0.626718801630798630,	0.626679838572595350,	0.626640873947692860,	
+0.626601907756188180,	0.626562939998178690,	0.626523970673761530,	0.626484999783034850,	0.626446027326095670,	0.626407053303041360,	0.626368077713969070,	0.626329100558976950,	
+0.626290121838162020,	0.626251141551621870,	0.626212159699453430,	0.626173176281755060,	0.626134191298623690,	0.626095204750156790,	0.626056216636451610,	0.626017226957606200,	
+0.625978235713717690,	0.625939242904883340,	0.625900248531201080,	0.625861252592768370,	0.625822255089682480,	0.625783256022040550,	0.625744255389940830,	0.625705253193480470,	
+0.625666249432757060,	0.625627244107867630,	0.625588237218910330,	0.625549228765982620,	0.625510218749181670,	0.625471207168604940,	0.625432194024350570,	0.625393179316515610,	
+0.625354163045197750,	0.625315145210494140,	0.625276125812503030,	0.625237104851321560,	0.625198082327047320,	0.625159058239777580,	0.625120032589610460,	0.625081005376643350,	
+0.625041976600973380,	0.625002946262698810,	0.624963914361916780,	0.624924880898725110,	0.624885845873220820,	0.624846809285502180,	0.624807771135666660,	0.624768731423811620,	
+0.624729690150034430,	0.624690647314433360,	0.624651602917105640,	0.624612556958148990,	0.624573509437660550,	0.624534460355738670,	0.624495409712480740,	0.624456357507984120,	
+0.624417303742346390,	0.624378248415665690,	0.624339191528039410,	0.624300133079564780,	0.624261073070340180,	0.624222011500462860,	0.624182948370030520,	0.624143883679140530,	
+0.624104817427891030,	0.624065749616379620,	0.624026680244703760,	0.623987609312960930,	0.623948536821249400,	0.623909462769666520,	0.623870387158310000,	0.623831309987277090,	
+0.623792231256666270,	0.623753150966574910,	0.623714069117100700,	0.623674985708340900,	0.623635900740394100,	0.623596814213357440,	0.623557726127328400,	0.623518636482405460,	
+0.623479545278685880,	0.623440452516267450,	0.623401358195247560,	0.623362262315724560,	0.623323164877795930,	0.623284065881559490,	0.623244965327112380,	0.623205863214553290,	
+0.623166759543979490,	0.623127654315488890,	0.623088547529178750,	0.623049439185147550,	0.623010329283492760,	0.622971217824312200,	0.622932104807703220,	0.622892990233764320,	
+0.622853874102592960,	0.622814756414286630,	0.622775637168943690,	0.622736516366661610,	0.622697394007538320,	0.622658270091671180,	0.622619144619158680,	0.622580017590098290,	
+0.622540889004587930,	0.622501758862724960,	0.622462627164607980,	0.622423493910334360,	0.622384359100002120,	0.622345222733708510,	0.622306084811552250,	0.622266945333630810,	
+0.622227804300041990,	0.622188661710883270,	0.622149517566253250,	0.622110371866249400,	0.622071224610969750,	0.622032075800511560,	0.621992925434973640,	0.621953773514453360,	
+0.621914620039048180,	0.621875465008856930,	0.621836308423977080,	0.621797150284506330,	0.621757990590542380,	0.621718829342183810,	0.621679666539528220,	0.621640502182673420,	
+0.621601336271716990,	0.621562168806757630,	0.621522999787892830,	0.621483829215220500,	0.621444657088838230,	0.621405483408844720,	0.621366308175337560,	0.621327131388414560,	
+0.621287953048173300,	0.621248773154712610,	0.621209591708129950,	0.621170408708523030,	0.621131224155990310,	0.621092038050629620,	0.621052850392538770,	0.621013661181815560,	
+0.620974470418558470,	0.620935278102865200,	0.620896084234833780,	0.620856888814561690,	0.620817691842147860,	0.620778493317689750,	0.620739293241285410,	0.620700091613032410,	
+0.620660888433029690,	0.620621683701374600,	0.620582477418165410,	0.620543269583499590,	0.620504060197475950,	0.620464849260192190,	0.620425636771746000,	0.620386422732235990,	
+0.620347207141759950,	0.620307990000415920,	0.620268771308301600,	0.620229551065515690,	0.620190329272155780,	0.620151105928320230,	0.620111881034106420,	0.620072654589613360,	
+0.620033426594938540,	0.619994197050180220,	0.619954965955436090,	0.619915733310804850,	0.619876499116384320,	0.619837263372272520,	0.619798026078567150,	0.619758787235367150,	
+0.619719546842770200,	0.619680304900874330,	0.619641061409777370,	0.619601816369578120,	0.619562569780374270,	0.619523321642263650,	0.619484071955345160,	0.619444820719716400,	
+0.619405567935475630,	0.619366313602720540,	0.619327057721550060,	0.619287800292061990,	0.619248541314354360,	0.619209280788525000,	0.619170018714672810,	0.619130755092895610,	
+0.619091489923291550,	0.619052223205958320,	0.619012954940994950,	0.618973685128499150,	0.618934413768569170,	0.618895140861302820,	0.618855866406798900,	0.618816590405155350,	
+0.618777312856469970,	0.618738033760841690,	0.618698753118368310,	0.618659470929148080,	0.618620187193278710,	0.618580901910859350,	0.618541615081987680,	0.618502326706761970,	
+0.618463036785280140,	0.618423745317640990,	0.618384452303942460,	0.618345157744282890,	0.618305861638760000,	0.618266563987472930,	0.618227264790519370,	0.618187964047997580,	
+0.618148661760005600,	0.618109357926642340,	0.618070052548005620,	0.618030745624193470,	0.617991437155304800,	0.617952127141437550,	0.617912815582689960,	0.617873502479159950,	
+0.617834187830946570,	0.617794871638147720,	0.617755553900861680,	0.617716234619186460,	0.617676913793220870,	0.617637591423063180,	0.617598267508811420,	0.617558942050563610,	
+0.617519615048418790,	0.617480286502475000,	0.617440956412830480,	0.617401624779583160,	0.617362291602832180,	0.617322956882675470,	0.617283620619210940,	0.617244282812537850,	
+0.617204943462753900,	0.617165602569957670,	0.617126260134247100,	0.617086916155721200,	0.617047570634478020,	0.617008223570615910,	0.616968874964232920,	0.616929524815428070,	
+0.616890173124299390,	0.616850819890945370,	0.616811465115463810,	0.616772108797954080,	0.616732750938513980,	0.616693391537242010,	0.616654030594236290,	0.616614668109595750,	
+0.616575304083418540,	0.616535938515803130,	0.616496571406847440,	0.616457202756650720,	0.616417832565311020,	0.616378460832926360,	0.616339087559595990,	0.616299712745417730,	
+0.616260336390490380,	0.616220958494911650,	0.616181579058781010,	0.616142198082196390,	0.616102815565256260,	0.616063431508058650,	0.616024045910702920,	0.615984658773287120,	
+0.615945270095909600,	0.615905879878668520,	0.615866488121663220,	0.615827094824991540,	0.615787699988752270,	0.615748303613043340,	0.615708905697963990,	0.615669506243612390,	
+0.615630105250086660,	0.615590702717485950,	0.615551298645908630,	0.615511893035452950,	0.615472485886217170,	0.615433077198300650,	0.615393666971801310,	0.615354255206817860,	
+0.615314841903448430,	0.615275427061792280,	0.615236010681947550,	0.615196592764012730,	0.615157173308086060,	0.615117752314266910,	0.615078329782653310,	0.615038905713343960,	
+0.614999480106436900,	0.614960052962031490,	0.614920624280226090,	0.614881194061118630,	0.614841762304808580,	0.614802329011394090,	0.614762894180973850,	0.614723457813646010,	
+0.614684019909509830,	0.614644580468663660,	0.614605139491205990,	0.614565696977235180,	0.614526252926850370,	0.614486807340150040,	0.614447360217232670,	0.614407911558196520,	
+0.614368461363140940,	0.614329009632164190,	0.614289556365364970,	0.614250101562841430,	0.614210645224693040,	0.614171187351018060,	0.614131727941915060,	0.614092266997482430,	
+0.614052804517819520,	0.614013340503024470,	0.613973874953195890,	0.613934407868432790,	0.613894939248833760,	0.613855469094497400,	0.613815997405522060,	0.613776524182007010,	
+0.613737049424050610,	0.613697573131751660,	0.613658095305208430,	0.613618615944520270,	0.613579135049785560,	0.613539652621102990,	0.613500168658571040,	0.613460683162288970,	
+0.613421196132355240,	0.613381707568868450,	0.613342217471926960,	0.613302725841630480,	0.613263232678077030,	0.613223737981365200,	0.613184241751594360,	0.613144743988862980,	
+0.613105244693269660,	0.613065743864912970,	0.613026241503892180,	0.612986737610305750,	0.612947232184252620,	0.612907725225830920,	0.612868216735140360,	0.612828706712279180,	
+0.612789195157346310,	0.612749682070440000,	0.612710167451659960,	0.612670651301104430,	0.612631133618872340,	0.612591614405061930,	0.612552093659772920,	0.612512571383103670,	
+0.612473047575152640,	0.612433522236019320,	0.612393995365802300,	0.612354466964600160,	0.612314937032511610,	0.612275405569636000,	0.612235872576071930,	0.612196338051918090,	
+0.612156801997273070,	0.612117264412236460,	0.612077725296906630,	0.612038184651382490,	0.611998642475762630,	0.611959098770146430,	0.611919553534632450,	0.611880006769319640,	
+0.611840458474306460,	0.611800908649692500,	0.611761357295576240,	0.611721804412056260,	0.611682249999232150,	0.611642694057202400,	0.611603136586065800,	0.611563577585921170,	
+0.611524017056867870,	0.611484454999004500,	0.611444891412429970,	0.611405326297242980,	0.611365759653542900,	0.611326191481428530,	0.611286621780998680,	0.611247050552351840,	
+0.611207477795587710,	0.611167903510804970,	0.611128327698102440,	0.611088750357578810,	0.611049171489333580,	0.611009591093465420,	0.610970009170073270,	0.610930425719255710,	
+0.610890840741112550,	0.610851254235742270,	0.610811666203243450,	0.610772076643715800,	0.610732485557258010,	0.610692892943969000,	0.610653298803947360,	0.610613703137292910,	
+0.610574105944104110,	0.610534507224480110,	0.610494906978519490,	0.610455305206321850,	0.610415701907986110,	0.610376097083610960,	0.610336490733295320,	0.610296882857138790,	
+0.610257273455240060,	0.610217662527698050,	0.610178050074611680,	0.610138436096080430,	0.610098820592203110,	0.610059203563078410,	0.610019585008806040,	0.609979964929484700,	
+0.609940343325213520,	0.609900720196091100,	0.609861095542217120,	0.609821469363690530,	0.609781841660610220,	0.609742212433074910,	0.609702581681184520,	0.609662949405037620,	
+0.609623315604733370,	0.609583680280370470,	0.609544043432048600,	0.609504405059866810,	0.609464765163923890,	0.609425123744318790,	0.609385480801151180,	0.609345836334519890,	
+0.609306190344523600,	0.609266542831262250,	0.609226893794834520,	0.609187243235339570,	0.609147591152876090,	0.609107937547544110,	0.609068282419442220,	0.609028625768669560,	
+0.608988967595325060,	0.608949307899508520,	0.608909646681318640,	0.608869983940854680,	0.608830319678215440,	0.608790653893500730,	0.608750986586809370,	0.608711317758240500,	
+0.608671647407893040,	0.608631975535866790,	0.608592302142260680,	0.608552627227173740,	0.608512950790704890,	0.608473272832954050,	0.608433593354019920,	0.608393912354001530,	
+0.608354229832998690,	0.608314545791110330,	0.608274860228435580,	0.608235173145073360,	0.608195484541123490,	0.608155794416684990,	0.608116102771856900,	0.608076409606738260,	
+0.608036714921428970,	0.607997018716027850,	0.607957320990634150,	0.607917621745346910,	0.607877920980265940,	0.607838218695490040,	0.607798514891118690,	0.607758809567250700,	
+0.607719102723986100,	0.607679394361423600,	0.607639684479662430,	0.607599973078802310,	0.607560260158942270,	0.607520545720181550,	0.607480829762619080,	0.607441112286355000,	
+0.607401393291488010,	0.607361672778117590,	0.607321950746342760,	0.607282227196263240,	0.607242502127978260,	0.607202775541586970,	0.607163047437188410,	0.607123317814882490,	
+0.607083586674768360,	0.607043854016945270,	0.607004119841512150,	0.606964384148569120,	0.606924646938215130,	0.606884908210549190,	0.606845167965671340,	0.606805426203680500,	
+0.606765682924676140,	0.606725938128757190,	0.606686191816023790,	0.606646443986574970,	0.606606694640509870,	0.606566943777927860,	0.606527191398928740,	0.606487437503611670,	
+0.606447682092076000,	0.606407925164420770,	0.606368166720746000,	0.606328406761150960,	0.606288645285734780,	0.606248882294596720,	0.606209117787836820,	0.606169351765553980,	
+0.606129584227847570,	0.606089815174817530,	0.606050044606562870,	0.606010272523183180,	0.605970498924777390,	0.605930723811445750,	0.605890947183287290,	0.605851169040401480,	
+0.605811389382887370,	0.605771608210845080,	0.605731825524373880,	0.605692041323573020,	0.605652255608541750,	0.605612468379380210,	0.605572679636187550,	0.605532889379063130,	
+0.605493097608106100,	0.605453304323416710,	0.605413509525094100,	0.605373713213237630,	0.605333915387946560,	0.605294116049321040,	0.605254315197460310,	0.605214512832463410,	
+0.605174708954430600,	0.605134903563460890,	0.605095096659654000,	0.605055288243109060,	0.605015478313926210,	0.604975666872204720,	0.604935853918043940,	0.604896039451543240,	
+0.604856223472802880,	0.604816405981921880,	0.604776586978999830,	0.604736766464135990,	0.604696944437430610,	0.604657120898982820,	0.604617295848892340,	0.604577469287258200,	
+0.604537641214180630,	0.604497811629759130,	0.604457980534092610,	0.604418147927281660,	0.604378313809425190,	0.604338478180622920,	0.604298641040974190,	0.604258802390579160,	
+0.604218962229537190,	0.604179120557947760,	0.604139277375910220,	0.604099432683524840,	0.604059586480890860,	0.604019738768107880,	0.603979889545275260,	0.603940038812493140,	
+0.603900186569861110,	0.603860332817478530,	0.603820477555444660,	0.603780620783860080,	0.603740762502823940,	0.603700902712435480,	0.603661041412795200,	0.603621178604002220,	
+0.603581314286156360,	0.603541448459356870,	0.603501581123704110,	0.603461712279297350,	0.603421841926236270,	0.603381970064620350,	0.603342096694549750,	0.603302221816124030,	
+0.603262345429442680,	0.603222467534605070,	0.603182588131711770,	0.603142707220861940,	0.603102824802155270,	0.603062940875691230,	0.603023055441570200,	0.602983168499891530,	
+0.602943280050754930,	0.602903390094259860,	0.602863498630506590,	0.602823605659594590,	0.602783711181623220,	0.602743815196692960,	0.602703917704903060,	0.602664018706353440,	
+0.602624118201143370,	0.602584216189373410,	0.602544312671142950,	0.602504407646551670,	0.602464501115698940,	0.602424593078685460,	0.602384683535610370,	0.602344772486573590,	
+0.602304859931674600,	0.602264945871013760,	0.602225030304690550,	0.602185113232804770,	0.602145194655455910,	0.602105274572744320,	0.602065352984769600,	0.602025429891631100,	
+0.601985505293429420,	0.601945579190264040,	0.601905651582234640,	0.601865722469440700,	0.601825791851982930,	0.601785859729960570,	0.601745926103473660,	0.601705990972621560,	
+0.601666054337504750,	0.601626116198222820,	0.601586176554875670,	0.601546235407562690,	0.601506292756384560,	0.601466348601440550,	0.601426402942830780,	0.601386455780654640,	
+0.601346507115012700,	0.601306556946004430,	0.601266605273729440,	0.601226652098288290,	0.601186697419780590,	0.601146741238306030,	0.601106783553964410,	0.601066824366856100,	
+0.601026863677080690,	0.600986901484738210,	0.600946937789928030,	0.600906972592750940,	0.600867005893306330,	0.600827037691694210,	0.600787067988014290,	0.600747096782366930,	
+0.600707124074851830,	0.600667149865568910,	0.600627174154617860,	0.600587196942099170,	0.600547218228112410,	0.600507238012757290,	0.600467256296134510,	0.600427273078343540,	
+0.600387288359484410,	0.600347302139656700,	0.600307314418961010,	0.600267325197497150,	0.600227334475364920,	0.600187342252664010,	0.600147348529495030,	0.600107353305957770,	
+0.600067356582152040,	0.600027358358177660,	0.599987358634135210,	0.599947357410124390,	0.599907354686245120,	0.599867350462597090,	0.599827344739281120,	0.599787337516396680,	
+0.599747328794044020,	0.599707318572322620,	0.599667306851333290,	0.599627293631175730,	0.599587278911949520,	0.599547262693755470,	0.599507244976693280,	0.599467225760862980,	
+0.599427205046364260,	0.599387182833297840,	0.599347159121763510,	0.599307133911861300,	0.599267107203690920,	0.599227078997353060,	0.599187049292947530,	0.599147018090574360,	
+0.599106985390333360,	0.599066951192325230,	0.599026915496649660,	0.598986878303406800,	0.598946839612696460,	0.598906799424619330,	0.598866757739275220,	0.598826714556763840,	
+0.598786669877185980,	0.598746623700641580,	0.598706576027230540,	0.598666526857052680,	0.598626476190208920,	0.598586424026798960,	0.598546370366922930,	0.598506315210680540,	
+0.598466258558172810,	0.598426200409499450,	0.598386140764760490,	0.598346079624055950,	0.598306016987486420,	0.598265952855151940,	0.598225887227152640,	0.598185820103588120,	
+0.598145751484559510,	0.598105681370166510,	0.598065609760508930,	0.598025536655687700,	0.597985462055802610,	0.597945385960953810,	0.597905308371241230,	0.597865229286765780,	
+0.597825148707627260,	0.597785066633925830,	0.597744983065761400,	0.597704898003234790,	0.597664811446446010,	0.597624723395495220,	0.597584633850482220,	0.597544542811508040,	
+0.597504450278672490,	0.597464356252075720,	0.597424260731817870,	0.597384163717999630,	0.597344065210720920,	0.597303965210082110,	0.597263863716183120,	0.597223760729124640,	
+0.597183656249006930,	0.597143550275929580,	0.597103442809993830,	0.597063333851299390,	0.597023223399946730,	0.596983111456035550,	0.596942998019666990,	0.596902883090940860,	
+0.596862766669957630,	0.596822648756817120,	0.596782529351620240,	0.596742408454467130,	0.596702286065457940,	0.596662162184692700,	0.596622036812272440,	0.596581909948297070,	
+0.596541781592866970,	0.596501651746081940,	0.596461520408043230,	0.596421387578850770,	0.596381253258604360,	0.596341117447405260,	0.596300980145353380,	0.596260841352548980,	
+0.596220701069092080,	0.596180559295083960,	0.596140416030624290,	0.596100271275813660,	0.596060125030751900,	0.596019977295540240,	0.595979828070278720,	0.595939677355067480,	
+0.595899525150006770,	0.595859371455197630,	0.595819216270739970,	0.595779059596734380,	0.595738901433280680,	0.595698741780480210,	0.595658580638432800,	0.595618418007238580,	
+0.595578253886998700,	0.595538088277813180,	0.595497921179782400,	0.595457752593006480,	0.595417582517586590,	0.595377410953622620,	0.595337237901215290,	0.595297063360464400,	
+0.595256887331471200,	0.595216709814335830,	0.595176530809158670,	0.595136350316039840,	0.595096168335080500,	0.595055984866380670,	0.595015799910040940,	0.594975613466161350,	
+0.594935425534843020,	0.594895236116186220,	0.594855045210291310,	0.594814852817258320,	0.594774658937188730,	0.594734463570182340,	0.594694266716339510,	0.594654068375761400,	
+0.594613868548548030,	0.594573667234800100,	0.594533464434617520,	0.594493260148101780,	0.594453054375352790,	0.594412847116471130,	0.594372638371557070,	0.594332428140711740,	
+0.594292216424035400,	0.594252003221628520,	0.594211788533591130,	0.594171572360024710,	0.594131354701029400,	0.594091135556705670,	0.594050914927153780,	0.594010692812474980,	
+0.593970469212769410,	0.593930244128137220,	0.593890017558679870,	0.593849789504497520,	0.593809559965690630,	0.593769328942359450,	0.593729096434605360,	0.593688862442528500,	
+0.593648626966229550,	0.593608390005808560,	0.593568151561367000,	0.593527911633005110,	0.593487670220823380,	0.593447427324922170,	0.593407182945402730,	0.593366937082365320,	
+0.593326689735910630,	0.593286440906138800,	0.593246190593151200,	0.593205938797048190,	0.593165685517929920,	0.593125430755897850,	0.593085174511052140,	0.593044916783493580,	
+0.593004657573322320,	0.592964396880639730,	0.592924134705546170,	0.592883871048142330,	0.592843605908528360,	0.592803339286805840,	0.592763071183074920,	0.592722801597436290,	
+0.592682530529990310,	0.592642257980838360,	0.592601983950080900,	0.592561708437818300,	0.592521431444151150,	0.592481152969180800,	0.592440873013007520,	0.592400591575731660,	
+0.592360308657454810,	0.592320024258277120,	0.592279738378299390,	0.592239451017621880,	0.592199162176346160,	0.592158871854572500,	0.592118580052401700,	0.592078286769934130,	
+0.592037992007271140,	0.591997695764513110,	0.591957398041760950,	0.591917098839114920,	0.591876798156676490,	0.591836495994546020,	0.591796192352824320,	0.591755887231611880,	
+0.591715580631009930,	0.591675272551119180,	0.591634962992040100,	0.591594651953873400,	0.591554339436720310,	0.591514025440681430,	0.591473709965857130,	0.591433393012348870,	
+0.591393074580257250,	0.591352754669682850,	0.591312433280726140,	0.591272110413488820,	0.591231786068071140,	0.591191460244574030,	0.591151132943097960,	0.591110804163744400,	
+0.591070473906613710,	0.591030142171806940,	0.590989808959424550,	0.590949474269567790,	0.590909138102337470,	0.590868800457834300,	0.590828461336158740,	0.590788120737412380,	
+0.590747778661695810,	0.590707435109109280,	0.590667090079754600,	0.590626743573732240,	0.590586395591143010,	0.590546046132087390,	0.590505695196666960,	0.590465342784982420,	
+0.590424988897134460,	0.590384633533223680,	0.590344276693351660,	0.590303918377618860,	0.590263558586126450,	0.590223197318974660,	0.590182834576265300,	0.590142470358098750,	
+0.590102104664576130,	0.590061737495797820,	0.590021368851865620,	0.589980998732879900,	0.589940627138941350,	0.589900254070151680,	0.589859879526611230,	0.589819503508421160,	
+0.589779126015681940,	0.589738747048495380,	0.589698366606961840,	0.589657984691182360,	0.589617601301257620,	0.589577216437289220,	0.589536830099377740,	0.589496442287624320,	
+0.589456053002129330,	0.589415662242994580,	0.589375270010320640,	0.589334876304208550,	0.589294481124758910,	0.589254084472073500,	0.589213686346252820,	0.589173286747397880,	
+0.589132885675609400,	0.589092483130989050,	0.589052079113637550,	0.589011673623655470,	0.588971266661144520,	0.588930858226205390,	0.588890448318939220,	0.588850036939446490,	
+0.588809624087829000,	0.588769209764187560,	0.588728793968622990,	0.588688376701236080,	0.588647957962128650,	0.588607537751401290,	0.588567116069155130,	0.588526692915490760,	
+0.588486268290510100,	0.588445842194313730,	0.588405414627002690,	0.588364985588677780,	0.588324555079440810,	0.588284123099392490,	0.588243689648633380,	0.588203254727265530,	
+0.588162818335389410,	0.588122380473106390,	0.588081941140516930,	0.588041500337723070,	0.588001058064825390,	0.587960614321925150,	0.587920169109122930,	0.587879722426520650,	
+0.587839274274219110,	0.587798824652319360,	0.587758373560922200,	0.587717921000129540,	0.587677466970041970,	0.587637011470760750,	0.587596554502386680,	0.587556096065021570,	
+0.587515636158766230,	0.587475174783721350,	0.587434711939988970,	0.587394247627669900,	0.587353781846865040,	0.587313314597675440,	0.587272845880202900,	0.587232375694548340,	
+0.587191904040812670,	0.587151430919097050,	0.587110956329503160,	0.587070480272131820,	0.587030002747084280,	0.586989523754461450,	0.586949043294365150,	0.586908561366896180,	
+0.586868077972155900,	0.586827593110245020,	0.586787106781265440,	0.586746618985318210,	0.586706129722504020,	0.586665638992924900,	0.586625146796681650,	0.586584653133875530,	
+0.586544158004607460,	0.586503661408979250,	0.586463163347092030,	0.586422663819046840,	0.586382162824944600,	0.586341660364887330,	0.586301156438975850,	0.586260651047311620,	
+0.586220144189995240,	0.586179635867128960,	0.586139126078813580,	0.586098614825150470,	0.586058102106240320,	0.586017587922185390,	0.585977072273086370,	0.585936555159044750,	
+0.585896036580161320,	0.585855516536538220,	0.585814995028276390,	0.585774472055476610,	0.585733947618241050,	0.585693421716670600,	0.585652894350866540,	0.585612365520929990,	
+0.585571835226962770,	0.585531303469066120,	0.585490770247341090,	0.585450235561888800,	0.585409699412811290,	0.585369161800209590,	0.585328622724184840,	0.585288082184838300,	
+0.585247540182271870,	0.585206996716586600,	0.585166451787883850,	0.585125905396264630,	0.585085357541831000,	0.585044808224683850,	0.585004257444924460,	0.584963705202654730,	
+0.584923151497975800,	0.584882596330988940,	0.584842039701795270,	0.584801481610496720,	0.584760922057194650,	0.584720361041990210,	0.584679798564984420,	0.584639234626279650,	
+0.584598669225976700,	0.584558102364177050,	0.584517534040981830,	0.584476964256493090,	0.584436393010812070,	0.584395820304039910,	0.584355246136277980,	0.584314670507628200,	
+0.584274093418191810,	0.584233514868069740,	0.584192934857364230,	0.584152353386176440,	0.584111770454607830,	0.584071186062759320,	0.584030600210733280,	0.583990012898630730,	
+0.583949424126553150,	0.583908833894601580,	0.583868242202878360,	0.583827649051484540,	0.583787054440521590,	0.583746458370090540,	0.583705860840293860,	0.583665261851232460,	
+0.583624661403007840,	0.583584059495721340,	0.583543456129475000,	0.583502851304369960,	0.583462245020507810,	0.583421637277989680,	0.583381028076917940,	0.583340417417393510,	
+0.583299805299517750,	0.583259191723392690,	0.583218576689119810,	0.583177960196800460,	0.583137342246535790,	0.583096722838428170,	0.583056101972578730,	0.583015479649089060,	
+0.582974855868060300,	0.582934230629594710,	0.582893603933793640,	0.582852975780758560,	0.582812346170590630,	0.582771715103392210,	0.582731082579264430,	0.582690448598309100,	
+0.582649813160627140,	0.582609176266321030,	0.582568537915492010,	0.582527898108241350,	0.582487256844671290,	0.582446614124882970,	0.582405969948978200,	0.582365324317058120,	
+0.582324677229225210,	0.582284028685580490,	0.582243378686225670,	0.582202727231262100,	0.582162074320792030,	0.582121419954916840,	0.582080764133738100,	0.582040106857356960,	
+0.581999448125876010,	0.581958787939396480,	0.581918126298019980,	0.581877463201847740,	0.581836798650982260,	0.581796132645524660,	0.581755465185576530,	0.581714796271240010,	
+0.581674125902616470,	0.581633454079807710,	0.581592780802914880,	0.581552106072040440,	0.581511429887285880,	0.581470752248752550,	0.581430073156542160,	0.581389392610756840,	
+0.581348710611498070,	0.581308027158867540,	0.581267342252966500,	0.581226655893897550,	0.581185968081761930,	0.581145278816661340,	0.581104588098697250,	0.581063895927972030,	
+0.581023202304587150,	0.580982507228643860,	0.580941810700244640,	0.580901112719490850,	0.580860413286484300,	0.580819712401326350,	0.580779010064119580,	0.580738306274965250,	
+0.580697601033965060,	0.580656894341220590,	0.580616186196834190,	0.580575476600907360,	0.580534765553541890,	0.580494053054839030,	0.580453339104901490,	0.580412623703830620,	
+0.580371906851728130,	0.580331188548695480,	0.580290468794835260,	0.580249747590248940,	0.580209024935038120,	0.580168300829304480,	0.580127575273150400,	0.580086848266677450,	
+0.580046119809986880,	0.580005389903181510,	0.579964658546362590,	0.579923925739632030,	0.579883191483091310,	0.579842455776843010,	0.579801718620988500,	0.579760980015629700,	
+0.579720239960868080,	0.579679498456806330,	0.579638755503545710,	0.579598011101188250,	0.579557265249835420,	0.579516517949589800,	0.579475769200552880,	0.579435019002826460,	
+0.579394267356512230,	0.579353514261712670,	0.579312759718529250,	0.579272003727063670,	0.579231246287418400,	0.579190487399695030,	0.579149727063995370,	0.579108965280421110,	
+0.579068202049074720,	0.579027437370057910,	0.578986671243472470,	0.578945903669420000,	0.578905134648003080,	0.578864364179323410,	0.578823592263482790,	0.578782818900582810,	
+0.578742044090726160,	0.578701267834014430,	0.578660490130549540,	0.578619710980432970,	0.578578930383767620,	0.578538148340654870,	0.578497364851196290,	0.578456579915494820,	
+0.578415793533651800,	0.578375005705769380,	0.578334216431949040,	0.578293425712293470,	0.578252633546904370,	0.578211839935883760,	0.578171044879333130,	0.578130248377355160,	
+0.578089450430051670,	0.578048651037524560,	0.578007850199875440,	0.577967047917207100,	0.577926244189621130,	0.577885439017219450,	0.577844632400103860,	0.577803824338377070,	
+0.577763014832140760,	0.577722203881496870,	0.577681391486547180,	0.577640577647394290,	0.577599762364139900,	0.577558945636885810,	0.577518127465734830,	0.577477307850788320,	
+0.577436486792148650,	0.577395664289917400,	0.577354840344197370,	0.577314014955090270,	0.577273188122698010,	0.577232359847122510,	0.577191530128466470,	0.577150698966831580,	
+0.577109866362319980,	0.577069032315033260,	0.577028196825074450,	0.576987359892545020,	0.576946521517547330,	0.576905681700182860,	0.576864840440554530,	0.576823997738764250,	
+0.576783153594913500,	0.576742308009105200,	0.576701460981441150,	0.576660612512023500,	0.576619762600953930,	0.576578911248335380,	0.576538058454269420,	0.576497204218858420,	
+0.576456348542203960,	0.576415491424409070,	0.576374632865575440,	0.576333772865805230,	0.576292911425200230,	0.576252048543863250,	0.576211184221896210,	0.576170318459401140,	
+0.576129451256479960,	0.576088582613235590,	0.576047712529769610,	0.576006841006184160,	0.575965968042581820,	0.575925093639064630,	0.575884217795734730,	0.575843340512693810,	
+0.575802461790045020,	0.575761581627890040,	0.575720700026331130,	0.575679816985469990,	0.575638932505409760,	0.575598046586252240,	0.575557159228099580,	0.575516270431053580,	
+0.575475380195217380,	0.575434488520692680,	0.575393595407581730,	0.575352700855986440,	0.575311804866009860,	0.575270907437753660,	0.575230008571319780,	0.575189108266811360,	
+0.575148206524330070,	0.575107303343978420,	0.575066398725857960,	0.575025492670071970,	0.574984585176722240,	0.574943676245911030,	0.574902765877740360,	0.574861854072313050,	
+0.574820940829731120,	0.574780026150096820,	0.574739110033512080,	0.574698192480079920,	0.574657273489902360,	0.574616353063081560,	0.574575431199719540,	0.574534507899919220,	
+0.574493583163782740,	0.574452656991412240,	0.574411729382909740,	0.574370800338378280,	0.574329869857919890,	0.574288937941636380,	0.574248004589630880,	0.574207069802005420,	
+0.574166133578862260,	0.574125195920303420,	0.574084256826431940,	0.574043316297349840,	0.574002374333159480,	0.573961430933962680,	0.573920486099862790,	0.573879539830961630,	
+0.573838592127361660,	0.573797642989164910,	0.573756692416474310,	0.573715740409391990,	0.573674786968020320,	0.573633832092461330,	0.573592875782818150,	0.573551918039192810,	
+0.573510958861687240,	0.573469998250404680,	0.573429036205447050,	0.573388072726916940,	0.573347107814916160,	0.573306141469548060,	0.573265173690914560,	0.573224204479118150,	
+0.573183233834260950,	0.573142261756445890,	0.573101288245775220,	0.573060313302351410,	0.573019336926276380,	0.572978359117653380,	0.572937379876584440,	0.572896399203172150,	
+0.572855417097518420,	0.572814433559726500,	0.572773448589898540,	0.572732462188136560,	0.572691474354543820,	0.572650485089222450,	0.572609494392274820,	0.572568502263803070,	
+0.572527508703910450,	0.572486513712698990,	0.572445517290271270,	0.572404519436729430,	0.572363520152176730,	0.572322519436715080,	0.572281517290447180,	0.572240513713475170,	
+0.572199508705902190,	0.572158502267830490,	0.572117494399362550,	0.572076485100600380,	0.572035474371647480,	0.571994462212605860,	0.571953448623578110,	0.571912433604666370,	
+0.571871417155973890,	0.571830399277602820,	0.571789379969655510,	0.571748359232234990,	0.571707337065443630,	0.571666313469383900,	0.571625288444158050,	0.571584261989869340,	
+0.571543234106620000,	0.571502204794512520,	0.571461174053649270,	0.571420141884133370,	0.571379108286067080,	0.571338073259553100,	0.571297036804693460,	0.571255998921591730,	
+0.571214959610349850,	0.571173918871070720,	0.571132876703856370,	0.571091833108810180,	0.571050788086034380,	0.571009741635631340,	0.570968693757704200,	0.570927644452355440,	
+0.570886593719687420,	0.570845541559802720,	0.570804487972804480,	0.570763432958794950,	0.570722376517876830,	0.570681318650152480,	0.570640259355725150,	0.570599198634697210,	
+0.570558136487171240,	0.570517072913249600,	0.570476007913035650,	0.570434941486631650,	0.570393873634140290,	0.570352804355663820,	0.570311733651305830,	0.570270661521168450,	
+0.570229587965354060,	0.570188512983966110,	0.570147436577106760,	0.570106358744878920,	0.570065279487384720,	0.570024198804727770,	0.569983116697010290,	0.569942033164335120,	
+0.569900948206804370,	0.569859861824521640,	0.569818774017589290,	0.569777684786110020,	0.569736594130186180,	0.569695502049921140,	0.569654408545417380,	0.569613313616777580,	
+0.569572217264104230,	0.569531119487500570,	0.569490020287069190,	0.569448919662912330,	0.569407817615133590,	0.569366714143835330,	0.569325609249120230,	0.569284502931090790,	
+0.569243395189850450,	0.569202286025501600,	0.569161175438147040,	0.569120063427889230,	0.569078949994831550,	0.569037835139076580,	0.568996718860726890,	0.568955601159885080,	
+0.568914482036654730,	0.568873361491138100,	0.568832239523438090,	0.568791116133657070,	0.568749991321898630,	0.568708865088265240,	0.568667737432859700,	0.568626608355784490,	
+0.568585477857143080,	0.568544345937037950,	0.568503212595571570,	0.568462077832847630,	0.568420941648968390,	0.568379804044036870,	0.568338665018155440,	0.568297524571427680,	
+0.568256382703956180,	0.568215239415843620,	0.568174094707192710,	0.568132948578106810,	0.568091801028688610,	0.568050652059040930,	0.568009501669266230,	0.567968349859468200,	
+0.567927196629749220,	0.567886041980212310,	0.567844885910959830,	0.567803728422095590,	0.567762569513721950,	0.567721409185941610,	0.567680247438858030,	0.567639084272573920,	
+0.567597919687192090,	0.567556753682815000,	0.567515586259546460,	0.567474417417488940,	0.567433247156745370,	0.567392075477418320,	0.567350902379611500,	0.567309727863427370,	
+0.567268551928968970,	0.567227374576338760,	0.567186195805640450,	0.567145015616976720,	0.567103834010450500,	0.567062650986164260,	0.567021466544221700,	0.566980280684725610,	
+0.566939093407778370,	0.566897904713483780,	0.566856714601944420,	0.566815523073263220,	0.566774330127542970,	0.566733135764887150,	0.566691939985398570,	0.566650742789180040,	
+0.566609544176334360,	0.566568344146965220,	0.566527142701175210,	0.566485939839067250,	0.566444735560744150,	0.566403529866309600,	0.566362322755866180,	0.566321114229517030,	
+0.566279904287364630,	0.566238692929512900,	0.566197480156064300,	0.566156265967122210,	0.566115050362788970,	0.566073833343168410,	0.566032614908363430,	0.565991395058476400,	
+0.565950173793611340,	0.565908951113870850,	0.565867727019357950,	0.565826501510175330,	0.565785274586426800,	0.565744046248215170,	0.565702816495643360,	0.565661585328814280,	
+0.565620352747831400,	0.565579118752797760,	0.565537883343816270,	0.565496646520989740,	0.565455408284421980,	0.565414168634215670,	0.565372927570473970,	0.565331685093299560,	
+0.565290441202796370,	0.565249195899066970,	0.565207949182214290,	0.565166701052342010,	0.565125451509553070,	0.565084200553950480,	0.565042948185636940,	0.565001694404716480,	
+0.564960439211291800,	0.564919182605466030,	0.564877924587341870,	0.564836665157023350,	0.564795404314613060,	0.564754142060214350,	0.564712878393929920,	0.564671613315863570,	
+0.564630346826118230,	0.564589078924797040,	0.564547809612002790,	0.564506538887839420,	0.564465266752409600,	0.564423993205816270,	0.564382718248163440,	0.564341441879553710,	
+0.564300164100090430,	0.564258884909876300,	0.564217604309015350,	0.564176322297610390,	0.564135038875764660,	0.564093754043580970,	0.564052467801163250,	0.564011180148614290,	
+0.563969891086037460,	0.563928600613535560,	0.563887308731212400,	0.563846015439171120,	0.563804720737514750,	0.563763424626346100,	0.563722127105769410,	0.563680828175887380,	
+0.563639527836802820,	0.563598226088619870,	0.563556922931441330,	0.563515618365370560,	0.563474312390510270,	0.563433005006964580,	0.563391696214836420,	0.563350386014229040,	
+0.563309074405245250,	0.563267761387989290,	0.563226446962563740,	0.563185131129072200,	0.563143813887617360,	0.563102495238303470,	0.563061175181233330,	0.563019853716510200,	
+0.562978530844237100,	0.562937206564517960,	0.562895880877455900,	0.562854553783154080,	0.562813225281715510,	0.562771895373244350,	0.562730564057843270,	0.562689231335615550,	
+0.562647897206665080,	0.562606561671094910,	0.562565224729008270,	0.562523886380508210,	0.562482546625698850,	0.562441205464683010,	0.562399862897564270,	0.562358518924445440,	
+0.562317173545430760,	0.562275826760623150,	0.562234478570125870,	0.562193128974042060,	0.562151777972475840,	0.562110425565530150,	0.562069071753308340,	0.562027716535913550,	
+0.561986359913449920,	0.561945001886020260,	0.561903642453727700,	0.561862281616676510,	0.561820919374969590,	0.561779555728710300,	0.561738190678001900,	0.561696824222948200,	
+0.561655456363652550,	0.561614087100218320,	0.561572716432748420,	0.561531344361347110,	0.561489970886117410,	0.561448596007162790,	0.561407219724586400,	0.561365842038492270,	
+0.561324462948983530,	0.561283082456163650,	0.561241700560135670,	0.561200317261003720,	0.561158932558871170,	0.561117546453840820,	0.561076158946016920,	0.561034770035502730,	
+0.560993379722401490,	0.560951988006816560,	0.560910594888851980,	0.560869200368610880,	0.560827804446196840,	0.560786407121712790,	0.560745008395263200,	0.560703608266951090,	
+0.560662206736879940,	0.560620803805153000,	0.560579399471874300,	0.560537993737147080,	0.560496586601074930,	0.560455178063760990,	0.560413768125309410,	0.560372356785823420,	
+0.560330944045406620,	0.560289529904161920,	0.560248114362193910,	0.560206697419605600,	0.560165279076500160,	0.560123859332981810,	0.560082438189153930,	0.560041015645119880,	
+0.559999591700982900,	0.559958166356847360,	0.559916739612816410,	0.559875311468993610,	0.559833881925482220,	0.559792450982386390,	0.559751018639809470,	0.559709584897855050,	
+0.559668149756626150,	0.559626713216227370,	0.559585275276761830,	0.559543835938333010,	0.559502395201044280,	0.559460953064999990,	0.559419509530303170,	0.559378064597057410,	
+0.559336618265366740,	0.559295170535334510,	0.559253721407064310,	0.559212270880659500,	0.559170818956224450,	0.559129365633862290,	0.559087910913676710,	0.559046454795770980,	
+0.559004997280249440,	0.558963538367215460,	0.558922078056772630,	0.558880616349024200,	0.558839153244074630,	0.558797688742027180,	0.558756222842985540,	0.558714755547052970,	
+0.558673286854333820,	0.558631816764931450,	0.558590345278949240,	0.558548872396491540,	0.558507398117661590,	0.558465922442563210,	0.558424445371299650,	0.558382966903975260,	
+0.558341487040693530,	0.558300005781558030,	0.558258523126672230,	0.558217039076140400,	0.558175553630065990,	0.558134066788552820,	0.558092578551703910,	0.558051088919624070,	
+0.558009597892416440,	0.557968105470184830,	0.557926611653032590,	0.557885116441064310,	0.557843619834383020,	0.557802121833092410,	0.557760622437296960,	0.557719121647099800,	
+0.557677619462604970,	0.557636115883915600,	0.557594610911136380,	0.557553104544370680,	0.557511596783722090,	0.557470087629294290,	0.557428577081191530,	0.557387065139517300,	
+0.557345551804375510,	0.557304037075869400,	0.557262520954103560,	0.557221003439181460,	0.557179484531206910,	0.557137964230283170,	0.557096442536514910,	0.557054919450005630,	
+0.557013394970858890,	0.556971869099178510,	0.556930341835068620,	0.556888813178633040,	0.556847283129974890,	0.556805751689198990,	0.556764218856408810,	0.556722684631707930,	
+0.556681149015200050,	0.556639612006989640,	0.556598073607180170,	0.556556533815875550,	0.556514992633179270,	0.556473450059195800,	0.556431906094028710,	0.556390360737781920,	
+0.556348813990558800,	0.556307265852464040,	0.556265716323601110,	0.556224165404073930,	0.556182613093985870,	0.556141059393441720,	0.556099504302544960,	0.556057947821398950,	
+0.556016389950108600,	0.555974830688777180,	0.555933270037508700,	0.555891707996406640,	0.555850144565575690,	0.555808579745119320,	0.555767013535141690,	0.555725445935746020,	
+0.555683876947037140,	0.555642306569118500,	0.555600734802094150,	0.555559161646067560,	0.555517587101143520,	0.555476011167425400,	0.555434433845017340,	0.555392855134022810,	
+0.555351275034546510,	0.555309693546692020,	0.555268110670562920,	0.555226526406263910,	0.555184940753898570,	0.555143353713570930,	0.555101765285384460,	0.555060175469443970,	
+0.555018584265853040,	0.554976991674715700,	0.554935397696135540,	0.554893802330217120,	0.554852205577064270,	0.554810607436780900,	0.554769007909470700,	0.554727406995238260,	
+0.554685804694187380,	0.554644201006421980,	0.554602595932045640,	0.554560989471163170,	0.554519381623878370,	0.554477772390294940,	0.554436161770516800,	0.554394549764648640,	
+0.554352936372794040,	0.554311321595056810,	0.554269705431541640,	0.554228087882352120,	0.554186468947592490,	0.554144848627366240,	0.554103226921778270,	0.554061603830932280,	
+0.554019979354932190,	0.553978353493881800,	0.553936726247885920,	0.553895097617048250,	0.553853467601472800,	0.553811836201263290,	0.553770203416524610,	0.553728569247360360,	
+0.553686933693874780,	0.553645296756171360,	0.553603658434355220,	0.553562018728529840,	0.553520377638799020,	0.553478735165267690,	0.553437091308039530,	0.553395446067218580,	
+0.553353799442908740,	0.553312151435214730,	0.553270502044240330,	0.553228851270089580,	0.553187199112866510,	0.553145545572675700,	0.553103890649621070,	0.553062234343806640,	
+0.553020576655336330,	0.552978917584314940,	0.552937257130846290,	0.552895595295034400,	0.552853932076983190,	0.552812267476797570,	0.552770601494581240,	0.552728934130438110,	
+0.552687265384472880,	0.552645595256789580,	0.552603923747492230,	0.552562250856684760,	0.552520576584472070,	0.552478900930957860,	0.552437223896246390,	0.552395545480441560,	
+0.552353865683648190,	0.552312184505970080,	0.552270501947511590,	0.552228818008376530,	0.552187132688669700,	0.552145445988495130,	0.552103757907956850,	0.552062068447158880,	
+0.552020377606206040,	0.551978685385202340,	0.551936991784251480,	0.551895296803458610,	0.551853600442927420,	0.551811902702762260,	0.551770203583066940,	0.551728503083946500,	
+0.551686801205504730,	0.551645097947846110,	0.551603393311074220,	0.551561687295294310,	0.551519979900610190,	0.551478271127126110,	0.551436560974945980,	0.551394849444174720,	
+0.551353136534916470,	0.551311422247275250,	0.551269706581355210,	0.551227989537261260,	0.551186271115097330,	0.551144551314967760,	0.551102830136976360,	0.551061107581228280,	
+0.551019383647827430,	0.550977658336877730,	0.550935931648484310,	0.550894203582751100,	0.550852474139782330,	0.550810743319681940,	0.550769011122555160,	0.550727277548505810,	
+0.550685542597638240,	0.550643806270056490,	0.550602068565865580,	0.550560329485169530,	0.550518589028072600,	0.550476847194678820,	0.550435103985093320,	0.550393359399420020,	
+0.550351613437763400,	0.550309866100227360,	0.550268117386916940,	0.550226367297936390,	0.550184615833389400,	0.550142862993381330,	0.550101108778015990,	0.550059353187397960,	
+0.550017596221631160,	0.549975837880820830,	0.549934078165070780,	0.549892317074485600,	0.549850554609169210,	0.549808790769226840,	0.549767025554762530,	0.549725258965880650,	
+0.549683491002685210,	0.549641721665281360,	0.549599950953773230,	0.549558178868265300,	0.549516405408861490,	0.549474630575667140,	0.549432854368786080,	0.549391076788322550,	
+0.549349297834381690,	0.549307517507067630,	0.549265735806484750,	0.549223952732737160,	0.549182168285930140,	0.549140382466167590,	0.549098595273554090,	0.549056806708193790,	
+0.549015016770191820,	0.548973225459652330,	0.548931432776679770,	0.548889638721378190,	0.548847843293852940,	0.548806046494208060,	0.548764248322548110,	0.548722448778977130,	
+0.548680647863600380,	0.548638845576522090,	0.548597041917846640,	0.548555236887678150,	0.548513430486122000,	0.548471622713282310,	0.548429813569263120,	0.548388003054169790,	
+0.548346191168106460,	0.548304377911177700,	0.548262563283487550,	0.548220747285141470,	0.548178929916243400,	0.548137111176898010,	0.548095291067209560,	0.548053469587283180,	
+0.548011646737223130,	0.547969822517134000,	0.547927996927119910,	0.547886169967286230,	0.547844341637737100,	0.547802511938577210,	0.547760680869910590,	0.547718848431842600,	
+0.547677014624477490,	0.547635179447919510,	0.547593342902274020,	0.547551504987645040,	0.547509665704137390,	0.547467825051855210,	0.547425983030903840,	0.547384139641387430,	
+0.547342294883410680,	0.547300448757077950,	0.547258601262494370,	0.547216752399764310,	0.547174902168992340,	0.547133050570282720,	0.547091197603740920,	0.547049343269471080,	
+0.547007487567577890,	0.546965630498165600,	0.546923772061339690,	0.546881912257204280,	0.546840051085863640,	0.546798188547423350,	0.546756324641987530,	0.546714459369661010,	
+0.546672592730547910,	0.546630724724753600,	0.546588855352382550,	0.546546984613539450,	0.546505112508328450,	0.546463239036855010,	0.546421364199223490,	0.546379487995538590,	
+0.546337610425904560,	0.546295731490426870,	0.546253851189209880,	0.546211969522358180,	0.546170086489976340,	0.546128202092169500,	0.546086316329042250,	0.546044429200699180,	
+0.546002540707244630,	0.545960650848784200,	0.545918759625422020,	0.545876867037262680,	0.545834973084411530,	0.545793077766972940,	0.545751181085051610,	0.545709283038751990,	
+0.545667383628179460,	0.545625482853438590,	0.545583580714633980,	0.545541677211869970,	0.545499772345252150,	0.545457866114885000,	0.545415958520873100,	0.545374049563321030,	
+0.545332139242334040,	0.545290227558016820,	0.545248314510474060,	0.545206400099810030,	0.545164484326130520,	0.545122567189539660,	0.545080648690142060,	0.545038728828043270,	
+0.544996807603347570,	0.544954885016159850,	0.544912961066584600,	0.544871035754727280,	0.544829109080692490,	0.544787181044584790,	0.544745251646508780,	0.544703320886570030,	
+0.544661388764873020,	0.544619455281522450,	0.544577520436623000,	0.544535584230280030,	0.544493646662598030,	0.544451707733682010,	0.544409767443636340,	0.544367825792566710,	
+0.544325882780577360,	0.544283938407773000,	0.544241992674259210,	0.544200045580140350,	0.544158097125521430,	0.544116147310506950,	0.544074196135202360,	0.544032243599712360,	
+0.543990289704141650,	0.543948334448594920,	0.543906377833177750,	0.543864419857994610,	0.543822460523150420,	0.543780499828749650,	0.543738537774898110,	0.543696574361700160,	
+0.543654609589260820,	0.543612643457684560,	0.543570675967076980,	0.543528707117542860,	0.543486736909186470,	0.543444765342113720,	0.543402792416428970,	0.543360818132237240,	
+0.543318842489643130,	0.543276865488752310,	0.543234887129669270,	0.543192907412499040,	0.543150926337346180,	0.543108943904316410,	0.543066960113514190,	0.543024974965044650,	
+0.542982988459012270,	0.542941000595522750,	0.542899011374680770,	0.542857020796591260,	0.542815028861358790,	0.542773035569089180,	0.542731040919887000,	0.542689044913857170,	
+0.542647047551104380,	0.542605048831734330,	0.542563048755851600,	0.542521047323560990,	0.542479044534968090,	0.542437040390177480,	0.542395034889294410,	0.542353028032423250,	
+0.542311019819670000,	0.542269010251139160,	0.542226999326935850,	0.542184987047164560,	0.542142973411931290,	0.542100958421340540,	0.542058942075497320,	0.542016924374506440,	
+0.541974905318473700,	0.541932884907503580,	0.541890863141701320,	0.541848840021171400,	0.541806815546019840,	0.541764789716351340,	0.541722762532270360,	0.541680733993882950,	
+0.541638704101293560,	0.541596672854607550,	0.541554640253929410,	0.541512606299365040,	0.541470570991019140,	0.541428534328996850,	0.541386496313402850,	0.541344456944343080,	
+0.541302416221921990,	0.541260374146244950,	0.541218330717416650,	0.541176285935542790,	0.541134239800728280,	0.541092192313078150,	0.541050143472697200,	0.541008093279691240,	
+0.540966041734165070,	0.540923988836223390,	0.540881934585972110,	0.540839878983515930,	0.540797822028960210,	0.540755763722409410,	0.540713704063969680,	0.540671643053745600,	
+0.540629580691842530,	0.540587516978365050,	0.540545451913419180,	0.540503385497109630,	0.540461317729541650,	0.540419248610820020,	0.540377178141050680,	0.540335106320338320,	
+0.540293033148788180,	0.540250958626505180,	0.540208882753595130,	0.540166805530162830,	0.540124726956313530,	0.540082647032152030,	0.540040565757784250,	0.539998483133315110,	
+0.539956399158849410,	0.539914313834493060,	0.539872227160350880,	0.539830139136528220,	0.539788049763129770,	0.539745959040261680,	0.539703866968028520,	0.539661773546535770,	
+0.539619678775888230,	0.539577582656191930,	0.539535485187551570,	0.539493386370072490,	0.539451286203859630,	0.539409184689018990,	0.539367081825655290,	0.539324977613873880,	
+0.539282872053779670,	0.539240765145478700,	0.539198656889075760,	0.539156547284675770,	0.539114436332384870,	0.539072324032307870,	0.539030210384550010,	0.538988095389216330,	
+0.538945979046412730,	0.538903861356244130,	0.538861742318816010,	0.538819621934233050,	0.538777500202601400,	0.538735377124026080,	0.538693252698612230,	0.538651126926465000,	
+0.538608999807690280,	0.538566871342393010,	0.538524741530678530,	0.538482610372651880,	0.538440477868419090,	0.538398344018085060,	0.538356208821754830,	0.538314072279534540,	
+0.538271934391528980,	0.538229795157843530,	0.538187654578583310,	0.538145512653854240,	0.538103369383761470,	0.538061224768410230,	0.538019078807905560,	0.537976931502353590,	
+0.537934782851859250,	0.537892632856528000,	0.537850481516464750,	0.537808328831775760,	0.537766174802565830,	0.537724019428940550,	0.537681862711004820,	0.537639704648864790,	
+0.537597545242625490,	0.537555384492392040,	0.537513222398270370,	0.537471058960365730,	0.537428894178783480,	0.537386728053628530,	0.537344560585007120,	0.537302391773024410,	
+0.537260221617785640,	0.537218050119396050,	0.537175877277961570,	0.537133703093587430,	0.537091527566379120,	0.537049350696441550,	0.537007172483880970,	0.536964992928802510,	
+0.536922812031311540,	0.536880629791513190,	0.536838446209513600,	0.536796261285417910,	0.536754075019331480,	0.536711887411359560,	0.536669698461608390,	0.536627508170182900,	
+0.536585316537188220,	0.536543123562730600,	0.536500929246915280,	0.536458733589847530,	0.536416536591632690,	0.536374338252376790,	0.536332138572185090,	0.536289937551163050,	
+0.536247735189415710,	0.536205531487049520,	0.536163326444169420,	0.536121120060881080,	0.536078912337289550,	0.536036703273501060,	0.535994492869620860,	0.535952281125754330,	
+0.535910068042006800,	0.535867853618484550,	0.535825637855292580,	0.535783420752536150,	0.535741202310321520,	0.535698982528753920,	0.535656761407938830,	0.535614538947981500,	
+0.535572315148988180,	0.535530090011064000,	0.535487863534314770,	0.535445635718845400,	0.535403406564762260,	0.535361176072170710,	0.535318944241176100,	0.535276711071883900,	
+0.535234476564400150,	0.535192240718830310,	0.535150003535279860,	0.535107765013854040,	0.535065525154659110,	0.535023283957800410,	0.534981041423383210,	0.534938797551513630,	
+0.534896552342297160,	0.534854305795839260,	0.534812057912245290,	0.534769808691621380,	0.534727558134073130,	0.534685306239705890,	0.534643053008625020,	0.534600798440937000,	
+0.534558542536746840,	0.534516285296160350,	0.534474026719282790,	0.534431766806220620,	0.534389505557078980,	0.534347242971963570,	0.534304979050979620,	0.534262713794233620,	
+0.534220447201830930,	0.534178179273877010,	0.534135910010477330,	0.534093639411738260,	0.534051367477765050,	0.534009094208663050,	0.533966819604538620,	0.533924543665497240,	
+0.533882266391644490,	0.533839987783085720,	0.533797707839927300,	0.533755426562274700,	0.533713143950233390,	0.533670860003908950,	0.533628574723407740,	0.533586288108835020,	
+0.533544000160296680,	0.533501710877897880,	0.533459420261745200,	0.533417128311943990,	0.533374835028599950,	0.533332540411818430,	0.533290244461705920,	0.533247947178367880,	
+0.533205648561909550,	0.533163348612437420,	0.533121047330057050,	0.533078744714873930,	0.533036440766993640,	0.532994135486522640,	0.532951828873566180,	0.532909520928230300,	
+0.532867211650620120,	0.532824901040842350,	0.532782589099002330,	0.532740275825205890,	0.532697961219558260,	0.532655645282166250,	0.532613328013134990,	0.532571009412570520,	
+0.532528689480578080,	0.532486368217264250,	0.532444045622734620,	0.532401721697094430,	0.532359396440450270,	0.532317069852907720,	0.532274741934572470,	0.532232412685549880,	
+0.532190082105946760,	0.532147750195868460,	0.532105416955420680,	0.532063082384709010,	0.532020746483840010,	0.531978409252919170,	0.531936070692052290,	0.531893730801344830,	
+0.531851389580903500,	0.531809047030833650,	0.531766703151241190,	0.531724357942231500,	0.531682011403911470,	0.531639663536386250,	0.531597314339761540,	0.531554963814144020,	
+0.531512611959638950,	0.531470258776352460,	0.531427904264389910,	0.531385548423857990,	0.531343191254862180,	0.531300832757508390,	0.531258472931902090,	0.531216111778150090,	
+0.531173749296357740,	0.531131385486631080,	0.531089020349075460,	0.531046653883797790,	0.531004286090903440,	0.530961916970498330,	0.530919546522688130,	0.530877174747579340,	
+0.530834801645277740,	0.530792427215889040,	0.530750051459518920,	0.530707674376274090,	0.530665295966260000,	0.530622916229582350,	0.530580535166347730,	0.530538152776661830,	
+0.530495769060630560,	0.530453384018359510,	0.530410997649955250,	0.530368609955523600,	0.530326220935170460,	0.530283830589001300,	0.530241438917122940,	0.530199045919641070,	
+0.530156651596661480,	0.530114255948289980,	0.530071858974633160,	0.530029460675796700,	0.529987061051886530,	0.529944660103008450,	0.529902257829269030,	0.529859854230773970,	
+0.529817449307628970,	0.529775043059940610,	0.529732635487814680,	0.529690226591357230,	0.529647816370673710,	0.529605404825871150,	0.529562991957055030,	0.529520577764331370,	
+0.529478162247805970,	0.529435745407585530,	0.529393327243775750,	0.529350907756482520,	0.529308486945811780,	0.529266064811870220,	0.529223641354763410,	0.529181216574597490,	
+0.529138790471478160,	0.529096363045512330,	0.529053934296805470,	0.529011504225463500,	0.528969072831593000,	0.528926640115300000,	0.528884206076690290,	0.528841770715869690,	
+0.528799334032945100,	0.528756896028022120,	0.528714456701206870,	0.528672016052605160,	0.528629574082323810,	0.528587130790468480,	0.528544686177145340,	0.528502240242460060,	
+0.528459792986519570,	0.528417344409429670,	0.528374894511296380,	0.528332443292225510,	0.528289990752323750,	0.528247536891697230,	0.528205081710451660,	0.528162625208693170,	
+0.528120167386528450,	0.528077708244063300,	0.528035247781403430,	0.527992785998655960,	0.527950322895926470,	0.527907858473321110,	0.527865392730945790,	0.527822925668907320,	
+0.527780457287311600,	0.527737987586264670,	0.527695516565872440,	0.527653044226241820,	0.527610570567478510,	0.527568095589688870,	0.527525619292978480,	0.527483141677454470,	
+0.527440662743222650,	0.527398182490389170,	0.527355700919059810,	0.527313218029341610,	0.527270733821340380,	0.527228248295162020,	0.527185761450913230,	0.527143273288700140,	
+0.527100783808628900,	0.527058293010805310,	0.527015800895336280,	0.526973307462327840,	0.526930812711886020,	0.526888316644116950,	0.526845819259127320,	0.526803320557023170,	
+0.526760820537910850,	0.526718319201895930,	0.526675816549085680,	0.526633312579585900,	0.526590807293502830,	0.526548300690942270,	0.526505792772011480,	0.526463283536816040,	
+0.526420772985462190,	0.526378261118056630,	0.526335747934705500,	0.526293233435515040,	0.526250717620591060,	0.526208200490040690,	0.526165682043969850,	0.526123162282484680,	
+0.526080641205691310,	0.526038118813696780,	0.525995595106606870,	0.525953070084527960,	0.525910543747566070,	0.525868016095828120,	0.525825487129420230,	0.525782956848448560,	
+0.525740425253019120,	0.525697892343238940,	0.525655358119214040,	0.525612822581050470,	0.525570285728855110,	0.525527747562734130,	0.525485208082793750,	0.525442667289140020,	
+0.525400125181879840,	0.525357581761119460,	0.525315037026965140,	0.525272490979522780,	0.525229943618899630,	0.525187394945201610,	0.525144844958535080,	0.525102293659006180,	
+0.525059741046721820,	0.525017187121788020,	0.524974631884311370,	0.524932075334397790,	0.524889517472154290,	0.524846958297687130,	0.524804397811102440,	0.524761836012506480,	
+0.524719272902006260,	0.524676708479707820,	0.524634142745717290,	0.524591575700141810,	0.524549007343087290,	0.524506437674660320,	0.524463866694966810,	0.524421294404114110,	
+0.524378720802208150,	0.524336145889355400,	0.524293569665661870,	0.524250992131234720,	0.524208413286180170,	0.524165833130604610,	0.524123251664614040,	0.524080668888315840,	
+0.524038084801815800,	0.523995499405220610,	0.523952912698636310,	0.523910324682170140,	0.523867735355928120,	0.523825144720016400,	0.523782552774542220,	0.523739959519611610,	
+0.523697364955331040,	0.523654769081806750,	0.523612171899146000,	0.523569573407454690,	0.523526973606839530,	0.523484372497406540,	0.523441770079262960,	0.523399166352514930,	
+0.523356561317269040,	0.523313954973631310,	0.523271347321709210,	0.523228738361608660,	0.523186128093436230,	0.523143516517298070,	0.523100903633301640,	0.523058289441552860,	
+0.523015673942157980,	0.522973057135224240,	0.522930439020857900,	0.522887819599165530,	0.522845198870253160,	0.522802576834228150,	0.522759953491196750,	0.522717328841265540,	
+0.522674702884540540,	0.522632075621129120,	0.522589447051137520,	0.522546817174672330,	0.522504185991839790,	0.522461553502747140,	0.522418919707500540,	0.522376284606206660,	
+0.522333648198971660,	0.522291010485902980,	0.522248371467106790,	0.522205731142689640,	0.522163089512757810,	0.522120446577418520,	0.522077802336778250,	0.522035156790943030,	
+0.521992509940020330,	0.521949861784116290,	0.521907212323337700,	0.521864561557790600,	0.521821909487582560,	0.521779256112819720,	0.521736601433608670,	0.521693945450055870,	
+0.521651288162268470,	0.521608629570352920,	0.521565969674415710,	0.521523308474563300,	0.521480645970902930,	0.521437982163540980,	0.521395317052584020,	0.521352650638138400,	
+0.521309982920311610,	0.521267313899209770,	0.521224643574939360,	0.521181971947607630,	0.521139299017321030,	0.521096624784186170,	0.521053949248309390,	0.521011272409798050,	
+0.520968594268758630,	0.520925914825297600,	0.520883234079521530,	0.520840552031537670,	0.520797868681452500,	0.520755184029372600,	0.520712498075404320,	0.520669810819655240,	
+0.520627122262231620,	0.520584432403240150,	0.520541741242787290,	0.520499048780980410,	0.520456355017925980,	0.520413659953730230,	0.520370963588500660,	0.520328265922343820,	
+0.520285566955366210,	0.520242866687674280,	0.520200165119375610,	0.520157462250576570,	0.520114758081383740,	0.520072052611903810,	0.520029345842244030,	0.519986637772510860,	
+0.519943928402811120,	0.519901217733251260,	0.519858505763938660,	0.519815792494979780,	0.519773077926481420,	0.519730362058550050,	0.519687644891293040,	0.519644926424817080,	
+0.519602206659228290,	0.519559485594634380,	0.519516763231141820,	0.519474039568857290,	0.519431314607887380,	0.519388588348339450,	0.519345860790320080,	0.519303131933936070,	
+0.519260401779293890,	0.519217670326501010,	0.519174937575664020,	0.519132203526889600,	0.519089468180284340,	0.519046731535955820,	0.519003993594010500,	0.518961254354555090,	
+0.518918513817696270,	0.518875771983541510,	0.518833028852197290,	0.518790284423770510,	0.518747538698367650,	0.518704791676096290,	0.518662043357063010,	0.518619293741374170,	
+0.518576542829137570,	0.518533790620459570,	0.518491037115447080,	0.518448282314206590,	0.518405526216845770,	0.518362768823471210,	0.518320010134189710,	0.518277250149107750,	
+0.518234488868333120,	0.518191726291972190,	0.518148962420131980,	0.518106197252918950,	0.518063430790440930,	0.518020663032804250,	0.517977893980115840,	0.517935123632482400,	
+0.517892351990011490,	0.517849579052809820,	0.517806804820983620,	0.517764029294640940,	0.517721252473888120,	0.517678474358832190,	0.517635694949579730,	0.517592914246238430,	
+0.517550132248914770,	0.517507348957715770,	0.517464564372748010,	0.517421778494119300,	0.517378991321936100,	0.517336202856305440,	0.517293413097333900,	0.517250622045129170,	
+0.517207829699797950,	0.517165036061447040,	0.517122241130183240,	0.517079444906114240,	0.517036647389346630,	0.516993848579986980,	0.516951048478143100,	0.516908247083921580,	
+0.516865444397429430,	0.516822640418773350,	0.516779835148061030,	0.516737028585399050,	0.516694220730894550,	0.516651411584654110,	0.516608601146785530,	0.516565789417395500,	
+0.516522976396590950,	0.516480162084478560,	0.516437346481166130,	0.516394529586760460,	0.516351711401368370,	0.516308891925096550,	0.516266071158053010,	0.516223249100344230,	
+0.516180425752077340,	0.516137601113358930,	0.516094775184297030,	0.516051947964998090,	0.516009119455569040,	0.515966289656117460,	0.515923458566750150,	0.515880626187574240,	
+0.515837792518696330,	0.515794957560224310,	0.515752121312265000,	0.515709283774925310,	0.515666444948312040,	0.515623604832533000,	0.515580763427694990,	0.515537920733905140,	
+0.515495076751270040,	0.515452231479897600,	0.515409384919894630,	0.515366537071368150,	0.515323687934424960,	0.515280837509172970,	0.515237985795718890,	0.515195132794169400,	
+0.515152278504632520,	0.515109422927214840,	0.515066566062023720,	0.515023707909165740,	0.514980848468748920,	0.514937987740879950,	0.514895125725665980,	0.514852262423213910,	
+0.514809397833631550,	0.514766531957025600,	0.514723664793503400,	0.514680796343171650,	0.514637926606138270,	0.514595055582510060,	0.514552183272394270,	0.514509309675897590,	
+0.514466434793128040,	0.514423558624192310,	0.514380681169197440,	0.514337802428251110,	0.514294922401460350,	0.514252041088932300,	0.514209158490773750,	0.514166274607092740,	
+0.514123389437995960,	0.514080502983590760,	0.514037615243983950,	0.513994726219283440,	0.513951835909596030,	0.513908944315029090,	0.513866051435689530,	0.513823157271685040,	
+0.513780261823122750,	0.513737365090109810,	0.513694467072753010,	0.513651567771160500,	0.513608667185439070,	0.513565765315695530,	0.513522862162038020,	0.513479957724573330,	
+0.513437052003408720,	0.513394144998651210,	0.513351236710408610,	0.513308327138787930,	0.513265416283896440,	0.513222504145841030,	0.513179590724729740,	0.513136676020669480,	
+0.513093760033767500,	0.513050842764130820,	0.513007924211867360,	0.512965004377084030,	0.512922083259888310,	0.512879160860386870,	0.512836237178687980,	0.512793312214898540,	
+0.512750385969125810,	0.512707458441476690,	0.512664529632059330,	0.512621599540980630,	0.512578668168347520,	0.512535735514268120,	0.512492801578849470,	0.512449866362198800,	
+0.512406929864423040,	0.512363992085630330,	0.512321053025927680,	0.512278112685422340,	0.512235171064221340,	0.512192228162432820,	0.512149283980163790,	0.512106338517521410,	
+0.512063391774612910,	0.512020443751546320,	0.511977494448428550,	0.511934543865367080,	0.511891592002468920,	0.511848638859842110,	0.511805684437593670,	0.511762728735830730,	
+0.511719771754661210,	0.511676813494192360,	0.511633853954531430,	0.511590893135785540,	0.511547931038062840,	0.511504967661470240,	0.511462003006115220,	0.511419037072104790,	
+0.511376069859547200,	0.511333101368549370,	0.511290131599218880,	0.511247160551662640,	0.511204188225988790,	0.511161214622304570,	0.511118239740717350,	0.511075263581334040,	
+0.511032286144262990,	0.510989307429611240,	0.510946327437485910,	0.510903346167995040,	0.510860363621245870,	0.510817379797345760,	0.510774394696401730,	0.510731408318522260,	
+0.510688420663814150,	0.510645431732385080,	0.510602441524341980,	0.510559450039793190,	0.510516457278845760,	0.510473463241607140,	0.510430467928184580,	0.510387471338686230,	
+0.510344473473219100,	0.510301474331890880,	0.510258473914808500,	0.510215472222080410,	0.510172469253813540,	0.510129465010115580,	0.510086459491093550,	0.510043452696855800,	
+0.510000444627509380,	0.509957435283161510,	0.509914424663920340,	0.509871412769893120,	0.509828399601187420,	0.509785385157910390,	0.509742369440170150,	0.509699352448074070,	
+0.509656334181729620,	0.509613314641243930,	0.509570293826725250,	0.509527271738280940,	0.509484248376018470,	0.509441223740044970,	0.509398197830468690,	0.509355170647396990,	
+0.509312142190937460,	0.509269112461197100,	0.509226081458284300,	0.509183049182306390,	0.509140015633370410,	0.509096980811584830,	0.509053944717056670,	0.509010907349893740,	
+0.508967868710203160,	0.508924828798093310,	0.508881787613671420,	0.508838745157044970,	0.508795701428321310,	0.508752656427608810,	0.508709610155014590,	0.508666562610646470,	
+0.508623513794611460,	0.508580463707018040,	0.508537412347973560,	0.508494359717585500,	0.508451305815961100,	0.508408250643208940,	0.508365194199436040,	0.508322136484749780,	
+0.508279077499258600,	0.508236017243069770,	0.508192955716290750,	0.508149892919029120,	0.508106828851393020,	0.508063763513489920,	0.508020696905427390,	0.507977629027312800,	
+0.507934559879254400,	0.507891489461359650,	0.507848417773736240,	0.507805344816491310,	0.507762270589733440,	0.507719195093569890,	0.507676118328108440,	0.507633040293456240,	
+0.507589960989721760,	0.507546880417012460,	0.507503798575435480,	0.507460715465099520,	0.507417631086111710,	0.507374545438579740,	0.507331458522611190,	0.507288370338314200,	
+0.507245280885796460,	0.507202190165165430,	0.507159098176528490,	0.507116004919994200,	0.507072910395669930,	0.507029814603663480,	0.506986717544081980,	0.506943619217034120,	
+0.506900519622627170,	0.506857418760969010,	0.506814316632166810,	0.506771213236329340,	0.506728108573563760,	0.506685002643977870,	0.506641895447679120,	0.506598786984776010,	
+0.506555677255375980,	0.506512566259586290,	0.506469453997515640,	0.506426340469271260,	0.506383225674961190,	0.506340109614692560,	0.506296992288574050,	0.506253873696713040,	
+0.506210753839217430,	0.506167632716194470,	0.506124510327752850,	0.506081386673999930,	0.506038261755043520,	0.505995135570991180,	0.505952008121951290,	0.505908879408031420,	
+0.505865749429339260,	0.505822618185982510,	0.505779485678069520,	0.505736351905707760,	0.505693216869004810,	0.505650080568069150,	0.505606943003008350,	0.505563804173930100,	
+0.505520664080941980,	0.505477522724152690,	0.505434380103669480,	0.505391236219600360,	0.505348091072052810,	0.505304944661135290,	0.505261796986955500,	0.505218648049621240,	
+0.505175497849239990,	0.505132346385920310,	0.505089193659769790,	0.505046039670896230,	0.505002884419407220,	0.504959727905411440,	0.504916570129016250,	0.504873411090329350,	
+0.504830250789459310,	0.504787089226513610,	0.504743926401600150,	0.504700762314826520,	0.504657596966301300,	0.504614430356132180,	0.504571262484426960,	0.504528093351293230,	
+0.504484922956839550,	0.504441751301173640,	0.504398578384403380,	0.504355404206636160,	0.504312228767980990,	0.504269052068545110,	0.504225874108436670,	0.504182694887763130,	
+0.504139514406633290,	0.504096332665154630,	0.504053149663435060,	0.504009965401582380,	0.503966779879705060,	0.503923593097910790,	0.503880405056307160,	0.503837215755002950,	
+0.503794025194105770,	0.503750833373723390,	0.503707640293963530,	0.503664445954935090,	0.503621250356745430,	0.503578053499502690,	0.503534855383314440,	0.503491656008289380,	
+0.503448455374535200,	0.503405253482159920,	0.503362050331271130,	0.503318845921977510,	0.503275640254386870,	0.503232433328607120,	0.503189225144745840,	0.503146015702911840,	
+0.503102805003212920,	0.503059593045756540,	0.503016379830651620,	0.502973165358005740,	0.502929949627926920,	0.502886732640522860,	0.502843514395902250,	0.502800294894172990,	
+0.502757074135442910,	0.502713852119819780,	0.502670628847412430,	0.502627404318328530,	0.502584178532676010,	0.502540951490562770,	0.502497723192097510,	0.502454493637387920,	
+0.502411262826542140,	0.502368030759667740,	0.502324797436873750,	0.502281562858267750,	0.502238327023957320,	0.502195089934051600,	0.502151851588658160,	0.502108611987885030,	
+0.502065371131839910,	0.502022129020631920,	0.501978885654368550,	0.501935641033157910,	0.501892395157107820,	0.501849148026327070,	0.501805899640923480,	0.501762650001005170,	
+0.501719399106679840,	0.501676146958056400,	0.501632893555242650,	0.501589638898346620,	0.501546382987476110,	0.501503125822739930,	0.501459867404246080,	0.501416607732102060,	
+0.501373346806416990,	0.501330084627298560,	0.501286821194854900,	0.501243556509193720,	0.501200290570424150,	0.501157023378653750,	0.501113754933990910,	0.501070485236543180,	
+0.501027214286419720,	0.500983942083728210,	0.500940668628576780,	0.500897393921073350,	0.500854117961326840,	0.500810840749444930,	0.500767562285535980,	0.500724282569707800,	
+0.500681001602069190,	0.500637719382728160,	0.500594435911792760,	0.500551151189370990,	0.500507865215571670,	0.500464577990502590,	0.500421289514271780,	0.500377999786988160,	
+0.500334708808759520,	0.500291416579694110,	0.500248123099899740,	0.500204828369485430,	0.500161532388559090,	0.500118235157228860,	0.500074936675602770,	0.500031636943789600,	
+0.499988335961897460,	0.499945033730034400,	0.499901730248308420,	0.499858425516828460,	0.499815119535702460,	0.499771812305038640,	0.499728503824944940,	0.499685194095530310,	
+0.499641883116902720,	0.499598570889170030,	0.499555257412441330,	0.499511942686824470,	0.499468626712427750,	0.499425309489359090,	0.499381991017727510,	0.499338671297640980,	
+0.499295350329207800,	0.499252028112535770,	0.499208704647734150,	0.499165379934910720,	0.499122053974173860,	0.499078726765631480,	0.499035398309392640,	0.498992068605565330,	
+0.498948737654257850,	0.498905405455578100,	0.498862072009635280,	0.498818737316537250,	0.498775401376391980,	0.498732064189308600,	0.498688725755395080,	0.498645386074759720,	
+0.498602045147510550,	0.498558702973756600,	0.498515359553605930,	0.498472014887166860,	0.498428668974547350,	0.498385321815856540,	0.498341973411202450,	0.498298623760693450,	
+0.498255272864437440,	0.498211920722543720,	0.498168567335120100,	0.498125212702275110,	0.498081856824116710,	0.498038499700754090,	0.497995141332295170,	0.497951781718848410,	
+0.497908420860521780,	0.497865058757424540,	0.497821695409664590,	0.497778330817350070,	0.497734964980590110,	0.497691597899492690,	0.497648229574166320,	0.497604860004718990,	
+0.497561489191259860,	0.497518117133897040,	0.497474743832738870,	0.497431369287893550,	0.497387993499470100,	0.497344616467576720,	0.497301238192321800,	0.497257858673813390,	
+0.497214477912160720,	0.497171095907471830,	0.497127712659855230,	0.497084328169418940,	0.497040942436272230,	0.496997555460523210,	0.496954167242279870,	0.496910777781651490,	
+0.496867387078746170,	0.496823995133672370,	0.496780601946538230,	0.496737207517452930,	0.496693811846524670,	0.496650414933861810,	0.496607016779572590,	0.496563617383766200,	
+0.496520216746550720,	0.496476814868034740,	0.496433411748326340,	0.496390007387534800,	0.496346601785768230,	0.496303194943135130,	0.496259786859743700,	0.496216377535703130,	
+0.496172966971121680,	0.496129555166107410,	0.496086142120769620,	0.496042727835216520,	0.495999312309556570,	0.495955895543897910,	0.495912477538349940,	0.495869058293020800,	
+0.495825637808018970,	0.495782216083452690,	0.495738793119431250,	0.495695368916062810,	0.495651943473455980,	0.495608516791718860,	0.495565088870960900,	0.495521659711290140,	
+0.495478229312815270,	0.495434797675644470,	0.495391364799886990,	0.495347930685651190,	0.495304495333045490,	0.495261058742178180,	0.495217620913158630,	0.495174181846095020,	
+0.495130741541095600,	0.495087299998269670,	0.495043857217725480,	0.495000413199571660,	0.494956967943916410,	0.494913521450869200,	0.494870073720538100,	0.494826624753031850,	
+0.494783174548458660,	0.494739723106927930,	0.494696270428547860,	0.494652816513427130,	0.494609361361673940,	0.494565904973397750,	0.494522447348706820,	0.494478988487709770,	
+0.494435528390514860,	0.494392067057231540,	0.494348604487968020,	0.494305140682832600,	0.494261675641934680,	0.494218209365382630,	0.494174741853285030,	0.494131273105750220,	
+0.494087803122887580,	0.494044331904805460,	0.494000859451612480,	0.493957385763416970,	0.493913910840328430,	0.493870434682455060,	0.493826957289905610,	0.493783478662788380,	
+0.493739998801212890,	0.493696517705287330,	0.493653035375120510,	0.493609551810820720,	0.493566067012497440,	0.493522580980258970,	0.493479093714213670,	0.493435605214471050,	
+0.493392115481139370,	0.493348624514327430,	0.493305132314143520,	0.493261638880697240,	0.493218144214096770,	0.493174648314451010,	0.493131151181868180,	0.493087652816457890,	
+0.493044153218328510,	0.493000652387588670,	0.492957150324346840,	0.492913647028712540,	0.492870142500794140,	0.492826636740700320,	0.492783129748539550,	0.492739621524421360,	
+0.492696112068454100,	0.492652601380746180,	0.492609089461407130,	0.492565576310545430,	0.492522061928269690,	0.492478546314688460,	0.492435029469911250,	0.492391511394046470,	
+0.492347992087202870,	0.492304471549488920,	0.492260949781014200,	0.492217426781887070,	0.492173902552216440,	0.492130377092110600,	0.492086850401679210,	0.492043322481030720,	
+0.491999793330273940,	0.491956262949517280,	0.491912731338870310,	0.491869198498441570,	0.491825664428339800,	0.491782129128673470,	0.491738592599552220,	0.491695054841084500,	
+0.491651515853378740,	0.491607975636544570,	0.491564434190690510,	0.491520891515925320,	0.491477347612357510,	0.491433802480096720,	0.491390256119251470,	0.491346708529930510,	
+0.491303159712242420,	0.491259609666296840,	0.491216058392202230,	0.491172505890067450,	0.491128952160001080,	0.491085397202112640,	0.491041841016510720,	0.490998283603304220,	
+0.490954724962601620,	0.490911165094512600,	0.490867603999145700,	0.490824041676609310,	0.490780478127013310,	0.490736913350466040,	0.490693347347076540,	0.490649780116953260,	
+0.490606211660205900,	0.490562641976942990,	0.490519071067273550,	0.490475498931305990,	0.490431925569150050,	0.490388350980914380,	0.490344775166707770,	0.490301198126638860,	
+0.490257619860817280,	0.490214040369351730,	0.490170459652351060,	0.490126877709923860,	0.490083294542179800,	0.490039710149227540,	0.489996124531175640,	0.489952537688133790,	
+0.489908949620210590,	0.489865360327515040,	0.489821769810155680,	0.489778178068242310,	0.489734585101883500,	0.489690990911188170,	0.489647395496265010,	0.489603798857223770,	
+0.489560200994173020,	0.489516601907221740,	0.489473001596478610,	0.489429400062053320,	0.489385797304054570,	0.489342193322591320,	0.489298588117772160,	0.489254981689706940,	
+0.489211374038504290,	0.489167765164273180,	0.489124155067122310,	0.489080543747161370,	0.489036931204499150,	0.488993317439244120,	0.488949702451506260,	0.488906086241394140,	
+0.488862468809016790,	0.488818850154482840,	0.488775230277902210,	0.488731609179383520,	0.488687986859035750,	0.488644363316967640,	0.488600738553289000,	0.488557112568108520,	
+0.488513485361535270,	0.488469856933677950,	0.488426227284646350,	0.488382596414549170,	0.488338964323495490,	0.488295331011594060,	0.488251696478954610,	0.488208060725686010,	
+0.488164423751896840,	0.488120785557696950,	0.488077146143195140,	0.488033505508500440,	0.487989863653721660,	0.487946220578968530,	0.487902576284349850,	0.487858930769974770,	
+0.487815284035951980,	0.487771636082391320,	0.487727986909401610,	0.487684336517091920,	0.487640684905571000,	0.487597032074948760,	0.487553378025333940,	0.487509722756835680,	
+0.487466066269562680,	0.487422408563624950,	0.487378749639131190,	0.487335089496190140,	0.487291428134911830,	0.487247765555404890,	0.487204101757778560,	0.487160436742141540,	
+0.487116770508603860,	0.487073103057274250,	0.487029434388261910,	0.486985764501675520,	0.486942093397625180,	0.486898421076219560,	0.486854747537567910,	0.486811072781778990,	
+0.486767396808962800,	0.486723719619228110,	0.486680041212684100,	0.486636361589439630,	0.486592680749604660,	0.486548998693287940,	0.486505315420598330,	0.486461630931645850,	
+0.486417945226539310,	0.486374258305387890,	0.486330570168300390,	0.486286880815386900,	0.486243190246756220,	0.486199498462517530,	0.486155805462779700,	0.486112111247652800,	
+0.486068415817245580,	0.486024719171667340,	0.485981021311026880,	0.485937322235434290,	0.485893621944998360,	0.485849920439828390,	0.485806217720033240,	0.485762513785722940,	
+0.485718808637006340,	0.485675102273992740,	0.485631394696791010,	0.485587685905511160,	0.485543975900262050,	0.485500264681152650,	0.485456552248292980,	0.485412838601791960,	
+0.485369123741758830,	0.485325407668302460,	0.485281690381533020,	0.485237971881559260,	0.485194252168490660,	0.485150531242436010,	0.485106809103505400,	0.485063085751807790,	
+0.485019361187452480,	0.484975635410548390,	0.484931908421205540,	0.484888180219532950,	0.484844450805639930,	0.484800720179635380,	0.484756988341629450,	0.484713255291730980,	
+0.484669521030049010,	0.484625785556693670,	0.484582048871773810,	0.484538310975398840,	0.484494571867677750,	0.484450831548720540,	0.484407090018636300,	0.484363347277534330,	
+0.484319603325523600,	0.484275858162714290,	0.484232111789215270,	0.484188364205136000,	0.484144615410585450,	0.484100865405673710,	0.484057114190509840,	0.484013361765203150,	
+0.483969608129862730,	0.483925853284598640,	0.483882097229519910,	0.483838339964735520,	0.483794581490355700,	0.483750821806489480,	0.483707060913246110,	0.483663298810734780,	
+0.483619535499065560,	0.483575770978347470,	0.483532005248690000,	0.483488238310202100,	0.483444470162994020,	0.483400700807174730,	0.483356930242853700,	0.483313158470139950,	
+0.483269385489143720,	0.483225611299973990,	0.483181835902740280,	0.483138059297551550,	0.483094281484518110,	0.483050502463748920,	0.483006722235353460,	0.482962940799440850,	
+0.482919158156121240,	0.482875374305503760,	0.482831589247697480,	0.482787802982812540,	0.482744015510958190,	0.482700226832243730,	0.482656436946778340,	0.482612645854672230,	
+0.482568853556034520,	0.482525060050974670,	0.482481265339601780,	0.482437469422026140,	0.482393672298356780,	0.482349873968703270,	0.482306074433174690,	0.482262273691881290,	
+0.482218471744932260,	0.482174668592436960,	0.482130864234504690,	0.482087058671245570,	0.482043251902768870,	0.481999443929183650,	0.481955634750600160,	0.481911824367127590,	
+0.481868012778875480,	0.481824199985952940,	0.481780385988470340,	0.481736570786536700,	0.481692754380261660,	0.481648936769754400,	0.481605117955125120,	0.481561297936483060,	
+0.481517476713937740,	0.481473654287598360,	0.481429830657575220,	0.481386005823977560,	0.481342179786914850,	0.481298352546496280,	0.481254524102832200,	0.481210694456031870,	
+0.481166863606204360,	0.481123031553460090,	0.481079198297908290,	0.481035363839658450,	0.480991528178819850,	0.480947691315502750,	0.480903853249816490,	0.480860013981870560,	
+0.480816173511774190,	0.480772331839637860,	0.480728488965570630,	0.480684644889682160,	0.480640799612081730,	0.480596953132879700,	0.480553105452185270,	0.480509256570108070,	
+0.480465406486757340,	0.480421555202243500,	0.480377702716675740,	0.480333849030163350,	0.480289994142816760,	0.480246138054745140,	0.480202280766058200,	0.480158422276865170,	
+0.480114562587276470,	0.480070701697401350,	0.480026839607349490,	0.479982976317230140,	0.479939111827153710,	0.479895246137229500,	0.479851379247567210,	0.479807511158276080,	
+0.479763641869466570,	0.479719771381247940,	0.479675899693729870,	0.479632026807021660,	0.479588152721233780,	0.479544277436475540,	0.479500400952856620,	0.479456523270486270,	
+0.479412644389475010,	0.479368764309932140,	0.479324883031966960,	0.479281000555689950,	0.479237116881210510,	0.479193232008638230,	0.479149345938082450,	0.479105458669653710,	
+0.479061570203461350,	0.479017680539615080,	0.478973789678224180,	0.478929897619399190,	0.478886004363249460,	0.478842109909884740,	0.478798214259414380,	0.478754317411948850,	
+0.478710419367597510,	0.478666520126470150,	0.478622619688676090,	0.478578718054325840,	0.478534815223528810,	0.478490911196394360,	0.478447005973033020,	0.478403099553554200,	
+0.478359191938067580,	0.478315283126682590,	0.478271373119509850,	0.478227461916658600,	0.478183549518238720,	0.478139635924359600,	0.478095721135131770,	0.478051805150664590,	
+0.478007887971067970,	0.477963969596451210,	0.477920050026924890,	0.477876129262598480,	0.477832207303581720,	0.477788284149984090,	0.477744359801916100,	0.477700434259487270,	
+0.477656507522806920,	0.477612579591985660,	0.477568650467132980,	0.477524720148358670,	0.477480788635772200,	0.477436855929484150,	0.477392922029603930,	0.477348986936241390,	
+0.477305050649506010,	0.477261113169508420,	0.477217174496358030,	0.477173234630164700,	0.477129293571037890,	0.477085351319088250,	0.477041407874425230,	0.476997463237158690,	
+0.476953517407398110,	0.476909570385254110,	0.476865622170836170,	0.476821672764254190,	0.476777722165617650,	0.476733770375037170,	0.476689817392622280,	0.476645863218482460,	
+0.476601907852728380,	0.476557951295469520,	0.476513993546815780,	0.476470034606876650,	0.476426074475762850,	0.476382113153583860,	0.476338150640449600,	0.476294186936469580,	
+0.476250222041754430,	0.476206255956413750,	0.476162288680557430,	0.476118320214295010,	0.476074350557737170,	0.476030379710993490,	0.475986407674173830,	0.475942434447387760,	
+0.475898460030745980,	0.475854484424358070,	0.475810507628333550,	0.475766529642783150,	0.475722550467816420,	0.475678570103543310,	0.475634588550073400,	0.475590605807517440,	
+0.475546621875984900,	0.475502636755585850,	0.475458650446429820,	0.475414662948627550,	0.475370674262288630,	0.475326684387523010,	0.475282693324440290,	0.475238701073151190,	
+0.475194707633765370,	0.475150713006392780,	0.475106717191143060,	0.475062720188126900,	0.475018721997453930,	0.474974722619233790,	0.474930722053577170,	0.474886720300593810,	
+0.474842717360393630,	0.474798713233086260,	0.474754707918782550,	0.474710701417591970,	0.474666693729624720,	0.474622684854990320,	0.474578674793799620,	0.474534663546162190,	
+0.474490651112188130,	0.474446637491987070,	0.474402622685669740,	0.474358606693345900,	0.474314589515125560,	0.474270571151118310,	0.474226551601435060,	0.474182530866185450,	
+0.474138508945479040,	0.474094485839426820,	0.474050461548138350,	0.474006436071723770,	0.473962409410292660,	0.473918381563955940,	0.473874352532823280,	0.473830322317004730,	
+0.473786290916609950,	0.473742258331749880,	0.473698224562534130,	0.473654189609072850,	0.473610153471475670,	0.473566116149853560,	0.473522077644316090,	0.473478037954973450,	
+0.473433997081935340,	0.473389955025312610,	0.473345911785215010,	0.473301867361752620,	0.473257821755035170,	0.473213774965173530,	0.473169726992277500,	0.473125677836456760,	
+0.473081627497822180,	0.473037575976483550,	0.472993523272551010,	0.472949469386134190,	0.472905414317344170,	0.472861358066290590,	0.472817300633083580,	0.472773242017833000,	
+0.472729182220649640,	0.472685121241643360,	0.472641059080924240,	0.472596995738602140,	0.472552931214787860,	0.472508865509591310,	0.472464798623122630,	0.472420730555491500,	
+0.472376661306808940,	0.472332590877184770,	0.472288519266728660,	0.472244446475551690,	0.472200372503763620,	0.472156297351474570,	0.472112221018794460,	0.472068143505834150,	
+0.472024064812703480,	0.471979984939512600,	0.471935903886371410,	0.471891821653390890,	0.471847738240680770,	0.471803653648351310,	0.471759567876512300,	0.471715480925274820,	
+0.471671392794748620,	0.471627303485043890,	0.471583212996270540,	0.471539121328539590,	0.471495028481960790,	0.471450934456644040,	0.471406839252700330,	0.471362742870239550,	
+0.471318645309371900,	0.471274546570207230,	0.471230446652856630,	0.471186345557429890,	0.471142243284037250,	0.471098139832788640,	0.471054035203795070,	0.471009929397166460,	
+0.470965822413012990,	0.470921714251444520,	0.470877604912572250,	0.470833494396505900,	0.470789382703355800,	0.470745269833231890,	0.470701155786245220,	0.470657040562505620,	
+0.470612924162123410,	0.470568806585208550,	0.470524687831872070,	0.470480567902223810,	0.470436446796373750,	0.470392324514432970,	0.470348201056511430,	0.470304076422719320,	
+0.470259950613166670,	0.470215823627964550,	0.470171695467222820,	0.470127566131051890,	0.470083435619561620,	0.470039303932863140,	0.469995171071066480,	0.469951037034281820,	
+0.469906901822619180,	0.469862765436189710,	0.469818627875103310,	0.469774489139470340,	0.469730349229400770,	0.469686208145005670,	0.469642065886395120,	0.469597922453678980,	
+0.469553777846968450,	0.469509632066373420,	0.469465485112004370,	0.469421336983971150,	0.469377187682385010,	0.469333037207355920,	0.469288885558994230,	0.469244732737409960,	
+0.469200578742714200,	0.469156423575017020,	0.469112267234428780,	0.469068109721059450,	0.469023951035020260,	0.468979791176421190,	0.468935630145372650,	0.468891467941984660,	
+0.468847304566368360,	0.468803140018633820,	0.468758974298891020,	0.468714807407251190,	0.468670639343824360,	0.468626470108720940,	0.468582299702050900,	0.468538128123925530,	
+0.468493955374454820,	0.468449781453749270,	0.468405606361918800,	0.468361430099074770,	0.468317252665327140,	0.468273074060786390,	0.468228894285562580,	0.468184713339766860,	
+0.468140531223509400,	0.468096347936900640,	0.468052163480050580,	0.468007977853070520,	0.467963791056070500,	0.467919603089160640,	0.467875413952452130,	0.467831223646055120,	
+0.467787032170080000,	0.467742839524636970,	0.467698645709837210,	0.467654450725790820,	0.467610254572608300,	0.467566057250399740,	0.467521858759276490,	0.467477659099348520,	
+0.467433458270726470,	0.467389256273520350,	0.467345053107841470,	0.467300848773799960,	0.467256643271506340,	0.467212436601070700,	0.467168228762604390,	0.467124019756217530,	
+0.467079809582020560,	0.467035598240123690,	0.466991385730638250,	0.466947172053674310,	0.466902957209342110,	0.466858741197752840,	0.466814524019016740,	0.466770305673244350,	
+0.466726086160545780,	0.466681865481032350,	0.466637643634814300,	0.466593420622002150,	0.466549196442706040,	0.466504971097037370,	0.466460744585106220,	0.466416516907023240,	
+0.466372288062898540,	0.466328058052843550,	0.466283826876968400,	0.466239594535383660,	0.466195361028199580,	0.466151126355527470,	0.466106890517477560,	0.466062653514160040,	
+0.466018415345686220,	0.465974176012166450,	0.465929935513711200,	0.465885693850430660,	0.465841451022436350,	0.465797207029838400,	0.465752961872747400,	0.465708715551273630,	
+0.465664468065528470,	0.465620219415622150,	0.465575969601665250,	0.465531718623768080,	0.465487466482041980,	0.465443213176597200,	0.465398958707544390,	0.465354703074993770,	
+0.465310446279056820,	0.465266188319843730,	0.465221929197464800,	0.465177668912031440,	0.465133407463653890,	0.465089144852442850,	0.465044881078508550,	0.465000616141962420,	
+0.464956350042914750,	0.464912082781476220,	0.464867814357757090,	0.464823544771868770,	0.464779274023921660,	0.464735002114026300,	0.464690729042293080,	0.464646454808833430,	
+0.464602179413757640,	0.464557902857176410,	0.464513625139200030,	0.464469346259939960,	0.464425066219506520,	0.464380785018010440,	0.464336502655562030,	0.464292219132272700,	
+0.464247934448252850,	0.464203648603612740,	0.464159361598463940,	0.464115073432916750,	0.464070784107081860,	0.464026493621069570,	0.463982201974991510,	0.463937909168957880,	
+0.463893615203079530,	0.463849320077466710,	0.463805023792230990,	0.463760726347482780,	0.463716427743332660,	0.463672127979891100,	0.463627827057269630,	0.463583524975578590,	
+0.463539221734928730,	0.463494917335430470,	0.463450611777195260,	0.463406305060333530,	0.463361997184955630,	0.463317688151173190,	0.463273377959096460,	0.463229066608836340,	
+0.463184754100503080,	0.463140440434208430,	0.463096125610062580,	0.463051809628176490,	0.463007492488660470,	0.462963174191626080,	0.462918854737183800,	0.462874534125444330,	
+0.462830212356518170,	0.462785889430516850,	0.462741565347550840,	0.462697240107730890,	0.462652913711167460,	0.462608586157972120,	0.462564257448255360,	0.462519927582127510,	
+0.462475596559700270,	0.462431264381084010,	0.462386931046389620,	0.462342596555727510,	0.462298260909209280,	0.462253924106945380,	0.462209586149046730,	0.462165247035623670,	
+0.462120906766787910,	0.462076565342649850,	0.462032222763320400,	0.461987879028910030,	0.461943534139530320,	0.461899188095291740,	0.461854840896305240,	0.461810492542681250,	
+0.461766143034531400,	0.461721792371966200,	0.461677440555096130,	0.461633087584032880,	0.461588733458886850,	0.461544378179769010,	0.461500021746789830,	0.461455664160061010,	
+0.461411305419693050,	0.461366945525796770,	0.461322584478482790,	0.461278222277862690,	0.461233858924047060,	0.461189494417146790,	0.461145128757272370,	0.461100761944535530,	
+0.461056393979046800,	0.461012024860917020,	0.460967654590256850,	0.460923283167177960,	0.460878910591790810,	0.460834536864206390,	0.460790161984535260,	0.460745785952889060,	
+0.460701408769378480,	0.460657030434113930,	0.460612650947207210,	0.460568270308768850,	0.460523888518909850,	0.460479505577740700,	0.460435121485373190,	0.460390736241917900,	
+0.460346349847485740,	0.460301962302187340,	0.460257573606134400,	0.460213183759437540,	0.460168792762207680,	0.460124400614555510,	0.460080007316592710,	0.460035612868429870,	
+0.459991217270178000,	0.459946820521947740,	0.459902422623850780,	0.459858023575997750,	0.459813623378499290,	0.459769222031467200,	0.459724819535011990,	0.459680415889244800,	
+0.459636011094276100,	0.459591605150217800,	0.459547198057180530,	0.459502789815275200,	0.459458380424612510,	0.459413969885304310,	0.459369558197461170,	0.459325145361194120,	
+0.459280731376613790,	0.459236316243832100,	0.459191899962959560,	0.459147482534107250,	0.459103063957385870,	0.459058644232907260,	0.459014223360782010,	0.458969801341120750,	
+0.458925378174035450,	0.458880953859636730,	0.458836528398035570,	0.458792101789342710,	0.458747674033670010,	0.458703245131128090,	0.458658815081828040,	0.458614383885880610,	
+0.458569951543397580,	0.458525518054489710,	0.458481083419268020,	0.458436647637843200,	0.458392210710327210,	0.458347772636830690,	0.458303333417464710,	0.458258893052340020,	
+0.458214451541568480,	0.458170008885260770,	0.458125565083528090,	0.458081120136481110,	0.458036674044231710,	0.457992226806890610,	0.457947778424568570,	0.457903328897377450,	
+0.457858878225428030,	0.457814426408831410,	0.457769973447698380,	0.457725519342140730,	0.457681064092269330,	0.457636607698195250,	0.457592150160029240,	0.457547691477883320,	
+0.457503231651868130,	0.457458770682094840,	0.457414308568674210,	0.457369845311718260,	0.457325380911337680,	0.457280915367643650,	0.457236448680746920,	0.457191980850759460,	
+0.457147511877792070,	0.457103041761955490,	0.457058570503361740,	0.457014098102121510,	0.456969624558346050,	0.456925149872146160,	0.456880674043633750,	0.456836197072919670,	
+0.456791718960115110,	0.456747239705330820,	0.456702759308678870,	0.456658277770270020,	0.456613795090215490,	0.456569311268626040,	0.456524826305613700,	0.456480340201289300,	
+0.456435852955764110,	0.456391364569148810,	0.456346875041555520,	0.456302384373095060,	0.456257892563878280,	0.456213399614017080,	0.456168905523622440,	0.456124410292805480,	
+0.456079913921677180,	0.456035416410349450,	0.455990917758933190,	0.455946417967539600,	0.455901917036279580,	0.455857414965265220,	0.455812911754607250,	0.455768407404417040,	
+0.455723901914805380,	0.455679395285884410,	0.455634887517764930,	0.455590378610558230,	0.455545868564375180,	0.455501357379327840,	0.455456845055527140,	0.455412331593083920,	
+0.455367816992110260,	0.455323301252717080,	0.455278784375015620,	0.455234266359116850,	0.455189747205132780,	0.455145226913174330,	0.455100705483352850,	0.455056182915779150,	
+0.455011659210565410,	0.454967134367822550,	0.454922608387661850,	0.454878081270194250,	0.454833553015531800,	0.454789023623785480,	0.454744493095066590,	0.454699961429486100,	
+0.454655428627156080,	0.454610894688187490,	0.454566359612691650,	0.454521823400779570,	0.454477286052563270,	0.454432747568153770,	0.454388207947662050,	0.454343667191200170,	
+0.454299125298879110,	0.454254582270810230,	0.454210038107104530,	0.454165492807874100,	0.454120946373229970,	0.454076398803283490,	0.454031850098145560,	0.453987300257928440,	
+0.453942749282743030,	0.453898197172700800,	0.453853643927912660,	0.453809089548490810,	0.453764534034546250,	0.453719977386190300,	0.453675419603534080,	0.453630860686689670,	
+0.453586300635768100,	0.453541739450880390,	0.453497177132138720,	0.453452613679654120,	0.453408049093537990,	0.453363483373901370,	0.453318916520856370,	0.453274348534514090,	
+0.453229779414985990,	0.453185209162383030,	0.453140637776817400,	0.453096065258400240,	0.453051491607242900,	0.453006916823456400,	0.452962340907153040,	0.452917763858443790,	
+0.452873185677440170,	0.452828606364253150,	0.452784025918995030,	0.452739444341776880,	0.452694861632709670,	0.452650277791905750,	0.452605692819476100,	0.452561106715532240,	
+0.452516519480185180,	0.452471931113547220,	0.452427341615729510,	0.452382750986843380,	0.452338159226999990,	0.452293566336311570,	0.452248972314889250,	0.452204377162844510,	
+0.452159780880288460,	0.452115183467333310,	0.452070584924090250,	0.452025985250670670,	0.451981384447185770,	0.451936782513747800,	0.451892179450467830,	0.451847575257457450,	
+0.451802969934827710,	0.451758363482690990,	0.451713755901158360,	0.451669147190340900,	0.451624537350351020,	0.451579926381299730,	0.451535314283298680,	0.451490701056458940,	
+0.451446086700892810,	0.451401471216711480,	0.451356854604026470,	0.451312236862948970,	0.451267617993591220,	0.451222997996064470,	0.451178376870480180,	0.451133754616949540,	
+0.451089131235584970,	0.451044506726497540,	0.450999881089798830,	0.450955254325600070,	0.450910626434013530,	0.450865997415150430,	0.450821367269121920,	0.450776735996040460,	
+0.450732103596017120,	0.450687470069163490,	0.450642835415590800,	0.450598199635411420,	0.450553562728736590,	0.450508924695677770,	0.450464285536346320,	0.450419645250854540,	
+0.450375003839313610,	0.450330361301835180,	0.450285717638530420,	0.450241072849511810,	0.450196426934890540,	0.450151779894778170,	0.450107131729285960,	0.450062482438526310,	
+0.450017832022610480,	0.449973180481649640,	0.449928527815756260,	0.449883874025041540,	0.449839219109617160,	0.449794563069594310,	0.449749905905085460,	0.449705247616201900,	
+0.449660588203055160,	0.449615927665756530,	0.449571266004418550,	0.449526603219152390,	0.449481939310069690,	0.449437274277281750,	0.449392608120901040,	0.449347940841038800,	
+0.449303272437806660,	0.449258602911316030,	0.449213932261679220,	0.449169260489007630,	0.449124587593412450,	0.449079913575006210,	0.449035238433900200,	0.448990562170206110,	
+0.448945884784035190,	0.448901206275499950,	0.448856526644711710,	0.448811845891782140,	0.448767164016822600,	0.448722481019945500,	0.448677796901262250,	0.448633111660884430,	
+0.448588425298923510,	0.448543737815491890,	0.448499049210700880,	0.448454359484662330,	0.448409668637487440,	0.448364976669288760,	0.448320283580177670,	0.448275589370265900,	
+0.448230894039664710,	0.448186197588486710,	0.448141500016843160,	0.448096801324845530,	0.448052101512606270,	0.448007400580236750,	0.447962698527848760,	0.447917995355553540,	
+0.447873291063463800,	0.447828585651690810,	0.447783879120346400,	0.447739171469541840,	0.447694462699389780,	0.447649752810001580,	0.447605041801488970,	0.447560329673963360,	
+0.447515616427537340,	0.447470902062322260,	0.447426186578429920,	0.447381469975971720,	0.447336752255060250,	0.447292033415806920,	0.447247313458323080,	0.447202592382721360,	
+0.447157870189113130,	0.447113146877610280,	0.447068422448324120,	0.447023696901367340,	0.446978970236851290,	0.446934242454887830,	0.446889513555588370,	0.446844783539065540,	
+0.446800052405430690,	0.446755320154795740,	0.446710586787272100,	0.446665852302972400,	0.446621116702008050,	0.446576379984490960,	0.446531642150532480,	0.446486903200245260,	
+0.446442163133740800,	0.446397421951130580,	0.446352679652527170,	0.446307936238042050,	0.446263191707787110,	0.446218446061873770,	0.446173699300414730,	0.446128951423521490,	
+0.446084202431305810,	0.446039452323879200,	0.445994701101354420,	0.445949948763842860,	0.445905195311456450,	0.445860440744306640,	0.445815685062506130,	0.445770928266166380,	
+0.445726170355399350,	0.445681411330316470,	0.445636651191030460,	0.445591889937652810,	0.445547127570295460,	0.445502364089069900,	0.445457599494088810,	0.445412833785463700,	
+0.445368066963306160,	0.445323299027728830,	0.445278529978843260,	0.445233759816761330,	0.445188988541594610,	0.445144216153455840,	0.445099442652456550,	0.445054668038708630,	
+0.445009892312323630,	0.444965115473414330,	0.444920337522092200,	0.444875558458469210,	0.444830778282656990,	0.444785996994768170,	0.444741214594914390,	0.444696431083207560,	
+0.444651646459759300,	0.444606860724682250,	0.444562073878088100,	0.444517285920088320,	0.444472496850795760,	0.444427706670321940,	0.444382915378778890,	0.444338122976278120,	
+0.444293329462932430,	0.444248534838853460,	0.444203739104153120,	0.444158942258943030,	0.444114144303335960,	0.444069345237443570,	0.444024545061377840,	0.443979743775250290,	
+0.443934941379173830,	0.443890137873259980,	0.443845333257620820,	0.443800527532367930,	0.443755720697614040,	0.443710912753470970,	0.443666103700050110,	0.443621293537464430,	
+0.443576482265825580,	0.443531669885245450,	0.443486856395835740,	0.443442041797709300,	0.443397226090977810,	0.443352409275753200,	0.443307591352147200,	0.443262772320272560,	
+0.443217952180241070,	0.443173130932164650,	0.443128308576155040,	0.443083485112324980,	0.443038660540786280,	0.442993834861650890,	0.442949008075030570,	0.442904180181038050,	
+0.442859351179785140,	0.442814521071383860,	0.442769689855945840,	0.442724857533583980,	0.442680024104410040,	0.442635189568535590,	0.442590353926073600,	0.442545517177135690,	
+0.442500679321834010,	0.442455840360280240,	0.442411000292587230,	0.442366159118866730,	0.442321316839230870,	0.442276473453791290,	0.442231628962660940,	0.442186783365951520,	
+0.442141936663775100,	0.442097088856243490,	0.442052239943469540,	0.442007389925564990,	0.441962538802641970,	0.441917686574812170,	0.441872833242188620,	0.441827978804882950,	
+0.441783123263006890,	0.441738266616673480,	0.441693408865994400,	0.441648550011081780,	0.441603690052047360,	0.441558828989004170,	0.441513966822063900,	0.441469103551338670,	
+0.441424239176940290,	0.441379373698981730,	0.441334507117574770,	0.441289639432831500,	0.441244770644863730,	0.441199900753784460,	0.441155029759705390,	0.441110157662738810,	
+0.441065284462996370,	0.441020410160591180,	0.440975534755634950,	0.440930658248239460,	0.440885780638517740,	0.440840901926581540,	0.440796022112543100,	0.440751141196514260,	
+0.440706259178607900,	0.440661376058935910,	0.440616491837610480,	0.440571606514743420,	0.440526720090447740,	0.440481832564835310,	0.440436943938018240,	0.440392054210108410,	
+0.440347163381218880,	0.440302271451461450,	0.440257378420948310,	0.440212484289791320,	0.440167589058103490,	0.440122692725996740,	0.440077795293582870,	0.440032896760974900,	
+0.439987997128284620,	0.439943096395624460,	0.439898194563106080,	0.439853291630842640,	0.439808387598945970,	0.439763482467528330,	0.439718576236701570,	0.439673668906578770,	
+0.439628760477271840,	0.439583850948892960,	0.439538940321554050,	0.439494028595368240,	0.439449115770447320,	0.439404201846903650,	0.439359286824849040,	0.439314370704396610,	
+0.439269453485658270,	0.439224535168746270,	0.439179615753772570,	0.439134695240850190,	0.439089773630091110,	0.439044850921607170,	0.438999927115511560,	0.438955002211916080,	
+0.438910076210933090,	0.438865149112674490,	0.438820220917253480,	0.438775291624781900,	0.438730361235372070,	0.438685429749135940,	0.438640497166186640,	0.438595563486636090,	
+0.438550628710596630,	0.438505692838180190,	0.438460755869499950,	0.438415817804667820,	0.438370878643796150,	0.438325938386996850,	0.438280997034383110,	0.438236054586066900,	
+0.438191111042160130,	0.438146166402775980,	0.438101220668026430,	0.438056273838023870,	0.438011325912880170,	0.437966376892708560,	0.437921426777621030,	0.437876475567729910,	
+0.437831523263147230,	0.437786569863986120,	0.437741615370358550,	0.437696659782376980,	0.437651703100153390,	0.437606745323800890,	0.437561786453431580,	0.437516826489157740,	
+0.437471865431091510,	0.437426903279345970,	0.437381940034033130,	0.437336975695265140,	0.437292010263155060,	0.437247043737814920,	0.437202076119357190,	0.437157107407893930,	
+0.437112137603538230,	0.437067166706402220,	0.437022194716598260,	0.436977221634238470,	0.436932247459435990,	0.436887272192302890,	0.436842295832951640,	0.436797318381494220,	
+0.436752339838043900,	0.436707360202712720,	0.436662379475613150,	0.436617397656857250,	0.436572414746558280,	0.436527430744828250,	0.436482445651779630,	0.436437459467524490,	
+0.436392472192176080,	0.436347483825846540,	0.436302494368647880,	0.436257503820693390,	0.436212512182095110,	0.436167519452965560,	0.436122525633416860,	0.436077530723562200,	
+0.436032534723513720,	0.435987537633383880,	0.435942539453284820,	0.435897540183329820,	0.435852539823630980,	0.435807538374300750,	0.435762535835451330,	0.435717532207195890,	
+0.435672527489646690,	0.435627521682916130,	0.435582514787116400,	0.435537506802360750,	0.435492497728761360,	0.435447487566430310,	0.435402476315480960,	0.435357463976025370,	
+0.435312450548176190,	0.435267436032045430,	0.435222420427746500,	0.435177403735391540,	0.435132385955093070,	0.435087367086963220,	0.435042347131115340,	0.434997326087661560,	
+0.434952303956714530,	0.434907280738386300,	0.434862256432790310,	0.434817231040038670,	0.434772204560243900,	0.434727176993518260,	0.434682148339975090,	0.434637118599726540,	
+0.434592087772884770,	0.434547055859563210,	0.434502022859873990,	0.434456988773929690,	0.434411953601842590,	0.434366917343725960,	0.434321879999692020,	0.434276841569853410,	
+0.434231802054322270,	0.434186761453212060,	0.434141719766634960,	0.434096676994703500,	0.434051633137529980,	0.434006588195227800,	0.433961542167909110,	0.433916495055686580,	
+0.433871446858672400,	0.433826397576980050,	0.433781347210721650,	0.433736295760009490,	0.433691243224957000,	0.433646189605676410,	0.433601134902280360,	0.433556079114881090,	
+0.433511022243591950,	0.433465964288525300,	0.433420905249793760,	0.433375845127509480,	0.433330783921786090,	0.433285721632735650,	0.433240658260470980,	0.433195593805104200,	
+0.433150528266748880,	0.433105461645517220,	0.433060393941521900,	0.433015325154875230,	0.432970255285690610,	0.432925184334080390,	0.432880112300157160,	0.432835039184033270,	
+0.432789964985822170,	0.432744889705636180,	0.432699813343587590,	0.432654735899789810,	0.432609657374355250,	0.432564577767396490,	0.432519497079025930,	0.432474415309356990,	
+0.432429332458502010,	0.432384248526573760,	0.432339163513684450,	0.432294077419947630,	0.432248990245475580,	0.432203901990381110,	0.432158812654776460,	0.432113722238775200,	
+0.432068630742489630,	0.432023538166032450,	0.431978444509516060,	0.431933349773053920,	0.431888253956758450,	0.431843157060741940,	0.431798059085117920,	0.431752960029998740,	
+0.431707859895497200,	0.431662758681725540,	0.431617656388797450,	0.431572553016825230,	0.431527448565921570,	0.431482343036198920,	0.431437236427770820,	0.431392128740749610,	
+0.431347019975248100,	0.431301910131378640,	0.431256799209254750,	0.431211687208988950,	0.431166574130693870,	0.431121459974481980,	0.431076344740466800,	0.431031228428760790,	
+0.430986111039476320,	0.430940992572726940,	0.430895873028625140,	0.430850752407283600,	0.430805630708814780,	0.430760507933332320,	0.430715384080948560,	0.430670259151776370,	
+0.430625133145928100,	0.430580006063517430,	0.430534877904656720,	0.430489748669458830,	0.430444618358036160,	0.430399486970502340,	0.430354354506969790,	0.430309220967551360,	
+0.430264086352359520,	0.430218950661507840,	0.430173813895108780,	0.430128676053275150,	0.430083537136119460,	0.430038397143755360,	0.429993256076295240,	0.429948113933851570,	
+0.429902970716538050,	0.429857826424467070,	0.429812681057751500,	0.429767534616503850,	0.429722387100837770,	0.429677238510865760,	0.429632088846700620,	0.429586938108454830,	
+0.429541786296242120,	0.429496633410174970,	0.429451479450366210,	0.429406324416928330,	0.429361168309975060,	0.429316011129618870,	0.429270852875972660,	0.429225693549148910,	
+0.429180533149261360,	0.429135371676422460,	0.429090209130744690,	0.429045045512341850,	0.428999880821326340,	0.428954715057811190,	0.428909548221908800,	0.428864380313732970,	
+0.428819211333396180,	0.428774041281011380,	0.428728870156691030,	0.428683697960548950,	0.428638524692697590,	0.428593350353249970,	0.428548174942318560,	0.428502998460017050,	
+0.428457820906458120,	0.428412642281754570,	0.428367462586019100,	0.428322281819365320,	0.428277099981905830,	0.428231917073753190,	0.428186733095021200,	0.428141548045822330,	
+0.428096361926269600,	0.428051174736475580,	0.428005986476554020,	0.427960797146617500,	0.427915606746778980,	0.427870415277151030,	0.427825222737847450,	0.427780029128980830,	
+0.427734834450664130,	0.427689638703009910,	0.427644441886132040,	0.427599244000143040,	0.427554045045155930,	0.427508845021283330,	0.427463643928639000,	0.427418441767335570,	
+0.427373238537485600,	0.427328034239202960,	0.427282828872600270,	0.427237622437790450,	0.427192414934886190,	0.427147206364001330,	0.427101996725248400,	0.427056786018740530,	
+0.427011574244590240,	0.426966361402911500,	0.426921147493816770,	0.426875932517419230,	0.426830716473831420,	0.426785499363167230,	0.426740281185539310,	0.426695061941060660,	
+0.426649841629843930,	0.426604620252003080,	0.426559397807650620,	0.426514174296899640,	0.426468949719862880,	0.426423724076654130,	0.426378497367386090,	0.426333269592171380,	
+0.426288040751123860,	0.426242810844356280,	0.426197579871981700,	0.426152347834112710,	0.426107114730863320,	0.426061880562346120,	0.426016645328674170,	0.425971409029960280,	
+0.425926171666318190,	0.425880933237860750,	0.425835693744700930,	0.425790453186951470,	0.425745211564726280,	0.425699968878138100,	0.425654725127299960,	0.425609480312324600,	
+0.425564234433325970,	0.425518987490416720,	0.425473739483709650,	0.425428490413318590,	0.425383240279356310,	0.425337989081935930,	0.425292736821170190,	0.425247483497173010,	
+0.425202229110057120,	0.425156973659935660,	0.425111717146921360,	0.425066459571128150,	0.425021200932668820,	0.424975941231656500,	0.424930680468203870,	0.424885418642424960,	
+0.424840155754432570,	0.424794891804339710,	0.424749626792259250,	0.424704360718305090,	0.424659093582590070,	0.424613825385226910,	0.424568556126329600,	0.424523285806010840,	
+0.424478014424383930,	0.424432741981561560,	0.424387468477657740,	0.424342193912785270,	0.424296918287057290,	0.424251641600586590,	0.424206363853487200,	0.424161085045871910,	
+0.424115805177853910,	0.424070524249546000,	0.424025242261062200,	0.423979959212515240,	0.423934675104018440,	0.423889389935684540,	0.423844103707627540,	0.423798816419960310,	
+0.423753528072795980,	0.423708238666247520,	0.423662948200428770,	0.423617656675452700,	0.423572364091432120,	0.423527070448480980,	0.423481775746712140,	0.423436479986238900,	
+0.423391183167174060,	0.423345885289631680,	0.423300586353724580,	0.423255286359566000,	0.423209985307268780,	0.423164683196947060,	0.423119380028713580,	0.423074075802681690,	
+0.423028770518964150,	0.422983464177675130,	0.422938156778927430,	0.422892848322834360,	0.422847538809508760,	0.422802228239064710,	0.422756916611615070,	0.422711603927272810,	
+0.422666290186151870,	0.422620975388365240,	0.422575659534026150,	0.422530342623247510,	0.422485024656143400,	0.422439705632826790,	0.422394385553410860,	0.422349064418008570,	
+0.422303742226734060,	0.422258418979700120,	0.422213094677020230,	0.422167769318807120,	0.422122442905175030,	0.422077115436236830,	0.422031786912105800,	0.421986457332894970,	
+0.421941126698718360,	0.421895795009688930,	0.421850462265919600,	0.421805128467524550,	0.421759793614616680,	0.421714457707309310,	0.421669120745715390,	0.421623782729949050,	
+0.421578443660123310,	0.421533103536351430,	0.421487762358746350,	0.421442420127422330,	0.421397076842492220,	0.421351732504069430,	0.421306387112266920,	0.421261040667198830,	
+0.421215693168978170,	0.421170344617718240,	0.421124995013532070,	0.421079644356533780,	0.421034292646836390,	0.420988939884552880,	0.420943586069797430,	0.420898231202682990,	
+0.420852875283322990,	0.420807518311830390,	0.420762160288319420,	0.420716801212903060,	0.420671441085694650,	0.420626079906807230,	0.420580717676355080,	0.420535354394451060,	
+0.420489990061208680,	0.420444624676740930,	0.420399258241162030,	0.420353890754585010,	0.420308522217123230,	0.420263152628889750,	0.420217781989998760,	0.420172410300563350,	
+0.420127037560696910,	0.420081663770512430,	0.420036288930124240,	0.419990913039645310,	0.419945536099188720,	0.419900158108868660,	0.419854779068798260,	0.419809398979090860,	
+0.419764017839859560,	0.419718635651218640,	0.419673252413281130,	0.419627868126160490,	0.419582482789969740,	0.419537096404823230,	0.419491708970833990,	0.419446320488115420,	
+0.419400930956780660,	0.419355540376944000,	0.419310148748718530,	0.419264756072217640,	0.419219362347554410,	0.419173967574843260,	0.419128571754197150,	0.419083174885729210,	
+0.419037776969553740,	0.418992378005783820,	0.418946977994532950,	0.418901576935914290,	0.418856174830042010,	0.418810771677029350,	0.418765367476989720,	0.418719962230036320,	
+0.418674555936283390,	0.418629148595844050,	0.418583740208831880,	0.418538330775359900,	0.418492920295542530,	0.418447508769492880,	0.418402096197324440,	0.418356682579150370,	
+0.418311267915084940,	0.418265852205241370,	0.418220435449732810,	0.418175017648673540,	0.418129598802176710,	0.418084178910355870,	0.418038757973324240,	0.417993335991196040,	
+0.417947912964084570,	0.417902488892103300,	0.417857063775365360,	0.417811637613985210,	0.417766210408075930,	0.417720782157751160,	0.417675352863124020,	0.417629922524308920,	
+0.417584491141418990,	0.417539058714567810,	0.417493625243868630,	0.417448190729435790,	0.417402755171382420,	0.417357318569822220,	0.417311880924868260,	0.417266442236635060,	
+0.417221002505235690,	0.417175561730783460,	0.417130119913392720,	0.417084677053176700,	0.417039233150248990,	0.416993788204722770,	0.416948342216712450,	0.416902895186331330,	
+0.416857447113692940,	0.416811997998910560,	0.416766547842098540,	0.416721096643370200,	0.416675644402839110,	0.416630191120618500,	0.416584736796822790,	0.416539281431565270,	
+0.416493825024959520,	0.416448367577118840,	0.416402909088157580,	0.416357449558189100,	0.416311988987326580,	0.416266527375684480,	0.416221064723376110,	0.416175601030515040,	
+0.416130136297214570,	0.416084670523589160,	0.416039203709752060,	0.415993735855817000,	0.415948266961897130,	0.415902797028107060,	0.415857326054559940,	0.415811854041369560,	
+0.415766380988649100,	0.415720906896513090,	0.415675431765074880,	0.415629955594448040,	0.415584478384745880,	0.415539000136082970,	0.415493520848572550,	0.415448040522327920,	
+0.415402559157463550,	0.415357076754092840,	0.415311593312329420,	0.415266108832286650,	0.415220623314078940,	0.415175136757819700,	0.415129649163622660,	0.415084160531601080,	
+0.415038670861869460,	0.414993180154541170,	0.414947688409729950,	0.414902195627549100,	0.414856701808113180,	0.414811206951535500,	0.414765711057929810,	0.414720214127409390,	
+0.414674716160088890,	0.414629217156081590,	0.414583717115500850,	0.414538216038461190,	0.414492713925076030,	0.414447210775459040,	0.414401706589723640,	0.414356201367984400,	
+0.414310695110354620,	0.414265187816948100,	0.414219679487878250,	0.414174170123259580,	0.414128659723205510,	0.414083148287829770,	0.414037635817245730,	0.413992122311568010,	
+0.413946607770910020,	0.413901092195385510,	0.413855575585107830,	0.413810057940191660,	0.413764539260750300,	0.413719019546897600,	0.413673498798746990,	0.413627977016413020,	
+0.413582454200009050,	0.413536930349648610,	0.413491405465446220,	0.413445879547515330,	0.413400352595969740,	0.413354824610922820,	0.413309295592489300,	0.413263765540782540,	
+0.413218234455916320,	0.413172702338004130,	0.413127169187160580,	0.413081635003499150,	0.413036099787133570,	0.412990563538177420,	0.412945026256745170,	0.412899487942950450,	
+0.412853948596906940,	0.412808408218728160,	0.412762866808528810,	0.412717324366422220,	0.412671780892521990,	0.412626236386942680,	0.412580690849797760,	0.412535144281201140,	
+0.412489596681266280,	0.412444048050107760,	0.412398498387839150,	0.412352947694574310,	0.412307395970426700,	0.412261843215511010,	0.412216289429940710,	0.412170734613829690,	
+0.412125178767291380,	0.412079621890440560,	0.412034063983390710,	0.411988505046255670,	0.411942945079148970,	0.411897384082185290,	0.411851822055478210,	0.411806258999141140,	
+0.411760694913288820,	0.411715129798034760,	0.411669563653492890,	0.411623996479776650,	0.411578428277000920,	0.411532859045279030,	0.411487288784725070,	0.411441717495452440,	
+0.411396145177575890,	0.411350571831209040,	0.411304997456465700,	0.411259422053459500,	0.411213845622305170,	0.411168268163116190,	0.411122689676006570,	0.411077110161089780,	
+0.411031529618480660,	0.410985948048292690,	0.410940365450639890,	0.410894781825635710,	0.410849197173395020,	0.410803611494031330,	0.410758024787658220,	0.410712437054390420,	
+0.410666848294341520,	0.410621258507625540,	0.410575667694355990,	0.410530075854647680,	0.410484482988614170,	0.410438889096369500,	0.410393294178027170,	0.410347698233701990,	
+0.410302101263507580,	0.410256503267557910,	0.410210904245966620,	0.410165304198848450,	0.410119703126316960,	0.410074101028486290,	0.410028497905469910,	0.409982893757382730,	
+0.409937288584338310,	0.409891682386450240,	0.409846075163833370,	0.409800466916601320,	0.409754857644868130,	0.409709247348747360,	0.409663636028353870,	0.409618023683801350,	
+0.409572410315203690,	0.409526795922674660,	0.409481180506329030,	0.409435564066280460,	0.409389946602642940,	0.409344328115530180,	0.409298708605056960,	0.409253088071337030,	
+0.409207466514484360,	0.409161843934612630,	0.409116220331836640,	0.409070595706270130,	0.409024970058026740,	0.408979343387221360,	0.408933715693967580,	0.408888086978379530,	
+0.408842457240570830,	0.408796826480656410,	0.408751194698749880,	0.408705561894965430,	0.408659928069416640,	0.408614293222218430,	0.408568657353484520,	0.408523020463328950,	
+0.408477382551865390,	0.408431743619208810,	0.408386103665472840,	0.408340462690771680,	0.408294820695218890,	0.408249177678929490,	0.408203533642017170,	0.408157888584595560,	
+0.408112242506779630,	0.408066595408683120,	0.408020947290420100,	0.407975298152104370,	0.407929647993850730,	0.407883996815772980,	0.407838344617985290,	0.407792691400601260,	
+0.407747037163735950,	0.407701381907503050,	0.407655725632016690,	0.407610068337390610,	0.407564410023739780,	0.407518750691177880,	0.407473090339819100,	0.407427428969777240,	
+0.407381766581167200,	0.407336103174102740,	0.407290438748698020,	0.407244773305066810,	0.407199106843324050,	0.407153439363583500,	0.407107770865959010,	0.407062101350565420,	
+0.407016430817516650,	0.406970759266926770,	0.406925086698909590,	0.406879413113580110,	0.406833738511052090,	0.406788062891439710,	0.406742386254856810,	0.406696708601418320,	
+0.406651029931238030,	0.406605350244430230,	0.406559669541108560,	0.406513987821388200,	0.406468305085382840,	0.406422621333206720,	0.406376936564973650,	0.406331250780798630,	
+0.406285563980795520,	0.406239876165078060,	0.406194187333761340,	0.406148497486959140,	0.406102806624785650,	0.406057114747354790,	0.406011421854781560,	0.405965727947179720,	
+0.405920033024663620,	0.405874337087346990,	0.405828640135344920,	0.405782942168771310,	0.405737243187740290,	0.405691543192365780,	0.405645842182762780,	0.405600140159045220,	
+0.405554437121327270,	0.405508733069722850,	0.405463028004347030,	0.405417321925313600,	0.405371614832736480,	0.405325906726730690,	0.405280197607410190,	0.405234487474889160,	
+0.405188776329281520,	0.405143064170702340,	0.405097350999265470,	0.405051636815085270,	0.405005921618275530,	0.404960205408951390,	0.404914488187226810,	0.404868769953215910,	
+0.404823050707032730,	0.404777330448792330,	0.404731609178608620,	0.404685886896595900,	0.404640163602868030,	0.404594439297540130,	0.404548713980726170,	0.404502987652540390,	
+0.404457260313096760,	0.404411531962510400,	0.404365802600895160,	0.404320072228365080,	0.404274340845035160,	0.404228608451019430,	0.404182875046432130,	0.404137140631387280,	
+0.404091405206000010,	0.404045668770384170,	0.403999931324654170,	0.403954192868923980,	0.403908453403308660,	0.403862712927922200,	0.403816971442878980,	0.403771228948292980,	
+0.403725485444279220,	0.403679740930951820,	0.403633995408425040,	0.403588248876812830,	0.403542501336230490,	0.403496752786791810,	0.403451003228610880,	0.403405252661802830,	
+0.403359501086481660,	0.403313748502761750,	0.403267994910757040,	0.403222240310582790,	0.403176484702352900,	0.403130728086181830,	0.403084970462183500,	0.403039211830473200,	
+0.402993452191164780,	0.402947691544372820,	0.402901929890211170,	0.402856167228795140,	0.402810403560238670,	0.402764638884656190,	0.402718873202161710,	0.402673106512870470,	
+0.402627338816896440,	0.402581570114353690,	0.402535800405357360,	0.402490029690021570,	0.402444257968460730,	0.402398485240788810,	0.402352711507121100,	0.402306936767571570,	
+0.402261161022254730,	0.402215384271284560,	0.402169606514776400,	0.402123827752844170,	0.402078047985602370,	0.402032267213165040,	0.401986485435647470,	0.401940702653163670,	
+0.401894918865828120,	0.401849134073754890,	0.401803348277059160,	0.401757561475855120,	0.401711773670256790,	0.401665984860379350,	0.401620195046337000,	0.401574404228244200,	
+0.401528612406214900,	0.401482819580364520,	0.401437025750807140,	0.401391230917657100,	0.401345435081028660,	0.401299638241036980,	0.401253840397796210,	0.401208041551420870,	
+0.401162241702025020,	0.401116440849723980,	0.401070638994631800,	0.401024836136863020,	0.400979032276531750,	0.400933227413753370,	0.400887421548641820,	0.400841614681311800,	
+0.400795806811877320,	0.400749997940453680,	0.400704188067155080,	0.400658377192095630,	0.400612565315390580,	0.400566752437154170,	0.400520938557500870,	0.400475123676544810,	
+0.400429307794401330,	0.400383490911184580,	0.400337673027009120,	0.400291854141989090,	0.400246034256239840,	0.400200213369875430,	0.400154391483010570,	0.400108568595759270,	
+0.400062744708236990,	0.400016919820557810,	0.399971093932836360,	0.399925267045186770,	0.399879439157724390,	0.399833610270563470,	0.399787780383818070,	0.399741949497603610,	
+0.399696117612034330,	0.399650284727224750,	0.399604450843288990,	0.399558615960342590,	0.399512780078499610,	0.399466943197874680,	0.399421105318581990,	0.399375266440736900,	
+0.399329426564453690,	0.399283585689846950,	0.399237743817030750,	0.399191900946120670,	0.399146057077230830,	0.399100212210475810,	0.399054366345969860,	0.399008519483828430,	
+0.398962671624165710,	0.398916822767095840,	0.398870972912734380,	0.398825122061195470,	0.398779270212593740,	0.398733417367043490,	0.398687563524660000,	0.398641708685557710,	
+0.398595852849851050,	0.398549996017654400,	0.398504138189083200,	0.398458279364251600,	0.398412419543274330,	0.398366558726265580,	0.398320696913340880,	0.398274834104614390,	
+0.398228970300200820,	0.398183105500214460,	0.398137239704770720,	0.398091372913983890,	0.398045505127968600,	0.397999636346839160,	0.397953766570711020,	0.397907895799698490,	
+0.397862024033915800,	0.397816151273478470,	0.397770277518500750,	0.397724402769097320,	0.397678527025382480,	0.397632650287471750,	0.397586772555479420,	0.397540893829520130,	
+0.397495014109708170,	0.397449133396159120,	0.397403251688987210,	0.397357368988307200,	0.397311485294233320,	0.397265600606881150,	0.397219714926364990,	0.397173828252799570,	
+0.397127940586299130,	0.397082051926979260,	0.397036162274954250,	0.396990271630338450,	0.396944379993247390,	0.396898487363795350,	0.396852593742097080,	0.396806699128266940,	
+0.396760803522420440,	0.396714906924671980,	0.396669009335136210,	0.396623110753927530,	0.396577211181161460,	0.396531310616952350,	0.396485409061415000,	0.396439506514663700,	
+0.396393602976814030,	0.396347698447980400,	0.396301792928277500,	0.396255886417819670,	0.396209978916722600,	0.396164070425100550,	0.396118160943067900,	0.396072250470740290,	
+0.396026339008232030,	0.395980426555657910,	0.395934513113132320,	0.395888598680770920,	0.395842683258687930,	0.395796766846998270,	0.395750849445816290,	0.395704931055257610,	
+0.395659011675436600,	0.395613091306468050,	0.395567169948466360,	0.395521247601547170,	0.395475324265824820,	0.395429399941414180,	0.395383474628429650,	0.395337548326986870,	
+0.395291621037200170,	0.395245692759183980,	0.395199763493054020,	0.395153833238924670,	0.395107901996910650,	0.395061969767126540,	0.395016036549687920,	0.394970102344709200,	
+0.394924167152305160,	0.394878230972590340,	0.394832293805680360,	0.394786355651689620,	0.394740416510733050,	0.394694476382924990,	0.394648535268381120,	0.394602593167215960,	
+0.394556650079544320,	0.394510706005480600,	0.394464760945140550,	0.394418814898638610,	0.394372867866089600,	0.394326919847608040,	0.394280970843309600,	0.394235020853308690,	
+0.394189069877719840,	0.394143117916658740,	0.394097164970239830,	0.394051211038577990,	0.394005256121787770,	0.393959300219984760,	0.393913343333283540,	0.393867385461798950,	
+0.393821426605645450,	0.393775466764938850,	0.393729505939793560,	0.393683544130324470,	0.393637581336646170,	0.393591617558874280,	0.393545652797123390,	0.393499687051508340,	
+0.393453720322143650,	0.393407752609145070,	0.393361783912627160,	0.393315814232704340,	0.393269843569492410,	0.393223871923105870,	0.393177899293659590,	0.393131925681268260,	
+0.393085951086047440,	0.393039975508111760,	0.392993998947576200,	0.392948021404555150,	0.392902042879164530,	0.392856063371518740,	0.392810082881732800,	0.392764101409921300,	
+0.392718118956199900,	0.392672135520683200,	0.392626151103486200,	0.392580165704723370,	0.392534179324510570,	0.392488191962962310,	0.392442203620193160,	0.392396214296318930,	
+0.392350223991454140,	0.392304232705713800,	0.392258240439212480,	0.392212247192065930,	0.392166252964388780,	0.392120257756296050,	0.392074261567902200,	0.392028264399323150,	
+0.391982266250673390,	0.391936267122068030,	0.391890267013621510,	0.391844265925449800,	0.391798263857667420,	0.391752260810389330,	0.391706256783730220,	0.391660251777805890,	
+0.391614245792730910,	0.391568238828620300,	0.391522230885588680,	0.391476221963751920,	0.391430212063224590,	0.391384201184121370,	0.391338189326558010,	0.391292176490649180,	
+0.391246162676509910,	0.391200147884254830,	0.391154132113999740,	0.391108115365859380,	0.391062097639948700,	0.391016078936382410,	0.390970059255276280,	0.390924038596745070,	
+0.390878016960903680,	0.390831994347866920,	0.390785970757750510,	0.390739946190669210,	0.390693920646738020,	0.390647894126071650,	0.390601866628785930,	0.390555838154995620,	
+0.390509808704815220,	0.390463778278360710,	0.390417746875746760,	0.390371714497088520,	0.390325681142500490,	0.390279646812098700,	0.390233611505997780,	0.390187575224312850,	
+0.390141537967158560,	0.390095499734650850,	0.390049460526904370,	0.390003420344034290,	0.389957379186155200,	0.389911337053383100,	0.389865293945832640,	0.389819249863618930,	
+0.389773204806856680,	0.389727158775661890,	0.389681111770149140,	0.389635063790433220,	0.389589014836630050,	0.389542964908854370,	0.389496914007221250,	0.389450862131845430,	
+0.389404809282842880,	0.389358755460328330,	0.389312700664416870,	0.389266644895223220,	0.389220588152863370,	0.389174530437452090,	0.389128471749104480,	0.389082412087935260,	
+0.389036351454060400,	0.388990289847594710,	0.388944227268653300,	0.388898163717350860,	0.388852099193803420,	0.388806033698125770,	0.388759967230433050,	0.388713899790839980,	
+0.388667831379462540,	0.388621761996415570,	0.388575691641813770,	0.388529620315773150,	0.388483548018408450,	0.388437474749834920,	0.388391400510167240,	0.388345325299521540,	
+0.388299249118012500,	0.388253171965755320,	0.388207093842864780,	0.388161014749456970,	0.388114934685646620,	0.388068853651548920,	0.388022771647278660,	0.387976688672951870,	
+0.387930604728683400,	0.387884519814588380,	0.387838433930781660,	0.387792347077379310,	0.387746259254496020,	0.387700170462246750,	0.387654080700747420,	0.387607989970112870,	
+0.387561898270458390,	0.387515805601898690,	0.387469711964549930,	0.387423617358526930,	0.387377521783944800,	0.387331425240918510,	0.387285327729564090,	0.387239229249996320,	
+0.387193129802330450,	0.387147029386681380,	0.387100928003165150,	0.387054825651896580,	0.387008722332990940,	0.386962618046563070,	0.386916512792729090,	0.386870406571603880,	
+0.386824299383302150,	0.386778191227940160,	0.386732082105632650,	0.386685972016494960,	0.386639860960641900,	0.386593748938189600,	0.386547635949252950,	0.386501521993947220,	
+0.386455407072387240,	0.386409291184689140,	0.386363174330967840,	0.386317056511338630,	0.386270937725916360,	0.386224817974817110,	0.386178697258155850,	0.386132575576047850,	
+0.386086452928607990,	0.386040329315952390,	0.385994204738196010,	0.385948079195453710,	0.385901952687841550,	0.385855825215474570,	0.385809696778468050,	0.385763567376936840,	
+0.385717437010997090,	0.385671305680763800,	0.385625173386352220,	0.385579040127877300,	0.385532905905455190,	0.385486770719200840,	0.385440634569229560,	0.385394497455656240,	
+0.385348359378597130,	0.385302220338167080,	0.385256080334481500,	0.385209939367655350,	0.385163797437804710,	0.385117654545044600,	0.385071510689490300,	0.385025365871256910,	
+0.384979220090460430,	0.384933073347215940,	0.384886925641638340,	0.384840776973843890,	0.384794627343947430,	0.384748476752064420,	0.384702325198309820,	0.384656172682799840,	
+0.384610019205649410,	0.384563864766973910,	0.384517709366888340,	0.384471553005508950,	0.384425395682950640,	0.384379237399328830,	0.384333078154758530,	0.384286917949355930,	
+0.384240756783236050,	0.384194594656514290,	0.384148431569305670,	0.384102267521726330,	0.384056102513891330,	0.384009936545915640,	0.383963769617915560,	0.383917601730006000,	
+0.383871432882302520,	0.383825263074919990,	0.383779092307974690,	0.383732920581581700,	0.383686747895856440,	0.383640574250913860,	0.383594399646870250,	0.383548224083840650,	
+0.383502047561940450,	0.383455870081284790,	0.383409691641989850,	0.383363512244170650,	0.383317331887942700,	0.383271150573420980,	0.383224968300721780,	0.383178785069960230,	
+0.383132600881251230,	0.383086415734711190,	0.383040229630455090,	0.382994042568598430,	0.382947854549256230,	0.382901665572544850,	0.382855475638579250,	0.382809284747475000,	
+0.382763092899347120,	0.382716900094311920,	0.382670706332484460,	0.382624511613980260,	0.382578315938914340,	0.382532119307403050,	0.382485921719561420,	0.382439723175505060,	
+0.382393523675348960,	0.382347323219209450,	0.382301121807201600,	0.382254919439441010,	0.382208716116042620,	0.382162511837122960,	0.382116306602796940,	0.382070100413179790,	
+0.382023893268387760,	0.381977685168536030,	0.381931476113740060,	0.381885266104115050,	0.381839055139777230,	0.381792843220841780,	0.381746630347424230,	0.381700416519639710,	
+0.381654201737604500,	0.381607986001433860,	0.381561769311243190,	0.381515551667147730,	0.381469333069263780,	0.381423113517706520,	0.381376893012591480,	0.381330671554033770,	
+0.381284449142149760,	0.381238225777054680,	0.381192001458863620,	0.381145776187692960,	0.381099549963657860,	0.381053322786873870,	0.381007094657456190,	0.380960865575521170,	
+0.380914635541183990,	0.380868404554560220,	0.380822172615765060,	0.380775939724914860,	0.380729705882124790,	0.380683471087510440,	0.380637235341187040,	0.380590998643270950,	
+0.380544760993877350,	0.380498522393121870,	0.380452282841119650,	0.380406042337987140,	0.380359800883839530,	0.380313558478792000,	0.380267315122961020,	0.380221070816461730,	
+0.380174825559409730,	0.380128579351920290,	0.380082332194109810,	0.380036084086093520,	0.379989835027987000,	0.379943585019905490,	0.379897334061965410,	0.379851082154281980,	
+0.379804829296970900,	0.379758575490147300,	0.379712320733927690,	0.379666065028427260,	0.379619808373761640,	0.379573550770046120,	0.379527292217397120,	0.379481032715929920,	
+0.379434772265759720,	0.379388510867002980,	0.379342248519774990,	0.379295985224191330,	0.379249720980367360,	0.379203455788419460,	0.379157189648462960,	0.379110922560613410,	
+0.379064654524986220,	0.379018385541697760,	0.378972115610863360,	0.378925844732598660,	0.378879572907018960,	0.378833300134240710,	0.378787026414379220,	0.378740751747550120,	
+0.378694476133868810,	0.378648199573451640,	0.378601922066414020,	0.378555643612871580,	0.378509364212939680,	0.378463083866734720,	0.378416802574372050,	0.378370520335966960,	
+0.378324237151635990,	0.378277953021494420,	0.378231667945657990,	0.378185381924241950,	0.378139094957362920,	0.378092807045136090,	0.378046518187677260,	0.378000228385101720,	
+0.377953937637526050,	0.377907645945065540,	0.377861353307835880,	0.377815059725952420,	0.377768765199531790,	0.377722469728689170,	0.377676173313540420,	0.377629875954200780,	
+0.377583577650786930,	0.377537278403414060,	0.377490978212197630,	0.377444677077254150,	0.377398374998698990,	0.377352071976647880,	0.377305768011216180,	0.377259463102520510,	
+0.377213157250676170,	0.377166850455798900,	0.377120542718004100,	0.377074234037408360,	0.377027924414127020,	0.376981613848275890,	0.376935302339970360,	0.376888989889326900,	
+0.376842676496461030,	0.376796362161488430,	0.376750046884524510,	0.376703730665685910,	0.376657413505087970,	0.376611095402846100,	0.376564776359076920,	0.376518456373895750,	
+0.376472135447418480,	0.376425813579760400,	0.376379490771038270,	0.376333167021367380,	0.376286842330863570,	0.376240516699642260,	0.376194190127820070,	0.376147862615512360,	
+0.376101534162835040,	0.376055204769903450,	0.376008874436834280,	0.375962543163742890,	0.375916210950745180,	0.375869877797956550,	0.375823543705493590,	0.375777208673471750,	
+0.375730872702006950,	0.375684535791214520,	0.375638197941211170,	0.375591859152112350,	0.375545519424033410,	0.375499178757091160,	0.375452837151400930,	0.375406494607078590,	
+0.375360151124239590,	0.375313806703000690,	0.375267461343477220,	0.375221115045785090,	0.375174767810039780,	0.375128419636357960,	0.375082070524855090,	0.375035720475647090,	
+0.374989369488849310,	0.374943017564578540,	0.374896664702950240,	0.374850310904080270,	0.374803956168084100,	0.374757600495078450,	0.374711243885178850,	0.374664886338500650,	
+0.374618527855160700,	0.374572168435274410,	0.374525808078957690,	0.374479446786326050,	0.374433084557496240,	0.374386721392583670,	0.374340357291704340,	0.374293992254973670,	
+0.374247626282508410,	0.374201259374424110,	0.374154891530836700,	0.374108522751861570,	0.374062153037615640,	0.374015782388214260,	0.373969410803773440,	0.373923038284408700,	
+0.373876664830236740,	0.373830290441373110,	0.373783915117933410,	0.373737538860034300,	0.373691161667791320,	0.373644783541320470,	0.373598404480737220,	0.373552024486158370,	
+0.373505643557699500,	0.373459261695476500,	0.373412878899604890,	0.373366495170201540,	0.373320110507381950,	0.373273724911262090,	0.373227338381957490,	0.373180950919584980,	
+0.373134562524260030,	0.373088173196098720,	0.373041782935216560,	0.372995391741730350,	0.372948999615755670,	0.372902606557408090,	0.372856212566804400,	0.372809817644060180,	
+0.372763421789291390,	0.372717025002613670,	0.372670627284143800,	0.372624228633997360,	0.372577829052290310,	0.372531428539138290,	0.372485027094658140,	0.372438624718965380,	
+0.372392221412176090,	0.372345817174405850,	0.372299412005771440,	0.372253005906388490,	0.372206598876373080,	0.372160190915840680,	0.372113782024908300,	0.372067372203691400,	
+0.372020961452306120,	0.371974549770868020,	0.371928137159493910,	0.371881723618299520,	0.371835309147400370,	0.371788893746913370,	0.371742477416954150,	0.371696060157638730,	
+0.371649641969082730,	0.371603222851403010,	0.371556802804715260,	0.371510381829135540,	0.371463959924779430,	0.371417537091763840,	0.371371113330204390,	0.371324688640217170,	
+0.371278263021917800,	0.371231836475423180,	0.371185409000849010,	0.371138980598311240,	0.371092551267925670,	0.371046121009809160,	0.370999689824077270,	0.370953257710845810,	
+0.370906824670231560,	0.370860390702350270,	0.370813955807318020,	0.370767519985250480,	0.370721083236264510,	0.370674645560475860,	0.370628206958000580,	0.370581767428954430,	
+0.370535326973454200,	0.370488885591615690,	0.370442443283554970,	0.370396000049387720,	0.370349555889230850,	0.370303110803200110,	0.370256664791411620,	0.370210217853981010,	
+0.370163769991025290,	0.370117321202660170,	0.370070871489001310,	0.370024420850165680,	0.369977969286269030,	0.369931516797427420,	0.369885063383756650,	0.369838609045373580,	
+0.369792153782394000,	0.369745697594934030,	0.369699240483109430,	0.369652782447037140,	0.369606323486832920,	0.369559863602612840,	0.369513402794492680,	0.369466941062589480,	
+0.369420478407018920,	0.369374014827897110,	0.369327550325339870,	0.369281084899464210,	0.369234618550385810,	0.369188151278220860,	0.369141683083085090,	0.369095213965095590,	
+0.369048743924368040,	0.369002272961018170,	0.368955801075163070,	0.368909328266918470,	0.368862854536400550,	0.368816379883725070,	0.368769904309009020,	0.368723427812368220,	
+0.368676950393918900,	0.368630472053776750,	0.368583992792058830,	0.368537512608880960,	0.368491031504359300,	0.368444549478609660,	0.368398066531749060,	0.368351582663893230,	
+0.368305097875158530,	0.368258612165660580,	0.368212125535516580,	0.368165637984842250,	0.368119149513753410,	0.368072660122367110,	0.368026169810799160,	0.367979678579165800,	
+0.367933186427582830,	0.367886693356167300,	0.367840199365035040,	0.367793704454302260,	0.367747208624084830,	0.367700711874499760,	0.367654214205662970,	0.367607715617690570,	
+0.367561216110698530,	0.367514715684803820,	0.367468214340122330,	0.367421712076770320,	0.367375208894863640,	0.367328704794519290,	0.367282199775853190,	0.367235693838981250,	
+0.367189186984020420,	0.367142679211086620,	0.367096170520296140,	0.367049660911764830,	0.367003150385609770,	0.366956638941946860,	0.366910126580892280,	0.366863613302562060,	
+0.366817099107073160,	0.366770583994541540,	0.366724067965083440,	0.366677551018814770,	0.366631033155852660,	0.366584514376312950,	0.366537994680311950,	0.366491474067965510,	
+0.366444952539390860,	0.366398430094703800,	0.366351906734020240,	0.366305382457457360,	0.366258857265131020,	0.366212331157157510,	0.366165804133652790,	0.366119276194733940,	
+0.366072747340516920,	0.366026217571118030,	0.365979686886653170,	0.365933155287239520,	0.365886622772993000,	0.365840089344029900,	0.365793555000466180,	0.365747019742418970,	
+0.365700483570004180,	0.365653946483338210,	0.365607408482536980,	0.365560869567717610,	0.365514329738996110,	0.365467788996488740,	0.365421247340311510,	0.365374704770581590,	
+0.365328161287414850,	0.365281616890927360,	0.365235071581236190,	0.365188525358457360,	0.365141978222707220,	0.365095430174101730,	0.365048881212758080,	0.365002331338792230,	
+0.364955780552320530,	0.364909228853458940,	0.364862676242324770,	0.364816122719033850,	0.364769568283702610,	0.364723012936447100,	0.364676456677384410,	0.364629899506630610,	
+0.364583341424302040,	0.364536782430514740,	0.364490222525385880,	0.364443661709031470,	0.364397099981567440,	0.364350537343111120,	0.364303973793778490,	0.364257409333685890,	
+0.364210843962949340,	0.364164277681686080,	0.364117710490012180,	0.364071142388043940,	0.364024573375897500,	0.363978003453690020,	0.363931432621537490,	0.363884860879556400,	
+0.363838288227862790,	0.363791714666573780,	0.363745140195805560,	0.363698564815674470,	0.363651988526296540,	0.363605411327789060,	0.363558833220268110,	0.363512254203849580,	
+0.363465674278650840,	0.363419093444787960,	0.363372511702377330,	0.363325929051534990,	0.363279345492378230,	0.363232761025023110,	0.363186175649586110,	0.363139589366183290,	
+0.363093002174931840,	0.363046414075947900,	0.362999825069347970,	0.362953235155248020,	0.362906644333765400,	0.362860052605016190,	0.362813459969116850,	0.362766866426183440,	
+0.362720271976333270,	0.362673676619682420,	0.362627080356347390,	0.362580483186444200,	0.362533885110090270,	0.362487286127401610,	0.362440686238494290,	0.362394085443485730,	
+0.362347483742491930,	0.362300881135629420,	0.362254277623014260,	0.362207673204763880,	0.362161067880994280,	0.362114461651822040,	0.362067854517363170,	0.362021246477735150,	
+0.361974637533053980,	0.361928027683436180,	0.361881416928997950,	0.361834805269856560,	0.361788192706128220,	0.361741579237929320,	0.361694964865376110,	0.361648349588585880,	
+0.361601733407674760,	0.361555116322758940,	0.361508498333955710,	0.361461879441381250,	0.361415259645152090,	0.361368638945384350,	0.361322017342195430,	0.361275394835701480,	
+0.361228771426019000,	0.361182147113264240,	0.361135521897554490,	0.361088895779005940,	0.361042268757735150,	0.360995640833858270,	0.360949012007492740,	0.360902382278754650,	
+0.360855751647760570,	0.360809120114626740,	0.360762487679470560,	0.360715854342408100,	0.360669220103555620,	0.360622584963030460,	0.360575948920948850,	0.360529311977427440,	
+0.360482674132582280,	0.360436035386530850,	0.360389395739389330,	0.360342755191274290,	0.360296113742302030,	0.360249471392589840,	0.360202828142253960,	0.360156183991411030,	
+0.360109538940177280,	0.360062892988670000,	0.360016246137005560,	0.359969598385300460,	0.359922949733671000,	0.359876300182234540,	0.359829649731107310,	0.359782998380405620,	
+0.359736346130246800,	0.359689692980747100,	0.359643038932023210,	0.359596383984191250,	0.359549728137368800,	0.359503071391671980,	0.359456413747217540,	0.359409755204121610,	
+0.359363095762501690,	0.359316435422474050,	0.359269774184155340,	0.359223112047661770,	0.359176449013110850,	0.359129785080618770,	0.359083120250302260,	0.359036454522277500,	
+0.358989787896662080,	0.358943120373572120,	0.358896451953124420,	0.358849782635435150,	0.358803112420621790,	0.358756441308800740,	0.358709769300088130,	0.358663096394601480,	
+0.358616422592457130,	0.358569747893771720,	0.358523072298661480,	0.358476395807244050,	0.358429718419635560,	0.358383040135952850,	0.358336360956312050,	0.358289680880830800,	
+0.358242999909625330,	0.358196318042812380,	0.358149635280508190,	0.358102951622830350,	0.358056267069895130,	0.358009581621819280,	0.357962895278719000,	0.357916208040711950,	
+0.357869519907914320,	0.357822830880442530,	0.357776140958414040,	0.357729450141945240,	0.357682758431152770,	0.357636065826152980,	0.357589372327063500,	0.357542677934000520,	
+0.357495982647080880,	0.357449286466420880,	0.357402589392138090,	0.357355891424348810,	0.357309192563169790,	0.357262492808717360,	0.357215792161109160,	0.357169090620461430,	
+0.357122388186891020,	0.357075684860514220,	0.357028980641448560,	0.356982275529810540,	0.356935569525716370,	0.356888862629283650,	0.356842154840628810,	0.356795446159868630,	
+0.356748736587119360,	0.356702026122498680,	0.356655314766122940,	0.356608602518108890,	0.356561889378572970,	0.356515175347632720,	0.356468460425404480,	0.356421744612005150,	
+0.356375027907551050,	0.356328310312159720,	0.356281591825947710,	0.356234872449031680,	0.356188152181528050,	0.356141431023554440,	0.356094708975227270,	0.356047986036663320,	
+0.356001262207979010,	0.355954537489291960,	0.355907811880718520,	0.355861085382375150,	0.355814357994379490,	0.355767629716847940,	0.355720900549897360,	0.355674170493644080,	
+0.355627439548205750,	0.355580707713698870,	0.355533974990240200,	0.355487241377946180,	0.355440506876934460,	0.355393771487321490,	0.355347035209224120,	0.355300298042758700,	
+0.355253559988042980,	0.355206821045193350,	0.355160081214326630,	0.355113340495559320,	0.355066598889009100,	0.355019856394792390,	0.354973113013025590,	0.354926368743826440,	
+0.354879623587311340,	0.354832877543597160,	0.354786130612800450,	0.354739382795038750,	0.354692634090428670,	0.354645884499086960,	0.354599134021130140,	0.354552382656675880,	
+0.354505630405840650,	0.354458877268741370,	0.354412123245494480,	0.354365368336217730,	0.354318612541027530,	0.354271855860040790,	0.354225098293374010,	0.354178339841144880,	
+0.354131580503469930,	0.354084820280465560,	0.354038059172249620,	0.353991297178938460,	0.353944534300649150,	0.353897770537497990,	0.353851005889602890,	0.353804240357080250,	
+0.353757473940047030,	0.353710706638619700,	0.353663938452915990,	0.353617169383052430,	0.353570399429145980,	0.353523628591313140,	0.353476856869671620,	0.353430084264337920,	
+0.353383310775429060,	0.353336536403061510,	0.353289761147353000,	0.353242985008420110,	0.353196207986379300,	0.353149430081348410,	0.353102651293443980,	0.353055871622782900,	
+0.353009091069481700,	0.352962309633658210,	0.352915527315428970,	0.352868744114910870,	0.352821960032220490,	0.352775175067475630,	0.352728389220792860,	0.352681602492289140,	
+0.352634814882080930,	0.352588026390286140,	0.352541237017021280,	0.352494446762403320,	0.352447655626548840,	0.352400863609575620,	0.352354070711600240,	0.352307276932739720,	
+0.352260482273110580,	0.352213686732830600,	0.352166890312016480,	0.352120093010784670,	0.352073294829253040,	0.352026495767538190,	0.351979695825757110,	0.351932895004026360,	
+0.351886093302463790,	0.351839290721185970,	0.351792487260309930,	0.351745682919952280,	0.351698877700230840,	0.351652071601262160,	0.351605264623163330,	0.351558456766050910,	
+0.351511648030042810,	0.351464838415255550,	0.351418027921806210,	0.351371216549811350,	0.351324404299388880,	0.351277591170655430,	0.351230777163727580,	0.351183962278723170,	
+0.351137146515758890,	0.351090329874951760,	0.351043512356418340,	0.350996693960276550,	0.350949874686643070,	0.350903054535634860,	0.350856233507368610,	0.350809411601962220,	
+0.350762588819532320,	0.350715765160195870,	0.350668940624069670,	0.350622115211271460,	0.350575288921918030,	0.350528461756126340,	0.350481633714013090,	0.350434804795696160,	
+0.350387975001292210,	0.350341144330917950,	0.350294312784691200,	0.350247480362728680,	0.350200647065147470,	0.350153812892064260,	0.350106977843596900,	0.350060141919862070,	
+0.350013305120976890,	0.349966467447058060,	0.349919628898223480,	0.349872789474589830,	0.349825949176274190,	0.349779108003393240,	0.349732265956064990,	0.349685423034406030,	
+0.349638579238533530,	0.349591734568564180,	0.349544889024615890,	0.349498042606805340,	0.349451195315249760,	0.349404347150065740,	0.349357498111371230,	0.349310648199283040,	
+0.349263797413917780,	0.349216945755393470,	0.349170093223826750,	0.349123239819334850,	0.349076385542034410,	0.349029530392043430,	0.348982674369478610,	0.348935817474457070,	
+0.348888959707095600,	0.348842101067512180,	0.348795241555823480,	0.348748381172146680,	0.348701519916598530,	0.348654657789296940,	0.348607794790358750,	0.348560930919901090,	
+0.348514066178040650,	0.348467200564895500,	0.348420334080582320,	0.348373466725217850,	0.348326598498920170,	0.348279729401806020,	0.348232859433992510,	0.348185988595596460,	
+0.348139116886735820,	0.348092244307527440,	0.348045370858088400,	0.347998496538535540,	0.347951621348986880,	0.347904745289559110,	0.347857868360369530,	0.347810990561534810,	
+0.347764111893173080,	0.347717232355401030,	0.347670351948335900,	0.347623470672094540,	0.347576588526794850,	0.347529705512553690,	0.347482821629487900,	0.347435936877715460,	
+0.347389051257353140,	0.347342164768518200,	0.347295277411327430,	0.347248389185898900,	0.347201500092349400,	0.347154610130796130,	0.347107719301355980,	0.347060827604146860,	
+0.347013935039285740,	0.346967041606889740,	0.346920147307075770,	0.346873252139961790,	0.346826356105664700,	0.346779459204301700,	0.346732561435989680,	0.346685662800846670,	
+0.346638763298989460,	0.346591862930534960,	0.346544961695601230,	0.346498059594305070,	0.346451156626763730,	0.346404252793094170,	0.346357348093414340,	0.346310442527841100,	
+0.346263536096491800,	0.346216628799483280,	0.346169720636933520,	0.346122811608959520,	0.346075901715678480,	0.346028990957207290,	0.345982079333663980,	0.345935166845165510,	
+0.345888253491829110,	0.345841339273771700,	0.345794424191111340,	0.345747508243964890,	0.345700591432449690,	0.345653673756682600,	0.345606755216781750,	0.345559835812863980,	
+0.345512915545046210,	0.345465994413446550,	0.345419072418181980,	0.345372149559369680,	0.345325225837126550,	0.345278301251570830,	0.345231375802819370,	0.345184449490989420,	
+0.345137522316197930,	0.345090594278563090,	0.345043665378201750,	0.344996735615231250,	0.344949804989768460,	0.344902873501931610,	0.344855941151837600,	0.344809007939603670,	
+0.344762073865346850,	0.344715138929185260,	0.344668203131235810,	0.344621266471615450,	0.344574328950442320,	0.344527390567833380,	0.344480451323905980,	0.344433511218777020,	
+0.344386570252564690,	0.344339628425385960,	0.344292685737358110,	0.344245742188598160,	0.344198797779224300,	0.344151852509353370,	0.344104906379102900,	0.344057959388589680,	
+0.344011011537932010,	0.343964062827246790,	0.343917113256651420,	0.343870162826262870,	0.343823211536199320,	0.343776259386577740,	0.343729306377515090,	0.343682352509129600,	
+0.343635397781538230,	0.343588442194858350,	0.343541485749206950,	0.343494528444702240,	0.343447570281461220,	0.343400611259601310,	0.343353651379239400,	0.343306690640493850,	
+0.343259729043481510,	0.343212766588319840,	0.343165803275125860,	0.343118839104017800,	0.343071874075112640,	0.343024908188527820,	0.342977941444380260,	0.342930973842788310,	
+0.342884005383868870,	0.342837036067739460,	0.342790065894517050,	0.342743094864319860,	0.342696122977264930,	0.342649150233469310,	0.342602176633051200,	0.342555202176127670,	
+0.342508226862816120,	0.342461250693233630,	0.342414273667498380,	0.342367295785727440,	0.342320317048038280,	0.342273337454547910,	0.342226357005374630,	0.342179375700635450,	
+0.342132393540447830,	0.342085410524928800,	0.342038426654196650,	0.341991441928368440,	0.341944456347561650,	0.341897469911893290,	0.341850482621481650,	0.341803494476443810,	
+0.341756505476896840,	0.341709515622959040,	0.341662524914747410,	0.341615533352379490,	0.341568540935972280,	0.341521547665644190,	0.341474553541512180,	0.341427558563693830,	
+0.341380562732306160,	0.341333566047467450,	0.341286568509294900,	0.341239570117905900,	0.341192570873417530,	0.341145570775948200,	0.341098569825614870,	0.341051568022535170,	
+0.341004565366826160,	0.340957561858606100,	0.340910557497992150,	0.340863552285101400,	0.340816546220052140,	0.340769539302961550,	0.340722531533947160,	0.340675522913125970,	
+0.340628513440616400,	0.340581503116535570,	0.340534491941000940,	0.340487479914129700,	0.340440467036040140,	0.340393453306849450,	0.340346438726675080,	0.340299423295634230,	
+0.340252407013845240,	0.340205389881425240,	0.340158371898491740,	0.340111353065161880,	0.340064333381554120,	0.340017312847785470,	0.339970291463973120,	0.339923269230235470,	
+0.339876246146689650,	0.339829222213453240,	0.339782197430643310,	0.339735171798378370,	0.339688145316775440,	0.339641117985952150,	0.339594089806025680,	0.339547060777114380,	
+0.339500030899335450,	0.339453000172806440,	0.339405968597644490,	0.339358936173968060,	0.339311902901894280,	0.339264868781540720,	0.339217833813024620,	0.339170797996464320,	
+0.339123761331977020,	0.339076723819680290,	0.339029685459691420,	0.338982646252128710,	0.338935606197109330,	0.338888565294750590,	0.338841523545170830,	0.338794480948487240,	
+0.338747437504817510,	0.338700393214278690,	0.338653348076989320,	0.338606302093066640,	0.338559255262628140,	0.338512207585791150,	0.338465159062673990,	0.338418109693393980,	
+0.338371059478068670,	0.338324008416815310,	0.338276956509752310,	0.338229903756996960,	0.338182850158666840,	0.338135795714879170,	0.338088740425752430,	0.338041684291403850,	
+0.337994627311950680,	0.337947569487511310,	0.337900510818202990,	0.337853451304143460,	0.337806390945449840,	0.337759329742240650,	0.337712267694633140,	0.337665204802744980,	
+0.337618141066693410,	0.337571076486596900,	0.337524011062572680,	0.337476944794738390,	0.337429877683211370,	0.337382809728110080,	0.337335740929551760,	0.337288671287654050,	
+0.337241600802534290,	0.337194529474310940,	0.337147457303101250,	0.337100384289022500,	0.337053310432193220,	0.337006235732730700,	0.336959160190752500,	0.336912083806376050,	
+0.336865006579719790,	0.336817928510901030,	0.336770849600037450,	0.336723769847246280,	0.336676689252646160,	0.336629607816354260,	0.336582525538488390,	0.336535442419165780,	
+0.336488358458504940,	0.336441273656623240,	0.336394188013638350,	0.336347101529667570,	0.336300014204829470,	0.336252926039241340,	0.336205837033020870,	0.336158747186285410,	
+0.336111656499153480,	0.336064564971742420,	0.336017472604169530,	0.335970379396553390,	0.335923285349011280,	0.335876190461660950,	0.335829094734619750,	0.335781998168006190,	
+0.335734900761937680,	0.335687802516531910,	0.335640703431906220,	0.335593603508179130,	0.335546502745468100,	0.335499401143890820,	0.335452298703564580,	0.335405195424608000,	
+0.335358091307138450,	0.335310986351273710,	0.335263880557131020,	0.335216773924829070,	0.335169666454485200,	0.335122558146216780,	0.335075449000142300,	0.335028339016379240,	
+0.334981228195045390,	0.334934116536257990,	0.334887004040135720,	0.334839890706795930,	0.334792776536356420,	0.334745661528934530,	0.334698545684648960,	0.334651429003617000,	
+0.334604311485956480,	0.334557193131784720,	0.334510073941220450,	0.334462953914380970,	0.334415833051384110,	0.334368711352347250,	0.334321588817388990,	0.334274465446626810,	
+0.334227341240178000,	0.334180216198161300,	0.334133090320694050,	0.334085963607894050,	0.334038836059878770,	0.333991707676766780,	0.333944578458675530,	0.333897448405722830,	
+0.333850317518026130,	0.333803185795704000,	0.333756053238873920,	0.333708919847653720,	0.333661785622160810,	0.333614650562513830,	0.333567514668830220,	0.333520377941227850,	
+0.333473240379824120,	0.333426101984737710,	0.333378962756086030,	0.333331822693986920,	0.333284681798557860,	0.333237540069917510,	0.333190397508183300,	0.333143254113472680,	
+0.333096109885904380,	0.333048964825595760,	0.333001818932664730,	0.332954672207228800,	0.332907524649406540,	0.332860376259315470,	0.332813227037073500,	0.332766076982798030,	
+0.332718926096607750,	0.332671774378620170,	0.332624621828953190,	0.332577468447724180,	0.332530314235051970,	0.332483159191053980,	0.332436003315848050,	0.332388846609551700,	
+0.332341689072283670,	0.332294530704161430,	0.332247371505302420,	0.332200211475825400,	0.332153050615847820,	0.332105888925487650,	0.332058726404862340,	0.332011563054090630,	
+0.331964398873290050,	0.331917233862578430,	0.331870068022073310,	0.331822901351893460,	0.331775733852156310,	0.331728565522979860,	0.331681396364481570,	0.331634226376780250,	
+0.331587055559993290,	0.331539883914238720,	0.331492711439634050,	0.331445538136298010,	0.331398364004348080,	0.331351189043901870,	0.331304013255078080,	0.331256836637994270,	
+0.331209659192768400,	0.331162480919517890,	0.331115301818361680,	0.331068121889417140,	0.331020941132802340,	0.330973759548634730,	0.330926577137033220,	0.330879393898115160,	
+0.330832209831998680,	0.330785024938801240,	0.330737839218641690,	0.330690652671637500,	0.330643465297906720,	0.330596277097566840,	0.330549088070736630,	0.330501898217533780,	
+0.330454707538075710,	0.330407516032481310,	0.330360323700868150,	0.330313130543354150,	0.330265936560056930,	0.330218741751095220,	0.330171546116586720,	0.330124349656649330,	
+0.330077152371400670,	0.330029954260959550,	0.329982755325443520,	0.329935555564970620,	0.329888354979658400,	0.329841153569625680,	0.329793951334990120,	0.329746748275869690,	
+0.329699544392381970,	0.329652339684645750,	0.329605134152778760,	0.329557927796898850,	0.329510720617123780,	0.329463512613572260,	0.329416303786362000,	0.329369094135610550,	
+0.329321883661436830,	0.329274672363958350,	0.329227460243293190,	0.329180247299558970,	0.329133033532874540,	0.329085818943357530,	0.329038603531126020,	0.328991387296297510,	
+0.328944170238991030,	0.328896952359324040,	0.328849733657414710,	0.328802514133380630,	0.328755293787340700,	0.328708072619412480,	0.328660850629714120,	0.328613627818363230,	
+0.328566404185478670,	0.328519179731178060,	0.328471954455579140,	0.328424728358800710,	0.328377501440960510,	0.328330273702176540,	0.328283045142566450,	0.328235815762249140,	
+0.328188585561342340,	0.328141354539964070,	0.328094122698231960,	0.328046890036264970,	0.327999656554180790,	0.327952422252097480,	0.327905187130132610,	0.327857951188405270,	
+0.327810714427033020,	0.327763476846133990,	0.327716238445825870,	0.327668999226227550,	0.327621759187456730,	0.327574518329631080,	0.327527276652869630,	0.327480034157289880,	
+0.327432790843010140,	0.327385546710147970,	0.327338301758822340,	0.327291055989150930,	0.327243809401251920,	0.327196561995242940,	0.327149313771243010,	0.327102064729369760,	
+0.327054814869741360,	0.327007564192475510,	0.326960312697691160,	0.326913060385506050,	0.326865807256038250,	0.326818553309405570,	0.326771298545726900,	0.326724042965119980,	
+0.326676786567702940,	0.326629529353593520,	0.326582271322910680,	0.326535012475772210,	0.326487752812295750,	0.326440492332600360,	0.326393231036803730,	0.326345968925023990,	
+0.326298705997378920,	0.326251442253987500,	0.326204177694967510,	0.326156912320437090,	0.326109646130513910,	0.326062379125317050,	0.326015111304964240,	0.325967842669573680,	
+0.325920573219263100,	0.325873302954151460,	0.325826031874356600,	0.325778759979996610,	0.325731487271189390,	0.325684213748053790,	0.325636939410707700,	0.325589664259268830,	
+0.325542388293856230,	0.325495111514587600,	0.325447833921581280,	0.325400555514954890,	0.325353276294827580,	0.325305996261317010,	0.325258715414541540,	0.325211433754618810,	
+0.325164151281667920,	0.325116867995806640,	0.325069583897153180,	0.325022298985825410,	0.324975013261942220,	0.324927726725621590,	0.324880439376981580,	0.324833151216140040,	
+0.324785862243216090,	0.324738572458327490,	0.324691281861592020,	0.324643990453128750,	0.324596698233055480,	0.324549405201490500,	0.324502111358551610,	0.324454816704357830,	
+0.324407521239027000,	0.324360224962677410,	0.324312927875426820,	0.324265629977394280,	0.324218331268697700,	0.324171031749455330,	0.324123731419784900,	0.324076430279805590,	
+0.324029128329635210,	0.323981825569392030,	0.323934521999193810,	0.323887217619159780,	0.323839912429407630,	0.323792606430055310,	0.323745299621221890,	0.323697992003025240,	
+0.323650683575583580,	0.323603374339014820,	0.323556064293438030,	0.323508753438971060,	0.323461441775732270,	0.323414129303839390,	0.323366816023411660,	0.323319501934566820,	
+0.323272187037423280,	0.323224871332098870,	0.323177554818712630,	0.323130237497382570,	0.323082919368226860,	0.323035600431363480,	0.322988280686911490,	0.322940960134988850,	
+0.322893638775713750,	0.322846316609204150,	0.322798993635579180,	0.322751669854956740,	0.322704345267454670,	0.322657019873192170,	0.322609693672287150,	0.322562366664857880,	
+0.322515038851022280,	0.322467710230899480,	0.322420380804607390,	0.322373050572264400,	0.322325719533988360,	0.322278387689898420,	0.322231055040112510,	0.322183721584748950,	
+0.322136387323925690,	0.322089052257761850,	0.322041716386375410,	0.321994379709884650,	0.321947042228407590,	0.321899703942063240,	0.321852364850969740,	0.321805024955244820,	
+0.321757684255007780,	0.321710342750376580,	0.321663000441469450,	0.321615657328404470,	0.321568313411300710,	0.321520968690276190,	0.321473623165449250,	0.321426276836937810,	
+0.321378929704861150,	0.321331581769337130,	0.321284233030484150,	0.321236883488420170,	0.321189533143264430,	0.321142181995134830,	0.321094830044149740,	0.321047477290427210,	
+0.321000123734086370,	0.320952769375245250,	0.320905414214021800,	0.320858058250535210,	0.320810701484903480,	0.320763343917244980,	0.320715985547677720,	0.320668626376320930,	
+0.320621266403292530,	0.320573905628711020,	0.320526544052694260,	0.320479181675361600,	0.320431818496831000,	0.320384454517220860,	0.320337089736649090,	0.320289724155235100,	
+0.320242357773096790,	0.320194990590352560,	0.320147622607120430,	0.320100253823519640,	0.320052884239668270,	0.320005513855684650,	0.319958142671686820,	0.319910770687794110,	
+0.319863397904124440,	0.319816024320795810,	0.319768649937927580,	0.319721274755637720,	0.319673898774044730,	0.319626521993266470,	0.319579144413422390,	0.319531766034630460,	
+0.319484386857009080,	0.319437006880676330,	0.319389626105751500,	0.319342244532352550,	0.319294862160598050,	0.319247478990605900,	0.319200095022495520,	0.319152710256384920,	
+0.319105324692392560,	0.319057938330636390,	0.319010551171235830,	0.318963163214308950,	0.318915774459973660,	0.318868384908349400,	0.318820994559554150,	0.318773603413706470,	
+0.318726211470924280,	0.318678818731327030,	0.318631425195032740,	0.318584030862159860,	0.318536635732826480,	0.318489239807151990,	0.318441843085254360,	0.318394445567252100,	
+0.318347047253263350,	0.318299648143407330,	0.318252248237802240,	0.318204847536566530,	0.318157446039818330,	0.318110043747676870,	0.318062640660260300,	0.318015236777686730,	
+0.317967832100075450,	0.317920426627544660,	0.317873020360212750,	0.317825613298197860,	0.317778205441619390,	0.317730796790595400,	0.317683387345244430,	0.317635977105684530,	
+0.317588566072035170,	0.317541154244414370,	0.317493741622940640,	0.317446328207732160,	0.317398913998908290,	0.317351498996587160,	0.317304083200887270,	0.317256666611926750,	
+0.317209249229824960,	0.317161831054700080,	0.317114412086670180,	0.317066992325854670,	0.317019571772371670,	0.316972150426339750,	0.316924728287877040,	0.316877305357102900,	
+0.316829881634135560,	0.316782457119093470,	0.316735031812094840,	0.316687605713259050,	0.316640178822704230,	0.316592751140548970,	0.316545322666911380,	0.316497893401910920,	
+0.316450463345665730,	0.316403032498294430,	0.316355600859915100,	0.316308168430647190,	0.316260735210608820,	0.316213301199918640,	0.316165866398694760,	0.316118430807056710,	
+0.316070994425122490,	0.316023557253010400,	0.315976119290839850,	0.315928680538729020,	0.315881240996796490,	0.315833800665160370,	0.315786359543940240,	0.315738917633254180,	
+0.315691474933220810,	0.315644031443958360,	0.315596587165586250,	0.315549142098222660,	0.315501696241986210,	0.315454249596995140,	0.315406802163368800,	0.315359353941225500,	
+0.315311904930683840,	0.315264455131861960,	0.315217004544879330,	0.315169553169854230,	0.315122101006904850,	0.315074648056150600,	0.315027194317709760,	0.314979739791700910,	
+0.314932284478242290,	0.314884828377453410,	0.314837371489452400,	0.314789913814358000,	0.314742455352288400,	0.314694996103363040,	0.314647536067700240,	0.314600075245418610,	
+0.314552613636636340,	0.314505151241472940,	0.314457688060046700,	0.314410224092476210,	0.314362759338879750,	0.314315293799376840,	0.314267827474085660,	0.314220360363124510,	
+0.314172892466612840,	0.314125423784669010,	0.314077954317411530,	0.314030484064958810,	0.313983013027430310,	0.313935541204944210,	0.313888068597619310,	0.313840595205573840,	
+0.313793121028927260,	0.313745646067797870,	0.313698170322304400,	0.313650693792565050,	0.313603216478699430,	0.313555738380825730,	0.313508259499062690,	0.313460779833528600,	
+0.313413299384342980,	0.313365818151624060,	0.313318336135490650,	0.313270853336060970,	0.313223369753454550,	0.313175885387789730,	0.313128400239184810,	0.313080914307759250,	
+0.313033427593631450,	0.312985940096920050,	0.312938451817743380,	0.312890962756221020,	0.312843472912471220,	0.312795982286612760,	0.312748490878763940,	0.312700998689044330,	
+0.312653505717572170,	0.312606011964466250,	0.312558517429844920,	0.312511022113827700,	0.312463526016532930,	0.312416029138079310,	0.312368531478585230,	0.312321033038170210,	
+0.312273533816952660,	0.312226033815050820,	0.312178533032584300,	0.312131031469671470,	0.312083529126431060,	0.312036026002981410,	0.311988522099442110,	0.311941017415931550,	
+0.311893511952568370,	0.311846005709471020,	0.311798498686759130,	0.311750990884550940,	0.311703482302965240,	0.311655972942120440,	0.311608462802136170,	0.311560951883130710,	
+0.311513440185222870,	0.311465927708531040,	0.311418414453174750,	0.311370900419272460,	0.311323385606942500,	0.311275870016304520,	0.311228353647476810,	0.311180836500578260,	
+0.311133318575727180,	0.311085799873043240,	0.311038280392644750,	0.310990760134650600,	0.310943239099179150,	0.310895717286350020,	0.310848194696281550,	0.310800671329092610,	
+0.310753147184901600,	0.310705622263828140,	0.310658096565990580,	0.310610570091507830,	0.310563042840498180,	0.310515514813081370,	0.310467986009375810,	0.310420456429499840,	
+0.310372926073573140,	0.310325394941714130,	0.310277863034041590,	0.310230330350674040,	0.310182796891731060,	0.310135262657331050,	0.310087727647592960,	0.310040191862635090,	
+0.309992655302577140,	0.309945117967537600,	0.309897579857635220,	0.309850040972988460,	0.309802501313717060,	0.309754960879939370,	0.309707419671774340,	0.309659877689340280,	
+0.309612334932756970,	0.309564791402142820,	0.309517247097616690,	0.309469702019297020,	0.309422156167303510,	0.309374609541754660,	0.309327062142768780,	0.309279513970465710,	
+0.309231965024963860,	0.309184415306382130,	0.309136864814838870,	0.309089313550453940,	0.309041761513345670,	0.308994208703633030,	0.308946655121434430,	0.308899100766869610,	
+0.308851545640057010,	0.308803989741115610,	0.308756433070163760,	0.308708875627321300,	0.308661317412706640,	0.308613758426438680,	0.308566198668635880,	0.308518638139417990,	
+0.308471076838903570,	0.308423514767210970,	0.308375951924460050,	0.308328388310769250,	0.308280823926257440,	0.308233258771043180,	0.308185692845246220,	0.308138126148984950,	
+0.308090558682378450,	0.308042990445545060,	0.307995421438604640,	0.307947851661675710,	0.307900281114877110,	0.307852709798327410,	0.307805137712146290,	0.307757564856452390,	
+0.307709991231364550,	0.307662416837001350,	0.307614841673482520,	0.307567265740926580,	0.307519689039452040,	0.307472111569178700,	0.307424533330225070,	0.307376954322710120,	
+0.307329374546752350,	0.307281794002471580,	0.307234212689986350,	0.307186630609415530,	0.307139047760877750,	0.307091464144492790,	0.307043879760379110,	0.306996294608655800,	
+0.306948708689441300,	0.306901122002855460,	0.306853534549016820,	0.306805946328044310,	0.306758357340056520,	0.306710767585173290,	0.306663177063513090,	0.306615585775194990,	
+0.306567993720337490,	0.306520400899060460,	0.306472807311482350,	0.306425212957721850,	0.306377617837898740,	0.306330021952131600,	0.306282425300539400,	0.306234827883240690,	
+0.306187229700355330,	0.306139630752001960,	0.306092031038299460,	0.306044430559366420,	0.305996829315322790,	0.305949227306287100,	0.305901624532378290,	0.305854020993715000,	
+0.305806416690417140,	0.305758811622603150,	0.305711205790392180,	0.305663599193902790,	0.305615991833254770,	0.305568383708566820,	0.305520774819957490,	0.305473165167546630,	
+0.305425554751452830,	0.305377943571795210,	0.305330331628692280,	0.305282718922263880,	0.305235105452628770,	0.305187491219905850,	0.305139876224213790,	0.305092260465672450,	
+0.305044643944400510,	0.304997026660516920,	0.304949408614140330,	0.304901789805390620,	0.304854170234386490,	0.304806549901246950,	0.304758928806090570,	0.304711306949037250,	
+0.304663684330205740,	0.304616060949714550,	0.304568436807683640,	0.304520811904231690,	0.304473186239477670,	0.304425559813540250,	0.304377932626539340,	0.304330304678593620,	
+0.304282675969822170,	0.304235046500343550,	0.304187416270277790,	0.304139785279743450,	0.304092153528859650,	0.304044521017745040,	0.303996887746519560,	0.303949253715301900,	
+0.303901618924211080,	0.303853983373365780,	0.303806347062885900,	0.303758709992890230,	0.303711072163497300,	0.303663433574827170,	0.303615794226998410,	0.303568154120130160,	
+0.303520513254341150,	0.303472871629751280,	0.303425229246479190,	0.303377586104644050,	0.303329942204364490,	0.303282297545760530,	0.303234652128950840,	0.303187005954054460,	
+0.303139359021190210,	0.303091711330477960,	0.303044062882036450,	0.302996413675984730,	0.302948763712441560,	0.302901112991526940,	0.302853461513359570,	0.302805809278058450,	
+0.302758156285742490,	0.302710502536531480,	0.302662848030544220,	0.302615192767899440,	0.302567536748717110,	0.302519879973115910,	0.302472222441215080,	0.302424564153133180,	
+0.302376905108990350,	0.302329245308905260,	0.302281584752997050,	0.302233923441384390,	0.302186261374187410,	0.302138598551524750,	0.302090934973515630,	0.302043270640278750,	
+0.301995605551934050,	0.301947939708600400,	0.301900273110396910,	0.301852605757442270,	0.301804937649856550,	0.301757268787758490,	0.301709599171266830,	0.301661928800501580,	
+0.301614257675581530,	0.301566585796625870,	0.301518913163753290,	0.301471239777083840,	0.301423565636736280,	0.301375890742829830,	0.301328215095483240,	0.301280538694816520,	
+0.301232861540948470,	0.301185183633998210,	0.301137504974084650,	0.301089825561327680,	0.301042145395846170,	0.300994464477759290,	0.300946782807185840,	0.300899100384245890,	
+0.300851417209058110,	0.300803733281741430,	0.300756048602415840,	0.300708363171200090,	0.300660676988213470,	0.300612990053574670,	0.300565302367403860,	0.300517613929819790,	
+0.300469924740941700,	0.300422234800888370,	0.300374544109779870,	0.300326852667735010,	0.300279160474873020,	0.300231467531312750,	0.300183773837174150,	0.300136079392576140,	
+0.300088384197637950,	0.300040688252478370,	0.299992991557217540,	0.299945294111974180,	0.299897595916867600,	0.299849896972016580,	0.299802197277541260,	0.299754496833560480,	
+0.299706795640192980,	0.299659093697558940,	0.299611391005777160,	0.299563687564966930,	0.299515983375246990,	0.299468278436737570,	0.299420572749557470,	0.299372866313825870,	
+0.299325159129661730,	0.299277451197185130,	0.299229742516514850,	0.299182033087770250,	0.299134322911070170,	0.299086611986534630,	0.299038900314282650,	0.298991187894433350,	
+0.298943474727105700,	0.298895760812419750,	0.298848046150494430,	0.298800330741448570,	0.298752614585402250,	0.298704897682474440,	0.298657180032784410,	0.298609461636450970,	
+0.298561742493594300,	0.298514022604333300,	0.298466301968787210,	0.298418580587074990,	0.298370858459316710,	0.298323135585631280,	0.298275411966137990,	0.298227687600955800,	
+0.298179962490204790,	0.298132236634003840,	0.298084510032472330,	0.298036782685729140,	0.297989054593894410,	0.297941325757087040,	0.297893596175425880,	0.297845865849031220,	
+0.297798134778021860,	0.297750402962517200,	0.297702670402636090,	0.297654937098498720,	0.297607203050223980,	0.297559468257931280,	0.297511732721739470,	0.297463996441768740,	
+0.297416259418138040,	0.297368521650966670,	0.297320783140373580,	0.297273043886478960,	0.297225303889401770,	0.297177563149261250,	0.297129821666176460,	0.297082079440267490,	
+0.297034336471653340,	0.296986592760452920,	0.296938848306786460,	0.296891103110772880,	0.296843357172531520,	0.296795610492181340,	0.296747863069842580,	0.296700114905634140,	
+0.296652365999675430,	0.296604616352085400,	0.296556865962984200,	0.296509114832490870,	0.296461362960724780,	0.296413610347804830,	0.296365856993851260,	0.296318102898983080,	
+0.296270348063319590,	0.296222592486979850,	0.296174836170084050,	0.296127079112751160,	0.296079321315100560,	0.296031562777251230,	0.295983803499323460,	0.295936043481436150,	
+0.295888282723708320,	0.295840521226260200,	0.295792758989210760,	0.295744996012679400,	0.295697232296785180,	0.295649467841648310,	0.295601702647387720,	0.295553936714122890,	
+0.295506170041972830,	0.295458402631057710,	0.295410634481496630,	0.295362865593408960,	0.295315095966913690,	0.295267325602131090,	0.295219554499180190,	0.295171782658180390,	
+0.295124010079250760,	0.295076236762511490,	0.295028462708081640,	0.294980687916080180,	0.294932912386627440,	0.294885136119842410,	0.294837359115844580,	0.294789581374752920,	
+0.294741802896687670,	0.294694023681768000,	0.294646243730113220,	0.294598463041842400,	0.294550681617075870,	0.294502899455932610,	0.294455116558532130,	0.294407332924993440,	
+0.294359548555436780,	0.294311763449981330,	0.294263977608746400,	0.294216191031851150,	0.294168403719415830,	0.294120615671559500,	0.294072826888401250,	0.294025037370061300,	
+0.293977247116658790,	0.293929456128313120,	0.293881664405143410,	0.293833871947270010,	0.293786078754811890,	0.293738284827888550,	0.293690490166619080,	0.293642694771123810,	
+0.293594898641521830,	0.293547101777932580,	0.293499304180475150,	0.293451505849269930,	0.293403706784435890,	0.293355906986092600,	0.293308106454359120,	0.293260305189355810,	
+0.293212503191201730,	0.293164700460016410,	0.293116896995918860,	0.293069092799029540,	0.293021287869467460,	0.292973482207351750,	0.292925675812802770,	0.292877868685939620,	
+0.292830060826881730,	0.292782252235748330,	0.292734442912659710,	0.292686632857734940,	0.292638822071093650,	0.292591010552854860,	0.292543198303138910,	0.292495385322065040,	
+0.292447571609752650,	0.292399757166320940,	0.292351941991890300,	0.292304126086579740,	0.292256309450508900,	0.292208492083796840,	0.292160673986563980,	0.292112855158929430,	
+0.292065035601012320,	0.292017215312933060,	0.291969394294810720,	0.291921572546764980,	0.291873750068914810,	0.291825926861380700,	0.291778102924281800,	0.291730278257737620,	
+0.291682452861867340,	0.291634626736791300,	0.291586799882628760,	0.291538972299499210,	0.291491143987521790,	0.291443314946816910,	0.291395485177503800,	0.291347654679701920,	
+0.291299823453530500,	0.291251991499109960,	0.291204158816559420,	0.291156325405998060,	0.291108491267546340,	0.291060656401323340,	0.291012820807448720,	0.290964984486041690,	
+0.290917147437222520,	0.290869309661110520,	0.290821471157825310,	0.290773631927485900,	0.290725791970212870,	0.290677951286125390,	0.290630109875342990,	0.290582267737984960,	
+0.290534424874171580,	0.290486581284022220,	0.290438736967656370,	0.290390891925193300,	0.290343046156753380,	0.290295199662455820,	0.290247352442419890,	0.290199504496765960,	
+0.290151655825613310,	0.290103806429081510,	0.290055956307289750,	0.290008105460358550,	0.289960253888407070,	0.289912401591554960,	0.289864548569921440,	0.289816694823626930,	
+0.289768840352790710,	0.289720985157532360,	0.289673129237971170,	0.289625272594227550,	0.289577415226420780,	0.289529557134670430,	0.289481698319095810,	0.289433838779817320,	
+0.289385978516954250,	0.289338117530626270,	0.289290255820952520,	0.289242393388053580,	0.289194530232048660,	0.289146666353056970,	0.289098801751199060,	0.289050936426594130,	
+0.289003070379361900,	0.288955203609621510,	0.288907336117493590,	0.288859467903097300,	0.288811598966552340,	0.288763729307977950,	0.288715858927494680,	0.288667987825221740,	
+0.288620116001278850,	0.288572243455785250,	0.288524370188861460,	0.288476496200626710,	0.288428621491200800,	0.288380746060702850,	0.288332869909253440,	0.288284993036971910,	
+0.288237115443977450,	0.288189237130390630,	0.288141358096330740,	0.288093478341917400,	0.288045597867269960,	0.287997716672508950,	0.287949834757753650,	0.287901952123123810,	
+0.287854068768738590,	0.287806184694718690,	0.287758299901183290,	0.287710414388252180,	0.287662528156044540,	0.287614641204681050,	0.287566753534280960,	0.287518865144963940,	
+0.287470976036849400,	0.287423086210057800,	0.287375195664708480,	0.287327304400920800,	0.287279412418815220,	0.287231519718511130,	0.287183626300128280,	0.287135732163785910,	
+0.287087837309604630,	0.287039941737703750,	0.286992045448203000,	0.286944148441221740,	0.286896250716880570,	0.286848352275298700,	0.286800453116596020,	0.286752553240891720,	
+0.286704652648306470,	0.286656751338959630,	0.286608849312970870,	0.286560946570459610,	0.286513043111546350,	0.286465138936350510,	0.286417234044991860,	0.286369328437589670,	
+0.286321422114264530,	0.286273515075135880,	0.286225607320323040,	0.286177698849946590,	0.286129789664125890,	0.286081879762980720,	0.286033969146630430,	0.285986057815195590,	
+0.285938145768795670,	0.285890233007550400,	0.285842319531579070,	0.285794405341002370,	0.285746490435939690,	0.285698574816510730,	0.285650658482834940,	0.285602741435032950,	
+0.285554823673224100,	0.285506905197528190,	0.285458986008064570,	0.285411066104953930,	0.285363145488315590,	0.285315224158268990,	0.285267302114934780,	0.285219379358432280,	
+0.285171455888881320,	0.285123531706401310,	0.285075606811112940,	0.285027681203135490,	0.284979754882588860,	0.284931827849592420,	0.284883900104266840,	0.284835971646731520,	
+0.284788042477106260,	0.284740112595510460,	0.284692182002064810,	0.284644250696888700,	0.284596318680101930,	0.284548385951823970,	0.284500452512175480,	0.284452518361275890,	
+0.284404583499244520,	0.284356647926202130,	0.284308711642268120,	0.284260774647562390,	0.284212836942204230,	0.284164898526314440,	0.284116959400012360,	0.284069019563417900,	
+0.284021079016650470,	0.283973137759830800,	0.283925195793078230,	0.283877253116512740,	0.283829309730253610,	0.283781365634421690,	0.283733420829136330,	0.283685475314517430,	
+0.283637529090684400,	0.283589582157757980,	0.283541634515857620,	0.283493686165102730,	0.283445737105614050,	0.283397787337511090,	0.283349836860913580,	0.283301885675941060,	
+0.283253933782714300,	0.283205981181352650,	0.283158027871976080,	0.283110073854704050,	0.283062119129657170,	0.283014163696955090,	0.282966207556717530,	0.282918250709064070,	
+0.282870293154115380,	0.282822334891990930,	0.282774375922810680,	0.282726416246694090,	0.282678455863761830,	0.282630494774133490,	0.282582532977928850,	0.282534570475267530,	
+0.282486607266270120,	0.282438643351056230,	0.282390678729745330,	0.282342713402458150,	0.282294747369314150,	0.282246780630433350,	0.282198813185935090,	0.282150845035940290,	
+0.282102876180568340,	0.282054906619939210,	0.282006936354172400,	0.281958965383388660,	0.281910993707707500,	0.281863021327248890,	0.281815048242132270,	0.281767074452478450,	
+0.281719099958406990,	0.281671124760037750,	0.281623148857490240,	0.281575172250885350,	0.281527194940342450,	0.281479216925981210,	0.281431238207922320,	0.281383258786285340,	
+0.281335278661190240,	0.281287297832756470,	0.281239316301104880,	0.281191334066355050,	0.281143351128626820,	0.281095367488039870,	0.281047383144714840,	0.280999398098771390,	
+0.280951412350329440,	0.280903425899508560,	0.280855438746429540,	0.280807450891211900,	0.280759462333975640,	0.280711473074840290,	0.280663483113926690,	0.280615492451354360,	
+0.280567501087242930,	0.280519509021713130,	0.280471516254884530,	0.280423522786877210,	0.280375528617810620,	0.280327533747805610,	0.280279538176981810,	0.280231541905459130,	
+0.280183544933357230,	0.280135547260796810,	0.280087548887897550,	0.280039549814779460,	0.279991550041562070,	0.279943549568366150,	0.279895548395311440,	0.279847546522517810,	
+0.279799543950104920,	0.279751540678193580,	0.279703536706903400,	0.279655532036354350,	0.279607526666666050,	0.279559520597959410,	0.279511513830353890,	0.279463506363969220,	
+0.279415498198926190,	0.279367489335344390,	0.279319479773343930,	0.279271469513044270,	0.279223458554566430,	0.279175446898029870,	0.279127434543554760,	0.279079421491260640,	
+0.279031407741268330,	0.278983393293697530,	0.278935378148668260,	0.278887362306300120,	0.278839345766713990,	0.278791328530029470,	0.278743310596366700,	0.278695291965845190,	
+0.278647272638585850,	0.278599252614708360,	0.278551231894332290,	0.278503210477578590,	0.278455188364566840,	0.278407165555417110,	0.278359142050249090,	0.278311117849183610,	
+0.278263092952340310,	0.278215067359839310,	0.278167041071800240,	0.278119014088343940,	0.278070986409590160,	0.278022958035658850,	0.277974928966669750,	0.277926899202743770,	
+0.277878868744000530,	0.277830837590560100,	0.277782805742542220,	0.277734773200067670,	0.277686739963256210,	0.277638706032227510,	0.277590671407102420,	0.277542636088000670,	
+0.277494600075042340,	0.277446563368347050,	0.277398525968035830,	0.277350487874228280,	0.277302449087044490,	0.277254409606604140,	0.277206369433028230,	0.277158328566436410,	
+0.277110287006948730,	0.277062244754684880,	0.277014201809765880,	0.276966158172311410,	0.276918113842441470,	0.276870068820275870,	0.276822023105935510,	0.276773976699540130,	
+0.276725929601209790,	0.276677881811064170,	0.276629833329224250,	0.276581784155809810,	0.276533734290940470,	0.276485683734737200,	0.276437632487319730,	0.276389580548808190,	
+0.276341527919322260,	0.276293474598982900,	0.276245420587909910,	0.276197365886223340,	0.276149310494042950,	0.276101254411489690,	0.276053197638683300,	0.276005140175743900,	
+0.275957082022791230,	0.275909023179946310,	0.275860963647328820,	0.275812903425058930,	0.275764842513256340,	0.275716780912042050,	0.275668718621535860,	0.275620655641857390,	
+0.275572591973127780,	0.275524527615466640,	0.275476462568994160,	0.275428396833830140,	0.275380330410095520,	0.275332263297910110,	0.275284195497394020,	0.275236127008667010,	
+0.275188057831850130,	0.275139987967063070,	0.275091917414426070,	0.275043846174058860,	0.274995774246082400,	0.274947701630616600,	0.274899628327781480,	0.274851554337696870,	
+0.274803479660483800,	0.274755404296262050,	0.274707328245151370,	0.274659251507272770,	0.274611174082746050,	0.274563095971691370,	0.274515017174228550,	0.274466937690478640,	
+0.274418857520561330,	0.274370776664596920,	0.274322695122705130,	0.274274612895007040,	0.274226529981622390,	0.274178446382671410,	0.274130362098273910,	0.274082277128550930,	
+0.274034191473622290,	0.273986105133608100,	0.273938018108628280,	0.273889930398803830,	0.273841842004254540,	0.273793752925100220,	0.273745663161461930,	0.273697572713459510,	
+0.273649481581213110,	0.273601389764842660,	0.273553297264469090,	0.273505204080212340,	0.273457110212192540,	0.273409015660529500,	0.273360920425344430,	0.273312824506756980,	
+0.273264727904887540,	0.273216630619855790,	0.273168532651782920,	0.273120434000788730,	0.273072334666993490,	0.273024234650516890,	0.272976133951480240,	0.272928032570003140,	
+0.272879930506206070,	0.272831827760208650,	0.272783724332132160,	0.272735620222096350,	0.272687515430221020,	0.272639409956627330,	0.272591303801435150,	0.272543196964764700,	
+0.272495089446735840,	0.272446981247469690,	0.272398872367086040,	0.272350762805705250,	0.272302652563447100,	0.272254541640432780,	0.272206430036782080,	0.272158317752615340,	
+0.272110204788052310,	0.272062091143214280,	0.272013976818220930,	0.271965861813192710,	0.271917746128249370,	0.271869629763512140,	0.271821512719100770,	0.271773394995135250,	
+0.271725276591736620,	0.271677157509024820,	0.271629037747120160,	0.271580917306142420,	0.271532796186212840,	0.271484674387451270,	0.271436551909978010,	0.271388428753912950,	
+0.271340304919377270,	0.271292180406490780,	0.271244055215373870,	0.271195929346146390,	0.271147802798929530,	0.271099675573843120,	0.271051547671007530,	0.271003419090542650,	
+0.270955289832569670,	0.270907159897208480,	0.270859029284578890,	0.270810897994802240,	0.270762766027998310,	0.270714633384287420,	0.270666500063789560,	0.270618366066625870,	
+0.270570231392916300,	0.270522096042781100,	0.270473960016340280,	0.270425823313714950,	0.270377685935025090,	0.270329547880390990,	0.270281409149932590,	0.270233269743771150,	
+0.270185129662026460,	0.270136988904819020,	0.270088847472268630,	0.270040705364496540,	0.269992562581622740,	0.269944419123767490,	0.269896274991050730,	0.269848130183593770,	
+0.269799984701516500,	0.269751838544938780,	0.269703691713981950,	0.269655544208765860,	0.269607396029410920,	0.269559247176037020,	0.269511097648765460,	0.269462947447716210,	
+0.269414796573009540,	0.269366645024765430,	0.269318492803105160,	0.269270339908148640,	0.269222186340016320,	0.269174032098828060,	0.269125877184705150,	0.269077721597767550,	
+0.269029565338135660,	0.268981408405929430,	0.268933250801270120,	0.268885092524277670,	0.268836933575072050,	0.268788773953774540,	0.268740613660505060,	0.268692452695384050,	
+0.268644291058531490,	0.268596128750068660,	0.268547965770115530,	0.268499802118792430,	0.268451637796219390,	0.268403472802517700,	0.268355307137807360,	0.268307140802208690,	
+0.268258973795841790,	0.268210806118827860,	0.268162637771286960,	0.268114468753339390,	0.268066299065105260,	0.268018128706705830,	0.267969957678261040,	0.267921785979890970,	
+0.267873613611716850,	0.267825440573858650,	0.267777266866436940,	0.267729092489571550,	0.267680917443383900,	0.267632741727993950,	0.267584565343522150,	0.267536388290088470,	
+0.267488210567814300,	0.267440032176819550,	0.267391853117224740,	0.267343673389149880,	0.267295492992716270,	0.267247311928043910,	0.267199130195253320,	0.267150947794464410,	
+0.267102764725798580,	0.267054580989375840,	0.267006396585316220,	0.266958211513741050,	0.266910025774770350,	0.266861839368524590,	0.266813652295123770,	0.266765464554689300,	
+0.266717276147341140,	0.266669087073199750,	0.266620897332385250,	0.266572706925018940,	0.266524515851220890,	0.266476324111111500,	0.266428131704810890,	0.266379938632440420,	
+0.266331744894120040,	0.266283550489970320,	0.266235355420111290,	0.266187159684664330,	0.266138963283749420,	0.266090766217487170,	0.266042568485997500,	0.265994370089401910,	
+0.265946171027820370,	0.265897971301372940,	0.265849770910181030,	0.265801569854364710,	0.265753368134044430,	0.265705165749340330,	0.265656962700373760,	0.265608758987264770,	
+0.265560554610133840,	0.265512349569101140,	0.265464143864287960,	0.265415937495814490,	0.265367730463801130,	0.265319522768368010,	0.265271314409636530,	0.265223105387726700,	
+0.265174895702759210,	0.265126685354853950,	0.265078474344132450,	0.265030262670714780,	0.264982050334721050,	0.264933837336272570,	0.264885623675489510,	0.264837409352492390,	
+0.264789194367401340,	0.264740978720337690,	0.264692762411421640,	0.264644545440773650,	0.264596327808513890,	0.264548109514763760,	0.264499890559643290,	0.264451670943273150,	
+0.264403450665773370,	0.264355229727265440,	0.264307008127869390,	0.264258785867705850,	0.264210562946894880,	0.264162339365557940,	0.264114115123815160,	0.264065890221786670,	
+0.264017664659593920,	0.263969438437356930,	0.263921211555196380,	0.263872984013232390,	0.263824755811586380,	0.263776526950378450,	0.263728297429729200,	0.263680067249758790,	
+0.263631836410588630,	0.263583604912338900,	0.263535372755130120,	0.263487139939082520,	0.263438906464317450,	0.263390672330955140,	0.263342437539116180,	0.263294202088920680,	
+0.263245965980490100,	0.263197729213944580,	0.263149491789404780,	0.263101253706990780,	0.263053014966824090,	0.263004775569024910,	0.262956535513713290,	0.262908294801010800,	
+0.262860053431037580,	0.262811811403914190,	0.262763568719760860,	0.262715325378699070,	0.262667081380848930,	0.262618836726331070,	0.262570591415265730,	0.262522345447774310,	
+0.262474098823977040,	0.262425851543994500,	0.262377603607946930,	0.262329355015955780,	0.262281105768141230,	0.262232855864623970,	0.262184605305524070,	0.262136354090963140,	
+0.262088102221061270,	0.262039849695938740,	0.261991596515717020,	0.261943342680516330,	0.261895088190457260,	0.261846833045660030,	0.261798577246246170,	0.261750320792335840,	
+0.261702063684049690,	0.261653805921508000,	0.261605547504832230,	0.261557288434142550,	0.261509028709559670,	0.261460768331203800,	0.261412507299196410,	0.261364245613657790,	
+0.261315983274708510,	0.261267720282468860,	0.261219456637060370,	0.261171192338603200,	0.261122927387217650,	0.261074661783025190,	0.261026395526146040,	0.260978128616700940,	
+0.260929861054810090,	0.260881592840595030,	0.260833323974175970,	0.260785054455673630,	0.260736784285208190,	0.260688513462901230,	0.260640241988872980,	0.260591969863244120,	
+0.260543697086134950,	0.260495423657666920,	0.260447149577960340,	0.260398874847135920,	0.260350599465313800,	0.260302323432615720,	0.260254046749161750,	0.260205769415072290,	
+0.260157491430468790,	0.260109212795471560,	0.260060933510201320,	0.260012653574778320,	0.259964372989324120,	0.259916091753958970,	0.259867809868803590,	0.259819527333978280,	
+0.259771244149604560,	0.259722960315802720,	0.259674675832693490,	0.259626390700397170,	0.259578104919035270,	0.259529818488728140,	0.259481531409596400,	0.259433243681760460,	
+0.259384955305341840,	0.259336666280460810,	0.259288376607238080,	0.259240086285794040,	0.259191795316250200,	0.259143503698726850,	0.259095211433344350,	0.259046918520224210,	
+0.258998624959486780,	0.258950330751252790,	0.258902035895642530,	0.258853740392777640,	0.258805444242778400,	0.258757147445765560,	0.258708850001859390,	0.258660551911181540,	
+0.258612253173852280,	0.258563953789992420,	0.258515653759722240,	0.258467353083163380,	0.258419051760436110,	0.258370749791661190,	0.258322447176959010,	0.258274143916451150,	
+0.258225840010257890,	0.258177535458499590,	0.258129230261297920,	0.258080924418773170,	0.258032617931046090,	0.257984310798237030,	0.257936003020467650,	0.257887694597858210,	
+0.257839385530529600,	0.257791075818602060,	0.257742765462197270,	0.257694454461435570,	0.257646142816437720,	0.257597830527324100,	0.257549517594216350,	0.257501204017234750,	
+0.257452889796500160,	0.257404574932132920,	0.257356259424254720,	0.257307943272985840,	0.257259626478446630,	0.257211309040758840,	0.257162990960042750,	0.257114672236419210,	
+0.257066352870008510,	0.257018032860932390,	0.256969712209311200,	0.256921390915265670,	0.256873068978916320,	0.256824746400384660,	0.256776423179791160,	0.256728099317256600,	
+0.256679774812901380,	0.256631449666847140,	0.256583123879214230,	0.256534797450123590,	0.256486470379695460,	0.256438142668051650,	0.256389814315312440,	0.256341485321598670,	
+0.256293155687030820,	0.256244825411730440,	0.256196494495818050,	0.256148162939414000,	0.256099830742639920,	0.256051497905616320,	0.256003164428463940,	0.255954830311303230,	
+0.255906495554255880,	0.255858160157442280,	0.255809824120983300,	0.255761487444999270,	0.255713150129611990,	0.255664812174941860,	0.255616473581109670,	0.255568134348235890,	
+0.255519794476442190,	0.255471453965849030,	0.255423112816577200,	0.255374771028747170,	0.255326428602480620,	0.255278085537898050,	0.255229741835119760,	0.255181397494267600,	
+0.255133052515461920,	0.255084706898823680,	0.255036360644473160,	0.254988013752532220,	0.254939666223121200,	0.254891318056361060,	0.254842969252372150,	0.254794619811276270,	
+0.254746269733193860,	0.254697919018245730,	0.254649567666552390,	0.254601215678235570,	0.254552863053415730,	0.254504509792213730,	0.254456155894750010,	0.254407801361146320,	
+0.254359446191523120,	0.254311090386000920,	0.254262733944701390,	0.254214376867745010,	0.254166019155252720,	0.254117660807344940,	0.254069301824143450,	0.254020942205768650,	
+0.253972581952341570,	0.253924221063982550,	0.253875859540813430,	0.253827497382954680,	0.253779134590527140,	0.253730771163651390,	0.253682407102449100,	0.253634042407040850,	
+0.253585677077547420,	0.253537311114089390,	0.253488944516788550,	0.253440577285765300,	0.253392209421140210,	0.253343840923035020,	0.253295471791570190,	0.253247102026866730,	
+0.253198731629045050,	0.253150360598226990,	0.253101988934533060,	0.253053616638084120,	0.253005243709000680,	0.252956870147404640,	0.252908495953416360,	0.252860121127156830,	
+0.252811745668746650,	0.252763369578307470,	0.252714992855959890,	0.252666615501824790,	0.252618237516022750,	0.252569858898675560,	0.252521479649903680,	0.252473099769828120,	
+0.252424719258569410,	0.252376338116249320,	0.252327956342988380,	0.252279573938907100,	0.252231190904127320,	0.252182807238769570,	0.252134422942954790,	0.252086038016803570,	
+0.252037652460437630,	0.251989266273977610,	0.251940879457544400,	0.251892492011258520,	0.251844103935241930,	0.251795715229615020,	0.251747325894498830,	0.251698935930013860,	
+0.251650545336282060,	0.251602154113423850,	0.251553762261560230,	0.251505369780811780,	0.251456976671300400,	0.251408582933146500,	0.251360188566470740,	0.251311793571394990,	
+0.251263397948039700,	0.251215001696525940,	0.251166604816974230,	0.251118207309506460,	0.251069809174243150,	0.251021410411305320,	0.250973011020813540,	0.250924611002889650,	
+0.250876210357654230,	0.250827809085228280,	0.250779407185732440,	0.250731004659288440,	0.250682601506016960,	0.250634197726038950,	0.250585793319475060,	0.250537388286447060,	
+0.250488982627075640,	0.250440576341481310,	0.250392169429785980,	0.250343761892110220,	0.250295353728575090,	0.250246944939301110,	0.250198535524410180,	0.250150125484022930,	
+0.250101714818260380,	0.250053303527243090,	0.250004891611092960,	0.249956479069930650,	0.249908065903877120,	0.249859652113053000,	0.249811237697580150,	0.249762822657579240,	
+0.249714406993171270,	0.249665990704476840,	0.249617573791617860,	0.249569156254714960,	0.249520738093889170,	0.249472319309261090,	0.249423899900952650,	0.249375479869084450,	
+0.249327059213777120,	0.249278637935152590,	0.249230216033331450,	0.249181793508434780,	0.249133370360583200,	0.249084946589898630,	0.249036522196501660,	0.248988097180513430,	
+0.248939671542054490,	0.248891245281246810,	0.248842818398211040,	0.248794390893068210,	0.248745962765938940,	0.248697534016945220,	0.248649104646207680,	0.248600674653847360,	
+0.248552244039984940,	0.248503812804742320,	0.248455380948240180,	0.248406948470599160,	0.248358515371941200,	0.248310081652386940,	0.248261647312057470,	0.248213212351073460,	
+0.248164776769556870,	0.248116340567628320,	0.248067903745408910,	0.248019466303019330,	0.247971028240581510,	0.247922589558216110,	0.247874150256044230,	0.247825710334186540,	
+0.247777269792765040,	0.247728828631900350,	0.247680386851713560,	0.247631944452325420,	0.247583501433857820,	0.247535057796431480,	0.247486613540167040,	0.247438168665186530,	
+0.247389723171610560,	0.247341277059560330,	0.247292830329156440,	0.247244382980520930,	0.247195935013774430,	0.247147486429038110,	0.247099037226432640,	0.247050587406080020,	
+0.247002136968100920,	0.246953685912616490,	0.246905234239747420,	0.246856781949615660,	0.246808329042341980,	0.246759875518047460,	0.246711421376852810,	0.246662966618880070,	
+0.246614511244249910,	0.246566055253083010,	0.246517598645501430,	0.246469141421625850,	0.246420683581577400,	0.246372225125476820,	0.246323766053446110,	0.246275306365605990,	
+0.246226846062077590,	0.246178385142981650,	0.246129923608440190,	0.246081461458573900,	0.246032998693503980,	0.245984535313351130,	0.245936071318237360,	0.245887606708283410,	
+0.245839141483610440,	0.245790675644339210,	0.245742209190591700,	0.245693742122488650,	0.245645274440151270,	0.245596806143700270,	0.245548337233257700,	0.245499867708944270,	
+0.245451397570880750,	0.245402926819189150,	0.245354455453990260,	0.245305983475405220,	0.245257510883554770,	0.245209037678561000,	0.245160563860544630,	0.245112089429626840,	
+0.245063614385928390,	0.245015138729571340,	0.244966662460676470,	0.244918185579364930,	0.244869708085757480,	0.244821229979976180,	0.244772751262141850,	0.244724271932375610,	
+0.244675791990798280,	0.244627311437531890,	0.244578830272697200,	0.244530348496415030,	0.244481866108807400,	0.244433383109995130,	0.244384899500099400,	0.244336415279240960,	
+0.244287930447541930,	0.244239445005123100,	0.244190958952105630,	0.244142472288610330,	0.244093985014759290,	0.244045497130673280,	0.243997008636473530,	0.243948519532280830,	
+0.243900029818217260,	0.243851539494403640,	0.243803048560961130,	0.243754557018010580,	0.243706064865674090,	0.243657572104072410,	0.243609078733326380,	0.243560584753558100,	
+0.243512090164888340,	0.243463594967438360,	0.243415099161328970,	0.243366602746682230,	0.243318105723619030,	0.243269608092260530,	0.243221109852727600,	0.243172611005142310,	
+0.243124111549625520,	0.243075611486298420,	0.243027110815281860,	0.242978609536697980,	0.242930107650667550,	0.242881605157311890,	0.242833102056751740,	0.242784598349109290,	
+0.242736094034505360,	0.242687589113061150,	0.242639083584897580,	0.242590577450136710,	0.242542070708899380,	0.242493563361306480,	0.242445055407480100,	0.242396546847541060,	
+0.242348037681610650,	0.242299527909809710,	0.242251017532260420,	0.242202506549083570,	0.242153994960400440,	0.242105482766331900,	0.242056969967000070,	0.242008456562525840,	
+0.241959942553030440,	0.241911427938634790,	0.241862912719460980,	0.241814396895629890,	0.241765880467262800,	0.241717363434480580,	0.241668845797405380,	0.241620327556158090,	
+0.241571808710859540,	0.241523289261631880,	0.241474769208596010,	0.241426248551873220,	0.241377727291584350,	0.241329205427851630,	0.241280682960795880,	0.241232159890538420,	
+0.241183636217200150,	0.241135111940903200,	0.241086587061768500,	0.241038061579917310,	0.240989535495470530,	0.240941008808550320,	0.240892481519277640,	0.240843953627773720,	
+0.240795425134159500,	0.240746896038557150,	0.240698366341087540,	0.240649836041871600,	0.240601305141031510,	0.240552773638688130,	0.240504241534962830,	0.240455708829976520,	
+0.240407175523851320,	0.240358641616708220,	0.240310107108668510,	0.240261571999853100,	0.240213036290384180,	0.240164499980382670,	0.240115963069969930,	0.240067425559266830,	
+0.240018887448395610,	0.239970348737477160,	0.239921809426632850,	0.239873269515983560,	0.239824729005651550,	0.239776187895757720,	0.239727646186423000,	0.239679103877769580,	
+0.239630560969918390,	0.239582017462990820,	0.239533473357107760,	0.239484928652391430,	0.239436383348962810,	0.239387837446943220,	0.239339290946453620,	0.239290743847616200,	
+0.239242196150551920,	0.239193647855382160,	0.239145098962227850,	0.239096549471211230,	0.239047999382453250,	0.238999448696075260,	0.238950897412198190,	0.238902345530944330,	
+0.238853793052434590,	0.238805239976790400,	0.238756686304132660,	0.238708132034583630,	0.238659577168264280,	0.238611021705295550,	0.238562465645799690,	0.238513908989897690,	
+0.238465351737710880,	0.238416793889360300,	0.238368235444968160,	0.238319676404655400,	0.238271116768543480,	0.238222556536753340,	0.238173995709407200,	0.238125434286626110,	
+0.238076872268531410,	0.238028309655244130,	0.237979746446886460,	0.237931182643579460,	0.237882618245444520,	0.237834053252602570,	0.237785487665175900,	0.237736921483285540,	
+0.237688354707052460,	0.237639787336598910,	0.237591219372045890,	0.237542650813514810,	0.237494081661126680,	0.237445511915003790,	0.237396941575267110,	0.237348370642038060,	
+0.237299799115437670,	0.237251226995588200,	0.237202654282610700,	0.237154080976626520,	0.237105507077756740,	0.237056932586123590,	0.237008357501848150,	0.236959781825051790,	
+0.236911205555855540,	0.236862628694381710,	0.236814051240751330,	0.236765473195085370,	0.236716894557506160,	0.236668315328134730,	0.236619735507092480,	0.236571155094500500,	
+0.236522574090481020,	0.236473992495155130,	0.236425410308644250,	0.236376827531069420,	0.236328244162552960,	0.236279660203215890,	0.236231075653179660,	0.236182490512565320,	
+0.236133904781495180,	0.236085318460090260,	0.236036731548472050,	0.235988144046761610,	0.235939555955081200,	0.235890967273551940,	0.235842378002295240,	0.235793788141432150,	
+0.235745197691085040,	0.235696606651374930,	0.235648015022422890,	0.235599422804351230,	0.235550829997281000,	0.235502236601333710,	0.235453642616630380,	0.235405048043293400,	
+0.235356452881443800,	0.235307857131203060,	0.235259260792692220,	0.235210663866033680,	0.235162066351348480,	0.235113468248758120,	0.235064869558383650,	0.235016270280347470,	
+0.234967670414770570,	0.234919069961774530,	0.234870468921480360,	0.234821867294010440,	0.234773265079485870,	0.234724662278027710,	0.234676058889758320,	0.234627454914798780,	
+0.234578850353270580,	0.234530245205294860,	0.234481639470993960,	0.234433033150488940,	0.234384426243901350,	0.234335818751352260,	0.234287210672964040,	0.234238602008857790,	
+0.234189992759155060,	0.234141382923976900,	0.234092772503445730,	0.234044161497682620,	0.233995549906809100,	0.233946937730946300,	0.233898324970216560,	0.233849711624741020,	
+0.233801097694640750,	0.233752483180038190,	0.233703868081054420,	0.233655252397810960,	0.233606636130428950,	0.233558019279030800,	0.233509401843737590,	0.233460783824670860,	
+0.233412165221951740,	0.233363546035702670,	0.233314926266044690,	0.233266305913099440,	0.233217684976987970,	0.233169063457832700,	0.233120441355754800,	0.233071818670875790,	
+0.233023195403316810,	0.232974571553200250,	0.232925947120647290,	0.232877322105779020,	0.232828696508717880,	0.232780070329584980,	0.232731443568501920,	0.232682816225589810,	
+0.232634188300971100,	0.232585559794766920,	0.232536930707098830,	0.232488301038087990,	0.232439670787856820,	0.232391039956526490,	0.232342408544218530,	0.232293776551054150,	
+0.232245143977155730,	0.232196510822644480,	0.232147877087641950,	0.232099242772269290,	0.232050607876648940,	0.232001972400902090,	0.231953336345150310,	0.231904699709514740,	
+0.231856062494117860,	0.231807424699080830,	0.231758786324524790,	0.231710147370572240,	0.231661507837344290,	0.231612867724962620,	0.231564227033548310,	0.231515585763223870,	
+0.231466943914110460,	0.231418301486329720,	0.231369658480002770,	0.231321014895252110,	0.231272370732198920,	0.231223725990964770,	0.231175080671670920,	0.231126434774439780,	
+0.231077788299392540,	0.231029141246650860,	0.230980493616335880,	0.230931845408570090,	0.230883196623474670,	0.230834547261170860,	0.230785897321781120,	0.230737246805426620,	
+0.230688595712228990,	0.230639944042309450,	0.230591291795790490,	0.230542638972793280,	0.230493985573439500,	0.230445331597850300,	0.230396677046148220,	0.230348021918454440,	
+0.230299366214890610,	0.230250709935577920,	0.230202053080638900,	0.230153395650194740,	0.230104737644367120,	0.230056079063277190,	0.230007419907047510,	0.229958760175799280,	
+0.229910099869653690,	0.229861438988733320,	0.229812777533159320,	0.229764115503053400,	0.229715452898536760,	0.229666789719731900,	0.229618125966760090,	0.229569461639742960,	
+0.229520796738801710,	0.229472131264058940,	0.229423465215635840,	0.229374798593654060,	0.229326131398234850,	0.229277463629500770,	0.229228795287573010,	0.229180126372573260,	
+0.229131456884622780,	0.229082786823844060,	0.229034116190358410,	0.228985444984287440,	0.228936773205752430,	0.228888100854875930,	0.228839427931779170,	0.228790754436583420,	
+0.228742080369411180,	0.228693405730383770,	0.228644730519622860,	0.228596054737249670,	0.228547378383386760,	0.228498701458155430,	0.228450023961677350,	0.228401345894073770,	
+0.228352667255467240,	0.228303988045979070,	0.228255308265730930,	0.228206627914844060,	0.228157946993441080,	0.228109265501643200,	0.228060583439572200,	0.228011900807349260,	
+0.227963217605097020,	0.227914533832936750,	0.227865849490989700,	0.227817164579378480,	0.227768479098224340,	0.227719793047648970,	0.227671106427773720,	0.227622419238721120,	
+0.227573731480612500,	0.227525043153569530,	0.227476354257713510,	0.227427664793167030,	0.227378974760051420,	0.227330284158488350,	0.227281592988599150,	0.227232901250506410,	
+0.227184208944331390,	0.227135516070195860,	0.227086822628221110,	0.227038128618529730,	0.226989434041243030,	0.226940738896482310,	0.226892043184370170,	0.226843346905027940,	
+0.226794650058577350,	0.226745952645139690,	0.226697254664837560,	0.226648556117792330,	0.226599857004125690,	0.226551157323958970,	0.226502457077414790,	0.226453756264614480,	
+0.226405054885679770,	0.226356352940732000,	0.226307650429893760,	0.226258947353286420,	0.226210243711031680,	0.226161539503250940,	0.226112834730066740,	0.226064129391600480,	
+0.226015423487973460,	0.225966717019308320,	0.225918009985726390,	0.225869302387349420,	0.225820594224298760,	0.225771885496697050,	0.225723176204665640,	0.225674466348326270,	
+0.225625755927800320,	0.225577044943210400,	0.225528333394677870,	0.225479621282324520,	0.225430908606271680,	0.225382195366642000,	0.225333481563556810,	0.225284767197137940,	
+0.225236052267506700,	0.225187336774785780,	0.225138620719096520,	0.225089904100560710,	0.225041186919299700,	0.224992469175436140,	0.224943750869091410,	0.224895032000386880,	
+0.224846312569445210,	0.224797592576387760,	0.224748872021336310,	0.224700150904412250,	0.224651429225738270,	0.224602706985435690,	0.224553984183626380,	0.224505260820431650,	
+0.224456536895974200,	0.224407812410375410,	0.224359087363757060,	0.224310361756240610,	0.224261635587948650,	0.224212908859002640,	0.224164181569524330,	0.224115453719635120,	
+0.224066725309457730,	0.224017996339113540,	0.223969266808723890,	0.223920536718411530,	0.223871806068297850,	0.223823074858504610,	0.223774343089153280,	0.223725610760366510,	
+0.223676877872265730,	0.223628144424972720,	0.223579410418608960,	0.223530675853297080,	0.223481940729158500,	0.223433205046315090,	0.223384468804888240,	0.223335732005000650,	
+0.223286994646773710,	0.223238256730329290,	0.223189518255788810,	0.223140779223274970,	0.223092039632909160,	0.223043299484812830,	0.222994558779108680,	0.222945817515918130,	
+0.222897075695363040,	0.222848333317564820,	0.222799590382646210,	0.222750846890728630,	0.222702102841933920,	0.222653358236383550,	0.222604613074200180,	0.222555867355505280,	
+0.222507121080420730,	0.222458374249067950,	0.222409626861569650,	0.222360878918047290,	0.222312130418622720,	0.222263381363417420,	0.222214631752554070,	0.222165881586154160,	
+0.222117130864339540,	0.222068379587231630,	0.222019627754953240,	0.221970875367625780,	0.221922122425370680,	0.221873368928310720,	0.221824614876567350,	0.221775860270262410,	
+0.221727105109517430,	0.221678349394455080,	0.221629593125196890,	0.221580836301864700,	0.221532078924579990,	0.221483320993465520,	0.221434562508642710,	0.221385803470233540,	
+0.221337043878359400,	0.221288283733143100,	0.221239523034706090,	0.221190761783170260,	0.221141999978657110,	0.221093237621289380,	0.221044474711188570,	0.220995711248476140,	
+0.220946947233274850,	0.220898182665706180,	0.220849417545892070,	0.220800651873954010,	0.220751885650014720,	0.220703118874195720,	0.220654351546618940,	0.220605583667405820,	
+0.220556815236679190,	0.220508046254560520,	0.220459276721171740,	0.220410506636634330,	0.220361736001071090,	0.220312964814603520,	0.220264193077353510,	0.220215420789442620,	
+0.220166647950993580,	0.220117874562127950,	0.220069100622967170,	0.220020326133634090,	0.219971551094250180,	0.219922775504937410,	0.219873999365817250,	0.219825222677012540,	
+0.219776445438644770,	0.219727667650835870,	0.219678889313707380,	0.219630110427382120,	0.219581330991981540,	0.219532551007627670,	0.219483770474441980,	0.219434989392547300,	
+0.219386207762065130,	0.219337425583117470,	0.219288642855825780,	0.219239859580312950,	0.219191075756700440,	0.219142291385110270,	0.219093506465663920,	0.219044720998484240,	
+0.218995934983692740,	0.218947148421411000,	0.218898361311761800,	0.218849573654866710,	0.218800785450847690,	0.218751996699826260,	0.218703207401925280,	0.218654417557266280,	
+0.218605627165971230,	0.218556836228161690,	0.218508044743960460,	0.218459252713489150,	0.218410460136869710,	0.218361667014223690,	0.218312873345673920,	0.218264079131341960,	
+0.218215284371349820,	0.218166489065819040,	0.218117693214872450,	0.218068896818631650,	0.218020099877218150,	0.217971302390754850,	0.217922504359363280,	0.217873705783165480,	
+0.217824906662282940,	0.217776106996838610,	0.217727306786953980,	0.217678506032751100,	0.217629704734351500,	0.217580902891878090,	0.217532100505452440,	0.217483297575196490,	
+0.217434494101231920,	0.217385690083681500,	0.217336885522666890,	0.217288080418310050,	0.217239274770732570,	0.217190468580057330,	0.217141661846405960,	0.217092854569899960,	
+0.217044046750662270,	0.216995238388814460,	0.216946429484478560,	0.216897620037776160,	0.216848810048830140,	0.216799999517762080,	0.216751188444694040,	0.216702376829747580,	
+0.216653564673045640,	0.216604751974709740,	0.216555938734862010,	0.216507124953623980,	0.216458310631118560,	0.216409495767467370,	0.216360680362792430,	0.216311864417215390,	
+0.216263047930859100,	0.216214230903845170,	0.216165413336295270,	0.216116595228332240,	0.216067776580077730,	0.216018957391653780,	0.215970137663182020,	0.215921317394785320,	
+0.215872496586585360,	0.215823675238704130,	0.215774853351263280,	0.215726030924385750,	0.215677207958193120,	0.215628384452807490,	0.215579560408350470,	0.215530735824944950,	
+0.215481910702712610,	0.215433085041775500,	0.215384258842255230,	0.215335432104274750,	0.215286604827955700,	0.215237777013420150,	0.215188948660789690,	0.215140119770187320,	
+0.215091290341734630,	0.215042460375553270,	0.214993629871766230,	0.214944798830495080,	0.214895967251861970,	0.214847135135988490,	0.214798302482997610,	0.214749469293010950,	
+0.214700635566150650,	0.214651801302538300,	0.214602966502296900,	0.214554131165548080,	0.214505295292413940,	0.214456458883016090,	0.214407621937477560,	0.214358784455919970,	
+0.214309946438465430,	0.214261107885235590,	0.214212268796353380,	0.214163429171940530,	0.214114589012118660,	0.214065748317010750,	0.214016907086738480,	0.213968065321423960,	
+0.213919223021188790,	0.213870380186156030,	0.213821536816447330,	0.213772692912184760,	0.213723848473490050,	0.213675003500486150,	0.213626157993294740,	0.213577311952037910,	
+0.213528465376837400,	0.213479618267816140,	0.213430770625095830,	0.213381922448798610,	0.213333073739046140,	0.213284224495961410,	0.213235374719666140,	0.213186524410281990,	
+0.213137673567931950,	0.213088822192737750,	0.213039970284821490,	0.212991117844304860,	0.212942264871310880,	0.212893411365961240,	0.212844557328378060,	0.212795702758683060,	
+0.212746847656999220,	0.212697992023448270,	0.212649135858152370,	0.212600279161233170,	0.212551421932813710,	0.212502564173015690,	0.212453705881961250,	0.212404847059772140,	
+0.212355987706571330,	0.212307127822480540,	0.212258267407621940,	0.212209406462117250,	0.212160544986089470,	0.212111682979660320,	0.212062820442951520,	0.212013957376086140,	
+0.211965093779185820,	0.211916229652372810,	0.211867364995768750,	0.211818499809496740,	0.211769634093678470,	0.211720767848436130,	0.211671901073891420,	0.211623033770167390,	
+0.211574165937385790,	0.211525297575668760,	0.211476428685138080,	0.211427559265916720,	0.211378689318126480,	0.211329818841889530,	0.211280947837327590,	0.211232076304563730,	
+0.211183204243719640,	0.211134331654917130,	0.211085458538279230,	0.211036584893927680,	0.210987710721984660,	0.210938836022571930,	0.210889960795812570,	0.210841085041828270,	
+0.210792208760741280,	0.210743331952673340,	0.210694454617747500,	0.210645576756085500,	0.210596698367809590,	0.210547819453041460,	0.210498940011904250,	0.210450060044519690,	
+0.210401179551009950,	0.210352298531496870,	0.210303416986103440,	0.210254534914951500,	0.210205652318162770,	0.210156769195860320,	0.210107885548165980,	0.210059001375201920,	
+0.210010116677089940,	0.209961231453953070,	0.209912345705913130,	0.209863459433092340,	0.209814572635612460,	0.209765685313596570,	0.209716797467166480,	0.209667909096444390,	
+0.209619020201552100,	0.209570130782612690,	0.209521240839747960,	0.209472350373080120,	0.209423459382730990,	0.209374567868823610,	0.209325675831479850,	0.209276783270821440,	
+0.209227890186971490,	0.209178996580051850,	0.209130102450184710,	0.209081207797491870,	0.209032312622096460,	0.208983416924120260,	0.208934520703685510,	0.208885623960914010,	
+0.208836726695928930,	0.208787828908852000,	0.208738930599805500,	0.208690031768911240,	0.208641132416292340,	0.208592232542070600,	0.208543332146368300,	0.208494431229307220,	
+0.208445529791010500,	0.208396627831599960,	0.208347725351197830,	0.208298822349925970,	0.208249918827907500,	0.208201014785264200,	0.208152110222117960,	0.208103205138591870,	
+0.208054299534807750,	0.208005393410887920,	0.207956486766954140,	0.207907579603129580,	0.207858671919536080,	0.207809763716295890,	0.207760854993530860,	0.207711945751364150,	
+0.207663035989917530,	0.207614125709313370,	0.207565214909673420,	0.207516303591120890,	0.207467391753777600,	0.207418479397765840,	0.207369566523207430,	0.207320653130225550,	
+0.207271739218942010,	0.207222824789478700,	0.207173909841958770,	0.207124994376504080,	0.207076078393236880,	0.207027161892279070,	0.206978244873753770,	0.206929327337782850,	
+0.206880409284488640,	0.206831490713992950,	0.206782571626419000,	0.206733652021888590,	0.206684731900524050,	0.206635811262447260,	0.206586890107781390,	0.206537968436648260,	
+0.206489046249170250,	0.206440123545469150,	0.206391200325668180,	0.206342276589889240,	0.206293352338254160,	0.206244427570886120,	0.206195502287907010,	0.206146576489439150,	
+0.206097650175604440,	0.206048723346526020,	0.205999796002325790,	0.205950868143126050,	0.205901939769048750,	0.205853010880216990,	0.205804081476752720,	0.205755151558778240,	
+0.205706221126415480,	0.205657290179787570,	0.205608358719016450,	0.205559426744224420,	0.205510494255533390,	0.205461561253066580,	0.205412627736945850,	0.205363693707293540,	
+0.205314759164231590,	0.205265824107883130,	0.205216888538370140,	0.205167952455814510,	0.205119015860339430,	0.205070078752066790,	0.205021141131118940,	0.204972202997617840,	
+0.204923264351686650,	0.204874325193447280,	0.204825385523022120,	0.204776445340533080,	0.204727504646103340,	0.204678563439854830,	0.204629621721909930,	0.204580679492390530,	
+0.204531736751419860,	0.204482793499119850,	0.204433849735612880,	0.204384905461020810,	0.204335960675466940,	0.204287015379073180,	0.204238069571961420,	0.204189123254254920,	
+0.204140176426075630,	0.204091229087545900,	0.204042281238787650,	0.203993332879924130,	0.203944384011077280,	0.203895434632369480,	0.203846484743922640,	0.203797534345860040,	
+0.203748583438303600,	0.203699632021375700,	0.203650680095198290,	0.203601727659894620,	0.203552774715586610,	0.203503821262396690,	0.203454867300446760,	0.203405912829860090,	
+0.203356957850758660,	0.203308002363264410,	0.203259046367500560,	0.203210089863589100,	0.203161132851652440,	0.203112175331812470,	0.203063217304192520,	0.203014258768914550,	
+0.202965299726100920,	0.202916340175873590,	0.202867380118355840,	0.202818419553669670,	0.202769458481937420,	0.202720496903281090,	0.202671534817823960,	0.202622572225688020,	
+0.202573609126995620,	0.202524645521868770,	0.202475681410430740,	0.202426716792803500,	0.202377751669109040,	0.202328786039470660,	0.202279819904010280,	0.202230853262850370,	
+0.202181886116112870,	0.202132918463921120,	0.202083950306397030,	0.202034981643663100,	0.201986012475841280,	0.201937042803054860,	0.201888072625425820,	0.201839101943076610,	
+0.201790130756129230,	0.201741159064706910,	0.201692186868931730,	0.201643214168926080,	0.201594240964811930,	0.201545267256712650,	0.201496293044750200,	0.201447318329047000,	
+0.201398343109725070,	0.201349367386907700,	0.201300391160716930,	0.201251414431274760,	0.201202437198704480,	0.201153459463128100,	0.201104481224668090,	0.201055502483446420,	
+0.201006523239586450,	0.200957543493210160,	0.200908563244440010,	0.200859582493398030,	0.200810601240207500,	0.200761619484990490,	0.200712637227869420,	0.200663654468966330,	
+0.200614671208404540,	0.200565687446306070,	0.200516703182793380,	0.200467718417988490,	0.200418733152014750,	0.200369747384994160,	0.200320761117048800,	0.200271774348301960,	
+0.200222787078875670,	0.200173799308892430,	0.200124811038474240,	0.200075822267744450,	0.200026832996825110,	0.199977843225838700,	0.199928852954907250,	0.199879862184154100,	
+0.199830870913701280,	0.199781879143671290,	0.199732886874186170,	0.199683894105369270,	0.199634900837342640,	0.199585907070228750,	0.199536912804149650,	0.199487918039228720,	
+0.199438922775588000,	0.199389927013349510,	0.199340930752636650,	0.199291933993571480,	0.199242936736276440,	0.199193938980873650,	0.199144940727486450,	0.199095941976236900,	
+0.199046942727247460,	0.198997942980640270,	0.198948942736538630,	0.198899941995064640,	0.198850940756340800,	0.198801939020489180,	0.198752936787633140,	0.198703934057894770,	
+0.198654930831396540,	0.198605927108260550,	0.198556922888610210,	0.198507918172567520,	0.198458912960255060,	0.198409907251794890,	0.198360901047310380,	0.198311894346923620,	
+0.198262887150756660,	0.198213879458932960,	0.198164871271574530,	0.198115862588803930,	0.198066853410743230,	0.198017843737515850,	0.197968833569243860,	0.197919822906049790,	
+0.197870811748055710,	0.197821800095385050,	0.197772787948159890,	0.197723775306502730,	0.197674762170535730,	0.197625748540382260,	0.197576734416164410,	0.197527719798004710,	
+0.197478704686025300,	0.197429689080349550,	0.197380672981099570,	0.197331656388397480,	0.197282639302366700,	0.197233621723129300,	0.197184603650807870,	0.197135585085524480,	
+0.197086566027402540,	0.197037546476564210,	0.196988526433132030,	0.196939505897228060,	0.196890484868975780,	0.196841463348497310,	0.196792441335915140,	0.196743418831351460,	
+0.196694395834929650,	0.196645372346771870,	0.196596348367000660,	0.196547323895738120,	0.196498298933107720,	0.196449273479231580,	0.196400247534231800,	0.196351221098231860,	
+0.196302194171353860,	0.196253166753720370,	0.196204138845453540,	0.196155110446676770,	0.196106081557512250,	0.196057052178082500,	0.196008022308509720,	0.195958991948917300,	
+0.195909961099427400,	0.195860929760162620,	0.195811897931245040,	0.195762865612798180,	0.195713832804944140,	0.195664799507805520,	0.195615765721504490,	0.195566731446164460,	
+0.195517696681907600,	0.195468661428856050,	0.195419625687133310,	0.195370589456861500,	0.195321552738163210,	0.195272515531160600,	0.195223477835977130,	0.195174439652734980,	
+0.195125400981556730,	0.195076361822564550,	0.195027322175881900,	0.194978282041630920,	0.194929241419934260,	0.194880200310914050,	0.194831158714693750,	0.194782116631395580,	
+0.194733074061142130,	0.194684031004055540,	0.194634987460259310,	0.194585943429875620,	0.194536898913027080,	0.194487853909835830,	0.194438808420425410,	0.194389762444917960,	
+0.194340715983435660,	0.194291669036102010,	0.194242621603039180,	0.194193573684369820,	0.194144525280216060,	0.194095476390701430,	0.194046427015948130,	0.193997377156078730,	
+0.193948326811215490,	0.193899275981481850,	0.193850224667000000,	0.193801172867892610,	0.193752120584281850,	0.193703067816291240,	0.193654014564042940,	0.193604960827659600,	
+0.193555906607263430,	0.193506851902977920,	0.193457796714925300,	0.193408741043227720,	0.193359684888008750,	0.193310628249390580,	0.193261571127495810,	0.193212513522446700,	
+0.193163455434366720,	0.193114396863378110,	0.193065337809603530,	0.193016278273165140,	0.192967218254186500,	0.192918157752789810,	0.192869096769097720,	0.192820035303232470,	
+0.192770973355317570,	0.192721910925475220,	0.192672848013828110,	0.192623784620498420,	0.192574720745609720,	0.192525656389284230,	0.192476591551644150,	0.192427526232813030,	
+0.192378460432913100,	0.192329394152066980,	0.192280327390396990,	0.192231260148026580,	0.192182192425078060,	0.192133124221674030,	0.192084055537936750,	0.192034986373989770,	
+0.191985916729955350,	0.191936846605956110,	0.191887776002114320,	0.191838704918553540,	0.191789633355396010,	0.191740561312764350,	0.191691488790780880,	0.191642415789569140,	
+0.191593342309251350,	0.191544268349950170,	0.191495193911787930,	0.191446118994888110,	0.191397043599373010,	0.191347967725364860,	0.191298891372987220,	0.191249814542362370,	
+0.191200737233612970,	0.191151659446861300,	0.191102581182230890,	0.191053502439844060,	0.191004423219823440,	0.190955343522291380,	0.190906263347371350,	0.190857182695185670,	
+0.190808101565857040,	0.190759019959507730,	0.190709937876261280,	0.190660855316240020,	0.190611772279566600,	0.190562688766363310,	0.190513604776753750,	0.190464520310860170,	
+0.190415435368804840,	0.190366349950711390,	0.190317264056702020,	0.190268177686899520,	0.190219090841426130,	0.190170003520405470,	0.190120915723959780,	0.190071827452211820,	
+0.190022738705283830,	0.189973649483299450,	0.189924559786380930,	0.189875469614651020,	0.189826378968231980,	0.189777287847247460,	0.189728196251819720,	0.189679104182071460,	
+0.189630011638125040,	0.189580918620103980,	0.189531825128130660,	0.189482731162327330,	0.189433636722817630,	0.189384541809723810,	0.189335446423168630,	0.189286350563274420,	
+0.189237254230164770,	0.189188157423961970,	0.189139060144788790,	0.189089962392767510,	0.189040864168021770,	0.188991765470673870,	0.188942666300846550,	0.188893566658662140,	
+0.188844466544244220,	0.188795365957715180,	0.188746264899197690,	0.188697163368814120,	0.188648061366688050,	0.188598958892941840,	0.188549855947697830,	0.188500752531079590,	
+0.188451648643209460,	0.188402544284210220,	0.188353439454204190,	0.188304334153314960,	0.188255228381664920,	0.188206122139376820,	0.188157015426572980,	0.188107908243377030,	
+0.188058800589911280,	0.188009692466298560,	0.187960583872661180,	0.187911474809122760,	0.187862365275805660,	0.187813255272832660,	0.187764144800326050,	0.187715033858409540,	
+0.187665922447205450,	0.187616810566836540,	0.187567698217425170,	0.187518585399094990,	0.187469472111968350,	0.187420358356167600,	0.187371244131816380,	0.187322129439037060,	
+0.187273014277952400,	0.187223898648684770,	0.187174782551357860,	0.187125665986093950,	0.187076548953015900,	0.187027431452246040,	0.186978313483908030,	0.186929195048124250,	
+0.186880076145017480,	0.186830956774710070,	0.186781836937325720,	0.186732716632986770,	0.186683595861816020,	0.186634474623935870,	0.186585352919469930,	0.186536230748540640,	
+0.186487108111270340,	0.186437985007782690,	0.186388861438200080,	0.186339737402645310,	0.186290612901240770,	0.186241487934110130,	0.186192362501375770,	0.186143236603160510,	
+0.186094110239586720,	0.186044983410778080,	0.185995856116856980,	0.185946728357946260,	0.185897600134168280,	0.185848471445646730,	0.185799342292504000,	0.185750212674862910,	
+0.185701082592845870,	0.185651952046576530,	0.185602821036177340,	0.185553689561770650,	0.185504557623480170,	0.185455425221428300,	0.185406292355737860,	0.185357159026531240,	
+0.185308025233932190,	0.185258890978063060,	0.185209756259046700,	0.185160621077005540,	0.185111485432063240,	0.185062349324342210,	0.185013212753965340,	0.184964075721054970,	
+0.184914938225734880,	0.184865800268127430,	0.184816661848355460,	0.184767522966541420,	0.184718383622809010,	0.184669243817280640,	0.184620103550079160,	0.184570962821326980,	
+0.184521821631147830,	0.184472679979664130,	0.184423537866998300,	0.184374395293274040,	0.184325252258613820,	0.184276108763140460,	0.184226964806976370,	0.184177820390245330,	
+0.184128675513069750,	0.184079530175572440,	0.184030384377875890,	0.183981238120103830,	0.183932091402378650,	0.183882944224823260,	0.183833796587560050,	0.183784648490712800,	
+0.183735499934403940,	0.183686350918756320,	0.183637201443892390,	0.183588051509935870,	0.183538901117009270,	0.183489750265234920,	0.183440598954736690,	0.183391447185636940,	
+0.183342294958058540,	0.183293142272124010,	0.183243989127957030,	0.183194835525680110,	0.183145681465416070,	0.183096526947287400,	0.183047371971417850,	0.182998216537929890,	
+0.182949060646946350,	0.182899904298589740,	0.182850747492983830,	0.182801590230251030,	0.182752432510514230,	0.182703274333895940,	0.182654115700519900,	0.182604956610508570,	
+0.182555797063984420,	0.182506637061071200,	0.182457476601891410,	0.182408315686567900,	0.182359154315223180,	0.182309992487980990,	0.182260830204963840,	0.182211667466294610,	
+0.182162504272095770,	0.182113340622491100,	0.182064176517603090,	0.182015011957554650,	0.181965846942468230,	0.181916681472467620,	0.181867515547675330,	0.181818349168214240,	
+0.181769182334206830,	0.181720015045776890,	0.181670847303046950,	0.181621679106139440,	0.181572510455178170,	0.181523341350285610,	0.181474171791584700,	0.181425001779197930,	
+0.181375831313249110,	0.181326660393860690,	0.181277489021155620,	0.181228317195256390,	0.181179144916286810,	0.181129972184369380,	0.181080798999627010,	0.181031625362182170,	
+0.180982451272158760,	0.180933276729679180,	0.180884101734866440,	0.180834926287842980,	0.180785750388732650,	0.180736574037657970,	0.180687397234741840,	0.180638219980106760,	
+0.180589042273876590,	0.180539864116173790,	0.180490685507120910,	0.180441506446841760,	0.180392326935458840,	0.180343146973095090,	0.180293966559873040,	0.180244785695916540,	
+0.180195604381348050,	0.180146422616290550,	0.180097240400866550,	0.180048057735199880,	0.179998874619413080,	0.179949691053629100,	0.179900507037970450,	0.179851322572560950,	
+0.179802137657523180,	0.179752952292980050,	0.179703766479054090,	0.179654580215869160,	0.179605393503547790,	0.179556206342212480,	0.179507018731987100,	0.179457830672994170,	
+0.179408642165356680,	0.179359453209197130,	0.179310263804639380,	0.179261073951805990,	0.179211883650819890,	0.179162692901803670,	0.179113501704881130,	0.179064310060174870,	
+0.179015117967807810,	0.178965925427902520,	0.178916732440582840,	0.178867539005971350,	0.178818345124191010,	0.178769150795364370,	0.178719956019615290,	0.178670760797066310,	
+0.178621565127840000,	0.178572369012060220,	0.178523172449849500,	0.178473975441330870,	0.178424777986626840,	0.178375580085861320,	0.178326381739156850,	0.178277182946636410,	
+0.178227983708422600,	0.178178784024639270,	0.178129583895408950,	0.178080383320854680,	0.178031182301099020,	0.177981980836265850,	0.177932778926477710,	0.177883576571857630,	
+0.177834373772528200,	0.177785170528613230,	0.177735966840235350,	0.177686762707517570,	0.177637558130582430,	0.177588353109553810,	0.177539147644554330,	0.177489941735706560,	
+0.177440735383134350,	0.177391528586960310,	0.177342321347307460,	0.177293113664298340,	0.177243905538056880,	0.177194696968705680,	0.177145487956367730,	0.177096278501165600,	
+0.177047068603223220,	0.176997858262663180,	0.176948647479608510,	0.176899436254181750,	0.176850224586506840,	0.176801012476706400,	0.176751799924903390,	0.176702586931220460,	
+0.176653373495781500,	0.176604159618709120,	0.176554945300125890,	0.176505730540155730,	0.176456515338921260,	0.176407299696545480,	0.176358083613151030,	0.176308867088861810,	
+0.176259650123800400,	0.176210432718089890,	0.176161214871852850,	0.176111996585213200,	0.176062777858293580,	0.176013558691217010,	0.175964339084106110,	0.175915119037084790,	
+0.175865898550275650,	0.175816677623801790,	0.175767456257785810,	0.175718234452351600,	0.175669012207621820,	0.175619789523719070,	0.175570566400767290,	0.175521342838889090,	
+0.175472118838207510,	0.175422894398845230,	0.175373669520926150,	0.175324444204572880,	0.175275218449908480,	0.175225992257055620,	0.175176765626138240,	0.175127538557278920,	
+0.175078311050600760,	0.175029083106226360,	0.174979854724279710,	0.174930625904883420,	0.174881396648160580,	0.174832166954233810,	0.174782936823227040,	0.174733706255262940,	
+0.174684475250464130,	0.174635243808954590,	0.174586011930856900,	0.174536779616294210,	0.174487546865389140,	0.174438313678265620,	0.174389080055046330,	0.174339845995854340,	
+0.174290611500812290,	0.174241376570044150,	0.174192141203672570,	0.174142905401820650,	0.174093669164611030,	0.174044432492167640,	0.173995195384613190,	0.173945957842070760,	
+0.173896719864662990,	0.173847481452513860,	0.173798242605746030,	0.173749003324482560,	0.173699763608846200,	0.173650523458960840,	0.173601282874949160,	0.173552041856933850,	
+0.173502800405038880,	0.173453558519386900,	0.173404316200101020,	0.173355073447303910,	0.173305830261119560,	0.173256586641670620,	0.173207342589080240,	0.173158098103471050,	
+0.173108853184967050,	0.173059607833690930,	0.173010362049765780,	0.172961115833314310,	0.172911869184460470,	0.172862622103326950,	0.172813374590036870,	0.172764126644712940,	
+0.172714878267479110,	0.172665629458458090,	0.172616380217772560,	0.172567130545546510,	0.172517880441902670,	0.172468629906964100,	0.172419378940853520,	0.172370127543694910,	
+0.172320875715611000,	0.172271623456724890,	0.172222370767159320,	0.172173117647038220,	0.172123864096484340,	0.172074610115620810,	0.172025355704570310,	0.171976100863456850,	
+0.171926845592403150,	0.171877589891532350,	0.171828333760967090,	0.171779077200831460,	0.171729820211248160,	0.171680562792339840,	0.171631304944230570,	0.171582046667043020,	
+0.171532787960900380,	0.171483528825925300,	0.171434269262241870,	0.171385009269972740,	0.171335748849241100,	0.171286488000169630,	0.171237226722882410,	0.171187965017502110,	
+0.171138702884151890,	0.171089440322954480,	0.171040177334033900,	0.170990913917512890,	0.170941650073514580,	0.170892385802161710,	0.170843121103578330,	0.170793855977887130,	
+0.170744590425211310,	0.170695324445673560,	0.170646058039397950,	0.170596791206507170,	0.170547523947124000,	0.170498256261372440,	0.170448988149375230,	0.170399719611255580,	
+0.170350450647136160,	0.170301181257141080,	0.170251911441393040,	0.170202641200015210,	0.170153370533130370,	0.170104099440862520,	0.170054827923334400,	0.170005555980669240,	
+0.169956283612989760,	0.169907010820419980,	0.169857737603082680,	0.169808463961101050,	0.169759189894597820,	0.169709915403697040,	0.169660640488521470,	0.169611365149193870,	
+0.169562089385838300,	0.169512813198577500,	0.169463536587534690,	0.169414259552832570,	0.169364982094595250,	0.169315704212945480,	0.169266425908006420,	0.169217147179900880,	
+0.169167868028752920,	0.169118588454685280,	0.169069308457821170,	0.169020028038283340,	0.168970747196195900,	0.168921465931681590,	0.168872184244863580,	0.168822902135864710,	
+0.168773619604809020,	0.168724336651819270,	0.168675053277018230,	0.168625769480530010,	0.168576485262477370,	0.168527200622983510,	0.168477915562171200,	0.168428630080164570,	
+0.168379344177086330,	0.168330057853059740,	0.168280771108207580,	0.168231483942653910,	0.168182196356521540,	0.168132908349933690,	0.168083619923013130,	0.168034331075883950,	
+0.167985041808668940,	0.167935752121491310,	0.167886462014473880,	0.167837171487740740,	0.167787880541414660,	0.167738589175618460,	0.167689297390476220,	0.167640005186110720,	
+0.167590712562645210,	0.167541419520202490,	0.167492126058906650,	0.167442832178880510,	0.167393537880247270,	0.167344243163129760,	0.167294948027652070,	0.167245652473937020,	
+0.167196356502107850,	0.167147060112287330,	0.167097763304599610,	0.167048466079167460,	0.166999168436114150,	0.166949870375562500,	0.166900571897636600,	0.166851273002459280,	
+0.166801973690153760,	0.166752673960842900,	0.166703373814650780,	0.166654073251700200,	0.166604772272114010,	0.166555470876016350,	0.166506169063530000,	0.166456866834778230,	
+0.166407564189883840,	0.166358261128970980,	0.166308957652162470,	0.166259653759581570,	0.166210349451351100,	0.166161044727595210,	0.166111739588436700,	0.166062434033998810,	
+0.166013128064404440,	0.165963821679777660,	0.165914514880241340,	0.165865207665918720,	0.165815900036932640,	0.165766591993407260,	0.165717283535465390,	0.165667974663229880,	
+0.165618665376824880,	0.165569355676373210,	0.165520045561998150,	0.165470735033822540,	0.165421424091970530,	0.165372112736564960,	0.165322800967729110,	0.165273488785585810,	
+0.165224176190259230,	0.165174863181872220,	0.165125549760548020,	0.165076235926409550,	0.165026921679580910,	0.164977607020184960,	0.164928291948344990,	0.164878976464183870,	
+0.164829660567825750,	0.164780344259393450,	0.164731027539009870,	0.164681710406799160,	0.164632392862884170,	0.164583074907388190,	0.164533756540434090,	0.164484437762146050,	
+0.164435118572646920,	0.164385798972059960,	0.164336478960508100,	0.164287158538115460,	0.164237837705004910,	0.164188516461299810,	0.164139194807122940,	0.164089872742598540,	
+0.164040550267849440,	0.163991227382998980,	0.163941904088170030,	0.163892580383486720,	0.163843256269072010,	0.163793931745049110,	0.163744606811540960,	0.163695281468671740,	
+0.163645955716564320,	0.163596629555341540,	0.163547302985127650,	0.163497976006045510,	0.163448648618218420,	0.163399320821769280,	0.163349992616822260,	0.163300664003500270,	
+0.163251334981926590,	0.163202005552224170,	0.163152675714517160,	0.163103345468928460,	0.163054014815581410,	0.163004683754598870,	0.162955352286105050,	0.162906020410222870,	
+0.162856688127075660,	0.162807355436786260,	0.162758022339478890,	0.162708688835276500,	0.162659354924301950,	0.162610020606679420,	0.162560685882531860,	0.162511350751982590,	
+0.162462015215154490,	0.162412679272171790,	0.162363342923157410,	0.162314006168234660,	0.162264669007526450,	0.162215331441157020,	0.162165993469249260,	0.162116655091926520,	
+0.162067316309311700,	0.162017977121529020,	0.161968637528701390,	0.161919297530952190,	0.161869957128404300,	0.161820616321181940,	0.161771275109408060,	0.161721933493205540,	
+0.161672591472698630,	0.161623249048010230,	0.161573906219263740,	0.161524562986582020,	0.161475219350089320,	0.161425875309908600,	0.161376530866163190,	0.161327186018976000,	
+0.161277840768471260,	0.161228495114771970,	0.161179149058001400,	0.161129802598282550,	0.161080455735739620,	0.161031108470495540,	0.160981760802673710,	0.160932412732397030,	
+0.160883064259789740,	0.160833715384974820,	0.160784366108075590,	0.160735016429215010,	0.160685666348517330,	0.160636315866105470,	0.160586964982102400,	0.160537613696632360,	
+0.160488262009818280,	0.160438909921783530,	0.160389557432651100,	0.160340204542545190,	0.160290851251588760,	0.160241497559905220,	0.160192143467617480,	0.160142788974849850,	
+0.160093434081725220,	0.160044078788367020,	0.159994723094898180,	0.159945367001442960,	0.159896010508124350,	0.159846653615065700,	0.159797296322389950,	0.159747938630221440,	
+0.159698580538683050,	0.159649222047897800,	0.159599863157989910,	0.159550503869082370,	0.159501144181298570,	0.159451784094761490,	0.159402423609595360,	0.159353062725923200,	
+0.159303701443868350,	0.159254339763553830,	0.159204977685103890,	0.159155615208641520,	0.159106252334290100,	0.159056889062172610,	0.159007525392413330,	0.158958161325135240,	
+0.158908796860461750,	0.158859431998515820,	0.158810066739421770,	0.158760701083302540,	0.158711335030281120,	0.158661968580481820,	0.158612601734027580,	0.158563234491041820,	
+0.158513866851647560,	0.158464498815969050,	0.158415130384129330,	0.158365761556251760,	0.158316392332459340,	0.158267022712876380,	0.158217652697625860,	0.158168282286831220,	
+0.158118911480615440,	0.158069540279102800,	0.158020168682416330,	0.157970796690679430,	0.157921424304015120,	0.157872051522547660,	0.157822678346400070,	0.157773304775695370,	
+0.157723930810557830,	0.157674556451110480,	0.157625181697476720,	0.157575806549779570,	0.157526431008143340,	0.157477055072691020,	0.157427678743546100,	0.157378302020831500,	
+0.157328924904671620,	0.157279547395189400,	0.157230169492508340,	0.157180791196751410,	0.157131412508042940,	0.157082033426505920,	0.157032653952263850,	0.156983274085439660,	
+0.156933893826157770,	0.156884513174541110,	0.156835132130713180,	0.156785750694797000,	0.156736368866916860,	0.156686986647195800,	0.156637604035756860,	0.156588221032724320,	
+0.156538837638221240,	0.156489453852371040,	0.156440069675296810,	0.156390685107122810,	0.156341300147972100,	0.156291914797968170,	0.156242529057233990,	0.156193142925893920,	
+0.156143756404070990,	0.156094369491888710,	0.156044982189470020,	0.155995594496939340,	0.155946206414419670,	0.155896817942034470,	0.155847429079906810,	0.155798039828160980,	
+0.155748650186920080,	0.155699260156307110,	0.155649869736446430,	0.155600478927461090,	0.155551087729474540,	0.155501696142609810,	0.155452304166991300,	0.155402911802742040,	
+0.155353519049985480,	0.155304125908844680,	0.155254732379444040,	0.155205338461906540,	0.155155944156355700,	0.155106549462914550,	0.155057154381707470,	0.155007758912857510,	
+0.154958363056488160,	0.154908966812722450,	0.154859570181684750,	0.154810173163498150,	0.154760775758285670,	0.154711377966171680,	0.154661979787279270,	0.154612581221731880,	
+0.154563182269652630,	0.154513782931165830,	0.154464383206394610,	0.154414983095462390,	0.154365582598492310,	0.154316181715608680,	0.154266780446934620,	0.154217378792593620,	
+0.154167976752708710,	0.154118574327404310,	0.154069171516803470,	0.154019768321029680,	0.153970364740206060,	0.153920960774456940,	0.153871556423905430,	0.153822151688675050,	
+0.153772746568888840,	0.153723341064671200,	0.153673935176145190,	0.153624528903433920,	0.153575122246661780,	0.153525715205951820,	0.153476307781427570,	0.153426899973212100,	
+0.153377491781429840,	0.153328083206203840,	0.153278674247657650,	0.153229264905914320,	0.153179855181098250,	0.153130445073332570,	0.153081034582740750,	0.153031623709445920,	
+0.152982212453572490,	0.152932800815243490,	0.152883388794582520,	0.152833976391712620,	0.152784563606758240,	0.152735150439842430,	0.152685736891088300,	0.152636322960620300,	
+0.152586908648561480,	0.152537493955035350,	0.152488078880165080,	0.152438663424075050,	0.152389247586888380,	0.152339831368728560,	0.152290414769718720,	0.152240997789983320,	
+0.152191580429645400,	0.152142162688828520,	0.152092744567655810,	0.152043326066251680,	0.151993907184739210,	0.151944487923242000,	0.151895068281883120,	0.151845648260787000,	
+0.151796227860076770,	0.151746807079875530,	0.151697385920307710,	0.151647964381496410,	0.151598542463565220,	0.151549120166637240,	0.151499697490836890,	0.151450274436287280,	
+0.151400851003112010,	0.151351427191434160,	0.151302003001378190,	0.151252578433067190,	0.151203153486624780,	0.151153728162174010,	0.151104302459839380,	0.151054876379743990,	
+0.151005449922011430,	0.150956023086764780,	0.150906595874128520,	0.150857168284225770,	0.150807740317179640,	0.150758311973114620,	0.150708883252153810,	0.150659454154420810,	
+0.150610024680038730,	0.150560594829132010,	0.150511164601823820,	0.150461733998237700,	0.150412303018496840,	0.150362871662725630,	0.150313439931047260,	0.150264007823585260,	
+0.150214575340462840,	0.150165142481804400,	0.150115709247733100,	0.150066275638372550,	0.150016841653845850,	0.149967407294277490,	0.149917972559790610,	0.149868537450508820,	
+0.149819101966555210,	0.149769666108054310,	0.149720229875129230,	0.149670793267903170,	0.149621356286500530,	0.149571918931044520,	0.149522481201658700,	0.149473043098466240,	
+0.149423604621591600,	0.149374165771157970,	0.149324726547288900,	0.149275286950107610,	0.149225846979738510,	0.149176406636304800,	0.149126965919930080,	0.149077524830737520,	
+0.149028083368851570,	0.148978641534395410,	0.148929199327492660,	0.148879756748266450,	0.148830313796841310,	0.148780870473340380,	0.148731426777886810,	0.148681982710605150,	
+0.148632538271618510,	0.148583093461050530,	0.148533648279024380,	0.148484202725664540,	0.148434756801094190,	0.148385310505436960,	0.148335863838816030,	0.148286416801355850,	
+0.148236969393179650,	0.148187521614411010,	0.148138073465173130,	0.148088624945590520,	0.148039176055786340,	0.147989726795884210,	0.147940277166007330,	0.147890827166280190,	
+0.147841376796825990,	0.147791926057767920,	0.147742474949230460,	0.147693023471336810,	0.147643571624210600,	0.147594119407975040,	0.147544666822754610,	0.147495213868672510,	
+0.147445760545852370,	0.147396306854417400,	0.147346852794492110,	0.147297398366199680,	0.147247943569663750,	0.147198488405007520,	0.147149032872355510,	0.147099576971830900,	
+0.147050120703557390,	0.147000664067658100,	0.146951207064257630,	0.146901749693479110,	0.146852291955446220,	0.146802833850282170,	0.146753375378111450,	0.146703916539057320,	
+0.146654457333242950,	0.146604997760792890,	0.146555537821830310,	0.146506077516478900,	0.146456616844861860,	0.146407155807103700,	0.146357694403327660,	0.146308232633657390,	
+0.146258770498216090,	0.146209307997128310,	0.146159845130517270,	0.146110381898506610,	0.146060918301219530,	0.146011454338780630,	0.145961990011313080,	0.145912525318940560,	
+0.145863060261786280,	0.145813594839974770,	0.145764129053629320,	0.145714662902873080,	0.145665196387830630,	0.145615729508625170,	0.145566262265380410,	0.145516794658219540,	
+0.145467326687267110,	0.145417858352646400,	0.145368389654481010,	0.145318920592894220,	0.145269451168010570,	0.145219981379953320,	0.145170511228846080,	0.145121040714812130,	
+0.145071569837976010,	0.145022098598460990,	0.144972626996390690,	0.144923155031888410,	0.144873682705078670,	0.144824210016084730,	0.144774736965029820,	0.144725263552038520,	
+0.144675789777234030,	0.144626315640740110,	0.144576841142679910,	0.144527366283178080,	0.144477891062357840,	0.144428415480342850,	0.144378939537256390,	0.144329463233223040,	
+0.144279986568365990,	0.144230509542809030,	0.144181032156675300,	0.144131554410089460,	0.144082076303174740,	0.144032597836054820,	0.143983119008852970,	0.143933639821693740,	
+0.143884160274700440,	0.143834680367996260,	0.143785200101705870,	0.143735719475952460,	0.143686238490859740,	0.143636757146551000,	0.143587275443150780,	0.143537793380782400,	
+0.143488310959569510,	0.143438828179635440,	0.143389345041104700,	0.143339861544100610,	0.143290377688746890,	0.143240893475166750,	0.143191408903484830,	0.143141923973824410,	
+0.143092438686309160,	0.143042953041062380,	0.142993467038208640,	0.142943980677871260,	0.142894493960173900,	0.142845006885239880,	0.142795519453193800,	0.142746031664158890,	
+0.142696543518258470,	0.142647055015617140,	0.142597566156358160,	0.142548076940605280,	0.142498587368481760,	0.142449097440112220,	0.142399607155619920,	0.142350116515128610,	
+0.142300625518761580,	0.142251134166643390,	0.142201642458897410,	0.142152150395647300,	0.142102657977016380,	0.142053165203129240,	0.142003672074109220,	0.141954178590080000,	
+0.141904684751164880,	0.141855190557488520,	0.141805696009174170,	0.141756201106345130,	0.141706705849126040,	0.141657210237640160,	0.141607714272011270,	0.141558217952362670,	
+0.141508721278818940,	0.141459224251503420,	0.141409726870539850,	0.141360229136051510,	0.141310731048163050,	0.141261232606997740,	0.141211733812679370,	0.141162234665331200,	
+0.141112735165077910,	0.141063235312042760,	0.141013735106349540,	0.140964234548121540,	0.140914733637483390,	0.140865232374558390,	0.140815730759469900,	0.140766228792342520,	
+0.140716726473299550,	0.140667223802464770,	0.140617720779961490,	0.140568217405914350,	0.140518713680446660,	0.140469209603682200,	0.140419705175744260,	0.140370200396757490,	
+0.140320695266845240,	0.140271189786131230,	0.140221683954738830,	0.140172177772792640,	0.140122671240416020,	0.140073164357732730,	0.140023657124866090,	0.139974149541940730,	
+0.139924641609080000,	0.139875133326407660,	0.139825624694047050,	0.139776115712122840,	0.139726606380758320,	0.139677096700076830,	0.139627586670203060,	0.139578076291260320,	
+0.139528565563372400,	0.139479054486662590,	0.139429543061255630,	0.139380031287274770,	0.139330519164843870,	0.139281006694086220,	0.139231493875126480,	0.139181980708088020,	
+0.139132467193094580,	0.139082953330269570,	0.139033439119737590,	0.138983924561622040,	0.138934409656046640,	0.138884894403134810,	0.138835378803011170,	0.138785862855799080,	
+0.138736346561621900,	0.138686829920604300,	0.138637312932869600,	0.138587795598541650,	0.138538277917743760,	0.138488759890600580,	0.138439241517235550,	0.138389722797772400,	
+0.138340203732334490,	0.138290684321046520,	0.138241164564031850,	0.138191644461414240,	0.138142124013317100,	0.138092603219865110,	0.138043082081181570,	0.137993560597390350,	
+0.137944038768614770,	0.137894516594979560,	0.137844994076608050,	0.137795471213623590,	0.137745948006150920,	0.137696424454313380,	0.137646900558234780,	0.137597376318038480,	
+0.137547851733849170,	0.137498326805790240,	0.137448801533985500,	0.137399275918558300,	0.137349749959633370,	0.137300223657334050,	0.137250697011784160,	0.137201170023107110,	
+0.137151642691427570,	0.137102115016868920,	0.137052586999554970,	0.137003058639609130,	0.136953529937156090,	0.136904000892319220,	0.136854471505221900,	0.136804941775988840,	
+0.136755411704743420,	0.136705881291609490,	0.136656350536710410,	0.136606819440170890,	0.136557288002114310,	0.136507756222664530,	0.136458224101944910,	0.136408691640080180,	
+0.136359158837193710,	0.136309625693409350,	0.136260092208850490,	0.136210558383641820,	0.136161024217906770,	0.136111489711769150,	0.136061954865352360,	0.136012419678781140,	
+0.135962884152178860,	0.135913348285669390,	0.135863812079376090,	0.135814275533423710,	0.135764738647935620,	0.135715201423035250,	0.135665663858847350,	0.135616125955495240,	
+0.135566587713102840,	0.135517049131793550,	0.135467510211692040,	0.135417970952921800,	0.135368431355606580,	0.135318891419869890,	0.135269351145836380,	0.135219810533629500,	
+0.135170269583373080,	0.135120728295190560,	0.135071186669206670,	0.135021644705544810,	0.134972102404328830,	0.134922559765682150,	0.134873016789729520,	0.134823473476594350,	
+0.134773929826400050,	0.134724385839271350,	0.134674841515331710,	0.134625296854704950,	0.134575751857514530,	0.134526206523885140,	0.134476660853940250,	0.134427114847803730,	
+0.134377568505598950,	0.134328021827450710,	0.134278474813482400,	0.134228927463817900,	0.134179379778580660,	0.134129831757895390,	0.134080283401885550,	0.134030734710675000,	
+0.133981185684387190,	0.133931636323146840,	0.133882086627077400,	0.133832536596302320,	0.133782986230946310,	0.133733435531132840,	0.133683884496985790,	0.133634333128628600,	
+0.133584781426185990,	0.133535229389781460,	0.133485677019538840,	0.133436124315581580,	0.133386571278034440,	0.133337017907020900,	0.133287464202664800,	0.133237910165089600,	
+0.133188355794420070,	0.133138801090779630,	0.133089246054292200,	0.133039690685081230,	0.132990134983271470,	0.132940578948986370,	0.132891022582349800,	0.132841465883485250,	
+0.132791908852517490,	0.132742351489569950,	0.132692793794766090,	0.132643235768230670,	0.132593677410087180,	0.132544118720459490,	0.132494559699471050,	0.132445000347246660,	
+0.132395440663909790,	0.132345880649584300,	0.132296320304393670,	0.132246759628462660,	0.132197198621914790,	0.132147637284873890,	0.132098075617463480,	0.132048513619808290,	
+0.131998951292031850,	0.131949388634258010,	0.131899825646610260,	0.131850262329213400,	0.131800698682190880,	0.131751134705666180,	0.131701570399764070,	0.131652005764608030,	
+0.131602440800321990,	0.131552875507029400,	0.131503309884855060,	0.131453743933922450,	0.131404177654355470,	0.131354611046277630,	0.131305044109813700,	0.131255476845087120,	
+0.131205909252221890,	0.131156341331341440,	0.131106773082570540,	0.131057204506032750,	0.131007635601851940,	0.130958066370151590,	0.130908496811056510,	0.130858926924690200,	
+0.130809356711176130,	0.130759786170639130,	0.130710215303202620,	0.130660644108990610,	0.130611072588126540,	0.130561500740735220,	0.130511928566940160,	0.130462356066865260,	
+0.130412783240634040,	0.130363210088371290,	0.130313636610200540,	0.130264062806245700,	0.130214488676630240,	0.130164914221478990,	0.130115339440915500,	0.130065764335063620,	
+0.130016188904046900,	0.129966613147990160,	0.129917037067016880,	0.129867460661250540,	0.129817883930816030,	0.129768306875836790,	0.129718729496436790,	0.129669151792739520,	
+0.129619573764869820,	0.129569995412951170,	0.129520416737107540,	0.129470837737462430,	0.129421258414140680,	0.129371678767265770,	0.129322098796961660,	0.129272518503351860,	
+0.129222937886561200,	0.129173356946713200,	0.129123775683931820,	0.129074194098340560,	0.129024612190064230,	0.128975029959226380,	0.128925447405950970,	0.128875864530361510,	
+0.128826281332582810,	0.128776697812738400,	0.128727113970951820,	0.128677529807347900,	0.128627945322050130,	0.128578360515182510,	0.128528775386868550,	0.128479189937233090,	
+0.128429604166399670,	0.128380018074492230,	0.128330431661634300,	0.128280844927950720,	0.128231257873565040,	0.128181670498601210,	0.128132082803182780,	0.128082494787434580,	
+0.128032906451480130,	0.127983317795443420,	0.127933728819447980,	0.127884139523618660,	0.127834549908078960,	0.127784959972952500,	0.127735369718364050,	0.127685779144437160,	
+0.127636188251295830,	0.127586597039063610,	0.127537005507865310,	0.127487413657824540,	0.127437821489065180,	0.127388229001710870,	0.127338636195886420,	0.127289043071715370,	
+0.127239449629321710,	0.127189855868828970,	0.127140261790362060,	0.127090667394044480,	0.127041072680000260,	0.126991477648352890,	0.126941882299227260,	0.126892286632746930,	
+0.126842690649035440,	0.126793094348217700,	0.126743497730417180,	0.126693900795757930,	0.126644303544363510,	0.126594705976358750,	0.126545108091867230,	0.126495509891012940,	
+0.126445911373919420,	0.126396312540711570,	0.126346713391512930,	0.126297113926447550,	0.126247514145638890,	0.126197914049211910,	0.126148313637290150,	0.126098712909997610,	
+0.126049111867457820,	0.125999510509795710,	0.125949908837134830,	0.125900306849599160,	0.125850704547312290,	0.125801101930399120,	0.125751498998983160,	0.125701895753188050,	
+0.125652292193138610,	0.125602688318958460,	0.125553084130771570,	0.125503479628701540,	0.125453874812873230,	0.125404269683410260,	0.125354664240436620,	0.125305058484075860,	
+0.125255452414452910,	0.125205846031691330,	0.125156239335915100,	0.125106632327247860,	0.125057025005814480,	0.125007417371738540,	0.124957809425144050,	0.124908201166154600,	
+0.124858592594895080,	0.124808983711489090,	0.124759374516060190,	0.124709765008733290,	0.124660155189632000,	0.124610545058880310,	0.124560934616601810,	0.124511323862921410,	
+0.124461712797962710,	0.124412101421849730,	0.124362489734706050,	0.124312877736656590,	0.124263265427824940,	0.124213652808335110,	0.124164039878310720,	0.124114426637876680,	
+0.124064813087156560,	0.124015199226274410,	0.123965585055353820,	0.123915970574519710,	0.123866355783895680,	0.123816740683605310,	0.123767125273773540,	0.123717509554523940,	
+0.123667893525980580,	0.123618277188267040,	0.123568660541508250,	0.123519043585827810,	0.123469426321349760,	0.123419808748197690,	0.123370190866496560,	0.123320572676369940,	
+0.123270954177941900,	0.123221335371336020,	0.123171716256677250,	0.123122096834089190,	0.123072477103695880,	0.123022857065620950,	0.122973236719989300,	0.122923616066924580,	
+0.122873995106550370,	0.122824373838991610,	0.122774752264371910,	0.122725130382815340,	0.122675508194445500,	0.122625885699387330,	0.122576262897764450,	0.122526639789700910,	
+0.122477016375320320,	0.122427392654747640,	0.122377768628106480,	0.122328144295520900,	0.122278519657114500,	0.122228894713012260,	0.122179269463337780,	0.122129643908215120,	
+0.122080018047767930,	0.122030391882121110,	0.121980765411398320,	0.121931138635723620,	0.121881511555220630,	0.121831884170014300,	0.121782256480228270,	0.121732628485986150,	
+0.121683000187412890,	0.121633371584632140,	0.121583742677767960,	0.121534113466943980,	0.121484483952285160,	0.121434854133915140,	0.121385224011957960,	0.121335593586537300,	
+0.121285962857778100,	0.121236331825803980,	0.121186700490739030,	0.121137068852706890,	0.121087436911832520,	0.121037804668239560,	0.120988172122052100,	0.120938539273393750,	
+0.120888906122389490,	0.120839272669162970,	0.120789638913837840,	0.120740004856539050,	0.120690370497390230,	0.120640735836515510,	0.120591100874038490,	0.120541465610084160,	
+0.120491830044776180,	0.120442194178238610,	0.120392558010595120,	0.120342921541970680,	0.120293284772488930,	0.120243647702273970,	0.120194010331449460,	0.120144372660140340,	
+0.120094734688470300,	0.120045096416563440,	0.119995457844543380,	0.119945818972535120,	0.119896179800662320,	0.119846540329048620,	0.119796900557819010,	0.119747260487097150,	
+0.119697620117007140,	0.119647979447672640,	0.119598338479218640,	0.119548697211768780,	0.119499055645447190,	0.119449413780377500,	0.119399771616684730,	0.119350129154492540,	
+0.119300486393925010,	0.119250843335105840,	0.119201199978159990,	0.119151556323211140,	0.119101912370383410,	0.119052268119800450,	0.119002623571587270,	0.118952978725867520,	
+0.118903333582765320,	0.118853688142404350,	0.118804042404909600,	0.118754396370404750,	0.118704750039013470,	0.118655103410860750,	0.118605456486070270,	0.118555809264766150,	
+0.118506161747072070,	0.118456513933113020,	0.118406865823012690,	0.118357217416895190,	0.118307568714884210,	0.118257919717104750,	0.118208270423680480,	0.118158620834735550,	
+0.118108970950393620,	0.118059320770779710,	0.118009670296017490,	0.117960019526231100,	0.117910368461544220,	0.117860717102081850,	0.117811065447967700,	0.117761413499325440,	
+0.117711761256280080,	0.117662108718955330,	0.117612455887475290,	0.117562802761963690,	0.117513149342545520,	0.117463495629344470,	0.117413841622484680,	0.117364187322089850,	
+0.117314532728284990,	0.117264877841193800,	0.117215222660940420,	0.117165567187648530,	0.117115911421443180,	0.117066255362448040,	0.117016599010787260,	0.116966942366584540,	
+0.116917285429964910,	0.116867628201052070,	0.116817970679969710,	0.116768312866842870,	0.116718654761795260,	0.116668996364951000,	0.116619337676433800,	0.116569678696368710,	
+0.116520019424879410,	0.116470359862090080,	0.116420700008124390,	0.116371039863107400,	0.116321379427162820,	0.116271718700414780,	0.116222057682987000,	0.116172396375004520,	
+0.116122734776591060,	0.116073072887870750,	0.116023410708967320,	0.115973748240005810,	0.115924085481109930,	0.115874422432403380,	0.115824759094011230,	0.115775095466057170,	
+0.115725431548665380,	0.115675767341959570,	0.115626102846064780,	0.115576438061104740,	0.115526772987203600,	0.115477107624485080,	0.115427441973074240,	0.115377776033094790,	
+0.115328109804670910,	0.115278443287926300,	0.115228776482986050,	0.115179109389973830,	0.115129442009013840,	0.115079774340229810,	0.115030106383746790,	0.114980438139688500,	
+0.114930769608179120,	0.114881100789342370,	0.114831431683303300,	0.114781762290185660,	0.114732092610113180,	0.114682422643210890,	0.114632752389602560,	0.114583081849412350,	
+0.114533411022763990,	0.114483739909782540,	0.114434068510591740,	0.114384396825315770,	0.114334724854078380,	0.114285052597004600,	0.114235380054218200,	0.114185707225843340,	
+0.114136034112003780,	0.114086360712824570,	0.114036687028429460,	0.113987013058942630,	0.113937338804487840,	0.113887664265190130,	0.113837989441173270,	0.113788314332560980,	
+0.113738638939478360,	0.113688963262049140,	0.113639287300397500,	0.113589611054647210,	0.113539934524923340,	0.113490257711349620,	0.113440580614050250,	0.113390903233149020,	
+0.113341225568770940,	0.113291547621039810,	0.113241869390079810,	0.113192190876014700,	0.113142512078969550,	0.113092832999068110,	0.113043153636434610,	0.112993473991192760,	
+0.112943794063467690,	0.112894113853383120,	0.112844433361062830,	0.112794752586631890,	0.112745071530214070,	0.112695390191933570,	0.112645708571914170,	0.112596026670280930,	
+0.112546344487157610,	0.112496662022668450,	0.112446979276937180,	0.112397296250088900,	0.112347612942247390,	0.112297929353536840,	0.112248245484081040,	0.112198561334005050,	
+0.112148876903432670,	0.112099192192488100,	0.112049507201295080,	0.111999821929978760,	0.111950136378662880,	0.111900450547471660,	0.111850764436528870,	0.111801078045959610,	
+0.111751391375887660,	0.111701704426436790,	0.111652017197732090,	0.111602329689897350,	0.111552641903056790,	0.111502953837334190,	0.111453265492854630,	0.111403576869741920,	
+0.111353887968120260,	0.111304198788113440,	0.111254509329846570,	0.111204819593443430,	0.111155129579028230,	0.111105439286724770,	0.111055748716658160,	0.111006057868952170,	
+0.110956366743731040,	0.110906675341118550,	0.110856983661239810,	0.110807291704218600,	0.110757599470178740,	0.110707906959245320,	0.110658214171542120,	0.110608521107193390,	
+0.110558827766322920,	0.110509134149055820,	0.110459440255515880,	0.110409746085827350,	0.110360051640114000,	0.110310356918500970,	0.110260661921112040,	0.110210966648071480,	
+0.110161271099503040,	0.110111575275531860,	0.110061879176281750,	0.110012182801876950,	0.109962486152441240,	0.109912789228099760,	0.109863092028976300,	0.109813394555194690,	
+0.109763696806880020,	0.109713998784156110,	0.109664300487147200,	0.109614601915977090,	0.109564903070770940,	0.109515203951652510,	0.109465504558746080,	0.109415804892175450,	
+0.109366104952065740,	0.109316404738540780,	0.109266704251724800,	0.109217003491741610,	0.109167302458716360,	0.109117601152772860,	0.109067899574035360,	0.109018197722627650,	
+0.108968495598674900,	0.108918793202300910,	0.108869090533629500,	0.108819387592785810,	0.108769684379893640,	0.108719980895077260,	0.108670277138460490,	0.108620573110168470,	
+0.108570868810325000,	0.108521164239054380,	0.108471459396480400,	0.108421754282728210,	0.108372048897921640,	0.108322343242184940,	0.108272637315641950,	0.108222931118417810,	
+0.108173224650636330,	0.108123517912421790,	0.108073810903898020,	0.108024103625190170,	0.107974396076422050,	0.107924688257717950,	0.107874980169201680,	0.107825271810998390,	
+0.107775563183231950,	0.107725854286026130,	0.107676145119506140,	0.107626435683795780,	0.107576725979019320,	0.107527016005300610,	0.107477305762764800,	0.107427595251535740,	
+0.107377884471737670,	0.107328173423494460,	0.107278462106931260,	0.107228750522171900,	0.107179038669340660,	0.107129326548561390,	0.107079614159959240,	0.107029901503658060,	
+0.106980188579782120,	0.106930475388455270,	0.106880761929802670,	0.106831048203948160,	0.106781334211015600,	0.106731619951130150,	0.106681905424415640,	0.106632190630996370,	
+0.106582475570996180,	0.106532760244540240,	0.106483044651752400,	0.106433328792756950,	0.106383612667677730,	0.106333896276639940,	0.106284179619767400,	0.106234462697184410,	
+0.106184745509014810,	0.106135028055383800,	0.106085310336415220,	0.106035592352233370,	0.105985874102962080,	0.105936155588726560,	0.105886436809650640,	0.105836717765858190,	
+0.105786998457474400,	0.105737278884623100,	0.105687559047428600,	0.105637838946014780,	0.105588118580506790,	0.105538397951028500,	0.105488677057704220,	0.105438955900657810,	
+0.105389234480014440,	0.105339512795898000,	0.105289790848432780,	0.105240068637742630,	0.105190346163952740,	0.105140623427187000,	0.105090900427569700,	0.105041177165224710,	
+0.104991453640277200,	0.104941729852851080,	0.104892005803070620,	0.104842281491059720,	0.104792556916943540,	0.104742832080845980,	0.104693106982890890,	0.104643381623203480,	
+0.104593656001907610,	0.104543930119127600,	0.104494203974987330,	0.104444477569611990,	0.104394750903125460,	0.104345023975652040,	0.104295296787315630,	0.104245569338241420,	
+0.104195841628553280,	0.104146113658375530,	0.104096385427832070,	0.104046656937048080,	0.103996928186147450,	0.103947199175254500,	0.103897469904493110,	0.103847740373988490,	
+0.103798010583864510,	0.103748280534245060,	0.103698550225255360,	0.103648819657019280,	0.103599088829661150,	0.103549357743304860,	0.103499626398075630,	0.103449894794097300,	
+0.103400162931494260,	0.103350430810390370,	0.103300698430910830,	0.103250965793179560,	0.103201232897320860,	0.103151499743458650,	0.103101766331718120,	0.103052032662223190,	
+0.103002298735098170,	0.102952564550466960,	0.102902830108454790,	0.102853095409185520,	0.102803360452783100,	0.102753625239372700,	0.102703889769078250,	0.102654154042024060,	
+0.102604418058334060,	0.102554681818133440,	0.102504945321546140,	0.102455208568696460,	0.102405471559708310,	0.102355734294706930,	0.102305996773816220,	0.102256258997160510,	
+0.102206520964863710,	0.102156782677051060,	0.102107044133846440,	0.102057305335374230,	0.102007566281758290,	0.101957826973123890,	0.101908087409594920,	0.101858347591295740,	
+0.101808607518350230,	0.101758867190883660,	0.101709126609019910,	0.101659385772882920,	0.101609644682597890,	0.101559903338288770,	0.101510161740079860,	0.101460419888095120,	
+0.101410677782459780,	0.101360935423297730,	0.101311192810733350,	0.101261449944890540,	0.101211706825894560,	0.101161963453869310,	0.101112219828939140,	0.101062475951227980,	
+0.101012731820861080,	0.100962987437962350,	0.100913242802656150,	0.100863497915066410,	0.100813752775318340,	0.100764007383535910,	0.100714261739843020,	0.100664515844364910,	
+0.100614769697225520,	0.100565023298549190,	0.100515276648459870,	0.100465529747082810,	0.100415782594541910,	0.100366035190961560,	0.100316287536465680,	0.100266539631179510,	
+0.100216791475227010,	0.100167043068732530,	0.100117294411819990,	0.100067545504614660,	0.100017796347240460,	0.099968046939821781,	0.099918297282482541,	0.099868547375348005,	
+0.099818797218542088,	0.099769046812188733,	0.099719296156413215,	0.099669545251339448,	0.099619794097091832,	0.099570042693794270,	0.099520291041572048,	0.099470539140549111,	
+0.099420786990849816,	0.099371034592598120,	0.099321281945919271,	0.099271529050937210,	0.099221775907776338,	0.099172022516560585,	0.099122268877415209,	0.099072514990464169,	
+0.099022760855831837,	0.098973006473642169,	0.098923251844020413,	0.098873496967090538,	0.098823741842976473,	0.098773986471803507,	0.098724230853695569,	0.098674474988777044,	
+0.098624718877171905,	0.098574962519005396,	0.098525205914401490,	0.098475449063484558,	0.098425691966378570,	0.098375934623208802,	0.098326177034099183,	0.098276419199174125,	
+0.098226661118557587,	0.098176902792374829,	0.098127144220749821,	0.098077385403806949,	0.098027626341670171,	0.097977867034464761,	0.097928107482314689,	0.097878347685344355,	
+0.097828587643677703,	0.097778827357440035,	0.097729066826755279,	0.097679306051747433,	0.097629545032541759,	0.097579783769262213,	0.097530022262033209,	0.097480260510978717,	
+0.097430498516224012,	0.097380736277893065,	0.097330973796110262,	0.097281211070999601,	0.097231448102686344,	0.097181684891294473,	0.097131921436948376,	0.097082157739772051,	
+0.097032393799890759,	0.096982629617428498,	0.096932865192509654,	0.096883100525258198,	0.096833335615799446,	0.096783570464257340,	0.096733805070755879,	0.096684039435420352,	
+0.096634273558374714,	0.096584507439743394,	0.096534741079650363,	0.096484974478220922,	0.096435207635579057,	0.096385440551849152,	0.096335673227155222,	0.096285905661622539,	
+0.096236137855375103,	0.096186369808537314,	0.096136601521233156,	0.096086832993587945,	0.096037064225725638,	0.095987295217770691,	0.095937525969847046,	0.095887756482080033,	
+0.095837986754593638,	0.095788216787511829,	0.095738446580959910,	0.095688676135061879,	0.095638905449942163,	0.095589134525724748,	0.095539363362534921,	0.095489591960496695,	
+0.095439820319734497,	0.095390048440372299,	0.095340276322535417,	0.095290503966347848,	0.095240731371934020,	0.095190958539417919,	0.095141185468924860,	0.095091412160578856,	
+0.095041638614504306,	0.094991864830825223,	0.094942090809666910,	0.094892316551153377,	0.094842542055409054,	0.094792767322557939,	0.094742992352725333,	0.094693217146035263,	
+0.094643441702611700,	0.094593666022579972,	0.094543890106064080,	0.094494113953188463,	0.094444337564077122,	0.094394560938855385,	0.094344784077647237,	0.094295006980577134,	
+0.094245229647769060,	0.094195452079348360,	0.094145674275439031,	0.094095896236165516,	0.094046117961651826,	0.093996339452023278,	0.093946560707403884,	0.093896781727918086,	
+0.093847002513689881,	0.093797223064844629,	0.093747443381506312,	0.093697663463798944,	0.093647883311847854,	0.093598102925777069,	0.093548322305711015,	0.093498541451773720,	
+0.093448760364090500,	0.093398979042785393,	0.093349197487982843,	0.093299415699806848,	0.093249633678382751,	0.093199851423834579,	0.093150068936286773,	0.093100286215863359,	
+0.093050503262689668,	0.093000720076889712,	0.092950936658587974,	0.092901153007908438,	0.092851369124976463,	0.092801585009916060,	0.092751800662851269,	0.092702016083907407,	
+0.092652231273208499,	0.092602446230879029,	0.092552660957042995,	0.092502875451825742,	0.092453089715351308,	0.092403303747744150,	0.092353517549128294,	0.092303731119629071,	
+0.092253944459370532,	0.092204157568477135,	0.092154370447072892,	0.092104583095283174,	0.092054795513231993,	0.092005007701043834,	0.091955219658842707,	0.091905431386753972,	
+0.091855642884901653,	0.091805854153409791,	0.091756065192403730,	0.091706276002007509,	0.091656486582345598,	0.091606696933542037,	0.091556907055722170,	0.091507116949010023,	
+0.091457326613530107,	0.091407536049406421,	0.091357745256764336,	0.091307954235727878,	0.091258162986421545,	0.091208371508969363,	0.091158579803496689,	0.091108787870127578,	
+0.091058995708986484,	0.091009203320197463,	0.090959410703885885,	0.090909617860175762,	0.090859824789191607,	0.090810031491057444,	0.090760237965898646,	0.090710444213839253,	
+0.090660650235003318,	0.090610856029516185,	0.090561061597501921,	0.090511266939084997,	0.090461472054389466,	0.090411676943540686,	0.090361881606662725,	0.090312086043880066,	
+0.090262290255316735,	0.090212494241098132,	0.090162698001348282,	0.090112901536191697,	0.090063104845752417,	0.090013307930155814,	0.089963510789525941,	0.089913713423987282,	
+0.089863915833663918,	0.089814118018681194,	0.089764319979163176,	0.089714521715233905,	0.089664723227018781,	0.089614924514641855,	0.089565125578227614,	0.089515326417900110,	
+0.089465527033784742,	0.089415727426005551,	0.089365927594687047,	0.089316127539953286,	0.089266327261929637,	0.089216526760740170,	0.089166726036509394,	0.089116925089361351,	
+0.089067123919421440,	0.089017322526813727,	0.088967520911662698,	0.088917719074092433,	0.088867917014228304,	0.088818114732194392,	0.088768312228114751,	0.088718509502114767,	
+0.088668706554318508,	0.088618903384850484,	0.088569099993834763,	0.088519296381396731,	0.088469492547660455,	0.088419688492750448,	0.088369884216790776,	0.088320079719906838,	
+0.088270275002222703,	0.088220470063862882,	0.088170664904951443,	0.088120859525613784,	0.088071053925973974,	0.088021248106156524,	0.087971442066285530,	0.087921635806486362,	
+0.087871829326883102,	0.087822022627600263,	0.087772215708761939,	0.087722408570493501,	0.087672601212919060,	0.087622793636162669,	0.087572985840349726,	0.087523177825604329,	
+0.087473369592050987,	0.087423561139813769,	0.087373752469018101,	0.087323943579788052,	0.087274134472248133,	0.087224325146522438,	0.087174515602736383,	0.087124705841014033,	
+0.087074895861479915,	0.087025085664258123,	0.086975275249474057,	0.086925464617251799,	0.086875653767715888,	0.086825842700990391,	0.086776031417200722,	0.086726219916470990,	
+0.086676408198925262,	0.086626596264688951,	0.086576784113886154,	0.086526971746641396,	0.086477159163078771,	0.086427346363323679,	0.086377533347500229,	0.086327720115732948,	
+0.086277906668145915,	0.086228093004864573,	0.086178279126012988,	0.086128465031715701,	0.086078650722096819,	0.086028836197281744,	0.085979021457394583,	0.085929206502559863,	
+0.085879391332901692,	0.085829575948545483,	0.085779760349615333,	0.085729944536235350,	0.085680128508530934,	0.085630312266626193,	0.085580495810645682,	0.085530679140713495,	
+0.085480862256955045,	0.085431045159494429,	0.085381227848456212,	0.085331410323964491,	0.085281592586144664,	0.085231774635120869,	0.085181956471017645,	0.085132138093959073,	
+0.085082319504070608,	0.085032500701476346,	0.084982681686300826,	0.084932862458668157,	0.084883043018703780,	0.084833223366531790,	0.084783403502276297,	0.084733583426062742,	
+0.084683763138015233,	0.084633942638258311,	0.084584121926916098,	0.084534301004114007,	0.084484479869976176,	0.084434658524627143,	0.084384836968191018,	0.084335015200793256,	
+0.084285193222557939,	0.084235371033609646,	0.084185548634072488,	0.084135726024071891,	0.084085903203731979,	0.084036080173177319,	0.083986256932532005,	0.083936433481921507,	
+0.083886609821469907,	0.083836785951301798,	0.083786961871541277,	0.083737137582313784,	0.083687313083743456,	0.083637488375954402,	0.083587663459072065,	0.083537838333220579,	
+0.083488012998524486,	0.083438187455107921,	0.083388361703096339,	0.083338535742613851,	0.083288709573785008,	0.083238883196733962,	0.083189056611586154,	0.083139229818465693,	
+0.083089402817497160,	0.083039575608804692,	0.082989748192513715,	0.082939920568748368,	0.082890092737633217,	0.082840264699292399,	0.082790436453851354,	0.082740608001434221,	
+0.082690779342165122,	0.082640950476169525,	0.082591121403571541,	0.082541292124495763,	0.082491462639066315,	0.082441632947408652,	0.082391803049646897,	0.082341972945905645,	
+0.082292142636309004,	0.082242312120982458,	0.082192481400050130,	0.082142650473636614,	0.082092819341866005,	0.082042988004863801,	0.081993156462754124,	0.081943324715661570,	
+0.081893492763710246,	0.081843660607025637,	0.081793828245731878,	0.081743995679953108,	0.081694162909814780,	0.081644329935441060,	0.081594496756956500,	0.081544663374485266,	
+0.081494829788152812,	0.081444995998083289,	0.081395162004401278,	0.081345327807230916,	0.081295493406697672,	0.081245658802925697,	0.081195823996039571,	0.081145988986163445,	
+0.081096153773422788,	0.081046318357941752,	0.080996482739844916,	0.080946646919256432,	0.080896810896301782,	0.080846974671105090,	0.080797138243790978,	0.080747301614483569,	
+0.080697464783308345,	0.080647627750389458,	0.080597790515851059,	0.080547953079818629,	0.080498115442416321,	0.080448277603768728,	0.080398439563999988,	0.080348601323235597,	
+0.080298762881599692,	0.080248924239216896,	0.080199085396211331,	0.080149246352708509,	0.080099407108832565,	0.080049567664708110,	0.079999728020459279,	0.079949888176211584,	
+0.079900048132089160,	0.079850207888216618,	0.079800367444718120,	0.079750526801719138,	0.079700685959343848,	0.079650844917716387,	0.079601003676962268,	0.079551162237205639,	
+0.079501320598571096,	0.079451478761182817,	0.079401636725166272,	0.079351794490645652,	0.079301952057745539,	0.079252109426590098,	0.079202266597304824,	0.079152423570013897,	
+0.079102580344841897,	0.079052736921913017,	0.079002893301352725,	0.078953049483285215,	0.078903205467835066,	0.078853361255126472,	0.078803516845284902,	0.078753672238434561,	
+0.078703827434699586,	0.078653982434205474,	0.078604137237076419,	0.078554291843437027,	0.078504446253411450,	0.078454600467125199,	0.078404754484702452,	0.078354908306267831,	
+0.078305061931945474,	0.078255215361860919,	0.078205368596138330,	0.078155521634902303,	0.078105674478277043,	0.078055827126388033,	0.078005979579359452,	0.077956131837315937,	
+0.077906283900381637,	0.077856435768682078,	0.077806587442341424,	0.077756738921483853,	0.077706890206234891,	0.077657041296718687,	0.077607192193059893,	0.077557342895382672,	
+0.077507493403812536,	0.077457643718473662,	0.077407793839490688,	0.077357943766987777,	0.077308093501090455,	0.077258243041922900,	0.077208392389609748,	0.077158541544275150,	
+0.077108690506044658,	0.077058839275042437,	0.077008987851393110,	0.076959136235220882,	0.076909284426651237,	0.076859432425808394,	0.076809580232816976,	0.076759727847801162,	
+0.076709875270886463,	0.076660022502197084,	0.076610169541857190,	0.076560316389992333,	0.076510463046726679,	0.076460609512184863,	0.076410755786491091,	0.076360901869770861,	
+0.076311047762148379,	0.076261193463748281,	0.076211338974694759,	0.076161484295113338,	0.076111629425128197,	0.076061774364863971,	0.076011919114444881,	0.075962063673996438,	
+0.075912208043642834,	0.075862352223508706,	0.075812496213718258,	0.075762640014397004,	0.075712783625669161,	0.075662927047658909,	0.075613070280491787,	0.075563213324291986,	
+0.075513356179184157,	0.075463498845292479,	0.075413641322742517,	0.075363783611658436,	0.075313925712164900,	0.075264067624386116,	0.075214209348447594,	0.075164350884473555,	
+0.075114492232588648,	0.075064633392917052,	0.075014774365584319,	0.074964915150714656,	0.074915055748432699,	0.074865196158862668,	0.074815336382130074,	0.074765476418359150,	
+0.074715616267674090,	0.074665755930200445,	0.074615895406062394,	0.074566034695384600,	0.074516173798291299,	0.074466312714907987,	0.074416451445358897,	0.074366589989768681,	
+0.074316728348261543,	0.074266866520963037,	0.074217004507997356,	0.074167142309489162,	0.074117279925562676,	0.074067417356343437,	0.074017554601955651,	0.073967691662523968,	
+0.073917828538172622,	0.073867965229027152,	0.073818101735211764,	0.073768238056851121,	0.073718374194069430,	0.073668510146992258,	0.073618645915743811,	0.073568781500448308,	
+0.073518916901231288,	0.073469052118216985,	0.073419187151530035,	0.073369322001294687,	0.073319456667636479,	0.073269591150679617,	0.073219725450548792,	0.073169859567368198,	
+0.073119993501263414,	0.073070127252358633,	0.073020260820778532,	0.072970394206647346,	0.072920527410090613,	0.072870660431232553,	0.072820793270197859,	0.072770925927110722,	
+0.072721058402096722,	0.072671190695280080,	0.072621322806785016,	0.072571454736737082,	0.072521586485260511,	0.072471718052479983,	0.072421849438519703,	0.072371980643505252,	
+0.072322111667560848,	0.072272242510811172,	0.072222373173380428,	0.072172503655394210,	0.072122633956976726,	0.072072764078252666,	0.072022894019346237,	0.071973023780383033,	
+0.071923153361487260,	0.071873282762783611,	0.071823411984396304,	0.071773541026450907,	0.071723669889071667,	0.071673798572382805,	0.071623927076509900,	0.071574055401577158,	
+0.071524183547709286,	0.071474311515030517,	0.071424439303666404,	0.071374566913741208,	0.071324694345379580,	0.071274821598705781,	0.071224948673845365,	0.071175075570922577,	
+0.071125202290062098,	0.071075328831388188,	0.071025455195026385,	0.070975581381100938,	0.070925707389736553,	0.070875833221057435,	0.070825958875189193,	0.070776084352256061,	
+0.070726209652382258,	0.070676334775693378,	0.070626459722313670,	0.070576584492367811,	0.070526709085980036,	0.070476833503275937,	0.070426957744379765,	0.070377081809416195,	
+0.070327205698509462,	0.070277329411785175,	0.070227452949367553,	0.070177576311381301,	0.070127699497950668,	0.070077822509201235,	0.070027945345257234,	0.069978068006243385,	
+0.069928190492283909,	0.069878312803504400,	0.069828434940029119,	0.069778556901982744,	0.069728678689489537,	0.069678800302675079,	0.069628921741663616,	0.069579043006579397,	
+0.069529164097548030,	0.069479285014693734,	0.069429405758141244,	0.069379526328014779,	0.069329646724439961,	0.069279766947541011,	0.069229886997442647,	0.069180006874269132,	
+0.069130126578146031,	0.069080246109197621,	0.069030365467548593,	0.068980484653323210,	0.068930603666647050,	0.068880722507644390,	0.068830841176439922,	0.068780959673157907,	
+0.068731077997923939,	0.068681196150862267,	0.068631314132097165,	0.068581431941754228,	0.068531549579957704,	0.068481667046832312,	0.068431784342502300,	0.068381901467093276,	
+0.068332018420729501,	0.068282135203535682,	0.068232251815636080,	0.068182368257156289,	0.068132484528220572,	0.068082600628953646,	0.068032716559479775,	0.067982832319924566,	
+0.067932947910412267,	0.067883063331067597,	0.067833178582014833,	0.067783293663379568,	0.067733408575286064,	0.067683523317858596,	0.067633637891222759,	0.067583752295502827,	
+0.067533866530823522,	0.067483980597309090,	0.067434094495085167,	0.067384208224276002,	0.067334321785006326,	0.067284435177400390,	0.067234548401583813,	0.067184661457680858,	
+0.067134774345816259,	0.067084887066114277,	0.067034999618700519,	0.066985112003699276,	0.066935224221235240,	0.066885336271432699,	0.066835448154417262,	0.066785559870313205,	
+0.066735671419245260,	0.066685782801337676,	0.066635894016716088,	0.066586005065504758,	0.066536115947827976,	0.066486226663811349,	0.066436337213579152,	0.066386447597256121,	
+0.066336557814966515,	0.066286667866835972,	0.066236777752988751,	0.066186887473549588,	0.066136997028642758,	0.066087106418393882,	0.066037215642927236,	0.065987324702367553,	
+0.065937433596839123,	0.065887542326467541,	0.065837650891377109,	0.065787759291692546,	0.065737867527538144,	0.065687975599039522,	0.065638083506320957,	0.065588191249506739,	
+0.065538298828722488,	0.065488406244092481,	0.065438513495741465,	0.065388620583793730,	0.065338727508374883,	0.065288834269609214,	0.065238940867621456,	0.065189047302535899,	
+0.065139153574478179,	0.065089259683572570,	0.065039365629943807,	0.064989471413716193,	0.064939577035015350,	0.064889682493965553,	0.064839787790691550,	0.064789892925317644,	
+0.064739997897969442,	0.064690102708771235,	0.064640207357847340,	0.064590311845323378,	0.064540416171323625,	0.064490520335972829,	0.064440624339395292,	0.064390728181716650,	
+0.064340831863061165,	0.064290935383553613,	0.064241038743318282,	0.064191141942480795,	0.064141244981165454,	0.064091347859496994,	0.064041450577599732,	0.063991553135599274,	
+0.063941655533619940,	0.063891757771786475,	0.063841859850223157,	0.063791961769055647,	0.063742063528408222,	0.063692165128405198,	0.063642266569172212,	0.063592367850833553,	
+0.063542468973513969,	0.063492569937337776,	0.063442670742430596,	0.063392771388916747,	0.063342871876920961,	0.063292972206567558,	0.063243072377982171,	0.063193172391289090,	
+0.063143272246613091,	0.063093371944078463,	0.063043471483810856,	0.062993570865934559,	0.062943670090574347,	0.062893769157854496,	0.062843868067900682,	0.062793966820837196,	
+0.062744065416788786,	0.062694163855879781,	0.062644262138235804,	0.062594360263981172,	0.062544458233240188,	0.062494556046138516,	0.062444653702800446,	0.062394751203350737,	
+0.062344848547913716,	0.062294945736615009,	0.062245042769578943,	0.062195139646930270,	0.062145236368793301,	0.062095332935293693,	0.062045429346555742,	0.061995525602704223,	
+0.061945621703863446,	0.061895717650159061,	0.061845813441715379,	0.061795909078657160,	0.061746004561108729,	0.061696099889195728,	0.061646195063042482,	0.061596290082773300,	
+0.061546384948513840,	0.061496479660388410,	0.061446574218521788,	0.061396668623038289,	0.061346762874063557,	0.061296856971721922,	0.061246950916138139,	0.061197044707436539,	
+0.061147138345742771,	0.061097231831181154,	0.061047325163876461,	0.060997418343953010,	0.060947511371536457,	0.060897604246751121,	0.060847696969721782,	0.060797789540572751,	
+0.060747881959429692,	0.060697974226416929,	0.060648066341658792,	0.060598158305280925,	0.060548250117407665,	0.060498341778163781,	0.060448433287673596,	0.060398524646062775,	
+0.060348615853455634,	0.060298706909976962,	0.060248797815751078,	0.060198888570903643,	0.060148979175558982,	0.060099069629841878,	0.060049159933876654,	0.059999250087788975,	
+0.059949340091703170,	0.059899429945744015,	0.059849519650035841,	0.059799609204704313,	0.059749698609873760,	0.059699787865668964,	0.059649876972214251,	0.059599965929635290,	
+0.059550054738056420,	0.059500143397601964,	0.059450231908397592,	0.059400320270567644,	0.059350408484236894,	0.059300496549529680,	0.059250584466571665,	0.059200672235487188,	
+0.059150759856401038,	0.059100847329437538,	0.059050934654722366,	0.059001021832379853,	0.058951108862534789,	0.058901195745311510,	0.058851282480835689,	0.058801369069231654,	
+0.058751455510624204,	0.058701541805137661,	0.058651627952897717,	0.058601713954028696,	0.058551799808654957,	0.058501885516902150,	0.058451971078894639,	0.058402056494757194,	
+0.058352141764614167,	0.058302226888591227,	0.058252311866812720,	0.058202396699403434,	0.058152481386487716,	0.058102565928191234,	0.058052650324638341,	0.058002734575953820,	
+0.057952818682262014,	0.057902902643688615,	0.057852986460357955,	0.057803070132394822,	0.057753153659923583,	0.057703237043069892,	0.057653320281958118,	0.057603403376712589,	
+0.057553486327459005,	0.057503569134321697,	0.057453651797425474,	0.057403734316894675,	0.057353816692854984,	0.057303898925430745,	0.057253981014746769,	0.057204062960927393,	
+0.057154144764098302,	0.057104226424383848,	0.057054307941908827,	0.057004389316797598,	0.056954470549175837,	0.056904551639167897,	0.056854632586898581,	0.056804713392492240,	
+0.056754794056074552,	0.056704874577769890,	0.056654954957702591,	0.056605035195998347,	0.056555115292781524,	0.056505195248176904,	0.056455275062308859,	0.056405354735303059,	
+0.056355434267283885,	0.056305513658376119,	0.056255592908704126,	0.056205672018393590,	0.056155750987568885,	0.056105829816354792,	0.056055908504875684,	0.056005987053257253,	
+0.055956065461623850,	0.055906143730100284,	0.055856221858810916,	0.055806299847881435,	0.055756377697436202,	0.055706455407600032,	0.055656532978497278,	0.055606610410253630,	
+0.055556687702993462,	0.055506764856841126,	0.055456841871922326,	0.055406918748361414,	0.055356995486283214,	0.055307072085812078,	0.055257148547073705,	0.055207224870192459,	
+0.055157301055293158,	0.055107377102500153,	0.055057453011939150,	0.055007528783734522,	0.054957604418011063,	0.054907679914893155,	0.054857755274506488,	0.054807830496975435,	
+0.054757905582424805,	0.054707980530978965,	0.054658055342763620,	0.054608130017903135,	0.054558204556521883,	0.054508278958745562,	0.054458353224698539,	0.054408427354505642,	
+0.054358501348291226,	0.054308575206181008,	0.054258648928299347,	0.054208722514771060,	0.054158795965720527,	0.054108869281273446,	0.054058942461554196,	0.054009015506687588,	
+0.053959088416797994,	0.053909161192011126,	0.053859233832451357,	0.053809306338243504,	0.053759378709511939,	0.053709450946382367,	0.053659523048979176,	0.053609595017426730,	
+0.053559666851850735,	0.053509738552375577,	0.053459810119126074,	0.053409881552226597,	0.053359952851802867,	0.053310024017979254,	0.053260095050880578,	0.053210165950631216,	
+0.053160236717356889,	0.053110307351181975,	0.053060377852231284,	0.053010448220629211,	0.052960518456501453,	0.052910588559972403,	0.052860658531166886,	0.052810728370209274,	
+0.052760798077225286,	0.052710867652339302,	0.052660937095676152,	0.052611006407360210,	0.052561075587517200,	0.052511144636271503,	0.052461213553747499,	0.052411282340070905,	
+0.052361350995366103,	0.052311419519757922,	0.052261487913370749,	0.052211556176330304,	0.052161624308760965,	0.052111692310787570,	0.052061760182534500,	0.052011827924127466,	
+0.051961895535690868,	0.051911963017349530,	0.051862030369227839,	0.051812097591451521,	0.051762164684144955,	0.051712231647432980,	0.051662298481439980,	0.051612365186291677,	
+0.051562431762112462,	0.051512498209026723,	0.051462564527160186,	0.051412630716637230,	0.051362696777582706,	0.051312762710120988,	0.051262828514377815,	0.051212894190477566,	
+0.051162959738545080,	0.051113025158704757,	0.051063090451082309,	0.051013155615802136,	0.050963220652989076,	0.050913285562767523,	0.050863350345263195,	0.050813415000600493,	
+0.050763479528904254,	0.050713543930298872,	0.050663608204910074,	0.050613672352862252,	0.050563736374279813,	0.050513800269288471,	0.050463864038012632,	0.050413927680577127,	
+0.050363991197106363,	0.050314054587726066,	0.050264117852560630,	0.050214180991734900,	0.050164244005373275,	0.050114306893601482,	0.050064369656543928,	0.050014432294325444,	
+0.049964494807070436,	0.049914557194904632,	0.049864619457952439,	0.049814681596338700,	0.049764743610187810,	0.049714805499625501,	0.049664867264776182,	0.049614928905764251,	
+0.049564990422715442,	0.049515051815754156,	0.049465113085005244,	0.049415174230593099,	0.049365235252643469,	0.049315296151280746,	0.049265356926629783,	0.049215417578814986,	
+0.049165478107962089,	0.049115538514195499,	0.049065598797640060,	0.049015658958420180,	0.048965718996661592,	0.048915778912488717,	0.048865838706026385,	0.048815898377399018,	
+0.048765957926732342,	0.048716017354150778,	0.048666076659779171,	0.048616135843741928,	0.048566194906164782,	0.048516253847172154,	0.048466312666888452,	0.048416371365439408,	
+0.048366429942949436,	0.048316488399543389,	0.048266546735345674,	0.048216604950482043,	0.048166663045076892,	0.048116721019255092,	0.048066778873141036,	0.048016836606860486,	
+0.047966894220537841,	0.047916951714297953,	0.047867009088265251,	0.047817066342565467,	0.047767123477323016,	0.047717180492662763,	0.047667237388709108,	0.047617294165587805,	
+0.047567350823423268,	0.047517407362339906,	0.047467463782463477,	0.047417520083918384,	0.047367576266829491,	0.047317632331321212,	0.047267688277519294,	0.047217744105548159,	
+0.047167799815532666,	0.047117855407597227,	0.047067910881867597,	0.047017966238468184,	0.046968021477523859,	0.046918076599159031,	0.046868131603499459,	0.046818186490669565,	
+0.046768241260794194,	0.046718295913997780,	0.046668350450406071,	0.046618404870143487,	0.046568459173334444,	0.046518513360104700,	0.046468567430578672,	0.046418621384881224,	
+0.046368675223136778,	0.046318728945471087,	0.046268782552008579,	0.046218836042874113,	0.046168889418192111,	0.046118942678088332,	0.046068995822687191,	0.046019048852113560,	
+0.045969101766491868,	0.045919154565947869,	0.045869207250605976,	0.045819259820591068,	0.045769312276027561,	0.045719364617041229,	0.045669416843756479,	0.045619468956298183,	
+0.045569520954790776,	0.045519572839360006,	0.045469624610130308,	0.045419676267226108,	0.045369727810773156,	0.045319779240895884,	0.045269830557719166,	0.045219881761367424,	
+0.045169932851966424,	0.045119983829640595,	0.045070034694514802,	0.045020085446713480,	0.044970136086362390,	0.044920186613585961,	0.044870237028509057,	0.044820287331256127,	
+0.044770337521952919,	0.044720387600723860,	0.044670437567693844,	0.044620487422987284,	0.044570537166729950,	0.044520586799046268,	0.044470636320060680,	0.044420685729898948,	
+0.044370735028685500,	0.044320784216545214,	0.044270833293602520,	0.044220882259983191,	0.044170931115811655,	0.044120979861212793,	0.044071028496311032,	0.044021077021232147,	
+0.043971125436100572,	0.043921173741041181,	0.043871221936178414,	0.043821270021638034,	0.043771317997544475,	0.043721365864022629,	0.043671413621196919,	0.043621461269193119,	
+0.043571508808135664,	0.043521556238149003,	0.043471603559358883,	0.043421650771889760,	0.043371697875866512,	0.043321744871413576,	0.043271791758656718,	0.043221838537720381,	
+0.043171885208729451,	0.043121931771808356,	0.043071978227082884,	0.043022024574677464,	0.042972070814716982,	0.042922116947325881,	0.042872162972629926,	0.042822208890753569,	
+0.042772254701821687,	0.042722300405958723,	0.042672346003290458,	0.042622391493941321,	0.042572436878036211,	0.042522482155699565,	0.042472527327057155,	0.042422572392233425,	
+0.042372617351352823,	0.042322662204541117,	0.042272706951922763,	0.042222751593622633,	0.042172796129765183,	0.042122840560476195,	0.042072884885880096,	0.042022929106101788,	
+0.041972973221265711,	0.041923017231497647,	0.041873061136922039,	0.041823104937663780,	0.041773148633847318,	0.041723192225598421,	0.041673235713041545,	0.041623279096301584,	
+0.041573322375502979,	0.041523365550771511,	0.041473408622231631,	0.041423451590007786,	0.041373494454225751,	0.041323537215009983,	0.041273579872485373,	0.041223622426776373,	
+0.041173664878008755,	0.041123707226306976,	0.041073749471795928,	0.041023791614600062,	0.040973833654845165,	0.040923875592655680,	0.040873917428156506,	0.040823959161472100,	
+0.040774000792728235,	0.040724042322049368,	0.040674083749560400,	0.040624125075385771,	0.040574166299651278,	0.040524207422481369,	0.040474248444000500,	0.040424289364334454,	
+0.040374330183607678,	0.040324370901945079,	0.040274411519471115,	0.040224452036311559,	0.040174492452590874,	0.040124532768433960,	0.040074572983965266,	0.040024613099310588,	
+0.039974653114594375,	0.039924693029941533,	0.039874732845476511,	0.039824772561325099,	0.039774812177611758,	0.039724851694461390,	0.039674891111998449,	0.039624930430348718,	
+0.039574969649636665,	0.039525008769986741,	0.039475047791524741,	0.039425086714375120,	0.039375125538662785,	0.039325164264512193,	0.039275202892049131,	0.039225241421398063,	
+0.039175279852683889,	0.039125318186031072,	0.039075356421565406,	0.039025394559411349,	0.038975432599693806,	0.038925470542537234,	0.038875508388067435,	0.038825546136408859,	
+0.038775583787686425,	0.038725621342024584,	0.038675658799549130,	0.038625696160384533,	0.038575733424655693,	0.038525770592487081,	0.038475807664004477,	0.038425844639332365,	
+0.038375881518595188,	0.038325918301918754,	0.038275954989427527,	0.038225991581246413,	0.038176028077499875,	0.038126064478313709,	0.038076100783812385,	0.038026136994120802,	
+0.037976173109363437,	0.037926209129666086,	0.037876245055153211,	0.037826280885949720,	0.037776316622180083,	0.037726352263970100,	0.037676387811444237,	0.037626423264727406,	
+0.037576458623944070,	0.037526493889220032,	0.037476529060679761,	0.037426564138447721,	0.037376599122649720,	0.037326634013410215,	0.037276668810854126,	0.037226703515105923,	
+0.037176738126291402,	0.037126772644535039,	0.037076807069961748,	0.037026841402695986,	0.036976875642863574,	0.036926909790588963,	0.036876943845997087,	0.036826977809212402,	
+0.036777011680360717,	0.036727045459566503,	0.036677079146954679,	0.036627112742649709,	0.036577146246777402,	0.036527179659462228,	0.036477212980828663,	0.036427246211002511,	
+0.036377279350108239,	0.036327312398270771,	0.036277345355614575,	0.036227378222265468,	0.036177410998347904,	0.036127443683986821,	0.036077476279306686,	0.036027508784433296,	
+0.035977541199491141,	0.035927573524605134,	0.035877605759899747,	0.035827637905500788,	0.035777669961532733,	0.035727701928120505,	0.035677733805388578,	0.035627765593462764,	
+0.035577797292467531,	0.035527828902527807,	0.035477860423768062,	0.035427891856314120,	0.035377923200290443,	0.035327954455821514,	0.035277985623033137,	0.035228016702049801,	
+0.035178047692996428,	0.035128078595997488,	0.035078109411178796,	0.035028140138664829,	0.034978170778580508,	0.034928201331050325,	0.034878231796200074,	0.034828262174154252,	
+0.034778292465037768,	0.034728322668975110,	0.034678352786092090,	0.034628382816513190,	0.034578412760363331,	0.034528442617766997,	0.034478472388850004,	0.034428502073736822,	
+0.034378531672551949,	0.034328561185421186,	0.034278590612469018,	0.034228619953820379,	0.034178649209599739,	0.034128678379932928,	0.034078707464944416,	0.034028736464759138,	
+0.033978765379501570,	0.033928794209297543,	0.033878822954271519,	0.033828851614548447,	0.033778880190252797,	0.033728908681510385,	0.033678937088445708,	0.033628965411183688,	
+0.033578993649848815,	0.033529021804566891,	0.033479049875462422,	0.033429077862659883,	0.033379105766285090,	0.033329133586462535,	0.033279161323317138,	0.033229188976973405,	
+0.033179216547557136,	0.033129244035192830,	0.033079271440005414,	0.033029298762119373,	0.032979326001660529,	0.032929353158753373,	0.032879380233522833,	0.032829407226093399,	
+0.032779434136590888,	0.032729460965139796,	0.032679487711865046,	0.032629514376891135,	0.032579540960343885,	0.032529567462347780,	0.032479593883027312,	0.032429620222508303,	
+0.032379646480915243,	0.032329672658373068,	0.032279698755006268,	0.032229724770940667,	0.032179750706300754,	0.032129776561211458,	0.032079802335797283,	0.032029828030184046,	
+0.031979853644496237,	0.031929879178858790,	0.031879904633396204,	0.031829930008234301,	0.031779955303497580,	0.031729980519310960,	0.031680005655798947,	0.031630030713087370,	
+0.031580055691300707,	0.031530080590563912,	0.031480105411001470,	0.031430130152739211,	0.031380154815901617,	0.031330179400613202,	0.031280203906999780,	0.031230228335185847,	
+0.031180252685296343,	0.031130276957455762,	0.031080301151789936,	0.031030325268423354,	0.030980349307480962,	0.030930373269087250,	0.030880397153368048,	0.030830420960447857,	
+0.030780444690451610,	0.030730468343503809,	0.030680491919730282,	0.030630515419255523,	0.030580538842204477,	0.030530562188701638,	0.030480585458872840,	0.030430608652842576,	
+0.030380631770735349,	0.030330654812676987,	0.030280677778791985,	0.030230700669205291,	0.030180723484041400,	0.030130746223426146,	0.030080768887484025,	0.030030791476339982,	
+0.029980813990118517,	0.029930836428945458,	0.029880858792945310,	0.029830881082243015,	0.029780903296963073,	0.029730925437231319,	0.029680947503172250,	0.029630969494910810,	
+0.029580991412571506,	0.029531013256280166,	0.029481035026161291,	0.029431056722339387,	0.029381078344940286,	0.029331099894088487,	0.029281121369908937,	0.029231142772526142,	
+0.029181164102065935,	0.029131185358652816,	0.029081206542411732,	0.029031227653467190,	0.028981248691945023,	0.028931269657969733,	0.028881290551666269,	0.028831311373159137,	
+0.028781332122574169,	0.028731352800035869,	0.028681373405669189,	0.028631393939598630,	0.028581414401950032,	0.028531434792847896,	0.028481455112417176,	0.028431475360782370,	
+0.028381495538069325,	0.028331515644402536,	0.028281535679906517,	0.028231555644707102,	0.028181575538928798,	0.028131595362696556,	0.028081615116134880,	0.028031634799369608,	
+0.027981654412525252,	0.027931673955726762,	0.027881693429098641,	0.027831712832766729,	0.027781732166855536,	0.027731751431490013,	0.027681770626794666,	0.027631789752895340,	
+0.027581808809916536,	0.027531827797983213,	0.027481846717219875,	0.027431865567752362,	0.027381884349705187,	0.027331903063202857,	0.027281921708371216,	0.027231940285334769,	
+0.027181958794218471,	0.027131977235146831,	0.027081995608245691,	0.027032013913639564,	0.026982032151453401,	0.026932050321811715,	0.026882068424840349,	0.026832086460663811,	
+0.026782104429407053,	0.026732122331194593,	0.026682140166152273,	0.026632157934404599,	0.026582175636076531,	0.026532193271292581,	0.026482210840178589,	0.026432228342859073,	
+0.026382245779458541,	0.026332263150102841,	0.026282280454916481,	0.026232297694024419,	0.026182314867551168,	0.026132331975622577,	0.026082349018363156,	0.026032365995897859,	
+0.025982382908351205,	0.025932399755849038,	0.025882416538515873,	0.025832433256476665,	0.025782449909855929,	0.025732466498779513,	0.025682483023371932,	0.025632499483758141,	
+0.025582515880062658,	0.025532532212411332,	0.025482548480928673,	0.025432564685739199,	0.025382580826968759,	0.025332596904741864,	0.025282612919183479,	0.025232628870418116,	
+0.025182644758571626,	0.025132660583768524,	0.025082676346133773,	0.025032692045791883,	0.024982707682868709,	0.024932723257488767,	0.024882738769777014,	0.024832754219857971,	
+0.024782769607857486,	0.024732784933900080,	0.024682800198110710,	0.024632815400613895,	0.024582830541535483,	0.024532845620999999,	0.024482860639132398,	0.024432875596057203,	
+0.024382890491900264,	0.024332905326786097,	0.024282920100839222,	0.024232934814185494,	0.024182949466949426,	0.024132964059255985,	0.024082978591229692,	0.024032993062996392,	
+0.023983007474680611,	0.023933021826407313,	0.023883036118301018,	0.023833050350487574,	0.023783064523091504,	0.023733078636237772,	0.023683092690050901,	0.023633106684656742,	
+0.023583120620179816,	0.023533134496745090,	0.023483148314477082,	0.023433162073501646,	0.023383175773943308,	0.023333189415926586,	0.023283202999577333,	0.023233216525020074,	
+0.023183229992379772,	0.023133243401780954,	0.023083256753349466,	0.023033270047209842,	0.022983283283487040,	0.022933296462305585,	0.022883309583791336,	0.022833322648068810,	
+0.022783335655262978,	0.022733348605498364,	0.022683361498900823,	0.022633374335594876,	0.022583387115705494,	0.022533399839357201,	0.022483412506675852,	0.022433425117785972,	
+0.022383437672812083,	0.022333450171880046,	0.022283462615114383,	0.022233475002640064,	0.022183487334581614,	0.022133499611064887,	0.022083511832214416,	0.022033523998155162,	
+0.021983536109011652,	0.021933548164909750,	0.021883560165973974,	0.021833572112329301,	0.021783584004100253,	0.021733595841412687,	0.021683607624391133,	0.021633619353160560,	
+0.021583631027845492,	0.021533642648571792,	0.021483654215463988,	0.021433665728647047,	0.021383677188245496,	0.021333688594385197,	0.021283699947190676,	0.021233711246786462,	
+0.021183722493298415,	0.021133733686851060,	0.021083744827569369,	0.021033755915577875,	0.020983766951002434,	0.020933777933967578,	0.020883788864598275,	0.020833799743019056,	
+0.020783810569355781,	0.020733821343732979,	0.020683832066275627,	0.020633842737108249,	0.020583853356356707,	0.020533863924145534,	0.020483874440599698,	0.020433884905843733,	
+0.020383895320003502,	0.020333905683203531,	0.020283915995568353,	0.020233926257223825,	0.020183936468294486,	0.020133946628905303,	0.020083956739180810,	0.020033966799246870,	
+0.019983976809228015,	0.019933986769249214,	0.019883996679435006,	0.019834006539911245,	0.019784016350802472,	0.019734026112233658,	0.019684035824329333,	0.019634045487215365,	
+0.019584055101016278,	0.019534064665857057,	0.019484074181862231,	0.019434083649157663,	0.019384093067867886,	0.019334102438117430,	0.019284111760032165,	0.019234121033736621,	
+0.019184130259355770,	0.019134139437014152,	0.019084148566837631,	0.019034157648950736,	0.018984166683478448,	0.018934175670545301,	0.018884184610277157,	0.018834193502798552,	
+0.018784202348234462,	0.018734211146709423,	0.018684219898349300,	0.018634228603278628,	0.018584237261622383,	0.018534245873505103,	0.018484254439052650,	0.018434262958389562,	
+0.018384271431640373,	0.018334279858930949,	0.018284288240385825,	0.018234296576129981,	0.018184304866287953,	0.018134313110985605,	0.018084321310347474,	0.018034329464498539,	
+0.017984337573563339,	0.017934345637667739,	0.017884353656936271,	0.017834361631493923,	0.017784369561465226,	0.017734377446976046,	0.017684385288150927,	0.017634393085114840,	
+0.017584400837992332,	0.017534408546909262,	0.017484416211990171,	0.017434423833360042,	0.017384431411143406,	0.017334438945466137,	0.017284446436452772,	0.017234453884227844,	
+0.017184461288917225,	0.017134468650645454,	0.017084475969537515,	0.017034483245717939,	0.016984490479312598,	0.016934497670446032,	0.016884504819243220,	0.016834511925828705,	
+0.016784518990328352,	0.016734526012866704,	0.016684532993568736,	0.016634539932558996,	0.016584546829963350,	0.016534553685906336,	0.016484560500512935,	0.016434567273907692,	
+0.016384574006216474,	0.016334580697563824,	0.016284587348074274,	0.016234593957873703,	0.016184600527086642,	0.016134607055838083,	0.016084613544252564,	0.016034619992455954,	
+0.015984626400572792,	0.015934632768728065,	0.015884639097046314,	0.015834645385653406,	0.015784651634673887,	0.015734657844232738,	0.015684664014454501,	0.015634670145465050,	
+0.015584676237388920,	0.015534682290351100,	0.015484688304476132,	0.015434694279889886,	0.015384700216716904,	0.015334706115081729,	0.015284711975110232,	0.015234717796926953,	
+0.015184723580656883,	0.015134729326424557,	0.015084735034355853,	0.015034740704575313,	0.014984746337207918,	0.014934751932378216,	0.014884757490212076,	0.014834763010834045,	
+0.014784768494369103,	0.014734773940941798,	0.014684779350678002,	0.014634784723702257,	0.014584790060139552,	0.014534795360114426,	0.014484800623752755,	0.014434805851179084,	
+0.014384811042518398,	0.014334816197895240,	0.014284821317435487,	0.014234826401263679,	0.014184831449504361,	0.014134836462283409,	0.014084841439725366,	0.014034846381955219,	
+0.013984851289097513,	0.013934856161278122,	0.013884860998621591,	0.013834865801252906,	0.013784870569296614,	0.013734875302878589,	0.013684880002123376,	0.013634884667155962,	
+0.013584889298100894,	0.013534893895084046,	0.013484898458229963,	0.013434902987663635,	0.013384907483509605,	0.013334911945893750,	0.013284916374940616,	0.013234920770774745,	
+0.013184925133522018,	0.013134929463306978,	0.013084933760254613,	0.013034938024489471,	0.012984942256137427,	0.012934946455323027,	0.012884950622171262,	0.012834954756806675,	
+0.012784958859355147,	0.012734962929941222,	0.012684966968689888,	0.012634970975725694,	0.012584974951174515,	0.012534978895160901,	0.012484982807809837,	0.012434986689245874,	
+0.012384990539594886,	0.012334994358981425,	0.012284998147530032,	0.012235001905366588,	0.012185005632615639,	0.012135009329402176,	0.012085012995850746,	0.012035016632087227,	
+0.011985020238236168,	0.011935023814422557,	0.011885027360770942,	0.011835030877407202,	0.011785034364455887,	0.011735037822041985,	0.011685041250290044,	0.011635044649325946,	
+0.011585048019274234,	0.011535051360259903,	0.011485054672407499,	0.011435057955842903,	0.011385061210690661,	0.011335064437075324,	0.011285067635122768,	0.011235070804957545,	
+0.011185073946704644,	0.011135077060488613,	0.011085080146435333,	0.011035083204669355,	0.010985086235315668,	0.010935089238498820,	0.010885092214344695,	0.010835095162977839,	
+0.010785098084523244,	0.010735100979105461,	0.010685103846850369,	0.010635106687882517,	0.010585109502326899,	0.010535112290308063,	0.010485115051951890,	0.010435117787382930,	
+0.010385120496726175,	0.010335123180106175,	0.010285125837648811,	0.010235128469478633,	0.010185131075720189,	0.010135133656499361,	0.010085136211940699,	0.010035138742169197,	
+0.009985141247309405,	0.009935143727487203,	0.009885146182827142,	0.009835148613454215,	0.009785151019492972,	0.009735153401069296,	0.009685155758307737,	0.009635158091333288,	
+0.009585160400270500,	0.009535162685245254,	0.009485164946382102,	0.009435167183806039,	0.009385169397641613,	0.009335171588014706,	0.009285173755049872,	0.009235175898871659,	
+0.009185178019605951,	0.009135180117377297,	0.009085182192310694,	0.009035184244530689,	0.008985186274163171,	0.008935188281332685,	0.008885190266164227,	0.008835192228782351,	
+0.008785194169312938,	0.008735196087880540,	0.008685197984610153,	0.008635199859626325,	0.008585201713054942,	0.008535203545020555,	0.008485205355648159,	0.008435207145062306,	
+0.008385208913388878,	0.008335210660752429,	0.008285212387277509,	0.008235214093090002,	0.008185215778314459,	0.008135217443075878,	0.008085219087498808,	0.008035220711709135,	
+0.007985222315831410,	0.007935223899990629,	0.007885225464311346,	0.007835227008919440,	0.007785228533939469,	0.007735230039496426,	0.007685231525714864,	0.007635232992720667,	
+0.007585234440638388,	0.007535235869593022,	0.007485237279709124,	0.007435238671112575,	0.007385240043927930,	0.007335241398280185,	0.007285242734293892,	0.007235244052094937,	
+0.007185245351807872,	0.007135246633557249,	0.007085247897468953,	0.007035249143667537,	0.006985250372277999,	0.006935251583424892,	0.006885252777234099,	0.006835253953830174,	
+0.006785255113338114,	0.006735256255882473,	0.006685257381589134,	0.006635258490582652,	0.006585259582988025,	0.006535260658929804,	0.006485261718533876,	0.006435262761924793,	
+0.006385263789227553,	0.006335264800566710,	0.006285265796068149,	0.006235266775856423,	0.006185267740056086,	0.006135268688793025,	0.006085269622191791,	0.006035270540377383,	
+0.005985271443474355,	0.005935272331608592,	0.005885273204904649,	0.005835274063487523,	0.005785274907481767,	0.005735275737013268,	0.005685276552206580,	0.005635277353186701,	
+0.005585278140078183,	0.005535278913006915,	0.005485279672097450,	0.005435280417474785,	0.005385281149263474,	0.005335281867589406,	0.005285282572577133,	0.005235283264351209,	
+0.005185283943037521,	0.005135284608760623,	0.005085285261645514,	0.005035285901816748,	0.004985286529400210,	0.004935287144520456,	0.004885287747302485,	0.004835288337870850,	
+0.004785288916351439,	0.004735289482868805,	0.004685290037547947,	0.004635290580513421,	0.004585291111891111,	0.004535291631805574,	0.004485292140381809,	0.004435292637744368,	
+0.004385293124019140,	0.004335293599330679,	0.004285294063803541,	0.004235294517563611,	0.004185294960735444,	0.004135295393444041,	0.004085295815813955,	0.004035296227971073,	
+0.003985296630039951,	0.003935297022145587,	0.003885297404412537,	0.003835297776966687,	0.003785298139932593,	0.003735298493435253,	0.003685298837599223,	0.003635299172550391,	
+0.003585299498413309,	0.003535299815312980,	0.003485300123373957,	0.003435300422722127,	0.003385300713482047,	0.003335300995778715,	0.003285301269736686,	0.003235301535481848,	
+0.003185301793138756,	0.003135302042831966,	0.003085302284687364,	0.003035302518829507,	0.002985302745383394,	0.002935302964473579,	0.002885303176225952,	0.002835303380765067,	
+0.002785303578215922,	0.002735303768703075,	0.002685303952352413,	0.002635304129288491,	0.002585304299636308,	0.002535304463520421,	0.002485304621066716,	0.002435304772399750,	
+0.002385304917644522,	0.002335305056925588,	0.002285305190368835,	0.002235305318098819,	0.002185305440240096,	0.002135305556918553,	0.002085305668258747,	0.002035305774385676,	
+0.001985305875423896,	0.001935305971499296,	0.001885306062736431,	0.001835306149260301,	0.001785306231195462,	0.001735306308667801,	0.001685306381801874,	0.001635306450722681,	
+0.001585306515554778,	0.001535306576424053,	0.001485306633455062,	0.001435306686772804,	0.001385306736501835,	0.001335306782768043,	0.001285306825695984,	0.001235306865410214,	
+0.001185306902036622,	0.001135306935699761,	0.001085306966524634,	0.001035306994635795,	0.000985307020159133,	0.000935307043219203,	0.000885307063941005,	0.000835307082449096,	
+0.000785307098869363,	0.000735307113326362,	0.000685307125945094,	0.000635307136850113,	0.000585307146167309,	0.000535307154021237,	0.000485307160536898,	0.000435307165838846,	
+0.000385307170052970,	0.000335307173303827,	0.000285307175716415,	0.000235307177415291,	0.000185307178526344,	0.000135307179174129,	0.000085307179483201,	0.000035307179579450,	
+-0.000014692820412569,	-0.000064692820367856,	-0.000114692820161855,	-0.000164692819668678,	-0.000214692818763769,	-0.000264692817322128,	-0.000314692815219199,	-0.000364692812329094,	
+-0.000414692808527257,	-0.000464692803688688,	-0.000514692797688831,	-0.000564692790401798,	-0.000614692781703032,	-0.000664692771467535,	-0.000714692759570750,	-0.000764692745886789,	
+-0.000814692730291096,	-0.000864692712659116,	-0.000914692692864960,	-0.000964692670784071,	-0.001014692646291452,	-0.001064692619262544,	-0.001114692589571461,	-0.001164692557093647,	
+-0.001214692521704101,	-0.001264692483278268,	-0.001314692441690259,	-0.001364692396815520,	-0.001414692348529050,	-0.001464692296706292,	-0.001514692241221360,	-0.001564692181949697,	
+-0.001614692118766304,	-0.001664692051546625,	-0.001714691980164771,	-0.001764691904496188,	-0.001814691824416319,	-0.001864691739799276,	-0.001914691650520504,	-0.001964691556455003,	
+-0.002014691457478216,	-0.002064691353464257,	-0.002114691244288570,	-0.002164691129826155,	-0.002214691009952456,	-0.002264690884541585,	-0.002314690753468987,	-0.002364690616609663,	
+-0.002414690473839055,	-0.002464690325031278,	-0.002514690170061775,	-0.002564690008805546,	-0.002614689841138036,	-0.002664689666933358,	-0.002714689486066956,	-0.002764689298414273,	
+-0.002814689103849424,	-0.002864688902247852,	-0.002914688693484557,	-0.002964688477434985,	-0.003014688253973248,	-0.003064688022974790,	-0.003114687784314611,	-0.003164687537868158,	
+-0.003214687283509542,	-0.003264687021114207,	-0.003314686750557155,	-0.003364686471713830,	-0.003414686184458345,	-0.003464685888666144,	-0.003514685584212229,	-0.003564685270972043,	
+-0.003614684948819701,	-0.003664684617630646,	-0.003714684277279879,	-0.003764683927642846,	-0.003814683568593659,	-0.003864683200007764,	-0.003914682821760604,	-0.003964682433726293,	
+-0.004014682035780276,	-0.004064681627797554,	-0.004114681209653572,	-0.004164680781222442,	-0.004214680342379612,	-0.004264679893000080,	-0.004314679432959292,	-0.004364678962131362,	
+-0.004414678480391734,	-0.004464677987615410,	-0.004514677483677836,	-0.004564676968453123,	-0.004614676441816718,	-0.004664675903643622,	-0.004714675353809280,	-0.004764674792187806,	
+-0.004814674218654644,	-0.004864673633085242,	-0.004914673035353711,	-0.004964672425335498,	-0.005014671802905603,	-0.005064671167939473,	-0.005114670520311221,	-0.005164669859896293,	
+-0.005214669186569690,	-0.005264668500206859,	-0.005314667800681912,	-0.005364667087870295,	-0.005414666361647010,	-0.005464665621887505,	-0.005514664868465890,	-0.005564664101257614,	
+-0.005614663320137677,	-0.005664662524981526,	-0.005714661715663275,	-0.005764660892058370,	-0.005814660054042256,	-0.005864659201489048,	-0.005914658334274192,	-0.005964657452272691,	
+-0.006014656555359989,	-0.006064655643410202,	-0.006114654716298777,	-0.006164653773900714,	-0.006214652816091461,	-0.006264651842745132,	-0.006314650853737174,	-0.006364649848942587,	
+-0.006414648828236821,	-0.006464647791493989,	-0.006514646738589537,	-0.006564645669398468,	-0.006614644583796229,	-0.006664643481656934,	-0.006714642362856032,	-0.006764641227268523,	
+-0.006814640074769854,	-0.006864638905234142,	-0.006914637718536832,	-0.006964636514553373,	-0.007014635293157877,	-0.007064634054225794,	-0.007114632797632125,	-0.007164631523252319,	
+-0.007214630230960490,	-0.007264628920632085,	-0.007314627592142108,	-0.007364626245366005,	-0.007414624880177894,	-0.007464623496453220,	-0.007514622094066987,	-0.007564620672894643,	
+-0.007614619232810304,	-0.007664617773689416,	-0.007714616295406984,	-0.007764614797838455,	-0.007814613280857946,	-0.007864611744340902,	-0.007914610188162774,	-0.007964608612197676,	
+-0.008014607016321057,	-0.008064605400407919,	-0.008114603764333714,	-0.008164602107972555,	-0.008214600431199889,	-0.008264598733890722,	-0.008314597015920503,	-0.008364595277163349,	
+-0.008414593517494705,	-0.008464591736789576,	-0.008514589934923414,	-0.008564588111770332,	-0.008614586267205781,	-0.008664584401104764,	-0.008714582513342728,	-0.008764580603793794,	
+-0.008814578672333408,	-0.008864576718837018,	-0.008914574743178742,	-0.008964572745234031,	-0.009014570724877888,	-0.009064568681985762,	-0.009114566616431770,	-0.009164564528091361,	
+-0.009214562416839541,	-0.009264560282551760,	-0.009314558125102132,	-0.009364555944366110,	-0.009414553740218698,	-0.009464551512535346,	-0.009514549261190171,	-0.009564546986058624,	
+-0.009614544687015707,	-0.009664542363936874,	-0.009714540016696241,	-0.009764537645169259,	-0.009814535249231374,	-0.009864532828756710,	-0.009914530383620711,	-0.009964527913698389,	
+-0.010014525418865189,	-0.010064522898995232,	-0.010114520353963968,	-0.010164517783646403,	-0.010214515187917989,	-0.010264512566652841,	-0.010314509919726413,	-0.010364507247013708,	
+-0.010414504548390180,	-0.010464501823729948,	-0.010514499072908461,	-0.010564496295800726,	-0.010614493492282193,	-0.010664490662226984,	-0.010714487805510547,	-0.010764484922007891,	
+-0.010814482011594467,	-0.010864479074144394,	-0.010914476109533123,	-0.010964473117636106,	-0.011014470098327463,	-0.011064467051482643,	-0.011114463976976656,	-0.011164460874684954,	
+-0.011214457744481654,	-0.011264454586242211,	-0.011314451399841632,	-0.011364448185155368,	-0.011414444942057539,	-0.011464441670423597,	-0.011514438370128553,	-0.011564435041047856,	
+-0.011614431683055627,	-0.011664428296027318,	-0.011714424879837940,	-0.011764421434362944,	-0.011814417959476449,	-0.011864414455053910,	-0.011914410920970779,	-0.011964407357101177,	
+-0.012014403763320554,	-0.012064400139503923,	-0.012114396485526738,	-0.012164392801263114,	-0.012214389086588512,	-0.012264385341377934,	-0.012314381565506839,	-0.012364377758849344,	
+-0.012414373921280905,	-0.012464370052676532,	-0.012514366152911679,	-0.012564362221860465,	-0.012614358259398346,	-0.012664354265400331,	-0.012714350239741875,	-0.012764346182297099,	
+-0.012814342092941456,	-0.012864337971550404,	-0.012914333817998062,	-0.012964329632159885,	-0.013014325413910885,	-0.013064321163126516,	-0.013114316879680898,	-0.013164312563449489,	
+-0.013214308214307299,	-0.013264303832129782,	-0.013314299416791062,	-0.013364294968166593,	-0.013414290486131386,	-0.013464285970560898,	-0.013514281421329251,	-0.013564276838311899,	
+-0.013614272221383856,	-0.013664267570420576,	-0.013714262885296183,	-0.013764258165886134,	-0.013814253412065438,	-0.013864248623709554,	-0.013914243800692604,	-0.013964238942890044,	
+-0.014014234050177330,	-0.014064229122428587,	-0.014114224159519273,	-0.014164219161324397,	-0.014214214127719418,	-0.014264209058578460,	-0.014314203953776979,	-0.014364198813189987,	
+-0.014414193636692942,	-0.014464188424159970,	-0.014514183175466527,	-0.014564177890487626,	-0.014614172569098723,	-0.014664167211173945,	-0.014714161816588750,	-0.014764156385218151,	
+-0.014814150916937604,	-0.014864145411621236,	-0.014914139869144503,	-0.014964134289382865,	-0.015014128672210449,	-0.015064123017502710,	-0.015114117325134664,	-0.015164111594981768,	
+-0.015214105826918149,	-0.015264100020819266,	-0.015314094176560133,	-0.015364088294016209,	-0.015414082373061619,	-0.015464076413571823,	-0.015514070415421837,	-0.015564064378487119,	
+-0.015614058302641795,	-0.015664052187761325,	-0.015714046033720726,	-0.015764039840395455,	-0.015814033607659643,	-0.015864027335388744,	-0.015914021023458222,	-0.015964014671742202,	
+-0.016014008280116145,	-0.016064001848455071,	-0.016113995376634434,	-0.016163988864528363,	-0.016213982312012321,	-0.016263975718961324,	-0.016313969085250832,	-0.016363962410754971,	
+-0.016413955695349206,	-0.016463948938908551,	-0.016513942141308469,	-0.016563935302423088,	-0.016613928422127867,	-0.016663921500297826,	-0.016713914536808424,	-0.016763907531533791,	
+-0.016813900484349390,	-0.016863893395130239,	-0.016913886263751798,	-0.016963879090088198,	-0.017013871874014899,	-0.017063864615407365,	-0.017113857314139724,	-0.017163849970087443,	
+-0.017213842583125534,	-0.017263835153129462,	-0.017313827679973359,	-0.017363820163532689,	-0.017413812603682466,	-0.017463805000298160,	-0.017513797353253893,	-0.017563789662425132,	
+-0.017613781927686898,	-0.017663774148914655,	-0.017713766325982531,	-0.017763758458765991,	-0.017813750547140055,	-0.017863742590980190,	-0.017913734590160522,	-0.017963726544556517,	
+-0.018013718454043638,	-0.018063710318496021,	-0.018113702137789130,	-0.018163693911797979,	-0.018213685640398040,	-0.018263677323463443,	-0.018313668960869653,	-0.018363660552491688,	
+-0.018413652098205020,	-0.018463643597883776,	-0.018513635051403420,	-0.018563626458638981,	-0.018613617819465918,	-0.018663609133758367,	-0.018713600401391792,	-0.018763591622241213,	
+-0.018813582796182105,	-0.018863573923088593,	-0.018913565002836145,	-0.018963556035300231,	-0.019013547020354980,	-0.019063537957875864,	-0.019113528847737902,	-0.019163519689816565,	
+-0.019213510483985979,	-0.019263501230121622,	-0.019313491928098510,	-0.019363482577792111,	-0.019413473179076563,	-0.019463463731827332,	-0.019513454235919443,	-0.019563444691228359,	
+-0.019613435097628223,	-0.019663425454994495,	-0.019713415763202208,	-0.019763406022126822,	-0.019813396231642480,	-0.019863386391624643,	-0.019913376501948788,	-0.019963366562489048,	
+-0.020013356573120887,	-0.020063346533719339,	-0.020113336444159868,	-0.020163326304316612,	-0.020213316114065037,	-0.020263305873280176,	-0.020313295581837493,	-0.020363285239611124,	
+-0.020413274846476547,	-0.020463264402308778,	-0.020513253906983296,	-0.020563243360374236,	-0.020613232762357065,	-0.020663222112806811,	-0.020713211411598948,	-0.020763200658607612,	
+-0.020813189853708274,	-0.020863178996775960,	-0.020913168087686142,	-0.020963157126312963,	-0.021013146112531890,	-0.021063135046218397,	-0.021113123927246621,	-0.021163112755492035,	
+-0.021213101530829667,	-0.021263090253134991,	-0.021313078922282142,	-0.021363067538146596,	-0.021413056100603383,	-0.021463044609527974,	-0.021513033064794511,	-0.021563021466278462,	
+-0.021613009813854861,	-0.021662998107399179,	-0.021712986346785559,	-0.021762974531889471,	-0.021812962662585946,	-0.021862950738750463,	-0.021912938760257156,	-0.021962926726981500,	
+-0.022012914638798974,	-0.022062902495583719,	-0.022112890297211203,	-0.022162878043556464,	-0.022212865734494977,	-0.022262853369900876,	-0.022312840949649644,	-0.022362828473616311,	
+-0.022412815941676351,	-0.022462803353703903,	-0.022512790709574453,	-0.022562778009163020,	-0.022612765252345089,	-0.022662752438994800,	-0.022712739568987630,	-0.022762726642198614,	
+-0.022812713658503223,	-0.022862700617775601,	-0.022912687519891232,	-0.022962674364725585,	-0.023012661152152811,	-0.023062647882048381,	-0.023112634554287335,	-0.023162621168745144,	
+-0.023212607725295958,	-0.023262594223815249,	-0.023312580664178059,	-0.023362567046259858,	-0.023412553369934797,	-0.023462539635078352,	-0.023512525841565560,	-0.023562511989271895,	
+-0.023612498078071507,	-0.023662484107839873,	-0.023712470078452029,	-0.023762455989783451,	-0.023812441841708294,	-0.023862427634102030,	-0.023912413366839698,	-0.023962399039796776,	
+-0.024012384652847413,	-0.024062370205867087,	-0.024112355698731280,	-0.024162341131314140,	-0.024212326503491147,	-0.024262311815137338,	-0.024312297066128193,	-0.024362282256337863,	
+-0.024412267385641825,	-0.024462252453915121,	-0.024512237461033228,	-0.024562222406870299,	-0.024612207291301813,	-0.024662192114202806,	-0.024712176875448768,	-0.024762161574913840,	
+-0.024812146212473508,	-0.024862130788002812,	-0.024912115301377234,	-0.024962099752470924,	-0.025012084141159362,	-0.025062068467318035,	-0.025112052730821094,	-0.025162036931544018,	
+-0.025212021069361851,	-0.025262005144150078,	-0.025311989155782845,	-0.025361973104135641,	-0.025411956989083502,	-0.025461940810501918,	-0.025511924568265034,	-0.025561908262248342,	
+-0.025611891892326877,	-0.025661875458376129,	-0.025711858960270246,	-0.025761842397884715,	-0.025811825771094581,	-0.025861809079775325,	-0.025911792323801100,	-0.025961775503047398,	
+-0.026011758617389698,	-0.026061741666702158,	-0.026111724650860268,	-0.026161707569739061,	-0.026211690423214033,	-0.026261673211159332,	-0.026311655933450449,	-0.026361638589962429,	
+-0.026411621180570753,	-0.026461603705149581,	-0.026511586163574401,	-0.026561568555720252,	-0.026611550881462630,	-0.026661533140675684,	-0.026711515333234907,	-0.026761497459015342,	
+-0.026811479517892475,	-0.026861461509740465,	-0.026911443434434804,	-0.026961425291850975,	-0.027011407081863142,	-0.027061388804346789,	-0.027111370459176967,	-0.027161352046229159,	
+-0.027211333565377530,	-0.027261315016497565,	-0.027311296399464315,	-0.027361277714153264,	-0.027411258960438580,	-0.027461240138195744,	-0.027511221247299811,	-0.027561202287626266,	
+-0.027611183259049273,	-0.027661164161444322,	-0.027711144994686462,	-0.027761125758651181,	-0.027811106453212640,	-0.027861087078246336,	-0.027911067633627315,	-0.027961048119231065,	
+-0.028011028534931755,	-0.028061008880604872,	-0.028110989156125910,	-0.028160969361369033,	-0.028210949496209729,	-0.028260929560523056,	-0.028310909554184499,	-0.028360889477068225,	
+-0.028410869329049730,	-0.028460849110004058,	-0.028510828819806711,	-0.028560808458331845,	-0.028610788025454959,	-0.028660767521051102,	-0.028710746944995771,	-0.028760726297163131,	
+-0.028810705577428673,	-0.028860684785667449,	-0.028910663921754960,	-0.028960642985565367,	-0.029010621976974165,	-0.029060600895856853,	-0.029110579742087594,	-0.029160558515541887,	
+-0.029210537216094783,	-0.029260515843621781,	-0.029310494397997044,	-0.029360472879096072,	-0.029410451286793919,	-0.029460429620966080,	-0.029510407881486723,	-0.029560386068231345,	
+-0.029610364181075002,	-0.029660342219893197,	-0.029710320184560088,	-0.029760298074951178,	-0.029810275890941526,	-0.029860253632406627,	-0.029910231299220651,	-0.029960208891259096,	
+-0.030010186408397463,	-0.030060163850509917,	-0.030110141217471964,	-0.030160118509158659,	-0.030210095725445502,	-0.030260072866206657,	-0.030310049931317636,	-0.030360026920653486,	
+-0.030410003834089715,	-0.030459980671500488,	-0.030509957432761310,	-0.030559934117747239,	-0.030609910726333778,	-0.030659887258395097,	-0.030709863713806695,	-0.030759840092443636,	
+-0.030809816394181417,	-0.030859792618894218,	-0.030909768766457534,	-0.030959744836746430,	-0.031009720829636406,	-0.031059696745001638,	-0.031109672582717626,	-0.031159648342659878,	
+-0.031209624024702565,	-0.031259599628721192,	-0.031309575154590819,	-0.031359550602186953,	-0.031409525971383766,	-0.031459501262056766,	-0.031509476474081012,	-0.031559451607332006,	
+-0.031609426661683933,	-0.031659401637012294,	-0.031709376533192148,	-0.031759351350099004,	-0.031809326087607039,	-0.031859300745591762,	-0.031909275323928225,	-0.031959249822491952,	
+-0.032009224241157104,	-0.032059198579799199,	-0.032109172838293738,	-0.032159147016514907,	-0.032209121114338206,	-0.032259095131638701,	-0.032309069068291903,	-0.032359042924171987,	
+-0.032409016699154469,	-0.032458990393114402,	-0.032508964005927309,	-0.032558937537467358,	-0.032608910987610061,	-0.032658884356230489,	-0.032708857643204151,	-0.032758830848405224,	
+-0.032808803971709224,	-0.032858777012991211,	-0.032908749972126700,	-0.032958722848989867,	-0.033008695643456230,	-0.033058668355401298,	-0.033108640984699247,	-0.033158613531225602,	
+-0.033208585994855419,	-0.033258558375464209,	-0.033308530672926169,	-0.033358502887116795,	-0.033408475017911166,	-0.033458447065184797,	-0.033508419028811860,	-0.033558390908667877,	
+-0.033608362704627921,	-0.033658334416567501,	-0.033708306044360800,	-0.033758277587883329,	-0.033808249047010172,	-0.033858220421616833,	-0.033908191711577496,	-0.033958162916767683,	
+-0.034008134037062911,	-0.034058105072337350,	-0.034108076022466537,	-0.034158046887325523,	-0.034208017666789846,	-0.034257988360733675,	-0.034307958969032534,	-0.034357929491561495,	
+-0.034407899928196074,	-0.034457870278810462,	-0.034507840543280176,	-0.034557810721480287,	-0.034607780813286318,	-0.034657750818572454,	-0.034707720737214204,	-0.034757690569086661,	
+-0.034807660314065333,	-0.034857629972024406,	-0.034907599542839410,	-0.034957569026385416,	-0.035007538422537940,	-0.035057507731171174,	-0.035107476952160634,	-0.035157446085381849,	
+-0.035207415130709012,	-0.035257384088017631,	-0.035307352957182792,	-0.035357321738080011,	-0.035407290430583480,	-0.035457259034568728,	-0.035507227549910828,	-0.035557195976485302,	
+-0.035607164314166342,	-0.035657132562829472,	-0.035707100722349769,	-0.035757068792602757,	-0.035807036773462635,	-0.035857004664804917,	-0.035906972466504691,	-0.035956940178437473,	
+-0.036006907800477460,	-0.036056875332500182,	-0.036106842774381157,	-0.036156810125994580,	-0.036206777387215977,	-0.036256744557920433,	-0.036306711637983477,	-0.036356678627279287,	
+-0.036406645525683408,	-0.036456612333070910,	-0.036506579049317332,	-0.036556545674296857,	-0.036606512207885022,	-0.036656478649956900,	-0.036706445000388034,	-0.036756411259052602,	
+-0.036806377425826146,	-0.036856343500583748,	-0.036906309483200936,	-0.036956275373551908,	-0.037006241171512189,	-0.037056206876957307,	-0.037106172489761467,	-0.037156138009800194,	
+-0.037206103436948579,	-0.037256068771082153,	-0.037306034012075107,	-0.037355999159802970,	-0.037405964214140844,	-0.037455929174964243,	-0.037505894042147381,	-0.037555858815565786,	
+-0.037605823495094538,	-0.037655788080609182,	-0.037705752571983907,	-0.037755716969094251,	-0.037805681271815307,	-0.037855645480022598,	-0.037905609593590336,	-0.037955573612394045,	
+-0.038005537536308823,	-0.038055501365210201,	-0.038105465098972384,	-0.038155428737470895,	-0.038205392280581285,	-0.038255355728177752,	-0.038305319080135826,	-0.038355282336330607,	
+-0.038405245496637624,	-0.038455208560931084,	-0.038505171529086522,	-0.038555134400979026,	-0.038605097176484145,	-0.038655059855476070,	-0.038705022437830354,	-0.038754984923422074,	
+-0.038804947312126782,	-0.038854909603818676,	-0.038904871798373299,	-0.038954833895665737,	-0.039004795895571535,	-0.039054757797964898,	-0.039104719602721369,	-0.039154681309716485,	
+-0.039204642918824452,	-0.039254604429920813,	-0.039304565842880668,	-0.039354527157579547,	-0.039404488373891662,	-0.039454449491692564,	-0.039504410510857332,	-0.039554371431261524,	
+-0.039604332252779345,	-0.039654292975286332,	-0.039704253598657584,	-0.039754214122768652,	-0.039804174547493736,	-0.039854134872708391,	-0.039904095098287698,	-0.039954055224107221,	
+-0.040004015250041158,	-0.040053975175965054,	-0.040103935001754458,	-0.040153894727283583,	-0.040203854352427973,	-0.040253813877062720,	-0.040303773301063384,	-0.040353732624304160,	
+-0.040403691846660615,	-0.040453650968007834,	-0.040503609988221376,	-0.040553568907175444,	-0.040603527724745590,	-0.040653486440806921,	-0.040703445055234974,	-0.040753403567903974,	
+-0.040803361978689466,	-0.040853320287466549,	-0.040903278494110774,	-0.040953236598496368,	-0.041003194600498866,	-0.041053152499993820,	-0.041103110296855448,	-0.041153067990959302,	
+-0.041203025582180482,	-0.041252983070394544,	-0.041302940455475709,	-0.041352897737299520,	-0.041402854915741083,	-0.041452811990675957,	-0.041502768961978360,	-0.041552725829523837,	
+-0.041602682593187494,	-0.041652639252844896,	-0.041702595808370255,	-0.041752552259639121,	-0.041802508606526609,	-0.041852464848908269,	-0.041902420986658327,	-0.041952377019652327,	
+-0.042002332947765383,	-0.042052288770873053,	-0.042102244488849562,	-0.042152200101570454,	-0.042202155608911295,	-0.042252111010746295,	-0.042302066306951019,	-0.042352021497400583,	
+-0.042401976581970535,	-0.042451931560535103,	-0.042501886432969836,	-0.042551841199149856,	-0.042601795858950721,	-0.042651750412246649,	-0.042701704858913204,	-0.042751659198825495,	
+-0.042801613431859079,	-0.042851567557888187,	-0.042901521576788379,	-0.042951475488434761,	-0.043001429292702904,	-0.043051382989467028,	-0.043101336578602698,	-0.043151290059985463,	
+-0.043201243433489564,	-0.043251196698990552,	-0.043301149856363554,	-0.043351102905484121,	-0.043401055846226493,	-0.043451008678466220,	-0.043500961402078424,	-0.043550914016938676,	
+-0.043600866522921194,	-0.043650818919901545,	-0.043700771207754847,	-0.043750723386356667,	-0.043800675455581237,	-0.043850627415304114,	-0.043900579265400426,	-0.043950531005745731,	
+-0.044000482636214269,	-0.044050434156681598,	-0.044100385567023288,	-0.044150336867113567,	-0.044200288056828005,	-0.044250239136041723,	-0.044300190104630280,	-0.044350140962467928,	
+-0.044400091709430219,	-0.044450042345392279,	-0.044499992870229682,	-0.044549943283816659,	-0.044599893586028776,	-0.044649843776741159,	-0.044699793855829374,	-0.044749743823167661,	
+-0.044799693678631590,	-0.044849643422096283,	-0.044899593053437312,	-0.044949542572528915,	-0.044999491979246665,	-0.045049441273465683,	-0.045099390455061540,	-0.045149339523908476,	
+-0.045199288479882069,	-0.045249237322857877,	-0.045299186052710154,	-0.045349134669314464,	-0.045399083172545936,	-0.045449031562280147,	-0.045498979838391330,	-0.045548928000755072,	
+-0.045598876049246485,	-0.045648823983741156,	-0.045698771804113324,	-0.045748719510238560,	-0.045798667101991999,	-0.045848614579249214,	-0.045898561941884450,	-0.045948509189773279,	
+-0.045998456322790836,	-0.046048403340812692,	-0.046098350243713102,	-0.046148297031367629,	-0.046198243703651866,	-0.046248190260440046,	-0.046298136701607748,	-0.046348083027030113,	
+-0.046398029236582712,	-0.046447975330139793,	-0.046497921307576934,	-0.046547867168769276,	-0.046597812913592392,	-0.046647758541920534,	-0.046697704053629274,	-0.046747649448593762,	
+-0.046797594726689568,	-0.046847539887790939,	-0.046897484931773460,	-0.046947429858512274,	-0.046997374667882952,	-0.047047319359759754,	-0.047097263934018259,	-0.047147208390534039,	
+-0.047197152729181360,	-0.047247096949835803,	-0.047297041052372500,	-0.047346985036667039,	-0.047396928902593671,	-0.047446872650027977,	-0.047496816278845104,	-0.047546759788920638,	
+-0.047596703180128826,	-0.047646646452345252,	-0.047696589605445067,	-0.047746532639303854,	-0.047796475553795861,	-0.047846418348796681,	-0.047896361024181454,	-0.047946303579825766,	
+-0.047996246015603879,	-0.048046188331391376,	-0.048096130527063845,	-0.048146072602495545,	-0.048196014557562068,	-0.048245956392138550,	-0.048295898106100583,	-0.048345839699322428,	
+-0.048395781171679676,	-0.048445722523047470,	-0.048495663753301402,	-0.048545604862315725,	-0.048595545849966046,	-0.048645486716127492,	-0.048695427460675671,	-0.048745368083484841,	
+-0.048795308584430583,	-0.048845248963388058,	-0.048895189220232858,	-0.048945129354839231,	-0.048995069367082790,	-0.049045009256838669,	-0.049094949023982475,	-0.049144888668388460,	
+-0.049194828189932226,	-0.049244767588489363,	-0.049294706863934140,	-0.049344646016142149,	-0.049394585044988538,	-0.049444523950348915,	-0.049494462732097538,	-0.049544401390110002,	
+-0.049594339924261460,	-0.049644278334427513,	-0.049694216620482429,	-0.049744154782301805,	-0.049794092819760792,	-0.049844030732734988,	-0.049893968521098668,	-0.049943906184727424,	
+-0.049993843723496419,	-0.050043781137281237,	-0.050093718425956169,	-0.050143655589396804,	-0.050193592627478738,	-0.050243529540076250,	-0.050293466327064940,	-0.050343402988319963,	
+-0.050393339523716926,	-0.050443275933130090,	-0.050493212216435067,	-0.050543148373507013,	-0.050593084404221535,	-0.050643020308452899,	-0.050692956086076713,	-0.050742891736968131,	
+-0.050792827261002774,	-0.050842762658054895,	-0.050892697928000115,	-0.050942633070713589,	-0.050992568086070930,	-0.051042502973946399,	-0.051092437734215616,	-0.051142372366754174,	
+-0.051192306871436367,	-0.051242241248137789,	-0.051292175496733608,	-0.051342109617099431,	-0.051392043609109539,	-0.051441977472639532,	-0.051491911207564592,	-0.051541844813760306,	
+-0.051591778291100975,	-0.051641711639462191,	-0.051691644858719125,	-0.051741577948747397,	-0.051791510909421280,	-0.051841443740616382,	-0.051891376442207877,	-0.051941309014071381,	
+-0.051991241456081159,	-0.052041173768112840,	-0.052091105950041579,	-0.052141038001743002,	-0.052190969923091385,	-0.052240901713962347,	-0.052290833374231495,	-0.052340764903773117,	
+-0.052390696302462826,	-0.052440627570175792,	-0.052490558706787635,	-0.052540489712172643,	-0.052590420586206416,	-0.052640351328764143,	-0.052690281939721438,	-0.052740212418952583,	
+-0.052790142766333197,	-0.052840072981738449,	-0.052890003065043968,	-0.052939933016124034,	-0.052989862834854268,	-0.053039792521109845,	-0.053089722074766380,	-0.053139651495698173,	
+-0.053189580783780832,	-0.053239509938889984,	-0.053289438960899924,	-0.053339367849686257,	-0.053389296605124176,	-0.053439225227089299,	-0.053489153715455907,	-0.053539082070099636,	
+-0.053589010290895661,	-0.053638938377719603,	-0.053688866330445756,	-0.053738794148949741,	-0.053788721833106741,	-0.053838649382792383,	-0.053888576797880956,	-0.053938504078248087,	
+-0.053988431223768958,	-0.054038358234319191,	-0.054088285109773093,	-0.054138211850006272,	-0.054188138454894376,	-0.054238064924311685,	-0.054287991258133828,	-0.054337917456236000,	
+-0.054387843518493816,	-0.054437769444781584,	-0.054487695234974924,	-0.054537620888949027,	-0.054587546406579521,	-0.054637471787740713,	-0.054687397032308217,	-0.054737322140157231,	
+-0.054787247111163381,	-0.054837171945200977,	-0.054887096642145639,	-0.054937021201872556,	-0.054986945624257363,	-0.055036869909174370,	-0.055086794056499196,	-0.055136718066107482,	
+-0.055186641937873530,	-0.055236565671672976,	-0.055286489267381000,	-0.055336412724873253,	-0.055386336044024022,	-0.055436259224708954,	-0.055486182266803241,	-0.055536105170182516,	
+-0.055586027934721081,	-0.055635950560294578,	-0.055685873046778203,	-0.055735795394047584,	-0.055785717601977036,	-0.055835639670442187,	-0.055885561599318248,	-0.055935483388480846,	
+-0.055985405037804289,	-0.056035326547164220,	-0.056085247916435835,	-0.056135169145494775,	-0.056185090234215349,	-0.056235011182473198,	-0.056284931990143956,	-0.056334852657101947,	
+-0.056384773183222804,	-0.056434693568381732,	-0.056484613812454364,	-0.056534533915315023,	-0.056584453876839344,	-0.056634373696902530,	-0.056684293375380224,	-0.056734212912146746,	
+-0.056784132307077732,	-0.056834051560048386,	-0.056883970670934363,	-0.056933889639609964,	-0.056983808465950837,	-0.057033727149832195,	-0.057083645691129677,	-0.057133564089717599,	
+-0.057183482345471610,	-0.057233400458267365,	-0.057283318427979173,	-0.057333236254482681,	-0.057383153937653100,	-0.057433071477366079,	-0.057482988873495934,	-0.057532906125918319,	
+-0.057582823234508439,	-0.057632740199141941,	-0.057682657019693155,	-0.057732573696037723,	-0.057782490228050855,	-0.057832406615608206,	-0.057882322858584100,	-0.057932238956854183,	
+-0.057982154910293668,	-0.058032070718778216,	-0.058081986382182135,	-0.058131901900381096,	-0.058181817273250738,	-0.058231732500665399,	-0.058281647582500727,	-0.058331562518631939,	
+-0.058381477308934684,	-0.058431391953283292,	-0.058481306451553423,	-0.058531220803620290,	-0.058581135009359540,	-0.058631049068645517,	-0.058680962981353869,	-0.058730876747359814,	
+-0.058780790366539007,	-0.058830703838765784,	-0.058880617163915801,	-0.058930530341864275,	-0.058980443372486868,	-0.059030356255657911,	-0.059080268991253057,	-0.059130181579147532,	
+-0.059180094019216999,	-0.059230006311335792,	-0.059279918455379561,	-0.059329830451223982,	-0.059379742298743383,	-0.059429653997813428,	-0.059479565548309334,	-0.059529476950106776,	
+-0.059579388203080078,	-0.059629299307104908,	-0.059679210262056491,	-0.059729121067810496,	-0.059779031724241254,	-0.059828942231224432,	-0.059878852588635248,	-0.059928762796349386,	
+-0.059978672854241168,	-0.060028582762186269,	-0.060078492520059909,	-0.060128402127737769,	-0.060178311585094173,	-0.060228220892004802,	-0.060278130048345320,	-0.060328039053990076,	
+-0.060377947908814726,	-0.060427856612694508,	-0.060477765165505099,	-0.060527673567120827,	-0.060577581817417368,	-0.060627489916269962,	-0.060677397863554271,	-0.060727305659144644,	
+-0.060777213302916751,	-0.060827120794745823,	-0.060877028134507544,	-0.060926935322076242,	-0.060976842357327608,	-0.061026749240136867,	-0.061076655970379694,	-0.061126562547930439,	
+-0.061176468972664780,	-0.061226375244458384,	-0.061276281363185615,	-0.061326187328722137,	-0.061376093140943194,	-0.061425998799724463,	-0.061475904304940286,	-0.061525809656466354,	
+-0.061575714854177899,	-0.061625619897950595,	-0.061675524787658802,	-0.061725429523178194,	-0.061775334104384010,	-0.061825238531151940,	-0.061875142803356327,	-0.061925046920872862,	
+-0.061974950883576775,	-0.062024854691343750,	-0.062074758344048152,	-0.062124661841565655,	-0.062174565183771950,	-0.062224468370541387,	-0.062274371401749649,	-0.062324274277271989,	
+-0.062374176996984082,	-0.062424079560760293,	-0.062473981968476297,	-0.062523884220007361,	-0.062573786315229141,	-0.062623688254016027,	-0.062673590036243676,	-0.062723491661787367,	
+-0.062773393130522756,	-0.062823294442324235,	-0.062873195597067472,	-0.062923096594627720,	-0.062972997434880662,	-0.063022898117700676,	-0.063072798642963432,	-0.063122699010544209,	
+-0.063172599220318676,	-0.063222499272161198,	-0.063272399165947471,	-0.063322298901553192,	-0.063372198478852726,	-0.063422097897721755,	-0.063471997158035545,	-0.063521896259669794,	
+-0.063571795202498851,	-0.063621693986398414,	-0.063671592611243749,	-0.063721491076910539,	-0.063771389383273161,	-0.063821287530207313,	-0.063871185517588247,	-0.063921083345291660,	
+-0.063970981013191916,	-0.064020878521164726,	-0.064070775869085342,	-0.064120673056829447,	-0.064170570084271447,	-0.064220466951287011,	-0.064270363657751850,	-0.064320260203540328,	
+-0.064370156588528168,	-0.064420052812590611,	-0.064469948875603367,	-0.064519844777440813,	-0.064569740517978647,	-0.064619636097092120,	-0.064669531514656958,	-0.064719426770547511,	
+-0.064769321864639504,	-0.064819216796808188,	-0.064869111566929274,	-0.064919006174877142,	-0.064968900620527500,	-0.065018794903755603,	-0.065068689024437160,	-0.065118582982446549,	
+-0.065168476777659481,	-0.065218370409951654,	-0.065268263879197472,	-0.065318157185272632,	-0.065368050328052388,	-0.065417943307412477,	-0.065467836123227249,	-0.065517728775372430,	
+-0.065567621263723300,	-0.065617513588155554,	-0.065667405748543586,	-0.065717297744763106,	-0.065767189576689367,	-0.065817081244198106,	-0.065866972747163702,	-0.065916864085461865,	
+-0.065966755258967863,	-0.066016646267557419,	-0.066066537111104925,	-0.066116427789486079,	-0.066166318302576160,	-0.066216208650250893,	-0.066266098832384657,	-0.066315988848853188,	
+-0.066365878699532171,	-0.066415768384296026,	-0.066465657903020461,	-0.066515547255580745,	-0.066565436441852602,	-0.066615325461710437,	-0.066665214315029947,	-0.066715103001686427,	
+-0.066764991521555586,	-0.066814879874511832,	-0.066864768060430874,	-0.066914656079187992,	-0.066964543930658912,	-0.067014431614718040,	-0.067064319131241085,	-0.067114206480103328,	
+-0.067164093661180507,	-0.067213980674347001,	-0.067263867519478535,	-0.067313754196450859,	-0.067363640705138353,	-0.067413527045416727,	-0.067463413217161303,	-0.067513299220247777,	
+-0.067563185054550570,	-0.067613070719945392,	-0.067662956216307552,	-0.067712841543512745,	-0.067762726701435405,	-0.067812611689951244,	-0.067862496508935555,	-0.067912381158264062,	
+-0.067962265637811173,	-0.068012149947452624,	-0.068062034087063711,	-0.068111918056520143,	-0.068161801855696341,	-0.068211685484468029,	-0.068261568942710946,	-0.068311452230299496,	
+-0.068361335347109420,	-0.068411218293016010,	-0.068461101067894992,	-0.068510983671620784,	-0.068560866104069113,	-0.068610748365115271,	-0.068660630454635010,	-0.068710512372502724,	
+-0.068760394118594165,	-0.068810275692784612,	-0.068860157094949817,	-0.068910038324964187,	-0.068959919382703461,	-0.069009800268042931,	-0.069059680980858351,	-0.069109561521024127,	
+-0.069159441888415996,	-0.069209322082909697,	-0.069259202104379650,	-0.069309081952701607,	-0.069358961627750862,	-0.069408841129403140,	-0.069458720457532888,	-0.069508599612015817,	
+-0.069558478592727263,	-0.069608357399542950,	-0.069658236032337298,	-0.069708114490986059,	-0.069757992775364541,	-0.069807870885348469,	-0.069857748820812290,	-0.069907626581631729,	
+-0.069957504167682108,	-0.070007381578839165,	-0.070057258814977333,	-0.070107135875972351,	-0.070157012761699528,	-0.070206889472034614,	-0.070256766006852031,	-0.070306642366027544,	
+-0.070356518549436878,	-0.070406394556954480,	-0.070456270388456102,	-0.070506146043817039,	-0.070556021522913057,	-0.070605896825618589,	-0.070655771951809360,	-0.070705646901360719,	
+-0.070755521674148392,	-0.070805396270046825,	-0.070855270688931757,	-0.070905144930678524,	-0.070955018995162863,	-0.071004892882259210,	-0.071054766591843330,	-0.071104640123790544,	
+-0.071154513477976578,	-0.071204386654275906,	-0.071254259652564253,	-0.071304132472717399,	-0.071354005114609778,	-0.071403877578117142,	-0.071453749863114799,	-0.071503621969478542,	
+-0.071553493897082779,	-0.071603365645803274,	-0.071653237215515364,	-0.071703108606094801,	-0.071752979817416018,	-0.071802850849354796,	-0.071852721701786443,	-0.071902592374586724,	
+-0.071952462867630088,	-0.072002333180792299,	-0.072052203313948668,	-0.072102073266974973,	-0.072151943039745647,	-0.072201812632136472,	-0.072251682044023213,	-0.072301551275280290,	
+-0.072351420325783497,	-0.072401289195408156,	-0.072451157884030032,	-0.072501026391523574,	-0.072550894717764547,	-0.072600762862628287,	-0.072650630825990561,	-0.072700498607725816,	
+-0.072750366207709818,	-0.072800233625817903,	-0.072850100861925851,	-0.072899967915908109,	-0.072949834787640444,	-0.072999701476998191,	-0.073049567983857130,	-0.073099434308091710,	
+-0.073149300449577695,	-0.073199166408190436,	-0.073249032183805698,	-0.073298897776297930,	-0.073348763185542940,	-0.073398628411416464,	-0.073448493453792979,	-0.073498358312548265,	
+-0.073548222987557657,	-0.073598087478696936,	-0.073647951785840535,	-0.073697815908864275,	-0.073747679847643466,	-0.073797543602053900,	-0.073847407171970039,	-0.073897270557267650,	
+-0.073947133757822095,	-0.073996996773509141,	-0.074046859604203263,	-0.074096722249780228,	-0.074146584710115385,	-0.074196446985084527,	-0.074246309074562103,	-0.074296170978423906,	
+-0.074346032696545730,	-0.074395894228802037,	-0.074445755575068592,	-0.074495616735220774,	-0.074545477709134347,	-0.074595338496683788,	-0.074645199097744877,	-0.074695059512192963,	
+-0.074744919739903853,	-0.074794779780751997,	-0.074844639634613200,	-0.074894499301362799,	-0.074944358780876588,	-0.074994218073029043,	-0.075044077177695956,	-0.075093936094752664,	
+-0.075143794824074975,	-0.075193653365537363,	-0.075243511719015624,	-0.075293369884385536,	-0.075343227861521589,	-0.075393085650299577,	-0.075442943250594835,	-0.075492800662283185,	
+-0.075542657885239090,	-0.075592514919338355,	-0.075642371764456331,	-0.075692228420468813,	-0.075742084887250288,	-0.075791941164676552,	-0.075841797252622967,	-0.075891653150965327,	
+-0.075941508859578108,	-0.075991364378337117,	-0.076041219707117719,	-0.076091074845795706,	-0.076140929794245582,	-0.076190784552343113,	-0.076240639119963691,	-0.076290493496983122,	
+-0.076340347683275869,	-0.076390201678717740,	-0.076440055483184555,	-0.076489909096550790,	-0.076539762518692253,	-0.076589615749484308,	-0.076639468788802775,	-0.076689321636522118,	
+-0.076739174292518156,	-0.076789026756666254,	-0.076838879028842233,	-0.076888731108920583,	-0.076938582996777097,	-0.076988434692287153,	-0.077038286195326558,	-0.077088137505769816,	
+-0.077137988623492720,	-0.077187839548370663,	-0.077237690280279436,	-0.077287540819093559,	-0.077337391164688810,	-0.077387241316941038,	-0.077437091275724720,	-0.077486941040915677,	
+-0.077536790612389273,	-0.077586639990021342,	-0.077636489173686360,	-0.077686338163260163,	-0.077736186958618114,	-0.077786035559636049,	-0.077835883966188443,	-0.077885732178151132,	
+-0.077935580195399493,	-0.077985428017809347,	-0.078035275645255184,	-0.078085123077612825,	-0.078134970314757676,	-0.078184817356565531,	-0.078234664202910906,	-0.078284510853669609,	
+-0.078334357308717489,	-0.078384203567929037,	-0.078434049631180058,	-0.078483895498345974,	-0.078533741169302590,	-0.078583586643924397,	-0.078633431922087257,	-0.078683277003666521,	
+-0.078733121888538038,	-0.078782966576576310,	-0.078832811067657174,	-0.078882655361656007,	-0.078932499458448629,	-0.078982343357909574,	-0.079032187059914660,	-0.079082030564339281,	
+-0.079131873871059258,	-0.079181716979949121,	-0.079231559890884679,	-0.079281402603741780,	-0.079331245118394941,	-0.079381087434719985,	-0.079430929552592316,	-0.079480771471887757,	
+-0.079530613192480823,	-0.079580454714247365,	-0.079630296037062773,	-0.079680137160802883,	-0.079729978085342199,	-0.079779818810556569,	-0.079829659336321399,	-0.079879499662512524,	
+-0.079929339789004461,	-0.079979179715673032,	-0.080029019442393670,	-0.080078858969042196,	-0.080128698295493128,	-0.080178537421622315,	-0.080228376347305161,	-0.080278215072417516,	
+-0.080328053596833884,	-0.080377891920430114,	-0.080427730043082069,	-0.080477567964664251,	-0.080527405685052511,	-0.080577243204122254,	-0.080627080521749328,	-0.080676917637808265,	
+-0.080726754552174915,	-0.080776591264724668,	-0.080826427775333387,	-0.080876264083875590,	-0.080926100190227140,	-0.080975936094263443,	-0.081025771795860346,	-0.081075607294892368,	
+-0.081125442591235386,	-0.081175277684764791,	-0.081225112575356431,	-0.081274947262884867,	-0.081324781747225919,	-0.081374616028255478,	-0.081424450105848034,	-0.081474283979879478,	
+-0.081524117650225214,	-0.081573951116761093,	-0.081623784379361644,	-0.081673617437902746,	-0.081723450292259803,	-0.081773282942308678,	-0.081823115387923889,	-0.081872947628981327,	
+-0.081922779665356396,	-0.081972611496924946,	-0.082022443123561536,	-0.082072274545142015,	-0.082122105761541803,	-0.082171936772636775,	-0.082221767578301463,	-0.082271598178411731,	
+-0.082321428572843441,	-0.082371258761471139,	-0.082421088744170687,	-0.082470918520817518,	-0.082520748091287496,	-0.082570577455455166,	-0.082620406613196390,	-0.082670235564386588,	
+-0.082720064308901650,	-0.082769892846616108,	-0.082819721177405825,	-0.082869549301146248,	-0.082919377217713239,	-0.082969204926981344,	-0.083019032428826439,	-0.083068859723123945,	
+-0.083118686809749751,	-0.083168513688578388,	-0.083218340359485748,	-0.083268166822347264,	-0.083317993077038799,	-0.083367819123434911,	-0.083417644961411463,	-0.083467470590844361,	
+-0.083517296011608136,	-0.083567121223578664,	-0.083616946226631392,	-0.083666771020642211,	-0.083716595605485639,	-0.083766419981037593,	-0.083816244147173494,	-0.083866068103769217,	
+-0.083915891850699337,	-0.083965715387839729,	-0.084015538715065827,	-0.084065361832253521,	-0.084115184739277371,	-0.084165007436013253,	-0.084214829922336629,	-0.084264652198123360,	
+-0.084314474263248021,	-0.084364296117586501,	-0.084414117761014679,	-0.084463939193407125,	-0.084513760414639719,	-0.084563581424587905,	-0.084613402223127590,	-0.084663222810133332,	
+-0.084713043185481007,	-0.084762863349046078,	-0.084812683300704433,	-0.084862503040330634,	-0.084912322567800583,	-0.084962141882989714,	-0.085011960985773946,	-0.085061779876027824,	
+-0.085111598553627252,	-0.085161417018447691,	-0.085211235270365032,	-0.085261053309253834,	-0.085310871134990002,	-0.085360688747449440,	-0.085410506146506721,	-0.085460323332037721,	
+-0.085510140303917931,	-0.085559957062023212,	-0.085609773606228165,	-0.085659589936408695,	-0.085709406052440235,	-0.085759221954198717,	-0.085809037641558686,	-0.085858853114396075,	
+-0.085908668372586330,	-0.085958483416005343,	-0.086008298244527714,	-0.086058112858029348,	-0.086107927256385691,	-0.086157741439472649,	-0.086207555407164821,	-0.086257369159338113,	
+-0.086307182695868415,	-0.086356996016630314,	-0.086406809121499728,	-0.086456622010352119,	-0.086506434683063405,	-0.086556247139508144,	-0.086606059379562284,	-0.086655871403101256,	
+-0.086705683210001008,	-0.086755494800136099,	-0.086805306173382460,	-0.086855117329615553,	-0.086904928268711296,	-0.086954738990544289,	-0.087004549494990410,	-0.087054359781925175,	
+-0.087104169851224475,	-0.087153979702762910,	-0.087203789336416399,	-0.087253598752060416,	-0.087303407949570866,	-0.087353216928822364,	-0.087403025689690814,	-0.087452834232052148,	
+-0.087502642555780955,	-0.087552450660753151,	-0.087602258546844225,	-0.087652066213930097,	-0.087701873661885352,	-0.087751680890585923,	-0.087801487899907299,	-0.087851294689725398,	
+-0.087901101259914807,	-0.087950907610351473,	-0.088000713740910869,	-0.088050519651468928,	-0.088100325341900237,	-0.088150130812080729,	-0.088199936061885906,	-0.088249741091191672,	
+-0.088299545899872656,	-0.088349350487804762,	-0.088399154854863951,	-0.088448959000924796,	-0.088498762925863242,	-0.088548566629554792,	-0.088598370111875366,	-0.088648173372699562,	
+-0.088697976411903343,	-0.088747779229362167,	-0.088797581824951996,	-0.088847384198547416,	-0.088897186350024388,	-0.088946988279258385,	-0.088996789986125355,	-0.089046591470499911,	
+-0.089096392732257987,	-0.089146193771275084,	-0.089195994587427135,	-0.089245795180588755,	-0.089295595550635889,	-0.089345395697444485,	-0.089395195620889142,	-0.089444995320845808,	
+-0.089494794797189997,	-0.089544594049797629,	-0.089594393078543333,	-0.089644191883303068,	-0.089693990463952308,	-0.089743788820367015,	-0.089793586952421817,	-0.089843384859992645,	
+-0.089893182542955016,	-0.089942980001184877,	-0.089992777234556828,	-0.090042574242946857,	-0.090092371026230439,	-0.090142167584283533,	-0.090191963916980769,	-0.090241760024198106,	
+-0.090291555905811033,	-0.090341351561695510,	-0.090391146991726165,	-0.090440942195778959,	-0.090490737173729838,	-0.090540531925453430,	-0.090590326450825695,	-0.090640120749722136,	
+-0.090689914822018727,	-0.090739708667590083,	-0.090789502286312176,	-0.090839295678060511,	-0.090889088842711033,	-0.090938881780138411,	-0.090988674490218580,	-0.091038466972827053,	
+-0.091088259227839807,	-0.091138051255131469,	-0.091187843054578013,	-0.091237634626054942,	-0.091287425969438216,	-0.091337217084602504,	-0.091387007971423725,	-0.091436798629777882,	
+-0.091486589059539603,	-0.091536379260584846,	-0.091586169232789144,	-0.091635958976028470,	-0.091685748490177438,	-0.091735537775112050,	-0.091785326830707809,	-0.091835115656840702,	
+-0.091884904253385344,	-0.091934692620217751,	-0.091984480757213410,	-0.092034268664248312,	-0.092084056341197096,	-0.092133843787935751,	-0.092183631004339794,	-0.092233417990285199,	
+-0.092283204745646608,	-0.092332991270300008,	-0.092382777564121388,	-0.092432563626985362,	-0.092482349458767946,	-0.092532135059344642,	-0.092581920428591452,	-0.092631705566383005,	
+-0.092681490472595301,	-0.092731275147103873,	-0.092781059589784706,	-0.092830843800512444,	-0.092880627779163061,	-0.092930411525612128,	-0.092980195039735591,	-0.093029978321408135,	
+-0.093079761370505720,	-0.093129544186903918,	-0.093179326770478688,	-0.093229109121104700,	-0.093278891238657943,	-0.093328673123014391,	-0.093378454774048728,	-0.093428236191636926,	
+-0.093478017375654518,	-0.093527798325977518,	-0.093577579042480583,	-0.093627359525039699,	-0.093677139773530427,	-0.093726919787828725,	-0.093776699567809305,	-0.093826479113348113,	
+-0.093876258424320735,	-0.093926037500603160,	-0.093975816342070043,	-0.094025594948597385,	-0.094075373320060732,	-0.094125151456336098,	-0.094174929357298140,	-0.094224707022822859,	
+-0.094274484452785814,	-0.094324261647062993,	-0.094374038605529079,	-0.094423815328060073,	-0.094473591814531965,	-0.094523368064819438,	-0.094573144078798480,	-0.094622919856344676,	
+-0.094672695397334014,	-0.094722470701641165,	-0.094772245769142144,	-0.094822020599712509,	-0.094871795193228262,	-0.094921569549564086,	-0.094971343668595984,	-0.095021117550199527,	
+-0.095070891194250703,	-0.095120664600624225,	-0.095170437769196078,	-0.095220210699841851,	-0.095269983392437529,	-0.095319755846857798,	-0.095369528062978687,	-0.095419300040676197,	
+-0.095469071779825013,	-0.095518843280301149,	-0.095568614541980179,	-0.095618385564738118,	-0.095668156348449648,	-0.095717926892990787,	-0.095767697198237120,	-0.095817467264064635,	
+-0.095867237090348043,	-0.095917006676963359,	-0.095966776023786171,	-0.096016545130692466,	-0.096066313997556968,	-0.096116082624255680,	-0.096165851010664188,	-0.096215619156658508,	
+-0.096265387062113336,	-0.096315154726904703,	-0.096364922150908625,	-0.096414689333999798,	-0.096464456276054253,	-0.096514222976947561,	-0.096563989436555753,	-0.096613755654753525,	
+-0.096663521631416921,	-0.096713287366421499,	-0.096763052859643303,	-0.096812818110957044,	-0.096862583120238738,	-0.096912347887363956,	-0.096962112412208770,	-0.097011876694647850,	
+-0.097061640734557239,	-0.097111404531812523,	-0.097161168086289745,	-0.097210931397863590,	-0.097260694466410128,	-0.097310457291804917,	-0.097360219873924000,	-0.097409982212642104,	
+-0.097459744307835244,	-0.097509506159379464,	-0.097559267767149488,	-0.097609029131021333,	-0.097658790250870597,	-0.097708551126573340,	-0.097758311758004271,	-0.097808072145039407,	
+-0.097857832287554375,	-0.097907592185425191,	-0.097957351838526593,	-0.098007111246734613,	-0.098056870409924848,	-0.098106629327973358,	-0.098156388000754852,	-0.098206146428145374,	
+-0.098255904610020539,	-0.098305662546256375,	-0.098355420236727623,	-0.098405177681310310,	-0.098454934879880496,	-0.098504691832312904,	-0.098554448538483580,	-0.098604204998268136,	
+-0.098653961211542615,	-0.098703717178181757,	-0.098753472898061606,	-0.098803228371057775,	-0.098852983597046321,	-0.098902738575901955,	-0.098952493307500750,	-0.099002247791718304,	
+-0.099052002028430675,	-0.099101756017512616,	-0.099151509758840156,	-0.099201263252288924,	-0.099251016497734976,	-0.099300769495053037,	-0.099350522244119194,	-0.099400274744809475,	
+-0.099450026996998619,	-0.099499779000562713,	-0.099549530755377341,	-0.099599282261318603,	-0.099649033518261210,	-0.099698784526081233,	-0.099748535284654286,	-0.099798285793856453,	
+-0.099848036053562461,	-0.099897786063648381,	-0.099947535823989839,	-0.099997285334462893,	-0.100047034594942280,	-0.100096783605304110,	-0.100146532365423950,	-0.100196280875177910,	
+-0.100246029134440740,	-0.100295777143088490,	-0.100345524900997240,	-0.100395272408041730,	-0.100445019664098050,	-0.100494766669041810,	-0.100544513422749100,	-0.100594259925094660,	
+-0.100644006175954580,	-0.100693752175204470,	-0.100743497922720430,	-0.100793243418377210,	-0.100842988662050880,	-0.100892733653617060,	-0.100942478392951870,	-0.100992222879930040,	
+-0.101041967114427640,	-0.101091711096320330,	-0.101141454825484170,	-0.101191198301793950,	-0.101240941525125740,	-0.101290684495355150,	-0.101340427212358310,	-0.101390169676009960,	
+-0.101439911886186170,	-0.101489653842763050,	-0.101539395545615360,	-0.101589136994619190,	-0.101638878189650160,	-0.101688619130584380,	-0.101738359817296620,	-0.101788100249662950,	
+-0.101837840427559030,	-0.101887580350860960,	-0.101937320019443490,	-0.101987059433182720,	-0.102036798591954290,	-0.102086537495634320,	-0.102136276144097570,	-0.102186014537220120,	
+-0.102235752674877630,	-0.102285490556946200,	-0.102335228183300610,	-0.102384965553816950,	-0.102434702668371320,	-0.102484439526838490,	-0.102534176129094550,	-0.102583912475015180,	
+-0.102633648564476460,	-0.102683384397353190,	-0.102733119973521460,	-0.102782855292856910,	-0.102832590355235690,	-0.102882325160532530,	-0.102932059708623570,	-0.102981793999384450,	
+-0.103031528032691310,	-0.103081261808418880,	-0.103130995326443320,	-0.103180728586640250,	-0.103230461588885810,	-0.103280194333054780,	-0.103329926819023250,	-0.103379659046667360,	
+-0.103429391015861880,	-0.103479122726482910,	-0.103528854178406140,	-0.103578585371507690,	-0.103628316305662310,	-0.103678046980746160,	-0.103727777396634880,	-0.103777507553204600,	
+-0.103827237450330110,	-0.103876967087887530,	-0.103926696465752530,	-0.103976425583801230,	-0.104026154441908420,	-0.104075883039950230,	-0.104125611377802340,	-0.104175339455340850,	
+-0.104225067272440570,	-0.104274794828977630,	-0.104324522124827690,	-0.104374249159866900,	-0.104423975933970040,	-0.104473702447013250,	-0.104523428698872630,	-0.104573154689423010,	
+-0.104622880418540500,	-0.104672605886100780,	-0.104722331091979990,	-0.104772056036052940,	-0.104821780718195740,	-0.104871505138284100,	-0.104921229296194130,	-0.104970953191800640,	
+-0.105020676824979770,	-0.105070400195607220,	-0.105120123303559090,	-0.105169846148710220,	-0.105219568730936740,	-0.105269291050114340,	-0.105319013106119140,	-0.105368734898825980,	
+-0.105418456428110980,	-0.105468177693850280,	-0.105517898695918700,	-0.105567619434192360,	-0.105617339908546980,	-0.105667060118858680,	-0.105716780065002310,	-0.105766499746853970,	
+-0.105816219164289390,	-0.105865938317184700,	-0.105915657205414720,	-0.105965375828855610,	-0.106015094187383040,	-0.106064812280873190,	-0.106114530109200870,	-0.106164247672242220,	
+-0.106213964969872950,	-0.106263682001969210,	-0.106313398768405830,	-0.106363115269058950,	-0.106412831503804720,	-0.106462547472517960,	-0.106512263175074850,	-0.106561978611351070,	
+-0.106611693781222790,	-0.106661408684564830,	-0.106711123321253350,	-0.106760837691164070,	-0.106810551794173130,	-0.106860265630155370,	-0.106909979198986940,	-0.106959692500543570,	
+-0.107009405534701410,	-0.107059118301335300,	-0.107108830800321380,	-0.107158543031535390,	-0.107208254994853480,	-0.107257966690150500,	-0.107307678117302600,	-0.107357389276185950,	
+-0.107407100166675370,	-0.107456810788647050,	-0.107506521141976700,	-0.107556231226540500,	-0.107605941042213270,	-0.107655650588871180,	-0.107705359866389970,	-0.107755068874645810,	
+-0.107804777613513540,	-0.107854486082869310,	-0.107904194282588880,	-0.107953902212548390,	-0.108003609872622710,	-0.108053317262688010,	-0.108103024382620010,	-0.108152731232294890,	
+-0.108202437811587520,	-0.108252144120374020,	-0.108301850158530190,	-0.108351555925932170,	-0.108401261422454810,	-0.108450966647974300,	-0.108500671602366820,	-0.108550376285507220,	
+-0.108600080697271670,	-0.108649784837535910,	-0.108699488706176160,	-0.108749192303067220,	-0.108798895628085310,	-0.108848598681106160,	-0.108898301462005950,	-0.108948003970659550,	
+-0.108997706206943140,	-0.109047408170732470,	-0.109097109861903710,	-0.109146811280331740,	-0.109196512425892750,	-0.109246213298462470,	-0.109295913897917100,	-0.109345614224131500,	
+-0.109395314276981860,	-0.109445014056344380,	-0.109494713562093930,	-0.109544412794106690,	-0.109594111752258420,	-0.109643810436425320,	-0.109693508846482240,	-0.109743206982305390,	
+-0.109792904843770520,	-0.109842602430753850,	-0.109892299743130210,	-0.109941996780775830,	-0.109991693543566460,	-0.110041390031378290,	-0.110091086244086200,	-0.110140782181566410,	
+-0.110190477843694650,	-0.110240173230347140,	-0.110289868341398770,	-0.110339563176725720,	-0.110389257736204200,	-0.110438952019709090,	-0.110488646027116610,	-0.110538339758302500,	
+-0.110588033213143010,	-0.110637726391512970,	-0.110687419293288620,	-0.110737111918345720,	-0.110786804266560480,	-0.110836496337807800,	-0.110886188131963880,	-0.110935879648904490,	
+-0.110985570888505830,	-0.111035261850642800,	-0.111084952535191630,	-0.111134642942028070,	-0.111184333071028350,	-0.111234022922067340,	-0.111283712495021280,	-0.111333401789765950,	
+-0.111383090806177550,	-0.111432779544130970,	-0.111482468003502460,	-0.111532156184168220,	-0.111581844086003130,	-0.111631531708883440,	-0.111681219052684920,	-0.111730906117283810,	
+-0.111780592902554970,	-0.111830279408374660,	-0.111879965634618650,	-0.111929651581163160,	-0.111979337247883120,	-0.112029022634654720,	-0.112078707741353770,	-0.112128392567856490,	
+-0.112178077114037780,	-0.112227761379773890,	-0.112277445364940580,	-0.112327129069414110,	-0.112376812493069370,	-0.112426495635782610,	-0.112476178497430040,	-0.112525861077886590,	
+-0.112575543377028490,	-0.112625225394731520,	-0.112674907130871940,	-0.112724588585324640,	-0.112774269757965880,	-0.112823950648671440,	-0.112873631257317560,	-0.112923311583779160,	
+-0.112972991627932490,	-0.113022671389653340,	-0.113072350868817950,	-0.113122030065301240,	-0.113171708978979460,	-0.113221387609728400,	-0.113271065957424310,	-0.113320744021942130,	
+-0.113370421803158080,	-0.113420099300948420,	-0.113469776515188070,	-0.113519453445753270,	-0.113569130092519840,	-0.113618806455364030,	-0.113668482534160760,	-0.113718158328786290,	
+-0.113767833839116410,	-0.113817509065027400,	-0.113867184006394170,	-0.113916858663092990,	-0.113966533034999650,	-0.114016207121990430,	-0.114065880923940240,	-0.114115554440725350,	
+-0.114165227672221580,	-0.114214900618305180,	-0.114264573278851090,	-0.114314245653735560,	-0.114363917742834860,	-0.114413589546023930,	-0.114463261063179010,	-0.114512932294175960,	
+-0.114562603238891000,	-0.114612273897199110,	-0.114661944268976520,	-0.114711614354099070,	-0.114761284152443040,	-0.114810953663883340,	-0.114860622888296270,	-0.114910291825557630,	
+-0.114959960475543720,	-0.115009628838129460,	-0.115059296913191130,	-0.115108964700604540,	-0.115158632200246000,	-0.115208299411990430,	-0.115257966335714100,	-0.115307632971292870,	
+-0.115357299318603000,	-0.115406965377519430,	-0.115456631147918460,	-0.115506296629676330,	-0.115555961822668040,	-0.115605626726769840,	-0.115655291341857580,	-0.115704955667807520,	
+-0.115754619704494630,	-0.115804283451795190,	-0.115853946909585050,	-0.115903610077740480,	-0.115953272956136440,	-0.116002935544649230,	-0.116052597843154660,	-0.116102259851529050,	
+-0.116151921569647360,	-0.116201582997385850,	-0.116251244134620390,	-0.116300904981227260,	-0.116350565537081420,	-0.116400225802059180,	-0.116449885776036810,	-0.116499545458889270,	
+-0.116549204850492890,	-0.116598863950723480,	-0.116648522759457360,	-0.116698181276569490,	-0.116747839501936170,	-0.116797497435433250,	-0.116847155076937020,	-0.116896812426322470,	
+-0.116946469483465880,	-0.116996126248243130,	-0.117045782720530480,	-0.117095438900202960,	-0.117145094787136830,	-0.117194750381207970,	-0.117244405682292660,	-0.117294060690265920,	
+-0.117343715405004000,	-0.117393369826383250,	-0.117443023954278640,	-0.117492677788566450,	-0.117542331329122590,	-0.117591984575823330,	-0.117641637528543660,	-0.117691290187159900,	
+-0.117740942551547920,	-0.117790594621584030,	-0.117840246397143200,	-0.117889897878101770,	-0.117939549064335570,	-0.117989199955720960,	-0.118038850552132900,	-0.118088500853447710,	
+-0.118138150859541280,	-0.118187800570289910,	-0.118237449985568590,	-0.118287099105253660,	-0.118336747929220970,	-0.118386396457346850,	-0.118436044689506300,	-0.118485692625575650,	
+-0.118535340265431190,	-0.118584987608947950,	-0.118634634656002240,	-0.118684281406469940,	-0.118733927860227390,	-0.118783574017149560,	-0.118833219877112820,	-0.118882865439993000,	
+-0.118932510705666470,	-0.118982155674008230,	-0.119031800344894590,	-0.119081444718201470,	-0.119131088793805160,	-0.119180732571580680,	-0.119230376051404390,	-0.119280019233152150,	
+-0.119329662116700310,	-0.119379304701923860,	-0.119428946988699160,	-0.119478588976902530,	-0.119528230666408980,	-0.119577872057094860,	-0.119627513148836060,	-0.119677153941508910,	
+-0.119726794434988450,	-0.119776434629150980,	-0.119826074523872450,	-0.119875714119029160,	-0.119925353414496140,	-0.119974992410149750,	-0.120024631105865860,	-0.120074269501520850,	
+-0.120123907596989720,	-0.120173545392148830,	-0.120223182886874070,	-0.120272820081041790,	-0.120322456974527020,	-0.120372093567206110,	-0.120421729858955410,	-0.120471365849649930,	
+-0.120521001539166050,	-0.120570636927379670,	-0.120620272014167130,	-0.120669906799403470,	-0.120719541282965040,	-0.120769175464727760,	-0.120818809344567980,	-0.120868442922360740,	
+-0.120918076197982390,	-0.120967709171308850,	-0.121017341842216480,	-0.121066974210580310,	-0.121116606276276710,	-0.121166238039181580,	-0.121215869499171320,	-0.121265500656120930,	
+-0.121315131509906790,	-0.121364762060405270,	-0.121414392307491390,	-0.121464022251041540,	-0.121513651890931630,	-0.121563281227038040,	-0.121612910259235790,	-0.121662538987401270,	
+-0.121712167411410420,	-0.121761795531139570,	-0.121811423346463800,	-0.121861050857259470,	-0.121910678063402510,	-0.121960304964769300,	-0.122009931561234890,	-0.122059557852675640,	
+-0.122109183838967500,	-0.122158809519986850,	-0.122208434895608730,	-0.122258059965709510,	-0.122307684730165160,	-0.122357309188852030,	-0.122406933341645190,	-0.122456557188421020,	
+-0.122506180729055890,	-0.122555803963424870,	-0.122605426891404340,	-0.122655049512870230,	-0.122704671827698950,	-0.122754293835765550,	-0.122803915536946420,	-0.122853536931117500,	
+-0.122903158018155170,	-0.122952778797934510,	-0.123002399270331910,	-0.123052019435223300,	-0.123101639292485080,	-0.123151258841992340,	-0.123200878083621430,	-0.123250497017248330,	
+-0.123300115642749440,	-0.123349733959999800,	-0.123399351968875850,	-0.123448969669253950,	-0.123498587061009180,	-0.123548204144017950,	-0.123597820918156200,	-0.123647437383300350,	
+-0.123697053539325460,	-0.123746669386107940,	-0.123796284923523740,	-0.123845900151449280,	-0.123895515069759610,	-0.123945129678331170,	-0.123994743977039900,	-0.124044357965762210,	
+-0.124093971644373190,	-0.124143585012749230,	-0.124193198070766310,	-0.124242810818300840,	-0.124292423255227910,	-0.124342035381423910,	-0.124391647196765260,	-0.124441258701127060,	
+-0.124490869894385710,	-0.124540480776417190,	-0.124590091347097890,	-0.124639701606302940,	-0.124689311553908740,	-0.124738921189791240,	-0.124788530513826890,	-0.124838139525890780,	
+-0.124887748225859310,	-0.124937356613608480,	-0.124986964689014700,	-0.125036572451953040,	-0.125086179902299980,	-0.125135787039931470,	-0.125185393864723910,	-0.125235000376552440,	
+-0.125284606575293470,	-0.125334212460822990,	-0.125383818033017400,	-0.125433423291751830,	-0.125483028236902720,	-0.125532632868346460,	-0.125582237185958180,	-0.125631841189614320,	
+-0.125681444879190830,	-0.125731048254564190,	-0.125780651315609500,	-0.125830254062203160,	-0.125879856494221200,	-0.125929458611540030,	-0.125979060414034780,	-0.126028661901581850,	
+-0.126078263074057310,	-0.126127863931337510,	-0.126177464473297640,	-0.126227064699814100,	-0.126276664610762900,	-0.126326264206020470,	-0.126375863485461950,	-0.126425462448963770,	
+-0.126475061096402390,	-0.126524659427652900,	-0.126574257442591740,	-0.126623855141094980,	-0.126673452523038990,	-0.126723049588298940,	-0.126772646336751250,	-0.126822242768271980,	
+-0.126871838882737510,	-0.126921434680023010,	-0.126971030160004940,	-0.127020625322559280,	-0.127070220167562500,	-0.127119814694889730,	-0.127169408904417410,	-0.127219002796021580,	
+-0.127268596369578680,	-0.127318189624963860,	-0.127367782562053560,	-0.127417375180724240,	-0.127466967480851040,	-0.127516559462310440,	-0.127566151124978430,	-0.127615742468731470,	
+-0.127665333493444720,	-0.127714924198994630,	-0.127764514585257260,	-0.127814104652109020,	-0.127863694399425080,	-0.127913283827081890,	-0.127962872934955510,	-0.128012461722922380,	
+-0.128062050190857670,	-0.128111638338637810,	-0.128161226166138870,	-0.128210813673237310,	-0.128260400859808280,	-0.128309987725728240,	-0.128359574270873660,	-0.128409160495119720,	
+-0.128458746398342870,	-0.128508331980419140,	-0.128557917241225030,	-0.128607502180635690,	-0.128657086798527610,	-0.128706671094776790,	-0.128756255069259750,	-0.128805838721851610,	
+-0.128855422052428890,	-0.128905005060867610,	-0.128954587747044270,	-0.129004170110834010,	-0.129053752152113320,	-0.129103333870758260,	-0.129152915266645300,	-0.129202496339649610,	
+-0.129252077089647670,	-0.129301657516515570,	-0.129351237620129730,	-0.129400817400365380,	-0.129450396857098970,	-0.129499975990207020,	-0.129549554799564680,	-0.129599133285048460,	
+-0.129648711446534420,	-0.129698289283899010,	-0.129747866797017470,	-0.129797443985766230,	-0.129847020850021390,	-0.129896597389659450,	-0.129946173604555570,	-0.129995749494586250,	
+-0.130045325059627570,	-0.130094900299556030,	-0.130144475214246770,	-0.130194049803576320,	-0.130243624067420770,	-0.130293198005656590,	-0.130342771618158960,	-0.130392344904804420,	
+-0.130441917865469460,	-0.130491490500029260,	-0.130541062808360340,	-0.130590634790338750,	-0.130640206445841010,	-0.130689777774742330,	-0.130739348776919200,	-0.130788919452247690,	
+-0.130838489800604340,	-0.130888059821864300,	-0.130937629515904120,	-0.130987198882599850,	-0.131036767921828060,	-0.131086336633463890,	-0.131135905017383870,	-0.131185473073464120,	
+-0.131235040801581100,	-0.131284608201610030,	-0.131334175273427470,	-0.131383742016909890,	-0.131433308431932520,	-0.131482874518371870,	-0.131532440276104060,	-0.131582005705005560,	
+-0.131631570804951610,	-0.131681135575818760,	-0.131730700017483050,	-0.131780264129821020,	-0.131829827912707890,	-0.131879391366020230,	-0.131928954489634040,	-0.131978517283425940,	
+-0.132028079747271100,	-0.132077641881046040,	-0.132127203684626880,	-0.132176765157890170,	-0.132226326300711100,	-0.132275887112966230,	-0.132325447594531600,	-0.132375007745283820,	
+-0.132424567565098100,	-0.132474127053850920,	-0.132523686211418880,	-0.132573245037677200,	-0.132622803532502390,	-0.132672361695770570,	-0.132721919527358290,	-0.132771477027140760,	
+-0.132821034194994550,	-0.132870591030795760,	-0.132920147534420910,	-0.132969703705745290,	-0.133019259544645390,	-0.133068815050997320,	-0.133118370224677680,	-0.133167925065561660,	
+-0.133217479573525840,	-0.133267033748446310,	-0.133316587590199650,	-0.133366141098661070,	-0.133415694273707140,	-0.133465247115214400,	-0.133514799623058120,	-0.133564351797114840,	
+-0.133613903637260670,	-0.133663455143372190,	-0.133713006315324620,	-0.133762557152994540,	-0.133812107656258090,	-0.133861657824991790,	-0.133911207659070910,	-0.133960757158372000,	
+-0.134010306322771190,	-0.134059855152145080,	-0.134109403646368890,	-0.134158951805319170,	-0.134208499628872100,	-0.134258047116904200,	-0.134307594269290760,	-0.134357141085908320,	
+-0.134406687566633460,	-0.134456233711341440,	-0.134505779519908860,	-0.134555324992211820,	-0.134604870128126890,	-0.134654414927529360,	-0.134703959390295810,	-0.134753503516302330,	
+-0.134803047305425560,	-0.134852590757540690,	-0.134902133872524390,	-0.134951676650252730,	-0.135001219090602310,	-0.135050761193448420,	-0.135100302958667620,	-0.135149844386136090,	
+-0.135199385475730350,	-0.135248926227325730,	-0.135298466640798780,	-0.135348006716025680,	-0.135397546452882990,	-0.135447085851245990,	-0.135496624910991260,	-0.135546163631995450,	
+-0.135595702014133760,	-0.135645240057282850,	-0.135694777761318800,	-0.135744315126118260,	-0.135793852151556480,	-0.135843388837510100,	-0.135892925183855230,	-0.135942461190468490,	
+-0.135991996857225160,	-0.136041532184001830,	-0.136091067170674680,	-0.136140601817120290,	-0.136190136123213960,	-0.136239670088832280,	-0.136289203713851450,	-0.136338736998148020,	
+-0.136388269941597330,	-0.136437802544075950,	-0.136487334805460520,	-0.136536866725626320,	-0.136586398304449940,	-0.136635929541807560,	-0.136685460437575790,	-0.136734990991629950,	
+-0.136784521203846600,	-0.136834051074101990,	-0.136883580602272650,	-0.136933109788233950,	-0.136982638631862470,	-0.137032167133034370,	-0.137081695291626310,	-0.137131223107513580,	
+-0.137180750580572770,	-0.137230277710680110,	-0.137279804497712180,	-0.137329330941544310,	-0.137378857042053100,	-0.137428382799115210,	-0.137477908212605890,	-0.137527433282401830,	
+-0.137576958008379160,	-0.137626482390414560,	-0.137676006428383290,	-0.137725530122162020,	-0.137775053471626910,	-0.137824576476654640,	-0.137874099137120450,	-0.137923621452901020,	
+-0.137973143423872540,	-0.138022665049911650,	-0.138072186330893660,	-0.138121707266695200,	-0.138171227857192460,	-0.138220748102262120,	-0.138270268001779440,	-0.138319787555621100,	
+-0.138369306763663710,	-0.138418825625782640,	-0.138468344141854520,	-0.138517862311755500,	-0.138567380135362290,	-0.138616897612550190,	-0.138666414743195830,	-0.138715931527175460,	
+-0.138765447964365680,	-0.138814964054641830,	-0.138864479797880610,	-0.138913995193958140,	-0.138963510242751160,	-0.139013024944134950,	-0.139062539297986180,	-0.139112053304181050,	
+-0.139161566962596240,	-0.139211080273107080,	-0.139260593235590200,	-0.139310105849921840,	-0.139359618115978660,	-0.139409130033636000,	-0.139458641602770520,	-0.139508152823258870,	
+-0.139557663694976410,	-0.139607174217799780,	-0.139656684391605200,	-0.139706194216269370,	-0.139755703691667590,	-0.139805212817676580,	-0.139854721594172500,	-0.139904230021032080,	
+-0.139953738098130660,	-0.140003245825344870,	-0.140052753202550980,	-0.140102260229625660,	-0.140151766906444210,	-0.140201273232883370,	-0.140250779208819340,	-0.140300284834128820,	
+-0.140349790108687120,	-0.140399295032370950,	-0.140448799605056990,	-0.140498303826620600,	-0.140547807696938450,	-0.140597311215886760,	-0.140646814383342260,	-0.140696317199180240,	
+-0.140745819663277450,	-0.140795321775510130,	-0.140844823535754920,	-0.140894324943887230,	-0.140943825999783720,	-0.140993326703320650,	-0.141042827054374710,	-0.141092327052821240,	
+-0.141141826698536980,	-0.141191325991398110,	-0.141240824931281400,	-0.141290323518062170,	-0.141339821751617160,	-0.141389319631823020,	-0.141438817158555140,	-0.141488314331690210,	
+-0.141537811151104500,	-0.141587307616674710,	-0.141636803728276190,	-0.141686299485785680,	-0.141735794889079390,	-0.141785289938034100,	-0.141834784632525110,	-0.141884278972429170,	
+-0.141933772957622550,	-0.141983266587981910,	-0.142032759863382680,	-0.142082252783701540,	-0.142131745348814790,	-0.142181237558599070,	-0.142230729412929860,	-0.142280220911683820,	
+-0.142329712054737210,	-0.142379202841966780,	-0.142428693273247890,	-0.142478183348457270,	-0.142527673067471630,	-0.142577162430166380,	-0.142626651436418200,	-0.142676140086103410,	
+-0.142725628379098720,	-0.142775116315279480,	-0.142824603894522480,	-0.142874091116703960,	-0.142923577981700660,	-0.142973064489387990,	-0.143022550639642610,	-0.143072036432340900,	
+-0.143121521867359520,	-0.143171006944573910,	-0.143220491663860750,	-0.143269976025096390,	-0.143319460028157510,	-0.143368943672919550,	-0.143418426959259240,	-0.143467909887053300,	
+-0.143517392456177150,	-0.143566874666507500,	-0.143616356517920680,	-0.143665838010293400,	-0.143715319143501080,	-0.143764799917420470,	-0.143814280331927860,	-0.143863760386899990,	
+-0.143913240082212260,	-0.143962719417741470,	-0.144012198393363850,	-0.144061677008956200,	-0.144111155264393890,	-0.144160633159553690,	-0.144210110694311920,	-0.144259587868545310,	
+-0.144309064682129310,	-0.144358541134940620,	-0.144408017226856030,	-0.144457492957750950,	-0.144506968327502150,	-0.144556443335985910,	-0.144605917983079040,	-0.144655392268656900,	
+-0.144704866192596290,	-0.144754339754773500,	-0.144803812955065340,	-0.144853285793347160,	-0.144902758269495810,	-0.144952230383387530,	-0.145001702134899130,	-0.145051173523906040,	
+-0.145100644550284990,	-0.145150115213912360,	-0.145199585514664860,	-0.145249055452417950,	-0.145298525027048430,	-0.145347994238433030,	-0.145397463086447190,	-0.145446931570967690,	
+-0.145496399691870890,	-0.145545867449033500,	-0.145595334842331000,	-0.145644801871640190,	-0.145694268536837370,	-0.145743734837799320,	-0.145793200774401470,	-0.145842666346520630,	
+-0.145892131554033130,	-0.145941596396815730,	-0.145991060874743890,	-0.146040524987694430,	-0.146089988735543630,	-0.146139452118168310,	-0.146188915135443940,	-0.146238377787247240,	
+-0.146287840073454630,	-0.146337301993942850,	-0.146386763548587370,	-0.146436224737264980,	-0.146485685559852470,	-0.146535146016225300,	-0.146584606106260280,	-0.146634065829833740,	
+-0.146683525186822480,	-0.146732984177101950,	-0.146782442800548970,	-0.146831901057039890,	-0.146881358946451490,	-0.146930816468659270,	-0.146980273623539990,	-0.147029730410970030,	
+-0.147079186830826160,	-0.147128642882983910,	-0.147178098567320060,	-0.147227553883710950,	-0.147277008832033400,	-0.147326463412162880,	-0.147375917623976200,	-0.147425371467350190,	
+-0.147474824942160270,	-0.147524278048283330,	-0.147573730785595690,	-0.147623183153974130,	-0.147672635153294210,	-0.147722086783432680,	-0.147771538044265930,	-0.147820988935670780,	
+-0.147870439457522730,	-0.147919889609698570,	-0.147969339392074680,	-0.148018788804527900,	-0.148068237846933680,	-0.148117686519168900,	-0.148167134821109880,	-0.148216582752633470,	
+-0.148266030313615150,	-0.148315477503931790,	-0.148364924323460130,	-0.148414370772075750,	-0.148463816849655430,	-0.148513262556075580,	-0.148562707891213010,	-0.148612152854943220,	
+-0.148661597447143050,	-0.148711041667688920,	-0.148760485516457600,	-0.148809928993324600,	-0.148859372098166800,	-0.148908814830860580,	-0.148958257191282750,	-0.149007699179308840,	
+-0.149057140794815690,	-0.149106582037679680,	-0.149156022907777660,	-0.149205463404985140,	-0.149254903529178970,	-0.149304343280235540,	-0.149353782658031680,	-0.149403221662442910,	
+-0.149452660293346110,	-0.149502098550618110,	-0.149551536434134410,	-0.149600973943771860,	-0.149650411079406880,	-0.149699847840916310,	-0.149749284228175680,	-0.149798720241061830,	
+-0.149848155879451220,	-0.149897591143220630,	-0.149947026032245610,	-0.149996460546403060,	-0.150045894685569340,	-0.150095328449621310,	-0.150144761838434530,	-0.150194194851885840,	
+-0.150243627489851680,	-0.150293059752208890,	-0.150342491638832980,	-0.150391923149600870,	-0.150441354284389400,	-0.150490785043074090,	-0.150540215425531810,	-0.150589645431639000,	
+-0.150639075061272530,	-0.150688504314307910,	-0.150737933190622040,	-0.150787361690091330,	-0.150836789812592660,	-0.150886217558001580,	-0.150935644926194930,	-0.150985071917049210,	
+-0.151034498530441210,	-0.151083924766246550,	-0.151133350624342080,	-0.151182776104604230,	-0.151232201206909860,	-0.151281625931134560,	-0.151331050277155210,	-0.151380474244848660,	
+-0.151429897834090470,	-0.151479321044757560,	-0.151528743876726350,	-0.151578166329873700,	-0.151627588404075200,	-0.151677010099207730,	-0.151726431415147740,	-0.151775852351772130,	
+-0.151825272908956420,	-0.151874693086577530,	-0.151924112884511910,	-0.151973532302636470,	-0.152022951340826720,	-0.152072369998959620,	-0.152121788276911580,	-0.152171206174559540,	
+-0.152220623691778990,	-0.152270040828446920,	-0.152319457584440180,	-0.152368873959634360,	-0.152418289953906360,	-0.152467705567132630,	-0.152517120799190080,	-0.152566535649954260,	
+-0.152615950119302120,	-0.152665364207110130,	-0.152714777913255130,	-0.152764191237612760,	-0.152813604180059930,	-0.152863016740473060,	-0.152912428918729110,	-0.152961840714703650,	
+-0.153011252128273570,	-0.153060663159315350,	-0.153110073807705940,	-0.153159484073320890,	-0.153208893956037150,	-0.153258303455731160,	-0.153307712572279850,	-0.153357121305558810,	
+-0.153406529655444990,	-0.153455937621815250,	-0.153505345204545260,	-0.153554752403511910,	-0.153604159218591660,	-0.153653565649661460,	-0.153702971696596890,	-0.153752377359274910,	
+-0.153801782637571990,	-0.153851187531365040,	-0.153900592040529690,	-0.153949996164942840,	-0.153999399904481030,	-0.154048803259021150,	-0.154098206228438810,	-0.154147608812610970,	
+-0.154197011011414090,	-0.154246412824725120,	-0.154295814252419700,	-0.154345215294374730,	-0.154394615950467160,	-0.154444016220572630,	-0.154493416104568040,	-0.154542815602329940,	
+-0.154592214713735190,	-0.154641613438659510,	-0.154691011776979780,	-0.154740409728572500,	-0.154789807293314650,	-0.154839204471081850,	-0.154888601261751050,	-0.154937997665198720,	
+-0.154987393681301850,	-0.155036789309936060,	-0.155086184550978280,	-0.155135579404305060,	-0.155184973869793300,	-0.155234367947318710,	-0.155283761636758170,	-0.155333154937988660,	
+-0.155382547850885840,	-0.155431940375326650,	-0.155481332511187590,	-0.155530724258345660,	-0.155580115616676480,	-0.155629506586057010,	-0.155678897166363770,	-0.155728287357473710,	
+-0.155777677159262500,	-0.155827066571607110,	-0.155876455594384040,	-0.155925844227470270,	-0.155975232470741470,	-0.156024620324074580,	-0.156074007787346120,	-0.156123394860433110,	
+-0.156172781543211150,	-0.156222167835557260,	-0.156271553737347940,	-0.156320939248460160,	-0.156370324368769600,	-0.156419709098153230,	-0.156469093436488040,	-0.156518477383649660,	
+-0.156567860939515110,	-0.156617244103960880,	-0.156666626876863970,	-0.156716009258100090,	-0.156765391247546180,	-0.156814772845078780,	-0.156864154050574880,	-0.156913534863910160,	
+-0.156962915284961620,	-0.157012295313605780,	-0.157061674949719650,	-0.157111054193178860,	-0.157160433043860490,	-0.157209811501640980,	-0.157259189566397420,	-0.157308567238005430,	
+-0.157357944516342020,	-0.157407321401284220,	-0.157456697892707640,	-0.157506073990489330,	-0.157555449694505830,	-0.157604825004634130,	-0.157654199920749970,	-0.157703574442730280,	
+-0.157752948570451660,	-0.157802322303791100,	-0.157851695642624300,	-0.157901068586828260,	-0.157950441136279570,	-0.157999813290855190,	-0.158049185050430830,	-0.158098556414883550,	
+-0.158147927384089840,	-0.158197297957926780,	-0.158246668136270000,	-0.158296037918996570,	-0.158345407305983480,	-0.158394776297106440,	-0.158444144892242460,	-0.158493513091268110,	
+-0.158542880894060430,	-0.158592248300495090,	-0.158641615310449150,	-0.158690981923799160,	-0.158740348140422150,	-0.158789713960193840,	-0.158839079382991240,	-0.158888444408690930,	
+-0.158937809037169970,	-0.158987173268304030,	-0.159036537101970190,	-0.159085900538044970,	-0.159135263576405450,	-0.159184626216927330,	-0.159233988459487660,	-0.159283350303963430,	
+-0.159332711750230390,	-0.159382072798165600,	-0.159431433447645600,	-0.159480793698547480,	-0.159530153550746900,	-0.159579513004120960,	-0.159628872058546260,	-0.159678230713899780,	
+-0.159727588970057290,	-0.159776946826895830,	-0.159826304284292040,	-0.159875661342122890,	-0.159925018000264150,	-0.159974374258592870,	-0.160023730116985650,	-0.160073085575319550,	
+-0.160122440633470310,	-0.160171795291314950,	-0.160221149548730100,	-0.160270503405592820,	-0.160319856861778850,	-0.160369209917165220,	-0.160418562571629040,	-0.160467914825045970,	
+-0.160517266677293130,	-0.160566618128247130,	-0.160615969177785030,	-0.160665319825782550,	-0.160714670072116790,	-0.160764019916664340,	-0.160813369359302290,	-0.160862718399906370,	
+-0.160912067038353650,	-0.160961415274520760,	-0.161010763108284800,	-0.161060110539521460,	-0.161109457568107850,	-0.161158804193920620,	-0.161208150416836780,	-0.161257496236732160,	
+-0.161306841653483770,	-0.161356186666968740,	-0.161405531277062810,	-0.161454875483643040,	-0.161504219286586060,	-0.161553562685768980,	-0.161602905681067580,	-0.161652248272358880,	
+-0.161701590459519600,	-0.161750932242426760,	-0.161800273620956140,	-0.161849614594984870,	-0.161898955164389540,	-0.161948295329047250,	-0.161997635088833800,	-0.162046974443626260,	
+-0.162096313393301270,	-0.162145651937735950,	-0.162194990076806070,	-0.162244327810388690,	-0.162293665138360940,	-0.162343002060598600,	-0.162392338576978740,	-0.162441674687378050,	
+-0.162491010391673600,	-0.162540345689741180,	-0.162589680581457920,	-0.162639015066700450,	-0.162688349145345860,	-0.162737682817269970,	-0.162787016082349880,	-0.162836348940462230,	
+-0.162885681391484180,	-0.162935013435291460,	-0.162984345071761210,	-0.163033676300770120,	-0.163083007122195260,	-0.163132337535912440,	-0.163181667541798770,	-0.163230997139730940,	
+-0.163280326329586060,	-0.163329655111239920,	-0.163378983484569670,	-0.163428311449452360,	-0.163477639005763840,	-0.163526966153381250,	-0.163576292892181230,	-0.163625619222040890,	
+-0.163674945142836090,	-0.163724270654443920,	-0.163773595756741080,	-0.163822920449604700,	-0.163872244732910570,	-0.163921568606535810,	-0.163970892070357140,	-0.164020215124251690,	
+-0.164069537768095240,	-0.164118860001764980,	-0.164168181825137540,	-0.164217503238090090,	-0.164266824240498460,	-0.164316144832239750,	-0.164365465013191130,	-0.164414784783228410,	
+-0.164464104142228700,	-0.164513423090068780,	-0.164562741626625710,	-0.164612059751775340,	-0.164661377465394830,	-0.164710694767360890,	-0.164760011657550610,	-0.164809328135839900,	
+-0.164858644202105860,	-0.164907959856225220,	-0.164957275098075120,	-0.165006589927531370,	-0.165055904344471150,	-0.165105218348771180,	-0.165154531940308600,	-0.165203845118959250,	
+-0.165253157884600290,	-0.165302470237108870,	-0.165351782176360850,	-0.165401093702233350,	-0.165450404814603130,	-0.165499715513347360,	-0.165549025798341830,	-0.165598335669463750,	
+-0.165647645126589800,	-0.165696954169597200,	-0.165746262798361800,	-0.165795571012760710,	-0.165844878812670710,	-0.165894186197968950,	-0.165943493168531270,	-0.165992799724234860,	
+-0.166042105864956460,	-0.166091411590573250,	-0.166140716900961050,	-0.166190021795997070,	-0.166239326275558460,	-0.166288630339521100,	-0.166337933987762170,	-0.166387237220158410,	
+-0.166436540036586980,	-0.166485842436923770,	-0.166535144421045940,	-0.166584445988830270,	-0.166633747140153910,	-0.166683047874892770,	-0.166732348192923980,	-0.166781648094124320,	
+-0.166830947578371000,	-0.166880246645539850,	-0.166929545295508100,	-0.166978843528152480,	-0.167028141343350200,	-0.167077438740977110,	-0.167126735720910440,	-0.167176032283026910,	
+-0.167225328427203750,	-0.167274624153316840,	-0.167323919461243360,	-0.167373214350860530,	-0.167422508822044210,	-0.167471802874671620,	-0.167521096508619540,	-0.167570389723765150,	
+-0.167619682519984330,	-0.167668974897154320,	-0.167718266855151870,	-0.167767558393854180,	-0.167816849513137190,	-0.167866140212878050,	-0.167915430492953540,	-0.167964720353240920,	
+-0.168014009793616050,	-0.168063298813956180,	-0.168112587414138040,	-0.168161875594038860,	-0.168211163353534590,	-0.168260450692502370,	-0.168309737610819490,	-0.168359024108361820,	
+-0.168408310185006570,	-0.168457595840630580,	-0.168506881075111000,	-0.168556165888323810,	-0.168605450280146200,	-0.168654734250454960,	-0.168704017799127300,	-0.168753300926039180,	
+-0.168802583631067820,	-0.168851865914089990,	-0.168901147774982940,	-0.168950429213622580,	-0.168999710229886140,	-0.169048990823650410,	-0.169098270994792660,	-0.169147550743188800,	
+-0.169196830068716050,	-0.169246108971251670,	-0.169295387450671580,	-0.169344665506853010,	-0.169393943139672790,	-0.169443220349008130,	-0.169492497134735020,	-0.169541773496730640,	
+-0.169591049434871830,	-0.169640324949035830,	-0.169689600039098580,	-0.169738874704937340,	-0.169788148946428910,	-0.169837422763450540,	-0.169886696155878180,	-0.169935969123589080,	
+-0.169985241666460060,	-0.170034513784368370,	-0.170083785477189940,	-0.170133056744802090,	-0.170182327587081540,	-0.170231598003905670,	-0.170280867995150330,	-0.170330137560692820,	
+-0.170379406700410410,	-0.170428675414179050,	-0.170477943701875990,	-0.170527211563378110,	-0.170576478998562600,	-0.170625746007305460,	-0.170675012589483950,	-0.170724278744974920,	
+-0.170773544473655640,	-0.170822809775402040,	-0.170872074650091440,	-0.170921339097600630,	-0.170970603117806930,	-0.171019866710586250,	-0.171069129875815930,	-0.171118392613372780,	
+-0.171167654923134100,	-0.171216916804975830,	-0.171266178258775270,	-0.171315439284409700,	-0.171364699881755090,	-0.171413960050688760,	-0.171463219791087500,	-0.171512479102828630,	
+-0.171561737985788140,	-0.171610996439843290,	-0.171660254464870960,	-0.171709512060748410,	-0.171758769227351670,	-0.171808025964557990,	-0.171857282272244260,	-0.171906538150287750,	
+-0.171955793598564470,	-0.172005048616951710,	-0.172054303205326300,	-0.172103557363565580,	-0.172152811091545540,	-0.172202064389143460,	-0.172251317256236660,	-0.172300569692701130,	
+-0.172349821698414200,	-0.172399073273252680,	-0.172448324417093930,	-0.172497575129813920,	-0.172546825411289990,	-0.172596075261399000,	-0.172645324680018250,	-0.172694573667023730,	
+-0.172743822222292810,	-0.172793070345702320,	-0.172842318037129600,	-0.172891565296450640,	-0.172940812123542760,	-0.172990058518282840,	-0.173039304480548240,	-0.173088550010214920,	
+-0.173137795107160240,	-0.173187039771261510,	-0.173236284002394710,	-0.173285527800437240,	-0.173334771165265940,	-0.173384014096758160,	-0.173433256594789890,	-0.173482498659238480,	
+-0.173531740289980810,	-0.173580981486894240,	-0.173630222249854800,	-0.173679462578739780,	-0.173728702473426120,	-0.173777941933791120,	-0.173827180959710840,	-0.173876419551062620,	
+-0.173925657707723340,	-0.173974895429570340,	-0.174024132716479680,	-0.174073369568328670,	-0.174122605984994270,	-0.174171841966353770,	-0.174221077512283220,	-0.174270312622659990,	
+-0.174319547297361400,	-0.174368781536263530,	-0.174418015339243700,	-0.174467248706178800,	-0.174516481636946250,	-0.174565714131422050,	-0.174614946189483560,	-0.174664177811007710,	
+-0.174713408995871840,	-0.174762639743952040,	-0.174811870055125610,	-0.174861099929269510,	-0.174910329366261110,	-0.174959558365976460,	-0.175008786928292890,	-0.175058015053087380,	
+-0.175107242740237230,	-0.175156469989618560,	-0.175205696801108730,	-0.175254923174585080,	-0.175304149109923670,	-0.175353374607001900,	-0.175402599665696680,	-0.175451824285885430,	
+-0.175501048467444160,	-0.175550272210250270,	-0.175599495514180690,	-0.175648718379112830,	-0.175697940804922740,	-0.175747162791487780,	-0.175796384338684910,	-0.175845605446391520,	
+-0.175894826114483680,	-0.175944046342838780,	-0.175993266131333760,	-0.176042485479846020,	-0.176091704388251640,	-0.176140922856427990,	-0.176190140884252440,	-0.176239358471601130,	
+-0.176288575618351430,	-0.176337792324380270,	-0.176387008589565080,	-0.176436224413781930,	-0.176485439796908200,	-0.176534654738820910,	-0.176583869239397400,	-0.176633083298513770,	
+-0.176682296916047420,	-0.176731510091875350,	-0.176780722825874950,	-0.176829935117922300,	-0.176879146967894810,	-0.176928358375669450,	-0.176977569341123630,	-0.177026779864133450,	
+-0.177075989944576320,	-0.177125199582329220,	-0.177174408777269530,	-0.177223617529273430,	-0.177272825838218240,	-0.177322033703981450,	-0.177371241126439150,	-0.177420448105468730,	
+-0.177469654640947190,	-0.177518860732751940,	-0.177568066380759120,	-0.177617271584846110,	-0.177666476344889940,	-0.177715680660768010,	-0.177764884532356450,	-0.177814087959532690,	
+-0.177863290942173680,	-0.177912493480156890,	-0.177961695573358450,	-0.178010897221655750,	-0.178060098424925820,	-0.178109299183046050,	-0.178158499495892630,	-0.178207699363342940,	
+-0.178256898785274450,	-0.178306097761563280,	-0.178355296292086850,	-0.178404494376722210,	-0.178453692015346750,	-0.178502889207836610,	-0.178552085954069270,	-0.178601282253921690,	
+-0.178650478107271360,	-0.178699673513994410,	-0.178748868473968260,	-0.178798062987069930,	-0.178847257053176890,	-0.178896450672165250,	-0.178945643843912510,	-0.178994836568295650,	
+-0.179044028845192160,	-0.179093220674478140,	-0.179142412056031070,	-0.179191602989728390,	-0.179240793475446280,	-0.179289983513062190,	-0.179339173102453150,	-0.179388362243496610,	
+-0.179437550936068700,	-0.179486739180046930,	-0.179535926975308320,	-0.179585114321730330,	-0.179634301219189110,	-0.179683487667562150,	-0.179732673666726460,	-0.179781859216559510,	
+-0.179831044316937500,	-0.179880228967737870,	-0.179929413168837650,	-0.179978596920114360,	-0.180027780221444140,	-0.180076963072704460,	-0.180126145473772810,	-0.180175327424525360,	
+-0.180224508924839570,	-0.180273689974592530,	-0.180322870573661700,	-0.180372050721923280,	-0.180421230419254700,	-0.180470409665533040,	-0.180519588460635820,	-0.180568766804439170,	
+-0.180617944696820630,	-0.180667122137657200,	-0.180716299126826410,	-0.180765475664204450,	-0.180814651749668790,	-0.180863827383096500,	-0.180913002564365070,	-0.180962177293350710,	
+-0.181011351569930900,	-0.181060525393982710,	-0.181109698765383630,	-0.181158871684009900,	-0.181208044149738980,	-0.181257216162448360,	-0.181306387722014290,	-0.181355558828314250,	
+-0.181404729481225300,	-0.181453899680624970,	-0.181503069426389470,	-0.181552238718396260,	-0.181601407556522490,	-0.181650575940645630,	-0.181699743870641860,	-0.181748911346388760,	
+-0.181798078367763380,	-0.181847244934643240,	-0.181896411046904540,	-0.181945576704424820,	-0.181994741907081180,	-0.182043906654751090,	-0.182093070947310810,	-0.182142234784637870,	
+-0.182191398166609760,	-0.182240561093102720,	-0.182289723563994250,	-0.182338885579161500,	-0.182388047138481970,	-0.182437208241831910,	-0.182486368889088780,	-0.182535529080129770,	
+-0.182584688814832360,	-0.182633848093072790,	-0.182683006914728610,	-0.182732165279676890,	-0.182781323187795190,	-0.182830480638959760,	-0.182879637633048150,	-0.182928794169937430,	
+-0.182977950249505140,	-0.183027105871627570,	-0.183076261036182210,	-0.183125415743046640,	-0.183174569992097110,	-0.183223723783211140,	-0.183272877116265860,	-0.183322029991138840,	
+-0.183371182407706280,	-0.183420334365845790,	-0.183469485865434460,	-0.183518636906349840,	-0.183567787488468190,	-0.183616937611667090,	-0.183666087275823620,	-0.183715236480815390,	
+-0.183764385226518640,	-0.183813533512810910,	-0.183862681339569340,	-0.183911828706671530,	-0.183960975613993690,	-0.184010122061413400,	-0.184059268048807820,	-0.184108413576054510,	
+-0.184157558643029740,	-0.184206703249611050,	-0.184255847395676050,	-0.184304991081100990,	-0.184354134305763470,	-0.184403277069540600,	-0.184452419372309970,	-0.184501561213947870,	
+-0.184550702594331840,	-0.184599843513339080,	-0.184648983970847140,	-0.184698123966732300,	-0.184747263500872140,	-0.184796402573143840,	-0.184845541183424970,	-0.184894679331591790,	
+-0.184943817017521940,	-0.184992954241092520,	-0.185042091002181160,	-0.185091227300664160,	-0.185140363136419070,	-0.185189498509323510,	-0.185238633419253760,	-0.185287767866087440,	
+-0.185336901849701700,	-0.185386035369974140,	-0.185435168426781040,	-0.185484301020000050,	-0.185533433149508260,	-0.185582564815183370,	-0.185631696016901600,	-0.185680826754540620,	
+-0.185729957027977570,	-0.185779086837090050,	-0.185828216181754350,	-0.185877345061848160,	-0.185926473477248580,	-0.185975601427833260,	-0.186024728913478490,	-0.186073855934061920,	
+-0.186122982489461130,	-0.186172108579552440,	-0.186221234204213490,	-0.186270359363321450,	-0.186319484056753970,	-0.186368608284387310,	-0.186417732046099150,	-0.186466855341766660,	
+-0.186515978171267440,	-0.186565100534477860,	-0.186614222431275540,	-0.186663343861537660,	-0.186712464825141840,	-0.186761585321964440,	-0.186810705351883070,	-0.186859824914774930,	
+-0.186908944010517660,	-0.186958062638987620,	-0.187007180800062400,	-0.187056298493619680,	-0.187105415719535760,	-0.187154532477688320,	-0.187203648767954530,	-0.187252764590212060,	
+-0.187301879944337250,	-0.187350994830207730,	-0.187400109247700730,	-0.187449223196693910,	-0.187498336677063560,	-0.187547449688687390,	-0.187596562231442610,	-0.187645674305206840,	
+-0.187694785909856440,	-0.187743897045269090,	-0.187793007711321990,	-0.187842117907892820,	-0.187891227634857910,	-0.187940336892094940,	-0.187989445679481120,	-0.188038553996894090,	
+-0.188087661844210270,	-0.188136769221307320,	-0.188185876128062840,	-0.188234982564353250,	-0.188284088530056210,	-0.188333194025048940,	-0.188382299049209140,	-0.188431403602413140,	
+-0.188480507684538640,	-0.188529611295462860,	-0.188578714435063490,	-0.188627817103216910,	-0.188676919299800770,	-0.188726021024692330,	-0.188775122277769300,	-0.188824223058908000,	
+-0.188873323367986150,	-0.188922423204881010,	-0.188971522569470220,	-0.189020621461630210,	-0.189069719881238630,	-0.189118817828173190,	-0.189167915302310280,	-0.189217012303527580,	
+-0.189266108831702330,	-0.189315204886712270,	-0.189364300468433750,	-0.189413395576744470,	-0.189462490211521730,	-0.189511584372643180,	-0.189560678059985220,	-0.189609771273425570,	
+-0.189658864012841520,	-0.189707956278110710,	-0.189757048069109590,	-0.189806139385715860,	-0.189855230227806790,	-0.189904320595260050,	-0.189953410487952080,	-0.190002499905760600,	
+-0.190051588848563300,	-0.190100677316236590,	-0.190149765308658180,	-0.190198852825705370,	-0.190247939867255830,	-0.190297026433186050,	-0.190346112523373660,	-0.190395198137696040,	
+-0.190444283276030830,	-0.190493367938254470,	-0.190542452124244700,	-0.190591535833878810,	-0.190640619067034500,	-0.190689701823588210,	-0.190738784103417660,	-0.190787865906400150,	
+-0.190836947232413430,	-0.190886028081333900,	-0.190935108453039290,	-0.190984188347406910,	-0.191033267764314510,	-0.191082346703638490,	-0.191131425165256610,	-0.191180503149046580,	
+-0.191229580654884880,	-0.191278657682649230,	-0.191327734232216940,	-0.191376810303465730,	-0.191425885896272070,	-0.191474961010513700,	-0.191524035646067930,	-0.191573109802812500,	
+-0.191622183480623850,	-0.191671256679379760,	-0.191720329398957500,	-0.191769401639234890,	-0.191818473400088310,	-0.191867544681395550,	-0.191916615483033960,	-0.191965685804881240,	
+-0.192014755646813860,	-0.192063825008709610,	-0.192112893890446220,	-0.192161962291900160,	-0.192211030212949220,	-0.192260097653470690,	-0.192309164613342350,	-0.192358231092440660,	
+-0.192407297090643390,	-0.192456362607827890,	-0.192505427643871910,	-0.192554492198651920,	-0.192603556272045700,	-0.192652619863930590,	-0.192701682974184390,	-0.192750745602683520,	
+-0.192799807749305770,	-0.192848869413928540,	-0.192897930596429570,	-0.192946991296685300,	-0.192996051514573580,	-0.193045111249972170,	-0.193094170502757540,	-0.193143229272807470,	
+-0.193192287559999340,	-0.193241345364210950,	-0.193290402685318720,	-0.193339459523200500,	-0.193388515877733650,	-0.193437571748795920,	-0.193486627136263830,	-0.193535682040015170,	
+-0.193584736459927330,	-0.193633790395878050,	-0.193682843847743900,	-0.193731896815402590,	-0.193780949298731580,	-0.193830001297608610,	-0.193879052811910200,	-0.193928103841514180,	
+-0.193977154386297870,	-0.194026204446139130,	-0.194075254020914440,	-0.194124303110501610,	-0.194173351714778450,	-0.194222399833621500,	-0.194271447466908530,	-0.194320494614516950,	
+-0.194369541276324580,	-0.194418587452207910,	-0.194467633142044770,	-0.194516678345712540,	-0.194565723063089060,	-0.194614767294050830,	-0.194663811038475690,	-0.194712854296241020,	
+-0.194761897067224660,	-0.194810939351303090,	-0.194859981148354210,	-0.194909022458255340,	-0.194958063280884390,	-0.195007103616117810,	-0.195056143463833490,	-0.195105182823909230,	
+-0.195154221696221600,	-0.195203260080648420,	-0.195252297977067060,	-0.195301335385355410,	-0.195350372305389990,	-0.195399408737048640,	-0.195448444680208750,	-0.195497480134748190,	
+-0.195546515100543490,	-0.195595549577472520,	-0.195644583565412670,	-0.195693617064241790,	-0.195742650073836450,	-0.195791682594074480,	-0.195840714624833300,	-0.195889746165990750,	
+-0.195938777217423420,	-0.195987807779009120,	-0.196036837850625760,	-0.196085867432149870,	-0.196134896523459310,	-0.196183925124431500,	-0.196232953234944330,	-0.196281980854874330,	
+-0.196331007984099390,	-0.196380034622496900,	-0.196429060769944790,	-0.196478086426319590,	-0.196527111591499160,	-0.196576136265360940,	-0.196625160447782830,	-0.196674184138641380,	
+-0.196723207337814480,	-0.196772230045179570,	-0.196821252260614500,	-0.196870273983995870,	-0.196919295215201550,	-0.196968315954109440,	-0.197017336200596080,	-0.197066355954539420,	
+-0.197115375215816850,	-0.197164393984306270,	-0.197213412259884260,	-0.197262430042428740,	-0.197311447331817130,	-0.197360464127927350,	-0.197409480430635970,	-0.197458496239820900,	
+-0.197507511555359590,	-0.197556526377129920,	-0.197605540705008490,	-0.197654554538873230,	-0.197703567878601580,	-0.197752580724071450,	-0.197801593075159430,	-0.197850604931743420,	
+-0.197899616293700900,	-0.197948627160909770,	-0.197997637533246650,	-0.198046647410589420,	-0.198095656792816020,	-0.198144665679803040,	-0.198193674071428380,	-0.198242681967569560,	
+-0.198291689368104460,	-0.198340696272909710,	-0.198389702681863210,	-0.198438708594842440,	-0.198487714011725350,	-0.198536718932388530,	-0.198585723356709930,	-0.198634727284567020,	
+-0.198683730715837700,	-0.198732733650398650,	-0.198781736088127740,	-0.198830738028902500,	-0.198879739472600870,	-0.198928740419099440,	-0.198977740868276160,	-0.199026740820008960,	
+-0.199075740274174460,	-0.199124739230650630,	-0.199173737689314960,	-0.199222735650045360,	-0.199271733112718480,	-0.199320730077212290,	-0.199369726543404260,	-0.199418722511172350,	
+-0.199467717980393200,	-0.199516712950944780,	-0.199565707422704550,	-0.199614701395550490,	-0.199663694869359230,	-0.199712687844008750,	-0.199761680319376550,	-0.199810672295340580,	
+-0.199859663771777500,	-0.199908654748565260,	-0.199957645225581820,	-0.200006635202703810,	-0.200055624679809220,	-0.200104613656775590,	-0.200153602133480850,	-0.200202590109801680,	
+-0.200251577585616010,	-0.200300564560801420,	-0.200349551035235830,	-0.200398537008795950,	-0.200447522481359720,	-0.200496507452804670,	-0.200545491923008800,	-0.200594475891848760,	
+-0.200643459359202550,	-0.200692442324947680,	-0.200741424788962120,	-0.200790406751122590,	-0.200839388211307040,	-0.200888369169392980,	-0.200937349625258470,	-0.200986329578780150,	
+-0.201035309029835990,	-0.201084287978304020,	-0.201133266424060870,	-0.201182244366984560,	-0.201231221806952630,	-0.201280198743843090,	-0.201329175177532630,	-0.201378151107899220,	
+-0.201427126534820450,	-0.201476101458174270,	-0.201525075877837410,	-0.201574049793687870,	-0.201623023205603210,	-0.201671996113461400,	-0.201720968517139190,	-0.201769940416514550,	
+-0.201818911811465080,	-0.201867882701868730,	-0.201916853087602270,	-0.201965822968543650,	-0.202014792344570930,	-0.202063761215560770,	-0.202112729581391230,	-0.202161697441939850,	
+-0.202210664797084660,	-0.202259631646702380,	-0.202308597990671020,	-0.202357563828868190,	-0.202406529161171860,	-0.202455493987458770,	-0.202504458307606940,	-0.202553422121493990,	
+-0.202602385428997890,	-0.202651348229995420,	-0.202700310524364570,	-0.202749272311982920,	-0.202798233592728560,	-0.202847194366478160,	-0.202896154633109780,	-0.202945114392501460,	
+-0.202994073644529900,	-0.203043032389073150,	-0.203091990626008830,	-0.203140948355214980,	-0.203189905576568320,	-0.203238862289946890,	-0.203287818495228310,	-0.203336774192290600,	
+-0.203385729381010540,	-0.203434684061266140,	-0.203483638232935050,	-0.203532591895895290,	-0.203581545050023600,	-0.203630497695198090,	-0.203679449831296290,	-0.203728401458196320,	
+-0.203777352575774920,	-0.203826303183910120,	-0.203875253282480020,	-0.203924202871361320,	-0.203973151950432140,	-0.204022100519570070,	-0.204071048578653190,	-0.204119996127558240,	
+-0.204168943166163320,	-0.204217889694346010,	-0.204266835711984450,	-0.204315781218955360,	-0.204364726215136790,	-0.204413670700406420,	-0.204462614674642300,	-0.204511558137721230,	
+-0.204560501089521230,	-0.204609443529920000,	-0.204658385458795610,	-0.204707326876024800,	-0.204756267781485670,	-0.204805208175055880,	-0.204854148056613510,	-0.204903087426035330,	
+-0.204952026283199450,	-0.205000964627983890,	-0.205049902460265530,	-0.205098839779922380,	-0.205147776586832170,	-0.205196712880872930,	-0.205245648661921460,	-0.205294583929855890,	
+-0.205343518684553860,	-0.205392452925893450,	-0.205441386653751500,	-0.205490319868006060,	-0.205539252568534840,	-0.205588184755215900,	-0.205637116427926060,	-0.205686047586543460,	
+-0.205734978230945720,	-0.205783908361010990,	-0.205832837976616030,	-0.205881767077638970,	-0.205930695663957970,	-0.205979623735449760,	-0.206028551291992490,	-0.206077478333463850,	
+-0.206126404859741960,	-0.206175330870703610,	-0.206224256366226930,	-0.206273181346189600,	-0.206322105810469780,	-0.206371029758944250,	-0.206419953191491150,	-0.206468876107988140,	
+-0.206517798508313420,	-0.206566720392343720,	-0.206615641759957250,	-0.206664562611031670,	-0.206713482945445120,	-0.206762402763074420,	-0.206811322063797740,	-0.206860240847493160,	
+-0.206909159114037540,	-0.206958076863309030,	-0.207006994095185330,	-0.207055910809544580,	-0.207104827006263620,	-0.207153742685220600,	-0.207202657846293210,	-0.207251572489359630,	
+-0.207300486614296650,	-0.207349400220982470,	-0.207398313309294810,	-0.207447225879111770,	-0.207496137930310240,	-0.207545049462768390,	-0.207593960476363890,	-0.207642870970974950,	
+-0.207691780946478360,	-0.207740690402752340,	-0.207789599339674590,	-0.207838507757123290,	-0.207887415654975260,	-0.207936323033108690,	-0.207985229891401780,	-0.208034136229731330,	
+-0.208083042047975560,	-0.208131947346012170,	-0.208180852123719340,	-0.208229756380973960,	-0.208278660117654200,	-0.208327563333637780,	-0.208376466028802890,	-0.208425368203026370,	
+-0.208474269856186470,	-0.208523170988160870,	-0.208572071598827790,	-0.208620971688064090,	-0.208669871255747960,	-0.208718770301757170,	-0.208767668825969870,	-0.208816566828262970,	
+-0.208865464308514630,	-0.208914361266603090,	-0.208963257702405200,	-0.209012153615799200,	-0.209061049006662780,	-0.209109943874874170,	-0.209158838220310280,	-0.209207732042849290,	
+-0.209256625342368970,	-0.209305518118747540,	-0.209354410371861840,	-0.209403302101590140,	-0.209452193307810200,	-0.209501083990400180,	-0.209549974149237040,	-0.209598863784198950,	
+-0.209647752895163710,	-0.209696641482009500,	-0.209745529544613290,	-0.209794417082853210,	-0.209843304096607560,	-0.209892190585753200,	-0.209941076550168360,	-0.209989961989730830,	
+-0.210038846904318840,	-0.210087731293809280,	-0.210136615158080410,	-0.210185498497010010,	-0.210234381310476280,	-0.210283263598356170,	-0.210332145360527910,	-0.210381026596869270,	
+-0.210429907307258500,	-0.210478787491572530,	-0.210527667149689600,	-0.210576546281487480,	-0.210625424886844440,	-0.210674302965637410,	-0.210723180517744630,	-0.210772057543044320,	
+-0.210820934041413420,	-0.210869810012730200,	-0.210918685456872450,	-0.210967560373718440,	-0.211016434763145080,	-0.211065308625030620,	-0.211114181959252910,	-0.211163054765690170,	
+-0.211211927044219370,	-0.211260798794718730,	-0.211309670017066100,	-0.211358540711139740,	-0.211407410876816610,	-0.211456280513974910,	-0.211505149622492530,	-0.211554018202247730,	
+-0.211602886253117430,	-0.211651753774979910,	-0.211700620767713010,	-0.211749487231194990,	-0.211798353165302820,	-0.211847218569914790,	-0.211896083444909120,	-0.211944947790162820,	
+-0.211993811605554140,	-0.212042674890960930,	-0.212091537646261460,	-0.212140399871332740,	-0.212189261566053000,	-0.212238122730300100,	-0.212286983363952350,	-0.212335843466886690,	
+-0.212384703038981440,	-0.212433562080114410,	-0.212482420590163920,	-0.212531278569006940,	-0.212580136016521790,	-0.212628992932586270,	-0.212677849317078700,	-0.212726705169876100,	
+-0.212775560490856720,	-0.212824415279898870,	-0.212873269536879540,	-0.212922123261677060,	-0.212970976454169240,	-0.213019829114234450,	-0.213068681241749630,	-0.213117532836593100,	
+-0.213166383898642760,	-0.213215234427776870,	-0.213264084423872490,	-0.213312933886807890,	-0.213361782816460930,	-0.213410631212709980,	-0.213459479075432000,	-0.213508326404505320,	
+-0.213557173199807830,	-0.213606019461217850,	-0.213654865188612380,	-0.213703710381869750,	-0.213752555040868260,	-0.213801399165484960,	-0.213850242755598160,	-0.213899085811085770,	
+-0.213947928331826100,	-0.213996770317696150,	-0.214045611768574280,	-0.214094452684338410,	-0.214143293064866820,	-0.214192132910036550,	-0.214240972219725960,	-0.214289810993812950,	
+-0.214338649232175830,	-0.214387486934691670,	-0.214436324101238780,	-0.214485160731695070,	-0.214533996825938930,	-0.214582832383847340,	-0.214631667405298650,	-0.214680501890170820,	
+-0.214729335838342170,	-0.214778169249689730,	-0.214827002124091860,	-0.214875834461426940,	-0.214924666261572000,	-0.214973497524405390,	-0.215022328249805020,	-0.215071158437649290,	
+-0.215119988087815210,	-0.215168817200181160,	-0.215217645774625070,	-0.215266473811025320,	-0.215315301309258940,	-0.215364128269204290,	-0.215412954690739340,	-0.215461780573742430,	
+-0.215510605918090630,	-0.215559430723662320,	-0.215608254990335420,	-0.215657078717988340,	-0.215705901906498100,	-0.215754724555743130,	-0.215803546665601780,	-0.215852368235951140,	
+-0.215901189266669540,	-0.215950009757635010,	-0.215998829708725860,	-0.216047649119819220,	-0.216096467990793460,	-0.216145286321526520,	-0.216194104111896800,	-0.216242921361781390,	
+-0.216291738071058670,	-0.216340554239606600,	-0.216389369867303590,	-0.216438184954026700,	-0.216486999499654360,	-0.216535813504064530,	-0.216584626967135600,	-0.216633439888744670,	
+-0.216682252268770140,	-0.216731064107090390,	-0.216779875403582570,	-0.216828686158125060,	-0.216877496370595830,	-0.216926306040873290,	-0.216975115168834550,	-0.217023923754358030,	
+-0.217072731797321700,	-0.217121539297603970,	-0.217170346255081970,	-0.217219152669634100,	-0.217267958541138340,	-0.217316763869473130,	-0.217365568654515560,	-0.217414372896144070,	
+-0.217463176594236670,	-0.217511979748671730,	-0.217560782359326440,	-0.217609584426079170,	-0.217658385948808370,	-0.217707186927391190,	-0.217755987361706040,	-0.217804787251630910,	
+-0.217853586597044240,	-0.217902385397823200,	-0.217951183653846160,	-0.217999981364991190,	-0.218048778531136690,	-0.218097575152159800,	-0.218146371227938980,	-0.218195166758352240,	
+-0.218243961743278010,	-0.218292756182593440,	-0.218341550076177000,	-0.218390343423906670,	-0.218439136225660910,	-0.218487928481316870,	-0.218536720190753010,	-0.218585511353847380,	
+-0.218634301970478370,	-0.218683092040523190,	-0.218731881563860280,	-0.218780670540368090,	-0.218829458969923780,	-0.218878246852405840,	-0.218927034187692300,	-0.218975820975661570,	
+-0.219024607216190880,	-0.219073392909158670,	-0.219122178054442950,	-0.219170962651922260,	-0.219219746701473710,	-0.219268530202975790,	-0.219317313156306540,	-0.219366095561344450,	
+-0.219414877417966700,	-0.219463658726051750,	-0.219512439485477630,	-0.219561219696122860,	-0.219609999357864630,	-0.219658778470581380,	-0.219707557034151600,	-0.219756335048452520,	
+-0.219805112513362600,	-0.219853889428759890,	-0.219902665794522890,	-0.219951441610528790,	-0.220000216876656110,	-0.220048991592782850,	-0.220097765758787590,	-0.220146539374547450,	
+-0.220195312439940950,	-0.220244084954846210,	-0.220292856919141660,	-0.220341628332704540,	-0.220390399195413370,	-0.220439169507146180,	-0.220487939267781490,	-0.220536708477196530,	
+-0.220585477135269800,	-0.220634245241879830,	-0.220683012796903780,	-0.220731779800220210,	-0.220780546251707200,	-0.220829312151243270,	-0.220878077498705580,	-0.220926842293972750,	
+-0.220975606536922780,	-0.221024370227434240,	-0.221073133365384340,	-0.221121895950651600,	-0.221170657983114140,	-0.221219419462650450,	-0.221268180389137760,	-0.221316940762454640,	
+-0.221365700582479170,	-0.221414459849089890,	-0.221463218562164030,	-0.221511976721580100,	-0.221560734327216240,	-0.221609491378950970,	-0.221658247876661550,	-0.221707003820226510,	
+-0.221755759209524390,	-0.221804514044432440,	-0.221853268324829210,	-0.221902022050592810,	-0.221950775221601780,	-0.221999527837733380,	-0.222048279898866160,	-0.222097031404878240,	
+-0.222145782355648160,	-0.222194532751053220,	-0.222243282590971920,	-0.222292031875282460,	-0.222340780603863310,	-0.222389528776591790,	-0.222438276393346460,	-0.222487023454005420,	
+-0.222535769958447260,	-0.222584515906549240,	-0.222633261298189920,	-0.222682006133247900,	-0.222730750411600430,	-0.222779494133126060,	-0.222828237297702990,	-0.222876979905209740,	
+-0.222925721955523600,	-0.222974463448523170,	-0.223023204384086570,	-0.223071944762092410,	-0.223120684582417930,	-0.223169423844941760,	-0.223218162549542020,	-0.223266900696097310,	
+-0.223315638284484920,	-0.223364375314583450,	-0.223413111786271020,	-0.223461847699426230,	-0.223510583053926400,	-0.223559317849650140,	-0.223608052086475970,	-0.223656785764281270,	
+-0.223705518882944600,	-0.223754251442344120,	-0.223802983442358470,	-0.223851714882864900,	-0.223900445763742070,	-0.223949176084868110,	-0.223997905846121640,	-0.224046635047379980,	
+-0.224095363688521730,	-0.224144091769425070,	-0.224192819289968620,	-0.224241546250029680,	-0.224290272649486870,	-0.224338998488218390,	-0.224387723766102830,	-0.224436448483017550,	
+-0.224485172638841130,	-0.224533896233452240,	-0.224582619266728150,	-0.224631341738547510,	-0.224680063648788540,	-0.224728784997329820,	-0.224777505784048700,	-0.224826226008823850,	
+-0.224874945671533400,	-0.224923664772056050,	-0.224972383310269090,	-0.225021101286051160,	-0.225069818699280500,	-0.225118535549835710,	-0.225167251837594150,	-0.225215967562434450,	
+-0.225264682724234860,	-0.225313397322873980,	-0.225362111358229170,	-0.225410824830179070,	-0.225459537738601950,	-0.225508250083376380,	-0.225556961864379760,	-0.225605673081490740,	
+-0.225654383734587990,	-0.225703093823548810,	-0.225751803348251930,	-0.225800512308575510,	-0.225849220704398250,	-0.225897928535597540,	-0.225946635802051960,	-0.225995342503639810,	
+-0.226044048640239750,	-0.226092754211729110,	-0.226141459217986620,	-0.226190163658890440,	-0.226238867534319320,	-0.226287570844150580,	-0.226336273588262920,	-0.226384975766534570,	
+-0.226433677378844210,	-0.226482378425069240,	-0.226531078905088310,	-0.226579778818780140,	-0.226628478166022050,	-0.226677176946692790,	-0.226725875160670580,	-0.226774572807834110,	
+-0.226823269888060790,	-0.226871966401229280,	-0.226920662347217890,	-0.226969357725905240,	-0.227018052537168780,	-0.227066746780887170,	-0.227115440456938710,	-0.227164133565202070,	
+-0.227212826105554680,	-0.227261518077875200,	-0.227310209482041950,	-0.227358900317933600,	-0.227407590585427560,	-0.227456280284402540,	-0.227504969414737270,	-0.227553657976309140,	
+-0.227602345968996870,	-0.227651033392678700,	-0.227699720247233420,	-0.227748406532538390,	-0.227797092248472330,	-0.227845777394913570,	-0.227894461971740790,	-0.227943145978831420,	
+-0.227991829416064160,	-0.228040512283317370,	-0.228089194580469700,	-0.228137876307398620,	-0.228186557463982860,	-0.228235238050100680,	-0.228283918065630860,	-0.228332597510450820,	
+-0.228381276384439250,	-0.228429954687474540,	-0.228478632419435330,	-0.228527309580199120,	-0.228575986169644640,	-0.228624662187650650,	-0.228673337634094530,	-0.228722012508855100,	
+-0.228770686811810620,	-0.228819360542839860,	-0.228868033701820270,	-0.228916706288630590,	-0.228965378303149140,	-0.229014049745254690,	-0.229062720614824690,	-0.229111390911737880,	
+-0.229160060635872580,	-0.229208729787107570,	-0.229257398365320300,	-0.229306066370389560,	-0.229354733802193620,	-0.229403400660611300,	-0.229452066945520030,	-0.229500732656798600,	
+-0.229549397794325760,	-0.229598062357979000,	-0.229646726347637080,	-0.229695389763178350,	-0.229744052604481580,	-0.229792714871424250,	-0.229841376563885150,	-0.229890037681742570,	
+-0.229938698224875340,	-0.229987358193160930,	-0.230036017586478150,	-0.230084676404705310,	-0.230133334647721200,	-0.230181992315403340,	-0.230230649407630490,	-0.230279305924281000,	
+-0.230327961865233720,	-0.230376617230366070,	-0.230425272019556870,	-0.230473926232684950,	-0.230522579869627760,	-0.230571232930264130,	-0.230619885414472430,	-0.230668537322131440,	
+-0.230717188653118660,	-0.230765839407312930,	-0.230814489584592580,	-0.230863139184836450,	-0.230911788207922050,	-0.230960436653728170,	-0.231009084522133200,	-0.231057731813015950,	
+-0.231106378526253930,	-0.231155024661725970,	-0.231203670219310460,	-0.231252315198886200,	-0.231300959600330700,	-0.231349603423522810,	-0.231398246668341360,	-0.231446889334663840,	
+-0.231495531422369120,	-0.231544172931335560,	-0.231592813861442010,	-0.231641454212565990,	-0.231690093984586310,	-0.231738733177381420,	-0.231787371790830120,	-0.231836009824809950,	
+-0.231884647279199770,	-0.231933284153877980,	-0.231981920448723400,	-0.232030556163613590,	-0.232079191298427380,	-0.232127825853043200,	-0.232176459827339890,	-0.232225093221195000,	
+-0.232273726034487370,	-0.232322358267095440,	-0.232370989918898010,	-0.232419620989772700,	-0.232468251479598350,	-0.232516881388253770,	-0.232565510715616600,	-0.232614139461565620,	
+-0.232662767625979290,	-0.232711395208736490,	-0.232760022209714760,	-0.232808648628792970,	-0.232857274465849560,	-0.232905899720763390,	-0.232954524393412050,	-0.233003148483674400,	
+-0.233051771991428870,	-0.233100394916554350,	-0.233149017258928420,	-0.233197639018429940,	-0.233246260194937350,	-0.233294880788329550,	-0.233343500798484120,	-0.233392120225279940,	
+-0.233440739068595890,	-0.233489357328309550,	-0.233537975004299820,	-0.233586592096445170,	-0.233635208604624440,	-0.233683824528715280,	-0.233732439868596570,	-0.233781054624146750,	
+-0.233829668795244690,	-0.233878282381768080,	-0.233926895383595730,	-0.233975507800606160,	-0.234024119632678250,	-0.234072730879689610,	-0.234121341541519120,	-0.234169951618045300,	
+-0.234218561109147020,	-0.234267170014701900,	-0.234315778334588890,	-0.234364386068686840,	-0.234412993216873390,	-0.234461599779027450,	-0.234510205755027540,	-0.234558811144752520,	
+-0.234607415948080040,	-0.234656020164889040,	-0.234704623795057990,	-0.234753226838465810,	-0.234801829294990110,	-0.234850431164509850,	-0.234899032446903520,	-0.234947633142050030,	
+-0.234996233249827050,	-0.235044832770113450,	-0.235093431702787790,	-0.235142030047728990,	-0.235190627804814640,	-0.235239224973923770,	-0.235287821554934830,	-0.235336417547726750,	
+-0.235385012952177200,	-0.235433607768165130,	-0.235482201995569460,	-0.235530795634267850,	-0.235579388684139250,	-0.235627981145062200,	-0.235676573016915610,	-0.235725164299577160,	
+-0.235773754992925800,	-0.235822345096840050,	-0.235870934611198870,	-0.235919523535879920,	-0.235968111870762160,	-0.236016699615724130,	-0.236065286770644780,	-0.236113873335401760,	
+-0.236162459309874090,	-0.236211044693940250,	-0.236259629487479250,	-0.236308213690368720,	-0.236356797302487680,	-0.236405380323715050,	-0.236453962753928580,	-0.236502544593007180,	
+-0.236551125840829410,	-0.236599706497274270,	-0.236648286562219420,	-0.236696866035543850,	-0.236745444917126120,	-0.236794023206845230,	-0.236842600904578810,	-0.236891178010205930,	
+-0.236939754523605080,	-0.236988330444655280,	-0.237036905773234250,	-0.237085480509220900,	-0.237134054652493900,	-0.237182628202932180,	-0.237231201160413440,	-0.237279773524816720,	
+-0.237328345296020980,	-0.237376916473903960,	-0.237425487058344630,	-0.237474057049221620,	-0.237522626446413860,	-0.237571195249799110,	-0.237619763459256390,	-0.237668331074664230,	
+-0.237716898095901710,	-0.237765464522846500,	-0.237814030355377630,	-0.237862595593373670,	-0.237911160236713660,	-0.237959724285275310,	-0.238008287738937670,	-0.238056850597579310,	
+-0.238105412861079250,	-0.238153974529315220,	-0.238202535602166250,	-0.238251096079511370,	-0.238299655961228350,	-0.238348215247196150,	-0.238396773937293440,	-0.238445332031399200,	
+-0.238493889529391210,	-0.238542446431148520,	-0.238591002736549710,	-0.238639558445473800,	-0.238688113557798560,	-0.238736668073403050,	-0.238785221992165870,	-0.238833775313966070,	
+-0.238882328038681400,	-0.238930880166190910,	-0.238979431696373200,	-0.239027982629107380,	-0.239076532964271140,	-0.239125082701743570,	-0.239173631841403310,	-0.239222180383129400,	
+-0.239270728326799580,	-0.239319275672292970,	-0.239367822419488590,	-0.239416368568264230,	-0.239464914118498930,	-0.239513459070071380,	-0.239562003422860580,	-0.239610547176744350,	
+-0.239659090331601770,	-0.239707632887311450,	-0.239756174843752470,	-0.239804716200802630,	-0.239853256958341000,	-0.239901797116246230,	-0.239950336674397390,	-0.239998875632672280,	
+-0.240047413990949980,	-0.240095951749109170,	-0.240144488907028890,	-0.240193025464586960,	-0.240241561421662450,	-0.240290096778134480,	-0.240338631533880850,	-0.240387165688780630,	
+-0.240435699242712490,	-0.240484232195555540,	-0.240532764547187580,	-0.240581296297487700,	-0.240629827446334600,	-0.240678357993607340,	-0.240726887939183760,	-0.240775417282942970,	
+-0.240823946024763620,	-0.240872474164524840,	-0.240921001702104450,	-0.240969528637381580,	-0.241018054970234850,	-0.241066580700543430,	-0.241115105828185130,	-0.241163630353039060,	
+-0.241212154274984350,	-0.241260677593898830,	-0.241309200309661580,	-0.241357722422151370,	-0.241406243931247270,	-0.241454764836827120,	-0.241503285138770060,	-0.241551804836954820,	
+-0.241600323931260460,	-0.241648842421564870,	-0.241697360307747190,	-0.241745877589686080,	-0.241794394267260740,	-0.241842910340348970,	-0.241891425808829910,	-0.241939940672582290,	
+-0.241988454931485270,	-0.242036968585416650,	-0.242085481634255640,	-0.242133994077880920,	-0.242182505916171630,	-0.242231017149005660,	-0.242279527776262130,	-0.242328037797820220,	
+-0.242376547213557810,	-0.242425056023353990,	-0.242473564227087550,	-0.242522071824637640,	-0.242570578815882090,	-0.242619085200700140,	-0.242667590978970420,	-0.242716096150572190,	
+-0.242764600715383280,	-0.242813104673282880,	-0.242861608024149720,	-0.242910110767862950,	-0.242958612904300490,	-0.243007114433341470,	-0.243055615354864700,	-0.243104115668749290,	
+-0.243152615374873180,	-0.243201114473115540,	-0.243249612963355540,	-0.243298110845471070,	-0.243346608119341310,	-0.243395104784845050,	-0.243443600841861450,	-0.243492096290268410,	
+-0.243540591129945140,	-0.243589085360770400,	-0.243637578982623370,	-0.243686071995381950,	-0.243734564398925350,	-0.243783056193132370,	-0.243831547377882150,	-0.243880037953052630,	
+-0.243928527918523040,	-0.243977017274172120,	-0.244025506019879070,	-0.244073994155521830,	-0.244122481680979640,	-0.244170968596131630,	-0.244219454900855780,	-0.244267940595031320,	
+-0.244316425678536980,	-0.244364910151252030,	-0.244413394013054340,	-0.244461877263823210,	-0.244510359903437340,	-0.244558841931776020,	-0.244607323348717180,	-0.244655804154140010,	
+-0.244704284347923350,	-0.244752763929946380,	-0.244801242900087090,	-0.244849721258224710,	-0.244898199004238010,	-0.244946676138006250,	-0.244995152659407360,	-0.245043628568320570,	
+-0.245092103864625150,	-0.245140578548199070,	-0.245189052618921520,	-0.245237526076671350,	-0.245285998921327770,	-0.245334471152768770,	-0.245382942770873610,	-0.245431413775521080,	
+-0.245479884166590450,	-0.245528353943959690,	-0.245576823107508030,	-0.245625291657114300,	-0.245673759592657800,	-0.245722226914016460,	-0.245770693621069540,	-0.245819159713695920,	
+-0.245867625191774800,	-0.245916090055184190,	-0.245964554303803370,	-0.246013017937511150,	-0.246061480956186820,	-0.246109943359708370,	-0.246158405147955030,	-0.246206866320806160,	
+-0.246255326878139640,	-0.246303786819834840,	-0.246352246145770560,	-0.246400704855826070,	-0.246449162949879420,	-0.246497620427809840,	-0.246546077289496230,	-0.246594533534817860,	
+-0.246642989163652710,	-0.246691444175880100,	-0.246739898571378870,	-0.246788352350028330,	-0.246836805511706480,	-0.246885258056292610,	-0.246933709983665590,	-0.246982161293704730,	
+-0.247030611986288030,	-0.247079062061294820,	-0.247127511518604380,	-0.247175960358094720,	-0.247224408579645170,	-0.247272856183134580,	-0.247321303168442310,	-0.247369749535446330,	
+-0.247418195284025980,	-0.247466640414060140,	-0.247515084925428120,	-0.247563528818007970,	-0.247611972091679010,	-0.247660414746320110,	-0.247708856781810590,	-0.247757298198028520,	
+-0.247805738994853200,	-0.247854179172163510,	-0.247902618729838820,	-0.247951057667757160,	-0.247999495985797850,	-0.248047933683840230,	-0.248096370761762360,	-0.248144807219443540,	
+-0.248193243056762710,	-0.248241678273599190,	-0.248290112869831050,	-0.248338546845337650,	-0.248386980199997860,	-0.248435412933691060,	-0.248483845046295310,	-0.248532276537689920,	
+-0.248580707407753840,	-0.248629137656366430,	-0.248677567283405760,	-0.248725996288751170,	-0.248774424672281590,	-0.248822852433876360,	-0.248871279573413570,	-0.248919706090772600,	
+-0.248968131985832340,	-0.249016557258472190,	-0.249064981908570240,	-0.249113405936005810,	-0.249161829340658310,	-0.249210252122405800,	-0.249258674281127630,	-0.249307095816702820,	
+-0.249355516729010680,	-0.249403937017929320,	-0.249452356683338120,	-0.249500775725116030,	-0.249549194143142420,	-0.249597611937295400,	-0.249646029107454370,	-0.249694445653498240,	
+-0.249742861575306450,	-0.249791276872757070,	-0.249839691545729490,	-0.249888105594102680,	-0.249936519017756040,	-0.249984931816567670,	-0.250033343990416990,	-0.250081755539183330,	
+-0.250130166462744890,	-0.250178576760981040,	-0.250226986433770730,	-0.250275395480993370,	-0.250323803902527120,	-0.250372211698251360,	-0.250420618868045060,	-0.250469025411787620,	
+-0.250517431329357220,	-0.250565836620633250,	-0.250614241285494640,	-0.250662645323820930,	-0.250711048735490110,	-0.250759451520381700,	-0.250807853678374660,	-0.250856255209348400,	
+-0.250904656113181080,	-0.250953056389752130,	-0.251001456038940970,	-0.251049855060625720,	-0.251098253454685840,	-0.251146651221000330,	-0.251195048359448670,	-0.251243444869908910,	
+-0.251291840752260520,	-0.251340236006382560,	-0.251388630632154440,	-0.251437024629454280,	-0.251485417998161600,	-0.251533810738155340,	-0.251582202849314980,	-0.251630594331518740,	
+-0.251678985184645930,	-0.251727375408575700,	-0.251775765003187490,	-0.251824153968359440,	-0.251872542303970940,	-0.251920930009901120,	-0.251969317086029430,	-0.252017703532234020,	
+-0.252066089348394310,	-0.252114474534389790,	-0.252162859090098720,	-0.252211243015400430,	-0.252259626310174120,	-0.252308008974299110,	-0.252356391007653670,	-0.252404772410117220,	
+-0.252453153181568910,	-0.252501533321888070,	-0.252549912830953020,	-0.252598291708643170,	-0.252646669954837590,	-0.252695047569415740,	-0.252743424552255900,	-0.252791800903237440,	
+-0.252840176622239510,	-0.252888551709141540,	-0.252936926163821800,	-0.252985299986159710,	-0.253033673176034810,	-0.253082045733325320,	-0.253130417657910720,	-0.253178788949670050,	
+-0.253227159608482850,	-0.253275529634227280,	-0.253323899026782930,	-0.253372267786028840,	-0.253420635911844490,	-0.253469003404108110,	-0.253517370262699220,	-0.253565736487496920,	
+-0.253614102078380750,	-0.253662467035228820,	-0.253710831357920770,	-0.253759195046335650,	-0.253807558100352940,	-0.253855920519850900,	-0.253904282304709070,	-0.253952643454806950,	
+-0.254001003970022840,	-0.254049363850236190,	-0.254097723095326130,	-0.254146081705172170,	-0.254194439679652610,	-0.254242797018646940,	-0.254291153722034310,	-0.254339509789694160,	
+-0.254387865221504860,	-0.254436220017345840,	-0.254484574177096360,	-0.254532927700635790,	-0.254581280587842520,	-0.254629632838596020,	-0.254677984452775450,	-0.254726335430260350,	
+-0.254774685770928990,	-0.254823035474660900,	-0.254871384541335620,	-0.254919732970831480,	-0.254968080763028020,	-0.255016427917804380,	-0.255064774435040050,	-0.255113120314613360,	
+-0.255161465556403900,	-0.255209810160290760,	-0.255258154126153550,	-0.255306497453870460,	-0.255354840143321220,	-0.255403182194384790,	-0.255451523606940900,	-0.255499864380867750,	
+-0.255548204516044930,	-0.255596544012351600,	-0.255644882869667300,	-0.255693221087870400,	-0.255741558666840450,	-0.255789895606456650,	-0.255838231906598490,	-0.255886567567144290,	
+-0.255934902587973740,	-0.255983236968966300,	-0.256031570710000380,	-0.256079903810955520,	-0.256128236271710890,	-0.256176568092146120,	-0.256224899272139480,	-0.256273229811570640,	
+-0.256321559710318670,	-0.256369888968263240,	-0.256418217585282720,	-0.256466545561256590,	-0.256514872896064120,	-0.256563199589584840,	-0.256611525641697200,	-0.256659851052280730,	
+-0.256708175821214630,	-0.256756499948378510,	-0.256804823433650740,	-0.256853146276910860,	-0.256901468478038570,	-0.256949790036912210,	-0.256998110953411350,	-0.257046431227415220,	
+-0.257094750858803400,	-0.257143069847454330,	-0.257191388193247550,	-0.257239705896062320,	-0.257288022955778240,	-0.257336339372273680,	-0.257384655145428300,	-0.257432970275121240,	
+-0.257481284761232170,	-0.257529598603639500,	-0.257577911802222840,	-0.257626224356861390,	-0.257674536267434750,	-0.257722847533821410,	-0.257771158155900960,	-0.257819468133553000,	
+-0.257867777466655960,	-0.257916086155089490,	-0.257964394198732740,	-0.258012701597465480,	-0.258061008351166080,	-0.258109314459714080,	-0.258157619922988860,	-0.258205924740869950,	
+-0.258254228913235850,	-0.258302532439966200,	-0.258350835320940160,	-0.258399137556037490,	-0.258447439145136570,	-0.258495740088116990,	-0.258544040384858120,	-0.258592340035239570,	
+-0.258640639039139700,	-0.258688937396438280,	-0.258737235107014460,	-0.258785532170748010,	-0.258833828587517360,	-0.258882124357202040,	-0.258930419479681870,	-0.258978713954835240,	
+-0.259027007782541840,	-0.259075300962680890,	-0.259123593495132140,	-0.259171885379773980,	-0.259220176616486110,	-0.259268467205147730,	-0.259316757145638680,	-0.259365046437837310,	
+-0.259413335081623290,	-0.259461623076875980,	-0.259509910423474990,	-0.259558197121298790,	-0.259606483170227160,	-0.259654768570139250,	-0.259703053320914920,	-0.259751337422432450,	
+-0.259799620874571700,	-0.259847903677212280,	-0.259896185830232720,	-0.259944467333512670,	-0.259992748186931470,	-0.260041028390368800,	-0.260089307943703110,	-0.260137586846814210,	
+-0.260185865099581300,	-0.260234142701884160,	-0.260282419653601270,	-0.260330695954612280,	-0.260378971604796560,	-0.260427246604033880,	-0.260475520952202610,	-0.260523794649182570,	
+-0.260572067694853030,	-0.260620340089093790,	-0.260668611831783190,	-0.260716882922801150,	-0.260765153362027270,	-0.260813423149340080,	-0.260861692284619360,	-0.260909960767744360,	
+-0.260958228598594970,	-0.261006495777049490,	-0.261054762302987850,	-0.261103028176289220,	-0.261151293396833520,	-0.261199557964499120,	-0.261247821879165840,	-0.261296085140713010,	
+-0.261344347749020380,	-0.261392609703966490,	-0.261440871005431060,	-0.261489131653293410,	-0.261537391647433390,	-0.261585650987729460,	-0.261633909674061420,	-0.261682167706309030,	
+-0.261730425084350790,	-0.261778681808066460,	-0.261826937877335460,	-0.261875193292037510,	-0.261923448052051140,	-0.261971702157256180,	-0.262019955607532000,	-0.262068208402758300,	
+-0.262116460542813680,	-0.262164712027577910,	-0.262212962856930350,	-0.262261213030750780,	-0.262309462548917790,	-0.262357711411311150,	-0.262405959617810210,	-0.262454207168294820,	
+-0.262502454062643440,	-0.262550700300735960,	-0.262598945882451750,	-0.262647190807670570,	-0.262695435076271020,	-0.262743678688132860,	-0.262791921643135920,	-0.262840163941158720,	
+-0.262888405582081150,	-0.262936646565782580,	-0.262984886892142780,	-0.263033126561040390,	-0.263081365572355120,	-0.263129603925966520,	-0.263177841621754280,	-0.263226078659597020,	
+-0.263274315039374540,	-0.263322550760966280,	-0.263370785824252110,	-0.263419020229110510,	-0.263467253975421370,	-0.263515487063064100,	-0.263563719491918540,	-0.263611951261863210,	
+-0.263660182372778050,	-0.263708412824542830,	-0.263756642617036190,	-0.263804871750137950,	-0.263853100223727490,	-0.263901328037684730,	-0.263949555191888230,	-0.263997781686217790,	
+-0.264046007520552960,	-0.264094232694773500,	-0.264142457208758060,	-0.264190681062386470,	-0.264238904255538140,	-0.264287126788093020,	-0.264335348659929640,	-0.264383569870927870,	
+-0.264431790420967210,	-0.264480010309927520,	-0.264528229537687340,	-0.264576448104126560,	-0.264624666009125150,	-0.264672883252561610,	-0.264721099834315850,	-0.264769315754267380,	
+-0.264817531012295990,	-0.264865745608280410,	-0.264913959542100400,	-0.264962172813635540,	-0.265010385422765670,	-0.265058597369369430,	-0.265106808653326640,	-0.265155019274516850,	
+-0.265203229232819970,	-0.265251438528114560,	-0.265299647160280590,	-0.265347855129197450,	-0.265396062434745120,	-0.265444269076802240,	-0.265492475055248640,	-0.265540680369963870,	
+-0.265588885020827840,	-0.265637089007719150,	-0.265685292330517740,	-0.265733494989103540,	-0.265781696983355130,	-0.265829898313152510,	-0.265878098978375170,	-0.265926298978902960,	
+-0.265974498314614620,	-0.266022696985390050,	-0.266070894991108700,	-0.266119092331650540,	-0.266167289006894240,	-0.266215485016719710,	-0.266263680361006450,	-0.266311875039634440,	
+-0.266360069052482270,	-0.266408262399430000,	-0.266456455080357040,	-0.266504647095143320,	-0.266552838443667620,	-0.266601029125809800,	-0.266649219141449840,	-0.266697408490466410,	
+-0.266745597172739430,	-0.266793785188148500,	-0.266841972536573550,	-0.266890159217893160,	-0.266938345231987450,	-0.266986530578735840,	-0.267034715258018310,	-0.267082899269713630,	
+-0.267131082613701660,	-0.267179265289861970,	-0.267227447298074570,	-0.267275628638218130,	-0.267323809310172580,	-0.267371989313817560,	-0.267420168649032950,	-0.267468347315697520,	
+-0.267516525313691190,	-0.267564702642894000,	-0.267612879303184610,	-0.267661055294443060,	-0.267709230616548830,	-0.267757405269381970,	-0.267805579252821170,	-0.267853752566746370,	
+-0.267901925211037280,	-0.267950097185573720,	-0.267998268490234560,	-0.268046439124899670,	-0.268094609089448710,	-0.268142778383761660,	-0.268190947007717230,	-0.268239114961195460,	
+-0.268287282244075890,	-0.268335448856238500,	-0.268383614797562060,	-0.268431780067926620,	-0.268479944667212140,	-0.268528108595297410,	-0.268576271852062400,	-0.268624434437386650,	
+-0.268672596351150320,	-0.268720757593232000,	-0.268768918163511840,	-0.268817078061869390,	-0.268865237288184620,	-0.268913395842336370,	-0.268961553724204610,	-0.269009710933668990,	
+-0.269057867470609500,	-0.269106023334904910,	-0.269154178526435250,	-0.269202333045080180,	-0.269250486890719680,	-0.269298640063232560,	-0.269346792562498830,	-0.269394944388398060,	
+-0.269443095540810420,	-0.269491246019614610,	-0.269539395824690660,	-0.269587544955918690,	-0.269635693413177390,	-0.269683841196346860,	-0.269731988305306760,	-0.269780134739937120,	
+-0.269828280500116650,	-0.269876425585725550,	-0.269924569996643330,	-0.269972713732750170,	-0.270020856793924740,	-0.270068999180047230,	-0.270117140890997140,	-0.270165281926654680,	
+-0.270213422286898600,	-0.270261561971608940,	-0.270309700980665370,	-0.270357839313948020,	-0.270405976971335620,	-0.270454113952708240,	-0.270502250257946050,	-0.270550385886927760,	
+-0.270598520839533560,	-0.270646655115643010,	-0.270694788715136300,	-0.270742921637892150,	-0.270791053883790710,	-0.270839185452711630,	-0.270887316344535000,	-0.270935446559139700,	
+-0.270983576096405720,	-0.271031704956212870,	-0.271079833138441140,	-0.271127960642969400,	-0.271176087469677750,	-0.271224213618445900,	-0.271272339089153940,	-0.271320463881680740,	
+-0.271368587995906350,	-0.271416711431710920,	-0.271464834188973270,	-0.271512956267573550,	-0.271561077667391400,	-0.271609198388307050,	-0.271657318430199250,	-0.271705437792948150,	
+-0.271753556476433400,	-0.271801674480535270,	-0.271849791805132470,	-0.271897908450105250,	-0.271946024415333220,	-0.271994139700696580,	-0.272042254306074090,	-0.272090368231346020,	
+-0.272138481476392080,	-0.272186594041092300,	-0.272234705925325620,	-0.272282817128972180,	-0.272330927651911690,	-0.272379037494024310,	-0.272427146655188910,	-0.272475255135285640,	
+-0.272523362934194660,	-0.272571470051794830,	-0.272619576487966360,	-0.272667682242588970,	-0.272715787315542750,	-0.272763891706706620,	-0.272811995415960800,	-0.272860098443184980,	
+-0.272908200788259340,	-0.272956302451062780,	-0.273004403431475470,	-0.273052503729377120,	-0.273100603344647970,	-0.273148702277166870,	-0.273196800526814050,	-0.273244898093469190,	
+-0.273292994977012480,	-0.273341091177322910,	-0.273389186694280580,	-0.273437281527765750,	-0.273485375677657240,	-0.273533469143835360,	-0.273581561926179770,	-0.273629654024570680,	
+-0.273677745438887070,	-0.273725836169009030,	-0.273773926214816440,	-0.273822015576189460,	-0.273870104253007010,	-0.273918192245149350,	-0.273966279552496140,	-0.274014366174927690,	
+-0.274062452112322890,	-0.274110537364561980,	-0.274158621931524680,	-0.274206705813091310,	-0.274254789009140690,	-0.274302871519553130,	-0.274350953344208840,	-0.274399034482986690,	
+-0.274447114935766960,	-0.274495194702429500,	-0.274543273782854420,	-0.274591352176920770,	-0.274639429884508680,	-0.274687506905498090,	-0.274735583239769100,	-0.274783658887200740,	
+-0.274831733847673290,	-0.274879808121066440,	-0.274927881707260510,	-0.274975954606134440,	-0.275024026817568550,	-0.275072098341442530,	-0.275120169177636710,	-0.275168239326030020,	
+-0.275216308786502720,	-0.275264377558935120,	-0.275312445643206120,	-0.275360513039196010,	-0.275408579746784620,	-0.275456645765852210,	-0.275504711096277780,	-0.275552775737941570,	
+-0.275600839690723350,	-0.275648902954503560,	-0.275696965529161010,	-0.275745027414576070,	-0.275793088610628570,	-0.275841149117198760,	-0.275889208934165690,	-0.275937268061409560,	
+-0.275985326498810250,	-0.276033384246248070,	-0.276081441303602020,	-0.276129497670752340,	-0.276177553347578930,	-0.276225608333962040,	-0.276273662629780700,	-0.276321716234915250,	
+-0.276369769149245880,	-0.276417821372651700,	-0.276465872905012950,	-0.276513923746209530,	-0.276561973896121750,	-0.276610023354628590,	-0.276658072121610370,	-0.276706120196946960,	
+-0.276754167580518680,	-0.276802214272204530,	-0.276850260271884860,	-0.276898305579439560,	-0.276946350194748890,	-0.276994394117691940,	-0.277042437348149040,	-0.277090479886000000,	
+-0.277138521731125190,	-0.277186562883403650,	-0.277234603342715710,	-0.277282643108941680,	-0.277330682181960660,	-0.277378720561652860,	-0.277426758247898310,	-0.277474795240577280,	
+-0.277522831539568860,	-0.277570867144753320,	-0.277618902056010640,	-0.277666936273221090,	-0.277714969796263810,	-0.277763002625019070,	-0.277811034759366860,	-0.277859066199187490,	
+-0.277907096944360050,	-0.277955126994764820,	-0.278003156350281780,	-0.278051185010791290,	-0.278099212976172410,	-0.278147240246305490,	-0.278195266821070930,	-0.278243292700347700,	
+-0.278291317884016290,	-0.278339342371956620,	-0.278387366164048970,	-0.278435389260172470,	-0.278483411660207510,	-0.278531433364034020,	-0.278579454371532420,	-0.278627474682581700,	
+-0.278675494297062290,	-0.278723513214854170,	-0.278771531435837720,	-0.278819548959891970,	-0.278867565786897360,	-0.278915581916733820,	-0.278963597349281780,	-0.279011612084420320,	
+-0.279059626122029840,	-0.279107639461990240,	-0.279155652104182030,	-0.279203664048484230,	-0.279251675294777290,	-0.279299685842941570,	-0.279347695692856220,	-0.279395704844401630,	
+-0.279443713297457760,	-0.279491721051905060,	-0.279539728107622620,	-0.279587734464490810,	-0.279635740122389730,	-0.279683745081199700,	-0.279731749340799920,	-0.279779752901070710,	
+-0.279827755761892170,	-0.279875757923144620,	-0.279923759384707260,	-0.279971760146460520,	-0.280019760208284400,	-0.280067759570059250,	-0.280115758231664290,	-0.280163756192979950,	
+-0.280211753453886660,	-0.280259750014263510,	-0.280307745873991040,	-0.280355741032949190,	-0.280403735491018380,	-0.280451729248077870,	-0.280499722304007990,	-0.280547714658688830,	
+-0.280595706312000760,	-0.280643697263823040,	-0.280691687514036060,	-0.280739677062519900,	-0.280787665909154940,	-0.280835654053820380,	-0.280883641496396660,	-0.280931628236763880,	
+-0.280979614274802450,	-0.281027599610391590,	-0.281075584243411670,	-0.281123568173743290,	-0.281171551401265480,	-0.281219533925858860,	-0.281267515747403330,	-0.281315496865779500,	
+-0.281363477280866470,	-0.281411456992544770,	-0.281459436000694450,	-0.281507414305195940,	-0.281555391905928430,	-0.281603368802772480,	-0.281651344995608120,	-0.281699320484315780,	
+-0.281747295268774730,	-0.281795269348865450,	-0.281843242724468030,	-0.281891215395462860,	-0.281939187361729290,	-0.281987158623147720,	-0.282035129179598660,	-0.282083099030961400,	
+-0.282131068177116360,	-0.282179036617943630,	-0.282227004353323820,	-0.282274971383136010,	-0.282322937707260750,	-0.282370903325578180,	-0.282418868237968750,	-0.282466832444311760,	
+-0.282514795944487700,	-0.282562758738376610,	-0.282610720825859030,	-0.282658682206814280,	-0.282706642881122790,	-0.282754602848664720,	-0.282802562109320530,	-0.282850520662969510,	
+-0.282898478509492230,	-0.282946435648768760,	-0.282994392080679560,	-0.283042347805104010,	-0.283090302821922550,	-0.283138257131015810,	-0.283186210732262970,	-0.283234163625544600,	
+-0.283282115810740810,	-0.283330067287732190,	-0.283378018056397950,	-0.283425968116618690,	-0.283473917468274490,	-0.283521866111245970,	-0.283569814045412320,	-0.283617761270654080,	
+-0.283665707786851520,	-0.283713653593885060,	-0.283761598691634090,	-0.283809543079979080,	-0.283857486758800240,	-0.283905429727978110,	-0.283953371987391960,	-0.284001313536922370,	
+-0.284049254376449960,	-0.284097194505853970,	-0.284145133925015000,	-0.284193072633813220,	-0.284241010632129140,	-0.284288947919842110,	-0.284336884496832750,	-0.284384820362981130,	
+-0.284432755518167930,	-0.284480689962272380,	-0.284528623695175120,	-0.284576556716756300,	-0.284624489026896520,	-0.284672420625475100,	-0.284720351512372570,	-0.284768281687469200,	
+-0.284816211150645590,	-0.284864139901781000,	-0.284912067940756020,	-0.284959995267451360,	-0.285007921881746230,	-0.285055847783521330,	-0.285103772972656820,	-0.285151697449033290,	
+-0.285199621212530060,	-0.285247544263027790,	-0.285295466600406720,	-0.285343388224547360,	-0.285391309135329060,	-0.285439229332632550,	-0.285487148816337970,	-0.285535067586325910,	
+-0.285582985642475750,	-0.285630902984668140,	-0.285678819612783300,	-0.285726735526701800,	-0.285774650726303090,	-0.285822565211467710,	-0.285870478982075900,	-0.285918392038008340,	
+-0.285966304379144390,	-0.286014216005364640,	-0.286062126916549810,	-0.286110037112579210,	-0.286157946593333550,	-0.286205855358693030,	-0.286253763408538250,	-0.286301670742748650,	
+-0.286349577361204920,	-0.286397483263787170,	-0.286445388450376200,	-0.286493292920851290,	-0.286541196675093200,	-0.286589099712982080,	-0.286637002034398620,	-0.286684903639222280,	
+-0.286732804527333630,	-0.286780704698613000,	-0.286828604152941040,	-0.286876502890197120,	-0.286924400910261950,	-0.286972298213016230,	-0.287020194798339350,	-0.287068090666111940,	
+-0.287115985816214280,	-0.287163880248527130,	-0.287211773962929850,	-0.287259666959303110,	-0.287307559237527210,	-0.287355450797482870,	-0.287403341639049460,	-0.287451231762107680,	
+-0.287499121166537810,	-0.287547009852220590,	-0.287594897819035410,	-0.287642785066862970,	-0.287690671595583590,	-0.287738557405077980,	-0.287786442495225500,	-0.287834326865906930,	
+-0.287882210517002970,	-0.287930093448393100,	-0.287977975659957920,	-0.288025857151577860,	-0.288073737923133570,	-0.288121617974504530,	-0.288169497305571400,	-0.288217375916214550,	
+-0.288265253806314680,	-0.288313130975751230,	-0.288361007424404960,	-0.288408883152156240,	-0.288456758158885660,	-0.288504632444472770,	-0.288552506008798340,	-0.288600378851742610,	
+-0.288648250973186360,	-0.288696122373009070,	-0.288743993051091440,	-0.288791863007314300,	-0.288839732241557070,	-0.288887600753700460,	-0.288935468543624900,	-0.288983335611211090,	
+-0.289031201956338520,	-0.289079067578887900,	-0.289126932478739660,	-0.289174796655774500,	-0.289222660109871910,	-0.289270522840912700,	-0.289318384848777140,	-0.289366246133346050,	
+-0.289414106694498960,	-0.289461966532116590,	-0.289509825646079240,	-0.289557684036267860,	-0.289605541702561750,	-0.289653398644841850,	-0.289701254862988420,	-0.289749110356882280,	
+-0.289796965126402960,	-0.289844819171431180,	-0.289892672491847800,	-0.289940525087532370,	-0.289988376958365550,	-0.290036228104227860,	-0.290084078524999960,	-0.290131928220561440,	
+-0.290179777190793130,	-0.290227625435575400,	-0.290275472954789000,	-0.290323319748313490,	-0.290371165816029670,	-0.290419011157817930,	-0.290466855773559130,	-0.290514699663132760,	
+-0.290562542826419580,	-0.290610385263300130,	-0.290658226973655060,	-0.290706067957364030,	-0.290753908214307850,	-0.290801747744367340,	-0.290849586547421990,	-0.290897424623352660,	
+-0.290945261972039850,	-0.290993098593364250,	-0.291040934487205470,	-0.291088769653444380,	-0.291136604091961350,	-0.291184437802637250,	-0.291232270785351630,	-0.291280103039985310,	
+-0.291327934566418760,	-0.291375765364532800,	-0.291423595434206980,	-0.291471424775322170,	-0.291519253387758800,	-0.291567081271397740,	-0.291614908426118590,	-0.291662734851802110,	
+-0.291710560548329220,	-0.291758385515579530,	-0.291806209753433850,	-0.291854033261772670,	-0.291901856040476800,	-0.291949678089425900,	-0.291997499408500780,	-0.292045319997581930,	
+-0.292093139856550170,	-0.292140958985285190,	-0.292188777383667770,	-0.292236595051578400,	-0.292284411988897990,	-0.292332228195506140,	-0.292380043671283670,	-0.292427858416111130,	
+-0.292475672429869380,	-0.292523485712438020,	-0.292571298263697930,	-0.292619110083529590,	-0.292666921171813920,	-0.292714731528430470,	-0.292762541153260280,	-0.292810350046184110,	
+-0.292858158207081610,	-0.292905965635833760,	-0.292953772332321010,	-0.293001578296424200,	-0.293049383528023070,	-0.293097188026998470,	-0.293144991793230840,	-0.293192794826601210,	
+-0.293240597126989190,	-0.293288398694275640,	-0.293336199528341110,	-0.293383999629066470,	-0.293431798996331480,	-0.293479597630016910,	-0.293527395530003400,	-0.293575192696171830,	
+-0.293622989128401790,	-0.293670784826574330,	-0.293718579790570370,	-0.293766374020269450,	-0.293814167515552670,	-0.293861960276300400,	-0.293909752302393690,	-0.293957543593712180,	
+-0.294005334150136800,	-0.294053123971548090,	-0.294100913057827040,	-0.294148701408853240,	-0.294196489024507680,	-0.294244275904670890,	-0.294292062049223870,	-0.294339847458046260,	
+-0.294387632131018980,	-0.294435416068022650,	-0.294483199268938230,	-0.294530981733645390,	-0.294578763462025050,	-0.294626544453958250,	-0.294674324709324700,	-0.294722104228005320,	
+-0.294769883009880660,	-0.294817661054831700,	-0.294865438362738210,	-0.294913214933481100,	-0.294960990766940930,	-0.295008765862998730,	-0.295056540221534210,	-0.295104313842428300,	
+-0.295152086725561650,	-0.295199858870815180,	-0.295247630278068660,	-0.295295400947203020,	-0.295343170878098920,	-0.295390940070637320,	-0.295438708524697890,	-0.295486476240161780,	
+-0.295534243216909850,	-0.295582009454821880,	-0.295629774953778900,	-0.295677539713661450,	-0.295725303734350630,	-0.295773067015726090,	-0.295820829557668920,	-0.295868591360059610,	
+-0.295916352422779310,	-0.295964112745707660,	-0.296011872328725780,	-0.296059631171714190,	-0.296107389274553930,	-0.296155146637124780,	-0.296202903259307760,	-0.296250659140983530,	
+-0.296298414282033020,	-0.296346168682336040,	-0.296393922341773700,	-0.296441675260226520,	-0.296489427437575560,	-0.296537178873700620,	-0.296584929568482760,	-0.296632679521803000,	
+-0.296680428733541060,	-0.296728177203578080,	-0.296775924931794670,	-0.296823671918071850,	-0.296871418162289460,	-0.296919163664328520,	-0.296966908424069640,	-0.297014652441393910,	
+-0.297062395716181150,	-0.297110138248312390,	-0.297157880037668300,	-0.297205621084129960,	-0.297253361387577080,	-0.297301100947890810,	-0.297348839764951800,	-0.297396577838641150,	
+-0.297444315168838570,	-0.297492051755425260,	-0.297539787598282200,	-0.297587522697289280,	-0.297635257052327520,	-0.297682990663277640,	-0.297730723530020670,	-0.297778455652436550,	
+-0.297826187030406200,	-0.297873917663810440,	-0.297921647552530310,	-0.297969376696445580,	-0.298017105095437440,	-0.298064832749386550,	-0.298112559658174010,	-0.298160285821679640,	
+-0.298208011239784580,	-0.298255735912369420,	-0.298303459839315390,	-0.298351183020502290,	-0.298398905455811210,	-0.298446627145123320,	-0.298494348088318430,	-0.298542068285277680,	
+-0.298589787735881740,	-0.298637506440011750,	-0.298685224397547580,	-0.298732941608370330,	-0.298780658072360760,	-0.298828373789399910,	-0.298876088759367780,	-0.298923802982145380,	
+-0.298971516457613500,	-0.299019229185653210,	-0.299066941166144460,	-0.299114652398968340,	-0.299162362884005610,	-0.299210072621137410,	-0.299257781610243580,	-0.299305489851205250,	
+-0.299353197343903250,	-0.299400904088218680,	-0.299448610084031450,	-0.299496315331222620,	-0.299544019829673490,	-0.299591723579263890,	-0.299639426579874910,	-0.299687128831387430,	
+-0.299734830333682530,	-0.299782531086640160,	-0.299830231090141400,	-0.299877930344067120,	-0.299925628848298430,	-0.299973326602715200,	-0.300021023607198680,	-0.300068719861629580,	
+-0.300116415365889180,	-0.300164110119857220,	-0.300211804123415080,	-0.300259497376443360,	-0.300307189878823320,	-0.300354881630434940,	-0.300402572631159330,	-0.300450262880877670,	
+-0.300497952379469970,	-0.300545641126817360,	-0.300593329122800680,	-0.300641016367301120,	-0.300688702860198550,	-0.300736388601374250,	-0.300784073590708970,	-0.300831757828083910,	
+-0.300879441313379010,	-0.300927124046475590,	-0.300974806027254290,	-0.301022487255596440,	-0.301070167731381900,	-0.301117847454491990,	-0.301165526424807430,	-0.301213204642209520,	
+-0.301260882106578140,	-0.301308558817794560,	-0.301356234775740030,	-0.301403909980294430,	-0.301451584431339130,	-0.301499258128754830,	-0.301546931072422810,	-0.301594603262223040,	
+-0.301642274698036730,	-0.301689945379744750,	-0.301737615307228370,	-0.301785284480367510,	-0.301832952899043440,	-0.301880620563136970,	-0.301928287472529370,	-0.301975953627100670,	
+-0.302023619026732030,	-0.302071283671304370,	-0.302118947560698900,	-0.302166610694795670,	-0.302214273073475930,	-0.302261934696620880,	-0.302309595564110630,	-0.302357255675826330,	
+-0.302404915031648960,	-0.302452573631459660,	-0.302500231475138550,	-0.302547888562566810,	-0.302595544893625390,	-0.302643200468195480,	-0.302690855286157190,	-0.302738509347391770,	
+-0.302786162651780040,	-0.302833815199203380,	-0.302881466989541710,	-0.302929118022676410,	-0.302976768298488300,	-0.303024417816858680,	-0.303072066577667610,	-0.303119714580796340,	
+-0.303167361826125860,	-0.303215008313537320,	-0.303262654042910860,	-0.303310299014127760,	-0.303357943227069380,	-0.303405586681615660,	-0.303453229377648010,	-0.303500871315047270,	
+-0.303548512493694740,	-0.303596152913470580,	-0.303643792574256000,	-0.303691431475931920,	-0.303739069618379710,	-0.303786707001479420,	-0.303834343625112360,	-0.303881979489159400,	
+-0.303929614593501930,	-0.303977248938020030,	-0.304024882522594960,	-0.304072515347107720,	-0.304120147411439610,	-0.304167778715470680,	-0.304215409259082360,	-0.304263039042155900,	
+-0.304310668064571410,	-0.304358296326210250,	-0.304405923826953360,	-0.304453550566682110,	-0.304501176545276530,	-0.304548801762618000,	-0.304596426218587510,	-0.304644049913066370,	
+-0.304691672845934620,	-0.304739295017073750,	-0.304786916426364630,	-0.304834537073688630,	-0.304882156958925900,	-0.304929776081957700,	-0.304977394442665140,	-0.305025012040929470,	
+-0.305072628876630890,	-0.305120244949650680,	-0.305167860259870300,	-0.305215474807169870,	-0.305263088591430750,	-0.305310701612533930,	-0.305358313870360720,	-0.305405925364791330,	
+-0.305453536095707130,	-0.305501146062989120,	-0.305548755266518590,	-0.305596363706175820,	-0.305643971381842130,	-0.305691578293398490,	-0.305739184440726340,	-0.305786789823705770,	
+-0.305834394442218270,	-0.305881998296144760,	-0.305929601385366680,	-0.305977203709764220,	-0.306024805269218710,	-0.306072406063611190,	-0.306120006092823080,	-0.306167605356734480,	
+-0.306215203855226940,	-0.306262801588181810,	-0.306310398555479200,	-0.306357994757000650,	-0.306405590192627090,	-0.306453184862239990,	-0.306500778765719460,	-0.306548371902947040,	
+-0.306595964273803650,	-0.306643555878170770,	-0.306691146715928620,	-0.306738736786958570,	-0.306786326091141700,	-0.306833914628359410,	-0.306881502398491930,	-0.306929089401420720,	
+-0.306976675637026740,	-0.307024261105191540,	-0.307071845805795220,	-0.307119429738719310,	-0.307167012903845240,	-0.307214595301053220,	-0.307262176930224670,	-0.307309757791240760,	
+-0.307357337883982780,	-0.307404917208331130,	-0.307452495764167110,	-0.307500073551371880,	-0.307547650569826910,	-0.307595226819412370,	-0.307642802300009790,	-0.307690377011500150,	
+-0.307737950953765050,	-0.307785524126684580,	-0.307833096530140350,	-0.307880668164013380,	-0.307928239028185170,	-0.307975809122535920,	-0.308023378446947160,	-0.308070947001300330,	
+-0.308118514785475750,	-0.308166081799354900,	-0.308213648042818810,	-0.308261213515749030,	-0.308308778218025830,	-0.308356342149530670,	-0.308403905310144610,	-0.308451467699749240,	
+-0.308499029318224820,	-0.308546590165452770,	-0.308594150241314260,	-0.308641709545690810,	-0.308689268078462640,	-0.308736825839511290,	-0.308784382828717900,	-0.308831939045964010,	
+-0.308879494491129780,	-0.308927049164096860,	-0.308974603064746280,	-0.309022156192959640,	-0.309069708548617210,	-0.309117260131600460,	-0.309164810941791050,	-0.309212360979069120,	
+-0.309259910243316340,	-0.309307458734413730,	-0.309355006452242950,	-0.309402553396684210,	-0.309450099567619100,	-0.309497644964928710,	-0.309545189588494640,	-0.309592733438197150,	
+-0.309640276513917900,	-0.309687818815537920,	-0.309735360342938800,	-0.309782901096000870,	-0.309830441074605670,	-0.309877980278634390,	-0.309925518707968580,	-0.309973056362488510,	
+-0.310020593242075870,	-0.310068129346612100,	-0.310115664675977620,	-0.310163199230053980,	-0.310210733008722370,	-0.310258266011864290,	-0.310305798239360160,	-0.310353329691091530,	
+-0.310400860366939590,	-0.310448390266785890,	-0.310495919390510800,	-0.310543447737995910,	-0.310590975309122440,	-0.310638502103771920,	-0.310686028121824720,	-0.310733553363162440,	
+-0.310781077827666290,	-0.310828601515217850,	-0.310876124425697510,	-0.310923646558986850,	-0.310971167914967540,	-0.311018688493519820,	-0.311066208294525410,	-0.311113727317865460,	
+-0.311161245563421670,	-0.311208763031074250,	-0.311256279720705020,	-0.311303795632195010,	-0.311351310765425990,	-0.311398825120278280,	-0.311446338696633460,	-0.311493851494372810,	
+-0.311541363513377970,	-0.311588874753529250,	-0.311636385214708380,	-0.311683894896796540,	-0.311731403799675400,	-0.311778911923225320,	-0.311826419267327960,	-0.311873925831864960,	
+-0.311921431616716760,	-0.311968936621764950,	-0.312016440846890840,	-0.312063944291975980,	-0.312111446956900910,	-0.312158948841547160,	-0.312206449945796050,	-0.312253950269529290,	
+-0.312301449812627200,	-0.312348948574971470,	-0.312396446556443390,	-0.312443943756924580,	-0.312491440176295490,	-0.312538935814437870,	-0.312586430671232820,	-0.312633924746562150,	
+-0.312681418040306300,	-0.312728910552346860,	-0.312776402282565150,	-0.312823893230842810,	-0.312871383397060390,	-0.312918872781099480,	-0.312966361382841780,	-0.313013849202167790,	
+-0.313061336238959150,	-0.313108822493097240,	-0.313156307964463640,	-0.313203792652938850,	-0.313251276558404570,	-0.313298759680742110,	-0.313346242019833190,	-0.313393723575558230,	
+-0.313441204347798930,	-0.313488684336436670,	-0.313536163541353050,	-0.313583641962428660,	-0.313631119599545150,	-0.313678596452583890,	-0.313726072521426480,	-0.313773547805953510,	
+-0.313821022306046690,	-0.313868496021587670,	-0.313915968952457050,	-0.313963441098536470,	-0.314010912459707300,	-0.314058383035851260,	-0.314105852826848890,	-0.314153321832581820,	
+-0.314200790052931500,	-0.314248257487779630,	-0.314295724137006630,	-0.314343190000494380,	-0.314390655078124140,	-0.314438119369777670,	-0.314485582875335510,	-0.314533045594679370,	
+-0.314580507527690620,	-0.314627968674251020,	-0.314675429034241060,	-0.314722888607542550,	-0.314770347394037200,	-0.314817805393605600,	-0.314865262606129510,	-0.314912719031490210,	
+-0.314960174669569600,	-0.315007629520248080,	-0.315055083583407500,	-0.315102536858929190,	-0.315149989346694970,	-0.315197441046585370,	-0.315244891958482150,	-0.315292342082266750,	
+-0.315339791417820870,	-0.315387239965025100,	-0.315434687723761210,	-0.315482134693910620,	-0.315529580875355150,	-0.315577026267975240,	-0.315624470871652800,	-0.315671914686269210,	
+-0.315719357711706230,	-0.315766799947844400,	-0.315814241394565600,	-0.315861682051751640,	-0.315909121919283000,	-0.315956560997041610,	-0.316003999284908800,	-0.316051436782766370,	
+-0.316098873490494980,	-0.316146309407976390,	-0.316193744535092030,	-0.316241178871723700,	-0.316288612417752020,	-0.316336045173058860,	-0.316383477137525520,	-0.316430908311033930,	
+-0.316478338693464640,	-0.316525768284699530,	-0.316573197084620010,	-0.316620625093107900,	-0.316668052310043750,	-0.316715478735309530,	-0.316762904368787010,	-0.316810329210356840,	
+-0.316857753259900840,	-0.316905176517300440,	-0.316952598982437550,	-0.317000020655192670,	-0.317047441535447780,	-0.317094861623084310,	-0.317142280917984080,	-0.317189699420027730,	
+-0.317237117129097130,	-0.317284534045073780,	-0.317331950167839490,	-0.317379365497274860,	-0.317426780033261860,	-0.317474193775681920,	-0.317521606724416870,	-0.317569018879347410,	
+-0.317616430240355410,	-0.317663840807322740,	-0.317711250580130060,	-0.317758659558659280,	-0.317806067742791800,	-0.317853475132409580,	-0.317900881727393280,	-0.317948287527624770,	
+-0.317995692532985540,	-0.318043096743357460,	-0.318090500158621280,	-0.318137902778658780,	-0.318185304603351590,	-0.318232705632581550,	-0.318280105866229290,	-0.318327505304176750,	
+-0.318374903946305520,	-0.318422301792497360,	-0.318469698842633100,	-0.318517095096594590,	-0.318564490554263720,	-0.318611885215521250,	-0.318659279080249050,	-0.318706672148328600,	
+-0.318754064419641940,	-0.318801455894069720,	-0.318848846571493820,	-0.318896236451795820,	-0.318943625534857610,	-0.318991013820560000,	-0.319038401308784800,	-0.319085787999413560,	
+-0.319133173892328310,	-0.319180558987409770,	-0.319227943284539740,	-0.319275326783599880,	-0.319322709484472110,	-0.319370091387037200,	-0.319417472491177020,	-0.319464852796773170,	
+-0.319512232303707620,	-0.319559611011861030,	-0.319606988921115440,	-0.319654366031352780,	-0.319701742342453800,	-0.319749117854300490,	-0.319796492566774340,	-0.319843866479757380,	
+-0.319891239593130370,	-0.319938611906775250,	-0.319985983420573550,	-0.320033354134407370,	-0.320080724048157410,	-0.320128093161705600,	-0.320175461474933530,	-0.320222828987723250,	
+-0.320270195699955460,	-0.320317561611512200,	-0.320364926722275070,	-0.320412291032125980,	-0.320459654540945770,	-0.320507017248616470,	-0.320554379155020000,	-0.320601740260037130,	
+-0.320649100563549950,	-0.320696460065440000,	-0.320743818765589380,	-0.320791176663878740,	-0.320838533760190170,	-0.320885890054405270,	-0.320933245546406010,	-0.320980600236073280,	
+-0.321027954123289050,	-0.321075307207934920,	-0.321122659489892940,	-0.321170010969043910,	-0.321217361645269820,	-0.321264711518452320,	-0.321312060588473500,	-0.321359408855214080,	
+-0.321406756318556140,	-0.321454102978381730,	-0.321501448834571660,	-0.321548793887007970,	-0.321596138135572310,	-0.321643481580146660,	-0.321690824220611960,	-0.321738166056850130,	
+-0.321785507088742930,	-0.321832847316172340,	-0.321880186739019300,	-0.321927525357165730,	-0.321974863170493340,	-0.322022200178884220,	-0.322069536382219190,	-0.322116871780380290,	
+-0.322164206373249270,	-0.322211540160708130,	-0.322258873142637680,	-0.322306205318920070,	-0.322353536689436950,	-0.322400867254070410,	-0.322448197012701330,	-0.322495525965211690,	
+-0.322542854111483700,	-0.322590181451398120,	-0.322637507984837090,	-0.322684833711682330,	-0.322732158631815870,	-0.322779482745118580,	-0.322826806051472630,	-0.322874128550759590,	
+-0.322921450242861730,	-0.322968771127659760,	-0.323016091205035880,	-0.323063410474871800,	-0.323110728937049620,	-0.323158046591450140,	-0.323205363437955580,	-0.323252679476447650,	
+-0.323299994706808370,	-0.323347309128918740,	-0.323394622742660790,	-0.323441935547916730,	-0.323489247544567430,	-0.323536558732494980,	-0.323583869111581160,	-0.323631178681708040,	
+-0.323678487442756620,	-0.323725795394608940,	-0.323773102537146750,	-0.323820408870252260,	-0.323867714393806350,	-0.323915019107691100,	-0.323962323011788340,	-0.324009626105980160,	
+-0.324056928390147550,	-0.324104229864172530,	-0.324151530527936990,	-0.324198830381323080,	-0.324246129424211600,	-0.324293427656484830,	-0.324340725078024920,	-0.324388021688712780,	
+-0.324435317488430570,	-0.324482612477060120,	-0.324529906654483500,	-0.324577200020581710,	-0.324624492575236900,	-0.324671784318330880,	-0.324719075249745800,	-0.324766365369362650,	
+-0.324813654677063520,	-0.324860943172730340,	-0.324908230856245150,	-0.324955517727488990,	-0.325002803786344050,	-0.325050089032692110,	-0.325097373466415320,	-0.325144657087394710,	
+-0.325191939895512430,	-0.325239221890650740,	-0.325286503072690580,	-0.325333783441514200,	-0.325381062997003310,	-0.325428341739040170,	-0.325475619667505770,	-0.325522896782282360,	
+-0.325570173083251650,	-0.325617448570295950,	-0.325664723243296260,	-0.325711997102134660,	-0.325759270146693150,	-0.325806542376853860,	-0.325853813792497780,	-0.325901084393507180,	
+-0.325948354179763870,	-0.325995623151150100,	-0.326042891307546820,	-0.326090158648836340,	-0.326137425174900460,	-0.326184690885621460,	-0.326231955780880270,	-0.326279219860559240,	
+-0.326326483124540550,	-0.326373745572705210,	-0.326421007204935550,	-0.326468268021113340,	-0.326515528021120880,	-0.326562787204839220,	-0.326610045572150560,	-0.326657303122936780,	
+-0.326704559857080190,	-0.326751815774461770,	-0.326799070874963790,	-0.326846325158468120,	-0.326893578624857130,	-0.326940831274011690,	-0.326988083105814230,	-0.327035334120146510,	
+-0.327082584316890910,	-0.327129833695928460,	-0.327177082257141370,	-0.327224330000412010,	-0.327271576925621420,	-0.327318823032651920,	-0.327366068321385320,	-0.327413312791703940,	
+-0.327460556443488930,	-0.327507799276622490,	-0.327555041290986500,	-0.327602282486463390,	-0.327649522862934140,	-0.327696762420281120,	-0.327744001158386140,	-0.327791239077131590,	
+-0.327838476176398550,	-0.327885712456069290,	-0.327932947916025730,	-0.327980182556150250,	-0.328027416376323930,	-0.328074649376429000,	-0.328121881556347920,	-0.328169112915961680,	
+-0.328216343455152660,	-0.328263573173802840,	-0.328310802071794420,	-0.328358030149008610,	-0.328405257405327780,	-0.328452483840633750,	-0.328499709454808940,	-0.328546934247734400,	
+-0.328594158219292550,	-0.328641381369365330,	-0.328688603697835090,	-0.328735825204582890,	-0.328783045889491090,	-0.328830265752441730,	-0.328877484793317130,	-0.328924703011998330,	
+-0.328971920408367870,	-0.329019136982307560,	-0.329066352733699830,	-0.329113567662425780,	-0.329160781768367830,	-0.329207995051408350,	-0.329255207511428450,	-0.329302419148310540,	
+-0.329349629961936560,	-0.329396839952188940,	-0.329444049118948810,	-0.329491257462098560,	-0.329538464981520170,	-0.329585671677096010,	-0.329632877548707240,	-0.329680082596236320,	
+-0.329727286819565200,	-0.329774490218576240,	-0.329821692793150660,	-0.329868894543170870,	-0.329916095468518800,	-0.329963295569076940,	-0.330010494844726390,	-0.330057693295349620,	
+-0.330104890920829060,	-0.330152087721045820,	-0.330199283695882360,	-0.330246478845220740,	-0.330293673168943260,	-0.330340866666931240,	-0.330388059339067060,	-0.330435251185232700,	
+-0.330482442205310640,	-0.330529632399182040,	-0.330576821766729370,	-0.330624010307834670,	-0.330671198022380320,	-0.330718384910247630,	-0.330765570971318920,	-0.330812756205476290,	
+-0.330859940612602150,	-0.330907124192577780,	-0.330954306945285600,	-0.331001488870608100,	-0.331048669968426410,	-0.331095850238623090,	-0.331143029681080110,	-0.331190208295679970,	
+-0.331237386082303910,	-0.331284563040834420,	-0.331331739171153440,	-0.331378914473143600,	-0.331426088946686010,	-0.331473262591663210,	-0.331520435407957280,	-0.331567607395450660,	
+-0.331614778554024600,	-0.331661948883561600,	-0.331709118383943740,	-0.331756287055053500,	-0.331803454896772100,	-0.331850621908982070,	-0.331897788091565890,	-0.331944953444404890,	
+-0.331992117967381430,	-0.332039281660377720,	-0.332086444523276180,	-0.332133606555958140,	-0.332180767758306070,	-0.332227928130202130,	-0.332275087671528750,	-0.332322246382167230,	
+-0.332369404262000070,	-0.332416561310909460,	-0.332463717528777850,	-0.332510872915486480,	-0.332558027470917950,	-0.332605181194954360,	-0.332652334087478240,	-0.332699486148370860,	
+-0.332746637377514750,	-0.332793787774792070,	-0.332840937340085350,	-0.332888086073275860,	-0.332935233974246130,	-0.332982381042878750,	-0.333029527279054990,	-0.333076672682657450,	
+-0.333123817253568210,	-0.333170960991669820,	-0.333218103896843640,	-0.333265245968972170,	-0.333312387207937600,	-0.333359527613622470,	-0.333406667185908110,	-0.333453805924677100,	
+-0.333500943829811550,	-0.333548080901194090,	-0.333595217138705990,	-0.333642352542229850,	-0.333689487111647810,	-0.333736620846842470,	-0.333783753747695200,	-0.333830885814088480,	
+-0.333878017045905030,	-0.333925147443026090,	-0.333972277005334270,	-0.334019405732711830,	-0.334066533625041180,	-0.334113660682203880,	-0.334160786904082350,	-0.334207912290558910,	
+-0.334255036841516080,	-0.334302160556835260,	-0.334349283436399030,	-0.334396405480089590,	-0.334443526687789540,	-0.334490647059380250,	-0.334537766594744380,	-0.334584885293764070,	
+-0.334632003156321970,	-0.334679120182299390,	-0.334726236371579110,	-0.334773351724043600,	-0.334820466239574290,	-0.334867579918053830,	-0.334914692759364420,	-0.334961804763388660,	
+-0.335008915930008030,	-0.335056026259105080,	-0.335103135750562050,	-0.335150244404261610,	-0.335197352220085180,	-0.335244459197915350,	-0.335291565337634320,	-0.335338670639124870,	
+-0.335385775102268250,	-0.335432878726947270,	-0.335479981513044030,	-0.335527083460441300,	-0.335574184569020380,	-0.335621284838664050,	-0.335668384269254490,	-0.335715482860674430,	
+-0.335762580612805230,	-0.335809677525529540,	-0.335856773598730120,	-0.335903868832288290,	-0.335950963226086810,	-0.335998056780007940,	-0.336045149493934380,	-0.336092241367747460,	
+-0.336139332401329980,	-0.336186422594564160,	-0.336233511947332700,	-0.336280600459517020,	-0.336327688130999840,	-0.336374774961663460,	-0.336421860951390590,	-0.336468946100062620,	
+-0.336516030407562280,	-0.336563113873771860,	-0.336610196498574040,	-0.336657278281850380,	-0.336704359223483520,	-0.336751439323356110,	-0.336798518581349740,	-0.336845596997347060,	
+-0.336892674571230400,	-0.336939751302882450,	-0.336986827192184760,	-0.337033902239019910,	-0.337080976443270400,	-0.337128049804818810,	-0.337175122323546680,	-0.337222193999336730,	
+-0.337269264832071310,	-0.337316334821633200,	-0.337363403967903760,	-0.337410472270765820,	-0.337457539730101730,	-0.337504606345794210,	-0.337551672117724740,	-0.337598737045776090,	
+-0.337645801129831000,	-0.337692864369771030,	-0.337739926765478870,	-0.337786988316836900,	-0.337834049023727880,	-0.337881108886033340,	-0.337928167903636000,	-0.337975226076418220,	
+-0.338022283404262820,	-0.338069339887051350,	-0.338116395524666440,	-0.338163450316990580,	-0.338210504263906530,	-0.338257557365295780,	-0.338304609621041090,	-0.338351661031024930,	
+-0.338398711595130020,	-0.338445761313237950,	-0.338492810185231420,	-0.338539858210993310,	-0.338586905390405150,	-0.338633951723349700,	-0.338680997209709400,	-0.338728041849367000,	
+-0.338775085642204100,	-0.338822128588103460,	-0.338869170686947550,	-0.338916211938619090,	-0.338963252342999680,	-0.339010291899972120,	-0.339057330609418840,	-0.339104368471222720,	
+-0.339151405485265180,	-0.339198441651429150,	-0.339245476969597000,	-0.339292511439651610,	-0.339339545061474510,	-0.339386577834948580,	-0.339433609759956180,	-0.339480640836380130,	
+-0.339527671064102090,	-0.339574700443004920,	-0.339621728972971330,	-0.339668756653883070,	-0.339715783485622870,	-0.339762809468073250,	-0.339809834601117020,	-0.339856858884635790,	
+-0.339903882318512370,	-0.339950904902629300,	-0.339997926636869340,	-0.340044947521114190,	-0.340091967555246620,	-0.340138986739149160,	-0.340186005072704630,	-0.340233022555794740,	
+-0.340280039188302240,	-0.340327054970109620,	-0.340374069901099810,	-0.340421083981154390,	-0.340468097210156310,	-0.340515109587988360,	-0.340562121114532210,	-0.340609131789670780,	
+-0.340656141613286500,	-0.340703150585262290,	-0.340750158705479810,	-0.340797165973821930,	-0.340844172390171120,	-0.340891177954410320,	-0.340938182666421120,	-0.340985186526086450,	
+-0.341032189533288840,	-0.341079191687911230,	-0.341126192989835150,	-0.341173193438943590,	-0.341220193035119080,	-0.341267191778244490,	-0.341314189668201540,	-0.341361186704873030,	
+-0.341408182888142060,	-0.341455178217890180,	-0.341502172694000350,	-0.341549166316355070,	-0.341596159084837310,	-0.341643150999328740,	-0.341690142059712320,	-0.341737132265870490,	
+-0.341784121617686290,	-0.341831110115041360,	-0.341878097757818630,	-0.341925084545900650,	-0.341972070479170390,	-0.342019055557509550,	-0.342066039780801080,	-0.342113023148927500,	
+-0.342160005661771790,	-0.342206987319215620,	-0.342253968121142000,	-0.342300948067433440,	-0.342347927157972960,	-0.342394905392642220,	-0.342441882771324200,	-0.342488859293901940,	
+-0.342535834960257080,	-0.342582809770272670,	-0.342629783723831180,	-0.342676756820815720,	-0.342723729061107870,	-0.342770700444590740,	-0.342817670971146850,	-0.342864640640659190,	
+-0.342911609453009580,	-0.342958577408080890,	-0.343005544505755710,	-0.343052510745917140,	-0.343099476128446880,	-0.343146440653227910,	-0.343193404320142890,	-0.343240367129074740,	
+-0.343287329079905220,	-0.343334290172517430,	-0.343381250406794290,	-0.343428209782617620,	-0.343475168299870460,	-0.343522125958435340,	-0.343569082758195370,	-0.343616038699032230,	
+-0.343662993780828980,	-0.343709948003468270,	-0.343756901366833120,	-0.343803853870805310,	-0.343850805515267810,	-0.343897756300103330,	-0.343944706225194910,	-0.343991655290424250,	
+-0.344038603495674500,	-0.344085550840828200,	-0.344132497325768450,	-0.344179442950377060,	-0.344226387714537060,	-0.344273331618131450,	-0.344320274661042150,	-0.344367216843152190,	
+-0.344414158164344120,	-0.344461098624501140,	-0.344508038223504950,	-0.344554976961238660,	-0.344601914837584960,	-0.344648851852426890,	-0.344695788005646210,	-0.344742723297126130,	
+-0.344789657726749240,	-0.344836591294398590,	-0.344883523999956030,	-0.344930455843304730,	-0.344977386824327210,	-0.345024316942906690,	-0.345071246198924930,	-0.345118174592265130,	
+-0.345165102122810210,	-0.345212028790442160,	-0.345258954595044080,	-0.345305879536498550,	-0.345352803614688790,	-0.345399726829496550,	-0.345446649180805030,	-0.345493570668496900,	
+-0.345540491292455230,	-0.345587411052561910,	-0.345634329948700080,	-0.345681247980752390,	-0.345728165148602050,	-0.345775081452130870,	-0.345821996891221950,	-0.345868911465758100,	
+-0.345915825175622300,	-0.345962738020696600,	-0.346009650000864030,	-0.346056561116007360,	-0.346103471366009660,	-0.346150380750752880,	-0.346197289270120110,	-0.346244196923994610,	
+-0.346291103712258130,	-0.346338009634793940,	-0.346384914691484750,	-0.346431818882213640,	-0.346478722206862540,	-0.346525624665314670,	-0.346572526257452770,	-0.346619426983159950,	
+-0.346666326842318130,	-0.346713225834810510,	-0.346760123960519810,	-0.346807021219329210,	-0.346853917611120670,	-0.346900813135777310,	-0.346947707793181900,	-0.346994601583217710,	
+-0.347041494505766550,	-0.347088386560711670,	-0.347135277747936180,	-0.347182168067322160,	-0.347229057518752660,	-0.347275946102110540,	-0.347322833817279020,	-0.347369720664139960,	
+-0.347416606642576560,	-0.347463491752471710,	-0.347510375993708490,	-0.347557259366168940,	-0.347604141869736260,	-0.347651023504293170,	-0.347697904269722970,	-0.347744784165907590,	
+-0.347791663192730300,	-0.347838541350073800,	-0.347885418637821350,	-0.347932295055854990,	-0.347979170604057860,	-0.348026045282313180,	-0.348072919090503030,	-0.348119792028510570,	
+-0.348166664096218600,	-0.348213535293510460,	-0.348260405620268000,	-0.348307275076374550,	-0.348354143661712910,	-0.348401011376166300,	-0.348447878219616760,	-0.348494744191947540,	
+-0.348541609293041450,	-0.348588473522781770,	-0.348635336881050470,	-0.348682199367730820,	-0.348729060982705670,	-0.348775921725858310,	-0.348822781597070750,	-0.348869640596226220,	
+-0.348916498723207570,	-0.348963355977898070,	-0.349010212360179760,	-0.349057067869935960,	-0.349103922507049910,	-0.349150776271403620,	-0.349197629162880390,	-0.349244481181363090,	
+-0.349291332326734980,	-0.349338182598878170,	-0.349385031997675840,	-0.349431880523011000,	-0.349478728174766830,	-0.349525574952825440,	-0.349572420857070130,	-0.349619265887383730,	
+-0.349666110043649610,	-0.349712953325749810,	-0.349759795733567580,	-0.349806637266985910,	-0.349853477925888000,	-0.349900317710156060,	-0.349947156619673240,	-0.349993994654323020,	
+-0.350040831813987370,	-0.350087668098549630,	-0.350134503507892710,	-0.350181338041899990,	-0.350228171700453450,	-0.350275004483436510,	-0.350321836390732110,	-0.350368667422223450,	
+-0.350415497577792780,	-0.350462326857323310,	-0.350509155260698040,	-0.350555982787800310,	-0.350602809438512190,	-0.350649635212717080,	-0.350696460110297810,	-0.350743284131137870,	
+-0.350790107275119280,	-0.350836929542125420,	-0.350883750932039720,	-0.350930571444744150,	-0.350977391080122160,	-0.351024209838056710,	-0.351071027718431130,	-0.351117844721127560,	
+-0.351164660846029430,	-0.351211476093019610,	-0.351258290461981540,	-0.351305103952797290,	-0.351351916565350310,	-0.351398728299523510,	-0.351445539155200330,	-0.351492349132262900,	
+-0.351539158230594560,	-0.351585966450078340,	-0.351632773790597650,	-0.351679580252034550,	-0.351726385834272510,	-0.351773190537194970,	-0.351819994360684010,	-0.351866797304623060,	
+-0.351913599368895100,	-0.351960400553383620,	-0.352007200857970660,	-0.352054000282539750,	-0.352100798826973820,	-0.352147596491156290,	-0.352194393274969320,	-0.352241189178296440,	
+-0.352287984201020530,	-0.352334778343025120,	-0.352381571604192310,	-0.352428363984405630,	-0.352475155483548020,	-0.352521946101502890,	-0.352568735838152510,	-0.352615524693380310,	
+-0.352662312667069270,	-0.352709099759102860,	-0.352755885969363300,	-0.352802671297734020,	-0.352849455744098480,	-0.352896239308338850,	-0.352943021990338670,	-0.352989803789980960,	
+-0.353036584707149100,	-0.353083364741725360,	-0.353130143893593260,	-0.353176922162635740,	-0.353223699548736390,	-0.353270476051777360,	-0.353317251671642070,	-0.353364026408213740,	
+-0.353410800261375720,	-0.353457573231010290,	-0.353504345317000920,	-0.353551116519230710,	-0.353597886837583090,	-0.353644656271940360,	-0.353691424822186020,	-0.353738192488203480,	
+-0.353784959269875080,	-0.353831725167084280,	-0.353878490179714120,	-0.353925254307648210,	-0.353972017550768680,	-0.354018779908959190,	-0.354065541382102670,	-0.354112301970082750,	
+-0.354159061672781660,	-0.354205820490082920,	-0.354252578421869630,	-0.354299335468025330,	-0.354346091628432220,	-0.354392846902973900,	-0.354439601291533510,	-0.354486354793994480,	
+-0.354533107410239190,	-0.354579859140151110,	-0.354626609983613780,	-0.354673359940509520,	-0.354720109010721870,	-0.354766857194133920,	-0.354813604490629260,	-0.354860350900090220,	
+-0.354907096422400260,	-0.354953841057442540,	-0.355000584805100660,	-0.355047327665256870,	-0.355094069637794830,	-0.355140810722597570,	-0.355187550919548680,	-0.355234290228530540,	
+-0.355281028649426620,	-0.355327766182120200,	-0.355374502826494740,	-0.355421238582432570,	-0.355467973449817400,	-0.355514707428532200,	-0.355561440518460730,	-0.355608172719485190,	
+-0.355654904031489190,	-0.355701634454356430,	-0.355748363987969110,	-0.355795092632210870,	-0.355841820386964940,	-0.355888547252114880,	-0.355935273227542980,	-0.355981998313132930,	
+-0.356028722508767880,	-0.356075445814331480,	-0.356122168229705990,	-0.356168889754775120,	-0.356215610389422010,	-0.356262330133530310,	-0.356309048986982350,	-0.356355766949661760,	
+-0.356402484021451750,	-0.356449200202235970,	-0.356495915491896740,	-0.356542629890317760,	-0.356589343397382570,	-0.356636056012973660,	-0.356682767736974600,	-0.356729478569268620,	
+-0.356776188509739360,	-0.356822897558269180,	-0.356869605714741740,	-0.356916312979040360,	-0.356963019351048570,	-0.357009724830648860,	-0.357056429417724750,	-0.357103133112159630,	
+-0.357149835913837090,	-0.357196537822639550,	-0.357243238838450660,	-0.357289938961153630,	-0.357336638190632220,	-0.357383336526768790,	-0.357430033969447000,	-0.357476730518550560,	
+-0.357523426173961880,	-0.357570120935564620,	-0.357616814803242030,	-0.357663507776877890,	-0.357710199856354490,	-0.357756891041555670,	-0.357803581332364560,	-0.357850270728664930,	
+-0.357896959230339210,	-0.357943646837271090,	-0.357990333549343840,	-0.358037019366441220,	-0.358083704288445600,	-0.358130388315240740,	-0.358177071446709900,	-0.358223753682736790,	
+-0.358270435023203880,	-0.358317115467994880,	-0.358363795016993500,	-0.358410473670082220,	-0.358457151427144740,	-0.358503828288064430,	-0.358550504252724940,	-0.358597179321008760,	
+-0.358643853492799650,	-0.358690526767980910,	-0.358737199146436260,	-0.358783870628048170,	-0.358830541212700470,	-0.358877210900276360,	-0.358923879690659640,	-0.358970547583732870,	
+-0.359017214579379680,	-0.359063880677483460,	-0.359110545877927960,	-0.359157210180595650,	-0.359203873585370310,	-0.359250536092135310,	-0.359297197700774400,	-0.359343858411170060,	
+-0.359390518223206110,	-0.359437177136766260,	-0.359483835151733040,	-0.359530492267990220,	-0.359577148485421220,	-0.359623803803909680,	-0.359670458223338320,	-0.359717111743590720,	
+-0.359763764364550380,	-0.359810416086101040,	-0.359857066908125240,	-0.359903716830506810,	-0.359950365853129060,	-0.359997013975875800,	-0.360043661198629630,	-0.360090307521274240,	
+-0.360136952943693130,	-0.360183597465770060,	-0.360230241087387550,	-0.360276883808429480,	-0.360323525628779560,	-0.360370166548320490,	-0.360416806566935920,	-0.360463445684509390,	
+-0.360510083900924650,	-0.360556721216064250,	-0.360603357629812050,	-0.360649993142051480,	-0.360696627752666370,	-0.360743261461539230,	-0.360789894268553960,	-0.360836526173593960,	
+-0.360883157176543010,	-0.360929787277283810,	-0.360976416475700110,	-0.361023044771675410,	-0.361069672165093450,	-0.361116298655836940,	-0.361162924243789650,	-0.361209548928835500,	
+-0.361256172710857030,	-0.361302795589738160,	-0.361349417565362320,	-0.361396038637613270,	-0.361442658806373770,	-0.361489278071527640,	-0.361535896432958250,	-0.361582513890549570,	
+-0.361629130444184210,	-0.361675746093746030,	-0.361722360839118460,	-0.361768974680185370,	-0.361815587616829470,	-0.361862199648934570,	-0.361908810776384200,	-0.361955420999062250,	
+-0.362002030316851300,	-0.362048638729635220,	-0.362095246237297610,	-0.362141852839722280,	-0.362188458536791940,	-0.362235063328390390,	-0.362281667214401640,	-0.362328270194708260,	
+-0.362374872269194240,	-0.362421473437743060,	-0.362468073700238590,	-0.362514673056563490,	-0.362561271506601780,	-0.362607869050236840,	-0.362654465687352660,	-0.362701061417831870,	
+-0.362747656241558470,	-0.362794250158415880,	-0.362840843168288130,	-0.362887435271057820,	-0.362934026466608940,	-0.362980616754824960,	-0.363027206135589920,	-0.363073794608786420,	
+-0.363120382174298430,	-0.363166968832009880,	-0.363213554581803490,	-0.363260139423563280,	-0.363306723357172680,	-0.363353306382515670,	-0.363399888499474970,	-0.363446469707934590,	
+-0.363493050007777980,	-0.363539629398889230,	-0.363586207881150920,	-0.363632785454447160,	-0.363679362118661420,	-0.363725937873677680,	-0.363772512719378660,	-0.363819086655648380,	
+-0.363865659682370390,	-0.363912231799428660,	-0.363958803006705910,	-0.364005373304086170,	-0.364051942691453410,	-0.364098511168690410,	-0.364145078735681080,	-0.364191645392309080,	
+-0.364238211138458390,	-0.364284775974011770,	-0.364331339898853130,	-0.364377902912866200,	-0.364424465015934950,	-0.364471026207942080,	-0.364517586488771690,	-0.364564145858307320,	
+-0.364610704316433000,	-0.364657261863031490,	-0.364703818497986830,	-0.364750374221182620,	-0.364796929032502880,	-0.364843482931830390,	-0.364890035919049230,	-0.364936587994042990,	
+-0.364983139156695670,	-0.365029689406890070,	-0.365076238744510280,	-0.365122787169440300,	-0.365169334681562930,	-0.365215881280762210,	-0.365262426966921790,	-0.365308971739925770,	
+-0.365355515599656840,	-0.365402058545999160,	-0.365448600578836320,	-0.365495141698052360,	-0.365541681903530200,	-0.365588221195153770,	-0.365634759572806830,	-0.365681297036373420,	
+-0.365727833585736290,	-0.365774369220779660,	-0.365820903941387050,	-0.365867437747442570,	-0.365913970638829130,	-0.365960502615430780,	-0.366007033677131550,	-0.366053563823814320,	
+-0.366100093055363170,	-0.366146621371661820,	-0.366193148772594350,	-0.366239675258043570,	-0.366286200827893590,	-0.366332725482028110,	-0.366379249220331220,	-0.366425772042685840,	
+-0.366472293948975960,	-0.366518814939085390,	-0.366565335012898170,	-0.366611854170297240,	-0.366658372411166670,	-0.366704889735390120,	-0.366751406142851790,	-0.366797921633434550,	
+-0.366844436207022510,	-0.366890949863499740,	-0.366937462602749230,	-0.366983974424655020,	-0.367030485329100930,	-0.367076995315971040,	-0.367123504385148180,	-0.367170012536516600,	
+-0.367216519769960000,	-0.367263026085362490,	-0.367309531482607030,	-0.367356035961577730,	-0.367402539522158340,	-0.367449042164233020,	-0.367495543887684680,	-0.367542044692397480,	
+-0.367588544578255130,	-0.367635043545141870,	-0.367681541592940590,	-0.367728038721535420,	-0.367774534930810640,	-0.367821030220649050,	-0.367867524590934910,	-0.367914018041551940,	
+-0.367960510572384330,	-0.368007002183315060,	-0.368053492874228280,	-0.368099982645007760,	-0.368146471495537700,	-0.368192959425701020,	-0.368239446435381980,	-0.368285932524464290,	
+-0.368332417692832200,	-0.368378901940368650,	-0.368425385266957890,	-0.368471867672483630,	-0.368518349156830070,	-0.368564829719880300,	-0.368611309361518420,	-0.368657788081628250,	
+-0.368704265880094030,	-0.368750742756798760,	-0.368797218711626630,	-0.368843693744461850,	-0.368890167855187410,	-0.368936641043687560,	-0.368983113309846120,	-0.369029584653547290,	
+-0.369076055074674110,	-0.369122524573110790,	-0.369168993148741190,	-0.369215460801449460,	-0.369261927531118690,	-0.369308393337633100,	-0.369354858220876490,	-0.369401322180733180,	
+-0.369447785217086160,	-0.369494247329819670,	-0.369540708518817600,	-0.369587168783964140,	-0.369633628125142330,	-0.369680086542236440,	-0.369726544035130780,	-0.369773000603708320,	
+-0.369819456247853400,	-0.369865910967449810,	-0.369912364762381870,	-0.369958817632532580,	-0.370005269577786230,	-0.370051720598026770,	-0.370098170693138380,	-0.370144619863004180,	
+-0.370191068107508400,	-0.370237515426534940,	-0.370283961819968140,	-0.370330407287691010,	-0.370376851829587850,	-0.370423295445542530,	-0.370469738135439430,	-0.370516179899161580,	
+-0.370562620736593300,	-0.370609060647618840,	-0.370655499632121300,	-0.370701937689985050,	-0.370748374821093910,	-0.370794811025332290,	-0.370841246302583190,	-0.370887680652731030,	
+-0.370934114075659630,	-0.370980546571253400,	-0.371026978139395340,	-0.371073408779969860,	-0.371119838492860840,	-0.371166267277952660,	-0.371212695135128390,	-0.371259122064272360,	
+-0.371305548065268550,	-0.371351973138001280,	-0.371398397282353630,	-0.371444820498210040,	-0.371491242785454370,	-0.371537664143970990,	-0.371584084573643060,	-0.371630504074354940,	
+-0.371676922645990950,	-0.371723340288434230,	-0.371769757001569170,	-0.371816172785279730,	-0.371862587639450290,	-0.371909001563963890,	-0.371955414558705070,	-0.372001826623557690,	
+-0.372048237758406120,	-0.372094647963133570,	-0.372141057237624420,	-0.372187465581762580,	-0.372233872995432540,	-0.372280279478517380,	-0.372326685030901490,	-0.372373089652468960,	
+-0.372419493343104040,	-0.372465896102690040,	-0.372512297931111240,	-0.372558698828252150,	-0.372605098793995890,	-0.372651497828226870,	-0.372697895930829140,	-0.372744293101687050,	
+-0.372790689340683820,	-0.372837084647703880,	-0.372883479022631250,	-0.372929872465350310,	-0.372976264975744260,	-0.373022656553697540,	-0.373069047199094230,	-0.373115436911818640,	
+-0.373161825691754100,	-0.373208213538785030,	-0.373254600452795350,	-0.373300986433669600,	-0.373347371481290990,	-0.373393755595543940,	-0.373440138776312940,	-0.373486521023481180,	
+-0.373532902336933090,	-0.373579282716552770,	-0.373625662162224650,	-0.373672040673831920,	-0.373718418251259120,	-0.373764794894390300,	-0.373811170603109870,	-0.373857545377301090,	
+-0.373903919216848510,	-0.373950292121636050,	-0.373996664091548300,	-0.374043035126468530,	-0.374089405226281150,	-0.374135774390870200,	-0.374182142620120280,	-0.374228509913914600,	
+-0.374274876272137620,	-0.374321241694673850,	-0.374367606181406580,	-0.374413969732220300,	-0.374460332346999100,	-0.374506694025627470,	-0.374553054767988670,	-0.374599414573967280,	
+-0.374645773443447290,	-0.374692131376313350,	-0.374738488372448610,	-0.374784844431737710,	-0.374831199554064630,	-0.374877553739314030,	-0.374923906987369100,	-0.374970259298114390,	
+-0.375016610671434050,	-0.375062961107212600,	-0.375109310605333370,	-0.375155659165680780,	-0.375202006788139090,	-0.375248353472592830,	-0.375294699218925220,	-0.375341044027020900,	
+-0.375387387896764350,	-0.375433730828038940,	-0.375480072820729150,	-0.375526413874719240,	-0.375572753989893700,	-0.375619093166135840,	-0.375665431403330250,	-0.375711768701361080,	
+-0.375758105060112920,	-0.375804440479469090,	-0.375850774959314130,	-0.375897108499532230,	-0.375943441100007990,	-0.375989772760624790,	-0.376036103481267090,	-0.376082433261819120,	
+-0.376128762102165500,	-0.376175090002189570,	-0.376221416961775910,	-0.376267742980809120,	-0.376314068059172560,	-0.376360392196750830,	-0.376406715393428130,	-0.376453037649089050,	
+-0.376499358963616970,	-0.376545679336896480,	-0.376591998768811780,	-0.376638317259247510,	-0.376684634808087060,	-0.376730951415214950,	-0.376777267080515510,	-0.376823581803873320,	
+-0.376869895585171750,	-0.376916208424295460,	-0.376962520321128650,	-0.377008831275555960,	-0.377055141287460760,	-0.377101450356727710,	-0.377147758483241390,	-0.377194065666885350,	
+-0.377240371907544110,	-0.377286677205101950,	-0.377332981559443500,	-0.377379284970452140,	-0.377425587438012630,	-0.377471888962009120,	-0.377518189542326350,	-0.377564489178847660,	
+-0.377610787871457740,	-0.377657085620040860,	-0.377703382424481650,	-0.377749678284663600,	-0.377795973200471370,	-0.377842267171789150,	-0.377888560198501760,	-0.377934852280492510,	
+-0.377981143417646100,	-0.378027433609846860,	-0.378073722856979430,	-0.378120011158927290,	-0.378166298515575150,	-0.378212584926807650,	-0.378258870392508330,	-0.378305154912561780,	
+-0.378351438486852320,	-0.378397721115264710,	-0.378444002797682370,	-0.378490283533990060,	-0.378536563324072040,	-0.378582842167812960,	-0.378629120065096410,	-0.378675397015807050,	
+-0.378721673019829230,	-0.378767948077047610,	-0.378814222187345670,	-0.378860495350608230,	-0.378906767566719540,	-0.378953038835564360,	-0.378999309157026120,	-0.379045578530989640,	
+-0.379091846957339660,	-0.379138114435959570,	-0.379184380966734240,	-0.379230646549547970,	-0.379276911184285470,	-0.379323174870830280,	-0.379369437609067160,	-0.379415699398880480,	
+-0.379461960240154940,	-0.379508220132774080,	-0.379554479076622650,	-0.379600737071585040,	-0.379646994117546040,	-0.379693250214389100,	-0.379739505361999020,	-0.379785759560260230,	
+-0.379832012809057430,	-0.379878265108274160,	-0.379924516457795240,	-0.379970766857505470,	-0.380017016307288350,	-0.380063264807028680,	-0.380109512356610830,	-0.380155758955919630,	
+-0.380202004604838660,	-0.380248249303252630,	-0.380294493051046010,	-0.380340735848103520,	-0.380386977694308850,	-0.380433218589546650,	-0.380479458533701460,	-0.380525697526658050,	
+-0.380571935568299930,	-0.380618172658512000,	-0.380664408797178670,	-0.380710643984184690,	-0.380756878219413730,	-0.380803111502750540,	-0.380849343834079980,	-0.380895575213285650,	
+-0.380941805640252370,	-0.380988035114864620,	-0.381034263637007150,	-0.381080491206563620,	-0.381126717823418890,	-0.381172943487457340,	-0.381219168198563830,	-0.381265391956622010,	
+-0.381311614761516700,	-0.381357836613132380,	-0.381404057511353870,	-0.381450277456064800,	-0.381496496447150000,	-0.381542714484494010,	-0.381588931567981630,	-0.381635147697496510,	
+-0.381681362872923540,	-0.381727577094147120,	-0.381773790361052190,	-0.381820002673522340,	-0.381866214031442550,	-0.381912424434697580,	-0.381958633883171190,	-0.382004842376748140,	
+-0.382051049915313080,	-0.382097256498750760,	-0.382143462126944830,	-0.382189666799780340,	-0.382235870517141640,	-0.382282073278913670,	-0.382328275084980130,	-0.382374475935225890,	
+-0.382420675829535430,	-0.382466874767793730,	-0.382513072749884390,	-0.382559269775692430,	-0.382605465845102240,	-0.382651660957998850,	-0.382697855114265850,	-0.382744048313788220,	
+-0.382790240556450890,	-0.382836431842137560,	-0.382882622170733160,	-0.382928811542122160,	-0.382974999956189550,	-0.383021187412819040,	-0.383067373911895600,	-0.383113559453303660,	
+-0.383159744036928260,	-0.383205927662653100,	-0.383252110330363160,	-0.383298292039942870,	-0.383344472791277310,	-0.383390652584250150,	-0.383436831418746290,	-0.383483009294650460,	
+-0.383529186211847450,	-0.383575362170221090,	-0.383621537169656300,	-0.383667711210038060,	-0.383713884291250200,	-0.383760056413177560,	-0.383806227575704820,	-0.383852397778716940,	
+-0.383898567022097630,	-0.383944735305731920,	-0.383990902629504300,	-0.384037068993299920,	-0.384083234397002430,	-0.384129398840496850,	-0.384175562323667790,	-0.384221724846400210,	
+-0.384267886408577900,	-0.384314047010085870,	-0.384360206650808780,	-0.384406365330631550,	-0.384452523049437940,	-0.384498679807113110,	-0.384544835603541520,	-0.384590990438608280,	
+-0.384637144312197140,	-0.384683297224193200,	-0.384729449174481370,	-0.384775600162945490,	-0.384821750189470620,	-0.384867899253941440,	-0.384914047356242850,	-0.384960194496258730,	
+-0.385006340673874180,	-0.385052485888973730,	-0.385098630141442520,	-0.385144773431164270,	-0.385190915758024110,	-0.385237057121906650,	-0.385283197522697020,	-0.385329336960278930,	
+-0.385375475434537480,	-0.385421612945357370,	-0.385467749492623630,	-0.385513885076220140,	-0.385560019696031870,	-0.385606153351944040,	-0.385652286043840330,	-0.385698417771605960,	
+-0.385744548535125580,	-0.385790678334284150,	-0.385836807168965680,	-0.385882935039055190,	-0.385929061944437320,	-0.385975187884997240,	-0.386021312860618750,	-0.386067436871187000,	
+-0.386113559916586690,	-0.386159681996702860,	-0.386205803111419390,	-0.386251923260621470,	-0.386298042444193690,	-0.386344160662021210,	-0.386390277913987950,	-0.386436394199978990,	
+-0.386482509519879450,	-0.386528623873573230,	-0.386574737260945430,	-0.386620849681880820,	-0.386666961136264480,	-0.386713071623980330,	-0.386759181144913480,	-0.386805289698948730,	
+-0.386851397285971120,	-0.386897503905864640,	-0.386943609558514370,	-0.386989714243805070,	-0.387035817961621900,	-0.387081920711848770,	-0.387128022494370890,	-0.387174123309072920,	
+-0.387220223155840040,	-0.387266322034556190,	-0.387312419945106570,	-0.387358516887376270,	-0.387404612861249280,	-0.387450707866610790,	-0.387496801903345510,	-0.387542894971338590,	
+-0.387588987070474070,	-0.387635078200637080,	-0.387681168361712400,	-0.387727257553585170,	-0.387773345776139420,	-0.387819433029260310,	-0.387865519312832640,	-0.387911604626741510,	
+-0.387957688970871020,	-0.388003772345106300,	-0.388049854749332120,	-0.388095936183433740,	-0.388142016647295090,	-0.388188096140801410,	-0.388234174663837470,	-0.388280252216288540,	
+-0.388326328798038580,	-0.388372404408972750,	-0.388418479048976310,	-0.388464552717933290,	-0.388510625415728890,	-0.388556697142247940,	-0.388602767897375630,	-0.388648837680996010,	
+-0.388694906492994320,	-0.388740974333255330,	-0.388787041201664300,	-0.388833107098105260,	-0.388879172022463470,	-0.388925235974623750,	-0.388971298954471360,	-0.389017360961890320,	
+-0.389063421996765860,	-0.389109482058982830,	-0.389155541148426540,	-0.389201599264980940,	-0.389247656408531370,	-0.389293712578963060,	-0.389339767776160080,	-0.389385822000007650,	
+-0.389431875250390690,	-0.389477927527194460,	-0.389523978830302990,	-0.389570029159601540,	-0.389616078514975040,	-0.389662126896308800,	-0.389708174303486750,	-0.389754220736394320,	
+-0.389800266194916370,	-0.389846310678938100,	-0.389892354188343670,	-0.389938396723018330,	-0.389984438282847010,	-0.390030478867715020,	-0.390076518477506410,	-0.390122557112106530,	
+-0.390168594771400650,	-0.390214631455272850,	-0.390260667163608520,	-0.390306701896292460,	-0.390352735653210100,	-0.390398768434245480,	-0.390444800239283960,	-0.390490831068210420,	
+-0.390536860920910170,	-0.390582889797267410,	-0.390628917697167450,	-0.390674944620495120,	-0.390720970567135890,	-0.390766995536973800,	-0.390813019529894280,	-0.390859042545782130,	
+-0.390905064584522840,	-0.390951085646000450,	-0.390997105730100380,	-0.391043124836707500,	-0.391089142965707240,	-0.391135160116983680,	-0.391181176290422260,	-0.391227191485908340,	
+-0.391273205703325970,	-0.391319218942560610,	-0.391365231203497200,	-0.391411242486021100,	-0.391457252790016530,	-0.391503262115368790,	-0.391549270461962920,	-0.391595277829684290,	
+-0.391641284218417040,	-0.391687289628046550,	-0.391733294058457910,	-0.391779297509536380,	-0.391825299981166220,	-0.391871301473232790,	-0.391917301985621140,	-0.391963301518216620,	
+-0.392009300070903450,	-0.392055297643567060,	-0.392101294236092750,	-0.392147289848364890,	-0.392193284480268740,	-0.392239278131689410,	-0.392285270802512300,	-0.392331262492621570,	
+-0.392377253201902700,	-0.392423242930240720,	-0.392469231677521010,	-0.392515219443627830,	-0.392561206228446590,	-0.392607192031862340,	-0.392653176853760500,	-0.392699160694025330,	
+-0.392745143552542250,	-0.392791125429196360,	-0.392837106323873030,	-0.392883086236456510,	-0.392929065166832290,	-0.392975043114885790,	-0.393021020080501330,	-0.393066996063564270,	
+-0.393112971063959700,	-0.393158945081573170,	-0.393204918116288830,	-0.393250890167992200,	-0.393296861236568370,	-0.393342831321902790,	-0.393388800423879690,	-0.393434768542384630,	
+-0.393480735677302630,	-0.393526701828519180,	-0.393572666995918590,	-0.393618631179386340,	-0.393664594378807520,	-0.393710556594067620,	-0.393756517825050890,	-0.393802478071642870,	
+-0.393848437333729100,	-0.393894395611193770,	-0.393940352903922490,	-0.393986309211800330,	-0.394032264534712800,	-0.394078218872544180,	-0.394124172225180040,	-0.394170124592505440,	
+-0.394216075974406000,	-0.394262026370765910,	-0.394307975781470750,	-0.394353924206405690,	-0.394399871645456200,	-0.394445818098506600,	-0.394491763565442520,	-0.394537708046148960,	
+-0.394583651540511560,	-0.394629594048414630,	-0.394675535569743720,	-0.394721476104384020,	-0.394767415652220950,	-0.394813354213138960,	-0.394859291787023610,	-0.394905228373760410,	
+-0.394951163973233770,	-0.394997098585329160,	-0.395043032209931870,	-0.395088964846927400,	-0.395134896496200040,	-0.395180827157635530,	-0.395226756831118910,	-0.395272685516535770,	
+-0.395318613213770540,	-0.395364539922708810,	-0.395410465643235680,	-0.395456390375236830,	-0.395502314118596600,	-0.395548236873200560,	-0.395594158638933930,	-0.395640079415682300,	
+-0.395685999203330090,	-0.395731918001762880,	-0.395777835810866290,	-0.395823752630524660,	-0.395869668460623660,	-0.395915583301048530,	-0.395961497151684830,	-0.396007410012416960,	
+-0.396053321883130580,	-0.396099232763710900,	-0.396145142654043550,	-0.396191051554012910,	-0.396236959463504680,	-0.396282866382404010,	-0.396328772310596600,	-0.396374677247966880,	
+-0.396420581194400430,	-0.396466484149782530,	-0.396512386113998860,	-0.396558287086933750,	-0.396604187068473000,	-0.396650086058502160,	-0.396695984056905650,	-0.396741881063569220,	
+-0.396787777078378090,	-0.396833672101217950,	-0.396879566131973170,	-0.396925459170529520,	-0.396971351216772240,	-0.397017242270586930,	-0.397063132331858140,	-0.397109021400471500,	
+-0.397154909476312320,	-0.397200796559266270,	-0.397246682649217810,	-0.397292567746052700,	-0.397338451849656100,	-0.397384334959913820,	-0.397430217076710280,	-0.397476098199931180,	
+-0.397521978329461840,	-0.397567857465188020,	-0.397613735606994090,	-0.397659612754765800,	-0.397705488908388970,	-0.397751364067747910,	-0.397797238232728500,	-0.397843111403215990,	
+-0.397888983579096130,	-0.397934854760253360,	-0.397980724946573490,	-0.398026594137941780,	-0.398072462334244040,	-0.398118329535364690,	-0.398164195741189500,	-0.398210060951603830,	
+-0.398255925166493440,	-0.398301788385742820,	-0.398347650609237770,	-0.398393511836863560,	-0.398439372068505940,	-0.398485231304049500,	-0.398531089543380010,	-0.398576946786383220,	
+-0.398622803032943620,	-0.398668658282947010,	-0.398714512536278760,	-0.398760365792824640,	-0.398806218052469190,	-0.398852069315098200,	-0.398897919580597060,	-0.398943768848851520,	
+-0.398989617119746120,	-0.399035464393166730,	-0.399081310668998600,	-0.399127155947127670,	-0.399173000227438400,	-0.399218843509816680,	-0.399264685794147810,	-0.399310527080317670,	
+-0.399356367368210790,	-0.399402206657712980,	-0.399448044948710060,	-0.399493882241086620,	-0.399539718534728470,	-0.399585553829520990,	-0.399631388125350100,	-0.399677221422100330,	
+-0.399723053719657440,	-0.399768885017906970,	-0.399814715316734680,	-0.399860544616025220,	-0.399906372915664390,	-0.399952200215537620,	-0.399998026515530740,	-0.400043851815528370,	
+-0.400089676115416400,	-0.400135499415080250,	-0.400181321714405790,	-0.400227143013277550,	-0.400272963311581460,	-0.400318782609203390,	-0.400364600906027990,	-0.400410418201941070,	
+-0.400456234496828050,	-0.400502049790574910,	-0.400547864083066200,	-0.400593677374187880,	-0.400639489663825340,	-0.400685300951864440,	-0.400731111238189940,	-0.400776920522687650,	
+-0.400822728805243060,	-0.400868536085742020,	-0.400914342364069250,	-0.400960147640110620,	-0.401005951913751660,	-0.401051755184878180,	-0.401097557453374940,	-0.401143358719127820,	
+-0.401189158982022230,	-0.401234958241944220,	-0.401280756498778370,	-0.401326553752410660,	-0.401372350002726970,	-0.401418145249611950,	-0.401463939492951620,	-0.401509732732631410,	
+-0.401555524968537300,	-0.401601316200553950,	-0.401647106428567320,	-0.401692895652462910,	-0.401738683872126690,	-0.401784471087443360,	-0.401830257298298800,	-0.401876042504578650,	
+-0.401921826706168770,	-0.401967609902953940,	-0.402013392094820070,	-0.402059173281652750,	-0.402104953463337860,	-0.402150732639760200,	-0.402196510810805710,	-0.402242287976360360,	
+-0.402288064136308850,	-0.402333839290537230,	-0.402379613438930970,	-0.402425386581376110,	-0.402471158717757350,	-0.402516929847960720,	-0.402562699971871770,	-0.402608469089376420,	
+-0.402654237200359530,	-0.402700004304707090,	-0.402745770402304580,	-0.402791535493038090,	-0.402837299576792320,	-0.402883062653453310,	-0.402928824722906640,	-0.402974585785038310,	
+-0.403020345839733120,	-0.403066104886877110,	-0.403111862926356200,	-0.403157619958055210,	-0.403203375981860180,	-0.403249130997656750,	-0.403294885005330840,	-0.403340638004767330,	
+-0.403386389995852250,	-0.403432140978471190,	-0.403477890952510190,	-0.403523639917854000,	-0.403569387874388790,	-0.403615134822000070,	-0.403660880760573880,	-0.403706625689995160,	
+-0.403752369610149820,	-0.403798112520923570,	-0.403843854422202440,	-0.403889595313871310,	-0.403935335195816150,	-0.403981074067922660,	-0.404026811930076890,	-0.404072548782163700,	
+-0.404118284624069120,	-0.404164019455679260,	-0.404209753276878910,	-0.404255486087554180,	-0.404301217887590770,	-0.404346948676874710,	-0.404392678455290870,	-0.404438407222725280,	
+-0.404484134979063710,	-0.404529861724192250,	-0.404575587457995710,	-0.404621312180360180,	-0.404667035891171370,	-0.404712758590315410,	-0.404758480277677080,	-0.404804200953142620,	
+-0.404849920616597640,	-0.404895639267928260,	-0.404941356907019380,	-0.404987073533757070,	-0.405032789148027540,	-0.405078503749715550,	-0.405124217338707400,	-0.405169929914888650,	
+-0.405215641478145480,	-0.405261352028362830,	-0.405307061565426780,	-0.405352770089223050,	-0.405398477599637820,	-0.405444184096556030,	-0.405489889579863760,	-0.405535594049446720,	
+-0.405581297505191170,	-0.405626999946981930,	-0.405672701374705180,	-0.405718401788246700,	-0.405764101187492620,	-0.405809799572327880,	-0.405855496942638620,	-0.405901193298311090,	
+-0.405946888639230120,	-0.405992582965281900,	-0.406038276276352250,	-0.406083968572327310,	-0.406129659853092070,	-0.406175350118532670,	-0.406221039368534880,	-0.406266727602984930,	
+-0.406312414821767720,	-0.406358101024769490,	-0.406403786211876010,	-0.406449470382973470,	-0.406495153537946850,	-0.406540835676682310,	-0.406586516799065710,	-0.406632196904983260,	
+-0.406677875994319870,	-0.406723554066961760,	-0.406769231122795230,	-0.406814907161705210,	-0.406860582183577900,	-0.406906256188299120,	-0.406951929175755120,	-0.406997601145830890,	
+-0.407043272098412680,	-0.407088942033386250,	-0.407134610950637910,	-0.407180278850052650,	-0.407225945731516660,	-0.407271611594915820,	-0.407317276440136320,	-0.407362940267063270,	
+-0.407408603075582850,	-0.407454264865580900,	-0.407499925636943710,	-0.407545585389556320,	-0.407591244123304940,	-0.407636901838075490,	-0.407682558533754180,	-0.407728214210226040,	
+-0.407773868867377380,	-0.407819522505094460,	-0.407865175123262310,	-0.407910826721767260,	-0.407956477300495110,	-0.408002126859332180,	-0.408047775398163500,	-0.408093422916875390,	
+-0.408139069415353770,	-0.408184714893484850,	-0.408230359351153760,	-0.408276002788246720,	-0.408321645204649750,	-0.408367286600249010,	-0.408412926974929650,	-0.408458566328578020,	
+-0.408504204661079950,	-0.408549841972321750,	-0.408595478262188560,	-0.408641113530566650,	-0.408686747777342370,	-0.408732381002400840,	-0.408778013205628340,	-0.408823644386910820,	
+-0.408869274546134590,	-0.408914903683184780,	-0.408960531797947720,	-0.409006158890309280,	-0.409051784960155870,	-0.409097410007372650,	-0.409143034031845820,	-0.409188657033461470,	
+-0.409234279012105850,	-0.409279899967664120,	-0.409325519900022640,	-0.409371138809067390,	-0.409416756694684690,	-0.409462373556759680,	-0.409507989395178740,	-0.409553604209828230,	
+-0.409599218000593290,	-0.409644830767360300,	-0.409690442510015300,	-0.409736053228444530,	-0.409781662922533260,	-0.409827271592167810,	-0.409872879237234200,	-0.409918485857618750,	
+-0.409964091453206720,	-0.410009696023884480,	-0.410055299569538010,	-0.410100902090053620,	-0.410146503585316620,	-0.410192104055213390,	-0.410237703499629850,	-0.410283301918452470,	
+-0.410328899311566410,	-0.410374495678858140,	-0.410420091020213650,	-0.410465685335519300,	-0.410511278624660300,	-0.410556870887523180,	-0.410602462123994210,	-0.410648052333958740,	
+-0.410693641517303090,	-0.410739229673913410,	-0.410784816803676010,	-0.410830402906476160,	-0.410875987982200320,	-0.410921572030734480,	-0.410967155051965130,	-0.411012737045777510,	
+-0.411058318012058000,	-0.411103897950692740,	-0.411149476861568160,	-0.411195054744569410,	-0.411240631599583070,	-0.411286207426495130,	-0.411331782225192120,	-0.411377355995559250,	
+-0.411422928737482930,	-0.411468500450849710,	-0.411514071135544890,	-0.411559640791454850,	-0.411605209418465680,	-0.411650777016463910,	-0.411696343585334800,	-0.411741909124964830,	
+-0.411787473635240100,	-0.411833037116047070,	-0.411878599567271080,	-0.411924160988798580,	-0.411969721380515690,	-0.412015280742308860,	-0.412060839074063430,	-0.412106396375665930,	
+-0.412151952647002380,	-0.412197507887959390,	-0.412243062098422260,	-0.412288615278277430,	-0.412334167427411470,	-0.412379718545709710,	-0.412425268633058670,	-0.412470817689344400,	
+-0.412516365714453550,	-0.412561912708271360,	-0.412607458670684380,	-0.412653003601578750,	-0.412698547500841010,	-0.412744090368356520,	-0.412789632204011770,	-0.412835173007693010,	
+-0.412880712779286670,	-0.412926251518678120,	-0.412971789225753950,	-0.413017325900400360,	-0.413062861542503820,	-0.413108396151949720,	-0.413153929728624640,	-0.413199462272415160,	
+-0.413244993783206560,	-0.413290524260885530,	-0.413336053705338210,	-0.413381582116451100,	-0.413427109494109660,	-0.413472635838200430,	-0.413518161148609620,	-0.413563685425223810,	
+-0.413609208667928390,	-0.413654730876609980,	-0.413700252051154680,	-0.413745772191449200,	-0.413791291297378850,	-0.413836809368830330,	-0.413882326405689730,	-0.413927842407843750,	
+-0.413973357375177710,	-0.414018871307578310,	-0.414064384204931750,	-0.414109896067124620,	-0.414155406894042340,	-0.414200916685571520,	-0.414246425441598840,	-0.414291933162009740,	
+-0.414337439846690750,	-0.414382945495528180,	-0.414428450108408620,	-0.414473953685217560,	-0.414519456225841580,	-0.414564957730166990,	-0.414610458198080400,	-0.414655957629467280,	
+-0.414701456024214270,	-0.414746953382207570,	-0.414792449703333950,	-0.414837944987478780,	-0.414883439234528750,	-0.414928932444370120,	-0.414974424616889550,	-0.415019915751972500,	
+-0.415065405849505690,	-0.415110894909375750,	-0.415156382931468230,	-0.415201869915669710,	-0.415247355861866510,	-0.415292840769945330,	-0.415338324639791590,	-0.415383807471292110,	
+-0.415429289264333090,	-0.415474770018801230,	-0.415520249734582070,	-0.415565728411562310,	-0.415611206049628200,	-0.415656682648666450,	-0.415702158208562660,	-0.415747632729203400,	
+-0.415793106210475110,	-0.415838578652264420,	-0.415884050054456890,	-0.415929520416939260,	-0.415974989739598230,	-0.416020458022319290,	-0.416065925264989200,	-0.416111391467494320,	
+-0.416156856629721410,	-0.416202320751555890,	-0.416247783832884580,	-0.416293245873593840,	-0.416338706873570330,	-0.416384166832699740,	-0.416429625750868670,	-0.416475083627963540,	
+-0.416520540463871100,	-0.416565996258476900,	-0.416611451011667740,	-0.416656904723329950,	-0.416702357393350320,	-0.416747809021614350,	-0.416793259608008840,	-0.416838709152420220,	
+-0.416884157654735240,	-0.416929605114839450,	-0.416975051532619660,	-0.417020496907962610,	-0.417065941240753910,	-0.417111384530880420,	-0.417156826778228410,	-0.417202267982684780,	
+-0.417247708144135030,	-0.417293147262466020,	-0.417338585337564180,	-0.417384022369316270,	-0.417429458357607860,	-0.417474893302325840,	-0.417520327203356580,	-0.417565760060586880,	
+-0.417611191873902440,	-0.417656622643189980,	-0.417702052368335960,	-0.417747481049227210,	-0.417792908685749360,	-0.417838335277789240,	-0.417883760825233710,	-0.417929185327968300,	
+-0.417974608785880000,	-0.418020031198855170,	-0.418065452566780630,	-0.418110872889542070,	-0.418156292167026320,	-0.418201710399119910,	-0.418247127585709530,	-0.418292543726680950,	
+-0.418337958821921040,	-0.418383372871316220,	-0.418428785874753410,	-0.418474197832118200,	-0.418519608743297470,	-0.418565018608177740,	-0.418610427426645890,	-0.418655835198587510,	
+-0.418701241923889580,	-0.418746647602438960,	-0.418792052234121300,	-0.418837455818823530,	-0.418882858356432130,	-0.418928259846833960,	-0.418973660289914730,	-0.419019059685561360,	
+-0.419064458033660330,	-0.419109855334098560,	-0.419155251586761760,	-0.419200646791536850,	-0.419246040948310310,	-0.419291434056969060,	-0.419336826117398810,	-0.419382217129486530,	
+-0.419427607093118660,	-0.419472996008182220,	-0.419518383874562860,	-0.419563770692147560,	-0.419609156460822810,	-0.419654541180475570,	-0.419699924850991610,	-0.419745307472257800,	
+-0.419790689044161170,	-0.419836069566587370,	-0.419881449039423430,	-0.419926827462555830,	-0.419972204835871610,	-0.420017581159256470,	-0.420062956432597330,	-0.420108330655780850,	
+-0.420153703828693940,	-0.420199075951222300,	-0.420244447023253030,	-0.420289817044672660,	-0.420335186015368120,	-0.420380553935225220,	-0.420425920804130940,	-0.420471286621971860,	
+-0.420516651388634920,	-0.420562015104005980,	-0.420607377767972020,	-0.420652739380420030,	-0.420698099941235750,	-0.420743459450306220,	-0.420788817907518100,	-0.420834175312758300,	
+-0.420879531665912630,	-0.420924886966868190,	-0.420970241215511460,	-0.421015594411729590,	-0.421060946555408320,	-0.421106297646434700,	-0.421151647684695260,	-0.421196996670077210,	
+-0.421242344602466180,	-0.421287691481749330,	-0.421333037307813240,	-0.421378382080544960,	-0.421423725799830340,	-0.421469068465556370,	-0.421514410077610150,	-0.421559750635877530,	
+-0.421605090140245500,	-0.421650428590600760,	-0.421695765986830340,	-0.421741102328820060,	-0.421786437616457070,	-0.421831771849628000,	-0.421877105028219900,	-0.421922437152118630,	
+-0.421967768221211240,	-0.422013098235384470,	-0.422058427194525350,	-0.422103755098519720,	-0.422149081947254760,	-0.422194407740617060,	-0.422239732478493720,	-0.422285056160770720,	
+-0.422330378787335040,	-0.422375700358073760,	-0.422421020872872920,	-0.422466340331619450,	-0.422511658734200160,	-0.422556976080502130,	-0.422602292370411300,	-0.422647607603814700,	
+-0.422692921780599080,	-0.422738234900651540,	-0.422783546963858000,	-0.422828857970105660,	-0.422874167919281120,	-0.422919476811271570,	-0.422964784645962930,	-0.423010091423242360,	
+-0.423055397142996560,	-0.423100701805112610,	-0.423146005409476560,	-0.423191307955975480,	-0.423236609444496090,	-0.423281909874925640,	-0.423327209247150000,	-0.423372507561056320,	
+-0.423417804816531800,	-0.423463101013462300,	-0.423508396151735080,	-0.423553690231236900,	-0.423598983251854910,	-0.423644275213475030,	-0.423689566115984460,	-0.423734855959269960,	
+-0.423780144743218730,	-0.423825432467716760,	-0.423870719132651170,	-0.423916004737908800,	-0.423961289283376840,	-0.424006572768941270,	-0.424051855194489240,	-0.424097136559907550,	
+-0.424142416865083470,	-0.424187696109902870,	-0.424232974294253110,	-0.424278251418021280,	-0.424323527481093420,	-0.424368802483356730,	-0.424414076424698080,	-0.424459349305004620,	
+-0.424504621124162370,	-0.424549891882058550,	-0.424595161578580020,	-0.424640430213614030,	-0.424685697787046510,	-0.424730964298764780,	-0.424776229748655590,	-0.424821494136606250,	
+-0.424866757462502800,	-0.424912019726232440,	-0.424957280927682040,	-0.425002541066738790,	-0.425047800143288860,	-0.425093058157219370,	-0.425138315108417650,	-0.425183570996769790,	
+-0.425228825822162930,	-0.425274079584484040,	-0.425319332283620400,	-0.425364583919457970,	-0.425409834491884080,	-0.425455084000785630,	-0.425500332446049840,	-0.425545579827562860,	
+-0.425590826145211880,	-0.425636071398883880,	-0.425681315588466060,	-0.425726558713844570,	-0.425771800774906670,	-0.425817041771539280,	-0.425862281703629720,	-0.425907520571064010,	
+-0.425952758373729530,	-0.425997995111513150,	-0.426043230784302170,	-0.426088465391982700,	-0.426133698934442080,	-0.426178931411567650,	-0.426224162823245430,	-0.426269393169362850,	
+-0.426314622449806780,	-0.426359850664464520,	-0.426405077813222230,	-0.426450303895967280,	-0.426495528912586570,	-0.426540752862967440,	-0.426585975746996030,	-0.426631197564559640,	
+-0.426676418315545310,	-0.426721637999840310,	-0.426766856617330830,	-0.426812074167904180,	-0.426857290651447340,	-0.426902506067847690,	-0.426947720416991360,	-0.426992933698765790,	
+-0.427038145913058220,	-0.427083357059754920,	-0.427128567138743200,	-0.427173776149910090,	-0.427218984093142910,	-0.427264190968327910,	-0.427309396775352400,	-0.427354601514103370,	
+-0.427399805184468300,	-0.427445007786333320,	-0.427490209319585760,	-0.427535409784112700,	-0.427580609179801560,	-0.427625807506538450,	-0.427671004764210830,	-0.427716200952705680,	
+-0.427761396071910490,	-0.427806590121711350,	-0.427851783101995730,	-0.427896975012651120,	-0.427942165853563590,	-0.427987355624620700,	-0.428032544325709420,	-0.428077731956717170,	
+-0.428122918517530150,	-0.428168104008035900,	-0.428213288428121340,	-0.428258471777674010,	-0.428303654056580050,	-0.428348835264727000,	-0.428394015402001840,	-0.428439194468292040,	
+-0.428484372463483810,	-0.428529549387464740,	-0.428574725240121750,	-0.428619900021342310,	-0.428665073731012760,	-0.428710246369020550,	-0.428755417935253070,	-0.428800588429596670,	
+-0.428845757851938790,	-0.428890926202166570,	-0.428936093480167370,	-0.428981259685827570,	-0.429026424819034580,	-0.429071588879675560,	-0.429116751867637980,	-0.429161913782808100,	
+-0.429207074625073460,	-0.429252234394321090,	-0.429297393090438570,	-0.429342550713312180,	-0.429387707262829380,	-0.429432862738877320,	-0.429478017141343480,	-0.429523170470114240,	
+-0.429568322725077060,	-0.429613473906119090,	-0.429658624013127820,	-0.429703773045989560,	-0.429748921004591890,	-0.429794067888822350,	-0.429839213698567200,	-0.429884358433714030,	
+-0.429929502094149930,	-0.429974644679762540,	-0.430019786190438070,	-0.430064926626064210,	-0.430110065986527960,	-0.430155204271717000,	-0.430200341481517590,	-0.430245477615817380,	
+-0.430290612674503410,	-0.430335746657463380,	-0.430380879564583540,	-0.430426011395751480,	-0.430471142150854410,	-0.430516271829779920,	-0.430561400432414310,	-0.430606527958645240,	
+-0.430651654408360170,	-0.430696779781445660,	-0.430741904077789120,	-0.430787027297277860,	-0.430832149439799420,	-0.430877270505240220,	-0.430922390493487850,	-0.430967509404429520,	
+-0.431012627237952750,	-0.431057743993944090,	-0.431102859672291010,	-0.431147974272880820,	-0.431193087795601060,	-0.431238200240338210,	-0.431283311606979860,	-0.431328421895413210,	
+-0.431373531105525900,	-0.431418639237204420,	-0.431463746290336290,	-0.431508852264809170,	-0.431553957160509590,	-0.431599060977325030,	-0.431644163715142910,	-0.431689265373850720,	
+-0.431734365953334980,	-0.431779465453483340,	-0.431824563874183050,	-0.431869661215321720,	-0.431914757476785820,	-0.431959852658463090,	-0.432004946760240700,	-0.432050039782006290,	
+-0.432095131723646440,	-0.432140222585048750,	-0.432185312366100530,	-0.432230401066689360,	-0.432275488686701850,	-0.432320575226025570,	-0.432365660684547900,	-0.432410745062156430,	
+-0.432455828358737750,	-0.432500910574179440,	-0.432545991708369330,	-0.432591071761193770,	-0.432636150732540580,	-0.432681228622296970,	-0.432726305430350730,	-0.432771381156588310,	
+-0.432816455800897450,	-0.432861529363165410,	-0.432906601843280000,	-0.432951673241127650,	-0.432996743556596120,	-0.433041812789572710,	-0.433086880939945180,	-0.433131948007600080,	
+-0.433177013992425090,	-0.433222078894307580,	-0.433267142713135270,	-0.433312205448794670,	-0.433357267101173620,	-0.433402327670159740,	-0.433447387155639690,	-0.433492445557501100,	
+-0.433537502875631480,	-0.433582559109918440,	-0.433627614260248650,	-0.433672668326509800,	-0.433717721308589270,	-0.433762773206374850,	-0.433807824019753100,	-0.433852873748611810,	
+-0.433897922392838310,	-0.433942969952320400,	-0.433988016426944680,	-0.434033061816598900,	-0.434078106121170480,	-0.434123149340547190,	-0.434168191474615610,	-0.434213232523263600,	
+-0.434258272486378880,	-0.434303311363848090,	-0.434348349155558980,	-0.434393385861399030,	-0.434438421481256000,	-0.434483456015016530,	-0.434528489462568450,	-0.434573521823799100,	
+-0.434618553098596370,	-0.434663583286846840,	-0.434708612388438390,	-0.434753640403258370,	-0.434798667331194650,	-0.434843693172133890,	-0.434888717925963840,	-0.434933741592572090,	
+-0.434978764171846280,	-0.435023785663673220,	-0.435068806067940680,	-0.435113825384536580,	-0.435158843613347450,	-0.435203860754261210,	-0.435248876807165340,	-0.435293891771947660,	
+-0.435338905648494870,	-0.435383918436694830,	-0.435428930136434970,	-0.435473940747603210,	-0.435518950270086190,	-0.435563958703771790,	-0.435608966048547490,	-0.435653972304301140,	
+-0.435698977470919510,	-0.435743981548290420,	-0.435788984536301380,	-0.435833986434840280,	-0.435878987243793810,	-0.435923986963049850,	-0.435968985592495970,	-0.436013983132020000,	
+-0.436058979581508630,	-0.436103974940849900,	-0.436148969209931570,	-0.436193962388640440,	-0.436238954476864390,	-0.436283945474490950,	-0.436328935381408100,	-0.436373924197502430,	
+-0.436418911922662020,	-0.436463898556774310,	-0.436508884099727210,	-0.436553868551407540,	-0.436598851911703220,	-0.436643834180501730,	-0.436688815357691050,	-0.436733795443157990,	
+-0.436778774436790360,	-0.436823752338475870,	-0.436868729148102370,	-0.436913704865556640,	-0.436958679490726640,	-0.437003653023500360,	-0.437048625463764550,	-0.437093596811407140,	
+-0.437138567066315760,	-0.437183536228378360,	-0.437228504297481720,	-0.437273471273513850,	-0.437318437156362260,	-0.437363401945915000,	-0.437408365642058870,	-0.437453328244681750,	
+-0.437498289753671390,	-0.437543250168915650,	-0.437588209490301420,	-0.437633167717716600,	-0.437678124851048900,	-0.437723080890186300,	-0.437768035835015610,	-0.437812989685424810,	
+-0.437857942441301940,	-0.437902894102533800,	-0.437947844669008430,	-0.437992794140613480,	-0.438037742517236930,	-0.438082689798765580,	-0.438127635985087580,	-0.438172581076090420,	
+-0.438217525071662230,	-0.438262467971689830,	-0.438307409776061310,	-0.438352350484664200,	-0.438397290097386650,	-0.438442228614115470,	-0.438487166034738700,	-0.438532102359144030,	
+-0.438577037587219500,	-0.438621971718851980,	-0.438666904753929500,	-0.438711836692339760,	-0.438756767533970860,	-0.438801697278709660,	-0.438846625926444190,	-0.438891553477062550,	
+-0.438936479930451650,	-0.438981405286499540,	-0.439026329545093910,	-0.439071252706122850,	-0.439116174769473230,	-0.439161095735033260,	-0.439206015602690460,	-0.439250934372333090,	
+-0.439295852043847970,	-0.439340768617123180,	-0.439385684092046480,	-0.439430598468506020,	-0.439475511746388600,	-0.439520423925582440,	-0.439565335005975220,	-0.439610244987455050,	
+-0.439655153869908830,	-0.439700061653224780,	-0.439744968337290990,	-0.439789873921994310,	-0.439834778407223010,	-0.439879681792864740,	-0.439924584078807690,	-0.439969485264938730,	
+-0.440014385351146060,	-0.440059284337317500,	-0.440104182223341080,	-0.440149079009103770,	-0.440193974694493840,	-0.440238869279398930,	-0.440283762763707230,	-0.440328655147305740,	
+-0.440373546430082590,	-0.440418436611925590,	-0.440463325692722950,	-0.440508213672361540,	-0.440553100550729600,	-0.440597986327715300,	-0.440642871003205650,	-0.440687754577088860,	
+-0.440732637049252640,	-0.440777518419585230,	-0.440822398687973630,	-0.440867277854306020,	-0.440912155918470220,	-0.440957032880354480,	-0.441001908739845680,	-0.441046783496832180,	
+-0.441091657151201690,	-0.441136529702842450,	-0.441181401151641450,	-0.441226271497487000,	-0.441271140740266850,	-0.441316008879869270,	-0.441360875916181280,	-0.441405741849091090,	
+-0.441450606678486900,	-0.441495470404255850,	-0.441540333026286090,	-0.441585194544465490,	-0.441630054958682350,	-0.441674914268823600,	-0.441719772474777620,	-0.441764629576432200,	
+-0.441809485573675610,	-0.441854340466394880,	-0.441899194254478320,	-0.441944046937813810,	-0.441988898516289530,	-0.442033748989792640,	-0.442078598358211340,	-0.442123446621433550,	
+-0.442168293779347580,	-0.442213139831840460,	-0.442257984778800460,	-0.442302828620115550,	-0.442347671355673930,	-0.442392512985362750,	-0.442437353509070260,	-0.442482192926684780,	
+-0.442527031238093450,	-0.442571868443184580,	-0.442616704541845980,	-0.442661539533966030,	-0.442706373419431810,	-0.442751206198131690,	-0.442796037869953580,	-0.442840868434785710,	
+-0.442885697892515310,	-0.442930526243030640,	-0.442975353486219690,	-0.443020179621970770,	-0.443065004650170960,	-0.443109828570708630,	-0.443154651383471760,	-0.443199473088348620,	
+-0.443244293685226440,	-0.443289113173993500,	-0.443333931554538210,	-0.443378748826747660,	-0.443423564990510280,	-0.443468380045713930,	-0.443513193992247030,	-0.443558006829996800,	
+-0.443602818558851530,	-0.443647629178699210,	-0.443692438689428200,	-0.443737247090925710,	-0.443782054383080100,	-0.443826860565779360,	-0.443871665638911890,	-0.443916469602364800,	
+-0.443961272456026570,	-0.444006074199785160,	-0.444050874833528950,	-0.444095674357145200,	-0.444140472770522210,	-0.444185270073548470,	-0.444230066266111110,	-0.444274861348098630,	
+-0.444319655319398990,	-0.444364448179900620,	-0.444409239929490720,	-0.444454030568057710,	-0.444498820095489630,	-0.444543608511674900,	-0.444588395816500730,	-0.444633182009855580,	
+-0.444677967091627490,	-0.444722751061704890,	-0.444767533919974980,	-0.444812315666326290,	-0.444857096300646740,	-0.444901875822824920,	-0.444946654232747980,	-0.444991431530304400,	
+-0.445036207715382210,	-0.445080982787869950,	-0.445125756747654810,	-0.445170529594625270,	-0.445215301328669820,	-0.445260071949675760,	-0.445304841457531460,	-0.445349609852125070,	
+-0.445394377133345070,	-0.445439143301078700,	-0.445483908355214510,	-0.445528672295640530,	-0.445573435122245230,	-0.445618196834915990,	-0.445662957433541280,	-0.445707716918009140,	
+-0.445752475288208110,	-0.445797232544025480,	-0.445841988685349800,	-0.445886743712069160,	-0.445931497624072030,	-0.445976250421245720,	-0.446021002103478840,	-0.446065752670659840,	
+-0.446110502122676060,	-0.446155250459416010,	-0.446199997680767850,	-0.446244743786620100,	-0.446289488776860090,	-0.446334232651376340,	-0.446378975410057060,	-0.446423717052790660,	
+-0.446468457579464630,	-0.446513196989967440,	-0.446557935284187250,	-0.446602672462012630,	-0.446647408523330900,	-0.446692143468030710,	-0.446736877296000090,	-0.446781610007127740,	
+-0.446826341601300910,	-0.446871072078408260,	-0.446915801438338310,	-0.446960529680978490,	-0.447005256806217330,	-0.447049982813943040,	-0.447094707704044190,	-0.447139431476408170,	
+-0.447184154130923550,	-0.447228875667478540,	-0.447273596085961730,	-0.447318315386260600,	-0.447363033568263620,	-0.447407750631859060,	-0.447452466576935550,	-0.447497181403380460,	
+-0.447541895111082440,	-0.447586607699929640,	-0.447631319169810750,	-0.447676029520613140,	-0.447720738752225510,	-0.447765446864536340,	-0.447810153857433220,	-0.447854859730804740,	
+-0.447899564484539050,	-0.447944268118524890,	-0.447988970632649640,	-0.448033672026801940,	-0.448078372300870110,	-0.448123071454742730,	-0.448167769488307280,	-0.448212466401452400,	
+-0.448257162194066310,	-0.448301856866037800,	-0.448346550417254190,	-0.448391242847604180,	-0.448435934156976130,	-0.448480624345258590,	-0.448525313412339140,	-0.448570001358106370,	
+-0.448614688182448600,	-0.448659373885254510,	-0.448704058466411590,	-0.448748741925808550,	-0.448793424263334020,	-0.448838105478875540,	-0.448882785572321810,	-0.448927464543561080,	
+-0.448972142392482120,	-0.449016819118972400,	-0.449061494722920620,	-0.449106169204215140,	-0.449150842562744570,	-0.449195514798396590,	-0.449240185911059740,	-0.449284855900622450,	
+-0.449329524766973410,	-0.449374192510000160,	-0.449418859129591450,	-0.449463524625635600,	-0.449508188998021310,	-0.449552852246636160,	-0.449597514371368910,	-0.449642175372108210,	
+-0.449686835248741700,	-0.449731494001158140,	-0.449776151629245780,	-0.449820808132893490,	-0.449865463511988750,	-0.449910117766420370,	-0.449954770896076720,	-0.449999422900846490,	
+-0.450044073780617340,	-0.450088723535277960,	-0.450133372164716830,	-0.450178019668822650,	-0.450222666047483010,	-0.450267311300586730,	-0.450311955428022100,	-0.450356598429678070,	
+-0.450401240305442100,	-0.450445881055203000,	-0.450490520678849650,	-0.450535159176269630,	-0.450579796547351640,	-0.450624432791984160,	-0.450669067910056060,	-0.450713701901454820,	
+-0.450758334766069360,	-0.450802966503788090,	-0.450847597114499730,	-0.450892226598092080,	-0.450936854954453790,	-0.450981482183473390,	-0.451026108285039640,	-0.451070733259040290,	
+-0.451115357105364050,	-0.451159979823899440,	-0.451204601414535280,	-0.451249221877159210,	-0.451293841211660110,	-0.451338459417926390,	-0.451383076495846910,	-0.451427692445309340,	
+-0.451472307266202580,	-0.451516920958415390,	-0.451561533521835530,	-0.451606144956351820,	-0.451650755261852780,	-0.451695364438227220,	-0.451739972485362910,	-0.451784579403148590,	
+-0.451829185191472860,	-0.451873789850224580,	-0.451918393379291410,	-0.451962995778562250,	-0.452007597047925590,	-0.452052197187270350,	-0.452096796196484240,	-0.452141394075456120,	
+-0.452185990824074510,	-0.452230586442228300,	-0.452275180929805290,	-0.452319774286694290,	-0.452364366512784220,	-0.452408957607962900,	-0.452453547572119140,	-0.452498136405141530,	
+-0.452542724106918980,	-0.452587310677339210,	-0.452631896116291180,	-0.452676480423663370,	-0.452721063599344830,	-0.452765645643223190,	-0.452810226555187430,	-0.452854806335126090,	
+-0.452899384982928140,	-0.452943962498481350,	-0.452988538881674670,	-0.453033114132396610,	-0.453077688250536180,	-0.453122261235981090,	-0.453166833088620380,	-0.453211403808343020,	
+-0.453255973395036700,	-0.453300541848590480,	-0.453345109168892870,	-0.453389675355832910,	-0.453434240409298360,	-0.453478804329178200,	-0.453523367115361060,	-0.453567928767735880,	
+-0.453612489286190470,	-0.453657048670613850,	-0.453701606920894620,	-0.453746164036921750,	-0.453790720018583060,	-0.453835274865767580,	-0.453879828578363950,	-0.453924381156261100,	
+-0.453968932599346900,	-0.454013482907510420,	-0.454058032080640610,	-0.454102580118625310,	-0.454147127021353510,	-0.454191672788713970,	-0.454236217420595610,	-0.454280760916886350,	
+-0.454325303277475110,	-0.454369844502250650,	-0.454414384591102010,	-0.454458923543916980,	-0.454503461360584670,	-0.454547998040993660,	-0.454592533585033100,	-0.454637067992590740,	
+-0.454681601263555780,	-0.454726133397816810,	-0.454770664395262870,	-0.454815194255781870,	-0.454859722979262910,	-0.454904250565594640,	-0.454948777014666130,	-0.454993302326365310,	
+-0.455037826500581220,	-0.455082349537202950,	-0.455126871436118410,	-0.455171392197216700,	-0.455215911820386450,	-0.455260430305516880,	-0.455304947652495850,	-0.455349463861212440,	
+-0.455393978931555370,	-0.455438492863413700,	-0.455483005656675430,	-0.455527517311229700,	-0.455572027826965150,	-0.455616537203770880,	-0.455661045441534910,	-0.455705552540146330,	
+-0.455750058499493850,	-0.455794563319466610,	-0.455839066999952580,	-0.455883569540840920,	-0.455928070942020700,	-0.455972571203379860,	-0.456017070324807650,	-0.456061568306192770,	
+-0.456106065147424360,	-0.456150560848390340,	-0.456195055408979980,	-0.456239548829081960,	-0.456284041108585450,	-0.456328532247378460,	-0.456373022245350150,	-0.456417511102389260,	
+-0.456461998818385010,	-0.456506485393225360,	-0.456550970826799460,	-0.456595455118996190,	-0.456639938269704610,	-0.456684420278812840,	-0.456728901146210010,	-0.456773380871785370,	
+-0.456817859455426800,	-0.456862336897023660,	-0.456906813196464590,	-0.456951288353638960,	-0.456995762368434700,	-0.457040235240741000,	-0.457084706970446730,	-0.457129177557441090,	
+-0.457173647001612120,	-0.457218115302849000,	-0.457262582461040620,	-0.457307048476076170,	-0.457351513347843690,	-0.457395977076232470,	-0.457440439661131240,	-0.457484901102429340,	
+-0.457529361400014820,	-0.457573820553776880,	-0.457618278563604370,	-0.457662735429386620,	-0.457707191151011550,	-0.457751645728368570,	-0.457796099161346840,	-0.457840551449834490,	
+-0.457885002593720720,	-0.457929452592894470,	-0.457973901447244980,	-0.458018349156660340,	-0.458062795721029810,	-0.458107241140242320,	-0.458151685414187100,	-0.458196128542752320,	
+-0.458240570525827170,	-0.458285011363300580,	-0.458329451055061900,	-0.458373889600999170,	-0.458418327001001770,	-0.458462763254958490,	-0.458507198362758720,	-0.458551632324290530,	
+-0.458596065139443290,	-0.458640496808106310,	-0.458684927330167640,	-0.458729356705516680,	-0.458773784934042310,	-0.458818212015633890,	-0.458862637950179560,	-0.458907062737568590,	
+-0.458951486377690010,	-0.458995908870433070,	-0.459040330215686020,	-0.459084750413338070,	-0.459129169463278310,	-0.459173587365395990,	-0.459218004119579300,	-0.459262419725717570,	
+-0.459306834183699890,	-0.459351247493415440,	-0.459395659654752490,	-0.459440070667600400,	-0.459484480531848540,	-0.459528889247385050,	-0.459573296814099360,	-0.459617703231880390,	
+-0.459662108500617620,	-0.459706512620199130,	-0.459750915590514400,	-0.459795317411452350,	-0.459839718082902470,	-0.459884117604752840,	-0.459928515976892880,	-0.459972913199211690,	
+-0.460017309271598620,	-0.460061704193941820,	-0.460106097966130830,	-0.460150490588054570,	-0.460194882059602460,	-0.460239272380662760,	-0.460283661551124880,	-0.460328049570878250,	
+-0.460372436439811070,	-0.460416822157812820,	-0.460461206724772530,	-0.460505590140579620,	-0.460549972405122300,	-0.460594353518290090,	-0.460638733479971970,	-0.460683112290057430,	
+-0.460727489948434710,	-0.460771866454993300,	-0.460816241809622160,	-0.460860616012210840,	-0.460904989062647600,	-0.460949360960821840,	-0.460993731706622720,	-0.461038101299939660,	
+-0.461082469740660970,	-0.461126837028676070,	-0.461171203163874110,	-0.461215568146144510,	-0.461259931975375570,	-0.461304294651456840,	-0.461348656174277780,	-0.461393016543726660,	
+-0.461437375759693010,	-0.461481733822065920,	-0.461526090730734860,	-0.461570446485588200,	-0.461614801086515480,	-0.461659154533405670,	-0.461703506826148410,	-0.461747857964632020,	
+-0.461792207948745930,	-0.461836556778379310,	-0.461880904453421730,	-0.461925250973761530,	-0.461969596339288140,	-0.462013940549890760,	-0.462058283605458970,	-0.462102625505881050,	
+-0.462146966251046560,	-0.462191305840845060,	-0.462235644275164890,	-0.462279981553895600,	-0.462324317676926390,	-0.462368652644146780,	-0.462412986455445100,	-0.462457319110710970,	
+-0.462501650609833560,	-0.462545980952702440,	-0.462590310139205930,	-0.462634638169233670,	-0.462678965042674810,	-0.462723290759418930,	-0.462767615319354400,	-0.462811938722370860,	
+-0.462856260968357470,	-0.462900582057203800,	-0.462944901988798340,	-0.462989220763030560,	-0.463033538379790170,	-0.463077854838965520,	-0.463122170140446210,	-0.463166484284121550,	
+-0.463210797269881010,	-0.463255109097613080,	-0.463299419767207400,	-0.463343729278553160,	-0.463388037631540020,	-0.463432344826056330,	-0.463476650861991860,	-0.463520955739235680,	
+-0.463565259457677570,	-0.463609562017205880,	-0.463653863417710310,	-0.463698163659080060,	-0.463742462741204790,	-0.463786760663973010,	-0.463831057427274320,	-0.463875353030997920,	
+-0.463919647475033610,	-0.463963940759269720,	-0.464008232883596050,	-0.464052523847902130,	-0.464096813652076560,	-0.464141102296008910,	-0.464185389779588560,	-0.464229676102705100,	
+-0.464273961265247060,	-0.464318245267104080,	-0.464362528108165530,	-0.464406809788321050,	-0.464451090307459120,	-0.464495369665469500,	-0.464539647862241440,	-0.464583924897664650,	
+-0.464628200771627640,	-0.464672475484020130,	-0.464716749034731480,	-0.464761021423651330,	-0.464805292650668220,	-0.464849562715671900,	-0.464893831618552020,	-0.464938099359197220,	
+-0.464982365937497140,	-0.465026631353341160,	-0.465070895606618960,	-0.465115158697219200,	-0.465159420625031460,	-0.465203681389945220,	-0.465247940991850180,	-0.465292199430634880,	
+-0.465336456706189060,	-0.465380712818402100,	-0.465424967767163800,	-0.465469221552362640,	-0.465513474173888440,	-0.465557725631630560,	-0.465601975925478750,	-0.465646225055321610,	
+-0.465690473021048930,	-0.465734719822550440,	-0.465778965459714760,	-0.465823209932431650,	-0.465867453240590530,	-0.465911695384081170,	-0.465955936362792200,	-0.466000176176613320,	
+-0.466044414825434070,	-0.466088652309144150,	-0.466132888627632250,	-0.466177123780788070,	-0.466221357768501100,	-0.466265590590661140,	-0.466309822247156780,	-0.466354052737877890,	
+-0.466398282062713830,	-0.466442510221554530,	-0.466486737214288520,	-0.466530963040805660,	-0.466575187700995820,	-0.466619411194747590,	-0.466663633521950840,	-0.466707854682494980,	
+-0.466752074676269890,	-0.466796293503164210,	-0.466840511163067850,	-0.466884727655870190,	-0.466928942981461090,	-0.466973157139729200,	-0.467017370130564490,	-0.467061581953856330,	
+-0.467105792609494590,	-0.467150002097368010,	-0.467194210417366360,	-0.467238417569379230,	-0.467282623553296470,	-0.467326828369006740,	-0.467371032016399900,	-0.467415234495365540,	
+-0.467459435805793470,	-0.467503635947572380,	-0.467547834920592260,	-0.467592032724742920,	-0.467636229359913110,	-0.467680424825992700,	-0.467724619122871220,	-0.467768812250438650,	
+-0.467813004208583630,	-0.467857194997196080,	-0.467901384616165540,	-0.467945573065381930,	-0.467989760344734000,	-0.468033946454111670,	-0.468078131393404480,	-0.468122315162502360,	
+-0.468166497761294040,	-0.468210679189669520,	-0.468254859447518270,	-0.468299038534730260,	-0.468343216451194260,	-0.468387393196800230,	-0.468431568771438100,	-0.468475743174996680,	
+-0.468519916407365900,	-0.468564088468435280,	-0.468608259358094910,	-0.468652429076233450,	-0.468696597622740910,	-0.468740764997506890,	-0.468784931200421360,	-0.468829096231373090,	
+-0.468873260090252100,	-0.468917422776947920,	-0.468961584291350600,	-0.469005744633348930,	-0.469049903802832900,	-0.469094061799692150,	-0.469138218623816610,	-0.469182374275095070,	
+-0.469226528753417640,	-0.469270682058674340,	-0.469314834190753870,	-0.469358985149546330,	-0.469403134934941350,	-0.469447283546828910,	-0.469491430985097820,	-0.469535577249638240,	
+-0.469579722340339620,	-0.469623866257092180,	-0.469668008999784610,	-0.469712150568307060,	-0.469756290962549120,	-0.469800430182400860,	-0.469844568227751110,	-0.469888705098489960,	
+-0.469932840794507030,	-0.469976975315692440,	-0.470021108661934970,	-0.470065240833124730,	-0.470109371829151410,	-0.470153501649905050,	-0.470197630295274500,	-0.470241757765149930,	
+-0.470285884059421340,	-0.470330009177977630,	-0.470374133120708910,	-0.470418255887504850,	-0.470462377478255590,	-0.470506497892849930,	-0.470550617131178070,	-0.470594735193129670,	
+-0.470638852078594790,	-0.470682967787462380,	-0.470727082319622570,	-0.470771195674965060,	-0.470815307853379940,	-0.470859418854756180,	-0.470903528678983880,	-0.470947637325952740,	
+-0.470991744795552890,	-0.471035851087673320,	-0.471079956202204050,	-0.471124060139035350,	-0.471168162898056080,	-0.471212264479156430,	-0.471256364882226110,	-0.471300464107155260,	
+-0.471344562153832860,	-0.471388659022149050,	-0.471432754711993580,	-0.471476849223256610,	-0.471520942555827160,	-0.471565034709595320,	-0.471609125684450960,	-0.471653215480284100,	
+-0.471697304096983850,	-0.471741391534440340,	-0.471785477792543320,	-0.471829562871183050,	-0.471873646770248460,	-0.471917729489629730,	-0.471961811029217080,	-0.472005891388899480,	
+-0.472049970568567230,	-0.472094048568109990,	-0.472138125387418010,	-0.472182201026380370,	-0.472226275484887210,	-0.472270348762828360,	-0.472314420860094060,	-0.472358491776573300,	
+-0.472402561512156260,	-0.472446630066732880,	-0.472490697440193290,	-0.472534763632426580,	-0.472578828643322960,	-0.472622892472772230,	-0.472666955120664700,	-0.472711016586889410,	
+-0.472755076871336500,	-0.472799135973895950,	-0.472843193894457950,	-0.472887250632911590,	-0.472931306189147080,	-0.472975360563054730,	-0.473019413754523550,	-0.473063465763443820,	
+-0.473107516589705460,	-0.473151566233198710,	-0.473195614693812660,	-0.473239661971437520,	-0.473283708065963260,	-0.473327752977280140,	-0.473371796705277180,	-0.473415839249844760,	
+-0.473459880610872800,	-0.473503920788251490,	-0.473547959781869980,	-0.473591997591618520,	-0.473636034217387150,	-0.473680069659066060,	-0.473724103916544400,	-0.473768136989712490,	
+-0.473812168878460560,	-0.473856199582677880,	-0.473900229102254710,	-0.473944257437080960,	-0.473988284587046950,	-0.474032310552041870,	-0.474076335331955980,	-0.474120358926679250,	
+-0.474164381336102000,	-0.474208402560113430,	-0.474252422598603840,	-0.474296441451463210,	-0.474340459118581860,	-0.474384475599848980,	-0.474428490895154880,	-0.474472505004389590,	
+-0.474516517927443430,	-0.474560529664205530,	-0.474604540214566380,	-0.474648549578416230,	-0.474692557755644280,	-0.474736564746141010,	-0.474780570549796280,	-0.474824575166500560,	
+-0.474868578596142950,	-0.474912580838613930,	-0.474956581893803460,	-0.475000581761601930,	-0.475044580441898510,	-0.475088577934583700,	-0.475132574239547410,	-0.475176569356680070,	
+-0.475220563285870920,	-0.475264556027010400,	-0.475308547579988470,	-0.475352537944695560,	-0.475396527121020870,	-0.475440515108854930,	-0.475484501908088050,	-0.475528487518609540,	
+-0.475572471940309830,	-0.475616455173078930,	-0.475660437216807230,	-0.475704418071384140,	-0.475748397736699910,	-0.475792376212644750,	-0.475836353499109020,	-0.475880329595982030,	
+-0.475924304503154210,	-0.475968278220515630,	-0.476012250747956720,	-0.476056222085366800,	-0.476100192232636330,	-0.476144161189655410,	-0.476188128956314460,	-0.476232095532502790,	
+-0.476276060918110870,	-0.476320025113028790,	-0.476363988117147090,	-0.476407949930355010,	-0.476451910552543050,	-0.476495869983601660,	-0.476539828223420280,	-0.476583785271889270,	
+-0.476627741128898830,	-0.476671695794339430,	-0.476715649268100390,	-0.476759601550072190,	-0.476803552640145010,	-0.476847502538209340,	-0.476891451244154550,	-0.476935398757871110,	
+-0.476979345079249220,	-0.477023290208179300,	-0.477067234144550770,	-0.477111176888254160,	-0.477155118439179630,	-0.477199058797217690,	-0.477242997962257660,	-0.477286935934190190,	
+-0.477330872712905750,	-0.477374808298293760,	-0.477418742690244760,	-0.477462675888648880,	-0.477506607893396660,	-0.477550538704377580,	-0.477594468321482170,	-0.477638396744600570,	
+-0.477682323973623370,	-0.477726250008439930,	-0.477770174848940910,	-0.477814098495016440,	-0.477858020946557100,	-0.477901942203452330,	-0.477945862265592710,	-0.477989781132868440,	
+-0.478033698805170100,	-0.478077615282387130,	-0.478121530564410090,	-0.478165444651129650,	-0.478209357542435210,	-0.478253269238217370,	-0.478297179738366330,	-0.478341089042772730,	
+-0.478384997151326040,	-0.478428904063916860,	-0.478472809780435440,	-0.478516714300772360,	-0.478560617624817110,	-0.478604519752460320,	-0.478648420683592200,	-0.478692320418103450,	
+-0.478736218955883470,	-0.478780116296822990,	-0.478824012440812240,	-0.478867907387741760,	-0.478911801137501200,	-0.478955693689981140,	-0.478999585045071790,	-0.479043475202663880,	
+-0.479087364162646910,	-0.479131251924911570,	-0.479175138489348450,	-0.479219023855847080,	-0.479262908024298160,	-0.479306790994591950,	-0.479350672766619190,	-0.479394553340269370,	
+-0.479438432715433130,	-0.479482310892000830,	-0.479526187869863120,	-0.479570063648909530,	-0.479613938229030810,	-0.479657811610117280,	-0.479701683792059570,	-0.479745554774747280,	
+-0.479789424558071110,	-0.479833293141921360,	-0.479877160526188730,	-0.479921026710762870,	-0.479964891695534410,	-0.480008755480394120,	-0.480052618065231580,	-0.480096479449937440,	
+-0.480140339634402170,	-0.480184198618516360,	-0.480228056402169760,	-0.480271912985252960,	-0.480315768367656380,	-0.480359622549270780,	-0.480403475529985690,	-0.480447327309691970,	
+-0.480491177888279890,	-0.480535027265640290,	-0.480578875441662720,	-0.480622722416237940,	-0.480666568189256400,	-0.480710412760608770,	-0.480754256130184800,	-0.480798098297875120,	
+-0.480841939263570610,	-0.480885779027160840,	-0.480929617588536640,	-0.480973454947588420,	-0.481017291104206930,	-0.481061126058281830,	-0.481104959809703910,	-0.481148792358363550,	
+-0.481192623704151670,	-0.481236453846957790,	-0.481280282786672790,	-0.481324110523187130,	-0.481367937056391530,	-0.481411762386175670,	-0.481455586512430480,	-0.481499409435046270,	
+-0.481543231153913950,	-0.481587051668923130,	-0.481630870979964710,	-0.481674689086929510,	-0.481718505989707220,	-0.481762321688188610,	-0.481806136182264200,	-0.481849949471824910,	
+-0.481893761556760280,	-0.481937572436961280,	-0.481981382112318340,	-0.482025190582722360,	-0.482068997848062950,	-0.482112803908231080,	-0.482156608763117220,	-0.482200412412612240,	
+-0.482244214856605790,	-0.482288016094988840,	-0.482331816127651860,	-0.482375614954485670,	-0.482419412575380120,	-0.482463208990225990,	-0.482507004198913850,	-0.482550798201334620,	
+-0.482594590997377950,	-0.482638382586934870,	-0.482682172969896180,	-0.482725962146151650,	-0.482769750115592260,	-0.482813536878108460,	-0.482857322433591250,	-0.482901106781930320,	
+-0.482944889923016600,	-0.482988671856740660,	-0.483032452582993430,	-0.483076232101664730,	-0.483120010412645410,	-0.483163787515826060,	-0.483207563411097660,	-0.483251338098349910,	
+-0.483295111577473850,	-0.483338883848360050,	-0.483382654910899380,	-0.483426424764981710,	-0.483470193410497960,	-0.483513960847339110,	-0.483557727075394960,	-0.483601492094556500,	
+-0.483645255904714300,	-0.483689018505759400,	-0.483732779897581510,	-0.483776540080071700,	-0.483820299053120520,	-0.483864056816619040,	-0.483907813370456960,	-0.483951568714525380,	
+-0.483995322848714880,	-0.484039075772916440,	-0.484082827487019920,	-0.484126577990916350,	-0.484170327284496330,	-0.484214075367650880,	-0.484257822240269860,	-0.484301567902244270,	
+-0.484345312353465170,	-0.484389055593822390,	-0.484432797623206960,	-0.484476538441509560,	-0.484520278048621190,	-0.484564016444431760,	-0.484607753628832240,	-0.484651489601713340,	
+-0.484695224362966140,	-0.484738957912480510,	-0.484782690250147420,	-0.484826421375857630,	-0.484870151289502230,	-0.484913879990970960,	-0.484957607480155100,	-0.485001333756945150,	
+-0.485045058821232280,	-0.485088782672906340,	-0.485132505311858480,	-0.485176226737979330,	-0.485219946951160050,	-0.485263665951290450,	-0.485307383738261770,	-0.485351100311964930,	
+-0.485394815672289980,	-0.485438529819128000,	-0.485482242752369730,	-0.485525954471906160,	-0.485569664977627380,	-0.485613374269424410,	-0.485657082347188070,	-0.485700789210809340,	
+-0.485744494860178290,	-0.485788199295185960,	-0.485831902515723170,	-0.485875604521680990,	-0.485919305312949410,	-0.485963004889419570,	-0.486006703250982220,	-0.486050400397528500,	
+-0.486094096328948400,	-0.486137791045133050,	-0.486181484545973600,	-0.486225176831360070,	-0.486268867901183570,	-0.486312557755334940,	-0.486356246393705280,	-0.486399933816184630,	
+-0.486443620022664110,	-0.486487305013034610,	-0.486530988787187150,	-0.486574671345011870,	-0.486618352686399910,	-0.486662032811242100,	-0.486705711719429560,	-0.486749389410852380,	
+-0.486793065885401720,	-0.486836741142968380,	-0.486880415183443550,	-0.486924088006717330,	-0.486967759612680910,	-0.487011430001225430,	-0.487055099172241050,	-0.487098767125618890,	
+-0.487142433861249780,	-0.487186099379025020,	-0.487229763678834580,	-0.487273426760569780,	-0.487317088624121380,	-0.487360749269380670,	-0.487404408696237690,	-0.487448066904583640,	
+-0.487491723894309500,	-0.487535379665306410,	-0.487579034217464460,	-0.487622687550674950,	-0.487666339664828700,	-0.487709990559817010,	-0.487753640235529920,	-0.487797288691858790,	
+-0.487840935928694760,	-0.487884581945928040,	-0.487928226743449880,	-0.487971870321151140,	-0.488015512678923120,	-0.488059153816655930,	-0.488102793734240810,	-0.488146432431568740,	
+-0.488190069908530980,	-0.488233706165017660,	-0.488277341200920090,	-0.488320975016129140,	-0.488364607610536130,	-0.488408238984031240,	-0.488451869136505730,	-0.488495498067850590,	
+-0.488539125777957050,	-0.488582752266715330,	-0.488626377534016720,	-0.488670001579752160,	-0.488713624403813000,	-0.488757246006089390,	-0.488800866386472630,	-0.488844485544854160,	
+-0.488888103481124050,	-0.488931720195173670,	-0.488975335686894000,	-0.489018949956176400,	-0.489062563002911010,	-0.489106174826989200,	-0.489149785428302010,	-0.489193394806740680,	
+-0.489237002962195520,	-0.489280609894557790,	-0.489324215603718640,	-0.489367820089569250,	-0.489411423351999940,	-0.489455025390902130,	-0.489498626206166690,	-0.489542225797685080,	
+-0.489585824165347520,	-0.489629421309045410,	-0.489673017228670180,	-0.489716611924111980,	-0.489760205395262220,	-0.489803797642011980,	-0.489847388664252650,	-0.489890978461874400,	
+-0.489934567034768730,	-0.489978154382826660,	-0.490021740505939610,	-0.490065325403997780,	-0.490108909076892640,	-0.490152491524515290,	-0.490196072746757030,	-0.490239652743508230,	
+-0.490283231514660300,	-0.490326809060104290,	-0.490370385379731600,	-0.490413960473432610,	-0.490457534341098730,	-0.490501106982621340,	-0.490544678397890840,	-0.490588248586798670,	
+-0.490631817549235850,	-0.490675385285093860,	-0.490718951794263000,	-0.490762517076634820,	-0.490806081132100340,	-0.490849643960550970,	-0.490893205561877160,	-0.490936765935970350,	
+-0.490980325082721600,	-0.491023883002022430,	-0.491067439693763150,	-0.491110995157835300,	-0.491154549394129950,	-0.491198102402538640,	-0.491241654182951630,	-0.491285204735260550,	
+-0.491328754059356390,	-0.491372302155130780,	-0.491415849022474040,	-0.491459394661277640,	-0.491502939071433160,	-0.491546482252830930,	-0.491590024205362520,	-0.491633564928919020,	
+-0.491677104423392020,	-0.491720642688671830,	-0.491764179724650090,	-0.491807715531217880,	-0.491851250108266750,	-0.491894783455687100,	-0.491938315573370530,	-0.491981846461208180,	
+-0.492025376119091580,	-0.492068904546911160,	-0.492112431744558430,	-0.492155957711924660,	-0.492199482448901380,	-0.492243005955379010,	-0.492286528231249130,	-0.492330049276403340,	
+-0.492373569090731990,	-0.492417087674126730,	-0.492460605026478760,	-0.492504121147679660,	-0.492547636037619860,	-0.492591149696191000,	-0.492634662123284270,	-0.492678173318791210,	
+-0.492721683282602410,	-0.492765192014609330,	-0.492808699514703350,	-0.492852205782775940,	-0.492895710818717640,	-0.492939214622420070,	-0.492982717193774510,	-0.493026218532672480,	
+-0.493069718639004560,	-0.493113217512662290,	-0.493156715153537430,	-0.493200211561520330,	-0.493243706736502750,	-0.493287200678375890,	-0.493330693387031390,	-0.493374184862359840,	
+-0.493417675104252770,	-0.493461164112601490,	-0.493504651887297750,	-0.493548138428231980,	-0.493591623735295800,	-0.493635107808380660,	-0.493678590647378070,	-0.493722072252178620,	
+-0.493765552622674020,	-0.493809031758755510,	-0.493852509660314800,	-0.493895986327242460,	-0.493939461759430150,	-0.493982935956769560,	-0.494026408919151280,	-0.494069880646466950,	
+-0.494113351138607880,	-0.494156820395465880,	-0.494200288416931420,	-0.494243755202896210,	-0.494287220753251650,	-0.494330685067889410,	-0.494374148146700050,	-0.494417609989575350,	
+-0.494461070596406650,	-0.494504529967085600,	-0.494547988101502910,	-0.494591444999550210,	-0.494634900661118870,	-0.494678355086100700,	-0.494721808274386280,	-0.494765260225867310,	
+-0.494808710940435160,	-0.494852160417981630,	-0.494895608658397320,	-0.494939055661574030,	-0.494982501427403470,	-0.495025945955776260,	-0.495069389246584170,	-0.495112831299718610,	
+-0.495156272115071350,	-0.495199711692533070,	-0.495243150031995480,	-0.495286587133350000,	-0.495330022996488480,	-0.495373457621301470,	-0.495416891007680830,	-0.495460323155517970,	
+-0.495503754064704700,	-0.495547183735131620,	-0.495590612166690650,	-0.495634039359273080,	-0.495677465312770850,	-0.495720890027074530,	-0.495764313502076000,	-0.495807735737667070,	
+-0.495851156733738420,	-0.495894576490181930,	-0.495937995006888900,	-0.495981412283751370,	-0.496024828320659860,	-0.496068243117506250,	-0.496111656674182110,	-0.496155068990579150,	
+-0.496198480066588180,	-0.496241889902101000,	-0.496285298497009090,	-0.496328705851204310,	-0.496372111964577370,	-0.496415516837020180,	-0.496458920468424160,	-0.496502322858681230,	
+-0.496545724007682150,	-0.496589123915318730,	-0.496632522581482880,	-0.496675920006065360,	-0.496719316188958040,	-0.496762711130052380,	-0.496806104829240370,	-0.496849497286412760,	
+-0.496892888501461350,	-0.496936278474277680,	-0.496979667204753780,	-0.497023054692780300,	-0.497066440938249140,	-0.497109825941051960,	-0.497153209701080510,	-0.497196592218225710,	
+-0.497239973492379420,	-0.497283353523433220,	-0.497326732311278940,	-0.497370109855807540,	-0.497413486156910830,	-0.497456861214480350,	-0.497500235028408180,	-0.497543607598585010,	
+-0.497586978924902830,	-0.497630349007253560,	-0.497673717845528050,	-0.497717085439618230,	-0.497760451789415750,	-0.497803816894812460,	-0.497847180755699280,	-0.497890543371968140,	
+-0.497933904743510620,	-0.497977264870218760,	-0.498020623751983360,	-0.498063981388696340,	-0.498107337780249400,	-0.498150692926534520,	-0.498194046827442500,	-0.498237399482865380,	
+-0.498280750892694750,	-0.498324101056822680,	-0.498367449975139880,	-0.498410797647538540,	-0.498454144073910530,	-0.498497489254146780,	-0.498540833188139350,	-0.498584175875779800,	
+-0.498627517316960200,	-0.498670857511571420,	-0.498714196459505540,	-0.498757534160654100,	-0.498800870614909240,	-0.498844205822161820,	-0.498887539782303880,	-0.498930872495227110,	
+-0.498974203960823540,	-0.499017534178984090,	-0.499060863149600740,	-0.499104190872565300,	-0.499147517347769740,	-0.499190842575104990,	-0.499234166554463180,	-0.499277489285736290,	
+-0.499320810768815290,	-0.499364131003592340,	-0.499407449989958950,	-0.499450767727807390,	-0.499494084217028510,	-0.499537399457514460,	-0.499580713449156830,	-0.499624026191847870,	
+-0.499667337685478440,	-0.499710647929940630,	-0.499753956925126250,	-0.499797264670927330,	-0.499840571167234900,	-0.499883876413941000,	-0.499927180410937420,	-0.499970483158116320,	
+-0.500013784655368610,	-0.500057084902586380,	-0.500100383899661830,	-0.500143681646486040,	-0.500186978142950990,	-0.500230273388948430,	-0.500273567384370680,	-0.500316860129108480,	
+-0.500360151623054250,	-0.500403441866099640,	-0.500446730858136730,	-0.500490018599056730,	-0.500533305088751600,	-0.500576590327113210,	-0.500619874314033760,	-0.500663157049404230,	
+-0.500706438533116690,	-0.500749718765063250,	-0.500792997745135750,	-0.500836275473225400,	-0.500879551949224400,	-0.500922827173024500,	-0.500966101144518010,	-0.501009373863595790,	
+-0.501052645330150150,	-0.501095915544073290,	-0.501139184505256190,	-0.501182452213591150,	-0.501225718668970030,	-0.501268983871285050,	-0.501312247820427160,	-0.501355510516288570,	
+-0.501398771958761370,	-0.501442032147737530,	-0.501485291083108240,	-0.501528548764765710,	-0.501571805192601810,	-0.501615060366508710,	-0.501658314286377640,	-0.501701566952100890,	
+-0.501744818363570100,	-0.501788068520677700,	-0.501831317423314660,	-0.501874565071373400,	-0.501917811464746120,	-0.501961056603323910,	-0.502004300486999070,	-0.502047543115663460,	
+-0.502090784489209300,	-0.502134024607527870,	-0.502177263470511390,	-0.502220501078051830,	-0.502263737430041270,	-0.502306972526371020,	-0.502350206366933390,	-0.502393438951620140,	
+-0.502436670280323790,	-0.502479900352935330,	-0.502523129169347160,	-0.502566356729451050,	-0.502609583033139520,	-0.502652808080303660,	-0.502696031870835780,	-0.502739254404628190,	
+-0.502782475681572080,	-0.502825695701559770,	-0.502868914464483230,	-0.502912131970234770,	-0.502955348218705580,	-0.502998563209788090,	-0.503041776943374150,	-0.503084989419356200,	
+-0.503128200637625310,	-0.503171410598073910,	-0.503214619300594080,	-0.503257826745078020,	-0.503301032931417040,	-0.503344237859503440,	-0.503387441529229320,	-0.503430643940486870,	
+-0.503473845093167500,	-0.503517044987163540,	-0.503560243622366840,	-0.503603440998670050,	-0.503646637115964250,	-0.503689831974141860,	-0.503733025573095180,	-0.503776217912715650,	
+-0.503819408992895570,	-0.503862598813526910,	-0.503905787374502200,	-0.503948974675712650,	-0.503992160717050550,	-0.504035345498408120,	-0.504078529019677760,	-0.504121711280750670,	
+-0.504164892281519280,	-0.504208072021875680,	-0.504251250501712270,	-0.504294427720920260,	-0.504337603679392290,	-0.504380778377020330,	-0.504423951813696700,	-0.504467123989312930,	
+-0.504510294903761310,	-0.504553464556934280,	-0.504596632948723260,	-0.504639800079020650,	-0.504682965947718550,	-0.504726130554709380,	-0.504769293899884450,	-0.504812455983136400,	
+-0.504855616804357200,	-0.504898776363439270,	-0.504941934660274040,	-0.504985091694754030,	-0.505028247466771220,	-0.505071401976218250,	-0.505114555222986320,	-0.505157707206968070,	
+-0.505200857928055470,	-0.505244007386141170,	-0.505287155581116370,	-0.505330302512873810,	-0.505373448181305810,	-0.505416592586303780,	-0.505459735727760370,	-0.505502877605567560,	
+-0.505546018219617980,	-0.505589157569802940,	-0.505632295656014970,	-0.505675432478146280,	-0.505718568036089390,	-0.505761702329735720,	-0.505804835358977800,	-0.505847967123707720,	
+-0.505891097623818230,	-0.505934226859200530,	-0.505977354829747260,	-0.506020481535350620,	-0.506063606975903140,	-0.506106731151296340,	-0.506149854061422650,	-0.506192975706174720,	
+-0.506236096085443950,	-0.506279215199122890,	-0.506322333047103830,	-0.506365449629279430,	-0.506408564945540870,	-0.506451678995781030,	-0.506494791779891870,	-0.506537903297766160,	
+-0.506581013549295300,	-0.506624122534371950,	-0.506667230252888290,	-0.506710336704736970,	-0.506753441889809310,	-0.506796545807998160,	-0.506839648459195600,	-0.506882749843294290,	
+-0.506925849960185640,	-0.506968948809762510,	-0.507012046391916990,	-0.507055142706541620,	-0.507098237753528140,	-0.507141331532768970,	-0.507184424044156980,	-0.507227515287583360,	
+-0.507270605262941100,	-0.507313693970122270,	-0.507356781409019630,	-0.507399867579524600,	-0.507442952481529930,	-0.507486036114927930,	-0.507529118479611130,	-0.507572199575471170,	
+-0.507615279402400810,	-0.507658357960292130,	-0.507701435249037990,	-0.507744511268529930,	-0.507787586018660480,	-0.507830659499322160,	-0.507873731710407510,	-0.507916802651808160,	
+-0.507959872323416880,	-0.508002940725126200,	-0.508046007856827850,	-0.508089073718414390,	-0.508132138309778330,	-0.508175201630812310,	-0.508218263681407880,	-0.508261324461457780,	
+-0.508304383970854420,	-0.508347442209490460,	-0.508390499177257430,	-0.508433554874048290,	-0.508476609299755130,	-0.508519662454270940,	-0.508562714337487120,	-0.508605764949296550,	
+-0.508648814289591630,	-0.508691862358265020,	-0.508734909155208360,	-0.508777954680314390,	-0.508820998933475880,	-0.508864041914584560,	-0.508907083623533210,	-0.508950124060214000,	
+-0.508993163224519930,	-0.509036201116342620,	-0.509079237735574730,	-0.509122273082108780,	-0.509165307155837520,	-0.509208339956652710,	-0.509251371484446880,	-0.509294401739112780,	
+-0.509337430720542940,	-0.509380458428629220,	-0.509423484863264280,	-0.509466510024340740,	-0.509509533911751130,	-0.509552556525387450,	-0.509595577865142310,	-0.509638597930908270,	
+-0.509681616722578060,	-0.509724634240043550,	-0.509767650483197280,	-0.509810665451932430,	-0.509853679146140440,	-0.509896691565714270,	-0.509939702710546340,	-0.509982712580529630,	
+-0.510025721175555670,	-0.510068728495517430,	-0.510111734540307340,	-0.510154739309818360,	-0.510197742803942140,	-0.510240745022571550,	-0.510283745965599110,	-0.510326745632917580,	
+-0.510369744024418930,	-0.510412741139995910,	-0.510455736979540940,	-0.510498731542947120,	-0.510541724830106070,	-0.510584716840910670,	-0.510627707575253890,	-0.510670697033027480,	
+-0.510713685214124190,	-0.510756672118436780,	-0.510799657745858120,	-0.510842642096279940,	-0.510885625169595130,	-0.510928606965696200,	-0.510971587484476130,	-0.511014566725826790,	
+-0.511057544689641040,	-0.511100521375811300,	-0.511143496784230770,	-0.511186470914791080,	-0.511229443767385220,	-0.511272415341905710,	-0.511315385638245520,	-0.511358354656296530,	
+-0.511401322395951710,	-0.511444288857103910,	-0.511487254039645010,	-0.511530217943467980,	-0.511573180568465350,	-0.511616141914530200,	-0.511659101981554290,	-0.511702060769430700,	
+-0.511745018278051860,	-0.511787974507310950,	-0.511830929457099630,	-0.511873883127311080,	-0.511916835517837730,	-0.511959786628572780,	-0.512002736459407860,	-0.512045685010236170,	
+-0.512088632280950250,	-0.512131578271443180,	-0.512174522981606710,	-0.512217466411333920,	-0.512260408560517910,	-0.512303349429050540,	-0.512346289016824660,	-0.512389227323733150,	
+-0.512432164349668980,	-0.512475100094523910,	-0.512518034558191230,	-0.512560967740563370,	-0.512603899641533410,	-0.512646830260993450,	-0.512689759598836340,	-0.512732687654954830,	
+-0.512775614429242020,	-0.512818539921589770,	-0.512861464131891260,	-0.512904387060038940,	-0.512947308705926090,	-0.512990229069444690,	-0.513033148150487620,	-0.513076065948947610,	
+-0.513118982464717990,	-0.513161897697690380,	-0.513204811647758110,	-0.513247724314814140,	-0.513290635698750550,	-0.513333545799460330,	-0.513376454616836230,	-0.513419362150771330,	
+-0.513462268401157720,	-0.513505173367888370,	-0.513548077050856140,	-0.513590979449954130,	-0.513633880565074310,	-0.513676780396109640,	-0.513719678942953120,	-0.513762576205497810,	
+-0.513805472183635700,	-0.513848366877259770,	-0.513891260286263090,	-0.513934152410538530,	-0.513977043249978170,	-0.514019932804475330,	-0.514062821073922980,	-0.514105708058213210,	
+-0.514148593757239090,	-0.514191478170893610,	-0.514234361299069740,	-0.514277243141659570,	-0.514320123698556400,	-0.514363002969652870,	-0.514405880954842190,	-0.514448757654016430,	
+-0.514491633067068690,	-0.514534507193891930,	-0.514577380034379360,	-0.514620251588422950,	-0.514663121855915780,	-0.514705990836750950,	-0.514748858530821420,	-0.514791724938019390,	
+-0.514834590058238060,	-0.514877453891370740,	-0.514920316437309290,	-0.514963177695947020,	-0.515006037667176900,	-0.515048896350892020,	-0.515091753746984460,	-0.515134609855347540,	
+-0.515177464675874220,	-0.515220318208457480,	-0.515263170452989640,	-0.515306021409363880,	-0.515348871077472960,	-0.515391719457210300,	-0.515434566548467980,	-0.515477412351139310,	
+-0.515520256865117040,	-0.515563100090294490,	-0.515605942026563850,	-0.515648782673818310,	-0.515691622031950850,	-0.515734460100854660,	-0.515777296880421950,	-0.515820132370546030,	
+-0.515862966571120190,	-0.515905799482036520,	-0.515948631103188340,	-0.515991461434468610,	-0.516034290475770650,	-0.516077118226986540,	-0.516119944688009590,	-0.516162769858732770,	
+-0.516205593739049510,	-0.516248416328851770,	-0.516291237628033080,	-0.516334057636486210,	-0.516376876354104670,	-0.516419693780780560,	-0.516462509916407080,	-0.516505324760877520,	
+-0.516548138314084860,	-0.516590950575921530,	-0.516633761546280820,	-0.516676571225056170,	-0.516719379612139650,	-0.516762186707424580,	-0.516804992510804140,	-0.516847797022171650,	
+-0.516890600241419200,	-0.516933402168440300,	-0.516976202803127840,	-0.517019002145375330,	-0.517061800195074860,	-0.517104596952119970,	-0.517147392416403510,	-0.517190186587819010,	
+-0.517232979466258680,	-0.517275771051615820,	-0.517318561343783510,	-0.517361350342655290,	-0.517404138048123240,	-0.517446924460080890,	-0.517489709578421550,	-0.517532493403037640,	
+-0.517575275933822470,	-0.517618057170669000,	-0.517660837113470880,	-0.517703615762120320,	-0.517746393116510610,	-0.517789169176534950,	-0.517831943942086870,	-0.517874717413058460,	
+-0.517917489589343140,	-0.517960260470834210,	-0.518003030057425100,	-0.518045798349007880,	-0.518088565345476200,	-0.518131331046723150,	-0.518174095452642150,	-0.518216858563125490,	
+-0.518259620378066720,	-0.518302380897359250,	-0.518345140120895500,	-0.518387898048568880,	-0.518430654680272500,	-0.518473410015899860,	-0.518516164055343290,	-0.518558916798496310,	
+-0.518601668245252110,	-0.518644418395504010,	-0.518687167249144650,	-0.518729914806067230,	-0.518772661066165040,	-0.518815406029331630,	-0.518858149695459290,	-0.518900892064441570,	
+-0.518943633136171640,	-0.518986372910543060,	-0.519029111387448120,	-0.519071848566780350,	-0.519114584448432950,	-0.519157319032299560,	-0.519200052318272490,	-0.519242784306245260,	
+-0.519285514996111420,	-0.519328244387763370,	-0.519370972481094870,	-0.519413699275998790,	-0.519456424772368860,	-0.519499148970097520,	-0.519541871869078300,	-0.519584593469204490,	
+-0.519627313770369530,	-0.519670032772465820,	-0.519712750475387120,	-0.519755466879026520,	-0.519798181983277540,	-0.519840895788032830,	-0.519883608293185920,	-0.519926319498629890,	
+-0.519969029404258490,	-0.520011738009964030,	-0.520054445315640380,	-0.520097151321180950,	-0.520139856026478280,	-0.520182559431425880,	-0.520225261535917190,	-0.520267962339845620,	
+-0.520310661843103820,	-0.520353360045585410,	-0.520396056947183490,	-0.520438752547791930,	-0.520481446847303020,	-0.520524139845610520,	-0.520566831542607740,	-0.520609521938188210,	
+-0.520652211032244460,	-0.520694898824670240,	-0.520737585315358630,	-0.520780270504203610,	-0.520822954391097490,	-0.520865636975933910,	-0.520908318258606730,	-0.520950998239008260,	
+-0.520993676917032360,	-0.521036354292572330,	-0.521079030365521720,	-0.521121705135773160,	-0.521164378603220290,	-0.521207050767756530,	-0.521249721629275520,	-0.521292391187669790,	
+-0.521335059442833090,	-0.521377726394658850,	-0.521420392043040580,	-0.521463056387870940,	-0.521505719429043670,	-0.521548381166452080,	-0.521591041599989920,	-0.521633700729549840,	
+-0.521676358555025480,	-0.521719015076310240,	-0.521761670293297790,	-0.521804324205880850,	-0.521846976813952980,	-0.521889628117408130,	-0.521932278116138850,	-0.521974926810038880,	
+-0.522017574199001630,	-0.522060220282920760,	-0.522102865061688900,	-0.522145508535199920,	-0.522188150703347230,	-0.522230791566024480,	-0.522273431123124410,	-0.522316069374540780,	
+-0.522358706320166900,	-0.522401341959896740,	-0.522443976293622710,	-0.522486609321238800,	-0.522529241042638430,	-0.522571871457715330,	-0.522614500566362050,	-0.522657128368472670,	
+-0.522699754863940710,	-0.522742380052659050,	-0.522785003934521430,	-0.522827626509421380,	-0.522870247777252550,	-0.522912867737907790,	-0.522955486391280750,	-0.522998103737265070,	
+-0.523040719775754500,	-0.523083334506641790,	-0.523125947929820700,	-0.523168560045184750,	-0.523211170852627800,	-0.523253780352042510,	-0.523296388543322720,	-0.523338995426362090,	
+-0.523381601001054240,	-0.523424205267292050,	-0.523466808224969380,	-0.523509409873979980,	-0.523552010214216710,	-0.523594609245573440,	-0.523637206967943690,	-0.523679803381221220,	
+-0.523722398485298890,	-0.523764992280070560,	-0.523807584765429770,	-0.523850175941270480,	-0.523892765807485230,	-0.523935354363968100,	-0.523977941610612620,	-0.524020527547312650,	
+-0.524063112173960950,	-0.524105695490451500,	-0.524148277496677810,	-0.524190858192533860,	-0.524233437577912300,	-0.524276015652707210,	-0.524318592416812000,	-0.524361167870120770,	
+-0.524403742012526150,	-0.524446314843922230,	-0.524488886364202990,	-0.524531456573261060,	-0.524574025470990520,	-0.524616593057284810,	-0.524659159332038110,	-0.524701724295143060,	
+-0.524744287946493750,	-0.524786850285983820,	-0.524829411313507020,	-0.524871971028956330,	-0.524914529432225720,	-0.524957086523208720,	-0.524999642301799520,	-0.525042196767890660,	
+-0.525084749921376440,	-0.525127301762150280,	-0.525169852290106380,	-0.525212401505137370,	-0.525254949407137350,	-0.525297495996000290,	-0.525340041271619150,	-0.525382585233887920,	
+-0.525425127882700240,	-0.525467669217950070,	-0.525510209239530400,	-0.525552747947335200,	-0.525595285341258100,	-0.525637821421193200,	-0.525680356187033350,	-0.525722889638672640,	
+-0.525765421776004720,	-0.525807952598923540,	-0.525850482107322210,	-0.525893010301094590,	-0.525935537180134420,	-0.525978062744335890,	-0.526020586993591780,	-0.526063109927796150,	
+-0.526105631546843200,	-0.526148151850625690,	-0.526190670839037920,	-0.526233188511973430,	-0.526275704869326290,	-0.526318219910989590,	-0.526360733636857310,	-0.526403246046823200,	
+-0.526445757140781350,	-0.526488266918624710,	-0.526530775380247400,	-0.526573282525543140,	-0.526615788354406140,	-0.526658292866729270,	-0.526700796062406610,	-0.526743297941332010,	
+-0.526785798503399460,	-0.526828297748502150,	-0.526870795676534050,	-0.526913292287389260,	-0.526955787580960950,	-0.526998281557143120,	-0.527040774215829620,	-0.527083265556914650,	
+-0.527125755580290960,	-0.527168244285852960,	-0.527210731673494410,	-0.527253217743109290,	-0.527295702494590900,	-0.527338185927833100,	-0.527380668042729980,	-0.527423148839175520,	
+-0.527465628317062670,	-0.527508106476285880,	-0.527550583316738870,	-0.527593058838315640,	-0.527635533040909490,	-0.527678005924414490,	-0.527720477488724530,	-0.527762947733733670,	
+-0.527805416659335110,	-0.527847884265422950,	-0.527890350551891490,	-0.527932815518633800,	-0.527975279165543990,	-0.528017741492516010,	-0.528060202499444190,	-0.528102662186221370,	
+-0.528145120552741880,	-0.528187577598899560,	-0.528230033324588730,	-0.528272487729702480,	-0.528314940814134990,	-0.528357392577780140,	-0.528399843020532110,	-0.528442292142284220,	
+-0.528484739942930550,	-0.528527186422364960,	-0.528569631580481870,	-0.528612075417174250,	-0.528654517932336530,	-0.528696959125862790,	-0.528739398997646330,	-0.528781837547581460,	
+-0.528824274775561820,	-0.528866710681482060,	-0.528909145265235030,	-0.528951578526715150,	-0.528994010465816290,	-0.529036441082432860,	-0.529078870376457840,	-0.529121298347785760,	
+-0.529163724996310370,	-0.529206150321926080,	-0.529248574324525990,	-0.529290997004004500,	-0.529333418360255600,	-0.529375838393173370,	-0.529418257102651340,	-0.529460674488583470,	
+-0.529503090550864420,	-0.529545505289387260,	-0.529587918704046310,	-0.529630330794735540,	-0.529672741561349360,	-0.529715151003780970,	-0.529757559121924680,	-0.529799965915674460,	
+-0.529842371384924740,	-0.529884775529568700,	-0.529927178349500760,	-0.529969579844614790,	-0.530011980014805320,	-0.530054378859965540,	-0.530096776379989750,	-0.530139172574772060,	
+-0.530181567444206750,	-0.530223960988187250,	-0.530266353206607750,	-0.530308744099362350,	-0.530351133666345560,	-0.530393521907450480,	-0.530435908822571740,	-0.530478294411603430,	
+-0.530520678674439080,	-0.530563061610973110,	-0.530605443221099370,	-0.530647823504712400,	-0.530690202461705620,	-0.530732580091973220,	-0.530774956395409390,	-0.530817331371908560,	
+-0.530859705021364040,	-0.530902077343670230,	-0.530944448338721230,	-0.530986818006411450,	-0.531029186346634320,	-0.531071553359284240,	-0.531113919044255200,	-0.531156283401441720,	
+-0.531198646430737220,	-0.531241008132036120,	-0.531283368505232830,	-0.531325727550220780,	-0.531368085266894390,	-0.531410441655147730,	-0.531452796714875440,	-0.531495150445970730,	
+-0.531537502848328130,	-0.531579853921841820,	-0.531622203666406220,	-0.531664552081914770,	-0.531706899168261860,	-0.531749244925341810,	-0.531791589353048930,	-0.531833932451276750,	
+-0.531876274219919790,	-0.531918614658872020,	-0.531960953768028210,	-0.532003291547281540,	-0.532045627996526770,	-0.532087963115658200,	-0.532130296904569370,	-0.532172629363154790,	
+-0.532214960491308680,	-0.532257290288925430,	-0.532299618755898710,	-0.532341945892122910,	-0.532384271697492250,	-0.532426596171901250,	-0.532468919315243320,	-0.532511241127413220,	
+-0.532553561608305030,	-0.532595880757813170,	-0.532638198575831390,	-0.532680515062254000,	-0.532722830216975310,	-0.532765144039889950,	-0.532807456530891450,	-0.532849767689874240,	
+-0.532892077516732950,	-0.532934386011361120,	-0.532976693173653370,	-0.533018999003503800,	-0.533061303500807160,	-0.533103606665456860,	-0.533145908497347550,	-0.533188208996373540,	
+-0.533230508162429340,	-0.533272805995408380,	-0.533315102495205530,	-0.533357397661714970,	-0.533399691494831130,	-0.533441983994447870,	-0.533484275160459490,	-0.533526564992760520,	
+-0.533568853491245500,	-0.533611140655807950,	-0.533653426486342510,	-0.533695710982743600,	-0.533737994144905640,	-0.533780275972722480,	-0.533822556466088560,	-0.533864835624898610,	
+-0.533907113449046180,	-0.533949389938426000,	-0.533991665092932390,	-0.534033938912459980,	-0.534076211396902310,	-0.534118482546154130,	-0.534160752360109740,	-0.534203020838663780,	
+-0.534245287981709890,	-0.534287553789142940,	-0.534329818260857010,	-0.534372081396746860,	-0.534414343196706220,	-0.534456603660629640,	-0.534498862788411630,	-0.534541120579946740,	
+-0.534583377035128700,	-0.534625632153852280,	-0.534667885936012110,	-0.534710138381501940,	-0.534752389490216310,	-0.534794639262049730,	-0.534836887696896970,	-0.534879134794651550,	
+-0.534921380555208330,	-0.534963624978461730,	-0.535005868064306390,	-0.535048109812635950,	-0.535090350223345280,	-0.535132589296328680,	-0.535174827031481120,	-0.535217063428696020,	
+-0.535259298487868240,	-0.535301532208892210,	-0.535343764591662770,	-0.535385995636073590,	-0.535428225342019280,	-0.535470453709394940,	-0.535512680738093990,	-0.535554906428011400,	
+-0.535597130779041470,	-0.535639353791079190,	-0.535681575464018070,	-0.535723795797752980,	-0.535766014792178450,	-0.535808232447189340,	-0.535850448762679180,	-0.535892663738542830,	
+-0.535934877374674930,	-0.535977089670970240,	-0.536019300627322390,	-0.536061510243626250,	-0.536103718519776340,	-0.536145925455667640,	-0.536188131051193670,	-0.536230335306249310,	
+-0.536272538220729180,	-0.536314739794528040,	-0.536356940027539750,	-0.536399138919659070,	-0.536441336470780850,	-0.536483532680798960,	-0.536525727549608260,	-0.536567921077103270,	
+-0.536610113263178870,	-0.536652304107728680,	-0.536694493610647800,	-0.536736681771830760,	-0.536778868591172300,	-0.536821054068566280,	-0.536863238203907690,	-0.536905420997090930,	
+-0.536947602448011100,	-0.536989782556561820,	-0.537031961322638090,	-0.537074138746134520,	-0.537116314826945880,	-0.537158489564966150,	-0.537200662960090170,	-0.537242835012212820,	
+-0.537285005721228170,	-0.537327175087030870,	-0.537369343109515670,	-0.537411509788577550,	-0.537453675124110240,	-0.537495839116008730,	-0.537538001764167660,	-0.537580163068481890,	
+-0.537622323028845380,	-0.537664481645153130,	-0.537706638917299530,	-0.537748794845179790,	-0.537790949428687770,	-0.537833102667718220,	-0.537875254562166010,	-0.537917405111925980,	
+-0.537959554316892130,	-0.538001702176959420,	-0.538043848692022710,	-0.538085993861976090,	-0.538128137686714410,	-0.538170280166132440,	-0.538212421300125140,	-0.538254561088586490,	
+-0.538296699531411350,	-0.538338836628494470,	-0.538380972379730820,	-0.538423106785014480,	-0.538465239844240330,	-0.538507371557302990,	-0.538549501924097670,	-0.538591630944518230,	
+-0.538633758618459750,	-0.538675884945816860,	-0.538718009926484550,	-0.538760133560356900,	-0.538802255847328880,	-0.538844376787295690,	-0.538886496380151070,	-0.538928614625790230,	
+-0.538970731524107900,	-0.539012847074999080,	-0.539054961278357840,	-0.539097074134079150,	-0.539139185642057760,	-0.539181295802188760,	-0.539223404614366130,	-0.539265512078485050,	
+-0.539307618194440170,	-0.539349722962126690,	-0.539391826381438460,	-0.539433928452270670,	-0.539476029174517980,	-0.539518128548075680,	-0.539560226572837640,	-0.539602323248699060,	
+-0.539644418575554670,	-0.539686512553299690,	-0.539728605181827970,	-0.539770696461034700,	-0.539812786390815090,	-0.539854874971063210,	-0.539896962201674050,	-0.539939048082542560,	
+-0.539981132613563840,	-0.540023215794631860,	-0.540065297625641820,	-0.540107378106488570,	-0.540149457237067200,	-0.540191535017271910,	-0.540233611446997660,	-0.540275686526139440,	
+-0.540317760254592440,	-0.540359832632250630,	-0.540401903659009200,	-0.540443973334763020,	-0.540486041659407280,	-0.540528108632836070,	-0.540570174254944690,	-0.540612238525628120,	
+-0.540654301444780550,	-0.540696363012297290,	-0.540738423228073200,	-0.540780482092003360,	-0.540822539603981860,	-0.540864595763904110,	-0.540906650571664870,	-0.540948704027159330,	
+-0.540990756130281690,	-0.541032806880927140,	-0.541074856278990550,	-0.541116904324367210,	-0.541158951016951220,	-0.541200996356637990,	-0.541243040343322160,	-0.541285082976899030,	
+-0.541327124257262930,	-0.541369164184308920,	-0.541411202757932530,	-0.541453239978027630,	-0.541495275844489640,	-0.541537310357213530,	-0.541579343516094490,	-0.541621375321026610,	
+-0.541663405771905420,	-0.541705434868625660,	-0.541747462611082750,	-0.541789488999170790,	-0.541831514032785070,	-0.541873537711820560,	-0.541915560036172580,	-0.541957581005735320,	
+-0.541999600620404200,	-0.542041618880073960,	-0.542083635784640140,	-0.542125651333996820,	-0.542167665528039410,	-0.542209678366662780,	-0.542251689849762350,	-0.542293699977232310,	
+-0.542335708748967970,	-0.542377716164864850,	-0.542419722224816940,	-0.542461726928719860,	-0.542503730276468370,	-0.542545732267957880,	-0.542587732903082820,	-0.542629732181738380,	
+-0.542671730103819530,	-0.542713726669221800,	-0.542755721877839380,	-0.542797715729567700,	-0.542839708224301610,	-0.542881699361936750,	-0.542923689142367220,	-0.542965677565488410,	
+-0.543007664631195430,	-0.543049650339383680,	-0.543091634689947480,	-0.543133617682782120,	-0.543175599317783140,	-0.543217579594844730,	-0.543259558513862430,	-0.543301536074731310,	
+-0.543343512277346560,	-0.543385487121602730,	-0.543427460607395220,	-0.543469432734619010,	-0.543511403503169510,	-0.543553372912941260,	-0.543595340963829550,	-0.543637307655729480,	
+-0.543679272988536470,	-0.543721236962144920,	-0.543763199576450360,	-0.543805160831347670,	-0.543847120726732580,	-0.543889079262499300,	-0.543931036438543240,	-0.543972992254760030,	
+-0.544014946711043890,	-0.544056899807290440,	-0.544098851543394770,	-0.544140801919252290,	-0.544182750934757430,	-0.544224698589805710,	-0.544266644884292220,	-0.544308589818112590,	
+-0.544350533391161020,	-0.544392475603333150,	-0.544434416454524060,	-0.544476355944629290,	-0.544518294073543240,	-0.544560230841161560,	-0.544602166247379230,	-0.544644100292091870,	
+-0.544686032975193910,	-0.544727964296580770,	-0.544769894256148190,	-0.544811822853790480,	-0.544853750089403290,	-0.544895675962881580,	-0.544937600474121100,	-0.544979523623016270,	
+-0.545021445409462620,	-0.545063365833355460,	-0.545105284894590090,	-0.545147202593061260,	-0.545189118928664400,	-0.545231033901294680,	-0.545272947510847760,	-0.545314859757218160,	
+-0.545356770640301410,	-0.545398680159992600,	-0.545440588316187580,	-0.545482495108780770,	-0.545524400537667600,	-0.545566304602743470,	-0.545608207303904020,	-0.545650108641043570,	
+-0.545692008614057980,	-0.545733907222842650,	-0.545775804467292120,	-0.545817700347302150,	-0.545859594862767920,	-0.545901488013585070,	-0.545943379799648240,	-0.545985270220852860,	
+-0.546027159277094220,	-0.546069046968268190,	-0.546110933294269070,	-0.546152818254992730,	-0.546194701850334250,	-0.546236584080189490,	-0.546278464944452760,	-0.546320344443019910,	
+-0.546362222575786260,	-0.546404099342647440,	-0.546445974743497880,	-0.546487848778233530,	-0.546529721446749830,	-0.546571592748941510,	-0.546613462684704120,	-0.546655331253933170,	
+-0.546697198456524200,	-0.546739064292371960,	-0.546780928761371960,	-0.546822791863419640,	-0.546864653598410740,	-0.546906513966239790,	-0.546948372966802650,	-0.546990230599994520,	
+-0.547032086865711250,	-0.547073941763847270,	-0.547115795294298550,	-0.547157647456960270,	-0.547199498251728310,	-0.547241347678497190,	-0.547283195737162660,	-0.547325042427620590,	
+-0.547366887749765500,	-0.547408731703493130,	-0.547450574288699030,	-0.547492415505278830,	-0.547534255353127270,	-0.547576093832140010,	-0.547617930942212450,	-0.547659766683240570,	
+-0.547701601055118890,	-0.547743434057743170,	-0.547785265691008830,	-0.547827095954811720,	-0.547868924849046480,	-0.547910752373608980,	-0.547952578528394520,	-0.547994403313299070,	
+-0.548036226728217170,	-0.548078048773044780,	-0.548119869447677210,	-0.548161688752010430,	-0.548203506685938980,	-0.548245323249358710,	-0.548287138442165590,	-0.548328952264254270,	
+-0.548370764715520490,	-0.548412575795859890,	-0.548454385505168120,	-0.548496193843340030,	-0.548538000810271490,	-0.548579806405858020,	-0.548621610629995260,	-0.548663413482578190,	
+-0.548705214963502550,	-0.548747015072663880,	-0.548788813809958140,	-0.548830611175279870,	-0.548872407168525140,	-0.548914201789589380,	-0.548955995038368450,	-0.548997786914757200,	
+-0.549039577418651390,	-0.549081366549947100,	-0.549123154308539090,	-0.549164940694323090,	-0.549206725707194750,	-0.549248509347049940,	-0.549290291613783620,	-0.549332072507291440,	
+-0.549373852027469130,	-0.549415630174212470,	-0.549457406947416520,	-0.549499182346976920,	-0.549540956372789440,	-0.549582729024749920,	-0.549624500302753230,	-0.549666270206695230,	
+-0.549708038736471560,	-0.549749805891978190,	-0.549791571673109990,	-0.549833336079762810,	-0.549875099111832630,	-0.549916860769214420,	-0.549958621051803930,	-0.550000379959497020,	
+-0.550042137492189440,	-0.550083893649776170,	-0.550125648432153170,	-0.550167401839216090,	-0.550209153870860780,	-0.550250904526982330,	-0.550292653807476500,	-0.550334401712239130,	
+-0.550376148241166100,	-0.550417893394152260,	-0.550459637171093810,	-0.550501379571886160,	-0.550543120596425520,	-0.550584860244606620,	-0.550626598516325670,	-0.550668335411478530,	
+-0.550710070929960160,	-0.550751805071666660,	-0.550793537836493650,	-0.550835269224337120,	-0.550876999235092150,	-0.550918727868654590,	-0.550960455124920200,	-0.551002181003785060,	
+-0.551043905505144150,	-0.551085628628893430,	-0.551127350374928550,	-0.551169070743145810,	-0.551210789733439950,	-0.551252507345707190,	-0.551294223579843030,	-0.551335938435743800,	
+-0.551377651913304350,	-0.551419364012420750,	-0.551461074732988670,	-0.551502784074904380,	-0.551544492038062660,	-0.551586198622359800,	-0.551627903827691780,	-0.551669607653953560,	
+-0.551711310101041460,	-0.551753011168851000,	-0.551794710857278380,	-0.551836409166218570,	-0.551878106095567870,	-0.551919801645221810,	-0.551961495815076590,	-0.552003188605027280,	
+-0.552044880014970100,	-0.552086570044800660,	-0.552128258694415060,	-0.552169945963708610,	-0.552211631852577160,	-0.552253316360916680,	-0.552294999488623370,	-0.552336681235592100,	
+-0.552378361601719160,	-0.552420040586900640,	-0.552461718191031630,	-0.552503394414008420,	-0.552545069255726660,	-0.552586742716082550,	-0.552628414794971270,	-0.552670085492289020,	
+-0.552711754807931440,	-0.552753422741794950,	-0.552795089293774410,	-0.552836754463766230,	-0.552878418251666170,	-0.552920080657370420,	-0.552961741680774050,	-0.553003401321773390,	
+-0.553045059580264180,	-0.553086716456142710,	-0.553128371949304090,	-0.553170026059644600,	-0.553211678787060350,	-0.553253330131446510,	-0.553294980092699400,	-0.553336628670714760,	
+-0.553378275865389010,	-0.553419921676617130,	-0.553461566104295530,	-0.553503209148319960,	-0.553544850808586730,	-0.553586491084991030,	-0.553628129977429050,	-0.553669767485796770,	
+-0.553711403609990490,	-0.553753038349905190,	-0.553794671705437500,	-0.553836303676482960,	-0.553877934262938080,	-0.553919563464698060,	-0.553961191281659100,	-0.554002817713717070,	
+-0.554044442760768470,	-0.554086066422708410,	-0.554127688699433070,	-0.554169309590838990,	-0.554210929096821240,	-0.554252547217276130,	-0.554294163952099740,	-0.554335779301188160,	
+-0.554377393264436910,	-0.554419005841742090,	-0.554460617032999760,	-0.554502226838106350,	-0.554543835256956940,	-0.554585442289447840,	-0.554627047935475240,	-0.554668652194935440,	
+-0.554710255067723530,	-0.554751856553736040,	-0.554793456652868940,	-0.554835055365018540,	-0.554876652690080130,	-0.554918248627950030,	-0.554959843178524760,	-0.555001436341699410,	
+-0.555043028117370610,	-0.555084618505434110,	-0.555126207505786560,	-0.555167795118323040,	-0.555209381342940070,	-0.555250966179533620,	-0.555292549628000120,	-0.555334131688234870,	
+-0.555375712360134280,	-0.555417291643594440,	-0.555458869538511760,	-0.555500446044781440,	-0.555542021162300110,	-0.555583594890963760,	-0.555625167230668680,	-0.555666738181310400,	
+-0.555708307742785230,	-0.555749875914989700,	-0.555791442697818990,	-0.555833008091169760,	-0.555874572094938070,	-0.555916134709020240,	-0.555957695933311680,	-0.555999255767708920,	
+-0.556040814212108050,	-0.556082371266405470,	-0.556123926930496610,	-0.556165481204278000,	-0.556207034087645600,	-0.556248585580496060,	-0.556290135682724560,	-0.556331684394227870,	
+-0.556373231714901830,	-0.556414777644643200,	-0.556456322183347170,	-0.556497865330910390,	-0.556539407087229270,	-0.556580947452199330,	-0.556622486425716990,	-0.556664024007678340,	
+-0.556705560197980120,	-0.556747094996517530,	-0.556788628403187320,	-0.556830160417885470,	-0.556871691040508600,	-0.556913220270952140,	-0.556954748109112610,	-0.556996274554886210,	
+-0.557037799608169570,	-0.557079323268858010,	-0.557120845536848150,	-0.557162366412036090,	-0.557203885894318570,	-0.557245403983591010,	-0.557286920679749830,	-0.557328435982691440,	
+-0.557369949892312260,	-0.557411462408507810,	-0.557452973531174840,	-0.557494483260209670,	-0.557535991595508040,	-0.557577498536966360,	-0.557619004084480950,	-0.557660508237948330,	
+-0.557702010997264130,	-0.557743512362324890,	-0.557785012333026910,	-0.557826510909266830,	-0.557868008090939950,	-0.557909503877943140,	-0.557950998270172470,	-0.557992491267524810,	
+-0.558033982869895470,	-0.558075473077181190,	-0.558116961889278280,	-0.558158449306083270,	-0.558199935327491790,	-0.558241419953400490,	-0.558282903183705990,	-0.558324385018303840,	
+-0.558365865457090770,	-0.558407344499962990,	-0.558448822146817240,	-0.558490298397549050,	-0.558531773252055160,	-0.558573246710231790,	-0.558614718771975770,	-0.558656189437182430,	
+-0.558697658705748720,	-0.558739126577570850,	-0.558780593052545570,	-0.558822058130568400,	-0.558863521811536090,	-0.558904984095344950,	-0.558946444981891720,	-0.558987904471071940,	
+-0.559029362562782570,	-0.559070819256920040,	-0.559112274553380080,	-0.559153728452059460,	-0.559195180952854590,	-0.559236632055662100,	-0.559278081760377630,	-0.559319530066897940,	
+-0.559360976975119550,	-0.559402422484938990,	-0.559443866596252000,	-0.559485309308955350,	-0.559526750622945430,	-0.559568190538118900,	-0.559609629054371730,	-0.559651066171600320,	
+-0.559692501889701320,	-0.559733936208571480,	-0.559775369128106330,	-0.559816800648202830,	-0.559858230768757290,	-0.559899659489666580,	-0.559941086810826330,	-0.559982512732133290,	
+-0.560023937253484430,	-0.560065360374775390,	-0.560106782095902810,	-0.560148202416763440,	-0.560189621337253810,	-0.560231038857269770,	-0.560272454976708190,	-0.560313869695465480,	
+-0.560355283013438400,	-0.560396694930522800,	-0.560438105446615430,	-0.560479514561612820,	-0.560520922275411730,	-0.560562328587908000,	-0.560603733498998500,	-0.560645137008579650,	
+-0.560686539116548310,	-0.560727939822800230,	-0.560769339127232260,	-0.560810737029741380,	-0.560852133530223340,	-0.560893528628574890,	-0.560934922324692660,	-0.560976314618473420,	
+-0.561017705509813110,	-0.561059094998608510,	-0.561100483084756130,	-0.561141869768152950,	-0.561183255048694710,	-0.561224638926278390,	-0.561266021400800400,	-0.561307402472157820,	
+-0.561348782140246190,	-0.561390160404962810,	-0.561431537266203870,	-0.561472912723866570,	-0.561514286777846540,	-0.561555659428040870,	-0.561597030674346300,	-0.561638400516658920,	
+-0.561679768954875370,	-0.561721135988892510,	-0.561762501618607190,	-0.561803865843915280,	-0.561845228664713650,	-0.561886590080898920,	-0.561927950092368180,	-0.561969308699017070,	
+-0.562010665900742780,	-0.562052021697441840,	-0.562093376089011110,	-0.562134729075346670,	-0.562176080656345390,	-0.562217430831903900,	-0.562258779601919170,	-0.562300126966287170,	
+-0.562341472924904770,	-0.562382817477669160,	-0.562424160624476090,	-0.562465502365222640,	-0.562506842699805330,	-0.562548181628121370,	-0.562589519150066610,	-0.562630855265538020,	
+-0.562672189974432360,	-0.562713523276646480,	-0.562754855172076460,	-0.562796185660619400,	-0.562837514742171810,	-0.562878842416630780,	-0.562920168683892270,	-0.562961493543853390,	
+-0.563002816996410640,	-0.563044139041461330,	-0.563085459678901330,	-0.563126778908627610,	-0.563168096730537030,	-0.563209413144526440,	-0.563250728150492040,	-0.563292041748330810,	
+-0.563333353937939930,	-0.563374664719215160,	-0.563415974092053800,	-0.563457282056352480,	-0.563498588612008300,	-0.563539893758917330,	-0.563581197496976550,	-0.563622499826082920,	
+-0.563663800746133310,	-0.563705100257023810,	-0.563746398358651590,	-0.563787695050913420,	-0.563828990333706260,	-0.563870284206926310,	-0.563911576670470760,	-0.563952867724236140,	
+-0.563994157368119750,	-0.564035445602017570,	-0.564076732425826900,	-0.564118017839444600,	-0.564159301842766970,	-0.564200584435691100,	-0.564241865618113740,	-0.564283145389932180,	
+-0.564324423751042300,	-0.564365700701341290,	-0.564406976240726110,	-0.564448250369093850,	-0.564489523086340590,	-0.564530794392363640,	-0.564572064287059530,	-0.564613332770325660,	
+-0.564654599842058120,	-0.564695865502154120,	-0.564737129750510490,	-0.564778392587024340,	-0.564819654011591730,	-0.564860914024110090,	-0.564902172624476620,	-0.564943429812587270,	
+-0.564984685588339360,	-0.565025939951629640,	-0.565067192902355520,	-0.565108444440413080,	-0.565149694565699520,	-0.565190943278111700,	-0.565232190577546810,	-0.565273436463901160,	
+-0.565314680937071930,	-0.565355923996956000,	-0.565397165643450660,	-0.565438405876452000,	-0.565479644695857320,	-0.565520882101563480,	-0.565562118093467790,	-0.565603352671466550,	
+-0.565644585835456850,	-0.565685817585335760,	-0.565727047921000370,	-0.565768276842347100,	-0.565809504349273130,	-0.565850730441675780,	-0.565891955119451120,	-0.565933178382496680,	
+-0.565974400230709220,	-0.566015620663986250,	-0.566056839682223760,	-0.566098057285319150,	-0.566139273473169500,	-0.566180488245671910,	-0.566221701602722780,	-0.566262913544219430,	
+-0.566304124070058810,	-0.566345333180138240,	-0.566386540874353920,	-0.566427747152603240,	-0.566468952014783200,	-0.566510155460791200,	-0.566551357490523430,	-0.566592558103877320,	
+-0.566633757300750050,	-0.566674955081038160,	-0.566716151444638830,	-0.566757346391449040,	-0.566798539921366310,	-0.566839732034286840,	-0.566880922730108150,	-0.566922112008727000,	
+-0.566963299870041020,	-0.567004486313946400,	-0.567045671340340560,	-0.567086854949120590,	-0.567128037140183780,	-0.567169217913426560,	-0.567210397268746340,	-0.567251575206040080,	
+-0.567292751725205210,	-0.567333926826138150,	-0.567375100508736190,	-0.567416272772896970,	-0.567457443618516580,	-0.567498613045492650,	-0.567539781053722160,	-0.567580947643102630,	
+-0.567622112813530370,	-0.567663276564902790,	-0.567704438897116970,	-0.567745599810070440,	-0.567786759303659630,	-0.567827917377781820,	-0.567869074032334330,	-0.567910229267214460,	
+-0.567951383082318630,	-0.567992535477544360,	-0.568033686452788730,	-0.568074836007949280,	-0.568115984142922300,	-0.568157130857605440,	-0.568198276151896110,	-0.568239420025690720,	
+-0.568280562478886810,	-0.568321703511381450,	-0.568362843123072170,	-0.568403981313855500,	-0.568445118083628850,	-0.568486253432289310,	-0.568527387359734630,	-0.568568519865861100,	
+-0.568609650950566260,	-0.568650780613747190,	-0.568691908855301630,	-0.568733035675125900,	-0.568774161073117620,	-0.568815285049173890,	-0.568856407603192340,	-0.568897528735069380,	
+-0.568938648444702650,	-0.568979766731989240,	-0.569020883596826900,	-0.569061999039111810,	-0.569103113058741840,	-0.569144225655614400,	-0.569185336829626130,	-0.569226446580674450,	
+-0.569267554908656550,	-0.569308661813470280,	-0.569349767295011970,	-0.569390871353179120,	-0.569431973987869270,	-0.569473075198979720,	-0.569514174986407110,	-0.569555273350049180,	
+-0.569596370289802920,	-0.569637465805566180,	-0.569678559897235480,	-0.569719652564708250,	-0.569760743807882000,	-0.569801833626654150,	-0.569842922020921460,	-0.569884008990581340,	
+-0.569925094535531640,	-0.569966178655668900,	-0.570007261350890640,	-0.570048342621094160,	-0.570089422466177220,	-0.570130500886036450,	-0.570171577880569380,	-0.570212653449673310,	
+-0.570253727593246110,	-0.570294800311184070,	-0.570335871603385170,	-0.570376941469746490,	-0.570418009910165890,	-0.570459076924539790,	-0.570500142512766150,	-0.570541206674742060,	
+-0.570582269410365270,	-0.570623330719532530,	-0.570664390602141470,	-0.570705449058089730,	-0.570746506087274060,	-0.570787561689592100,	-0.570828615864941270,	-0.570869668613219190,	
+-0.570910719934322630,	-0.570951769828149210,	-0.570992818294596470,	-0.571033865333562040,	-0.571074910944942450,	-0.571115955128635670,	-0.571156997884539000,	-0.571198039212550190,	
+-0.571239079112566000,	-0.571280117584484050,	-0.571321154628201770,	-0.571362190243617010,	-0.571403224430626410,	-0.571444257189127720,	-0.571485288519018360,	-0.571526318420196300,	
+-0.571567346892557950,	-0.571608373936001170,	-0.571649399550423930,	-0.571690423735722760,	-0.571731446491795640,	-0.571772467818539850,	-0.571813487715853160,	-0.571854506183632540,	
+-0.571895523221775500,	-0.571936538830179810,	-0.571977553008742980,	-0.572018565757361990,	-0.572059577075934580,	-0.572100586964358280,	-0.572141595422530850,	-0.572182602450349020,	
+-0.572223608047710660,	-0.572264612214513410,	-0.572305614950654910,	-0.572346616256032000,	-0.572387616130542560,	-0.572428614574084450,	-0.572469611586554410,	-0.572510607167850290,	
+-0.572551601317869750,	-0.572592594036510530,	-0.572633585323669480,	-0.572674575179244470,	-0.572715563603133030,	-0.572756550595233000,	-0.572797536155441380,	-0.572838520283655780,	
+-0.572879502979773860,	-0.572920484243693570,	-0.572961464075311790,	-0.573002442474526250,	-0.573043419441234600,	-0.573084394975334810,	-0.573125369076723730,	-0.573166341745299120,	
+-0.573207312980959060,	-0.573248282783600400,	-0.573289251153120900,	-0.573330218089418420,	-0.573371183592390700,	-0.573412147661934600,	-0.573453110297948210,	-0.573494071500329050,	
+-0.573535031268975090,	-0.573575989603783090,	-0.573616946504651230,	-0.573657901971476920,	-0.573698856004158260,	-0.573739808602591990,	-0.573780759766676310,	-0.573821709496308730,	
+-0.573862657791387230,	-0.573903604651808670,	-0.573944550077471140,	-0.573985494068272260,	-0.574026436624110010,	-0.574067377744881260,	-0.574108317430484070,	-0.574149255680816540,	
+-0.574190192495775410,	-0.574231127875258870,	-0.574272061819164460,	-0.574312994327390250,	-0.574353925399833210,	-0.574394855036391320,	-0.574435783236962320,	-0.574476710001444290,	
+-0.574517635329733990,	-0.574558559221729710,	-0.574599481677328990,	-0.574640402696429910,	-0.574681322278929540,	-0.574722240424725750,	-0.574763157133716400,	-0.574804072405799560,	
+-0.574844986240872210,	-0.574885898638832330,	-0.574926809599578090,	-0.574967719123006480,	-0.575008627209015470,	-0.575049533857503010,	-0.575090439068366990,	-0.575131342841504580,	
+-0.575172245176813760,	-0.575213146074192380,	-0.575254045533538430,	-0.575294943554749080,	-0.575335840137722320,	-0.575376735282356000,	-0.575417628988548200,	-0.575458521256195900,	
+-0.575499412085197390,	-0.575540301475450320,	-0.575581189426852880,	-0.575622075939302040,	-0.575662961012695980,	-0.575703844646933030,	-0.575744726841910030,	-0.575785607597525170,	
+-0.575826486913676330,	-0.575867364790261570,	-0.575908241227178100,	-0.575949116224323990,	-0.575989989781597100,	-0.576030861898895630,	-0.576071732576116660,	-0.576112601813158380,	
+-0.576153469609918530,	-0.576194335966295320,	-0.576235200882186050,	-0.576276064357488680,	-0.576316926392101190,	-0.576357786985921660,	-0.576398646138847390,	-0.576439503850776470,	
+-0.576480360121607190,	-0.576521214951236650,	-0.576562068339563030,	-0.576602920286484190,	-0.576643770791898550,	-0.576684619855702960,	-0.576725467477795960,	-0.576766313658075180,	
+-0.576807158396439150,	-0.576848001692784720,	-0.576888843547010310,	-0.576929683959013780,	-0.576970522928693440,	-0.577011360455946360,	-0.577052196540670970,	-0.577093031182765000,	
+-0.577133864382126880,	-0.577174696138653800,	-0.577215526452243830,	-0.577256355322795180,	-0.577297182750205920,	-0.577338008734373350,	-0.577378833275195790,	-0.577419656372571420,	
+-0.577460478026397660,	-0.577501298236572590,	-0.577542117002994400,	-0.577582934325561180,	-0.577623750204170340,	-0.577664564638720070,	-0.577705377629108450,	-0.577746189175233680,	
+-0.577786999276993170,	-0.577827807934285010,	-0.577868615147007490,	-0.577909420915058700,	-0.577950225238336060,	-0.577991028116737750,	-0.578031829550161970,	-0.578072629538506910,	
+-0.578113428081669990,	-0.578154225179549400,	-0.578195020832043660,	-0.578235815039050080,	-0.578276607800466860,	-0.578317399116192180,	-0.578358188986124340,	-0.578398977410160660,	
+-0.578439764388199550,	-0.578480549920138980,	-0.578521334005877460,	-0.578562116645312210,	-0.578602897838341730,	-0.578643677584863900,	-0.578684455884777350,	-0.578725232737979270,	
+-0.578766008144368070,	-0.578806782103841840,	-0.578847554616299000,	-0.578888325681636950,	-0.578929095299754120,	-0.578969863470548910,	-0.579010630193918630,	-0.579051395469761810,	
+-0.579092159297976530,	-0.579132921678461090,	-0.579173682611113130,	-0.579214442095830840,	-0.579255200132512530,	-0.579295956721056600,	-0.579336711861360380,	-0.579377465553322370,	
+-0.579418217796840660,	-0.579458968591813780,	-0.579499717938139150,	-0.579540465835715280,	-0.579581212284440150,	-0.579621957284212400,	-0.579662700834929320,	-0.579703442936489570,	
+-0.579744183588791210,	-0.579784922791732770,	-0.579825660545211670,	-0.579866396849126330,	-0.579907131703375380,	-0.579947865107856340,	-0.579988597062467530,	-0.580029327567107230,	
+-0.580070056621673990,	-0.580110784226065320,	-0.580151510380179650,	-0.580192235083915150,	-0.580232958337170480,	-0.580273680139843040,	-0.580314400491831360,	-0.580355119393033750,	
+-0.580395836843348610,	-0.580436552842673590,	-0.580477267390907210,	-0.580517980487947560,	-0.580558692133693380,	-0.580599402328042190,	-0.580640111070892420,	-0.580680818362142690,	
+-0.580721524201690650,	-0.580762228589434710,	-0.580802931525273180,	-0.580843633009104800,	-0.580884333040826870,	-0.580925031620338150,	-0.580965728747536820,	-0.581006424422321640,	
+-0.581047118644589910,	-0.581087811414240480,	-0.581128502731171450,	-0.581169192595281550,	-0.581209881006468310,	-0.581250567964630370,	-0.581291253469665930,	-0.581331937521473830,	
+-0.581372620119951500,	-0.581413301264997570,	-0.581453980956510800,	-0.581494659194388700,	-0.581535335978530020,	-0.581576011308832850,	-0.581616685185196160,	-0.581657357607517360,	
+-0.581698028575695080,	-0.581738698089627860,	-0.581779366149214110,	-0.581820032754351680,	-0.581860697904939220,	-0.581901361600874910,	-0.581942023842057620,	-0.581982684628384870,	
+-0.582023343959755410,	-0.582064001836067550,	-0.582104658257220130,	-0.582145313223110690,	-0.582185966733637870,	-0.582226618788700630,	-0.582267269388196400,	-0.582307918532024020,	
+-0.582348566220081910,	-0.582389212452268600,	-0.582429857228482060,	-0.582470500548620710,	-0.582511142412583280,	-0.582551782820268200,	-0.582592421771573440,	-0.582633059266397520,	
+-0.582673695304638970,	-0.582714329886196540,	-0.582754963010967960,	-0.582795594678852000,	-0.582836224889746960,	-0.582876853643551800,	-0.582917480940164160,	-0.582958106779482790,	
+-0.582998731161406100,	-0.583039354085832960,	-0.583079975552661110,	-0.583120595561789300,	-0.583161214113116390,	-0.583201831206540120,	-0.583242446841959140,	-0.583283061019272190,	
+-0.583323673738377790,	-0.583364284999174030,	-0.583404894801559440,	-0.583445503145432640,	-0.583486110030692400,	-0.583526715457236560,	-0.583567319424963980,	-0.583607921933773090,	
+-0.583648522983562620,	-0.583689122574230670,	-0.583729720705675750,	-0.583770317377796610,	-0.583810912590492110,	-0.583851506343659900,	-0.583892098637198930,	-0.583932689471007960,	
+-0.583973278844985070,	-0.584013866759028890,	-0.584054453213038060,	-0.584095038206911440,	-0.584135621740547010,	-0.584176203813843390,	-0.584216784426699220,	-0.584257363579013590,	
+-0.584297941270684130,	-0.584338517501609700,	-0.584379092271689160,	-0.584419665580821150,	-0.584460237428903630,	-0.584500807815835470,	-0.584541376741515410,	-0.584581944205842200,	
+-0.584622510208713700,	-0.584663074750028990,	-0.584703637829687040,	-0.584744199447585490,	-0.584784759603623530,	-0.584825318297699680,	-0.584865875529712810,	-0.584906431299560990,	
+-0.584946985607142980,	-0.584987538452357620,	-0.585028089835103680,	-0.585068639755279230,	-0.585109188212783130,	-0.585149735207514120,	-0.585190280739371070,	-0.585230824808252060,	
+-0.585271367414055830,	-0.585311908556681250,	-0.585352448236027280,	-0.585392986451991890,	-0.585433523204473950,	-0.585474058493372200,	-0.585514592318585710,	-0.585555124680012360,	
+-0.585595655577551110,	-0.585636185011101150,	-0.585676712980560450,	-0.585717239485827880,	-0.585757764526802170,	-0.585798288103382530,	-0.585838810215466690,	-0.585879330862953960,	
+-0.585919850045742760,	-0.585960367763732390,	-0.586000884016820710,	-0.586041398804906800,	-0.586081912127889400,	-0.586122423985667610,	-0.586162934378139380,	-0.586203443305203910,	
+-0.586243950766759720,	-0.586284456762706020,	-0.586324961292940870,	-0.586365464357363250,	-0.586405965955872350,	-0.586446466088366150,	-0.586486964754743820,	-0.586527461954904130,	
+-0.586567957688746030,	-0.586608451956167730,	-0.586648944757068300,	-0.586689436091346610,	-0.586729925958901610,	-0.586770414359631400,	-0.586810901293435160,	-0.586851386760211650,	
+-0.586891870759860160,	-0.586932353292278440,	-0.586972834357366020,	-0.587013313955021430,	-0.587053792085143860,	-0.587094268747631600,	-0.587134743942383520,	-0.587175217669299030,	
+-0.587215689928276110,	-0.587256160719213940,	-0.587296630042011380,	-0.587337097896567630,	-0.587377564282780760,	-0.587418029200549970,	-0.587458492649774120,	-0.587498954630352400,	
+-0.587539415142182890,	-0.587579874185164890,	-0.587620331759197260,	-0.587660787864179080,	-0.587701242500008550,	-0.587741695666584960,	-0.587782147363807070,	-0.587822597591574290,	
+-0.587863046349784590,	-0.587903493638337270,	-0.587943939457131530,	-0.587984383806065660,	-0.588024826685038860,	-0.588065268093949880,	-0.588105708032698130,	-0.588146146501181800,	
+-0.588186583499300090,	-0.588227019026951850,	-0.588267453084036500,	-0.588307885670452110,	-0.588348316786098110,	-0.588388746430873240,	-0.588429174604676810,	-0.588469601307407110,	
+-0.588510026538963450,	-0.588550450299244690,	-0.588590872588150240,	-0.588631293405578180,	-0.588671712751427930,	-0.588712130625598350,	-0.588752547027988850,	-0.588792961958497510,	
+-0.588833375417023850,	-0.588873787403467190,	-0.588914197917725590,	-0.588954606959698480,	-0.588995014529284930,	-0.589035420626384140,	-0.589075825250894520,	-0.589116228402715270,	
+-0.589156630081745460,	-0.589197030287884500,	-0.589237429021030490,	-0.589277826281083050,	-0.589318222067940930,	-0.589358616381503660,	-0.589399009221669430,	-0.589439400588337770,	
+-0.589479790481407530,	-0.589520178900778240,	-0.589560565846348080,	-0.589600951318016490,	-0.589641335315682970,	-0.589681717839245720,	-0.589722098888604160,	-0.589762478463657370,	
+-0.589802856564304760,	-0.589843233190444630,	-0.589883608341976400,	-0.589923982018799140,	-0.589964354220812280,	-0.590004724947914230,	-0.590045094200004280,	-0.590085461976981640,	
+-0.590125828278745710,	-0.590166193105194910,	-0.590206556456228550,	-0.590246918331745810,	-0.590287278731646210,	-0.590327637655827960,	-0.590367995104190690,	-0.590408351076633700,	
+-0.590448705573055510,	-0.590489058593355540,	-0.590529410137432990,	-0.590569760205187260,	-0.590610108796516650,	-0.590650455911320930,	-0.590690801549499040,	-0.590731145710950420,	
+-0.590771488395573700,	-0.590811829603268170,	-0.590852169333933030,	-0.590892507587467920,	-0.590932844363771140,	-0.590973179662742210,	-0.591013513484280440,	-0.591053845828285130,	
+-0.591094176694654920,	-0.591134506083289210,	-0.591174833994087320,	-0.591215160426948550,	-0.591255485381771640,	-0.591295808858456010,	-0.591336130856901180,	-0.591376451377005790,	
+-0.591416770418669140,	-0.591457087981790530,	-0.591497404066269720,	-0.591537718672004890,	-0.591578031798895900,	-0.591618343446841720,	-0.591658653615741990,	-0.591698962305495460,	
+-0.591739269516001310,	-0.591779575247159180,	-0.591819879498868380,	-0.591860182271027440,	-0.591900483563536190,	-0.591940783376293630,	-0.591981081709199500,	-0.592021378562152420,	
+-0.592061673935051710,	-0.592101967827797340,	-0.592142260240287600,	-0.592182551172422130,	-0.592222840624100360,	-0.592263128595221900,	-0.592303415085685180,	-0.592343700095390060,	
+-0.592383983624235500,	-0.592424265672121480,	-0.592464546238946400,	-0.592504825324609910,	-0.592545102929011410,	-0.592585379052050440,	-0.592625653693625740,	-0.592665926853636950,	
+-0.592706198531983250,	-0.592746468728564400,	-0.592786737443279140,	-0.592827004676026890,	-0.592867270426707500,	-0.592907534695219730,	-0.592947797481462980,	-0.592988058785336780,	
+-0.593028318606740770,	-0.593068576945573690,	-0.593108833801735070,	-0.593149089175124430,	-0.593189343065641310,	-0.593229595473184550,	-0.593269846397653900,	-0.593310095838948450,	
+-0.593350343796968270,	-0.593390590271611780,	-0.593430835262778840,	-0.593471078770368870,	-0.593511320794281480,	-0.593551561334415450,	-0.593591800390670610,	-0.593632037962946500,	
+-0.593672274051141980,	-0.593712508655156790,	-0.593752741774890350,	-0.593792973410242400,	-0.593833203561111580,	-0.593873432227397860,	-0.593913659409000540,	-0.593953885105819370,	
+-0.593994109317753200,	-0.594034332044701690,	-0.594074553286564330,	-0.594114773043241010,	-0.594154991314630450,	-0.594195208100632310,	-0.594235423401146210,	-0.594275637216071910,	
+-0.594315849545308140,	-0.594356060388754660,	-0.594396269746311100,	-0.594436477617877320,	-0.594476684003351850,	-0.594516888902634770,	-0.594557092315625700,	-0.594597294242223630,	
+-0.594637494682328400,	-0.594677693635839330,	-0.594717891102656380,	-0.594758087082678410,	-0.594798281575805170,	-0.594838474581936170,	-0.594878666100971510,	-0.594918856132809700,	
+-0.594959044677350720,	-0.594999231734494200,	-0.595039417304140010,	-0.595079601386186760,	-0.595119783980534670,	-0.595159965087083020,	-0.595200144705731900,	-0.595240322836379950,	
+-0.595280499478927250,	-0.595320674633273650,	-0.595360848299318010,	-0.595401020476960310,	-0.595441191166099950,	-0.595481360366637010,	-0.595521528078470360,	-0.595561694301499860,	
+-0.595601859035625130,	-0.595642022280746140,	-0.595682184036761650,	-0.595722344303571740,	-0.595762503081076030,	-0.595802660369174290,	-0.595842816167765690,	-0.595882970476749980,	
+-0.595923123296026810,	-0.595963274625496250,	-0.596003424465057160,	-0.596043572814609400,	-0.596083719674053160,	-0.596123865043287180,	-0.596164008922211660,	-0.596204151310726020,	
+-0.596244292208730430,	-0.596284431616123660,	-0.596324569532805880,	-0.596364705958676740,	-0.596404840893636100,	-0.596444974337583030,	-0.596485106290417510,	-0.596525236752039170,	
+-0.596565365722348200,	-0.596605493201243340,	-0.596645619188624910,	-0.596685743684392310,	-0.596725866688445740,	-0.596765988200684160,	-0.596806108221007550,	-0.596846226749315760,	
+-0.596886343785508640,	-0.596926459329485400,	-0.596966573381146000,	-0.597006685940390520,	-0.597046797007117940,	-0.597086906581228430,	-0.597127014662621640,	-0.597167121251197640,	
+-0.597207226346855410,	-0.597247329949495250,	-0.597287432059016690,	-0.597327532675319910,	-0.597367631798303990,	-0.597407729427868910,	-0.597447825563914630,	-0.597487920206341010,	
+-0.597528013355047350,	-0.597568105009933510,	-0.597608195170899580,	-0.597648283837845410,	-0.597688371010670180,	-0.597728456689273990,	-0.597768540873557130,	-0.597808623563418460,	
+-0.597848704758758290,	-0.597888784459476350,	-0.597928862665472740,	-0.597968939376646750,	-0.598009014592898240,	-0.598049088314127290,	-0.598089160540233980,	-0.598129231271117390,	
+-0.598169300506677710,	-0.598209368246814810,	-0.598249434491428870,	-0.598289499240418960,	-0.598329562493685300,	-0.598369624251127720,	-0.598409684512646530,	-0.598449743278140600,	
+-0.598489800547510440,	-0.598529856320656140,	-0.598569910597476770,	-0.598609963377872640,	-0.598650014661743610,	-0.598690064448989980,	-0.598730112739510710,	-0.598770159533206230,	
+-0.598810204829976270,	-0.598850248629721250,	-0.598890290932340250,	-0.598930331737733470,	-0.598970371045800860,	-0.599010408856442740,	-0.599050445169558190,	-0.599090479985047500,	
+-0.599130513302810640,	-0.599170545122747920,	-0.599210575444758420,	-0.599250604268742440,	-0.599290631594600390,	-0.599330657422231350,	-0.599370681751535740,	-0.599410704582413300,	
+-0.599450725914764560,	-0.599490745748488600,	-0.599530764083485820,	-0.599570780919656100,	-0.599610796256899840,	-0.599650810095116120,	-0.599690822434205460,	-0.599730833274067730,	
+-0.599770842614603230,	-0.599810850455711250,	-0.599850856797292220,	-0.599890861639246100,	-0.599930864981473080,	-0.599970866823872570,	-0.600010867166344890,	-0.600050866008789980,	
+-0.600090863351108390,	-0.600130859193199200,	-0.600170853534962910,	-0.600210846376299730,	-0.600250837717109190,	-0.600290827557291570,	-0.600330815896746860,	-0.600370802735375350,	
+-0.600410788073076570,	-0.600450771909750820,	-0.600490754245298190,	-0.600530735079618960,	-0.600570714412612560,	-0.600610692244179400,	-0.600650668574219450,	-0.600690643402633230,	
+-0.600730616729320040,	-0.600770588554180310,	-0.600810558877114100,	-0.600850527698021940,	-0.600890495016802920,	-0.600930460833357770,	-0.600970425147586810,	-0.601010387959389440,	
+-0.601050349268666180,	-0.601090309075316910,	-0.601130267379242240,	-0.601170224180341610,	-0.601210179478515410,	-0.601250133273663720,	-0.601290085565687080,	-0.601330036354484900,	
+-0.601369985639957580,	-0.601409933422005330,	-0.601449879700528540,	-0.601489824475426760,	-0.601529767746600390,	-0.601569709513949610,	-0.601609649777374970,	-0.601649588536775750,	
+-0.601689525792052590,	-0.601729461543106030,	-0.601769395789835460,	-0.601809328532141310,	-0.601849259769923870,	-0.601889189503083680,	-0.601929117731520140,	-0.601969044455133770,	
+-0.602008969673824890,	-0.602048893387493790,	-0.602088815596040220,	-0.602128736299364590,	-0.602168655497367090,	-0.602208573189948250,	-0.602248489377007700,	-0.602288404058445970,	
+-0.602328317234163140,	-0.602368228904059940,	-0.602408139068035810,	-0.602448047725991250,	-0.602487954877826690,	-0.602527860523442540,	-0.602567764662738310,	-0.602607667295614770,	
+-0.602647568421972420,	-0.602687468041710690,	-0.602727366154730440,	-0.602767262760931620,	-0.602807157860215100,	-0.602847051452480300,	-0.602886943537627840,	-0.602926834115558140,	
+-0.602966723186171620,	-0.603006610749367900,	-0.603046496805047740,	-0.603086381353111210,	-0.603126264393459180,	-0.603166145925991160,	-0.603206025950607790,	-0.603245904467209270,	
+-0.603285781475696340,	-0.603325656975968630,	-0.603365530967926780,	-0.603405403451471530,	-0.603445274426502310,	-0.603485143892919960,	-0.603525011850624680,	-0.603564878299517330,	
+-0.603604743239497420,	-0.603644606670465600,	-0.603684468592322280,	-0.603724329004968090,	-0.603764187908302770,	-0.603804045302226980,	-0.603843901186641110,	-0.603883755561445800,	
+-0.603923608426540800,	-0.603963459781826750,	-0.604003309627203940,	-0.604043157962573350,	-0.604083004787834500,	-0.604122850102888130,	-0.604162693907635000,	-0.604202536201974730,	
+-0.604242376985808070,	-0.604282216259035550,	-0.604322054021557810,	-0.604361890273274690,	-0.604401725014086730,	-0.604441558243894450,	-0.604481389962598700,	-0.604521220170099130,	
+-0.604561048866296470,	-0.604600876051091140,	-0.604640701724384000,	-0.604680525886074790,	-0.604720348536064270,	-0.604760169674252830,	-0.604799989300541350,	-0.604839807414829570,	
+-0.604879624017018220,	-0.604919439107008180,	-0.604959252684699190,	-0.604999064749992100,	-0.605038875302787220,	-0.605078684342985620,	-0.605118491870486940,	-0.605158297885192040,	
+-0.605198102387001450,	-0.605237905375815900,	-0.605277706851535150,	-0.605317506814060270,	-0.605357305263291570,	-0.605397102199129900,	-0.605436897621475230,	-0.605476691530228210,	
+-0.605516483925289560,	-0.605556274806560050,	-0.605596064173939410,	-0.605635852027328610,	-0.605675638366628300,	-0.605715423191739100,	-0.605755206502561090,	-0.605794988298995030,	
+-0.605834768580941870,	-0.605874547348301480,	-0.605914324600974610,	-0.605954100338861990,	-0.605993874561864490,	-0.606033647269881960,	-0.606073418462815260,	-0.606113188140565030,	
+-0.606152956303032230,	-0.606192722950116610,	-0.606232488081719260,	-0.606272251697740680,	-0.606312013798081750,	-0.606351774382642540,	-0.606391533451323790,	-0.606431291004026260,	
+-0.606471047040650800,	-0.606510801561097380,	-0.606550554565267070,	-0.606590306053060630,	-0.606630056024378140,	-0.606669804479120440,	-0.606709551417188190,	-0.606749296838482550,	
+-0.606789040742903190,	-0.606828783130351270,	-0.606868524000727440,	-0.606908263353932550,	-0.606948001189866690,	-0.606987737508430940,	-0.607027472309525700,	-0.607067205593052270,	
+-0.607106937358910300,	-0.607146667607001090,	-0.607186396337225260,	-0.607226123549483690,	-0.607265849243676550,	-0.607305573419704700,	-0.607345296077469340,	-0.607385017216870330,	
+-0.607424736837808840,	-0.607464454940185420,	-0.607504171523901240,	-0.607543886588856390,	-0.607583600134951720,	-0.607623312162088090,	-0.607663022670166470,	-0.607702731659086950,	
+-0.607742439128750700,	-0.607782145079058260,	-0.607821849509910810,	-0.607861552421208430,	-0.607901253812852090,	-0.607940953684742770,	-0.607980652036781310,	-0.608020348868867910,	
+-0.608060044180903540,	-0.608099737972789160,	-0.608139430244425740,	-0.608179120995713470,	-0.608218810226553330,	-0.608258497936846500,	-0.608298184126493060,	-0.608337868795394200,	
+-0.608377551943450670,	-0.608417233570563650,	-0.608456913676633130,	-0.608496592261560390,	-0.608536269325246070,	-0.608575944867591480,	-0.608615618888496690,	-0.608655291387862900,	
+-0.608694962365590840,	-0.608734631821581720,	-0.608774299755735600,	-0.608813966167953800,	-0.608853631058137170,	-0.608893294426186670,	-0.608932956272002610,	-0.608972616595486180,	
+-0.609012275396538570,	-0.609051932675059970,	-0.609091588430951460,	-0.609131242664114000,	-0.609170895374448800,	-0.609210546561856030,	-0.609250196226236880,	-0.609289844367492230,	
+-0.609329490985523250,	-0.609369136080230240,	-0.609408779651514410,	-0.609448421699276710,	-0.609488062223418230,	-0.609527701223839150,	-0.609567338700441000,	-0.609606974653124410,	
+-0.609646609081790690,	-0.609686241986340140,	-0.609725873366673940,	-0.609765503222693520,	-0.609805131554298940,	-0.609844758361391510,	-0.609884383643872210,	-0.609924007401642210,	
+-0.609963629634601930,	-0.610003250342652570,	-0.610042869525695090,	-0.610082487183630780,	-0.610122103316359850,	-0.610161717923783710,	-0.610201331005803320,	-0.610240942562319870,	
+-0.610280552593233770,	-0.610320161098446220,	-0.610359768077858410,	-0.610399373531371410,	-0.610438977458885650,	-0.610478579860302410,	-0.610518180735523110,	-0.610557780084448050,	
+-0.610597377906978430,	-0.610636974203015440,	-0.610676568972460370,	-0.610716162215213520,	-0.610755753931176320,	-0.610795344120249610,	-0.610834932782335030,	-0.610874519917332660,	
+-0.610914105525144020,	-0.610953689605670090,	-0.610993272158812380,	-0.611032853184471090,	-0.611072432682547630,	-0.611112010652943070,	-0.611151587095558950,	-0.611191162010295440,	
+-0.611230735397053970,	-0.611270307255735720,	-0.611309877586242110,	-0.611349446388473330,	-0.611389013662331000,	-0.611428579407716550,	-0.611468143624530170,	-0.611507706312673480,	
+-0.611547267472047570,	-0.611586827102553850,	-0.611626385204092630,	-0.611665941776565520,	-0.611705496819873520,	-0.611745050333918130,	-0.611784602318599770,	-0.611824152773819960,	
+-0.611863701699479680,	-0.611903249095480550,	-0.611942794961722990,	-0.611982339298108300,	-0.612021882104537900,	-0.612061423380913070,	-0.612100963127134360,	-0.612140501343103270,	
+-0.612180038028721230,	-0.612219573183888750,	-0.612259106808507370,	-0.612298638902478150,	-0.612338169465702740,	-0.612377698498081550,	-0.612417225999516090,	-0.612456751969907560,	
+-0.612496276409157600,	-0.612535799317166510,	-0.612575320693835910,	-0.612614840539067010,	-0.612654358852761430,	-0.612693875634819580,	-0.612733390885143000,	-0.612772904603632980,	
+-0.612812416790191050,	-0.612851927444717730,	-0.612891436567114530,	-0.612930944157283110,	-0.612970450215124090,	-0.613009954740538760,	-0.613049457733428670,	-0.613088959193695220,	
+-0.613128459121239140,	-0.613167957515961760,	-0.613207454377764580,	-0.613246949706549140,	-0.613286443502215840,	-0.613325935764666540,	-0.613365426493802430,	-0.613404915689525040,	
+-0.613444403351735000,	-0.613483889480333940,	-0.613523374075223280,	-0.613562857136304430,	-0.613602338663478130,	-0.613641818656645910,	-0.613681297115709180,	-0.613720774040569570,	
+-0.613760249431127720,	-0.613799723287285160,	-0.613839195608943730,	-0.613878666396003860,	-0.613918135648367390,	-0.613957603365935630,	-0.613997069548610110,	-0.614036534196291670,	
+-0.614075997308881850,	-0.614115458886281940,	-0.614154918928393910,	-0.614194377435118070,	-0.614233834406356370,	-0.614273289842010020,	-0.614312743741980860,	-0.614352196106169530,	
+-0.614391646934477680,	-0.614431096226806690,	-0.614470543983058230,	-0.614509990203133130,	-0.614549434886933140,	-0.614588878034359800,	-0.614628319645313950,	-0.614667759719697340,	
+-0.614707198257411270,	-0.614746635258357600,	-0.614786070722436960,	-0.614825504649551100,	-0.614864937039601540,	-0.614904367892490030,	-0.614943797208117200,	-0.614983224986384910,	
+-0.615022651227194460,	-0.615062075930447820,	-0.615101499096045610,	-0.615140920723889710,	-0.615180340813881400,	-0.615219759365922660,	-0.615259176379914230,	-0.615298591855757750,	
+-0.615338005793355180,	-0.615377418192607270,	-0.615416829053415770,	-0.615456238375682200,	-0.615495646159308410,	-0.615535052404195150,	-0.615574457110244280,	-0.615613860277357210,	
+-0.615653261905435900,	-0.615692661994381110,	-0.615732060544094570,	-0.615771457554477930,	-0.615810853025433040,	-0.615850246956860640,	-0.615889639348662590,	-0.615929030200740410,	
+-0.615968419512996080,	-0.616007807285330330,	-0.616047193517645030,	-0.616086578209842140,	-0.616125961361822410,	-0.616165342973487800,	-0.616204723044739830,	-0.616244101575480370,	
+-0.616283478565610390,	-0.616322854015031620,	-0.616362227923645810,	-0.616401600291354710,	-0.616440971118059290,	-0.616480340403661400,	-0.616519708148062670,	-0.616559074351165080,	
+-0.616598439012869480,	-0.616637802133077730,	-0.616677163711691460,	-0.616716523748612630,	-0.616755882243742120,	-0.616795239196981980,	-0.616834594608233640,	-0.616873948477399180,	
+-0.616913300804379560,	-0.616952651589076750,	-0.616992000831392500,	-0.617031348531227990,	-0.617070694688485080,	-0.617110039303065520,	-0.617149382374871050,	-0.617188723903802970,	
+-0.617228063889762920,	-0.617267402332652760,	-0.617306739232374450,	-0.617346074588828950,	-0.617385408401918250,	-0.617424740671544070,	-0.617464071397608280,	-0.617503400580012070,	
+-0.617542728218657300,	-0.617582054313445820,	-0.617621378864279480,	-0.617660701871059260,	-0.617700023333687340,	-0.617739343252065810,	-0.617778661626095520,	-0.617817978455678540,	
+-0.617857293740716630,	-0.617896607481111750,	-0.617935919676765090,	-0.617975230327578620,	-0.618014539433454080,	-0.618053846994293550,	-0.618093153009998010,	-0.618132457480469630,	
+-0.618171760405610170,	-0.618211061785321590,	-0.618250361619504970,	-0.618289659908062510,	-0.618328956650895820,	-0.618368251847907110,	-0.618407545498997460,	-0.618446837604068930,	
+-0.618486128163023620,	-0.618525417175762700,	-0.618564704642188270,	-0.618603990562202060,	-0.618643274935706140,	-0.618682557762601730,	-0.618721839042790990,	-0.618761118776175570,	
+-0.618800396962657650,	-0.618839673602138540,	-0.618878948694520090,	-0.618918222239704390,	-0.618957494237593500,	-0.618996764688088400,	-0.619036033591091490,	-0.619075300946504430,	
+-0.619114566754229490,	-0.619153831014167770,	-0.619193093726221560,	-0.619232354890292490,	-0.619271614506282990,	-0.619310872574094120,	-0.619350129093627970,	-0.619389384064786830,	
+-0.619428637487472010,	-0.619467889361585480,	-0.619507139687029310,	-0.619546388463705580,	-0.619585635691515590,	-0.619624881370361420,	-0.619664125500145160,	-0.619703368080768870,	
+-0.619742609112133750,	-0.619781848594142200,	-0.619821086526695990,	-0.619860322909697390,	-0.619899557743047720,	-0.619938791026649060,	-0.619978022760403480,	-0.620017252944213170,	
+-0.620056481577979430,	-0.620095708661604460,	-0.620134934194990550,	-0.620174158178038890,	-0.620213380610651900,	-0.620252601492731540,	-0.620291820824179880,	-0.620331038604898470,	
+-0.620370254834789360,	-0.620409469513754640,	-0.620448682641696610,	-0.620487894218516470,	-0.620527104244116610,	-0.620566312718399020,	-0.620605519641265980,	-0.620644725012618800,	
+-0.620683928832359790,	-0.620723131100391010,	-0.620762331816614670,	-0.620801530980932270,	-0.620840728593245910,	-0.620879924653458200,	-0.620919119161470250,	-0.620958312117184440,	
+-0.620997503520502980,	-0.621036693371328050,	-0.621075881669561070,	-0.621115068415104330,	-0.621154253607860030,	-0.621193437247730350,	-0.621232619334616710,	-0.621271799868421630,	
+-0.621310978849046960,	-0.621350156276395230,	-0.621389332150367730,	-0.621428506470866890,	-0.621467679237794780,	-0.621506850451053920,	-0.621546020110545490,	-0.621585188216172040,	
+-0.621624354767835620,	-0.621663519765438650,	-0.621702683208882560,	-0.621741845098069730,	-0.621781005432902600,	-0.621820164213282680,	-0.621859321439112270,	-0.621898477110293670,	
+-0.621937631226729180,	-0.621976783788320220,	-0.622015934794969310,	-0.622055084246578630,	-0.622094232143050490,	-0.622133378484286510,	-0.622172523270189020,	-0.622211666500660290,	
+-0.622250808175602630,	-0.622289948294917680,	-0.622329086858507850,	-0.622368223866275330,	-0.622407359318122630,	-0.622446493213951070,	-0.622485625553663380,	-0.622524756337161980,	
+-0.622563885564348270,	-0.622603013235124900,	-0.622642139349393940,	-0.622681263907058020,	-0.622720386908018560,	-0.622759508352178190,	-0.622798628239438990,	-0.622837746569703590,	
+-0.622876863342873400,	-0.622915978558851170,	-0.622955092217538970,	-0.622994204318839340,	-0.623033314862653900,	-0.623072423848885170,	-0.623111531277435350,	-0.623150637148207060,	
+-0.623189741461101840,	-0.623228844216022320,	-0.623267945412870890,	-0.623307045051549440,	-0.623346143131960240,	-0.623385239654005720,	-0.623424334617588390,	-0.623463428022610010,	
+-0.623502519868972980,	-0.623541610156579610,	-0.623580698885332630,	-0.623619786055133570,	-0.623658871665884960,	-0.623697955717489210,	-0.623737038209848940,	-0.623776119142865680,	
+-0.623815198516442180,	-0.623854276330480630,	-0.623893352584883760,	-0.623932427279553230,	-0.623971500414391530,	-0.624010571989301540,	-0.624049642004184670,	-0.624088710458943760,	
+-0.624127777353481020,	-0.624166842687699170,	-0.624205906461499980,	-0.624244968674785850,	-0.624284029327459410,	-0.624323088419423300,	-0.624362145950579040,	-0.624401201920829370,	
+-0.624440256330076720,	-0.624479309178223810,	-0.624518360465172280,	-0.624557410190824890,	-0.624596458355083930,	-0.624635504957852140,	-0.624674549999031270,	-0.624713593478524070,	
+-0.624752635396232820,	-0.624791675752060400,	-0.624830714545908440,	-0.624869751777679560,	-0.624908787447276740,	-0.624947821554601600,	-0.624986854099557010,	-0.625025885082045150,	
+-0.625064914501968990,	-0.625103942359230170,	-0.625142968653731420,	-0.625181993385375390,	-0.625221016554064590,	-0.625260038159700990,	-0.625299058202187340,	-0.625338076681425940,	
+-0.625377093597319740,	-0.625416108949770400,	-0.625455122738680870,	-0.625494134963953560,	-0.625533145625491120,	-0.625572154723195610,	-0.625611162256969670,	-0.625650168226716150,	
+-0.625689172632336810,	-0.625728175473734600,	-0.625767176750811950,	-0.625806176463471700,	-0.625845174611615710,	-0.625884171195146720,	-0.625923166213967370,	-0.625962159667980410,	
+-0.626001151557087690,	-0.626040141881192060,	-0.626079130640196160,	-0.626118117834002730,	-0.626157103462513740,	-0.626196087525631830,	-0.626235070023259840,	-0.626274050955300420,	
+-0.626313030321655640,	-0.626352008122228240,	-0.626390984356921090,	-0.626429959025636250,	-0.626468932128276480,	-0.626507903664744290,	-0.626546873634942770,	-0.626585842038773650,	
+-0.626624808876140030,	-0.626663774146944300,	-0.626702737851089540,	-0.626741699988477620,	-0.626780660559011380,	-0.626819619562593470,	-0.626858576999126950,	-0.626897532868513570,	
+-0.626936487170656310,	-0.626975439905457900,	-0.627014391072821310,	-0.627053340672648290,	-0.627092288704841900,	-0.627131235169304910,	-0.627170180065940050,	-0.627209123394649510,	
+-0.627248065155336040,	-0.627287005347902830,	-0.627325943972251830,	-0.627364881028285800,	-0.627403816515907710,	-0.627442750435020400,	-0.627481682785525740,	-0.627520613567327020,	
+-0.627559542780326660,	-0.627598470424427850,	-0.627637396499532540,	-0.627676321005543710,	-0.627715243942364110,	-0.627754165309896690,	-0.627793085108043550,	-0.627832003336707740,	
+-0.627870919995791810,	-0.627909835085199040,	-0.627948748604831300,	-0.627987660554591650,	-0.628026570934383190,	-0.628065479744107980,	-0.628104386983669110,	-0.628143292652969200,	
+-0.628182196751911450,	-0.628221099280397820,	-0.628260000238331510,	-0.628298899625615140,	-0.628337797442151900,	-0.628376693687843880,	-0.628415588362594040,	-0.628454481466305230,	
+-0.628493372998880530,	-0.628532262960222130,	-0.628571151350233110,	-0.628610038168816110,	-0.628648923415874420,	-0.628687807091310000,	-0.628726689195026170,	-0.628765569726925880,	
+-0.628804448686911320,	-0.628843326074885690,	-0.628882201890751720,	-0.628921076134412620,	-0.628959948805770440,	-0.628998819904728390,	-0.629037689431189320,	-0.629076557385056410,	
+-0.629115423766231750,	-0.629154288574618410,	-0.629193151810119480,	-0.629232013472637910,	-0.629270873562076120,	-0.629309732078336960,	-0.629348589021323620,	-0.629387444390939080,	
+-0.629426298187085620,	-0.629465150409666330,	-0.629504001058584620,	-0.629542850133742450,	-0.629581697635043240,	-0.629620543562389720,	-0.629659387915685320,	-0.629698230694832000,	
+-0.629737071899733050,	-0.629775911530291550,	-0.629814749586410480,	-0.629853586067992350,	-0.629892420974940140,	-0.629931254307156910,	-0.629970086064545850,	-0.630008916247009280,	
+-0.630047744854450480,	-0.630086571886772200,	-0.630125397343877850,	-0.630164221225669730,	-0.630203043532051030,	-0.630241864262924720,	-0.630280683418194100,	-0.630319500997761350,	
+-0.630358317001530000,	-0.630397131429403120,	-0.630435944281283020,	-0.630474755557073110,	-0.630513565256676230,	-0.630552373379995920,	-0.630591179926934250,	-0.630629984897394640,	
+-0.630668788291280150,	-0.630707590108493870,	-0.630746390348938420,	-0.630785189012516900,	-0.630823986099132480,	-0.630862781608688360,	-0.630901575541087060,	-0.630940367896231650,	
+-0.630979158674025430,	-0.631017947874371710,	-0.631056735497172670,	-0.631095521542331840,	-0.631134306009752510,	-0.631173088899337100,	-0.631211870210989010,	-0.631250649944611220,	
+-0.631289428100107130,	-0.631328204677379160,	-0.631366979676330600,	-0.631405753096864640,	-0.631444524938884700,	-0.631483295202293070,	-0.631522063886993170,	-0.631560830992888070,	
+-0.631599596519881290,	-0.631638360467875140,	-0.631677122836773130,	-0.631715883626478350,	-0.631754642836894090,	-0.631793400467922980,	-0.631832156519468340,	-0.631870910991433670,	
+-0.631909663883721380,	-0.631948415196234900,	-0.631987164928877410,	-0.632025913081552320,	-0.632064659654162140,	-0.632103404646610300,	-0.632142148058799870,	-0.632180889890634480,	
+-0.632219630142016540,	-0.632258368812849580,	-0.632297105903036560,	-0.632335841412481230,	-0.632374575341085880,	-0.632413307688754140,	-0.632452038455389110,	-0.632490767640894290,	
+-0.632529495245172320,	-0.632568221268126510,	-0.632606945709660140,	-0.632645668569676860,	-0.632684389848078950,	-0.632723109544770180,	-0.632761827659653830,	-0.632800544192632650,	
+-0.632839259143610170,	-0.632877972512489450,	-0.632916684299174140,	-0.632955394503566860,	-0.632994103125571030,	-0.633032810165089940,	-0.633071515622027240,	-0.633110219496285320,	
+-0.633148921787767830,	-0.633187622496378170,	-0.633226321622019640,	-0.633265019164595100,	-0.633303715124007960,	-0.633342409500161520,	-0.633381102292959410,	-0.633419793502304150,	
+-0.633458483128099490,	-0.633497171170248840,	-0.633535857628655050,	-0.633574542503221540,	-0.633613225793851710,	-0.633651907500449200,	-0.633690587622916520,	-0.633729266161157430,	
+-0.633767943115075120,	-0.633806618484573310,	-0.633845292269554550,	-0.633883964469922680,	-0.633922635085580780,	-0.633961304116432700,	-0.633999971562380970,	-0.634038637423329440,	
+-0.634077301699181200,	-0.634115964389840080,	-0.634154625495208730,	-0.634193285015190790,	-0.634231942949689990,	-0.634270599298608960,	-0.634309254061851460,	-0.634347907239320770,	
+-0.634386558830920650,	-0.634425208836553840,	-0.634463857256124090,	-0.634502504089534570,	-0.634541149336689150,	-0.634579792997490570,	-0.634618435071842460,	-0.634657075559648340,	
+-0.634695714460811860,	-0.634734351775235630,	-0.634772987502823630,	-0.634811621643479150,	-0.634850254197105950,	-0.634888885163606750,	-0.634927514542885320,	-0.634966142334845500,	
+-0.635004768539390030,	-0.635043393156422550,	-0.635082016185846590,	-0.635120637627565990,	-0.635159257481483390,	-0.635197875747502640,	-0.635236492425527270,	-0.635275107515460900,	
+-0.635313721017206510,	-0.635352332930667840,	-0.635390943255748300,	-0.635429551992351740,	-0.635468159140380910,	-0.635506764699739770,	-0.635545368670331620,	-0.635583971052060440,	
+-0.635622571844829070,	-0.635661171048541140,	-0.635699768663100410,	-0.635738364688410500,	-0.635776959124374370,	-0.635815551970895900,	-0.635854143227878810,	-0.635892732895226080,	
+-0.635931320972841440,	-0.635969907460628540,	-0.636008492358491220,	-0.636047075666332340,	-0.636085657384055760,	-0.636124237511564990,	-0.636162816048764010,	-0.636201392995555670,	
+-0.636239968351843820,	-0.636278542117532100,	-0.636317114292524360,	-0.636355684876723450,	-0.636394253870033340,	-0.636432821272357560,	-0.636471387083600070,	-0.636509951303663830,	
+-0.636548513932452710,	-0.636587074969870550,	-0.636625634415820430,	-0.636664192270206210,	-0.636702748532931520,	-0.636741303203900320,	-0.636779856283015590,	-0.636818407770181060,	
+-0.636856957665300590,	-0.636895505968278040,	-0.636934052679016480,	-0.636972597797419660,	-0.637011141323391430,	-0.637049683256835640,	-0.637088223597655380,	-0.637126762345754490,	
+-0.637165299501036730,	-0.637203835063406050,	-0.637242369032765430,	-0.637280901409018830,	-0.637319432192070430,	-0.637357961381822990,	-0.637396488978180800,	-0.637435014981047270,	
+-0.637473539390326580,	-0.637512062205921710,	-0.637550583427736630,	-0.637589103055675180,	-0.637627621089641220,	-0.637666137529537940,	-0.637704652375269300,	-0.637743165626738940,	
+-0.637781677283851160,	-0.637820187346508800,	-0.637858695814615850,	-0.637897202688076260,	-0.637935707966794000,	-0.637974211650672140,	-0.638012713739614770,	-0.638051214233525620,	
+-0.638089713132308670,	-0.638128210435867200,	-0.638166706144105200,	-0.638205200256926730,	-0.638243692774234980,	-0.638282183695933920,	-0.638320673021927410,	-0.638359160752119630,	
+-0.638397646886413540,	-0.638436131424713340,	-0.638474614366922880,	-0.638513095712946120,	-0.638551575462686370,	-0.638590053616047590,	-0.638628530172933750,	-0.638667005133248920,	
+-0.638705478496896180,	-0.638743950263779840,	-0.638782420433803510,	-0.638820889006871620,	-0.638859355982887010,	-0.638897821361754100,	-0.638936285143376970,	-0.638974747327658800,	
+-0.639013207914503670,	-0.639051666903815650,	-0.639090124295498720,	-0.639128580089456170,	-0.639167034285592180,	-0.639205486883810510,	-0.639243937884015570,	-0.639282387286110420,	
+-0.639320835089999260,	-0.639359281295586060,	-0.639397725902774990,	-0.639436168911469260,	-0.639474610321573160,	-0.639513050132990420,	-0.639551488345625470,	-0.639589924959381500,	
+-0.639628359974162670,	-0.639666793389873310,	-0.639705225206416590,	-0.639743655423696820,	-0.639782084041617850,	-0.639820511060084090,	-0.639858936478998610,	-0.639897360298265940,	
+-0.639935782517789820,	-0.639974203137474550,	-0.640012622157223430,	-0.640051039576940760,	-0.640089455396530500,	-0.640127869615896960,	-0.640166282234943320,	-0.640204693253574100,	
+-0.640243102671693040,	-0.640281510489204560,	-0.640319916706012070,	-0.640358321322019750,	-0.640396724337131910,	-0.640435125751251940,	-0.640473525564284160,	-0.640511923776132640,	
+-0.640550320386701570,	-0.640588715395894460,	-0.640627108803615400,	-0.640665500609768680,	-0.640703890814258490,	-0.640742279416988250,	-0.640780666417862350,	-0.640819051816784780,	
+-0.640857435613659930,	-0.640895817808391110,	-0.640934198400882730,	-0.640972577391038860,	-0.641010954778763910,	-0.641049330563961290,	-0.641087704746535310,	-0.641126077326390040,	
+-0.641164448303429890,	-0.641202817677558270,	-0.641241185448679700,	-0.641279551616698470,	-0.641317916181518010,	-0.641356279143042720,	-0.641394640501176780,	-0.641433000255824610,	
+-0.641471358406889510,	-0.641509714954276110,	-0.641548069897888370,	-0.641586423237630710,	-0.641624774973406750,	-0.641663125105120910,	-0.641701473632677160,	-0.641739820555980110,	
+-0.641778165874933190,	-0.641816509589440810,	-0.641854851699407150,	-0.641893192204736730,	-0.641931531105332960,	-0.641969868401100370,	-0.642008204091943480,	-0.642046538177765690,	
+-0.642084870658471640,	-0.642123201533965400,	-0.642161530804151390,	-0.642199858468933350,	-0.642238184528215570,	-0.642276508981902360,	-0.642314831829898240,	-0.642353153072106610,	
+-0.642391472708432220,	-0.642429790738779040,	-0.642468107163051800,	-0.642506421981153930,	-0.642544735192989940,	-0.642583046798464230,	-0.642621356797481220,	-0.642659665189944440,	
+-0.642697971975758400,	-0.642736277154827950,	-0.642774580727056400,	-0.642812882692348380,	-0.642851183050608180,	-0.642889481801740330,	-0.642927778945648450,	-0.642966074482237080,	
+-0.643004368411410620,	-0.643042660733073480,	-0.643080951447129400,	-0.643119240553482910,	-0.643157528052038410,	-0.643195813942700310,	-0.643234098225372470,	-0.643272380899959310,	
+-0.643310661966365100,	-0.643348941424494720,	-0.643387219274251580,	-0.643425495515540400,	-0.643463770148265500,	-0.643502043172331510,	-0.643540314587642050,	-0.643578584394101870,	
+-0.643616852591615500,	-0.643655119180086670,	-0.643693384159420120,	-0.643731647529519950,	-0.643769909290291100,	-0.643808169441637210,	-0.643846427983462810,	-0.643884684915672300,	
+-0.643922940238170540,	-0.643961193950860930,	-0.643999446053648450,	-0.644037696546437390,	-0.644075945429132270,	-0.644114192701637060,	-0.644152438363856380,	-0.644190682415694550,	
+-0.644228924857056410,	-0.644267165687845590,	-0.644305404907966840,	-0.644343642517324900,	-0.644381878515823630,	-0.644420112903367540,	-0.644458345679861160,	-0.644496576845209330,	
+-0.644534806399315710,	-0.644573034342085020,	-0.644611260673421780,	-0.644649485393230750,	-0.644687708501415660,	-0.644725929997881250,	-0.644764149882532060,	-0.644802368155272810,	
+-0.644840584816007370,	-0.644878799864640360,	-0.644917013301076420,	-0.644955225125220300,	-0.644993435336975730,	-0.645031643936247570,	-0.645069850922940670,	-0.645108056296958890,	
+-0.645146260058206860,	-0.645184462206589200,	-0.645222662742010680,	-0.645260861664375240,	-0.645299058973587520,	-0.645337254669552270,	-0.645375448752174230,	-0.645413641221357140,	
+-0.645451832077006070,	-0.645490021319025330,	-0.645528208947319880,	-0.645566394961793580,	-0.645604579362351380,	-0.645642762148897600,	-0.645680943321337300,	-0.645719122879574340,	
+-0.645757300823513570,	-0.645795477153059850,	-0.645833651868117030,	-0.645871824968590190,	-0.645909996454383740,	-0.645948166325402640,	-0.645986334581550860,	-0.646024501222733140,	
+-0.646062666248854220,	-0.646100829659818960,	-0.646138991455531330,	-0.646177151635896170,	-0.646215310200818130,	-0.646253467150202150,	-0.646291622483952220,	-0.646329776201973180,	
+-0.646367928304169780,	-0.646406078790446760,	-0.646444227660708300,	-0.646482374914859270,	-0.646520520552804290,	-0.646558664574448330,	-0.646596806979695350,	-0.646634947768450430,	
+-0.646673086940618420,	-0.646711224496103410,	-0.646749360434810240,	-0.646787494756643770,	-0.646825627461508850,	-0.646863758549309550,	-0.646901888019950850,	-0.646940015873337380,	
+-0.646978142109374320,	-0.647016266727965420,	-0.647054389729015970,	-0.647092511112430490,	-0.647130630878114070,	-0.647168749025970770,	-0.647206865555905560,	-0.647244980467823190,	
+-0.647283093761628740,	-0.647321205437226150,	-0.647359315494520640,	-0.647397423933417150,	-0.647435530753819770,	-0.647473635955633450,	-0.647511739538763180,	-0.647549841503113790,	
+-0.647587941848589590,	-0.647626040575095430,	-0.647664137682536280,	-0.647702233170816990,	-0.647740327039841860,	-0.647778419289515850,	-0.647816509919743820,	-0.647854598930430850,	
+-0.647892686321481110,	-0.647930772092799590,	-0.647968856244291120,	-0.648006938775860910,	-0.648045019687413020,	-0.648083098978852520,	-0.648121176650084620,	-0.648159252701013490,	
+-0.648197327131544210,	-0.648235399941581640,	-0.648273471131030840,	-0.648311540699796020,	-0.648349608647782350,	-0.648387674974894690,	-0.648425739681038230,	-0.648463802766117040,	
+-0.648501864230036310,	-0.648539924072701000,	-0.648577982294016090,	-0.648616038893885970,	-0.648654093872215840,	-0.648692147228910330,	-0.648730198963874850,	-0.648768249077013470,	
+-0.648806297568231600,	-0.648844344437433880,	-0.648882389684525720,	-0.648920433309411180,	-0.648958475311995580,	-0.648996515692184080,	-0.649034554449881010,	-0.649072591584991530,	
+-0.649110627097420620,	-0.649148660987073470,	-0.649186693253854250,	-0.649224723897668390,	-0.649262752918420620,	-0.649300780316016350,	-0.649338806090359880,	-0.649376830241356280,	
+-0.649414852768910640,	-0.649452873672928250,	-0.649490892953313300,	-0.649528910609971090,	-0.649566926642806690,	-0.649604941051725170,	-0.649642953836631070,	-0.649680964997429560,	
+-0.649718974534026050,	-0.649756982446324630,	-0.649794988734230810,	-0.649832993397649550,	-0.649870996436486160,	-0.649908997850644820,	-0.649946997640031170,	-0.649984995804549830,	
+-0.650022992344106540,	-0.650060987258605280,	-0.650098980547951570,	-0.650136972212050470,	-0.650174962250807290,	-0.650212950664126210,	-0.650250937451912980,	-0.650288922614072230,	
+-0.650326906150509590,	-0.650364888061129350,	-0.650402868345836830,	-0.650440847004537530,	-0.650478824037135750,	-0.650516799443536910,	-0.650554773223646080,	-0.650592745377368660,	
+-0.650630715904609080,	-0.650668684805272620,	-0.650706652079264480,	-0.650744617726490060,	-0.650782581746853770,	-0.650820544140261030,	-0.650858504906616900,	-0.650896464045826910,	
+-0.650934421557795350,	-0.650972377442427750,	-0.651010331699629300,	-0.651048284329305280,	-0.651086235331360230,	-0.651124184705699550,	-0.651162132452228760,	-0.651200078570852270,	
+-0.651238023061475600,	-0.651275965924003940,	-0.651313907158342700,	-0.651351846764396280,	-0.651389784742070320,	-0.651427721091269780,	-0.651465655811900410,	-0.651503588903866500,	
+-0.651541520367073580,	-0.651579450201426940,	-0.651617378406831980,	-0.651655304983193240,	-0.651693229930416230,	-0.651731153248406140,	-0.651769074937068480,	-0.651806994996307900,	
+-0.651844913426029680,	-0.651882830226139350,	-0.651920745396542100,	-0.651958658937142780,	-0.651996570847846790,	-0.652034481128559660,	-0.652072389779186020,	-0.652110296799631390,	
+-0.652148202189801070,	-0.652186105949600580,	-0.652224008078934440,	-0.652261908577708270,	-0.652299807445827380,	-0.652337704683197290,	-0.652375600289722520,	-0.652413494265308920,	
+-0.652451386609861460,	-0.652489277323285880,	-0.652527166405486800,	-0.652565053856369760,	-0.652602939675840150,	-0.652640823863803510,	-0.652678706420164460,	-0.652716587344828620,	
+-0.652754466637701650,	-0.652792344298688270,	-0.652830220327694000,	-0.652868094724624040,	-0.652905967489384340,	-0.652943838621879320,	-0.652981708122014730,	-0.653019575989695840,	
+-0.653057442224828310,	-0.653095306827316870,	-0.653133169797067260,	-0.653171031133984670,	-0.653208890837974730,	-0.653246748908942300,	-0.653284605346793110,	-0.653322460151432250,	
+-0.653360313322765670,	-0.653398164860697910,	-0.653436014765134800,	-0.653473863035981870,	-0.653511709673144090,	-0.653549554676526980,	-0.653587398046035940,	-0.653625239781576830,	
+-0.653663079883054170,	-0.653700918350373920,	-0.653738755183441270,	-0.653776590382162180,	-0.653814423946441180,	-0.653852255876184230,	-0.653890086171296510,	-0.653927914831684000,	
+-0.653965741857251310,	-0.654003567247904320,	-0.654041391003548410,	-0.654079213124089340,	-0.654117033609431850,	-0.654154852459481910,	-0.654192669674144690,	-0.654230485253326280,	
+-0.654268299196931190,	-0.654306111504865400,	-0.654343922177034740,	-0.654381731213343860,	-0.654419538613698610,	-0.654457344378004620,	-0.654495148506167520,	-0.654532950998092280,	
+-0.654570751853684630,	-0.654608551072850100,	-0.654646348655494540,	-0.654684144601522690,	-0.654721938910840520,	-0.654759731583353540,	-0.654797522618967620,	-0.654835312017587490,	
+-0.654873099779119120,	-0.654910885903467910,	-0.654948670390539830,	-0.654986453240239850,	-0.655024234452473710,	-0.655062014027147250,	-0.655099791964165460,	-0.655137568263434170,	
+-0.655175342924859020,	-0.655213115948345750,	-0.655250887333799440,	-0.655288657081125820,	-0.655326425190230650,	-0.655364191661019780,	-0.655401956493397940,	-0.655439719687271330,	
+-0.655477481242545460,	-0.655515241159126180,	-0.655552999436918360,	-0.655590756075828170,	-0.655628511075761030,	-0.655666264436623010,	-0.655704016158318860,	-0.655741766240754750,	
+-0.655779514683836550,	-0.655817261487469330,	-0.655855006651558830,	-0.655892750176010900,	-0.655930492060731400,	-0.655968232305625290,	-0.656005970910598650,	-0.656043707875556990,	
+-0.656081443200406510,	-0.656119176885052060,	-0.656156908929399600,	-0.656194639333354980,	-0.656232368096824060,	-0.656270095219711800,	-0.656307820701924390,	-0.656345544543367350,	
+-0.656383266743946870,	-0.656420987303567900,	-0.656458706222136420,	-0.656496423499558500,	-0.656534139135739210,	-0.656571853130584530,	-0.656609565484000290,	-0.656647276195892360,	
+-0.656684985266166030,	-0.656722692694727160,	-0.656760398481481600,	-0.656798102626335310,	-0.656835805129193480,	-0.656873505989962080,	-0.656911205208547070,	-0.656948902784854180,	
+-0.656986598718788840,	-0.657024293010257000,	-0.657061985659164400,	-0.657099676665417130,	-0.657137366028920370,	-0.657175053749580180,	-0.657212739827302330,	-0.657250424261993090,	
+-0.657288107053557340,	-0.657325788201901350,	-0.657363467706931210,	-0.657401145568552110,	-0.657438821786670120,	-0.657476496361190990,	-0.657514169292021110,	-0.657551840579065350,	
+-0.657589510222230000,	-0.657627178221420920,	-0.657664844576544280,	-0.657702509287505180,	-0.657740172354209670,	-0.657777833776563850,	-0.657815493554473770,	-0.657853151687844640,	
+-0.657890808176582630,	-0.657928463020593490,	-0.657966116219783630,	-0.658003767774058110,	-0.658041417683323140,	-0.658079065947485000,	-0.658116712566448880,	-0.658154357540120970,	
+-0.658192000868407120,	-0.658229642551213740,	-0.658267282588445800,	-0.658304920980009700,	-0.658342557725811180,	-0.658380192825756770,	-0.658417826279751430,	-0.658455458087701560,	
+-0.658493088249513030,	-0.658530716765092120,	-0.658568343634344130,	-0.658605968857175260,	-0.658643592433491460,	-0.658681214363198930,	-0.658718834646203180,	-0.658756453282410280,	
+-0.658794070271726540,	-0.658831685614057360,	-0.658869299309308930,	-0.658906911357387210,	-0.658944521758198620,	-0.658982130511648330,	-0.659019737617642760,	-0.659057343076087760,	
+-0.659094946886889850,	-0.659132549049954220,	-0.659170149565187160,	-0.659207748432494740,	-0.659245345651783390,	-0.659282941222958160,	-0.659320535145925700,	-0.659358127420591860,	
+-0.659395718046863030,	-0.659433307024644640,	-0.659470894353842870,	-0.659508480034364020,	-0.659546064066114160,	-0.659583646448998810,	-0.659621227182924490,	-0.659658806267797270,	
+-0.659696383703522790,	-0.659733959490007350,	-0.659771533627157010,	-0.659809106114878090,	-0.659846676953076190,	-0.659884246141657530,	-0.659921813680528270,	-0.659959379569594830,	
+-0.659996943808762620,	-0.660034506397937930,	-0.660072067337027060,	-0.660109626625936420,	-0.660147184264571310,	-0.660184740252838240,	-0.660222294590643300,	-0.660259847277893000,	
+-0.660297398314492750,	-0.660334947700348950,	-0.660372495435368130,	-0.660410041519455810,	-0.660447585952518290,	-0.660485128734461860,	-0.660522669865192920,	-0.660560209344617010,	
+-0.660597747172640530,	-0.660635283349169770,	-0.660672817874111030,	-0.660710350747369950,	-0.660747881968853030,	-0.660785411538466370,	-0.660822939456116480,	-0.660860465721708980,	
+-0.660897990335150290,	-0.660935513296346590,	-0.660973034605204400,	-0.661010554261629360,	-0.661048072265527980,	-0.661085588616806660,	-0.661123103315371050,	-0.661160616361127770,	
+-0.661198127753982900,	-0.661235637493843060,	-0.661273145580613790,	-0.661310652014201580,	-0.661348156794512750,	-0.661385659921453930,	-0.661423161394930630,	-0.661460661214849370,	
+-0.661498159381116560,	-0.661535655893638500,	-0.661573150752321150,	-0.661610643957070810,	-0.661648135507793890,	-0.661685625404397020,	-0.661723113646785710,	-0.661760600234866600,	
+-0.661798085168546320,	-0.661835568447730620,	-0.661873050072325890,	-0.661910530042238540,	-0.661948008357375110,	-0.661985485017641430,	-0.662022960022944030,	-0.662060433373189210,	
+-0.662097905068283700,	-0.662135375108133030,	-0.662172843492643940,	-0.662210310221722720,	-0.662247775295276120,	-0.662285238713209660,	-0.662322700475430180,	-0.662360160581843880,	
+-0.662397619032357610,	-0.662435075826876880,	-0.662472530965308450,	-0.662509984447558820,	-0.662547436273534410,	-0.662584886443141170,	-0.662622334956285640,	-0.662659781812874660,	
+-0.662697227012813860,	-0.662734670556009990,	-0.662772112442369550,	-0.662809552671799080,	-0.662846991244204320,	-0.662884428159492220,	-0.662921863417568980,	-0.662959297018341440,	
+-0.662996728961715240,	-0.663034159247597340,	-0.663071587875893930,	-0.663109014846511970,	-0.663146440159357090,	-0.663183863814336140,	-0.663221285811355530,	-0.663258706150322010,	
+-0.663296124831141420,	-0.663333541853720510,	-0.663370957217966020,	-0.663408370923783910,	-0.663445782971080810,	-0.663483193359763250,	-0.663520602089738070,	-0.663558009160911120,	
+-0.663595414573189050,	-0.663632818326478470,	-0.663670220420686130,	-0.663707620855717990,	-0.663745019631480690,	-0.663782416747880970,	-0.663819812204825440,	-0.663857206002220090,	
+-0.663894598139971650,	-0.663931988617986860,	-0.663969377436172350,	-0.664006764594434080,	-0.664044150092678810,	-0.664081533930813590,	-0.664118916108744180,	-0.664156296626377540,	
+-0.664193675483620070,	-0.664231052680378850,	-0.664268428216559510,	-0.664305802092069240,	-0.664343174306814440,	-0.664380544860701970,	-0.664417913753637790,	-0.664455280985528970,	
+-0.664492646556281820,	-0.664530010465803400,	-0.664567372713999680,	-0.664604733300777520,	-0.664642092226043420,	-0.664679449489704590,	-0.664716805091666750,	-0.664754159031836770,	
+-0.664791511310121490,	-0.664828861926427760,	-0.664866210880661560,	-0.664903558172729840,	-0.664940903802539560,	-0.664978247769996700,	-0.665015590075008100,	-0.665052930717480620,	
+-0.665090269697321210,	-0.665127607014435630,	-0.665164942668731160,	-0.665202276660114330,	-0.665239608988492100,	-0.665276939653770550,	-0.665314268655856630,	-0.665351595994656990,	
+-0.665388921670078790,	-0.665426245682027910,	-0.665463568030411400,	-0.665500888715135910,	-0.665538207736108610,	-0.665575525093235480,	-0.665612840786423470,	-0.665650154815579760,	
+-0.665687467180610340,	-0.665724777881422150,	-0.665762086917922160,	-0.665799394290017110,	-0.665836699997613300,	-0.665874004040617810,	-0.665911306418937250,	-0.665948607132478830,	
+-0.665985906181148500,	-0.666023203564853450,	-0.666060499283500310,	-0.666097793336996260,	-0.666135085725247490,	-0.666172376448160960,	-0.666209665505643420,	-0.666246952897602160,	
+-0.666284238623943150,	-0.666321522684573560,	-0.666358805079400370,	-0.666396085808329990,	-0.666433364871269360,	-0.666470642268125250,	-0.666507917998804930,	-0.666545192063214500,	
+-0.666582464461261020,	-0.666619735192851450,	-0.666657004257892760,	-0.666694271656291360,	-0.666731537387954210,	-0.666768801452788270,	-0.666806063850700510,	-0.666843324581597450,	
+-0.666880583645385940,	-0.666917841041973050,	-0.666955096771265850,	-0.666992350833170660,	-0.667029603227594530,	-0.667066853954444430,	-0.667104103013627440,	-0.667141350405049960,	
+-0.667178596128618960,	-0.667215840184241960,	-0.667253082571824920,	-0.667290323291275240,	-0.667327562342499790,	-0.667364799725405630,	-0.667402035439899290,	-0.667439269485887720,	
+-0.667476501863278120,	-0.667513732571977550,	-0.667550961611892200,	-0.667588188982929600,	-0.667625414684996480,	-0.667662638718000130,	-0.667699861081846870,	-0.667737081776443860,	
+-0.667774300801698310,	-0.667811518157517270,	-0.667848733843807050,	-0.667885947860475060,	-0.667923160207428480,	-0.667960370884573720,	-0.667997579891818070,	-0.668034787229068390,	
+-0.668071992896232090,	-0.668109196893215460,	-0.668146399219925910,	-0.668183599876270300,	-0.668220798862156020,	-0.668257996177489490,	-0.668295191822177890,	-0.668332385796128300,	
+-0.668369578099248130,	-0.668406768731443670,	-0.668443957692622330,	-0.668481144982691070,	-0.668518330601557190,	-0.668555514549127210,	-0.668592696825308530,	-0.668629877430008350,	
+-0.668667056363133170,	-0.668704233624590310,	-0.668741409214286930,	-0.668778583132130230,	-0.668815755378026840,	-0.668852925951884060,	-0.668890094853608950,	-0.668927262083109040,	
+-0.668964427640290520,	-0.669001591525061000,	-0.669038753737327460,	-0.669075914276997310,	-0.669113073143977170,	-0.669150230338174220,	-0.669187385859495780,	-0.669224539707849230,	
+-0.669261691883140890,	-0.669298842385278370,	-0.669335991214169090,	-0.669373138369719570,	-0.669410283851837100,	-0.669447427660428970,	-0.669484569795402610,	-0.669521710256664400,	
+-0.669558849044122000,	-0.669595986157682450,	-0.669633121597253300,	-0.669670255362741050,	-0.669707387454053120,	-0.669744517871096680,	-0.669781646613779370,	-0.669818773682007480,	
+-0.669855899075688770,	-0.669893022794730290,	-0.669930144839039570,	-0.669967265208523120,	-0.670004383903088470,	-0.670041500922643030,	-0.670078616267093970,	-0.670115729936348160,	
+-0.670152841930312990,	-0.670189952248896100,	-0.670227060892003900,	-0.670264167859544120,	-0.670301273151423960,	-0.670338376767550810,	-0.670375478707831540,	-0.670412578972173550,	
+-0.670449677560484010,	-0.670486774472670690,	-0.670523869708640090,	-0.670560963268299730,	-0.670598055151557130,	-0.670635145358319580,	-0.670672233888493840,	-0.670709320741987640,	
+-0.670746405918708040,	-0.670783489418562810,	-0.670820571241458440,	-0.670857651387302690,	-0.670894729856003180,	-0.670931806647466430,	-0.670968881761600300,	-0.671005955198311850,	
+-0.671043026957508840,	-0.671080097039097990,	-0.671117165442986830,	-0.671154232169082880,	-0.671191297217293540,	-0.671228360587525770,	-0.671265422279687000,	-0.671302482293684720,	
+-0.671339540629426470,	-0.671376597286819090,	-0.671413652265770320,	-0.671450705566187360,	-0.671487757187977820,	-0.671524807131048780,	-0.671561855395307550,	-0.671598901980662080,	
+-0.671635946887019000,	-0.671672990114286160,	-0.671710031662370750,	-0.671747071531180630,	-0.671784109720622410,	-0.671821146230604070,	-0.671858181061032680,	-0.671895214211816310,	
+-0.671932245682861580,	-0.671969275474076140,	-0.672006303585367610,	-0.672043330016643510,	-0.672080354767810920,	-0.672117377838777340,	-0.672154399229450310,	-0.672191418939737660,	
+-0.672228436969546150,	-0.672265453318783510,	-0.672302467987357270,	-0.672339480975175150,	-0.672376492282144020,	-0.672413501908171620,	-0.672450509853165900,	-0.672487516117033500,	
+-0.672524520699682270,	-0.672561523601019840,	-0.672598524820953840,	-0.672635524359391220,	-0.672672522216239740,	-0.672709518391407140,	-0.672746512884800920,	-0.672783505696328050,	
+-0.672820496825896510,	-0.672857486273413690,	-0.672894474038787550,	-0.672931460121924840,	-0.672968444522733520,	-0.673005427241121000,	-0.673042408276995350,	-0.673079387630263200,	
+-0.673116365300832740,	-0.673153341288611600,	-0.673190315593506840,	-0.673227288215426210,	-0.673264259154277460,	-0.673301228409968310,	-0.673338195982405850,	-0.673375161871497820,	
+-0.673412126077151950,	-0.673449088599275990,	-0.673486049437777010,	-0.673523008592562980,	-0.673559966063541400,	-0.673596921850620260,	-0.673633875953706380,	-0.673670828372707970,	
+-0.673707779107532320,	-0.673744728158087720,	-0.673781675524280810,	-0.673818621206019760,	-0.673855565203212550,	-0.673892507515766010,	-0.673929448143588350,	-0.673966387086586960,	
+-0.674003324344669920,	-0.674040259917744300,	-0.674077193805717960,	-0.674114126008498630,	-0.674151056525994390,	-0.674187985358112090,	-0.674224912504759910,	-0.674261837965845380,	
+-0.674298761741276680,	-0.674335683830960650,	-0.674372604234805490,	-0.674409522952718720,	-0.674446439984608630,	-0.674483355330381950,	-0.674520268989946990,	-0.674557180963211600,	
+-0.674594091250082960,	-0.674630999850469150,	-0.674667906764277790,	-0.674704811991416960,	-0.674741715531793850,	-0.674778617385316410,	-0.674815517551892400,	-0.674852416031429980,	
+-0.674889312823836130,	-0.674926207929019030,	-0.674963101346886420,	-0.674999993077346480,	-0.675036883120306070,	-0.675073771475673490,	-0.675110658143356580,	-0.675147543123263190,	
+-0.675184426415300740,	-0.675221308019377190,	-0.675258187935400380,	-0.675295066163278390,	-0.675331942702918410,	-0.675368817554228620,	-0.675405690717117090,	-0.675442562191491010,	
+-0.675479431977258460,	-0.675516300074327390,	-0.675553166482605880,	-0.675590031202001230,	-0.675626894232421390,	-0.675663755573774340,	-0.675700615225968250,	-0.675737473188910310,	
+-0.675774329462508590,	-0.675811184046671180,	-0.675848036941306020,	-0.675884888146320420,	-0.675921737661622670,	-0.675958585487120620,	-0.675995431622722350,	-0.676032276068335270,	
+-0.676069118823867440,	-0.676105959889227170,	-0.676142799264321640,	-0.676179636949059030,	-0.676216472943347520,	-0.676253307247094980,	-0.676290139860208920,	-0.676326970782597510,	
+-0.676363800014168740,	-0.676400627554830660,	-0.676437453404490800,	-0.676474277563057220,	-0.676511100030438020,	-0.676547920806541360,	-0.676584739891274540,	-0.676621557284545870,	
+-0.676658372986263410,	-0.676695186996335240,	-0.676731999314668760,	-0.676768809941172390,	-0.676805618875754300,	-0.676842426118321790,	-0.676879231668783170,	-0.676916035527046600,	
+-0.676952837693020170,	-0.676989638166611290,	-0.677026436947728350,	-0.677063234036279440,	-0.677100029432172620,	-0.677136823135315420,	-0.677173615145616250,	-0.677210405462982950,	
+-0.677247194087324030,	-0.677283981018546700,	-0.677320766256559570,	-0.677357549801270390,	-0.677394331652587780,	-0.677431111810418930,	-0.677467890274672250,	-0.677504667045256030,	
+-0.677541442122078340,	-0.677578215505046710,	-0.677614987194069540,	-0.677651757189055240,	-0.677688525489911210,	-0.677725292096545970,	-0.677762057008867380,	-0.677798820226783950,	
+-0.677835581750203310,	-0.677872341579033530,	-0.677909099713183030,	-0.677945856152559980,	-0.677982610897072120,	-0.678019363946627650,	-0.678056115301134740,	-0.678092864960501920,	
+-0.678129612924636580,	-0.678166359193447250,	-0.678203103766842010,	-0.678239846644729250,	-0.678276587827016720,	-0.678313327313612600,	-0.678350065104425410,	-0.678386801199362900,	
+-0.678423535598333350,	-0.678460268301244840,	-0.678496999308006110,	-0.678533728618524570,	-0.678570456232708620,	-0.678607182150466560,	-0.678643906371706910,	-0.678680628896337180,	
+-0.678717349724265780,	-0.678754068855401020,	-0.678790786289651500,	-0.678827502026924660,	-0.678864216067128990,	-0.678900928410172910,	-0.678937639055964710,	-0.678974348004412140,	
+-0.679011055255423710,	-0.679047760808907940,	-0.679084464664772460,	-0.679121166822925890,	-0.679157867283276320,	-0.679194566045732360,	-0.679231263110201770,	-0.679267958476593050,	
+-0.679304652144814280,	-0.679341344114774310,	-0.679378034386380670,	-0.679414722959541860,	-0.679451409834166300,	-0.679488095010162500,	-0.679524778487438200,	-0.679561460265901920,	
+-0.679598140345461950,	-0.679634818726027050,	-0.679671495407504710,	-0.679708170389803580,	-0.679744843672832500,	-0.679781515256498880,	-0.679818185140711460,	-0.679854853325378650,	
+-0.679891519810408960,	-0.679928184595710140,	-0.679964847681190920,	-0.680001509066759600,	-0.680038168752324810,	-0.680074826737794180,	-0.680111483023076560,	-0.680148137608080240,	
+-0.680184790492713850,	-0.680221441676885250,	-0.680258091160502950,	-0.680294738943475470,	-0.680331385025711550,	-0.680368029407118710,	-0.680404672087605910,	-0.680441313067081330,	
+-0.680477952345453830,	-0.680514589922631140,	-0.680551225798522010,	-0.680587859973035060,	-0.680624492446078140,	-0.680661123217560000,	-0.680697752287389050,	-0.680734379655474120,	
+-0.680771005321722860,	-0.680807629286044100,	-0.680844251548346160,	-0.680880872108538090,	-0.680917490966527430,	-0.680954108122223010,	-0.680990723575533360,	-0.681027337326367220,	
+-0.681063949374632440,	-0.681100559720237750,	-0.681137168363091680,	-0.681173775303102970,	-0.681210380540179570,	-0.681246984074230230,	-0.681283585905163690,	-0.681320186032887800,	
+-0.681356784457311630,	-0.681393381178343360,	-0.681429976195891960,	-0.681466569509865390,	-0.681503161120172280,	-0.681539751026721370,	-0.681576339229421290,	-0.681612925728180220,	
+-0.681649510522906680,	-0.681686093613509400,	-0.681722674999897250,	-0.681759254681978070,	-0.681795832659660710,	-0.681832408932853800,	-0.681868983501466190,	-0.681905556365405840,	
+-0.681942127524581500,	-0.681978696978902230,	-0.682015264728275890,	-0.682051830772611440,	-0.682088395111817290,	-0.682124957745802620,	-0.682161518674475160,	-0.682198077897743890,	
+-0.682234635415517430,	-0.682271191227704740,	-0.682307745334213680,	-0.682344297734953310,	-0.682380848429832270,	-0.682417397418759290,	-0.682453944701642560,	-0.682490490278390930,	
+-0.682527034148913140,	-0.682563576313118040,	-0.682600116770913700,	-0.682636655522209090,	-0.682673192566912720,	-0.682709727904933890,	-0.682746261536180340,	-0.682782793460561030,	
+-0.682819323677985150,	-0.682855852188360650,	-0.682892378991596490,	-0.682928904087601430,	-0.682965427476284300,	-0.683001949157553410,	-0.683038469131317600,	-0.683074987397485620,	
+-0.683111503955966540,	-0.683148018806668310,	-0.683184531949500020,	-0.683221043384370510,	-0.683257553111188630,	-0.683294061129862570,	-0.683330567440301300,	-0.683367072042413650,	
+-0.683403574936108700,	-0.683440076121294430,	-0.683476575597880000,	-0.683513073365774490,	-0.683549569424885870,	-0.683586063775123430,	-0.683622556416395800,	-0.683659047348612050,	
+-0.683695536571680360,	-0.683732024085509820,	-0.683768509890009260,	-0.683804993985087760,	-0.683841476370653510,	-0.683877957046615470,	-0.683914436012882600,	-0.683950913269363860,	
+-0.683987388815967660,	-0.684023862652602840,	-0.684060334779178490,	-0.684096805195603560,	-0.684133273901786240,	-0.684169740897635830,	-0.684206206183061380,	-0.684242669757971100,	
+-0.684279131622274160,	-0.684315591775879310,	-0.684352050218695830,	-0.684388506950631910,	-0.684424961971596750,	-0.684461415281499170,	-0.684497866880248380,	-0.684534316767752670,	
+-0.684570764943921000,	-0.684607211408662540,	-0.684643656161886380,	-0.684680099203500700,	-0.684716540533414800,	-0.684752980151537520,	-0.684789418057778150,	-0.684825854252044900,	
+-0.684862288734247040,	-0.684898721504293760,	-0.684935152562093250,	-0.684971581907555030,	-0.685008009540587710,	-0.685044435461100830,	-0.685080859669002450,	-0.685117282164201980,	
+-0.685153702946608270,	-0.685190122016130610,	-0.685226539372677300,	-0.685262955016157750,	-0.685299368946480690,	-0.685335781163555650,	-0.685372191667290690,	-0.685408600457595330,	
+-0.685445007534378540,	-0.685481412897549380,	-0.685517816547016490,	-0.685554218482689050,	-0.685590618704476020,	-0.685627017212286800,	-0.685663414006029700,	-0.685699809085614120,	
+-0.685736202450949350,	-0.685772594101943690,	-0.685808984038506540,	-0.685845372260546870,	-0.685881758767974190,	-0.685918143560696800,	-0.685954526638624000,	-0.685990908001664960,	
+-0.686027287649728870,	-0.686063665582724250,	-0.686100041800560500,	-0.686136416303146700,	-0.686172789090392140,	-0.686209160162205230,	-0.686245529518495490,	-0.686281897159171870,	
+-0.686318263084143900,	-0.686354627293319860,	-0.686390989786609280,	-0.686427350563921570,	-0.686463709625165230,	-0.686500066970249570,	-0.686536422599083650,	-0.686572776511577110,	
+-0.686609128707638240,	-0.686645479187176560,	-0.686681827950101240,	-0.686718174996321600,	-0.686754520325746240,	-0.686790863938284480,	-0.686827205833845710,	-0.686863546012339230,	
+-0.686899884473673450,	-0.686936221217758100,	-0.686972556244502040,	-0.687008889553815010,	-0.687045221145605400,	-0.687081551019782850,	-0.687117879176256660,	-0.687154205614935340,	
+-0.687190530335728630,	-0.687226853338545610,	-0.687263174623295780,	-0.687299494189887670,	-0.687335812038230800,	-0.687372128168234340,	-0.687408442579807930,	-0.687444755272860200,	
+-0.687481066247300430,	-0.687517375503038150,	-0.687553683039982650,	-0.687589988858042570,	-0.687626292957127630,	-0.687662595337146910,	-0.687698895998010040,	-0.687735194939625540,	
+-0.687771492161903140,	-0.687807787664752040,	-0.687844081448081730,	-0.687880373511800870,	-0.687916663855819070,	-0.687952952480045950,	-0.687989239384390160,	-0.688025524568761200,	
+-0.688061808033068490,	-0.688098089777221640,	-0.688134369801129190,	-0.688170648104700740,	-0.688206924687845720,	-0.688243199550473750,	-0.688279472692493450,	-0.688315744113814460,	
+-0.688352013814346080,	-0.688388281793998020,	-0.688424548052678940,	-0.688460812590298450,	-0.688497075406765970,	-0.688533336501991110,	-0.688569595875882620,	-0.688605853528350130,	
+-0.688642109459303260,	-0.688678363668650870,	-0.688714616156302470,	-0.688750866922167690,	-0.688787115966155940,	-0.688823363288176060,	-0.688859608888137910,	-0.688895852765950670,	
+-0.688932094921524070,	-0.688968335354766980,	-0.689004574065589010,	-0.689040811053899580,	-0.689077046319608420,	-0.689113279862624490,	-0.689149511682857210,	-0.689185741780216190,	
+-0.689221970154611170,	-0.689258196805950800,	-0.689294421734145010,	-0.689330644939103570,	-0.689366866420735080,	-0.689403086178949410,	-0.689439304213656180,	-0.689475520524764800,	
+-0.689511735112184440,	-0.689547947975824750,	-0.689584159115595120,	-0.689620368531405400,	-0.689656576223164560,	-0.689692782190782120,	-0.689728986434167800,	-0.689765188953231360,	
+-0.689801389747881630,	-0.689837588818028370,	-0.689873786163581190,	-0.689909981784449840,	-0.689946175680543170,	-0.689982367851771140,	-0.690018558298043480,	-0.690054747019269170,	
+-0.690090934015357930,	-0.690127119286219280,	-0.690163302831763300,	-0.690199484651898620,	-0.690235664746535300,	-0.690271843115582760,	-0.690308019758951060,	-0.690344194676548840,	
+-0.690380367868286270,	-0.690416539334072650,	-0.690452709073818060,	-0.690488877087431340,	-0.690525043374822460,	-0.690561207935901030,	-0.690597370770576810,	-0.690633531878758870,	
+-0.690669691260357150,	-0.690705848915281080,	-0.690742004843440840,	-0.690778159044745270,	-0.690814311519104220,	-0.690850462266427770,	-0.690886611286624760,	-0.690922758579605280,	
+-0.690958904145278940,	-0.690995047983555600,	-0.691031190094344330,	-0.691067330477555200,	-0.691103469133097610,	-0.691139606060881650,	-0.691175741260816380,	-0.691211874732811760,	
+-0.691248006476777530,	-0.691284136492623550,	-0.691320264780258990,	-0.691356391339593590,	-0.691392516170537320,	-0.691428639273000130,	-0.691464760646890890,	-0.691500880292119870,	
+-0.691536998208596930,	-0.691573114396231150,	-0.691609228854932590,	-0.691645341584611000,	-0.691681452585176330,	-0.691717561856537650,	-0.691753669398605160,	-0.691789775211288480,	
+-0.691825879294497680,	-0.691861981648141940,	-0.691898082272131120,	-0.691934181166375170,	-0.691970278330784060,	-0.692006373765266860,	-0.692042467469733860,	-0.692078559444094580,	
+-0.692114649688259310,	-0.692150738202137020,	-0.692186824985637990,	-0.692222910038672090,	-0.692258993361148710,	-0.692295074952977710,	-0.692331154814069150,	-0.692367232944333000,	
+-0.692403309343678440,	-0.692439384012015550,	-0.692475456949254280,	-0.692511528155304700,	-0.692547597630075900,	-0.692583665373478150,	-0.692619731385421210,	-0.692655795665815250,	
+-0.692691858214569580,	-0.692727919031594140,	-0.692763978116798910,	-0.692800035470094170,	-0.692836091091388880,	-0.692872144980593460,	-0.692908197137617750,	-0.692944247562371720,	
+-0.692980296254764870,	-0.693016343214707180,	-0.693052388442108920,	-0.693088431936879410,	-0.693124473698928930,	-0.693160513728167120,	-0.693196552024504480,	-0.693232588587850080,	
+-0.693268623418114130,	-0.693304656515206670,	-0.693340687879037910,	-0.693376717509517130,	-0.693412745406554620,	-0.693448771570060130,	-0.693484795999944060,	-0.693520818696115700,	
+-0.693556839658485250,	-0.693592858886962650,	-0.693628876381458430,	-0.693664892141881540,	-0.693700906168142390,	-0.693736918460151400,	-0.693772929017817730,	-0.693808937841051800,	
+-0.693844944929763450,	-0.693880950283863100,	-0.693916953903260030,	-0.693952955787864530,	-0.693988955937586800,	-0.694024954352336910,	-0.694060951032024250,	-0.694096945976559350,	
+-0.694132939185851950,	-0.694168930659812560,	-0.694204920398350580,	-0.694240908401376200,	-0.694276894668799600,	-0.694312879200531090,	-0.694348861996480160,	-0.694384843056556900,	
+-0.694420822380672040,	-0.694456799968734660,	-0.694492775820655270,	-0.694528749936344060,	-0.694564722315711200,	-0.694600692958666220,	-0.694636661865119520,	-0.694672629034981170,	
+-0.694708594468161580,	-0.694744558164570150,	-0.694780520124117400,	-0.694816480346713280,	-0.694852438832268330,	-0.694888395580691930,	-0.694924350591894500,	-0.694960303865786330,	
+-0.694996255402277610,	-0.695032205201277950,	-0.695068153262697770,	-0.695104099586447480,	-0.695140044172436690,	-0.695175987020575810,	-0.695211928130774930,	-0.695247867502944540,	
+-0.695283805136994170,	-0.695319741032834340,	-0.695355675190375110,	-0.695391607609527010,	-0.695427538290199540,	-0.695463467232303230,	-0.695499394435748260,	-0.695535319900445150,	
+-0.695571243626303510,	-0.695607165613233660,	-0.695643085861145870,	-0.695679004369950670,	-0.695714921139557680,	-0.695750836169877430,	-0.695786749460820090,	-0.695822661012296170,	
+-0.695858570824215210,	-0.695894478896487920,	-0.695930385229024730,	-0.695966289821735140,	-0.696002192674530010,	-0.696038093787319290,	-0.696073993160013730,	-0.696109890792522720,	
+-0.696145786684757130,	-0.696181680836627010,	-0.696217573248043010,	-0.696253463918914850,	-0.696289352849152940,	-0.696325240038667690,	-0.696361125487369610,	-0.696397009195168340,	
+-0.696432891161974710,	-0.696468771387698690,	-0.696504649872251140,	-0.696540526615541670,	-0.696576401617480910,	-0.696612274877979390,	-0.696648146396946940,	-0.696684016174293990,	
+-0.696719884209931140,	-0.696755750503768810,	-0.696791615055716850,	-0.696827477865685770,	-0.696863338933586100,	-0.696899198259328330,	-0.696935055842822230,	-0.696970911683978510,	
+-0.697006765782707590,	-0.697042618138919990,	-0.697078468752525550,	-0.697114317623434900,	-0.697150164751558550,	-0.697186010136807030,	-0.697221853779090180,	-0.697257695678318630,	
+-0.697293535834403230,	-0.697329374247253720,	-0.697365210916780720,	-0.697401045842894750,	-0.697436879025506440,	-0.697472710464525520,	-0.697508540159862970,	-0.697544368111429060,	
+-0.697580194319134430,	-0.697616018782889040,	-0.697651841502603730,	-0.697687662478188700,	-0.697723481709554780,	-0.697759299196611950,	-0.697795114939270820,	-0.697830928937441920,	
+-0.697866741191035980,	-0.697902551699962960,	-0.697938360464133490,	-0.697974167483458090,	-0.698009972757847600,	-0.698045776287211980,	-0.698081578071461760,	-0.698117378110508000,	
+-0.698153176404260440,	-0.698188972952630050,	-0.698224767755527110,	-0.698260560812862590,	-0.698296352124546330,	-0.698332141690489180,	-0.698367929510601780,	-0.698403715584794750,	
+-0.698439499912978160,	-0.698475282495062850,	-0.698511063330959360,	-0.698546842420578410,	-0.698582619763830180,	-0.698618395360625310,	-0.698654169210874420,	-0.698689941314488470,	
+-0.698725711671377430,	-0.698761480281452020,	-0.698797247144623210,	-0.698833012260801080,	-0.698868775629896350,	-0.698904537251819670,	-0.698940297126481980,	-0.698976055253793140,	
+-0.699011811633664220,	-0.699047566266005840,	-0.699083319150728850,	-0.699119070287743230,	-0.699154819676959920,	-0.699190567318289440,	-0.699226313211642970,	-0.699262057356930480,	
+-0.699297799754062810,	-0.699333540402950590,	-0.699369279303504790,	-0.699405016455635580,	-0.699440751859253810,	-0.699476485514270330,	-0.699512217420595440,	-0.699547947578140090,	
+-0.699583675986814700,	-0.699619402646530550,	-0.699655127557197610,	-0.699690850718726720,	-0.699726572131028850,	-0.699762291794014720,	-0.699798009707594650,	-0.699833725871679580,	
+-0.699869440286180140,	-0.699905152951007410,	-0.699940863866071460,	-0.699976573031283360,	-0.700012280446553840,	-0.700047986111793970,	-0.700083690026913840,	-0.700119392191824400,	
+-0.700155092606436820,	-0.700190791270661190,	-0.700226488184408580,	-0.700262183347589830,	-0.700297876760115790,	-0.700333568421896870,	-0.700369258332844020,	-0.700404946492868000,	
+-0.700440632901879860,	-0.700476317559789900,	-0.700512000466509080,	-0.700547681621948360,	-0.700583361026018700,	-0.700619038678630290,	-0.700654714579694420,	-0.700690388729121590,	
+-0.700726061126823120,	-0.700761731772709280,	-0.700797400666691050,	-0.700833067808679380,	-0.700868733198585340,	-0.700904396836319110,	-0.700940058721791880,	-0.700975718854914830,	
+-0.701011377235598250,	-0.701047033863753110,	-0.701082688739290470,	-0.701118341862121410,	-0.701153993232156100,	-0.701189642849305850,	-0.701225290713481500,	-0.701260936824594230,	
+-0.701296581182554330,	-0.701332223787273000,	-0.701367864638661080,	-0.701403503736629740,	-0.701439141081089400,	-0.701474776671951240,	-0.701510410509126100,	-0.701546042592525290,	
+-0.701581672922058970,	-0.701617301497638570,	-0.701652928319175140,	-0.701688553386579090,	-0.701724176699761730,	-0.701759798258633880,	-0.701795418063106860,	-0.701831036113090940,	
+-0.701866652408497550,	-0.701902266949237410,	-0.701937879735221930,	-0.701973490766361510,	-0.702009100042567220,	-0.702044707563750260,	-0.702080313329821900,	-0.702115917340692340,	
+-0.702151519596273090,	-0.702187120096474990,	-0.702222718841209460,	-0.702258315830386780,	-0.702293911063918250,	-0.702329504541715280,	-0.702365096263688260,	-0.702400686229748490,	
+-0.702436274439807050,	-0.702471860893775220,	-0.702507445591563420,	-0.702543028533083040,	-0.702578609718244930,	-0.702614189146960830,	-0.702649766819140820,	-0.702685342734696410,	
+-0.702720916893538660,	-0.702756489295578880,	-0.702792059940727580,	-0.702827628828896160,	-0.702863195959995690,	-0.702898761333937470,	-0.702934324950632130,	-0.702969886809990840,	
+-0.703005446911924900,	-0.703041005256345720,	-0.703076561843163690,	-0.703112116672290230,	-0.703147669743636740,	-0.703183221057113840,	-0.703218770612632940,	-0.703254318410104990,	
+-0.703289864449441640,	-0.703325408730553270,	-0.703360951253351410,	-0.703396492017747120,	-0.703432031023651930,	-0.703467568270976340,	-0.703503103759631880,	-0.703538637489529610,	
+-0.703574169460581160,	-0.703609699672696930,	-0.703645228125788340,	-0.703680754819766770,	-0.703716279754543650,	-0.703751802930029480,	-0.703787324346135890,	-0.703822844002774170,	
+-0.703858361899855070,	-0.703893878037290090,	-0.703929392414990420,	-0.703964905032867570,	-0.704000415890832070,	-0.704035924988795640,	-0.704071432326669360,	-0.704106937904364740,	
+-0.704142441721792520,	-0.704177943778864220,	-0.704213444075491140,	-0.704248942611584660,	-0.704284439387055540,	-0.704319934401815280,	-0.704355427655775190,	-0.704390919148846880,	
+-0.704426408880940880,	-0.704461896851968920,	-0.704497383061842620,	-0.704532867510472390,	-0.704568350197770090,	-0.704603831123646880,	-0.704639310288014410,	-0.704674787690783400,	
+-0.704710263331865370,	-0.704745737211171620,	-0.704781209328613990,	-0.704816679684102890,	-0.704852148277550160,	-0.704887615108866990,	-0.704923080177965230,	-0.704958543484755400,	
+-0.704994005029149110,	-0.705029464811057880,	-0.705064922830393350,	-0.705100379087066130,	-0.705135833580987970,	-0.705171286312070600,	-0.705206737280224650,	-0.705242186485361850,	
+-0.705277633927393620,	-0.705313079606231570,	-0.705348523521786560,	-0.705383965673970210,	-0.705419406062694040,	-0.705454844687869560,	-0.705490281549407630,	-0.705525716647220080,	
+-0.705561149981218220,	-0.705596581551313770,	-0.705632011357417600,	-0.705667439399441320,	-0.705702865677296560,	-0.705738290190894850,	-0.705773712940147120,	-0.705809133924965140,	
+-0.705844553145260290,	-0.705879970600944430,	-0.705915386291928290,	-0.705950800218123620,	-0.705986212379442370,	-0.706021622775795170,	-0.706057031407093970,	-0.706092438273250190,	
+-0.706127843374175670,	-0.706163246709781140,	-0.706198648279978580,	-0.706234048084679380,	-0.706269446123795390,	-0.706304842397237450,	-0.706340236904917430,	-0.706375629646746720,	
+-0.706411020622637280,	-0.706446409832500070,	-0.706481797276246710,	-0.706517182953788960,	-0.706552566865038530,	-0.706587949009906400,	-0.706623329388304300,	-0.706658708000144300,	
+-0.706694084845337130,	-0.706729459923794880,	-0.706764833235428820,	-0.706800204780151150,	-0.706835574557872490,	-0.706870942568505020,	-0.706906308811960150,	-0.706941673288149830,	
+-0.706977035996984910,	-0.707012396938377590,	-0.707047756112239130,	-0.707083113518481630,	-0.707118469157016040,	-0.707153823027754310,	-0.707189175130607970,	-0.707224525465489080,	
+-0.707259874032308500,	-0.707295220830978180,	-0.707330565861410300,	-0.707365909123515490,	-0.707401250617206050,	-0.707436590342393480,	-0.707471928298989640,	-0.707507264486905710,	
+-0.707542598906053750,	-0.707577931556345190,	-0.707613262437692070,	-0.707648591550005480,	-0.707683918893197480,	-0.707719244467179600,	-0.707754568271864000,	-0.707789890307161660,	
+-0.707825210572984640,	-0.707860529069244460,	-0.707895845795853410,	-0.707931160752722330,	-0.707966473939763310,	-0.708001785356888180,	-0.708037095004008910,	-0.708072402881036570,	
+-0.708107708987883220,	-0.708143013324460950,	-0.708178315890680810,	-0.708213616686454880,	-0.708248915711694900,	-0.708284212966312940,	-0.708319508450220180,	-0.708354802163328690,	
+-0.708390094105549980,	-0.708425384276796580,	-0.708460672676979320,	-0.708495959306010390,	-0.708531244163801530,	-0.708566527250264810,	-0.708601808565311520,	-0.708637088108853730,	
+-0.708672365880803290,	-0.708707641881072160,	-0.708742916109571630,	-0.708778188566213770,	-0.708813459250910880,	-0.708848728163573920,	-0.708883995304115170,	-0.708919260672446370,	
+-0.708954524268479820,	-0.708989786092126590,	-0.709025046143298980,	-0.709060304421908590,	-0.709095560927867850,	-0.709130815661087930,	-0.709166068621480910,	-0.709201319808958730,	
+-0.709236569223433590,	-0.709271816864816770,	-0.709307062733020350,	-0.709342306827956180,	-0.709377549149536660,	-0.709412789697672960,	-0.709448028472277280,	-0.709483265473261790,	
+-0.709518500700537900,	-0.709553734154017680,	-0.709588965833613190,	-0.709624195739236630,	-0.709659423870799170,	-0.709694650228213210,	-0.709729874811390600,	-0.709765097620243650,	
+-0.709800318654683520,	-0.709835537914622730,	-0.709870755399973020,	-0.709905971110646790,	-0.709941185046555350,	-0.709976397207610850,	-0.710011607593725390,	-0.710046816204811250,	
+-0.710082023040779720,	-0.710117228101543210,	-0.710152431387013560,	-0.710187632897103180,	-0.710222832631723370,	-0.710258030590786520,	-0.710293226774204920,	-0.710328421181889880,	
+-0.710363613813753790,	-0.710398804669708730,	-0.710433993749666870,	-0.710469181053539730,	-0.710504366581239720,	-0.710539550332678790,	-0.710574732307769240,	-0.710609912506422580,	
+-0.710645090928551100,	-0.710680267574066880,	-0.710715442442882430,	-0.710750615534908920,	-0.710785786850059000,	-0.710820956388244500,	-0.710856124149377930,	-0.710891290133370820,	
+-0.710926454340135350,	-0.710961616769584140,	-0.710996777421628590,	-0.711031936296181110,	-0.711067093393153770,	-0.711102248712458970,	-0.711137402254008340,	-0.711172554017714060,	
+-0.711207704003488540,	-0.711242852211243950,	-0.711277998640892030,	-0.711313143292345070,	-0.711348286165515260,	-0.711383427260315000,	-0.711418566576655920,	-0.711453704114450300,	
+-0.711488839873610560,	-0.711523973854048860,	-0.711559106055677180,	-0.711594236478407580,	-0.711629365122152690,	-0.711664491986824020,	-0.711699617072334200,	-0.711734740378595410,	
+-0.711769861905519940,	-0.711804981653019640,	-0.711840099621006810,	-0.711875215809393720,	-0.711910330218092910,	-0.711945442847016000,	-0.711980553696075490,	-0.712015662765183470,	
+-0.712050770054252660,	-0.712085875563194690,	-0.712120979291921970,	-0.712156081240346910,	-0.712191181408381780,	-0.712226279795938550,	-0.712261376402929520,	-0.712296471229267420,	
+-0.712331564274863770,	-0.712366655539631300,	-0.712401745023482080,	-0.712436832726328850,	-0.712471918648083240,	-0.712507002788657860,	-0.712542085147964910,	-0.712577165725917120,	
+-0.712612244522426110,	-0.712647321537404400,	-0.712682396770764500,	-0.712717470222418830,	-0.712752541892279210,	-0.712787611780258290,	-0.712822679886268240,	-0.712857746210221800,	
+-0.712892810752030700,	-0.712927873511607690,	-0.712962934488864830,	-0.712997993683715080,	-0.713033051096069960,	-0.713068106725842200,	-0.713103160572944540,	-0.713138212637288720,	
+-0.713173262918787240,	-0.713208311417352640,	-0.713243358132897630,	-0.713278403065333850,	-0.713313446214574150,	-0.713348487580530710,	-0.713383527163116480,	-0.713418564962243100,	
+-0.713453600977823180,	-0.713488635209769350,	-0.713523667657994240,	-0.713558698322409700,	-0.713593727202928350,	-0.713628754299462710,	-0.713663779611925510,	-0.713698803140228490,	
+-0.713733824884284500,	-0.713768844844006270,	-0.713803863019305540,	-0.713838879410095270,	-0.713873894016287760,	-0.713908906837795840,	-0.713943917874531260,	-0.713978927126406980,	
+-0.714013934593335400,	-0.714048940275229250,	-0.714083944172000380,	-0.714118946283561760,	-0.714153946609825670,	-0.714188945150705080,	-0.714223941906111830,	-0.714258936875958650,	
+-0.714293930060158290,	-0.714328921458623260,	-0.714363911071265620,	-0.714398898897998240,	-0.714433884938733940,	-0.714468869193384590,	-0.714503851661863140,	-0.714538832344082000,	
+-0.714573811239954000,	-0.714608788349391340,	-0.714643763672306640,	-0.714678737208612520,	-0.714713708958221840,	-0.714748678921046650,	-0.714783647096999710,	-0.714818613485993630,	
+-0.714853578087941370,	-0.714888540902754780,	-0.714923501930346930,	-0.714958461170630330,	-0.714993418623517840,	-0.715028374288921520,	-0.715063328166754220,	-0.715098280256928680,	
+-0.715133230559357620,	-0.715168179073953250,	-0.715203125800628500,	-0.715238070739296240,	-0.715273013889868410,	-0.715307955252257990,	-0.715342894826377810,	-0.715377832612140610,	
+-0.715412768609458680,	-0.715447702818244660,	-0.715482635238411380,	-0.715517565869871920,	-0.715552494712538230,	-0.715587421766323280,	-0.715622347031139800,	-0.715657270506900640,	
+-0.715692192193518100,	-0.715727112090905120,	-0.715762030198974220,	-0.715796946517638700,	-0.715831861046810400,	-0.715866773786402510,	-0.715901684736327980,	-0.715936593896499000,	
+-0.715971501266828400,	-0.716006406847229160,	-0.716041310637614110,	-0.716076212637895450,	-0.716111112847986450,	-0.716146011267799530,	-0.716180907897247860,	-0.716215802736243630,	
+-0.716250695784700020,	-0.716285587042529540,	-0.716320476509645370,	-0.716355364185959800,	-0.716390250071385900,	-0.716425134165836200,	-0.716460016469224080,	-0.716494896981461520,	
+-0.716529775702461790,	-0.716564652632137870,	-0.716599527770402030,	-0.716634401117167470,	-0.716669272672346810,	-0.716704142435853230,	-0.716739010407599130,	-0.716773876587497360,	
+-0.716808740975460990,	-0.716843603571403090,	-0.716878464375235720,	-0.716913323386872410,	-0.716948180606225670,	-0.716983036033208790,	-0.717017889667734050,	-0.717052741509714540,	
+-0.717087591559063210,	-0.717122439815693240,	-0.717157286279516800,	-0.717192130950447090,	-0.717226973828397400,	-0.717261814913280120,	-0.717296654205008100,	-0.717331491703494530,	
+-0.717366327408652580,	-0.717401161320394440,	-0.717435993438633400,	-0.717470823763282420,	-0.717505652294254670,	-0.717540479031462560,	-0.717575303974819170,	-0.717610127124237440,	
+-0.717644948479630780,	-0.717679768040911490,	-0.717714585807992740,	-0.717749401780787500,	-0.717784215959209050,	-0.717819028343169800,	-0.717853838932582920,	-0.717888647727361500,	
+-0.717923454727418810,	-0.717958259932667040,	-0.717993063343019710,	-0.718027864958390110,	-0.718062664778690410,	-0.718097462803834130,	-0.718132259033734120,	-0.718167053468303780,	
+-0.718201846107455520,	-0.718236636951102620,	-0.718271425999158280,	-0.718306213251535430,	-0.718340998708146940,	-0.718375782368905870,	-0.718410564233725400,	-0.718445344302518720,	
+-0.718480122575198440,	-0.718514899051677870,	-0.718549673731870060,	-0.718584446615688320,	-0.718619217703045150,	-0.718653986993853970,	-0.718688754488028160,	-0.718723520185480140,	
+-0.718758284086123300,	-0.718793046189870720,	-0.718827806496635910,	-0.718862565006331280,	-0.718897321718870110,	-0.718932076634165810,	-0.718966829752131440,	-0.719001581072679860,	
+-0.719036330595724250,	-0.719071078321177780,	-0.719105824248953970,	-0.719140568378965230,	-0.719175310711125170,	-0.719210051245346760,	-0.719244789981543620,	-0.719279526919628040,	
+-0.719314262059513760,	-0.719348995401114080,	-0.719383726944341720,	-0.719418456689109980,	-0.719453184635332030,	-0.719487910782921510,	-0.719522635131790820,	-0.719557357681853580,	
+-0.719592078433022970,	-0.719626797385212400,	-0.719661514538334600,	-0.719696229892303090,	-0.719730943447030810,	-0.719765655202431630,	-0.719800365158417940,	-0.719835073314903370,	
+-0.719869779671801100,	-0.719904484229024640,	-0.719939186986486730,	-0.719973887944100890,	-0.720008587101780280,	-0.720043284459438440,	-0.720077980016988200,	-0.720112673774342960,	
+-0.720147365731416360,	-0.720182055888121010,	-0.720216744244370540,	-0.720251430800078250,	-0.720286115555157650,	-0.720320798509521350,	-0.720355479663083220,	-0.720390159015756320,	
+-0.720424836567454370,	-0.720459512318089910,	-0.720494186267576770,	-0.720528858415828140,	-0.720563528762757640,	-0.720598197308278010,	-0.720632864052302980,	-0.720667528994745730,	
+-0.720702192135519890,	-0.720736853474538420,	-0.720771513011714720,	-0.720806170746962520,	-0.720840826680194670,	-0.720875480811324690,	-0.720910133140266090,	-0.720944783666932270,	
+-0.720979432391236410,	-0.721014079313091800,	-0.721048724432412080,	-0.721083367749110860,	-0.721118009263100880,	-0.721152648974295980,	-0.721187286882609250,	-0.721221922987954840,	
+-0.721256557290245180,	-0.721291189789394100,	-0.721325820485315130,	-0.721360449377921880,	-0.721395076467127190,	-0.721429701752844820,	-0.721464325234988600,	-0.721498946913471160,	
+-0.721533566788206350,	-0.721568184859107680,	-0.721602801126088770,	-0.721637415589062580,	-0.721672028247942850,	-0.721706639102643100,	-0.721741248153076940,	-0.721775855399157450,	
+-0.721810460840798360,	-0.721845064477913080,	-0.721879666310415450,	-0.721914266338218310,	-0.721948864561235530,	-0.721983460979380600,	-0.722018055592567260,	-0.722052648400708490,	
+-0.722087239403718220,	-0.722121828601509970,	-0.722156415993997050,	-0.722191001581092950,	-0.722225585362711420,	-0.722260167338766190,	-0.722294747509170220,	-0.722329325873837360,	
+-0.722363902432681230,	-0.722398477185615670,	-0.722433050132553540,	-0.722467621273408910,	-0.722502190608095060,	-0.722536758136526180,	-0.722571323858615000,	-0.722605887774275590,	
+-0.722640449883421470,	-0.722675010185966470,	-0.722709568681823680,	-0.722744125370906930,	-0.722778680253129860,	-0.722813233328406410,	-0.722847784596649670,	-0.722882334057773360,	
+-0.722916881711691550,	-0.722951427558317210,	-0.722985971597564390,	-0.723020513829346510,	-0.723055054253577740,	-0.723089592870170940,	-0.723124129679040270,	-0.723158664680099150,	
+-0.723193197873261750,	-0.723227729258441140,	-0.723262258835551060,	-0.723296786604505360,	-0.723331312565218100,	-0.723365836717602130,	-0.723400359061571630,	-0.723434879597040230,	
+-0.723469398323921880,	-0.723503915242129870,	-0.723538430351577940,	-0.723572943652180280,	-0.723607455143849940,	-0.723641964826500890,	-0.723676472700047090,	-0.723710978764402270,	
+-0.723745483019479830,	-0.723779985465193620,	-0.723814486101457490,	-0.723848984928185390,	-0.723883481945290510,	-0.723917977152686910,	-0.723952470550288440,	-0.723986962138009170,	
+-0.724021451915762060,	-0.724055939883461290,	-0.724090426041020810,	-0.724124910388354470,	-0.724159392925375570,	-0.724193873651998170,	-0.724228352568136450,	-0.724262829673703480,	
+-0.724297304968613440,	-0.724331778452780180,	-0.724366250126117770,	-0.724400719988539390,	-0.724435188039959320,	-0.724469654280291200,	-0.724504118709449200,	-0.724538581327346610,	
+-0.724573042133897620,	-0.724607501129016060,	-0.724641958312616020,	-0.724676413684610780,	-0.724710867244914510,	-0.724745318993440970,	-0.724779768930104540,	-0.724814217054818410,	
+-0.724848663367496650,	-0.724883107868053320,	-0.724917550556402390,	-0.724951991432457370,	-0.724986430496132430,	-0.725020867747341650,	-0.725055303185998420,	-0.725089736812016940,	
+-0.725124168625311040,	-0.725158598625795130,	-0.725193026813382380,	-0.725227453187986980,	-0.725261877749523000,	-0.725296300497904720,	-0.725330721433045330,	-0.725365140554859120,	
+-0.725399557863260050,	-0.725433973358162400,	-0.725468387039479470,	-0.725502798907125660,	-0.725537208961014810,	-0.725571617201061230,	-0.725606023627178300,	-0.725640428239280320,	
+-0.725674831037281590,	-0.725709232021095390,	-0.725743631190636230,	-0.725778028545817970,	-0.725812424086554890,	-0.725846817812760500,	-0.725881209724349000,	-0.725915599821234550,	
+-0.725949988103331450,	-0.725984374570552980,	-0.726018759222813560,	-0.726053142060027360,	-0.726087523082108440,	-0.726121902288970440,	-0.726156279680527870,	-0.726190655256694460,	
+-0.726225029017384730,	-0.726259400962512070,	-0.726293771091991000,	-0.726328139405735710,	-0.726362505903659810,	-0.726396870585677700,	-0.726431233451703350,	-0.726465594501651270,	
+-0.726499953735434860,	-0.726534311152968630,	-0.726568666754166540,	-0.726603020538943100,	-0.726637372507211830,	-0.726671722658887130,	-0.726706070993883180,	-0.726740417512114270,	
+-0.726774762213494020,	-0.726809105097936840,	-0.726843446165357010,	-0.726877785415668830,	-0.726912122848785810,	-0.726946458464622580,	-0.726980792263093420,	-0.727015124244111970,	
+-0.727049454407592830,	-0.727083782753449980,	-0.727118109281597920,	-0.727152433991950400,	-0.727186756884421690,	-0.727221077958926100,	-0.727255397215378130,	-0.727289714653691410,	
+-0.727324030273780340,	-0.727358344075559220,	-0.727392656058942540,	-0.727426966223843950,	-0.727461274570177950,	-0.727495581097858720,	-0.727529885806800890,	-0.727564188696917970,	
+-0.727598489768124690,	-0.727632789020335120,	-0.727667086453463900,	-0.727701382067424630,	-0.727735675862131840,	-0.727769967837500250,	-0.727804257993443390,	-0.727838546329875990,	
+-0.727872832846712110,	-0.727907117543866500,	-0.727941400421252770,	-0.727975681478785660,	-0.728009960716379250,	-0.728044238133948250,	-0.728078513731406310,	-0.728112787508668150,	
+-0.728147059465647950,	-0.728181329602260450,	-0.728215597918419280,	-0.728249864414039160,	-0.728284129089034390,	-0.728318391943319600,	-0.728352652976808510,	-0.728386912189415760,	
+-0.728421169581056070,	-0.728455425151643080,	-0.728489678901091620,	-0.728523930829315880,	-0.728558180936230810,	-0.728592429221749830,	-0.728626675685787760,	-0.728660920328259020,	
+-0.728695163149078340,	-0.728729404148159340,	-0.728763643325416990,	-0.728797880680765340,	-0.728832116214119360,	-0.728866349925392900,	-0.728900581814500460,	-0.728934811881356560,	
+-0.728969040125875930,	-0.729003266547972430,	-0.729037491147560780,	-0.729071713924555720,	-0.729105934878871100,	-0.729140154010421540,	-0.729174371319121660,	-0.729208586804886090,	
+-0.729242800467628790,	-0.729277012307264490,	-0.729311222323707710,	-0.729345430516873170,	-0.729379636886674730,	-0.729413841433027120,	-0.729448044155844970,	-0.729482245055043000,	
+-0.729516444130535180,	-0.729550641382236130,	-0.729584836810060590,	-0.729619030413923180,	-0.729653222193737960,	-0.729687412149419680,	-0.729721600280882840,	-0.729755786588042300,	
+-0.729789971070812000,	-0.729824153729106690,	-0.729858334562841440,	-0.729892513571929970,	-0.729926690756287240,	-0.729960866115827670,	-0.729995039650466420,	-0.730029211360117230,	
+-0.730063381244694940,	-0.730097549304114190,	-0.730131715538289930,	-0.730165879947136110,	-0.730200042530567470,	-0.730234203288498860,	-0.730268362220845010,	-0.730302519327519880,	
+-0.730336674608438540,	-0.730370828063515390,	-0.730404979692665600,	-0.730439129495803030,	-0.730473277472842520,	-0.730507423623699250,	-0.730541567948287060,	-0.730575710446521030,	
+-0.730609851118315670,	-0.730643989963585930,	-0.730678126982245990,	-0.730712262174210700,	-0.730746395539394800,	-0.730780527077713130,	-0.730814656789079970,	-0.730848784673409970,	
+-0.730882910730618170,	-0.730917034960619330,	-0.730951157363327610,	-0.730985277938658080,	-0.731019396686525270,	-0.731053513606844340,	-0.731087628699529260,	-0.731121741964495090,	
+-0.731155853401656900,	-0.731189963010928760,	-0.731224070792225730,	-0.731258176745462450,	-0.731292280870554200,	-0.731326383167414830,	-0.731360483635959510,	-0.731394582276102990,	
+-0.731428679087760330,	-0.731462774070845700,	-0.731496867225273960,	-0.731530958550960290,	-0.731565048047819410,	-0.731599135715765620,	-0.731633221554713890,	-0.731667305564579260,	
+-0.731701387745276600,	-0.731735468096720190,	-0.731769546618825100,	-0.731803623311506500,	-0.731837698174678470,	-0.731871771208256190,	-0.731905842412154510,	-0.731939911786288590,	
+-0.731973979330572510,	-0.732008045044921450,	-0.732042108929250370,	-0.732076170983474220,	-0.732110231207507400,	-0.732144289601264990,	-0.732178346164661820,	-0.732212400897613190,	
+-0.732246453800033170,	-0.732280504871837050,	-0.732314554112939660,	-0.732348601523256200,	-0.732382647102700850,	-0.732416690851188990,	-0.732450732768635370,	-0.732484772854955170,	
+-0.732518811110062900,	-0.732552847533873400,	-0.732586882126302190,	-0.732620914887263440,	-0.732654945816672450,	-0.732688974914444070,	-0.732723002180493470,	-0.732757027614735160,	
+-0.732791051217084210,	-0.732825072987455690,	-0.732859092925764790,	-0.732893111031925890,	-0.732927127305854190,	-0.732961141747464630,	-0.732995154356672510,	-0.733029165133392220,	
+-0.733063174077539070,	-0.733097181189027890,	-0.733131186467774200,	-0.733165189913692170,	-0.733199191526697100,	-0.733233191306704390,	-0.733267189253628440,	-0.733301185367384530,	
+-0.733335179647887640,	-0.733369172095053030,	-0.733403162708795240,	-0.733437151489029550,	-0.733471138435671020,	-0.733505123548634840,	-0.733539106827835630,	-0.733573088273188680,	
+-0.733607067884608940,	-0.733641045662011830,	-0.733675021605311840,	-0.733708995714424270,	-0.733742967989264310,	-0.733776938429747120,	-0.733810907035787330,	-0.733844873807300240,	
+-0.733878838744201230,	-0.733912801846404950,	-0.733946763113826560,	-0.733980722546381250,	-0.734014680143984520,	-0.734048635906550780,	-0.734082589833995440,	-0.734116541926233550,	
+-0.734150492183180740,	-0.734184440604751300,	-0.734218387190860740,	-0.734252331941424250,	-0.734286274856357220,	-0.734320215935574280,	-0.734354155178990720,	-0.734388092586521820,	
+-0.734422028158082880,	-0.734455961893588750,	-0.734489893792954600,	-0.734523823856095710,	-0.734557752082927620,	-0.734591678473364710,	-0.734625603027322830,	-0.734659525744717050,	
+-0.734693446625462210,	-0.734727365669473830,	-0.734761282876666980,	-0.734795198246957160,	-0.734829111780259110,	-0.734863023476488240,	-0.734896933335559940,	-0.734930841357389510,	
+-0.734964747541891560,	-0.734998651888981950,	-0.735032554398575620,	-0.735066455070588210,	-0.735100353904934330,	-0.735134250901529620,	-0.735168146060289240,	-0.735202039381128820,	
+-0.735235930863962990,	-0.735269820508707370,	-0.735303708315277470,	-0.735337594283587910,	-0.735371478413554550,	-0.735405360705092330,	-0.735439241158117100,	-0.735473119772543370,	
+-0.735506996548287000,	-0.735540871485263040,	-0.735574744583387230,	-0.735608615842574200,	-0.735642485262739680,	-0.735676352843798950,	-0.735710218585667650,	-0.735744082488260510,	
+-0.735777944551493150,	-0.735811804775280850,	-0.735845663159539360,	-0.735879519704183530,	-0.735913374409128850,	-0.735947227274290960,	-0.735981078299584810,	-0.736014927484925810,	
+-0.736048774830229680,	-0.736082620335411830,	-0.736116464000387110,	-0.736150305825071240,	-0.736184145809379630,	-0.736217983953227910,	-0.736251820256530910,	-0.736285654719204370,	
+-0.736319487341163810,	-0.736353318122324740,	-0.736387147062602110,	-0.736420974161911550,	-0.736454799420168560,	-0.736488622837289000,	-0.736522444413187480,	-0.736556264147779860,	
+-0.736590082040981860,	-0.736623898092708340,	-0.736657712302875130,	-0.736691524671397650,	-0.736725335198191610,	-0.736759143883171990,	-0.736792950726254390,	-0.736826755727354570,	
+-0.736860558886388020,	-0.736894360203269820,	-0.736928159677915810,	-0.736961957310241280,	-0.736995753100162190,	-0.737029547047593490,	-0.737063339152450810,	-0.737097129414649890,	
+-0.737130917834106340,	-0.737164704410735340,	-0.737198489144452410,	-0.737232272035173390,	-0.737266053082813900,	-0.737299832287289010,	-0.737333609648514580,	-0.737367385166406430,	
+-0.737401158840879420,	-0.737434930671849620,	-0.737468700659232420,	-0.737502468802943790,	-0.737536235102898670,	-0.737569999559013030,	-0.737603762171202380,	-0.737637522939382560,	
+-0.737671281863468640,	-0.737705038943376580,	-0.737738794179021880,	-0.737772547570320510,	-0.737806299117187430,	-0.737840048819538690,	-0.737873796677289700,	-0.737907542690356630,	
+-0.737941286858654340,	-0.737975029182098900,	-0.738008769660606130,	-0.738042508294091130,	-0.738076245082469830,	-0.738109980025658090,	-0.738143713123571520,	-0.738177444376125420,	
+-0.738211173783235750,	-0.738244901344818130,	-0.738278627060788510,	-0.738312350931062070,	-0.738346072955554660,	-0.738379793134182230,	-0.738413511466860520,	-0.738447227953504700,	
+-0.738480942594030850,	-0.738514655388354700,	-0.738548366336392090,	-0.738582075438058430,	-0.738615782693269440,	-0.738649488101941310,	-0.738683191663989210,	-0.738716893379329110,	
+-0.738750593247876840,	-0.738784291269548250,	-0.738817987444258750,	-0.738851681771924170,	-0.738885374252460480,	-0.738919064885783630,	-0.738952753671808790,	-0.738986440610452160,	
+-0.739020125701629340,	-0.739053808945256520,	-0.739087490341248880,	-0.739121169889522590,	-0.739154847589993280,	-0.739188523442577130,	-0.739222197447189420,	-0.739255869603746230,	
+-0.739289539912163400,	-0.739323208372356880,	-0.739356874984242190,	-0.739390539747735280,	-0.739424202662752330,	-0.739457863729208520,	-0.739491522947020030,	-0.739525180316102810,	
+-0.739558835836372830,	-0.739592489507745590,	-0.739626141330137040,	-0.739659791303463150,	-0.739693439427640210,	-0.739727085702583160,	-0.739760730128208530,	-0.739794372704432050,	
+-0.739828013431170000,	-0.739861652308337450,	-0.739895289335850910,	-0.739928924513626130,	-0.739962557841579270,	-0.739996189319625740,	-0.740029818947681830,	-0.740063446725663600,	
+-0.740097072653486450,	-0.740130696731066570,	-0.740164318958320020,	-0.740197939335162980,	-0.740231557861510740,	-0.740265174537279690,	-0.740298789362385580,	-0.740332402336744910,	
+-0.740366013460272860,	-0.740399622732885840,	-0.740433230154499690,	-0.740466835725030800,	-0.740500439444394480,	-0.740534041312507220,	-0.740567641329284650,	-0.740601239494643400,	
+-0.740634835808498760,	-0.740668430270766900,	-0.740702022881364440,	-0.740735613640206570,	-0.740769202547209570,	-0.740802789602289740,	-0.740836374805363020,	-0.740869958156345270,	
+-0.740903539655152430,	-0.740937119301700810,	-0.740970697095906790,	-0.741004273037685680,	-0.741037847126953860,	-0.741071419363627410,	-0.741104989747622730,	-0.741138558278855220,	
+-0.741172124957241380,	-0.741205689782697300,	-0.741239252755139240,	-0.741272813874482630,	-0.741306373140644070,	-0.741339930553539860,	-0.741373486113085620,	-0.741407039819197640,	
+-0.741440591671791990,	-0.741474141670785180,	-0.741507689816092720,	-0.741541236107631010,	-0.741574780545316230,	-0.741608323129064770,	-0.741641863858792270,	-0.741675402734415120,	
+-0.741708939755849390,	-0.741742474923011710,	-0.741776008235817350,	-0.741809539694183170,	-0.741843069298025130,	-0.741876597047259610,	-0.741910122941802360,	-0.741943646981569780,	
+-0.741977169166478050,	-0.742010689496443780,	-0.742044207971382490,	-0.742077724591210570,	-0.742111239355844780,	-0.742144752265200490,	-0.742178263319194340,	-0.742211772517742510,	
+-0.742245279860761610,	-0.742278785348167160,	-0.742312288979875780,	-0.742345790755803650,	-0.742379290675867280,	-0.742412788739982510,	-0.742446284948065750,	-0.742479779300033170,	
+-0.742513271795801620,	-0.742546762435286390,	-0.742580251218404430,	-0.742613738145071810,	-0.742647223215205040,	-0.742680706428719970,	-0.742714187785533220,	-0.742747667285561190,	
+-0.742781144928719610,	-0.742814620714925320,	-0.742848094644094510,	-0.742881566716143580,	-0.742915036930988590,	-0.742948505288545950,	-0.742981971788732040,	-0.743015436431463620,	
+-0.743048899216656180,	-0.743082360144226460,	-0.743115819214090980,	-0.743149276426166130,	-0.743182731780367870,	-0.743216185276612710,	-0.743249636914817160,	-0.743283086694897730,	
+-0.743316534616770390,	-0.743349980680351630,	-0.743383424885558310,	-0.743416867232306040,	-0.743450307720511570,	-0.743483746350091400,	-0.743517183120962160,	-0.743550618033039680,	
+-0.743584051086240590,	-0.743617482280481410,	-0.743650911615678870,	-0.743684339091748690,	-0.743717764708607730,	-0.743751188466172270,	-0.743784610364359170,	-0.743818030403084250,	
+-0.743851448582264260,	-0.743884864901815710,	-0.743918279361655220,	-0.743951691961698750,	-0.743985102701863020,	-0.744018511582064560,	-0.744051918602220090,	-0.744085323762245570,	
+-0.744118727062057730,	-0.744152128501573420,	-0.744185528080708480,	-0.744218925799379650,	-0.744252321657503440,	-0.744285715654996900,	-0.744319107791775680,	-0.744352498067756720,	
+-0.744385886482856530,	-0.744419273036991850,	-0.744452657730078740,	-0.744486040562033930,	-0.744519421532774170,	-0.744552800642215960,	-0.744586177890275590,	-0.744619553276869680,	
+-0.744652926801914970,	-0.744686298465328190,	-0.744719668267025400,	-0.744753036206923460,	-0.744786402284939200,	-0.744819766500988580,	-0.744853128854988670,	-0.744886489346855860,	
+-0.744919847976507010,	-0.744953204743858400,	-0.744986559648826760,	-0.745019912691328720,	-0.745053263871281120,	-0.745086613188600140,	-0.745119960643202630,	-0.745153306235005200,	
+-0.745186649963924810,	-0.745219991829877420,	-0.745253331832780200,	-0.745286669972549440,	-0.745320006249102550,	-0.745353340662355150,	-0.745386673212224520,	-0.745420003898627390,	
+-0.745453332721480070,	-0.745486659680699380,	-0.745519984776202070,	-0.745553308007904980,	-0.745586629375724400,	-0.745619948879577280,	-0.745653266519380240,	-0.745686582295050360,	
+-0.745719896206503700,	-0.745753208253657320,	-0.745786518436427960,	-0.745819826754732460,	-0.745853133208487230,	-0.745886437797609100,	-0.745919740522014930,	-0.745953041381621770,	
+-0.745986340376345590,	-0.746019637506103560,	-0.746052932770812750,	-0.746086226170389330,	-0.746119517704750380,	-0.746152807373812510,	-0.746186095177493120,	-0.746219381115708070,	
+-0.746252665188374520,	-0.746285947395409320,	-0.746319227736729650,	-0.746352506212251580,	-0.746385782821892270,	-0.746419057565568370,	-0.746452330443197250,	-0.746485601454695000,	
+-0.746518870599978680,	-0.746552137878965240,	-0.746585403291571750,	-0.746618666837714380,	-0.746651928517310440,	-0.746685188330276640,	-0.746718446276530170,	-0.746751702355987200,	
+-0.746784956568565140,	-0.746818208914180940,	-0.746851459392750770,	-0.746884708004192150,	-0.746917954748421600,	-0.746951199625356610,	-0.746984442634913260,	-0.747017683777008830,	
+-0.747050923051560070,	-0.747084160458484470,	-0.747117395997698000,	-0.747150629669118160,	-0.747183861472661690,	-0.747217091408245880,	-0.747250319475787130,	-0.747283545675202500,	
+-0.747316770006408950,	-0.747349992469323880,	-0.747383213063863460,	-0.747416431789944990,	-0.747449648647485860,	-0.747482863636402150,	-0.747516076756611470,	-0.747549288008030440,	
+-0.747582497390576470,	-0.747615704904166070,	-0.747648910548716410,	-0.747682114324144440,	-0.747715316230367470,	-0.747748516267301880,	-0.747781714434865070,	-0.747814910732973900,	
+-0.747848105161545870,	-0.747881297720497160,	-0.747914488409745280,	-0.747947677229207190,	-0.747980864178800160,	-0.748014049258440620,	-0.748047232468046050,	-0.748080413807533650,	
+-0.748113593276819920,	-0.748146770875822260,	-0.748179946604457520,	-0.748213120462643320,	-0.748246292450296060,	-0.748279462567333020,	-0.748312630813671390,	-0.748345797189228450,	
+-0.748378961693920600,	-0.748412124327665460,	-0.748445285090380000,	-0.748478443981981600,	-0.748511601002386780,	-0.748544756151513060,	-0.748577909429277380,	-0.748611060835597140,	
+-0.748644210370389080,	-0.748677358033570490,	-0.748710503825058440,	-0.748743647744770420,	-0.748776789792623080,	-0.748809929968533570,	-0.748843068272419750,	-0.748876204704197910,	
+-0.748909339263785560,	-0.748942471951099750,	-0.748975602766058120,	-0.749008731708577180,	-0.749041858778574430,	-0.749074983975967060,	-0.749108107300672450,	-0.749141228752607360,	
+-0.749174348331689170,	-0.749207466037835170,	-0.749240581870962650,	-0.749273695830988460,	-0.749306807917830110,	-0.749339918131404660,	-0.749373026471629730,	-0.749406132938421950,	
+-0.749439237531698720,	-0.749472340251377770,	-0.749505441097375710,	-0.749538540069610070,	-0.749571637167998130,	-0.749604732392457280,	-0.749637825742904270,	-0.749670917219256720,	
+-0.749704006821431900,	-0.749737094549347340,	-0.749770180402919870,	-0.749803264382066900,	-0.749836346486705720,	-0.749869426716753940,	-0.749902505072128300,	-0.749935581552746420,	
+-0.749968656158525590,	-0.750001728889383430,	-0.750034799745236680,	-0.750067868726002950,	-0.750100935831599760,	-0.750134001061943940,	-0.750167064416953130,	-0.750200125896544720,	
+-0.750233185500636220,	-0.750266243229144480,	-0.750299299081987110,	-0.750332353059081520,	-0.750365405160345330,	-0.750398455385695380,	-0.750431503735049300,	-0.750464550208324370,	
+-0.750497594805438430,	-0.750530637526308220,	-0.750563678370851360,	-0.750596717338985360,	-0.750629754430627740,	-0.750662789645695550,	-0.750695822984106420,	-0.750728854445777640,	
+-0.750761884030627050,	-0.750794911738571490,	-0.750827937569528590,	-0.750860961523416190,	-0.750893983600151140,	-0.750927003799651050,	-0.750960022121833440,	-0.750993038566616030,	
+-0.751026053133915910,	-0.751059065823650450,	-0.751092076635737520,	-0.751125085570094500,	-0.751158092626638570,	-0.751191097805287370,	-0.751224101105958500,	-0.751257102528569700,	
+-0.751290102073037810,	-0.751323099739280580,	-0.751356095527215610,	-0.751389089436760750,	-0.751422081467832960,	-0.751455071620349860,	-0.751488059894229400,	-0.751521046289388430,	
+-0.751554030805744900,	-0.751587013443216320,	-0.751619994201720430,	-0.751652973081174290,	-0.751685950081495750,	-0.751718925202602420,	-0.751751898444411930,	-0.751784869806841450,	
+-0.751817839289808720,	-0.751850806893231470,	-0.751883772617027550,	-0.751916736461113900,	-0.751949698425408260,	-0.751982658509828480,	-0.752015616714292400,	-0.752048573038716860,	
+-0.752081527483019930,	-0.752114480047119560,	-0.752147430730932600,	-0.752180379534377110,	-0.752213326457370600,	-0.752246271499831140,	-0.752279214661675690,	-0.752312155942822190,	
+-0.752345095343188270,	-0.752378032862692000,	-0.752410968501250330,	-0.752443902258781220,	-0.752476834135202280,	-0.752509764130431690,	-0.752542692244386300,	-0.752575618476984180,	
+-0.752608542828143050,	-0.752641465297780870,	-0.752674385885814700,	-0.752707304592162620,	-0.752740221416742460,	-0.752773136359471520,	-0.752806049420267740,	-0.752838960599048760,	
+-0.752871869895732740,	-0.752904777310236860,	-0.752937682842478970,	-0.752970586492376800,	-0.753003488259848420,	-0.753036388144811110,	-0.753069286147182830,	-0.753102182266881300,	
+-0.753135076503824720,	-0.753167968857930030,	-0.753200859329115510,	-0.753233747917298800,	-0.753266634622397960,	-0.753299519444330270,	-0.753332402383013800,	-0.753365283438366400,	
+-0.753398162610305900,	-0.753431039898749820,	-0.753463915303616230,	-0.753496788824822960,	-0.753529660462287530,	-0.753562530215928010,	-0.753595398085662000,	-0.753628264071407930,	
+-0.753661128173082840,	-0.753693990390604920,	-0.753726850723892010,	-0.753759709172862280,	-0.753792565737433030,	-0.753825420417522320,	-0.753858273213048100,	-0.753891124123928450,	
+-0.753923973150080750,	-0.753956820291423080,	-0.753989665547873390,	-0.754022508919349850,	-0.754055350405769650,	-0.754088190007051180,	-0.754121027723112400,	-0.754153863553870930,	
+-0.754186697499244610,	-0.754219529559151610,	-0.754252359733510120,	-0.754285188022237430,	-0.754318014425251810,	-0.754350838942471120,	-0.754383661573813540,	-0.754416482319196670,	
+-0.754449301178538480,	-0.754482118151757030,	-0.754514933238770610,	-0.754547746439496620,	-0.754580557753853240,	-0.754613367181758420,	-0.754646174723130560,	-0.754678980377886830,	
+-0.754711784145945750,	-0.754744586027225490,	-0.754777386021643460,	-0.754810184129117930,	-0.754842980349567090,	-0.754875774682908900,	-0.754908567129061070,	-0.754941357687941910,	
+-0.754974146359469240,	-0.755006933143561490,	-0.755039718040136140,	-0.755072501049111500,	-0.755105282170405620,	-0.755138061403936800,	-0.755170838749622540,	-0.755203614207381250,	
+-0.755236387777130870,	-0.755269159458789810,	-0.755301929252275570,	-0.755334697157506450,	-0.755367463174400620,	-0.755400227302876480,	-0.755432989542851430,	-0.755465749894243870,	
+-0.755498508356972300,	-0.755531264930954130,	-0.755564019616107860,	-0.755596772412351460,	-0.755629523319603540,	-0.755662272337781380,	-0.755695019466803620,	-0.755727764706588310,	
+-0.755760508057053750,	-0.755793249518117770,	-0.755825989089698670,	-0.755858726771714510,	-0.755891462564083900,	-0.755924196466724260,	-0.755956928479554200,	-0.755989658602491790,	
+-0.756022386835455640,	-0.756055113178363050,	-0.756087837631132850,	-0.756120560193683120,	-0.756153280865931920,	-0.756185999647797420,	-0.756218716539197920,	-0.756251431540051920,	
+-0.756284144650277050,	-0.756316855869791920,	-0.756349565198514600,	-0.756382272636363600,	-0.756414978183256650,	-0.756447681839112260,	-0.756480383603848620,	-0.756513083477384330,	
+-0.756545781459637130,	-0.756578477550525320,	-0.756611171749967500,	-0.756643864057881870,	-0.756676554474186360,	-0.756709242998799600,	-0.756741929631639780,	-0.756774614372625050,	
+-0.756807297221673610,	-0.756839978178704080,	-0.756872657243635060,	-0.756905334416383860,	-0.756938009696869420,	-0.756970683085009810,	-0.757003354580723540,	-0.757036024183928900,	
+-0.757068691894544290,	-0.757101357712487880,	-0.757134021637678070,	-0.757166683670033150,	-0.757199343809471510,	-0.757232002055911680,	-0.757264658409272260,	-0.757297312869470660,	
+-0.757329965436425830,	-0.757362616110056620,	-0.757395264890280310,	-0.757427911777015740,	-0.757460556770181540,	-0.757493199869695880,	-0.757525841075477160,	-0.757558480387443890,	
+-0.757591117805514470,	-0.757623753329607190,	-0.757656386959640660,	-0.757689018695532960,	-0.757721648537202810,	-0.757754276484569170,	-0.757786902537549210,	-0.757819526696062010,	
+-0.757852148960025950,	-0.757884769329360110,	-0.757917387803981770,	-0.757950004383809990,	-0.757982619068763190,	-0.758015231858759850,	-0.758047842753718390,	-0.758080451753557320,	
+-0.758113058858195130,	-0.758145664067550350,	-0.758178267381541370,	-0.758210868800086700,	-0.758243468323105410,	-0.758276065950515000,	-0.758308661682234320,	-0.758341255518181990,	
+-0.758373847458277180,	-0.758406437502437080,	-0.758439025650580970,	-0.758471611902627240,	-0.758504196258494520,	-0.758536778718101210,	-0.758569359281366040,	-0.758601937948207410,	
+-0.758634514718544040,	-0.758667089592294340,	-0.758699662569376930,	-0.758732233649710870,	-0.758764802833213680,	-0.758797370119804530,	-0.758829935509401920,	-0.758862499001925040,	
+-0.758895060597291280,	-0.758927620295420050,	-0.758960178096229620,	-0.758992733999638740,	-0.759025288005566120,	-0.759057840113930180,	-0.759090390324649640,	-0.759122938637643240,	
+-0.759155485052829370,	-0.759188029570126880,	-0.759220572189454270,	-0.759253112910730830,	-0.759285651733873970,	-0.759318188658803070,	-0.759350723685437210,	-0.759383256813694010,	
+-0.759415788043492630,	-0.759448317374751820,	-0.759480844807390200,	-0.759513370341326380,	-0.759545893976479310,	-0.759578415712767410,	-0.759610935550109390,	-0.759643453488424210,	
+-0.759675969527630280,	-0.759708483667646430,	-0.759740995908391950,	-0.759773506249784350,	-0.759806014691743140,	-0.759838521234186710,	-0.759871025877034700,	-0.759903528620204490,	
+-0.759936029463615490,	-0.759968528407186430,	-0.760001025450835920,	-0.760033520594483040,	-0.760066013838046170,	-0.760098505181444390,	-0.760130994624596320,	-0.760163482167420800,	
+-0.760195967809836450,	-0.760228451551762880,	-0.760260933393117620,	-0.760293413333819950,	-0.760325891373788700,	-0.760358367512943390,	-0.760390841751201530,	-0.760423314088482630,	
+-0.760455784524705410,	-0.760488253059788730,	-0.760520719693651430,	-0.760553184426212340,	-0.760585647257390310,	-0.760618108187104070,	-0.760650567215272580,	-0.760683024341814780,	
+-0.760715479566649870,	-0.760747932889695780,	-0.760780384310871800,	-0.760812833830096900,	-0.760845281447290470,	-0.760877727162370230,	-0.760910170975255710,	-0.760942612885865730,	
+-0.760975052894119260,	-0.761007490999935140,	-0.761039927203232210,	-0.761072361503929650,	-0.761104793901946080,	-0.761137224397200440,	-0.761169652989611810,	-0.761202079679099140,	
+-0.761234504465581720,	-0.761266927348977500,	-0.761299348329205980,	-0.761331767406186690,	-0.761364184579837340,	-0.761396599850077680,	-0.761429013216826320,	-0.761461424680002550,	
+-0.761493834239525210,	-0.761526241895313260,	-0.761558647647285650,	-0.761591051495361440,	-0.761623453439459700,	-0.761655853479499270,	-0.761688251615399210,	-0.761720647847079050,	
+-0.761753042174456720,	-0.761785434597451850,	-0.761817825115983280,	-0.761850213729970860,	-0.761882600439332200,	-0.761914985243987150,	-0.761947368143854550,	-0.761979749138853580,	
+-0.762012128228903180,	-0.762044505413922550,	-0.762076880693830620,	-0.762109254068546460,	-0.762141625537989140,	-0.762173995102077840,	-0.762206362760732060,	-0.762238728513869760,	
+-0.762271092361410770,	-0.762303454303273950,	-0.762335814339379140,	-0.762368172469644170,	-0.762400528693988780,	-0.762432883012332030,	-0.762465235424593100,	-0.762497585930691060,	
+-0.762529934530545180,	-0.762562281224074320,	-0.762594626011197760,	-0.762626968891834790,	-0.762659309865904240,	-0.762691648933326080,	-0.762723986094018150,	-0.762756321347900280,	
+-0.762788654694891650,	-0.762820986134911890,	-0.762853315667879170,	-0.762885643293713110,	-0.762917969012332890,	-0.762950292823657890,	-0.762982614727607090,	-0.763014934724099760,	
+-0.763047252813054970,	-0.763079568994392220,	-0.763111883268030480,	-0.763144195633889020,	-0.763176506091887140,	-0.763208814641944460,	-0.763241121283979250,	-0.763273426017911150,	
+-0.763305728843660100,	-0.763338029761144290,	-0.763370328770283210,	-0.763402625870996390,	-0.763434921063202990,	-0.763467214346822300,	-0.763499505721773610,	-0.763531795187976090,	
+-0.763564082745349150,	-0.763596368393811950,	-0.763628652133283900,	-0.763660933963684170,	-0.763693213884932610,	-0.763725491896947610,	-0.763757767999648670,	-0.763790042192955430,	
+-0.763822314476787720,	-0.763854584851063500,	-0.763886853315702940,	-0.763919119870625220,	-0.763951384515749620,	-0.763983647250995660,	-0.764015908076282610,	-0.764048166991529660,	
+-0.764080423996656320,	-0.764112679091581980,	-0.764144932276225930,	-0.764177183550508120,	-0.764209432914346840,	-0.764241680367661820,	-0.764273925910372800,	-0.764306169542399380,	
+-0.764338411263659980,	-0.764370651074074650,	-0.764402888973562570,	-0.764435124962043360,	-0.764467359039436300,	-0.764499591205660910,	-0.764531821460636470,	-0.764564049804282500,	
+-0.764596276236518380,	-0.764628500757263520,	-0.764660723366438090,	-0.764692944063960270,	-0.764725162849750010,	-0.764757379723726820,	-0.764789594685810870,	-0.764821807735920340,	
+-0.764854018873975190,	-0.764886228099895150,	-0.764918435413599380,	-0.764950640815007630,	-0.764982844304039290,	-0.765015045880613750,	-0.765047245544650640,	-0.765079443296069470,	
+-0.765111639134789630,	-0.765143833060730640,	-0.765176025073812770,	-0.765208215173954210,	-0.765240403361075020,	-0.765272589635095480,	-0.765304773995933880,	-0.765336956443510410,	
+-0.765369136977744450,	-0.765401315598555730,	-0.765433492305863660,	-0.765465667099587850,	-0.765497839979647930,	-0.765530010945963400,	-0.765562179998453880,	-0.765594347137038780,	
+-0.765626512361637920,	-0.765658675672171380,	-0.765690837068557450,	-0.765722996550716520,	-0.765755154118568090,	-0.765787309772032350,	-0.765819463511027700,	-0.765851615335474520,	
+-0.765883765245292230,	-0.765915913240400540,	-0.765948059320718970,	-0.765980203486167350,	-0.766012345736665210,	-0.766044486072132160,	-0.766076624492487920,	-0.766108760997652240,	
+-0.766140895587545060,	-0.766173028262085110,	-0.766205159021192680,	-0.766237287864787180,	-0.766269414792789210,	-0.766301539805117060,	-0.766333662901691030,	-0.766365784082430830,	
+-0.766397903347256330,	-0.766430020696086900,	-0.766462136128842510,	-0.766494249645442660,	-0.766526361245807310,	-0.766558470929856070,	-0.766590578697508570,	-0.766622684548685210,	
+-0.766654788483304590,	-0.766686890501287020,	-0.766718990602552110,	-0.766751088787020470,	-0.766783185054610410,	-0.766815279405242410,	-0.766847371838836220,	-0.766879462355311680,	
+-0.766911550954588410,	-0.766943637636586240,	-0.766975722401225020,	-0.767007805248424490,	-0.767039886178104370,	-0.767071965190184610,	-0.767104042284584950,	-0.767136117461225790,	
+-0.767168190720025620,	-0.767200262060905080,	-0.767232331483784450,	-0.767264398988582450,	-0.767296464575219380,	-0.767328528243615190,	-0.767360589993689720,	-0.767392649825362700,	
+-0.767424707738554090,	-0.767456763733183720,	-0.767488817809171330,	-0.767520869966437090,	-0.767552920204900510,	-0.767584968524481660,	-0.767617014925101040,	-0.767649059406677270,	
+-0.767681101969130860,	-0.767713142612381660,	-0.767745181336350170,	-0.767777218140955230,	-0.767809253026117130,	-0.767841285991756050,	-0.767873317037791710,	-0.767905346164143960,	
+-0.767937373370732980,	-0.767969398657478490,	-0.768001422024300550,	-0.768033443471119020,	-0.768065462997853940,	-0.768097480604425730,	-0.768129496290753220,	-0.768161510056757040,	
+-0.768193521902357010,	-0.768225531827473770,	-0.768257539832026160,	-0.768289545915934680,	-0.768321550079119290,	-0.768353552321500040,	-0.768385552642997020,	-0.768417551043530040,	
+-0.768449547523019080,	-0.768481542081384420,	-0.768513534718545890,	-0.768545525434423450,	-0.768577514228937720,	-0.768609501102007760,	-0.768641486053553980,	-0.768673469083496430,	
+-0.768705450191755850,	-0.768737429378251180,	-0.768769406642902720,	-0.768801381985630860,	-0.768833355406355560,	-0.768865326904996870,	-0.768897296481474870,	-0.768929264135709610,	
+-0.768961229867621170,	-0.768993193677129590,	-0.769025155564155070,	-0.769057115528617770,	-0.769089073570438100,	-0.769121029689535330,	-0.769152983885829870,	-0.769184936159242550,	
+-0.769216886509692330,	-0.769248834937099950,	-0.769280781441385340,	-0.769312726022468920,	-0.769344668680270630,	-0.769376609414710640,	-0.769408548225709140,	-0.769440485113186300,	
+-0.769472420077062290,	-0.769504353117257180,	-0.769536284233691140,	-0.769568213426285010,	-0.769600140694957750,	-0.769632066039630190,	-0.769663989460222410,	-0.769695910956655240,	
+-0.769727830528847750,	-0.769759748176720660,	-0.769791663900194160,	-0.769823577699188520,	-0.769855489573623930,	-0.769887399523420670,	-0.769919307548498910,	-0.769951213648778830,	
+-0.769983117824180830,	-0.770015020074624860,	-0.770046920400032090,	-0.770078818800321250,	-0.770110715275413530,	-0.770142609825228970,	-0.770174502449688440,	-0.770206393148711090,	
+-0.770238281922217770,	-0.770270168770128770,	-0.770302053692364260,	-0.770333936688844760,	-0.770365817759490310,	-0.770397696904221330,	-0.770429574122958090,	-0.770461449415621000,	
+-0.770493322782130230,	-0.770525194222406730,	-0.770557063736369560,	-0.770588931323939910,	-0.770620796985037830,	-0.770652660719584380,	-0.770684522527498640,	-0.770716382408701660,	
+-0.770748240363113730,	-0.770780096390655150,	-0.770811950491246400,	-0.770843802664807680,	-0.770875652911259480,	-0.770907501230522210,	-0.770939347622516150,	-0.770971192087161690,	
+-0.771003034624379910,	-0.771034875234089870,	-0.771066713916212730,	-0.771098550670668680,	-0.771130385497379000,	-0.771162218396262640,	-0.771194049367240790,	-0.771225878410233820,	
+-0.771257705525162150,	-0.771289530711946170,	-0.771321353970506380,	-0.771353175300763310,	-0.771384994702637220,	-0.771416812176048630,	-0.771448627720918050,	-0.771480441337165870,	
+-0.771512253024713160,	-0.771544062783479310,	-0.771575870613385170,	-0.771607676514351470,	-0.771639480486299160,	-0.771671282529147520,	-0.771703082642817620,	-0.771734880827230070,	
+-0.771766677082305290,	-0.771798471407963870,	-0.771830263804126340,	-0.771862054270713080,	-0.771893842807644610,	-0.771925629414841550,	-0.771957414092224510,	-0.771989196839714450,	
+-0.772020977657230880,	-0.772052756544694740,	-0.772084533502026770,	-0.772116308529148140,	-0.772148081625978030,	-0.772179852792437840,	-0.772211622028447950,	-0.772243389333929000,	
+-0.772275154708801590,	-0.772306918152986240,	-0.772338679666403680,	-0.772370439248974420,	-0.772402196900618950,	-0.772433952621258140,	-0.772465706410812910,	-0.772497458269202800,	
+-0.772529208196349180,	-0.772560956192172470,	-0.772592702256593930,	-0.772624446389533090,	-0.772656188590911120,	-0.772687928860648740,	-0.772719667198666470,	-0.772751403604885030,	
+-0.772783138079225160,	-0.772814870621607360,	-0.772846601231952370,	-0.772878329910180910,	-0.772910056656213710,	-0.772941781469971830,	-0.772973504351374910,	-0.773005225300344320,	
+-0.773036944316800590,	-0.773068661400665100,	-0.773100376551857480,	-0.773132089770298790,	-0.773163801055909870,	-0.773195510408611560,	-0.773227217828324380,	-0.773258923314969150,	
+-0.773290626868466720,	-0.773322328488737610,	-0.773354028175702760,	-0.773385725929282790,	-0.773417421749398540,	-0.773449115635971300,	-0.773480807588920680,	-0.773512497608167980,	
+-0.773544185693634150,	-0.773575871845240350,	-0.773607556062906320,	-0.773639238346553460,	-0.773670918696102380,	-0.773702597111474160,	-0.773734273592589280,	-0.773765948139368830,	
+-0.773797620751733420,	-0.773829291429604100,	-0.773860960172901400,	-0.773892626981546370,	-0.773924291855460410,	-0.773955954794563030,	-0.773987615798775840,	-0.774019274868019580,	
+-0.774050932002215750,	-0.774082587201283980,	-0.774114240465145760,	-0.774145891793721840,	-0.774177541186933380,	-0.774209188644700900,	-0.774240834166945560,	-0.774272477753587980,	
+-0.774304119404549350,	-0.774335759119750390,	-0.774367396899112050,	-0.774399032742555730,	-0.774430666650001380,	-0.774462298621370170,	-0.774493928656583400,	-0.774525556755562230,	
+-0.774557182918226730,	-0.774588807144498180,	-0.774620429434297650,	-0.774652049787545980,	-0.774683668204164340,	-0.774715284684073360,	-0.774746899227194310,	-0.774778511833447920,	
+-0.774810122502755270,	-0.774841731235037300,	-0.774873338030215630,	-0.774904942888209990,	-0.774936545808942000,	-0.774968146792332720,	-0.774999745838303560,	-0.775031342946774450,	
+-0.775062938117667020,	-0.775094531350902340,	-0.775126122646401130,	-0.775157712004084790,	-0.775189299423874050,	-0.775220884905690190,	-0.775252468449453950,	-0.775284050055086720,	
+-0.775315629722509230,	-0.775347207451642760,	-0.775378783242408720,	-0.775410357094727280,	-0.775441929008519830,	-0.775473498983708210,	-0.775505067020212270,	-0.775536633117953620,	
+-0.775568197276853440,	-0.775599759496832800,	-0.775631319777812630,	-0.775662878119714240,	-0.775694434522458680,	-0.775725988985967010,	-0.775757541510160410,	-0.775789092094959830,	
+-0.775820640740286670,	-0.775852187446062440,	-0.775883732212207080,	-0.775915275038642440,	-0.775946815925289690,	-0.775978354872070340,	-0.776009891878904570,	-0.776041426945714100,	
+-0.776072960072420100,	-0.776104491258943650,	-0.776136020505206030,	-0.776167547811128290,	-0.776199073176631730,	-0.776230596601637400,	-0.776262118086066710,	-0.776293637629840600,	
+-0.776325155232881040,	-0.776356670895107960,	-0.776388184616443320,	-0.776419696396808080,	-0.776451206236124290,	-0.776482714134311800,	-0.776514220091292560,	-0.776545724106987860,	
+-0.776577226181318750,	-0.776608726314206630,	-0.776640224505572680,	-0.776671720755338190,	-0.776703215063424320,	-0.776734707429752480,	-0.776766197854243830,	-0.776797686336820340,	
+-0.776829172877401940,	-0.776860657475910710,	-0.776892140132267820,	-0.776923620846395100,	-0.776955099618212850,	-0.776986576447642690,	-0.777018051334606220,	-0.777049524279024630,	
+-0.777080995280819200,	-0.777112464339911210,	-0.777143931456222180,	-0.777175396629673280,	-0.777206859860185890,	-0.777238321147681320,	-0.777269780492080950,	-0.777301237893306740,	
+-0.777332693351278750,	-0.777364146865919150,	-0.777395598437149670,	-0.777427048064890710,	-0.777458495749064120,	-0.777489941489591270,	-0.777521385286393580,	-0.777552827139392330,	
+-0.777584267048509140,	-0.777615705013665280,	-0.777647141034782050,	-0.777678575111781070,	-0.777710007244583610,	-0.777741437433111080,	-0.777772865677285650,	-0.777804291977027380,	
+-0.777835716332258450,	-0.777867138742900140,	-0.777898559208874630,	-0.777929977730102200,	-0.777961394306504680,	-0.777992808938003820,	-0.778024221624520780,	-0.778055632365977300,	
+-0.778087041162294770,	-0.778118448013394580,	-0.778149852919198250,	-0.778181255879627280,	-0.778212656894603280,	-0.778244055964048110,	-0.778275453087882260,	-0.778306848266027700,	
+-0.778338241498406140,	-0.778369632784939420,	-0.778401022125548180,	-0.778432409520154360,	-0.778463794968679460,	-0.778495178471045100,	-0.778526560027172800,	-0.778557939636984050,	
+-0.778589317300400600,	-0.778620693017343710,	-0.778652066787735130,	-0.778683438611496360,	-0.778714808488549570,	-0.778746176418815270,	-0.778777542402215420,	-0.778808906438671840,	
+-0.778840268528106390,	-0.778871628670439800,	-0.778902986865594120,	-0.778934343113490970,	-0.778965697414052080,	-0.778997049767198860,	-0.779028400172852910,	-0.779059748630936080,	
+-0.779091095141369870,	-0.779122439704075910,	-0.779153782318975810,	-0.779185122985991300,	-0.779216461705044550,	-0.779247798476056070,	-0.779279133298948050,	-0.779310466173642860,	
+-0.779341797100060910,	-0.779373126078124370,	-0.779404453107755080,	-0.779435778188874770,	-0.779467101321404840,	-0.779498422505267240,	-0.779529741740383590,	-0.779561059026675610,	
+-0.779592374364064920,	-0.779623687752473260,	-0.779654999191822460,	-0.779686308682034700,	-0.779717616223030600,	-0.779748921814732430,	-0.779780225457062050,	-0.779811527149941620,	
+-0.779842826893291760,	-0.779874124687034880,	-0.779905420531092690,	-0.779936714425386920,	-0.779968006369839430,	-0.779999296364371930,	-0.780030584408906050,	-0.780061870503363840,	
+-0.780093154647666930,	-0.780124436841737160,	-0.780155717085496800,	-0.780186995378866600,	-0.780218271721768940,	-0.780249546114125560,	-0.780280818555858850,	-0.780312089046889530,	
+-0.780343357587140130,	-0.780374624176532250,	-0.780405888814987740,	-0.780437151502428650,	-0.780468412238776500,	-0.780499671023953460,	-0.780530927857881250,	-0.780562182740481610,	
+-0.780593435671676610,	-0.780624686651388510,	-0.780655935679538170,	-0.780687182756048090,	-0.780718427880839890,	-0.780749671053836300,	-0.780780912274957830,	-0.780812151544127200,	
+-0.780843388861266250,	-0.780874624226296720,	-0.780905857639140550,	-0.780937089099719930,	-0.780968318607956460,	-0.780999546163772210,	-0.781030771767089130,	-0.781061995417829170,	
+-0.781093217115914060,	-0.781124436861266650,	-0.781155654653807430,	-0.781186870493459140,	-0.781218084380144280,	-0.781249296313783590,	-0.781280506294299680,	-0.781311714321614500,	
+-0.781342920395650120,	-0.781374124516328370,	-0.781405326683571210,	-0.781436526897300810,	-0.781467725157439120,	-0.781498921463908090,	-0.781530115816629790,	-0.781561308215526160,	
+-0.781592498660519830,	-0.781623687151531740,	-0.781654873688484410,	-0.781686058271299890,	-0.781717240899900800,	-0.781748421574207990,	-0.781779600294144170,	-0.781810777059631310,	
+-0.781841951870591580,	-0.781873124726946920,	-0.781904295628619410,	-0.781935464575531200,	-0.781966631567604380,	-0.781997796604760990,	-0.782028959686922990,	-0.782060120814013220,	
+-0.782091279985952630,	-0.782122437202663830,	-0.782153592464068900,	-0.782184745770090560,	-0.782215897120649760,	-0.782247046515669230,	-0.782278193955071140,	-0.782309339438777560,	
+-0.782340482966710550,	-0.782371624538792390,	-0.782402764154945140,	-0.782433901815090980,	-0.782465037519152080,	-0.782496171267050620,	-0.782527303058709320,	-0.782558432894049140,	
+-0.782589560772992910,	-0.782620686695462700,	-0.782651810661381450,	-0.782682932670670020,	-0.782714052723251230,	-0.782745170819047380,	-0.782776286957980630,	-0.782807401139973160,	
+-0.782838513364947140,	-0.782869623632824860,	-0.782900731943528490,	-0.782931838296980320,	-0.782962942693102630,	-0.782994045131817470,	-0.783025145613047700,	-0.783056244136714600,	
+-0.783087340702741000,	-0.783118435311049410,	-0.783149527961561230,	-0.783180618654199300,	-0.783211707388885790,	-0.783242794165542990,	-0.783273878984093170,	-0.783304961844458750,	
+-0.783336042746561880,	-0.783367121690324960,	-0.783398198675670180,	-0.783429273702519910,	-0.783460346770796350,	-0.783491417880422650,	-0.783522487031319770,	-0.783553554223410660,	
+-0.783584619456617730,	-0.783615682730863680,	-0.783646744046070040,	-0.783677803402159420,	-0.783708860799054330,	-0.783739916236677050,	-0.783770969714949970,	-0.783802021233795500,	
+-0.783833070793136020,	-0.783864118392893830,	-0.783895164032991310,	-0.783926207713350980,	-0.783957249433895550,	-0.783988289194546550,	-0.784019326995226810,	-0.784050362835858720,	
+-0.784081396716365230,	-0.784112428636667750,	-0.784143458596689210,	-0.784174486596352030,	-0.784205512635578690,	-0.784236536714291500,	-0.784267558832412950,	-0.784298578989865440,	
+-0.784329597186571580,	-0.784360613422453780,	-0.784391627697434310,	-0.784422640011436470,	-0.784453650364381310,	-0.784484658756192220,	-0.784515665186791280,	-0.784546669656101870,	
+-0.784577672164045170,	-0.784608672710544350,	-0.784639671295521810,	-0.784670667918900060,	-0.784701662580601700,	-0.784732655280549140,	-0.784763646018665000,	-0.784794634794871660,	
+-0.784825621609091750,	-0.784856606461247890,	-0.784887589351262350,	-0.784918570279058540,	-0.784949549244557620,	-0.784980526247682890,	-0.785011501288357390,	-0.785042474366502650,	
+-0.785073445482041720,	-0.785104414634897110,	-0.785135381824991430,	-0.785166347052247420,	-0.785197310316587460,	-0.785228271617934180,	-0.785259230956210310,	-0.785290188331338350,	
+-0.785321143743240910,	-0.785352097191840630,	-0.785383048677060550,	-0.785413998198822410,	-0.785444945757049260,	-0.785475891351663740,	-0.785506834982589000,	-0.785537776649746670,	
+-0.785568716353059910,	-0.785599654092451250,	-0.785630589867843620,	-0.785661523679159420,	-0.785692455526321390,	-0.785723385409252240,	-0.785754313327874710,	-0.785785239282111300,	
+-0.785816163271884860,	-0.785847085297118440,	-0.785878005357733890,	-0.785908923453654260,	-0.785939839584802400,	-0.785970753751101370,	-0.786001665952473010,	-0.786032576188840370,	
+-0.786063484460126420,	-0.786094390766253650,	-0.786125295107145020,	-0.786156197482723030,	-0.786187097892910640,	-0.786217996337630450,	-0.786248892816805320,	-0.786279787330357970,	
+-0.786310679878211570,	-0.786341570460288080,	-0.786372459076510540,	-0.786403345726801930,	-0.786434230411085510,	-0.786465113129282910,	-0.786495993881317630,	-0.786526872667112300,	
+-0.786557749486589740,	-0.786588624339672800,	-0.786619497226284330,	-0.786650368146347150,	-0.786681237099784100,	-0.786712104086517930,	-0.786742969106471460,	-0.786773832159567530,	
+-0.786804693245729550,	-0.786835552364879340,	-0.786866409516940310,	-0.786897264701835740,	-0.786928117919487470,	-0.786958969169818890,	-0.786989818452752950,	-0.787020665768212390,	
+-0.787051511116120260,	-0.787082354496399290,	-0.787113195908972330,	-0.787144035353762540,	-0.787174872830692650,	-0.787205708339685510,	-0.787236541880664050,	-0.787267373453551910,	
+-0.787298203058270700,	-0.787329030694744030,	-0.787359856362894740,	-0.787390680062646450,	-0.787421501793920900,	-0.787452321556641470,	-0.787483139350731330,	-0.787513955176113330,	
+-0.787544769032710420,	-0.787575580920445660,	-0.787606390839241890,	-0.787637198789022160,	-0.787668004769709440,	-0.787698808781226670,	-0.787729610823497460,	-0.787760410896443660,	
+-0.787791208999988780,	-0.787822005134055980,	-0.787852799298568660,	-0.787883591493448780,	-0.787914381718619940,	-0.787945169974005210,	-0.787975956259527430,	-0.788006740575109890,	
+-0.788037522920675420,	-0.788068303296147190,	-0.788099081701448160,	-0.788129858136501380,	-0.788160632601230040,	-0.788191405095557630,	-0.788222175619406110,	-0.788252944172699310,	
+-0.788283710755359970,	-0.788314475367312030,	-0.788345238008477330,	-0.788375998678779500,	-0.788406757378141700,	-0.788437514106486990,	-0.788468268863738440,	-0.788499021649819330,	
+-0.788529772464652610,	-0.788560521308161460,	-0.788591268180268920,	-0.788622013080898300,	-0.788652756009972760,	-0.788683496967415690,	-0.788714235953149380,	-0.788744972967097560,	
+-0.788775708009183730,	-0.788806441079330180,	-0.788837172177460520,	-0.788867901303497930,	-0.788898628457365580,	-0.788929353638986640,	-0.788960076848284290,	-0.788990798085181800,	
+-0.789021517349602240,	-0.789052234641469010,	-0.789082949960705050,	-0.789113663307233870,	-0.789144374680978980,	-0.789175084081862650,	-0.789205791509808520,	-0.789236496964740080,	
+-0.789267200446580830,	-0.789297901955253070,	-0.789328601490680510,	-0.789359299052786460,	-0.789389994641494170,	-0.789420688256726840,	-0.789451379898407860,	-0.789482069566460390,	
+-0.789512757260807830,	-0.789543442981373360,	-0.789574126728080250,	-0.789604808500852350,	-0.789635488299611830,	-0.789666166124282640,	-0.789696841974788070,	-0.789727515851051940,	
+-0.789758187752996440,	-0.789788857680545520,	-0.789819525633622450,	-0.789850191612150530,	-0.789880855616053150,	-0.789911517645253580,	-0.789942177699675230,	-0.789972835779241490,	
+-0.790003491883875640,	-0.790034146013501080,	-0.790064798168041650,	-0.790095448347419740,	-0.790126096551559190,	-0.790156742780383390,	-0.790187387033816190,	-0.790218029311780090,	
+-0.790248669614198930,	-0.790279307940995990,	-0.790309944292094890,	-0.790340578667418910,	-0.790371211066891450,	-0.790401841490436020,	-0.790432469937975890,	-0.790463096409434680,	
+-0.790493720904735690,	-0.790524343423802960,	-0.790554963966558780,	-0.790585582532927210,	-0.790616199122831650,	-0.790646813736196160,	-0.790677426372943140,	-0.790708037032996520,	
+-0.790738645716279830,	-0.790769252422716450,	-0.790799857152230000,	-0.790830459904743990,	-0.790861060680181690,	-0.790891659478466850,	-0.790922256299522730,	-0.790952851143273070,	
+-0.790983444009641270,	-0.791014034898551380,	-0.791044623809925910,	-0.791075210743688810,	-0.791105795699763690,	-0.791136378678074630,	-0.791166959678544110,	-0.791197538701096210,	
+-0.791228115745654440,	-0.791258690812142400,	-0.791289263900483600,	-0.791319835010601660,	-0.791350404142420080,	-0.791380971295862600,	-0.791411536470852610,	-0.791442099667313710,	
+-0.791472660885170210,	-0.791503220124344490,	-0.791533777384760720,	-0.791564332666342520,	-0.791594885969014060,	-0.791625437292697740,	-0.791655986637317950,	-0.791686534002798090,	
+-0.791717079389062000,	-0.791747622796033170,	-0.791778164223635230,	-0.791808703671791900,	-0.791839241140426810,	-0.791869776629463670,	-0.791900310138826000,	-0.791930841668438190,	
+-0.791961371218222740,	-0.791991898788103830,	-0.792022424378005190,	-0.792052947987850970,	-0.792083469617563820,	-0.792113989267068110,	-0.792144506936287350,	-0.792175022625145390,	
+-0.792205536333565720,	-0.792236048061472300,	-0.792266557808788850,	-0.792297065575438890,	-0.792327571361346350,	-0.792358075166434750,	-0.792388576990628700,	-0.792419076833850490,	
+-0.792449574696024620,	-0.792480070577074920,	-0.792510564476925470,	-0.792541056395499100,	-0.792571546332720090,	-0.792602034288512280,	-0.792632520262799290,	-0.792663004255505070,	
+-0.792693486266553340,	-0.792723966295867830,	-0.792754444343372390,	-0.792784920408990960,	-0.792815394492647150,	-0.792845866594264810,	-0.792876336713768450,	-0.792906804851080670,	
+-0.792937271006125880,	-0.792967735178827900,	-0.792998197369111040,	-0.793028657576898220,	-0.793059115802113860,	-0.793089572044681560,	-0.793120026304525380,	-0.793150478581569170,	
+-0.793180928875736660,	-0.793211377186952000,	-0.793241823515138720,	-0.793272267860220980,	-0.793302710222122510,	-0.793333150600767920,	-0.793363588996079840,	-0.793394025407982760,	
+-0.793424459836400640,	-0.793454892281257870,	-0.793485322742477410,	-0.793515751219983630,	-0.793546177713700400,	-0.793576602223551860,	-0.793607024749461650,	-0.793637445291353940,	
+-0.793667863849152670,	-0.793698280422781680,	-0.793728695012165030,	-0.793759107617226680,	-0.793789518237891010,	-0.793819926874081090,	-0.793850333525721320,	-0.793880738192735750,	
+-0.793911140875048770,	-0.793941541572583450,	-0.793971940285264300,	-0.794002337013015260,	-0.794032731755760390,	-0.794063124513423760,	-0.794093515285929200,	-0.794123904073200990,	
+-0.794154290875162870,	-0.794184675691739120,	-0.794215058522853680,	-0.794245439368431170,	-0.794275818228394440,	-0.794306195102668200,	-0.794336569991176410,	-0.794366942893843800,	
+-0.794397313810593310,	-0.794427682741349450,	-0.794458049686036500,	-0.794488414644578310,	-0.794518777616899150,	-0.794549138602923090,	-0.794579497602574070,	-0.794609854615776490,	
+-0.794640209642454080,	-0.794670562682531220,	-0.794700913735931990,	-0.794731262802581000,	-0.794761609882401190,	-0.794791954975317520,	-0.794822298081254490,	-0.794852639200135050,	
+-0.794882978331884040,	-0.794913315476425630,	-0.794943650633684000,	-0.794973983803583200,	-0.795004314986047400,	-0.795034644181000780,	-0.795064971388367630,	-0.795095296608072100,	
+-0.795125619840038270,	-0.795155941084190300,	-0.795186260340453140,	-0.795216577608749750,	-0.795246892889004850,	-0.795277206181142840,	-0.795307517485088210,	-0.795337826800764370,	
+-0.795368134128095930,	-0.795398439467007170,	-0.795428742817422260,	-0.795459044179265500,	-0.795489343552461150,	-0.795519640936933390,	-0.795549936332606620,	-0.795580229739405010,	
+-0.795610521157252730,	-0.795640810586074720,	-0.795671098025794280,	-0.795701383476335900,	-0.795731666937624200,	-0.795761948409583810,	-0.795792227892137990,	-0.795822505385211710,	
+-0.795852780888729020,	-0.795883054402614420,	-0.795913325926792200,	-0.795943595461186650,	-0.795973863005722150,	-0.796004128560322990,	-0.796034392124913560,	-0.796064653699418030,	
+-0.796094913283761470,	-0.796125170877867160,	-0.796155426481659820,	-0.796185680095063850,	-0.796215931718004310,	-0.796246181350404480,	-0.796276428992189090,	-0.796306674643282640,	
+-0.796336918303609530,	-0.796367159973094150,	-0.796397399651660790,	-0.796427637339233940,	-0.796457873035738120,	-0.796488106741097490,	-0.796518338455236560,	-0.796548568178079950,	
+-0.796578795909552270,	-0.796609021649577250,	-0.796639245398079510,	-0.796669467154984320,	-0.796699686920214870,	-0.796729904693696200,	-0.796760120475352830,	-0.796790334265109030,	
+-0.796820546062889430,	-0.796850755868618530,	-0.796880963682220720,	-0.796911169503620510,	-0.796941373332742400,	-0.796971575169510780,	-0.797001775013850280,	-0.797031972865685830,	
+-0.797062168724940960,	-0.797092362591540700,	-0.797122554465409470,	-0.797152744346472430,	-0.797182932234652970,	-0.797213118129876160,	-0.797243302032066610,	-0.797273483941148720,	
+-0.797303663857047210,	-0.797333841779686470,	-0.797364017708991120,	-0.797394191644885790,	-0.797424363587294960,	-0.797454533536143260,	-0.797484701491355640,	-0.797514867452855820,	
+-0.797545031420568870,	-0.797575193394419290,	-0.797605353374332250,	-0.797635511360231360,	-0.797665667352041590,	-0.797695821349687750,	-0.797725973353094250,	-0.797756123362185930,	
+-0.797786271376887180,	-0.797816417397122830,	-0.797846561422817510,	-0.797876703453895610,	-0.797906843490282070,	-0.797936981531901960,	-0.797967117578678890,	-0.797997251630537920,	
+-0.798027383687403890,	-0.798057513749201860,	-0.798087641815855560,	-0.798117767887290160,	-0.798147891963430390,	-0.798178014044200860,	-0.798208134129526290,	-0.798238252219331420,	
+-0.798268368313540870,	-0.798298482412079350,	-0.798328594514871700,	-0.798358704621842550,	-0.798388812732916620,	-0.798418918848019190,	-0.798449022967073980,	-0.798479125090006180,	
+-0.798509225216741060,	-0.798539323347202350,	-0.798569419481315430,	-0.798599513619004830,	-0.798629605760195590,	-0.798659695904812230,	-0.798689784052779680,	-0.798719870204022690,	
+-0.798749954358465960,	-0.798780036516034350,	-0.798810116676652690,	-0.798840194840245710,	-0.798870271006738800,	-0.798900345176055680,	-0.798930417348121650,	-0.798960487522861530,	
+-0.798990555700200830,	-0.799020621880063290,	-0.799050686062374060,	-0.799080748247058100,	-0.799110808434040370,	-0.799140866623245460,	-0.799170922814598560,	-0.799200977008024280,	
+-0.799231029203447570,	-0.799261079400793270,	-0.799291127599986220,	-0.799321173800952020,	-0.799351218003614190,	-0.799381260207898460,	-0.799411300413729430,	-0.799441338621032840,	
+-0.799471374829732300,	-0.799501409039753310,	-0.799531441251020820,	-0.799561471463459680,	-0.799591499676994940,	-0.799621525891551440,	-0.799651550107054020,	-0.799681572323427850,	
+-0.799711592540597760,	-0.799741610758488600,	-0.799771626977025970,	-0.799801641196133730,	-0.799831653415737480,	-0.799861663635761940,	-0.799891671856132860,	-0.799921678076774060,	
+-0.799951682297611040,	-0.799981684518568880,	-0.800011684739572520,	-0.800041682960546900,	-0.800071679181417080,	-0.800101673402108030,	-0.800131665622544790,	-0.800161655842652530,	
+-0.800191644062355990,	-0.800221630281580330,	-0.800251614500251170,	-0.800281596718292470,	-0.800311576935629710,	-0.800341555152188630,	-0.800371531367893070,	-0.800401505582668650,	
+-0.800431477796440530,	-0.800461448009133660,	-0.800491416220673210,	-0.800521382430984250,	-0.800551346639991830,	-0.800581308847621020,	-0.800611269053796870,	-0.800641227258444670,	
+-0.800671183461489360,	-0.800701137662856550,	-0.800731089862470440,	-0.800761040060256610,	-0.800790988256140150,	-0.800820934450046760,	-0.800850878641900520,	-0.800880820831627040,	
+-0.800910761019151480,	-0.800940699204399140,	-0.800970635387294960,	-0.801000569567764220,	-0.801030501745731980,	-0.801060431921123640,	-0.801090360093864140,	-0.801120286263878660,	
+-0.801150210431093130,	-0.801180132595431530,	-0.801210052756819560,	-0.801239970915182400,	-0.801269887070445890,	-0.801299801222534190,	-0.801329713371372930,	-0.801359623516887390,	
+-0.801389531659002840,	-0.801419437797644350,	-0.801449341932737310,	-0.801479244064207010,	-0.801509144191978500,	-0.801539042315977170,	-0.801568938436128200,	-0.801598832552357420,	
+-0.801628724664589120,	-0.801658614772748910,	-0.801688502876762190,	-0.801718388976554670,	-0.801748273072050770,	-0.801778155163176190,	-0.801808035249856110,	-0.801837913332016040,	
+-0.801867789409581140,	-0.801897663482476820,	-0.801927535550628230,	-0.801957405613960890,	-0.801987273672400080,	-0.802017139725870960,	-0.802047003774299050,	-0.802076865817610170,	
+-0.802106725855728620,	-0.802136583888580220,	-0.802166439916090930,	-0.802196293938184920,	-0.802226145954788250,	-0.802255995965826200,	-0.802285843971224160,	-0.802315689970907520,	
+-0.802345533964801680,	-0.802375375952831930,	-0.802405215934923750,	-0.802435053911002670,	-0.802464889880993740,	-0.802494723844822790,	-0.802524555802415440,	-0.802554385753696200,	
+-0.802584213698591010,	-0.802614039637025160,	-0.802643863568924920,	-0.802673685494214470,	-0.802703505412819650,	-0.802733323324666290,	-0.802763139229679460,	-0.802792953127784870,	
+-0.802822765018907810,	-0.802852574902973900,	-0.802882382779908530,	-0.802912188649637200,	-0.802941992512085420,	-0.802971794367179140,	-0.803001594214842960,	-0.803031392055002740,	
+-0.803061187887583960,	-0.803090981712512810,	-0.803120773529713670,	-0.803150563339112610,	-0.803180351140635130,	-0.803210136934206730,	-0.803239920719753030,	-0.803269702497199530,	
+-0.803299482266471740,	-0.803329260027495270,	-0.803359035780195630,	-0.803388809524498430,	-0.803418581260329720,	-0.803448350987614020,	-0.803478118706277500,	-0.803507884416245650,	
+-0.803537648117444660,	-0.803567409809798900,	-0.803597169493234680,	-0.803626927167677580,	-0.803656682833053140,	-0.803686436489286950,	-0.803716188136304740,	-0.803745937774032030,	
+-0.803775685402394410,	-0.803805431021317630,	-0.803835174630727290,	-0.803864916230549010,	-0.803894655820708960,	-0.803924393401131750,	-0.803954128971743560,	-0.803983862532470560,	
+-0.804013594083237470,	-0.804043323623970240,	-0.804073051154594820,	-0.804102776675036710,	-0.804132500185221640,	-0.804162221685075340,	-0.804191941174523530,	-0.804221658653491820,	
+-0.804251374121905950,	-0.804281087579691630,	-0.804310799026774710,	-0.804340508463081250,	-0.804370215888535970,	-0.804399921303065150,	-0.804429624706594510,	-0.804459326099050460,	
+-0.804489025480357390,	-0.804518722850441900,	-0.804548418209229510,	-0.804578111556646160,	-0.804607802892617460,	-0.804637492217069260,	-0.804667179529927390,	-0.804696864831117460,	
+-0.804726548120565430,	-0.804756229398197020,	-0.804785908663938620,	-0.804815585917714850,	-0.804845261159452210,	-0.804874934389076310,	-0.804904605606513670,	-0.804934274811689000,	
+-0.804963942004528590,	-0.804993607184958380,	-0.805023270352904110,	-0.805052931508291600,	-0.805082590651046930,	-0.805112247781095690,	-0.805141902898363740,	-0.805171556002777120,	
+-0.805201207094261680,	-0.805230856172743700,	-0.805260503238148020,	-0.805290148290401020,	-0.805319791329428770,	-0.805349432355157550,	-0.805379071367512190,	-0.805408708366419090,	
+-0.805438343351804310,	-0.805467976323593680,	-0.805497607281713050,	-0.805527236226088460,	-0.805556863156645760,	-0.805586488073310900,	-0.805616110976009820,	-0.805645731864668480,	
+-0.805675350739212700,	-0.805704967599569220,	-0.805734582445662760,	-0.805764195277419830,	-0.805793806094766920,	-0.805823414897628990,	-0.805853021685932420,	-0.805882626459603400,	
+-0.805912229218567870,	-0.805941829962751650,	-0.805971428692080940,	-0.806001025406481550,	-0.806030620105879780,	-0.806060212790201350,	-0.806089803459372310,	-0.806119392113318840,	
+-0.806148978751967450,	-0.806178563375243070,	-0.806208145983072220,	-0.806237726575381060,	-0.806267305152096100,	-0.806296881713142400,	-0.806326456258446460,	-0.806356028787934330,	
+-0.806385599301532200,	-0.806415167799166000,	-0.806444734280761910,	-0.806474298746245990,	-0.806503861195544290,	-0.806533421628582990,	-0.806562980045288150,	-0.806592536445586370,	
+-0.806622090829402730,	-0.806651643196663830,	-0.806681193547295840,	-0.806710741881225380,	-0.806740288198377510,	-0.806769832498678950,	-0.806799374782055880,	-0.806828915048434350,	
+-0.806858453297740420,	-0.806887989529900480,	-0.806917523744840490,	-0.806947055942486720,	-0.806976586122765350,	-0.807006114285602430,	-0.807035640430924790,	-0.807065164558657510,	
+-0.807094686668727410,	-0.807124206761060450,	-0.807153724835583560,	-0.807183240892221930,	-0.807212754930902050,	-0.807242266951550320,	-0.807271776954093020,	-0.807301284938456210,	
+-0.807330790904566160,	-0.807360294852349170,	-0.807389796781731390,	-0.807419296692639230,	-0.807448794584998740,	-0.807478290458736760,	-0.807507784313778560,	-0.807537276150051000,	
+-0.807566765967480120,	-0.807596253765992870,	-0.807625739545514530,	-0.807655223305971840,	-0.807684705047290950,	-0.807714184769398490,	-0.807743662472220400,	-0.807773138155683300,	
+-0.807802611819713250,	-0.807832083464236740,	-0.807861553089179950,	-0.807891020694469390,	-0.807920486280031100,	-0.807949949845792270,	-0.807979411391677950,	-0.808008870917615200,	
+-0.808038328423530180,	-0.808067783909349970,	-0.808097237374999720,	-0.808126688820406280,	-0.808156138245496260,	-0.808185585650195830,	-0.808215031034431490,	-0.808244474398129520,	
+-0.808273915741216320,	-0.808303355063618390,	-0.808332792365262120,	-0.808362227646073790,	-0.808391660905980470,	-0.808421092144907430,	-0.808450521362781730,	-0.808479948559529650,	
+-0.808509373735078250,	-0.808538796889352820,	-0.808568218022280520,	-0.808597637133787630,	-0.808627054223800660,	-0.808656469292245990,	-0.808685882339050250,	-0.808715293364139720,	
+-0.808744702367441000,	-0.808774109348880500,	-0.808803514308384710,	-0.808832917245880690,	-0.808862318161293840,	-0.808891717054551210,	-0.808921113925579300,	-0.808950508774305080,	
+-0.808979901600654140,	-0.809009292404553330,	-0.809038681185929360,	-0.809068067944708760,	-0.809097452680817900,	-0.809126835394183400,	-0.809156216084731870,	-0.809185594752389710,	
+-0.809214971397083650,	-0.809244346018740180,	-0.809273718617286250,	-0.809303089192647600,	-0.809332457744751270,	-0.809361824273523660,	-0.809391188778892160,	-0.809420551260782050,	
+-0.809449911719120620,	-0.809479270153834360,	-0.809508626564849900,	-0.809537980952093950,	-0.809567333315493020,	-0.809596683654973840,	-0.809626031970462790,	-0.809655378261886830,	
+-0.809684722529172340,	-0.809714064772246060,	-0.809743404991035030,	-0.809772743185465100,	-0.809802079355463220,	-0.809831413500956220,	-0.809860745621871160,	-0.809890075718133760,	
+-0.809919403789671200,	-0.809948729836410090,	-0.809978053858277150,	-0.810007375855199110,	-0.810036695827102580,	-0.810066013773914300,	-0.810095329695560970,	-0.810124643591969340,	
+-0.810153955463066120,	-0.810183265308778600,	-0.810212573129032280,	-0.810241878923754540,	-0.810271182692872240,	-0.810300484436312420,	-0.810329784154000810,	-0.810359081845864800,	
+-0.810388377511831020,	-0.810417671151826280,	-0.810446962765777430,	-0.810476252353611200,	-0.810505539915254310,	-0.810534825450633600,	-0.810564108959675790,	-0.810593390442307720,	
+-0.810622669898456660,	-0.810651947328048460,	-0.810681222731010400,	-0.810710496107269200,	-0.810739767456752360,	-0.810769036779385500,	-0.810798304075096120,	-0.810827569343810950,	
+-0.810856832585456930,	-0.810886093799960680,	-0.810915352987249370,	-0.810944610147249500,	-0.810973865279888240,	-0.811003118385092310,	-0.811032369462788560,	-0.811061618512904370,	
+-0.811090865535365690,	-0.811120110530099690,	-0.811149353497033540,	-0.811178594436094520,	-0.811207833347208470,	-0.811237070230302890,	-0.811266305085304620,	-0.811295537912140490,	
+-0.811324768710737660,	-0.811353997481022770,	-0.811383224222922970,	-0.811412448936365100,	-0.811441671621276120,	-0.811470892277582840,	-0.811500110905212460,	-0.811529327504092350,	
+-0.811558542074148350,	-0.811587754615307970,	-0.811616965127498700,	-0.811646173610646620,	-0.811675380064678990,	-0.811704584489522870,	-0.811733786885105450,	-0.811762987251353430,	
+-0.811792185588193990,	-0.811821381895554080,	-0.811850576173360760,	-0.811879768421540970,	-0.811908958640021770,	-0.811938146828730110,	-0.811967332987593720,	-0.811996517116538420,	
+-0.812025699215491730,	-0.812054879284380910,	-0.812084057323133380,	-0.812113233331675180,	-0.812142407309933920,	-0.812171579257836670,	-0.812200749175310380,	-0.812229917062282310,	
+-0.812259082918679320,	-0.812288246744428790,	-0.812317408539457550,	-0.812346568303692780,	-0.812375726037061650,	-0.812404881739491660,	-0.812434035410908970,	-0.812463187051241210,	
+-0.812492336660415430,	-0.812521484238359350,	-0.812550629784999030,	-0.812579773300262210,	-0.812608914784075930,	-0.812638054236367370,	-0.812667191657063580,	-0.812696327046091960,	
+-0.812725460403379340,	-0.812754591728853230,	-0.812783721022440560,	-0.812812848284068630,	-0.812841973513665050,	-0.812871096711156090,	-0.812900217876469270,	-0.812929337009532070,	
+-0.812958454110271900,	-0.812987569178615140,	-0.813016682214489420,	-0.813045793217822110,	-0.813074902188540170,	-0.813104009126571100,	-0.813133114031841850,	-0.813162216904279920,	
+-0.813191317743812480,	-0.813220416550366700,	-0.813249513323869850,	-0.813278608064249340,	-0.813307700771432660,	-0.813336791445346320,	-0.813365880085918040,	-0.813394966693075430,	
+-0.813424051266745000,	-0.813453133806854360,	-0.813482214313331010,	-0.813511292786102010,	-0.813540369225094870,	-0.813569443630236640,	-0.813598516001454940,	-0.813627586338676930,	
+-0.813656654641830010,	-0.813685720910841350,	-0.813714785145638440,	-0.813743847346149130,	-0.813772907512299580,	-0.813801965644017860,	-0.813831021741231120,	-0.813860075803867430,	
+-0.813889127831852970,	-0.813918177825115770,	-0.813947225783583030,	-0.813976271707182340,	-0.814005315595840880,	-0.814034357449486160,	-0.814063397268045550,	-0.814092435051446460,	
+-0.814121470799616280,	-0.814150504512482390,	-0.814179536189972850,	-0.814208565832013840,	-0.814237593438533410,	-0.814266619009459070,	-0.814295642544718650,	-0.814324664044238640,	
+-0.814353683507947010,	-0.814382700935771140,	-0.814411716327638420,	-0.814440729683476580,	-0.814469741003212790,	-0.814498750286774650,	-0.814527757534089680,	-0.814556762745085370,	
+-0.814585765919689010,	-0.814614767057828870,	-0.814643766159431240,	-0.814672763224424280,	-0.814701758252735280,	-0.814730751244292510,	-0.814759742199022250,	-0.814788731116852680,	
+-0.814817717997711300,	-0.814846702841525610,	-0.814875685648223210,	-0.814904666417731520,	-0.814933645149978240,	-0.814962621844890770,	-0.814991596502396830,	-0.815020569122423820,	
+-0.815049539704899460,	-0.815078508249751700,	-0.815107474756907150,	-0.815136439226293970,	-0.815165401657840240,	-0.815194362051472330,	-0.815223320407118650,	-0.815252276724706680,	
+-0.815281231004163940,	-0.815310183245418150,	-0.815339133448396920,	-0.815368081613027870,	-0.815397027739238610,	-0.815425971826956750,	-0.815454913876110020,	-0.815483853886625920,	
+-0.815512791858432730,	-0.815541727791457060,	-0.815570661685627090,	-0.815599593540870420,	-0.815628523357115330,	-0.815657451134288450,	-0.815686376872317820,	-0.815715300571131290,	
+-0.815744222230656570,	-0.815773141850821280,	-0.815802059431553150,	-0.815830974972779790,	-0.815859888474429030,	-0.815888799936428600,	-0.815917709358706110,	-0.815946616741189960,	
+-0.815975522083806640,	-0.816004425386484540,	-0.816033326649151400,	-0.816062225871735380,	-0.816091123054163430,	-0.816120018196363590,	-0.816148911298263610,	-0.816177802359791540,	
+-0.816206691380874870,	-0.816235578361441450,	-0.816264463301419110,	-0.816293346200735570,	-0.816322227059318670,	-0.816351105877096250,	-0.816379982653996580,	-0.816408857389946510,	
+-0.816437730084874190,	-0.816466600738707580,	-0.816495469351374960,	-0.816524335922803160,	-0.816553200452920570,	-0.816582062941654920,	-0.816610923388934150,	-0.816639781794685990,	
+-0.816668638158838500,	-0.816697492481319290,	-0.816726344762056410,	-0.816755195000977710,	-0.816784043198010900,	-0.816812889353084160,	-0.816841733466125540,	-0.816870575537062220,	
+-0.816899415565822350,	-0.816928253552334450,	-0.816957089496525460,	-0.816985923398323770,	-0.817014755257657210,	-0.817043585074453850,	-0.817072412848641410,	-0.817101238580148050,	
+-0.817130062268901500,	-0.817158883914829830,	-0.817187703517860960,	-0.817216521077922860,	-0.817245336594943360,	-0.817274150068851180,	-0.817302961499573040,	-0.817331770887037460,	
+-0.817360578231172470,	-0.817389383531906490,	-0.817418186789166670,	-0.817446988002881290,	-0.817475787172978420,	-0.817504584299386220,	-0.817533379382032410,	-0.817562172420845280,	
+-0.817590963415752660,	-0.817619752366682610,	-0.817648539273563180,	-0.817677324136322440,	-0.817706106954888880,	-0.817734887729189450,	-0.817763666459152990,	-0.817792443144707230,	
+-0.817821217785780870,	-0.817849990382301000,	-0.817878760934196200,	-0.817907529441394440,	-0.817936295903823880,	-0.817965060321412470,	-0.817993822694088600,	-0.818022583021779990,	
+-0.818051341304415040,	-0.818080097541921680,	-0.818108851734228090,	-0.818137603881262890,	-0.818166353982953230,	-0.818195102039227630,	-0.818223848050014250,	-0.818252592015241810,	
+-0.818281333934837370,	-0.818310073808729550,	-0.818338811636846630,	-0.818367547419116550,	-0.818396281155467700,	-0.818425012845828140,	-0.818453742490126030,	-0.818482470088289560,	
+-0.818511195640246990,	-0.818539919145926390,	-0.818568640605255910,	-0.818597360018164410,	-0.818626077384579040,	-0.818654792704428420,	-0.818683505977641280,	-0.818712217204144890,	
+-0.818740926383868080,	-0.818769633516738820,	-0.818798338602685470,	-0.818827041641636330,	-0.818855742633519570,	-0.818884441578263570,	-0.818913138475796280,	-0.818941833326046200,	
+-0.818970526128941610,	-0.818999216884410690,	-0.819027905592382140,	-0.819056592252783380,	-0.819085276865543220,	-0.819113959430589730,	-0.819142639947851970,	-0.819171318417256990,	
+-0.819199994838733740,	-0.819228669212210600,	-0.819257341537615650,	-0.819286011814877480,	-0.819314680043924160,	-0.819343346224684190,	-0.819372010357085840,	-0.819400672441057520,	
+-0.819429332476527490,	-0.819457990463424600,	-0.819486646401676230,	-0.819515300291211330,	-0.819543952131958080,	-0.819572601923845510,	-0.819601249666800920,	-0.819629895360753260,	
+-0.819658539005630790,	-0.819687180601361920,	-0.819715820147875250,	-0.819744457645098960,	-0.819773093092961420,	-0.819801726491391270,	-0.819830357840316770,	-0.819858987139666430,	
+-0.819887614389369080,	-0.819916239589352110,	-0.819944862739544700,	-0.819973483839875010,	-0.820002102890272200,	-0.820030719890663560,	-0.820059334840978150,	-0.820087947741144460,	
+-0.820116558591090780,	-0.820145167390745830,	-0.820173774140037890,	-0.820202378838895460,	-0.820230981487247160,	-0.820259582085021370,	-0.820288180632146700,	-0.820316777128551440,	
+-0.820345371574164870,	-0.820373963968914380,	-0.820402554312728900,	-0.820431142605537620,	-0.820459728847267920,	-0.820488313037848860,	-0.820516895177209050,	-0.820545475265276990,	
+-0.820574053301981300,	-0.820602629287250470,	-0.820631203221013020,	-0.820659775103197540,	-0.820688344933732660,	-0.820716912712546990,	-0.820745478439568910,	-0.820774042114727710,	
+-0.820802603737950890,	-0.820831163309167610,	-0.820859720828306380,	-0.820888276295296370,	-0.820916829710065080,	-0.820945381072541780,	-0.820973930382655090,	-0.821002477640333520,	
+-0.821031022845505660,	-0.821059565998100370,	-0.821088107098046140,	-0.821116646145271580,	-0.821145183139705530,	-0.821173718081276370,	-0.821202250969913510,	-0.821230781805544540,	
+-0.821259310588098530,	-0.821287837317504320,	-0.821316361993691070,	-0.821344884616586280,	-0.821373405186119340,	-0.821401923702218870,	-0.821430440164813590,	-0.821458954573832220,	
+-0.821487466929203490,	-0.821515977230856120,	-0.821544485478718720,	-0.821572991672720130,	-0.821601495812789070,	-0.821629997898854820,	-0.821658497930845000,	-0.821686995908688990,	
+-0.821715491832315510,	-0.821743985701653750,	-0.821772477516631520,	-0.821800967277178110,	-0.821829454983222350,	-0.821857940634692860,	-0.821886424231518590,	-0.821914905773628130,	
+-0.821943385260950570,	-0.821971862693414490,	-0.822000338070948740,	-0.822028811393482050,	-0.822057282660943470,	-0.822085751873262160,	-0.822114219030365860,	-0.822142684132184160,	
+-0.822171147178646140,	-0.822199608169679850,	-0.822228067105214460,	-0.822256523985179010,	-0.822284978809502130,	-0.822313431578112870,	-0.822341882290939960,	-0.822370330947912450,	
+-0.822398777548959070,	-0.822427222094008650,	-0.822455664582990350,	-0.822484105015832800,	-0.822512543392465490,	-0.822540979712816260,	-0.822569413976814710,	-0.822597846184389470,	
+-0.822626276335470250,	-0.822654704429984780,	-0.822683130467862570,	-0.822711554449032540,	-0.822739976373423550,	-0.822768396240964760,	-0.822796814051584890,	-0.822825229805213000,	
+-0.822853643501778030,	-0.822882055141208930,	-0.822910464723434650,	-0.822938872248384800,	-0.822967277715987210,	-0.822995681126171500,	-0.823024082478866600,	-0.823052481774001920,	
+-0.823080879011505510,	-0.823109274191306970,	-0.823137667313335260,	-0.823166058377519330,	-0.823194447383788220,	-0.823222834332071110,	-0.823251219222296830,	-0.823279602054394430,	
+-0.823307982828293210,	-0.823336361543921870,	-0.823364738201210260,	-0.823393112800086200,	-0.823421485340479430,	-0.823449855822318890,	-0.823478224245534300,	-0.823506590610053490,	
+-0.823534954915806310,	-0.823563317162721800,	-0.823591677350728910,	-0.823620035479756820,	-0.823648391549734680,	-0.823676745560591560,	-0.823705097512256510,	-0.823733447404658810,	
+-0.823761795237727410,	-0.823790141011391590,	-0.823818484725580950,	-0.823846826380223550,	-0.823875165975249010,	-0.823903503510587170,	-0.823931838986166070,	-0.823960172401915330,	
+-0.823988503757764110,	-0.824016833053641710,	-0.824045160289477160,	-0.824073485465199760,	-0.824101808580738670,	-0.824130129636022950,	-0.824158448630981980,	-0.824186765565544930,	
+-0.824215080439640870,	-0.824243393253199730,	-0.824271704006149460,	-0.824300012698420130,	-0.824328319329940550,	-0.824356623900640790,	-0.824384926410449030,	-0.824413226859294860,	
+-0.824441525247107570,	-0.824469821573816540,	-0.824498115839350950,	-0.824526408043640080,	-0.824554698186613200,	-0.824582986268199590,	-0.824611272288328420,	-0.824639556246929200,	
+-0.824667838143931520,	-0.824696117979263790,	-0.824724395752855610,	-0.824752671464636600,	-0.824780945114536370,	-0.824809216702483310,	-0.824837486228407140,	-0.824865753692237360,	
+-0.824894019093903030,	-0.824922282433333760,	-0.824950543710458840,	-0.824978802925207420,	-0.825007060077509120,	-0.825035315167293120,	-0.825063568194488780,	-0.825091819159026070,	
+-0.825120068060833380,	-0.825148314899840420,	-0.825176559675976700,	-0.825204802389172040,	-0.825233043039354960,	-0.825261281626455290,	-0.825289518150402300,	-0.825317752611125610,	
+-0.825345985008554490,	-0.825374215342618460,	-0.825402443613246770,	-0.825430669820369060,	-0.825458893963914700,	-0.825487116043813090,	-0.825515336059994160,	-0.825543554012386440,	
+-0.825571769900919740,	-0.825599983725523790,	-0.825628195486128200,	-0.825656405182661700,	-0.825684612815054230,	-0.825712818383235180,	-0.825741021887134050,	-0.825769223326680350,	
+-0.825797422701803670,	-0.825825620012433430,	-0.825853815258499100,	-0.825882008439930200,	-0.825910199556656340,	-0.825938388608607020,	-0.825966575595712180,	-0.825994760517900330,	
+-0.826022943375101630,	-0.826051124167245580,	-0.826079302894262350,	-0.826107479556080220,	-0.826135654152629350,	-0.826163826683839480,	-0.826191997149639870,	-0.826220165549960360,	
+-0.826248331884730460,	-0.826276496153879770,	-0.826304658357337800,	-0.826332818495034150,	-0.826360976566898440,	-0.826389132572860840,	-0.826417286512849960,	-0.826445438386795740,	
+-0.826473588194628020,	-0.826501735936276740,	-0.826529881611670740,	-0.826558025220739960,	-0.826586166763414120,	-0.826614306239622840,	-0.826642443649295840,	-0.826670578992362740,	
+-0.826698712268753130,	-0.826726843478396760,	-0.826754972621223330,	-0.826783099697162460,	-0.826811224706144320,	-0.826839347648097630,	-0.826867468522952560,	-0.826895587330638840,	
+-0.826923704071086620,	-0.826951818744224630,	-0.826979931349983160,	-0.827008041888291800,	-0.827036150359080290,	-0.827064256762278460,	-0.827092361097816030,	-0.827120463365622620,	
+-0.827148563565628160,	-0.827176661697762160,	-0.827204757761954570,	-0.827232851758135660,	-0.827260943686234040,	-0.827289033546180110,	-0.827317121337903470,	-0.827345207061334630,	
+-0.827373290716402310,	-0.827401372303036680,	-0.827429451821167670,	-0.827457529270725020,	-0.827485604651638560,	-0.827513677963838010,	-0.827541749207253320,	-0.827569818381814310,	
+-0.827597885487450720,	-0.827625950524092380,	-0.827654013491669230,	-0.827682074390111430,	-0.827710133219348050,	-0.827738189979309260,	-0.827766244669925100,	-0.827794297291125750,	
+-0.827822347842840140,	-0.827850396324998680,	-0.827878442737531310,	-0.827906487080367740,	-0.827934529353438030,	-0.827962569556671910,	-0.827990607689999440,	-0.828018643753350440,	
+-0.828046677746654750,	-0.828074709669842420,	-0.828102739522843860,	-0.828130767305587880,	-0.828158793018004990,	-0.828186816660025250,	-0.828214838231578820,	-0.828242857732594870,	
+-0.828270875163003680,	-0.828298890522735420,	-0.828326903811719810,	-0.828354915029887010,	-0.828382924177166970,	-0.828410931253489520,	-0.828438936258784840,	-0.828466939192982750,	
+-0.828494940056013430,	-0.828522938847807140,	-0.828550935568292960,	-0.828578930217401590,	-0.828606922795062760,	-0.828634913301207200,	-0.828662901735763850,	-0.828690888098663200,	
+-0.828718872389835440,	-0.828746854609210380,	-0.828774834756718200,	-0.828802812832288960,	-0.828830788835852710,	-0.828858762767339500,	-0.828886734626679390,	-0.828914704413802330,	
+-0.828942672128639150,	-0.828970637771118680,	-0.828998601341171650,	-0.829026562838728110,	-0.829054522263718670,	-0.829082479616072510,	-0.829110434895720010,	-0.829138388102591550,	
+-0.829166339236617090,	-0.829194288297726680,	-0.829222235285850710,	-0.829250180200919010,	-0.829278123042861970,	-0.829306063811609540,	-0.829334002507091990,	-0.829361939129239390,	
+-0.829389873677982450,	-0.829417806153250340,	-0.829445736554973780,	-0.829473664883083270,	-0.829501591137508210,	-0.829529515318179090,	-0.829557437425026190,	-0.829585357457979790,	
+-0.829613275416969940,	-0.829641191301926820,	-0.829669105112780800,	-0.829697016849461950,	-0.829724926511900660,	-0.829752834100026980,	-0.829780739613771300,	-0.829808643053064230,	
+-0.829836544417835050,	-0.829864443708014490,	-0.829892340923532810,	-0.829920236064320750,	-0.829948129130307690,	-0.829976020121424240,	-0.830003909037600800,	-0.830031795878767520,	
+-0.830059680644854800,	-0.830087563335792810,	-0.830115443951511930,	-0.830143322491942560,	-0.830171198957014740,	-0.830199073346658990,	-0.830226945660806010,	-0.830254815899385320,	
+-0.830282684062327410,	-0.830310550149562900,	-0.830338414161022390,	-0.830366276096635490,	-0.830394135956332820,	-0.830421993740044770,	-0.830449849447701840,	-0.830477703079234300,	
+-0.830505554634572430,	-0.830533404113646620,	-0.830561251516387380,	-0.830589096842724970,	-0.830616940092589910,	-0.830644781265912900,	-0.830672620362623460,	-0.830700457382652520,	
+-0.830728292325930370,	-0.830756125192388060,	-0.830783955981954870,	-0.830811784694561850,	-0.830839611330139280,	-0.830867435888617780,	-0.830895258369927610,	-0.830923078773999400,	
+-0.830950897100763420,	-0.830978713350150170,	-0.831006527522090140,	-0.831034339616513850,	-0.831062149633351680,	-0.831089957572534680,	-0.831117763433992240,	-0.831145567217655420,	
+-0.831173368923455060,	-0.831201168551320870,	-0.831228966101183800,	-0.831256761572974350,	-0.831284554966622900,	-0.831312346282060080,	-0.831340135519216370,	-0.831367922678022400,	
+-0.831395707758408540,	-0.831423490760305530,	-0.831451271683643740,	-0.831479050528353690,	-0.831506827294366650,	-0.831534601981611890,	-0.831562374590020690,	-0.831590145119523560,	
+-0.831617913570051550,	-0.831645679941534380,	-0.831673444233902880,	-0.831701206447087780,	-0.831728966581019690,	-0.831756724635629220,	-0.831784480610846870,	-0.831812234506603350,	
+-0.831839986322829180,	-0.831867736059455190,	-0.831895483716411750,	-0.831923229293630050,	-0.831950972791039910,	-0.831978714208572280,	-0.832006453546157880,	-0.832034190803727870,	
+-0.832061925981211760,	-0.832089659078540930,	-0.832117390095646000,	-0.832145119032457470,	-0.832172845888906280,	-0.832200570664922920,	-0.832228293360438130,	-0.832256013975382510,	
+-0.832283732509687010,	-0.832311448963282130,	-0.832339163336099030,	-0.832366875628067660,	-0.832394585839119070,	-0.832422293969183990,	-0.832450000018193690,	-0.832477703986077790,	
+-0.832505405872767780,	-0.832533105678194160,	-0.832560803402287770,	-0.832588499044979450,	-0.832616192606199900,	-0.832643884085879750,	-0.832671573483949930,	-0.832699260800341290,	
+-0.832726946034984430,	-0.832754629187810070,	-0.832782310258749820,	-0.832809989247733200,	-0.832837666154691680,	-0.832865340979556450,	-0.832893013722257320,	-0.832920684382725710,	
+-0.832948352960892310,	-0.832976019456688200,	-0.833003683870043870,	-0.833031346200890480,	-0.833059006449158650,	-0.833086664614779320,	-0.833114320697683210,	-0.833141974697801490,	
+-0.833169626615064660,	-0.833197276449404440,	-0.833224924200750340,	-0.833252569869034070,	-0.833280213454186350,	-0.833307854956138570,	-0.833335494374820680,	-0.833363131710163960,	
+-0.833390766962099570,	-0.833418400130558120,	-0.833446031215470780,	-0.833473660216768280,	-0.833501287134381650,	-0.833528911968241860,	-0.833556534718279730,	-0.833584155384426320,	
+-0.833611773966612900,	-0.833639390464769650,	-0.833667004878827940,	-0.833694617208718620,	-0.833722227454373300,	-0.833749835615722020,	-0.833777441692696080,	-0.833805045685226400,	
+-0.833832647593244270,	-0.833860247416680520,	-0.833887845155466100,	-0.833915440809532060,	-0.833943034378809460,	-0.833970625863229230,	-0.833998215262722440,	-0.834025802577220590,	
+-0.834053387806653830,	-0.834080970950953460,	-0.834108552010050850,	-0.834136130983877180,	-0.834163707872362710,	-0.834191282675439070,	-0.834218855393037200,	-0.834246426025088140,	
+-0.834273994571523070,	-0.834301561032272930,	-0.834329125407269000,	-0.834356687696442110,	-0.834384247899723650,	-0.834411806017044460,	-0.834439362048335910,	-0.834466915993529290,	
+-0.834494467852554990,	-0.834522017625344390,	-0.834549565311829330,	-0.834577110911939870,	-0.834604654425607610,	-0.834632195852763710,	-0.834659735193339360,	-0.834687272447265590,	
+-0.834714807614473700,	-0.834742340694894840,	-0.834769871688460060,	-0.834797400595100660,	-0.834824927414747680,	-0.834852452147332390,	-0.834879974792786530,	-0.834907495351040140,	
+-0.834935013822025060,	-0.834962530205672460,	-0.834990044501914050,	-0.835017556710680010,	-0.835045066831902050,	-0.835072574865511560,	-0.835100080811439490,	-0.835127584669617230,	
+-0.835155086439976050,	-0.835182586122447110,	-0.835210083716961820,	-0.835237579223451210,	-0.835265072641846680,	-0.835292563972079960,	-0.835320053214081320,	-0.835347540367782580,	
+-0.835375025433114930,	-0.835402508410010290,	-0.835429989298398850,	-0.835457468098212420,	-0.835484944809382400,	-0.835512419431839850,	-0.835539891965516370,	-0.835567362410343240,	
+-0.835594830766251520,	-0.835622297033172920,	-0.835649761211038400,	-0.835677223299779560,	-0.835704683299328120,	-0.835732141209614590,	-0.835759597030570570,	-0.835787050762127670,	
+-0.835814502404217510,	-0.835841951956770690,	-0.835869399419718940,	-0.835896844792993750,	-0.835924288076526410,	-0.835951729270248410,	-0.835979168374091030,	-0.836006605387985660,	
+-0.836034040311863900,	-0.836061473145657040,	-0.836088903889296350,	-0.836116332542713560,	-0.836143759105840380,	-0.836171183578607310,	-0.836198605960946310,	-0.836226026252789190,	
+-0.836253444454066570,	-0.836280860564710400,	-0.836308274584651960,	-0.836335686513822950,	-0.836363096352154670,	-0.836390504099578600,	-0.836417909756026370,	-0.836445313321429350,	
+-0.836472714795718940,	-0.836500114178826860,	-0.836527511470684490,	-0.836554906671223790,	-0.836582299780375350,	-0.836609690798071130,	-0.836637079724242730,	-0.836664466558821980,	
+-0.836691851301739730,	-0.836719233952927800,	-0.836746614512317800,	-0.836773992979841230,	-0.836801369355429810,	-0.836828743639014830,	-0.836856115830527990,	-0.836883485929900920,	
+-0.836910853937065100,	-0.836938219851952160,	-0.836965583674494140,	-0.836992945404621770,	-0.837020305042266880,	-0.837047662587361410,	-0.837075018039837080,	-0.837102371399624840,	
+-0.837129722666656640,	-0.837157071840864080,	-0.837184418922178990,	-0.837211763910532760,	-0.837239106805857110,	-0.837266447608083660,	-0.837293786317144130,	-0.837321122932970120,	
+-0.837348457455493360,	-0.837375789884645890,	-0.837403120220358450,	-0.837430448462563200,	-0.837457774611191860,	-0.837485098666176600,	-0.837512420627448130,	-0.837539740494938510,	
+-0.837567058268579580,	-0.837594373948303050,	-0.837621687534040540,	-0.837648999025723760,	-0.837676308423284550,	-0.837703615726654640,	-0.837730920935765510,	-0.837758224050549230,	
+-0.837785525070937400,	-0.837812823996862190,	-0.837840120828254320,	-0.837867415565046290,	-0.837894708207170160,	-0.837921998754556860,	-0.837949287207138460,	-0.837976573564846890,	
+-0.838003857827613880,	-0.838031139995371150,	-0.838058420068050650,	-0.838085698045584080,	-0.838112973927903290,	-0.838140247714940110,	-0.838167519406626260,	-0.838194789002893570,	
+-0.838222056503674430,	-0.838249321908899670,	-0.838276585218501570,	-0.838303846432411960,	-0.838331105550563340,	-0.838358362572886430,	-0.838385617499313620,	-0.838412870329776740,	
+-0.838440121064207730,	-0.838467369702538320,	-0.838494616244700560,	-0.838521860690626290,	-0.838549103040247320,	-0.838576343293495620,	-0.838603581450303000,	-0.838630817510601980,	
+-0.838658051474323370,	-0.838685283341399690,	-0.838712513111762760,	-0.838739740785345080,	-0.838766966362077590,	-0.838794189841892580,	-0.838821411224722200,	-0.838848630510498180,	
+-0.838875847699152690,	-0.838903062790617550,	-0.838930275784824710,	-0.838957486681706220,	-0.838984695481194030,	-0.839011902183220080,	-0.839039106787716870,	-0.839066309294615340,	
+-0.839093509703848110,	-0.839120708015347110,	-0.839147904229044730,	-0.839175098344872250,	-0.839202290362761950,	-0.839229480282645880,	-0.839256668104456200,	-0.839283853828124760,	
+-0.839311037453583710,	-0.839338218980765110,	-0.839365398409601000,	-0.839392575740023350,	-0.839419750971964200,	-0.839446924105355710,	-0.839474095140130490,	-0.839501264076219390,	
+-0.839528430913555220,	-0.839555595652070500,	-0.839582758291696150,	-0.839609918832365020,	-0.839637077274009160,	-0.839664233616560510,	-0.839691387859951230,	-0.839718540004113610,	
+-0.839745690048979480,	-0.839772837994481320,	-0.839799983840550990,	-0.839827127587120640,	-0.839854269234122430,	-0.839881408781489200,	-0.839908546229151790,	-0.839935681577043130,	
+-0.839962814825095270,	-0.839989945973240730,	-0.840017075021410990,	-0.840044201969538550,	-0.840071326817555470,	-0.840098449565394260,	-0.840125570212986730,	-0.840152688760265390,	
+-0.840179805207162400,	-0.840206919553609710,	-0.840234031799539820,	-0.840261141944884880,	-0.840288249989577520,	-0.840315355933549110,	-0.840342459776732280,	-0.840369561519059280,	
+-0.840396661160462850,	-0.840423758700874380,	-0.840450854140226470,	-0.840477947478451390,	-0.840505038715481430,	-0.840532127851248870,	-0.840559214885685970,	-0.840586299818725120,	
+-0.840613382650298500,	-0.840640463380338380,	-0.840667542008777140,	-0.840694618535547500,	-0.840721692960580860,	-0.840748765283809930,	-0.840775835505167100,	-0.840802903624585210,	
+-0.840829969641995630,	-0.840857033557331100,	-0.840884095370523890,	-0.840911155081506490,	-0.840938212690211180,	-0.840965268196570470,	-0.840992321600516400,	-0.841019372901981700,	
+-0.841046422100898420,	-0.841073469197199160,	-0.841100514190816660,	-0.841127557081682520,	-0.841154597869729350,	-0.841181636554889760,	-0.841208673137096460,	-0.841235707616281080,	
+-0.841262739992376440,	-0.841289770265314930,	-0.841316798435029050,	-0.841343824501451070,	-0.841370848464513600,	-0.841397870324149030,	-0.841424890080289760,	-0.841451907732868270,	
+-0.841478923281816950,	-0.841505936727068300,	-0.841532948068555390,	-0.841559957306209580,	-0.841586964439963950,	-0.841613969469750870,	-0.841640972395503280,	-0.841667973217152810,	
+-0.841694971934632390,	-0.841721968547874620,	-0.841748963056811910,	-0.841775955461376730,	-0.841802945761501720,	-0.841829933957119360,	-0.841856920048162150,	-0.841883904034562590,	
+-0.841910885916253290,	-0.841937865693167200,	-0.841964843365236030,	-0.841991818932392830,	-0.842018792394570000,	-0.842045763751700700,	-0.842072733003716430,	-0.842099700150550360,	
+-0.842126665192135080,	-0.842153628128403110,	-0.842180588959287160,	-0.842207547684719620,	-0.842234504304633200,	-0.842261458818960640,	-0.842288411227634310,	-0.842315361530587060,	
+-0.842342309727751810,	-0.842369255819060300,	-0.842396199804445690,	-0.842423141683840580,	-0.842450081457178150,	-0.842477019124389990,	-0.842503954685409280,	-0.842530888140168630,	
+-0.842557819488600760,	-0.842584748730638380,	-0.842611675866214100,	-0.842638600895260770,	-0.842665523817710760,	-0.842692444633497020,	-0.842719363342552150,	-0.842746279944809440,	
+-0.842773194440200380,	-0.842800106828658470,	-0.842827017110116320,	-0.842853925284506980,	-0.842880831351762390,	-0.842907735311815730,	-0.842934637164599710,	-0.842961536910047160,	
+-0.842988434548090800,	-0.843015330078663250,	-0.843042223501697440,	-0.843069114817125990,	-0.843096004024881830,	-0.843122891124897690,	-0.843149776117106290,	-0.843176659001440900,	
+-0.843203539777833360,	-0.843230418446217040,	-0.843257295006524580,	-0.843284169458689450,	-0.843311041802643380,	-0.843337912038319760,	-0.843364780165651310,	-0.843391646184570850,	
+-0.843418510095011340,	-0.843445371896905600,	-0.843472231590186470,	-0.843499089174786660,	-0.843525944650639130,	-0.843552798017676690,	-0.843579649275832840,	-0.843606498425039320,	
+-0.843633345465229610,	-0.843660190396336550,	-0.843687033218293410,	-0.843713873931032250,	-0.843740712534486460,	-0.843767549028588860,	-0.843794383413272290,	-0.843821215688469910,	
+-0.843848045854114330,	-0.843874873910138820,	-0.843901699856476010,	-0.843928523693058930,	-0.843955345419820650,	-0.843982165036694320,	-0.844008982543612230,	-0.844035797940507650,	
+-0.844062611227313520,	-0.844089422403963450,	-0.844116231470389280,	-0.844143038426524610,	-0.844169843272302270,	-0.844196646007655320,	-0.844223446632516690,	-0.844250245146819570,	
+-0.844277041550496770,	-0.844303835843481450,	-0.844330628025706460,	-0.844357418097104850,	-0.844384206057610330,	-0.844410991907154630,	-0.844437775645671570,	-0.844464557273094110,	
+-0.844491336789355620,	-0.844518114194388380,	-0.844544889488125890,	-0.844571662670501100,	-0.844598433741447160,	-0.844625202700897140,	-0.844651969548784190,	-0.844678734285041250,	
+-0.844705496909601390,	-0.844732257422397880,	-0.844759015823363770,	-0.844785772112432110,	-0.844812526289536400,	-0.844839278354609040,	-0.844866028307583390,	-0.844892776148393090,	
+-0.844919521876970500,	-0.844946265493249030,	-0.844973006997161940,	-0.844999746388642280,	-0.845026483667623340,	-0.845053218834038060,	-0.845079951887819810,	-0.845106682828901780,	
+-0.845133411657216890,	-0.845160138372698540,	-0.845186862975279780,	-0.845213585464894450,	-0.845240305841474580,	-0.845267024104954020,	-0.845293740255265820,	-0.845320454292343810,	
+-0.845347166216120160,	-0.845373876026528690,	-0.845400583723502350,	-0.845427289306974640,	-0.845453992776878720,	-0.845480694133147860,	-0.845507393375715230,	-0.845534090504514110,	
+-0.845560785519477780,	-0.845587478420539380,	-0.845614169207632880,	-0.845640857880690430,	-0.845667544439645870,	-0.845694228884432460,	-0.845720911214983940,	-0.845747591431232570,	
+-0.845774269533112300,	-0.845800945520556400,	-0.845827619393498150,	-0.845854291151870720,	-0.845880960795607710,	-0.845907628324642280,	-0.845934293738907720,	-0.845960957038337400,	
+-0.845987618222864720,	-0.846014277292423510,	-0.846040934246946040,	-0.846067589086366260,	-0.846094241810617540,	-0.846120892419633730,	-0.846147540913347210,	-0.846174187291691800,	
+-0.846200831554600910,	-0.846227473702007900,	-0.846254113733846290,	-0.846280751650049350,	-0.846307387450550560,	-0.846334021135283330,	-0.846360652704181040,	-0.846387282157177070,	
+-0.846413909494204920,	-0.846440534715198420,	-0.846467157820090190,	-0.846493778808814050,	-0.846520397681303830,	-0.846547014437492250,	-0.846573629077313150,	-0.846600241600699910,	
+-0.846626852007586140,	-0.846653460297905220,	-0.846680066471590660,	-0.846706670528575840,	-0.846733272468794370,	-0.846759872292179750,	-0.846786469998665470,	-0.846813065588185030,	
+-0.846839659060672380,	-0.846866250416060120,	-0.846892839654282190,	-0.846919426775272210,	-0.846946011778964110,	-0.846972594665290510,	-0.846999175434185460,	-0.847025754085582340,	
+-0.847052330619414980,	-0.847078905035616780,	-0.847105477334121230,	-0.847132047514862040,	-0.847158615577772720,	-0.847185181522786880,	-0.847211745349838120,	-0.847238307058860380,	
+-0.847264866649786510,	-0.847291424122550430,	-0.847317979477085760,	-0.847344532713326550,	-0.847371083831205630,	-0.847397632830657050,	-0.847424179711614320,	-0.847450724474011150,	
+-0.847477267117781150,	-0.847503807642857930,	-0.847530346049175320,	-0.847556882336666820,	-0.847583416505266030,	-0.847609948554906790,	-0.847636478485523040,	-0.847663006297047720,	
+-0.847689531989414880,	-0.847716055562558140,	-0.847742577016411760,	-0.847769096350908580,	-0.847795613565982540,	-0.847822128661567480,	-0.847848641637597100,	-0.847875152494005140,	
+-0.847901661230725300,	-0.847928167847691320,	-0.847954672344836790,	-0.847981174722095780,	-0.848007674979401660,	-0.848034173116688490,	-0.848060669133890220,	-0.848087163030939890,	
+-0.848113654807771680,	-0.848140144464319730,	-0.848166632000517010,	-0.848193117416297770,	-0.848219600711595630,	-0.848246081886344540,	-0.848272560940478200,	-0.848299037873930460,	
+-0.848325512686635140,	-0.848351985378526070,	-0.848378455949536980,	-0.848404924399601800,	-0.848431390728654260,	-0.848457854936628840,	-0.848484317023458170,	-0.848510776989076730,	
+-0.848537234833418360,	-0.848563690556417450,	-0.848590144158006820,	-0.848616595638120750,	-0.848643044996693190,	-0.848669492233658060,	-0.848695937348949210,	-0.848722380342500580,	
+-0.848748821214245890,	-0.848775259964119180,	-0.848801696592054290,	-0.848828131097985270,	-0.848854563481846290,	-0.848880993743570400,	-0.848907421883092090,	-0.848933847900345210,	
+-0.848960271795264230,	-0.848986693567782110,	-0.849013113217833130,	-0.849039530745351430,	-0.849065946150270980,	-0.849092359432525590,	-0.849118770592049320,	-0.849145179628776110,	
+-0.849171586542640020,	-0.849197991333574880,	-0.849224394001514840,	-0.849250794546394180,	-0.849277192968146080,	-0.849303589266705130,	-0.849329983442005050,	-0.849356375493980580,	
+-0.849382765422564630,	-0.849409153227691840,	-0.849435538909296130,	-0.849461922467311560,	-0.849488303901672180,	-0.849514683212312050,	-0.849541060399165220,	-0.849567435462165730,	
+-0.849593808401247650,	-0.849620179216345140,	-0.849646547907392140,	-0.849672914474323140,	-0.849699278917071420,	-0.849725641235571590,	-0.849752001429758040,	-0.849778359499564040,	
+-0.849804715444924200,	-0.849831069265772450,	-0.849857420962043200,	-0.849883770533670260,	-0.849910117980587910,	-0.849936463302730320,	-0.849962806500031530,	-0.849989147572425720,	
+-0.850015486519847040,	-0.850041823342229660,	-0.850068158039508190,	-0.850094490611615900,	-0.850120821058487300,	-0.850147149380056640,	-0.850173475576258660,	-0.850199799647026520,	
+-0.850226121592294830,	-0.850252441411997850,	-0.850278759106069760,	-0.850305074674444830,	-0.850331388117057110,	-0.850357699433840990,	-0.850384008624730630,	-0.850410315689660190,	
+-0.850436620628564070,	-0.850462923441376750,	-0.850489224128031740,	-0.850515522688463530,	-0.850541819122606620,	-0.850568113430395620,	-0.850594405611763920,	-0.850620695666646220,	
+-0.850646983594976700,	-0.850673269396689750,	-0.850699553071719630,	-0.850725834620000620,	-0.850752114041467000,	-0.850778391336053040,	-0.850804666503693240,	-0.850830939544321760,	
+-0.850857210457873330,	-0.850883479244281430,	-0.850909745903480790,	-0.850936010435405790,	-0.850962272839991370,	-0.850988533117170600,	-0.851014791266878620,	-0.851041047289049610,	
+-0.851067301183618060,	-0.851093552950518250,	-0.851119802589684450,	-0.851146050101051270,	-0.851172295484552870,	-0.851198538740123740,	-0.851224779867698290,	-0.851251018867210880,	
+-0.851277255738596470,	-0.851303490481788330,	-0.851329723096721500,	-0.851355953583330940,	-0.851382181941549910,	-0.851408408171313470,	-0.851434632272556000,	-0.851460854245211900,	
+-0.851487074089215760,	-0.851513291804501860,	-0.851539507391004700,	-0.851565720848658890,	-0.851591932177398700,	-0.851618141377158740,	-0.851644348447873400,	-0.851670553389477610,	
+-0.851696756201904990,	-0.851722956885090480,	-0.851749155438968560,	-0.851775351863474310,	-0.851801546158541090,	-0.851827738324104080,	-0.851853928360097770,	-0.851880116266456540,	
+-0.851906302043115020,	-0.851932485690007790,	-0.851958667207069360,	-0.851984846594234240,	-0.852011023851437010,	-0.852037198978612300,	-0.852063371975694930,	-0.852089542842618730,	
+-0.852115711579318650,	-0.852141878185729280,	-0.852168042661785700,	-0.852194205007421490,	-0.852220365222571830,	-0.852246523307171320,	-0.852272679261154460,	-0.852298833084455860,	
+-0.852324984777010130,	-0.852351134338751980,	-0.852377281769616020,	-0.852403427069536870,	-0.852429570238449120,	-0.852455711276287940,	-0.852481850182987060,	-0.852507986958481510,	
+-0.852534121602705920,	-0.852560254115595550,	-0.852586384497084130,	-0.852612512747106700,	-0.852638638865597990,	-0.852664762852492600,	-0.852690884707725470,	-0.852717004431231000,	
+-0.852743122022944110,	-0.852769237482799310,	-0.852795350810731550,	-0.852821462006675300,	-0.852847571070565410,	-0.852873678002337150,	-0.852899782801924130,	-0.852925885469261620,	
+-0.852951986004285010,	-0.852978084406927910,	-0.853004180677125580,	-0.853030274814812750,	-0.853056366819924250,	-0.853082456692394910,	-0.853108544432159440,	-0.853134630039152460,	
+-0.853160713513309020,	-0.853186794854563830,	-0.853212874062851510,	-0.853238951138107100,	-0.853265026080265780,	-0.853291098889261470,	-0.853317169565029340,	-0.853343238107504340,	
+-0.853369304516621630,	-0.853395368792315260,	-0.853421430934520500,	-0.853447490943172070,	-0.853473548818205030,	-0.853499604559553980,	-0.853525658167153980,	-0.853551709640939850,	
+-0.853577758980846420,	-0.853603806186808640,	-0.853629851258761340,	-0.853655894196639790,	-0.853681935000378140,	-0.853707973669911580,	-0.853734010205175140,	-0.853760044606104110,	
+-0.853786076872632530,	-0.853812107004695790,	-0.853838135002228720,	-0.853864160865166370,	-0.853890184593443570,	-0.853916206186995260,	-0.853942225645756500,	-0.853968242969662230,	
+-0.853994258158647270,	-0.854020271212646680,	-0.854046282131595840,	-0.854072290915428910,	-0.854098297564081180,	-0.854124302077487800,	-0.854150304455584040,	-0.854176304698304080,	
+-0.854202302805583400,	-0.854228298777356950,	-0.854254292613559670,	-0.854280284314126730,	-0.854306273878993160,	-0.854332261308093810,	-0.854358246601363720,	-0.854384229758738180,	
+-0.854410210780152000,	-0.854436189665540250,	-0.854462166414838520,	-0.854488141027980990,	-0.854514113504903030,	-0.854540083845540250,	-0.854566052049826830,	-0.854592018117698250,	
+-0.854617982049089560,	-0.854643943843936050,	-0.854669903502172530,	-0.854695861023734400,	-0.854721816408556600,	-0.854747769656574170,	-0.854773720767722400,	-0.854799669741936220,	
+-0.854825616579151020,	-0.854851561279302170,	-0.854877503842323860,	-0.854903444268151900,	-0.854929382556721350,	-0.854955318707967700,	-0.854981252721825350,	-0.855007184598229890,	
+-0.855033114337116480,	-0.855059041938420190,	-0.855084967402076400,	-0.855110890728020160,	-0.855136811916186730,	-0.855162730966511190,	-0.855188647878928900,	-0.855214562653374920,	
+-0.855240475289784970,	-0.855266385788093440,	-0.855292294148235930,	-0.855318200370147720,	-0.855344104453764410,	-0.855370006399020390,	-0.855395906205851380,	-0.855421803874192640,	
+-0.855447699403979360,	-0.855473592795146790,	-0.855499484047630320,	-0.855525373161365010,	-0.855551260136286350,	-0.855577144972329510,	-0.855603027669429860,	-0.855628908227523130,	
+-0.855654786646543600,	-0.855680662926427080,	-0.855706537067108970,	-0.855732409068524990,	-0.855758278930609410,	-0.855784146653298270,	-0.855810012236526640,	-0.855835875680230120,	
+-0.855861736984343760,	-0.855887596148803160,	-0.855913453173543500,	-0.855939308058500270,	-0.855965160803608740,	-0.855991011408804290,	-0.856016859874022430,	-0.856042706199198760,	
+-0.856068550384267880,	-0.856094392429165630,	-0.856120232333827950,	-0.856146070098189100,	-0.856171905722185160,	-0.856197739205751370,	-0.856223570548823250,	-0.856249399751336290,	
+-0.856275226813225760,	-0.856301051734427170,	-0.856326874514875990,	-0.856352695154507630,	-0.856378513653257460,	-0.856404330011061090,	-0.856430144227854240,	-0.856455956303571740,	
+-0.856481766238149200,	-0.856507574031522330,	-0.856533379683626970,	-0.856559183194397610,	-0.856584984563770410,	-0.856610783791680650,	-0.856636580878064050,	-0.856662375822855870,	
+-0.856688168625991840,	-0.856713959287407350,	-0.856739747807037990,	-0.856765534184819270,	-0.856791318420686680,	-0.856817100514576270,	-0.856842880466422650,	-0.856868658276161770,	
+-0.856894433943729330,	-0.856920207469061280,	-0.856945978852092230,	-0.856971748092758110,	-0.856997515190994760,	-0.857023280146737560,	-0.857049042959922240,	-0.857074803630484270,	
+-0.857100562158359280,	-0.857126318543482870,	-0.857152072785790640,	-0.857177824885218320,	-0.857203574841701840,	-0.857229322655175930,	-0.857255068325576740,	-0.857280811852839890,	
+-0.857306553236901410,	-0.857332292477696160,	-0.857358029575160160,	-0.857383764529229150,	-0.857409497339838620,	-0.857435228006924510,	-0.857460956530422200,	-0.857486682910267530,	
+-0.857512407146396090,	-0.857538129238743730,	-0.857563849187245930,	-0.857589566991839080,	-0.857615282652457790,	-0.857640996169038330,	-0.857666707541516420,	-0.857692416769828100,	
+-0.857718123853908330,	-0.857743828793693260,	-0.857769531589118620,	-0.857795232240120110,	-0.857820930746633570,	-0.857846627108594720,	-0.857872321325939160,	-0.857898013398602940,	
+-0.857923703326521680,	-0.857949391109631090,	-0.857975076747867100,	-0.858000760241165780,	-0.858026441589462170,	-0.858052120792692440,	-0.858077797850792410,	-0.858103472763698360,	
+-0.858129145531345230,	-0.858154816153669180,	-0.858180484630606030,	-0.858206150962091740,	-0.858231815148062020,	-0.858257477188452800,	-0.858283137083199920,	-0.858308794832239100,	
+-0.858334450435506380,	-0.858360103892937490,	-0.858385755204468800,	-0.858411404370035270,	-0.858437051389573270,	-0.858462696263018630,	-0.858488338990307630,	-0.858513979571375430,	
+-0.858539618006158190,	-0.858565254294591960,	-0.858590888436612580,	-0.858616520432155970,	-0.858642150281158090,	-0.858667777983554870,	-0.858693403539282140,	-0.858719026948275840,	
+-0.858744648210472140,	-0.858770267325807080,	-0.858795884294216050,	-0.858821499115635210,	-0.858847111790000730,	-0.858872722317248870,	-0.858898330697314690,	-0.858923936930134800,	
+-0.858949541015645020,	-0.858975142953781300,	-0.859000742744479910,	-0.859026340387676560,	-0.859051935883307300,	-0.859077529231308310,	-0.859103120431615410,	-0.859128709484164750,	
+-0.859154296388892740,	-0.859179881145734510,	-0.859205463754626700,	-0.859231044215505110,	-0.859256622528306370,	-0.859282198692965740,	-0.859307772709419490,	-0.859333344577603910,	
+-0.859358914297454810,	-0.859384481868908590,	-0.859410047291901070,	-0.859435610566368520,	-0.859461171692246890,	-0.859486730669472340,	-0.859512287497980920,	-0.859537842177708790,	
+-0.859563394708592550,	-0.859588945090567380,	-0.859614493323569760,	-0.859640039407535970,	-0.859665583342402620,	-0.859691125128104750,	-0.859716664764579090,	-0.859742202251761790,	
+-0.859767737589588910,	-0.859793270777996720,	-0.859818801816921390,	-0.859844330706299060,	-0.859869857446065920,	-0.859895382036158120,	-0.859920904476511820,	-0.859946424767063730,	
+-0.859971942907749140,	-0.859997458898504650,	-0.860022972739266530,	-0.860048484429971500,	-0.860073993970554730,	-0.860099501360953030,	-0.860125006601102580,	-0.860150509690939540,	
+-0.860176010630400280,	-0.860201509419420970,	-0.860227006057937890,	-0.860252500545887310,	-0.860277992883205500,	-0.860303483069828620,	-0.860328971105693620,	-0.860354456990735650,	
+-0.860379940724891550,	-0.860405422308097580,	-0.860430901740290580,	-0.860456379021405810,	-0.860481854151380120,	-0.860507327130149770,	-0.860532797957651140,	-0.860558266633820510,	
+-0.860583733158594160,	-0.860609197531908450,	-0.860634659753699900,	-0.860660119823904560,	-0.860685577742459020,	-0.860711033509299890,	-0.860736487124362790,	-0.860761938587584540,	
+-0.860787387898901300,	-0.860812835058250130,	-0.860838280065566400,	-0.860863722920786940,	-0.860889163623848150,	-0.860914602174686520,	-0.860940038573238420,	-0.860965472819440140,	
+-0.860990904913228160,	-0.861016334854538990,	-0.861041762643309010,	-0.861067188279474590,	-0.861092611762972140,	-0.861118033093738690,	-0.861143452271709630,	-0.861168869296822010,	
+-0.861194284169012670,	-0.861219696888217090,	-0.861245107454372330,	-0.861270515867414770,	-0.861295922127280900,	-0.861321326233907340,	-0.861346728187230350,	-0.861372127987186540,	
+-0.861397525633712520,	-0.861422921126744570,	-0.861448314466219390,	-0.861473705652073370,	-0.861499094684243570,	-0.861524481562665590,	-0.861549866287276480,	-0.861575248858012510,	
+-0.861600629274811070,	-0.861626007537607430,	-0.861651383646338860,	-0.861676757600941870,	-0.861702129401352930,	-0.861727499047508670,	-0.861752866539345690,	-0.861778231876800580,	
+-0.861803595059809750,	-0.861828956088310120,	-0.861854314962237970,	-0.861879671681530460,	-0.861905026246123420,	-0.861930378655953790,	-0.861955728910958170,	-0.861981077011073740,	
+-0.862006422956236080,	-0.862031766746382490,	-0.862057108381449330,	-0.862082447861373560,	-0.862107785186091550,	-0.862133120355540130,	-0.862158453369655910,	-0.862183784228375490,	
+-0.862209112931635600,	-0.862234439479373060,	-0.862259763871524810,	-0.862285086108026680,	-0.862310406188815830,	-0.862335724113828970,	-0.862361039883003280,	-0.862386353496274570,	
+-0.862411664953579900,	-0.862436974254856100,	-0.862462281400039890,	-0.862487586389067970,	-0.862512889221876970,	-0.862538189898403920,	-0.862563488418585320,	-0.862588784782358010,	
+-0.862614078989658690,	-0.862639371040424210,	-0.862664660934591710,	-0.862689948672097140,	-0.862715234252877770,	-0.862740517676870660,	-0.862765798944011840,	-0.862791078054238600,	
+-0.862816355007487550,	-0.862841629803695720,	-0.862866902442799730,	-0.862892172924736520,	-0.862917441249442810,	-0.862942707416855640,	-0.862967971426911620,	-0.862993233279547580,	
+-0.863018492974700570,	-0.863043750512307750,	-0.863069005892305170,	-0.863094259114630000,	-0.863119510179219170,	-0.863144759086010070,	-0.863170005834938640,	-0.863195250425942140,	
+-0.863220492858957520,	-0.863245733133921610,	-0.863270971250771460,	-0.863296207209443890,	-0.863321441009875730,	-0.863346672652004040,	-0.863371902135765650,	-0.863397129461097480,	
+-0.863422354627936930,	-0.863447577636220040,	-0.863472798485884210,	-0.863498017176866470,	-0.863523233709104000,	-0.863548448082533060,	-0.863573660297091040,	-0.863598870352714760,	
+-0.863624078249341400,	-0.863649283986907880,	-0.863674487565351030,	-0.863699688984608030,	-0.863724888244615910,	-0.863750085345311390,	-0.863775280286631750,	-0.863800473068514370,	
+-0.863825663690895310,	-0.863850852153712050,	-0.863876038456901750,	-0.863901222600401810,	-0.863926404584148270,	-0.863951584408078840,	-0.863976762072130370,	-0.864001937576240000,	
+-0.864027110920344790,	-0.864052282104381790,	-0.864077451128288150,	-0.864102617992000830,	-0.864127782695456980,	-0.864152945238593650,	-0.864178105621348000,	-0.864203263843657530,	
+-0.864228419905458400,	-0.864253573806688210,	-0.864278725547284580,	-0.864303875127183760,	-0.864329022546323160,	-0.864354167804640030,	-0.864379310902071430,	-0.864404451838554630,	
+-0.864429590614026690,	-0.864454727228424760,	-0.864479861681686000,	-0.864504993973747580,	-0.864530124104546660,	-0.864555252074020400,	-0.864580377882106510,	-0.864605501528741270,	
+-0.864630623013862290,	-0.864655742337406720,	-0.864680859499312170,	-0.864705974499515030,	-0.864731087337953010,	-0.864756198014563270,	-0.864781306529283090,	-0.864806412882049620,	
+-0.864831517072800040,	-0.864856619101471710,	-0.864881718968001810,	-0.864906816672327610,	-0.864931912214386480,	-0.864957005594115810,	-0.864982096811452330,	-0.865007185866333630,	
+-0.865032272758696870,	-0.865057357488479890,	-0.865082440055619180,	-0.865107520460052240,	-0.865132598701716550,	-0.865157674780549390,	-0.865182748696488040,	-0.865207820449469760,	
+-0.865232890039431930,	-0.865257957466311960,	-0.865283022730047090,	-0.865308085830574610,	-0.865333146767832350,	-0.865358205541756800,	-0.865383262152285780,	-0.865408316599356460,	
+-0.865433368882906890,	-0.865458419002873570,	-0.865483466959194090,	-0.865508512751805850,	-0.865533556380646440,	-0.865558597845653140,	-0.865583637146763340,	-0.865608674283914410,	
+-0.865633709257043860,	-0.865658742066088950,	-0.865683772710987290,	-0.865708801191676150,	-0.865733827508093470,	-0.865758851660175740,	-0.865783873647860800,	-0.865808893471086800,	
+-0.865833911129790020,	-0.865858926623908510,	-0.865883939953379640,	-0.865908951118140920,	-0.865933960118129840,	-0.865958966953283780,	-0.865983971623540460,	-0.866008974128837150,	
+-0.866033974469111350,	-0.866058972644300650,	-0.866083968654342560,	-0.866108962499174910,	-0.866133954178734400,	-0.866158943692959090,	-0.866183931041786370,	-0.866208916225154280,	
+-0.866233899242999540,	-0.866258880095259980,	-0.866283858781873200,	-0.866308835302776800,	-0.866333809657908290,	-0.866358781847205270,	-0.866383751870605230,	-0.866408719728045900,	
+-0.866433685419464750,	-0.866458648944799400,	-0.866483610303987790,	-0.866508569496966750,	-0.866533526523674320,	-0.866558481384048120,	-0.866583434078026070,	-0.866608384605545010,	
+-0.866633332966542990,	-0.866658279160957720,	-0.866683223188726700,	-0.866708165049787540,	-0.866733104744078050,	-0.866758042271535860,	-0.866782977632098440,	-0.866807910825703630,	
+-0.866832841852289040,	-0.866857770711792820,	-0.866882697404151690,	-0.866907621929303820,	-0.866932544287186910,	-0.866957464477739030,	-0.866982382500897100,	-0.867007298356599180,	
+-0.867032212044783090,	-0.867057123565386330,	-0.867082032918346960,	-0.867106940103602340,	-0.867131845121090430,	-0.867156747970748930,	-0.867181648652515570,	-0.867206547166328060,	
+-0.867231443512124110,	-0.867256337689842120,	-0.867281229699418790,	-0.867306119540792400,	-0.867331007213901110,	-0.867355892718681850,	-0.867380776055072910,	-0.867405657223011990,	
+-0.867430536222436930,	-0.867455413053285550,	-0.867480287715495680,	-0.867505160209005030,	-0.867530030533751550,	-0.867554898689672950,	-0.867579764676707050,	-0.867604628494791810,	
+-0.867629490143865480,	-0.867654349623864900,	-0.867679206934728440,	-0.867704062076393940,	-0.867728915048799790,	-0.867753765851882910,	-0.867778614485581690,	-0.867803460949833850,	
+-0.867828305244577320,	-0.867853147369750060,	-0.867877987325289980,	-0.867902825111134810,	-0.867927660727222720,	-0.867952494173491410,	-0.867977325449878820,	-0.868002154556323460,	
+-0.868026981492762250,	-0.868051806259133470,	-0.868076628855375290,	-0.868101449281425960,	-0.868126267537222550,	-0.868151083622703550,	-0.868175897537806770,	-0.868200709282470170,	
+-0.868225518856631910,	-0.868250326260229800,	-0.868275131493201900,	-0.868299934555486150,	-0.868324735447020600,	-0.868349534167743190,	-0.868374330717592400,	-0.868399125096505300,	
+-0.868423917304420480,	-0.868448707341275770,	-0.868473495207009780,	-0.868498280901559670,	-0.868523064424863710,	-0.868547845776860170,	-0.868572624957486990,	-0.868597401966682340,	
+-0.868622176804384140,	-0.868646949470530450,	-0.868671719965059430,	-0.868696488287909020,	-0.868721254439017490,	-0.868746018418322770,	-0.868770780225763480,	-0.868795539861276780,	
+-0.868820297324801260,	-0.868845052616275430,	-0.868869805735636550,	-0.868894556682823120,	-0.868919305457773290,	-0.868944052060425240,	-0.868968796490717010,	-0.868993538748586760,	
+-0.869018278833972760,	-0.869043016746813060,	-0.869067752487045710,	-0.869092486054609090,	-0.869117217449441150,	-0.869141946671480700,	-0.869166673720664920,	-0.869191398596932400,	
+-0.869216121300221410,	-0.869240841830470680,	-0.869265560187617250,	-0.869290276371599950,	-0.869314990382357040,	-0.869339702219826590,	-0.869364411883946860,	-0.869389119374656130,	
+-0.869413824691892660,	-0.869438527835594500,	-0.869463228805700150,	-0.869487927602147660,	-0.869512624224875850,	-0.869537318673822000,	-0.869562010948924820,	-0.869586701050122590,	
+-0.869611388977354130,	-0.869636074730556710,	-0.869660758309669160,	-0.869685439714629640,	-0.869710118945376530,	-0.869734796001848220,	-0.869759470883982870,	-0.869784143591718740,	
+-0.869808814124994330,	-0.869833482483747920,	-0.869858148667917770,	-0.869882812677442720,	-0.869907474512260140,	-0.869932134172308970,	-0.869956791657527370,	-0.869981446967854290,	
+-0.870006100103227100,	-0.870030751063584630,	-0.870055399848865370,	-0.870080046459007610,	-0.870104690893949710,	-0.870129333153630060,	-0.870153973237987040,	-0.870178611146959160,	
+-0.870203246880484780,	-0.870227880438502190,	-0.870252511820949980,	-0.870277141027766880,	-0.870301768058890480,	-0.870326392914259730,	-0.870351015593813450,	-0.870375636097489020,	
+-0.870400254425225730,	-0.870424870576961610,	-0.870449484552635380,	-0.870474096352185530,	-0.870498705975550350,	-0.870523313422668420,	-0.870547918693478140,	-0.870572521787918220,	
+-0.870597122705926820,	-0.870621721447442760,	-0.870646318012404770,	-0.870670912400750560,	-0.870695504612419070,	-0.870720094647348790,	-0.870744682505478760,	-0.870769268186746490,	
+-0.870793851691091140,	-0.870818433018451190,	-0.870843012168765030,	-0.870867589141971490,	-0.870892163938008830,	-0.870916736556815900,	-0.870941306998331060,	-0.870965875262492920,	
+-0.870990441349240090,	-0.871015005258511720,	-0.871039566990245320,	-0.871064126544379920,	-0.871088683920854370,	-0.871113239119607360,	-0.871137792140576960,	-0.871162342983702100,	
+-0.871186891648921270,	-0.871211438136173190,	-0.871235982445396570,	-0.871260524576530030,	-0.871285064529512270,	-0.871309602304281670,	-0.871334137900777070,	-0.871358671318937290,	
+-0.871383202558701160,	-0.871407731620006510,	-0.871432258502792710,	-0.871456783206998150,	-0.871481305732562110,	-0.871505826079422290,	-0.871530344247517960,	-0.871554860236787740,	
+-0.871579374047170450,	-0.871603885678604700,	-0.871628395131029190,	-0.871652902404382760,	-0.871677407498604010,	-0.871701910413631760,	-0.871726411149404750,	-0.871750909705862110,	
+-0.871775406082941800,	-0.871799900280582960,	-0.871824392298724330,	-0.871848882137305160,	-0.871873369796263400,	-0.871897855275538200,	-0.871922338575068400,	-0.871946819694792710,	
+-0.871971298634649950,	-0.871995775394579060,	-0.872020249974518660,	-0.872044722374407550,	-0.872069192594184690,	-0.872093660633788900,	-0.872118126493158900,	-0.872142590172234060,	
+-0.872167051670952320,	-0.872191510989252850,	-0.872215968127074690,	-0.872240423084357120,	-0.872264875861037960,	-0.872289326457056590,	-0.872313774872351950,	-0.872338221106862880,	
+-0.872362665160528180,	-0.872387107033286920,	-0.872411546725077810,	-0.872435984235839900,	-0.872460419565512010,	-0.872484852714032980,	-0.872509283681342400,	-0.872533712467378100,	
+-0.872558139072079460,	-0.872582563495385540,	-0.872606985737235720,	-0.872631405797567930,	-0.872655823676321660,	-0.872680239373435750,	-0.872704652888849240,	-0.872729064222501180,	
+-0.872753473374330400,	-0.872777880344276060,	-0.872802285132276870,	-0.872826687738271990,	-0.872851088162200470,	-0.872875486404001590,	-0.872899882463613610,	-0.872924276340975910,	
+-0.872948668036027550,	-0.872973057548707910,	-0.872997444878955140,	-0.873021830026708860,	-0.873046212991907990,	-0.873070593774491480,	-0.873094972374398590,	-0.873119348791568270,	
+-0.873143723025939570,	-0.873168095077451520,	-0.873192464946043300,	-0.873216832631653840,	-0.873241198134222740,	-0.873265561453688280,	-0.873289922589989830,	-0.873314281543066670,	
+-0.873338638312858180,	-0.873362992899302640,	-0.873387345302339630,	-0.873411695521908340,	-0.873436043557947790,	-0.873460389410397050,	-0.873484733079195390,	-0.873509074564281840,	
+-0.873533413865595690,	-0.873557750983075980,	-0.873582085916661870,	-0.873606418666292520,	-0.873630749231907640,	-0.873655077613445410,	-0.873679403810845520,	-0.873703727824047040,	
+-0.873728049652989670,	-0.873752369297611910,	-0.873776686757853030,	-0.873801002033652520,	-0.873825315124949540,	-0.873849626031683150,	-0.873873934753792820,	-0.873898241291217630,	
+-0.873922545643896820,	-0.873946847811769680,	-0.873971147794775360,	-0.873995445592853580,	-0.874019741205942840,	-0.874044034633982720,	-0.874068325876912410,	-0.874092614934671830,	
+-0.874116901807199250,	-0.874141186494434510,	-0.874165468996316640,	-0.874189749312785260,	-0.874214027443779410,	-0.874238303389238470,	-0.874262577149101830,	-0.874286848723308750,	
+-0.874311118111798510,	-0.874335385314510490,	-0.874359650331384410,	-0.874383913162358860,	-0.874408173807373460,	-0.874432432266367580,	-0.874456688539281160,	-0.874480942626052580,	
+-0.874505194526621570,	-0.874529444240927600,	-0.874553691768910070,	-0.874577937110508240,	-0.874602180265661610,	-0.874626421234309450,	-0.874650660016391360,	-0.874674896611846500,	
+-0.874699131020614470,	-0.874723363242635000,	-0.874747593277846790,	-0.874771821126189560,	-0.874796046787602700,	-0.874820270262026240,	-0.874844491549398580,	-0.874868710649659760,	
+-0.874892927562749170,	-0.874917142288606290,	-0.874941354827170500,	-0.874965565178381310,	-0.874989773342178200,	-0.875013979318500670,	-0.875038183107288200,	-0.875062384708480300,	
+-0.875086584122016450,	-0.875110781347836600,	-0.875134976385879230,	-0.875159169236084500,	-0.875183359898392350,	-0.875207548372741280,	-0.875231734659071340,	-0.875255918757322120,	
+-0.875280100667433000,	-0.875304280389343710,	-0.875328457922993740,	-0.875352633268322580,	-0.875376806425269830,	-0.875400977393775090,	-0.875425146173777870,	-0.875449312765217760,	
+-0.875473477168034920,	-0.875497639382167850,	-0.875521799407556700,	-0.875545957244141080,	-0.875570112891861040,	-0.875594266350655180,	-0.875618417620463770,	-0.875642566701226200,	
+-0.875666713592882280,	-0.875690858295371630,	-0.875715000808633740,	-0.875739141132608420,	-0.875763279267235180,	-0.875787415212453730,	-0.875811548968203790,	-0.875835680534425400,	
+-0.875859809911057390,	-0.875883937098039800,	-0.875908062095312470,	-0.875932184902815330,	-0.875956305520487310,	-0.875980423948268580,	-0.876004540186098750,	-0.876028654233917630,	
+-0.876052766091664830,	-0.876076875759280060,	-0.876100983236703160,	-0.876125088523873720,	-0.876149191620731680,	-0.876173292527216650,	-0.876197391243268680,	-0.876221487768826910,	
+-0.876245582103831410,	-0.876269674248222000,	-0.876293764201938830,	-0.876317851964920740,	-0.876341937537108100,	-0.876366020918440510,	-0.876390102108857930,	-0.876414181108300160,	
+-0.876438257916706820,	-0.876462332534017950,	-0.876486404960173160,	-0.876510475195112380,	-0.876534543238775440,	-0.876558609091102170,	-0.876582672752032720,	-0.876606734221506260,	
+-0.876630793499462820,	-0.876654850585842920,	-0.876678905480585470,	-0.876702958183630750,	-0.876727008694918710,	-0.876751057014389050,	-0.876775103141981700,	-0.876799147077636730,	
+-0.876823188821293730,	-0.876847228372892860,	-0.876871265732373950,	-0.876895300899676820,	-0.876919333874741520,	-0.876943364657508220,	-0.876967393247916060,	-0.876991419645905550,	
+-0.877015443851416390,	-0.877039465864389080,	-0.877063485684762670,	-0.877087503312477530,	-0.877111518747473620,	-0.877135531989690960,	-0.877159543039069400,	-0.877183551895549090,	
+-0.877207558559069840,	-0.877231563029571610,	-0.877255565306994560,	-0.877279565391278600,	-0.877303563282364140,	-0.877327558980190440,	-0.877351552484697760,	-0.877375543795826160,	
+-0.877399532913516130,	-0.877423519837706940,	-0.877447504568338870,	-0.877471487105352050,	-0.877495467448686560,	-0.877519445598282320,	-0.877543421554079490,	-0.877567395316018130,	
+-0.877591366884038270,	-0.877615336258079970,	-0.877639303438083380,	-0.877663268423989010,	-0.877687231215735890,	-0.877711191813264850,	-0.877735150216515710,	-0.877759106425429200,	
+-0.877783060439944360,	-0.877807012260002020,	-0.877830961885542100,	-0.877854909316504780,	-0.877878854552830210,	-0.877902797594458440,	-0.877926738441329730,	-0.877950677093384150,	
+-0.877974613550561940,	-0.877998547812803070,	-0.878022479880047890,	-0.878046409752237020,	-0.878070337429309620,	-0.878094262911206400,	-0.878118186197867970,	-0.878142107289233590,	
+-0.878166026185243980,	-0.878189942885839290,	-0.878213857390959700,	-0.878237769700545570,	-0.878261679814536960,	-0.878285587732874130,	-0.878309493455497360,	-0.878333396982346800,	
+-0.878357298313362840,	-0.878381197448485530,	-0.878405094387655790,	-0.878428989130812800,	-0.878452881677897370,	-0.878476772028849660,	-0.878500660183610500,	-0.878524546142119280,	
+-0.878548429904316700,	-0.878572311470143030,	-0.878596190839538550,	-0.878620068012443630,	-0.878643942988798550,	-0.878667815768543580,	-0.878691686351619090,	-0.878715554737965370,	
+-0.878739420927522770,	-0.878763284920232150,	-0.878787146716032750,	-0.878811006314865530,	-0.878834863716670740,	-0.878858718921389340,	-0.878882571928960580,	-0.878906422739325510,	
+-0.878930271352424300,	-0.878954117768197430,	-0.878977961986585290,	-0.879001804007528250,	-0.879025643830966710,	-0.879049481456841030,	-0.879073316885091600,	-0.879097150115658920,	
+-0.879120981148483800,	-0.879144809983505860,	-0.879168636620665800,	-0.879192461059904230,	-0.879216283301161860,	-0.879240103344378410,	-0.879263921189494590,	-0.879287736836451120,	
+-0.879311550285188260,	-0.879335361535646510,	-0.879359170587766360,	-0.879382977441488300,	-0.879406782096752710,	-0.879430584553500210,	-0.879454384811671260,	-0.879478182871206380,	
+-0.879501978732046500,	-0.879525772394131210,	-0.879549563857401460,	-0.879573353121798180,	-0.879597140187261210,	-0.879620925053731350,	-0.879644707721149110,	-0.879668488189455200,	
+-0.879692266458590000,	-0.879716042528494110,	-0.879739816399108250,	-0.879763588070372690,	-0.879787357542228250,	-0.879811124814615430,	-0.879834889887474710,	-0.879858652760747260,	
+-0.879882413434372790,	-0.879906171908292230,	-0.879929928182446200,	-0.879953682256775840,	-0.879977434131220870,	-0.880001183805722230,	-0.880024931280220750,	-0.880048676554656790,	
+-0.880072419628971310,	-0.880096160503104690,	-0.880119899176997620,	-0.880143635650590840,	-0.880167369923825050,	-0.880191101996640750,	-0.880214831868979090,	-0.880238559540780010,	
+-0.880262285011984450,	-0.880286008282533230,	-0.880309729352367400,	-0.880333448221426900,	-0.880357164889652650,	-0.880380879356985610,	-0.880404591623366260,	-0.880428301688735540,	
+-0.880452009553034040,	-0.880475715216202490,	-0.880499418678181600,	-0.880523119938912190,	-0.880546818998335090,	-0.880570515856391230,	-0.880594210513020670,	-0.880617902968164670,	
+-0.880641593221763830,	-0.880665281273759540,	-0.880688967124091500,	-0.880712650772701110,	-0.880736332219529070,	-0.880760011464516210,	-0.880783688507603360,	-0.880807363348731220,	
+-0.880831035987840630,	-0.880854706424872510,	-0.880878374659767700,	-0.880902040692466910,	-0.880925704522910970,	-0.880949366151041250,	-0.880973025576797570,	-0.880996682800121440,	
+-0.881020337820954010,	-0.881043990639235330,	-0.881067641254906660,	-0.881091289667908840,	-0.881114935878182900,	-0.881138579885669570,	-0.881162221690309780,	-0.881185861292044350,	
+-0.881209498690814330,	-0.881233133886560660,	-0.881256766879224050,	-0.881280397668745550,	-0.881304026255066430,	-0.881327652638126960,	-0.881351276817868290,	-0.881374898794231370,	
+-0.881398518567157670,	-0.881422136136587260,	-0.881445751502461520,	-0.881469364664721370,	-0.881492975623307750,	-0.881516584378161830,	-0.881540190929224310,	-0.881563795276436470,	
+-0.881587397419739020,	-0.881610997359073110,	-0.881634595094379690,	-0.881658190625600250,	-0.881681783952674820,	-0.881705375075545030,	-0.881728963994151790,	-0.881752550708436500,	
+-0.881776135218339530,	-0.881799717523802150,	-0.881823297624765410,	-0.881846875521170470,	-0.881870451212958370,	-0.881894024700070170,	-0.881917595982446900,	-0.881941165060029620,	
+-0.881964731932759370,	-0.881988296600577320,	-0.882011859063425050,	-0.882035419321242630,	-0.882058977373971650,	-0.882082533221553170,	-0.882106086863928880,	-0.882129638301038970,	
+-0.882153187532824900,	-0.882176734559227850,	-0.882200279380188970,	-0.882223821995649420,	-0.882247362405550350,	-0.882270900609832820,	-0.882294436608438090,	-0.882317970401307220,	
+-0.882341501988381460,	-0.882365031369601870,	-0.882388558544910160,	-0.882412083514246710,	-0.882435606277552910,	-0.882459126834770680,	-0.882482645185840080,	-0.882506161330702920,	
+-0.882529675269300370,	-0.882553187001573590,	-0.882576696527463840,	-0.882600203846912400,	-0.882623708959860420,	-0.882647211866249170,	-0.882670712566019920,	-0.882694211059113830,	
+-0.882717707345472280,	-0.882741201425036870,	-0.882764693297747980,	-0.882788182963547440,	-0.882811670422376400,	-0.882835155674176590,	-0.882858638718888480,	-0.882882119556453790,	
+-0.882905598186813800,	-0.882929074609909770,	-0.882952548825683080,	-0.882976020834075000,	-0.882999490635026920,	-0.883022958228480090,	-0.883046423614375910,	-0.883069886792655630,	
+-0.883093347763260980,	-0.883116806526132670,	-0.883140263081212300,	-0.883163717428441240,	-0.883187169567761330,	-0.883210619499113060,	-0.883234067222438250,	-0.883257512737678270,	
+-0.883280956044774520,	-0.883304397143668370,	-0.883327836034301210,	-0.883351272716614510,	-0.883374707190549560,	-0.883398139456047950,	-0.883421569513050840,	-0.883444997361500390,	
+-0.883468423001336880,	-0.883491846432502450,	-0.883515267654938260,	-0.883538686668586480,	-0.883562103473387370,	-0.883585518069283200,	-0.883608930456215140,	-0.883632340634124770,	
+-0.883655748602953480,	-0.883679154362642880,	-0.883702557913134460,	-0.883725959254369590,	-0.883749358386289760,	-0.883772755308836590,	-0.883796150021951550,	-0.883819542525576480,	
+-0.883842932819652210,	-0.883866320904120650,	-0.883889706778923650,	-0.883913090444001900,	-0.883936471899297470,	-0.883959851144751840,	-0.883983228180306720,	-0.884006603005903390,	
+-0.884029975621483550,	-0.884053346026988820,	-0.884076714222360780,	-0.884100080207540830,	-0.884123443982470780,	-0.884146805547092020,	-0.884170164901346810,	-0.884193522045175650,	
+-0.884216876978520690,	-0.884240229701323540,	-0.884263580213526360,	-0.884286928515069630,	-0.884310274605895730,	-0.884333618485946050,	-0.884356960155162410,	-0.884380299613486300,	
+-0.884403636860859430,	-0.884426971897223520,	-0.884450304722520060,	-0.884473635336690990,	-0.884496963739677790,	-0.884520289931422620,	-0.884543613911866200,	-0.884566935680950790,	
+-0.884590255238618120,	-0.884613572584810210,	-0.884636887719467910,	-0.884660200642533370,	-0.884683511353948400,	-0.884706819853654510,	-0.884730126141593740,	-0.884753430217707580,	
+-0.884776732081937860,	-0.884800031734226280,	-0.884823329174514670,	-0.884846624402744750,	-0.884869917418858560,	-0.884893208222797270,	-0.884916496814502910,	-0.884939783193917420,	
+-0.884963067360982740,	-0.884986349315640020,	-0.885009629057831540,	-0.885032906587498890,	-0.885056181904583910,	-0.885079455009028630,	-0.885102725900774550,	-0.885125994579763820,	
+-0.885149261045937940,	-0.885172525299238950,	-0.885195787339608800,	-0.885219047166988960,	-0.885242304781322040,	-0.885265560182548980,	-0.885288813370611940,	-0.885312064345453290,	
+-0.885335313107014080,	-0.885358559655236580,	-0.885381803990062720,	-0.885405046111434340,	-0.885428286019293350,	-0.885451523713581600,	-0.885474759194241010,	-0.885497992461213630,	
+-0.885521223514441180,	-0.885544452353865700,	-0.885567678979429120,	-0.885590903391073710,	-0.885614125588740640,	-0.885637345572372280,	-0.885660563341910570,	-0.885683778897297880,	
+-0.885706992238475270,	-0.885730203365385220,	-0.885753412277969670,	-0.885776618976170550,	-0.885799823459929910,	-0.885823025729189690,	-0.885846225783891830,	-0.885869423623978580,	
+-0.885892619249391670,	-0.885915812660073240,	-0.885939003855965580,	-0.885962192837010170,	-0.885985379603149160,	-0.886008564154324720,	-0.886031746490479330,	-0.886054926611554160,	
+-0.886078104517491690,	-0.886101280208233870,	-0.886124453683722950,	-0.886147624943900760,	-0.886170793988709680,	-0.886193960818091430,	-0.886217125431988380,	-0.886240287830342590,	
+-0.886263448013095980,	-0.886286605980191160,	-0.886309761731569500,	-0.886332915267173390,	-0.886356066586944990,	-0.886379215690826780,	-0.886402362578760150,	-0.886425507250687580,	
+-0.886448649706551350,	-0.886471789946293390,	-0.886494927969856070,	-0.886518063777181340,	-0.886541197368211460,	-0.886564328742888600,	-0.886587457901155010,	-0.886610584842952630,	
+-0.886633709568224290,	-0.886656832076911150,	-0.886679952368956030,	-0.886703070444301080,	-0.886726186302888800,	-0.886749299944660560,	-0.886772411369559200,	-0.886795520577526750,	
+-0.886818627568505490,	-0.886841732342437680,	-0.886864834899265600,	-0.886887935238931390,	-0.886911033361377330,	-0.886934129266545690,	-0.886957222954378730,	-0.886980314424818620,	
+-0.887003403677808280,	-0.887026490713288980,	-0.887049575531203450,	-0.887072658131493940,	-0.887095738514103170,	-0.887118816678972740,	-0.887141892626045260,	-0.887164966355262980,	
+-0.887188037866568300,	-0.887211107159903590,	-0.887234174235211000,	-0.887257239092433040,	-0.887280301731512070,	-0.887303362152390250,	-0.887326420355009970,	-0.887349476339314160,	
+-0.887372530105244190,	-0.887395581652742900,	-0.887418630981752670,	-0.887441678092216300,	-0.887464722984075300,	-0.887487765657272500,	-0.887510806111750260,	-0.887533844347450970,	
+-0.887556880364317120,	-0.887579914162291090,	-0.887602945741315260,	-0.887625975101332010,	-0.887649002242283940,	-0.887672027164113310,	-0.887695049866762950,	-0.887718070350174690,	
+-0.887741088614291130,	-0.887764104659054860,	-0.887787118484408830,	-0.887810130090294520,	-0.887833139476654990,	-0.887856146643432490,	-0.887879151590569630,	-0.887902154318008900,	
+-0.887925154825692900,	-0.887948153113563900,	-0.887971149181564500,	-0.887994143029637310,	-0.888017134657724690,	-0.888040124065769710,	-0.888063111253713950,	-0.888086096221500480,	
+-0.888109078969071650,	-0.888132059496370640,	-0.888155037803339040,	-0.888178013889919900,	-0.888200987756055600,	-0.888223959401688970,	-0.888246928826762370,	-0.888269896031218420,	
+-0.888292861014999820,	-0.888315823778048960,	-0.888338784320308660,	-0.888361742641721300,	-0.888384698742229580,	-0.888407652621776570,	-0.888430604280304070,	-0.888453553717754920,	
+-0.888476500934072040,	-0.888499445929198160,	-0.888522388703075430,	-0.888545329255646550,	-0.888568267586854480,	-0.888591203696641680,	-0.888614137584950890,	-0.888637069251724810,	
+-0.888659998696905930,	-0.888682925920437180,	-0.888705850922261060,	-0.888728773702320280,	-0.888751694260558000,	-0.888774612596916150,	-0.888797528711337660,	-0.888820442603765470,	
+-0.888843354274142410,	-0.888866263722410730,	-0.888889170948513270,	-0.888912075952392970,	-0.888934978733992410,	-0.888957879293254430,	-0.888980777630121730,	-0.889003673744537150,	
+-0.889026567636443280,	-0.889049459305783160,	-0.889072348752499190,	-0.889095235976534950,	-0.889118120977832050,	-0.889141003756333980,	-0.889163884311983340,	-0.889186762644723410,	
+-0.889209638754496100,	-0.889232512641244700,	-0.889255384304912130,	-0.889278253745441010,	-0.889301120962774250,	-0.889323985956854690,	-0.889346848727625260,	-0.889369709275028670,	
+-0.889392567599007760,	-0.889415423699505440,	-0.889438277576464990,	-0.889461129229828450,	-0.889483978659538990,	-0.889506825865539750,	-0.889529670847773680,	-0.889552513606183150,	
+-0.889575354140711320,	-0.889598192451301010,	-0.889621028537895380,	-0.889643862400437020,	-0.889666694038869110,	-0.889689523453134460,	-0.889712350643175890,	-0.889735175608936560,	
+-0.889757998350359290,	-0.889780818867386910,	-0.889803637159963020,	-0.889826453228029560,	-0.889849267071530000,	-0.889872078690407630,	-0.889894888084604710,	-0.889917695254064610,	
+-0.889940500198730170,	-0.889963302918544530,	-0.889986103413450640,	-0.890008901683391530,	-0.890031697728310140,	-0.890054491548149420,	-0.890077283142852500,	-0.890100072512362450,	
+-0.890122859656622190,	-0.890145644575575210,	-0.890168427269163680,	-0.890191207737331070,	-0.890213985980020440,	-0.890236761997175270,	-0.890259535788737730,	-0.890282307354651410,	
+-0.890305076694859370,	-0.890327843809304520,	-0.890350608697930150,	-0.890373371360679290,	-0.890396131797494880,	-0.890418890008320310,	-0.890441645993098390,	-0.890464399751772380,	
+-0.890487151284285790,	-0.890509900590580880,	-0.890532647670601250,	-0.890555392524289950,	-0.890578135151590680,	-0.890600875552445600,	-0.890623613726798320,	-0.890646349674592000,	
+-0.890669083395769780,	-0.890691814890274940,	-0.890714544158050510,	-0.890737271199039780,	-0.890759996013185780,	-0.890782718600431900,	-0.890805438960721170,	-0.890828157093997210,	
+-0.890850873000202490,	-0.890873586679280520,	-0.890896298131174660,	-0.890919007355828410,	-0.890941714353184370,	-0.890964419123185910,	-0.890987121665776430,	-0.891009821980899170,	
+-0.891032520068497310,	-0.891055215928514220,	-0.891077909560893060,	-0.891100600965577080,	-0.891123290142509570,	-0.891145977091633900,	-0.891168661812893340,	-0.891191344306231480,	
+-0.891214024571590820,	-0.891236702608915190,	-0.891259378418148170,	-0.891282051999232270,	-0.891304723352111190,	-0.891327392476728430,	-0.891350059373027140,	-0.891372724040950580,	
+-0.891395386480442360,	-0.891418046691445640,	-0.891440704673903790,	-0.891463360427760200,	-0.891486013952958230,	-0.891508665249441170,	-0.891531314317152820,	-0.891553961156035800,	
+-0.891576605766033920,	-0.891599248147090570,	-0.891621888299149460,	-0.891644526222153180,	-0.891667161916045670,	-0.891689795380770090,	-0.891712426616270150,	-0.891735055622489230,	
+-0.891757682399370480,	-0.891780306946857610,	-0.891802929264894020,	-0.891825549353423060,	-0.891848167212388240,	-0.891870782841733380,	-0.891893396241401180,	-0.891916007411335480,	
+-0.891938616351479750,	-0.891961223061777940,	-0.891983827542172650,	-0.892006429792607800,	-0.892029029813026790,	-0.892051627603373310,	-0.892074223163590750,	-0.892096816493622600,	
+-0.892119407593412350,	-0.892141996462903710,	-0.892164583102039940,	-0.892187167510764770,	-0.892209749689022110,	-0.892232329636754700,	-0.892254907353906450,	-0.892277482840420850,	
+-0.892300056096241970,	-0.892322627121312610,	-0.892345195915576710,	-0.892367762478977760,	-0.892390326811459360,	-0.892412888912965220,	-0.892435448783438830,	-0.892458006422823800,	
+-0.892480561831063830,	-0.892503115008102420,	-0.892525665953883160,	-0.892548214668349770,	-0.892570761151446290,	-0.892593305403115430,	-0.892615847423301360,	-0.892638387211948100,	
+-0.892660924768998390,	-0.892683460094396360,	-0.892705993188085740,	-0.892728524050010130,	-0.892751052680113230,	-0.892773579078338650,	-0.892796103244630210,	-0.892818625178931400,	
+-0.892841144881186160,	-0.892863662351337960,	-0.892886177589330640,	-0.892908690595108250,	-0.892931201368613700,	-0.892953709909791170,	-0.892976216218584470,	-0.892998720294937540,	
+-0.893021222138793420,	-0.893043721750096160,	-0.893066219128789700,	-0.893088714274817730,	-0.893111207188123870,	-0.893133697868652040,	-0.893156186316345970,	-0.893178672531149460,	
+-0.893201156513006240,	-0.893223638261860130,	-0.893246117777655280,	-0.893268595060334740,	-0.893291070109842770,	-0.893313542926123080,	-0.893336013509119950,	-0.893358481858776420,	
+-0.893380947975036640,	-0.893403411857844550,	-0.893425873507143860,	-0.893448332922878510,	-0.893470790104992420,	-0.893493245053429200,	-0.893515697768133000,	-0.893538148249047430,	
+-0.893560596496116630,	-0.893583042509284660,	-0.893605486288494680,	-0.893627927833690940,	-0.893650367144817490,	-0.893672804221818500,	-0.893695239064636990,	-0.893717671673217470,	
+-0.893740102047503760,	-0.893762530187439790,	-0.893784956092969480,	-0.893807379764036900,	-0.893829801200585750,	-0.893852220402560070,	-0.893874637369903910,	-0.893897052102561100,	
+-0.893919464600475780,	-0.893941874863592110,	-0.893964282891853370,	-0.893986688685203920,	-0.894009092243588040,	-0.894031493566949220,	-0.894053892655231500,	-0.894076289508379140,	
+-0.894098684126336090,	-0.894121076509046260,	-0.894143466656453720,	-0.894165854568502620,	-0.894188240245136770,	-0.894210623686300440,	-0.894233004891937470,	-0.894255383861991990,	
+-0.894277760596408400,	-0.894300135095130070,	-0.894322507358101480,	-0.894344877385266470,	-0.894367245176569740,	-0.894389610731954550,	-0.894411974051365300,	-0.894434335134746130,	
+-0.894456693982041080,	-0.894479050593194210,	-0.894501404968149890,	-0.894523757106851950,	-0.894546107009244640,	-0.894568454675272130,	-0.894590800104878350,	-0.894613143298008120,	
+-0.894635484254604480,	-0.894657822974612270,	-0.894680159457975410,	-0.894702493704638610,	-0.894724825714545150,	-0.894747155487639610,	-0.894769483023866160,	-0.894791808323169070,	
+-0.894814131385492370,	-0.894836452210780450,	-0.894858770798977350,	-0.894881087150027340,	-0.894903401263874580,	-0.894925713140463320,	-0.894948022779738170,	-0.894970330181642630,	
+-0.894992635346121170,	-0.895014938273118180,	-0.895037238962578250,	-0.895059537414444770,	-0.895081833628662450,	-0.895104127605175660,	-0.895126419343928450,	-0.895148708844865190,	
+-0.895170996107930160,	-0.895193281133067730,	-0.895215563920222060,	-0.895237844469337410,	-0.895260122780358160,	-0.895282398853228690,	-0.895304672687893490,	-0.895326944284296270,	
+-0.895349213642381740,	-0.895371480762094610,	-0.895393745643378260,	-0.895416008286177620,	-0.895438268690436970,	-0.895460526856100560,	-0.895482782783112890,	-0.895505036471418210,	
+-0.895527287920961030,	-0.895549537131685610,	-0.895571784103536330,	-0.895594028836457560,	-0.895616271330393790,	-0.895638511585289730,	-0.895660749601088880,	-0.895682985377736270,	
+-0.895705218915176180,	-0.895727450213353430,	-0.895749679272211610,	-0.895771906091695660,	-0.895794130671749960,	-0.895816353012318880,	-0.895838573113346910,	-0.895860790974778550,	
+-0.895883006596558170,	-0.895905219978630370,	-0.895927431120939420,	-0.895949640023429920,	-0.895971846686046680,	-0.895994051108733540,	-0.896016253291435190,	-0.896038453234096140,	
+-0.896060650936661430,	-0.896082846399074760,	-0.896105039621280850,	-0.896127230603224410,	-0.896149419344849930,	-0.896171605846101890,	-0.896193790106924790,	-0.896215972127263230,	
+-0.896238151907061690,	-0.896260329446264880,	-0.896282504744817190,	-0.896304677802663540,	-0.896326848619747980,	-0.896349017196015230,	-0.896371183531409880,	-0.896393347625876970,	
+-0.896415509479360330,	-0.896437669091804890,	-0.896459826463155360,	-0.896481981593356240,	-0.896504134482352110,	-0.896526285130087700,	-0.896548433536507480,	-0.896570579701556290,	
+-0.896592723625178610,	-0.896614865307319150,	-0.896637004747922410,	-0.896659141946933640,	-0.896681276904296660,	-0.896703409619956430,	-0.896725540093858080,	-0.896747668325945550,	
+-0.896769794316163770,	-0.896791918064457460,	-0.896814039570771440,	-0.896836158835050300,	-0.896858275857238760,	-0.896880390637281640,	-0.896902503175123430,	-0.896924613470708950,	
+-0.896946721523982910,	-0.896968827334890140,	-0.896990930903375670,	-0.897013032229383560,	-0.897035131312858720,	-0.897057228153746110,	-0.897079322751990870,	-0.897101415107536940,	
+-0.897123505220329460,	-0.897145593090313160,	-0.897167678717432860,	-0.897189762101633480,	-0.897211843242859630,	-0.897233922141056130,	-0.897255998796167910,	-0.897278073208139570,	
+-0.897300145376916160,	-0.897322215302442720,	-0.897344282984663400,	-0.897366348423523360,	-0.897388411618967430,	-0.897410472570940860,	-0.897432531279387710,	-0.897454587744253240,	
+-0.897476641965482380,	-0.897498693943019840,	-0.897520743676810560,	-0.897542791166799470,	-0.897564836412931280,	-0.897586879415151140,	-0.897608920173403770,	-0.897630958687634100,	
+-0.897652994957787390,	-0.897675028983807800,	-0.897697060765640600,	-0.897719090303230830,	-0.897741117596523750,	-0.897763142645463420,	-0.897785165449995200,	-0.897807186010064150,	
+-0.897829204325615080,	-0.897851220396593040,	-0.897873234222942850,	-0.897895245804609670,	-0.897917255141538420,	-0.897939262233673930,	-0.897961267080961360,	-0.897983269683345520,	
+-0.898005270040772020,	-0.898027268153184900,	-0.898049264020529540,	-0.898071257642751530,	-0.898093249019794930,	-0.898115238151605210,	-0.898137225038127430,	-0.898159209679306510,	
+-0.898181192075087620,	-0.898203172225415790,	-0.898225150130235960,	-0.898247125789493280,	-0.898269099203132800,	-0.898291070371099560,	-0.898313039293338610,	-0.898335005969795540,	
+-0.898356970400414510,	-0.898378932585141010,	-0.898400892523920300,	-0.898422850216697650,	-0.898444805663417450,	-0.898466758864025380,	-0.898488709818466290,	-0.898510658526685440,	
+-0.898532604988627970,	-0.898554549204238940,	-0.898576491173463610,	-0.898598430896247020,	-0.898620368372534340,	-0.898642303602270820,	-0.898664236585401840,	-0.898686167321871900,	
+-0.898708095811626580,	-0.898730022054610940,	-0.898751946050770690,	-0.898773867800050200,	-0.898795787302395070,	-0.898817704557750450,	-0.898839619566061510,	-0.898861532327273500,	
+-0.898883442841331810,	-0.898905351108181370,	-0.898927257127767660,	-0.898949160900035740,	-0.898971062424930860,	-0.898992961702398840,	-0.899014858732383960,	-0.899036753514831920,	
+-0.899058646049687990,	-0.899080536336897880,	-0.899102424376406080,	-0.899124310168158080,	-0.899146193712099470,	-0.899168075008175300,	-0.899189954056330840,	-0.899211830856511680,	
+-0.899233705408662880,	-0.899255577712729790,	-0.899277447768657700,	-0.899299315576392090,	-0.899321181135878560,	-0.899343044447061590,	-0.899364905509887120,	-0.899386764324300310,	
+-0.899408620890247090,	-0.899430475207671830,	-0.899452327276520470,	-0.899474177096738160,	-0.899496024668270500,	-0.899517869991062760,	-0.899539713065060420,	-0.899561553890208640,	
+-0.899583392466453140,	-0.899605228793739050,	-0.899627062872012000,	-0.899648894701217120,	-0.899670724281300570,	-0.899692551612206740,	-0.899714376693881430,	-0.899736199526270370,	
+-0.899758020109319050,	-0.899779838442972380,	-0.899801654527176090,	-0.899823468361875660,	-0.899845279947016570,	-0.899867089282544220,	-0.899888896368404190,	-0.899910701204541970,	
+-0.899932503790902950,	-0.899954304127432710,	-0.899976102214076650,	-0.899997898050780790,	-0.900019691637489740,	-0.900041482974149430,	-0.900063272060705470,	-0.900085058897103660,	
+-0.900106843483288950,	-0.900128625819207050,	-0.900150405904803550,	-0.900172183740024060,	-0.900193959324814160,	-0.900215732659119250,	-0.900237503742885140,	-0.900259272576057200,	
+-0.900281039158581040,	-0.900302803490402370,	-0.900324565571467010,	-0.900346325401719880,	-0.900368082981106930,	-0.900389838309573750,	-0.900411591387066500,	-0.900433342213529660,	
+-0.900455090788909620,	-0.900476837113151850,	-0.900498581186201960,	-0.900520323008005550,	-0.900542062578508440,	-0.900563799897656110,	-0.900585534965394290,	-0.900607267781668660,	
+-0.900628998346424850,	-0.900650726659608880,	-0.900672452721165810,	-0.900694176531041560,	-0.900715898089181840,	-0.900737617395532820,	-0.900759334450039310,	-0.900781049252647460,	
+-0.900802761803302990,	-0.900824472101951600,	-0.900846180148539120,	-0.900867885943011150,	-0.900889589485313500,	-0.900911290775391780,	-0.900932989813191920,	-0.900954686598659520,	
+-0.900976381131740390,	-0.900998073412380810,	-0.901019763440525590,	-0.901041451216120890,	-0.901063136739112650,	-0.901084820009446900,	-0.901106501027068800,	-0.901128179791924390,	
+-0.901149856303959500,	-0.901171530563120050,	-0.901193202569351760,	-0.901214872322600450,	-0.901236539822811930,	-0.901258205069932040,	-0.901279868063906700,	-0.901301528804681730,	
+-0.901323187292203180,	-0.901344843526416420,	-0.901366497507267490,	-0.901388149234702340,	-0.901409798708667110,	-0.901431445929107070,	-0.901453090895968480,	-0.901474733609197050,	
+-0.901496374068738840,	-0.901518012274539650,	-0.901539648226545530,	-0.901561281924702200,	-0.901582913368955690,	-0.901604542559251930,	-0.901626169495536760,	-0.901647794177756530,	
+-0.901669416605856530,	-0.901691036779782910,	-0.901712654699481810,	-0.901734270364899280,	-0.901755883775980820,	-0.901777494932672560,	-0.901799103834920680,	-0.901820710482670980,	
+-0.901842314875869520,	-0.901863917014462220,	-0.901885516898395130,	-0.901907114527614300,	-0.901928709902065640,	-0.901950303021695320,	-0.901971893886449490,	-0.901993482496273650,	
+-0.902015068851113930,	-0.902036652950916730,	-0.902058234795628190,	-0.902079814385193690,	-0.902101391719559610,	-0.902122966798672100,	-0.902144539622477200,	-0.902166110190920970,	
+-0.902187678503949430,	-0.902209244561508640,	-0.902230808363544750,	-0.902252369910003900,	-0.902273929200832160,	-0.902295486235975440,	-0.902317041015380570,	-0.902338593538992590,	
+-0.902360143806758220,	-0.902381691818623820,	-0.902403237574534780,	-0.902424781074437690,	-0.902446322318278590,	-0.902467861306003760,	-0.902489398037559230,	-0.902510932512891160,	
+-0.902532464731945820,	-0.902553994694669350,	-0.902575522401007910,	-0.902597047850907550,	-0.902618571044314640,	-0.902640091981175670,	-0.902661610661436130,	-0.902683127085042500,	
+-0.902704641251941160,	-0.902726153162078490,	-0.902747662815400090,	-0.902769170211852550,	-0.902790675351382020,	-0.902812178233934890,	-0.902833678859457310,	-0.902855177227895430,	
+-0.902876673339195630,	-0.902898167193304290,	-0.902919658790167450,	-0.902941148129731360,	-0.902962635211942870,	-0.902984120036747440,	-0.903005602604091680,	-0.903027082913921970,	
+-0.903048560966184800,	-0.903070036760825980,	-0.903091510297792000,	-0.903112981577029240,	-0.903134450598484070,	-0.903155917362102770,	-0.903177381867831700,	-0.903198844115617130,	
+-0.903220304105405440,	-0.903241761837143000,	-0.903263217310776190,	-0.903284670526251610,	-0.903306121483515080,	-0.903327570182513200,	-0.903349016623192450,	-0.903370460805499540,	
+-0.903391902729379970,	-0.903413342394780770,	-0.903434779801648210,	-0.903456214949928670,	-0.903477647839568520,	-0.903499078470514360,	-0.903520506842712460,	-0.903541932956109290,	
+-0.903563356810651360,	-0.903584778406284930,	-0.903606197742956590,	-0.903627614820613160,	-0.903649029639200350,	-0.903670442198664880,	-0.903691852498953780,	-0.903713260540012550,	
+-0.903734666321788230,	-0.903756069844227290,	-0.903777471107276130,	-0.903798870110881340,	-0.903820266854989280,	-0.903841661339546580,	-0.903863053564499810,	-0.903884443529795360,	
+-0.903905831235379710,	-0.903927216681199570,	-0.903948599867201770,	-0.903969980793332130,	-0.903991359459537460,	-0.904012735865764470,	-0.904034110011959880,	-0.904055481898069720,	
+-0.904076851524040940,	-0.904098218889819890,	-0.904119583995353420,	-0.904140946840587880,	-0.904162307425470100,	-0.904183665749946460,	-0.904205021813963670,	-0.904226375617468330,	
+-0.904247727160407020,	-0.904269076442726800,	-0.904290423464373490,	-0.904311768225294130,	-0.904333110725435430,	-0.904354450964744210,	-0.904375788943166500,	-0.904397124660649370,	
+-0.904418458117139500,	-0.904439789312583400,	-0.904461118246927760,	-0.904482444920119420,	-0.904503769332104970,	-0.904525091482831000,	-0.904546411372244450,	-0.904567729000291700,	
+-0.904589044366920110,	-0.904610357472075520,	-0.904631668315705070,	-0.904652976897755370,	-0.904674283218173670,	-0.904695587276905910,	-0.904716889073899130,	-0.904738188609100160,	
+-0.904759485882455690,	-0.904780780893912450,	-0.904802073643417360,	-0.904823364130917020,	-0.904844652356358360,	-0.904865938319687980,	-0.904887222020852810,	-0.904908503459799560,	
+-0.904929782636475390,	-0.904951059550826440,	-0.904972334202799770,	-0.904993606592342740,	-0.905014876719401280,	-0.905036144583922560,	-0.905057410185853620,	-0.905078673525141040,	
+-0.905099934601731770,	-0.905121193415572730,	-0.905142449966610640,	-0.905163704254792530,	-0.905184956280065120,	-0.905206206042375230,	-0.905227453541669890,	-0.905248698777896380,	
+-0.905269941751000620,	-0.905291182460929990,	-0.905312420907631530,	-0.905333657091052290,	-0.905354891011138640,	-0.905376122667837620,	-0.905397352061096390,	-0.905418579190861770,	
+-0.905439804057080690,	-0.905461026659700070,	-0.905482246998666970,	-0.905503465073928200,	-0.905524680885430700,	-0.905545894433121610,	-0.905567105716948100,	-0.905588314736856410,	
+-0.905609521492794060,	-0.905630725984707840,	-0.905651928212545140,	-0.905673128176252230,	-0.905694325875776580,	-0.905715521311065140,	-0.905736714482064830,	-0.905757905388722690,	
+-0.905779094030985890,	-0.905800280408801230,	-0.905821464522115980,	-0.905842646370877080,	-0.905863825955031450,	-0.905885003274526810,	-0.905906178329309090,	-0.905927351119326100,	
+-0.905948521644524550,	-0.905969689904852160,	-0.905990855900255190,	-0.906012019630681120,	-0.906033181096076890,	-0.906054340296389870,	-0.906075497231566880,	-0.906096651901555190,	
+-0.906117804306301840,	-0.906138954445753990,	-0.906160102319858660,	-0.906181247928563250,	-0.906202391271814570,	-0.906223532349560320,	-0.906244671161746900,	-0.906265807708321880,	
+-0.906286941989232650,	-0.906308074004425590,	-0.906329203753848510,	-0.906350331237448350,	-0.906371456455172360,	-0.906392579406967710,	-0.906413700092781550,	-0.906434818512561250,	
+-0.906455934666253850,	-0.906477048553806620,	-0.906498160175166820,	-0.906519269530281610,	-0.906540376619098590,	-0.906561481441564230,	-0.906582583997626150,	-0.906603684287231700,	
+-0.906624782310328280,	-0.906645878066862590,	-0.906666971556782220,	-0.906688062780034440,	-0.906709151736566520,	-0.906730238426325720,	-0.906751322849259190,	-0.906772405005314530,	
+-0.906793484894438780,	-0.906814562516579330,	-0.906835637871683420,	-0.906856710959698780,	-0.906877781780572100,	-0.906898850334250880,	-0.906919916620682610,	-0.906940980639814880,	
+-0.906962042391594280,	-0.906983101875968640,	-0.907004159092885230,	-0.907025214042291420,	-0.907046266724134460,	-0.907067317138361970,	-0.907088365284921210,	-0.907109411163759430,	
+-0.907130454774824240,	-0.907151496118062780,	-0.907172535193423110,	-0.907193572000851600,	-0.907214606540296180,	-0.907235638811704330,	-0.907256668815023650,	-0.907277696550200960,	
+-0.907298722017184090,	-0.907319745215920290,	-0.907340766146357280,	-0.907361784808442320,	-0.907382801202122780,	-0.907403815327346370,	-0.907424827184060370,	-0.907445836772212240,	
+-0.907466844091749600,	-0.907487849142619820,	-0.907508851924770820,	-0.907529852438149320,	-0.907550850682703140,	-0.907571846658380200,	-0.907592840365127330,	-0.907613831802892350,	
+-0.907634820971622740,	-0.907655807871266100,	-0.907676792501770020,	-0.907697774863081900,	-0.907718754955149310,	-0.907739732777919860,	-0.907760708331341040,	-0.907781681615360550,	
+-0.907802652629925770,	-0.907823621374984730,	-0.907844587850484270,	-0.907865552056372320,	-0.907886513992596570,	-0.907907473659104850,	-0.907928431055844090,	-0.907949386182762330,	
+-0.907970339039806950,	-0.907991289626925880,	-0.908012237944066490,	-0.908033183991176500,	-0.908054127768203600,	-0.908075069275095290,	-0.908096008511799390,	-0.908116945478263490,	
+-0.908137880174435530,	-0.908158812600262540,	-0.908179742755692470,	-0.908200670640673110,	-0.908221596255152420,	-0.908242519599077420,	-0.908263440672396060,	-0.908284359475056040,	
+-0.908305276007005170,	-0.908326190268191170,	-0.908347102258561630,	-0.908368011978064380,	-0.908388919426647120,	-0.908409824604257450,	-0.908430727510843310,	-0.908451628146352720,	
+-0.908472526510732630,	-0.908493422603931290,	-0.908514316425896420,	-0.908535207976576050,	-0.908556097255917350,	-0.908576984263868350,	-0.908597869000376870,	-0.908618751465390840,	
+-0.908639631658857860,	-0.908660509580725750,	-0.908681385230942440,	-0.908702258609455640,	-0.908723129716213160,	-0.908743998551162950,	-0.908764865114252700,	-0.908785729405430560,	
+-0.908806591424643820,	-0.908827451171840610,	-0.908848308646969080,	-0.908869163849976510,	-0.908890016780810940,	-0.908910867439420400,	-0.908931715825752610,	-0.908952561939755600,	
+-0.908973405781377200,	-0.908994247350565220,	-0.909015086647267600,	-0.909035923671432380,	-0.909056758423007260,	-0.909077590901940290,	-0.909098421108179620,	-0.909119249041672630,	
+-0.909140074702367570,	-0.909160898090212170,	-0.909181719205155000,	-0.909202538047143130,	-0.909223354616124910,	-0.909244168912048290,	-0.909264980934861300,	-0.909285790684511760,	
+-0.909306598160947830,	-0.909327403364117440,	-0.909348206293968400,	-0.909369006950448980,	-0.909389805333507330,	-0.909410601443090830,	-0.909431395279147850,	-0.909452186841626430,	
+-0.909472976130474400,	-0.909493763145640010,	-0.909514547887071530,	-0.909535330354716450,	-0.909556110548522920,	-0.909576888468439090,	-0.909597664114413120,	-0.909618437486393040,	
+-0.909639208584326790,	-0.909659977408162510,	-0.909680743957848260,	-0.909701508233332510,	-0.909722270234562760,	-0.909743029961487260,	-0.909763787414054060,	-0.909784542592211530,	
+-0.909805295495907610,	-0.909826046125090880,	-0.909846794479708620,	-0.909867540559709310,	-0.909888284365041210,	-0.909909025895652370,	-0.909929765151491040,	-0.909950502132505280,	
+-0.909971236838643230,	-0.909991969269853040,	-0.910012699426082980,	-0.910033427307281540,	-0.910054152913396200,	-0.910074876244375440,	-0.910095597300167420,	-0.910116316080720520,	
+-0.910137032585983220,	-0.910157746815902890,	-0.910178458770428130,	-0.910199168449507320,	-0.910219875853088610,	-0.910240580981120150,	-0.910261283833550320,	-0.910281984410327150,	
+-0.910302682711399140,	-0.910323378736714320,	-0.910344072486221510,	-0.910364763959868100,	-0.910385453157602890,	-0.910406140079373930,	-0.910426824725129590,	-0.910447507094818250,	
+-0.910468187188388510,	-0.910488865005787960,	-0.910509540546965200,	-0.910530213811868610,	-0.910550884800446550,	-0.910571553512647180,	-0.910592219948418990,	-0.910612884107710130,	
+-0.910633545990469200,	-0.910654205596644670,	-0.910674862926184380,	-0.910695517979036810,	-0.910716170755150540,	-0.910736821254473750,	-0.910757469476955020,	-0.910778115422542940,	
+-0.910798759091185130,	-0.910819400482830500,	-0.910840039597427430,	-0.910860676434924190,	-0.910881310995269140,	-0.910901943278411010,	-0.910922573284297930,	-0.910943201012878400,	
+-0.910963826464101230,	-0.910984449637914250,	-0.911005070534266050,	-0.911025689153105110,	-0.911046305494380040,	-0.911066919558039200,	-0.911087531344031420,	-0.911108140852304400,	
+-0.911128748082807080,	-0.911149353035487830,	-0.911169955710295240,	-0.911190556107177810,	-0.911211154226084010,	-0.911231750066962220,	-0.911252343629761040,	-0.911272934914429070,	
+-0.911293523920915120,	-0.911314110649167010,	-0.911334695099133670,	-0.911355277270763490,	-0.911375857164005150,	-0.911396434778807500,	-0.911417010115118440,	-0.911437583172886920,	
+-0.911458153952061310,	-0.911478722452590430,	-0.911499288674422650,	-0.911519852617506680,	-0.911540414281791110,	-0.911560973667224550,	-0.911581530773755480,	-0.911602085601332930,	
+-0.911622638149904850,	-0.911643188419420160,	-0.911663736409827450,	-0.911684282121075440,	-0.911704825553112720,	-0.911725366705888330,	-0.911745905579350200,	-0.911766442173447270,	
+-0.911786976488128120,	-0.911807508523341690,	-0.911828038279036360,	-0.911848565755161040,	-0.911869090951664240,	-0.911889613868494760,	-0.911910134505601540,	-0.911930652862932730,	
+-0.911951168940437150,	-0.911971682738063730,	-0.911992194255761170,	-0.912012703493477960,	-0.912033210451163480,	-0.912053715128765650,	-0.912074217526233410,	-0.912094717643515680,	
+-0.912115215480561180,	-0.912135711037318610,	-0.912156204313736780,	-0.912176695309764420,	-0.912197184025350330,	-0.912217670460443660,	-0.912238154614992360,	-0.912258636488945780,	
+-0.912279116082252540,	-0.912299593394861550,	-0.912320068426721640,	-0.912340541177781850,	-0.912361011647990330,	-0.912381479837296340,	-0.912401945745648590,	-0.912422409372996010,	
+-0.912442870719287420,	-0.912463329784471530,	-0.912483786568497490,	-0.912504241071313890,	-0.912524693292869670,	-0.912545143233114200,	-0.912565590891995400,	-0.912586036269462660,	
+-0.912606479365464800,	-0.912626920179950730,	-0.912647358712869840,	-0.912667794964170050,	-0.912688228933800860,	-0.912708660621711080,	-0.912729090027849630,	-0.912749517152165460,	
+-0.912769941994607480,	-0.912790364555124630,	-0.912810784833665960,	-0.912831202830180270,	-0.912851618544616940,	-0.912872031976924240,	-0.912892443127051310,	-0.912912851994947430,	
+-0.912933258580561400,	-0.912953662883842500,	-0.912974064904739200,	-0.912994464643200660,	-0.913014862099176040,	-0.913035257272614140,	-0.913055650163464130,	-0.913076040771675030,	
+-0.913096429097195910,	-0.913116815139975560,	-0.913137198899963250,	-0.913157580377108370,	-0.913177959571359050,	-0.913198336482664910,	-0.913218711110974860,	-0.913239083456238170,	
+-0.913259453518403650,	-0.913279821297420910,	-0.913300186793238210,	-0.913320550005805030,	-0.913340910935070530,	-0.913361269580983740,	-0.913381625943493810,	-0.913401980022549800,	
+-0.913422331818100840,	-0.913442681330095980,	-0.913463028558484820,	-0.913483373503215730,	-0.913503716164238200,	-0.913524056541501480,	-0.913544394634954520,	-0.913564730444546560,	
+-0.913585063970227210,	-0.913605395211944730,	-0.913625724169648820,	-0.913646050843288650,	-0.913666375232813240,	-0.913686697338171980,	-0.913707017159314020,	-0.913727334696188390,	
+-0.913747649948744580,	-0.913767962916931850,	-0.913788273600698920,	-0.913808581999995370,	-0.913828888114770250,	-0.913849191944972940,	-0.913869493490552690,	-0.913889792751459100,	
+-0.913910089727640540,	-0.913930384419046840,	-0.913950676825627250,	-0.913970966947330820,	-0.913991254784107030,	-0.914011540335905150,	-0.914031823602674430,	-0.914052104584364030,	
+-0.914072383280923550,	-0.914092659692302360,	-0.914112933818449160,	-0.914133205659313660,	-0.914153475214845020,	-0.914173742484992840,	-0.914194007469706580,	-0.914214270168935080,	
+-0.914234530582627710,	-0.914254788710734180,	-0.914275044553203630,	-0.914295298109985440,	-0.914315549381028990,	-0.914335798366283650,	-0.914356045065698900,	-0.914376289479224000,	
+-0.914396531606808670,	-0.914416771448401720,	-0.914437009003952860,	-0.914457244273411460,	-0.914477477256727010,	-0.914497707953848770,	-0.914517936364726670,	-0.914538162489309300,	
+-0.914558386327546600,	-0.914578607879387940,	-0.914598827144782690,	-0.914619044123680450,	-0.914639258816030480,	-0.914659471221782480,	-0.914679681340885730,	-0.914699889173290260,	
+-0.914720094718944550,	-0.914740297977798660,	-0.914760498949802050,	-0.914780697634904220,	-0.914800894033054650,	-0.914821088144203150,	-0.914841279968298560,	-0.914861469505290790,	
+-0.914881656755129340,	-0.914901841717763790,	-0.914922024393143630,	-0.914942204781218350,	-0.914962382881937650,	-0.914982558695250910,	-0.915002732221108170,	-0.915022903459458250,	
+-0.915043072410251070,	-0.915063239073436120,	-0.915083403448963220,	-0.915103565536781740,	-0.915123725336841720,	-0.915143882849091980,	-0.915164038073482570,	-0.915184191009963070,	
+-0.915204341658483080,	-0.915224490018992200,	-0.915244636091440130,	-0.915264779875776480,	-0.915284921371950940,	-0.915305060579913010,	-0.915325197499612830,	-0.915345332130999220,	
+-0.915365464474022340,	-0.915385594528631770,	-0.915405722294777350,	-0.915425847772408870,	-0.915445970961475400,	-0.915466091861926960,	-0.915486210473713370,	-0.915506326796784230,	
+-0.915526440831089360,	-0.915546552576578240,	-0.915566662033200810,	-0.915586769200906760,	-0.915606874079645690,	-0.915626976669367880,	-0.915647076970022230,	-0.915667174981558920,	
+-0.915687270703927750,	-0.915707364137078210,	-0.915727455280960450,	-0.915747544135524280,	-0.915767630700718980,	-0.915787714976494470,	-0.915807796962800790,	-0.915827876659587650,	
+-0.915847954066804750,	-0.915868029184401910,	-0.915888102012329060,	-0.915908172550535920,	-0.915928240798972840,	-0.915948306757588650,	-0.915968370426333720,	-0.915988431805157880,	
+-0.916008490894011040,	-0.916028547692842920,	-0.916048602201603780,	-0.916068654420242770,	-0.916088704348710040,	-0.916108751986955740,	-0.916128797334929360,	-0.916148840392581150,	
+-0.916168881159860730,	-0.916188919636718110,	-0.916208955823103240,	-0.916228989718966380,	-0.916249021324256670,	-0.916269050638924390,	-0.916289077662919450,	-0.916309102396191790,	
+-0.916329124838691440,	-0.916349144990368570,	-0.916369162851172540,	-0.916389178421053610,	-0.916409191699961710,	-0.916429202687846890,	-0.916449211384658960,	-0.916469217790348070,	
+-0.916489221904864150,	-0.916509223728157130,	-0.916529223260177050,	-0.916549220500874280,	-0.916569215450198090,	-0.916589208108098850,	-0.916609198474526710,	-0.916629186549431480,	
+-0.916649172332763660,	-0.916669155824472500,	-0.916689137024508490,	-0.916709115932821560,	-0.916729092549361970,	-0.916749066874079640,	-0.916769038906924520,	-0.916789008647846960,	
+-0.916808976096796790,	-0.916828941253724160,	-0.916848904118579560,	-0.916868864691312350,	-0.916888822971873020,	-0.916908778960211500,	-0.916928732656278170,	-0.916948684060022940,	
+-0.916968633171396430,	-0.916988579990347890,	-0.917008524516827910,	-0.917028466750786640,	-0.917048406692174240,	-0.917068344340940870,	-0.917088279697036550,	-0.917108212760411550,	
+-0.917128143531016020,	-0.917148072008800440,	-0.917167998193714420,	-0.917187922085708320,	-0.917207843684732400,	-0.917227762990736940,	-0.917247680003672070,	-0.917267594723488290,	
+-0.917287507150135300,	-0.917307417283563460,	-0.917327325123723060,	-0.917347230670564340,	-0.917367133924037570,	-0.917387034884093010,	-0.917406933550680810,	-0.917426829923751240,	
+-0.917446724003255000,	-0.917466615789141570,	-0.917486505281361660,	-0.917506392479865430,	-0.917526277384603240,	-0.917546159995525360,	-0.917566040312582490,	-0.917585918335724000,	
+-0.917605794064900840,	-0.917625667500063250,	-0.917645538641161380,	-0.917665407488145730,	-0.917685274040966450,	-0.917705138299574120,	-0.917725000263918900,	-0.917744859933951160,	
+-0.917764717309621610,	-0.917784572390879960,	-0.917804425177676910,	-0.917824275669962720,	-0.917844123867687880,	-0.917863969770803090,	-0.917883813379257950,	-0.917903654693003390,	
+-0.917923493711989560,	-0.917943330436167160,	-0.917963164865486240,	-0.917982996999897600,	-0.918002826839351300,	-0.918022654383798040,	-0.918042479633188190,	-0.918062302587472350,	
+-0.918082123246600550,	-0.918101941610523280,	-0.918121757679191350,	-0.918141571452554820,	-0.918161382930564480,	-0.918181192113171060,	-0.918200999000324260,	-0.918220803591975000,	
+-0.918240605888073660,	-0.918260405888570830,	-0.918280203593417000,	-0.918299999002562650,	-0.918319792115958380,	-0.918339582933554550,	-0.918359371455302110,	-0.918379157681150970,	
+-0.918398941611051840,	-0.918418723244955440,	-0.918438502582812120,	-0.918458279624572600,	-0.918478054370187810,	-0.918497826819607450,	-0.918517596972782570,	-0.918537364829663640,	
+-0.918557130390201370,	-0.918576893654346140,	-0.918596654622048760,	-0.918616413293259830,	-0.918636169667929710,	-0.918655923746009680,	-0.918675675527449330,	-0.918695425012199920,	
+-0.918715172200211930,	-0.918734917091435950,	-0.918754659685822710,	-0.918774399983323110,	-0.918794137983887320,	-0.918813873687466030,	-0.918833607094010070,	-0.918853338203470150,	
+-0.918873067015796850,	-0.918892793530940890,	-0.918912517748852960,	-0.918932239669483790,	-0.918951959292783950,	-0.918971676618704600,	-0.918991391647195680,	-0.919011104378208210,	
+-0.919030814811693130,	-0.919050522947600920,	-0.919070228785882740,	-0.919089932326488720,	-0.919109633569369810,	-0.919129332514476820,	-0.919149029161760440,	-0.919168723511171630,	
+-0.919188415562660950,	-0.919208105316179140,	-0.919227792771677210,	-0.919247477929105660,	-0.919267160788415860,	-0.919286841349557850,	-0.919306519612482660,	-0.919326195577141130,	
+-0.919345869243484160,	-0.919365540611462580,	-0.919385209681027440,	-0.919404876452128870,	-0.919424540924718260,	-0.919444203098746190,	-0.919463862974163600,	-0.919483520550921420,	
+-0.919503175828970340,	-0.919522828808261420,	-0.919542479488745350,	-0.919562127870373500,	-0.919581773953095930,	-0.919601417736863990,	-0.919621059221628400,	-0.919640698407340310,	
+-0.919660335293950300,	-0.919679969881409990,	-0.919699602169669280,	-0.919719232158679570,	-0.919738859848391770,	-0.919758485238756920,	-0.919778108329725730,	-0.919797729121249350,	
+-0.919817347613278710,	-0.919836963805764520,	-0.919856577698658470,	-0.919876189291910510,	-0.919895798585472100,	-0.919915405579294190,	-0.919935010273327690,	-0.919954612667523760,	
+-0.919974212761833670,	-0.919993810556207660,	-0.920013406050597120,	-0.920032999244953080,	-0.920052590139226470,	-0.920072178733368440,	-0.920091765027330030,	-0.920111349021062170,	
+-0.920130930714515900,	-0.920150510107642260,	-0.920170087200392840,	-0.920189661992717680,	-0.920209234484568480,	-0.920228804675896180,	-0.920248372566651820,	-0.920267938156786980,	
+-0.920287501446251820,	-0.920307062434998050,	-0.920326621122976470,	-0.920346177510138470,	-0.920365731596434870,	-0.920385283381817130,	-0.920404832866236090,	-0.920424380049642890,	
+-0.920443924931988900,	-0.920463467513225280,	-0.920483007793302720,	-0.920502545772172720,	-0.920522081449786310,	-0.920541614826094650,	-0.920561145901048980,	-0.920580674674600810,	
+-0.920600201146700490,	-0.920619725317299850,	-0.920639247186349710,	-0.920658766753801650,	-0.920678284019606500,	-0.920697798983715730,	-0.920717311646080510,	-0.920736822006651860,	
+-0.920756330065381600,	-0.920775835822220220,	-0.920795339277119210,	-0.920814840430029810,	-0.920834339280903300,	-0.920853835829691050,	-0.920873330076344420,	-0.920892822020814240,	
+-0.920912311663051870,	-0.920931799003008810,	-0.920951284040636310,	-0.920970766775885520,	-0.920990247208707810,	-0.921009725339054450,	-0.921029201166876810,	-0.921048674692126590,	
+-0.921068145914754280,	-0.921087614834711580,	-0.921107081451949860,	-0.921126545766420500,	-0.921146007778074650,	-0.921165467486864230,	-0.921184924892739730,	-0.921204379995652970,	
+-0.921223832795555200,	-0.921243283292397910,	-0.921262731486132360,	-0.921282177376710030,	-0.921301620964082300,	-0.921321062248200430,	-0.921340501229015900,	-0.921359937906480520,	
+-0.921379372280544890,	-0.921398804351160950,	-0.921418234118279940,	-0.921437661581853250,	-0.921457086741832800,	-0.921476509598169400,	-0.921495930150814550,	-0.921515348399720050,	
+-0.921534764344837050,	-0.921554177986117160,	-0.921573589323511850,	-0.921592998356972610,	-0.921612405086450810,	-0.921631809511898050,	-0.921651211633266020,	-0.921670611450505660,	
+-0.921690008963568790,	-0.921709404172406880,	-0.921728797076971530,	-0.921748187677214110,	-0.921767575973086560,	-0.921786961964539800,	-0.921806345651525530,	-0.921825727033995460,	
+-0.921845106111901070,	-0.921864482885193960,	-0.921883857353825610,	-0.921903229517747610,	-0.921922599376911460,	-0.921941966931269290,	-0.921961332180771810,	-0.921980695125370950,	
+-0.922000055765018420,	-0.922019414099665700,	-0.922038770129264500,	-0.922058123853766620,	-0.922077475273123230,	-0.922096824387286020,	-0.922116171196206810,	-0.922135515699837200,	
+-0.922154857898128680,	-0.922174197791033160,	-0.922193535378502130,	-0.922212870660487180,	-0.922232203636940470,	-0.922251534307812810,	-0.922270862673056360,	-0.922290188732622810,	
+-0.922309512486463760,	-0.922328833934530910,	-0.922348153076776310,	-0.922367469913150990,	-0.922386784443607110,	-0.922406096668096140,	-0.922425406586569910,	-0.922444714198980220,	
+-0.922464019505278790,	-0.922483322505417200,	-0.922502623199347390,	-0.922521921587021070,	-0.922541217668390150,	-0.922560511443405900,	-0.922579802912020460,	-0.922599092074185330,	
+-0.922618378929852660,	-0.922637663478974250,	-0.922656945721501360,	-0.922676225657386160,	-0.922695503286580450,	-0.922714778609035840,	-0.922734051624704340,	-0.922753322333537800,	
+-0.922772590735487790,	-0.922791856830506460,	-0.922811120618545420,	-0.922830382099556920,	-0.922849641273492120,	-0.922868898140303150,	-0.922888152699942070,	-0.922907404952360570,	
+-0.922926654897510470,	-0.922945902535344140,	-0.922965147865812740,	-0.922984390888868410,	-0.923003631604463080,	-0.923022870012548790,	-0.923042106113077240,	-0.923061339906000480,	
+-0.923080571391270310,	-0.923099800568838780,	-0.923119027438658040,	-0.923138252000679340,	-0.923157474254855060,	-0.923176694201137130,	-0.923195911839477470,	-0.923215127169828010,	
+-0.923234340192141010,	-0.923253550906367850,	-0.923272759312460890,	-0.923291965410371950,	-0.923311169200053180,	-0.923330370681456400,	-0.923349569854533760,	-0.923368766719237070,	
+-0.923387961275518590,	-0.923407153523330470,	-0.923426343462624200,	-0.923445531093352030,	-0.923464716415466010,	-0.923483899428918290,	-0.923503080133660780,	-0.923522258529645870,	
+-0.923541434616825030,	-0.923560608395150530,	-0.923579779864574620,	-0.923598949025049130,	-0.923618115876526310,	-0.923637280418958320,	-0.923656442652296960,	-0.923675602576494610,	
+-0.923694760191503210,	-0.923713915497275220,	-0.923733068493762130,	-0.923752219180916430,	-0.923771367558690050,	-0.923790513627035350,	-0.923809657385904700,	-0.923828798835249490,	
+-0.923847937975022400,	-0.923867074805175380,	-0.923886209325660680,	-0.923905341536430560,	-0.923924471437436940,	-0.923943599028632210,	-0.923962724309968510,	-0.923981847281397980,	
+-0.924000967942873120,	-0.924020086294345510,	-0.924039202335767750,	-0.924058316067091990,	-0.924077427488270380,	-0.924096536599255500,	-0.924115643399999080,	-0.924134747890453470,	
+-0.924153850070570940,	-0.924172949940303860,	-0.924192047499604370,	-0.924211142748424860,	-0.924230235686717360,	-0.924249326314434350,	-0.924268414631527980,	-0.924287500637950950,	
+-0.924306584333654760,	-0.924325665718592200,	-0.924344744792715440,	-0.924363821555976850,	-0.924382896008328570,	-0.924401968149723530,	-0.924421037980113210,	-0.924440105499450330,	
+-0.924459170707687020,	-0.924478233604775990,	-0.924497294190669280,	-0.924516352465319270,	-0.924535408428678540,	-0.924554462080699140,	-0.924573513421333980,	-0.924592562450534670,	
+-0.924611609168254020,	-0.924630653574444290,	-0.924649695669057970,	-0.924668735452047420,	-0.924687772923365350,	-0.924706808082963460,	-0.924725840930794570,	-0.924744871466811170,	
+-0.924763899690965510,	-0.924782925603210070,	-0.924801949203497340,	-0.924820970491779800,	-0.924839989468009720,	-0.924859006132139780,	-0.924878020484122600,	-0.924897032523910090,	
+-0.924916042251454960,	-0.924935049666709700,	-0.924954054769626890,	-0.924973057560159240,	-0.924992058038258570,	-0.925011056203877800,	-0.925030052056969310,	-0.925049045597485800,	
+-0.925068036825379640,	-0.925087025740603420,	-0.925106012343109520,	-0.925124996632850750,	-0.925143978609779370,	-0.925162958273848420,	-0.925181935625009720,	-0.925200910663216190,	
+-0.925219883388420430,	-0.925238853800574910,	-0.925257821899632570,	-0.925276787685545440,	-0.925295751158266230,	-0.925314712317747650,	-0.925333671163942380,	-0.925352627696802930,	
+-0.925371581916281770,	-0.925390533822331830,	-0.925409483414905480,	-0.925428430693955310,	-0.925447375659434580,	-0.925466318311295000,	-0.925485258649489610,	-0.925504196673971100,	
+-0.925523132384692080,	-0.925542065781605250,	-0.925560996864663530,	-0.925579925633819080,	-0.925598852089024700,	-0.925617776230233340,	-0.925636698057397460,	-0.925655617570469770,	
+-0.925674534769403090,	-0.925693449654150120,	-0.925712362224663470,	-0.925731272480896260,	-0.925750180422800550,	-0.925769086050329370,	-0.925787989363435540,	-0.925806890362071640,	
+-0.925825789046190620,	-0.925844685415745380,	-0.925863579470688090,	-0.925882471210971890,	-0.925901360636549490,	-0.925920247747373690,	-0.925939132543397330,	-0.925958015024573090,	
+-0.925976895190853800,	-0.925995773042192270,	-0.926014648578541650,	-0.926033521799854100,	-0.926052392706082750,	-0.926071261297180430,	-0.926090127573099830,	-0.926108991533794110,	
+-0.926127853179216090,	-0.926146712509318130,	-0.926165569524053380,	-0.926184424223374770,	-0.926203276607235120,	-0.926222126675587230,	-0.926240974428383930,	-0.926259819865578370,	
+-0.926278662987123140,	-0.926297503792971270,	-0.926316342283076020,	-0.926335178457389550,	-0.926354012315865120,	-0.926372843858455750,	-0.926391673085114160,	-0.926410499995793830,	
+-0.926429324590446800,	-0.926448146869026550,	-0.926466966831485880,	-0.926485784477777740,	-0.926504599807855270,	-0.926523412821671170,	-0.926542223519178700,	-0.926561031900330570,	
+-0.926579837965079810,	-0.926598641713379800,	-0.926617443145182910,	-0.926636242260442500,	-0.926655039059111290,	-0.926673833541142630,	-0.926692625706489360,	-0.926711415555104830,	
+-0.926730203086941430,	-0.926748988301952510,	-0.926767771200091130,	-0.926786551781310310,	-0.926805330045563200,	-0.926824105992802630,	-0.926842879622981840,	-0.926861650936053880,	
+-0.926880419931972120,	-0.926899186610689040,	-0.926917950972157900,	-0.926936713016331960,	-0.926955472743164140,	-0.926974230152607710,	-0.926992985244616040,	-0.927011738019141500,	
+-0.927030488476137670,	-0.927049236615557600,	-0.927067982437354440,	-0.927086725941481340,	-0.927105467127891440,	-0.927124205996537890,	-0.927142942547373840,	-0.927161676780352660,	
+-0.927180408695427060,	-0.927199138292550410,	-0.927217865571675850,	-0.927236590532756640,	-0.927255313175746050,	-0.927274033500597450,	-0.927292751507263420,	-0.927311467195697570,	
+-0.927330180565852920,	-0.927348891617682970,	-0.927367600351140740,	-0.927386306766179500,	-0.927405010862752510,	-0.927423712640812910,	-0.927442412100314080,	-0.927461109241209610,	
+-0.927479804063451980,	-0.927498496566994790,	-0.927517186751791510,	-0.927535874617795190,	-0.927554560164959520,	-0.927573243393236990,	-0.927591924302581530,	-0.927610602892946170,	
+-0.927629279164284280,	-0.927647953116549240,	-0.927666624749694300,	-0.927685294063672840,	-0.927703961058438110,	-0.927722625733943480,	-0.927741288090142670,	-0.927759948126988250,	
+-0.927778605844433950,	-0.927797261242433220,	-0.927815914320939240,	-0.927834565079905470,	-0.927853213519285740,	-0.927871859639032510,	-0.927890503439099730,	-0.927909144919440650,	
+-0.927927784080008640,	-0.927946420920757300,	-0.927965055441639870,	-0.927983687642609740,	-0.928002317523620390,	-0.928020945084625630,	-0.928039570325578160,	-0.928058193246431800,	
+-0.928076813847139910,	-0.928095432127655990,	-0.928114048087933520,	-0.928132661727926300,	-0.928151273047587040,	-0.928169882046869570,	-0.928188488725727460,	-0.928207093084113980,	
+-0.928225695121982940,	-0.928244294839287610,	-0.928262892235981460,	-0.928281487312018210,	-0.928300080067351540,	-0.928318670501934280,	-0.928337258615720360,	-0.928355844408663370,	
+-0.928374427880716670,	-0.928393009031833970,	-0.928411587861969090,	-0.928430164371074840,	-0.928448738559105150,	-0.928467310426013710,	-0.928485879971754020,	-0.928504447196279560,	
+-0.928523012099544020,	-0.928541574681500890,	-0.928560134942103880,	-0.928578692881306460,	-0.928597248499062670,	-0.928615801795325440,	-0.928634352770048800,	-0.928652901423186130,	
+-0.928671447754691240,	-0.928689991764518160,	-0.928708533452619720,	-0.928727072818949950,	-0.928745609863462440,	-0.928764144586110900,	-0.928782676986849020,	-0.928801207065630520,	
+-0.928819734822408980,	-0.928838260257138000,	-0.928856783369771510,	-0.928875304160263320,	-0.928893822628566570,	-0.928912338774635190,	-0.928930852598423010,	-0.928949364099883710,	
+-0.928967873278971010,	-0.928986380135638940,	-0.929004884669840660,	-0.929023386881530080,	-0.929041886770661020,	-0.929060384337187290,	-0.929078879581062610,	-0.929097372502240670,	
+-0.929115863100675400,	-0.929134351376320390,	-0.929152837329129790,	-0.929171320959056860,	-0.929189802266055630,	-0.929208281250079820,	-0.929226757911083330,	-0.929245232249020000,	
+-0.929263704263843860,	-0.929282173955508160,	-0.929300641323967060,	-0.929319106369174360,	-0.929337569091083780,	-0.929356029489649350,	-0.929374487564824880,	-0.929392943316564190,	
+-0.929411396744821090,	-0.929429847849549850,	-0.929448296630703720,	-0.929466743088236740,	-0.929485187222102940,	-0.929503629032256140,	-0.929522068518650380,	-0.929540505681239690,	
+-0.929558940519977450,	-0.929577373034817800,	-0.929595803225714780,	-0.929614231092622200,	-0.929632656635494100,	-0.929651079854284300,	-0.929669500748946830,	-0.929687919319435620,	
+-0.929706335565704590,	-0.929724749487708110,	-0.929743161085399340,	-0.929761570358732750,	-0.929779977307662150,	-0.929798381932141700,	-0.929816784232125550,	-0.929835184207567170,	
+-0.929853581858420820,	-0.929871977184640430,	-0.929890370186180150,	-0.929908760862994010,	-0.929927149215035830,	-0.929945535242259870,	-0.929963918944620050,	-0.929982300322070520,	
+-0.930000679374565430,	-0.930019056102058370,	-0.930037430504503710,	-0.930055802581855500,	-0.930074172334067640,	-0.930092539761094520,	-0.930110904862890280,	-0.930129267639408400,	
+-0.930147628090603470,	-0.930165986216429430,	-0.930184342016840420,	-0.930202695491790470,	-0.930221046641233950,	-0.930239395465124690,	-0.930257741963416930,	-0.930276086136065160,	
+-0.930294427983022980,	-0.930312767504244520,	-0.930331104699684270,	-0.930349439569296280,	-0.930367772113034670,	-0.930386102330853950,	-0.930404430222707580,	-0.930422755788550160,	
+-0.930441079028335950,	-0.930459399942018980,	-0.930477718529553410,	-0.930496034790893710,	-0.930514348725993810,	-0.930532660334808080,	-0.930550969617291000,	-0.930569276573396280,	
+-0.930587581203078270,	-0.930605883506291250,	-0.930624183482989590,	-0.930642481133127530,	-0.930660776456659570,	-0.930679069453539290,	-0.930697360123721280,	-0.930715648467160040,	
+-0.930733934483809590,	-0.930752218173624300,	-0.930770499536558440,	-0.930788778572566370,	-0.930807055281602350,	-0.930825329663620640,	-0.930843601718575940,	-0.930861871446421960,	
+-0.930880138847113290,	-0.930898403920604300,	-0.930916666666849250,	-0.930934927085802940,	-0.930953185177418870,	-0.930971440941651960,	-0.930989694378456360,	-0.931007945487786540,	
+-0.931026194269596870,	-0.931044440723841740,	-0.931062684850475500,	-0.931080926649452520,	-0.931099166120727180,	-0.931117403264254300,	-0.931135638079987670,	-0.931153870567881790,	
+-0.931172100727891360,	-0.931190328559970640,	-0.931208554064074100,	-0.931226777240156460,	-0.931244998088171520,	-0.931263216608074210,	-0.931281432799818790,	-0.931299646663359740,	
+-0.931317858198651650,	-0.931336067405648890,	-0.931354274284305950,	-0.931372478834577410,	-0.931390681056417870,	-0.931408880949781360,	-0.931427078514622700,	-0.931445273750896250,	
+-0.931463466658556620,	-0.931481657237558380,	-0.931499845487856360,	-0.931518031409404370,	-0.931536215002157220,	-0.931554396266069620,	-0.931572575201095930,	-0.931590751807190980,	
+-0.931608926084309010,	-0.931627098032404730,	-0.931645267651432740,	-0.931663434941347960,	-0.931681599902104200,	-0.931699762533656380,	-0.931717922835959220,	-0.931736080808967300,	
+-0.931754236452635110,	-0.931772389766917670,	-0.931790540751768930,	-0.931808689407143900,	-0.931826835732997070,	-0.931844979729283150,	-0.931863121395956840,	-0.931881260732972730,	
+-0.931899397740285410,	-0.931917532417849580,	-0.931935664765620060,	-0.931953794783551560,	-0.931971922471598320,	-0.931990047829715170,	-0.932008170857857030,	-0.932026291555978380,	
+-0.932044409924034370,	-0.932062525961979030,	-0.932080639669767290,	-0.932098751047354070,	-0.932116860094693860,	-0.932134966811741570,	-0.932153071198451810,	-0.932171173254779490,	
+-0.932189272980679110,	-0.932207370376105570,	-0.932225465441013920,	-0.932243558175358310,	-0.932261648579093880,	-0.932279736652175230,	-0.932297822394557270,	-0.932315905806194720,	
+-0.932333986887042830,	-0.932352065637055530,	-0.932370142056188070,	-0.932388216144395380,	-0.932406287901632050,	-0.932424357327853000,	-0.932442424423013060,	-0.932460489187067140,	
+-0.932478551619969950,	-0.932496611721676640,	-0.932514669492141570,	-0.932532724931319780,	-0.932550778039166190,	-0.932568828815635630,	-0.932586877260683010,	-0.932604923374263480,	
+-0.932622967156331420,	-0.932641008606841850,	-0.932659047725749810,	-0.932677084513010120,	-0.932695118968577710,	-0.932713151092407600,	-0.932731180884454500,	-0.932749208344673560,	
+-0.932767233473019820,	-0.932785256269447640,	-0.932803276733912390,	-0.932821294866369000,	-0.932839310666772280,	-0.932857324135077380,	-0.932875335271239450,	-0.932893344075212850,	
+-0.932911350546952840,	-0.932929354686414470,	-0.932947356493552760,	-0.932965355968322640,	-0.932983353110679150,	-0.933001347920577320,	-0.933019340397972070,	-0.933037330542818450,	
+-0.933055318355071830,	-0.933073303834686560,	-0.933091286981618140,	-0.933109267795821370,	-0.933127246277251520,	-0.933145222425863840,	-0.933163196241612810,	-0.933181167724453810,	
+-0.933199136874341860,	-0.933217103691232010,	-0.933235068175079510,	-0.933253030325839280,	-0.933270990143466480,	-0.933288947627916140,	-0.933306902779143520,	-0.933324855597103990,	
+-0.933342806081751910,	-0.933360754233042880,	-0.933378700050931930,	-0.933396643535374220,	-0.933414584686324990,	-0.933432523503739510,	-0.933450459987572480,	-0.933468394137779270,	
+-0.933486325954315020,	-0.933504255437135000,	-0.933522182586194350,	-0.933540107401448220,	-0.933558029882851860,	-0.933575950030360420,	-0.933593867843929390,	-0.933611783323513470,	
+-0.933629696469068020,	-0.933647607280548300,	-0.933665515757909570,	-0.933683421901107090,	-0.933701325710096340,	-0.933719227184832020,	-0.933737126325269510,	-0.933755023131364270,	
+-0.933772917603071460,	-0.933790809740346450,	-0.933808699543144270,	-0.933826587011420410,	-0.933844472145130110,	-0.933862354944228870,	-0.933880235408671490,	-0.933898113538413450,	
+-0.933915989333410130,	-0.933933862793616900,	-0.933951733918989000,	-0.933969602709482150,	-0.933987469165050820,	-0.934005333285650940,	-0.934023195071237660,	-0.934041054521766450,	
+-0.934058911637192570,	-0.934076766417471390,	-0.934094618862558290,	-0.934112468972408740,	-0.934130316746977880,	-0.934148162186221650,	-0.934166005290094640,	-0.934183846058552650,	
+-0.934201684491551050,	-0.934219520589045230,	-0.934237354350990980,	-0.934255185777342900,	-0.934273014868056920,	-0.934290841623088510,	-0.934308666042392820,	-0.934326488125925560,	
+-0.934344307873642090,	-0.934362125285497780,	-0.934379940361448220,	-0.934397753101448790,	-0.934415563505455290,	-0.934433371573422540,	-0.934451177305306470,	-0.934468980701062320,	
+-0.934486781760645810,	-0.934504580484012300,	-0.934522376871117610,	-0.934540170921916770,	-0.934557962636365480,	-0.934575752014419230,	-0.934593539056033600,	-0.934611323761164180,	
+-0.934629106129766460,	-0.934646886161795920,	-0.934664663857208140,	-0.934682439215959060,	-0.934700212238003590,	-0.934717982923297550,	-0.934735751271796640,	-0.934753517283456240,	
+-0.934771280958232030,	-0.934789042296080060,	-0.934806801296955040,	-0.934824557960813100,	-0.934842312287609720,	-0.934860064277300620,	-0.934877813929841370,	-0.934895561245187470,	
+-0.934913306223294830,	-0.934931048864118820,	-0.934948789167615480,	-0.934966527133739840,	-0.934984262762447950,	-0.935001996053695380,	-0.935019727007437850,	-0.935037455623630940,	
+-0.935055181902230800,	-0.935072905843192360,	-0.935090627446471530,	-0.935108346712024250,	-0.935126063639806100,	-0.935143778229772790,	-0.935161490481880020,	-0.935179200396083490,	
+-0.935196907972339010,	-0.935214613210602290,	-0.935232316110829240,	-0.935250016672975250,	-0.935267714896996120,	-0.935285410782847660,	-0.935303104330485690,	-0.935320795539866360,	
+-0.935338484410944690,	-0.935356170943676730,	-0.935373855138018410,	-0.935391536993925520,	-0.935409216511353670,	-0.935426893690258780,	-0.935444568530596770,	-0.935462241032323230,	
+-0.935479911195394090,	-0.935497579019765600,	-0.935515244505392700,	-0.935532907652231850,	-0.935550568460238540,	-0.935568226929368920,	-0.935585883059579130,	-0.935603536850824200,	
+-0.935621188303060400,	-0.935638837416243760,	-0.935656484190329870,	-0.935674128625274880,	-0.935691770721034600,	-0.935709410477564840,	-0.935727047894821530,	-0.935744682972760590,	
+-0.935762315711338280,	-0.935779946110509850,	-0.935797574170231570,	-0.935815199890459470,	-0.935832823271149250,	-0.935850444312256950,	-0.935868063013738930,	-0.935885679375550340,	
+-0.935903293397647660,	-0.935920905079986710,	-0.935938514422523400,	-0.935956121425214000,	-0.935973726088014100,	-0.935991328410880060,	-0.936008928393767590,	-0.936026526036633170,	
+-0.936044121339432040,	-0.936061714302120600,	-0.936079304924654960,	-0.936096893206991080,	-0.936114479149084850,	-0.936132062750892890,	-0.936149644012370330,	-0.936167222933473650,	
+-0.936184799514159010,	-0.936202373754382310,	-0.936219945654099720,	-0.936237515213267260,	-0.936255082431840970,	-0.936272647309777000,	-0.936290209847031710,	-0.936307770043560580,	
+-0.936325327899320100,	-0.936342883414266190,	-0.936360436588355110,	-0.936377987421542990,	-0.936395535913786210,	-0.936413082065040260,	-0.936430625875261490,	-0.936448167344406280,	
+-0.936465706472430660,	-0.936483243259290780,	-0.936500777704942670,	-0.936518309809342700,	-0.936535839572447020,	-0.936553366994211660,	-0.936570892074593210,	-0.936588414813547270,	
+-0.936605935211030190,	-0.936623453266998360,	-0.936640968981407810,	-0.936658482354215230,	-0.936675993385376100,	-0.936693502074847030,	-0.936711008422584150,	-0.936728512428543820,	
+-0.936746014092682100,	-0.936763513414955450,	-0.936781010395319910,	-0.936798505033731970,	-0.936815997330147640,	-0.936833487284523760,	-0.936850974896815790,	-0.936868460166980330,	
+-0.936885943094973750,	-0.936903423680752300,	-0.936920901924272350,	-0.936938377825490500,	-0.936955851384362330,	-0.936973322600844430,	-0.936990791474893390,	-0.937008258006465260,	
+-0.937025722195516500,	-0.937043184042003490,	-0.937060643545882480,	-0.937078100707109840,	-0.937095555525642390,	-0.937113008001435600,	-0.937130458134446290,	-0.937147905924630930,	
+-0.937165351371945790,	-0.937182794476347230,	-0.937200235237791950,	-0.937217673656235870,	-0.937235109731635490,	-0.937252543463947490,	-0.937269974853128020,	-0.937287403899133560,	
+-0.937304830601920710,	-0.937322254961445720,	-0.937339676977665180,	-0.937357096650535680,	-0.937374513980013150,	-0.937391928966054390,	-0.937409341608615660,	-0.937426751907653680,	
+-0.937444159863124790,	-0.937461565474985830,	-0.937478968743192700,	-0.937496369667702110,	-0.937513768248470550,	-0.937531164485454590,	-0.937548558378610730,	-0.937565949927895440,	
+-0.937583339133265300,	-0.937600725994676810,	-0.937618110512086540,	-0.937635492685451320,	-0.937652872514727060,	-0.937670249999870480,	-0.937687625140838370,	-0.937704997937587210,	
+-0.937722368390073950,	-0.937739736498254260,	-0.937757102262085420,	-0.937774465681523670,	-0.937791826756525840,	-0.937809185487048500,	-0.937826541873048150,	-0.937843895914481360,	
+-0.937861247611304850,	-0.937878596963475310,	-0.937895943970949550,	-0.937913288633683620,	-0.937930630951634430,	-0.937947970924758680,	-0.937965308553013080,	-0.937982643836354100,	
+-0.937999976774738900,	-0.938017307368123390,	-0.938034635616464720,	-0.938051961519719370,	-0.938069285077844040,	-0.938086606290795650,	-0.938103925158530690,	-0.938121241681005860,	
+-0.938138555858177960,	-0.938155867690004030,	-0.938173177176440110,	-0.938190484317443230,	-0.938207789112970090,	-0.938225091562977510,	-0.938242391667422290,	-0.938259689426261260,	
+-0.938276984839450770,	-0.938294277906947860,	-0.938311568628709130,	-0.938328857004691600,	-0.938346143034851870,	-0.938363426719146850,	-0.938380708057533150,	-0.938397987049967800,	
+-0.938415263696407710,	-0.938432537996809150,	-0.938449809951129250,	-0.938467079559324850,	-0.938484346821352730,	-0.938501611737169840,	-0.938518874306733090,	-0.938536134529998960,	
+-0.938553392406924370,	-0.938570647937466360,	-0.938587901121581750,	-0.938605151959227450,	-0.938622400450360160,	-0.938639646594936930,	-0.938656890392914560,	-0.938674131844249970,	
+-0.938691370948900320,	-0.938708607706821960,	-0.938725842117972160,	-0.938743074182307620,	-0.938760303899785490,	-0.938777531270362900,	-0.938794756293996110,	-0.938811978970642500,	
+-0.938829199300258880,	-0.938846417282802380,	-0.938863632918229720,	-0.938880846206498030,	-0.938898057147564140,	-0.938915265741385170,	-0.938932471987918070,	-0.938949675887120080,	
+-0.938966877438947580,	-0.938984076643357920,	-0.939001273500308040,	-0.939018468009754970,	-0.939035660171655740,	-0.939052849985967720,	-0.939070037452647170,	-0.939087222571651560,	
+-0.939104405342937930,	-0.939121585766463210,	-0.939138763842184640,	-0.939155939570059050,	-0.939173112950043690,	-0.939190283982095480,	-0.939207452666171890,	-0.939224619002229420,	
+-0.939241782990225320,	-0.939258944630116830,	-0.939276103921861010,	-0.939293260865414870,	-0.939310415460735900,	-0.939327567707780590,	-0.939344717606506290,	-0.939361865156870260,	
+-0.939379010358829540,	-0.939396153212341380,	-0.939413293717362710,	-0.939430431873850890,	-0.939447567681762960,	-0.939464701141056400,	-0.939481832251687800,	-0.939498961013614630,	
+-0.939516087426794040,	-0.939533211491183300,	-0.939550333206739420,	-0.939567452573420110,	-0.939584569591181860,	-0.939601684259982140,	-0.939618796579778200,	-0.939635906550527310,	
+-0.939653014172186610,	-0.939670119444713460,	-0.939687222368064900,	-0.939704322942198300,	-0.939721421167071020,	-0.939738517042640330,	-0.939755610568863140,	-0.939772701745696940,	
+-0.939789790573098860,	-0.939806877051026390,	-0.939823961179437120,	-0.939841042958287520,	-0.939858122387535300,	-0.939875199467137820,	-0.939892274197052350,	-0.939909346577236240,	
+-0.939926416607646640,	-0.939943484288241150,	-0.939960549618976900,	-0.939977612599811160,	-0.939994673230701850,	-0.940011731511605440,	-0.940028787442479750,	-0.940045841023282150,	
+-0.940062892253969880,	-0.940079941134500330,	-0.940096987664831300,	-0.940114031844919480,	-0.940131073674722590,	-0.940148113154198000,	-0.940165150283303160,	-0.940182185061995470,	
+-0.940199217490232280,	-0.940216247567970950,	-0.940233275295169090,	-0.940250300671784390,	-0.940267323697773550,	-0.940284344373094490,	-0.940301362697704480,	-0.940318378671561090,	
+-0.940335392294621820,	-0.940352403566844350,	-0.940369412488185510,	-0.940386419058603210,	-0.940403423278054820,	-0.940420425146497820,	-0.940437424663889800,	-0.940454421830188240,	
+-0.940471416645350610,	-0.940488409109334510,	-0.940505399222097640,	-0.940522386983596910,	-0.940539372393790260,	-0.940556355452635160,	-0.940573336160089200,	-0.940590314516109970,	
+-0.940607290520655170,	-0.940624264173681830,	-0.940641235475147890,	-0.940658204425010800,	-0.940675171023228170,	-0.940692135269757700,	-0.940709097164556860,	-0.940726056707583250,	
+-0.940743013898794560,	-0.940759968738148270,	-0.940776921225602410,	-0.940793871361113920,	-0.940810819144640710,	-0.940827764576140590,	-0.940844707655570930,	-0.940861648382889770,	
+-0.940878586758054360,	-0.940895522781022290,	-0.940912456451751590,	-0.940929387770199630,	-0.940946316736324230,	-0.940963243350083080,	-0.940980167611433770,	-0.940997089520334010,	
+-0.941014009076741600,	-0.941030926280614470,	-0.941047841131909650,	-0.941064753630585280,	-0.941081663776599080,	-0.941098571569908620,	-0.941115477010471820,	-0.941132380098246620,	
+-0.941149280833190050,	-0.941166179215260360,	-0.941183075244415250,	-0.941199968920612420,	-0.941216860243809680,	-0.941233749213964850,	-0.941250635831035520,	-0.941267520094979710,	
+-0.941284402005755360,	-0.941301281563319710,	-0.941318158767630810,	-0.941335033618646570,	-0.941351906116324690,	-0.941368776260623100,	-0.941385644051499830,	-0.941402509488912240,	
+-0.941419372572818270,	-0.941436233303175940,	-0.941453091679942950,	-0.941469947703077240,	-0.941486801372536710,	-0.941503652688279180,	-0.941520501650262460,	-0.941537348258444930,	
+-0.941554192512783610,	-0.941571034413236750,	-0.941587873959762400,	-0.941604711152318360,	-0.941621545990862560,	-0.941638378475353140,	-0.941655208605747470,	-0.941672036382003810,	
+-0.941688861804080070,	-0.941705684871934180,	-0.941722505585524060,	-0.941739323944807750,	-0.941756139949743050,	-0.941772953600288010,	-0.941789764896400540,	-0.941806573838039010,	
+-0.941823380425160780,	-0.941840184657724010,	-0.941856986535686840,	-0.941873786059007180,	-0.941890583227643410,	-0.941907378041552890,	-0.941924170500693880,	-0.941940960605024410,	
+-0.941957748354502520,	-0.941974533749086350,	-0.941991316788733820,	-0.942008097473402970,	-0.942024875803051940,	-0.942041651777638660,	-0.942058425397121480,	-0.942075196661458110,	
+-0.942091965570606590,	-0.942108732124525280,	-0.942125496323172110,	-0.942142258166505100,	-0.942159017654482840,	-0.942175774787062710,	-0.942192529564203190,	-0.942209281985862290,	
+-0.942226032051998170,	-0.942242779762568980,	-0.942259525117532970,	-0.942276268116847950,	-0.942293008760472390,	-0.942309747048364570,	-0.942326482980482050,	-0.942343216556783440,	
+-0.942359947777226650,	-0.942376676641770050,	-0.942393403150371790,	-0.942410127302990230,	-0.942426849099583190,	-0.942443568540108910,	-0.942460285624525770,	-0.942477000352791920,	
+-0.942493712724865480,	-0.942510422740704850,	-0.942527130400268140,	-0.942543835703513630,	-0.942560538650399790,	-0.942577239240884320,	-0.942593937474925700,	-0.942610633352482300,	
+-0.942627326873512250,	-0.942644018037974040,	-0.942660706845825920,	-0.942677393297025820,	-0.942694077391532210,	-0.942710759129303360,	-0.942727438510297720,	-0.942744115534473350,	
+-0.942760790201788820,	-0.942777462512202290,	-0.942794132465672010,	-0.942810800062156450,	-0.942827465301614210,	-0.942844128184003090,	-0.942860788709281470,	-0.942877446877408040,	
+-0.942894102688340950,	-0.942910756142038790,	-0.942927407238459580,	-0.942944055977561810,	-0.942960702359303850,	-0.942977346383644170,	-0.942993988050541130,	-0.943010627359953110,	
+-0.943027264311838590,	-0.943043898906155810,	-0.943060531142863370,	-0.943077161021919850,	-0.943093788543283180,	-0.943110413706911950,	-0.943127036512764750,	-0.943143656960799940,	
+-0.943160275050975990,	-0.943176890783251620,	-0.943193504157584740,	-0.943210115173934160,	-0.943226723832258250,	-0.943243330132515490,	-0.943259934074664460,	-0.943276535658663650,	
+-0.943293134884471420,	-0.943309731752046350,	-0.943326326261347270,	-0.943342918412332090,	-0.943359508204959510,	-0.943376095639188340,	-0.943392680714976840,	-0.943409263432283600,	
+-0.943425843791067530,	-0.943442421791286570,	-0.943458997432899520,	-0.943475570715864960,	-0.943492141640141500,	-0.943508710205687720,	-0.943525276412462200,	-0.943541840260423430,	
+-0.943558401749530100,	-0.943574960879741020,	-0.943591517651014230,	-0.943608072063308660,	-0.943624624116582880,	-0.943641173810795600,	-0.943657721145905400,	-0.943674266121871110,	
+-0.943690808738650970,	-0.943707348996203680,	-0.943723886894488160,	-0.943740422433462790,	-0.943756955613086370,	-0.943773486433317710,	-0.943790014894115180,	-0.943806540995437700,	
+-0.943823064737243870,	-0.943839586119492590,	-0.943856105142142130,	-0.943872621805151300,	-0.943889136108479020,	-0.943905648052083880,	-0.943922157635924910,	-0.943938664859960250,	
+-0.943955169724148950,	-0.943971672228449690,	-0.943988172372821290,	-0.944004670157222450,	-0.944021165581611870,	-0.944037658645948460,	-0.944054149350190830,	-0.944070637694297890,	
+-0.944087123678228670,	-0.944103607301941320,	-0.944120088565394870,	-0.944136567468548350,	-0.944153044011360240,	-0.944169518193789690,	-0.944185990015795510,	-0.944202459477336160,	
+-0.944218926578370590,	-0.944235391318857700,	-0.944251853698756420,	-0.944268313718025440,	-0.944284771376623590,	-0.944301226674510000,	-0.944317679611643260,	-0.944334130187982510,	
+-0.944350578403486240,	-0.944367024258113590,	-0.944383467751823250,	-0.944399908884574370,	-0.944416347656325540,	-0.944432784067036350,	-0.944449218116664710,	-0.944465649805170120,	
+-0.944482079132511480,	-0.944498506098647490,	-0.944514930703537310,	-0.944531352947139860,	-0.944547772829413930,	-0.944564190350318580,	-0.944580605509813150,	-0.944597018307855810,	
+-0.944613428744405900,	-0.944629836819422470,	-0.944646242532864440,	-0.944662645884690840,	-0.944679046874860930,	-0.944695445503333060,	-0.944711841770066620,	-0.944728235675020510,	
+-0.944744627218153890,	-0.944761016399425670,	-0.944777403218794890,	-0.944793787676220580,	-0.944810169771661880,	-0.944826549505077720,	-0.944842926876427460,	-0.944859301885669580,	
+-0.944875674532763440,	-0.944892044817668200,	-0.944908412740342760,	-0.944924778300746620,	-0.944941141498838230,	-0.944957502334576980,	-0.944973860807922010,	-0.944990216918832340,	
+-0.945006570667267120,	-0.945022922053185500,	-0.945039271076546620,	-0.945055617737309510,	-0.945071962035433310,	-0.945088303970877620,	-0.945104643543600800,	-0.945120980753562430,	
+-0.945137315600721560,	-0.945153648085037320,	-0.945169978206469420,	-0.945186305964976210,	-0.945202631360517190,	-0.945218954393051590,	-0.945235275062538680,	-0.945251593368937600,	
+-0.945267909312207390,	-0.945284222892307510,	-0.945300534109197120,	-0.945316842962835360,	-0.945333149453181700,	-0.945349453580194950,	-0.945365755343834600,	-0.945382054744059790,	
+-0.945398351780829870,	-0.945414646454104110,	-0.945430938763841990,	-0.945447228710002200,	-0.945463516292544330,	-0.945479801511427740,	-0.945496084366611590,	-0.945512364858055230,	
+-0.945528642985718040,	-0.945544918749559150,	-0.945561192149538040,	-0.945577463185614200,	-0.945593731857746420,	-0.945609998165894310,	-0.945626262110017210,	-0.945642523690074400,	
+-0.945658782906025340,	-0.945675039757829630,	-0.945691294245445960,	-0.945707546368834140,	-0.945723796127953430,	-0.945740043522763200,	-0.945756288553222800,	-0.945772531219291720,	
+-0.945788771520929440,	-0.945805009458095090,	-0.945821245030748270,	-0.945837478238848560,	-0.945853709082355000,	-0.945869937561227060,	-0.945886163675424330,	-0.945902387424906180,	
+-0.945918608809632300,	-0.945934827829561620,	-0.945951044484653950,	-0.945967258774868650,	-0.945983470700165200,	-0.945999680260502960,	-0.946015887455841640,	-0.946032092286140600,	
+-0.946048294751359320,	-0.946064494851457270,	-0.946080692586394270,	-0.946096887956129230,	-0.946113080960622080,	-0.946129271599832070,	-0.946145459873719010,	-0.946161645782242490,	
+-0.946177829325361650,	-0.946194010503036200,	-0.946210189315225710,	-0.946226365761889790,	-0.946242539842988010,	-0.946258711558479740,	-0.946274880908324790,	-0.946291047892482640,	
+-0.946307212510912770,	-0.946323374763575310,	-0.946339534650428970,	-0.946355692171433890,	-0.946371847326549550,	-0.946388000115735650,	-0.946404150538951660,	-0.946420298596157620,	
+-0.946436444287312550,	-0.946452587612376380,	-0.946468728571308700,	-0.946484867164069210,	-0.946501003390617600,	-0.946517137250913470,	-0.946533268744916390,	-0.946549397872586300,	
+-0.946565524633882880,	-0.946581649028765400,	-0.946597771057193890,	-0.946613890719127830,	-0.946630008014527120,	-0.946646122943351380,	-0.946662235505560500,	-0.946678345701113870,	
+-0.946694453529971390,	-0.946710558992092670,	-0.946726662087437610,	-0.946742762815965920,	-0.946758861177637300,	-0.946774957172411560,	-0.946791050800248390,	-0.946807142061107940,	
+-0.946823230954949250,	-0.946839317481732560,	-0.946855401641417570,	-0.946871483433963990,	-0.946887562859331840,	-0.946903639917480940,	-0.946919714608370770,	-0.946935786931961230,	
+-0.946951856888212260,	-0.946967924477083670,	-0.946983989698535140,	-0.947000052552526840,	-0.947016113039018230,	-0.947032171157969450,	-0.947048226909340210,	-0.947064280293090640,	
+-0.947080331309180120,	-0.947096379957568790,	-0.947112426238216560,	-0.947128470151083150,	-0.947144511696128900,	-0.947160550873313080,	-0.947176587682595940,	-0.947192622123937290,	
+-0.947208654197297050,	-0.947224683902635260,	-0.947240711239911600,	-0.947256736209086350,	-0.947272758810119190,	-0.947288779042970040,	-0.947304796907599390,	-0.947320812403966370,	
+-0.947336825532031360,	-0.947352836291754150,	-0.947368844683095010,	-0.947384850706013750,	-0.947400854360470610,	-0.947416855646424970,	-0.947432854563837300,	-0.947448851112667410,	
+-0.947464845292875450,	-0.947480837104421440,	-0.947496826547265190,	-0.947512813621366970,	-0.947528798326686680,	-0.947544780663184700,	-0.947560760630820510,	-0.947576738229554460,	
+-0.947592713459346480,	-0.947608686320156710,	-0.947624656811945300,	-0.947640624934672380,	-0.947656590688297770,	-0.947672554072781610,	-0.947688515088084050,	-0.947704473734165330,	
+-0.947720430010985270,	-0.947736383918504230,	-0.947752335456682140,	-0.947768284625479350,	-0.947784231424856020,	-0.947800175854771830,	-0.947816117915187270,	-0.947832057606062370,	
+-0.947847994927357380,	-0.947863929879032340,	-0.947879862461047720,	-0.947895792673363210,	-0.947911720515939300,	-0.947927645988736020,	-0.947943569091713620,	-0.947959489824832250,	
+-0.947975408188052260,	-0.947991324181333690,	-0.948007237804636800,	-0.948023149057921840,	-0.948039057941149290,	-0.948054964454278840,	-0.948070868597270850,	-0.948086770370085820,	
+-0.948102669772683870,	-0.948118566805025490,	-0.948134461467070370,	-0.948150353758779100,	-0.948166243680112040,	-0.948182131231029230,	-0.948198016411491260,	-0.948213899221458160,	
+-0.948229779660890280,	-0.948245657729748000,	-0.948261533427991580,	-0.948277406755581590,	-0.948293277712477730,	-0.948309146298640830,	-0.948325012514031010,	-0.948340876358608640,	
+-0.948356737832333980,	-0.948372596935167960,	-0.948388453667070030,	-0.948404308028000910,	-0.948420160017921180,	-0.948436009636790980,	-0.948451856884570680,	-0.948467701761220860,	
+-0.948483544266701670,	-0.948499384400973700,	-0.948515222163997640,	-0.948531057555733080,	-0.948546890576140940,	-0.948562721225181590,	-0.948578549502815390,	-0.948594375409002820,	
+-0.948610198943704690,	-0.948626020106880690,	-0.948641838898491630,	-0.948657655318497990,	-0.948673469366860260,	-0.948689281043538780,	-0.948705090348494150,	-0.948720897281686850,	
+-0.948736701843077230,	-0.948752504032626120,	-0.948768303850293540,	-0.948784101296040180,	-0.948799896369826530,	-0.948815689071613180,	-0.948831479401360590,	-0.948847267359029580,	
+-0.948863052944580070,	-0.948878836157972970,	-0.948894616999168770,	-0.948910395468128050,	-0.948926171564811400,	-0.948941945289179190,	-0.948957716641192220,	-0.948973485620810960,	
+-0.948989252227995910,	-0.949005016462708070,	-0.949020778324907390,	-0.949036537814554770,	-0.949052294931610810,	-0.949068049676036090,	-0.949083802047791520,	-0.949099552046837160,	
+-0.949115299673134020,	-0.949131044926642460,	-0.949146787807323420,	-0.949162528315137370,	-0.949178266450044990,	-0.949194002212007000,	-0.949209735600983980,	-0.949225466616936630,	
+-0.949241195259825870,	-0.949256921529611830,	-0.949272645426255450,	-0.949288366949717520,	-0.949304086099958640,	-0.949319802876939620,	-0.949335517280621270,	-0.949351229310963940,	
+-0.949366938967928450,	-0.949382646251475730,	-0.949398351161566230,	-0.949414053698161010,	-0.949429753861220640,	-0.949445451650705820,	-0.949461147066577360,	-0.949476840108796290,	
+-0.949492530777322870,	-0.949508219072118240,	-0.949523904993142990,	-0.949539588540357920,	-0.949555269713723840,	-0.949570948513202010,	-0.949586624938752450,	-0.949602298990336320,	
+-0.949617970667914420,	-0.949633639971447670,	-0.949649306900896770,	-0.949664971456222640,	-0.949680633637386080,	-0.949696293444347920,	-0.949711950877069280,	-0.949727605935510530,	
+-0.949743258619632710,	-0.949758908929396740,	-0.949774556864763640,	-0.949790202425694010,	-0.949805845612149200,	-0.949821486424089480,	-0.949837124861475980,	-0.949852760924269730,	
+-0.949868394612431670,	-0.949884025925922470,	-0.949899654864703290,	-0.949915281428734940,	-0.949930905617978440,	-0.949946527432394610,	-0.949962146871944800,	-0.949977763936589280,	
+-0.949993378626289410,	-0.950008990941006100,	-0.950024600880700290,	-0.950040208445333210,	-0.950055813634865350,	-0.950071416449258080,	-0.950087016888472080,	-0.950102614952468620,	
+-0.950118210641208720,	-0.950133803954653190,	-0.950149394892763180,	-0.950164983455499600,	-0.950180569642823600,	-0.950196153454696550,	-0.950211734891078800,	-0.950227313951931610,	
+-0.950242890637216230,	-0.950258464946893590,	-0.950274036880924820,	-0.950289606439271180,	-0.950305173621893370,	-0.950320738428752530,	-0.950336300859809800,	-0.950351860915026440,	
+-0.950367418594363360,	-0.950382973897781700,	-0.950398526825242620,	-0.950414077376707240,	-0.950429625552136950,	-0.950445171351492310,	-0.950460714774734820,	-0.950476255821825490,	
+-0.950491794492725470,	-0.950507330787396020,	-0.950522864705798500,	-0.950538396247893490,	-0.950553925413642590,	-0.950569452203006810,	-0.950584976615947430,	-0.950600498652425570,	
+-0.950616018312402500,	-0.950631535595839460,	-0.950647050502697490,	-0.950662563032938170,	-0.950678073186522090,	-0.950693580963410940,	-0.950709086363565880,	-0.950724589386948040,	
+-0.950740090033518670,	-0.950755588303239360,	-0.950771084196070930,	-0.950786577711974720,	-0.950802068850912010,	-0.950817557612844140,	-0.950833043997732500,	-0.950848528005538100,	
+-0.950864009636222420,	-0.950879488889746720,	-0.950894965766072350,	-0.950910440265160810,	-0.950925912386972880,	-0.950941382131470170,	-0.950956849498614030,	-0.950972314488365720,	
+-0.950987777100686940,	-0.951003237335538490,	-0.951018695192881850,	-0.951034150672678600,	-0.951049603774889900,	-0.951065054499477090,	-0.951080502846401780,	-0.951095948815625200,	
+-0.951111392407108620,	-0.951126833620813740,	-0.951142272456701910,	-0.951157708914734170,	-0.951173142994872210,	-0.951188574697077290,	-0.951204004021311000,	-0.951219430967534700,	
+-0.951234855535710190,	-0.951250277725798070,	-0.951265697537760360,	-0.951281114971558430,	-0.951296530027153750,	-0.951311942704507580,	-0.951327353003581730,	-0.951342760924337450,	
+-0.951358166466736210,	-0.951373569630739820,	-0.951388970416309320,	-0.951404368823406290,	-0.951419764851992420,	-0.951435158502029090,	-0.951450549773477980,	-0.951465938666300690,	
+-0.951481325180458250,	-0.951496709315912460,	-0.951512091072625020,	-0.951527470450557190,	-0.951542847449670880,	-0.951558222069927350,	-0.951573594311288180,	-0.951588964173715190,	
+-0.951604331657169960,	-0.951619696761613620,	-0.951635059487008110,	-0.951650419833314890,	-0.951665777800495660,	-0.951681133388512010,	-0.951696486597325750,	-0.951711837426898020,	
+-0.951727185877190630,	-0.951742531948165380,	-0.951757875639783760,	-0.951773216952007450,	-0.951788555884798050,	-0.951803892438117360,	-0.951819226611926860,	-0.951834558406188360,	
+-0.951849887820863660,	-0.951865214855914020,	-0.951880539511301250,	-0.951895861786987260,	-0.951911181682933540,	-0.951926499199102220,	-0.951941814335454330,	-0.951957127091951900,	
+-0.951972437468556640,	-0.951987745465230240,	-0.952003051081934610,	-0.952018354318631240,	-0.952033655175282050,	-0.952048953651848720,	-0.952064249748292960,	-0.952079543464576790,	
+-0.952094834800661590,	-0.952110123756509270,	-0.952125410332081650,	-0.952140694527340510,	-0.952155976342247690,	-0.952171255776765090,	-0.952186532830854190,	-0.952201807504476920,	
+-0.952217079797595070,	-0.952232349710170570,	-0.952247617242165220,	-0.952262882393540840,	-0.952278145164259130,	-0.952293405554282210,	-0.952308663563571910,	-0.952323919192089810,	
+-0.952339172439797820,	-0.952354423306657980,	-0.952369671792631990,	-0.952384917897681870,	-0.952400161621769660,	-0.952415402964856940,	-0.952430641926905520,	-0.952445878507877650,	
+-0.952461112707735040,	-0.952476344526439590,	-0.952491573963953340,	-0.952506801020238100,	-0.952522025695255900,	-0.952537247988968880,	-0.952552467901338520,	-0.952567685432326950,	
+-0.952582900581896210,	-0.952598113350008100,	-0.952613323736624880,	-0.952628531741708470,	-0.952643737365220570,	-0.952658940607123310,	-0.952674141467378610,	-0.952689339945948620,	
+-0.952704536042795260,	-0.952719729757880550,	-0.952734921091166640,	-0.952750110042615340,	-0.952765296612188670,	-0.952780480799849120,	-0.952795662605558150,	-0.952810842029277900,	
+-0.952826019070970640,	-0.952841193730598280,	-0.952856366008123290,	-0.952871535903507040,	-0.952886703416712000,	-0.952901868547700200,	-0.952917031296433680,	-0.952932191662874570,	
+-0.952947349646985020,	-0.952962505248727050,	-0.952977658468062930,	-0.952992809304954560,	-0.953007957759364420,	-0.953023103831254210,	-0.953038247520586190,	-0.953053388827322600,	
+-0.953068527751425480,	-0.953083664292857070,	-0.953098798451579740,	-0.953113930227555190,	-0.953129059620745790,	-0.953144186631113670,	-0.953159311258621190,	-0.953174433503230390,	
+-0.953189553364903520,	-0.953204670843602720,	-0.953219785939290350,	-0.953234898651928670,	-0.953250008981479490,	-0.953265116927905390,	-0.953280222491168390,	-0.953295325671230880,	
+-0.953310426468055080,	-0.953325524881603380,	-0.953340620911837690,	-0.953355714558720480,	-0.953370805822213900,	-0.953385894702280300,	-0.953400981198882060,	-0.953416065311981310,	
+-0.953431147041540420,	-0.953446226387521630,	-0.953461303349887550,	-0.953476377928599960,	-0.953491450123621350,	-0.953506519934914200,	-0.953521587362440750,	-0.953536652406163250,	
+-0.953551715066044530,	-0.953566775342046150,	-0.953581833234130820,	-0.953596888742261010,	-0.953611941866398860,	-0.953626992606506960,	-0.953642040962547450,	-0.953657086934482920,	
+-0.953672130522275730,	-0.953687171725888130,	-0.953702210545282920,	-0.953717246980421820,	-0.953732281031267730,	-0.953747312697782900,	-0.953762341979929710,	-0.953777368877670950,	
+-0.953792393390968550,	-0.953807415519785210,	-0.953822435264083280,	-0.953837452623825240,	-0.953852467598973570,	-0.953867480189490750,	-0.953882490395339230,	-0.953897498216481510,	
+-0.953912503652880050,	-0.953927506704497550,	-0.953942507371296040,	-0.953957505653238220,	-0.953972501550286680,	-0.953987495062403880,	-0.954002486189552410,	-0.954017474931694860,	
+-0.954032461288793490,	-0.954047445260810870,	-0.954062426847709700,	-0.954077406049452350,	-0.954092382866001620,	-0.954107357297319880,	-0.954122329343369710,	-0.954137299004113810,	
+-0.954152266279514880,	-0.954167231169534950,	-0.954182193674137040,	-0.954197153793283630,	-0.954212111526937300,	-0.954227066875060650,	-0.954242019837616700,	-0.954256970414567360,	
+-0.954271918605875680,	-0.954286864411504120,	-0.954301807831415490,	-0.954316748865572270,	-0.954331687513937150,	-0.954346623776472840,	-0.954361557653142010,	-0.954376489143907490,	
+-0.954391418248731530,	-0.954406344967577040,	-0.954421269300406610,	-0.954436191247183040,	-0.954451110807869040,	-0.954466027982427520,	-0.954480942770820630,	-0.954495855173011390,	
+-0.954510765188962500,	-0.954525672818636760,	-0.954540578061996770,	-0.954555480919005330,	-0.954570381389625240,	-0.954585279473819210,	-0.954600175171549940,	-0.954615068482780550,	
+-0.954629959407473190,	-0.954644847945590900,	-0.954659734097096480,	-0.954674617861952730,	-0.954689499240122810,	-0.954704378231568730,	-0.954719254836253750,	-0.954734129054140680,	
+-0.954749000885192320,	-0.954763870329371380,	-0.954778737386640760,	-0.954793602056963290,	-0.954808464340301870,	-0.954823324236619310,	-0.954838181745878640,	-0.954853036868042240,	
+-0.954867889603073340,	-0.954882739950934640,	-0.954897587911589070,	-0.954912433484999880,	-0.954927276671129310,	-0.954942117469940510,	-0.954956955881396400,	-0.954971791905460000,	
+-0.954986625542094010,	-0.955001456791261580,	-0.955016285652925400,	-0.955031112127048500,	-0.955045936213593900,	-0.955060757912524650,	-0.955075577223803320,	-0.955090394147393050,	
+-0.955105208683256770,	-0.955120020831357390,	-0.955134830591658050,	-0.955149637964121890,	-0.955164442948711280,	-0.955179245545389690,	-0.955194045754119920,	-0.955208843574865020,	
+-0.955223639007588000,	-0.955238432052252010,	-0.955253222708819850,	-0.955268010977254560,	-0.955282796857519600,	-0.955297580349577350,	-0.955312361453391160,	-0.955327140168924060,	
+-0.955341916496139200,	-0.955356690434999490,	-0.955371461985468300,	-0.955386231147508090,	-0.955400997921082460,	-0.955415762306154330,	-0.955430524302686710,	-0.955445283910642760,	
+-0.955460041129985730,	-0.955474795960678520,	-0.955489548402684300,	-0.955504298455966520,	-0.955519046120487660,	-0.955533791396211200,	-0.955548534283100380,	-0.955563274781118130,	
+-0.955578012890227700,	-0.955592748610392450,	-0.955607481941575190,	-0.955622212883739160,	-0.955636941436847520,	-0.955651667600863620,	-0.955666391375750490,	-0.955681112761471500,	
+-0.955695831757989670,	-0.955710548365268250,	-0.955725262583270400,	-0.955739974411959680,	-0.955754683851298800,	-0.955769390901251240,	-0.955784095561780120,	-0.955798797832848820,	
+-0.955813497714420810,	-0.955828195206458790,	-0.955842890308926220,	-0.955857583021786470,	-0.955872273345002690,	-0.955886961278538340,	-0.955901646822356570,	-0.955916329976420620,	
+-0.955931010740693870,	-0.955945689115139550,	-0.955960365099721380,	-0.955975038694401920,	-0.955989709899145000,	-0.956004378713913640,	-0.956019045138671420,	-0.956033709173381600,	
+-0.956048370818007750,	-0.956063030072512700,	-0.956077686936860130,	-0.956092341411013290,	-0.956106993494935660,	-0.956121643188590500,	-0.956136290491941150,	-0.956150935404951220,	
+-0.956165577927583830,	-0.956180218059802800,	-0.956194855801571040,	-0.956209491152852030,	-0.956224124113609350,	-0.956238754683806370,	-0.956253382863406440,	-0.956268008652373380,	
+-0.956282632050669990,	-0.956297253058260080,	-0.956311871675107010,	-0.956326487901174250,	-0.956341101736425280,	-0.956355713180823570,	-0.956370322234332600,	-0.956384928896915730,	
+-0.956399533168536880,	-0.956414135049158840,	-0.956428734538745550,	-0.956443331637260470,	-0.956457926344666980,	-0.956472518660928750,	-0.956487108586009380,	-0.956501696119872010,	
+-0.956516281262480450,	-0.956530864013798170,	-0.956545444373788630,	-0.956560022342415660,	-0.956574597919642500,	-0.956589171105432850,	-0.956603741899750390,	-0.956618310302558510,	
+-0.956632876313820990,	-0.956647439933501210,	-0.956662001161562750,	-0.956676559997969300,	-0.956691116442684340,	-0.956705670495672010,	-0.956720222156895120,	-0.956734771426317800,	
+-0.956749318303903530,	-0.956763862789615890,	-0.956778404883418590,	-0.956792944585275310,	-0.956807481895149750,	-0.956822016813005380,	-0.956836549338806020,	-0.956851079472515460,	
+-0.956865607214096970,	-0.956880132563514560,	-0.956894655520731720,	-0.956909176085712350,	-0.956923694258419940,	-0.956938210038818630,	-0.956952723426871430,	-0.956967234422542500,	
+-0.956981743025795420,	-0.956996249236594100,	-0.957010753054902020,	-0.957025254480683210,	-0.957039753513901140,	-0.957054250154519730,	-0.957068744402502890,	-0.957083236257814000,	
+-0.957097725720417070,	-0.957112212790275700,	-0.957126697467353900,	-0.957141179751615280,	-0.957155659643024070,	-0.957170137141543420,	-0.957184612247137360,	-0.957199084959769800,	
+-0.957213555279404550,	-0.957228023206005420,	-0.957242488739536210,	-0.957256951879960740,	-0.957271412627243020,	-0.957285870981346880,	-0.957300326942235880,	-0.957314780509874060,	
+-0.957329231684225230,	-0.957343680465253420,	-0.957358126852922320,	-0.957372570847196290,	-0.957387012448038480,	-0.957401451655413130,	-0.957415888469284160,	-0.957430322889615490,	
+-0.957444754916370930,	-0.957459184549514620,	-0.957473611789010250,	-0.957488036634821850,	-0.957502459086913450,	-0.957516879145249080,	-0.957531296809792320,	-0.957545712080507210,	
+-0.957560124957357870,	-0.957574535440308240,	-0.957588943529322560,	-0.957603349224364190,	-0.957617752525397490,	-0.957632153432386390,	-0.957646551945295020,	-0.957660948064087080,	
+-0.957675341788726930,	-0.957689733119178380,	-0.957704122055405450,	-0.957718508597372180,	-0.957732892745043030,	-0.957747274498381260,	-0.957761653857351350,	-0.957776030821917310,	
+-0.957790405392043300,	-0.957804777567693110,	-0.957819147348831330,	-0.957833514735421440,	-0.957847879727427690,	-0.957862242324814210,	-0.957876602527545250,	-0.957890960335584740,	
+-0.957905315748896810,	-0.957919668767445610,	-0.957934019391195160,	-0.957948367620110040,	-0.957962713454153620,	-0.957977056893290490,	-0.957991397937484780,	-0.958005736586700410,	
+-0.958020072840901850,	-0.958034406700053240,	-0.958048738164118510,	-0.958063067233061780,	-0.958077393906847540,	-0.958091718185439700,	-0.958106040068802620,	-0.958120359556900340,	
+-0.958134676649697310,	-0.958148991347157470,	-0.958163303649245510,	-0.958177613555924900,	-0.958191921067160330,	-0.958206226182916070,	-0.958220528903156120,	-0.958234829227844860,	
+-0.958249127156946770,	-0.958263422690425640,	-0.958277715828245950,	-0.958292006570371950,	-0.958306294916767890,	-0.958320580867398240,	-0.958334864422227040,	-0.958349145581218640,	
+-0.958363424344337410,	-0.958377700711547710,	-0.958391974682813900,	-0.958406246258099890,	-0.958420515437370390,	-0.958434782220589530,	-0.958449046607721680,	-0.958463308598731520,	
+-0.958477568193582760,	-0.958491825392240090,	-0.958506080194667990,	-0.958520332600830580,	-0.958534582610692350,	-0.958548830224217660,	-0.958563075441370870,	-0.958577318262116450,	
+-0.958591558686418770,	-0.958605796714242290,	-0.958620032345551150,	-0.958634265580309950,	-0.958648496418483150,	-0.958662724860035010,	-0.958676950904930100,	-0.958691174553133020,	
+-0.958705395804607790,	-0.958719614659319100,	-0.958733831117231320,	-0.958748045178309030,	-0.958762256842516590,	-0.958776466109818480,	-0.958790672980179170,	-0.958804877453563240,	
+-0.958819079529935390,	-0.958833279209259540,	-0.958847476491500590,	-0.958861671376622820,	-0.958875863864590890,	-0.958890053955369410,	-0.958904241648922960,	-0.958918426945215670,	
+-0.958932609844212360,	-0.958946790345877380,	-0.958960968450175530,	-0.958975144157071300,	-0.958989317466529160,	-0.959003488378513680,	-0.959017656892989570,	-0.959031823009921510,	
+-0.959045986729273660,	-0.959060148051010810,	-0.959074306975097660,	-0.959088463501498680,	-0.959102617630178570,	-0.959116769361102240,	-0.959130918694233610,	-0.959145065629537720,	
+-0.959159210166979250,	-0.959173352306522680,	-0.959187492048132690,	-0.959201629391774000,	-0.959215764337411290,	-0.959229896885009150,	-0.959244027034532270,	-0.959258154785945560,	
+-0.959272280139213170,	-0.959286403094300130,	-0.959300523651171020,	-0.959314641809790650,	-0.959328757570123920,	-0.959342870932135110,	-0.959356981895789110,	-0.959371090461050620,	
+-0.959385196627884350,	-0.959399300396255090,	-0.959413401766127660,	-0.959427500737466740,	-0.959441597310237040,	-0.959455691484403240,	-0.959469783259930600,	-0.959483872636783250,	
+-0.959497959614926120,	-0.959512044194324120,	-0.959526126374942060,	-0.959540206156744620,	-0.959554283539696960,	-0.959568358523763320,	-0.959582431108908840,	-0.959596501295098210,	
+-0.959610569082296360,	-0.959624634470468090,	-0.959638697459578300,	-0.959652758049591710,	-0.959666816240473230,	-0.959680872032187880,	-0.959694925424700140,	-0.959708976417975150,	
+-0.959723025011977700,	-0.959737071206672620,	-0.959751115002024920,	-0.959765156397999640,	-0.959779195394561360,	-0.959793231991674880,	-0.959807266189305450,	-0.959821297987417890,	
+-0.959835327385976990,	-0.959849354384947780,	-0.959863378984295300,	-0.959877401183984240,	-0.959891420983979950,	-0.959905438384246910,	-0.959919453384750270,	-0.959933465985454930,	
+-0.959947476186326030,	-0.959961483987328280,	-0.959975489388427250,	-0.959989492389587080,	-0.960003492990773370,	-0.960017491191950790,	-0.960031486993084490,	-0.960045480394139510,	
+-0.960059471395080850,	-0.960073459995873460,	-0.960087446196482450,	-0.960101429996872760,	-0.960115411397009840,	-0.960129390396858070,	-0.960143366996382920,	-0.960157341195549300,	
+-0.960171312994322350,	-0.960185282392667320,	-0.960199249390548790,	-0.960213213987932250,	-0.960227176184782590,	-0.960241135981064970,	-0.960255093376744640,	-0.960269048371786500,	
+-0.960283000966155710,	-0.960296951159817500,	-0.960310898952736800,	-0.960324844344879190,	-0.960338787336209250,	-0.960352727926692240,	-0.960366666116293400,	-0.960380601904977980,	
+-0.960394535292711020,	-0.960408466279457970,	-0.960422394865183550,	-0.960436321049853100,	-0.960450244833431890,	-0.960464166215885040,	-0.960478085197177700,	-0.960492001777275230,	
+-0.960505915956142760,	-0.960519827733745560,	-0.960533737110048860,	-0.960547644085017690,	-0.960561548658617430,	-0.960575450830813300,	-0.960589350601570470,	-0.960603247970854280,	
+-0.960617142938630320,	-0.960631035504863060,	-0.960644925669518420,	-0.960658813432561320,	-0.960672698793957220,	-0.960686581753671390,	-0.960700462311669170,	-0.960714340467915710,	
+-0.960728216222376470,	-0.960742089575016830,	-0.960755960525801810,	-0.960769829074696880,	-0.960783695221667290,	-0.960797558966678510,	-0.960811420309695910,	-0.960825279250684950,	
+-0.960839135789610550,	-0.960852989926438310,	-0.960866841661133560,	-0.960880690993661690,	-0.960894537923988160,	-0.960908382452078320,	-0.960922224577897440,	-0.960936064301410990,	
+-0.960949901622584420,	-0.960963736541383340,	-0.960977569057772760,	-0.960991399171718160,	-0.961005226883185020,	-0.961019052192138900,	-0.961032875098545400,	-0.961046695602369440,	
+-0.961060513703576700,	-0.961074329402132670,	-0.961088142698002910,	-0.961101953591152690,	-0.961115762081547700,	-0.961129568169153180,	-0.961143371853934840,	-0.961157173135858020,	
+-0.961170972014888550,	-0.961184768490991330,	-0.961198562564132280,	-0.961212354234276760,	-0.961226143501390350,	-0.961239930365438640,	-0.961253714826387330,	-0.961267496884201430,	
+-0.961281276538846870,	-0.961295053790289120,	-0.961308828638493650,	-0.961322601083426150,	-0.961336371125052210,	-0.961350138763337300,	-0.961363903998247000,	-0.961377666829747230,	
+-0.961391427257803020,	-0.961405185282380280,	-0.961418940903444600,	-0.961432694120961440,	-0.961446444934896730,	-0.961460193345216040,	-0.961473939351884630,	-0.961487682954868310,	
+-0.961501424154132870,	-0.961515162949643900,	-0.961528899341366980,	-0.961542633329267820,	-0.961556364913312090,	-0.961570094093465390,	-0.961583820869693740,	-0.961597545241962280,	
+-0.961611267210236930,	-0.961624986774483490,	-0.961638703934667550,	-0.961652418690754800,	-0.961666131042711260,	-0.961679840990502190,	-0.961693548534093500,	-0.961707253673451000,	
+-0.961720956408540270,	-0.961734656739327230,	-0.961748354665777460,	-0.961762050187856880,	-0.961775743305531170,	-0.961789434018766040,	-0.961803122327527630,	-0.961816808231781170,	
+-0.961830491731492600,	-0.961844172826627930,	-0.961857851517152750,	-0.961871527803033200,	-0.961885201684234640,	-0.961898873160722980,	-0.961912542232464250,	-0.961926208899424040,	
+-0.961939873161568370,	-0.961953535018863050,	-0.961967194471273880,	-0.961980851518766670,	-0.961994506161307330,	-0.962008158398862000,	-0.962021808231396050,	-0.962035455658875600,	
+-0.962049100681266480,	-0.962062743298534580,	-0.962076383510645840,	-0.962090021317566380,	-0.962103656719261680,	-0.962117289715697770,	-0.962130920306840660,	-0.962144548492656290,	
+-0.962158174273110460,	-0.962171797648169290,	-0.962185418617798600,	-0.962199037181964310,	-0.962212653340632770,	-0.962226267093769240,	-0.962239878441340070,	-0.962253487383311290,	
+-0.962267093919648710,	-0.962280698050318460,	-0.962294299775286580,	-0.962307899094518860,	-0.962321496007981340,	-0.962335090515640030,	-0.962348682617460980,	-0.962362272313410320,	
+-0.962375859603453950,	-0.962389444487557920,	-0.962403026965688250,	-0.962416607037811290,	-0.962430184703892520,	-0.962443759963898420,	-0.962457332817794780,	-0.962470903265547850,	
+-0.962484471307123670,	-0.962498036942488590,	-0.962511600171608080,	-0.962525160994448630,	-0.962538719410976350,	-0.962552275421157180,	-0.962565829024957350,	-0.962579380222342910,	
+-0.962592929013280090,	-0.962606475397734920,	-0.962620019375673540,	-0.962633560947062320,	-0.962647100111867050,	-0.962660636870053990,	-0.962674171221589270,	-0.962687703166439150,	
+-0.962701232704570090,	-0.962714759835947680,	-0.962728284560538380,	-0.962741806878308350,	-0.962755326789223710,	-0.962768844293250940,	-0.962782359390355950,	-0.962795872080504990,	
+-0.962809382363664420,	-0.962822890239800500,	-0.962836395708879470,	-0.962849898770867240,	-0.962863399425730290,	-0.962876897673434760,	-0.962890393513947120,	-0.962903886947233610,	
+-0.962917377973260160,	-0.962930866591993340,	-0.962944352803399290,	-0.962957836607444380,	-0.962971318004094970,	-0.962984796993317070,	-0.962998273575077390,	-0.963011747749341840,	
+-0.963025219516077000,	-0.963038688875249350,	-0.963052155826824800,	-0.963065620370769810,	-0.963079082507050770,	-0.963092542235634010,	-0.963105999556485900,	-0.963119454469573030,	
+-0.963132906974861310,	-0.963146357072317330,	-0.963159804761907430,	-0.963173250043597990,	-0.963186692917355480,	-0.963200133383146140,	-0.963213571440936560,	-0.963227007090692980,	
+-0.963240440332382210,	-0.963253871165970050,	-0.963267299591423210,	-0.963280725608708140,	-0.963294149217791330,	-0.963307570418639010,	-0.963320989211218110,	-0.963334405595494440,	
+-0.963347819571434780,	-0.963361231139005510,	-0.963374640298173210,	-0.963388047048904350,	-0.963401451391165400,	-0.963414853324922720,	-0.963428252850142890,	-0.963441649966792490,	
+-0.963455044674838220,	-0.963468436974246110,	-0.963481826864982850,	-0.963495214347015020,	-0.963508599420309200,	-0.963521982084832200,	-0.963535362340549820,	-0.963548740187429200,	
+-0.963562115625436590,	-0.963575488654538790,	-0.963588859274702280,	-0.963602227485893530,	-0.963615593288079220,	-0.963628956681226060,	-0.963642317665300400,	-0.963655676240269150,	
+-0.963669032406098580,	-0.963682386162755370,	-0.963695737510206210,	-0.963709086448417680,	-0.963722432977356600,	-0.963735777096989320,	-0.963749118807282650,	-0.963762458108203050,	
+-0.963775794999717330,	-0.963789129481792180,	-0.963802461554394200,	-0.963815791217490060,	-0.963829118471046350,	-0.963842443315029880,	-0.963855765749407680,	-0.963869085774145650,	
+-0.963882403389211050,	-0.963895718594570350,	-0.963909031390190350,	-0.963922341776037860,	-0.963935649752079680,	-0.963948955318282060,	-0.963962258474612140,	-0.963975559221036620,	
+-0.963988857557522170,	-0.964002153484035620,	-0.964015447000543650,	-0.964028738107012950,	-0.964042026803410560,	-0.964055313089703270,	-0.964068596965857450,	-0.964081878431840230,	
+-0.964095157487618200,	-0.964108434133158280,	-0.964121708368427370,	-0.964134980193392390,	-0.964148249608019700,	-0.964161516612276340,	-0.964174781206129320,	-0.964188043389545220,	
+-0.964201303162491090,	-0.964214560524933710,	-0.964227815476839890,	-0.964241068018176550,	-0.964254318148910720,	-0.964267565869008860,	-0.964280811178438110,	-0.964294054077165400,	
+-0.964307294565157510,	-0.964320532642381380,	-0.964333768308804130,	-0.964347001564392240,	-0.964360232409112840,	-0.964373460842932960,	-0.964386686865819300,	-0.964399910477738990,	
+-0.964413131678658830,	-0.964426350468545970,	-0.964439566847367090,	-0.964452780815089340,	-0.964465992371679960,	-0.964479201517105310,	-0.964492408251332640,	-0.964505612574328870,	
+-0.964518814486061250,	-0.964532013986496680,	-0.964545211075601870,	-0.964558405753344060,	-0.964571598019690280,	-0.964584787874607440,	-0.964597975318062680,	-0.964611160350022920,	
+-0.964624342970455300,	-0.964637523179326830,	-0.964650700976604550,	-0.964663876362255700,	-0.964677049336246980,	-0.964690219898545640,	-0.964703388049118700,	-0.964716553787933310,	
+-0.964729717114956590,	-0.964742878030155790,	-0.964756036533497510,	-0.964769192624949200,	-0.964782346304477790,	-0.964795497572050630,	-0.964808646427634750,	-0.964821792871197180,	
+-0.964834936902705160,	-0.964848078522125840,	-0.964861217729426460,	-0.964874354524573820,	-0.964887488907535400,	-0.964900620878278100,	-0.964913750436769410,	-0.964926877582976240,	
+-0.964940002316866160,	-0.964953124638405770,	-0.964966244547562630,	-0.964979362044303900,	-0.964992477128596700,	-0.965005589800408290,	-0.965018700059706020,	-0.965031807906456930,	
+-0.965044913340628360,	-0.965058016362187690,	-0.965071116971101710,	-0.965084215167338000,	-0.965097310950863820,	-0.965110404321646190,	-0.965123495279652690,	-0.965136583824850680,	
+-0.965149669957206860,	-0.965162753676689020,	-0.965175834983264200,	-0.965188913876899870,	-0.965201990357563160,	-0.965215064425221540,	-0.965228136079842150,	-0.965241205321392570,	
+-0.965254272149839940,	-0.965267336565151850,	-0.965280398567295080,	-0.965293458156237460,	-0.965306515331946110,	-0.965319570094388510,	-0.965332622443532240,	-0.965345672379344100,	
+-0.965358719901791900,	-0.965371765010842760,	-0.965384807706464290,	-0.965397847988623830,	-0.965410885857288740,	-0.965423921312426380,	-0.965436954354004230,	-0.965449984981989750,	
+-0.965463013196350420,	-0.965476038997053480,	-0.965489062384066400,	-0.965502083357356540,	-0.965515101916891600,	-0.965528118062638830,	-0.965541131794566130,	-0.965554143112640210,	
+-0.965567152016829080,	-0.965580158507099990,	-0.965593162583420430,	-0.965606164245758070,	-0.965619163494080280,	-0.965632160328354530,	-0.965645154748548510,	-0.965658146754629690,	
+-0.965671136346565320,	-0.965684123524323090,	-0.965697108287870590,	-0.965710090637175280,	-0.965723070572204860,	-0.965736048092926900,	-0.965749023199308550,	-0.965761995891317730,	
+-0.965774966168921890,	-0.965787934032088620,	-0.965800899480785510,	-0.965813862514980140,	-0.965826823134640190,	-0.965839781339733140,	-0.965852737130226790,	-0.965865690506088500,	
+-0.965878641467285860,	-0.965891590013786660,	-0.965904536145558490,	-0.965917479862569040,	-0.965930421164786110,	-0.965943360052176850,	-0.965956296524709160,	-0.965969230582350740,	
+-0.965982162225069270,	-0.965995091452832470,	-0.966008018265607890,	-0.966020942663363250,	-0.966033864646066220,	-0.966046784213684510,	-0.966059701366186130,	-0.966072616103538230,	
+-0.966085528425708830,	-0.966098438332665620,	-0.966111345824376300,	-0.966124250900808780,	-0.966137153561930530,	-0.966150053807709350,	-0.966162951638112940,	-0.966175847053109220,	
+-0.966188740052665860,	-0.966201630636750690,	-0.966214518805331490,	-0.966227404558375860,	-0.966240287895851810,	-0.966253168817727270,	-0.966266047323969590,	-0.966278923414546800,	
+-0.966291797089426590,	-0.966304668348576980,	-0.966317537191965670,	-0.966330403619560800,	-0.966343267631329610,	-0.966356129227240350,	-0.966368988407260710,	-0.966381845171358610,	
+-0.966394699519501850,	-0.966407551451658350,	-0.966420400967796020,	-0.966433248067882670,	-0.966446092751886420,	-0.966458935019774760,	-0.966471774871515700,	-0.966484612307077270,	
+-0.966497447326427280,	-0.966510279929533640,	-0.966523110116364490,	-0.966535937886887410,	-0.966548763241070530,	-0.966561586178881660,	-0.966574406700288820,	-0.966587224805259940,	
+-0.966600040493763140,	-0.966612853765766110,	-0.966625664621237000,	-0.966638473060143940,	-0.966651279082454410,	-0.966664082688136750,	-0.966676883877158890,	-0.966689682649488850,	
+-0.966702479005094540,	-0.966715272943944330,	-0.966728064466005680,	-0.966740853571246840,	-0.966753640259635840,	-0.966766424531140810,	-0.966779206385729670,	-0.966791985823370560,	
+-0.966804762844031380,	-0.966817537447680400,	-0.966830309634285510,	-0.966843079403815200,	-0.966855846756236810,	-0.966868611691518940,	-0.966881374209629390,	-0.966894134310536500,	
+-0.966906891994208540,	-0.966919647260613080,	-0.966932400109718480,	-0.966945150541492880,	-0.966957898555904420,	-0.966970644152921220,	-0.966983387332511430,	-0.966996128094643080,	
+-0.967008866439284520,	-0.967021602366403780,	-0.967034335875969210,	-0.967047066967948620,	-0.967059795642310260,	-0.967072521899022490,	-0.967085245738053430,	-0.967097967159371240,	
+-0.967110686162944380,	-0.967123402748740530,	-0.967136116916728290,	-0.967148828666875680,	-0.967161537999150940,	-0.967174244913522440,	-0.967186949409958310,	-0.967199651488426790,	
+-0.967212351148896140,	-0.967225048391334830,	-0.967237743215710650,	-0.967250435621992200,	-0.967263125610147600,	-0.967275813180145110,	-0.967288498331953180,	-0.967301181065540310,	
+-0.967313861380874160,	-0.967326539277923340,	-0.967339214756656180,	-0.967351887817041070,	-0.967364558459046120,	-0.967377226682639810,	-0.967389892487790500,	-0.967402555874466440,	
+-0.967415216842636210,	-0.967427875392267710,	-0.967440531523329430,	-0.967453185235789940,	-0.967465836529617480,	-0.967478485404780320,	-0.967491131861247240,	-0.967503775898986170,	
+-0.967516417517965580,	-0.967529056718154030,	-0.967541693499519790,	-0.967554327862031220,	-0.967566959805656990,	-0.967579589330365250,	-0.967592216436124590,	-0.967604841122903350,	
+-0.967617463390670230,	-0.967630083239393370,	-0.967642700669041120,	-0.967655315679582180,	-0.967667928270985020,	-0.967680538443218110,	-0.967693146196249800,	-0.967705751530048560,	
+-0.967718354444582870,	-0.967730954939821420,	-0.967743553015732450,	-0.967756148672284660,	-0.967768741909446510,	-0.967781332727186470,	-0.967793921125473130,	-0.967806507104275290,	
+-0.967819090663560870,	-0.967831671803298770,	-0.967844250523457350,	-0.967856826824005420,	-0.967869400704911450,	-0.967881972166144130,	-0.967894541207671710,	-0.967907107829462990,	
+-0.967919672031486320,	-0.967932233813710630,	-0.967944793176104270,	-0.967957350118636040,	-0.967969904641274300,	-0.967982456743987860,	-0.967995006426745520,	-0.968007553689515410,	
+-0.968020098532266450,	-0.968032640954967220,	-0.968045180957586400,	-0.968057718540092590,	-0.968070253702454700,	-0.968082786444640960,	-0.968095316766620310,	-0.968107844668361310,	
+-0.968120370149832770,	-0.968132893211003260,	-0.968145413851841500,	-0.968157932072316260,	-0.968170447872396140,	-0.968182961252050170,	-0.968195472211246580,	-0.968207980749954180,	
+-0.968220486868141990,	-0.968232990565778500,	-0.968245491842832600,	-0.968257990699273100,	-0.968270487135068470,	-0.968282981150187630,	-0.968295472744599260,	-0.968307961918272290,	
+-0.968320448671175390,	-0.968332933003277270,	-0.968345414914546950,	-0.968357894404953010,	-0.968370371474464360,	-0.968382846123050030,	-0.968395318350678380,	-0.968407788157318430,	
+-0.968420255542938980,	-0.968432720507508950,	-0.968445183050997250,	-0.968457643173372460,	-0.968470100874603500,	-0.968482556154659280,	-0.968495009013508710,	-0.968507459451120600,	
+-0.968519907467463750,	-0.968532353062507290,	-0.968544796236219920,	-0.968557236988570440,	-0.968569675319528200,	-0.968582111229061570,	-0.968594544717139570,	-0.968606975783731230,	
+-0.968619404428805450,	-0.968631830652331270,	-0.968644254454277600,	-0.968656675834613120,	-0.968669094793306980,	-0.968681511330328090,	-0.968693925445645370,	-0.968706337139227940,	
+-0.968718746411044500,	-0.968731153261064290,	-0.968743557689256240,	-0.968755959695589470,	-0.968768359280032580,	-0.968780756442554900,	-0.968793151183125150,	-0.968805543501712660,	
+-0.968817933398286260,	-0.968830320872815180,	-0.968842705925268220,	-0.968855088555614420,	-0.968867468763822900,	-0.968879846549862700,	-0.968892221913702830,	-0.968904594855312550,	
+-0.968916965374660650,	-0.968929333471716390,	-0.968941699146449010,	-0.968954062398827200,	-0.968966423228820210,	-0.968978781636397170,	-0.968991137621527110,	-0.969003491184179280,	
+-0.969015842324322920,	-0.969028191041926720,	-0.969040537336960050,	-0.969052881209392040,	-0.969065222659191820,	-0.969077561686328530,	-0.969089898290771410,	-0.969102232472489500,	
+-0.969114564231452040,	-0.969126893567628040,	-0.969139220480987220,	-0.969151544971498020,	-0.969163867039129930,	-0.969176186683852190,	-0.969188503905634050,	-0.969200818704444860,	
+-0.969213131080253310,	-0.969225441033028990,	-0.969237748562741140,	-0.969250053669358790,	-0.969262356352851410,	-0.969274656613188010,	-0.969286954450338080,	-0.969299249864270740,	
+-0.969311542854955350,	-0.969323833422361170,	-0.969336121566457320,	-0.969348407287213050,	-0.969360690584597840,	-0.969372971458580920,	-0.969385249909131550,	-0.969397525936219310,	
+-0.969409799539812990,	-0.969422070719882180,	-0.969434339476396120,	-0.969446605809324290,	-0.969458869718635930,	-0.969471131204300400,	-0.969483390266287050,	-0.969495646904565240,	
+-0.969507901119104450,	-0.969520152909873810,	-0.969532402276842680,	-0.969544649219980630,	-0.969556893739256910,	-0.969569135834640990,	-0.969581375506102460,	-0.969593612753610220,	
+-0.969605847577133970,	-0.969618079976643070,	-0.969630309952106970,	-0.969642537503495160,	-0.969654762630776990,	-0.969666985333921930,	-0.969679205612899330,	-0.969691423467679000,	
+-0.969703638898229860,	-0.969715851904521590,	-0.969728062486523770,	-0.969740270644205760,	-0.969752476377537030,	-0.969764679686487390,	-0.969776880571025850,	-0.969789079031122100,	
+-0.969801275066745630,	-0.969813468677865890,	-0.969825659864452570,	-0.969837848626475150,	-0.969850034963902980,	-0.969862218876705870,	-0.969874400364853060,	-0.969886579428314580,	
+-0.969898756067059330,	-0.969910930281057350,	-0.969923102070277880,	-0.969935271434690720,	-0.969947438374265670,	-0.969959602888971760,	-0.969971764978778790,	-0.969983924643656460,	
+-0.969996081883574330,	-0.970008236698501890,	-0.970020389088408930,	-0.970032539053265030,	-0.970044686593039770,	-0.970056831707702850,	-0.970068974397223950,	-0.970081114661572430,	
+-0.970093252500718210,	-0.970105387914630750,	-0.970117520903279850,	-0.970129651466635210,	-0.970141779604666520,	-0.970153905317343360,	-0.970166028604635300,	-0.970178149466512150,	
+-0.970190267902943710,	-0.970202383913899570,	-0.970214497499349400,	-0.970226608659263130,	-0.970238717393610230,	-0.970250823702360820,	-0.970262927585484050,	-0.970275029042950040,	
+-0.970287128074728500,	-0.970299224680789000,	-0.970311318861101560,	-0.970323410615635980,	-0.970335499944361630,	-0.970347586847248640,	-0.970359671324266590,	-0.970371753375385390,	
+-0.970383833000574740,	-0.970395910199804650,	-0.970407984973044700,	-0.970420057320264710,	-0.970432127241434910,	-0.970444194736524550,	-0.970456259805503650,	-0.970468322448342140,	
+-0.970480382665009910,	-0.970492440455476670,	-0.970504495819712430,	-0.970516548757686890,	-0.970528599269369850,	-0.970540647354731440,	-0.970552693013741360,	-0.970564736246369520,	
+-0.970576777052585830,	-0.970588815432360200,	-0.970600851385662540,	-0.970612884912462780,	-0.970624916012731040,	-0.970636944686436800,	-0.970648970933550180,	-0.970660994754041110,	
+-0.970673016147879490,	-0.970685035115035680,	-0.970697051655479040,	-0.970709065769179700,	-0.970721077456107690,	-0.970733086716233040,	-0.970745093549525650,	-0.970757097955955550,	
+-0.970769099935492760,	-0.970781099488107090,	-0.970793096613768780,	-0.970805091312447850,	-0.970817083584114120,	-0.970829073428737590,	-0.970841060846288300,	-0.970853045836736480,	
+-0.970865028400052180,	-0.970877008536205180,	-0.970888986245165620,	-0.970900961526903530,	-0.970912934381389150,	-0.970924904808592390,	-0.970936872808483290,	-0.970948838381032080,	
+-0.970960801526208780,	-0.970972762243983430,	-0.970984720534326500,	-0.970996676397207440,	-0.971008629832596730,	-0.971020580840464500,	-0.971032529420780670,	-0.971044475573515700,	
+-0.971056419298639620,	-0.971068360596122340,	-0.971080299465934100,	-0.971092235908045160,	-0.971104169922425650,	-0.971116101509045700,	-0.971128030667875450,	-0.971139957398885150,	
+-0.971151881702045030,	-0.971163803577325350,	-0.971175723024695900,	-0.971187640044127280,	-0.971199554635589490,	-0.971211466799052790,	-0.971223376534487430,	-0.971235283841863860,	
+-0.971247188721151790,	-0.971259091172321900,	-0.971270991195344210,	-0.971282888790188980,	-0.971294783956826560,	-0.971306676695227190,	-0.971318567005361120,	-0.971330454887198710,	
+-0.971342340340710320,	-0.971354223365865850,	-0.971366103962635900,	-0.971377982130990580,	-0.971389857870900380,	-0.971401731182335530,	-0.971413602065266500,	-0.971425470519663330,	
+-0.971437336545496470,	-0.971449200142736170,	-0.971461061311353010,	-0.971472920051317130,	-0.971484776362598890,	-0.971496630245168860,	-0.971508481698997170,	-0.971520330724054190,	
+-0.971532177320310720,	-0.971544021487736550,	-0.971555863226302390,	-0.971567702535978460,	-0.971579539416735360,	-0.971591373868543660,	-0.971603205891373170,	-0.971615035485194790,	
+-0.971626862649978770,	-0.971638687385695590,	-0.971650509692315700,	-0.971662329569809580,	-0.971674147018147580,	-0.971685962037300180,	-0.971697774627237940,	-0.971709584787931460,	
+-0.971721392519350860,	-0.971733197821466720,	-0.971745000694249630,	-0.971756801137669930,	-0.971768599151698330,	-0.971780394736305400,	-0.971792187891461270,	-0.971803978617136740,	
+-0.971815766913302180,	-0.971827552779928270,	-0.971839336216985370,	-0.971851117224444280,	-0.971862895802275250,	-0.971874671950449080,	-0.971886445668936450,	-0.971898216957707390,	
+-0.971909985816732940,	-0.971921752245983430,	-0.971933516245429560,	-0.971945277815041810,	-0.971957036954791190,	-0.971968793664647720,	-0.971980547944582330,	-0.971992299794565470,	
+-0.972004049214567960,	-0.972015796204560250,	-0.972027540764513140,	-0.972039282894397120,	-0.972051022594182860,	-0.972062759863841270,	-0.972074494703342620,	-0.972086227112657690,	
+-0.972097957091757170,	-0.972109684640611870,	-0.972121409759192260,	-0.972133132447469350,	-0.972144852705413400,	-0.972156570532995310,	-0.972168285930185780,	-0.972179998896955610,	
+-0.972191709433275380,	-0.972203417539115880,	-0.972215123214447920,	-0.972226826459242080,	-0.972238527273469160,	-0.972250225657100180,	-0.972261921610105380,	-0.972273615132455800,	
+-0.972285306224122130,	-0.972296994885075260,	-0.972308681115286120,	-0.972320364914725070,	-0.972332046283363010,	-0.972343725221170960,	-0.972355401728119520,	-0.972367075804179580,	
+-0.972378747449321960,	-0.972390416663517550,	-0.972402083446736950,	-0.972413747798951290,	-0.972425409720131360,	-0.972437069210247750,	-0.972448726269271480,	-0.972460380897173350,	
+-0.972472033093924270,	-0.972483682859495160,	-0.972495330193857030,	-0.972506975096980360,	-0.972518617568836290,	-0.972530257609395600,	-0.972541895218629330,	-0.972553530396508270,	
+-0.972565163143003450,	-0.972576793458085680,	-0.972588421341725850,	-0.972600046793895330,	-0.972611669814564370,	-0.972623290403704320,	-0.972634908561285980,	-0.972646524287280380,	
+-0.972658137581658530,	-0.972669748444391470,	-0.972681356875449880,	-0.972692962874804780,	-0.972704566442427420,	-0.972716167578288600,	-0.972727766282359350,	-0.972739362554610690,	
+-0.972750956395013630,	-0.972762547803539210,	-0.972774136780158560,	-0.972785723324842370,	-0.972797307437561880,	-0.972808889118288110,	-0.972820468366992210,	-0.972832045183645080,	
+-0.972843619568217970,	-0.972855191520681670,	-0.972866761041007440,	-0.972878328129166300,	-0.972889892785129270,	-0.972901455008867490,	-0.972913014800352190,	-0.972924572159554300,	
+-0.972936127086444950,	-0.972947679580995260,	-0.972959229643176600,	-0.972970777272959660,	-0.972982322470315800,	-0.972993865235216140,	-0.973005405567631820,	-0.973016943467534200,	
+-0.973028478934893970,	-0.973040011969682590,	-0.973051542571871210,	-0.973063070741430950,	-0.973074596478332940,	-0.973086119782548440,	-0.973097640654048690,	-0.973109159092804820,	
+-0.973120675098788080,	-0.973132188671969930,	-0.973143699812320960,	-0.973155208519812850,	-0.973166714794416630,	-0.973178218636103650,	-0.973189720044845160,	-0.973201219020612520,	
+-0.973212715563376740,	-0.973224209673109080,	-0.973235701349780880,	-0.973247190593363510,	-0.973258677403828100,	-0.973270161781146000,	-0.973281643725288470,	-0.973293123236226850,	
+-0.973304600313932620,	-0.973316074958376800,	-0.973327547169530630,	-0.973339016947365690,	-0.973350484291853220,	-0.973361949202964480,	-0.973373411680671040,	-0.973384871724943920,	
+-0.973396329335754600,	-0.973407784513074530,	-0.973419237256874960,	-0.973430687567127250,	-0.973442135443802870,	-0.973453580886873170,	-0.973465023896309510,	-0.973476464472083470,	
+-0.973487902614166070,	-0.973499338322528880,	-0.973510771597143390,	-0.973522202437980930,	-0.973533630845012990,	-0.973545056818211130,	-0.973556480357546490,	-0.973567901462990660,	
+-0.973579320134515090,	-0.973590736372091150,	-0.973602150175690410,	-0.973613561545284220,	-0.973624970480844290,	-0.973636376982341730,	-0.973647781049748360,	-0.973659182683035750,	
+-0.973670581882174920,	-0.973681978647137680,	-0.973693372977895490,	-0.973704764874419810,	-0.973716154336682460,	-0.973727541364654560,	-0.973738925958307800,	-0.973750308117613650,	
+-0.973761687842543800,	-0.973773065133069720,	-0.973784439989162980,	-0.973795812410795160,	-0.973807182397937730,	-0.973818549950562380,	-0.973829915068640920,	-0.973841277752144350,	
+-0.973852638001044710,	-0.973863995815313350,	-0.973875351194922080,	-0.973886704139842460,	-0.973898054650046310,	-0.973909402725504750,	-0.973920748366189690,	-0.973932091572072720,	
+-0.973943432343125530,	-0.973954770679319790,	-0.973966106580627210,	-0.973977440047019250,	-0.973988771078467710,	-0.974000099674944500,	-0.974011425836420750,	-0.974022749562868500,	
+-0.974034070854259300,	-0.974045389710565090,	-0.974056706131757210,	-0.974068020117807910,	-0.974079331668688320,	-0.974090640784370350,	-0.974101947464825810,	-0.974113251710026380,	
+-0.974124553519943870,	-0.974135852894549960,	-0.974147149833816450,	-0.974158444337715030,	-0.974169736406217620,	-0.974181026039295790,	-0.974192313236921350,	-0.974203597999066080,	
+-0.974214880325701920,	-0.974226160216800530,	-0.974237437672333950,	-0.974248712692273530,	-0.974259985276591300,	-0.974271255425259160,	-0.974282523138248810,	-0.974293788415532270,	
+-0.974305051257081220,	-0.974316311662867470,	-0.974327569632863040,	-0.974338825167039620,	-0.974350078265369350,	-0.974361328927823680,	-0.974372577154374750,	-0.974383822944994260,	
+-0.974395066299654330,	-0.974406307218326880,	-0.974417545700983490,	-0.974428781747596170,	-0.974440015358136960,	-0.974451246532577750,	-0.974462475270890360,	-0.974473701573046800,	
+-0.974484925439018990,	-0.974496146868778830,	-0.974507365862298360,	-0.974518582419549580,	-0.974529796540504200,	-0.974541008225134340,	-0.974552217473412030,	-0.974563424285309070,	
+-0.974574628660797580,	-0.974585830599849710,	-0.974597030102437030,	-0.974608227168531900,	-0.974619421798106120,	-0.974630613991131820,	-0.974641803747580910,	-0.974652991067425530,	
+-0.974664175950637700,	-0.974675358397189440,	-0.974686538407052880,	-0.974697715980199940,	-0.974708891116602530,	-0.974720063816233000,	-0.974731234079063370,	-0.974742401905065560,	
+-0.974753567294211920,	-0.974764730246474250,	-0.974775890761824690,	-0.974787048840235480,	-0.974798204481678530,	-0.974809357686126200,	-0.974820508453550390,	-0.974831656783923250,	
+-0.974842802677217120,	-0.974853946133404040,	-0.974865087152456010,	-0.974876225734345180,	-0.974887361879043900,	-0.974898495586524080,	-0.974909626856758080,	-0.974920755689718250,	
+-0.974931882085376290,	-0.974943006043704650,	-0.974954127564675480,	-0.974965246648261010,	-0.974976363294433380,	-0.974987477503164830,	-0.974998589274427620,	-0.975009698608193980,	
+-0.975020805504436040,	-0.975031909963126280,	-0.975043011984236600,	-0.975054111567739360,	-0.975065208713606800,	-0.975076303421811290,	-0.975087395692325170,	-0.975098485525120460,	
+-0.975109572920169420,	-0.975120657877444510,	-0.975131740396917860,	-0.975142820478561930,	-0.975153898122348980,	-0.975164973328251250,	-0.975176046096241090,	-0.975187116426290860,	
+-0.975198184318373020,	-0.975209249772459490,	-0.975220312788522840,	-0.975231373366535430,	-0.975242431506469500,	-0.975253487208297630,	-0.975264540471992180,	-0.975275591297525170,	
+-0.975286639684869170,	-0.975297685633996550,	-0.975308729144879760,	-0.975319770217491170,	-0.975330808851803120,	-0.975341845047787980,	-0.975352878805418320,	-0.975363910124666720,	
+-0.975374939005504980,	-0.975385965447906010,	-0.975396989451842170,	-0.975408011017285690,	-0.975419030144209280,	-0.975430046832585500,	-0.975441061082386480,	-0.975452072893584710,	
+-0.975463082266152750,	-0.975474089200063070,	-0.975485093695288240,	-0.975496095751800630,	-0.975507095369572810,	-0.975518092548577240,	-0.975529087288786620,	-0.975540079590173080,	
+-0.975551069452709420,	-0.975562056876367990,	-0.975573041861121480,	-0.975584024406942360,	-0.975595004513803320,	-0.975605982181676600,	-0.975616957410535000,	-0.975627930200350880,	
+-0.975638900551097030,	-0.975649868462745930,	-0.975660833935270030,	-0.975671796968642150,	-0.975682757562834850,	-0.975693715717820490,	-0.975704671433572200,	-0.975715624710061900,	
+-0.975726575547262610,	-0.975737523945146900,	-0.975748469903687350,	-0.975759413422856770,	-0.975770354502627500,	-0.975781293142972350,	-0.975792229343864000,	-0.975803163105275040,	
+-0.975814094427178260,	-0.975825023309546120,	-0.975835949752351440,	-0.975846873755567000,	-0.975857795319165280,	-0.975868714443119290,	-0.975879631127401280,	-0.975890545371984160,	
+-0.975901457176840850,	-0.975912366541943690,	-0.975923273467265710,	-0.975934177952779810,	-0.975945079998458140,	-0.975955979604273830,	-0.975966876770199670,	-0.975977771496208120,	
+-0.975988663782272340,	-0.975999553628364770,	-0.976010441034458330,	-0.976021326000525820,	-0.976032208526540160,	-0.976043088612473800,	-0.976053966258299770,	-0.976064841463990750,	
+-0.976075714229519660,	-0.976086584554859300,	-0.976097452439982690,	-0.976108317884862190,	-0.976119180889470920,	-0.976130041453781680,	-0.976140899577767400,	-0.976151755261400860,	
+-0.976162608504654860,	-0.976173459307502430,	-0.976184307669916260,	-0.976195153591869590,	-0.976205997073334770,	-0.976216838114285060,	-0.976227676714693240,	-0.976238512874532120,	
+-0.976249346593774820,	-0.976260177872394270,	-0.976271006710363150,	-0.976281833107654480,	-0.976292657064241290,	-0.976303478580096360,	-0.976314297655192730,	-0.976325114289503420,	
+-0.976335928483001330,	-0.976346740235659370,	-0.976357549547450580,	-0.976368356418348180,	-0.976379160848324660,	-0.976389962837353130,	-0.976400762385406850,	-0.976411559492458610,	
+-0.976422354158481550,	-0.976433146383448580,	-0.976443936167332600,	-0.976454723510106870,	-0.976465508411744400,	-0.976476290872217990,	-0.976487070891501000,	-0.976497848469566220,	
+-0.976508623606386910,	-0.976519396301935960,	-0.976530166556186740,	-0.976540934369111930,	-0.976551699740684790,	-0.976562462670878430,	-0.976573223159665880,	-0.976583981207020280,	
+-0.976594736812914870,	-0.976605489977322440,	-0.976616240700216350,	-0.976626988981569630,	-0.976637734821355410,	-0.976648478219546810,	-0.976659219176117090,	-0.976669957691039370,	
+-0.976680693764286680,	-0.976691427395832480,	-0.976702158585649460,	-0.976712887333711090,	-0.976723613639990500,	-0.976734337504460930,	-0.976745058927095400,	-0.976755777907867500,	
+-0.976766494446749900,	-0.976777208543716080,	-0.976787920198739280,	-0.976798629411792740,	-0.976809336182849490,	-0.976820040511882980,	-0.976830742398866360,	-0.976841441843772860,	
+-0.976852138846575960,	-0.976862833407248550,	-0.976873525525764010,	-0.976884215202095670,	-0.976894902436216790,	-0.976905587228100720,	-0.976916269577720820,	-0.976926949485049990,	
+-0.976937626950061920,	-0.976948301972729640,	-0.976958974553026720,	-0.976969644690926290,	-0.976980312386401820,	-0.976990977639426550,	-0.977001640449973730,	-0.977012300818016930,	
+-0.977022958743529510,	-0.977033614226484600,	-0.977044267266855560,	-0.977054917864615850,	-0.977065566019738930,	-0.977076211732198160,	-0.977086855001966790,	-0.977097495829018170,	
+-0.977108134213325870,	-0.977118770154863260,	-0.977129403653603680,	-0.977140034709520710,	-0.977150663322587490,	-0.977161289492777700,	-0.977171913220064690,	-0.977182534504422050,	
+-0.977193153345822910,	-0.977203769744240840,	-0.977214383699649410,	-0.977224995212022000,	-0.977235604281332270,	-0.977246210907553370,	-0.977256815090658870,	-0.977267416830622460,	
+-0.977278016127417380,	-0.977288612981017320,	-0.977299207391395750,	-0.977309799358526130,	-0.977320388882382040,	-0.977330975962936940,	-0.977341560600164640,	-0.977352142794038260,	
+-0.977362722544531380,	-0.977373299851617800,	-0.977383874715270990,	-0.977394447135464530,	-0.977405017112172090,	-0.977415584645366930,	-0.977426149735022730,	-0.977436712381113180,	
+-0.977447272583611970,	-0.977457830342492450,	-0.977468385657728420,	-0.977478938529293460,	-0.977489488957161030,	-0.977500036941305160,	-0.977510582481698980,	-0.977521125578316390,	
+-0.977531666231130970,	-0.977542204440116300,	-0.977552740205246180,	-0.977563273526494410,	-0.977573804403834230,	-0.977584332837239560,	-0.977594858826684070,	-0.977605382372141450,	
+-0.977615903473585400,	-0.977626422130989490,	-0.977636938344327630,	-0.977647452113573400,	-0.977657963438700480,	-0.977668472319682900,	-0.977678978756493900,	-0.977689482749107500,	
+-0.977699984297497380,	-0.977710483401637240,	-0.977720980061501210,	-0.977731474277062420,	-0.977741966048295000,	-0.977752455375172640,	-0.977762942257669240,	-0.977773426695758400,	
+-0.977783908689414010,	-0.977794388238609760,	-0.977804865343319670,	-0.977815340003517330,	-0.977825812219176860,	-0.977836281990271730,	-0.977846749316775840,	-0.977857214198663010,	
+-0.977867676635907230,	-0.977878136628482440,	-0.977888594176362090,	-0.977899049279520320,	-0.977909501937930910,	-0.977919952151567680,	-0.977930399920404650,	-0.977940845244415600,	
+-0.977951288123574350,	-0.977961728557855010,	-0.977972166547231290,	-0.977982602091677310,	-0.977993035191166650,	-0.978003465845673440,	-0.978013894055171580,	-0.978024319819634890,	
+-0.978034743139037490,	-0.978045164013353400,	-0.978055582442556190,	-0.978065998426620010,	-0.978076411965518870,	-0.978086823059226670,	-0.978097231707717450,	-0.978107637910965220,	
+-0.978118041668943780,	-0.978128442981627270,	-0.978138841848989800,	-0.978149238271005080,	-0.978159632247647350,	-0.978170023778890400,	-0.978180412864708470,	-0.978190799505075480,	
+-0.978201183699965670,	-0.978211565449352730,	-0.978221944753210890,	-0.978232321611514190,	-0.978242696024236640,	-0.978253067991352370,	-0.978263437512835400,	-0.978273804588659870,	
+-0.978284169218799900,	-0.978294531403229640,	-0.978304891141922760,	-0.978315248434853850,	-0.978325603281996690,	-0.978335955683325540,	-0.978346305638814530,	-0.978356653148437890,	
+-0.978366998212169440,	-0.978377340829983510,	-0.978387681001854250,	-0.978398018727755780,	-0.978408354007662240,	-0.978418686841547870,	-0.978429017229386800,	-0.978439345171153050,	
+-0.978449670666821090,	-0.978459993716365050,	-0.978470314319758840,	-0.978480632476976920,	-0.978490948187993310,	-0.978501261452782380,	-0.978511572271318570,	-0.978521880643575480,	
+-0.978532186569527780,	-0.978542490049149620,	-0.978552791082415220,	-0.978563089669298840,	-0.978573385809774820,	-0.978583679503817190,	-0.978593970751400420,	-0.978604259552498750,	
+-0.978614545907086630,	-0.978624829815137880,	-0.978635111276627170,	-0.978645390291528640,	-0.978655666859816530,	-0.978665940981465420,	-0.978676212656449550,	-0.978686481884742940,	
+-0.978696748666320170,	-0.978707013001155480,	-0.978717274889223330,	-0.978727534330497970,	-0.978737791324953750,	-0.978748045872565030,	-0.978758297973306270,	-0.978768547627151930,	
+-0.978778794834076040,	-0.978789039594053060,	-0.978799281907057670,	-0.978809521773063910,	-0.978819759192046450,	-0.978829994163979640,	-0.978840226688837860,	-0.978850456766595320,	
+-0.978860684397226730,	-0.978870909580706440,	-0.978881132317008910,	-0.978891352606108490,	-0.978901570447979650,	-0.978911785842596970,	-0.978921998789935020,	-0.978932209289967830,	
+-0.978942417342670070,	-0.978952622948016330,	-0.978962826105981070,	-0.978973026816538750,	-0.978983225079663950,	-0.978993420895331030,	-0.979003614263514450,	-0.979013805184188900,	
+-0.979023993657328730,	-0.979034179682908730,	-0.979044363260903160,	-0.979054544391286700,	-0.979064723074033920,	-0.979074899309119400,	-0.979085073096517710,	-0.979095244436203220,	
+-0.979105413328150490,	-0.979115579772334320,	-0.979125743768729300,	-0.979135905317309980,	-0.979146064418050740,	-0.979156221070926260,	-0.979166375275911330,	-0.979176527032980410,	
+-0.979186676342108210,	-0.979196823203269400,	-0.979206967616438440,	-0.979217109581590030,	-0.979227249098698850,	-0.979237386167739810,	-0.979247520788687040,	-0.979257652961515570,	
+-0.979267782686199850,	-0.979277909962714690,	-0.979288034791034880,	-0.979298157171135000,	-0.979308277102989620,	-0.979318394586573550,	-0.979328509621861460,	-0.979338622208828170,	
+-0.979348732347448350,	-0.979358840037696580,	-0.979368945279547760,	-0.979379048072976600,	-0.979389148417957990,	-0.979399246314466290,	-0.979409341762476520,	-0.979419434761963360,	
+-0.979429525312901620,	-0.979439613415266090,	-0.979449699069031790,	-0.979459782274172960,	-0.979469863030664630,	-0.979479941338481710,	-0.979490017197598980,	-0.979500090607991150,	
+-0.979510161569633110,	-0.979520230082499670,	-0.979530296146565620,	-0.979540359761805980,	-0.979550420928195330,	-0.979560479645708580,	-0.979570535914320750,	-0.979580589734006410,	
+-0.979590641104740700,	-0.979600690026498520,	-0.979610736499254450,	-0.979620780522983630,	-0.979630822097660730,	-0.979640861223260880,	-0.979650897899758790,	-0.979660932127129460,	
+-0.979670963905347910,	-0.979680993234388840,	-0.979691020114227260,	-0.979701044544838420,	-0.979711066526196770,	-0.979721086058277350,	-0.979731103141055270,	-0.979741117774505450,	
+-0.979751129958603030,	-0.979761139693322680,	-0.979771146978639320,	-0.979781151814528180,	-0.979791154200964190,	-0.979801154137922240,	-0.979811151625377460,	-0.979821146663304780,	
+-0.979831139251679200,	-0.979841129390475850,	-0.979851117079669760,	-0.979861102319235730,	-0.979871085109149000,	-0.979881065449384470,	-0.979891043339917390,	-0.979901018780722670,	
+-0.979910991771775540,	-0.979920962313050700,	-0.979930930404523610,	-0.979940896046169070,	-0.979950859237962320,	-0.979960819979878380,	-0.979970778271892500,	-0.979980734113979570,	
+-0.979990687506114840,	-0.980000638448273560,	-0.980010586940430530,	-0.980020532982561090,	-0.980030476574640260,	-0.980040417716643190,	-0.980050356408545100,	-0.980060292650321350,	
+-0.980070226441946630,	-0.980080157783396410,	-0.980090086674645810,	-0.980100013115669850,	-0.980109937106444010,	-0.980119858646943290,	-0.980129777737142830,	-0.980139694377018090,	
+-0.980149608566544210,	-0.980159520305696090,	-0.980169429594449190,	-0.980179336432778770,	-0.980189240820659950,	-0.980199142758068080,	-0.980209042244978400,	-0.980218939281366050,	
+-0.980228833867206380,	-0.980238726002474530,	-0.980248615687145940,	-0.980258502921195760,	-0.980268387704599450,	-0.980278270037332030,	-0.980288149919368970,	-0.980298027350685610,	
+-0.980307902331257200,	-0.980317774861058980,	-0.980327644940066300,	-0.980337512568254520,	-0.980347377745598990,	-0.980357240472075060,	-0.980367100747657980,	-0.980376958572323100,	
+-0.980386813946045880,	-0.980396666868801560,	-0.980406517340565610,	-0.980416365361313270,	-0.980426210931020110,	-0.980436054049661390,	-0.980445894717212550,	-0.980455732933649180,	
+-0.980465568698946300,	-0.980475402013079480,	-0.980485232876024180,	-0.980495061287755760,	-0.980504887248249690,	-0.980514710757481530,	-0.980524531815426540,	-0.980534350422060160,	
+-0.980544166577357880,	-0.980553980281295150,	-0.980563791533847540,	-0.980573600334990410,	-0.980583406684699340,	-0.980593210582949680,	-0.980603012029717220,	-0.980612811024977100,	
+-0.980622607568704900,	-0.980632401660876170,	-0.980642193301466400,	-0.980651982490451160,	-0.980661769227806230,	-0.980671553513506660,	-0.980681335347528100,	-0.980691114729846270,	
+-0.980700891660436720,	-0.980710666139274930,	-0.980720438166336360,	-0.980730207741596800,	-0.980739974865031730,	-0.980749739536616820,	-0.980759501756327420,	-0.980769261524139350,	
+-0.980779018840028050,	-0.980788773703969220,	-0.980798526115938430,	-0.980808276075911480,	-0.980818023583863720,	-0.980827768639770840,	-0.980837511243608630,	-0.980847251395352560,	
+-0.980856989094978430,	-0.980866724342461800,	-0.980876457137778380,	-0.980886187480903730,	-0.980895915371813640,	-0.980905640810484040,	-0.980915363796890040,	-0.980925084331007670,	
+-0.980934802412812610,	-0.980944518042280560,	-0.980954231219387410,	-0.980963941944108410,	-0.980973650216419580,	-0.980983356036296720,	-0.980993059403715400,	-0.981002760318651410,	
+-0.981012458781080570,	-0.981022154790978540,	-0.981031848348321130,	-0.981041539453084140,	-0.981051228105243480,	-0.981060914304774490,	-0.981070598051653310,	-0.981080279345855620,	
+-0.981089958187357110,	-0.981099634576133920,	-0.981109308512161600,	-0.981118979995415970,	-0.981128649025872820,	-0.981138315603508170,	-0.981147979728297590,	-0.981157641400217110,	
+-0.981167300619242510,	-0.981176957385349710,	-0.981186611698514510,	-0.981196263558712920,	-0.981205912965920520,	-0.981215559920113330,	-0.981225204421267260,	-0.981234846469358210,	
+-0.981244486064361990,	-0.981254123206254710,	-0.981263757895011970,	-0.981273390130609880,	-0.981283019913024250,	-0.981292647242231090,	-0.981302272118206310,	-0.981311894540925820,	
+-0.981321514510365640,	-0.981331132026501680,	-0.981340747089310070,	-0.981350359698766380,	-0.981359969854846860,	-0.981369577557527300,	-0.981379182806783930,	-0.981388785602592460,	
+-0.981398385944929340,	-0.981407983833770040,	-0.981417579269090680,	-0.981427172250867510,	-0.981436762779076320,	-0.981446350853693250,	-0.981455936474694310,	-0.981465519642055530,	
+-0.981475100355753030,	-0.981484678615762610,	-0.981494254422060840,	-0.981503827774623080,	-0.981513398673425910,	-0.981522967118445220,	-0.981532533109657050,	-0.981542096647037730,	
+-0.981551657730562970,	-0.981561216360209210,	-0.981570772535952260,	-0.981580326257768480,	-0.981589877525633760,	-0.981599426339524460,	-0.981608972699416490,	-0.981618516605286210,	
+-0.981628058057109620,	-0.981637597054862980,	-0.981647133598522180,	-0.981656667688063590,	-0.981666199323463330,	-0.981675728504697530,	-0.981685255231742440,	-0.981694779504574400,	
+-0.981704301323169220,	-0.981713820687503350,	-0.981723337597552810,	-0.981732852053294080,	-0.981742364054703050,	-0.981751873601756200,	-0.981761380694429750,	-0.981770885332699740,	
+-0.981780387516542730,	-0.981789887245934520,	-0.981799384520851580,	-0.981808879341270260,	-0.981818371707166680,	-0.981827861618517210,	-0.981837349075298290,	-0.981846834077485740,	
+-0.981856316625056120,	-0.981865796717985790,	-0.981875274356250880,	-0.981884749539827850,	-0.981894222268692940,	-0.981903692542822500,	-0.981913160362192780,	-0.981922625726780240,	
+-0.981932088636561120,	-0.981941549091511660,	-0.981951007091608430,	-0.981960462636827680,	-0.981969915727145760,	-0.981979366362539130,	-0.981988814542984030,	-0.981998260268456820,	
+-0.982007703538933960,	-0.982017144354391910,	-0.982026582714806920,	-0.982036018620155550,	-0.982045452070414050,	-0.982054883065558990,	-0.982064311605566620,	-0.982073737690413730,	
+-0.982083161320076340,	-0.982092582494531020,	-0.982102001213754240,	-0.982111417477722460,	-0.982120831286412370,	-0.982130242639799870,	-0.982139651537861870,	-0.982149057980574720,	
+-0.982158461967915010,	-0.982167863499859070,	-0.982177262576383490,	-0.982186659197464730,	-0.982196053363079360,	-0.982205445073203840,	-0.982214834327814870,	-0.982224221126888560,	
+-0.982233605470401840,	-0.982242987358331040,	-0.982252366790652750,	-0.982261743767343650,	-0.982271118288380210,	-0.982280490353738880,	-0.982289859963396350,	-0.982299227117329200,	
+-0.982308591815513890,	-0.982317954057927100,	-0.982327313844545520,	-0.982336671175345620,	-0.982346026050303970,	-0.982355378469397470,	-0.982364728432602360,	-0.982374075939895450,	
+-0.982383420991253420,	-0.982392763586652730,	-0.982402103726070170,	-0.982411441409482440,	-0.982420776636866000,	-0.982430109408197640,	-0.982439439723454040,	-0.982448767582611790,	
+-0.982458092985647570,	-0.982467415932538170,	-0.982476736423260280,	-0.982486054457790470,	-0.982495370036105650,	-0.982504683158182400,	-0.982513993823997290,	-0.982523302033527330,	
+-0.982532607786749000,	-0.982541911083639200,	-0.982551211924174830,	-0.982560510308332140,	-0.982569806236088250,	-0.982579099707419860,	-0.982588390722303750,	-0.982597679280716620,	
+-0.982606965382635260,	-0.982616249028036570,	-0.982625530216897140,	-0.982634808949193970,	-0.982644085224903980,	-0.982653359044003530,	-0.982662630406469730,	-0.982671899312279270,	
+-0.982681165761409180,	-0.982690429753836250,	-0.982699691289537160,	-0.982708950368488820,	-0.982718206990668030,	-0.982727461156051810,	-0.982736712864616950,	-0.982745962116340240,	
+-0.982755208911198610,	-0.982764453249169060,	-0.982773695130228280,	-0.982782934554353500,	-0.982792171521521210,	-0.982801406031708400,	-0.982810638084892220,	-0.982819867681049340,	
+-0.982829094820156790,	-0.982838319502191690,	-0.982847541727130620,	-0.982856761494950710,	-0.982865978805628980,	-0.982875193659142220,	-0.982884406055467450,	-0.982893615994581690,	
+-0.982902823476461850,	-0.982912028501085060,	-0.982921231068428320,	-0.982930431178468230,	-0.982939628831182240,	-0.982948824026547040,	-0.982958016764539870,	-0.982967207045137630,	
+-0.982976394868317450,	-0.982985580234056240,	-0.982994763142331030,	-0.983003943593118930,	-0.983013121586396980,	-0.983022297122142170,	-0.983031470200331660,	-0.983040640820942450,	
+-0.983049808983951670,	-0.983058974689336450,	-0.983068137937073700,	-0.983077298727140670,	-0.983086457059514360,	-0.983095612934171800,	-0.983104766351090340,	-0.983113917310247000,	
+-0.983123065811618790,	-0.983132211855182960,	-0.983141355440916520,	-0.983150496568796720,	-0.983159635238800680,	-0.983168771450905530,	-0.983177905205088410,	-0.983187036501326660,	
+-0.983196165339597190,	-0.983205291719877580,	-0.983214415642144510,	-0.983223537106375440,	-0.983232656112547510,	-0.983241772660637840,	-0.983250886750624000,	-0.983259998382482790,	
+-0.983269107556191570,	-0.983278214271727570,	-0.983287318529068030,	-0.983296420328190200,	-0.983305519669071430,	-0.983314616551688720,	-0.983323710976019450,	-0.983332802942041060,	
+-0.983341892449730690,	-0.983350979499065470,	-0.983360064090022750,	-0.983369146222579980,	-0.983378225896714310,	-0.983387303112403190,	-0.983396377869623640,	-0.983405450168353120,	
+-0.983414520008569100,	-0.983423587390248710,	-0.983432652313369290,	-0.983441714777908320,	-0.983450774783843130,	-0.983459832331150860,	-0.983468887419809090,	-0.983477940049795270,	
+-0.983486990221086430,	-0.983496037933660030,	-0.983505083187493630,	-0.983514125982564490,	-0.983523166318850060,	-0.983532204196327810,	-0.983541239614974970,	-0.983550272574769010,	
+-0.983559303075687290,	-0.983568331117707470,	-0.983577356700806700,	-0.983586379824962550,	-0.983595400490152480,	-0.983604418696353950,	-0.983613434443544430,	-0.983622447731701270,	
+-0.983631458560801920,	-0.983640466930823960,	-0.983649472841744750,	-0.983658476293541970,	-0.983667477286193080,	-0.983676475819675430,	-0.983685471893966490,	-0.983694465509043940,	
+-0.983703456664885230,	-0.983712445361467850,	-0.983721431598769350,	-0.983730415376767310,	-0.983739396695439190,	-0.983748375554762690,	-0.983757351954715140,	-0.983766325895274240,	
+-0.983775297376417560,	-0.983784266398122550,	-0.983793232960366910,	-0.983802197063128330,	-0.983811158706384140,	-0.983820117890112030,	-0.983829074614289590,	-0.983838028878894600,	
+-0.983846980683904420,	-0.983855930029296720,	-0.983864876915049310,	-0.983873821341139650,	-0.983882763307545540,	-0.983891702814244540,	-0.983900639861214230,	-0.983909574448432300,	
+-0.983918506575876430,	-0.983927436243524300,	-0.983936363451353710,	-0.983945288199342020,	-0.983954210487467230,	-0.983963130315706810,	-0.983972047684038560,	-0.983980962592440280,	
+-0.983989875040889530,	-0.983998785029364110,	-0.984007692557841710,	-0.984016597626300120,	-0.984025500234717130,	-0.984034400383070220,	-0.984043298071337390,	-0.984052193299496230,	
+-0.984061086067524630,	-0.984069976375400390,	-0.984078864223101310,	-0.984087749610604860,	-0.984096632537889040,	-0.984105513004931760,	-0.984114391011710610,	-0.984123266558203480,	
+-0.984132139644388170,	-0.984141010270242590,	-0.984149878435744420,	-0.984158744140871680,	-0.984167607385601940,	-0.984176468169913220,	-0.984185326493783320,	-0.984194182357190140,	
+-0.984203035760111480,	-0.984211886702525350,	-0.984220735184409330,	-0.984229581205741550,	-0.984238424766499810,	-0.984247265866661890,	-0.984256104506205930,	-0.984264940685109720,	
+-0.984273774403351060,	-0.984282605660908080,	-0.984291434457758680,	-0.984300260793880550,	-0.984309084669251710,	-0.984317906083850170,	-0.984326725037653950,	-0.984335541530640850,	
+-0.984344355562789100,	-0.984353167134076280,	-0.984361976244480520,	-0.984370782893979830,	-0.984379587082552240,	-0.984388388810175540,	-0.984397188076827970,	-0.984405984882487430,	
+-0.984414779227131940,	-0.984423571110739530,	-0.984432360533288310,	-0.984441147494755970,	-0.984449931995120870,	-0.984458714034360920,	-0.984467493612454110,	-0.984476270729378710,	
+-0.984485045385112610,	-0.984493817579633830,	-0.984502587312920510,	-0.984511354584950650,	-0.984520119395702500,	-0.984528881745153960,	-0.984537641633283280,	-0.984546399060068580,	
+-0.984555154025487770,	-0.984563906529519190,	-0.984572656572140770,	-0.984581404153330730,	-0.984590149273067090,	-0.984598891931328210,	-0.984607632128091990,	-0.984616369863336890,	
+-0.984625105137040710,	-0.984633837949181690,	-0.984642568299738170,	-0.984651296188688190,	-0.984660021616009960,	-0.984668744581681740,	-0.984677465085681550,	-0.984686183127987840,	
+-0.984694898708578740,	-0.984703611827432160,	-0.984712322484526670,	-0.984721030679840400,	-0.984729736413351490,	-0.984738439685038270,	-0.984747140494878990,	-0.984755838842851780,	
+-0.984764534728935100,	-0.984773228153106970,	-0.984781919115345740,	-0.984790607615629750,	-0.984799293653937260,	-0.984807977230246490,	-0.984816658344535800,	-0.984825336996783650,	
+-0.984834013186967950,	-0.984842686915067270,	-0.984851358181059840,	-0.984860026984924030,	-0.984868693326638070,	-0.984877357206180640,	-0.984886018623529650,	-0.984894677578663560,	
+-0.984903334071560830,	-0.984911988102199710,	-0.984920639670558650,	-0.984929288776616010,	-0.984937935420350130,	-0.984946579601739480,	-0.984955221320762300,	-0.984963860577397270,	
+-0.984972497371622400,	-0.984981131703416280,	-0.984989763572757360,	-0.984998392979623990,	-0.985007019923994750,	-0.985015644405847880,	-0.985024266425161940,	-0.985032885981915300,	
+-0.985041503076086400,	-0.985050117707653830,	-0.985058729876595930,	-0.985067339582891170,	-0.985075946826518000,	-0.985084551607455120,	-0.985093153925680860,	-0.985101753781173710,	
+-0.985110351173912100,	-0.985118946103874630,	-0.985127538571039740,	-0.985136128575386020,	-0.985144716116892250,	-0.985153301195536350,	-0.985161883811297320,	-0.985170463964153530,	
+-0.985179041654083650,	-0.985187616881066150,	-0.985196189645079600,	-0.985204759946102570,	-0.985213327784113630,	-0.985221893159091480,	-0.985230456071014450,	-0.985239016519861340,	
+-0.985247574505610620,	-0.985256130028241080,	-0.985264683087731190,	-0.985273233684059610,	-0.985281781817204940,	-0.985290327487145730,	-0.985298870693860800,	-0.985307411437328580,	
+-0.985315949717527890,	-0.985324485534437300,	-0.985333018888035480,	-0.985341549778301130,	-0.985350078205213140,	-0.985358604168749760,	-0.985367127668889790,	-0.985375648705612120,	
+-0.985384167278895220,	-0.985392683388717990,	-0.985401197035059130,	-0.985409708217897200,	-0.985418216937210880,	-0.985426723192979080,	-0.985435226985180490,	-0.985443728313793900,	
+-0.985452227178797880,	-0.985460723580171340,	-0.985469217517892960,	-0.985477708991941650,	-0.985486198002296090,	-0.985494684548934960,	-0.985503168631837070,	-0.985511650250981310,	
+-0.985520129406346370,	-0.985528606097911260,	-0.985537080325654460,	-0.985545552089555080,	-0.985554021389591690,	-0.985562488225743330,	-0.985570952597988660,	-0.985579414506306710,	
+-0.985587873950676150,	-0.985596330931075900,	-0.985604785447484870,	-0.985613237499882060,	-0.985621687088245930,	-0.985630134212555630,	-0.985638578872790050,	-0.985647021068927880,	
+-0.985655460800948240,	-0.985663898068830150,	-0.985672332872552070,	-0.985680765212093250,	-0.985689195087432470,	-0.985697622498548640,	-0.985706047445420790,	-0.985714469928027910,	
+-0.985722889946348710,	-0.985731307500362420,	-0.985739722590047940,	-0.985748135215384070,	-0.985756545376349710,	-0.985764953072924110,	-0.985773358305086170,	-0.985781761072814790,	
+-0.985790161376089100,	-0.985798559214887900,	-0.985806954589190320,	-0.985815347498975260,	-0.985823737944221960,	-0.985832125924909210,	-0.985840511441016250,	-0.985848894492521890,	
+-0.985857275079405460,	-0.985865653201645880,	-0.985874028859222040,	-0.985882402052113080,	-0.985890772780298130,	-0.985899141043756310,	-0.985907506842466640,	-0.985915870176408250,	
+-0.985924231045560150,	-0.985932589449901360,	-0.985940945389411240,	-0.985949298864068680,	-0.985957649873852810,	-0.985965998418742880,	-0.985974344498718010,	-0.985982688113757220,	
+-0.985991029263839640,	-0.985999367948944720,	-0.986007704169051260,	-0.986016037924138500,	-0.986024369214185680,	-0.986032698039171820,	-0.986041024399076480,	-0.986049348293878360,	
+-0.986057669723556910,	-0.986065988688091370,	-0.986074305187460750,	-0.986082619221644310,	-0.986090930790621490,	-0.986099239894371200,	-0.986107546532872910,	-0.986115850706105630,	
+-0.986124152414049050,	-0.986132451656681840,	-0.986140748433983470,	-0.986149042745933290,	-0.986157334592510430,	-0.986165623973694340,	-0.986173910889464270,	-0.986182195339799230,	
+-0.986190477324678790,	-0.986198756844082090,	-0.986207033897988580,	-0.986215308486377400,	-0.986223580609227990,	-0.986231850266519720,	-0.986240117458231700,	-0.986248382184343520,	
+-0.986256644444834300,	-0.986264904239683490,	-0.986273161568870350,	-0.986281416432374320,	-0.986289668830174770,	-0.986297918762251260,	-0.986306166228582690,	-0.986314411229148760,	
+-0.986322653763928800,	-0.986330893832902180,	-0.986339131436048460,	-0.986347366573346760,	-0.986355599244776670,	-0.986363829450317640,	-0.986372057189949140,	-0.986380282463650280,	
+-0.986388505271400870,	-0.986396725613180040,	-0.986404943488967570,	-0.986413158898742590,	-0.986421371842484910,	-0.986429582320173640,	-0.986437790331788470,	-0.986445995877308750,	
+-0.986454198956714160,	-0.986462399569983940,	-0.986470597717097770,	-0.986478793398035130,	-0.986486986612775450,	-0.986495177361298330,	-0.986503365643583430,	-0.986511551459610000,	
+-0.986519734809357620,	-0.986527915692805960,	-0.986536094109934480,	-0.986544270060722980,	-0.986552443545150590,	-0.986560614563197100,	-0.986568783114842080,	-0.986576949200065110,	
+-0.986585112818845760,	-0.986593273971163590,	-0.986601432656998290,	-0.986609588876329440,	-0.986617742629136480,	-0.986625893915399450,	-0.986634042735097470,	-0.986642189088210440,	
+-0.986650332974717830,	-0.986658474394599530,	-0.986666613347834900,	-0.986674749834403950,	-0.986682883854286040,	-0.986691015407460850,	-0.986699144493908160,	-0.986707271113607560,	
+-0.986715395266538840,	-0.986723516952681570,	-0.986731636172015540,	-0.986739752924520430,	-0.986747867210176040,	-0.986755979028961950,	-0.986764088380857830,	-0.986772195265843480,	
+-0.986780299683898690,	-0.986788401635003030,	-0.986796501119136640,	-0.986804598136278850,	-0.986812692686409480,	-0.986820784769508410,	-0.986828874385555440,	-0.986836961534530270,	
+-0.986845046216412670,	-0.986853128431182450,	-0.986861208178819390,	-0.986869285459303410,	-0.986877360272614190,	-0.986885432618731520,	-0.986893502497635300,	-0.986901569909305220,	
+-0.986909634853721300,	-0.986917697330863430,	-0.986925757340711200,	-0.986933814883244500,	-0.986941869958443350,	-0.986949922566287440,	-0.986957972706756780,	-0.986966020379831170,	
+-0.986974065585490500,	-0.986982108323714690,	-0.986990148594483640,	-0.986998186397777370,	-0.987006221733575440,	-0.987014254601857880,	-0.987022285002604800,	-0.987030312935796020,	
+-0.987038338401411530,	-0.987046361399431030,	-0.987054381929834750,	-0.987062399992602370,	-0.987070415587714130,	-0.987078428715149720,	-0.987086439374889270,	-0.987094447566912780,	
+-0.987102453291200170,	-0.987110456547731440,	-0.987118457336486620,	-0.987126455657445610,	-0.987134451510588430,	-0.987142444895895090,	-0.987150435813345610,	-0.987158424262920110,	
+-0.987166410244598720,	-0.987174393758361020,	-0.987182374804187470,	-0.987190353382057960,	-0.987198329491952520,	-0.987206303133851270,	-0.987214274307734340,	-0.987222243013581640,	
+-0.987230209251373390,	-0.987238173021089740,	-0.987246134322710470,	-0.987254093156215930,	-0.987262049521586140,	-0.987270003418801220,	-0.987277954847841200,	-0.987285903808686530,	
+-0.987293850301317000,	-0.987301794325712740,	-0.987309735881854110,	-0.987317674969721120,	-0.987325611589293880,	-0.987333545740552540,	-0.987341477423477440,	-0.987349406638048710,	
+-0.987357333384246470,	-0.987365257662050850,	-0.987373179471442100,	-0.987381098812400330,	-0.987389015684905780,	-0.987396930088938810,	-0.987404842024479650,	-0.987412751491508090,	
+-0.987420658490004820,	-0.987428563019949860,	-0.987436465081323430,	-0.987444364674105900,	-0.987452261798277390,	-0.987460156453818350,	-0.987468048640708810,	-0.987475938358929220,	
+-0.987483825608459820,	-0.987491710389280850,	-0.987499592701372440,	-0.987507472544715160,	-0.987515349919289240,	-0.987523224825075040,	-0.987531097262052570,	-0.987538967230202400,	
+-0.987546834729504890,	-0.987554699759940260,	-0.987562562321488870,	-0.987570422414130960,	-0.987578280037847090,	-0.987586135192617620,	-0.987593987878422670,	-0.987601838095242930,	
+-0.987609685843058530,	-0.987617531121849800,	-0.987625373931597330,	-0.987633214272281350,	-0.987641052143882310,	-0.987648887546380920,	-0.987656720479757060,	-0.987664550943991420,	
+-0.987672378939064450,	-0.987680204464956520,	-0.987688027521648080,	-0.987695848109119480,	-0.987703666227351400,	-0.987711481876324070,	-0.987719295056018190,	-0.987727105766413870,	
+-0.987734914007491920,	-0.987742719779232560,	-0.987750523081616480,	-0.987758323914624040,	-0.987766122278236010,	-0.987773918172432430,	-0.987781711597194190,	-0.987789502552501530,	
+-0.987797291038335250,	-0.987805077054675570,	-0.987812860601503310,	-0.987820641678798910,	-0.987828420286542940,	-0.987836196424715980,	-0.987843970093298380,	-0.987851741292270940,	
+-0.987859510021614100,	-0.987867276281308440,	-0.987875040071334640,	-0.987882801391673390,	-0.987890560242304930,	-0.987898316623210150,	-0.987906070534369520,	-0.987913821975763720,	
+-0.987921570947373430,	-0.987929317449179110,	-0.987937061481161560,	-0.987944803043301350,	-0.987952542135579150,	-0.987960278757975760,	-0.987968012910471430,	-0.987975744593047160,	
+-0.987983473805683520,	-0.987991200548361200,	-0.987998924821061000,	-0.988006646623763360,	-0.988014365956449090,	-0.988022082819098870,	-0.988029797211693480,	-0.988037509134213620,	
+-0.988045218586639960,	-0.988052925568953190,	-0.988060630081134210,	-0.988068332123163580,	-0.988076031695022340,	-0.988083728796690820,	-0.988091423428150040,	-0.988099115589380680,	
+-0.988106805280363430,	-0.988114492501079410,	-0.988122177251508970,	-0.988129859531633130,	-0.988137539341432670,	-0.988145216680888280,	-0.988152891549980870,	-0.988160563948691340,	
+-0.988168233877000260,	-0.988175901334888640,	-0.988183566322337280,	-0.988191228839327200,	-0.988198888885838840,	-0.988206546461853240,	-0.988214201567351290,	-0.988221854202313900,	
+-0.988229504366721740,	-0.988237152060556070,	-0.988244797283797330,	-0.988252440036426650,	-0.988260080318424830,	-0.988267718129772880,	-0.988275353470451480,	-0.988282986340441870,	
+-0.988290616739724630,	-0.988298244668280980,	-0.988305870126091830,	-0.988313493113137880,	-0.988321113629400120,	-0.988328731674859570,	-0.988336347249497260,	-0.988343960353294080,	
+-0.988351570986231160,	-0.988359179148289080,	-0.988366784839449180,	-0.988374388059692240,	-0.988381988808999300,	-0.988389587087351470,	-0.988397182894729660,	-0.988404776231114780,	
+-0.988412367096488050,	-0.988419955490830390,	-0.988427541414123030,	-0.988435124866346660,	-0.988442705847482390,	-0.988450284357511480,	-0.988457860396414810,	-0.988465433964173630,	
+-0.988473005060768740,	-0.988480573686181250,	-0.988488139840392410,	-0.988495703523383230,	-0.988503264735134720,	-0.988510823475628130,	-0.988518379744844470,	-0.988525933542764750,	
+-0.988533484869370320,	-0.988541033724642300,	-0.988548580108561500,	-0.988556124021109260,	-0.988563665462266820,	-0.988571204432015070,	-0.988578740930335490,	-0.988586274957208970,	
+-0.988593806512616750,	-0.988601335596539950,	-0.988608862208959940,	-0.988616386349857600,	-0.988623908019214400,	-0.988631427217011470,	-0.988638943943229930,	-0.988646458197851020,	
+-0.988653969980856080,	-0.988661479292226140,	-0.988668986131942430,	-0.988676490499986290,	-0.988683992396338970,	-0.988691491820981590,	-0.988698988773895620,	-0.988706483255062160,	
+-0.988713975264462360,	-0.988721464802077680,	-0.988728951867889340,	-0.988736436461878590,	-0.988743918584026770,	-0.988751398234315130,	-0.988758875412725000,	-0.988766350119237860,	
+-0.988773822353834710,	-0.988781292116497010,	-0.988788759407206010,	-0.988796224225943150,	-0.988803686572689690,	-0.988811146447427180,	-0.988818603850136760,	-0.988826058780799770,	
+-0.988833511239397560,	-0.988840961225911590,	-0.988848408740323310,	-0.988855853782613980,	-0.988863296352764930,	-0.988870736450757740,	-0.988878174076573750,	-0.988885609230194310,	
+-0.988893041911600770,	-0.988900472120774590,	-0.988907899857697340,	-0.988915325122350250,	-0.988922747914715020,	-0.988930168234772760,	-0.988937586082505040,	-0.988945001457893440,	
+-0.988952414360919300,	-0.988959824791564190,	-0.988967232749809470,	-0.988974638235636580,	-0.988982041249027220,	-0.988989441789962730,	-0.988996839858424680,	-0.989004235454394530,	
+-0.989011628577853740,	-0.989019019228783880,	-0.989026407407166410,	-0.989033793112983120,	-0.989041176346215250,	-0.989048557106844360,	-0.989055935394852150,	-0.989063311210219950,	
+-0.989070684552929680,	-0.989078055422962570,	-0.989085423820300400,	-0.989092789744924540,	-0.989100153196816880,	-0.989107514175958880,	-0.989114872682331890,	-0.989122228715917820,	
+-0.989129582276698120,	-0.989136933364654580,	-0.989144281979768560,	-0.989151628122022060,	-0.989158971791396340,	-0.989166312987873160,	-0.989173651711434230,	-0.989180987962061110,	
+-0.989188321739735590,	-0.989195653044439240,	-0.989202981876153850,	-0.989210308234860890,	-0.989217632120542260,	-0.989224953533179520,	-0.989232272472754360,	-0.989239588939248570,	
+-0.989246902932643720,	-0.989254214452921610,	-0.989261523500064130,	-0.989268830074052750,	-0.989276134174869260,	-0.989283435802495450,	-0.989290734956913000,	-0.989298031638103810,	
+-0.989305325846049470,	-0.989312617580731750,	-0.989319906842132560,	-0.989327193630233800,	-0.989334477945016830,	-0.989341759786463770,	-0.989349039154556190,	-0.989356316049276100,	
+-0.989363590470605180,	-0.989370862418525340,	-0.989378131893018380,	-0.989385398894065960,	-0.989392663421650110,	-0.989399925475752510,	-0.989407185056355170,	-0.989414442163439880,	
+-0.989421696796988440,	-0.989428948956982860,	-0.989436198643404820,	-0.989443445856236450,	-0.989450690595459310,	-0.989457932861055430,	-0.989465172653006710,	-0.989472409971295150,	
+-0.989479644815902560,	-0.989486877186810830,	-0.989494107084001870,	-0.989501334507457700,	-0.989508559457160100,	-0.989515781933091090,	-0.989523001935232680,	-0.989530219463566780,	
+-0.989537434518075410,	-0.989544647098740350,	-0.989551857205543730,	-0.989559064838467450,	-0.989566269997493530,	-0.989573472682603870,	-0.989580672893780490,	-0.989587870631005510,	
+-0.989595065894260940,	-0.989602258683528580,	-0.989609448998790660,	-0.989616636840028980,	-0.989623822207225780,	-0.989631005100363060,	-0.989638185519422840,	-0.989645363464387030,	
+-0.989652538935237860,	-0.989659711931957560,	-0.989666882454527830,	-0.989674050502930780,	-0.989681216077148650,	-0.989688379177163570,	-0.989695539802957440,	-0.989702697954512710,	
+-0.989709853631810970,	-0.989717006834834660,	-0.989724157563565800,	-0.989731305817986630,	-0.989738451598079160,	-0.989745594903825520,	-0.989752735735207940,	-0.989759874092208450,	
+-0.989767009974809490,	-0.989774143382992850,	-0.989781274316740790,	-0.989788402776035640,	-0.989795528760859410,	-0.989802652271194350,	-0.989809773307022800,	-0.989816891868326780,	
+-0.989824007955088400,	-0.989831121567290140,	-0.989838232704914000,	-0.989845341367942220,	-0.989852447556357150,	-0.989859551270141020,	-0.989866652509275970,	-0.989873751273744220,	
+-0.989880847563528230,	-0.989887941378610030,	-0.989895032718972060,	-0.989902121584596450,	-0.989909207975465440,	-0.989916291891561610,	-0.989923373332866950,	-0.989930452299363830,	
+-0.989937528791034580,	-0.989944602807861560,	-0.989951674349827000,	-0.989958743416913260,	-0.989965810009102550,	-0.989972874126377470,	-0.989979935768720120,	-0.989986994936113080,	
+-0.989994051628538490,	-0.990001105845978670,	-0.990008157588416090,	-0.990015206855833220,	-0.990022253648212280,	-0.990029297965535740,	-0.990036339807785940,	-0.990043379174945230,	
+-0.990050416066996180,	-0.990057450483920910,	-0.990064482425702220,	-0.990071511892322120,	-0.990078538883763400,	-0.990085563400008310,	-0.990092585441039400,	-0.990099605006838910,	
+-0.990106622097389310,	-0.990113636712673270,	-0.990120648852673150,	-0.990127658517371390,	-0.990134665706750570,	-0.990141670420792930,	-0.990148672659481250,	-0.990155672422797780,	
+-0.990162669710725200,	-0.990169664523245840,	-0.990176656860342400,	-0.990183646721997320,	-0.990190634108193080,	-0.990197619018912460,	-0.990204601454137580,	-0.990211581413851240,	
+-0.990218558898035890,	-0.990225533906674230,	-0.990232506439748690,	-0.990239476497241980,	-0.990246444079136530,	-0.990253409185414930,	-0.990260371816059860,	-0.990267331971053770,	
+-0.990274289650379340,	-0.990281244854019250,	-0.990288197581956080,	-0.990295147834172380,	-0.990302095610650750,	-0.990309040911374060,	-0.990315983736324680,	-0.990322924085485280,	
+-0.990329861958838540,	-0.990336797356367260,	-0.990343730278054000,	-0.990350660723881340,	-0.990357588693832060,	-0.990364514187888840,	-0.990371437206034270,	-0.990378357748251110,	
+-0.990385275814521960,	-0.990392191404829810,	-0.990399104519157030,	-0.990406015157486610,	-0.990412923319801130,	-0.990419829006083390,	-0.990426732216315940,	-0.990433632950481700,	
+-0.990440531208563460,	-0.990447426990543780,	-0.990454320296405680,	-0.990461211126131720,	-0.990468099479704710,	-0.990474985357107430,	-0.990481868758322670,	-0.990488749683333220,	
+-0.990495628132121890,	-0.990502504104671560,	-0.990509377600964910,	-0.990516248620984970,	-0.990523117164714310,	-0.990529983232135920,	-0.990536846823232400,	-0.990543707937986850,	
+-0.990550566576382070,	-0.990557422738400970,	-0.990564276424026220,	-0.990571127633240730,	-0.990577976366027400,	-0.990584822622369130,	-0.990591666402248830,	-0.990598507705649390,	
+-0.990605346532553720,	-0.990612182882944610,	-0.990619016756805190,	-0.990625848154118030,	-0.990632677074866350,	-0.990639503519032960,	-0.990646327486600750,	-0.990653148977552740,	
+-0.990659967991872060,	-0.990666784529541270,	-0.990673598590543490,	-0.990680410174861860,	-0.990687219282479050,	-0.990694025913378300,	-0.990700830067542390,	-0.990707631744954460,	
+-0.990714430945597410,	-0.990721227669454360,	-0.990728021916508330,	-0.990734813686742100,	-0.990741602980138800,	-0.990748389796681560,	-0.990755174136353280,	-0.990761955999137300,	
+-0.990768735385016200,	-0.990775512293973320,	-0.990782286725991670,	-0.990789058681054270,	-0.990795828159144240,	-0.990802595160244600,	-0.990809359684338480,	-0.990816121731408980,	
+-0.990822881301439250,	-0.990829638394412290,	-0.990836393010311230,	-0.990843145149119200,	-0.990849894810819200,	-0.990856641995394470,	-0.990863386702828250,	-0.990870128933103670,	
+-0.990876868686203500,	-0.990883605962111340,	-0.990890340760810060,	-0.990897073082282920,	-0.990903802926513140,	-0.990910530293483860,	-0.990917255183178190,	-0.990923977595579490,	
+-0.990930697530670870,	-0.990937414988435460,	-0.990944129968856500,	-0.990950842471917110,	-0.990957552497600760,	-0.990964260045890440,	-0.990970965116769630,	-0.990977667710221220,	
+-0.990984367826228780,	-0.990991065464775330,	-0.990997760625844220,	-0.991004453309418660,	-0.991011143515482030,	-0.991017831244017540,	-0.991024516495008450,	-0.991031199268438190,	
+-0.991037879564289790,	-0.991044557382546820,	-0.991051232723192290,	-0.991057905586209760,	-0.991064575971582480,	-0.991071243879293910,	-0.991077909309327040,	-0.991084572261665350,	
+-0.991091232736292290,	-0.991097890733191210,	-0.991104546252345340,	-0.991111199293738140,	-0.991117849857352850,	-0.991124497943173030,	-0.991131143551181930,	-0.991137786681363100,	
+-0.991144427333699670,	-0.991151065508175220,	-0.991157701204773090,	-0.991164334423476730,	-0.991170965164269610,	-0.991177593427134960,	-0.991184219212056240,	-0.991190842519017120,	
+-0.991197463348000850,	-0.991204081698990880,	-0.991210697571970780,	-0.991217310966923890,	-0.991223921883833680,	-0.991230530322683710,	-0.991237136283457550,	-0.991243739766138440,	
+-0.991250340770709950,	-0.991256939297155640,	-0.991263535345458860,	-0.991270128915603400,	-0.991276720007572610,	-0.991283308621350060,	-0.991289894756919090,	-0.991296478414263490,	
+-0.991303059593366620,	-0.991309638294212150,	-0.991316214516783530,	-0.991322788261064350,	-0.991329359527038270,	-0.991335928314688970,	-0.991342494623999590,	-0.991349058454954020,	
+-0.991355619807535840,	-0.991362178681728600,	-0.991368735077515880,	-0.991375288994881480,	-0.991381840433808730,	-0.991388389394281420,	-0.991394935876283130,	-0.991401479879797430,	
+-0.991408021404808100,	-0.991414560451298720,	-0.991421097019252850,	-0.991427631108654280,	-0.991434162719486810,	-0.991440691851733780,	-0.991447218505378980,	-0.991453742680406200,	
+-0.991460264376799020,	-0.991466783594541100,	-0.991473300333616470,	-0.991479814594008470,	-0.991486326375700890,	-0.991492835678677520,	-0.991499342502921930,	-0.991505846848418140,	
+-0.991512348715149710,	-0.991518848103100430,	-0.991525345012253980,	-0.991531839442594150,	-0.991538331394104850,	-0.991544820866769650,	-0.991551307860572330,	-0.991557792375496790,	
+-0.991564274411526720,	-0.991570753968646130,	-0.991577231046838480,	-0.991583705646087890,	-0.991590177766377920,	-0.991596647407692490,	-0.991603114570015490,	-0.991609579253330710,	
+-0.991616041457621940,	-0.991622501182873100,	-0.991628958429068060,	-0.991635413196190640,	-0.991641865484224620,	-0.991648315293154000,	-0.991654762622962480,	-0.991661207473634070,	
+-0.991667649845152650,	-0.991674089737502260,	-0.991680527150666570,	-0.991686962084629480,	-0.991693394539374990,	-0.991699824514887030,	-0.991706252011149590,	-0.991712677028146360,	
+-0.991719099565861570,	-0.991725519624279020,	-0.991731937203382710,	-0.991738352303156550,	-0.991744764923584430,	-0.991751175064650380,	-0.991757582726338400,	-0.991763987908632520,	
+-0.991770390611516730,	-0.991776790834974830,	-0.991783188578991060,	-0.991789583843549210,	-0.991795976628633500,	-0.991802366934227740,	-0.991808754760316160,	-0.991815140106882650,	
+-0.991821522973911350,	-0.991827903361386260,	-0.991834281269291300,	-0.991840656697610680,	-0.991847029646328430,	-0.991853400115428550,	-0.991859768104895290,	-0.991866133614712650,	
+-0.991872496644864540,	-0.991878857195335200,	-0.991885215266108730,	-0.991891570857169170,	-0.991897923968500740,	-0.991904274600087570,	-0.991910622751913550,	-0.991916968423963040,	
+-0.991923311616220160,	-0.991929652328669140,	-0.991935990561293780,	-0.991942326314078530,	-0.991948659587007400,	-0.991954990380064630,	-0.991961318693234450,	-0.991967644526500990,	
+-0.991973967879848260,	-0.991980288753260720,	-0.991986607146722490,	-0.991992923060217690,	-0.991999236493730560,	-0.992005547447245340,	-0.992011855920746250,	-0.992018161914217540,	
+-0.992024465427643550,	-0.992030766461008300,	-0.992037065014296120,	-0.992043361087491250,	-0.992049654680578040,	-0.992055945793540620,	-0.992062234426363540,	-0.992068520579030610,	
+-0.992074804251526500,	-0.992081085443835330,	-0.992087364155941450,	-0.992093640387829210,	-0.992099914139482840,	-0.992106185410886690,	-0.992112454202025100,	-0.992118720512882410,	
+-0.992124984343442870,	-0.992131245693690820,	-0.992137504563610720,	-0.992143760953186790,	-0.992150014862403510,	-0.992156266291245310,	-0.992162515239696340,	-0.992168761707741040,	
+-0.992175005695363880,	-0.992181247202549190,	-0.992187486229281320,	-0.992193722775544850,	-0.992199956841324000,	-0.992206188426603240,	-0.992212417531367130,	-0.992218644155599900,	
+-0.992224868299286020,	-0.992231089962410050,	-0.992237309144956230,	-0.992243525846909220,	-0.992249740068253510,	-0.992255951808973300,	-0.992262161069053290,	-0.992268367848477830,	
+-0.992274572147231470,	-0.992280773965298570,	-0.992286973302663910,	-0.992293170159311620,	-0.992299364535226600,	-0.992305556430393090,	-0.992311745844795760,	-0.992317932778418950,	
+-0.992324117231247360,	-0.992330299203265430,	-0.992336478694457850,	-0.992342655704809060,	-0.992348830234303650,	-0.992355002282926060,	-0.992361171850660970,	-0.992367338937493070,	
+-0.992373503543406700,	-0.992379665668386530,	-0.992385825312417370,	-0.992391982475483550,	-0.992398137157569750,	-0.992404289358660760,	-0.992410439078740940,	-0.992416586317794950,	
+-0.992422731075807580,	-0.992428873352763310,	-0.992435013148647020,	-0.992441150463443060,	-0.992447285297136220,	-0.992453417649711180,	-0.992459547521152620,	-0.992465674911445220,	
+-0.992471799820573540,	-0.992477922248522380,	-0.992484042195276530,	-0.992490159660820440,	-0.992496274645139120,	-0.992502387148216920,	-0.992508497170038860,	-0.992514604710589500,	
+-0.992520709769853740,	-0.992526812347816030,	-0.992532912444461510,	-0.992539010059774630,	-0.992545105193740170,	-0.992551197846342940,	-0.992557288017567710,	-0.992563375707399280,	
+-0.992569460915822430,	-0.992575543642821860,	-0.992581623888382450,	-0.992587701652489220,	-0.992593776935126510,	-0.992599849736279350,	-0.992605920055932620,	-0.992611987894071010,	
+-0.992618053250679530,	-0.992624116125742970,	-0.992630176519246010,	-0.992636234431173550,	-0.992642289861510600,	-0.992648342810241950,	-0.992654393277352390,	-0.992660441262826820,	
+-0.992666486766650150,	-0.992672529788807270,	-0.992678570329283190,	-0.992684608388062610,	-0.992690643965130510,	-0.992696677060471710,	-0.992702707674071320,	-0.992708735805914120,	
+-0.992714761455985140,	-0.992720784624269270,	-0.992726805310751300,	-0.992732823515416360,	-0.992738839238249460,	-0.992744852479235380,	-0.992750863238359150,	-0.992756871515605770,	
+-0.992762877310960250,	-0.992768880624407490,	-0.992774881455932730,	-0.992780879805520540,	-0.992786875673156270,	-0.992792869058824690,	-0.992798859962511050,	-0.992804848384200240,	
+-0.992810834323877290,	-0.992816817781527310,	-0.992822798757135190,	-0.992828777250686080,	-0.992834753262165080,	-0.992840726791557100,	-0.992846697838847380,	-0.992852666404020920,	
+-0.992858632487062740,	-0.992864596087958180,	-0.992870557206691930,	-0.992876515843249320,	-0.992882471997615480,	-0.992888425669775420,	-0.992894376859714270,	-0.992900325567417250,	
+-0.992906271792869390,	-0.992912215536055800,	-0.992918156796961720,	-0.992924095575572150,	-0.992930031871872450,	-0.992935965685847630,	-0.992941897017482920,	-0.992947825866763440,	
+-0.992953752233674440,	-0.992959676118201020,	-0.992965597520328420,	-0.992971516440041890,	-0.992977432877326430,	-0.992983346832167490,	-0.992989258304550200,	-0.992995167294459800,	
+-0.993001073801881410,	-0.993006977826800250,	-0.993012879369201800,	-0.993018778429071050,	-0.993024675006393350,	-0.993030569101153950,	-0.993036460713338180,	-0.993042349842931380,	
+-0.993048236489918580,	-0.993054120654285110,	-0.993060002336016430,	-0.993065881535097780,	-0.993071758251514390,	-0.993077632485251600,	-0.993083504236294770,	-0.993089373504629110,	
+-0.993095240290239990,	-0.993101104593112850,	-0.993106966413232930,	-0.993112825750585570,	-0.993118682605156120,	-0.993124536976930040,	-0.993130388865892550,	-0.993136238272029240,	
+-0.993142085195325210,	-0.993147929635765920,	-0.993153771593336840,	-0.993159611068023310,	-0.993165448059810880,	-0.993171282568684810,	-0.993177114594630430,	-0.993182944137633310,	
+-0.993188771197678790,	-0.993194595774752330,	-0.993200417868839500,	-0.993206237479925540,	-0.993212054607996000,	-0.993217869253036230,	-0.993223681415032030,	-0.993229491093968410,	
+-0.993235298289831150,	-0.993241103002605600,	-0.993246905232277320,	-0.993252704978831780,	-0.993258502242254540,	-0.993264297022531050,	-0.993270089319646670,	-0.993275879133587170,	
+-0.993281666464337910,	-0.993287451311884560,	-0.993293233676212470,	-0.993299013557307430,	-0.993304790955154780,	-0.993310565869740200,	-0.993316338301049150,	-0.993322108249067300,	
+-0.993327875713780120,	-0.993333640695173270,	-0.993339403193232330,	-0.993345163207942970,	-0.993350920739290650,	-0.993356675787261060,	-0.993362428351839630,	-0.993368178433012280,	
+-0.993373926030764350,	-0.993379671145081740,	-0.993385413775949910,	-0.993391153923354420,	-0.993396891587281280,	-0.993402626767715850,	-0.993408359464643790,	-0.993414089678050780,	
+-0.993419817407922620,	-0.993425542654244880,	-0.993431265417003330,	-0.993436985696183660,	-0.993442703491771440,	-0.993448418803752450,	-0.993454131632112380,	-0.993459841976837010,	
+-0.993465549837912130,	-0.993471255215323310,	-0.993476958109056340,	-0.993482658519097010,	-0.993488356445431100,	-0.993494051888044180,	-0.993499744846922160,	-0.993505435322050710,	
+-0.993511123313415730,	-0.993516808821003130,	-0.993522491844798350,	-0.993528172384787300,	-0.993533850440955770,	-0.993539526013289760,	-0.993545199101774860,	-0.993550869706396940,	
+-0.993556537827141820,	-0.993562203463995490,	-0.993567866616943520,	-0.993573527285972040,	-0.993579185471066610,	-0.993584841172213240,	-0.993590494389397730,	-0.993596145122606080,	
+-0.993601793371823970,	-0.993607439137037530,	-0.993613082418232430,	-0.993618723215394570,	-0.993624361528509860,	-0.993629997357564300,	-0.993635630702543680,	-0.993641261563434130,	
+-0.993646889940221320,	-0.993652515832891270,	-0.993658139241430090,	-0.993663760165823470,	-0.993669378606057420,	-0.993674994562117830,	-0.993680608033990830,	-0.993686219021662430,	
+-0.993691827525118420,	-0.993697433544344810,	-0.993703037079327610,	-0.993708638130052830,	-0.993714236696506380,	-0.993719832778674480,	-0.993725426376542930,	-0.993731017490097730,	
+-0.993736606119325130,	-0.993742192264211010,	-0.993747775924741280,	-0.993753357100902180,	-0.993758935792679710,	-0.993764512000059890,	-0.993770085723028830,	-0.993775656961572550,	
+-0.993781225715677060,	-0.993786791985328600,	-0.993792355770513060,	-0.993797917071216670,	-0.993803475887425460,	-0.993809032219125530,	-0.993814586066303130,	-0.993820137428944150,	
+-0.993825686307034940,	-0.993831232700561510,	-0.993836776609509980,	-0.993842318033866470,	-0.993847856973617110,	-0.993853393428748120,	-0.993858927399245860,	-0.993864458885096110,	
+-0.993869987886285220,	-0.993875514402799310,	-0.993881038434624720,	-0.993886559981747460,	-0.993892079044153780,	-0.993897595621830000,	-0.993903109714762150,	-0.993908621322936560,	
+-0.993914130446339470,	-0.993919637084957010,	-0.993925141238775400,	-0.993930642907780990,	-0.993936142091959910,	-0.993941638791298600,	-0.993947133005783190,	-0.993952624735399910,	
+-0.993958113980135010,	-0.993963600739974810,	-0.993969085014905660,	-0.993974566804913810,	-0.993980046109985470,	-0.993985522930107110,	-0.993990997265264850,	-0.993996469115445260,	
+-0.994001938480634450,	-0.994007405360818660,	-0.994012869755984460,	-0.994018331666118080,	-0.994023791091205760,	-0.994029248031234160,	-0.994034702486189300,	-0.994040154456057760,	
+-0.994045603940825750,	-0.994051050940479740,	-0.994056495455006180,	-0.994061937484391310,	-0.994067377028621580,	-0.994072814087683440,	-0.994078248661563360,	-0.994083680750247670,	
+-0.994089110353722600,	-0.994094537471974850,	-0.994099962104990740,	-0.994105384252756740,	-0.994110803915259300,	-0.994116221092484880,	-0.994121635784419810,	-0.994127047991050670,	
+-0.994132457712363920,	-0.994137864948346110,	-0.994143269698983480,	-0.994148671964262820,	-0.994154071744170360,	-0.994159469038692790,	-0.994164863847816660,	-0.994170256171528210,	
+-0.994175646009814120,	-0.994181033362660950,	-0.994186418230055270,	-0.994191800611983530,	-0.994197180508432200,	-0.994202557919387940,	-0.994207932844837330,	-0.994213305284766810,	
+-0.994218675239163070,	-0.994224042708012680,	-0.994229407691302190,	-0.994234770189018070,	-0.994240130201147100,	-0.994245487727675960,	-0.994250842768590880,	-0.994256195323878770,	
+-0.994261545393526180,	-0.994266892977519690,	-0.994272238075845970,	-0.994277580688491810,	-0.994282920815443560,	-0.994288258456688000,	-0.994293593612211810,	-0.994298926282001560,	
+-0.994304256466044030,	-0.994309584164325910,	-0.994314909376833870,	-0.994320232103554470,	-0.994325552344474620,	-0.994330870099580770,	-0.994336185368859820,	-0.994341498152298330,	
+-0.994346808449883100,	-0.994352116261600800,	-0.994357421587438450,	-0.994362724427382380,	-0.994368024781419390,	-0.994373322649536480,	-0.994378618031720230,	-0.994383910927957420,	
+-0.994389201338234830,	-0.994394489262539260,	-0.994399774700857500,	-0.994405057653176330,	-0.994410338119482430,	-0.994415616099762700,	-0.994420891594003930,	-0.994426164602192910,	
+-0.994431435124316530,	-0.994436703160361590,	-0.994441968710314870,	-0.994447231774163170,	-0.994452492351893480,	-0.994457750443492490,	-0.994463006048947110,	-0.994468259168244220,	
+-0.994473509801370730,	-0.994478757948313420,	-0.994484003609059200,	-0.994489246783595070,	-0.994494487471907830,	-0.994499725673984260,	-0.994504961389811370,	-0.994510194619376180,	
+-0.994515425362665570,	-0.994520653619666240,	-0.994525879390365300,	-0.994531102674749650,	-0.994536323472806290,	-0.994541541784522030,	-0.994546757609883980,	-0.994551970948879040,	
+-0.994557181801494220,	-0.994562390167716410,	-0.994567596047532640,	-0.994572799440929910,	-0.994578000347895120,	-0.994583198768415280,	-0.994588394702477510,	-0.994593588150068820,	
+-0.994598779111176110,	-0.994603967585786400,	-0.994609153573886800,	-0.994614337075464320,	-0.994619518090505970,	-0.994624696618998880,	-0.994629872660930060,	-0.994635046216286510,	
+-0.994640217285055360,	-0.994645385867223730,	-0.994650551962778520,	-0.994655715571706960,	-0.994660876693996170,	-0.994666035329633160,	-0.994671191478605050,	-0.994676345140898980,	
+-0.994681496316502050,	-0.994686645005401380,	-0.994691791207584110,	-0.994696934923037230,	-0.994702076151748100,	-0.994707214893703840,	-0.994712351148891450,	-0.994717484917298280,	
+-0.994722616198911450,	-0.994727744993717970,	-0.994732871301705070,	-0.994737995122860100,	-0.994743116457170060,	-0.994748235304622310,	-0.994753351665203960,	-0.994758465538902240,	
+-0.994763576925704270,	-0.994768685825597410,	-0.994773792238568880,	-0.994778896164605800,	-0.994783997603695510,	-0.994789096555825260,	-0.994794193020982150,	-0.994799286999153650,	
+-0.994804378490326990,	-0.994809467494489290,	-0.994814554011627990,	-0.994819638041730240,	-0.994824719584783470,	-0.994829798640774920,	-0.994834875209691720,	-0.994839949291521420,	
+-0.994845020886251260,	-0.994850089993868590,	-0.994855156614360640,	-0.994860220747714740,	-0.994865282393918360,	-0.994870341552958730,	-0.994875398224823290,	-0.994880452409499410,	
+-0.994885504106974290,	-0.994890553317235530,	-0.994895600040270220,	-0.994900644276066060,	-0.994905686024610160,	-0.994910725285890200,	-0.994915762059893400,	-0.994920796346607130,	
+-0.994925828146018820,	-0.994930857458116050,	-0.994935884282886040,	-0.994940908620316370,	-0.994945930470394370,	-0.994950949833107610,	-0.994955966708443550,	-0.994960981096389530,	
+-0.994965992996933000,	-0.994971002410061420,	-0.994976009335762470,	-0.994981013774023370,	-0.994986015724831920,	-0.994991015188175340,	-0.994996012164041210,	-0.995001006652416970,	
+-0.995005998653290310,	-0.995010988166648680,	-0.995015975192479530,	-0.995020959730770430,	-0.995025941781508940,	-0.995030921344682630,	-0.995035898420279060,	-0.995040873008285590,	
+-0.995045845108690100,	-0.995050814721479830,	-0.995055781846642670,	-0.995060746484166090,	-0.995065708634037540,	-0.995070668296244690,	-0.995075625470775220,	-0.995080580157616690,	
+-0.995085532356756670,	-0.995090482068182850,	-0.995095429291882770,	-0.995100374027844240,	-0.995105316276054700,	-0.995110256036501940,	-0.995115193309173420,	-0.995120128094057030,	
+-0.995125060391140240,	-0.995129990200410820,	-0.995134917521856450,	-0.995139842355464820,	-0.995144764701223480,	-0.995149684559120340,	-0.995154601929142850,	-0.995159516811279010,	
+-0.995164429205516290,	-0.995169339111842470,	-0.995174246530245330,	-0.995179151460712560,	-0.995184053903232060,	-0.995188953857791270,	-0.995193851324378100,	-0.995198746302980330,	
+-0.995203638793585750,	-0.995208528796181930,	-0.995213416310756990,	-0.995218301337298380,	-0.995223183875794120,	-0.995228063926231750,	-0.995232941488599310,	-0.995237816562884460,	
+-0.995242689149075100,	-0.995247559247159020,	-0.995252426857124010,	-0.995257291978958070,	-0.995262154612648780,	-0.995267014758184130,	-0.995271872415551930,	-0.995276727584740060,	
+-0.995281580265736320,	-0.995286430458528830,	-0.995291278163105030,	-0.995296123379453170,	-0.995300966107560910,	-0.995305806347416280,	-0.995310644099007160,	-0.995315479362321340,	
+-0.995320312137346840,	-0.995325142424071660,	-0.995329970222483600,	-0.995334795532570650,	-0.995339618354320610,	-0.995344438687721490,	-0.995349256532761410,	-0.995354071889428040,	
+-0.995358884757709730,	-0.995363695137594040,	-0.995368503029069100,	-0.995373308432122910,	-0.995378111346743480,	-0.995382911772918710,	-0.995387709710636730,	-0.995392505159885420,	
+-0.995397298120652920,	-0.995402088592927110,	-0.995406876576696130,	-0.995411662071947980,	-0.995416445078670550,	-0.995421225596852090,	-0.995426003626480590,	-0.995430779167544190,	
+-0.995435552220030660,	-0.995440322783928240,	-0.995445090859225060,	-0.995449856445909220,	-0.995454619543968630,	-0.995459380153391530,	-0.995464138274166020,	-0.995468893906280130,	
+-0.995473647049722080,	-0.995478397704479880,	-0.995483145870541650,	-0.995487891547895520,	-0.995492634736529710,	-0.995497375436432350,	-0.995502113647591560,	-0.995506849369995450,	
+-0.995511582603632150,	-0.995516313348490000,	-0.995521041604557010,	-0.995525767371821410,	-0.995530490650271330,	-0.995535211439895100,	-0.995539929740680840,	-0.995544645552616790,	
+-0.995549358875691180,	-0.995554069709892020,	-0.995558778055207760,	-0.995563483911626520,	-0.995568187279136650,	-0.995572888157726270,	-0.995577586547383710,	-0.995582282448097100,	
+-0.995586975859854780,	-0.995591666782645100,	-0.995596355216456170,	-0.995601041161276460,	-0.995605724617094070,	-0.995610405583897350,	-0.995615084061674650,	-0.995619760050414300,	
+-0.995624433550104440,	-0.995629104560733610,	-0.995633773082289950,	-0.995638439114761800,	-0.995643102658137600,	-0.995647763712405710,	-0.995652422277554460,	-0.995657078353571980,	
+-0.995661731940446940,	-0.995666383038167460,	-0.995671031646722100,	-0.995675677766099110,	-0.995680321396286930,	-0.995684962537274010,	-0.995689601189048590,	-0.995694237351599340,	
+-0.995698871024914280,	-0.995703502208982180,	-0.995708130903791290,	-0.995712757109330050,	-0.995717380825587030,	-0.995722002052550460,	-0.995726620790208910,	-0.995731237038550710,	
+-0.995735850797564550,	-0.995740462067238650,	-0.995745070847561700,	-0.995749677138522030,	-0.995754280940108090,	-0.995758882252308570,	-0.995763481075111810,	-0.995768077408506370,	
+-0.995772671252480700,	-0.995777262607023370,	-0.995781851472122840,	-0.995786437847767770,	-0.995791021733946510,	-0.995795603130647740,	-0.995800182037860030,	-0.995804758455571700,	
+-0.995809332383771560,	-0.995813903822448170,	-0.995818472771589860,	-0.995823039231185540,	-0.995827603201223430,	-0.995832164681692560,	-0.995836723672581140,	-0.995841280173877850,	
+-0.995845834185571490,	-0.995850385707650390,	-0.995854934740103450,	-0.995859481282919230,	-0.995864025336086200,	-0.995868566899593130,	-0.995873105973428600,	-0.995877642557581380,	
+-0.995882176652039930,	-0.995886708256793150,	-0.995891237371829610,	-0.995895763997137860,	-0.995900288132706920,	-0.995904809778525020,	-0.995909328934581280,	-0.995913845600864040,	
+-0.995918359777362320,	-0.995922871464064660,	-0.995927380660959870,	-0.995931887368036620,	-0.995936391585283580,	-0.995940893312689650,	-0.995945392550243390,	-0.995949889297933710,	
+-0.995954383555749280,	-0.995958875323678880,	-0.995963364601711310,	-0.995967851389835350,	-0.995972335688039780,	-0.995976817496313280,	-0.995981296814644870,	-0.995985773643023100,	
+-0.995990247981436980,	-0.995994719829875200,	-0.995999189188326640,	-0.996003656056780100,	-0.996008120435224350,	-0.996012582323648420,	-0.996017041722040970,	-0.996021498630390910,	
+-0.996025953048687020,	-0.996030404976918420,	-0.996034854415073670,	-0.996039301363141890,	-0.996043745821111880,	-0.996048187788972420,	-0.996052627266712510,	-0.996057064254320950,	
+-0.996061498751786960,	-0.996065930759098990,	-0.996070360276246290,	-0.996074787303217630,	-0.996079211840002140,	-0.996083633886588490,	-0.996088053442965800,	-0.996092470509122970,	
+-0.996096885085048900,	-0.996101297170732700,	-0.996105706766163280,	-0.996110113871329640,	-0.996114518486220570,	-0.996118920610825300,	-0.996123320245132620,	-0.996127717389131750,	
+-0.996132112042811600,	-0.996136504206161180,	-0.996140893879169380,	-0.996145281061825430,	-0.996149665754118230,	-0.996154047956036900,	-0.996158427667570460,	-0.996162804888707900,	
+-0.996167179619438350,	-0.996171551859750930,	-0.996175921609634530,	-0.996180288869078390,	-0.996184653638071520,	-0.996189015916602920,	-0.996193375704661820,	-0.996197733002237460,	
+-0.996202087809318630,	-0.996206440125894540,	-0.996210789951954330,	-0.996215137287487230,	-0.996219482132482240,	-0.996223824486928590,	-0.996228164350815290,	-0.996232501724131690,	
+-0.996236836606866900,	-0.996241168999009830,	-0.996245498900549920,	-0.996249826311476290,	-0.996254151231778070,	-0.996258473661444490,	-0.996262793600464770,	-0.996267111048827920,	
+-0.996271426006523410,	-0.996275738473540230,	-0.996280048449867840,	-0.996284355935495250,	-0.996288660930411800,	-0.996292963434606600,	-0.996297263448069130,	-0.996301560970788370,	
+-0.996305856002753900,	-0.996310148543954610,	-0.996314438594380070,	-0.996318726154019400,	-0.996323011222861820,	-0.996327293800896910,	-0.996331573888113550,	-0.996335851484501430,	
+-0.996340126590049560,	-0.996344399204747380,	-0.996348669328584240,	-0.996352936961549470,	-0.996357202103632210,	-0.996361464754822120,	-0.996365724915108220,	-0.996369982584480170,	
+-0.996374237762927110,	-0.996378490450438360,	-0.996382740647003500,	-0.996386988352611750,	-0.996391233567252450,	-0.996395476290915180,	-0.996399716523589160,	-0.996403954265263850,	
+-0.996408189515928690,	-0.996412422275573030,	-0.996416652544186320,	-0.996420880321758020,	-0.996425105608277460,	-0.996429328403734100,	-0.996433548708117510,	-0.996437766521417020,	
+-0.996441981843622090,	-0.996446194674722290,	-0.996450405014706830,	-0.996454612863565510,	-0.996458818221287680,	-0.996463021087862780,	-0.996467221463280260,	-0.996471419347529700,	
+-0.996475614740600530,	-0.996479807642482450,	-0.996483998053164790,	-0.996488185972637110,	-0.996492371400888980,	-0.996496554337910070,	-0.996500734783689610,	-0.996504912738217290,	
+-0.996509088201482760,	-0.996513261173475500,	-0.996517431654185050,	-0.996521599643601210,	-0.996525765141713200,	-0.996529928148510710,	-0.996534088663983520,	-0.996538246688121080,	
+-0.996542402220913060,	-0.996546555262348920,	-0.996550705812418450,	-0.996554853871111310,	-0.996558999438416860,	-0.996563142514325100,	-0.996567283098825360,	-0.996571421191907450,	
+-0.996575556793561020,	-0.996579689903775660,	-0.996583820522541130,	-0.996587948649847010,	-0.996592074285682970,	-0.996596197430038800,	-0.996600318082904170,	-0.996604436244268640,	
+-0.996608551914122010,	-0.996612665092454160,	-0.996616775779254450,	-0.996620883974512980,	-0.996624989678219220,	-0.996629092890363060,	-0.996633193610934050,	-0.996637291839922110,	
+-0.996641387577316910,	-0.996645480823108220,	-0.996649571577285950,	-0.996653659839839670,	-0.996657745610759260,	-0.996661828890034520,	-0.996665909677655120,	-0.996669987973610950,	
+-0.996674063777891920,	-0.996678137090487580,	-0.996682207911388060,	-0.996686276240582920,	-0.996690342078062170,	-0.996694405423815490,	-0.996698466277832760,	-0.996702524640104000,	
+-0.996706580510618780,	-0.996710633889367200,	-0.996714684776339070,	-0.996718733171524150,	-0.996722779074912470,	-0.996726822486493690,	-0.996730863406257940,	-0.996734901834195110,	
+-0.996738937770294990,	-0.996742971214547470,	-0.996747002166942560,	-0.996751030627470170,	-0.996755056596120180,	-0.996759080072882500,	-0.996763101057747130,	-0.996767119550704070,	
+-0.996771135551743240,	-0.996775149060854520,	-0.996779160078027910,	-0.996783168603253330,	-0.996787174636521000,	-0.996791178177820590,	-0.996795179227142230,	-0.996799177784476020,	
+-0.996803173849811870,	-0.996807167423139680,	-0.996811158504449680,	-0.996815147093731760,	-0.996819133190975930,	-0.996823116796172300,	-0.996827097909310900,	-0.996831076530381720,	
+-0.996835052659374890,	-0.996839026296280410,	-0.996842997441088290,	-0.996846966093788760,	-0.996850932254371710,	-0.996854895922827390,	-0.996858857099145900,	-0.996862815783317150,	
+-0.996866771975331470,	-0.996870725675178870,	-0.996874676882849360,	-0.996878625598333290,	-0.996882571821620540,	-0.996886515552701360,	-0.996890456791565960,	-0.996894395538204360,	
+-0.996898331792606780,	-0.996902265554763470,	-0.996906196824664300,	-0.996910125602299750,	-0.996914051887659910,	-0.996917975680734920,	-0.996921896981515010,	-0.996925815789990290,	
+-0.996929732106151100,	-0.996933645929987570,	-0.996937557261489920,	-0.996941466100648380,	-0.996945372447453180,	-0.996949276301894450,	-0.996953177663962740,	-0.996957076533647960,	
+-0.996960972910940440,	-0.996964866795830520,	-0.996968758188308430,	-0.996972647088364530,	-0.996976533495988910,	-0.996980417411172050,	-0.996984298833904050,	-0.996988177764175370,	
+-0.996992054201976230,	-0.996995928147296980,	-0.996999799600127860,	-0.997003668560459190,	-0.997007535028281430,	-0.997011399003584930,	-0.997015260486359800,	-0.997019119476596490,	
+-0.997022975974285460,	-0.997026829979416940,	-0.997030681491981370,	-0.997034530511969110,	-0.997038377039370480,	-0.997042221074175950,	-0.997046062616375850,	-0.997049901665960640,	
+-0.997053738222920650,	-0.997057572287246340,	-0.997061403858928050,	-0.997065232937956240,	-0.997069059524321450,	-0.997072883618013940,	-0.997076705219024140,	-0.997080524327342730,	
+-0.997084340942959830,	-0.997088155065866230,	-0.997091966696052160,	-0.997095775833508170,	-0.997099582478224830,	-0.997103386630192490,	-0.997107188289401700,	-0.997110987455842920,	
+-0.997114784129506710,	-0.997118578310383420,	-0.997122369998463820,	-0.997126159193738150,	-0.997129945896197300,	-0.997133730105831400,	-0.997137511822631220,	-0.997141291046587330,	
+-0.997145067777690080,	-0.997148842015930240,	-0.997152613761298270,	-0.997156383013784840,	-0.997160149773380410,	-0.997163914040075650,	-0.997167675813861010,	-0.997171435094727280,	
+-0.997175191882664900,	-0.997178946177664450,	-0.997182697979716810,	-0.997186447288812340,	-0.997190194104941810,	-0.997193938428095670,	-0.997197680258264830,	-0.997201419595439730,	
+-0.997205156439611050,	-0.997208890790769460,	-0.997212622648905640,	-0.997216352014010380,	-0.997220078886074220,	-0.997223803265087750,	-0.997227525151041850,	-0.997231244543927090,	
+-0.997234961443734250,	-0.997238675850454000,	-0.997242387764077140,	-0.997246097184594230,	-0.997249804111996150,	-0.997253508546273480,	-0.997257210487417000,	-0.997260909935417610,	
+-0.997264606890265860,	-0.997268301351952550,	-0.997271993320468560,	-0.997275682795804590,	-0.997279369777951510,	-0.997283054266899890,	-0.997286736262640640,	-0.997290415765164530,	
+-0.997294092774462460,	-0.997297767290525110,	-0.997301439313343360,	-0.997305108842908020,	-0.997308775879209850,	-0.997312440422239770,	-0.997316102471988540,	-0.997319762028447190,	
+-0.997323419091606270,	-0.997327073661456900,	-0.997330725737989860,	-0.997334375321195950,	-0.997338022411066170,	-0.997341667007591300,	-0.997345309110762250,	-0.997348948720569890,	
+-0.997352585837005260,	-0.997356220460059120,	-0.997359852589722480,	-0.997363482225986140,	-0.997367109368841100,	-0.997370734018278250,	-0.997374356174288600,	-0.997377975836863050,	
+-0.997381593005992610,	-0.997385207681668050,	-0.997388819863880730,	-0.997392429552621200,	-0.997396036747880580,	-0.997399641449649880,	-0.997403243657920100,	-0.997406843372682150,	
+-0.997410440593927250,	-0.997414035321646080,	-0.997417627555829860,	-0.997421217296469600,	-0.997424804543556310,	-0.997428389297081000,	-0.997431971557034670,	-0.997435551323408440,	
+-0.997439128596193330,	-0.997442703375380550,	-0.997446275660960780,	-0.997449845452925480,	-0.997453412751265420,	-0.997456977555971960,	-0.997460539867035980,	-0.997464099684448710,	
+-0.997467657008201170,	-0.997471211838284470,	-0.997474764174689720,	-0.997478314017408160,	-0.997481861366430690,	-0.997485406221748640,	-0.997488948583353020,	-0.997492488451235060,	
+-0.997496025825385880,	-0.997499560705796710,	-0.997503093092458550,	-0.997506622985362630,	-0.997510150384500300,	-0.997513675289862460,	-0.997517197701440540,	-0.997520717619225560,	
+-0.997524235043208750,	-0.997527749973381340,	-0.997531262409734550,	-0.997534772352259740,	-0.997538279800947890,	-0.997541784755790360,	-0.997545287216778380,	-0.997548787183903160,	
+-0.997552284657156060,	-0.997555779636528080,	-0.997559272122010790,	-0.997562762113595290,	-0.997566249611272830,	-0.997569734615034840,	-0.997573217124872460,	-0.997576697140777010,	
+-0.997580174662739850,	-0.997583649690752310,	-0.997587122224805610,	-0.997590592264891000,	-0.997594059811000020,	-0.997597524863123810,	-0.997600987421253920,	-0.997604447485381460,	
+-0.997607905055497900,	-0.997611360131594570,	-0.997614812713662920,	-0.997618262801694190,	-0.997621710395679710,	-0.997625155495611150,	-0.997628598101479520,	-0.997632038213276510,	
+-0.997635475830993320,	-0.997638910954621430,	-0.997642343584152380,	-0.997645773719577300,	-0.997649201360887970,	-0.997652626508075510,	-0.997656049161131600,	-0.997659469320047450,	
+-0.997662886984814650,	-0.997666302155424730,	-0.997669714831868950,	-0.997673125014138850,	-0.997676532702226120,	-0.997679937896121860,	-0.997683340595817870,	-0.997686740801305480,	
+-0.997690138512576260,	-0.997693533729621660,	-0.997696926452433240,	-0.997700316681002560,	-0.997703704415321080,	-0.997707089655380240,	-0.997710472401171830,	-0.997713852652687080,	
+-0.997717230409917780,	-0.997720605672855370,	-0.997723978441491520,	-0.997727348715817700,	-0.997730716495825450,	-0.997734081781506470,	-0.997737444572852290,	-0.997740804869854500,	
+-0.997744162672504650,	-0.997747517980794420,	-0.997750870794715360,	-0.997754221114259150,	-0.997757568939417360,	-0.997760914270181760,	-0.997764257106543710,	-0.997767597448495080,	
+-0.997770935296027560,	-0.997774270649132600,	-0.997777603507801980,	-0.997780933872027380,	-0.997784261741800460,	-0.997787587117112800,	-0.997790909997956170,	-0.997794230384322360,	
+-0.997797548276202930,	-0.997800863673589560,	-0.997804176576474130,	-0.997807486984848220,	-0.997810794898703720,	-0.997814100318032080,	-0.997817403242825200,	-0.997820703673074850,	
+-0.997824001608772710,	-0.997827297049910580,	-0.997830589996480220,	-0.997833880448473430,	-0.997837168405881880,	-0.997840453868697460,	-0.997843736836911850,	-0.997847017310516840,	
+-0.997850295289504420,	-0.997853570773866160,	-0.997856843763593960,	-0.997860114258679820,	-0.997863382259115310,	-0.997866647764892310,	-0.997869910776002620,	-0.997873171292438240,	
+-0.997876429314190960,	-0.997879684841252560,	-0.997882937873615040,	-0.997886188411270080,	-0.997889436454209580,	-0.997892682002425650,	-0.997895925055909850,	-0.997899165614654300,	
+-0.997902403678650910,	-0.997905639247891440,	-0.997908872322367910,	-0.997912102902072220,	-0.997915330986996250,	-0.997918556577131910,	-0.997921779672471200,	-0.997925000273006120,	
+-0.997928218378728470,	-0.997931433989630360,	-0.997934647105703570,	-0.997937857726940100,	-0.997941065853332090,	-0.997944271484871410,	-0.997947474621549980,	-0.997950675263359900,	
+-0.997953873410293180,	-0.997957069062341720,	-0.997960262219497630,	-0.997963452881752920,	-0.997966641049099490,	-0.997969826721529450,	-0.997973009899034920,	-0.997976190581607910,	
+-0.997979368769240320,	-0.997982544461924360,	-0.997985717659651940,	-0.997988888362415280,	-0.997992056570206510,	-0.997995222283017510,	-0.997998385500840410,	-0.998001546223667320,	
+-0.998004704451490480,	-0.998007860184301880,	-0.998011013422093640,	-0.998014164164857780,	-0.998017312412586510,	-0.998020458165271960,	-0.998023601422906360,	-0.998026742185481710,	
+-0.998029880452990240,	-0.998033016225423950,	-0.998036149502775190,	-0.998039280285036080,	-0.998042408572198720,	-0.998045534364255360,	-0.998048657661198100,	-0.998051778463019290,	
+-0.998054896769711040,	-0.998058012581265590,	-0.998061125897675040,	-0.998064236718931630,	-0.998067345045027700,	-0.998070450875955360,	-0.998073554211706960,	-0.998076655052274610,	
+-0.998079753397650650,	-0.998082849247827310,	-0.998085942602796820,	-0.998089033462551510,	-0.998092121827083510,	-0.998095207696385270,	-0.998098291070449120,	-0.998101371949267180,	
+-0.998104450332831790,	-0.998107526221135190,	-0.998110599614169920,	-0.998113670511928010,	-0.998116738914402000,	-0.998119804821584240,	-0.998122868233466850,	-0.998125929150042280,	
+-0.998128987571302970,	-0.998132043497241160,	-0.998135096927849190,	-0.998138147863119500,	-0.998141196303044430,	-0.998144242247616440,	-0.998147285696827760,	-0.998150326650670940,	
+-0.998153365109138320,	-0.998156401072222250,	-0.998159434539915070,	-0.998162465512209440,	-0.998165493989097710,	-0.998168519970572100,	-0.998171543456625180,	-0.998174564447249500,	
+-0.998177582942437300,	-0.998180598942181250,	-0.998183612446473690,	-0.998186623455306950,	-0.998189631968673830,	-0.998192637986566540,	-0.998195641508977770,	-0.998198642535899740,	
+-0.998201641067325230,	-0.998204637103246580,	-0.998207630643656250,	-0.998210621688546910,	-0.998213610237911110,	-0.998216596291741200,	-0.998219579850029850,	-0.998222560912769400,	
+-0.998225539479952630,	-0.998228515551572100,	-0.998231489127620160,	-0.998234460208089590,	-0.998237428792972840,	-0.998240394882262460,	-0.998243358475951140,	-0.998246319574031430,	
+-0.998249278176496000,	-0.998252234283337200,	-0.998255187894547920,	-0.998258139010120730,	-0.998261087630048060,	-0.998264033754322820,	-0.998266977382937350,	-0.998269918515884540,	
+-0.998272857153156830,	-0.998275793294747030,	-0.998278726940647790,	-0.998281658090851680,	-0.998284586745351480,	-0.998287512904139750,	-0.998290436567209280,	-0.998293357734552630,	
+-0.998296276406162700,	-0.998299192582032040,	-0.998302106262153430,	-0.998305017446519560,	-0.998307926135123090,	-0.998310832327956810,	-0.998313736025013500,	-0.998316637226285720,	
+-0.998319535931766480,	-0.998322432141448330,	-0.998325325855324190,	-0.998328217073386700,	-0.998331105795628670,	-0.998333992022042870,	-0.998336875752621980,	-0.998339756987358990,	
+-0.998342635726246600,	-0.998345511969277680,	-0.998348385716445020,	-0.998351256967741300,	-0.998354125723159400,	-0.998356991982692230,	-0.998359855746332570,	-0.998362717014073310,	
+-0.998365575785907230,	-0.998368432061827240,	-0.998371285841826110,	-0.998374137125896840,	-0.998376985914032230,	-0.998379832206225060,	-0.998382676002468330,	-0.998385517302754930,	
+-0.998388356107077770,	-0.998391192415429730,	-0.998394026227803710,	-0.998396857544192610,	-0.998399686364589310,	-0.998402512688986830,	-0.998405336517378060,	-0.998408157849756010,	
+-0.998410976686113560,	-0.998413793026443620,	-0.998416606870739190,	-0.998419418218993270,	-0.998422227071198880,	-0.998425033427348780,	-0.998427837287436120,	-0.998430638651453980,	
+-0.998433437519395170,	-0.998436233891252800,	-0.998439027767019760,	-0.998441819146689170,	-0.998444608030254140,	-0.998447394417707470,	-0.998450178309042370,	-0.998452959704251740,	
+-0.998455738603328810,	-0.998458515006266590,	-0.998461288913057960,	-0.998464060323696170,	-0.998466829238174200,	-0.998469595656485190,	-0.998472359578622130,	-0.998475121004578250,	
+-0.998477879934346560,	-0.998480636367920170,	-0.998483390305292100,	-0.998486141746455670,	-0.998488890691403790,	-0.998491637140129670,	-0.998494381092626560,	-0.998497122548887450,	
+-0.998499861508905460,	-0.998502597972674040,	-0.998505331940185870,	-0.998508063411434500,	-0.998510792386412940,	-0.998513518865114410,	-0.998516242847532150,	-0.998518964333659160,	
+-0.998521683323488900,	-0.998524399817014350,	-0.998527113814228760,	-0.998529825315125460,	-0.998532534319697460,	-0.998535240827938320,	-0.998537944839840930,	-0.998540646355398740,	
+-0.998543345374604980,	-0.998546041897452770,	-0.998548735923935450,	-0.998551427454046350,	-0.998554116487778700,	-0.998556803025125730,	-0.998559487066080780,	-0.998562168610637070,	
+-0.998564847658787950,	-0.998567524210526640,	-0.998570198265846590,	-0.998572869824741030,	-0.998575538887203410,	-0.998578205453226730,	-0.998580869522804670,	-0.998583531095930450,	
+-0.998586190172597420,	-0.998588846752798800,	-0.998591500836528150,	-0.998594152423778690,	-0.998596801514543890,	-0.998599448108817180,	-0.998602092206591680,	-0.998604733807861080,	
+-0.998607372912618580,	-0.998610009520857660,	-0.998612643632571740,	-0.998615275247754170,	-0.998617904366398410,	-0.998620530988497900,	-0.998623155114046090,	-0.998625776743036430,	
+-0.998628395875462260,	-0.998631012511317030,	-0.998633626650594410,	-0.998636238293287630,	-0.998638847439390350,	-0.998641454088895930,	-0.998644058241797810,	-0.998646659898089540,	
+-0.998649259057764690,	-0.998651855720816610,	-0.998654449887238950,	-0.998657041557025170,	-0.998659630730168720,	-0.998662217406663280,	-0.998664801586502280,	-0.998667383269679300,	
+-0.998669962456187780,	-0.998672539146021390,	-0.998675113339173580,	-0.998677685035638140,	-0.998680254235408400,	-0.998682820938478040,	-0.998685385144840620,	-0.998687946854489810,	
+-0.998690506067419050,	-0.998693062783622020,	-0.998695617003092280,	-0.998698168725823620,	-0.998700717951809480,	-0.998703264681043650,	-0.998705808913519570,	-0.998708350649230910,	
+-0.998710889888171470,	-0.998713426630334690,	-0.998715960875714460,	-0.998718492624304340,	-0.998721021876097900,	-0.998723548631088920,	-0.998726072889271070,	-0.998728594650638120,	
+-0.998731113915183540,	-0.998733630682901330,	-0.998736144953784930,	-0.998738656727828240,	-0.998741166005024830,	-0.998743672785368570,	-0.998746177068853160,	-0.998748678855472250,	
+-0.998751178145219630,	-0.998753674938089090,	-0.998756169234074400,	-0.998758661033169240,	-0.998761150335367500,	-0.998763637140662740,	-0.998766121449048970,	-0.998768603260519860,	
+-0.998771082575069300,	-0.998773559392691080,	-0.998776033713378860,	-0.998778505537126660,	-0.998780974863928140,	-0.998783441693777090,	-0.998785906026667500,	-0.998788367862593170,	
+-0.998790827201547880,	-0.998793284043525630,	-0.998795738388520090,	-0.998798190236525270,	-0.998800639587534840,	-0.998803086441542920,	-0.998805530798543280,	-0.998807972658529720,	
+-0.998810412021496340,	-0.998812848887436820,	-0.998815283256345280,	-0.998817715128215490,	-0.998820144503041460,	-0.998822571380816980,	-0.998824995761536160,	-0.998827417645192780,	
+-0.998829837031780960,	-0.998832253921294490,	-0.998834668313727360,	-0.998837080209073580,	-0.998839489607327050,	-0.998841896508481870,	-0.998844300912531850,	-0.998846702819471190,	
+-0.998849102229293680,	-0.998851499141993450,	-0.998853893557564600,	-0.998856285476000920,	-0.998858674897296410,	-0.998861061821445410,	-0.998863446248441590,	-0.998865828178279180,	
+-0.998868207610952300,	-0.998870584546454830,	-0.998872958984780900,	-0.998875330925924620,	-0.998877700369880000,	-0.998880067316641140,	-0.998882431766202060,	-0.998884793718556870,	
+-0.998887153173699800,	-0.998889510131624860,	-0.998891864592326040,	-0.998894216555797580,	-0.998896566022033580,	-0.998898912991028180,	-0.998901257462775580,	-0.998903599437269700,	
+-0.998905938914504960,	-0.998908275894475280,	-0.998910610377174880,	-0.998912942362597980,	-0.998915271850738810,	-0.998917598841591370,	-0.998919923335150010,	-0.998922245331408720,	
+-0.998924564830361960,	-0.998926881832003730,	-0.998929196336328260,	-0.998931508343329780,	-0.998933817853002610,	-0.998936124865340890,	-0.998938429380338830,	-0.998940731397990670,	
+-0.998943030918290730,	-0.998945327941233140,	-0.998947622466812350,	-0.998949914495022350,	-0.998952204025857720,	-0.998954491059312440,	-0.998956775595380990,	-0.998959057634057680,	
+-0.998961337175336640,	-0.998963614219212310,	-0.998965888765678930,	-0.998968160814730830,	-0.998970430366362240,	-0.998972697420567710,	-0.998974961977341370,	-0.998977224036677660,	
+-0.998979483598570810,	-0.998981740663015260,	-0.998983995230005470,	-0.998986247299535560,	-0.998988496871600070,	-0.998990743946193360,	-0.998992988523309870,	-0.998995230602943820,	
+-0.998997470185089660,	-0.998999707269741970,	-0.999001941856894840,	-0.999004173946542950,	-0.999006403538680640,	-0.999008630633302250,	-0.999010855230402340,	-0.999013077329975240,	
+-0.999015296932015520,	-0.999017514036517510,	-0.999019728643475660,	-0.999021940752884640,	-0.999024150364738680,	-0.999026357479032350,	-0.999028562095760080,	-0.999030764214916430,	
+-0.999032963836495980,	-0.999035160960492940,	-0.999037355586902100,	-0.999039547715717900,	-0.999041737346934800,	-0.999043924480547350,	-0.999046109116550120,	-0.999048291254937550,	
+-0.999050470895704310,	-0.999052648038844860,	-0.999054822684353750,	-0.999056994832225650,	-0.999059164482455020,	-0.999061331635036520,	-0.999063496289964710,	-0.999065658447234160,	
+-0.999067818106839420,	-0.999069975268775060,	-0.999072129933035850,	-0.999074282099616350,	-0.999076431768511130,	-0.999078578939714860,	-0.999080723613222090,	-0.999082865789027500,	
+-0.999085005467125750,	-0.999087142647511530,	-0.999089277330179380,	-0.999091409515124100,	-0.999093539202340230,	-0.999095666391822570,	-0.999097791083565780,	-0.999099913277564420,	
+-0.999102032973813390,	-0.999104150172307140,	-0.999106264873040660,	-0.999108377076008410,	-0.999110486781205290,	-0.999112593988625950,	-0.999114698698265080,	-0.999116800910117450,	
+-0.999118900624177850,	-0.999120997840440950,	-0.999123092558901640,	-0.999125184779554590,	-0.999127274502394580,	-0.999129361727416290,	-0.999131446454614710,	-0.999133528683984420,	
+-0.999135608415520290,	-0.999137685649217230,	-0.999139760385070020,	-0.999141832623073320,	-0.999143902363222040,	-0.999145969605510940,	-0.999148034349934930,	-0.999150096596488900,	
+-0.999152156345167630,	-0.999154213595965900,	-0.999156268348878720,	-0.999158320603900860,	-0.999160370361027230,	-0.999162417620252600,	-0.999164462381571970,	-0.999166504644980140,	
+-0.999168544410471980,	-0.999170581678042620,	-0.999172616447686730,	-0.999174648719399320,	-0.999176678493175260,	-0.999178705769009470,	-0.999180730546897040,	-0.999182752826832670,	
+-0.999184772608811440,	-0.999186789892828280,	-0.999188804678878270,	-0.999190816966956110,	-0.999192826757056900,	-0.999194834049175640,	-0.999196838843307340,	-0.999198841139446900,	
+-0.999200840937589430,	-0.999202838237729820,	-0.999204833039863070,	-0.999206825343984310,	-0.999208815150088410,	-0.999210802458170510,	-0.999212787268225600,	-0.999214769580248690,	
+-0.999216749394234880,	-0.999218726710179310,	-0.999220701528076850,	-0.999222673847922520,	-0.999224643669711640,	-0.999226610993439120,	-0.999228575819100070,	-0.999230538146689610,	
+-0.999232497976202730,	-0.999234455307634660,	-0.999236410140980410,	-0.999238362476235100,	-0.999240312313393940,	-0.999242259652452060,	-0.999244204493404450,	-0.999246146836246350,	
+-0.999248086680972870,	-0.999250024027579230,	-0.999251958876060550,	-0.999253891226411840,	-0.999255821078628540,	-0.999257748432705540,	-0.999259673288638290,	-0.999261595646421920,	
+-0.999263515506051410,	-0.999265432867522120,	-0.999267347730829370,	-0.999269260095968170,	-0.999271169962933750,	-0.999273077331721550,	-0.999274982202326580,	-0.999276884574744170,	
+-0.999278784448969560,	-0.999280681824997960,	-0.999282576702824610,	-0.999284469082444950,	-0.999286358963853980,	-0.999288246347047160,	-0.999290131232019820,	-0.999292013618767070,	
+-0.999293893507284260,	-0.999295770897566720,	-0.999297645789609780,	-0.999299518183408790,	-0.999301388078958960,	-0.999303255476255540,	-0.999305120375294180,	-0.999306982776069890,	
+-0.999308842678578220,	-0.999310700082814420,	-0.999312554988773800,	-0.999314407396451830,	-0.999316257305843840,	-0.999318104716945270,	-0.999319949629751350,	-0.999321792044257640,	
+-0.999323631960459370,	-0.999325469378352090,	-0.999327304297931150,	-0.999329136719191880,	-0.999330966642129730,	-0.999332794066740250,	-0.999334618993018790,	-0.999336441420960790,	
+-0.999338261350561700,	-0.999340078781816850,	-0.999341893714721820,	-0.999343706149272150,	-0.999345516085463180,	-0.999347323523290370,	-0.999349128462749370,	-0.999350930903835420,	
+-0.999352730846544190,	-0.999354528290871120,	-0.999356323236811780,	-0.999358115684361610,	-0.999359905633516070,	-0.999361693084270810,	-0.999363478036621400,	-0.999365260490563290,	
+-0.999367040446091930,	-0.999368817903202980,	-0.999370592861892120,	-0.999372365322154680,	-0.999374135283986330,	-0.999375902747382640,	-0.999377667712339160,	-0.999379430178851560,	
+-0.999381190146915400,	-0.999382947616526130,	-0.999384702587679640,	-0.999386455060371380,	-0.999388205034596910,	-0.999389952510352010,	-0.999391697487632240,	-0.999393439966433150,	
+-0.999395179946750420,	-0.999396917428579830,	-0.999398652411916940,	-0.999400384896757420,	-0.999402114883096940,	-0.999403842370931160,	-0.999405567360255760,	-0.999407289851066420,	
+-0.999409009843358900,	-0.999410727337128880,	-0.999412442332372030,	-0.999414154829084020,	-0.999415864827260640,	-0.999417572326897650,	-0.999419277327990740,	-0.999420979830535570,	
+-0.999422679834527930,	-0.999424377339963590,	-0.999426072346838450,	-0.999427764855148060,	-0.999429454864888210,	-0.999431142376054680,	-0.999432827388643360,	-0.999434509902650040,	
+-0.999436189918070260,	-0.999437867434900150,	-0.999439542453135380,	-0.999441214972771720,	-0.999442884993805070,	-0.999444552516231100,	-0.999446217540045810,	-0.999447880065244990,	
+-0.999449540091824410,	-0.999451197619780070,	-0.999452852649107660,	-0.999454505179803170,	-0.999456155211862370,	-0.999457802745281290,	-0.999459447780055580,	-0.999461090316181240,	
+-0.999462730353654290,	-0.999464367892470400,	-0.999466002932625660,	-0.999467635474115990,	-0.999469265516937040,	-0.999470893061085050,	-0.999472518106555800,	-0.999474140653345280,	
+-0.999475760701449390,	-0.999477378250864130,	-0.999478993301585410,	-0.999480605853609210,	-0.999482215906931430,	-0.999483823461548180,	-0.999485428517455250,	-0.999487031074648870,	
+-0.999488631133124920,	-0.999490228692879400,	-0.999491823753908220,	-0.999493416316207580,	-0.999495006379773290,	-0.999496593944601550,	-0.999498179010688380,	-0.999499761578029670,	
+-0.999501341646621630,	-0.999502919216460170,	-0.999504494287541510,	-0.999506066859861540,	-0.999507636933416380,	-0.999509204508202130,	-0.999510769584214920,	-0.999512332161450750,	
+-0.999513892239905720,	-0.999515449819576070,	-0.999517004900457700,	-0.999518557482546810,	-0.999520107565839640,	-0.999521655150332090,	-0.999523200236020480,	-0.999524742822900820,	
+-0.999526282910969340,	-0.999527820500222040,	-0.999529355590655370,	-0.999530888182265210,	-0.999532418275047800,	-0.999533945868999350,	-0.999535470964116100,	-0.999536993560394160,	
+-0.999538513657829750,	-0.999540031256418990,	-0.999541546356158220,	-0.999543058957043540,	-0.999544569059071190,	-0.999546076662237380,	-0.999547581766538570,	-0.999549084371970650,	
+-0.999550584478530070,	-0.999552082086212930,	-0.999553577195015700,	-0.999555069804934470,	-0.999556559915965590,	-0.999558047528105400,	-0.999559532641350000,	-0.999561015255695740,	
+-0.999562495371138950,	-0.999563972987675960,	-0.999565448105303010,	-0.999566920724016540,	-0.999568390843812660,	-0.999569858464687820,	-0.999571323586638360,	-0.999572786209660610,	
+-0.999574246333750800,	-0.999575703958905490,	-0.999577159085120790,	-0.999578611712393260,	-0.999580061840719240,	-0.999581509470095050,	-0.999582954600517050,	-0.999584397231981780,	
+-0.999585837364485360,	-0.999587274998024470,	-0.999588710132595320,	-0.999590142768194360,	-0.999591572904818150,	-0.999593000542462920,	-0.999594425681125220,	-0.999595848320801510,	
+-0.999597268461488110,	-0.999598686103181480,	-0.999600101245878280,	-0.999601513889574740,	-0.999602924034267430,	-0.999604331679952770,	-0.999605736826627340,	-0.999607139474287590,	
+-0.999608539622929950,	-0.999609937272550990,	-0.999611332423147150,	-0.999612725074714990,	-0.999614115227251080,	-0.999615502880751740,	-0.999616888035213760,	-0.999618270690633580,	
+-0.999619650847007660,	-0.999621028504332540,	-0.999622403662605020,	-0.999623776321821420,	-0.999625146481978310,	-0.999626514143072460,	-0.999627879305100220,	-0.999629241968058360,	
+-0.999630602131943320,	-0.999631959796751790,	-0.999633314962480420,	-0.999634667629125670,	-0.999636017796684320,	-0.999637365465152920,	-0.999638710634528140,	-0.999640053304806540,	
+-0.999641393475984800,	-0.999642731148059570,	-0.999644066321027540,	-0.999645398994885250,	-0.999646729169629600,	-0.999648056845257040,	-0.999649382021764450,	-0.999650704699148300,	
+-0.999652024877405340,	-0.999653342556532490,	-0.999654657736526180,	-0.999655970417383190,	-0.999657280599100310,	-0.999658588281674310,	-0.999659893465101760,	-0.999661196149379430,	
+-0.999662496334504210,	-0.999663794020472670,	-0.999665089207281700,	-0.999666381894927960,	-0.999667672083408340,	-0.999668959772719520,	-0.999670244962858280,	-0.999671527653821390,	
+-0.999672807845605750,	-0.999674085538208020,	-0.999675360731625110,	-0.999676633425853780,	-0.999677903620890930,	-0.999679171316733230,	-0.999680436513377680,	-0.999681699210820950,	
+-0.999682959409060050,	-0.999684217108091740,	-0.999685472307912940,	-0.999686725008520400,	-0.999687975209911040,	-0.999689222912081730,	-0.999690468115029370,	-0.999691710818750860,	
+-0.999692951023243070,	-0.999694188728502910,	-0.999695423934527260,	-0.999696656641313130,	-0.999697886848857300,	-0.999699114557156760,	-0.999700339766208420,	-0.999701562476009160,	
+-0.999702782686556100,	-0.999704000397846020,	-0.999705215609876020,	-0.999706428322642890,	-0.999707638536143750,	-0.999708846250375480,	-0.999710051465335090,	-0.999711254181019580,	
+-0.999712454397425950,	-0.999713652114551210,	-0.999714847332392350,	-0.999716040050946280,	-0.999717230270210200,	-0.999718417990181020,	-0.999719603210855730,	-0.999720785932231460,	
+-0.999721966154305310,	-0.999723143877074170,	-0.999724319100535160,	-0.999725491824685400,	-0.999726662049521870,	-0.999727829775041710,	-0.999728995001242020,	-0.999730157728119790,	
+-0.999731317955672160,	-0.999732475683896230,	-0.999733630912789110,	-0.999734783642347910,	-0.999735933872569870,	-0.999737081603451870,	-0.999738226834991140,	-0.999739369567184900,	
+-0.999740509800030260,	-0.999741647533524350,	-0.999742782767664260,	-0.999743915502447230,	-0.999745045737870490,	-0.999746173473931020,	-0.999747298710626180,	-0.999748421447953170,	
+-0.999749541685909020,	-0.999750659424490930,	-0.999751774663696360,	-0.999752887403522190,	-0.999753997643965890,	-0.999755105385024660,	-0.999756210626695620,	-0.999757313368976000,	
+-0.999758413611863130,	-0.999759511355354240,	-0.999760606599446540,	-0.999761699344137390,	-0.999762789589423880,	-0.999763877335303470,	-0.999764962581773390,	-0.999766045328830840,	
+-0.999767125576473180,	-0.999768203324697740,	-0.999769278573501840,	-0.999770351322882720,	-0.999771421572837720,	-0.999772489323364040,	-0.999773554574459270,	-0.999774617326120610,	
+-0.999775677578345400,	-0.999776735331130980,	-0.999777790584474690,	-0.999778843338373970,	-0.999779893592826150,	-0.999780941347828580,	-0.999781986603378580,	-0.999783029359473720,	
+-0.999784069616111220,	-0.999785107373288630,	-0.999786142631003180,	-0.999787175389252440,	-0.999788205648033720,	-0.999789233407344490,	-0.999790258667182190,	-0.999791281427544250,	
+-0.999792301688428140,	-0.999793319449831190,	-0.999794334711750940,	-0.999795347474184970,	-0.999796357737130600,	-0.999797365500585290,	-0.999798370764546580,	-0.999799373529011940,	
+-0.999800373793978790,	-0.999801371559444820,	-0.999802366825407350,	-0.999803359591864060,	-0.999804349858812280,	-0.999805337626249680,	-0.999806322894173700,	-0.999807305662581910,	
+-0.999808285931471860,	-0.999809263700841110,	-0.999810238970687220,	-0.999811211741007730,	-0.999812182011800220,	-0.999813149783062240,	-0.999814115054791340,	-0.999815077826985200,	
+-0.999816038099641370,	-0.999816995872757410,	-0.999817951146330990,	-0.999818903920359660,	-0.999819854194841100,	-0.999820801969772850,	-0.999821747245152710,	-0.999822690020978120,	
+-0.999823630297246750,	-0.999824568073956370,	-0.999825503351104650,	-0.999826436128689040,	-0.999827366406707440,	-0.999828294185157400,	-0.999829219464036580,	-0.999830142243342770,	
+-0.999831062523073520,	-0.999831980303226730,	-0.999832895583799840,	-0.999833808364790850,	-0.999834718646197330,	-0.999835626428016930,	-0.999836531710247560,	-0.999837434492886760,	
+-0.999838334775932420,	-0.999839232559382230,	-0.999840127843234060,	-0.999841020627485480,	-0.999841910912134260,	-0.999842798697178400,	-0.999843683982615470,	-0.999844566768443350,	
+-0.999845447054659830,	-0.999846324841262790,	-0.999847200128249790,	-0.999848072915618840,	-0.999848943203367700,	-0.999849810991494170,	-0.999850676279996240,	-0.999851539068871480,	
+-0.999852399358117980,	-0.999853257147733430,	-0.999854112437715710,	-0.999854965228062720,	-0.999855815518772340,	-0.999856663309842460,	-0.999857508601270870,	-0.999858351393055460,	
+-0.999859191685194220,	-0.999860029477685040,	-0.999860864770525710,	-0.999861697563714350,	-0.999862527857248610,	-0.999863355651126610,	-0.999864180945346240,	-0.999865003739905390,	
+-0.999865824034801950,	-0.999866641830034040,	-0.999867457125599550,	-0.999868269921496360,	-0.999869080217722580,	-0.999869888014276010,	-0.999870693311154750,	-0.999871496108356790,	
+-0.999872296405880050,	-0.999873094203722610,	-0.999873889501882380,	-0.999874682300357480,	-0.999875472599145780,	-0.999876260398245510,	-0.999877045697654570,	-0.999877828497370950,	
+-0.999878608797392760,	-0.999879386597718130,	-0.999880161898344940,	-0.999880934699271420,	-0.999881705000495560,	-0.999882472802015480,	-0.999883238103829060,	-0.999884000905934660,	
+-0.999884761208330250,	-0.999885519011013970,	-0.999886274313983800,	-0.999887027117238090,	-0.999887777420774610,	-0.999888525224591820,	-0.999889270528687700,	-0.999890013333060490,	
+-0.999890753637708070,	-0.999891491442628900,	-0.999892226747820970,	-0.999892959553282390,	-0.999893689859011500,	-0.999894417665006420,	-0.999895142971265140,	-0.999895865777786110,	
+-0.999896586084567440,	-0.999897303891607360,	-0.999898019198903860,	-0.999898732006455400,	-0.999899442314260090,	-0.999900150122316260,	-0.999900855430621900,	-0.999901558239175480,	
+-0.999902258547975210,	-0.999902956357019200,	-0.999903651666305900,	-0.999904344475833430,	-0.999905034785600110,	-0.999905722595604170,	-0.999906407905843950,	-0.999907090716317670,	
+-0.999907771027023660,	-0.999908448837960260,	-0.999909124149125810,	-0.999909796960518400,	-0.999910467272136620,	-0.999911135083978550,	-0.999911800396042770,	-0.999912463208327500,	
+-0.999913123520830950,	-0.999913781333551690,	-0.999914436646487940,	-0.999915089459638030,	-0.999915739773000520,	-0.999916387586573530,	-0.999917032900355720,	-0.999917675714345200,	
+-0.999918316028540640,	-0.999918953842940160,	-0.999919589157542310,	-0.999920221972345540,	-0.999920852287348170,	-0.999921480102548670,	-0.999922105417945460,	-0.999922728233537010,	
+-0.999923348549321740,	-0.999923966365298120,	-0.999924581681464590,	-0.999925194497819580,	-0.999925804814361550,	-0.999926412631089060,	-0.999927017948000540,	-0.999927620765094450,	
+-0.999928221082369340,	-0.999928818899823660,	-0.999929414217455960,	-0.999930007035264690,	-0.999930597353248410,	-0.999931185171405670,	-0.999931770489734920,	-0.999932353308234710,	
+-0.999932933626903720,	-0.999933511445740280,	-0.999934086764743160,	-0.999934659583910810,	-0.999935229903241800,	-0.999935797722734660,	-0.999936363042388090,	-0.999936925862200620,	
+-0.999937486182170820,	-0.999938044002297240,	-0.999938599322578560,	-0.999939152143013430,	-0.999939702463600420,	-0.999940250284338190,	-0.999940795605225310,	-0.999941338426260430,	
+-0.999941878747442230,	-0.999942416568769250,	-0.999942951890240290,	-0.999943484711853900,	-0.999944015033608860,	-0.999944542855503830,	-0.999945068177537370,	-0.999945590999708260,	
+-0.999946111322015160,	-0.999946629144456760,	-0.999947144467031810,	-0.999947657289739000,	-0.999948167612577100,	-0.999948675435544660,	-0.999949180758640700,	-0.999949683581863650,	
+-0.999950183905212400,	-0.999950681728685730,	-0.999951177052282420,	-0.999951669876001040,	-0.999952160199840570,	-0.999952648023799680,	-0.999953133347877170,	-0.999953616172071790,	
+-0.999954096496382450,	-0.999954574320807810,	-0.999955049645346760,	-0.999955522469998080,	-0.999955992794760550,	-0.999956460619633060,	-0.999956925944614490,	-0.999957388769703530,	
+-0.999957849094899150,	-0.999958306920200050,	-0.999958762245605310,	-0.999959215071113520,	-0.999959665396723870,	-0.999960113222434940,	-0.999960558548245730,	-0.999961001374155110,	
+-0.999961441700162100,	-0.999961879526265360,	-0.999962314852464010,	-0.999962747678756810,	-0.999963178005142780,	-0.999963605831620810,	-0.999964031158189770,	-0.999964453984848680,	
+-0.999964874311596530,	-0.999965292138432100,	-0.999965707465354400,	-0.999966120292362540,	-0.999966530619455400,	-0.999966938446631870,	-0.999967343773890960,	-0.999967746601231780,	
+-0.999968146928653100,	-0.999968544756154150,	-0.999968940083733830,	-0.999969332911391230,	-0.999969723239125140,	-0.999970111066934900,	-0.999970496394819270,	-0.999970879222777500,	
+-0.999971259550808460,	-0.999971637378911260,	-0.999972012707085020,	-0.999972385535328740,	-0.999972755863641430,	-0.999973123692022290,	-0.999973489020470340,	-0.999973851848984690,	
+-0.999974212177564330,	-0.999974570006208490,	-0.999974925334916280,	-0.999975278163686700,	-0.999975628492518860,	-0.999975976321412000,	-0.999976321650365210,	-0.999976664479377610,	
+-0.999977004808448420,	-0.999977342637576650,	-0.999977677966761510,	-0.999978010796002240,	-0.999978341125297930,	-0.999978668954647710,	-0.999978994284050790,	-0.999979317113506520,	
+-0.999979637443013880,	-0.999979955272572110,	-0.999980270602180530,	-0.999980583431838270,	-0.999980893761544420,	-0.999981201591298440,	-0.999981506921099440,	-0.999981809750946750,	
+-0.999982110080839480,	-0.999982407910776860,	-0.999982703240758330,	-0.999982996070783000,	-0.999983286400850100,	-0.999983574230959070,	-0.999983859561109130,	-0.999984142391299510,	
+-0.999984422721529540,	-0.999984700551798560,	-0.999984975882105780,	-0.999985248712450540,	-0.999985519042832170,	-0.999985786873250020,	-0.999986052203703400,	-0.999986315034191660,	
+-0.999986575364714140,	-0.999986833195270150,	-0.999987088525859160,	-0.999987341356480370,	-0.999987591687133250,	-0.999987839517817110,	-0.999988084848531520,	-0.999988327679275590,	
+-0.999988568010048870,	-0.999988805840850700,	-0.999989041171680530,	-0.999989274002537790,	-0.999989504333421820,	-0.999989732164332070,	-0.999989957495268090,	-0.999990180326229110,	
+-0.999990400657214780,	-0.999990618488224350,	-0.999990833819257460,	-0.999991046650313460,	-0.999991256981391800,	-0.999991464812492010,	-0.999991670143613560,	-0.999991872974756000,	
+-0.999992073305918770,	-0.999992271137101210,	-0.999992466468303090,	-0.999992659299523750,	-0.999992849630762850,	-0.999993037462019730,	-0.999993222793294060,	-0.999993405624585390,	
+-0.999993585955893050,	-0.999993763787216830,	-0.999993939118556270,	-0.999994111949910840,	-0.999994282281280070,	-0.999994450112663640,	-0.999994615444060990,	-0.999994778275471900,	
+-0.999994938606895810,	-0.999995096438332400,	-0.999995251769781320,	-0.999995404601242030,	-0.999995554932714190,	-0.999995702764197580,	-0.999995848095691640,	-0.999995990927196040,	
+-0.999996131258710560,	-0.999996269090234650,	-0.999996404421768180,	-0.999996537253310610,	-0.999996667584861720,	-0.999996795416421170,	-0.999996920747988630,	-0.999997043579563760,	
+-0.999997163911146350,	-0.999997281742736050,	-0.999997397074332440,	-0.999997509905935390,	-0.999997620237544570,	-0.999997728069159650,	-0.999997833400780520,	-0.999997936232406740,	
+-0.999998036564038070,	-0.999998134395674420,	-0.999998229727315340,	-0.999998322558960710,	-0.999998412890610310,	-0.999998500722263820,	-0.999998586053921110,	-0.999998668885581980,	
+-0.999998749217246070,	-0.999998827048913410,	-0.999998902380583640,	-0.999998975212256560,	-0.999999045543932150,	-0.999999113375609980,	-0.999999178707290160,	-0.999999241538972350,	
+-0.999999301870656440,	-0.999999359702342220,	-0.999999415034029670,	-0.999999467865718580,	-0.999999518197408730,	-0.999999566029100230,	-0.999999611360792740,	-0.999999654192486150,	
+-0.999999694524180470,	-0.999999732355875580,	-0.999999767687571370,	-0.999999800519267730,	-0.999999830850964670,	-0.999999858682661950,	-0.999999884014359570,	-0.999999906846057440,	
+-0.999999927177755650,	-0.999999945009453990,	-0.999999960341152460,	-0.999999973172851050,	-0.999999983504549660,	-0.999999991336248390,	-0.999999996667947140,	-0.999999999499645800,	
+-0.999999999831344580,	-0.999999997663043260,	-0.999999992994741960,	-0.999999985826440780,	-0.999999976158139510,	-0.999999963989838370,	-0.999999949321537350,	-0.999999932153236350,	
+-0.999999912484935580,	-0.999999890316635050,	-0.999999865648334760,	-0.999999838480034820,	-0.999999808811735340,	-0.999999776643436310,	-0.999999741975137750,	-0.999999704806839970,	
+-0.999999665138542880,	-0.999999622970246580,	-0.999999578301951190,	-0.999999531133656920,	-0.999999481465363880,	-0.999999429297072080,	-0.999999374628781630,	-0.999999317460492860,	
+-0.999999257792205780,	-0.999999195623920480,	-0.999999130955637310,	-0.999999063787356150,	-0.999998994119077440,	-0.999998921950801200,	-0.999998847282527750,	-0.999998770114257090,	
+-0.999998690445989550,	-0.999998608277725240,	-0.999998523609464510,	-0.999998436441207340,	-0.999998346772954180,	-0.999998254604705040,	-0.999998159936460350,	-0.999998062768220230,	
+-0.999997963099985010,	-0.999997860931754800,	-0.999997756263530050,	-0.999997649095310860,	-0.999997539427097460,	-0.999997427258890290,	-0.999997312590689580,	-0.999997195422495540,	
+-0.999997075754308520,	-0.999996953586128830,	-0.999996828917956710,	-0.999996701749792600,	-0.999996572081636610,	-0.999996439913489300,	-0.999996305245350880,	-0.999996168077221690,	
+-0.999996028409102070,	-0.999995886240992340,	-0.999995741572892950,	-0.999995594404804120,	-0.999995444736726410,	-0.999995292568660040,	-0.999995137900605460,	-0.999994980732562990,	
+-0.999994821064533080,	-0.999994658896516180,	-0.999994494228512610,	-0.999994327060522830,	-0.999994157392547160,	-0.999993985224586160,	-0.999993810556640160,	-0.999993633388709610,	
+-0.999993453720794960,	-0.999993271552896750,	-0.999993086885015310,	-0.999992899717151220,	-0.999992710049304790,	-0.999992517881476690,	-0.999992323213667270,	-0.999992126045876950,	
+-0.999991926378106410,	-0.999991724210355980,	-0.999991519542626330,	-0.999991312374917780,	-0.999991102707231020,	-0.999990890539566470,	-0.999990675871924810,	-0.999990458704306360,	
+-0.999990239036711690,	-0.999990016869141570,	-0.999989792201596340,	-0.999989565034076540,	-0.999989335366582970,	-0.999989103199116050,	-0.999988868531676230,	-0.999988631364264410,	
+-0.999988391696880920,	-0.999988149529526530,	-0.999987904862201680,	-0.999987657694907050,	-0.999987408027643300,	-0.999987155860411090,	-0.999986901193210990,	-0.999986644026043540,	
+-0.999986384358909630,	-0.999986122191809600,	-0.999985857524744340,	-0.999985590357714500,	-0.999985320690720550,	-0.999985048523763350,	-0.999984773856843590,	-0.999984496689961920,	
+-0.999984217023118900,	-0.999983934856315430,	-0.999983650189552040,	-0.999983363022829530,	-0.999983073356148670,	-0.999982781189510120,	-0.999982486522914550,	-0.999982189356362850,	
+-0.999981889689855570,	-0.999981587523393720,	-0.999981282856977740,	-0.999980975690608620,	-0.999980666024287150,	-0.999980353858013870,	-0.999980039191789790,	-0.999979722025615580,	
+-0.999979402359492120,	-0.999979080193420080,	-0.999978755527400340,	-0.999978428361433800,	-0.999978098695521120,	-0.999977766529663190,	-0.999977431863860900,	-0.999977094698115020,	
+-0.999976755032426330,	-0.999976412866795840,	-0.999976068201224310,	-0.999975721035712530,	-0.999975371370261490,	-0.999975019204872080,	-0.999974664539545090,	-0.999974307374281390,	
+-0.999973947709081880,	-0.999973585543947660,	-0.999973220878879410,	-0.999972853713878010,	-0.999972484048944570,	-0.999972111884079970,	-0.999971737219285010,	-0.999971360054560670,	
+-0.999970980389908060,	-0.999970598225327860,	-0.999970213560821270,	-0.999969826396389090,	-0.999969436732032310,	-0.999969044567752040,	-0.999968649903549060,	-0.999968252739424580,	
+-0.999967853075379390,	-0.999967450911414590,	-0.999967046247531080,	-0.999966639083730070,	-0.999966229420012340,	-0.999965817256379120,	-0.999965402592831400,	-0.999964985429370070,	
+-0.999964565765996350,	-0.999964143602711240,	-0.999963718939515630,	-0.999963291776410860,	-0.999962862113397800,	-0.999962429950477680,	-0.999961995287651400,	-0.999961558124920160,	
+-0.999961118462284970,	-0.999960676299747050,	-0.999960231637307410,	-0.999959784474967140,	-0.999959334812727470,	-0.999958882650589410,	-0.999958427988554280,	-0.999957970826622970,	
+-0.999957511164796700,	-0.999957049003076690,	-0.999956584341464170,	-0.999956117179960020,	-0.999955647518565690,	-0.999955175357282180,	-0.999954700696110810,	-0.999954223535052590,	
+-0.999953743874108850,	-0.999953261713280810,	-0.999952777052569460,	-0.999952289891976380,	-0.999951800231502430,	-0.999951308071148960,	-0.999950813410917290,	-0.999950316250808660,	
+-0.999949816590824050,	-0.999949314430965020,	-0.999948809771232680,	-0.999948302611628370,	-0.999947792952153300,	-0.999947280792808700,	-0.999946766133595900,	-0.999946248974516120,	
+-0.999945729315570800,	-0.999945207156761160,	-0.999944682498088430,	-0.999944155339554160,	-0.999943625681159350,	-0.999943093522905560,	-0.999942558864794000,	-0.999942021706826000,	
+-0.999941482049003020,	-0.999940939891326260,	-0.999940395233797190,	-0.999939848076417110,	-0.999939298419187490,	-0.999938746262109550,	-0.999938191605184710,	-0.999937634448414550,	
+-0.999937074791800160,	-0.999936512635343110,	-0.999935947979044840,	-0.999935380822906560,	-0.999934811166929950,	-0.999934239011116330,	-0.999933664355467040,	-0.999933087199983640,	
+-0.999932507544667450,	-0.999931925389520030,	-0.999931340734542820,	-0.999930753579737260,	-0.999930163925104810,	-0.999929571770646900,	-0.999928977116365190,	-0.999928379962260920,	
+-0.999927780308335730,	-0.999927178154591090,	-0.999926573501028540,	-0.999925966347649520,	-0.999925356694455590,	-0.999924744541448310,	-0.999924129888629110,	-0.999923512735999550,	
+-0.999922893083561300,	-0.999922270931315800,	-0.999921646279264610,	-0.999921019127409270,	-0.999920389475751350,	-0.999919757324292610,	-0.999919122673034290,	-0.999918485521978260,	
+-0.999917845871126090,	-0.999917203720479210,	-0.999916559070039290,	-0.999915911919808110,	-0.999915262269787000,	-0.999914610119977840,	-0.999913955470382090,	-0.999913298321001510,	
+-0.999912638671837660,	-0.999911976522892210,	-0.999911311874166820,	-0.999910644725663160,	-0.999909975077382880,	-0.999909302929327670,	-0.999908628281499180,	-0.999907951133899080,	
+-0.999907271486529140,	-0.999906589339391030,	-0.999905904692486520,	-0.999905217545817180,	-0.999904527899384780,	-0.999903835753191080,	-0.999903141107237770,	-0.999902443961526610,	
+-0.999901744316059380,	-0.999901042170837750,	-0.999900337525863600,	-0.999899630381138490,	-0.999898920736664310,	-0.999898208592442940,	-0.999897493948475930,	-0.999896776804765300,	
+-0.999896057161312690,	-0.999895335018119890,	-0.999894610375188790,	-0.999893883232521150,	-0.999893153590118770,	-0.999892421447983510,	-0.999891686806117290,	-0.999890949664521740,	
+-0.999890210023198890,	-0.999889467882150500,	-0.999888723241378450,	-0.999887976100884530,	-0.999887226460670740,	-0.999886474320738850,	-0.999885719681090860,	-0.999884962541728430,	
+-0.999884202902653670,	-0.999883440763868370,	-0.999882676125374510,	-0.999881908987174000,	-0.999881139349268590,	-0.999880367211660400,	-0.999879592574351330,	-0.999878815437343250,	
+-0.999878035800638170,	-0.999877253664237850,	-0.999876469028144530,	-0.999875681892360090,	-0.999874892256886310,	-0.999874100121725400,	-0.999873305486879140,	-0.999872508352349750,	
+-0.999871708718139020,	-0.999870906584248930,	-0.999870101950681710,	-0.999869294817439140,	-0.999868485184523430,	-0.999867673051936470,	-0.999866858419680260,	-0.999866041287757020,	
+-0.999865221656168530,	-0.999864399524917120,	-0.999863574894004680,	-0.999862747763433200,	-0.999861918133205020,	-0.999861086003321910,	-0.999860251373786200,	-0.999859414244599790,	
+-0.999858574615764770,	-0.999857732487283490,	-0.999856887859157720,	-0.999856040731389780,	-0.999855191103981800,	-0.999854338976935760,	-0.999853484350254010,	-0.999852627223938420,	
+-0.999851767597991210,	-0.999850905472414730,	-0.999850040847210960,	-0.999849173722382020,	-0.999848304097930130,	-0.999847431973857610,	-0.999846557350166370,	-0.999845680226858820,	
+-0.999844800603937100,	-0.999843918481403300,	-0.999843033859259660,	-0.999842146737508490,	-0.999841257116152020,	-0.999840364995192350,	-0.999839470374631830,	-0.999838573254472560,	
+-0.999837673634716870,	-0.999836771515366980,	-0.999835866896425230,	-0.999834959777893720,	-0.999834050159774890,	-0.999833138042070860,	-0.999832223424784060,	-0.999831306307916610,	
+-0.999830386691470950,	-0.999829464575449410,	-0.999828539959854100,	-0.999827612844687460,	-0.999826683229951830,	-0.999825751115649420,	-0.999824816501782680,	-0.999823879388353930,	
+-0.999822939775365400,	-0.999821997662819540,	-0.999821053050718780,	-0.999820105939065340,	-0.999819156327861560,	-0.999818204217109980,	-0.999817249606812840,	-0.999816292496972570,	
+-0.999815332887591610,	-0.999814370778672300,	-0.999813406170217080,	-0.999812439062228280,	-0.999811469454708450,	-0.999810497347659920,	-0.999809522741085140,	-0.999808545634986560,	
+-0.999807566029366710,	-0.999806583924227830,	-0.999805599319572470,	-0.999804612215403180,	-0.999803622611722400,	-0.999802630508532460,	-0.999801635905836040,	-0.999800638803635460,	
+-0.999799639201933270,	-0.999798637100732020,	-0.999797632500034170,	-0.999796625399842260,	-0.999795615800158740,	-0.999794603700986270,	-0.999793589102327180,	-0.999792572004184250,	
+-0.999791552406559810,	-0.999790530309456420,	-0.999789505712876840,	-0.999788478616823410,	-0.999787449021298790,	-0.999786416926305650,	-0.999785382331846330,	-0.999784345237923590,	
+-0.999783305644539990,	-0.999782263551698190,	-0.999781218959400640,	-0.999780171867650110,	-0.999779122276449160,	-0.999778070185800340,	-0.999777015595706420,	-0.999775958506169850,	
+-0.999774898917193510,	-0.999773836828779850,	-0.999772772240931640,	-0.999771705153651440,	-0.999770635566942010,	-0.999769563480806030,	-0.999768488895246050,	-0.999767411810264960,	
+-0.999766332225865310,	-0.999765250142049760,	-0.999764165558821080,	-0.999763078476182070,	-0.999761988894135370,	-0.999760896812683650,	-0.999759802231829700,	-0.999758705151576280,	
+-0.999757605571926060,	-0.999756503492881810,	-0.999755398914446310,	-0.999754291836622340,	-0.999753182259412570,	-0.999752070182819860,	-0.999750955606847010,	-0.999749838531496790,	
+-0.999748718956771980,	-0.999747596882675340,	-0.999746472309209770,	-0.999745345236377920,	-0.999744215664182810,	-0.999743083592627090,	-0.999741949021713650,	-0.999740811951445370,	
+-0.999739672381825040,	-0.999738530312855640,	-0.999737385744539740,	-0.999736238676880550,	-0.999735089109880630,	-0.999733937043542960,	-0.999732782477870560,	-0.999731625412866200,	
+-0.999730465848532760,	-0.999729303784873120,	-0.999728139221890190,	-0.999726972159586950,	-0.999725802597966280,	-0.999724630537031200,	-0.999723455976784470,	-0.999722278917229090,	
+-0.999721099358367950,	-0.999719917300204150,	-0.999718732742740480,	-0.999717545685980040,	-0.999716356129925710,	-0.999715164074580500,	-0.999713969519947400,	-0.999712772466029410,	
+-0.999711572912829420,	-0.999710370860350530,	-0.999709166308595740,	-0.999707959257567950,	-0.999706749707270360,	-0.999705537657705870,	-0.999704323108877470,	-0.999703106060788270,	
+-0.999701886513441380,	-0.999700664466839690,	-0.999699439920986420,	-0.999698212875884560,	-0.999696983331537110,	-0.999695751287947190,	-0.999694516745117890,	-0.999693279703052330,	
+-0.999692040161753610,	-0.999690798121224740,	-0.999689553581468940,	-0.999688306542489190,	-0.999687057004288620,	-0.999685804966870540,	-0.999684550430237850,	-0.999683293394393770,	
+-0.999682033859341510,	-0.999680771825084190,	-0.999679507291624910,	-0.999678240258966900,	-0.999676970727113260,	-0.999675698696067090,	-0.999674424165831850,	-0.999673147136410420,	
+-0.999671867607806240,	-0.999670585580022310,	-0.999669301053061950,	-0.999668014026928290,	-0.999666724501624640,	-0.999665432477154110,	-0.999664137953520050,	-0.999662840930725660,	
+-0.999661541408774170,	-0.999660239387668790,	-0.999658934867412860,	-0.999657627848009600,	-0.999656318329462220,	-0.999655006311774060,	-0.999653691794948340,	-0.999652374778988500,	
+-0.999651055263897640,	-0.999649733249679210,	-0.999648408736336310,	-0.999647081723872510,	-0.999645752212291020,	-0.999644420201595050,	-0.999643085691788170,	-0.999641748682873480,	
+-0.999640409174854420,	-0.999639067167734320,	-0.999637722661516630,	-0.999636375656204560,	-0.999635026151801550,	-0.999633674148311060,	-0.999632319645736290,	-0.999630962644080800,	
+-0.999629603143347810,	-0.999628241143540870,	-0.999626876644663320,	-0.999625509646718590,	-0.999624140149710130,	-0.999622768153641260,	-0.999621393658515430,	-0.999620016664336200,	
+-0.999618637171106880,	-0.999617255178831040,	-0.999615870687512010,	-0.999614483697153220,	-0.999613094207758350,	-0.999611702219330710,	-0.999610307731873760,	-0.999608910745391040,	
+-0.999607511259886120,	-0.999606109275362420,	-0.999604704791823400,	-0.999603297809272600,	-0.999601888327713680,	-0.999600476347149880,	-0.999599061867584960,	-0.999597644889022360,	
+-0.999596225411465760,	-0.999594803434918470,	-0.999593378959384160,	-0.999591951984866500,	-0.999590522511368930,	-0.999589090538895000,	-0.999587656067448370,	-0.999586219097032710,	
+-0.999584779627651350,	-0.999583337659308070,	-0.999581893192006520,	-0.999580446225750150,	-0.999578996760542740,	-0.999577544796387830,	-0.999576090333288980,	-0.999574633371249970,	
+-0.999573173910274450,	-0.999571711950365870,	-0.999570247491528010,	-0.999568780533764630,	-0.999567311077079190,	-0.999565839121475560,	-0.999564364666957310,	-0.999562887713528080,	
+-0.999561408261191780,	-0.999559926309951830,	-0.999558441859812130,	-0.999556954910776230,	-0.999555465462848130,	-0.999553973516031150,	-0.999552479070329400,	-0.999550982125746330,	
+-0.999549482682285940,	-0.999547980739951770,	-0.999546476298747600,	-0.999544969358677320,	-0.999543459919744580,	-0.999541947981953170,	-0.999540433545306860,	-0.999538916609809540,	
+-0.999537397175464970,	-0.999535875242276830,	-0.999534350810248990,	-0.999532823879385360,	-0.999531294449689580,	-0.999529762521165650,	-0.999528228093817250,	-0.999526691167648250,	
+-0.999525151742662540,	-0.999523609818864010,	-0.999522065396256430,	-0.999520518474843690,	-0.999518969054629670,	-0.999517417135618150,	-0.999515862717813120,	-0.999514305801218470,	
+-0.999512746385838090,	-0.999511184471675750,	-0.999509620058735560,	-0.999508053147021180,	-0.999506483736536830,	-0.999504911827286180,	-0.999503337419273220,	-0.999501760512501950,	
+-0.999500181106976250,	-0.999498599202700120,	-0.999497014799677560,	-0.999495427897912350,	-0.999493838497408690,	-0.999492246598170380,	-0.999490652200201390,	-0.999489055303505850,	
+-0.999487455908087630,	-0.999485854013950850,	-0.999484249621099270,	-0.999482642729537240,	-0.999481033339268520,	-0.999479421450297220,	-0.999477807062627340,	-0.999476190176262990,	
+-0.999474570791208160,	-0.999472948907466960,	-0.999471324525043280,	-0.999469697643941330,	-0.999468068264165120,	-0.999466436385718750,	-0.999464802008606320,	-0.999463165132831950,	
+-0.999461525758399530,	-0.999459883885313370,	-0.999458239513577480,	-0.999456592643195970,	-0.999454943274173060,	-0.999453291406512730,	-0.999451637040219110,	-0.999449980175296520,	
+-0.999448320811748840,	-0.999446658949580510,	-0.999444994588795430,	-0.999443327729397920,	-0.999441658371392090,	-0.999439986514782050,	-0.999438312159572130,	-0.999436635305766430,	
+-0.999434955953369060,	-0.999433274102384360,	-0.999431589752816430,	-0.999429902904669600,	-0.999428213557947980,	-0.999426521712655780,	-0.999424827368797340,	-0.999423130526376770,	
+-0.999421431185398390,	-0.999419729345866430,	-0.999418025007785200,	-0.999416318171158840,	-0.999414608835991760,	-0.999412897002288080,	-0.999411182670052240,	-0.999409465839288360,	
+-0.999407746510000860,	-0.999406024682193970,	-0.999404300355872130,	-0.999402573531039450,	-0.999400844207700260,	-0.999399112385859100,	-0.999397378065520090,	-0.999395641246687560,	
+-0.999393901929366060,	-0.999392160113559800,	-0.999390415799273010,	-0.999388668986510350,	-0.999386919675275930,	-0.999385167865574190,	-0.999383413557409560,	-0.999381656750786380,	
+-0.999379897445709100,	-0.999378135642182030,	-0.999376371340209620,	-0.999374604539796320,	-0.999372835240946440,	-0.999371063443664550,	-0.999369289147954980,	-0.999367512353822150,	
+-0.999365733061270630,	-0.999363951270304750,	-0.999362166980928950,	-0.999360380193147770,	-0.999358590906965550,	-0.999356799122386950,	-0.999355004839416310,	-0.999353208058058160,	
+-0.999351408778316960,	-0.999349607000197260,	-0.999347802723703600,	-0.999345995948840440,	-0.999344186675612200,	-0.999342374904023560,	-0.999340560634078940,	-0.999338743865782920,	
+-0.999336924599140140,	-0.999335102834154940,	-0.999333278570831980,	-0.999331451809175930,	-0.999329622549191110,	-0.999327790790882410,	-0.999325956534254050,	-0.999324119779310900,	
+-0.999322280526057430,	-0.999320438774498280,	-0.999318594524638000,	-0.999316747776481270,	-0.999314898530032520,	-0.999313046785296750,	-0.999311192542278180,	-0.999309335800981800,	
+-0.999307476561411940,	-0.999305614823573500,	-0.999303750587470900,	-0.999301883853109030,	-0.999300014620492450,	-0.999298142889625710,	-0.999296268660513690,	-0.999294391933161050,	
+-0.999292512707572360,	-0.999290630983752480,	-0.999288746761705980,	-0.999286860041437520,	-0.999284970822951980,	-0.999283079106254020,	-0.999281184891348430,	-0.999279288178239740,	
+-0.999277388966932970,	-0.999275487257432650,	-0.999273583049743560,	-0.999271676343870600,	-0.999269767139818410,	-0.999267855437591780,	-0.999265941237195590,	-0.999264024538634500,	
+-0.999262105341913400,	-0.999260183647036950,	-0.999258259454010030,	-0.999256332762837540,	-0.999254403573524240,	-0.999252471886074910,	-0.999250537700494320,	-0.999248601016787470,	
+-0.999246661834959140,	-0.999244720155014090,	-0.999242775976957210,	-0.999240829300793500,	-0.999238880126527620,	-0.999236928454164560,	-0.999234974283709220,	-0.999233017615166360,	
+-0.999231058448540990,	-0.999229096783837980,	-0.999227132621062330,	-0.999225165960218710,	-0.999223196801312220,	-0.999221225144347750,	-0.999219250989330290,	-0.999217274336264620,	
+-0.999215295185155730,	-0.999213313536008730,	-0.999211329388828280,	-0.999209342743619610,	-0.999207353600387590,	-0.999205361959137120,	-0.999203367819873290,	-0.999201371182601110,	
+-0.999199372047325340,	-0.999197370414051210,	-0.999195366282783710,	-0.999193359653527740,	-0.999191350526288380,	-0.999189338901070760,	-0.999187324777879640,	-0.999185308156720240,	
+-0.999183289037597680,	-0.999181267420516720,	-0.999179243305482690,	-0.999177216692500590,	-0.999175187581575310,	-0.999173155972712170,	-0.999171121865916170,	-0.999169085261192300,	
+-0.999167046158545680,	-0.999165004557981520,	-0.999162960459504810,	-0.999160913863120780,	-0.999158864768834420,	-0.999156813176650840,	-0.999154759086575250,	-0.999152702498612880,	
+-0.999150643412768600,	-0.999148581829047750,	-0.999146517747455440,	-0.999144451167996880,	-0.999142382090677180,	-0.999140310515501560,	-0.999138236442475130,	-0.999136159871603090,	
+-0.999134080802890680,	-0.999131999236342990,	-0.999129915171965370,	-0.999127828609763010,	-0.999125739549741040,	-0.999123647991904670,	-0.999121553936259230,	-0.999119457382809940,	
+-0.999117358331561900,	-0.999115256782520560,	-0.999113152735691010,	-0.999111046191078600,	-0.999108937148688650,	-0.999106825608526260,	-0.999104711570596770,	-0.999102595034905620,	
+-0.999100476001457900,	-0.999098354470259080,	-0.999096230441314350,	-0.999094103914628940,	-0.999091974890208400,	-0.999089843368057840,	-0.999087709348182700,	-0.999085572830588300,	
+-0.999083433815279980,	-0.999081292302263060,	-0.999079148291542870,	-0.999077001783124860,	-0.999074852777014350,	-0.999072701273216680,	-0.999070547271737270,	-0.999068390772581470,	
+-0.999066231775754710,	-0.999064070281262430,	-0.999061906289109850,	-0.999059739799302630,	-0.999057570811845990,	-0.999055399326745470,	-0.999053225344006420,	-0.999051048863634270,	
+-0.999048869885634460,	-0.999046688410012650,	-0.999044504436773950,	-0.999042317965924130,	-0.999040128997468410,	-0.999037937531412350,	-0.999035743567761480,	-0.999033547106521370,	
+-0.999031348147697230,	-0.999029146691294830,	-0.999026942737319510,	-0.999024736285776820,	-0.999022527336672290,	-0.999020315890011500,	-0.999018101945799870,	-0.999015885504042970,	
+-0.999013666564746440,	-0.999011445127915620,	-0.999009221193556280,	-0.999006994761673870,	-0.999004765832273930,	-0.999002534405362130,	-0.999000300480944010,	-0.998998064059025140,	
+-0.998995825139611050,	-0.998993583722707410,	-0.998991339808319890,	-0.998989093396453920,	-0.998986844487115280,	-0.998984593080309510,	-0.998982339176042180,	-0.998980082774319160,	
+-0.998977823875145780,	-0.998975562478527920,	-0.998973298584471150,	-0.998971032192981110,	-0.998968763304063590,	-0.998966491917724020,	-0.998964218033968290,	-0.998961941652802050,	
+-0.998959662774230870,	-0.998957381398260620,	-0.998955097524896860,	-0.998952811154145360,	-0.998950522286011890,	-0.998948230920502000,	-0.998945937057621580,	-0.998943640697376400,	
+-0.998941341839772010,	-0.998939040484814410,	-0.998936736632509040,	-0.998934430282861880,	-0.998932121435878730,	-0.998929810091565230,	-0.998927496249927160,	-0.998925179910970410,	
+-0.998922861074700630,	-0.998920539741123830,	-0.998918215910245540,	-0.998915889582071780,	-0.998913560756608310,	-0.998911229433860900,	-0.998908895613835450,	-0.998906559296537710,	
+-0.998904220481973580,	-0.998901879170148940,	-0.998899535361069570,	-0.998897189054741340,	-0.998894840251170260,	-0.998892488950361980,	-0.998890135152322500,	-0.998887778857057710,	
+-0.998885420064573370,	-0.998883058774875600,	-0.998880694987970160,	-0.998878328703862950,	-0.998875959922559840,	-0.998873588644066950,	-0.998871214868390030,	-0.998868838595535210,	
+-0.998866459825508150,	-0.998864078558314940,	-0.998861694793961590,	-0.998859308532453970,	-0.998856919773798090,	-0.998854528517999940,	-0.998852134765065400,	-0.998849738515000580,	
+-0.998847339767811480,	-0.998844938523503870,	-0.998842534782084070,	-0.998840128543557750,	-0.998837719807931230,	-0.998835308575210410,	-0.998832894845401390,	-0.998830478618510040,	
+-0.998828059894542490,	-0.998825638673504710,	-0.998823214955402940,	-0.998820788740243160,	-0.998818360028031370,	-0.998815928818773680,	-0.998813495112476190,	-0.998811058909145010,	
+-0.998808620208786140,	-0.998806179011405670,	-0.998803735317009720,	-0.998801289125604510,	-0.998798840437196020,	-0.998796389251790480,	-0.998793935569394000,	-0.998791479390012670,	
+-0.998789020713652500,	-0.998786559540319920,	-0.998784095870020930,	-0.998781629702761740,	-0.998779161038548360,	-0.998776689877387210,	-0.998774216219284190,	-0.998771740064245740,	
+-0.998769261412277950,	-0.998766780263386830,	-0.998764296617578930,	-0.998761810474860230,	-0.998759321835237080,	-0.998756830698715570,	-0.998754337065302030,	-0.998751840935002470,	
+-0.998749342307823530,	-0.998746841183771110,	-0.998744337562851640,	-0.998741831445071340,	-0.998739322830436430,	-0.998736811718953230,	-0.998734298110627970,	-0.998731782005466970,	
+-0.998729263403476450,	-0.998726742304662850,	-0.998724218709032390,	-0.998721692616591380,	-0.998719164027346170,	-0.998716632941303080,	-0.998714099358468330,	-0.998711563278848360,	
+-0.998709024702449490,	-0.998706483629278050,	-0.998703940059340380,	-0.998701393992642910,	-0.998698845429191850,	-0.998696294368993760,	-0.998693740812054980,	-0.998691184758381810,	
+-0.998688626207980600,	-0.998686065160857890,	-0.998683501617020020,	-0.998680935576473420,	-0.998678367039224410,	-0.998675796005279450,	-0.998673222474645180,	-0.998670646447327730,	
+-0.998668067923333620,	-0.998665486902669430,	-0.998662903385341580,	-0.998660317371356410,	-0.998657728860720350,	-0.998655137853440070,	-0.998652544349521890,	-0.998649948348972360,	
+-0.998647349851798040,	-0.998644748858005250,	-0.998642145367600650,	-0.998639539380590690,	-0.998636930896981800,	-0.998634319916780640,	-0.998631706439993660,	-0.998629090466627510,	
+-0.998626471996688530,	-0.998623851030183360,	-0.998621227567118690,	-0.998618601607500820,	-0.998615973151336540,	-0.998613342198632290,	-0.998610708749394620,	-0.998608072803630180,	
+-0.998605434361345630,	-0.998602793422547430,	-0.998600149987242340,	-0.998597504055436790,	-0.998594855627137570,	-0.998592204702351110,	-0.998589551281084180,	-0.998586895363343440,	
+-0.998584236949135340,	-0.998581576038466760,	-0.998578912631344240,	-0.998576246727774340,	-0.998573578327763830,	-0.998570907431319490,	-0.998568234038447740,	-0.998565558149155490,	
+-0.998562879763449370,	-0.998560198881335960,	-0.998557515502822120,	-0.998554829627914420,	-0.998552141256619730,	-0.998549450388944710,	-0.998546757024896040,	-0.998544061164480360,	
+-0.998541362807704670,	-0.998538661954575520,	-0.998535958605099690,	-0.998533252759284060,	-0.998530544417135180,	-0.998527833578660040,	-0.998525120243865190,	-0.998522404412757640,	
+-0.998519686085344140,	-0.998516965261631250,	-0.998514241941626080,	-0.998511516125335290,	-0.998508787812765640,	-0.998506057003924030,	-0.998503323698817340,	-0.998500587897452330,	
+-0.998497849599835900,	-0.998495108805974700,	-0.998492365515875830,	-0.998489619729546090,	-0.998486871446992220,	-0.998484120668221120,	-0.998481367393239780,	-0.998478611622055090,	
+-0.998475853354673810,	-0.998473092591102840,	-0.998470329331349270,	-0.998467563575419770,	-0.998464795323321440,	-0.998462024575061060,	-0.998459251330645610,	-0.998456475590082100,	
+-0.998453697353377410,	-0.998450916620538420,	-0.998448133391572120,	-0.998445347666485520,	-0.998442559445285480,	-0.998439768727979130,	-0.998436975514573330,	-0.998434179805075210,	
+-0.998431381599491520,	-0.998428580897829270,	-0.998425777700095770,	-0.998422972006297700,	-0.998420163816442270,	-0.998417353130536370,	-0.998414539948587200,	-0.998411724270601540,	
+-0.998408906096586720,	-0.998406085426549520,	-0.998403262260497140,	-0.998400436598436580,	-0.998397608440374950,	-0.998394777786319240,	-0.998391944636276670,	-0.998389108990254240,	
+-0.998386270848258930,	-0.998383430210298070,	-0.998380587076378560,	-0.998377741446507700,	-0.998374893320692400,	-0.998372042698939870,	-0.998369189581257200,	-0.998366333967651620,	
+-0.998363475858130120,	-0.998360615252699920,	-0.998357752151368350,	-0.998354886554142280,	-0.998352018461028940,	-0.998349147872035660,	-0.998346274787169530,	-0.998343399206437550,	
+-0.998340521129847280,	-0.998337640557405590,	-0.998334757489119820,	-0.998331871924997170,	-0.998328983865044760,	-0.998326093309270020,	-0.998323200257679950,	-0.998320304710281990,	
+-0.998317406667083130,	-0.998314506128090810,	-0.998311603093312240,	-0.998308697562754640,	-0.998305789536425350,	-0.998302879014331570,	-0.998299965996480520,	-0.998297050482879530,	
+-0.998294132473536040,	-0.998291211968457160,	-0.998288288967650320,	-0.998285363471122620,	-0.998282435478881620,	-0.998279504990934540,	-0.998276572007288700,	-0.998273636527951310,	
+-0.998270698552929940,	-0.998267758082231780,	-0.998264815115864290,	-0.998261869653834680,	-0.998258921696150380,	-0.998255971242818840,	-0.998253018293847380,	-0.998250062849243340,	
+-0.998247104909014140,	-0.998244144473167230,	-0.998241181541709930,	-0.998238216114649690,	-0.998235248191993830,	-0.998232277773749900,	-0.998229304859925340,	-0.998226329450527360,	
+-0.998223351545563740,	-0.998220371145041700,	-0.998217388248968660,	-0.998214402857352190,	-0.998211414970199720,	-0.998208424587518680,	-0.998205431709316530,	-0.998202436335600910,	
+-0.998199438466379150,	-0.998196438101658810,	-0.998193435241447440,	-0.998190429885752350,	-0.998187422034581330,	-0.998184411687941700,	-0.998181398845840890,	-0.998178383508286800,	
+-0.998175365675286640,	-0.998172345346848070,	-0.998169322522978630,	-0.998166297203685990,	-0.998163269388977480,	-0.998160239078860760,	-0.998157206273343590,	-0.998154170972433310,	
+-0.998151133176137680,	-0.998148092884464160,	-0.998145050097420490,	-0.998142004815014030,	-0.998138957037252750,	-0.998135906764143990,	-0.998132853995695400,	-0.998129798731914760,	
+-0.998126740972809510,	-0.998123680718387530,	-0.998120617968656370,	-0.998117552723623570,	-0.998114484983296910,	-0.998111414747684060,	-0.998108342016792660,	-0.998105266790630390,	
+-0.998102189069205000,	-0.998099108852524180,	-0.998096026140595450,	-0.998092940933426710,	-0.998089853231025730,	-0.998086763033399940,	-0.998083670340557340,	-0.998080575152505590,	
+-0.998077477469252350,	-0.998074377290805390,	-0.998071274617172600,	-0.998068169448361520,	-0.998065061784380040,	-0.998061951625235920,	-0.998058838970936950,	-0.998055723821490770,	
+-0.998052606176905390,	-0.998049486037188460,	-0.998046363402347870,	-0.998043238272391280,	-0.998040110647326560,	-0.998036980527161720,	-0.998033847911904300,	-0.998030712801562410,	
+-0.998027575196143600,	-0.998024435095655860,	-0.998021292500107070,	-0.998018147409505010,	-0.998014999823857660,	-0.998011849743172810,	-0.998008697167458210,	-0.998005542096721990,	
+-0.998002384530971900,	-0.997999224470215830,	-0.997996061914461660,	-0.997992896863717390,	-0.997989729317990790,	-0.997986559277289960,	-0.997983386741622790,	-0.997980211710997040,	
+-0.997977034185420830,	-0.997973854164901920,	-0.997970671649448420,	-0.997967486639068310,	-0.997964299133769490,	-0.997961109133559840,	-0.997957916638447460,	-0.997954721648440350,	
+-0.997951524163546380,	-0.997948324183773550,	-0.997945121709129970,	-0.997941916739623510,	-0.997938709275262400,	-0.997935499316054410,	-0.997932286862007740,	-0.997929071913130290,	
+-0.997925854469430160,	-0.997922634530915450,	-0.997919412097594050,	-0.997916187169474280,	-0.997912959746563910,	-0.997909729828871160,	-0.997906497416404140,	-0.997903262509170830,	
+-0.997900025107179460,	-0.997896785210437900,	-0.997893542818954370,	-0.997890297932737090,	-0.997887050551794050,	-0.997883800676133360,	-0.997880548305763120,	-0.997877293440691650,	
+-0.997874036080926730,	-0.997870776226476910,	-0.997867513877350070,	-0.997864249033554420,	-0.997860981695098180,	-0.997857711861989460,	-0.997854439534236580,	-0.997851164711847430,	
+-0.997847887394830550,	-0.997844607583193710,	-0.997841325276945580,	-0.997838040476094030,	-0.997834753180647400,	-0.997831463390613900,	-0.997828171106001750,	-0.997824876326819040,	
+-0.997821579053074340,	-0.997818279284775620,	-0.997814977021931120,	-0.997811672264549250,	-0.997808365012638250,	-0.997805055266206330,	-0.997801743025261700,	-0.997798428289812690,	
+-0.997795111059867620,	-0.997791791335434830,	-0.997788469116522530,	-0.997785144403139150,	-0.997781817195292800,	-0.997778487492991920,	-0.997775155296244830,	-0.997771820605059870,	
+-0.997768483419445350,	-0.997765143739409610,	-0.997761801564961080,	-0.997758456896107980,	-0.997755109732858750,	-0.997751760075221710,	-0.997748407923205290,	-0.997745053276817950,	
+-0.997741696136067780,	-0.997738336500963550,	-0.997734974371513370,	-0.997731609747725790,	-0.997728242629609240,	-0.997724873017171940,	-0.997721500910422550,	-0.997718126309369510,	
+-0.997714749214021030,	-0.997711369624385670,	-0.997707987540471960,	-0.997704602962288250,	-0.997701215889843060,	-0.997697826323144850,	-0.997694434262201950,	-0.997691039707023000,	
+-0.997687642657616560,	-0.997684243113990950,	-0.997680841076154730,	-0.997677436544116340,	-0.997674029517884420,	-0.997670619997467420,	-0.997667207982873890,	-0.997663793474112380,	
+-0.997660376471191320,	-0.997656956974119270,	-0.997653534982904990,	-0.997650110497556700,	-0.997646683518083280,	-0.997643254044493060,	-0.997639822076794690,	-0.997636387614996840,	
+-0.997632950659107950,	-0.997629511209136790,	-0.997626069265091790,	-0.997622624826981610,	-0.997619177894814800,	-0.997615728468600140,	-0.997612276548346060,	-0.997608822134061430,	
+-0.997605365225754710,	-0.997601905823434550,	-0.997598443927109610,	-0.997594979536788550,	-0.997591512652480030,	-0.997588043274192700,	-0.997584571401935350,	-0.997581097035716620,	
+-0.997577620175545080,	-0.997574140821429480,	-0.997570658973378490,	-0.997567174631400880,	-0.997563687795505310,	-0.997560198465700650,	-0.997556706641995360,	-0.997553212324398420,	
+-0.997549715512918380,	-0.997546216207564010,	-0.997542714408344190,	-0.997539210115267470,	-0.997535703328342850,	-0.997532194047578870,	-0.997528682272984410,	-0.997525168004568360,	
+-0.997521651242339270,	-0.997518131986306120,	-0.997514610236477580,	-0.997511085992862530,	-0.997507559255469740,	-0.997504030024308210,	-0.997500498299386470,	-0.997496964080713530,	
+-0.997493427368298160,	-0.997489888162149230,	-0.997486346462275520,	-0.997482802268686020,	-0.997479255581389500,	-0.997475706400394850,	-0.997472154725710820,	-0.997468600557346540,	
+-0.997465043895310770,	-0.997461484739612380,	-0.997457923090260160,	-0.997454358947263200,	-0.997450792310630390,	-0.997447223180370490,	-0.997443651556492620,	-0.997440077439005650,	
+-0.997436500827918460,	-0.997432921723240050,	-0.997429340124979300,	-0.997425756033145090,	-0.997422169447746640,	-0.997418580368792720,	-0.997414988796292310,	-0.997411394730254530,	
+-0.997407798170688140,	-0.997404199117602250,	-0.997400597571005960,	-0.997396993530908160,	-0.997393386997317940,	-0.997389777970244080,	-0.997386166449695910,	-0.997382552435682300,	
+-0.997378935928212360,	-0.997375316927294970,	-0.997371695432939240,	-0.997368071445154380,	-0.997364444963949380,	-0.997360815989333240,	-0.997357184521315050,	-0.997353550559903820,	
+-0.997349914105108760,	-0.997346275156938970,	-0.997342633715403440,	-0.997338989780511390,	-0.997335343352271810,	-0.997331694430693920,	-0.997328043015786700,	-0.997324389107559490,	
+-0.997320732706021170,	-0.997317073811181180,	-0.997313412423048270,	-0.997309748541632010,	-0.997306082166941390,	-0.997302413298985500,	-0.997298741937773680,	-0.997295068083314810,	
+-0.997291391735618430,	-0.997287712894693530,	-0.997284031560549340,	-0.997280347733195070,	-0.997276661412639930,	-0.997272972598893250,	-0.997269281291964020,	-0.997265587491861560,	
+-0.997261891198595210,	-0.997258192412174060,	-0.997254491132607450,	-0.997250787359904690,	-0.997247081094074890,	-0.997243372335127390,	-0.997239661083071490,	-0.997235947337916320,	
+-0.997232231099671410,	-0.997228512368345870,	-0.997224791143949130,	-0.997221067426490300,	-0.997217341215978940,	-0.997213612512424130,	-0.997209881315835320,	-0.997206147626221840,	
+-0.997202411443592780,	-0.997198672767957930,	-0.997194931599326260,	-0.997191187937707340,	-0.997187441783110470,	-0.997183693135545000,	-0.997179941995020140,	-0.997176188361545650,	
+-0.997172432235130520,	-0.997168673615784430,	-0.997164912503516580,	-0.997161148898336510,	-0.997157382800253460,	-0.997153614209277060,	-0.997149843125416660,	-0.997146069548681460,	
+-0.997142293479081230,	-0.997138514916625200,	-0.997134733861323010,	-0.997130950313183880,	-0.997127164272217370,	-0.997123375738432900,	-0.997119584711840150,	-0.997115791192448310,	
+-0.997111995180267050,	-0.997108196675305810,	-0.997104395677574030,	-0.997100592187081360,	-0.997096786203837130,	-0.997092977727850990,	-0.997089166759132390,	-0.997085353297690770,	
+-0.997081537343535770,	-0.997077718896677070,	-0.997073897957123980,	-0.997070074524886160,	-0.997066248599973170,	-0.997062420182394550,	-0.997058589272159850,	-0.997054755869278720,	
+-0.997050919973760720,	-0.997047081585615390,	-0.997043240704852400,	-0.997039397331481280,	-0.997035551465511590,	-0.997031703106953100,	-0.997027852255815360,	-0.997023998912107910,	
+-0.997020143075840530,	-0.997016284747022860,	-0.997012423925664360,	-0.997008560611774900,	-0.997004694805363910,	-0.997000826506441280,	-0.996996955715016560,	-0.996993082431099410,	
+-0.996989206654699590,	-0.996985328385826760,	-0.996981447624490700,	-0.996977564370700950,	-0.996973678624467290,	-0.996969790385799250,	-0.996965899654706940,	-0.996962006431199920,	
+-0.996958110715287730,	-0.996954212506980350,	-0.996950311806287460,	-0.996946408613218700,	-0.996942502927783970,	-0.996938594749993020,	-0.996934684079855530,	-0.996930770917381360,	
+-0.996926855262580290,	-0.996922937115462090,	-0.996919016476036530,	-0.996915093344313390,	-0.996911167720302530,	-0.996907239604013730,	-0.996903308995456870,	-0.996899375894641730,	
+-0.996895440301578170,	-0.996891502216275980,	-0.996887561638744920,	-0.996883618568995100,	-0.996879673007036280,	-0.996875724952878130,	-0.996871774406530850,	-0.996867821368004000,	
+-0.996863865837307680,	-0.996859907814451660,	-0.996855947299445820,	-0.996851984292300150,	-0.996848018793024430,	-0.996844050801628740,	-0.996840080318122990,	-0.996836107342517040,	
+-0.996832131874820780,	-0.996828153915044090,	-0.996824173463197070,	-0.996820190519289720,	-0.996816205083331800,	-0.996812217155333410,	-0.996808226735304450,	-0.996804233823255000,	
+-0.996800238419194850,	-0.996796240523134200,	-0.996792240135082940,	-0.996788237255050950,	-0.996784231883048430,	-0.996780224019085390,	-0.996776213663171820,	-0.996772200815317590,	
+-0.996768185475532920,	-0.996764167643827800,	-0.996760147320212230,	-0.996756124504696310,	-0.996752099197290130,	-0.996748071398003700,	-0.996744041106847000,	-0.996740008323830250,	
+-0.996735973048963550,	-0.996731935282256790,	-0.996727895023720280,	-0.996723852273363910,	-0.996719807031198110,	-0.996715759297232660,	-0.996711709071477880,	-0.996707656353943760,	
+-0.996703601144640410,	-0.996699543443578250,	-0.996695483250767180,	-0.996691420566217290,	-0.996687355389939020,	-0.996683287721942260,	-0.996679217562237320,	-0.996675144910834310,	
+-0.996671069767743440,	-0.996666992132974830,	-0.996662912006538890,	-0.996658829388445520,	-0.996654744278705150,	-0.996650656677328000,	-0.996646566584324160,	-0.996642473999703740,	
+-0.996638378923477290,	-0.996634281355654910,	-0.996630181296246810,	-0.996626078745263210,	-0.996621973702714440,	-0.996617866168610700,	-0.996613756142962330,	-0.996609643625779640,	
+-0.996605528617072740,	-0.996601411116851970,	-0.996597291125127850,	-0.996593168641910390,	-0.996589043667210020,	-0.996584916201037060,	-0.996580786243401740,	-0.996576653794314480,	
+-0.996572518853785620,	-0.996568381421825470,	-0.996564241498444360,	-0.996560099083652620,	-0.996555954177460680,	-0.996551806779878870,	-0.996547656890917510,	-0.996543504510587040,	
+-0.996539349638897680,	-0.996535192275860070,	-0.996531032421484440,	-0.996526870075781220,	-0.996522705238760850,	-0.996518537910433650,	-0.996514368090810180,	-0.996510195779900850,	
+-0.996506020977715900,	-0.996501843684265980,	-0.996497663899561400,	-0.996493481623612730,	-0.996489296856430400,	-0.996485109598024720,	-0.996480919848406250,	-0.996476727607585430,	
+-0.996472532875572910,	-0.996468335652379020,	-0.996464135938014310,	-0.996459933732489310,	-0.996455729035814470,	-0.996451521848000120,	-0.996447312169057130,	-0.996443099998995830,	
+-0.996438885337826760,	-0.996434668185560590,	-0.996430448542207640,	-0.996426226407778560,	-0.996422001782284020,	-0.996417774665734330,	-0.996413545058140280,	-0.996409312959512410,	
+-0.996405078369861140,	-0.996400841289197260,	-0.996396601717531310,	-0.996392359654873830,	-0.996388115101235370,	-0.996383868056626600,	-0.996379618521058270,	-0.996375366494540950,	
+-0.996371111977085060,	-0.996366854968701480,	-0.996362595469400760,	-0.996358333479193560,	-0.996354068998090540,	-0.996349802026102350,	-0.996345532563239540,	-0.996341260609512890,	
+-0.996336986164933270,	-0.996332709229511120,	-0.996328429803257090,	-0.996324147886182070,	-0.996319863478296600,	-0.996315576579611560,	-0.996311287190137620,	-0.996306995309885420,	
+-0.996302700938865750,	-0.996298404077089250,	-0.996294104724566810,	-0.996289802881309080,	-0.996285498547326840,	-0.996281191722630850,	-0.996276882407231890,	-0.996272570601140720,	
+-0.996268256304368220,	-0.996263939516924930,	-0.996259620238821860,	-0.996255298470069660,	-0.996250974210679320,	-0.996246647460661490,	-0.996242318220027180,	-0.996237986488786920,	
+-0.996233652266951710,	-0.996229315554532420,	-0.996224976351539840,	-0.996220634657984830,	-0.996216290473878160,	-0.996211943799230730,	-0.996207594634053620,	-0.996203242978357380,	
+-0.996198888832153130,	-0.996194532195451510,	-0.996190173068263630,	-0.996185811450600370,	-0.996181447342472600,	-0.996177080743891110,	-0.996172711654866980,	-0.996168340075411110,	
+-0.996163966005534360,	-0.996159589445247630,	-0.996155210394562010,	-0.996150828853488270,	-0.996146444822037510,	-0.996142058300220620,	-0.996137669288048700,	-0.996133277785532510,	
+-0.996128883792683160,	-0.996124487309511530,	-0.996120088336028720,	-0.996115686872245720,	-0.996111282918173410,	-0.996106876473823010,	-0.996102467539205390,	-0.996098056114331550,	
+-0.996093642199212700,	-0.996089225793859610,	-0.996084806898283490,	-0.996080385512495340,	-0.996075961636506250,	-0.996071535270327210,	-0.996067106413969450,	-0.996062675067443840,	
+-0.996058241230761480,	-0.996053804903933580,	-0.996049366086971260,	-0.996044924779885380,	-0.996040480982687270,	-0.996036034695388040,	-0.996031585917998560,	-0.996027134650530170,	
+-0.996022680892994060,	-0.996018224645401130,	-0.996013765907762580,	-0.996009304680089640,	-0.996004840962393500,	-0.996000374754685280,	-0.995995906056976080,	-0.995991434869277100,	
+-0.995986961191599570,	-0.995982485023954590,	-0.995978006366353470,	-0.995973525218807330,	-0.995969041581327370,	-0.995964555453924700,	-0.995960066836610760,	-0.995955575729396640,	
+-0.995951082132293550,	-0.995946586045312720,	-0.995942087468465460,	-0.995937586401763000,	-0.995933082845216640,	-0.995928576798837510,	-0.995924068262636910,	-0.995919557236626060,	
+-0.995915043720816410,	-0.995910527715219150,	-0.995906009219845620,	-0.995901488234707030,	-0.995896964759814710,	-0.995892438795179970,	-0.995887910340814140,	-0.995883379396728550,	
+-0.995878845962934520,	-0.995874310039443380,	-0.995869771626266440,	-0.995865230723415040,	-0.995860687330900610,	-0.995856141448734470,	-0.995851593076927940,	-0.995847042215492360,	
+-0.995842488864439270,	-0.995837933023779990,	-0.995833374693525840,	-0.995828813873688270,	-0.995824250564278700,	-0.995819684765308470,	-0.995815116476789000,	-0.995810545698731620,	
+-0.995805972431148100,	-0.995801396674049540,	-0.995796818427447490,	-0.995792237691353390,	-0.995787654465778770,	-0.995783068750734860,	-0.995778480546233410,	-0.995773889852285770,	
+-0.995769296668903350,	-0.995764700996097710,	-0.995760102833880280,	-0.995755502182262610,	-0.995750899041256240,	-0.995746293410872620,	-0.995741685291123170,	-0.995737074682019550,	
+-0.995732461583573200,	-0.995727845995795780,	-0.995723227918698830,	-0.995718607352293670,	-0.995713984296591970,	-0.995709358751605380,	-0.995704730717345330,	-0.995700100193823490,	
+-0.995695467181051510,	-0.995690831679040710,	-0.995686193687802870,	-0.995681553207349630,	-0.995676910237692450,	-0.995672264778842960,	-0.995667616830812730,	-0.995662966393613620,	
+-0.995658313467257080,	-0.995653658051754650,	-0.995649000147118210,	-0.995644339753359200,	-0.995639676870489270,	-0.995635011498520180,	-0.995630343637463610,	-0.995625673287331200,	
+-0.995621000448134620,	-0.995616325119885510,	-0.995611647302595550,	-0.995606966996276490,	-0.995602284200939990,	-0.995597598916597830,	-0.995592911143261650,	-0.995588220880943230,	
+-0.995583528129654230,	-0.995578832889406410,	-0.995574135160211430,	-0.995569434942081170,	-0.995564732235027280,	-0.995560027039061660,	-0.995555319354195940,	-0.995550609180441910,	
+-0.995545896517811450,	-0.995541181366316090,	-0.995536463725967940,	-0.995531743596778540,	-0.995527020978759670,	-0.995522295871923310,	-0.995517568276281350,	-0.995512838191845330,	
+-0.995508105618627350,	-0.995503370556638960,	-0.995498633005892140,	-0.995493892966398790,	-0.995489150438170770,	-0.995484405421219850,	-0.995479657915557930,	-0.995474907921196750,	
+-0.995470155438148430,	-0.995465400466424730,	-0.995460643006037430,	-0.995455883056998610,	-0.995451120619319950,	-0.995446355693013540,	-0.995441588278091260,	-0.995436818374565100,	
+-0.995432045982446830,	-0.995427271101748330,	-0.995422493732481820,	-0.995417713874658940,	-0.995412931528291910,	-0.995408146693392500,	-0.995403359369972710,	-0.995398569558044510,	
+-0.995393777257619910,	-0.995388982468710880,	-0.995384185191329430,	-0.995379385425487430,	-0.995374583171196980,	-0.995369778428470080,	-0.995364971197318820,	-0.995360161477754970,	
+-0.995355349269790860,	-0.995350534573438250,	-0.995345717388709360,	-0.995340897715616290,	-0.995336075554170810,	-0.995331250904385230,	-0.995326423766271560,	-0.995321594139841780,	
+-0.995316762025107990,	-0.995311927422082410,	-0.995307090330776800,	-0.995302250751203600,	-0.995297408683374800,	-0.995292564127302380,	-0.995287717082998680,	-0.995282867550475570,	
+-0.995278015529745260,	-0.995273161020819970,	-0.995268304023711800,	-0.995263444538432960,	-0.995258582564995440,	-0.995253718103411460,	-0.995248851153693100,	-0.995243981715852710,	
+-0.995239109789902380,	-0.995234235375854090,	-0.995229358473720400,	-0.995224479083513300,	-0.995219597205245000,	-0.995214712838927600,	-0.995209825984573530,	-0.995204936642194780,	
+-0.995200044811803800,	-0.995195150493412670,	-0.995190253687033730,	-0.995185354392679080,	-0.995180452610361140,	-0.995175548340091920,	-0.995170641581883950,	-0.995165732335749340,	
+-0.995160820601700410,	-0.995155906379749270,	-0.995150989669908560,	-0.995146070472190280,	-0.995141148786606980,	-0.995136224613170640,	-0.995131297951893700,	-0.995126368802788600,	
+-0.995121437165867650,	-0.995116503041143070,	-0.995111566428627190,	-0.995106627328332440,	-0.995101685740271020,	-0.995096741664455500,	-0.995091795100898070,	-0.995086846049611170,	
+-0.995081894510607130,	-0.995076940483898390,	-0.995071983969497250,	-0.995067024967416280,	-0.995062063477667680,	-0.995057099500263890,	-0.995052133035217220,	-0.995047164082540350,	
+-0.995042192642245580,	-0.995037218714345360,	-0.995032242298852120,	-0.995027263395778180,	-0.995022282005136200,	-0.995017298126938400,	-0.995012311761197420,	-0.995007322907925480,	
+-0.995002331567135470,	-0.994997337738839470,	-0.994992341423050260,	-0.994987342619780170,	-0.994982341329041730,	-0.994977337550847270,	-0.994972331285209570,	-0.994967322532141150,	
+-0.994962311291654360,	-0.994957297563761720,	-0.994952281348475910,	-0.994947262645809350,	-0.994942241455774700,	-0.994937217778384400,	-0.994932191613650980,	-0.994927162961587230,	
+-0.994922131822205460,	-0.994917098195518430,	-0.994912062081538710,	-0.994907023480278710,	-0.994901982391751090,	-0.994896938815968750,	-0.994891892752943870,	-0.994886844202689360,	
+-0.994881793165217740,	-0.994876739640541570,	-0.994871683628673620,	-0.994866625129626430,	-0.994861564143412650,	-0.994856500670045050,	-0.994851434709536080,	-0.994846366261898600,	
+-0.994841295327145160,	-0.994836221905288530,	-0.994831145996341370,	-0.994826067600316110,	-0.994820986717225960,	-0.994815903347083250,	-0.994810817489900740,	-0.994805729145691320,	
+-0.994800638314467410,	-0.994795544996242010,	-0.994790449191027770,	-0.994785350898837350,	-0.994780250119683630,	-0.994775146853579150,	-0.994770041100536790,	-0.994764932860569440,	
+-0.994759822133689740,	-0.994754708919910470,	-0.994749593219244500,	-0.994744475031704380,	-0.994739354357303210,	-0.994734231196053640,	-0.994729105547968450,	-0.994723977413060510,	
+-0.994718846791342590,	-0.994713713682827680,	-0.994708578087528440,	-0.994703440005457630,	-0.994698299436628240,	-0.994693156381053270,	-0.994688010838745250,	-0.994682862809717290,	
+-0.994677712293982160,	-0.994672559291552740,	-0.994667403802441790,	-0.994662245826662520,	-0.994657085364227590,	-0.994651922415149990,	-0.994646756979442490,	-0.994641589057118190,	
+-0.994636418648189860,	-0.994631245752670480,	-0.994626070370572930,	-0.994620892501910210,	-0.994615712146695310,	-0.994610529304941200,	-0.994605343976660670,	-0.994600156161866920,	
+-0.994594965860572610,	-0.994589773072790840,	-0.994584577798534820,	-0.994579380037817320,	-0.994574179790651320,	-0.994568977057049940,	-0.994563771837026040,	-0.994558564130592740,	
+-0.994553353937763010,	-0.994548141258549960,	-0.994542926092966460,	-0.994537708441025630,	-0.994532488302740660,	-0.994527265678124330,	-0.994522040567189960,	-0.994516812969950430,	
+-0.994511582886418830,	-0.994506350316608280,	-0.994501115260531980,	-0.994495877718202800,	-0.994490637689633970,	-0.994485395174838470,	-0.994480150173829510,	-0.994474902686620200,	
+-0.994469652713223630,	-0.994464400253652900,	-0.994459145307921120,	-0.994453887876041610,	-0.994448627958027350,	-0.994443365553891460,	-0.994438100663647240,	-0.994432833287307690,	
+-0.994427563424886030,	-0.994422291076395460,	-0.994417016241849310,	-0.994411738921260450,	-0.994406459114642320,	-0.994401176822008130,	-0.994395892043370870,	-0.994390604778743970,	
+-0.994385315028140540,	-0.994380022791573670,	-0.994374728069056910,	-0.994369430860603250,	-0.994364131166226020,	-0.994358828985938530,	-0.994353524319753990,	-0.994348217167685510,	
+-0.994342907529746520,	-0.994337595405950350,	-0.994332280796310090,	-0.994326963700839170,	-0.994321644119550930,	-0.994316322052458460,	-0.994310997499575300,	-0.994305670460914560,	
+-0.994300340936489560,	-0.994295008926313840,	-0.994289674430400510,	-0.994284337448763100,	-0.994278997981414840,	-0.994273656028369040,	-0.994268311589639020,	-0.994262964665238340,	
+-0.994257615255180190,	-0.994252263359478030,	-0.994246908978145160,	-0.994241552111195140,	-0.994236192758641170,	-0.994230830920496690,	-0.994225466596775130,	-0.994220099787490040,	
+-0.994214730492654410,	-0.994209358712282220,	-0.994203984446386580,	-0.994198607694980920,	-0.994193228458078780,	-0.994187846735693490,	-0.994182462527838600,	-0.994177075834527630,	
+-0.994171686655773930,	-0.994166294991591150,	-0.994160900841992490,	-0.994155504206991610,	-0.994150105086601950,	-0.994144703480837060,	-0.994139299389710460,	-0.994133892813235390,	
+-0.994128483751425820,	-0.994123072204294970,	-0.994117658171856380,	-0.994112241654123710,	-0.994106822651110500,	-0.994101401162830080,	-0.994095977189296210,	-0.994090550730522440,	
+-0.994085121786522310,	-0.994079690357309360,	-0.994074256442897150,	-0.994068820043299330,	-0.994063381158529440,	-0.994057939788601130,	-0.994052495933527850,	-0.994047049593323460,	
+-0.994041600768001410,	-0.994036149457575350,	-0.994030695662058930,	-0.994025239381465810,	-0.994019780615809530,	-0.994014319365103760,	-0.994008855629362250,	-0.994003389408598670,	
+-0.993997920702826550,	-0.993992449512059670,	-0.993986975836311680,	-0.993981499675596130,	-0.993976021029926990,	-0.993970539899317610,	-0.993965056283781960,	-0.993959570183333700,	
+-0.993954081597986480,	-0.993948590527754080,	-0.993943096972650260,	-0.993937600932688570,	-0.993932102407882990,	-0.993926601398247070,	-0.993921097903794680,	-0.993915591924539600,	
+-0.993910083460495470,	-0.993904572511676190,	-0.993899059078095500,	-0.993893543159767080,	-0.993888024756704900,	-0.993882503868922520,	-0.993876980496433910,	-0.993871454639252970,	
+-0.993865926297393340,	-0.993860395470868910,	-0.993854862159693320,	-0.993849326363880680,	-0.993843788083444760,	-0.993838247318399430,	-0.993832704068758450,	-0.993827158334535610,	
+-0.993821610115744990,	-0.993816059412400370,	-0.993810506224515500,	-0.993804950552104380,	-0.993799392395180780,	-0.993793831753758910,	-0.993788268627852300,	-0.993782703017475180,	
+-0.993777134922641190,	-0.993771564343364440,	-0.993765991279658590,	-0.993760415731537950,	-0.993754837699016180,	-0.993749257182107380,	-0.993743674180825430,	-0.993738088695184320,	
+-0.993732500725197920,	-0.993726910270880340,	-0.993721317332245450,	-0.993715721909307130,	-0.993710124002079700,	-0.993704523610576820,	-0.993698920734812810,	-0.993693315374801320,	
+-0.993687707530556690,	-0.993682097202092550,	-0.993676484389423350,	-0.993670869092562970,	-0.993665251311525390,	-0.993659631046324710,	-0.993654008296974920,	-0.993648383063490130,	
+-0.993642755345884310,	-0.993637125144171680,	-0.993631492458366130,	-0.993625857288481850,	-0.993620219634533060,	-0.993614579496533650,	-0.993608936874497810,	-0.993603291768439640,	
+-0.993597644178373150,	-0.993591994104312650,	-0.993586341546272120,	-0.993580686504265790,	-0.993575028978307630,	-0.993569368968411970,	-0.993563706474592910,	-0.993558041496864660,	
+-0.993552374035241210,	-0.993546704089736780,	-0.993541031660365560,	-0.993535356747141880,	-0.993529679350079740,	-0.993523999469193450,	-0.993518317104497120,	-0.993512632256004950,	
+-0.993506944923731260,	-0.993501255107690270,	-0.993495562807896080,	-0.993489868024363010,	-0.993484170757105270,	-0.993478471006137180,	-0.993472768771472730,	-0.993467064053126460,	
+-0.993461356851112590,	-0.993455647165445210,	-0.993449934996138760,	-0.993444220343207450,	-0.993438503206665600,	-0.993432783586527530,	-0.993427061482807350,	-0.993421336895519700,	
+-0.993415609824678690,	-0.993409880270298640,	-0.993404148232393870,	-0.993398413710978700,	-0.993392676706067570,	-0.993386937217674680,	-0.993381195245814470,	-0.993375450790501270,	
+-0.993369703851749390,	-0.993363954429573370,	-0.993358202523987430,	-0.993352448135005890,	-0.993346691262643300,	-0.993340931906914080,	-0.993335170067832340,	-0.993329405745412730,	
+-0.993323638939669680,	-0.993317869650617520,	-0.993312097878270570,	-0.993306323622643480,	-0.993300546883750690,	-0.993294767661606400,	-0.993288985956225170,	-0.993283201767621420,	
+-0.993277415095809800,	-0.993271625940804540,	-0.993265834302620390,	-0.993260040181271450,	-0.993254243576772500,	-0.993248444489137850,	-0.993242642918382270,	-0.993236838864519970,	
+-0.993231032327565600,	-0.993225223307533710,	-0.993219411804438620,	-0.993213597818295100,	-0.993207781349117580,	-0.993201962396920600,	-0.993196140961718600,	-0.993190317043526450,	
+-0.993184490642358360,	-0.993178661758229110,	-0.993172830391153230,	-0.993166996541145260,	-0.993161160208219650,	-0.993155321392391270,	-0.993149480093674650,	-0.993143636312084240,	
+-0.993137790047634810,	-0.993131941300340880,	-0.993126090070217020,	-0.993120236357278090,	-0.993114380161538410,	-0.993108521483012870,	-0.993102660321715900,	-0.993096796677662370,	
+-0.993090930550866950,	-0.993085061941344050,	-0.993079190849108560,	-0.993073317274175030,	-0.993067441216558320,	-0.993061562676272880,	-0.993055681653333690,	-0.993049798147755180,	
+-0.993043912159552230,	-0.993038023688739500,	-0.993032132735331640,	-0.993026239299343530,	-0.993020343380789820,	-0.993014444979685160,	-0.993008544096044440,	-0.993002640729882420,	
+-0.992996734881213760,	-0.992990826550053220,	-0.992984915736415670,	-0.992979002440315780,	-0.992973086661768420,	-0.992967168400788360,	-0.992961247657390360,	-0.992955324431589180,	
+-0.992949398723399820,	-0.992943470532836820,	-0.992937539859915290,	-0.992931606704649860,	-0.992925671067055320,	-0.992919732947146640,	-0.992913792344938710,	-0.992907849260446280,	
+-0.992901903693684140,	-0.992895955644667370,	-0.992890005113410520,	-0.992884052099928800,	-0.992878096604236870,	-0.992872138626349820,	-0.992866178166282420,	-0.992860215224049440,	
+-0.992854249799666080,	-0.992848281893147000,	-0.992842311504507300,	-0.992836338633761640,	-0.992830363280925220,	-0.992824385446012920,	-0.992818405129039740,	-0.992812422330020430,	
+-0.992806437048970090,	-0.992800449285903610,	-0.992794459040836070,	-0.992788466313782370,	-0.992782471104757480,	-0.992776473413776510,	-0.992770473240854320,	-0.992764470586005920,	
+-0.992758465449246400,	-0.992752457830590630,	-0.992746447730053720,	-0.992740435147650650,	-0.992734420083396520,	-0.992728402537306430,	-0.992722382509395260,	-0.992716359999678220,	
+-0.992710335008170070,	-0.992704307534886250,	-0.992698277579841750,	-0.992692245143051430,	-0.992686210224530520,	-0.992680172824294100,	-0.992674132942357180,	-0.992668090578735060,	
+-0.992662045733442630,	-0.992655998406495100,	-0.992649948597907450,	-0.992643896307695120,	-0.992637841535872980,	-0.992631784282456240,	-0.992625724547460010,	-0.992619662330899490,	
+-0.992613597632789670,	-0.992607530453146090,	-0.992601460791983640,	-0.992595388649317400,	-0.992589314025162820,	-0.992583236919534980,	-0.992577157332449000,	-0.992571075263920080,	
+-0.992564990713963540,	-0.992558903682594360,	-0.992552814169828100,	-0.992546722175679740,	-0.992540627700164600,	-0.992534530743297890,	-0.992528431305094830,	-0.992522329385570610,	
+-0.992516224984740680,	-0.992510118102620240,	-0.992504008739224400,	-0.992497896894568580,	-0.992491782568668100,	-0.992485665761538070,	-0.992479546473193920,	-0.992473424703650850,	
+-0.992467300452924190,	-0.992461173721029270,	-0.992455044507981500,	-0.992448912813796100,	-0.992442778638488400,	-0.992436641982073820,	-0.992430502844567460,	-0.992424361225984990,	
+-0.992418217126341600,	-0.992412070545652720,	-0.992405921483933580,	-0.992399769941199720,	-0.992393615917466330,	-0.992387459412748970,	-0.992381300427062960,	-0.992375138960423620,	
+-0.992368975012846490,	-0.992362808584346890,	-0.992356639674940370,	-0.992350468284642130,	-0.992344294413467830,	-0.992338118061432570,	-0.992331939228552230,	-0.992325757914842010,	
+-0.992319574120317460,	-0.992313387844993900,	-0.992307199088886870,	-0.992301007852011810,	-0.992294814134384250,	-0.992288617936019750,	-0.992282419256933610,	-0.992276218097141280,	
+-0.992270014456658630,	-0.992263808335500870,	-0.992257599733683660,	-0.992251388651222310,	-0.992245175088132590,	-0.992238959044429820,	-0.992232740520129770,	-0.992226519515247870,	
+-0.992220296029799660,	-0.992214070063800690,	-0.992207841617266610,	-0.992201610690212840,	-0.992195377282655060,	-0.992189141394608900,	-0.992182903026089690,	-0.992176662177113420,	
+-0.992170418847695410,	-0.992164173037851430,	-0.992157924747596900,	-0.992151673976947700,	-0.992145420725919160,	-0.992139164994527150,	-0.992132906782787210,	-0.992126646090715100,	
+-0.992120382918326270,	-0.992114117265636590,	-0.992107849132661480,	-0.992101578519416830,	-0.992095305425918280,	-0.992089029852181280,	-0.992082751798221810,	-0.992076471264055510,	
+-0.992070188249697950,	-0.992063902755164980,	-0.992057614780472270,	-0.992051324325635480,	-0.992045031390670350,	-0.992038735975592670,	-0.992032438080418190,	-0.992026137705162680,	
+-0.992019834849841690,	-0.992013529514471190,	-0.992007221699066850,	-0.992000911403644440,	-0.991994598628219810,	-0.991988283372808530,	-0.991981965637426690,	-0.991975645422089820,	
+-0.991969322726813930,	-0.991962997551614770,	-0.991956669896507990,	-0.991950339761509590,	-0.991944007146635330,	-0.991937672051901090,	-0.991931334477322730,	-0.991924994422915930,	
+-0.991918651888696770,	-0.991912306874680790,	-0.991905959380884220,	-0.991899609407322690,	-0.991893256954011980,	-0.991886902020968300,	-0.991880544608207400,	-0.991874184715745070,	
+-0.991867822343597270,	-0.991861457491779900,	-0.991855090160308820,	-0.991848720349200130,	-0.991842348058469600,	-0.991835973288133330,	-0.991829596038206970,	-0.991823216308706730,	
+-0.991816834099648380,	-0.991810449411047900,	-0.991804062242921390,	-0.991797672595284620,	-0.991791280468153680,	-0.991784885861544670,	-0.991778488775473370,	-0.991772089209955850,	
+-0.991765687165008130,	-0.991759282640646060,	-0.991752875636885860,	-0.991746466153743510,	-0.991740054191235010,	-0.991733639749376340,	-0.991727222828183600,	-0.991720803427672880,	
+-0.991714381547860070,	-0.991707957188761260,	-0.991701530350392550,	-0.991695101032770030,	-0.991688669235909810,	-0.991682234959827880,	-0.991675798204540440,	-0.991669358970063360,	
+-0.991662917256412870,	-0.991656473063605270,	-0.991650026391656340,	-0.991643577240582500,	-0.991637125610399630,	-0.991630671501123940,	-0.991624214912771530,	-0.991617755845358610,	
+-0.991611294298901380,	-0.991604830273415840,	-0.991598363768918190,	-0.991591894785424640,	-0.991585423322951410,	-0.991578949381514580,	-0.991572472961130380,	-0.991565994061815000,	
+-0.991559512683584670,	-0.991553028826455460,	-0.991546542490443830,	-0.991540053675565750,	-0.991533562381837650,	-0.991527068609275530,	-0.991520572357895810,	-0.991514073627714600,	
+-0.991507572418748210,	-0.991501068731012740,	-0.991494562564524840,	-0.991488053919300390,	-0.991481542795355940,	-0.991475029192707580,	-0.991468513111371630,	-0.991461994551364300,	
+-0.991455473512702020,	-0.991448949995401230,	-0.991442423999477910,	-0.991435895524948600,	-0.991429364571829510,	-0.991422831140137070,	-0.991416295229887500,	-0.991409756841097220,	
+-0.991403215973782450,	-0.991396672627959720,	-0.991390126803645240,	-0.991383578500855570,	-0.991377027719606900,	-0.991370474459915660,	-0.991363918721798190,	-0.991357360505270900,	
+-0.991350799810350350,	-0.991344236637052730,	-0.991337670985394490,	-0.991331102855392170,	-0.991324532247061960,	-0.991317959160420540,	-0.991311383595484100,	-0.991304805552269190,	
+-0.991298225030792350,	-0.991291642031070010,	-0.991285056553118490,	-0.991278468596954340,	-0.991271878162593990,	-0.991265285250053860,	-0.991258689859350620,	-0.991252091990500680,	
+-0.991245491643520490,	-0.991238888818426590,	-0.991232283515235510,	-0.991225675733963700,	-0.991219065474627570,	-0.991212452737243900,	-0.991205837521829110,	-0.991199219828399540,	
+-0.991192599656972150,	-0.991185977007563170,	-0.991179351880189240,	-0.991172724274867020,	-0.991166094191612720,	-0.991159461630443440,	-0.991152826591375490,	-0.991146189074425420,	
+-0.991139549079609880,	-0.991132906606945530,	-0.991126261656448790,	-0.991119614228136550,	-0.991112964322025220,	-0.991106311938131480,	-0.991099657076471740,	-0.991092999737063110,	
+-0.991086339919921900,	-0.991079677625064880,	-0.991073012852508710,	-0.991066345602269920,	-0.991059675874365160,	-0.991053003668811440,	-0.991046328985625060,	-0.991039651824823010,	
+-0.991032972186421720,	-0.991026290070437970,	-0.991019605476888610,	-0.991012918405790200,	-0.991006228857159390,	-0.990999536831013050,	-0.990992842327367840,	-0.990986145346240630,	
+-0.990979445887647970,	-0.990972743951606840,	-0.990966039538133670,	-0.990959332647245450,	-0.990952623278958940,	-0.990945911433290800,	-0.990939197110258020,	-0.990932480309877130,	
+-0.990925761032165120,	-0.990919039277138650,	-0.990912315044814700,	-0.990905588335209810,	-0.990898859148340860,	-0.990892127484224950,	-0.990885393342878730,	-0.990878656724318960,	
+-0.990871917628562530,	-0.990865176055626410,	-0.990858432005527150,	-0.990851685478281950,	-0.990844936473907590,	-0.990838184992420820,	-0.990831431033838640,	-0.990824674598177800,	
+-0.990817915685455300,	-0.990811154295688000,	-0.990804390428892900,	-0.990797624085086760,	-0.990790855264286450,	-0.990784083966509190,	-0.990777310191771620,	-0.990770533940090850,	
+-0.990763755211483630,	-0.990756974005966960,	-0.990750190323558040,	-0.990743404164273640,	-0.990736615528130640,	-0.990729824415146120,	-0.990723030825337080,	-0.990716234758720500,	
+-0.990709436215313270,	-0.990702635195132460,	-0.990695831698195080,	-0.990689025724518000,	-0.990682217274118430,	-0.990675406347013450,	-0.990668592943219850,	-0.990661777062754710,	
+-0.990654958705635250,	-0.990648137871878220,	-0.990641314561500950,	-0.990634488774520430,	-0.990627660510953630,	-0.990620829770817780,	-0.990613996554129740,	-0.990607160860906830,	
+-0.990600322691165940,	-0.990593482044924260,	-0.990586638922198670,	-0.990579793323006720,	-0.990572945247365280,	-0.990566094695291440,	-0.990559241666802310,	-0.990552386161915210,	
+-0.990545528180646890,	-0.990538667723015020,	-0.990531804789036350,	-0.990524939378728210,	-0.990518071492107690,	-0.990511201129192110,	-0.990504328289998460,	-0.990497452974543950,	
+-0.990490575182845780,	-0.990483694914921160,	-0.990476812170787310,	-0.990469926950461540,	-0.990463039253960840,	-0.990456149081302640,	-0.990449256432504030,	-0.990442361307582120,	
+-0.990435463706554550,	-0.990428563629438210,	-0.990421661076250510,	-0.990414756047008570,	-0.990407848541729810,	-0.990400938560431430,	-0.990394026103130760,	-0.990387111169845010,	
+-0.990380193760591390,	-0.990373273875387210,	-0.990366351514250010,	-0.990359426677196900,	-0.990352499364245190,	-0.990345569575412310,	-0.990338637310715250,	-0.990331702570171890,	
+-0.990324765353799100,	-0.990317825661614530,	-0.990310883493635390,	-0.990303938849879000,	-0.990296991730362790,	-0.990290042135104080,	-0.990283090064120190,	-0.990276135517428660,	
+-0.990269178495046700,	-0.990262218996991850,	-0.990255257023281430,	-0.990248292573932990,	-0.990241325648963720,	-0.990234356248391180,	-0.990227384372232570,	-0.990220410020505650,	
+-0.990213433193227740,	-0.990206453890416280,	-0.990199472112088590,	-0.990192487858262300,	-0.990185501128954650,	-0.990178511924183380,	-0.990171520243965820,	-0.990164526088319290,	
+-0.990157529457261650,	-0.990150530350810130,	-0.990143528768982260,	-0.990136524711795580,	-0.990129518179267640,	-0.990122509171415750,	-0.990115497688257680,	-0.990108483729810860,	
+-0.990101467296092940,	-0.990094448387121240,	-0.990087427002913410,	-0.990080403143487110,	-0.990073376808859760,	-0.990066347999048910,	-0.990059316714072100,	-0.990052282953947200,	
+-0.990045246718691540,	-0.990038208008322760,	-0.990031166822858410,	-0.990024123162316250,	-0.990017077026713600,	-0.990010028416068330,	-0.990002977330398100,	-0.989995923769720340,	
+-0.989988867734052810,	-0.989981809223413060,	-0.989974748237818840,	-0.989967684777287690,	-0.989960618841837390,	-0.989953550431485580,	-0.989946479546249700,	-0.989939406186147730,	
+-0.989932330351197320,	-0.989925252041416020,	-0.989918171256821690,	-0.989911087997431660,	-0.989904002263264140,	-0.989896914054336550,	-0.989889823370666780,	-0.989882730212272350,	
+-0.989875634579171160,	-0.989868536471380840,	-0.989861435888919170,	-0.989854332831803910,	-0.989847227300052810,	-0.989840119293683540,	-0.989833008812714190,	-0.989825895857162190,	
+-0.989818780427045520,	-0.989811662522381840,	-0.989804542143188910,	-0.989797419289484730,	-0.989790293961287040,	-0.989783166158613610,	-0.989776035881482220,	-0.989768903129910840,	
+-0.989761767903917120,	-0.989754630203518950,	-0.989747490028734300,	-0.989740347379580830,	-0.989733202256076420,	-0.989726054658239150,	-0.989718904586086690,	-0.989711752039637020,	
+-0.989704597018908010,	-0.989697439523917420,	-0.989690279554683140,	-0.989683117111223250,	-0.989675952193555640,	-0.989668784801698060,	-0.989661614935668620,	-0.989654442595485070,	
+-0.989647267781165410,	-0.989640090492727610,	-0.989632910730189550,	-0.989625728493569110,	-0.989618543782884500,	-0.989611356598153470,	-0.989604166939394130,	-0.989596974806624340,	
+-0.989589780199862100,	-0.989582583119125280,	-0.989575383564432200,	-0.989568181535800620,	-0.989560977033248520,	-0.989553770056794010,	-0.989546560606455070,	-0.989539348682249800,	
+-0.989532134284196060,	-0.989524917412312080,	-0.989517698066615830,	-0.989510476247125070,	-0.989503251953858350,	-0.989496025186833440,	-0.989488795946068530,	-0.989481564231581620,	
+-0.989474330043390580,	-0.989467093381513950,	-0.989459854245969490,	-0.989452612636775530,	-0.989445368553949930,	-0.989438121997510910,	-0.989430872967476670,	-0.989423621463865200,	
+-0.989416367486694700,	-0.989409111035983170,	-0.989401852111748800,	-0.989394590714010040,	-0.989387326842784630,	-0.989380060498091020,	-0.989372791679947180,	-0.989365520388371330,	
+-0.989358246623381790,	-0.989350970384996530,	-0.989343691673233990,	-0.989336410488112160,	-0.989329126829649240,	-0.989321840697863550,	-0.989314552092773300,	-0.989307261014396590,	
+-0.989299967462751730,	-0.989292671437856930,	-0.989285372939730510,	-0.989278071968390680,	-0.989270768523855650,	-0.989263462606143620,	-0.989256154215273020,	-0.989248843351261950,	
+-0.989241530014128840,	-0.989234214203891900,	-0.989226895920569450,	-0.989219575164179800,	-0.989212251934741160,	-0.989204926232271850,	-0.989197598056790310,	-0.989190267408314730,	
+-0.989182934286863320,	-0.989175598692454750,	-0.989168260625107210,	-0.989160920084839020,	-0.989153577071668510,	-0.989146231585613990,	-0.989138883626693890,	-0.989131533194926640,	
+-0.989124180290330450,	-0.989116824912923960,	-0.989109467062725400,	-0.989102106739753070,	-0.989094743944025520,	-0.989087378675561180,	-0.989080010934378360,	-0.989072640720495390,	
+-0.989065268033930910,	-0.989057892874703250,	-0.989050515242830940,	-0.989043135138332200,	-0.989035752561225780,	-0.989028367511529780,	-0.989020979989262970,	-0.989013589994443780,	
+-0.989006197527090510,	-0.988998802587221840,	-0.988991405174856060,	-0.988984005290011850,	-0.988976602932707620,	-0.988969198102961910,	-0.988961790800793160,	-0.988954381026219800,	
+-0.988946968779260690,	-0.988939554059934060,	-0.988932136868258540,	-0.988924717204252790,	-0.988917295067935020,	-0.988909870459324210,	-0.988902443378438690,	-0.988895013825297100,	
+-0.988887581799917870,	-0.988880147302319770,	-0.988872710332521330,	-0.988865270890540990,	-0.988857828976397620,	-0.988850384590109540,	-0.988842937731695510,	-0.988835488401174190,	
+-0.988828036598564110,	-0.988820582323884030,	-0.988813125577152400,	-0.988805666358388070,	-0.988798204667609370,	-0.988790740504835290,	-0.988783273870084360,	-0.988775804763375230,	
+-0.988768333184726680,	-0.988760859134157230,	-0.988753382611685660,	-0.988745903617330610,	-0.988738422151110740,	-0.988730938213044810,	-0.988723451803151580,	-0.988715962921449700,	
+-0.988708471567957940,	-0.988700977742695050,	-0.988693481445679700,	-0.988685982676930420,	-0.988678481436466420,	-0.988670977724306230,	-0.988663471540468520,	-0.988655962884972150,	
+-0.988648451757835890,	-0.988640938159078500,	-0.988633422088718850,	-0.988625903546775490,	-0.988618382533267390,	-0.988610859048213330,	-0.988603333091632170,	-0.988595804663542690,	
+-0.988588273763963740,	-0.988580740392914100,	-0.988573204550412420,	-0.988565666236477900,	-0.988558125451129200,	-0.988550582194385190,	-0.988543036466264620,	-0.988535488266786610,	
+-0.988527937595969800,	-0.988520384453833170,	-0.988512828840395600,	-0.988505270755675960,	-0.988497710199693010,	-0.988490147172465860,	-0.988482581674013370,	-0.988475013704354530,	
+-0.988467443263507990,	-0.988459870351492850,	-0.988452294968328090,	-0.988444717114032590,	-0.988437136788625330,	-0.988429553992125180,	-0.988421968724551240,	-0.988414380985922270,	
+-0.988406790776257370,	-0.988399198095575530,	-0.988391602943895720,	-0.988384005321236710,	-0.988376405227617830,	-0.988368802663058040,	-0.988361197627576130,	-0.988353590121191280,	
+-0.988345980143922390,	-0.988338367695788420,	-0.988330752776808710,	-0.988323135387002120,	-0.988315515526387630,	-0.988307893194984470,	-0.988300268392811490,	-0.988292641119887900,	
+-0.988285011376232590,	-0.988277379161864870,	-0.988269744476803490,	-0.988262107321068010,	-0.988254467694677170,	-0.988246825597650090,	-0.988239181030006080,	-0.988231533991764000,	
+-0.988223884482943070,	-0.988216232503562500,	-0.988208578053641370,	-0.988200921133198680,	-0.988193261742253860,	-0.988185599880825770,	-0.988177935548933740,	-0.988170268746596860,	
+-0.988162599473834340,	-0.988154927730665160,	-0.988147253517108750,	-0.988139576833184210,	-0.988131897678910740,	-0.988124216054307560,	-0.988116531959393860,	-0.988108845394188640,	
+-0.988101156358711540,	-0.988093464852981440,	-0.988085770877017660,	-0.988078074430839500,	-0.988070375514466190,	-0.988062674127916930,	-0.988054970271211030,	-0.988047263944367590,	
+-0.988039555147406050,	-0.988031843880345480,	-0.988024130143205450,	-0.988016413936005030,	-0.988008695258763670,	-0.988000974111500560,	-0.987993250494234810,	-0.987985524406986170,	
+-0.987977795849773630,	-0.987970064822616620,	-0.987962331325534460,	-0.987954595358546460,	-0.987946856921671950,	-0.987939116014930340,	-0.987931372638340970,	-0.987923626791923140,	
+-0.987915878475696060,	-0.987908127689679500,	-0.987900374433892560,	-0.987892618708354650,	-0.987884860513085330,	-0.987877099848103790,	-0.987869336713429360,	-0.987861571109081680,	
+-0.987853803035080080,	-0.987846032491443980,	-0.987838259478192810,	-0.987830483995346010,	-0.987822706042922990,	-0.987814925620943310,	-0.987807142729426160,	-0.987799357368391080,	
+-0.987791569537857740,	-0.987783779237845440,	-0.987775986468373720,	-0.987768191229462130,	-0.987760393521129880,	-0.987752593343396600,	-0.987744790696282070,	-0.987736985579805380,	
+-0.987729177993986410,	-0.987721367938844350,	-0.987713555414398980,	-0.987705740420669610,	-0.987697922957676000,	-0.987690103025437470,	-0.987682280623973670,	-0.987674455753304150,	
+-0.987666628413448660,	-0.987658798604426510,	-0.987650966326257370,	-0.987643131578960780,	-0.987635294362556260,	-0.987627454677063700,	-0.987619612522502410,	-0.987611767898892160,	
+-0.987603920806252480,	-0.987596071244602910,	-0.987588219213963230,	-0.987580364714353070,	-0.987572507745791860,	-0.987564648308299490,	-0.987556786401895370,	-0.987548922026599390,	
+-0.987541055182431070,	-0.987533185869410080,	-0.987525314087556170,	-0.987517439836888890,	-0.987509563117428100,	-0.987501683929193350,	-0.987493802272204510,	-0.987485918146481120,	
+-0.987478031552042950,	-0.987470142488909630,	-0.987462250957100940,	-0.987454356956636750,	-0.987446460487536590,	-0.987438561549820130,	-0.987430660143507440,	-0.987422756268618080,	
+-0.987414849925171810,	-0.987406941113188500,	-0.987399029832687790,	-0.987391116083689350,	-0.987383199866213260,	-0.987375281180279170,	-0.987367360025906860,	-0.987359436403116190,	
+-0.987351510311926920,	-0.987343581752358810,	-0.987335650724431860,	-0.987327717228165700,	-0.987319781263580110,	-0.987311842830695290,	-0.987303901929530770,	-0.987295958560106550,	
+-0.987288012722442380,	-0.987280064416558250,	-0.987272113642473690,	-0.987264160400209150,	-0.987256204689784140,	-0.987248246511218560,	-0.987240285864532500,	-0.987232322749745590,	
+-0.987224357166877950,	-0.987216389115949440,	-0.987208418596979830,	-0.987200445609989210,	-0.987192470154997450,	-0.987184492232024650,	-0.987176511841090560,	-0.987168528982215190,	
+-0.987160543655418500,	-0.987152555860720260,	-0.987144565598140900,	-0.987136572867700070,	-0.987128577669417750,	-0.987120580003314040,	-0.987112579869408810,	-0.987104577267722160,	
+-0.987096572198274180,	-0.987088564661084630,	-0.987080554656173730,	-0.987072542183561330,	-0.987064527243267650,	-0.987056509835312680,	-0.987048489959716500,	-0.987040467616499000,	
+-0.987032442805680250,	-0.987024415527280490,	-0.987016385781319670,	-0.987008353567817910,	-0.987000318886795290,	-0.986992281738271910,	-0.986984242122267760,	-0.986976200038803040,	
+-0.986968155487897850,	-0.986960108469572160,	-0.986952058983846190,	-0.986944007030740140,	-0.986935952610274110,	-0.986927895722468200,	-0.986919836367342480,	-0.986911774544917190,	
+-0.986903710255212400,	-0.986895643498248430,	-0.986887574274045280,	-0.986879502582623250,	-0.986871428424002550,	-0.986863351798203170,	-0.986855272705245420,	-0.986847191145149520,	
+-0.986839107117935650,	-0.986831020623623820,	-0.986822931662234670,	-0.986814840233788180,	-0.986806746338304560,	-0.986798649975804020,	-0.986790551146306870,	-0.986782449849833320,	
+-0.986774346086403690,	-0.986766239856038170,	-0.986758131158757100,	-0.986750019994580670,	-0.986741906363529210,	-0.986733790265623020,	-0.986725671700882320,	-0.986717550669327430,	
+-0.986709427170978540,	-0.986701301205856200,	-0.986693172773980610,	-0.986685041875372090,	-0.986676908510050970,	-0.986668772678037650,	-0.986660634379352140,	-0.986652493614015300,	
+-0.986644350382047120,	-0.986636204683468130,	-0.986628056518298550,	-0.986619905886558900,	-0.986611752788269510,	-0.986603597223450700,	-0.986595439192122890,	-0.986587278694306510,	
+-0.986579115730021770,	-0.986570950299289430,	-0.986562782402129690,	-0.986554612038562870,	-0.986546439208609740,	-0.986538263912290160,	-0.986530086149625230,	-0.986521905920635040,	
+-0.986513723225340030,	-0.986505538063760730,	-0.986497350435917570,	-0.986489160341831100,	-0.986480967781521720,	-0.986472772755009890,	-0.986464575262316120,	-0.986456375303460750,	
+-0.986448172878464650,	-0.986439967987348120,	-0.986431760630131600,	-0.986423550806835750,	-0.986415338517480980,	-0.986407123762087720,	-0.986398906540676860,	-0.986390686853268580,	
+-0.986382464699883780,	-0.986374240080542640,	-0.986366012995266050,	-0.986357783444074320,	-0.986349551426988210,	-0.986341316944028160,	-0.986333079995214690,	-0.986324840580568680,	
+-0.986316598700110570,	-0.986308354353860990,	-0.986300107541840500,	-0.986291858264069620,	-0.986283606520569120,	-0.986275352311359650,	-0.986267095636461870,	-0.986258836495896300,	
+-0.986250574889683710,	-0.986242310817844640,	-0.986234044280399740,	-0.986225775277369760,	-0.986217503808775380,	-0.986209229874637110,	-0.986200953474975830,	-0.986192674609812300,	
+-0.986184393279166960,	-0.986176109483060670,	-0.986167823221514080,	-0.986159534494547850,	-0.986151243302182960,	-0.986142949644439830,	-0.986134653521339440,	-0.986126354932902350,	
+-0.986118053879149410,	-0.986109750360101290,	-0.986101444375778850,	-0.986093135926202740,	-0.986084825011393830,	-0.986076511631372780,	-0.986068195786160450,	-0.986059877475777720,	
+-0.986051556700245360,	-0.986043233459584000,	-0.986034907753814420,	-0.986026579582957810,	-0.986018248947034600,	-0.986009915846065900,	-0.986001580280072340,	-0.985993242249074920,	
+-0.985984901753094280,	-0.985976558792151400,	-0.985968213366267170,	-0.985959865475462440,	-0.985951515119757870,	-0.985943162299174560,	-0.985934807013733480,	-0.985926449263455300,	
+-0.985918089048361090,	-0.985909726368471520,	-0.985901361223807670,	-0.985892993614390420,	-0.985884623540240760,	-0.985876251001379430,	-0.985867875997827550,	-0.985859498529605970,	
+-0.985851118596735690,	-0.985842736199237570,	-0.985834351337132600,	-0.985825964010441650,	-0.985817574219185920,	-0.985809181963386290,	-0.985800787243063640,	-0.985792390058239040,	
+-0.985783990408933500,	-0.985775588295167760,	-0.985767183716963260,	-0.985758776674340750,	-0.985750367167321340,	-0.985741955195926000,	-0.985733540760175830,	-0.985725123860091700,	
+-0.985716704495694820,	-0.985708282667006270,	-0.985699858374046720,	-0.985691431616837700,	-0.985683002395400190,	-0.985674570709755060,	-0.985666136559923630,	-0.985657699945926780,	
+-0.985649260867785480,	-0.985640819325521280,	-0.985632375319154930,	-0.985623928848707750,	-0.985615479914200730,	-0.985607028515654960,	-0.985598574653091640,	-0.985590118326531870,	
+-0.985581659535996750,	-0.985573198281507580,	-0.985564734563085240,	-0.985556268380751170,	-0.985547799734526550,	-0.985539328624432280,	-0.985530855050489760,	-0.985522379012720000,	
+-0.985513900511144400,	-0.985505419545783970,	-0.985496936116660120,	-0.985488450223793830,	-0.985479961867206540,	-0.985471471046919230,	-0.985462977762953220,	-0.985454482015329810,	
+-0.985445983804070220,	-0.985437483129195550,	-0.985428979990727320,	-0.985420474388686520,	-0.985411966323094690,	-0.985403455793972820,	-0.985394942801342430,	-0.985386427345224410,	
+-0.985377909425640520,	-0.985369389042611950,	-0.985360866196159810,	-0.985352340886305520,	-0.985343813113070290,	-0.985335282876475650,	-0.985326750176542810,	-0.985318215013293090,	
+-0.985309677386747570,	-0.985301137296928140,	-0.985292594743855780,	-0.985284049727552010,	-0.985275502248038060,	-0.985266952305335340,	-0.985258399899465060,	-0.985249845030448990,	
+-0.985241287698308320,	-0.985232727903064490,	-0.985224165644738690,	-0.985215600923352590,	-0.985207033738927480,	-0.985198464091484700,	-0.985189891981045780,	-0.985181317407632040,	
+-0.985172740371265120,	-0.985164160871966450,	-0.985155578909757250,	-0.985146994484659140,	-0.985138407596693580,	-0.985129818245881750,	-0.985121226432245640,	-0.985112632155806470,	
+-0.985104035416585640,	-0.985095436214604710,	-0.985086834549885220,	-0.985078230422448690,	-0.985069623832316550,	-0.985061014779510360,	-0.985052403264051630,	-0.985043789285961700,	
+-0.985035172845262540,	-0.985026553941975360,	-0.985017932576121910,	-0.985009308747723520,	-0.985000682456801720,	-0.984992053703378390,	-0.984983422487474950,	-0.984974788809112930,	
+-0.984966152668313890,	-0.984957514065099460,	-0.984948872999491300,	-0.984940229471510940,	-0.984931583481180040,	-0.984922935028520240,	-0.984914284113552860,	-0.984905630736299890,	
+-0.984896974896782850,	-0.984888316595023520,	-0.984879655831043200,	-0.984870992604863660,	-0.984862326916506880,	-0.984853658765994180,	-0.984844988153347420,	-0.984836315078588150,	
+-0.984827639541738020,	-0.984818961542818890,	-0.984810281081852310,	-0.984801598158860040,	-0.984792912773863720,	-0.984784224926885110,	-0.984775534617945980,	-0.984766841847067980,	
+-0.984758146614272970,	-0.984749448919582490,	-0.984740748763018540,	-0.984732046144602410,	-0.984723341064356440,	-0.984714633522302040,	-0.984705923518461090,	-0.984697211052855350,	
+-0.984688496125506460,	-0.984679778736436530,	-0.984671058885666970,	-0.984662336573219890,	-0.984653611799116700,	-0.984644884563379730,	-0.984636154866030510,	-0.984627422707090920,	
+-0.984618688086582820,	-0.984609951004527860,	-0.984601211460948030,	-0.984592469455865200,	-0.984583724989301250,	-0.984574978061278030,	-0.984566228671817310,	-0.984557476820941080,	
+-0.984548722508671090,	-0.984539965735029330,	-0.984531206500037560,	-0.984522444803717760,	-0.984513680646091900,	-0.984504914027181880,	-0.984496144947009650,	-0.984487373405597000,	
+-0.984478599402965890,	-0.984469822939138100,	-0.984461044014135920,	-0.984452262627981130,	-0.984443478780695820,	-0.984434692472301640,	-0.984425903702820790,	-0.984417112472275260,	
+-0.984408318780686800,	-0.984399522628077620,	-0.984390724014469700,	-0.984381922939884690,	-0.984373119404345130,	-0.984364313407872670,	-0.984355504950489510,	-0.984346694032217530,	
+-0.984337880653078700,	-0.984329064813095340,	-0.984320246512289330,	-0.984311425750682640,	-0.984302602528297490,	-0.984293776845155730,	-0.984284948701279580,	-0.984276118096691020,	
+-0.984267285031412140,	-0.984258449505465150,	-0.984249611518871800,	-0.984240771071654640,	-0.984231928163835420,	-0.984223082795436580,	-0.984214234966479860,	-0.984205384676987590,	
+-0.984196531926981750,	-0.984187676716484770,	-0.984178819045518520,	-0.984169958914105300,	-0.984161096322267110,	-0.984152231270026160,	-0.984143363757404740,	-0.984134493784424860,	
+-0.984125621351108700,	-0.984116746457478380,	-0.984107869103556300,	-0.984098989289364570,	-0.984090107014925390,	-0.984081222280260960,	-0.984072335085393490,	-0.984063445430344960,	
+-0.984054553315137910,	-0.984045658739794660,	-0.984036761704337180,	-0.984027862208787680,	-0.984018960253168710,	-0.984010055837502230,	-0.984001148961810680,	-0.983992239626116150,	
+-0.983983327830440960,	-0.983974413574807640,	-0.983965496859238180,	-0.983956577683755000,	-0.983947656048380410,	-0.983938731953136750,	-0.983929805398045980,	-0.983920876383130860,	
+-0.983911944908413600,	-0.983903010973916530,	-0.983894074579661830,	-0.983885135725672040,	-0.983876194411969270,	-0.983867250638576160,	-0.983858304405514810,	-0.983849355712807850,	
+-0.983840404560477170,	-0.983831450948545740,	-0.983822494877035660,	-0.983813536345969350,	-0.983804575355369140,	-0.983795611905257440,	-0.983786645995656790,	-0.983777677626589520,	
+-0.983768706798078150,	-0.983759733510144900,	-0.983750757762812400,	-0.983741779556102980,	-0.983732798890039060,	-0.983723815764643180,	-0.983714830179937770,	-0.983705842135945140,	
+-0.983696851632688050,	-0.983687858670188820,	-0.983678863248469980,	-0.983669865367553960,	-0.983660865027463300,	-0.983651862228220320,	-0.983642856969847770,	-0.983633849252368190,	
+-0.983624839075803890,	-0.983615826440177530,	-0.983606811345511530,	-0.983597793791828660,	-0.983588773779151220,	-0.983579751307501750,	-0.983570726376902900,	-0.983561698987377330,	
+-0.983552669138947460,	-0.983543636831636040,	-0.983534602065465390,	-0.983525564840458390,	-0.983516525156637230,	-0.983507483014024910,	-0.983498438412643840,	-0.983489391352516780,	
+-0.983480341833666170,	-0.983471289856114760,	-0.983462235419885090,	-0.983453178524999800,	-0.983444119171481560,	-0.983435057359352880,	-0.983425993088636760,	-0.983416926359355630,	
+-0.983407857171532230,	-0.983398785525189110,	-0.983389711420349140,	-0.983380634857034640,	-0.983371555835268700,	-0.983362474355073960,	-0.983353390416472960,	-0.983344304019488470,	
+-0.983335215164143240,	-0.983326123850460030,	-0.983317030078461380,	-0.983307933848170280,	-0.983298835159609360,	-0.983289734012801060,	-0.983280630407768700,	-0.983271524344534690,	
+-0.983262415823121900,	-0.983253304843553110,	-0.983244191405850840,	-0.983235075510038300,	-0.983225957156138030,	-0.983216836344172900,	-0.983207713074165660,	-0.983198587346139190,	
+-0.983189459160116240,	-0.983180328516119580,	-0.983171195414172080,	-0.983162059854296720,	-0.983152921836515930,	-0.983143781360853010,	-0.983134638427330730,	-0.983125493035971740,	
+-0.983116345186799130,	-0.983107194879835560,	-0.983098042115103880,	-0.983088886892627300,	-0.983079729212428370,	-0.983070569074530280,	-0.983061406478955680,	-0.983052241425727560,	
+-0.983043073914868890,	-0.983033903946402440,	-0.983024731520351300,	-0.983015556636738230,	-0.983006379295586320,	-0.982997199496918440,	-0.982988017240757680,	-0.982978832527126810,	
+-0.982969645356048920,	-0.982960455727546640,	-0.982951263641643540,	-0.982942069098362130,	-0.982932872097725620,	-0.982923672639756880,	-0.982914470724479020,	-0.982905266351915000,	
+-0.982896059522087810,	-0.982886850235020430,	-0.982877638490735730,	-0.982868424289257140,	-0.982859207630607520,	-0.982849988514809760,	-0.982840766941887160,	-0.982831542911862590,	
+-0.982822316424759030,	-0.982813087480599810,	-0.982803856079407900,	-0.982794622221206390,	-0.982785385906018270,	-0.982776147133866630,	-0.982766905904774670,	-0.982757662218765480,	
+-0.982748416075862160,	-0.982739167476087690,	-0.982729916419465170,	-0.982720662906018120,	-0.982711406935769300,	-0.982702148508742050,	-0.982692887624959320,	-0.982683624284444330,	
+-0.982674358487220400,	-0.982665090233310500,	-0.982655819522737950,	-0.982646546355525840,	-0.982637270731697380,	-0.982627992651275760,	-0.982618712114284090,	-0.982609429120745670,	
+-0.982600143670683710,	-0.982590855764121200,	-0.982581565401081770,	-0.982572272581588300,	-0.982562977305664220,	-0.982553679573332730,	-0.982544379384617030,	-0.982535076739540210,	
+-0.982525771638125820,	-0.982516464080397060,	-0.982507154066377120,	-0.982497841596089330,	-0.982488526669556880,	-0.982479209286803100,	-0.982469889447851300,	-0.982460567152724780,	
+-0.982451242401446770,	-0.982441915194040780,	-0.982432585530529920,	-0.982423253410937610,	-0.982413918835287280,	-0.982404581803602020,	-0.982395242315905250,	-0.982385900372220510,	
+-0.982376555972571010,	-0.982367209116980060,	-0.982357859805471190,	-0.982348508038067610,	-0.982339153814792750,	-0.982329797135670040,	-0.982320438000722880,	-0.982311076409974390,	
+-0.982301712363448320,	-0.982292345861168090,	-0.982282976903156910,	-0.982273605489438320,	-0.982264231620035730,	-0.982254855294972360,	-0.982245476514272080,	-0.982236095277958080,	
+-0.982226711586053790,	-0.982217325438582870,	-0.982207936835568510,	-0.982198545777034360,	-0.982189152263003740,	-0.982179756293500410,	-0.982170357868547560,	-0.982160956988168630,	
+-0.982151553652387600,	-0.982142147861227550,	-0.982132739614712260,	-0.982123328912865020,	-0.982113915755709390,	-0.982104500143269000,	-0.982095082075567500,	-0.982085661552628220,	
+-0.982076238574474790,	-0.982066813141130760,	-0.982057385252619760,	-0.982047954908965240,	-0.982038522110190830,	-0.982029086856320180,	-0.982019649147376610,	-0.982010208983383980,	
+-0.982000766364365950,	-0.981991321290345940,	-0.981981873761347710,	-0.981972423777394800,	-0.981962971338510520,	-0.981953516444719070,	-0.981944059096043880,	-0.981934599292508480,	
+-0.981925137034136640,	-0.981915672320951890,	-0.981906205152978000,	-0.981896735530238600,	-0.981887263452757340,	-0.981877788920557770,	-0.981868311933663860,	-0.981858832492099150,	
+-0.981849350595887400,	-0.981839866245052260,	-0.981830379439617480,	-0.981820890179606610,	-0.981811398465043620,	-0.981801904295952150,	-0.981792407672355980,	-0.981782908594278750,	
+-0.981773407061744210,	-0.981763903074776230,	-0.981754396633398470,	-0.981744887737634690,	-0.981735376387508520,	-0.981725862583044060,	-0.981716346324264970,	-0.981706827611194990,	
+-0.981697306443858000,	-0.981687782822277750,	-0.981678256746477800,	-0.981668728216482430,	-0.981659197232315210,	-0.981649663793999980,	-0.981640127901560630,	-0.981630589555021030,	
+-0.981621048754404810,	-0.981611505499736080,	-0.981601959791038480,	-0.981592411628336100,	-0.981582861011652490,	-0.981573307941011830,	-0.981563752416438010,	-0.981554194437954660,	
+-0.981544634005586000,	-0.981535071119355450,	-0.981525505779287430,	-0.981515937985405710,	-0.981506367737734030,	-0.981496795036296500,	-0.981487219881116980,	-0.981477642272219450,	
+-0.981468062209627790,	-0.981458479693365860,	-0.981448894723457870,	-0.981439307299927450,	-0.981429717422798940,	-0.981420125092096090,	-0.981410530307842980,	-0.981400933070063490,	
+-0.981391333378781710,	-0.981381731234021390,	-0.981372126635806860,	-0.981362519584162100,	-0.981352910079111070,	-0.981343298120677670,	-0.981333683708886070,	-0.981324066843760280,	
+-0.981314447525324370,	-0.981304825753602230,	-0.981295201528617930,	-0.981285574850395800,	-0.981275945718959710,	-0.981266314134333740,	-0.981256680096541990,	-0.981247043605608550,	
+-0.981237404661557290,	-0.981227763264412740,	-0.981218119414198790,	-0.981208473110939510,	-0.981198824354659100,	-0.981189173145381570,	-0.981179519483131200,	-0.981169863367931880,	
+-0.981160204799808030,	-0.981150543778783410,	-0.981140880304882670,	-0.981131214378129670,	-0.981121545998548730,	-0.981111875166163830,	-0.981102201880999280,	-0.981092526143079070,	
+-0.981082847952427730,	-0.981073167309069240,	-0.981063484213027800,	-0.981053798664327630,	-0.981044110662993020,	-0.981034420209048190,	-0.981024727302517220,	-0.981015031943424430,	
+-0.981005334131794140,	-0.980995633867650320,	-0.980985931151017510,	-0.980976225981919910,	-0.980966518360381730,	-0.980956808286427280,	-0.980947095760080660,	-0.980937380781366500,	
+-0.980927663350308790,	-0.980917943466932060,	-0.980908221131260310,	-0.980898496343318160,	-0.980888769103129610,	-0.980879039410719300,	-0.980869307266111320,	-0.980859572669329990,	
+-0.980849835620399620,	-0.980840096119344860,	-0.980830354166189910,	-0.980820609760958970,	-0.980810862903676580,	-0.980801113594367060,	-0.980791361833054490,	-0.980781607619763740,	
+-0.980771850954518910,	-0.980762091837344530,	-0.980752330268264920,	-0.980742566247304380,	-0.980732799774487570,	-0.980723030849838700,	-0.980713259473382170,	-0.980703485645142430,	
+-0.980693709365144110,	-0.980683930633411530,	-0.980674149449969110,	-0.980664365814841290,	-0.980654579728052590,	-0.980644791189627330,	-0.980635000199590160,	-0.980625206757965500,	
+-0.980615410864777880,	-0.980605612520051740,	-0.980595811723811490,	-0.980586008476081790,	-0.980576202776887060,	-0.980566394626251720,	-0.980556584024200320,	-0.980546770970757600,	
+-0.980536955465947990,	-0.980527137509796030,	-0.980517317102326150,	-0.980507494243562980,	-0.980497668933530850,	-0.980487841172254850,	-0.980478010959759170,	-0.980468178296068470,	
+-0.980458343181207390,	-0.980448505615200360,	-0.980438665598072130,	-0.980428823129847140,	-0.980418978210550240,	-0.980409130840205760,	-0.980399281018838330,	-0.980389428746472950,	
+-0.980379574023133920,	-0.980369716848845880,	-0.980359857223633610,	-0.980349995147521640,	-0.980340130620534710,	-0.980330263642697490,	-0.980320394214034610,	-0.980310522334570830,	
+-0.980300648004330590,	-0.980290771223338850,	-0.980280891991620160,	-0.980271010309199280,	-0.980261126176100730,	-0.980251239592349390,	-0.980241350557970010,	-0.980231459072987250,	
+-0.980221565137425870,	-0.980211668751310490,	-0.980201769914666010,	-0.980191868627516950,	-0.980181964889888400,	-0.980172058701804900,	-0.980162150063291330,	-0.980152238974372310,	
+-0.980142325435072740,	-0.980132409445417240,	-0.980122491005430810,	-0.980112570115138190,	-0.980102646774563930,	-0.980092720983733230,	-0.980082792742670740,	-0.980072862051401210,	
+-0.980062928909949620,	-0.980052993318340620,	-0.980043055276598960,	-0.980033114784749860,	-0.980023171842818060,	-0.980013226450828220,	-0.980003278608805320,	-0.979993328316774330,	
+-0.979983375574759900,	-0.979973420382787120,	-0.979963462740880750,	-0.979953502649065560,	-0.979943540107366730,	-0.979933575115809140,	-0.979923607674417550,	-0.979913637783216940,	
+-0.979903665442232290,	-0.979893690651488240,	-0.979883713411010100,	-0.979873733720822760,	-0.979863751580951070,	-0.979853766991420020,	-0.979843779952254580,	-0.979833790463479630,	
+-0.979823798525120250,	-0.979813804137201320,	-0.979803807299747920,	-0.979793808012784820,	-0.979783806276337320,	-0.979773802090430300,	-0.979763795455088850,	-0.979753786370337940,	
+-0.979743774836202340,	-0.979733760852707470,	-0.979723744419878200,	-0.979713725537739500,	-0.979703704206316580,	-0.979693680425634430,	-0.979683654195718010,	-0.979673625516592540,	
+-0.979663594388282880,	-0.979653560810814340,	-0.979643524784211680,	-0.979633486308500330,	-0.979623445383705380,	-0.979613402009851700,	-0.979603356186964590,	-0.979593307915068930,	
+-0.979583257194190150,	-0.979573204024353220,	-0.979563148405583230,	-0.979553090337905390,	-0.979543029821344890,	-0.979532966855926720,	-0.979522901441676200,	-0.979512833578618510,	
+-0.979502763266778650,	-0.979492690506181710,	-0.979482615296853210,	-0.979472537638818140,	-0.979462457532101700,	-0.979452374976729210,	-0.979442289972725750,	-0.979432202520116420,	
+-0.979422112618926750,	-0.979412020269181730,	-0.979401925470906760,	-0.979391828224126960,	-0.979381728528867510,	-0.979371626385153740,	-0.979361521793010950,	-0.979351414752464340,	
+-0.979341305263539130,	-0.979331193326260730,	-0.979321078940654340,	-0.979310962106745290,	-0.979300842824558760,	-0.979290721094120190,	-0.979280596915454660,	-0.979270470288587710,	
+-0.979260341213544660,	-0.979250209690350810,	-0.979240075719031380,	-0.979229939299611770,	-0.979219800432117320,	-0.979209659116573320,	-0.979199515353005200,	-0.979189369141438280,	
+-0.979179220481897760,	-0.979169069374409400,	-0.979158915818998390,	-0.979148759815690050,	-0.979138601364509810,	-0.979128440465482860,	-0.979118277118635080,	-0.979108111323991560,	
+-0.979097943081577720,	-0.979087772391419090,	-0.979077599253540990,	-0.979067423667968840,	-0.979057245634728180,	-0.979047065153844430,	-0.979036882225343020,	-0.979026696849249260,	
+-0.979016509025588900,	-0.979006318754387150,	-0.978996126035669770,	-0.978985930869461950,	-0.978975733255789240,	-0.978965533194677270,	-0.978955330686151590,	-0.978945125730237510,	
+-0.978934918326960560,	-0.978924708476346380,	-0.978914496178420410,	-0.978904281433208290,	-0.978894064240735330,	-0.978883844601027290,	-0.978873622514109480,	-0.978863397980007770,	
+-0.978853170998747470,	-0.978842941570354340,	-0.978832709694853920,	-0.978822475372271630,	-0.978812238602633000,	-0.978801999385963910,	-0.978791757722289880,	-0.978781513611636340,	
+-0.978771267054029170,	-0.978761018049493780,	-0.978750766598055820,	-0.978740512699740940,	-0.978730256354574780,	-0.978719997562582880,	-0.978709736323791100,	-0.978699472638224990,	
+-0.978689206505910180,	-0.978678937926872330,	-0.978668666901137190,	-0.978658393428730180,	-0.978648117509677400,	-0.978637839144004260,	-0.978627558331736540,	-0.978617275072899970,	
+-0.978606989367520220,	-0.978596701215622920,	-0.978586410617233950,	-0.978576117572378950,	-0.978565822081083450,	-0.978555524143373550,	-0.978545223759274880,	-0.978534920928813110,	
+-0.978524615652014100,	-0.978514307928903480,	-0.978503997759506920,	-0.978493685143850600,	-0.978483370081959960,	-0.978473052573861080,	-0.978462732619579390,	-0.978452410219140980,	
+-0.978442085372571490,	-0.978431758079896800,	-0.978421428341142760,	-0.978411096156335040,	-0.978400761525499480,	-0.978390424448662200,	-0.978380084925848830,	-0.978369742957085230,	
+-0.978359398542397280,	-0.978349051681810740,	-0.978338702375351700,	-0.978328350623045910,	-0.978317996424919230,	-0.978307639780997550,	-0.978297280691306730,	-0.978286919155872740,	
+-0.978276555174721450,	-0.978266188747878850,	-0.978255819875370690,	-0.978245448557222840,	-0.978235074793461610,	-0.978224698584112540,	-0.978214319929201830,	-0.978203938828755340,	
+-0.978193555282798940,	-0.978183169291358510,	-0.978172780854460240,	-0.978162389972130120,	-0.978151996644394010,	-0.978141600871277990,	-0.978131202652807840,	-0.978120801989009750,	
+-0.978110398879909580,	-0.978099993325533430,	-0.978089585325907170,	-0.978079174881057110,	-0.978068761991009120,	-0.978058346655789280,	-0.978047928875423470,	-0.978037508649937880,	
+-0.978027085979358390,	-0.978016660863711310,	-0.978006233303022610,	-0.977995803297318280,	-0.977985370846624400,	-0.977974935950967180,	-0.977964498610372600,	-0.977954058824866750,	
+-0.977943616594475820,	-0.977933171919225570,	-0.977922724799142660,	-0.977912275234252950,	-0.977901823224582410,	-0.977891368770157480,	-0.977880911871004010,	-0.977870452527148100,	
+-0.977859990738616290,	-0.977849526505434550,	-0.977839059827628860,	-0.977828590705225650,	-0.977818119138250900,	-0.977807645126730800,	-0.977797168670691660,	-0.977786689770159590,	
+-0.977776208425160780,	-0.977765724635721310,	-0.977755238401867620,	-0.977744749723625910,	-0.977734258601022250,	-0.977723765034083090,	-0.977713269022834170,	-0.977702770567302370,	
+-0.977692269667513550,	-0.977681766323494130,	-0.977671260535270310,	-0.977660752302868310,	-0.977650241626314420,	-0.977639728505634960,	-0.977629212940856140,	-0.977618694932004260,	
+-0.977608174479105530,	-0.977597651582186480,	-0.977587126241273420,	-0.977576598456392440,	-0.977566068227569970,	-0.977555535554832320,	-0.977545000438205690,	-0.977534462877716730,	
+-0.977523922873391630,	-0.977513380425256710,	-0.977502835533338390,	-0.977492288197662870,	-0.977481738418256700,	-0.977471186195146170,	-0.977460631528357720,	-0.977450074417917420,	
+-0.977439514863852170,	-0.977428952866188140,	-0.977418388424951770,	-0.977407821540169360,	-0.977397252211867350,	-0.977386680440072150,	-0.977376106224810300,	-0.977365529566108340,	
+-0.977354950463992460,	-0.977344368918489190,	-0.977333784929625080,	-0.977323198497426440,	-0.977312609621919790,	-0.977302018303131680,	-0.977291424541088300,	-0.977280828335816530,	
+-0.977270229687342670,	-0.977259628595693260,	-0.977249025060894840,	-0.977238419082973820,	-0.977227810661956520,	-0.977217199797869920,	-0.977206586490740330,	-0.977195970740594280,	
+-0.977185352547458310,	-0.977174731911358950,	-0.977164108832322740,	-0.977153483310376210,	-0.977142855345546010,	-0.977132224937858670,	-0.977121592087340620,	-0.977110956794018830,	
+-0.977100319057919500,	-0.977089678879069500,	-0.977079036257495260,	-0.977068391193223200,	-0.977057743686280400,	-0.977047093736693180,	-0.977036441344488300,	-0.977025786509692300,	
+-0.977015129232331800,	-0.977004469512433580,	-0.976993807350024060,	-0.976983142745130100,	-0.976972475697778230,	-0.976961806207995000,	-0.976951134275807490,	-0.976940459901242120,	
+-0.976929783084325540,	-0.976919103825084620,	-0.976908422123545780,	-0.976897737979735780,	-0.976887051393681700,	-0.976876362365409870,	-0.976865670894947250,	-0.976854976982320380,	
+-0.976844280627556020,	-0.976833581830681030,	-0.976822880591722060,	-0.976812176910705990,	-0.976801470787659110,	-0.976790762222608850,	-0.976780051215581760,	-0.976769337766604350,	
+-0.976758621875703730,	-0.976747903542906530,	-0.976737182768239400,	-0.976726459551729430,	-0.976715733893403380,	-0.976705005793288010,	-0.976694275251410060,	-0.976683542267796520,	
+-0.976672806842474040,	-0.976662068975469590,	-0.976651328666809930,	-0.976640585916521700,	-0.976629840724632330,	-0.976619093091168230,	-0.976608343016156510,	-0.976597590499623910,	
+-0.976586835541597310,	-0.976576078142103340,	-0.976565318301169550,	-0.976554556018822350,	-0.976543791295088730,	-0.976533024129995760,	-0.976522254523570110,	-0.976511482475838850,	
+-0.976500707986828980,	-0.976489931056567230,	-0.976479151685080700,	-0.976468369872396050,	-0.976457585618540680,	-0.976446798923541360,	-0.976436009787425060,	-0.976425218210218770,	
+-0.976414424191949240,	-0.976403627732643780,	-0.976392828832329250,	-0.976382027491032640,	-0.976371223708781040,	-0.976360417485601320,	-0.976349608821520550,	-0.976338797716565840,	
+-0.976327984170764050,	-0.976317168184142380,	-0.976306349756727480,	-0.976295528888546980,	-0.976284705579627650,	-0.976273879829996580,	-0.976263051639680750,	-0.976252221008707340,	
+-0.976241387937103130,	-0.976230552424895650,	-0.976219714472111870,	-0.976208874078778770,	-0.976198031244923440,	-0.976187185970573080,	-0.976176338255754780,	-0.976165488100495530,	
+-0.976154635504822620,	-0.976143780468762930,	-0.976132922992344000,	-0.976122063075592790,	-0.976111200718536300,	-0.976100335921201930,	-0.976089468683616680,	-0.976078599005807510,	
+-0.976067726887802190,	-0.976056852329627360,	-0.976045975331310540,	-0.976035095892878730,	-0.976024214014359240,	-0.976013329695779140,	-0.976002442937165760,	-0.975991553738546180,	
+-0.975980662099947600,	-0.975969768021397570,	-0.975958871502923150,	-0.975947972544551460,	-0.975937071146309900,	-0.975926167308225680,	-0.975915261030325780,	-0.975904352312637950,	
+-0.975893441155189280,	-0.975882527558006970,	-0.975871611521118340,	-0.975860693044550700,	-0.975849772128331240,	-0.975838848772487500,	-0.975827922977046570,	-0.975816994742035760,	
+-0.975806064067482380,	-0.975795130953413970,	-0.975784195399857720,	-0.975773257406841070,	-0.975762316974391200,	-0.975751374102535430,	-0.975740428791301300,	-0.975729481040716220,	
+-0.975718530850807290,	-0.975707578221602150,	-0.975696623153128000,	-0.975685665645412370,	-0.975674705698482580,	-0.975663743312365940,	-0.975652778487089980,	-0.975641811222681900,	
+-0.975630841519169460,	-0.975619869376579850,	-0.975608894794940730,	-0.975597917774279290,	-0.975586938314622950,	-0.975575956415999260,	-0.975564972078435730,	-0.975553985301959800,	
+-0.975542996086599000,	-0.975532004432380640,	-0.975521010339332250,	-0.975510013807481370,	-0.975499014836855420,	-0.975488013427481930,	-0.975477009579388320,	-0.975466003292602250,	
+-0.975454994567151230,	-0.975443983403062710,	-0.975432969800364200,	-0.975421953759083360,	-0.975410935279247380,	-0.975399914360884250,	-0.975388891004021370,	-0.975377865208686190,	
+-0.975366836974906450,	-0.975355806302709570,	-0.975344773192123090,	-0.975333737643174770,	-0.975322699655892130,	-0.975311659230302500,	-0.975300616366433950,	-0.975289571064313800,	
+-0.975278523323969800,	-0.975267473145429390,	-0.975256420528720410,	-0.975245365473870090,	-0.975234307980906600,	-0.975223248049857380,	-0.975212185680749970,	-0.975201120873612100,	
+-0.975190053628471440,	-0.975178983945355740,	-0.975167911824292410,	-0.975156837265309440,	-0.975145760268434360,	-0.975134680833694590,	-0.975123598961118440,	-0.975112514650733230,	
+-0.975101427902566710,	-0.975090338716646630,	-0.975079247093000530,	-0.975068153031656500,	-0.975057056532642070,	-0.975045957595985000,	-0.975034856221713040,	-0.975023752409853950,	
+-0.975012646160435480,	-0.975001537473485390,	-0.974990426349031550,	-0.974979312787101480,	-0.974968196787723060,	-0.974957078350924270,	-0.974945957476732850,	-0.974934834165176460,	
+-0.974923708416283060,	-0.974912580230080320,	-0.974901449606595970,	-0.974890316545858230,	-0.974879181047894620,	-0.974868043112733120,	-0.974856902740401490,	-0.974845759930927590,	
+-0.974834614684339300,	-0.974823467000664470,	-0.974812316879930970,	-0.974801164322166460,	-0.974790009327399340,	-0.974778851895657050,	-0.974767692026967780,	-0.974756529721359180,	
+-0.974745364978859330,	-0.974734197799495770,	-0.974723028183296920,	-0.974711856130290540,	-0.974700681640504610,	-0.974689504713966870,	-0.974678325350705420,	-0.974667143550748130,	
+-0.974655959314122970,	-0.974644772640857910,	-0.974633583530980730,	-0.974622391984519830,	-0.974611198001502870,	-0.974600001581957920,	-0.974588802725913080,	-0.974577601433396110,	
+-0.974566397704434980,	-0.974555191539058120,	-0.974543982937293160,	-0.974532771899168320,	-0.974521558424711550,	-0.974510342513950860,	-0.974499124166914310,	-0.974487903383630010,	
+-0.974476680164125920,	-0.974465454508430140,	-0.974454226416570420,	-0.974442995888575410,	-0.974431762924472980,	-0.974420527524291090,	-0.974409289688057840,	-0.974398049415801220,	
+-0.974386806707549620,	-0.974375561563331050,	-0.974364313983173580,	-0.974353063967105300,	-0.974341811515154420,	-0.974330556627348910,	-0.974319299303717080,	-0.974308039544287020,	
+-0.974296777349086820,	-0.974285512718144450,	-0.974274245651488570,	-0.974262976149147030,	-0.974251704211148040,	-0.974240429837519790,	-0.974229153028290500,	-0.974217873783488120,	
+-0.974206592103141310,	-0.974195307987277940,	-0.974184021435926310,	-0.974172732449114620,	-0.974161441026871190,	-0.974150147169223990,	-0.974138850876201560,	-0.974127552147831980,	
+-0.974116250984143340,	-0.974104947385164180,	-0.974093641350922690,	-0.974082332881447190,	-0.974071021976765760,	-0.974059708636906720,	-0.974048392861898370,	-0.974037074651769140,	
+-0.974025754006547230,	-0.974014430926260940,	-0.974003105410938600,	-0.973991777460608390,	-0.973980447075298850,	-0.973969114255038180,	-0.973957778999854700,	-0.973946441309776590,	
+-0.973935101184832620,	-0.973923758625050760,	-0.973912413630459660,	-0.973901066201087410,	-0.973889716336962530,	-0.973878364038113230,	-0.973867009304568150,	-0.973855652136355500,	
+-0.973844292533503800,	-0.973832930496041360,	-0.973821566023996610,	-0.973810199117397860,	-0.973798829776273740,	-0.973787458000652470,	-0.973776083790562570,	-0.973764707146032250,	
+-0.973753328067090360,	-0.973741946553765110,	-0.973730562606085040,	-0.973719176224078550,	-0.973707787407773970,	-0.973696396157200050,	-0.973685002472385210,	-0.973673606353357870,	
+-0.973662207800146450,	-0.973650806812779600,	-0.973639403391285630,	-0.973627997535693180,	-0.973616589246030780,	-0.973605178522326860,	-0.973593765364609840,	-0.973582349772908580,	
+-0.973570931747251400,	-0.973559511287666930,	-0.973548088394183720,	-0.973536663066830180,	-0.973525235305634950,	-0.973513805110626680,	-0.973502372481834020,	-0.973490937419285270,	
+-0.973479499923009310,	-0.973468059993034540,	-0.973456617629389730,	-0.973445172832103300,	-0.973433725601203890,	-0.973422275936720040,	-0.973410823838680610,	-0.973399369307114240,	
+-0.973387912342049360,	-0.973376452943514710,	-0.973364991111538960,	-0.973353526846150510,	-0.973342060147378450,	-0.973330591015251210,	-0.973319119449797540,	-0.973307645451046090,	
+-0.973296169019025490,	-0.973284690153764510,	-0.973273208855291670,	-0.973261725123635960,	-0.973250238958825680,	-0.973238750360890030,	-0.973227259329857430,	-0.973215765865756750,	
+-0.973204269968616640,	-0.973192771638465850,	-0.973181270875332900,	-0.973169767679247010,	-0.973158262050236700,	-0.973146753988330730,	-0.973135243493557960,	-0.973123730565946920,	
+-0.973112215205526710,	-0.973100697412325850,	-0.973089177186373330,	-0.973077654527697790,	-0.973066129436327980,	-0.973054601912292980,	-0.973043071955621560,	-0.973031539566342360,	
+-0.973020004744484360,	-0.973008467490076190,	-0.972996927803146950,	-0.972985385683725500,	-0.972973841131840490,	-0.972962294147521000,	-0.972950744730795680,	-0.972939192881693500,	
+-0.972927638600243340,	-0.972916081886474160,	-0.972904522740414720,	-0.972892961162093780,	-0.972881397151540650,	-0.972869830708783970,	-0.972858261833852710,	-0.972846690526775860,	
+-0.972835116787582050,	-0.972823540616300720,	-0.972811962012960500,	-0.972800380977590250,	-0.972788797510219180,	-0.972777211610876160,	-0.972765623279590040,	-0.972754032516389810,	
+-0.972742439321304550,	-0.972730843694363250,	-0.972719245635594530,	-0.972707645145027940,	-0.972696042222692240,	-0.972684436868616500,	-0.972672829082829590,	-0.972661218865360610,	
+-0.972649606216238420,	-0.972637991135492430,	-0.972626373623151410,	-0.972614753679244440,	-0.972603131303800720,	-0.972591506496849000,	-0.972579879258418600,	-0.972568249588538490,	
+-0.972556617487237760,	-0.972544982954545280,	-0.972533345990490570,	-0.972521706595102510,	-0.972510064768410180,	-0.972498420510442660,	-0.972486773821229060,	-0.972475124700798330,	
+-0.972463473149180020,	-0.972451819166403000,	-0.972440162752496450,	-0.972428503907489470,	-0.972416842631411260,	-0.972405178924291010,	-0.972393512786157710,	-0.972381844217040660,	
+-0.972370173216968840,	-0.972358499785971770,	-0.972346823924078340,	-0.972335145631317950,	-0.972323464907719700,	-0.972311781753312790,	-0.972300096168126180,	-0.972288408152189640,	
+-0.972276717705532030,	-0.972265024828182560,	-0.972253329520170520,	-0.972241631781525230,	-0.972229931612275890,	-0.972218229012451580,	-0.972206523982081850,	-0.972194816521195770,	
+-0.972183106629822320,	-0.972171394307991490,	-0.972159679555732130,	-0.972147962373073440,	-0.972136242760044960,	-0.972124520716675660,	-0.972112796242995290,	-0.972101069339032840,	
+-0.972089340004817840,	-0.972077608240379360,	-0.972065874045746960,	-0.972054137420949820,	-0.972042398366017360,	-0.972030656880978890,	-0.972018912965863740,	-0.972007166620701190,	
+-0.971995417845520900,	-0.971983666640352070,	-0.971971913005224010,	-0.971960156940166240,	-0.971948398445208080,	-0.971936637520378620,	-0.971924874165707830,	-0.971913108381224910,	
+-0.971901340166959170,	-0.971889569522940140,	-0.971877796449197140,	-0.971866020945759580,	-0.971854243012657100,	-0.971842462649918910,	-0.971830679857574430,	-0.971818894635653410,	
+-0.971807106984185150,	-0.971795316903199090,	-0.971783524392724860,	-0.971771729452791670,	-0.971759932083429030,	-0.971748132284666830,	-0.971736330056534260,	-0.971724525399060850,	
+-0.971712718312276010,	-0.971700908796209520,	-0.971689096850890780,	-0.971677282476349210,	-0.971665465672614470,	-0.971653646439715860,	-0.971641824777683240,	-0.971630000686546150,	
+-0.971618174166334110,	-0.971606345217076560,	-0.971594513838803240,	-0.971582680031543360,	-0.971570843795326990,	-0.971559005130183450,	-0.971547164036142500,	-0.971535320513233550,	
+-0.971523474561486360,	-0.971511626180930450,	-0.971499775371595490,	-0.971487922133511090,	-0.971476066466706920,	-0.971464208371212390,	-0.971452347847057470,	-0.971440484894271710,	
+-0.971428619512884730,	-0.971416751702926300,	-0.971404881464425610,	-0.971393008797413080,	-0.971381133701917920,	-0.971369256177969990,	-0.971357376225598920,	-0.971345493844834370,	
+-0.971333609035706090,	-0.971321721798243830,	-0.971309832132477240,	-0.971297940038436060,	-0.971286045516149830,	-0.971274148565648750,	-0.971262249186962250,	-0.971250347380120060,	
+-0.971238443145152060,	-0.971226536482088010,	-0.971214627390957320,	-0.971202715871790300,	-0.971190801924616600,	-0.971178885549465740,	-0.971166966746367710,	-0.971155045515352260,	
+-0.971143121856449240,	-0.971131195769688430,	-0.971119267255099560,	-0.971107336312712400,	-0.971095402942557030,	-0.971083467144663090,	-0.971071528919060680,	-0.971059588265779320,	
+-0.971047645184848980,	-0.971035699676299320,	-0.971023751740160650,	-0.971011801376462590,	-0.970999848585235030,	-0.970987893366507930,	-0.970975935720310930,	-0.970963975646674250,	
+-0.970952013145627510,	-0.970940048217200810,	-0.970928080861423790,	-0.970916111078326760,	-0.970904138867939360,	-0.970892164230291790,	-0.970880187165413690,	-0.970868207673335150,	
+-0.970856225754085810,	-0.970844241407696210,	-0.970832254634195980,	-0.970820265433615100,	-0.970808273805983670,	-0.970796279751331430,	-0.970784283269688460,	-0.970772284361084870,	
+-0.970760283025550510,	-0.970748279263115470,	-0.970736273073809610,	-0.970724264457663130,	-0.970712253414706130,	-0.970700239944968350,	-0.970688224048480100,	-0.970676205725271020,	
+-0.970664184975371660,	-0.970652161798811750,	-0.970640136195621510,	-0.970628108165830890,	-0.970616077709470120,	-0.970604044826569030,	-0.970592009517157850,	-0.970579971781266650,	
+-0.970567931618925520,	-0.970555889030164430,	-0.970543844015013700,	-0.970531796573503520,	-0.970519746705663660,	-0.970507694411524620,	-0.970495639691116190,	-0.970483582544468540,	
+-0.970471522971612100,	-0.970459460972576850,	-0.970447396547392980,	-0.970435329696090590,	-0.970423260418699970,	-0.970411188715251120,	-0.970399114585774330,	-0.970387038030299690,	
+-0.970374959048857290,	-0.970362877641477660,	-0.970350793808190890,	-0.970338707549027070,	-0.970326618864016610,	-0.970314527753189490,	-0.970302434216575800,	-0.970290338254206410,	
+-0.970278239866111060,	-0.970266139052320060,	-0.970254035812863850,	-0.970241930147772490,	-0.970229822057076200,	-0.970217711540805490,	-0.970205598598990470,	-0.970193483231661210,	
+-0.970181365438848480,	-0.970169245220582340,	-0.970157122576893130,	-0.970144997507811020,	-0.970132870013366460,	-0.970120740093589510,	-0.970108607748510930,	-0.970096472978160820,	
+-0.970084335782569580,	-0.970072196161767430,	-0.970060054115784780,	-0.970047909644652040,	-0.970035762748399530,	-0.970023613427057670,	-0.970011461680656660,	-0.969999307509226800,	
+-0.969987150912798970,	-0.969974991891403240,	-0.969962830445069920,	-0.969950666573829670,	-0.969938500277712450,	-0.969926331556749230,	-0.969914160410970230,	-0.969901986840405740,	
+-0.969889810845086300,	-0.969877632425042320,	-0.969865451580304350,	-0.969853268310902680,	-0.969841082616867860,	-0.969828894498230290,	-0.969816703955020290,	-0.969804510987268830,	
+-0.969792315595006000,	-0.969780117778262340,	-0.969767917537068480,	-0.969755714871454840,	-0.969743509781451630,	-0.969731302267089810,	-0.969719092328399810,	-0.969706879965412160,	
+-0.969694665178157170,	-0.969682447966665580,	-0.969670228330967940,	-0.969658006271094660,	-0.969645781787076280,	-0.969633554878943320,	-0.969621325546726750,	-0.969609093790456790,	
+-0.969596859610164060,	-0.969584623005879220,	-0.969572383977632900,	-0.969560142525455300,	-0.969547898649377630,	-0.969535652349430180,	-0.969523403625643600,	-0.969511152478048420,	
+-0.969498898906675510,	-0.969486642911555290,	-0.969474384492718500,	-0.969462123650195680,	-0.969449860384017370,	-0.969437594694214640,	-0.969425326580817930,	-0.969413056043857860,	
+-0.969400783083365190,	-0.969388507699370460,	-0.969376229891904420,	-0.969363949660997930,	-0.969351667006681520,	-0.969339381928985940,	-0.969327094427942070,	-0.969314804503580320,	
+-0.969302512155931550,	-0.969290217385026520,	-0.969277920190895980,	-0.969265620573570690,	-0.969253318533081050,	-0.969241014069458400,	-0.969228707182733130,	-0.969216397872936120,	
+-0.969204086140098120,	-0.969191771984249660,	-0.969179455405422050,	-0.969167136403645820,	-0.969154814978951620,	-0.969142491131370520,	-0.969130164860933170,	-0.969117836167670330,	
+-0.969105505051612970,	-0.969093171512791840,	-0.969080835551237700,	-0.969068497166981400,	-0.969056156360053930,	-0.969043813130486150,	-0.969031467478308820,	-0.969019119403552900,	
+-0.969006768906249040,	-0.968994415986428100,	-0.968982060644121400,	-0.968969702879359460,	-0.968957342692173260,	-0.968944980082593780,	-0.968932615050651870,	-0.968920247596378290,	
+-0.968907877719804240,	-0.968895505420960370,	-0.968883130699877530,	-0.968870753556587140,	-0.968858373991119850,	-0.968845992003506630,	-0.968833607593778460,	-0.968821220761966200,	
+-0.968808831508100710,	-0.968796439832213420,	-0.968784045734334960,	-0.968771649214496430,	-0.968759250272728690,	-0.968746848909062930,	-0.968734445123529910,	-0.968722038916160930,	
+-0.968709630286986760,	-0.968697219236038350,	-0.968684805763347030,	-0.968672389868943770,	-0.968659971552859540,	-0.968647550815125320,	-0.968635127655772310,	-0.968622702074831140,	
+-0.968610274072333580,	-0.968597843648310250,	-0.968585410802792260,	-0.968572975535810900,	-0.968560537847396930,	-0.968548097737581770,	-0.968535655206396280,	-0.968523210253871670,	
+-0.968510762880039010,	-0.968498313084929290,	-0.968485860868573910,	-0.968473406231003970,	-0.968460949172250450,	-0.968448489692344540,	-0.968436027791317210,	-0.968423563469200110,	
+-0.968411096726023990,	-0.968398627561820160,	-0.968386155976619810,	-0.968373681970454040,	-0.968361205543354140,	-0.968348726695351100,	-0.968336245426476340,	-0.968323761736760940,	
+-0.968311275626235870,	-0.968298787094932890,	-0.968286296142882860,	-0.968273802770117210,	-0.968261306976666900,	-0.968248808762563470,	-0.968236308127837670,	-0.968223805072521370,	
+-0.968211299596645650,	-0.968198791700241590,	-0.968186281383340620,	-0.968173768645973820,	-0.968161253488172720,	-0.968148735909968420,	-0.968136215911392320,	-0.968123693492475400,	
+-0.968111168653249530,	-0.968098641393745800,	-0.968086111713995390,	-0.968073579614029620,	-0.968061045093880020,	-0.968048508153577570,	-0.968035968793154010,	-0.968023427012640550,	
+-0.968010882812068600,	-0.967998336191469360,	-0.967985787150874240,	-0.967973235690314790,	-0.967960681809822200,	-0.967948125509427880,	-0.967935566789163040,	-0.967923005649059420,	
+-0.967910442089148340,	-0.967897876109461210,	-0.967885307710029340,	-0.967872736890884270,	-0.967860163652057070,	-0.967847587993579730,	-0.967835009915483320,	-0.967822429417799500,	
+-0.967809846500559570,	-0.967797261163794940,	-0.967784673407537270,	-0.967772083231817850,	-0.967759490636668220,	-0.967746895622119910,	-0.967734298188204110,	-0.967721698334952810,	
+-0.967709096062397300,	-0.967696491370569010,	-0.967683884259499470,	-0.967671274729219990,	-0.967658662779762650,	-0.967646048411158530,	-0.967633431623439400,	-0.967620812416636560,	
+-0.967608190790781750,	-0.967595566745906520,	-0.967582940282042280,	-0.967570311399220780,	-0.967557680097473450,	-0.967545046376831700,	-0.967532410237327500,	-0.967519771678992390,	
+-0.967507130701857790,	-0.967494487305955330,	-0.967481841491316660,	-0.967469193257973200,	-0.967456542605957040,	-0.967443889535299470,	-0.967431234046032150,	-0.967418576138186710,	
+-0.967405915811794910,	-0.967393253066888280,	-0.967380587903498570,	-0.967367920321657300,	-0.967355250321396130,	-0.967342577902746910,	-0.967329903065741400,	-0.967317225810411020,	
+-0.967304546136787620,	-0.967291864044902860,	-0.967279179534788150,	-0.967266492606475790,	-0.967253803259997210,	-0.967241111495384050,	-0.967228417312668180,	-0.967215720711881220,	
+-0.967203021693054940,	-0.967190320256221200,	-0.967177616401411640,	-0.967164910128657680,	-0.967152201437991850,	-0.967139490329445460,	-0.967126776803050260,	-0.967114060858838220,	
+-0.967101342496840990,	-0.967088621717090090,	-0.967075898519617950,	-0.967063172904456090,	-0.967050444871636270,	-0.967037714421190350,	-0.967024981553150200,	-0.967012246267547450,	
+-0.966999508564414190,	-0.966986768443782170,	-0.966974025905683150,	-0.966961280950148880,	-0.966948533577211670,	-0.966935783786903040,	-0.966923031579255080,	-0.966910276954299430,	
+-0.966897519912067850,	-0.966884760452592750,	-0.966871998575905780,	-0.966859234282038790,	-0.966846467571023660,	-0.966833698442892460,	-0.966820926897676960,	-0.966808152935409120,	
+-0.966795376556120910,	-0.966782597759844320,	-0.966769816546610870,	-0.966757032916453210,	-0.966744246869402970,	-0.966731458405492130,	-0.966718667524752550,	-0.966705874227216430,	
+-0.966693078512915300,	-0.966680280381881700,	-0.966667479834147470,	-0.966654676869744490,	-0.966641871488704840,	-0.966629063691060500,	-0.966616253476843430,	-0.966603440846085850,	
+-0.966590625798819600,	-0.966577808335076560,	-0.966564988454889250,	-0.966552166158289540,	-0.966539341445309290,	-0.966526514315980690,	-0.966513684770335950,	-0.966500852808406590,	
+-0.966488018430225470,	-0.966475181635824240,	-0.966462342425234990,	-0.966449500798490010,	-0.966436656755621180,	-0.966423810296660800,	-0.966410961421640850,	-0.966398110130593510,	
+-0.966385256423550660,	-0.966372400300544830,	-0.966359541761608100,	-0.966346680806772440,	-0.966333817436070050,	-0.966320951649533240,	-0.966308083447193770,	-0.966295212829084260,	
+-0.966282339795236810,	-0.966269464345683500,	-0.966256586480456430,	-0.966243706199587990,	-0.966230823503110290,	-0.966217938391055520,	-0.966205050863455870,	-0.966192160920343550,	
+-0.966179268561750740,	-0.966166373787709860,	-0.966153476598253120,	-0.966140576993412600,	-0.966127674973220720,	-0.966114770537709440,	-0.966101863686911420,	-0.966088954420858740,	
+-0.966076042739583700,	-0.966063128643118500,	-0.966050212131495560,	-0.966037293204746960,	-0.966024371862905240,	-0.966011448106002590,	-0.965998521934071320,	-0.965985593347143400,	
+-0.965972662345251810,	-0.965959728928428630,	-0.965946793096706060,	-0.965933854850116510,	-0.965920914188692080,	-0.965907971112465620,	-0.965895025621469230,	-0.965882077715735310,	
+-0.965869127395296180,	-0.965856174660184140,	-0.965843219510431730,	-0.965830261946071360,	-0.965817301967135220,	-0.965804339573655860,	-0.965791374765665460,	-0.965778407543196770,	
+-0.965765437906282110,	-0.965752465854953890,	-0.965739491389244420,	-0.965726514509186230,	-0.965713535214811620,	-0.965700553506153360,	-0.965687569383243740,	-0.965674582846115070,	
+-0.965661593894800110,	-0.965648602529331050,	-0.965635608749740530,	-0.965622612556060970,	-0.965609613948324900,	-0.965596612926564510,	-0.965583609490812900,	-0.965570603641102250,	
+-0.965557595377465110,	-0.965544584699933870,	-0.965531571608541310,	-0.965518556103319490,	-0.965505538184301510,	-0.965492517851519790,	-0.965479495105006640,	-0.965466469944794900,	
+-0.965453442370916900,	-0.965440412383405280,	-0.965427379982292670,	-0.965414345167611600,	-0.965401307939394600,	-0.965388268297674210,	-0.965375226242483290,	-0.965362181773854360,	
+-0.965349134891819950,	-0.965336085596412710,	-0.965323033887665050,	-0.965309979765609950,	-0.965296923230280050,	-0.965283864281707760,	-0.965270802919925730,	-0.965257739144966820,	
+-0.965244672956863450,	-0.965231604355648480,	-0.965218533341354550,	-0.965205459914014190,	-0.965192384073659930,	-0.965179305820325070,	-0.965166225154041820,	-0.965153142074843040,	
+-0.965140056582761470,	-0.965126968677829430,	-0.965113878360080220,	-0.965100785629546380,	-0.965087690486260530,	-0.965074592930255440,	-0.965061492961563960,	-0.965048390580218630,	
+-0.965035285786252420,	-0.965022178579697850,	-0.965009068960588020,	-0.964995956928955120,	-0.964982842484832680,	-0.964969725628253120,	-0.964956606359249180,	-0.964943484677853740,	
+-0.964930360584099640,	-0.964917234078019440,	-0.964904105159646310,	-0.964890973829012900,	-0.964877840086152070,	-0.964864703931096690,	-0.964851565363879500,	-0.964838424384533490,	
+-0.964825280993091280,	-0.964812135189585970,	-0.964798986974050090,	-0.964785836346516930,	-0.964772683307019150,	-0.964759527855589720,	-0.964746369992261490,	-0.964733209717067220,	
+-0.964720047030039770,	-0.964706881931212460,	-0.964693714420617910,	-0.964680544498289110,	-0.964667372164258910,	-0.964654197418560290,	-0.964641020261226220,	-0.964627840692289570,	
+-0.964614658711783310,	-0.964601474319740190,	-0.964588287516193630,	-0.964575098301176270,	-0.964561906674721190,	-0.964548712636861370,	-0.964535516187629780,	-0.964522317327059180,	
+-0.964509116055182970,	-0.964495912372034030,	-0.964482706277645320,	-0.964469497772049820,	-0.964456286855280510,	-0.964443073527370580,	-0.964429857788352880,	-0.964416639638260630,	
+-0.964403419077126680,	-0.964390196104984000,	-0.964376970721866010,	-0.964363742927805690,	-0.964350512722836010,	-0.964337280106989940,	-0.964324045080300560,	-0.964310807642801190,	
+-0.964297567794524910,	-0.964284325535504580,	-0.964271080865773510,	-0.964257833785364780,	-0.964244584294311480,	-0.964231332392646580,	-0.964218078080403500,	-0.964204821357615090,	
+-0.964191562224314570,	-0.964178300680535230,	-0.964165036726310150,	-0.964151770361672540,	-0.964138501586655480,	-0.964125230401292170,	-0.964111956805615570,	-0.964098680799659210,	
+-0.964085402383456300,	-0.964072121557039810,	-0.964058838320442920,	-0.964045552673699070,	-0.964032264616841330,	-0.964018974149902900,	-0.964005681272916970,	-0.963992385985916740,	
+-0.963979088288935640,	-0.963965788182006960,	-0.963952485665163670,	-0.963939180738439320,	-0.963925873401866860,	-0.963912563655479620,	-0.963899251499311100,	-0.963885936933394530,	
+-0.963872619957763080,	-0.963859300572450060,	-0.963845978777488790,	-0.963832654572912560,	-0.963819327958754800,	-0.963805998935048590,	-0.963792667501827240,	-0.963779333659124380,	
+-0.963765997406973220,	-0.963752658745407050,	-0.963739317674459310,	-0.963725974194163280,	-0.963712628304551950,	-0.963699280005659410,	-0.963685929297518620,	-0.963672576180163000,	
+-0.963659220653625970,	-0.963645862717940840,	-0.963632502373141020,	-0.963619139619260050,	-0.963605774456331220,	-0.963592406884387850,	-0.963579036903463360,	-0.963565664513591490,	
+-0.963552289714805330,	-0.963538912507138520,	-0.963525532890624480,	-0.963512150865296400,	-0.963498766431188040,	-0.963485379588332910,	-0.963471990336764230,	-0.963458598676515620,	
+-0.963445204607620510,	-0.963431808130112420,	-0.963418409244024780,	-0.963405007949391100,	-0.963391604246244930,	-0.963378198134619450,	-0.963364789614548740,	-0.963351378686066130,	
+-0.963337965349204910,	-0.963324549603998940,	-0.963311131450481530,	-0.963297710888686100,	-0.963284287918646510,	-0.963270862540396290,	-0.963257434753968970,	-0.963244004559397960,	
+-0.963230571956717020,	-0.963217136945959560,	-0.963203699527159340,	-0.963190259700349880,	-0.963176817465564490,	-0.963163372822837260,	-0.963149925772201710,	-0.963136476313691260,	
+-0.963123024447339660,	-0.963109570173180440,	-0.963096113491247020,	-0.963082654401573700,	-0.963069192904193680,	-0.963055728999140600,	-0.963042262686448320,	-0.963028793966150260,	
+-0.963015322838280290,	-0.963001849302872030,	-0.962988373359959130,	-0.962974895009575120,	-0.962961414251753970,	-0.962947931086529430,	-0.962934445513934920,	-0.962920957534004420,	
+-0.962907467146771450,	-0.962893974352269640,	-0.962880479150533100,	-0.962866981541595330,	-0.962853481525490110,	-0.962839979102251280,	-0.962826474271912370,	-0.962812967034507360,	
+-0.962799457390069890,	-0.962785945338633820,	-0.962772430880232900,	-0.962758914014900660,	-0.962745394742671290,	-0.962731873063578550,	-0.962718348977656070,	-0.962704822484937720,	
+-0.962691293585457020,	-0.962677762279248390,	-0.962664228566345370,	-0.962650692446781700,	-0.962637153920591350,	-0.962623612987808070,	-0.962610069648465850,	-0.962596523902598420,	
+-0.962582975750239660,	-0.962569425191423410,	-0.962555872226183440,	-0.962542316854554050,	-0.962528759076568760,	-0.962515198892261670,	-0.962501636301666630,	-0.962488071304817390,	
+-0.962474503901747710,	-0.962460934092492120,	-0.962447361877084130,	-0.962433787255557730,	-0.962420210227946880,	-0.962406630794285570,	-0.962393048954607530,	-0.962379464708946970,	
+-0.962365878057337750,	-0.962352288999813620,	-0.962338697536408880,	-0.962325103667157510,	-0.962311507392093370,	-0.962297908711250430,	-0.962284307624662770,	-0.962270704132364040,	
+-0.962257098234388870,	-0.962243489930770910,	-0.962229879221544240,	-0.962216266106742820,	-0.962202650586400750,	-0.962189032660552000,	-0.962175412329230760,	-0.962161789592471010,	
+-0.962148164450306490,	-0.962134536902771840,	-0.962120906949900820,	-0.962107274591727510,	-0.962093639828286110,	-0.962080002659610470,	-0.962066363085734680,	-0.962052721106693150,	
+-0.962039076722519870,	-0.962025429933248910,	-0.962011780738914360,	-0.961998129139550410,	-0.961984475135191030,	-0.961970818725870540,	-0.961957159911623010,	-0.961943498692482520,	
+-0.961929835068483060,	-0.961916169039659260,	-0.961902500606045100,	-0.961888829767674650,	-0.961875156524582110,	-0.961861480876801460,	-0.961847802824367330,	-0.961834122367313690,	
+-0.961820439505674750,	-0.961806754239484700,	-0.961793066568777720,	-0.961779376493588130,	-0.961765684013950130,	-0.961751989129897900,	-0.961738291841465640,	-0.961724592148687440,	
+-0.961710890051598040,	-0.961697185550231430,	-0.961683478644621780,	-0.961669769334803530,	-0.961656057620810740,	-0.961642343502677630,	-0.961628626980438940,	-0.961614908054128640,	
+-0.961601186723781030,	-0.961587462989430540,	-0.961573736851111360,	-0.961560008308857790,	-0.961546277362704260,	-0.961532544012684950,	-0.961518808258834180,	-0.961505070101186580,	
+-0.961491329539776230,	-0.961477586574637550,	-0.961463841205804970,	-0.961450093433312780,	-0.961436343257195180,	-0.961422590677486920,	-0.961408835694222090,	-0.961395078307435310,	
+-0.961381318517160690,	-0.961367556323432850,	-0.961353791726286210,	-0.961340024725754970,	-0.961326255321873660,	-0.961312483514676570,	-0.961298709304198360,	-0.961284932690473550,	
+-0.961271153673536330,	-0.961257372253421230,	-0.961243588430162670,	-0.961229802203794950,	-0.961216013574352930,	-0.961202222541870820,	-0.961188429106383250,	-0.961174633267924630,	
+-0.961160835026529380,	-0.961147034382232040,	-0.961133231335067120,	-0.961119425885069050,	-0.961105618032272570,	-0.961091807776711660,	-0.961077995118421510,	-0.961064180057436430,	
+-0.961050362593790840,	-0.961036542727519370,	-0.961022720458656330,	-0.961008895787236690,	-0.960995068713294760,	-0.960981239236865290,	-0.960967407357982580,	-0.960953573076681500,	
+-0.960939736392996350,	-0.960925897306961980,	-0.960912055818612830,	-0.960898211927983410,	-0.960884365635108370,	-0.960870516940022680,	-0.960856665842760640,	-0.960842812343356890,	
+-0.960828956441846180,	-0.960815098138263050,	-0.960801237432641900,	-0.960787374325017930,	-0.960773508815425560,	-0.960759640903899310,	-0.960745770590474060,	-0.960731897875184320,	
+-0.960718022758064950,	-0.960704145239150380,	-0.960690265318475570,	-0.960676382996074720,	-0.960662498271983250,	-0.960648611146235560,	-0.960634721618866320,	-0.960620829689910250,	
+-0.960606935359402110,	-0.960593038627376330,	-0.960579139493868310,	-0.960565237958912350,	-0.960551334022543330,	-0.960537427684796000,	-0.960523518945705090,	-0.960509607805305370,	
+-0.960495694263631680,	-0.960481778320718680,	-0.960467859976601000,	-0.960453939231313950,	-0.960440016084892050,	-0.960426090537370160,	-0.960412162588782920,	-0.960398232239165320,	
+-0.960384299488551970,	-0.960370364336978090,	-0.960356426784478190,	-0.960342486831087360,	-0.960328544476840240,	-0.960314599721771800,	-0.960300652565916790,	-0.960286703009310180,	
+-0.960272751051986840,	-0.960258796693981620,	-0.960244839935329160,	-0.960230880776064890,	-0.960216919216223320,	-0.960202955255839540,	-0.960188988894948300,	-0.960175020133584360,	
+-0.960161048971783230,	-0.960147075409579330,	-0.960133099447007870,	-0.960119121084103580,	-0.960105140320901440,	-0.960091157157436540,	-0.960077171593743730,	-0.960063183629857870,	
+-0.960049193265814170,	-0.960035200501647260,	-0.960021205337392550,	-0.960007207773084790,	-0.959993207808759070,	-0.959979205444450370,	-0.959965200680193640,	-0.959951193516023650,	
+-0.959937183951975800,	-0.959923171988085190,	-0.959909157624386560,	-0.959895140860914990,	-0.959881121697705560,	-0.959867100134793370,	-0.959853076172213490,	-0.959839049810000900,	
+-0.959825021048190340,	-0.959810989886817570,	-0.959796956325917330,	-0.959782920365524590,	-0.959768882005674670,	-0.959754841246402530,	-0.959740798087742930,	-0.959726752529731720,	
+-0.959712704572403540,	-0.959698654215793590,	-0.959684601459937060,	-0.959670546304869030,	-0.959656488750624590,	-0.959642428797238930,	-0.959628366444747250,	-0.959614301693184400,	
+-0.959600234542586030,	-0.959586164992987100,	-0.959572093044422700,	-0.959558018696928140,	-0.959543941950538490,	-0.959529862805288740,	-0.959515781261214510,	-0.959501697318350890,	
+-0.959487610976733070,	-0.959473522236396150,	-0.959459431097375530,	-0.959445337559706180,	-0.959431241623423640,	-0.959417143288562870,	-0.959403042555159290,	-0.959388939423247880,	
+-0.959374833892864380,	-0.959360725964043760,	-0.959346615636821330,	-0.959332502911232400,	-0.959318387787311930,	-0.959304270265095680,	-0.959290150344618840,	-0.959276028025916610,	
+-0.959261903309024280,	-0.959247776193977280,	-0.959233646680810790,	-0.959219514769560130,	-0.959205380460260710,	-0.959191243752947840,	-0.959177104647656600,	-0.959162963144422950,	
+-0.959148819243281770,	-0.959134672944268570,	-0.959120524247418670,	-0.959106373152767590,	-0.959092219660350190,	-0.959078063770202550,	-0.959063905482359760,	-0.959049744796857120,	
+-0.959035581713730160,	-0.959021416233014290,	-0.959007248354744820,	-0.958993078078957280,	-0.958978905405687090,	-0.958964730334969320,	-0.958950552866839940,	-0.958936373001334270,	
+-0.958922190738487610,	-0.958908006078335480,	-0.958893819020913310,	-0.958879629566256390,	-0.958865437714400580,	-0.958851243465381310,	-0.958837046819233760,	-0.958822847775993690,	
+-0.958808646335696510,	-0.958794442498377640,	-0.958780236264072720,	-0.958766027632817260,	-0.958751816604646480,	-0.958737603179596330,	-0.958723387357702130,	-0.958709169138999620,	
+-0.958694948523524100,	-0.958680725511311230,	-0.958666500102396180,	-0.958652272296815270,	-0.958638042094603680,	-0.958623809495796840,	-0.958609574500430610,	-0.958595337108540390,	
+-0.958581097320161950,	-0.958566855135330580,	-0.958552610554082140,	-0.958538363576452280,	-0.958524114202476190,	-0.958509862432190050,	-0.958495608265629180,	-0.958481351702829440,	
+-0.958467092743826240,	-0.958452831388655000,	-0.958438567637352020,	-0.958424301489952610,	-0.958410032946492410,	-0.958395762007007160,	-0.958381488671532500,	-0.958367212940104190,	
+-0.958352934812757740,	-0.958338654289528910,	-0.958324371370453560,	-0.958310086055567000,	-0.958295798344905530,	-0.958281508238504440,	-0.958267215736399610,	-0.958252920838626790,	
+-0.958238623545221710,	-0.958224323856219810,	-0.958210021771657260,	-0.958195717291569720,	-0.958181410415992810,	-0.958167101144962510,	-0.958152789478514340,	-0.958138475416684290,	
+-0.958124158959507980,	-0.958109840107021270,	-0.958095518859259700,	-0.958081195216259670,	-0.958066869178056610,	-0.958052540744686380,	-0.958038209916184820,	-0.958023876692587710,	
+-0.958009541073930550,	-0.957995203060249880,	-0.957980862651581220,	-0.957966519847960440,	-0.957952174649423280,	-0.957937827056005720,	-0.957923477067743610,	-0.957909124684672820,	
+-0.957894769906829200,	-0.957880412734248400,	-0.957866053166966820,	-0.957851691205020120,	-0.957837326848444140,	-0.957822960097274860,	-0.957808590951548240,	-0.957794219411299830,	
+-0.957779845476566140,	-0.957765469147382810,	-0.957751090423785920,	-0.957736709305811230,	-0.957722325793494700,	-0.957707939886872420,	-0.957693551585980350,	-0.957679160890854250,	
+-0.957664767801530430,	-0.957650372318044290,	-0.957635974440432580,	-0.957621574168730840,	-0.957607171502975250,	-0.957592766443201680,	-0.957578358989445880,	-0.957563949141744590,	
+-0.957549536900133340,	-0.957535122264648210,	-0.957520705235325290,	-0.957506285812200650,	-0.957491863995310280,	-0.957477439784690240,	-0.957463013180376630,	-0.957448584182405420,	
+-0.957434152790812560,	-0.957419719005634610,	-0.957405282826907290,	-0.957390844254666810,	-0.957376403288949130,	-0.957361959929790340,	-0.957347514177226740,	-0.957333066031294420,	
+-0.957318615492029460,	-0.957304162559468040,	-0.957289707233646040,	-0.957275249514599860,	-0.957260789402365590,	-0.957246326896979300,	-0.957231861998477210,	-0.957217394706895150,	
+-0.957202925022270000,	-0.957188452944637390,	-0.957173978474033740,	-0.957159501610495120,	-0.957145022354057740,	-0.957130540704757560,	-0.957116056662631220,	-0.957101570227714800,	
+-0.957087081400044500,	-0.957072590179656400,	-0.957058096566586910,	-0.957043600560872120,	-0.957029102162548330,	-0.957014601371651840,	-0.957000098188218520,	-0.956985592612285220,	
+-0.956971084643888030,	-0.956956574283063020,	-0.956942061529846620,	-0.956927546384275020,	-0.956913028846384410,	-0.956898508916211420,	-0.956883986593792150,	-0.956869461879162890,	
+-0.956854934772360060,	-0.956840405273419850,	-0.956825873382378570,	-0.956811339099272630,	-0.956796802424138340,	-0.956782263357011890,	-0.956767721897929910,	-0.956753178046928720,	
+-0.956738631804044500,	-0.956724083169313790,	-0.956709532142772770,	-0.956694978724457750,	-0.956680422914405470,	-0.956665864712652250,	-0.956651304119234270,	-0.956636741134188060,	
+-0.956622175757549930,	-0.956607607989356400,	-0.956593037829643890,	-0.956578465278448810,	-0.956563890335807580,	-0.956549313001756270,	-0.956534733276331980,	-0.956520151159570790,	
+-0.956505566651509320,	-0.956490979752183890,	-0.956476390461630800,	-0.956461798779886910,	-0.956447204706988630,	-0.956432608242972270,	-0.956418009387874360,	-0.956403408141731530,	
+-0.956388804504580080,	-0.956374198476456660,	-0.956359590057397790,	-0.956344979247439890,	-0.956330366046619250,	-0.956315750454972970,	-0.956301132472537340,	-0.956286512099348900,	
+-0.956271889335444160,	-0.956257264180859660,	-0.956242636635631800,	-0.956228006699797570,	-0.956213374373393380,	-0.956198739656455740,	-0.956184102549021200,	-0.956169463051126380,	
+-0.956154821162807920,	-0.956140176884102470,	-0.956125530215046540,	-0.956110881155676550,	-0.956096229706029590,	-0.956081575866142060,	-0.956066919636050620,	-0.956052261015791880,	
+-0.956037600005402390,	-0.956022936604918770,	-0.956008270814378000,	-0.955993602633816610,	-0.955978932063271110,	-0.955964259102778380,	-0.955949583752374930,	-0.955934906012097630,	
+-0.955920225881982890,	-0.955905543362067790,	-0.955890858452388410,	-0.955876171152982180,	-0.955861481463885610,	-0.955846789385135230,	-0.955832094916767900,	-0.955817398058820380,	
+-0.955802698811329070,	-0.955787997174331270,	-0.955773293147863520,	-0.955758586731962460,	-0.955743877926665040,	-0.955729166732007810,	-0.955714453148027720,	-0.955699737174761530,	
+-0.955685018812245990,	-0.955670298060517840,	-0.955655574919613730,	-0.955640849389570950,	-0.955626121470426030,	-0.955611391162215830,	-0.955596658464977100,	-0.955581923378746480,	
+-0.955567185903561380,	-0.955552446039458210,	-0.955537703786474070,	-0.955522959144645580,	-0.955508212114009710,	-0.955493462694603220,	-0.955478710886463190,	-0.955463956689626360,	
+-0.955449200104129590,	-0.955434441130009640,	-0.955419679767303800,	-0.955404916016048710,	-0.955390149876281350,	-0.955375381348038680,	-0.955360610431357560,	-0.955345837126274630,	
+-0.955331061432827310,	-0.955316283351052340,	-0.955301502880986700,	-0.955286720022667350,	-0.955271934776131150,	-0.955257147141415190,	-0.955242357118556210,	-0.955227564707591400,	
+-0.955212769908557520,	-0.955197972721491870,	-0.955183173146431310,	-0.955168371183412800,	-0.955153566832473430,	-0.955138760093650060,	-0.955123950966979550,	-0.955109139452499530,	
+-0.955094325550246540,	-0.955079509260257750,	-0.955064690582570260,	-0.955049869517220930,	-0.955035046064247050,	-0.955020220223685490,	-0.955005391995573330,	-0.954990561379947530,	
+-0.954975728376845520,	-0.954960892986304270,	-0.954946055208360620,	-0.954931215043052010,	-0.954916372490415280,	-0.954901527550487410,	-0.954886680223305920,	-0.954871830508907780,	
+-0.954856978407329970,	-0.954842123918609790,	-0.954827267042784310,	-0.954812407779890630,	-0.954797546129966030,	-0.954782682093047400,	-0.954767815669172240,	-0.954752946858377080,	
+-0.954738075660700010,	-0.954723202076177670,	-0.954708326104847350,	-0.954693447746746140,	-0.954678567001911120,	-0.954663683870379920,	-0.954648798352189520,	-0.954633910447377110,	
+-0.954619020155979880,	-0.954604127478035140,	-0.954589232413580070,	-0.954574334962651980,	-0.954559435125288070,	-0.954544532901525520,	-0.954529628291401310,	-0.954514721294953410,	
+-0.954499811912218550,	-0.954484900143234280,	-0.954469985988037780,	-0.954455069446666250,	-0.954440150519156870,	-0.954425229205547290,	-0.954410305505874690,	-0.954395379420176270,	
+-0.954380450948489440,	-0.954365520090851520,	-0.954350586847299790,	-0.954335651217871560,	-0.954320713202604140,	-0.954305772801534720,	-0.954290830014701160,	-0.954275884842140540,	
+-0.954260937283890160,	-0.954245987339987560,	-0.954231035010469800,	-0.954216080295374300,	-0.954201123194738820,	-0.954186163708600650,	-0.954171201836997000,	-0.954156237579965260,	
+-0.954141270937542970,	-0.954126301909767550,	-0.954111330496676400,	-0.954096356698306840,	-0.954081380514696150,	-0.954066401945882330,	-0.954051420991902430,	-0.954036437652794000,	
+-0.954021451928594440,	-0.954006463819341400,	-0.953991473325071840,	-0.953976480445823840,	-0.953961485181634590,	-0.953946487532541740,	-0.953931487498582590,	-0.953916485079794760,	
+-0.953901480276215690,	-0.953886473087882990,	-0.953871463514833980,	-0.953856451557106410,	-0.953841437214737460,	-0.953826420487765110,	-0.953811401376226780,	-0.953796379880159970,	
+-0.953781355999602120,	-0.953766329734590630,	-0.953751301085163590,	-0.953736270051358300,	-0.953721236633212400,	-0.953706200830763410,	-0.953691162644048850,	-0.953676122073106370,	
+-0.953661079117973600,	-0.953646033778688170,	-0.953630986055287620,	-0.953615935947809360,	-0.953600883456291460,	-0.953585828580771460,	-0.953570771321286870,	-0.953555711677875340,	
+-0.953540649650574500,	-0.953525585239421770,	-0.953510518444455340,	-0.953495449265712610,	-0.953480377703231240,	-0.953465303757048970,	-0.953450227427203530,	-0.953435148713732360,	
+-0.953420067616673420,	-0.953404984136064230,	-0.953389898271942430,	-0.953374810024346100,	-0.953359719393312650,	-0.953344626378880070,	-0.953329530981085750,	-0.953314433199967670,	
+-0.953299333035563360,	-0.953284230487910780,	-0.953269125557047790,	-0.953254018243011920,	-0.953238908545841030,	-0.953223796465572870,	-0.953208682002245180,	-0.953193565155895820,	
+-0.953178445926562530,	-0.953163324314282860,	-0.953148200319095080,	-0.953133073941036860,	-0.953117945180146030,	-0.953102814036460240,	-0.953087680510017470,	-0.953072544600855220,	
+-0.953057406309011810,	-0.953042265634524990,	-0.953027122577432380,	-0.953011977137772080,	-0.952996829315581830,	-0.952981679110899370,	-0.952966526523762900,	-0.952951371554210060,	
+-0.952936214202278700,	-0.952921054468006570,	-0.952905892351432190,	-0.952890727852592880,	-0.952875560971526920,	-0.952860391708271970,	-0.952845220062865870,	-0.952830046035346930,	
+-0.952814869625752790,	-0.952799690834121530,	-0.952784509660491110,	-0.952769326104899390,	-0.952754140167384360,	-0.952738951847983960,	-0.952723761146736180,	-0.952708568063678980,	
+-0.952693372598850120,	-0.952678174752288110,	-0.952662974524030590,	-0.952647771914115650,	-0.952632566922581360,	-0.952617359549465580,	-0.952602149794806170,	-0.952586937658641660,	
+-0.952571723141009800,	-0.952556506241948650,	-0.952541286961496200,	-0.952526065299690530,	-0.952510841256569710,	-0.952495614832171710,	-0.952480386026534840,	-0.952465154839696630,	
+-0.952449921271695810,	-0.952434685322570140,	-0.952419446992357810,	-0.952404206281096900,	-0.952388963188825490,	-0.952373717715581320,	-0.952358469861403160,	-0.952343219626328840,	
+-0.952327967010396460,	-0.952312712013644200,	-0.952297454636110040,	-0.952282194877832390,	-0.952266932738849100,	-0.952251668219198600,	-0.952236401318918620,	-0.952221132038047920,	
+-0.952205860376624360,	-0.952190586334686230,	-0.952175309912271620,	-0.952160031109418600,	-0.952144749926165380,	-0.952129466362550470,	-0.952114180418611960,	-0.952098892094387920,	
+-0.952083601389916770,	-0.952068308305236480,	-0.952053012840385460,	-0.952037714995402020,	-0.952022414770324230,	-0.952007112165190290,	-0.951991807180038400,	-0.951976499814907280,	
+-0.951961190069834930,	-0.951945877944859520,	-0.951930563440019470,	-0.951915246555352650,	-0.951899927290898120,	-0.951884605646693750,	-0.951869281622777730,	-0.951853955219188700,	
+-0.951838626435964620,	-0.951823295273144020,	-0.951807961730765210,	-0.951792625808866480,	-0.951777287507486250,	-0.951761946826662490,	-0.951746603766434050,	-0.951731258326839250,	
+-0.951715910507916150,	-0.951700560309703400,	-0.951685207732239190,	-0.951669852775561710,	-0.951654495439709810,	-0.951639135724721810,	-0.951623773630635880,	-0.951608409157490450,	
+-0.951593042305324150,	-0.951577673074175070,	-0.951562301464081940,	-0.951546927475083070,	-0.951531551107216540,	-0.951516172360521440,	-0.951500791235035840,	-0.951485407730798370,	
+-0.951470021847847240,	-0.951454633586221180,	-0.951439242945958160,	-0.951423849927097390,	-0.951408454529677040,	-0.951393056753735420,	-0.951377656599311280,	-0.951362254066442930,	
+-0.951346849155168980,	-0.951331441865527870,	-0.951316032197558230,	-0.951300620151298130,	-0.951285205726786880,	-0.951269788924062440,	-0.951254369743163690,	-0.951238948184128910,	
+-0.951223524246996850,	-0.951208097931805610,	-0.951192669238594470,	-0.951177238167401630,	-0.951161804718265720,	-0.951146368891225280,	-0.951130930686318930,	-0.951115490103585310,	
+-0.951100047143062840,	-0.951084601804790370,	-0.951069154088806320,	-0.951053703995149100,	-0.951038251523857900,	-0.951022796674971140,	-0.951007339448527330,	-0.950991879844565240,	
+-0.950976417863123040,	-0.950960953504240260,	-0.950945486767954980,	-0.950930017654305960,	-0.950914546163331930,	-0.950899072295071530,	-0.950883596049563410,	-0.950868117426846400,	
+-0.950852636426959050,	-0.950837153049940100,	-0.950821667295827950,	-0.950806179164662040,	-0.950790688656480530,	-0.950775195771322410,	-0.950759700509226200,	-0.950744202870230870,	
+-0.950728702854374610,	-0.950713200461696940,	-0.950697695692236280,	-0.950682188546031370,	-0.950666679023121080,	-0.950651167123543920,	-0.950635652847338970,	-0.950620136194544880,	
+-0.950604617165200390,	-0.950589095759344140,	-0.950573571977015310,	-0.950558045818252650,	-0.950542517283094910,	-0.950526986371580840,	-0.950511453083749290,	-0.950495917419638790,	
+-0.950480379379288860,	-0.950464838962737920,	-0.950449296170024830,	-0.950433751001188650,	-0.950418203456268040,	-0.950402653535301840,	-0.950387101238329040,	-0.950371546565388580,	
+-0.950355989516518900,	-0.950340430091759500,	-0.950324868291149040,	-0.950309304114726470,	-0.950293737562530550,	-0.950278168634600350,	-0.950262597330974400,	-0.950247023651692340,	
+-0.950231447596792680,	-0.950215869166314290,	-0.950200288360296350,	-0.950184705178777620,	-0.950169119621797180,	-0.950153531689393870,	-0.950137941381606790,	-0.950122348698474890,	
+-0.950106753640036830,	-0.950091156206332110,	-0.950075556397399490,	-0.950059954213278050,	-0.950044349654006640,	-0.950028742719624120,	-0.950013133410170020,	-0.949997521725683190,	
+-0.949981907666202390,	-0.949966291231766900,	-0.949950672422415710,	-0.949935051238187780,	-0.949919427679122300,	-0.949903801745258130,	-0.949888173436634560,	-0.949872542753290250,	
+-0.949856909695264820,	-0.949841274262597120,	-0.949825636455326360,	-0.949809996273491390,	-0.949794353717131390,	-0.949778708786285340,	-0.949763061480992770,	-0.949747411801292520,	
+-0.949731759747223680,	-0.949716105318825550,	-0.949700448516137110,	-0.949684789339197530,	-0.949669127788046020,	-0.949653463862721650,	-0.949637797563263390,	-0.949622128889710870,	
+-0.949606457842103070,	-0.949590784420479170,	-0.949575108624878150,	-0.949559430455339530,	-0.949543749911901940,	-0.949528066994605350,	-0.949512381703488510,	-0.949496694038590720,	
+-0.949481003999951170,	-0.949465311587609160,	-0.949449616801603890,	-0.949433919641974540,	-0.949418220108760420,	-0.949402518202000500,	-0.949386813921734520,	-0.949371107268001560,	
+-0.949355398240840700,	-0.949339686840291460,	-0.949323973066392930,	-0.949308256919184300,	-0.949292538398705200,	-0.949276817504994820,	-0.949261094238092350,	-0.949245368598037210,	
+-0.949229640584868580,	-0.949213910198625890,	-0.949198177439348310,	-0.949182442307075380,	-0.949166704801846390,	-0.949150964923700320,	-0.949135222672677140,	-0.949119478048815910,	
+-0.949103731052155950,	-0.949087981682736670,	-0.949072229940597150,	-0.949056475825777350,	-0.949040719338316240,	-0.949024960478253470,	-0.949009199245628320,	-0.948993435640480110,	
+-0.948977669662848360,	-0.948961901312772360,	-0.948946130590291650,	-0.948930357495445630,	-0.948914582028273390,	-0.948898804188815000,	-0.948883023977109660,	-0.948867241393196670,	
+-0.948851456437115550,	-0.948835669108905600,	-0.948819879408606790,	-0.948804087336258210,	-0.948788292891899370,	-0.948772496075569900,	-0.948756696887309130,	-0.948740895327156660,	
+-0.948725091395151930,	-0.948709285091334450,	-0.948693476415743750,	-0.948677665368419130,	-0.948661851949400560,	-0.948646036158727450,	-0.948630217996439100,	-0.948614397462575360,	
+-0.948598574557175560,	-0.948582749280279080,	-0.948566921631925910,	-0.948551091612155560,	-0.948535259221007450,	-0.948519424458521110,	-0.948503587324736270,	-0.948487747819692470,	
+-0.948471905943429340,	-0.948456061695986400,	-0.948440215077403060,	-0.948424366087719410,	-0.948408514726974850,	-0.948392660995209020,	-0.948376804892461570,	-0.948360946418772110,	
+-0.948345085574179960,	-0.948329222358725300,	-0.948313356772447660,	-0.948297488815386670,	-0.948281618487581970,	-0.948265745789073190,	-0.948249870719899970,	-0.948233993280102160,	
+-0.948218113469719400,	-0.948202231288791330,	-0.948186346737357360,	-0.948170459815457780,	-0.948154570523132120,	-0.948138678860420030,	-0.948122784827361230,	-0.948106888423995150,	
+-0.948090989650362090,	-0.948075088506501680,	-0.948059184992453450,	-0.948043279108257360,	-0.948027370853953060,	-0.948011460229580270,	-0.947995547235178760,	-0.947979631870788490,	
+-0.947963714136449200,	-0.947947794032200200,	-0.947931871558082120,	-0.947915946714134260,	-0.947900019500396600,	-0.947884089916908870,	-0.947868157963710600,	-0.947852223640842210,	
+-0.947836286948343320,	-0.947820347886253690,	-0.947804406454613280,	-0.947788462653461730,	-0.947772516482839110,	-0.947756567942785070,	-0.947740617033339780,	-0.947724663754542780,	
+-0.947708708106433930,	-0.947692750089053630,	-0.947676789702441400,	-0.947660826946637220,	-0.947644861821680950,	-0.947628894327612550,	-0.947612924464471540,	-0.947596952232298670,	
+-0.947580977631133250,	-0.947565000661015460,	-0.947549021321985150,	-0.947533039614082420,	-0.947517055537346890,	-0.947501069091818860,	-0.947485080277538080,	-0.947469089094544410,	
+-0.947453095542878150,	-0.947437099622579270,	-0.947421101333687620,	-0.947405100676243170,	-0.947389097650286120,	-0.947373092255855860,	-0.947357084492993270,	-0.947341074361737870,	
+-0.947325061862129840,	-0.947309046994209150,	-0.947293029758015880,	-0.947277010153590000,	-0.947260988180971600,	-0.947244963840200740,	-0.947228937131317170,	-0.947212908054361540,	
+-0.947196876609373680,	-0.947180842796393590,	-0.947164806615461320,	-0.947148768066617190,	-0.947132727149900710,	-0.947116683865352860,	-0.947100638213013160,	-0.947084590192921900,	
+-0.947068539805119180,	-0.947052487049645060,	-0.947036431926539860,	-0.947020374435843420,	-0.947004314577596150,	-0.946988252351838030,	-0.946972187758609030,	-0.946956120797949890,	
+-0.946940051469900350,	-0.946923979774500710,	-0.946907905711791180,	-0.946891829281811590,	-0.946875750484602710,	-0.946859669320204380,	-0.946843585788656910,	-0.946827499890000480,	
+-0.946811411624275400,	-0.946795320991521640,	-0.946779227991779710,	-0.946763132625089600,	-0.946747034891491700,	-0.946730934791025990,	-0.946714832323733100,	-0.946698727489653220,	
+-0.946682620288826550,	-0.946666510721293260,	-0.946650398787093670,	-0.946634284486267850,	-0.946618167818856660,	-0.946602048784899950,	-0.946585927384438140,	-0.946569803617511530,	
+-0.946553677484160420,	-0.946537548984425100,	-0.946521418118345890,	-0.946505284885963190,	-0.946489149287316980,	-0.946473011322448100,	-0.946456870991396860,	-0.946440728294203340,	
+-0.946424583230907950,	-0.946408435801551210,	-0.946392286006172980,	-0.946376133844814340,	-0.946359979317515480,	-0.946343822424316580,	-0.946327663165258180,	-0.946311501540380570,	
+-0.946295337549724170,	-0.946279171193329490,	-0.946263002471236850,	-0.946246831383486420,	-0.946230657930119290,	-0.946214482111175430,	-0.946198303926695350,	-0.946182123376719590,	
+-0.946165940461288430,	-0.946149755180442200,	-0.946133567534221840,	-0.946117377522667560,	-0.946101185145819870,	-0.946084990403719180,	-0.946068793296406030,	-0.946052593823920820,	
+-0.946036391986304180,	-0.946020187783596640,	-0.946003981215838510,	-0.945987772283070290,	-0.945971560985332750,	-0.945955347322666400,	-0.945939131295111760,	-0.945922912902709130,	
+-0.945906692145499050,	-0.945890469023522470,	-0.945874243536819700,	-0.945858015685431370,	-0.945841785469398010,	-0.945825552888760130,	-0.945809317943558490,	-0.945793080633833380,	
+-0.945776840959625660,	-0.945760598920975860,	-0.945744354517924270,	-0.945728107750512080,	-0.945711858618779600,	-0.945695607122767460,	-0.945679353262516290,	-0.945663097038066840,	
+-0.945646838449459180,	-0.945630577496734850,	-0.945614314179934020,	-0.945598048499097450,	-0.945581780454265770,	-0.945565510045479620,	-0.945549237272779730,	-0.945532962136206630,	
+-0.945516684635801190,	-0.945500404771603800,	-0.945484122543655660,	-0.945467837951997180,	-0.945451550996669110,	-0.945435261677712190,	-0.945418969995167170,	-0.945402675949074340,	
+-0.945386379539475130,	-0.945370080766409940,	-0.945353779629919620,	-0.945337476130044820,	-0.945321170266826380,	-0.945304862040304950,	-0.945288551450521370,	-0.945272238497516400,	
+-0.945255923181330560,	-0.945239605502005250,	-0.945223285459580900,	-0.945206963054098240,	-0.945190638285598350,	-0.945174311154121760,	-0.945157981659709100,	-0.945141649802401780,	
+-0.945125315582240330,	-0.945108978999265600,	-0.945092640053518450,	-0.945076298745039730,	-0.945059955073870190,	-0.945043609040050800,	-0.945027260643622300,	-0.945010909884625770,	
+-0.944994556763101620,	-0.944978201279091380,	-0.944961843432635670,	-0.944945483223775360,	-0.944929120652551300,	-0.944912755719004130,	-0.944896388423175360,	-0.944880018765105630,	
+-0.944863646744835920,	-0.944847272362406950,	-0.944830895617859930,	-0.944814516511235600,	-0.944798135042575040,	-0.944781751211919100,	-0.944765365019308860,	-0.944748976464784840,	
+-0.944732585548388680,	-0.944716192270161010,	-0.944699796630142920,	-0.944683398628375360,	-0.944666998264899190,	-0.944650595539755390,	-0.944634190452985250,	-0.944617783004629730,	
+-0.944601373194729700,	-0.944584961023326340,	-0.944568546490460400,	-0.944552129596173300,	-0.944535710340505760,	-0.944519288723498880,	-0.944502864745193630,	-0.944486438405631400,	
+-0.944470009704853180,	-0.944453578642899800,	-0.944437145219812590,	-0.944420709435632500,	-0.944404271290400280,	-0.944387830784157670,	-0.944371387916945530,	-0.944354942688804930,	
+-0.944338495099776960,	-0.944322045149902810,	-0.944305592839223440,	-0.944289138167780150,	-0.944272681135614020,	-0.944256221742765910,	-0.944239759989277450,	-0.944223295875189720,	
+-0.944206829400543680,	-0.944190360565380530,	-0.944173889369741560,	-0.944157415813667520,	-0.944140939897200270,	-0.944124461620380550,	-0.944107980983249770,	-0.944091497985849130,	
+-0.944075012628219580,	-0.944058524910402650,	-0.944042034832439310,	-0.944025542394370860,	-0.944009047596238600,	-0.943992550438083500,	-0.943976050919947180,	-0.943959549041870850,	
+-0.943943044803895570,	-0.943926538206062760,	-0.943910029248413160,	-0.943893517930988970,	-0.943877004253830810,	-0.943860488216980320,	-0.943843969820478470,	-0.943827449064366770,	
+-0.943810925948686430,	-0.943794400473478730,	-0.943777872638785100,	-0.943761342444646710,	-0.943744809891104650,	-0.943728274978201000,	-0.943711737705976610,	-0.943695198074472770,	
+-0.943678656083731030,	-0.943662111733792660,	-0.943645565024698650,	-0.943629015956491070,	-0.943612464529210990,	-0.943595910742899720,	-0.943579354597598670,	-0.943562796093349140,	
+-0.943546235230192760,	-0.943529672008170730,	-0.943513106427324550,	-0.943496538487695210,	-0.943479968189325000,	-0.943463395532254670,	-0.943446820516525950,	-0.943430243142180270,	
+-0.943413663409258810,	-0.943397081317802980,	-0.943380496867854750,	-0.943363910059455300,	-0.943347320892646060,	-0.943330729367468420,	-0.943314135483964030,	-0.943297539242174410,	
+-0.943280940642140740,	-0.943264339683904880,	-0.943247736367507810,	-0.943231130692991690,	-0.943214522660397740,	-0.943197912269767570,	-0.943181299521142490,	-0.943164684414564250,	
+-0.943148066950073920,	-0.943131447127713800,	-0.943114824947525080,	-0.943098200409549170,	-0.943081573513827930,	-0.943064944260402660,	-0.943048312649314990,	-0.943031678680606560,	
+-0.943015042354318990,	-0.942998403670493810,	-0.942981762629172330,	-0.942965119230396720,	-0.942948473474208290,	-0.942931825360648680,	-0.942915174889759510,	-0.942898522061582090,	
+-0.942881866876158710,	-0.942865209333530680,	-0.942848549433739520,	-0.942831887176827090,	-0.942815222562834900,	-0.942798555591804700,	-0.942781886263778010,	-0.942765214578796700,	
+-0.942748540536902270,	-0.942731864138136260,	-0.942715185382540950,	-0.942698504270157560,	-0.942681820801027910,	-0.942665134975193770,	-0.942648446792696770,	-0.942631756253578310,	
+-0.942615063357880810,	-0.942598368105645680,	-0.942581670496914550,	-0.942564970531729380,	-0.942548268210131600,	-0.942531563532163270,	-0.942514856497866040,	-0.942498147107281640,	
+-0.942481435360451590,	-0.942464721257418200,	-0.942448004798222990,	-0.942431285982907820,	-0.942414564811514420,	-0.942397841284084660,	-0.942381115400659940,	-0.942364387161282790,	
+-0.942347656565994620,	-0.942330923614837280,	-0.942314188307852740,	-0.942297450645082630,	-0.942280710626568930,	-0.942263968252353480,	-0.942247223522478030,	-0.942230476436984320,	
+-0.942213726995914660,	-0.942196975199310670,	-0.942180221047214330,	-0.942163464539667260,	-0.942146705676711660,	-0.942129944458389050,	-0.942113180884741830,	-0.942096414955811530,	
+-0.942079646671640350,	-0.942062876032270010,	-0.942046103037742500,	-0.942029327688099660,	-0.942012549983383570,	-0.941995769923636090,	-0.941978987508899190,	-0.941962202739214490,	
+-0.941945415614624640,	-0.941928626135171140,	-0.941911834300896200,	-0.941895040111841660,	-0.941878243568049170,	-0.941861444669561340,	-0.941844643416419940,	-0.941827839808666910,	
+-0.941811033846344350,	-0.941794225529494210,	-0.941777414858158470,	-0.941760601832379200,	-0.941743786452198360,	-0.941726968717658150,	-0.941710148628800090,	-0.941693326185667030,	
+-0.941676501388300720,	-0.941659674236743130,	-0.941642844731036320,	-0.941626012871222380,	-0.941609178657343170,	-0.941592342089441310,	-0.941575503167558560,	-0.941558661891736980,	
+-0.941541818262018880,	-0.941524972278446230,	-0.941508123941060980,	-0.941491273249905560,	-0.941474420205022030,	-0.941457564806452040,	-0.941440707054238430,	-0.941423846948423070,	
+-0.941406984489048140,	-0.941390119676155710,	-0.941373252509787980,	-0.941356382989986810,	-0.941339511116794920,	-0.941322636890254420,	-0.941305760310407250,	-0.941288881377295610,	
+-0.941272000090961790,	-0.941255116451447990,	-0.941238230458796400,	-0.941221342113049310,	-0.941204451414248470,	-0.941187558362436840,	-0.941170662957656280,	-0.941153765199949090,	
+-0.941136865089357570,	-0.941119962625923790,	-0.941103057809689840,	-0.941086150640698450,	-0.941069241118991820,	-0.941052329244612020,	-0.941035415017601350,	-0.941018498438002230,	
+-0.941001579505856830,	-0.940984658221207470,	-0.940967734584096550,	-0.940950808594566150,	-0.940933880252658560,	-0.940916949558416540,	-0.940900016511882040,	-0.940883081113097600,	
+-0.940866143362105390,	-0.940849203258947610,	-0.940832260803667110,	-0.940815315996305860,	-0.940798368836906370,	-0.940781419325511070,	-0.940764467462162140,	-0.940747513246901980,	
+-0.940730556679773120,	-0.940713597760817870,	-0.940696636490078510,	-0.940679672867597350,	-0.940662706893417360,	-0.940645738567580490,	-0.940628767890129390,	-0.940611794861106240,	
+-0.940594819480553680,	-0.940577841748513780,	-0.940560861665029610,	-0.940543879230143150,	-0.940526894443897140,	-0.940509907306333770,	-0.940492917817495780,	-0.940475925977425350,	
+-0.940458931786165240,	-0.940441935243757630,	-0.940424936350245040,	-0.940407935105670330,	-0.940390931510075800,	-0.940373925563503970,	-0.940356917265997350,	-0.940339906617598360,	
+-0.940322893618349310,	-0.940305878268293370,	-0.940288860567472740,	-0.940271840515929940,	-0.940254818113707480,	-0.940237793360848010,	-0.940220766257394040,	-0.940203736803388200,	
+-0.940186704998873020,	-0.940169670843890800,	-0.940152634338484620,	-0.940135595482696980,	-0.940118554276570210,	-0.940101510720147140,	-0.940084464813470300,	-0.940067416556581990,	
+-0.940050365949525400,	-0.940033312992342940,	-0.940016257685077130,	-0.939999200027770710,	-0.939982140020466320,	-0.939965077663206580,	-0.939948012956034140,	-0.939930945898991620,	
+-0.939913876492121770,	-0.939896804735467000,	-0.939879730629070380,	-0.939862654172974540,	-0.939845575367222020,	-0.939828494211855550,	-0.939811410706917540,	-0.939794324852451400,	
+-0.939777236648499330,	-0.939760146095104280,	-0.939743053192308770,	-0.939725957940155680,	-0.939708860338687610,	-0.939691760387947550,	-0.939674658087977900,	-0.939657553438821740,	
+-0.939640446440521360,	-0.939623337093120180,	-0.939606225396660610,	-0.939589111351185500,	-0.939571994956737600,	-0.939554876213359760,	-0.939537755121094390,	-0.939520631679985010,	
+-0.939503505890073920,	-0.939486377751404200,	-0.939469247264018370,	-0.939452114427959620,	-0.939434979243270460,	-0.939417841709993870,	-0.939400701828172700,	-0.939383559597849470,	
+-0.939366415019067590,	-0.939349268091869690,	-0.939332118816298630,	-0.939314967192397270,	-0.939297813220208560,	-0.939280656899774910,	-0.939263498231139970,	-0.939246337214346360,	
+-0.939229173849436830,	-0.939212008136454330,	-0.939194840075441850,	-0.939177669666442340,	-0.939160496909498540,	-0.939143321804653540,	-0.939126144351949970,	-0.939108964551431340,	
+-0.939091782403140280,	-0.939074597907119780,	-0.939057411063412670,	-0.939040221872062150,	-0.939023030333110740,	-0.939005836446602070,	-0.938988640212578880,	-0.938971441631083930,	
+-0.938954240702160490,	-0.938937037425851440,	-0.938919831802199730,	-0.938902623831248560,	-0.938885413513040780,	-0.938868200847619460,	-0.938850985835027240,	-0.938833768475307970,	
+-0.938816548768504290,	-0.938799326714659150,	-0.938782102313815760,	-0.938764875566016730,	-0.938747646471305930,	-0.938730415029725980,	-0.938713181241319970,	-0.938695945106130970,	
+-0.938678706624202160,	-0.938661465795576630,	-0.938644222620297340,	-0.938626977098407590,	-0.938609729229950340,	-0.938592479014968450,	-0.938575226453505660,	-0.938557971545604830,	
+-0.938540714291309030,	-0.938523454690661560,	-0.938506192743705060,	-0.938488928450483370,	-0.938471661811039360,	-0.938454392825416210,	-0.938437121493657100,	-0.938419847815805230,	
+-0.938402571791903670,	-0.938385293421995730,	-0.938368012706124470,	-0.938350729644333300,	-0.938333444236664870,	-0.938316156483163240,	-0.938298866383871170,	-0.938281573938831940,	
+-0.938264279148088740,	-0.938246982011684880,	-0.938229682529663320,	-0.938212380702067810,	-0.938195076528941300,	-0.938177770010327210,	-0.938160461146268610,	-0.938143149936808810,	
+-0.938125836381991210,	-0.938108520481859000,	-0.938091202236455590,	-0.938073881645823730,	-0.938056558710007480,	-0.938039233429049930,	-0.938021905802994160,	-0.938004575831883790,	
+-0.937987243515761900,	-0.937969908854671570,	-0.937952571848656770,	-0.937935232497760560,	-0.937917890802026260,	-0.937900546761497260,	-0.937883200376216970,	-0.937865851646228600,	
+-0.937848500571575540,	-0.937831147152301310,	-0.937813791388448890,	-0.937796433280062240,	-0.937779072827184530,	-0.937761710029859200,	-0.937744344888129520,	-0.937726977402039030,	
+-0.937709607571630800,	-0.937692235396948790,	-0.937674860878036310,	-0.937657484014936650,	-0.937640104807693220,	-0.937622723256349540,	-0.937605339360949030,	-0.937587953121535200,	
+-0.937570564538151460,	-0.937553173610841340,	-0.937535780339648020,	-0.937518384724615460,	-0.937500986765787080,	-0.937483586463206060,	-0.937466183816916150,	-0.937448778826960540,	
+-0.937431371493383180,	-0.937413961816227490,	-0.937396549795536880,	-0.937379135431354870,	-0.937361718723724980,	-0.937344299672690840,	-0.937326878278295970,	-0.937309454540583900,	
+-0.937292028459598140,	-0.937274600035381990,	-0.937257169267979750,	-0.937239736157434500,	-0.937222300703789980,	-0.937204862907089600,	-0.937187422767377210,	-0.937169980284695890,	
+-0.937152535459089830,	-0.937135088290602550,	-0.937117638779277560,	-0.937100186925158400,	-0.937082732728288790,	-0.937065276188712380,	-0.937047817306472800,	-0.937030356081613560,	
+-0.937012892514178300,	-0.936995426604210980,	-0.936977958351755120,	-0.936960487756854370,	-0.936943014819552440,	-0.936925539539892880,	-0.936908061917919310,	-0.936890581953675810,	
+-0.936873099647205780,	-0.936855614998553080,	-0.936838128007761340,	-0.936820638674874310,	-0.936803146999935720,	-0.936785652982989100,	-0.936768156624078530,	-0.936750657923247190,	
+-0.936733156880539490,	-0.936715653495998830,	-0.936698147769669200,	-0.936680639701594100,	-0.936663129291817390,	-0.936645616540382590,	-0.936628101447333990,	-0.936610584012715240,	
+-0.936593064236569960,	-0.936575542118942010,	-0.936558017659875230,	-0.936540490859413490,	-0.936522961717600410,	-0.936505430234479960,	-0.936487896410096000,	-0.936470360244491930,	
+-0.936452821737712270,	-0.936435280889800550,	-0.936417737700800610,	-0.936400192170756320,	-0.936382644299711300,	-0.936365094087709960,	-0.936347541534795820,	-0.936329986641012860,	
+-0.936312429406405020,	-0.936294869831016060,	-0.936277307914889830,	-0.936259743658070410,	-0.936242177060601640,	-0.936224608122527390,	-0.936207036843891390,	-0.936189463224738060,	
+-0.936171887265111020,	-0.936154308965054360,	-0.936136728324611810,	-0.936119145343827560,	-0.936101560022745030,	-0.936083972361409060,	-0.936066382359863060,	-0.936048790018151110,	
+-0.936031195336317180,	-0.936013598314405230,	-0.935995998952459330,	-0.935978397250523450,	-0.935960793208641560,	-0.935943186826857290,	-0.935925578105215480,	-0.935907967043759670,	
+-0.935890353642533920,	-0.935872737901582430,	-0.935855119820948930,	-0.935837499400677400,	-0.935819876640812450,	-0.935802251541397730,	-0.935784624102477420,	-0.935766994324095600,	
+-0.935749362206296230,	-0.935731727749123500,	-0.935714090952621370,	-0.935696451816834140,	-0.935678810341805330,	-0.935661166527579910,	-0.935643520374201510,	-0.935625871881714310,	
+-0.935608221050162500,	-0.935590567879590160,	-0.935572912370041030,	-0.935555254521559850,	-0.935537594334190590,	-0.935519931807977430,	-0.935502266942964340,	-0.935484599739195620,	
+-0.935466930196715450,	-0.935449258315567910,	-0.935431584095797190,	-0.935413907537447580,	-0.935396228640562820,	-0.935378547405187890,	-0.935360863831366520,	-0.935343177919143010,	
+-0.935325489668561550,	-0.935307799079665990,	-0.935290106152501300,	-0.935272410887111440,	-0.935254713283540480,	-0.935237013341832730,	-0.935219311062032380,	-0.935201606444183820,	
+-0.935183899488331250,	-0.935166190194518960,	-0.935148478562791150,	-0.935130764593191780,	-0.935113048285765910,	-0.935095329640557420,	-0.935077608657610470,	-0.935059885336969600,	
+-0.935042159678679100,	-0.935024431682782710,	-0.935006701349325730,	-0.934988968678351910,	-0.934971233669905640,	-0.934953496324031350,	-0.934935756640773220,	-0.934918014620175760,	
+-0.934900270262283280,	-0.934882523567140190,	-0.934864774534790330,	-0.934847023165279010,	-0.934829269458649970,	-0.934811513414947840,	-0.934793755034216910,	-0.934775994316501600,	
+-0.934758231261845980,	-0.934740465870295130,	-0.934722698141893130,	-0.934704928076684370,	-0.934687155674713280,	-0.934669380936024250,	-0.934651603860661820,	-0.934633824448670380,	
+-0.934616042700094350,	-0.934598258614977920,	-0.934580472193366150,	-0.934562683435303130,	-0.934544892340833490,	-0.934527098910001630,	-0.934509303142852080,	-0.934491505039428790,	
+-0.934473704599777190,	-0.934455901823941230,	-0.934438096711965650,	-0.934420289263894750,	-0.934402479479773060,	-0.934384667359645200,	-0.934366852903555810,	-0.934349036111549180,	
+-0.934331216983669940,	-0.934313395519962290,	-0.934295571720471620,	-0.934277745585241900,	-0.934259917114317880,	-0.934242086307744080,	-0.934224253165564680,	-0.934206417687824970,	
+-0.934188579874569270,	-0.934170739725842080,	-0.934152897241688150,	-0.934135052422151890,	-0.934117205267277930,	-0.934099355777111010,	-0.934081503951695760,	-0.934063649791076700,	
+-0.934045793295298240,	-0.934027934464405570,	-0.934010073298443100,	-0.933992209797455340,	-0.933974343961487150,	-0.933956475790583050,	-0.933938605284787560,	-0.933920732444145750,	
+-0.933902857268702150,	-0.933884979758501490,	-0.933867099913588290,	-0.933849217734007310,	-0.933831333219803380,	-0.933813446371021040,	-0.933795557187705130,	-0.933777665669899950,	
+-0.933759771817651020,	-0.933741875631002530,	-0.933723977109999440,	-0.933706076254686380,	-0.933688173065108210,	-0.933670267541309220,	-0.933652359683334820,	-0.933634449491229650,	
+-0.933616536965038320,	-0.933598622104805600,	-0.933580704910576320,	-0.933562785382395340,	-0.933544863520307300,	-0.933526939324357260,	-0.933509012794589420,	-0.933491083931049400,	
+-0.933473152733781620,	-0.933455219202831030,	-0.933437283338242390,	-0.933419345140060530,	-0.933401404608329990,	-0.933383461743096280,	-0.933365516544403920,	-0.933347569012297650,	
+-0.933329619146822550,	-0.933311666948023480,	-0.933293712415945160,	-0.933275755550632580,	-0.933257796352130580,	-0.933239834820484120,	-0.933221870955737720,	-0.933203904757937020,	
+-0.933185936227126420,	-0.933167965363351120,	-0.933149992166655840,	-0.933132016637085340,	-0.933114038774685020,	-0.933096058579499730,	-0.933078076051574110,	-0.933060091190953460,	
+-0.933042103997682500,	-0.933024114471806330,	-0.933006122613369900,	-0.932988128422418070,	-0.932970131898996020,	-0.932952133043148170,	-0.932934131854920470,	-0.932916128334357330,	
+-0.932898122481503940,	-0.932880114296405160,	-0.932862103779106170,	-0.932844090929651590,	-0.932826075748087180,	-0.932808058234457450,	-0.932790038388807590,	-0.932772016211182660,	
+-0.932753991701627760,	-0.932735964860187840,	-0.932717935686907970,	-0.932699904181833240,	-0.932681870345008490,	-0.932663834176479360,	-0.932645795676290690,	-0.932627754844487460,	
+-0.932609711681114840,	-0.932591666186218030,	-0.932573618359841650,	-0.932555568202031560,	-0.932537515712832610,	-0.932519460892289760,	-0.932501403740448320,	-0.932483344257353460,	
+-0.932465282443050160,	-0.932447218297583590,	-0.932429151820999060,	-0.932411083013341300,	-0.932393011874656170,	-0.932374938404988420,	-0.932356862604383440,	-0.932338784472886320,	
+-0.932320704010542120,	-0.932302621217395930,	-0.932284536093493490,	-0.932266448638879750,	-0.932248358853599800,	-0.932230266737699040,	-0.932212172291222550,	-0.932194075514215630,	
+-0.932175976406723560,	-0.932157874968791540,	-0.932139771200464760,	-0.932121665101788290,	-0.932103556672807980,	-0.932085445913568790,	-0.932067332824116020,	-0.932049217404494870,	
+-0.932031099654750390,	-0.932012979574928460,	-0.931994857165074020,	-0.931976732425232490,	-0.931958605355449170,	-0.931940475955769340,	-0.931922344226238210,	-0.931904210166901280,	
+-0.931886073777803860,	-0.931867935058991240,	-0.931849794010508490,	-0.931831650632401480,	-0.931813504924715490,	-0.931795356887495600,	-0.931777206520787330,	-0.931759053824636090,	
+-0.931740898799086950,	-0.931722741444185760,	-0.931704581759977830,	-0.931686419746508340,	-0.931668255403822920,	-0.931650088731966750,	-0.931631919730985470,	-0.931613748400924370,	
+-0.931595574741828860,	-0.931577398753744010,	-0.931559220436716130,	-0.931541039790790060,	-0.931522856816011550,	-0.931504671512425770,	-0.931486483880078380,	-0.931468293919014420,	
+-0.931450101629280100,	-0.931431907010920490,	-0.931413710063981100,	-0.931395510788507460,	-0.931377309184544980,	-0.931359105252139270,	-0.931340898991335870,	-0.931322690402180190,	
+-0.931304479484717400,	-0.931286266238993800,	-0.931268050665054470,	-0.931249832762945040,	-0.931231612532711030,	-0.931213389974397950,	-0.931195165088051110,	-0.931176937873716690,	
+-0.931158708331439990,	-0.931140476461266410,	-0.931122242263241700,	-0.931104005737411370,	-0.931085766883821050,	-0.931067525702516270,	-0.931049282193542660,	-0.931031036356945950,	
+-0.931012788192771220,	-0.930994537701064880,	-0.930976284881872120,	-0.930958029735238780,	-0.930939772261210270,	-0.930921512459832120,	-0.930903250331150400,	-0.930884985875210620,	
+-0.930866719092058310,	-0.930848449981739210,	-0.930830178544299060,	-0.930811904779783370,	-0.930793628688238010,	-0.930775350269708590,	-0.930757069524240640,	-0.930738786451879800,	
+-0.930720501052672340,	-0.930702213326663590,	-0.930683923273899370,	-0.930665630894425220,	-0.930647336188287100,	-0.930629039155530300,	-0.930610739796201240,	-0.930592438110345200,	
+-0.930574134098008270,	-0.930555827759235840,	-0.930537519094073890,	-0.930519208102568160,	-0.930500894784764390,	-0.930482579140708420,	-0.930464261170445670,	-0.930445940874022550,	
+-0.930427618251484570,	-0.930409293302877580,	-0.930390966028247330,	-0.930372636427639790,	-0.930354304501100240,	-0.930335970248675200,	-0.930317633670410320,	-0.930299294766351310,	
+-0.930280953536544050,	-0.930262609981034380,	-0.930244264099868270,	-0.930225915893091450,	-0.930207565360749890,	-0.930189212502889110,	-0.930170857319555510,	-0.930152499810794840,	
+-0.930134139976652950,	-0.930115777817175690,	-0.930097413332408920,	-0.930079046522398370,	-0.930060677387190450,	-0.930042305926830900,	-0.930023932141365580,	-0.930005556030840450,	
+-0.929987177595301360,	-0.929968796834794390,	-0.929950413749365380,	-0.929932028339060410,	-0.929913640603925340,	-0.929895250544005790,	-0.929876858159348510,	-0.929858463449999010,	
+-0.929840066416003360,	-0.929821667057407650,	-0.929803265374257390,	-0.929784861366599210,	-0.929766455034478970,	-0.929748046377942620,	-0.929729635397036120,	-0.929711222091805460,	
+-0.929692806462296790,	-0.929674388508556100,	-0.929655968230629460,	-0.929637545628562930,	-0.929619120702402160,	-0.929600693452193870,	-0.929582263877983930,	-0.929563831979818290,	
+-0.929545397757743140,	-0.929526961211804450,	-0.929508522342048060,	-0.929490081148520610,	-0.929471637631267940,	-0.929453191790336250,	-0.929434743625771610,	-0.929416293137620090,	
+-0.929397840325927760,	-0.929379385190740930,	-0.929360927732105660,	-0.929342467950067590,	-0.929324005844673780,	-0.929305541415969990,	-0.929287074664002290,	-0.929268605588816850,	
+-0.929250134190459990,	-0.929231660468977430,	-0.929213184424416140,	-0.929194706056821750,	-0.929176225366240670,	-0.929157742352718970,	-0.929139257016302960,	-0.929120769357038800,	
+-0.929102279374972690,	-0.929083787070150930,	-0.929065292442619370,	-0.929046795492424860,	-0.929028296219613470,	-0.929009794624231280,	-0.928991290706324580,	-0.928972784465939670,	
+-0.928954275903122410,	-0.928935765017919860,	-0.928917251810377880,	-0.928898736280542760,	-0.928880218428460800,	-0.928861698254178300,	-0.928843175757741560,	-0.928824650939196860,	
+-0.928806123798590620,	-0.928787594335968910,	-0.928769062551378030,	-0.928750528444864720,	-0.928731992016475160,	-0.928713453266255650,	-0.928694912194252490,	-0.928676368800511630,	
+-0.928657823085080270,	-0.928639275048004360,	-0.928620724689330210,	-0.928602172009104220,	-0.928583617007372910,	-0.928565059684182460,	-0.928546500039579390,	-0.928527938073610000,	
+-0.928509373786320920,	-0.928490807177758000,	-0.928472238247968320,	-0.928453666996998160,	-0.928435093424893720,	-0.928416517531701620,	-0.928397939317467950,	-0.928379358782239650,	
+-0.928360775926063030,	-0.928342190748984500,	-0.928323603251050340,	-0.928305013432307310,	-0.928286421292801700,	-0.928267826832580020,	-0.928249230051688800,	-0.928230630950174550,	
+-0.928212029528083350,	-0.928193425785462380,	-0.928174819722357940,	-0.928156211338816320,	-0.928137600634884260,	-0.928118987610608180,	-0.928100372266034260,	-0.928081754601209790,	
+-0.928063134616180950,	-0.928044512310994160,	-0.928025887685696160,	-0.928007260740333460,	-0.927988631474952700,	-0.927969999889600160,	-0.927951365984322820,	-0.927932729759166630,	
+-0.927914091214178890,	-0.927895450349406010,	-0.927876807164894510,	-0.927858161660690910,	-0.927839513836841930,	-0.927820863693393890,	-0.927802211230394080,	-0.927783556447888570,	
+-0.927764899345924320,	-0.927746239924547740,	-0.927727578183805580,	-0.927708914123744450,	-0.927690247744411110,	-0.927671579045852070,	-0.927652908028114180,	-0.927634234691243620,	
+-0.927615559035287810,	-0.927596881060293030,	-0.927578200766306150,	-0.927559518153373790,	-0.927540833221542240,	-0.927522145970858910,	-0.927503456401370220,	-0.927484764513123010,	
+-0.927466070306163790,	-0.927447373780539430,	-0.927428674936296550,	-0.927409973773482110,	-0.927391270292142630,	-0.927372564492325080,	-0.927353856374075750,	-0.927335145937442040,	
+-0.927316433182470480,	-0.927297718109207910,	-0.927279000717700970,	-0.927260281007996290,	-0.927241558980141160,	-0.927222834634182200,	-0.927204107970166060,	-0.927185378988139690,	
+-0.927166647688149940,	-0.927147914070243550,	-0.927129178134467270,	-0.927110439880868160,	-0.927091699309492870,	-0.927072956420388120,	-0.927054211213601210,	-0.927035463689178770,	
+-0.927016713847167660,	-0.926997961687614840,	-0.926979207210567040,	-0.926960450416070890,	-0.926941691304174030,	-0.926922929874922860,	-0.926904166128364460,	-0.926885400064545560,	
+-0.926866631683513240,	-0.926847860985314240,	-0.926829087969995640,	-0.926810312637604270,	-0.926791534988186890,	-0.926772755021790910,	-0.926753972738463050,	-0.926735188138250400,	
+-0.926716401221199580,	-0.926697611987357890,	-0.926678820436771740,	-0.926660026569488980,	-0.926641230385556120,	-0.926622431885020140,	-0.926603631067928090,	-0.926584827934326950,	
+-0.926566022484263780,	-0.926547214717785560,	-0.926528404634939350,	-0.926509592235771670,	-0.926490777520330380,	-0.926471960488662210,	-0.926453141140814120,	-0.926434319476833190,	
+-0.926415495496766380,	-0.926396669200660550,	-0.926377840588563430,	-0.926359009660521650,	-0.926340176416582390,	-0.926321340856792630,	-0.926302502981199540,	-0.926283662789850190,	
+-0.926264820282791670,	-0.926245975460071150,	-0.926227128321735590,	-0.926208278867831970,	-0.926189427098408010,	-0.926170573013510470,	-0.926151716613186400,	-0.926132857897483120,	
+-0.926113996866447350,	-0.926095133520126960,	-0.926076267858568670,	-0.926057399881819790,	-0.926038529589927270,	-0.926019656982938530,	-0.926000782060900640,	-0.925981904823860780,	
+-0.925963025271866140,	-0.925944143404964000,	-0.925925259223201120,	-0.925906372726625460,	-0.925887483915283860,	-0.925868592789223510,	-0.925849699348491710,	-0.925830803593135630,	
+-0.925811905523202250,	-0.925793005138739410,	-0.925774102439794080,	-0.925755197426413550,	-0.925736290098645000,	-0.925717380456535620,	-0.925698468500132820,	-0.925679554229483890,	
+-0.925660637644636130,	-0.925641718745636390,	-0.925622797532532630,	-0.925603874005371920,	-0.925584948164201560,	-0.925566020009068850,	-0.925547089540021070,	-0.925528156757105200,	
+-0.925509221660369310,	-0.925490284249860240,	-0.925471344525625630,	-0.925452402487712540,	-0.925433458136168510,	-0.925414511471040810,	-0.925395562492376870,	-0.925376611200223960,	
+-0.925357657594629180,	-0.925338701675640700,	-0.925319743443305360,	-0.925300782897670700,	-0.925281820038784120,	-0.925262854866692910,	-0.925243887381444250,	-0.925224917583086230,	
+-0.925205945471666010,	-0.925186971047230800,	-0.925167994309828210,	-0.925149015259505550,	-0.925130033896310430,	-0.925111050220290280,	-0.925092064231492370,	-0.925073075929964350,	
+-0.925054085315753390,	-0.925035092388907470,	-0.925016097149473860,	-0.924997099597499980,	-0.924978099733033350,	-0.924959097556121160,	-0.924940093066811580,	-0.924921086265151680,	
+-0.924902077151189110,	-0.924883065724971360,	-0.924864051986545980,	-0.924845035935960460,	-0.924826017573262330,	-0.924806996898499100,	-0.924787973911718410,	-0.924768948612967550,	
+-0.924749921002294470,	-0.924730891079746710,	-0.924711858845371770,	-0.924692824299217060,	-0.924673787441330330,	-0.924654748271758860,	-0.924635706790550850,	-0.924616662997753470,	
+-0.924597616893414460,	-0.924578568477581460,	-0.924559517750302100,	-0.924540464711623880,	-0.924521409361594440,	-0.924502351700261520,	-0.924483291727672410,	-0.924464229443875410,	
+-0.924445164848917810,	-0.924426097942847250,	-0.924407028725711570,	-0.924387957197558170,	-0.924368883358434700,	-0.924349807208389220,	-0.924330728747469240,	-0.924311647975722520,	
+-0.924292564893196670,	-0.924273479499939320,	-0.924254391795998330,	-0.924235301781421440,	-0.924216209456256150,	-0.924197114820550110,	-0.924178017874351500,	-0.924158918617707940,	
+-0.924139817050667060,	-0.924120713173276710,	-0.924101606985584520,	-0.924082498487637900,	-0.924063387679485480,	-0.924044274561174550,	-0.924025159132752960,	-0.924006041394268450,	
+-0.923986921345768760,	-0.923967798987301860,	-0.923948674318915470,	-0.923929547340657350,	-0.923910418052575340,	-0.923891286454717080,	-0.923872152547130840,	-0.923853016329864160,	
+-0.923833877802965000,	-0.923814736966481200,	-0.923795593820460170,	-0.923776448364950430,	-0.923757300599999720,	-0.923738150525655670,	-0.923718998141966230,	-0.923699843448979370,	
+-0.923680686446742840,	-0.923661527135304580,	-0.923642365514712460,	-0.923623201585014540,	-0.923604035346258230,	-0.923584866798492170,	-0.923565695941763960,	-0.923546522776121480,	
+-0.923527347301612680,	-0.923508169518285630,	-0.923488989426187620,	-0.923469807025367630,	-0.923450622315873050,	-0.923431435297751960,	-0.923412245971052310,	-0.923393054335821970,	
+-0.923373860392109000,	-0.923354664139961480,	-0.923335465579427140,	-0.923316264710553950,	-0.923297061533390310,	-0.923277856047984070,	-0.923258648254383200,	-0.923239438152635760,	
+-0.923220225742789610,	-0.923201011024892600,	-0.923181793998993470,	-0.923162574665139850,	-0.923143353023379690,	-0.923124129073761180,	-0.923104902816332400,	-0.923085674251141410,	
+-0.923066443378236070,	-0.923047210197664780,	-0.923027974709475060,	-0.923008736913715770,	-0.922989496810434520,	-0.922970254399679720,	-0.922951009681499120,	-0.922931762655941120,	
+-0.922912513323053240,	-0.922893261682884550,	-0.922874007735482670,	-0.922854751480895690,	-0.922835492919171880,	-0.922816232050359340,	-0.922796968874506240,	-0.922777703391660760,	
+-0.922758435601870990,	-0.922739165505185090,	-0.922719893101650920,	-0.922700618391317450,	-0.922681341374232300,	-0.922662062050443880,	-0.922642780420000360,	-0.922623496482949500,	
+-0.922604210239340250,	-0.922584921689220460,	-0.922565630832638320,	-0.922546337669642110,	-0.922527042200280150,	-0.922507744424600480,	-0.922488444342651540,	-0.922469141954481490,	
+-0.922449837260138520,	-0.922430530259670590,	-0.922411220953126780,	-0.922391909340554820,	-0.922372595422003120,	-0.922353279197519970,	-0.922333960667153560,	-0.922314639830951970,	
+-0.922295316688964140,	-0.922275991241237940,	-0.922256663487821760,	-0.922237333428764020,	-0.922218001064112890,	-0.922198666393916680,	-0.922179329418223890,	-0.922159990137082830,	
+-0.922140648550541340,	-0.922121304658648610,	-0.922101958461452600,	-0.922082609959001710,	-0.922063259151344350,	-0.922043906038528820,	-0.922024550620603180,	-0.922005192897616510,	
+-0.921985832869616770,	-0.921966470536652480,	-0.921947105898772050,	-0.921927738956023870,	-0.921908369708456350,	-0.921888998156117910,	-0.921869624299056940,	-0.921850248137321530,	
+-0.921830869670960950,	-0.921811488900023070,	-0.921792105824556620,	-0.921772720444609780,	-0.921753332760231190,	-0.921733942771468920,	-0.921714550478372140,	-0.921695155880988940,	
+-0.921675758979367930,	-0.921656359773557420,	-0.921636958263606140,	-0.921617554449562390,	-0.921598148331474690,	-0.921578739909391760,	-0.921559329183361920,	-0.921539916153433340,	
+-0.921520500819655420,	-0.921501083182076130,	-0.921481663240744210,	-0.921462240995708170,	-0.921442816447016200,	-0.921423389594717480,	-0.921403960438860190,	-0.921384528979493190,	
+-0.921365095216664760,	-0.921345659150423550,	-0.921326220780818270,	-0.921306780107897460,	-0.921287337131709630,	-0.921267891852303510,	-0.921248444269727180,	-0.921228994384030280,	
+-0.921209542195260740,	-0.921190087703467440,	-0.921170630908698880,	-0.921151171811003810,	-0.921131710410430400,	-0.921112246707028070,	-0.921092780700845100,	-0.921073312391930240,	
+-0.921053841780332010,	-0.921034368866099240,	-0.921014893649280570,	-0.920995416129924640,	-0.920975936308080170,	-0.920956454183795570,	-0.920936969757120030,	-0.920917483028102170,	
+-0.920897993996790620,	-0.920878502663234010,	-0.920859009027481190,	-0.920839513089580560,	-0.920820014849581430,	-0.920800514307532290,	-0.920781011463481790,	-0.920761506317478880,	
+-0.920741998869572090,	-0.920722489119810360,	-0.920702977068242450,	-0.920683462714916970,	-0.920663946059882670,	-0.920644427103188720,	-0.920624905844883660,	-0.920605382285016430,	
+-0.920585856423635770,	-0.920566328260790430,	-0.920546797796528820,	-0.920527265030900650,	-0.920507729963954360,	-0.920488192595738770,	-0.920468652926302640,	-0.920449110955694820,	
+-0.920429566683964250,	-0.920410020111159800,	-0.920390471237330310,	-0.920370920062524630,	-0.920351366586791290,	-0.920331810810179900,	-0.920312252732738980,	-0.920292692354517490,	
+-0.920273129675564180,	-0.920253564695927670,	-0.920233997415657700,	-0.920214427834802670,	-0.920194855953411550,	-0.920175281771533400,	-0.920155705289216860,	-0.920136126506511220,	
+-0.920116545423465220,	-0.920096962040127810,	-0.920077376356548070,	-0.920057788372774520,	-0.920038198088856780,	-0.920018605504843600,	-0.919999010620783930,	-0.919979413436726730,	
+-0.919959813952720970,	-0.919940212168815390,	-0.919920608085059490,	-0.919901001701502240,	-0.919881393018192380,	-0.919861782035178990,	-0.919842168752511240,	-0.919822553170238090,	
+-0.919802935288408510,	-0.919783315107071560,	-0.919763692626276000,	-0.919744067846071540,	-0.919724440766506950,	-0.919704811387631270,	-0.919685179709493590,	-0.919665545732142880,	
+-0.919645909455627960,	-0.919626270879998600,	-0.919606630005303630,	-0.919586986831592120,	-0.919567341358913050,	-0.919547693587315700,	-0.919528043516849030,	-0.919508391147562330,	
+-0.919488736479504580,	-0.919469079512724720,	-0.919449420247272390,	-0.919429758683196650,	-0.919410094820546480,	-0.919390428659371040,	-0.919370760199719530,	-0.919351089441640790,	
+-0.919331416385184560,	-0.919311741030399920,	-0.919292063377335930,	-0.919272383426041780,	-0.919252701176566660,	-0.919233016628959730,	-0.919213329783270310,	-0.919193640639547560,	
+-0.919173949197840680,	-0.919154255458198620,	-0.919134559420671240,	-0.919114861085307490,	-0.919095160452156560,	-0.919075457521267740,	-0.919055752292689990,	-0.919036044766473160,	
+-0.919016334942666100,	-0.918996622821318330,	-0.918976908402479030,	-0.918957191686197380,	-0.918937472672522790,	-0.918917751361504550,	-0.918898027753191850,	-0.918878301847634190,	
+-0.918858573644880330,	-0.918838843144980430,	-0.918819110347983470,	-0.918799375253938620,	-0.918779637862895400,	-0.918759898174903110,	-0.918740156190010590,	-0.918720411908268140,	
+-0.918700665329724720,	-0.918680916454429510,	-0.918661165282432140,	-0.918641411813781780,	-0.918621656048527860,	-0.918601897986719870,	-0.918582137628407120,	-0.918562374973638570,	
+-0.918542610022464620,	-0.918522842774934010,	-0.918503073231096370,	-0.918483301391000980,	-0.918463527254697380,	-0.918443750822234620,	-0.918423972093662780,	-0.918404191069031040,	
+-0.918384407748388810,	-0.918364622131785600,	-0.918344834219270820,	-0.918325044010893880,	-0.918305251506704390,	-0.918285456706751770,	-0.918265659611085190,	-0.918245860219754850,	
+-0.918226058532809700,	-0.918206254550299580,	-0.918186448272273690,	-0.918166639698781760,	-0.918146828829872860,	-0.918127015665597180,	-0.918107200206004110,	-0.918087382451142850,	
+-0.918067562401063240,	-0.918047740055814800,	-0.918027915415446930,	-0.918008088480009250,	-0.917988259249551300,	-0.917968427724122790,	-0.917948593903772810,	-0.917928757788551760,	
+-0.917908919378508830,	-0.917889078673693510,	-0.917869235674155570,	-0.917849390379944170,	-0.917829542791109620,	-0.917809692907701200,	-0.917789840729768550,	-0.917769986257361390,	
+-0.917750129490529140,	-0.917730270429321650,	-0.917710409073788420,	-0.917690545423979210,	-0.917670679479943740,	-0.917650811241731090,	-0.917630940709391770,	-0.917611067882975080,	
+-0.917591192762530760,	-0.917571315348108430,	-0.917551435639757940,	-0.917531553637528360,	-0.917511669341470330,	-0.917491782751633010,	-0.917471893868066380,	-0.917452002690819950,	
+-0.917432109219943560,	-0.917412213455486850,	-0.917392315397499550,	-0.917372415046031510,	-0.917352512401132140,	-0.917332607462851830,	-0.917312700231239900,	-0.917292790706346280,	
+-0.917272878888220730,	-0.917252964776912980,	-0.917233048372472440,	-0.917213129674949610,	-0.917193208684393910,	-0.917173285400855300,	-0.917153359824383400,	-0.917133431955028170,	
+-0.917113501792839240,	-0.917093569337866680,	-0.917073634590160110,	-0.917053697549769180,	-0.917033758216744270,	-0.917013816591135010,	-0.916993872672991260,	-0.916973926462362750,	
+-0.916953977959299450,	-0.916934027163850860,	-0.916914074076067620,	-0.916894118695999130,	-0.916874161023695340,	-0.916854201059206120,	-0.916834238802581410,	-0.916814274253871190,	
+-0.916794307413125180,	-0.916774338280393450,	-0.916754366855725870,	-0.916734393139172040,	-0.916714417130782500,	-0.916694438830606970,	-0.916674458238695310,	-0.916654475355097590,	
+-0.916634490179863310,	-0.916614502713043120,	-0.916594512954686640,	-0.916574520904843930,	-0.916554526563564950,	-0.916534529930899570,	-0.916514531006897950,	-0.916494529791609950,	
+-0.916474526285085630,	-0.916454520487374970,	-0.916434512398527690,	-0.916414502018594530,	-0.916394489347625020,	-0.916374474385669320,	-0.916354457132777520,	-0.916334437588999130,	
+-0.916314415754384990,	-0.916294391628984850,	-0.916274365212848770,	-0.916254336506026720,	-0.916234305508568880,	-0.916214272220525210,	-0.916194236641945880,	-0.916174198772880980,	
+-0.916154158613380560,	-0.916134116163494380,	-0.916114071423273280,	-0.916094024392766990,	-0.916073975072025700,	-0.916053923461099480,	-0.916033869560038290,	-0.916013813368892200,	
+-0.915993754887711950,	-0.915973694116547280,	-0.915953631055448360,	-0.915933565704465380,	-0.915913498063648520,	-0.915893428133047860,	-0.915873355912713680,	-0.915853281402696060,	
+-0.915833204603044850,	-0.915813125513811110,	-0.915793044135044480,	-0.915772960466795240,	-0.915752874509113580,	-0.915732786262049680,	-0.915712695725653610,	-0.915692602899976120,	
+-0.915672507785067040,	-0.915652410380976670,	-0.915632310687755410,	-0.915612208705453230,	-0.915592104434120650,	-0.915571997873807720,	-0.915551889024564860,	-0.915531777886441910,	
+-0.915511664459489840,	-0.915491548743758710,	-0.915471430739298600,	-0.915451310446159900,	-0.915431187864393040,	-0.915411062994047730,	-0.915390935835175170,	-0.915370806387825310,	
+-0.915350674652048340,	-0.915330540627894760,	-0.915310404315414770,	-0.915290265714658880,	-0.915270124825677270,	-0.915249981648520340,	-0.915229836183238390,	-0.915209688429881600,	
+-0.915189538388500810,	-0.915169386059146330,	-0.915149231441868330,	-0.915129074536717210,	-0.915108915343743060,	-0.915088753862997040,	-0.915068590094529120,	-0.915048424038389600,	
+-0.915028255694629200,	-0.915008085063298000,	-0.914987912144446750,	-0.914967736938125610,	-0.914947559444385110,	-0.914927379663275750,	-0.914907197594847620,	-0.914887013239151890,	
+-0.914866826596238520,	-0.914846637666158150,	-0.914826446448961160,	-0.914806252944698080,	-0.914786057153418990,	-0.914765859075175050,	-0.914745658710016560,	-0.914725456057993820,	
+-0.914705251119157570,	-0.914685043893558090,	-0.914664834381246130,	-0.914644622582271970,	-0.914624408496686250,	-0.914604192124539140,	-0.914583973465882050,	-0.914563752520764830,	
+-0.914543529289238430,	-0.914523303771353050,	-0.914503075967159520,	-0.914482845876707810,	-0.914462613500049430,	-0.914442378837234560,	-0.914422141888313610,	-0.914401902653337430,	
+-0.914381661132356420,	-0.914361417325421310,	-0.914341171232582630,	-0.914320922853891100,	-0.914300672189396810,	-0.914280419239151150,	-0.914260164003204530,	-0.914239906481607580,	
+-0.914219646674410690,	-0.914199384581664830,	-0.914179120203420070,	-0.914158853539727810,	-0.914138584590638570,	-0.914118313356202750,	-0.914098039836471200,	-0.914077764031494540,	
+-0.914057485941323410,	-0.914037205566008650,	-0.914016922905600880,	-0.913996637960150740,	-0.913976350729708730,	-0.913956061214326150,	-0.913935769414053410,	-0.913915475328941240,	
+-0.913895178959040380,	-0.913874880304401230,	-0.913854579365075190,	-0.913834276141112790,	-0.913813970632564640,	-0.913793662839481600,	-0.913773352761914400,	-0.913753040399913790,	
+-0.913732725753530590,	-0.913712408822815680,	-0.913692089607819560,	-0.913671768108592960,	-0.913651444325187300,	-0.913631118257653090,	-0.913610789906040940,	-0.913590459270401940,	
+-0.913570126350786720,	-0.913549791147245880,	-0.913529453659830850,	-0.913509113888592240,	-0.913488771833580790,	-0.913468427494847470,	-0.913448080872443110,	-0.913427731966418470,	
+-0.913407380776824480,	-0.913387027303712130,	-0.913366671547131800,	-0.913346313507135240,	-0.913325953183772740,	-0.913305590577095480,	-0.913285225687154200,	-0.913264858513999860,	
+-0.913244489057682960,	-0.913224117318255260,	-0.913203743295767260,	-0.913183366990269920,	-0.913162988401814200,	-0.913142607530450960,	-0.913122224376231140,	-0.913101838939205820,	
+-0.913081451219425850,	-0.913061061216941970,	-0.913040668931805800,	-0.913020274364067850,	-0.912999877513779310,	-0.912979478380991140,	-0.912959076965754180,	-0.912938673268119170,	
+-0.912918267288137850,	-0.912897859025860850,	-0.912877448481339230,	-0.912857035654623950,	-0.912836620545766090,	-0.912816203154816710,	-0.912795783481826770,	-0.912775361526847460,	
+-0.912754937289929620,	-0.912734510771124220,	-0.912714081970482760,	-0.912693650888056210,	-0.912673217523895520,	-0.912652781878051770,	-0.912632343950575690,	-0.912611903741519130,	
+-0.912591461250932710,	-0.912571016478867740,	-0.912550569425375270,	-0.912530120090506270,	-0.912509668474312030,	-0.912489214576843620,	-0.912468758398152110,	-0.912448299938288800,	
+-0.912427839197304300,	-0.912407376175250700,	-0.912386910872178490,	-0.912366443288139100,	-0.912345973423183580,	-0.912325501277363120,	-0.912305026850728560,	-0.912284550143331760,	
+-0.912264071155223570,	-0.912243589886455260,	-0.912223106337078040,	-0.912202620507142960,	-0.912182132396701320,	-0.912161642005804410,	-0.912141149334503300,	-0.912120654382849060,	
+-0.912100157150893430,	-0.912079657638687480,	-0.912059155846282390,	-0.912038651773729450,	-0.912018145421079840,	-0.911997636788384410,	-0.911977125875695350,	-0.911956612683063490,	
+-0.911936097210540030,	-0.911915579458176470,	-0.911895059426023780,	-0.911874537114133580,	-0.911854012522556930,	-0.911833485651345370,	-0.911812956500549610,	-0.911792425070221960,	
+-0.911771891360413140,	-0.911751355371174580,	-0.911730817102557660,	-0.911710276554613670,	-0.911689733727393700,	-0.911669188620949700,	-0.911648641235332850,	-0.911628091570594210,	
+-0.911607539626785420,	-0.911586985403957770,	-0.911566428902162770,	-0.911545870121451610,	-0.911525309061875790,	-0.911504745723486610,	-0.911484180106335250,	-0.911463612210473890,	
+-0.911443042035953390,	-0.911422469582825360,	-0.911401894851141090,	-0.911381317840951780,	-0.911360738552309590,	-0.911340156985265380,	-0.911319573139870890,	-0.911298987016177510,	
+-0.911278398614236540,	-0.911257807934099720,	-0.911237214975818330,	-0.911216619739443790,	-0.911196022225027820,	-0.911175422432621400,	-0.911154820362276800,	-0.911134216014045210,	
+-0.911113609387977920,	-0.911093000484126670,	-0.911072389302542970,	-0.911051775843277900,	-0.911031160106383740,	-0.911010542091911790,	-0.910989921799913340,	-0.910969299230440120,	
+-0.910948674383543770,	-0.910928047259275560,	-0.910907417857687360,	-0.910886786178830570,	-0.910866152222756460,	-0.910845515989517350,	-0.910824877479164410,	-0.910804236691749260,	
+-0.910783593627323530,	-0.910762948285938840,	-0.910742300667646390,	-0.910721650772498670,	-0.910700998600546650,	-0.910680344151842290,	-0.910659687426436990,	-0.910639028424382380,	
+-0.910618367145730300,	-0.910597703590532380,	-0.910577037758840020,	-0.910556369650704860,	-0.910535699266179050,	-0.910515026605314030,	-0.910494351668161510,	-0.910473674454773010,	
+-0.910452994965200380,	-0.910432313199494800,	-0.910411629157708900,	-0.910390942839893860,	-0.910370254246101520,	-0.910349563376383510,	-0.910328870230791680,	-0.910308174809377530,	
+-0.910287477112193040,	-0.910266777139289830,	-0.910246074890719740,	-0.910225370366534060,	-0.910204663566785310,	-0.910183954491524890,	-0.910163243140804550,	-0.910142529514676110,	
+-0.910121813613191000,	-0.910101095436401720,	-0.910080374984359790,	-0.910059652257116820,	-0.910038927254724790,	-0.910018199977235430,	-0.909997470424700470,	-0.909976738597171870,	
+-0.909956004494701490,	-0.909935268117341050,	-0.909914529465142170,	-0.909893788538157170,	-0.909873045336437870,	-0.909852299860035800,	-0.909831552109003130,	-0.909810802083391490,	
+-0.909790049783252510,	-0.909769295208638700,	-0.909748538359601680,	-0.909727779236193410,	-0.909707017838465640,	-0.909686254166470310,	-0.909665488220259280,	-0.909644719999884610,	
+-0.909623949505398150,	-0.909603176736851430,	-0.909582401694297160,	-0.909561624377786760,	-0.909540844787372400,	-0.909520062923105940,	-0.909499278785039330,	-0.909478492373224200,	
+-0.909457703687713060,	-0.909436912728557760,	-0.909416119495810140,	-0.909395323989522280,	-0.909374526209746130,	-0.909353726156533540,	-0.909332923829936690,	-0.909312119230007540,	
+-0.909291312356797720,	-0.909270503210360070,	-0.909249691790746110,	-0.909228878098007900,	-0.909208062132197400,	-0.909187243893366910,	-0.909166423381567830,	-0.909145600596853120,	
+-0.909124775539274400,	-0.909103948208883740,	-0.909083118605733210,	-0.909062286729874880,	-0.909041452581360820,	-0.909020616160243100,	-0.908999777466573900,	-0.908978936500405290,	
+-0.908958093261788890,	-0.908937247750777670,	-0.908916399967423350,	-0.908895549911777900,	-0.908874697583893720,	-0.908853842983822440,	-0.908832986111616780,	-0.908812126967328720,	
+-0.908791265551010420,	-0.908770401862713850,	-0.908749535902491300,	-0.908728667670394950,	-0.908707797166476980,	-0.908686924390789460,	-0.908666049343384570,	-0.908645172024314270,	
+-0.908624292433631300,	-0.908603410571387720,	-0.908582526437635600,	-0.908561640032427120,	-0.908540751355814580,	-0.908519860407849710,	-0.908498967188585690,	-0.908478071698074150,	
+-0.908457173936367490,	-0.908436273903517890,	-0.908415371599577530,	-0.908394467024598810,	-0.908373560178633910,	-0.908352651061735130,	-0.908331739673954310,	-0.908310826015344520,	
+-0.908289910085957720,	-0.908268991885846090,	-0.908248071415061920,	-0.908227148673657720,	-0.908206223661685130,	-0.908185296379197430,	-0.908164366826246460,	-0.908143435002884640,	
+-0.908122500909164240,	-0.908101564545137460,	-0.908080625910856920,	-0.908059685006374680,	-0.908038741831743380,	-0.908017796387014740,	-0.907996848672241950,	-0.907975898687477190,	
+-0.907954946432772530,	-0.907933991908180580,	-0.907913035113753650,	-0.907892076049543690,	-0.907871114715604000,	-0.907850151111986530,	-0.907829185238743560,	-0.907808217095927740,	
+-0.907787246683591340,	-0.907766274001786890,	-0.907745299050566670,	-0.907724321829983190,	-0.907703342340088980,	-0.907682360580935990,	-0.907661376552577500,	-0.907640390255065600,	
+-0.907619401688452680,	-0.907598410852791250,	-0.907577417748133390,	-0.907556422374532490,	-0.907535424732040410,	-0.907514424820709760,	-0.907493422640593180,	-0.907472418191742960,	
+-0.907451411474211600,	-0.907430402488051850,	-0.907409391233316100,	-0.907388377710056760,	-0.907367361918326120,	-0.907346343858177580,	-0.907325323529663110,	-0.907304300932835210,	
+-0.907283276067746720,	-0.907262248934449960,	-0.907241219532997300,	-0.907220187863441830,	-0.907199153925835940,	-0.907178117720232160,	-0.907157079246683210,	-0.907136038505241380,	
+-0.907114995495959530,	-0.907093950218890170,	-0.907072902674086020,	-0.907051852861599170,	-0.907030800781483020,	-0.907009746433789950,	-0.906988689818572500,	-0.906967630935883280,	
+-0.906946569785775040,	-0.906925506368299940,	-0.906904440683511500,	-0.906883372731461910,	-0.906862302512204010,	-0.906841230025790200,	-0.906820155272273440,	-0.906799078251706250,	
+-0.906777998964141350,	-0.906756917409631380,	-0.906735833588228850,	-0.906714747499987040,	-0.906693659144958470,	-0.906672568523195670,	-0.906651475634751460,	-0.906630380479678480,	
+-0.906609283058029240,	-0.906588183369857250,	-0.906567081415214690,	-0.906545977194154530,	-0.906524870706729380,	-0.906503761952991980,	-0.906482650932995290,	-0.906461537646791830,	
+-0.906440422094434650,	-0.906419304275976390,	-0.906398184191469450,	-0.906377061840967560,	-0.906355937224522900,	-0.906334810342188430,	-0.906313681194016900,	-0.906292549780060800,	
+-0.906271416100373650,	-0.906250280155008080,	-0.906229141944016710,	-0.906208001467452510,	-0.906186858725368420,	-0.906165713717817070,	-0.906144566444851420,	-0.906123416906524430,	
+-0.906102265102888830,	-0.906081111033997240,	-0.906059954699903190,	-0.906038796100659290,	-0.906017635236318400,	-0.905996472106933460,	-0.905975306712557330,	-0.905954139053242510,	
+-0.905932969129042750,	-0.905911796940010560,	-0.905890622486198890,	-0.905869445767660600,	-0.905848266784448740,	-0.905827085536616280,	-0.905805902024216070,	-0.905784716247301060,	
+-0.905763528205923870,	-0.905742337900138250,	-0.905721145329996810,	-0.905699950495552520,	-0.905678753396858330,	-0.905657554033967300,	-0.905636352406931970,	-0.905615148515806160,	
+-0.905593942360642390,	-0.905572733941493850,	-0.905551523258413480,	-0.905530310311454260,	-0.905509095100669350,	-0.905487877626111600,	-0.905466657887834200,	-0.905445435885889770,	
+-0.905424211620332150,	-0.905402985091213970,	-0.905381756298588410,	-0.905360525242508320,	-0.905339291923027090,	-0.905318056340197130,	-0.905296818494072400,	-0.905275578384705630,	
+-0.905254336012150000,	-0.905233091376458470,	-0.905211844477684210,	-0.905190595315880310,	-0.905169343891099930,	-0.905148090203396260,	-0.905126834252822250,	-0.905105576039430870,	
+-0.905084315563275950,	-0.905063052824410130,	-0.905041787822886800,	-0.905020520558758920,	-0.904999251032079450,	-0.904977979242902130,	-0.904956705191279910,	-0.904935428877265860,	
+-0.904914150300913380,	-0.904892869462275430,	-0.904871586361405300,	-0.904850300998356170,	-0.904829013373181330,	-0.904807723485933970,	-0.904786431336666920,	-0.904765136925434250,	
+-0.904743840252288600,	-0.904722541317283470,	-0.904701240120471930,	-0.904679936661906830,	-0.904658630941642340,	-0.904637322959731320,	-0.904616012716226940,	-0.904594700211182600,	
+-0.904573385444651380,	-0.904552068416686780,	-0.904530749127341990,	-0.904509427576670300,	-0.904488103764725100,	-0.904466777691559250,	-0.904445449357226820,	-0.904424118761780750,	
+-0.904402785905274450,	-0.904381450787761110,	-0.904360113409294230,	-0.904338773769926550,	-0.904317431869712470,	-0.904296087708704730,	-0.904274741286956730,	-0.904253392604521980,	
+-0.904232041661453660,	-0.904210688457805280,	-0.904189332993630130,	-0.904167975268981740,	-0.904146615283912940,	-0.904125253038478020,	-0.904103888532729940,	-0.904082521766722210,	
+-0.904061152740508130,	-0.904039781454141210,	-0.904018407907674400,	-0.903997032101162000,	-0.903975654034656960,	-0.903954273708212800,	-0.903932891121883020,	-0.903911506275720920,	
+-0.903890119169780130,	-0.903868729804114030,	-0.903847338178776050,	-0.903825944293819790,	-0.903804548149298230,	-0.903783149745265750,	-0.903761749081775310,	-0.903740346158880550,	
+-0.903718940976634970,	-0.903697533535091630,	-0.903676123834304730,	-0.903654711874327670,	-0.903633297655213720,	-0.903611881177016630,	-0.903590462439789800,	-0.903569041443586740,	
+-0.903547618188461190,	-0.903526192674466540,	-0.903504764901656430,	-0.903483334870083920,	-0.903461902579803520,	-0.903440468030868420,	-0.903419031223332110,	-0.903397592157248240,	
+-0.903376150832669980,	-0.903354707249651720,	-0.903333261408246770,	-0.903311813308508630,	-0.903290362950490920,	-0.903268910334247280,	-0.903247455459831430,	-0.903225998327296890,	
+-0.903204538936697390,	-0.903183077288086560,	-0.903161613381517570,	-0.903140147217045050,	-0.903118678794722070,	-0.903097208114602480,	-0.903075735176739780,	-0.903054259981187820,	
+-0.903032782527999680,	-0.903011302817230080,	-0.902989820848932200,	-0.902968336623159900,	-0.902946850139966560,	-0.902925361399406160,	-0.902903870401532420,	-0.902882377146398960,	
+-0.902860881634059530,	-0.902839383864567520,	-0.902817883837977450,	-0.902796381554342720,	-0.902774877013716950,	-0.902753370216154090,	-0.902731861161707670,	-0.902710349850431300,	
+-0.902688836282379500,	-0.902667320457605560,	-0.902645802376163210,	-0.902624282038106520,	-0.902602759443489000,	-0.902581234592364610,	-0.902559707484787200,	-0.902538178120810500,	
+-0.902516646500487910,	-0.902495112623874050,	-0.902473576491022560,	-0.902452038101987040,	-0.902430497456821470,	-0.902408954555579570,	-0.902387409398314970,	-0.902365861985082170,	
+-0.902344312315934820,	-0.902322760390926630,	-0.902301206210111560,	-0.902279649773543470,	-0.902258091081276190,	-0.902236530133363690,	-0.902214966929859920,	-0.902193401470818720,	
+-0.902171833756293620,	-0.902150263786339330,	-0.902128691561009390,	-0.902107117080357730,	-0.902085540344438330,	-0.902063961353304580,	-0.902042380107011430,	-0.902020796605612190,	
+-0.901999210849161010,	-0.901977622837711880,	-0.901956032571318620,	-0.901934440050035310,	-0.901912845273915910,	-0.901891248243014370,	-0.901869648957384640,	-0.901848047417080580,	
+-0.901826443622156580,	-0.901804837572666610,	-0.901783229268664500,	-0.901761618710204330,	-0.901740005897340160,	-0.901718390830125500,	-0.901696773508615320,	-0.901675153932863130,	
+-0.901653532102923090,	-0.901631908018849290,	-0.901610281680695680,	-0.901588653088516320,	-0.901567022242365400,	-0.901545389142296870,	-0.901523753788364470,	-0.901502116180623150,	
+-0.901480476319126420,	-0.901458834203928580,	-0.901437189835083700,	-0.901415543212645720,	-0.901393894336668610,	-0.901372243207207100,	-0.901350589824314930,	-0.901328934188046380,	
+-0.901307276298455420,	-0.901285616155596330,	-0.901263953759523170,	-0.901242289110290140,	-0.901220622207951410,	-0.901198953052560700,	-0.901177281644172990,	-0.901155607982842110,	
+-0.901133932068622250,	-0.901112253901567460,	-0.901090573481732050,	-0.901068890809169850,	-0.901047205883935830,	-0.901025518706083720,	-0.901003829275667910,	-0.900982137592742480,	
+-0.900960443657361720,	-0.900938747469579800,	-0.900917049029451130,	-0.900895348337029780,	-0.900873645392370030,	-0.900851940195525720,	-0.900830232746552050,	-0.900808523045502740,	
+-0.900786811092432190,	-0.900765096887394590,	-0.900743380430443770,	-0.900721661721635040,	-0.900699940761022110,	-0.900678217548659290,	-0.900656492084600860,	-0.900634764368901330,	
+-0.900613034401614780,	-0.900591302182795710,	-0.900569567712498410,	-0.900547830990777070,	-0.900526092017685850,	-0.900504350793279840,	-0.900482607317612870,	-0.900460861590739460,	
+-0.900439113612713780,	-0.900417363383590460,	-0.900395610903423240,	-0.900373856172267390,	-0.900352099190176890,	-0.900330339957206240,	-0.900308578473409620,	-0.900286814738841650,	
+-0.900265048753556620,	-0.900243280517608930,	-0.900221510031053000,	-0.900199737293942980,	-0.900177962306334070,	-0.900156185068280100,	-0.900134405579835820,	-0.900112623841055390,	
+-0.900090839851993450,	-0.900069053612704060,	-0.900047265123242400,	-0.900025474383662540,	-0.900003681394019090,	-0.899981886154366360,	-0.899960088664758960,	-0.899938288925251300,	
+-0.899916486935897870,	-0.899894682696753320,	-0.899872876207871600,	-0.899851067469308210,	-0.899829256481117000,	-0.899807443243352710,	-0.899785627756069850,	-0.899763810019322820,	
+-0.899741990033166020,	-0.899720167797654510,	-0.899698343312842600,	-0.899676516578784890,	-0.899654687595535800,	-0.899632856363150050,	-0.899611022881682150,	-0.899589187151186740,	
+-0.899567349171718320,	-0.899545508943331520,	-0.899523666466080620,	-0.899501821740020800,	-0.899479974765206580,	-0.899458125541692350,	-0.899436274069532750,	-0.899414420348782160,	
+-0.899392564379495880,	-0.899370706161728210,	-0.899348845695533860,	-0.899326982980967250,	-0.899305118018083220,	-0.899283250806936390,	-0.899261381347581490,	-0.899239509640073150,	
+-0.899217635684465890,	-0.899195759480814320,	-0.899173881029173620,	-0.899152000329598300,	-0.899130117382142990,	-0.899108232186862310,	-0.899086344743811110,	-0.899064455053043550,	
+-0.899042563114615390,	-0.899020668928580790,	-0.898998772494994490,	-0.898976873813911230,	-0.898954972885385840,	-0.898933069709472950,	-0.898911164286227420,	-0.898889256615703960,	
+-0.898867346697957090,	-0.898845434533042110,	-0.898823520121013520,	-0.898801603461926280,	-0.898779684555834900,	-0.898757763402794340,	-0.898735840002859000,	-0.898713914356084500,	
+-0.898691986462525130,	-0.898670056322235840,	-0.898648123935271380,	-0.898626189301686700,	-0.898604252421536410,	-0.898582313294875590,	-0.898560371921758970,	-0.898538428302240950,	
+-0.898516482436377270,	-0.898494534324222440,	-0.898472583965831300,	-0.898450631361258690,	-0.898428676510559470,	-0.898406719413788140,	-0.898384760071000430,	-0.898362798482250870,	
+-0.898340834647594180,	-0.898318868567085540,	-0.898296900240779680,	-0.898274929668731570,	-0.898252956850996150,	-0.898230981787628280,	-0.898209004478683020,	-0.898187024924214870,	
+-0.898165043124279470,	-0.898143059078931550,	-0.898121072788225950,	-0.898099084252217630,	-0.898077093470961320,	-0.898055100444512530,	-0.898033105172926120,	-0.898011107656256800,	
+-0.897989107894559770,	-0.897967105887890080,	-0.897945101636302480,	-0.897923095139852250,	-0.897901086398594120,	-0.897879075412583380,	-0.897857062181874550,	-0.897835046706523480,	
+-0.897813028986584770,	-0.897791009022113510,	-0.897768986813164640,	-0.897746962359793450,	-0.897724935662054360,	-0.897702906720003300,	-0.897680875533695020,	-0.897658842103184580,	
+-0.897636806428526950,	-0.897614768509777390,	-0.897592728346990890,	-0.897570685940222600,	-0.897548641289527490,	-0.897526594394960520,	-0.897504545256577300,	-0.897482493874432800,	
+-0.897460440248582070,	-0.897438384379080300,	-0.897416326265982440,	-0.897394265909343460,	-0.897372203309219190,	-0.897350138465664470,	-0.897328071378734270,	-0.897306002048483990,	
+-0.897283930474968680,	-0.897261856658243540,	-0.897239780598363850,	-0.897217702295384560,	-0.897195621749360740,	-0.897173538960348130,	-0.897151453928401790,	-0.897129366653576790,	
+-0.897107277135928300,	-0.897085185375511740,	-0.897063091372381720,	-0.897040995126594410,	-0.897018896638204670,	-0.896996795907267550,	-0.896974692933838580,	-0.896952587717972820,	
+-0.896930480259725550,	-0.896908370559152070,	-0.896886258616307770,	-0.896864144431247730,	-0.896842028004027010,	-0.896819909334701570,	-0.896797788423326360,	-0.896775665269956670,	
+-0.896753539874647790,	-0.896731412237454670,	-0.896709282358433500,	-0.896687150237639120,	-0.896665015875126810,	-0.896642879270951880,	-0.896620740425169930,	-0.896598599337836030,	
+-0.896576456009005600,	-0.896554310438734130,	-0.896532162627076800,	-0.896510012574088690,	-0.896487860279825970,	-0.896465705744343590,	-0.896443548967696850,	-0.896421389949941360,	
+-0.896399228691132420,	-0.896377065191324870,	-0.896354899450575230,	-0.896332731468938220,	-0.896310561246469350,	-0.896288388783224140,	-0.896266214079257990,	-0.896244037134626300,	
+-0.896221857949384470,	-0.896199676523588010,	-0.896177492857291980,	-0.896155306950552570,	-0.896133118803424940,	-0.896110928415964510,	-0.896088735788226680,	-0.896066540920267160,	
+-0.896044343812140820,	-0.896022144463903940,	-0.895999942875611800,	-0.895977739047319810,	-0.895955532979083370,	-0.895933324670958210,	-0.895911114122999620,	-0.895888901335263330,	
+-0.895866686307804750,	-0.895844469040679160,	-0.895822249533942740,	-0.895800027787650550,	-0.895777803801858450,	-0.895755577576621830,	-0.895733349111996200,	-0.895711118408036850,	
+-0.895688885464800080,	-0.895666650282341160,	-0.895644412860715500,	-0.895622173199978940,	-0.895599931300186890,	-0.895577687161394960,	-0.895555440783658900,	-0.895533192167034200,	
+-0.895510941311576490,	-0.895488688217341070,	-0.895466432884384320,	-0.895444175312761440,	-0.895421915502528140,	-0.895399653453740060,	-0.895377389166452490,	-0.895355122640721810,	
+-0.895332853876603330,	-0.895310582874152770,	-0.895288309633425650,	-0.895266034154477810,	-0.895243756437364870,	-0.895221476482142560,	-0.895199194288866520,	-0.895176909857592570,	
+-0.895154623188375910,	-0.895132334281273030,	-0.895110043136339350,	-0.895087749753630590,	-0.895065454133202490,	-0.895043156275110660,	-0.895020856179410630,	-0.894998553846158780,	
+-0.894976249275410640,	-0.894953942467221820,	-0.894931633421648160,	-0.894909322138745410,	-0.894887008618569290,	-0.894864692861175760,	-0.894842374866620440,	-0.894820054634958840,	
+-0.894797732166247360,	-0.894775407460541740,	-0.894753080517897480,	-0.894730751338370540,	-0.894708419922016770,	-0.894686086268891460,	-0.894663750379051440,	-0.894641412252551890,	
+-0.894619071889449000,	-0.894596729289798280,	-0.894574384453655780,	-0.894552037381077360,	-0.894529688072118860,	-0.894507336526836120,	-0.894484982745284540,	-0.894462626727520970,	
+-0.894440268473600920,	-0.894417907983580120,	-0.894395545257514520,	-0.894373180295460090,	-0.894350813097472330,	-0.894328443663607970,	-0.894306071993922420,	-0.894283698088471750,	
+-0.894261321947311780,	-0.894238943570498600,	-0.894216562958087930,	-0.894194180110135960,	-0.894171795026698520,	-0.894149407707831580,	-0.894127018153590640,	-0.894104626364032650,	
+-0.894082232339213020,	-0.894059836079187930,	-0.894037437584013220,	-0.894015036853744390,	-0.893992633888438530,	-0.893970228688151010,	-0.893947821252937920,	-0.893925411582855320,	
+-0.893902999677959050,	-0.893880585538305410,	-0.893858169163950330,	-0.893835750554949790,	-0.893813329711359850,	-0.893790906633236130,	-0.893768481320635690,	-0.893746053773613940,	
+-0.893723623992227050,	-0.893701191976531200,	-0.893678757726582340,	-0.893656321242436100,	-0.893633882524149550,	-0.893611441571778190,	-0.893588998385378310,	-0.893566552965005870,	
+-0.893544105310717150,	-0.893521655422568120,	-0.893499203300614940,	-0.893476748944913690,	-0.893454292355520320,	-0.893431833532491450,	-0.893409372475883150,	-0.893386909185751370,	
+-0.893364443662152290,	-0.893341975905142080,	-0.893319505914776490,	-0.893297033691112690,	-0.893274559234206180,	-0.893252082544113370,	-0.893229603620890210,	-0.893207122464593220,	
+-0.893184639075278230,	-0.893162153453001760,	-0.893139665597819880,	-0.893117175509788530,	-0.893094683188964570,	-0.893072188635403830,	-0.893049691849162720,	-0.893027192830297300,	
+-0.893004691578863970,	-0.892982188094918470,	-0.892959682378517860,	-0.892937174429718090,	-0.892914664248575460,	-0.892892151835146030,	-0.892869637189486310,	-0.892847120311652480,	
+-0.892824601201700930,	-0.892802079859687740,	-0.892779556285669410,	-0.892757030479701790,	-0.892734502441842050,	-0.892711972172145930,	-0.892689439670669940,	-0.892666904937470360,	
+-0.892644367972603160,	-0.892621828776125390,	-0.892599287348093020,	-0.892576743688562440,	-0.892554197797590040,	-0.892531649675232130,	-0.892509099321545100,	-0.892486546736585340,	
+-0.892463991920409260,	-0.892441434873073040,	-0.892418875594632950,	-0.892396314085146080,	-0.892373750344668370,	-0.892351184373256330,	-0.892328616170966260,	-0.892306045737854770,	
+-0.892283473073977710,	-0.892260898179392360,	-0.892238321054154680,	-0.892215741698321300,	-0.892193160111948600,	-0.892170576295092890,	-0.892147990247810770,	-0.892125401970158770,	
+-0.892102811462193170,	-0.892080218723970140,	-0.892057623755546980,	-0.892035026556979750,	-0.892012427128325070,	-0.891989825469639230,	-0.891967221580978740,	-0.891944615462399890,	
+-0.891922007113959970,	-0.891899396535714930,	-0.891876783727721390,	-0.891854168690035980,	-0.891831551422715090,	-0.891808931925815230,	-0.891786310199393140,	-0.891763686243505330,	
+-0.891741060058207860,	-0.891718431643558130,	-0.891695800999612320,	-0.891673168126426940,	-0.891650533024058720,	-0.891627895692564180,	-0.891605256131999480,	-0.891582614342422030,	
+-0.891559970323888010,	-0.891537324076454140,	-0.891514675600176940,	-0.891492024895113030,	-0.891469371961319030,	-0.891446716798851680,	-0.891424059407767480,	-0.891401399788123160,	
+-0.891378737939974910,	-0.891356073863380230,	-0.891333407558395410,	-0.891310739025076960,	-0.891288068263481730,	-0.891265395273665990,	-0.891242720055687050,	-0.891220042609601410,	
+-0.891197362935465590,	-0.891174681033336410,	-0.891151996903270520,	-0.891129310545324630,	-0.891106621959555480,	-0.891083931146019690,	-0.891061238104774110,	-0.891038542835875140,	
+-0.891015845339380160,	-0.890993145615345480,	-0.890970443663828050,	-0.890947739484884480,	-0.890925033078571070,	-0.890902324444945550,	-0.890879613584064200,	-0.890856900495983870,	
+-0.890834185180761300,	-0.890811467638453200,	-0.890788747869116440,	-0.890766025872807840,	-0.890743301649584150,	-0.890720575199502210,	-0.890697846522618520,	-0.890675115618990490,	
+-0.890652382488674730,	-0.890629647131727990,	-0.890606909548207200,	-0.890584169738169010,	-0.890561427701670130,	-0.890538683438767960,	-0.890515936949519140,	-0.890493188233980490,	
+-0.890470437292208870,	-0.890447684124261120,	-0.890424928730194190,	-0.890402171110064920,	-0.890379411263930280,	-0.890356649191846650,	-0.890333884893871890,	-0.890311118370062270,	
+-0.890288349620474980,	-0.890265578645166760,	-0.890242805444194540,	-0.890220030017614960,	-0.890197252365485750,	-0.890174472487863410,	-0.890151690384804790,	-0.890128906056367080,	
+-0.890106119502606980,	-0.890083330723581590,	-0.890060539719347950,	-0.890037746489962920,	-0.890014951035483120,	-0.889992153355966380,	-0.889969353451469210,	-0.889946551322048700,	
+-0.889923746967761780,	-0.889900940388665520,	-0.889878131584816430,	-0.889855320556272590,	-0.889832507303090270,	-0.889809691825326770,	-0.889786874123039030,	-0.889764054196284020,	
+-0.889741232045119010,	-0.889718407669600860,	-0.889695581069786630,	-0.889672752245733500,	-0.889649921197498080,	-0.889627087925138340,	-0.889604252428710770,	-0.889581414708272680,	
+-0.889558574763881000,	-0.889535732595592380,	-0.889512888203464970,	-0.889490041587555290,	-0.889467192747920520,	-0.889444341684617720,	-0.889421488397704070,	-0.889398632887236750,	
+-0.889375775153272820,	-0.889352915195869560,	-0.889330053015083830,	-0.889307188610972690,	-0.889284321983593970,	-0.889261453133004420,	-0.889238582059261210,	-0.889215708762421510,	
+-0.889192833242542610,	-0.889169955499681250,	-0.889147075533895380,	-0.889124193345241840,	-0.889101308933777700,	-0.889078422299560360,	-0.889055533442647090,	-0.889032642363094870,	
+-0.889009749060960970,	-0.888986853536302800,	-0.888963955789177080,	-0.888941055819641890,	-0.888918153627754060,	-0.888895249213570770,	-0.888872342577149420,	-0.888849433718547190,	
+-0.888826522637821030,	-0.888803609335028890,	-0.888780693810227730,	-0.888757776063474950,	-0.888734856094827610,	-0.888711933904343110,	-0.888689009492078850,	-0.888666082858092120,	
+-0.888643154002440090,	-0.888620222925179730,	-0.888597289626369300,	-0.888574354106065670,	-0.888551416364326110,	-0.888528476401208020,	-0.888505534216768700,	-0.888482589811065200,	
+-0.888459643184155600,	-0.888436694336096840,	-0.888413743266946440,	-0.888390789976761690,	-0.888367834465599860,	-0.888344876733518580,	-0.888321916780575040,	-0.888298954606826620,	
+-0.888275990212330950,	-0.888253023597144860,	-0.888230054761326550,	-0.888207083704933180,	-0.888184110428022030,	-0.888161134930650630,	-0.888138157212876030,	-0.888115177274756420,	
+-0.888092195116348960,	-0.888069210737710830,	-0.888046224138899780,	-0.888023235319973180,	-0.888000244280988450,	-0.887977251022003090,	-0.887954255543074720,	-0.887931257844260640,	
+-0.887908257925618010,	-0.887885255787205120,	-0.887862251429079040,	-0.887839244851297390,	-0.887816236053917680,	-0.887793225036997310,	-0.887770211800593460,	-0.887747196344764620,	
+-0.887724178669567650,	-0.887701158775060280,	-0.887678136661300020,	-0.887655112328344380,	-0.887632085776250970,	-0.887609057005077420,	-0.887586026014881120,	-0.887562992805719380,	
+-0.887539957377650680,	-0.887516919730731990,	-0.887493879865020930,	-0.887470837780575230,	-0.887447793477452510,	-0.887424746955709830,	-0.887401698215405710,	-0.887378647256597320,	
+-0.887355594079342280,	-0.887332538683698320,	-0.887309481069723070,	-0.887286421237474030,	-0.887263359187008940,	-0.887240294918385410,	-0.887217228431660840,	-0.887194159726893530,	
+-0.887171088804140860,	-0.887148015663460470,	-0.887124940304910070,	-0.887101862728547190,	-0.887078782934429320,	-0.887055700922614990,	-0.887032616693161360,	-0.887009530246126050,	
+-0.886986441581567140,	-0.886963350699542020,	-0.886940257600108420,	-0.886917162283324290,	-0.886894064749247260,	-0.886870964997935050,	-0.886847863029444960,	-0.886824758843835710,	
+-0.886801652441164600,	-0.886778543821489240,	-0.886755432984867590,	-0.886732319931356930,	-0.886709204661015880,	-0.886686087173901850,	-0.886662967470072560,	-0.886639845549585860,	
+-0.886616721412499480,	-0.886593595058871360,	-0.886570466488759260,	-0.886547335702221000,	-0.886524202699314420,	-0.886501067480096940,	-0.886477930044627160,	-0.886454790392962490,	
+-0.886431648525160990,	-0.886408504441280280,	-0.886385358141378310,	-0.886362209625512490,	-0.886339058893741650,	-0.886315905946123080,	-0.886292750782714860,	-0.886269593403574700,	
+-0.886246433808760560,	-0.886223271998330290,	-0.886200107972341830,	-0.886176941730853150,	-0.886153773273921750,	-0.886130602601606250,	-0.886107429713964280,	-0.886084254611053780,	
+-0.886061077292932600,	-0.886037897759658690,	-0.886014716011289670,	-0.885991532047884170,	-0.885968345869500020,	-0.885945157476194840,	-0.885921966868026930,	-0.885898774045054020,	
+-0.885875579007334160,	-0.885852381754925310,	-0.885829182287885540,	-0.885805980606272470,	-0.885782776710144830,	-0.885759570599560230,	-0.885736362274576640,	-0.885713151735252220,	
+-0.885689938981644940,	-0.885666724013812300,	-0.885643506831813370,	-0.885620287435705640,	-0.885597065825547200,	-0.885573842001396110,	-0.885550615963310420,	-0.885527387711348090,	
+-0.885504157245567410,	-0.885480924566026230,	-0.885457689672782820,	-0.885434452565894810,	-0.885411213245420940,	-0.885387971711419140,	-0.885364727963947380,	-0.885341482003063840,	
+-0.885318233828826130,	-0.885294983441293310,	-0.885271730840523020,	-0.885248476026573310,	-0.885225218999502570,	-0.885201959759368660,	-0.885178698306229860,	-0.885155434640144350,	
+-0.885132168761170290,	-0.885108900669365760,	-0.885085630364788490,	-0.885062357847497650,	-0.885039083117550970,	-0.885015806175006410,	-0.884992527019922480,	-0.884969245652357240,	
+-0.884945962072368420,	-0.884922676280015090,	-0.884899388275355080,	-0.884876098058446580,	-0.884852805629347870,	-0.884829510988117240,	-0.884806214134812640,	-0.884782915069492690,	
+-0.884759613792215350,	-0.884736310303038560,	-0.884713004602021400,	-0.884689696689221820,	-0.884666386564697870,	-0.884643074228508080,	-0.884619759680710490,	-0.884596442921363190,	
+-0.884573123950525120,	-0.884549802768254230,	-0.884526479374608930,	-0.884503153769647280,	-0.884479825953427890,	-0.884456495926008830,	-0.884433163687448620,	-0.884409829237805530,	
+-0.884386492577137310,	-0.884363153705503340,	-0.884339812622961570,	-0.884316469329570200,	-0.884293123825387610,	-0.884269776110472310,	-0.884246426184882030,	-0.884223074048676170,	
+-0.884199719701912690,	-0.884176363144649870,	-0.884153004376946110,	-0.884129643398859800,	-0.884106280210449460,	-0.884082914811773370,	-0.884059547202890040,	-0.884036177383857760,	
+-0.884012805354734700,	-0.883989431115580040,	-0.883966054666451840,	-0.883942676007408390,	-0.883919295138508310,	-0.883895912059809550,	-0.883872526771371510,	-0.883849139273252040,	
+-0.883825749565509860,	-0.883802357648203140,	-0.883778963521390630,	-0.883755567185130710,	-0.883732168639481900,	-0.883708767884502590,	-0.883685364920251400,	-0.883661959746786410,	
+-0.883638552364166880,	-0.883615142772451010,	-0.883591730971697190,	-0.883568316961964140,	-0.883544900743310270,	-0.883521482315793750,	-0.883498061679473980,	-0.883474638834409020,	
+-0.883451213780657390,	-0.883427786518277800,	-0.883404357047328780,	-0.883380925367868720,	-0.883357491479956460,	-0.883334055383650510,	-0.883310617079008930,	-0.883287176566091240,	
+-0.883263733844955600,	-0.883240288915660640,	-0.883216841778264980,	-0.883193392432827240,	-0.883169940879405480,	-0.883146487118059430,	-0.883123031148847050,	-0.883099572971827170,	
+-0.883076112587058320,	-0.883052649994599200,	-0.883029185194508460,	-0.883005718186844700,	-0.882982248971666770,	-0.882958777549032740,	-0.882935303919002100,	-0.882911828081633270,	
+-0.882888350036984850,	-0.882864869785115580,	-0.882841387326084190,	-0.882817902659948860,	-0.882794415786769200,	-0.882770926706603400,	-0.882747435419510400,	-0.882723941925548820,	
+-0.882700446224777390,	-0.882676948317254740,	-0.882653448203039810,	-0.882629945882191240,	-0.882606441354767730,	-0.882582934620827820,	-0.882559425680430890,	-0.882535914533635450,	
+-0.882512401180500230,	-0.882488885621084070,	-0.882465367855445160,	-0.882441847883643330,	-0.882418325705736860,	-0.882394801321784490,	-0.882371274731845180,	-0.882347745935977760,	
+-0.882324214934240850,	-0.882300681726693510,	-0.882277146313394380,	-0.882253608694402500,	-0.882230068869776060,	-0.882206526839574900,	-0.882182982603857410,	-0.882159436162682550,	
+-0.882135887516109050,	-0.882112336664195750,	-0.882088783607001270,	-0.882065228344585230,	-0.882041670877006130,	-0.882018111204322830,	-0.881994549326594270,	-0.881970985243879400,	
+-0.881947418956236960,	-0.881923850463726010,	-0.881900279766405500,	-0.881876706864333840,	-0.881853131757570740,	-0.881829554446174950,	-0.881805974930205180,	-0.881782393209720520,	
+-0.881758809284779900,	-0.881735223155441730,	-0.881711634821765950,	-0.881688044283811200,	-0.881664451541636200,	-0.881640856595300230,	-0.881617259444861910,	-0.881593660090380650,	
+-0.881570058531915060,	-0.881546454769524420,	-0.881522848803267260,	-0.881499240633203280,	-0.881475630259391350,	-0.881452017681890190,	-0.881428402900759080,	-0.881404785916056980,	
+-0.881381166727842390,	-0.881357545336175390,	-0.881333921741114580,	-0.881310295942718810,	-0.881286667941047370,	-0.881263037736159330,	-0.881239405328113620,	-0.881215770716969440,	
+-0.881192133902785830,	-0.881168494885621880,	-0.881144853665536190,	-0.881121210242588940,	-0.881097564616838520,	-0.881073916788344240,	-0.881050266757165250,	-0.881026614523360060,	
+-0.881002960086988860,	-0.880979303448110150,	-0.880955644606783220,	-0.880931983563067230,	-0.880908320317021150,	-0.880884654868704380,	-0.880860987218175960,	-0.880837317365495090,	
+-0.880813645310720930,	-0.880789971053912210,	-0.880766294595129010,	-0.880742615934430040,	-0.880718935071874490,	-0.880695252007521630,	-0.880671566741430660,	-0.880647879273660390,	
+-0.880624189604270800,	-0.880600497733320720,	-0.880576803660869430,	-0.880553107386976120,	-0.880529408911700060,	-0.880505708235100440,	-0.880482005357236530,	-0.880458300278167740,	
+-0.880434592997952680,	-0.880410883516651530,	-0.880387171834323250,	-0.880363457951027000,	-0.880339741866822070,	-0.880316023581767860,	-0.880292303095923100,	-0.880268580409347970,	
+-0.880244855522101520,	-0.880221128434242830,	-0.880197399145831390,	-0.880173667656926400,	-0.880149933967587230,	-0.880126198077873290,	-0.880102459987843750,	-0.880078719697557800,	
+-0.880054977207075370,	-0.880031232516455430,	-0.880007485625757590,	-0.879983736535040920,	-0.879959985244364920,	-0.879936231753788540,	-0.879912476063371970,	-0.879888718173174270,	
+-0.879864958083254710,	-0.879841195793672810,	-0.879817431304487860,	-0.879793664615759360,	-0.879769895727546710,	-0.879746124639909420,	-0.879722351352906660,	-0.879698575866597720,	
+-0.879674798181042660,	-0.879651018296300660,	-0.879627236212431110,	-0.879603451929493520,	-0.879579665447546730,	-0.879555876766651370,	-0.879532085886866270,	-0.879508292808250820,	
+-0.879484497530864770,	-0.879460700054767510,	-0.879436900380018430,	-0.879413098506677150,	-0.879389294434803070,	-0.879365488164455700,	-0.879341679695694320,	-0.879317869028579110,	
+-0.879294056163169140,	-0.879270241099524120,	-0.879246423837703570,	-0.879222604377766780,	-0.879198782719773250,	-0.879174958863783050,	-0.879151132809855460,	-0.879127304558050100,	
+-0.879103474108426490,	-0.879079641461044110,	-0.879055806615962720,	-0.879031969573241700,	-0.879008130332940900,	-0.878984288895119260,	-0.878960445259837300,	-0.878936599427154300,	
+-0.878912751397129770,	-0.878888901169823320,	-0.878865048745294700,	-0.878841194123602950,	-0.878817337304808710,	-0.878793478288971140,	-0.878769617076149760,	-0.878745753666404510,	
+-0.878721888059794680,	-0.878698020256380220,	-0.878674150256220750,	-0.878650278059375900,	-0.878626403665904940,	-0.878602527075868280,	-0.878578648289325410,	-0.878554767306335860,	
+-0.878530884126959450,	-0.878506998751255820,	-0.878483111179284240,	-0.878459221411105330,	-0.878435329446778380,	-0.878411435286363120,	-0.878387538929919160,	-0.878363640377506470,	
+-0.878339739629184660,	-0.878315836685013450,	-0.878291931545052700,	-0.878268024209362010,	-0.878244114678001010,	-0.878220202951029980,	-0.878196289028508550,	-0.878172372910496430,	
+-0.878148454597053260,	-0.878124534088238650,	-0.878100611384112990,	-0.878076686484735910,	-0.878052759390167140,	-0.878028830100466400,	-0.878004898615693640,	-0.877980964935908600,	
+-0.877957029061171120,	-0.877933090991541040,	-0.877909150727078310,	-0.877885208267842330,	-0.877861263613893610,	-0.877837316765291860,	-0.877813367722096730,	-0.877789416484368260,	
+-0.877765463052165740,	-0.877741507425550020,	-0.877717549604580590,	-0.877693589589317200,	-0.877669627379819910,	-0.877645662976148430,	-0.877621696378362850,	-0.877597727586523100,	
+-0.877573756600689040,	-0.877549783420920490,	-0.877525808047277090,	-0.877501830479819670,	-0.877477850718607620,	-0.877453868763700910,	-0.877429884615159580,	-0.877405898273043490,	
+-0.877381909737412150,	-0.877357919008326600,	-0.877333926085846260,	-0.877309930970031070,	-0.877285933660940990,	-0.877261934158636180,	-0.877237932463176500,	-0.877213928574621990,	
+-0.877189922493032630,	-0.877165914218468010,	-0.877141903750989100,	-0.877117891090655410,	-0.877093876237526990,	-0.877069859191663910,	-0.877045839953126130,	-0.877021818521973360,	
+-0.876997794898266460,	-0.876973769082065040,	-0.876949741073429160,	-0.876925710872419000,	-0.876901678479094620,	-0.876877643893515970,	-0.876853607115743230,	-0.876829568145836460,	
+-0.876805526983855720,	-0.876781483629860860,	-0.876757438083912600,	-0.876733390346070780,	-0.876709340416395480,	-0.876685288294946850,	-0.876661233981784640,	-0.876637177476969680,	
+-0.876613118780561810,	-0.876589057892621090,	-0.876564994813207820,	-0.876540929542382050,	-0.876516862080203850,	-0.876492792426733610,	-0.876468720582031290,	-0.876444646546157280,	
+-0.876420570319171200,	-0.876396491901134000,	-0.876372411292105640,	-0.876348328492146390,	-0.876324243501316100,	-0.876300156319674950,	-0.876276066947283770,	-0.876251975384202410,	
+-0.876227881630491150,	-0.876203785686210160,	-0.876179687551419620,	-0.876155587226180030,	-0.876131484710551360,	-0.876107380004593980,	-0.876083273108368200,	-0.876059164021933730,	
+-0.876035052745351870,	-0.876010939278682340,	-0.875986823621985430,	-0.875962705775321540,	-0.875938585738750830,	-0.875914463512333260,	-0.875890339096129900,	-0.875866212490200690,	
+-0.875842083694606030,	-0.875817952709406100,	-0.875793819534661290,	-0.875769684170431990,	-0.875745546616778500,	-0.875721406873761100,	-0.875697264941439730,	-0.875673120819875580,	
+-0.875648974509128710,	-0.875624826009259390,	-0.875600675320328040,	-0.875576522442394920,	-0.875552367375520110,	-0.875528210119764780,	-0.875504050675188990,	-0.875479889041853030,	
+-0.875455725219817290,	-0.875431559209142400,	-0.875407391009888510,	-0.875383220622116040,	-0.875359048045885710,	-0.875334873281257250,	-0.875310696328291950,	-0.875286517187050080,	
+-0.875262335857591830,	-0.875238152339977700,	-0.875213966634268200,	-0.875189778740523390,	-0.875165588658804560,	-0.875141396389171770,	-0.875117201931685520,	-0.875093005286406210,	
+-0.875068806453394350,	-0.875044605432710560,	-0.875020402224415240,	-0.874996196828568880,	-0.874971989245232010,	-0.874947779474464780,	-0.874923567516328490,	-0.874899353370883310,	
+-0.874875137038189750,	-0.874850918518308430,	-0.874826697811299290,	-0.874802474917223850,	-0.874778249836142160,	-0.874754022568114960,	-0.874729793113202650,	-0.874705561471465830,	
+-0.874681327642965130,	-0.874657091627761170,	-0.874632853425914350,	-0.874608613037485490,	-0.874584370462534680,	-0.874560125701123400,	-0.874535878753311740,	-0.874511629619160290,	
+-0.874487378298729910,	-0.874463124792081100,	-0.874438869099273930,	-0.874414611220370120,	-0.874390351155429730,	-0.874366088904513510,	-0.874341824467682050,	-0.874317557844995990,	
+-0.874293289036516040,	-0.874269018042302950,	-0.874244744862417210,	-0.874220469496919230,	-0.874196191945870500,	-0.874171912209331330,	-0.874147630287362310,	-0.874123346180024300,	
+-0.874099059887377790,	-0.874074771409483310,	-0.874050480746402350,	-0.874026187898195080,	-0.874001892864922470,	-0.873977595646645010,	-0.873953296243423660,	-0.873928994655319040,	
+-0.873904690882391870,	-0.873880384924702990,	-0.873856076782312810,	-0.873831766455282820,	-0.873807453943673320,	-0.873783139247545250,	-0.873758822366959450,	-0.873734503301976440,	
+-0.873710182052656830,	-0.873685858619062120,	-0.873661533001252820,	-0.873637205199289670,	-0.873612875213233500,	-0.873588543043145150,	-0.873564208689085460,	-0.873539872151115280,	
+-0.873515533429295330,	-0.873491192523686570,	-0.873466849434349380,	-0.873442504161345610,	-0.873418156704735550,	-0.873393807064580030,	-0.873369455240940010,	-0.873345101233875880,	
+-0.873320745043449480,	-0.873296386669721310,	-0.873272026112752010,	-0.873247663372602730,	-0.873223298449334330,	-0.873198931343007630,	-0.873174562053683600,	-0.873150190581423070,	
+-0.873125816926287210,	-0.873101441088336320,	-0.873077063067632330,	-0.873052682864235540,	-0.873028300478207120,	-0.873003915909608020,	-0.872979529158499080,	-0.872955140224940810,	
+-0.872930749108995260,	-0.872906355810722730,	-0.872881960330184280,	-0.872857562667441080,	-0.872833162822553850,	-0.872808760795583780,	-0.872784356586591700,	-0.872759950195638790,	
+-0.872735541622785660,	-0.872711130868094040,	-0.872686717931624560,	-0.872662302813438260,	-0.872637885513596330,	-0.872613466032159610,	-0.872589044369188830,	-0.872564620524745820,	
+-0.872540194498891310,	-0.872515766291686260,	-0.872491335903191830,	-0.872466903333468990,	-0.872442468582579010,	-0.872418031650582740,	-0.872393592537541450,	-0.872369151243515770,	
+-0.872344707768567650,	-0.872320262112757700,	-0.872295814276147110,	-0.872271364258797030,	-0.872246912060768540,	-0.872222457682122250,	-0.872198001122920340,	-0.872173542383223420,	
+-0.872149081463092560,	-0.872124618362589140,	-0.872100153081774130,	-0.872075685620708580,	-0.872051215979454010,	-0.872026744158071350,	-0.872002270156621790,	-0.871977793975166170,	
+-0.871953315613766430,	-0.871928835072483420,	-0.871904352351378310,	-0.871879867450512380,	-0.871855380369946360,	-0.871830891109742210,	-0.871806399669960990,	-0.871781906050663640,	
+-0.871757410251911560,	-0.871732912273766040,	-0.871708412116288130,	-0.871683909779539250,	-0.871659405263580540,	-0.871634898568473430,	-0.871610389694278510,	-0.871585878641058080,	
+-0.871561365408872970,	-0.871536849997784470,	-0.871512332407853860,	-0.871487812639142320,	-0.871463290691710910,	-0.871438766565621690,	-0.871414240260935610,	-0.871389711777713850,	
+-0.871365181116017800,	-0.871340648275908850,	-0.871316113257448180,	-0.871291576060697290,	-0.871267036685717480,	-0.871242495132569680,	-0.871217951401315970,	-0.871193405492017510,	
+-0.871168857404735490,	-0.871144307139531280,	-0.871119754696466300,	-0.871095200075601590,	-0.871070643276999230,	-0.871046084300720280,	-0.871021523146826130,	-0.870996959815378170,	
+-0.870972394306437800,	-0.870947826620066420,	-0.870923256756325540,	-0.870898684715276540,	-0.870874110496980270,	-0.870849534101499230,	-0.870824955528894380,	-0.870800374779227120,	
+-0.870775791852558930,	-0.870751206748951230,	-0.870726619468465080,	-0.870702030011162860,	-0.870677438377105540,	-0.870652844566354610,	-0.870628248578971590,	-0.870603650415017970,	
+-0.870579050074555270,	-0.870554447557644770,	-0.870529842864348310,	-0.870505235994727180,	-0.870480626948842540,	-0.870456015726756790,	-0.870431402328530890,	-0.870406786754226670,	
+-0.870382169003905300,	-0.870357549077628190,	-0.870332926975457610,	-0.870308302697454740,	-0.870283676243681080,	-0.870259047614198140,	-0.870234416809067770,	-0.870209783828351240,	
+-0.870185148672110280,	-0.870160511340406400,	-0.870135871833301320,	-0.870111230150856120,	-0.870086586293133180,	-0.870061940260193900,	-0.870037292052099680,	-0.870012641668912350,	
+-0.869987989110693300,	-0.869963334377503840,	-0.869938677469406560,	-0.869914018386462540,	-0.869889357128733390,	-0.869864693696280940,	-0.869840028089166830,	-0.869815360307452550,	
+-0.869790690351199820,	-0.869766018220470500,	-0.869741343915325650,	-0.869716667435827870,	-0.869691988782038350,	-0.869667307954018920,	-0.869642624951831200,	-0.869617939775537030,	
+-0.869593252425197470,	-0.869568562900875140,	-0.869543871202631550,	-0.869519177330528190,	-0.869494481284626920,	-0.869469783064989450,	-0.869445082671677530,	-0.869420380104752980,	
+-0.869395675364277310,	-0.869370968450312140,	-0.869346259362919980,	-0.869321548102162110,	-0.869296834668100370,	-0.869272119060796600,	-0.869247401280312530,	-0.869222681326709430,	
+-0.869197959200050160,	-0.869173234900396000,	-0.869148508427808660,	-0.869123779782350110,	-0.869099048964082190,	-0.869074315973066500,	-0.869049580809365120,	-0.869024843473039770,	
+-0.869000103964152280,	-0.868975362282764060,	-0.868950618428937950,	-0.868925872402735220,	-0.868901124204217950,	-0.868876373833447730,	-0.868851621290486210,	-0.868826866575395980,	
+-0.868802109688238680,	-0.868777350629076130,	-0.868752589397970070,	-0.868727825994982660,	-0.868703060420175640,	-0.868678292673610960,	-0.868653522755350570,	-0.868628750665456420,	
+-0.868603976403989900,	-0.868579199971013850,	-0.868554421366589780,	-0.868529640590779750,	-0.868504857643645600,	-0.868480072525249280,	-0.868455285235652300,	-0.868430495774917600,	
+-0.868405704143106690,	-0.868380910340281420,	-0.868356114366503950,	-0.868331316221836240,	-0.868306515906340120,	-0.868281713420077760,	-0.868256908763111120,	-0.868232101935501820,	
+-0.868207292937312690,	-0.868182481768605240,	-0.868157668429441640,	-0.868132852919883960,	-0.868108035239994020,	-0.868083215389833570,	-0.868058393369465550,	-0.868033569178951580,	
+-0.868008742818353610,	-0.867983914287733800,	-0.867959083587154230,	-0.867934250716676960,	-0.867909415676364150,	-0.867884578466277650,	-0.867859739086479290,	-0.867834897537032130,	
+-0.867810053817997580,	-0.867785207929438030,	-0.867760359871415310,	-0.867735509643991820,	-0.867710657247229070,	-0.867685802681190110,	-0.867660945945936680,	-0.867636087041530830,	
+-0.867611225968034860,	-0.867586362725510710,	-0.867561497314020660,	-0.867536629733627000,	-0.867511759984391670,	-0.867486888066376970,	-0.867462013979644510,	-0.867437137724257570,	
+-0.867412259300277770,	-0.867387378707767280,	-0.867362495946788380,	-0.867337611017402700,	-0.867312723919673510,	-0.867287834653662550,	-0.867262943219431980,	-0.867238049617044090,	
+-0.867213153846561060,	-0.867188255908045050,	-0.867163355801558460,	-0.867138453527163460,	-0.867113549084922440,	-0.867088642474897030,	-0.867063733697150400,	-0.867038822751744490,	
+-0.867013909638741480,	-0.866988994358203760,	-0.866964076910193500,	-0.866939157294772670,	-0.866914235512004310,	-0.866889311561950480,	-0.866864385444673260,	-0.866839457160235140,	
+-0.866814526708698300,	-0.866789594090125240,	-0.866764659304578130,	-0.866739722352119380,	-0.866714783232810930,	-0.866689841946715940,	-0.866664898493896270,	-0.866639952874414420,	
+-0.866615005088332670,	-0.866590055135713410,	-0.866565103016618600,	-0.866540148731111510,	-0.866515192279254000,	-0.866490233661108440,	-0.866465272876737470,	-0.866440309926203130,	
+-0.866415344809568170,	-0.866390377526894740,	-0.866365408078245470,	-0.866340436463682080,	-0.866315462683268200,	-0.866290486737065550,	-0.866265508625136740,	-0.866240528347544170,	
+-0.866215545904350240,	-0.866190561295617000,	-0.866165574521407860,	-0.866140585581784750,	-0.866115594476810190,	-0.866090601206546570,	-0.866065605771056510,	-0.866040608170402510,	
+-0.866015608404646860,	-0.865990606473852290,	-0.865965602378081070,	-0.865940596117395490,	-0.865915587691858830,	-0.865890577101533280,	-0.865865564346481210,	-0.865840549426765250,	
+-0.865815532342447570,	-0.865790513093591340,	-0.865765491680258960,	-0.865740468102512820,	-0.865715442360415420,	-0.865690414454029500,	-0.865665384383417560,	-0.865640352148642100,	
+-0.865615317749765740,	-0.865590281186851110,	-0.865565242459960360,	-0.865540201569157010,	-0.865515158514503000,	-0.865490113296061180,	-0.865465065913894160,	-0.865440016368064340,	
+-0.865414964658634100,	-0.865389910785666850,	-0.865364854749224870,	-0.865339796549370770,	-0.865314736186167170,	-0.865289673659676680,	-0.865264608969962050,	-0.865239542117085870,	
+-0.865214473101110880,	-0.865189401922099140,	-0.865164328580114490,	-0.865139253075218880,	-0.865114175407475260,	-0.865089095576946130,	-0.865064013583694340,	-0.865038929427782040,	
+-0.865013843109272870,	-0.864988754628229000,	-0.864963663984713360,	-0.864938571178788470,	-0.864913476210517170,	-0.864888379079962190,	-0.864863279787186360,	-0.864838178332252180,	
+-0.864813074715222170,	-0.864787968936159950,	-0.864762860995127780,	-0.864737750892188520,	-0.864712638627404770,	-0.864687524200839500,	-0.864662407612554970,	-0.864637288862614820,	
+-0.864612167951081420,	-0.864587044878017740,	-0.864561919643486390,	-0.864536792247550200,	-0.864511662690272020,	-0.864486530971714680,	-0.864461397091941030,	-0.864436261051014010,	
+-0.864411122848995680,	-0.864385982485950110,	-0.864360839961939580,	-0.864335695277026920,	-0.864310548431275080,	-0.864285399424746360,	-0.864260248257504580,	-0.864235094929612260,	
+-0.864209939441132110,	-0.864184781792127210,	-0.864159621982660280,	-0.864134460012794370,	-0.864109295882592220,	-0.864084129592116890,	-0.864058961141431210,	-0.864033790530597700,	
+-0.864008617759680080,	-0.863983442828741070,	-0.863958265737843400,	-0.863933086487050030,	-0.863907905076423900,	-0.863882721506027630,	-0.863857535775924950,	-0.863832347886178460,	
+-0.863807157836851140,	-0.863781965628005910,	-0.863756771259705740,	-0.863731574732013560,	-0.863706376044992560,	-0.863681175198705580,	-0.863655972193215330,	-0.863630767028585430,	
+-0.863605559704878620,	-0.863580350222158070,	-0.863555138580486490,	-0.863529924779927180,	-0.863504708820542530,	-0.863479490702396490,	-0.863454270425551900,	-0.863429047990071470,	
+-0.863403823396018510,	-0.863378596643455950,	-0.863353367732446970,	-0.863328136663054520,	-0.863302903435341770,	-0.863277668049371230,	-0.863252430505207060,	-0.863227190802911770,	
+-0.863201948942548420,	-0.863176704924180300,	-0.863151458747870470,	-0.863126210413681430,	-0.863100959921677350,	-0.863075707271920840,	-0.863050452464475200,	-0.863025195499403260,	
+-0.862999936376768420,	-0.862974675096633730,	-0.862949411659062360,	-0.862924146064117490,	-0.862898878311862180,	-0.862873608402359270,	-0.862848336335672710,	-0.862823062111865440,	
+-0.862797785731000410,	-0.862772507193140910,	-0.862747226498349780,	-0.862721943646690970,	-0.862696658638227310,	-0.862671371473022090,	-0.862646082151138360,	-0.862620790672639410,	
+-0.862595497037588530,	-0.862570201246048880,	-0.862544903298083750,	-0.862519603193756310,	-0.862494300933129510,	-0.862468996516267290,	-0.862443689943232620,	-0.862418381214088760,	
+-0.862393070328899000,	-0.862367757287725970,	-0.862342442090634040,	-0.862317124737686070,	-0.862291805228945330,	-0.862266483564474990,	-0.862241159744338460,	-0.862215833768599000,	
+-0.862190505637319910,	-0.862165175350564690,	-0.862139842908396400,	-0.862114508310878210,	-0.862089171558074070,	-0.862063832650047050,	-0.862038491586860410,	-0.862013148368577560,	
+-0.861987802995261900,	-0.861962455466976250,	-0.861937105783784910,	-0.861911753945750810,	-0.861886399952937250,	-0.861861043805407730,	-0.861835685503225650,	-0.861810325046454380,	
+-0.861784962435157230,	-0.861759597669397690,	-0.861734230749238720,	-0.861708861674744590,	-0.861683490445978250,	-0.861658117063003330,	-0.861632741525882980,	-0.861607363834680950,	
+-0.861581983989459840,	-0.861556601990284390,	-0.861531217837217420,	-0.861505831530322340,	-0.861480443069662760,	-0.861455052455301960,	-0.861429659687303560,	-0.861404264765731060,	
+-0.861378867690647860,	-0.861353468462117130,	-0.861328067080203040,	-0.861302663544968870,	-0.861277257856478020,	-0.861251850014794100,	-0.861226440019980500,	-0.861201027872100290,	
+-0.861175613571218080,	-0.861150197117396710,	-0.861124778510699910,	-0.861099357751191170,	-0.861073934838934020,	-0.861048509773992050,	-0.861023082556428790,	-0.860997653186307830,	
+-0.860972221663692690,	-0.860946787988646540,	-0.860921352161234000,	-0.860895914181518010,	-0.860870474049562180,	-0.860845031765430260,	-0.860819587329185180,	-0.860794140740891670,	
+-0.860768692000612900,	-0.860743241108412270,	-0.860717788064353510,	-0.860692332868500330,	-0.860666875520916360,	-0.860641416021665220,	-0.860615954370810510,	-0.860590490568415860,	
+-0.860565024614544540,	-0.860539556509261170,	-0.860514086252628820,	-0.860488613844711310,	-0.860463139285572280,	-0.860437662575275430,	-0.860412183713883950,	-0.860386702701462450,	
+-0.860361219538074210,	-0.860335734223782840,	-0.860310246758652200,	-0.860284757142745990,	-0.860259265376127850,	-0.860233771458861480,	-0.860208275391010750,	-0.860182777172638800,	
+-0.860157276803810490,	-0.860131774284588870,	-0.860106269615037890,	-0.860080762795221280,	-0.860055253825202650,	-0.860029742705045510,	-0.860004229434814470,	-0.859978714014572820,	
+-0.859953196444384280,	-0.859927676724312920,	-0.859902154854422340,	-0.859876630834776280,	-0.859851104665438680,	-0.859825576346473390,	-0.859800045877943670,	-0.859774513259914270,	
+-0.859748978492448580,	-0.859723441575610540,	-0.859697902509463760,	-0.859672361294072320,	-0.859646817929499480,	-0.859621272415809990,	-0.859595724753067450,	-0.859570174941335470,	
+-0.859544622980678130,	-0.859519068871159250,	-0.859493512612842680,	-0.859467954205792360,	-0.859442393650072020,	-0.859416830945745840,	-0.859391266092877080,	-0.859365699091530600,	
+-0.859340129941769890,	-0.859314558643658800,	-0.859288985197261380,	-0.859263409602641030,	-0.859237831859862580,	-0.859212251968989540,	-0.859186669930085970,	-0.859161085743215590,	
+-0.859135499408442580,	-0.859109910925830890,	-0.859084320295444240,	-0.859058727517346910,	-0.859033132591602740,	-0.859007535518275240,	-0.858981936297429470,	-0.858956334929128820,	
+-0.858930731413437230,	-0.858905125750419000,	-0.858879517940137730,	-0.858853907982657370,	-0.858828295878042660,	-0.858802681626357200,	-0.858777065227665060,	-0.858751446682030180,	
+-0.858725825989516740,	-0.858700203150188690,	-0.858674578164110190,	-0.858648951031345310,	-0.858623321751957440,	-0.858597690326011850,	-0.858572056753571950,	-0.858546421034701910,	
+-0.858520783169465900,	-0.858495143157927850,	-0.858469501000151510,	-0.858443856696201930,	-0.858418210246142620,	-0.858392561650037860,	-0.858366910907951700,	-0.858341258019948210,	
+-0.858315602986091550,	-0.858289945806445910,	-0.858264286481075440,	-0.858238625010043780,	-0.858212961393416070,	-0.858187295631255840,	-0.858161627723627470,	-0.858135957670595030,	
+-0.858110285472222570,	-0.858084611128574040,	-0.858058934639714500,	-0.858033256005707570,	-0.858007575226617410,	-0.857981892302508430,	-0.857956207233444680,	-0.857930520019490330,	
+-0.857904830660709770,	-0.857879139157167180,	-0.857853445508926620,	-0.857827749716052130,	-0.857802051778608580,	-0.857776351696660000,	-0.857750649470270470,	-0.857724945099504370,	
+-0.857699238584425430,	-0.857673529925098930,	-0.857647819121588490,	-0.857622106173958510,	-0.857596391082273260,	-0.857570673846597130,	-0.857544954466994300,	-0.857519232943528940,	
+-0.857493509276265660,	-0.857467783465268530,	-0.857442055510601490,	-0.857416325412329820,	-0.857390593170517250,	-0.857364858785228280,	-0.857339122256527200,	-0.857313383584478170,	
+-0.857287642769145370,	-0.857261899810593750,	-0.857236154708887480,	-0.857210407464090830,	-0.857184658076268200,	-0.857158906545483880,	-0.857133152871802250,	-0.857107397055287820,	
+-0.857081639096004880,	-0.857055878994017360,	-0.857030116749390560,	-0.857004352362188530,	-0.856978585832475660,	-0.856952817160316240,	-0.856927046345774770,	-0.856901273388915310,	
+-0.856875498289803140,	-0.856849721048502100,	-0.856823941665076800,	-0.856798160139591650,	-0.856772376472111130,	-0.856746590662699650,	-0.856720802711421700,	-0.856695012618341800,	
+-0.856669220383523890,	-0.856643426007033360,	-0.856617629488934160,	-0.856591830829291020,	-0.856566030028168330,	-0.856540227085630490,	-0.856514422001741660,	-0.856488614776567130,	
+-0.856462805410171170,	-0.856436993902618180,	-0.856411180253972670,	-0.856385364464299250,	-0.856359546533662420,	-0.856333726462126690,	-0.856307904249756670,	-0.856282079896616980,	
+-0.856256253402771450,	-0.856230424768285920,	-0.856204593993224240,	-0.856178761077651010,	-0.856152926021630960,	-0.856127088825228140,	-0.856101249488508080,	-0.856075408011534810,	
+-0.856049564394373070,	-0.856023718637087370,	-0.855997870739742430,	-0.855972020702402860,	-0.855946168525133170,	-0.855920314207998080,	-0.855894457751062210,	-0.855868599154389730,	
+-0.855842738418046150,	-0.855816875542095850,	-0.855791010526603220,	-0.855765143371633120,	-0.855739274077250260,	-0.855713402643518580,	-0.855687529070504050,	-0.855661653358270600,	
+-0.855635775506882970,	-0.855609895516405980,	-0.855584013386904150,	-0.855558129118442310,	-0.855532242711085190,	-0.855506354164897510,	-0.855480463479943440,	-0.855454570656288720,	
+-0.855428675693997500,	-0.855402778593134630,	-0.855376879353764720,	-0.855350977975952720,	-0.855325074459762800,	-0.855299168805260690,	-0.855273261012510560,	-0.855247351081577340,	
+-0.855221439012525670,	-0.855195524805420490,	-0.855169608460326520,	-0.855143689977308500,	-0.855117769356431250,	-0.855091846597759050,	-0.855065921701357760,	-0.855039994667291640,	
+-0.855014065495625530,	-0.854988134186424280,	-0.854962200739752710,	-0.854936265155675110,	-0.854910327434257430,	-0.854884387575563840,	-0.854858445579659290,	-0.854832501446608610,	
+-0.854806555176476750,	-0.854780606769328430,	-0.854754656225228620,	-0.854728703544242130,	-0.854702748726433930,	-0.854676791771868390,	-0.854650832680611370,	-0.854624871452727140,	
+-0.854598908088280870,	-0.854572942587337290,	-0.854546974949960900,	-0.854521005176217540,	-0.854495033266171600,	-0.854469059219888140,	-0.854443083037431990,	-0.854417104718868110,	
+-0.854391124264261560,	-0.854365141673677160,	-0.854339156947179880,	-0.854313170084834760,	-0.854287181086706200,	-0.854261189952860160,	-0.854235196683361230,	-0.854209201278274160,	
+-0.854183203737664210,	-0.854157204061596230,	-0.854131202250134720,	-0.854105198303345750,	-0.854079192221293690,	-0.854053184004043730,	-0.854027173651660700,	-0.854001161164209880,	
+-0.853975146541756100,	-0.853949129784364440,	-0.853923110892099930,	-0.853897089865027210,	-0.853871066703212220,	-0.853845041406719570,	-0.853819013975614330,	-0.853792984409961540,	
+-0.853766952709826280,	-0.853740918875273260,	-0.853714882906368320,	-0.853688844803176190,	-0.853662804565761930,	-0.853636762194190600,	-0.853610717688527480,	-0.853584671048837510,	
+-0.853558622275185860,	-0.853532571367637720,	-0.853506518326257680,	-0.853480463151111700,	-0.853454405842264730,	-0.853428346399781600,	-0.853402284823727600,	-0.853376221114168000,	
+-0.853350155271167310,	-0.853324087294791700,	-0.853298017185105890,	-0.853271944942175060,	-0.853245870566064380,	-0.853219794056838900,	-0.853193715414564010,	-0.853167634639304890,	
+-0.853141551731126600,	-0.853115466690094530,	-0.853089379516273280,	-0.853063290209729040,	-0.853037198770526530,	-0.853011105198731020,	-0.852985009494407810,	-0.852958911657621610,	
+-0.852932811688438600,	-0.852906709586923490,	-0.852880605353141700,	-0.852854498987158370,	-0.852828390489038690,	-0.852802279858848160,	-0.852776167096651940,	-0.852750052202515210,	
+-0.852723935176503360,	-0.852697816018681220,	-0.852671694729115080,	-0.852645571307869670,	-0.852619445755010250,	-0.852593318070602350,	-0.852567188254711010,	-0.852541056307401290,	
+-0.852514922228739480,	-0.852488786018790300,	-0.852462647677619150,	-0.852436507205291400,	-0.852410364601872360,	-0.852384219867427410,	-0.852358073002021930,	-0.852331924005721220,	
+-0.852305772878590220,	-0.852279619620695320,	-0.852253464232101350,	-0.852227306712873720,	-0.852201147063077810,	-0.852174985282779130,	-0.852148821372042400,	-0.852122655330934120,	
+-0.852096487159519240,	-0.852070316857863050,	-0.852044144426031160,	-0.852017969864088840,	-0.851991793172101610,	-0.851965614350134960,	-0.851939433398254290,	-0.851913250316524430,	
+-0.851887065105012000,	-0.851860877763781940,	-0.851834688292899660,	-0.851808496692430640,	-0.851782302962440400,	-0.851756107102993880,	-0.851729909114157690,	-0.851703708995996570,	
+-0.851677506748576230,	-0.851651302371962180,	-0.851625095866219820,	-0.851598887231414750,	-0.851572676467612480,	-0.851546463574878510,	-0.851520248553278350,	-0.851494031402877050,	
+-0.851467812123741230,	-0.851441590715935840,	-0.851415367179526480,	-0.851389141514578780,	-0.851362913721157690,	-0.851336683799329700,	-0.851310451749160090,	-0.851284217570714370,	
+-0.851257981264058050,	-0.851231742829256840,	-0.851205502266376260,	-0.851179259575481910,	-0.851153014756639400,	-0.851126767809914360,	-0.851100518735371960,	-0.851074267533078690,	
+-0.851048014203099720,	-0.851021758745500790,	-0.850995501160347390,	-0.850969241447705360,	-0.850942979607639650,	-0.850916715640216980,	-0.850890449545502530,	-0.850864181323562010,	
+-0.850837910974460930,	-0.850811638498265130,	-0.850785363895040230,	-0.850759087164851930,	-0.850732808307765880,	-0.850706527323847440,	-0.850680244213163020,	-0.850653958975778110,	
+-0.850627671611758230,	-0.850601382121169090,	-0.850575090504076650,	-0.850548796760545960,	-0.850522500890643740,	-0.850496202894435280,	-0.850469902771986310,	-0.850443600523362540,	
+-0.850417296148629820,	-0.850390989647853870,	-0.850364681021100410,	-0.850338370268435280,	-0.850312057389923660,	-0.850285742385632480,	-0.850259425255626920,	-0.850233105999972700,	
+-0.850206784618735890,	-0.850180461111981980,	-0.850154135479776470,	-0.850127807722186210,	-0.850101477839276250,	-0.850075145831112770,	-0.850048811697761250,	-0.850022475439287880,	
+-0.849996137055758160,	-0.849969796547238250,	-0.849943453913793780,	-0.849917109155490570,	-0.849890762272394240,	-0.849864413264571410,	-0.849838062132087570,	-0.849811708875008680,	
+-0.849785353493400450,	-0.849758995987328290,	-0.849732636356859140,	-0.849706274602058500,	-0.849679910722992090,	-0.849653544719725870,	-0.849627176592325890,	-0.849600806340857880,	
+-0.849574433965387900,	-0.849548059465981780,	-0.849521682842705570,	-0.849495304095624680,	-0.849468923224805940,	-0.849442540230314960,	-0.849416155112217570,	-0.849389767870579850,	
+-0.849363378505467730,	-0.849336987016946600,	-0.849310593405083520,	-0.849284197669944010,	-0.849257799811593990,	-0.849231399830099430,	-0.849204997725526380,	-0.849178593497940780,	
+-0.849152187147408810,	-0.849125778673996300,	-0.849099368077768870,	-0.849072955358793570,	-0.849046540517135790,	-0.849020123552861720,	-0.848993704466037280,	-0.848967283256728660,	
+-0.848940859925001230,	-0.848914434470922300,	-0.848888006894557120,	-0.848861577195971990,	-0.848835145375232970,	-0.848808711432405990,	-0.848782275367557350,	-0.848755837180752870,	
+-0.848729396872058950,	-0.848702954441540980,	-0.848676509889266130,	-0.848650063215300010,	-0.848623614419708680,	-0.848597163502558320,	-0.848570710463915080,	-0.848544255303844590,	
+-0.848517798022413890,	-0.848491338619688840,	-0.848464877095735260,	-0.848438413450619660,	-0.848411947684407860,	-0.848385479797166280,	-0.848359009788961060,	-0.848332537659858170,	
+-0.848306063409923980,	-0.848279587039224240,	-0.848253108547825980,	-0.848226627935794950,	-0.848200145203197310,	-0.848173660350099330,	-0.848147173376566640,	-0.848120684282666630,	
+-0.848094193068464790,	-0.848067699734027620,	-0.848041204279421090,	-0.848014706704711570,	-0.847988207009965240,	-0.847961705195248490,	-0.847935201260627380,	-0.847908695206168290,	
+-0.847882187031937070,	-0.847855676738000770,	-0.847829164324425340,	-0.847802649791276950,	-0.847776133138621880,	-0.847749614366526070,	-0.847723093475056700,	-0.847696570464279710,	
+-0.847670045334261160,	-0.847643518085067550,	-0.847616988716765050,	-0.847590457229420170,	-0.847563923623099070,	-0.847537387897868260,	-0.847510850053793900,	-0.847484310090942050,	
+-0.847457768009379770,	-0.847431223809173130,	-0.847404677490388390,	-0.847378129053091960,	-0.847351578497350320,	-0.847325025823229220,	-0.847298471030795920,	-0.847271914120116490,	
+-0.847245355091257310,	-0.847218793944284790,	-0.847192230679265190,	-0.847165665296265020,	-0.847139097795350790,	-0.847112528176588660,	-0.847085956440044920,	-0.847059382585786610,	
+-0.847032806613879920,	-0.847006228524391220,	-0.846979648317386810,	-0.846953065992933410,	-0.846926481551096840,	-0.846899894991944620,	-0.846873306315542580,	-0.846846715521957340,	
+-0.846820122611255170,	-0.846793527583502790,	-0.846766930438766610,	-0.846740331177113110,	-0.846713729798608710,	-0.846687126303319990,	-0.846660520691313030,	-0.846633912962655220,	
+-0.846607303117412720,	-0.846580691155651820,	-0.846554077077439240,	-0.846527460882841030,	-0.846500842571924710,	-0.846474222144756210,	-0.846447599601402030,	-0.846420974941929030,	
+-0.846394348166403470,	-0.846367719274892070,	-0.846341088267461460,	-0.846314455144178020,	-0.846287819905108480,	-0.846261182550319010,	-0.846234543079876890,	-0.846207901493848500,	
+-0.846181257792300360,	-0.846154611975299060,	-0.846127964042910800,	-0.846101313995203050,	-0.846074661832242110,	-0.846048007554094370,	-0.846021351160826660,	-0.845994692652505710,	
+-0.845968032029197900,	-0.845941369290969970,	-0.845914704437888740,	-0.845888037470020620,	-0.845861368387431980,	-0.845834697190190440,	-0.845808023878362070,	-0.845781348452013690,	
+-0.845754670911212040,	-0.845727991256023600,	-0.845701309486514670,	-0.845674625602753080,	-0.845647939604804780,	-0.845621251492736700,	-0.845594561266615470,	-0.845567868926507930,	
+-0.845541174472480560,	-0.845514477904600440,	-0.845487779222933940,	-0.845461078427547590,	-0.845434375518509080,	-0.845407670495884610,	-0.845380963359740890,	-0.845354254110144750,	
+-0.845327542747163040,	-0.845300829270862030,	-0.845274113681309450,	-0.845247395978571460,	-0.845220676162715010,	-0.845193954233806940,	-0.845167230191913980,	-0.845140504037102840,	
+-0.845113775769440580,	-0.845087045388993820,	-0.845060312895828950,	-0.845033578290013800,	-0.845006841571614650,	-0.844980102740698460,	-0.844953361797331940,	-0.844926618741582150,	
+-0.844899873573515150,	-0.844873126293199110,	-0.844846376900700190,	-0.844819625396085350,	-0.844792871779421420,	-0.844766116050775340,	-0.844739358210213950,	-0.844712598257804090,	
+-0.844685836193612820,	-0.844659072017706960,	-0.844632305730152910,	-0.844605537331018620,	-0.844578766820370470,	-0.844551994198275420,	-0.844525219464800300,	-0.844498442620011720,	
+-0.844471663663977520,	-0.844444882596764200,	-0.844418099418438590,	-0.844391314129067760,	-0.844364526728718650,	-0.844337737217458200,	-0.844310945595353470,	-0.844284151862471300,	
+-0.844257356018878860,	-0.844230558064642420,	-0.844203757999830160,	-0.844176955824508470,	-0.844150151538744400,	-0.844123345142604900,	-0.844096536636157020,	-0.844069726019467390,	
+-0.844042913292603950,	-0.844016098455633190,	-0.843989281508622180,	-0.843962462451637970,	-0.843935641284747630,	-0.843908818008018090,	-0.843881992621516640,	-0.843855165125310110,	
+-0.843828335519465230,	-0.843801503804050060,	-0.843774669979130980,	-0.843747834044775270,	-0.843720996001050110,	-0.843694155848022320,	-0.843667313585758750,	-0.843640469214327230,	
+-0.843613622733794700,	-0.843586774144228000,	-0.843559923445694420,	-0.843533070638261000,	-0.843506215721994910,	-0.843479358696963330,	-0.843452499563233320,	-0.843425638320871580,	
+-0.843398774969946310,	-0.843371909510523990,	-0.843345041942671900,	-0.843318172266457220,	-0.843291300481947110,	-0.843264426589208300,	-0.843237550588308960,	-0.843210672479315580,	
+-0.843183792262295670,	-0.843156909937316180,	-0.843130025504444490,	-0.843103138963747670,	-0.843076250315292990,	-0.843049359559147730,	-0.843022466695379060,	-0.842995571724053820,	
+-0.842968674645240060,	-0.842941775459004620,	-0.842914874165414770,	-0.842887970764537700,	-0.842861065256440220,	-0.842834157641190520,	-0.842807247918855530,	-0.842780336089502310,	
+-0.842753422153198370,	-0.842726506110010760,	-0.842699587960006990,	-0.842672667703254110,	-0.842645745339819730,	-0.842618820869770910,	-0.842591894293174490,	-0.842564965610098860,	
+-0.842538034820610850,	-0.842511101924777740,	-0.842484166922666920,	-0.842457229814345570,	-0.842430290599880730,	-0.842403349279340690,	-0.842376405852792160,	-0.842349460320302780,	
+-0.842322512681939580,	-0.842295562937770190,	-0.842268611087861880,	-0.842241657132282050,	-0.842214701071098080,	-0.842187742904376920,	-0.842160782632186740,	-0.842133820254594710,	
+-0.842106855771668110,	-0.842079889183474430,	-0.842052920490080960,	-0.842025949691554750,	-0.841998976787964090,	-0.841972001779376030,	-0.841945024665857970,	-0.841918045447477280,	
+-0.841891064124301590,	-0.841864080696398060,	-0.841837095163834540,	-0.841810107526678180,	-0.841783117784996040,	-0.841756125938856630,	-0.841729131988326880,	-0.841702135933474320,	
+-0.841675137774366420,	-0.841648137511070700,	-0.841621135143654220,	-0.841594130672185250,	-0.841567124096730960,	-0.841540115417358960,	-0.841513104634136640,	-0.841486091747131510,	
+-0.841459076756411180,	-0.841432059662043150,	-0.841405040464094920,	-0.841378019162633660,	-0.841350995757727870,	-0.841323970249444610,	-0.841296942637851260,	-0.841269912923015670,	
+-0.841242881105005340,	-0.841215847183887750,	-0.841188811159730100,	-0.841161773032600870,	-0.841134732802567230,	-0.841107690469696690,	-0.841080646034056970,	-0.841053599495715680,	
+-0.841026550854740430,	-0.840999500111198620,	-0.840972447265157740,	-0.840945392316686190,	-0.840918335265851140,	-0.840891276112720190,	-0.840864214857361180,	-0.840837151499841510,	
+-0.840810086040229000,	-0.840783018478590830,	-0.840755948814995600,	-0.840728877049510490,	-0.840701803182203110,	-0.840674727213141290,	-0.840647649142392650,	-0.840620568970024910,	
+-0.840593486696105780,	-0.840566402320702790,	-0.840539315843883420,	-0.840512227265716280,	-0.840485136586268440,	-0.840458043805607850,	-0.840430948923802210,	-0.840403851940919040,	
+-0.840376752857025840,	-0.840349651672191330,	-0.840322548386482570,	-0.840295442999967500,	-0.840268335512713740,	-0.840241225924789230,	-0.840214114236261580,	-0.840187000447198740,	
+-0.840159884557668320,	-0.840132766567737720,	-0.840105646477475650,	-0.840078524286949620,	-0.840051399996227130,	-0.840024273605376240,	-0.839997145114464550,	-0.839970014523560020,	
+-0.839942881832730030,	-0.839915747042043300,	-0.839888610151567240,	-0.839861471161369670,	-0.839834330071518310,	-0.839807186882081220,	-0.839780041593126140,	-0.839752894204720880,	
+-0.839725744716932950,	-0.839698593129831190,	-0.839671439443482880,	-0.839644283657956070,	-0.839617125773318480,	-0.839589965789638070,	-0.839562803706982770,	-0.839535639525419990,	
+-0.839508473245018540,	-0.839481304865845930,	-0.839454134387970120,	-0.839426961811458930,	-0.839399787136380300,	-0.839372610362802200,	-0.839345431490792660,	-0.839318250520418970,	
+-0.839291067451750190,	-0.839263882284853710,	-0.839236695019797590,	-0.839209505656649650,	-0.839182314195477950,	-0.839155120636350560,	-0.839127924979334750,	-0.839100727224499690,	
+-0.839073527371912760,	-0.839046325421642040,	-0.839019121373755560,	-0.838991915228321280,	-0.838964706985407150,	-0.838937496645081220,	-0.838910284207411650,	-0.838883069672465840,	
+-0.838855853040312850,	-0.838828634311020170,	-0.838801413484655980,	-0.838774190561288210,	-0.838746965540985050,	-0.838719738423813870,	-0.838692509209843840,	-0.838665277899142580,	
+-0.838638044491778150,	-0.838610808987818590,	-0.838583571387331970,	-0.838556331690386460,	-0.838529089897050110,	-0.838501846007391080,	-0.838474600021476890,	-0.838447351939376690,	
+-0.838420101761158220,	-0.838392849486889410,	-0.838365595116638440,	-0.838338338650473470,	-0.838311080088462780,	-0.838283819430673760,	-0.838256556677175800,	-0.838229291828036290,	
+-0.838202024883323740,	-0.838174755843105970,	-0.838147484707451370,	-0.838120211476428120,	-0.838092936150104270,	-0.838065658728547660,	-0.838038379211827330,	-0.838011097600011020,	
+-0.837983813893167010,	-0.837956528091363450,	-0.837929240194668630,	-0.837901950203150610,	-0.837874658116877340,	-0.837847363935917850,	-0.837820067660339900,	-0.837792769290211960,	
+-0.837765468825601880,	-0.837738166266578270,	-0.837710861613209180,	-0.837683554865563010,	-0.837656246023707360,	-0.837628935087711630,	-0.837601622057643550,	-0.837574306933571490,	
+-0.837546989715563630,	-0.837519670403688240,	-0.837492348998013720,	-0.837465025498607800,	-0.837437699905539850,	-0.837410372218877600,	-0.837383042438689440,	-0.837355710565043650,	
+-0.837328376598008630,	-0.837301040537652640,	-0.837273702384044080,	-0.837246362137251340,	-0.837219019797342030,	-0.837191675364385770,	-0.837164328838450380,	-0.837136980219604030,	
+-0.837109629507915340,	-0.837082276703452480,	-0.837054921806283490,	-0.837027564816477660,	-0.837000205734102940,	-0.836972844559227710,	-0.836945481291920370,	-0.836918115932249300,	
+-0.836890748480283000,	-0.836863378936089750,	-0.836836007299738170,	-0.836808633571295980,	-0.836781257750832670,	-0.836753879838416310,	-0.836726499834115180,	-0.836699117737997880,	
+-0.836671733550132690,	-0.836644347270588230,	-0.836616958899432440,	-0.836589568436734710,	-0.836562175882562990,	-0.836534781236985880,	-0.836507384500071890,	-0.836479985671889300,	
+-0.836452584752506830,	-0.836425181741992870,	-0.836397776640415590,	-0.836370369447844150,	-0.836342960164346950,	-0.836315548789992260,	-0.836288135324848800,	-0.836260719768984860,	
+-0.836233302122469160,	-0.836205882385369750,	-0.836178460557756130,	-0.836151036639696370,	-0.836123610631259060,	-0.836096182532512610,	-0.836068752343525730,	-0.836041320064367040,	
+-0.836013885695105040,	-0.835986449235807780,	-0.835959010686544880,	-0.835931570047384500,	-0.835904127318395250,	-0.835876682499645530,	-0.835849235591204160,	-0.835821786593139770,	
+-0.835794335505520400,	-0.835766882328415670,	-0.835739427061893750,	-0.835711969706023240,	-0.835684510260872760,	-0.835657048726511140,	-0.835629585103006780,	-0.835602119390428500,	
+-0.835574651588844920,	-0.835547181698324200,	-0.835519709718935970,	-0.835492235650748590,	-0.835464759493830480,	-0.835437281248250560,	-0.835409800914077460,	-0.835382318491379340,	
+-0.835354833980225920,	-0.835327347380685370,	-0.835299858692826520,	-0.835272367916717990,	-0.835244875052428500,	-0.835217380100026880,	-0.835189883059581750,	-0.835162383931162040,	
+-0.835134882714835710,	-0.835107379410672810,	-0.835079874018741400,	-0.835052366539110300,	-0.835024856971848250,	-0.834997345317024080,	-0.834969831574706610,	-0.834942315744964030,	
+-0.834914797827866150,	-0.834887277823481270,	-0.834859755731878210,	-0.834832231553125800,	-0.834804705287292670,	-0.834777176934447970,	-0.834749646494660210,	-0.834722113967997890,	
+-0.834694579354530730,	-0.834667042654327120,	-0.834639503867455890,	-0.834611962993985990,	-0.834584420033986140,	-0.834556874987525180,	-0.834529327854671600,	-0.834501778635495130,	
+-0.834474227330064270,	-0.834446673938447850,	-0.834419118460714700,	-0.834391560896933780,	-0.834364001247174030,	-0.834336439511504270,	-0.834308875689992790,	-0.834281309782709650,	
+-0.834253741789723340,	-0.834226171711102580,	-0.834198599546916440,	-0.834171025297233750,	-0.834143448962123560,	-0.834115870541654260,	-0.834088290035895690,	-0.834060707444916450,	
+-0.834033122768785380,	-0.834005536007571660,	-0.833977947161343990,	-0.833950356230171440,	-0.833922763214123060,	-0.833895168113267690,	-0.833867570927673940,	-0.833839971657411750,	
+-0.833812370302549730,	-0.833784766863156720,	-0.833757161339301780,	-0.833729553731053840,	-0.833701944038481630,	-0.833674332261655100,	-0.833646718400642640,	-0.833619102455513410,	
+-0.833591484426336460,	-0.833563864313180860,	-0.833536242116115430,	-0.833508617835209460,	-0.833480991470532010,	-0.833453363022151560,	-0.833425732490138180,	-0.833398099874560480,	
+-0.833370465175487520,	-0.833342828392988340,	-0.833315189527132240,	-0.833287548577987590,	-0.833259905545624570,	-0.833232260430111780,	-0.833204613231518290,	-0.833176963949913360,	
+-0.833149312585365950,	-0.833121659137945230,	-0.833094003607720460,	-0.833066345994760590,	-0.833038686299134470,	-0.833011024520912020,	-0.832983360660162100,	-0.832955694716953630,	
+-0.832928026691356130,	-0.832900356583438420,	-0.832872684393269890,	-0.832845010120919050,	-0.832817333766456280,	-0.832789655329950200,	-0.832761974811469850,	-0.832734292211084750,	
+-0.832706607528863720,	-0.832678920764876370,	-0.832651231919191550,	-0.832623540991878190,	-0.832595847983006570,	-0.832568152892645190,	-0.832540455720863550,	-0.832512756467730710,	
+-0.832485055133316050,	-0.832457351717688640,	-0.832429646220917420,	-0.832401938643072550,	-0.832374228984222860,	-0.832346517244437640,	-0.832318803423786060,	-0.832291087522337490,	
+-0.832263369540161220,	-0.832235649477326530,	-0.832207927333902700,	-0.832180203109958550,	-0.832152476805564370,	-0.832124748420788980,	-0.832097017955701790,	-0.832069285410372060,	
+-0.832041550784869080,	-0.832013814079261670,	-0.831986075293620340,	-0.831958334428013700,	-0.831930591482511360,	-0.831902846457182490,	-0.831875099352096470,	-0.831847350167322700,	
+-0.831819598902930560,	-0.831791845558989440,	-0.831764090135568180,	-0.831736332632737270,	-0.831708573050565450,	-0.831680811389122200,	-0.831653047648476920,	-0.831625281828699100,	
+-0.831597513929857480,	-0.831569743952022660,	-0.831541971895263470,	-0.831514197759649300,	-0.831486421545249650,	-0.831458643252133920,	-0.831430862880371600,	-0.831403080430032190,	
+-0.831375295901184970,	-0.831347509293899110,	-0.831319720608244880,	-0.831291929844291460,	-0.831264137002108110,	-0.831236342081764450,	-0.831208545083329970,	-0.831180746006874080,	
+-0.831152944852465940,	-0.831125141620175810,	-0.831097336310072880,	-0.831069528922226630,	-0.831041719456706460,	-0.831013907913582090,	-0.830986094292922920,	-0.830958278594798540,	
+-0.830930460819277910,	-0.830902640966431630,	-0.830874819036328870,	-0.830846995029038910,	-0.830819168944631480,	-0.830791340783176180,	-0.830763510544742510,	-0.830735678229399640,	
+-0.830707843837217960,	-0.830680007368266750,	-0.830652168822615500,	-0.830624328200333830,	-0.830596485501491340,	-0.830568640726157550,	-0.830540793874402270,	-0.830512944946295020,	
+-0.830485093941904840,	-0.830457240861302460,	-0.830429385704556930,	-0.830401528471737980,	-0.830373669162915220,	-0.830345807778158250,	-0.830317944317536250,	-0.830290078781119930,	
+-0.830262211168978360,	-0.830234341481181250,	-0.830206469717798430,	-0.830178595878899310,	-0.830150719964553700,	-0.830122841974831330,	-0.830094961909801920,	-0.830067079769534530,	
+-0.830039195554099880,	-0.830011309263567370,	-0.829983420898006470,	-0.829955530457487160,	-0.829927637942078910,	-0.829899743351851020,	-0.829871846686874410,	-0.829843947947218050,	
+-0.829816047132951980,	-0.829788144244145710,	-0.829760239280869060,	-0.829732332243191760,	-0.829704423131183750,	-0.829676511944914650,	-0.829648598684453730,	-0.829620683349871820,	
+-0.829592765941238210,	-0.829564846458622720,	-0.829536924902095070,	-0.829509001271725110,	-0.829481075567582660,	-0.829453147789737000,	-0.829425217938258960,	-0.829397286013217940,	
+-0.829369352014683650,	-0.829341415942726030,	-0.829313477797414820,	-0.829285537578819950,	-0.829257595287011260,	-0.829229650922058030,	-0.829201704484031190,	-0.829173755973000140,	
+-0.829145805389034600,	-0.829117852732204620,	-0.829089898002579930,	-0.829061941200230580,	-0.829033982325225850,	-0.829006021377636680,	-0.828978058357532350,	-0.828950093264983030,	
+-0.828922126100058440,	-0.828894156862828520,	-0.828866185553363110,	-0.828838212171732370,	-0.828810236718006020,	-0.828782259192253680,	-0.828754279594546060,	-0.828726297924952780,	
+-0.828698314183543780,	-0.828670328370389010,	-0.828642340485558400,	-0.828614350529121470,	-0.828586358501149150,	-0.828558364401710930,	-0.828530368230876780,	-0.828502369988716740,	
+-0.828474369675300750,	-0.828446367290698870,	-0.828418362834981050,	-0.828390356308217330,	-0.828362347710477120,	-0.828334337041831680,	-0.828306324302350290,	-0.828278309492103240,	
+-0.828250292611160340,	-0.828222273659591670,	-0.828194252637466820,	-0.828166229544856860,	-0.828138204381831280,	-0.828110177148460250,	-0.828082147844813820,	-0.828054116470961940,	
+-0.828026083026974780,	-0.827998047512922390,	-0.827970009928874930,	-0.827941970274901910,	-0.827913928551074490,	-0.827885884757462280,	-0.827857838894135330,	-0.827829790961163710,	
+-0.827801740958617690,	-0.827773688886567330,	-0.827745634745082230,	-0.827717578534233560,	-0.827689520254090930,	-0.827661459904724510,	-0.827633397486204460,	-0.827605332998600840,	
+-0.827577266441983930,	-0.827549197816423890,	-0.827521127121990330,	-0.827493054358754420,	-0.827464979526785880,	-0.827436902626154880,	-0.827408823656931690,	-0.827380742619186370,	
+-0.827352659512989200,	-0.827324574338409890,	-0.827296487095519730,	-0.827268397784388210,	-0.827240306405085830,	-0.827212212957682660,	-0.827184117442248850,	-0.827156019858854900,	
+-0.827127920207570750,	-0.827099818488466370,	-0.827071714701613000,	-0.827043608847080280,	-0.827015500924938580,	-0.826987390935258080,	-0.826959278878109050,	-0.826931164753561990,	
+-0.826903048561686390,	-0.826874930302553660,	-0.826846809976233720,	-0.826818687582796640,	-0.826790563122312920,	-0.826762436594852710,	-0.826734308000486420,	-0.826706177339284420,	
+-0.826678044611317000,	-0.826649909816653870,	-0.826621772955366540,	-0.826593634027524730,	-0.826565493033198930,	-0.826537349972459310,	-0.826509204845376270,	-0.826481057652019850,	
+-0.826452908392461220,	-0.826424757066770320,	-0.826396603675017440,	-0.826368448217273180,	-0.826340290693607700,	-0.826312131104091630,	-0.826283969448795120,	-0.826255805727788780,	
+-0.826227639941142340,	-0.826199472088927300,	-0.826171302171213600,	-0.826143130188071620,	-0.826114956139571870,	-0.826086780025784730,	-0.826058601846780590,	-0.826030421602629520,	
+-0.826002239293402770,	-0.825974054919170530,	-0.825945868480003180,	-0.825917679975971100,	-0.825889489407144790,	-0.825861296773594770,	-0.825833102075391510,	-0.825804905312605090,	
+-0.825776706485306770,	-0.825748505593566720,	-0.825720302637455440,	-0.825692097617043430,	-0.825663890532401190,	-0.825635681383599110,	-0.825607470170707460,	-0.825579256893797520,	
+-0.825551041552939460,	-0.825522824148203880,	-0.825494604679661180,	-0.825466383147381970,	-0.825438159551436850,	-0.825409933891896210,	-0.825381706168830330,	-0.825353476382310710,	
+-0.825325244532407300,	-0.825297010619190810,	-0.825268774642731850,	-0.825240536603100930,	-0.825212296500368650,	-0.825184054334605180,	-0.825155810105882010,	-0.825127563814269330,	
+-0.825099315459837720,	-0.825071065042657930,	-0.825042812562800320,	-0.825014558020335850,	-0.824986301415334910,	-0.824958042747868100,	-0.824929782018005820,	-0.824901519225819560,	
+-0.824873254371379480,	-0.824844987454756320,	-0.824816718476020670,	-0.824788447435243150,	-0.824760174332494040,	-0.824731899167845060,	-0.824703621941366260,	-0.824675342653128470,	
+-0.824647061303202310,	-0.824618777891658490,	-0.824590492418567740,	-0.824562204884000670,	-0.824533915288028220,	-0.824505623630720330,	-0.824477329912148950,	-0.824449034132384350,	
+-0.824420736291497040,	-0.824392436389557950,	-0.824364134426637700,	-0.824335830402807220,	-0.824307524318136590,	-0.824279216172697620,	-0.824250905966560700,	-0.824222593699796450,	
+-0.824194279372475690,	-0.824165962984669380,	-0.824137644536448000,	-0.824109324027882620,	-0.824081001459043390,	-0.824052676830002050,	-0.824024350140829200,	-0.823996021391595330,	
+-0.823967690582371510,	-0.823939357713228350,	-0.823911022784236890,	-0.823882685795467420,	-0.823854346746991650,	-0.823826005638879980,	-0.823797662471203340,	-0.823769317244032570,	
+-0.823740969957438510,	-0.823712620611491970,	-0.823684269206264030,	-0.823655915741824730,	-0.823627560218246240,	-0.823599202635598830,	-0.823570842993953330,	-0.823542481293380810,	
+-0.823514117533952090,	-0.823485751715738120,	-0.823457383838809180,	-0.823429013903237310,	-0.823400641909092900,	-0.823372267856446900,	-0.823343891745370260,	-0.823315513575933800,	
+-0.823287133348208690,	-0.823258751062265650,	-0.823230366718175730,	-0.823201980316009440,	-0.823173591855838720,	-0.823145201337733940,	-0.823116808761766180,	-0.823088414128006370,	
+-0.823060017436525570,	-0.823031618687394270,	-0.823003217880684420,	-0.822974815016466410,	-0.822946410094811510,	-0.822918003115790440,	-0.822889594079474480,	-0.822861182985934470,	
+-0.822832769835241560,	-0.822804354627466710,	-0.822775937362680400,	-0.822747518040954810,	-0.822719096662360430,	-0.822690673226968320,	-0.822662247734849420,	-0.822633820186075000,	
+-0.822605390580716020,	-0.822576958918843080,	-0.822548525200528240,	-0.822520089425842090,	-0.822491651594855710,	-0.822463211707640140,	-0.822434769764266550,	-0.822406325764806100,	
+-0.822377879709329850,	-0.822349431597908300,	-0.822320981430613720,	-0.822292529207516720,	-0.822264074928688360,	-0.822235618594199910,	-0.822207160204122320,	-0.822178699758526750,	
+-0.822150237257484040,	-0.822121772701066230,	-0.822093306089344060,	-0.822064837422388450,	-0.822036366700270920,	-0.822007893923062390,	-0.821979419090834160,	-0.821950942203657280,	
+-0.821922463261602680,	-0.821893982264742310,	-0.821865499213147110,	-0.821837014106888030,	-0.821808526946036460,	-0.821780037730663550,	-0.821751546460840700,	-0.821723053136638290,	
+-0.821694557758128830,	-0.821666060325383030,	-0.821637560838471950,	-0.821609059297467080,	-0.821580555702439490,	-0.821552050053460550,	-0.821523542350601430,	-0.821495032593933530,	
+-0.821466520783527550,	-0.821438006919455790,	-0.821409491001788950,	-0.821380973030598320,	-0.821352453005955390,	-0.821323930927931210,	-0.821295406796596850,	-0.821266880612024350,	
+-0.821238352374284660,	-0.821209822083449170,	-0.821181289739589040,	-0.821152755342775760,	-0.821124218893080520,	-0.821095680390574790,	-0.821067139835329750,	-0.821038597227416460,	
+-0.821010052566907180,	-0.820981505853872750,	-0.820952957088384560,	-0.820924406270514000,	-0.820895853400332330,	-0.820867298477911180,	-0.820838741503321150,	-0.820810182476634840,	
+-0.820781621397922990,	-0.820753058267257200,	-0.820724493084708740,	-0.820695925850349010,	-0.820667356564249490,	-0.820638785226481480,	-0.820610211837116130,	-0.820581636396225720,	
+-0.820553058903881190,	-0.820524479360154050,	-0.820495897765115670,	-0.820467314118837550,	-0.820438728421391210,	-0.820410140672847450,	-0.820381550873279020,	-0.820352959022756510,	
+-0.820324365121351650,	-0.820295769169135940,	-0.820267171166180750,	-0.820238571112557710,	-0.820209969008338200,	-0.820181364853593280,	-0.820152758648395430,	-0.820124150392815610,	
+-0.820095540086925530,	-0.820066927730796590,	-0.820038313324500280,	-0.820009696868108210,	-0.819981078361691430,	-0.819952457805322330,	-0.819923835199072190,	-0.819895210543012510,	
+-0.819866583837214670,	-0.819837955081750500,	-0.819809324276691400,	-0.819780691422108960,	-0.819752056518074810,	-0.819723419564659990,	-0.819694780561937120,	-0.819666139509977350,	
+-0.819637496408852200,	-0.819608851258633360,	-0.819580204059392250,	-0.819551554811200230,	-0.819522903514129820,	-0.819494250168252170,	-0.819465594773638890,	-0.819436937330361600,	
+-0.819408277838492020,	-0.819379616298101740,	-0.819350952709262390,	-0.819322287072045690,	-0.819293619386522680,	-0.819264949652766190,	-0.819236277870847300,	-0.819207604040837700,	
+-0.819178928162809130,	-0.819150250236833190,	-0.819121570262981710,	-0.819092888241325760,	-0.819064204171938040,	-0.819035518054889940,	-0.819006829890252970,	-0.818978139678098960,	
+-0.818949447418499510,	-0.818920753111526460,	-0.818892056757251630,	-0.818863358355746080,	-0.818834657907082650,	-0.818805955411332500,	-0.818777250868567560,	-0.818748544278859460,	
+-0.818719835642280010,	-0.818691124958900950,	-0.818662412228793660,	-0.818633697452030740,	-0.818604980628683590,	-0.818576261758824030,	-0.818547540842523790,	-0.818518817879854700,	
+-0.818490092870888590,	-0.818461365815697170,	-0.818432636714351960,	-0.818403905566925550,	-0.818375172373489450,	-0.818346437134115370,	-0.818317699848875260,	-0.818288960517840840,	
+-0.818260219141084040,	-0.818231475718676160,	-0.818202730250690120,	-0.818173982737197210,	-0.818145233178269480,	-0.818116481573978540,	-0.818087727924396440,	-0.818058972229595010,	
+-0.818030214489646190,	-0.818001454704621820,	-0.817972692874593290,	-0.817943928999633530,	-0.817915163079813930,	-0.817886395115206440,	-0.817857625105882890,	-0.817828853051915440,	
+-0.817800078953375250,	-0.817771302810335390,	-0.817742524622867230,	-0.817713744391042830,	-0.817684962114934020,	-0.817656177794612750,	-0.817627391430151170,	-0.817598603021621020,	
+-0.817569812569094450,	-0.817541020072642730,	-0.817512225532339040,	-0.817483428948254760,	-0.817454630320461950,	-0.817425829649032430,	-0.817397026934038480,	-0.817368222175551940,	
+-0.817339415373644300,	-0.817310606528388610,	-0.817281795639856480,	-0.817252982708119860,	-0.817224167733250680,	-0.817195350715321120,	-0.817166531654403230,	-0.817137710550569050,	
+-0.817108887403889980,	-0.817080062214439180,	-0.817051234982288380,	-0.817022405707509390,	-0.816993574390174390,	-0.816964741030355430,	-0.816935905628124680,	-0.816907068183553630,	
+-0.816878228696715450,	-0.816849387167681630,	-0.816820543596524340,	-0.816791697983315750,	-0.816762850328127900,	-0.816734000631032960,	-0.816705148892102990,	-0.816676295111409600,	
+-0.816647439289026060,	-0.816618581425023860,	-0.816589721519475180,	-0.816560859572452280,	-0.816531995584027230,	-0.816503129554272070,	-0.816474261483258630,	-0.816445391371060090,	
+-0.816416519217748050,	-0.816387645023394780,	-0.816358768788072340,	-0.816329890511852900,	-0.816301010194808830,	-0.816272127837012200,	-0.816243243438535270,	-0.816214356999449770,	
+-0.816185468519828870,	-0.816156577999744170,	-0.816127685439268170,	-0.816098790838472920,	-0.816069894197430590,	-0.816040995516213120,	-0.816012094794893670,	-0.815983192033543970,	
+-0.815954287232236290,	-0.815925380391042900,	-0.815896471510036080,	-0.815867560589288000,	-0.815838647628871150,	-0.815809732628857590,	-0.815780815589319140,	-0.815751896510329200,	
+-0.815722975391959590,	-0.815694052234282490,	-0.815665127037370260,	-0.815636199801295200,	-0.815607270526129140,	-0.815578339211945450,	-0.815549405858815860,	-0.815520470466812860,	
+-0.815491533036008520,	-0.815462593566475440,	-0.815433652058285880,	-0.815404708511512140,	-0.815375762926226710,	-0.815346815302501300,	-0.815317865640409420,	-0.815288913940022790,	
+-0.815259960201414000,	-0.815231004424655240,	-0.815202046609818880,	-0.815173086756977530,	-0.815144124866202910,	-0.815115160937568530,	-0.815086194971146210,	-0.815057226967008330,	
+-0.815028256925227510,	-0.814999284845875920,	-0.814970310729026260,	-0.814941334574750710,	-0.814912356383121320,	-0.814883376154211690,	-0.814854393888093440,	-0.814825409584839290,	
+-0.814796423244521620,	-0.814767434867212930,	-0.814738444452985600,	-0.814709452001911580,	-0.814680457514064590,	-0.814651460989516350,	-0.814622462428339470,	-0.814593461830606440,	
+-0.814564459196389870,	-0.814535454525762040,	-0.814506447818795550,	-0.814477439075562910,	-0.814448428296136280,	-0.814419415480589050,	-0.814390400628993260,	-0.814361383741421530,	
+-0.814332364817946240,	-0.814303343858640120,	-0.814274320863575100,	-0.814245295832824790,	-0.814216268766461250,	-0.814187239664556970,	-0.814158208527184680,	-0.814129175354416870,	
+-0.814100140146326030,	-0.814071102902984900,	-0.814042063624466070,	-0.814013022310841490,	-0.813983978962184880,	-0.813954933578568300,	-0.813925886160064450,	-0.813896836706745840,	
+-0.813867785218685190,	-0.813838731695954550,	-0.813809676138627540,	-0.813780618546776410,	-0.813751558920473680,	-0.813722497259792070,	-0.813693433564804170,	-0.813664367835582710,	
+-0.813635300072200420,	-0.813606230274729780,	-0.813577158443243080,	-0.813548084577814020,	-0.813519008678514680,	-0.813489930745417980,	-0.813460850778596310,	-0.813431768778122510,	
+-0.813402684744069290,	-0.813373598676508940,	-0.813344510575515050,	-0.813315420441159900,	-0.813286328273516100,	-0.813257234072656600,	-0.813228137838654000,	-0.813199039571581020,	
+-0.813169939271510490,	-0.813140836938514580,	-0.813111732572667000,	-0.813082626174040150,	-0.813053517742706840,	-0.813024407278739590,	-0.812995294782211440,	-0.812966180253194890,	
+-0.812937063691762550,	-0.812907945097987920,	-0.812878824471943600,	-0.812849701813702090,	-0.812820577123336330,	-0.812791450400919160,	-0.812762321646523400,	-0.812733190860221780,	
+-0.812704058042087120,	-0.812674923192191920,	-0.812645786310609910,	-0.812616647397413350,	-0.812587506452675300,	-0.812558363476468370,	-0.812529218468865610,	-0.812500071429939190,	
+-0.812470922359763150,	-0.812441771258409880,	-0.812412618125952110,	-0.812383462962462780,	-0.812354305768014820,	-0.812325146542681180,	-0.812295985286534570,	-0.812266821999648060,	
+-0.812237656682093910,	-0.812208489333946180,	-0.812179319955277260,	-0.812150148546159970,	-0.812120975106667250,	-0.812091799636872170,	-0.812062622136847100,	-0.812033442606665990,	
+-0.812004261046401330,	-0.811975077456125850,	-0.811945891835912810,	-0.811916704185835060,	-0.811887514505965410,	-0.811858322796377040,	-0.811829129057143000,	-0.811799933288335440,	
+-0.811770735490028650,	-0.811741535662295010,	-0.811712333805207460,	-0.811683129918839170,	-0.811653924003262970,	-0.811624716058552020,	-0.811595506084778820,	-0.811566294082017300,	
+-0.811537080050340090,	-0.811507863989820110,	-0.811478645900530430,	-0.811449425782544310,	-0.811420203635934480,	-0.811390979460774210,	-0.811361753257135890,	-0.811332525025093790,	
+-0.811303294764720410,	-0.811274062476088690,	-0.811244828159271790,	-0.811215591814342880,	-0.811186353441375130,	-0.811157113040440800,	-0.811127870611614290,	-0.811098626154968080,	
+-0.811069379670575240,	-0.811040131158509040,	-0.811010880618842410,	-0.810981628051648640,	-0.810952373457000890,	-0.810923116834971540,	-0.810893858185635090,	-0.810864597509063810,	
+-0.810835334805331100,	-0.810806070074510110,	-0.810776803316673900,	-0.810747534531895630,	-0.810718263720248130,	-0.810688990881805350,	-0.810659716016640220,	-0.810630439124825690,	
+-0.810601160206435130,	-0.810571879261541730,	-0.810542596290218520,	-0.810513311292538900,	-0.810484024268575910,	-0.810454735218402390,	-0.810425444142092610,	-0.810396151039719070,	
+-0.810366855911355270,	-0.810337558757074360,	-0.810308259576949520,	-0.810278958371053460,	-0.810249655139460570,	-0.810220349882243450,	-0.810191042599475610,	-0.810161733291230090,	
+-0.810132421957580170,	-0.810103108598599240,	-0.810073793214360570,	-0.810044475804937440,	-0.810015156370402560,	-0.809985834910830320,	-0.809956511426293550,	-0.809927185916865410,	
+-0.809897858382619300,	-0.809868528823628590,	-0.809839197239966560,	-0.809809863631706040,	-0.809780527998921310,	-0.809751190341685300,	-0.809721850660071300,	-0.809692508954152790,	
+-0.809663165224002830,	-0.809633819469695040,	-0.809604471691302670,	-0.809575121888898690,	-0.809545770062557350,	-0.809516416212351600,	-0.809487060338354820,	-0.809457702440640410,	
+-0.809428342519281640,	-0.809398980574352110,	-0.809369616605924550,	-0.809340250614073550,	-0.809310882598871850,	-0.809281512560392930,	-0.809252140498710300,	-0.809222766413897340,	
+-0.809193390306027440,	-0.809164012175173970,	-0.809134632021410010,	-0.809105249844810030,	-0.809075865645446870,	-0.809046479423394030,	-0.809017091178725110,	-0.808987700911513400,	
+-0.808958308621832380,	-0.808928914309755110,	-0.808899517975356090,	-0.808870119618708250,	-0.808840719239885100,	-0.808811316838960240,	-0.808781912416006940,	-0.808752505971099040,	
+-0.808723097504309710,	-0.808693687015712760,	-0.808664274505381030,	-0.808634859973389130,	-0.808605443419810000,	-0.808576024844717360,	-0.808546604248184700,	-0.808517181630285410,	
+-0.808487756991092650,	-0.808458330330681150,	-0.808428901649123730,	-0.808399470946494000,	-0.808370038222865680,	-0.808340603478312270,	-0.808311166712907370,	-0.808281727926724480,	
+-0.808252287119837320,	-0.808222844292318940,	-0.808193399444243840,	-0.808163952575685410,	-0.808134503686717020,	-0.808105052777412400,	-0.808075599847845050,	-0.808046144898088790,	
+-0.808016687928216680,	-0.807987228938303330,	-0.807957767928421890,	-0.807928304898646090,	-0.807898839849049420,	-0.807869372779705720,	-0.807839903690688590,	-0.807810432582071640,	
+-0.807780959453928250,	-0.807751484306332810,	-0.807722007139358710,	-0.807692527953079660,	-0.807663046747569170,	-0.807633563522901170,	-0.807604078279149150,	-0.807574591016386510,	
+-0.807545101734687960,	-0.807515610434126560,	-0.807486117114776140,	-0.807456621776710400,	-0.807427124420003190,	-0.807397625044728120,	-0.807368123650959000,	-0.807338620238769120,	
+-0.807309114808233090,	-0.807279607359424390,	-0.807250097892416530,	-0.807220586407283560,	-0.807191072904098970,	-0.807161557382936820,	-0.807132039843870270,	-0.807102520286974160,	
+-0.807072998712321630,	-0.807043475119986640,	-0.807013949510043020,	-0.806984421882564470,	-0.806954892237624950,	-0.806925360575298070,	-0.806895826895657860,	-0.806866291198777620,	
+-0.806836753484732050,	-0.806807213753594770,	-0.806777672005439260,	-0.806748128240339700,	-0.806718582458369800,	-0.806689034659602840,	-0.806659484844113870,	-0.806629933011976270,	
+-0.806600379163263770,	-0.806570823298050300,	-0.806541265416409690,	-0.806511705518416110,	-0.806482143604143160,	-0.806452579673664790,	-0.806423013727054610,	-0.806393445764387320,	
+-0.806363875785736430,	-0.806334303791175770,	-0.806304729780779490,	-0.806275153754621330,	-0.806245575712775220,	-0.806215995655314770,	-0.806186413582314800,	-0.806156829493848810,	
+-0.806127243389990640,	-0.806097655270814450,	-0.806068065136394170,	-0.806038472986803640,	-0.806008878822117030,	-0.805979282642407590,	-0.805949684447750500,	-0.805920084238219260,	
+-0.805890482013887690,	-0.805860877774830060,	-0.805831271521120110,	-0.805801663252832090,	-0.805772052970039290,	-0.805742440672816970,	-0.805712826361238420,	-0.805683210035377910,	
+-0.805653591695309370,	-0.805623971341106860,	-0.805594348972844430,	-0.805564724590596030,	-0.805535098194435360,	-0.805505469784437490,	-0.805475839360675900,	-0.805446206923224770,	
+-0.805416572472158030,	-0.805386936007549960,	-0.805357297529474490,	-0.805327657038005350,	-0.805298014533217480,	-0.805268370015184590,	-0.805238723483980840,	-0.805209074939680190,	
+-0.805179424382356900,	-0.805149771812085020,	-0.805120117228938730,	-0.805090460632992170,	-0.805060802024318960,	-0.805031141402994250,	-0.805001478769091670,	-0.804971814122685370,	
+-0.804942147463849510,	-0.804912478792658370,	-0.804882808109185440,	-0.804853135413506000,	-0.804823460705693880,	-0.804793783985822910,	-0.804764105253967580,	-0.804734424510201940,	
+-0.804704741754600270,	-0.804675056987236740,	-0.804645370208185610,	-0.804615681417520490,	-0.804585990615316660,	-0.804556297801647950,	-0.804526602976588400,	-0.804496906140212410,	
+-0.804467207292594130,	-0.804437506433807850,	-0.804407803563927160,	-0.804378098683027560,	-0.804348391791182780,	-0.804318682888466970,	-0.804288971974954530,	-0.804259259050719490,	
+-0.804229544115836470,	-0.804199827170379520,	-0.804170108214422470,	-0.804140387248040710,	-0.804110664271307950,	-0.804080939284298470,	-0.804051212287086760,	-0.804021483279746980,	
+-0.803991752262353420,	-0.803962019234980010,	-0.803932284197702130,	-0.803902547150593500,	-0.803872808093728410,	-0.803843067027181450,	-0.803813323951026780,	-0.803783578865338690,	
+-0.803753831770191770,	-0.803724082665659760,	-0.803694331551818020,	-0.803664578428740390,	-0.803634823296501380,	-0.803605066155175350,	-0.803575307004836590,	-0.803545545845559590,	
+-0.803515782677418300,	-0.803486017500487870,	-0.803456250314842580,	-0.803426481120556590,	-0.803396709917704400,	-0.803366936706360390,	-0.803337161486599170,	-0.803307384258494910,	
+-0.803277605022122200,	-0.803247823777555100,	-0.803218040524868780,	-0.803188255264137400,	-0.803158467995435440,	-0.803128678718837310,	-0.803098887434417490,	-0.803069094142249920,	
+-0.803039298842410100,	-0.803009501534972080,	-0.802979702220010250,	-0.802949900897599210,	-0.802920097567813460,	-0.802890292230727390,	-0.802860484886415590,	-0.802830675534952580,	
+-0.802800864176412390,	-0.802771050810870520,	-0.802741235438401040,	-0.802711418059078530,	-0.802681598672977390,	-0.802651777280172340,	-0.802621953880737760,	-0.802592128474747810,	
+-0.802562301062278110,	-0.802532471643402580,	-0.802502640218195950,	-0.802472806786732720,	-0.802442971349087380,	-0.802413133905334640,	-0.802383294455549120,	-0.802353452999804760,	
+-0.802323609538177380,	-0.802293764070740930,	-0.802263916597570130,	-0.802234067118739460,	-0.802204215634323650,	-0.802174362144397300,	-0.802144506649034470,	-0.802114649148310990,	
+-0.802084789642300790,	-0.802054928131078700,	-0.802025064614719340,	-0.801995199093297200,	-0.801965331566887100,	-0.801935462035563650,	-0.801905590499401020,	-0.801875716958475040,	
+-0.801845841412859640,	-0.801815963862629650,	-0.801786084307859800,	-0.801756202748624800,	-0.801726319184999260,	-0.801696433617057340,	-0.801666546044874860,	-0.801636656468526000,	
+-0.801606764888085580,	-0.801576871303628200,	-0.801546975715228700,	-0.801517078122961690,	-0.801487178526901990,	-0.801457276927124320,	-0.801427373323702950,	-0.801397467716713720,	
+-0.801367560106230780,	-0.801337650492328970,	-0.801307738875083000,	-0.801277825254567700,	-0.801247909630857350,	-0.801217992004027660,	-0.801188072374153130,	-0.801158150741308250,	
+-0.801128227105568080,	-0.801098301467007450,	-0.801068373825700950,	-0.801038444181723430,	-0.801008512535149930,	-0.800978578886054620,	-0.800948643234513310,	-0.800918705580600410,	
+-0.800888765924390840,	-0.800858824265959330,	-0.800828880605380710,	-0.800798934942729800,	-0.800768987278081210,	-0.800739037611510550,	-0.800709085943092310,	-0.800679132272901440,	
+-0.800649176601012650,	-0.800619218927500990,	-0.800589259252441290,	-0.800559297575908380,	-0.800529333897976650,	-0.800499368218722250,	-0.800469400538219360,	-0.800439430856543010,	
+-0.800409459173768050,	-0.800379485489969400,	-0.800349509805222010,	-0.800319532119600390,	-0.800289552433180450,	-0.800259570746036710,	-0.800229587058243990,	-0.800199601369877220,	
+-0.800169613681011470,	-0.800139623991721780,	-0.800109632302082980,	-0.800079638612169570,	-0.800049642922057600,	-0.800019645231821560,	-0.799989645541536290,	-0.799959643851277050,	
+-0.799929640161118670,	-0.799899634471136100,	-0.799869626781403940,	-0.799839617091998250,	-0.799809605402993620,	-0.799779591714464890,	-0.799749576026487110,	-0.799719558339135550,	
+-0.799689538652484930,	-0.799659516966610530,	-0.799629493281587390,	-0.799599467597489900,	-0.799569439914394330,	-0.799539410232375180,	-0.799509378551507500,	-0.799479344871866340,	
+-0.799449309193526860,	-0.799419271516563560,	-0.799389231841052590,	-0.799359190167068470,	-0.799329146494686450,	-0.799299100823981590,	-0.799269053155028940,	-0.799239003487903670,	
+-0.799208951822680920,	-0.799178898159435770,	-0.799148842498242810,	-0.799118784839178310,	-0.799088725182316880,	-0.799058663527733580,	-0.799028599875503680,	-0.798998534225702220,	
+-0.798968466578403920,	-0.798938396933684960,	-0.798908325291620040,	-0.798878251652284320,	-0.798848176015752980,	-0.798818098382101160,	-0.798788018751404040,	-0.798757937123736990,	
+-0.798727853499175080,	-0.798697767877792900,	-0.798667680259666950,	-0.798637590644871720,	-0.798607499033482600,	-0.798577405425574650,	-0.798547309821223240,	-0.798517212220503540,	
+-0.798487112623490260,	-0.798457011030259680,	-0.798426907440886620,	-0.798396801855446370,	-0.798366694274013970,	-0.798336584696664910,	-0.798306473123474470,	-0.798276359554517700,	
+-0.798246243989869650,	-0.798216126429606380,	-0.798186006873802920,	-0.798155885322534340,	-0.798125761775876130,	-0.798095636233903450,	-0.798065508696691680,	-0.798035379164315660,	
+-0.798005247636851660,	-0.797975114114374610,	-0.797944978596959680,	-0.797914841084682360,	-0.797884701577618040,	-0.797854560075841770,	-0.797824416579429260,	-0.797794271088455690,	
+-0.797764123602995760,	-0.797733974123126190,	-0.797703822648921700,	-0.797673669180457570,	-0.797643513717809280,	-0.797613356261052340,	-0.797583196810261350,	-0.797553035365512920,	
+-0.797522871926881870,	-0.797492706494443700,	-0.797462539068273690,	-0.797432369648447440,	-0.797402198235040220,	-0.797372024828127410,	-0.797341849427784630,	-0.797311672034086700,	
+-0.797281492647110120,	-0.797251311266929830,	-0.797221127893621210,	-0.797190942527259860,	-0.797160755167921060,	-0.797130565815679870,	-0.797100374470612770,	-0.797070181132794710,	
+-0.797039985802301290,	-0.797009788479207890,	-0.796979589163589910,	-0.796949387855523160,	-0.796919184555082700,	-0.796888979262344480,	-0.796858771977383200,	-0.796828562700275470,	
+-0.796798351431096450,	-0.796768138169921420,	-0.796737922916826100,	-0.796707705671885980,	-0.796677486435176660,	-0.796647265206772980,	-0.796617041986751760,	-0.796586816775187940,	
+-0.796556589572157030,	-0.796526360377734610,	-0.796496129191996300,	-0.796465896015017720,	-0.796435660846874340,	-0.796405423687641330,	-0.796375184537395310,	-0.796344943396211310,	
+-0.796314700264164950,	-0.796284455141331840,	-0.796254208027787570,	-0.796223958923607760,	-0.796193707828867560,	-0.796163454743643690,	-0.796133199668011100,	-0.796102942602045500,	
+-0.796072683545822500,	-0.796042422499417920,	-0.796012159462907260,	-0.795981894436366130,	-0.795951627419870240,	-0.795921358413494870,	-0.795891087417316510,	-0.795860814431410550,	
+-0.795830539455852470,	-0.795800262490718110,	-0.795769983536083080,	-0.795739702592022540,	-0.795709419658613190,	-0.795679134735930440,	-0.795648847824049770,	-0.795618558923047000,	
+-0.795588268032997760,	-0.795557975153977970,	-0.795527680286063130,	-0.795497383429329190,	-0.795467084583851290,	-0.795436783749706060,	-0.795406480926968970,	-0.795376176115715650,	
+-0.795345869316021910,	-0.795315560527963480,	-0.795285249751615630,	-0.795254936987055180,	-0.795224622234357410,	-0.795194305493598150,	-0.795163986764853000,	-0.795133666048197910,	
+-0.795103343343708690,	-0.795073018651461070,	-0.795042691971530990,	-0.795012363303993610,	-0.794982032648925750,	-0.794951700006402920,	-0.794921365376500820,	-0.794891028759295290,	
+-0.794860690154862160,	-0.794830349563277360,	-0.794800006984616170,	-0.794769662418955410,	-0.794739315866370590,	-0.794708967326937410,	-0.794678616800731820,	-0.794648264287829750,	
+-0.794617909788306930,	-0.794587553302239400,	-0.794557194829702440,	-0.794526834370772980,	-0.794496471925526530,	-0.794466107494038900,	-0.794435741076385930,	-0.794405372672643550,	
+-0.794375002282887820,	-0.794344629907194120,	-0.794314255545639280,	-0.794283879198298790,	-0.794253500865248710,	-0.794223120546564740,	-0.794192738242323060,	-0.794162353952599490,	
+-0.794131967677470070,	-0.794101579417010760,	-0.794071189171296930,	-0.794040796940405640,	-0.794010402724412370,	-0.793980006523393070,	-0.793949608337423780,	-0.793919208166580570,	
+-0.793888806010938700,	-0.793858401870575330,	-0.793827995745565950,	-0.793797587635986620,	-0.793767177541913280,	-0.793736765463422090,	-0.793706351400588870,	-0.793675935353489900,	
+-0.793645517322201010,	-0.793615097306797800,	-0.793584675307357430,	-0.793554251323955300,	-0.793523825356667540,	-0.793493397405570230,	-0.793462967470739520,	-0.793432535552250790,	
+-0.793402101650181210,	-0.793371665764606380,	-0.793341227895602460,	-0.793310788043245510,	-0.793280346207611450,	-0.793249902388776570,	-0.793219456586817030,	-0.793189008801808760,	
+-0.793158559033827370,	-0.793128107282950250,	-0.793097653549252770,	-0.793067197832811210,	-0.793036740133701620,	-0.793006280452000170,	-0.792975818787783120,	-0.792945355141125850,	
+-0.792914889512105870,	-0.792884421900798550,	-0.792853952307280290,	-0.792823480731627010,	-0.792793007173915100,	-0.792762531634220720,	-0.792732054112619930,	-0.792701574609188440,	
+-0.792671093124003630,	-0.792640609657141120,	-0.792610124208676940,	-0.792579636778687590,	-0.792549147367249130,	-0.792518655974437710,	-0.792488162600329170,	-0.792457667245000770,	
+-0.792427169908528240,	-0.792396670590987730,	-0.792366169292455510,	-0.792335666013007980,	-0.792305160752721170,	-0.792274653511671590,	-0.792244144289934730,	-0.792213633087588080,	
+-0.792183119904707360,	-0.792152604741368730,	-0.792122087597648680,	-0.792091568473623500,	-0.792061047369369220,	-0.792030524284961900,	-0.791999999220478810,	-0.791969472175995670,	
+-0.791938943151588860,	-0.791908412147334760,	-0.791877879163309650,	-0.791847344199589690,	-0.791816807256251480,	-0.791786268333371180,	-0.791755727431024740,	-0.791725184549289530,	
+-0.791694639688241280,	-0.791664092847956470,	-0.791633544028511490,	-0.791602993229982620,	-0.791572440452445680,	-0.791541885695978160,	-0.791511328960656010,	-0.791480770246555500,	
+-0.791450209553753000,	-0.791419646882325020,	-0.791389082232347940,	-0.791358515603898250,	-0.791327946997052110,	-0.791297376411885580,	-0.791266803848476250,	-0.791236229306899850,	
+-0.791205652787232870,	-0.791175074289551810,	-0.791144493813933040,	-0.791113911360453060,	-0.791083326929187700,	-0.791052740520214570,	-0.791022152133609600,	-0.790991561769449290,	
+-0.790960969427810020,	-0.790930375108768400,	-0.790899778812400810,	-0.790869180538783740,	-0.790838580287993140,	-0.790807978060106720,	-0.790777373855200310,	-0.790746767673350500,	
+-0.790716159514633700,	-0.790685549379126610,	-0.790654937266905500,	-0.790624323178046650,	-0.790593707112627440,	-0.790563089070724030,	-0.790532469052412920,	-0.790501847057770490,	
+-0.790471223086873560,	-0.790440597139798640,	-0.790409969216622100,	-0.790379339317420100,	-0.790348707442270370,	-0.790318073591248840,	-0.790287437764432110,	-0.790256799961896790,	
+-0.790226160183719490,	-0.790195518429976710,	-0.790164874700744700,	-0.790134228996100970,	-0.790103581316121680,	-0.790072931660883440,	-0.790042280030462950,	-0.790011626424936720,	
+-0.789980970844381350,	-0.789950313288873660,	-0.789919653758490050,	-0.789888992253306890,	-0.789858328773401790,	-0.789827663318850790,	-0.789796995889730620,	-0.789766326486118110,	
+-0.789735655108089630,	-0.789704981755721570,	-0.789674306429091530,	-0.789643629128275680,	-0.789612949853350840,	-0.789582268604393620,	-0.789551585381480740,	-0.789520900184688900,	
+-0.789490213014094720,	-0.789459523869775140,	-0.789428832751806090,	-0.789398139660265620,	-0.789367444595229670,	-0.789336747556775190,	-0.789306048544978880,	-0.789275347559917350,	
+-0.789244644601667540,	-0.789213939670305510,	-0.789183232765909180,	-0.789152523888554840,	-0.789121813038319080,	-0.789091100215278840,	-0.789060385419510850,	-0.789029668651091920,	
+-0.788998949910098780,	-0.788968229196607810,	-0.788937506510696720,	-0.788906781852441900,	-0.788876055221920060,	-0.788845326619208140,	-0.788814596044382870,	-0.788783863497521160,	
+-0.788753128978699200,	-0.788722392487995030,	-0.788691654025484800,	-0.788660913591245460,	-0.788630171185353830,	-0.788599426807886860,	-0.788568680458921260,	-0.788537932138533960,	
+-0.788507181846801240,	-0.788476429583801150,	-0.788445675349609960,	-0.788414919144304620,	-0.788384160967962040,	-0.788353400820658970,	-0.788322638702472430,	-0.788291874613478720,	
+-0.788261108553755860,	-0.788230340523380260,	-0.788199570522428840,	-0.788168798550978430,	-0.788138024609106090,	-0.788107248696888640,	-0.788076470814403020,	-0.788045690961726280,	
+-0.788014909138934790,	-0.787984125346106510,	-0.787953339583318040,	-0.787922551850646080,	-0.787891762148167810,	-0.787860970475960150,	-0.787830176834099500,	-0.787799381222663910,	
+-0.787768583641729970,	-0.787737784091374520,	-0.787706982571674600,	-0.787676179082707150,	-0.787645373624549340,	-0.787614566197278100,	-0.787583756800970370,	-0.787552945435702870,	
+-0.787522132101553420,	-0.787491316798598630,	-0.787460499526915550,	-0.787429680286581220,	-0.787398859077672820,	-0.787368035900267160,	-0.787337210754440850,	-0.787306383640272060,	
+-0.787275554557837380,	-0.787244723507213750,	-0.787213890488478340,	-0.787183055501708200,	-0.787152218546980360,	-0.787121379624372120,	-0.787090538733959840,	-0.787059695875821700,	
+-0.787028851050034280,	-0.786998004256674880,	-0.786967155495820300,	-0.786936304767547950,	-0.786905452071934740,	-0.786874597409057520,	-0.786843740778994220,	-0.786812882181821550,	
+-0.786782021617616790,	-0.786751159086456870,	-0.786720294588419080,	-0.786689428123580560,	-0.786658559692018480,	-0.786627689293809440,	-0.786596816929031830,	-0.786565942597762020,	
+-0.786535066300077410,	-0.786504188036055150,	-0.786473307805772400,	-0.786442425609306440,	-0.786411541446733750,	-0.786380655318132840,	-0.786349767223580300,	-0.786318877163153300,	
+-0.786287985136929100,	-0.786257091144984990,	-0.786226195187398110,	-0.786195297264245860,	-0.786164397375605170,	-0.786133495521553090,	-0.786102591702167790,	-0.786071685917525960,	
+-0.786040778167705010,	-0.786009868452781980,	-0.785978956772834360,	-0.785948043127938760,	-0.785917127518173660,	-0.785886209943615690,	-0.785855290404342210,	-0.785824368900430500,	
+-0.785793445431957950,	-0.785762519999001710,	-0.785731592601639160,	-0.785700663239947580,	-0.785669731914003910,	-0.785638798623886410,	-0.785607863369671920,	-0.785576926151437700,	
+-0.785545986969261260,	-0.785515045823219850,	-0.785484102713390750,	-0.785453157639850910,	-0.785422210602678690,	-0.785391261601951050,	-0.785360310637745140,	-0.785329357710138450,	
+-0.785298402819208490,	-0.785267445965032400,	-0.785236487147687680,	-0.785205526367251270,	-0.785174563623801560,	-0.785143598917415480,	-0.785112632248170290,	-0.785081663616143620,	
+-0.785050693021412730,	-0.785019720464055220,	-0.784988745944147800,	-0.784957769461768980,	-0.784926791016995810,	-0.784895810609905650,	-0.784864828240576020,	-0.784833843909084280,	
+-0.784802857615507940,	-0.784771869359924380,	-0.784740879142410640,	-0.784709886963045330,	-0.784678892821905280,	-0.784647896719067980,	-0.784616898654610820,	-0.784585898628611610,	
+-0.784554896641147530,	-0.784523892692295720,	-0.784492886782134690,	-0.784461878910741480,	-0.784430869078193480,	-0.784399857284568400,	-0.784368843529943630,	-0.784337827814396760,	
+-0.784306810138005290,	-0.784275790500846840,	-0.784244768902998430,	-0.784213745344538580,	-0.784182719825544330,	-0.784151692346093280,	-0.784120662906263030,	-0.784089631506131200,	
+-0.784058598145774610,	-0.784027562825272200,	-0.783996525544700780,	-0.783965486304138090,	-0.783934445103661730,	-0.783903401943349180,	-0.783872356823278160,	-0.783841309743526170,	
+-0.783810260704171040,	-0.783779209705289580,	-0.783748156746960740,	-0.783717101829261580,	-0.783686044952269570,	-0.783654986116062440,	-0.783623925320717780,	-0.783592862566313440,	
+-0.783561797852926230,	-0.783530731180635210,	-0.783499662549517310,	-0.783468591959650350,	-0.783437519411111840,	-0.783406444903979480,	-0.783375368438331110,	-0.783344290014244220,	
+-0.783313209631796070,	-0.783282127291065500,	-0.783251042992129550,	-0.783219956735066060,	-0.783188868519952620,	-0.783157778346867060,	-0.783126686215886990,	-0.783095592127089790,	
+-0.783064496080554060,	-0.783033398076357080,	-0.783002298114576560,	-0.782971196195290430,	-0.782940092318576200,	-0.782908986484511790,	-0.782877878693174930,	-0.782846768944642780,	
+-0.782815657238994270,	-0.782784543576306670,	-0.782753427956657590,	-0.782722310380125070,	-0.782691190846786730,	-0.782660069356720390,	-0.782628945910003320,	-0.782597820506714450,	
+-0.782566693146931060,	-0.782535563830730860,	-0.782504432558191800,	-0.782473299329391690,	-0.782442164144408260,	-0.782411027003319440,	-0.782379887906203160,	-0.782348746853136490,	
+-0.782317603844198570,	-0.782286458879466570,	-0.782255311959018430,	-0.782224163082932080,	-0.782193012251285350,	-0.782161859464155400,	-0.782130704721621490,	-0.782099548023760690,	
+-0.782068389370651150,	-0.782037228762370470,	-0.782006066198996930,	-0.781974901680608010,	-0.781943735207282000,	-0.781912566779096600,	-0.781881396396129190,	-0.781850224058458940,	
+-0.781819049766163010,	-0.781787873519319550,	-0.781756695318006400,	-0.781725515162301490,	-0.781694333052282750,	-0.781663148988027690,	-0.781631962969615230,	-0.781600774997122880,	
+-0.781569585070628680,	-0.781538393190210460,	-0.781507199355946260,	-0.781476003567914130,	-0.781444805826191800,	-0.781413606130857090,	-0.781382404481988810,	-0.781351200879664590,	
+-0.781319995323962350,	-0.781288787814960140,	-0.781257578352735900,	-0.781226366937367800,	-0.781195153568933210,	-0.781163938247511180,	-0.781132720973179430,	-0.781101501746015890,	
+-0.781070280566098510,	-0.781039057433505430,	-0.781007832348314720,	-0.780976605310604530,	-0.780945376320452130,	-0.780914145377936910,	-0.780882912483136350,	-0.780851677636128510,	
+-0.780820440836991430,	-0.780789202085803270,	-0.780757961382642090,	-0.780726718727585480,	-0.780695474120712610,	-0.780664227562100970,	-0.780632979051828820,	-0.780601728589974340,	
+-0.780570476176615460,	-0.780539221811830330,	-0.780507965495697230,	-0.780476707228294100,	-0.780445447009698760,	-0.780414184839990370,	-0.780382920719246420,	-0.780351654647545300,	
+-0.780320386624964950,	-0.780289116651583630,	-0.780257844727478940,	-0.780226570852730280,	-0.780195295027415140,	-0.780164017251611770,	-0.780132737525398360,	-0.780101455848853150,	
+-0.780070172222054210,	-0.780038886645079920,	-0.780007599118008320,	-0.779976309640917240,	-0.779945018213885950,	-0.779913724836992060,	-0.779882429510313950,	-0.779851132233929660,	
+-0.779819833007917570,	-0.779788531832355410,	-0.779757228707322450,	-0.779725923632896390,	-0.779694616609155510,	-0.779663307636178080,	-0.779631996714042490,	-0.779600683842826770,	
+-0.779569369022609430,	-0.779538052253468620,	-0.779506733535482170,	-0.779475412868729340,	-0.779444090253288090,	-0.779412765689236560,	-0.779381439176653150,	-0.779350110715616110,	
+-0.779318780306203830,	-0.779287447948494030,	-0.779256113642566190,	-0.779224777388497940,	-0.779193439186367850,	-0.779162099036254220,	-0.779130756938235300,	-0.779099412892389380,	
+-0.779068066898795040,	-0.779036718957530020,	-0.779005369068673680,	-0.778974017232303860,	-0.778942663448499050,	-0.778911307717337630,	-0.778879950038897870,	-0.778848590413258270,	
+-0.778817228840496640,	-0.778785865320692490,	-0.778754499853923750,	-0.778723132440268690,	-0.778691763079805810,	-0.778660391772613480,	-0.778629018518770200,	-0.778597643318354460,	
+-0.778566266171444420,	-0.778534887078118350,	-0.778503506038455530,	-0.778472123052533990,	-0.778440738120432020,	-0.778409351242228320,	-0.778377962418001280,	-0.778346571647828610,	
+-0.778315178931790250,	-0.778283784269963810,	-0.778252387662427990,	-0.778220989109261190,	-0.778189588610541880,	-0.778158186166348690,	-0.778126781776759870,	-0.778095375441854250,	
+-0.778063967161709560,	-0.778032556936405490,	-0.778001144766020110,	-0.777969730650631800,	-0.777938314590319150,	-0.777906896585160770,	-0.777875476635234600,	-0.777844054740620240,	
+-0.777812630901395850,	-0.777781205117639820,	-0.777749777389430740,	-0.777718347716847220,	-0.777686916099967870,	-0.777655482538871180,	-0.777624047033635860,	-0.777592609584339840,	
+-0.777561170191062740,	-0.777529728853882830,	-0.777498285572878590,	-0.777466840348128630,	-0.777435393179711550,	-0.777403944067706080,	-0.777372493012190020,	-0.777341040013243450,	
+-0.777309585070944160,	-0.777278128185371010,	-0.777246669356602470,	-0.777215208584717270,	-0.777183745869794000,	-0.777152281211911490,	-0.777120814611147680,	-0.777089346067582290,	
+-0.777057875581293580,	-0.777026403152360270,	-0.776994928780860850,	-0.776963452466874150,	-0.776931974210478880,	-0.776900494011752980,	-0.776869011870776500,	-0.776837527787627490,	
+-0.776806041762384660,	-0.776774553795126720,	-0.776743063885932280,	-0.776711572034880280,	-0.776680078242049430,	-0.776648582507518340,	-0.776617084831365160,	-0.776585585213669830,	
+-0.776554083654510620,	-0.776522580153966140,	-0.776491074712115200,	-0.776459567329036650,	-0.776428058004808520,	-0.776396546739510860,	-0.776365033533221840,	-0.776333518386020270,	
+-0.776302001297984880,	-0.776270482269194480,	-0.776238961299727800,	-0.776207438389663770,	-0.776175913539081220,	-0.776144386748058190,	-0.776112858016674840,	-0.776081327345009340,	
+-0.776049794733140510,	-0.776018260181147280,	-0.775986723689108260,	-0.775955185257101940,	-0.775923644885208260,	-0.775892102573505380,	-0.775860558322072240,	-0.775829012130987760,	
+-0.775797464000330780,	-0.775765913930180020,	-0.775734361920614620,	-0.775702807971713200,	-0.775671252083554250,	-0.775639694256217820,	-0.775608134489782050,	-0.775576572784325900,	
+-0.775545009139928410,	-0.775513443556668290,	-0.775481876034624710,	-0.775450306573875700,	-0.775418735174501660,	-0.775387161836580740,	-0.775355586560191880,	-0.775324009345414010,	
+-0.775292430192326190,	-0.775260849101007230,	-0.775229266071536190,	-0.775197681103991450,	-0.775166094198453060,	-0.775134505354999390,	-0.775102914573709500,	-0.775071321854662320,	
+-0.775039727197936790,	-0.775008130603611960,	-0.774976532071766310,	-0.774944931602479790,	-0.774913329195831000,	-0.774881724851898880,	-0.774850118570762470,	-0.774818510352500710,	
+-0.774786900197192760,	-0.774755288104917560,	-0.774723674075753490,	-0.774692058109780810,	-0.774660440207078030,	-0.774628820367724070,	-0.774597198591798100,	-0.774565574879379160,	
+-0.774533949230546300,	-0.774502321645378020,	-0.774470692123954470,	-0.774439060666354150,	-0.774407427272656210,	-0.774375791942939710,	-0.774344154677283680,	-0.774312515475767290,	
+-0.774280874338469590,	-0.774249231265469740,	-0.774217586256846340,	-0.774185939312679430,	-0.774154290433047620,	-0.774122639618030180,	-0.774090986867706050,	-0.774059332182154610,	
+-0.774027675561454130,	-0.773996017005685100,	-0.773964356514926010,	-0.773932694089256020,	-0.773901029728754300,	-0.773869363433499990,	-0.773837695203572260,	-0.773806025039050380,	
+-0.773774352940013400,	-0.773742678906539920,	-0.773711002938710310,	-0.773679325036603190,	-0.773647645200297830,	-0.773615963429873380,	-0.773584279725408890,	-0.773552594086983850,	
+-0.773520906514676640,	-0.773489217008567760,	-0.773457525568735820,	-0.773425832195260180,	-0.773394136888219790,	-0.773362439647694130,	-0.773330740473762380,	-0.773299039366503790,	
+-0.773267336325997090,	-0.773235631352322540,	-0.773203924445558850,	-0.773172215605785530,	-0.773140504833081500,	-0.773108792127526370,	-0.773077077489199070,	-0.773045360918178660,	
+-0.773013642414545290,	-0.772981921978377890,	-0.772950199609755750,	-0.772918475308758010,	-0.772886749075464060,	-0.772855020909953390,	-0.772823290812305050,	-0.772791558782597980,	
+-0.772759824820912430,	-0.772728088927327470,	-0.772696351101922250,	-0.772664611344776150,	-0.772632869655968560,	-0.772601126035578730,	-0.772569380483685510,	-0.772537633000369480,	
+-0.772505883585709260,	-0.772474132239784450,	-0.772442378962674200,	-0.772410623754458130,	-0.772378866615215380,	-0.772347107545025560,	-0.772315346543967940,	-0.772283583612121350,	
+-0.772251818749566390,	-0.772220051956381880,	-0.772188283232647210,	-0.772156512578441870,	-0.772124739993845230,	-0.772092965478936240,	-0.772061189033795390,	-0.772029410658501500,	
+-0.771997630353134180,	-0.771965848117772690,	-0.771934063952496640,	-0.771902277857385410,	-0.771870489832518380,	-0.771838699877975270,	-0.771806907993834780,	-0.771775114180177630,	
+-0.771743318437082660,	-0.771711520764629340,	-0.771679721162897290,	-0.771647919631966000,	-0.771616116171914830,	-0.771584310782822860,	-0.771552503464770560,	-0.771520694217837090,	
+-0.771488883042101840,	-0.771457069937644400,	-0.771425254904544390,	-0.771393437942881070,	-0.771361619052734260,	-0.771329798234182800,	-0.771297975487307500,	-0.771266150812187190,	
+-0.771234324208901480,	-0.771202495677529960,	-0.771170665218152250,	-0.771138832830847830,	-0.771106998515695750,	-0.771075162272776840,	-0.771043324102169910,	-0.771011484003954690,	
+-0.770979641978210780,	-0.770947798025017780,	-0.770915952144455300,	-0.770884104336602930,	-0.770852254601539720,	-0.770820402939346390,	-0.770788549350102100,	-0.770756693833886450,	
+-0.770724836390779040,	-0.770692977020859590,	-0.770661115724207700,	-0.770629252500902420,	-0.770597387351024570,	-0.770565520274653190,	-0.770533651271868130,	-0.770501780342748850,	
+-0.770469907487375210,	-0.770438032705826780,	-0.770406155998183180,	-0.770374277364524240,	-0.770342396804929000,	-0.770310514319478390,	-0.770278629908251580,	-0.770246743571328050,	
+-0.770214855308787750,	-0.770182965120710270,	-0.770151073007174780,	-0.770119178968262210,	-0.770087283004051710,	-0.770055385114623010,	-0.770023485300055820,	-0.769991583560429960,	
+-0.769959679895825030,	-0.769927774306321090,	-0.769895866791997510,	-0.769863957352933780,	-0.769832045989210730,	-0.769800132700907640,	-0.769768217488104090,	-0.769736300350880030,	
+-0.769704381289315290,	-0.769672460303489570,	-0.769640537393482040,	-0.769608612559373850,	-0.769576685801244050,	-0.769544757119172580,	-0.769512826513239270,	-0.769480893983523820,	
+-0.769448959530106170,	-0.769417023153066040,	-0.769385084852482800,	-0.769353144628437510,	-0.769321202481009330,	-0.769289258410278070,	-0.769257312416323780,	-0.769225364499226070,	
+-0.769193414659065100,	-0.769161462895919910,	-0.769129509209871660,	-0.769097553600999630,	-0.769065596069383740,	-0.769033636615103930,	-0.769001675238239920,	-0.768969711938871760,	
+-0.768937746717079370,	-0.768905779572941930,	-0.768873810506540690,	-0.768841839517954930,	-0.768809866607264470,	-0.768777891774549470,	-0.768745915019889760,	-0.768713936343365160,	
+-0.768681955745055160,	-0.768649973225040920,	-0.768617988783401710,	-0.768586002420217460,	-0.768554014135568230,	-0.768522023929534060,	-0.768490031802194770,	-0.768458037753630310,	
+-0.768426041783920820,	-0.768394043893145700,	-0.768362044081386090,	-0.768330042348721260,	-0.768298038695231390,	-0.768266033120996390,	-0.768234025626096330,	-0.768202016210610570,	
+-0.768170004874620390,	-0.768137991618205170,	-0.768105976441445070,	-0.768073959344419910,	-0.768041940327209960,	-0.768009919389895050,	-0.767977896532555440,	-0.767945871755270960,	
+-0.767913845058121320,	-0.767881816441187690,	-0.767849785904549440,	-0.767817753448286730,	-0.767785719072479610,	-0.767753682777208240,	-0.767721644562552760,	-0.767689604428592460,	
+-0.767657562375408720,	-0.767625518403081130,	-0.767593472511689750,	-0.767561424701314610,	-0.767529374972035990,	-0.767497323323933940,	-0.767465269757088510,	-0.767433214271579400,	
+-0.767401156867487780,	-0.767369097544893240,	-0.767337036303876060,	-0.767304973144516180,	-0.767272908066893970,	-0.767240841071089360,	-0.767208772157182190,	-0.767176701325253620,	
+-0.767144628575383350,	-0.767112553907651430,	-0.767080477322138130,	-0.767048398818923730,	-0.767016318398088260,	-0.766984236059712000,	-0.766952151803874550,	-0.766920065630657400,	
+-0.766887977540139930,	-0.766855887532402640,	-0.766823795607525560,	-0.766791701765589080,	-0.766759606006673260,	-0.766727508330857900,	-0.766695408738224280,	-0.766663307228852230,	
+-0.766631203802821790,	-0.766599098460213460,	-0.766566991201107380,	-0.766534882025583730,	-0.766502770933722990,	-0.766470657925605200,	-0.766438543001310310,	-0.766406426160919580,	
+-0.766374307404512730,	-0.766342186732170140,	-0.766310064143972180,	-0.766277939639998910,	-0.766245813220330360,	-0.766213684885047820,	-0.766181554634230990,	-0.766149422467960360,	
+-0.766117288386316100,	-0.766085152389378690,	-0.766053014477228290,	-0.766020874649945500,	-0.765988732907610380,	-0.765956589250302970,	-0.765924443678104530,	-0.765892296191095110,	
+-0.765860146789354880,	-0.765827995472964320,	-0.765795842242003810,	-0.765763687096553620,	-0.765731530036693700,	-0.765699371062505520,	-0.765667210174068800,	-0.765635047371464150,	
+-0.765602882654771940,	-0.765570716024072450,	-0.765538547479446160,	-0.765506377020973570,	-0.765474204648734390,	-0.765442030362810220,	-0.765409854163281110,	-0.765377676050227330,	
+-0.765345496023729370,	-0.765313314083867600,	-0.765281130230722530,	-0.765248944464374190,	-0.765216756784903970,	-0.765184567192391810,	-0.765152375686918300,	-0.765120182268563930,	
+-0.765087986937408980,	-0.765055789693534050,	-0.765023590537019740,	-0.764991389467945870,	-0.764959186486394050,	-0.764926981592444320,	-0.764894774786177070,	-0.764862566067672890,	
+-0.764830355437012390,	-0.764798142894275950,	-0.764765928439543500,	-0.764733712072896870,	-0.764701493794415990,	-0.764669273604181350,	-0.764637051502273460,	-0.764604827488773010,	
+-0.764572601563760500,	-0.764540373727316420,	-0.764508143979521490,	-0.764475912320455640,	-0.764443678750200470,	-0.764411443268836250,	-0.764379205876443260,	-0.764346966573102420,	
+-0.764314725358894000,	-0.764282482233898270,	-0.764250237198196960,	-0.764217990251869980,	-0.764185741394998060,	-0.764153490627661800,	-0.764121237949941800,	-0.764088983361918660,	
+-0.764056726863673100,	-0.764024468455285710,	-0.763992208136836660,	-0.763959945908407550,	-0.763927681770078640,	-0.763895415721930540,	-0.763863147764043850,	-0.763830877896499280,	
+-0.763798606119377550,	-0.763766332432758710,	-0.763734056836724680,	-0.763701779331355410,	-0.763669499916731830,	-0.763637218592934320,	-0.763604935360043920,	-0.763572650218141140,	
+-0.763540363167306670,	-0.763508074207620790,	-0.763475783339165210,	-0.763443490562020210,	-0.763411195876266600,	-0.763378899281984880,	-0.763346600779255870,	-0.763314300368160500,	
+-0.763281998048778720,	-0.763249693821192570,	-0.763217387685482080,	-0.763185079641728210,	-0.763152769690011560,	-0.763120457830413050,	-0.763088144063013400,	-0.763055828387893430,	
+-0.763023510805133200,	-0.762991191314814850,	-0.762958869917018560,	-0.762926546611825020,	-0.762894221399315060,	-0.762861894279569630,	-0.762829565252669540,	-0.762797234318694840,	
+-0.762764901477727690,	-0.762732566729848240,	-0.762700230075137430,	-0.762667891513675980,	-0.762635551045544810,	-0.762603208670824760,	-0.762570864389596760,	-0.762538518201941630,	
+-0.762506170107939530,	-0.762473820107672620,	-0.762441468201221160,	-0.762409114388665990,	-0.762376758670088030,	-0.762344401045568220,	-0.762312041515186830,	-0.762279680079025910,	
+-0.762247316737165730,	-0.762214951489687320,	-0.762182584336671520,	-0.762150215278199260,	-0.762117844314351480,	-0.762085471445209110,	-0.762053096670852970,	-0.762020719991363560,	
+-0.761988341406822920,	-0.761955960917311440,	-0.761923578522910150,	-0.761891194223699770,	-0.761858808019761470,	-0.761826419911175500,	-0.761794029898024140,	-0.761761637980387650,	
+-0.761729244158347200,	-0.761696848431983490,	-0.761664450801377680,	-0.761632051266610820,	-0.761599649827763740,	-0.761567246484917580,	-0.761534841238152740,	-0.761502434087551360,	
+-0.761470025033193940,	-0.761437614075161310,	-0.761405201213534830,	-0.761372786448395230,	-0.761340369779823670,	-0.761307951207900620,	-0.761275530732708370,	-0.761243108354327180,	
+-0.761210684072838320,	-0.761178257888322610,	-0.761145829800861320,	-0.761113399810535500,	-0.761080967917426190,	-0.761048534121613770,	-0.761016098423180630,	-0.760983660822207360,	
+-0.760951221318774800,	-0.760918779912964300,	-0.760886336604856720,	-0.760853891394533410,	-0.760821444282074770,	-0.760788995267563050,	-0.760756544351078870,	-0.760724091532703370,	
+-0.760691636812517610,	-0.760659180190602750,	-0.760626721667039930,	-0.760594261241910320,	-0.760561798915295070,	-0.760529334687274680,	-0.760496868557931640,	-0.760464400527346320,	
+-0.760431930595600100,	-0.760399458762773930,	-0.760366985028949280,	-0.760334509394206440,	-0.760302031858627990,	-0.760269552422294440,	-0.760237071085286930,	-0.760204587847686850,	
+-0.760172102709575250,	-0.760139615671033500,	-0.760107126732142650,	-0.760074635892983850,	-0.760042143153638050,	-0.760009648514187400,	-0.759977151974712610,	-0.759944653535294950,	
+-0.759912153196015680,	-0.759879650956956090,	-0.759847146818196650,	-0.759814640779819970,	-0.759782132841906770,	-0.759749623004538190,	-0.759717111267795510,	-0.759684597631760110,	
+-0.759652082096513140,	-0.759619564662136090,	-0.759587045328710020,	-0.759554524096315850,	-0.759522000965035860,	-0.759489475934950970,	-0.759456949006142250,	-0.759424420178691270,	
+-0.759391889452679210,	-0.759359356828187450,	-0.759326822305296690,	-0.759294285884089430,	-0.759261747564646480,	-0.759229207347049240,	-0.759196665231378850,	-0.759164121217716810,	
+-0.759131575306144500,	-0.759099027496743290,	-0.759066477789593910,	-0.759033926184778940,	-0.759001372682378990,	-0.758968817282475780,	-0.758936259985150570,	-0.758903700790484640,	
+-0.758871139698559350,	-0.758838576709455760,	-0.758806011823256240,	-0.758773445040041740,	-0.758740876359893620,	-0.758708305782893390,	-0.758675733309122300,	-0.758643158938661850,	
+-0.758610582671593540,	-0.758578004507998840,	-0.758545424447958470,	-0.758512842491555040,	-0.758480258638869590,	-0.758447672889983600,	-0.758415085244978250,	-0.758382495703935230,	
+-0.758349904266935490,	-0.758317310934061520,	-0.758284715705394240,	-0.758252118581015160,	-0.758219519561005860,	-0.758186918645447740,	-0.758154315834422280,	-0.758121711128011080,	
+-0.758089104526295520,	-0.758056496029356650,	-0.758023885637277180,	-0.757991273350137940,	-0.757958659168020520,	-0.757926043091006530,	-0.757893425119177340,	-0.757860805252614120,	
+-0.757828183491399350,	-0.757795559835614090,	-0.757762934285340030,	-0.757730306840658670,	-0.757697677501651400,	-0.757665046268400030,	-0.757632413140986060,	-0.757599778119490970,	
+-0.757567141203995930,	-0.757534502394583640,	-0.757501861691335040,	-0.757469219094331740,	-0.757436574603655540,	-0.757403928219387730,	-0.757371279941610240,	-0.757338629770403890,	
+-0.757305977705851620,	-0.757273323748034350,	-0.757240667897033810,	-0.757208010152931490,	-0.757175350515809310,	-0.757142688985748660,	-0.757110025562831250,	-0.757077360247138230,	
+-0.757044693038752440,	-0.757012023937754910,	-0.756979352944227250,	-0.756946680058251280,	-0.756914005279908600,	-0.756881328609280810,	-0.756848650046449190,	-0.756815969591496550,	
+-0.756783287244503940,	-0.756750603005553190,	-0.756717916874725890,	-0.756685228852103760,	-0.756652538937768630,	-0.756619847131802080,	-0.756587153434285950,	-0.756554457845301400,	
+-0.756521760364931240,	-0.756489060993256630,	-0.756456359730359410,	-0.756423656576321270,	-0.756390951531224040,	-0.756358244595148890,	-0.756325535768178630,	-0.756292825050394520,	
+-0.756260112441878410,	-0.756227397942711880,	-0.756194681552976980,	-0.756161963272755420,	-0.756129243102128920,	-0.756096521041179190,	-0.756063797089987720,	-0.756031071248637330,	
+-0.755998343517209180,	-0.755965613895785200,	-0.755932882384447110,	-0.755900148983276950,	-0.755867413692355880,	-0.755834676511766720,	-0.755801937441590970,	-0.755769196481910210,	
+-0.755736453632806620,	-0.755703708894361890,	-0.755670962266657750,	-0.755638213749776360,	-0.755605463343799300,	-0.755572711048808190,	-0.755539956864885730,	-0.755507200792113420,	
+-0.755474442830573080,	-0.755441682980346640,	-0.755408921241516040,	-0.755376157614163100,	-0.755343392098369200,	-0.755310624694217390,	-0.755277855401789040,	-0.755245084221165990,	
+-0.755212311152430260,	-0.755179536195663800,	-0.755146759350948440,	-0.755113980618366210,	-0.755081199997998500,	-0.755048417489928350,	-0.755015633094237030,	-0.754982846811006800,	
+-0.754950058640319390,	-0.754917268582256830,	-0.754884476636901060,	-0.754851682804333570,	-0.754818887084637400,	-0.754786089477894050,	-0.754753289984185450,	-0.754720488603593750,	
+-0.754687685336200680,	-0.754654880182088480,	-0.754622073141339000,	-0.754589264214033720,	-0.754556453400256010,	-0.754523640700087040,	-0.754490826113609070,	-0.754458009640903930,	
+-0.754425191282053880,	-0.754392371037140850,	-0.754359548906246240,	-0.754326724889453290,	-0.754293898986843630,	-0.754261071198499170,	-0.754228241524502070,	-0.754195409964934390,	
+-0.754162576519878170,	-0.754129741189415450,	-0.754096903973628390,	-0.754064064872598580,	-0.754031223886409090,	-0.753998381015141610,	-0.753965536258878080,	-0.753932689617700770,	
+-0.753899841091691720,	-0.753866990680932550,	-0.753834138385506390,	-0.753801284205494970,	-0.753768428140980330,	-0.753735570192044510,	-0.753702710358769900,	-0.753669848641238540,	
+-0.753636985039532360,	-0.753604119553733850,	-0.753571252183924510,	-0.753538382930187490,	-0.753505511792604610,	-0.753472638771257920,	-0.753439763866229680,	-0.753406887077601950,	
+-0.753374008405457100,	-0.753341127849876500,	-0.753308245410943770,	-0.753275361088740380,	-0.753242474883348720,	-0.753209586794850730,	-0.753176696823328770,	-0.753143804968865130,	
+-0.753110911231541950,	-0.753078015611440940,	-0.753045118108645490,	-0.753012218723237200,	-0.752979317455298340,	-0.752946414304911270,	-0.752913509272158050,	-0.752880602357121060,	
+-0.752847693559882130,	-0.752814782880524390,	-0.752781870319129800,	-0.752748955875780500,	-0.752716039550558770,	-0.752683121343546980,	-0.752650201254827400,	-0.752617279284482300,	
+-0.752584355432593500,	-0.752551429699244270,	-0.752518502084516540,	-0.752485572588492470,	-0.752452641211254550,	-0.752419707952885040,	-0.752386772813466220,	-0.752353835793079910,	
+-0.752320896891809590,	-0.752287956109736980,	-0.752255013446944450,	-0.752222068903514510,	-0.752189122479529400,	-0.752156174175071410,	-0.752123223990222910,	-0.752090271925066500,	
+-0.752057317979683780,	-0.752024362154158240,	-0.751991404448571930,	-0.751958444863007110,	-0.751925483397546170,	-0.751892520052271470,	-0.751859554827264850,	-0.751826587722610020,	
+-0.751793618738388680,	-0.751760647874683220,	-0.751727675131576230,	-0.751694700509150100,	-0.751661724007487100,	-0.751628745626669930,	-0.751595765366780850,	-0.751562783227901710,	
+-0.751529799210116200,	-0.751496813313506260,	-0.751463825538154270,	-0.751430835884142610,	-0.751397844351553990,	-0.751364850940470670,	-0.751331855650974710,	-0.751298858483149590,	
+-0.751265859437077470,	-0.751232858512840610,	-0.751199855710521610,	-0.751166851030202980,	-0.751133844471967290,	-0.751100836035896950,	-0.751067825722073870,	-0.751034813530581880,	
+-0.751001799461502810,	-0.750968783514919250,	-0.750935765690913690,	-0.750902745989568850,	-0.750869724410967000,	-0.750836700955190390,	-0.750803675622322530,	-0.750770648412445450,	
+-0.750737619325641870,	-0.750704588361994160,	-0.750671555521584930,	-0.750638520804496890,	-0.750605484210812520,	-0.750572445740613880,	-0.750539405393984670,	-0.750506363171007050,	
+-0.750473319071763400,	-0.750440273096336430,	-0.750407225244808960,	-0.750374175517263260,	-0.750341123913781600,	-0.750308070434447690,	-0.750275015079343580,	-0.750241957848551970,	
+-0.750208898742155460,	-0.750175837760236770,	-0.750142774902878400,	-0.750109710170163150,	-0.750076643562173520,	-0.750043575078991780,	-0.750010504720701740,	-0.749977432487385350,	
+-0.749944358379125430,	-0.749911282396004570,	-0.749878204538105500,	-0.749845124805510350,	-0.749812043198302970,	-0.749778959716565500,	-0.749745874360380650,	-0.749712787129831030,	
+-0.749679698024999560,	-0.749646607045968750,	-0.749613514192821520,	-0.749580419465640360,	-0.749547322864507760,	-0.749514224389507210,	-0.749481124040721310,	-0.749448021818232450,	
+-0.749414917722123650,	-0.749381811752477420,	-0.749348703909376800,	-0.749315594192903720,	-0.749282482603142340,	-0.749249369140174700,	-0.749216253804083630,	-0.749183136594951950,	
+-0.749150017512862480,	-0.749116896557897930,	-0.749083773730141010,	-0.749050649029674220,	-0.749017522456581370,	-0.748984394010944740,	-0.748951263692847040,	-0.748918131502371190,	
+-0.748884997439600130,	-0.748851861504616470,	-0.748818723697502580,	-0.748785584018342500,	-0.748752442467218390,	-0.748719299044213300,	-0.748686153749409830,	-0.748653006582891020,	
+-0.748619857544739810,	-0.748586706635038790,	-0.748553553853870460,	-0.748520399201318850,	-0.748487242677466250,	-0.748454084282395570,	-0.748420924016189650,	-0.748387761878931410,	
+-0.748354597870703800,	-0.748321431991589070,	-0.748288264241671270,	-0.748255094621032900,	-0.748221923129756880,	-0.748188749767925930,	-0.748155574535623200,	-0.748122397432931410,	
+-0.748089218459933700,	-0.748056037616713020,	-0.748022854903351520,	-0.747989670319933580,	-0.747956483866541340,	-0.747923295543257980,	-0.747890105350166310,	-0.747856913287349490,	
+-0.747823719354889780,	-0.747790523552871340,	-0.747757325881376560,	-0.747724126340488460,	-0.747690924930290100,	-0.747657721650864300,	-0.747624516502294330,	-0.747591309484663010,	
+-0.747558100598053390,	-0.747524889842548060,	-0.747491677218230950,	-0.747458462725184790,	-0.747425246363492390,	-0.747392028133236800,	-0.747358808034501280,	-0.747325586067368650,	
+-0.747292362231921410,	-0.747259136528243940,	-0.747225908956418610,	-0.747192679516528570,	-0.747159448208656760,	-0.747126215032886340,	-0.747092979989300470,	-0.747059743077982060,	
+-0.747026504299013740,	-0.746993263652479640,	-0.746960021138462490,	-0.746926776757045330,	-0.746893530508311200,	-0.746860282392343140,	-0.746827032409224430,	-0.746793780559037670,	
+-0.746760526841866890,	-0.746727271257794810,	-0.746694013806904590,	-0.746660754489279380,	-0.746627493305002220,	-0.746594230254156390,	-0.746560965336824920,	-0.746527698553090420,	
+-0.746494429903037270,	-0.746461159386748060,	-0.746427887004306070,	-0.746394612755794330,	-0.746361336641295890,	-0.746328058660894240,	-0.746294778814671880,	-0.746261497102713060,	
+-0.746228213525100600,	-0.746194928081917560,	-0.746161640773247200,	-0.746128351599172680,	-0.746095060559777370,	-0.746061767655144430,	-0.746028472885357010,	-0.745995176250497830,	
+-0.745961877750651260,	-0.745928577385900020,	-0.745895275156327360,	-0.745861971062016460,	-0.745828665103050680,	-0.745795357279512630,	-0.745762047591486900,	-0.745728736039055870,	
+-0.745695422622303040,	-0.745662107341311780,	-0.745628790196165130,	-0.745595471186946470,	-0.745562150313739290,	-0.745528827576626530,	-0.745495502975691340,	-0.745462176511017870,	
+-0.745428848182688840,	-0.745395517990787850,	-0.745362185935398050,	-0.745328852016602820,	-0.745295516234485310,	-0.745262178589128470,	-0.745228839080616880,	-0.745195497709033150,	
+-0.745162154474460550,	-0.745128809376982670,	-0.745095462416682790,	-0.745062113593644270,	-0.745028762907950390,	-0.744995410359683970,	-0.744962055948929720,	-0.744928699675770360,	
+-0.744895341540289140,	-0.744861981542569660,	-0.744828619682695200,	-0.744795255960749140,	-0.744761890376814390,	-0.744728522930975470,	-0.744695153623315290,	-0.744661782453917230,	
+-0.744628409422864680,	-0.744595034530241120,	-0.744561657776129930,	-0.744528279160614700,	-0.744494898683778050,	-0.744461516345704900,	-0.744428132146477850,	-0.744394746086180500,	
+-0.744361358164896240,	-0.744327968382708650,	-0.744294576739701120,	-0.744261183235956580,	-0.744227787871559630,	-0.744194390646593210,	-0.744160991561140790,	-0.744127590615285990,	
+-0.744094187809112070,	-0.744060783142702850,	-0.744027376616141490,	-0.743993968229511800,	-0.743960557982896620,	-0.743927145876380650,	-0.743893731910046710,	-0.743860316083978510,	
+-0.743826898398259550,	-0.743793478852973310,	-0.743760057448202730,	-0.743726634184032620,	-0.743693209060545920,	-0.743659782077826350,	-0.743626353235957160,	-0.743592922535022070,	
+-0.743559489975104790,	-0.743526055556288700,	-0.743492619278657510,	-0.743459181142294150,	-0.743425741147283440,	-0.743392299293708430,	-0.743358855581652600,	-0.743325410011199670,	
+-0.743291962582433240,	-0.743258513295436800,	-0.743225062150293600,	-0.743191609147088260,	-0.743158154285903930,	-0.743124697566824200,	-0.743091238989932790,	-0.743057778555313190,	
+-0.743024316263049210,	-0.742990852113224460,	-0.742957386105921880,	-0.742923918241226500,	-0.742890448519221370,	-0.742856976939989980,	-0.742823503503616370,	-0.742790028210183810,	
+-0.742756551059776230,	-0.742723072052476670,	-0.742689591188369970,	-0.742656108467539380,	-0.742622623890068610,	-0.742589137456041160,	-0.742555649165540840,	-0.742522159018651370,	
+-0.742488667015456680,	-0.742455173156039590,	-0.742421677440485150,	-0.742388179868876510,	-0.742354680441297490,	-0.742321179157831800,	-0.742287676018563050,	-0.742254171023575160,	
+-0.742220664172951290,	-0.742187155466776270,	-0.742153644905133470,	-0.742120132488106490,	-0.742086618215779260,	-0.742053102088235380,	-0.742019584105558790,	-0.741986064267833200,	
+-0.741952542575142540,	-0.741919019027569850,	-0.741885493625200180,	-0.741851966368116790,	-0.741818437256403510,	-0.741784906290144150,	-0.741751373469422550,	-0.741717838794321960,	
+-0.741684302264927210,	-0.741650763881321890,	-0.741617223643589510,	-0.741583681551814090,	-0.741550137606079570,	-0.741516591806469670,	-0.741483044153068200,	-0.741449494645959110,	
+-0.741415943285225860,	-0.741382390070953190,	-0.741348835003224680,	-0.741315278082123940,	-0.741281719307735120,	-0.741248158680141930,	-0.741214596199427760,	-0.741181031865677630,	
+-0.741147465678975050,	-0.741113897639403720,	-0.741080327747047680,	-0.741046756001990880,	-0.741013182404317130,	-0.740979606954110360,	-0.740946029651454730,	-0.740912450496433280,	
+-0.740878869489131290,	-0.740845286629632230,	-0.740811701918019930,	-0.740778115354378430,	-0.740744526938791560,	-0.740710936671343360,	-0.740677344552117200,	-0.740643750581198360,	
+-0.740610154758670090,	-0.740576557084616560,	-0.740542957559121470,	-0.740509356182269100,	-0.740475752954143250,	-0.740442147874827980,	-0.740408540944406890,	-0.740374932162964900,	
+-0.740341321530585740,	-0.740307709047353210,	-0.740274094713351370,	-0.740240478528664260,	-0.740206860493376030,	-0.740173240607570060,	-0.740139618871331510,	-0.740105995284743970,	
+-0.740072369847891490,	-0.740038742560858000,	-0.740005113423727660,	-0.739971482436584620,	-0.739937849599512810,	-0.739904214912596280,	-0.739870578375918740,	-0.739836939989565350,	
+-0.739803299753619580,	-0.739769657668165600,	-0.739736013733287460,	-0.739702367949069180,	-0.739668720315594500,	-0.739635070832948660,	-0.739601419501215050,	-0.739567766320477830,	
+-0.739534111290821360,	-0.739500454412329480,	-0.739466795685086550,	-0.739433135109176520,	-0.739399472684683760,	-0.739365808411691640,	-0.739332142290285650,	-0.739298474320549400,	
+-0.739264804502566820,	-0.739231132836422280,	-0.739197459322199930,	-0.739163783959983280,	-0.739130106749857800,	-0.739096427691907090,	-0.739062746786215200,	-0.739029064032866610,	
+-0.738995379431945270,	-0.738961692983535420,	-0.738928004687721350,	-0.738894314544587320,	-0.738860622554216920,	-0.738826928716695530,	-0.738793233032106870,	-0.738759535500535080,	
+-0.738725836122064440,	-0.738692134896779210,	-0.738658431824763650,	-0.738624726906101480,	-0.738591020140878070,	-0.738557311529177030,	-0.738523601071082720,	-0.738489888766679540,	
+-0.738456174616051400,	-0.738422458619283020,	-0.738388740776458440,	-0.738355021087661490,	-0.738321299552977430,	-0.738287576172490190,	-0.738253850946284040,	-0.738220123874443250,	
+-0.738186394957052070,	-0.738152664194195120,	-0.738118931585955760,	-0.738085197132419600,	-0.738051460833670570,	-0.738017722689792820,	-0.737983982700870730,	-0.737950240866988790,	
+-0.737916497188231160,	-0.737882751664682310,	-0.737849004296426640,	-0.737815255083547840,	-0.737781504026131520,	-0.737747751124261390,	-0.737713996378021820,	-0.737680239787497300,	
+-0.737646481352772220,	-0.737612721073930390,	-0.737578958951057300,	-0.737545194984236760,	-0.737511429173553280,	-0.737477661519091220,	-0.737443892020935080,	-0.737410120679169110,	
+-0.737376347493877930,	-0.737342572465145780,	-0.737308795593056620,	-0.737275016877696140,	-0.737241236319148060,	-0.737207453917496870,	-0.737173669672827160,	-0.737139883585223200,	
+-0.737106095654768920,	-0.737072305881550040,	-0.737038514265650260,	-0.737004720807154400,	-0.736970925506146620,	-0.736937128362711520,	-0.736903329376933700,	-0.736869528548897420,	
+-0.736835725878687400,	-0.736801921366387450,	-0.736768115012083280,	-0.736734306815858830,	-0.736700496777798590,	-0.736666684897987150,	-0.736632871176509000,	-0.736599055613448740,	
+-0.736565238208890080,	-0.736531418962918960,	-0.736497597875619410,	-0.736463774947075820,	-0.736429950177372780,	-0.736396123566594780,	-0.736362295114826540,	-0.736328464822152640,	
+-0.736294632688656910,	-0.736260798714425180,	-0.736226962899541370,	-0.736193125244090310,	-0.736159285748156370,	-0.736125444411824260,	-0.736091601235178470,	-0.736057756218303160,	
+-0.736023909361283920,	-0.735990060664205030,	-0.735956210127150960,	-0.735922357750206310,	-0.735888503533455920,	-0.735854647476984150,	-0.735820789580875710,	-0.735786929845214770,	
+-0.735753068270087130,	-0.735719204855576850,	-0.735685339601768410,	-0.735651472508746740,	-0.735617603576596450,	-0.735583732805402010,	-0.735549860195247710,	-0.735515985746219240,	
+-0.735482109458400980,	-0.735448231331877310,	-0.735414351366733170,	-0.735380469563053140,	-0.735346585920921840,	-0.735312700440424180,	-0.735278813121644780,	-0.735244923964667670,	
+-0.735211032969578790,	-0.735177140136462510,	-0.735143245465403220,	-0.735109348956485940,	-0.735075450609795180,	-0.735041550425415300,	-0.735007648403432020,	-0.734973744543929720,	
+-0.734939838846992990,	-0.734905931312706760,	-0.734872021941155640,	-0.734838110732424440,	-0.734804197686597990,	-0.734770282803761110,	-0.734736366083997840,	-0.734702447527394220,	
+-0.734668527134034520,	-0.734634604904003560,	-0.734600680837386060,	-0.734566754934266820,	-0.734532827194730680,	-0.734498897618862000,	-0.734464966206746510,	-0.734431032958468680,	
+-0.734397097874113220,	-0.734363160953765080,	-0.734329222197509070,	-0.734295281605430010,	-0.734261339177612600,	-0.734227394914141350,	-0.734193448815102290,	-0.734159500880579460,	
+-0.734125551110657910,	-0.734091599505422580,	-0.734057646064958160,	-0.734023690789349590,	-0.733989733678681370,	-0.733955774733039190,	-0.733921813952507660,	-0.733887851337171710,	
+-0.733853886887116060,	-0.733819920602425620,	-0.733785952483185460,	-0.733751982529480370,	-0.733718010741394750,	-0.733684037119014640,	-0.733650061662424520,	-0.733616084371709220,	
+-0.733582105246953780,	-0.733548124288242900,	-0.733514141495661850,	-0.733480156869294800,	-0.733446170409227990,	-0.733412182115545710,	-0.733378191988332980,	-0.733344200027674860,	
+-0.733310206233656170,	-0.733276210606361940,	-0.733242213145877230,	-0.733208213852286960,	-0.733174212725675620,	-0.733140209766129260,	-0.733106204973732360,	-0.733072198348569960,	
+-0.733038189890727110,	-0.733004179600288850,	-0.732970167477339450,	-0.732936153521965170,	-0.732902137734250610,	-0.732868120114280710,	-0.732834100662140500,	-0.732800079377915030,	
+-0.732766056261689340,	-0.732732031313548470,	-0.732698004533577580,	-0.732663975921861050,	-0.732629945478485260,	-0.732595913203534570,	-0.732561879097094140,	-0.732527843159248900,	
+-0.732493805390084130,	-0.732459765789684750,	-0.732425724358135470,	-0.732391681095522440,	-0.732357636001930160,	-0.732323589077443880,	-0.732289540322148550,	-0.732255489736129420,	
+-0.732221437319471540,	-0.732187383072260060,	-0.732153326994579580,	-0.732119269086516260,	-0.732085209348154910,	-0.732051147779580470,	-0.732017084380878090,	-0.731983019152133150,	
+-0.731948952093430580,	-0.731914883204854980,	-0.731880812486492840,	-0.731846739938428750,	-0.731812665560747640,	-0.731778589353535010,	-0.731744511316875790,	-0.731710431450855350,	
+-0.731676349755558840,	-0.731642266231070870,	-0.731608180877477810,	-0.731574093694864260,	-0.731540004683315480,	-0.731505913842916740,	-0.731471821173753200,	-0.731437726675910120,	
+-0.731403630349472090,	-0.731369532194525610,	-0.731335432211155270,	-0.731301330399446450,	-0.731267226759484190,	-0.731233121291353870,	-0.731199013995140760,	-0.731164904870930110,	
+-0.731130793918807200,	-0.731096681138856840,	-0.731062566531165190,	-0.731028450095817290,	-0.730994331832898080,	-0.730960211742493150,	-0.730926089824687650,	-0.730891966079566410,	
+-0.730857840507215810,	-0.730823713107720540,	-0.730789583881166100,	-0.730755452827637540,	-0.730721319947220560,	-0.730687185240000090,	-0.730653048706061740,	-0.730618910345490760,	
+-0.730584770158371980,	-0.730550628144791770,	-0.730516484304835070,	-0.730482338638587030,	-0.730448191146133240,	-0.730414041827558980,	-0.730379890682949620,	-0.730345737712389860,	
+-0.730311582915966430,	-0.730277426293764020,	-0.730243267845868130,	-0.730209107572363900,	-0.730174945473337060,	-0.730140781548872740,	-0.730106615799056560,	-0.730072448223973100,	
+-0.730038278823709310,	-0.730004107598349660,	-0.729969934547979870,	-0.729935759672685200,	-0.729901582972551030,	-0.729867404447662960,	-0.729833224098105800,	-0.729799041923966160,	
+-0.729764857925328970,	-0.729730672102279600,	-0.729696484454903540,	-0.729662294983286270,	-0.729628103687513410,	-0.729593910567670090,	-0.729559715623841480,	-0.729525518856114160,	
+-0.729491320264572970,	-0.729457119849303610,	-0.729422917610391460,	-0.729388713547921900,	-0.729354507661980620,	-0.729320299952652460,	-0.729286090420024240,	-0.729251879064180650,	
+-0.729217665885207420,	-0.729183450883190030,	-0.729149234058213970,	-0.729115015410364940,	-0.729080794939728220,	-0.729046572646389610,	-0.729012348530433950,	-0.728978122591948050,	
+-0.728943894831016740,	-0.728909665247725820,	-0.728875433842160580,	-0.728841200614406940,	-0.728806965564549600,	-0.728772728692675400,	-0.728738489998869480,	-0.728704249483217330,	
+-0.728670007145804540,	-0.728635762986716730,	-0.728601517006039480,	-0.728567269203858390,	-0.728533019580259290,	-0.728498768135326880,	-0.728464514869148210,	-0.728430259781808310,	
+-0.728396002873392680,	-0.728361744143987020,	-0.728327483593677050,	-0.728293221222548360,	-0.728258957030686100,	-0.728224691018176990,	-0.728190423185106070,	-0.728156153531559270,	
+-0.728121882057621850,	-0.728087608763379970,	-0.728053333648918890,	-0.728019056714324540,	-0.727984777959681970,	-0.727950497385078000,	-0.727916214990597890,	-0.727881930776327120,	
+-0.727847644742351640,	-0.727813356888756920,	-0.727779067215628910,	-0.727744775723052630,	-0.727710482411114910,	-0.727676187279901020,	-0.727641890329496780,	-0.727607591559987780,	
+-0.727573290971459730,	-0.727538988563998460,	-0.727504684337689670,	-0.727470378292618620,	-0.727436070428872260,	-0.727401760746535730,	-0.727367449245694740,	-0.727333135926435110,	
+-0.727298820788842670,	-0.727264503833003230,	-0.727230185059001940,	-0.727195864466925750,	-0.727161542056859900,	-0.727127217828890120,	-0.727092891783102440,	-0.727058563919582460,	
+-0.727024234238416000,	-0.726989902739689110,	-0.726955569423487270,	-0.726921234289896080,	-0.726886897339002250,	-0.726852558570891370,	-0.726818217985648940,	-0.726783875583360990,	
+-0.726749531364113350,	-0.726715185327991400,	-0.726680837475081940,	-0.726646487805470480,	-0.726612136319242710,	-0.726577783016484680,	-0.726543427897282100,	-0.726509070961721020,	
+-0.726474712209887240,	-0.726440351641866710,	-0.726405989257744690,	-0.726371625057608330,	-0.726337259041542890,	-0.726302891209634320,	-0.726268521561968420,	-0.726234150098631240,	
+-0.726199776819708820,	-0.726165401725286320,	-0.726131024815450780,	-0.726096646090287790,	-0.726062265549883180,	-0.726027883194322880,	-0.725993499023692810,	-0.725959113038079030,	
+-0.725924725237567570,	-0.725890335622243590,	-0.725855944192194460,	-0.725821550947505330,	-0.725787155888262480,	-0.725752759014551610,	-0.725718360326458980,	-0.725683959824070300,	
+-0.725649557507471180,	-0.725615153376748760,	-0.725580747431988530,	-0.725546339673276420,	-0.725511930100698370,	-0.725477518714340520,	-0.725443105514288920,	-0.725408690500629500,	
+-0.725374273673447760,	-0.725339855032831050,	-0.725305434578864540,	-0.725271012311634600,	-0.725236588231227050,	-0.725202162337728050,	-0.725167734631223640,	-0.725133305111799190,	
+-0.725098873779542190,	-0.725064440634538010,	-0.725030005676872700,	-0.724995568906632410,	-0.724961130323903080,	-0.724926689928771070,	-0.724892247721322210,	-0.724857803701642770,	
+-0.724823357869818330,	-0.724788910225935950,	-0.724754460770081320,	-0.724720009502340720,	-0.724685556422799860,	-0.724651101531545220,	-0.724616644828662170,	-0.724582186314238210,	
+-0.724547725988358700,	-0.724513263851109920,	-0.724478799902577910,	-0.724444334142848920,	-0.724409866572009120,	-0.724375397190144770,	-0.724340925997341790,	-0.724306452993685900,	
+-0.724271978179264480,	-0.724237501554163110,	-0.724203023118467960,	-0.724168542872265400,	-0.724134060815641360,	-0.724099576948682210,	-0.724065091271473450,	-0.724030603784102670,	
+-0.723996114486655350,	-0.723961623379217660,	-0.723927130461875960,	-0.723892635734716410,	-0.723858139197825380,	-0.723823640851288920,	-0.723789140695192730,	-0.723754638729624310,	
+-0.723720134954669360,	-0.723685629370414030,	-0.723651121976944590,	-0.723616612774347410,	-0.723582101762708650,	-0.723547588942114020,	-0.723513074312651110,	-0.723478557874405400,	
+-0.723444039627463400,	-0.723409519571911240,	-0.723374997707835200,	-0.723340474035321760,	-0.723305948554457180,	-0.723271421265327060,	-0.723236892168019010,	-0.723202361262618720,	
+-0.723167828549212580,	-0.723133294027886840,	-0.723098757698727780,	-0.723064219561821990,	-0.723029679617254840,	-0.722995137865114270,	-0.722960594305485760,	-0.722926048938455800,	
+-0.722891501764110770,	-0.722856952782536920,	-0.722822401993820640,	-0.722787849398048520,	-0.722753294995306610,	-0.722718738785680940,	-0.722684180769259000,	-0.722649620946126610,	
+-0.722615059316370160,	-0.722580495880076110,	-0.722545930637330750,	-0.722511363588219990,	-0.722476794732831440,	-0.722442224071250920,	-0.722407651603564900,	-0.722373077329859560,	
+-0.722338501250221700,	-0.722303923364737480,	-0.722269343673493490,	-0.722234762176576120,	-0.722200178874071290,	-0.722165593766066590,	-0.722131006852647970,	-0.722096418133901690,	
+-0.722061827609914550,	-0.722027235280772730,	-0.721992641146562140,	-0.721958045207370720,	-0.721923447463284070,	-0.721888847914388790,	-0.721854246560771460,	-0.721819643402518580,	
+-0.721785038439716420,	-0.721750431672451790,	-0.721715823100811060,	-0.721681212724880170,	-0.721646600544746830,	-0.721611986560496970,	-0.721577370772217170,	-0.721542753179993950,	
+-0.721508133783913760,	-0.721473512584063340,	-0.721438889580528490,	-0.721404264773397140,	-0.721369638162754900,	-0.721335009748688690,	-0.721300379531285010,	-0.721265747510630330,	
+-0.721231113686811250,	-0.721196478059914490,	-0.721161840630025750,	-0.721127201397233190,	-0.721092560361622500,	-0.721057917523280520,	-0.721023272882293620,	-0.720988626438748610,	
+-0.720953978192732100,	-0.720919328144330020,	-0.720884676293630070,	-0.720850022640718620,	-0.720815367185681950,	-0.720780709928606990,	-0.720746050869580210,	-0.720711390008688340,	
+-0.720676727346017950,	-0.720642062881655780,	-0.720607396615687850,	-0.720572728548201980,	-0.720538058679284330,	-0.720503387009021500,	-0.720468713537500190,	-0.720434038264807120,	
+-0.720399361191028320,	-0.720364682316251840,	-0.720330001640563600,	-0.720295319164050210,	-0.720260634886798700,	-0.720225948808895570,	-0.720191260930427510,	-0.720156571251481360,	
+-0.720121879772143700,	-0.720087186492500810,	-0.720052491412640490,	-0.720017794532649020,	-0.719983095852613110,	-0.719948395372619340,	-0.719913693092754660,	-0.719878989013105100,	
+-0.719844283133758700,	-0.719809575454801510,	-0.719774865976320450,	-0.719740154698402250,	-0.719705441621133590,	-0.719670726744601420,	-0.719636010068892330,	-0.719601291594093360,	
+-0.719566571320290450,	-0.719531849247571740,	-0.719497125376023390,	-0.719462399705732230,	-0.719427672236785050,	-0.719392942969268700,	-0.719358211903270100,	-0.719323479038875170,	
+-0.719288744376172300,	-0.719254007915247520,	-0.719219269656187770,	-0.719184529599079750,	-0.719149787744010500,	-0.719115044091066750,	-0.719080298640335400,	-0.719045551391902630,	
+-0.719010802345856680,	-0.718976051502283610,	-0.718941298861270560,	-0.718906544422904140,	-0.718871788187271380,	-0.718837030154459210,	-0.718802270324553790,	-0.718767508697643390,	
+-0.718732745273814140,	-0.718697980053153000,	-0.718663213035746980,	-0.718628444221682930,	-0.718593673611047760,	-0.718558901203928400,	-0.718524127000411790,	-0.718489351000584200,	
+-0.718454573204533880,	-0.718419793612347200,	-0.718385012224110890,	-0.718350229039912190,	-0.718315444059837830,	-0.718280657283974280,	-0.718245868712409700,	-0.718211078345230460,	
+-0.718176286182523490,	-0.718141492224375840,	-0.718106696470874440,	-0.718071898922106320,	-0.718037099578158420,	-0.718002298439117780,	-0.717967495505070770,	-0.717932690776105660,	
+-0.717897884252308830,	-0.717863075933767300,	-0.717828265820568020,	-0.717793453912798140,	-0.717758640210544030,	-0.717723824713893840,	-0.717689007422934180,	-0.717654188337751850,	
+-0.717619367458434240,	-0.717584544785068170,	-0.717549720317740670,	-0.717514894056538900,	-0.717480066001549900,	-0.717445236152860040,	-0.717410404510557820,	-0.717375571074729490,	
+-0.717340735845462320,	-0.717305898822843350,	-0.717271060006959500,	-0.717236219397898060,	-0.717201376995745490,	-0.717166532800590060,	-0.717131686812518270,	-0.717096839031617360,	
+-0.717061989457974280,	-0.717027138091676170,	-0.716992284932810310,	-0.716957429981463720,	-0.716922573237723020,	-0.716887714701676340,	-0.716852854373410510,	-0.716817992253012460,	
+-0.716783128340569450,	-0.716748262636168530,	-0.716713395139897070,	-0.716678525851841550,	-0.716643654772090240,	-0.716608781900729740,	-0.716573907237847420,	-0.716539030783530210,	
+-0.716504152537865590,	-0.716469272500940390,	-0.716434390672842090,	-0.716399507053657960,	-0.716364621643474250,	-0.716329734442379680,	-0.716294845450460740,	-0.716259954667804680,	
+-0.716225062094498770,	-0.716190167730630270,	-0.716155271576285560,	-0.716120373631553450,	-0.716085473896520330,	-0.716050572371273560,	-0.716015669055900310,	-0.715980763950487930,	
+-0.715945857055123700,	-0.715910948369894660,	-0.715876037894888410,	-0.715841125630191310,	-0.715806211575892190,	-0.715771295732077430,	-0.715736378098834390,	-0.715701458676250460,	
+-0.715666537464412890,	-0.715631614463408390,	-0.715596689673325350,	-0.715561763094250790,	-0.715526834726271650,	-0.715491904569475420,	-0.715456972623949470,	-0.715422038889781180,	
+-0.715387103367057690,	-0.715352166055866380,	-0.715317226956294180,	-0.715282286068429470,	-0.715247343392359070,	-0.715212398928170230,	-0.715177452675950560,	-0.715142504635787100,	
+-0.715107554807767440,	-0.715072603191978300,	-0.715037649788508150,	-0.715002694597444030,	-0.714967737618873110,	-0.714932778852882870,	-0.714897818299560560,	-0.714862855958993900,	
+-0.714827891831269930,	-0.714792925916475700,	-0.714757958214699780,	-0.714722988726028910,	-0.714688017450550660,	-0.714653044388352310,	-0.714618069539521340,	-0.714583092904145230,	
+-0.714548114482310700,	-0.714513134274106560,	-0.714478152279619530,	-0.714443168498937190,	-0.714408182932146920,	-0.714373195579336210,	-0.714338206440592430,	-0.714303215516003180,	
+-0.714268222805655270,	-0.714233228309637420,	-0.714198232028036450,	-0.714163233960940060,	-0.714128234108435400,	-0.714093232470610180,	-0.714058229047552010,	-0.714023223839347580,	
+-0.713988216846085710,	-0.713953208067853230,	-0.713918197504737840,	-0.713883185156826920,	-0.713848171024207940,	-0.713813155106968630,	-0.713778137405196470,	-0.713743117918978930,	
+-0.713708096648402960,	-0.713673073593557360,	-0.713638048754529080,	-0.713603022131405700,	-0.713567993724274820,	-0.713532963533223820,	-0.713497931558339850,	-0.713462897799711730,	
+-0.713427862257426270,	-0.713392824931571190,	-0.713357785822234080,	-0.713322744929502540,	-0.713287702253464050,	-0.713252657794206320,	-0.713217611551816950,	-0.713182563526382980,	
+-0.713147513717993120,	-0.713112462126734630,	-0.713077408752694870,	-0.713042353595961580,	-0.713007296656622440,	-0.712972237934765160,	-0.712937177430476470,	-0.712902115143845600,	
+-0.712867051074959400,	-0.712831985223905560,	-0.712796917590771790,	-0.712761848175645700,	-0.712726776978614970,	-0.712691703999767330,	-0.712656629239189820,	-0.712621552696971360,	
+-0.712586474373199000,	-0.712551394267960330,	-0.712516312381343390,	-0.712481228713435550,	-0.712446143264324650,	-0.712411056034097820,	-0.712375967022843890,	-0.712340876230650120,	
+-0.712305783657604110,	-0.712270689303793670,	-0.712235593169306510,	-0.712200495254230350,	-0.712165395558652990,	-0.712130294082661490,	-0.712095190826344870,	-0.712060085789790300,	
+-0.712024978973085480,	-0.711989870376318220,	-0.711954759999576250,	-0.711919647842947370,	-0.711884533906518850,	-0.711849418190379610,	-0.711814300694616710,	-0.711779181419318170,	
+-0.711744060364571610,	-0.711708937530464940,	-0.711673812917085980,	-0.711638686524522330,	-0.711603558352862150,	-0.711568428402192250,	-0.711533296672602010,	-0.711498163164178580,	
+-0.711463027877009770,	-0.711427890811183290,	-0.711392751966787080,	-0.711357611343908400,	-0.711322468942636290,	-0.711287324763058000,	-0.711252178805261480,	-0.711217031069334430,	
+-0.711181881555364770,	-0.711146730263440550,	-0.711111577193649370,	-0.711076422346079370,	-0.711041265720817610,	-0.711006107317953220,	-0.710970947137573690,	-0.710935785179766740,	
+-0.710900621444620410,	-0.710865455932222500,	-0.710830288642660850,	-0.710795119576022930,	-0.710759948732397890,	-0.710724776111872900,	-0.710689601714535990,	-0.710654425540475090,	
+-0.710619247589778010,	-0.710584067862533030,	-0.710548886358827740,	-0.710513703078749610,	-0.710478518022387820,	-0.710443331189829830,	-0.710408142581163470,	-0.710372952196476780,	
+-0.710337760035857580,	-0.710302566099394130,	-0.710267370387173580,	-0.710232172899285310,	-0.710196973635816460,	-0.710161772596855310,	-0.710126569782489670,	-0.710091365192807580,	
+-0.710056158827897080,	-0.710020950687846210,	-0.709985740772742350,	-0.709950529082674750,	-0.709915315617730910,	-0.709880100377998650,	-0.709844883363566210,	-0.709809664574521550,	
+-0.709774444010952690,	-0.709739221672947120,	-0.709703997560594100,	-0.709668771673981120,	-0.709633544013196230,	-0.709598314578327450,	-0.709563083369462940,	-0.709527850386690640,	
+-0.709492615630098800,	-0.709457379099775350,	-0.709422140795807790,	-0.709386900718285580,	-0.709351658867296120,	-0.709316415242927430,	-0.709281169845267790,	-0.709245922674405230,	
+-0.709210673730427230,	-0.709175423013423180,	-0.709140170523480440,	-0.709104916260687390,	-0.709069660225132070,	-0.709034402416902520,	-0.708999142836087000,	-0.708963881482773670,	
+-0.708928618357050570,	-0.708893353459005390,	-0.708858086788727420,	-0.708822818346304120,	-0.708787548131823870,	-0.708752276145374730,	-0.708717002387044940,	-0.708681726856922540,	
+-0.708646449555095370,	-0.708611170481652560,	-0.708575889636681830,	-0.708540607020271440,	-0.708505322632509540,	-0.708470036473484280,	-0.708434748543284030,	-0.708399458841996730,	
+-0.708364167369710310,	-0.708328874126514020,	-0.708293579112495570,	-0.708258282327743130,	-0.708222983772345050,	-0.708187683446389490,	-0.708152381349964720,	-0.708117077483158330,	
+-0.708081771846059920,	-0.708046464438757070,	-0.708011155261338070,	-0.707975844313891270,	-0.707940531596504720,	-0.707905217109266900,	-0.707869900852265980,	-0.707834582825589750,	
+-0.707799263029327720,	-0.707763941463567360,	-0.707728618128397270,	-0.707693293023905600,	-0.707657966150180840,	-0.707622637507311030,	-0.707587307095383980,	-0.707551974914489400,	
+-0.707516640964714780,	-0.707481305246148610,	-0.707445967758879140,	-0.707410628502994740,	-0.707375287478583800,	-0.707339944685734690,	-0.707304600124535670,	-0.707269253795074440,	
+-0.707233905697440820,	-0.707198555831722420,	-0.707163204198007600,	-0.707127850796384740,	-0.707092495626942320,	-0.707057138689768050,	-0.707021779984951530,	-0.706986419512580570,	
+-0.706951057272743540,	-0.706915693265528830,	-0.706880327491024920,	-0.706844959949320170,	-0.706809590640503080,	-0.706774219564662020,	-0.706738846721884690,	-0.706703472112260920,	
+-0.706668095735878520,	-0.706632717592825870,	-0.706597337683191330,	-0.706561956007063510,	-0.706526572564530890,	-0.706491187355681060,	-0.706455800380603960,	-0.706420411639387400,	
+-0.706385021132119760,	-0.706349628858889520,	-0.706314234819785280,	-0.706278839014895410,	-0.706243441444308510,	-0.706208042108112280,	-0.706172641006396650,	-0.706137238139249450,	
+-0.706101833506759040,	-0.706066427109014130,	-0.706031018946103090,	-0.705995609018114530,	-0.705960197325136370,	-0.705924783867258320,	-0.705889368644568300,	-0.705853951657154810,	
+-0.705818532905106540,	-0.705783112388511880,	-0.705747690107459410,	-0.705712266062037740,	-0.705676840252334790,	-0.705641412678440380,	-0.705605983340442440,	-0.705570552238429460,	
+-0.705535119372490250,	-0.705499684742713180,	-0.705464248349186860,	-0.705428810191999320,	-0.705393370271240380,	-0.705357928586997970,	-0.705322485139360800,	-0.705287039928417350,	
+-0.705251592954256320,	-0.705216144216966320,	-0.705180693716636050,	-0.705145241453353890,	-0.705109787427208090,	-0.705074331638288480,	-0.705038874086682980,	-0.705003414772480300,	
+-0.704967953695769150,	-0.704932490856638010,	-0.704897026255175030,	-0.704861559891470150,	-0.704826091765611400,	-0.704790621877687370,	-0.704755150227786790,	-0.704719676815998340,	
+-0.704684201642410750,	-0.704648724707112590,	-0.704613246010192710,	-0.704577765551739010,	-0.704542283331841550,	-0.704506799350588350,	-0.704471313608068140,	-0.704435826104369720,	
+-0.704400336839581700,	-0.704364845813792770,	-0.704329353027091210,	-0.704293858479566830,	-0.704258362171307770,	-0.704222864102402870,	-0.704187364272940820,	-0.704151862683010330,	
+-0.704116359332700230,	-0.704080854222099100,	-0.704045347351295310,	-0.704009838720378810,	-0.703974328329437630,	-0.703938816178560690,	-0.703903302267836710,	-0.703867786597354380,	
+-0.703832269167202760,	-0.703796749977469660,	-0.703761229028245340,	-0.703725706319618060,	-0.703690181851676420,	-0.703654655624509350,	-0.703619127638205670,	-0.703583597892854180,	
+-0.703548066388543610,	-0.703512533125362330,	-0.703476998103400360,	-0.703441461322745760,	-0.703405922783487680,	-0.703370382485714710,	-0.703334840429515770,	-0.703299296614979810,	
+-0.703263751042194850,	-0.703228203711251170,	-0.703192654622237120,	-0.703157103775241320,	-0.703121551170352800,	-0.703085996807660370,	-0.703050440687252860,	-0.703014882809219420,	
+-0.702979323173648640,	-0.702943761780629010,	-0.702908198630250560,	-0.702872633722601670,	-0.702837067057771160,	-0.702801498635847950,	-0.702765928456920990,	-0.702730356521078630,	
+-0.702694782828411020,	-0.702659207379006330,	-0.702623630172953820,	-0.702588051210342070,	-0.702552470491260240,	-0.702516888015797260,	-0.702481303784042050,	-0.702445717796083560,	
+-0.702410130052010250,	-0.702374540551912060,	-0.702338949295877700,	-0.702303356283995870,	-0.702267761516355620,	-0.702232164993046080,	-0.702196566714155980,	-0.702160966679773900,	
+-0.702125364889990110,	-0.702089761344892870,	-0.702054156044571220,	-0.702018548989114090,	-0.701982940178610630,	-0.701947329613149870,	-0.701911717292820760,	-0.701876103217711770,	
+-0.701840487387913160,	-0.701804869803513200,	-0.701769250464601150,	-0.701733629371266040,	-0.701698006523596820,	-0.701662381921682510,	-0.701626755565611600,	-0.701591127455474580,	
+-0.701555497591359600,	-0.701519865973355920,	-0.701484232601552680,	-0.701448597476038720,	-0.701412960596903280,	-0.701377321964235520,	-0.701341681578123710,	-0.701306039438658440,	
+-0.701270395545928070,	-0.701234749900021660,	-0.701199102501028350,	-0.701163453349037290,	-0.701127802444137640,	-0.701092149786417870,	-0.701056495375968370,	-0.701020839212877610,	
+-0.700985181297234640,	-0.700949521629128820,	-0.700913860208649210,	-0.700878197035884940,	-0.700842532110925060,	-0.700806865433859060,	-0.700771197004775080,	-0.700735526823763830,	
+-0.700699854890913800,	-0.700664181206314020,	-0.700628505770053870,	-0.700592828582222490,	-0.700557149642908270,	-0.700521468952201910,	-0.700485786510191890,	-0.700450102316967360,	
+-0.700414416372617590,	-0.700378728677231830,	-0.700343039230899130,	-0.700307348033708870,	-0.700271655085750290,	-0.700235960387112000,	-0.700200263937884260,	-0.700164565738156000,	
+-0.700128865788016250,	-0.700093164087554400,	-0.700057460636859590,	-0.700021755436020520,	-0.699986048485127690,	-0.699950339784269790,	-0.699914629333535990,	-0.699878917133015640,	
+-0.699843203182797910,	-0.699807487482972280,	-0.699771770033627890,	-0.699736050834854020,	-0.699700329886739470,	-0.699664607189374730,	-0.699628882742848400,	-0.699593156547249960,	
+-0.699557428602668560,	-0.699521698909193690,	-0.699485967466914490,	-0.699450234275919680,	-0.699414499336299960,	-0.699378762648144030,	-0.699343024211541150,	-0.699307284026580820,	
+-0.699271542093352180,	-0.699235798411944610,	-0.699200052982447700,	-0.699164305804949930,	-0.699128556879542120,	-0.699092806206312870,	-0.699057053785351550,	-0.699021299616747640,	
+-0.698985543700590520,	-0.698949786036969440,	-0.698914026625973350,	-0.698878265467692830,	-0.698842502562216580,	-0.698806737909634100,	-0.698770971510034760,	-0.698735203363508030,	
+-0.698699433470143290,	-0.698663661830029930,	-0.698627888443257520,	-0.698592113309914660,	-0.698556336430092180,	-0.698520557803878780,	-0.698484777431364060,	-0.698448995312637380,	
+-0.698413211447788230,	-0.698377425836905430,	-0.698341638480079690,	-0.698305849377399810,	-0.698270058528955300,	-0.698234265934835730,	-0.698198471595130490,	-0.698162675509928940,	
+-0.698126877679320800,	-0.698091078103395550,	-0.698055276782241880,	-0.698019473715950630,	-0.697983668904610720,	-0.697947862348311630,	-0.697912054047142850,	-0.697876244001193970,	
+-0.697840432210553920,	-0.697804618675313290,	-0.697768803395561240,	-0.697732986371387030,	-0.697697167602880470,	-0.697661347090130950,	-0.697625524833228150,	-0.697589700832261460,	
+-0.697553875087320470,	-0.697518047598494230,	-0.697482218365873540,	-0.697446387389547230,	-0.697410554669605000,	-0.697374720206136330,	-0.697338883999230940,	-0.697303046048978300,	
+-0.697267206355467350,	-0.697231364918789120,	-0.697195521739032430,	-0.697159676816286880,	-0.697123830150642170,	-0.697087981742188000,	-0.697052131591013760,	-0.697016279697209250,	
+-0.696980426060863300,	-0.696944570682067050,	-0.696908713560909330,	-0.696872854697479730,	-0.696836994091868060,	-0.696801131744164030,	-0.696765267654457010,	-0.696729401822836270,	
+-0.696693534249392620,	-0.696657664934215100,	-0.696621793877393540,	-0.696585921079017400,	-0.696550046539176400,	-0.696514170257960360,	-0.696478292235458870,	-0.696442412471761750,	
+-0.696406530966957820,	-0.696370647721138330,	-0.696334762734392100,	-0.696298876006809060,	-0.696262987538478820,	-0.696227097329491060,	-0.696191205379934950,	-0.696155311689901410,	
+-0.696119416259479710,	-0.696083519088759320,	-0.696047620177830280,	-0.696011719526782090,	-0.695975817135704670,	-0.695939913004687600,	-0.695904007133820830,	-0.695868099523193400,	
+-0.695832190172896330,	-0.695796279083018780,	-0.695760366253650560,	-0.695724451684881510,	-0.695688535376801200,	-0.695652617329499010,	-0.695616697543065770,	-0.695580776017590940,	
+-0.695544852753164130,	-0.695508927749875160,	-0.695473001007813840,	-0.695437072527070100,	-0.695401142307733640,	-0.695365210349894290,	-0.695329276653641300,	-0.695293341219065830,	
+-0.695257404046256910,	-0.695221465135304470,	-0.695185524486298450,	-0.695149582099328530,	-0.695113637974484780,	-0.695077692111856220,	-0.695041744511534000,	-0.695005795173607500,	
+-0.694969844098166530,	-0.694933891285300920,	-0.694897936735100590,	-0.694861980447655350,	-0.694826022423055250,	-0.694790062661389430,	-0.694754101162749160,	-0.694718137927223480,	
+-0.694682172954902530,	-0.694646206245876140,	-0.694610237800234340,	-0.694574267618066840,	-0.694538295699463020,	-0.694502322044514120,	-0.694466346653309420,	-0.694430369525938950,	
+-0.694394390662492420,	-0.694358410063059980,	-0.694322427727731450,	-0.694286443656596970,	-0.694250457849745590,	-0.694214470307268790,	-0.694178481029255830,	-0.694142490015796640,	
+-0.694106497266981260,	-0.694070502782899610,	-0.694034506563641740,	-0.693998508609296900,	-0.693962508919956480,	-0.693926507495709720,	-0.693890504336646790,	-0.693854499442857490,	
+-0.693818492814431980,	-0.693782484451460290,	-0.693746474354032360,	-0.693710462522238220,	-0.693674448956167370,	-0.693638433655910940,	-0.693602416621558420,	-0.693566397853199960,	
+-0.693530377350925380,	-0.693494355114824930,	-0.693458331144988000,	-0.693422305441505740,	-0.693386278004467840,	-0.693350248833964230,	-0.693314217930084960,	-0.693278185292920180,	
+-0.693242150922559920,	-0.693206114819094220,	-0.693170076982613350,	-0.693134037413206560,	-0.693097996110965340,	-0.693061953075979180,	-0.693025908308338100,	-0.692989861808132270,	
+-0.692953813575451720,	-0.692917763610386710,	-0.692881711913026610,	-0.692845658483462800,	-0.692809603321784980,	-0.692773546428083090,	-0.692737487802447370,	-0.692701427444967880,	
+-0.692665365355734860,	-0.692629301534838370,	-0.692593235982367990,	-0.692557168698415220,	-0.692521099683069520,	-0.692485028936421050,	-0.692448956458560080,	-0.692412882249576640,	
+-0.692376806309561000,	-0.692340728638602740,	-0.692304649236793250,	-0.692268568104222100,	-0.692232485240979580,	-0.692196400647155930,	-0.692160314322841200,	-0.692124226268125640,	
+-0.692088136483099640,	-0.692052044967852550,	-0.692015951722475990,	-0.691979856747059640,	-0.691943760041693560,	-0.691907661606468110,	-0.691871561441473440,	-0.691835459546800040,	
+-0.691799355922537160,	-0.691763250568776630,	-0.691727143485608040,	-0.691691034673121430,	-0.691654924131407390,	-0.691618811860555960,	-0.691582697860657510,	-0.691546582131802310,	
+-0.691510464674080620,	-0.691474345487582130,	-0.691438224572398450,	-0.691402101928619280,	-0.691365977556334780,	-0.691329851455635300,	-0.691293723626611230,	-0.691257594069352280,	
+-0.691221462783949910,	-0.691185329770493850,	-0.691149195029074570,	-0.691113058559782220,	-0.691076920362707290,	-0.691040780437939930,	-0.691004638785570720,	-0.690968495405689940,	
+-0.690932350298387290,	-0.690896203463754240,	-0.690860054901880850,	-0.690823904612857250,	-0.690787752596773940,	-0.690751598853721170,	-0.690715443383789540,	-0.690679286187068530,	
+-0.690643127263649960,	-0.690606966613623640,	-0.690570804237079840,	-0.690534640134109030,	-0.690498474304801710,	-0.690462306749248130,	-0.690426137467538780,	-0.690389966459763470,	
+-0.690353793726013910,	-0.690317619266379800,	-0.690281443080951630,	-0.690245265169819880,	-0.690209085533075030,	-0.690172904170807460,	-0.690136721083106860,	-0.690100536270065180,	
+-0.690064349731772220,	-0.690028161468318360,	-0.689991971479794080,	-0.689955779766289860,	-0.689919586327896180,	-0.689883391164703540,	-0.689847194276801750,	-0.689810995664282610,	
+-0.689774795327236070,	-0.689738593265752490,	-0.689702389479922460,	-0.689666183969836480,	-0.689629976735584900,	-0.689593767777257890,	-0.689557557094947040,	-0.689521344688742270,	
+-0.689485130558734170,	-0.689448914705013240,	-0.689412697127670060,	-0.689376477826795010,	-0.689340256802478900,	-0.689304034054812110,	-0.689267809583884670,	-0.689231583389788180,	
+-0.689195355472612900,	-0.689159125832449090,	-0.689122894469387570,	-0.689086661383518710,	-0.689050426574932650,	-0.689014190043721110,	-0.688977951789974120,	-0.688941711813782280,	
+-0.688905470115236060,	-0.688869226694426300,	-0.688832981551443350,	-0.688796734686378030,	-0.688760486099320830,	-0.688724235790361790,	-0.688687983759592840,	-0.688651730007103890,	
+-0.688615474532985660,	-0.688579217337328630,	-0.688542958420223620,	-0.688506697781761320,	-0.688470435422031460,	-0.688434171341126280,	-0.688397905539135600,	-0.688361638016150130,	
+-0.688325368772260690,	-0.688289097807557760,	-0.688252825122132040,	-0.688216550716074350,	-0.688180274589474510,	-0.688143996742424770,	-0.688107717175014950,	-0.688071435887335880,	
+-0.688035152879478140,	-0.687998868151532660,	-0.687962581703589930,	-0.687926293535740090,	-0.687890003648075180,	-0.687853712040685240,	-0.687817418713660980,	-0.687781123667093320,	
+-0.687744826901072750,	-0.687708528415690080,	-0.687672228211036130,	-0.687635926287200940,	-0.687599622644276650,	-0.687563317282353200,	-0.687527010201521630,	-0.687490701401872410,	
+-0.687454390883496470,	-0.687418078646484520,	-0.687381764690926710,	-0.687345449016915190,	-0.687309131624539990,	-0.687272812513892050,	-0.687236491685061960,	-0.687200169138140750,	
+-0.687163844873219020,	-0.687127518890387810,	-0.687091191189737720,	-0.687054861771358990,	-0.687018530635343680,	-0.686982197781782160,	-0.686945863210765120,	-0.686909526922383500,	
+-0.686873188916727880,	-0.686836849193888770,	-0.686800507753958180,	-0.686764164597026380,	-0.686727819723184090,	-0.686691473132522210,	-0.686655124825131690,	-0.686618774801103340,	
+-0.686582423060528080,	-0.686546069603496730,	-0.686509714430099560,	-0.686473357540428820,	-0.686436998934574660,	-0.686400638612628010,	-0.686364276574679690,	-0.686327912820820730,	
+-0.686291547351141950,	-0.686255180165733720,	-0.686218811264688200,	-0.686182440648095640,	-0.686146068316046960,	-0.686109694268633000,	-0.686073318505944880,	-0.686036941028073550,	
+-0.686000561835109820,	-0.685964180927144060,	-0.685927798304268420,	-0.685891413966573270,	-0.685855027914149650,	-0.685818640147088490,	-0.685782250665480710,	-0.685745859469417240,	
+-0.685709466558988570,	-0.685673071934286840,	-0.685636675595402420,	-0.685600277542426250,	-0.685563877775449470,	-0.685527476294562900,	-0.685491073099857800,	-0.685454668191424870,	
+-0.685418261569354700,	-0.685381853233739570,	-0.685345443184669720,	-0.685309031422236310,	-0.685272617946530270,	-0.685236202757642740,	-0.685199785855664660,	-0.685163367240686490,	
+-0.685126946912800520,	-0.685090524872097210,	-0.685054101118667600,	-0.685017675652602740,	-0.684981248473993660,	-0.684944819582931410,	-0.684908388979507230,	-0.684871956663812060,	
+-0.684835522635936280,	-0.684799086895972350,	-0.684762649444010770,	-0.684726210280142470,	-0.684689769404458690,	-0.684653326817050490,	-0.684616882518008340,	-0.684580436507424730,	
+-0.684543988785389910,	-0.684507539351995040,	-0.684471088207331490,	-0.684434635351490070,	-0.684398180784562160,	-0.684361724506638790,	-0.684325266517811110,	-0.684288806818169610,	
+-0.684252345407806770,	-0.684215882286812960,	-0.684179417455279550,	-0.684142950913297580,	-0.684106482660958190,	-0.684070012698352550,	-0.684033541025571350,	-0.683997067642706850,	
+-0.683960592549849760,	-0.683924115747091220,	-0.683887637234522280,	-0.683851157012234310,	-0.683814675080318460,	-0.683778191438865870,	-0.683741706087967140,	-0.683705219027714860,	
+-0.683668730258199410,	-0.683632239779512260,	-0.683595747591744460,	-0.683559253694987380,	-0.683522758089332050,	-0.683486260774869180,	-0.683449761751691360,	-0.683413261019889200,	
+-0.683376758579553820,	-0.683340254430776510,	-0.683303748573648620,	-0.683267241008261310,	-0.683230731734705830,	-0.683194220753073010,	-0.683157708063455220,	-0.683121193665943150,	
+-0.683084677560628180,	-0.683048159747601470,	-0.683011640226954380,	-0.682975118998778160,	-0.682938596063163430,	-0.682902071420202980,	-0.682865545069987200,	-0.682829017012607680,	
+-0.682792487248155670,	-0.682755955776722320,	-0.682719422598399130,	-0.682682887713277340,	-0.682646351121448450,	-0.682609812823002930,	-0.682573272818033480,	-0.682536731106630930,	
+-0.682500187688886540,	-0.682463642564891670,	-0.682427095734737700,	-0.682390547198515440,	-0.682353996956317270,	-0.682317445008234210,	-0.682280891354357540,	-0.682244335994778630,	
+-0.682207778929588950,	-0.682171220158879770,	-0.682134659682742450,	-0.682098097501268600,	-0.682061533614548800,	-0.682024968022675870,	-0.681988400725740520,	-0.681951831723834110,	
+-0.681915261017048140,	-0.681878688605473960,	-0.681842114489203180,	-0.681805538668326380,	-0.681768961142936390,	-0.681732381913124020,	-0.681695800978980750,	-0.681659218340597840,	
+-0.681622633998067000,	-0.681586047951479590,	-0.681549460200926990,	-0.681512870746500130,	-0.681476279588291710,	-0.681439686726392550,	-0.681403092160894230,	-0.681366495891888140,	
+-0.681329897919465970,	-0.681293298243718870,	-0.681256696864738000,	-0.681220093782615940,	-0.681183488997443630,	-0.681146882509312660,	-0.681110274318314500,	-0.681073664424540650,	
+-0.681037052828082580,	-0.681000439529031890,	-0.680963824527479500,	-0.680927207823518230,	-0.680890589417238790,	-0.680853969308732990,	-0.680817347498092310,	-0.680780723985408230,	
+-0.680744098770772240,	-0.680707471854275490,	-0.680670843236010570,	-0.680634212916068740,	-0.680597580894541140,	-0.680560947171519710,	-0.680524311747095930,	-0.680487674621361390,	
+-0.680451035794407580,	-0.680414395266326300,	-0.680377753037208270,	-0.680341109107146510,	-0.680304463476232080,	-0.680267816144556340,	-0.680231167112211210,	-0.680194516379288070,	
+-0.680157863945878070,	-0.680121209812073910,	-0.680084553977966850,	-0.680047896443648380,	-0.680011237209210200,	-0.679974576274743890,	-0.679937913640341170,	-0.679901249306093640,	
+-0.679864583272092980,	-0.679827915538430140,	-0.679791246105198250,	-0.679754574972488260,	-0.679717902140391850,	-0.679681227609000630,	-0.679644551378406400,	-0.679607873448700110,	
+-0.679571193819974660,	-0.679534512492321440,	-0.679497829465831820,	-0.679461144740597600,	-0.679424458316710610,	-0.679387770194262440,	-0.679351080373344800,	-0.679314388854049490,	
+-0.679277695636467560,	-0.679241000720692050,	-0.679204304106813980,	-0.679167605794925300,	-0.679130905785117480,	-0.679094204077482440,	-0.679057500672111790,	-0.679020795569096890,	
+-0.678984088768530560,	-0.678947380270504050,	-0.678910670075109080,	-0.678873958182437450,	-0.678837244592580880,	-0.678800529305631170,	-0.678763812321680260,	-0.678727093640819070,	
+-0.678690373263140740,	-0.678653651188736660,	-0.678616927417698300,	-0.678580201950117700,	-0.678543474786086560,	-0.678506745925696710,	-0.678470015369039390,	-0.678433283116207650,	
+-0.678396549167292750,	-0.678359813522386500,	-0.678323076181580610,	-0.678286337144967110,	-0.678249596412637710,	-0.678212853984684340,	-0.678176109861198920,	-0.678139364042272490,	
+-0.678102616527998300,	-0.678065867318467630,	-0.678029116413772170,	-0.677992363814004070,	-0.677955609519254930,	-0.677918853529616230,	-0.677882095845181000,	-0.677845336466040500,	
+-0.677808575392286670,	-0.677771812624011430,	-0.677735048161306590,	-0.677698282004264190,	-0.677661514152976040,	-0.677624744607534190,	-0.677587973368029780,	-0.677551200434556080,	
+-0.677514425807204330,	-0.677477649486066590,	-0.677440871471234770,	-0.677404091762800700,	-0.677367310360855730,	-0.677330527265493140,	-0.677293742476804290,	-0.677256955994881120,	
+-0.677220167819815420,	-0.677183377951699360,	-0.677146586390624860,	-0.677109793136683960,	-0.677072998189968470,	-0.677036201550569870,	-0.676999403218581430,	-0.676962603194094510,	
+-0.676925801477201050,	-0.676888998067993080,	-0.676852192966562630,	-0.676815386173001740,	-0.676778577687401680,	-0.676741767509855820,	-0.676704955640455630,	-0.676668142079292930,	
+-0.676631326826459880,	-0.676594509882048610,	-0.676557691246150950,	-0.676520870918859150,	-0.676484048900264480,	-0.676447225190460410,	-0.676410399789538210,	-0.676373572697590020,	
+-0.676336743914707880,	-0.676299913440983950,	-0.676263081276510250,	-0.676226247421378050,	-0.676189411875681050,	-0.676152574639510400,	-0.676115735712958350,	-0.676078895096116960,	
+-0.676042052789078360,	-0.676005208791934600,	-0.675968363104777810,	-0.675931515727700160,	-0.675894666660793010,	-0.675857815904149840,	-0.675820963457862130,	-0.675784109322022040,	
+-0.675747253496721710,	-0.675710395982053290,	-0.675673536778108150,	-0.675636675884979780,	-0.675599813302759760,	-0.675562949031540240,	-0.675526083071413370,	-0.675489215422471200,	
+-0.675452346084806090,	-0.675415475058509960,	-0.675378602343675300,	-0.675341727940393380,	-0.675304851848757880,	-0.675267974068860190,	-0.675231094600792560,	-0.675194213444647250,	
+-0.675157330600516410,	-0.675120446068491530,	-0.675083559848666190,	-0.675046671941131990,	-0.675009782345981080,	-0.674972891063305820,	-0.674935998093198150,	-0.674899103435750660,	
+-0.674862207091055270,	-0.674825309059204460,	-0.674788409340289720,	-0.674751507934404530,	-0.674714604841640590,	-0.674677700062090270,	-0.674640793595845500,	-0.674603885442998870,	
+-0.674566975603642540,	-0.674530064077868090,	-0.674493150865769110,	-0.674456235967437310,	-0.674419319382964840,	-0.674382401112444070,	-0.674345481155967370,	-0.674308559513626890,	
+-0.674271636185515110,	-0.674234711171723510,	-0.674197784472345800,	-0.674160856087473670,	-0.674123926017199280,	-0.674086994261615220,	-0.674050060820813530,	-0.674013125694886810,	
+-0.673976188883926630,	-0.673939250388026600,	-0.673902310207278420,	-0.673865368341774460,	-0.673828424791607090,	-0.673791479556868690,	-0.673754532637651500,	-0.673717584034048130,	
+-0.673680633746150730,	-0.673643681774050980,	-0.673606728117842830,	-0.673569772777617870,	-0.673532815753468350,	-0.673495857045486870,	-0.673458896653765680,	-0.673421934578396720,	
+-0.673384970819473460,	-0.673348005377087830,	-0.673311038251332210,	-0.673274069442298950,	-0.673237098950080550,	-0.673200126774769370,	-0.673163152916457900,	-0.673126177375238500,	
+-0.673089200151202990,	-0.673052221244445190,	-0.673015240655056910,	-0.672978258383130410,	-0.672941274428758280,	-0.672904288792033010,	-0.672867301473046410,	-0.672830312471892070,	
+-0.672793321788662020,	-0.672756329423448650,	-0.672719335376344540,	-0.672682339647441950,	-0.672645342236833590,	-0.672608343144611930,	-0.672571342370869350,	-0.672534339915697780,	
+-0.672497335779191020,	-0.672460329961440890,	-0.672423322462539890,	-0.672386313282580690,	-0.672349302421655580,	-0.672312289879857250,	-0.672275275657277630,	-0.672238259754010410,	
+-0.672201242170147540,	-0.672164222905781590,	-0.672127201961005170,	-0.672090179335910640,	-0.672053155030590600,	-0.672016129045137740,	-0.671979101379643890,	-0.671942072034202980,	
+-0.671905041008906910,	-0.671868008303848190,	-0.671830973919119500,	-0.671793937854813340,	-0.671756900111022290,	-0.671719860687838400,	-0.671682819585355470,	-0.671645776803665550,	
+-0.671608732342861110,	-0.671571686203034870,	-0.671534638384279400,	-0.671497588886687420,	-0.671460537710351410,	-0.671423484855363300,	-0.671386430321817330,	-0.671349374109805110,	
+-0.671312316219419560,	-0.671275256650753160,	-0.671238195403898620,	-0.671201132478948640,	-0.671164067875995140,	-0.671127001595132170,	-0.671089933636451640,	-0.671052864000046380,	
+-0.671015792686008860,	-0.670978719694431900,	-0.670941645025408100,	-0.670904568679030140,	-0.670867490655390860,	-0.670830410954582180,	-0.670793329576698130,	-0.670756246521830750,	
+-0.670719161790072740,	-0.670682075381516810,	-0.670644987296255660,	-0.670607897534381440,	-0.670570806095988180,	-0.670533712981167820,	-0.670496618190013270,	-0.670459521722617140,	
+-0.670422423579072110,	-0.670385323759471130,	-0.670348222263906780,	-0.670311119092471990,	-0.670274014245258560,	-0.670236907722360890,	-0.670199799523870880,	-0.670162689649881460,	
+-0.670125578100485230,	-0.670088464875775110,	-0.670051349975843810,	-0.670014233400783480,	-0.669977115150688140,	-0.669939995225650180,	-0.669902873625762060,	-0.669865750351116840,	
+-0.669828625401807320,	-0.669791498777926100,	-0.669754370479566210,	-0.669717240506819690,	-0.669680108859780800,	-0.669642975538541570,	-0.669605840543194940,	-0.669568703873833710,	
+-0.669531565530550710,	-0.669494425513438740,	-0.669457283822590070,	-0.669420140458098940,	-0.669382995420057410,	-0.669345848708558290,	-0.669308700323694720,	-0.669271550265559290,	
+-0.669234398534245050,	-0.669197245129844690,	-0.669160090052450700,	-0.669122933302157110,	-0.669085774879056070,	-0.669048614783240740,	-0.669011453014803800,	-0.668974289573838200,	
+-0.668937124460436960,	-0.668899957674692240,	-0.668862789216698280,	-0.668825619086547360,	-0.668788447284332290,	-0.668751273810146210,	-0.668714098664081820,	-0.668676921846232290,	
+-0.668639743356690520,	-0.668602563195549230,	-0.668565381362901000,	-0.668528197858839990,	-0.668491012683458340,	-0.668453825836849310,	-0.668416637319105610,	-0.668379447130320380,	
+-0.668342255270585770,	-0.668305061739996380,	-0.668267866538644120,	-0.668230669666622370,	-0.668193471124023830,	-0.668156270910941650,	-0.668119069027468760,	-0.668081865473698300,	
+-0.668044660249723090,	-0.668007453355635490,	-0.667970244791530110,	-0.667933034557498970,	-0.667895822653635340,	-0.667858609080032140,	-0.667821393836782300,	-0.667784176923979070,	
+-0.667746958341714820,	-0.667709738090083720,	-0.667672516169178330,	-0.667635292579091600,	-0.667598067319916670,	-0.667560840391746570,	-0.667523611794674340,	-0.667486381528793030,	
+-0.667449149594195210,	-0.667411915990975160,	-0.667374680719225340,	-0.667337443779038700,	-0.667300205170508590,	-0.667262964893727940,	-0.667225722948789790,	-0.667188479335786730,	
+-0.667151234054813140,	-0.667113987105961480,	-0.667076738489324810,	-0.667039488204996370,	-0.667002236253069090,	-0.666964982633636350,	-0.666927727346791070,	-0.666890470392625830,	
+-0.666853211771235130,	-0.666815951482711330,	-0.666778689527147690,	-0.666741425904637250,	-0.666704160615273270,	-0.666666893659149000,	-0.666629625036356700,	-0.666592354746991080,	
+-0.666555082791144500,	-0.666517809168910350,	-0.666480533880381530,	-0.666443256925651430,	-0.666405978304813180,	-0.666368698017960060,	-0.666331416065185090,	-0.666294132446580980,	
+-0.666256847162242210,	-0.666219560212261250,	-0.666182271596731490,	-0.666144981315745950,	-0.666107689369398010,	-0.666070395757780150,	-0.666033100480986960,	-0.665995803539111140,	
+-0.665958504932245620,	-0.665921204660483990,	-0.665883902723919290,	-0.665846599122644880,	-0.665809293856753910,	-0.665771986926339760,	-0.665734678331494910,	-0.665697368072314060,	
+-0.665660056148889790,	-0.665622742561315480,	-0.665585427309684170,	-0.665548110394089340,	-0.665510791814624250,	-0.665473471571381480,	-0.665436149664455740,	-0.665398826093939630,	
+-0.665361500859926400,	-0.665324173962509420,	-0.665286845401782070,	-0.665249515177837590,	-0.665212183290769250,	-0.665174849740669870,	-0.665137514527634030,	-0.665100177651754330,	
+-0.665062839113124250,	-0.665025498911837040,	-0.664988157047986080,	-0.664950813521664740,	-0.664913468332965720,	-0.664876121481983720,	-0.664838772968811330,	-0.664801422793542150,	
+-0.664764070956269220,	-0.664726717457086220,	-0.664689362296086440,	-0.664652005473363230,	-0.664614646989009410,	-0.664577286843119560,	-0.664539925035786520,	-0.664502561567103630,	
+-0.664465196437164400,	-0.664427829646062060,	-0.664390461193890220,	-0.664353091080741590,	-0.664315719306710850,	-0.664278345871890830,	-0.664240970776375010,	-0.664203594020256750,	
+-0.664166215603629430,	-0.664128835526586640,	-0.664091453789221630,	-0.664054070391628120,	-0.664016685333898790,	-0.663979298616128370,	-0.663941910238409650,	-0.663904520200836230,	
+-0.663867128503501380,	-0.663829735146498790,	-0.663792340129921280,	-0.663754943453863430,	-0.663717545118418410,	-0.663680145123679340,	-0.663642743469740060,	-0.663605340156693810,	
+-0.663567935184634310,	-0.663530528553654910,	-0.663493120263849210,	-0.663455710315309920,	-0.663418298708132180,	-0.663380885442408590,	-0.663343470518232840,	-0.663306053935698410,	
+-0.663268635694898910,	-0.663231215795927700,	-0.663193794238877920,	-0.663156371023844170,	-0.663118946150919600,	-0.663081519620197680,	-0.663044091431771900,	-0.663006661585735850,	
+-0.662969230082183230,	-0.662931796921207520,	-0.662894362102901650,	-0.662856925627360540,	-0.662819487494677120,	-0.662782047704944980,	-0.662744606258257600,	-0.662707163154708900,	
+-0.662669718394392150,	-0.662632271977400490,	-0.662594823903828840,	-0.662557374173770140,	-0.662519922787317970,	-0.662482469744565930,	-0.662445015045607820,	-0.662407558690537130,	
+-0.662370100679447570,	-0.662332641012432060,	-0.662295179689585620,	-0.662257716711001310,	-0.662220252076772600,	-0.662182785786993300,	-0.662145317841757010,	-0.662107848241157430,	
+-0.662070376985287590,	-0.662032904074242530,	-0.661995429508115070,	-0.661957953286999130,	-0.661920475410988310,	-0.661882995880176290,	-0.661845514694656800,	-0.661808031854523530,	
+-0.661770547359870060,	-0.661733061210789670,	-0.661695573407377280,	-0.661658083949725920,	-0.661620592837929400,	-0.661583100072081320,	-0.661545605652275600,	-0.661508109578605170,	
+-0.661470611851165070,	-0.661433112470048550,	-0.661395611435349080,	-0.661358108747160720,	-0.661320604405577050,	-0.661283098410691880,	-0.661245590762598920,	-0.661208081461391980,	
+-0.661170570507164210,	-0.661133057900010760,	-0.661095543640024540,	-0.661058027727299490,	-0.661020510161929420,	-0.660982990944008030,	-0.660945470073629140,	-0.660907947550885890,	
+-0.660870423375873540,	-0.660832897548685020,	-0.660795370069414360,	-0.660757840938155260,	-0.660720310155001430,	-0.660682777720047020,	-0.660645243633385500,	-0.660607707895110360,	
+-0.660570170505316520,	-0.660532631464097240,	-0.660495090771546330,	-0.660457548427757830,	-0.660420004432825450,	-0.660382458786842990,	-0.660344911489903710,	-0.660307362542102870,	
+-0.660269811943533510,	-0.660232259694289780,	-0.660194705794465260,	-0.660157150244154110,	-0.660119593043450030,	-0.660082034192446930,	-0.660044473691238090,	-0.660006911539918750,	
+-0.659969347738582180,	-0.659931782287322190,	-0.659894215186232700,	-0.659856646435407760,	-0.659819076034941170,	-0.659781503984926190,	-0.659743930285458080,	-0.659706354936630210,	
+-0.659668777938536510,	-0.659631199291270790,	-0.659593618994927080,	-0.659556037049599310,	-0.659518453455381510,	-0.659480868212367510,	-0.659443281320650660,	-0.659405692780326350,	
+-0.659368102591487810,	-0.659330510754228990,	-0.659292917268643810,	-0.659255322134826400,	-0.659217725352870040,	-0.659180126922870090,	-0.659142526844919700,	-0.659104925119113010,	
+-0.659067321745544050,	-0.659029716724306770,	-0.658992110055495180,	-0.658954501739203340,	-0.658916891775525260,	-0.658879280164554330,	-0.658841666906385790,	-0.658804052001113140,	
+-0.658766435448830290,	-0.658728817249631390,	-0.658691197403610370,	-0.658653575910861490,	-0.658615952771477890,	-0.658578327985555160,	-0.658540701553186560,	-0.658503073474466240,	
+-0.658465443749488230,	-0.658427812378346580,	-0.658390179361135420,	-0.658352544697948790,	-0.658314908388880180,	-0.658277270434024950,	-0.658239630833476470,	-0.658201989587329010,	
+-0.658164346695676580,	-0.658126702158613240,	-0.658089055976233130,	-0.658051408148629720,	-0.658013758675898510,	-0.657976107558132850,	-0.657938454795426900,	-0.657900800387874910,	
+-0.657863144335570800,	-0.657825486638608960,	-0.657787827297083290,	-0.657750166311087400,	-0.657712503680716880,	-0.657674839406064970,	-0.657637173487225950,	-0.657599505924294060,	
+-0.657561836717363460,	-0.657524165866528180,	-0.657486493371881810,	-0.657448819233519940,	-0.657411143451535950,	-0.657373466026024200,	-0.657335786957078730,	-0.657298106244793790,	
+-0.657260423889263530,	-0.657222739890582330,	-0.657185054248844210,	-0.657147366964142780,	-0.657109678036573610,	-0.657071987466230190,	-0.657034295253206890,	-0.656996601397597860,	
+-0.656958905899497240,	-0.656921208758998730,	-0.656883509976197820,	-0.656845809551188210,	-0.656808107484064040,	-0.656770403774919690,	-0.656732698423849180,	-0.656694991430947010,	
+-0.656657282796307420,	-0.656619572520024560,	-0.656581860602192040,	-0.656544147042905650,	-0.656506431842258760,	-0.656468715000345870,	-0.656430996517261220,	-0.656393276393099080,	
+-0.656355554627953030,	-0.656317831221918780,	-0.656280106175089920,	-0.656242379487560920,	-0.656204651159425830,	-0.656166921190779130,	-0.656129189581715180,	-0.656091456332328240,	
+-0.656053721442712680,	-0.656015984912962090,	-0.655978246743172290,	-0.655940506933436750,	-0.655902765483850070,	-0.655865022394506390,	-0.655827277665500200,	-0.655789531296925850,	
+-0.655751783288876950,	-0.655714033641449310,	-0.655676282354736520,	-0.655638529428833050,	-0.655600774863833280,	-0.655563018659831460,	-0.655525260816922200,	-0.655487501335199840,	
+-0.655449740214757990,	-0.655411977455692460,	-0.655374213058096950,	-0.655336447022065950,	-0.655298679347693810,	-0.655260910035075030,	-0.655223139084303850,	-0.655185366495474320,	
+-0.655147592268681910,	-0.655109816404020550,	-0.655072038901584720,	-0.655034259761468670,	-0.654996478983767120,	-0.654958696568574310,	-0.654920912515984720,	-0.654883126826092840,	
+-0.654845339498992480,	-0.654807550534779460,	-0.654769759933547580,	-0.654731967695391330,	-0.654694173820405180,	-0.654656378308683510,	-0.654618581160320230,	-0.654580782375411170,	
+-0.654542981954050250,	-0.654505179896331720,	-0.654467376202350400,	-0.654429570872200550,	-0.654391763905976750,	-0.654353955303773600,	-0.654316145065685580,	-0.654278333191806390,	
+-0.654240519682232180,	-0.654202704537056650,	-0.654164887756374270,	-0.654127069340279750,	-0.654089249288867580,	-0.654051427602231560,	-0.654013604280467620,	-0.653975779323669790,	
+-0.653937952731932450,	-0.653900124505350180,	-0.653862294644017570,	-0.653824463148029330,	-0.653786630017479830,	-0.653748795252463880,	-0.653710958853075170,	-0.653673120819409760,	
+-0.653635281151561550,	-0.653597439849625150,	-0.653559596913695140,	-0.653521752343866110,	-0.653483906140232770,	-0.653446058302888930,	-0.653408208831930630,	-0.653370357727451890,	
+-0.653332504989547090,	-0.653294650618311160,	-0.653256794613838570,	-0.653218936976224020,	-0.653181077705562110,	-0.653143216801946870,	-0.653105354265474110,	-0.653067490096238100,	
+-0.653029624294333310,	-0.652991756859854560,	-0.652953887792896310,	-0.652916017093553290,	-0.652878144761919630,	-0.652840270798091370,	-0.652802395202162320,	-0.652764517974227300,	
+-0.652726639114381000,	-0.652688758622718130,	-0.652650876499333290,	-0.652612992744321390,	-0.652575107357776910,	-0.652537220339794000,	-0.652499331690468700,	-0.652461441409895040,	
+-0.652423549498167830,	-0.652385655955381780,	-0.652347760781631480,	-0.652309863977011180,	-0.652271965541616930,	-0.652234065475542750,	-0.652196163778883340,	-0.652158260451733530,	
+-0.652120355494188120,	-0.652082448906341820,	-0.652044540688289320,	-0.652006630840125560,	-0.651968719361944560,	-0.651930806253842370,	-0.651892891515913230,	-0.651854975148251750,	
+-0.651817057150952950,	-0.651779137524111430,	-0.651741216267821440,	-0.651703293382179030,	-0.651665368867278440,	-0.651627442723214380,	-0.651589514950081770,	-0.651551585547975320,	
+-0.651513654516989950,	-0.651475721857220470,	-0.651437787568761580,	-0.651399851651707660,	-0.651361914106154740,	-0.651323974932197070,	-0.651286034129929360,	-0.651248091699446640,	
+-0.651210147640843730,	-0.651172201954215320,	-0.651134254639655910,	-0.651096305697261400,	-0.651058355127126180,	-0.651020402929345040,	-0.650982449104012930,	-0.650944493651224640,	
+-0.650906536571075220,	-0.650868577863659370,	-0.650830617529071450,	-0.650792655567407620,	-0.650754691978762120,	-0.650716726763230000,	-0.650678759920905960,	-0.650640791451885030,	
+-0.650602821356262240,	-0.650564849634131640,	-0.650526876285589580,	-0.650488901310730340,	-0.650450924709648830,	-0.650412946482439970,	-0.650374966629198800,	-0.650336985150020250,	
+-0.650299002044999240,	-0.650261017314230030,	-0.650223030957808870,	-0.650185042975830240,	-0.650147053368388850,	-0.650109062135579950,	-0.650071069277498470,	-0.650033074794239220,	
+-0.649995078685896570,	-0.649957080952566990,	-0.649919081594344640,	-0.649881080611324550,	-0.649843078003601860,	-0.649805073771271390,	-0.649767067914428290,	-0.649729060433167470,	
+-0.649691051327584090,	-0.649653040597772400,	-0.649615028243828660,	-0.649577014265847460,	-0.649538998663923730,	-0.649500981438152380,	-0.649462962588628680,	-0.649424942115446880,	
+-0.649386920018703460,	-0.649348896298492680,	-0.649310870954909580,	-0.649272843988049410,	-0.649234815398007200,	-0.649196785184877780,	-0.649158753348756500,	-0.649120719889738300,	
+-0.649082684807917640,	-0.649044648103390910,	-0.649006609776252570,	-0.648968569826597790,	-0.648930528254521470,	-0.648892485060118980,	-0.648854440243485150,	-0.648816393804714560,	
+-0.648778345743903690,	-0.648740296061146910,	-0.648702244756539370,	-0.648664191830176320,	-0.648626137282152790,	-0.648588081112563830,	-0.648550023321504690,	-0.648511963909069840,	
+-0.648473902875355780,	-0.648435840220456860,	-0.648397775944468460,	-0.648359710047485600,	-0.648321642529603450,	-0.648283573390917130,	-0.648245502631521250,	-0.648207430251512280,	
+-0.648169356250984710,	-0.648131280630033780,	-0.648093203388754760,	-0.648055124527242570,	-0.648017044045592570,	-0.647978961943900030,	-0.647940878222259430,	-0.647902792880767240,	
+-0.647864705919518170,	-0.647826617338607250,	-0.647788527138129840,	-0.647750435318180990,	-0.647712341878856180,	-0.647674246820249770,	-0.647636150142458460,	-0.647598051845576840,	
+-0.647559951929699950,	-0.647521850394923270,	-0.647483747241341940,	-0.647445642469051230,	-0.647407536078146490,	-0.647369428068722770,	-0.647331318440874880,	-0.647293207194699400,	
+-0.647255094330290830,	-0.647216979847744620,	-0.647178863747155940,	-0.647140746028620040,	-0.647102626692231620,	-0.647064505738087270,	-0.647026383166281800,	-0.646988258976910260,	
+-0.646950133170068110,	-0.646912005745850620,	-0.646873876704353030,	-0.646835746045670850,	-0.646797613769899300,	-0.646759479877133000,	-0.646721344367468640,	-0.646683207241001030,	
+-0.646645068497825330,	-0.646606928138037000,	-0.646568786161731300,	-0.646530642569003610,	-0.646492497359948740,	-0.646454350534663270,	-0.646416202093241910,	-0.646378052035780030,	
+-0.646339900362372990,	-0.646301747073116270,	-0.646263592168105140,	-0.646225435647435060,	-0.646187277511200640,	-0.646149117759498790,	-0.646110956392424110,	-0.646072793410072070,	
+-0.646034628812538040,	-0.645996462599917390,	-0.645958294772305600,	-0.645920125329797370,	-0.645881954272489620,	-0.645843781600476840,	-0.645805607313854720,	-0.645767431412718530,	
+-0.645729253897163740,	-0.645691074767285930,	-0.645652894023180270,	-0.645614711664941780,	-0.645576527692667160,	-0.645538342106451330,	-0.645500154906389570,	-0.645461966092577330,	
+-0.645423775665110330,	-0.645385583624083830,	-0.645347389969592620,	-0.645309194701733650,	-0.645270997820601710,	-0.645232799326292290,	-0.645194599218900880,	-0.645156397498523050,	
+-0.645118194165254070,	-0.645079989219189630,	-0.645041782660425330,	-0.645003574489055760,	-0.644965364705178070,	-0.644927153308886840,	-0.644888940300277770,	-0.644850725679446460,	
+-0.644812509446488160,	-0.644774291601498020,	-0.644736072144572740,	-0.644697851075807350,	-0.644659628395297330,	-0.644621404103138280,	-0.644583178199425680,	-0.644544950684255100,	
+-0.644506721557722150,	-0.644468490819922410,	-0.644430258470950810,	-0.644392024510904160,	-0.644353788939877490,	-0.644315551757966400,	-0.644277312965266360,	-0.644239072561873070,	
+-0.644200830547882020,	-0.644162586923388350,	-0.644124341688488760,	-0.644086094843278390,	-0.644047846387852730,	-0.644009596322307590,	-0.643971344646738330,	-0.643933091361240770,	
+-0.643894836465910390,	-0.643856579960842330,	-0.643818321846133520,	-0.643780062121878880,	-0.643741800788174000,	-0.643703537845114690,	-0.643665273292796550,	-0.643627007131315270,	
+-0.643588739360765660,	-0.643550469981244990,	-0.643512198992848060,	-0.643473926395670690,	-0.643435652189808470,	-0.643397376375357210,	-0.643359098952412390,	-0.643320819921069930,	
+-0.643282539281424650,	-0.643244257033573800,	-0.643205973177612190,	-0.643167687713635750,	-0.643129400641740070,	-0.643091111962020840,	-0.643052821674573780,	-0.643014529779494140,	
+-0.642976236276878720,	-0.642937941166822790,	-0.642899644449421940,	-0.642861346124772080,	-0.642823046192968820,	-0.642784744654107840,	-0.642746441508285080,	-0.642708136755596240,	
+-0.642669830396136450,	-0.642631522430002660,	-0.642593212857289990,	-0.642554901678094370,	-0.642516588892511510,	-0.642478274500637210,	-0.642439958502566520,	-0.642401640898396580,	
+-0.642363321688222520,	-0.642325000872140170,	-0.642286678450245450,	-0.642248354422633840,	-0.642210028789401480,	-0.642171701550643960,	-0.642133372706457210,	-0.642095042256936370,	
+-0.642056710202178580,	-0.642018376542279110,	-0.641980041277333550,	-0.641941704407437920,	-0.641903365932688150,	-0.641865025853179840,	-0.641826684169008340,	-0.641788340880270810,	
+-0.641749995987062390,	-0.641711649489479010,	-0.641673301387616470,	-0.641634951681570700,	-0.641596600371437620,	-0.641558247457312940,	-0.641519892939292010,	-0.641481536817472000,	
+-0.641443179091948150,	-0.641404819762816380,	-0.641366458830172630,	-0.641328096294112580,	-0.641289732154732390,	-0.641251366412127210,	-0.641212999066394170,	-0.641174630117628760,	
+-0.641136259565926680,	-0.641097887411384070,	-0.641059513654096640,	-0.641021138294160410,	-0.640982761331671420,	-0.640944382766724830,	-0.640906002599417880,	-0.640867620829846050,	
+-0.640829237458105050,	-0.640790852484291020,	-0.640752465908499880,	-0.640714077730827560,	-0.640675687951369310,	-0.640637296570222610,	-0.640598903587482620,	-0.640560509003245350,	
+-0.640522112817606850,	-0.640483715030663040,	-0.640445315642509950,	-0.640406914653243510,	-0.640368512062959860,	-0.640330107871754260,	-0.640291702079724080,	-0.640253294686964570,	
+-0.640214885693571880,	-0.640176475099641930,	-0.640138062905270870,	-0.640099649110553950,	-0.640061233715588540,	-0.640022816720470010,	-0.639984398125294510,	-0.639945977930157950,	
+-0.639907556135156600,	-0.639869132740386260,	-0.639830707745943080,	-0.639792281151923100,	-0.639753852958421800,	-0.639715423165536530,	-0.639676991773362680,	-0.639638558781996380,	
+-0.639600124191533670,	-0.639561688002070580,	-0.639523250213703380,	-0.639484810826527310,	-0.639446369840639960,	-0.639407927256136600,	-0.639369483073113480,	-0.639331037291666630,	
+-0.639292589911892200,	-0.639254140933886330,	-0.639215690357745060,	-0.639177238183563870,	-0.639138784411440340,	-0.639100329041469740,	-0.639061872073748430,	-0.639023413508372330,	
+-0.638984953345437810,	-0.638946491585040800,	-0.638908028227276990,	-0.638869563272243650,	-0.638831096720036570,	-0.638792628570751590,	-0.638754158824485160,	-0.638715687481333230,	
+-0.638677214541392150,	-0.638638740004758070,	-0.638600263871526350,	-0.638561786141794710,	-0.638523306815658610,	-0.638484825893214200,	-0.638446343374557860,	-0.638407859259785490,	
+-0.638369373548993590,	-0.638330886242277520,	-0.638292397339734970,	-0.638253906841461330,	-0.638215414747552940,	-0.638176921058106080,	-0.638138425773216890,	-0.638099928892981620,	
+-0.638061430417496630,	-0.638022930346857970,	-0.637984428681161340,	-0.637945925420504210,	-0.637907420564982400,	-0.637868914114691930,	-0.637830406069729290,	-0.637791896430190520,	
+-0.637753385196171420,	-0.637714872367769470,	-0.637676357945080370,	-0.637637841928200390,	-0.637599324317225770,	-0.637560805112252880,	-0.637522284313377980,	-0.637483761920697330,	
+-0.637445237934307300,	-0.637406712354303570,	-0.637368185180783640,	-0.637329656413843200,	-0.637291126053578740,	-0.637252594100086390,	-0.637214060553462640,	-0.637175525413803620,	
+-0.637136988681205160,	-0.637098450355764960,	-0.637059910437578590,	-0.637021368926742440,	-0.636982825823352860,	-0.636944281127506230,	-0.636905734839298910,	-0.636867186958827160,	
+-0.636828637486186900,	-0.636790086421475610,	-0.636751533764789210,	-0.636712979516223960,	-0.636674423675876230,	-0.636635866243842390,	-0.636597307220218900,	-0.636558746605101480,	
+-0.636520184398587930,	-0.636481620600773850,	-0.636443055211755810,	-0.636404488231630090,	-0.636365919660493050,	-0.636327349498441390,	-0.636288777745571240,	-0.636250204401978440,	
+-0.636211629467760890,	-0.636173052943014180,	-0.636134474827834920,	-0.636095895122319450,	-0.636057313826564160,	-0.636018730940665740,	-0.635980146464719680,	-0.635941560398823990,	
+-0.635902972743074390,	-0.635864383497567350,	-0.635825792662399360,	-0.635787200237666880,	-0.635748606223466520,	-0.635710010619894520,	-0.635671413427047470,	-0.635632814645021300,	
+-0.635594214273913720,	-0.635555612313820630,	-0.635517008764838410,	-0.635478403627063760,	-0.635439796900593050,	-0.635401188585522190,	-0.635362578681949120,	-0.635323967189969530,	
+-0.635285354109680010,	-0.635246739441177160,	-0.635208123184557440,	-0.635169505339917340,	-0.635130885907353560,	-0.635092264886962580,	-0.635053642278840200,	-0.635015018083084360,	
+-0.634976392299791080,	-0.634937764929056740,	-0.634899135970978020,	-0.634860505425651530,	-0.634821873293172970,	-0.634783239573640470,	-0.634744604267149850,	-0.634705967373797700,	
+-0.634667328893680720,	-0.634628688826895380,	-0.634590047173538290,	-0.634551403933706020,	-0.634512759107495380,	-0.634474112695002090,	-0.634435464696324170,	-0.634396815111557650,	
+-0.634358163940799020,	-0.634319511184145090,	-0.634280856841692330,	-0.634242200913537340,	-0.634203543399776250,	-0.634164884300506990,	-0.634126223615825490,	-0.634087561345828440,	
+-0.634048897490612550,	-0.634010232050274290,	-0.633971565024910590,	-0.633932896414617920,	-0.633894226219492320,	-0.633855554439631820,	-0.633816881075132450,	-0.633778206126090820,	
+-0.633739529592603820,	-0.633700851474767850,	-0.633662171772679810,	-0.633623490486435630,	-0.633584807616133450,	-0.633546123161869310,	-0.633507437123739690,	-0.633468749501841620,	
+-0.633430060296271690,	-0.633391369507126490,	-0.633352677134502940,	-0.633313983178497630,	-0.633275287639206820,	-0.633236590516728310,	-0.633197891811158490,	-0.633159191522593810,	
+-0.633120489651131210,	-0.633081786196867390,	-0.633043081159898380,	-0.633004374540322320,	-0.632965666338235370,	-0.632926956553734320,	-0.632888245186915780,	-0.632849532237876660,	
+-0.632810817706713770,	-0.632772101593523820,	-0.632733383898403500,	-0.632694664621449190,	-0.632655943762758800,	-0.632617221322428590,	-0.632578497300555260,	-0.632539771697235740,	
+-0.632501044512566830,	-0.632462315746644580,	-0.632423585399567220,	-0.632384853471430920,	-0.632346119962332480,	-0.632307384872368820,	-0.632268648201636530,	-0.632229909950232760,	
+-0.632191170118254100,	-0.632152428705797580,	-0.632113685712959340,	-0.632074941139837530,	-0.632036194986528410,	-0.631997447253128670,	-0.631958697939735470,	-0.631919947046445500,	
+-0.631881194573355560,	-0.631842440520562040,	-0.631803684888163080,	-0.631764927676254920,	-0.631726168884934380,	-0.631687408514298500,	-0.631648646564444080,	-0.631609883035467940,	
+-0.631571117927467230,	-0.631532351240537970,	-0.631493582974778530,	-0.631454813130285180,	-0.631416041707154710,	-0.631377268705484270,	-0.631338494125370580,	-0.631299717966910650,	
+-0.631260940230200740,	-0.631222160915339110,	-0.631183380022422140,	-0.631144597551546730,	-0.631105813502809810,	-0.631067027876308310,	-0.631028240672139250,	-0.630989451890399680,	
+-0.630950661531186400,	-0.630911869594595780,	-0.630873076080726180,	-0.630834280989673980,	-0.630795484321535980,	-0.630756686076409330,	-0.630717886254390960,	-0.630679084855577110,	
+-0.630640281880066270,	-0.630601477327954680,	-0.630562671199339510,	-0.630523863494317660,	-0.630485054212986060,	-0.630446243355441860,	-0.630407430921782090,	-0.630368616912103660,	
+-0.630329801326503070,	-0.630290984165078670,	-0.630252165427926720,	-0.630213345115144490,	-0.630174523226828760,	-0.630135699763076820,	-0.630096874723984900,	-0.630058048109651490,	
+-0.630019219920172960,	-0.629980390155646440,	-0.629941558816168870,	-0.629902725901837380,	-0.629863891412749120,	-0.629825055349001130,	-0.629786217710690540,	-0.629747378497913730,	
+-0.629708537710769070,	-0.629669695349353130,	-0.629630851413762960,	-0.629592005904095590,	-0.629553158820448270,	-0.629514310162918030,	-0.629475459931601260,	-0.629436608126596630,	
+-0.629397754748000420,	-0.629358899795909870,	-0.629320043270422010,	-0.629281185171634120,	-0.629242325499643210,	-0.629203464254546540,	-0.629164601436440480,	-0.629125737045423630,	
+-0.629086871081592450,	-0.629048003545044090,	-0.629009134435875690,	-0.628970263754184410,	-0.628931391500067490,	-0.628892517673621420,	-0.628853642274944780,	-0.628814765304134050,	
+-0.628775886761286370,	-0.628737006646499010,	-0.628698124959869100,	-0.628659241701493790,	-0.628620356871470550,	-0.628581470469896320,	-0.628542582496867670,	-0.628503692952483320,	
+-0.628464801836839730,	-0.628425909150034160,	-0.628387014892163860,	-0.628348119063325880,	-0.628309221663617020,	-0.628270322693135760,	-0.628231422151978690,	-0.628192520040243170,	
+-0.628153616358026250,	-0.628114711105425270,	-0.628075804282537510,	-0.628036895889460320,	-0.627997985926290860,	-0.627959074393125700,	-0.627920161290063560,	-0.627881246617201020,	
+-0.627842330374635330,	-0.627803412562463970,	-0.627764493180783870,	-0.627725572229691940,	-0.627686649709286780,	-0.627647725619664980,	-0.627608799960923890,	-0.627569872733160780,	
+-0.627530943936473020,	-0.627492013570957850,	-0.627453081636712760,	-0.627414148133834780,	-0.627375213062420830,	-0.627336276422569620,	-0.627297338214377610,	-0.627258398437942290,	
+-0.627219457093361020,	-0.627180514180731060,	-0.627141569700149780,	-0.627102623651713880,	-0.627063676035522160,	-0.627024726851671320,	-0.626985776100258520,	-0.626946823781381330,	
+-0.626907869895137140,	-0.626868914441623290,	-0.626829957420937060,	-0.626790998833175240,	-0.626752038678436650,	-0.626713076956817990,	-0.626674113668416630,	-0.626635148813330050,	
+-0.626596182391655490,	-0.626557214403490550,	-0.626518244848931820,	-0.626479273728078100,	-0.626440301041026330,	-0.626401326787873750,	-0.626362350968717950,	-0.626323373583656200,	
+-0.626284394632785960,	-0.626245414116204820,	-0.626206432034009390,	-0.626167448386298560,	-0.626128463173169170,	-0.626089476394718570,	-0.626050488051044350,	-0.626011498142243770,	
+-0.625972506668414640,	-0.625933513629653440,	-0.625894519026059190,	-0.625855522857728610,	-0.625816525124759160,	-0.625777525827248440,	-0.625738524965294030,	-0.625699522538993190,	
+-0.625660518548443510,	-0.625621512993742580,	-0.625582505874987200,	-0.625543497192276200,	-0.625504486945706590,	-0.625465475135375650,	-0.625426461761380950,	-0.625387446823820190,	
+-0.625348430322790190,	-0.625309412258389650,	-0.625270392630715710,	-0.625231371439865740,	-0.625192348685937320,	-0.625153324369028040,	-0.625114298489235500,	-0.625075271046657170,	
+-0.625036242041390630,	-0.624997211473532820,	-0.624958179343182650,	-0.624919145650437050,	-0.624880110395393600,	-0.624841073578149890,	-0.624802035198803510,	-0.624762995257452050,	
+-0.624723953754192320,	-0.624684910689123460,	-0.624645866062342290,	-0.624606819873946510,	-0.624567772124033580,	-0.624528722812701330,	-0.624489671940047230,	-0.624450619506168980,	
+-0.624411565511163390,	-0.624372509955129720,	-0.624333452838164660,	-0.624294394160366030,	-0.624255333921831410,	-0.624216272122658400,	-0.624177208762944800,	-0.624138143842787430,	
+-0.624099077362285430,	-0.624060009321535710,	-0.624020939720635990,	-0.623981868559683850,	-0.623942795838777100,	-0.623903721558013320,	-0.623864645717490340,	-0.623825568317304960,	
+-0.623786489357556320,	-0.623747408838341570,	-0.623708326759758180,	-0.623669243121904080,	-0.623630157924876750,	-0.623591071168774100,	-0.623551982853693070,	-0.623512892979732780,	
+-0.623473801546990280,	-0.623434708555563270,	-0.623395614005549440,	-0.623356517897046600,	-0.623317420230152570,	-0.623278321004964830,	-0.623239220221581400,	-0.623200117880099100,	
+-0.623161013980617300,	-0.623121908523233010,	-0.623082801508043850,	-0.623043692935147720,	-0.623004582804642330,	-0.622965471116624810,	-0.622926357871194320,	-0.622887243068448000,	
+-0.622848126708483440,	-0.622809008791398670,	-0.622769889317291270,	-0.622730768286259280,	-0.622691645698400300,	-0.622652521553812230,	-0.622613395852592120,	-0.622574268594839220,	
+-0.622535139780650670,	-0.622496009410124280,	-0.622456877483357870,	-0.622417744000449250,	-0.622378608961496220,	-0.622339472366596040,	-0.622300334215847850,	-0.622261194509348800,	
+-0.622222053247196820,	-0.622182910429489700,	-0.622143766056325260,	-0.622104620127801430,	-0.622065472644016020,	-0.622026323605066270,	-0.621987173011051440,	-0.621948020862068570,	
+-0.621908867158215810,	-0.621869711899590730,	-0.621830555086291480,	-0.621791396718415770,	-0.621752236796060840,	-0.621713075319326070,	-0.621673912288308710,	-0.621634747703106450,	
+-0.621595581563817330,	-0.621556413870539280,	-0.621517244623370100,	-0.621478073822407940,	-0.621438901467749830,	-0.621399727559495240,	-0.621360552097741210,	-0.621321375082585890,	
+-0.621282196514127080,	-0.621243016392462820,	-0.621203834717691030,	-0.621164651489908960,	-0.621125466709215980,	-0.621086280375709230,	-0.621047092489486860,	-0.621007903050646680,	
+-0.620968712059286830,	-0.620929519515505120,	-0.620890325419399700,	-0.620851129771068490,	-0.620811932570608630,	-0.620772733818119700,	-0.620733533513698980,	-0.620694331657444360,	
+-0.620655128249453900,	-0.620615923289825620,	-0.620576716778656890,	-0.620537508716047070,	-0.620498299102093420,	-0.620459087936894080,	-0.620419875220546980,	-0.620380660953150250,	
+-0.620341445134801830,	-0.620302227765599850,	-0.620263008845642230,	-0.620223788375026340,	-0.620184566353851770,	-0.620145342782215780,	-0.620106117660216390,	-0.620066890987951760,	
+-0.620027662765519790,	-0.619988432993018760,	-0.619949201670545900,	-0.619909968798200820,	-0.619870734376080760,	-0.619831498404283860,	-0.619792260882908290,	-0.619753021812051940,	
+-0.619713781191813080,	-0.619674539022289860,	-0.619635295303579530,	-0.619596050035781550,	-0.619556803218993650,	-0.619517554853313610,	-0.619478304938839710,	-0.619439053475670080,	
+-0.619399800463902750,	-0.619360545903635210,	-0.619321289794967030,	-0.619282032137995710,	-0.619242772932819260,	-0.619203512179535840,	-0.619164249878243700,	-0.619124986029040870,	
+-0.619085720632025600,	-0.619046453687295270,	-0.619007185194949570,	-0.618967915155085980,	-0.618928643567802530,	-0.618889370433197470,	-0.618850095751368960,	-0.618810819522415230,	
+-0.618771541746433780,	-0.618732262423524080,	-0.618692981553783830,	-0.618653699137311160,	-0.618614415174204120,	-0.618575129664561070,	-0.618535842608480270,	-0.618496554006059850,	
+-0.618457263857397970,	-0.618417972162592310,	-0.618378678921742360,	-0.618339384134945710,	-0.618300087802300610,	-0.618260789923905320,	-0.618221490499858080,	-0.618182189530256390,	
+-0.618142887015199930,	-0.618103582954786180,	-0.618064277349113620,	-0.618024970198280290,	-0.617985661502384430,	-0.617946351261524530,	-0.617907039475798730,	-0.617867726145305380,	
+-0.617828411270141990,	-0.617789094850408230,	-0.617749776886201700,	-0.617710457377620760,	-0.617671136324763780,	-0.617631813727728800,	-0.617592489586614390,	-0.617553163901518040,	
+-0.617513836672539450,	-0.617474507899776310,	-0.617435177583326890,	-0.617395845723289540,	-0.617356512319762520,	-0.617317177372844190,	-0.617277840882633040,	-0.617238502849226540,	
+-0.617199163272724500,	-0.617159822153224510,	-0.617120479490824940,	-0.617081135285624250,	-0.617041789537720600,	-0.617002442247212570,	-0.616963093414197750,	-0.616923743038775840,	
+-0.616884391121044650,	-0.616845037661102440,	-0.616805682659047560,	-0.616766326114978610,	-0.616726968028993740,	-0.616687608401191520,	-0.616648247231669560,	-0.616608884520527640,	
+-0.616569520267863490,	-0.616530154473775680,	-0.616490787138362360,	-0.616451418261722120,	-0.616412047843953310,	-0.616372675885153650,	-0.616333302385423050,	-0.616293927344859220,	
+-0.616254550763560500,	-0.616215172641625510,	-0.616175792979152480,	-0.616136411776240010,	-0.616097029032986470,	-0.616057644749490430,	-0.616018258925849490,	-0.615978871562163690,	
+-0.615939482658530710,	-0.615900092215049040,	-0.615860700231817050,	-0.615821306708933310,	-0.615781911646495650,	-0.615742515044603980,	-0.615703116903355880,	-0.615663717222850070,	
+-0.615624316003185010,	-0.615584913244459080,	-0.615545508946770850,	-0.615506103110218920,	-0.615466695734901760,	-0.615427286820917070,	-0.615387876368364890,	-0.615348464377343030,	
+-0.615309050847949960,	-0.615269635780284370,	-0.615230219174444650,	-0.615190801030529370,	-0.615151381348636340,	-0.615111960128865600,	-0.615072537371314950,	-0.615033113076082990,	
+-0.614993687243268190,	-0.614954259872969260,	-0.614914830965284540,	-0.614875400520312860,	-0.614835968538151920,	-0.614796535018901860,	-0.614757099962660370,	-0.614717663369526160,	
+-0.614678225239597700,	-0.614638785572973800,	-0.614599344369752940,	-0.614559901630032930,	-0.614520457353913920,	-0.614481011541493700,	-0.614441564192871100,	-0.614402115308144480,	
+-0.614362664887412540,	-0.614323212930773970,	-0.614283759438327470,	-0.614244304410170750,	-0.614204847846404060,	-0.614165389747125090,	-0.614125930112432770,	-0.614086468942425690,	
+-0.614047006237202320,	-0.614007541996861470,	-0.613968076221501070,	-0.613928608911221140,	-0.613889140066119720,	-0.613849669686295510,	-0.613810197771847090,	-0.613770724322873160,	
+-0.613731249339472430,	-0.613691772821743480,	-0.613652294769785220,	-0.613612815183695480,	-0.613573334063574390,	-0.613533851409519990,	-0.613494367221630980,	-0.613454881500006040,	
+-0.613415394244743890,	-0.613375905455942560,	-0.613336415133702070,	-0.613296923278120690,	-0.613257429889296880,	-0.613217934967329570,	-0.613178438512317460,	-0.613138940524359130,	
+-0.613099441003553510,	-0.613059939949999410,	-0.613020437363794630,	-0.612980933245039440,	-0.612941427593831970,	-0.612901920410270920,	-0.612862411694455100,	-0.612822901446483210,	
+-0.612783389666454070,	-0.612743876354465700,	-0.612704361510618360,	-0.612664845135010180,	-0.612625327227739880,	-0.612585807788906260,	-0.612546286818608120,	-0.612506764316944170,	
+-0.612467240284013450,	-0.612427714719913860,	-0.612388187624745670,	-0.612348658998607020,	-0.612309128841596720,	-0.612269597153813680,	-0.612230063935356620,	-0.612190529186324330,	
+-0.612150992906814960,	-0.612111455096928990,	-0.612071915756764230,	-0.612032374886419820,	-0.611992832485994340,	-0.611953288555586840,	-0.611913743095296110,	-0.611874196105220980,	
+-0.611834647585459690,	-0.611795097536112500,	-0.611755545957277660,	-0.611715992849053760,	-0.611676438211540050,	-0.611636882044835130,	-0.611597324349038020,	-0.611557765124246980,	
+-0.611518204370562150,	-0.611478642088081780,	-0.611439078276904910,	-0.611399512937130240,	-0.611359946068856910,	-0.611320377672183610,	-0.611280807747209390,	-0.611241236294033150,	
+-0.611201663312753160,	-0.611162088803469670,	-0.611122512766280930,	-0.611082935201285980,	-0.611043356108583740,	-0.611003775488273000,	-0.610964193340452160,	-0.610924609665221550,	
+-0.610885024462679340,	-0.610845437732924660,	-0.610805849476056320,	-0.610766259692173350,	-0.610726668381374790,	-0.610687075543759560,	-0.610647481179426690,	-0.610607885288474320,	
+-0.610568287871002920,	-0.610528688927110870,	-0.610489088456897090,	-0.610449486460460490,	-0.610409882937900330,	-0.610370277889314640,	-0.610330671314804010,	-0.610291063214466690,	
+-0.610251453588401720,	-0.610211842436708120,	-0.610172229759484930,	-0.610132615556831180,	-0.610092999828845790,	-0.610053382575628020,	-0.610013763797276010,	-0.609974143493890340,	
+-0.609934521665569270,	-0.609894898312411950,	-0.609855273434517400,	-0.609815647031984540,	-0.609776019104912640,	-0.609736389653400050,	-0.609696758677547130,	-0.609657126177452270,	
+-0.609617492153214700,	-0.609577856604933350,	-0.609538219532707370,	-0.609498580936635780,	-0.609458940816817840,	-0.609419299173351690,	-0.609379656006338140,	-0.609340011315875340,	
+-0.609300365102062650,	-0.609260717364998980,	-0.609221068104783490,	-0.609181417321515320,	-0.609141765015292940,	-0.609102111186216820,	-0.609062455834385450,	-0.609022798959897970,	
+-0.608983140562853410,	-0.608943480643351130,	-0.608903819201490060,	-0.608864156237369450,	-0.608824491751088440,	-0.608784825742745510,	-0.608745158212441240,	-0.608705489160274000,	
+-0.608665818586343050,	-0.608626146490747640,	-0.608586472873586800,	-0.608546797734959120,	-0.608507121074965070,	-0.608467442893703250,	-0.608427763191272900,	-0.608388081967773050,	
+-0.608348399223303080,	-0.608308714957962020,	-0.608269029171849220,	-0.608229341865063830,	-0.608189653037704450,	-0.608149962689871540,	-0.608110270821663800,	-0.608070577433180270,	
+-0.608030882524520420,	-0.607991186095783290,	-0.607951488147067560,	-0.607911788678473730,	-0.607872087690100480,	-0.607832385182047070,	-0.607792681154412650,	-0.607752975607296460,	
+-0.607713268540797880,	-0.607673559955016150,	-0.607633849850050530,	-0.607594138225999500,	-0.607554425082963870,	-0.607514710421042210,	-0.607474994240333800,	-0.607435276540937870,	
+-0.607395557322953690,	-0.607355836586480620,	-0.607316114331617360,	-0.607276390558464390,	-0.607236665267120610,	-0.607196938457685080,	-0.607157210130257140,	-0.607117480284936170,	
+-0.607077748921821650,	-0.607038016041012600,	-0.606998281642607940,	-0.606958545726708150,	-0.606918808293412050,	-0.606879069342818990,	-0.606839328875028230,	-0.606799586890139130,	
+-0.606759843388251060,	-0.606720098369462610,	-0.606680351833874700,	-0.606640603781585910,	-0.606600854212695610,	-0.606561103127303160,	-0.606521350525507930,	-0.606481596407409280,	
+-0.606441840773106810,	-0.606402083622699540,	-0.606362324956286500,	-0.606322564773968290,	-0.606282803075843700,	-0.606243039862012110,	-0.606203275132572880,	-0.606163508887625490,	
+-0.606123741127268520,	-0.606083971851603010,	-0.606044201060727540,	-0.606004428754741590,	-0.605964654933744630,	-0.605924879597835920,	-0.605885102747115050,	-0.605845324381681480,	
+-0.605805544501634490,	-0.605765763107072970,	-0.605725980198097760,	-0.605686195774807650,	-0.605646409837302000,	-0.605606622385680300,	-0.605566833420042140,	-0.605527042940486090,	
+-0.605487250947113200,	-0.605447457440022150,	-0.605407662419312540,	-0.605367865885083620,	-0.605328067837435090,	-0.605288268276466420,	-0.605248467202277100,	-0.605208664614966580,	
+-0.605168860514633700,	-0.605129054901379470,	-0.605089247775302490,	-0.605049439136502440,	-0.605009628985078710,	-0.604969817321130980,	-0.604930004144758730,	-0.604890189456060660,	
+-0.604850373255137910,	-0.604810555542089180,	-0.604770736317014060,	-0.604730915580012130,	-0.604691093331182870,	-0.604651269570625980,	-0.604611444298440830,	-0.604571617514726430,	
+-0.604531789219583620,	-0.604491959413111400,	-0.604452128095409160,	-0.604412295266576690,	-0.604372460926713480,	-0.604332625075919120,	-0.604292787714292510,	-0.604252948841934590,	
+-0.604213108458944380,	-0.604173266565421360,	-0.604133423161465120,	-0.604093578247175360,	-0.604053731822651650,	-0.604013883887993600,	-0.603974034443300110,	-0.603934183488672340,	
+-0.603894331024208970,	-0.603854477050009940,	-0.603814621566174600,	-0.603774764572802770,	-0.603734906069993920,	-0.603695046057847180,	-0.603655184536463500,	-0.603615321505941880,	
+-0.603575456966382040,	-0.603535590917883450,	-0.603495723360545910,	-0.603455854294469020,	-0.603415983719752580,	-0.603376111636496180,	-0.603336238044798740,	-0.603296362944761410,	
+-0.603256486336483210,	-0.603216608220063730,	-0.603176728595602780,	-0.603136847463200070,	-0.603096964822954380,	-0.603057080674967110,	-0.603017195019337040,	-0.602977307856164100,	
+-0.602937419185547770,	-0.602897529007587970,	-0.602857637322384400,	-0.602817744130036640,	-0.602777849430644610,	-0.602737953224307120,	-0.602698055511125540,	-0.602658156291198790,	
+-0.602618255564626670,	-0.602578353331508890,	-0.602538449591945250,	-0.602498544346035560,	-0.602458637593878630,	-0.602418729335575940,	-0.602378819571226410,	-0.602338908300929840,	
+-0.602298995524785940,	-0.602259081242894620,	-0.602219165455355480,	-0.602179248162268530,	-0.602139329363732710,	-0.602099409059849380,	-0.602059487250717450,	-0.602019563936436740,	
+-0.601979639117107170,	-0.601939712792828540,	-0.601899784963700560,	-0.601859855629822470,	-0.601819924791295420,	-0.601779992448218560,	-0.601740058600691800,	-0.601700123248814720,	
+-0.601660186392687480,	-0.601620248032409770,	-0.601580308168081280,	-0.601540366799801500,	-0.601500423927671450,	-0.601460479551790270,	-0.601420533672258010,	-0.601380586289174350,	
+-0.601340637402639210,	-0.601300687012752520,	-0.601260735119613310,	-0.601220781723323050,	-0.601180826823980890,	-0.601140870421686620,	-0.601100912516540080,	-0.601060953108641380,	
+-0.601020992198090240,	-0.600981029784986690,	-0.600941065869430410,	-0.600901100451520900,	-0.600861133531359280,	-0.600821165109044930,	-0.600781195184677540,	-0.600741223758357150,	
+-0.600701250830183770,	-0.600661276400256570,	-0.600621300468676900,	-0.600581323035543900,	-0.600541344100957610,	-0.600501363665018050,	-0.600461381727825040,	-0.600421398289478490,	
+-0.600381413350078550,	-0.600341426909725030,	-0.600301438968517180,	-0.600261449526556580,	-0.600221458583942270,	-0.600181466140774280,	-0.600141472197152640,	-0.600101476753177380,	
+-0.600061479808948420,	-0.600021481364565010,	-0.599981481420128640,	-0.599941479975738550,	-0.599901477031494770,	-0.599861472587497220,	-0.599821466643846060,	-0.599781459200641190,	
+-0.599741450257982760,	-0.599701439815969910,	-0.599661427874704220,	-0.599621414434284960,	-0.599581399494812150,	-0.599541383056385820,	-0.599501365119106120,	-0.599461345683072970,	
+-0.599421324748385720,	-0.599381302315145860,	-0.599341278383452750,	-0.599301252953406420,	-0.599261226025107010,	-0.599221197598654440,	-0.599181167674148970,	-0.599141136251690520,	
+-0.599101103331378560,	-0.599061068913314560,	-0.599021032997597900,	-0.598980995584328600,	-0.598940956673606920,	-0.598900916265532770,	-0.598860874360206300,	-0.598820830957726980,	
+-0.598780786058196290,	-0.598740739661713590,	-0.598700691768379150,	-0.598660642378292860,	-0.598620591491555000,	-0.598580539108265700,	-0.598540485228524990,	-0.598500429852433120,	
+-0.598460372980089470,	-0.598420314611595620,	-0.598380254747050920,	-0.598340193386555530,	-0.598300130530209810,	-0.598260066178113670,	-0.598220000330366600,	-0.598179932987070400,	
+-0.598139864148324210,	-0.598099793814228510,	-0.598059721984883220,	-0.598019648660388590,	-0.597979573840844880,	-0.597939497526352340,	-0.597899419717010880,	-0.597859340412920330,	
+-0.597819259614182030,	-0.597779177320895580,	-0.597739093533161240,	-0.597699008251079130,	-0.597658921474749530,	-0.597618833204272670,	-0.597578743439747930,	-0.597538652181277110,	
+-0.597498559428959570,	-0.597458465182895690,	-0.597418369443185600,	-0.597378272209929670,	-0.597338173483228040,	-0.597298073263180960,	-0.597257971549887910,	-0.597217868343450700,	
+-0.597177763643968910,	-0.597137657451542570,	-0.597097549766272160,	-0.597057440588257830,	-0.597017329917600040,	-0.596977217754398050,	-0.596937104098753780,	-0.596896988950766700,	
+-0.596856872310537300,	-0.596816754178165600,	-0.596776634553751960,	-0.596736513437396860,	-0.596696390829200450,	-0.596656266729262310,	-0.596616141137684240,	-0.596576014054565840,	
+-0.596535885480007360,	-0.596495755414109150,	-0.596455623856971600,	-0.596415490808694940,	-0.596375356269378880,	-0.596335220239125220,	-0.596295082718033440,	-0.596254943706203910,	
+-0.596214803203736990,	-0.596174661210733150,	-0.596134517727292650,	-0.596094372753515840,	-0.596054226289503110,	-0.596014078335354030,	-0.595973928891170620,	-0.595933777957052270,	
+-0.595893625533099440,	-0.595853471619412600,	-0.595813316216092130,	-0.595773159323237600,	-0.595733000940950940,	-0.595692841069331740,	-0.595652679708480460,	-0.595612516858497370,	
+-0.595572352519483150,	-0.595532186691537960,	-0.595492019374762260,	-0.595451850569256650,	-0.595411680275120590,	-0.595371508492456010,	-0.595331335221362720,	-0.595291160461941190,	
+-0.595250984214291570,	-0.595210806478514650,	-0.595170627254710590,	-0.595130446542979310,	-0.595090264343422600,	-0.595050080656140290,	-0.595009895481232730,	-0.594969708818800510,	
+-0.594929520668943890,	-0.594889331031763560,	-0.594849139907359880,	-0.594808947295832670,	-0.594768753197283730,	-0.594728557611812870,	-0.594688360539520790,	-0.594648161980507630,	
+-0.594607961934874200,	-0.594567760402720750,	-0.594527557384147310,	-0.594487352879255580,	-0.594447146888145480,	-0.594406939410917600,	-0.594366730447672300,	-0.594326519998510160,	
+-0.594286308063531780,	-0.594246094642837620,	-0.594205879736527500,	-0.594165663344703330,	-0.594125445467465150,	-0.594085226104913210,	-0.594045005257148320,	-0.594004782924270840,	
+-0.593964559106381350,	-0.593924333803579900,	-0.593884107015968170,	-0.593843878743646300,	-0.593803648986714670,	-0.593763417745273970,	-0.593723185019424670,	-0.593682950809267470,	
+-0.593642715114902850,	-0.593602477936431390,	-0.593562239273953020,	-0.593521999127569870,	-0.593481757497381630,	-0.593441514383489130,	-0.593401269785992720,	-0.593361023704993110,	
+-0.593320776140590310,	-0.593280527092886260,	-0.593240276561980970,	-0.593200024547974820,	-0.593159771050968730,	-0.593119516071063170,	-0.593079259608358830,	-0.593039001662956420,	
+-0.592998742234956410,	-0.592958481324458830,	-0.592918218931565820,	-0.592877955056377190,	-0.592837689698993750,	-0.592797422859515980,	-0.592757154538044780,	-0.592716884734680650,	
+-0.592676613449523490,	-0.592636340682675680,	-0.592596066434236900,	-0.592555790704307970,	-0.592515513492989590,	-0.592475234800382440,	-0.592434954626587130,	-0.592394672971704560,	
+-0.592354389835834440,	-0.592314105219079230,	-0.592273819121538650,	-0.592233531543313490,	-0.592193242484504560,	-0.592152951945212560,	-0.592112659925538080,	-0.592072366425581360,	
+-0.592032071445444340,	-0.591991774985227150,	-0.591951477045030590,	-0.591911177624955260,	-0.591870876725101970,	-0.591830574345571630,	-0.591790270486464710,	-0.591749965147881470,	
+-0.591709658329923950,	-0.591669350032692390,	-0.591629040256287380,	-0.591588729000809830,	-0.591548416266360460,	-0.591508102053040050,	-0.591467786360948540,	-0.591427469190188400,	
+-0.591387150540859660,	-0.591346830413062910,	-0.591306508806899170,	-0.591266185722469030,	-0.591225861159873520,	-0.591185535119213350,	-0.591145207600589420,	-0.591104878604101660,	
+-0.591064548129852430,	-0.591024216177941760,	-0.590983882748470690,	-0.590943547841539800,	-0.590903211457250110,	-0.590862873595701670,	-0.590822534256996710,	-0.590782193441235500,	
+-0.590741851148518740,	-0.590701507378947330,	-0.590661162132622210,	-0.590620815409644170,	-0.590580467210114150,	-0.590540117534132820,	-0.590499766381800570,	-0.590459413753219640,	
+-0.590419059648490170,	-0.590378704067712980,	-0.590338347010989080,	-0.590297988478419410,	-0.590257628470104660,	-0.590217266986145070,	-0.590176904026643130,	-0.590136539591698870,	
+-0.590096173681413320,	-0.590055806295887280,	-0.590015437435221780,	-0.589975067099517640,	-0.589934695288875880,	-0.589894322003396530,	-0.589853947243182300,	-0.589813571008332980,	
+-0.589773193298949950,	-0.589732814115133790,	-0.589692433456985630,	-0.589652051324606410,	-0.589611667718096370,	-0.589571282637557760,	-0.589530896083091060,	-0.589490508054797080,	
+-0.589450118552776850,	-0.589409727577131280,	-0.589369335127961410,	-0.589328941205368270,	-0.589288545809452000,	-0.589248148940315080,	-0.589207750598057740,	-0.589167350782781150,	
+-0.589126949494586110,	-0.589086546733573630,	-0.589046142499844880,	-0.589005736793499990,	-0.588965329614641540,	-0.588924920963369790,	-0.588884510839785660,	-0.588844099243990280,	
+-0.588803686176084580,	-0.588763271636169820,	-0.588722855624346790,	-0.588682438140716640,	-0.588642019185379620,	-0.588601598758438320,	-0.588561176859992980,	-0.588520753490144770,	
+-0.588480328648994690,	-0.588439902336643670,	-0.588399474553192300,	-0.588359045298742940,	-0.588318614573395960,	-0.588278182377252380,	-0.588237748710413340,	-0.588197313572980000,	
+-0.588156876965053370,	-0.588116438886734480,	-0.588075999338124600,	-0.588035558319323970,	-0.587995115830435070,	-0.587954671871558480,	-0.587914226442795230,	-0.587873779544246360,	
+-0.587833331176013000,	-0.587792881338195630,	-0.587752430030896830,	-0.587711977254216870,	-0.587671523008256980,	-0.587631067293118310,	-0.587590610108902010,	-0.587550151455709100,	
+-0.587509691333640950,	-0.587469229742798470,	-0.587428766683282140,	-0.587388302155194770,	-0.587347836158636500,	-0.587307368693708700,	-0.587266899760512500,	-0.587226429359149040,	
+-0.587185957489719470,	-0.587145484152324260,	-0.587105009347066110,	-0.587064533074045490,	-0.587024055333363440,	-0.586983576125121310,	-0.586943095449420250,	-0.586902613306361400,	
+-0.586862129696046120,	-0.586821644618574670,	-0.586781158074049850,	-0.586740670062572240,	-0.586700180584242890,	-0.586659689639163040,	-0.586619197227433940,	-0.586578703349156960,	
+-0.586538208004432460,	-0.586497711193363140,	-0.586457212916049580,	-0.586416713172592920,	-0.586376211963094530,	-0.586335709287655660,	-0.586295205146377450,	-0.586254699539361160,	
+-0.586214192466708250,	-0.586173683928519100,	-0.586133173924896390,	-0.586092662455940830,	-0.586052149521753550,	-0.586011635122436040,	-0.585971119258089310,	-0.585930601928814080,	
+-0.585890083134713020,	-0.585849562875886850,	-0.585809041152436700,	-0.585768517964464050,	-0.585727993312070040,	-0.585687467195356030,	-0.585646939614423270,	-0.585606410569373350,	
+-0.585565880060306520,	-0.585525348087325810,	-0.585484814650531700,	-0.585444279750025550,	-0.585403743385908730,	-0.585363205558282470,	-0.585322666267247490,	-0.585282125512906700,	
+-0.585241583295360470,	-0.585201039614710260,	-0.585160494471057560,	-0.585119947864503500,	-0.585079399795149670,	-0.585038850263097320,	-0.584998299268447820,	-0.584957746811301860,	
+-0.584917192891762250,	-0.584876637509929690,	-0.584836080665905530,	-0.584795522359791150,	-0.584754962591688020,	-0.584714401361697390,	-0.584673838669920070,	-0.584633274516458860,	
+-0.584592708901414570,	-0.584552141824888350,	-0.584511573286981890,	-0.584471003287796440,	-0.584430431827433480,	-0.584389858905994490,	-0.584349284523580040,	-0.584308708680293170,	
+-0.584268131376234570,	-0.584227552611505610,	-0.584186972386207760,	-0.584146390700442500,	-0.584105807554311180,	-0.584065222947914630,	-0.584024636881355860,	-0.583984049354735360,	
+-0.583943460368154810,	-0.583902869921715690,	-0.583862278015519260,	-0.583821684649667220,	-0.583781089824260910,	-0.583740493539401830,	-0.583699895795190880,	-0.583659296591730880,	
+-0.583618695929122740,	-0.583578093807467720,	-0.583537490226867520,	-0.583496885187423600,	-0.583456278689236770,	-0.583415670732409960,	-0.583375061317043860,	-0.583334450443240280,	
+-0.583293838111100470,	-0.583253224320726130,	-0.583212609072218610,	-0.583171992365679630,	-0.583131374201210750,	-0.583090754578912570,	-0.583050133498888350,	-0.583009510961238760,	
+-0.582968886966065410,	-0.582928261513469770,	-0.582887634603553530,	-0.582847006236417500,	-0.582806376412164600,	-0.582765745130895850,	-0.582725112392712630,	-0.582684478197716740,	
+-0.582643842546009650,	-0.582603205437692840,	-0.582562566872868120,	-0.582521926851636950,	-0.582481285374100270,	-0.582440642440361090,	-0.582399998050520230,	-0.582359352204679490,	
+-0.582318704902940240,	-0.582278056145404290,	-0.582237405932173210,	-0.582196754263347940,	-0.582156101139031490,	-0.582115446559324680,	-0.582074790524329310,	-0.582034133034147080,	
+-0.581993474088879360,	-0.581952813688628060,	-0.581912151833494650,	-0.581871488523580170,	-0.581830823758987760,	-0.581790157539818220,	-0.581749489866173250,	-0.581708820738154660,	
+-0.581668150155863930,	-0.581627478119402850,	-0.581586804628872360,	-0.581546129684375580,	-0.581505453286013440,	-0.581464775433887750,	-0.581424096128099980,	-0.581383415368752040,	
+-0.581342733155945650,	-0.581302049489782370,	-0.581261364370363910,	-0.581220677797791410,	-0.581179989772167890,	-0.581139300293594400,	-0.581098609362172610,	-0.581057916978004350,	
+-0.581017223141191310,	-0.580976527851834510,	-0.580935831110036990,	-0.580895132915900000,	-0.580854433269525130,	-0.580813732171014290,	-0.580773029620468950,	-0.580732325617991150,	
+-0.580691620163682480,	-0.580650913257644840,	-0.580610204899979050,	-0.580569495090788590,	-0.580528783830174370,	-0.580488071118238190,	-0.580447356955081870,	-0.580406641340807110,	
+-0.580365924275515030,	-0.580325205759308790,	-0.580284485792289640,	-0.580243764374559270,	-0.580203041506219370,	-0.580162317187371990,	-0.580121591418118810,	-0.580080864198561640,	
+-0.580040135528802290,	-0.579999405408941900,	-0.579958673839083730,	-0.579917940819328790,	-0.579877206349779020,	-0.579836470430536320,	-0.579795733061702400,	-0.579754994243379170,	
+-0.579714253975667670,	-0.579673512258671360,	-0.579632769092491170,	-0.579592024477229020,	-0.579551278412986930,	-0.579510530899866590,	-0.579469781937969940,	-0.579429031527398770,	
+-0.579388279668254460,	-0.579347526360640020,	-0.579306771604656820,	-0.579266015400406680,	-0.579225257747991500,	-0.579184498647513200,	-0.579143738099073600,	-0.579102976102773950,	
+-0.579062212658717600,	-0.579021447767005700,	-0.578980681427740280,	-0.578939913641023040,	-0.578899144406956000,	-0.578858373725641200,	-0.578817601597180430,	-0.578776828021674850,	
+-0.578736052999228030,	-0.578695276529941020,	-0.578654498613915820,	-0.578613719251254490,	-0.578572938442058700,	-0.578532156186430610,	-0.578491372484471470,	-0.578450587336284630,	
+-0.578409800741971240,	-0.578369012701633320,	-0.578328223215372920,	-0.578287432283292050,	-0.578246639905492520,	-0.578205846082076370,	-0.578165050813145620,	-0.578124254098801530,	
+-0.578083455939147450,	-0.578042656334284870,	-0.578001855284315580,	-0.577961052789341620,	-0.577920248849465130,	-0.577879443464787150,	-0.577838636635411350,	-0.577797828361439000,	
+-0.577757018642972130,	-0.577716207480112540,	-0.577675394872962600,	-0.577634580821624110,	-0.577593765326199100,	-0.577552948386789720,	-0.577512130003497330,	-0.577471310176425280,	
+-0.577430488905674940,	-0.577389666191348350,	-0.577348842033547640,	-0.577308016432374840,	-0.577267189387931980,	-0.577226360900320310,	-0.577185530969643650,	-0.577144699596003010,	
+-0.577103866779500760,	-0.577063032520238720,	-0.577022196818319230,	-0.576981359673844120,	-0.576940521086915630,	-0.576899681057635230,	-0.576858839586106180,	-0.576817996672430170,	
+-0.576777152316709120,	-0.576736306519045170,	-0.576695459279540470,	-0.576654610598297150,	-0.576613760475416570,	-0.576572908911002320,	-0.576532055905155770,	-0.576491201457979050,	
+-0.576450345569574310,	-0.576409488240043790,	-0.576368629469489520,	-0.576327769258013660,	-0.576286907605717660,	-0.576246044512705110,	-0.576205179979077500,	-0.576164314004936950,	
+-0.576123446590385500,	-0.576082577735525510,	-0.576041707440459130,	-0.576000835705287710,	-0.575959962530114830,	-0.575919087915042090,	-0.575878211860171740,	-0.575837334365605800,	
+-0.575796455431446530,	-0.575755575057796070,	-0.575714693244756660,	-0.575673809992430560,	-0.575632925300919250,	-0.575592039170326310,	-0.575551151600753210,	-0.575510262592302310,	
+-0.575469372145075760,	-0.575428480259175810,	-0.575387586934703820,	-0.575346692171763710,	-0.575305795970456830,	-0.575264898330885450,	-0.575223999253151820,	-0.575183098737358180,	
+-0.575142196783606790,	-0.575101293391999890,	-0.575060388562639860,	-0.575019482295628050,	-0.574978574591068270,	-0.574937665449062000,	-0.574896754869711700,	-0.574855842853119410,	
+-0.574814929399387500,	-0.574774014508618310,	-0.574733098180913340,	-0.574692180416376370,	-0.574651261215109010,	-0.574610340577213390,	-0.574569418502791970,	-0.574528494991947030,	
+-0.574487570044780790,	-0.574446643661395640,	-0.574405715841893150,	-0.574364786586377130,	-0.574323855894949160,	-0.574282923767711510,	-0.574241990204766520,	-0.574201055206216670,	
+-0.574160118772164110,	-0.574119180902710410,	-0.574078241597959620,	-0.574037300858013190,	-0.573996358682973610,	-0.573955415072943010,	-0.573914470028023870,	-0.573873523548318660,	
+-0.573832575633929530,	-0.573791626284958280,	-0.573750675501508710,	-0.573709723283682420,	-0.573668769631581870,	-0.573627814545309310,	-0.573586858024967340,	-0.573545900070658090,	
+-0.573504940682483480,	-0.573463979860547200,	-0.573423017604950850,	-0.573382053915797110,	-0.573341088793188240,	-0.573300122237226590,	-0.573259154248014660,	-0.573218184825654790,	
+-0.573177213970249460,	-0.573136241681900470,	-0.573095267960711530,	-0.573054292806784440,	-0.573013316220221560,	-0.572972338201125480,	-0.572931358749598550,	-0.572890377865742370,	
+-0.572849395549661080,	-0.572808411801456250,	-0.572767426621230480,	-0.572726440009086120,	-0.572685451965125550,	-0.572644462489451440,	-0.572603471582166180,	-0.572562479243372220,	
+-0.572521485473171390,	-0.572480490271667470,	-0.572439493638962400,	-0.572398495575158540,	-0.572357496080358460,	-0.572316495154664650,	-0.572275492798179690,	-0.572234489011005150,	
+-0.572193483793245190,	-0.572152477145001500,	-0.572111469066376550,	-0.572070459557472930,	-0.572029448618393220,	-0.571988436249239900,	-0.571947422450115540,	-0.571906407221121740,	
+-0.571865390562362740,	-0.571824372473940250,	-0.571783352955956840,	-0.571742332008515100,	-0.571701309631717500,	-0.571660285825666530,	-0.571619260590464200,	-0.571578233926214430,	
+-0.571537205833019150,	-0.571496176310980710,	-0.571455145360201920,	-0.571414112980785260,	-0.571373079172833310,	-0.571332043936448650,	-0.571291007271733210,	-0.571249969178790900,	
+-0.571208929657723740,	-0.571167888708634220,	-0.571126846331625030,	-0.571085802526798640,	-0.571044757294257740,	-0.571003710634104270,	-0.570962662546442230,	-0.570921613031373560,	
+-0.570880562089000840,	-0.570839509719426760,	-0.570798455922753800,	-0.570757400699084760,	-0.570716344048522230,	-0.570675285971168900,	-0.570634226467126470,	-0.570593165536499300,	
+-0.570552103179389200,	-0.570511039395898870,	-0.570469974186130990,	-0.570428907550188050,	-0.570387839488172180,	-0.570346770000187410,	-0.570305699086335770,	-0.570264626746719850,	
+-0.570223552981442340,	-0.570182477790605930,	-0.570141401174313440,	-0.570100323132667340,	-0.570059243665770430,	-0.570018162773724750,	-0.569977080456634310,	-0.569935996714601270,	
+-0.569894911547728200,	-0.569853824956117800,	-0.569812736939872890,	-0.569771647499096150,	-0.569730556633889500,	-0.569689464344357190,	-0.569648370630601250,	-0.569607275492724390,	
+-0.569566178930829390,	-0.569525080945018860,	-0.569483981535395700,	-0.569442880702062500,	-0.569401778445121410,	-0.569360674764676670,	-0.569319569660830190,	-0.569278463133684800,	
+-0.569237355183343170,	-0.569196245809908240,	-0.569155135013482690,	-0.569114022794168450,	-0.569072909152070090,	-0.569031794087289320,	-0.568990677599929050,	-0.568949559690092200,	
+-0.568908440357881350,	-0.568867319603399420,	-0.568826197426749220,	-0.568785073828032780,	-0.568743948807354350,	-0.568702822364816170,	-0.568661694500520840,	-0.568620565214571270,	
+-0.568579434507070270,	-0.568538302378120750,	-0.568497168827824640,	-0.568456033856286510,	-0.568414897463608180,	-0.568373759649892560,	-0.568332620415242570,	-0.568291479759761130,	
+-0.568250337683550930,	-0.568209194186714890,	-0.568168049269355820,	-0.568126902931575970,	-0.568085755173479480,	-0.568044605995168710,	-0.568003455396746350,	-0.567962303378315440,	
+-0.567921149939978780,	-0.567879995081838400,	-0.567838838803998770,	-0.567797681106562150,	-0.567756521989631220,	-0.567715361453309030,	-0.567674199497698480,	-0.567633036122902390,	
+-0.567591871329023780,	-0.567550705116165450,	-0.567509537484429560,	-0.567468368433920570,	-0.567427197964740730,	-0.567386026076992840,	-0.567344852770779950,	-0.567303678046204850,	
+-0.567262501903370580,	-0.567221324342379370,	-0.567180145363335500,	-0.567138964966341310,	-0.567097783151499720,	-0.567056599918913660,	-0.567015415268686040,	-0.566974229200920000,	
+-0.566933041715718340,	-0.566891852813183330,	-0.566850662493419420,	-0.566809470756528770,	-0.566768277602614610,	-0.566727083031779650,	-0.566685887044127030,	-0.566644689639759670,	
+-0.566603490818779810,	-0.566562290581292040,	-0.566521088927398500,	-0.566479885857202210,	-0.566438681370806220,	-0.566397475468313650,	-0.566356268149827200,	-0.566315059415450240,	
+-0.566273849265284790,	-0.566232637699435440,	-0.566191424718004540,	-0.566150210321095140,	-0.566108994508810140,	-0.566067777281252680,	-0.566026558638525800,	-0.565985338580731740,	
+-0.565944117107975100,	-0.565902894220358110,	-0.565861669917983920,	-0.565820444200955560,	-0.565779217069376060,	-0.565737988523348560,	-0.565696758562976080,	-0.565655527188361760,	
+-0.565614294399607750,	-0.565573060196818860,	-0.565531824580097320,	-0.565490587549546180,	-0.565449349105268560,	-0.565408109247367510,	-0.565366867975945600,	-0.565325625291107080,	
+-0.565284381192954650,	-0.565243135681591240,	-0.565201888757119960,	-0.565160640419643870,	-0.565119390669266310,	-0.565078139506090200,	-0.565036886930218810,	-0.564995632941754480,	
+-0.564954377540801690,	-0.564913120727463030,	-0.564871862501841520,	-0.564830602864040410,	-0.564789341814162740,	-0.564748079352311860,	-0.564706815478589920,	-0.564665550193101720,	
+-0.564624283495949510,	-0.564583015387236760,	-0.564541745867066400,	-0.564500474935541670,	-0.564459202592765830,	-0.564417928838841900,	-0.564376653673872460,	-0.564335377097962110,	
+-0.564294099111213310,	-0.564252819713729200,	-0.564211538905613150,	-0.564170256686968190,	-0.564128973057897550,	-0.564087688018503840,	-0.564046401568891630,	-0.564005113709163290,	
+-0.563963824439422280,	-0.563922533759771750,	-0.563881241670314840,	-0.563839948171154790,	-0.563798653262394870,	-0.563757356944137640,	-0.563716059216487710,	-0.563674760079547640,	
+-0.563633459533420700,	-0.563592157578210020,	-0.563550854214019070,	-0.563509549440950890,	-0.563468243259108160,	-0.563426935668595470,	-0.563385626669515530,	-0.563344316261971460,	
+-0.563303004446066620,	-0.563261691221904390,	-0.563220376589587790,	-0.563179060549220290,	-0.563137743100905140,	-0.563096424244744820,	-0.563055103980844350,	-0.563013782309305990,	
+-0.562972459230233200,	-0.562931134743729240,	-0.562889808849897480,	-0.562848481548840480,	-0.562807152840662960,	-0.562765822725467600,	-0.562724491203357660,	-0.562683158274436490,	
+-0.562641823938807460,	-0.562600488196573820,	-0.562559151047838930,	-0.562517812492706270,	-0.562476472531278300,	-0.562435131163659840,	-0.562393788389953580,	-0.562352444210262870,	
+-0.562311098624690970,	-0.562269751633341470,	-0.562228403236316730,	-0.562187053433721770,	-0.562145702225659180,	-0.562104349612232320,	-0.562062995593544560,	-0.562021640169699350,	
+-0.561980283340800080,	-0.561938925106949980,	-0.561897565468252650,	-0.561856204424810660,	-0.561814841976728930,	-0.561773478124110050,	-0.561732112867057490,	-0.561690746205674610,	
+-0.561649378140064880,	-0.561608008670331780,	-0.561566637796577890,	-0.561525265518908130,	-0.561483891837425200,	-0.561442516752232450,	-0.561401140263433570,	-0.561359762371131720,	
+-0.561318383075430470,	-0.561277002376433300,	-0.561235620274242900,	-0.561194236768964180,	-0.561152851860699850,	-0.561111465549553490,	-0.561070077835628340,	-0.561028688719028000,	
+-0.560987298199856040,	-0.560945906278214950,	-0.560904512954209960,	-0.560863118227943660,	-0.560821722099519530,	-0.560780324569041140,	-0.560738925636611870,	-0.560697525302335300,	
+-0.560656123566315000,	-0.560614720428654350,	-0.560573315889456140,	-0.560531909948825290,	-0.560490502606864840,	-0.560449093863678030,	-0.560407683719368550,	-0.560366272174039780,	
+-0.560324859227794620,	-0.560283444880738110,	-0.560242029132972940,	-0.560200611984602690,	-0.560159193435730840,	-0.560117773486461080,	-0.560076352136896990,	-0.560034929387141830,	
+-0.559993505237299520,	-0.559952079687472630,	-0.559910652737766190,	-0.559869224388283240,	-0.559827794639127240,	-0.559786363490401670,	-0.559744930942210230,	-0.559703496994655710,	
+-0.559662061647843270,	-0.559620624901875590,	-0.559579186756856360,	-0.559537747212889180,	-0.559496306270077630,	-0.559454863928525280,	-0.559413420188335730,	-0.559371975049612780,	
+-0.559330528512459010,	-0.559289080576979680,	-0.559247631243277700,	-0.559206180511456650,	-0.559164728381620120,	-0.559123274853871810,	-0.559081819928315290,	-0.559040363605053490,	
+-0.558998905884191430,	-0.558957446765832260,	-0.558915986250079320,	-0.558874524337036550,	-0.558833061026807410,	-0.558791596319495600,	-0.558750130215204810,	-0.558708662714037960,	
+-0.558667193816100190,	-0.558625723521494420,	-0.558584251830324340,	-0.558542778742693650,	-0.558501304258706030,	-0.558459828378465080,	-0.558418351102073940,	-0.558376872429637520,	
+-0.558335392361259060,	-0.558293910897042060,	-0.558252428037090190,	-0.558210943781507370,	-0.558169458130397200,	-0.558127971083863360,	-0.558086482642009550,	-0.558044992804938800,	
+-0.558003501572756360,	-0.557962008945565020,	-0.557920514923468840,	-0.557879019506571260,	-0.557837522694976220,	-0.557796024488786510,	-0.557754524888107620,	-0.557713023893042340,	
+-0.557671521503694480,	-0.557630017720167850,	-0.557588512542566250,	-0.557547005970993270,	-0.557505498005552820,	-0.557463988646348610,	-0.557422477893483650,	-0.557380965747063310,	
+-0.557339452207190500,	-0.557297937273969040,	-0.557256420947502830,	-0.557214903227895460,	-0.557173384115250190,	-0.557131863609672150,	-0.557090341711264480,	-0.557048818420130880,	
+-0.557007293736375250,	-0.556965767660101420,	-0.556924240191413180,	-0.556882711330414340,	-0.556841181077208700,	-0.556799649431899410,	-0.556758116394591720,	-0.556716581965388760,	
+-0.556675046144394340,	-0.556633508931712260,	-0.556591970327446450,	-0.556550430331700600,	-0.556508888944578060,	-0.556467346166183980,	-0.556425801996621620,	-0.556384256435994650,	
+-0.556342709484407120,	-0.556301161141962710,	-0.556259611408765450,	-0.556218060284919270,	-0.556176507770527070,	-0.556134953865694340,	-0.556093398570524310,	-0.556051841885120690,	
+-0.556010283809587610,	-0.555968724344028660,	-0.555927163488547980,	-0.555885601243248590,	-0.555844037608235970,	-0.555802472583613370,	-0.555760906169484480,	-0.555719338365953330,	
+-0.555677769173123840,	-0.555636198591099920,	-0.555594626619985490,	-0.555553053259883800,	-0.555511478510900100,	-0.555469902373137870,	-0.555428324846700790,	-0.555386745931692900,	
+-0.555345165628218230,	-0.555303583936380570,	-0.555262000856283190,	-0.555220416388031550,	-0.555178830531728900,	-0.555137243287479150,	-0.555095654655386350,	-0.555054064635554400,	
+-0.555012473228087220,	-0.554970880433088950,	-0.554929286250663400,	-0.554887690680913930,	-0.554846093723946000,	-0.554804495379862760,	-0.554762895648768350,	-0.554721294530766680,	
+-0.554679692025961790,	-0.554638088134456810,	-0.554596482856357540,	-0.554554876191766910,	-0.554513268140789160,	-0.554471658703528210,	-0.554430047880088210,	-0.554388435670572940,	
+-0.554346822075086680,	-0.554305207093733320,	-0.554263590726616240,	-0.554221972973840900,	-0.554180353835510680,	-0.554138733311729580,	-0.554097111402601540,	-0.554055488108230800,	
+-0.554013863428721390,	-0.553972237364176450,	-0.553930609914701780,	-0.553888981080400520,	-0.553847350861376820,	-0.553805719257734700,	-0.553764086269578290,	-0.553722451897011750,	
+-0.553680816140138980,	-0.553639178999063450,	-0.553597540473890760,	-0.553555900564724260,	-0.553514259271667860,	-0.553472616594825940,	-0.553430972534302400,	-0.553389327090201500,	
+-0.553347680262626480,	-0.553306032051683050,	-0.553264382457474560,	-0.553222731480105030,	-0.553181079119678730,	-0.553139425376299680,	-0.553097770250072120,	-0.553056113741100090,	
+-0.553014455849487160,	-0.552972796575338710,	-0.552931135918758310,	-0.552889473879849990,	-0.552847810458718110,	-0.552806145655466600,	-0.552764479470199800,	-0.552722811903020970,	
+-0.552681142954035920,	-0.552639472623348000,	-0.552597800911061480,	-0.552556127817280360,	-0.552514453342108910,	-0.552472777485651380,	-0.552431100248011900,	-0.552389421629294610,	
+-0.552347741629603100,	-0.552306060249042940,	-0.552264377487717620,	-0.552222693345731370,	-0.552181007823188460,	-0.552139320920192910,	-0.552097632636848410,	-0.552055942973260550,	
+-0.552014251929532800,	-0.551972559505769400,	-0.551930865702074610,	-0.551889170518552690,	-0.551847473955307870,	-0.551805776012444290,	-0.551764076690066330,	-0.551722375988277450,	
+-0.551680673907183340,	-0.551638970446887480,	-0.551597265607494340,	-0.551555559389107940,	-0.551513851791832650,	-0.551472142815772730,	-0.551430432461031740,	-0.551388720727715280,	
+-0.551347007615927140,	-0.551305293125771480,	-0.551263577257352640,	-0.551221860010774780,	-0.551180141386142240,	-0.551138421383559400,	-0.551096700003129710,	-0.551054977244959110,	
+-0.551013253109151060,	-0.550971527595809810,	-0.550929800705039720,	-0.550888072436945150,	-0.550846342791630470,	-0.550804611769199150,	-0.550762879369756990,	-0.550721145593407680,	
+-0.550679410440255590,	-0.550637673910404860,	-0.550595936003959950,	-0.550554196721025240,	-0.550512456061704960,	-0.550470714026102930,	-0.550428970614324720,	-0.550387225826474150,	
+-0.550345479662655570,	-0.550303732122973230,	-0.550261983207531610,	-0.550220232916434960,	-0.550178481249786970,	-0.550136728207693660,	-0.550094973790258400,	-0.550053217997585660,	
+-0.550011460829780030,	-0.549969702286945640,	-0.549927942369187070,	-0.549886181076608580,	-0.549844418409314640,	-0.549802654367408940,	-0.549760888950997400,	-0.549719122160183590,	
+-0.549677353995071890,	-0.549635584455766880,	-0.549593813542372910,	-0.549552041254993680,	-0.549510267593735110,	-0.549468492558700780,	-0.549426716149995280,	-0.549384938367722950,	
+-0.549343159211988400,	-0.549301378682895750,	-0.549259596780549810,	-0.549217813505054830,	-0.549176028856514620,	-0.549134242835034980,	-0.549092455440719830,	-0.549050666673673420,	
+-0.549008876534000430,	-0.548967085021805250,	-0.548925292137192320,	-0.548883497880265470,	-0.548841702251130600,	-0.548799905249891530,	-0.548758106876652610,	-0.548716307131518420,	
+-0.548674506014593550,	-0.548632703525982370,	-0.548590899665789330,	-0.548549094434118480,	-0.548507287831075500,	-0.548465479856764300,	-0.548423670511289480,	-0.548381859794755400,	
+-0.548340047707266740,	-0.548298234248927980,	-0.548256419419842820,	-0.548214603220117390,	-0.548172785649855500,	-0.548130966709161620,	-0.548089146398140210,	-0.548047324716896100,	
+-0.548005501665533520,	-0.547963677244157290,	-0.547921851452871090,	-0.547880024291781060,	-0.547838195760990910,	-0.547796365860605320,	-0.547754534590728760,	-0.547712701951465930,	
+-0.547670867942921300,	-0.547629032565198680,	-0.547587195818404320,	-0.547545357702642010,	-0.547503518218016240,	-0.547461677364631690,	-0.547419835142592960,	-0.547377991552004620,	
+-0.547336146592971250,	-0.547294300265597560,	-0.547252452569987450,	-0.547210603506246840,	-0.547168753074479760,	-0.547126901274790800,	-0.547085048107284640,	-0.547043193572065770,	
+-0.547001337669238200,	-0.546959480398908070,	-0.546917621761179200,	-0.546875761756156260,	-0.546833900383943970,	-0.546792037644646900,	-0.546750173538369740,	-0.546708308065217200,	
+-0.546666441225293840,	-0.546624573018703600,	-0.546582703445552710,	-0.546540832505945100,	-0.546498960199985340,	-0.546457086527778250,	-0.546415211489428290,	-0.546373335085040490,	
+-0.546331457314718550,	-0.546289578178568600,	-0.546247697676694790,	-0.546205815809201800,	-0.546163932576194220,	-0.546122047977776750,	-0.546080162014054180,	-0.546038274685131330,	
+-0.545996385991111890,	-0.545954495932102320,	-0.545912604508206440,	-0.545870711719529170,	-0.545828817566174960,	-0.545786922048248860,	-0.545745025165855320,	-0.545703126919098610,	
+-0.545661227308084750,	-0.545619326332917760,	-0.545577423993702570,	-0.545535520290543750,	-0.545493615223546220,	-0.545451708792814570,	-0.545409800998453600,	-0.545367891840567440,	
+-0.545325981319262350,	-0.545284069434642250,	-0.545242156186811930,	-0.545200241575876320,	-0.545158325601940110,	-0.545116408265107990,	-0.545074489565484210,	-0.545032569503174800,	
+-0.544990648078284120,	-0.544948725290916760,	-0.544906801141177620,	-0.544864875629171410,	-0.544822948755003030,	-0.544781020518777300,	-0.544739090920599020,	-0.544697159960572220,	
+-0.544655227638803360,	-0.544613293955396370,	-0.544571358910456160,	-0.544529422504087530,	-0.544487484736395410,	-0.544445545607483710,	-0.544403605117459000,	-0.544361663266425210,	
+-0.544319720054487370,	-0.544277775481750160,	-0.544235829548318510,	-0.544193882254297210,	-0.544151933599791300,	-0.544109983584905480,	-0.544068032209744090,	-0.544026079474413280,	
+-0.543984125379017300,	-0.543942169923660960,	-0.543900213108449160,	-0.543858254933486940,	-0.543816295398878990,	-0.543774334504729670,	-0.543732372251145120,	-0.543690408638229710,	
+-0.543648443666088330,	-0.543606477334825700,	-0.543564509644546940,	-0.543522540595356980,	-0.543480570187360620,	-0.543438598420662110,	-0.543396625295367810,	-0.543354650811581960,	
+-0.543312674969409490,	-0.543270697768955310,	-0.543228719210324450,	-0.543186739293621710,	-0.543144758018951460,	-0.543102775386419930,	-0.543060791396131610,	-0.543018806048191190,	
+-0.542976819342703810,	-0.542934831279774380,	-0.542892841859507920,	-0.542850851082009370,	-0.542808858947382840,	-0.542766865455734940,	-0.542724870607169900,	-0.542682874401792640,	
+-0.542640876839708300,	-0.542598877921021680,	-0.542556877645837930,	-0.542514876014261180,	-0.542472873026398020,	-0.542430868682352570,	-0.542388862982230100,	-0.542346855926135410,	
+-0.542304847514173630,	-0.542262837746449570,	-0.542220826623068590,	-0.542178814144135490,	-0.542136800309754640,	-0.542094785120032400,	-0.542052768575073340,	-0.542010750674982280,	
+-0.541968731419864460,	-0.541926710809824690,	-0.541884688844967430,	-0.541842665525399170,	-0.541800640851224370,	-0.541758614822547830,	-0.541716587439474820,	-0.541674558702110340,	
+-0.541632528610559440,	-0.541590497164927130,	-0.541548464365318670,	-0.541506430211838310,	-0.541464394704592620,	-0.541422357843685980,	-0.541380319629223390,	-0.541338280061310020,	
+-0.541296239140050980,	-0.541254196865551320,	-0.541212153237915380,	-0.541170108257249870,	-0.541128061923659030,	-0.541086014237248000,	-0.541043965198122030,	-0.541001914806386150,	
+-0.540959863062145390,	-0.540917809965504980,	-0.540875755516569410,	-0.540833699715445150,	-0.540791642562236550,	-0.540749584057048980,	-0.540707524199987350,	-0.540665462991156920,	
+-0.540623400430662930,	-0.540581336518609620,	-0.540539271255103700,	-0.540497204640249640,	-0.540455136674152570,	-0.540413067356917630,	-0.540370996688649960,	-0.540328924669454920,	
+-0.540286851299437540,	-0.540244776578702180,	-0.540202700507355750,	-0.540160623085502500,	-0.540118544313247790,	-0.540076464190696660,	-0.540034382717954340,	-0.539992299895126090,	
+-0.539950215722316270,	-0.539908130199631800,	-0.539866043327176910,	-0.539823955105056870,	-0.539781865533377040,	-0.539739774612242540,	-0.539697682341758520,	-0.539655588722030340,	
+-0.539613493753163250,	-0.539571397435261610,	-0.539529299768432220,	-0.539487200752779560,	-0.539445100388408980,	-0.539402998675425630,	-0.539360895613934740,	-0.539318791204040910,	
+-0.539276685445850830,	-0.539234578339468970,	-0.539192469885000800,	-0.539150360082551350,	-0.539108248932226090,	-0.539066136434130040,	-0.539024022588368790,	-0.538981907395047480,	
+-0.538939790854270570,	-0.538897672966144990,	-0.538855553730775320,	-0.538813433148266570,	-0.538771311218724350,	-0.538729187942253880,	-0.538687063318959660,	-0.538644937348948470,	
+-0.538602810032325020,	-0.538560681369194550,	-0.538518551359662310,	-0.538476420003833780,	-0.538434287301814090,	-0.538392153253708710,	-0.538350017859623000,	-0.538307881119661440,	
+-0.538265743033931040,	-0.538223603602536180,	-0.538181462825582320,	-0.538139320703174830,	-0.538097177235418940,	-0.538055032422420250,	-0.538012886264283120,	-0.537970738761114560,	
+-0.537928589913019170,	-0.537886439720102310,	-0.537844288182469430,	-0.537802135300225690,	-0.537759981073476670,	-0.537717825502327720,	-0.537675668586883430,	-0.537633510327250710,	
+-0.537591350723534260,	-0.537549189775839320,	-0.537507027484271480,	-0.537464863848936100,	-0.537422698869938540,	-0.537380532547383490,	-0.537338364881377870,	-0.537296195872026260,	
+-0.537254025519434240,	-0.537211853823707170,	-0.537169680784950420,	-0.537127506403269450,	-0.537085330678769730,	-0.537043153611556630,	-0.537000975201735060,	-0.536958795449411610,	
+-0.536916614354691290,	-0.536874431917679470,	-0.536832248138481520,	-0.536790063017202890,	-0.536747876553948400,	-0.536705688748824960,	-0.536663499601937270,	-0.536621309113390900,	
+-0.536579117283291220,	-0.536536924111743810,	-0.536494729598854030,	-0.536452533744727460,	-0.536410336549469460,	-0.536368138013184950,	-0.536325938135980840,	-0.536283736917961830,	
+-0.536241534359233610,	-0.536199330459901420,	-0.536157125220070970,	-0.536114918639846950,	-0.536072710719336380,	-0.536030501458643950,	-0.535988290857875360,	-0.535946078917136080,	
+-0.535903865636531470,	-0.535861651016167340,	-0.535819435056149040,	-0.535777217756582050,	-0.535734999117571390,	-0.535692779139223970,	-0.535650557821644500,	-0.535608335164938780,	
+-0.535566111169212160,	-0.535523885834570220,	-0.535481659161118560,	-0.535439431148962090,	-0.535397201798207710,	-0.535354971108960350,	-0.535312739081325590,	-0.535270505715408910,	
+-0.535228271011316090,	-0.535186034969152510,	-0.535143797589023860,	-0.535101558871034940,	-0.535059318815292890,	-0.535017077421902520,	-0.534974834690969510,	-0.534932590622599350,	
+-0.534890345216897820,	-0.534848098473970300,	-0.534805850393921920,	-0.534763600976859490,	-0.534721350222888250,	-0.534679098132113450,	-0.534636844704641010,	-0.534594589940576510,	
+-0.534552333840025430,	-0.534510076403093560,	-0.534467817629886490,	-0.534425557520509130,	-0.534383296075068630,	-0.534341033293669890,	-0.534298769176418500,	-0.534256503723420260,	
+-0.534214236934780760,	-0.534171968810604910,	-0.534129699350999960,	-0.534087428556070610,	-0.534045156425922760,	-0.534002882960662120,	-0.533960608160394150,	-0.533918332025224650,	
+-0.533876054555259440,	-0.533833775750603980,	-0.533791495611363410,	-0.533749214137644760,	-0.533706931329553160,	-0.533664647187194200,	-0.533622361710673570,	-0.533580074900097070,	
+-0.533537786755569620,	-0.533495497277198470,	-0.533453206465088650,	-0.533410914319345730,	-0.533368620840075520,	-0.533326326027383830,	-0.533284029881376240,	-0.533241732402158660,	
+-0.533199433589836680,	-0.533157133444515320,	-0.533114831966301940,	-0.533072529155301570,	-0.533030225011619780,	-0.532987919535362400,	-0.532945612726635320,	-0.532903304585544140,	
+-0.532860995112193980,	-0.532818684306691990,	-0.532776372169143420,	-0.532734058699653850,	-0.532691743898329070,	-0.532649427765275020,	-0.532607110300597380,	-0.532564791504402060,	
+-0.532522471376793870,	-0.532480149917880290,	-0.532437827127766330,	-0.532395503006557910,	-0.532353177554360620,	-0.532310850771280370,	-0.532268522657423080,	-0.532226193212893660,	
+-0.532183862437799580,	-0.532141530332245760,	-0.532099196896338110,	-0.532056862130182550,	-0.532014526033884770,	-0.531972188607550690,	-0.531929849851286220,	-0.531887509765197050,	
+-0.531845168349388330,	-0.531802825603967520,	-0.531760481529039540,	-0.531718136124710420,	-0.531675789391085950,	-0.531633441328272060,	-0.531591091936373770,	-0.531548741215498440,	
+-0.531506389165751330,	-0.531464035787238220,	-0.531421681080065040,	-0.531379325044337710,	-0.531336967680162030,	-0.531294608987643910,	-0.531252248966889270,	-0.531209887618003250,	
+-0.531167524941093210,	-0.531125160936264380,	-0.531082795603622700,	-0.531040428943274080,	-0.530998060955324310,	-0.530955691639878660,	-0.530913320997044470,	-0.530870949026927110,	
+-0.530828575729632270,	-0.530786201105265980,	-0.530743825153934260,	-0.530701447875742920,	-0.530659069270797980,	-0.530616689339205360,	-0.530574308081070310,	-0.530531925496500190,	
+-0.530489541585600240,	-0.530447156348476500,	-0.530404769785234880,	-0.530362381895981280,	-0.530319992680821750,	-0.530277602139861410,	-0.530235210273207970,	-0.530192817080966330,	
+-0.530150422563242740,	-0.530108026720143120,	-0.530065629551773390,	-0.530023231058239670,	-0.529980831239647790,	-0.529938430096103090,	-0.529896027627713040,	-0.529853623834583010,	
+-0.529811218716818800,	-0.529768812274526660,	-0.529726404507812390,	-0.529683995416782130,	-0.529641585001541130,	-0.529599173262196960,	-0.529556760198854890,	-0.529514345811620820,	
+-0.529471930100601010,	-0.529429513065901250,	-0.529387094707627790,	-0.529344675025886560,	-0.529302254020782900,	-0.529259831692424300,	-0.529217408040916220,	-0.529174983066364570,	
+-0.529132556768875490,	-0.529090129148554910,	-0.529047700205509170,	-0.529005269939843310,	-0.528962838351665020,	-0.528920405441079770,	-0.528877971208193350,	-0.528835535653112140,	
+-0.528793098775941940,	-0.528750660576789100,	-0.528708221055759650,	-0.528665780212959510,	-0.528623338048494260,	-0.528580894562471370,	-0.528538449754996310,	-0.528496003626175100,	
+-0.528453556176113780,	-0.528411107404918700,	-0.528368657312695110,	-0.528326205899550480,	-0.528283753165590510,	-0.528241299110920990,	-0.528198843735648400,	-0.528156387039878550,	
+-0.528113929023717790,	-0.528071469687272250,	-0.528029009030647980,	-0.527986547053950430,	-0.527944083757287300,	-0.527901619140763940,	-0.527859153204486510,	-0.527816685948561240,	
+-0.527774217373094270,	-0.527731747478191740,	-0.527689276263959120,	-0.527646803730503990,	-0.527604329877931930,	-0.527561854706348980,	-0.527519378215861370,	-0.527476900406575360,	
+-0.527434421278597080,	-0.527391940832032780,	-0.527349459066987820,	-0.527306975983570010,	-0.527264491581884820,	-0.527222005862038270,	-0.527179518824136830,	-0.527137030468286530,	
+-0.527094540794593610,	-0.527052049803163670,	-0.527009557494104270,	-0.526967063867521120,	-0.526924568923520130,	-0.526882072662207880,	-0.526839575083690390,	-0.526797076188073920,	
+-0.526754575975464820,	-0.526712074445968460,	-0.526669571599692740,	-0.526627067436743030,	-0.526584561957225690,	-0.526542055161246860,	-0.526499547048913000,	-0.526457037620330250,	
+-0.526414526875604080,	-0.526372014814842410,	-0.526329501438150720,	-0.526286986745635230,	-0.526244470737402330,	-0.526201953413558240,	-0.526159434774209230,	-0.526116914819461660,	
+-0.526074393549421760,	-0.526031870964195240,	-0.525989347063889670,	-0.525946821848610750,	-0.525904295318464830,	-0.525861767473558170,	-0.525819238313997020,	-0.525776707839887060,	
+-0.525734176051336100,	-0.525691642948449720,	-0.525649108531334170,	-0.525606572800095930,	-0.525564035754841230,	-0.525521497395676440,	-0.525478957722707810,	-0.525436416736041910,	
+-0.525393874435784110,	-0.525351330822042440,	-0.525308785894922470,	-0.525266239654530560,	-0.525223692100972970,	-0.525181143234356160,	-0.525138593054786500,	-0.525096041562369660,	
+-0.525053488757213360,	-0.525010934639423500,	-0.524968379209106110,	-0.524925822466367880,	-0.524883264411315160,	-0.524840705044054110,	-0.524798144364691410,	-0.524755582373332640,	
+-0.524713019070085610,	-0.524670454455056000,	-0.524627888528350290,	-0.524585321290074850,	-0.524542752740336130,	-0.524500182879240500,	-0.524457611706893640,	-0.524415039223403490,	
+-0.524372465428875830,	-0.524329890323416930,	-0.524287313907133350,	-0.524244736180131450,	-0.524202157142517720,	-0.524159576794398620,	-0.524116995135879840,	-0.524074412167069290,	
+-0.524031827888072680,	-0.523989242298996570,	-0.523946655399947340,	-0.523904067191031440,	-0.523861477672355360,	-0.523818886844024890,	-0.523776294706147840,	-0.523733701258830120,	
+-0.523691106502178210,	-0.523648510436298450,	-0.523605913061297560,	-0.523563314377281760,	-0.523520714384357650,	-0.523478113082631810,	-0.523435510472209930,	-0.523392906553200030,	
+-0.523350301325707810,	-0.523307694789839850,	-0.523265086945702730,	-0.523222477793402810,	-0.523179867333046000,	-0.523137255564740220,	-0.523094642488591390,	-0.523052028104705860,	
+-0.523009412413190320,	-0.522966795414151250,	-0.522924177107695230,	-0.522881557493928620,	-0.522838936572958210,	-0.522796314344889710,	-0.522753690809831140,	-0.522711065967888410,	
+-0.522668439819168000,	-0.522625812363776480,	-0.522583183601820430,	-0.522540553533406340,	-0.522497922158640220,	-0.522455289477629980,	-0.522412655490481550,	-0.522370020197301500,	
+-0.522327383598196420,	-0.522284745693272770,	-0.522242106482637360,	-0.522199465966396660,	-0.522156824144656470,	-0.522114181017525050,	-0.522071536585108190,	-0.522028890847512470,	
+-0.521986243804844490,	-0.521943595457210920,	-0.521900945804718350,	-0.521858294847472700,	-0.521815642585582110,	-0.521772989019152370,	-0.521730334148290060,	-0.521687677973102000,	
+-0.521645020493694770,	-0.521602361710174930,	-0.521559701622649200,	-0.521517040231223470,	-0.521474377536005900,	-0.521431713537102380,	-0.521389048234619620,	-0.521346381628664200,	
+-0.521303713719342810,	-0.521261044506762140,	-0.521218373991028110,	-0.521175702172248960,	-0.521133029050530490,	-0.521090354625979410,	-0.521047678898702520,	-0.521005001868806380,	
+-0.520962323536397820,	-0.520919643901583410,	-0.520876962964469840,	-0.520834280725163130,	-0.520791597183771550,	-0.520748912340400880,	-0.520706226195157940,	-0.520663538748149520,	
+-0.520620849999482100,	-0.520578159949261930,	-0.520535468597597030,	-0.520492775944593530,	-0.520450081990358140,	-0.520407386734997420,	-0.520364690178618310,	-0.520321992321327480,	
+-0.520279293163231630,	-0.520236592704437560,	-0.520193890945051200,	-0.520151187885180890,	-0.520108483524932660,	-0.520065777864413210,	-0.520023070903729350,	-0.519980362642987750,	
+-0.519937653082295230,	-0.519894942221757810,	-0.519852230061483840,	-0.519809516601579370,	-0.519766801842150960,	-0.519724085783305640,	-0.519681368425150110,	-0.519638649767791060,	
+-0.519595929811335510,	-0.519553208555889270,	-0.519510486001560910,	-0.519467762148456250,	-0.519425036996682080,	-0.519382310546345430,	-0.519339582797552990,	-0.519296853750411680,	
+-0.519254123405027300,	-0.519211391761508540,	-0.519168658819961220,	-0.519125924580492230,	-0.519083189043208490,	-0.519040452208216710,	-0.518997714075623780,	-0.518954974645536640,	
+-0.518912233918061290,	-0.518869491893306110,	-0.518826748571377230,	-0.518784003952381450,	-0.518741258036425680,	-0.518698510823616730,	-0.518655762314061520,	-0.518613012507866070,	
+-0.518570261405138950,	-0.518527509005986100,	-0.518484755310514520,	-0.518442000318831140,	-0.518399244031042650,	-0.518356486447256070,	-0.518313727567578320,	-0.518270967392116200,	
+-0.518228205920975850,	-0.518185443154265850,	-0.518142679092092220,	-0.518099913734561880,	-0.518057147081781740,	-0.518014379133858730,	-0.517971609890898970,	-0.517928839353011040,	
+-0.517886067520300970,	-0.517843294392875690,	-0.517800519970842200,	-0.517757744254307430,	-0.517714967243378290,	-0.517672188938161800,	-0.517629409338764780,	-0.517586628445293460,	
+-0.517543846257856320,	-0.517501062776559610,	-0.517458278001510230,	-0.517415491932815110,	-0.517372704570581380,	-0.517329915914915730,	-0.517287125965924630,	-0.517244334723716450,	
+-0.517201542188397420,	-0.517158748360074580,	-0.517115953238854840,	-0.517073156824845230,	-0.517030359118152650,	-0.516987560118884250,	-0.516944759827146160,	-0.516901958243046970,	
+-0.516859155366692910,	-0.516816351198190920,	-0.516773545737648000,	-0.516730738985171300,	-0.516687930940867620,	-0.516645121604843550,	-0.516602310977207320,	-0.516559499058065310,	
+-0.516516685847524530,	-0.516473871345692110,	-0.516431055552674990,	-0.516388238468580170,	-0.516345420093514810,	-0.516302600427585130,	-0.516259779470899740,	-0.516216957223564870,	
+-0.516174133685687650,	-0.516131308857375020,	-0.516088482738734200,	-0.516045655329872120,	-0.516002826630895140,	-0.515959996641911830,	-0.515917165363028560,	-0.515874332794352350,	
+-0.515831498935990340,	-0.515788663788049660,	-0.515745827350637230,	-0.515702989623860190,	-0.515660150607825770,	-0.515617310302640130,	-0.515574468708412060,	-0.515531625825247810,	
+-0.515488781653254400,	-0.515445936192539090,	-0.515403089443209010,	-0.515360241405370290,	-0.515317392079131850,	-0.515274541464599940,	-0.515231689561881590,	-0.515188836371084040,	
+-0.515145981892314530,	-0.515103126125679880,	-0.515060269071287550,	-0.515017410729244450,	-0.514974551099657060,	-0.514931690182634180,	-0.514888827978281950,	-0.514845964486707720,	
+-0.514803099708018520,	-0.514760233642321600,	-0.514717366289724090,	-0.514674497650332460,	-0.514631627724255300,	-0.514588756511599080,	-0.514545884012470920,	-0.514503010226978090,	
+-0.514460135155227700,	-0.514417258797327030,	-0.514374381153383190,	-0.514331502223502660,	-0.514288622007794130,	-0.514245740506364070,	-0.514202857719319620,	-0.514159973646767910,	
+-0.514117088288816420,	-0.514074201645572160,	-0.514031313717141720,	-0.513988424503633580,	-0.513945534005154530,	-0.513902642221811590,	-0.513859749153712020,	-0.513816854800963170,	
+-0.513773959163672080,	-0.513731062241946090,	-0.513688164035891790,	-0.513645264545617760,	-0.513602363771230590,	-0.513559461712837510,	-0.513516558370545770,	-0.513473653744462630,	
+-0.513430747834695330,	-0.513387840641350460,	-0.513344932164536690,	-0.513302022404360620,	-0.513259111360929500,	-0.513216199034350670,	-0.513173285424731280,	-0.513130370532178580,	
+-0.513087454356800140,	-0.513044536898702890,	-0.513001618157993610,	-0.512958698134781120,	-0.512915776829171780,	-0.512872854241273050,	-0.512829930371192180,	-0.512787005219036420,	
+-0.512744078784912460,	-0.512701151068929000,	-0.512658222071192720,	-0.512615291791810870,	-0.512572360230890810,	-0.512529427388539790,	-0.512486493264865280,	-0.512443557859974530,	
+-0.512400621173974890,	-0.512357683206972840,	-0.512314743959077390,	-0.512271803430395130,	-0.512228861621033320,	-0.512185918531099290,	-0.512142974160700650,	-0.512100028509943630,	
+-0.512057081578937370,	-0.512014133367788450,	-0.511971183876604120,	-0.511928233105491850,	-0.511885281054558990,	-0.511842327723913030,	-0.511799373113661080,	-0.511756417223910850,	
+-0.511713460054768700,	-0.511670501606343750,	-0.511627541878742490,	-0.511584580872072480,	-0.511541618586440870,	-0.511498655021955240,	-0.511455690178723050,	-0.511412724056850900,	
+-0.511369756656447570,	-0.511326787977619880,	-0.511283818020475290,	-0.511240846785121160,	-0.511197874271664850,	-0.511154900480213840,	-0.511111925410875690,	-0.511068949063756880,	
+-0.511025971438966440,	-0.510982992536611170,	-0.510940012356798310,	-0.510897030899635450,	-0.510854048165230060,	-0.510811064153689490,	-0.510768078865120550,	-0.510725092299632140,	
+-0.510682104457330980,	-0.510639115338324620,	-0.510596124942720440,	-0.510553133270625900,	-0.510510140322148590,	-0.510467146097395850,	-0.510424150596475390,	-0.510381153819493670,	
+-0.510338155766559830,	-0.510295156437780670,	-0.510252155833263550,	-0.510209153953116170,	-0.510166150797445760,	-0.510123146366359250,	-0.510080140659965650,	-0.510037133678371780,	
+-0.509994125421684990,	-0.509951115890012850,	-0.509908105083462960,	-0.509865093002142780,	-0.509822079646159890,	-0.509779065015621870,	-0.509736049110635300,	-0.509693031931309440,	
+-0.509650013477751070,	-0.509606993750067570,	-0.509563972748366620,	-0.509520950472755700,	-0.509477926923341710,	-0.509434902100233570,	-0.509391876003538190,	-0.509348848633363160,	
+-0.509305819989816060,	-0.509262790073004350,	-0.509219758883035610,	-0.509176726420017540,	-0.509133692684057730,	-0.509090657675262850,	-0.509047621393742040,	-0.509004583839602230,	
+-0.508961545012950990,	-0.508918504913895790,	-0.508875463542544430,	-0.508832420899004380,	-0.508789376983382450,	-0.508746331795787880,	-0.508703285336327580,	-0.508660237605108920,	
+-0.508617188602239700,	-0.508574138327827610,	-0.508531086781980110,	-0.508488033964804800,	-0.508444979876408800,	-0.508401924516901030,	-0.508358867886388400,	-0.508315809984978720,	
+-0.508272750812779450,	-0.508229690369898290,	-0.508186628656442930,	-0.508143565672520280,	-0.508100501418239370,	-0.508057435893707330,	-0.508014369099031530,	-0.507971301034319980,	
+-0.507928231699680040,	-0.507885161095219640,	-0.507842089221046340,	-0.507799016077267740,	-0.507755941663990850,	-0.507712865981324920,	-0.507669789029376760,	-0.507626710808254170,	
+-0.507583631318064720,	-0.507540550558916340,	-0.507497468530915710,	-0.507454385234172190,	-0.507411300668792700,	-0.507368214834885030,	-0.507325127732556780,	-0.507282039361915630,	
+-0.507238949723069490,	-0.507195858816125940,	-0.507152766641192800,	-0.507109673198376850,	-0.507066578487787580,	-0.507023482509531890,	-0.506980385263717360,	-0.506937286750452020,	
+-0.506894186969843340,	-0.506851085921998460,	-0.506807983607026720,	-0.506764880025034950,	-0.506721775176130930,	-0.506678669060422580,	-0.506635561678017490,	-0.506592453029023560,	
+-0.506549343113548380,	-0.506506231931699970,	-0.506463119483585130,	-0.506420005769313230,	-0.506376890788991400,	-0.506333774542727320,	-0.506290657030628810,	-0.506247538252803660,	
+-0.506204418209359570,	-0.506161296900403790,	-0.506118174326045440,	-0.506075050486391790,	-0.506031925381550400,	-0.505988799011629190,	-0.505945671376736070,	-0.505902542476978630,	
+-0.505859412312465010,	-0.505816280883301990,	-0.505773148189599060,	-0.505730014231463240,	-0.505686879009002330,	-0.505643742522324360,	-0.505600604771536900,	-0.505557465756748090,	
+-0.505514325478064740,	-0.505471183935596310,	-0.505428041129449950,	-0.505384897059733550,	-0.505341751726554820,	-0.505298605130021780,	-0.505255457270242130,	-0.505212308147323990,	
+-0.505169157761374170,	-0.505126006112502360,	-0.505082853200815360,	-0.505039699026421320,	-0.504996543589428140,	-0.504953386889943400,	-0.504910228928075360,	-0.504867069703930920,	
+-0.504823909217619550,	-0.504780747469248390,	-0.504737584458925360,	-0.504694420186758470,	-0.504651254652855430,	-0.504608087857324250,	-0.504564919800272960,	-0.504521750481809250,	
+-0.504478579902040480,	-0.504435408061076010,	-0.504392234959022970,	-0.504349060595989380,	-0.504305884972083060,	-0.504262708087412140,	-0.504219529942083630,	-0.504176350536207130,	
+-0.504133169869889650,	-0.504089987943239340,	-0.504046804756363990,	-0.504003620309371620,	-0.503960434602370280,	-0.503917247635467750,	-0.503874059408772170,	-0.503830869922390680,	
+-0.503787679176432750,	-0.503744487171005730,	-0.503701293906217320,	-0.503658099382175760,	-0.503614903598988970,	-0.503571706556764860,	-0.503528508255610800,	-0.503485308695636240,	
+-0.503442107876948320,	-0.503398905799655180,	-0.503355702463864740,	-0.503312497869685130,	-0.503269292017224150,	-0.503226084906590040,	-0.503182876537889840,	-0.503139666911233350,	
+-0.503096456026727700,	-0.503053243884480810,	-0.503010030484600800,	-0.502966815827195820,	-0.502923599912373680,	-0.502880382740241830,	-0.502837164310909860,	-0.502793944624484900,	
+-0.502750723681075100,	-0.502707501480788470,	-0.502664278023733150,	-0.502621053310017050,	-0.502577827339748320,	-0.502534600113034300,	-0.502491371629984580,	-0.502448141890706410,	
+-0.502404910895307810,	-0.502361678643897020,	-0.502318445136581970,	-0.502275210373470890,	-0.502231974354670930,	-0.502188737080291770,	-0.502145498550440880,	-0.502102258765226180,	
+-0.502059017724755920,	-0.502015775429138000,	-0.501972531878480680,	-0.501929287072892080,	-0.501886041012480240,	-0.501842793697352410,	-0.501799545127618480,	-0.501756295303385720,	
+-0.501713044224762150,	-0.501669791891856010,	-0.501626538304775330,	-0.501583283463627570,	-0.501540027368522430,	-0.501496770019567160,	-0.501453511416870000,	-0.501410251560539090,	
+-0.501366990450682450,	-0.501323728087408440,	-0.501280464470824970,	-0.501237199601040410,	-0.501193933478162100,	-0.501150666102299750,	-0.501107397473560700,	-0.501064127592053210,	
+-0.501020856457885300,	-0.500977584071165330,	-0.500934310432001430,	-0.500891035540500850,	-0.500847759396773620,	-0.500804482000926860,	-0.500761203353068950,	-0.500717923453308010,	
+-0.500674642301752290,	-0.500631359898509930,	-0.500588076243689170,	-0.500544791337397490,	-0.500501505179744570,	-0.500458217770837880,	-0.500414929110785670,	-0.500371639199696070,	
+-0.500328348037677450,	-0.500285055624837940,	-0.500241761961285000,	-0.500198467047128450,	-0.500155170882475740,	-0.500111873467435130,	-0.500068574802114750,	-0.500025274886623070,	
+-0.499981973721068060,	-0.499938671305558190,	-0.499895367640200870,	-0.499852062725105850,	-0.499808756560380710,	-0.499765449146133690,	-0.499722140482473040,	-0.499678830569507020,	
+-0.499635519407343960,	-0.499592206996091300,	-0.499548893335858890,	-0.499505578426754250,	-0.499462262268885680,	-0.499418944862361490,	-0.499375626207289870,	-0.499332306303779230,	
+-0.499288985151937760,	-0.499245662751873880,	-0.499202339103695100,	-0.499159014207511190,	-0.499115688063429760,	-0.499072360671559130,	-0.499029032032007550,	-0.498985702144883470,	
+-0.498942371010294260,	-0.498899038628350000,	-0.498855704999158100,	-0.498812370122826920,	-0.498769033999464820,	-0.498725696629180150,	-0.498682358012081220,	-0.498639018148276380,	
+-0.498595677037874050,	-0.498552334680981700,	-0.498508991077709300,	-0.498465646228164470,	-0.498422300132455480,	-0.498378952790690780,	-0.498335604202978620,	-0.498292254369427530,	
+-0.498248903290144980,	-0.498205550965240940,	-0.498162197394823090,	-0.498118842578999690,	-0.498075486517879200,	-0.498032129211569970,	-0.497988770660180440,	-0.497945410863818990,	
+-0.497902049822593230,	-0.497858687536613110,	-0.497815324005986270,	-0.497771959230821180,	-0.497728593211226090,	-0.497685225947309570,	-0.497641857439179990,	-0.497598487686945030,	
+-0.497555116690714560,	-0.497511744450596320,	-0.497468370966698710,	-0.497424996239130220,	-0.497381620267999200,	-0.497338243053414120,	-0.497294864595483440,	-0.497251484894314870,	
+-0.497208103950018300,	-0.497164721762701490,	-0.497121338332472910,	-0.497077953659440910,	-0.497034567743714070,	-0.496991180585400820,	-0.496947792184608830,	-0.496904402541448190,	
+-0.496861011656026470,	-0.496817619528452270,	-0.496774226158833990,	-0.496730831547280150,	-0.496687435693899230,	-0.496644038598799690,	-0.496600640262090110,	-0.496557240683878130,	
+-0.496513839864273830,	-0.496470437803384900,	-0.496427034501319920,	-0.496383629958187360,	-0.496340224174095680,	-0.496296817149152690,	-0.496253408883468420,	-0.496209999377150660,	
+-0.496166588630307880,	-0.496123176643048610,	-0.496079763415481430,	-0.496036348947714810,	-0.495992933239857330,	-0.495949516292017560,	-0.495906098104303140,	-0.495862678676824320,	
+-0.495819258009688790,	-0.495775836103005070,	-0.495732412956881810,	-0.495688988571427510,	-0.495645562946750720,	-0.495602136082959280,	-0.495558707980163270,	-0.495515278638470450,	
+-0.495471848057989490,	-0.495428416238828830,	-0.495384983181097190,	-0.495341548884903120,	-0.495298113350355120,	-0.495254676577561060,	-0.495211238566631130,	-0.495167799317673070,	
+-0.495124358830795530,	-0.495080917106107080,	-0.495037474143716350,	-0.494994029943731930,	-0.494950584506261670,	-0.494907137831415710,	-0.494863689919301910,	-0.494820240770028840,	
+-0.494776790383705200,	-0.494733338760439620,	-0.494689885900340690,	-0.494646431803517030,	-0.494602976470076510,	-0.494559519900129310,	-0.494516062093783290,	-0.494472603051147150,	
+-0.494429142772329520,	-0.494385681257439040,	-0.494342218506584330,	-0.494298754519873260,	-0.494255289297416130,	-0.494211822839320800,	-0.494168355145695850,	-0.494124886216650070,	
+-0.494081416052292060,	-0.494037944652730490,	-0.493994472018074060,	-0.493950998148431460,	-0.493907523043910560,	-0.493864046704621640,	-0.493820569130672630,	-0.493777090322172210,	
+-0.493733610279229020,	-0.493690129001951810,	-0.493646646490448540,	-0.493603162744829400,	-0.493559677765202380,	-0.493516191551676140,	-0.493472704104359390,	-0.493429215423360930,	
+-0.493385725508789450,	-0.493342234360753580,	-0.493298741979362190,	-0.493255248364723120,	-0.493211753516946740,	-0.493168257436141010,	-0.493124760122414570,	-0.493081261575876280,	
+-0.493037761796634780,	-0.492994260784798910,	-0.492950758540476650,	-0.492907255063778190,	-0.492863750354811670,	-0.492820244413685720,	-0.492776737240509190,	-0.492733228835390780,	
+-0.492689719198439350,	-0.492646208329763580,	-0.492602696229471500,	-0.492559182897673530,	-0.492515668334477520,	-0.492472152539992380,	-0.492428635514326860,	-0.492385117257589770,	
+-0.492341597769889840,	-0.492298077051335160,	-0.492254555102036080,	-0.492211031922100580,	-0.492167507511637570,	-0.492123981870755730,	-0.492080454999563930,	-0.492036926898171020,	
+-0.491993397566685750,	-0.491949867005216260,	-0.491906335213872890,	-0.491862802192763630,	-0.491819267941997370,	-0.491775732461682990,	-0.491732195751929220,	-0.491688657812844990,	
+-0.491645118644538360,	-0.491601578247119700,	-0.491558036620697080,	-0.491514493765379370,	-0.491470949681275420,	-0.491427404368494140,	-0.491383857827144280,	-0.491340310057334810,	
+-0.491296761059174580,	-0.491253210832771630,	-0.491209659378236460,	-0.491166106695677170,	-0.491122552785202560,	-0.491078997646921590,	-0.491035441280943120,	-0.490991883687375290,	
+-0.490948324866328500,	-0.490904764817910900,	-0.490861203542231390,	-0.490817641039398900,	-0.490774077309522270,	-0.490730512352710480,	-0.490686946169072380,	-0.490643378758716940,	
+-0.490599810121752240,	-0.490556240258288870,	-0.490512669168434830,	-0.490469096852299110,	-0.490425523309990670,	-0.490381948541618430,	-0.490338372547291350,	-0.490294795327117510,	
+-0.490251216881207490,	-0.490207637209669420,	-0.490164056312612230,	-0.490120474190144930,	-0.490076890842376430,	-0.490033306269415710,	-0.489989720471371740,	-0.489946133448352640,	
+-0.489902545200469050,	-0.489858955727829060,	-0.489815365030541680,	-0.489771773108715890,	-0.489728179962460650,	-0.489684585591884990,	-0.489640989997097100,	-0.489597393178207500,	
+-0.489553795135324380,	-0.489510195868556820,	-0.489466595378013740,	-0.489422993663804210,	-0.489379390726037140,	-0.489335786564821630,	-0.489292181180265850,	-0.489248574572480440,	
+-0.489204966741573540,	-0.489161357687654290,	-0.489117747410831580,	-0.489074135911214570,	-0.489030523188912160,	-0.488986909244032710,	-0.488943294076686740,	-0.488899677686982500,	
+-0.488856060075029130,	-0.488812441240935590,	-0.488768821184810910,	-0.488725199906764220,	-0.488681577406904490,	-0.488637953685340850,	-0.488594328742181560,	-0.488550702577537190,	
+-0.488507075191516090,	-0.488463446584227300,	-0.488419816755779890,	-0.488376185706282940,	-0.488332553435844750,	-0.488288919944575960,	-0.488245285232584810,	-0.488201649299980560,	
+-0.488158012146872100,	-0.488114373773368640,	-0.488070734179579250,	-0.488027093365613010,	-0.487983451331579000,	-0.487939808077585640,	-0.487896163603743550,	-0.487852517910160990,	
+-0.487808870996947200,	-0.487765222864211200,	-0.487721573512062130,	-0.487677922940608350,	-0.487634271149960550,	-0.487590618140227080,	-0.487546963911517080,	-0.487503308463939630,	
+-0.487459651797603980,	-0.487415993912619140,	-0.487372334809094310,	-0.487328674487138680,	-0.487285012946860550,	-0.487241350188370670,	-0.487197686211777450,	-0.487154021017189960,	
+-0.487110354604717470,	-0.487066686974469090,	-0.487023018126553960,	-0.486979348061080510,	-0.486935676778159520,	-0.486892004277899300,	-0.486848330560409050,	-0.486804655625798000,	
+-0.486760979474175290,	-0.486717302105650120,	-0.486673623520331780,	-0.486629943718328520,	-0.486586262699751190,	-0.486542580464708220,	-0.486498897013308780,	-0.486455212345662140,	
+-0.486411526461877460,	-0.486367839362063960,	-0.486324151046330030,	-0.486280461514786540,	-0.486236770767541900,	-0.486193078804705360,	-0.486149385626386100,	-0.486105691232693370,	
+-0.486061995623736420,	-0.486018298799624440,	-0.485974600760466780,	-0.485930901506371800,	-0.485887201037450370,	-0.485843499353810880,	-0.485799796455562700,	-0.485756092342815030,	
+-0.485712387015677090,	-0.485668680474257430,	-0.485624972718666840,	-0.485581263749013840,	-0.485537553565407620,	-0.485493842167957550,	-0.485450129556772910,	-0.485406415731962910,	
+-0.485362700693636910,	-0.485318984441904130,	-0.485275266976873070,	-0.485231548298654670,	-0.485187828407357410,	-0.485144107303090540,	-0.485100384985963420,	-0.485056661456085340,	
+-0.485012936713564820,	-0.484969210758512740,	-0.484925483591037650,	-0.484881755211248820,	-0.484838025619255650,	-0.484794294815167390,	-0.484750562799093400,	-0.484706829571142970,	
+-0.484663095131425470,	-0.484619359480049530,	-0.484575622617125890,	-0.484531884542763190,	-0.484488145257070850,	-0.484444404760158100,	-0.484400663052134310,	-0.484356920133108940,	
+-0.484313176003190400,	-0.484269430662489790,	-0.484225684111115550,	-0.484181936349177110,	-0.484138187376783820,	-0.484094437194045050,	-0.484050685801070250,	-0.484006933197968670,	
+-0.483963179384849010,	-0.483919424361822170,	-0.483875668128996740,	-0.483831910686482180,	-0.483788152034387850,	-0.483744392172823110,	-0.483700631101897430,	-0.483656868821719380,	
+-0.483613105332399870,	-0.483569340634047660,	-0.483525574726772100,	-0.483481807610682600,	-0.483438039285888580,	-0.483394269752499440,	-0.483350499010624660,	-0.483306727060373640,	
+-0.483262953901854970,	-0.483219179535179730,	-0.483175403960456550,	-0.483131627177794840,	-0.483087849187304070,	-0.483044069989093660,	-0.483000289583272350,	-0.482956507969951040,	
+-0.482912725149238440,	-0.482868941121244120,	-0.482825155886077380,	-0.482781369443847750,	-0.482737581794664690,	-0.482693792938637730,	-0.482650002875876230,	-0.482606211606488980,	
+-0.482562419130586950,	-0.482518625448278890,	-0.482474830559674270,	-0.482431034464882560,	-0.482387237164013270,	-0.482343438657175160,	-0.482299638944479140,	-0.482255838026034110,	
+-0.482212035901949440,	-0.482168232572334650,	-0.482124428037299320,	-0.482080622296952920,	-0.482036815351404970,	-0.481993007200764990,	-0.481949197845141670,	-0.481905387284646160,	
+-0.481861575519387190,	-0.481817762549474280,	-0.481773948375016910,	-0.481730132996124720,	-0.481686316412907210,	-0.481642498625473090,	-0.481598679633933550,	-0.481554859438397260,	
+-0.481511038038973880,	-0.481467215435772870,	-0.481423391628903800,	-0.481379566618476310,	-0.481335740404599870,	-0.481291912987383270,	-0.481248084366937720,	-0.481204254543371900,	
+-0.481160423516795500,	-0.481116591287318040,	-0.481072757855049050,	-0.481028923220098210,	-0.480985087382574280,	-0.480941250342588390,	-0.480897412100249390,	-0.480853572655666860,	
+-0.480809732008950390,	-0.480765890160209600,	-0.480722047109554070,	-0.480678202857093450,	-0.480634357402937310,	-0.480590510747194500,	-0.480546662889976160,	-0.480502813831391210,	
+-0.480458963571549210,	-0.480415112110559760,	-0.480371259448532590,	-0.480327405585576460,	-0.480283550521802600,	-0.480239694257319880,	-0.480195836792237930,	-0.480151978126666380,	
+-0.480108118260714870,	-0.480064257194493080,	-0.480020394928110610,	-0.479976531461677180,	-0.479932666795301670,	-0.479888800929095250,	-0.479844933863166790,	-0.479801065597626030,	
+-0.479757196132582610,	-0.479713325468146210,	-0.479669453604425700,	-0.479625580541532310,	-0.479581706279575030,	-0.479537830818663410,	-0.479493954158907280,	-0.479450076300416250,	
+-0.479406197243300030,	-0.479362316987668290,	-0.479318435533630790,	-0.479274552881296390,	-0.479230669030776380,	-0.479186783982179730,	-0.479142897735616140,	-0.479099010291195280,	
+-0.479055121649026860,	-0.479011231809220670,	-0.478967340771885630,	-0.478923448537133030,	-0.478879555105071740,	-0.478835660475811660,	-0.478791764649462380,	-0.478747867626133640,	
+-0.478703969405935290,	-0.478660069988977030,	-0.478616169375367770,	-0.478572267565218870,	-0.478528364558639340,	-0.478484460355738880,	-0.478440554956627240,	-0.478396648361414270,	
+-0.478352740570209660,	-0.478308831583122370,	-0.478264921400263830,	-0.478221010021743000,	-0.478177097447669620,	-0.478133183678153490,	-0.478089268713304370,	-0.478045352553232160,	
+-0.478001435198046500,	-0.477957516647856520,	-0.477913596902773520,	-0.477869675962906470,	-0.477825753828365280,	-0.477781830499259710,	-0.477737905975699540,	-0.477693980257794640,	
+-0.477650053345653970,	-0.477606125239389000,	-0.477562195939108650,	-0.477518265444922870,	-0.477474333756941370,	-0.477430400875274110,	-0.477386466800030770,	-0.477342531531321280,	
+-0.477298595069254710,	-0.477254657413942460,	-0.477210718565493520,	-0.477166778524017790,	-0.477122837289625120,	-0.477078894862425330,	-0.477034951242528320,	-0.476991006430043940,	
+-0.476947060425081280,	-0.476903113227751700,	-0.476859164838164370,	-0.476815215256429170,	-0.476771264482655890,	-0.476727312516954440,	-0.476683359359434680,	-0.476639405010206570,	
+-0.476595449469379150,	-0.476551492737063930,	-0.476507534813369940,	-0.476463575698407080,	-0.476419615392285330,	-0.476375653895114550,	-0.476331691207004580,	-0.476287727328064630,	
+-0.476243762258406140,	-0.476199795998138280,	-0.476155828547370870,	-0.476111859906213960,	-0.476067890074777340,	-0.476023919053171040,	-0.475979946841504910,	-0.475935973439888140,	
+-0.475891998848432200,	-0.475848023067246270,	-0.475804046096440340,	-0.475760067936124240,	-0.475716088586407960,	-0.475672108047401510,	-0.475628126319213970,	-0.475584143401956870,	
+-0.475540159295739450,	-0.475496174000671620,	-0.475452187516863410,	-0.475408199844424670,	-0.475364210983465430,	-0.475320220934095710,	-0.475276229696424580,	-0.475232237270563740,	
+-0.475188243656622270,	-0.475144248854710180,	-0.475100252864937460,	-0.475056255687414110,	-0.475012257322250160,	-0.474968257769554760,	-0.474924257029439520,	-0.474880255102013590,	
+-0.474836251987387050,	-0.474792247685669910,	-0.474748242196972090,	-0.474704235521403730,	-0.474660227659074730,	-0.474616218610094400,	-0.474572208374574310,	-0.474528196952623660,	
+-0.474484184344352580,	-0.474440170549870980,	-0.474396155569288990,	-0.474352139402716590,	-0.474308122050263850,	-0.474264103512040070,	-0.474220083788156780,	-0.474176062878723270,	
+-0.474132040783849570,	-0.474088017503645820,	-0.474043993038221980,	-0.473999967387688240,	-0.473955940552154510,	-0.473911912531730150,	-0.473867883326526800,	-0.473823852936653740,	
+-0.473779821362221080,	-0.473735788603338870,	-0.473691754660117150,	-0.473647719532666040,	-0.473603683221094860,	-0.473559645725515290,	-0.473515607046036570,	-0.473471567182768840,	
+-0.473427526135822170,	-0.473383483905306710,	-0.473339440491332530,	-0.473295395894009760,	-0.473251350113447710,	-0.473207303149758060,	-0.473163255003050180,	-0.473119205673434130,	
+-0.473075155161020110,	-0.473031103465918200,	-0.472987050588238480,	-0.472942996528090350,	-0.472898941285585570,	-0.472854884860833380,	-0.472810827253944020,	-0.472766768465027580,	
+-0.472722708494194230,	-0.472678647341554070,	-0.472634585007217330,	-0.472590521491293320,	-0.472546456793893840,	-0.472502390915128130,	-0.472458323855106500,	-0.472414255613939070,	
+-0.472370186191735990,	-0.472326115588607430,	-0.472282043804662820,	-0.472237970840013840,	-0.472193896694769970,	-0.472149821369041380,	-0.472105744862938210,	-0.472061667176570670,	
+-0.472017588310048970,	-0.471973508263483280,	-0.471929427036983040,	-0.471885344630660060,	-0.471841261044623710,	-0.471797176278984150,	-0.471753090333851710,	-0.471709003209336510,	
+-0.471664914905548790,	-0.471620825422598810,	-0.471576734760596030,	-0.471532642919652130,	-0.471488549899876650,	-0.471444455701379770,	-0.471400360324271740,	-0.471356263768662850,	
+-0.471312166034663300,	-0.471268067122383340,	-0.471223967031932370,	-0.471179865763422300,	-0.471135763316962610,	-0.471091659692663480,	-0.471047554890635160,	-0.471003448910988000,	
+-0.470959341753832190,	-0.470915233419277270,	-0.470871123907435020,	-0.470827013218415020,	-0.470782901352327420,	-0.470738788309282620,	-0.470694674089390810,	-0.470650558692762340,	
+-0.470606442119507420,	-0.470562324369735660,	-0.470518205443558880,	-0.470474085341086590,	-0.470429964062429040,	-0.470385841607696640,	-0.470341717976999580,	-0.470297593170448280,	
+-0.470253467188152140,	-0.470209340030223190,	-0.470165211696770840,	-0.470121082187905490,	-0.470076951503737460,	-0.470032819644376990,	-0.469988686609934480,	-0.469944552400520300,	
+-0.469900417016243910,	-0.469856280457217280,	-0.469812142723549990,	-0.469768003815352280,	-0.469723863732734560,	-0.469679722475807250,	-0.469635580044680530,	-0.469591436439464160,	
+-0.469547291660269980,	-0.469503145707207530,	-0.469458998580387250,	-0.469414850279919470,	-0.469370700805914530,	-0.469326550158482850,	-0.469282398337734830,	-0.469238245343780000,	
+-0.469194091176730330,	-0.469149935836695450,	-0.469105779323785720,	-0.469061621638111550,	-0.469017462779783350,	-0.468973302748911470,	-0.468929141545606330,	-0.468884979169977570,	
+-0.468840815622137140,	-0.468796650902194630,	-0.468752485010260570,	-0.468708317946445240,	-0.468664149710859120,	-0.468619980303612630,	-0.468575809724816220,	-0.468531637974579470,	
+-0.468487465053014420,	-0.468443290960230680,	-0.468399115696338740,	-0.468354939261449000,	-0.468310761655671930,	-0.468266582879117930,	-0.468222402931896760,	-0.468178221814120280,	
+-0.468134039525898270,	-0.468089856067341210,	-0.468045671438559460,	-0.468001485639663540,	-0.467957298670763910,	-0.467913110531971040,	-0.467868921223394570,	-0.467824730745146630,	
+-0.467780539097336860,	-0.467736346280075710,	-0.467692152293473720,	-0.467647957137641350,	-0.467603760812689060,	-0.467559563318726610,	-0.467515364655866020,	-0.467471164824217020,	
+-0.467426963823890150,	-0.467382761654995820,	-0.467338558317644590,	-0.467294353811947010,	-0.467250148138013520,	-0.467205941295953830,	-0.467161733285880120,	-0.467117524107902080,	
+-0.467073313762130240,	-0.467029102248675050,	-0.466984889567647170,	-0.466940675719157040,	-0.466896460703314420,	-0.466852244520231500,	-0.466808027170017900,	-0.466763808652784270,	
+-0.466719588968641070,	-0.466675368117698940,	-0.466631146100068390,	-0.466586922915859960,	-0.466542698565183430,	-0.466498473048150950,	-0.466454246364872320,	-0.466410018515458050,	
+-0.466365789500018720,	-0.466321559318664920,	-0.466277327971507230,	-0.466233095458656210,	-0.466188861780221670,	-0.466144626936315810,	-0.466100390927048300,	-0.466056153752529840,	
+-0.466011915412871010,	-0.465967675908182390,	-0.465923435238574600,	-0.465879193404158180,	-0.465834950405043020,	-0.465790706241341280,	-0.465746460913162740,	-0.465702214420618100,	
+-0.465657966763817880,	-0.465613717942872760,	-0.465569467957893330,	-0.465525216808989450,	-0.465480964496273300,	-0.465436711019854790,	-0.465392456379844440,	-0.465348200576353010,	
+-0.465303943609491010,	-0.465259685479369190,	-0.465215426186098180,	-0.465171165729787780,	-0.465126904110550240,	-0.465082641328495470,	-0.465038377383734100,	-0.464994112276376770,	
+-0.464949846006534220,	-0.464905578574316970,	-0.464861309979835050,	-0.464817040223200580,	-0.464772769304523550,	-0.464728497223914570,	-0.464684223981484400,	-0.464639949577343610,	
+-0.464595674011603010,	-0.464551397284373170,	-0.464507119395764060,	-0.464462840345887920,	-0.464418560134854720,	-0.464374278762775150,	-0.464329996229759790,	-0.464285712535919490,	
+-0.464241427681364950,	-0.464197141666206010,	-0.464152854490554990,	-0.464108566154521840,	-0.464064276658217310,	-0.464019986001752040,	-0.463975694185236820,	-0.463931401208782400,	
+-0.463887107072499420,	-0.463842811776497940,	-0.463798515320890170,	-0.463754217705786180,	-0.463709918931296590,	-0.463665618997532230,	-0.463621317904603760,	-0.463577015652622050,	
+-0.463532712241697790,	-0.463488407671940990,	-0.463444101943463920,	-0.463399795056376630,	-0.463355487010789820,	-0.463311177806814300,	-0.463266867444560860,	-0.463222555924140190,	
+-0.463178243245663200,	-0.463133929409239810,	-0.463089614414982310,	-0.463045298263000840,	-0.463000980953406140,	-0.462956662486308960,	-0.462912342861820090,	-0.462868022080050400,	
+-0.462823700141109850,	-0.462779377045110850,	-0.462735052792163430,	-0.462690727382378380,	-0.462646400815866440,	-0.462602073092738600,	-0.462557744213105470,	-0.462513414177078030,	
+-0.462469082984766300,	-0.462424750636282630,	-0.462380417131737050,	-0.462336082471240470,	-0.462291746654903690,	-0.462247409682837510,	-0.462203071555152780,	-0.462158732271959640,	
+-0.462114391833370440,	-0.462070050239495270,	-0.462025707490444970,	-0.461981363586330350,	-0.461937018527262380,	-0.461892672313351850,	-0.461848324944709620,	-0.461803976421445830,	
+-0.461759626743672880,	-0.461715275911500860,	-0.461670923925040610,	-0.461626570784403110,	-0.461582216489699100,	-0.461537861041039610,	-0.461493504438534710,	-0.461449146682296810,	
+-0.461404787772435990,	-0.461360427709063270,	-0.461316066492289460,	-0.461271704122225460,	-0.461227340598982240,	-0.461182975922670600,	-0.461138610093400790,	-0.461094243111285220,	
+-0.461049874976434070,	-0.461005505688958210,	-0.460961135248968590,	-0.460916763656576130,	-0.460872390911891800,	-0.460828017015025680,	-0.460783641966090280,	-0.460739265765195800,	
+-0.460694888412453150,	-0.460650509907973290,	-0.460606130251867140,	-0.460561749444245660,	-0.460517367485219820,	-0.460472984374900530,	-0.460428600113398030,	-0.460384214700824800,	
+-0.460339828137291020,	-0.460295440422907710,	-0.460251051557785780,	-0.460206661542036210,	-0.460162270375770010,	-0.460117878059097320,	-0.460073484592130770,	-0.460029089974980430,	
+-0.459984694207757450,	-0.459940297290572670,	-0.459895899223537190,	-0.459851500006761950,	-0.459807099640357930,	-0.459762698124435380,	-0.459718295459106920,	-0.459673891644482690,	
+-0.459629486680673720,	-0.459585080567791020,	-0.459540673305945670,	-0.459496264895248590,	-0.459451855335810120,	-0.459407444627742740,	-0.459363032771156750,	-0.459318619766163230,	
+-0.459274205612873130,	-0.459229790311397490,	-0.459185373861847430,	-0.459140956264333880,	-0.459096537518967170,	-0.459052117625859900,	-0.459007696585122360,	-0.458963274396865570,	
+-0.458918851061200620,	-0.458874426578238510,	-0.458830000948090340,	-0.458785574170866350,	-0.458741146246679220,	-0.458696717175639260,	-0.458652286957857480,	-0.458607855593445020,	
+-0.458563423082512910,	-0.458518989425172220,	-0.458474554621534080,	-0.458430118671708740,	-0.458385681575808890,	-0.458341243333944830,	-0.458296803946227680,	-0.458252363412768540,	
+-0.458207921733678470,	-0.458163478909068610,	-0.458119034939049260,	-0.458074589823733060,	-0.458030143563230460,	-0.457985696157652440,	-0.457941247607110250,	-0.457896797911714890,	
+-0.457852347071577510,	-0.457807895086809360,	-0.457763441957521390,	-0.457718987683824020,	-0.457674532265830050,	-0.457630075703649660,	-0.457585617997394110,	-0.457541159147174530,	
+-0.457496699153102090,	-0.457452238015287840,	-0.457407775733842230,	-0.457363312308877950,	-0.457318847740505410,	-0.457274382028835750,	-0.457229915173980150,	-0.457185447176049700,	
+-0.457140978035155690,	-0.457096507751409250,	-0.457052036324920700,	-0.457007563755802870,	-0.456963090044166130,	-0.456918615190121670,	-0.456874139193780670,	-0.456829662055254330,	
+-0.456785183774653820,	-0.456740704352089580,	-0.456696223787674330,	-0.456651742081518540,	-0.456607259233733410,	-0.456562775244430120,	-0.456518290113719920,	-0.456473803841713990,	
+-0.456429316428523520,	-0.456384827874258990,	-0.456340338179033130,	-0.456295847342956470,	-0.456251355366140200,	-0.456206862248695550,	-0.456162367990733730,	-0.456117872592365970,	
+-0.456073376053702790,	-0.456028878374856890,	-0.455984379555938850,	-0.455939879597059840,	-0.455895378498331120,	-0.455850876259863980,	-0.455806372881769620,	-0.455761868364159330,	
+-0.455717362707143580,	-0.455672855910835280,	-0.455628347975344740,	-0.455583838900783410,	-0.455539328687262430,	-0.455494817334893170,	-0.455450304843786850,	-0.455405791214053950,	
+-0.455361276445807370,	-0.455316760539157650,	-0.455272243494215970,	-0.455227725311093730,	-0.455183205989902140,	-0.455138685530752540,	-0.455094163933756230,	-0.455049641199024520,	
+-0.455005117326667930,	-0.454960592316799310,	-0.454916066169529230,	-0.454871538884968950,	-0.454827010463229870,	-0.454782480904423190,	-0.454737950208660370,	-0.454693418376051870,	
+-0.454648885406710610,	-0.454604351300747170,	-0.454559816058272840,	-0.454515279679398920,	-0.454470742164236830,	-0.454426203512897920,	-0.454381663725493490,	-0.454337122802134060,	
+-0.454292580742932660,	-0.454248037547999810,	-0.454203493217446850,	-0.454158947751385160,	-0.454114401149926070,	-0.454069853413181010,	-0.454025304541260550,	-0.453980754534277550,	
+-0.453936203392342750,	-0.453891651115567400,	-0.453847097704062900,	-0.453802543157940660,	-0.453757987477312110,	-0.453713430662288530,	-0.453668872712980620,	-0.453624313629501340,	
+-0.453579753411961220,	-0.453535192060471770,	-0.453490629575144300,	-0.453446065956090270,	-0.453401501203421100,	-0.453356935317247360,	-0.453312368297682070,	-0.453267800144835860,	
+-0.453223230858820160,	-0.453178660439746360,	-0.453134088887725940,	-0.453089516202870300,	-0.453044942385290860,	-0.453000367435098250,	-0.452955791352405550,	-0.452911214137323330,	
+-0.452866635789963110,	-0.452822056310436320,	-0.452777475698854350,	-0.452732893955328670,	-0.452688311079969980,	-0.452643727072891360,	-0.452599141934203360,	-0.452554555664017530,	
+-0.452509968262445330,	-0.452465379729598160,	-0.452420790065587550,	-0.452376199270525030,	-0.452331607344521160,	-0.452287014287689080,	-0.452242420100139430,	-0.452197824781983780,	
+-0.452153228333333550,	-0.452108630754300240,	-0.452064032044995350,	-0.452019432205530420,	-0.451974831236016060,	-0.451930229136565440,	-0.451885625907289260,	-0.451841021548299030,	
+-0.451796416059706220,	-0.451751809441622350,	-0.451707201694159010,	-0.451662592817427600,	-0.451617982811538980,	-0.451573371676606160,	-0.451528759412739900,	-0.451484146020051770,	
+-0.451439531498653290,	-0.451394915848655930,	-0.451350299070171320,	-0.451305681163310160,	-0.451261062128185560,	-0.451216441964908340,	-0.451171820673590020,	-0.451127198254342110,	
+-0.451082574707276250,	-0.451037950032503960,	-0.450993324230136770,	-0.450948697300285470,	-0.450904069243063200,	-0.450859440058580810,	-0.450814809746949760,	-0.450770178308281750,	
+-0.450725545742688250,	-0.450680912050280880,	-0.450636277231170500,	-0.450591641285470130,	-0.450547004213290750,	-0.450502366014743800,	-0.450457726689940940,	-0.450413086238993790,	
+-0.450368444662013870,	-0.450323801959112870,	-0.450279158130401590,	-0.450234513175993220,	-0.450189867095998510,	-0.450145219890529190,	-0.450100571559696790,	-0.450055922103612950,	
+-0.450011271522389340,	-0.449966619816136730,	-0.449921966984968390,	-0.449877313028995090,	-0.449832657948328550,	-0.449788001743080370,	-0.449743344413362170,	-0.449698685959285580,	
+-0.449654026380962300,	-0.449609365678503180,	-0.449564703852021410,	-0.449520040901627890,	-0.449475376827434270,	-0.449430711629552230,	-0.449386045308093340,	-0.449341377863169410,	
+-0.449296709294892020,	-0.449252039603372070,	-0.449207368788722810,	-0.449162696851055090,	-0.449118023790480660,	-0.449073349607111150,	-0.449028674301058310,	-0.448983997872433760,	
+-0.448939320321349200,	-0.448894641647915540,	-0.448849961852246130,	-0.448805280934451770,	-0.448760598894644200,	-0.448715915732935120,	-0.448671231449436270,	-0.448626546044259390,	
+-0.448581859517515280,	-0.448537171869317350,	-0.448492483099776460,	-0.448447793209004410,	-0.448403102197112880,	-0.448358410064213560,	-0.448313716810418210,	-0.448269022435838600,	
+-0.448224326940585620,	-0.448179630324772590,	-0.448134932588510500,	-0.448090233731911090,	-0.448045533755086100,	-0.448000832658147270,	-0.447956130441206410,	-0.447911427104374370,	
+-0.447866722647764560,	-0.447822017071487940,	-0.447777310375656320,	-0.447732602560381390,	-0.447687893625774940,	-0.447643183571948770,	-0.447598472399014680,	-0.447553760107083590,	
+-0.447509046696268840,	-0.447464332166681520,	-0.447419616518433370,	-0.447374899751636190,	-0.447330181866401780,	-0.447285462862841880,	-0.447240742741067510,	-0.447196021501192090,	
+-0.447151299143326630,	-0.447106575667582940,	-0.447061851074072760,	-0.447017125362908000,	-0.446972398534200400,	-0.446927670588061820,	-0.446882941524603280,	-0.446838211343938140,	
+-0.446793480046177530,	-0.446748747631433190,	-0.446704014099816970,	-0.446659279451440680,	-0.446614543686416230,	-0.446569806804855470,	-0.446525068806869320,	-0.446480329692571340,	
+-0.446435589462072510,	-0.446390848115484740,	-0.446346105652919820,	-0.446301362074489670,	-0.446256617380306090,	-0.446211871570480920,	-0.446167124645125370,	-0.446122376604352720,	
+-0.446077627448274170,	-0.446032877177001570,	-0.445988125790646730,	-0.445943373289321600,	-0.445898619673138040,	-0.445853864942207130,	-0.445809109096642340,	-0.445764352136554800,	
+-0.445719594062056410,	-0.445674834873258980,	-0.445630074570274480,	-0.445585313153214810,	-0.445540550622191830,	-0.445495786977316680,	-0.445451022218702860,	-0.445406256346461530,	
+-0.445361489360704520,	-0.445316721261543760,	-0.445271952049091260,	-0.445227181723458820,	-0.445182410284757690,	-0.445137637733101280,	-0.445092864068600770,	-0.445048089291368130,	
+-0.445003313401515280,	-0.444958536399154110,	-0.444913758284396610,	-0.444868979057354730,	-0.444824198718139610,	-0.444779417266864760,	-0.444734634703641380,	-0.444689851028581440,	
+-0.444645066241796840,	-0.444600280343399600,	-0.444555493333501640,	-0.444510705212214140,	-0.444465915979650680,	-0.444421125635922450,	-0.444376334181141420,	-0.444331541615419550,	
+-0.444286747938868800,	-0.444241953151601140,	-0.444197157253728660,	-0.444152360245362480,	-0.444107562126616170,	-0.444062762897600990,	-0.444017962558428900,	-0.443973161109211870,	
+-0.443928358550061960,	-0.443883554881091160,	-0.443838750102411470,	-0.443793944214134100,	-0.443749137216372660,	-0.443704329109238400,	-0.443659519892843300,	-0.443614709567299430,	
+-0.443569898132718740,	-0.443525085589213330,	-0.443480271936895210,	-0.443435457175875620,	-0.443390641306268150,	-0.443345824328184090,	-0.443301006241735520,	-0.443256187047034340,	
+-0.443211366744192760,	-0.443166545333322780,	-0.443121722814535600,	-0.443076899187944910,	-0.443032074453661990,	-0.442987248611798890,	-0.442942421662467610,	-0.442897593605780350,	
+-0.442852764441849070,	-0.442807934170785900,	-0.442763102792702030,	-0.442718270307711270,	-0.442673436715924850,	-0.442628602017454800,	-0.442583766212413240,	-0.442538929300912260,	
+-0.442494091283063990,	-0.442449252158979680,	-0.442404411928773060,	-0.442359570592555370,	-0.442314728150438760,	-0.442269884602535360,	-0.442225039948957180,	-0.442180194189816470,	
+-0.442135347325225250,	-0.442090499355294870,	-0.442045650280139040,	-0.442000800099869080,	-0.441955948814597100,	-0.441911096424435270,	-0.441866242929495720,	-0.441821388329890540,	
+-0.441776532625731080,	-0.441731675817131130,	-0.441686817904201940,	-0.441641958887055710,	-0.441597098765804610,	-0.441552237540560780,	-0.441507375211436290,	-0.441462511778543400,	
+-0.441417647241993450,	-0.441372781601900190,	-0.441327914858374910,	-0.441283047011529870,	-0.441238178061477250,	-0.441193308008329180,	-0.441148436852197790,	-0.441103564593195330,	
+-0.441058691231433210,	-0.441013816767025110,	-0.440968941200082450,	-0.440924064530717470,	-0.440879186759042360,	-0.440834307885169200,	-0.440789427909210330,	-0.440744546831277890,	
+-0.440699664651483250,	-0.440654781369940300,	-0.440609896986760340,	-0.440565011502055680,	-0.440520124915938500,	-0.440475237228520940,	-0.440430348439915350,	-0.440385458550233090,	
+-0.440340567559587950,	-0.440295675468091400,	-0.440250782275855680,	-0.440205887982992980,	-0.440160992589615610,	-0.440116096095835680,	-0.440071198501765570,	-0.440026299807516620,	
+-0.439981400013202740,	-0.439936499118935400,	-0.439891597124826780,	-0.439846694030989140,	-0.439801789837534820,	-0.439756884544575950,	-0.439711978152224130,	-0.439667070660593180,	
+-0.439622162069794490,	-0.439577252379940440,	-0.439532341591143240,	-0.439487429703515230,	-0.439442516717168610,	-0.439397602632215670,	-0.439352687448767990,	-0.439307771166939310,	
+-0.439262853786841270,	-0.439217935308586050,	-0.439173015732286010,	-0.439128095058053450,	-0.439083173286000660,	-0.439038250416239120,	-0.438993326448882730,	-0.438948401384043010,	
+-0.438903475221832320,	-0.438858547962362950,	-0.438813619605747220,	-0.438768690152097410,	-0.438723759601525880,	-0.438678827954144200,	-0.438633895210066180,	-0.438588961369403450,	
+-0.438544026432268310,	-0.438499090398773110,	-0.438454153269030200,	-0.438409215043151890,	-0.438364275721250580,	-0.438319335303437750,	-0.438274393789827350,	-0.438229451180531030,	
+-0.438184507475661010,	-0.438139562675329770,	-0.438094616779649610,	-0.438049669788732890,	-0.438004721702692060,	-0.437959772521638540,	-0.437914822245686450,	-0.437869870874947280,	
+-0.437824918409533470,	-0.437779964849557330,	-0.437735010195131280,	-0.437690054446367720,	-0.437645097603378160,	-0.437600139666276760,	-0.437555180635174960,	-0.437510220510185180,	
+-0.437465259291419880,	-0.437420296978991430,	-0.437375333573012230,	-0.437330369073594680,	-0.437285403480850430,	-0.437240436794893490,	-0.437195469015835450,	-0.437150500143788700,	
+-0.437105530178865720,	-0.437060559121178920,	-0.437015586970840750,	-0.436970613727962750,	-0.436925639392659100,	-0.436880663965041270,	-0.436835687445221830,	-0.436790709833313140,	
+-0.436745731129427720,	-0.436700751333677920,	-0.436655770446176260,	-0.436610788467034380,	-0.436565805396366360,	-0.436520821234283760,	-0.436475835980899170,	-0.436430849636324950,	
+-0.436385862200673600,	-0.436340873674057660,	-0.436295884056588650,	-0.436250893348380800,	-0.436205901549545690,	-0.436160908660195800,	-0.436115914680443690,	-0.436070919610401730,	
+-0.436025923450182540,	-0.435980926199898480,	-0.435935927859661340,	-0.435890928429585160,	-0.435845927909781720,	-0.435800926300363380,	-0.435755923601442770,	-0.435710919813132310,	
+-0.435665914935544630,	-0.435620908968791300,	-0.435575901912986510,	-0.435530893768241940,	-0.435485884534670190,	-0.435440874212383700,	-0.435395862801495000,	-0.435350850302116680,	
+-0.435305836714361240,	-0.435260822038341160,	-0.435215806274168280,	-0.435170789421956640,	-0.435125771481818080,	-0.435080752453865020,	-0.435035732338210130,	-0.434990711134965900,	
+-0.434945688844244890,	-0.434900665466158850,	-0.434855641000821970,	-0.434810615448345980,	-0.434765588808843420,	-0.434720561082426900,	-0.434675532269209020,	-0.434630502369302290,	
+-0.434585471382819280,	-0.434540439309871800,	-0.434495406150574030,	-0.434450371905037710,	-0.434405336573375540,	-0.434360300155699990,	-0.434315262652123670,	-0.434270224062759170,	
+-0.434225184387718340,	-0.434180143627115380,	-0.434135101781062020,	-0.434090058849670950,	-0.434045014833054690,	-0.433999969731325930,	-0.433954923544597190,	-0.433909876272981170,	
+-0.433864827916589700,	-0.433819778475536880,	-0.433774727949934660,	-0.433729676339895620,	-0.433684623645532400,	-0.433639569866957620,	-0.433594515004283920,	-0.433549459057623100,	
+-0.433504402027089450,	-0.433459343912794780,	-0.433414284714851770,	-0.433369224433373060,	-0.433324163068471270,	-0.433279100620259090,	-0.433234037088849110,	-0.433188972474353280,	
+-0.433143906776885800,	-0.433098839996558570,	-0.433053772133484280,	-0.433008703187775510,	-0.432963633159544950,	-0.432918562048905330,	-0.432873489855968570,	-0.432828416580848810,	
+-0.432783342223658050,	-0.432738266784508880,	-0.432693190263514100,	-0.432648112660786340,	-0.432603033976438290,	-0.432557954210582630,	-0.432512873363332110,	-0.432467791434798630,	
+-0.432422708425096390,	-0.432377624334337460,	-0.432332539162634420,	-0.432287452910100070,	-0.432242365576847090,	-0.432197277162988170,	-0.432152187668635280,	-0.432107097093902710,	
+-0.432062005438902390,	-0.432016912703747040,	-0.431971818888549410,	-0.431926723993422300,	-0.431881628018478290,	-0.431836530963830290,	-0.431791432829590090,	-0.431746333615872170,	
+-0.431701233322788370,	-0.431656131950451490,	-0.431611029498974340,	-0.431565925968469540,	-0.431520821359049960,	-0.431475715670827540,	-0.431430608903916600,	-0.431385501058429150,	
+-0.431340392134478000,	-0.431295282132175770,	-0.431250171051635430,	-0.431205058892969620,	-0.431159945656291120,	-0.431114831341712020,	-0.431069715949346620,	-0.431024599479306940,	
+-0.430979481931705770,	-0.430934363306655850,	-0.430889243604270060,	-0.430844122824661170,	-0.430799000967941160,	-0.430753878034224440,	-0.430708754023623020,	-0.430663628936249710,	
+-0.430618502772217360,	-0.430573375531638710,	-0.430528247214626620,	-0.430483117821293950,	-0.430437987351752700,	-0.430392855806117250,	-0.430347723184499650,	-0.430302589487012780,	
+-0.430257454713769420,	-0.430212318864882370,	-0.430167181940464600,	-0.430122043940628030,	-0.430076904865487160,	-0.430031764715154030,	-0.429986623489741540,	-0.429941481189362430,	
+-0.429896337814129610,	-0.429851193364156000,	-0.429806047839554340,	-0.429760901240437590,	-0.429715753566917820,	-0.429670604819109400,	-0.429625454997124510,	-0.429580304101076000,	
+-0.429535152131076740,	-0.429489999087239560,	-0.429444844969677390,	-0.429399689778502290,	-0.429354533513828800,	-0.429309376175768980,	-0.429264217764435680,	-0.429219058279941830,	
+-0.429173897722400390,	-0.429128736091924150,	-0.429083573388626130,	-0.429038409612618300,	-0.428993244764015290,	-0.428948078842929180,	-0.428902911849472880,	-0.428857743783759290,	
+-0.428812574645901330,	-0.428767404436011910,	-0.428722233154203210,	-0.428677060800589760,	-0.428631887375283630,	-0.428586712878397720,	-0.428541537310045130,	-0.428496360670338640,	
+-0.428451182959391220,	-0.428406004177315890,	-0.428360824324224730,	-0.428315643400232320,	-0.428270461405450830,	-0.428225278339993130,	-0.428180094203972290,	-0.428134908997501170,	
+-0.428089722720692790,	-0.428044535373659330,	-0.427999346956515310,	-0.427954157469372930,	-0.427908966912345150,	-0.427863775285544920,	-0.427818582589085280,	-0.427773388823079190,	
+-0.427728193987639620,	-0.427682998082878800,	-0.427637801108911250,	-0.427592603065849170,	-0.427547403953805640,	-0.427502203772893610,	-0.427457002523225990,	-0.427411800204915930,	
+-0.427366596818075540,	-0.427321392362819460,	-0.427276186839259940,	-0.427230980247509880,	-0.427185772587682420,	-0.427140563859890520,	-0.427095354064247200,	-0.427050143200865540,	
+-0.427004931269858500,	-0.426959718271338270,	-0.426914504205419600,	-0.426869289072214660,	-0.426824072871836550,	-0.426778855604398210,	-0.426733637270012680,	-0.426688417868793140,	
+-0.426643197400851710,	-0.426597975866303100,	-0.426552753265259540,	-0.426507529597834110,	-0.426462304864139890,	-0.426417079064289830,	-0.426371852198397130,	-0.426326624266574810,	
+-0.426281395268935100,	-0.426236165205592710,	-0.426190934076659870,	-0.426145701882249760,	-0.426100468622475360,	-0.426055234297449790,	-0.426009998907286140,	-0.425964762452096690,	
+-0.425919524931996140,	-0.425874286347096730,	-0.425829046697511650,	-0.425783805983353970,	-0.425738564204736770,	-0.425693321361773120,	-0.425648077454576170,	-0.425602832483258250,	
+-0.425557586447934070,	-0.425512339348715910,	-0.425467091185716910,	-0.425421841959050140,	-0.425376591668828800,	-0.425331340315165950,	-0.425286087898173960,	-0.425240834417967560,	
+-0.425195579874659110,	-0.425150324268361630,	-0.425105067599188420,	-0.425059809867252500,	-0.425014551072667060,	-0.424969291215545280,	-0.424924030295999400,	-0.424878768314144280,	
+-0.424833505270092230,	-0.424788241163956470,	-0.424742975995850040,	-0.424697709765886220,	-0.424652442474178100,	-0.424607174120838040,	-0.424561904705980870,	-0.424516634229718970,	
+-0.424471362692165450,	-0.424426090093433570,	-0.424380816433636400,	-0.424335541712887230,	-0.424290265931299200,	-0.424244989088984730,	-0.424199711186058540,	-0.424154432222633100,	
+-0.424109152198821560,	-0.424063871114737150,	-0.424018588970493050,	-0.423973305766202510,	-0.423928021501978670,	-0.423882736177933980,	-0.423837449794183310,	-0.423792162350838940,	
+-0.423746873848014180,	-0.423701584285822270,	-0.423656293664376400,	-0.423611001983789760,	-0.423565709244175640,	-0.423520415445646450,	-0.423475120588316990,	-0.423429824672299730,	
+-0.423384527697707960,	-0.423339229664654810,	-0.423293930573253600,	-0.423248630423617600,	-0.423203329215859180,	-0.423158026950093250,	-0.423112723626432260,	-0.423067419244989470,	
+-0.423022113805878120,	-0.422976807309211500,	-0.422931499755102860,	-0.422886191143665490,	-0.422840881475011810,	-0.422795570749256720,	-0.422750258966512690,	-0.422704946126893080,	
+-0.422659632230511060,	-0.422614317277479950,	-0.422569001267913080,	-0.422523684201922880,	-0.422478366079624250,	-0.422433046901129760,	-0.422387726666552610,	-0.422342405376006150,	
+-0.422297083029603670,	-0.422251759627458530,	-0.422206435169683920,	-0.422161109656392470,	-0.422115783087699040,	-0.422070455463716130,	-0.422025126784557110,	-0.421979797050335280,	
+-0.421934466261163930,	-0.421889134417156420,	-0.421843801518425320,	-0.421798467565085430,	-0.421753132557249440,	-0.421707796495030600,	-0.421662459378542300,	-0.421617121207897790,	
+-0.421571781983210490,	-0.421526441704593750,	-0.421481100372160130,	-0.421435757986024510,	-0.421390414546299550,	-0.421345070053098510,	-0.421299724506534800,	-0.421254377906721820,	
+-0.421209030253772820,	-0.421163681547801320,	-0.421118331788919780,	-0.421072980977243220,	-0.421027629112884220,	-0.420982276195956130,	-0.420936922226572310,	-0.420891567204846220,	
+-0.420846211130891270,	-0.420800854004820700,	-0.420755495826747260,	-0.420710136596785860,	-0.420664776315049120,	-0.420619414981650400,	-0.420574052596703160,	-0.420528689160320820,	
+-0.420483324672616730,	-0.420437959133703580,	-0.420392592543696260,	-0.420347224902707480,	-0.420301856210850700,	-0.420256486468239210,	-0.420211115674986540,	-0.420165743831206030,	
+-0.420120370937011210,	-0.420074996992514660,	-0.420029621997831390,	-0.419984245953074100,	-0.419938868858356180,	-0.419893490713791060,	-0.419848111519492250,	-0.419802731275573160,	
+-0.419757349982146420,	-0.419711967639327110,	-0.419666584247227910,	-0.419621199805962240,	-0.419575814315643560,	-0.419530427776385330,	-0.419485040188301020,	-0.419439651551504140,	
+-0.419394261866107340,	-0.419348871132225690,	-0.419303479349971810,	-0.419258086519459280,	-0.419212692640801520,	-0.419167297714112040,	-0.419121901739504310,	-0.419076504717091010,	
+-0.419031106646987230,	-0.418985707529305750,	-0.418940307364159940,	-0.418894906151663360,	-0.418849503891929540,	-0.418804100585072000,	-0.418758696231204150,	-0.418713290830438790,	
+-0.418667884382890990,	-0.418622476888673490,	-0.418577068347899760,	-0.418531658760683380,	-0.418486248127137860,	-0.418440836447376730,	-0.418395423721513500,	-0.418350009949660930,	
+-0.418304595131934080,	-0.418259179268445800,	-0.418213762359309570,	-0.418168344404638900,	-0.418122925404547370,	-0.418077505359148560,	-0.418032084268555980,	-0.417986662132882380,	
+-0.417941238952242890,	-0.417895814726750360,	-0.417850389456518260,	-0.417804963141660210,	-0.417759535782289750,	-0.417714107378520440,	-0.417668677930465030,	-0.417623247438238750,	
+-0.417577815901954360,	-0.417532383321725430,	-0.417486949697665530,	-0.417441515029888300,	-0.417396079318507250,	-0.417350642563635970,	-0.417305204765387290,	-0.417259765923876420,	
+-0.417214326039216150,	-0.417168885111520060,	-0.417123443140901770,	-0.417078000127474870,	-0.417032556071352920,	-0.416987110972648790,	-0.416941664831477710,	-0.416896217647952480,	
+-0.416850769422186680,	-0.416805320154294000,	-0.416759869844387950,	-0.416714418492582280,	-0.416668966098990570,	-0.416623512663725600,	-0.416578058186902630,	-0.416532602668634570,	
+-0.416487146109034980,	-0.416441688508217560,	-0.416396229866295870,	-0.416350770183383620,	-0.416305309459593650,	-0.416259847695041210,	-0.416214384889839200,	-0.416168921044101140,	
+-0.416123456157940830,	-0.416077990231471850,	-0.416032523264807940,	-0.415987055258062680,	-0.415941586211348970,	-0.415896116124782110,	-0.415850644998474960,	-0.415805172832541260,	
+-0.415759699627094530,	-0.415714225382248610,	-0.415668750098117100,	-0.415623273774813730,	-0.415577796412451410,	-0.415532318011145320,	-0.415486838571008490,	-0.415441358092154540,	
+-0.415395876574697230,	-0.415350394018750180,	-0.415304910424427190,	-0.415259425791841890,	-0.415213940121107240,	-0.415168453412338550,	-0.415122965665648710,	-0.415077476881151490,	
+-0.415031987058960550,	-0.414986496199189590,	-0.414941004301952470,	-0.414895511367362020,	-0.414850017395533570,	-0.414804522386580110,	-0.414759026340615290,	-0.414713529257752960,	
+-0.414668031138106800,	-0.414622531981790550,	-0.414577031788917970,	-0.414531530559602010,	-0.414486028293957980,	-0.414440524992098940,	-0.414395020654138580,	-0.414349515280190650,	
+-0.414304008870368940,	-0.414258501424787210,	-0.414212992943558400,	-0.414167483426797990,	-0.414121972874618770,	-0.414076461287134660,	-0.414030948664459440,	-0.413985435006706810,	
+-0.413939920313990570,	-0.413894404586424570,	-0.413848887824121710,	-0.413803370027197470,	-0.413757851195764800,	-0.413712331329937510,	-0.413666810429829390,	-0.413621288495554240,	
+-0.413575765527225860,	-0.413530241524957260,	-0.413484716488863870,	-0.413439190419058630,	-0.413393663315655520,	-0.413348135178768170,	-0.413302606008510540,	-0.413257075804996380,	
+-0.413211544568339470,	-0.413166012298652960,	-0.413120478996052200,	-0.413074944660650260,	-0.413029409292560930,	-0.412983872891898140,	-0.412938335458775620,	-0.412892796993307280,	
+-0.412847257495606910,	-0.412801716965787600,	-0.412756175403964810,	-0.412710632810251610,	-0.412665089184761800,	-0.412619544527609290,	-0.412573998838907880,	-0.412528452118771480,	
+-0.412482904367314000,	-0.412437355584648390,	-0.412391805770890240,	-0.412346254926152570,	-0.412300703050549280,	-0.412255150144194170,	-0.412209596207201270,	-0.412164041239684310,	
+-0.412118485241756480,	-0.412072928213533200,	-0.412027370155127640,	-0.411981811066653660,	-0.411936250948225110,	-0.411890689799955970,	-0.411845127621960070,	-0.411799564414351390,	
+-0.411754000177242950,	-0.411708434910750380,	-0.411662868614986690,	-0.411617301290065800,	-0.411571732936101660,	-0.411526163553208260,	-0.411480593141499370,	-0.411435021701088250,	
+-0.411389449232090310,	-0.411343875734618840,	-0.411298301208787630,	-0.411252725654710660,	-0.411207149072501890,	-0.411161571462275220,	-0.411115992824144630,	-0.411070413158223290,	
+-0.411024832464626680,	-0.410979250743468030,	-0.410933667994861250,	-0.410888084218920260,	-0.410842499415759070,	-0.410796913585491640,	-0.410751326728231110,	-0.410705738844093120,	
+-0.410660149933190720,	-0.410614559995638010,	-0.410568969031548820,	-0.410523377041037250,	-0.410477784024217250,	-0.410432189981202790,	-0.410386594912107050,	-0.410340998817045610,	
+-0.410295401696131660,	-0.410249803549479260,	-0.410204204377202290,	-0.410158604179414850,	-0.410113002956230880,	-0.410067400707764430,	-0.410021797434128640,	-0.409976193135439150,	
+-0.409930587811809190,	-0.409884981463352780,	-0.409839374090183890,	-0.409793765692416600,	-0.409748156270164920,	-0.409702545823542760,	-0.409656934352663480,	-0.409611321857642710,	
+-0.409565708338593570,	-0.409520093795630200,	-0.409474478228866570,	-0.409428861638416740,	-0.409383244024394800,	-0.409337625386913870,	-0.409292005726089760,	-0.409246385042035590,	
+-0.409200763334865490,	-0.409155140604693430,	-0.409109516851633550,	-0.409063892075799910,	-0.409018266277306470,	-0.408972639456266610,	-0.408927011612795930,	-0.408881382747007750,	
+-0.408835752859016130,	-0.408790121948935100,	-0.408744490016878740,	-0.408698857062961160,	-0.408653223087295680,	-0.408607588089997920,	-0.408561952071181180,	-0.408516315030959590,	
+-0.408470676969447170,	-0.408425037886758100,	-0.408379397783006410,	-0.408333756658306240,	-0.408288114512770810,	-0.408242471346515980,	-0.408196827159654940,	-0.408151181952301820,	
+-0.408105535724570760,	-0.408059888476575870,	-0.408014240208431240,	-0.407968590920250230,	-0.407922940612148510,	-0.407877289284239500,	-0.407831636936637210,	-0.407785983569455830,	
+-0.407740329182809560,	-0.407694673776812400,	-0.407649017351578550,	-0.407603359907221410,	-0.407557701443856610,	-0.407512041961597570,	-0.407466381460558470,	-0.407420719940853380,	
+-0.407375057402596500,	-0.407329393845902000,	-0.407283729270883190,	-0.407238063677655860,	-0.407192397066333370,	-0.407146729437029840,	-0.407101060789859530,	-0.407055391124936610,	
+-0.407009720442375160,	-0.406964048742289420,	-0.406918376024793580,	-0.406872702290000940,	-0.406827027538027410,	-0.406781351768986280,	-0.406735674982991790,	-0.406689997180158080,	
+-0.406644318360599390,	-0.406598638524429900,	-0.406552957671763030,	-0.406507275802714560,	-0.406461592917397920,	-0.406415909015927280,	-0.406370224098416890,	-0.406324538164980880,	
+-0.406278851215733590,	-0.406233163250789120,	-0.406187474270260970,	-0.406141784274264950,	-0.406096093262914460,	-0.406050401236323690,	-0.406004708194606990,	-0.405959014137878490,	
+-0.405913319066252440,	-0.405867622979842300,	-0.405821925878763870,	-0.405776227763130660,	-0.405730528633056920,	-0.405684828488656830,	-0.405639127330044650,	-0.405593425157334650,	
+-0.405547721970641100,	-0.405502017770077440,	-0.405456312555759530,	-0.405410606327800850,	-0.405364899086315680,	-0.405319190831418210,	-0.405273481563222790,	-0.405227771281843670,	
+-0.405182059987394320,	-0.405136347679990630,	-0.405090634359746020,	-0.405044920026774890,	-0.404999204681191440,	-0.404953488323109960,	-0.404907770952644740,	-0.404862052569910150,	
+-0.404816333175019580,	-0.404770612768089010,	-0.404724891349231900,	-0.404679168918562540,	-0.404633445476195290,	-0.404587721022244440,	-0.404541995556824240,	-0.404496269080048270,	
+-0.404450541592032420,	-0.404404813092890230,	-0.404359083582735980,	-0.404313353061684090,	-0.404267621529848740,	-0.404221888987344400,	-0.404176155434285310,	-0.404130420870785820,	
+-0.404084685296959460,	-0.404038948712922230,	-0.403993211118787610,	-0.403947472514669950,	-0.403901732900683650,	-0.403855992276942970,	-0.403810250643562350,	-0.403764508000655280,	
+-0.403718764348337760,	-0.403673019686723310,	-0.403627274015926300,	-0.403581527336061120,	-0.403535779647242130,	-0.403490030949583690,	-0.403444281243200140,	-0.403398530528205120,	
+-0.403352778804714540,	-0.403307026072842080,	-0.403261272332701980,	-0.403215517584408770,	-0.403169761828076730,	-0.403124005063820290,	-0.403078247291753010,	-0.403032488511990920,	
+-0.402986728724647640,	-0.402940967929837520,	-0.402895206127674990,	-0.402849443318274440,	-0.402803679501750280,	-0.402757914678216920,	-0.402712148847787940,	-0.402666382010579470,	
+-0.402620614166704970,	-0.402574845316278960,	-0.402529075459415850,	-0.402483304596230050,	-0.402437532726835970,	-0.402391759851347290,	-0.402345985969879970,	-0.402300211082547710,	
+-0.402254435189464910,	-0.402208658290746040,	-0.402162880386505490,	-0.402117101476857750,	-0.402071321561917270,	-0.402025540641797690,	-0.401979758716615070,	-0.401933975786483040,	
+-0.401888191851516090,	-0.401842406911828600,	-0.401796620967535160,	-0.401750834018750110,	-0.401705046065587210,	-0.401659257108162530,	-0.401613467146589630,	-0.401567676180983100,	
+-0.401521884211457400,	-0.401476091238126940,	-0.401430297261106290,	-0.401384502280509920,	-0.401338706296452240,	-0.401292909309047040,	-0.401247111318410340,	-0.401201312324655830,	
+-0.401155512327898090,	-0.401109711328251570,	-0.401063909325830750,	-0.401018106320750190,	-0.400972302313123530,	-0.400926497303066900,	-0.400880691290694040,	-0.400834884276119460,	
+-0.400789076259457700,	-0.400743267240823210,	-0.400697457220330570,	-0.400651646198094290,	-0.400605834174228070,	-0.400560021148848090,	-0.400514207122068030,	-0.400468392094002480,	
+-0.400422576064765940,	-0.400376759034472950,	-0.400330941003238070,	-0.400285121971175050,	-0.400239301938400020,	-0.400193480905026710,	-0.400147658871169710,	-0.400101835836943590,	
+-0.400056011802462860,	-0.400010186767842110,	-0.399964360733195860,	-0.399918533698637950,	-0.399872705664284460,	-0.399826876630249240,	-0.399781046596646820,	-0.399735215563591820,	
+-0.399689383531198760,	-0.399643550499582220,	-0.399597716468856000,	-0.399551881439136280,	-0.399506045410536910,	-0.399460208383172420,	-0.399414370357157380,	-0.399368531332606410,	
+-0.399322691309634100,	-0.399276850288355130,	-0.399231008268883140,	-0.399185165251334520,	-0.399139321235822910,	-0.399093476222463050,	-0.399047630211369460,	-0.399001783202656830,	
+-0.398955935196439740,	-0.398910086192831970,	-0.398864236191949830,	-0.398818385193907110,	-0.398772533198818390,	-0.398726680206798360,	-0.398680826217961640,	-0.398634971232422810,	
+-0.398589115250296610,	-0.398543258271696730,	-0.398497400296739580,	-0.398451541325538890,	-0.398405681358209420,	-0.398359820394865670,	-0.398313958435622400,	-0.398268095480594220,	
+-0.398222231529895830,	-0.398176366583641030,	-0.398130500641946110,	-0.398084633704924970,	-0.398038765772692260,	-0.397992896845362600,	-0.397947026923050730,	-0.397901156005871230,	
+-0.397855284093938890,	-0.397809411187367510,	-0.397763537286273450,	-0.397717662390770500,	-0.397671786500973400,	-0.397625909616996840,	-0.397580031738955510,	-0.397534152866964140,	
+-0.397488273001136540,	-0.397442392141589050,	-0.397396510288435590,	-0.397350627441790890,	-0.397304743601769590,	-0.397258858768486430,	-0.397212972942056150,	-0.397167086122593380,	
+-0.397121198310212140,	-0.397075309505028730,	-0.397029419707156990,	-0.396983528916711740,	-0.396937637133807640,	-0.396891744358559450,	-0.396845850591081910,	-0.396799955831488920,	
+-0.396754060079896890,	-0.396708163336419670,	-0.396662265601172070,	-0.396616366874268770,	-0.396570467155824560,	-0.396524566445954240,	-0.396478664744772450,	-0.396432762052393190,	
+-0.396386858368932840,	-0.396340953694505340,	-0.396295048029225490,	-0.396249141373207990,	-0.396203233726567630,	-0.396157325089419200,	-0.396111415461876670,	-0.396065504844056340,	
+-0.396019593236072330,	-0.395973680638039280,	-0.395927767050072040,	-0.395881852472285410,	-0.395835936904794130,	-0.395790020347713050,	-0.395744102801156020,	-0.395698184265239620,	
+-0.395652264740077700,	-0.395606344225785170,	-0.395560422722476770,	-0.395514500230267300,	-0.395468576749271610,	-0.395422652279604440,	-0.395376726821379810,	-0.395330800374714240,	
+-0.395284872939721590,	-0.395238944516516810,	-0.395193015105214650,	-0.395147084705929960,	-0.395101153318777600,	-0.395055220943872300,	-0.395009287581328140,	-0.394963353231261580,	
+-0.394917417893786650,	-0.394871481569018190,	-0.394825544257071000,	-0.394779605958059940,	-0.394733666672099910,	-0.394687726399304880,	-0.394641785139791310,	-0.394595842893673330,	
+-0.394549899661065680,	-0.394503955442083330,	-0.394458010236841130,	-0.394412064045453810,	-0.394366116868036410,	-0.394320168704702880,	-0.394274219555569740,	-0.394228269420751010,	
+-0.394182318300361660,	-0.394136366194516470,	-0.394090413103330430,	-0.394044459026918310,	-0.393998503965394210,	-0.393952547918874680,	-0.393906590887473820,	-0.393860632871306460,	
+-0.393814673870487520,	-0.393768713885131850,	-0.393722752915354470,	-0.393676790961270170,	-0.393630828022993040,	-0.393584864100639700,	-0.393538899194324220,	-0.393492933304161460,	
+-0.393446966430266390,	-0.393400998572753850,	-0.393355029731738860,	-0.393309059907335500,	-0.393263089099660230,	-0.393217117308827300,	-0.393171144534951560,	-0.393125170778147960,	
+-0.393079196038531480,	-0.393033220316216960,	-0.392987243611319370,	-0.392941265923952900,	-0.392895287254234060,	-0.392849307602276990,	-0.392803326968196640,	-0.392757345352107990,	
+-0.392711362754125990,	-0.392665379174365610,	-0.392619394612941710,	-0.392573409069968570,	-0.392527422545562670,	-0.392481435039838290,	-0.392435446552910240,	-0.392389457084893640,	
+-0.392343466635903360,	-0.392297475206054400,	-0.392251482795461790,	-0.392205489404239660,	-0.392159495032504580,	-0.392113499680370790,	-0.392067503347953260,	-0.392021506035366950,	
+-0.391975507742726880,	-0.391929508470148070,	-0.391883508217744590,	-0.391837506985633240,	-0.391791504773928100,	-0.391745501582744180,	-0.391699497412196560,	-0.391653492262400150,	
+-0.391607486133470020,	-0.391561479025521130,	-0.391515470938667790,	-0.391469461873026560,	-0.391423451828711690,	-0.391377440805838190,	-0.391331428804521100,	-0.391285415824875420,	
+-0.391239401867016170,	-0.391193386931057650,	-0.391147371017116440,	-0.391101354125306830,	-0.391055336255743850,	-0.391009317408542500,	-0.390963297583817810,	-0.390917276781684970,	
+-0.390871255002258890,	-0.390825232245653850,	-0.390779208511986550,	-0.390733183801371290,	-0.390687158113922960,	-0.390641131449756820,	-0.390595103808987820,	-0.390549075191731100,	
+-0.390503045598100840,	-0.390457015028213780,	-0.390410983482184170,	-0.390364950960127130,	-0.390318917462157690,	-0.390272882988390970,	-0.390226847538942050,	-0.390180811113926000,	
+-0.390134773713457120,	-0.390088735337652090,	-0.390042695986625220,	-0.389996655660491690,	-0.389950614359366450,	-0.389904572083364650,	-0.389858528832601470,	-0.389812484607191980,	
+-0.389766439407250420,	-0.389720393232893590,	-0.389674346084235790,	-0.389628297961392140,	-0.389582248864477730,	-0.389536198793607680,	-0.389490147748897120,	-0.389444095730461240,	
+-0.389398042738414270,	-0.389351988772873030,	-0.389305933833951790,	-0.389259877921765750,	-0.389213821036429990,	-0.389167763178059680,	-0.389121704346769960,	-0.389075644542675180,	
+-0.389029583765892140,	-0.388983522016535080,	-0.388937459294719230,	-0.388891395600559740,	-0.388845330934171730,	-0.388799265295670440,	-0.388753198685170940,	-0.388707131102787650,	
+-0.388661062548637360,	-0.388614993022834420,	-0.388568922525493960,	-0.388522851056731230,	-0.388476778616661360,	-0.388430705205399570,	-0.388384630823060180,	-0.388338555469760040,	
+-0.388292479145613490,	-0.388246401850735720,	-0.388200323585241980,	-0.388154244349247450,	-0.388108164142867250,	-0.388062082966216690,	-0.388016000819410070,	-0.387969917702564280,	
+-0.387923833615793750,	-0.387877748559213590,	-0.387831662532939050,	-0.387785575537085310,	-0.387739487571767680,	-0.387693398637100560,	-0.387647308733200690,	-0.387601217860182590,	
+-0.387555126018161440,	-0.387509033207252440,	-0.387462939427570870,	-0.387416844679231990,	-0.387370748962350960,	-0.387324652277042270,	-0.387278554623422750,	-0.387232456001606830,	
+-0.387186356411709790,	-0.387140255853846870,	-0.387094154328133270,	-0.387048051834684330,	-0.387001948373615230,	-0.386955843945040460,	-0.386909738549076900,	-0.386863632185838970,	
+-0.386817524855441960,	-0.386771416558001120,	-0.386725307293631800,	-0.386679197062449190,	-0.386633085864568570,	-0.386586973700104420,	-0.386540860569173640,	-0.386494746471890750,	
+-0.386448631408370990,	-0.386402515378729610,	-0.386356398383082000,	-0.386310280421543360,	-0.386264161494228150,	-0.386218041601253450,	-0.386171920742733600,	-0.386125798918783960,	
+-0.386079676129519770,	-0.386033552375056430,	-0.385987427655509250,	-0.385941301970993470,	-0.385895175321623600,	-0.385849047707516600,	-0.385802919128787000,	-0.385756789585550100,	
+-0.385710659077921240,	-0.385664527606015720,	-0.385618395169948890,	-0.385572261769835280,	-0.385526127405791790,	-0.385479992077932990,	-0.385433855786374180,	-0.385387718531230770,	
+-0.385341580312618060,	-0.385295441130651390,	-0.385249300985446130,	-0.385203159877116840,	-0.385157017805780380,	-0.385110874771551430,	-0.385064730774545280,	-0.385018585814877300,	
+-0.384972439892662890,	-0.384926293008017340,	-0.384880145161055230,	-0.384833996351893640,	-0.384787846580647020,	-0.384741695847430730,	-0.384695544152360290,	-0.384649391495550940,	
+-0.384603237877118140,	-0.384557083297177190,	-0.384510927755842780,	-0.384464771253231810,	-0.384418613789458960,	-0.384372455364639540,	-0.384326295978889010,	-0.384280135632322720,	
+-0.384233974325056130,	-0.384187812057204540,	-0.384141648828882630,	-0.384095484640207430,	-0.384049319491293510,	-0.384003153382256320,	-0.383956986313211230,	-0.383910818284273650,	
+-0.383864649295559020,	-0.383818479347182830,	-0.383772308439259580,	-0.383726136571906350,	-0.383679963745237830,	-0.383633789959369360,	-0.383587615214416420,	-0.383541439510494460,	
+-0.383495262847718900,	-0.383449085226204360,	-0.383402906646067910,	-0.383356727107424240,	-0.383310546610388710,	-0.383264365155076840,	-0.383218182741604020,	-0.383171999370085780,	
+-0.383125815040637530,	-0.383079629753373900,	-0.383033443508412060,	-0.382987256305866550,	-0.382941068145852940,	-0.382894879028486680,	-0.382848688953883190,	-0.382802497922157980,	
+-0.382756305933425740,	-0.382710112987803500,	-0.382663919085406030,	-0.382617724226348770,	-0.382571528410747150,	-0.382525331638716710,	-0.382479133910372970,	-0.382432935225831380,	
+-0.382386735585206640,	-0.382340534988615870,	-0.382294333436173750,	-0.382248130927995810,	-0.382201927464197570,	-0.382155723044894480,	-0.382109517670202130,	-0.382063311340235130,	
+-0.382017104055110630,	-0.381970895814943420,	-0.381924686619848960,	-0.381878476469942830,	-0.381832265365340430,	-0.381786053306157390,	-0.381739840292509240,	-0.381693626324510650,	
+-0.381647411402278810,	-0.381601195525928470,	-0.381554978695575140,	-0.381508760911334340,	-0.381462542173321650,	-0.381416322481652580,	-0.381370101836441930,	-0.381323880237806830,	
+-0.381277657685862030,	-0.381231434180723080,	-0.381185209722505520,	-0.381138984311324980,	-0.381092757947296970,	-0.381046530630537010,	-0.381000302361160780,	-0.380954073139282980,	
+-0.380907842965020780,	-0.380861611838488990,	-0.380815379759803170,	-0.380769146729078910,	-0.380722912746431770,	-0.380676677811977340,	-0.380630441925830400,	-0.380584205088108200,	
+-0.380537967298925470,	-0.380491728558397860,	-0.380445488866640870,	-0.380399248223770190,	-0.380353006629901350,	-0.380306764085150020,	-0.380260520589631000,	-0.380214276143461430,	
+-0.380168030746756200,	-0.380121784399630900,	-0.380075537102201160,	-0.380029288854582540,	-0.379983039656890730,	-0.379936789509240480,	-0.379890538411749080,	-0.379844286364531320,	
+-0.379798033367702850,	-0.379751779421379330,	-0.379705524525676300,	-0.379659268680709480,	-0.379613011886594520,	-0.379566754143446210,	-0.379520495451381780,	-0.379474235810516200,	
+-0.379427975220964940,	-0.379381713682843790,	-0.379335451196268380,	-0.379289187761354290,	-0.379242923378216410,	-0.379196658046972060,	-0.379150391767736070,	-0.379104124540624140,	
+-0.379057856365751840,	-0.379011587243234920,	-0.378965317173189040,	-0.378919046155729860,	-0.378872774190972210,	-0.378826501279033500,	-0.378780227420028480,	-0.378733952614072940,	
+-0.378687676861282520,	-0.378641400161772890,	-0.378595122515659740,	-0.378548843923057990,	-0.378502564384084970,	-0.378456283898855490,	-0.378410002467485350,	-0.378363720090090170,	
+-0.378317436766785700,	-0.378271152497687610,	-0.378224867282911660,	-0.378178581122573580,	-0.378132294016788160,	-0.378086005965672880,	-0.378039716969342580,	-0.377993427027912940,	
+-0.377947136141499770,	-0.377900844310218750,	-0.377854551534185680,	-0.377808257813515350,	-0.377761963148325160,	-0.377715667538730150,	-0.377669370984845930,	-0.377623073486788250,	
+-0.377576775044672910,	-0.377530475658615640,	-0.377484175328732190,	-0.377437874055137460,	-0.377391571837948860,	-0.377345268677281350,	-0.377298964573250680,	-0.377252659525972590,	
+-0.377206353535562870,	-0.377160046602137200,	-0.377113738725810670,	-0.377067429906700560,	-0.377021120144921900,	-0.376974809440590420,	-0.376928497793821930,	-0.376882185204732210,	
+-0.376835871673437020,	-0.376789557200052140,	-0.376743241784692540,	-0.376696925427475680,	-0.376650608128516470,	-0.376604289887930770,	-0.376557970705834360,	-0.376511650582342980,	
+-0.376465329517572500,	-0.376419007511637870,	-0.376372684564656560,	-0.376326360676743520,	-0.376280035848014560,	-0.376233710078585580,	-0.376187383368572270,	-0.376141055718090480,	
+-0.376094727127256110,	-0.376048397596184080,	-0.376002067124991850,	-0.375955735713794480,	-0.375909403362707730,	-0.375863070071847550,	-0.375816735841329630,	-0.375770400671269880,	
+-0.375724064561783310,	-0.375677727512987390,	-0.375631389524997190,	-0.375585050597928520,	-0.375538710731897150,	-0.375492369927019070,	-0.375446028183410050,	-0.375399685501185960,	
+-0.375353341880462650,	-0.375306997321355200,	-0.375260651823981000,	-0.375214305388455240,	-0.375167958014893670,	-0.375121609703412240,	-0.375075260454126760,	-0.375028910267153180,	
+-0.374982559142606480,	-0.374936207080604160,	-0.374889854081261350,	-0.374843500144693920,	-0.374797145271017710,	-0.374750789460348680,	-0.374704432712802630,	-0.374658075028495520,	
+-0.374611716407542430,	-0.374565356850060820,	-0.374518996356165810,	-0.374472634925973380,	-0.374426272559599320,	-0.374379909257159580,	-0.374333545018770030,	-0.374287179844545850,	
+-0.374240813734604550,	-0.374194446689061160,	-0.374148078708031680,	-0.374101709791632040,	-0.374055339939978080,	-0.374008969153185770,	-0.373962597431371060,	-0.373916224774649030,	
+-0.373869851183137260,	-0.373823476656950870,	-0.373777101196205770,	-0.373730724801017930,	-0.373684347471503250,	-0.373637969207777750,	-0.373591590009956450,	-0.373545209878157040,	
+-0.373498828812494580,	-0.373452446813085090,	-0.373406063880044440,	-0.373359680013488630,	-0.373313295213533620,	-0.373266909480295390,	-0.373220522813889070,	-0.373174135214432270,	
+-0.373127746682040130,	-0.373081357216828610,	-0.373034966818913680,	-0.372988575488411360,	-0.372942183225437600,	-0.372895790030107530,	-0.372849395902538850,	-0.372803000842846680,	
+-0.372756604851146980,	-0.372710207927555770,	-0.372663810072189020,	-0.372617411285162790,	-0.372571011566593000,	-0.372524610916595720,	-0.372478209335286080,	-0.372431806822781710,	
+-0.372385403379197840,	-0.372338999004650450,	-0.372292593699255600,	-0.372246187463129210,	-0.372199780296387390,	-0.372153372199145290,	-0.372106963171520590,	-0.372060553213628460,	
+-0.372014142325584940,	-0.371967730507506090,	-0.371921317759507930,	-0.371874904081706430,	-0.371828489474217700,	-0.371782073937156900,	-0.371735657470641740,	-0.371689240074787490,	
+-0.371642821749710080,	-0.371596402495525670,	-0.371549982312350200,	-0.371503561200299810,	-0.371457139159489690,	-0.371410716190037520,	-0.371364292292058580,	-0.371317867465668920,	
+-0.371271441710984530,	-0.371225015028121610,	-0.371178587417196120,	-0.371132158878324180,	-0.371085729411620990,	-0.371039299017204340,	-0.370992867695189410,	-0.370946435445692280,	
+-0.370900002268829130,	-0.370853568164715930,	-0.370807133133468860,	-0.370760697175203100,	-0.370714260290036400,	-0.370667822478084050,	-0.370621383739462180,	-0.370574944074286820,	
+-0.370528503482674130,	-0.370482061964740150,	-0.370435619520601060,	-0.370389176150372030,	-0.370342731854170940,	-0.370296286632113000,	-0.370249840484314360,	-0.370203393410891090,	
+-0.370156945411959370,	-0.370110496487635280,	-0.370064046638034110,	-0.370017595863273650,	-0.369971144163469210,	-0.369924691538736860,	-0.369878237989192840,	-0.369831783514953220,	
+-0.369785328116134130,	-0.369738871792851700,	-0.369692414545221280,	-0.369645956373360670,	-0.369599497277385170,	-0.369553037257410900,	-0.369506576313554050,	-0.369460114445930740,	
+-0.369413651654657170,	-0.369367187939849460,	-0.369320723301622970,	-0.369274257740095480,	-0.369227791255382350,	-0.369181323847599720,	-0.369134855516863810,	-0.369088386263290770,	
+-0.369041916086996770,	-0.368995444988097940,	-0.368948972966709700,	-0.368902500022949830,	-0.368856026156933750,	-0.368809551368777580,	-0.368763075658597510,	-0.368716599026509770,	
+-0.368670121472630560,	-0.368623642997075170,	-0.368577163599961510,	-0.368530683281404980,	-0.368484202041521710,	-0.368437719880427950,	-0.368391236798239870,	-0.368344752795073730,	
+-0.368298267871045690,	-0.368251782026271120,	-0.368205295260867980,	-0.368158807574951560,	-0.368112318968638160,	-0.368065829442043910,	-0.368019338995285160,	-0.367972847628477980,	
+-0.367926355341737900,	-0.367879862135182760,	-0.367833368008927960,	-0.367786872963089760,	-0.367740376997784340,	-0.367693880113127980,	-0.367647382309236940,	-0.367600883586227440,	
+-0.367554383944214910,	-0.367507883383317250,	-0.367461381903649850,	-0.367414879505329030,	-0.367368376188471010,	-0.367321871953192050,	-0.367275366799608370,	-0.367228860727835500,	
+-0.367182353737991240,	-0.367135845830191150,	-0.367089337004551430,	-0.367042827261188360,	-0.366996316600218250,	-0.366949805021757340,	-0.366903292525921910,	-0.366856779112827380,	
+-0.366810264782591770,	-0.366763749535330530,	-0.366717233371159860,	-0.366670716290196150,	-0.366624198292555600,	-0.366577679378354620,	-0.366531159547709370,	-0.366484638800735450,	
+-0.366438117137550760,	-0.366391594558270750,	-0.366345071063011730,	-0.366298546651890100,	-0.366252021325022050,	-0.366205495082523980,	-0.366158967924512140,	-0.366112439851102090,	
+-0.366065910862411750,	-0.366019380958556630,	-0.365972850139653030,	-0.365926318405817350,	-0.365879785757165840,	-0.365833252193814910,	-0.365786717715880010,	-0.365740182323479100,	
+-0.365693646016727770,	-0.365647108795742300,	-0.365600570660639110,	-0.365554031611534440,	-0.365507491648544740,	-0.365460950771786250,	-0.365414408981374620,	-0.365367866277427730,	
+-0.365321322660061230,	-0.365274778129391410,	-0.365228232685534620,	-0.365181686328607260,	-0.365135139058725690,	-0.365088590876005430,	-0.365042041780564540,	-0.364995491772518550,	
+-0.364948940851983820,	-0.364902389019076730,	-0.364855836273913710,	-0.364809282616611050,	-0.364762728047285210,	-0.364716172566051710,	-0.364669616173028620,	-0.364623058868331460,	
+-0.364576500652076640,	-0.364529941524380620,	-0.364483381485359750,	-0.364436820535130380,	-0.364390258673808140,	-0.364343695901511110,	-0.364297132218354860,	-0.364250567624455730,	
+-0.364204002119930200,	-0.364157435704894670,	-0.364110868379465550,	-0.364064300143759230,	-0.364017730997891360,	-0.363971160941979950,	-0.363924589976140690,	-0.363878018100489920,	
+-0.363831445315144160,	-0.363784871620219720,	-0.363738297015833160,	-0.363691721502100830,	-0.363645145079138370,	-0.363598567747063840,	-0.363551989505992930,	-0.363505410356042060,	
+-0.363458830297327620,	-0.363412249329966130,	-0.363365667454074000,	-0.363319084669767760,	-0.363272500977162900,	-0.363225916376377690,	-0.363179330867527630,	-0.363132744450729240,	
+-0.363086157126099040,	-0.363039568893753440,	-0.362992979753808900,	-0.362946389706381050,	-0.362899798751588120,	-0.362853206889545640,	-0.362806614120370190,	-0.362760020444178160,	
+-0.362713425861086070,	-0.362666830371210450,	-0.362620233974667750,	-0.362573636671573660,	-0.362527038462046260,	-0.362480439346201280,	-0.362433839324155180,	-0.362387238396024550,	
+-0.362340636561925780,	-0.362294033821975390,	-0.362247430176289130,	-0.362200825624985120,	-0.362154220168179050,	-0.362107613805987380,	-0.362061006538526740,	-0.362014398365913540,	
+-0.361967789288264400,	-0.361921179305695730,	-0.361874568418323270,	-0.361827956626265270,	-0.361781343929637340,	-0.361734730328556080,	-0.361688115823137980,	-0.361641500413499630,	
+-0.361594884099757490,	-0.361548266882027290,	-0.361501648760427290,	-0.361455029735073150,	-0.361408409806081410,	-0.361361788973568690,	-0.361315167237651500,	-0.361268544598446370,	
+-0.361221921056069870,	-0.361175296610637740,	-0.361128671262268220,	-0.361082045011076990,	-0.361035417857180680,	-0.360988789800695820,	-0.360942160841738970,	-0.360895530980426760,	
+-0.360848900216875660,	-0.360802268551201510,	-0.360755635983522560,	-0.360709002513954440,	-0.360662368142613880,	-0.360615732869617340,	-0.360569096695081530,	-0.360522459619122940,	
+-0.360475821641858210,	-0.360429182763403130,	-0.360382542983875900,	-0.360335902303392300,	-0.360289260722068900,	-0.360242618240022410,	-0.360195974857369370,	-0.360149330574226380,	
+-0.360102685390709220,	-0.360056039306936190,	-0.360009392323023090,	-0.359962744439086490,	-0.359916095655243020,	-0.359869445971609300,	-0.359822795388301970,	-0.359776143905437720,	
+-0.359729491523132220,	-0.359682838241503820,	-0.359636184060668330,	-0.359589528980742370,	-0.359542873001842570,	-0.359496216124085610,	-0.359449558347588130,	-0.359402899672465910,	
+-0.359356240098837270,	-0.359309579626818030,	-0.359262918256524840,	-0.359216255988074380,	-0.359169592821583230,	-0.359122928757168110,	-0.359076263794945730,	-0.359029597935031810,	
+-0.358982931177544710,	-0.358936263522600270,	-0.358889594970315250,	-0.358842925520806160,	-0.358796255174189780,	-0.358749583930582820,	-0.358702911790101000,	-0.358656238752862730,	
+-0.358609564818983930,	-0.358562889988581160,	-0.358516214261771160,	-0.358469537638670680,	-0.358422860119396280,	-0.358376181704064820,	-0.358329502392791990,	-0.358282822185696290,	
+-0.358236141082893530,	-0.358189459084500390,	-0.358142776190633620,	-0.358096092401409880,	-0.358049407716945930,	-0.358002722137358510,	-0.357956035662763410,	-0.357909348293279030,	
+-0.357862660029021280,	-0.357815970870106910,	-0.357769280816652600,	-0.357722589868775090,	-0.357675898026591110,	-0.357629205290217410,	-0.357582511659769840,	-0.357535817135366810,	
+-0.357489121717124270,	-0.357442425405158910,	-0.357395728199587480,	-0.357349030100526710,	-0.357302331108093400,	-0.357255631222403390,	-0.357208930443575160,	-0.357162228771724600,	
+-0.357115526206968510,	-0.357068822749423530,	-0.357022118399206560,	-0.356975413156434270,	-0.356928707021223420,	-0.356881999993690020,	-0.356835292073952430,	-0.356788583262126590,	
+-0.356741873558329310,	-0.356695162962677340,	-0.356648451475287450,	-0.356601739096276460,	-0.356555025825760260,	-0.356508311663857380,	-0.356461596610683660,	-0.356414880666355960,	
+-0.356368163830991120,	-0.356321446104705790,	-0.356274727487616900,	-0.356228007979841170,	-0.356181287581494590,	-0.356134566292695630,	-0.356087844113560260,	-0.356041121044205270,	
+-0.355994397084747450,	-0.355947672235303660,	-0.355900946495990690,	-0.355854219866924500,	-0.355807492348223620,	-0.355760763940004000,	-0.355714034642382490,	-0.355667304455475900,	
+-0.355620573379401010,	-0.355573841414274730,	-0.355527108560213800,	-0.355480374817334300,	-0.355433640185754680,	-0.355386904665590970,	-0.355340168256959970,	-0.355293430959978560,	
+-0.355246692774763620,	-0.355199953701431930,	-0.355153213740100340,	-0.355106472890884870,	-0.355059731153904050,	-0.355012988529273930,	-0.354966245017111330,	-0.354919500617533080,	
+-0.354872755330656100,	-0.354826009156597230,	-0.354779262095473390,	-0.354732514147400480,	-0.354685765312497180,	-0.354639015590879460,	-0.354592264982664160,	-0.354545513487968260,	
+-0.354498761106908530,	-0.354452007839601900,	-0.354405253686164430,	-0.354358498646714650,	-0.354311742721368620,	-0.354264985910243250,	-0.354218228213455390,	-0.354171469631122000,	
+-0.354124710163359890,	-0.354077949810286060,	-0.354031188572016490,	-0.353984426448669790,	-0.353937663440361980,	-0.353890899547210090,	-0.353844134769330910,	-0.353797369106841340,	
+-0.353750602559858410,	-0.353703835128498120,	-0.353657066812879120,	-0.353610297613117410,	-0.353563527529329960,	-0.353516756561633730,	-0.353469984710145570,	-0.353423211974982440,	
+-0.353376438356261310,	-0.353329663854098200,	-0.353282888468611830,	-0.353236112199918180,	-0.353189335048134270,	-0.353142557013377050,	-0.353095778095763420,	-0.353048998295410370,	
+-0.353002217612433940,	-0.352955436046952840,	-0.352908653599083130,	-0.352861870268941780,	-0.352815086056645740,	-0.352768300962312040,	-0.352721514986057530,	-0.352674728127999270,	
+-0.352627940388253350,	-0.352581151766938440,	-0.352534362264170560,	-0.352487571880066850,	-0.352440780614744210,	-0.352393988468319600,	-0.352347195440910030,	-0.352300401532631650,	
+-0.352253606743603060,	-0.352206811073940470,	-0.352160014523760830,	-0.352113217093181220,	-0.352066418782318540,	-0.352019619591289750,	-0.351972819520211980,	-0.351926018569202140,	
+-0.351879216738376410,	-0.351832414027853540,	-0.351785610437749530,	-0.351738805968181580,	-0.351692000619266590,	-0.351645194391121570,	-0.351598387283863560,	-0.351551579297608770,	
+-0.351504770432475850,	-0.351457960688581040,	-0.351411150066041340,	-0.351364338564973730,	-0.351317526185495280,	-0.351270712927722990,	-0.351223898791773960,	-0.351177083777764300,	
+-0.351130267885812810,	-0.351083451116035620,	-0.351036633468549850,	-0.350989814943472420,	-0.350942995540920510,	-0.350896175261011130,	-0.350849354103860420,	-0.350802532069587170,	
+-0.350755709158307620,	-0.350708885370138780,	-0.350662060705197730,	-0.350615235163601550,	-0.350568408745467240,	-0.350521581450911950,	-0.350474753280051840,	-0.350427924233005670,	
+-0.350381094309889730,	-0.350334263510821030,	-0.350287431835916710,	-0.350240599285293770,	-0.350193765859069310,	-0.350146931557359650,	-0.350100096380283440,	-0.350053260327957030,	
+-0.350006423400497480,	-0.349959585598021870,	-0.349912746920647280,	-0.349865907368490820,	-0.349819066941669590,	-0.349772225640299860,	-0.349725383464500440,	-0.349678540414387510,	
+-0.349631696490078250,	-0.349584851691689740,	-0.349538006019339100,	-0.349491159473143460,	-0.349444312053219070,	-0.349397463759684780,	-0.349350614592656760,	-0.349303764552252260,	
+-0.349256913638588300,	-0.349210061851782110,	-0.349163209191950710,	-0.349116355659211340,	-0.349069501253681020,	-0.349022645975476160,	-0.348975789824715550,	-0.348928932801515380,	
+-0.348882074905992930,	-0.348835216138265290,	-0.348788356498449640,	-0.348741495986663040,	-0.348694634603021910,	-0.348647772347644990,	-0.348600909220648680,	-0.348554045222150060,	
+-0.348507180352266350,	-0.348460314611114650,	-0.348413447998812190,	-0.348366580515476140,	-0.348319712161222760,	-0.348272842936171000,	-0.348225972840437050,	-0.348179101874138200,	
+-0.348132230037391630,	-0.348085357330314430,	-0.348038483753023880,	-0.347991609305636270,	-0.347944733988270470,	-0.347897857801042820,	-0.347850980744070560,	-0.347804102817470820,	
+-0.347757224021360830,	-0.347710344355857790,	-0.347663463821078880,	-0.347616582417140500,	-0.347569700144161440,	-0.347522817002258180,	-0.347475932991547890,	-0.347429048112147700,	
+-0.347382162364174960,	-0.347335275747746750,	-0.347288388262979590,	-0.347241499909992260,	-0.347194610688901170,	-0.347147720599823570,	-0.347100829642876640,	-0.347053937818177670,	
+-0.347007045125843790,	-0.346960151565992360,	-0.346913257138739720,	-0.346866361844204770,	-0.346819465682503880,	-0.346772568653754390,	-0.346725670758073420,	-0.346678771995578280,	
+-0.346631872366386210,	-0.346584971870613660,	-0.346538070508379480,	-0.346491168279800140,	-0.346444265184992830,	-0.346397361224074940,	-0.346350456397163610,	-0.346303550704376130,	
+-0.346256644145829800,	-0.346209736721641790,	-0.346162828431928690,	-0.346115919276809290,	-0.346069009256400110,	-0.346022098370818430,	-0.345975186620181510,	-0.345928274004606570,	
+-0.345881360524210980,	-0.345834446179111190,	-0.345787530969426050,	-0.345740614895272140,	-0.345693697956766690,	-0.345646780154026940,	-0.345599861487170260,	-0.345552941956313970,	
+-0.345506021561575280,	-0.345459100303070750,	-0.345412178180919240,	-0.345365255195237310,	-0.345318331346142260,	-0.345271406633751390,	-0.345224481058181990,	-0.345177554619551350,	
+-0.345130627317976000,	-0.345083699153574950,	-0.345036770126464660,	-0.344989840236762440,	-0.344942909484585560,	-0.344895977870051500,	-0.344849045393277430,	-0.344802112054380770,	
+-0.344755177853477980,	-0.344708242790688070,	-0.344661306866127560,	-0.344614370079913800,	-0.344567432432164140,	-0.344520493922995830,	-0.344473554552526320,	-0.344426614320872130,	
+-0.344379673228152160,	-0.344332731274483050,	-0.344285788459982140,	-0.344238844784766740,	-0.344191900248954190,	-0.344144954852661940,	-0.344098008596007250,	-0.344051061479106750,	
+-0.344004113502079430,	-0.343957164665041780,	-0.343910214968111250,	-0.343863264411405190,	-0.343816312995041010,	-0.343769360719136000,	-0.343722407583806730,	-0.343675453589172290,	
+-0.343628498735349230,	-0.343581543022454920,	-0.343534586450606750,	-0.343487629019922140,	-0.343440670730518430,	-0.343393711582513030,	-0.343346751576022510,	-0.343299790711166010,	
+-0.343252828988059980,	-0.343205866406821880,	-0.343158902967569120,	-0.343111938670419110,	-0.343064973515489260,	-0.343018007502896960,	-0.342971040632758790,	-0.342924072905193890,	
+-0.342877104320318820,	-0.342830134878250980,	-0.342783164579107790,	-0.342736193423006650,	-0.342689221410065080,	-0.342642248540400430,	-0.342595274814129320,	-0.342548300231370890,	
+-0.342501324792241710,	-0.342454348496859180,	-0.342407371345340830,	-0.342360393337803990,	-0.342313414474366200,	-0.342266434755144010,	-0.342219454180256620,	-0.342172472749820540,	
+-0.342125490463953350,	-0.342078507322772400,	-0.342031523326395140,	-0.341984538474939090,	-0.341937552768521720,	-0.341890566207259660,	-0.341843578791271970,	-0.341796590520675350,	
+-0.341749601395587240,	-0.341702611416125120,	-0.341655620582406510,	-0.341608628894548790,	-0.341561636352668730,	-0.341514642956885380,	-0.341467648707315440,	-0.341420653604076360,	
+-0.341373657647285670,	-0.341326660837060760,	-0.341279663173519270,	-0.341232664656778590,	-0.341185665286955490,	-0.341138665064168960,	-0.341091663988535800,	-0.341044662060173530,	
+-0.340997659279199560,	-0.340950655645731460,	-0.340903651159886690,	-0.340856645821781990,	-0.340809639631536490,	-0.340762632589266870,	-0.340715624695090700,	-0.340668615949125450,	
+-0.340621606351488690,	-0.340574595902297880,	-0.340527584601670650,	-0.340480572449723570,	-0.340433559446575880,	-0.340386545592344330,	-0.340339530887146360,	-0.340292515331099610,	
+-0.340245498924321540,	-0.340198481666929790,	-0.340151463559041740,	-0.340104444600774270,	-0.340057424792246490,	-0.340010404133575140,	-0.339963382624877800,	-0.339916360266272030,	
+-0.339869337057875310,	-0.339822312999805250,	-0.339775288092179440,	-0.339728262335114550,	-0.339681235728729880,	-0.339634208273142060,	-0.339587179968468770,	-0.339540150814827520,	
+-0.339493120812335900,	-0.339446089961111420,	-0.339399058261270930,	-0.339352025712933660,	-0.339304992316216250,	-0.339257958071236430,	-0.339210922978111670,	-0.339163887036959600,	
+-0.339116850247897840,	-0.339069812611043910,	-0.339022774126514660,	-0.338975734794429330,	-0.338928694614904600,	-0.338881653588058160,	-0.338834611714007580,	-0.338787568992870490,	
+-0.338740525424764460,	-0.338693481009806290,	-0.338646435748115260,	-0.338599389639808120,	-0.338552342685002510,	-0.338505294883816090,	-0.338458246236366390,	-0.338411196742771040,	
+-0.338364146403147770,	-0.338317095217613270,	-0.338270043186286840,	-0.338222990309285320,	-0.338175936586726340,	-0.338128882018727480,	-0.338081826605406480,	-0.338034770346880840,	
+-0.337987713243267480,	-0.337940655294685700,	-0.337893596501252220,	-0.337846536863084800,	-0.337799476380301000,	-0.337752415053018560,	-0.337705352881355060,	-0.337658289865428120,	
+-0.337611226005354700,	-0.337564161301254000,	-0.337517095753242900,	-0.337470029361439110,	-0.337422962125960180,	-0.337375894046923920,	-0.337328825124447840,	-0.337281755358649740,	
+-0.337234684749646460,	-0.337187613297557250,	-0.337140541002499020,	-0.337093467864589440,	-0.337046393883946190,	-0.336999319060686920,	-0.336952243394929410,	-0.336905166886791230,	
+-0.336858089536389350,	-0.336811011343843060,	-0.336763932309269260,	-0.336716852432785600,	-0.336669771714509850,	-0.336622690154559650,	-0.336575607753052670,	-0.336528524510105900,	
+-0.336481440425838660,	-0.336434355500367770,	-0.336387269733811060,	-0.336340183126286110,	-0.336293095677910710,	-0.336246007388802610,	-0.336198918259079490,	-0.336151828288858200,	
+-0.336104737478258200,	-0.336057645827396330,	-0.336010553336390410,	-0.335963460005358040,	-0.335916365834417030,	-0.335869270823685120,	-0.335822174973279210,	-0.335775078283318710,	
+-0.335727980753920460,	-0.335680882385202270,	-0.335633783177281930,	-0.335586683130277060,	-0.335539582244305520,	-0.335492480519485050,	-0.335445377955932490,	-0.335398274553767360,	
+-0.335351170313106520,	-0.335304065234067750,	-0.335256959316768850,	-0.335209852561327510,	-0.335162744967861580,	-0.335115636536487960,	-0.335068527267326060,	-0.335021417160492830,	
+-0.334974306216106080,	-0.334927194434283540,	-0.334880081815143000,	-0.334832968358802330,	-0.334785854065379140,	-0.334738738934990570,	-0.334691622967755950,	-0.334644506163792270,	
+-0.334597388523217300,	-0.334550270046148900,	-0.334503150732704810,	-0.334456030583002830,	-0.334408909597160800,	-0.334361787775295630,	-0.334314665117526890,	-0.334267541623971430,	
+-0.334220417294747110,	-0.334173292129971770,	-0.334126166129763200,	-0.334079039294239210,	-0.334031911623517640,	-0.333984783117715400,	-0.333937653776952110,	-0.333890523601344640,	
+-0.333843392591010870,	-0.333796260746068610,	-0.333749128066635700,	-0.333701994552830010,	-0.333654860204768420,	-0.333607725022570580,	-0.333560589006353440,	-0.333513452156234790,	
+-0.333466314472332490,	-0.333419175954764450,	-0.333372036603648450,	-0.333324896419102350,	-0.333277755401243210,	-0.333230613550190460,	-0.333183470866061200,	-0.333136327348973300,	
+-0.333089182999044550,	-0.333042037816392860,	-0.332994891801136060,	-0.332947744953391190,	-0.332900597273277810,	-0.332853448760912880,	-0.332806299416414380,	-0.332759149239900130,	
+-0.332711998231488000,	-0.332664846391295900,	-0.332617693719441660,	-0.332570540216042380,	-0.332523385881217550,	-0.332476230715084250,	-0.332429074717760400,	-0.332381917889363830,	
+-0.332334760230012460,	-0.332287601739824250,	-0.332240442418916150,	-0.332193282267407800,	-0.332146121285416260,	-0.332098959473059400,	-0.332051796830455100,	-0.332004633357721350,	
+-0.331957469054976030,	-0.331910303922337000,	-0.331863137959921390,	-0.331815971167848780,	-0.331768803546236220,	-0.331721635095201690,	-0.331674465814863040,	-0.331627295705338280,	
+-0.331580124766745200,	-0.331532952999201880,	-0.331485780402825280,	-0.331438606977735080,	-0.331391432724048420,	-0.331344257641883130,	-0.331297081731357190,	-0.331249904992588550,	
+-0.331202727425695180,	-0.331155549030794920,	-0.331108369808005010,	-0.331061189757445030,	-0.331014008879232050,	-0.330966827173484020,	-0.330919644640318920,	-0.330872461279854760,	
+-0.330825277092209440,	-0.330778092077500030,	-0.330730906235846280,	-0.330683719567365250,	-0.330636532072174920,	-0.330589343750393280,	-0.330542154602138260,	-0.330494964627527870,	
+-0.330447773826680060,	-0.330400582199711970,	-0.330353389746743280,	-0.330306196467891060,	-0.330259002363273440,	-0.330211807433008260,	-0.330164611677213560,	-0.330117415096007340,	
+-0.330070217689506730,	-0.330023019457831410,	-0.329975820401098570,	-0.329928620519426170,	-0.329881419812932230,	-0.329834218281734700,	-0.329787015925951670,	-0.329739812745701080,	
+-0.329692608741100120,	-0.329645403912268490,	-0.329598198259323350,	-0.329550991782382670,	-0.329503784481564590,	-0.329456576356987000,	-0.329409367408767970,	-0.329362157637024640,	
+-0.329314947041876800,	-0.329267735623441640,	-0.329220523381837050,	-0.329173310317181220,	-0.329126096429592120,	-0.329078881719187700,	-0.329031666186086150,	-0.328984449830404590,	
+-0.328937232652262710,	-0.328890014651777750,	-0.328842795829067780,	-0.328795576184250820,	-0.328748355717444870,	-0.328701134428768080,	-0.328653912318338460,	-0.328606689386273190,	
+-0.328559465632692060,	-0.328512241057712260,	-0.328465015661451860,	-0.328417789444028880,	-0.328370562405561510,	-0.328323334546167630,	-0.328276105865965510,	-0.328228876365072250,	
+-0.328181646043607610,	-0.328134414901688880,	-0.328087182939434120,	-0.328039950156961410,	-0.327992716554388770,	-0.327945482131834390,	-0.327898246889415430,	-0.327851010827251770,	
+-0.327803773945460510,	-0.327756536244159850,	-0.327709297723467800,	-0.327662058383502540,	-0.327614818224382150,	-0.327567577246224710,	-0.327520335449147440,	-0.327473092833270200,	
+-0.327425849398710280,	-0.327378605145585640,	-0.327331360074014590,	-0.327284114184115070,	-0.327236867476005280,	-0.327189619949802500,	-0.327142371605626480,	-0.327095122443594570,	
+-0.327047872463824830,	-0.327000621666435400,	-0.326953370051544400,	-0.326906117619270020,	-0.326858864369730330,	-0.326811610303042620,	-0.326764355419326750,	-0.326717099718700000,	
+-0.326669843201280450,	-0.326622585867186340,	-0.326575327716535750,	-0.326528068749446840,	-0.326480808966036930,	-0.326433548366425800,	-0.326386286950730850,	-0.326339024719070170,	
+-0.326291761671561880,	-0.326244497808324260,	-0.326197233129475350,	-0.326149967635133380,	-0.326102701325415630,	-0.326055434200441970,	-0.326008166260329750,	-0.325960897505197080,	
+-0.325913627935162150,	-0.325866357550343210,	-0.325819086350858320,	-0.325771814336824890,	-0.325724541508362770,	-0.325677267865589310,	-0.325629993408622700,	-0.325582718137581050,	
+-0.325535442052582670,	-0.325488165153745620,	-0.325440887441188210,	-0.325393608915028550,	-0.325346329575384060,	-0.325299049422374530,	-0.325251768456117420,	-0.325204486676730850,	
+-0.325157204084333130,	-0.325109920679042370,	-0.325062636460976770,	-0.325015351430253780,	-0.324968065586993260,	-0.324920778931312550,	-0.324873491463329890,	-0.324826203183163520,	
+-0.324778914090931630,	-0.324731624186752440,	-0.324684333470744210,	-0.324637041943024280,	-0.324589749603712620,	-0.324542456452926560,	-0.324495162490784420,	-0.324447867717404300,	
+-0.324400572132904570,	-0.324353275737403360,	-0.324305978531018170,	-0.324258680513868800,	-0.324211381686072770,	-0.324164082047748330,	-0.324116781599013640,	-0.324069480339987000,	
+-0.324022178270786660,	-0.323974875391530860,	-0.323927571702337050,	-0.323880267203325130,	-0.323832961894612580,	-0.323785655776317570,	-0.323738348848558450,	-0.323691041111453470,	
+-0.323643732565120910,	-0.323596423209678130,	-0.323549113045245140,	-0.323501802071939400,	-0.323454490289879100,	-0.323407177699182650,	-0.323359864299968210,	-0.323312550092354100,	
+-0.323265235076458660,	-0.323217919252399230,	-0.323170602620295900,	-0.323123285180266010,	-0.323075966932427960,	-0.323028647876899940,	-0.322981328013800310,	-0.322934007343247400,	
+-0.322886685865358620,	-0.322839363580253950,	-0.322792040488050880,	-0.322744716588867660,	-0.322697391882822700,	-0.322650066370034290,	-0.322602740050620670,	-0.322555412924700190,	
+-0.322508084992391200,	-0.322460756253811150,	-0.322413426709080080,	-0.322366096358315420,	-0.322318765201635490,	-0.322271433239158690,	-0.322224100471003310,	-0.322176766897287640,	
+-0.322129432518129200,	-0.322082097333648070,	-0.322034761343961700,	-0.321987424549188380,	-0.321940086949446540,	-0.321892748544854450,	-0.321845409335530520,	-0.321798069321593050,	
+-0.321750728503159560,	-0.321703386880350110,	-0.321656044453282160,	-0.321608701222074130,	-0.321561357186844310,	-0.321514012347711150,	-0.321466666704792960,	-0.321419320258207190,	
+-0.321371973008074020,	-0.321324624954510920,	-0.321277276097636230,	-0.321229926437568370,	-0.321182575974425680,	-0.321135224708326560,	-0.321087872639389370,	-0.321040519767731680,	
+-0.320993166093473500,	-0.320945811616732410,	-0.320898456337626810,	-0.320851100256275060,	-0.320803743372795550,	-0.320756385687306690,	-0.320709027199926000,	-0.320661667910773610,	
+-0.320614307819967080,	-0.320566946927624720,	-0.320519585233865030,	-0.320472222738806380,	-0.320424859442567160,	-0.320377495345265770,	-0.320330130447019860,	-0.320282764747949420,	
+-0.320235398248172100,	-0.320188030947806230,	-0.320140662846970350,	-0.320093293945782730,	-0.320045924244361960,	-0.319998553742825490,	-0.319951182441293500,	-0.319903810339883520,	
+-0.319856437438714060,	-0.319809063737903470,	-0.319761689237570260,	-0.319714313937832780,	-0.319666937838809560,	-0.319619560940618940,	-0.319572183243378600,	-0.319524804747208680,	
+-0.319477425452226740,	-0.319430045358551180,	-0.319382664466300540,	-0.319335282775593250,	-0.319287900286547740,	-0.319240516999281690,	-0.319193132913915100,	-0.319145748030565720,	
+-0.319098362349352020,	-0.319050975870392330,	-0.319003588593805230,	-0.318956200519709190,	-0.318908811648222600,	-0.318861421979463160,	-0.318814031513551030,	-0.318766640250603810,	
+-0.318719248190739990,	-0.318671855334078050,	-0.318624461680736440,	-0.318577067230833680,	-0.318529671984487450,	-0.318482275941817830,	-0.318434879102942550,	-0.318387481467980070,	
+-0.318340083037048920,	-0.318292683810267540,	-0.318245283787754460,	-0.318197882969628140,	-0.318150481356006260,	-0.318103078947009070,	-0.318055675742754170,	-0.318008271743360050,	
+-0.317960866948945260,	-0.317913461359628340,	-0.317866054975527720,	-0.317818647796761110,	-0.317771239823448790,	-0.317723831055708340,	-0.317676421493658270,	-0.317629011137417210,	
+-0.317581599987103560,	-0.317534188042835950,	-0.317486775304732850,	-0.317439361772911990,	-0.317391947447493550,	-0.317344532328595270,	-0.317297116416335620,	-0.317249699710833220,	
+-0.317202282212206590,	-0.317154863920574180,	-0.317107444836053800,	-0.317060024958765670,	-0.317012604288827440,	-0.316965182826357720,	-0.316917760571475080,	-0.316870337524298000,	
+-0.316822913684945080,	-0.316775489053534860,	-0.316728063630185960,	-0.316680637415016010,	-0.316633210408145350,	-0.316585782609691610,	-0.316538354019773480,	-0.316490924638509420,	
+-0.316443494466018050,	-0.316396063502418000,	-0.316348631747826900,	-0.316301199202365050,	-0.316253765866150230,	-0.316206331739300960,	-0.316158896821935930,	-0.316111461114173600,	
+-0.316064024616132640,	-0.316016587327931590,	-0.315969149249688270,	-0.315921710381522890,	-0.315874270723553230,	-0.315826830275897920,	-0.315779389038675530,	-0.315731947012004630,	
+-0.315684504196003910,	-0.315637060590791050,	-0.315589616196486460,	-0.315542171013207750,	-0.315494725041073620,	-0.315447278280202690,	-0.315399830730713590,	-0.315352382392724890,	
+-0.315304933266355230,	-0.315257483351722380,	-0.315210032648946700,	-0.315162581158145880,	-0.315115128879438660,	-0.315067675812943590,	-0.315020221958779380,	-0.314972767317064580,	
+-0.314925311887917000,	-0.314877855671457040,	-0.314830398667802380,	-0.314782940877071760,	-0.314735482299383750,	-0.314688022934857090,	-0.314640562783610360,	-0.314593101845762170,	
+-0.314545640121430440,	-0.314498177610735450,	-0.314450714313794950,	-0.314403250230727740,	-0.314355785361652370,	-0.314308319706687540,	-0.314260853265951930,	-0.314213386039563340,	
+-0.314165918027642100,	-0.314118449230306070,	-0.314070979647673940,	-0.314023509279864330,	-0.313976038126995980,	-0.313928566189187520,	-0.313881093466557680,	-0.313833619959224210,	
+-0.313786145667307560,	-0.313738670590925530,	-0.313691194730196850,	-0.313643718085240160,	-0.313596240656174200,	-0.313548762443117580,	-0.313501283446189110,	-0.313453803665506570,	
+-0.313406323101190380,	-0.313358841753358370,	-0.313311359622129250,	-0.313263876707621740,	-0.313216393009954520,	-0.313168908529246340,	-0.313121423265615870,	-0.313073937219181030,	
+-0.313026450390062160,	-0.312978962778377170,	-0.312931474384244790,	-0.312883985207783710,	-0.312836495249112670,	-0.312789004508350400,	-0.312741512985614760,	-0.312694020681026200,	
+-0.312646527594702570,	-0.312599033726762620,	-0.312551539077325080,	-0.312504043646508690,	-0.312456547434432240,	-0.312409050441214360,	-0.312361552666973070,	-0.312314054111828670,	
+-0.312266554775899210,	-0.312219054659303330,	-0.312171553762159770,	-0.312124052084587380,	-0.312076549626704840,	-0.312029046388630100,	-0.311981542370483590,	-0.311934037572383190,	
+-0.311886531994447770,	-0.311839025636795940,	-0.311791518499546560,	-0.311744010582818420,	-0.311696501886730200,	-0.311648992411399930,	-0.311601482156948000,	-0.311553971123492370,	
+-0.311506459311151840,	-0.311458946720045150,	-0.311411433350291090,	-0.311363919202008400,	-0.311316404275315100,	-0.311268888570331640,	-0.311221372087175980,	-0.311173854825966880,	
+-0.311126336786823110,	-0.311078817969863530,	-0.311031298375206880,	-0.310983778002972000,	-0.310936256853276800,	-0.310888734926241860,	-0.310841212221985020,	-0.310793688740625180,	
+-0.310746164482281150,	-0.310698639447071660,	-0.310651113635115610,	-0.310603587046531740,	-0.310556059681438120,	-0.310508531539955110,	-0.310461002622200830,	-0.310413472928294020,	
+-0.310365942458353530,	-0.310318411212498200,	-0.310270879190846840,	-0.310223346393518280,	-0.310175812820630500,	-0.310128278472304010,	-0.310080743348656870,	-0.310033207449807830,	
+-0.309985670775875800,	-0.309938133326979610,	-0.309890595103238020,	-0.309843056104769140,	-0.309795516331693500,	-0.309747975784129050,	-0.309700434462194640,	-0.309652892366009120,	
+-0.309605349495691410,	-0.309557805851360280,	-0.309510261433134700,	-0.309462716241132580,	-0.309415170275474550,	-0.309367623536278560,	-0.309320076023663510,	-0.309272527737748270,	
+-0.309224978678651730,	-0.309177428846492740,	-0.309129878241389320,	-0.309082326863462100,	-0.309034774712828970,	-0.308987221789608970,	-0.308939668093920930,	-0.308892113625883650,	
+-0.308844558385616140,	-0.308797002373237210,	-0.308749445588864970,	-0.308701888032619940,	-0.308654329704620150,	-0.308606770604984590,	-0.308559210733832080,	-0.308511650091281560,	
+-0.308464088677451900,	-0.308416526492461150,	-0.308368963536429950,	-0.308321399809476370,	-0.308273835311719260,	-0.308226270043277570,	-0.308178704004270170,	-0.308131137194816050,	
+-0.308083569615034080,	-0.308036001265042330,	-0.307988432144961410,	-0.307940862254909460,	-0.307893291595005340,	-0.307845720165367990,	-0.307798147966116320,	-0.307750574997369240,	
+-0.307703001259245770,	-0.307655426751863970,	-0.307607851475344420,	-0.307560275429805240,	-0.307512698615365400,	-0.307465121032143800,	-0.307417542680259390,	-0.307369963559831150,	
+-0.307322383670977970,	-0.307274803013817990,	-0.307227221588471880,	-0.307179639395057660,	-0.307132056433694340,	-0.307084472704500950,	-0.307036888207596340,	-0.306989302943099510,	
+-0.306941716911128540,	-0.306894130111804160,	-0.306846542545244460,	-0.306798954211568390,	-0.306751365110894960,	-0.306703775243343080,	-0.306656184609031820,	-0.306608593208080040,	
+-0.306561001040605960,	-0.306513408106730220,	-0.306465814406570950,	-0.306418219940247150,	-0.306370624707877790,	-0.306323028709581890,	-0.306275431945478400,	-0.306227834415685460,	
+-0.306180236120323800,	-0.306132637059511600,	-0.306085037233367770,	-0.306037436642011330,	-0.305989835285561280,	-0.305942233164136710,	-0.305894630277856520,	-0.305847026626838880,	
+-0.305799422211204600,	-0.305751817031071680,	-0.305704211086559260,	-0.305656604377786300,	-0.305608996904871810,	-0.305561388667934860,	-0.305513779667093590,	-0.305466169902468720,	
+-0.305418559374178440,	-0.305370948082341720,	-0.305323336027077620,	-0.305275723208505210,	-0.305228109626743520,	-0.305180495281911550,	-0.305132880174127430,	-0.305085264303512020,	
+-0.305037647670183430,	-0.304990030274260690,	-0.304942412115862930,	-0.304894793195109090,	-0.304847173512118320,	-0.304799553067009570,	-0.304751931859901130,	-0.304704309890913680,	
+-0.304656687160165420,	-0.304609063667775510,	-0.304561439413862930,	-0.304513814398546690,	-0.304466188621945970,	-0.304418562084179780,	-0.304370934785366310,	-0.304323306725626410,	
+-0.304275677905078150,	-0.304228048323840760,	-0.304180417982033210,	-0.304132786879774690,	-0.304085155017184140,	-0.304037522394379870,	-0.303989889011482610,	-0.303942254868610650,	
+-0.303894619965883070,	-0.303846984303418940,	-0.303799347881337330,	-0.303751710699757370,	-0.303704072758798130,	-0.303656434058577840,	-0.303608794599217360,	-0.303561154380834810,	
+-0.303513513403549430,	-0.303465871667480290,	-0.303418229172746410,	-0.303370585919467030,	-0.303322941907760270,	-0.303275297137747040,	-0.303227651609545570,	-0.303180005323274940,	
+-0.303132358279054330,	-0.303084710477002810,	-0.303037061917239500,	-0.302989412599883550,	-0.302941762525053230,	-0.302894111692869340,	-0.302846460103450180,	-0.302798807756914870,	
+-0.302751154653382480,	-0.302703500792972260,	-0.302655846175803320,	-0.302608190801993860,	-0.302560534671664830,	-0.302512877784934410,	-0.302465220141921790,	-0.302417561742746140,	
+-0.302369902587526610,	-0.302322242676382300,	-0.302274582009432360,	-0.302226920586795180,	-0.302179258408591500,	-0.302131595474939670,	-0.302083931785958880,	-0.302036267341768250,	
+-0.301988602142486910,	-0.301940936188234090,	-0.301893269479128980,	-0.301845602015289820,	-0.301797933796837450,	-0.301750264823890280,	-0.301702595096567490,	-0.301654924614988160,	
+-0.301607253379271520,	-0.301559581389536810,	-0.301511908645903100,	-0.301464235148488750,	-0.301416560897414700,	-0.301368885892799200,	-0.301321210134761540,	-0.301273533623420800,	
+-0.301225856358896260,	-0.301178178341307110,	-0.301130499570771590,	-0.301082820047410720,	-0.301035139771342830,	-0.300987458742687010,	-0.300939776961562600,	-0.300892094428088730,	
+-0.300844411142384640,	-0.300796727104569510,	-0.300749042314761680,	-0.300701356773082130,	-0.300653670479649190,	-0.300605983434582060,	-0.300558295638000020,	-0.300510607090022200,	
+-0.300462917790767840,	-0.300415227740355340,	-0.300367536938905670,	-0.300319845386537110,	-0.300272153083368960,	-0.300224460029520410,	-0.300176766225110750,	-0.300129071670259150,	
+-0.300081376365084860,	-0.300033680309706290,	-0.299985983504244320,	-0.299938285948817440,	-0.299890587643544870,	-0.299842888588545800,	-0.299795188783939510,	-0.299747488229845260,	
+-0.299699786926381440,	-0.299652084873668960,	-0.299604382071826330,	-0.299556678520972730,	-0.299508974221227410,	-0.299461269172709650,	-0.299413563375538700,	-0.299365856829833910,	
+-0.299318149535713560,	-0.299270441493298730,	-0.299222732702707770,	-0.299175023164060030,	-0.299127312877474680,	-0.299079601843071090,	-0.299031890060968420,	-0.298984177531286090,	
+-0.298936464254142440,	-0.298888750229658500,	-0.298841035457952650,	-0.298793319939144260,	-0.298745603673352570,	-0.298697886660696800,	-0.298650168901296360,	-0.298602450395270500,	
+-0.298554731142737670,	-0.298507011143818890,	-0.298459290398632500,	-0.298411568907297970,	-0.298363846669934480,	-0.298316123686661380,	-0.298268399957597960,	-0.298220675482862680,	
+-0.298172950262576560,	-0.298125224296858060,	-0.298077497585826520,	-0.298029770129601250,	-0.297982041928301580,	-0.297934312982046760,	-0.297886583290956130,	-0.297838852855148220,	
+-0.297791121674744030,	-0.297743389749862030,	-0.297695657080621570,	-0.297647923667141990,	-0.297600189509542590,	-0.297552454607942660,	-0.297504718962460780,	-0.297456982573217950,	
+-0.297409245440332700,	-0.297361507563924320,	-0.297313768944112160,	-0.297266029581015560,	-0.297218289474753870,	-0.297170548625446510,	-0.297122807033211920,	-0.297075064698171130,	
+-0.297027321620442710,	-0.296979577800145940,	-0.296931833237400300,	-0.296884087932325010,	-0.296836341885039550,	-0.296788595095662360,	-0.296740847564314510,	-0.296693099291114590,	
+-0.296645350276181890,	-0.296597600519635800,	-0.296549850021595730,	-0.296502098782181030,	-0.296454346801511110,	-0.296406594079704430,	-0.296358840616882170,	-0.296311086413162780,	
+-0.296263331468665680,	-0.296215575783510210,	-0.296167819357815830,	-0.296120062191701890,	-0.296072304285286970,	-0.296024545638692130,	-0.295976786252035940,	-0.295929026125437760,	
+-0.295881265259017030,	-0.295833503652893130,	-0.295785741307185490,	-0.295737978222013480,	-0.295690214397496490,	-0.295642449833753150,	-0.295594684530904540,	-0.295546918489069220,	
+-0.295499151708366600,	-0.295451384188916090,	-0.295403615930837140,	-0.295355846934249100,	-0.295308077199270660,	-0.295260306726022830,	-0.295212535514624230,	-0.295164763565194330,	
+-0.295116990877852480,	-0.295069217452718190,	-0.295021443289910870,	-0.294973668389549860,	-0.294925892751753900,	-0.294878116376644070,	-0.294830339264338880,	-0.294782561414957900,	
+-0.294734782828620480,	-0.294687003505446130,	-0.294639223445554270,	-0.294591442649063510,	-0.294543661116094980,	-0.294495878846767310,	-0.294448095841199910,	-0.294400312099512280,	
+-0.294352527621823900,	-0.294304742408254160,	-0.294256956458922580,	-0.294209169773947790,	-0.294161382353450910,	-0.294113594197550510,	-0.294065805306366220,	-0.294018015680017340,	
+-0.293970225318623490,	-0.293922434222304020,	-0.293874642391177670,	-0.293826849825365500,	-0.293779056524986260,	-0.293731262490159350,	-0.293683467721004290,	-0.293635672217640530,	
+-0.293587875980187650,	-0.293540079008765050,	-0.293492281303491360,	-0.293444482864487880,	-0.293396683691873160,	-0.293348883785766790,	-0.293301083146288170,	-0.293253281773556810,	
+-0.293205479667692280,	-0.293157676828813160,	-0.293109873257040740,	-0.293062068952493650,	-0.293014263915291340,	-0.292966458145553440,	-0.292918651643399310,	-0.292870844408948620,	
+-0.292823036442320770,	-0.292775227743635350,	-0.292727418313011020,	-0.292679608150568980,	-0.292631797256427960,	-0.292583985630707370,	-0.292536173273526880,	-0.292488360185005960,	
+-0.292440546365264060,	-0.292392731814420050,	-0.292344916532594980,	-0.292297100519907650,	-0.292249283776477580,	-0.292201466302424270,	-0.292153648097867310,	-0.292105829162926270,	
+-0.292058009497720590,	-0.292010189102369090,	-0.291962367976992930,	-0.291914546121710860,	-0.291866723536642450,	-0.291818900221907210,	-0.291771076177624710,	-0.291723251403914530,	
+-0.291675425900895350,	-0.291627599668688510,	-0.291579772707412640,	-0.291531945017187320,	-0.291484116598132170,	-0.291436287450366700,	-0.291388457574010500,	-0.291340626969183230,	
+-0.291292795636003470,	-0.291244963574592560,	-0.291197130785069310,	-0.291149297267553180,	-0.291101463022163830,	-0.291053628049020850,	-0.291005792348243750,	-0.290957955919951330,	
+-0.290910118764264870,	-0.290862280881303110,	-0.290814442271185690,	-0.290766602934032110,	-0.290718762869962070,	-0.290670922079095060,	-0.290623080561550780,	-0.290575238317447970,	
+-0.290527395346907910,	-0.290479551650049350,	-0.290431707226991910,	-0.290383862077855210,	-0.290336016202758840,	-0.290288169601822410,	-0.290240322275164770,	-0.290192474222907120,	
+-0.290144625445168280,	-0.290096775942067950,	-0.290048925713725590,	-0.290001074760260990,	-0.289953223081793670,	-0.289905370678443240,	-0.289857517550329460,	-0.289809663697571000,	
+-0.289761809120289260,	-0.289713953818602990,	-0.289666097792631800,	-0.289618241042495390,	-0.289570383568313380,	-0.289522525370205400,	-0.289474666448290290,	-0.289426806802689340,	
+-0.289378946433521360,	-0.289331085340906010,	-0.289283223524963000,	-0.289235360985811870,	-0.289187497723572380,	-0.289139633738364100,	-0.289091769030305920,	-0.289043903599519150,	
+-0.288996037446122620,	-0.288948170570236030,	-0.288900302971979000,	-0.288852434651471200,	-0.288804565608832330,	-0.288756695844181180,	-0.288708825357639140,	-0.288660954149325020,	
+-0.288613082219358550,	-0.288565209567859360,	-0.288517336194947180,	-0.288469462100741590,	-0.288421587285362380,	-0.288373711748928400,	-0.288325835491560930,	-0.288277958513378900,	
+-0.288230080814501970,	-0.288182202395049820,	-0.288134323255142160,	-0.288086443394898690,	-0.288038562814438290,	-0.287990681513882300,	-0.287942799493349670,	-0.287894916752959970,	
+-0.287847033292833010,	-0.287799149113088460,	-0.287751264213846060,	-0.287703378595225430,	-0.287655492257345600,	-0.287607605200327800,	-0.287559717424291040,	-0.287511828929355010,	
+-0.287463939715639330,	-0.287416049783263850,	-0.287368159132348260,	-0.287320267763011390,	-0.287272375675374720,	-0.287224482869557100,	-0.287176589345678300,	-0.287128695103857970,	
+-0.287080800144215940,	-0.287032904466871910,	-0.286985008071945660,	-0.286937110959555990,	-0.286889213129824350,	-0.286841314582869770,	-0.286793415318811860,	-0.286745515337770370,	
+-0.286697614639865150,	-0.286649713225215870,	-0.286601811093942340,	-0.286553908246163390,	-0.286506004682000550,	-0.286458100401572660,	-0.286410195404999570,	-0.286362289692400960,	
+-0.286314383263896630,	-0.286266476119606320,	-0.286218568259649860,	-0.286170659684146120,	-0.286122750393216550,	-0.286074840386980170,	-0.286026929665556600,	-0.285979018229065800,	
+-0.285931106077627390,	-0.285883193211361240,	-0.285835279630386240,	-0.285787365334823910,	-0.285739450324793140,	-0.285691534600413740,	-0.285643618161805560,	-0.285595701009088270,	
+-0.285547783142381770,	-0.285499864561805820,	-0.285451945267479300,	-0.285404025259523800,	-0.285356104538058260,	-0.285308183103202440,	-0.285260260955076170,	-0.285212338093799260,	
+-0.285164414519491480,	-0.285116490232271810,	-0.285068565232261760,	-0.285020639519580340,	-0.284972713094347300,	-0.284924785956682470,	-0.284876858106705650,	-0.284828929544536700,	
+-0.284781000270295460,	-0.284733070284100830,	-0.284685139586074390,	-0.284637208176335090,	-0.284589276055002780,	-0.284541343222197320,	-0.284493409678038430,	-0.284445475422646090,	
+-0.284397540456139130,	-0.284349604778639240,	-0.284301668390265270,	-0.284253731291137180,	-0.284205793481374760,	-0.284157854961097860,	-0.284109915730426320,	-0.284061975789479950,	
+-0.284014035138377810,	-0.283966093777241470,	-0.283918151706189840,	-0.283870208925342870,	-0.283822265434820360,	-0.283774321234742220,	-0.283726376325228240,	-0.283678430706398310,	
+-0.283630484378371520,	-0.283582537341269310,	-0.283534589595210770,	-0.283486641140315740,	-0.283438691976704130,	-0.283390742104495770,	-0.283342791523810590,	-0.283294840234768420,	
+-0.283246888237488280,	-0.283198935532091740,	-0.283150982118697940,	-0.283103027997426650,	-0.283055073168397790,	-0.283007117631731200,	-0.282959161387546900,	-0.282911204435963790,	
+-0.282863246777103510,	-0.282815288411085160,	-0.282767329338028560,	-0.282719369558053660,	-0.282671409071280300,	-0.282623447877828450,	-0.282575485977817950,	-0.282527523371367880,	
+-0.282479560058599920,	-0.282431596039632970,	-0.282383631314587100,	-0.282335665883582110,	-0.282287699746738010,	-0.282239732904174590,	-0.282191765356011040,	-0.282143797102368920,	
+-0.282095828143367260,	-0.282047858479126060,	-0.281999888109765230,	-0.281951917035404680,	-0.281903945256164300,	-0.281855972772164120,	-0.281807999583523090,	-0.281760025690362960,	
+-0.281712051092802730,	-0.281664075790962420,	-0.281616099784961880,	-0.281568123074921070,	-0.281520145660960010,	-0.281472167543197700,	-0.281424188721755840,	-0.281376209196753490,	
+-0.281328228968310610,	-0.281280248036547220,	-0.281232266401583160,	-0.281184284063538400,	-0.281136301022533010,	-0.281088317278685940,	-0.281040332832118990,	-0.280992347682951170,	
+-0.280944361831302500,	-0.280896375277292890,	-0.280848388021042390,	-0.280800400062670870,	-0.280752411402298400,	-0.280704422040044030,	-0.280656431976029460,	-0.280608441210373820,	
+-0.280560449743197050,	-0.280512457574619180,	-0.280464464704760160,	-0.280416471133739960,	-0.280368476861678590,	-0.280320481888695180,	-0.280272486214911410,	-0.280224489840446460,	
+-0.280176492765420280,	-0.280128494989952850,	-0.280080496514164170,	-0.280032497338174260,	-0.279984497462102240,	-0.279936496886069860,	-0.279888495610196190,	-0.279840493634601340,	
+-0.279792490959405230,	-0.279744487584727860,	-0.279696483510689320,	-0.279648478737409560,	-0.279600473265007750,	-0.279552467093605590,	-0.279504460223322260,	-0.279456452654277820,	
+-0.279408444386592240,	-0.279360435420385520,	-0.279312425755777750,	-0.279264415392887990,	-0.279216404331838140,	-0.279168392572747230,	-0.279120380115735310,	-0.279072366960922470,	
+-0.279024353108428710,	-0.278976338558374060,	-0.278928323310878580,	-0.278880307366061450,	-0.278832290724044420,	-0.278784273384946600,	-0.278736255348888130,	-0.278688236615989020,	
+-0.278640217186369330,	-0.278592197060149090,	-0.278544176237447480,	-0.278496154718386290,	-0.278448132503084760,	-0.278400109591662840,	-0.278352085984240660,	-0.278304061680938300,	
+-0.278256036681875760,	-0.278208010987173130,	-0.278159984596949630,	-0.278111957511327000,	-0.278063929730424490,	-0.278015901254362150,	-0.277967872083260070,	-0.277919842217238310,	
+-0.277871811656416940,	-0.277823780400916040,	-0.277775748450854840,	-0.277727715806355080,	-0.277679682467536050,	-0.277631648434517870,	-0.277583613707420520,	-0.277535578286364160,	
+-0.277487542171468820,	-0.277439505362854670,	-0.277391467860640840,	-0.277343429664949240,	-0.277295390775899040,	-0.277247351193610380,	-0.277199310918203380,	-0.277151269949798050,	
+-0.277103228288514580,	-0.277055185934472150,	-0.277007142887792600,	-0.276959099148595230,	-0.276911054717000120,	-0.276863009593127320,	-0.276814963777097020,	-0.276766917269029360,	
+-0.276718870069044330,	-0.276670822177261360,	-0.276622773593802110,	-0.276574724318785940,	-0.276526674352332970,	-0.276478623694563330,	-0.276430572345597150,	-0.276382520305554490,	
+-0.276334467574554710,	-0.276286414152719590,	-0.276238360040168440,	-0.276190305237021370,	-0.276142249743398570,	-0.276094193559420110,	-0.276046136685206220,	-0.275998079120876980,	
+-0.275950020866551630,	-0.275901961922352110,	-0.275853902288397730,	-0.275805841964808560,	-0.275757780951704780,	-0.275709719249206560,	-0.275661656857434050,	-0.275613593776506520,	
+-0.275565530006545880,	-0.275517465547671370,	-0.275469400400003230,	-0.275421334563661580,	-0.275373268038766610,	-0.275325200825438490,	-0.275277132923797350,	-0.275229064333962490,	
+-0.275180995056055870,	-0.275132925090196710,	-0.275084854436505270,	-0.275036783095101710,	-0.274988711066106170,	-0.274940638349638830,	-0.274892564945819930,	-0.274844490854768750,	
+-0.274796416076607210,	-0.274748340611454640,	-0.274700264459431190,	-0.274652187620657070,	-0.274604110095252540,	-0.274556031883337660,	-0.274507952985032780,	-0.274459873400457080,	
+-0.274411793129732630,	-0.274363712172978670,	-0.274315630530315380,	-0.274267548201863050,	-0.274219465187741870,	-0.274171381488072020,	-0.274123297102972840,	-0.274075212032566300,	
+-0.274027126276971680,	-0.273979039836309280,	-0.273930952710699280,	-0.273882864900261920,	-0.273834776405117330,	-0.273786687225385850,	-0.273738597361186830,	-0.273690506812642120,	
+-0.273642415579871120,	-0.273594323662994130,	-0.273546231062131330,	-0.273498137777402950,	-0.273450043808929180,	-0.273401949156829530,	-0.273353853821225790,	-0.273305757802237430,	
+-0.273257661099984670,	-0.273209563714587770,	-0.273161465646167000,	-0.273113366894842500,	-0.273065267460734620,	-0.273017167343962700,	-0.272969066544648750,	-0.272920965062912080,	
+-0.272872862898873030,	-0.272824760052651830,	-0.272776656524368720,	-0.272728552314143950,	-0.272680447422096960,	-0.272632341848349720,	-0.272584235593021640,	-0.272536128656232950,	
+-0.272488021038103880,	-0.272439912738754840,	-0.272391803758305960,	-0.272343694096877640,	-0.272295583754589180,	-0.272247472731562630,	-0.272199361027917360,	-0.272151248643773770,	
+-0.272103135579251980,	-0.272055021834472390,	-0.272006907409555240,	-0.271958792304620830,	-0.271910676519788560,	-0.271862560055180450,	-0.271814442910916000,	-0.271766325087115400,	
+-0.271718206583898950,	-0.271670087401387040,	-0.271621967539699860,	-0.271573846998957810,	-0.271525725779280300,	-0.271477603880789290,	-0.271429481303604280,	-0.271381358047845580,	
+-0.271333234113633470,	-0.271285109501088250,	-0.271236984210330320,	-0.271188858241479040,	-0.271140731594656460,	-0.271092604269982050,	-0.271044476267576160,	-0.270996347587559030,	
+-0.270948218230051110,	-0.270900088195172580,	-0.270851957483043860,	-0.270803826093784340,	-0.270755694027516150,	-0.270707561284358740,	-0.270659427864432420,	-0.270611293767857470,	
+-0.270563158994754360,	-0.270515023545243320,	-0.270466887419443860,	-0.270418750617478050,	-0.270370613139465370,	-0.270322474985526200,	-0.270274336155780780,	-0.270226196650349530,	
+-0.270178056469352780,	-0.270129915612910890,	-0.270081774081143370,	-0.270033631874172290,	-0.269985488992117110,	-0.269937345435098170,	-0.269889201203235900,	-0.269841056296650670,	
+-0.269792910715462740,	-0.269744764459791670,	-0.269696617529759600,	-0.269648469925485970,	-0.269600321647091130,	-0.269552172694695500,	-0.269504023068419470,	-0.269455872768383340,	
+-0.269407721794707570,	-0.269359570147511610,	-0.269311417826917590,	-0.269263264833045020,	-0.269215111166014320,	-0.269166956825945770,	-0.269118801812959880,	-0.269070646127176960,	
+-0.269022489768716620,	-0.268974332737700880,	-0.268926175034249320,	-0.268878016658482270,	-0.268829857610520250,	-0.268781697890483560,	-0.268733537498492600,	-0.268685376434667830,	
+-0.268637214699129600,	-0.268589052291997480,	-0.268540889213393590,	-0.268492725463437440,	-0.268444561042249560,	-0.268396395949950180,	-0.268348230186659880,	-0.268300063752498990,	
+-0.268251896647587080,	-0.268203728872046300,	-0.268155560425996140,	-0.268107391309557130,	-0.268059221522849670,	-0.268011051065994100,	-0.267962879939110890,	-0.267914708142320550,	
+-0.267866535675742530,	-0.267818362539499030,	-0.267770188733709670,	-0.267722014258494790,	-0.267673839113974850,	-0.267625663300270380,	-0.267577486817501710,	-0.267529309665788470,	
+-0.267481131845252850,	-0.267432953356014360,	-0.267384774198193510,	-0.267336594371910710,	-0.267288413877286410,	-0.267240232714441080,	-0.267192050883495180,	-0.267143868384568330,	
+-0.267095685217782650,	-0.267047501383257720,	-0.266999316881114060,	-0.266951131711472110,	-0.266902945874452290,	-0.266854759370175170,	-0.266806572198760250,	-0.266758384360329780,	
+-0.266710195855003330,	-0.266662006682901410,	-0.266613816844144480,	-0.266565626338853000,	-0.266517435167147430,	-0.266469243329148290,	-0.266421050824975190,	-0.266372857654750330,	
+-0.266324663818593320,	-0.266276469316624630,	-0.266228274148964770,	-0.266180078315734260,	-0.266131881817053490,	-0.266083684653042220,	-0.266035486823822550,	-0.265987288329514180,	
+-0.265939089170237620,	-0.265890889346113320,	-0.265842688857261760,	-0.265794487703803540,	-0.265746285885859020,	-0.265698083403548890,	-0.265649880256992600,	-0.265601676446312500,	
+-0.265553471971628210,	-0.265505266833060250,	-0.265457061030729140,	-0.265408854564755330,	-0.265360647435259440,	-0.265312439642361010,	-0.265264231186182360,	-0.265216022066843190,	
+-0.265167812284463900,	-0.265119601839165110,	-0.265071390731067280,	-0.265023178960290980,	-0.264974966526956790,	-0.264926753431184270,	-0.264878539673095710,	-0.264830325252810860,	
+-0.264782110170450170,	-0.264733894426134210,	-0.264685678019983490,	-0.264637460952118600,	-0.264589243222659200,	-0.264541024831727530,	-0.264492805779443290,	-0.264444586065927080,	
+-0.264396365691299370,	-0.264348144655680740,	-0.264299922959191750,	-0.264251700601952970,	-0.264203477584084080,	-0.264155253905707380,	-0.264107029566942490,	-0.264058804567910090,	
+-0.264010578908730590,	-0.263962352589524720,	-0.263914125610412940,	-0.263865897971515000,	-0.263817669672953170,	-0.263769440714847150,	-0.263721211097317550,	-0.263672980820484900,	
+-0.263624749884469820,	-0.263576518289392820,	-0.263528286035374590,	-0.263480053122534750,	-0.263431819550995650,	-0.263383585320876970,	-0.263335350432299390,	-0.263287114885383370,	
+-0.263238878680249590,	-0.263190641817018620,	-0.263142404295810150,	-0.263094166116746580,	-0.263045927279947580,	-0.262997687785533730,	-0.262949447633625650,	-0.262901206824344040,	
+-0.262852965357809330,	-0.262804723234142220,	-0.262756480453463340,	-0.262708237015892350,	-0.262659992921551680,	-0.262611748170560990,	-0.262563502763040910,	-0.262515256699112130,	
+-0.262467009978895160,	-0.262418762602510680,	-0.262370514570078480,	-0.262322265881720810,	-0.262274016537557440,	-0.262225766537709070,	-0.262177515882296320,	-0.262129264571439700,	
+-0.262081012605260010,	-0.262032759983877710,	-0.261984506707412690,	-0.261936252775987250,	-0.261887998189721190,	-0.261839742948735130,	-0.261791487053149700,	-0.261743230503085570,	
+-0.261694973298663370,	-0.261646715440002840,	-0.261598456927226390,	-0.261550197760453850,	-0.261501937939805750,	-0.261453677465402820,	-0.261405416337365750,	-0.261357154555815100,	
+-0.261308892120871550,	-0.261260629032654900,	-0.261212365291287550,	-0.261164100896889300,	-0.261115835849580810,	-0.261067570149482730,	-0.261019303796715670,	-0.260971036791400430,	
+-0.260922769133656700,	-0.260874500823606860,	-0.260826231861370830,	-0.260777962247069230,	-0.260729691980822690,	-0.260681421062751940,	-0.260633149492977610,	-0.260584877271620440,	
+-0.260536604398800160,	-0.260488330874639300,	-0.260440056699257570,	-0.260391781872775730,	-0.260343506395314390,	-0.260295230266994300,	-0.260246953487936140,	-0.260198676058259750,	
+-0.260150397978087530,	-0.260102119247539290,	-0.260053839866735800,	-0.260005559835797650,	-0.259957279154845620,	-0.259908997824000400,	-0.259860715843382720,	-0.259812433213113200,	
+-0.259764149933311760,	-0.259715866004100790,	-0.259667581425600150,	-0.259619296197930620,	-0.259571010321212770,	-0.259522723795567460,	-0.259474436621115300,	-0.259426148797976150,	
+-0.259377860326272580,	-0.259329571206124270,	-0.259281281437652110,	-0.259232991020976690,	-0.259184699956218790,	-0.259136408243499210,	-0.259088115882938560,	-0.259039822874656770,	
+-0.258991529218776270,	-0.258943234915416930,	-0.258894939964699530,	-0.258846644366744760,	-0.258798348121673400,	-0.258750051229606150,	-0.258701753690662950,	-0.258653455504966210,	
+-0.258605156672635840,	-0.258556857193792570,	-0.258508557068557130,	-0.258460256297050330,	-0.258411954879392840,	-0.258363652815705500,	-0.258315350106108180,	-0.258267046750723320,	
+-0.258218742749670880,	-0.258170438103071550,	-0.258122132811046120,	-0.258073826873715380,	-0.258025520291200070,	-0.257977213063620090,	-0.257928905191097960,	-0.257880596673753570,	
+-0.257832287511707670,	-0.257783977705081050,	-0.257735667253994440,	-0.257687356158568750,	-0.257639044418924600,	-0.257590732035182010,	-0.257542419007463440,	-0.257494105335888850,	
+-0.257445791020578960,	-0.257397476061654640,	-0.257349160459236560,	-0.257300844213445620,	-0.257252527324401740,	-0.257204209792227360,	-0.257155891617042440,	-0.257107572798967840,	
+-0.257059253338124290,	-0.257010933234632590,	-0.256962612488613570,	-0.256914291100187990,	-0.256865969069475840,	-0.256817646396599650,	-0.256769323081679320,	-0.256720999124835700,	
+-0.256672674526189580,	-0.256624349285861750,	-0.256576023403973060,	-0.256527696880644360,	-0.256479369715995500,	-0.256431041910149090,	-0.256382713463225050,	-0.256334384375344280,	
+-0.256286054646627510,	-0.256237724277195660,	-0.256189393267169440,	-0.256141061616669720,	-0.256092729325816560,	-0.256044396394732370,	-0.255996062823537210,	-0.255947728612351880,	
+-0.255899393761297280,	-0.255851058270494150,	-0.255802722140063390,	-0.255754385370124960,	-0.255706047960801430,	-0.255657709912212760,	-0.255609371224479850,	-0.255561031897723500,	
+-0.255512691932064550,	-0.255464351327623910,	-0.255416010084522360,	-0.255367668202879930,	-0.255319325682819180,	-0.255270982524460120,	-0.255222638727923610,	-0.255174294293330490,	
+-0.255125949220801670,	-0.255077603510457940,	-0.255029257162419360,	-0.254980910176808520,	-0.254932562553745360,	-0.254884214293350840,	-0.254835865395745760,	-0.254787515861051030,	
+-0.254739165689387480,	-0.254690814880876030,	-0.254642463435636680,	-0.254594111353792010,	-0.254545758635462140,	-0.254497405280767810,	-0.254449051289829970,	-0.254400696662769490,	
+-0.254352341399707300,	-0.254303985500763390,	-0.254255628966060350,	-0.254207271795718280,	-0.254158913989858020,	-0.254110555548600460,	-0.254062196472066510,	-0.254013836760377090,	
+-0.253965476413653020,	-0.253917115432014450,	-0.253868753815583940,	-0.253820391564481550,	-0.253772028678828200,	-0.253723665158744780,	-0.253675301004352150,	-0.253626936215771310,	
+-0.253578570793123130,	-0.253530204736527600,	-0.253481838046107470,	-0.253433470721982750,	-0.253385102764274340,	-0.253336734173103210,	-0.253288364948590190,	-0.253239995090856260,	
+-0.253191624600022370,	-0.253143253476208530,	-0.253094881719537480,	-0.253046509330129180,	-0.252998136308104580,	-0.252949762653584710,	-0.252901388366690350,	-0.252853013447542570,	
+-0.252804637896261400,	-0.252756261712969500,	-0.252707884897786890,	-0.252659507450834600,	-0.252611129372233570,	-0.252562750662104710,	-0.252514371320568920,	-0.252465991347747280,	
+-0.252417610743759730,	-0.252369229508729090,	-0.252320847642775290,	-0.252272465146019420,	-0.252224082018582370,	-0.252175698260585170,	-0.252127313872148650,	-0.252078928853393000,	
+-0.252030543204440900,	-0.251982156925412480,	-0.251933770016428640,	-0.251885382477610330,	-0.251836994309078630,	-0.251788605510954390,	-0.251740216083358670,	-0.251691826026411550,	
+-0.251643435340235700,	-0.251595044024951310,	-0.251546652080679280,	-0.251498259507540620,	-0.251449866305656300,	-0.251401472475147330,	-0.251353078016133820,	-0.251304682928738480,	
+-0.251256287213081410,	-0.251207890869283630,	-0.251159493897466110,	-0.251111096297749860,	-0.251062698070255890,	-0.251014299215105210,	-0.250965899732417840,	-0.250917499622316630,	
+-0.250869098884921650,	-0.250820697520353960,	-0.250772295528734480,	-0.250723892910184270,	-0.250675489664824340,	-0.250627085792775710,	-0.250578681294158500,	-0.250530276169095400,	
+-0.250481870417706640,	-0.250433464040113190,	-0.250385057036436100,	-0.250336649406796340,	-0.250288241151314980,	-0.250239832270113040,	-0.250191422763310630,	-0.250143012631030500,	
+-0.250094601873392890,	-0.250046190490518740,	-0.249997778482529130,	-0.249949365849545050,	-0.249900952591687600,	-0.249852538709076870,	-0.249804124201835680,	-0.249755709070084150,	
+-0.249707293313943370,	-0.249658876933534330,	-0.249610459928978120,	-0.249562042300395780,	-0.249513624047908310,	-0.249465205171635900,	-0.249416785671701360,	-0.249368365548224860,	
+-0.249319944801327440,	-0.249271523431130150,	-0.249223101437754090,	-0.249174678821320220,	-0.249126255581948840,	-0.249077831719762640,	-0.249029407234881900,	-0.248980982127427610,	
+-0.248932556397520880,	-0.248884130045282760,	-0.248835703070834330,	-0.248787275474296600,	-0.248738847255789850,	-0.248690418415436850,	-0.248641988953357790,	-0.248593558869673770,	
+-0.248545128164505830,	-0.248496696837975100,	-0.248448264890202610,	-0.248399832321308610,	-0.248351399131415850,	-0.248302965320644640,	-0.248254530889115980,	-0.248206095836951020,	
+-0.248157660164270820,	-0.248109223871196470,	-0.248060786957849030,	-0.248012349424348800,	-0.247963911270818540,	-0.247915472497378500,	-0.247867033104149790,	-0.247818593091253480,	
+-0.247770152458810680,	-0.247721711206942530,	-0.247673269335770080,	-0.247624826845413620,	-0.247576383735995910,	-0.247527940007637280,	-0.247479495660458790,	-0.247431050694581570,	
+-0.247382605110126720,	-0.247334158907215330,	-0.247285712085968560,	-0.247237264646506670,	-0.247188816588952450,	-0.247140367913426200,	-0.247091918620049030,	-0.247043468708942060,	
+-0.246995018180226430,	-0.246946567034023230,	-0.246898115270452770,	-0.246849662889637890,	-0.246801209891698850,	-0.246752756276756770,	-0.246704302044932820,	-0.246655847196348120,	
+-0.246607391731123780,	-0.246558935649380940,	-0.246510478951239950,	-0.246462021636823600,	-0.246413563706252200,	-0.246365105159646880,	-0.246316645997128800,	-0.246268186218819130,	
+-0.246219725824838980,	-0.246171264815308630,	-0.246122803190350990,	-0.246074340950086370,	-0.246025878094635860,	-0.245977414624120680,	-0.245928950538661960,	-0.245880485838380850,	
+-0.245832020523398560,	-0.245783554593835330,	-0.245735088049814060,	-0.245686620891455100,	-0.245638153118879570,	-0.245589684732208660,	-0.245541215731563540,	-0.245492746117065400,	
+-0.245444275888834520,	-0.245395805046993790,	-0.245347333591663580,	-0.245298861522965010,	-0.245250388841019300,	-0.245201915545947610,	-0.245153441637871140,	-0.245104967116911070,	
+-0.245056491983187710,	-0.245008016236824000,	-0.244959539877940220,	-0.244911062906657620,	-0.244862585323097350,	-0.244814107127380610,	-0.244765628319628610,	-0.244717148899962540,	
+-0.244668668868502720,	-0.244620188225372100,	-0.244571706970691030,	-0.244523225104580660,	-0.244474742627162260,	-0.244426259538556980,	-0.244377775838886060,	-0.244329291528270680,	
+-0.244280806606831240,	-0.244232321074690640,	-0.244183834931969210,	-0.244135348178788240,	-0.244086860815268870,	-0.244038372841532350,	-0.243989884257699880,	-0.243941395063891870,	
+-0.243892905260231220,	-0.243844414846838300,	-0.243795923823834360,	-0.243747432191340600,	-0.243698939949478280,	-0.243650447098368580,	-0.243601953638132780,	-0.243553459568891210,	
+-0.243504964890766870,	-0.243456469603880120,	-0.243407973708352210,	-0.243359477204304340,	-0.243310980091857780,	-0.243262482371133790,	-0.243213984042252720,	-0.243165485105337560,	
+-0.243116985560508670,	-0.243068485407887340,	-0.243019984647594780,	-0.242971483279752270,	-0.242922981304481030,	-0.242874478721902350,	-0.242825975532136610,	-0.242777471735306780,	
+-0.242728967331533290,	-0.242680462320937370,	-0.242631956703640320,	-0.242583450479763350,	-0.242534943649427760,	-0.242486436212753950,	-0.242437928169864920,	-0.242389419520881080,	
+-0.242340910265923660,	-0.242292400405113990,	-0.242243889938573290,	-0.242195378866422890,	-0.242146867188784030,	-0.242098354905777160,	-0.242049842017525250,	-0.242001328524148740,	
+-0.241952814425768910,	-0.241904299722507040,	-0.241855784414484410,	-0.241807268501822330,	-0.241758751984642080,	-0.241710234863064090,	-0.241661717137211380,	-0.241613198807204360,	
+-0.241564679873164350,	-0.241516160335212640,	-0.241467640193470560,	-0.241419119448059330,	-0.241370598099099470,	-0.241322076146713970,	-0.241273553591023260,	-0.241225030432148680,	
+-0.241176506670211540,	-0.241127982305333140,	-0.241079457337634750,	-0.241030931767237720,	-0.240982405594262540,	-0.240933878818832160,	-0.240885351441067100,	-0.240836823461088670,	
+-0.240788294879018180,	-0.240739765694976960,	-0.240691235909086310,	-0.240642705521467580,	-0.240594174532241220,	-0.240545642941530270,	-0.240497110749455230,	-0.240448577956137420,	
+-0.240400044561698140,	-0.240351510566258780,	-0.240302975969940630,	-0.240254440772864180,	-0.240205904975152480,	-0.240157368576926020,	-0.240108831578306150,	-0.240060293979414200,	
+-0.240011755780371480,	-0.239963216981299410,	-0.239914677582319300,	-0.239866137583551600,	-0.239817596985119450,	-0.239769055787143300,	-0.239720513989744500,	-0.239671971593044430,	
+-0.239623428597164430,	-0.239574885002225850,	-0.239526340808349200,	-0.239477796015657550,	-0.239429250624271420,	-0.239380704634312190,	-0.239332158045901160,	-0.239283610859159750,	
+-0.239235063074209300,	-0.239186514691171190,	-0.239137965710165960,	-0.239089416131316650,	-0.239040865954743830,	-0.238992315180568820,	-0.238943763808913020,	-0.238895211839897810,	
+-0.238846659273644600,	-0.238798106110274720,	-0.238749552349908720,	-0.238700997992669690,	-0.238652443038678160,	-0.238603887488055530,	-0.238555331340923190,	-0.238506774597402520,	
+-0.238458217257614900,	-0.238409659321680900,	-0.238361100789723580,	-0.238312541661863550,	-0.238263981938222120,	-0.238215421618920790,	-0.238166860704080860,	-0.238118299193823800,	
+-0.238069737088270980,	-0.238021174387542940,	-0.237972611091762880,	-0.237924047201051230,	-0.237875482715529500,	-0.237826917635319050,	-0.237778351960541310,	-0.237729785691317700,	
+-0.237681218827769600,	-0.237632651370017630,	-0.237584083318184870,	-0.237535514672391900,	-0.237486945432760140,	-0.237438375599411030,	-0.237389805172465970,	-0.237341234152046390,	
+-0.237292662538272890,	-0.237244090331268590,	-0.237195517531154030,	-0.237146944138050710,	-0.237098370152080020,	-0.237049795573363390,	-0.237001220402022290,	-0.236952644638178140,	
+-0.236904068281951510,	-0.236855491333465590,	-0.236806913792840910,	-0.236758335660198970,	-0.236709756935661180,	-0.236661177619348990,	-0.236612597711383880,	-0.236564017211886380,	
+-0.236515436120979720,	-0.236466854438784490,	-0.236418272165422080,	-0.236369689301014010,	-0.236321105845681720,	-0.236272521799546660,	-0.236223937162730320,	-0.236175351935353240,	
+-0.236126766117538660,	-0.236078179709407170,	-0.236029592711080230,	-0.235981005122679300,	-0.235932416944325850,	-0.235883828176141370,	-0.235835238818247310,	-0.235786648870764310,	
+-0.235738058333815530,	-0.235689467207521620,	-0.235640875492004020,	-0.235592283187384260,	-0.235543690293783780,	-0.235495096811324050,	-0.235446502740125740,	-0.235397908080312050,	
+-0.235349312832003550,	-0.235300716995321820,	-0.235252120570388250,	-0.235203523557324410,	-0.235154925956251730,	-0.235106327767291760,	-0.235057728990565100,	-0.235009129626195000,	
+-0.234960529674302030,	-0.234911929135007770,	-0.234863328008433680,	-0.234814726294701290,	-0.234766123993932070,	-0.234717521106247520,	-0.234668917631768340,	-0.234620313570617690,	
+-0.234571708922916290,	-0.234523103688785590,	-0.234474497868347150,	-0.234425891461722460,	-0.234377284469033050,	-0.234328676890399550,	-0.234280068725945230,	-0.234231459975790730,	
+-0.234182850640057590,	-0.234134240718867320,	-0.234085630212341440,	-0.234037019120601510,	-0.233988407443769000,	-0.233939795181964620,	-0.233891182335311640,	-0.233842568903930680,	
+-0.233793954887943300,	-0.233745340287471020,	-0.233696725102635420,	-0.233648109333557980,	-0.233599492980359420,	-0.233550876043162990,	-0.233502258522089360,	-0.233453640417260080,	
+-0.233405021728796710,	-0.233356402456820790,	-0.233307782601453850,	-0.233259162162817470,	-0.233210541141032320,	-0.233161919536221670,	-0.233113297348506220,	-0.233064674578007530,	
+-0.233016051224847170,	-0.232967427289146660,	-0.232918802771027580,	-0.232870177670611490,	-0.232821551988019130,	-0.232772925723373710,	-0.232724298876795990,	-0.232675671448407530,	
+-0.232627043438329910,	-0.232578414846684650,	-0.232529785673593360,	-0.232481155919176760,	-0.232432525583558120,	-0.232383894666858160,	-0.232335263169198470,	-0.232286631090700610,	
+-0.232237998431486180,	-0.232189365191676770,	-0.232140731371393930,	-0.232092096970758420,	-0.232043461989893510,	-0.231994826428919940,	-0.231946190287959320,	-0.231897553567133210,	
+-0.231848916266563230,	-0.231800278386370960,	-0.231751639926677990,	-0.231703000887605040,	-0.231654361269275470,	-0.231605721071809990,	-0.231557080295330200,	-0.231508438939957730,	
+-0.231459797005814150,	-0.231411154493021080,	-0.231362511401699280,	-0.231313867731972040,	-0.231265223483960140,	-0.231216578657785170,	-0.231167933253568770,	-0.231119287271432520,	
+-0.231070640711498050,	-0.231021993573887000,	-0.230973345858720090,	-0.230924697566120690,	-0.230876048696209530,	-0.230827399249108250,	-0.230778749224938490,	-0.230730098623821820,	
+-0.230681447445879930,	-0.230632795691233570,	-0.230584143360006070,	-0.230535490452318220,	-0.230486836968291610,	-0.230438182908047930,	-0.230389528271708800,	-0.230340873059395850,	
+-0.230292217271230730,	-0.230243560907334170,	-0.230194903967829600,	-0.230146246452837770,	-0.230097588362480290,	-0.230048929696878870,	-0.230000270456155120,	-0.229951610640430680,	
+-0.229902950249827240,	-0.229854289284465520,	-0.229805627744468970,	-0.229756965629958370,	-0.229708302941055320,	-0.229659639677881530,	-0.229610975840558650,	-0.229562311429208300,	
+-0.229513646443951340,	-0.229464980884911100,	-0.229416314752208420,	-0.229367648045964960,	-0.229318980766302360,	-0.229270312913342320,	-0.229221644487206500,	-0.229172975488016570,	
+-0.229124305915893330,	-0.229075635770960210,	-0.229026965053338000,	-0.228978293763148350,	-0.228929621900512970,	-0.228880949465553570,	-0.228832276458391770,	-0.228783602879149260,	
+-0.228734928727946900,	-0.228686254004908080,	-0.228637578710153640,	-0.228588902843805230,	-0.228540226405984560,	-0.228491549396813350,	-0.228442871816413260,	-0.228394193664905130,	
+-0.228345514942412370,	-0.228296835649055810,	-0.228248155784957160,	-0.228199475350238160,	-0.228150794345020450,	-0.228102112769425740,	-0.228053430623575750,	-0.228004747907591340,	
+-0.227956064621595900,	-0.227907380765710320,	-0.227858696340056290,	-0.227810011344755510,	-0.227761325779929690,	-0.227712639645700570,	-0.227663952942188970,	-0.227615265669518370,	
+-0.227566577827809590,	-0.227517889417184400,	-0.227469200437764450,	-0.227420510889671520,	-0.227371820773027310,	-0.227323130087953520,	-0.227274438834571070,	-0.227225747013003380,	
+-0.227177054623371320,	-0.227128361665796640,	-0.227079668140401040,	-0.227030974047306270,	-0.226982279386634070,	-0.226933584158505310,	-0.226884888363043440,	-0.226836192000369360,	
+-0.226787495070604810,	-0.226738797573871500,	-0.226690099510291200,	-0.226641400879985660,	-0.226592701683076630,	-0.226544001919684960,	-0.226495301589934170,	-0.226446600693945090,	
+-0.226397899231839560,	-0.226349197203739250,	-0.226300494609765950,	-0.226251791450041400,	-0.226203087724687390,	-0.226154383433824800,	-0.226105678577577100,	-0.226056973156065210,	
+-0.226008267169410890,	-0.225959560617735920,	-0.225910853501162020,	-0.225862145819811010,	-0.225813437573804620,	-0.225764728763263760,	-0.225716019388311960,	-0.225667309449070120,	
+-0.225618598945660000,	-0.225569887878203370,	-0.225521176246822020,	-0.225472464051637730,	-0.225423751292771420,	-0.225375037970346610,	-0.225326324084484190,	-0.225277609635305960,	
+-0.225228894622933720,	-0.225180179047489240,	-0.225131462909094300,	-0.225082746207870720,	-0.225034028943939400,	-0.224985311117423870,	-0.224936592728445070,	-0.224887873777124770,	
+-0.224839154263584810,	-0.224790434187946950,	-0.224741713550333010,	-0.224692992350863900,	-0.224644270589663210,	-0.224595548266851820,	-0.224546825382551550,	-0.224498101936884240,	
+-0.224449377929971690,	-0.224400653361935650,	-0.224351928232898010,	-0.224303202542979670,	-0.224254476292304190,	-0.224205749480992530,	-0.224157022109166490,	-0.224108294176947890,	
+-0.224059565684458560,	-0.224010836631820310,	-0.223962107019154120,	-0.223913376846583520,	-0.223864646114229460,	-0.223815914822213800,	-0.223767182970658340,	-0.223718450559684950,	
+-0.223669717589415420,	-0.223620984059971580,	-0.223572249971474430,	-0.223523515324047520,	-0.223474780117811830,	-0.223426044352889180,	-0.223377308029401420,	-0.223328571147470400,	
+-0.223279833707217930,	-0.223231095708765900,	-0.223182357152235250,	-0.223133618037749560,	-0.223084878365429840,	-0.223036138135397940,	-0.222987397347775670,	-0.222938656002684920,	
+-0.222889914100247530,	-0.222841171640585340,	-0.222792428623819370,	-0.222743685050073190,	-0.222694940919467820,	-0.222646196232125060,	-0.222597450988166830,	-0.222548705187714970,	
+-0.222499958830891350,	-0.222451211917816970,	-0.222402464448615420,	-0.222353716423407700,	-0.222304967842315710,	-0.222256218705461280,	-0.222207469012966310,	-0.222158718764952660,	
+-0.222109967961542230,	-0.222061216602856020,	-0.222012464689017610,	-0.221963712220148050,	-0.221914959196369220,	-0.221866205617802960,	-0.221817451484571220,	-0.221768696796795840,	
+-0.221719941554597840,	-0.221671185758100880,	-0.221622429407425940,	-0.221573672502694910,	-0.221524915044029710,	-0.221476157031552240,	-0.221427398465384370,	-0.221378639345648000,	
+-0.221329879672464150,	-0.221281119445956490,	-0.221232358666246020,	-0.221183597333454660,	-0.221134835447704290,	-0.221086073009116840,	-0.221037310017814210,	-0.220988546473917440,	
+-0.220939782377550190,	-0.220891017728833460,	-0.220842252527889190,	-0.220793486774839290,	-0.220744720469805670,	-0.220695953612910250,	-0.220647186204274950,	-0.220598418244020820,	
+-0.220549649732271510,	-0.220500880669148050,	-0.220452111054772410,	-0.220403340889266500,	-0.220354570172752230,	-0.220305798905351540,	-0.220257027087186360,	-0.220208254718377740,	
+-0.220159481799049340,	-0.220110708329322220,	-0.220061934309318360,	-0.220013159739159660,	-0.219964384618968060,	-0.219915608948865500,	-0.219866832728973890,	-0.219818055959414370,	
+-0.219769278640310540,	-0.219720500771783540,	-0.219671722353955300,	-0.219622943386947710,	-0.219574163870882800,	-0.219525383805882460,	-0.219476603192067800,	-0.219427822029562510,	
+-0.219379040318487650,	-0.219330258058965190,	-0.219281475251117100,	-0.219232691895065310,	-0.219183907990931790,	-0.219135123538838520,	-0.219086338538906550,	-0.219037552991259600,	
+-0.218988766896018760,	-0.218939980253306020,	-0.218891193063243340,	-0.218842405325952670,	-0.218793617041555980,	-0.218744828210174380,	-0.218696038831931560,	-0.218647248906948670,	
+-0.218598458435347640,	-0.218549667417250490,	-0.218500875852779160,	-0.218452083742055630,	-0.218403291085201900,	-0.218354497882339070,	-0.218305704133590850,	-0.218256909839078390,	
+-0.218208114998923650,	-0.218159319613248640,	-0.218110523682175290,	-0.218061727205825670,	-0.218012930184320830,	-0.217964132617784550,	-0.217915334506337960,	-0.217866535850103020,	
+-0.217817736649201730,	-0.217768936903756090,	-0.217720136613888120,	-0.217671335779719810,	-0.217622534401372300,	-0.217573732478969300,	-0.217524930012631980,	-0.217476127002482340,	
+-0.217427323448642380,	-0.217378519351234120,	-0.217329714710379540,	-0.217280909526200690,	-0.217232103798818720,	-0.217183297528357330,	-0.217134490714937680,	-0.217085683358681840,	
+-0.217036875459711760,	-0.216988067018149520,	-0.216939258034117090,	-0.216890448507736530,	-0.216841638439128960,	-0.216792827828418190,	-0.216744016675725320,	-0.216695204981172450,	
+-0.216646392744881540,	-0.216597579966974650,	-0.216548766647573800,	-0.216499952786800180,	-0.216451138384777560,	-0.216402323441627080,	-0.216353507957470770,	-0.216304691932430710,	
+-0.216255875366628940,	-0.216207058260187430,	-0.216158240613228330,	-0.216109422425872720,	-0.216060603698244450,	-0.216011784430464650,	-0.215962964622655410,	-0.215914144274938740,	
+-0.215865323387436720,	-0.215816501960271380,	-0.215767679993563940,	-0.215718857487438130,	-0.215670034442015210,	-0.215621210857417200,	-0.215572386733766160,	-0.215523562071184140,	
+-0.215474736869793240,	-0.215425911129715460,	-0.215377084851072070,	-0.215328258033986840,	-0.215279430678580940,	-0.215230602784976470,	-0.215181774353295500,	-0.215132945383660070,	
+-0.215084115876192310,	-0.215035285831013360,	-0.214986455248247080,	-0.214937624128014680,	-0.214888792470438210,	-0.214839960275639730,	-0.214791127543741380,	-0.214742294274865210,	
+-0.214693460469133290,	-0.214644626126666850,	-0.214595791247589730,	-0.214546955832023130,	-0.214498119880089130,	-0.214449283391909830,	-0.214400446367607330,	-0.214351608807303700,	
+-0.214302770711121050,	-0.214253932079180640,	-0.214205092911606220,	-0.214156253208519110,	-0.214107412970041350,	-0.214058572196295040,	-0.214009730887402330,	-0.213960889043485260,	
+-0.213912046664665120,	-0.213863203751065710,	-0.213814360302808320,	-0.213765516320015030,	-0.213716671802807930,	-0.213667826751309160,	-0.213618981165640820,	-0.213570135045925010,	
+-0.213521288392283020,	-0.213472441204838690,	-0.213423593483713230,	-0.213374745229028770,	-0.213325896440907490,	-0.213277047119471430,	-0.213228197264842790,	-0.213179346877143630,	
+-0.213130495956495250,	-0.213081644503021470,	-0.213032792516843620,	-0.212983939998083770,	-0.212935086946864060,	-0.212886233363306640,	-0.212837379247533650,	-0.212788524599666320,	
+-0.212739669419828550,	-0.212690813708141640,	-0.212641957464727670,	-0.212593100689708800,	-0.212544243383207180,	-0.212495385545344970,	-0.212446527176244290,	-0.212397668276026410,	
+-0.212348808844815250,	-0.212299948882732040,	-0.212251088389898980,	-0.212202227366438180,	-0.212153365812471820,	-0.212104503728122060,	-0.212055641113510160,	-0.212006777968760020,	
+-0.211957914293992940,	-0.211909050089331090,	-0.211860185354896590,	-0.211811320090811630,	-0.211762454297198390,	-0.211713587974179000,	-0.211664721121874760,	-0.211615853740409620,	
+-0.211566985829904820,	-0.211518117390482540,	-0.211469248422265000,	-0.211420378925374320,	-0.211371508899932700,	-0.211322638346062320,	-0.211273767263884440,	-0.211224895653523040,	
+-0.211176023515099400,	-0.211127150848735710,	-0.211078277654554110,	-0.211029403932676830,	-0.210980529683226060,	-0.210931654906323070,	-0.210882779602091840,	-0.210833903770653640,	
+-0.210785027412130680,	-0.210736150526645160,	-0.210687273114319260,	-0.210638395175275190,	-0.210589516709635110,	-0.210540637717520380,	-0.210491758199054910,	-0.210442878154360080,	
+-0.210393997583558030,	-0.210345116486770980,	-0.210296234864121160,	-0.210247352715730720,	-0.210198470041721930,	-0.210149586842216100,	-0.210100703117337140,	-0.210051818867206450,	
+-0.210002934091946200,	-0.209954048791678620,	-0.209905162966525920,	-0.209856276616610300,	-0.209807389742053120,	-0.209758502342978350,	-0.209709614419507330,	-0.209660725971762250,	
+-0.209611836999865380,	-0.209562947503938890,	-0.209514057484105040,	-0.209465166940486060,	-0.209416275873203300,	-0.209367384282380690,	-0.209318492168139640,	-0.209269599530602340,	
+-0.209220706369891070,	-0.209171812686128030,	-0.209122918479435430,	-0.209074023749934700,	-0.209025128497749760,	-0.208976232723002000,	-0.208927336425813650,	-0.208878439606306980,	
+-0.208829542264604210,	-0.208780644400827550,	-0.208731746015099310,	-0.208682847107540840,	-0.208633947678276120,	-0.208585047727426500,	-0.208536147255114300,	-0.208487246261461700,	
+-0.208438344746591010,	-0.208389442710624430,	-0.208340540153684280,	-0.208291637075891880,	-0.208242733477371270,	-0.208193829358243820,	-0.208144924718631800,	-0.208096019558657470,	
+-0.208047113878443100,	-0.207998207678110920,	-0.207949300957782380,	-0.207900393717581460,	-0.207851485957629530,	-0.207802577678048880,	-0.207753668878961820,	-0.207704759560490560,	
+-0.207655849722757410,	-0.207606939365884650,	-0.207558028489993660,	-0.207509117095208450,	-0.207460205181650480,	-0.207411292749441980,	-0.207362379798705250,	-0.207313466329562570,	
+-0.207264552342136230,	-0.207215637836548480,	-0.207166722812920810,	-0.207117807271377190,	-0.207068891212039030,	-0.207019974635028660,	-0.206971057540468350,	-0.206922139928480380,	
+-0.206873221799187100,	-0.206824303152709860,	-0.206775383989172750,	-0.206726464308697180,	-0.206677544111405430,	-0.206628623397419830,	-0.206579702166862690,	-0.206530780419856290,	
+-0.206481858156522920,	-0.206432935376984040,	-0.206384012081363700,	-0.206335088269783310,	-0.206286163942365240,	-0.206237239099231720,	-0.206188313740505110,	-0.206139387866307730,	
+-0.206090461476760990,	-0.206041534571988980,	-0.205992607152113150,	-0.205943679217255790,	-0.205894750767539210,	-0.205845821803085780,	-0.205796892324017790,	-0.205747962330457560,	
+-0.205699031822526580,	-0.205650100800348870,	-0.205601169264045900,	-0.205552237213740020,	-0.205503304649553550,	-0.205454371571608810,	-0.205405437980028140,	-0.205356503874933870,	
+-0.205307569256447470,	-0.205258634124693030,	-0.205209698479792010,	-0.205160762321866720,	-0.205111825651039550,	-0.205062888467432810,	-0.205013950771168820,	-0.204965012562369130,	
+-0.204916073841157760,	-0.204867134607656180,	-0.204818194861986800,	-0.204769254604271920,	-0.204720313834633900,	-0.204671372553195090,	-0.204622430760077860,	-0.204573488455403660,	
+-0.204524545639296650,	-0.204475602311878250,	-0.204426658473270850,	-0.204377714123596790,	-0.204328769262978470,	-0.204279823891538200,	-0.204230878009398380,	-0.204181931616680500,	
+-0.204132984713508660,	-0.204084037300004350,	-0.204035089376289970,	-0.203986140942487850,	-0.203937191998720370,	-0.203888242545109930,	-0.203839292581777990,	-0.203790342108848720,	
+-0.203741391126443570,	-0.203692439634684950,	-0.203643487633695220,	-0.203594535123596790,	-0.203545582104512010,	-0.203496628576563280,	-0.203447674539872110,	-0.203398719994562600,	
+-0.203349764940756320,	-0.203300809378575610,	-0.203251853308142910,	-0.203202896729580560,	-0.203153939643010960,	-0.203104982048555620,	-0.203056023946338730,	-0.203007065336481750,	
+-0.202958106219107120,	-0.202909146594337230,	-0.202860186462294480,	-0.202811225823101270,	-0.202762264676879970,	-0.202713303023752150,	-0.202664340863841940,	-0.202615378197270880,	
+-0.202566415024161370,	-0.202517451344635830,	-0.202468487158816660,	-0.202419522466826260,	-0.202370557268787080,	-0.202321591564820630,	-0.202272625355051060,	-0.202223658639599930,	
+-0.202174691418589650,	-0.202125723692142630,	-0.202076755460381310,	-0.202027786723428110,	-0.201978817481404590,	-0.201929847734434870,	-0.201880877482640530,	-0.201831906726144010,	
+-0.201782935465067730,	-0.201733963699534090,	-0.201684991429665530,	-0.201636018655584530,	-0.201587045377412590,	-0.201538071595273930,	-0.201489097309290040,	-0.201440122519583460,	
+-0.201391147226276550,	-0.201342171429491760,	-0.201293195129351570,	-0.201244218325978390,	-0.201195241019493760,	-0.201146263210021940,	-0.201097284897684440,	-0.201048306082603740,	
+-0.200999326764902260,	-0.200950346944702460,	-0.200901366622126790,	-0.200852385797296860,	-0.200803404470336820,	-0.200754422641368280,	-0.200705440310513660,	-0.200656457477895460,	
+-0.200607474143636110,	-0.200558490307858080,	-0.200509505970683820,	-0.200460521132234920,	-0.200411535792635570,	-0.200362549952007420,	-0.200313563610472870,	-0.200264576768154400,	
+-0.200215589425174510,	-0.200166601581655640,	-0.200117613237719400,	-0.200068624393489990,	-0.200019635049089040,	-0.199970645204638970,	-0.199921654860262310,	-0.199872664016081500,	
+-0.199823672672219040,	-0.199774680828797400,	-0.199725688485938190,	-0.199676695643765610,	-0.199627702302401320,	-0.199578708461967760,	-0.199529714122587410,	-0.199480719284382800,	
+-0.199431723947476380,	-0.199382728111990650,	-0.199333731778047250,	-0.199284734945770370,	-0.199235737615281660,	-0.199186739786703590,	-0.199137741460158700,	-0.199088742635769420,	
+-0.199039743313658310,	-0.198990743493946960,	-0.198941743176759640,	-0.198892742362217930,	-0.198843741050444390,	-0.198794739241561490,	-0.198745736935691750,	-0.198696734132957660,	
+-0.198647730833481720,	-0.198598727037385600,	-0.198549722744793540,	-0.198500717955827160,	-0.198451712670608990,	-0.198402706889261540,	-0.198353700611907320,	-0.198304693838668860,	
+-0.198255686569668630,	-0.198206678805028350,	-0.198157670544872240,	-0.198108661789321930,	-0.198059652538500000,	-0.198010642792528920,	-0.197961632551531210,	-0.197912621815629460,	
+-0.197863610584945250,	-0.197814598859602900,	-0.197765586639724070,	-0.197716573925431240,	-0.197667560716846990,	-0.197618547014093840,	-0.197569532817294340,	-0.197520518126570980,	
+-0.197471502942045460,	-0.197422487263842070,	-0.197373471092082450,	-0.197324454426889150,	-0.197275437268384730,	-0.197226419616691680,	-0.197177401471932610,	-0.197128382834229180,	
+-0.197079363703705630,	-0.197030344080483700,	-0.196981323964685870,	-0.196932303356434770,	-0.196883282255852890,	-0.196834260663062810,	-0.196785238578187080,	-0.196736216001347390,	
+-0.196687192932668010,	-0.196638169372270660,	-0.196589145320277910,	-0.196540120776812270,	-0.196491095741996330,	-0.196442070215952640,	-0.196393044198802940,	-0.196344017690671470,	
+-0.196294990691679970,	-0.196245963201950980,	-0.196196935221607080,	-0.196147906750770870,	-0.196098877789564860,	-0.196049848338111680,	-0.196000818396532990,	-0.195951787964953130,	
+-0.195902757043493800,	-0.195853725632277600,	-0.195804693731427060,	-0.195755661341064780,	-0.195706628461313370,	-0.195657595092295380,	-0.195608561234132530,	-0.195559526886949160,	
+-0.195510492050866960,	-0.195461456726008510,	-0.195412420912496440,	-0.195363384610453330,	-0.195314347820001730,	-0.195265310541264280,	-0.195216272774362680,	-0.195167234519421280,	
+-0.195118195776561780,	-0.195069156545906790,	-0.195020116827578920,	-0.194971076621700740,	-0.194922035928394880,	-0.194872994747783050,	-0.194823953079989620,	-0.194774910925136300,	
+-0.194725868283345700,	-0.194676825154740440,	-0.194627781539443100,	-0.194578737437576310,	-0.194529692849262690,	-0.194480647774623950,	-0.194431602213784470,	-0.194382556166865980,	
+-0.194333509633991120,	-0.194284462615282450,	-0.194235415110862650,	-0.194186367120854330,	-0.194137318645379170,	-0.194088269684561610,	-0.194039220238523380,	-0.193990170307387110,	
+-0.193941119891275410,	-0.193892068990310890,	-0.193843017604616200,	-0.193793965734313980,	-0.193744913379525980,	-0.193695860540376550,	-0.193646807216987490,	-0.193597753409481380,	
+-0.193548699117980920,	-0.193499644342608690,	-0.193450589083487360,	-0.193401533340738670,	-0.193352477114487050,	-0.193303420404854210,	-0.193254363211962820,	-0.193205305535935540,	
+-0.193156247376894990,	-0.193107188734963800,	-0.193058129610264670,	-0.193009070002919340,	-0.192960009913052180,	-0.192910949340785010,	-0.192861888286240480,	-0.192812826749541200,	
+-0.192763764730809890,	-0.192714702230169150,	-0.192665639247741630,	-0.192616575783649190,	-0.192567511838016150,	-0.192518447410964330,	-0.192469382502616420,	-0.192420317113095010,	
+-0.192371251242522830,	-0.192322184891022540,	-0.192273118058716750,	-0.192224050745727320,	-0.192174982952178640,	-0.192125914678192480,	-0.192076845923891540,	-0.192027776689398490,	
+-0.191978706974836020,	-0.191929636780326730,	-0.191880566105992520,	-0.191831494951957750,	-0.191782423318344250,	-0.191733351205274680,	-0.191684278612871740,	-0.191635205541258120,	
+-0.191586131990556460,	-0.191537057960889490,	-0.191487983452379000,	-0.191438908465149410,	-0.191389832999322550,	-0.191340757055021130,	-0.191291680632367790,	-0.191242603731485240,	
+-0.191193526352496200,	-0.191144448495522480,	-0.191095370160688500,	-0.191046291348116100,	-0.190997212057927970,	-0.190948132290246820,	-0.190899052045195330,	-0.190849971322896220,	
+-0.190800890123472150,	-0.190751808447045010,	-0.190702726293739220,	-0.190653643663676600,	-0.190604560556979890,	-0.190555476973771760,	-0.190506392914174950,	-0.190457308378312150,	
+-0.190408223366305220,	-0.190359137878278600,	-0.190310051914354130,	-0.190260965474654510,	-0.190211878559302490,	-0.190162791168420800,	-0.190113703302132120,	-0.190064614960559150,	
+-0.190015526143823800,	-0.189966436852050500,	-0.189917347085361120,	-0.189868256843878370,	-0.189819166127724980,	-0.189770074937023660,	-0.189720983271897150,	-0.189671891132468180,	
+-0.189622798518858630,	-0.189573705431192950,	-0.189524611869592990,	-0.189475517834181510,	-0.189426423325081250,	-0.189377328342414910,	-0.189328232886305260,	-0.189279136956875040,	
+-0.189230040554246080,	-0.189180943678542910,	-0.189131846329887390,	-0.189082748508402230,	-0.189033650214210200,	-0.188984551447434060,	-0.188935452208196550,	-0.188886352496619500,	
+-0.188837252312827470,	-0.188788151656942290,	-0.188739050529086770,	-0.188689948929383570,	-0.188640846857955540,	-0.188591744314925370,	-0.188542641300415840,	-0.188493537814548860,	
+-0.188444433857448880,	-0.188395329429237810,	-0.188346224530038440,	-0.188297119159973490,	-0.188248013319165770,	-0.188198907007738000,	-0.188149800225812070,	-0.188100692973512530,	
+-0.188051585250961270,	-0.188002477058281050,	-0.187953368395594620,	-0.187904259263024760,	-0.187855149660694280,	-0.187806039588725880,	-0.187756929047241560,	-0.187707818036365770,	
+-0.187658706556220410,	-0.187609594606928330,	-0.187560482188612240,	-0.187511369301394950,	-0.187462255945399230,	-0.187413142120747000,	-0.187364027827562780,	-0.187314913065968510,	
+-0.187265797836086930,	-0.187216682138040880,	-0.187167565971953110,	-0.187118449337946440,	-0.187069332236143640,	-0.187020214666666630,	-0.186971096629639950,	-0.186921978125185550,	
+-0.186872859153426190,	-0.186823739714484680,	-0.186774619808483840,	-0.186725499435546420,	-0.186676378595795280,	-0.186627257289352310,	-0.186578135516342060,	-0.186529013276886480,	
+-0.186479890571108360,	-0.186430767399130530,	-0.186381643761075770,	-0.186332519657066900,	-0.186283395087226740,	-0.186234270051677230,	-0.186185144550542890,	-0.186136018583945680,	
+-0.186086892152008470,	-0.186037765254853990,	-0.185988637892605110,	-0.185939510065384640,	-0.185890381773314520,	-0.185841253016519330,	-0.185792123795120970,	-0.185742994109242330,	
+-0.185693863959006190,	-0.185644733344535410,	-0.185595602265952790,	-0.185546470723381150,	-0.185497338716942490,	-0.185448206246761340,	-0.185399073312959660,	-0.185349939915660320,	
+-0.185300806054986110,	-0.185251671731059890,	-0.185202536944004510,	-0.185153401693941900,	-0.185104265980996660,	-0.185055129805290740,	-0.185005993166947020,	-0.184956856066088300,	
+-0.184907718502837440,	-0.184858580477317290,	-0.184809441989650690,	-0.184760303039959610,	-0.184711163628368650,	-0.184662023754999790,	-0.184612883419975870,	-0.184563742623419710,	
+-0.184514601365454220,	-0.184465459646202230,	-0.184416317465785680,	-0.184367174824329240,	-0.184318031721954880,	-0.184268888158785420,	-0.184219744134943740,	-0.184170599650552690,	
+-0.184121454705735150,	-0.184072309300614000,	-0.184023163435311170,	-0.183974017109951320,	-0.183924870324656400,	-0.183875723079549330,	-0.183826575374752940,	-0.183777427210390140,	
+-0.183728278586583750,	-0.183679129503456660,	-0.183629979961130870,	-0.183580829959731020,	-0.183531679499379100,	-0.183482528580197950,	-0.183433377202310510,	-0.183384225365839590,	
+-0.183335073070908160,	-0.183285920317638130,	-0.183236767106154190,	-0.183187613436578330,	-0.183138459309033440,	-0.183089304723642380,	-0.183040149680528090,	-0.182990994179813400,	
+-0.182941838221621240,	-0.182892681806073630,	-0.182843524933295140,	-0.182794367603407860,	-0.182745209816534690,	-0.182696051572798470,	-0.182646892872322110,	-0.182597733715228530,	
+-0.182548574101640630,	-0.182499414031680410,	-0.182450253505472500,	-0.182401092523138990,	-0.182351931084802740,	-0.182302769190586660,	-0.182253606840613670,	-0.182204444035006660,	
+-0.182155280773887650,	-0.182106117057381330,	-0.182056952885609720,	-0.182007788258695710,	-0.181958623176762230,	-0.181909457639932190,	-0.181860291648328540,	-0.181811125202074130,	
+-0.181761958301291020,	-0.181712790946103930,	-0.181663623136634840,	-0.181614454873006680,	-0.181565286155342400,	-0.181516116983764880,	-0.181466947358397110,	-0.181417777279361060,	
+-0.181368606746781460,	-0.181319435760780330,	-0.181270264321480630,	-0.181221092429005250,	-0.181171920083477160,	-0.181122747285019260,	-0.181073574033754490,	-0.181024400329804910,	
+-0.180975226173295200,	-0.180926051564347430,	-0.180876876503084540,	-0.180827700989629440,	-0.180778525024105100,	-0.180729348606634450,	-0.180680171737340410,	-0.180630994416345090,	
+-0.180581816643773150,	-0.180532638419746650,	-0.180483459744388590,	-0.180434280617821850,	-0.180385101040169420,	-0.180335921011554240,	-0.180286740532098370,	-0.180237559601926530,	
+-0.180188378221160790,	-0.180139196389924120,	-0.180090014108339440,	-0.180040831376529740,	-0.179991648194617960,	-0.179942464562727060,	-0.179893280480979110,	-0.179844095949498850,	
+-0.179794910968408330,	-0.179745725537830550,	-0.179696539657888450,	-0.179647353328704990,	-0.179598166550403170,	-0.179548979323105930,	-0.179499791646935360,	-0.179450603522016170,	
+-0.179401414948470510,	-0.179352225926421280,	-0.179303036455991490,	-0.179253846537304110,	-0.179204656170482120,	-0.179155465355647610,	-0.179106274092925320,	-0.179057082382437340,	
+-0.179007890224306630,	-0.178958697618656240,	-0.178909504565609080,	-0.178860311065288160,	-0.178811117117816470,	-0.178761922723316090,	-0.178712727881911810,	-0.178663532593725690,	
+-0.178614336858880730,	-0.178565140677499960,	-0.178515944049706300,	-0.178466746975622810,	-0.178417549455371580,	-0.178368351489077340,	-0.178319153076862220,	-0.178269954218849200,	
+-0.178220754915161320,	-0.178171555165921540,	-0.178122354971252890,	-0.178073154331278320,	-0.178023953246120030,	-0.177974751715902710,	-0.177925549740748510,	-0.177876347320780420,	
+-0.177827144456121490,	-0.177777941146894690,	-0.177728737393223040,	-0.177679533195229530,	-0.177630328553036340,	-0.177581123466768190,	-0.177531917936547210,	-0.177482711962496460,	
+-0.177433505544738940,	-0.177384298683397640,	-0.177335091378595600,	-0.177285883630454940,	-0.177236675439100460,	-0.177187466804654280,	-0.177138257727239460,	-0.177089048206978960,	
+-0.177039838243995860,	-0.176990627838413160,	-0.176941416990353900,	-0.176892205699940210,	-0.176842993967296890,	-0.176793781792546070,	-0.176744569175810830,	-0.176695356117214130,	
+-0.176646142616879050,	-0.176596928674928630,	-0.176547714291485860,	-0.176498499466672950,	-0.176449284200614680,	-0.176400068493433180,	-0.176350852345251500,	-0.176301635756192700,	
+-0.176252418726379810,	-0.176203201255935860,	-0.176153983344983060,	-0.176104764993646160,	-0.176055546202047330,	-0.176006326970309660,	-0.175957107298556180,	-0.175907887186909920,	
+-0.175858666635493930,	-0.175809445644431290,	-0.175760224213844160,	-0.175711002343857340,	-0.175661780034593010,	-0.175612557286174230,	-0.175563334098724040,	-0.175514110472365560,	
+-0.175464886407221770,	-0.175415661903414900,	-0.175366436961069740,	-0.175317211580308500,	-0.175267985761254240,	-0.175218759504029990,	-0.175169532808758850,	-0.175120305675563890,	
+-0.175071078104568150,	-0.175021850095893860,	-0.174972621649665820,	-0.174923392766006210,	-0.174874163445038120,	-0.174824933686884620,	-0.174775703491668790,	-0.174726472859513700,	
+-0.174677241790542420,	-0.174628010284877180,	-0.174578778342642770,	-0.174529545963961420,	-0.174480313148956210,	-0.174431079897750220,	-0.174381846210466540,	-0.174332612087228220,	
+-0.174283377528157510,	-0.174234142533379240,	-0.174184907103015600,	-0.174135671237189680,	-0.174086434936024600,	-0.174037198199643420,	-0.173987961028169240,	-0.173938723421725170,	
+-0.173889485380433420,	-0.173840246904418850,	-0.173791007993803620,	-0.173741768648710910,	-0.173692528869263760,	-0.173643288655585290,	-0.173594048007798570,	-0.173544806926026780,	
+-0.173495565410392070,	-0.173446323461019320,	-0.173397081078030760,	-0.173347838261549510,	-0.173298595011698640,	-0.173249351328601310,	-0.173200107212380610,	-0.173150862663158740,	
+-0.173101617681060580,	-0.173052372266208400,	-0.173003126418725280,	-0.172953880138734360,	-0.172904633426358730,	-0.172855386281721510,	-0.172806138704945820,	-0.172756890696153940,	
+-0.172707642255470670,	-0.172658393383018300,	-0.172609144078919970,	-0.172559894343298770,	-0.172510644176277820,	-0.172461393577980270,	-0.172412142548528350,	-0.172362891088046980,	
+-0.172313639196658350,	-0.172264386874485640,	-0.172215134121651960,	-0.172165880938280450,	-0.172116627324494200,	-0.172067373280416440,	-0.172018118806169320,	-0.171968863901877820,	
+-0.171919608567664140,	-0.171870352803651430,	-0.171821096609962860,	-0.171771839986721520,	-0.171722582934050600,	-0.171673325452073230,	-0.171624067540911670,	-0.171574809200690790,	
+-0.171525550431532920,	-0.171476291233561150,	-0.171427031606898650,	-0.171377771551668580,	-0.171328511067994100,	-0.171279250155997430,	-0.171229988815803540,	-0.171180727047534680,	
+-0.171131464851313970,	-0.171082202227264640,	-0.171032939175509770,	-0.170983675696172570,	-0.170934411789376180,	-0.170885147455242890,	-0.170835882693897570,	-0.170786617505462590,	
+-0.170737351890061030,	-0.170688085847816110,	-0.170638819378850980,	-0.170589552483288800,	-0.170540285161252720,	-0.170491017412865070,	-0.170441749238250760,	-0.170392480637532070,	
+-0.170343211610832160,	-0.170293942158274230,	-0.170244672279981470,	-0.170195401976076990,	-0.170146131246683150,	-0.170096860091924850,	-0.170047588511924420,	-0.169998316506805000,	
+-0.169949044076689790,	-0.169899771221701970,	-0.169850497941964720,	-0.169801224237601240,	-0.169751950108733810,	-0.169702675555487380,	-0.169653400577984280,	-0.169604125176347650,	
+-0.169554849350700730,	-0.169505573101166680,	-0.169456296427868690,	-0.169407019330929080,	-0.169357741810472810,	-0.169308463866622180,	-0.169259185499500390,	-0.169209906709230640,	
+-0.169160627495936130,	-0.169111347859740050,	-0.169062067800765600,	-0.169012787319135080,	-0.168963506414973490,	-0.168914225088403150,	-0.168864943339547210,	-0.168815661168528950,	
+-0.168766378575471500,	-0.168717095560498130,	-0.168667812123731140,	-0.168618528265295470,	-0.168569243985313500,	-0.168519959283908420,	-0.168470674161203450,	-0.168421388617321780,	
+-0.168372102652386670,	-0.168322816266521260,	-0.168273529459847970,	-0.168224242232491690,	-0.168174954584574850,	-0.168125666516220600,	-0.168076378027552180,	-0.168027089118692820,	
+-0.167977799789765740,	-0.167928510040894150,	-0.167879219872200420,	-0.167829929283809520,	-0.167780638275843800,	-0.167731346848426470,	-0.167682055001680790,	-0.167632762735729970,	
+-0.167583470050697240,	-0.167534176946705800,	-0.167484883423878100,	-0.167435589482339030,	-0.167386295122210980,	-0.167337000343617230,	-0.167287705146680950,	-0.167238409531525410,	
+-0.167189113498273870,	-0.167139817047048640,	-0.167090520177974740,	-0.167041222891174570,	-0.166991925186771330,	-0.166942627064888270,	-0.166893328525648640,	-0.166844029569175710,	
+-0.166794730195592680,	-0.166745430405021960,	-0.166696130197588550,	-0.166646829573414780,	-0.166597528532623970,	-0.166548227075339340,	-0.166498925201684130,	-0.166449622911781610,	
+-0.166400320205754150,	-0.166351017083726770,	-0.166301713545821850,	-0.166252409592162640,	-0.166203105222872430,	-0.166153800438074430,	-0.166104495237891950,	-0.166055189622448220,	
+-0.166005883591865630,	-0.165956577146269210,	-0.165907270285781370,	-0.165857963010525330,	-0.165808655320624390,	-0.165759347216201810,	-0.165710038697380880,	-0.165660729764283950,	
+-0.165611420417036080,	-0.165562110655759650,	-0.165512800480577980,	-0.165463489891614270,	-0.165414178888991850,	-0.165364867472833990,	-0.165315555643263950,	-0.165266243400404160,	
+-0.165216930744379630,	-0.165167617675312770,	-0.165118304193326850,	-0.165068990298545190,	-0.165019675991091050,	-0.164970361271087720,	-0.164921046138658490,	-0.164871730593925760,	
+-0.164822414637014610,	-0.164773098268047400,	-0.164723781487147420,	-0.164674464294438020,	-0.164625146690042440,	-0.164575828674084020,	-0.164526510246685990,	-0.164477191407970850,	
+-0.164427872158063560,	-0.164378552497086630,	-0.164329232425163310,	-0.164279911942416900,	-0.164230591048970730,	-0.164181269744948070,	-0.164131948030471350,	-0.164082625905665640,	
+-0.164033303370653360,	-0.163983980425557840,	-0.163934657070502370,	-0.163885333305610230,	-0.163836009131004770,	-0.163786684546809310,	-0.163737359553146220,	-0.163688034150140630,	
+-0.163638708337914970,	-0.163589382116592520,	-0.163540055486296630,	-0.163490728447150570,	-0.163441400999277730,	-0.163392073142800490,	-0.163342744877843950,	-0.163293416204530530,	
+-0.163244087122983580,	-0.163194757633326410,	-0.163145427735682360,	-0.163096097430174720,	-0.163046766716926860,	-0.162997435596061200,	-0.162948104067702800,	-0.162898772131974180,	
+-0.162849439788998600,	-0.162800107038899440,	-0.162750773881800010,	-0.162701440317823630,	-0.162652106347092790,	-0.162602771969732550,	-0.162553437185865370,	-0.162504101995614630,	
+-0.162454766399103610,	-0.162405430396455660,	-0.162356093987794160,	-0.162306757173242420,	-0.162257419952922920,	-0.162208082326960740,	-0.162158744295478360,	-0.162109405858599090,	
+-0.162060067016446320,	-0.162010727769143410,	-0.161961388116813650,	-0.161912048059580430,	-0.161862707597566210,	-0.161813366730896110,	-0.161764025459692570,	-0.161714683784078990,	
+-0.161665341704178680,	-0.161615999220115020,	-0.161566656332011370,	-0.161517313039991090,	-0.161467969344176620,	-0.161418625244693140,	-0.161369280741663070,	-0.161319935835209820,	
+-0.161270590525456700,	-0.161221244812527110,	-0.161171898696544440,	-0.161122552177631110,	-0.161073205255912290,	-0.161023857931510470,	-0.160974510204549000,	-0.160925162075151230,	
+-0.160875813543440580,	-0.160826464609540390,	-0.160777115273574050,	-0.160727765535664040,	-0.160678415395935470,	-0.160629064854510870,	-0.160579713911513630,	-0.160530362567067100,	
+-0.160481010821294650,	-0.160431658674319660,	-0.160382306126264670,	-0.160332953177254790,	-0.160283599827412530,	-0.160234246076861260,	-0.160184891925724380,	-0.160135537374125250,	
+-0.160086182422187310,	-0.160036827070033890,	-0.159987471317787540,	-0.159938115165573380,	-0.159888758613513950,	-0.159839401661732610,	-0.159790044310352760,	-0.159740686559497800,	
+-0.159691328409291120,	-0.159641969859855270,	-0.159592610911315350,	-0.159543251563793900,	-0.159493891817414330,	-0.159444531672300020,	-0.159395171128574400,	-0.159345810186360850,	
+-0.159296448845782760,	-0.159247087106962670,	-0.159197724970025740,	-0.159148362435094500,	-0.159098999502292370,	-0.159049636171742730,	-0.159000272443568990,	-0.158950908317894570,	
+-0.158901543794842890,	-0.158852178874536480,	-0.158802813557100490,	-0.158753447842657460,	-0.158704081731330830,	-0.158654715223243980,	-0.158605348318520330,	-0.158555981017283330,	
+-0.158506613319656380,	-0.158457245225761990,	-0.158407876735725400,	-0.158358507849669090,	-0.158309138567716530,	-0.158259768889991130,	-0.158210398816616280,	-0.158161028347715450,	
+-0.158111657483411160,	-0.158062286223828620,	-0.158012914569090360,	-0.157963542519319820,	-0.157914170074640430,	-0.157864797235175570,	-0.157815424001048750,	-0.157766050372383390,	
+-0.157716676349302000,	-0.157667301931929790,	-0.157617927120389360,	-0.157568551914804070,	-0.157519176315297410,	-0.157469800321992810,	-0.157420423935013740,	-0.157371047154482720,	
+-0.157321669980524940,	-0.157272292413262990,	-0.157222914452820330,	-0.157173536099320360,	-0.157124157352886540,	-0.157074778213642350,	-0.157025398681711230,	-0.156976018757215700,	
+-0.156926638440281010,	-0.156877257731029730,	-0.156827876629585310,	-0.156778495136071200,	-0.156729113250610840,	-0.156679730973327710,	-0.156630348304344360,	-0.156580965243786040,	
+-0.156531581791775290,	-0.156482197948435570,	-0.156432813713890400,	-0.156383429088263170,	-0.156334044071677340,	-0.156284658664256420,	-0.156235272866122990,	-0.156185886677402240,	
+-0.156136500098216810,	-0.156087113128690090,	-0.156037725768945590,	-0.155988338019106780,	-0.155938949879297130,	-0.155889561349640100,	-0.155840172430258300,	-0.155790783121276950,	
+-0.155741393422818620,	-0.155692003335006820,	-0.155642612857965020,	-0.155593221991816660,	-0.155543830736685260,	-0.155494439092693420,	-0.155445047059966340,	-0.155395654638626670,	
+-0.155346261828797850,	-0.155296868630603350,	-0.155247475044166690,	-0.155198081069611360,	-0.155148686707060830,	-0.155099291956637690,	-0.155049896818467200,	-0.155000501292671980,	
+-0.154951105379375480,	-0.154901709078701240,	-0.154852312390772740,	-0.154802915315713410,	-0.154753517853646830,	-0.154704120004695580,	-0.154654721768984900,	-0.154605323146637410,	
+-0.154555924137776610,	-0.154506524742526020,	-0.154457124961009080,	-0.154407724793349350,	-0.154358324239669440,	-0.154308923300094600,	-0.154259521974747430,	-0.154210120263751470,	
+-0.154160718167230200,	-0.154111315685307140,	-0.154061912818105800,	-0.154012509565749660,	-0.153963105928361380,	-0.153913701906066210,	-0.153864297498986780,	-0.153814892707246630,	
+-0.153765487530969220,	-0.153716081970278080,	-0.153666676025296770,	-0.153617269696147890,	-0.153567862982956690,	-0.153518455885845840,	-0.153469048404938860,	-0.153419640540359250,	
+-0.153370232292230540,	-0.153320823660676260,	-0.153271414645819920,	-0.153222005247784150,	-0.153172595466694260,	-0.153123185302672880,	-0.153073774755843520,	-0.153024363826329750,	
+-0.152974952514255050,	-0.152925540819742970,	-0.152876128742917030,	-0.152826716283899900,	-0.152777303442816870,	-0.152727890219790580,	-0.152678476614944550,	-0.152629062628402340,	
+-0.152579648260287470,	-0.152530233510723480,	-0.152480818379833020,	-0.152431402867741400,	-0.152381986974571280,	-0.152332570700446170,	-0.152283154045489640,	-0.152233737009825230,	
+-0.152184319593576510,	-0.152134901796866950,	-0.152085483619819270,	-0.152036065062558760,	-0.151986646125208070,	-0.151937226807890790,	-0.151887807110730440,	-0.151838387033850550,	
+-0.151788966577374700,	-0.151739545741426450,	-0.151690124526128460,	-0.151640702931606000,	-0.151591280957981830,	-0.151541858605379410,	-0.151492435873922390,	-0.151443012763734260,	
+-0.151393589274938590,	-0.151344165407658080,	-0.151294741162018020,	-0.151245316538141130,	-0.151195891536150930,	-0.151146466156171030,	-0.151097040398324920,	-0.151047614262736250,	
+-0.150998187749528530,	-0.150948760858824440,	-0.150899333590749360,	-0.150849905945425910,	-0.150800477922977740,	-0.150751049523528330,	-0.150701620747201340,	-0.150652191594120270,	
+-0.150602762064407840,	-0.150553332158189390,	-0.150503901875587630,	-0.150454471216726090,	-0.150405040181728370,	-0.150355608770718070,	-0.150306176983818730,	-0.150256744821153950,	
+-0.150207312282846450,	-0.150157879369021530,	-0.150108446079801920,	-0.150059012415311170,	-0.150009578375672910,	-0.149960143961010710,	-0.149910709171448140,	-0.149861274007108800,	
+-0.149811838468115380,	-0.149762402554593280,	-0.149712966266665140,	-0.149663529604454610,	-0.149614092568085220,	-0.149564655157680640,	-0.149515217373364400,	-0.149465779215259250,	
+-0.149416340683490520,	-0.149366901778180930,	-0.149317462499454100,	-0.149268022847433600,	-0.149218582822243070,	-0.149169142424006060,	-0.149119701652846190,	-0.149070260508886190,	
+-0.149020818992251450,	-0.148971377103064630,	-0.148921934841449360,	-0.148872492207529270,	-0.148823049201427940,	-0.148773605823269010,	-0.148724162073176040,	-0.148674717951271800,	
+-0.148625273457681640,	-0.148575828592528300,	-0.148526383355935380,	-0.148476937748026510,	-0.148427491768925310,	-0.148378045418755350,	-0.148328598697639400,	-0.148279151605702850,	
+-0.148229704143068410,	-0.148180256309859730,	-0.148130808106200380,	-0.148081359532214020,	-0.148031910588024260,	-0.147982461273754720,	-0.147933011589528180,	-0.147883561535469940,	
+-0.147834111111702830,	-0.147784660318350440,	-0.147735209155536400,	-0.147685757623384320,	-0.147636305722017860,	-0.147586853451559750,	-0.147537400812135400,	-0.147487947803867540,	
+-0.147438494426879780,	-0.147389040681295820,	-0.147339586567239250,	-0.147290132084833710,	-0.147240677234202870,	-0.147191222015469410,	-0.147141766428758810,	-0.147092310474193770,	
+-0.147042854151897970,	-0.146993397461995020,	-0.146943940404608590,	-0.146894482979862300,	-0.146845025187879810,	-0.146795567028783880,	-0.146746108502699900,	-0.146696649609750650,	
+-0.146647190350059770,	-0.146597730723750930,	-0.146548270730947760,	-0.146498810371773920,	-0.146449349646352170,	-0.146399888554807900,	-0.146350427097263950,	-0.146300965273843900,	
+-0.146251503084671440,	-0.146202040529870240,	-0.146152577609563930,	-0.146103114323876180,	-0.146053650672929770,	-0.146004186656850110,	-0.145954722275759950,	-0.145905257529783030,	
+-0.145855792419042950,	-0.145806326943663380,	-0.145756861103768010,	-0.145707394899480480,	-0.145657928330923560,	-0.145608461398222730,	-0.145558994101500750,	-0.145509526440881250,	
+-0.145460058416487960,	-0.145410590028444530,	-0.145361121276874620,	-0.145311652161901010,	-0.145262182683649150,	-0.145212712842241850,	-0.145163242637802750,	-0.145113772070455560,	
+-0.145064301140323950,	-0.145014829847531560,	-0.144965358192202100,	-0.144915886174458390,	-0.144866413794425830,	-0.144816941052227230,	-0.144767467947986280,	-0.144717994481826650,	
+-0.144668520653872030,	-0.144619046464246140,	-0.144569571913071740,	-0.144520097000474270,	-0.144470621726576600,	-0.144421146091502330,	-0.144371670095375220,	-0.144322193738318920,	
+-0.144272717020457160,	-0.144223239941913580,	-0.144173762502811050,	-0.144124284703274960,	-0.144074806543428190,	-0.144025328023394380,	-0.143975849143297250,	-0.143926369903260520,	
+-0.143876890303407860,	-0.143827410343862950,	-0.143777930024748650,	-0.143728449346190420,	-0.143678968308311030,	-0.143629486911234260,	-0.143580005155083760,	-0.143530523039983230,	
+-0.143481040566056400,	-0.143431557733426080,	-0.143382074542217770,	-0.143332590992554270,	-0.143283107084559270,	-0.143233622818356530,	-0.143184138194069720,	-0.143134653211822560,	
+-0.143085167871738780,	-0.143035682173941190,	-0.142986196118555260,	-0.142936709705703880,	-0.142887222935510680,	-0.142837735808099440,	-0.142788248323593880,	-0.142738760482117670,	
+-0.142689272283794580,	-0.142639783728747440,	-0.142590294817101700,	-0.142540805548980220,	-0.142491315924506730,	-0.142441825943804940,	-0.142392335606998630,	-0.142342844914211420,	
+-0.142293353865566270,	-0.142243862461188590,	-0.142194370701201250,	-0.142144878585728000,	-0.142095386114892530,	-0.142045893288818610,	-0.141996400107629960,	-0.141946906571450320,	
+-0.141897412680402510,	-0.141847918434612060,	-0.141798423834201800,	-0.141748928879295490,	-0.141699433570016850,	-0.141649937906489640,	-0.141600441888837580,	-0.141550945517183530,	
+-0.141501448791653020,	-0.141451951712368850,	-0.141402454279454830,	-0.141352956493034670,	-0.141303458353232100,	-0.141253959860170920,	-0.141204461013974820,	-0.141154961814766670,	
+-0.141105462262672010,	-0.141055962357813700,	-0.141006462100315480,	-0.140956961490301120,	-0.140907460527894320,	-0.140857959213218890,	-0.140808457546398590,	-0.140758955527556240,	
+-0.140709453156817380,	-0.140659950434304880,	-0.140610447360142500,	-0.140560943934454010,	-0.140511440157363170,	-0.140461936028993730,	-0.140412431549468560,	-0.140362926718913180,	
+-0.140313421537450520,	-0.140263916005204270,	-0.140214410122298240,	-0.140164903888856190,	-0.140115397305001890,	-0.140065890370859090,	-0.140016383086550680,	-0.139966875452202180,	
+-0.139917367467936510,	-0.139867859133877420,	-0.139818350450148680,	-0.139768841416874040,	-0.139719332034177330,	-0.139669822302182280,	-0.139620312221011790,	-0.139570801790791400,	
+-0.139521291011644010,	-0.139471779883693390,	-0.139422268407063320,	-0.139372756581877560,	-0.139323244408259940,	-0.139273731886333320,	-0.139224219016223260,	-0.139174705798052630,	
+-0.139125192231945250,	-0.139075678318024860,	-0.139026164056415300,	-0.138976649447240340,	-0.138927134490623740,	-0.138877619186688420,	-0.138828103535559970,	-0.138778587537361220,	
+-0.138729071192216000,	-0.138679554500248130,	-0.138630037461581370,	-0.138580520076339500,	-0.138531002344645440,	-0.138481484266624770,	-0.138431965842400390,	-0.138382447072096100,	
+-0.138332927955835680,	-0.138283408493742960,	-0.138233888685941690,	-0.138184368532555720,	-0.138134848033707960,	-0.138085327189523930,	-0.138035806000126600,	-0.137986284465639760,	
+-0.137936762586187200,	-0.137887240361892730,	-0.137837717792880150,	-0.137788194879272410,	-0.137738671621195070,	-0.137689148018771050,	-0.137639624072124130,	-0.137590099781378180,	
+-0.137540575146656960,	-0.137491050168084330,	-0.137441524845784060,	-0.137391999179879100,	-0.137342473170495030,	-0.137292946817754750,	-0.137243420121782120,	-0.137193893082700940,	
+-0.137144365700635010,	-0.137094837975708210,	-0.137045309908044280,	-0.136995781497766200,	-0.136946252744999550,	-0.136896723649867270,	-0.136847194212493170,	-0.136797664433001090,	
+-0.136748134311514860,	-0.136698603848158300,	-0.136649073043055210,	-0.136599541896328560,	-0.136550010408103940,	-0.136500478578504280,	-0.136450946407653460,	-0.136401413895675230,	
+-0.136351881042693500,	-0.136302347848832050,	-0.136252814314213850,	-0.136203280438964510,	-0.136153746223206950,	-0.136104211667065020,	-0.136054676770662570,	-0.136005141534123440,	
+-0.135955605957571450,	-0.135906070041130450,	-0.135856533784923380,	-0.135806997189075850,	-0.135757460253710850,	-0.135707922978952210,	-0.135658385364923720,	-0.135608847411749310,	
+-0.135559309119552750,	-0.135509770488457050,	-0.135460231518587800,	-0.135410692210067960,	-0.135361152563021420,	-0.135311612577571960,	-0.135262072253843510,	-0.135212531591959840,	
+-0.135162990592044870,	-0.135113449254221530,	-0.135063907578615440,	-0.135014365565349600,	-0.134964823214547840,	-0.134915280526334030,	-0.134865737500832000,	-0.134816194138165650,	
+-0.134766650438457920,	-0.134717106401834430,	-0.134667562028418200,	-0.134618017318333030,	-0.134568472271702850,	-0.134518926888651500,	-0.134469381169302790,	-0.134419835113780670,	
+-0.134370288722208050,	-0.134320741994710590,	-0.134271194931411290,	-0.134221647532433990,	-0.134172099797902590,	-0.134122551727940940,	-0.134073003322672880,	-0.134023454582222340,	
+-0.133973905506712290,	-0.133924356096268320,	-0.133874806351013480,	-0.133825256271071640,	-0.133775705856566650,	-0.133726155107622370,	-0.133676604024362740,	-0.133627052606911570,	
+-0.133577500855391910,	-0.133527948769929380,	-0.133478396350646960,	-0.133428843597668540,	-0.133379290511118050,	-0.133329737091119310,	-0.133280183337796230,	-0.133230629251271800,	
+-0.133181074831671690,	-0.133131520079118880,	-0.133081964993737280,	-0.133032409575650770,	-0.132982853824983230,	-0.132933297741858580,	-0.132883741326400660,	-0.132834184578732500,	
+-0.132784627498979790,	-0.132735070087265480,	-0.132685512343713510,	-0.132635954268447760,	-0.132586395861592130,	-0.132536837123270500,	-0.132487278053605880,	-0.132437718652723970,	
+-0.132388158920747760,	-0.132338598857801140,	-0.132289038464008020,	-0.132239477739492320,	-0.132189916684377930,	-0.132140355298788730,	-0.132090793582847780,	-0.132041231536680710,	
+-0.131991669160410580,	-0.131942106454161270,	-0.131892543418056700,	-0.131842980052220750,	-0.131793416356777350,	-0.131743852331849540,	-0.131694287977563000,	-0.131644723294040730,	
+-0.131595158281406640,	-0.131545592939784660,	-0.131496027269298680,	-0.131446461270072650,	-0.131396894942230450,	-0.131347328285895150,	-0.131297761301192420,	-0.131248193988245250,	
+-0.131198626347177630,	-0.131149058378113440,	-0.131099490081176580,	-0.131049921456491030,	-0.131000352504180660,	-0.130950783224368510,	-0.130901213617180300,	-0.130851643682739050,	
+-0.130802073421168700,	-0.130752502832593150,	-0.130702931917136360,	-0.130653360674922230,	-0.130603789106074700,	-0.130554217210716830,	-0.130504644988974290,	-0.130455072440970130,	
+-0.130405499566828290,	-0.130355926366672700,	-0.130306352840627300,	-0.130256778988816020,	-0.130207204811361920,	-0.130157630308390670,	-0.130108055480025350,	-0.130058480326389890,	
+-0.130008904847608240,	-0.129959329043804310,	-0.129909752915102070,	-0.129860176461625450,	-0.129810599683497510,	-0.129761022580843930,	-0.129711445153787820,	-0.129661867402453080,	
+-0.129612289326963700,	-0.129562710927443560,	-0.129513132204016670,	-0.129463553156806050,	-0.129413973785937410,	-0.129364394091533890,	-0.129314814073719340,	-0.129265233732617780,	
+-0.129215653068353110,	-0.129166072081049330,	-0.129116490770830370,	-0.129066909137819290,	-0.129017327182141820,	-0.128967744903921040,	-0.128918162303280880,	-0.128868579380345320,	
+-0.128818996135238340,	-0.128769412568083830,	-0.128719828679004940,	-0.128670244468127330,	-0.128620659935574140,	-0.128571075081469280,	-0.128521489905936730,	-0.128471904409100470,	
+-0.128422318591084440,	-0.128372732452012610,	-0.128323145992008090,	-0.128273559211196570,	-0.128223972109701130,	-0.128174384687645780,	-0.128124796945154470,	-0.128075208882351160,	
+-0.128025620499359840,	-0.127976031796304480,	-0.127926442773308140,	-0.127876853430496570,	-0.127827263767992890,	-0.127777673785921030,	-0.127728083484404980,	-0.127678492863568720,	
+-0.127628901923536240,	-0.127579310664431510,	-0.127529719086377610,	-0.127480127189500300,	-0.127430534973922680,	-0.127380942439768720,	-0.127331349587162380,	-0.127281756416227710,	
+-0.127232162927088610,	-0.127182569119868250,	-0.127132974994692340,	-0.127083380551683970,	-0.127033785790967160,	-0.126984190712665900,	-0.126934595316904150,	-0.126884999603805920,	
+-0.126835403573495180,	-0.126785807226095060,	-0.126736210561731290,	-0.126686613580527020,	-0.126637016282606210,	-0.126587418668092840,	-0.126537820737110920,	-0.126488222489784470,	
+-0.126438623926236560,	-0.126389025046593000,	-0.126339425850976850,	-0.126289826339512160,	-0.126240226512322890,	-0.126190626369533040,	-0.126141025911266660,	-0.126091425137647680,	
+-0.126041824048799270,	-0.125992222644847190,	-0.125942620925914540,	-0.125893018892125340,	-0.125843416543603620,	-0.125793813880473340,	-0.125744210902858510,	-0.125694607610882280,	
+-0.125645004004670410,	-0.125595400084346030,	-0.125545795850033170,	-0.125496191301855800,	-0.125446586439937950,	-0.125396981264403630,	-0.125347375775376880,	-0.125297769972980780,	
+-0.125248163857341170,	-0.125198557428581130,	-0.125148950686824690,	-0.125099343632195910,	-0.125049736264818720,	-0.125000128584817210,	-0.124950520592315400,	-0.124900912287436380,	
+-0.124851303670305970,	-0.124801694741047310,	-0.124752085499784410,	-0.124702475946641290,	-0.124652866081741980,	-0.124603255905210500,	-0.124553645417170000,	-0.124504034617746270,	
+-0.124454423507062470,	-0.124404812085242590,	-0.124355200352410680,	-0.124305588308690790,	-0.124255975954206910,	-0.124206363289083090,	-0.124156750313442490,	-0.124107137027410900,	
+-0.124057523431111450,	-0.124007909524668210,	-0.123958295308205180,	-0.123908680781846430,	-0.123859065945715950,	-0.123809450799937830,	-0.123759835344635190,	-0.123710219579933850,	
+-0.123660603505956960,	-0.123610987122828560,	-0.123561370430672700,	-0.123511753429613400,	-0.123462136119774720,	-0.123412518501279820,	-0.123362900574254500,	-0.123313282338821940,	
+-0.123263663795106170,	-0.123214044943231240,	-0.123164425783321190,	-0.123114806315500090,	-0.123065186539891970,	-0.123015566456620000,	-0.122965946065809990,	-0.122916325367585120,	
+-0.122866704362069440,	-0.122817083049386990,	-0.122767461429661840,	-0.122717839503018040,	-0.122668217269578740,	-0.122618594729469800,	-0.122568971882814360,	-0.122519348729736510,	
+-0.122469725270360260,	-0.122420101504809710,	-0.122370477433208920,	-0.122320853055681920,	-0.122271228372351910,	-0.122221603383344720,	-0.122171978088783490,	-0.122122352488792340,	
+-0.122072726583495310,	-0.122023100373016460,	-0.121973473857479860,	-0.121923847037009580,	-0.121874219911728800,	-0.121824592481763330,	-0.121774964747236400,	-0.121725336708272060,	
+-0.121675708364994380,	-0.121626079717527410,	-0.121576450765995260,	-0.121526821510521090,	-0.121477191951230750,	-0.121427562088247430,	-0.121377931921695200,	-0.121328301451698150,	
+-0.121278670678380340,	-0.121229039601865860,	-0.121179408222278780,	-0.121129776539742300,	-0.121080144554382250,	-0.121030512266321850,	-0.120980879675685160,	-0.120931246782596270,	
+-0.120881613587179280,	-0.120831980089558240,	-0.120782346289857250,	-0.120732712188199520,	-0.120683077784710880,	-0.120633443079514550,	-0.120583808072734620,	-0.120534172764495170,	
+-0.120484537154920290,	-0.120434901244134060,	-0.120385265032259690,	-0.120335628519423050,	-0.120285991705747330,	-0.120236354591356630,	-0.120186717176375050,	-0.120137079460926680,	
+-0.120087441445135600,	-0.120037803129125930,	-0.119988164513020860,	-0.119938525596946260,	-0.119888886381025350,	-0.119839246865382230,	-0.119789607050140990,	-0.119739966935425730,	
+-0.119690326521360550,	-0.119640685808068680,	-0.119591044795675960,	-0.119541403484305640,	-0.119491761874081820,	-0.119442119965128590,	-0.119392477757570060,	-0.119342835251530330,	
+-0.119293192447133520,	-0.119243549344502830,	-0.119193905943764170,	-0.119144262245040720,	-0.119094618248456640,	-0.119044973954136000,	-0.118995329362202930,	-0.118945684472781530,	
+-0.118896039285995930,	-0.118846393801969350,	-0.118796748020827670,	-0.118747101942694100,	-0.118697455567692790,	-0.118647808895947840,	-0.118598161927583360,	-0.118548514662723480,	
+-0.118498867101491430,	-0.118449219244013110,	-0.118399571090411730,	-0.118349922640811410,	-0.118300273895336300,	-0.118250624854110500,	-0.118200975517258140,	-0.118151325884903350,	
+-0.118101675957169350,	-0.118052025734182040,	-0.118002375216064670,	-0.117952724402941370,	-0.117903073294936250,	-0.117853421892173450,	-0.117803770194777100,	-0.117754118202871310,	
+-0.117704465916579350,	-0.117654813336027110,	-0.117605160461337840,	-0.117555507292635660,	-0.117505853830044720,	-0.117456200073689130,	-0.117406546023693060,	-0.117356891680179740,	
+-0.117307237043275060,	-0.117257582113102300,	-0.117207926889785580,	-0.117158271373449040,	-0.117108615564216830,	-0.117058959462213060,	-0.117009303067561910,	-0.116959646380386630,	
+-0.116909989400813100,	-0.116860332128964600,	-0.116810674564965260,	-0.116761016708939250,	-0.116711358561010680,	-0.116661700121303740,	-0.116612041389941650,	-0.116562382367050340,	
+-0.116512723052753080,	-0.116463063447174000,	-0.116413403550437280,	-0.116363743362667030,	-0.116314082883987440,	-0.116264422114522630,	-0.116214761054395890,	-0.116165099703733120,	
+-0.116115438062657620,	-0.116065776131293500,	-0.116016113909764960,	-0.115966451398196130,	-0.115916788596711170,	-0.115867125505434240,	-0.115817462124488610,	-0.115767798454000200,	
+-0.115718134494092310,	-0.115668470244889080,	-0.115618805706514670,	-0.115569140879093240,	-0.115519475762748970,	-0.115469810357605120,	-0.115420144663787640,	-0.115370478681419780,	
+-0.115320812410625740,	-0.115271145851529660,	-0.115221479004255710,	-0.115171811868928070,	-0.115122144445670900,	-0.115072476734607480,	-0.115022808735863760,	-0.114973140449563010,	
+-0.114923471875829420,	-0.114873803014787140,	-0.114824133866560360,	-0.114774464431273250,	-0.114724794709049960,	-0.114675124700013810,	-0.114625454404290730,	-0.114575783822004020,	
+-0.114526112953277840,	-0.114476441798236390,	-0.114426770357003830,	-0.114377098629704340,	-0.114327426616461230,	-0.114277754317400430,	-0.114228081732645250,	-0.114178408862319860,	
+-0.114128735706548450,	-0.114079062265455190,	-0.114029388539164290,	-0.113979714527799910,	-0.113930040231485370,	-0.113880365650346610,	-0.113830690784506930,	-0.113781015634090530,	
+-0.113731340199221580,	-0.113681664480024290,	-0.113631988476622830,	-0.113582312189140530,	-0.113532635617703310,	-0.113482958762434510,	-0.113433281623458320,	-0.113383604200898940,	
+-0.113333926494880530,	-0.113284248505527300,	-0.113234570232963460,	-0.113184891677312300,	-0.113135212838699800,	-0.113085533717249280,	-0.113035854313084910,	-0.112986174626330910,	
+-0.112936494657111470,	-0.112886814405550790,	-0.112837133871773090,	-0.112787453055901650,	-0.112737771958062480,	-0.112688090578378880,	-0.112638408916975030,	-0.112588726973975180,	
+-0.112539044749503510,	-0.112489362243684220,	-0.112439679456640660,	-0.112389996388498770,	-0.112340313039381880,	-0.112290629409414210,	-0.112240945498719980,	-0.112191261307423380,	
+-0.112141576835648630,	-0.112091892083519940,	-0.112042207051160620,	-0.111992521738696680,	-0.111942836146251430,	-0.111893150273949100,	-0.111843464121913890,	-0.111793777690270020,	
+-0.111744090979141700,	-0.111694403988653160,	-0.111644716718927710,	-0.111595029170091370,	-0.111545341342267440,	-0.111495653235580180,	-0.111445964850153780,	-0.111396276186112450,	
+-0.111346587243580440,	-0.111296898022681080,	-0.111247208523540360,	-0.111197518746281630,	-0.111147828691029090,	-0.111098138357906970,	-0.111048447747039520,	-0.110998756858550940,	
+-0.110949065692565480,	-0.110899374249206460,	-0.110849682528599890,	-0.110799990530869110,	-0.110750298256138370,	-0.110700605704531870,	-0.110650912876173860,	-0.110601219771188570,	
+-0.110551526389699340,	-0.110501832731832190,	-0.110452138797710440,	-0.110402444587458360,	-0.110352750101200160,	-0.110303055339060080,	-0.110253360301162380,	-0.110203664987631260,	
+-0.110153969398590110,	-0.110104273534164910,	-0.110054577394479030,	-0.110004880979656700,	-0.109955184289822180,	-0.109905487325099690,	-0.109855790085613480,	-0.109806092571487800,	
+-0.109756394782846000,	-0.109706696719814100,	-0.109656998382515470,	-0.109607299771074320,	-0.109557600885614950,	-0.109507901726261560,	-0.109458202293138410,	-0.109408502586368870,	
+-0.109358802606078970,	-0.109309102352392070,	-0.109259401825432400,	-0.109209701025324220,	-0.109159999952191790,	-0.109110298606159370,	-0.109060596987351200,	-0.109010895095890650,	
+-0.108961192931903760,	-0.108911490495513870,	-0.108861787786845260,	-0.108812084806022180,	-0.108762381553168890,	-0.108712678028409640,	-0.108662974231868710,	-0.108613270163669450,	
+-0.108563565823937900,	-0.108513861212797440,	-0.108464156330372320,	-0.108414451176786820,	-0.108364745752165180,	-0.108315040056631670,	-0.108265334090309700,	-0.108215627853325250,	
+-0.108165921345801750,	-0.108116214567863440,	-0.108066507519634590,	-0.108016800201239480,	-0.107967092612802370,	-0.107917384754447520,	-0.107867676626298330,	-0.107817968228480830,	
+-0.107768259561118410,	-0.107718550624335340,	-0.107668841418255890,	-0.107619131943004350,	-0.107569422198704970,	-0.107519712185481150,	-0.107470001903458940,	-0.107420291352761710,	
+-0.107370580533513770,	-0.107320869445839360,	-0.107271158089862800,	-0.107221446465708330,	-0.107171734573500250,	-0.107122022413361940,	-0.107072309985419470,	-0.107022597289796210,	
+-0.106972884326616470,	-0.106923171096004520,	-0.106873457598084640,	-0.106823743832981110,	-0.106774029800818220,	-0.106724315501719390,	-0.106674600935810630,	-0.106624886103215380,	
+-0.106575171004057920,	-0.106525455638462520,	-0.106475740006553490,	-0.106426024108455100,	-0.106376307944290770,	-0.106326591514186570,	-0.106276874818265880,	-0.106227157856653000,	
+-0.106177440629472220,	-0.106127723136847850,	-0.106078005378904160,	-0.106028287355765470,	-0.105978569067555180,	-0.105928850514399330,	-0.105879131696421370,	-0.105829412613745580,	
+-0.105779693266496260,	-0.105729973654797690,	-0.105680253778774210,	-0.105630533638550090,	-0.105580813234248740,	-0.105531092565996240,	-0.105481371633916020,	-0.105431650438132370,	
+-0.105381928978769590,	-0.105332207255951990,	-0.105282485269803870,	-0.105232763020448660,	-0.105183040508012420,	-0.105133317732618580,	-0.105083594694391440,	-0.105033871393455320,	
+-0.104984147829934520,	-0.104934424003953350,	-0.104884699915636120,	-0.104834975565106250,	-0.104785250952489830,	-0.104735526077910280,	-0.104685800941491940,	-0.104636075543359060,	
+-0.104586349883636020,	-0.104536623962447090,	-0.104486897779915710,	-0.104437171336167990,	-0.104387444631327330,	-0.104337717665518050,	-0.104287990438864500,	-0.104238262951490950,	
+-0.104188535203521750,	-0.104138807195081210,	-0.104089078926292780,	-0.104039350397282530,	-0.103989621608173900,	-0.103939892559091220,	-0.103890163250158800,	-0.103840433681500990,	
+-0.103790703853242090,	-0.103740973765506410,	-0.103691243418417430,	-0.103641512812101220,	-0.103591781946681240,	-0.103542050822281790,	-0.103492319439027220,	-0.103442587797041850,	
+-0.103392855896450020,	-0.103343123737375160,	-0.103293391319943360,	-0.103243658644278090,	-0.103193925710503680,	-0.103144192518744460,	-0.103094459069124750,	-0.103044725361768900,	
+-0.102994991396801220,	-0.102945257174345190,	-0.102895522694526900,	-0.102845787957469810,	-0.102796052963298230,	-0.102746317712136530,	-0.102696582204109040,	-0.102646846439340090,	
+-0.102597110417953150,	-0.102547374140074300,	-0.102497637605827030,	-0.102447900815335650,	-0.102398163768724530,	-0.102348426466118000,	-0.102298688907640410,	-0.102248951093416090,	
+-0.102199213023568510,	-0.102149474698223770,	-0.102099736117505350,	-0.102049997281537600,	-0.102000258190444850,	-0.101950518844351450,	-0.101900779243381760,	-0.101851039387660120,	
+-0.101801299277309990,	-0.101751558912457500,	-0.101701818293226120,	-0.101652077419740190,	-0.101602336292124060,	-0.101552594910502100,	-0.101502853274998650,	-0.101453111385737180,	
+-0.101403369242843820,	-0.101353626846442030,	-0.101303884196656170,	-0.101254141293610610,	-0.101204398137429690,	-0.101154654728237790,	-0.101104911066159240,	-0.101055167151317530,	
+-0.101005422983838790,	-0.100955678563846480,	-0.100905933891464970,	-0.100856188966818650,	-0.100806443790031840,	-0.100756698361228930,	-0.100706952680533380,	-0.100657206748071340,	
+-0.100607460563966290,	-0.100557714128342570,	-0.100507967441324580,	-0.100458220503036650,	-0.100408473313603200,	-0.100358725873148550,	-0.100308978181796200,	-0.100259230239672290,	
+-0.100209482046900310,	-0.100159733603604610,	-0.100109984909909590,	-0.100060235965939600,	-0.100010486771819030,	-0.099960737327672244,	-0.099910987633622717,	-0.099861237689796614,	
+-0.099811487496317422,	-0.099761737053309499,	-0.099711986360897231,	-0.099662235419205006,	-0.099612484228357195,	-0.099562732788477284,	-0.099512981099691436,	-0.099463229162123121,	
+-0.099413476975896739,	-0.099363724541136664,	-0.099313971857967281,	-0.099264218926512965,	-0.099214465746898101,	-0.099164712319246187,	-0.099114958643683387,	-0.099065204720333172,	
+-0.099015450549319955,	-0.098965696130768124,	-0.098915941464802037,	-0.098866186551546095,	-0.098816431391124698,	-0.098766675983661331,	-0.098716920329282157,	-0.098667164428110687,	
+-0.098617408280271310,	-0.098567651885888397,	-0.098517895245086362,	-0.098468138357989593,	-0.098418381224721602,	-0.098368623845408523,	-0.098318866220173898,	-0.098269108349142098,	
+-0.098219350232437538,	-0.098169591870184592,	-0.098119833262507672,	-0.098070074409531166,	-0.098020315311378586,	-0.097970555968176110,	-0.097920796380047248,	-0.097871036547116388,	
+-0.097821276469507931,	-0.097771516147346291,	-0.097721755580755867,	-0.097671994769860160,	-0.097622233714785345,	-0.097572472415654962,	-0.097522710872593385,	-0.097472949085725027,	
+-0.097423187055174304,	-0.097373424781065615,	-0.097323662263523361,	-0.097273899502671082,	-0.097224136498634914,	-0.097174373251538423,	-0.097124609761505984,	-0.097074846028662037,	
+-0.097025082053130970,	-0.096975317835037184,	-0.096925553374505119,	-0.096875788671658289,	-0.096826023726622856,	-0.096776258539522375,	-0.096726493110481246,	-0.096676727439623883,	
+-0.096626961527074701,	-0.096577195372958113,	-0.096527428977397647,	-0.096477662340519507,	-0.096427895462447205,	-0.096378128343305169,	-0.096328360983217801,	-0.096278593382309541,	
+-0.096228825540704790,	-0.096179057458527978,	-0.096129289135902643,	-0.096079520572954963,	-0.096029751769808491,	-0.095979982726587629,	-0.095930213443416817,	-0.095880443920420458,	
+-0.095830674157723006,	-0.095780904155448862,	-0.095731133913721581,	-0.095681363432667338,	-0.095631592712409688,	-0.095581821753073060,	-0.095532050554781880,	-0.095482279117660565,	
+-0.095432507441833556,	-0.095382735527424392,	-0.095332963374559279,	-0.095283190983361757,	-0.095233418353956253,	-0.095183645486467211,	-0.095133872381019058,	-0.095084099037736208,	
+-0.095034325456743118,	-0.094984551638163342,	-0.094934777582123056,	-0.094885003288745828,	-0.094835228758156101,	-0.094785453990478288,	-0.094735678985836846,	-0.094685903744356217,	
+-0.094636128266159941,	-0.094586352551374223,	-0.094536576600122615,	-0.094486800412529576,	-0.094437023988719532,	-0.094387247328816939,	-0.094337470432946213,	-0.094287693301231823,	
+-0.094237915933797309,	-0.094188138330768889,	-0.094138360492270132,	-0.094088582418425465,	-0.094038804109359345,	-0.093989025565196213,	-0.093939246786060512,	-0.093889467772076698,	
+-0.093839688523368339,	-0.093789909040061625,	-0.093740129322280152,	-0.093690349370148363,	-0.093640569183790684,	-0.093590788763331587,	-0.093541008108895526,	-0.093491227220606057,	
+-0.093441446098589398,	-0.093391664742969130,	-0.093341883153869695,	-0.093292101331415550,	-0.093242319275731164,	-0.093192536986940966,	-0.093142754465169439,	-0.093092971710540137,	
+-0.093043188723179279,	-0.092993405503210461,	-0.092943622050758123,	-0.092893838365946738,	-0.092844054448900759,	-0.092794270299744630,	-0.092744485918602834,	-0.092694701305598939,	
+-0.092644916460859178,	-0.092595131384507118,	-0.092545346076667229,	-0.092495560537463981,	-0.092445774767021829,	-0.092395988765465245,	-0.092346202532917795,	-0.092296416069505727,	
+-0.092246629375352621,	-0.092196842450582947,	-0.092147055295321162,	-0.092097267909691735,	-0.092047480293819137,	-0.091997692447827850,	-0.091947904371841443,	-0.091898116065986149,	
+-0.091848327530385576,	-0.091798538765164181,	-0.091748749770446433,	-0.091698960546356817,	-0.091649171093019802,	-0.091599381410558969,	-0.091549591499100580,	-0.091499801358768201,	
+-0.091450010989686317,	-0.091400220391979412,	-0.091350429565771940,	-0.091300638511188414,	-0.091250847228353291,	-0.091201055717390150,	-0.091151263978425268,	-0.091101472011582224,	
+-0.091051679816985490,	-0.091001887394759562,	-0.090952094745028925,	-0.090902301867918034,	-0.090852508763551401,	-0.090802715432052608,	-0.090752921873547915,	-0.090703128088160917,	
+-0.090653334076016098,	-0.090603539837237942,	-0.090553745371950933,	-0.090503950680279555,	-0.090454155762347430,	-0.090404360618280791,	-0.090354565248203261,	-0.090304769652239311,	
+-0.090254973830513438,	-0.090205177783150126,	-0.090155381510273871,	-0.090105585012009173,	-0.090055788288479613,	-0.090005991339811478,	-0.089956194166128350,	-0.089906396767554755,	
+-0.089856599144215163,	-0.089806801296234057,	-0.089757003223735962,	-0.089707204926845363,	-0.089657406405685855,	-0.089607607660383726,	-0.089557808691062571,	-0.089508009497846902,	
+-0.089458210080861203,	-0.089408410440229985,	-0.089358610576077732,	-0.089308810488528081,	-0.089259010177707279,	-0.089209209643738949,	-0.089159408886747601,	-0.089109607906857721,	
+-0.089059806704193833,	-0.089010005278880422,	-0.088960203631041998,	-0.088910401760802185,	-0.088860599668287257,	-0.088810797353620824,	-0.088760994816927397,	-0.088711192058331473,	
+-0.088661389077957578,	-0.088611585875930210,	-0.088561782452372992,	-0.088511978807412212,	-0.088462174941171479,	-0.088412370853775304,	-0.088362566545348201,	-0.088312762016014679,	
+-0.088262957265899264,	-0.088213152295126454,	-0.088163347103819872,	-0.088113541692105807,	-0.088063736060107894,	-0.088013930207950633,	-0.087964124135758548,	-0.087914317843656165,	
+-0.087864511331767967,	-0.087814704600218507,	-0.087764897649131396,	-0.087715090478632921,	-0.087665283088846732,	-0.087615475479897315,	-0.087565667651909221,	-0.087515859605006963,	
+-0.087466051339315051,	-0.087416242854957124,	-0.087366434152059483,	-0.087316625230745751,	-0.087266816091140453,	-0.087217006733368116,	-0.087167197157553264,	-0.087117387363820423,	
+-0.087067577352294104,	-0.087017767123097972,	-0.086967956676358288,	-0.086918146012198730,	-0.086868335130743796,	-0.086818524032118025,	-0.086768712716445942,	-0.086718901183852087,	
+-0.086669089434460972,	-0.086619277468396247,	-0.086569465285784214,	-0.086519652886748524,	-0.086469840271413703,	-0.086420027439904276,	-0.086370214392344782,	-0.086320401128859747,	
+-0.086270587649572822,	-0.086220773954610322,	-0.086170960044095885,	-0.086121145918154049,	-0.086071331576909341,	-0.086021517020486313,	-0.085971702249009491,	-0.085921887262603414,	
+-0.085872072061391733,	-0.085822256645500750,	-0.085772441015054129,	-0.085722625170176411,	-0.085672809110992121,	-0.085622992837625811,	-0.085573176350202021,	-0.085523359648844402,	
+-0.085473542733679284,	-0.085423725604830289,	-0.085373908262421999,	-0.085324090706578926,	-0.085274272937425621,	-0.085224454955086640,	-0.085174636759686520,	-0.085124818351348927,	
+-0.085074999730200176,	-0.085025180896363919,	-0.084975361849964723,	-0.084925542591127098,	-0.084875723119975641,	-0.084825903436634861,	-0.084776083541229327,	-0.084726263433882704,	
+-0.084676443114721306,	-0.084626622583868785,	-0.084576801841449722,	-0.084526980887588657,	-0.084477159722410128,	-0.084427338346038716,	-0.084377516758598059,	-0.084327694960214500,	
+-0.084277872951011704,	-0.084228050731114223,	-0.084178228300646626,	-0.084128405659733438,	-0.084078582808499253,	-0.084028759747068610,	-0.083978936475565175,	-0.083929112994115290,	
+-0.083879289302842622,	-0.083829465401871722,	-0.083779641291327173,	-0.083729816971333512,	-0.083679992442015308,	-0.083630167703497127,	-0.083580342755902634,	-0.083530517599358173,	
+-0.083480692233987422,	-0.083430866659914935,	-0.083381040877265292,	-0.083331214886163033,	-0.083281388686732738,	-0.083231562279098101,	-0.083181735663385423,	-0.083131908839718424,	
+-0.083082081808221644,	-0.083032254569019665,	-0.082982427122237037,	-0.082932599467998358,	-0.082882771606428166,	-0.082832943537650167,	-0.082783115261790691,	-0.082733286778973431,	
+-0.082683458089322953,	-0.082633629192963826,	-0.082583800090020629,	-0.082533970780617943,	-0.082484141264879435,	-0.082434311542931446,	-0.082384481614897698,	-0.082334651480902743,	
+-0.082284821141071149,	-0.082234990595527510,	-0.082185159844396394,	-0.082135328887802367,	-0.082085497725869150,	-0.082035666358723058,	-0.081985834786487813,	-0.081936003009287980,	
+-0.081886171027248142,	-0.081836338840492864,	-0.081786506449146743,	-0.081736673853334357,	-0.081686841053179401,	-0.081637008048808232,	-0.081587174840344542,	-0.081537341427912913,	
+-0.081487507811637938,	-0.081437673991644186,	-0.081387839968056250,	-0.081338005740997824,	-0.081288171310595264,	-0.081238336676972292,	-0.081188501840253474,	-0.081138666800563392,	
+-0.081088831558026653,	-0.081038996112767839,	-0.080989160464911517,	-0.080939324614581420,	-0.080889488561903894,	-0.080839652307002657,	-0.080789815850002278,	-0.080739979191027364,	
+-0.080690142330202497,	-0.080640305267652285,	-0.080590468003501295,	-0.080540630537873262,	-0.080490792870894529,	-0.080440955002688816,	-0.080391116933380719,	-0.080341278663094831,	
+-0.080291440191955749,	-0.080241601520088052,	-0.080191762647615475,	-0.080141923574664375,	-0.080092084301358474,	-0.080042244827822351,	-0.079992405154180629,	-0.079942565280557876,	
+-0.079892725207078727,	-0.079842884933867764,	-0.079793044461048693,	-0.079743203788747899,	-0.079693362917089103,	-0.079643521846196885,	-0.079593680576195869,	-0.079543839107210662,	
+-0.079493997439365846,	-0.079444155572785155,	-0.079394313507594960,	-0.079344471243918982,	-0.079294628781881829,	-0.079244786121608096,	-0.079194943263222406,	-0.079145100206849353,	
+-0.079095256952613546,	-0.079045413500638720,	-0.078995569851051245,	-0.078945726003974842,	-0.078895881959534120,	-0.078846037717853701,	-0.078796193279058180,	-0.078746348643272179,	
+-0.078696503810620308,	-0.078646658781226286,	-0.078596813555216513,	-0.078546968132714695,	-0.078497122513845469,	-0.078447276698733429,	-0.078397430687503197,	-0.078347584480279384,	
+-0.078297738077185736,	-0.078247891478348625,	-0.078198044683891785,	-0.078148197693939825,	-0.078098350508617381,	-0.078048503128049049,	-0.077998655552359478,	-0.077948807781673249,	
+-0.077898959816114124,	-0.077849111655808489,	-0.077799263300880064,	-0.077749414751453486,	-0.077699566007653376,	-0.077649717069604343,	-0.077599867937431025,	-0.077550018611258043,	
+-0.077500169091209117,	-0.077450319377410648,	-0.077400469469986397,	-0.077350619369060958,	-0.077300769074758982,	-0.077250918587205078,	-0.077201067906523882,	-0.077151217032839128,	
+-0.077101365966277216,	-0.077051514706961879,	-0.077001663255017769,	-0.076951811610569493,	-0.076901959773741702,	-0.076852107744658990,	-0.076802255523446022,	-0.076752403110226533,	
+-0.076702550505126921,	-0.076652697708270920,	-0.076602844719783181,	-0.076552991539788340,	-0.076503138168411006,	-0.076453284605775843,	-0.076403430852006571,	-0.076353576907229603,	
+-0.076303722771568702,	-0.076253868445148490,	-0.076204013928093617,	-0.076154159220528692,	-0.076104304322578378,	-0.076054449234367313,	-0.076004593956019231,	-0.075954738487660545,	
+-0.075904882829415016,	-0.075855026981407281,	-0.075805170943761976,	-0.075755314716603739,	-0.075705458300057232,	-0.075655601694247065,	-0.075605744899297014,	-0.075555887915333478,	
+-0.075506030742480232,	-0.075456173380861899,	-0.075406315830603143,	-0.075356458091828601,	-0.075306600164662910,	-0.075256742049229816,	-0.075206883745655775,	-0.075157025254064508,	
+-0.075107166574580692,	-0.075057307707328949,	-0.075007448652433945,	-0.074957589410020314,	-0.074907729980212709,	-0.074857870363134904,	-0.074808010558913299,	-0.074758150567671669,	
+-0.074708290389534665,	-0.074658430024626923,	-0.074608569473073122,	-0.074558708734997883,	-0.074508847810524997,	-0.074458986699780877,	-0.074409125402889284,	-0.074359263919974883,	
+-0.074309402251162324,	-0.074259540396576257,	-0.074209678356341346,	-0.074159816130582229,	-0.074109953719422680,	-0.074060091122989141,	-0.074010228341405374,	-0.073960365374796042,	
+-0.073910502223285796,	-0.073860638886999286,	-0.073810775366061177,	-0.073760911660596132,	-0.073711047770727928,	-0.073661183696582991,	-0.073611319438285083,	-0.073561454995958897,	
+-0.073511590369729055,	-0.073461725559720248,	-0.073411860566057113,	-0.073361995388863455,	-0.073312130028265685,	-0.073262264484387593,	-0.073212398757353844,	-0.073162532847289102,	
+-0.073112666754318018,	-0.073062800478565268,	-0.073012934020155518,	-0.072963067379212557,	-0.072913200555862798,	-0.072863333550230044,	-0.072813466362438961,	-0.072763598992614212,	
+-0.072713731440880461,	-0.072663863707362372,	-0.072613995792183750,	-0.072564127695471034,	-0.072514259417347987,	-0.072464390957939287,	-0.072414522317369612,	-0.072364653495763639,	
+-0.072314784493246020,	-0.072264915309941447,	-0.072215045945973694,	-0.072165176401469230,	-0.072115306676551805,	-0.072065436771346122,	-0.072015566685976848,	-0.071965696420568659,	
+-0.071915825975246220,	-0.071865955350134222,	-0.071816084545356443,	-0.071766213561039349,	-0.071716342397306718,	-0.071666471054283226,	-0.071616599532093567,	-0.071566727830862403,	
+-0.071516855950714414,	-0.071466983891773403,	-0.071417111654165824,	-0.071367239238015454,	-0.071317366643446997,	-0.071267493870585119,	-0.071217620919554511,	-0.071167747790479852,	
+-0.071117874483485818,	-0.071068000998696201,	-0.071018127336237483,	-0.070968253496233438,	-0.070918379478808774,	-0.070868505284088154,	-0.070818630912196256,	-0.070768756363257801,	
+-0.070718881637397438,	-0.070669006734738998,	-0.070619131655408923,	-0.070569256399531016,	-0.070519380967229969,	-0.070469505358630474,	-0.070419629573857223,	-0.070369753613034880,	
+-0.070319877476287276,	-0.070270001163740867,	-0.070220124675519455,	-0.070170248011747718,	-0.070120371172550378,	-0.070070494158052096,	-0.070020616968377594,	-0.069970739603651536,	
+-0.069920862063997752,	-0.069870984349542697,	-0.069821106460410176,	-0.069771228396724894,	-0.069721350158611542,	-0.069671471746194813,	-0.069621593159599399,	-0.069571714398949117,	
+-0.069521835464370449,	-0.069471956355987172,	-0.069422077073924018,	-0.069372197618305667,	-0.069322317989256824,	-0.069272438186902180,	-0.069222558211366456,	-0.069172678062773441,	
+-0.069122797741249617,	-0.069072917246918789,	-0.069023036579905675,	-0.068973155740334968,	-0.068923274728331374,	-0.068873393544019598,	-0.068823512187524333,	-0.068773630658969409,	
+-0.068723748958481282,	-0.068673867086183796,	-0.068623985042201630,	-0.068574102826659503,	-0.068524220439682121,	-0.068474337881394190,	-0.068424455151919528,	-0.068374572251384616,	
+-0.068324689179913273,	-0.068274805937630204,	-0.068224922524660128,	-0.068175038941127739,	-0.068125155187157754,	-0.068075271262874881,	-0.068025387168402937,	-0.067975502903868418,	
+-0.067925618469395141,	-0.067875733865107812,	-0.067825849091131152,	-0.067775964147589879,	-0.067726079034608686,	-0.067676193752312291,	-0.067626308300824542,	-0.067576422680271891,	
+-0.067526536890778199,	-0.067476650932468157,	-0.067426764805466485,	-0.067376878509897903,	-0.067326992045887130,	-0.067277105413557983,	-0.067227218613036960,	-0.067177331644447891,	
+-0.067127444507915496,	-0.067077557203564481,	-0.067027669731519579,	-0.066977782091905511,	-0.066927894284846981,	-0.066878006310467822,	-0.066828118168894543,	-0.066778229860250962,	
+-0.066728341384661813,	-0.066678452742251801,	-0.066628563933145674,	-0.066578674957468123,	-0.066528785815342995,	-0.066478896506896798,	-0.066429007032253365,	-0.066379117391537401,	
+-0.066329227584873654,	-0.066279337612386829,	-0.066229447474201661,	-0.066179557170442882,	-0.066129666701234324,	-0.066079776066702484,	-0.066029885266971192,	-0.065979994302165196,	
+-0.065930103172409216,	-0.065880211877827985,	-0.065830320418546209,	-0.065780428794688636,	-0.065730537006379111,	-0.065680645053744130,	-0.065630752936907524,	-0.065580860655994055,	
+-0.065530968211128415,	-0.065481075602435365,	-0.065431182830039625,	-0.065381289894065039,	-0.065331396794638119,	-0.065281503531882709,	-0.065231610105923529,	-0.065181716516885341,	
+-0.065131822764892849,	-0.065081928850070803,	-0.065032034772543934,	-0.064982140532436089,	-0.064932246129873777,	-0.064882351564980859,	-0.064832456837882066,	-0.064782561948702119,	
+-0.064732666897565766,	-0.064682771684597754,	-0.064632876309922815,	-0.064582980773664783,	-0.064533085075950208,	-0.064483189216902909,	-0.064433293196647631,	-0.064383397015309124,	
+-0.064333500673012134,	-0.064283604169881381,	-0.064233707506040738,	-0.064183810681616701,	-0.064133913696733144,	-0.064084016551514814,	-0.064034119246086429,	-0.063984221780572753,	
+-0.063934324155098518,	-0.063884426369788472,	-0.063834528424766473,	-0.063784630320159047,	-0.063734732056090038,	-0.063684833632684207,	-0.063634935050066274,	-0.063585036308361029,	
+-0.063535137407693176,	-0.063485238348186590,	-0.063435339129967808,	-0.063385439753160674,	-0.063335540217889938,	-0.063285640524280345,	-0.063235740672456658,	-0.063185840662543624,	
+-0.063135940494665976,	-0.063086040168947602,	-0.063036139685515011,	-0.062986239044492076,	-0.062936338246003531,	-0.062886437290174152,	-0.062836536177128671,	-0.062786634906991851,	
+-0.062736733479888451,	-0.062686831895942319,	-0.062636930155280005,	-0.062587028258025354,	-0.062537126204303142,	-0.062487223994238117,	-0.062437321627955025,	-0.062387419105578629,	
+-0.062337516427232800,	-0.062287613593044071,	-0.062237710603136306,	-0.062187807457634262,	-0.062137904156662697,	-0.062088000700346375,	-0.062038097088810050,	-0.061988193322178489,	
+-0.061938289400575552,	-0.061888385324127777,	-0.061838481092959037,	-0.061788576707194100,	-0.061738672166957720,	-0.061688767472374659,	-0.061638862623569678,	-0.061588957620667538,	
+-0.061539052463792127,	-0.061489147153069960,	-0.061439241688624933,	-0.061389336070581800,	-0.061339430299065328,	-0.061289524374200273,	-0.061239618296111416,	-0.061189712064922623,	
+-0.061139805680760433,	-0.061089899143748738,	-0.061039992454012287,	-0.060990085611675855,	-0.060940178616864217,	-0.060890271469702120,	-0.060840364170314354,	-0.060790456718824791,	
+-0.060740549115359969,	-0.060690641360043776,	-0.060640733453000979,	-0.060590825394356347,	-0.060540917184234655,	-0.060491008822760664,	-0.060441100310058268,	-0.060391191646254012,	
+-0.060341282831471776,	-0.060291373865836329,	-0.060241464749472444,	-0.060191555482504905,	-0.060141646065058472,	-0.060091736497257929,	-0.060041826779227155,	-0.059991916911092701,	
+-0.059942006892978454,	-0.059892096725009190,	-0.059842186407309685,	-0.059792275940004712,	-0.059742365323219054,	-0.059692454557077473,	-0.059642543641703877,	-0.059592632577224809,	
+-0.059542721363764158,	-0.059492810001446704,	-0.059442898490397224,	-0.059392986830740499,	-0.059343075022601305,	-0.059293163066103535,	-0.059243250961373749,	-0.059193338708535832,	
+-0.059143426307714575,	-0.059093513759034745,	-0.059043601062621132,	-0.058993688218598517,	-0.058943775227091683,	-0.058893862088224523,	-0.058843948802123590,	-0.058794035368912791,	
+-0.058744121788716901,	-0.058694208061660709,	-0.058644294187868998,	-0.058594380167466549,	-0.058544466000578145,	-0.058494551687327694,	-0.058444637227841753,	-0.058394722622244218,	
+-0.058344807870659869,	-0.058294892973213511,	-0.058244977930029911,	-0.058195062741233872,	-0.058145147406949288,	-0.058095231927302725,	-0.058045316302418083,	-0.057995400532420145,	
+-0.057945484617433707,	-0.057895568557583557,	-0.057845652352994485,	-0.057795736003791287,	-0.057745819510097857,	-0.057695902872040773,	-0.057645986089743924,	-0.057596069163332111,	
+-0.057546152092930125,	-0.057496234878662761,	-0.057446317520654808,	-0.057396400019030180,	-0.057346482373915431,	-0.057296564585434480,	-0.057246646653712117,	-0.057196728578873139,	
+-0.057146810361042334,	-0.057096892000344505,	-0.057046973496904449,	-0.056997054850846073,	-0.056947136062295942,	-0.056897217131377978,	-0.056847298058216963,	-0.056797378842937708,	
+-0.056747459485665008,	-0.056697539986523653,	-0.056647620345638451,	-0.056597700563133312,	-0.056547780639134806,	-0.056497860573766857,	-0.056447940367154247,	-0.056398020019421791,	
+-0.056348099530694279,	-0.056298178901096528,	-0.056248258130752432,	-0.056198337219788584,	-0.056148416168328892,	-0.056098494976498159,	-0.056048573644421187,	-0.055998652172222788,	
+-0.055948730560027755,	-0.055898808807960894,	-0.055848886916146125,	-0.055798964884710020,	-0.055749042713776509,	-0.055699120403470394,	-0.055649197953916471,	-0.055599275365239557,	
+-0.055549352637564456,	-0.055499429771015969,	-0.055449506765718019,	-0.055399583621797192,	-0.055349660339377410,	-0.055299736918583475,	-0.055249813359540198,	-0.055199889662372388,	
+-0.055149965827204848,	-0.055100041854161515,	-0.055050117743368959,	-0.055000193494951111,	-0.054950269109032779,	-0.054900344585738767,	-0.054850419925193905,	-0.054800495127522983,	
+-0.054750570192850831,	-0.054700645121301364,	-0.054650719913001168,	-0.054600794568074179,	-0.054550869086645200,	-0.054500943468839047,	-0.054451017714780538,	-0.054401091824594482,	
+-0.054351165798404814,	-0.054301239636338115,	-0.054251313338518313,	-0.054201386905070238,	-0.054151460336118687,	-0.054101533631788490,	-0.054051606792204457,	-0.054001679817491405,	
+-0.053951752707773269,	-0.053901825463176636,	-0.053851898083825442,	-0.053801970569844502,	-0.053752042921358635,	-0.053702115138492663,	-0.053652187221371397,	-0.053602259170119668,	
+-0.053552330984861410,	-0.053502402665723203,	-0.053452474212828990,	-0.053402545626303595,	-0.053352616906271834,	-0.053302688052858531,	-0.053252759066188503,	-0.053202829946385699,	
+-0.053152900693576699,	-0.053102971307885452,	-0.053053041789436775,	-0.053003112138355499,	-0.052953182354766440,	-0.052903252438794422,	-0.052853322390564270,	-0.052803392210199931,	
+-0.052753461897828001,	-0.052703531453572407,	-0.052653600877557993,	-0.052603670169909571,	-0.052553739330751977,	-0.052503808360210034,	-0.052453877258408568,	-0.052403946025471528,	
+-0.052354014661525505,	-0.052304083166694444,	-0.052254151541103182,	-0.052204219784876535,	-0.052154287898139341,	-0.052104355881016425,	-0.052054423733631734,	-0.052004491456111870,	
+-0.051954559048580776,	-0.051904626511163288,	-0.051854693843984230,	-0.051804761047168441,	-0.051754828120840750,	-0.051704895065125982,	-0.051654961880148093,	-0.051605028566033689,	
+-0.051555095122906715,	-0.051505161550891999,	-0.051455227850114381,	-0.051405294020698690,	-0.051355360062769764,	-0.051305425976451553,	-0.051255491761870664,	-0.051205557419151046,	
+-0.051155622948417537,	-0.051105688349794967,	-0.051055753623408182,	-0.051005818769382004,	-0.050955883787841286,	-0.050905948678909969,	-0.050856013442714662,	-0.050806078079379327,	
+-0.050756142589028802,	-0.050706206971787911,	-0.050656271227781512,	-0.050606335357134428,	-0.050556399359971506,	-0.050506463236416700,	-0.050456526986596618,	-0.050406590610635224,	
+-0.050356654108657355,	-0.050306717480787848,	-0.050256780727151548,	-0.050206843847873300,	-0.050156906843077047,	-0.050106969712889422,	-0.050057032457434369,	-0.050007095076836733,	
+-0.049957157571221364,	-0.049907219940713100,	-0.049857282185436780,	-0.049807344305517261,	-0.049757406301078493,	-0.049707468172247096,	-0.049657529919147028,	-0.049607591541903133,	
+-0.049557653040640262,	-0.049507714415483260,	-0.049457775666556972,	-0.049407836793986241,	-0.049357897797895033,	-0.049307958678409966,	-0.049258019435655005,	-0.049208080069754995,	
+-0.049158140580834786,	-0.049108200969019224,	-0.049058261234433159,	-0.049008321377200556,	-0.048958381397448035,	-0.048908441295299560,	-0.048858501070879981,	-0.048808560724314151,	
+-0.048758620255726921,	-0.048708679665243136,	-0.048658738952987654,	-0.048608798119084438,	-0.048558857163660110,	-0.048508916086838647,	-0.048458974888744892,	-0.048409033569503691,	
+-0.048359092129239917,	-0.048309150568078406,	-0.048259208886143136,	-0.048209267083560728,	-0.048159325160455152,	-0.048109383116951260,	-0.048059440953173917,	-0.048009498669247967,	
+-0.047959556265298277,	-0.047909613741449690,	-0.047859671097826184,	-0.047809728334554387,	-0.047759785451758269,	-0.047709842449562681,	-0.047659899328092496,	-0.047609956087472559,	
+-0.047560012727827734,	-0.047510069249282874,	-0.047460125651961955,	-0.047410181935991613,	-0.047360238101495811,	-0.047310294148599413,	-0.047260350077427286,	-0.047210405888104275,	
+-0.047160461580755257,	-0.047110517155504197,	-0.047060572612477723,	-0.047010627951799826,	-0.046960683173595356,	-0.046910738277989181,	-0.046860793265106157,	-0.046810848135071151,	
+-0.046760902888009027,	-0.046710957524043757,	-0.046661012043301982,	-0.046611066445907672,	-0.046561120731985699,	-0.046511174901660922,	-0.046461228955058213,	-0.046411282892302425,	
+-0.046361336713517547,	-0.046311390418830214,	-0.046261444008364405,	-0.046211497482244984,	-0.046161550840596824,	-0.046111604083544783,	-0.046061657211213733,	-0.046011710223728540,	
+-0.045961763121213181,	-0.045911815903794305,	-0.045861868571595889,	-0.045811921124742798,	-0.045761973563359912,	-0.045712025887572089,	-0.045662078097504194,	-0.045612130193281114,	
+-0.045562182175026812,	-0.045512234042867951,	-0.045462285796928500,	-0.045412337437333333,	-0.045362388964207329,	-0.045312440377675345,	-0.045262491677862261,	-0.045212542864892062,	
+-0.045162593938891396,	-0.045112644899984240,	-0.045062695748295481,	-0.045012746483949977,	-0.044962797107072607,	-0.044912847617788243,	-0.044862898016221758,	-0.044812948302497144,	
+-0.044762998476741041,	-0.044713048539077448,	-0.044663098489631237,	-0.044613148328527273,	-0.044563198055890436,	-0.044513247671845613,	-0.044463297176517667,	-0.044413346570030585,	
+-0.044363395852511034,	-0.044313445024082986,	-0.044263494084871326,	-0.044213543035000934,	-0.044163591874596682,	-0.044113640603783449,	-0.044063689222685234,	-0.044013737731428679,	
+-0.043963786130137773,	-0.043913834418937411,	-0.043863882597952458,	-0.043813930667307800,	-0.043763978627128317,	-0.043714026477538886,	-0.043664074218663501,	-0.043614121850628823,	
+-0.043564169373558836,	-0.043514216787578421,	-0.043464264092812468,	-0.043414311289385860,	-0.043364358377423466,	-0.043314405357049293,	-0.043264452228389996,	-0.043214498991569567,	
+-0.043164545646712883,	-0.043114592193944846,	-0.043064638633390322,	-0.043014684965174202,	-0.042964731189421367,	-0.042914777306255820,	-0.042864823315804219,	-0.042814869218190561,	
+-0.042764915013539725,	-0.042714960701976605,	-0.042665006283626079,	-0.042615051758613041,	-0.042565097127062371,	-0.042515142389098072,	-0.042465187544846808,	-0.042415232594432570,	
+-0.042365277537980257,	-0.042315322375614743,	-0.042265367107460927,	-0.042215411733643689,	-0.042165456254287040,	-0.042115500669517636,	-0.042065544979459475,	-0.042015589184237458,	
+-0.041965633283976470,	-0.041915677278801390,	-0.041865721168837126,	-0.041815764954208551,	-0.041765808635039682,	-0.041715852211457176,	-0.041665895683585044,	-0.041615939051548166,	
+-0.041565982315471442,	-0.041516025475479765,	-0.041466068531698028,	-0.041416111484251110,	-0.041366154333263030,	-0.041316197078860452,	-0.041266239721167386,	-0.041216282260308712,	
+-0.041166324696409337,	-0.041116367029594154,	-0.041066409259988050,	-0.041016451387715036,	-0.040966493412901775,	-0.040916535335672286,	-0.040866577156151461,	-0.040816618874464188,	
+-0.040766660490735372,	-0.040716702005089901,	-0.040666743417652682,	-0.040616784728547711,	-0.040566825937901667,	-0.040516867045838553,	-0.040466908052483277,	-0.040416948957960733,	
+-0.040366989762395812,	-0.040317030465913416,	-0.040267071068637562,	-0.040217111570694915,	-0.040167151972209485,	-0.040117192273306179,	-0.040067232474109891,	-0.040017272574745529,	
+-0.039967312575337977,	-0.039917352476012143,	-0.039867392276892046,	-0.039817431978104355,	-0.039767471579773082,	-0.039717511082023128,	-0.039667550484979400,	-0.039617589788766797,	
+-0.039567628993510212,	-0.039517668099334560,	-0.039467707106363853,	-0.039417746014724760,	-0.039367784824541306,	-0.039317823535938386,	-0.039267862149040912,	-0.039217900663973779,	
+-0.039167939080861899,	-0.039117977399829279,	-0.039068015621002608,	-0.039018053744505891,	-0.038968091770464043,	-0.038918129699001963,	-0.038868167530244566,	-0.038818205264316744,	
+-0.038768242901343411,	-0.038718280441448587,	-0.038668317884758940,	-0.038618355231398505,	-0.038568392481492179,	-0.038518429635164872,	-0.038468466692541496,	-0.038418503653746952,	
+-0.038368540518905259,	-0.038318577288143099,	-0.038268613961584499,	-0.038218650539354367,	-0.038168687021577601,	-0.038118723408379122,	-0.038068759699883839,	-0.038018795896216651,	
+-0.037968831997501590,	-0.037918868003865333,	-0.037868903915431906,	-0.037818939732326216,	-0.037768975454673184,	-0.037719011082597710,	-0.037669046616224708,	-0.037619082055679091,	
+-0.037569117401084880,	-0.037519152652568763,	-0.037469187810254767,	-0.037419222874267799,	-0.037369257844732773,	-0.037319292721774602,	-0.037269327505518202,	-0.037219362196087596,	
+-0.037169396793609470,	-0.037119431298207849,	-0.037069465710007653,	-0.037019500029133796,	-0.036969534255711187,	-0.036919568389864738,	-0.036869602431719370,	-0.036819636381399110,	
+-0.036769670239030647,	-0.036719704004738007,	-0.036669737678646112,	-0.036619771260879869,	-0.036569804751564197,	-0.036519838150824012,	-0.036469871458784234,	-0.036419904675568888,	
+-0.036369937801304673,	-0.036319970836115607,	-0.036270003780126618,	-0.036220036633462613,	-0.036170069396248526,	-0.036120102068609258,	-0.036070134650668849,	-0.036020167142553995,	
+-0.035970199544388723,	-0.035920231856297946,	-0.035870264078406593,	-0.035820296210839583,	-0.035770328253721825,	-0.035720360207178253,	-0.035670392071332893,	-0.035620423846312435,	
+-0.035570455532240919,	-0.035520487129243265,	-0.035470518637444395,	-0.035420550056969230,	-0.035370581387942683,	-0.035320612630488801,	-0.035270643784734275,	-0.035220674850803137,	
+-0.035170705828820314,	-0.035120736718910722,	-0.035070767521199288,	-0.035020798235810939,	-0.034970828862870597,	-0.034920859402502294,	-0.034870889854832728,	-0.034820920219985937,	
+-0.034770950498086844,	-0.034720980689260376,	-0.034671010793631461,	-0.034621040811325013,	-0.034571070742465966,	-0.034521100587178354,	-0.034471130345588873,	-0.034421160017821577,	
+-0.034371189604001373,	-0.034321219104253196,	-0.034271248518701974,	-0.034221277847472628,	-0.034171307090689197,	-0.034121336248478393,	-0.034071365320964248,	-0.034021394308271682,	
+-0.033971423210525639,	-0.033921452027851032,	-0.033871480760372795,	-0.033821509408215857,	-0.033771537971504263,	-0.033721566450364705,	-0.033671594844921236,	-0.033621623155298777,	
+-0.033571651381622263,	-0.033521679524016613,	-0.033471707582606772,	-0.033421735557517658,	-0.033371763448873319,	-0.033321791256800459,	-0.033271818981423118,	-0.033221846622866237,	
+-0.033171874181254730,	-0.033121901656713547,	-0.033071929049367600,	-0.033021956359340951,	-0.032971983586760296,	-0.032922010731749683,	-0.032872037794434039,	-0.032822064774938306,	
+-0.032772091673387412,	-0.032722118489906284,	-0.032672145224619857,	-0.032622171877652185,	-0.032572198449129973,	-0.032522224939177259,	-0.032472251347918986,	-0.032422277675480081,	
+-0.032372303921985486,	-0.032322330087560129,	-0.032272356172328064,	-0.032222382176415987,	-0.032172408099947959,	-0.032122433943048916,	-0.032072459705843784,	-0.032022485388457499,	
+-0.031972510991015002,	-0.031922536513641235,	-0.031872561956460231,	-0.031822587319598715,	-0.031772612603180726,	-0.031722637807331207,	-0.031672662932175091,	-0.031622687977837322,	
+-0.031572712944442832,	-0.031522737832116558,	-0.031472762640982560,	-0.031422787371167535,	-0.031372812022795543,	-0.031322836595991520,	-0.031272861090880406,	-0.031222885507587138,	
+-0.031172909846236659,	-0.031122934106953017,	-0.031072958289862927,	-0.031022982395090441,	-0.030973006422760501,	-0.030923030372998043,	-0.030873054245928008,	-0.030823078041675341,	
+-0.030773101760364976,	-0.030723125402120969,	-0.030673148967070036,	-0.030623172455336231,	-0.030573195867044496,	-0.030523219202319773,	-0.030473242461286999,	-0.030423265644071117,	
+-0.030373288750797076,	-0.030323311781588921,	-0.030273334736573378,	-0.030223357615874497,	-0.030173380419617219,	-0.030123403147926494,	-0.030073425800927259,	-0.030023448378744461,	
+-0.029973470881502151,	-0.029923493309327056,	-0.029873515662343225,	-0.029823537940675604,	-0.029773560144449141,	-0.029723582273788775,	-0.029673604328819457,	-0.029623626309666126,	
+-0.029573648216452839,	-0.029523670049306321,	-0.029473691808350629,	-0.029423713493710708,	-0.029373735105511504,	-0.029323756643877957,	-0.029273778108935024,	-0.029223799500806755,	
+-0.029173820819619875,	-0.029123842065498444,	-0.029073863238567407,	-0.029023884338951714,	-0.028973905366776308,	-0.028923926322166140,	-0.028873947205246157,	-0.028823968016140417,	
+-0.028773988754975645,	-0.028724009421875901,	-0.028674030016966130,	-0.028624050540371287,	-0.028574070992216320,	-0.028524091372626171,	-0.028474111681725797,	-0.028424131919639255,	
+-0.028374152086493271,	-0.028324172182411907,	-0.028274192207520112,	-0.028224212161942836,	-0.028174232045805030,	-0.028124251859231647,	-0.028074271602346743,	-0.028024291275277047,	
+-0.027974310878146627,	-0.027924330411080427,	-0.027874349874203400,	-0.027824369267640502,	-0.027774388591516676,	-0.027724407845956880,	-0.027674427031085178,	-0.027624446147028296,	
+-0.027574465193910300,	-0.027524484171856139,	-0.027474503080990767,	-0.027424521921439141,	-0.027374540693326205,	-0.027324559396776922,	-0.027274578031915350,	-0.027224596598868223,	
+-0.027174615097759602,	-0.027124633528714442,	-0.027074651891857700,	-0.027024670187314331,	-0.026974688415209284,	-0.026924706575666629,	-0.026874724668813094,	-0.026824742694772748,	
+-0.026774760653670546,	-0.026724778545631440,	-0.026674796370780390,	-0.026624814129242350,	-0.026574831821142272,	-0.026524849446604229,	-0.026474867005754948,	-0.026424884498718500,	
+-0.026374901925619840,	-0.026324919286583929,	-0.026274936581735717,	-0.026224953811200161,	-0.026174970975101339,	-0.026124988073565971,	-0.026075005106718136,	-0.026025022074682790,	
+-0.025975038977584887,	-0.025925055815549384,	-0.025875072588701246,	-0.025825089297165423,	-0.025775105941065992,	-0.025725122520529681,	-0.025675139035680566,	-0.025625155486643601,	
+-0.025575171873543748,	-0.025525188196505968,	-0.025475204455655216,	-0.025425220651116451,	-0.025375236783013750,	-0.025325252851473842,	-0.025275268856620802,	-0.025225284798579592,	
+-0.025175300677475167,	-0.025125316493432494,	-0.025075332246576525,	-0.025025347937031341,	-0.024975363564923674,	-0.024925379130377599,	-0.024875394633518077,	-0.024825410074470068,	
+-0.024775425453358531,	-0.024725440770308433,	-0.024675456025444732,	-0.024625471218891505,	-0.024575486350775486,	-0.024525501421220751,	-0.024475516430352263,	-0.024425531378294982,	
+-0.024375546265173874,	-0.024325561091113904,	-0.024275575856240027,	-0.024225590560676323,	-0.024175605204549529,	-0.024125619787983724,	-0.024075634311103870,	-0.024025648774034930,	
+-0.023975663176901869,	-0.023925677519829647,	-0.023875691802942346,	-0.023825706026366703,	-0.023775720190226796,	-0.023725734294647586,	-0.023675748339754041,	-0.023625762325671127,	
+-0.023575776252523804,	-0.023525790120437044,	-0.023475803929534918,	-0.023425817679944172,	-0.023375831371788881,	-0.023325845005194010,	-0.023275858580284529,	-0.023225872097185400,	
+-0.023175885556021590,	-0.023125898956917180,	-0.023075912299998912,	-0.023025925585390860,	-0.022975938813217994,	-0.022925951983605284,	-0.022875965096677692,	-0.022825978152560187,	
+-0.022775991151377739,	-0.022726004093254423,	-0.022676016978316987,	-0.022626029806689506,	-0.022576042578496949,	-0.022526055293864290,	-0.022476067952916491,	-0.022426080555778521,	
+-0.022376093102575351,	-0.022326105593431057,	-0.022276118028472392,	-0.022226130407823428,	-0.022176142731609141,	-0.022126154999954496,	-0.022076167212984461,	-0.022026179370824010,	
+-0.021976191473597223,	-0.021926203521430845,	-0.021876215514448960,	-0.021826227452776535,	-0.021776239336538539,	-0.021726251165859949,	-0.021676262940865727,	-0.021626274661680850,	
+-0.021576286328429398,	-0.021526297941238118,	-0.021476309500231092,	-0.021426321005533294,	-0.021376332457269692,	-0.021326343855565262,	-0.021276355200544970,	-0.021226366492333788,	
+-0.021176377731055806,	-0.021126388916837765,	-0.021076400049803750,	-0.021026411130078738,	-0.020976422157787698,	-0.020926433133055602,	-0.020876444056007422,	-0.020826454926767247,	
+-0.020776465745461818,	-0.020726476512215229,	-0.020676487227152446,	-0.020626497890398447,	-0.020576508502078202,	-0.020526519062316687,	-0.020476529571238872,	-0.020426540028968848,	
+-0.020376550435633359,	-0.020326560791356498,	-0.020276571096263230,	-0.020226581350478539,	-0.020176591554127390,	-0.020126601707334765,	-0.020076611810224746,	-0.020026621862924088,	
+-0.019976631865556874,	-0.019926641818248082,	-0.019876651721122681,	-0.019826661574305654,	-0.019776671377921974,	-0.019726681132096614,	-0.019676690836953663,	-0.019626700492619872,	
+-0.019576710099219331,	-0.019526719656877016,	-0.019476729165717899,	-0.019426738625866961,	-0.019376748037449178,	-0.019326757400589523,	-0.019276766715412088,	-0.019226775982043622,	
+-0.019176785200608216,	-0.019126794371230847,	-0.019076803494036496,	-0.019026812569150130,	-0.018976821596696739,	-0.018926830576800401,	-0.018876839509587878,	-0.018826848395183254,	
+-0.018776857233711509,	-0.018726866025297623,	-0.018676874770066569,	-0.018626883468143330,	-0.018576892119652882,	-0.018526900724719315,	-0.018476909283469387,	-0.018426917796027183,	
+-0.018376926262517686,	-0.018326934683065871,	-0.018276943057796723,	-0.018226951386835215,	-0.018176959670305439,	-0.018126967908334155,	-0.018076976101045448,	-0.018026984248564304,	
+-0.017976992351015696,	-0.017927000408524612,	-0.017877008421216024,	-0.017827016389214915,	-0.017777024312645377,	-0.017727032191634167,	-0.017677040026305376,	-0.017627047816783984,	
+-0.017577055563194971,	-0.017527063265663324,	-0.017477070924314015,	-0.017427078539272032,	-0.017377086110661463,	-0.017327093638609063,	-0.017277101123238933,	-0.017227108564676050,	
+-0.017177115963045397,	-0.017127123318471951,	-0.017077130631080698,	-0.017027137900995731,	-0.016977145128343803,	-0.016927152313249018,	-0.016877159455836351,	-0.016827166556230785,	
+-0.016777173614557300,	-0.016727180630940884,	-0.016677187605506513,	-0.016627194538378288,	-0.016577201429682966,	-0.016527208279544636,	-0.016477215088088290,	-0.016427221855438903,	
+-0.016377228581721463,	-0.016327235267060949,	-0.016277241911582349,	-0.016227248515409756,	-0.016177255078669930,	-0.016127261601486968,	-0.016077268083985848,	-0.016027274526291560,	
+-0.015977280928529087,	-0.015927287290823409,	-0.015877293613298628,	-0.015827299896081497,	-0.015777306139296118,	-0.015727312343067474,	-0.015677318507520549,	-0.015627324632780330,	
+-0.015577330718971796,	-0.015527336766219937,	-0.015477342774648847,	-0.015427348744385288,	-0.015377354675553359,	-0.015327360568278043,	-0.015277366422684324,	-0.015227372238897190,	
+-0.015177378017041625,	-0.015127383757241725,	-0.015077389459624257,	-0.015027395124313314,	-0.014977400751433882,	-0.014927406341110951,	-0.014877411893469502,	-0.014827417408634523,	
+-0.014777422886731001,	-0.014727428327883034,	-0.014677433732217386,	-0.014627439099858150,	-0.014577444430930319,	-0.014527449725558876,	-0.014477454983868808,	-0.014427460205985104,	
+-0.014377465392032749,	-0.014327470542135842,	-0.014277475656421148,	-0.014227480735012763,	-0.014177485778035678,	-0.014127490785614876,	-0.014077495757875350,	-0.014027500694942083,	
+-0.013977505596939176,	-0.013927510463993393,	-0.013877515296228835,	-0.013827520093770489,	-0.013777524856743341,	-0.013727529585272381,	-0.013677534279482598,	-0.013627538939498980,	
+-0.013577543565445625,	-0.013527548157449300,	-0.013477552715634104,	-0.013427557240125027,	-0.013377561731047058,	-0.013327566188525182,	-0.013277570612684392,	-0.013227575003649676,	
+-0.013177579361545134,	-0.013127583686497531,	-0.013077587978630970,	-0.013027592238070438,	-0.012977596464940925,	-0.012927600659367423,	-0.012877604821474917,	-0.012827608951387511,	
+-0.012777613049231971,	-0.012727617115132400,	-0.012677621149213785,	-0.012627625151601117,	-0.012577629122419387,	-0.012527633061793582,	-0.012477636969848696,	-0.012427640846708830,	
+-0.012377644692500750,	-0.012327648507348557,	-0.012277652291377244,	-0.012227656044711798,	-0.012177659767477214,	-0.012127663459798481,	-0.012077667121799701,	-0.012027670753607641,	
+-0.011977674355346402,	-0.011927677927140980,	-0.011877681469116361,	-0.011827684981397541,	-0.011777688464109506,	-0.011727691917377251,	-0.011677695341324878,	-0.011627698736079155,	
+-0.011577702101764184,	-0.011527705438504959,	-0.011477708746426471,	-0.011427712025653710,	-0.011377715276311668,	-0.011327718498525340,	-0.011277721692418826,	-0.011227724858118897,	
+-0.011177727995749655,	-0.011127731105436094,	-0.011077734187303205,	-0.011027737241475979,	-0.010977740268079411,	-0.010927743267237604,	-0.010877746239077328,	-0.010827749183722686,	
+-0.010777752101298671,	-0.010727754991930275,	-0.010677757855742492,	-0.010627760692860314,	-0.010577763503408734,	-0.010527766287511857,	-0.010477769045296454,	-0.010427771776886627,	
+-0.010377774482407372,	-0.010327777161983680,	-0.010277779815740545,	-0.010227782443802959,	-0.010177785046295918,	-0.010127787623343527,	-0.010077790175072555,	-0.010027792701607108,	
+-0.009977795203072178,	-0.009927797679592761,	-0.009877800131293850,	-0.009827802558300437,	-0.009777804960736630,	-0.009727807338729199,	-0.009677809692402251,	-0.009627812021880778,	
+-0.009577814327289774,	-0.009527816608754234,	-0.009477818866399155,	-0.009427821100349525,	-0.009377823310729457,	-0.009327825497665717,	-0.009277827661282415,	-0.009227829801704543,	
+-0.009177831919057097,	-0.009127834013465071,	-0.009077836085053460,	-0.009027838133946371,	-0.008977840160270574,	-0.008927842164150176,	-0.008877844145710174,	-0.008827846105075561,	
+-0.008777848042371333,	-0.008727849957722486,	-0.008677851851254012,	-0.008627853723090022,	-0.008577855573357284,	-0.008527857402179907,	-0.008477859209682888,	-0.008427860995991221,	
+-0.008377862761229902,	-0.008327864505523924,	-0.008277866228998286,	-0.008227867931777095,	-0.008177869613987121,	-0.008127871275752473,	-0.008077872917198147,	-0.008027874538449140,	
+-0.007977876139630444,	-0.007927877720867060,	-0.007877879282283094,	-0.007827880824005316,	-0.007777882346157837,	-0.007727883848865652,	-0.007677885332253757,	-0.007627886796447149,	
+-0.007577888241570824,	-0.007527889667749779,	-0.007477891075108121,	-0.007427892463772623,	-0.007377893833867394,	-0.007327895185517431,	-0.007277896518847729,	-0.007227897833983287,	
+-0.007177899131049100,	-0.007127900410169277,	-0.007077901671470591,	-0.007027902915077151,	-0.006977904141113954,	-0.006927905349705996,	-0.006877906540978275,	-0.006827907715055787,	
+-0.006777908872063531,	-0.006727910012125614,	-0.006677911135368810,	-0.006627912241917228,	-0.006577913331895865,	-0.006527914405429720,	-0.006477915462643789,	-0.006427916503663068,	
+-0.006377917528612556,	-0.006327918537616363,	-0.006277919530801261,	-0.006227920508291360,	-0.006177921470211658,	-0.006127922416687153,	-0.006077923347842841,	-0.006027924263803722,	
+-0.005977925164693903,	-0.005927926050640159,	-0.005877926921766601,	-0.005827927778198225,	-0.005777928620060029,	-0.005727929447477013,	-0.005677930260574172,	-0.005627931059476505,	
+-0.005577931844308124,	-0.005527932615195800,	-0.005477933372263645,	-0.005427934115636657,	-0.005377934845439833,	-0.005327935561798172,	-0.005277936264836673,	-0.005227936954680332,	
+-0.005177937631453262,	-0.005127938295282235,	-0.005077938946291362,	-0.005027939584605642,	-0.004977940210350073,	-0.004927940823649654,	-0.004877941424629382,	-0.004827942013413369,	
+-0.004777942590128389,	-0.004727943154898552,	-0.004677943707848858,	-0.004627944249104304,	-0.004577944778789890,	-0.004527945297030614,	-0.004477945803951475,	-0.004427946299676583,	
+-0.004377946784332712,	-0.004327947258043976,	-0.004277947720935371,	-0.004227948173131897,	-0.004177948614758552,	-0.004127949045940336,	-0.004077949466801360,	-0.004027949877468397,	
+-0.003977950278065560,	-0.003927950668717847,	-0.003877951049550258,	-0.003827951420687791,	-0.003777951782255445,	-0.003727952134378220,	-0.003677952477180227,	-0.003627952810788240,	
+-0.003577953135326371,	-0.003527953450919620,	-0.003477953757692985,	-0.003427954055771466,	-0.003377954345280061,	-0.003327954626343770,	-0.003277954899086705,	-0.003227955163635641,	
+-0.003177955420114689,	-0.003127955668648848,	-0.003077955909363118,	-0.003027956142382499,	-0.002977956367831988,	-0.002927956585835699,	-0.002877956796520407,	-0.002827957000010223,	
+-0.002777957196430146,	-0.002727957385905176,	-0.002677957568560313,	-0.002627957744520555,	-0.002577957913910904,	-0.002527958076855469,	-0.002477958233481027,	-0.002427958383911690,	
+-0.002377958528272457,	-0.002327958666688328,	-0.002277958799284302,	-0.002227958926185378,	-0.002177959047516558,	-0.002127959163401952,	-0.002077959273968336,	-0.002027959379339822,	
+-0.001977959479641409,	-0.001927959574998098,	-0.001877959665534888,	-0.001827959751376778,	-0.001777959832647881,	-0.001727959909474973,	-0.001677959981982165,	-0.001627960050294457,	
+-0.001577960114536849,	-0.001527960174834340,	-0.001477960231311931,	-0.001427960284094622,	-0.001377960333306523,	-0.001327960379074412,	-0.001277960421522400,	-0.001227960460775487,	
+-0.001177960496958673,	-0.001127960530196958,	-0.001077960560615341,	-0.001027960588337934,	-0.000977960613491515,	-0.000927960636200194,	-0.000877960656588971,	-0.000827960674782847,	
+-0.000777960690906820,	-0.000727960705085893,	-0.000677960717445063,	-0.000627960728108444,	-0.000577960737202810,	-0.000527960744852275,	-0.000477960751181838,	-0.000427960756316500,	
+-0.000377960760381259,	-0.000327960763501117,	-0.000277960765801072,	-0.000227960767405237,	-0.000177960768440389,	-0.000127960769030639,	-0.000077960769300987
+};
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_linear_interp_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,204 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_linear_interp_example_f32.c
+*
+* Description:   Example code demonstrating usage of sin function
+*                and uses linear interpolation to get higher precision
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup LinearInterpExample Linear Interpolate Example
+ *
+ * <b> CMSIS DSP Software Library -- Linear Interpolate Example  </b>
+ *
+ * <b> Description </b>
+ * This example demonstrates usage of linear interpolate modules and fast math modules.
+ * Method 1 uses fast math sine function to calculate sine values using cubic interpolation and method 2 uses
+ * linear interpolation function and results are compared to reference output.
+ * Example shows linear interpolation function can be used to get higher precision compared to fast math sin calculation.
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html linearInterpExampleMethod1.gif "Method 1: Sine caluclation using fast math"
+ * \par
+ * \image html linearInterpExampleMethod2.gif "Method 2: Sine caluclation using interpolation function"
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInputSin_f32         points to the input values for sine calculation
+ * \li \c testRefSinOutput32_f32   points to the reference values caculated from sin() matlab function
+ * \li \c testOutput               points to output buffer calculation from cubic interpolation
+ * \li \c testLinIntOutput         points to output buffer calculation from linear interpolation
+ * \li \c snr1                     Signal to noise ratio for reference and cubic interpolation output
+ * \li \c snr2                     Signal to noise ratio for reference and linear interpolation output
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_sin_f32()
+ * - arm_linear_interp_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_linear_interp_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_linear_interp_example_f32.c
+  */
+
+#include "arm_math.h"
+#include "math_helper.h"
+
+#define SNR_THRESHOLD           90
+#define TEST_LENGTH_SAMPLES     10
+#define XSPACING               (0.00005f)
+
+/* ----------------------------------------------------------------------
+* Test input data for F32 SIN function
+* Generated by the MATLAB rand() function
+* randn('state', 0)
+* xi = (((1/4.18318581819710)* randn(blockSize, 1) * 2* pi));
+* --------------------------------------------------------------------*/
+float32_t testInputSin_f32[TEST_LENGTH_SAMPLES] =
+{
+   -0.649716504673081170, -2.501723745497831200,
+    0.188250329003310100,  0.432092748487532540,
+   -1.722010988459680800,  1.788766476323060600,
+    1.786136060975809500, -0.056525543169408797,
+    0.491596272728153760,  0.262309671126153390
+};
+
+/*------------------------------------------------------------------------------
+*  Reference out of SIN F32 function for Block Size = 10
+*  Calculated from sin(testInputSin_f32)
+*------------------------------------------------------------------------------*/
+float32_t testRefSinOutput32_f32[TEST_LENGTH_SAMPLES] =
+{
+   -0.604960695383043530, -0.597090287967934840,
+    0.187140422442966500,  0.418772124875992690,
+   -0.988588831792106880,  0.976338412038794010,
+    0.976903856413481100, -0.056495446835214236,
+    0.472033731854734240,  0.259311907228582830
+};
+
+/*------------------------------------------------------------------------------
+*  Method 1: Test out Buffer Calculated from Cubic Interpolation
+*------------------------------------------------------------------------------*/
+float32_t testOutput[TEST_LENGTH_SAMPLES];
+
+/*------------------------------------------------------------------------------
+*  Method 2: Test out buffer Calculated from Linear Interpolation
+*------------------------------------------------------------------------------*/
+float32_t testLinIntOutput[TEST_LENGTH_SAMPLES];
+
+/*------------------------------------------------------------------------------
+*  External table used for linear interpolation
+*------------------------------------------------------------------------------*/
+extern float arm_linear_interep_table[188495];
+
+/* ----------------------------------------------------------------------
+* Global Variables for caluclating SNR's for Method1 & Method 2
+* ------------------------------------------------------------------- */
+float32_t snr1;
+float32_t snr2;
+
+/* ----------------------------------------------------------------------------
+* Calculation of Sine values from Cubic Interpolation and Linear interpolation
+* ---------------------------------------------------------------------------- */
+int32_t main(void)
+{
+  uint32_t i;
+  arm_status status;
+
+  arm_linear_interp_instance_f32 S = {188495, -3.141592653589793238, XSPACING, &arm_linear_interep_table[0]};
+
+  /*------------------------------------------------------------------------------
+  *  Method 1: Test out Calculated from Cubic Interpolation
+  *------------------------------------------------------------------------------*/
+  for(i=0; i< TEST_LENGTH_SAMPLES; i++)
+  {
+    testOutput[i] = arm_sin_f32(testInputSin_f32[i]);
+  }
+
+  /*------------------------------------------------------------------------------
+  *  Method 2: Test out Calculated from Cubic Interpolation and Linear interpolation
+  *------------------------------------------------------------------------------*/
+
+  for(i=0; i< TEST_LENGTH_SAMPLES; i++)
+  {
+      testLinIntOutput[i] = arm_linear_interp_f32(&S, testInputSin_f32[i]);
+  }
+
+  /*------------------------------------------------------------------------------
+  *            SNR calculation for method 1
+  *------------------------------------------------------------------------------*/
+  snr1 = arm_snr_f32(testRefSinOutput32_f32, testOutput, 2);
+
+  /*------------------------------------------------------------------------------
+  *            SNR calculation for method 2
+  *------------------------------------------------------------------------------*/
+  snr2 = arm_snr_f32(testRefSinOutput32_f32, testLinIntOutput, 2);
+
+  /*------------------------------------------------------------------------------
+  *            Initialise status depending on SNR calculations
+  *------------------------------------------------------------------------------*/
+  if( snr2 > snr1)
+  {
+    status = ARM_MATH_SUCCESS;
+  }
+  else
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+  /* ----------------------------------------------------------------------
+  ** Loop here if the signals fail the PASS check.
+  ** This denotes a test failure
+  ** ------------------------------------------------------------------- */
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/math_helper.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,458 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0    
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.c
+*
+* Description:	Definition of all helper functions required.  
+*  
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+*		Include standard header files  
+* -------------------------------------------------------------------- */
+#include<math.h>
+
+/* ----------------------------------------------------------------------
+*		Include project header files  
+* -------------------------------------------------------------------- */
+#include "math_helper.h"
+
+/** 
+ * @brief  Caluclation of SNR
+ * @param  float* 	Pointer to the reference buffer
+ * @param  float*	Pointer to the test buffer
+ * @param  uint32_t	total number of samples
+ * @return float	SNR
+ * The function Caluclates signal to noise ratio for the reference output 
+ * and test output 
+ */
+
+float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
+{
+  float EnergySignal = 0.0, EnergyError = 0.0;
+  uint32_t i;
+  float SNR;
+  int temp;
+  int *test;
+
+  for (i = 0; i < buffSize; i++)
+    {
+ 	  /* Checking for a NAN value in pRef array */
+	  test =   (int *)(&pRef[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+
+	  /* Checking for a NAN value in pTest array */
+	  test =   (int *)(&pTest[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+      EnergySignal += pRef[i] * pRef[i];
+      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); 
+    }
+
+	/* Checking for a NAN value in EnergyError */
+	test =   (int *)(&EnergyError);
+    temp =  *test;
+
+    if(temp == 0x7FC00000)
+    {
+  		return(0);
+    }
+	
+
+  SNR = 10 * log10 (EnergySignal / EnergyError);
+
+  return (SNR);
+
+}
+
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q15_t* 	    Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,
+                            uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed in q12.20 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point(q12.20) values 
+ */
+
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1048576.0f corresponds to pow(2, 20) */
+      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 1.0)
+        {
+          pOut[i] = 0x000FFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q15_t* 	Pointer to Ref buffer
+ * @param  q15_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}	
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q31_t* 	Pointer to Ref buffer
+ * @param  q31_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q31 (q31_t * input_buf, 
+								 uint32_t blockSize,
+                                 uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q7 (q7_t * input_buf, 
+								uint32_t blockSize,
+                                uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+
+
+/** 
+ * @brief  Caluclates number of guard bits 
+ * @param  uint32_t 	number of additions
+ * @return none
+ * The function Caluclates the number of guard bits  
+ * depending on the numtaps 
+ */
+
+uint32_t arm_calc_guard_bits (uint32_t num_adds)
+{
+  uint32_t i = 1, j = 0;
+
+  if (num_adds == 1)
+    {
+      return (0);
+    }
+
+  while (i < num_adds)
+    {
+      i = i * 2;
+      j++;
+    }
+
+  return (j);
+}
+
+/** 
+ * @brief  Converts Q15 to floating-point
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ */
+
+void arm_apply_guard_bits (float32_t * pIn, 
+						   uint32_t numSamples, 
+						   uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);
+    }
+}
+
+/** 
+ * @brief  Calculates pow(2, numShifts)
+ * @param  uint32_t 	number of shifts
+ * @return pow(2, numShifts)
+ */
+uint32_t arm_calc_2pow(uint32_t numShifts)
+{
+
+  uint32_t i, val = 1;
+
+  for (i = 0; i < numShifts; i++)
+    {
+      val = val * 2;
+    }	
+
+  return(val);
+}
+
+
+
+/** 
+ * @brief  Converts float to fixed q14 
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q14 (float *pIn, q15_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 16384.0f corresponds to pow(2, 14) */
+      pOut[i] = (q15_t) (pIn[i] * 16384.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFF;
+        }
+
+    }
+
+}
+
+ 
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q30 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q29 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 4.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+
+/** 
+ * @brief  Converts float to fixed q28 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q28 (float *pIn, q31_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	/* 268435456.0f corresponds to pow(2, 28) */
+      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 8.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Clip the float values to +/- 1 
+ * @param  pIn 	input buffer
+ * @param  numSamples 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_clip_f32 (float *pIn, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      if(pIn[i] > 1.0f)
+	  {
+	    pIn[i] = 1.0;
+	  }
+	  else if( pIn[i] < -1.0f)
+	  {
+	    pIn[i] = -1.0;
+	  }
+	       
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/math_helper.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,63 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.h
+* 
+* Description:	Prototypes of all helper functions required.  
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+#ifndef MATH_HELPER_H
+#define MATH_HELPER_H
+
+float arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);
+void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);
+void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_clip_f32(float *pIn, uint32_t numSamples);
+uint32_t arm_calc_guard_bits(uint32_t num_adds);
+void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);
+uint32_t arm_calc_2pow(uint32_t guard_bits);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_matrix_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,233 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_matrix_example_f32.c
+*
+* Description:   Example code demonstrating least square fit to data
+*                using matrix functions
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup MatrixExample Matrix Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the use of Matrix Transpose, Matrix Muliplication, and Matrix Inverse
+ * functions to apply least squares fitting to input data. Least squares fitting is
+ * the procedure for finding the best-fitting curve that minimizes the sum of the
+ * squares of the offsets (least square error) from a given set of data.
+ *
+ * \par Algorithm:
+ * \par
+ * The linear combination of parameters considered is as follows:
+ * \par
+ * <code>A * X = B</code>, where \c X is the unknown value and can be estimated
+ * from \c A & \c B.
+ * \par
+ * The least squares estimate \c X is given by the following equation:
+ * \par
+ * <code>X = Inverse(A<sup>T</sup> * A) *  A<sup>T</sup> * B</code>
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html matrixExample.gif
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c A_f32 input matrix in the linear combination equation
+ * \li \c B_f32 output matrix in the linear combination equation
+ * \li \c X_f32 unknown matrix estimated using \c A_f32 & \c B_f32 matrices
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_mat_init_f32()
+ * - arm_mat_trans_f32()
+ * - arm_mat_mult_f32()
+ * - arm_mat_inverse_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_matrix_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_matrix_example_f32.c
+  */
+
+#include "arm_math.h"
+#include "math_helper.h"
+
+#define SNR_THRESHOLD   90
+
+/* --------------------------------------------------------------------------------
+* Test input data(Cycles) taken from FIR Q15 module for differant cases of blockSize
+* and tapSize
+* --------------------------------------------------------------------------------- */
+
+const float32_t B_f32[4] =
+{
+  782.0, 7577.0, 470.0, 4505.0
+};
+
+/* --------------------------------------------------------------------------------
+* Formula to fit is  C1 + C2 * numTaps + C3 * blockSize + C4 * numTaps * blockSize
+* -------------------------------------------------------------------------------- */
+
+const float32_t A_f32[16] =
+{
+  /* Const,   numTaps,   blockSize,   numTaps*blockSize */
+  1.0,     32.0,      4.0,     128.0,
+  1.0,     32.0,     64.0,    2048.0,
+  1.0,     16.0,      4.0,      64.0,
+  1.0,     16.0,     64.0,    1024.0,
+};
+
+
+/* ----------------------------------------------------------------------
+* Temporary buffers  for storing intermediate values
+* ------------------------------------------------------------------- */
+/* Transpose of A Buffer */
+float32_t AT_f32[16];
+/* (Transpose of A * A) Buffer */
+float32_t ATMA_f32[16];
+/* Inverse(Transpose of A * A)  Buffer */
+float32_t ATMAI_f32[16];
+/* Test Output Buffer */
+float32_t X_f32[4];
+
+/* ----------------------------------------------------------------------
+* Reference ouput buffer C1, C2, C3 and C4 taken from MATLAB
+* ------------------------------------------------------------------- */
+const float32_t xRef_f32[4] = {73.0, 8.0, 21.25, 2.875};
+
+float32_t snr;
+
+
+/* ----------------------------------------------------------------------
+* Max magnitude FFT Bin test
+* ------------------------------------------------------------------- */
+
+int32_t main(void)
+{
+
+  arm_matrix_instance_f32 A;      /* Matrix A Instance */
+  arm_matrix_instance_f32 AT;     /* Matrix AT(A transpose) instance */
+  arm_matrix_instance_f32 ATMA;   /* Matrix ATMA( AT multiply with A) instance */
+  arm_matrix_instance_f32 ATMAI;  /* Matrix ATMAI(Inverse of ATMA) instance */
+  arm_matrix_instance_f32 B;      /* Matrix B instance */
+  arm_matrix_instance_f32 X;      /* Matrix X(Unknown Matrix) instance */
+
+  uint32_t srcRows, srcColumns;  /* Temporary variables */
+  arm_status status;
+
+  /* Initialise A Matrix Instance with numRows, numCols and data array(A_f32) */
+  srcRows = 4;
+  srcColumns = 4;
+  arm_mat_init_f32(&A, srcRows, srcColumns, (float32_t *)A_f32);
+
+  /* Initialise Matrix Instance AT with numRows, numCols and data array(AT_f32) */
+  srcRows = 4;
+  srcColumns = 4;
+  arm_mat_init_f32(&AT, srcRows, srcColumns, AT_f32);
+
+  /* calculation of A transpose */
+  status = arm_mat_trans_f32(&A, &AT);
+
+
+  /* Initialise ATMA Matrix Instance with numRows, numCols and data array(ATMA_f32) */
+  srcRows = 4;
+  srcColumns = 4;
+  arm_mat_init_f32(&ATMA, srcRows, srcColumns, ATMA_f32);
+
+  /* calculation of AT Multiply with A */
+  status = arm_mat_mult_f32(&AT, &A, &ATMA);
+
+  /* Initialise ATMAI Matrix Instance with numRows, numCols and data array(ATMAI_f32) */
+  srcRows = 4;
+  srcColumns = 4;
+  arm_mat_init_f32(&ATMAI, srcRows, srcColumns, ATMAI_f32);
+
+  /* calculation of Inverse((Transpose(A) * A) */
+  status = arm_mat_inverse_f32(&ATMA, &ATMAI);
+
+  /* calculation of (Inverse((Transpose(A) * A)) *  Transpose(A)) */
+  status = arm_mat_mult_f32(&ATMAI, &AT, &ATMA);
+
+  /* Initialise B Matrix Instance with numRows, numCols and data array(B_f32) */
+  srcRows = 4;
+  srcColumns = 1;
+  arm_mat_init_f32(&B, srcRows, srcColumns, (float32_t *)B_f32);
+
+  /* Initialise X Matrix Instance with numRows, numCols and data array(X_f32) */
+  srcRows = 4;
+  srcColumns = 1;
+  arm_mat_init_f32(&X, srcRows, srcColumns, X_f32);
+
+  /* calculation ((Inverse((Transpose(A) * A)) *  Transpose(A)) * B) */
+  status = arm_mat_mult_f32(&ATMA, &B, &X);
+
+  /* Comparison of reference with test output */
+  snr = arm_snr_f32((float32_t *)xRef_f32, X_f32, 4);
+
+  /*------------------------------------------------------------------------------
+  *            Initialise status depending on SNR calculations
+  *------------------------------------------------------------------------------*/
+  if( snr > SNR_THRESHOLD)
+  {
+    status = ARM_MATH_SUCCESS;
+  }
+  else
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+
+  /* ----------------------------------------------------------------------
+  ** Loop here if the signals fail the PASS check.
+  ** This denotes a test failure
+  ** ------------------------------------------------------------------- */
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/math_helper.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,458 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0    
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.c
+*
+* Description:	Definition of all helper functions required.  
+*  
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+*		Include standard header files  
+* -------------------------------------------------------------------- */
+#include<math.h>
+
+/* ----------------------------------------------------------------------
+*		Include project header files  
+* -------------------------------------------------------------------- */
+#include "math_helper.h"
+
+/** 
+ * @brief  Caluclation of SNR
+ * @param  float* 	Pointer to the reference buffer
+ * @param  float*	Pointer to the test buffer
+ * @param  uint32_t	total number of samples
+ * @return float	SNR
+ * The function Caluclates signal to noise ratio for the reference output 
+ * and test output 
+ */
+
+float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
+{
+  float EnergySignal = 0.0, EnergyError = 0.0;
+  uint32_t i;
+  float SNR;
+  int temp;
+  int *test;
+
+  for (i = 0; i < buffSize; i++)
+    {
+ 	  /* Checking for a NAN value in pRef array */
+	  test =   (int *)(&pRef[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+
+	  /* Checking for a NAN value in pTest array */
+	  test =   (int *)(&pTest[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+      EnergySignal += pRef[i] * pRef[i];
+      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); 
+    }
+
+	/* Checking for a NAN value in EnergyError */
+	test =   (int *)(&EnergyError);
+    temp =  *test;
+
+    if(temp == 0x7FC00000)
+    {
+  		return(0);
+    }
+	
+
+  SNR = 10 * log10 (EnergySignal / EnergyError);
+
+  return (SNR);
+
+}
+
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q15_t* 	    Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,
+                            uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed in q12.20 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point(q12.20) values 
+ */
+
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1048576.0f corresponds to pow(2, 20) */
+      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 1.0)
+        {
+          pOut[i] = 0x000FFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q15_t* 	Pointer to Ref buffer
+ * @param  q15_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}	
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q31_t* 	Pointer to Ref buffer
+ * @param  q31_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q31 (q31_t * input_buf, 
+								 uint32_t blockSize,
+                                 uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q7 (q7_t * input_buf, 
+								uint32_t blockSize,
+                                uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+
+
+/** 
+ * @brief  Caluclates number of guard bits 
+ * @param  uint32_t 	number of additions
+ * @return none
+ * The function Caluclates the number of guard bits  
+ * depending on the numtaps 
+ */
+
+uint32_t arm_calc_guard_bits (uint32_t num_adds)
+{
+  uint32_t i = 1, j = 0;
+
+  if (num_adds == 1)
+    {
+      return (0);
+    }
+
+  while (i < num_adds)
+    {
+      i = i * 2;
+      j++;
+    }
+
+  return (j);
+}
+
+/** 
+ * @brief  Converts Q15 to floating-point
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ */
+
+void arm_apply_guard_bits (float32_t * pIn, 
+						   uint32_t numSamples, 
+						   uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);
+    }
+}
+
+/** 
+ * @brief  Calculates pow(2, numShifts)
+ * @param  uint32_t 	number of shifts
+ * @return pow(2, numShifts)
+ */
+uint32_t arm_calc_2pow(uint32_t numShifts)
+{
+
+  uint32_t i, val = 1;
+
+  for (i = 0; i < numShifts; i++)
+    {
+      val = val * 2;
+    }	
+
+  return(val);
+}
+
+
+
+/** 
+ * @brief  Converts float to fixed q14 
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q14 (float *pIn, q15_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 16384.0f corresponds to pow(2, 14) */
+      pOut[i] = (q15_t) (pIn[i] * 16384.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFF;
+        }
+
+    }
+
+}
+
+ 
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q30 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q29 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 4.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+
+/** 
+ * @brief  Converts float to fixed q28 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q28 (float *pIn, q31_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	/* 268435456.0f corresponds to pow(2, 28) */
+      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 8.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Clip the float values to +/- 1 
+ * @param  pIn 	input buffer
+ * @param  numSamples 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_clip_f32 (float *pIn, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      if(pIn[i] > 1.0f)
+	  {
+	    pIn[i] = 1.0;
+	  }
+	  else if( pIn[i] < -1.0f)
+	  {
+	    pIn[i] = -1.0;
+	  }
+	       
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/math_helper.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,63 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.h
+* 
+* Description:	Prototypes of all helper functions required.  
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+#ifndef MATH_HELPER_H
+#define MATH_HELPER_H
+
+float arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);
+void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);
+void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_clip_f32(float *pIn, uint32_t numSamples);
+uint32_t arm_calc_guard_bits(uint32_t num_adds);
+void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);
+uint32_t arm_calc_2pow(uint32_t guard_bits);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_signal_converge_data.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,269 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	     	arm_signal_converge_data.c
+*   
+* Description:	 Test input data for Floating point LMS Norm FIR filter
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+** Test input data for Floating point LMS Norm FIR filter
+** Generated by the MATLAB randn() function
+** ------------------------------------------------------------------- */
+
+float32_t testInput_f32[1536] = 
+{   
+-0.432565,	-1.665584,	0.125332,	0.287676,	-1.146471,	1.190915,	1.189164,	-0.037633,	
+0.327292,	0.174639,	-0.186709,	0.725791,	-0.588317,	2.183186,	-0.136396,	0.113931,	
+1.066768,	0.059281,	-0.095648,	-0.832349,	0.294411,	-1.336182,	0.714325,	1.623562,	
+-0.691776,	0.857997,	1.254001,	-1.593730,	-1.440964,	0.571148,	-0.399886,	0.689997,	
+0.815622,	0.711908,	1.290250,	0.668601,	1.190838,	-1.202457,	-0.019790,	-0.156717,	
+-1.604086,	0.257304,	-1.056473,	1.415141,	-0.805090,	0.528743,	0.219321,	-0.921902,	
+-2.170674,	-0.059188,	-1.010634,	0.614463,	0.507741,	1.692430,	0.591283,	-0.643595,	
+0.380337,	-1.009116,	-0.019511,	-0.048221,	0.000043,	-0.317859,	1.095004,	-1.873990,	
+0.428183,	0.895638,	0.730957,	0.577857,	0.040314,	0.677089,	0.568900,	-0.255645,	
+-0.377469,	-0.295887,	-1.475135,	-0.234004,	0.118445,	0.314809,	1.443508,	-0.350975,	
+0.623234,	0.799049,	0.940890,	-0.992092,	0.212035,	0.237882,	-1.007763,	-0.742045,	
+1.082295,	-0.131500,	0.389880,	0.087987,	-0.635465,	-0.559573,	0.443653,	-0.949904,	
+0.781182,	0.568961,	-0.821714,	-0.265607,	-1.187777,	-2.202321,	0.986337,	-0.518635,	
+0.327368,	0.234057,	0.021466,	-1.003944,	-0.947146,	-0.374429,	-1.185886,	-1.055903,	
+1.472480,	0.055744,	-1.217317,	-0.041227,	-1.128344,	-1.349278,	-0.261102,	0.953465,	
+0.128644,	0.656468,	-1.167819,	-0.460605,	-0.262440,	-1.213152,	-1.319437,	0.931218,	
+0.011245,	-0.645146,	0.805729,	0.231626,	-0.989760,	1.339586,	0.289502,	1.478917,	
+1.138028,	-0.684139,	-1.291936,	-0.072926,	-0.330599,	-0.843628,	0.497770,	1.488490,	
+-0.546476,	-0.846758,	-0.246337,	0.663024,	-0.854197,	-1.201315,	-0.119869,	-0.065294,	
+0.485296,	-0.595491,	-0.149668,	-0.434752,	-0.079330,	1.535152,	-0.606483,	-1.347363,	
+0.469383,	-0.903567,	0.035880,	-0.627531,	0.535398,	0.552884,	-0.203690,	-2.054325,	
+0.132561,	1.592941,	1.018412,	-1.580402,	-0.078662,	-0.681657,	-1.024553,	-1.234353,	
+0.288807,	-0.429303,	0.055801,	-0.367874,	-0.464973,	0.370961,	0.728283,	2.112160,	
+-1.357298,	-1.022610,	1.037834,	-0.389800,	-1.381266,	0.315543,	1.553243,	0.707894,	
+1.957385,	0.504542,	1.864529,	-0.339812,	-1.139779,	-0.211123,	1.190245,	-1.116209,	
+0.635274,	-0.601412,	0.551185,	-1.099840,	0.085991,	-2.004563,	-0.493088,	0.462048,	
+-0.321005,	1.236556,	-0.631280,	-2.325211,	-1.231637,	1.055648,	-0.113224,	0.379224,	
+0.944200,	-2.120427,	-0.644679,	-0.704302,	-1.018137,	-0.182082,	1.521013,	-0.038439,	
+1.227448,	-0.696205,	0.007524,	-0.782893,	0.586939,	-0.251207,	0.480136,	0.668155,	
+-0.078321,	0.889173,	2.309287,	0.524639,	-0.011787,	0.913141,	0.055941,	-1.107070,	
+0.485498,	-0.005005,	-0.276218,	1.276452,	1.863401,	-0.522559,	0.103424,	-0.807649,	
+0.680439,	-2.364590,	0.990115,	0.218899,	0.261662,	1.213444,	-0.274667,	-0.133134,	
+-1.270500,	-1.663606,	-0.703554,	0.280880,	-0.541209,	-1.333531,	1.072686,	-0.712085,	
+-0.011286,	-0.000817,	-0.249436,	0.396575,	-0.264013,	-1.664011,	-1.028975,	0.243095,	
+-1.256590,	-0.347183,	-0.941372,	-1.174560,	-1.021142,	-0.401667,	0.173666,	-0.116118,	
+1.064119,	-0.245386,	-1.517539,	0.009734,	0.071373,	0.316536,	0.499826,	1.278084,	
+-0.547816,	0.260808,	-0.013177,	-0.580264,	2.136308,	-0.257617,	-1.409528,	1.770101,	
+0.325546,	-1.119040,	0.620350,	1.269782,	-0.896043,	0.135175,	-0.139040,	-1.163395,	
+1.183720,	-0.015430,	0.536219,	-0.716429,	-0.655559,	0.314363,	0.106814,	1.848216,	
+-0.275106,	2.212554,	1.508526,	-1.945079,	-1.680543,	-0.573534,	-0.185817,	0.008934,	
+0.836950,	-0.722271,	-0.721490,	-0.201181,	-0.020464,	0.278890,	1.058295,	0.621673,	
+-1.750615,	0.697348,	0.811486,	0.636345,	1.310080,	0.327098,	-0.672993,	-0.149327,	
+-2.449018,	0.473286,	0.116946,	-0.591104,	-0.654708,	-1.080662,	-0.047731,	0.379345,	
+-0.330361,	-0.499898,	-0.035979,	-0.174760,	-0.957265,	1.292548,	0.440910,	1.280941,	
+-0.497730,	-1.118717,	0.807650,	0.041200,	-0.756209,	-0.089129,	-2.008850,	1.083918,	
+-0.981191,	-0.688489,	1.339479,	-0.909243,	-0.412858,	-0.506163,	1.619748,	0.080901,	
+-1.081056,	-1.124518,	1.735676,	1.937459,	1.635068,	-1.255940,	-0.213538,	-0.198932,	
+0.307499,	-0.572325,	-0.977648,	-0.446809,	1.082092,	2.372648,	0.229288,	-0.266623,	
+0.701672,	-0.487590,	1.862480,	1.106851,	-1.227566,	-0.669885,	1.340929,	0.388083,	
+0.393059,	-1.707334,	0.227859,	0.685633,	-0.636790,	-1.002606,	-0.185621,	-1.054033,	
+-0.071539,	0.279198,	1.373275,	0.179841,	-0.542017,	1.634191,	0.825215,	0.230761,	
+0.671634,	-0.508078,	0.856352,	0.268503,	0.624975,	-1.047338,	1.535670,	0.434426,	
+-1.917136,	0.469940,	1.274351,	0.638542,	1.380782,	1.319843,	-0.909429,	-2.305605,	
+1.788730,	0.390798,	0.020324,	-0.405977,	-1.534895,	0.221373,	-1.374479,	-0.839286,	
+-0.208643,	0.755913,	0.375734,	-1.345413,	1.481876,	0.032736,	1.870453,	-1.208991,	
+-0.782632,	-0.767299,	-0.107200,	-0.977057,	-0.963988,	-2.379172,	-0.838188,	0.257346,	
+-0.183834,	-0.167615,	-0.116989,	0.168488,	-0.501206,	-0.705076,	0.508165,	-0.420922,	
+0.229133,	-0.959497,	-0.146043,	0.744538,	-0.890496,	0.139062,	-0.236144,	-0.075459,	
+-0.358572,	-2.077635,	-0.143546,	1.393341,	0.651804,	-0.377134,	-0.661443,	0.248958,	
+-0.383516,	-0.528480,	0.055388,	1.253769,	-2.520004,	0.584856,	-1.008064,	0.944285,	
+-2.423957,	-0.223831,	0.058070,	-0.424614,	-0.202918,	-1.513077,	-1.126352,	-0.815002,	
+0.366614,	-0.586107,	1.537409,	0.140072,	-1.862767,	-0.454193,	-0.652074,	0.103318,	
+-0.220632,	-0.279043,	-0.733662,	-0.064534,	-1.444004,	0.612340,	-1.323503,	-0.661577,	
+-0.146115,	0.248085,	-0.076633,	1.738170,	1.621972,	0.626436,	0.091814,	-0.807607,	
+-0.461337,	-1.405969,	-0.374530,	-0.470911,	1.751296,	0.753225,	0.064989,	-0.292764,	
+0.082823,	0.766191,	2.236850,	0.326887,	0.863304,	0.679387,	0.554758,	1.001630,	
+1.259365,	0.044151,	-0.314138,	0.226708,	0.996692,	1.215912,	-0.542702,	0.912228,	
+-0.172141,	-0.335955,	0.541487,	0.932111,	-0.570253,	-1.498605,	-0.050346,	0.553025,	
+0.083498,	1.577524,	-0.330774,	0.795155,	-0.784800,	-1.263121,	0.666655,	-1.392632,	
+-1.300562,	-0.605022,	-1.488565,	0.558543,	-0.277354,	-1.293685,	-0.888435,	-0.986520,	
+-0.071618,	-2.414591,	-0.694349,	-1.391389,	0.329648,	0.598544,	0.147175,	-0.101439,	
+-2.634981,	0.028053,	-0.876310,	-0.265477,	-0.327578,	-1.158247,	0.580053,	0.239756,	
+-0.350885,	0.892098,	1.578299,	-1.108174,	-0.025931,	-1.110628,	0.750834,	0.500167,	
+-0.517261,	-0.559209,	-0.753371,	0.925813,	-0.248520,	-0.149835,	-1.258415,	0.312620,	
+2.690277,	0.289696,	-1.422803,	0.246786,	-1.435773,	0.148573,	-1.693073,	0.719188,	
+1.141773,	1.551936,	1.383630,	-0.758092,	0.442663,	0.911098,	-1.074086,	0.201762,	
+0.762863,	-1.288187,	-0.952962,	0.778175,	-0.006331,	0.524487,	1.364272,	0.482039,	
+-0.787066,	0.751999,	-0.166888,	-0.816228,	2.094065,	0.080153,	-0.937295,	0.635739,	
+1.682028,	0.593634,	0.790153,	0.105254,	-0.158579,	0.870907,	-0.194759,	0.075474,	
+-0.526635,	-0.685484,	-0.268388,	-1.188346,	0.248579,	0.102452,	-0.041007,	-2.247582,	
+-0.510776,	0.249243,	0.369197,	0.179197,	-0.037283,	-1.603310,	0.339372,	-0.131135,	
+0.485190,	0.598751,	-0.086031,	0.325292,	-0.335143,	-0.322449,	-0.382374,	-0.953371,	
+0.233576,	1.235245,	-0.578532,	-0.501537,	0.722864,	0.039498,	1.541279,	-1.701053,	
+-1.033741,	-0.763708,	2.176426,	0.431612,	-0.443765,	0.029996,	-0.315671,	0.977846,	
+0.018295,	0.817963,	0.702341,	-0.231271,	-0.113690,	0.127941,	-0.799410,	-0.238612,	
+-0.089463,	-1.023264,	0.937538,	-1.131719,	-0.710702,	-1.169501,	1.065437,	-0.680394,	
+-1.725773,	0.813200,	1.441867,	0.672272,	0.138665,	-0.859534,	-0.752251,	1.229615,	
+1.150754,	-0.608025,	0.806158,	0.217133,	-0.373461,	-0.832030,	0.286866,	-1.818892,	
+-1.573051,	2.015666,	-0.071982,	2.628909,	-0.243317,	0.173276,	0.923207,	-0.178553,	
+-0.521705,	1.431962,	-0.870117,	0.807542,	-0.510635,	0.743514,	0.847898,	-0.829901,	
+0.532994,	1.032848,	-1.052024,	0.362114,	-0.036787,	-1.227636,	-0.275099,	-0.160435,	
+-1.083575,	-1.954213,	-0.909487,	-0.005579,	-1.723490,	1.263077,	-0.600433,	-2.063925,	
+0.110911,	1.487614,	0.053002,	0.161981,	-0.026878,	0.173576,	0.882168,	0.182294,	
+0.755295,	0.508035,	0.131880,	0.280104,	-0.982848,	-0.944087,	-0.013058,	0.354345,	
+-0.894709,	0.812111,	0.109537,	2.731644,	0.411079,	-1.306862,	0.383806,	0.499504,	
+-0.510786,	0.234922,	-0.597825,	0.020771,	0.419443,	1.191104,	0.771214,	-2.644222,	
+0.285430,	0.826093,	-0.008122,	0.858438,	0.774788,	1.305945,	1.231503,	0.958564,	
+-1.654548,	-0.990396,	0.685236,	-0.974870,	-0.606726,	0.686794,	0.020049,	1.063801,	
+-1.341050,	0.479510,	-1.633974,	-1.442665,	0.293781,	-0.140364,	-1.130341,	-0.292538,	
+-0.582536,	-0.896348,	0.248601,	-1.489663,	0.313509,	-2.025084,	0.528990,	0.343471,	
+0.758193,	-0.691940,	0.680179,	-1.072541,	0.899772,	-2.123092,	0.284712,	-0.733323,	
+-0.773376,	0.151842,	-0.336843,	0.970761,	-0.107236,	1.013492,	-0.475347,	0.068948,	
+0.398592,	1.116326,	0.620451,	-0.287674,	-1.371773,	-0.685868,	0.331685,	-0.997722,	
+0.291418,	1.107078,	0.244959,	0.164976,	0.406231,	1.215981,	1.448424,	-1.025137,	
+0.205418,	0.588882,	-0.264024,	2.495318,	0.855948,	-0.850954,	0.811879,	0.700242,	
+0.759938,	-1.712909,	1.537021,	-1.609847,	1.109526,	-1.109704,	0.385469,	0.965231,	
+0.818297,	0.037049,	-0.926012,	-0.111919,	-0.803030,	-1.665006,	-0.901401,	0.588350,	
+0.554159,	-0.415173,	0.061795,	0.457432,	0.199014,	0.257558,	2.080730,	-2.277237,	
+0.339022,	0.289894,	0.662261,	-0.580860,	0.887752,	0.171871,	0.848821,	0.963769,	
+1.321918,	-0.064345,	1.317053,	0.228017,	-1.429637,	-0.149701,	-0.504968,	-1.729141,	
+-0.417472,	-0.614969,	0.720777,	0.339364,	0.882845,	0.284245,	-0.145541,	-0.089646,	
+0.289161,	1.164831,	0.805729,	-1.355643,	0.120893,	-0.222178,	0.571732,	-0.300140,	
+1.134277,	-0.179356,	-1.467067,	1.395346,	0.440836,	0.565384,	-0.693623,	0.833869,	
+-2.237378,	1.097644,	-0.001617,	-1.614573,	-1.228727,	0.207405,	0.220942,	-1.006073,	
+-0.453067,	1.399453,	-0.461964,	0.032716,	0.798783,	0.896816,	0.137892,	-1.619146,	
+-1.646606,	0.428707,	-0.737231,	0.564926,	-1.384167,	0.460268,	0.629384,	0.379847,	
+-1.013330,	-0.347243,	0.441912,	-1.590240,	-0.701417,	-1.077601,	1.002220,	1.729481,	
+0.709032,	-0.747897,	0.228862,	-0.223497,	-0.853275,	0.345627,	0.109764,	-1.133039,	
+-0.683124,	-0.277856,	0.654790,	-1.248394,	-0.597539,	-0.481813,	0.983372,	1.762121,	
+1.427402,	0.911763,	0.326823,	0.069619,	-1.499763,	-0.418223,	-0.021037,	0.228425,	
+-1.008196,	-0.664622,	0.558177,	-1.188542,	-0.775481,	0.271042,	1.534976,	-1.052283,	
+0.625559,	-0.797626,	-0.313522,	-0.602210,	1.259060,	0.858484,	-2.105292,	-0.360937,	
+0.553557,	-1.556384,	-0.206666,	-0.425568,	0.493778,	-0.870908,	0.079828,	-0.521619,	
+-1.413861,	-0.384293,	-0.457922,	-0.291471,	-0.301224,	-1.588594,	1.094287,	1.324167,	
+-0.126480,	-0.737164,	0.213719,	-0.400529,	0.064938,	-1.757996,	1.686748,	0.327400,	
+0.715967,	1.598648,	-2.064741,	-0.743632,	0.176185,	0.527839,	-0.553153,	0.298280,	
+-1.226607,	-0.189676,	-0.301713,	0.956956,	-0.533366,	-0.901082,	-0.892552,	0.278717,	
+-0.745807,	1.603464,	0.574270,	0.320655,	-0.151383,	0.315762,	1.343703,	-2.237832,	
+1.292906,	-0.378459,	0.002521,	0.884641,	0.582450,	-1.614244,	-1.503666,	0.573586,	
+-0.910537,	-1.631277,	-0.359138,	-0.397616,	-1.161307,	-1.109838,	0.290672,	-1.910239,	
+1.314768,	0.665319,	-0.275115,	-0.023022,	-0.907976,	-1.043657,	0.373516,	0.901532,	
+1.278539,	-0.128456,	0.612821,	1.956518,	2.266326,	-0.373959,	2.238039,	-0.159580,	
+-0.703281,	0.563477,	-0.050296,	1.163593,	0.658808,	-1.550089,	-3.029118,	0.540578,	
+-1.008998,	0.908047,	1.582303,	-0.979088,	1.007902,	0.158491,	-0.586927,	1.574082,	
+-0.516649,	1.227800,	1.583876,	-2.088950,	2.949545,	1.356125,	1.050068,	-0.767170,	
+-0.257653,	-1.371845,	-1.267656,	-0.894948,	0.589089,	1.842629,	1.347967,	-0.491253,	
+-2.177568,	0.237000,	-0.735411,	-1.779419,	0.448030,	0.581214,	0.856607,	-0.266263,	
+-0.417470,	-0.205806,	-0.174323,	0.217577,	1.684295,	0.119528,	0.650667,	2.080061,	
+-0.339225,	0.730113,	0.293969,	-0.849109,	-2.533858,	-2.378941,	-0.346276,	-0.610937,	
+-0.408192,	-1.415611,	0.227122,	0.207974,	-0.719718,	0.757762,	-1.643135,	-1.056813,	
+-0.251662,	-1.298441,	1.233255,	1.494625,	0.235938,	-1.404359,	0.658791,	-2.556613,	
+-0.534945,	3.202525,	0.439198,	-1.149901,	0.886765,	-0.283386,	1.035336,	-0.364878,	
+1.341987,	1.008872,	0.213874,	-0.299264,	0.255849,	-0.190826,	-0.079060,	0.699851,	
+-0.796540,	-0.801284,	-0.007599,	-0.726810,	-1.490902,	0.870335,	-0.265675,	-1.566695,	
+-0.394636,	-0.143855,	-2.334247,	-1.357539,	-1.815689,	1.108422,	-0.142115,	1.112757,	
+0.559264,	0.478370,	-0.679385,	0.284967,	-1.332935,	-0.723980,	-0.663600,	0.198443,	
+-1.794868,	-1.387673,	0.197768,	1.469328,	0.366493,	-0.442775,	-0.048563,	0.077709,	
+1.957910,	-0.072848,	0.938810,	-0.079608,	-0.800959,	0.309424,	1.051826,	-1.664211,	
+-1.090792,	-0.191731,	0.463401,	-0.924147,	-0.649657,	0.622893,	-1.335107,	1.047689,	
+0.863327,	-0.642411,	0.660010,	1.294116,	0.314579,	0.859573,	0.128670,	0.016568,	
+-0.072801,	-0.994310,	-0.747358,	-0.030814,	0.988355,	-0.599017,	1.476644,	-0.813801,	
+0.645040,	-1.309919,	-0.867425,	-0.474233,	0.222417,	1.871323,	0.110001,	-0.411341,	
+0.511242,	-1.199117,	-0.096361,	0.445817,	-0.295825,	-0.167996,	0.179543,	0.421118,	
+1.677678,	1.996949,	0.696964,	-1.366382,	0.363045,	-0.567044,	-1.044154,	0.697139,	
+0.484026,	-0.193751,	-0.378095,	-0.886374,	-1.840197,	-1.628195,	-1.173789,	-0.415411,	
+0.175088,	0.229433,	-1.240889,	0.700004,	0.426877,	1.454803,	-0.510186,	-0.006657,	
+-0.525496,	0.717698,	1.088374,	0.500552,	2.771790,	-0.160309,	0.429489,	-1.966817,	
+-0.546019,	-1.888395,	-0.107952,	-1.316144,	-0.672632,	-0.902365,	-0.154798,	0.947242,	
+1.550375,	0.429040,	-0.560795,	0.179304,	-0.771509,	-0.943390,	-1.407569,	-1.906131,	
+-0.065293,	0.672149,	0.206147,	-0.008124,	0.020042,	-0.558447,	1.886079,	-0.219975,	
+-1.414395,	-0.302811,	-0.569574,	-0.121495,	-0.390171,	-0.844287,	-1.737757,	-0.449520,	
+-1.547933,	-0.095776,	0.907714,	2.369602,	0.519768,	0.410525,	1.052585,	0.428784,	
+1.295088,	-0.186053,	0.130733,	-0.657627,	-0.759267,	-0.595170,	0.812400,	0.069541,	
+-1.833687,	1.827363,	0.654075,	-1.544769,	-0.375109,	0.207688,	-0.765615,	-0.106355,	
+0.338769,	1.033461,	-1.404822,	-1.030570,	-0.643372,	0.170787,	1.344839,	1.936273,	
+0.741336,	0.811980,	-0.142808,	-0.099858,	-0.800131,	0.493249,	1.237574,	1.295951,	
+-0.278196,	0.217127,	0.630728,	-0.548549,	0.229632,	0.355311,	0.521284,	-0.615971,	
+1.345803,	0.974922,	-2.377934,	-1.092319,	-0.325710,	-2.012228,	1.567660,	0.233337,	
+0.646420,	-1.129412,	0.197038,	1.696870,	0.726034,	0.792526,	0.603357,	-0.058405,	
+-1.108666,	2.144229,	-1.352821,	0.457021,	0.391175,	2.073013,	-0.323318,	1.468132,	
+-0.502399,	0.209593,	0.754800,	-0.948189,	0.613157,	1.760503,	0.088762,	2.595570,	
+-0.675470,	2.786804,	-0.016827,	0.271651,	-0.914102,	-1.951371,	-0.317418,	0.588333,	
+0.828996,	-1.674851,	-1.922293,	-0.436662,	0.044974,	2.416609,	-0.309892,	0.187583,	
+0.947699,	-0.525703,	-1.115605,	-1.592320,	1.174844,	0.485144,	1.645480,	-0.454233,	
+1.008768,	2.049403,	0.602020,	0.017860,	-1.610426,	1.238752,	0.683587,	-0.780716,	
+0.530979,	2.134498,	0.354361,	0.231700,	1.287980,	-0.013488,	-1.333345,	-0.556343,	
+0.755597,	-0.911854,	1.371684,	0.245580,	0.118845,	0.384690,	-0.070152,	-0.578309,	
+0.469308,	1.299687,	1.634798,	-0.702809,	0.807253,	-1.027451,	1.294496,	0.014930,	
+0.218705,	1.713188,	-2.078805,	0.112917,	-1.086491,	-1.558311,	0.637406,	-0.404576,	
+-0.403325,	0.084076,	-0.435349,	-0.562623,	0.878062,	-0.814650,	-0.258363,	0.493299,	
+-0.802694,	-0.008329,	0.627571,	0.154382,	2.580735,	-1.306246,	1.023526,	0.777795,	
+-0.833884,	-0.586663,	0.065664,	-0.012342,	-0.076987,	-1.558587,	1.702607,	-0.468984,	
+0.094619,	0.287071,	0.919354,	0.510136,	0.245440,	-1.400519,	0.969571,	1.593698,	
+-1.437917,	-1.534230,	-0.074710,	0.081459,	-0.843240,	-0.564640,	-0.028207,	-1.243702,	
+0.733039,	0.059580,	0.149144,	1.595857,	-0.777250,	1.550277,	1.055002,	-0.166654,	
+0.314484,	1.419571,	0.327348,	0.475653,	0.398754,	-0.072770,	1.314784,	0.978279,	
+1.722114,	-0.412302,	0.565133,	0.739851,	0.220138,	1.312807,	0.629152,	-1.107987,	
+-0.447001,	-0.725993,	0.354045,	-0.506772,	-2.103747,	-0.664684,	1.450110,	-0.329805,	
+2.701872,	-1.634939,	-0.536325,	0.547223,	1.492603,	-0.455243,	-0.496416,	1.235260,	
+0.040926,	0.748467,	1.230764,	0.304903,	1.077771,	0.765151,	-1.319580,	-0.509191,	
+0.555116,	-1.957625,	-0.760453,	-2.443886,	-0.659366,	-0.114779,	0.300079,	-0.583996,	
+-3.073745,	1.551042,	-0.407369,	1.428095,	-1.353242,	0.903970,	0.541671,	-0.465020
+};
+
+
+
+/* ----------------------------------------------------------------------
+** Coefficients for 32-tap filter for Floating point LMS FIR filter
+*  FIR high pass filter with cutoff freq 9.6kHz (transition 9.6KHz to 11.52KHz) 
+** ------------------------------------------------------------------- */  
+float32_t lmsNormCoeff_f32[32] = {
+-0.004240,	0.002301,	0.008860,	-0.000000,	-0.019782,	-0.010543,	0.032881,	0.034736,	
+-0.037374,	-0.069586,	0.022397,	0.102169,	0.014185,	-0.115908,	-0.061648,	0.101018,	
+0.101018,	-0.061648,	-0.115908,	0.014185,	0.102169,	0.022397,	-0.069586,	-0.037374,	
+0.034736,	0.032881,	-0.010543,	-0.019782,	-0.000000,	0.008860,	0.002301,	-0.004240	
+
+};
+
+/* ----------------------------------------------------------------------
+** Coefficients for 32-tap filter for Floating point FIR filter
+*  FIR low pass filter with cutoff freq 24Hz (transition 24Hz to 240Hz) 
+** ------------------------------------------------------------------- */  
+const float32_t FIRCoeff_f32[32] = {
+0.004502,	0.005074,	0.006707,	0.009356,	0.012933,	0.017303,	0.022298,	0.027717,	
+0.033338,	0.038930,	0.044258,	0.049098,	0.053243,	0.056519,	0.058784,	0.059941,	
+0.059941,	0.058784,	0.056519,	0.053243,	0.049098,	0.044258,	0.038930,	0.033338,	
+0.027717,	0.022298,	0.017303,	0.012933,	0.009356,	0.006707,	0.005074,	0.004502
+
+};
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_signal_converge_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,259 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_signal_converge_example_f32.c
+*
+* Description:   Example code demonstrating convergence of an adaptive
+*                filter.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup SignalConvergence Signal Convergence Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the ability of an adaptive filter to "learn" the transfer function of
+ * a FIR lowpass filter using the Normalized LMS Filter, Finite Impulse
+ * Response (FIR) Filter, and Basic Math Functions.
+ *
+ * \par Algorithm:
+ * \par
+ * The figure below illustrates the signal flow in this example. Uniformly distributed white
+ * noise is passed through an FIR lowpass filter. The output of the FIR filter serves as the
+ * reference input of the adaptive filter (normalized LMS filter). The white noise is input
+ * to the adaptive filter. The adaptive filter learns the transfer function of the FIR filter.
+ * The filter outputs two signals: (1) the output of the internal adaptive FIR filter, and
+ * (2) the error signal which is the difference between the adaptive filter and the reference
+ * output of the FIR filter. Over time as the adaptive filter learns the transfer function
+ * of the FIR filter, the first output approaches the reference output of the FIR filter,
+ * and the error signal approaches zero.
+ * \par
+ * The adaptive filter converges properly even if the input signal has a large dynamic
+ * range (i.e., varies from small to large values). The coefficients of the adaptive filter
+ * are initially zero, and then converge over 1536 samples. The internal function test_signal_converge()
+ * implements the stopping condition. The function checks if all of the values of the error signal have a
+ * magnitude below a threshold DELTA.
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html SignalFlow.gif
+ *
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInput_f32 points to the input data
+ * \li \c firStateF32 points to FIR state buffer
+ * \li \c lmsStateF32 points to Normalised Least mean square FIR filter state buffer
+ * \li \c FIRCoeff_f32 points to coefficient buffer
+ * \li \c lmsNormCoeff_f32 points to Normalised Least mean square FIR filter coefficient buffer
+ * \li \c wire1, wir2, wire3 temporary buffers
+ * \li \c errOutput, err_signal temporary error buffers
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_lms_norm_init_f32()
+ * - arm_fir_init_f32()
+ * - arm_fir_f32()
+ * - arm_lms_norm_f32()
+ * - arm_scale_f32()
+ * - arm_abs_f32()
+ * - arm_sub_f32()
+ * - arm_min_f32()
+ * - arm_copy_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_signal_converge_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_signal_converge_example_f32.c
+  */
+
+#include "arm_math.h"
+#include "math_helper.h"
+
+/* ----------------------------------------------------------------------
+** Global defines for the simulation
+* ------------------------------------------------------------------- */
+
+#define TEST_LENGTH_SAMPLES 1536
+#define NUMTAPS               32
+#define BLOCKSIZE             32
+#define DELTA_ERROR         0.000001f
+#define DELTA_COEFF         0.0001f
+#define MU                  0.5f
+
+#define NUMFRAMES (TEST_LENGTH_SAMPLES / BLOCKSIZE)
+
+/* ----------------------------------------------------------------------
+* Declare FIR state buffers and structure
+* ------------------------------------------------------------------- */
+
+float32_t firStateF32[NUMTAPS + BLOCKSIZE];
+arm_fir_instance_f32 LPF_instance;
+
+/* ----------------------------------------------------------------------
+* Declare LMSNorm state buffers and structure
+* ------------------------------------------------------------------- */
+
+float32_t lmsStateF32[NUMTAPS + BLOCKSIZE];
+float32_t errOutput[TEST_LENGTH_SAMPLES];
+arm_lms_norm_instance_f32 lmsNorm_instance;
+
+
+/* ----------------------------------------------------------------------
+* Function Declarations for Signal Convergence Example
+* ------------------------------------------------------------------- */
+
+arm_status test_signal_converge_example( void );
+
+
+/* ----------------------------------------------------------------------
+* Internal functions
+* ------------------------------------------------------------------- */
+arm_status test_signal_converge(float32_t* err_signal,
+                        uint32_t blockSize);
+
+void getinput(float32_t* input,
+     uint32_t fr_cnt,
+          uint32_t blockSize);
+
+/* ----------------------------------------------------------------------
+* External Declarations for FIR F32 module Test
+* ------------------------------------------------------------------- */
+extern float32_t testInput_f32[TEST_LENGTH_SAMPLES];
+extern float32_t lmsNormCoeff_f32[32];
+extern const float32_t FIRCoeff_f32[32];
+extern arm_lms_norm_instance_f32 lmsNorm_instance;
+
+/* ----------------------------------------------------------------------
+* Declare I/O buffers
+* ------------------------------------------------------------------- */
+
+float32_t wire1[BLOCKSIZE];
+float32_t wire2[BLOCKSIZE];
+float32_t wire3[BLOCKSIZE];
+float32_t err_signal[BLOCKSIZE];
+
+/* ----------------------------------------------------------------------
+* Signal converge test
+* ------------------------------------------------------------------- */
+
+int32_t main(void)
+{
+  uint32_t i;
+  arm_status status;
+  uint32_t index;
+  float32_t minValue;
+
+  /* Initialize the LMSNorm data structure */
+  arm_lms_norm_init_f32(&lmsNorm_instance, NUMTAPS, lmsNormCoeff_f32, lmsStateF32, MU, BLOCKSIZE);
+
+  /* Initialize the FIR data structure */
+  arm_fir_init_f32(&LPF_instance, NUMTAPS, (float32_t *)FIRCoeff_f32, firStateF32, BLOCKSIZE);
+
+  /* ----------------------------------------------------------------------
+  * Loop over the frames of data and execute each of the processing
+  * functions in the system.
+  * ------------------------------------------------------------------- */
+
+  for(i=0; i < NUMFRAMES; i++)
+  {
+    /* Read the input data - uniformly distributed random noise - into wire1 */
+    arm_copy_f32(testInput_f32 + (i * BLOCKSIZE), wire1, BLOCKSIZE);
+
+    /* Execute the FIR processing function.  Input wire1 and output wire2 */
+    arm_fir_f32(&LPF_instance, wire1, wire2, BLOCKSIZE);
+
+    /* Execute the LMS Norm processing function*/
+
+    arm_lms_norm_f32(&lmsNorm_instance, /* LMSNorm instance */
+         wire1,                         /* Input signal */
+         wire2,                         /* Reference Signal */
+         wire3,                         /* Converged Signal */
+         err_signal,                    /* Error Signal, this will become small as the signal converges */
+         BLOCKSIZE);                    /* BlockSize */
+
+    /* apply overall gain */
+    arm_scale_f32(wire3, 5, wire3, BLOCKSIZE);   /* in-place buffer */
+  }
+
+  status = ARM_MATH_SUCCESS;
+
+  /* -------------------------------------------------------------------------------
+  * Test whether the error signal has reached towards 0.
+  * ----------------------------------------------------------------------------- */
+
+  arm_abs_f32(err_signal, err_signal, BLOCKSIZE);
+  arm_min_f32(err_signal, BLOCKSIZE, &minValue, &index);
+
+  if (minValue > DELTA_ERROR)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+  /* ----------------------------------------------------------------------
+  * Test whether the filter coefficients have converged.
+  * ------------------------------------------------------------------- */
+
+  arm_sub_f32((float32_t *)FIRCoeff_f32, lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS);
+
+  arm_abs_f32(lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS);
+  arm_min_f32(lmsNormCoeff_f32, NUMTAPS, &minValue, &index);
+
+  if (minValue > DELTA_COEFF)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+  /* ----------------------------------------------------------------------
+  * Loop here if the signals did not pass the convergence check.
+  * This denotes a test failure
+  * ------------------------------------------------------------------- */
+
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/math_helper.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,458 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0    
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.c
+*
+* Description:	Definition of all helper functions required.  
+*  
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+*		Include standard header files  
+* -------------------------------------------------------------------- */
+#include<math.h>
+
+/* ----------------------------------------------------------------------
+*		Include project header files  
+* -------------------------------------------------------------------- */
+#include "math_helper.h"
+
+/** 
+ * @brief  Caluclation of SNR
+ * @param  float* 	Pointer to the reference buffer
+ * @param  float*	Pointer to the test buffer
+ * @param  uint32_t	total number of samples
+ * @return float	SNR
+ * The function Caluclates signal to noise ratio for the reference output 
+ * and test output 
+ */
+
+float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
+{
+  float EnergySignal = 0.0, EnergyError = 0.0;
+  uint32_t i;
+  float SNR;
+  int temp;
+  int *test;
+
+  for (i = 0; i < buffSize; i++)
+    {
+ 	  /* Checking for a NAN value in pRef array */
+	  test =   (int *)(&pRef[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+
+	  /* Checking for a NAN value in pTest array */
+	  test =   (int *)(&pTest[i]);
+      temp =  *test;
+
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
+      EnergySignal += pRef[i] * pRef[i];
+      EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); 
+    }
+
+	/* Checking for a NAN value in EnergyError */
+	test =   (int *)(&EnergyError);
+    temp =  *test;
+
+    if(temp == 0x7FC00000)
+    {
+  		return(0);
+    }
+	
+
+  SNR = 10 * log10 (EnergySignal / EnergyError);
+
+  return (SNR);
+
+}
+
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q15_t* 	    Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,
+                            uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed in q12.20 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point(q12.20) values 
+ */
+
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1048576.0f corresponds to pow(2, 20) */
+      pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 1.0)
+        {
+          pOut[i] = 0x000FFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q15_t* 	Pointer to Ref buffer
+ * @param  q15_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}	
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Compare MATLAB Reference Output and ARM Test output
+ * @param  q31_t* 	Pointer to Ref buffer
+ * @param  q31_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none 
+ */
+
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
+{
+  uint32_t i; 
+  int32_t diff, diffCrnt = 0;
+  uint32_t maxDiff = 0;
+
+  for (i = 0; i < numSamples; i++)
+  {
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
+
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}
+  }
+
+  return(maxDiff);
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q31 (q31_t * input_buf, 
+								 uint32_t blockSize,
+                                 uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+/** 
+ * @brief  Provide guard bits for Input buffer
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
+ * @return none
+ * The function Provides the guard bits for the buffer 
+ * to avoid overflow 
+ */
+
+void arm_provide_guard_bits_q7 (q7_t * input_buf, 
+								uint32_t blockSize,
+                                uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < blockSize; i++)
+    {
+      input_buf[i] = input_buf[i] >> guard_bits;
+    }
+}
+
+
+
+/** 
+ * @brief  Caluclates number of guard bits 
+ * @param  uint32_t 	number of additions
+ * @return none
+ * The function Caluclates the number of guard bits  
+ * depending on the numtaps 
+ */
+
+uint32_t arm_calc_guard_bits (uint32_t num_adds)
+{
+  uint32_t i = 1, j = 0;
+
+  if (num_adds == 1)
+    {
+      return (0);
+    }
+
+  while (i < num_adds)
+    {
+      i = i * 2;
+      j++;
+    }
+
+  return (j);
+}
+
+/** 
+ * @brief  Converts Q15 to floating-point
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ */
+
+void arm_apply_guard_bits (float32_t * pIn, 
+						   uint32_t numSamples, 
+						   uint32_t guard_bits)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);
+    }
+}
+
+/** 
+ * @brief  Calculates pow(2, numShifts)
+ * @param  uint32_t 	number of shifts
+ * @return pow(2, numShifts)
+ */
+uint32_t arm_calc_2pow(uint32_t numShifts)
+{
+
+  uint32_t i, val = 1;
+
+  for (i = 0; i < numShifts; i++)
+    {
+      val = val * 2;
+    }	
+
+  return(val);
+}
+
+
+
+/** 
+ * @brief  Converts float to fixed q14 
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q14 (float *pIn, q15_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 16384.0f corresponds to pow(2, 14) */
+      pOut[i] = (q15_t) (pIn[i] * 16384.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFF;
+        }
+
+    }
+
+}
+
+ 
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q30 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 2.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Converts float to fixed q30 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q29 (float *pIn, q31_t * pOut, 
+					   uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	  /* 1073741824.0f corresponds to pow(2, 30) */
+      pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 4.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+
+/** 
+ * @brief  Converts float to fixed q28 format
+ * @param  uint32_t 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_float_to_q28 (float *pIn, q31_t * pOut, 
+                       uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+	/* 268435456.0f corresponds to pow(2, 28) */
+      pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
+
+      pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
+
+      if (pIn[i] == (float) 8.0)
+        {
+          pOut[i] = 0x7FFFFFFF;
+        }
+    }
+}
+
+/** 
+ * @brief  Clip the float values to +/- 1 
+ * @param  pIn 	input buffer
+ * @param  numSamples 	number of samples in the buffer
+ * @return none
+ * The function converts floating point values to fixed point values 
+ */
+
+void arm_clip_f32 (float *pIn, uint32_t numSamples)
+{
+  uint32_t i;
+
+  for (i = 0; i < numSamples; i++)
+    {
+      if(pIn[i] > 1.0f)
+	  {
+	    pIn[i] = 1.0;
+	  }
+	  else if( pIn[i] < -1.0f)
+	  {
+	    pIn[i] = -1.0;
+	  }
+	       
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/math_helper.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,63 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2013 ARM Limited. All rights reserved.   
+*   
+* $Date:        17. January 2013  
+* $Revision: 	V1.4.0   
+*  
+* Project: 	    CMSIS DSP Library 
+*
+* Title:	    math_helper.h
+* 
+* Description:	Prototypes of all helper functions required.  
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+#ifndef MATH_HELPER_H
+#define MATH_HELPER_H
+
+float arm_snr_f32(float *pRef, float *pTest,  uint32_t buffSize);  
+void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples);
+void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits);
+void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples);
+void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples);
+void arm_clip_f32(float *pIn, uint32_t numSamples);
+uint32_t arm_calc_guard_bits(uint32_t num_adds);
+void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits);
+uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples);
+uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples);
+uint32_t arm_calc_2pow(uint32_t guard_bits);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_sin_cos_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,161 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         12. March 2014
+* $Revision:     V1.4.3
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_sin_cos_example_f32.c
+*
+* Description:   Example code demonstrating sin and cos calculation of input signal.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup SinCosExample SineCosine Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the Pythagorean trignometric identity with the use of Cosine, Sine, Vector
+ * Multiplication, and Vector Addition functions.
+ *
+ * \par Algorithm:
+ * \par
+ * Mathematically, the Pythagorean trignometric identity is defined by the following equation:
+ *  <pre>sin(x) * sin(x) + cos(x) * cos(x) = 1</pre>
+ * where \c x is the angle in radians.
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html sinCos.gif
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInput_f32 array of input angle in radians
+ * \li \c testOutput stores sum of the squares of sine and cosine values of input angle
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_cos_f32()
+ * - arm_sin_f32()
+ * - arm_mult_f32()
+ * - arm_add_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_sin_cos_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_sin_cos_example_f32.c
+  */
+
+#include <math.h>
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+* Defines each of the tests performed
+* ------------------------------------------------------------------- */
+#define MAX_BLOCKSIZE   32
+#define DELTA           (0.0001f)
+
+
+/* ----------------------------------------------------------------------
+* Test input data for Floating point sin_cos example for 32-blockSize
+* Generated by the MATLAB randn() function
+* ------------------------------------------------------------------- */
+
+const float32_t testInput_f32[MAX_BLOCKSIZE] =
+{
+  -1.244916875853235400,  -4.793533929171324800,   0.360705030233248850,   0.827929644170887320,  -3.299532218312426900,   3.427441903227623800,   3.422401784294607700,  -0.108308165334010680,
+   0.941943896490312180,   0.502609575000365850,  -0.537345278736373500,   2.088817392965764500,  -1.693168684143455700,   6.283185307179590700,  -0.392545884746175080,   0.327893095115825040,
+   3.070147440456292300,   0.170611405884662230,  -0.275275082396073010,  -2.395492805446796300,   0.847311163536506600,  -3.845517018083148800,   2.055818378415868300,   4.672594161978930800,
+  -1.990923030266425800,   2.469305197656249500,   3.609002606064021000,  -4.586736582331667500,  -4.147080139136136300,   1.643756718868359500,  -1.150866392366494800,   1.985805026477433800
+
+
+};
+
+const float32_t testRefOutput_f32 = 1.000000000;
+
+/* ----------------------------------------------------------------------
+* Declare Global variables
+* ------------------------------------------------------------------- */
+uint32_t blockSize = 32;
+float32_t  testOutput;
+float32_t  cosOutput;
+float32_t  sinOutput;
+float32_t  cosSquareOutput;
+float32_t  sinSquareOutput;
+
+/* ----------------------------------------------------------------------
+* Max magnitude FFT Bin test
+* ------------------------------------------------------------------- */
+
+arm_status status;
+
+int32_t main(void)
+{
+  float32_t diff;
+  uint32_t i;
+
+  for(i=0; i< blockSize; i++)
+  {
+    cosOutput = arm_cos_f32(testInput_f32[i]);
+    sinOutput = arm_sin_f32(testInput_f32[i]);
+
+    arm_mult_f32(&cosOutput, &cosOutput, &cosSquareOutput, 1);
+    arm_mult_f32(&sinOutput, &sinOutput, &sinSquareOutput, 1);
+
+    arm_add_f32(&cosSquareOutput, &sinSquareOutput, &testOutput, 1);
+
+    /* absolute value of difference between ref and test */
+    diff = fabsf(testRefOutput_f32 - testOutput);
+
+    /* Comparison of sin_cos value with reference */
+    if(diff > DELTA)
+    {
+       status = ARM_MATH_TEST_FAILURE;
+    }
+
+    if( status == ARM_MATH_TEST_FAILURE)
+    {
+       while(1);
+    }
+
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_variance_example_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,204 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+*
+* $Date:         17. January 2013
+* $Revision:     V1.4.0
+*
+* Project:       CMSIS DSP Library
+* Title:         arm_variance_example_f32.c
+*
+* Description:   Example code demonstrating variance calculation of input sequence.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+/**
+ * @ingroup groupExamples
+ */
+
+/**
+ * @defgroup VarianceExample Variance Example
+ *
+ * \par Description:
+ * \par
+ * Demonstrates the use of Basic Math and Support Functions to calculate the variance of an
+ * input sequence with N samples. Uniformly distributed white noise is taken as input.
+ *
+ * \par Algorithm:
+ * \par
+ * The variance of a sequence is the mean of the squared deviation of the sequence from its mean.
+ * \par
+ * This is denoted by the following equation:
+ * <pre> variance = ((x[0] - x') * (x[0] - x') + (x[1] - x') * (x[1] - x') + ... + * (x[n-1] - x') * (x[n-1] - x')) / (N-1)</pre>
+ * where, <code>x[n]</code> is the input sequence, <code>N</code> is the number of input samples, and
+ * <code>x'</code> is the mean value of the input sequence, <code>x[n]</code>.
+ * \par
+ * The mean value <code>x'</code> is defined as:
+ * <pre> x' = (x[0] + x[1] + ... + x[n-1]) / N</pre>
+ *
+ * \par Block Diagram:
+ * \par
+ * \image html Variance.gif
+ *
+ *
+ * \par Variables Description:
+ * \par
+ * \li \c testInput_f32 points to the input data
+ * \li \c wire1, \c wir2, \c wire3 temporary buffers
+ * \li \c blockSize number of samples processed at a time
+ * \li \c refVarianceOut reference variance value
+ *
+ * \par CMSIS DSP Software Library Functions Used:
+ * \par
+ * - arm_dot_prod_f32()
+ * - arm_mult_f32()
+ * - arm_sub_f32()
+ * - arm_fill_f32()
+ * - arm_copy_f32()
+ *
+ * <b> Refer  </b>
+ * \link arm_variance_example_f32.c \endlink
+ *
+ */
+
+
+/** \example arm_variance_example_f32.c
+  */
+#include <math.h>
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+* Defines each of the tests performed
+* ------------------------------------------------------------------- */
+#define MAX_BLOCKSIZE   32
+#define DELTA           (0.000001f)
+
+
+/* ----------------------------------------------------------------------
+* Declare I/O buffers
+* ------------------------------------------------------------------- */
+float32_t wire1[MAX_BLOCKSIZE];
+float32_t wire2[MAX_BLOCKSIZE];
+float32_t wire3[MAX_BLOCKSIZE];
+
+/* ----------------------------------------------------------------------
+* Test input data for Floating point Variance example for 32-blockSize
+* Generated by the MATLAB randn() function
+* ------------------------------------------------------------------- */
+
+float32_t testInput_f32[32] =
+{
+  -0.432564811528221,  -1.665584378238097,   0.125332306474831,   0.287676420358549,
+  -1.146471350681464,   1.190915465642999,   1.189164201652103,  -0.037633276593318,
+   0.327292361408654,   0.174639142820925,  -0.186708577681439,   0.725790548293303,
+  -0.588316543014189,   2.183185818197101,  -0.136395883086596,   0.113931313520810,
+   1.066768211359189,   0.059281460523605,  -0.095648405483669,  -0.832349463650022,
+   0.294410816392640,  -1.336181857937804,   0.714324551818952,   1.623562064446271,
+  -0.691775701702287,   0.857996672828263,   1.254001421602532,  -1.593729576447477,
+  -1.440964431901020,   0.571147623658178,  -0.399885577715363,   0.689997375464345
+
+};
+
+/* ----------------------------------------------------------------------
+* Declare Global variables
+* ------------------------------------------------------------------- */
+uint32_t blockSize = 32;
+float32_t  refVarianceOut = 0.903941793931839;
+
+/* ----------------------------------------------------------------------
+* Variance calculation test
+* ------------------------------------------------------------------- */
+
+int32_t main(void)
+{
+  arm_status status;
+  float32_t mean, oneByBlockSize;
+  float32_t variance;
+  float32_t diff;
+
+  status = ARM_MATH_SUCCESS;
+
+  /* Calculation of mean value of input */
+
+  /* x' = 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1) */
+
+  /* Fill wire1 buffer with 1.0 value */
+  arm_fill_f32(1.0,  wire1, blockSize);
+
+  /* Calculate the dot product of wire1 and wire2 */
+  /* (x(0)* 1 + x(1) * 1 + ...+ x(n-1) * 1) */
+  arm_dot_prod_f32(testInput_f32, wire1, blockSize, &mean);
+
+  /* Calculation of 1/blockSize */
+  oneByBlockSize = 1.0 / (blockSize);
+
+  /* 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1)  */
+  arm_mult_f32(&mean, &oneByBlockSize, &mean, 1);
+
+
+  /* Calculation of variance value of input */
+
+  /* (1/blockSize) * (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */
+
+  /* Fill wire2 with mean value x' */
+  arm_fill_f32(mean,  wire2, blockSize);
+
+  /* wire3 contains (x-x') */
+  arm_sub_f32(testInput_f32, wire2, wire3, blockSize);
+
+  /* wire2 contains (x-x') */
+  arm_copy_f32(wire3, wire2, blockSize);
+
+  /* (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */
+  arm_dot_prod_f32(wire2, wire3, blockSize, &variance);
+
+    /* Calculation of 1/blockSize */
+  oneByBlockSize = 1.0 / (blockSize - 1);
+
+  /* Calculation of variance */
+  arm_mult_f32(&variance, &oneByBlockSize, &variance, 1);
+
+  /* absolute value of difference between ref and test */
+  diff = fabsf(refVarianceOut - variance);
+
+  /* Comparison of variance value with reference */
+  if(diff > DELTA)
+  {
+    status = ARM_MATH_TEST_FAILURE;
+  }
+
+  if( status != ARM_MATH_SUCCESS)
+  {
+    while(1);
+  }
+
+  while(1);                             /* main function does not return */
+}
+
+ /** \endlink */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,165 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_abs_f32.c    
+*    
+* Description:	Vector absolute value.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include <math.h>
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @defgroup BasicAbs Vector Absolute Value        
+ *        
+ * Computes the absolute value of a vector on an element-by-element basis.        
+ *        
+ * <pre>        
+ *     pDst[n] = abs(pSrc[n]),   0 <= n < blockSize.        
+ * </pre>        
+ *        
+ * The functions support in-place computation allowing the source and
+ * destination pointers to reference the same memory buffer.
+ * There are separate functions for floating-point, Q7, Q15, and Q31 data types.
+ */
+
+/**        
+ * @addtogroup BasicAbs        
+ * @{        
+ */
+
+/**        
+ * @brief Floating-point vector absolute value.        
+ * @param[in]       *pSrc points to the input buffer        
+ * @param[out]      *pDst points to the output buffer        
+ * @param[in]       blockSize number of samples in each vector        
+ * @return none.        
+ */
+
+void arm_abs_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t in1, in2, in3, in4;                  /* temporary variables */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Calculate absolute and then store the results in the destination buffer. */
+    /* read sample from source */
+    in1 = *pSrc;
+    in2 = *(pSrc + 1);
+    in3 = *(pSrc + 2);
+
+    /* find absolute value */
+    in1 = fabsf(in1);
+
+    /* read sample from source */
+    in4 = *(pSrc + 3);
+
+    /* find absolute value */
+    in2 = fabsf(in2);
+
+    /* read sample from source */
+    *pDst = in1;
+
+    /* find absolute value */
+    in3 = fabsf(in3);
+
+    /* find absolute value */
+    in4 = fabsf(in4);
+
+    /* store result to destination */
+    *(pDst + 1) = in2;
+
+    /* store result to destination */
+    *(pDst + 2) = in3;
+
+    /* store result to destination */
+    *(pDst + 3) = in4;
+
+
+    /* Update source pointer to process next sampels */
+    pSrc += 4u;
+
+    /* Update destination pointer to process next sampels */
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY   */
+
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Calculate absolute and then store the results in the destination buffer. */
+    *pDst++ = fabsf(*pSrc++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of BasicAbs group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,179 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_abs_q15.c    
+*    
+* Description:	Q15 vector absolute value.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicAbs    
+ * @{    
+ */
+
+/**    
+ * @brief Q15 vector absolute value.    
+ * @param[in]       *pSrc points to the input buffer    
+ * @param[out]      *pDst points to the output buffer    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.    
+ */
+
+void arm_abs_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+  __SIMD32_TYPE *simd;
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q15_t in1;                                     /* Input value1 */
+  q15_t in2;                                     /* Input value2 */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  simd = __SIMD32_CONST(pDst);
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Read two inputs */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+
+
+    /* Store the Absolute result in the destination buffer by packing the two values, in a single cycle */
+#ifndef  ARM_MATH_BIG_ENDIAN
+    *simd++ =
+      __PKHBT(((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)),
+              ((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), 16);
+
+#else
+
+
+    *simd++ =
+      __PKHBT(((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)),
+              ((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), 16);
+
+#endif /* #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+    *simd++ =
+      __PKHBT(((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)),
+              ((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), 16);
+
+#else
+
+
+    *simd++ =
+      __PKHBT(((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)),
+              ((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), 16);
+
+#endif /* #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+  pDst = (q15_t *)simd;
+	
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Read the input */
+    in1 = *pSrc++;
+
+    /* Calculate absolute value of input and then store the result in the destination buffer. */
+    *pDst++ = (in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q15_t in;                                      /* Temporary input variable */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Read the input */
+    in = *pSrc++;
+
+    /* Calculate absolute value of input and then store the result in the destination buffer. */
+    *pDst++ = (in > 0) ? in : ((in == (q15_t) 0x8000) ? 0x7fff : -in);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of BasicAbs group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,130 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_abs_q31.c    
+*    
+* Description:	Q31 vector absolute value.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicAbs    
+ * @{    
+ */
+
+
+/**    
+ * @brief Q31 vector absolute value.    
+ * @param[in]       *pSrc points to the input buffer    
+ * @param[out]      *pDst points to the output buffer    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.    
+ */
+
+void arm_abs_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in;                                      /* Input value */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2, in3, in4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Calculate absolute of input (if -1 then saturated to 0x7fffffff) and then store the results in the destination buffer. */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+    in3 = *pSrc++;
+    in4 = *pSrc++;
+
+    *pDst++ = (in1 > 0) ? in1 : (q31_t)__QSUB(0, in1);
+    *pDst++ = (in2 > 0) ? in2 : (q31_t)__QSUB(0, in2);
+    *pDst++ = (in3 > 0) ? in3 : (q31_t)__QSUB(0, in3);
+    *pDst++ = (in4 > 0) ? in4 : (q31_t)__QSUB(0, in4);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY   */
+
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Calculate absolute value of the input (if -1 then saturated to 0x7fffffff) and then store the results in the destination buffer. */
+    in = *pSrc++;
+    *pDst++ = (in > 0) ? in : ((in == INT32_MIN) ? INT32_MAX : -in);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+}
+
+/**    
+ * @} end of BasicAbs group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,157 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_abs_q7.c    
+*    
+* Description:	Q7 vector absolute value.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @addtogroup BasicAbs        
+ * @{        
+ */
+
+/**        
+ * @brief Q7 vector absolute value.        
+ * @param[in]       *pSrc points to the input buffer        
+ * @param[out]      *pDst points to the output buffer        
+ * @param[in]       blockSize number of samples in each vector        
+ * @return none.        
+ *    
+ * \par Conditions for optimum performance    
+ *  Input and output buffers should be aligned by 32-bit    
+ *    
+ *        
+ * <b>Scaling and Overflow Behavior:</b>        
+ * \par        
+ * The function uses saturating arithmetic.        
+ * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F.        
+ */
+
+void arm_abs_q7(
+  q7_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  q7_t in;                                       /* Input value1 */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2, in3, in4;                      /* temporary input variables */
+  q31_t out1, out2, out3, out4;                  /* temporary output variables */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Read inputs */
+    in1 = (q31_t) * pSrc;
+    in2 = (q31_t) * (pSrc + 1);
+    in3 = (q31_t) * (pSrc + 2);
+
+    /* find absolute value */
+    out1 = (in1 > 0) ? in1 : (q31_t)__QSUB8(0, in1);
+
+    /* read input */
+    in4 = (q31_t) * (pSrc + 3);
+
+    /* find absolute value */
+    out2 = (in2 > 0) ? in2 : (q31_t)__QSUB8(0, in2);
+
+    /* store result to destination */
+    *pDst = (q7_t) out1;
+
+    /* find absolute value */
+    out3 = (in3 > 0) ? in3 : (q31_t)__QSUB8(0, in3);
+
+    /* find absolute value */
+    out4 = (in4 > 0) ? in4 : (q31_t)__QSUB8(0, in4);
+
+    /* store result to destination */
+    *(pDst + 1) = (q7_t) out2;
+
+    /* store result to destination */
+    *(pDst + 2) = (q7_t) out3;
+
+    /* store result to destination */
+    *(pDst + 3) = (q7_t) out4;
+
+    /* update pointers to process next samples */
+    pSrc += 4u;
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = blockSize;
+
+#endif /* #define ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = |A| */
+    /* Read the input */
+    in = *pSrc++;
+
+    /* Store the Absolute result in the destination buffer */
+    *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? 0x7f : -in);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of BasicAbs group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,150 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_add_f32.c    
+*    
+* Description:	Floating-point vector addition.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @defgroup BasicAdd Vector Addition        
+ *        
+ * Element-by-element addition of two vectors.        
+ *        
+ * <pre>        
+ *     pDst[n] = pSrcA[n] + pSrcB[n],   0 <= n < blockSize.        
+ * </pre>        
+ *        
+ * There are separate functions for floating-point, Q7, Q15, and Q31 data types.        
+ */
+
+/**        
+ * @addtogroup BasicAdd        
+ * @{        
+ */
+
+/**        
+ * @brief Floating-point vector addition.        
+ * @param[in]       *pSrcA points to the first input vector        
+ * @param[in]       *pSrcB points to the second input vector        
+ * @param[out]      *pDst points to the output vector        
+ * @param[in]       blockSize number of samples in each vector        
+ * @return none.        
+ */
+
+void arm_add_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t inA1, inA2, inA3, inA4;              /* temporary input variabels */
+  float32_t inB1, inB2, inB3, inB4;              /* temporary input variables */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+
+    /* read four inputs from sourceA and four inputs from sourceB */
+    inA1 = *pSrcA;
+    inB1 = *pSrcB;
+    inA2 = *(pSrcA + 1);
+    inB2 = *(pSrcB + 1);
+    inA3 = *(pSrcA + 2);
+    inB3 = *(pSrcB + 2);
+    inA4 = *(pSrcA + 3);
+    inB4 = *(pSrcB + 3);
+
+    /* C = A + B */
+    /* add and store result to destination */
+    *pDst = inA1 + inB1;
+    *(pDst + 1) = inA2 + inB2;
+    *(pDst + 2) = inA3 + inB3;
+    *(pDst + 3) = inA4 + inB4;
+
+    /* update pointers to process next samples */
+    pSrcA += 4u;
+    pSrcB += 4u;
+    pDst += 4u;
+
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    *pDst++ = (*pSrcA++) + (*pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of BasicAdd group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_add_q15.c    
+*    
+* Description:	Q15 vector addition    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicAdd    
+ * @{    
+ */
+
+/**    
+ * @brief Q15 vector addition.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.    
+ */
+
+void arm_add_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inA1, inA2, inB1, inB2;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    inA1 = *__SIMD32(pSrcA)++;
+    inA2 = *__SIMD32(pSrcA)++;
+    inB1 = *__SIMD32(pSrcB)++;
+    inB2 = *__SIMD32(pSrcB)++;
+
+    *__SIMD32(pDst)++ = __QADD16(inA1, inB1);
+    *__SIMD32(pDst)++ = __QADD16(inA2, inB2);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    *pDst++ = (q15_t) __QADD16(*pSrcA++, *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    *pDst++ = (q15_t) __SSAT(((q31_t) * pSrcA++ + *pSrcB++), 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+}
+
+/**    
+ * @} end of BasicAdd group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,148 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_add_q31.c    
+*    
+* Description:	Q31 vector addition.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicAdd    
+ * @{    
+ */
+
+
+/**    
+ * @brief Q31 vector addition.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.    
+ */
+
+void arm_add_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inA1, inA2, inA3, inA4;
+  q31_t inB1, inB2, inB3, inB4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    inA1 = *pSrcA++;
+    inA2 = *pSrcA++;
+    inB1 = *pSrcB++;
+    inB2 = *pSrcB++;
+
+    inA3 = *pSrcA++;
+    inA4 = *pSrcA++;
+    inB3 = *pSrcB++;
+    inB4 = *pSrcB++;
+
+    *pDst++ = __QADD(inA1, inB1);
+    *pDst++ = __QADD(inA2, inB2);
+    *pDst++ = __QADD(inA3, inB3);
+    *pDst++ = __QADD(inA4, inB4);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    *pDst++ = __QADD(*pSrcA++, *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrcA++ + *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of BasicAdd group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,134 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_add_q7.c    
+*    
+* Description:	Q7 vector addition.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicAdd    
+ * @{    
+ */
+
+/**    
+ * @brief Q7 vector addition.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.    
+ */
+
+void arm_add_q7(
+  q7_t * pSrcA,
+  q7_t * pSrcB,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    *__SIMD32(pDst)++ = __QADD8(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    *pDst++ = (q7_t) __SSAT(*pSrcA++ + *pSrcB++, 8);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + B */
+    /* Add and then store the results in the destination buffer. */
+    *pDst++ = (q7_t) __SSAT((q15_t) * pSrcA++ + *pSrcB++, 8);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+}
+
+/**    
+ * @} end of BasicAdd group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,135 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_dot_prod_f32.c    
+*    
+* Description:	Floating-point dot product.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath
+ */
+
+/**
+ * @defgroup dot_prod Vector Dot Product
+ *
+ * Computes the dot product of two vectors.
+ * The vectors are multiplied element-by-element and then summed.
+ *
+ * <pre>
+ *     sum = pSrcA[0]*pSrcB[0] + pSrcA[1]*pSrcB[1] + ... + pSrcA[blockSize-1]*pSrcB[blockSize-1]
+ * </pre>     
+ *
+ * There are separate functions for floating-point, Q7, Q15, and Q31 data types.    
+ */
+
+/**    
+ * @addtogroup dot_prod    
+ * @{    
+ */
+
+/**    
+ * @brief Dot product of floating-point vectors.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @param[out]      *result output result returned here    
+ * @return none.    
+ */
+
+
+void arm_dot_prod_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  uint32_t blockSize,
+  float32_t * result)
+{
+  float32_t sum = 0.0f;                          /* Temporary result storage */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Calculate dot product and then store the result in a temporary buffer */
+    sum += (*pSrcA++) * (*pSrcB++);
+    sum += (*pSrcA++) * (*pSrcB++);
+    sum += (*pSrcA++) * (*pSrcB++);
+    sum += (*pSrcA++) * (*pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Calculate dot product and then store the result in a temporary buffer. */
+    sum += (*pSrcA++) * (*pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+  /* Store the result back in the destination buffer */
+  *result = sum;
+}
+
+/**    
+ * @} end of dot_prod group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_dot_prod_q15.c    
+*    
+* Description:	Q15 dot product.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup dot_prod    
+ * @{    
+ */
+
+/**    
+ * @brief Dot product of Q15 vectors.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @param[out]      *result output result returned here    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The intermediate multiplications are in 1.15 x 1.15 = 2.30 format and these    
+ * results are added to a 64-bit accumulator in 34.30 format.    
+ * Nonsaturating additions are used and given that there are 33 guard bits in the accumulator    
+ * there is no risk of overflow.    
+ * The return result is in 34.30 format.    
+ */
+
+void arm_dot_prod_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  uint32_t blockSize,
+  q63_t * result)
+{
+  q63_t sum = 0;                                 /* Temporary result storage */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Calculate dot product and then store the result in a temporary buffer. */
+    sum = __SMLALD(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++, sum);
+    sum = __SMLALD(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Calculate dot product and then store the results in a temporary buffer. */
+    sum = __SMLALD(*pSrcA++, *pSrcB++, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Calculate dot product and then store the results in a temporary buffer. */
+    sum += (q63_t) ((q31_t) * pSrcA++ * *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  /* Store the result in the destination buffer in 34.30 format */
+  *result = sum;
+
+}
+
+/**    
+ * @} end of dot_prod group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,143 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_dot_prod_q31.c    
+*    
+* Description:	Q31 dot product.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup dot_prod    
+ * @{    
+ */
+
+/**    
+ * @brief Dot product of Q31 vectors.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @param[out]      *result output result returned here    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The intermediate multiplications are in 1.31 x 1.31 = 2.62 format and these    
+ * are truncated to 2.48 format by discarding the lower 14 bits.    
+ * The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format.    
+ * There are 15 guard bits in the accumulator and there is no risk of overflow as long as    
+ * the length of the vectors is less than 2^16 elements.    
+ * The return result is in 16.48 format.    
+ */
+
+void arm_dot_prod_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  uint32_t blockSize,
+  q63_t * result)
+{
+  q63_t sum = 0;                                 /* Temporary result storage */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inA1, inA2, inA3, inA4;
+  q31_t inB1, inB2, inB3, inB4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Calculate dot product and then store the result in a temporary buffer. */
+    inA1 = *pSrcA++;
+    inA2 = *pSrcA++;
+    inA3 = *pSrcA++;
+    inA4 = *pSrcA++;
+    inB1 = *pSrcB++;
+    inB2 = *pSrcB++;
+    inB3 = *pSrcB++;
+    inB4 = *pSrcB++;
+
+    sum += ((q63_t) inA1 * inB1) >> 14u;
+    sum += ((q63_t) inA2 * inB2) >> 14u;
+    sum += ((q63_t) inA3 * inB3) >> 14u;
+    sum += ((q63_t) inA4 * inB4) >> 14u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Calculate dot product and then store the result in a temporary buffer. */
+    sum += ((q63_t) * pSrcA++ * *pSrcB++) >> 14u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Store the result in the destination buffer in 16.48 format */
+  *result = sum;
+}
+
+/**    
+ * @} end of dot_prod group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,159 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_dot_prod_q7.c    
+*    
+* Description:	Q7 dot product.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup dot_prod    
+ * @{    
+ */
+
+/**    
+ * @brief Dot product of Q7 vectors.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @param[out]      *result output result returned here    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The intermediate multiplications are in 1.7 x 1.7 = 2.14 format and these    
+ * results are added to an accumulator in 18.14 format.    
+ * Nonsaturating additions are used and there is no danger of wrap around as long as    
+ * the vectors are less than 2^18 elements long.    
+ * The return result is in 18.14 format.    
+ */
+
+void arm_dot_prod_q7(
+  q7_t * pSrcA,
+  q7_t * pSrcB,
+  uint32_t blockSize,
+  q31_t * result)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+  q31_t sum = 0;                                 /* Temporary variables to store output */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t input1, input2;                          /* Temporary variables to store input */
+  q31_t inA1, inA2, inB1, inB2;                  /* Temporary variables to store input */
+
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* read 4 samples at a time from sourceA */
+    input1 = *__SIMD32(pSrcA)++;
+    /* read 4 samples at a time from sourceB */
+    input2 = *__SIMD32(pSrcB)++;
+
+    /* extract two q7_t samples to q15_t samples */
+    inA1 = __SXTB16(__ROR(input1, 8));
+    /* extract reminaing two samples */
+    inA2 = __SXTB16(input1);
+    /* extract two q7_t samples to q15_t samples */
+    inB1 = __SXTB16(__ROR(input2, 8));
+    /* extract reminaing two samples */
+    inB2 = __SXTB16(input2);
+
+    /* multiply and accumulate two samples at a time */
+    sum = __SMLAD(inA1, inB1, sum);
+    sum = __SMLAD(inA2, inB2, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Dot product and then store the results in a temporary buffer. */
+    sum = __SMLAD(*pSrcA++, *pSrcB++, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
+    /* Dot product and then store the results in a temporary buffer. */
+    sum += (q31_t) ((q15_t) * pSrcA++ * *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  /* Store the result in the destination buffer in 18.14 format */
+  *result = sum;
+}
+
+/**    
+ * @} end of dot_prod group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,174 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mult_f32.c    
+*    
+* Description:	Floating-point vector multiplication.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @defgroup BasicMult Vector Multiplication        
+ *        
+ * Element-by-element multiplication of two vectors.        
+ *        
+ * <pre>        
+ *     pDst[n] = pSrcA[n] * pSrcB[n],   0 <= n < blockSize.        
+ * </pre>        
+ *        
+ * There are separate functions for floating-point, Q7, Q15, and Q31 data types.        
+ */
+
+/**        
+ * @addtogroup BasicMult        
+ * @{        
+ */
+
+/**        
+ * @brief Floating-point vector multiplication.        
+ * @param[in]       *pSrcA points to the first input vector        
+ * @param[in]       *pSrcB points to the second input vector        
+ * @param[out]      *pDst points to the output vector        
+ * @param[in]       blockSize number of samples in each vector        
+ * @return none.        
+ */
+
+void arm_mult_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counters */
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t inA1, inA2, inA3, inA4;              /* temporary input variables */
+  float32_t inB1, inB2, inB3, inB4;              /* temporary input variables */
+  float32_t out1, out2, out3, out4;              /* temporary output variables */
+
+  /* loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A * B */
+    /* Multiply the inputs and store the results in output buffer */
+    /* read sample from sourceA */
+    inA1 = *pSrcA;
+    /* read sample from sourceB */
+    inB1 = *pSrcB;
+    /* read sample from sourceA */
+    inA2 = *(pSrcA + 1);
+    /* read sample from sourceB */
+    inB2 = *(pSrcB + 1);
+
+    /* out = sourceA * sourceB */
+    out1 = inA1 * inB1;
+
+    /* read sample from sourceA */
+    inA3 = *(pSrcA + 2);
+    /* read sample from sourceB */
+    inB3 = *(pSrcB + 2);
+
+    /* out = sourceA * sourceB */
+    out2 = inA2 * inB2;
+
+    /* read sample from sourceA */
+    inA4 = *(pSrcA + 3);
+
+    /* store result to destination buffer */
+    *pDst = out1;
+
+    /* read sample from sourceB */
+    inB4 = *(pSrcB + 3);
+
+    /* out = sourceA * sourceB */
+    out3 = inA3 * inB3;
+
+    /* store result to destination buffer */
+    *(pDst + 1) = out2;
+
+    /* out = sourceA * sourceB */
+    out4 = inA4 * inB4;
+    /* store result to destination buffer */
+    *(pDst + 2) = out3;
+    /* store result to destination buffer */
+    *(pDst + 3) = out4;
+
+
+    /* update pointers to process next samples */
+    pSrcA += 4u;
+    pSrcB += 4u;
+    pDst += 4u;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * B */
+    /* Multiply the inputs and store the results in output buffer */
+    *pDst++ = (*pSrcA++) * (*pSrcB++);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of BasicMult group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,154 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. October 2015
+* $Revision: 	V.1.4.5 a
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mult_q15.c    
+*    
+* Description:	Q15 vector multiplication.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicMult    
+ * @{    
+ */
+
+
+/**    
+ * @brief           Q15 vector multiplication    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.    
+ */
+
+void arm_mult_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counters */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inA1, inA2, inB1, inB2;                  /* temporary input variables */
+  q15_t out1, out2, out3, out4;                  /* temporary output variables */
+  q31_t mul1, mul2, mul3, mul4;                  /* temporary variables */
+
+  /* loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* read two samples at a time from sourceA */
+    inA1 = *__SIMD32(pSrcA)++;
+    /* read two samples at a time from sourceB */
+    inB1 = *__SIMD32(pSrcB)++;
+    /* read two samples at a time from sourceA */
+    inA2 = *__SIMD32(pSrcA)++;
+    /* read two samples at a time from sourceB */
+    inB2 = *__SIMD32(pSrcB)++;
+
+    /* multiply mul = sourceA * sourceB */
+    mul1 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));
+    mul2 = (q31_t) ((q15_t) inA1 * (q15_t) inB1);
+    mul3 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB2 >> 16));
+    mul4 = (q31_t) ((q15_t) inA2 * (q15_t) inB2);
+
+    /* saturate result to 16 bit */
+    out1 = (q15_t) __SSAT(mul1 >> 15, 16);
+    out2 = (q15_t) __SSAT(mul2 >> 15, 16);
+    out3 = (q15_t) __SSAT(mul3 >> 15, 16);
+    out4 = (q15_t) __SSAT(mul4 >> 15, 16);
+
+    /* store the result */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16);
+    *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16);
+
+#else
+
+    *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16);
+    *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16);
+
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * B */
+    /* Multiply the inputs and store the result in the destination buffer */
+    *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of BasicMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,160 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mult_q31.c    
+*    
+* Description:	Q31 vector multiplication.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicMult    
+ * @{    
+ */
+
+/**    
+ * @brief Q31 vector multiplication.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.    
+ */
+
+void arm_mult_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counters */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inA1, inA2, inA3, inA4;                  /* temporary input variables */
+  q31_t inB1, inB2, inB3, inB4;                  /* temporary input variables */
+  q31_t out1, out2, out3, out4;                  /* temporary output variables */
+
+  /* loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A * B */
+    /* Multiply the inputs and then store the results in the destination buffer. */
+    inA1 = *pSrcA++;
+    inA2 = *pSrcA++;
+    inA3 = *pSrcA++;
+    inA4 = *pSrcA++;
+    inB1 = *pSrcB++;
+    inB2 = *pSrcB++;
+    inB3 = *pSrcB++;
+    inB4 = *pSrcB++;
+
+    out1 = ((q63_t) inA1 * inB1) >> 32;
+    out2 = ((q63_t) inA2 * inB2) >> 32;
+    out3 = ((q63_t) inA3 * inB3) >> 32;
+    out4 = ((q63_t) inA4 * inB4) >> 32;
+
+    out1 = __SSAT(out1, 31);
+    out2 = __SSAT(out2, 31);
+    out3 = __SSAT(out3, 31);
+    out4 = __SSAT(out4, 31);
+
+    *pDst++ = out1 << 1u;
+    *pDst++ = out2 << 1u;
+    *pDst++ = out3 << 1u;
+    *pDst++ = out4 << 1u;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+  
+  while(blkCnt > 0u)
+  {
+    /* C = A * B */
+    /* Multiply the inputs and then store the results in the destination buffer. */
+    inA1 = *pSrcA++;
+    inB1 = *pSrcB++;
+    out1 = ((q63_t) inA1 * inB1) >> 32;
+    out1 = __SSAT(out1, 31);
+    *pDst++ = out1 << 1u;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * B */
+    /* Multiply the inputs and then store the results in the destination buffer. */
+    *pDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) (*pSrcA++) * (*pSrcB++)) >> 31);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+  
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+}
+
+/**    
+ * @} end of BasicMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,127 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mult_q7.c    
+*    
+* Description:	Q7 vector multiplication.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicMult    
+ * @{    
+ */
+
+/**    
+ * @brief           Q7 vector multiplication    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.    
+ */
+
+void arm_mult_q7(
+  q7_t * pSrcA,
+  q7_t * pSrcB,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counters */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q7_t out1, out2, out3, out4;                   /* Temporary variables to store the product */
+
+  /* loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A * B */
+    /* Multiply the inputs and store the results in temporary variables */
+    out1 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);
+    out2 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);
+    out3 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);
+    out4 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);
+
+    /* Store the results of 4 inputs in the destination buffer in single cycle by packing */
+    *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * B */
+    /* Multiply the inputs and store the result in the destination buffer */
+    *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of BasicMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,146 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_negate_f32.c    
+*    
+* Description:	Negates floating-point vectors.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @defgroup negate Vector Negate        
+ *        
+ * Negates the elements of a vector.        
+ *        
+ * <pre>        
+ *     pDst[n] = -pSrc[n],   0 <= n < blockSize.        
+ * </pre>        
+ *
+ * The functions support in-place computation allowing the source and
+ * destination pointers to reference the same memory buffer.
+ * There are separate functions for floating-point, Q7, Q15, and Q31 data types.
+ */
+
+/**        
+ * @addtogroup negate        
+ * @{        
+ */
+
+/**        
+ * @brief  Negates the elements of a floating-point vector.        
+ * @param[in]  *pSrc points to the input vector        
+ * @param[out]  *pDst points to the output vector        
+ * @param[in]  blockSize number of samples in the vector        
+ * @return none.        
+ */
+
+void arm_negate_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t in1, in2, in3, in4;                  /* temporary variables */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* read inputs from source */
+    in1 = *pSrc;
+    in2 = *(pSrc + 1);
+    in3 = *(pSrc + 2);
+    in4 = *(pSrc + 3);
+
+    /* negate the input */
+    in1 = -in1;
+    in2 = -in2;
+    in3 = -in3;
+    in4 = -in4;
+
+    /* store the result to destination */
+    *pDst = in1;
+    *(pDst + 1) = in2;
+    *(pDst + 2) = in3;
+    *(pDst + 3) = in4;
+
+    /* update pointers to process next samples */
+    pSrc += 4u;
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = -A */
+    /* Negate and then store the results in the destination buffer. */
+    *pDst++ = -*pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of negate group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,142 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_negate_q15.c    
+*    
+* Description:	Negates Q15 vectors.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @addtogroup negate        
+ * @{        
+ */
+
+/**        
+ * @brief  Negates the elements of a Q15 vector.        
+ * @param[in]  *pSrc points to the input vector        
+ * @param[out]  *pDst points to the output vector        
+ * @param[in]  blockSize number of samples in the vector        
+ * @return none.        
+ *    
+ * \par Conditions for optimum performance    
+ *  Input and output buffers should be aligned by 32-bit    
+ *    
+ *        
+ * <b>Scaling and Overflow Behavior:</b>        
+ * \par        
+ * The function uses saturating arithmetic.        
+ * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.        
+ */
+
+void arm_negate_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  q15_t in;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t in1, in2;                                /* Temporary variables */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = -A */
+    /* Read two inputs at a time */
+    in1 = _SIMD32_OFFSET(pSrc);
+    in2 = _SIMD32_OFFSET(pSrc + 2);
+
+    /* negate two samples at a time */
+    in1 = __QSUB16(0, in1);
+
+    /* negate two samples at a time */
+    in2 = __QSUB16(0, in2);
+
+    /* store the result to destination 2 samples at a time */
+    _SIMD32_OFFSET(pDst) = in1;
+    /* store the result to destination 2 samples at a time */
+    _SIMD32_OFFSET(pDst + 2) = in2;
+
+
+    /* update pointers to process next samples */
+    pSrc += 4u;
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = -A */
+    /* Negate and then store the result in the destination buffer. */
+    in = *pSrc++;
+    *pDst++ = (in == (q15_t) 0x8000) ? 0x7fff : -in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of negate group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,129 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_negate_q31.c    
+*    
+* Description:	Negates Q31 vectors.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup negate    
+ * @{    
+ */
+
+/**    
+ * @brief  Negates the elements of a Q31 vector.    
+ * @param[in]  *pSrc points to the input vector    
+ * @param[out]  *pDst points to the output vector    
+ * @param[in]  blockSize number of samples in the vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.    
+ */
+
+void arm_negate_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t in;                                      /* Temporary variable */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2, in3, in4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = -A */
+    /* Negate and then store the results in the destination buffer. */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+    in3 = *pSrc++;
+    in4 = *pSrc++;
+
+    *pDst++ = __QSUB(0, in1);
+    *pDst++ = __QSUB(0, in2);
+    *pDst++ = __QSUB(0, in3);
+    *pDst++ = __QSUB(0, in4);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = -A */
+    /* Negate and then store the result in the destination buffer. */
+    in = *pSrc++;
+    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of negate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,125 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_negate_q7.c    
+*    
+* Description:	Negates Q7 vectors.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup negate    
+ * @{    
+ */
+
+/**    
+ * @brief  Negates the elements of a Q7 vector.    
+ * @param[in]  *pSrc points to the input vector    
+ * @param[out]  *pDst points to the output vector    
+ * @param[in]  blockSize number of samples in the vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F.    
+ */
+
+void arm_negate_q7(
+  q7_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  q7_t in;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t input;                                   /* Input values1-4 */
+  q31_t zero = 0x00000000;
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = -A */
+    /* Read four inputs */
+    input = *__SIMD32(pSrc)++;
+
+    /* Store the Negated results in the destination buffer in a single cycle by packing the results */
+    *__SIMD32(pDst)++ = __QSUB8(zero, input);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = -A */
+    /* Negate and then store the results in the destination buffer. */ \
+      in = *pSrc++;
+    *pDst++ = (in == (q7_t) 0x80) ? 0x7f : -in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of negate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,165 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_offset_f32.c    
+*    
+* Description:	Floating-point vector offset.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @defgroup offset Vector Offset        
+ *        
+ * Adds a constant offset to each element of a vector.        
+ *        
+ * <pre>        
+ *     pDst[n] = pSrc[n] + offset,   0 <= n < blockSize.        
+ * </pre>        
+ *        
+ * The functions support in-place computation allowing the source and
+ * destination pointers to reference the same memory buffer.
+ * There are separate functions for floating-point, Q7, Q15, and Q31 data types.
+ */
+
+/**        
+ * @addtogroup offset        
+ * @{        
+ */
+
+/**        
+ * @brief  Adds a constant offset to a floating-point vector.        
+ * @param[in]  *pSrc points to the input vector        
+ * @param[in]  offset is the offset to be added        
+ * @param[out]  *pDst points to the output vector        
+ * @param[in]  blockSize number of samples in the vector        
+ * @return none.        
+ */
+
+
+void arm_offset_f32(
+  float32_t * pSrc,
+  float32_t offset,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t in1, in2, in3, in4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the results in the destination buffer. */
+    /* read samples from source */
+    in1 = *pSrc;
+    in2 = *(pSrc + 1);
+
+    /* add offset to input */
+    in1 = in1 + offset;
+
+    /* read samples from source */
+    in3 = *(pSrc + 2);
+
+    /* add offset to input */
+    in2 = in2 + offset;
+
+    /* read samples from source */
+    in4 = *(pSrc + 3);
+
+    /* add offset to input */
+    in3 = in3 + offset;
+
+    /* store result to destination */
+    *pDst = in1;
+
+    /* add offset to input */
+    in4 = in4 + offset;
+
+    /* store result to destination */
+    *(pDst + 1) = in2;
+
+    /* store result to destination */
+    *(pDst + 2) = in3;
+
+    /* store result to destination */
+    *(pDst + 3) = in4;
+
+    /* update pointers to process next samples */
+    pSrc += 4u;
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the result in the destination buffer. */
+    *pDst++ = (*pSrc++) + offset;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of offset group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,136 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_offset_q15.c    
+*    
+* Description:	Q15 vector offset.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup offset    
+ * @{    
+ */
+
+/**    
+ * @brief  Adds a constant offset to a Q15 vector.    
+ * @param[in]  *pSrc points to the input vector    
+ * @param[in]  offset is the offset to be added    
+ * @param[out]  *pDst points to the output vector    
+ * @param[in]  blockSize number of samples in the vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.    
+ */
+
+void arm_offset_q15(
+  q15_t * pSrc,
+  q15_t offset,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t offset_packed;                           /* Offset packed to 32 bit */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* Offset is packed to 32 bit in order to use SIMD32 for addition */
+  offset_packed = __PKHBT(offset, offset, 16);
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the results in the destination buffer, 2 samples at a time. */
+    *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrc)++, offset_packed);
+    *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrc)++, offset_packed);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the results in the destination buffer. */
+    *pDst++ = (q15_t) __QADD16(*pSrc++, offset);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the results in the destination buffer. */
+    *pDst++ = (q15_t) __SSAT(((q31_t) * pSrc++ + offset), 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of offset group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_offset_q31.c    
+*    
+* Description:	Q31 vector offset.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup offset    
+ * @{    
+ */
+
+/**    
+ * @brief  Adds a constant offset to a Q31 vector.    
+ * @param[in]  *pSrc points to the input vector    
+ * @param[in]  offset is the offset to be added    
+ * @param[out]  *pDst points to the output vector    
+ * @param[in]  blockSize number of samples in the vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.    
+ */
+
+void arm_offset_q31(
+  q31_t * pSrc,
+  q31_t offset,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2, in3, in4;
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the results in the destination buffer. */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+    in3 = *pSrc++;
+    in4 = *pSrc++;
+
+    *pDst++ = __QADD(in1, offset);
+    *pDst++ = __QADD(in2, offset);
+    *pDst++ = __QADD(in3, offset);
+    *pDst++ = __QADD(in4, offset);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the result in the destination buffer. */
+    *pDst++ = __QADD(*pSrc++, offset);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the result in the destination buffer. */
+    *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of offset group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,135 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_offset_q7.c    
+*    
+* Description:	Q7 vector offset.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup offset    
+ * @{    
+ */
+
+/**    
+ * @brief  Adds a constant offset to a Q7 vector.    
+ * @param[in]  *pSrc points to the input vector    
+ * @param[in]  offset is the offset to be added    
+ * @param[out]  *pDst points to the output vector    
+ * @param[in]  blockSize number of samples in the vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q7 range [0x80 0x7F] are saturated.    
+ */
+
+void arm_offset_q7(
+  q7_t * pSrc,
+  q7_t offset,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t offset_packed;                           /* Offset packed to 32 bit */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* Offset is packed to 32 bit in order to use SIMD32 for addition */
+  offset_packed = __PACKq7(offset, offset, offset, offset);
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the results in the destination bufferfor 4 samples at a time. */
+    *__SIMD32(pDst)++ = __QADD8(*__SIMD32(pSrc)++, offset_packed);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the result in the destination buffer. */
+    *pDst++ = (q7_t) __SSAT(*pSrc++ + offset, 8);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A + offset */
+    /* Add offset and then store the result in the destination buffer. */
+    *pDst++ = (q7_t) __SSAT((q15_t) * pSrc++ + offset, 8);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of offset group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,169 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_scale_f32.c    
+*    
+* Description:	Multiplies a floating-point vector by a scalar.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @defgroup scale Vector Scale        
+ *        
+ * Multiply a vector by a scalar value.  For floating-point data, the algorithm used is:        
+ *        
+ * <pre>        
+ *     pDst[n] = pSrc[n] * scale,   0 <= n < blockSize.        
+ * </pre>        
+ *        
+ * In the fixed-point Q7, Q15, and Q31 functions, <code>scale</code> is represented by        
+ * a fractional multiplication <code>scaleFract</code> and an arithmetic shift <code>shift</code>.        
+ * The shift allows the gain of the scaling operation to exceed 1.0.        
+ * The algorithm used with fixed-point data is:        
+ *        
+ * <pre>        
+ *     pDst[n] = (pSrc[n] * scaleFract) << shift,   0 <= n < blockSize.        
+ * </pre>        
+ *        
+ * The overall scale factor applied to the fixed-point data is        
+ * <pre>        
+ *     scale = scaleFract * 2^shift.        
+ * </pre>        
+ *
+ * The functions support in-place computation allowing the source and destination
+ * pointers to reference the same memory buffer.
+ */
+
+/**        
+ * @addtogroup scale        
+ * @{        
+ */
+
+/**        
+ * @brief Multiplies a floating-point vector by a scalar.        
+ * @param[in]       *pSrc points to the input vector        
+ * @param[in]       scale scale factor to be applied        
+ * @param[out]      *pDst points to the output vector        
+ * @param[in]       blockSize number of samples in the vector        
+ * @return none.        
+ */
+
+
+void arm_scale_f32(
+  float32_t * pSrc,
+  float32_t scale,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t in1, in2, in3, in4;                  /* temporary variabels */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A * scale */
+    /* Scale the input and then store the results in the destination buffer. */
+    /* read input samples from source */
+    in1 = *pSrc;
+    in2 = *(pSrc + 1);
+
+    /* multiply with scaling factor */
+    in1 = in1 * scale;
+
+    /* read input sample from source */
+    in3 = *(pSrc + 2);
+
+    /* multiply with scaling factor */
+    in2 = in2 * scale;
+
+    /* read input sample from source */
+    in4 = *(pSrc + 3);
+
+    /* multiply with scaling factor */
+    in3 = in3 * scale;
+    in4 = in4 * scale;
+    /* store the result to destination */
+    *pDst = in1;
+    *(pDst + 1) = in2;
+    *(pDst + 2) = in3;
+    *(pDst + 3) = in4;
+
+    /* update pointers to process next samples */
+    pSrc += 4u;
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * scale */
+    /* Scale the input and then store the result in the destination buffer. */
+    *pDst++ = (*pSrc++) * scale;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of scale group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,162 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_scale_q15.c    
+*    
+* Description:	Multiplies a Q15 vector by a scalar.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup scale    
+ * @{    
+ */
+
+/**    
+ * @brief Multiplies a Q15 vector by a scalar.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       scaleFract fractional portion of the scale value    
+ * @param[in]       shift number of bits to shift the result by    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in the vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.15 format.    
+ * These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format.    
+ */
+
+
+void arm_scale_q15(
+  q15_t * pSrc,
+  q15_t scaleFract,
+  int8_t shift,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  int8_t kShift = 15 - shift;                    /* shift to apply after scaling */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q15_t in1, in2, in3, in4;
+  q31_t inA1, inA2;                              /* Temporary variables */
+  q31_t out1, out2, out3, out4;
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Reading 2 inputs from memory */
+    inA1 = *__SIMD32(pSrc)++;
+    inA2 = *__SIMD32(pSrc)++;
+
+    /* C = A * scale */
+    /* Scale the inputs and then store the 2 results in the destination buffer        
+     * in single cycle by packing the outputs */
+    out1 = (q31_t) ((q15_t) (inA1 >> 16) * scaleFract);
+    out2 = (q31_t) ((q15_t) inA1 * scaleFract);
+    out3 = (q31_t) ((q15_t) (inA2 >> 16) * scaleFract);
+    out4 = (q31_t) ((q15_t) inA2 * scaleFract);
+
+    /* apply shifting */
+    out1 = out1 >> kShift;
+    out2 = out2 >> kShift;
+    out3 = out3 >> kShift;
+    out4 = out4 >> kShift;
+
+    /* saturate the output */
+    in1 = (q15_t) (__SSAT(out1, 16));
+    in2 = (q15_t) (__SSAT(out2, 16));
+    in3 = (q15_t) (__SSAT(out3, 16));
+    in4 = (q15_t) (__SSAT(out4, 16));
+
+    /* store the result to destination */
+    *__SIMD32(pDst)++ = __PKHBT(in2, in1, 16);
+    *__SIMD32(pDst)++ = __PKHBT(in4, in3, 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * scale */
+    /* Scale the input and then store the result in the destination buffer. */
+    *pDst++ = (q15_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 16));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * scale */
+    /* Scale the input and then store the result in the destination buffer. */
+    *pDst++ = (q15_t) (__SSAT(((q31_t) * pSrc++ * scaleFract) >> kShift, 16));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of scale group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,239 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_scale_q31.c    
+*    
+* Description:	Multiplies a Q31 vector by a scalar.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**       
+ * @ingroup groupMath       
+ */
+
+/**       
+ * @addtogroup scale       
+ * @{       
+ */
+
+/**       
+ * @brief Multiplies a Q31 vector by a scalar.       
+ * @param[in]       *pSrc points to the input vector       
+ * @param[in]       scaleFract fractional portion of the scale value       
+ * @param[in]       shift number of bits to shift the result by       
+ * @param[out]      *pDst points to the output vector       
+ * @param[in]       blockSize number of samples in the vector       
+ * @return none.       
+ *       
+ * <b>Scaling and Overflow Behavior:</b>       
+ * \par       
+ * The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.31 format.       
+ * These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format.       
+ */
+
+void arm_scale_q31(
+  q31_t * pSrc,
+  q31_t scaleFract,
+  int8_t shift,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  int8_t kShift = shift + 1;                     /* Shift to apply after scaling */
+  int8_t sign = (kShift & 0x80);
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in, out;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t in1, in2, in3, in4;                      /* temporary input variables */
+  q31_t out1, out2, out3, out4;                  /* temporary output variabels */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  if(sign == 0u)
+  {
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.       
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* read four inputs from source */
+      in1 = *pSrc;
+      in2 = *(pSrc + 1);
+      in3 = *(pSrc + 2);
+      in4 = *(pSrc + 3);
+
+      /* multiply input with scaler value */
+      in1 = ((q63_t) in1 * scaleFract) >> 32;
+      in2 = ((q63_t) in2 * scaleFract) >> 32;
+      in3 = ((q63_t) in3 * scaleFract) >> 32;
+      in4 = ((q63_t) in4 * scaleFract) >> 32;
+
+      /* apply shifting */
+      out1 = in1 << kShift;
+      out2 = in2 << kShift;
+
+      /* saturate the results. */
+      if(in1 != (out1 >> kShift))
+        out1 = 0x7FFFFFFF ^ (in1 >> 31);
+
+      if(in2 != (out2 >> kShift))
+        out2 = 0x7FFFFFFF ^ (in2 >> 31);
+
+      out3 = in3 << kShift;
+      out4 = in4 << kShift;
+
+      *pDst = out1;
+      *(pDst + 1) = out2;
+
+      if(in3 != (out3 >> kShift))
+        out3 = 0x7FFFFFFF ^ (in3 >> 31);
+
+      if(in4 != (out4 >> kShift))
+        out4 = 0x7FFFFFFF ^ (in4 >> 31);
+
+      /* Store result destination */
+      *(pDst + 2) = out3;
+      *(pDst + 3) = out4;
+
+      /* Update pointers to process next sampels */
+      pSrc += 4u;
+      pDst += 4u;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+  }
+  else
+  {
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.       
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* read four inputs from source */
+      in1 = *pSrc;
+      in2 = *(pSrc + 1);
+      in3 = *(pSrc + 2);
+      in4 = *(pSrc + 3);
+
+      /* multiply input with scaler value */
+      in1 = ((q63_t) in1 * scaleFract) >> 32;
+      in2 = ((q63_t) in2 * scaleFract) >> 32;
+      in3 = ((q63_t) in3 * scaleFract) >> 32;
+      in4 = ((q63_t) in4 * scaleFract) >> 32;
+
+      /* apply shifting */
+      out1 = in1 >> -kShift;
+      out2 = in2 >> -kShift;
+
+      out3 = in3 >> -kShift;
+      out4 = in4 >> -kShift;
+
+      /* Store result destination */
+      *pDst = out1;
+      *(pDst + 1) = out2;
+
+      *(pDst + 2) = out3;
+      *(pDst + 3) = out4;
+
+      /* Update pointers to process next sampels */
+      pSrc += 4u;
+      pDst += 4u;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.       
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  if(sign == 0)
+  {
+	  while(blkCnt > 0u)
+	  {
+		/* C = A * scale */
+		/* Scale the input and then store the result in the destination buffer. */
+		in = *pSrc++;
+		in = ((q63_t) in * scaleFract) >> 32;
+
+		out = in << kShift;
+		
+		if(in != (out >> kShift))
+			out = 0x7FFFFFFF ^ (in >> 31);
+
+		*pDst++ = out;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	  }
+  }
+  else
+  {
+	  while(blkCnt > 0u)
+	  {
+		/* C = A * scale */
+		/* Scale the input and then store the result in the destination buffer. */
+		in = *pSrc++;
+		in = ((q63_t) in * scaleFract) >> 32;
+
+		out = in >> -kShift;
+
+		*pDst++ = out;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	  }
+  
+  }
+}
+
+/**       
+ * @} end of scale group       
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,149 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_scale_q7.c    
+*    
+* Description:	Multiplies a Q7 vector by a scalar.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup scale    
+ * @{    
+ */
+
+/**    
+ * @brief Multiplies a Q7 vector by a scalar.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       scaleFract fractional portion of the scale value    
+ * @param[in]       shift number of bits to shift the result by    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in the vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.7 format.    
+ * These are multiplied to yield a 2.14 intermediate result and this is shifted with saturation to 1.7 format.    
+ */
+
+void arm_scale_q7(
+  q7_t * pSrc,
+  q7_t scaleFract,
+  int8_t shift,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  int8_t kShift = 7 - shift;                     /* shift to apply after scaling */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q7_t in1, in2, in3, in4, out1, out2, out3, out4;      /* Temporary variables to store input & output */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Reading 4 inputs from memory */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+    in3 = *pSrc++;
+    in4 = *pSrc++;
+
+    /* C = A * scale */
+    /* Scale the inputs and then store the results in the temporary variables. */
+    out1 = (q7_t) (__SSAT(((in1) * scaleFract) >> kShift, 8));
+    out2 = (q7_t) (__SSAT(((in2) * scaleFract) >> kShift, 8));
+    out3 = (q7_t) (__SSAT(((in3) * scaleFract) >> kShift, 8));
+    out4 = (q7_t) (__SSAT(((in4) * scaleFract) >> kShift, 8));
+
+    /* Packing the individual outputs into 32bit and storing in    
+     * destination buffer in single write */
+    *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * scale */
+    /* Scale the input and then store the result in the destination buffer. */
+    *pDst++ = (q7_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 8));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A * scale */
+    /* Scale the input and then store the result in the destination buffer. */
+    *pDst++ = (q7_t) (__SSAT((((q15_t) * pSrc++ * scaleFract) >> kShift), 8));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of scale group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,248 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_shift_q15.c    
+*    
+* Description:	Shifts the elements of a Q15 vector by a specified number of bits.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup shift    
+ * @{    
+ */
+
+/**    
+ * @brief  Shifts the elements of a Q15 vector a specified number of bits.    
+ * @param[in]  *pSrc points to the input vector    
+ * @param[in]  shiftBits number of bits to shift.  A positive value shifts left; a negative value shifts right.    
+ * @param[out]  *pDst points to the output vector    
+ * @param[in]  blockSize number of samples in the vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.    
+ */
+
+void arm_shift_q15(
+  q15_t * pSrc,
+  int8_t shiftBits,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  uint8_t sign;                                  /* Sign of shiftBits */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q15_t in1, in2;                                /* Temporary variables */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* Getting the sign of shiftBits */
+  sign = (shiftBits & 0x80);
+
+  /* If the shift value is positive then do right shift else left shift */
+  if(sign == 0u)
+  {
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* Read 2 inputs */
+      in1 = *pSrc++;
+      in2 = *pSrc++;
+      /* C = A << shiftBits */
+      /* Shift the inputs and then store the results in the destination buffer. */
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pDst)++ = __PKHBT(__SSAT((in1 << shiftBits), 16),
+                                  __SSAT((in2 << shiftBits), 16), 16);
+
+#else
+
+      *__SIMD32(pDst)++ = __PKHBT(__SSAT((in2 << shiftBits), 16),
+                                  __SSAT((in1 << shiftBits), 16), 16);
+
+#endif /* #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      in1 = *pSrc++;
+      in2 = *pSrc++;
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pDst)++ = __PKHBT(__SSAT((in1 << shiftBits), 16),
+                                  __SSAT((in2 << shiftBits), 16), 16);
+
+#else
+
+      *__SIMD32(pDst)++ = __PKHBT(__SSAT((in2 << shiftBits), 16),
+                                  __SSAT((in1 << shiftBits), 16), 16);
+
+#endif /* #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = blockSize % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* C = A << shiftBits */
+      /* Shift and then store the results in the destination buffer. */
+      *pDst++ = __SSAT((*pSrc++ << shiftBits), 16);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* Read 2 inputs */
+      in1 = *pSrc++;
+      in2 = *pSrc++;
+
+      /* C = A >> shiftBits */
+      /* Shift the inputs and then store the results in the destination buffer. */
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pDst)++ = __PKHBT((in1 >> -shiftBits),
+                                  (in2 >> -shiftBits), 16);
+
+#else
+
+      *__SIMD32(pDst)++ = __PKHBT((in2 >> -shiftBits),
+                                  (in1 >> -shiftBits), 16);
+
+#endif /* #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      in1 = *pSrc++;
+      in2 = *pSrc++;
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pDst)++ = __PKHBT((in1 >> -shiftBits),
+                                  (in2 >> -shiftBits), 16);
+
+#else
+
+      *__SIMD32(pDst)++ = __PKHBT((in2 >> -shiftBits),
+                                  (in1 >> -shiftBits), 16);
+
+#endif /* #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = blockSize % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* C = A >> shiftBits */
+      /* Shift the inputs and then store the results in the destination buffer. */
+      *pDst++ = (*pSrc++ >> -shiftBits);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Getting the sign of shiftBits */
+  sign = (shiftBits & 0x80);
+
+  /* If the shift value is positive then do right shift else left shift */
+  if(sign == 0u)
+  {
+    /* Initialize blkCnt with number of samples */
+    blkCnt = blockSize;
+
+    while(blkCnt > 0u)
+    {
+      /* C = A << shiftBits */
+      /* Shift and then store the results in the destination buffer. */
+      *pDst++ = __SSAT(((q31_t) * pSrc++ << shiftBits), 16);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* Initialize blkCnt with number of samples */
+    blkCnt = blockSize;
+
+    while(blkCnt > 0u)
+    {
+      /* C = A >> shiftBits */
+      /* Shift the inputs and then store the results in the destination buffer. */
+      *pDst++ = (*pSrc++ >> -shiftBits);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of shift group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,203 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_shift_q31.c    
+*    
+* Description:	Shifts the elements of a Q31 vector by a specified number of bits.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+/**        
+ * @defgroup shift Vector Shift        
+ *        
+ * Shifts the elements of a fixed-point vector by a specified number of bits.        
+ * There are separate functions for Q7, Q15, and Q31 data types.        
+ * The underlying algorithm used is:        
+ *        
+ * <pre>        
+ *     pDst[n] = pSrc[n] << shift,   0 <= n < blockSize.        
+ * </pre>        
+ *        
+ * If <code>shift</code> is positive then the elements of the vector are shifted to the left.        
+ * If <code>shift</code> is negative then the elements of the vector are shifted to the right.        
+ *
+ * The functions support in-place computation allowing the source and destination
+ * pointers to reference the same memory buffer.
+ */
+
+/**        
+ * @addtogroup shift        
+ * @{        
+ */
+
+/**        
+ * @brief  Shifts the elements of a Q31 vector a specified number of bits.        
+ * @param[in]  *pSrc points to the input vector        
+ * @param[in]  shiftBits number of bits to shift.  A positive value shifts left; a negative value shifts right.        
+ * @param[out]  *pDst points to the output vector        
+ * @param[in]  blockSize number of samples in the vector        
+ * @return none.        
+ *        
+ *        
+ * <b>Scaling and Overflow Behavior:</b>        
+ * \par        
+ * The function uses saturating arithmetic.        
+ * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.        
+ */
+
+void arm_shift_q31(
+  q31_t * pSrc,
+  int8_t shiftBits,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  uint8_t sign = (shiftBits & 0x80);             /* Sign of shiftBits */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  q31_t in1, in2, in3, in4;                      /* Temporary input variables */
+  q31_t out1, out2, out3, out4;                  /* Temporary output variables */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+
+  if(sign == 0u)
+  {
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C = A  << shiftBits */
+      /* Shift the input and then store the results in the destination buffer. */
+      in1 = *pSrc;
+      in2 = *(pSrc + 1);
+      out1 = in1 << shiftBits;
+      in3 = *(pSrc + 2);
+      out2 = in2 << shiftBits;
+      in4 = *(pSrc + 3);
+      if(in1 != (out1 >> shiftBits))
+        out1 = 0x7FFFFFFF ^ (in1 >> 31);
+
+      if(in2 != (out2 >> shiftBits))
+        out2 = 0x7FFFFFFF ^ (in2 >> 31);
+
+      *pDst = out1;
+      out3 = in3 << shiftBits;
+      *(pDst + 1) = out2;
+      out4 = in4 << shiftBits;
+
+      if(in3 != (out3 >> shiftBits))
+        out3 = 0x7FFFFFFF ^ (in3 >> 31);
+
+      if(in4 != (out4 >> shiftBits))
+        out4 = 0x7FFFFFFF ^ (in4 >> 31);
+
+      *(pDst + 2) = out3;
+      *(pDst + 3) = out4;
+
+      /* Update destination pointer to process next sampels */
+      pSrc += 4u;
+      pDst += 4u;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C = A >>  shiftBits */
+      /* Shift the input and then store the results in the destination buffer. */
+      in1 = *pSrc;
+      in2 = *(pSrc + 1);
+      in3 = *(pSrc + 2);
+      in4 = *(pSrc + 3);
+
+      *pDst = (in1 >> -shiftBits);
+      *(pDst + 1) = (in2 >> -shiftBits);
+      *(pDst + 2) = (in3 >> -shiftBits);
+      *(pDst + 3) = (in4 >> -shiftBits);
+
+
+      pSrc += 4u;
+      pDst += 4u;
+
+      blkCnt--;
+    }
+
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = A (>> or <<) shiftBits */
+    /* Shift the input and then store the result in the destination buffer. */
+    *pDst++ = (sign == 0u) ? clip_q63_to_q31((q63_t) * pSrc++ << shiftBits) :
+      (*pSrc++ >> -shiftBits);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+}
+
+/**        
+ * @} end of shift group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,220 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_shift_q7.c    
+*    
+* Description:	Processing function for the Q7 Shifting    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @addtogroup shift        
+ * @{        
+ */
+
+
+/**        
+ * @brief  Shifts the elements of a Q7 vector a specified number of bits.        
+ * @param[in]  *pSrc points to the input vector        
+ * @param[in]  shiftBits number of bits to shift.  A positive value shifts left; a negative value shifts right.        
+ * @param[out]  *pDst points to the output vector        
+ * @param[in]  blockSize number of samples in the vector        
+ * @return none.        
+ *    
+ * \par Conditions for optimum performance    
+ *  Input and output buffers should be aligned by 32-bit    
+ *    
+ *        
+ * <b>Scaling and Overflow Behavior:</b>        
+ * \par        
+ * The function uses saturating arithmetic.        
+ * Results outside of the allowable Q7 range [0x8 0x7F] will be saturated.        
+ */
+
+void arm_shift_q7(
+  q7_t * pSrc,
+  int8_t shiftBits,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  uint8_t sign;                                  /* Sign of shiftBits */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q7_t in1;                                      /* Input value1 */
+  q7_t in2;                                      /* Input value2 */
+  q7_t in3;                                      /* Input value3 */
+  q7_t in4;                                      /* Input value4 */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* Getting the sign of shiftBits */
+  sign = (shiftBits & 0x80);
+
+  /* If the shift value is positive then do right shift else left shift */
+  if(sign == 0u)
+  {
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C = A << shiftBits */
+      /* Read 4 inputs */
+      in1 = *pSrc;
+      in2 = *(pSrc + 1);
+      in3 = *(pSrc + 2);
+      in4 = *(pSrc + 3);
+
+      /* Store the Shifted result in the destination buffer in single cycle by packing the outputs */
+      *__SIMD32(pDst)++ = __PACKq7(__SSAT((in1 << shiftBits), 8),
+                                   __SSAT((in2 << shiftBits), 8),
+                                   __SSAT((in3 << shiftBits), 8),
+                                   __SSAT((in4 << shiftBits), 8));
+      /* Update source pointer to process next sampels */
+      pSrc += 4u;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+     ** No loop unrolling is used. */
+    blkCnt = blockSize % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* C = A << shiftBits */
+      /* Shift the input and then store the result in the destination buffer. */
+      *pDst++ = (q7_t) __SSAT((*pSrc++ << shiftBits), 8);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    shiftBits = -shiftBits;
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C = A >> shiftBits */
+      /* Read 4 inputs */
+      in1 = *pSrc;
+      in2 = *(pSrc + 1);
+      in3 = *(pSrc + 2);
+      in4 = *(pSrc + 3);
+
+      /* Store the Shifted result in the destination buffer in single cycle by packing the outputs */
+      *__SIMD32(pDst)++ = __PACKq7((in1 >> shiftBits), (in2 >> shiftBits),
+                                   (in3 >> shiftBits), (in4 >> shiftBits));
+
+
+      pSrc += 4u;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = blockSize % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* C = A >> shiftBits */
+      /* Shift the input and then store the result in the destination buffer. */
+      in1 = *pSrc++;
+      *pDst++ = (in1 >> shiftBits);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Getting the sign of shiftBits */
+  sign = (shiftBits & 0x80);
+
+  /* If the shift value is positive then do right shift else left shift */
+  if(sign == 0u)
+  {
+    /* Initialize blkCnt with number of samples */
+    blkCnt = blockSize;
+
+    while(blkCnt > 0u)
+    {
+      /* C = A << shiftBits */
+      /* Shift the input and then store the result in the destination buffer. */
+      *pDst++ = (q7_t) __SSAT(((q15_t) * pSrc++ << shiftBits), 8);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* Initialize blkCnt with number of samples */
+    blkCnt = blockSize;
+
+    while(blkCnt > 0u)
+    {
+      /* C = A >> shiftBits */
+      /* Shift the input and then store the result in the destination buffer. */
+      *pDst++ = (*pSrc++ >> -shiftBits);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+}
+
+/**        
+ * @} end of shift group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,150 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_sub_f32.c    
+*    
+* Description:	Floating-point vector subtraction.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMath        
+ */
+
+/**        
+ * @defgroup BasicSub Vector Subtraction        
+ *        
+ * Element-by-element subtraction of two vectors.        
+ *        
+ * <pre>        
+ *     pDst[n] = pSrcA[n] - pSrcB[n],   0 <= n < blockSize.        
+ * </pre>        
+ *        
+ * There are separate functions for floating-point, Q7, Q15, and Q31 data types.        
+ */
+
+/**        
+ * @addtogroup BasicSub        
+ * @{        
+ */
+
+
+/**        
+ * @brief Floating-point vector subtraction.        
+ * @param[in]       *pSrcA points to the first input vector        
+ * @param[in]       *pSrcB points to the second input vector        
+ * @param[out]      *pDst points to the output vector        
+ * @param[in]       blockSize number of samples in each vector        
+ * @return none.        
+ */
+
+void arm_sub_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t inA1, inA2, inA3, inA4;              /* temporary variables */
+  float32_t inB1, inB2, inB3, inB4;              /* temporary variables */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the results in the destination buffer. */
+    /* Read 4 input samples from sourceA and sourceB */
+    inA1 = *pSrcA;
+    inB1 = *pSrcB;
+    inA2 = *(pSrcA + 1);
+    inB2 = *(pSrcB + 1);
+    inA3 = *(pSrcA + 2);
+    inB3 = *(pSrcB + 2);
+    inA4 = *(pSrcA + 3);
+    inB4 = *(pSrcB + 3);
+
+    /* dst = srcA - srcB */
+    /* subtract and store the result */
+    *pDst = inA1 - inB1;
+    *(pDst + 1) = inA2 - inB2;
+    *(pDst + 2) = inA3 - inB3;
+    *(pDst + 3) = inA4 - inB4;
+
+
+    /* Update pointers to process next sampels */
+    pSrcA += 4u;
+    pSrcB += 4u;
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the results in the destination buffer. */
+    *pDst++ = (*pSrcA++) - (*pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of BasicSub group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_sub_q15.c    
+*    
+* Description:	Q15 vector subtraction.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicSub    
+ * @{    
+ */
+
+/**    
+ * @brief Q15 vector subtraction.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.    
+ */
+
+void arm_sub_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inA1, inA2;
+  q31_t inB1, inB2;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the results in the destination buffer two samples at a time. */
+    inA1 = *__SIMD32(pSrcA)++;
+    inA2 = *__SIMD32(pSrcA)++;
+    inB1 = *__SIMD32(pSrcB)++;
+    inB2 = *__SIMD32(pSrcB)++;
+
+    *__SIMD32(pDst)++ = __QSUB16(inA1, inB1);
+    *__SIMD32(pDst)++ = __QSUB16(inA2, inB2);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the result in the destination buffer. */
+    *pDst++ = (q15_t) __QSUB16(*pSrcA++, *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the result in the destination buffer. */
+    *pDst++ = (q15_t) __SSAT(((q31_t) * pSrcA++ - *pSrcB++), 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+}
+
+/**    
+ * @} end of BasicSub group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,146 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_sub_q31.c    
+*    
+* Description:	Q31 vector subtraction.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicSub    
+ * @{    
+ */
+
+/**    
+ * @brief Q31 vector subtraction.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.    
+ */
+
+void arm_sub_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inA1, inA2, inA3, inA4;
+  q31_t inB1, inB2, inB3, inB4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the results in the destination buffer. */
+    inA1 = *pSrcA++;
+    inA2 = *pSrcA++;
+    inB1 = *pSrcB++;
+    inB2 = *pSrcB++;
+
+    inA3 = *pSrcA++;
+    inA4 = *pSrcA++;
+    inB3 = *pSrcB++;
+    inB4 = *pSrcB++;
+
+    *pDst++ = __QSUB(inA1, inB1);
+    *pDst++ = __QSUB(inA2, inB2);
+    *pDst++ = __QSUB(inA3, inB3);
+    *pDst++ = __QSUB(inA4, inB4);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the result in the destination buffer. */
+    *pDst++ = __QSUB(*pSrcA++, *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the result in the destination buffer. */
+    *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrcA++ - *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of BasicSub group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,131 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_sub_q7.c    
+*    
+* Description:	Q7 vector subtraction.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMath    
+ */
+
+/**    
+ * @addtogroup BasicSub    
+ * @{    
+ */
+
+/**    
+ * @brief Q7 vector subtraction.    
+ * @param[in]       *pSrcA points to the first input vector    
+ * @param[in]       *pSrcB points to the second input vector    
+ * @param[out]      *pDst points to the output vector    
+ * @param[in]       blockSize number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.    
+ */
+
+void arm_sub_q7(
+  q7_t * pSrcA,
+  q7_t * pSrcB,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the results in the destination buffer 4 samples at a time. */
+    *__SIMD32(pDst)++ = __QSUB8(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the result in the destination buffer. */
+    *pDst++ = __SSAT(*pSrcA++ - *pSrcB++, 8);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initialize blkCnt with number of samples */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A - B */
+    /* Subtract and then store the result in the destination buffer. */
+    *pDst++ = (q7_t) __SSAT((q15_t) * pSrcA++ - *pSrcB++, 8);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+}
+
+/**    
+ * @} end of BasicSub group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,27251 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_common_tables.c    
+*    
+* Description:	This file has common tables like fft twiddle factors, Bitreverse, reciprocal etc which are used across different functions    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup CFFT_CIFFT Complex FFT Tables  
+ * @{    
+ */
+
+/**    
+* \par    
+* Pseudo code for Generation of Bit reversal Table is    
+* \par    
+* <pre>for(l=1;l <= N/4;l++)    
+* {    
+*   for(i=0;i<logN2;i++)    
+*   {     
+*     a[i]=l&(1<<i);    
+*   }    
+*   for(j=0; j<logN2; j++)    
+*   {    
+*     if (a[j]!=0)    
+*     y[l]+=(1<<((logN2-1)-j));    
+*   }    
+*   y[l] = y[l] >> 1;    
+*  } </pre>    
+* \par    
+* where N = 4096	logN2 = 12   
+* \par    
+* N is the maximum FFT Size supported    
+*/
+
+/*    
+* @brief  Table for bit reversal process    
+*/
+const uint16_t armBitRevTable[1024] = {
+   0x400, 0x200, 0x600, 0x100, 0x500, 0x300, 0x700, 0x80, 0x480, 0x280, 
+   0x680, 0x180, 0x580, 0x380, 0x780, 0x40, 0x440, 0x240, 0x640, 0x140, 
+   0x540, 0x340, 0x740, 0xc0, 0x4c0, 0x2c0, 0x6c0, 0x1c0, 0x5c0, 0x3c0, 
+   0x7c0, 0x20, 0x420, 0x220, 0x620, 0x120, 0x520, 0x320, 0x720, 0xa0, 
+   0x4a0, 0x2a0, 0x6a0, 0x1a0, 0x5a0, 0x3a0, 0x7a0, 0x60, 0x460, 0x260, 
+   0x660, 0x160, 0x560, 0x360, 0x760, 0xe0, 0x4e0, 0x2e0, 0x6e0, 0x1e0, 
+   0x5e0, 0x3e0, 0x7e0, 0x10, 0x410, 0x210, 0x610, 0x110, 0x510, 0x310, 
+   0x710, 0x90, 0x490, 0x290, 0x690, 0x190, 0x590, 0x390, 0x790, 0x50, 
+   0x450, 0x250, 0x650, 0x150, 0x550, 0x350, 0x750, 0xd0, 0x4d0, 0x2d0, 
+   0x6d0, 0x1d0, 0x5d0, 0x3d0, 0x7d0, 0x30, 0x430, 0x230, 0x630, 0x130, 
+   0x530, 0x330, 0x730, 0xb0, 0x4b0, 0x2b0, 0x6b0, 0x1b0, 0x5b0, 0x3b0, 
+   0x7b0, 0x70, 0x470, 0x270, 0x670, 0x170, 0x570, 0x370, 0x770, 0xf0, 
+   0x4f0, 0x2f0, 0x6f0, 0x1f0, 0x5f0, 0x3f0, 0x7f0, 0x8, 0x408, 0x208, 
+   0x608, 0x108, 0x508, 0x308, 0x708, 0x88, 0x488, 0x288, 0x688, 0x188, 
+   0x588, 0x388, 0x788, 0x48, 0x448, 0x248, 0x648, 0x148, 0x548, 0x348, 
+   0x748, 0xc8, 0x4c8, 0x2c8, 0x6c8, 0x1c8, 0x5c8, 0x3c8, 0x7c8, 0x28, 
+   0x428, 0x228, 0x628, 0x128, 0x528, 0x328, 0x728, 0xa8, 0x4a8, 0x2a8, 
+   0x6a8, 0x1a8, 0x5a8, 0x3a8, 0x7a8, 0x68, 0x468, 0x268, 0x668, 0x168, 
+   0x568, 0x368, 0x768, 0xe8, 0x4e8, 0x2e8, 0x6e8, 0x1e8, 0x5e8, 0x3e8, 
+   0x7e8, 0x18, 0x418, 0x218, 0x618, 0x118, 0x518, 0x318, 0x718, 0x98, 
+   0x498, 0x298, 0x698, 0x198, 0x598, 0x398, 0x798, 0x58, 0x458, 0x258, 
+   0x658, 0x158, 0x558, 0x358, 0x758, 0xd8, 0x4d8, 0x2d8, 0x6d8, 0x1d8, 
+   0x5d8, 0x3d8, 0x7d8, 0x38, 0x438, 0x238, 0x638, 0x138, 0x538, 0x338, 
+   0x738, 0xb8, 0x4b8, 0x2b8, 0x6b8, 0x1b8, 0x5b8, 0x3b8, 0x7b8, 0x78, 
+   0x478, 0x278, 0x678, 0x178, 0x578, 0x378, 0x778, 0xf8, 0x4f8, 0x2f8, 
+   0x6f8, 0x1f8, 0x5f8, 0x3f8, 0x7f8, 0x4, 0x404, 0x204, 0x604, 0x104, 
+   0x504, 0x304, 0x704, 0x84, 0x484, 0x284, 0x684, 0x184, 0x584, 0x384, 
+   0x784, 0x44, 0x444, 0x244, 0x644, 0x144, 0x544, 0x344, 0x744, 0xc4, 
+   0x4c4, 0x2c4, 0x6c4, 0x1c4, 0x5c4, 0x3c4, 0x7c4, 0x24, 0x424, 0x224, 
+   0x624, 0x124, 0x524, 0x324, 0x724, 0xa4, 0x4a4, 0x2a4, 0x6a4, 0x1a4, 
+   0x5a4, 0x3a4, 0x7a4, 0x64, 0x464, 0x264, 0x664, 0x164, 0x564, 0x364, 
+   0x764, 0xe4, 0x4e4, 0x2e4, 0x6e4, 0x1e4, 0x5e4, 0x3e4, 0x7e4, 0x14, 
+   0x414, 0x214, 0x614, 0x114, 0x514, 0x314, 0x714, 0x94, 0x494, 0x294, 
+   0x694, 0x194, 0x594, 0x394, 0x794, 0x54, 0x454, 0x254, 0x654, 0x154, 
+   0x554, 0x354, 0x754, 0xd4, 0x4d4, 0x2d4, 0x6d4, 0x1d4, 0x5d4, 0x3d4, 
+   0x7d4, 0x34, 0x434, 0x234, 0x634, 0x134, 0x534, 0x334, 0x734, 0xb4, 
+   0x4b4, 0x2b4, 0x6b4, 0x1b4, 0x5b4, 0x3b4, 0x7b4, 0x74, 0x474, 0x274, 
+   0x674, 0x174, 0x574, 0x374, 0x774, 0xf4, 0x4f4, 0x2f4, 0x6f4, 0x1f4, 
+   0x5f4, 0x3f4, 0x7f4, 0xc, 0x40c, 0x20c, 0x60c, 0x10c, 0x50c, 0x30c, 
+   0x70c, 0x8c, 0x48c, 0x28c, 0x68c, 0x18c, 0x58c, 0x38c, 0x78c, 0x4c, 
+   0x44c, 0x24c, 0x64c, 0x14c, 0x54c, 0x34c, 0x74c, 0xcc, 0x4cc, 0x2cc, 
+   0x6cc, 0x1cc, 0x5cc, 0x3cc, 0x7cc, 0x2c, 0x42c, 0x22c, 0x62c, 0x12c, 
+   0x52c, 0x32c, 0x72c, 0xac, 0x4ac, 0x2ac, 0x6ac, 0x1ac, 0x5ac, 0x3ac, 
+   0x7ac, 0x6c, 0x46c, 0x26c, 0x66c, 0x16c, 0x56c, 0x36c, 0x76c, 0xec, 
+   0x4ec, 0x2ec, 0x6ec, 0x1ec, 0x5ec, 0x3ec, 0x7ec, 0x1c, 0x41c, 0x21c, 
+   0x61c, 0x11c, 0x51c, 0x31c, 0x71c, 0x9c, 0x49c, 0x29c, 0x69c, 0x19c, 
+   0x59c, 0x39c, 0x79c, 0x5c, 0x45c, 0x25c, 0x65c, 0x15c, 0x55c, 0x35c, 
+   0x75c, 0xdc, 0x4dc, 0x2dc, 0x6dc, 0x1dc, 0x5dc, 0x3dc, 0x7dc, 0x3c, 
+   0x43c, 0x23c, 0x63c, 0x13c, 0x53c, 0x33c, 0x73c, 0xbc, 0x4bc, 0x2bc, 
+   0x6bc, 0x1bc, 0x5bc, 0x3bc, 0x7bc, 0x7c, 0x47c, 0x27c, 0x67c, 0x17c, 
+   0x57c, 0x37c, 0x77c, 0xfc, 0x4fc, 0x2fc, 0x6fc, 0x1fc, 0x5fc, 0x3fc, 
+   0x7fc, 0x2, 0x402, 0x202, 0x602, 0x102, 0x502, 0x302, 0x702, 0x82, 
+   0x482, 0x282, 0x682, 0x182, 0x582, 0x382, 0x782, 0x42, 0x442, 0x242, 
+   0x642, 0x142, 0x542, 0x342, 0x742, 0xc2, 0x4c2, 0x2c2, 0x6c2, 0x1c2, 
+   0x5c2, 0x3c2, 0x7c2, 0x22, 0x422, 0x222, 0x622, 0x122, 0x522, 0x322, 
+   0x722, 0xa2, 0x4a2, 0x2a2, 0x6a2, 0x1a2, 0x5a2, 0x3a2, 0x7a2, 0x62, 
+   0x462, 0x262, 0x662, 0x162, 0x562, 0x362, 0x762, 0xe2, 0x4e2, 0x2e2, 
+   0x6e2, 0x1e2, 0x5e2, 0x3e2, 0x7e2, 0x12, 0x412, 0x212, 0x612, 0x112, 
+   0x512, 0x312, 0x712, 0x92, 0x492, 0x292, 0x692, 0x192, 0x592, 0x392, 
+   0x792, 0x52, 0x452, 0x252, 0x652, 0x152, 0x552, 0x352, 0x752, 0xd2, 
+   0x4d2, 0x2d2, 0x6d2, 0x1d2, 0x5d2, 0x3d2, 0x7d2, 0x32, 0x432, 0x232, 
+   0x632, 0x132, 0x532, 0x332, 0x732, 0xb2, 0x4b2, 0x2b2, 0x6b2, 0x1b2, 
+   0x5b2, 0x3b2, 0x7b2, 0x72, 0x472, 0x272, 0x672, 0x172, 0x572, 0x372, 
+   0x772, 0xf2, 0x4f2, 0x2f2, 0x6f2, 0x1f2, 0x5f2, 0x3f2, 0x7f2, 0xa, 
+   0x40a, 0x20a, 0x60a, 0x10a, 0x50a, 0x30a, 0x70a, 0x8a, 0x48a, 0x28a, 
+   0x68a, 0x18a, 0x58a, 0x38a, 0x78a, 0x4a, 0x44a, 0x24a, 0x64a, 0x14a, 
+   0x54a, 0x34a, 0x74a, 0xca, 0x4ca, 0x2ca, 0x6ca, 0x1ca, 0x5ca, 0x3ca, 
+   0x7ca, 0x2a, 0x42a, 0x22a, 0x62a, 0x12a, 0x52a, 0x32a, 0x72a, 0xaa, 
+   0x4aa, 0x2aa, 0x6aa, 0x1aa, 0x5aa, 0x3aa, 0x7aa, 0x6a, 0x46a, 0x26a, 
+   0x66a, 0x16a, 0x56a, 0x36a, 0x76a, 0xea, 0x4ea, 0x2ea, 0x6ea, 0x1ea, 
+   0x5ea, 0x3ea, 0x7ea, 0x1a, 0x41a, 0x21a, 0x61a, 0x11a, 0x51a, 0x31a, 
+   0x71a, 0x9a, 0x49a, 0x29a, 0x69a, 0x19a, 0x59a, 0x39a, 0x79a, 0x5a, 
+   0x45a, 0x25a, 0x65a, 0x15a, 0x55a, 0x35a, 0x75a, 0xda, 0x4da, 0x2da, 
+   0x6da, 0x1da, 0x5da, 0x3da, 0x7da, 0x3a, 0x43a, 0x23a, 0x63a, 0x13a, 
+   0x53a, 0x33a, 0x73a, 0xba, 0x4ba, 0x2ba, 0x6ba, 0x1ba, 0x5ba, 0x3ba, 
+   0x7ba, 0x7a, 0x47a, 0x27a, 0x67a, 0x17a, 0x57a, 0x37a, 0x77a, 0xfa, 
+   0x4fa, 0x2fa, 0x6fa, 0x1fa, 0x5fa, 0x3fa, 0x7fa, 0x6, 0x406, 0x206, 
+   0x606, 0x106, 0x506, 0x306, 0x706, 0x86, 0x486, 0x286, 0x686, 0x186, 
+   0x586, 0x386, 0x786, 0x46, 0x446, 0x246, 0x646, 0x146, 0x546, 0x346, 
+   0x746, 0xc6, 0x4c6, 0x2c6, 0x6c6, 0x1c6, 0x5c6, 0x3c6, 0x7c6, 0x26, 
+   0x426, 0x226, 0x626, 0x126, 0x526, 0x326, 0x726, 0xa6, 0x4a6, 0x2a6, 
+   0x6a6, 0x1a6, 0x5a6, 0x3a6, 0x7a6, 0x66, 0x466, 0x266, 0x666, 0x166, 
+   0x566, 0x366, 0x766, 0xe6, 0x4e6, 0x2e6, 0x6e6, 0x1e6, 0x5e6, 0x3e6, 
+   0x7e6, 0x16, 0x416, 0x216, 0x616, 0x116, 0x516, 0x316, 0x716, 0x96, 
+   0x496, 0x296, 0x696, 0x196, 0x596, 0x396, 0x796, 0x56, 0x456, 0x256, 
+   0x656, 0x156, 0x556, 0x356, 0x756, 0xd6, 0x4d6, 0x2d6, 0x6d6, 0x1d6, 
+   0x5d6, 0x3d6, 0x7d6, 0x36, 0x436, 0x236, 0x636, 0x136, 0x536, 0x336, 
+   0x736, 0xb6, 0x4b6, 0x2b6, 0x6b6, 0x1b6, 0x5b6, 0x3b6, 0x7b6, 0x76, 
+   0x476, 0x276, 0x676, 0x176, 0x576, 0x376, 0x776, 0xf6, 0x4f6, 0x2f6, 
+   0x6f6, 0x1f6, 0x5f6, 0x3f6, 0x7f6, 0xe, 0x40e, 0x20e, 0x60e, 0x10e, 
+   0x50e, 0x30e, 0x70e, 0x8e, 0x48e, 0x28e, 0x68e, 0x18e, 0x58e, 0x38e, 
+   0x78e, 0x4e, 0x44e, 0x24e, 0x64e, 0x14e, 0x54e, 0x34e, 0x74e, 0xce, 
+   0x4ce, 0x2ce, 0x6ce, 0x1ce, 0x5ce, 0x3ce, 0x7ce, 0x2e, 0x42e, 0x22e, 
+   0x62e, 0x12e, 0x52e, 0x32e, 0x72e, 0xae, 0x4ae, 0x2ae, 0x6ae, 0x1ae, 
+   0x5ae, 0x3ae, 0x7ae, 0x6e, 0x46e, 0x26e, 0x66e, 0x16e, 0x56e, 0x36e, 
+   0x76e, 0xee, 0x4ee, 0x2ee, 0x6ee, 0x1ee, 0x5ee, 0x3ee, 0x7ee, 0x1e, 
+   0x41e, 0x21e, 0x61e, 0x11e, 0x51e, 0x31e, 0x71e, 0x9e, 0x49e, 0x29e, 
+   0x69e, 0x19e, 0x59e, 0x39e, 0x79e, 0x5e, 0x45e, 0x25e, 0x65e, 0x15e, 
+   0x55e, 0x35e, 0x75e, 0xde, 0x4de, 0x2de, 0x6de, 0x1de, 0x5de, 0x3de, 
+   0x7de, 0x3e, 0x43e, 0x23e, 0x63e, 0x13e, 0x53e, 0x33e, 0x73e, 0xbe, 
+   0x4be, 0x2be, 0x6be, 0x1be, 0x5be, 0x3be, 0x7be, 0x7e, 0x47e, 0x27e, 
+   0x67e, 0x17e, 0x57e, 0x37e, 0x77e, 0xfe, 0x4fe, 0x2fe, 0x6fe, 0x1fe, 
+   0x5fe, 0x3fe, 0x7fe, 0x1 
+};
+
+
+/*    
+* @brief  Floating-point Twiddle factors Table Generation    
+*/
+
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 16	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+const float32_t twiddleCoef_16[32] = {
+    1.000000000f,  0.000000000f,
+    0.923879533f,  0.382683432f,
+    0.707106781f,  0.707106781f,
+    0.382683432f,  0.923879533f,
+    0.000000000f,  1.000000000f,
+   -0.382683432f,  0.923879533f,
+   -0.707106781f,  0.707106781f,
+   -0.923879533f,  0.382683432f,
+   -1.000000000f,  0.000000000f,
+   -0.923879533f, -0.382683432f,
+   -0.707106781f, -0.707106781f,
+   -0.382683432f, -0.923879533f,
+   -0.000000000f, -1.000000000f,
+    0.382683432f, -0.923879533f,
+    0.707106781f, -0.707106781f,
+    0.923879533f, -0.382683432f
+};
+
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 32	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+const float32_t twiddleCoef_32[64] = {
+    1.000000000f,  0.000000000f,
+    0.980785280f,  0.195090322f,
+    0.923879533f,  0.382683432f,
+    0.831469612f,  0.555570233f,
+    0.707106781f,  0.707106781f,
+    0.555570233f,  0.831469612f,
+    0.382683432f,  0.923879533f,
+    0.195090322f,  0.980785280f,
+    0.000000000f,  1.000000000f,
+   -0.195090322f,  0.980785280f,
+   -0.382683432f,  0.923879533f,
+   -0.555570233f,  0.831469612f,
+   -0.707106781f,  0.707106781f,
+   -0.831469612f,  0.555570233f,
+   -0.923879533f,  0.382683432f,
+   -0.980785280f,  0.195090322f,
+   -1.000000000f,  0.000000000f,
+   -0.980785280f, -0.195090322f,
+   -0.923879533f, -0.382683432f,
+   -0.831469612f, -0.555570233f,
+   -0.707106781f, -0.707106781f,
+   -0.555570233f, -0.831469612f,
+   -0.382683432f, -0.923879533f,
+   -0.195090322f, -0.980785280f,
+   -0.000000000f, -1.000000000f,
+    0.195090322f, -0.980785280f,
+    0.382683432f, -0.923879533f,
+    0.555570233f, -0.831469612f,
+    0.707106781f, -0.707106781f,
+    0.831469612f, -0.555570233f,
+    0.923879533f, -0.382683432f,
+    0.980785280f, -0.195090322f
+};
+
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 64	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+const float32_t twiddleCoef_64[128] = {
+    1.000000000f,  0.000000000f,
+    0.995184727f,  0.098017140f,
+    0.980785280f,  0.195090322f,
+    0.956940336f,  0.290284677f,
+    0.923879533f,  0.382683432f,
+    0.881921264f,  0.471396737f,
+    0.831469612f,  0.555570233f,
+    0.773010453f,  0.634393284f,
+    0.707106781f,  0.707106781f,
+    0.634393284f,  0.773010453f,
+    0.555570233f,  0.831469612f,
+    0.471396737f,  0.881921264f,
+    0.382683432f,  0.923879533f,
+    0.290284677f,  0.956940336f,
+    0.195090322f,  0.980785280f,
+    0.098017140f,  0.995184727f,
+    0.000000000f,  1.000000000f,
+   -0.098017140f,  0.995184727f,
+   -0.195090322f,  0.980785280f,
+   -0.290284677f,  0.956940336f,
+   -0.382683432f,  0.923879533f,
+   -0.471396737f,  0.881921264f,
+   -0.555570233f,  0.831469612f,
+   -0.634393284f,  0.773010453f,
+   -0.707106781f,  0.707106781f,
+   -0.773010453f,  0.634393284f,
+   -0.831469612f,  0.555570233f,
+   -0.881921264f,  0.471396737f,
+   -0.923879533f,  0.382683432f,
+   -0.956940336f,  0.290284677f,
+   -0.980785280f,  0.195090322f,
+   -0.995184727f,  0.098017140f,
+   -1.000000000f,  0.000000000f,
+   -0.995184727f, -0.098017140f,
+   -0.980785280f, -0.195090322f,
+   -0.956940336f, -0.290284677f,
+   -0.923879533f, -0.382683432f,
+   -0.881921264f, -0.471396737f,
+   -0.831469612f, -0.555570233f,
+   -0.773010453f, -0.634393284f,
+   -0.707106781f, -0.707106781f,
+   -0.634393284f, -0.773010453f,
+   -0.555570233f, -0.831469612f,
+   -0.471396737f, -0.881921264f,
+   -0.382683432f, -0.923879533f,
+   -0.290284677f, -0.956940336f,
+   -0.195090322f, -0.980785280f,
+   -0.098017140f, -0.995184727f,
+   -0.000000000f, -1.000000000f,
+    0.098017140f, -0.995184727f,
+    0.195090322f, -0.980785280f,
+    0.290284677f, -0.956940336f,
+    0.382683432f, -0.923879533f,
+    0.471396737f, -0.881921264f,
+    0.555570233f, -0.831469612f,
+    0.634393284f, -0.773010453f,
+    0.707106781f, -0.707106781f,
+    0.773010453f, -0.634393284f,
+    0.831469612f, -0.555570233f,
+    0.881921264f, -0.471396737f,
+    0.923879533f, -0.382683432f,
+    0.956940336f, -0.290284677f,
+    0.980785280f, -0.195090322f,
+    0.995184727f, -0.098017140f
+};
+
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 128	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+
+const float32_t twiddleCoef_128[256] = {
+    1.000000000f	,	0.000000000f	,
+    0.998795456f	,	0.049067674f	,
+    0.995184727f	,	0.098017140f	,
+    0.989176510f	,	0.146730474f	,
+    0.980785280f	,	0.195090322f	,
+    0.970031253f	,	0.242980180f	,
+    0.956940336f	,	0.290284677f	,
+    0.941544065f	,	0.336889853f	,
+    0.923879533f	,	0.382683432f	,
+    0.903989293f	,	0.427555093f	,
+    0.881921264f	,	0.471396737f	,
+    0.857728610f	,	0.514102744f	,
+    0.831469612f	,	0.555570233f	,
+    0.803207531f	,	0.595699304f	,
+    0.773010453f	,	0.634393284f	,
+    0.740951125f	,	0.671558955f	,
+    0.707106781f	,	0.707106781f	,
+    0.671558955f	,	0.740951125f	,
+    0.634393284f	,	0.773010453f	,
+    0.595699304f	,	0.803207531f	,
+    0.555570233f	,	0.831469612f	,
+    0.514102744f	,	0.857728610f	,
+    0.471396737f	,	0.881921264f	,
+    0.427555093f	,	0.903989293f	,
+    0.382683432f	,	0.923879533f	,
+    0.336889853f	,	0.941544065f	,
+    0.290284677f	,	0.956940336f	,
+    0.242980180f	,	0.970031253f	,
+    0.195090322f	,	0.980785280f	,
+    0.146730474f	,	0.989176510f	,
+    0.098017140f	,	0.995184727f	,
+    0.049067674f	,	0.998795456f	,
+    0.000000000f	,	1.000000000f	,
+    -0.049067674f	,	0.998795456f	,
+    -0.098017140f	,	0.995184727f	,
+    -0.146730474f	,	0.989176510f	,
+    -0.195090322f	,	0.980785280f	,
+    -0.242980180f	,	0.970031253f	,
+    -0.290284677f	,	0.956940336f	,
+    -0.336889853f	,	0.941544065f	,
+    -0.382683432f	,	0.923879533f	,
+    -0.427555093f	,	0.903989293f	,
+    -0.471396737f	,	0.881921264f	,
+    -0.514102744f	,	0.857728610f	,
+    -0.555570233f	,	0.831469612f	,
+    -0.595699304f	,	0.803207531f	,
+    -0.634393284f	,	0.773010453f	,
+    -0.671558955f	,	0.740951125f	,
+    -0.707106781f	,	0.707106781f	,
+    -0.740951125f	,	0.671558955f	,
+    -0.773010453f	,	0.634393284f	,
+    -0.803207531f	,	0.595699304f	,
+    -0.831469612f	,	0.555570233f	,
+    -0.857728610f	,	0.514102744f	,
+    -0.881921264f	,	0.471396737f	,
+    -0.903989293f	,	0.427555093f	,
+    -0.923879533f	,	0.382683432f	,
+    -0.941544065f	,	0.336889853f	,
+    -0.956940336f	,	0.290284677f	,
+    -0.970031253f	,	0.242980180f	,
+    -0.980785280f	,	0.195090322f	,
+    -0.989176510f	,	0.146730474f	,
+    -0.995184727f	,	0.098017140f	,
+    -0.998795456f	,	0.049067674f	,
+    -1.000000000f	,	0.000000000f	,
+    -0.998795456f	,	-0.049067674f	,
+    -0.995184727f	,	-0.098017140f	,
+    -0.989176510f	,	-0.146730474f	,
+    -0.980785280f	,	-0.195090322f	,
+    -0.970031253f	,	-0.242980180f	,
+    -0.956940336f	,	-0.290284677f	,
+    -0.941544065f	,	-0.336889853f	,
+    -0.923879533f	,	-0.382683432f	,
+    -0.903989293f	,	-0.427555093f	,
+    -0.881921264f	,	-0.471396737f	,
+    -0.857728610f	,	-0.514102744f	,
+    -0.831469612f	,	-0.555570233f	,
+    -0.803207531f	,	-0.595699304f	,
+    -0.773010453f	,	-0.634393284f	,
+    -0.740951125f	,	-0.671558955f	,
+    -0.707106781f	,	-0.707106781f	,
+    -0.671558955f	,	-0.740951125f	,
+    -0.634393284f	,	-0.773010453f	,
+    -0.595699304f	,	-0.803207531f	,
+    -0.555570233f	,	-0.831469612f	,
+    -0.514102744f	,	-0.857728610f	,
+    -0.471396737f	,	-0.881921264f	,
+    -0.427555093f	,	-0.903989293f	,
+    -0.382683432f	,	-0.923879533f	,
+    -0.336889853f	,	-0.941544065f	,
+    -0.290284677f	,	-0.956940336f	,
+    -0.242980180f	,	-0.970031253f	,
+    -0.195090322f	,	-0.980785280f	,
+    -0.146730474f	,	-0.989176510f	,
+    -0.098017140f	,	-0.995184727f	,
+    -0.049067674f	,	-0.998795456f	,
+    -0.000000000f	,	-1.000000000f	,
+    0.049067674f	,	-0.998795456f	,
+    0.098017140f	,	-0.995184727f	,
+    0.146730474f	,	-0.989176510f	,
+    0.195090322f	,	-0.980785280f	,
+    0.242980180f	,	-0.970031253f	,
+    0.290284677f	,	-0.956940336f	,
+    0.336889853f	,	-0.941544065f	,
+    0.382683432f	,	-0.923879533f	,
+    0.427555093f	,	-0.903989293f	,
+    0.471396737f	,	-0.881921264f	,
+    0.514102744f	,	-0.857728610f	,
+    0.555570233f	,	-0.831469612f	,
+    0.595699304f	,	-0.803207531f	,
+    0.634393284f	,	-0.773010453f	,
+    0.671558955f	,	-0.740951125f	,
+    0.707106781f	,	-0.707106781f	,
+    0.740951125f	,	-0.671558955f	,
+    0.773010453f	,	-0.634393284f	,
+    0.803207531f	,	-0.595699304f	,
+    0.831469612f	,	-0.555570233f	,
+    0.857728610f	,	-0.514102744f	,
+    0.881921264f	,	-0.471396737f	,
+    0.903989293f	,	-0.427555093f	,
+    0.923879533f	,	-0.382683432f	,
+    0.941544065f	,	-0.336889853f	,
+    0.956940336f	,	-0.290284677f	,
+    0.970031253f	,	-0.242980180f	,
+    0.980785280f	,	-0.195090322f	,
+    0.989176510f	,	-0.146730474f	,
+    0.995184727f	,	-0.098017140f	,
+    0.998795456f	,	-0.049067674f
+};
+
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 256	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+const float32_t twiddleCoef_256[512] = {
+    1.000000000f,  0.000000000f,
+    0.999698819f,  0.024541229f,
+    0.998795456f,  0.049067674f,
+    0.997290457f,  0.073564564f,
+    0.995184727f,  0.098017140f,
+    0.992479535f,  0.122410675f,
+    0.989176510f,  0.146730474f,
+    0.985277642f,  0.170961889f,
+    0.980785280f,  0.195090322f,
+    0.975702130f,  0.219101240f,
+    0.970031253f,  0.242980180f,
+    0.963776066f,  0.266712757f,
+    0.956940336f,  0.290284677f,
+    0.949528181f,  0.313681740f,
+    0.941544065f,  0.336889853f,
+    0.932992799f,  0.359895037f,
+    0.923879533f,  0.382683432f,
+    0.914209756f,  0.405241314f,
+    0.903989293f,  0.427555093f,
+    0.893224301f,  0.449611330f,
+    0.881921264f,  0.471396737f,
+    0.870086991f,  0.492898192f,
+    0.857728610f,  0.514102744f,
+    0.844853565f,  0.534997620f,
+    0.831469612f,  0.555570233f,
+    0.817584813f,  0.575808191f,
+    0.803207531f,  0.595699304f,
+    0.788346428f,  0.615231591f,
+    0.773010453f,  0.634393284f,
+    0.757208847f,  0.653172843f,
+    0.740951125f,  0.671558955f,
+    0.724247083f,  0.689540545f,
+    0.707106781f,  0.707106781f,
+    0.689540545f,  0.724247083f,
+    0.671558955f,  0.740951125f,
+    0.653172843f,  0.757208847f,
+    0.634393284f,  0.773010453f,
+    0.615231591f,  0.788346428f,
+    0.595699304f,  0.803207531f,
+    0.575808191f,  0.817584813f,
+    0.555570233f,  0.831469612f,
+    0.534997620f,  0.844853565f,
+    0.514102744f,  0.857728610f,
+    0.492898192f,  0.870086991f,
+    0.471396737f,  0.881921264f,
+    0.449611330f,  0.893224301f,
+    0.427555093f,  0.903989293f,
+    0.405241314f,  0.914209756f,
+    0.382683432f,  0.923879533f,
+    0.359895037f,  0.932992799f,
+    0.336889853f,  0.941544065f,
+    0.313681740f,  0.949528181f,
+    0.290284677f,  0.956940336f,
+    0.266712757f,  0.963776066f,
+    0.242980180f,  0.970031253f,
+    0.219101240f,  0.975702130f,
+    0.195090322f,  0.980785280f,
+    0.170961889f,  0.985277642f,
+    0.146730474f,  0.989176510f,
+    0.122410675f,  0.992479535f,
+    0.098017140f,  0.995184727f,
+    0.073564564f,  0.997290457f,
+    0.049067674f,  0.998795456f,
+    0.024541229f,  0.999698819f,
+    0.000000000f,  1.000000000f,
+   -0.024541229f,  0.999698819f,
+   -0.049067674f,  0.998795456f,
+   -0.073564564f,  0.997290457f,
+   -0.098017140f,  0.995184727f,
+   -0.122410675f,  0.992479535f,
+   -0.146730474f,  0.989176510f,
+   -0.170961889f,  0.985277642f,
+   -0.195090322f,  0.980785280f,
+   -0.219101240f,  0.975702130f,
+   -0.242980180f,  0.970031253f,
+   -0.266712757f,  0.963776066f,
+   -0.290284677f,  0.956940336f,
+   -0.313681740f,  0.949528181f,
+   -0.336889853f,  0.941544065f,
+   -0.359895037f,  0.932992799f,
+   -0.382683432f,  0.923879533f,
+   -0.405241314f,  0.914209756f,
+   -0.427555093f,  0.903989293f,
+   -0.449611330f,  0.893224301f,
+   -0.471396737f,  0.881921264f,
+   -0.492898192f,  0.870086991f,
+   -0.514102744f,  0.857728610f,
+   -0.534997620f,  0.844853565f,
+   -0.555570233f,  0.831469612f,
+   -0.575808191f,  0.817584813f,
+   -0.595699304f,  0.803207531f,
+   -0.615231591f,  0.788346428f,
+   -0.634393284f,  0.773010453f,
+   -0.653172843f,  0.757208847f,
+   -0.671558955f,  0.740951125f,
+   -0.689540545f,  0.724247083f,
+   -0.707106781f,  0.707106781f,
+   -0.724247083f,  0.689540545f,
+   -0.740951125f,  0.671558955f,
+   -0.757208847f,  0.653172843f,
+   -0.773010453f,  0.634393284f,
+   -0.788346428f,  0.615231591f,
+   -0.803207531f,  0.595699304f,
+   -0.817584813f,  0.575808191f,
+   -0.831469612f,  0.555570233f,
+   -0.844853565f,  0.534997620f,
+   -0.857728610f,  0.514102744f,
+   -0.870086991f,  0.492898192f,
+   -0.881921264f,  0.471396737f,
+   -0.893224301f,  0.449611330f,
+   -0.903989293f,  0.427555093f,
+   -0.914209756f,  0.405241314f,
+   -0.923879533f,  0.382683432f,
+   -0.932992799f,  0.359895037f,
+   -0.941544065f,  0.336889853f,
+   -0.949528181f,  0.313681740f,
+   -0.956940336f,  0.290284677f,
+   -0.963776066f,  0.266712757f,
+   -0.970031253f,  0.242980180f,
+   -0.975702130f,  0.219101240f,
+   -0.980785280f,  0.195090322f,
+   -0.985277642f,  0.170961889f,
+   -0.989176510f,  0.146730474f,
+   -0.992479535f,  0.122410675f,
+   -0.995184727f,  0.098017140f,
+   -0.997290457f,  0.073564564f,
+   -0.998795456f,  0.049067674f,
+   -0.999698819f,  0.024541229f,
+   -1.000000000f,  0.000000000f,
+   -0.999698819f, -0.024541229f,
+   -0.998795456f, -0.049067674f,
+   -0.997290457f, -0.073564564f,
+   -0.995184727f, -0.098017140f,
+   -0.992479535f, -0.122410675f,
+   -0.989176510f, -0.146730474f,
+   -0.985277642f, -0.170961889f,
+   -0.980785280f, -0.195090322f,
+   -0.975702130f, -0.219101240f,
+   -0.970031253f, -0.242980180f,
+   -0.963776066f, -0.266712757f,
+   -0.956940336f, -0.290284677f,
+   -0.949528181f, -0.313681740f,
+   -0.941544065f, -0.336889853f,
+   -0.932992799f, -0.359895037f,
+   -0.923879533f, -0.382683432f,
+   -0.914209756f, -0.405241314f,
+   -0.903989293f, -0.427555093f,
+   -0.893224301f, -0.449611330f,
+   -0.881921264f, -0.471396737f,
+   -0.870086991f, -0.492898192f,
+   -0.857728610f, -0.514102744f,
+   -0.844853565f, -0.534997620f,
+   -0.831469612f, -0.555570233f,
+   -0.817584813f, -0.575808191f,
+   -0.803207531f, -0.595699304f,
+   -0.788346428f, -0.615231591f,
+   -0.773010453f, -0.634393284f,
+   -0.757208847f, -0.653172843f,
+   -0.740951125f, -0.671558955f,
+   -0.724247083f, -0.689540545f,
+   -0.707106781f, -0.707106781f,
+   -0.689540545f, -0.724247083f,
+   -0.671558955f, -0.740951125f,
+   -0.653172843f, -0.757208847f,
+   -0.634393284f, -0.773010453f,
+   -0.615231591f, -0.788346428f,
+   -0.595699304f, -0.803207531f,
+   -0.575808191f, -0.817584813f,
+   -0.555570233f, -0.831469612f,
+   -0.534997620f, -0.844853565f,
+   -0.514102744f, -0.857728610f,
+   -0.492898192f, -0.870086991f,
+   -0.471396737f, -0.881921264f,
+   -0.449611330f, -0.893224301f,
+   -0.427555093f, -0.903989293f,
+   -0.405241314f, -0.914209756f,
+   -0.382683432f, -0.923879533f,
+   -0.359895037f, -0.932992799f,
+   -0.336889853f, -0.941544065f,
+   -0.313681740f, -0.949528181f,
+   -0.290284677f, -0.956940336f,
+   -0.266712757f, -0.963776066f,
+   -0.242980180f, -0.970031253f,
+   -0.219101240f, -0.975702130f,
+   -0.195090322f, -0.980785280f,
+   -0.170961889f, -0.985277642f,
+   -0.146730474f, -0.989176510f,
+   -0.122410675f, -0.992479535f,
+   -0.098017140f, -0.995184727f,
+   -0.073564564f, -0.997290457f,
+   -0.049067674f, -0.998795456f,
+   -0.024541229f, -0.999698819f,
+   -0.000000000f, -1.000000000f,
+    0.024541229f, -0.999698819f,
+    0.049067674f, -0.998795456f,
+    0.073564564f, -0.997290457f,
+    0.098017140f, -0.995184727f,
+    0.122410675f, -0.992479535f,
+    0.146730474f, -0.989176510f,
+    0.170961889f, -0.985277642f,
+    0.195090322f, -0.980785280f,
+    0.219101240f, -0.975702130f,
+    0.242980180f, -0.970031253f,
+    0.266712757f, -0.963776066f,
+    0.290284677f, -0.956940336f,
+    0.313681740f, -0.949528181f,
+    0.336889853f, -0.941544065f,
+    0.359895037f, -0.932992799f,
+    0.382683432f, -0.923879533f,
+    0.405241314f, -0.914209756f,
+    0.427555093f, -0.903989293f,
+    0.449611330f, -0.893224301f,
+    0.471396737f, -0.881921264f,
+    0.492898192f, -0.870086991f,
+    0.514102744f, -0.857728610f,
+    0.534997620f, -0.844853565f,
+    0.555570233f, -0.831469612f,
+    0.575808191f, -0.817584813f,
+    0.595699304f, -0.803207531f,
+    0.615231591f, -0.788346428f,
+    0.634393284f, -0.773010453f,
+    0.653172843f, -0.757208847f,
+    0.671558955f, -0.740951125f,
+    0.689540545f, -0.724247083f,
+    0.707106781f, -0.707106781f,
+    0.724247083f, -0.689540545f,
+    0.740951125f, -0.671558955f,
+    0.757208847f, -0.653172843f,
+    0.773010453f, -0.634393284f,
+    0.788346428f, -0.615231591f,
+    0.803207531f, -0.595699304f,
+    0.817584813f, -0.575808191f,
+    0.831469612f, -0.555570233f,
+    0.844853565f, -0.534997620f,
+    0.857728610f, -0.514102744f,
+    0.870086991f, -0.492898192f,
+    0.881921264f, -0.471396737f,
+    0.893224301f, -0.449611330f,
+    0.903989293f, -0.427555093f,
+    0.914209756f, -0.405241314f,
+    0.923879533f, -0.382683432f,
+    0.932992799f, -0.359895037f,
+    0.941544065f, -0.336889853f,
+    0.949528181f, -0.313681740f,
+    0.956940336f, -0.290284677f,
+    0.963776066f, -0.266712757f,
+    0.970031253f, -0.242980180f,
+    0.975702130f, -0.219101240f,
+    0.980785280f, -0.195090322f,
+    0.985277642f, -0.170961889f,
+    0.989176510f, -0.146730474f,
+    0.992479535f, -0.122410675f,
+    0.995184727f, -0.098017140f,
+    0.997290457f, -0.073564564f,
+    0.998795456f, -0.049067674f,
+    0.999698819f, -0.024541229f
+};
+
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 512	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+const float32_t twiddleCoef_512[1024] = {
+    1.000000000f,  0.000000000f,
+    0.999924702f,  0.012271538f,
+    0.999698819f,  0.024541229f,
+    0.999322385f,  0.036807223f,
+    0.998795456f,  0.049067674f,
+    0.998118113f,  0.061320736f,
+    0.997290457f,  0.073564564f,
+    0.996312612f,  0.085797312f,
+    0.995184727f,  0.098017140f,
+    0.993906970f,  0.110222207f,
+    0.992479535f,  0.122410675f,
+    0.990902635f,  0.134580709f,
+    0.989176510f,  0.146730474f,
+    0.987301418f,  0.158858143f,
+    0.985277642f,  0.170961889f,
+    0.983105487f,  0.183039888f,
+    0.980785280f,  0.195090322f,
+    0.978317371f,  0.207111376f,
+    0.975702130f,  0.219101240f,
+    0.972939952f,  0.231058108f,
+    0.970031253f,  0.242980180f,
+    0.966976471f,  0.254865660f,
+    0.963776066f,  0.266712757f,
+    0.960430519f,  0.278519689f,
+    0.956940336f,  0.290284677f,
+    0.953306040f,  0.302005949f,
+    0.949528181f,  0.313681740f,
+    0.945607325f,  0.325310292f,
+    0.941544065f,  0.336889853f,
+    0.937339012f,  0.348418680f,
+    0.932992799f,  0.359895037f,
+    0.928506080f,  0.371317194f,
+    0.923879533f,  0.382683432f,
+    0.919113852f,  0.393992040f,
+    0.914209756f,  0.405241314f,
+    0.909167983f,  0.416429560f,
+    0.903989293f,  0.427555093f,
+    0.898674466f,  0.438616239f,
+    0.893224301f,  0.449611330f,
+    0.887639620f,  0.460538711f,
+    0.881921264f,  0.471396737f,
+    0.876070094f,  0.482183772f,
+    0.870086991f,  0.492898192f,
+    0.863972856f,  0.503538384f,
+    0.857728610f,  0.514102744f,
+    0.851355193f,  0.524589683f,
+    0.844853565f,  0.534997620f,
+    0.838224706f,  0.545324988f,
+    0.831469612f,  0.555570233f,
+    0.824589303f,  0.565731811f,
+    0.817584813f,  0.575808191f,
+    0.810457198f,  0.585797857f,
+    0.803207531f,  0.595699304f,
+    0.795836905f,  0.605511041f,
+    0.788346428f,  0.615231591f,
+    0.780737229f,  0.624859488f,
+    0.773010453f,  0.634393284f,
+    0.765167266f,  0.643831543f,
+    0.757208847f,  0.653172843f,
+    0.749136395f,  0.662415778f,
+    0.740951125f,  0.671558955f,
+    0.732654272f,  0.680600998f,
+    0.724247083f,  0.689540545f,
+    0.715730825f,  0.698376249f,
+    0.707106781f,  0.707106781f,
+    0.698376249f,  0.715730825f,
+    0.689540545f,  0.724247083f,
+    0.680600998f,  0.732654272f,
+    0.671558955f,  0.740951125f,
+    0.662415778f,  0.749136395f,
+    0.653172843f,  0.757208847f,
+    0.643831543f,  0.765167266f,
+    0.634393284f,  0.773010453f,
+    0.624859488f,  0.780737229f,
+    0.615231591f,  0.788346428f,
+    0.605511041f,  0.795836905f,
+    0.595699304f,  0.803207531f,
+    0.585797857f,  0.810457198f,
+    0.575808191f,  0.817584813f,
+    0.565731811f,  0.824589303f,
+    0.555570233f,  0.831469612f,
+    0.545324988f,  0.838224706f,
+    0.534997620f,  0.844853565f,
+    0.524589683f,  0.851355193f,
+    0.514102744f,  0.857728610f,
+    0.503538384f,  0.863972856f,
+    0.492898192f,  0.870086991f,
+    0.482183772f,  0.876070094f,
+    0.471396737f,  0.881921264f,
+    0.460538711f,  0.887639620f,
+    0.449611330f,  0.893224301f,
+    0.438616239f,  0.898674466f,
+    0.427555093f,  0.903989293f,
+    0.416429560f,  0.909167983f,
+    0.405241314f,  0.914209756f,
+    0.393992040f,  0.919113852f,
+    0.382683432f,  0.923879533f,
+    0.371317194f,  0.928506080f,
+    0.359895037f,  0.932992799f,
+    0.348418680f,  0.937339012f,
+    0.336889853f,  0.941544065f,
+    0.325310292f,  0.945607325f,
+    0.313681740f,  0.949528181f,
+    0.302005949f,  0.953306040f,
+    0.290284677f,  0.956940336f,
+    0.278519689f,  0.960430519f,
+    0.266712757f,  0.963776066f,
+    0.254865660f,  0.966976471f,
+    0.242980180f,  0.970031253f,
+    0.231058108f,  0.972939952f,
+    0.219101240f,  0.975702130f,
+    0.207111376f,  0.978317371f,
+    0.195090322f,  0.980785280f,
+    0.183039888f,  0.983105487f,
+    0.170961889f,  0.985277642f,
+    0.158858143f,  0.987301418f,
+    0.146730474f,  0.989176510f,
+    0.134580709f,  0.990902635f,
+    0.122410675f,  0.992479535f,
+    0.110222207f,  0.993906970f,
+    0.098017140f,  0.995184727f,
+    0.085797312f,  0.996312612f,
+    0.073564564f,  0.997290457f,
+    0.061320736f,  0.998118113f,
+    0.049067674f,  0.998795456f,
+    0.036807223f,  0.999322385f,
+    0.024541229f,  0.999698819f,
+    0.012271538f,  0.999924702f,
+    0.000000000f,  1.000000000f,
+   -0.012271538f,  0.999924702f,
+   -0.024541229f,  0.999698819f,
+   -0.036807223f,  0.999322385f,
+   -0.049067674f,  0.998795456f,
+   -0.061320736f,  0.998118113f,
+   -0.073564564f,  0.997290457f,
+   -0.085797312f,  0.996312612f,
+   -0.098017140f,  0.995184727f,
+   -0.110222207f,  0.993906970f,
+   -0.122410675f,  0.992479535f,
+   -0.134580709f,  0.990902635f,
+   -0.146730474f,  0.989176510f,
+   -0.158858143f,  0.987301418f,
+   -0.170961889f,  0.985277642f,
+   -0.183039888f,  0.983105487f,
+   -0.195090322f,  0.980785280f,
+   -0.207111376f,  0.978317371f,
+   -0.219101240f,  0.975702130f,
+   -0.231058108f,  0.972939952f,
+   -0.242980180f,  0.970031253f,
+   -0.254865660f,  0.966976471f,
+   -0.266712757f,  0.963776066f,
+   -0.278519689f,  0.960430519f,
+   -0.290284677f,  0.956940336f,
+   -0.302005949f,  0.953306040f,
+   -0.313681740f,  0.949528181f,
+   -0.325310292f,  0.945607325f,
+   -0.336889853f,  0.941544065f,
+   -0.348418680f,  0.937339012f,
+   -0.359895037f,  0.932992799f,
+   -0.371317194f,  0.928506080f,
+   -0.382683432f,  0.923879533f,
+   -0.393992040f,  0.919113852f,
+   -0.405241314f,  0.914209756f,
+   -0.416429560f,  0.909167983f,
+   -0.427555093f,  0.903989293f,
+   -0.438616239f,  0.898674466f,
+   -0.449611330f,  0.893224301f,
+   -0.460538711f,  0.887639620f,
+   -0.471396737f,  0.881921264f,
+   -0.482183772f,  0.876070094f,
+   -0.492898192f,  0.870086991f,
+   -0.503538384f,  0.863972856f,
+   -0.514102744f,  0.857728610f,
+   -0.524589683f,  0.851355193f,
+   -0.534997620f,  0.844853565f,
+   -0.545324988f,  0.838224706f,
+   -0.555570233f,  0.831469612f,
+   -0.565731811f,  0.824589303f,
+   -0.575808191f,  0.817584813f,
+   -0.585797857f,  0.810457198f,
+   -0.595699304f,  0.803207531f,
+   -0.605511041f,  0.795836905f,
+   -0.615231591f,  0.788346428f,
+   -0.624859488f,  0.780737229f,
+   -0.634393284f,  0.773010453f,
+   -0.643831543f,  0.765167266f,
+   -0.653172843f,  0.757208847f,
+   -0.662415778f,  0.749136395f,
+   -0.671558955f,  0.740951125f,
+   -0.680600998f,  0.732654272f,
+   -0.689540545f,  0.724247083f,
+   -0.698376249f,  0.715730825f,
+   -0.707106781f,  0.707106781f,
+   -0.715730825f,  0.698376249f,
+   -0.724247083f,  0.689540545f,
+   -0.732654272f,  0.680600998f,
+   -0.740951125f,  0.671558955f,
+   -0.749136395f,  0.662415778f,
+   -0.757208847f,  0.653172843f,
+   -0.765167266f,  0.643831543f,
+   -0.773010453f,  0.634393284f,
+   -0.780737229f,  0.624859488f,
+   -0.788346428f,  0.615231591f,
+   -0.795836905f,  0.605511041f,
+   -0.803207531f,  0.595699304f,
+   -0.810457198f,  0.585797857f,
+   -0.817584813f,  0.575808191f,
+   -0.824589303f,  0.565731811f,
+   -0.831469612f,  0.555570233f,
+   -0.838224706f,  0.545324988f,
+   -0.844853565f,  0.534997620f,
+   -0.851355193f,  0.524589683f,
+   -0.857728610f,  0.514102744f,
+   -0.863972856f,  0.503538384f,
+   -0.870086991f,  0.492898192f,
+   -0.876070094f,  0.482183772f,
+   -0.881921264f,  0.471396737f,
+   -0.887639620f,  0.460538711f,
+   -0.893224301f,  0.449611330f,
+   -0.898674466f,  0.438616239f,
+   -0.903989293f,  0.427555093f,
+   -0.909167983f,  0.416429560f,
+   -0.914209756f,  0.405241314f,
+   -0.919113852f,  0.393992040f,
+   -0.923879533f,  0.382683432f,
+   -0.928506080f,  0.371317194f,
+   -0.932992799f,  0.359895037f,
+   -0.937339012f,  0.348418680f,
+   -0.941544065f,  0.336889853f,
+   -0.945607325f,  0.325310292f,
+   -0.949528181f,  0.313681740f,
+   -0.953306040f,  0.302005949f,
+   -0.956940336f,  0.290284677f,
+   -0.960430519f,  0.278519689f,
+   -0.963776066f,  0.266712757f,
+   -0.966976471f,  0.254865660f,
+   -0.970031253f,  0.242980180f,
+   -0.972939952f,  0.231058108f,
+   -0.975702130f,  0.219101240f,
+   -0.978317371f,  0.207111376f,
+   -0.980785280f,  0.195090322f,
+   -0.983105487f,  0.183039888f,
+   -0.985277642f,  0.170961889f,
+   -0.987301418f,  0.158858143f,
+   -0.989176510f,  0.146730474f,
+   -0.990902635f,  0.134580709f,
+   -0.992479535f,  0.122410675f,
+   -0.993906970f,  0.110222207f,
+   -0.995184727f,  0.098017140f,
+   -0.996312612f,  0.085797312f,
+   -0.997290457f,  0.073564564f,
+   -0.998118113f,  0.061320736f,
+   -0.998795456f,  0.049067674f,
+   -0.999322385f,  0.036807223f,
+   -0.999698819f,  0.024541229f,
+   -0.999924702f,  0.012271538f,
+   -1.000000000f,  0.000000000f,
+   -0.999924702f, -0.012271538f,
+   -0.999698819f, -0.024541229f,
+   -0.999322385f, -0.036807223f,
+   -0.998795456f, -0.049067674f,
+   -0.998118113f, -0.061320736f,
+   -0.997290457f, -0.073564564f,
+   -0.996312612f, -0.085797312f,
+   -0.995184727f, -0.098017140f,
+   -0.993906970f, -0.110222207f,
+   -0.992479535f, -0.122410675f,
+   -0.990902635f, -0.134580709f,
+   -0.989176510f, -0.146730474f,
+   -0.987301418f, -0.158858143f,
+   -0.985277642f, -0.170961889f,
+   -0.983105487f, -0.183039888f,
+   -0.980785280f, -0.195090322f,
+   -0.978317371f, -0.207111376f,
+   -0.975702130f, -0.219101240f,
+   -0.972939952f, -0.231058108f,
+   -0.970031253f, -0.242980180f,
+   -0.966976471f, -0.254865660f,
+   -0.963776066f, -0.266712757f,
+   -0.960430519f, -0.278519689f,
+   -0.956940336f, -0.290284677f,
+   -0.953306040f, -0.302005949f,
+   -0.949528181f, -0.313681740f,
+   -0.945607325f, -0.325310292f,
+   -0.941544065f, -0.336889853f,
+   -0.937339012f, -0.348418680f,
+   -0.932992799f, -0.359895037f,
+   -0.928506080f, -0.371317194f,
+   -0.923879533f, -0.382683432f,
+   -0.919113852f, -0.393992040f,
+   -0.914209756f, -0.405241314f,
+   -0.909167983f, -0.416429560f,
+   -0.903989293f, -0.427555093f,
+   -0.898674466f, -0.438616239f,
+   -0.893224301f, -0.449611330f,
+   -0.887639620f, -0.460538711f,
+   -0.881921264f, -0.471396737f,
+   -0.876070094f, -0.482183772f,
+   -0.870086991f, -0.492898192f,
+   -0.863972856f, -0.503538384f,
+   -0.857728610f, -0.514102744f,
+   -0.851355193f, -0.524589683f,
+   -0.844853565f, -0.534997620f,
+   -0.838224706f, -0.545324988f,
+   -0.831469612f, -0.555570233f,
+   -0.824589303f, -0.565731811f,
+   -0.817584813f, -0.575808191f,
+   -0.810457198f, -0.585797857f,
+   -0.803207531f, -0.595699304f,
+   -0.795836905f, -0.605511041f,
+   -0.788346428f, -0.615231591f,
+   -0.780737229f, -0.624859488f,
+   -0.773010453f, -0.634393284f,
+   -0.765167266f, -0.643831543f,
+   -0.757208847f, -0.653172843f,
+   -0.749136395f, -0.662415778f,
+   -0.740951125f, -0.671558955f,
+   -0.732654272f, -0.680600998f,
+   -0.724247083f, -0.689540545f,
+   -0.715730825f, -0.698376249f,
+   -0.707106781f, -0.707106781f,
+   -0.698376249f, -0.715730825f,
+   -0.689540545f, -0.724247083f,
+   -0.680600998f, -0.732654272f,
+   -0.671558955f, -0.740951125f,
+   -0.662415778f, -0.749136395f,
+   -0.653172843f, -0.757208847f,
+   -0.643831543f, -0.765167266f,
+   -0.634393284f, -0.773010453f,
+   -0.624859488f, -0.780737229f,
+   -0.615231591f, -0.788346428f,
+   -0.605511041f, -0.795836905f,
+   -0.595699304f, -0.803207531f,
+   -0.585797857f, -0.810457198f,
+   -0.575808191f, -0.817584813f,
+   -0.565731811f, -0.824589303f,
+   -0.555570233f, -0.831469612f,
+   -0.545324988f, -0.838224706f,
+   -0.534997620f, -0.844853565f,
+   -0.524589683f, -0.851355193f,
+   -0.514102744f, -0.857728610f,
+   -0.503538384f, -0.863972856f,
+   -0.492898192f, -0.870086991f,
+   -0.482183772f, -0.876070094f,
+   -0.471396737f, -0.881921264f,
+   -0.460538711f, -0.887639620f,
+   -0.449611330f, -0.893224301f,
+   -0.438616239f, -0.898674466f,
+   -0.427555093f, -0.903989293f,
+   -0.416429560f, -0.909167983f,
+   -0.405241314f, -0.914209756f,
+   -0.393992040f, -0.919113852f,
+   -0.382683432f, -0.923879533f,
+   -0.371317194f, -0.928506080f,
+   -0.359895037f, -0.932992799f,
+   -0.348418680f, -0.937339012f,
+   -0.336889853f, -0.941544065f,
+   -0.325310292f, -0.945607325f,
+   -0.313681740f, -0.949528181f,
+   -0.302005949f, -0.953306040f,
+   -0.290284677f, -0.956940336f,
+   -0.278519689f, -0.960430519f,
+   -0.266712757f, -0.963776066f,
+   -0.254865660f, -0.966976471f,
+   -0.242980180f, -0.970031253f,
+   -0.231058108f, -0.972939952f,
+   -0.219101240f, -0.975702130f,
+   -0.207111376f, -0.978317371f,
+   -0.195090322f, -0.980785280f,
+   -0.183039888f, -0.983105487f,
+   -0.170961889f, -0.985277642f,
+   -0.158858143f, -0.987301418f,
+   -0.146730474f, -0.989176510f,
+   -0.134580709f, -0.990902635f,
+   -0.122410675f, -0.992479535f,
+   -0.110222207f, -0.993906970f,
+   -0.098017140f, -0.995184727f,
+   -0.085797312f, -0.996312612f,
+   -0.073564564f, -0.997290457f,
+   -0.061320736f, -0.998118113f,
+   -0.049067674f, -0.998795456f,
+   -0.036807223f, -0.999322385f,
+   -0.024541229f, -0.999698819f,
+   -0.012271538f, -0.999924702f,
+   -0.000000000f, -1.000000000f,
+    0.012271538f, -0.999924702f,
+    0.024541229f, -0.999698819f,
+    0.036807223f, -0.999322385f,
+    0.049067674f, -0.998795456f,
+    0.061320736f, -0.998118113f,
+    0.073564564f, -0.997290457f,
+    0.085797312f, -0.996312612f,
+    0.098017140f, -0.995184727f,
+    0.110222207f, -0.993906970f,
+    0.122410675f, -0.992479535f,
+    0.134580709f, -0.990902635f,
+    0.146730474f, -0.989176510f,
+    0.158858143f, -0.987301418f,
+    0.170961889f, -0.985277642f,
+    0.183039888f, -0.983105487f,
+    0.195090322f, -0.980785280f,
+    0.207111376f, -0.978317371f,
+    0.219101240f, -0.975702130f,
+    0.231058108f, -0.972939952f,
+    0.242980180f, -0.970031253f,
+    0.254865660f, -0.966976471f,
+    0.266712757f, -0.963776066f,
+    0.278519689f, -0.960430519f,
+    0.290284677f, -0.956940336f,
+    0.302005949f, -0.953306040f,
+    0.313681740f, -0.949528181f,
+    0.325310292f, -0.945607325f,
+    0.336889853f, -0.941544065f,
+    0.348418680f, -0.937339012f,
+    0.359895037f, -0.932992799f,
+    0.371317194f, -0.928506080f,
+    0.382683432f, -0.923879533f,
+    0.393992040f, -0.919113852f,
+    0.405241314f, -0.914209756f,
+    0.416429560f, -0.909167983f,
+    0.427555093f, -0.903989293f,
+    0.438616239f, -0.898674466f,
+    0.449611330f, -0.893224301f,
+    0.460538711f, -0.887639620f,
+    0.471396737f, -0.881921264f,
+    0.482183772f, -0.876070094f,
+    0.492898192f, -0.870086991f,
+    0.503538384f, -0.863972856f,
+    0.514102744f, -0.857728610f,
+    0.524589683f, -0.851355193f,
+    0.534997620f, -0.844853565f,
+    0.545324988f, -0.838224706f,
+    0.555570233f, -0.831469612f,
+    0.565731811f, -0.824589303f,
+    0.575808191f, -0.817584813f,
+    0.585797857f, -0.810457198f,
+    0.595699304f, -0.803207531f,
+    0.605511041f, -0.795836905f,
+    0.615231591f, -0.788346428f,
+    0.624859488f, -0.780737229f,
+    0.634393284f, -0.773010453f,
+    0.643831543f, -0.765167266f,
+    0.653172843f, -0.757208847f,
+    0.662415778f, -0.749136395f,
+    0.671558955f, -0.740951125f,
+    0.680600998f, -0.732654272f,
+    0.689540545f, -0.724247083f,
+    0.698376249f, -0.715730825f,
+    0.707106781f, -0.707106781f,
+    0.715730825f, -0.698376249f,
+    0.724247083f, -0.689540545f,
+    0.732654272f, -0.680600998f,
+    0.740951125f, -0.671558955f,
+    0.749136395f, -0.662415778f,
+    0.757208847f, -0.653172843f,
+    0.765167266f, -0.643831543f,
+    0.773010453f, -0.634393284f,
+    0.780737229f, -0.624859488f,
+    0.788346428f, -0.615231591f,
+    0.795836905f, -0.605511041f,
+    0.803207531f, -0.595699304f,
+    0.810457198f, -0.585797857f,
+    0.817584813f, -0.575808191f,
+    0.824589303f, -0.565731811f,
+    0.831469612f, -0.555570233f,
+    0.838224706f, -0.545324988f,
+    0.844853565f, -0.534997620f,
+    0.851355193f, -0.524589683f,
+    0.857728610f, -0.514102744f,
+    0.863972856f, -0.503538384f,
+    0.870086991f, -0.492898192f,
+    0.876070094f, -0.482183772f,
+    0.881921264f, -0.471396737f,
+    0.887639620f, -0.460538711f,
+    0.893224301f, -0.449611330f,
+    0.898674466f, -0.438616239f,
+    0.903989293f, -0.427555093f,
+    0.909167983f, -0.416429560f,
+    0.914209756f, -0.405241314f,
+    0.919113852f, -0.393992040f,
+    0.923879533f, -0.382683432f,
+    0.928506080f, -0.371317194f,
+    0.932992799f, -0.359895037f,
+    0.937339012f, -0.348418680f,
+    0.941544065f, -0.336889853f,
+    0.945607325f, -0.325310292f,
+    0.949528181f, -0.313681740f,
+    0.953306040f, -0.302005949f,
+    0.956940336f, -0.290284677f,
+    0.960430519f, -0.278519689f,
+    0.963776066f, -0.266712757f,
+    0.966976471f, -0.254865660f,
+    0.970031253f, -0.242980180f,
+    0.972939952f, -0.231058108f,
+    0.975702130f, -0.219101240f,
+    0.978317371f, -0.207111376f,
+    0.980785280f, -0.195090322f,
+    0.983105487f, -0.183039888f,
+    0.985277642f, -0.170961889f,
+    0.987301418f, -0.158858143f,
+    0.989176510f, -0.146730474f,
+    0.990902635f, -0.134580709f,
+    0.992479535f, -0.122410675f,
+    0.993906970f, -0.110222207f,
+    0.995184727f, -0.098017140f,
+    0.996312612f, -0.085797312f,
+    0.997290457f, -0.073564564f,
+    0.998118113f, -0.061320736f,
+    0.998795456f, -0.049067674f,
+    0.999322385f, -0.036807223f,
+    0.999698819f, -0.024541229f,
+    0.999924702f, -0.012271538f
+};
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 1024	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+const float32_t twiddleCoef_1024[2048] = {
+1.000000000f	,	0.000000000f	,
+0.999981175f	,	0.006135885f	,
+0.999924702f	,	0.012271538f	,
+0.999830582f	,	0.018406730f	,
+0.999698819f	,	0.024541229f	,
+0.999529418f	,	0.030674803f	,
+0.999322385f	,	0.036807223f	,
+0.999077728f	,	0.042938257f	,
+0.998795456f	,	0.049067674f	,
+0.998475581f	,	0.055195244f	,
+0.998118113f	,	0.061320736f	,
+0.997723067f	,	0.067443920f	,
+0.997290457f	,	0.073564564f	,
+0.996820299f	,	0.079682438f	,
+0.996312612f	,	0.085797312f	,
+0.995767414f	,	0.091908956f	,
+0.995184727f	,	0.098017140f	,
+0.994564571f	,	0.104121634f	,
+0.993906970f	,	0.110222207f	,
+0.993211949f	,	0.116318631f	,
+0.992479535f	,	0.122410675f	,
+0.991709754f	,	0.128498111f	,
+0.990902635f	,	0.134580709f	,
+0.990058210f	,	0.140658239f	,
+0.989176510f	,	0.146730474f	,
+0.988257568f	,	0.152797185f	,
+0.987301418f	,	0.158858143f	,
+0.986308097f	,	0.164913120f	,
+0.985277642f	,	0.170961889f	,
+0.984210092f	,	0.177004220f	,
+0.983105487f	,	0.183039888f	,
+0.981963869f	,	0.189068664f	,
+0.980785280f	,	0.195090322f	,
+0.979569766f	,	0.201104635f	,
+0.978317371f	,	0.207111376f	,
+0.977028143f	,	0.213110320f	,
+0.975702130f	,	0.219101240f	,
+0.974339383f	,	0.225083911f	,
+0.972939952f	,	0.231058108f	,
+0.971503891f	,	0.237023606f	,
+0.970031253f	,	0.242980180f	,
+0.968522094f	,	0.248927606f	,
+0.966976471f	,	0.254865660f	,
+0.965394442f	,	0.260794118f	,
+0.963776066f	,	0.266712757f	,
+0.962121404f	,	0.272621355f	,
+0.960430519f	,	0.278519689f	,
+0.958703475f	,	0.284407537f	,
+0.956940336f	,	0.290284677f	,
+0.955141168f	,	0.296150888f	,
+0.953306040f	,	0.302005949f	,
+0.951435021f	,	0.307849640f	,
+0.949528181f	,	0.313681740f	,
+0.947585591f	,	0.319502031f	,
+0.945607325f	,	0.325310292f	,
+0.943593458f	,	0.331106306f	,
+0.941544065f	,	0.336889853f	,
+0.939459224f	,	0.342660717f	,
+0.937339012f	,	0.348418680f	,
+0.935183510f	,	0.354163525f	,
+0.932992799f	,	0.359895037f	,
+0.930766961f	,	0.365612998f	,
+0.928506080f	,	0.371317194f	,
+0.926210242f	,	0.377007410f	,
+0.923879533f	,	0.382683432f	,
+0.921514039f	,	0.388345047f	,
+0.919113852f	,	0.393992040f	,
+0.916679060f	,	0.399624200f	,
+0.914209756f	,	0.405241314f	,
+0.911706032f	,	0.410843171f	,
+0.909167983f	,	0.416429560f	,
+0.906595705f	,	0.422000271f	,
+0.903989293f	,	0.427555093f	,
+0.901348847f	,	0.433093819f	,
+0.898674466f	,	0.438616239f	,
+0.895966250f	,	0.444122145f	,
+0.893224301f	,	0.449611330f	,
+0.890448723f	,	0.455083587f	,
+0.887639620f	,	0.460538711f	,
+0.884797098f	,	0.465976496f	,
+0.881921264f	,	0.471396737f	,
+0.879012226f	,	0.476799230f	,
+0.876070094f	,	0.482183772f	,
+0.873094978f	,	0.487550160f	,
+0.870086991f	,	0.492898192f	,
+0.867046246f	,	0.498227667f	,
+0.863972856f	,	0.503538384f	,
+0.860866939f	,	0.508830143f	,
+0.857728610f	,	0.514102744f	,
+0.854557988f	,	0.519355990f	,
+0.851355193f	,	0.524589683f	,
+0.848120345f	,	0.529803625f	,
+0.844853565f	,	0.534997620f	,
+0.841554977f	,	0.540171473f	,
+0.838224706f	,	0.545324988f	,
+0.834862875f	,	0.550457973f	,
+0.831469612f	,	0.555570233f	,
+0.828045045f	,	0.560661576f	,
+0.824589303f	,	0.565731811f	,
+0.821102515f	,	0.570780746f	,
+0.817584813f	,	0.575808191f	,
+0.814036330f	,	0.580813958f	,
+0.810457198f	,	0.585797857f	,
+0.806847554f	,	0.590759702f	,
+0.803207531f	,	0.595699304f	,
+0.799537269f	,	0.600616479f	,
+0.795836905f	,	0.605511041f	,
+0.792106577f	,	0.610382806f	,
+0.788346428f	,	0.615231591f	,
+0.784556597f	,	0.620057212f	,
+0.780737229f	,	0.624859488f	,
+0.776888466f	,	0.629638239f	,
+0.773010453f	,	0.634393284f	,
+0.769103338f	,	0.639124445f	,
+0.765167266f	,	0.643831543f	,
+0.761202385f	,	0.648514401f	,
+0.757208847f	,	0.653172843f	,
+0.753186799f	,	0.657806693f	,
+0.749136395f	,	0.662415778f	,
+0.745057785f	,	0.666999922f	,
+0.740951125f	,	0.671558955f	,
+0.736816569f	,	0.676092704f	,
+0.732654272f	,	0.680600998f	,
+0.728464390f	,	0.685083668f	,
+0.724247083f	,	0.689540545f	,
+0.720002508f	,	0.693971461f	,
+0.715730825f	,	0.698376249f	,
+0.711432196f	,	0.702754744f	,
+0.707106781f	,	0.707106781f	,
+0.702754744f	,	0.711432196f	,
+0.698376249f	,	0.715730825f	,
+0.693971461f	,	0.720002508f	,
+0.689540545f	,	0.724247083f	,
+0.685083668f	,	0.728464390f	,
+0.680600998f	,	0.732654272f	,
+0.676092704f	,	0.736816569f	,
+0.671558955f	,	0.740951125f	,
+0.666999922f	,	0.745057785f	,
+0.662415778f	,	0.749136395f	,
+0.657806693f	,	0.753186799f	,
+0.653172843f	,	0.757208847f	,
+0.648514401f	,	0.761202385f	,
+0.643831543f	,	0.765167266f	,
+0.639124445f	,	0.769103338f	,
+0.634393284f	,	0.773010453f	,
+0.629638239f	,	0.776888466f	,
+0.624859488f	,	0.780737229f	,
+0.620057212f	,	0.784556597f	,
+0.615231591f	,	0.788346428f	,
+0.610382806f	,	0.792106577f	,
+0.605511041f	,	0.795836905f	,
+0.600616479f	,	0.799537269f	,
+0.595699304f	,	0.803207531f	,
+0.590759702f	,	0.806847554f	,
+0.585797857f	,	0.810457198f	,
+0.580813958f	,	0.814036330f	,
+0.575808191f	,	0.817584813f	,
+0.570780746f	,	0.821102515f	,
+0.565731811f	,	0.824589303f	,
+0.560661576f	,	0.828045045f	,
+0.555570233f	,	0.831469612f	,
+0.550457973f	,	0.834862875f	,
+0.545324988f	,	0.838224706f	,
+0.540171473f	,	0.841554977f	,
+0.534997620f	,	0.844853565f	,
+0.529803625f	,	0.848120345f	,
+0.524589683f	,	0.851355193f	,
+0.519355990f	,	0.854557988f	,
+0.514102744f	,	0.857728610f	,
+0.508830143f	,	0.860866939f	,
+0.503538384f	,	0.863972856f	,
+0.498227667f	,	0.867046246f	,
+0.492898192f	,	0.870086991f	,
+0.487550160f	,	0.873094978f	,
+0.482183772f	,	0.876070094f	,
+0.476799230f	,	0.879012226f	,
+0.471396737f	,	0.881921264f	,
+0.465976496f	,	0.884797098f	,
+0.460538711f	,	0.887639620f	,
+0.455083587f	,	0.890448723f	,
+0.449611330f	,	0.893224301f	,
+0.444122145f	,	0.895966250f	,
+0.438616239f	,	0.898674466f	,
+0.433093819f	,	0.901348847f	,
+0.427555093f	,	0.903989293f	,
+0.422000271f	,	0.906595705f	,
+0.416429560f	,	0.909167983f	,
+0.410843171f	,	0.911706032f	,
+0.405241314f	,	0.914209756f	,
+0.399624200f	,	0.916679060f	,
+0.393992040f	,	0.919113852f	,
+0.388345047f	,	0.921514039f	,
+0.382683432f	,	0.923879533f	,
+0.377007410f	,	0.926210242f	,
+0.371317194f	,	0.928506080f	,
+0.365612998f	,	0.930766961f	,
+0.359895037f	,	0.932992799f	,
+0.354163525f	,	0.935183510f	,
+0.348418680f	,	0.937339012f	,
+0.342660717f	,	0.939459224f	,
+0.336889853f	,	0.941544065f	,
+0.331106306f	,	0.943593458f	,
+0.325310292f	,	0.945607325f	,
+0.319502031f	,	0.947585591f	,
+0.313681740f	,	0.949528181f	,
+0.307849640f	,	0.951435021f	,
+0.302005949f	,	0.953306040f	,
+0.296150888f	,	0.955141168f	,
+0.290284677f	,	0.956940336f	,
+0.284407537f	,	0.958703475f	,
+0.278519689f	,	0.960430519f	,
+0.272621355f	,	0.962121404f	,
+0.266712757f	,	0.963776066f	,
+0.260794118f	,	0.965394442f	,
+0.254865660f	,	0.966976471f	,
+0.248927606f	,	0.968522094f	,
+0.242980180f	,	0.970031253f	,
+0.237023606f	,	0.971503891f	,
+0.231058108f	,	0.972939952f	,
+0.225083911f	,	0.974339383f	,
+0.219101240f	,	0.975702130f	,
+0.213110320f	,	0.977028143f	,
+0.207111376f	,	0.978317371f	,
+0.201104635f	,	0.979569766f	,
+0.195090322f	,	0.980785280f	,
+0.189068664f	,	0.981963869f	,
+0.183039888f	,	0.983105487f	,
+0.177004220f	,	0.984210092f	,
+0.170961889f	,	0.985277642f	,
+0.164913120f	,	0.986308097f	,
+0.158858143f	,	0.987301418f	,
+0.152797185f	,	0.988257568f	,
+0.146730474f	,	0.989176510f	,
+0.140658239f	,	0.990058210f	,
+0.134580709f	,	0.990902635f	,
+0.128498111f	,	0.991709754f	,
+0.122410675f	,	0.992479535f	,
+0.116318631f	,	0.993211949f	,
+0.110222207f	,	0.993906970f	,
+0.104121634f	,	0.994564571f	,
+0.098017140f	,	0.995184727f	,
+0.091908956f	,	0.995767414f	,
+0.085797312f	,	0.996312612f	,
+0.079682438f	,	0.996820299f	,
+0.073564564f	,	0.997290457f	,
+0.067443920f	,	0.997723067f	,
+0.061320736f	,	0.998118113f	,
+0.055195244f	,	0.998475581f	,
+0.049067674f	,	0.998795456f	,
+0.042938257f	,	0.999077728f	,
+0.036807223f	,	0.999322385f	,
+0.030674803f	,	0.999529418f	,
+0.024541229f	,	0.999698819f	,
+0.018406730f	,	0.999830582f	,
+0.012271538f	,	0.999924702f	,
+0.006135885f	,	0.999981175f	,
+0.000000000f	,	1.000000000f	,
+-0.006135885f	,	0.999981175f	,
+-0.012271538f	,	0.999924702f	,
+-0.018406730f	,	0.999830582f	,
+-0.024541229f	,	0.999698819f	,
+-0.030674803f	,	0.999529418f	,
+-0.036807223f	,	0.999322385f	,
+-0.042938257f	,	0.999077728f	,
+-0.049067674f	,	0.998795456f	,
+-0.055195244f	,	0.998475581f	,
+-0.061320736f	,	0.998118113f	,
+-0.067443920f	,	0.997723067f	,
+-0.073564564f	,	0.997290457f	,
+-0.079682438f	,	0.996820299f	,
+-0.085797312f	,	0.996312612f	,
+-0.091908956f	,	0.995767414f	,
+-0.098017140f	,	0.995184727f	,
+-0.104121634f	,	0.994564571f	,
+-0.110222207f	,	0.993906970f	,
+-0.116318631f	,	0.993211949f	,
+-0.122410675f	,	0.992479535f	,
+-0.128498111f	,	0.991709754f	,
+-0.134580709f	,	0.990902635f	,
+-0.140658239f	,	0.990058210f	,
+-0.146730474f	,	0.989176510f	,
+-0.152797185f	,	0.988257568f	,
+-0.158858143f	,	0.987301418f	,
+-0.164913120f	,	0.986308097f	,
+-0.170961889f	,	0.985277642f	,
+-0.177004220f	,	0.984210092f	,
+-0.183039888f	,	0.983105487f	,
+-0.189068664f	,	0.981963869f	,
+-0.195090322f	,	0.980785280f	,
+-0.201104635f	,	0.979569766f	,
+-0.207111376f	,	0.978317371f	,
+-0.213110320f	,	0.977028143f	,
+-0.219101240f	,	0.975702130f	,
+-0.225083911f	,	0.974339383f	,
+-0.231058108f	,	0.972939952f	,
+-0.237023606f	,	0.971503891f	,
+-0.242980180f	,	0.970031253f	,
+-0.248927606f	,	0.968522094f	,
+-0.254865660f	,	0.966976471f	,
+-0.260794118f	,	0.965394442f	,
+-0.266712757f	,	0.963776066f	,
+-0.272621355f	,	0.962121404f	,
+-0.278519689f	,	0.960430519f	,
+-0.284407537f	,	0.958703475f	,
+-0.290284677f	,	0.956940336f	,
+-0.296150888f	,	0.955141168f	,
+-0.302005949f	,	0.953306040f	,
+-0.307849640f	,	0.951435021f	,
+-0.313681740f	,	0.949528181f	,
+-0.319502031f	,	0.947585591f	,
+-0.325310292f	,	0.945607325f	,
+-0.331106306f	,	0.943593458f	,
+-0.336889853f	,	0.941544065f	,
+-0.342660717f	,	0.939459224f	,
+-0.348418680f	,	0.937339012f	,
+-0.354163525f	,	0.935183510f	,
+-0.359895037f	,	0.932992799f	,
+-0.365612998f	,	0.930766961f	,
+-0.371317194f	,	0.928506080f	,
+-0.377007410f	,	0.926210242f	,
+-0.382683432f	,	0.923879533f	,
+-0.388345047f	,	0.921514039f	,
+-0.393992040f	,	0.919113852f	,
+-0.399624200f	,	0.916679060f	,
+-0.405241314f	,	0.914209756f	,
+-0.410843171f	,	0.911706032f	,
+-0.416429560f	,	0.909167983f	,
+-0.422000271f	,	0.906595705f	,
+-0.427555093f	,	0.903989293f	,
+-0.433093819f	,	0.901348847f	,
+-0.438616239f	,	0.898674466f	,
+-0.444122145f	,	0.895966250f	,
+-0.449611330f	,	0.893224301f	,
+-0.455083587f	,	0.890448723f	,
+-0.460538711f	,	0.887639620f	,
+-0.465976496f	,	0.884797098f	,
+-0.471396737f	,	0.881921264f	,
+-0.476799230f	,	0.879012226f	,
+-0.482183772f	,	0.876070094f	,
+-0.487550160f	,	0.873094978f	,
+-0.492898192f	,	0.870086991f	,
+-0.498227667f	,	0.867046246f	,
+-0.503538384f	,	0.863972856f	,
+-0.508830143f	,	0.860866939f	,
+-0.514102744f	,	0.857728610f	,
+-0.519355990f	,	0.854557988f	,
+-0.524589683f	,	0.851355193f	,
+-0.529803625f	,	0.848120345f	,
+-0.534997620f	,	0.844853565f	,
+-0.540171473f	,	0.841554977f	,
+-0.545324988f	,	0.838224706f	,
+-0.550457973f	,	0.834862875f	,
+-0.555570233f	,	0.831469612f	,
+-0.560661576f	,	0.828045045f	,
+-0.565731811f	,	0.824589303f	,
+-0.570780746f	,	0.821102515f	,
+-0.575808191f	,	0.817584813f	,
+-0.580813958f	,	0.814036330f	,
+-0.585797857f	,	0.810457198f	,
+-0.590759702f	,	0.806847554f	,
+-0.595699304f	,	0.803207531f	,
+-0.600616479f	,	0.799537269f	,
+-0.605511041f	,	0.795836905f	,
+-0.610382806f	,	0.792106577f	,
+-0.615231591f	,	0.788346428f	,
+-0.620057212f	,	0.784556597f	,
+-0.624859488f	,	0.780737229f	,
+-0.629638239f	,	0.776888466f	,
+-0.634393284f	,	0.773010453f	,
+-0.639124445f	,	0.769103338f	,
+-0.643831543f	,	0.765167266f	,
+-0.648514401f	,	0.761202385f	,
+-0.653172843f	,	0.757208847f	,
+-0.657806693f	,	0.753186799f	,
+-0.662415778f	,	0.749136395f	,
+-0.666999922f	,	0.745057785f	,
+-0.671558955f	,	0.740951125f	,
+-0.676092704f	,	0.736816569f	,
+-0.680600998f	,	0.732654272f	,
+-0.685083668f	,	0.728464390f	,
+-0.689540545f	,	0.724247083f	,
+-0.693971461f	,	0.720002508f	,
+-0.698376249f	,	0.715730825f	,
+-0.702754744f	,	0.711432196f	,
+-0.707106781f	,	0.707106781f	,
+-0.711432196f	,	0.702754744f	,
+-0.715730825f	,	0.698376249f	,
+-0.720002508f	,	0.693971461f	,
+-0.724247083f	,	0.689540545f	,
+-0.728464390f	,	0.685083668f	,
+-0.732654272f	,	0.680600998f	,
+-0.736816569f	,	0.676092704f	,
+-0.740951125f	,	0.671558955f	,
+-0.745057785f	,	0.666999922f	,
+-0.749136395f	,	0.662415778f	,
+-0.753186799f	,	0.657806693f	,
+-0.757208847f	,	0.653172843f	,
+-0.761202385f	,	0.648514401f	,
+-0.765167266f	,	0.643831543f	,
+-0.769103338f	,	0.639124445f	,
+-0.773010453f	,	0.634393284f	,
+-0.776888466f	,	0.629638239f	,
+-0.780737229f	,	0.624859488f	,
+-0.784556597f	,	0.620057212f	,
+-0.788346428f	,	0.615231591f	,
+-0.792106577f	,	0.610382806f	,
+-0.795836905f	,	0.605511041f	,
+-0.799537269f	,	0.600616479f	,
+-0.803207531f	,	0.595699304f	,
+-0.806847554f	,	0.590759702f	,
+-0.810457198f	,	0.585797857f	,
+-0.814036330f	,	0.580813958f	,
+-0.817584813f	,	0.575808191f	,
+-0.821102515f	,	0.570780746f	,
+-0.824589303f	,	0.565731811f	,
+-0.828045045f	,	0.560661576f	,
+-0.831469612f	,	0.555570233f	,
+-0.834862875f	,	0.550457973f	,
+-0.838224706f	,	0.545324988f	,
+-0.841554977f	,	0.540171473f	,
+-0.844853565f	,	0.534997620f	,
+-0.848120345f	,	0.529803625f	,
+-0.851355193f	,	0.524589683f	,
+-0.854557988f	,	0.519355990f	,
+-0.857728610f	,	0.514102744f	,
+-0.860866939f	,	0.508830143f	,
+-0.863972856f	,	0.503538384f	,
+-0.867046246f	,	0.498227667f	,
+-0.870086991f	,	0.492898192f	,
+-0.873094978f	,	0.487550160f	,
+-0.876070094f	,	0.482183772f	,
+-0.879012226f	,	0.476799230f	,
+-0.881921264f	,	0.471396737f	,
+-0.884797098f	,	0.465976496f	,
+-0.887639620f	,	0.460538711f	,
+-0.890448723f	,	0.455083587f	,
+-0.893224301f	,	0.449611330f	,
+-0.895966250f	,	0.444122145f	,
+-0.898674466f	,	0.438616239f	,
+-0.901348847f	,	0.433093819f	,
+-0.903989293f	,	0.427555093f	,
+-0.906595705f	,	0.422000271f	,
+-0.909167983f	,	0.416429560f	,
+-0.911706032f	,	0.410843171f	,
+-0.914209756f	,	0.405241314f	,
+-0.916679060f	,	0.399624200f	,
+-0.919113852f	,	0.393992040f	,
+-0.921514039f	,	0.388345047f	,
+-0.923879533f	,	0.382683432f	,
+-0.926210242f	,	0.377007410f	,
+-0.928506080f	,	0.371317194f	,
+-0.930766961f	,	0.365612998f	,
+-0.932992799f	,	0.359895037f	,
+-0.935183510f	,	0.354163525f	,
+-0.937339012f	,	0.348418680f	,
+-0.939459224f	,	0.342660717f	,
+-0.941544065f	,	0.336889853f	,
+-0.943593458f	,	0.331106306f	,
+-0.945607325f	,	0.325310292f	,
+-0.947585591f	,	0.319502031f	,
+-0.949528181f	,	0.313681740f	,
+-0.951435021f	,	0.307849640f	,
+-0.953306040f	,	0.302005949f	,
+-0.955141168f	,	0.296150888f	,
+-0.956940336f	,	0.290284677f	,
+-0.958703475f	,	0.284407537f	,
+-0.960430519f	,	0.278519689f	,
+-0.962121404f	,	0.272621355f	,
+-0.963776066f	,	0.266712757f	,
+-0.965394442f	,	0.260794118f	,
+-0.966976471f	,	0.254865660f	,
+-0.968522094f	,	0.248927606f	,
+-0.970031253f	,	0.242980180f	,
+-0.971503891f	,	0.237023606f	,
+-0.972939952f	,	0.231058108f	,
+-0.974339383f	,	0.225083911f	,
+-0.975702130f	,	0.219101240f	,
+-0.977028143f	,	0.213110320f	,
+-0.978317371f	,	0.207111376f	,
+-0.979569766f	,	0.201104635f	,
+-0.980785280f	,	0.195090322f	,
+-0.981963869f	,	0.189068664f	,
+-0.983105487f	,	0.183039888f	,
+-0.984210092f	,	0.177004220f	,
+-0.985277642f	,	0.170961889f	,
+-0.986308097f	,	0.164913120f	,
+-0.987301418f	,	0.158858143f	,
+-0.988257568f	,	0.152797185f	,
+-0.989176510f	,	0.146730474f	,
+-0.990058210f	,	0.140658239f	,
+-0.990902635f	,	0.134580709f	,
+-0.991709754f	,	0.128498111f	,
+-0.992479535f	,	0.122410675f	,
+-0.993211949f	,	0.116318631f	,
+-0.993906970f	,	0.110222207f	,
+-0.994564571f	,	0.104121634f	,
+-0.995184727f	,	0.098017140f	,
+-0.995767414f	,	0.091908956f	,
+-0.996312612f	,	0.085797312f	,
+-0.996820299f	,	0.079682438f	,
+-0.997290457f	,	0.073564564f	,
+-0.997723067f	,	0.067443920f	,
+-0.998118113f	,	0.061320736f	,
+-0.998475581f	,	0.055195244f	,
+-0.998795456f	,	0.049067674f	,
+-0.999077728f	,	0.042938257f	,
+-0.999322385f	,	0.036807223f	,
+-0.999529418f	,	0.030674803f	,
+-0.999698819f	,	0.024541229f	,
+-0.999830582f	,	0.018406730f	,
+-0.999924702f	,	0.012271538f	,
+-0.999981175f	,	0.006135885f	,
+-1.000000000f	,	0.000000000f	,
+-0.999981175f	,	-0.006135885f	,
+-0.999924702f	,	-0.012271538f	,
+-0.999830582f	,	-0.018406730f	,
+-0.999698819f	,	-0.024541229f	,
+-0.999529418f	,	-0.030674803f	,
+-0.999322385f	,	-0.036807223f	,
+-0.999077728f	,	-0.042938257f	,
+-0.998795456f	,	-0.049067674f	,
+-0.998475581f	,	-0.055195244f	,
+-0.998118113f	,	-0.061320736f	,
+-0.997723067f	,	-0.067443920f	,
+-0.997290457f	,	-0.073564564f	,
+-0.996820299f	,	-0.079682438f	,
+-0.996312612f	,	-0.085797312f	,
+-0.995767414f	,	-0.091908956f	,
+-0.995184727f	,	-0.098017140f	,
+-0.994564571f	,	-0.104121634f	,
+-0.993906970f	,	-0.110222207f	,
+-0.993211949f	,	-0.116318631f	,
+-0.992479535f	,	-0.122410675f	,
+-0.991709754f	,	-0.128498111f	,
+-0.990902635f	,	-0.134580709f	,
+-0.990058210f	,	-0.140658239f	,
+-0.989176510f	,	-0.146730474f	,
+-0.988257568f	,	-0.152797185f	,
+-0.987301418f	,	-0.158858143f	,
+-0.986308097f	,	-0.164913120f	,
+-0.985277642f	,	-0.170961889f	,
+-0.984210092f	,	-0.177004220f	,
+-0.983105487f	,	-0.183039888f	,
+-0.981963869f	,	-0.189068664f	,
+-0.980785280f	,	-0.195090322f	,
+-0.979569766f	,	-0.201104635f	,
+-0.978317371f	,	-0.207111376f	,
+-0.977028143f	,	-0.213110320f	,
+-0.975702130f	,	-0.219101240f	,
+-0.974339383f	,	-0.225083911f	,
+-0.972939952f	,	-0.231058108f	,
+-0.971503891f	,	-0.237023606f	,
+-0.970031253f	,	-0.242980180f	,
+-0.968522094f	,	-0.248927606f	,
+-0.966976471f	,	-0.254865660f	,
+-0.965394442f	,	-0.260794118f	,
+-0.963776066f	,	-0.266712757f	,
+-0.962121404f	,	-0.272621355f	,
+-0.960430519f	,	-0.278519689f	,
+-0.958703475f	,	-0.284407537f	,
+-0.956940336f	,	-0.290284677f	,
+-0.955141168f	,	-0.296150888f	,
+-0.953306040f	,	-0.302005949f	,
+-0.951435021f	,	-0.307849640f	,
+-0.949528181f	,	-0.313681740f	,
+-0.947585591f	,	-0.319502031f	,
+-0.945607325f	,	-0.325310292f	,
+-0.943593458f	,	-0.331106306f	,
+-0.941544065f	,	-0.336889853f	,
+-0.939459224f	,	-0.342660717f	,
+-0.937339012f	,	-0.348418680f	,
+-0.935183510f	,	-0.354163525f	,
+-0.932992799f	,	-0.359895037f	,
+-0.930766961f	,	-0.365612998f	,
+-0.928506080f	,	-0.371317194f	,
+-0.926210242f	,	-0.377007410f	,
+-0.923879533f	,	-0.382683432f	,
+-0.921514039f	,	-0.388345047f	,
+-0.919113852f	,	-0.393992040f	,
+-0.916679060f	,	-0.399624200f	,
+-0.914209756f	,	-0.405241314f	,
+-0.911706032f	,	-0.410843171f	,
+-0.909167983f	,	-0.416429560f	,
+-0.906595705f	,	-0.422000271f	,
+-0.903989293f	,	-0.427555093f	,
+-0.901348847f	,	-0.433093819f	,
+-0.898674466f	,	-0.438616239f	,
+-0.895966250f	,	-0.444122145f	,
+-0.893224301f	,	-0.449611330f	,
+-0.890448723f	,	-0.455083587f	,
+-0.887639620f	,	-0.460538711f	,
+-0.884797098f	,	-0.465976496f	,
+-0.881921264f	,	-0.471396737f	,
+-0.879012226f	,	-0.476799230f	,
+-0.876070094f	,	-0.482183772f	,
+-0.873094978f	,	-0.487550160f	,
+-0.870086991f	,	-0.492898192f	,
+-0.867046246f	,	-0.498227667f	,
+-0.863972856f	,	-0.503538384f	,
+-0.860866939f	,	-0.508830143f	,
+-0.857728610f	,	-0.514102744f	,
+-0.854557988f	,	-0.519355990f	,
+-0.851355193f	,	-0.524589683f	,
+-0.848120345f	,	-0.529803625f	,
+-0.844853565f	,	-0.534997620f	,
+-0.841554977f	,	-0.540171473f	,
+-0.838224706f	,	-0.545324988f	,
+-0.834862875f	,	-0.550457973f	,
+-0.831469612f	,	-0.555570233f	,
+-0.828045045f	,	-0.560661576f	,
+-0.824589303f	,	-0.565731811f	,
+-0.821102515f	,	-0.570780746f	,
+-0.817584813f	,	-0.575808191f	,
+-0.814036330f	,	-0.580813958f	,
+-0.810457198f	,	-0.585797857f	,
+-0.806847554f	,	-0.590759702f	,
+-0.803207531f	,	-0.595699304f	,
+-0.799537269f	,	-0.600616479f	,
+-0.795836905f	,	-0.605511041f	,
+-0.792106577f	,	-0.610382806f	,
+-0.788346428f	,	-0.615231591f	,
+-0.784556597f	,	-0.620057212f	,
+-0.780737229f	,	-0.624859488f	,
+-0.776888466f	,	-0.629638239f	,
+-0.773010453f	,	-0.634393284f	,
+-0.769103338f	,	-0.639124445f	,
+-0.765167266f	,	-0.643831543f	,
+-0.761202385f	,	-0.648514401f	,
+-0.757208847f	,	-0.653172843f	,
+-0.753186799f	,	-0.657806693f	,
+-0.749136395f	,	-0.662415778f	,
+-0.745057785f	,	-0.666999922f	,
+-0.740951125f	,	-0.671558955f	,
+-0.736816569f	,	-0.676092704f	,
+-0.732654272f	,	-0.680600998f	,
+-0.728464390f	,	-0.685083668f	,
+-0.724247083f	,	-0.689540545f	,
+-0.720002508f	,	-0.693971461f	,
+-0.715730825f	,	-0.698376249f	,
+-0.711432196f	,	-0.702754744f	,
+-0.707106781f	,	-0.707106781f	,
+-0.702754744f	,	-0.711432196f	,
+-0.698376249f	,	-0.715730825f	,
+-0.693971461f	,	-0.720002508f	,
+-0.689540545f	,	-0.724247083f	,
+-0.685083668f	,	-0.728464390f	,
+-0.680600998f	,	-0.732654272f	,
+-0.676092704f	,	-0.736816569f	,
+-0.671558955f	,	-0.740951125f	,
+-0.666999922f	,	-0.745057785f	,
+-0.662415778f	,	-0.749136395f	,
+-0.657806693f	,	-0.753186799f	,
+-0.653172843f	,	-0.757208847f	,
+-0.648514401f	,	-0.761202385f	,
+-0.643831543f	,	-0.765167266f	,
+-0.639124445f	,	-0.769103338f	,
+-0.634393284f	,	-0.773010453f	,
+-0.629638239f	,	-0.776888466f	,
+-0.624859488f	,	-0.780737229f	,
+-0.620057212f	,	-0.784556597f	,
+-0.615231591f	,	-0.788346428f	,
+-0.610382806f	,	-0.792106577f	,
+-0.605511041f	,	-0.795836905f	,
+-0.600616479f	,	-0.799537269f	,
+-0.595699304f	,	-0.803207531f	,
+-0.590759702f	,	-0.806847554f	,
+-0.585797857f	,	-0.810457198f	,
+-0.580813958f	,	-0.814036330f	,
+-0.575808191f	,	-0.817584813f	,
+-0.570780746f	,	-0.821102515f	,
+-0.565731811f	,	-0.824589303f	,
+-0.560661576f	,	-0.828045045f	,
+-0.555570233f	,	-0.831469612f	,
+-0.550457973f	,	-0.834862875f	,
+-0.545324988f	,	-0.838224706f	,
+-0.540171473f	,	-0.841554977f	,
+-0.534997620f	,	-0.844853565f	,
+-0.529803625f	,	-0.848120345f	,
+-0.524589683f	,	-0.851355193f	,
+-0.519355990f	,	-0.854557988f	,
+-0.514102744f	,	-0.857728610f	,
+-0.508830143f	,	-0.860866939f	,
+-0.503538384f	,	-0.863972856f	,
+-0.498227667f	,	-0.867046246f	,
+-0.492898192f	,	-0.870086991f	,
+-0.487550160f	,	-0.873094978f	,
+-0.482183772f	,	-0.876070094f	,
+-0.476799230f	,	-0.879012226f	,
+-0.471396737f	,	-0.881921264f	,
+-0.465976496f	,	-0.884797098f	,
+-0.460538711f	,	-0.887639620f	,
+-0.455083587f	,	-0.890448723f	,
+-0.449611330f	,	-0.893224301f	,
+-0.444122145f	,	-0.895966250f	,
+-0.438616239f	,	-0.898674466f	,
+-0.433093819f	,	-0.901348847f	,
+-0.427555093f	,	-0.903989293f	,
+-0.422000271f	,	-0.906595705f	,
+-0.416429560f	,	-0.909167983f	,
+-0.410843171f	,	-0.911706032f	,
+-0.405241314f	,	-0.914209756f	,
+-0.399624200f	,	-0.916679060f	,
+-0.393992040f	,	-0.919113852f	,
+-0.388345047f	,	-0.921514039f	,
+-0.382683432f	,	-0.923879533f	,
+-0.377007410f	,	-0.926210242f	,
+-0.371317194f	,	-0.928506080f	,
+-0.365612998f	,	-0.930766961f	,
+-0.359895037f	,	-0.932992799f	,
+-0.354163525f	,	-0.935183510f	,
+-0.348418680f	,	-0.937339012f	,
+-0.342660717f	,	-0.939459224f	,
+-0.336889853f	,	-0.941544065f	,
+-0.331106306f	,	-0.943593458f	,
+-0.325310292f	,	-0.945607325f	,
+-0.319502031f	,	-0.947585591f	,
+-0.313681740f	,	-0.949528181f	,
+-0.307849640f	,	-0.951435021f	,
+-0.302005949f	,	-0.953306040f	,
+-0.296150888f	,	-0.955141168f	,
+-0.290284677f	,	-0.956940336f	,
+-0.284407537f	,	-0.958703475f	,
+-0.278519689f	,	-0.960430519f	,
+-0.272621355f	,	-0.962121404f	,
+-0.266712757f	,	-0.963776066f	,
+-0.260794118f	,	-0.965394442f	,
+-0.254865660f	,	-0.966976471f	,
+-0.248927606f	,	-0.968522094f	,
+-0.242980180f	,	-0.970031253f	,
+-0.237023606f	,	-0.971503891f	,
+-0.231058108f	,	-0.972939952f	,
+-0.225083911f	,	-0.974339383f	,
+-0.219101240f	,	-0.975702130f	,
+-0.213110320f	,	-0.977028143f	,
+-0.207111376f	,	-0.978317371f	,
+-0.201104635f	,	-0.979569766f	,
+-0.195090322f	,	-0.980785280f	,
+-0.189068664f	,	-0.981963869f	,
+-0.183039888f	,	-0.983105487f	,
+-0.177004220f	,	-0.984210092f	,
+-0.170961889f	,	-0.985277642f	,
+-0.164913120f	,	-0.986308097f	,
+-0.158858143f	,	-0.987301418f	,
+-0.152797185f	,	-0.988257568f	,
+-0.146730474f	,	-0.989176510f	,
+-0.140658239f	,	-0.990058210f	,
+-0.134580709f	,	-0.990902635f	,
+-0.128498111f	,	-0.991709754f	,
+-0.122410675f	,	-0.992479535f	,
+-0.116318631f	,	-0.993211949f	,
+-0.110222207f	,	-0.993906970f	,
+-0.104121634f	,	-0.994564571f	,
+-0.098017140f	,	-0.995184727f	,
+-0.091908956f	,	-0.995767414f	,
+-0.085797312f	,	-0.996312612f	,
+-0.079682438f	,	-0.996820299f	,
+-0.073564564f	,	-0.997290457f	,
+-0.067443920f	,	-0.997723067f	,
+-0.061320736f	,	-0.998118113f	,
+-0.055195244f	,	-0.998475581f	,
+-0.049067674f	,	-0.998795456f	,
+-0.042938257f	,	-0.999077728f	,
+-0.036807223f	,	-0.999322385f	,
+-0.030674803f	,	-0.999529418f	,
+-0.024541229f	,	-0.999698819f	,
+-0.018406730f	,	-0.999830582f	,
+-0.012271538f	,	-0.999924702f	,
+-0.006135885f	,	-0.999981175f	,
+-0.000000000f	,	-1.000000000f	,
+0.006135885f	,	-0.999981175f	,
+0.012271538f	,	-0.999924702f	,
+0.018406730f	,	-0.999830582f	,
+0.024541229f	,	-0.999698819f	,
+0.030674803f	,	-0.999529418f	,
+0.036807223f	,	-0.999322385f	,
+0.042938257f	,	-0.999077728f	,
+0.049067674f	,	-0.998795456f	,
+0.055195244f	,	-0.998475581f	,
+0.061320736f	,	-0.998118113f	,
+0.067443920f	,	-0.997723067f	,
+0.073564564f	,	-0.997290457f	,
+0.079682438f	,	-0.996820299f	,
+0.085797312f	,	-0.996312612f	,
+0.091908956f	,	-0.995767414f	,
+0.098017140f	,	-0.995184727f	,
+0.104121634f	,	-0.994564571f	,
+0.110222207f	,	-0.993906970f	,
+0.116318631f	,	-0.993211949f	,
+0.122410675f	,	-0.992479535f	,
+0.128498111f	,	-0.991709754f	,
+0.134580709f	,	-0.990902635f	,
+0.140658239f	,	-0.990058210f	,
+0.146730474f	,	-0.989176510f	,
+0.152797185f	,	-0.988257568f	,
+0.158858143f	,	-0.987301418f	,
+0.164913120f	,	-0.986308097f	,
+0.170961889f	,	-0.985277642f	,
+0.177004220f	,	-0.984210092f	,
+0.183039888f	,	-0.983105487f	,
+0.189068664f	,	-0.981963869f	,
+0.195090322f	,	-0.980785280f	,
+0.201104635f	,	-0.979569766f	,
+0.207111376f	,	-0.978317371f	,
+0.213110320f	,	-0.977028143f	,
+0.219101240f	,	-0.975702130f	,
+0.225083911f	,	-0.974339383f	,
+0.231058108f	,	-0.972939952f	,
+0.237023606f	,	-0.971503891f	,
+0.242980180f	,	-0.970031253f	,
+0.248927606f	,	-0.968522094f	,
+0.254865660f	,	-0.966976471f	,
+0.260794118f	,	-0.965394442f	,
+0.266712757f	,	-0.963776066f	,
+0.272621355f	,	-0.962121404f	,
+0.278519689f	,	-0.960430519f	,
+0.284407537f	,	-0.958703475f	,
+0.290284677f	,	-0.956940336f	,
+0.296150888f	,	-0.955141168f	,
+0.302005949f	,	-0.953306040f	,
+0.307849640f	,	-0.951435021f	,
+0.313681740f	,	-0.949528181f	,
+0.319502031f	,	-0.947585591f	,
+0.325310292f	,	-0.945607325f	,
+0.331106306f	,	-0.943593458f	,
+0.336889853f	,	-0.941544065f	,
+0.342660717f	,	-0.939459224f	,
+0.348418680f	,	-0.937339012f	,
+0.354163525f	,	-0.935183510f	,
+0.359895037f	,	-0.932992799f	,
+0.365612998f	,	-0.930766961f	,
+0.371317194f	,	-0.928506080f	,
+0.377007410f	,	-0.926210242f	,
+0.382683432f	,	-0.923879533f	,
+0.388345047f	,	-0.921514039f	,
+0.393992040f	,	-0.919113852f	,
+0.399624200f	,	-0.916679060f	,
+0.405241314f	,	-0.914209756f	,
+0.410843171f	,	-0.911706032f	,
+0.416429560f	,	-0.909167983f	,
+0.422000271f	,	-0.906595705f	,
+0.427555093f	,	-0.903989293f	,
+0.433093819f	,	-0.901348847f	,
+0.438616239f	,	-0.898674466f	,
+0.444122145f	,	-0.895966250f	,
+0.449611330f	,	-0.893224301f	,
+0.455083587f	,	-0.890448723f	,
+0.460538711f	,	-0.887639620f	,
+0.465976496f	,	-0.884797098f	,
+0.471396737f	,	-0.881921264f	,
+0.476799230f	,	-0.879012226f	,
+0.482183772f	,	-0.876070094f	,
+0.487550160f	,	-0.873094978f	,
+0.492898192f	,	-0.870086991f	,
+0.498227667f	,	-0.867046246f	,
+0.503538384f	,	-0.863972856f	,
+0.508830143f	,	-0.860866939f	,
+0.514102744f	,	-0.857728610f	,
+0.519355990f	,	-0.854557988f	,
+0.524589683f	,	-0.851355193f	,
+0.529803625f	,	-0.848120345f	,
+0.534997620f	,	-0.844853565f	,
+0.540171473f	,	-0.841554977f	,
+0.545324988f	,	-0.838224706f	,
+0.550457973f	,	-0.834862875f	,
+0.555570233f	,	-0.831469612f	,
+0.560661576f	,	-0.828045045f	,
+0.565731811f	,	-0.824589303f	,
+0.570780746f	,	-0.821102515f	,
+0.575808191f	,	-0.817584813f	,
+0.580813958f	,	-0.814036330f	,
+0.585797857f	,	-0.810457198f	,
+0.590759702f	,	-0.806847554f	,
+0.595699304f	,	-0.803207531f	,
+0.600616479f	,	-0.799537269f	,
+0.605511041f	,	-0.795836905f	,
+0.610382806f	,	-0.792106577f	,
+0.615231591f	,	-0.788346428f	,
+0.620057212f	,	-0.784556597f	,
+0.624859488f	,	-0.780737229f	,
+0.629638239f	,	-0.776888466f	,
+0.634393284f	,	-0.773010453f	,
+0.639124445f	,	-0.769103338f	,
+0.643831543f	,	-0.765167266f	,
+0.648514401f	,	-0.761202385f	,
+0.653172843f	,	-0.757208847f	,
+0.657806693f	,	-0.753186799f	,
+0.662415778f	,	-0.749136395f	,
+0.666999922f	,	-0.745057785f	,
+0.671558955f	,	-0.740951125f	,
+0.676092704f	,	-0.736816569f	,
+0.680600998f	,	-0.732654272f	,
+0.685083668f	,	-0.728464390f	,
+0.689540545f	,	-0.724247083f	,
+0.693971461f	,	-0.720002508f	,
+0.698376249f	,	-0.715730825f	,
+0.702754744f	,	-0.711432196f	,
+0.707106781f	,	-0.707106781f	,
+0.711432196f	,	-0.702754744f	,
+0.715730825f	,	-0.698376249f	,
+0.720002508f	,	-0.693971461f	,
+0.724247083f	,	-0.689540545f	,
+0.728464390f	,	-0.685083668f	,
+0.732654272f	,	-0.680600998f	,
+0.736816569f	,	-0.676092704f	,
+0.740951125f	,	-0.671558955f	,
+0.745057785f	,	-0.666999922f	,
+0.749136395f	,	-0.662415778f	,
+0.753186799f	,	-0.657806693f	,
+0.757208847f	,	-0.653172843f	,
+0.761202385f	,	-0.648514401f	,
+0.765167266f	,	-0.643831543f	,
+0.769103338f	,	-0.639124445f	,
+0.773010453f	,	-0.634393284f	,
+0.776888466f	,	-0.629638239f	,
+0.780737229f	,	-0.624859488f	,
+0.784556597f	,	-0.620057212f	,
+0.788346428f	,	-0.615231591f	,
+0.792106577f	,	-0.610382806f	,
+0.795836905f	,	-0.605511041f	,
+0.799537269f	,	-0.600616479f	,
+0.803207531f	,	-0.595699304f	,
+0.806847554f	,	-0.590759702f	,
+0.810457198f	,	-0.585797857f	,
+0.814036330f	,	-0.580813958f	,
+0.817584813f	,	-0.575808191f	,
+0.821102515f	,	-0.570780746f	,
+0.824589303f	,	-0.565731811f	,
+0.828045045f	,	-0.560661576f	,
+0.831469612f	,	-0.555570233f	,
+0.834862875f	,	-0.550457973f	,
+0.838224706f	,	-0.545324988f	,
+0.841554977f	,	-0.540171473f	,
+0.844853565f	,	-0.534997620f	,
+0.848120345f	,	-0.529803625f	,
+0.851355193f	,	-0.524589683f	,
+0.854557988f	,	-0.519355990f	,
+0.857728610f	,	-0.514102744f	,
+0.860866939f	,	-0.508830143f	,
+0.863972856f	,	-0.503538384f	,
+0.867046246f	,	-0.498227667f	,
+0.870086991f	,	-0.492898192f	,
+0.873094978f	,	-0.487550160f	,
+0.876070094f	,	-0.482183772f	,
+0.879012226f	,	-0.476799230f	,
+0.881921264f	,	-0.471396737f	,
+0.884797098f	,	-0.465976496f	,
+0.887639620f	,	-0.460538711f	,
+0.890448723f	,	-0.455083587f	,
+0.893224301f	,	-0.449611330f	,
+0.895966250f	,	-0.444122145f	,
+0.898674466f	,	-0.438616239f	,
+0.901348847f	,	-0.433093819f	,
+0.903989293f	,	-0.427555093f	,
+0.906595705f	,	-0.422000271f	,
+0.909167983f	,	-0.416429560f	,
+0.911706032f	,	-0.410843171f	,
+0.914209756f	,	-0.405241314f	,
+0.916679060f	,	-0.399624200f	,
+0.919113852f	,	-0.393992040f	,
+0.921514039f	,	-0.388345047f	,
+0.923879533f	,	-0.382683432f	,
+0.926210242f	,	-0.377007410f	,
+0.928506080f	,	-0.371317194f	,
+0.930766961f	,	-0.365612998f	,
+0.932992799f	,	-0.359895037f	,
+0.935183510f	,	-0.354163525f	,
+0.937339012f	,	-0.348418680f	,
+0.939459224f	,	-0.342660717f	,
+0.941544065f	,	-0.336889853f	,
+0.943593458f	,	-0.331106306f	,
+0.945607325f	,	-0.325310292f	,
+0.947585591f	,	-0.319502031f	,
+0.949528181f	,	-0.313681740f	,
+0.951435021f	,	-0.307849640f	,
+0.953306040f	,	-0.302005949f	,
+0.955141168f	,	-0.296150888f	,
+0.956940336f	,	-0.290284677f	,
+0.958703475f	,	-0.284407537f	,
+0.960430519f	,	-0.278519689f	,
+0.962121404f	,	-0.272621355f	,
+0.963776066f	,	-0.266712757f	,
+0.965394442f	,	-0.260794118f	,
+0.966976471f	,	-0.254865660f	,
+0.968522094f	,	-0.248927606f	,
+0.970031253f	,	-0.242980180f	,
+0.971503891f	,	-0.237023606f	,
+0.972939952f	,	-0.231058108f	,
+0.974339383f	,	-0.225083911f	,
+0.975702130f	,	-0.219101240f	,
+0.977028143f	,	-0.213110320f	,
+0.978317371f	,	-0.207111376f	,
+0.979569766f	,	-0.201104635f	,
+0.980785280f	,	-0.195090322f	,
+0.981963869f	,	-0.189068664f	,
+0.983105487f	,	-0.183039888f	,
+0.984210092f	,	-0.177004220f	,
+0.985277642f	,	-0.170961889f	,
+0.986308097f	,	-0.164913120f	,
+0.987301418f	,	-0.158858143f	,
+0.988257568f	,	-0.152797185f	,
+0.989176510f	,	-0.146730474f	,
+0.990058210f	,	-0.140658239f	,
+0.990902635f	,	-0.134580709f	,
+0.991709754f	,	-0.128498111f	,
+0.992479535f	,	-0.122410675f	,
+0.993211949f	,	-0.116318631f	,
+0.993906970f	,	-0.110222207f	,
+0.994564571f	,	-0.104121634f	,
+0.995184727f	,	-0.098017140f	,
+0.995767414f	,	-0.091908956f	,
+0.996312612f	,	-0.085797312f	,
+0.996820299f	,	-0.079682438f	,
+0.997290457f	,	-0.073564564f	,
+0.997723067f	,	-0.067443920f	,
+0.998118113f	,	-0.061320736f	,
+0.998475581f	,	-0.055195244f	,
+0.998795456f	,	-0.049067674f	,
+0.999077728f	,	-0.042938257f	,
+0.999322385f	,	-0.036807223f	,
+0.999529418f	,	-0.030674803f	,
+0.999698819f	,	-0.024541229f	,
+0.999830582f	,	-0.018406730f	,
+0.999924702f	,	-0.012271538f	,
+0.999981175f	,	-0.006135885f
+};
+
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 2048	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+const float32_t twiddleCoef_2048[4096] = {
+    1.000000000f,  0.000000000f,
+    0.999995294f,  0.003067957f,
+    0.999981175f,  0.006135885f,
+    0.999957645f,  0.009203755f,
+    0.999924702f,  0.012271538f,
+    0.999882347f,  0.015339206f,
+    0.999830582f,  0.018406730f,
+    0.999769405f,  0.021474080f,
+    0.999698819f,  0.024541229f,
+    0.999618822f,  0.027608146f,
+    0.999529418f,  0.030674803f,
+    0.999430605f,  0.033741172f,
+    0.999322385f,  0.036807223f,
+    0.999204759f,  0.039872928f,
+    0.999077728f,  0.042938257f,
+    0.998941293f,  0.046003182f,
+    0.998795456f,  0.049067674f,
+    0.998640218f,  0.052131705f,
+    0.998475581f,  0.055195244f,
+    0.998301545f,  0.058258265f,
+    0.998118113f,  0.061320736f,
+    0.997925286f,  0.064382631f,
+    0.997723067f,  0.067443920f,
+    0.997511456f,  0.070504573f,
+    0.997290457f,  0.073564564f,
+    0.997060070f,  0.076623861f,
+    0.996820299f,  0.079682438f,
+    0.996571146f,  0.082740265f,
+    0.996312612f,  0.085797312f,
+    0.996044701f,  0.088853553f,
+    0.995767414f,  0.091908956f,
+    0.995480755f,  0.094963495f,
+    0.995184727f,  0.098017140f,
+    0.994879331f,  0.101069863f,
+    0.994564571f,  0.104121634f,
+    0.994240449f,  0.107172425f,
+    0.993906970f,  0.110222207f,
+    0.993564136f,  0.113270952f,
+    0.993211949f,  0.116318631f,
+    0.992850414f,  0.119365215f,
+    0.992479535f,  0.122410675f,
+    0.992099313f,  0.125454983f,
+    0.991709754f,  0.128498111f,
+    0.991310860f,  0.131540029f,
+    0.990902635f,  0.134580709f,
+    0.990485084f,  0.137620122f,
+    0.990058210f,  0.140658239f,
+    0.989622017f,  0.143695033f,
+    0.989176510f,  0.146730474f,
+    0.988721692f,  0.149764535f,
+    0.988257568f,  0.152797185f,
+    0.987784142f,  0.155828398f,
+    0.987301418f,  0.158858143f,
+    0.986809402f,  0.161886394f,
+    0.986308097f,  0.164913120f,
+    0.985797509f,  0.167938295f,
+    0.985277642f,  0.170961889f,
+    0.984748502f,  0.173983873f,
+    0.984210092f,  0.177004220f,
+    0.983662419f,  0.180022901f,
+    0.983105487f,  0.183039888f,
+    0.982539302f,  0.186055152f,
+    0.981963869f,  0.189068664f,
+    0.981379193f,  0.192080397f,
+    0.980785280f,  0.195090322f,
+    0.980182136f,  0.198098411f,
+    0.979569766f,  0.201104635f,
+    0.978948175f,  0.204108966f,
+    0.978317371f,  0.207111376f,
+    0.977677358f,  0.210111837f,
+    0.977028143f,  0.213110320f,
+    0.976369731f,  0.216106797f,
+    0.975702130f,  0.219101240f,
+    0.975025345f,  0.222093621f,
+    0.974339383f,  0.225083911f,
+    0.973644250f,  0.228072083f,
+    0.972939952f,  0.231058108f,
+    0.972226497f,  0.234041959f,
+    0.971503891f,  0.237023606f,
+    0.970772141f,  0.240003022f,
+    0.970031253f,  0.242980180f,
+    0.969281235f,  0.245955050f,
+    0.968522094f,  0.248927606f,
+    0.967753837f,  0.251897818f,
+    0.966976471f,  0.254865660f,
+    0.966190003f,  0.257831102f,
+    0.965394442f,  0.260794118f,
+    0.964589793f,  0.263754679f,
+    0.963776066f,  0.266712757f,
+    0.962953267f,  0.269668326f,
+    0.962121404f,  0.272621355f,
+    0.961280486f,  0.275571819f,
+    0.960430519f,  0.278519689f,
+    0.959571513f,  0.281464938f,
+    0.958703475f,  0.284407537f,
+    0.957826413f,  0.287347460f,
+    0.956940336f,  0.290284677f,
+    0.956045251f,  0.293219163f,
+    0.955141168f,  0.296150888f,
+    0.954228095f,  0.299079826f,
+    0.953306040f,  0.302005949f,
+    0.952375013f,  0.304929230f,
+    0.951435021f,  0.307849640f,
+    0.950486074f,  0.310767153f,
+    0.949528181f,  0.313681740f,
+    0.948561350f,  0.316593376f,
+    0.947585591f,  0.319502031f,
+    0.946600913f,  0.322407679f,
+    0.945607325f,  0.325310292f,
+    0.944604837f,  0.328209844f,
+    0.943593458f,  0.331106306f,
+    0.942573198f,  0.333999651f,
+    0.941544065f,  0.336889853f,
+    0.940506071f,  0.339776884f,
+    0.939459224f,  0.342660717f,
+    0.938403534f,  0.345541325f,
+    0.937339012f,  0.348418680f,
+    0.936265667f,  0.351292756f,
+    0.935183510f,  0.354163525f,
+    0.934092550f,  0.357030961f,
+    0.932992799f,  0.359895037f,
+    0.931884266f,  0.362755724f,
+    0.930766961f,  0.365612998f,
+    0.929640896f,  0.368466830f,
+    0.928506080f,  0.371317194f,
+    0.927362526f,  0.374164063f,
+    0.926210242f,  0.377007410f,
+    0.925049241f,  0.379847209f,
+    0.923879533f,  0.382683432f,
+    0.922701128f,  0.385516054f,
+    0.921514039f,  0.388345047f,
+    0.920318277f,  0.391170384f,
+    0.919113852f,  0.393992040f,
+    0.917900776f,  0.396809987f,
+    0.916679060f,  0.399624200f,
+    0.915448716f,  0.402434651f,
+    0.914209756f,  0.405241314f,
+    0.912962190f,  0.408044163f,
+    0.911706032f,  0.410843171f,
+    0.910441292f,  0.413638312f,
+    0.909167983f,  0.416429560f,
+    0.907886116f,  0.419216888f,
+    0.906595705f,  0.422000271f,
+    0.905296759f,  0.424779681f,
+    0.903989293f,  0.427555093f,
+    0.902673318f,  0.430326481f,
+    0.901348847f,  0.433093819f,
+    0.900015892f,  0.435857080f,
+    0.898674466f,  0.438616239f,
+    0.897324581f,  0.441371269f,
+    0.895966250f,  0.444122145f,
+    0.894599486f,  0.446868840f,
+    0.893224301f,  0.449611330f,
+    0.891840709f,  0.452349587f,
+    0.890448723f,  0.455083587f,
+    0.889048356f,  0.457813304f,
+    0.887639620f,  0.460538711f,
+    0.886222530f,  0.463259784f,
+    0.884797098f,  0.465976496f,
+    0.883363339f,  0.468688822f,
+    0.881921264f,  0.471396737f,
+    0.880470889f,  0.474100215f,
+    0.879012226f,  0.476799230f,
+    0.877545290f,  0.479493758f,
+    0.876070094f,  0.482183772f,
+    0.874586652f,  0.484869248f,
+    0.873094978f,  0.487550160f,
+    0.871595087f,  0.490226483f,
+    0.870086991f,  0.492898192f,
+    0.868570706f,  0.495565262f,
+    0.867046246f,  0.498227667f,
+    0.865513624f,  0.500885383f,
+    0.863972856f,  0.503538384f,
+    0.862423956f,  0.506186645f,
+    0.860866939f,  0.508830143f,
+    0.859301818f,  0.511468850f,
+    0.857728610f,  0.514102744f,
+    0.856147328f,  0.516731799f,
+    0.854557988f,  0.519355990f,
+    0.852960605f,  0.521975293f,
+    0.851355193f,  0.524589683f,
+    0.849741768f,  0.527199135f,
+    0.848120345f,  0.529803625f,
+    0.846490939f,  0.532403128f,
+    0.844853565f,  0.534997620f,
+    0.843208240f,  0.537587076f,
+    0.841554977f,  0.540171473f,
+    0.839893794f,  0.542750785f,
+    0.838224706f,  0.545324988f,
+    0.836547727f,  0.547894059f,
+    0.834862875f,  0.550457973f,
+    0.833170165f,  0.553016706f,
+    0.831469612f,  0.555570233f,
+    0.829761234f,  0.558118531f,
+    0.828045045f,  0.560661576f,
+    0.826321063f,  0.563199344f,
+    0.824589303f,  0.565731811f,
+    0.822849781f,  0.568258953f,
+    0.821102515f,  0.570780746f,
+    0.819347520f,  0.573297167f,
+    0.817584813f,  0.575808191f,
+    0.815814411f,  0.578313796f,
+    0.814036330f,  0.580813958f,
+    0.812250587f,  0.583308653f,
+    0.810457198f,  0.585797857f,
+    0.808656182f,  0.588281548f,
+    0.806847554f,  0.590759702f,
+    0.805031331f,  0.593232295f,
+    0.803207531f,  0.595699304f,
+    0.801376172f,  0.598160707f,
+    0.799537269f,  0.600616479f,
+    0.797690841f,  0.603066599f,
+    0.795836905f,  0.605511041f,
+    0.793975478f,  0.607949785f,
+    0.792106577f,  0.610382806f,
+    0.790230221f,  0.612810082f,
+    0.788346428f,  0.615231591f,
+    0.786455214f,  0.617647308f,
+    0.784556597f,  0.620057212f,
+    0.782650596f,  0.622461279f,
+    0.780737229f,  0.624859488f,
+    0.778816512f,  0.627251815f,
+    0.776888466f,  0.629638239f,
+    0.774953107f,  0.632018736f,
+    0.773010453f,  0.634393284f,
+    0.771060524f,  0.636761861f,
+    0.769103338f,  0.639124445f,
+    0.767138912f,  0.641481013f,
+    0.765167266f,  0.643831543f,
+    0.763188417f,  0.646176013f,
+    0.761202385f,  0.648514401f,
+    0.759209189f,  0.650846685f,
+    0.757208847f,  0.653172843f,
+    0.755201377f,  0.655492853f,
+    0.753186799f,  0.657806693f,
+    0.751165132f,  0.660114342f,
+    0.749136395f,  0.662415778f,
+    0.747100606f,  0.664710978f,
+    0.745057785f,  0.666999922f,
+    0.743007952f,  0.669282588f,
+    0.740951125f,  0.671558955f,
+    0.738887324f,  0.673829000f,
+    0.736816569f,  0.676092704f,
+    0.734738878f,  0.678350043f,
+    0.732654272f,  0.680600998f,
+    0.730562769f,  0.682845546f,
+    0.728464390f,  0.685083668f,
+    0.726359155f,  0.687315341f,
+    0.724247083f,  0.689540545f,
+    0.722128194f,  0.691759258f,
+    0.720002508f,  0.693971461f,
+    0.717870045f,  0.696177131f,
+    0.715730825f,  0.698376249f,
+    0.713584869f,  0.700568794f,
+    0.711432196f,  0.702754744f,
+    0.709272826f,  0.704934080f,
+    0.707106781f,  0.707106781f,
+    0.704934080f,  0.709272826f,
+    0.702754744f,  0.711432196f,
+    0.700568794f,  0.713584869f,
+    0.698376249f,  0.715730825f,
+    0.696177131f,  0.717870045f,
+    0.693971461f,  0.720002508f,
+    0.691759258f,  0.722128194f,
+    0.689540545f,  0.724247083f,
+    0.687315341f,  0.726359155f,
+    0.685083668f,  0.728464390f,
+    0.682845546f,  0.730562769f,
+    0.680600998f,  0.732654272f,
+    0.678350043f,  0.734738878f,
+    0.676092704f,  0.736816569f,
+    0.673829000f,  0.738887324f,
+    0.671558955f,  0.740951125f,
+    0.669282588f,  0.743007952f,
+    0.666999922f,  0.745057785f,
+    0.664710978f,  0.747100606f,
+    0.662415778f,  0.749136395f,
+    0.660114342f,  0.751165132f,
+    0.657806693f,  0.753186799f,
+    0.655492853f,  0.755201377f,
+    0.653172843f,  0.757208847f,
+    0.650846685f,  0.759209189f,
+    0.648514401f,  0.761202385f,
+    0.646176013f,  0.763188417f,
+    0.643831543f,  0.765167266f,
+    0.641481013f,  0.767138912f,
+    0.639124445f,  0.769103338f,
+    0.636761861f,  0.771060524f,
+    0.634393284f,  0.773010453f,
+    0.632018736f,  0.774953107f,
+    0.629638239f,  0.776888466f,
+    0.627251815f,  0.778816512f,
+    0.624859488f,  0.780737229f,
+    0.622461279f,  0.782650596f,
+    0.620057212f,  0.784556597f,
+    0.617647308f,  0.786455214f,
+    0.615231591f,  0.788346428f,
+    0.612810082f,  0.790230221f,
+    0.610382806f,  0.792106577f,
+    0.607949785f,  0.793975478f,
+    0.605511041f,  0.795836905f,
+    0.603066599f,  0.797690841f,
+    0.600616479f,  0.799537269f,
+    0.598160707f,  0.801376172f,
+    0.595699304f,  0.803207531f,
+    0.593232295f,  0.805031331f,
+    0.590759702f,  0.806847554f,
+    0.588281548f,  0.808656182f,
+    0.585797857f,  0.810457198f,
+    0.583308653f,  0.812250587f,
+    0.580813958f,  0.814036330f,
+    0.578313796f,  0.815814411f,
+    0.575808191f,  0.817584813f,
+    0.573297167f,  0.819347520f,
+    0.570780746f,  0.821102515f,
+    0.568258953f,  0.822849781f,
+    0.565731811f,  0.824589303f,
+    0.563199344f,  0.826321063f,
+    0.560661576f,  0.828045045f,
+    0.558118531f,  0.829761234f,
+    0.555570233f,  0.831469612f,
+    0.553016706f,  0.833170165f,
+    0.550457973f,  0.834862875f,
+    0.547894059f,  0.836547727f,
+    0.545324988f,  0.838224706f,
+    0.542750785f,  0.839893794f,
+    0.540171473f,  0.841554977f,
+    0.537587076f,  0.843208240f,
+    0.534997620f,  0.844853565f,
+    0.532403128f,  0.846490939f,
+    0.529803625f,  0.848120345f,
+    0.527199135f,  0.849741768f,
+    0.524589683f,  0.851355193f,
+    0.521975293f,  0.852960605f,
+    0.519355990f,  0.854557988f,
+    0.516731799f,  0.856147328f,
+    0.514102744f,  0.857728610f,
+    0.511468850f,  0.859301818f,
+    0.508830143f,  0.860866939f,
+    0.506186645f,  0.862423956f,
+    0.503538384f,  0.863972856f,
+    0.500885383f,  0.865513624f,
+    0.498227667f,  0.867046246f,
+    0.495565262f,  0.868570706f,
+    0.492898192f,  0.870086991f,
+    0.490226483f,  0.871595087f,
+    0.487550160f,  0.873094978f,
+    0.484869248f,  0.874586652f,
+    0.482183772f,  0.876070094f,
+    0.479493758f,  0.877545290f,
+    0.476799230f,  0.879012226f,
+    0.474100215f,  0.880470889f,
+    0.471396737f,  0.881921264f,
+    0.468688822f,  0.883363339f,
+    0.465976496f,  0.884797098f,
+    0.463259784f,  0.886222530f,
+    0.460538711f,  0.887639620f,
+    0.457813304f,  0.889048356f,
+    0.455083587f,  0.890448723f,
+    0.452349587f,  0.891840709f,
+    0.449611330f,  0.893224301f,
+    0.446868840f,  0.894599486f,
+    0.444122145f,  0.895966250f,
+    0.441371269f,  0.897324581f,
+    0.438616239f,  0.898674466f,
+    0.435857080f,  0.900015892f,
+    0.433093819f,  0.901348847f,
+    0.430326481f,  0.902673318f,
+    0.427555093f,  0.903989293f,
+    0.424779681f,  0.905296759f,
+    0.422000271f,  0.906595705f,
+    0.419216888f,  0.907886116f,
+    0.416429560f,  0.909167983f,
+    0.413638312f,  0.910441292f,
+    0.410843171f,  0.911706032f,
+    0.408044163f,  0.912962190f,
+    0.405241314f,  0.914209756f,
+    0.402434651f,  0.915448716f,
+    0.399624200f,  0.916679060f,
+    0.396809987f,  0.917900776f,
+    0.393992040f,  0.919113852f,
+    0.391170384f,  0.920318277f,
+    0.388345047f,  0.921514039f,
+    0.385516054f,  0.922701128f,
+    0.382683432f,  0.923879533f,
+    0.379847209f,  0.925049241f,
+    0.377007410f,  0.926210242f,
+    0.374164063f,  0.927362526f,
+    0.371317194f,  0.928506080f,
+    0.368466830f,  0.929640896f,
+    0.365612998f,  0.930766961f,
+    0.362755724f,  0.931884266f,
+    0.359895037f,  0.932992799f,
+    0.357030961f,  0.934092550f,
+    0.354163525f,  0.935183510f,
+    0.351292756f,  0.936265667f,
+    0.348418680f,  0.937339012f,
+    0.345541325f,  0.938403534f,
+    0.342660717f,  0.939459224f,
+    0.339776884f,  0.940506071f,
+    0.336889853f,  0.941544065f,
+    0.333999651f,  0.942573198f,
+    0.331106306f,  0.943593458f,
+    0.328209844f,  0.944604837f,
+    0.325310292f,  0.945607325f,
+    0.322407679f,  0.946600913f,
+    0.319502031f,  0.947585591f,
+    0.316593376f,  0.948561350f,
+    0.313681740f,  0.949528181f,
+    0.310767153f,  0.950486074f,
+    0.307849640f,  0.951435021f,
+    0.304929230f,  0.952375013f,
+    0.302005949f,  0.953306040f,
+    0.299079826f,  0.954228095f,
+    0.296150888f,  0.955141168f,
+    0.293219163f,  0.956045251f,
+    0.290284677f,  0.956940336f,
+    0.287347460f,  0.957826413f,
+    0.284407537f,  0.958703475f,
+    0.281464938f,  0.959571513f,
+    0.278519689f,  0.960430519f,
+    0.275571819f,  0.961280486f,
+    0.272621355f,  0.962121404f,
+    0.269668326f,  0.962953267f,
+    0.266712757f,  0.963776066f,
+    0.263754679f,  0.964589793f,
+    0.260794118f,  0.965394442f,
+    0.257831102f,  0.966190003f,
+    0.254865660f,  0.966976471f,
+    0.251897818f,  0.967753837f,
+    0.248927606f,  0.968522094f,
+    0.245955050f,  0.969281235f,
+    0.242980180f,  0.970031253f,
+    0.240003022f,  0.970772141f,
+    0.237023606f,  0.971503891f,
+    0.234041959f,  0.972226497f,
+    0.231058108f,  0.972939952f,
+    0.228072083f,  0.973644250f,
+    0.225083911f,  0.974339383f,
+    0.222093621f,  0.975025345f,
+    0.219101240f,  0.975702130f,
+    0.216106797f,  0.976369731f,
+    0.213110320f,  0.977028143f,
+    0.210111837f,  0.977677358f,
+    0.207111376f,  0.978317371f,
+    0.204108966f,  0.978948175f,
+    0.201104635f,  0.979569766f,
+    0.198098411f,  0.980182136f,
+    0.195090322f,  0.980785280f,
+    0.192080397f,  0.981379193f,
+    0.189068664f,  0.981963869f,
+    0.186055152f,  0.982539302f,
+    0.183039888f,  0.983105487f,
+    0.180022901f,  0.983662419f,
+    0.177004220f,  0.984210092f,
+    0.173983873f,  0.984748502f,
+    0.170961889f,  0.985277642f,
+    0.167938295f,  0.985797509f,
+    0.164913120f,  0.986308097f,
+    0.161886394f,  0.986809402f,
+    0.158858143f,  0.987301418f,
+    0.155828398f,  0.987784142f,
+    0.152797185f,  0.988257568f,
+    0.149764535f,  0.988721692f,
+    0.146730474f,  0.989176510f,
+    0.143695033f,  0.989622017f,
+    0.140658239f,  0.990058210f,
+    0.137620122f,  0.990485084f,
+    0.134580709f,  0.990902635f,
+    0.131540029f,  0.991310860f,
+    0.128498111f,  0.991709754f,
+    0.125454983f,  0.992099313f,
+    0.122410675f,  0.992479535f,
+    0.119365215f,  0.992850414f,
+    0.116318631f,  0.993211949f,
+    0.113270952f,  0.993564136f,
+    0.110222207f,  0.993906970f,
+    0.107172425f,  0.994240449f,
+    0.104121634f,  0.994564571f,
+    0.101069863f,  0.994879331f,
+    0.098017140f,  0.995184727f,
+    0.094963495f,  0.995480755f,
+    0.091908956f,  0.995767414f,
+    0.088853553f,  0.996044701f,
+    0.085797312f,  0.996312612f,
+    0.082740265f,  0.996571146f,
+    0.079682438f,  0.996820299f,
+    0.076623861f,  0.997060070f,
+    0.073564564f,  0.997290457f,
+    0.070504573f,  0.997511456f,
+    0.067443920f,  0.997723067f,
+    0.064382631f,  0.997925286f,
+    0.061320736f,  0.998118113f,
+    0.058258265f,  0.998301545f,
+    0.055195244f,  0.998475581f,
+    0.052131705f,  0.998640218f,
+    0.049067674f,  0.998795456f,
+    0.046003182f,  0.998941293f,
+    0.042938257f,  0.999077728f,
+    0.039872928f,  0.999204759f,
+    0.036807223f,  0.999322385f,
+    0.033741172f,  0.999430605f,
+    0.030674803f,  0.999529418f,
+    0.027608146f,  0.999618822f,
+    0.024541229f,  0.999698819f,
+    0.021474080f,  0.999769405f,
+    0.018406730f,  0.999830582f,
+    0.015339206f,  0.999882347f,
+    0.012271538f,  0.999924702f,
+    0.009203755f,  0.999957645f,
+    0.006135885f,  0.999981175f,
+    0.003067957f,  0.999995294f,
+    0.000000000f,  1.000000000f,
+   -0.003067957f,  0.999995294f,
+   -0.006135885f,  0.999981175f,
+   -0.009203755f,  0.999957645f,
+   -0.012271538f,  0.999924702f,
+   -0.015339206f,  0.999882347f,
+   -0.018406730f,  0.999830582f,
+   -0.021474080f,  0.999769405f,
+   -0.024541229f,  0.999698819f,
+   -0.027608146f,  0.999618822f,
+   -0.030674803f,  0.999529418f,
+   -0.033741172f,  0.999430605f,
+   -0.036807223f,  0.999322385f,
+   -0.039872928f,  0.999204759f,
+   -0.042938257f,  0.999077728f,
+   -0.046003182f,  0.998941293f,
+   -0.049067674f,  0.998795456f,
+   -0.052131705f,  0.998640218f,
+   -0.055195244f,  0.998475581f,
+   -0.058258265f,  0.998301545f,
+   -0.061320736f,  0.998118113f,
+   -0.064382631f,  0.997925286f,
+   -0.067443920f,  0.997723067f,
+   -0.070504573f,  0.997511456f,
+   -0.073564564f,  0.997290457f,
+   -0.076623861f,  0.997060070f,
+   -0.079682438f,  0.996820299f,
+   -0.082740265f,  0.996571146f,
+   -0.085797312f,  0.996312612f,
+   -0.088853553f,  0.996044701f,
+   -0.091908956f,  0.995767414f,
+   -0.094963495f,  0.995480755f,
+   -0.098017140f,  0.995184727f,
+   -0.101069863f,  0.994879331f,
+   -0.104121634f,  0.994564571f,
+   -0.107172425f,  0.994240449f,
+   -0.110222207f,  0.993906970f,
+   -0.113270952f,  0.993564136f,
+   -0.116318631f,  0.993211949f,
+   -0.119365215f,  0.992850414f,
+   -0.122410675f,  0.992479535f,
+   -0.125454983f,  0.992099313f,
+   -0.128498111f,  0.991709754f,
+   -0.131540029f,  0.991310860f,
+   -0.134580709f,  0.990902635f,
+   -0.137620122f,  0.990485084f,
+   -0.140658239f,  0.990058210f,
+   -0.143695033f,  0.989622017f,
+   -0.146730474f,  0.989176510f,
+   -0.149764535f,  0.988721692f,
+   -0.152797185f,  0.988257568f,
+   -0.155828398f,  0.987784142f,
+   -0.158858143f,  0.987301418f,
+   -0.161886394f,  0.986809402f,
+   -0.164913120f,  0.986308097f,
+   -0.167938295f,  0.985797509f,
+   -0.170961889f,  0.985277642f,
+   -0.173983873f,  0.984748502f,
+   -0.177004220f,  0.984210092f,
+   -0.180022901f,  0.983662419f,
+   -0.183039888f,  0.983105487f,
+   -0.186055152f,  0.982539302f,
+   -0.189068664f,  0.981963869f,
+   -0.192080397f,  0.981379193f,
+   -0.195090322f,  0.980785280f,
+   -0.198098411f,  0.980182136f,
+   -0.201104635f,  0.979569766f,
+   -0.204108966f,  0.978948175f,
+   -0.207111376f,  0.978317371f,
+   -0.210111837f,  0.977677358f,
+   -0.213110320f,  0.977028143f,
+   -0.216106797f,  0.976369731f,
+   -0.219101240f,  0.975702130f,
+   -0.222093621f,  0.975025345f,
+   -0.225083911f,  0.974339383f,
+   -0.228072083f,  0.973644250f,
+   -0.231058108f,  0.972939952f,
+   -0.234041959f,  0.972226497f,
+   -0.237023606f,  0.971503891f,
+   -0.240003022f,  0.970772141f,
+   -0.242980180f,  0.970031253f,
+   -0.245955050f,  0.969281235f,
+   -0.248927606f,  0.968522094f,
+   -0.251897818f,  0.967753837f,
+   -0.254865660f,  0.966976471f,
+   -0.257831102f,  0.966190003f,
+   -0.260794118f,  0.965394442f,
+   -0.263754679f,  0.964589793f,
+   -0.266712757f,  0.963776066f,
+   -0.269668326f,  0.962953267f,
+   -0.272621355f,  0.962121404f,
+   -0.275571819f,  0.961280486f,
+   -0.278519689f,  0.960430519f,
+   -0.281464938f,  0.959571513f,
+   -0.284407537f,  0.958703475f,
+   -0.287347460f,  0.957826413f,
+   -0.290284677f,  0.956940336f,
+   -0.293219163f,  0.956045251f,
+   -0.296150888f,  0.955141168f,
+   -0.299079826f,  0.954228095f,
+   -0.302005949f,  0.953306040f,
+   -0.304929230f,  0.952375013f,
+   -0.307849640f,  0.951435021f,
+   -0.310767153f,  0.950486074f,
+   -0.313681740f,  0.949528181f,
+   -0.316593376f,  0.948561350f,
+   -0.319502031f,  0.947585591f,
+   -0.322407679f,  0.946600913f,
+   -0.325310292f,  0.945607325f,
+   -0.328209844f,  0.944604837f,
+   -0.331106306f,  0.943593458f,
+   -0.333999651f,  0.942573198f,
+   -0.336889853f,  0.941544065f,
+   -0.339776884f,  0.940506071f,
+   -0.342660717f,  0.939459224f,
+   -0.345541325f,  0.938403534f,
+   -0.348418680f,  0.937339012f,
+   -0.351292756f,  0.936265667f,
+   -0.354163525f,  0.935183510f,
+   -0.357030961f,  0.934092550f,
+   -0.359895037f,  0.932992799f,
+   -0.362755724f,  0.931884266f,
+   -0.365612998f,  0.930766961f,
+   -0.368466830f,  0.929640896f,
+   -0.371317194f,  0.928506080f,
+   -0.374164063f,  0.927362526f,
+   -0.377007410f,  0.926210242f,
+   -0.379847209f,  0.925049241f,
+   -0.382683432f,  0.923879533f,
+   -0.385516054f,  0.922701128f,
+   -0.388345047f,  0.921514039f,
+   -0.391170384f,  0.920318277f,
+   -0.393992040f,  0.919113852f,
+   -0.396809987f,  0.917900776f,
+   -0.399624200f,  0.916679060f,
+   -0.402434651f,  0.915448716f,
+   -0.405241314f,  0.914209756f,
+   -0.408044163f,  0.912962190f,
+   -0.410843171f,  0.911706032f,
+   -0.413638312f,  0.910441292f,
+   -0.416429560f,  0.909167983f,
+   -0.419216888f,  0.907886116f,
+   -0.422000271f,  0.906595705f,
+   -0.424779681f,  0.905296759f,
+   -0.427555093f,  0.903989293f,
+   -0.430326481f,  0.902673318f,
+   -0.433093819f,  0.901348847f,
+   -0.435857080f,  0.900015892f,
+   -0.438616239f,  0.898674466f,
+   -0.441371269f,  0.897324581f,
+   -0.444122145f,  0.895966250f,
+   -0.446868840f,  0.894599486f,
+   -0.449611330f,  0.893224301f,
+   -0.452349587f,  0.891840709f,
+   -0.455083587f,  0.890448723f,
+   -0.457813304f,  0.889048356f,
+   -0.460538711f,  0.887639620f,
+   -0.463259784f,  0.886222530f,
+   -0.465976496f,  0.884797098f,
+   -0.468688822f,  0.883363339f,
+   -0.471396737f,  0.881921264f,
+   -0.474100215f,  0.880470889f,
+   -0.476799230f,  0.879012226f,
+   -0.479493758f,  0.877545290f,
+   -0.482183772f,  0.876070094f,
+   -0.484869248f,  0.874586652f,
+   -0.487550160f,  0.873094978f,
+   -0.490226483f,  0.871595087f,
+   -0.492898192f,  0.870086991f,
+   -0.495565262f,  0.868570706f,
+   -0.498227667f,  0.867046246f,
+   -0.500885383f,  0.865513624f,
+   -0.503538384f,  0.863972856f,
+   -0.506186645f,  0.862423956f,
+   -0.508830143f,  0.860866939f,
+   -0.511468850f,  0.859301818f,
+   -0.514102744f,  0.857728610f,
+   -0.516731799f,  0.856147328f,
+   -0.519355990f,  0.854557988f,
+   -0.521975293f,  0.852960605f,
+   -0.524589683f,  0.851355193f,
+   -0.527199135f,  0.849741768f,
+   -0.529803625f,  0.848120345f,
+   -0.532403128f,  0.846490939f,
+   -0.534997620f,  0.844853565f,
+   -0.537587076f,  0.843208240f,
+   -0.540171473f,  0.841554977f,
+   -0.542750785f,  0.839893794f,
+   -0.545324988f,  0.838224706f,
+   -0.547894059f,  0.836547727f,
+   -0.550457973f,  0.834862875f,
+   -0.553016706f,  0.833170165f,
+   -0.555570233f,  0.831469612f,
+   -0.558118531f,  0.829761234f,
+   -0.560661576f,  0.828045045f,
+   -0.563199344f,  0.826321063f,
+   -0.565731811f,  0.824589303f,
+   -0.568258953f,  0.822849781f,
+   -0.570780746f,  0.821102515f,
+   -0.573297167f,  0.819347520f,
+   -0.575808191f,  0.817584813f,
+   -0.578313796f,  0.815814411f,
+   -0.580813958f,  0.814036330f,
+   -0.583308653f,  0.812250587f,
+   -0.585797857f,  0.810457198f,
+   -0.588281548f,  0.808656182f,
+   -0.590759702f,  0.806847554f,
+   -0.593232295f,  0.805031331f,
+   -0.595699304f,  0.803207531f,
+   -0.598160707f,  0.801376172f,
+   -0.600616479f,  0.799537269f,
+   -0.603066599f,  0.797690841f,
+   -0.605511041f,  0.795836905f,
+   -0.607949785f,  0.793975478f,
+   -0.610382806f,  0.792106577f,
+   -0.612810082f,  0.790230221f,
+   -0.615231591f,  0.788346428f,
+   -0.617647308f,  0.786455214f,
+   -0.620057212f,  0.784556597f,
+   -0.622461279f,  0.782650596f,
+   -0.624859488f,  0.780737229f,
+   -0.627251815f,  0.778816512f,
+   -0.629638239f,  0.776888466f,
+   -0.632018736f,  0.774953107f,
+   -0.634393284f,  0.773010453f,
+   -0.636761861f,  0.771060524f,
+   -0.639124445f,  0.769103338f,
+   -0.641481013f,  0.767138912f,
+   -0.643831543f,  0.765167266f,
+   -0.646176013f,  0.763188417f,
+   -0.648514401f,  0.761202385f,
+   -0.650846685f,  0.759209189f,
+   -0.653172843f,  0.757208847f,
+   -0.655492853f,  0.755201377f,
+   -0.657806693f,  0.753186799f,
+   -0.660114342f,  0.751165132f,
+   -0.662415778f,  0.749136395f,
+   -0.664710978f,  0.747100606f,
+   -0.666999922f,  0.745057785f,
+   -0.669282588f,  0.743007952f,
+   -0.671558955f,  0.740951125f,
+   -0.673829000f,  0.738887324f,
+   -0.676092704f,  0.736816569f,
+   -0.678350043f,  0.734738878f,
+   -0.680600998f,  0.732654272f,
+   -0.682845546f,  0.730562769f,
+   -0.685083668f,  0.728464390f,
+   -0.687315341f,  0.726359155f,
+   -0.689540545f,  0.724247083f,
+   -0.691759258f,  0.722128194f,
+   -0.693971461f,  0.720002508f,
+   -0.696177131f,  0.717870045f,
+   -0.698376249f,  0.715730825f,
+   -0.700568794f,  0.713584869f,
+   -0.702754744f,  0.711432196f,
+   -0.704934080f,  0.709272826f,
+   -0.707106781f,  0.707106781f,
+   -0.709272826f,  0.704934080f,
+   -0.711432196f,  0.702754744f,
+   -0.713584869f,  0.700568794f,
+   -0.715730825f,  0.698376249f,
+   -0.717870045f,  0.696177131f,
+   -0.720002508f,  0.693971461f,
+   -0.722128194f,  0.691759258f,
+   -0.724247083f,  0.689540545f,
+   -0.726359155f,  0.687315341f,
+   -0.728464390f,  0.685083668f,
+   -0.730562769f,  0.682845546f,
+   -0.732654272f,  0.680600998f,
+   -0.734738878f,  0.678350043f,
+   -0.736816569f,  0.676092704f,
+   -0.738887324f,  0.673829000f,
+   -0.740951125f,  0.671558955f,
+   -0.743007952f,  0.669282588f,
+   -0.745057785f,  0.666999922f,
+   -0.747100606f,  0.664710978f,
+   -0.749136395f,  0.662415778f,
+   -0.751165132f,  0.660114342f,
+   -0.753186799f,  0.657806693f,
+   -0.755201377f,  0.655492853f,
+   -0.757208847f,  0.653172843f,
+   -0.759209189f,  0.650846685f,
+   -0.761202385f,  0.648514401f,
+   -0.763188417f,  0.646176013f,
+   -0.765167266f,  0.643831543f,
+   -0.767138912f,  0.641481013f,
+   -0.769103338f,  0.639124445f,
+   -0.771060524f,  0.636761861f,
+   -0.773010453f,  0.634393284f,
+   -0.774953107f,  0.632018736f,
+   -0.776888466f,  0.629638239f,
+   -0.778816512f,  0.627251815f,
+   -0.780737229f,  0.624859488f,
+   -0.782650596f,  0.622461279f,
+   -0.784556597f,  0.620057212f,
+   -0.786455214f,  0.617647308f,
+   -0.788346428f,  0.615231591f,
+   -0.790230221f,  0.612810082f,
+   -0.792106577f,  0.610382806f,
+   -0.793975478f,  0.607949785f,
+   -0.795836905f,  0.605511041f,
+   -0.797690841f,  0.603066599f,
+   -0.799537269f,  0.600616479f,
+   -0.801376172f,  0.598160707f,
+   -0.803207531f,  0.595699304f,
+   -0.805031331f,  0.593232295f,
+   -0.806847554f,  0.590759702f,
+   -0.808656182f,  0.588281548f,
+   -0.810457198f,  0.585797857f,
+   -0.812250587f,  0.583308653f,
+   -0.814036330f,  0.580813958f,
+   -0.815814411f,  0.578313796f,
+   -0.817584813f,  0.575808191f,
+   -0.819347520f,  0.573297167f,
+   -0.821102515f,  0.570780746f,
+   -0.822849781f,  0.568258953f,
+   -0.824589303f,  0.565731811f,
+   -0.826321063f,  0.563199344f,
+   -0.828045045f,  0.560661576f,
+   -0.829761234f,  0.558118531f,
+   -0.831469612f,  0.555570233f,
+   -0.833170165f,  0.553016706f,
+   -0.834862875f,  0.550457973f,
+   -0.836547727f,  0.547894059f,
+   -0.838224706f,  0.545324988f,
+   -0.839893794f,  0.542750785f,
+   -0.841554977f,  0.540171473f,
+   -0.843208240f,  0.537587076f,
+   -0.844853565f,  0.534997620f,
+   -0.846490939f,  0.532403128f,
+   -0.848120345f,  0.529803625f,
+   -0.849741768f,  0.527199135f,
+   -0.851355193f,  0.524589683f,
+   -0.852960605f,  0.521975293f,
+   -0.854557988f,  0.519355990f,
+   -0.856147328f,  0.516731799f,
+   -0.857728610f,  0.514102744f,
+   -0.859301818f,  0.511468850f,
+   -0.860866939f,  0.508830143f,
+   -0.862423956f,  0.506186645f,
+   -0.863972856f,  0.503538384f,
+   -0.865513624f,  0.500885383f,
+   -0.867046246f,  0.498227667f,
+   -0.868570706f,  0.495565262f,
+   -0.870086991f,  0.492898192f,
+   -0.871595087f,  0.490226483f,
+   -0.873094978f,  0.487550160f,
+   -0.874586652f,  0.484869248f,
+   -0.876070094f,  0.482183772f,
+   -0.877545290f,  0.479493758f,
+   -0.879012226f,  0.476799230f,
+   -0.880470889f,  0.474100215f,
+   -0.881921264f,  0.471396737f,
+   -0.883363339f,  0.468688822f,
+   -0.884797098f,  0.465976496f,
+   -0.886222530f,  0.463259784f,
+   -0.887639620f,  0.460538711f,
+   -0.889048356f,  0.457813304f,
+   -0.890448723f,  0.455083587f,
+   -0.891840709f,  0.452349587f,
+   -0.893224301f,  0.449611330f,
+   -0.894599486f,  0.446868840f,
+   -0.895966250f,  0.444122145f,
+   -0.897324581f,  0.441371269f,
+   -0.898674466f,  0.438616239f,
+   -0.900015892f,  0.435857080f,
+   -0.901348847f,  0.433093819f,
+   -0.902673318f,  0.430326481f,
+   -0.903989293f,  0.427555093f,
+   -0.905296759f,  0.424779681f,
+   -0.906595705f,  0.422000271f,
+   -0.907886116f,  0.419216888f,
+   -0.909167983f,  0.416429560f,
+   -0.910441292f,  0.413638312f,
+   -0.911706032f,  0.410843171f,
+   -0.912962190f,  0.408044163f,
+   -0.914209756f,  0.405241314f,
+   -0.915448716f,  0.402434651f,
+   -0.916679060f,  0.399624200f,
+   -0.917900776f,  0.396809987f,
+   -0.919113852f,  0.393992040f,
+   -0.920318277f,  0.391170384f,
+   -0.921514039f,  0.388345047f,
+   -0.922701128f,  0.385516054f,
+   -0.923879533f,  0.382683432f,
+   -0.925049241f,  0.379847209f,
+   -0.926210242f,  0.377007410f,
+   -0.927362526f,  0.374164063f,
+   -0.928506080f,  0.371317194f,
+   -0.929640896f,  0.368466830f,
+   -0.930766961f,  0.365612998f,
+   -0.931884266f,  0.362755724f,
+   -0.932992799f,  0.359895037f,
+   -0.934092550f,  0.357030961f,
+   -0.935183510f,  0.354163525f,
+   -0.936265667f,  0.351292756f,
+   -0.937339012f,  0.348418680f,
+   -0.938403534f,  0.345541325f,
+   -0.939459224f,  0.342660717f,
+   -0.940506071f,  0.339776884f,
+   -0.941544065f,  0.336889853f,
+   -0.942573198f,  0.333999651f,
+   -0.943593458f,  0.331106306f,
+   -0.944604837f,  0.328209844f,
+   -0.945607325f,  0.325310292f,
+   -0.946600913f,  0.322407679f,
+   -0.947585591f,  0.319502031f,
+   -0.948561350f,  0.316593376f,
+   -0.949528181f,  0.313681740f,
+   -0.950486074f,  0.310767153f,
+   -0.951435021f,  0.307849640f,
+   -0.952375013f,  0.304929230f,
+   -0.953306040f,  0.302005949f,
+   -0.954228095f,  0.299079826f,
+   -0.955141168f,  0.296150888f,
+   -0.956045251f,  0.293219163f,
+   -0.956940336f,  0.290284677f,
+   -0.957826413f,  0.287347460f,
+   -0.958703475f,  0.284407537f,
+   -0.959571513f,  0.281464938f,
+   -0.960430519f,  0.278519689f,
+   -0.961280486f,  0.275571819f,
+   -0.962121404f,  0.272621355f,
+   -0.962953267f,  0.269668326f,
+   -0.963776066f,  0.266712757f,
+   -0.964589793f,  0.263754679f,
+   -0.965394442f,  0.260794118f,
+   -0.966190003f,  0.257831102f,
+   -0.966976471f,  0.254865660f,
+   -0.967753837f,  0.251897818f,
+   -0.968522094f,  0.248927606f,
+   -0.969281235f,  0.245955050f,
+   -0.970031253f,  0.242980180f,
+   -0.970772141f,  0.240003022f,
+   -0.971503891f,  0.237023606f,
+   -0.972226497f,  0.234041959f,
+   -0.972939952f,  0.231058108f,
+   -0.973644250f,  0.228072083f,
+   -0.974339383f,  0.225083911f,
+   -0.975025345f,  0.222093621f,
+   -0.975702130f,  0.219101240f,
+   -0.976369731f,  0.216106797f,
+   -0.977028143f,  0.213110320f,
+   -0.977677358f,  0.210111837f,
+   -0.978317371f,  0.207111376f,
+   -0.978948175f,  0.204108966f,
+   -0.979569766f,  0.201104635f,
+   -0.980182136f,  0.198098411f,
+   -0.980785280f,  0.195090322f,
+   -0.981379193f,  0.192080397f,
+   -0.981963869f,  0.189068664f,
+   -0.982539302f,  0.186055152f,
+   -0.983105487f,  0.183039888f,
+   -0.983662419f,  0.180022901f,
+   -0.984210092f,  0.177004220f,
+   -0.984748502f,  0.173983873f,
+   -0.985277642f,  0.170961889f,
+   -0.985797509f,  0.167938295f,
+   -0.986308097f,  0.164913120f,
+   -0.986809402f,  0.161886394f,
+   -0.987301418f,  0.158858143f,
+   -0.987784142f,  0.155828398f,
+   -0.988257568f,  0.152797185f,
+   -0.988721692f,  0.149764535f,
+   -0.989176510f,  0.146730474f,
+   -0.989622017f,  0.143695033f,
+   -0.990058210f,  0.140658239f,
+   -0.990485084f,  0.137620122f,
+   -0.990902635f,  0.134580709f,
+   -0.991310860f,  0.131540029f,
+   -0.991709754f,  0.128498111f,
+   -0.992099313f,  0.125454983f,
+   -0.992479535f,  0.122410675f,
+   -0.992850414f,  0.119365215f,
+   -0.993211949f,  0.116318631f,
+   -0.993564136f,  0.113270952f,
+   -0.993906970f,  0.110222207f,
+   -0.994240449f,  0.107172425f,
+   -0.994564571f,  0.104121634f,
+   -0.994879331f,  0.101069863f,
+   -0.995184727f,  0.098017140f,
+   -0.995480755f,  0.094963495f,
+   -0.995767414f,  0.091908956f,
+   -0.996044701f,  0.088853553f,
+   -0.996312612f,  0.085797312f,
+   -0.996571146f,  0.082740265f,
+   -0.996820299f,  0.079682438f,
+   -0.997060070f,  0.076623861f,
+   -0.997290457f,  0.073564564f,
+   -0.997511456f,  0.070504573f,
+   -0.997723067f,  0.067443920f,
+   -0.997925286f,  0.064382631f,
+   -0.998118113f,  0.061320736f,
+   -0.998301545f,  0.058258265f,
+   -0.998475581f,  0.055195244f,
+   -0.998640218f,  0.052131705f,
+   -0.998795456f,  0.049067674f,
+   -0.998941293f,  0.046003182f,
+   -0.999077728f,  0.042938257f,
+   -0.999204759f,  0.039872928f,
+   -0.999322385f,  0.036807223f,
+   -0.999430605f,  0.033741172f,
+   -0.999529418f,  0.030674803f,
+   -0.999618822f,  0.027608146f,
+   -0.999698819f,  0.024541229f,
+   -0.999769405f,  0.021474080f,
+   -0.999830582f,  0.018406730f,
+   -0.999882347f,  0.015339206f,
+   -0.999924702f,  0.012271538f,
+   -0.999957645f,  0.009203755f,
+   -0.999981175f,  0.006135885f,
+   -0.999995294f,  0.003067957f,
+   -1.000000000f,  0.000000000f,
+   -0.999995294f, -0.003067957f,
+   -0.999981175f, -0.006135885f,
+   -0.999957645f, -0.009203755f,
+   -0.999924702f, -0.012271538f,
+   -0.999882347f, -0.015339206f,
+   -0.999830582f, -0.018406730f,
+   -0.999769405f, -0.021474080f,
+   -0.999698819f, -0.024541229f,
+   -0.999618822f, -0.027608146f,
+   -0.999529418f, -0.030674803f,
+   -0.999430605f, -0.033741172f,
+   -0.999322385f, -0.036807223f,
+   -0.999204759f, -0.039872928f,
+   -0.999077728f, -0.042938257f,
+   -0.998941293f, -0.046003182f,
+   -0.998795456f, -0.049067674f,
+   -0.998640218f, -0.052131705f,
+   -0.998475581f, -0.055195244f,
+   -0.998301545f, -0.058258265f,
+   -0.998118113f, -0.061320736f,
+   -0.997925286f, -0.064382631f,
+   -0.997723067f, -0.067443920f,
+   -0.997511456f, -0.070504573f,
+   -0.997290457f, -0.073564564f,
+   -0.997060070f, -0.076623861f,
+   -0.996820299f, -0.079682438f,
+   -0.996571146f, -0.082740265f,
+   -0.996312612f, -0.085797312f,
+   -0.996044701f, -0.088853553f,
+   -0.995767414f, -0.091908956f,
+   -0.995480755f, -0.094963495f,
+   -0.995184727f, -0.098017140f,
+   -0.994879331f, -0.101069863f,
+   -0.994564571f, -0.104121634f,
+   -0.994240449f, -0.107172425f,
+   -0.993906970f, -0.110222207f,
+   -0.993564136f, -0.113270952f,
+   -0.993211949f, -0.116318631f,
+   -0.992850414f, -0.119365215f,
+   -0.992479535f, -0.122410675f,
+   -0.992099313f, -0.125454983f,
+   -0.991709754f, -0.128498111f,
+   -0.991310860f, -0.131540029f,
+   -0.990902635f, -0.134580709f,
+   -0.990485084f, -0.137620122f,
+   -0.990058210f, -0.140658239f,
+   -0.989622017f, -0.143695033f,
+   -0.989176510f, -0.146730474f,
+   -0.988721692f, -0.149764535f,
+   -0.988257568f, -0.152797185f,
+   -0.987784142f, -0.155828398f,
+   -0.987301418f, -0.158858143f,
+   -0.986809402f, -0.161886394f,
+   -0.986308097f, -0.164913120f,
+   -0.985797509f, -0.167938295f,
+   -0.985277642f, -0.170961889f,
+   -0.984748502f, -0.173983873f,
+   -0.984210092f, -0.177004220f,
+   -0.983662419f, -0.180022901f,
+   -0.983105487f, -0.183039888f,
+   -0.982539302f, -0.186055152f,
+   -0.981963869f, -0.189068664f,
+   -0.981379193f, -0.192080397f,
+   -0.980785280f, -0.195090322f,
+   -0.980182136f, -0.198098411f,
+   -0.979569766f, -0.201104635f,
+   -0.978948175f, -0.204108966f,
+   -0.978317371f, -0.207111376f,
+   -0.977677358f, -0.210111837f,
+   -0.977028143f, -0.213110320f,
+   -0.976369731f, -0.216106797f,
+   -0.975702130f, -0.219101240f,
+   -0.975025345f, -0.222093621f,
+   -0.974339383f, -0.225083911f,
+   -0.973644250f, -0.228072083f,
+   -0.972939952f, -0.231058108f,
+   -0.972226497f, -0.234041959f,
+   -0.971503891f, -0.237023606f,
+   -0.970772141f, -0.240003022f,
+   -0.970031253f, -0.242980180f,
+   -0.969281235f, -0.245955050f,
+   -0.968522094f, -0.248927606f,
+   -0.967753837f, -0.251897818f,
+   -0.966976471f, -0.254865660f,
+   -0.966190003f, -0.257831102f,
+   -0.965394442f, -0.260794118f,
+   -0.964589793f, -0.263754679f,
+   -0.963776066f, -0.266712757f,
+   -0.962953267f, -0.269668326f,
+   -0.962121404f, -0.272621355f,
+   -0.961280486f, -0.275571819f,
+   -0.960430519f, -0.278519689f,
+   -0.959571513f, -0.281464938f,
+   -0.958703475f, -0.284407537f,
+   -0.957826413f, -0.287347460f,
+   -0.956940336f, -0.290284677f,
+   -0.956045251f, -0.293219163f,
+   -0.955141168f, -0.296150888f,
+   -0.954228095f, -0.299079826f,
+   -0.953306040f, -0.302005949f,
+   -0.952375013f, -0.304929230f,
+   -0.951435021f, -0.307849640f,
+   -0.950486074f, -0.310767153f,
+   -0.949528181f, -0.313681740f,
+   -0.948561350f, -0.316593376f,
+   -0.947585591f, -0.319502031f,
+   -0.946600913f, -0.322407679f,
+   -0.945607325f, -0.325310292f,
+   -0.944604837f, -0.328209844f,
+   -0.943593458f, -0.331106306f,
+   -0.942573198f, -0.333999651f,
+   -0.941544065f, -0.336889853f,
+   -0.940506071f, -0.339776884f,
+   -0.939459224f, -0.342660717f,
+   -0.938403534f, -0.345541325f,
+   -0.937339012f, -0.348418680f,
+   -0.936265667f, -0.351292756f,
+   -0.935183510f, -0.354163525f,
+   -0.934092550f, -0.357030961f,
+   -0.932992799f, -0.359895037f,
+   -0.931884266f, -0.362755724f,
+   -0.930766961f, -0.365612998f,
+   -0.929640896f, -0.368466830f,
+   -0.928506080f, -0.371317194f,
+   -0.927362526f, -0.374164063f,
+   -0.926210242f, -0.377007410f,
+   -0.925049241f, -0.379847209f,
+   -0.923879533f, -0.382683432f,
+   -0.922701128f, -0.385516054f,
+   -0.921514039f, -0.388345047f,
+   -0.920318277f, -0.391170384f,
+   -0.919113852f, -0.393992040f,
+   -0.917900776f, -0.396809987f,
+   -0.916679060f, -0.399624200f,
+   -0.915448716f, -0.402434651f,
+   -0.914209756f, -0.405241314f,
+   -0.912962190f, -0.408044163f,
+   -0.911706032f, -0.410843171f,
+   -0.910441292f, -0.413638312f,
+   -0.909167983f, -0.416429560f,
+   -0.907886116f, -0.419216888f,
+   -0.906595705f, -0.422000271f,
+   -0.905296759f, -0.424779681f,
+   -0.903989293f, -0.427555093f,
+   -0.902673318f, -0.430326481f,
+   -0.901348847f, -0.433093819f,
+   -0.900015892f, -0.435857080f,
+   -0.898674466f, -0.438616239f,
+   -0.897324581f, -0.441371269f,
+   -0.895966250f, -0.444122145f,
+   -0.894599486f, -0.446868840f,
+   -0.893224301f, -0.449611330f,
+   -0.891840709f, -0.452349587f,
+   -0.890448723f, -0.455083587f,
+   -0.889048356f, -0.457813304f,
+   -0.887639620f, -0.460538711f,
+   -0.886222530f, -0.463259784f,
+   -0.884797098f, -0.465976496f,
+   -0.883363339f, -0.468688822f,
+   -0.881921264f, -0.471396737f,
+   -0.880470889f, -0.474100215f,
+   -0.879012226f, -0.476799230f,
+   -0.877545290f, -0.479493758f,
+   -0.876070094f, -0.482183772f,
+   -0.874586652f, -0.484869248f,
+   -0.873094978f, -0.487550160f,
+   -0.871595087f, -0.490226483f,
+   -0.870086991f, -0.492898192f,
+   -0.868570706f, -0.495565262f,
+   -0.867046246f, -0.498227667f,
+   -0.865513624f, -0.500885383f,
+   -0.863972856f, -0.503538384f,
+   -0.862423956f, -0.506186645f,
+   -0.860866939f, -0.508830143f,
+   -0.859301818f, -0.511468850f,
+   -0.857728610f, -0.514102744f,
+   -0.856147328f, -0.516731799f,
+   -0.854557988f, -0.519355990f,
+   -0.852960605f, -0.521975293f,
+   -0.851355193f, -0.524589683f,
+   -0.849741768f, -0.527199135f,
+   -0.848120345f, -0.529803625f,
+   -0.846490939f, -0.532403128f,
+   -0.844853565f, -0.534997620f,
+   -0.843208240f, -0.537587076f,
+   -0.841554977f, -0.540171473f,
+   -0.839893794f, -0.542750785f,
+   -0.838224706f, -0.545324988f,
+   -0.836547727f, -0.547894059f,
+   -0.834862875f, -0.550457973f,
+   -0.833170165f, -0.553016706f,
+   -0.831469612f, -0.555570233f,
+   -0.829761234f, -0.558118531f,
+   -0.828045045f, -0.560661576f,
+   -0.826321063f, -0.563199344f,
+   -0.824589303f, -0.565731811f,
+   -0.822849781f, -0.568258953f,
+   -0.821102515f, -0.570780746f,
+   -0.819347520f, -0.573297167f,
+   -0.817584813f, -0.575808191f,
+   -0.815814411f, -0.578313796f,
+   -0.814036330f, -0.580813958f,
+   -0.812250587f, -0.583308653f,
+   -0.810457198f, -0.585797857f,
+   -0.808656182f, -0.588281548f,
+   -0.806847554f, -0.590759702f,
+   -0.805031331f, -0.593232295f,
+   -0.803207531f, -0.595699304f,
+   -0.801376172f, -0.598160707f,
+   -0.799537269f, -0.600616479f,
+   -0.797690841f, -0.603066599f,
+   -0.795836905f, -0.605511041f,
+   -0.793975478f, -0.607949785f,
+   -0.792106577f, -0.610382806f,
+   -0.790230221f, -0.612810082f,
+   -0.788346428f, -0.615231591f,
+   -0.786455214f, -0.617647308f,
+   -0.784556597f, -0.620057212f,
+   -0.782650596f, -0.622461279f,
+   -0.780737229f, -0.624859488f,
+   -0.778816512f, -0.627251815f,
+   -0.776888466f, -0.629638239f,
+   -0.774953107f, -0.632018736f,
+   -0.773010453f, -0.634393284f,
+   -0.771060524f, -0.636761861f,
+   -0.769103338f, -0.639124445f,
+   -0.767138912f, -0.641481013f,
+   -0.765167266f, -0.643831543f,
+   -0.763188417f, -0.646176013f,
+   -0.761202385f, -0.648514401f,
+   -0.759209189f, -0.650846685f,
+   -0.757208847f, -0.653172843f,
+   -0.755201377f, -0.655492853f,
+   -0.753186799f, -0.657806693f,
+   -0.751165132f, -0.660114342f,
+   -0.749136395f, -0.662415778f,
+   -0.747100606f, -0.664710978f,
+   -0.745057785f, -0.666999922f,
+   -0.743007952f, -0.669282588f,
+   -0.740951125f, -0.671558955f,
+   -0.738887324f, -0.673829000f,
+   -0.736816569f, -0.676092704f,
+   -0.734738878f, -0.678350043f,
+   -0.732654272f, -0.680600998f,
+   -0.730562769f, -0.682845546f,
+   -0.728464390f, -0.685083668f,
+   -0.726359155f, -0.687315341f,
+   -0.724247083f, -0.689540545f,
+   -0.722128194f, -0.691759258f,
+   -0.720002508f, -0.693971461f,
+   -0.717870045f, -0.696177131f,
+   -0.715730825f, -0.698376249f,
+   -0.713584869f, -0.700568794f,
+   -0.711432196f, -0.702754744f,
+   -0.709272826f, -0.704934080f,
+   -0.707106781f, -0.707106781f,
+   -0.704934080f, -0.709272826f,
+   -0.702754744f, -0.711432196f,
+   -0.700568794f, -0.713584869f,
+   -0.698376249f, -0.715730825f,
+   -0.696177131f, -0.717870045f,
+   -0.693971461f, -0.720002508f,
+   -0.691759258f, -0.722128194f,
+   -0.689540545f, -0.724247083f,
+   -0.687315341f, -0.726359155f,
+   -0.685083668f, -0.728464390f,
+   -0.682845546f, -0.730562769f,
+   -0.680600998f, -0.732654272f,
+   -0.678350043f, -0.734738878f,
+   -0.676092704f, -0.736816569f,
+   -0.673829000f, -0.738887324f,
+   -0.671558955f, -0.740951125f,
+   -0.669282588f, -0.743007952f,
+   -0.666999922f, -0.745057785f,
+   -0.664710978f, -0.747100606f,
+   -0.662415778f, -0.749136395f,
+   -0.660114342f, -0.751165132f,
+   -0.657806693f, -0.753186799f,
+   -0.655492853f, -0.755201377f,
+   -0.653172843f, -0.757208847f,
+   -0.650846685f, -0.759209189f,
+   -0.648514401f, -0.761202385f,
+   -0.646176013f, -0.763188417f,
+   -0.643831543f, -0.765167266f,
+   -0.641481013f, -0.767138912f,
+   -0.639124445f, -0.769103338f,
+   -0.636761861f, -0.771060524f,
+   -0.634393284f, -0.773010453f,
+   -0.632018736f, -0.774953107f,
+   -0.629638239f, -0.776888466f,
+   -0.627251815f, -0.778816512f,
+   -0.624859488f, -0.780737229f,
+   -0.622461279f, -0.782650596f,
+   -0.620057212f, -0.784556597f,
+   -0.617647308f, -0.786455214f,
+   -0.615231591f, -0.788346428f,
+   -0.612810082f, -0.790230221f,
+   -0.610382806f, -0.792106577f,
+   -0.607949785f, -0.793975478f,
+   -0.605511041f, -0.795836905f,
+   -0.603066599f, -0.797690841f,
+   -0.600616479f, -0.799537269f,
+   -0.598160707f, -0.801376172f,
+   -0.595699304f, -0.803207531f,
+   -0.593232295f, -0.805031331f,
+   -0.590759702f, -0.806847554f,
+   -0.588281548f, -0.808656182f,
+   -0.585797857f, -0.810457198f,
+   -0.583308653f, -0.812250587f,
+   -0.580813958f, -0.814036330f,
+   -0.578313796f, -0.815814411f,
+   -0.575808191f, -0.817584813f,
+   -0.573297167f, -0.819347520f,
+   -0.570780746f, -0.821102515f,
+   -0.568258953f, -0.822849781f,
+   -0.565731811f, -0.824589303f,
+   -0.563199344f, -0.826321063f,
+   -0.560661576f, -0.828045045f,
+   -0.558118531f, -0.829761234f,
+   -0.555570233f, -0.831469612f,
+   -0.553016706f, -0.833170165f,
+   -0.550457973f, -0.834862875f,
+   -0.547894059f, -0.836547727f,
+   -0.545324988f, -0.838224706f,
+   -0.542750785f, -0.839893794f,
+   -0.540171473f, -0.841554977f,
+   -0.537587076f, -0.843208240f,
+   -0.534997620f, -0.844853565f,
+   -0.532403128f, -0.846490939f,
+   -0.529803625f, -0.848120345f,
+   -0.527199135f, -0.849741768f,
+   -0.524589683f, -0.851355193f,
+   -0.521975293f, -0.852960605f,
+   -0.519355990f, -0.854557988f,
+   -0.516731799f, -0.856147328f,
+   -0.514102744f, -0.857728610f,
+   -0.511468850f, -0.859301818f,
+   -0.508830143f, -0.860866939f,
+   -0.506186645f, -0.862423956f,
+   -0.503538384f, -0.863972856f,
+   -0.500885383f, -0.865513624f,
+   -0.498227667f, -0.867046246f,
+   -0.495565262f, -0.868570706f,
+   -0.492898192f, -0.870086991f,
+   -0.490226483f, -0.871595087f,
+   -0.487550160f, -0.873094978f,
+   -0.484869248f, -0.874586652f,
+   -0.482183772f, -0.876070094f,
+   -0.479493758f, -0.877545290f,
+   -0.476799230f, -0.879012226f,
+   -0.474100215f, -0.880470889f,
+   -0.471396737f, -0.881921264f,
+   -0.468688822f, -0.883363339f,
+   -0.465976496f, -0.884797098f,
+   -0.463259784f, -0.886222530f,
+   -0.460538711f, -0.887639620f,
+   -0.457813304f, -0.889048356f,
+   -0.455083587f, -0.890448723f,
+   -0.452349587f, -0.891840709f,
+   -0.449611330f, -0.893224301f,
+   -0.446868840f, -0.894599486f,
+   -0.444122145f, -0.895966250f,
+   -0.441371269f, -0.897324581f,
+   -0.438616239f, -0.898674466f,
+   -0.435857080f, -0.900015892f,
+   -0.433093819f, -0.901348847f,
+   -0.430326481f, -0.902673318f,
+   -0.427555093f, -0.903989293f,
+   -0.424779681f, -0.905296759f,
+   -0.422000271f, -0.906595705f,
+   -0.419216888f, -0.907886116f,
+   -0.416429560f, -0.909167983f,
+   -0.413638312f, -0.910441292f,
+   -0.410843171f, -0.911706032f,
+   -0.408044163f, -0.912962190f,
+   -0.405241314f, -0.914209756f,
+   -0.402434651f, -0.915448716f,
+   -0.399624200f, -0.916679060f,
+   -0.396809987f, -0.917900776f,
+   -0.393992040f, -0.919113852f,
+   -0.391170384f, -0.920318277f,
+   -0.388345047f, -0.921514039f,
+   -0.385516054f, -0.922701128f,
+   -0.382683432f, -0.923879533f,
+   -0.379847209f, -0.925049241f,
+   -0.377007410f, -0.926210242f,
+   -0.374164063f, -0.927362526f,
+   -0.371317194f, -0.928506080f,
+   -0.368466830f, -0.929640896f,
+   -0.365612998f, -0.930766961f,
+   -0.362755724f, -0.931884266f,
+   -0.359895037f, -0.932992799f,
+   -0.357030961f, -0.934092550f,
+   -0.354163525f, -0.935183510f,
+   -0.351292756f, -0.936265667f,
+   -0.348418680f, -0.937339012f,
+   -0.345541325f, -0.938403534f,
+   -0.342660717f, -0.939459224f,
+   -0.339776884f, -0.940506071f,
+   -0.336889853f, -0.941544065f,
+   -0.333999651f, -0.942573198f,
+   -0.331106306f, -0.943593458f,
+   -0.328209844f, -0.944604837f,
+   -0.325310292f, -0.945607325f,
+   -0.322407679f, -0.946600913f,
+   -0.319502031f, -0.947585591f,
+   -0.316593376f, -0.948561350f,
+   -0.313681740f, -0.949528181f,
+   -0.310767153f, -0.950486074f,
+   -0.307849640f, -0.951435021f,
+   -0.304929230f, -0.952375013f,
+   -0.302005949f, -0.953306040f,
+   -0.299079826f, -0.954228095f,
+   -0.296150888f, -0.955141168f,
+   -0.293219163f, -0.956045251f,
+   -0.290284677f, -0.956940336f,
+   -0.287347460f, -0.957826413f,
+   -0.284407537f, -0.958703475f,
+   -0.281464938f, -0.959571513f,
+   -0.278519689f, -0.960430519f,
+   -0.275571819f, -0.961280486f,
+   -0.272621355f, -0.962121404f,
+   -0.269668326f, -0.962953267f,
+   -0.266712757f, -0.963776066f,
+   -0.263754679f, -0.964589793f,
+   -0.260794118f, -0.965394442f,
+   -0.257831102f, -0.966190003f,
+   -0.254865660f, -0.966976471f,
+   -0.251897818f, -0.967753837f,
+   -0.248927606f, -0.968522094f,
+   -0.245955050f, -0.969281235f,
+   -0.242980180f, -0.970031253f,
+   -0.240003022f, -0.970772141f,
+   -0.237023606f, -0.971503891f,
+   -0.234041959f, -0.972226497f,
+   -0.231058108f, -0.972939952f,
+   -0.228072083f, -0.973644250f,
+   -0.225083911f, -0.974339383f,
+   -0.222093621f, -0.975025345f,
+   -0.219101240f, -0.975702130f,
+   -0.216106797f, -0.976369731f,
+   -0.213110320f, -0.977028143f,
+   -0.210111837f, -0.977677358f,
+   -0.207111376f, -0.978317371f,
+   -0.204108966f, -0.978948175f,
+   -0.201104635f, -0.979569766f,
+   -0.198098411f, -0.980182136f,
+   -0.195090322f, -0.980785280f,
+   -0.192080397f, -0.981379193f,
+   -0.189068664f, -0.981963869f,
+   -0.186055152f, -0.982539302f,
+   -0.183039888f, -0.983105487f,
+   -0.180022901f, -0.983662419f,
+   -0.177004220f, -0.984210092f,
+   -0.173983873f, -0.984748502f,
+   -0.170961889f, -0.985277642f,
+   -0.167938295f, -0.985797509f,
+   -0.164913120f, -0.986308097f,
+   -0.161886394f, -0.986809402f,
+   -0.158858143f, -0.987301418f,
+   -0.155828398f, -0.987784142f,
+   -0.152797185f, -0.988257568f,
+   -0.149764535f, -0.988721692f,
+   -0.146730474f, -0.989176510f,
+   -0.143695033f, -0.989622017f,
+   -0.140658239f, -0.990058210f,
+   -0.137620122f, -0.990485084f,
+   -0.134580709f, -0.990902635f,
+   -0.131540029f, -0.991310860f,
+   -0.128498111f, -0.991709754f,
+   -0.125454983f, -0.992099313f,
+   -0.122410675f, -0.992479535f,
+   -0.119365215f, -0.992850414f,
+   -0.116318631f, -0.993211949f,
+   -0.113270952f, -0.993564136f,
+   -0.110222207f, -0.993906970f,
+   -0.107172425f, -0.994240449f,
+   -0.104121634f, -0.994564571f,
+   -0.101069863f, -0.994879331f,
+   -0.098017140f, -0.995184727f,
+   -0.094963495f, -0.995480755f,
+   -0.091908956f, -0.995767414f,
+   -0.088853553f, -0.996044701f,
+   -0.085797312f, -0.996312612f,
+   -0.082740265f, -0.996571146f,
+   -0.079682438f, -0.996820299f,
+   -0.076623861f, -0.997060070f,
+   -0.073564564f, -0.997290457f,
+   -0.070504573f, -0.997511456f,
+   -0.067443920f, -0.997723067f,
+   -0.064382631f, -0.997925286f,
+   -0.061320736f, -0.998118113f,
+   -0.058258265f, -0.998301545f,
+   -0.055195244f, -0.998475581f,
+   -0.052131705f, -0.998640218f,
+   -0.049067674f, -0.998795456f,
+   -0.046003182f, -0.998941293f,
+   -0.042938257f, -0.999077728f,
+   -0.039872928f, -0.999204759f,
+   -0.036807223f, -0.999322385f,
+   -0.033741172f, -0.999430605f,
+   -0.030674803f, -0.999529418f,
+   -0.027608146f, -0.999618822f,
+   -0.024541229f, -0.999698819f,
+   -0.021474080f, -0.999769405f,
+   -0.018406730f, -0.999830582f,
+   -0.015339206f, -0.999882347f,
+   -0.012271538f, -0.999924702f,
+   -0.009203755f, -0.999957645f,
+   -0.006135885f, -0.999981175f,
+   -0.003067957f, -0.999995294f,
+   -0.000000000f, -1.000000000f,
+    0.003067957f, -0.999995294f,
+    0.006135885f, -0.999981175f,
+    0.009203755f, -0.999957645f,
+    0.012271538f, -0.999924702f,
+    0.015339206f, -0.999882347f,
+    0.018406730f, -0.999830582f,
+    0.021474080f, -0.999769405f,
+    0.024541229f, -0.999698819f,
+    0.027608146f, -0.999618822f,
+    0.030674803f, -0.999529418f,
+    0.033741172f, -0.999430605f,
+    0.036807223f, -0.999322385f,
+    0.039872928f, -0.999204759f,
+    0.042938257f, -0.999077728f,
+    0.046003182f, -0.998941293f,
+    0.049067674f, -0.998795456f,
+    0.052131705f, -0.998640218f,
+    0.055195244f, -0.998475581f,
+    0.058258265f, -0.998301545f,
+    0.061320736f, -0.998118113f,
+    0.064382631f, -0.997925286f,
+    0.067443920f, -0.997723067f,
+    0.070504573f, -0.997511456f,
+    0.073564564f, -0.997290457f,
+    0.076623861f, -0.997060070f,
+    0.079682438f, -0.996820299f,
+    0.082740265f, -0.996571146f,
+    0.085797312f, -0.996312612f,
+    0.088853553f, -0.996044701f,
+    0.091908956f, -0.995767414f,
+    0.094963495f, -0.995480755f,
+    0.098017140f, -0.995184727f,
+    0.101069863f, -0.994879331f,
+    0.104121634f, -0.994564571f,
+    0.107172425f, -0.994240449f,
+    0.110222207f, -0.993906970f,
+    0.113270952f, -0.993564136f,
+    0.116318631f, -0.993211949f,
+    0.119365215f, -0.992850414f,
+    0.122410675f, -0.992479535f,
+    0.125454983f, -0.992099313f,
+    0.128498111f, -0.991709754f,
+    0.131540029f, -0.991310860f,
+    0.134580709f, -0.990902635f,
+    0.137620122f, -0.990485084f,
+    0.140658239f, -0.990058210f,
+    0.143695033f, -0.989622017f,
+    0.146730474f, -0.989176510f,
+    0.149764535f, -0.988721692f,
+    0.152797185f, -0.988257568f,
+    0.155828398f, -0.987784142f,
+    0.158858143f, -0.987301418f,
+    0.161886394f, -0.986809402f,
+    0.164913120f, -0.986308097f,
+    0.167938295f, -0.985797509f,
+    0.170961889f, -0.985277642f,
+    0.173983873f, -0.984748502f,
+    0.177004220f, -0.984210092f,
+    0.180022901f, -0.983662419f,
+    0.183039888f, -0.983105487f,
+    0.186055152f, -0.982539302f,
+    0.189068664f, -0.981963869f,
+    0.192080397f, -0.981379193f,
+    0.195090322f, -0.980785280f,
+    0.198098411f, -0.980182136f,
+    0.201104635f, -0.979569766f,
+    0.204108966f, -0.978948175f,
+    0.207111376f, -0.978317371f,
+    0.210111837f, -0.977677358f,
+    0.213110320f, -0.977028143f,
+    0.216106797f, -0.976369731f,
+    0.219101240f, -0.975702130f,
+    0.222093621f, -0.975025345f,
+    0.225083911f, -0.974339383f,
+    0.228072083f, -0.973644250f,
+    0.231058108f, -0.972939952f,
+    0.234041959f, -0.972226497f,
+    0.237023606f, -0.971503891f,
+    0.240003022f, -0.970772141f,
+    0.242980180f, -0.970031253f,
+    0.245955050f, -0.969281235f,
+    0.248927606f, -0.968522094f,
+    0.251897818f, -0.967753837f,
+    0.254865660f, -0.966976471f,
+    0.257831102f, -0.966190003f,
+    0.260794118f, -0.965394442f,
+    0.263754679f, -0.964589793f,
+    0.266712757f, -0.963776066f,
+    0.269668326f, -0.962953267f,
+    0.272621355f, -0.962121404f,
+    0.275571819f, -0.961280486f,
+    0.278519689f, -0.960430519f,
+    0.281464938f, -0.959571513f,
+    0.284407537f, -0.958703475f,
+    0.287347460f, -0.957826413f,
+    0.290284677f, -0.956940336f,
+    0.293219163f, -0.956045251f,
+    0.296150888f, -0.955141168f,
+    0.299079826f, -0.954228095f,
+    0.302005949f, -0.953306040f,
+    0.304929230f, -0.952375013f,
+    0.307849640f, -0.951435021f,
+    0.310767153f, -0.950486074f,
+    0.313681740f, -0.949528181f,
+    0.316593376f, -0.948561350f,
+    0.319502031f, -0.947585591f,
+    0.322407679f, -0.946600913f,
+    0.325310292f, -0.945607325f,
+    0.328209844f, -0.944604837f,
+    0.331106306f, -0.943593458f,
+    0.333999651f, -0.942573198f,
+    0.336889853f, -0.941544065f,
+    0.339776884f, -0.940506071f,
+    0.342660717f, -0.939459224f,
+    0.345541325f, -0.938403534f,
+    0.348418680f, -0.937339012f,
+    0.351292756f, -0.936265667f,
+    0.354163525f, -0.935183510f,
+    0.357030961f, -0.934092550f,
+    0.359895037f, -0.932992799f,
+    0.362755724f, -0.931884266f,
+    0.365612998f, -0.930766961f,
+    0.368466830f, -0.929640896f,
+    0.371317194f, -0.928506080f,
+    0.374164063f, -0.927362526f,
+    0.377007410f, -0.926210242f,
+    0.379847209f, -0.925049241f,
+    0.382683432f, -0.923879533f,
+    0.385516054f, -0.922701128f,
+    0.388345047f, -0.921514039f,
+    0.391170384f, -0.920318277f,
+    0.393992040f, -0.919113852f,
+    0.396809987f, -0.917900776f,
+    0.399624200f, -0.916679060f,
+    0.402434651f, -0.915448716f,
+    0.405241314f, -0.914209756f,
+    0.408044163f, -0.912962190f,
+    0.410843171f, -0.911706032f,
+    0.413638312f, -0.910441292f,
+    0.416429560f, -0.909167983f,
+    0.419216888f, -0.907886116f,
+    0.422000271f, -0.906595705f,
+    0.424779681f, -0.905296759f,
+    0.427555093f, -0.903989293f,
+    0.430326481f, -0.902673318f,
+    0.433093819f, -0.901348847f,
+    0.435857080f, -0.900015892f,
+    0.438616239f, -0.898674466f,
+    0.441371269f, -0.897324581f,
+    0.444122145f, -0.895966250f,
+    0.446868840f, -0.894599486f,
+    0.449611330f, -0.893224301f,
+    0.452349587f, -0.891840709f,
+    0.455083587f, -0.890448723f,
+    0.457813304f, -0.889048356f,
+    0.460538711f, -0.887639620f,
+    0.463259784f, -0.886222530f,
+    0.465976496f, -0.884797098f,
+    0.468688822f, -0.883363339f,
+    0.471396737f, -0.881921264f,
+    0.474100215f, -0.880470889f,
+    0.476799230f, -0.879012226f,
+    0.479493758f, -0.877545290f,
+    0.482183772f, -0.876070094f,
+    0.484869248f, -0.874586652f,
+    0.487550160f, -0.873094978f,
+    0.490226483f, -0.871595087f,
+    0.492898192f, -0.870086991f,
+    0.495565262f, -0.868570706f,
+    0.498227667f, -0.867046246f,
+    0.500885383f, -0.865513624f,
+    0.503538384f, -0.863972856f,
+    0.506186645f, -0.862423956f,
+    0.508830143f, -0.860866939f,
+    0.511468850f, -0.859301818f,
+    0.514102744f, -0.857728610f,
+    0.516731799f, -0.856147328f,
+    0.519355990f, -0.854557988f,
+    0.521975293f, -0.852960605f,
+    0.524589683f, -0.851355193f,
+    0.527199135f, -0.849741768f,
+    0.529803625f, -0.848120345f,
+    0.532403128f, -0.846490939f,
+    0.534997620f, -0.844853565f,
+    0.537587076f, -0.843208240f,
+    0.540171473f, -0.841554977f,
+    0.542750785f, -0.839893794f,
+    0.545324988f, -0.838224706f,
+    0.547894059f, -0.836547727f,
+    0.550457973f, -0.834862875f,
+    0.553016706f, -0.833170165f,
+    0.555570233f, -0.831469612f,
+    0.558118531f, -0.829761234f,
+    0.560661576f, -0.828045045f,
+    0.563199344f, -0.826321063f,
+    0.565731811f, -0.824589303f,
+    0.568258953f, -0.822849781f,
+    0.570780746f, -0.821102515f,
+    0.573297167f, -0.819347520f,
+    0.575808191f, -0.817584813f,
+    0.578313796f, -0.815814411f,
+    0.580813958f, -0.814036330f,
+    0.583308653f, -0.812250587f,
+    0.585797857f, -0.810457198f,
+    0.588281548f, -0.808656182f,
+    0.590759702f, -0.806847554f,
+    0.593232295f, -0.805031331f,
+    0.595699304f, -0.803207531f,
+    0.598160707f, -0.801376172f,
+    0.600616479f, -0.799537269f,
+    0.603066599f, -0.797690841f,
+    0.605511041f, -0.795836905f,
+    0.607949785f, -0.793975478f,
+    0.610382806f, -0.792106577f,
+    0.612810082f, -0.790230221f,
+    0.615231591f, -0.788346428f,
+    0.617647308f, -0.786455214f,
+    0.620057212f, -0.784556597f,
+    0.622461279f, -0.782650596f,
+    0.624859488f, -0.780737229f,
+    0.627251815f, -0.778816512f,
+    0.629638239f, -0.776888466f,
+    0.632018736f, -0.774953107f,
+    0.634393284f, -0.773010453f,
+    0.636761861f, -0.771060524f,
+    0.639124445f, -0.769103338f,
+    0.641481013f, -0.767138912f,
+    0.643831543f, -0.765167266f,
+    0.646176013f, -0.763188417f,
+    0.648514401f, -0.761202385f,
+    0.650846685f, -0.759209189f,
+    0.653172843f, -0.757208847f,
+    0.655492853f, -0.755201377f,
+    0.657806693f, -0.753186799f,
+    0.660114342f, -0.751165132f,
+    0.662415778f, -0.749136395f,
+    0.664710978f, -0.747100606f,
+    0.666999922f, -0.745057785f,
+    0.669282588f, -0.743007952f,
+    0.671558955f, -0.740951125f,
+    0.673829000f, -0.738887324f,
+    0.676092704f, -0.736816569f,
+    0.678350043f, -0.734738878f,
+    0.680600998f, -0.732654272f,
+    0.682845546f, -0.730562769f,
+    0.685083668f, -0.728464390f,
+    0.687315341f, -0.726359155f,
+    0.689540545f, -0.724247083f,
+    0.691759258f, -0.722128194f,
+    0.693971461f, -0.720002508f,
+    0.696177131f, -0.717870045f,
+    0.698376249f, -0.715730825f,
+    0.700568794f, -0.713584869f,
+    0.702754744f, -0.711432196f,
+    0.704934080f, -0.709272826f,
+    0.707106781f, -0.707106781f,
+    0.709272826f, -0.704934080f,
+    0.711432196f, -0.702754744f,
+    0.713584869f, -0.700568794f,
+    0.715730825f, -0.698376249f,
+    0.717870045f, -0.696177131f,
+    0.720002508f, -0.693971461f,
+    0.722128194f, -0.691759258f,
+    0.724247083f, -0.689540545f,
+    0.726359155f, -0.687315341f,
+    0.728464390f, -0.685083668f,
+    0.730562769f, -0.682845546f,
+    0.732654272f, -0.680600998f,
+    0.734738878f, -0.678350043f,
+    0.736816569f, -0.676092704f,
+    0.738887324f, -0.673829000f,
+    0.740951125f, -0.671558955f,
+    0.743007952f, -0.669282588f,
+    0.745057785f, -0.666999922f,
+    0.747100606f, -0.664710978f,
+    0.749136395f, -0.662415778f,
+    0.751165132f, -0.660114342f,
+    0.753186799f, -0.657806693f,
+    0.755201377f, -0.655492853f,
+    0.757208847f, -0.653172843f,
+    0.759209189f, -0.650846685f,
+    0.761202385f, -0.648514401f,
+    0.763188417f, -0.646176013f,
+    0.765167266f, -0.643831543f,
+    0.767138912f, -0.641481013f,
+    0.769103338f, -0.639124445f,
+    0.771060524f, -0.636761861f,
+    0.773010453f, -0.634393284f,
+    0.774953107f, -0.632018736f,
+    0.776888466f, -0.629638239f,
+    0.778816512f, -0.627251815f,
+    0.780737229f, -0.624859488f,
+    0.782650596f, -0.622461279f,
+    0.784556597f, -0.620057212f,
+    0.786455214f, -0.617647308f,
+    0.788346428f, -0.615231591f,
+    0.790230221f, -0.612810082f,
+    0.792106577f, -0.610382806f,
+    0.793975478f, -0.607949785f,
+    0.795836905f, -0.605511041f,
+    0.797690841f, -0.603066599f,
+    0.799537269f, -0.600616479f,
+    0.801376172f, -0.598160707f,
+    0.803207531f, -0.595699304f,
+    0.805031331f, -0.593232295f,
+    0.806847554f, -0.590759702f,
+    0.808656182f, -0.588281548f,
+    0.810457198f, -0.585797857f,
+    0.812250587f, -0.583308653f,
+    0.814036330f, -0.580813958f,
+    0.815814411f, -0.578313796f,
+    0.817584813f, -0.575808191f,
+    0.819347520f, -0.573297167f,
+    0.821102515f, -0.570780746f,
+    0.822849781f, -0.568258953f,
+    0.824589303f, -0.565731811f,
+    0.826321063f, -0.563199344f,
+    0.828045045f, -0.560661576f,
+    0.829761234f, -0.558118531f,
+    0.831469612f, -0.555570233f,
+    0.833170165f, -0.553016706f,
+    0.834862875f, -0.550457973f,
+    0.836547727f, -0.547894059f,
+    0.838224706f, -0.545324988f,
+    0.839893794f, -0.542750785f,
+    0.841554977f, -0.540171473f,
+    0.843208240f, -0.537587076f,
+    0.844853565f, -0.534997620f,
+    0.846490939f, -0.532403128f,
+    0.848120345f, -0.529803625f,
+    0.849741768f, -0.527199135f,
+    0.851355193f, -0.524589683f,
+    0.852960605f, -0.521975293f,
+    0.854557988f, -0.519355990f,
+    0.856147328f, -0.516731799f,
+    0.857728610f, -0.514102744f,
+    0.859301818f, -0.511468850f,
+    0.860866939f, -0.508830143f,
+    0.862423956f, -0.506186645f,
+    0.863972856f, -0.503538384f,
+    0.865513624f, -0.500885383f,
+    0.867046246f, -0.498227667f,
+    0.868570706f, -0.495565262f,
+    0.870086991f, -0.492898192f,
+    0.871595087f, -0.490226483f,
+    0.873094978f, -0.487550160f,
+    0.874586652f, -0.484869248f,
+    0.876070094f, -0.482183772f,
+    0.877545290f, -0.479493758f,
+    0.879012226f, -0.476799230f,
+    0.880470889f, -0.474100215f,
+    0.881921264f, -0.471396737f,
+    0.883363339f, -0.468688822f,
+    0.884797098f, -0.465976496f,
+    0.886222530f, -0.463259784f,
+    0.887639620f, -0.460538711f,
+    0.889048356f, -0.457813304f,
+    0.890448723f, -0.455083587f,
+    0.891840709f, -0.452349587f,
+    0.893224301f, -0.449611330f,
+    0.894599486f, -0.446868840f,
+    0.895966250f, -0.444122145f,
+    0.897324581f, -0.441371269f,
+    0.898674466f, -0.438616239f,
+    0.900015892f, -0.435857080f,
+    0.901348847f, -0.433093819f,
+    0.902673318f, -0.430326481f,
+    0.903989293f, -0.427555093f,
+    0.905296759f, -0.424779681f,
+    0.906595705f, -0.422000271f,
+    0.907886116f, -0.419216888f,
+    0.909167983f, -0.416429560f,
+    0.910441292f, -0.413638312f,
+    0.911706032f, -0.410843171f,
+    0.912962190f, -0.408044163f,
+    0.914209756f, -0.405241314f,
+    0.915448716f, -0.402434651f,
+    0.916679060f, -0.399624200f,
+    0.917900776f, -0.396809987f,
+    0.919113852f, -0.393992040f,
+    0.920318277f, -0.391170384f,
+    0.921514039f, -0.388345047f,
+    0.922701128f, -0.385516054f,
+    0.923879533f, -0.382683432f,
+    0.925049241f, -0.379847209f,
+    0.926210242f, -0.377007410f,
+    0.927362526f, -0.374164063f,
+    0.928506080f, -0.371317194f,
+    0.929640896f, -0.368466830f,
+    0.930766961f, -0.365612998f,
+    0.931884266f, -0.362755724f,
+    0.932992799f, -0.359895037f,
+    0.934092550f, -0.357030961f,
+    0.935183510f, -0.354163525f,
+    0.936265667f, -0.351292756f,
+    0.937339012f, -0.348418680f,
+    0.938403534f, -0.345541325f,
+    0.939459224f, -0.342660717f,
+    0.940506071f, -0.339776884f,
+    0.941544065f, -0.336889853f,
+    0.942573198f, -0.333999651f,
+    0.943593458f, -0.331106306f,
+    0.944604837f, -0.328209844f,
+    0.945607325f, -0.325310292f,
+    0.946600913f, -0.322407679f,
+    0.947585591f, -0.319502031f,
+    0.948561350f, -0.316593376f,
+    0.949528181f, -0.313681740f,
+    0.950486074f, -0.310767153f,
+    0.951435021f, -0.307849640f,
+    0.952375013f, -0.304929230f,
+    0.953306040f, -0.302005949f,
+    0.954228095f, -0.299079826f,
+    0.955141168f, -0.296150888f,
+    0.956045251f, -0.293219163f,
+    0.956940336f, -0.290284677f,
+    0.957826413f, -0.287347460f,
+    0.958703475f, -0.284407537f,
+    0.959571513f, -0.281464938f,
+    0.960430519f, -0.278519689f,
+    0.961280486f, -0.275571819f,
+    0.962121404f, -0.272621355f,
+    0.962953267f, -0.269668326f,
+    0.963776066f, -0.266712757f,
+    0.964589793f, -0.263754679f,
+    0.965394442f, -0.260794118f,
+    0.966190003f, -0.257831102f,
+    0.966976471f, -0.254865660f,
+    0.967753837f, -0.251897818f,
+    0.968522094f, -0.248927606f,
+    0.969281235f, -0.245955050f,
+    0.970031253f, -0.242980180f,
+    0.970772141f, -0.240003022f,
+    0.971503891f, -0.237023606f,
+    0.972226497f, -0.234041959f,
+    0.972939952f, -0.231058108f,
+    0.973644250f, -0.228072083f,
+    0.974339383f, -0.225083911f,
+    0.975025345f, -0.222093621f,
+    0.975702130f, -0.219101240f,
+    0.976369731f, -0.216106797f,
+    0.977028143f, -0.213110320f,
+    0.977677358f, -0.210111837f,
+    0.978317371f, -0.207111376f,
+    0.978948175f, -0.204108966f,
+    0.979569766f, -0.201104635f,
+    0.980182136f, -0.198098411f,
+    0.980785280f, -0.195090322f,
+    0.981379193f, -0.192080397f,
+    0.981963869f, -0.189068664f,
+    0.982539302f, -0.186055152f,
+    0.983105487f, -0.183039888f,
+    0.983662419f, -0.180022901f,
+    0.984210092f, -0.177004220f,
+    0.984748502f, -0.173983873f,
+    0.985277642f, -0.170961889f,
+    0.985797509f, -0.167938295f,
+    0.986308097f, -0.164913120f,
+    0.986809402f, -0.161886394f,
+    0.987301418f, -0.158858143f,
+    0.987784142f, -0.155828398f,
+    0.988257568f, -0.152797185f,
+    0.988721692f, -0.149764535f,
+    0.989176510f, -0.146730474f,
+    0.989622017f, -0.143695033f,
+    0.990058210f, -0.140658239f,
+    0.990485084f, -0.137620122f,
+    0.990902635f, -0.134580709f,
+    0.991310860f, -0.131540029f,
+    0.991709754f, -0.128498111f,
+    0.992099313f, -0.125454983f,
+    0.992479535f, -0.122410675f,
+    0.992850414f, -0.119365215f,
+    0.993211949f, -0.116318631f,
+    0.993564136f, -0.113270952f,
+    0.993906970f, -0.110222207f,
+    0.994240449f, -0.107172425f,
+    0.994564571f, -0.104121634f,
+    0.994879331f, -0.101069863f,
+    0.995184727f, -0.098017140f,
+    0.995480755f, -0.094963495f,
+    0.995767414f, -0.091908956f,
+    0.996044701f, -0.088853553f,
+    0.996312612f, -0.085797312f,
+    0.996571146f, -0.082740265f,
+    0.996820299f, -0.079682438f,
+    0.997060070f, -0.076623861f,
+    0.997290457f, -0.073564564f,
+    0.997511456f, -0.070504573f,
+    0.997723067f, -0.067443920f,
+    0.997925286f, -0.064382631f,
+    0.998118113f, -0.061320736f,
+    0.998301545f, -0.058258265f,
+    0.998475581f, -0.055195244f,
+    0.998640218f, -0.052131705f,
+    0.998795456f, -0.049067674f,
+    0.998941293f, -0.046003182f,
+    0.999077728f, -0.042938257f,
+    0.999204759f, -0.039872928f,
+    0.999322385f, -0.036807223f,
+    0.999430605f, -0.033741172f,
+    0.999529418f, -0.030674803f,
+    0.999618822f, -0.027608146f,
+    0.999698819f, -0.024541229f,
+    0.999769405f, -0.021474080f,
+    0.999830582f, -0.018406730f,
+    0.999882347f, -0.015339206f,
+    0.999924702f, -0.012271538f,
+    0.999957645f, -0.009203755f,
+    0.999981175f, -0.006135885f,
+    0.999995294f, -0.003067957f
+};
+
+/**    
+* \par    
+* Example code for Floating-point Twiddle factors Generation:    
+* \par    
+* <pre>for(i = 0; i< N/; i++)    
+* {    
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 4096	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are in interleaved fashion    
+*     
+*/
+const float32_t twiddleCoef_4096[8192] = {
+    1.000000000f,  0.000000000f,
+    0.999998823f,  0.001533980f,
+    0.999995294f,  0.003067957f,
+    0.999989411f,  0.004601926f,
+    0.999981175f,  0.006135885f,
+    0.999970586f,  0.007669829f,
+    0.999957645f,  0.009203755f,
+    0.999942350f,  0.010737659f,
+    0.999924702f,  0.012271538f,
+    0.999904701f,  0.013805389f,
+    0.999882347f,  0.015339206f,
+    0.999857641f,  0.016872988f,
+    0.999830582f,  0.018406730f,
+    0.999801170f,  0.019940429f,
+    0.999769405f,  0.021474080f,
+    0.999735288f,  0.023007681f,
+    0.999698819f,  0.024541229f,
+    0.999659997f,  0.026074718f,
+    0.999618822f,  0.027608146f,
+    0.999575296f,  0.029141509f,
+    0.999529418f,  0.030674803f,
+    0.999481187f,  0.032208025f,
+    0.999430605f,  0.033741172f,
+    0.999377670f,  0.035274239f,
+    0.999322385f,  0.036807223f,
+    0.999264747f,  0.038340120f,
+    0.999204759f,  0.039872928f,
+    0.999142419f,  0.041405641f,
+    0.999077728f,  0.042938257f,
+    0.999010686f,  0.044470772f,
+    0.998941293f,  0.046003182f,
+    0.998869550f,  0.047535484f,
+    0.998795456f,  0.049067674f,
+    0.998719012f,  0.050599749f,
+    0.998640218f,  0.052131705f,
+    0.998559074f,  0.053663538f,
+    0.998475581f,  0.055195244f,
+    0.998389737f,  0.056726821f,
+    0.998301545f,  0.058258265f,
+    0.998211003f,  0.059789571f,
+    0.998118113f,  0.061320736f,
+    0.998022874f,  0.062851758f,
+    0.997925286f,  0.064382631f,
+    0.997825350f,  0.065913353f,
+    0.997723067f,  0.067443920f,
+    0.997618435f,  0.068974328f,
+    0.997511456f,  0.070504573f,
+    0.997402130f,  0.072034653f,
+    0.997290457f,  0.073564564f,
+    0.997176437f,  0.075094301f,
+    0.997060070f,  0.076623861f,
+    0.996941358f,  0.078153242f,
+    0.996820299f,  0.079682438f,
+    0.996696895f,  0.081211447f,
+    0.996571146f,  0.082740265f,
+    0.996443051f,  0.084268888f,
+    0.996312612f,  0.085797312f,
+    0.996179829f,  0.087325535f,
+    0.996044701f,  0.088853553f,
+    0.995907229f,  0.090381361f,
+    0.995767414f,  0.091908956f,
+    0.995625256f,  0.093436336f,
+    0.995480755f,  0.094963495f,
+    0.995333912f,  0.096490431f,
+    0.995184727f,  0.098017140f,
+    0.995033199f,  0.099543619f,
+    0.994879331f,  0.101069863f,
+    0.994723121f,  0.102595869f,
+    0.994564571f,  0.104121634f,
+    0.994403680f,  0.105647154f,
+    0.994240449f,  0.107172425f,
+    0.994074879f,  0.108697444f,
+    0.993906970f,  0.110222207f,
+    0.993736722f,  0.111746711f,
+    0.993564136f,  0.113270952f,
+    0.993389211f,  0.114794927f,
+    0.993211949f,  0.116318631f,
+    0.993032350f,  0.117842062f,
+    0.992850414f,  0.119365215f,
+    0.992666142f,  0.120888087f,
+    0.992479535f,  0.122410675f,
+    0.992290591f,  0.123932975f,
+    0.992099313f,  0.125454983f,
+    0.991905700f,  0.126976696f,
+    0.991709754f,  0.128498111f,
+    0.991511473f,  0.130019223f,
+    0.991310860f,  0.131540029f,
+    0.991107914f,  0.133060525f,
+    0.990902635f,  0.134580709f,
+    0.990695025f,  0.136100575f,
+    0.990485084f,  0.137620122f,
+    0.990272812f,  0.139139344f,
+    0.990058210f,  0.140658239f,
+    0.989841278f,  0.142176804f,
+    0.989622017f,  0.143695033f,
+    0.989400428f,  0.145212925f,
+    0.989176510f,  0.146730474f,
+    0.988950265f,  0.148247679f,
+    0.988721692f,  0.149764535f,
+    0.988490793f,  0.151281038f,
+    0.988257568f,  0.152797185f,
+    0.988022017f,  0.154312973f,
+    0.987784142f,  0.155828398f,
+    0.987543942f,  0.157343456f,
+    0.987301418f,  0.158858143f,
+    0.987056571f,  0.160372457f,
+    0.986809402f,  0.161886394f,
+    0.986559910f,  0.163399949f,
+    0.986308097f,  0.164913120f,
+    0.986053963f,  0.166425904f,
+    0.985797509f,  0.167938295f,
+    0.985538735f,  0.169450291f,
+    0.985277642f,  0.170961889f,
+    0.985014231f,  0.172473084f,
+    0.984748502f,  0.173983873f,
+    0.984480455f,  0.175494253f,
+    0.984210092f,  0.177004220f,
+    0.983937413f,  0.178513771f,
+    0.983662419f,  0.180022901f,
+    0.983385110f,  0.181531608f,
+    0.983105487f,  0.183039888f,
+    0.982823551f,  0.184547737f,
+    0.982539302f,  0.186055152f,
+    0.982252741f,  0.187562129f,
+    0.981963869f,  0.189068664f,
+    0.981672686f,  0.190574755f,
+    0.981379193f,  0.192080397f,
+    0.981083391f,  0.193585587f,
+    0.980785280f,  0.195090322f,
+    0.980484862f,  0.196594598f,
+    0.980182136f,  0.198098411f,
+    0.979877104f,  0.199601758f,
+    0.979569766f,  0.201104635f,
+    0.979260123f,  0.202607039f,
+    0.978948175f,  0.204108966f,
+    0.978633924f,  0.205610413f,
+    0.978317371f,  0.207111376f,
+    0.977998515f,  0.208611852f,
+    0.977677358f,  0.210111837f,
+    0.977353900f,  0.211611327f,
+    0.977028143f,  0.213110320f,
+    0.976700086f,  0.214608811f,
+    0.976369731f,  0.216106797f,
+    0.976037079f,  0.217604275f,
+    0.975702130f,  0.219101240f,
+    0.975364885f,  0.220597690f,
+    0.975025345f,  0.222093621f,
+    0.974683511f,  0.223589029f,
+    0.974339383f,  0.225083911f,
+    0.973992962f,  0.226578264f,
+    0.973644250f,  0.228072083f,
+    0.973293246f,  0.229565366f,
+    0.972939952f,  0.231058108f,
+    0.972584369f,  0.232550307f,
+    0.972226497f,  0.234041959f,
+    0.971866337f,  0.235533059f,
+    0.971503891f,  0.237023606f,
+    0.971139158f,  0.238513595f,
+    0.970772141f,  0.240003022f,
+    0.970402839f,  0.241491885f,
+    0.970031253f,  0.242980180f,
+    0.969657385f,  0.244467903f,
+    0.969281235f,  0.245955050f,
+    0.968902805f,  0.247441619f,
+    0.968522094f,  0.248927606f,
+    0.968139105f,  0.250413007f,
+    0.967753837f,  0.251897818f,
+    0.967366292f,  0.253382037f,
+    0.966976471f,  0.254865660f,
+    0.966584374f,  0.256348682f,
+    0.966190003f,  0.257831102f,
+    0.965793359f,  0.259312915f,
+    0.965394442f,  0.260794118f,
+    0.964993253f,  0.262274707f,
+    0.964589793f,  0.263754679f,
+    0.964184064f,  0.265234030f,
+    0.963776066f,  0.266712757f,
+    0.963365800f,  0.268190857f,
+    0.962953267f,  0.269668326f,
+    0.962538468f,  0.271145160f,
+    0.962121404f,  0.272621355f,
+    0.961702077f,  0.274096910f,
+    0.961280486f,  0.275571819f,
+    0.960856633f,  0.277046080f,
+    0.960430519f,  0.278519689f,
+    0.960002146f,  0.279992643f,
+    0.959571513f,  0.281464938f,
+    0.959138622f,  0.282936570f,
+    0.958703475f,  0.284407537f,
+    0.958266071f,  0.285877835f,
+    0.957826413f,  0.287347460f,
+    0.957384501f,  0.288816408f,
+    0.956940336f,  0.290284677f,
+    0.956493919f,  0.291752263f,
+    0.956045251f,  0.293219163f,
+    0.955594334f,  0.294685372f,
+    0.955141168f,  0.296150888f,
+    0.954685755f,  0.297615707f,
+    0.954228095f,  0.299079826f,
+    0.953768190f,  0.300543241f,
+    0.953306040f,  0.302005949f,
+    0.952841648f,  0.303467947f,
+    0.952375013f,  0.304929230f,
+    0.951906137f,  0.306389795f,
+    0.951435021f,  0.307849640f,
+    0.950961666f,  0.309308760f,
+    0.950486074f,  0.310767153f,
+    0.950008245f,  0.312224814f,
+    0.949528181f,  0.313681740f,
+    0.949045882f,  0.315137929f,
+    0.948561350f,  0.316593376f,
+    0.948074586f,  0.318048077f,
+    0.947585591f,  0.319502031f,
+    0.947094366f,  0.320955232f,
+    0.946600913f,  0.322407679f,
+    0.946105232f,  0.323859367f,
+    0.945607325f,  0.325310292f,
+    0.945107193f,  0.326760452f,
+    0.944604837f,  0.328209844f,
+    0.944100258f,  0.329658463f,
+    0.943593458f,  0.331106306f,
+    0.943084437f,  0.332553370f,
+    0.942573198f,  0.333999651f,
+    0.942059740f,  0.335445147f,
+    0.941544065f,  0.336889853f,
+    0.941026175f,  0.338333767f,
+    0.940506071f,  0.339776884f,
+    0.939983753f,  0.341219202f,
+    0.939459224f,  0.342660717f,
+    0.938932484f,  0.344101426f,
+    0.938403534f,  0.345541325f,
+    0.937872376f,  0.346980411f,
+    0.937339012f,  0.348418680f,
+    0.936803442f,  0.349856130f,
+    0.936265667f,  0.351292756f,
+    0.935725689f,  0.352728556f,
+    0.935183510f,  0.354163525f,
+    0.934639130f,  0.355597662f,
+    0.934092550f,  0.357030961f,
+    0.933543773f,  0.358463421f,
+    0.932992799f,  0.359895037f,
+    0.932439629f,  0.361325806f,
+    0.931884266f,  0.362755724f,
+    0.931326709f,  0.364184790f,
+    0.930766961f,  0.365612998f,
+    0.930205023f,  0.367040346f,
+    0.929640896f,  0.368466830f,
+    0.929074581f,  0.369892447f,
+    0.928506080f,  0.371317194f,
+    0.927935395f,  0.372741067f,
+    0.927362526f,  0.374164063f,
+    0.926787474f,  0.375586178f,
+    0.926210242f,  0.377007410f,
+    0.925630831f,  0.378427755f,
+    0.925049241f,  0.379847209f,
+    0.924465474f,  0.381265769f,
+    0.923879533f,  0.382683432f,
+    0.923291417f,  0.384100195f,
+    0.922701128f,  0.385516054f,
+    0.922108669f,  0.386931006f,
+    0.921514039f,  0.388345047f,
+    0.920917242f,  0.389758174f,
+    0.920318277f,  0.391170384f,
+    0.919717146f,  0.392581674f,
+    0.919113852f,  0.393992040f,
+    0.918508394f,  0.395401479f,
+    0.917900776f,  0.396809987f,
+    0.917290997f,  0.398217562f,
+    0.916679060f,  0.399624200f,
+    0.916064966f,  0.401029897f,
+    0.915448716f,  0.402434651f,
+    0.914830312f,  0.403838458f,
+    0.914209756f,  0.405241314f,
+    0.913587048f,  0.406643217f,
+    0.912962190f,  0.408044163f,
+    0.912335185f,  0.409444149f,
+    0.911706032f,  0.410843171f,
+    0.911074734f,  0.412241227f,
+    0.910441292f,  0.413638312f,
+    0.909805708f,  0.415034424f,
+    0.909167983f,  0.416429560f,
+    0.908528119f,  0.417823716f,
+    0.907886116f,  0.419216888f,
+    0.907241978f,  0.420609074f,
+    0.906595705f,  0.422000271f,
+    0.905947298f,  0.423390474f,
+    0.905296759f,  0.424779681f,
+    0.904644091f,  0.426167889f,
+    0.903989293f,  0.427555093f,
+    0.903332368f,  0.428941292f,
+    0.902673318f,  0.430326481f,
+    0.902012144f,  0.431710658f,
+    0.901348847f,  0.433093819f,
+    0.900683429f,  0.434475961f,
+    0.900015892f,  0.435857080f,
+    0.899346237f,  0.437237174f,
+    0.898674466f,  0.438616239f,
+    0.898000580f,  0.439994271f,
+    0.897324581f,  0.441371269f,
+    0.896646470f,  0.442747228f,
+    0.895966250f,  0.444122145f,
+    0.895283921f,  0.445496017f,
+    0.894599486f,  0.446868840f,
+    0.893912945f,  0.448240612f,
+    0.893224301f,  0.449611330f,
+    0.892533555f,  0.450980989f,
+    0.891840709f,  0.452349587f,
+    0.891145765f,  0.453717121f,
+    0.890448723f,  0.455083587f,
+    0.889749586f,  0.456448982f,
+    0.889048356f,  0.457813304f,
+    0.888345033f,  0.459176548f,
+    0.887639620f,  0.460538711f,
+    0.886932119f,  0.461899791f,
+    0.886222530f,  0.463259784f,
+    0.885510856f,  0.464618686f,
+    0.884797098f,  0.465976496f,
+    0.884081259f,  0.467333209f,
+    0.883363339f,  0.468688822f,
+    0.882643340f,  0.470043332f,
+    0.881921264f,  0.471396737f,
+    0.881197113f,  0.472749032f,
+    0.880470889f,  0.474100215f,
+    0.879742593f,  0.475450282f,
+    0.879012226f,  0.476799230f,
+    0.878279792f,  0.478147056f,
+    0.877545290f,  0.479493758f,
+    0.876808724f,  0.480839331f,
+    0.876070094f,  0.482183772f,
+    0.875329403f,  0.483527079f,
+    0.874586652f,  0.484869248f,
+    0.873841843f,  0.486210276f,
+    0.873094978f,  0.487550160f,
+    0.872346059f,  0.488888897f,
+    0.871595087f,  0.490226483f,
+    0.870842063f,  0.491562916f,
+    0.870086991f,  0.492898192f,
+    0.869329871f,  0.494232309f,
+    0.868570706f,  0.495565262f,
+    0.867809497f,  0.496897049f,
+    0.867046246f,  0.498227667f,
+    0.866280954f,  0.499557113f,
+    0.865513624f,  0.500885383f,
+    0.864744258f,  0.502212474f,
+    0.863972856f,  0.503538384f,
+    0.863199422f,  0.504863109f,
+    0.862423956f,  0.506186645f,
+    0.861646461f,  0.507508991f,
+    0.860866939f,  0.508830143f,
+    0.860085390f,  0.510150097f,
+    0.859301818f,  0.511468850f,
+    0.858516224f,  0.512786401f,
+    0.857728610f,  0.514102744f,
+    0.856938977f,  0.515417878f,
+    0.856147328f,  0.516731799f,
+    0.855353665f,  0.518044504f,
+    0.854557988f,  0.519355990f,
+    0.853760301f,  0.520666254f,
+    0.852960605f,  0.521975293f,
+    0.852158902f,  0.523283103f,
+    0.851355193f,  0.524589683f,
+    0.850549481f,  0.525895027f,
+    0.849741768f,  0.527199135f,
+    0.848932055f,  0.528502002f,
+    0.848120345f,  0.529803625f,
+    0.847306639f,  0.531104001f,
+    0.846490939f,  0.532403128f,
+    0.845673247f,  0.533701002f,
+    0.844853565f,  0.534997620f,
+    0.844031895f,  0.536292979f,
+    0.843208240f,  0.537587076f,
+    0.842382600f,  0.538879909f,
+    0.841554977f,  0.540171473f,
+    0.840725375f,  0.541461766f,
+    0.839893794f,  0.542750785f,
+    0.839060237f,  0.544038527f,
+    0.838224706f,  0.545324988f,
+    0.837387202f,  0.546610167f,
+    0.836547727f,  0.547894059f,
+    0.835706284f,  0.549176662f,
+    0.834862875f,  0.550457973f,
+    0.834017501f,  0.551737988f,
+    0.833170165f,  0.553016706f,
+    0.832320868f,  0.554294121f,
+    0.831469612f,  0.555570233f,
+    0.830616400f,  0.556845037f,
+    0.829761234f,  0.558118531f,
+    0.828904115f,  0.559390712f,
+    0.828045045f,  0.560661576f,
+    0.827184027f,  0.561931121f,
+    0.826321063f,  0.563199344f,
+    0.825456154f,  0.564466242f,
+    0.824589303f,  0.565731811f,
+    0.823720511f,  0.566996049f,
+    0.822849781f,  0.568258953f,
+    0.821977115f,  0.569520519f,
+    0.821102515f,  0.570780746f,
+    0.820225983f,  0.572039629f,
+    0.819347520f,  0.573297167f,
+    0.818467130f,  0.574553355f,
+    0.817584813f,  0.575808191f,
+    0.816700573f,  0.577061673f,
+    0.815814411f,  0.578313796f,
+    0.814926329f,  0.579564559f,
+    0.814036330f,  0.580813958f,
+    0.813144415f,  0.582061990f,
+    0.812250587f,  0.583308653f,
+    0.811354847f,  0.584553943f,
+    0.810457198f,  0.585797857f,
+    0.809557642f,  0.587040394f,
+    0.808656182f,  0.588281548f,
+    0.807752818f,  0.589521319f,
+    0.806847554f,  0.590759702f,
+    0.805940391f,  0.591996695f,
+    0.805031331f,  0.593232295f,
+    0.804120377f,  0.594466499f,
+    0.803207531f,  0.595699304f,
+    0.802292796f,  0.596930708f,
+    0.801376172f,  0.598160707f,
+    0.800457662f,  0.599389298f,
+    0.799537269f,  0.600616479f,
+    0.798614995f,  0.601842247f,
+    0.797690841f,  0.603066599f,
+    0.796764810f,  0.604289531f,
+    0.795836905f,  0.605511041f,
+    0.794907126f,  0.606731127f,
+    0.793975478f,  0.607949785f,
+    0.793041960f,  0.609167012f,
+    0.792106577f,  0.610382806f,
+    0.791169330f,  0.611597164f,
+    0.790230221f,  0.612810082f,
+    0.789289253f,  0.614021559f,
+    0.788346428f,  0.615231591f,
+    0.787401747f,  0.616440175f,
+    0.786455214f,  0.617647308f,
+    0.785506830f,  0.618852988f,
+    0.784556597f,  0.620057212f,
+    0.783604519f,  0.621259977f,
+    0.782650596f,  0.622461279f,
+    0.781694832f,  0.623661118f,
+    0.780737229f,  0.624859488f,
+    0.779777788f,  0.626056388f,
+    0.778816512f,  0.627251815f,
+    0.777853404f,  0.628445767f,
+    0.776888466f,  0.629638239f,
+    0.775921699f,  0.630829230f,
+    0.774953107f,  0.632018736f,
+    0.773982691f,  0.633206755f,
+    0.773010453f,  0.634393284f,
+    0.772036397f,  0.635578320f,
+    0.771060524f,  0.636761861f,
+    0.770082837f,  0.637943904f,
+    0.769103338f,  0.639124445f,
+    0.768122029f,  0.640303482f,
+    0.767138912f,  0.641481013f,
+    0.766153990f,  0.642657034f,
+    0.765167266f,  0.643831543f,
+    0.764178741f,  0.645004537f,
+    0.763188417f,  0.646176013f,
+    0.762196298f,  0.647345969f,
+    0.761202385f,  0.648514401f,
+    0.760206682f,  0.649681307f,
+    0.759209189f,  0.650846685f,
+    0.758209910f,  0.652010531f,
+    0.757208847f,  0.653172843f,
+    0.756206001f,  0.654333618f,
+    0.755201377f,  0.655492853f,
+    0.754194975f,  0.656650546f,
+    0.753186799f,  0.657806693f,
+    0.752176850f,  0.658961293f,
+    0.751165132f,  0.660114342f,
+    0.750151646f,  0.661265838f,
+    0.749136395f,  0.662415778f,
+    0.748119380f,  0.663564159f,
+    0.747100606f,  0.664710978f,
+    0.746080074f,  0.665856234f,
+    0.745057785f,  0.666999922f,
+    0.744033744f,  0.668142041f,
+    0.743007952f,  0.669282588f,
+    0.741980412f,  0.670421560f,
+    0.740951125f,  0.671558955f,
+    0.739920095f,  0.672694769f,
+    0.738887324f,  0.673829000f,
+    0.737852815f,  0.674961646f,
+    0.736816569f,  0.676092704f,
+    0.735778589f,  0.677222170f,
+    0.734738878f,  0.678350043f,
+    0.733697438f,  0.679476320f,
+    0.732654272f,  0.680600998f,
+    0.731609381f,  0.681724074f,
+    0.730562769f,  0.682845546f,
+    0.729514438f,  0.683965412f,
+    0.728464390f,  0.685083668f,
+    0.727412629f,  0.686200312f,
+    0.726359155f,  0.687315341f,
+    0.725303972f,  0.688428753f,
+    0.724247083f,  0.689540545f,
+    0.723188489f,  0.690650714f,
+    0.722128194f,  0.691759258f,
+    0.721066199f,  0.692866175f,
+    0.720002508f,  0.693971461f,
+    0.718937122f,  0.695075114f,
+    0.717870045f,  0.696177131f,
+    0.716801279f,  0.697277511f,
+    0.715730825f,  0.698376249f,
+    0.714658688f,  0.699473345f,
+    0.713584869f,  0.700568794f,
+    0.712509371f,  0.701662595f,
+    0.711432196f,  0.702754744f,
+    0.710353347f,  0.703845241f,
+    0.709272826f,  0.704934080f,
+    0.708190637f,  0.706021261f,
+    0.707106781f,  0.707106781f,
+    0.706021261f,  0.708190637f,
+    0.704934080f,  0.709272826f,
+    0.703845241f,  0.710353347f,
+    0.702754744f,  0.711432196f,
+    0.701662595f,  0.712509371f,
+    0.700568794f,  0.713584869f,
+    0.699473345f,  0.714658688f,
+    0.698376249f,  0.715730825f,
+    0.697277511f,  0.716801279f,
+    0.696177131f,  0.717870045f,
+    0.695075114f,  0.718937122f,
+    0.693971461f,  0.720002508f,
+    0.692866175f,  0.721066199f,
+    0.691759258f,  0.722128194f,
+    0.690650714f,  0.723188489f,
+    0.689540545f,  0.724247083f,
+    0.688428753f,  0.725303972f,
+    0.687315341f,  0.726359155f,
+    0.686200312f,  0.727412629f,
+    0.685083668f,  0.728464390f,
+    0.683965412f,  0.729514438f,
+    0.682845546f,  0.730562769f,
+    0.681724074f,  0.731609381f,
+    0.680600998f,  0.732654272f,
+    0.679476320f,  0.733697438f,
+    0.678350043f,  0.734738878f,
+    0.677222170f,  0.735778589f,
+    0.676092704f,  0.736816569f,
+    0.674961646f,  0.737852815f,
+    0.673829000f,  0.738887324f,
+    0.672694769f,  0.739920095f,
+    0.671558955f,  0.740951125f,
+    0.670421560f,  0.741980412f,
+    0.669282588f,  0.743007952f,
+    0.668142041f,  0.744033744f,
+    0.666999922f,  0.745057785f,
+    0.665856234f,  0.746080074f,
+    0.664710978f,  0.747100606f,
+    0.663564159f,  0.748119380f,
+    0.662415778f,  0.749136395f,
+    0.661265838f,  0.750151646f,
+    0.660114342f,  0.751165132f,
+    0.658961293f,  0.752176850f,
+    0.657806693f,  0.753186799f,
+    0.656650546f,  0.754194975f,
+    0.655492853f,  0.755201377f,
+    0.654333618f,  0.756206001f,
+    0.653172843f,  0.757208847f,
+    0.652010531f,  0.758209910f,
+    0.650846685f,  0.759209189f,
+    0.649681307f,  0.760206682f,
+    0.648514401f,  0.761202385f,
+    0.647345969f,  0.762196298f,
+    0.646176013f,  0.763188417f,
+    0.645004537f,  0.764178741f,
+    0.643831543f,  0.765167266f,
+    0.642657034f,  0.766153990f,
+    0.641481013f,  0.767138912f,
+    0.640303482f,  0.768122029f,
+    0.639124445f,  0.769103338f,
+    0.637943904f,  0.770082837f,
+    0.636761861f,  0.771060524f,
+    0.635578320f,  0.772036397f,
+    0.634393284f,  0.773010453f,
+    0.633206755f,  0.773982691f,
+    0.632018736f,  0.774953107f,
+    0.630829230f,  0.775921699f,
+    0.629638239f,  0.776888466f,
+    0.628445767f,  0.777853404f,
+    0.627251815f,  0.778816512f,
+    0.626056388f,  0.779777788f,
+    0.624859488f,  0.780737229f,
+    0.623661118f,  0.781694832f,
+    0.622461279f,  0.782650596f,
+    0.621259977f,  0.783604519f,
+    0.620057212f,  0.784556597f,
+    0.618852988f,  0.785506830f,
+    0.617647308f,  0.786455214f,
+    0.616440175f,  0.787401747f,
+    0.615231591f,  0.788346428f,
+    0.614021559f,  0.789289253f,
+    0.612810082f,  0.790230221f,
+    0.611597164f,  0.791169330f,
+    0.610382806f,  0.792106577f,
+    0.609167012f,  0.793041960f,
+    0.607949785f,  0.793975478f,
+    0.606731127f,  0.794907126f,
+    0.605511041f,  0.795836905f,
+    0.604289531f,  0.796764810f,
+    0.603066599f,  0.797690841f,
+    0.601842247f,  0.798614995f,
+    0.600616479f,  0.799537269f,
+    0.599389298f,  0.800457662f,
+    0.598160707f,  0.801376172f,
+    0.596930708f,  0.802292796f,
+    0.595699304f,  0.803207531f,
+    0.594466499f,  0.804120377f,
+    0.593232295f,  0.805031331f,
+    0.591996695f,  0.805940391f,
+    0.590759702f,  0.806847554f,
+    0.589521319f,  0.807752818f,
+    0.588281548f,  0.808656182f,
+    0.587040394f,  0.809557642f,
+    0.585797857f,  0.810457198f,
+    0.584553943f,  0.811354847f,
+    0.583308653f,  0.812250587f,
+    0.582061990f,  0.813144415f,
+    0.580813958f,  0.814036330f,
+    0.579564559f,  0.814926329f,
+    0.578313796f,  0.815814411f,
+    0.577061673f,  0.816700573f,
+    0.575808191f,  0.817584813f,
+    0.574553355f,  0.818467130f,
+    0.573297167f,  0.819347520f,
+    0.572039629f,  0.820225983f,
+    0.570780746f,  0.821102515f,
+    0.569520519f,  0.821977115f,
+    0.568258953f,  0.822849781f,
+    0.566996049f,  0.823720511f,
+    0.565731811f,  0.824589303f,
+    0.564466242f,  0.825456154f,
+    0.563199344f,  0.826321063f,
+    0.561931121f,  0.827184027f,
+    0.560661576f,  0.828045045f,
+    0.559390712f,  0.828904115f,
+    0.558118531f,  0.829761234f,
+    0.556845037f,  0.830616400f,
+    0.555570233f,  0.831469612f,
+    0.554294121f,  0.832320868f,
+    0.553016706f,  0.833170165f,
+    0.551737988f,  0.834017501f,
+    0.550457973f,  0.834862875f,
+    0.549176662f,  0.835706284f,
+    0.547894059f,  0.836547727f,
+    0.546610167f,  0.837387202f,
+    0.545324988f,  0.838224706f,
+    0.544038527f,  0.839060237f,
+    0.542750785f,  0.839893794f,
+    0.541461766f,  0.840725375f,
+    0.540171473f,  0.841554977f,
+    0.538879909f,  0.842382600f,
+    0.537587076f,  0.843208240f,
+    0.536292979f,  0.844031895f,
+    0.534997620f,  0.844853565f,
+    0.533701002f,  0.845673247f,
+    0.532403128f,  0.846490939f,
+    0.531104001f,  0.847306639f,
+    0.529803625f,  0.848120345f,
+    0.528502002f,  0.848932055f,
+    0.527199135f,  0.849741768f,
+    0.525895027f,  0.850549481f,
+    0.524589683f,  0.851355193f,
+    0.523283103f,  0.852158902f,
+    0.521975293f,  0.852960605f,
+    0.520666254f,  0.853760301f,
+    0.519355990f,  0.854557988f,
+    0.518044504f,  0.855353665f,
+    0.516731799f,  0.856147328f,
+    0.515417878f,  0.856938977f,
+    0.514102744f,  0.857728610f,
+    0.512786401f,  0.858516224f,
+    0.511468850f,  0.859301818f,
+    0.510150097f,  0.860085390f,
+    0.508830143f,  0.860866939f,
+    0.507508991f,  0.861646461f,
+    0.506186645f,  0.862423956f,
+    0.504863109f,  0.863199422f,
+    0.503538384f,  0.863972856f,
+    0.502212474f,  0.864744258f,
+    0.500885383f,  0.865513624f,
+    0.499557113f,  0.866280954f,
+    0.498227667f,  0.867046246f,
+    0.496897049f,  0.867809497f,
+    0.495565262f,  0.868570706f,
+    0.494232309f,  0.869329871f,
+    0.492898192f,  0.870086991f,
+    0.491562916f,  0.870842063f,
+    0.490226483f,  0.871595087f,
+    0.488888897f,  0.872346059f,
+    0.487550160f,  0.873094978f,
+    0.486210276f,  0.873841843f,
+    0.484869248f,  0.874586652f,
+    0.483527079f,  0.875329403f,
+    0.482183772f,  0.876070094f,
+    0.480839331f,  0.876808724f,
+    0.479493758f,  0.877545290f,
+    0.478147056f,  0.878279792f,
+    0.476799230f,  0.879012226f,
+    0.475450282f,  0.879742593f,
+    0.474100215f,  0.880470889f,
+    0.472749032f,  0.881197113f,
+    0.471396737f,  0.881921264f,
+    0.470043332f,  0.882643340f,
+    0.468688822f,  0.883363339f,
+    0.467333209f,  0.884081259f,
+    0.465976496f,  0.884797098f,
+    0.464618686f,  0.885510856f,
+    0.463259784f,  0.886222530f,
+    0.461899791f,  0.886932119f,
+    0.460538711f,  0.887639620f,
+    0.459176548f,  0.888345033f,
+    0.457813304f,  0.889048356f,
+    0.456448982f,  0.889749586f,
+    0.455083587f,  0.890448723f,
+    0.453717121f,  0.891145765f,
+    0.452349587f,  0.891840709f,
+    0.450980989f,  0.892533555f,
+    0.449611330f,  0.893224301f,
+    0.448240612f,  0.893912945f,
+    0.446868840f,  0.894599486f,
+    0.445496017f,  0.895283921f,
+    0.444122145f,  0.895966250f,
+    0.442747228f,  0.896646470f,
+    0.441371269f,  0.897324581f,
+    0.439994271f,  0.898000580f,
+    0.438616239f,  0.898674466f,
+    0.437237174f,  0.899346237f,
+    0.435857080f,  0.900015892f,
+    0.434475961f,  0.900683429f,
+    0.433093819f,  0.901348847f,
+    0.431710658f,  0.902012144f,
+    0.430326481f,  0.902673318f,
+    0.428941292f,  0.903332368f,
+    0.427555093f,  0.903989293f,
+    0.426167889f,  0.904644091f,
+    0.424779681f,  0.905296759f,
+    0.423390474f,  0.905947298f,
+    0.422000271f,  0.906595705f,
+    0.420609074f,  0.907241978f,
+    0.419216888f,  0.907886116f,
+    0.417823716f,  0.908528119f,
+    0.416429560f,  0.909167983f,
+    0.415034424f,  0.909805708f,
+    0.413638312f,  0.910441292f,
+    0.412241227f,  0.911074734f,
+    0.410843171f,  0.911706032f,
+    0.409444149f,  0.912335185f,
+    0.408044163f,  0.912962190f,
+    0.406643217f,  0.913587048f,
+    0.405241314f,  0.914209756f,
+    0.403838458f,  0.914830312f,
+    0.402434651f,  0.915448716f,
+    0.401029897f,  0.916064966f,
+    0.399624200f,  0.916679060f,
+    0.398217562f,  0.917290997f,
+    0.396809987f,  0.917900776f,
+    0.395401479f,  0.918508394f,
+    0.393992040f,  0.919113852f,
+    0.392581674f,  0.919717146f,
+    0.391170384f,  0.920318277f,
+    0.389758174f,  0.920917242f,
+    0.388345047f,  0.921514039f,
+    0.386931006f,  0.922108669f,
+    0.385516054f,  0.922701128f,
+    0.384100195f,  0.923291417f,
+    0.382683432f,  0.923879533f,
+    0.381265769f,  0.924465474f,
+    0.379847209f,  0.925049241f,
+    0.378427755f,  0.925630831f,
+    0.377007410f,  0.926210242f,
+    0.375586178f,  0.926787474f,
+    0.374164063f,  0.927362526f,
+    0.372741067f,  0.927935395f,
+    0.371317194f,  0.928506080f,
+    0.369892447f,  0.929074581f,
+    0.368466830f,  0.929640896f,
+    0.367040346f,  0.930205023f,
+    0.365612998f,  0.930766961f,
+    0.364184790f,  0.931326709f,
+    0.362755724f,  0.931884266f,
+    0.361325806f,  0.932439629f,
+    0.359895037f,  0.932992799f,
+    0.358463421f,  0.933543773f,
+    0.357030961f,  0.934092550f,
+    0.355597662f,  0.934639130f,
+    0.354163525f,  0.935183510f,
+    0.352728556f,  0.935725689f,
+    0.351292756f,  0.936265667f,
+    0.349856130f,  0.936803442f,
+    0.348418680f,  0.937339012f,
+    0.346980411f,  0.937872376f,
+    0.345541325f,  0.938403534f,
+    0.344101426f,  0.938932484f,
+    0.342660717f,  0.939459224f,
+    0.341219202f,  0.939983753f,
+    0.339776884f,  0.940506071f,
+    0.338333767f,  0.941026175f,
+    0.336889853f,  0.941544065f,
+    0.335445147f,  0.942059740f,
+    0.333999651f,  0.942573198f,
+    0.332553370f,  0.943084437f,
+    0.331106306f,  0.943593458f,
+    0.329658463f,  0.944100258f,
+    0.328209844f,  0.944604837f,
+    0.326760452f,  0.945107193f,
+    0.325310292f,  0.945607325f,
+    0.323859367f,  0.946105232f,
+    0.322407679f,  0.946600913f,
+    0.320955232f,  0.947094366f,
+    0.319502031f,  0.947585591f,
+    0.318048077f,  0.948074586f,
+    0.316593376f,  0.948561350f,
+    0.315137929f,  0.949045882f,
+    0.313681740f,  0.949528181f,
+    0.312224814f,  0.950008245f,
+    0.310767153f,  0.950486074f,
+    0.309308760f,  0.950961666f,
+    0.307849640f,  0.951435021f,
+    0.306389795f,  0.951906137f,
+    0.304929230f,  0.952375013f,
+    0.303467947f,  0.952841648f,
+    0.302005949f,  0.953306040f,
+    0.300543241f,  0.953768190f,
+    0.299079826f,  0.954228095f,
+    0.297615707f,  0.954685755f,
+    0.296150888f,  0.955141168f,
+    0.294685372f,  0.955594334f,
+    0.293219163f,  0.956045251f,
+    0.291752263f,  0.956493919f,
+    0.290284677f,  0.956940336f,
+    0.288816408f,  0.957384501f,
+    0.287347460f,  0.957826413f,
+    0.285877835f,  0.958266071f,
+    0.284407537f,  0.958703475f,
+    0.282936570f,  0.959138622f,
+    0.281464938f,  0.959571513f,
+    0.279992643f,  0.960002146f,
+    0.278519689f,  0.960430519f,
+    0.277046080f,  0.960856633f,
+    0.275571819f,  0.961280486f,
+    0.274096910f,  0.961702077f,
+    0.272621355f,  0.962121404f,
+    0.271145160f,  0.962538468f,
+    0.269668326f,  0.962953267f,
+    0.268190857f,  0.963365800f,
+    0.266712757f,  0.963776066f,
+    0.265234030f,  0.964184064f,
+    0.263754679f,  0.964589793f,
+    0.262274707f,  0.964993253f,
+    0.260794118f,  0.965394442f,
+    0.259312915f,  0.965793359f,
+    0.257831102f,  0.966190003f,
+    0.256348682f,  0.966584374f,
+    0.254865660f,  0.966976471f,
+    0.253382037f,  0.967366292f,
+    0.251897818f,  0.967753837f,
+    0.250413007f,  0.968139105f,
+    0.248927606f,  0.968522094f,
+    0.247441619f,  0.968902805f,
+    0.245955050f,  0.969281235f,
+    0.244467903f,  0.969657385f,
+    0.242980180f,  0.970031253f,
+    0.241491885f,  0.970402839f,
+    0.240003022f,  0.970772141f,
+    0.238513595f,  0.971139158f,
+    0.237023606f,  0.971503891f,
+    0.235533059f,  0.971866337f,
+    0.234041959f,  0.972226497f,
+    0.232550307f,  0.972584369f,
+    0.231058108f,  0.972939952f,
+    0.229565366f,  0.973293246f,
+    0.228072083f,  0.973644250f,
+    0.226578264f,  0.973992962f,
+    0.225083911f,  0.974339383f,
+    0.223589029f,  0.974683511f,
+    0.222093621f,  0.975025345f,
+    0.220597690f,  0.975364885f,
+    0.219101240f,  0.975702130f,
+    0.217604275f,  0.976037079f,
+    0.216106797f,  0.976369731f,
+    0.214608811f,  0.976700086f,
+    0.213110320f,  0.977028143f,
+    0.211611327f,  0.977353900f,
+    0.210111837f,  0.977677358f,
+    0.208611852f,  0.977998515f,
+    0.207111376f,  0.978317371f,
+    0.205610413f,  0.978633924f,
+    0.204108966f,  0.978948175f,
+    0.202607039f,  0.979260123f,
+    0.201104635f,  0.979569766f,
+    0.199601758f,  0.979877104f,
+    0.198098411f,  0.980182136f,
+    0.196594598f,  0.980484862f,
+    0.195090322f,  0.980785280f,
+    0.193585587f,  0.981083391f,
+    0.192080397f,  0.981379193f,
+    0.190574755f,  0.981672686f,
+    0.189068664f,  0.981963869f,
+    0.187562129f,  0.982252741f,
+    0.186055152f,  0.982539302f,
+    0.184547737f,  0.982823551f,
+    0.183039888f,  0.983105487f,
+    0.181531608f,  0.983385110f,
+    0.180022901f,  0.983662419f,
+    0.178513771f,  0.983937413f,
+    0.177004220f,  0.984210092f,
+    0.175494253f,  0.984480455f,
+    0.173983873f,  0.984748502f,
+    0.172473084f,  0.985014231f,
+    0.170961889f,  0.985277642f,
+    0.169450291f,  0.985538735f,
+    0.167938295f,  0.985797509f,
+    0.166425904f,  0.986053963f,
+    0.164913120f,  0.986308097f,
+    0.163399949f,  0.986559910f,
+    0.161886394f,  0.986809402f,
+    0.160372457f,  0.987056571f,
+    0.158858143f,  0.987301418f,
+    0.157343456f,  0.987543942f,
+    0.155828398f,  0.987784142f,
+    0.154312973f,  0.988022017f,
+    0.152797185f,  0.988257568f,
+    0.151281038f,  0.988490793f,
+    0.149764535f,  0.988721692f,
+    0.148247679f,  0.988950265f,
+    0.146730474f,  0.989176510f,
+    0.145212925f,  0.989400428f,
+    0.143695033f,  0.989622017f,
+    0.142176804f,  0.989841278f,
+    0.140658239f,  0.990058210f,
+    0.139139344f,  0.990272812f,
+    0.137620122f,  0.990485084f,
+    0.136100575f,  0.990695025f,
+    0.134580709f,  0.990902635f,
+    0.133060525f,  0.991107914f,
+    0.131540029f,  0.991310860f,
+    0.130019223f,  0.991511473f,
+    0.128498111f,  0.991709754f,
+    0.126976696f,  0.991905700f,
+    0.125454983f,  0.992099313f,
+    0.123932975f,  0.992290591f,
+    0.122410675f,  0.992479535f,
+    0.120888087f,  0.992666142f,
+    0.119365215f,  0.992850414f,
+    0.117842062f,  0.993032350f,
+    0.116318631f,  0.993211949f,
+    0.114794927f,  0.993389211f,
+    0.113270952f,  0.993564136f,
+    0.111746711f,  0.993736722f,
+    0.110222207f,  0.993906970f,
+    0.108697444f,  0.994074879f,
+    0.107172425f,  0.994240449f,
+    0.105647154f,  0.994403680f,
+    0.104121634f,  0.994564571f,
+    0.102595869f,  0.994723121f,
+    0.101069863f,  0.994879331f,
+    0.099543619f,  0.995033199f,
+    0.098017140f,  0.995184727f,
+    0.096490431f,  0.995333912f,
+    0.094963495f,  0.995480755f,
+    0.093436336f,  0.995625256f,
+    0.091908956f,  0.995767414f,
+    0.090381361f,  0.995907229f,
+    0.088853553f,  0.996044701f,
+    0.087325535f,  0.996179829f,
+    0.085797312f,  0.996312612f,
+    0.084268888f,  0.996443051f,
+    0.082740265f,  0.996571146f,
+    0.081211447f,  0.996696895f,
+    0.079682438f,  0.996820299f,
+    0.078153242f,  0.996941358f,
+    0.076623861f,  0.997060070f,
+    0.075094301f,  0.997176437f,
+    0.073564564f,  0.997290457f,
+    0.072034653f,  0.997402130f,
+    0.070504573f,  0.997511456f,
+    0.068974328f,  0.997618435f,
+    0.067443920f,  0.997723067f,
+    0.065913353f,  0.997825350f,
+    0.064382631f,  0.997925286f,
+    0.062851758f,  0.998022874f,
+    0.061320736f,  0.998118113f,
+    0.059789571f,  0.998211003f,
+    0.058258265f,  0.998301545f,
+    0.056726821f,  0.998389737f,
+    0.055195244f,  0.998475581f,
+    0.053663538f,  0.998559074f,
+    0.052131705f,  0.998640218f,
+    0.050599749f,  0.998719012f,
+    0.049067674f,  0.998795456f,
+    0.047535484f,  0.998869550f,
+    0.046003182f,  0.998941293f,
+    0.044470772f,  0.999010686f,
+    0.042938257f,  0.999077728f,
+    0.041405641f,  0.999142419f,
+    0.039872928f,  0.999204759f,
+    0.038340120f,  0.999264747f,
+    0.036807223f,  0.999322385f,
+    0.035274239f,  0.999377670f,
+    0.033741172f,  0.999430605f,
+    0.032208025f,  0.999481187f,
+    0.030674803f,  0.999529418f,
+    0.029141509f,  0.999575296f,
+    0.027608146f,  0.999618822f,
+    0.026074718f,  0.999659997f,
+    0.024541229f,  0.999698819f,
+    0.023007681f,  0.999735288f,
+    0.021474080f,  0.999769405f,
+    0.019940429f,  0.999801170f,
+    0.018406730f,  0.999830582f,
+    0.016872988f,  0.999857641f,
+    0.015339206f,  0.999882347f,
+    0.013805389f,  0.999904701f,
+    0.012271538f,  0.999924702f,
+    0.010737659f,  0.999942350f,
+    0.009203755f,  0.999957645f,
+    0.007669829f,  0.999970586f,
+    0.006135885f,  0.999981175f,
+    0.004601926f,  0.999989411f,
+    0.003067957f,  0.999995294f,
+    0.001533980f,  0.999998823f,
+    0.000000000f,  1.000000000f,
+   -0.001533980f,  0.999998823f,
+   -0.003067957f,  0.999995294f,
+   -0.004601926f,  0.999989411f,
+   -0.006135885f,  0.999981175f,
+   -0.007669829f,  0.999970586f,
+   -0.009203755f,  0.999957645f,
+   -0.010737659f,  0.999942350f,
+   -0.012271538f,  0.999924702f,
+   -0.013805389f,  0.999904701f,
+   -0.015339206f,  0.999882347f,
+   -0.016872988f,  0.999857641f,
+   -0.018406730f,  0.999830582f,
+   -0.019940429f,  0.999801170f,
+   -0.021474080f,  0.999769405f,
+   -0.023007681f,  0.999735288f,
+   -0.024541229f,  0.999698819f,
+   -0.026074718f,  0.999659997f,
+   -0.027608146f,  0.999618822f,
+   -0.029141509f,  0.999575296f,
+   -0.030674803f,  0.999529418f,
+   -0.032208025f,  0.999481187f,
+   -0.033741172f,  0.999430605f,
+   -0.035274239f,  0.999377670f,
+   -0.036807223f,  0.999322385f,
+   -0.038340120f,  0.999264747f,
+   -0.039872928f,  0.999204759f,
+   -0.041405641f,  0.999142419f,
+   -0.042938257f,  0.999077728f,
+   -0.044470772f,  0.999010686f,
+   -0.046003182f,  0.998941293f,
+   -0.047535484f,  0.998869550f,
+   -0.049067674f,  0.998795456f,
+   -0.050599749f,  0.998719012f,
+   -0.052131705f,  0.998640218f,
+   -0.053663538f,  0.998559074f,
+   -0.055195244f,  0.998475581f,
+   -0.056726821f,  0.998389737f,
+   -0.058258265f,  0.998301545f,
+   -0.059789571f,  0.998211003f,
+   -0.061320736f,  0.998118113f,
+   -0.062851758f,  0.998022874f,
+   -0.064382631f,  0.997925286f,
+   -0.065913353f,  0.997825350f,
+   -0.067443920f,  0.997723067f,
+   -0.068974328f,  0.997618435f,
+   -0.070504573f,  0.997511456f,
+   -0.072034653f,  0.997402130f,
+   -0.073564564f,  0.997290457f,
+   -0.075094301f,  0.997176437f,
+   -0.076623861f,  0.997060070f,
+   -0.078153242f,  0.996941358f,
+   -0.079682438f,  0.996820299f,
+   -0.081211447f,  0.996696895f,
+   -0.082740265f,  0.996571146f,
+   -0.084268888f,  0.996443051f,
+   -0.085797312f,  0.996312612f,
+   -0.087325535f,  0.996179829f,
+   -0.088853553f,  0.996044701f,
+   -0.090381361f,  0.995907229f,
+   -0.091908956f,  0.995767414f,
+   -0.093436336f,  0.995625256f,
+   -0.094963495f,  0.995480755f,
+   -0.096490431f,  0.995333912f,
+   -0.098017140f,  0.995184727f,
+   -0.099543619f,  0.995033199f,
+   -0.101069863f,  0.994879331f,
+   -0.102595869f,  0.994723121f,
+   -0.104121634f,  0.994564571f,
+   -0.105647154f,  0.994403680f,
+   -0.107172425f,  0.994240449f,
+   -0.108697444f,  0.994074879f,
+   -0.110222207f,  0.993906970f,
+   -0.111746711f,  0.993736722f,
+   -0.113270952f,  0.993564136f,
+   -0.114794927f,  0.993389211f,
+   -0.116318631f,  0.993211949f,
+   -0.117842062f,  0.993032350f,
+   -0.119365215f,  0.992850414f,
+   -0.120888087f,  0.992666142f,
+   -0.122410675f,  0.992479535f,
+   -0.123932975f,  0.992290591f,
+   -0.125454983f,  0.992099313f,
+   -0.126976696f,  0.991905700f,
+   -0.128498111f,  0.991709754f,
+   -0.130019223f,  0.991511473f,
+   -0.131540029f,  0.991310860f,
+   -0.133060525f,  0.991107914f,
+   -0.134580709f,  0.990902635f,
+   -0.136100575f,  0.990695025f,
+   -0.137620122f,  0.990485084f,
+   -0.139139344f,  0.990272812f,
+   -0.140658239f,  0.990058210f,
+   -0.142176804f,  0.989841278f,
+   -0.143695033f,  0.989622017f,
+   -0.145212925f,  0.989400428f,
+   -0.146730474f,  0.989176510f,
+   -0.148247679f,  0.988950265f,
+   -0.149764535f,  0.988721692f,
+   -0.151281038f,  0.988490793f,
+   -0.152797185f,  0.988257568f,
+   -0.154312973f,  0.988022017f,
+   -0.155828398f,  0.987784142f,
+   -0.157343456f,  0.987543942f,
+   -0.158858143f,  0.987301418f,
+   -0.160372457f,  0.987056571f,
+   -0.161886394f,  0.986809402f,
+   -0.163399949f,  0.986559910f,
+   -0.164913120f,  0.986308097f,
+   -0.166425904f,  0.986053963f,
+   -0.167938295f,  0.985797509f,
+   -0.169450291f,  0.985538735f,
+   -0.170961889f,  0.985277642f,
+   -0.172473084f,  0.985014231f,
+   -0.173983873f,  0.984748502f,
+   -0.175494253f,  0.984480455f,
+   -0.177004220f,  0.984210092f,
+   -0.178513771f,  0.983937413f,
+   -0.180022901f,  0.983662419f,
+   -0.181531608f,  0.983385110f,
+   -0.183039888f,  0.983105487f,
+   -0.184547737f,  0.982823551f,
+   -0.186055152f,  0.982539302f,
+   -0.187562129f,  0.982252741f,
+   -0.189068664f,  0.981963869f,
+   -0.190574755f,  0.981672686f,
+   -0.192080397f,  0.981379193f,
+   -0.193585587f,  0.981083391f,
+   -0.195090322f,  0.980785280f,
+   -0.196594598f,  0.980484862f,
+   -0.198098411f,  0.980182136f,
+   -0.199601758f,  0.979877104f,
+   -0.201104635f,  0.979569766f,
+   -0.202607039f,  0.979260123f,
+   -0.204108966f,  0.978948175f,
+   -0.205610413f,  0.978633924f,
+   -0.207111376f,  0.978317371f,
+   -0.208611852f,  0.977998515f,
+   -0.210111837f,  0.977677358f,
+   -0.211611327f,  0.977353900f,
+   -0.213110320f,  0.977028143f,
+   -0.214608811f,  0.976700086f,
+   -0.216106797f,  0.976369731f,
+   -0.217604275f,  0.976037079f,
+   -0.219101240f,  0.975702130f,
+   -0.220597690f,  0.975364885f,
+   -0.222093621f,  0.975025345f,
+   -0.223589029f,  0.974683511f,
+   -0.225083911f,  0.974339383f,
+   -0.226578264f,  0.973992962f,
+   -0.228072083f,  0.973644250f,
+   -0.229565366f,  0.973293246f,
+   -0.231058108f,  0.972939952f,
+   -0.232550307f,  0.972584369f,
+   -0.234041959f,  0.972226497f,
+   -0.235533059f,  0.971866337f,
+   -0.237023606f,  0.971503891f,
+   -0.238513595f,  0.971139158f,
+   -0.240003022f,  0.970772141f,
+   -0.241491885f,  0.970402839f,
+   -0.242980180f,  0.970031253f,
+   -0.244467903f,  0.969657385f,
+   -0.245955050f,  0.969281235f,
+   -0.247441619f,  0.968902805f,
+   -0.248927606f,  0.968522094f,
+   -0.250413007f,  0.968139105f,
+   -0.251897818f,  0.967753837f,
+   -0.253382037f,  0.967366292f,
+   -0.254865660f,  0.966976471f,
+   -0.256348682f,  0.966584374f,
+   -0.257831102f,  0.966190003f,
+   -0.259312915f,  0.965793359f,
+   -0.260794118f,  0.965394442f,
+   -0.262274707f,  0.964993253f,
+   -0.263754679f,  0.964589793f,
+   -0.265234030f,  0.964184064f,
+   -0.266712757f,  0.963776066f,
+   -0.268190857f,  0.963365800f,
+   -0.269668326f,  0.962953267f,
+   -0.271145160f,  0.962538468f,
+   -0.272621355f,  0.962121404f,
+   -0.274096910f,  0.961702077f,
+   -0.275571819f,  0.961280486f,
+   -0.277046080f,  0.960856633f,
+   -0.278519689f,  0.960430519f,
+   -0.279992643f,  0.960002146f,
+   -0.281464938f,  0.959571513f,
+   -0.282936570f,  0.959138622f,
+   -0.284407537f,  0.958703475f,
+   -0.285877835f,  0.958266071f,
+   -0.287347460f,  0.957826413f,
+   -0.288816408f,  0.957384501f,
+   -0.290284677f,  0.956940336f,
+   -0.291752263f,  0.956493919f,
+   -0.293219163f,  0.956045251f,
+   -0.294685372f,  0.955594334f,
+   -0.296150888f,  0.955141168f,
+   -0.297615707f,  0.954685755f,
+   -0.299079826f,  0.954228095f,
+   -0.300543241f,  0.953768190f,
+   -0.302005949f,  0.953306040f,
+   -0.303467947f,  0.952841648f,
+   -0.304929230f,  0.952375013f,
+   -0.306389795f,  0.951906137f,
+   -0.307849640f,  0.951435021f,
+   -0.309308760f,  0.950961666f,
+   -0.310767153f,  0.950486074f,
+   -0.312224814f,  0.950008245f,
+   -0.313681740f,  0.949528181f,
+   -0.315137929f,  0.949045882f,
+   -0.316593376f,  0.948561350f,
+   -0.318048077f,  0.948074586f,
+   -0.319502031f,  0.947585591f,
+   -0.320955232f,  0.947094366f,
+   -0.322407679f,  0.946600913f,
+   -0.323859367f,  0.946105232f,
+   -0.325310292f,  0.945607325f,
+   -0.326760452f,  0.945107193f,
+   -0.328209844f,  0.944604837f,
+   -0.329658463f,  0.944100258f,
+   -0.331106306f,  0.943593458f,
+   -0.332553370f,  0.943084437f,
+   -0.333999651f,  0.942573198f,
+   -0.335445147f,  0.942059740f,
+   -0.336889853f,  0.941544065f,
+   -0.338333767f,  0.941026175f,
+   -0.339776884f,  0.940506071f,
+   -0.341219202f,  0.939983753f,
+   -0.342660717f,  0.939459224f,
+   -0.344101426f,  0.938932484f,
+   -0.345541325f,  0.938403534f,
+   -0.346980411f,  0.937872376f,
+   -0.348418680f,  0.937339012f,
+   -0.349856130f,  0.936803442f,
+   -0.351292756f,  0.936265667f,
+   -0.352728556f,  0.935725689f,
+   -0.354163525f,  0.935183510f,
+   -0.355597662f,  0.934639130f,
+   -0.357030961f,  0.934092550f,
+   -0.358463421f,  0.933543773f,
+   -0.359895037f,  0.932992799f,
+   -0.361325806f,  0.932439629f,
+   -0.362755724f,  0.931884266f,
+   -0.364184790f,  0.931326709f,
+   -0.365612998f,  0.930766961f,
+   -0.367040346f,  0.930205023f,
+   -0.368466830f,  0.929640896f,
+   -0.369892447f,  0.929074581f,
+   -0.371317194f,  0.928506080f,
+   -0.372741067f,  0.927935395f,
+   -0.374164063f,  0.927362526f,
+   -0.375586178f,  0.926787474f,
+   -0.377007410f,  0.926210242f,
+   -0.378427755f,  0.925630831f,
+   -0.379847209f,  0.925049241f,
+   -0.381265769f,  0.924465474f,
+   -0.382683432f,  0.923879533f,
+   -0.384100195f,  0.923291417f,
+   -0.385516054f,  0.922701128f,
+   -0.386931006f,  0.922108669f,
+   -0.388345047f,  0.921514039f,
+   -0.389758174f,  0.920917242f,
+   -0.391170384f,  0.920318277f,
+   -0.392581674f,  0.919717146f,
+   -0.393992040f,  0.919113852f,
+   -0.395401479f,  0.918508394f,
+   -0.396809987f,  0.917900776f,
+   -0.398217562f,  0.917290997f,
+   -0.399624200f,  0.916679060f,
+   -0.401029897f,  0.916064966f,
+   -0.402434651f,  0.915448716f,
+   -0.403838458f,  0.914830312f,
+   -0.405241314f,  0.914209756f,
+   -0.406643217f,  0.913587048f,
+   -0.408044163f,  0.912962190f,
+   -0.409444149f,  0.912335185f,
+   -0.410843171f,  0.911706032f,
+   -0.412241227f,  0.911074734f,
+   -0.413638312f,  0.910441292f,
+   -0.415034424f,  0.909805708f,
+   -0.416429560f,  0.909167983f,
+   -0.417823716f,  0.908528119f,
+   -0.419216888f,  0.907886116f,
+   -0.420609074f,  0.907241978f,
+   -0.422000271f,  0.906595705f,
+   -0.423390474f,  0.905947298f,
+   -0.424779681f,  0.905296759f,
+   -0.426167889f,  0.904644091f,
+   -0.427555093f,  0.903989293f,
+   -0.428941292f,  0.903332368f,
+   -0.430326481f,  0.902673318f,
+   -0.431710658f,  0.902012144f,
+   -0.433093819f,  0.901348847f,
+   -0.434475961f,  0.900683429f,
+   -0.435857080f,  0.900015892f,
+   -0.437237174f,  0.899346237f,
+   -0.438616239f,  0.898674466f,
+   -0.439994271f,  0.898000580f,
+   -0.441371269f,  0.897324581f,
+   -0.442747228f,  0.896646470f,
+   -0.444122145f,  0.895966250f,
+   -0.445496017f,  0.895283921f,
+   -0.446868840f,  0.894599486f,
+   -0.448240612f,  0.893912945f,
+   -0.449611330f,  0.893224301f,
+   -0.450980989f,  0.892533555f,
+   -0.452349587f,  0.891840709f,
+   -0.453717121f,  0.891145765f,
+   -0.455083587f,  0.890448723f,
+   -0.456448982f,  0.889749586f,
+   -0.457813304f,  0.889048356f,
+   -0.459176548f,  0.888345033f,
+   -0.460538711f,  0.887639620f,
+   -0.461899791f,  0.886932119f,
+   -0.463259784f,  0.886222530f,
+   -0.464618686f,  0.885510856f,
+   -0.465976496f,  0.884797098f,
+   -0.467333209f,  0.884081259f,
+   -0.468688822f,  0.883363339f,
+   -0.470043332f,  0.882643340f,
+   -0.471396737f,  0.881921264f,
+   -0.472749032f,  0.881197113f,
+   -0.474100215f,  0.880470889f,
+   -0.475450282f,  0.879742593f,
+   -0.476799230f,  0.879012226f,
+   -0.478147056f,  0.878279792f,
+   -0.479493758f,  0.877545290f,
+   -0.480839331f,  0.876808724f,
+   -0.482183772f,  0.876070094f,
+   -0.483527079f,  0.875329403f,
+   -0.484869248f,  0.874586652f,
+   -0.486210276f,  0.873841843f,
+   -0.487550160f,  0.873094978f,
+   -0.488888897f,  0.872346059f,
+   -0.490226483f,  0.871595087f,
+   -0.491562916f,  0.870842063f,
+   -0.492898192f,  0.870086991f,
+   -0.494232309f,  0.869329871f,
+   -0.495565262f,  0.868570706f,
+   -0.496897049f,  0.867809497f,
+   -0.498227667f,  0.867046246f,
+   -0.499557113f,  0.866280954f,
+   -0.500885383f,  0.865513624f,
+   -0.502212474f,  0.864744258f,
+   -0.503538384f,  0.863972856f,
+   -0.504863109f,  0.863199422f,
+   -0.506186645f,  0.862423956f,
+   -0.507508991f,  0.861646461f,
+   -0.508830143f,  0.860866939f,
+   -0.510150097f,  0.860085390f,
+   -0.511468850f,  0.859301818f,
+   -0.512786401f,  0.858516224f,
+   -0.514102744f,  0.857728610f,
+   -0.515417878f,  0.856938977f,
+   -0.516731799f,  0.856147328f,
+   -0.518044504f,  0.855353665f,
+   -0.519355990f,  0.854557988f,
+   -0.520666254f,  0.853760301f,
+   -0.521975293f,  0.852960605f,
+   -0.523283103f,  0.852158902f,
+   -0.524589683f,  0.851355193f,
+   -0.525895027f,  0.850549481f,
+   -0.527199135f,  0.849741768f,
+   -0.528502002f,  0.848932055f,
+   -0.529803625f,  0.848120345f,
+   -0.531104001f,  0.847306639f,
+   -0.532403128f,  0.846490939f,
+   -0.533701002f,  0.845673247f,
+   -0.534997620f,  0.844853565f,
+   -0.536292979f,  0.844031895f,
+   -0.537587076f,  0.843208240f,
+   -0.538879909f,  0.842382600f,
+   -0.540171473f,  0.841554977f,
+   -0.541461766f,  0.840725375f,
+   -0.542750785f,  0.839893794f,
+   -0.544038527f,  0.839060237f,
+   -0.545324988f,  0.838224706f,
+   -0.546610167f,  0.837387202f,
+   -0.547894059f,  0.836547727f,
+   -0.549176662f,  0.835706284f,
+   -0.550457973f,  0.834862875f,
+   -0.551737988f,  0.834017501f,
+   -0.553016706f,  0.833170165f,
+   -0.554294121f,  0.832320868f,
+   -0.555570233f,  0.831469612f,
+   -0.556845037f,  0.830616400f,
+   -0.558118531f,  0.829761234f,
+   -0.559390712f,  0.828904115f,
+   -0.560661576f,  0.828045045f,
+   -0.561931121f,  0.827184027f,
+   -0.563199344f,  0.826321063f,
+   -0.564466242f,  0.825456154f,
+   -0.565731811f,  0.824589303f,
+   -0.566996049f,  0.823720511f,
+   -0.568258953f,  0.822849781f,
+   -0.569520519f,  0.821977115f,
+   -0.570780746f,  0.821102515f,
+   -0.572039629f,  0.820225983f,
+   -0.573297167f,  0.819347520f,
+   -0.574553355f,  0.818467130f,
+   -0.575808191f,  0.817584813f,
+   -0.577061673f,  0.816700573f,
+   -0.578313796f,  0.815814411f,
+   -0.579564559f,  0.814926329f,
+   -0.580813958f,  0.814036330f,
+   -0.582061990f,  0.813144415f,
+   -0.583308653f,  0.812250587f,
+   -0.584553943f,  0.811354847f,
+   -0.585797857f,  0.810457198f,
+   -0.587040394f,  0.809557642f,
+   -0.588281548f,  0.808656182f,
+   -0.589521319f,  0.807752818f,
+   -0.590759702f,  0.806847554f,
+   -0.591996695f,  0.805940391f,
+   -0.593232295f,  0.805031331f,
+   -0.594466499f,  0.804120377f,
+   -0.595699304f,  0.803207531f,
+   -0.596930708f,  0.802292796f,
+   -0.598160707f,  0.801376172f,
+   -0.599389298f,  0.800457662f,
+   -0.600616479f,  0.799537269f,
+   -0.601842247f,  0.798614995f,
+   -0.603066599f,  0.797690841f,
+   -0.604289531f,  0.796764810f,
+   -0.605511041f,  0.795836905f,
+   -0.606731127f,  0.794907126f,
+   -0.607949785f,  0.793975478f,
+   -0.609167012f,  0.793041960f,
+   -0.610382806f,  0.792106577f,
+   -0.611597164f,  0.791169330f,
+   -0.612810082f,  0.790230221f,
+   -0.614021559f,  0.789289253f,
+   -0.615231591f,  0.788346428f,
+   -0.616440175f,  0.787401747f,
+   -0.617647308f,  0.786455214f,
+   -0.618852988f,  0.785506830f,
+   -0.620057212f,  0.784556597f,
+   -0.621259977f,  0.783604519f,
+   -0.622461279f,  0.782650596f,
+   -0.623661118f,  0.781694832f,
+   -0.624859488f,  0.780737229f,
+   -0.626056388f,  0.779777788f,
+   -0.627251815f,  0.778816512f,
+   -0.628445767f,  0.777853404f,
+   -0.629638239f,  0.776888466f,
+   -0.630829230f,  0.775921699f,
+   -0.632018736f,  0.774953107f,
+   -0.633206755f,  0.773982691f,
+   -0.634393284f,  0.773010453f,
+   -0.635578320f,  0.772036397f,
+   -0.636761861f,  0.771060524f,
+   -0.637943904f,  0.770082837f,
+   -0.639124445f,  0.769103338f,
+   -0.640303482f,  0.768122029f,
+   -0.641481013f,  0.767138912f,
+   -0.642657034f,  0.766153990f,
+   -0.643831543f,  0.765167266f,
+   -0.645004537f,  0.764178741f,
+   -0.646176013f,  0.763188417f,
+   -0.647345969f,  0.762196298f,
+   -0.648514401f,  0.761202385f,
+   -0.649681307f,  0.760206682f,
+   -0.650846685f,  0.759209189f,
+   -0.652010531f,  0.758209910f,
+   -0.653172843f,  0.757208847f,
+   -0.654333618f,  0.756206001f,
+   -0.655492853f,  0.755201377f,
+   -0.656650546f,  0.754194975f,
+   -0.657806693f,  0.753186799f,
+   -0.658961293f,  0.752176850f,
+   -0.660114342f,  0.751165132f,
+   -0.661265838f,  0.750151646f,
+   -0.662415778f,  0.749136395f,
+   -0.663564159f,  0.748119380f,
+   -0.664710978f,  0.747100606f,
+   -0.665856234f,  0.746080074f,
+   -0.666999922f,  0.745057785f,
+   -0.668142041f,  0.744033744f,
+   -0.669282588f,  0.743007952f,
+   -0.670421560f,  0.741980412f,
+   -0.671558955f,  0.740951125f,
+   -0.672694769f,  0.739920095f,
+   -0.673829000f,  0.738887324f,
+   -0.674961646f,  0.737852815f,
+   -0.676092704f,  0.736816569f,
+   -0.677222170f,  0.735778589f,
+   -0.678350043f,  0.734738878f,
+   -0.679476320f,  0.733697438f,
+   -0.680600998f,  0.732654272f,
+   -0.681724074f,  0.731609381f,
+   -0.682845546f,  0.730562769f,
+   -0.683965412f,  0.729514438f,
+   -0.685083668f,  0.728464390f,
+   -0.686200312f,  0.727412629f,
+   -0.687315341f,  0.726359155f,
+   -0.688428753f,  0.725303972f,
+   -0.689540545f,  0.724247083f,
+   -0.690650714f,  0.723188489f,
+   -0.691759258f,  0.722128194f,
+   -0.692866175f,  0.721066199f,
+   -0.693971461f,  0.720002508f,
+   -0.695075114f,  0.718937122f,
+   -0.696177131f,  0.717870045f,
+   -0.697277511f,  0.716801279f,
+   -0.698376249f,  0.715730825f,
+   -0.699473345f,  0.714658688f,
+   -0.700568794f,  0.713584869f,
+   -0.701662595f,  0.712509371f,
+   -0.702754744f,  0.711432196f,
+   -0.703845241f,  0.710353347f,
+   -0.704934080f,  0.709272826f,
+   -0.706021261f,  0.708190637f,
+   -0.707106781f,  0.707106781f,
+   -0.708190637f,  0.706021261f,
+   -0.709272826f,  0.704934080f,
+   -0.710353347f,  0.703845241f,
+   -0.711432196f,  0.702754744f,
+   -0.712509371f,  0.701662595f,
+   -0.713584869f,  0.700568794f,
+   -0.714658688f,  0.699473345f,
+   -0.715730825f,  0.698376249f,
+   -0.716801279f,  0.697277511f,
+   -0.717870045f,  0.696177131f,
+   -0.718937122f,  0.695075114f,
+   -0.720002508f,  0.693971461f,
+   -0.721066199f,  0.692866175f,
+   -0.722128194f,  0.691759258f,
+   -0.723188489f,  0.690650714f,
+   -0.724247083f,  0.689540545f,
+   -0.725303972f,  0.688428753f,
+   -0.726359155f,  0.687315341f,
+   -0.727412629f,  0.686200312f,
+   -0.728464390f,  0.685083668f,
+   -0.729514438f,  0.683965412f,
+   -0.730562769f,  0.682845546f,
+   -0.731609381f,  0.681724074f,
+   -0.732654272f,  0.680600998f,
+   -0.733697438f,  0.679476320f,
+   -0.734738878f,  0.678350043f,
+   -0.735778589f,  0.677222170f,
+   -0.736816569f,  0.676092704f,
+   -0.737852815f,  0.674961646f,
+   -0.738887324f,  0.673829000f,
+   -0.739920095f,  0.672694769f,
+   -0.740951125f,  0.671558955f,
+   -0.741980412f,  0.670421560f,
+   -0.743007952f,  0.669282588f,
+   -0.744033744f,  0.668142041f,
+   -0.745057785f,  0.666999922f,
+   -0.746080074f,  0.665856234f,
+   -0.747100606f,  0.664710978f,
+   -0.748119380f,  0.663564159f,
+   -0.749136395f,  0.662415778f,
+   -0.750151646f,  0.661265838f,
+   -0.751165132f,  0.660114342f,
+   -0.752176850f,  0.658961293f,
+   -0.753186799f,  0.657806693f,
+   -0.754194975f,  0.656650546f,
+   -0.755201377f,  0.655492853f,
+   -0.756206001f,  0.654333618f,
+   -0.757208847f,  0.653172843f,
+   -0.758209910f,  0.652010531f,
+   -0.759209189f,  0.650846685f,
+   -0.760206682f,  0.649681307f,
+   -0.761202385f,  0.648514401f,
+   -0.762196298f,  0.647345969f,
+   -0.763188417f,  0.646176013f,
+   -0.764178741f,  0.645004537f,
+   -0.765167266f,  0.643831543f,
+   -0.766153990f,  0.642657034f,
+   -0.767138912f,  0.641481013f,
+   -0.768122029f,  0.640303482f,
+   -0.769103338f,  0.639124445f,
+   -0.770082837f,  0.637943904f,
+   -0.771060524f,  0.636761861f,
+   -0.772036397f,  0.635578320f,
+   -0.773010453f,  0.634393284f,
+   -0.773982691f,  0.633206755f,
+   -0.774953107f,  0.632018736f,
+   -0.775921699f,  0.630829230f,
+   -0.776888466f,  0.629638239f,
+   -0.777853404f,  0.628445767f,
+   -0.778816512f,  0.627251815f,
+   -0.779777788f,  0.626056388f,
+   -0.780737229f,  0.624859488f,
+   -0.781694832f,  0.623661118f,
+   -0.782650596f,  0.622461279f,
+   -0.783604519f,  0.621259977f,
+   -0.784556597f,  0.620057212f,
+   -0.785506830f,  0.618852988f,
+   -0.786455214f,  0.617647308f,
+   -0.787401747f,  0.616440175f,
+   -0.788346428f,  0.615231591f,
+   -0.789289253f,  0.614021559f,
+   -0.790230221f,  0.612810082f,
+   -0.791169330f,  0.611597164f,
+   -0.792106577f,  0.610382806f,
+   -0.793041960f,  0.609167012f,
+   -0.793975478f,  0.607949785f,
+   -0.794907126f,  0.606731127f,
+   -0.795836905f,  0.605511041f,
+   -0.796764810f,  0.604289531f,
+   -0.797690841f,  0.603066599f,
+   -0.798614995f,  0.601842247f,
+   -0.799537269f,  0.600616479f,
+   -0.800457662f,  0.599389298f,
+   -0.801376172f,  0.598160707f,
+   -0.802292796f,  0.596930708f,
+   -0.803207531f,  0.595699304f,
+   -0.804120377f,  0.594466499f,
+   -0.805031331f,  0.593232295f,
+   -0.805940391f,  0.591996695f,
+   -0.806847554f,  0.590759702f,
+   -0.807752818f,  0.589521319f,
+   -0.808656182f,  0.588281548f,
+   -0.809557642f,  0.587040394f,
+   -0.810457198f,  0.585797857f,
+   -0.811354847f,  0.584553943f,
+   -0.812250587f,  0.583308653f,
+   -0.813144415f,  0.582061990f,
+   -0.814036330f,  0.580813958f,
+   -0.814926329f,  0.579564559f,
+   -0.815814411f,  0.578313796f,
+   -0.816700573f,  0.577061673f,
+   -0.817584813f,  0.575808191f,
+   -0.818467130f,  0.574553355f,
+   -0.819347520f,  0.573297167f,
+   -0.820225983f,  0.572039629f,
+   -0.821102515f,  0.570780746f,
+   -0.821977115f,  0.569520519f,
+   -0.822849781f,  0.568258953f,
+   -0.823720511f,  0.566996049f,
+   -0.824589303f,  0.565731811f,
+   -0.825456154f,  0.564466242f,
+   -0.826321063f,  0.563199344f,
+   -0.827184027f,  0.561931121f,
+   -0.828045045f,  0.560661576f,
+   -0.828904115f,  0.559390712f,
+   -0.829761234f,  0.558118531f,
+   -0.830616400f,  0.556845037f,
+   -0.831469612f,  0.555570233f,
+   -0.832320868f,  0.554294121f,
+   -0.833170165f,  0.553016706f,
+   -0.834017501f,  0.551737988f,
+   -0.834862875f,  0.550457973f,
+   -0.835706284f,  0.549176662f,
+   -0.836547727f,  0.547894059f,
+   -0.837387202f,  0.546610167f,
+   -0.838224706f,  0.545324988f,
+   -0.839060237f,  0.544038527f,
+   -0.839893794f,  0.542750785f,
+   -0.840725375f,  0.541461766f,
+   -0.841554977f,  0.540171473f,
+   -0.842382600f,  0.538879909f,
+   -0.843208240f,  0.537587076f,
+   -0.844031895f,  0.536292979f,
+   -0.844853565f,  0.534997620f,
+   -0.845673247f,  0.533701002f,
+   -0.846490939f,  0.532403128f,
+   -0.847306639f,  0.531104001f,
+   -0.848120345f,  0.529803625f,
+   -0.848932055f,  0.528502002f,
+   -0.849741768f,  0.527199135f,
+   -0.850549481f,  0.525895027f,
+   -0.851355193f,  0.524589683f,
+   -0.852158902f,  0.523283103f,
+   -0.852960605f,  0.521975293f,
+   -0.853760301f,  0.520666254f,
+   -0.854557988f,  0.519355990f,
+   -0.855353665f,  0.518044504f,
+   -0.856147328f,  0.516731799f,
+   -0.856938977f,  0.515417878f,
+   -0.857728610f,  0.514102744f,
+   -0.858516224f,  0.512786401f,
+   -0.859301818f,  0.511468850f,
+   -0.860085390f,  0.510150097f,
+   -0.860866939f,  0.508830143f,
+   -0.861646461f,  0.507508991f,
+   -0.862423956f,  0.506186645f,
+   -0.863199422f,  0.504863109f,
+   -0.863972856f,  0.503538384f,
+   -0.864744258f,  0.502212474f,
+   -0.865513624f,  0.500885383f,
+   -0.866280954f,  0.499557113f,
+   -0.867046246f,  0.498227667f,
+   -0.867809497f,  0.496897049f,
+   -0.868570706f,  0.495565262f,
+   -0.869329871f,  0.494232309f,
+   -0.870086991f,  0.492898192f,
+   -0.870842063f,  0.491562916f,
+   -0.871595087f,  0.490226483f,
+   -0.872346059f,  0.488888897f,
+   -0.873094978f,  0.487550160f,
+   -0.873841843f,  0.486210276f,
+   -0.874586652f,  0.484869248f,
+   -0.875329403f,  0.483527079f,
+   -0.876070094f,  0.482183772f,
+   -0.876808724f,  0.480839331f,
+   -0.877545290f,  0.479493758f,
+   -0.878279792f,  0.478147056f,
+   -0.879012226f,  0.476799230f,
+   -0.879742593f,  0.475450282f,
+   -0.880470889f,  0.474100215f,
+   -0.881197113f,  0.472749032f,
+   -0.881921264f,  0.471396737f,
+   -0.882643340f,  0.470043332f,
+   -0.883363339f,  0.468688822f,
+   -0.884081259f,  0.467333209f,
+   -0.884797098f,  0.465976496f,
+   -0.885510856f,  0.464618686f,
+   -0.886222530f,  0.463259784f,
+   -0.886932119f,  0.461899791f,
+   -0.887639620f,  0.460538711f,
+   -0.888345033f,  0.459176548f,
+   -0.889048356f,  0.457813304f,
+   -0.889749586f,  0.456448982f,
+   -0.890448723f,  0.455083587f,
+   -0.891145765f,  0.453717121f,
+   -0.891840709f,  0.452349587f,
+   -0.892533555f,  0.450980989f,
+   -0.893224301f,  0.449611330f,
+   -0.893912945f,  0.448240612f,
+   -0.894599486f,  0.446868840f,
+   -0.895283921f,  0.445496017f,
+   -0.895966250f,  0.444122145f,
+   -0.896646470f,  0.442747228f,
+   -0.897324581f,  0.441371269f,
+   -0.898000580f,  0.439994271f,
+   -0.898674466f,  0.438616239f,
+   -0.899346237f,  0.437237174f,
+   -0.900015892f,  0.435857080f,
+   -0.900683429f,  0.434475961f,
+   -0.901348847f,  0.433093819f,
+   -0.902012144f,  0.431710658f,
+   -0.902673318f,  0.430326481f,
+   -0.903332368f,  0.428941292f,
+   -0.903989293f,  0.427555093f,
+   -0.904644091f,  0.426167889f,
+   -0.905296759f,  0.424779681f,
+   -0.905947298f,  0.423390474f,
+   -0.906595705f,  0.422000271f,
+   -0.907241978f,  0.420609074f,
+   -0.907886116f,  0.419216888f,
+   -0.908528119f,  0.417823716f,
+   -0.909167983f,  0.416429560f,
+   -0.909805708f,  0.415034424f,
+   -0.910441292f,  0.413638312f,
+   -0.911074734f,  0.412241227f,
+   -0.911706032f,  0.410843171f,
+   -0.912335185f,  0.409444149f,
+   -0.912962190f,  0.408044163f,
+   -0.913587048f,  0.406643217f,
+   -0.914209756f,  0.405241314f,
+   -0.914830312f,  0.403838458f,
+   -0.915448716f,  0.402434651f,
+   -0.916064966f,  0.401029897f,
+   -0.916679060f,  0.399624200f,
+   -0.917290997f,  0.398217562f,
+   -0.917900776f,  0.396809987f,
+   -0.918508394f,  0.395401479f,
+   -0.919113852f,  0.393992040f,
+   -0.919717146f,  0.392581674f,
+   -0.920318277f,  0.391170384f,
+   -0.920917242f,  0.389758174f,
+   -0.921514039f,  0.388345047f,
+   -0.922108669f,  0.386931006f,
+   -0.922701128f,  0.385516054f,
+   -0.923291417f,  0.384100195f,
+   -0.923879533f,  0.382683432f,
+   -0.924465474f,  0.381265769f,
+   -0.925049241f,  0.379847209f,
+   -0.925630831f,  0.378427755f,
+   -0.926210242f,  0.377007410f,
+   -0.926787474f,  0.375586178f,
+   -0.927362526f,  0.374164063f,
+   -0.927935395f,  0.372741067f,
+   -0.928506080f,  0.371317194f,
+   -0.929074581f,  0.369892447f,
+   -0.929640896f,  0.368466830f,
+   -0.930205023f,  0.367040346f,
+   -0.930766961f,  0.365612998f,
+   -0.931326709f,  0.364184790f,
+   -0.931884266f,  0.362755724f,
+   -0.932439629f,  0.361325806f,
+   -0.932992799f,  0.359895037f,
+   -0.933543773f,  0.358463421f,
+   -0.934092550f,  0.357030961f,
+   -0.934639130f,  0.355597662f,
+   -0.935183510f,  0.354163525f,
+   -0.935725689f,  0.352728556f,
+   -0.936265667f,  0.351292756f,
+   -0.936803442f,  0.349856130f,
+   -0.937339012f,  0.348418680f,
+   -0.937872376f,  0.346980411f,
+   -0.938403534f,  0.345541325f,
+   -0.938932484f,  0.344101426f,
+   -0.939459224f,  0.342660717f,
+   -0.939983753f,  0.341219202f,
+   -0.940506071f,  0.339776884f,
+   -0.941026175f,  0.338333767f,
+   -0.941544065f,  0.336889853f,
+   -0.942059740f,  0.335445147f,
+   -0.942573198f,  0.333999651f,
+   -0.943084437f,  0.332553370f,
+   -0.943593458f,  0.331106306f,
+   -0.944100258f,  0.329658463f,
+   -0.944604837f,  0.328209844f,
+   -0.945107193f,  0.326760452f,
+   -0.945607325f,  0.325310292f,
+   -0.946105232f,  0.323859367f,
+   -0.946600913f,  0.322407679f,
+   -0.947094366f,  0.320955232f,
+   -0.947585591f,  0.319502031f,
+   -0.948074586f,  0.318048077f,
+   -0.948561350f,  0.316593376f,
+   -0.949045882f,  0.315137929f,
+   -0.949528181f,  0.313681740f,
+   -0.950008245f,  0.312224814f,
+   -0.950486074f,  0.310767153f,
+   -0.950961666f,  0.309308760f,
+   -0.951435021f,  0.307849640f,
+   -0.951906137f,  0.306389795f,
+   -0.952375013f,  0.304929230f,
+   -0.952841648f,  0.303467947f,
+   -0.953306040f,  0.302005949f,
+   -0.953768190f,  0.300543241f,
+   -0.954228095f,  0.299079826f,
+   -0.954685755f,  0.297615707f,
+   -0.955141168f,  0.296150888f,
+   -0.955594334f,  0.294685372f,
+   -0.956045251f,  0.293219163f,
+   -0.956493919f,  0.291752263f,
+   -0.956940336f,  0.290284677f,
+   -0.957384501f,  0.288816408f,
+   -0.957826413f,  0.287347460f,
+   -0.958266071f,  0.285877835f,
+   -0.958703475f,  0.284407537f,
+   -0.959138622f,  0.282936570f,
+   -0.959571513f,  0.281464938f,
+   -0.960002146f,  0.279992643f,
+   -0.960430519f,  0.278519689f,
+   -0.960856633f,  0.277046080f,
+   -0.961280486f,  0.275571819f,
+   -0.961702077f,  0.274096910f,
+   -0.962121404f,  0.272621355f,
+   -0.962538468f,  0.271145160f,
+   -0.962953267f,  0.269668326f,
+   -0.963365800f,  0.268190857f,
+   -0.963776066f,  0.266712757f,
+   -0.964184064f,  0.265234030f,
+   -0.964589793f,  0.263754679f,
+   -0.964993253f,  0.262274707f,
+   -0.965394442f,  0.260794118f,
+   -0.965793359f,  0.259312915f,
+   -0.966190003f,  0.257831102f,
+   -0.966584374f,  0.256348682f,
+   -0.966976471f,  0.254865660f,
+   -0.967366292f,  0.253382037f,
+   -0.967753837f,  0.251897818f,
+   -0.968139105f,  0.250413007f,
+   -0.968522094f,  0.248927606f,
+   -0.968902805f,  0.247441619f,
+   -0.969281235f,  0.245955050f,
+   -0.969657385f,  0.244467903f,
+   -0.970031253f,  0.242980180f,
+   -0.970402839f,  0.241491885f,
+   -0.970772141f,  0.240003022f,
+   -0.971139158f,  0.238513595f,
+   -0.971503891f,  0.237023606f,
+   -0.971866337f,  0.235533059f,
+   -0.972226497f,  0.234041959f,
+   -0.972584369f,  0.232550307f,
+   -0.972939952f,  0.231058108f,
+   -0.973293246f,  0.229565366f,
+   -0.973644250f,  0.228072083f,
+   -0.973992962f,  0.226578264f,
+   -0.974339383f,  0.225083911f,
+   -0.974683511f,  0.223589029f,
+   -0.975025345f,  0.222093621f,
+   -0.975364885f,  0.220597690f,
+   -0.975702130f,  0.219101240f,
+   -0.976037079f,  0.217604275f,
+   -0.976369731f,  0.216106797f,
+   -0.976700086f,  0.214608811f,
+   -0.977028143f,  0.213110320f,
+   -0.977353900f,  0.211611327f,
+   -0.977677358f,  0.210111837f,
+   -0.977998515f,  0.208611852f,
+   -0.978317371f,  0.207111376f,
+   -0.978633924f,  0.205610413f,
+   -0.978948175f,  0.204108966f,
+   -0.979260123f,  0.202607039f,
+   -0.979569766f,  0.201104635f,
+   -0.979877104f,  0.199601758f,
+   -0.980182136f,  0.198098411f,
+   -0.980484862f,  0.196594598f,
+   -0.980785280f,  0.195090322f,
+   -0.981083391f,  0.193585587f,
+   -0.981379193f,  0.192080397f,
+   -0.981672686f,  0.190574755f,
+   -0.981963869f,  0.189068664f,
+   -0.982252741f,  0.187562129f,
+   -0.982539302f,  0.186055152f,
+   -0.982823551f,  0.184547737f,
+   -0.983105487f,  0.183039888f,
+   -0.983385110f,  0.181531608f,
+   -0.983662419f,  0.180022901f,
+   -0.983937413f,  0.178513771f,
+   -0.984210092f,  0.177004220f,
+   -0.984480455f,  0.175494253f,
+   -0.984748502f,  0.173983873f,
+   -0.985014231f,  0.172473084f,
+   -0.985277642f,  0.170961889f,
+   -0.985538735f,  0.169450291f,
+   -0.985797509f,  0.167938295f,
+   -0.986053963f,  0.166425904f,
+   -0.986308097f,  0.164913120f,
+   -0.986559910f,  0.163399949f,
+   -0.986809402f,  0.161886394f,
+   -0.987056571f,  0.160372457f,
+   -0.987301418f,  0.158858143f,
+   -0.987543942f,  0.157343456f,
+   -0.987784142f,  0.155828398f,
+   -0.988022017f,  0.154312973f,
+   -0.988257568f,  0.152797185f,
+   -0.988490793f,  0.151281038f,
+   -0.988721692f,  0.149764535f,
+   -0.988950265f,  0.148247679f,
+   -0.989176510f,  0.146730474f,
+   -0.989400428f,  0.145212925f,
+   -0.989622017f,  0.143695033f,
+   -0.989841278f,  0.142176804f,
+   -0.990058210f,  0.140658239f,
+   -0.990272812f,  0.139139344f,
+   -0.990485084f,  0.137620122f,
+   -0.990695025f,  0.136100575f,
+   -0.990902635f,  0.134580709f,
+   -0.991107914f,  0.133060525f,
+   -0.991310860f,  0.131540029f,
+   -0.991511473f,  0.130019223f,
+   -0.991709754f,  0.128498111f,
+   -0.991905700f,  0.126976696f,
+   -0.992099313f,  0.125454983f,
+   -0.992290591f,  0.123932975f,
+   -0.992479535f,  0.122410675f,
+   -0.992666142f,  0.120888087f,
+   -0.992850414f,  0.119365215f,
+   -0.993032350f,  0.117842062f,
+   -0.993211949f,  0.116318631f,
+   -0.993389211f,  0.114794927f,
+   -0.993564136f,  0.113270952f,
+   -0.993736722f,  0.111746711f,
+   -0.993906970f,  0.110222207f,
+   -0.994074879f,  0.108697444f,
+   -0.994240449f,  0.107172425f,
+   -0.994403680f,  0.105647154f,
+   -0.994564571f,  0.104121634f,
+   -0.994723121f,  0.102595869f,
+   -0.994879331f,  0.101069863f,
+   -0.995033199f,  0.099543619f,
+   -0.995184727f,  0.098017140f,
+   -0.995333912f,  0.096490431f,
+   -0.995480755f,  0.094963495f,
+   -0.995625256f,  0.093436336f,
+   -0.995767414f,  0.091908956f,
+   -0.995907229f,  0.090381361f,
+   -0.996044701f,  0.088853553f,
+   -0.996179829f,  0.087325535f,
+   -0.996312612f,  0.085797312f,
+   -0.996443051f,  0.084268888f,
+   -0.996571146f,  0.082740265f,
+   -0.996696895f,  0.081211447f,
+   -0.996820299f,  0.079682438f,
+   -0.996941358f,  0.078153242f,
+   -0.997060070f,  0.076623861f,
+   -0.997176437f,  0.075094301f,
+   -0.997290457f,  0.073564564f,
+   -0.997402130f,  0.072034653f,
+   -0.997511456f,  0.070504573f,
+   -0.997618435f,  0.068974328f,
+   -0.997723067f,  0.067443920f,
+   -0.997825350f,  0.065913353f,
+   -0.997925286f,  0.064382631f,
+   -0.998022874f,  0.062851758f,
+   -0.998118113f,  0.061320736f,
+   -0.998211003f,  0.059789571f,
+   -0.998301545f,  0.058258265f,
+   -0.998389737f,  0.056726821f,
+   -0.998475581f,  0.055195244f,
+   -0.998559074f,  0.053663538f,
+   -0.998640218f,  0.052131705f,
+   -0.998719012f,  0.050599749f,
+   -0.998795456f,  0.049067674f,
+   -0.998869550f,  0.047535484f,
+   -0.998941293f,  0.046003182f,
+   -0.999010686f,  0.044470772f,
+   -0.999077728f,  0.042938257f,
+   -0.999142419f,  0.041405641f,
+   -0.999204759f,  0.039872928f,
+   -0.999264747f,  0.038340120f,
+   -0.999322385f,  0.036807223f,
+   -0.999377670f,  0.035274239f,
+   -0.999430605f,  0.033741172f,
+   -0.999481187f,  0.032208025f,
+   -0.999529418f,  0.030674803f,
+   -0.999575296f,  0.029141509f,
+   -0.999618822f,  0.027608146f,
+   -0.999659997f,  0.026074718f,
+   -0.999698819f,  0.024541229f,
+   -0.999735288f,  0.023007681f,
+   -0.999769405f,  0.021474080f,
+   -0.999801170f,  0.019940429f,
+   -0.999830582f,  0.018406730f,
+   -0.999857641f,  0.016872988f,
+   -0.999882347f,  0.015339206f,
+   -0.999904701f,  0.013805389f,
+   -0.999924702f,  0.012271538f,
+   -0.999942350f,  0.010737659f,
+   -0.999957645f,  0.009203755f,
+   -0.999970586f,  0.007669829f,
+   -0.999981175f,  0.006135885f,
+   -0.999989411f,  0.004601926f,
+   -0.999995294f,  0.003067957f,
+   -0.999998823f,  0.001533980f,
+   -1.000000000f,  0.000000000f,
+   -0.999998823f, -0.001533980f,
+   -0.999995294f, -0.003067957f,
+   -0.999989411f, -0.004601926f,
+   -0.999981175f, -0.006135885f,
+   -0.999970586f, -0.007669829f,
+   -0.999957645f, -0.009203755f,
+   -0.999942350f, -0.010737659f,
+   -0.999924702f, -0.012271538f,
+   -0.999904701f, -0.013805389f,
+   -0.999882347f, -0.015339206f,
+   -0.999857641f, -0.016872988f,
+   -0.999830582f, -0.018406730f,
+   -0.999801170f, -0.019940429f,
+   -0.999769405f, -0.021474080f,
+   -0.999735288f, -0.023007681f,
+   -0.999698819f, -0.024541229f,
+   -0.999659997f, -0.026074718f,
+   -0.999618822f, -0.027608146f,
+   -0.999575296f, -0.029141509f,
+   -0.999529418f, -0.030674803f,
+   -0.999481187f, -0.032208025f,
+   -0.999430605f, -0.033741172f,
+   -0.999377670f, -0.035274239f,
+   -0.999322385f, -0.036807223f,
+   -0.999264747f, -0.038340120f,
+   -0.999204759f, -0.039872928f,
+   -0.999142419f, -0.041405641f,
+   -0.999077728f, -0.042938257f,
+   -0.999010686f, -0.044470772f,
+   -0.998941293f, -0.046003182f,
+   -0.998869550f, -0.047535484f,
+   -0.998795456f, -0.049067674f,
+   -0.998719012f, -0.050599749f,
+   -0.998640218f, -0.052131705f,
+   -0.998559074f, -0.053663538f,
+   -0.998475581f, -0.055195244f,
+   -0.998389737f, -0.056726821f,
+   -0.998301545f, -0.058258265f,
+   -0.998211003f, -0.059789571f,
+   -0.998118113f, -0.061320736f,
+   -0.998022874f, -0.062851758f,
+   -0.997925286f, -0.064382631f,
+   -0.997825350f, -0.065913353f,
+   -0.997723067f, -0.067443920f,
+   -0.997618435f, -0.068974328f,
+   -0.997511456f, -0.070504573f,
+   -0.997402130f, -0.072034653f,
+   -0.997290457f, -0.073564564f,
+   -0.997176437f, -0.075094301f,
+   -0.997060070f, -0.076623861f,
+   -0.996941358f, -0.078153242f,
+   -0.996820299f, -0.079682438f,
+   -0.996696895f, -0.081211447f,
+   -0.996571146f, -0.082740265f,
+   -0.996443051f, -0.084268888f,
+   -0.996312612f, -0.085797312f,
+   -0.996179829f, -0.087325535f,
+   -0.996044701f, -0.088853553f,
+   -0.995907229f, -0.090381361f,
+   -0.995767414f, -0.091908956f,
+   -0.995625256f, -0.093436336f,
+   -0.995480755f, -0.094963495f,
+   -0.995333912f, -0.096490431f,
+   -0.995184727f, -0.098017140f,
+   -0.995033199f, -0.099543619f,
+   -0.994879331f, -0.101069863f,
+   -0.994723121f, -0.102595869f,
+   -0.994564571f, -0.104121634f,
+   -0.994403680f, -0.105647154f,
+   -0.994240449f, -0.107172425f,
+   -0.994074879f, -0.108697444f,
+   -0.993906970f, -0.110222207f,
+   -0.993736722f, -0.111746711f,
+   -0.993564136f, -0.113270952f,
+   -0.993389211f, -0.114794927f,
+   -0.993211949f, -0.116318631f,
+   -0.993032350f, -0.117842062f,
+   -0.992850414f, -0.119365215f,
+   -0.992666142f, -0.120888087f,
+   -0.992479535f, -0.122410675f,
+   -0.992290591f, -0.123932975f,
+   -0.992099313f, -0.125454983f,
+   -0.991905700f, -0.126976696f,
+   -0.991709754f, -0.128498111f,
+   -0.991511473f, -0.130019223f,
+   -0.991310860f, -0.131540029f,
+   -0.991107914f, -0.133060525f,
+   -0.990902635f, -0.134580709f,
+   -0.990695025f, -0.136100575f,
+   -0.990485084f, -0.137620122f,
+   -0.990272812f, -0.139139344f,
+   -0.990058210f, -0.140658239f,
+   -0.989841278f, -0.142176804f,
+   -0.989622017f, -0.143695033f,
+   -0.989400428f, -0.145212925f,
+   -0.989176510f, -0.146730474f,
+   -0.988950265f, -0.148247679f,
+   -0.988721692f, -0.149764535f,
+   -0.988490793f, -0.151281038f,
+   -0.988257568f, -0.152797185f,
+   -0.988022017f, -0.154312973f,
+   -0.987784142f, -0.155828398f,
+   -0.987543942f, -0.157343456f,
+   -0.987301418f, -0.158858143f,
+   -0.987056571f, -0.160372457f,
+   -0.986809402f, -0.161886394f,
+   -0.986559910f, -0.163399949f,
+   -0.986308097f, -0.164913120f,
+   -0.986053963f, -0.166425904f,
+   -0.985797509f, -0.167938295f,
+   -0.985538735f, -0.169450291f,
+   -0.985277642f, -0.170961889f,
+   -0.985014231f, -0.172473084f,
+   -0.984748502f, -0.173983873f,
+   -0.984480455f, -0.175494253f,
+   -0.984210092f, -0.177004220f,
+   -0.983937413f, -0.178513771f,
+   -0.983662419f, -0.180022901f,
+   -0.983385110f, -0.181531608f,
+   -0.983105487f, -0.183039888f,
+   -0.982823551f, -0.184547737f,
+   -0.982539302f, -0.186055152f,
+   -0.982252741f, -0.187562129f,
+   -0.981963869f, -0.189068664f,
+   -0.981672686f, -0.190574755f,
+   -0.981379193f, -0.192080397f,
+   -0.981083391f, -0.193585587f,
+   -0.980785280f, -0.195090322f,
+   -0.980484862f, -0.196594598f,
+   -0.980182136f, -0.198098411f,
+   -0.979877104f, -0.199601758f,
+   -0.979569766f, -0.201104635f,
+   -0.979260123f, -0.202607039f,
+   -0.978948175f, -0.204108966f,
+   -0.978633924f, -0.205610413f,
+   -0.978317371f, -0.207111376f,
+   -0.977998515f, -0.208611852f,
+   -0.977677358f, -0.210111837f,
+   -0.977353900f, -0.211611327f,
+   -0.977028143f, -0.213110320f,
+   -0.976700086f, -0.214608811f,
+   -0.976369731f, -0.216106797f,
+   -0.976037079f, -0.217604275f,
+   -0.975702130f, -0.219101240f,
+   -0.975364885f, -0.220597690f,
+   -0.975025345f, -0.222093621f,
+   -0.974683511f, -0.223589029f,
+   -0.974339383f, -0.225083911f,
+   -0.973992962f, -0.226578264f,
+   -0.973644250f, -0.228072083f,
+   -0.973293246f, -0.229565366f,
+   -0.972939952f, -0.231058108f,
+   -0.972584369f, -0.232550307f,
+   -0.972226497f, -0.234041959f,
+   -0.971866337f, -0.235533059f,
+   -0.971503891f, -0.237023606f,
+   -0.971139158f, -0.238513595f,
+   -0.970772141f, -0.240003022f,
+   -0.970402839f, -0.241491885f,
+   -0.970031253f, -0.242980180f,
+   -0.969657385f, -0.244467903f,
+   -0.969281235f, -0.245955050f,
+   -0.968902805f, -0.247441619f,
+   -0.968522094f, -0.248927606f,
+   -0.968139105f, -0.250413007f,
+   -0.967753837f, -0.251897818f,
+   -0.967366292f, -0.253382037f,
+   -0.966976471f, -0.254865660f,
+   -0.966584374f, -0.256348682f,
+   -0.966190003f, -0.257831102f,
+   -0.965793359f, -0.259312915f,
+   -0.965394442f, -0.260794118f,
+   -0.964993253f, -0.262274707f,
+   -0.964589793f, -0.263754679f,
+   -0.964184064f, -0.265234030f,
+   -0.963776066f, -0.266712757f,
+   -0.963365800f, -0.268190857f,
+   -0.962953267f, -0.269668326f,
+   -0.962538468f, -0.271145160f,
+   -0.962121404f, -0.272621355f,
+   -0.961702077f, -0.274096910f,
+   -0.961280486f, -0.275571819f,
+   -0.960856633f, -0.277046080f,
+   -0.960430519f, -0.278519689f,
+   -0.960002146f, -0.279992643f,
+   -0.959571513f, -0.281464938f,
+   -0.959138622f, -0.282936570f,
+   -0.958703475f, -0.284407537f,
+   -0.958266071f, -0.285877835f,
+   -0.957826413f, -0.287347460f,
+   -0.957384501f, -0.288816408f,
+   -0.956940336f, -0.290284677f,
+   -0.956493919f, -0.291752263f,
+   -0.956045251f, -0.293219163f,
+   -0.955594334f, -0.294685372f,
+   -0.955141168f, -0.296150888f,
+   -0.954685755f, -0.297615707f,
+   -0.954228095f, -0.299079826f,
+   -0.953768190f, -0.300543241f,
+   -0.953306040f, -0.302005949f,
+   -0.952841648f, -0.303467947f,
+   -0.952375013f, -0.304929230f,
+   -0.951906137f, -0.306389795f,
+   -0.951435021f, -0.307849640f,
+   -0.950961666f, -0.309308760f,
+   -0.950486074f, -0.310767153f,
+   -0.950008245f, -0.312224814f,
+   -0.949528181f, -0.313681740f,
+   -0.949045882f, -0.315137929f,
+   -0.948561350f, -0.316593376f,
+   -0.948074586f, -0.318048077f,
+   -0.947585591f, -0.319502031f,
+   -0.947094366f, -0.320955232f,
+   -0.946600913f, -0.322407679f,
+   -0.946105232f, -0.323859367f,
+   -0.945607325f, -0.325310292f,
+   -0.945107193f, -0.326760452f,
+   -0.944604837f, -0.328209844f,
+   -0.944100258f, -0.329658463f,
+   -0.943593458f, -0.331106306f,
+   -0.943084437f, -0.332553370f,
+   -0.942573198f, -0.333999651f,
+   -0.942059740f, -0.335445147f,
+   -0.941544065f, -0.336889853f,
+   -0.941026175f, -0.338333767f,
+   -0.940506071f, -0.339776884f,
+   -0.939983753f, -0.341219202f,
+   -0.939459224f, -0.342660717f,
+   -0.938932484f, -0.344101426f,
+   -0.938403534f, -0.345541325f,
+   -0.937872376f, -0.346980411f,
+   -0.937339012f, -0.348418680f,
+   -0.936803442f, -0.349856130f,
+   -0.936265667f, -0.351292756f,
+   -0.935725689f, -0.352728556f,
+   -0.935183510f, -0.354163525f,
+   -0.934639130f, -0.355597662f,
+   -0.934092550f, -0.357030961f,
+   -0.933543773f, -0.358463421f,
+   -0.932992799f, -0.359895037f,
+   -0.932439629f, -0.361325806f,
+   -0.931884266f, -0.362755724f,
+   -0.931326709f, -0.364184790f,
+   -0.930766961f, -0.365612998f,
+   -0.930205023f, -0.367040346f,
+   -0.929640896f, -0.368466830f,
+   -0.929074581f, -0.369892447f,
+   -0.928506080f, -0.371317194f,
+   -0.927935395f, -0.372741067f,
+   -0.927362526f, -0.374164063f,
+   -0.926787474f, -0.375586178f,
+   -0.926210242f, -0.377007410f,
+   -0.925630831f, -0.378427755f,
+   -0.925049241f, -0.379847209f,
+   -0.924465474f, -0.381265769f,
+   -0.923879533f, -0.382683432f,
+   -0.923291417f, -0.384100195f,
+   -0.922701128f, -0.385516054f,
+   -0.922108669f, -0.386931006f,
+   -0.921514039f, -0.388345047f,
+   -0.920917242f, -0.389758174f,
+   -0.920318277f, -0.391170384f,
+   -0.919717146f, -0.392581674f,
+   -0.919113852f, -0.393992040f,
+   -0.918508394f, -0.395401479f,
+   -0.917900776f, -0.396809987f,
+   -0.917290997f, -0.398217562f,
+   -0.916679060f, -0.399624200f,
+   -0.916064966f, -0.401029897f,
+   -0.915448716f, -0.402434651f,
+   -0.914830312f, -0.403838458f,
+   -0.914209756f, -0.405241314f,
+   -0.913587048f, -0.406643217f,
+   -0.912962190f, -0.408044163f,
+   -0.912335185f, -0.409444149f,
+   -0.911706032f, -0.410843171f,
+   -0.911074734f, -0.412241227f,
+   -0.910441292f, -0.413638312f,
+   -0.909805708f, -0.415034424f,
+   -0.909167983f, -0.416429560f,
+   -0.908528119f, -0.417823716f,
+   -0.907886116f, -0.419216888f,
+   -0.907241978f, -0.420609074f,
+   -0.906595705f, -0.422000271f,
+   -0.905947298f, -0.423390474f,
+   -0.905296759f, -0.424779681f,
+   -0.904644091f, -0.426167889f,
+   -0.903989293f, -0.427555093f,
+   -0.903332368f, -0.428941292f,
+   -0.902673318f, -0.430326481f,
+   -0.902012144f, -0.431710658f,
+   -0.901348847f, -0.433093819f,
+   -0.900683429f, -0.434475961f,
+   -0.900015892f, -0.435857080f,
+   -0.899346237f, -0.437237174f,
+   -0.898674466f, -0.438616239f,
+   -0.898000580f, -0.439994271f,
+   -0.897324581f, -0.441371269f,
+   -0.896646470f, -0.442747228f,
+   -0.895966250f, -0.444122145f,
+   -0.895283921f, -0.445496017f,
+   -0.894599486f, -0.446868840f,
+   -0.893912945f, -0.448240612f,
+   -0.893224301f, -0.449611330f,
+   -0.892533555f, -0.450980989f,
+   -0.891840709f, -0.452349587f,
+   -0.891145765f, -0.453717121f,
+   -0.890448723f, -0.455083587f,
+   -0.889749586f, -0.456448982f,
+   -0.889048356f, -0.457813304f,
+   -0.888345033f, -0.459176548f,
+   -0.887639620f, -0.460538711f,
+   -0.886932119f, -0.461899791f,
+   -0.886222530f, -0.463259784f,
+   -0.885510856f, -0.464618686f,
+   -0.884797098f, -0.465976496f,
+   -0.884081259f, -0.467333209f,
+   -0.883363339f, -0.468688822f,
+   -0.882643340f, -0.470043332f,
+   -0.881921264f, -0.471396737f,
+   -0.881197113f, -0.472749032f,
+   -0.880470889f, -0.474100215f,
+   -0.879742593f, -0.475450282f,
+   -0.879012226f, -0.476799230f,
+   -0.878279792f, -0.478147056f,
+   -0.877545290f, -0.479493758f,
+   -0.876808724f, -0.480839331f,
+   -0.876070094f, -0.482183772f,
+   -0.875329403f, -0.483527079f,
+   -0.874586652f, -0.484869248f,
+   -0.873841843f, -0.486210276f,
+   -0.873094978f, -0.487550160f,
+   -0.872346059f, -0.488888897f,
+   -0.871595087f, -0.490226483f,
+   -0.870842063f, -0.491562916f,
+   -0.870086991f, -0.492898192f,
+   -0.869329871f, -0.494232309f,
+   -0.868570706f, -0.495565262f,
+   -0.867809497f, -0.496897049f,
+   -0.867046246f, -0.498227667f,
+   -0.866280954f, -0.499557113f,
+   -0.865513624f, -0.500885383f,
+   -0.864744258f, -0.502212474f,
+   -0.863972856f, -0.503538384f,
+   -0.863199422f, -0.504863109f,
+   -0.862423956f, -0.506186645f,
+   -0.861646461f, -0.507508991f,
+   -0.860866939f, -0.508830143f,
+   -0.860085390f, -0.510150097f,
+   -0.859301818f, -0.511468850f,
+   -0.858516224f, -0.512786401f,
+   -0.857728610f, -0.514102744f,
+   -0.856938977f, -0.515417878f,
+   -0.856147328f, -0.516731799f,
+   -0.855353665f, -0.518044504f,
+   -0.854557988f, -0.519355990f,
+   -0.853760301f, -0.520666254f,
+   -0.852960605f, -0.521975293f,
+   -0.852158902f, -0.523283103f,
+   -0.851355193f, -0.524589683f,
+   -0.850549481f, -0.525895027f,
+   -0.849741768f, -0.527199135f,
+   -0.848932055f, -0.528502002f,
+   -0.848120345f, -0.529803625f,
+   -0.847306639f, -0.531104001f,
+   -0.846490939f, -0.532403128f,
+   -0.845673247f, -0.533701002f,
+   -0.844853565f, -0.534997620f,
+   -0.844031895f, -0.536292979f,
+   -0.843208240f, -0.537587076f,
+   -0.842382600f, -0.538879909f,
+   -0.841554977f, -0.540171473f,
+   -0.840725375f, -0.541461766f,
+   -0.839893794f, -0.542750785f,
+   -0.839060237f, -0.544038527f,
+   -0.838224706f, -0.545324988f,
+   -0.837387202f, -0.546610167f,
+   -0.836547727f, -0.547894059f,
+   -0.835706284f, -0.549176662f,
+   -0.834862875f, -0.550457973f,
+   -0.834017501f, -0.551737988f,
+   -0.833170165f, -0.553016706f,
+   -0.832320868f, -0.554294121f,
+   -0.831469612f, -0.555570233f,
+   -0.830616400f, -0.556845037f,
+   -0.829761234f, -0.558118531f,
+   -0.828904115f, -0.559390712f,
+   -0.828045045f, -0.560661576f,
+   -0.827184027f, -0.561931121f,
+   -0.826321063f, -0.563199344f,
+   -0.825456154f, -0.564466242f,
+   -0.824589303f, -0.565731811f,
+   -0.823720511f, -0.566996049f,
+   -0.822849781f, -0.568258953f,
+   -0.821977115f, -0.569520519f,
+   -0.821102515f, -0.570780746f,
+   -0.820225983f, -0.572039629f,
+   -0.819347520f, -0.573297167f,
+   -0.818467130f, -0.574553355f,
+   -0.817584813f, -0.575808191f,
+   -0.816700573f, -0.577061673f,
+   -0.815814411f, -0.578313796f,
+   -0.814926329f, -0.579564559f,
+   -0.814036330f, -0.580813958f,
+   -0.813144415f, -0.582061990f,
+   -0.812250587f, -0.583308653f,
+   -0.811354847f, -0.584553943f,
+   -0.810457198f, -0.585797857f,
+   -0.809557642f, -0.587040394f,
+   -0.808656182f, -0.588281548f,
+   -0.807752818f, -0.589521319f,
+   -0.806847554f, -0.590759702f,
+   -0.805940391f, -0.591996695f,
+   -0.805031331f, -0.593232295f,
+   -0.804120377f, -0.594466499f,
+   -0.803207531f, -0.595699304f,
+   -0.802292796f, -0.596930708f,
+   -0.801376172f, -0.598160707f,
+   -0.800457662f, -0.599389298f,
+   -0.799537269f, -0.600616479f,
+   -0.798614995f, -0.601842247f,
+   -0.797690841f, -0.603066599f,
+   -0.796764810f, -0.604289531f,
+   -0.795836905f, -0.605511041f,
+   -0.794907126f, -0.606731127f,
+   -0.793975478f, -0.607949785f,
+   -0.793041960f, -0.609167012f,
+   -0.792106577f, -0.610382806f,
+   -0.791169330f, -0.611597164f,
+   -0.790230221f, -0.612810082f,
+   -0.789289253f, -0.614021559f,
+   -0.788346428f, -0.615231591f,
+   -0.787401747f, -0.616440175f,
+   -0.786455214f, -0.617647308f,
+   -0.785506830f, -0.618852988f,
+   -0.784556597f, -0.620057212f,
+   -0.783604519f, -0.621259977f,
+   -0.782650596f, -0.622461279f,
+   -0.781694832f, -0.623661118f,
+   -0.780737229f, -0.624859488f,
+   -0.779777788f, -0.626056388f,
+   -0.778816512f, -0.627251815f,
+   -0.777853404f, -0.628445767f,
+   -0.776888466f, -0.629638239f,
+   -0.775921699f, -0.630829230f,
+   -0.774953107f, -0.632018736f,
+   -0.773982691f, -0.633206755f,
+   -0.773010453f, -0.634393284f,
+   -0.772036397f, -0.635578320f,
+   -0.771060524f, -0.636761861f,
+   -0.770082837f, -0.637943904f,
+   -0.769103338f, -0.639124445f,
+   -0.768122029f, -0.640303482f,
+   -0.767138912f, -0.641481013f,
+   -0.766153990f, -0.642657034f,
+   -0.765167266f, -0.643831543f,
+   -0.764178741f, -0.645004537f,
+   -0.763188417f, -0.646176013f,
+   -0.762196298f, -0.647345969f,
+   -0.761202385f, -0.648514401f,
+   -0.760206682f, -0.649681307f,
+   -0.759209189f, -0.650846685f,
+   -0.758209910f, -0.652010531f,
+   -0.757208847f, -0.653172843f,
+   -0.756206001f, -0.654333618f,
+   -0.755201377f, -0.655492853f,
+   -0.754194975f, -0.656650546f,
+   -0.753186799f, -0.657806693f,
+   -0.752176850f, -0.658961293f,
+   -0.751165132f, -0.660114342f,
+   -0.750151646f, -0.661265838f,
+   -0.749136395f, -0.662415778f,
+   -0.748119380f, -0.663564159f,
+   -0.747100606f, -0.664710978f,
+   -0.746080074f, -0.665856234f,
+   -0.745057785f, -0.666999922f,
+   -0.744033744f, -0.668142041f,
+   -0.743007952f, -0.669282588f,
+   -0.741980412f, -0.670421560f,
+   -0.740951125f, -0.671558955f,
+   -0.739920095f, -0.672694769f,
+   -0.738887324f, -0.673829000f,
+   -0.737852815f, -0.674961646f,
+   -0.736816569f, -0.676092704f,
+   -0.735778589f, -0.677222170f,
+   -0.734738878f, -0.678350043f,
+   -0.733697438f, -0.679476320f,
+   -0.732654272f, -0.680600998f,
+   -0.731609381f, -0.681724074f,
+   -0.730562769f, -0.682845546f,
+   -0.729514438f, -0.683965412f,
+   -0.728464390f, -0.685083668f,
+   -0.727412629f, -0.686200312f,
+   -0.726359155f, -0.687315341f,
+   -0.725303972f, -0.688428753f,
+   -0.724247083f, -0.689540545f,
+   -0.723188489f, -0.690650714f,
+   -0.722128194f, -0.691759258f,
+   -0.721066199f, -0.692866175f,
+   -0.720002508f, -0.693971461f,
+   -0.718937122f, -0.695075114f,
+   -0.717870045f, -0.696177131f,
+   -0.716801279f, -0.697277511f,
+   -0.715730825f, -0.698376249f,
+   -0.714658688f, -0.699473345f,
+   -0.713584869f, -0.700568794f,
+   -0.712509371f, -0.701662595f,
+   -0.711432196f, -0.702754744f,
+   -0.710353347f, -0.703845241f,
+   -0.709272826f, -0.704934080f,
+   -0.708190637f, -0.706021261f,
+   -0.707106781f, -0.707106781f,
+   -0.706021261f, -0.708190637f,
+   -0.704934080f, -0.709272826f,
+   -0.703845241f, -0.710353347f,
+   -0.702754744f, -0.711432196f,
+   -0.701662595f, -0.712509371f,
+   -0.700568794f, -0.713584869f,
+   -0.699473345f, -0.714658688f,
+   -0.698376249f, -0.715730825f,
+   -0.697277511f, -0.716801279f,
+   -0.696177131f, -0.717870045f,
+   -0.695075114f, -0.718937122f,
+   -0.693971461f, -0.720002508f,
+   -0.692866175f, -0.721066199f,
+   -0.691759258f, -0.722128194f,
+   -0.690650714f, -0.723188489f,
+   -0.689540545f, -0.724247083f,
+   -0.688428753f, -0.725303972f,
+   -0.687315341f, -0.726359155f,
+   -0.686200312f, -0.727412629f,
+   -0.685083668f, -0.728464390f,
+   -0.683965412f, -0.729514438f,
+   -0.682845546f, -0.730562769f,
+   -0.681724074f, -0.731609381f,
+   -0.680600998f, -0.732654272f,
+   -0.679476320f, -0.733697438f,
+   -0.678350043f, -0.734738878f,
+   -0.677222170f, -0.735778589f,
+   -0.676092704f, -0.736816569f,
+   -0.674961646f, -0.737852815f,
+   -0.673829000f, -0.738887324f,
+   -0.672694769f, -0.739920095f,
+   -0.671558955f, -0.740951125f,
+   -0.670421560f, -0.741980412f,
+   -0.669282588f, -0.743007952f,
+   -0.668142041f, -0.744033744f,
+   -0.666999922f, -0.745057785f,
+   -0.665856234f, -0.746080074f,
+   -0.664710978f, -0.747100606f,
+   -0.663564159f, -0.748119380f,
+   -0.662415778f, -0.749136395f,
+   -0.661265838f, -0.750151646f,
+   -0.660114342f, -0.751165132f,
+   -0.658961293f, -0.752176850f,
+   -0.657806693f, -0.753186799f,
+   -0.656650546f, -0.754194975f,
+   -0.655492853f, -0.755201377f,
+   -0.654333618f, -0.756206001f,
+   -0.653172843f, -0.757208847f,
+   -0.652010531f, -0.758209910f,
+   -0.650846685f, -0.759209189f,
+   -0.649681307f, -0.760206682f,
+   -0.648514401f, -0.761202385f,
+   -0.647345969f, -0.762196298f,
+   -0.646176013f, -0.763188417f,
+   -0.645004537f, -0.764178741f,
+   -0.643831543f, -0.765167266f,
+   -0.642657034f, -0.766153990f,
+   -0.641481013f, -0.767138912f,
+   -0.640303482f, -0.768122029f,
+   -0.639124445f, -0.769103338f,
+   -0.637943904f, -0.770082837f,
+   -0.636761861f, -0.771060524f,
+   -0.635578320f, -0.772036397f,
+   -0.634393284f, -0.773010453f,
+   -0.633206755f, -0.773982691f,
+   -0.632018736f, -0.774953107f,
+   -0.630829230f, -0.775921699f,
+   -0.629638239f, -0.776888466f,
+   -0.628445767f, -0.777853404f,
+   -0.627251815f, -0.778816512f,
+   -0.626056388f, -0.779777788f,
+   -0.624859488f, -0.780737229f,
+   -0.623661118f, -0.781694832f,
+   -0.622461279f, -0.782650596f,
+   -0.621259977f, -0.783604519f,
+   -0.620057212f, -0.784556597f,
+   -0.618852988f, -0.785506830f,
+   -0.617647308f, -0.786455214f,
+   -0.616440175f, -0.787401747f,
+   -0.615231591f, -0.788346428f,
+   -0.614021559f, -0.789289253f,
+   -0.612810082f, -0.790230221f,
+   -0.611597164f, -0.791169330f,
+   -0.610382806f, -0.792106577f,
+   -0.609167012f, -0.793041960f,
+   -0.607949785f, -0.793975478f,
+   -0.606731127f, -0.794907126f,
+   -0.605511041f, -0.795836905f,
+   -0.604289531f, -0.796764810f,
+   -0.603066599f, -0.797690841f,
+   -0.601842247f, -0.798614995f,
+   -0.600616479f, -0.799537269f,
+   -0.599389298f, -0.800457662f,
+   -0.598160707f, -0.801376172f,
+   -0.596930708f, -0.802292796f,
+   -0.595699304f, -0.803207531f,
+   -0.594466499f, -0.804120377f,
+   -0.593232295f, -0.805031331f,
+   -0.591996695f, -0.805940391f,
+   -0.590759702f, -0.806847554f,
+   -0.589521319f, -0.807752818f,
+   -0.588281548f, -0.808656182f,
+   -0.587040394f, -0.809557642f,
+   -0.585797857f, -0.810457198f,
+   -0.584553943f, -0.811354847f,
+   -0.583308653f, -0.812250587f,
+   -0.582061990f, -0.813144415f,
+   -0.580813958f, -0.814036330f,
+   -0.579564559f, -0.814926329f,
+   -0.578313796f, -0.815814411f,
+   -0.577061673f, -0.816700573f,
+   -0.575808191f, -0.817584813f,
+   -0.574553355f, -0.818467130f,
+   -0.573297167f, -0.819347520f,
+   -0.572039629f, -0.820225983f,
+   -0.570780746f, -0.821102515f,
+   -0.569520519f, -0.821977115f,
+   -0.568258953f, -0.822849781f,
+   -0.566996049f, -0.823720511f,
+   -0.565731811f, -0.824589303f,
+   -0.564466242f, -0.825456154f,
+   -0.563199344f, -0.826321063f,
+   -0.561931121f, -0.827184027f,
+   -0.560661576f, -0.828045045f,
+   -0.559390712f, -0.828904115f,
+   -0.558118531f, -0.829761234f,
+   -0.556845037f, -0.830616400f,
+   -0.555570233f, -0.831469612f,
+   -0.554294121f, -0.832320868f,
+   -0.553016706f, -0.833170165f,
+   -0.551737988f, -0.834017501f,
+   -0.550457973f, -0.834862875f,
+   -0.549176662f, -0.835706284f,
+   -0.547894059f, -0.836547727f,
+   -0.546610167f, -0.837387202f,
+   -0.545324988f, -0.838224706f,
+   -0.544038527f, -0.839060237f,
+   -0.542750785f, -0.839893794f,
+   -0.541461766f, -0.840725375f,
+   -0.540171473f, -0.841554977f,
+   -0.538879909f, -0.842382600f,
+   -0.537587076f, -0.843208240f,
+   -0.536292979f, -0.844031895f,
+   -0.534997620f, -0.844853565f,
+   -0.533701002f, -0.845673247f,
+   -0.532403128f, -0.846490939f,
+   -0.531104001f, -0.847306639f,
+   -0.529803625f, -0.848120345f,
+   -0.528502002f, -0.848932055f,
+   -0.527199135f, -0.849741768f,
+   -0.525895027f, -0.850549481f,
+   -0.524589683f, -0.851355193f,
+   -0.523283103f, -0.852158902f,
+   -0.521975293f, -0.852960605f,
+   -0.520666254f, -0.853760301f,
+   -0.519355990f, -0.854557988f,
+   -0.518044504f, -0.855353665f,
+   -0.516731799f, -0.856147328f,
+   -0.515417878f, -0.856938977f,
+   -0.514102744f, -0.857728610f,
+   -0.512786401f, -0.858516224f,
+   -0.511468850f, -0.859301818f,
+   -0.510150097f, -0.860085390f,
+   -0.508830143f, -0.860866939f,
+   -0.507508991f, -0.861646461f,
+   -0.506186645f, -0.862423956f,
+   -0.504863109f, -0.863199422f,
+   -0.503538384f, -0.863972856f,
+   -0.502212474f, -0.864744258f,
+   -0.500885383f, -0.865513624f,
+   -0.499557113f, -0.866280954f,
+   -0.498227667f, -0.867046246f,
+   -0.496897049f, -0.867809497f,
+   -0.495565262f, -0.868570706f,
+   -0.494232309f, -0.869329871f,
+   -0.492898192f, -0.870086991f,
+   -0.491562916f, -0.870842063f,
+   -0.490226483f, -0.871595087f,
+   -0.488888897f, -0.872346059f,
+   -0.487550160f, -0.873094978f,
+   -0.486210276f, -0.873841843f,
+   -0.484869248f, -0.874586652f,
+   -0.483527079f, -0.875329403f,
+   -0.482183772f, -0.876070094f,
+   -0.480839331f, -0.876808724f,
+   -0.479493758f, -0.877545290f,
+   -0.478147056f, -0.878279792f,
+   -0.476799230f, -0.879012226f,
+   -0.475450282f, -0.879742593f,
+   -0.474100215f, -0.880470889f,
+   -0.472749032f, -0.881197113f,
+   -0.471396737f, -0.881921264f,
+   -0.470043332f, -0.882643340f,
+   -0.468688822f, -0.883363339f,
+   -0.467333209f, -0.884081259f,
+   -0.465976496f, -0.884797098f,
+   -0.464618686f, -0.885510856f,
+   -0.463259784f, -0.886222530f,
+   -0.461899791f, -0.886932119f,
+   -0.460538711f, -0.887639620f,
+   -0.459176548f, -0.888345033f,
+   -0.457813304f, -0.889048356f,
+   -0.456448982f, -0.889749586f,
+   -0.455083587f, -0.890448723f,
+   -0.453717121f, -0.891145765f,
+   -0.452349587f, -0.891840709f,
+   -0.450980989f, -0.892533555f,
+   -0.449611330f, -0.893224301f,
+   -0.448240612f, -0.893912945f,
+   -0.446868840f, -0.894599486f,
+   -0.445496017f, -0.895283921f,
+   -0.444122145f, -0.895966250f,
+   -0.442747228f, -0.896646470f,
+   -0.441371269f, -0.897324581f,
+   -0.439994271f, -0.898000580f,
+   -0.438616239f, -0.898674466f,
+   -0.437237174f, -0.899346237f,
+   -0.435857080f, -0.900015892f,
+   -0.434475961f, -0.900683429f,
+   -0.433093819f, -0.901348847f,
+   -0.431710658f, -0.902012144f,
+   -0.430326481f, -0.902673318f,
+   -0.428941292f, -0.903332368f,
+   -0.427555093f, -0.903989293f,
+   -0.426167889f, -0.904644091f,
+   -0.424779681f, -0.905296759f,
+   -0.423390474f, -0.905947298f,
+   -0.422000271f, -0.906595705f,
+   -0.420609074f, -0.907241978f,
+   -0.419216888f, -0.907886116f,
+   -0.417823716f, -0.908528119f,
+   -0.416429560f, -0.909167983f,
+   -0.415034424f, -0.909805708f,
+   -0.413638312f, -0.910441292f,
+   -0.412241227f, -0.911074734f,
+   -0.410843171f, -0.911706032f,
+   -0.409444149f, -0.912335185f,
+   -0.408044163f, -0.912962190f,
+   -0.406643217f, -0.913587048f,
+   -0.405241314f, -0.914209756f,
+   -0.403838458f, -0.914830312f,
+   -0.402434651f, -0.915448716f,
+   -0.401029897f, -0.916064966f,
+   -0.399624200f, -0.916679060f,
+   -0.398217562f, -0.917290997f,
+   -0.396809987f, -0.917900776f,
+   -0.395401479f, -0.918508394f,
+   -0.393992040f, -0.919113852f,
+   -0.392581674f, -0.919717146f,
+   -0.391170384f, -0.920318277f,
+   -0.389758174f, -0.920917242f,
+   -0.388345047f, -0.921514039f,
+   -0.386931006f, -0.922108669f,
+   -0.385516054f, -0.922701128f,
+   -0.384100195f, -0.923291417f,
+   -0.382683432f, -0.923879533f,
+   -0.381265769f, -0.924465474f,
+   -0.379847209f, -0.925049241f,
+   -0.378427755f, -0.925630831f,
+   -0.377007410f, -0.926210242f,
+   -0.375586178f, -0.926787474f,
+   -0.374164063f, -0.927362526f,
+   -0.372741067f, -0.927935395f,
+   -0.371317194f, -0.928506080f,
+   -0.369892447f, -0.929074581f,
+   -0.368466830f, -0.929640896f,
+   -0.367040346f, -0.930205023f,
+   -0.365612998f, -0.930766961f,
+   -0.364184790f, -0.931326709f,
+   -0.362755724f, -0.931884266f,
+   -0.361325806f, -0.932439629f,
+   -0.359895037f, -0.932992799f,
+   -0.358463421f, -0.933543773f,
+   -0.357030961f, -0.934092550f,
+   -0.355597662f, -0.934639130f,
+   -0.354163525f, -0.935183510f,
+   -0.352728556f, -0.935725689f,
+   -0.351292756f, -0.936265667f,
+   -0.349856130f, -0.936803442f,
+   -0.348418680f, -0.937339012f,
+   -0.346980411f, -0.937872376f,
+   -0.345541325f, -0.938403534f,
+   -0.344101426f, -0.938932484f,
+   -0.342660717f, -0.939459224f,
+   -0.341219202f, -0.939983753f,
+   -0.339776884f, -0.940506071f,
+   -0.338333767f, -0.941026175f,
+   -0.336889853f, -0.941544065f,
+   -0.335445147f, -0.942059740f,
+   -0.333999651f, -0.942573198f,
+   -0.332553370f, -0.943084437f,
+   -0.331106306f, -0.943593458f,
+   -0.329658463f, -0.944100258f,
+   -0.328209844f, -0.944604837f,
+   -0.326760452f, -0.945107193f,
+   -0.325310292f, -0.945607325f,
+   -0.323859367f, -0.946105232f,
+   -0.322407679f, -0.946600913f,
+   -0.320955232f, -0.947094366f,
+   -0.319502031f, -0.947585591f,
+   -0.318048077f, -0.948074586f,
+   -0.316593376f, -0.948561350f,
+   -0.315137929f, -0.949045882f,
+   -0.313681740f, -0.949528181f,
+   -0.312224814f, -0.950008245f,
+   -0.310767153f, -0.950486074f,
+   -0.309308760f, -0.950961666f,
+   -0.307849640f, -0.951435021f,
+   -0.306389795f, -0.951906137f,
+   -0.304929230f, -0.952375013f,
+   -0.303467947f, -0.952841648f,
+   -0.302005949f, -0.953306040f,
+   -0.300543241f, -0.953768190f,
+   -0.299079826f, -0.954228095f,
+   -0.297615707f, -0.954685755f,
+   -0.296150888f, -0.955141168f,
+   -0.294685372f, -0.955594334f,
+   -0.293219163f, -0.956045251f,
+   -0.291752263f, -0.956493919f,
+   -0.290284677f, -0.956940336f,
+   -0.288816408f, -0.957384501f,
+   -0.287347460f, -0.957826413f,
+   -0.285877835f, -0.958266071f,
+   -0.284407537f, -0.958703475f,
+   -0.282936570f, -0.959138622f,
+   -0.281464938f, -0.959571513f,
+   -0.279992643f, -0.960002146f,
+   -0.278519689f, -0.960430519f,
+   -0.277046080f, -0.960856633f,
+   -0.275571819f, -0.961280486f,
+   -0.274096910f, -0.961702077f,
+   -0.272621355f, -0.962121404f,
+   -0.271145160f, -0.962538468f,
+   -0.269668326f, -0.962953267f,
+   -0.268190857f, -0.963365800f,
+   -0.266712757f, -0.963776066f,
+   -0.265234030f, -0.964184064f,
+   -0.263754679f, -0.964589793f,
+   -0.262274707f, -0.964993253f,
+   -0.260794118f, -0.965394442f,
+   -0.259312915f, -0.965793359f,
+   -0.257831102f, -0.966190003f,
+   -0.256348682f, -0.966584374f,
+   -0.254865660f, -0.966976471f,
+   -0.253382037f, -0.967366292f,
+   -0.251897818f, -0.967753837f,
+   -0.250413007f, -0.968139105f,
+   -0.248927606f, -0.968522094f,
+   -0.247441619f, -0.968902805f,
+   -0.245955050f, -0.969281235f,
+   -0.244467903f, -0.969657385f,
+   -0.242980180f, -0.970031253f,
+   -0.241491885f, -0.970402839f,
+   -0.240003022f, -0.970772141f,
+   -0.238513595f, -0.971139158f,
+   -0.237023606f, -0.971503891f,
+   -0.235533059f, -0.971866337f,
+   -0.234041959f, -0.972226497f,
+   -0.232550307f, -0.972584369f,
+   -0.231058108f, -0.972939952f,
+   -0.229565366f, -0.973293246f,
+   -0.228072083f, -0.973644250f,
+   -0.226578264f, -0.973992962f,
+   -0.225083911f, -0.974339383f,
+   -0.223589029f, -0.974683511f,
+   -0.222093621f, -0.975025345f,
+   -0.220597690f, -0.975364885f,
+   -0.219101240f, -0.975702130f,
+   -0.217604275f, -0.976037079f,
+   -0.216106797f, -0.976369731f,
+   -0.214608811f, -0.976700086f,
+   -0.213110320f, -0.977028143f,
+   -0.211611327f, -0.977353900f,
+   -0.210111837f, -0.977677358f,
+   -0.208611852f, -0.977998515f,
+   -0.207111376f, -0.978317371f,
+   -0.205610413f, -0.978633924f,
+   -0.204108966f, -0.978948175f,
+   -0.202607039f, -0.979260123f,
+   -0.201104635f, -0.979569766f,
+   -0.199601758f, -0.979877104f,
+   -0.198098411f, -0.980182136f,
+   -0.196594598f, -0.980484862f,
+   -0.195090322f, -0.980785280f,
+   -0.193585587f, -0.981083391f,
+   -0.192080397f, -0.981379193f,
+   -0.190574755f, -0.981672686f,
+   -0.189068664f, -0.981963869f,
+   -0.187562129f, -0.982252741f,
+   -0.186055152f, -0.982539302f,
+   -0.184547737f, -0.982823551f,
+   -0.183039888f, -0.983105487f,
+   -0.181531608f, -0.983385110f,
+   -0.180022901f, -0.983662419f,
+   -0.178513771f, -0.983937413f,
+   -0.177004220f, -0.984210092f,
+   -0.175494253f, -0.984480455f,
+   -0.173983873f, -0.984748502f,
+   -0.172473084f, -0.985014231f,
+   -0.170961889f, -0.985277642f,
+   -0.169450291f, -0.985538735f,
+   -0.167938295f, -0.985797509f,
+   -0.166425904f, -0.986053963f,
+   -0.164913120f, -0.986308097f,
+   -0.163399949f, -0.986559910f,
+   -0.161886394f, -0.986809402f,
+   -0.160372457f, -0.987056571f,
+   -0.158858143f, -0.987301418f,
+   -0.157343456f, -0.987543942f,
+   -0.155828398f, -0.987784142f,
+   -0.154312973f, -0.988022017f,
+   -0.152797185f, -0.988257568f,
+   -0.151281038f, -0.988490793f,
+   -0.149764535f, -0.988721692f,
+   -0.148247679f, -0.988950265f,
+   -0.146730474f, -0.989176510f,
+   -0.145212925f, -0.989400428f,
+   -0.143695033f, -0.989622017f,
+   -0.142176804f, -0.989841278f,
+   -0.140658239f, -0.990058210f,
+   -0.139139344f, -0.990272812f,
+   -0.137620122f, -0.990485084f,
+   -0.136100575f, -0.990695025f,
+   -0.134580709f, -0.990902635f,
+   -0.133060525f, -0.991107914f,
+   -0.131540029f, -0.991310860f,
+   -0.130019223f, -0.991511473f,
+   -0.128498111f, -0.991709754f,
+   -0.126976696f, -0.991905700f,
+   -0.125454983f, -0.992099313f,
+   -0.123932975f, -0.992290591f,
+   -0.122410675f, -0.992479535f,
+   -0.120888087f, -0.992666142f,
+   -0.119365215f, -0.992850414f,
+   -0.117842062f, -0.993032350f,
+   -0.116318631f, -0.993211949f,
+   -0.114794927f, -0.993389211f,
+   -0.113270952f, -0.993564136f,
+   -0.111746711f, -0.993736722f,
+   -0.110222207f, -0.993906970f,
+   -0.108697444f, -0.994074879f,
+   -0.107172425f, -0.994240449f,
+   -0.105647154f, -0.994403680f,
+   -0.104121634f, -0.994564571f,
+   -0.102595869f, -0.994723121f,
+   -0.101069863f, -0.994879331f,
+   -0.099543619f, -0.995033199f,
+   -0.098017140f, -0.995184727f,
+   -0.096490431f, -0.995333912f,
+   -0.094963495f, -0.995480755f,
+   -0.093436336f, -0.995625256f,
+   -0.091908956f, -0.995767414f,
+   -0.090381361f, -0.995907229f,
+   -0.088853553f, -0.996044701f,
+   -0.087325535f, -0.996179829f,
+   -0.085797312f, -0.996312612f,
+   -0.084268888f, -0.996443051f,
+   -0.082740265f, -0.996571146f,
+   -0.081211447f, -0.996696895f,
+   -0.079682438f, -0.996820299f,
+   -0.078153242f, -0.996941358f,
+   -0.076623861f, -0.997060070f,
+   -0.075094301f, -0.997176437f,
+   -0.073564564f, -0.997290457f,
+   -0.072034653f, -0.997402130f,
+   -0.070504573f, -0.997511456f,
+   -0.068974328f, -0.997618435f,
+   -0.067443920f, -0.997723067f,
+   -0.065913353f, -0.997825350f,
+   -0.064382631f, -0.997925286f,
+   -0.062851758f, -0.998022874f,
+   -0.061320736f, -0.998118113f,
+   -0.059789571f, -0.998211003f,
+   -0.058258265f, -0.998301545f,
+   -0.056726821f, -0.998389737f,
+   -0.055195244f, -0.998475581f,
+   -0.053663538f, -0.998559074f,
+   -0.052131705f, -0.998640218f,
+   -0.050599749f, -0.998719012f,
+   -0.049067674f, -0.998795456f,
+   -0.047535484f, -0.998869550f,
+   -0.046003182f, -0.998941293f,
+   -0.044470772f, -0.999010686f,
+   -0.042938257f, -0.999077728f,
+   -0.041405641f, -0.999142419f,
+   -0.039872928f, -0.999204759f,
+   -0.038340120f, -0.999264747f,
+   -0.036807223f, -0.999322385f,
+   -0.035274239f, -0.999377670f,
+   -0.033741172f, -0.999430605f,
+   -0.032208025f, -0.999481187f,
+   -0.030674803f, -0.999529418f,
+   -0.029141509f, -0.999575296f,
+   -0.027608146f, -0.999618822f,
+   -0.026074718f, -0.999659997f,
+   -0.024541229f, -0.999698819f,
+   -0.023007681f, -0.999735288f,
+   -0.021474080f, -0.999769405f,
+   -0.019940429f, -0.999801170f,
+   -0.018406730f, -0.999830582f,
+   -0.016872988f, -0.999857641f,
+   -0.015339206f, -0.999882347f,
+   -0.013805389f, -0.999904701f,
+   -0.012271538f, -0.999924702f,
+   -0.010737659f, -0.999942350f,
+   -0.009203755f, -0.999957645f,
+   -0.007669829f, -0.999970586f,
+   -0.006135885f, -0.999981175f,
+   -0.004601926f, -0.999989411f,
+   -0.003067957f, -0.999995294f,
+   -0.001533980f, -0.999998823f,
+   -0.000000000f, -1.000000000f,
+    0.001533980f, -0.999998823f,
+    0.003067957f, -0.999995294f,
+    0.004601926f, -0.999989411f,
+    0.006135885f, -0.999981175f,
+    0.007669829f, -0.999970586f,
+    0.009203755f, -0.999957645f,
+    0.010737659f, -0.999942350f,
+    0.012271538f, -0.999924702f,
+    0.013805389f, -0.999904701f,
+    0.015339206f, -0.999882347f,
+    0.016872988f, -0.999857641f,
+    0.018406730f, -0.999830582f,
+    0.019940429f, -0.999801170f,
+    0.021474080f, -0.999769405f,
+    0.023007681f, -0.999735288f,
+    0.024541229f, -0.999698819f,
+    0.026074718f, -0.999659997f,
+    0.027608146f, -0.999618822f,
+    0.029141509f, -0.999575296f,
+    0.030674803f, -0.999529418f,
+    0.032208025f, -0.999481187f,
+    0.033741172f, -0.999430605f,
+    0.035274239f, -0.999377670f,
+    0.036807223f, -0.999322385f,
+    0.038340120f, -0.999264747f,
+    0.039872928f, -0.999204759f,
+    0.041405641f, -0.999142419f,
+    0.042938257f, -0.999077728f,
+    0.044470772f, -0.999010686f,
+    0.046003182f, -0.998941293f,
+    0.047535484f, -0.998869550f,
+    0.049067674f, -0.998795456f,
+    0.050599749f, -0.998719012f,
+    0.052131705f, -0.998640218f,
+    0.053663538f, -0.998559074f,
+    0.055195244f, -0.998475581f,
+    0.056726821f, -0.998389737f,
+    0.058258265f, -0.998301545f,
+    0.059789571f, -0.998211003f,
+    0.061320736f, -0.998118113f,
+    0.062851758f, -0.998022874f,
+    0.064382631f, -0.997925286f,
+    0.065913353f, -0.997825350f,
+    0.067443920f, -0.997723067f,
+    0.068974328f, -0.997618435f,
+    0.070504573f, -0.997511456f,
+    0.072034653f, -0.997402130f,
+    0.073564564f, -0.997290457f,
+    0.075094301f, -0.997176437f,
+    0.076623861f, -0.997060070f,
+    0.078153242f, -0.996941358f,
+    0.079682438f, -0.996820299f,
+    0.081211447f, -0.996696895f,
+    0.082740265f, -0.996571146f,
+    0.084268888f, -0.996443051f,
+    0.085797312f, -0.996312612f,
+    0.087325535f, -0.996179829f,
+    0.088853553f, -0.996044701f,
+    0.090381361f, -0.995907229f,
+    0.091908956f, -0.995767414f,
+    0.093436336f, -0.995625256f,
+    0.094963495f, -0.995480755f,
+    0.096490431f, -0.995333912f,
+    0.098017140f, -0.995184727f,
+    0.099543619f, -0.995033199f,
+    0.101069863f, -0.994879331f,
+    0.102595869f, -0.994723121f,
+    0.104121634f, -0.994564571f,
+    0.105647154f, -0.994403680f,
+    0.107172425f, -0.994240449f,
+    0.108697444f, -0.994074879f,
+    0.110222207f, -0.993906970f,
+    0.111746711f, -0.993736722f,
+    0.113270952f, -0.993564136f,
+    0.114794927f, -0.993389211f,
+    0.116318631f, -0.993211949f,
+    0.117842062f, -0.993032350f,
+    0.119365215f, -0.992850414f,
+    0.120888087f, -0.992666142f,
+    0.122410675f, -0.992479535f,
+    0.123932975f, -0.992290591f,
+    0.125454983f, -0.992099313f,
+    0.126976696f, -0.991905700f,
+    0.128498111f, -0.991709754f,
+    0.130019223f, -0.991511473f,
+    0.131540029f, -0.991310860f,
+    0.133060525f, -0.991107914f,
+    0.134580709f, -0.990902635f,
+    0.136100575f, -0.990695025f,
+    0.137620122f, -0.990485084f,
+    0.139139344f, -0.990272812f,
+    0.140658239f, -0.990058210f,
+    0.142176804f, -0.989841278f,
+    0.143695033f, -0.989622017f,
+    0.145212925f, -0.989400428f,
+    0.146730474f, -0.989176510f,
+    0.148247679f, -0.988950265f,
+    0.149764535f, -0.988721692f,
+    0.151281038f, -0.988490793f,
+    0.152797185f, -0.988257568f,
+    0.154312973f, -0.988022017f,
+    0.155828398f, -0.987784142f,
+    0.157343456f, -0.987543942f,
+    0.158858143f, -0.987301418f,
+    0.160372457f, -0.987056571f,
+    0.161886394f, -0.986809402f,
+    0.163399949f, -0.986559910f,
+    0.164913120f, -0.986308097f,
+    0.166425904f, -0.986053963f,
+    0.167938295f, -0.985797509f,
+    0.169450291f, -0.985538735f,
+    0.170961889f, -0.985277642f,
+    0.172473084f, -0.985014231f,
+    0.173983873f, -0.984748502f,
+    0.175494253f, -0.984480455f,
+    0.177004220f, -0.984210092f,
+    0.178513771f, -0.983937413f,
+    0.180022901f, -0.983662419f,
+    0.181531608f, -0.983385110f,
+    0.183039888f, -0.983105487f,
+    0.184547737f, -0.982823551f,
+    0.186055152f, -0.982539302f,
+    0.187562129f, -0.982252741f,
+    0.189068664f, -0.981963869f,
+    0.190574755f, -0.981672686f,
+    0.192080397f, -0.981379193f,
+    0.193585587f, -0.981083391f,
+    0.195090322f, -0.980785280f,
+    0.196594598f, -0.980484862f,
+    0.198098411f, -0.980182136f,
+    0.199601758f, -0.979877104f,
+    0.201104635f, -0.979569766f,
+    0.202607039f, -0.979260123f,
+    0.204108966f, -0.978948175f,
+    0.205610413f, -0.978633924f,
+    0.207111376f, -0.978317371f,
+    0.208611852f, -0.977998515f,
+    0.210111837f, -0.977677358f,
+    0.211611327f, -0.977353900f,
+    0.213110320f, -0.977028143f,
+    0.214608811f, -0.976700086f,
+    0.216106797f, -0.976369731f,
+    0.217604275f, -0.976037079f,
+    0.219101240f, -0.975702130f,
+    0.220597690f, -0.975364885f,
+    0.222093621f, -0.975025345f,
+    0.223589029f, -0.974683511f,
+    0.225083911f, -0.974339383f,
+    0.226578264f, -0.973992962f,
+    0.228072083f, -0.973644250f,
+    0.229565366f, -0.973293246f,
+    0.231058108f, -0.972939952f,
+    0.232550307f, -0.972584369f,
+    0.234041959f, -0.972226497f,
+    0.235533059f, -0.971866337f,
+    0.237023606f, -0.971503891f,
+    0.238513595f, -0.971139158f,
+    0.240003022f, -0.970772141f,
+    0.241491885f, -0.970402839f,
+    0.242980180f, -0.970031253f,
+    0.244467903f, -0.969657385f,
+    0.245955050f, -0.969281235f,
+    0.247441619f, -0.968902805f,
+    0.248927606f, -0.968522094f,
+    0.250413007f, -0.968139105f,
+    0.251897818f, -0.967753837f,
+    0.253382037f, -0.967366292f,
+    0.254865660f, -0.966976471f,
+    0.256348682f, -0.966584374f,
+    0.257831102f, -0.966190003f,
+    0.259312915f, -0.965793359f,
+    0.260794118f, -0.965394442f,
+    0.262274707f, -0.964993253f,
+    0.263754679f, -0.964589793f,
+    0.265234030f, -0.964184064f,
+    0.266712757f, -0.963776066f,
+    0.268190857f, -0.963365800f,
+    0.269668326f, -0.962953267f,
+    0.271145160f, -0.962538468f,
+    0.272621355f, -0.962121404f,
+    0.274096910f, -0.961702077f,
+    0.275571819f, -0.961280486f,
+    0.277046080f, -0.960856633f,
+    0.278519689f, -0.960430519f,
+    0.279992643f, -0.960002146f,
+    0.281464938f, -0.959571513f,
+    0.282936570f, -0.959138622f,
+    0.284407537f, -0.958703475f,
+    0.285877835f, -0.958266071f,
+    0.287347460f, -0.957826413f,
+    0.288816408f, -0.957384501f,
+    0.290284677f, -0.956940336f,
+    0.291752263f, -0.956493919f,
+    0.293219163f, -0.956045251f,
+    0.294685372f, -0.955594334f,
+    0.296150888f, -0.955141168f,
+    0.297615707f, -0.954685755f,
+    0.299079826f, -0.954228095f,
+    0.300543241f, -0.953768190f,
+    0.302005949f, -0.953306040f,
+    0.303467947f, -0.952841648f,
+    0.304929230f, -0.952375013f,
+    0.306389795f, -0.951906137f,
+    0.307849640f, -0.951435021f,
+    0.309308760f, -0.950961666f,
+    0.310767153f, -0.950486074f,
+    0.312224814f, -0.950008245f,
+    0.313681740f, -0.949528181f,
+    0.315137929f, -0.949045882f,
+    0.316593376f, -0.948561350f,
+    0.318048077f, -0.948074586f,
+    0.319502031f, -0.947585591f,
+    0.320955232f, -0.947094366f,
+    0.322407679f, -0.946600913f,
+    0.323859367f, -0.946105232f,
+    0.325310292f, -0.945607325f,
+    0.326760452f, -0.945107193f,
+    0.328209844f, -0.944604837f,
+    0.329658463f, -0.944100258f,
+    0.331106306f, -0.943593458f,
+    0.332553370f, -0.943084437f,
+    0.333999651f, -0.942573198f,
+    0.335445147f, -0.942059740f,
+    0.336889853f, -0.941544065f,
+    0.338333767f, -0.941026175f,
+    0.339776884f, -0.940506071f,
+    0.341219202f, -0.939983753f,
+    0.342660717f, -0.939459224f,
+    0.344101426f, -0.938932484f,
+    0.345541325f, -0.938403534f,
+    0.346980411f, -0.937872376f,
+    0.348418680f, -0.937339012f,
+    0.349856130f, -0.936803442f,
+    0.351292756f, -0.936265667f,
+    0.352728556f, -0.935725689f,
+    0.354163525f, -0.935183510f,
+    0.355597662f, -0.934639130f,
+    0.357030961f, -0.934092550f,
+    0.358463421f, -0.933543773f,
+    0.359895037f, -0.932992799f,
+    0.361325806f, -0.932439629f,
+    0.362755724f, -0.931884266f,
+    0.364184790f, -0.931326709f,
+    0.365612998f, -0.930766961f,
+    0.367040346f, -0.930205023f,
+    0.368466830f, -0.929640896f,
+    0.369892447f, -0.929074581f,
+    0.371317194f, -0.928506080f,
+    0.372741067f, -0.927935395f,
+    0.374164063f, -0.927362526f,
+    0.375586178f, -0.926787474f,
+    0.377007410f, -0.926210242f,
+    0.378427755f, -0.925630831f,
+    0.379847209f, -0.925049241f,
+    0.381265769f, -0.924465474f,
+    0.382683432f, -0.923879533f,
+    0.384100195f, -0.923291417f,
+    0.385516054f, -0.922701128f,
+    0.386931006f, -0.922108669f,
+    0.388345047f, -0.921514039f,
+    0.389758174f, -0.920917242f,
+    0.391170384f, -0.920318277f,
+    0.392581674f, -0.919717146f,
+    0.393992040f, -0.919113852f,
+    0.395401479f, -0.918508394f,
+    0.396809987f, -0.917900776f,
+    0.398217562f, -0.917290997f,
+    0.399624200f, -0.916679060f,
+    0.401029897f, -0.916064966f,
+    0.402434651f, -0.915448716f,
+    0.403838458f, -0.914830312f,
+    0.405241314f, -0.914209756f,
+    0.406643217f, -0.913587048f,
+    0.408044163f, -0.912962190f,
+    0.409444149f, -0.912335185f,
+    0.410843171f, -0.911706032f,
+    0.412241227f, -0.911074734f,
+    0.413638312f, -0.910441292f,
+    0.415034424f, -0.909805708f,
+    0.416429560f, -0.909167983f,
+    0.417823716f, -0.908528119f,
+    0.419216888f, -0.907886116f,
+    0.420609074f, -0.907241978f,
+    0.422000271f, -0.906595705f,
+    0.423390474f, -0.905947298f,
+    0.424779681f, -0.905296759f,
+    0.426167889f, -0.904644091f,
+    0.427555093f, -0.903989293f,
+    0.428941292f, -0.903332368f,
+    0.430326481f, -0.902673318f,
+    0.431710658f, -0.902012144f,
+    0.433093819f, -0.901348847f,
+    0.434475961f, -0.900683429f,
+    0.435857080f, -0.900015892f,
+    0.437237174f, -0.899346237f,
+    0.438616239f, -0.898674466f,
+    0.439994271f, -0.898000580f,
+    0.441371269f, -0.897324581f,
+    0.442747228f, -0.896646470f,
+    0.444122145f, -0.895966250f,
+    0.445496017f, -0.895283921f,
+    0.446868840f, -0.894599486f,
+    0.448240612f, -0.893912945f,
+    0.449611330f, -0.893224301f,
+    0.450980989f, -0.892533555f,
+    0.452349587f, -0.891840709f,
+    0.453717121f, -0.891145765f,
+    0.455083587f, -0.890448723f,
+    0.456448982f, -0.889749586f,
+    0.457813304f, -0.889048356f,
+    0.459176548f, -0.888345033f,
+    0.460538711f, -0.887639620f,
+    0.461899791f, -0.886932119f,
+    0.463259784f, -0.886222530f,
+    0.464618686f, -0.885510856f,
+    0.465976496f, -0.884797098f,
+    0.467333209f, -0.884081259f,
+    0.468688822f, -0.883363339f,
+    0.470043332f, -0.882643340f,
+    0.471396737f, -0.881921264f,
+    0.472749032f, -0.881197113f,
+    0.474100215f, -0.880470889f,
+    0.475450282f, -0.879742593f,
+    0.476799230f, -0.879012226f,
+    0.478147056f, -0.878279792f,
+    0.479493758f, -0.877545290f,
+    0.480839331f, -0.876808724f,
+    0.482183772f, -0.876070094f,
+    0.483527079f, -0.875329403f,
+    0.484869248f, -0.874586652f,
+    0.486210276f, -0.873841843f,
+    0.487550160f, -0.873094978f,
+    0.488888897f, -0.872346059f,
+    0.490226483f, -0.871595087f,
+    0.491562916f, -0.870842063f,
+    0.492898192f, -0.870086991f,
+    0.494232309f, -0.869329871f,
+    0.495565262f, -0.868570706f,
+    0.496897049f, -0.867809497f,
+    0.498227667f, -0.867046246f,
+    0.499557113f, -0.866280954f,
+    0.500885383f, -0.865513624f,
+    0.502212474f, -0.864744258f,
+    0.503538384f, -0.863972856f,
+    0.504863109f, -0.863199422f,
+    0.506186645f, -0.862423956f,
+    0.507508991f, -0.861646461f,
+    0.508830143f, -0.860866939f,
+    0.510150097f, -0.860085390f,
+    0.511468850f, -0.859301818f,
+    0.512786401f, -0.858516224f,
+    0.514102744f, -0.857728610f,
+    0.515417878f, -0.856938977f,
+    0.516731799f, -0.856147328f,
+    0.518044504f, -0.855353665f,
+    0.519355990f, -0.854557988f,
+    0.520666254f, -0.853760301f,
+    0.521975293f, -0.852960605f,
+    0.523283103f, -0.852158902f,
+    0.524589683f, -0.851355193f,
+    0.525895027f, -0.850549481f,
+    0.527199135f, -0.849741768f,
+    0.528502002f, -0.848932055f,
+    0.529803625f, -0.848120345f,
+    0.531104001f, -0.847306639f,
+    0.532403128f, -0.846490939f,
+    0.533701002f, -0.845673247f,
+    0.534997620f, -0.844853565f,
+    0.536292979f, -0.844031895f,
+    0.537587076f, -0.843208240f,
+    0.538879909f, -0.842382600f,
+    0.540171473f, -0.841554977f,
+    0.541461766f, -0.840725375f,
+    0.542750785f, -0.839893794f,
+    0.544038527f, -0.839060237f,
+    0.545324988f, -0.838224706f,
+    0.546610167f, -0.837387202f,
+    0.547894059f, -0.836547727f,
+    0.549176662f, -0.835706284f,
+    0.550457973f, -0.834862875f,
+    0.551737988f, -0.834017501f,
+    0.553016706f, -0.833170165f,
+    0.554294121f, -0.832320868f,
+    0.555570233f, -0.831469612f,
+    0.556845037f, -0.830616400f,
+    0.558118531f, -0.829761234f,
+    0.559390712f, -0.828904115f,
+    0.560661576f, -0.828045045f,
+    0.561931121f, -0.827184027f,
+    0.563199344f, -0.826321063f,
+    0.564466242f, -0.825456154f,
+    0.565731811f, -0.824589303f,
+    0.566996049f, -0.823720511f,
+    0.568258953f, -0.822849781f,
+    0.569520519f, -0.821977115f,
+    0.570780746f, -0.821102515f,
+    0.572039629f, -0.820225983f,
+    0.573297167f, -0.819347520f,
+    0.574553355f, -0.818467130f,
+    0.575808191f, -0.817584813f,
+    0.577061673f, -0.816700573f,
+    0.578313796f, -0.815814411f,
+    0.579564559f, -0.814926329f,
+    0.580813958f, -0.814036330f,
+    0.582061990f, -0.813144415f,
+    0.583308653f, -0.812250587f,
+    0.584553943f, -0.811354847f,
+    0.585797857f, -0.810457198f,
+    0.587040394f, -0.809557642f,
+    0.588281548f, -0.808656182f,
+    0.589521319f, -0.807752818f,
+    0.590759702f, -0.806847554f,
+    0.591996695f, -0.805940391f,
+    0.593232295f, -0.805031331f,
+    0.594466499f, -0.804120377f,
+    0.595699304f, -0.803207531f,
+    0.596930708f, -0.802292796f,
+    0.598160707f, -0.801376172f,
+    0.599389298f, -0.800457662f,
+    0.600616479f, -0.799537269f,
+    0.601842247f, -0.798614995f,
+    0.603066599f, -0.797690841f,
+    0.604289531f, -0.796764810f,
+    0.605511041f, -0.795836905f,
+    0.606731127f, -0.794907126f,
+    0.607949785f, -0.793975478f,
+    0.609167012f, -0.793041960f,
+    0.610382806f, -0.792106577f,
+    0.611597164f, -0.791169330f,
+    0.612810082f, -0.790230221f,
+    0.614021559f, -0.789289253f,
+    0.615231591f, -0.788346428f,
+    0.616440175f, -0.787401747f,
+    0.617647308f, -0.786455214f,
+    0.618852988f, -0.785506830f,
+    0.620057212f, -0.784556597f,
+    0.621259977f, -0.783604519f,
+    0.622461279f, -0.782650596f,
+    0.623661118f, -0.781694832f,
+    0.624859488f, -0.780737229f,
+    0.626056388f, -0.779777788f,
+    0.627251815f, -0.778816512f,
+    0.628445767f, -0.777853404f,
+    0.629638239f, -0.776888466f,
+    0.630829230f, -0.775921699f,
+    0.632018736f, -0.774953107f,
+    0.633206755f, -0.773982691f,
+    0.634393284f, -0.773010453f,
+    0.635578320f, -0.772036397f,
+    0.636761861f, -0.771060524f,
+    0.637943904f, -0.770082837f,
+    0.639124445f, -0.769103338f,
+    0.640303482f, -0.768122029f,
+    0.641481013f, -0.767138912f,
+    0.642657034f, -0.766153990f,
+    0.643831543f, -0.765167266f,
+    0.645004537f, -0.764178741f,
+    0.646176013f, -0.763188417f,
+    0.647345969f, -0.762196298f,
+    0.648514401f, -0.761202385f,
+    0.649681307f, -0.760206682f,
+    0.650846685f, -0.759209189f,
+    0.652010531f, -0.758209910f,
+    0.653172843f, -0.757208847f,
+    0.654333618f, -0.756206001f,
+    0.655492853f, -0.755201377f,
+    0.656650546f, -0.754194975f,
+    0.657806693f, -0.753186799f,
+    0.658961293f, -0.752176850f,
+    0.660114342f, -0.751165132f,
+    0.661265838f, -0.750151646f,
+    0.662415778f, -0.749136395f,
+    0.663564159f, -0.748119380f,
+    0.664710978f, -0.747100606f,
+    0.665856234f, -0.746080074f,
+    0.666999922f, -0.745057785f,
+    0.668142041f, -0.744033744f,
+    0.669282588f, -0.743007952f,
+    0.670421560f, -0.741980412f,
+    0.671558955f, -0.740951125f,
+    0.672694769f, -0.739920095f,
+    0.673829000f, -0.738887324f,
+    0.674961646f, -0.737852815f,
+    0.676092704f, -0.736816569f,
+    0.677222170f, -0.735778589f,
+    0.678350043f, -0.734738878f,
+    0.679476320f, -0.733697438f,
+    0.680600998f, -0.732654272f,
+    0.681724074f, -0.731609381f,
+    0.682845546f, -0.730562769f,
+    0.683965412f, -0.729514438f,
+    0.685083668f, -0.728464390f,
+    0.686200312f, -0.727412629f,
+    0.687315341f, -0.726359155f,
+    0.688428753f, -0.725303972f,
+    0.689540545f, -0.724247083f,
+    0.690650714f, -0.723188489f,
+    0.691759258f, -0.722128194f,
+    0.692866175f, -0.721066199f,
+    0.693971461f, -0.720002508f,
+    0.695075114f, -0.718937122f,
+    0.696177131f, -0.717870045f,
+    0.697277511f, -0.716801279f,
+    0.698376249f, -0.715730825f,
+    0.699473345f, -0.714658688f,
+    0.700568794f, -0.713584869f,
+    0.701662595f, -0.712509371f,
+    0.702754744f, -0.711432196f,
+    0.703845241f, -0.710353347f,
+    0.704934080f, -0.709272826f,
+    0.706021261f, -0.708190637f,
+    0.707106781f, -0.707106781f,
+    0.708190637f, -0.706021261f,
+    0.709272826f, -0.704934080f,
+    0.710353347f, -0.703845241f,
+    0.711432196f, -0.702754744f,
+    0.712509371f, -0.701662595f,
+    0.713584869f, -0.700568794f,
+    0.714658688f, -0.699473345f,
+    0.715730825f, -0.698376249f,
+    0.716801279f, -0.697277511f,
+    0.717870045f, -0.696177131f,
+    0.718937122f, -0.695075114f,
+    0.720002508f, -0.693971461f,
+    0.721066199f, -0.692866175f,
+    0.722128194f, -0.691759258f,
+    0.723188489f, -0.690650714f,
+    0.724247083f, -0.689540545f,
+    0.725303972f, -0.688428753f,
+    0.726359155f, -0.687315341f,
+    0.727412629f, -0.686200312f,
+    0.728464390f, -0.685083668f,
+    0.729514438f, -0.683965412f,
+    0.730562769f, -0.682845546f,
+    0.731609381f, -0.681724074f,
+    0.732654272f, -0.680600998f,
+    0.733697438f, -0.679476320f,
+    0.734738878f, -0.678350043f,
+    0.735778589f, -0.677222170f,
+    0.736816569f, -0.676092704f,
+    0.737852815f, -0.674961646f,
+    0.738887324f, -0.673829000f,
+    0.739920095f, -0.672694769f,
+    0.740951125f, -0.671558955f,
+    0.741980412f, -0.670421560f,
+    0.743007952f, -0.669282588f,
+    0.744033744f, -0.668142041f,
+    0.745057785f, -0.666999922f,
+    0.746080074f, -0.665856234f,
+    0.747100606f, -0.664710978f,
+    0.748119380f, -0.663564159f,
+    0.749136395f, -0.662415778f,
+    0.750151646f, -0.661265838f,
+    0.751165132f, -0.660114342f,
+    0.752176850f, -0.658961293f,
+    0.753186799f, -0.657806693f,
+    0.754194975f, -0.656650546f,
+    0.755201377f, -0.655492853f,
+    0.756206001f, -0.654333618f,
+    0.757208847f, -0.653172843f,
+    0.758209910f, -0.652010531f,
+    0.759209189f, -0.650846685f,
+    0.760206682f, -0.649681307f,
+    0.761202385f, -0.648514401f,
+    0.762196298f, -0.647345969f,
+    0.763188417f, -0.646176013f,
+    0.764178741f, -0.645004537f,
+    0.765167266f, -0.643831543f,
+    0.766153990f, -0.642657034f,
+    0.767138912f, -0.641481013f,
+    0.768122029f, -0.640303482f,
+    0.769103338f, -0.639124445f,
+    0.770082837f, -0.637943904f,
+    0.771060524f, -0.636761861f,
+    0.772036397f, -0.635578320f,
+    0.773010453f, -0.634393284f,
+    0.773982691f, -0.633206755f,
+    0.774953107f, -0.632018736f,
+    0.775921699f, -0.630829230f,
+    0.776888466f, -0.629638239f,
+    0.777853404f, -0.628445767f,
+    0.778816512f, -0.627251815f,
+    0.779777788f, -0.626056388f,
+    0.780737229f, -0.624859488f,
+    0.781694832f, -0.623661118f,
+    0.782650596f, -0.622461279f,
+    0.783604519f, -0.621259977f,
+    0.784556597f, -0.620057212f,
+    0.785506830f, -0.618852988f,
+    0.786455214f, -0.617647308f,
+    0.787401747f, -0.616440175f,
+    0.788346428f, -0.615231591f,
+    0.789289253f, -0.614021559f,
+    0.790230221f, -0.612810082f,
+    0.791169330f, -0.611597164f,
+    0.792106577f, -0.610382806f,
+    0.793041960f, -0.609167012f,
+    0.793975478f, -0.607949785f,
+    0.794907126f, -0.606731127f,
+    0.795836905f, -0.605511041f,
+    0.796764810f, -0.604289531f,
+    0.797690841f, -0.603066599f,
+    0.798614995f, -0.601842247f,
+    0.799537269f, -0.600616479f,
+    0.800457662f, -0.599389298f,
+    0.801376172f, -0.598160707f,
+    0.802292796f, -0.596930708f,
+    0.803207531f, -0.595699304f,
+    0.804120377f, -0.594466499f,
+    0.805031331f, -0.593232295f,
+    0.805940391f, -0.591996695f,
+    0.806847554f, -0.590759702f,
+    0.807752818f, -0.589521319f,
+    0.808656182f, -0.588281548f,
+    0.809557642f, -0.587040394f,
+    0.810457198f, -0.585797857f,
+    0.811354847f, -0.584553943f,
+    0.812250587f, -0.583308653f,
+    0.813144415f, -0.582061990f,
+    0.814036330f, -0.580813958f,
+    0.814926329f, -0.579564559f,
+    0.815814411f, -0.578313796f,
+    0.816700573f, -0.577061673f,
+    0.817584813f, -0.575808191f,
+    0.818467130f, -0.574553355f,
+    0.819347520f, -0.573297167f,
+    0.820225983f, -0.572039629f,
+    0.821102515f, -0.570780746f,
+    0.821977115f, -0.569520519f,
+    0.822849781f, -0.568258953f,
+    0.823720511f, -0.566996049f,
+    0.824589303f, -0.565731811f,
+    0.825456154f, -0.564466242f,
+    0.826321063f, -0.563199344f,
+    0.827184027f, -0.561931121f,
+    0.828045045f, -0.560661576f,
+    0.828904115f, -0.559390712f,
+    0.829761234f, -0.558118531f,
+    0.830616400f, -0.556845037f,
+    0.831469612f, -0.555570233f,
+    0.832320868f, -0.554294121f,
+    0.833170165f, -0.553016706f,
+    0.834017501f, -0.551737988f,
+    0.834862875f, -0.550457973f,
+    0.835706284f, -0.549176662f,
+    0.836547727f, -0.547894059f,
+    0.837387202f, -0.546610167f,
+    0.838224706f, -0.545324988f,
+    0.839060237f, -0.544038527f,
+    0.839893794f, -0.542750785f,
+    0.840725375f, -0.541461766f,
+    0.841554977f, -0.540171473f,
+    0.842382600f, -0.538879909f,
+    0.843208240f, -0.537587076f,
+    0.844031895f, -0.536292979f,
+    0.844853565f, -0.534997620f,
+    0.845673247f, -0.533701002f,
+    0.846490939f, -0.532403128f,
+    0.847306639f, -0.531104001f,
+    0.848120345f, -0.529803625f,
+    0.848932055f, -0.528502002f,
+    0.849741768f, -0.527199135f,
+    0.850549481f, -0.525895027f,
+    0.851355193f, -0.524589683f,
+    0.852158902f, -0.523283103f,
+    0.852960605f, -0.521975293f,
+    0.853760301f, -0.520666254f,
+    0.854557988f, -0.519355990f,
+    0.855353665f, -0.518044504f,
+    0.856147328f, -0.516731799f,
+    0.856938977f, -0.515417878f,
+    0.857728610f, -0.514102744f,
+    0.858516224f, -0.512786401f,
+    0.859301818f, -0.511468850f,
+    0.860085390f, -0.510150097f,
+    0.860866939f, -0.508830143f,
+    0.861646461f, -0.507508991f,
+    0.862423956f, -0.506186645f,
+    0.863199422f, -0.504863109f,
+    0.863972856f, -0.503538384f,
+    0.864744258f, -0.502212474f,
+    0.865513624f, -0.500885383f,
+    0.866280954f, -0.499557113f,
+    0.867046246f, -0.498227667f,
+    0.867809497f, -0.496897049f,
+    0.868570706f, -0.495565262f,
+    0.869329871f, -0.494232309f,
+    0.870086991f, -0.492898192f,
+    0.870842063f, -0.491562916f,
+    0.871595087f, -0.490226483f,
+    0.872346059f, -0.488888897f,
+    0.873094978f, -0.487550160f,
+    0.873841843f, -0.486210276f,
+    0.874586652f, -0.484869248f,
+    0.875329403f, -0.483527079f,
+    0.876070094f, -0.482183772f,
+    0.876808724f, -0.480839331f,
+    0.877545290f, -0.479493758f,
+    0.878279792f, -0.478147056f,
+    0.879012226f, -0.476799230f,
+    0.879742593f, -0.475450282f,
+    0.880470889f, -0.474100215f,
+    0.881197113f, -0.472749032f,
+    0.881921264f, -0.471396737f,
+    0.882643340f, -0.470043332f,
+    0.883363339f, -0.468688822f,
+    0.884081259f, -0.467333209f,
+    0.884797098f, -0.465976496f,
+    0.885510856f, -0.464618686f,
+    0.886222530f, -0.463259784f,
+    0.886932119f, -0.461899791f,
+    0.887639620f, -0.460538711f,
+    0.888345033f, -0.459176548f,
+    0.889048356f, -0.457813304f,
+    0.889749586f, -0.456448982f,
+    0.890448723f, -0.455083587f,
+    0.891145765f, -0.453717121f,
+    0.891840709f, -0.452349587f,
+    0.892533555f, -0.450980989f,
+    0.893224301f, -0.449611330f,
+    0.893912945f, -0.448240612f,
+    0.894599486f, -0.446868840f,
+    0.895283921f, -0.445496017f,
+    0.895966250f, -0.444122145f,
+    0.896646470f, -0.442747228f,
+    0.897324581f, -0.441371269f,
+    0.898000580f, -0.439994271f,
+    0.898674466f, -0.438616239f,
+    0.899346237f, -0.437237174f,
+    0.900015892f, -0.435857080f,
+    0.900683429f, -0.434475961f,
+    0.901348847f, -0.433093819f,
+    0.902012144f, -0.431710658f,
+    0.902673318f, -0.430326481f,
+    0.903332368f, -0.428941292f,
+    0.903989293f, -0.427555093f,
+    0.904644091f, -0.426167889f,
+    0.905296759f, -0.424779681f,
+    0.905947298f, -0.423390474f,
+    0.906595705f, -0.422000271f,
+    0.907241978f, -0.420609074f,
+    0.907886116f, -0.419216888f,
+    0.908528119f, -0.417823716f,
+    0.909167983f, -0.416429560f,
+    0.909805708f, -0.415034424f,
+    0.910441292f, -0.413638312f,
+    0.911074734f, -0.412241227f,
+    0.911706032f, -0.410843171f,
+    0.912335185f, -0.409444149f,
+    0.912962190f, -0.408044163f,
+    0.913587048f, -0.406643217f,
+    0.914209756f, -0.405241314f,
+    0.914830312f, -0.403838458f,
+    0.915448716f, -0.402434651f,
+    0.916064966f, -0.401029897f,
+    0.916679060f, -0.399624200f,
+    0.917290997f, -0.398217562f,
+    0.917900776f, -0.396809987f,
+    0.918508394f, -0.395401479f,
+    0.919113852f, -0.393992040f,
+    0.919717146f, -0.392581674f,
+    0.920318277f, -0.391170384f,
+    0.920917242f, -0.389758174f,
+    0.921514039f, -0.388345047f,
+    0.922108669f, -0.386931006f,
+    0.922701128f, -0.385516054f,
+    0.923291417f, -0.384100195f,
+    0.923879533f, -0.382683432f,
+    0.924465474f, -0.381265769f,
+    0.925049241f, -0.379847209f,
+    0.925630831f, -0.378427755f,
+    0.926210242f, -0.377007410f,
+    0.926787474f, -0.375586178f,
+    0.927362526f, -0.374164063f,
+    0.927935395f, -0.372741067f,
+    0.928506080f, -0.371317194f,
+    0.929074581f, -0.369892447f,
+    0.929640896f, -0.368466830f,
+    0.930205023f, -0.367040346f,
+    0.930766961f, -0.365612998f,
+    0.931326709f, -0.364184790f,
+    0.931884266f, -0.362755724f,
+    0.932439629f, -0.361325806f,
+    0.932992799f, -0.359895037f,
+    0.933543773f, -0.358463421f,
+    0.934092550f, -0.357030961f,
+    0.934639130f, -0.355597662f,
+    0.935183510f, -0.354163525f,
+    0.935725689f, -0.352728556f,
+    0.936265667f, -0.351292756f,
+    0.936803442f, -0.349856130f,
+    0.937339012f, -0.348418680f,
+    0.937872376f, -0.346980411f,
+    0.938403534f, -0.345541325f,
+    0.938932484f, -0.344101426f,
+    0.939459224f, -0.342660717f,
+    0.939983753f, -0.341219202f,
+    0.940506071f, -0.339776884f,
+    0.941026175f, -0.338333767f,
+    0.941544065f, -0.336889853f,
+    0.942059740f, -0.335445147f,
+    0.942573198f, -0.333999651f,
+    0.943084437f, -0.332553370f,
+    0.943593458f, -0.331106306f,
+    0.944100258f, -0.329658463f,
+    0.944604837f, -0.328209844f,
+    0.945107193f, -0.326760452f,
+    0.945607325f, -0.325310292f,
+    0.946105232f, -0.323859367f,
+    0.946600913f, -0.322407679f,
+    0.947094366f, -0.320955232f,
+    0.947585591f, -0.319502031f,
+    0.948074586f, -0.318048077f,
+    0.948561350f, -0.316593376f,
+    0.949045882f, -0.315137929f,
+    0.949528181f, -0.313681740f,
+    0.950008245f, -0.312224814f,
+    0.950486074f, -0.310767153f,
+    0.950961666f, -0.309308760f,
+    0.951435021f, -0.307849640f,
+    0.951906137f, -0.306389795f,
+    0.952375013f, -0.304929230f,
+    0.952841648f, -0.303467947f,
+    0.953306040f, -0.302005949f,
+    0.953768190f, -0.300543241f,
+    0.954228095f, -0.299079826f,
+    0.954685755f, -0.297615707f,
+    0.955141168f, -0.296150888f,
+    0.955594334f, -0.294685372f,
+    0.956045251f, -0.293219163f,
+    0.956493919f, -0.291752263f,
+    0.956940336f, -0.290284677f,
+    0.957384501f, -0.288816408f,
+    0.957826413f, -0.287347460f,
+    0.958266071f, -0.285877835f,
+    0.958703475f, -0.284407537f,
+    0.959138622f, -0.282936570f,
+    0.959571513f, -0.281464938f,
+    0.960002146f, -0.279992643f,
+    0.960430519f, -0.278519689f,
+    0.960856633f, -0.277046080f,
+    0.961280486f, -0.275571819f,
+    0.961702077f, -0.274096910f,
+    0.962121404f, -0.272621355f,
+    0.962538468f, -0.271145160f,
+    0.962953267f, -0.269668326f,
+    0.963365800f, -0.268190857f,
+    0.963776066f, -0.266712757f,
+    0.964184064f, -0.265234030f,
+    0.964589793f, -0.263754679f,
+    0.964993253f, -0.262274707f,
+    0.965394442f, -0.260794118f,
+    0.965793359f, -0.259312915f,
+    0.966190003f, -0.257831102f,
+    0.966584374f, -0.256348682f,
+    0.966976471f, -0.254865660f,
+    0.967366292f, -0.253382037f,
+    0.967753837f, -0.251897818f,
+    0.968139105f, -0.250413007f,
+    0.968522094f, -0.248927606f,
+    0.968902805f, -0.247441619f,
+    0.969281235f, -0.245955050f,
+    0.969657385f, -0.244467903f,
+    0.970031253f, -0.242980180f,
+    0.970402839f, -0.241491885f,
+    0.970772141f, -0.240003022f,
+    0.971139158f, -0.238513595f,
+    0.971503891f, -0.237023606f,
+    0.971866337f, -0.235533059f,
+    0.972226497f, -0.234041959f,
+    0.972584369f, -0.232550307f,
+    0.972939952f, -0.231058108f,
+    0.973293246f, -0.229565366f,
+    0.973644250f, -0.228072083f,
+    0.973992962f, -0.226578264f,
+    0.974339383f, -0.225083911f,
+    0.974683511f, -0.223589029f,
+    0.975025345f, -0.222093621f,
+    0.975364885f, -0.220597690f,
+    0.975702130f, -0.219101240f,
+    0.976037079f, -0.217604275f,
+    0.976369731f, -0.216106797f,
+    0.976700086f, -0.214608811f,
+    0.977028143f, -0.213110320f,
+    0.977353900f, -0.211611327f,
+    0.977677358f, -0.210111837f,
+    0.977998515f, -0.208611852f,
+    0.978317371f, -0.207111376f,
+    0.978633924f, -0.205610413f,
+    0.978948175f, -0.204108966f,
+    0.979260123f, -0.202607039f,
+    0.979569766f, -0.201104635f,
+    0.979877104f, -0.199601758f,
+    0.980182136f, -0.198098411f,
+    0.980484862f, -0.196594598f,
+    0.980785280f, -0.195090322f,
+    0.981083391f, -0.193585587f,
+    0.981379193f, -0.192080397f,
+    0.981672686f, -0.190574755f,
+    0.981963869f, -0.189068664f,
+    0.982252741f, -0.187562129f,
+    0.982539302f, -0.186055152f,
+    0.982823551f, -0.184547737f,
+    0.983105487f, -0.183039888f,
+    0.983385110f, -0.181531608f,
+    0.983662419f, -0.180022901f,
+    0.983937413f, -0.178513771f,
+    0.984210092f, -0.177004220f,
+    0.984480455f, -0.175494253f,
+    0.984748502f, -0.173983873f,
+    0.985014231f, -0.172473084f,
+    0.985277642f, -0.170961889f,
+    0.985538735f, -0.169450291f,
+    0.985797509f, -0.167938295f,
+    0.986053963f, -0.166425904f,
+    0.986308097f, -0.164913120f,
+    0.986559910f, -0.163399949f,
+    0.986809402f, -0.161886394f,
+    0.987056571f, -0.160372457f,
+    0.987301418f, -0.158858143f,
+    0.987543942f, -0.157343456f,
+    0.987784142f, -0.155828398f,
+    0.988022017f, -0.154312973f,
+    0.988257568f, -0.152797185f,
+    0.988490793f, -0.151281038f,
+    0.988721692f, -0.149764535f,
+    0.988950265f, -0.148247679f,
+    0.989176510f, -0.146730474f,
+    0.989400428f, -0.145212925f,
+    0.989622017f, -0.143695033f,
+    0.989841278f, -0.142176804f,
+    0.990058210f, -0.140658239f,
+    0.990272812f, -0.139139344f,
+    0.990485084f, -0.137620122f,
+    0.990695025f, -0.136100575f,
+    0.990902635f, -0.134580709f,
+    0.991107914f, -0.133060525f,
+    0.991310860f, -0.131540029f,
+    0.991511473f, -0.130019223f,
+    0.991709754f, -0.128498111f,
+    0.991905700f, -0.126976696f,
+    0.992099313f, -0.125454983f,
+    0.992290591f, -0.123932975f,
+    0.992479535f, -0.122410675f,
+    0.992666142f, -0.120888087f,
+    0.992850414f, -0.119365215f,
+    0.993032350f, -0.117842062f,
+    0.993211949f, -0.116318631f,
+    0.993389211f, -0.114794927f,
+    0.993564136f, -0.113270952f,
+    0.993736722f, -0.111746711f,
+    0.993906970f, -0.110222207f,
+    0.994074879f, -0.108697444f,
+    0.994240449f, -0.107172425f,
+    0.994403680f, -0.105647154f,
+    0.994564571f, -0.104121634f,
+    0.994723121f, -0.102595869f,
+    0.994879331f, -0.101069863f,
+    0.995033199f, -0.099543619f,
+    0.995184727f, -0.098017140f,
+    0.995333912f, -0.096490431f,
+    0.995480755f, -0.094963495f,
+    0.995625256f, -0.093436336f,
+    0.995767414f, -0.091908956f,
+    0.995907229f, -0.090381361f,
+    0.996044701f, -0.088853553f,
+    0.996179829f, -0.087325535f,
+    0.996312612f, -0.085797312f,
+    0.996443051f, -0.084268888f,
+    0.996571146f, -0.082740265f,
+    0.996696895f, -0.081211447f,
+    0.996820299f, -0.079682438f,
+    0.996941358f, -0.078153242f,
+    0.997060070f, -0.076623861f,
+    0.997176437f, -0.075094301f,
+    0.997290457f, -0.073564564f,
+    0.997402130f, -0.072034653f,
+    0.997511456f, -0.070504573f,
+    0.997618435f, -0.068974328f,
+    0.997723067f, -0.067443920f,
+    0.997825350f, -0.065913353f,
+    0.997925286f, -0.064382631f,
+    0.998022874f, -0.062851758f,
+    0.998118113f, -0.061320736f,
+    0.998211003f, -0.059789571f,
+    0.998301545f, -0.058258265f,
+    0.998389737f, -0.056726821f,
+    0.998475581f, -0.055195244f,
+    0.998559074f, -0.053663538f,
+    0.998640218f, -0.052131705f,
+    0.998719012f, -0.050599749f,
+    0.998795456f, -0.049067674f,
+    0.998869550f, -0.047535484f,
+    0.998941293f, -0.046003182f,
+    0.999010686f, -0.044470772f,
+    0.999077728f, -0.042938257f,
+    0.999142419f, -0.041405641f,
+    0.999204759f, -0.039872928f,
+    0.999264747f, -0.038340120f,
+    0.999322385f, -0.036807223f,
+    0.999377670f, -0.035274239f,
+    0.999430605f, -0.033741172f,
+    0.999481187f, -0.032208025f,
+    0.999529418f, -0.030674803f,
+    0.999575296f, -0.029141509f,
+    0.999618822f, -0.027608146f,
+    0.999659997f, -0.026074718f,
+    0.999698819f, -0.024541229f,
+    0.999735288f, -0.023007681f,
+    0.999769405f, -0.021474080f,
+    0.999801170f, -0.019940429f,
+    0.999830582f, -0.018406730f,
+    0.999857641f, -0.016872988f,
+    0.999882347f, -0.015339206f,
+    0.999904701f, -0.013805389f,
+    0.999924702f, -0.012271538f,
+    0.999942350f, -0.010737659f,
+    0.999957645f, -0.009203755f,
+    0.999970586f, -0.007669829f,
+    0.999981175f, -0.006135885f,
+    0.999989411f, -0.004601926f,
+    0.999995294f, -0.003067957f,
+    0.999998823f, -0.001533980f
+};
+
+/*    
+* @brief  Q31 Twiddle factors Table    
+*/
+
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 16	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_16_q31[24] = {
+    0x7FFFFFFF, 0x00000000,
+    0x7641AF3C, 0x30FBC54D,
+    0x5A82799A, 0x5A82799A,
+    0x30FBC54D, 0x7641AF3C,
+    0x00000000, 0x7FFFFFFF,
+    0xCF043AB2, 0x7641AF3C,
+    0xA57D8666, 0x5A82799A,
+    0x89BE50C3, 0x30FBC54D,
+    0x80000000, 0x00000000,
+    0x89BE50C3, 0xCF043AB2,
+    0xA57D8666, 0xA57D8666,
+    0xCF043AB2, 0x89BE50C3
+};
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 32	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_32_q31[48] = {
+    0x7FFFFFFF, 0x00000000,
+    0x7D8A5F3F, 0x18F8B83C,
+    0x7641AF3C, 0x30FBC54D,
+    0x6A6D98A4, 0x471CECE6,
+    0x5A82799A, 0x5A82799A,
+    0x471CECE6, 0x6A6D98A4,
+    0x30FBC54D, 0x7641AF3C,
+    0x18F8B83C, 0x7D8A5F3F,
+    0x00000000, 0x7FFFFFFF,
+    0xE70747C3, 0x7D8A5F3F,
+    0xCF043AB2, 0x7641AF3C,
+    0xB8E31319, 0x6A6D98A4,
+    0xA57D8666, 0x5A82799A,
+    0x9592675B, 0x471CECE6,
+    0x89BE50C3, 0x30FBC54D,
+    0x8275A0C0, 0x18F8B83C,
+    0x80000000, 0x00000000,
+    0x8275A0C0, 0xE70747C3,
+    0x89BE50C3, 0xCF043AB2,
+    0x9592675B, 0xB8E31319,
+    0xA57D8666, 0xA57D8666,
+    0xB8E31319, 0x9592675B,
+    0xCF043AB2, 0x89BE50C3,
+    0xE70747C3, 0x8275A0C0
+};
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 64	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_64_q31[96] = {
+    0x7FFFFFFF, 0x00000000,
+    0x7F62368F, 0x0C8BD35E,
+    0x7D8A5F3F, 0x18F8B83C,
+    0x7A7D055B, 0x25280C5D,
+    0x7641AF3C, 0x30FBC54D,
+    0x70E2CBC6, 0x3C56BA70,
+    0x6A6D98A4, 0x471CECE6,
+    0x62F201AC, 0x5133CC94,
+    0x5A82799A, 0x5A82799A,
+    0x5133CC94, 0x62F201AC,
+    0x471CECE6, 0x6A6D98A4,
+    0x3C56BA70, 0x70E2CBC6,
+    0x30FBC54D, 0x7641AF3C,
+    0x25280C5D, 0x7A7D055B,
+    0x18F8B83C, 0x7D8A5F3F,
+    0x0C8BD35E, 0x7F62368F,
+    0x00000000, 0x7FFFFFFF,
+    0xF3742CA1, 0x7F62368F,
+    0xE70747C3, 0x7D8A5F3F,
+    0xDAD7F3A2, 0x7A7D055B,
+    0xCF043AB2, 0x7641AF3C,
+    0xC3A9458F, 0x70E2CBC6,
+    0xB8E31319, 0x6A6D98A4,
+    0xAECC336B, 0x62F201AC,
+    0xA57D8666, 0x5A82799A,
+    0x9D0DFE53, 0x5133CC94,
+    0x9592675B, 0x471CECE6,
+    0x8F1D343A, 0x3C56BA70,
+    0x89BE50C3, 0x30FBC54D,
+    0x8582FAA4, 0x25280C5D,
+    0x8275A0C0, 0x18F8B83C,
+    0x809DC970, 0x0C8BD35E,
+    0x80000000, 0x00000000,
+    0x809DC970, 0xF3742CA1,
+    0x8275A0C0, 0xE70747C3,
+    0x8582FAA4, 0xDAD7F3A2,
+    0x89BE50C3, 0xCF043AB2,
+    0x8F1D343A, 0xC3A9458F,
+    0x9592675B, 0xB8E31319,
+    0x9D0DFE53, 0xAECC336B,
+    0xA57D8666, 0xA57D8666,
+    0xAECC336B, 0x9D0DFE53,
+    0xB8E31319, 0x9592675B,
+    0xC3A9458F, 0x8F1D343A,
+    0xCF043AB2, 0x89BE50C3,
+    0xDAD7F3A2, 0x8582FAA4,
+    0xE70747C3, 0x8275A0C0,
+    0xF3742CA1, 0x809DC970
+};
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 128	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_128_q31[192] = {
+    0x7FFFFFFF, 0x00000000,
+    0x7FD8878D, 0x0647D97C,
+    0x7F62368F, 0x0C8BD35E,
+    0x7E9D55FC, 0x12C8106E,
+    0x7D8A5F3F, 0x18F8B83C,
+    0x7C29FBEE, 0x1F19F97B,
+    0x7A7D055B, 0x25280C5D,
+    0x78848413, 0x2B1F34EB,
+    0x7641AF3C, 0x30FBC54D,
+    0x73B5EBD0, 0x36BA2013,
+    0x70E2CBC6, 0x3C56BA70,
+    0x6DCA0D14, 0x41CE1E64,
+    0x6A6D98A4, 0x471CECE6,
+    0x66CF811F, 0x4C3FDFF3,
+    0x62F201AC, 0x5133CC94,
+    0x5ED77C89, 0x55F5A4D2,
+    0x5A82799A, 0x5A82799A,
+    0x55F5A4D2, 0x5ED77C89,
+    0x5133CC94, 0x62F201AC,
+    0x4C3FDFF3, 0x66CF811F,
+    0x471CECE6, 0x6A6D98A4,
+    0x41CE1E64, 0x6DCA0D14,
+    0x3C56BA70, 0x70E2CBC6,
+    0x36BA2013, 0x73B5EBD0,
+    0x30FBC54D, 0x7641AF3C,
+    0x2B1F34EB, 0x78848413,
+    0x25280C5D, 0x7A7D055B,
+    0x1F19F97B, 0x7C29FBEE,
+    0x18F8B83C, 0x7D8A5F3F,
+    0x12C8106E, 0x7E9D55FC,
+    0x0C8BD35E, 0x7F62368F,
+    0x0647D97C, 0x7FD8878D,
+    0x00000000, 0x7FFFFFFF,
+    0xF9B82683, 0x7FD8878D,
+    0xF3742CA1, 0x7F62368F,
+    0xED37EF91, 0x7E9D55FC,
+    0xE70747C3, 0x7D8A5F3F,
+    0xE0E60684, 0x7C29FBEE,
+    0xDAD7F3A2, 0x7A7D055B,
+    0xD4E0CB14, 0x78848413,
+    0xCF043AB2, 0x7641AF3C,
+    0xC945DFEC, 0x73B5EBD0,
+    0xC3A9458F, 0x70E2CBC6,
+    0xBE31E19B, 0x6DCA0D14,
+    0xB8E31319, 0x6A6D98A4,
+    0xB3C0200C, 0x66CF811F,
+    0xAECC336B, 0x62F201AC,
+    0xAA0A5B2D, 0x5ED77C89,
+    0xA57D8666, 0x5A82799A,
+    0xA1288376, 0x55F5A4D2,
+    0x9D0DFE53, 0x5133CC94,
+    0x99307EE0, 0x4C3FDFF3,
+    0x9592675B, 0x471CECE6,
+    0x9235F2EB, 0x41CE1E64,
+    0x8F1D343A, 0x3C56BA70,
+    0x8C4A142F, 0x36BA2013,
+    0x89BE50C3, 0x30FBC54D,
+    0x877B7BEC, 0x2B1F34EB,
+    0x8582FAA4, 0x25280C5D,
+    0x83D60411, 0x1F19F97B,
+    0x8275A0C0, 0x18F8B83C,
+    0x8162AA03, 0x12C8106E,
+    0x809DC970, 0x0C8BD35E,
+    0x80277872, 0x0647D97C,
+    0x80000000, 0x00000000,
+    0x80277872, 0xF9B82683,
+    0x809DC970, 0xF3742CA1,
+    0x8162AA03, 0xED37EF91,
+    0x8275A0C0, 0xE70747C3,
+    0x83D60411, 0xE0E60684,
+    0x8582FAA4, 0xDAD7F3A2,
+    0x877B7BEC, 0xD4E0CB14,
+    0x89BE50C3, 0xCF043AB2,
+    0x8C4A142F, 0xC945DFEC,
+    0x8F1D343A, 0xC3A9458F,
+    0x9235F2EB, 0xBE31E19B,
+    0x9592675B, 0xB8E31319,
+    0x99307EE0, 0xB3C0200C,
+    0x9D0DFE53, 0xAECC336B,
+    0xA1288376, 0xAA0A5B2D,
+    0xA57D8666, 0xA57D8666,
+    0xAA0A5B2D, 0xA1288376,
+    0xAECC336B, 0x9D0DFE53,
+    0xB3C0200C, 0x99307EE0,
+    0xB8E31319, 0x9592675B,
+    0xBE31E19B, 0x9235F2EB,
+    0xC3A9458F, 0x8F1D343A,
+    0xC945DFEC, 0x8C4A142F,
+    0xCF043AB2, 0x89BE50C3,
+    0xD4E0CB14, 0x877B7BEC,
+    0xDAD7F3A2, 0x8582FAA4,
+    0xE0E60684, 0x83D60411,
+    0xE70747C3, 0x8275A0C0,
+    0xED37EF91, 0x8162AA03,
+    0xF3742CA1, 0x809DC970,
+    0xF9B82683, 0x80277872
+};
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 256	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_256_q31[384] = {
+    0x7FFFFFFF, 0x00000000,
+    0x7FF62182, 0x03242ABF,
+    0x7FD8878D, 0x0647D97C,
+    0x7FA736B4, 0x096A9049,
+    0x7F62368F, 0x0C8BD35E,
+    0x7F0991C3, 0x0FAB272B,
+    0x7E9D55FC, 0x12C8106E,
+    0x7E1D93E9, 0x15E21444,
+    0x7D8A5F3F, 0x18F8B83C,
+    0x7CE3CEB1, 0x1C0B826A,
+    0x7C29FBEE, 0x1F19F97B,
+    0x7B5D039D, 0x2223A4C5,
+    0x7A7D055B, 0x25280C5D,
+    0x798A23B1, 0x2826B928,
+    0x78848413, 0x2B1F34EB,
+    0x776C4EDB, 0x2E110A62,
+    0x7641AF3C, 0x30FBC54D,
+    0x7504D345, 0x33DEF287,
+    0x73B5EBD0, 0x36BA2013,
+    0x72552C84, 0x398CDD32,
+    0x70E2CBC6, 0x3C56BA70,
+    0x6F5F02B1, 0x3F1749B7,
+    0x6DCA0D14, 0x41CE1E64,
+    0x6C242960, 0x447ACD50,
+    0x6A6D98A4, 0x471CECE6,
+    0x68A69E81, 0x49B41533,
+    0x66CF811F, 0x4C3FDFF3,
+    0x64E88926, 0x4EBFE8A4,
+    0x62F201AC, 0x5133CC94,
+    0x60EC3830, 0x539B2AEF,
+    0x5ED77C89, 0x55F5A4D2,
+    0x5CB420DF, 0x5842DD54,
+    0x5A82799A, 0x5A82799A,
+    0x5842DD54, 0x5CB420DF,
+    0x55F5A4D2, 0x5ED77C89,
+    0x539B2AEF, 0x60EC3830,
+    0x5133CC94, 0x62F201AC,
+    0x4EBFE8A4, 0x64E88926,
+    0x4C3FDFF3, 0x66CF811F,
+    0x49B41533, 0x68A69E81,
+    0x471CECE6, 0x6A6D98A4,
+    0x447ACD50, 0x6C242960,
+    0x41CE1E64, 0x6DCA0D14,
+    0x3F1749B7, 0x6F5F02B1,
+    0x3C56BA70, 0x70E2CBC6,
+    0x398CDD32, 0x72552C84,
+    0x36BA2013, 0x73B5EBD0,
+    0x33DEF287, 0x7504D345,
+    0x30FBC54D, 0x7641AF3C,
+    0x2E110A62, 0x776C4EDB,
+    0x2B1F34EB, 0x78848413,
+    0x2826B928, 0x798A23B1,
+    0x25280C5D, 0x7A7D055B,
+    0x2223A4C5, 0x7B5D039D,
+    0x1F19F97B, 0x7C29FBEE,
+    0x1C0B826A, 0x7CE3CEB1,
+    0x18F8B83C, 0x7D8A5F3F,
+    0x15E21444, 0x7E1D93E9,
+    0x12C8106E, 0x7E9D55FC,
+    0x0FAB272B, 0x7F0991C3,
+    0x0C8BD35E, 0x7F62368F,
+    0x096A9049, 0x7FA736B4,
+    0x0647D97C, 0x7FD8878D,
+    0x03242ABF, 0x7FF62182,
+    0x00000000, 0x7FFFFFFF,
+    0xFCDBD541, 0x7FF62182,
+    0xF9B82683, 0x7FD8878D,
+    0xF6956FB6, 0x7FA736B4,
+    0xF3742CA1, 0x7F62368F,
+    0xF054D8D4, 0x7F0991C3,
+    0xED37EF91, 0x7E9D55FC,
+    0xEA1DEBBB, 0x7E1D93E9,
+    0xE70747C3, 0x7D8A5F3F,
+    0xE3F47D95, 0x7CE3CEB1,
+    0xE0E60684, 0x7C29FBEE,
+    0xDDDC5B3A, 0x7B5D039D,
+    0xDAD7F3A2, 0x7A7D055B,
+    0xD7D946D7, 0x798A23B1,
+    0xD4E0CB14, 0x78848413,
+    0xD1EEF59E, 0x776C4EDB,
+    0xCF043AB2, 0x7641AF3C,
+    0xCC210D78, 0x7504D345,
+    0xC945DFEC, 0x73B5EBD0,
+    0xC67322CD, 0x72552C84,
+    0xC3A9458F, 0x70E2CBC6,
+    0xC0E8B648, 0x6F5F02B1,
+    0xBE31E19B, 0x6DCA0D14,
+    0xBB8532AF, 0x6C242960,
+    0xB8E31319, 0x6A6D98A4,
+    0xB64BEACC, 0x68A69E81,
+    0xB3C0200C, 0x66CF811F,
+    0xB140175B, 0x64E88926,
+    0xAECC336B, 0x62F201AC,
+    0xAC64D510, 0x60EC3830,
+    0xAA0A5B2D, 0x5ED77C89,
+    0xA7BD22AB, 0x5CB420DF,
+    0xA57D8666, 0x5A82799A,
+    0xA34BDF20, 0x5842DD54,
+    0xA1288376, 0x55F5A4D2,
+    0x9F13C7D0, 0x539B2AEF,
+    0x9D0DFE53, 0x5133CC94,
+    0x9B1776D9, 0x4EBFE8A4,
+    0x99307EE0, 0x4C3FDFF3,
+    0x9759617E, 0x49B41533,
+    0x9592675B, 0x471CECE6,
+    0x93DBD69F, 0x447ACD50,
+    0x9235F2EB, 0x41CE1E64,
+    0x90A0FD4E, 0x3F1749B7,
+    0x8F1D343A, 0x3C56BA70,
+    0x8DAAD37B, 0x398CDD32,
+    0x8C4A142F, 0x36BA2013,
+    0x8AFB2CBA, 0x33DEF287,
+    0x89BE50C3, 0x30FBC54D,
+    0x8893B124, 0x2E110A62,
+    0x877B7BEC, 0x2B1F34EB,
+    0x8675DC4E, 0x2826B928,
+    0x8582FAA4, 0x25280C5D,
+    0x84A2FC62, 0x2223A4C5,
+    0x83D60411, 0x1F19F97B,
+    0x831C314E, 0x1C0B826A,
+    0x8275A0C0, 0x18F8B83C,
+    0x81E26C16, 0x15E21444,
+    0x8162AA03, 0x12C8106E,
+    0x80F66E3C, 0x0FAB272B,
+    0x809DC970, 0x0C8BD35E,
+    0x8058C94C, 0x096A9049,
+    0x80277872, 0x0647D97C,
+    0x8009DE7D, 0x03242ABF,
+    0x80000000, 0x00000000,
+    0x8009DE7D, 0xFCDBD541,
+    0x80277872, 0xF9B82683,
+    0x8058C94C, 0xF6956FB6,
+    0x809DC970, 0xF3742CA1,
+    0x80F66E3C, 0xF054D8D4,
+    0x8162AA03, 0xED37EF91,
+    0x81E26C16, 0xEA1DEBBB,
+    0x8275A0C0, 0xE70747C3,
+    0x831C314E, 0xE3F47D95,
+    0x83D60411, 0xE0E60684,
+    0x84A2FC62, 0xDDDC5B3A,
+    0x8582FAA4, 0xDAD7F3A2,
+    0x8675DC4E, 0xD7D946D7,
+    0x877B7BEC, 0xD4E0CB14,
+    0x8893B124, 0xD1EEF59E,
+    0x89BE50C3, 0xCF043AB2,
+    0x8AFB2CBA, 0xCC210D78,
+    0x8C4A142F, 0xC945DFEC,
+    0x8DAAD37B, 0xC67322CD,
+    0x8F1D343A, 0xC3A9458F,
+    0x90A0FD4E, 0xC0E8B648,
+    0x9235F2EB, 0xBE31E19B,
+    0x93DBD69F, 0xBB8532AF,
+    0x9592675B, 0xB8E31319,
+    0x9759617E, 0xB64BEACC,
+    0x99307EE0, 0xB3C0200C,
+    0x9B1776D9, 0xB140175B,
+    0x9D0DFE53, 0xAECC336B,
+    0x9F13C7D0, 0xAC64D510,
+    0xA1288376, 0xAA0A5B2D,
+    0xA34BDF20, 0xA7BD22AB,
+    0xA57D8666, 0xA57D8666,
+    0xA7BD22AB, 0xA34BDF20,
+    0xAA0A5B2D, 0xA1288376,
+    0xAC64D510, 0x9F13C7D0,
+    0xAECC336B, 0x9D0DFE53,
+    0xB140175B, 0x9B1776D9,
+    0xB3C0200C, 0x99307EE0,
+    0xB64BEACC, 0x9759617E,
+    0xB8E31319, 0x9592675B,
+    0xBB8532AF, 0x93DBD69F,
+    0xBE31E19B, 0x9235F2EB,
+    0xC0E8B648, 0x90A0FD4E,
+    0xC3A9458F, 0x8F1D343A,
+    0xC67322CD, 0x8DAAD37B,
+    0xC945DFEC, 0x8C4A142F,
+    0xCC210D78, 0x8AFB2CBA,
+    0xCF043AB2, 0x89BE50C3,
+    0xD1EEF59E, 0x8893B124,
+    0xD4E0CB14, 0x877B7BEC,
+    0xD7D946D7, 0x8675DC4E,
+    0xDAD7F3A2, 0x8582FAA4,
+    0xDDDC5B3A, 0x84A2FC62,
+    0xE0E60684, 0x83D60411,
+    0xE3F47D95, 0x831C314E,
+    0xE70747C3, 0x8275A0C0,
+    0xEA1DEBBB, 0x81E26C16,
+    0xED37EF91, 0x8162AA03,
+    0xF054D8D4, 0x80F66E3C,
+    0xF3742CA1, 0x809DC970,
+    0xF6956FB6, 0x8058C94C,
+    0xF9B82683, 0x80277872,
+    0xFCDBD541, 0x8009DE7D
+};
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 512	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_512_q31[768] = {
+    0x7FFFFFFF, 0x00000000,
+    0x7FFD885A, 0x01921D1F,
+    0x7FF62182, 0x03242ABF,
+    0x7FE9CBC0, 0x04B6195D,
+    0x7FD8878D, 0x0647D97C,
+    0x7FC25596, 0x07D95B9E,
+    0x7FA736B4, 0x096A9049,
+    0x7F872BF3, 0x0AFB6805,
+    0x7F62368F, 0x0C8BD35E,
+    0x7F3857F5, 0x0E1BC2E3,
+    0x7F0991C3, 0x0FAB272B,
+    0x7ED5E5C6, 0x1139F0CE,
+    0x7E9D55FC, 0x12C8106E,
+    0x7E5FE493, 0x145576B1,
+    0x7E1D93E9, 0x15E21444,
+    0x7DD6668E, 0x176DD9DE,
+    0x7D8A5F3F, 0x18F8B83C,
+    0x7D3980EC, 0x1A82A025,
+    0x7CE3CEB1, 0x1C0B826A,
+    0x7C894BDD, 0x1D934FE5,
+    0x7C29FBEE, 0x1F19F97B,
+    0x7BC5E28F, 0x209F701C,
+    0x7B5D039D, 0x2223A4C5,
+    0x7AEF6323, 0x23A6887E,
+    0x7A7D055B, 0x25280C5D,
+    0x7A05EEAD, 0x26A82185,
+    0x798A23B1, 0x2826B928,
+    0x7909A92C, 0x29A3C484,
+    0x78848413, 0x2B1F34EB,
+    0x77FAB988, 0x2C98FBBA,
+    0x776C4EDB, 0x2E110A62,
+    0x76D94988, 0x2F875262,
+    0x7641AF3C, 0x30FBC54D,
+    0x75A585CF, 0x326E54C7,
+    0x7504D345, 0x33DEF287,
+    0x745F9DD1, 0x354D9056,
+    0x73B5EBD0, 0x36BA2013,
+    0x7307C3D0, 0x382493B0,
+    0x72552C84, 0x398CDD32,
+    0x719E2CD2, 0x3AF2EEB7,
+    0x70E2CBC6, 0x3C56BA70,
+    0x70231099, 0x3DB832A5,
+    0x6F5F02B1, 0x3F1749B7,
+    0x6E96A99C, 0x4073F21D,
+    0x6DCA0D14, 0x41CE1E64,
+    0x6CF934FB, 0x4325C135,
+    0x6C242960, 0x447ACD50,
+    0x6B4AF278, 0x45CD358F,
+    0x6A6D98A4, 0x471CECE6,
+    0x698C246C, 0x4869E664,
+    0x68A69E81, 0x49B41533,
+    0x67BD0FBC, 0x4AFB6C97,
+    0x66CF811F, 0x4C3FDFF3,
+    0x65DDFBD3, 0x4D8162C4,
+    0x64E88926, 0x4EBFE8A4,
+    0x63EF328F, 0x4FFB654D,
+    0x62F201AC, 0x5133CC94,
+    0x61F1003E, 0x5269126E,
+    0x60EC3830, 0x539B2AEF,
+    0x5FE3B38D, 0x54CA0A4A,
+    0x5ED77C89, 0x55F5A4D2,
+    0x5DC79D7C, 0x571DEEF9,
+    0x5CB420DF, 0x5842DD54,
+    0x5B9D1153, 0x59646497,
+    0x5A82799A, 0x5A82799A,
+    0x59646497, 0x5B9D1153,
+    0x5842DD54, 0x5CB420DF,
+    0x571DEEF9, 0x5DC79D7C,
+    0x55F5A4D2, 0x5ED77C89,
+    0x54CA0A4A, 0x5FE3B38D,
+    0x539B2AEF, 0x60EC3830,
+    0x5269126E, 0x61F1003E,
+    0x5133CC94, 0x62F201AC,
+    0x4FFB654D, 0x63EF328F,
+    0x4EBFE8A4, 0x64E88926,
+    0x4D8162C4, 0x65DDFBD3,
+    0x4C3FDFF3, 0x66CF811F,
+    0x4AFB6C97, 0x67BD0FBC,
+    0x49B41533, 0x68A69E81,
+    0x4869E664, 0x698C246C,
+    0x471CECE6, 0x6A6D98A4,
+    0x45CD358F, 0x6B4AF278,
+    0x447ACD50, 0x6C242960,
+    0x4325C135, 0x6CF934FB,
+    0x41CE1E64, 0x6DCA0D14,
+    0x4073F21D, 0x6E96A99C,
+    0x3F1749B7, 0x6F5F02B1,
+    0x3DB832A5, 0x70231099,
+    0x3C56BA70, 0x70E2CBC6,
+    0x3AF2EEB7, 0x719E2CD2,
+    0x398CDD32, 0x72552C84,
+    0x382493B0, 0x7307C3D0,
+    0x36BA2013, 0x73B5EBD0,
+    0x354D9056, 0x745F9DD1,
+    0x33DEF287, 0x7504D345,
+    0x326E54C7, 0x75A585CF,
+    0x30FBC54D, 0x7641AF3C,
+    0x2F875262, 0x76D94988,
+    0x2E110A62, 0x776C4EDB,
+    0x2C98FBBA, 0x77FAB988,
+    0x2B1F34EB, 0x78848413,
+    0x29A3C484, 0x7909A92C,
+    0x2826B928, 0x798A23B1,
+    0x26A82185, 0x7A05EEAD,
+    0x25280C5D, 0x7A7D055B,
+    0x23A6887E, 0x7AEF6323,
+    0x2223A4C5, 0x7B5D039D,
+    0x209F701C, 0x7BC5E28F,
+    0x1F19F97B, 0x7C29FBEE,
+    0x1D934FE5, 0x7C894BDD,
+    0x1C0B826A, 0x7CE3CEB1,
+    0x1A82A025, 0x7D3980EC,
+    0x18F8B83C, 0x7D8A5F3F,
+    0x176DD9DE, 0x7DD6668E,
+    0x15E21444, 0x7E1D93E9,
+    0x145576B1, 0x7E5FE493,
+    0x12C8106E, 0x7E9D55FC,
+    0x1139F0CE, 0x7ED5E5C6,
+    0x0FAB272B, 0x7F0991C3,
+    0x0E1BC2E3, 0x7F3857F5,
+    0x0C8BD35E, 0x7F62368F,
+    0x0AFB6805, 0x7F872BF3,
+    0x096A9049, 0x7FA736B4,
+    0x07D95B9E, 0x7FC25596,
+    0x0647D97C, 0x7FD8878D,
+    0x04B6195D, 0x7FE9CBC0,
+    0x03242ABF, 0x7FF62182,
+    0x01921D1F, 0x7FFD885A,
+    0x00000000, 0x7FFFFFFF,
+    0xFE6DE2E0, 0x7FFD885A,
+    0xFCDBD541, 0x7FF62182,
+    0xFB49E6A2, 0x7FE9CBC0,
+    0xF9B82683, 0x7FD8878D,
+    0xF826A461, 0x7FC25596,
+    0xF6956FB6, 0x7FA736B4,
+    0xF50497FA, 0x7F872BF3,
+    0xF3742CA1, 0x7F62368F,
+    0xF1E43D1C, 0x7F3857F5,
+    0xF054D8D4, 0x7F0991C3,
+    0xEEC60F31, 0x7ED5E5C6,
+    0xED37EF91, 0x7E9D55FC,
+    0xEBAA894E, 0x7E5FE493,
+    0xEA1DEBBB, 0x7E1D93E9,
+    0xE8922621, 0x7DD6668E,
+    0xE70747C3, 0x7D8A5F3F,
+    0xE57D5FDA, 0x7D3980EC,
+    0xE3F47D95, 0x7CE3CEB1,
+    0xE26CB01A, 0x7C894BDD,
+    0xE0E60684, 0x7C29FBEE,
+    0xDF608FE3, 0x7BC5E28F,
+    0xDDDC5B3A, 0x7B5D039D,
+    0xDC597781, 0x7AEF6323,
+    0xDAD7F3A2, 0x7A7D055B,
+    0xD957DE7A, 0x7A05EEAD,
+    0xD7D946D7, 0x798A23B1,
+    0xD65C3B7B, 0x7909A92C,
+    0xD4E0CB14, 0x78848413,
+    0xD3670445, 0x77FAB988,
+    0xD1EEF59E, 0x776C4EDB,
+    0xD078AD9D, 0x76D94988,
+    0xCF043AB2, 0x7641AF3C,
+    0xCD91AB38, 0x75A585CF,
+    0xCC210D78, 0x7504D345,
+    0xCAB26FA9, 0x745F9DD1,
+    0xC945DFEC, 0x73B5EBD0,
+    0xC7DB6C50, 0x7307C3D0,
+    0xC67322CD, 0x72552C84,
+    0xC50D1148, 0x719E2CD2,
+    0xC3A9458F, 0x70E2CBC6,
+    0xC247CD5A, 0x70231099,
+    0xC0E8B648, 0x6F5F02B1,
+    0xBF8C0DE2, 0x6E96A99C,
+    0xBE31E19B, 0x6DCA0D14,
+    0xBCDA3ECA, 0x6CF934FB,
+    0xBB8532AF, 0x6C242960,
+    0xBA32CA70, 0x6B4AF278,
+    0xB8E31319, 0x6A6D98A4,
+    0xB796199B, 0x698C246C,
+    0xB64BEACC, 0x68A69E81,
+    0xB5049368, 0x67BD0FBC,
+    0xB3C0200C, 0x66CF811F,
+    0xB27E9D3B, 0x65DDFBD3,
+    0xB140175B, 0x64E88926,
+    0xB0049AB2, 0x63EF328F,
+    0xAECC336B, 0x62F201AC,
+    0xAD96ED91, 0x61F1003E,
+    0xAC64D510, 0x60EC3830,
+    0xAB35F5B5, 0x5FE3B38D,
+    0xAA0A5B2D, 0x5ED77C89,
+    0xA8E21106, 0x5DC79D7C,
+    0xA7BD22AB, 0x5CB420DF,
+    0xA69B9B68, 0x5B9D1153,
+    0xA57D8666, 0x5A82799A,
+    0xA462EEAC, 0x59646497,
+    0xA34BDF20, 0x5842DD54,
+    0xA2386283, 0x571DEEF9,
+    0xA1288376, 0x55F5A4D2,
+    0xA01C4C72, 0x54CA0A4A,
+    0x9F13C7D0, 0x539B2AEF,
+    0x9E0EFFC1, 0x5269126E,
+    0x9D0DFE53, 0x5133CC94,
+    0x9C10CD70, 0x4FFB654D,
+    0x9B1776D9, 0x4EBFE8A4,
+    0x9A22042C, 0x4D8162C4,
+    0x99307EE0, 0x4C3FDFF3,
+    0x9842F043, 0x4AFB6C97,
+    0x9759617E, 0x49B41533,
+    0x9673DB94, 0x4869E664,
+    0x9592675B, 0x471CECE6,
+    0x94B50D87, 0x45CD358F,
+    0x93DBD69F, 0x447ACD50,
+    0x9306CB04, 0x4325C135,
+    0x9235F2EB, 0x41CE1E64,
+    0x91695663, 0x4073F21D,
+    0x90A0FD4E, 0x3F1749B7,
+    0x8FDCEF66, 0x3DB832A5,
+    0x8F1D343A, 0x3C56BA70,
+    0x8E61D32D, 0x3AF2EEB7,
+    0x8DAAD37B, 0x398CDD32,
+    0x8CF83C30, 0x382493B0,
+    0x8C4A142F, 0x36BA2013,
+    0x8BA0622F, 0x354D9056,
+    0x8AFB2CBA, 0x33DEF287,
+    0x8A5A7A30, 0x326E54C7,
+    0x89BE50C3, 0x30FBC54D,
+    0x8926B677, 0x2F875262,
+    0x8893B124, 0x2E110A62,
+    0x88054677, 0x2C98FBBA,
+    0x877B7BEC, 0x2B1F34EB,
+    0x86F656D3, 0x29A3C484,
+    0x8675DC4E, 0x2826B928,
+    0x85FA1152, 0x26A82185,
+    0x8582FAA4, 0x25280C5D,
+    0x85109CDC, 0x23A6887E,
+    0x84A2FC62, 0x2223A4C5,
+    0x843A1D70, 0x209F701C,
+    0x83D60411, 0x1F19F97B,
+    0x8376B422, 0x1D934FE5,
+    0x831C314E, 0x1C0B826A,
+    0x82C67F13, 0x1A82A025,
+    0x8275A0C0, 0x18F8B83C,
+    0x82299971, 0x176DD9DE,
+    0x81E26C16, 0x15E21444,
+    0x81A01B6C, 0x145576B1,
+    0x8162AA03, 0x12C8106E,
+    0x812A1A39, 0x1139F0CE,
+    0x80F66E3C, 0x0FAB272B,
+    0x80C7A80A, 0x0E1BC2E3,
+    0x809DC970, 0x0C8BD35E,
+    0x8078D40D, 0x0AFB6805,
+    0x8058C94C, 0x096A9049,
+    0x803DAA69, 0x07D95B9E,
+    0x80277872, 0x0647D97C,
+    0x80163440, 0x04B6195D,
+    0x8009DE7D, 0x03242ABF,
+    0x800277A5, 0x01921D1F,
+    0x80000000, 0x00000000,
+    0x800277A5, 0xFE6DE2E0,
+    0x8009DE7D, 0xFCDBD541,
+    0x80163440, 0xFB49E6A2,
+    0x80277872, 0xF9B82683,
+    0x803DAA69, 0xF826A461,
+    0x8058C94C, 0xF6956FB6,
+    0x8078D40D, 0xF50497FA,
+    0x809DC970, 0xF3742CA1,
+    0x80C7A80A, 0xF1E43D1C,
+    0x80F66E3C, 0xF054D8D4,
+    0x812A1A39, 0xEEC60F31,
+    0x8162AA03, 0xED37EF91,
+    0x81A01B6C, 0xEBAA894E,
+    0x81E26C16, 0xEA1DEBBB,
+    0x82299971, 0xE8922621,
+    0x8275A0C0, 0xE70747C3,
+    0x82C67F13, 0xE57D5FDA,
+    0x831C314E, 0xE3F47D95,
+    0x8376B422, 0xE26CB01A,
+    0x83D60411, 0xE0E60684,
+    0x843A1D70, 0xDF608FE3,
+    0x84A2FC62, 0xDDDC5B3A,
+    0x85109CDC, 0xDC597781,
+    0x8582FAA4, 0xDAD7F3A2,
+    0x85FA1152, 0xD957DE7A,
+    0x8675DC4E, 0xD7D946D7,
+    0x86F656D3, 0xD65C3B7B,
+    0x877B7BEC, 0xD4E0CB14,
+    0x88054677, 0xD3670445,
+    0x8893B124, 0xD1EEF59E,
+    0x8926B677, 0xD078AD9D,
+    0x89BE50C3, 0xCF043AB2,
+    0x8A5A7A30, 0xCD91AB38,
+    0x8AFB2CBA, 0xCC210D78,
+    0x8BA0622F, 0xCAB26FA9,
+    0x8C4A142F, 0xC945DFEC,
+    0x8CF83C30, 0xC7DB6C50,
+    0x8DAAD37B, 0xC67322CD,
+    0x8E61D32D, 0xC50D1148,
+    0x8F1D343A, 0xC3A9458F,
+    0x8FDCEF66, 0xC247CD5A,
+    0x90A0FD4E, 0xC0E8B648,
+    0x91695663, 0xBF8C0DE2,
+    0x9235F2EB, 0xBE31E19B,
+    0x9306CB04, 0xBCDA3ECA,
+    0x93DBD69F, 0xBB8532AF,
+    0x94B50D87, 0xBA32CA70,
+    0x9592675B, 0xB8E31319,
+    0x9673DB94, 0xB796199B,
+    0x9759617E, 0xB64BEACC,
+    0x9842F043, 0xB5049368,
+    0x99307EE0, 0xB3C0200C,
+    0x9A22042C, 0xB27E9D3B,
+    0x9B1776D9, 0xB140175B,
+    0x9C10CD70, 0xB0049AB2,
+    0x9D0DFE53, 0xAECC336B,
+    0x9E0EFFC1, 0xAD96ED91,
+    0x9F13C7D0, 0xAC64D510,
+    0xA01C4C72, 0xAB35F5B5,
+    0xA1288376, 0xAA0A5B2D,
+    0xA2386283, 0xA8E21106,
+    0xA34BDF20, 0xA7BD22AB,
+    0xA462EEAC, 0xA69B9B68,
+    0xA57D8666, 0xA57D8666,
+    0xA69B9B68, 0xA462EEAC,
+    0xA7BD22AB, 0xA34BDF20,
+    0xA8E21106, 0xA2386283,
+    0xAA0A5B2D, 0xA1288376,
+    0xAB35F5B5, 0xA01C4C72,
+    0xAC64D510, 0x9F13C7D0,
+    0xAD96ED91, 0x9E0EFFC1,
+    0xAECC336B, 0x9D0DFE53,
+    0xB0049AB2, 0x9C10CD70,
+    0xB140175B, 0x9B1776D9,
+    0xB27E9D3B, 0x9A22042C,
+    0xB3C0200C, 0x99307EE0,
+    0xB5049368, 0x9842F043,
+    0xB64BEACC, 0x9759617E,
+    0xB796199B, 0x9673DB94,
+    0xB8E31319, 0x9592675B,
+    0xBA32CA70, 0x94B50D87,
+    0xBB8532AF, 0x93DBD69F,
+    0xBCDA3ECA, 0x9306CB04,
+    0xBE31E19B, 0x9235F2EB,
+    0xBF8C0DE2, 0x91695663,
+    0xC0E8B648, 0x90A0FD4E,
+    0xC247CD5A, 0x8FDCEF66,
+    0xC3A9458F, 0x8F1D343A,
+    0xC50D1148, 0x8E61D32D,
+    0xC67322CD, 0x8DAAD37B,
+    0xC7DB6C50, 0x8CF83C30,
+    0xC945DFEC, 0x8C4A142F,
+    0xCAB26FA9, 0x8BA0622F,
+    0xCC210D78, 0x8AFB2CBA,
+    0xCD91AB38, 0x8A5A7A30,
+    0xCF043AB2, 0x89BE50C3,
+    0xD078AD9D, 0x8926B677,
+    0xD1EEF59E, 0x8893B124,
+    0xD3670445, 0x88054677,
+    0xD4E0CB14, 0x877B7BEC,
+    0xD65C3B7B, 0x86F656D3,
+    0xD7D946D7, 0x8675DC4E,
+    0xD957DE7A, 0x85FA1152,
+    0xDAD7F3A2, 0x8582FAA4,
+    0xDC597781, 0x85109CDC,
+    0xDDDC5B3A, 0x84A2FC62,
+    0xDF608FE3, 0x843A1D70,
+    0xE0E60684, 0x83D60411,
+    0xE26CB01A, 0x8376B422,
+    0xE3F47D95, 0x831C314E,
+    0xE57D5FDA, 0x82C67F13,
+    0xE70747C3, 0x8275A0C0,
+    0xE8922621, 0x82299971,
+    0xEA1DEBBB, 0x81E26C16,
+    0xEBAA894E, 0x81A01B6C,
+    0xED37EF91, 0x8162AA03,
+    0xEEC60F31, 0x812A1A39,
+    0xF054D8D4, 0x80F66E3C,
+    0xF1E43D1C, 0x80C7A80A,
+    0xF3742CA1, 0x809DC970,
+    0xF50497FA, 0x8078D40D,
+    0xF6956FB6, 0x8058C94C,
+    0xF826A461, 0x803DAA69,
+    0xF9B82683, 0x80277872,
+    0xFB49E6A2, 0x80163440,
+    0xFCDBD541, 0x8009DE7D,
+    0xFE6DE2E0, 0x800277A5
+};
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 1024	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_1024_q31[1536] = {
+    0x7FFFFFFF, 0x00000000,
+    0x7FFF6216, 0x00C90F88,
+    0x7FFD885A, 0x01921D1F,
+    0x7FFA72D1, 0x025B26D7,
+    0x7FF62182, 0x03242ABF,
+    0x7FF09477, 0x03ED26E6,
+    0x7FE9CBC0, 0x04B6195D,
+    0x7FE1C76B, 0x057F0034,
+    0x7FD8878D, 0x0647D97C,
+    0x7FCE0C3E, 0x0710A344,
+    0x7FC25596, 0x07D95B9E,
+    0x7FB563B2, 0x08A2009A,
+    0x7FA736B4, 0x096A9049,
+    0x7F97CEBC, 0x0A3308BC,
+    0x7F872BF3, 0x0AFB6805,
+    0x7F754E7F, 0x0BC3AC35,
+    0x7F62368F, 0x0C8BD35E,
+    0x7F4DE450, 0x0D53DB92,
+    0x7F3857F5, 0x0E1BC2E3,
+    0x7F2191B4, 0x0EE38765,
+    0x7F0991C3, 0x0FAB272B,
+    0x7EF0585F, 0x1072A047,
+    0x7ED5E5C6, 0x1139F0CE,
+    0x7EBA3A39, 0x120116D4,
+    0x7E9D55FC, 0x12C8106E,
+    0x7E7F3956, 0x138EDBB0,
+    0x7E5FE493, 0x145576B1,
+    0x7E3F57FE, 0x151BDF85,
+    0x7E1D93E9, 0x15E21444,
+    0x7DFA98A7, 0x16A81305,
+    0x7DD6668E, 0x176DD9DE,
+    0x7DB0FDF7, 0x183366E8,
+    0x7D8A5F3F, 0x18F8B83C,
+    0x7D628AC5, 0x19BDCBF2,
+    0x7D3980EC, 0x1A82A025,
+    0x7D0F4218, 0x1B4732EF,
+    0x7CE3CEB1, 0x1C0B826A,
+    0x7CB72724, 0x1CCF8CB3,
+    0x7C894BDD, 0x1D934FE5,
+    0x7C5A3D4F, 0x1E56CA1E,
+    0x7C29FBEE, 0x1F19F97B,
+    0x7BF88830, 0x1FDCDC1A,
+    0x7BC5E28F, 0x209F701C,
+    0x7B920B89, 0x2161B39F,
+    0x7B5D039D, 0x2223A4C5,
+    0x7B26CB4F, 0x22E541AE,
+    0x7AEF6323, 0x23A6887E,
+    0x7AB6CBA3, 0x24677757,
+    0x7A7D055B, 0x25280C5D,
+    0x7A4210D8, 0x25E845B5,
+    0x7A05EEAD, 0x26A82185,
+    0x79C89F6D, 0x27679DF4,
+    0x798A23B1, 0x2826B928,
+    0x794A7C11, 0x28E5714A,
+    0x7909A92C, 0x29A3C484,
+    0x78C7ABA1, 0x2A61B101,
+    0x78848413, 0x2B1F34EB,
+    0x78403328, 0x2BDC4E6F,
+    0x77FAB988, 0x2C98FBBA,
+    0x77B417DF, 0x2D553AFB,
+    0x776C4EDB, 0x2E110A62,
+    0x77235F2D, 0x2ECC681E,
+    0x76D94988, 0x2F875262,
+    0x768E0EA5, 0x3041C760,
+    0x7641AF3C, 0x30FBC54D,
+    0x75F42C0A, 0x31B54A5D,
+    0x75A585CF, 0x326E54C7,
+    0x7555BD4B, 0x3326E2C2,
+    0x7504D345, 0x33DEF287,
+    0x74B2C883, 0x3496824F,
+    0x745F9DD1, 0x354D9056,
+    0x740B53FA, 0x36041AD9,
+    0x73B5EBD0, 0x36BA2013,
+    0x735F6626, 0x376F9E46,
+    0x7307C3D0, 0x382493B0,
+    0x72AF05A6, 0x38D8FE93,
+    0x72552C84, 0x398CDD32,
+    0x71FA3948, 0x3A402DD1,
+    0x719E2CD2, 0x3AF2EEB7,
+    0x71410804, 0x3BA51E29,
+    0x70E2CBC6, 0x3C56BA70,
+    0x708378FE, 0x3D07C1D5,
+    0x70231099, 0x3DB832A5,
+    0x6FC19385, 0x3E680B2C,
+    0x6F5F02B1, 0x3F1749B7,
+    0x6EFB5F12, 0x3FC5EC97,
+    0x6E96A99C, 0x4073F21D,
+    0x6E30E349, 0x4121589A,
+    0x6DCA0D14, 0x41CE1E64,
+    0x6D6227FA, 0x427A41D0,
+    0x6CF934FB, 0x4325C135,
+    0x6C8F351C, 0x43D09AEC,
+    0x6C242960, 0x447ACD50,
+    0x6BB812D0, 0x452456BC,
+    0x6B4AF278, 0x45CD358F,
+    0x6ADCC964, 0x46756827,
+    0x6A6D98A4, 0x471CECE6,
+    0x69FD614A, 0x47C3C22E,
+    0x698C246C, 0x4869E664,
+    0x6919E320, 0x490F57EE,
+    0x68A69E81, 0x49B41533,
+    0x683257AA, 0x4A581C9D,
+    0x67BD0FBC, 0x4AFB6C97,
+    0x6746C7D7, 0x4B9E038F,
+    0x66CF811F, 0x4C3FDFF3,
+    0x66573CBB, 0x4CE10034,
+    0x65DDFBD3, 0x4D8162C4,
+    0x6563BF92, 0x4E210617,
+    0x64E88926, 0x4EBFE8A4,
+    0x646C59BF, 0x4F5E08E3,
+    0x63EF328F, 0x4FFB654D,
+    0x637114CC, 0x5097FC5E,
+    0x62F201AC, 0x5133CC94,
+    0x6271FA69, 0x51CED46E,
+    0x61F1003E, 0x5269126E,
+    0x616F146B, 0x53028517,
+    0x60EC3830, 0x539B2AEF,
+    0x60686CCE, 0x5433027D,
+    0x5FE3B38D, 0x54CA0A4A,
+    0x5F5E0DB3, 0x556040E2,
+    0x5ED77C89, 0x55F5A4D2,
+    0x5E50015D, 0x568A34A9,
+    0x5DC79D7C, 0x571DEEF9,
+    0x5D3E5236, 0x57B0D256,
+    0x5CB420DF, 0x5842DD54,
+    0x5C290ACC, 0x58D40E8C,
+    0x5B9D1153, 0x59646497,
+    0x5B1035CF, 0x59F3DE12,
+    0x5A82799A, 0x5A82799A,
+    0x59F3DE12, 0x5B1035CF,
+    0x59646497, 0x5B9D1153,
+    0x58D40E8C, 0x5C290ACC,
+    0x5842DD54, 0x5CB420DF,
+    0x57B0D256, 0x5D3E5236,
+    0x571DEEF9, 0x5DC79D7C,
+    0x568A34A9, 0x5E50015D,
+    0x55F5A4D2, 0x5ED77C89,
+    0x556040E2, 0x5F5E0DB3,
+    0x54CA0A4A, 0x5FE3B38D,
+    0x5433027D, 0x60686CCE,
+    0x539B2AEF, 0x60EC3830,
+    0x53028517, 0x616F146B,
+    0x5269126E, 0x61F1003E,
+    0x51CED46E, 0x6271FA69,
+    0x5133CC94, 0x62F201AC,
+    0x5097FC5E, 0x637114CC,
+    0x4FFB654D, 0x63EF328F,
+    0x4F5E08E3, 0x646C59BF,
+    0x4EBFE8A4, 0x64E88926,
+    0x4E210617, 0x6563BF92,
+    0x4D8162C4, 0x65DDFBD3,
+    0x4CE10034, 0x66573CBB,
+    0x4C3FDFF3, 0x66CF811F,
+    0x4B9E038F, 0x6746C7D7,
+    0x4AFB6C97, 0x67BD0FBC,
+    0x4A581C9D, 0x683257AA,
+    0x49B41533, 0x68A69E81,
+    0x490F57EE, 0x6919E320,
+    0x4869E664, 0x698C246C,
+    0x47C3C22E, 0x69FD614A,
+    0x471CECE6, 0x6A6D98A4,
+    0x46756827, 0x6ADCC964,
+    0x45CD358F, 0x6B4AF278,
+    0x452456BC, 0x6BB812D0,
+    0x447ACD50, 0x6C242960,
+    0x43D09AEC, 0x6C8F351C,
+    0x4325C135, 0x6CF934FB,
+    0x427A41D0, 0x6D6227FA,
+    0x41CE1E64, 0x6DCA0D14,
+    0x4121589A, 0x6E30E349,
+    0x4073F21D, 0x6E96A99C,
+    0x3FC5EC97, 0x6EFB5F12,
+    0x3F1749B7, 0x6F5F02B1,
+    0x3E680B2C, 0x6FC19385,
+    0x3DB832A5, 0x70231099,
+    0x3D07C1D5, 0x708378FE,
+    0x3C56BA70, 0x70E2CBC6,
+    0x3BA51E29, 0x71410804,
+    0x3AF2EEB7, 0x719E2CD2,
+    0x3A402DD1, 0x71FA3948,
+    0x398CDD32, 0x72552C84,
+    0x38D8FE93, 0x72AF05A6,
+    0x382493B0, 0x7307C3D0,
+    0x376F9E46, 0x735F6626,
+    0x36BA2013, 0x73B5EBD0,
+    0x36041AD9, 0x740B53FA,
+    0x354D9056, 0x745F9DD1,
+    0x3496824F, 0x74B2C883,
+    0x33DEF287, 0x7504D345,
+    0x3326E2C2, 0x7555BD4B,
+    0x326E54C7, 0x75A585CF,
+    0x31B54A5D, 0x75F42C0A,
+    0x30FBC54D, 0x7641AF3C,
+    0x3041C760, 0x768E0EA5,
+    0x2F875262, 0x76D94988,
+    0x2ECC681E, 0x77235F2D,
+    0x2E110A62, 0x776C4EDB,
+    0x2D553AFB, 0x77B417DF,
+    0x2C98FBBA, 0x77FAB988,
+    0x2BDC4E6F, 0x78403328,
+    0x2B1F34EB, 0x78848413,
+    0x2A61B101, 0x78C7ABA1,
+    0x29A3C484, 0x7909A92C,
+    0x28E5714A, 0x794A7C11,
+    0x2826B928, 0x798A23B1,
+    0x27679DF4, 0x79C89F6D,
+    0x26A82185, 0x7A05EEAD,
+    0x25E845B5, 0x7A4210D8,
+    0x25280C5D, 0x7A7D055B,
+    0x24677757, 0x7AB6CBA3,
+    0x23A6887E, 0x7AEF6323,
+    0x22E541AE, 0x7B26CB4F,
+    0x2223A4C5, 0x7B5D039D,
+    0x2161B39F, 0x7B920B89,
+    0x209F701C, 0x7BC5E28F,
+    0x1FDCDC1A, 0x7BF88830,
+    0x1F19F97B, 0x7C29FBEE,
+    0x1E56CA1E, 0x7C5A3D4F,
+    0x1D934FE5, 0x7C894BDD,
+    0x1CCF8CB3, 0x7CB72724,
+    0x1C0B826A, 0x7CE3CEB1,
+    0x1B4732EF, 0x7D0F4218,
+    0x1A82A025, 0x7D3980EC,
+    0x19BDCBF2, 0x7D628AC5,
+    0x18F8B83C, 0x7D8A5F3F,
+    0x183366E8, 0x7DB0FDF7,
+    0x176DD9DE, 0x7DD6668E,
+    0x16A81305, 0x7DFA98A7,
+    0x15E21444, 0x7E1D93E9,
+    0x151BDF85, 0x7E3F57FE,
+    0x145576B1, 0x7E5FE493,
+    0x138EDBB0, 0x7E7F3956,
+    0x12C8106E, 0x7E9D55FC,
+    0x120116D4, 0x7EBA3A39,
+    0x1139F0CE, 0x7ED5E5C6,
+    0x1072A047, 0x7EF0585F,
+    0x0FAB272B, 0x7F0991C3,
+    0x0EE38765, 0x7F2191B4,
+    0x0E1BC2E3, 0x7F3857F5,
+    0x0D53DB92, 0x7F4DE450,
+    0x0C8BD35E, 0x7F62368F,
+    0x0BC3AC35, 0x7F754E7F,
+    0x0AFB6805, 0x7F872BF3,
+    0x0A3308BC, 0x7F97CEBC,
+    0x096A9049, 0x7FA736B4,
+    0x08A2009A, 0x7FB563B2,
+    0x07D95B9E, 0x7FC25596,
+    0x0710A344, 0x7FCE0C3E,
+    0x0647D97C, 0x7FD8878D,
+    0x057F0034, 0x7FE1C76B,
+    0x04B6195D, 0x7FE9CBC0,
+    0x03ED26E6, 0x7FF09477,
+    0x03242ABF, 0x7FF62182,
+    0x025B26D7, 0x7FFA72D1,
+    0x01921D1F, 0x7FFD885A,
+    0x00C90F88, 0x7FFF6216,
+    0x00000000, 0x7FFFFFFF,
+    0xFF36F078, 0x7FFF6216,
+    0xFE6DE2E0, 0x7FFD885A,
+    0xFDA4D928, 0x7FFA72D1,
+    0xFCDBD541, 0x7FF62182,
+    0xFC12D919, 0x7FF09477,
+    0xFB49E6A2, 0x7FE9CBC0,
+    0xFA80FFCB, 0x7FE1C76B,
+    0xF9B82683, 0x7FD8878D,
+    0xF8EF5CBB, 0x7FCE0C3E,
+    0xF826A461, 0x7FC25596,
+    0xF75DFF65, 0x7FB563B2,
+    0xF6956FB6, 0x7FA736B4,
+    0xF5CCF743, 0x7F97CEBC,
+    0xF50497FA, 0x7F872BF3,
+    0xF43C53CA, 0x7F754E7F,
+    0xF3742CA1, 0x7F62368F,
+    0xF2AC246D, 0x7F4DE450,
+    0xF1E43D1C, 0x7F3857F5,
+    0xF11C789A, 0x7F2191B4,
+    0xF054D8D4, 0x7F0991C3,
+    0xEF8D5FB8, 0x7EF0585F,
+    0xEEC60F31, 0x7ED5E5C6,
+    0xEDFEE92B, 0x7EBA3A39,
+    0xED37EF91, 0x7E9D55FC,
+    0xEC71244F, 0x7E7F3956,
+    0xEBAA894E, 0x7E5FE493,
+    0xEAE4207A, 0x7E3F57FE,
+    0xEA1DEBBB, 0x7E1D93E9,
+    0xE957ECFB, 0x7DFA98A7,
+    0xE8922621, 0x7DD6668E,
+    0xE7CC9917, 0x7DB0FDF7,
+    0xE70747C3, 0x7D8A5F3F,
+    0xE642340D, 0x7D628AC5,
+    0xE57D5FDA, 0x7D3980EC,
+    0xE4B8CD10, 0x7D0F4218,
+    0xE3F47D95, 0x7CE3CEB1,
+    0xE330734C, 0x7CB72724,
+    0xE26CB01A, 0x7C894BDD,
+    0xE1A935E1, 0x7C5A3D4F,
+    0xE0E60684, 0x7C29FBEE,
+    0xE02323E5, 0x7BF88830,
+    0xDF608FE3, 0x7BC5E28F,
+    0xDE9E4C60, 0x7B920B89,
+    0xDDDC5B3A, 0x7B5D039D,
+    0xDD1ABE51, 0x7B26CB4F,
+    0xDC597781, 0x7AEF6323,
+    0xDB9888A8, 0x7AB6CBA3,
+    0xDAD7F3A2, 0x7A7D055B,
+    0xDA17BA4A, 0x7A4210D8,
+    0xD957DE7A, 0x7A05EEAD,
+    0xD898620C, 0x79C89F6D,
+    0xD7D946D7, 0x798A23B1,
+    0xD71A8EB5, 0x794A7C11,
+    0xD65C3B7B, 0x7909A92C,
+    0xD59E4EFE, 0x78C7ABA1,
+    0xD4E0CB14, 0x78848413,
+    0xD423B190, 0x78403328,
+    0xD3670445, 0x77FAB988,
+    0xD2AAC504, 0x77B417DF,
+    0xD1EEF59E, 0x776C4EDB,
+    0xD13397E1, 0x77235F2D,
+    0xD078AD9D, 0x76D94988,
+    0xCFBE389F, 0x768E0EA5,
+    0xCF043AB2, 0x7641AF3C,
+    0xCE4AB5A2, 0x75F42C0A,
+    0xCD91AB38, 0x75A585CF,
+    0xCCD91D3D, 0x7555BD4B,
+    0xCC210D78, 0x7504D345,
+    0xCB697DB0, 0x74B2C883,
+    0xCAB26FA9, 0x745F9DD1,
+    0xC9FBE527, 0x740B53FA,
+    0xC945DFEC, 0x73B5EBD0,
+    0xC89061BA, 0x735F6626,
+    0xC7DB6C50, 0x7307C3D0,
+    0xC727016C, 0x72AF05A6,
+    0xC67322CD, 0x72552C84,
+    0xC5BFD22E, 0x71FA3948,
+    0xC50D1148, 0x719E2CD2,
+    0xC45AE1D7, 0x71410804,
+    0xC3A9458F, 0x70E2CBC6,
+    0xC2F83E2A, 0x708378FE,
+    0xC247CD5A, 0x70231099,
+    0xC197F4D3, 0x6FC19385,
+    0xC0E8B648, 0x6F5F02B1,
+    0xC03A1368, 0x6EFB5F12,
+    0xBF8C0DE2, 0x6E96A99C,
+    0xBEDEA765, 0x6E30E349,
+    0xBE31E19B, 0x6DCA0D14,
+    0xBD85BE2F, 0x6D6227FA,
+    0xBCDA3ECA, 0x6CF934FB,
+    0xBC2F6513, 0x6C8F351C,
+    0xBB8532AF, 0x6C242960,
+    0xBADBA943, 0x6BB812D0,
+    0xBA32CA70, 0x6B4AF278,
+    0xB98A97D8, 0x6ADCC964,
+    0xB8E31319, 0x6A6D98A4,
+    0xB83C3DD1, 0x69FD614A,
+    0xB796199B, 0x698C246C,
+    0xB6F0A811, 0x6919E320,
+    0xB64BEACC, 0x68A69E81,
+    0xB5A7E362, 0x683257AA,
+    0xB5049368, 0x67BD0FBC,
+    0xB461FC70, 0x6746C7D7,
+    0xB3C0200C, 0x66CF811F,
+    0xB31EFFCB, 0x66573CBB,
+    0xB27E9D3B, 0x65DDFBD3,
+    0xB1DEF9E8, 0x6563BF92,
+    0xB140175B, 0x64E88926,
+    0xB0A1F71C, 0x646C59BF,
+    0xB0049AB2, 0x63EF328F,
+    0xAF6803A1, 0x637114CC,
+    0xAECC336B, 0x62F201AC,
+    0xAE312B91, 0x6271FA69,
+    0xAD96ED91, 0x61F1003E,
+    0xACFD7AE8, 0x616F146B,
+    0xAC64D510, 0x60EC3830,
+    0xABCCFD82, 0x60686CCE,
+    0xAB35F5B5, 0x5FE3B38D,
+    0xAA9FBF1D, 0x5F5E0DB3,
+    0xAA0A5B2D, 0x5ED77C89,
+    0xA975CB56, 0x5E50015D,
+    0xA8E21106, 0x5DC79D7C,
+    0xA84F2DA9, 0x5D3E5236,
+    0xA7BD22AB, 0x5CB420DF,
+    0xA72BF173, 0x5C290ACC,
+    0xA69B9B68, 0x5B9D1153,
+    0xA60C21ED, 0x5B1035CF,
+    0xA57D8666, 0x5A82799A,
+    0xA4EFCA31, 0x59F3DE12,
+    0xA462EEAC, 0x59646497,
+    0xA3D6F533, 0x58D40E8C,
+    0xA34BDF20, 0x5842DD54,
+    0xA2C1ADC9, 0x57B0D256,
+    0xA2386283, 0x571DEEF9,
+    0xA1AFFEA2, 0x568A34A9,
+    0xA1288376, 0x55F5A4D2,
+    0xA0A1F24C, 0x556040E2,
+    0xA01C4C72, 0x54CA0A4A,
+    0x9F979331, 0x5433027D,
+    0x9F13C7D0, 0x539B2AEF,
+    0x9E90EB94, 0x53028517,
+    0x9E0EFFC1, 0x5269126E,
+    0x9D8E0596, 0x51CED46E,
+    0x9D0DFE53, 0x5133CC94,
+    0x9C8EEB33, 0x5097FC5E,
+    0x9C10CD70, 0x4FFB654D,
+    0x9B93A640, 0x4F5E08E3,
+    0x9B1776D9, 0x4EBFE8A4,
+    0x9A9C406D, 0x4E210617,
+    0x9A22042C, 0x4D8162C4,
+    0x99A8C344, 0x4CE10034,
+    0x99307EE0, 0x4C3FDFF3,
+    0x98B93828, 0x4B9E038F,
+    0x9842F043, 0x4AFB6C97,
+    0x97CDA855, 0x4A581C9D,
+    0x9759617E, 0x49B41533,
+    0x96E61CDF, 0x490F57EE,
+    0x9673DB94, 0x4869E664,
+    0x96029EB5, 0x47C3C22E,
+    0x9592675B, 0x471CECE6,
+    0x9523369B, 0x46756827,
+    0x94B50D87, 0x45CD358F,
+    0x9447ED2F, 0x452456BC,
+    0x93DBD69F, 0x447ACD50,
+    0x9370CAE4, 0x43D09AEC,
+    0x9306CB04, 0x4325C135,
+    0x929DD805, 0x427A41D0,
+    0x9235F2EB, 0x41CE1E64,
+    0x91CF1CB6, 0x4121589A,
+    0x91695663, 0x4073F21D,
+    0x9104A0ED, 0x3FC5EC97,
+    0x90A0FD4E, 0x3F1749B7,
+    0x903E6C7A, 0x3E680B2C,
+    0x8FDCEF66, 0x3DB832A5,
+    0x8F7C8701, 0x3D07C1D5,
+    0x8F1D343A, 0x3C56BA70,
+    0x8EBEF7FB, 0x3BA51E29,
+    0x8E61D32D, 0x3AF2EEB7,
+    0x8E05C6B7, 0x3A402DD1,
+    0x8DAAD37B, 0x398CDD32,
+    0x8D50FA59, 0x38D8FE93,
+    0x8CF83C30, 0x382493B0,
+    0x8CA099D9, 0x376F9E46,
+    0x8C4A142F, 0x36BA2013,
+    0x8BF4AC05, 0x36041AD9,
+    0x8BA0622F, 0x354D9056,
+    0x8B4D377C, 0x3496824F,
+    0x8AFB2CBA, 0x33DEF287,
+    0x8AAA42B4, 0x3326E2C2,
+    0x8A5A7A30, 0x326E54C7,
+    0x8A0BD3F5, 0x31B54A5D,
+    0x89BE50C3, 0x30FBC54D,
+    0x8971F15A, 0x3041C760,
+    0x8926B677, 0x2F875262,
+    0x88DCA0D3, 0x2ECC681E,
+    0x8893B124, 0x2E110A62,
+    0x884BE820, 0x2D553AFB,
+    0x88054677, 0x2C98FBBA,
+    0x87BFCCD7, 0x2BDC4E6F,
+    0x877B7BEC, 0x2B1F34EB,
+    0x8738545E, 0x2A61B101,
+    0x86F656D3, 0x29A3C484,
+    0x86B583EE, 0x28E5714A,
+    0x8675DC4E, 0x2826B928,
+    0x86376092, 0x27679DF4,
+    0x85FA1152, 0x26A82185,
+    0x85BDEF27, 0x25E845B5,
+    0x8582FAA4, 0x25280C5D,
+    0x8549345C, 0x24677757,
+    0x85109CDC, 0x23A6887E,
+    0x84D934B0, 0x22E541AE,
+    0x84A2FC62, 0x2223A4C5,
+    0x846DF476, 0x2161B39F,
+    0x843A1D70, 0x209F701C,
+    0x840777CF, 0x1FDCDC1A,
+    0x83D60411, 0x1F19F97B,
+    0x83A5C2B0, 0x1E56CA1E,
+    0x8376B422, 0x1D934FE5,
+    0x8348D8DB, 0x1CCF8CB3,
+    0x831C314E, 0x1C0B826A,
+    0x82F0BDE8, 0x1B4732EF,
+    0x82C67F13, 0x1A82A025,
+    0x829D753A, 0x19BDCBF2,
+    0x8275A0C0, 0x18F8B83C,
+    0x824F0208, 0x183366E8,
+    0x82299971, 0x176DD9DE,
+    0x82056758, 0x16A81305,
+    0x81E26C16, 0x15E21444,
+    0x81C0A801, 0x151BDF85,
+    0x81A01B6C, 0x145576B1,
+    0x8180C6A9, 0x138EDBB0,
+    0x8162AA03, 0x12C8106E,
+    0x8145C5C6, 0x120116D4,
+    0x812A1A39, 0x1139F0CE,
+    0x810FA7A0, 0x1072A047,
+    0x80F66E3C, 0x0FAB272B,
+    0x80DE6E4C, 0x0EE38765,
+    0x80C7A80A, 0x0E1BC2E3,
+    0x80B21BAF, 0x0D53DB92,
+    0x809DC970, 0x0C8BD35E,
+    0x808AB180, 0x0BC3AC35,
+    0x8078D40D, 0x0AFB6805,
+    0x80683143, 0x0A3308BC,
+    0x8058C94C, 0x096A9049,
+    0x804A9C4D, 0x08A2009A,
+    0x803DAA69, 0x07D95B9E,
+    0x8031F3C1, 0x0710A344,
+    0x80277872, 0x0647D97C,
+    0x801E3894, 0x057F0034,
+    0x80163440, 0x04B6195D,
+    0x800F6B88, 0x03ED26E6,
+    0x8009DE7D, 0x03242ABF,
+    0x80058D2E, 0x025B26D7,
+    0x800277A5, 0x01921D1F,
+    0x80009DE9, 0x00C90F88,
+    0x80000000, 0x00000000,
+    0x80009DE9, 0xFF36F078,
+    0x800277A5, 0xFE6DE2E0,
+    0x80058D2E, 0xFDA4D928,
+    0x8009DE7D, 0xFCDBD541,
+    0x800F6B88, 0xFC12D919,
+    0x80163440, 0xFB49E6A2,
+    0x801E3894, 0xFA80FFCB,
+    0x80277872, 0xF9B82683,
+    0x8031F3C1, 0xF8EF5CBB,
+    0x803DAA69, 0xF826A461,
+    0x804A9C4D, 0xF75DFF65,
+    0x8058C94C, 0xF6956FB6,
+    0x80683143, 0xF5CCF743,
+    0x8078D40D, 0xF50497FA,
+    0x808AB180, 0xF43C53CA,
+    0x809DC970, 0xF3742CA1,
+    0x80B21BAF, 0xF2AC246D,
+    0x80C7A80A, 0xF1E43D1C,
+    0x80DE6E4C, 0xF11C789A,
+    0x80F66E3C, 0xF054D8D4,
+    0x810FA7A0, 0xEF8D5FB8,
+    0x812A1A39, 0xEEC60F31,
+    0x8145C5C6, 0xEDFEE92B,
+    0x8162AA03, 0xED37EF91,
+    0x8180C6A9, 0xEC71244F,
+    0x81A01B6C, 0xEBAA894E,
+    0x81C0A801, 0xEAE4207A,
+    0x81E26C16, 0xEA1DEBBB,
+    0x82056758, 0xE957ECFB,
+    0x82299971, 0xE8922621,
+    0x824F0208, 0xE7CC9917,
+    0x8275A0C0, 0xE70747C3,
+    0x829D753A, 0xE642340D,
+    0x82C67F13, 0xE57D5FDA,
+    0x82F0BDE8, 0xE4B8CD10,
+    0x831C314E, 0xE3F47D95,
+    0x8348D8DB, 0xE330734C,
+    0x8376B422, 0xE26CB01A,
+    0x83A5C2B0, 0xE1A935E1,
+    0x83D60411, 0xE0E60684,
+    0x840777CF, 0xE02323E5,
+    0x843A1D70, 0xDF608FE3,
+    0x846DF476, 0xDE9E4C60,
+    0x84A2FC62, 0xDDDC5B3A,
+    0x84D934B0, 0xDD1ABE51,
+    0x85109CDC, 0xDC597781,
+    0x8549345C, 0xDB9888A8,
+    0x8582FAA4, 0xDAD7F3A2,
+    0x85BDEF27, 0xDA17BA4A,
+    0x85FA1152, 0xD957DE7A,
+    0x86376092, 0xD898620C,
+    0x8675DC4E, 0xD7D946D7,
+    0x86B583EE, 0xD71A8EB5,
+    0x86F656D3, 0xD65C3B7B,
+    0x8738545E, 0xD59E4EFE,
+    0x877B7BEC, 0xD4E0CB14,
+    0x87BFCCD7, 0xD423B190,
+    0x88054677, 0xD3670445,
+    0x884BE820, 0xD2AAC504,
+    0x8893B124, 0xD1EEF59E,
+    0x88DCA0D3, 0xD13397E1,
+    0x8926B677, 0xD078AD9D,
+    0x8971F15A, 0xCFBE389F,
+    0x89BE50C3, 0xCF043AB2,
+    0x8A0BD3F5, 0xCE4AB5A2,
+    0x8A5A7A30, 0xCD91AB38,
+    0x8AAA42B4, 0xCCD91D3D,
+    0x8AFB2CBA, 0xCC210D78,
+    0x8B4D377C, 0xCB697DB0,
+    0x8BA0622F, 0xCAB26FA9,
+    0x8BF4AC05, 0xC9FBE527,
+    0x8C4A142F, 0xC945DFEC,
+    0x8CA099D9, 0xC89061BA,
+    0x8CF83C30, 0xC7DB6C50,
+    0x8D50FA59, 0xC727016C,
+    0x8DAAD37B, 0xC67322CD,
+    0x8E05C6B7, 0xC5BFD22E,
+    0x8E61D32D, 0xC50D1148,
+    0x8EBEF7FB, 0xC45AE1D7,
+    0x8F1D343A, 0xC3A9458F,
+    0x8F7C8701, 0xC2F83E2A,
+    0x8FDCEF66, 0xC247CD5A,
+    0x903E6C7A, 0xC197F4D3,
+    0x90A0FD4E, 0xC0E8B648,
+    0x9104A0ED, 0xC03A1368,
+    0x91695663, 0xBF8C0DE2,
+    0x91CF1CB6, 0xBEDEA765,
+    0x9235F2EB, 0xBE31E19B,
+    0x929DD805, 0xBD85BE2F,
+    0x9306CB04, 0xBCDA3ECA,
+    0x9370CAE4, 0xBC2F6513,
+    0x93DBD69F, 0xBB8532AF,
+    0x9447ED2F, 0xBADBA943,
+    0x94B50D87, 0xBA32CA70,
+    0x9523369B, 0xB98A97D8,
+    0x9592675B, 0xB8E31319,
+    0x96029EB5, 0xB83C3DD1,
+    0x9673DB94, 0xB796199B,
+    0x96E61CDF, 0xB6F0A811,
+    0x9759617E, 0xB64BEACC,
+    0x97CDA855, 0xB5A7E362,
+    0x9842F043, 0xB5049368,
+    0x98B93828, 0xB461FC70,
+    0x99307EE0, 0xB3C0200C,
+    0x99A8C344, 0xB31EFFCB,
+    0x9A22042C, 0xB27E9D3B,
+    0x9A9C406D, 0xB1DEF9E8,
+    0x9B1776D9, 0xB140175B,
+    0x9B93A640, 0xB0A1F71C,
+    0x9C10CD70, 0xB0049AB2,
+    0x9C8EEB33, 0xAF6803A1,
+    0x9D0DFE53, 0xAECC336B,
+    0x9D8E0596, 0xAE312B91,
+    0x9E0EFFC1, 0xAD96ED91,
+    0x9E90EB94, 0xACFD7AE8,
+    0x9F13C7D0, 0xAC64D510,
+    0x9F979331, 0xABCCFD82,
+    0xA01C4C72, 0xAB35F5B5,
+    0xA0A1F24C, 0xAA9FBF1D,
+    0xA1288376, 0xAA0A5B2D,
+    0xA1AFFEA2, 0xA975CB56,
+    0xA2386283, 0xA8E21106,
+    0xA2C1ADC9, 0xA84F2DA9,
+    0xA34BDF20, 0xA7BD22AB,
+    0xA3D6F533, 0xA72BF173,
+    0xA462EEAC, 0xA69B9B68,
+    0xA4EFCA31, 0xA60C21ED,
+    0xA57D8666, 0xA57D8666,
+    0xA60C21ED, 0xA4EFCA31,
+    0xA69B9B68, 0xA462EEAC,
+    0xA72BF173, 0xA3D6F533,
+    0xA7BD22AB, 0xA34BDF20,
+    0xA84F2DA9, 0xA2C1ADC9,
+    0xA8E21106, 0xA2386283,
+    0xA975CB56, 0xA1AFFEA2,
+    0xAA0A5B2D, 0xA1288376,
+    0xAA9FBF1D, 0xA0A1F24C,
+    0xAB35F5B5, 0xA01C4C72,
+    0xABCCFD82, 0x9F979331,
+    0xAC64D510, 0x9F13C7D0,
+    0xACFD7AE8, 0x9E90EB94,
+    0xAD96ED91, 0x9E0EFFC1,
+    0xAE312B91, 0x9D8E0596,
+    0xAECC336B, 0x9D0DFE53,
+    0xAF6803A1, 0x9C8EEB33,
+    0xB0049AB2, 0x9C10CD70,
+    0xB0A1F71C, 0x9B93A640,
+    0xB140175B, 0x9B1776D9,
+    0xB1DEF9E8, 0x9A9C406D,
+    0xB27E9D3B, 0x9A22042C,
+    0xB31EFFCB, 0x99A8C344,
+    0xB3C0200C, 0x99307EE0,
+    0xB461FC70, 0x98B93828,
+    0xB5049368, 0x9842F043,
+    0xB5A7E362, 0x97CDA855,
+    0xB64BEACC, 0x9759617E,
+    0xB6F0A811, 0x96E61CDF,
+    0xB796199B, 0x9673DB94,
+    0xB83C3DD1, 0x96029EB5,
+    0xB8E31319, 0x9592675B,
+    0xB98A97D8, 0x9523369B,
+    0xBA32CA70, 0x94B50D87,
+    0xBADBA943, 0x9447ED2F,
+    0xBB8532AF, 0x93DBD69F,
+    0xBC2F6513, 0x9370CAE4,
+    0xBCDA3ECA, 0x9306CB04,
+    0xBD85BE2F, 0x929DD805,
+    0xBE31E19B, 0x9235F2EB,
+    0xBEDEA765, 0x91CF1CB6,
+    0xBF8C0DE2, 0x91695663,
+    0xC03A1368, 0x9104A0ED,
+    0xC0E8B648, 0x90A0FD4E,
+    0xC197F4D3, 0x903E6C7A,
+    0xC247CD5A, 0x8FDCEF66,
+    0xC2F83E2A, 0x8F7C8701,
+    0xC3A9458F, 0x8F1D343A,
+    0xC45AE1D7, 0x8EBEF7FB,
+    0xC50D1148, 0x8E61D32D,
+    0xC5BFD22E, 0x8E05C6B7,
+    0xC67322CD, 0x8DAAD37B,
+    0xC727016C, 0x8D50FA59,
+    0xC7DB6C50, 0x8CF83C30,
+    0xC89061BA, 0x8CA099D9,
+    0xC945DFEC, 0x8C4A142F,
+    0xC9FBE527, 0x8BF4AC05,
+    0xCAB26FA9, 0x8BA0622F,
+    0xCB697DB0, 0x8B4D377C,
+    0xCC210D78, 0x8AFB2CBA,
+    0xCCD91D3D, 0x8AAA42B4,
+    0xCD91AB38, 0x8A5A7A30,
+    0xCE4AB5A2, 0x8A0BD3F5,
+    0xCF043AB2, 0x89BE50C3,
+    0xCFBE389F, 0x8971F15A,
+    0xD078AD9D, 0x8926B677,
+    0xD13397E1, 0x88DCA0D3,
+    0xD1EEF59E, 0x8893B124,
+    0xD2AAC504, 0x884BE820,
+    0xD3670445, 0x88054677,
+    0xD423B190, 0x87BFCCD7,
+    0xD4E0CB14, 0x877B7BEC,
+    0xD59E4EFE, 0x8738545E,
+    0xD65C3B7B, 0x86F656D3,
+    0xD71A8EB5, 0x86B583EE,
+    0xD7D946D7, 0x8675DC4E,
+    0xD898620C, 0x86376092,
+    0xD957DE7A, 0x85FA1152,
+    0xDA17BA4A, 0x85BDEF27,
+    0xDAD7F3A2, 0x8582FAA4,
+    0xDB9888A8, 0x8549345C,
+    0xDC597781, 0x85109CDC,
+    0xDD1ABE51, 0x84D934B0,
+    0xDDDC5B3A, 0x84A2FC62,
+    0xDE9E4C60, 0x846DF476,
+    0xDF608FE3, 0x843A1D70,
+    0xE02323E5, 0x840777CF,
+    0xE0E60684, 0x83D60411,
+    0xE1A935E1, 0x83A5C2B0,
+    0xE26CB01A, 0x8376B422,
+    0xE330734C, 0x8348D8DB,
+    0xE3F47D95, 0x831C314E,
+    0xE4B8CD10, 0x82F0BDE8,
+    0xE57D5FDA, 0x82C67F13,
+    0xE642340D, 0x829D753A,
+    0xE70747C3, 0x8275A0C0,
+    0xE7CC9917, 0x824F0208,
+    0xE8922621, 0x82299971,
+    0xE957ECFB, 0x82056758,
+    0xEA1DEBBB, 0x81E26C16,
+    0xEAE4207A, 0x81C0A801,
+    0xEBAA894E, 0x81A01B6C,
+    0xEC71244F, 0x8180C6A9,
+    0xED37EF91, 0x8162AA03,
+    0xEDFEE92B, 0x8145C5C6,
+    0xEEC60F31, 0x812A1A39,
+    0xEF8D5FB8, 0x810FA7A0,
+    0xF054D8D4, 0x80F66E3C,
+    0xF11C789A, 0x80DE6E4C,
+    0xF1E43D1C, 0x80C7A80A,
+    0xF2AC246D, 0x80B21BAF,
+    0xF3742CA1, 0x809DC970,
+    0xF43C53CA, 0x808AB180,
+    0xF50497FA, 0x8078D40D,
+    0xF5CCF743, 0x80683143,
+    0xF6956FB6, 0x8058C94C,
+    0xF75DFF65, 0x804A9C4D,
+    0xF826A461, 0x803DAA69,
+    0xF8EF5CBB, 0x8031F3C1,
+    0xF9B82683, 0x80277872,
+    0xFA80FFCB, 0x801E3894,
+    0xFB49E6A2, 0x80163440,
+    0xFC12D919, 0x800F6B88,
+    0xFCDBD541, 0x8009DE7D,
+    0xFDA4D928, 0x80058D2E,
+    0xFE6DE2E0, 0x800277A5,
+    0xFF36F078, 0x80009DE9
+};
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 2048	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_2048_q31[3072] = {
+    0x7FFFFFFF, 0x00000000,
+    0x7FFFD885, 0x006487E3,
+    0x7FFF6216, 0x00C90F88,
+    0x7FFE9CB2, 0x012D96B0,
+    0x7FFD885A, 0x01921D1F,
+    0x7FFC250F, 0x01F6A296,
+    0x7FFA72D1, 0x025B26D7,
+    0x7FF871A1, 0x02BFA9A4,
+    0x7FF62182, 0x03242ABF,
+    0x7FF38273, 0x0388A9E9,
+    0x7FF09477, 0x03ED26E6,
+    0x7FED5790, 0x0451A176,
+    0x7FE9CBC0, 0x04B6195D,
+    0x7FE5F108, 0x051A8E5C,
+    0x7FE1C76B, 0x057F0034,
+    0x7FDD4EEC, 0x05E36EA9,
+    0x7FD8878D, 0x0647D97C,
+    0x7FD37152, 0x06AC406F,
+    0x7FCE0C3E, 0x0710A344,
+    0x7FC85853, 0x077501BE,
+    0x7FC25596, 0x07D95B9E,
+    0x7FBC040A, 0x083DB0A7,
+    0x7FB563B2, 0x08A2009A,
+    0x7FAE7494, 0x09064B3A,
+    0x7FA736B4, 0x096A9049,
+    0x7F9FAA15, 0x09CECF89,
+    0x7F97CEBC, 0x0A3308BC,
+    0x7F8FA4AF, 0x0A973BA5,
+    0x7F872BF3, 0x0AFB6805,
+    0x7F7E648B, 0x0B5F8D9F,
+    0x7F754E7F, 0x0BC3AC35,
+    0x7F6BE9D4, 0x0C27C389,
+    0x7F62368F, 0x0C8BD35E,
+    0x7F5834B6, 0x0CEFDB75,
+    0x7F4DE450, 0x0D53DB92,
+    0x7F434563, 0x0DB7D376,
+    0x7F3857F5, 0x0E1BC2E3,
+    0x7F2D1C0E, 0x0E7FA99D,
+    0x7F2191B4, 0x0EE38765,
+    0x7F15B8EE, 0x0F475BFE,
+    0x7F0991C3, 0x0FAB272B,
+    0x7EFD1C3C, 0x100EE8AD,
+    0x7EF0585F, 0x1072A047,
+    0x7EE34635, 0x10D64DBC,
+    0x7ED5E5C6, 0x1139F0CE,
+    0x7EC8371A, 0x119D8940,
+    0x7EBA3A39, 0x120116D4,
+    0x7EABEF2C, 0x1264994E,
+    0x7E9D55FC, 0x12C8106E,
+    0x7E8E6EB1, 0x132B7BF9,
+    0x7E7F3956, 0x138EDBB0,
+    0x7E6FB5F3, 0x13F22F57,
+    0x7E5FE493, 0x145576B1,
+    0x7E4FC53E, 0x14B8B17F,
+    0x7E3F57FE, 0x151BDF85,
+    0x7E2E9CDF, 0x157F0086,
+    0x7E1D93E9, 0x15E21444,
+    0x7E0C3D29, 0x16451A83,
+    0x7DFA98A7, 0x16A81305,
+    0x7DE8A670, 0x170AFD8D,
+    0x7DD6668E, 0x176DD9DE,
+    0x7DC3D90D, 0x17D0A7BB,
+    0x7DB0FDF7, 0x183366E8,
+    0x7D9DD55A, 0x18961727,
+    0x7D8A5F3F, 0x18F8B83C,
+    0x7D769BB5, 0x195B49E9,
+    0x7D628AC5, 0x19BDCBF2,
+    0x7D4E2C7E, 0x1A203E1B,
+    0x7D3980EC, 0x1A82A025,
+    0x7D24881A, 0x1AE4F1D6,
+    0x7D0F4218, 0x1B4732EF,
+    0x7CF9AEF0, 0x1BA96334,
+    0x7CE3CEB1, 0x1C0B826A,
+    0x7CCDA168, 0x1C6D9053,
+    0x7CB72724, 0x1CCF8CB3,
+    0x7CA05FF1, 0x1D31774D,
+    0x7C894BDD, 0x1D934FE5,
+    0x7C71EAF8, 0x1DF5163F,
+    0x7C5A3D4F, 0x1E56CA1E,
+    0x7C4242F2, 0x1EB86B46,
+    0x7C29FBEE, 0x1F19F97B,
+    0x7C116853, 0x1F7B7480,
+    0x7BF88830, 0x1FDCDC1A,
+    0x7BDF5B94, 0x203E300D,
+    0x7BC5E28F, 0x209F701C,
+    0x7BAC1D31, 0x21009C0B,
+    0x7B920B89, 0x2161B39F,
+    0x7B77ADA8, 0x21C2B69C,
+    0x7B5D039D, 0x2223A4C5,
+    0x7B420D7A, 0x22847DDF,
+    0x7B26CB4F, 0x22E541AE,
+    0x7B0B3D2C, 0x2345EFF7,
+    0x7AEF6323, 0x23A6887E,
+    0x7AD33D45, 0x24070B07,
+    0x7AB6CBA3, 0x24677757,
+    0x7A9A0E4F, 0x24C7CD32,
+    0x7A7D055B, 0x25280C5D,
+    0x7A5FB0D8, 0x2588349D,
+    0x7A4210D8, 0x25E845B5,
+    0x7A24256E, 0x26483F6C,
+    0x7A05EEAD, 0x26A82185,
+    0x79E76CA6, 0x2707EBC6,
+    0x79C89F6D, 0x27679DF4,
+    0x79A98715, 0x27C737D2,
+    0x798A23B1, 0x2826B928,
+    0x796A7554, 0x288621B9,
+    0x794A7C11, 0x28E5714A,
+    0x792A37FE, 0x2944A7A2,
+    0x7909A92C, 0x29A3C484,
+    0x78E8CFB1, 0x2A02C7B8,
+    0x78C7ABA1, 0x2A61B101,
+    0x78A63D10, 0x2AC08025,
+    0x78848413, 0x2B1F34EB,
+    0x786280BF, 0x2B7DCF17,
+    0x78403328, 0x2BDC4E6F,
+    0x781D9B64, 0x2C3AB2B9,
+    0x77FAB988, 0x2C98FBBA,
+    0x77D78DAA, 0x2CF72939,
+    0x77B417DF, 0x2D553AFB,
+    0x7790583D, 0x2DB330C7,
+    0x776C4EDB, 0x2E110A62,
+    0x7747FBCE, 0x2E6EC792,
+    0x77235F2D, 0x2ECC681E,
+    0x76FE790E, 0x2F29EBCC,
+    0x76D94988, 0x2F875262,
+    0x76B3D0B3, 0x2FE49BA6,
+    0x768E0EA5, 0x3041C760,
+    0x76680376, 0x309ED555,
+    0x7641AF3C, 0x30FBC54D,
+    0x761B1211, 0x3158970D,
+    0x75F42C0A, 0x31B54A5D,
+    0x75CCFD42, 0x3211DF03,
+    0x75A585CF, 0x326E54C7,
+    0x757DC5CA, 0x32CAAB6F,
+    0x7555BD4B, 0x3326E2C2,
+    0x752D6C6C, 0x3382FA88,
+    0x7504D345, 0x33DEF287,
+    0x74DBF1EF, 0x343ACA87,
+    0x74B2C883, 0x3496824F,
+    0x7489571B, 0x34F219A7,
+    0x745F9DD1, 0x354D9056,
+    0x74359CBD, 0x35A8E624,
+    0x740B53FA, 0x36041AD9,
+    0x73E0C3A3, 0x365F2E3B,
+    0x73B5EBD0, 0x36BA2013,
+    0x738ACC9E, 0x3714F02A,
+    0x735F6626, 0x376F9E46,
+    0x7333B883, 0x37CA2A30,
+    0x7307C3D0, 0x382493B0,
+    0x72DB8828, 0x387EDA8E,
+    0x72AF05A6, 0x38D8FE93,
+    0x72823C66, 0x3932FF87,
+    0x72552C84, 0x398CDD32,
+    0x7227D61C, 0x39E6975D,
+    0x71FA3948, 0x3A402DD1,
+    0x71CC5626, 0x3A99A057,
+    0x719E2CD2, 0x3AF2EEB7,
+    0x716FBD68, 0x3B4C18BA,
+    0x71410804, 0x3BA51E29,
+    0x71120CC5, 0x3BFDFECD,
+    0x70E2CBC6, 0x3C56BA70,
+    0x70B34524, 0x3CAF50DA,
+    0x708378FE, 0x3D07C1D5,
+    0x70536771, 0x3D600D2B,
+    0x70231099, 0x3DB832A5,
+    0x6FF27496, 0x3E10320D,
+    0x6FC19385, 0x3E680B2C,
+    0x6F906D84, 0x3EBFBDCC,
+    0x6F5F02B1, 0x3F1749B7,
+    0x6F2D532C, 0x3F6EAEB8,
+    0x6EFB5F12, 0x3FC5EC97,
+    0x6EC92682, 0x401D0320,
+    0x6E96A99C, 0x4073F21D,
+    0x6E63E87F, 0x40CAB957,
+    0x6E30E349, 0x4121589A,
+    0x6DFD9A1B, 0x4177CFB0,
+    0x6DCA0D14, 0x41CE1E64,
+    0x6D963C54, 0x42244480,
+    0x6D6227FA, 0x427A41D0,
+    0x6D2DD027, 0x42D0161E,
+    0x6CF934FB, 0x4325C135,
+    0x6CC45697, 0x437B42E1,
+    0x6C8F351C, 0x43D09AEC,
+    0x6C59D0A9, 0x4425C923,
+    0x6C242960, 0x447ACD50,
+    0x6BEE3F62, 0x44CFA73F,
+    0x6BB812D0, 0x452456BC,
+    0x6B81A3CD, 0x4578DB93,
+    0x6B4AF278, 0x45CD358F,
+    0x6B13FEF5, 0x4621647C,
+    0x6ADCC964, 0x46756827,
+    0x6AA551E8, 0x46C9405C,
+    0x6A6D98A4, 0x471CECE6,
+    0x6A359DB9, 0x47706D93,
+    0x69FD614A, 0x47C3C22E,
+    0x69C4E37A, 0x4816EA85,
+    0x698C246C, 0x4869E664,
+    0x69532442, 0x48BCB598,
+    0x6919E320, 0x490F57EE,
+    0x68E06129, 0x4961CD32,
+    0x68A69E81, 0x49B41533,
+    0x686C9B4B, 0x4A062FBD,
+    0x683257AA, 0x4A581C9D,
+    0x67F7D3C4, 0x4AA9DBA1,
+    0x67BD0FBC, 0x4AFB6C97,
+    0x67820BB6, 0x4B4CCF4D,
+    0x6746C7D7, 0x4B9E038F,
+    0x670B4443, 0x4BEF092D,
+    0x66CF811F, 0x4C3FDFF3,
+    0x66937E90, 0x4C9087B1,
+    0x66573CBB, 0x4CE10034,
+    0x661ABBC5, 0x4D31494B,
+    0x65DDFBD3, 0x4D8162C4,
+    0x65A0FD0B, 0x4DD14C6E,
+    0x6563BF92, 0x4E210617,
+    0x6526438E, 0x4E708F8F,
+    0x64E88926, 0x4EBFE8A4,
+    0x64AA907F, 0x4F0F1126,
+    0x646C59BF, 0x4F5E08E3,
+    0x642DE50D, 0x4FACCFAB,
+    0x63EF328F, 0x4FFB654D,
+    0x63B0426D, 0x5049C999,
+    0x637114CC, 0x5097FC5E,
+    0x6331A9D4, 0x50E5FD6C,
+    0x62F201AC, 0x5133CC94,
+    0x62B21C7B, 0x518169A4,
+    0x6271FA69, 0x51CED46E,
+    0x62319B9D, 0x521C0CC1,
+    0x61F1003E, 0x5269126E,
+    0x61B02876, 0x52B5E545,
+    0x616F146B, 0x53028517,
+    0x612DC446, 0x534EF1B5,
+    0x60EC3830, 0x539B2AEF,
+    0x60AA704F, 0x53E73097,
+    0x60686CCE, 0x5433027D,
+    0x60262DD5, 0x547EA073,
+    0x5FE3B38D, 0x54CA0A4A,
+    0x5FA0FE1E, 0x55153FD4,
+    0x5F5E0DB3, 0x556040E2,
+    0x5F1AE273, 0x55AB0D46,
+    0x5ED77C89, 0x55F5A4D2,
+    0x5E93DC1F, 0x56400757,
+    0x5E50015D, 0x568A34A9,
+    0x5E0BEC6E, 0x56D42C99,
+    0x5DC79D7C, 0x571DEEF9,
+    0x5D8314B0, 0x57677B9D,
+    0x5D3E5236, 0x57B0D256,
+    0x5CF95638, 0x57F9F2F7,
+    0x5CB420DF, 0x5842DD54,
+    0x5C6EB258, 0x588B913F,
+    0x5C290ACC, 0x58D40E8C,
+    0x5BE32A67, 0x591C550E,
+    0x5B9D1153, 0x59646497,
+    0x5B56BFBD, 0x59AC3CFD,
+    0x5B1035CF, 0x59F3DE12,
+    0x5AC973B4, 0x5A3B47AA,
+    0x5A82799A, 0x5A82799A,
+    0x5A3B47AA, 0x5AC973B4,
+    0x59F3DE12, 0x5B1035CF,
+    0x59AC3CFD, 0x5B56BFBD,
+    0x59646497, 0x5B9D1153,
+    0x591C550E, 0x5BE32A67,
+    0x58D40E8C, 0x5C290ACC,
+    0x588B913F, 0x5C6EB258,
+    0x5842DD54, 0x5CB420DF,
+    0x57F9F2F7, 0x5CF95638,
+    0x57B0D256, 0x5D3E5236,
+    0x57677B9D, 0x5D8314B0,
+    0x571DEEF9, 0x5DC79D7C,
+    0x56D42C99, 0x5E0BEC6E,
+    0x568A34A9, 0x5E50015D,
+    0x56400757, 0x5E93DC1F,
+    0x55F5A4D2, 0x5ED77C89,
+    0x55AB0D46, 0x5F1AE273,
+    0x556040E2, 0x5F5E0DB3,
+    0x55153FD4, 0x5FA0FE1E,
+    0x54CA0A4A, 0x5FE3B38D,
+    0x547EA073, 0x60262DD5,
+    0x5433027D, 0x60686CCE,
+    0x53E73097, 0x60AA704F,
+    0x539B2AEF, 0x60EC3830,
+    0x534EF1B5, 0x612DC446,
+    0x53028517, 0x616F146B,
+    0x52B5E545, 0x61B02876,
+    0x5269126E, 0x61F1003E,
+    0x521C0CC1, 0x62319B9D,
+    0x51CED46E, 0x6271FA69,
+    0x518169A4, 0x62B21C7B,
+    0x5133CC94, 0x62F201AC,
+    0x50E5FD6C, 0x6331A9D4,
+    0x5097FC5E, 0x637114CC,
+    0x5049C999, 0x63B0426D,
+    0x4FFB654D, 0x63EF328F,
+    0x4FACCFAB, 0x642DE50D,
+    0x4F5E08E3, 0x646C59BF,
+    0x4F0F1126, 0x64AA907F,
+    0x4EBFE8A4, 0x64E88926,
+    0x4E708F8F, 0x6526438E,
+    0x4E210617, 0x6563BF92,
+    0x4DD14C6E, 0x65A0FD0B,
+    0x4D8162C4, 0x65DDFBD3,
+    0x4D31494B, 0x661ABBC5,
+    0x4CE10034, 0x66573CBB,
+    0x4C9087B1, 0x66937E90,
+    0x4C3FDFF3, 0x66CF811F,
+    0x4BEF092D, 0x670B4443,
+    0x4B9E038F, 0x6746C7D7,
+    0x4B4CCF4D, 0x67820BB6,
+    0x4AFB6C97, 0x67BD0FBC,
+    0x4AA9DBA1, 0x67F7D3C4,
+    0x4A581C9D, 0x683257AA,
+    0x4A062FBD, 0x686C9B4B,
+    0x49B41533, 0x68A69E81,
+    0x4961CD32, 0x68E06129,
+    0x490F57EE, 0x6919E320,
+    0x48BCB598, 0x69532442,
+    0x4869E664, 0x698C246C,
+    0x4816EA85, 0x69C4E37A,
+    0x47C3C22E, 0x69FD614A,
+    0x47706D93, 0x6A359DB9,
+    0x471CECE6, 0x6A6D98A4,
+    0x46C9405C, 0x6AA551E8,
+    0x46756827, 0x6ADCC964,
+    0x4621647C, 0x6B13FEF5,
+    0x45CD358F, 0x6B4AF278,
+    0x4578DB93, 0x6B81A3CD,
+    0x452456BC, 0x6BB812D0,
+    0x44CFA73F, 0x6BEE3F62,
+    0x447ACD50, 0x6C242960,
+    0x4425C923, 0x6C59D0A9,
+    0x43D09AEC, 0x6C8F351C,
+    0x437B42E1, 0x6CC45697,
+    0x4325C135, 0x6CF934FB,
+    0x42D0161E, 0x6D2DD027,
+    0x427A41D0, 0x6D6227FA,
+    0x42244480, 0x6D963C54,
+    0x41CE1E64, 0x6DCA0D14,
+    0x4177CFB0, 0x6DFD9A1B,
+    0x4121589A, 0x6E30E349,
+    0x40CAB957, 0x6E63E87F,
+    0x4073F21D, 0x6E96A99C,
+    0x401D0320, 0x6EC92682,
+    0x3FC5EC97, 0x6EFB5F12,
+    0x3F6EAEB8, 0x6F2D532C,
+    0x3F1749B7, 0x6F5F02B1,
+    0x3EBFBDCC, 0x6F906D84,
+    0x3E680B2C, 0x6FC19385,
+    0x3E10320D, 0x6FF27496,
+    0x3DB832A5, 0x70231099,
+    0x3D600D2B, 0x70536771,
+    0x3D07C1D5, 0x708378FE,
+    0x3CAF50DA, 0x70B34524,
+    0x3C56BA70, 0x70E2CBC6,
+    0x3BFDFECD, 0x71120CC5,
+    0x3BA51E29, 0x71410804,
+    0x3B4C18BA, 0x716FBD68,
+    0x3AF2EEB7, 0x719E2CD2,
+    0x3A99A057, 0x71CC5626,
+    0x3A402DD1, 0x71FA3948,
+    0x39E6975D, 0x7227D61C,
+    0x398CDD32, 0x72552C84,
+    0x3932FF87, 0x72823C66,
+    0x38D8FE93, 0x72AF05A6,
+    0x387EDA8E, 0x72DB8828,
+    0x382493B0, 0x7307C3D0,
+    0x37CA2A30, 0x7333B883,
+    0x376F9E46, 0x735F6626,
+    0x3714F02A, 0x738ACC9E,
+    0x36BA2013, 0x73B5EBD0,
+    0x365F2E3B, 0x73E0C3A3,
+    0x36041AD9, 0x740B53FA,
+    0x35A8E624, 0x74359CBD,
+    0x354D9056, 0x745F9DD1,
+    0x34F219A7, 0x7489571B,
+    0x3496824F, 0x74B2C883,
+    0x343ACA87, 0x74DBF1EF,
+    0x33DEF287, 0x7504D345,
+    0x3382FA88, 0x752D6C6C,
+    0x3326E2C2, 0x7555BD4B,
+    0x32CAAB6F, 0x757DC5CA,
+    0x326E54C7, 0x75A585CF,
+    0x3211DF03, 0x75CCFD42,
+    0x31B54A5D, 0x75F42C0A,
+    0x3158970D, 0x761B1211,
+    0x30FBC54D, 0x7641AF3C,
+    0x309ED555, 0x76680376,
+    0x3041C760, 0x768E0EA5,
+    0x2FE49BA6, 0x76B3D0B3,
+    0x2F875262, 0x76D94988,
+    0x2F29EBCC, 0x76FE790E,
+    0x2ECC681E, 0x77235F2D,
+    0x2E6EC792, 0x7747FBCE,
+    0x2E110A62, 0x776C4EDB,
+    0x2DB330C7, 0x7790583D,
+    0x2D553AFB, 0x77B417DF,
+    0x2CF72939, 0x77D78DAA,
+    0x2C98FBBA, 0x77FAB988,
+    0x2C3AB2B9, 0x781D9B64,
+    0x2BDC4E6F, 0x78403328,
+    0x2B7DCF17, 0x786280BF,
+    0x2B1F34EB, 0x78848413,
+    0x2AC08025, 0x78A63D10,
+    0x2A61B101, 0x78C7ABA1,
+    0x2A02C7B8, 0x78E8CFB1,
+    0x29A3C484, 0x7909A92C,
+    0x2944A7A2, 0x792A37FE,
+    0x28E5714A, 0x794A7C11,
+    0x288621B9, 0x796A7554,
+    0x2826B928, 0x798A23B1,
+    0x27C737D2, 0x79A98715,
+    0x27679DF4, 0x79C89F6D,
+    0x2707EBC6, 0x79E76CA6,
+    0x26A82185, 0x7A05EEAD,
+    0x26483F6C, 0x7A24256E,
+    0x25E845B5, 0x7A4210D8,
+    0x2588349D, 0x7A5FB0D8,
+    0x25280C5D, 0x7A7D055B,
+    0x24C7CD32, 0x7A9A0E4F,
+    0x24677757, 0x7AB6CBA3,
+    0x24070B07, 0x7AD33D45,
+    0x23A6887E, 0x7AEF6323,
+    0x2345EFF7, 0x7B0B3D2C,
+    0x22E541AE, 0x7B26CB4F,
+    0x22847DDF, 0x7B420D7A,
+    0x2223A4C5, 0x7B5D039D,
+    0x21C2B69C, 0x7B77ADA8,
+    0x2161B39F, 0x7B920B89,
+    0x21009C0B, 0x7BAC1D31,
+    0x209F701C, 0x7BC5E28F,
+    0x203E300D, 0x7BDF5B94,
+    0x1FDCDC1A, 0x7BF88830,
+    0x1F7B7480, 0x7C116853,
+    0x1F19F97B, 0x7C29FBEE,
+    0x1EB86B46, 0x7C4242F2,
+    0x1E56CA1E, 0x7C5A3D4F,
+    0x1DF5163F, 0x7C71EAF8,
+    0x1D934FE5, 0x7C894BDD,
+    0x1D31774D, 0x7CA05FF1,
+    0x1CCF8CB3, 0x7CB72724,
+    0x1C6D9053, 0x7CCDA168,
+    0x1C0B826A, 0x7CE3CEB1,
+    0x1BA96334, 0x7CF9AEF0,
+    0x1B4732EF, 0x7D0F4218,
+    0x1AE4F1D6, 0x7D24881A,
+    0x1A82A025, 0x7D3980EC,
+    0x1A203E1B, 0x7D4E2C7E,
+    0x19BDCBF2, 0x7D628AC5,
+    0x195B49E9, 0x7D769BB5,
+    0x18F8B83C, 0x7D8A5F3F,
+    0x18961727, 0x7D9DD55A,
+    0x183366E8, 0x7DB0FDF7,
+    0x17D0A7BB, 0x7DC3D90D,
+    0x176DD9DE, 0x7DD6668E,
+    0x170AFD8D, 0x7DE8A670,
+    0x16A81305, 0x7DFA98A7,
+    0x16451A83, 0x7E0C3D29,
+    0x15E21444, 0x7E1D93E9,
+    0x157F0086, 0x7E2E9CDF,
+    0x151BDF85, 0x7E3F57FE,
+    0x14B8B17F, 0x7E4FC53E,
+    0x145576B1, 0x7E5FE493,
+    0x13F22F57, 0x7E6FB5F3,
+    0x138EDBB0, 0x7E7F3956,
+    0x132B7BF9, 0x7E8E6EB1,
+    0x12C8106E, 0x7E9D55FC,
+    0x1264994E, 0x7EABEF2C,
+    0x120116D4, 0x7EBA3A39,
+    0x119D8940, 0x7EC8371A,
+    0x1139F0CE, 0x7ED5E5C6,
+    0x10D64DBC, 0x7EE34635,
+    0x1072A047, 0x7EF0585F,
+    0x100EE8AD, 0x7EFD1C3C,
+    0x0FAB272B, 0x7F0991C3,
+    0x0F475BFE, 0x7F15B8EE,
+    0x0EE38765, 0x7F2191B4,
+    0x0E7FA99D, 0x7F2D1C0E,
+    0x0E1BC2E3, 0x7F3857F5,
+    0x0DB7D376, 0x7F434563,
+    0x0D53DB92, 0x7F4DE450,
+    0x0CEFDB75, 0x7F5834B6,
+    0x0C8BD35E, 0x7F62368F,
+    0x0C27C389, 0x7F6BE9D4,
+    0x0BC3AC35, 0x7F754E7F,
+    0x0B5F8D9F, 0x7F7E648B,
+    0x0AFB6805, 0x7F872BF3,
+    0x0A973BA5, 0x7F8FA4AF,
+    0x0A3308BC, 0x7F97CEBC,
+    0x09CECF89, 0x7F9FAA15,
+    0x096A9049, 0x7FA736B4,
+    0x09064B3A, 0x7FAE7494,
+    0x08A2009A, 0x7FB563B2,
+    0x083DB0A7, 0x7FBC040A,
+    0x07D95B9E, 0x7FC25596,
+    0x077501BE, 0x7FC85853,
+    0x0710A344, 0x7FCE0C3E,
+    0x06AC406F, 0x7FD37152,
+    0x0647D97C, 0x7FD8878D,
+    0x05E36EA9, 0x7FDD4EEC,
+    0x057F0034, 0x7FE1C76B,
+    0x051A8E5C, 0x7FE5F108,
+    0x04B6195D, 0x7FE9CBC0,
+    0x0451A176, 0x7FED5790,
+    0x03ED26E6, 0x7FF09477,
+    0x0388A9E9, 0x7FF38273,
+    0x03242ABF, 0x7FF62182,
+    0x02BFA9A4, 0x7FF871A1,
+    0x025B26D7, 0x7FFA72D1,
+    0x01F6A296, 0x7FFC250F,
+    0x01921D1F, 0x7FFD885A,
+    0x012D96B0, 0x7FFE9CB2,
+    0x00C90F88, 0x7FFF6216,
+    0x006487E3, 0x7FFFD885,
+    0x00000000, 0x7FFFFFFF,
+    0xFF9B781D, 0x7FFFD885,
+    0xFF36F078, 0x7FFF6216,
+    0xFED2694F, 0x7FFE9CB2,
+    0xFE6DE2E0, 0x7FFD885A,
+    0xFE095D69, 0x7FFC250F,
+    0xFDA4D928, 0x7FFA72D1,
+    0xFD40565B, 0x7FF871A1,
+    0xFCDBD541, 0x7FF62182,
+    0xFC775616, 0x7FF38273,
+    0xFC12D919, 0x7FF09477,
+    0xFBAE5E89, 0x7FED5790,
+    0xFB49E6A2, 0x7FE9CBC0,
+    0xFAE571A4, 0x7FE5F108,
+    0xFA80FFCB, 0x7FE1C76B,
+    0xFA1C9156, 0x7FDD4EEC,
+    0xF9B82683, 0x7FD8878D,
+    0xF953BF90, 0x7FD37152,
+    0xF8EF5CBB, 0x7FCE0C3E,
+    0xF88AFE41, 0x7FC85853,
+    0xF826A461, 0x7FC25596,
+    0xF7C24F58, 0x7FBC040A,
+    0xF75DFF65, 0x7FB563B2,
+    0xF6F9B4C5, 0x7FAE7494,
+    0xF6956FB6, 0x7FA736B4,
+    0xF6313076, 0x7F9FAA15,
+    0xF5CCF743, 0x7F97CEBC,
+    0xF568C45A, 0x7F8FA4AF,
+    0xF50497FA, 0x7F872BF3,
+    0xF4A07260, 0x7F7E648B,
+    0xF43C53CA, 0x7F754E7F,
+    0xF3D83C76, 0x7F6BE9D4,
+    0xF3742CA1, 0x7F62368F,
+    0xF310248A, 0x7F5834B6,
+    0xF2AC246D, 0x7F4DE450,
+    0xF2482C89, 0x7F434563,
+    0xF1E43D1C, 0x7F3857F5,
+    0xF1805662, 0x7F2D1C0E,
+    0xF11C789A, 0x7F2191B4,
+    0xF0B8A401, 0x7F15B8EE,
+    0xF054D8D4, 0x7F0991C3,
+    0xEFF11752, 0x7EFD1C3C,
+    0xEF8D5FB8, 0x7EF0585F,
+    0xEF29B243, 0x7EE34635,
+    0xEEC60F31, 0x7ED5E5C6,
+    0xEE6276BF, 0x7EC8371A,
+    0xEDFEE92B, 0x7EBA3A39,
+    0xED9B66B2, 0x7EABEF2C,
+    0xED37EF91, 0x7E9D55FC,
+    0xECD48406, 0x7E8E6EB1,
+    0xEC71244F, 0x7E7F3956,
+    0xEC0DD0A8, 0x7E6FB5F3,
+    0xEBAA894E, 0x7E5FE493,
+    0xEB474E80, 0x7E4FC53E,
+    0xEAE4207A, 0x7E3F57FE,
+    0xEA80FF79, 0x7E2E9CDF,
+    0xEA1DEBBB, 0x7E1D93E9,
+    0xE9BAE57C, 0x7E0C3D29,
+    0xE957ECFB, 0x7DFA98A7,
+    0xE8F50273, 0x7DE8A670,
+    0xE8922621, 0x7DD6668E,
+    0xE82F5844, 0x7DC3D90D,
+    0xE7CC9917, 0x7DB0FDF7,
+    0xE769E8D8, 0x7D9DD55A,
+    0xE70747C3, 0x7D8A5F3F,
+    0xE6A4B616, 0x7D769BB5,
+    0xE642340D, 0x7D628AC5,
+    0xE5DFC1E4, 0x7D4E2C7E,
+    0xE57D5FDA, 0x7D3980EC,
+    0xE51B0E2A, 0x7D24881A,
+    0xE4B8CD10, 0x7D0F4218,
+    0xE4569CCB, 0x7CF9AEF0,
+    0xE3F47D95, 0x7CE3CEB1,
+    0xE3926FAC, 0x7CCDA168,
+    0xE330734C, 0x7CB72724,
+    0xE2CE88B2, 0x7CA05FF1,
+    0xE26CB01A, 0x7C894BDD,
+    0xE20AE9C1, 0x7C71EAF8,
+    0xE1A935E1, 0x7C5A3D4F,
+    0xE14794B9, 0x7C4242F2,
+    0xE0E60684, 0x7C29FBEE,
+    0xE0848B7F, 0x7C116853,
+    0xE02323E5, 0x7BF88830,
+    0xDFC1CFF2, 0x7BDF5B94,
+    0xDF608FE3, 0x7BC5E28F,
+    0xDEFF63F4, 0x7BAC1D31,
+    0xDE9E4C60, 0x7B920B89,
+    0xDE3D4963, 0x7B77ADA8,
+    0xDDDC5B3A, 0x7B5D039D,
+    0xDD7B8220, 0x7B420D7A,
+    0xDD1ABE51, 0x7B26CB4F,
+    0xDCBA1008, 0x7B0B3D2C,
+    0xDC597781, 0x7AEF6323,
+    0xDBF8F4F8, 0x7AD33D45,
+    0xDB9888A8, 0x7AB6CBA3,
+    0xDB3832CD, 0x7A9A0E4F,
+    0xDAD7F3A2, 0x7A7D055B,
+    0xDA77CB62, 0x7A5FB0D8,
+    0xDA17BA4A, 0x7A4210D8,
+    0xD9B7C093, 0x7A24256E,
+    0xD957DE7A, 0x7A05EEAD,
+    0xD8F81439, 0x79E76CA6,
+    0xD898620C, 0x79C89F6D,
+    0xD838C82D, 0x79A98715,
+    0xD7D946D7, 0x798A23B1,
+    0xD779DE46, 0x796A7554,
+    0xD71A8EB5, 0x794A7C11,
+    0xD6BB585D, 0x792A37FE,
+    0xD65C3B7B, 0x7909A92C,
+    0xD5FD3847, 0x78E8CFB1,
+    0xD59E4EFE, 0x78C7ABA1,
+    0xD53F7FDA, 0x78A63D10,
+    0xD4E0CB14, 0x78848413,
+    0xD48230E8, 0x786280BF,
+    0xD423B190, 0x78403328,
+    0xD3C54D46, 0x781D9B64,
+    0xD3670445, 0x77FAB988,
+    0xD308D6C6, 0x77D78DAA,
+    0xD2AAC504, 0x77B417DF,
+    0xD24CCF38, 0x7790583D,
+    0xD1EEF59E, 0x776C4EDB,
+    0xD191386D, 0x7747FBCE,
+    0xD13397E1, 0x77235F2D,
+    0xD0D61433, 0x76FE790E,
+    0xD078AD9D, 0x76D94988,
+    0xD01B6459, 0x76B3D0B3,
+    0xCFBE389F, 0x768E0EA5,
+    0xCF612AAA, 0x76680376,
+    0xCF043AB2, 0x7641AF3C,
+    0xCEA768F2, 0x761B1211,
+    0xCE4AB5A2, 0x75F42C0A,
+    0xCDEE20FC, 0x75CCFD42,
+    0xCD91AB38, 0x75A585CF,
+    0xCD355490, 0x757DC5CA,
+    0xCCD91D3D, 0x7555BD4B,
+    0xCC7D0577, 0x752D6C6C,
+    0xCC210D78, 0x7504D345,
+    0xCBC53578, 0x74DBF1EF,
+    0xCB697DB0, 0x74B2C883,
+    0xCB0DE658, 0x7489571B,
+    0xCAB26FA9, 0x745F9DD1,
+    0xCA5719DB, 0x74359CBD,
+    0xC9FBE527, 0x740B53FA,
+    0xC9A0D1C4, 0x73E0C3A3,
+    0xC945DFEC, 0x73B5EBD0,
+    0xC8EB0FD6, 0x738ACC9E,
+    0xC89061BA, 0x735F6626,
+    0xC835D5D0, 0x7333B883,
+    0xC7DB6C50, 0x7307C3D0,
+    0xC7812571, 0x72DB8828,
+    0xC727016C, 0x72AF05A6,
+    0xC6CD0079, 0x72823C66,
+    0xC67322CD, 0x72552C84,
+    0xC61968A2, 0x7227D61C,
+    0xC5BFD22E, 0x71FA3948,
+    0xC5665FA8, 0x71CC5626,
+    0xC50D1148, 0x719E2CD2,
+    0xC4B3E746, 0x716FBD68,
+    0xC45AE1D7, 0x71410804,
+    0xC4020132, 0x71120CC5,
+    0xC3A9458F, 0x70E2CBC6,
+    0xC350AF25, 0x70B34524,
+    0xC2F83E2A, 0x708378FE,
+    0xC29FF2D4, 0x70536771,
+    0xC247CD5A, 0x70231099,
+    0xC1EFCDF2, 0x6FF27496,
+    0xC197F4D3, 0x6FC19385,
+    0xC1404233, 0x6F906D84,
+    0xC0E8B648, 0x6F5F02B1,
+    0xC0915147, 0x6F2D532C,
+    0xC03A1368, 0x6EFB5F12,
+    0xBFE2FCDF, 0x6EC92682,
+    0xBF8C0DE2, 0x6E96A99C,
+    0xBF3546A8, 0x6E63E87F,
+    0xBEDEA765, 0x6E30E349,
+    0xBE88304F, 0x6DFD9A1B,
+    0xBE31E19B, 0x6DCA0D14,
+    0xBDDBBB7F, 0x6D963C54,
+    0xBD85BE2F, 0x6D6227FA,
+    0xBD2FE9E1, 0x6D2DD027,
+    0xBCDA3ECA, 0x6CF934FB,
+    0xBC84BD1E, 0x6CC45697,
+    0xBC2F6513, 0x6C8F351C,
+    0xBBDA36DC, 0x6C59D0A9,
+    0xBB8532AF, 0x6C242960,
+    0xBB3058C0, 0x6BEE3F62,
+    0xBADBA943, 0x6BB812D0,
+    0xBA87246C, 0x6B81A3CD,
+    0xBA32CA70, 0x6B4AF278,
+    0xB9DE9B83, 0x6B13FEF5,
+    0xB98A97D8, 0x6ADCC964,
+    0xB936BFA3, 0x6AA551E8,
+    0xB8E31319, 0x6A6D98A4,
+    0xB88F926C, 0x6A359DB9,
+    0xB83C3DD1, 0x69FD614A,
+    0xB7E9157A, 0x69C4E37A,
+    0xB796199B, 0x698C246C,
+    0xB7434A67, 0x69532442,
+    0xB6F0A811, 0x6919E320,
+    0xB69E32CD, 0x68E06129,
+    0xB64BEACC, 0x68A69E81,
+    0xB5F9D042, 0x686C9B4B,
+    0xB5A7E362, 0x683257AA,
+    0xB556245E, 0x67F7D3C4,
+    0xB5049368, 0x67BD0FBC,
+    0xB4B330B2, 0x67820BB6,
+    0xB461FC70, 0x6746C7D7,
+    0xB410F6D2, 0x670B4443,
+    0xB3C0200C, 0x66CF811F,
+    0xB36F784E, 0x66937E90,
+    0xB31EFFCB, 0x66573CBB,
+    0xB2CEB6B5, 0x661ABBC5,
+    0xB27E9D3B, 0x65DDFBD3,
+    0xB22EB392, 0x65A0FD0B,
+    0xB1DEF9E8, 0x6563BF92,
+    0xB18F7070, 0x6526438E,
+    0xB140175B, 0x64E88926,
+    0xB0F0EEDA, 0x64AA907F,
+    0xB0A1F71C, 0x646C59BF,
+    0xB0533055, 0x642DE50D,
+    0xB0049AB2, 0x63EF328F,
+    0xAFB63667, 0x63B0426D,
+    0xAF6803A1, 0x637114CC,
+    0xAF1A0293, 0x6331A9D4,
+    0xAECC336B, 0x62F201AC,
+    0xAE7E965B, 0x62B21C7B,
+    0xAE312B91, 0x6271FA69,
+    0xADE3F33E, 0x62319B9D,
+    0xAD96ED91, 0x61F1003E,
+    0xAD4A1ABA, 0x61B02876,
+    0xACFD7AE8, 0x616F146B,
+    0xACB10E4A, 0x612DC446,
+    0xAC64D510, 0x60EC3830,
+    0xAC18CF68, 0x60AA704F,
+    0xABCCFD82, 0x60686CCE,
+    0xAB815F8C, 0x60262DD5,
+    0xAB35F5B5, 0x5FE3B38D,
+    0xAAEAC02B, 0x5FA0FE1E,
+    0xAA9FBF1D, 0x5F5E0DB3,
+    0xAA54F2B9, 0x5F1AE273,
+    0xAA0A5B2D, 0x5ED77C89,
+    0xA9BFF8A8, 0x5E93DC1F,
+    0xA975CB56, 0x5E50015D,
+    0xA92BD366, 0x5E0BEC6E,
+    0xA8E21106, 0x5DC79D7C,
+    0xA8988463, 0x5D8314B0,
+    0xA84F2DA9, 0x5D3E5236,
+    0xA8060D08, 0x5CF95638,
+    0xA7BD22AB, 0x5CB420DF,
+    0xA7746EC0, 0x5C6EB258,
+    0xA72BF173, 0x5C290ACC,
+    0xA6E3AAF2, 0x5BE32A67,
+    0xA69B9B68, 0x5B9D1153,
+    0xA653C302, 0x5B56BFBD,
+    0xA60C21ED, 0x5B1035CF,
+    0xA5C4B855, 0x5AC973B4,
+    0xA57D8666, 0x5A82799A,
+    0xA5368C4B, 0x5A3B47AA,
+    0xA4EFCA31, 0x59F3DE12,
+    0xA4A94042, 0x59AC3CFD,
+    0xA462EEAC, 0x59646497,
+    0xA41CD598, 0x591C550E,
+    0xA3D6F533, 0x58D40E8C,
+    0xA3914DA7, 0x588B913F,
+    0xA34BDF20, 0x5842DD54,
+    0xA306A9C7, 0x57F9F2F7,
+    0xA2C1ADC9, 0x57B0D256,
+    0xA27CEB4F, 0x57677B9D,
+    0xA2386283, 0x571DEEF9,
+    0xA1F41391, 0x56D42C99,
+    0xA1AFFEA2, 0x568A34A9,
+    0xA16C23E1, 0x56400757,
+    0xA1288376, 0x55F5A4D2,
+    0xA0E51D8C, 0x55AB0D46,
+    0xA0A1F24C, 0x556040E2,
+    0xA05F01E1, 0x55153FD4,
+    0xA01C4C72, 0x54CA0A4A,
+    0x9FD9D22A, 0x547EA073,
+    0x9F979331, 0x5433027D,
+    0x9F558FB0, 0x53E73097,
+    0x9F13C7D0, 0x539B2AEF,
+    0x9ED23BB9, 0x534EF1B5,
+    0x9E90EB94, 0x53028517,
+    0x9E4FD789, 0x52B5E545,
+    0x9E0EFFC1, 0x5269126E,
+    0x9DCE6462, 0x521C0CC1,
+    0x9D8E0596, 0x51CED46E,
+    0x9D4DE384, 0x518169A4,
+    0x9D0DFE53, 0x5133CC94,
+    0x9CCE562B, 0x50E5FD6C,
+    0x9C8EEB33, 0x5097FC5E,
+    0x9C4FBD92, 0x5049C999,
+    0x9C10CD70, 0x4FFB654D,
+    0x9BD21AF2, 0x4FACCFAB,
+    0x9B93A640, 0x4F5E08E3,
+    0x9B556F80, 0x4F0F1126,
+    0x9B1776D9, 0x4EBFE8A4,
+    0x9AD9BC71, 0x4E708F8F,
+    0x9A9C406D, 0x4E210617,
+    0x9A5F02F5, 0x4DD14C6E,
+    0x9A22042C, 0x4D8162C4,
+    0x99E5443A, 0x4D31494B,
+    0x99A8C344, 0x4CE10034,
+    0x996C816F, 0x4C9087B1,
+    0x99307EE0, 0x4C3FDFF3,
+    0x98F4BBBC, 0x4BEF092D,
+    0x98B93828, 0x4B9E038F,
+    0x987DF449, 0x4B4CCF4D,
+    0x9842F043, 0x4AFB6C97,
+    0x98082C3B, 0x4AA9DBA1,
+    0x97CDA855, 0x4A581C9D,
+    0x979364B5, 0x4A062FBD,
+    0x9759617E, 0x49B41533,
+    0x971F9ED6, 0x4961CD32,
+    0x96E61CDF, 0x490F57EE,
+    0x96ACDBBD, 0x48BCB598,
+    0x9673DB94, 0x4869E664,
+    0x963B1C85, 0x4816EA85,
+    0x96029EB5, 0x47C3C22E,
+    0x95CA6246, 0x47706D93,
+    0x9592675B, 0x471CECE6,
+    0x955AAE17, 0x46C9405C,
+    0x9523369B, 0x46756827,
+    0x94EC010B, 0x4621647C,
+    0x94B50D87, 0x45CD358F,
+    0x947E5C32, 0x4578DB93,
+    0x9447ED2F, 0x452456BC,
+    0x9411C09D, 0x44CFA73F,
+    0x93DBD69F, 0x447ACD50,
+    0x93A62F56, 0x4425C923,
+    0x9370CAE4, 0x43D09AEC,
+    0x933BA968, 0x437B42E1,
+    0x9306CB04, 0x4325C135,
+    0x92D22FD8, 0x42D0161E,
+    0x929DD805, 0x427A41D0,
+    0x9269C3AC, 0x42244480,
+    0x9235F2EB, 0x41CE1E64,
+    0x920265E4, 0x4177CFB0,
+    0x91CF1CB6, 0x4121589A,
+    0x919C1780, 0x40CAB957,
+    0x91695663, 0x4073F21D,
+    0x9136D97D, 0x401D0320,
+    0x9104A0ED, 0x3FC5EC97,
+    0x90D2ACD3, 0x3F6EAEB8,
+    0x90A0FD4E, 0x3F1749B7,
+    0x906F927B, 0x3EBFBDCC,
+    0x903E6C7A, 0x3E680B2C,
+    0x900D8B69, 0x3E10320D,
+    0x8FDCEF66, 0x3DB832A5,
+    0x8FAC988E, 0x3D600D2B,
+    0x8F7C8701, 0x3D07C1D5,
+    0x8F4CBADB, 0x3CAF50DA,
+    0x8F1D343A, 0x3C56BA70,
+    0x8EEDF33B, 0x3BFDFECD,
+    0x8EBEF7FB, 0x3BA51E29,
+    0x8E904298, 0x3B4C18BA,
+    0x8E61D32D, 0x3AF2EEB7,
+    0x8E33A9D9, 0x3A99A057,
+    0x8E05C6B7, 0x3A402DD1,
+    0x8DD829E4, 0x39E6975D,
+    0x8DAAD37B, 0x398CDD32,
+    0x8D7DC399, 0x3932FF87,
+    0x8D50FA59, 0x38D8FE93,
+    0x8D2477D8, 0x387EDA8E,
+    0x8CF83C30, 0x382493B0,
+    0x8CCC477D, 0x37CA2A30,
+    0x8CA099D9, 0x376F9E46,
+    0x8C753361, 0x3714F02A,
+    0x8C4A142F, 0x36BA2013,
+    0x8C1F3C5C, 0x365F2E3B,
+    0x8BF4AC05, 0x36041AD9,
+    0x8BCA6342, 0x35A8E624,
+    0x8BA0622F, 0x354D9056,
+    0x8B76A8E4, 0x34F219A7,
+    0x8B4D377C, 0x3496824F,
+    0x8B240E10, 0x343ACA87,
+    0x8AFB2CBA, 0x33DEF287,
+    0x8AD29393, 0x3382FA88,
+    0x8AAA42B4, 0x3326E2C2,
+    0x8A823A35, 0x32CAAB6F,
+    0x8A5A7A30, 0x326E54C7,
+    0x8A3302BD, 0x3211DF03,
+    0x8A0BD3F5, 0x31B54A5D,
+    0x89E4EDEE, 0x3158970D,
+    0x89BE50C3, 0x30FBC54D,
+    0x8997FC89, 0x309ED555,
+    0x8971F15A, 0x3041C760,
+    0x894C2F4C, 0x2FE49BA6,
+    0x8926B677, 0x2F875262,
+    0x890186F1, 0x2F29EBCC,
+    0x88DCA0D3, 0x2ECC681E,
+    0x88B80431, 0x2E6EC792,
+    0x8893B124, 0x2E110A62,
+    0x886FA7C2, 0x2DB330C7,
+    0x884BE820, 0x2D553AFB,
+    0x88287255, 0x2CF72939,
+    0x88054677, 0x2C98FBBA,
+    0x87E2649B, 0x2C3AB2B9,
+    0x87BFCCD7, 0x2BDC4E6F,
+    0x879D7F40, 0x2B7DCF17,
+    0x877B7BEC, 0x2B1F34EB,
+    0x8759C2EF, 0x2AC08025,
+    0x8738545E, 0x2A61B101,
+    0x8717304E, 0x2A02C7B8,
+    0x86F656D3, 0x29A3C484,
+    0x86D5C802, 0x2944A7A2,
+    0x86B583EE, 0x28E5714A,
+    0x86958AAB, 0x288621B9,
+    0x8675DC4E, 0x2826B928,
+    0x865678EA, 0x27C737D2,
+    0x86376092, 0x27679DF4,
+    0x86189359, 0x2707EBC6,
+    0x85FA1152, 0x26A82185,
+    0x85DBDA91, 0x26483F6C,
+    0x85BDEF27, 0x25E845B5,
+    0x85A04F28, 0x2588349D,
+    0x8582FAA4, 0x25280C5D,
+    0x8565F1B0, 0x24C7CD32,
+    0x8549345C, 0x24677757,
+    0x852CC2BA, 0x24070B07,
+    0x85109CDC, 0x23A6887E,
+    0x84F4C2D3, 0x2345EFF7,
+    0x84D934B0, 0x22E541AE,
+    0x84BDF285, 0x22847DDF,
+    0x84A2FC62, 0x2223A4C5,
+    0x84885257, 0x21C2B69C,
+    0x846DF476, 0x2161B39F,
+    0x8453E2CE, 0x21009C0B,
+    0x843A1D70, 0x209F701C,
+    0x8420A46B, 0x203E300D,
+    0x840777CF, 0x1FDCDC1A,
+    0x83EE97AC, 0x1F7B7480,
+    0x83D60411, 0x1F19F97B,
+    0x83BDBD0D, 0x1EB86B46,
+    0x83A5C2B0, 0x1E56CA1E,
+    0x838E1507, 0x1DF5163F,
+    0x8376B422, 0x1D934FE5,
+    0x835FA00E, 0x1D31774D,
+    0x8348D8DB, 0x1CCF8CB3,
+    0x83325E97, 0x1C6D9053,
+    0x831C314E, 0x1C0B826A,
+    0x8306510F, 0x1BA96334,
+    0x82F0BDE8, 0x1B4732EF,
+    0x82DB77E5, 0x1AE4F1D6,
+    0x82C67F13, 0x1A82A025,
+    0x82B1D381, 0x1A203E1B,
+    0x829D753A, 0x19BDCBF2,
+    0x8289644A, 0x195B49E9,
+    0x8275A0C0, 0x18F8B83C,
+    0x82622AA5, 0x18961727,
+    0x824F0208, 0x183366E8,
+    0x823C26F2, 0x17D0A7BB,
+    0x82299971, 0x176DD9DE,
+    0x8217598F, 0x170AFD8D,
+    0x82056758, 0x16A81305,
+    0x81F3C2D7, 0x16451A83,
+    0x81E26C16, 0x15E21444,
+    0x81D16320, 0x157F0086,
+    0x81C0A801, 0x151BDF85,
+    0x81B03AC1, 0x14B8B17F,
+    0x81A01B6C, 0x145576B1,
+    0x81904A0C, 0x13F22F57,
+    0x8180C6A9, 0x138EDBB0,
+    0x8171914E, 0x132B7BF9,
+    0x8162AA03, 0x12C8106E,
+    0x815410D3, 0x1264994E,
+    0x8145C5C6, 0x120116D4,
+    0x8137C8E6, 0x119D8940,
+    0x812A1A39, 0x1139F0CE,
+    0x811CB9CA, 0x10D64DBC,
+    0x810FA7A0, 0x1072A047,
+    0x8102E3C3, 0x100EE8AD,
+    0x80F66E3C, 0x0FAB272B,
+    0x80EA4712, 0x0F475BFE,
+    0x80DE6E4C, 0x0EE38765,
+    0x80D2E3F1, 0x0E7FA99D,
+    0x80C7A80A, 0x0E1BC2E3,
+    0x80BCBA9C, 0x0DB7D376,
+    0x80B21BAF, 0x0D53DB92,
+    0x80A7CB49, 0x0CEFDB75,
+    0x809DC970, 0x0C8BD35E,
+    0x8094162B, 0x0C27C389,
+    0x808AB180, 0x0BC3AC35,
+    0x80819B74, 0x0B5F8D9F,
+    0x8078D40D, 0x0AFB6805,
+    0x80705B50, 0x0A973BA5,
+    0x80683143, 0x0A3308BC,
+    0x806055EA, 0x09CECF89,
+    0x8058C94C, 0x096A9049,
+    0x80518B6B, 0x09064B3A,
+    0x804A9C4D, 0x08A2009A,
+    0x8043FBF6, 0x083DB0A7,
+    0x803DAA69, 0x07D95B9E,
+    0x8037A7AC, 0x077501BE,
+    0x8031F3C1, 0x0710A344,
+    0x802C8EAD, 0x06AC406F,
+    0x80277872, 0x0647D97C,
+    0x8022B113, 0x05E36EA9,
+    0x801E3894, 0x057F0034,
+    0x801A0EF7, 0x051A8E5C,
+    0x80163440, 0x04B6195D,
+    0x8012A86F, 0x0451A176,
+    0x800F6B88, 0x03ED26E6,
+    0x800C7D8C, 0x0388A9E9,
+    0x8009DE7D, 0x03242ABF,
+    0x80078E5E, 0x02BFA9A4,
+    0x80058D2E, 0x025B26D7,
+    0x8003DAF0, 0x01F6A296,
+    0x800277A5, 0x01921D1F,
+    0x8001634D, 0x012D96B0,
+    0x80009DE9, 0x00C90F88,
+    0x8000277A, 0x006487E3,
+    0x80000000, 0x00000000,
+    0x8000277A, 0xFF9B781D,
+    0x80009DE9, 0xFF36F078,
+    0x8001634D, 0xFED2694F,
+    0x800277A5, 0xFE6DE2E0,
+    0x8003DAF0, 0xFE095D69,
+    0x80058D2E, 0xFDA4D928,
+    0x80078E5E, 0xFD40565B,
+    0x8009DE7D, 0xFCDBD541,
+    0x800C7D8C, 0xFC775616,
+    0x800F6B88, 0xFC12D919,
+    0x8012A86F, 0xFBAE5E89,
+    0x80163440, 0xFB49E6A2,
+    0x801A0EF7, 0xFAE571A4,
+    0x801E3894, 0xFA80FFCB,
+    0x8022B113, 0xFA1C9156,
+    0x80277872, 0xF9B82683,
+    0x802C8EAD, 0xF953BF90,
+    0x8031F3C1, 0xF8EF5CBB,
+    0x8037A7AC, 0xF88AFE41,
+    0x803DAA69, 0xF826A461,
+    0x8043FBF6, 0xF7C24F58,
+    0x804A9C4D, 0xF75DFF65,
+    0x80518B6B, 0xF6F9B4C5,
+    0x8058C94C, 0xF6956FB6,
+    0x806055EA, 0xF6313076,
+    0x80683143, 0xF5CCF743,
+    0x80705B50, 0xF568C45A,
+    0x8078D40D, 0xF50497FA,
+    0x80819B74, 0xF4A07260,
+    0x808AB180, 0xF43C53CA,
+    0x8094162B, 0xF3D83C76,
+    0x809DC970, 0xF3742CA1,
+    0x80A7CB49, 0xF310248A,
+    0x80B21BAF, 0xF2AC246D,
+    0x80BCBA9C, 0xF2482C89,
+    0x80C7A80A, 0xF1E43D1C,
+    0x80D2E3F1, 0xF1805662,
+    0x80DE6E4C, 0xF11C789A,
+    0x80EA4712, 0xF0B8A401,
+    0x80F66E3C, 0xF054D8D4,
+    0x8102E3C3, 0xEFF11752,
+    0x810FA7A0, 0xEF8D5FB8,
+    0x811CB9CA, 0xEF29B243,
+    0x812A1A39, 0xEEC60F31,
+    0x8137C8E6, 0xEE6276BF,
+    0x8145C5C6, 0xEDFEE92B,
+    0x815410D3, 0xED9B66B2,
+    0x8162AA03, 0xED37EF91,
+    0x8171914E, 0xECD48406,
+    0x8180C6A9, 0xEC71244F,
+    0x81904A0C, 0xEC0DD0A8,
+    0x81A01B6C, 0xEBAA894E,
+    0x81B03AC1, 0xEB474E80,
+    0x81C0A801, 0xEAE4207A,
+    0x81D16320, 0xEA80FF79,
+    0x81E26C16, 0xEA1DEBBB,
+    0x81F3C2D7, 0xE9BAE57C,
+    0x82056758, 0xE957ECFB,
+    0x8217598F, 0xE8F50273,
+    0x82299971, 0xE8922621,
+    0x823C26F2, 0xE82F5844,
+    0x824F0208, 0xE7CC9917,
+    0x82622AA5, 0xE769E8D8,
+    0x8275A0C0, 0xE70747C3,
+    0x8289644A, 0xE6A4B616,
+    0x829D753A, 0xE642340D,
+    0x82B1D381, 0xE5DFC1E4,
+    0x82C67F13, 0xE57D5FDA,
+    0x82DB77E5, 0xE51B0E2A,
+    0x82F0BDE8, 0xE4B8CD10,
+    0x8306510F, 0xE4569CCB,
+    0x831C314E, 0xE3F47D95,
+    0x83325E97, 0xE3926FAC,
+    0x8348D8DB, 0xE330734C,
+    0x835FA00E, 0xE2CE88B2,
+    0x8376B422, 0xE26CB01A,
+    0x838E1507, 0xE20AE9C1,
+    0x83A5C2B0, 0xE1A935E1,
+    0x83BDBD0D, 0xE14794B9,
+    0x83D60411, 0xE0E60684,
+    0x83EE97AC, 0xE0848B7F,
+    0x840777CF, 0xE02323E5,
+    0x8420A46B, 0xDFC1CFF2,
+    0x843A1D70, 0xDF608FE3,
+    0x8453E2CE, 0xDEFF63F4,
+    0x846DF476, 0xDE9E4C60,
+    0x84885257, 0xDE3D4963,
+    0x84A2FC62, 0xDDDC5B3A,
+    0x84BDF285, 0xDD7B8220,
+    0x84D934B0, 0xDD1ABE51,
+    0x84F4C2D3, 0xDCBA1008,
+    0x85109CDC, 0xDC597781,
+    0x852CC2BA, 0xDBF8F4F8,
+    0x8549345C, 0xDB9888A8,
+    0x8565F1B0, 0xDB3832CD,
+    0x8582FAA4, 0xDAD7F3A2,
+    0x85A04F28, 0xDA77CB62,
+    0x85BDEF27, 0xDA17BA4A,
+    0x85DBDA91, 0xD9B7C093,
+    0x85FA1152, 0xD957DE7A,
+    0x86189359, 0xD8F81439,
+    0x86376092, 0xD898620C,
+    0x865678EA, 0xD838C82D,
+    0x8675DC4E, 0xD7D946D7,
+    0x86958AAB, 0xD779DE46,
+    0x86B583EE, 0xD71A8EB5,
+    0x86D5C802, 0xD6BB585D,
+    0x86F656D3, 0xD65C3B7B,
+    0x8717304E, 0xD5FD3847,
+    0x8738545E, 0xD59E4EFE,
+    0x8759C2EF, 0xD53F7FDA,
+    0x877B7BEC, 0xD4E0CB14,
+    0x879D7F40, 0xD48230E8,
+    0x87BFCCD7, 0xD423B190,
+    0x87E2649B, 0xD3C54D46,
+    0x88054677, 0xD3670445,
+    0x88287255, 0xD308D6C6,
+    0x884BE820, 0xD2AAC504,
+    0x886FA7C2, 0xD24CCF38,
+    0x8893B124, 0xD1EEF59E,
+    0x88B80431, 0xD191386D,
+    0x88DCA0D3, 0xD13397E1,
+    0x890186F1, 0xD0D61433,
+    0x8926B677, 0xD078AD9D,
+    0x894C2F4C, 0xD01B6459,
+    0x8971F15A, 0xCFBE389F,
+    0x8997FC89, 0xCF612AAA,
+    0x89BE50C3, 0xCF043AB2,
+    0x89E4EDEE, 0xCEA768F2,
+    0x8A0BD3F5, 0xCE4AB5A2,
+    0x8A3302BD, 0xCDEE20FC,
+    0x8A5A7A30, 0xCD91AB38,
+    0x8A823A35, 0xCD355490,
+    0x8AAA42B4, 0xCCD91D3D,
+    0x8AD29393, 0xCC7D0577,
+    0x8AFB2CBA, 0xCC210D78,
+    0x8B240E10, 0xCBC53578,
+    0x8B4D377C, 0xCB697DB0,
+    0x8B76A8E4, 0xCB0DE658,
+    0x8BA0622F, 0xCAB26FA9,
+    0x8BCA6342, 0xCA5719DB,
+    0x8BF4AC05, 0xC9FBE527,
+    0x8C1F3C5C, 0xC9A0D1C4,
+    0x8C4A142F, 0xC945DFEC,
+    0x8C753361, 0xC8EB0FD6,
+    0x8CA099D9, 0xC89061BA,
+    0x8CCC477D, 0xC835D5D0,
+    0x8CF83C30, 0xC7DB6C50,
+    0x8D2477D8, 0xC7812571,
+    0x8D50FA59, 0xC727016C,
+    0x8D7DC399, 0xC6CD0079,
+    0x8DAAD37B, 0xC67322CD,
+    0x8DD829E4, 0xC61968A2,
+    0x8E05C6B7, 0xC5BFD22E,
+    0x8E33A9D9, 0xC5665FA8,
+    0x8E61D32D, 0xC50D1148,
+    0x8E904298, 0xC4B3E746,
+    0x8EBEF7FB, 0xC45AE1D7,
+    0x8EEDF33B, 0xC4020132,
+    0x8F1D343A, 0xC3A9458F,
+    0x8F4CBADB, 0xC350AF25,
+    0x8F7C8701, 0xC2F83E2A,
+    0x8FAC988E, 0xC29FF2D4,
+    0x8FDCEF66, 0xC247CD5A,
+    0x900D8B69, 0xC1EFCDF2,
+    0x903E6C7A, 0xC197F4D3,
+    0x906F927B, 0xC1404233,
+    0x90A0FD4E, 0xC0E8B648,
+    0x90D2ACD3, 0xC0915147,
+    0x9104A0ED, 0xC03A1368,
+    0x9136D97D, 0xBFE2FCDF,
+    0x91695663, 0xBF8C0DE2,
+    0x919C1780, 0xBF3546A8,
+    0x91CF1CB6, 0xBEDEA765,
+    0x920265E4, 0xBE88304F,
+    0x9235F2EB, 0xBE31E19B,
+    0x9269C3AC, 0xBDDBBB7F,
+    0x929DD805, 0xBD85BE2F,
+    0x92D22FD8, 0xBD2FE9E1,
+    0x9306CB04, 0xBCDA3ECA,
+    0x933BA968, 0xBC84BD1E,
+    0x9370CAE4, 0xBC2F6513,
+    0x93A62F56, 0xBBDA36DC,
+    0x93DBD69F, 0xBB8532AF,
+    0x9411C09D, 0xBB3058C0,
+    0x9447ED2F, 0xBADBA943,
+    0x947E5C32, 0xBA87246C,
+    0x94B50D87, 0xBA32CA70,
+    0x94EC010B, 0xB9DE9B83,
+    0x9523369B, 0xB98A97D8,
+    0x955AAE17, 0xB936BFA3,
+    0x9592675B, 0xB8E31319,
+    0x95CA6246, 0xB88F926C,
+    0x96029EB5, 0xB83C3DD1,
+    0x963B1C85, 0xB7E9157A,
+    0x9673DB94, 0xB796199B,
+    0x96ACDBBD, 0xB7434A67,
+    0x96E61CDF, 0xB6F0A811,
+    0x971F9ED6, 0xB69E32CD,
+    0x9759617E, 0xB64BEACC,
+    0x979364B5, 0xB5F9D042,
+    0x97CDA855, 0xB5A7E362,
+    0x98082C3B, 0xB556245E,
+    0x9842F043, 0xB5049368,
+    0x987DF449, 0xB4B330B2,
+    0x98B93828, 0xB461FC70,
+    0x98F4BBBC, 0xB410F6D2,
+    0x99307EE0, 0xB3C0200C,
+    0x996C816F, 0xB36F784E,
+    0x99A8C344, 0xB31EFFCB,
+    0x99E5443A, 0xB2CEB6B5,
+    0x9A22042C, 0xB27E9D3B,
+    0x9A5F02F5, 0xB22EB392,
+    0x9A9C406D, 0xB1DEF9E8,
+    0x9AD9BC71, 0xB18F7070,
+    0x9B1776D9, 0xB140175B,
+    0x9B556F80, 0xB0F0EEDA,
+    0x9B93A640, 0xB0A1F71C,
+    0x9BD21AF2, 0xB0533055,
+    0x9C10CD70, 0xB0049AB2,
+    0x9C4FBD92, 0xAFB63667,
+    0x9C8EEB33, 0xAF6803A1,
+    0x9CCE562B, 0xAF1A0293,
+    0x9D0DFE53, 0xAECC336B,
+    0x9D4DE384, 0xAE7E965B,
+    0x9D8E0596, 0xAE312B91,
+    0x9DCE6462, 0xADE3F33E,
+    0x9E0EFFC1, 0xAD96ED91,
+    0x9E4FD789, 0xAD4A1ABA,
+    0x9E90EB94, 0xACFD7AE8,
+    0x9ED23BB9, 0xACB10E4A,
+    0x9F13C7D0, 0xAC64D510,
+    0x9F558FB0, 0xAC18CF68,
+    0x9F979331, 0xABCCFD82,
+    0x9FD9D22A, 0xAB815F8C,
+    0xA01C4C72, 0xAB35F5B5,
+    0xA05F01E1, 0xAAEAC02B,
+    0xA0A1F24C, 0xAA9FBF1D,
+    0xA0E51D8C, 0xAA54F2B9,
+    0xA1288376, 0xAA0A5B2D,
+    0xA16C23E1, 0xA9BFF8A8,
+    0xA1AFFEA2, 0xA975CB56,
+    0xA1F41391, 0xA92BD366,
+    0xA2386283, 0xA8E21106,
+    0xA27CEB4F, 0xA8988463,
+    0xA2C1ADC9, 0xA84F2DA9,
+    0xA306A9C7, 0xA8060D08,
+    0xA34BDF20, 0xA7BD22AB,
+    0xA3914DA7, 0xA7746EC0,
+    0xA3D6F533, 0xA72BF173,
+    0xA41CD598, 0xA6E3AAF2,
+    0xA462EEAC, 0xA69B9B68,
+    0xA4A94042, 0xA653C302,
+    0xA4EFCA31, 0xA60C21ED,
+    0xA5368C4B, 0xA5C4B855,
+    0xA57D8666, 0xA57D8666,
+    0xA5C4B855, 0xA5368C4B,
+    0xA60C21ED, 0xA4EFCA31,
+    0xA653C302, 0xA4A94042,
+    0xA69B9B68, 0xA462EEAC,
+    0xA6E3AAF2, 0xA41CD598,
+    0xA72BF173, 0xA3D6F533,
+    0xA7746EC0, 0xA3914DA7,
+    0xA7BD22AB, 0xA34BDF20,
+    0xA8060D08, 0xA306A9C7,
+    0xA84F2DA9, 0xA2C1ADC9,
+    0xA8988463, 0xA27CEB4F,
+    0xA8E21106, 0xA2386283,
+    0xA92BD366, 0xA1F41391,
+    0xA975CB56, 0xA1AFFEA2,
+    0xA9BFF8A8, 0xA16C23E1,
+    0xAA0A5B2D, 0xA1288376,
+    0xAA54F2B9, 0xA0E51D8C,
+    0xAA9FBF1D, 0xA0A1F24C,
+    0xAAEAC02B, 0xA05F01E1,
+    0xAB35F5B5, 0xA01C4C72,
+    0xAB815F8C, 0x9FD9D22A,
+    0xABCCFD82, 0x9F979331,
+    0xAC18CF68, 0x9F558FB0,
+    0xAC64D510, 0x9F13C7D0,
+    0xACB10E4A, 0x9ED23BB9,
+    0xACFD7AE8, 0x9E90EB94,
+    0xAD4A1ABA, 0x9E4FD789,
+    0xAD96ED91, 0x9E0EFFC1,
+    0xADE3F33E, 0x9DCE6462,
+    0xAE312B91, 0x9D8E0596,
+    0xAE7E965B, 0x9D4DE384,
+    0xAECC336B, 0x9D0DFE53,
+    0xAF1A0293, 0x9CCE562B,
+    0xAF6803A1, 0x9C8EEB33,
+    0xAFB63667, 0x9C4FBD92,
+    0xB0049AB2, 0x9C10CD70,
+    0xB0533055, 0x9BD21AF2,
+    0xB0A1F71C, 0x9B93A640,
+    0xB0F0EEDA, 0x9B556F80,
+    0xB140175B, 0x9B1776D9,
+    0xB18F7070, 0x9AD9BC71,
+    0xB1DEF9E8, 0x9A9C406D,
+    0xB22EB392, 0x9A5F02F5,
+    0xB27E9D3B, 0x9A22042C,
+    0xB2CEB6B5, 0x99E5443A,
+    0xB31EFFCB, 0x99A8C344,
+    0xB36F784E, 0x996C816F,
+    0xB3C0200C, 0x99307EE0,
+    0xB410F6D2, 0x98F4BBBC,
+    0xB461FC70, 0x98B93828,
+    0xB4B330B2, 0x987DF449,
+    0xB5049368, 0x9842F043,
+    0xB556245E, 0x98082C3B,
+    0xB5A7E362, 0x97CDA855,
+    0xB5F9D042, 0x979364B5,
+    0xB64BEACC, 0x9759617E,
+    0xB69E32CD, 0x971F9ED6,
+    0xB6F0A811, 0x96E61CDF,
+    0xB7434A67, 0x96ACDBBD,
+    0xB796199B, 0x9673DB94,
+    0xB7E9157A, 0x963B1C85,
+    0xB83C3DD1, 0x96029EB5,
+    0xB88F926C, 0x95CA6246,
+    0xB8E31319, 0x9592675B,
+    0xB936BFA3, 0x955AAE17,
+    0xB98A97D8, 0x9523369B,
+    0xB9DE9B83, 0x94EC010B,
+    0xBA32CA70, 0x94B50D87,
+    0xBA87246C, 0x947E5C32,
+    0xBADBA943, 0x9447ED2F,
+    0xBB3058C0, 0x9411C09D,
+    0xBB8532AF, 0x93DBD69F,
+    0xBBDA36DC, 0x93A62F56,
+    0xBC2F6513, 0x9370CAE4,
+    0xBC84BD1E, 0x933BA968,
+    0xBCDA3ECA, 0x9306CB04,
+    0xBD2FE9E1, 0x92D22FD8,
+    0xBD85BE2F, 0x929DD805,
+    0xBDDBBB7F, 0x9269C3AC,
+    0xBE31E19B, 0x9235F2EB,
+    0xBE88304F, 0x920265E4,
+    0xBEDEA765, 0x91CF1CB6,
+    0xBF3546A8, 0x919C1780,
+    0xBF8C0DE2, 0x91695663,
+    0xBFE2FCDF, 0x9136D97D,
+    0xC03A1368, 0x9104A0ED,
+    0xC0915147, 0x90D2ACD3,
+    0xC0E8B648, 0x90A0FD4E,
+    0xC1404233, 0x906F927B,
+    0xC197F4D3, 0x903E6C7A,
+    0xC1EFCDF2, 0x900D8B69,
+    0xC247CD5A, 0x8FDCEF66,
+    0xC29FF2D4, 0x8FAC988E,
+    0xC2F83E2A, 0x8F7C8701,
+    0xC350AF25, 0x8F4CBADB,
+    0xC3A9458F, 0x8F1D343A,
+    0xC4020132, 0x8EEDF33B,
+    0xC45AE1D7, 0x8EBEF7FB,
+    0xC4B3E746, 0x8E904298,
+    0xC50D1148, 0x8E61D32D,
+    0xC5665FA8, 0x8E33A9D9,
+    0xC5BFD22E, 0x8E05C6B7,
+    0xC61968A2, 0x8DD829E4,
+    0xC67322CD, 0x8DAAD37B,
+    0xC6CD0079, 0x8D7DC399,
+    0xC727016C, 0x8D50FA59,
+    0xC7812571, 0x8D2477D8,
+    0xC7DB6C50, 0x8CF83C30,
+    0xC835D5D0, 0x8CCC477D,
+    0xC89061BA, 0x8CA099D9,
+    0xC8EB0FD6, 0x8C753361,
+    0xC945DFEC, 0x8C4A142F,
+    0xC9A0D1C4, 0x8C1F3C5C,
+    0xC9FBE527, 0x8BF4AC05,
+    0xCA5719DB, 0x8BCA6342,
+    0xCAB26FA9, 0x8BA0622F,
+    0xCB0DE658, 0x8B76A8E4,
+    0xCB697DB0, 0x8B4D377C,
+    0xCBC53578, 0x8B240E10,
+    0xCC210D78, 0x8AFB2CBA,
+    0xCC7D0577, 0x8AD29393,
+    0xCCD91D3D, 0x8AAA42B4,
+    0xCD355490, 0x8A823A35,
+    0xCD91AB38, 0x8A5A7A30,
+    0xCDEE20FC, 0x8A3302BD,
+    0xCE4AB5A2, 0x8A0BD3F5,
+    0xCEA768F2, 0x89E4EDEE,
+    0xCF043AB2, 0x89BE50C3,
+    0xCF612AAA, 0x8997FC89,
+    0xCFBE389F, 0x8971F15A,
+    0xD01B6459, 0x894C2F4C,
+    0xD078AD9D, 0x8926B677,
+    0xD0D61433, 0x890186F1,
+    0xD13397E1, 0x88DCA0D3,
+    0xD191386D, 0x88B80431,
+    0xD1EEF59E, 0x8893B124,
+    0xD24CCF38, 0x886FA7C2,
+    0xD2AAC504, 0x884BE820,
+    0xD308D6C6, 0x88287255,
+    0xD3670445, 0x88054677,
+    0xD3C54D46, 0x87E2649B,
+    0xD423B190, 0x87BFCCD7,
+    0xD48230E8, 0x879D7F40,
+    0xD4E0CB14, 0x877B7BEC,
+    0xD53F7FDA, 0x8759C2EF,
+    0xD59E4EFE, 0x8738545E,
+    0xD5FD3847, 0x8717304E,
+    0xD65C3B7B, 0x86F656D3,
+    0xD6BB585D, 0x86D5C802,
+    0xD71A8EB5, 0x86B583EE,
+    0xD779DE46, 0x86958AAB,
+    0xD7D946D7, 0x8675DC4E,
+    0xD838C82D, 0x865678EA,
+    0xD898620C, 0x86376092,
+    0xD8F81439, 0x86189359,
+    0xD957DE7A, 0x85FA1152,
+    0xD9B7C093, 0x85DBDA91,
+    0xDA17BA4A, 0x85BDEF27,
+    0xDA77CB62, 0x85A04F28,
+    0xDAD7F3A2, 0x8582FAA4,
+    0xDB3832CD, 0x8565F1B0,
+    0xDB9888A8, 0x8549345C,
+    0xDBF8F4F8, 0x852CC2BA,
+    0xDC597781, 0x85109CDC,
+    0xDCBA1008, 0x84F4C2D3,
+    0xDD1ABE51, 0x84D934B0,
+    0xDD7B8220, 0x84BDF285,
+    0xDDDC5B3A, 0x84A2FC62,
+    0xDE3D4963, 0x84885257,
+    0xDE9E4C60, 0x846DF476,
+    0xDEFF63F4, 0x8453E2CE,
+    0xDF608FE3, 0x843A1D70,
+    0xDFC1CFF2, 0x8420A46B,
+    0xE02323E5, 0x840777CF,
+    0xE0848B7F, 0x83EE97AC,
+    0xE0E60684, 0x83D60411,
+    0xE14794B9, 0x83BDBD0D,
+    0xE1A935E1, 0x83A5C2B0,
+    0xE20AE9C1, 0x838E1507,
+    0xE26CB01A, 0x8376B422,
+    0xE2CE88B2, 0x835FA00E,
+    0xE330734C, 0x8348D8DB,
+    0xE3926FAC, 0x83325E97,
+    0xE3F47D95, 0x831C314E,
+    0xE4569CCB, 0x8306510F,
+    0xE4B8CD10, 0x82F0BDE8,
+    0xE51B0E2A, 0x82DB77E5,
+    0xE57D5FDA, 0x82C67F13,
+    0xE5DFC1E4, 0x82B1D381,
+    0xE642340D, 0x829D753A,
+    0xE6A4B616, 0x8289644A,
+    0xE70747C3, 0x8275A0C0,
+    0xE769E8D8, 0x82622AA5,
+    0xE7CC9917, 0x824F0208,
+    0xE82F5844, 0x823C26F2,
+    0xE8922621, 0x82299971,
+    0xE8F50273, 0x8217598F,
+    0xE957ECFB, 0x82056758,
+    0xE9BAE57C, 0x81F3C2D7,
+    0xEA1DEBBB, 0x81E26C16,
+    0xEA80FF79, 0x81D16320,
+    0xEAE4207A, 0x81C0A801,
+    0xEB474E80, 0x81B03AC1,
+    0xEBAA894E, 0x81A01B6C,
+    0xEC0DD0A8, 0x81904A0C,
+    0xEC71244F, 0x8180C6A9,
+    0xECD48406, 0x8171914E,
+    0xED37EF91, 0x8162AA03,
+    0xED9B66B2, 0x815410D3,
+    0xEDFEE92B, 0x8145C5C6,
+    0xEE6276BF, 0x8137C8E6,
+    0xEEC60F31, 0x812A1A39,
+    0xEF29B243, 0x811CB9CA,
+    0xEF8D5FB8, 0x810FA7A0,
+    0xEFF11752, 0x8102E3C3,
+    0xF054D8D4, 0x80F66E3C,
+    0xF0B8A401, 0x80EA4712,
+    0xF11C789A, 0x80DE6E4C,
+    0xF1805662, 0x80D2E3F1,
+    0xF1E43D1C, 0x80C7A80A,
+    0xF2482C89, 0x80BCBA9C,
+    0xF2AC246D, 0x80B21BAF,
+    0xF310248A, 0x80A7CB49,
+    0xF3742CA1, 0x809DC970,
+    0xF3D83C76, 0x8094162B,
+    0xF43C53CA, 0x808AB180,
+    0xF4A07260, 0x80819B74,
+    0xF50497FA, 0x8078D40D,
+    0xF568C45A, 0x80705B50,
+    0xF5CCF743, 0x80683143,
+    0xF6313076, 0x806055EA,
+    0xF6956FB6, 0x8058C94C,
+    0xF6F9B4C5, 0x80518B6B,
+    0xF75DFF65, 0x804A9C4D,
+    0xF7C24F58, 0x8043FBF6,
+    0xF826A461, 0x803DAA69,
+    0xF88AFE41, 0x8037A7AC,
+    0xF8EF5CBB, 0x8031F3C1,
+    0xF953BF90, 0x802C8EAD,
+    0xF9B82683, 0x80277872,
+    0xFA1C9156, 0x8022B113,
+    0xFA80FFCB, 0x801E3894,
+    0xFAE571A4, 0x801A0EF7,
+    0xFB49E6A2, 0x80163440,
+    0xFBAE5E89, 0x8012A86F,
+    0xFC12D919, 0x800F6B88,
+    0xFC775616, 0x800C7D8C,
+    0xFCDBD541, 0x8009DE7D,
+    0xFD40565B, 0x80078E5E,
+    0xFDA4D928, 0x80058D2E,
+    0xFE095D69, 0x8003DAF0,
+    0xFE6DE2E0, 0x800277A5,
+    0xFED2694F, 0x8001634D,
+    0xFF36F078, 0x80009DE9,
+    0xFF9B781D, 0x8000277A
+};
+
+/**    
+* \par   
+* Example code for Q31 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 4096	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to Q31(Fixed point 1.31):    
+*	round(twiddleCoefQ31(i) * pow(2, 31))    
+*    
+*/
+const q31_t twiddleCoef_4096_q31[6144] = 
+{
+    0x7FFFFFFF, 0x00000000,
+    0x7FFFF621, 0x003243F5,
+    0x7FFFD885, 0x006487E3,
+    0x7FFFA72C, 0x0096CBC1,
+    0x7FFF6216, 0x00C90F88,
+    0x7FFF0942, 0x00FB532F,
+    0x7FFE9CB2, 0x012D96B0,
+    0x7FFE1C64, 0x015FDA03,
+    0x7FFD885A, 0x01921D1F,
+    0x7FFCE093, 0x01C45FFE,
+    0x7FFC250F, 0x01F6A296,
+    0x7FFB55CE, 0x0228E4E1,
+    0x7FFA72D1, 0x025B26D7,
+    0x7FF97C17, 0x028D6870,
+    0x7FF871A1, 0x02BFA9A4,
+    0x7FF7536F, 0x02F1EA6B,
+    0x7FF62182, 0x03242ABF,
+    0x7FF4DBD8, 0x03566A96,
+    0x7FF38273, 0x0388A9E9,
+    0x7FF21553, 0x03BAE8B1,
+    0x7FF09477, 0x03ED26E6,
+    0x7FEEFFE1, 0x041F647F,
+    0x7FED5790, 0x0451A176,
+    0x7FEB9B85, 0x0483DDC3,
+    0x7FE9CBC0, 0x04B6195D,
+    0x7FE7E840, 0x04E8543D,
+    0x7FE5F108, 0x051A8E5C,
+    0x7FE3E616, 0x054CC7B0,
+    0x7FE1C76B, 0x057F0034,
+    0x7FDF9508, 0x05B137DF,
+    0x7FDD4EEC, 0x05E36EA9,
+    0x7FDAF518, 0x0615A48A,
+    0x7FD8878D, 0x0647D97C,
+    0x7FD6064B, 0x067A0D75,
+    0x7FD37152, 0x06AC406F,
+    0x7FD0C8A3, 0x06DE7261,
+    0x7FCE0C3E, 0x0710A344,
+    0x7FCB3C23, 0x0742D310,
+    0x7FC85853, 0x077501BE,
+    0x7FC560CF, 0x07A72F45,
+    0x7FC25596, 0x07D95B9E,
+    0x7FBF36A9, 0x080B86C1,
+    0x7FBC040A, 0x083DB0A7,
+    0x7FB8BDB7, 0x086FD947,
+    0x7FB563B2, 0x08A2009A,
+    0x7FB1F5FC, 0x08D42698,
+    0x7FAE7494, 0x09064B3A,
+    0x7FAADF7C, 0x09386E77,
+    0x7FA736B4, 0x096A9049,
+    0x7FA37A3C, 0x099CB0A7,
+    0x7F9FAA15, 0x09CECF89,
+    0x7F9BC63F, 0x0A00ECE8,
+    0x7F97CEBC, 0x0A3308BC,
+    0x7F93C38C, 0x0A6522FE,
+    0x7F8FA4AF, 0x0A973BA5,
+    0x7F8B7226, 0x0AC952AA,
+    0x7F872BF3, 0x0AFB6805,
+    0x7F82D214, 0x0B2D7BAE,
+    0x7F7E648B, 0x0B5F8D9F,
+    0x7F79E35A, 0x0B919DCE,
+    0x7F754E7F, 0x0BC3AC35,
+    0x7F70A5FD, 0x0BF5B8CB,
+    0x7F6BE9D4, 0x0C27C389,
+    0x7F671A04, 0x0C59CC67,
+    0x7F62368F, 0x0C8BD35E,
+    0x7F5D3F75, 0x0CBDD865,
+    0x7F5834B6, 0x0CEFDB75,
+    0x7F531654, 0x0D21DC87,
+    0x7F4DE450, 0x0D53DB92,
+    0x7F489EAA, 0x0D85D88F,
+    0x7F434563, 0x0DB7D376,
+    0x7F3DD87C, 0x0DE9CC3F,
+    0x7F3857F5, 0x0E1BC2E3,
+    0x7F32C3D0, 0x0E4DB75B,
+    0x7F2D1C0E, 0x0E7FA99D,
+    0x7F2760AF, 0x0EB199A3,
+    0x7F2191B4, 0x0EE38765,
+    0x7F1BAF1E, 0x0F1572DC,
+    0x7F15B8EE, 0x0F475BFE,
+    0x7F0FAF24, 0x0F7942C6,
+    0x7F0991C3, 0x0FAB272B,
+    0x7F0360CB, 0x0FDD0925,
+    0x7EFD1C3C, 0x100EE8AD,
+    0x7EF6C418, 0x1040C5BB,
+    0x7EF0585F, 0x1072A047,
+    0x7EE9D913, 0x10A4784A,
+    0x7EE34635, 0x10D64DBC,
+    0x7EDC9FC6, 0x11082096,
+    0x7ED5E5C6, 0x1139F0CE,
+    0x7ECF1837, 0x116BBE5F,
+    0x7EC8371A, 0x119D8940,
+    0x7EC1426F, 0x11CF516A,
+    0x7EBA3A39, 0x120116D4,
+    0x7EB31E77, 0x1232D978,
+    0x7EABEF2C, 0x1264994E,
+    0x7EA4AC58, 0x1296564D,
+    0x7E9D55FC, 0x12C8106E,
+    0x7E95EC19, 0x12F9C7AA,
+    0x7E8E6EB1, 0x132B7BF9,
+    0x7E86DDC5, 0x135D2D53,
+    0x7E7F3956, 0x138EDBB0,
+    0x7E778165, 0x13C0870A,
+    0x7E6FB5F3, 0x13F22F57,
+    0x7E67D702, 0x1423D492,
+    0x7E5FE493, 0x145576B1,
+    0x7E57DEA6, 0x148715AD,
+    0x7E4FC53E, 0x14B8B17F,
+    0x7E47985B, 0x14EA4A1F,
+    0x7E3F57FE, 0x151BDF85,
+    0x7E37042A, 0x154D71AA,
+    0x7E2E9CDF, 0x157F0086,
+    0x7E26221E, 0x15B08C11,
+    0x7E1D93E9, 0x15E21444,
+    0x7E14F242, 0x16139917,
+    0x7E0C3D29, 0x16451A83,
+    0x7E03749F, 0x1676987F,
+    0x7DFA98A7, 0x16A81305,
+    0x7DF1A942, 0x16D98A0C,
+    0x7DE8A670, 0x170AFD8D,
+    0x7DDF9034, 0x173C6D80,
+    0x7DD6668E, 0x176DD9DE,
+    0x7DCD2981, 0x179F429F,
+    0x7DC3D90D, 0x17D0A7BB,
+    0x7DBA7534, 0x1802092C,
+    0x7DB0FDF7, 0x183366E8,
+    0x7DA77359, 0x1864C0E9,
+    0x7D9DD55A, 0x18961727,
+    0x7D9423FB, 0x18C7699B,
+    0x7D8A5F3F, 0x18F8B83C,
+    0x7D808727, 0x192A0303,
+    0x7D769BB5, 0x195B49E9,
+    0x7D6C9CE9, 0x198C8CE6,
+    0x7D628AC5, 0x19BDCBF2,
+    0x7D58654C, 0x19EF0706,
+    0x7D4E2C7E, 0x1A203E1B,
+    0x7D43E05E, 0x1A517127,
+    0x7D3980EC, 0x1A82A025,
+    0x7D2F0E2A, 0x1AB3CB0C,
+    0x7D24881A, 0x1AE4F1D6,
+    0x7D19EEBE, 0x1B161479,
+    0x7D0F4218, 0x1B4732EF,
+    0x7D048228, 0x1B784D30,
+    0x7CF9AEF0, 0x1BA96334,
+    0x7CEEC873, 0x1BDA74F5,
+    0x7CE3CEB1, 0x1C0B826A,
+    0x7CD8C1AD, 0x1C3C8B8C,
+    0x7CCDA168, 0x1C6D9053,
+    0x7CC26DE5, 0x1C9E90B8,
+    0x7CB72724, 0x1CCF8CB3,
+    0x7CABCD27, 0x1D00843C,
+    0x7CA05FF1, 0x1D31774D,
+    0x7C94DF82, 0x1D6265DD,
+    0x7C894BDD, 0x1D934FE5,
+    0x7C7DA504, 0x1DC4355D,
+    0x7C71EAF8, 0x1DF5163F,
+    0x7C661DBB, 0x1E25F281,
+    0x7C5A3D4F, 0x1E56CA1E,
+    0x7C4E49B6, 0x1E879D0C,
+    0x7C4242F2, 0x1EB86B46,
+    0x7C362904, 0x1EE934C2,
+    0x7C29FBEE, 0x1F19F97B,
+    0x7C1DBBB2, 0x1F4AB967,
+    0x7C116853, 0x1F7B7480,
+    0x7C0501D1, 0x1FAC2ABF,
+    0x7BF88830, 0x1FDCDC1A,
+    0x7BEBFB70, 0x200D888C,
+    0x7BDF5B94, 0x203E300D,
+    0x7BD2A89E, 0x206ED295,
+    0x7BC5E28F, 0x209F701C,
+    0x7BB9096A, 0x20D0089B,
+    0x7BAC1D31, 0x21009C0B,
+    0x7B9F1DE5, 0x21312A65,
+    0x7B920B89, 0x2161B39F,
+    0x7B84E61E, 0x219237B4,
+    0x7B77ADA8, 0x21C2B69C,
+    0x7B6A6227, 0x21F3304E,
+    0x7B5D039D, 0x2223A4C5,
+    0x7B4F920E, 0x225413F8,
+    0x7B420D7A, 0x22847DDF,
+    0x7B3475E4, 0x22B4E274,
+    0x7B26CB4F, 0x22E541AE,
+    0x7B190DBB, 0x23159B87,
+    0x7B0B3D2C, 0x2345EFF7,
+    0x7AFD59A3, 0x23763EF7,
+    0x7AEF6323, 0x23A6887E,
+    0x7AE159AE, 0x23D6CC86,
+    0x7AD33D45, 0x24070B07,
+    0x7AC50DEB, 0x243743FA,
+    0x7AB6CBA3, 0x24677757,
+    0x7AA8766E, 0x2497A517,
+    0x7A9A0E4F, 0x24C7CD32,
+    0x7A8B9348, 0x24F7EFA1,
+    0x7A7D055B, 0x25280C5D,
+    0x7A6E648A, 0x2558235E,
+    0x7A5FB0D8, 0x2588349D,
+    0x7A50EA46, 0x25B84012,
+    0x7A4210D8, 0x25E845B5,
+    0x7A33248F, 0x26184581,
+    0x7A24256E, 0x26483F6C,
+    0x7A151377, 0x26783370,
+    0x7A05EEAD, 0x26A82185,
+    0x79F6B711, 0x26D809A5,
+    0x79E76CA6, 0x2707EBC6,
+    0x79D80F6F, 0x2737C7E3,
+    0x79C89F6D, 0x27679DF4,
+    0x79B91CA4, 0x27976DF1,
+    0x79A98715, 0x27C737D2,
+    0x7999DEC3, 0x27F6FB92,
+    0x798A23B1, 0x2826B928,
+    0x797A55E0, 0x2856708C,
+    0x796A7554, 0x288621B9,
+    0x795A820E, 0x28B5CCA5,
+    0x794A7C11, 0x28E5714A,
+    0x793A6360, 0x29150FA1,
+    0x792A37FE, 0x2944A7A2,
+    0x7919F9EB, 0x29743945,
+    0x7909A92C, 0x29A3C484,
+    0x78F945C3, 0x29D34958,
+    0x78E8CFB1, 0x2A02C7B8,
+    0x78D846FB, 0x2A323F9D,
+    0x78C7ABA1, 0x2A61B101,
+    0x78B6FDA8, 0x2A911BDB,
+    0x78A63D10, 0x2AC08025,
+    0x789569DE, 0x2AEFDDD8,
+    0x78848413, 0x2B1F34EB,
+    0x78738BB3, 0x2B4E8558,
+    0x786280BF, 0x2B7DCF17,
+    0x7851633B, 0x2BAD1221,
+    0x78403328, 0x2BDC4E6F,
+    0x782EF08B, 0x2C0B83F9,
+    0x781D9B64, 0x2C3AB2B9,
+    0x780C33B8, 0x2C69DAA6,
+    0x77FAB988, 0x2C98FBBA,
+    0x77E92CD8, 0x2CC815ED,
+    0x77D78DAA, 0x2CF72939,
+    0x77C5DC01, 0x2D263595,
+    0x77B417DF, 0x2D553AFB,
+    0x77A24148, 0x2D843963,
+    0x7790583D, 0x2DB330C7,
+    0x777E5CC3, 0x2DE2211E,
+    0x776C4EDB, 0x2E110A62,
+    0x775A2E88, 0x2E3FEC8B,
+    0x7747FBCE, 0x2E6EC792,
+    0x7735B6AE, 0x2E9D9B70,
+    0x77235F2D, 0x2ECC681E,
+    0x7710F54B, 0x2EFB2D94,
+    0x76FE790E, 0x2F29EBCC,
+    0x76EBEA77, 0x2F58A2BD,
+    0x76D94988, 0x2F875262,
+    0x76C69646, 0x2FB5FAB2,
+    0x76B3D0B3, 0x2FE49BA6,
+    0x76A0F8D2, 0x30133538,
+    0x768E0EA5, 0x3041C760,
+    0x767B1230, 0x30705217,
+    0x76680376, 0x309ED555,
+    0x7654E279, 0x30CD5114,
+    0x7641AF3C, 0x30FBC54D,
+    0x762E69C3, 0x312A31F8,
+    0x761B1211, 0x3158970D,
+    0x7607A827, 0x3186F487,
+    0x75F42C0A, 0x31B54A5D,
+    0x75E09DBD, 0x31E39889,
+    0x75CCFD42, 0x3211DF03,
+    0x75B94A9C, 0x32401DC5,
+    0x75A585CF, 0x326E54C7,
+    0x7591AEDD, 0x329C8402,
+    0x757DC5CA, 0x32CAAB6F,
+    0x7569CA98, 0x32F8CB07,
+    0x7555BD4B, 0x3326E2C2,
+    0x75419DE6, 0x3354F29A,
+    0x752D6C6C, 0x3382FA88,
+    0x751928E0, 0x33B0FA84,
+    0x7504D345, 0x33DEF287,
+    0x74F06B9E, 0x340CE28A,
+    0x74DBF1EF, 0x343ACA87,
+    0x74C7663A, 0x3468AA76,
+    0x74B2C883, 0x3496824F,
+    0x749E18CD, 0x34C4520D,
+    0x7489571B, 0x34F219A7,
+    0x74748371, 0x351FD917,
+    0x745F9DD1, 0x354D9056,
+    0x744AA63E, 0x357B3F5D,
+    0x74359CBD, 0x35A8E624,
+    0x74208150, 0x35D684A5,
+    0x740B53FA, 0x36041AD9,
+    0x73F614C0, 0x3631A8B7,
+    0x73E0C3A3, 0x365F2E3B,
+    0x73CB60A7, 0x368CAB5C,
+    0x73B5EBD0, 0x36BA2013,
+    0x73A06522, 0x36E78C5A,
+    0x738ACC9E, 0x3714F02A,
+    0x73752249, 0x37424B7A,
+    0x735F6626, 0x376F9E46,
+    0x73499838, 0x379CE884,
+    0x7333B883, 0x37CA2A30,
+    0x731DC709, 0x37F76340,
+    0x7307C3D0, 0x382493B0,
+    0x72F1AED8, 0x3851BB76,
+    0x72DB8828, 0x387EDA8E,
+    0x72C54FC0, 0x38ABF0EF,
+    0x72AF05A6, 0x38D8FE93,
+    0x7298A9DC, 0x39060372,
+    0x72823C66, 0x3932FF87,
+    0x726BBD48, 0x395FF2C9,
+    0x72552C84, 0x398CDD32,
+    0x723E8A1F, 0x39B9BEBB,
+    0x7227D61C, 0x39E6975D,
+    0x7211107D, 0x3A136712,
+    0x71FA3948, 0x3A402DD1,
+    0x71E3507F, 0x3A6CEB95,
+    0x71CC5626, 0x3A99A057,
+    0x71B54A40, 0x3AC64C0F,
+    0x719E2CD2, 0x3AF2EEB7,
+    0x7186FDDE, 0x3B1F8847,
+    0x716FBD68, 0x3B4C18BA,
+    0x71586B73, 0x3B78A007,
+    0x71410804, 0x3BA51E29,
+    0x7129931E, 0x3BD19317,
+    0x71120CC5, 0x3BFDFECD,
+    0x70FA74FB, 0x3C2A6142,
+    0x70E2CBC6, 0x3C56BA70,
+    0x70CB1127, 0x3C830A4F,
+    0x70B34524, 0x3CAF50DA,
+    0x709B67C0, 0x3CDB8E09,
+    0x708378FE, 0x3D07C1D5,
+    0x706B78E3, 0x3D33EC39,
+    0x70536771, 0x3D600D2B,
+    0x703B44AC, 0x3D8C24A7,
+    0x70231099, 0x3DB832A5,
+    0x700ACB3B, 0x3DE4371F,
+    0x6FF27496, 0x3E10320D,
+    0x6FDA0CAD, 0x3E3C2369,
+    0x6FC19385, 0x3E680B2C,
+    0x6FA90920, 0x3E93E94F,
+    0x6F906D84, 0x3EBFBDCC,
+    0x6F77C0B3, 0x3EEB889C,
+    0x6F5F02B1, 0x3F1749B7,
+    0x6F463383, 0x3F430118,
+    0x6F2D532C, 0x3F6EAEB8,
+    0x6F1461AF, 0x3F9A528F,
+    0x6EFB5F12, 0x3FC5EC97,
+    0x6EE24B57, 0x3FF17CCA,
+    0x6EC92682, 0x401D0320,
+    0x6EAFF098, 0x40487F93,
+    0x6E96A99C, 0x4073F21D,
+    0x6E7D5193, 0x409F5AB6,
+    0x6E63E87F, 0x40CAB957,
+    0x6E4A6E65, 0x40F60DFB,
+    0x6E30E349, 0x4121589A,
+    0x6E17472F, 0x414C992E,
+    0x6DFD9A1B, 0x4177CFB0,
+    0x6DE3DC11, 0x41A2FC1A,
+    0x6DCA0D14, 0x41CE1E64,
+    0x6DB02D29, 0x41F93688,
+    0x6D963C54, 0x42244480,
+    0x6D7C3A98, 0x424F4845,
+    0x6D6227FA, 0x427A41D0,
+    0x6D48047E, 0x42A5311A,
+    0x6D2DD027, 0x42D0161E,
+    0x6D138AFA, 0x42FAF0D4,
+    0x6CF934FB, 0x4325C135,
+    0x6CDECE2E, 0x4350873C,
+    0x6CC45697, 0x437B42E1,
+    0x6CA9CE3A, 0x43A5F41E,
+    0x6C8F351C, 0x43D09AEC,
+    0x6C748B3F, 0x43FB3745,
+    0x6C59D0A9, 0x4425C923,
+    0x6C3F055D, 0x4450507E,
+    0x6C242960, 0x447ACD50,
+    0x6C093CB6, 0x44A53F93,
+    0x6BEE3F62, 0x44CFA73F,
+    0x6BD3316A, 0x44FA044F,
+    0x6BB812D0, 0x452456BC,
+    0x6B9CE39B, 0x454E9E80,
+    0x6B81A3CD, 0x4578DB93,
+    0x6B66536A, 0x45A30DF0,
+    0x6B4AF278, 0x45CD358F,
+    0x6B2F80FA, 0x45F7526B,
+    0x6B13FEF5, 0x4621647C,
+    0x6AF86C6C, 0x464B6BBD,
+    0x6ADCC964, 0x46756827,
+    0x6AC115E1, 0x469F59B4,
+    0x6AA551E8, 0x46C9405C,
+    0x6A897D7D, 0x46F31C1A,
+    0x6A6D98A4, 0x471CECE6,
+    0x6A51A361, 0x4746B2BC,
+    0x6A359DB9, 0x47706D93,
+    0x6A1987B0, 0x479A1D66,
+    0x69FD614A, 0x47C3C22E,
+    0x69E12A8C, 0x47ED5BE6,
+    0x69C4E37A, 0x4816EA85,
+    0x69A88C18, 0x48406E07,
+    0x698C246C, 0x4869E664,
+    0x696FAC78, 0x48935397,
+    0x69532442, 0x48BCB598,
+    0x69368BCE, 0x48E60C62,
+    0x6919E320, 0x490F57EE,
+    0x68FD2A3D, 0x49389836,
+    0x68E06129, 0x4961CD32,
+    0x68C387E9, 0x498AF6DE,
+    0x68A69E81, 0x49B41533,
+    0x6889A4F5, 0x49DD282A,
+    0x686C9B4B, 0x4A062FBD,
+    0x684F8186, 0x4A2F2BE5,
+    0x683257AA, 0x4A581C9D,
+    0x68151DBE, 0x4A8101DE,
+    0x67F7D3C4, 0x4AA9DBA1,
+    0x67DA79C2, 0x4AD2A9E1,
+    0x67BD0FBC, 0x4AFB6C97,
+    0x679F95B7, 0x4B2423BD,
+    0x67820BB6, 0x4B4CCF4D,
+    0x676471C0, 0x4B756F3F,
+    0x6746C7D7, 0x4B9E038F,
+    0x67290E02, 0x4BC68C36,
+    0x670B4443, 0x4BEF092D,
+    0x66ED6AA1, 0x4C177A6E,
+    0x66CF811F, 0x4C3FDFF3,
+    0x66B187C3, 0x4C6839B6,
+    0x66937E90, 0x4C9087B1,
+    0x6675658C, 0x4CB8C9DD,
+    0x66573CBB, 0x4CE10034,
+    0x66390422, 0x4D092AB0,
+    0x661ABBC5, 0x4D31494B,
+    0x65FC63A9, 0x4D595BFE,
+    0x65DDFBD3, 0x4D8162C4,
+    0x65BF8447, 0x4DA95D96,
+    0x65A0FD0B, 0x4DD14C6E,
+    0x65826622, 0x4DF92F45,
+    0x6563BF92, 0x4E210617,
+    0x6545095F, 0x4E48D0DC,
+    0x6526438E, 0x4E708F8F,
+    0x65076E24, 0x4E984229,
+    0x64E88926, 0x4EBFE8A4,
+    0x64C99498, 0x4EE782FA,
+    0x64AA907F, 0x4F0F1126,
+    0x648B7CDF, 0x4F369320,
+    0x646C59BF, 0x4F5E08E3,
+    0x644D2722, 0x4F857268,
+    0x642DE50D, 0x4FACCFAB,
+    0x640E9385, 0x4FD420A3,
+    0x63EF328F, 0x4FFB654D,
+    0x63CFC230, 0x50229DA0,
+    0x63B0426D, 0x5049C999,
+    0x6390B34A, 0x5070E92F,
+    0x637114CC, 0x5097FC5E,
+    0x635166F8, 0x50BF031F,
+    0x6331A9D4, 0x50E5FD6C,
+    0x6311DD63, 0x510CEB40,
+    0x62F201AC, 0x5133CC94,
+    0x62D216B2, 0x515AA162,
+    0x62B21C7B, 0x518169A4,
+    0x6292130C, 0x51A82555,
+    0x6271FA69, 0x51CED46E,
+    0x6251D297, 0x51F576E9,
+    0x62319B9D, 0x521C0CC1,
+    0x6211557D, 0x524295EF,
+    0x61F1003E, 0x5269126E,
+    0x61D09BE5, 0x528F8237,
+    0x61B02876, 0x52B5E545,
+    0x618FA5F6, 0x52DC3B92,
+    0x616F146B, 0x53028517,
+    0x614E73D9, 0x5328C1D0,
+    0x612DC446, 0x534EF1B5,
+    0x610D05B7, 0x537514C1,
+    0x60EC3830, 0x539B2AEF,
+    0x60CB5BB6, 0x53C13438,
+    0x60AA704F, 0x53E73097,
+    0x60897600, 0x540D2005,
+    0x60686CCE, 0x5433027D,
+    0x604754BE, 0x5458D7F9,
+    0x60262DD5, 0x547EA073,
+    0x6004F818, 0x54A45BE5,
+    0x5FE3B38D, 0x54CA0A4A,
+    0x5FC26038, 0x54EFAB9C,
+    0x5FA0FE1E, 0x55153FD4,
+    0x5F7F8D46, 0x553AC6ED,
+    0x5F5E0DB3, 0x556040E2,
+    0x5F3C7F6B, 0x5585ADAC,
+    0x5F1AE273, 0x55AB0D46,
+    0x5EF936D1, 0x55D05FAA,
+    0x5ED77C89, 0x55F5A4D2,
+    0x5EB5B3A1, 0x561ADCB8,
+    0x5E93DC1F, 0x56400757,
+    0x5E71F606, 0x566524AA,
+    0x5E50015D, 0x568A34A9,
+    0x5E2DFE28, 0x56AF3750,
+    0x5E0BEC6E, 0x56D42C99,
+    0x5DE9CC32, 0x56F9147E,
+    0x5DC79D7C, 0x571DEEF9,
+    0x5DA5604E, 0x5742BC05,
+    0x5D8314B0, 0x57677B9D,
+    0x5D60BAA6, 0x578C2DB9,
+    0x5D3E5236, 0x57B0D256,
+    0x5D1BDB65, 0x57D5696C,
+    0x5CF95638, 0x57F9F2F7,
+    0x5CD6C2B4, 0x581E6EF1,
+    0x5CB420DF, 0x5842DD54,
+    0x5C9170BF, 0x58673E1B,
+    0x5C6EB258, 0x588B913F,
+    0x5C4BE5B0, 0x58AFD6BC,
+    0x5C290ACC, 0x58D40E8C,
+    0x5C0621B2, 0x58F838A9,
+    0x5BE32A67, 0x591C550E,
+    0x5BC024F0, 0x594063B4,
+    0x5B9D1153, 0x59646497,
+    0x5B79EF96, 0x598857B1,
+    0x5B56BFBD, 0x59AC3CFD,
+    0x5B3381CE, 0x59D01474,
+    0x5B1035CF, 0x59F3DE12,
+    0x5AECDBC4, 0x5A1799D0,
+    0x5AC973B4, 0x5A3B47AA,
+    0x5AA5FDA4, 0x5A5EE79A,
+    0x5A82799A, 0x5A82799A,
+    0x5A5EE79A, 0x5AA5FDA4,
+    0x5A3B47AA, 0x5AC973B4,
+    0x5A1799D0, 0x5AECDBC4,
+    0x59F3DE12, 0x5B1035CF,
+    0x59D01474, 0x5B3381CE,
+    0x59AC3CFD, 0x5B56BFBD,
+    0x598857B1, 0x5B79EF96,
+    0x59646497, 0x5B9D1153,
+    0x594063B4, 0x5BC024F0,
+    0x591C550E, 0x5BE32A67,
+    0x58F838A9, 0x5C0621B2,
+    0x58D40E8C, 0x5C290ACC,
+    0x58AFD6BC, 0x5C4BE5B0,
+    0x588B913F, 0x5C6EB258,
+    0x58673E1B, 0x5C9170BF,
+    0x5842DD54, 0x5CB420DF,
+    0x581E6EF1, 0x5CD6C2B4,
+    0x57F9F2F7, 0x5CF95638,
+    0x57D5696C, 0x5D1BDB65,
+    0x57B0D256, 0x5D3E5236,
+    0x578C2DB9, 0x5D60BAA6,
+    0x57677B9D, 0x5D8314B0,
+    0x5742BC05, 0x5DA5604E,
+    0x571DEEF9, 0x5DC79D7C,
+    0x56F9147E, 0x5DE9CC32,
+    0x56D42C99, 0x5E0BEC6E,
+    0x56AF3750, 0x5E2DFE28,
+    0x568A34A9, 0x5E50015D,
+    0x566524AA, 0x5E71F606,
+    0x56400757, 0x5E93DC1F,
+    0x561ADCB8, 0x5EB5B3A1,
+    0x55F5A4D2, 0x5ED77C89,
+    0x55D05FAA, 0x5EF936D1,
+    0x55AB0D46, 0x5F1AE273,
+    0x5585ADAC, 0x5F3C7F6B,
+    0x556040E2, 0x5F5E0DB3,
+    0x553AC6ED, 0x5F7F8D46,
+    0x55153FD4, 0x5FA0FE1E,
+    0x54EFAB9C, 0x5FC26038,
+    0x54CA0A4A, 0x5FE3B38D,
+    0x54A45BE5, 0x6004F818,
+    0x547EA073, 0x60262DD5,
+    0x5458D7F9, 0x604754BE,
+    0x5433027D, 0x60686CCE,
+    0x540D2005, 0x60897600,
+    0x53E73097, 0x60AA704F,
+    0x53C13438, 0x60CB5BB6,
+    0x539B2AEF, 0x60EC3830,
+    0x537514C1, 0x610D05B7,
+    0x534EF1B5, 0x612DC446,
+    0x5328C1D0, 0x614E73D9,
+    0x53028517, 0x616F146B,
+    0x52DC3B92, 0x618FA5F6,
+    0x52B5E545, 0x61B02876,
+    0x528F8237, 0x61D09BE5,
+    0x5269126E, 0x61F1003E,
+    0x524295EF, 0x6211557D,
+    0x521C0CC1, 0x62319B9D,
+    0x51F576E9, 0x6251D297,
+    0x51CED46E, 0x6271FA69,
+    0x51A82555, 0x6292130C,
+    0x518169A4, 0x62B21C7B,
+    0x515AA162, 0x62D216B2,
+    0x5133CC94, 0x62F201AC,
+    0x510CEB40, 0x6311DD63,
+    0x50E5FD6C, 0x6331A9D4,
+    0x50BF031F, 0x635166F8,
+    0x5097FC5E, 0x637114CC,
+    0x5070E92F, 0x6390B34A,
+    0x5049C999, 0x63B0426D,
+    0x50229DA0, 0x63CFC230,
+    0x4FFB654D, 0x63EF328F,
+    0x4FD420A3, 0x640E9385,
+    0x4FACCFAB, 0x642DE50D,
+    0x4F857268, 0x644D2722,
+    0x4F5E08E3, 0x646C59BF,
+    0x4F369320, 0x648B7CDF,
+    0x4F0F1126, 0x64AA907F,
+    0x4EE782FA, 0x64C99498,
+    0x4EBFE8A4, 0x64E88926,
+    0x4E984229, 0x65076E24,
+    0x4E708F8F, 0x6526438E,
+    0x4E48D0DC, 0x6545095F,
+    0x4E210617, 0x6563BF92,
+    0x4DF92F45, 0x65826622,
+    0x4DD14C6E, 0x65A0FD0B,
+    0x4DA95D96, 0x65BF8447,
+    0x4D8162C4, 0x65DDFBD3,
+    0x4D595BFE, 0x65FC63A9,
+    0x4D31494B, 0x661ABBC5,
+    0x4D092AB0, 0x66390422,
+    0x4CE10034, 0x66573CBB,
+    0x4CB8C9DD, 0x6675658C,
+    0x4C9087B1, 0x66937E90,
+    0x4C6839B6, 0x66B187C3,
+    0x4C3FDFF3, 0x66CF811F,
+    0x4C177A6E, 0x66ED6AA1,
+    0x4BEF092D, 0x670B4443,
+    0x4BC68C36, 0x67290E02,
+    0x4B9E038F, 0x6746C7D7,
+    0x4B756F3F, 0x676471C0,
+    0x4B4CCF4D, 0x67820BB6,
+    0x4B2423BD, 0x679F95B7,
+    0x4AFB6C97, 0x67BD0FBC,
+    0x4AD2A9E1, 0x67DA79C2,
+    0x4AA9DBA1, 0x67F7D3C4,
+    0x4A8101DE, 0x68151DBE,
+    0x4A581C9D, 0x683257AA,
+    0x4A2F2BE5, 0x684F8186,
+    0x4A062FBD, 0x686C9B4B,
+    0x49DD282A, 0x6889A4F5,
+    0x49B41533, 0x68A69E81,
+    0x498AF6DE, 0x68C387E9,
+    0x4961CD32, 0x68E06129,
+    0x49389836, 0x68FD2A3D,
+    0x490F57EE, 0x6919E320,
+    0x48E60C62, 0x69368BCE,
+    0x48BCB598, 0x69532442,
+    0x48935397, 0x696FAC78,
+    0x4869E664, 0x698C246C,
+    0x48406E07, 0x69A88C18,
+    0x4816EA85, 0x69C4E37A,
+    0x47ED5BE6, 0x69E12A8C,
+    0x47C3C22E, 0x69FD614A,
+    0x479A1D66, 0x6A1987B0,
+    0x47706D93, 0x6A359DB9,
+    0x4746B2BC, 0x6A51A361,
+    0x471CECE6, 0x6A6D98A4,
+    0x46F31C1A, 0x6A897D7D,
+    0x46C9405C, 0x6AA551E8,
+    0x469F59B4, 0x6AC115E1,
+    0x46756827, 0x6ADCC964,
+    0x464B6BBD, 0x6AF86C6C,
+    0x4621647C, 0x6B13FEF5,
+    0x45F7526B, 0x6B2F80FA,
+    0x45CD358F, 0x6B4AF278,
+    0x45A30DF0, 0x6B66536A,
+    0x4578DB93, 0x6B81A3CD,
+    0x454E9E80, 0x6B9CE39B,
+    0x452456BC, 0x6BB812D0,
+    0x44FA044F, 0x6BD3316A,
+    0x44CFA73F, 0x6BEE3F62,
+    0x44A53F93, 0x6C093CB6,
+    0x447ACD50, 0x6C242960,
+    0x4450507E, 0x6C3F055D,
+    0x4425C923, 0x6C59D0A9,
+    0x43FB3745, 0x6C748B3F,
+    0x43D09AEC, 0x6C8F351C,
+    0x43A5F41E, 0x6CA9CE3A,
+    0x437B42E1, 0x6CC45697,
+    0x4350873C, 0x6CDECE2E,
+    0x4325C135, 0x6CF934FB,
+    0x42FAF0D4, 0x6D138AFA,
+    0x42D0161E, 0x6D2DD027,
+    0x42A5311A, 0x6D48047E,
+    0x427A41D0, 0x6D6227FA,
+    0x424F4845, 0x6D7C3A98,
+    0x42244480, 0x6D963C54,
+    0x41F93688, 0x6DB02D29,
+    0x41CE1E64, 0x6DCA0D14,
+    0x41A2FC1A, 0x6DE3DC11,
+    0x4177CFB0, 0x6DFD9A1B,
+    0x414C992E, 0x6E17472F,
+    0x4121589A, 0x6E30E349,
+    0x40F60DFB, 0x6E4A6E65,
+    0x40CAB957, 0x6E63E87F,
+    0x409F5AB6, 0x6E7D5193,
+    0x4073F21D, 0x6E96A99C,
+    0x40487F93, 0x6EAFF098,
+    0x401D0320, 0x6EC92682,
+    0x3FF17CCA, 0x6EE24B57,
+    0x3FC5EC97, 0x6EFB5F12,
+    0x3F9A528F, 0x6F1461AF,
+    0x3F6EAEB8, 0x6F2D532C,
+    0x3F430118, 0x6F463383,
+    0x3F1749B7, 0x6F5F02B1,
+    0x3EEB889C, 0x6F77C0B3,
+    0x3EBFBDCC, 0x6F906D84,
+    0x3E93E94F, 0x6FA90920,
+    0x3E680B2C, 0x6FC19385,
+    0x3E3C2369, 0x6FDA0CAD,
+    0x3E10320D, 0x6FF27496,
+    0x3DE4371F, 0x700ACB3B,
+    0x3DB832A5, 0x70231099,
+    0x3D8C24A7, 0x703B44AC,
+    0x3D600D2B, 0x70536771,
+    0x3D33EC39, 0x706B78E3,
+    0x3D07C1D5, 0x708378FE,
+    0x3CDB8E09, 0x709B67C0,
+    0x3CAF50DA, 0x70B34524,
+    0x3C830A4F, 0x70CB1127,
+    0x3C56BA70, 0x70E2CBC6,
+    0x3C2A6142, 0x70FA74FB,
+    0x3BFDFECD, 0x71120CC5,
+    0x3BD19317, 0x7129931E,
+    0x3BA51E29, 0x71410804,
+    0x3B78A007, 0x71586B73,
+    0x3B4C18BA, 0x716FBD68,
+    0x3B1F8847, 0x7186FDDE,
+    0x3AF2EEB7, 0x719E2CD2,
+    0x3AC64C0F, 0x71B54A40,
+    0x3A99A057, 0x71CC5626,
+    0x3A6CEB95, 0x71E3507F,
+    0x3A402DD1, 0x71FA3948,
+    0x3A136712, 0x7211107D,
+    0x39E6975D, 0x7227D61C,
+    0x39B9BEBB, 0x723E8A1F,
+    0x398CDD32, 0x72552C84,
+    0x395FF2C9, 0x726BBD48,
+    0x3932FF87, 0x72823C66,
+    0x39060372, 0x7298A9DC,
+    0x38D8FE93, 0x72AF05A6,
+    0x38ABF0EF, 0x72C54FC0,
+    0x387EDA8E, 0x72DB8828,
+    0x3851BB76, 0x72F1AED8,
+    0x382493B0, 0x7307C3D0,
+    0x37F76340, 0x731DC709,
+    0x37CA2A30, 0x7333B883,
+    0x379CE884, 0x73499838,
+    0x376F9E46, 0x735F6626,
+    0x37424B7A, 0x73752249,
+    0x3714F02A, 0x738ACC9E,
+    0x36E78C5A, 0x73A06522,
+    0x36BA2013, 0x73B5EBD0,
+    0x368CAB5C, 0x73CB60A7,
+    0x365F2E3B, 0x73E0C3A3,
+    0x3631A8B7, 0x73F614C0,
+    0x36041AD9, 0x740B53FA,
+    0x35D684A5, 0x74208150,
+    0x35A8E624, 0x74359CBD,
+    0x357B3F5D, 0x744AA63E,
+    0x354D9056, 0x745F9DD1,
+    0x351FD917, 0x74748371,
+    0x34F219A7, 0x7489571B,
+    0x34C4520D, 0x749E18CD,
+    0x3496824F, 0x74B2C883,
+    0x3468AA76, 0x74C7663A,
+    0x343ACA87, 0x74DBF1EF,
+    0x340CE28A, 0x74F06B9E,
+    0x33DEF287, 0x7504D345,
+    0x33B0FA84, 0x751928E0,
+    0x3382FA88, 0x752D6C6C,
+    0x3354F29A, 0x75419DE6,
+    0x3326E2C2, 0x7555BD4B,
+    0x32F8CB07, 0x7569CA98,
+    0x32CAAB6F, 0x757DC5CA,
+    0x329C8402, 0x7591AEDD,
+    0x326E54C7, 0x75A585CF,
+    0x32401DC5, 0x75B94A9C,
+    0x3211DF03, 0x75CCFD42,
+    0x31E39889, 0x75E09DBD,
+    0x31B54A5D, 0x75F42C0A,
+    0x3186F487, 0x7607A827,
+    0x3158970D, 0x761B1211,
+    0x312A31F8, 0x762E69C3,
+    0x30FBC54D, 0x7641AF3C,
+    0x30CD5114, 0x7654E279,
+    0x309ED555, 0x76680376,
+    0x30705217, 0x767B1230,
+    0x3041C760, 0x768E0EA5,
+    0x30133538, 0x76A0F8D2,
+    0x2FE49BA6, 0x76B3D0B3,
+    0x2FB5FAB2, 0x76C69646,
+    0x2F875262, 0x76D94988,
+    0x2F58A2BD, 0x76EBEA77,
+    0x2F29EBCC, 0x76FE790E,
+    0x2EFB2D94, 0x7710F54B,
+    0x2ECC681E, 0x77235F2D,
+    0x2E9D9B70, 0x7735B6AE,
+    0x2E6EC792, 0x7747FBCE,
+    0x2E3FEC8B, 0x775A2E88,
+    0x2E110A62, 0x776C4EDB,
+    0x2DE2211E, 0x777E5CC3,
+    0x2DB330C7, 0x7790583D,
+    0x2D843963, 0x77A24148,
+    0x2D553AFB, 0x77B417DF,
+    0x2D263595, 0x77C5DC01,
+    0x2CF72939, 0x77D78DAA,
+    0x2CC815ED, 0x77E92CD8,
+    0x2C98FBBA, 0x77FAB988,
+    0x2C69DAA6, 0x780C33B8,
+    0x2C3AB2B9, 0x781D9B64,
+    0x2C0B83F9, 0x782EF08B,
+    0x2BDC4E6F, 0x78403328,
+    0x2BAD1221, 0x7851633B,
+    0x2B7DCF17, 0x786280BF,
+    0x2B4E8558, 0x78738BB3,
+    0x2B1F34EB, 0x78848413,
+    0x2AEFDDD8, 0x789569DE,
+    0x2AC08025, 0x78A63D10,
+    0x2A911BDB, 0x78B6FDA8,
+    0x2A61B101, 0x78C7ABA1,
+    0x2A323F9D, 0x78D846FB,
+    0x2A02C7B8, 0x78E8CFB1,
+    0x29D34958, 0x78F945C3,
+    0x29A3C484, 0x7909A92C,
+    0x29743945, 0x7919F9EB,
+    0x2944A7A2, 0x792A37FE,
+    0x29150FA1, 0x793A6360,
+    0x28E5714A, 0x794A7C11,
+    0x28B5CCA5, 0x795A820E,
+    0x288621B9, 0x796A7554,
+    0x2856708C, 0x797A55E0,
+    0x2826B928, 0x798A23B1,
+    0x27F6FB92, 0x7999DEC3,
+    0x27C737D2, 0x79A98715,
+    0x27976DF1, 0x79B91CA4,
+    0x27679DF4, 0x79C89F6D,
+    0x2737C7E3, 0x79D80F6F,
+    0x2707EBC6, 0x79E76CA6,
+    0x26D809A5, 0x79F6B711,
+    0x26A82185, 0x7A05EEAD,
+    0x26783370, 0x7A151377,
+    0x26483F6C, 0x7A24256E,
+    0x26184581, 0x7A33248F,
+    0x25E845B5, 0x7A4210D8,
+    0x25B84012, 0x7A50EA46,
+    0x2588349D, 0x7A5FB0D8,
+    0x2558235E, 0x7A6E648A,
+    0x25280C5D, 0x7A7D055B,
+    0x24F7EFA1, 0x7A8B9348,
+    0x24C7CD32, 0x7A9A0E4F,
+    0x2497A517, 0x7AA8766E,
+    0x24677757, 0x7AB6CBA3,
+    0x243743FA, 0x7AC50DEB,
+    0x24070B07, 0x7AD33D45,
+    0x23D6CC86, 0x7AE159AE,
+    0x23A6887E, 0x7AEF6323,
+    0x23763EF7, 0x7AFD59A3,
+    0x2345EFF7, 0x7B0B3D2C,
+    0x23159B87, 0x7B190DBB,
+    0x22E541AE, 0x7B26CB4F,
+    0x22B4E274, 0x7B3475E4,
+    0x22847DDF, 0x7B420D7A,
+    0x225413F8, 0x7B4F920E,
+    0x2223A4C5, 0x7B5D039D,
+    0x21F3304E, 0x7B6A6227,
+    0x21C2B69C, 0x7B77ADA8,
+    0x219237B4, 0x7B84E61E,
+    0x2161B39F, 0x7B920B89,
+    0x21312A65, 0x7B9F1DE5,
+    0x21009C0B, 0x7BAC1D31,
+    0x20D0089B, 0x7BB9096A,
+    0x209F701C, 0x7BC5E28F,
+    0x206ED295, 0x7BD2A89E,
+    0x203E300D, 0x7BDF5B94,
+    0x200D888C, 0x7BEBFB70,
+    0x1FDCDC1A, 0x7BF88830,
+    0x1FAC2ABF, 0x7C0501D1,
+    0x1F7B7480, 0x7C116853,
+    0x1F4AB967, 0x7C1DBBB2,
+    0x1F19F97B, 0x7C29FBEE,
+    0x1EE934C2, 0x7C362904,
+    0x1EB86B46, 0x7C4242F2,
+    0x1E879D0C, 0x7C4E49B6,
+    0x1E56CA1E, 0x7C5A3D4F,
+    0x1E25F281, 0x7C661DBB,
+    0x1DF5163F, 0x7C71EAF8,
+    0x1DC4355D, 0x7C7DA504,
+    0x1D934FE5, 0x7C894BDD,
+    0x1D6265DD, 0x7C94DF82,
+    0x1D31774D, 0x7CA05FF1,
+    0x1D00843C, 0x7CABCD27,
+    0x1CCF8CB3, 0x7CB72724,
+    0x1C9E90B8, 0x7CC26DE5,
+    0x1C6D9053, 0x7CCDA168,
+    0x1C3C8B8C, 0x7CD8C1AD,
+    0x1C0B826A, 0x7CE3CEB1,
+    0x1BDA74F5, 0x7CEEC873,
+    0x1BA96334, 0x7CF9AEF0,
+    0x1B784D30, 0x7D048228,
+    0x1B4732EF, 0x7D0F4218,
+    0x1B161479, 0x7D19EEBE,
+    0x1AE4F1D6, 0x7D24881A,
+    0x1AB3CB0C, 0x7D2F0E2A,
+    0x1A82A025, 0x7D3980EC,
+    0x1A517127, 0x7D43E05E,
+    0x1A203E1B, 0x7D4E2C7E,
+    0x19EF0706, 0x7D58654C,
+    0x19BDCBF2, 0x7D628AC5,
+    0x198C8CE6, 0x7D6C9CE9,
+    0x195B49E9, 0x7D769BB5,
+    0x192A0303, 0x7D808727,
+    0x18F8B83C, 0x7D8A5F3F,
+    0x18C7699B, 0x7D9423FB,
+    0x18961727, 0x7D9DD55A,
+    0x1864C0E9, 0x7DA77359,
+    0x183366E8, 0x7DB0FDF7,
+    0x1802092C, 0x7DBA7534,
+    0x17D0A7BB, 0x7DC3D90D,
+    0x179F429F, 0x7DCD2981,
+    0x176DD9DE, 0x7DD6668E,
+    0x173C6D80, 0x7DDF9034,
+    0x170AFD8D, 0x7DE8A670,
+    0x16D98A0C, 0x7DF1A942,
+    0x16A81305, 0x7DFA98A7,
+    0x1676987F, 0x7E03749F,
+    0x16451A83, 0x7E0C3D29,
+    0x16139917, 0x7E14F242,
+    0x15E21444, 0x7E1D93E9,
+    0x15B08C11, 0x7E26221E,
+    0x157F0086, 0x7E2E9CDF,
+    0x154D71AA, 0x7E37042A,
+    0x151BDF85, 0x7E3F57FE,
+    0x14EA4A1F, 0x7E47985B,
+    0x14B8B17F, 0x7E4FC53E,
+    0x148715AD, 0x7E57DEA6,
+    0x145576B1, 0x7E5FE493,
+    0x1423D492, 0x7E67D702,
+    0x13F22F57, 0x7E6FB5F3,
+    0x13C0870A, 0x7E778165,
+    0x138EDBB0, 0x7E7F3956,
+    0x135D2D53, 0x7E86DDC5,
+    0x132B7BF9, 0x7E8E6EB1,
+    0x12F9C7AA, 0x7E95EC19,
+    0x12C8106E, 0x7E9D55FC,
+    0x1296564D, 0x7EA4AC58,
+    0x1264994E, 0x7EABEF2C,
+    0x1232D978, 0x7EB31E77,
+    0x120116D4, 0x7EBA3A39,
+    0x11CF516A, 0x7EC1426F,
+    0x119D8940, 0x7EC8371A,
+    0x116BBE5F, 0x7ECF1837,
+    0x1139F0CE, 0x7ED5E5C6,
+    0x11082096, 0x7EDC9FC6,
+    0x10D64DBC, 0x7EE34635,
+    0x10A4784A, 0x7EE9D913,
+    0x1072A047, 0x7EF0585F,
+    0x1040C5BB, 0x7EF6C418,
+    0x100EE8AD, 0x7EFD1C3C,
+    0x0FDD0925, 0x7F0360CB,
+    0x0FAB272B, 0x7F0991C3,
+    0x0F7942C6, 0x7F0FAF24,
+    0x0F475BFE, 0x7F15B8EE,
+    0x0F1572DC, 0x7F1BAF1E,
+    0x0EE38765, 0x7F2191B4,
+    0x0EB199A3, 0x7F2760AF,
+    0x0E7FA99D, 0x7F2D1C0E,
+    0x0E4DB75B, 0x7F32C3D0,
+    0x0E1BC2E3, 0x7F3857F5,
+    0x0DE9CC3F, 0x7F3DD87C,
+    0x0DB7D376, 0x7F434563,
+    0x0D85D88F, 0x7F489EAA,
+    0x0D53DB92, 0x7F4DE450,
+    0x0D21DC87, 0x7F531654,
+    0x0CEFDB75, 0x7F5834B6,
+    0x0CBDD865, 0x7F5D3F75,
+    0x0C8BD35E, 0x7F62368F,
+    0x0C59CC67, 0x7F671A04,
+    0x0C27C389, 0x7F6BE9D4,
+    0x0BF5B8CB, 0x7F70A5FD,
+    0x0BC3AC35, 0x7F754E7F,
+    0x0B919DCE, 0x7F79E35A,
+    0x0B5F8D9F, 0x7F7E648B,
+    0x0B2D7BAE, 0x7F82D214,
+    0x0AFB6805, 0x7F872BF3,
+    0x0AC952AA, 0x7F8B7226,
+    0x0A973BA5, 0x7F8FA4AF,
+    0x0A6522FE, 0x7F93C38C,
+    0x0A3308BC, 0x7F97CEBC,
+    0x0A00ECE8, 0x7F9BC63F,
+    0x09CECF89, 0x7F9FAA15,
+    0x099CB0A7, 0x7FA37A3C,
+    0x096A9049, 0x7FA736B4,
+    0x09386E77, 0x7FAADF7C,
+    0x09064B3A, 0x7FAE7494,
+    0x08D42698, 0x7FB1F5FC,
+    0x08A2009A, 0x7FB563B2,
+    0x086FD947, 0x7FB8BDB7,
+    0x083DB0A7, 0x7FBC040A,
+    0x080B86C1, 0x7FBF36A9,
+    0x07D95B9E, 0x7FC25596,
+    0x07A72F45, 0x7FC560CF,
+    0x077501BE, 0x7FC85853,
+    0x0742D310, 0x7FCB3C23,
+    0x0710A344, 0x7FCE0C3E,
+    0x06DE7261, 0x7FD0C8A3,
+    0x06AC406F, 0x7FD37152,
+    0x067A0D75, 0x7FD6064B,
+    0x0647D97C, 0x7FD8878D,
+    0x0615A48A, 0x7FDAF518,
+    0x05E36EA9, 0x7FDD4EEC,
+    0x05B137DF, 0x7FDF9508,
+    0x057F0034, 0x7FE1C76B,
+    0x054CC7B0, 0x7FE3E616,
+    0x051A8E5C, 0x7FE5F108,
+    0x04E8543D, 0x7FE7E840,
+    0x04B6195D, 0x7FE9CBC0,
+    0x0483DDC3, 0x7FEB9B85,
+    0x0451A176, 0x7FED5790,
+    0x041F647F, 0x7FEEFFE1,
+    0x03ED26E6, 0x7FF09477,
+    0x03BAE8B1, 0x7FF21553,
+    0x0388A9E9, 0x7FF38273,
+    0x03566A96, 0x7FF4DBD8,
+    0x03242ABF, 0x7FF62182,
+    0x02F1EA6B, 0x7FF7536F,
+    0x02BFA9A4, 0x7FF871A1,
+    0x028D6870, 0x7FF97C17,
+    0x025B26D7, 0x7FFA72D1,
+    0x0228E4E1, 0x7FFB55CE,
+    0x01F6A296, 0x7FFC250F,
+    0x01C45FFE, 0x7FFCE093,
+    0x01921D1F, 0x7FFD885A,
+    0x015FDA03, 0x7FFE1C64,
+    0x012D96B0, 0x7FFE9CB2,
+    0x00FB532F, 0x7FFF0942,
+    0x00C90F88, 0x7FFF6216,
+    0x0096CBC1, 0x7FFFA72C,
+    0x006487E3, 0x7FFFD885,
+    0x003243F5, 0x7FFFF621,
+    0x00000000, 0x7FFFFFFF,
+    0xFFCDBC0A, 0x7FFFF621,
+    0xFF9B781D, 0x7FFFD885,
+    0xFF69343E, 0x7FFFA72C,
+    0xFF36F078, 0x7FFF6216,
+    0xFF04ACD0, 0x7FFF0942,
+    0xFED2694F, 0x7FFE9CB2,
+    0xFEA025FC, 0x7FFE1C64,
+    0xFE6DE2E0, 0x7FFD885A,
+    0xFE3BA001, 0x7FFCE093,
+    0xFE095D69, 0x7FFC250F,
+    0xFDD71B1E, 0x7FFB55CE,
+    0xFDA4D928, 0x7FFA72D1,
+    0xFD72978F, 0x7FF97C17,
+    0xFD40565B, 0x7FF871A1,
+    0xFD0E1594, 0x7FF7536F,
+    0xFCDBD541, 0x7FF62182,
+    0xFCA99569, 0x7FF4DBD8,
+    0xFC775616, 0x7FF38273,
+    0xFC45174E, 0x7FF21553,
+    0xFC12D919, 0x7FF09477,
+    0xFBE09B80, 0x7FEEFFE1,
+    0xFBAE5E89, 0x7FED5790,
+    0xFB7C223C, 0x7FEB9B85,
+    0xFB49E6A2, 0x7FE9CBC0,
+    0xFB17ABC2, 0x7FE7E840,
+    0xFAE571A4, 0x7FE5F108,
+    0xFAB3384F, 0x7FE3E616,
+    0xFA80FFCB, 0x7FE1C76B,
+    0xFA4EC820, 0x7FDF9508,
+    0xFA1C9156, 0x7FDD4EEC,
+    0xF9EA5B75, 0x7FDAF518,
+    0xF9B82683, 0x7FD8878D,
+    0xF985F28A, 0x7FD6064B,
+    0xF953BF90, 0x7FD37152,
+    0xF9218D9E, 0x7FD0C8A3,
+    0xF8EF5CBB, 0x7FCE0C3E,
+    0xF8BD2CEF, 0x7FCB3C23,
+    0xF88AFE41, 0x7FC85853,
+    0xF858D0BA, 0x7FC560CF,
+    0xF826A461, 0x7FC25596,
+    0xF7F4793E, 0x7FBF36A9,
+    0xF7C24F58, 0x7FBC040A,
+    0xF79026B8, 0x7FB8BDB7,
+    0xF75DFF65, 0x7FB563B2,
+    0xF72BD967, 0x7FB1F5FC,
+    0xF6F9B4C5, 0x7FAE7494,
+    0xF6C79188, 0x7FAADF7C,
+    0xF6956FB6, 0x7FA736B4,
+    0xF6634F58, 0x7FA37A3C,
+    0xF6313076, 0x7F9FAA15,
+    0xF5FF1317, 0x7F9BC63F,
+    0xF5CCF743, 0x7F97CEBC,
+    0xF59ADD01, 0x7F93C38C,
+    0xF568C45A, 0x7F8FA4AF,
+    0xF536AD55, 0x7F8B7226,
+    0xF50497FA, 0x7F872BF3,
+    0xF4D28451, 0x7F82D214,
+    0xF4A07260, 0x7F7E648B,
+    0xF46E6231, 0x7F79E35A,
+    0xF43C53CA, 0x7F754E7F,
+    0xF40A4734, 0x7F70A5FD,
+    0xF3D83C76, 0x7F6BE9D4,
+    0xF3A63398, 0x7F671A04,
+    0xF3742CA1, 0x7F62368F,
+    0xF342279A, 0x7F5D3F75,
+    0xF310248A, 0x7F5834B6,
+    0xF2DE2378, 0x7F531654,
+    0xF2AC246D, 0x7F4DE450,
+    0xF27A2770, 0x7F489EAA,
+    0xF2482C89, 0x7F434563,
+    0xF21633C0, 0x7F3DD87C,
+    0xF1E43D1C, 0x7F3857F5,
+    0xF1B248A5, 0x7F32C3D0,
+    0xF1805662, 0x7F2D1C0E,
+    0xF14E665C, 0x7F2760AF,
+    0xF11C789A, 0x7F2191B4,
+    0xF0EA8D23, 0x7F1BAF1E,
+    0xF0B8A401, 0x7F15B8EE,
+    0xF086BD39, 0x7F0FAF24,
+    0xF054D8D4, 0x7F0991C3,
+    0xF022F6DA, 0x7F0360CB,
+    0xEFF11752, 0x7EFD1C3C,
+    0xEFBF3A44, 0x7EF6C418,
+    0xEF8D5FB8, 0x7EF0585F,
+    0xEF5B87B5, 0x7EE9D913,
+    0xEF29B243, 0x7EE34635,
+    0xEEF7DF6A, 0x7EDC9FC6,
+    0xEEC60F31, 0x7ED5E5C6,
+    0xEE9441A0, 0x7ECF1837,
+    0xEE6276BF, 0x7EC8371A,
+    0xEE30AE95, 0x7EC1426F,
+    0xEDFEE92B, 0x7EBA3A39,
+    0xEDCD2687, 0x7EB31E77,
+    0xED9B66B2, 0x7EABEF2C,
+    0xED69A9B2, 0x7EA4AC58,
+    0xED37EF91, 0x7E9D55FC,
+    0xED063855, 0x7E95EC19,
+    0xECD48406, 0x7E8E6EB1,
+    0xECA2D2AC, 0x7E86DDC5,
+    0xEC71244F, 0x7E7F3956,
+    0xEC3F78F5, 0x7E778165,
+    0xEC0DD0A8, 0x7E6FB5F3,
+    0xEBDC2B6D, 0x7E67D702,
+    0xEBAA894E, 0x7E5FE493,
+    0xEB78EA52, 0x7E57DEA6,
+    0xEB474E80, 0x7E4FC53E,
+    0xEB15B5E0, 0x7E47985B,
+    0xEAE4207A, 0x7E3F57FE,
+    0xEAB28E55, 0x7E37042A,
+    0xEA80FF79, 0x7E2E9CDF,
+    0xEA4F73EE, 0x7E26221E,
+    0xEA1DEBBB, 0x7E1D93E9,
+    0xE9EC66E8, 0x7E14F242,
+    0xE9BAE57C, 0x7E0C3D29,
+    0xE9896780, 0x7E03749F,
+    0xE957ECFB, 0x7DFA98A7,
+    0xE92675F4, 0x7DF1A942,
+    0xE8F50273, 0x7DE8A670,
+    0xE8C3927F, 0x7DDF9034,
+    0xE8922621, 0x7DD6668E,
+    0xE860BD60, 0x7DCD2981,
+    0xE82F5844, 0x7DC3D90D,
+    0xE7FDF6D3, 0x7DBA7534,
+    0xE7CC9917, 0x7DB0FDF7,
+    0xE79B3F16, 0x7DA77359,
+    0xE769E8D8, 0x7D9DD55A,
+    0xE7389664, 0x7D9423FB,
+    0xE70747C3, 0x7D8A5F3F,
+    0xE6D5FCFC, 0x7D808727,
+    0xE6A4B616, 0x7D769BB5,
+    0xE6737319, 0x7D6C9CE9,
+    0xE642340D, 0x7D628AC5,
+    0xE610F8F9, 0x7D58654C,
+    0xE5DFC1E4, 0x7D4E2C7E,
+    0xE5AE8ED8, 0x7D43E05E,
+    0xE57D5FDA, 0x7D3980EC,
+    0xE54C34F3, 0x7D2F0E2A,
+    0xE51B0E2A, 0x7D24881A,
+    0xE4E9EB86, 0x7D19EEBE,
+    0xE4B8CD10, 0x7D0F4218,
+    0xE487B2CF, 0x7D048228,
+    0xE4569CCB, 0x7CF9AEF0,
+    0xE4258B0A, 0x7CEEC873,
+    0xE3F47D95, 0x7CE3CEB1,
+    0xE3C37473, 0x7CD8C1AD,
+    0xE3926FAC, 0x7CCDA168,
+    0xE3616F47, 0x7CC26DE5,
+    0xE330734C, 0x7CB72724,
+    0xE2FF7BC3, 0x7CABCD27,
+    0xE2CE88B2, 0x7CA05FF1,
+    0xE29D9A22, 0x7C94DF82,
+    0xE26CB01A, 0x7C894BDD,
+    0xE23BCAA2, 0x7C7DA504,
+    0xE20AE9C1, 0x7C71EAF8,
+    0xE1DA0D7E, 0x7C661DBB,
+    0xE1A935E1, 0x7C5A3D4F,
+    0xE17862F3, 0x7C4E49B6,
+    0xE14794B9, 0x7C4242F2,
+    0xE116CB3D, 0x7C362904,
+    0xE0E60684, 0x7C29FBEE,
+    0xE0B54698, 0x7C1DBBB2,
+    0xE0848B7F, 0x7C116853,
+    0xE053D541, 0x7C0501D1,
+    0xE02323E5, 0x7BF88830,
+    0xDFF27773, 0x7BEBFB70,
+    0xDFC1CFF2, 0x7BDF5B94,
+    0xDF912D6A, 0x7BD2A89E,
+    0xDF608FE3, 0x7BC5E28F,
+    0xDF2FF764, 0x7BB9096A,
+    0xDEFF63F4, 0x7BAC1D31,
+    0xDECED59B, 0x7B9F1DE5,
+    0xDE9E4C60, 0x7B920B89,
+    0xDE6DC84B, 0x7B84E61E,
+    0xDE3D4963, 0x7B77ADA8,
+    0xDE0CCFB1, 0x7B6A6227,
+    0xDDDC5B3A, 0x7B5D039D,
+    0xDDABEC07, 0x7B4F920E,
+    0xDD7B8220, 0x7B420D7A,
+    0xDD4B1D8B, 0x7B3475E4,
+    0xDD1ABE51, 0x7B26CB4F,
+    0xDCEA6478, 0x7B190DBB,
+    0xDCBA1008, 0x7B0B3D2C,
+    0xDC89C108, 0x7AFD59A3,
+    0xDC597781, 0x7AEF6323,
+    0xDC293379, 0x7AE159AE,
+    0xDBF8F4F8, 0x7AD33D45,
+    0xDBC8BC05, 0x7AC50DEB,
+    0xDB9888A8, 0x7AB6CBA3,
+    0xDB685AE8, 0x7AA8766E,
+    0xDB3832CD, 0x7A9A0E4F,
+    0xDB08105E, 0x7A8B9348,
+    0xDAD7F3A2, 0x7A7D055B,
+    0xDAA7DCA1, 0x7A6E648A,
+    0xDA77CB62, 0x7A5FB0D8,
+    0xDA47BFED, 0x7A50EA46,
+    0xDA17BA4A, 0x7A4210D8,
+    0xD9E7BA7E, 0x7A33248F,
+    0xD9B7C093, 0x7A24256E,
+    0xD987CC8F, 0x7A151377,
+    0xD957DE7A, 0x7A05EEAD,
+    0xD927F65B, 0x79F6B711,
+    0xD8F81439, 0x79E76CA6,
+    0xD8C8381C, 0x79D80F6F,
+    0xD898620C, 0x79C89F6D,
+    0xD868920F, 0x79B91CA4,
+    0xD838C82D, 0x79A98715,
+    0xD809046D, 0x7999DEC3,
+    0xD7D946D7, 0x798A23B1,
+    0xD7A98F73, 0x797A55E0,
+    0xD779DE46, 0x796A7554,
+    0xD74A335A, 0x795A820E,
+    0xD71A8EB5, 0x794A7C11,
+    0xD6EAF05E, 0x793A6360,
+    0xD6BB585D, 0x792A37FE,
+    0xD68BC6BA, 0x7919F9EB,
+    0xD65C3B7B, 0x7909A92C,
+    0xD62CB6A7, 0x78F945C3,
+    0xD5FD3847, 0x78E8CFB1,
+    0xD5CDC062, 0x78D846FB,
+    0xD59E4EFE, 0x78C7ABA1,
+    0xD56EE424, 0x78B6FDA8,
+    0xD53F7FDA, 0x78A63D10,
+    0xD5102227, 0x789569DE,
+    0xD4E0CB14, 0x78848413,
+    0xD4B17AA7, 0x78738BB3,
+    0xD48230E8, 0x786280BF,
+    0xD452EDDE, 0x7851633B,
+    0xD423B190, 0x78403328,
+    0xD3F47C06, 0x782EF08B,
+    0xD3C54D46, 0x781D9B64,
+    0xD3962559, 0x780C33B8,
+    0xD3670445, 0x77FAB988,
+    0xD337EA12, 0x77E92CD8,
+    0xD308D6C6, 0x77D78DAA,
+    0xD2D9CA6A, 0x77C5DC01,
+    0xD2AAC504, 0x77B417DF,
+    0xD27BC69C, 0x77A24148,
+    0xD24CCF38, 0x7790583D,
+    0xD21DDEE1, 0x777E5CC3,
+    0xD1EEF59E, 0x776C4EDB,
+    0xD1C01374, 0x775A2E88,
+    0xD191386D, 0x7747FBCE,
+    0xD162648F, 0x7735B6AE,
+    0xD13397E1, 0x77235F2D,
+    0xD104D26B, 0x7710F54B,
+    0xD0D61433, 0x76FE790E,
+    0xD0A75D42, 0x76EBEA77,
+    0xD078AD9D, 0x76D94988,
+    0xD04A054D, 0x76C69646,
+    0xD01B6459, 0x76B3D0B3,
+    0xCFECCAC7, 0x76A0F8D2,
+    0xCFBE389F, 0x768E0EA5,
+    0xCF8FADE8, 0x767B1230,
+    0xCF612AAA, 0x76680376,
+    0xCF32AEEB, 0x7654E279,
+    0xCF043AB2, 0x7641AF3C,
+    0xCED5CE08, 0x762E69C3,
+    0xCEA768F2, 0x761B1211,
+    0xCE790B78, 0x7607A827,
+    0xCE4AB5A2, 0x75F42C0A,
+    0xCE1C6776, 0x75E09DBD,
+    0xCDEE20FC, 0x75CCFD42,
+    0xCDBFE23A, 0x75B94A9C,
+    0xCD91AB38, 0x75A585CF,
+    0xCD637BFD, 0x7591AEDD,
+    0xCD355490, 0x757DC5CA,
+    0xCD0734F8, 0x7569CA98,
+    0xCCD91D3D, 0x7555BD4B,
+    0xCCAB0D65, 0x75419DE6,
+    0xCC7D0577, 0x752D6C6C,
+    0xCC4F057B, 0x751928E0,
+    0xCC210D78, 0x7504D345,
+    0xCBF31D75, 0x74F06B9E,
+    0xCBC53578, 0x74DBF1EF,
+    0xCB975589, 0x74C7663A,
+    0xCB697DB0, 0x74B2C883,
+    0xCB3BADF2, 0x749E18CD,
+    0xCB0DE658, 0x7489571B,
+    0xCAE026E8, 0x74748371,
+    0xCAB26FA9, 0x745F9DD1,
+    0xCA84C0A2, 0x744AA63E,
+    0xCA5719DB, 0x74359CBD,
+    0xCA297B5A, 0x74208150,
+    0xC9FBE527, 0x740B53FA,
+    0xC9CE5748, 0x73F614C0,
+    0xC9A0D1C4, 0x73E0C3A3,
+    0xC97354A3, 0x73CB60A7,
+    0xC945DFEC, 0x73B5EBD0,
+    0xC91873A5, 0x73A06522,
+    0xC8EB0FD6, 0x738ACC9E,
+    0xC8BDB485, 0x73752249,
+    0xC89061BA, 0x735F6626,
+    0xC863177B, 0x73499838,
+    0xC835D5D0, 0x7333B883,
+    0xC8089CBF, 0x731DC709,
+    0xC7DB6C50, 0x7307C3D0,
+    0xC7AE4489, 0x72F1AED8,
+    0xC7812571, 0x72DB8828,
+    0xC7540F10, 0x72C54FC0,
+    0xC727016C, 0x72AF05A6,
+    0xC6F9FC8D, 0x7298A9DC,
+    0xC6CD0079, 0x72823C66,
+    0xC6A00D36, 0x726BBD48,
+    0xC67322CD, 0x72552C84,
+    0xC6464144, 0x723E8A1F,
+    0xC61968A2, 0x7227D61C,
+    0xC5EC98ED, 0x7211107D,
+    0xC5BFD22E, 0x71FA3948,
+    0xC593146A, 0x71E3507F,
+    0xC5665FA8, 0x71CC5626,
+    0xC539B3F0, 0x71B54A40,
+    0xC50D1148, 0x719E2CD2,
+    0xC4E077B8, 0x7186FDDE,
+    0xC4B3E746, 0x716FBD68,
+    0xC4875FF8, 0x71586B73,
+    0xC45AE1D7, 0x71410804,
+    0xC42E6CE8, 0x7129931E,
+    0xC4020132, 0x71120CC5,
+    0xC3D59EBD, 0x70FA74FB,
+    0xC3A9458F, 0x70E2CBC6,
+    0xC37CF5B0, 0x70CB1127,
+    0xC350AF25, 0x70B34524,
+    0xC32471F6, 0x709B67C0,
+    0xC2F83E2A, 0x708378FE,
+    0xC2CC13C7, 0x706B78E3,
+    0xC29FF2D4, 0x70536771,
+    0xC273DB58, 0x703B44AC,
+    0xC247CD5A, 0x70231099,
+    0xC21BC8E0, 0x700ACB3B,
+    0xC1EFCDF2, 0x6FF27496,
+    0xC1C3DC96, 0x6FDA0CAD,
+    0xC197F4D3, 0x6FC19385,
+    0xC16C16B0, 0x6FA90920,
+    0xC1404233, 0x6F906D84,
+    0xC1147763, 0x6F77C0B3,
+    0xC0E8B648, 0x6F5F02B1,
+    0xC0BCFEE7, 0x6F463383,
+    0xC0915147, 0x6F2D532C,
+    0xC065AD70, 0x6F1461AF,
+    0xC03A1368, 0x6EFB5F12,
+    0xC00E8335, 0x6EE24B57,
+    0xBFE2FCDF, 0x6EC92682,
+    0xBFB7806C, 0x6EAFF098,
+    0xBF8C0DE2, 0x6E96A99C,
+    0xBF60A54A, 0x6E7D5193,
+    0xBF3546A8, 0x6E63E87F,
+    0xBF09F204, 0x6E4A6E65,
+    0xBEDEA765, 0x6E30E349,
+    0xBEB366D1, 0x6E17472F,
+    0xBE88304F, 0x6DFD9A1B,
+    0xBE5D03E5, 0x6DE3DC11,
+    0xBE31E19B, 0x6DCA0D14,
+    0xBE06C977, 0x6DB02D29,
+    0xBDDBBB7F, 0x6D963C54,
+    0xBDB0B7BA, 0x6D7C3A98,
+    0xBD85BE2F, 0x6D6227FA,
+    0xBD5ACEE5, 0x6D48047E,
+    0xBD2FE9E1, 0x6D2DD027,
+    0xBD050F2C, 0x6D138AFA,
+    0xBCDA3ECA, 0x6CF934FB,
+    0xBCAF78C3, 0x6CDECE2E,
+    0xBC84BD1E, 0x6CC45697,
+    0xBC5A0BE1, 0x6CA9CE3A,
+    0xBC2F6513, 0x6C8F351C,
+    0xBC04C8BA, 0x6C748B3F,
+    0xBBDA36DC, 0x6C59D0A9,
+    0xBBAFAF81, 0x6C3F055D,
+    0xBB8532AF, 0x6C242960,
+    0xBB5AC06C, 0x6C093CB6,
+    0xBB3058C0, 0x6BEE3F62,
+    0xBB05FBB0, 0x6BD3316A,
+    0xBADBA943, 0x6BB812D0,
+    0xBAB1617F, 0x6B9CE39B,
+    0xBA87246C, 0x6B81A3CD,
+    0xBA5CF210, 0x6B66536A,
+    0xBA32CA70, 0x6B4AF278,
+    0xBA08AD94, 0x6B2F80FA,
+    0xB9DE9B83, 0x6B13FEF5,
+    0xB9B49442, 0x6AF86C6C,
+    0xB98A97D8, 0x6ADCC964,
+    0xB960A64B, 0x6AC115E1,
+    0xB936BFA3, 0x6AA551E8,
+    0xB90CE3E6, 0x6A897D7D,
+    0xB8E31319, 0x6A6D98A4,
+    0xB8B94D44, 0x6A51A361,
+    0xB88F926C, 0x6A359DB9,
+    0xB865E299, 0x6A1987B0,
+    0xB83C3DD1, 0x69FD614A,
+    0xB812A419, 0x69E12A8C,
+    0xB7E9157A, 0x69C4E37A,
+    0xB7BF91F8, 0x69A88C18,
+    0xB796199B, 0x698C246C,
+    0xB76CAC68, 0x696FAC78,
+    0xB7434A67, 0x69532442,
+    0xB719F39D, 0x69368BCE,
+    0xB6F0A811, 0x6919E320,
+    0xB6C767CA, 0x68FD2A3D,
+    0xB69E32CD, 0x68E06129,
+    0xB6750921, 0x68C387E9,
+    0xB64BEACC, 0x68A69E81,
+    0xB622D7D5, 0x6889A4F5,
+    0xB5F9D042, 0x686C9B4B,
+    0xB5D0D41A, 0x684F8186,
+    0xB5A7E362, 0x683257AA,
+    0xB57EFE21, 0x68151DBE,
+    0xB556245E, 0x67F7D3C4,
+    0xB52D561E, 0x67DA79C2,
+    0xB5049368, 0x67BD0FBC,
+    0xB4DBDC42, 0x679F95B7,
+    0xB4B330B2, 0x67820BB6,
+    0xB48A90C0, 0x676471C0,
+    0xB461FC70, 0x6746C7D7,
+    0xB43973C9, 0x67290E02,
+    0xB410F6D2, 0x670B4443,
+    0xB3E88591, 0x66ED6AA1,
+    0xB3C0200C, 0x66CF811F,
+    0xB397C649, 0x66B187C3,
+    0xB36F784E, 0x66937E90,
+    0xB3473622, 0x6675658C,
+    0xB31EFFCB, 0x66573CBB,
+    0xB2F6D54F, 0x66390422,
+    0xB2CEB6B5, 0x661ABBC5,
+    0xB2A6A401, 0x65FC63A9,
+    0xB27E9D3B, 0x65DDFBD3,
+    0xB256A26A, 0x65BF8447,
+    0xB22EB392, 0x65A0FD0B,
+    0xB206D0BA, 0x65826622,
+    0xB1DEF9E8, 0x6563BF92,
+    0xB1B72F23, 0x6545095F,
+    0xB18F7070, 0x6526438E,
+    0xB167BDD6, 0x65076E24,
+    0xB140175B, 0x64E88926,
+    0xB1187D05, 0x64C99498,
+    0xB0F0EEDA, 0x64AA907F,
+    0xB0C96CDF, 0x648B7CDF,
+    0xB0A1F71C, 0x646C59BF,
+    0xB07A8D97, 0x644D2722,
+    0xB0533055, 0x642DE50D,
+    0xB02BDF5C, 0x640E9385,
+    0xB0049AB2, 0x63EF328F,
+    0xAFDD625F, 0x63CFC230,
+    0xAFB63667, 0x63B0426D,
+    0xAF8F16D0, 0x6390B34A,
+    0xAF6803A1, 0x637114CC,
+    0xAF40FCE0, 0x635166F8,
+    0xAF1A0293, 0x6331A9D4,
+    0xAEF314BF, 0x6311DD63,
+    0xAECC336B, 0x62F201AC,
+    0xAEA55E9D, 0x62D216B2,
+    0xAE7E965B, 0x62B21C7B,
+    0xAE57DAAA, 0x6292130C,
+    0xAE312B91, 0x6271FA69,
+    0xAE0A8916, 0x6251D297,
+    0xADE3F33E, 0x62319B9D,
+    0xADBD6A10, 0x6211557D,
+    0xAD96ED91, 0x61F1003E,
+    0xAD707DC8, 0x61D09BE5,
+    0xAD4A1ABA, 0x61B02876,
+    0xAD23C46D, 0x618FA5F6,
+    0xACFD7AE8, 0x616F146B,
+    0xACD73E30, 0x614E73D9,
+    0xACB10E4A, 0x612DC446,
+    0xAC8AEB3E, 0x610D05B7,
+    0xAC64D510, 0x60EC3830,
+    0xAC3ECBC7, 0x60CB5BB6,
+    0xAC18CF68, 0x60AA704F,
+    0xABF2DFFA, 0x60897600,
+    0xABCCFD82, 0x60686CCE,
+    0xABA72806, 0x604754BE,
+    0xAB815F8C, 0x60262DD5,
+    0xAB5BA41A, 0x6004F818,
+    0xAB35F5B5, 0x5FE3B38D,
+    0xAB105464, 0x5FC26038,
+    0xAAEAC02B, 0x5FA0FE1E,
+    0xAAC53912, 0x5F7F8D46,
+    0xAA9FBF1D, 0x5F5E0DB3,
+    0xAA7A5253, 0x5F3C7F6B,
+    0xAA54F2B9, 0x5F1AE273,
+    0xAA2FA055, 0x5EF936D1,
+    0xAA0A5B2D, 0x5ED77C89,
+    0xA9E52347, 0x5EB5B3A1,
+    0xA9BFF8A8, 0x5E93DC1F,
+    0xA99ADB56, 0x5E71F606,
+    0xA975CB56, 0x5E50015D,
+    0xA950C8AF, 0x5E2DFE28,
+    0xA92BD366, 0x5E0BEC6E,
+    0xA906EB81, 0x5DE9CC32,
+    0xA8E21106, 0x5DC79D7C,
+    0xA8BD43FA, 0x5DA5604E,
+    0xA8988463, 0x5D8314B0,
+    0xA873D246, 0x5D60BAA6,
+    0xA84F2DA9, 0x5D3E5236,
+    0xA82A9693, 0x5D1BDB65,
+    0xA8060D08, 0x5CF95638,
+    0xA7E1910E, 0x5CD6C2B4,
+    0xA7BD22AB, 0x5CB420DF,
+    0xA798C1E4, 0x5C9170BF,
+    0xA7746EC0, 0x5C6EB258,
+    0xA7502943, 0x5C4BE5B0,
+    0xA72BF173, 0x5C290ACC,
+    0xA707C756, 0x5C0621B2,
+    0xA6E3AAF2, 0x5BE32A67,
+    0xA6BF9C4B, 0x5BC024F0,
+    0xA69B9B68, 0x5B9D1153,
+    0xA677A84E, 0x5B79EF96,
+    0xA653C302, 0x5B56BFBD,
+    0xA62FEB8B, 0x5B3381CE,
+    0xA60C21ED, 0x5B1035CF,
+    0xA5E8662F, 0x5AECDBC4,
+    0xA5C4B855, 0x5AC973B4,
+    0xA5A11865, 0x5AA5FDA4,
+    0xA57D8666, 0x5A82799A,
+    0xA55A025B, 0x5A5EE79A,
+    0xA5368C4B, 0x5A3B47AA,
+    0xA513243B, 0x5A1799D0,
+    0xA4EFCA31, 0x59F3DE12,
+    0xA4CC7E31, 0x59D01474,
+    0xA4A94042, 0x59AC3CFD,
+    0xA4861069, 0x598857B1,
+    0xA462EEAC, 0x59646497,
+    0xA43FDB0F, 0x594063B4,
+    0xA41CD598, 0x591C550E,
+    0xA3F9DE4D, 0x58F838A9,
+    0xA3D6F533, 0x58D40E8C,
+    0xA3B41A4F, 0x58AFD6BC,
+    0xA3914DA7, 0x588B913F,
+    0xA36E8F40, 0x58673E1B,
+    0xA34BDF20, 0x5842DD54,
+    0xA3293D4B, 0x581E6EF1,
+    0xA306A9C7, 0x57F9F2F7,
+    0xA2E4249A, 0x57D5696C,
+    0xA2C1ADC9, 0x57B0D256,
+    0xA29F4559, 0x578C2DB9,
+    0xA27CEB4F, 0x57677B9D,
+    0xA25A9FB1, 0x5742BC05,
+    0xA2386283, 0x571DEEF9,
+    0xA21633CD, 0x56F9147E,
+    0xA1F41391, 0x56D42C99,
+    0xA1D201D7, 0x56AF3750,
+    0xA1AFFEA2, 0x568A34A9,
+    0xA18E09F9, 0x566524AA,
+    0xA16C23E1, 0x56400757,
+    0xA14A4C5E, 0x561ADCB8,
+    0xA1288376, 0x55F5A4D2,
+    0xA106C92E, 0x55D05FAA,
+    0xA0E51D8C, 0x55AB0D46,
+    0xA0C38094, 0x5585ADAC,
+    0xA0A1F24C, 0x556040E2,
+    0xA08072BA, 0x553AC6ED,
+    0xA05F01E1, 0x55153FD4,
+    0xA03D9FC7, 0x54EFAB9C,
+    0xA01C4C72, 0x54CA0A4A,
+    0x9FFB07E7, 0x54A45BE5,
+    0x9FD9D22A, 0x547EA073,
+    0x9FB8AB41, 0x5458D7F9,
+    0x9F979331, 0x5433027D,
+    0x9F7689FF, 0x540D2005,
+    0x9F558FB0, 0x53E73097,
+    0x9F34A449, 0x53C13438,
+    0x9F13C7D0, 0x539B2AEF,
+    0x9EF2FA48, 0x537514C1,
+    0x9ED23BB9, 0x534EF1B5,
+    0x9EB18C26, 0x5328C1D0,
+    0x9E90EB94, 0x53028517,
+    0x9E705A09, 0x52DC3B92,
+    0x9E4FD789, 0x52B5E545,
+    0x9E2F641A, 0x528F8237,
+    0x9E0EFFC1, 0x5269126E,
+    0x9DEEAA82, 0x524295EF,
+    0x9DCE6462, 0x521C0CC1,
+    0x9DAE2D68, 0x51F576E9,
+    0x9D8E0596, 0x51CED46E,
+    0x9D6DECF4, 0x51A82555,
+    0x9D4DE384, 0x518169A4,
+    0x9D2DE94D, 0x515AA162,
+    0x9D0DFE53, 0x5133CC94,
+    0x9CEE229C, 0x510CEB40,
+    0x9CCE562B, 0x50E5FD6C,
+    0x9CAE9907, 0x50BF031F,
+    0x9C8EEB33, 0x5097FC5E,
+    0x9C6F4CB5, 0x5070E92F,
+    0x9C4FBD92, 0x5049C999,
+    0x9C303DCF, 0x50229DA0,
+    0x9C10CD70, 0x4FFB654D,
+    0x9BF16C7A, 0x4FD420A3,
+    0x9BD21AF2, 0x4FACCFAB,
+    0x9BB2D8DD, 0x4F857268,
+    0x9B93A640, 0x4F5E08E3,
+    0x9B748320, 0x4F369320,
+    0x9B556F80, 0x4F0F1126,
+    0x9B366B67, 0x4EE782FA,
+    0x9B1776D9, 0x4EBFE8A4,
+    0x9AF891DB, 0x4E984229,
+    0x9AD9BC71, 0x4E708F8F,
+    0x9ABAF6A0, 0x4E48D0DC,
+    0x9A9C406D, 0x4E210617,
+    0x9A7D99DD, 0x4DF92F45,
+    0x9A5F02F5, 0x4DD14C6E,
+    0x9A407BB8, 0x4DA95D96,
+    0x9A22042C, 0x4D8162C4,
+    0x9A039C56, 0x4D595BFE,
+    0x99E5443A, 0x4D31494B,
+    0x99C6FBDE, 0x4D092AB0,
+    0x99A8C344, 0x4CE10034,
+    0x998A9A73, 0x4CB8C9DD,
+    0x996C816F, 0x4C9087B1,
+    0x994E783C, 0x4C6839B6,
+    0x99307EE0, 0x4C3FDFF3,
+    0x9912955E, 0x4C177A6E,
+    0x98F4BBBC, 0x4BEF092D,
+    0x98D6F1FE, 0x4BC68C36,
+    0x98B93828, 0x4B9E038F,
+    0x989B8E3F, 0x4B756F3F,
+    0x987DF449, 0x4B4CCF4D,
+    0x98606A48, 0x4B2423BD,
+    0x9842F043, 0x4AFB6C97,
+    0x9825863D, 0x4AD2A9E1,
+    0x98082C3B, 0x4AA9DBA1,
+    0x97EAE241, 0x4A8101DE,
+    0x97CDA855, 0x4A581C9D,
+    0x97B07E7A, 0x4A2F2BE5,
+    0x979364B5, 0x4A062FBD,
+    0x97765B0A, 0x49DD282A,
+    0x9759617E, 0x49B41533,
+    0x973C7816, 0x498AF6DE,
+    0x971F9ED6, 0x4961CD32,
+    0x9702D5C2, 0x49389836,
+    0x96E61CDF, 0x490F57EE,
+    0x96C97431, 0x48E60C62,
+    0x96ACDBBD, 0x48BCB598,
+    0x96905387, 0x48935397,
+    0x9673DB94, 0x4869E664,
+    0x965773E7, 0x48406E07,
+    0x963B1C85, 0x4816EA85,
+    0x961ED573, 0x47ED5BE6,
+    0x96029EB5, 0x47C3C22E,
+    0x95E6784F, 0x479A1D66,
+    0x95CA6246, 0x47706D93,
+    0x95AE5C9E, 0x4746B2BC,
+    0x9592675B, 0x471CECE6,
+    0x95768282, 0x46F31C1A,
+    0x955AAE17, 0x46C9405C,
+    0x953EEA1E, 0x469F59B4,
+    0x9523369B, 0x46756827,
+    0x95079393, 0x464B6BBD,
+    0x94EC010B, 0x4621647C,
+    0x94D07F05, 0x45F7526B,
+    0x94B50D87, 0x45CD358F,
+    0x9499AC95, 0x45A30DF0,
+    0x947E5C32, 0x4578DB93,
+    0x94631C64, 0x454E9E80,
+    0x9447ED2F, 0x452456BC,
+    0x942CCE95, 0x44FA044F,
+    0x9411C09D, 0x44CFA73F,
+    0x93F6C34A, 0x44A53F93,
+    0x93DBD69F, 0x447ACD50,
+    0x93C0FAA2, 0x4450507E,
+    0x93A62F56, 0x4425C923,
+    0x938B74C0, 0x43FB3745,
+    0x9370CAE4, 0x43D09AEC,
+    0x935631C5, 0x43A5F41E,
+    0x933BA968, 0x437B42E1,
+    0x932131D1, 0x4350873C,
+    0x9306CB04, 0x4325C135,
+    0x92EC7505, 0x42FAF0D4,
+    0x92D22FD8, 0x42D0161E,
+    0x92B7FB82, 0x42A5311A,
+    0x929DD805, 0x427A41D0,
+    0x9283C567, 0x424F4845,
+    0x9269C3AC, 0x42244480,
+    0x924FD2D6, 0x41F93688,
+    0x9235F2EB, 0x41CE1E64,
+    0x921C23EE, 0x41A2FC1A,
+    0x920265E4, 0x4177CFB0,
+    0x91E8B8D0, 0x414C992E,
+    0x91CF1CB6, 0x4121589A,
+    0x91B5919A, 0x40F60DFB,
+    0x919C1780, 0x40CAB957,
+    0x9182AE6C, 0x409F5AB6,
+    0x91695663, 0x4073F21D,
+    0x91500F67, 0x40487F93,
+    0x9136D97D, 0x401D0320,
+    0x911DB4A8, 0x3FF17CCA,
+    0x9104A0ED, 0x3FC5EC97,
+    0x90EB9E50, 0x3F9A528F,
+    0x90D2ACD3, 0x3F6EAEB8,
+    0x90B9CC7C, 0x3F430118,
+    0x90A0FD4E, 0x3F1749B7,
+    0x90883F4C, 0x3EEB889C,
+    0x906F927B, 0x3EBFBDCC,
+    0x9056F6DF, 0x3E93E94F,
+    0x903E6C7A, 0x3E680B2C,
+    0x9025F352, 0x3E3C2369,
+    0x900D8B69, 0x3E10320D,
+    0x8FF534C4, 0x3DE4371F,
+    0x8FDCEF66, 0x3DB832A5,
+    0x8FC4BB53, 0x3D8C24A7,
+    0x8FAC988E, 0x3D600D2B,
+    0x8F94871D, 0x3D33EC39,
+    0x8F7C8701, 0x3D07C1D5,
+    0x8F64983F, 0x3CDB8E09,
+    0x8F4CBADB, 0x3CAF50DA,
+    0x8F34EED8, 0x3C830A4F,
+    0x8F1D343A, 0x3C56BA70,
+    0x8F058B04, 0x3C2A6142,
+    0x8EEDF33B, 0x3BFDFECD,
+    0x8ED66CE1, 0x3BD19317,
+    0x8EBEF7FB, 0x3BA51E29,
+    0x8EA7948C, 0x3B78A007,
+    0x8E904298, 0x3B4C18BA,
+    0x8E790222, 0x3B1F8847,
+    0x8E61D32D, 0x3AF2EEB7,
+    0x8E4AB5BF, 0x3AC64C0F,
+    0x8E33A9D9, 0x3A99A057,
+    0x8E1CAF80, 0x3A6CEB95,
+    0x8E05C6B7, 0x3A402DD1,
+    0x8DEEEF82, 0x3A136712,
+    0x8DD829E4, 0x39E6975D,
+    0x8DC175E0, 0x39B9BEBB,
+    0x8DAAD37B, 0x398CDD32,
+    0x8D9442B7, 0x395FF2C9,
+    0x8D7DC399, 0x3932FF87,
+    0x8D675623, 0x39060372,
+    0x8D50FA59, 0x38D8FE93,
+    0x8D3AB03F, 0x38ABF0EF,
+    0x8D2477D8, 0x387EDA8E,
+    0x8D0E5127, 0x3851BB76,
+    0x8CF83C30, 0x382493B0,
+    0x8CE238F6, 0x37F76340,
+    0x8CCC477D, 0x37CA2A30,
+    0x8CB667C7, 0x379CE884,
+    0x8CA099D9, 0x376F9E46,
+    0x8C8ADDB6, 0x37424B7A,
+    0x8C753361, 0x3714F02A,
+    0x8C5F9ADD, 0x36E78C5A,
+    0x8C4A142F, 0x36BA2013,
+    0x8C349F58, 0x368CAB5C,
+    0x8C1F3C5C, 0x365F2E3B,
+    0x8C09EB40, 0x3631A8B7,
+    0x8BF4AC05, 0x36041AD9,
+    0x8BDF7EAF, 0x35D684A5,
+    0x8BCA6342, 0x35A8E624,
+    0x8BB559C1, 0x357B3F5D,
+    0x8BA0622F, 0x354D9056,
+    0x8B8B7C8F, 0x351FD917,
+    0x8B76A8E4, 0x34F219A7,
+    0x8B61E732, 0x34C4520D,
+    0x8B4D377C, 0x3496824F,
+    0x8B3899C5, 0x3468AA76,
+    0x8B240E10, 0x343ACA87,
+    0x8B0F9461, 0x340CE28A,
+    0x8AFB2CBA, 0x33DEF287,
+    0x8AE6D71F, 0x33B0FA84,
+    0x8AD29393, 0x3382FA88,
+    0x8ABE6219, 0x3354F29A,
+    0x8AAA42B4, 0x3326E2C2,
+    0x8A963567, 0x32F8CB07,
+    0x8A823A35, 0x32CAAB6F,
+    0x8A6E5122, 0x329C8402,
+    0x8A5A7A30, 0x326E54C7,
+    0x8A46B563, 0x32401DC5,
+    0x8A3302BD, 0x3211DF03,
+    0x8A1F6242, 0x31E39889,
+    0x8A0BD3F5, 0x31B54A5D,
+    0x89F857D8, 0x3186F487,
+    0x89E4EDEE, 0x3158970D,
+    0x89D1963C, 0x312A31F8,
+    0x89BE50C3, 0x30FBC54D,
+    0x89AB1D86, 0x30CD5114,
+    0x8997FC89, 0x309ED555,
+    0x8984EDCF, 0x30705217,
+    0x8971F15A, 0x3041C760,
+    0x895F072D, 0x30133538,
+    0x894C2F4C, 0x2FE49BA6,
+    0x893969B9, 0x2FB5FAB2,
+    0x8926B677, 0x2F875262,
+    0x89141589, 0x2F58A2BD,
+    0x890186F1, 0x2F29EBCC,
+    0x88EF0AB4, 0x2EFB2D94,
+    0x88DCA0D3, 0x2ECC681E,
+    0x88CA4951, 0x2E9D9B70,
+    0x88B80431, 0x2E6EC792,
+    0x88A5D177, 0x2E3FEC8B,
+    0x8893B124, 0x2E110A62,
+    0x8881A33C, 0x2DE2211E,
+    0x886FA7C2, 0x2DB330C7,
+    0x885DBEB7, 0x2D843963,
+    0x884BE820, 0x2D553AFB,
+    0x883A23FE, 0x2D263595,
+    0x88287255, 0x2CF72939,
+    0x8816D327, 0x2CC815ED,
+    0x88054677, 0x2C98FBBA,
+    0x87F3CC47, 0x2C69DAA6,
+    0x87E2649B, 0x2C3AB2B9,
+    0x87D10F75, 0x2C0B83F9,
+    0x87BFCCD7, 0x2BDC4E6F,
+    0x87AE9CC5, 0x2BAD1221,
+    0x879D7F40, 0x2B7DCF17,
+    0x878C744C, 0x2B4E8558,
+    0x877B7BEC, 0x2B1F34EB,
+    0x876A9621, 0x2AEFDDD8,
+    0x8759C2EF, 0x2AC08025,
+    0x87490257, 0x2A911BDB,
+    0x8738545E, 0x2A61B101,
+    0x8727B904, 0x2A323F9D,
+    0x8717304E, 0x2A02C7B8,
+    0x8706BA3C, 0x29D34958,
+    0x86F656D3, 0x29A3C484,
+    0x86E60614, 0x29743945,
+    0x86D5C802, 0x2944A7A2,
+    0x86C59C9F, 0x29150FA1,
+    0x86B583EE, 0x28E5714A,
+    0x86A57DF1, 0x28B5CCA5,
+    0x86958AAB, 0x288621B9,
+    0x8685AA1F, 0x2856708C,
+    0x8675DC4E, 0x2826B928,
+    0x8666213C, 0x27F6FB92,
+    0x865678EA, 0x27C737D2,
+    0x8646E35B, 0x27976DF1,
+    0x86376092, 0x27679DF4,
+    0x8627F090, 0x2737C7E3,
+    0x86189359, 0x2707EBC6,
+    0x860948EE, 0x26D809A5,
+    0x85FA1152, 0x26A82185,
+    0x85EAEC88, 0x26783370,
+    0x85DBDA91, 0x26483F6C,
+    0x85CCDB70, 0x26184581,
+    0x85BDEF27, 0x25E845B5,
+    0x85AF15B9, 0x25B84012,
+    0x85A04F28, 0x2588349D,
+    0x85919B75, 0x2558235E,
+    0x8582FAA4, 0x25280C5D,
+    0x85746CB7, 0x24F7EFA1,
+    0x8565F1B0, 0x24C7CD32,
+    0x85578991, 0x2497A517,
+    0x8549345C, 0x24677757,
+    0x853AF214, 0x243743FA,
+    0x852CC2BA, 0x24070B07,
+    0x851EA652, 0x23D6CC86,
+    0x85109CDC, 0x23A6887E,
+    0x8502A65C, 0x23763EF7,
+    0x84F4C2D3, 0x2345EFF7,
+    0x84E6F244, 0x23159B87,
+    0x84D934B0, 0x22E541AE,
+    0x84CB8A1B, 0x22B4E274,
+    0x84BDF285, 0x22847DDF,
+    0x84B06DF1, 0x225413F8,
+    0x84A2FC62, 0x2223A4C5,
+    0x84959DD9, 0x21F3304E,
+    0x84885257, 0x21C2B69C,
+    0x847B19E1, 0x219237B4,
+    0x846DF476, 0x2161B39F,
+    0x8460E21A, 0x21312A65,
+    0x8453E2CE, 0x21009C0B,
+    0x8446F695, 0x20D0089B,
+    0x843A1D70, 0x209F701C,
+    0x842D5761, 0x206ED295,
+    0x8420A46B, 0x203E300D,
+    0x8414048F, 0x200D888C,
+    0x840777CF, 0x1FDCDC1A,
+    0x83FAFE2E, 0x1FAC2ABF,
+    0x83EE97AC, 0x1F7B7480,
+    0x83E2444D, 0x1F4AB967,
+    0x83D60411, 0x1F19F97B,
+    0x83C9D6FB, 0x1EE934C2,
+    0x83BDBD0D, 0x1EB86B46,
+    0x83B1B649, 0x1E879D0C,
+    0x83A5C2B0, 0x1E56CA1E,
+    0x8399E244, 0x1E25F281,
+    0x838E1507, 0x1DF5163F,
+    0x83825AFB, 0x1DC4355D,
+    0x8376B422, 0x1D934FE5,
+    0x836B207D, 0x1D6265DD,
+    0x835FA00E, 0x1D31774D,
+    0x835432D8, 0x1D00843C,
+    0x8348D8DB, 0x1CCF8CB3,
+    0x833D921A, 0x1C9E90B8,
+    0x83325E97, 0x1C6D9053,
+    0x83273E52, 0x1C3C8B8C,
+    0x831C314E, 0x1C0B826A,
+    0x8311378C, 0x1BDA74F5,
+    0x8306510F, 0x1BA96334,
+    0x82FB7DD8, 0x1B784D30,
+    0x82F0BDE8, 0x1B4732EF,
+    0x82E61141, 0x1B161479,
+    0x82DB77E5, 0x1AE4F1D6,
+    0x82D0F1D5, 0x1AB3CB0C,
+    0x82C67F13, 0x1A82A025,
+    0x82BC1FA1, 0x1A517127,
+    0x82B1D381, 0x1A203E1B,
+    0x82A79AB3, 0x19EF0706,
+    0x829D753A, 0x19BDCBF2,
+    0x82936316, 0x198C8CE6,
+    0x8289644A, 0x195B49E9,
+    0x827F78D8, 0x192A0303,
+    0x8275A0C0, 0x18F8B83C,
+    0x826BDC04, 0x18C7699B,
+    0x82622AA5, 0x18961727,
+    0x82588CA6, 0x1864C0E9,
+    0x824F0208, 0x183366E8,
+    0x82458ACB, 0x1802092C,
+    0x823C26F2, 0x17D0A7BB,
+    0x8232D67E, 0x179F429F,
+    0x82299971, 0x176DD9DE,
+    0x82206FCB, 0x173C6D80,
+    0x8217598F, 0x170AFD8D,
+    0x820E56BE, 0x16D98A0C,
+    0x82056758, 0x16A81305,
+    0x81FC8B60, 0x1676987F,
+    0x81F3C2D7, 0x16451A83,
+    0x81EB0DBD, 0x16139917,
+    0x81E26C16, 0x15E21444,
+    0x81D9DDE1, 0x15B08C11,
+    0x81D16320, 0x157F0086,
+    0x81C8FBD5, 0x154D71AA,
+    0x81C0A801, 0x151BDF85,
+    0x81B867A4, 0x14EA4A1F,
+    0x81B03AC1, 0x14B8B17F,
+    0x81A82159, 0x148715AD,
+    0x81A01B6C, 0x145576B1,
+    0x819828FD, 0x1423D492,
+    0x81904A0C, 0x13F22F57,
+    0x81887E9A, 0x13C0870A,
+    0x8180C6A9, 0x138EDBB0,
+    0x8179223A, 0x135D2D53,
+    0x8171914E, 0x132B7BF9,
+    0x816A13E6, 0x12F9C7AA,
+    0x8162AA03, 0x12C8106E,
+    0x815B53A8, 0x1296564D,
+    0x815410D3, 0x1264994E,
+    0x814CE188, 0x1232D978,
+    0x8145C5C6, 0x120116D4,
+    0x813EBD90, 0x11CF516A,
+    0x8137C8E6, 0x119D8940,
+    0x8130E7C8, 0x116BBE5F,
+    0x812A1A39, 0x1139F0CE,
+    0x81236039, 0x11082096,
+    0x811CB9CA, 0x10D64DBC,
+    0x811626EC, 0x10A4784A,
+    0x810FA7A0, 0x1072A047,
+    0x81093BE8, 0x1040C5BB,
+    0x8102E3C3, 0x100EE8AD,
+    0x80FC9F35, 0x0FDD0925,
+    0x80F66E3C, 0x0FAB272B,
+    0x80F050DB, 0x0F7942C6,
+    0x80EA4712, 0x0F475BFE,
+    0x80E450E2, 0x0F1572DC,
+    0x80DE6E4C, 0x0EE38765,
+    0x80D89F51, 0x0EB199A3,
+    0x80D2E3F1, 0x0E7FA99D,
+    0x80CD3C2F, 0x0E4DB75B,
+    0x80C7A80A, 0x0E1BC2E3,
+    0x80C22783, 0x0DE9CC3F,
+    0x80BCBA9C, 0x0DB7D376,
+    0x80B76155, 0x0D85D88F,
+    0x80B21BAF, 0x0D53DB92,
+    0x80ACE9AB, 0x0D21DC87,
+    0x80A7CB49, 0x0CEFDB75,
+    0x80A2C08B, 0x0CBDD865,
+    0x809DC970, 0x0C8BD35E,
+    0x8098E5FB, 0x0C59CC67,
+    0x8094162B, 0x0C27C389,
+    0x808F5A02, 0x0BF5B8CB,
+    0x808AB180, 0x0BC3AC35,
+    0x80861CA5, 0x0B919DCE,
+    0x80819B74, 0x0B5F8D9F,
+    0x807D2DEB, 0x0B2D7BAE,
+    0x8078D40D, 0x0AFB6805,
+    0x80748DD9, 0x0AC952AA,
+    0x80705B50, 0x0A973BA5,
+    0x806C3C73, 0x0A6522FE,
+    0x80683143, 0x0A3308BC,
+    0x806439C0, 0x0A00ECE8,
+    0x806055EA, 0x09CECF89,
+    0x805C85C3, 0x099CB0A7,
+    0x8058C94C, 0x096A9049,
+    0x80552083, 0x09386E77,
+    0x80518B6B, 0x09064B3A,
+    0x804E0A03, 0x08D42698,
+    0x804A9C4D, 0x08A2009A,
+    0x80474248, 0x086FD947,
+    0x8043FBF6, 0x083DB0A7,
+    0x8040C956, 0x080B86C1,
+    0x803DAA69, 0x07D95B9E,
+    0x803A9F31, 0x07A72F45,
+    0x8037A7AC, 0x077501BE,
+    0x8034C3DC, 0x0742D310,
+    0x8031F3C1, 0x0710A344,
+    0x802F375C, 0x06DE7261,
+    0x802C8EAD, 0x06AC406F,
+    0x8029F9B4, 0x067A0D75,
+    0x80277872, 0x0647D97C,
+    0x80250AE7, 0x0615A48A,
+    0x8022B113, 0x05E36EA9,
+    0x80206AF8, 0x05B137DF,
+    0x801E3894, 0x057F0034,
+    0x801C19E9, 0x054CC7B0,
+    0x801A0EF7, 0x051A8E5C,
+    0x801817BF, 0x04E8543D,
+    0x80163440, 0x04B6195D,
+    0x8014647A, 0x0483DDC3,
+    0x8012A86F, 0x0451A176,
+    0x8011001E, 0x041F647F,
+    0x800F6B88, 0x03ED26E6,
+    0x800DEAAC, 0x03BAE8B1,
+    0x800C7D8C, 0x0388A9E9,
+    0x800B2427, 0x03566A96,
+    0x8009DE7D, 0x03242ABF,
+    0x8008AC90, 0x02F1EA6B,
+    0x80078E5E, 0x02BFA9A4,
+    0x800683E8, 0x028D6870,
+    0x80058D2E, 0x025B26D7,
+    0x8004AA31, 0x0228E4E1,
+    0x8003DAF0, 0x01F6A296,
+    0x80031F6C, 0x01C45FFE,
+    0x800277A5, 0x01921D1F,
+    0x8001E39B, 0x015FDA03,
+    0x8001634D, 0x012D96B0,
+    0x8000F6BD, 0x00FB532F,
+    0x80009DE9, 0x00C90F88,
+    0x800058D3, 0x0096CBC1,
+    0x8000277A, 0x006487E3,
+    0x800009DE, 0x003243F5,
+    0x80000000, 0x00000000,
+    0x800009DE, 0xFFCDBC0A,
+    0x8000277A, 0xFF9B781D,
+    0x800058D3, 0xFF69343E,
+    0x80009DE9, 0xFF36F078,
+    0x8000F6BD, 0xFF04ACD0,
+    0x8001634D, 0xFED2694F,
+    0x8001E39B, 0xFEA025FC,
+    0x800277A5, 0xFE6DE2E0,
+    0x80031F6C, 0xFE3BA001,
+    0x8003DAF0, 0xFE095D69,
+    0x8004AA31, 0xFDD71B1E,
+    0x80058D2E, 0xFDA4D928,
+    0x800683E8, 0xFD72978F,
+    0x80078E5E, 0xFD40565B,
+    0x8008AC90, 0xFD0E1594,
+    0x8009DE7D, 0xFCDBD541,
+    0x800B2427, 0xFCA99569,
+    0x800C7D8C, 0xFC775616,
+    0x800DEAAC, 0xFC45174E,
+    0x800F6B88, 0xFC12D919,
+    0x8011001E, 0xFBE09B80,
+    0x8012A86F, 0xFBAE5E89,
+    0x8014647A, 0xFB7C223C,
+    0x80163440, 0xFB49E6A2,
+    0x801817BF, 0xFB17ABC2,
+    0x801A0EF7, 0xFAE571A4,
+    0x801C19E9, 0xFAB3384F,
+    0x801E3894, 0xFA80FFCB,
+    0x80206AF8, 0xFA4EC820,
+    0x8022B113, 0xFA1C9156,
+    0x80250AE7, 0xF9EA5B75,
+    0x80277872, 0xF9B82683,
+    0x8029F9B4, 0xF985F28A,
+    0x802C8EAD, 0xF953BF90,
+    0x802F375C, 0xF9218D9E,
+    0x8031F3C1, 0xF8EF5CBB,
+    0x8034C3DC, 0xF8BD2CEF,
+    0x8037A7AC, 0xF88AFE41,
+    0x803A9F31, 0xF858D0BA,
+    0x803DAA69, 0xF826A461,
+    0x8040C956, 0xF7F4793E,
+    0x8043FBF6, 0xF7C24F58,
+    0x80474248, 0xF79026B8,
+    0x804A9C4D, 0xF75DFF65,
+    0x804E0A03, 0xF72BD967,
+    0x80518B6B, 0xF6F9B4C5,
+    0x80552083, 0xF6C79188,
+    0x8058C94C, 0xF6956FB6,
+    0x805C85C3, 0xF6634F58,
+    0x806055EA, 0xF6313076,
+    0x806439C0, 0xF5FF1317,
+    0x80683143, 0xF5CCF743,
+    0x806C3C73, 0xF59ADD01,
+    0x80705B50, 0xF568C45A,
+    0x80748DD9, 0xF536AD55,
+    0x8078D40D, 0xF50497FA,
+    0x807D2DEB, 0xF4D28451,
+    0x80819B74, 0xF4A07260,
+    0x80861CA5, 0xF46E6231,
+    0x808AB180, 0xF43C53CA,
+    0x808F5A02, 0xF40A4734,
+    0x8094162B, 0xF3D83C76,
+    0x8098E5FB, 0xF3A63398,
+    0x809DC970, 0xF3742CA1,
+    0x80A2C08B, 0xF342279A,
+    0x80A7CB49, 0xF310248A,
+    0x80ACE9AB, 0xF2DE2378,
+    0x80B21BAF, 0xF2AC246D,
+    0x80B76155, 0xF27A2770,
+    0x80BCBA9C, 0xF2482C89,
+    0x80C22783, 0xF21633C0,
+    0x80C7A80A, 0xF1E43D1C,
+    0x80CD3C2F, 0xF1B248A5,
+    0x80D2E3F1, 0xF1805662,
+    0x80D89F51, 0xF14E665C,
+    0x80DE6E4C, 0xF11C789A,
+    0x80E450E2, 0xF0EA8D23,
+    0x80EA4712, 0xF0B8A401,
+    0x80F050DB, 0xF086BD39,
+    0x80F66E3C, 0xF054D8D4,
+    0x80FC9F35, 0xF022F6DA,
+    0x8102E3C3, 0xEFF11752,
+    0x81093BE8, 0xEFBF3A44,
+    0x810FA7A0, 0xEF8D5FB8,
+    0x811626EC, 0xEF5B87B5,
+    0x811CB9CA, 0xEF29B243,
+    0x81236039, 0xEEF7DF6A,
+    0x812A1A39, 0xEEC60F31,
+    0x8130E7C8, 0xEE9441A0,
+    0x8137C8E6, 0xEE6276BF,
+    0x813EBD90, 0xEE30AE95,
+    0x8145C5C6, 0xEDFEE92B,
+    0x814CE188, 0xEDCD2687,
+    0x815410D3, 0xED9B66B2,
+    0x815B53A8, 0xED69A9B2,
+    0x8162AA03, 0xED37EF91,
+    0x816A13E6, 0xED063855,
+    0x8171914E, 0xECD48406,
+    0x8179223A, 0xECA2D2AC,
+    0x8180C6A9, 0xEC71244F,
+    0x81887E9A, 0xEC3F78F5,
+    0x81904A0C, 0xEC0DD0A8,
+    0x819828FD, 0xEBDC2B6D,
+    0x81A01B6C, 0xEBAA894E,
+    0x81A82159, 0xEB78EA52,
+    0x81B03AC1, 0xEB474E80,
+    0x81B867A4, 0xEB15B5E0,
+    0x81C0A801, 0xEAE4207A,
+    0x81C8FBD5, 0xEAB28E55,
+    0x81D16320, 0xEA80FF79,
+    0x81D9DDE1, 0xEA4F73EE,
+    0x81E26C16, 0xEA1DEBBB,
+    0x81EB0DBD, 0xE9EC66E8,
+    0x81F3C2D7, 0xE9BAE57C,
+    0x81FC8B60, 0xE9896780,
+    0x82056758, 0xE957ECFB,
+    0x820E56BE, 0xE92675F4,
+    0x8217598F, 0xE8F50273,
+    0x82206FCB, 0xE8C3927F,
+    0x82299971, 0xE8922621,
+    0x8232D67E, 0xE860BD60,
+    0x823C26F2, 0xE82F5844,
+    0x82458ACB, 0xE7FDF6D3,
+    0x824F0208, 0xE7CC9917,
+    0x82588CA6, 0xE79B3F16,
+    0x82622AA5, 0xE769E8D8,
+    0x826BDC04, 0xE7389664,
+    0x8275A0C0, 0xE70747C3,
+    0x827F78D8, 0xE6D5FCFC,
+    0x8289644A, 0xE6A4B616,
+    0x82936316, 0xE6737319,
+    0x829D753A, 0xE642340D,
+    0x82A79AB3, 0xE610F8F9,
+    0x82B1D381, 0xE5DFC1E4,
+    0x82BC1FA1, 0xE5AE8ED8,
+    0x82C67F13, 0xE57D5FDA,
+    0x82D0F1D5, 0xE54C34F3,
+    0x82DB77E5, 0xE51B0E2A,
+    0x82E61141, 0xE4E9EB86,
+    0x82F0BDE8, 0xE4B8CD10,
+    0x82FB7DD8, 0xE487B2CF,
+    0x8306510F, 0xE4569CCB,
+    0x8311378C, 0xE4258B0A,
+    0x831C314E, 0xE3F47D95,
+    0x83273E52, 0xE3C37473,
+    0x83325E97, 0xE3926FAC,
+    0x833D921A, 0xE3616F47,
+    0x8348D8DB, 0xE330734C,
+    0x835432D8, 0xE2FF7BC3,
+    0x835FA00E, 0xE2CE88B2,
+    0x836B207D, 0xE29D9A22,
+    0x8376B422, 0xE26CB01A,
+    0x83825AFB, 0xE23BCAA2,
+    0x838E1507, 0xE20AE9C1,
+    0x8399E244, 0xE1DA0D7E,
+    0x83A5C2B0, 0xE1A935E1,
+    0x83B1B649, 0xE17862F3,
+    0x83BDBD0D, 0xE14794B9,
+    0x83C9D6FB, 0xE116CB3D,
+    0x83D60411, 0xE0E60684,
+    0x83E2444D, 0xE0B54698,
+    0x83EE97AC, 0xE0848B7F,
+    0x83FAFE2E, 0xE053D541,
+    0x840777CF, 0xE02323E5,
+    0x8414048F, 0xDFF27773,
+    0x8420A46B, 0xDFC1CFF2,
+    0x842D5761, 0xDF912D6A,
+    0x843A1D70, 0xDF608FE3,
+    0x8446F695, 0xDF2FF764,
+    0x8453E2CE, 0xDEFF63F4,
+    0x8460E21A, 0xDECED59B,
+    0x846DF476, 0xDE9E4C60,
+    0x847B19E1, 0xDE6DC84B,
+    0x84885257, 0xDE3D4963,
+    0x84959DD9, 0xDE0CCFB1,
+    0x84A2FC62, 0xDDDC5B3A,
+    0x84B06DF1, 0xDDABEC07,
+    0x84BDF285, 0xDD7B8220,
+    0x84CB8A1B, 0xDD4B1D8B,
+    0x84D934B0, 0xDD1ABE51,
+    0x84E6F244, 0xDCEA6478,
+    0x84F4C2D3, 0xDCBA1008,
+    0x8502A65C, 0xDC89C108,
+    0x85109CDC, 0xDC597781,
+    0x851EA652, 0xDC293379,
+    0x852CC2BA, 0xDBF8F4F8,
+    0x853AF214, 0xDBC8BC05,
+    0x8549345C, 0xDB9888A8,
+    0x85578991, 0xDB685AE8,
+    0x8565F1B0, 0xDB3832CD,
+    0x85746CB7, 0xDB08105E,
+    0x8582FAA4, 0xDAD7F3A2,
+    0x85919B75, 0xDAA7DCA1,
+    0x85A04F28, 0xDA77CB62,
+    0x85AF15B9, 0xDA47BFED,
+    0x85BDEF27, 0xDA17BA4A,
+    0x85CCDB70, 0xD9E7BA7E,
+    0x85DBDA91, 0xD9B7C093,
+    0x85EAEC88, 0xD987CC8F,
+    0x85FA1152, 0xD957DE7A,
+    0x860948EE, 0xD927F65B,
+    0x86189359, 0xD8F81439,
+    0x8627F090, 0xD8C8381C,
+    0x86376092, 0xD898620C,
+    0x8646E35B, 0xD868920F,
+    0x865678EA, 0xD838C82D,
+    0x8666213C, 0xD809046D,
+    0x8675DC4E, 0xD7D946D7,
+    0x8685AA1F, 0xD7A98F73,
+    0x86958AAB, 0xD779DE46,
+    0x86A57DF1, 0xD74A335A,
+    0x86B583EE, 0xD71A8EB5,
+    0x86C59C9F, 0xD6EAF05E,
+    0x86D5C802, 0xD6BB585D,
+    0x86E60614, 0xD68BC6BA,
+    0x86F656D3, 0xD65C3B7B,
+    0x8706BA3C, 0xD62CB6A7,
+    0x8717304E, 0xD5FD3847,
+    0x8727B904, 0xD5CDC062,
+    0x8738545E, 0xD59E4EFE,
+    0x87490257, 0xD56EE424,
+    0x8759C2EF, 0xD53F7FDA,
+    0x876A9621, 0xD5102227,
+    0x877B7BEC, 0xD4E0CB14,
+    0x878C744C, 0xD4B17AA7,
+    0x879D7F40, 0xD48230E8,
+    0x87AE9CC5, 0xD452EDDE,
+    0x87BFCCD7, 0xD423B190,
+    0x87D10F75, 0xD3F47C06,
+    0x87E2649B, 0xD3C54D46,
+    0x87F3CC47, 0xD3962559,
+    0x88054677, 0xD3670445,
+    0x8816D327, 0xD337EA12,
+    0x88287255, 0xD308D6C6,
+    0x883A23FE, 0xD2D9CA6A,
+    0x884BE820, 0xD2AAC504,
+    0x885DBEB7, 0xD27BC69C,
+    0x886FA7C2, 0xD24CCF38,
+    0x8881A33C, 0xD21DDEE1,
+    0x8893B124, 0xD1EEF59E,
+    0x88A5D177, 0xD1C01374,
+    0x88B80431, 0xD191386D,
+    0x88CA4951, 0xD162648F,
+    0x88DCA0D3, 0xD13397E1,
+    0x88EF0AB4, 0xD104D26B,
+    0x890186F1, 0xD0D61433,
+    0x89141589, 0xD0A75D42,
+    0x8926B677, 0xD078AD9D,
+    0x893969B9, 0xD04A054D,
+    0x894C2F4C, 0xD01B6459,
+    0x895F072D, 0xCFECCAC7,
+    0x8971F15A, 0xCFBE389F,
+    0x8984EDCF, 0xCF8FADE8,
+    0x8997FC89, 0xCF612AAA,
+    0x89AB1D86, 0xCF32AEEB,
+    0x89BE50C3, 0xCF043AB2,
+    0x89D1963C, 0xCED5CE08,
+    0x89E4EDEE, 0xCEA768F2,
+    0x89F857D8, 0xCE790B78,
+    0x8A0BD3F5, 0xCE4AB5A2,
+    0x8A1F6242, 0xCE1C6776,
+    0x8A3302BD, 0xCDEE20FC,
+    0x8A46B563, 0xCDBFE23A,
+    0x8A5A7A30, 0xCD91AB38,
+    0x8A6E5122, 0xCD637BFD,
+    0x8A823A35, 0xCD355490,
+    0x8A963567, 0xCD0734F8,
+    0x8AAA42B4, 0xCCD91D3D,
+    0x8ABE6219, 0xCCAB0D65,
+    0x8AD29393, 0xCC7D0577,
+    0x8AE6D71F, 0xCC4F057B,
+    0x8AFB2CBA, 0xCC210D78,
+    0x8B0F9461, 0xCBF31D75,
+    0x8B240E10, 0xCBC53578,
+    0x8B3899C5, 0xCB975589,
+    0x8B4D377C, 0xCB697DB0,
+    0x8B61E732, 0xCB3BADF2,
+    0x8B76A8E4, 0xCB0DE658,
+    0x8B8B7C8F, 0xCAE026E8,
+    0x8BA0622F, 0xCAB26FA9,
+    0x8BB559C1, 0xCA84C0A2,
+    0x8BCA6342, 0xCA5719DB,
+    0x8BDF7EAF, 0xCA297B5A,
+    0x8BF4AC05, 0xC9FBE527,
+    0x8C09EB40, 0xC9CE5748,
+    0x8C1F3C5C, 0xC9A0D1C4,
+    0x8C349F58, 0xC97354A3,
+    0x8C4A142F, 0xC945DFEC,
+    0x8C5F9ADD, 0xC91873A5,
+    0x8C753361, 0xC8EB0FD6,
+    0x8C8ADDB6, 0xC8BDB485,
+    0x8CA099D9, 0xC89061BA,
+    0x8CB667C7, 0xC863177B,
+    0x8CCC477D, 0xC835D5D0,
+    0x8CE238F6, 0xC8089CBF,
+    0x8CF83C30, 0xC7DB6C50,
+    0x8D0E5127, 0xC7AE4489,
+    0x8D2477D8, 0xC7812571,
+    0x8D3AB03F, 0xC7540F10,
+    0x8D50FA59, 0xC727016C,
+    0x8D675623, 0xC6F9FC8D,
+    0x8D7DC399, 0xC6CD0079,
+    0x8D9442B7, 0xC6A00D36,
+    0x8DAAD37B, 0xC67322CD,
+    0x8DC175E0, 0xC6464144,
+    0x8DD829E4, 0xC61968A2,
+    0x8DEEEF82, 0xC5EC98ED,
+    0x8E05C6B7, 0xC5BFD22E,
+    0x8E1CAF80, 0xC593146A,
+    0x8E33A9D9, 0xC5665FA8,
+    0x8E4AB5BF, 0xC539B3F0,
+    0x8E61D32D, 0xC50D1148,
+    0x8E790222, 0xC4E077B8,
+    0x8E904298, 0xC4B3E746,
+    0x8EA7948C, 0xC4875FF8,
+    0x8EBEF7FB, 0xC45AE1D7,
+    0x8ED66CE1, 0xC42E6CE8,
+    0x8EEDF33B, 0xC4020132,
+    0x8F058B04, 0xC3D59EBD,
+    0x8F1D343A, 0xC3A9458F,
+    0x8F34EED8, 0xC37CF5B0,
+    0x8F4CBADB, 0xC350AF25,
+    0x8F64983F, 0xC32471F6,
+    0x8F7C8701, 0xC2F83E2A,
+    0x8F94871D, 0xC2CC13C7,
+    0x8FAC988E, 0xC29FF2D4,
+    0x8FC4BB53, 0xC273DB58,
+    0x8FDCEF66, 0xC247CD5A,
+    0x8FF534C4, 0xC21BC8E0,
+    0x900D8B69, 0xC1EFCDF2,
+    0x9025F352, 0xC1C3DC96,
+    0x903E6C7A, 0xC197F4D3,
+    0x9056F6DF, 0xC16C16B0,
+    0x906F927B, 0xC1404233,
+    0x90883F4C, 0xC1147763,
+    0x90A0FD4E, 0xC0E8B648,
+    0x90B9CC7C, 0xC0BCFEE7,
+    0x90D2ACD3, 0xC0915147,
+    0x90EB9E50, 0xC065AD70,
+    0x9104A0ED, 0xC03A1368,
+    0x911DB4A8, 0xC00E8335,
+    0x9136D97D, 0xBFE2FCDF,
+    0x91500F67, 0xBFB7806C,
+    0x91695663, 0xBF8C0DE2,
+    0x9182AE6C, 0xBF60A54A,
+    0x919C1780, 0xBF3546A8,
+    0x91B5919A, 0xBF09F204,
+    0x91CF1CB6, 0xBEDEA765,
+    0x91E8B8D0, 0xBEB366D1,
+    0x920265E4, 0xBE88304F,
+    0x921C23EE, 0xBE5D03E5,
+    0x9235F2EB, 0xBE31E19B,
+    0x924FD2D6, 0xBE06C977,
+    0x9269C3AC, 0xBDDBBB7F,
+    0x9283C567, 0xBDB0B7BA,
+    0x929DD805, 0xBD85BE2F,
+    0x92B7FB82, 0xBD5ACEE5,
+    0x92D22FD8, 0xBD2FE9E1,
+    0x92EC7505, 0xBD050F2C,
+    0x9306CB04, 0xBCDA3ECA,
+    0x932131D1, 0xBCAF78C3,
+    0x933BA968, 0xBC84BD1E,
+    0x935631C5, 0xBC5A0BE1,
+    0x9370CAE4, 0xBC2F6513,
+    0x938B74C0, 0xBC04C8BA,
+    0x93A62F56, 0xBBDA36DC,
+    0x93C0FAA2, 0xBBAFAF81,
+    0x93DBD69F, 0xBB8532AF,
+    0x93F6C34A, 0xBB5AC06C,
+    0x9411C09D, 0xBB3058C0,
+    0x942CCE95, 0xBB05FBB0,
+    0x9447ED2F, 0xBADBA943,
+    0x94631C64, 0xBAB1617F,
+    0x947E5C32, 0xBA87246C,
+    0x9499AC95, 0xBA5CF210,
+    0x94B50D87, 0xBA32CA70,
+    0x94D07F05, 0xBA08AD94,
+    0x94EC010B, 0xB9DE9B83,
+    0x95079393, 0xB9B49442,
+    0x9523369B, 0xB98A97D8,
+    0x953EEA1E, 0xB960A64B,
+    0x955AAE17, 0xB936BFA3,
+    0x95768282, 0xB90CE3E6,
+    0x9592675B, 0xB8E31319,
+    0x95AE5C9E, 0xB8B94D44,
+    0x95CA6246, 0xB88F926C,
+    0x95E6784F, 0xB865E299,
+    0x96029EB5, 0xB83C3DD1,
+    0x961ED573, 0xB812A419,
+    0x963B1C85, 0xB7E9157A,
+    0x965773E7, 0xB7BF91F8,
+    0x9673DB94, 0xB796199B,
+    0x96905387, 0xB76CAC68,
+    0x96ACDBBD, 0xB7434A67,
+    0x96C97431, 0xB719F39D,
+    0x96E61CDF, 0xB6F0A811,
+    0x9702D5C2, 0xB6C767CA,
+    0x971F9ED6, 0xB69E32CD,
+    0x973C7816, 0xB6750921,
+    0x9759617E, 0xB64BEACC,
+    0x97765B0A, 0xB622D7D5,
+    0x979364B5, 0xB5F9D042,
+    0x97B07E7A, 0xB5D0D41A,
+    0x97CDA855, 0xB5A7E362,
+    0x97EAE241, 0xB57EFE21,
+    0x98082C3B, 0xB556245E,
+    0x9825863D, 0xB52D561E,
+    0x9842F043, 0xB5049368,
+    0x98606A48, 0xB4DBDC42,
+    0x987DF449, 0xB4B330B2,
+    0x989B8E3F, 0xB48A90C0,
+    0x98B93828, 0xB461FC70,
+    0x98D6F1FE, 0xB43973C9,
+    0x98F4BBBC, 0xB410F6D2,
+    0x9912955E, 0xB3E88591,
+    0x99307EE0, 0xB3C0200C,
+    0x994E783C, 0xB397C649,
+    0x996C816F, 0xB36F784E,
+    0x998A9A73, 0xB3473622,
+    0x99A8C344, 0xB31EFFCB,
+    0x99C6FBDE, 0xB2F6D54F,
+    0x99E5443A, 0xB2CEB6B5,
+    0x9A039C56, 0xB2A6A401,
+    0x9A22042C, 0xB27E9D3B,
+    0x9A407BB8, 0xB256A26A,
+    0x9A5F02F5, 0xB22EB392,
+    0x9A7D99DD, 0xB206D0BA,
+    0x9A9C406D, 0xB1DEF9E8,
+    0x9ABAF6A0, 0xB1B72F23,
+    0x9AD9BC71, 0xB18F7070,
+    0x9AF891DB, 0xB167BDD6,
+    0x9B1776D9, 0xB140175B,
+    0x9B366B67, 0xB1187D05,
+    0x9B556F80, 0xB0F0EEDA,
+    0x9B748320, 0xB0C96CDF,
+    0x9B93A640, 0xB0A1F71C,
+    0x9BB2D8DD, 0xB07A8D97,
+    0x9BD21AF2, 0xB0533055,
+    0x9BF16C7A, 0xB02BDF5C,
+    0x9C10CD70, 0xB0049AB2,
+    0x9C303DCF, 0xAFDD625F,
+    0x9C4FBD92, 0xAFB63667,
+    0x9C6F4CB5, 0xAF8F16D0,
+    0x9C8EEB33, 0xAF6803A1,
+    0x9CAE9907, 0xAF40FCE0,
+    0x9CCE562B, 0xAF1A0293,
+    0x9CEE229C, 0xAEF314BF,
+    0x9D0DFE53, 0xAECC336B,
+    0x9D2DE94D, 0xAEA55E9D,
+    0x9D4DE384, 0xAE7E965B,
+    0x9D6DECF4, 0xAE57DAAA,
+    0x9D8E0596, 0xAE312B91,
+    0x9DAE2D68, 0xAE0A8916,
+    0x9DCE6462, 0xADE3F33E,
+    0x9DEEAA82, 0xADBD6A10,
+    0x9E0EFFC1, 0xAD96ED91,
+    0x9E2F641A, 0xAD707DC8,
+    0x9E4FD789, 0xAD4A1ABA,
+    0x9E705A09, 0xAD23C46D,
+    0x9E90EB94, 0xACFD7AE8,
+    0x9EB18C26, 0xACD73E30,
+    0x9ED23BB9, 0xACB10E4A,
+    0x9EF2FA48, 0xAC8AEB3E,
+    0x9F13C7D0, 0xAC64D510,
+    0x9F34A449, 0xAC3ECBC7,
+    0x9F558FB0, 0xAC18CF68,
+    0x9F7689FF, 0xABF2DFFA,
+    0x9F979331, 0xABCCFD82,
+    0x9FB8AB41, 0xABA72806,
+    0x9FD9D22A, 0xAB815F8C,
+    0x9FFB07E7, 0xAB5BA41A,
+    0xA01C4C72, 0xAB35F5B5,
+    0xA03D9FC7, 0xAB105464,
+    0xA05F01E1, 0xAAEAC02B,
+    0xA08072BA, 0xAAC53912,
+    0xA0A1F24C, 0xAA9FBF1D,
+    0xA0C38094, 0xAA7A5253,
+    0xA0E51D8C, 0xAA54F2B9,
+    0xA106C92E, 0xAA2FA055,
+    0xA1288376, 0xAA0A5B2D,
+    0xA14A4C5E, 0xA9E52347,
+    0xA16C23E1, 0xA9BFF8A8,
+    0xA18E09F9, 0xA99ADB56,
+    0xA1AFFEA2, 0xA975CB56,
+    0xA1D201D7, 0xA950C8AF,
+    0xA1F41391, 0xA92BD366,
+    0xA21633CD, 0xA906EB81,
+    0xA2386283, 0xA8E21106,
+    0xA25A9FB1, 0xA8BD43FA,
+    0xA27CEB4F, 0xA8988463,
+    0xA29F4559, 0xA873D246,
+    0xA2C1ADC9, 0xA84F2DA9,
+    0xA2E4249A, 0xA82A9693,
+    0xA306A9C7, 0xA8060D08,
+    0xA3293D4B, 0xA7E1910E,
+    0xA34BDF20, 0xA7BD22AB,
+    0xA36E8F40, 0xA798C1E4,
+    0xA3914DA7, 0xA7746EC0,
+    0xA3B41A4F, 0xA7502943,
+    0xA3D6F533, 0xA72BF173,
+    0xA3F9DE4D, 0xA707C756,
+    0xA41CD598, 0xA6E3AAF2,
+    0xA43FDB0F, 0xA6BF9C4B,
+    0xA462EEAC, 0xA69B9B68,
+    0xA4861069, 0xA677A84E,
+    0xA4A94042, 0xA653C302,
+    0xA4CC7E31, 0xA62FEB8B,
+    0xA4EFCA31, 0xA60C21ED,
+    0xA513243B, 0xA5E8662F,
+    0xA5368C4B, 0xA5C4B855,
+    0xA55A025B, 0xA5A11865,
+    0xA57D8666, 0xA57D8666,
+    0xA5A11865, 0xA55A025B,
+    0xA5C4B855, 0xA5368C4B,
+    0xA5E8662F, 0xA513243B,
+    0xA60C21ED, 0xA4EFCA31,
+    0xA62FEB8B, 0xA4CC7E31,
+    0xA653C302, 0xA4A94042,
+    0xA677A84E, 0xA4861069,
+    0xA69B9B68, 0xA462EEAC,
+    0xA6BF9C4B, 0xA43FDB0F,
+    0xA6E3AAF2, 0xA41CD598,
+    0xA707C756, 0xA3F9DE4D,
+    0xA72BF173, 0xA3D6F533,
+    0xA7502943, 0xA3B41A4F,
+    0xA7746EC0, 0xA3914DA7,
+    0xA798C1E4, 0xA36E8F40,
+    0xA7BD22AB, 0xA34BDF20,
+    0xA7E1910E, 0xA3293D4B,
+    0xA8060D08, 0xA306A9C7,
+    0xA82A9693, 0xA2E4249A,
+    0xA84F2DA9, 0xA2C1ADC9,
+    0xA873D246, 0xA29F4559,
+    0xA8988463, 0xA27CEB4F,
+    0xA8BD43FA, 0xA25A9FB1,
+    0xA8E21106, 0xA2386283,
+    0xA906EB81, 0xA21633CD,
+    0xA92BD366, 0xA1F41391,
+    0xA950C8AF, 0xA1D201D7,
+    0xA975CB56, 0xA1AFFEA2,
+    0xA99ADB56, 0xA18E09F9,
+    0xA9BFF8A8, 0xA16C23E1,
+    0xA9E52347, 0xA14A4C5E,
+    0xAA0A5B2D, 0xA1288376,
+    0xAA2FA055, 0xA106C92E,
+    0xAA54F2B9, 0xA0E51D8C,
+    0xAA7A5253, 0xA0C38094,
+    0xAA9FBF1D, 0xA0A1F24C,
+    0xAAC53912, 0xA08072BA,
+    0xAAEAC02B, 0xA05F01E1,
+    0xAB105464, 0xA03D9FC7,
+    0xAB35F5B5, 0xA01C4C72,
+    0xAB5BA41A, 0x9FFB07E7,
+    0xAB815F8C, 0x9FD9D22A,
+    0xABA72806, 0x9FB8AB41,
+    0xABCCFD82, 0x9F979331,
+    0xABF2DFFA, 0x9F7689FF,
+    0xAC18CF68, 0x9F558FB0,
+    0xAC3ECBC7, 0x9F34A449,
+    0xAC64D510, 0x9F13C7D0,
+    0xAC8AEB3E, 0x9EF2FA48,
+    0xACB10E4A, 0x9ED23BB9,
+    0xACD73E30, 0x9EB18C26,
+    0xACFD7AE8, 0x9E90EB94,
+    0xAD23C46D, 0x9E705A09,
+    0xAD4A1ABA, 0x9E4FD789,
+    0xAD707DC8, 0x9E2F641A,
+    0xAD96ED91, 0x9E0EFFC1,
+    0xADBD6A10, 0x9DEEAA82,
+    0xADE3F33E, 0x9DCE6462,
+    0xAE0A8916, 0x9DAE2D68,
+    0xAE312B91, 0x9D8E0596,
+    0xAE57DAAA, 0x9D6DECF4,
+    0xAE7E965B, 0x9D4DE384,
+    0xAEA55E9D, 0x9D2DE94D,
+    0xAECC336B, 0x9D0DFE53,
+    0xAEF314BF, 0x9CEE229C,
+    0xAF1A0293, 0x9CCE562B,
+    0xAF40FCE0, 0x9CAE9907,
+    0xAF6803A1, 0x9C8EEB33,
+    0xAF8F16D0, 0x9C6F4CB5,
+    0xAFB63667, 0x9C4FBD92,
+    0xAFDD625F, 0x9C303DCF,
+    0xB0049AB2, 0x9C10CD70,
+    0xB02BDF5C, 0x9BF16C7A,
+    0xB0533055, 0x9BD21AF2,
+    0xB07A8D97, 0x9BB2D8DD,
+    0xB0A1F71C, 0x9B93A640,
+    0xB0C96CDF, 0x9B748320,
+    0xB0F0EEDA, 0x9B556F80,
+    0xB1187D05, 0x9B366B67,
+    0xB140175B, 0x9B1776D9,
+    0xB167BDD6, 0x9AF891DB,
+    0xB18F7070, 0x9AD9BC71,
+    0xB1B72F23, 0x9ABAF6A0,
+    0xB1DEF9E8, 0x9A9C406D,
+    0xB206D0BA, 0x9A7D99DD,
+    0xB22EB392, 0x9A5F02F5,
+    0xB256A26A, 0x9A407BB8,
+    0xB27E9D3B, 0x9A22042C,
+    0xB2A6A401, 0x9A039C56,
+    0xB2CEB6B5, 0x99E5443A,
+    0xB2F6D54F, 0x99C6FBDE,
+    0xB31EFFCB, 0x99A8C344,
+    0xB3473622, 0x998A9A73,
+    0xB36F784E, 0x996C816F,
+    0xB397C649, 0x994E783C,
+    0xB3C0200C, 0x99307EE0,
+    0xB3E88591, 0x9912955E,
+    0xB410F6D2, 0x98F4BBBC,
+    0xB43973C9, 0x98D6F1FE,
+    0xB461FC70, 0x98B93828,
+    0xB48A90C0, 0x989B8E3F,
+    0xB4B330B2, 0x987DF449,
+    0xB4DBDC42, 0x98606A48,
+    0xB5049368, 0x9842F043,
+    0xB52D561E, 0x9825863D,
+    0xB556245E, 0x98082C3B,
+    0xB57EFE21, 0x97EAE241,
+    0xB5A7E362, 0x97CDA855,
+    0xB5D0D41A, 0x97B07E7A,
+    0xB5F9D042, 0x979364B5,
+    0xB622D7D5, 0x97765B0A,
+    0xB64BEACC, 0x9759617E,
+    0xB6750921, 0x973C7816,
+    0xB69E32CD, 0x971F9ED6,
+    0xB6C767CA, 0x9702D5C2,
+    0xB6F0A811, 0x96E61CDF,
+    0xB719F39D, 0x96C97431,
+    0xB7434A67, 0x96ACDBBD,
+    0xB76CAC68, 0x96905387,
+    0xB796199B, 0x9673DB94,
+    0xB7BF91F8, 0x965773E7,
+    0xB7E9157A, 0x963B1C85,
+    0xB812A419, 0x961ED573,
+    0xB83C3DD1, 0x96029EB5,
+    0xB865E299, 0x95E6784F,
+    0xB88F926C, 0x95CA6246,
+    0xB8B94D44, 0x95AE5C9E,
+    0xB8E31319, 0x9592675B,
+    0xB90CE3E6, 0x95768282,
+    0xB936BFA3, 0x955AAE17,
+    0xB960A64B, 0x953EEA1E,
+    0xB98A97D8, 0x9523369B,
+    0xB9B49442, 0x95079393,
+    0xB9DE9B83, 0x94EC010B,
+    0xBA08AD94, 0x94D07F05,
+    0xBA32CA70, 0x94B50D87,
+    0xBA5CF210, 0x9499AC95,
+    0xBA87246C, 0x947E5C32,
+    0xBAB1617F, 0x94631C64,
+    0xBADBA943, 0x9447ED2F,
+    0xBB05FBB0, 0x942CCE95,
+    0xBB3058C0, 0x9411C09D,
+    0xBB5AC06C, 0x93F6C34A,
+    0xBB8532AF, 0x93DBD69F,
+    0xBBAFAF81, 0x93C0FAA2,
+    0xBBDA36DC, 0x93A62F56,
+    0xBC04C8BA, 0x938B74C0,
+    0xBC2F6513, 0x9370CAE4,
+    0xBC5A0BE1, 0x935631C5,
+    0xBC84BD1E, 0x933BA968,
+    0xBCAF78C3, 0x932131D1,
+    0xBCDA3ECA, 0x9306CB04,
+    0xBD050F2C, 0x92EC7505,
+    0xBD2FE9E1, 0x92D22FD8,
+    0xBD5ACEE5, 0x92B7FB82,
+    0xBD85BE2F, 0x929DD805,
+    0xBDB0B7BA, 0x9283C567,
+    0xBDDBBB7F, 0x9269C3AC,
+    0xBE06C977, 0x924FD2D6,
+    0xBE31E19B, 0x9235F2EB,
+    0xBE5D03E5, 0x921C23EE,
+    0xBE88304F, 0x920265E4,
+    0xBEB366D1, 0x91E8B8D0,
+    0xBEDEA765, 0x91CF1CB6,
+    0xBF09F204, 0x91B5919A,
+    0xBF3546A8, 0x919C1780,
+    0xBF60A54A, 0x9182AE6C,
+    0xBF8C0DE2, 0x91695663,
+    0xBFB7806C, 0x91500F67,
+    0xBFE2FCDF, 0x9136D97D,
+    0xC00E8335, 0x911DB4A8,
+    0xC03A1368, 0x9104A0ED,
+    0xC065AD70, 0x90EB9E50,
+    0xC0915147, 0x90D2ACD3,
+    0xC0BCFEE7, 0x90B9CC7C,
+    0xC0E8B648, 0x90A0FD4E,
+    0xC1147763, 0x90883F4C,
+    0xC1404233, 0x906F927B,
+    0xC16C16B0, 0x9056F6DF,
+    0xC197F4D3, 0x903E6C7A,
+    0xC1C3DC96, 0x9025F352,
+    0xC1EFCDF2, 0x900D8B69,
+    0xC21BC8E0, 0x8FF534C4,
+    0xC247CD5A, 0x8FDCEF66,
+    0xC273DB58, 0x8FC4BB53,
+    0xC29FF2D4, 0x8FAC988E,
+    0xC2CC13C7, 0x8F94871D,
+    0xC2F83E2A, 0x8F7C8701,
+    0xC32471F6, 0x8F64983F,
+    0xC350AF25, 0x8F4CBADB,
+    0xC37CF5B0, 0x8F34EED8,
+    0xC3A9458F, 0x8F1D343A,
+    0xC3D59EBD, 0x8F058B04,
+    0xC4020132, 0x8EEDF33B,
+    0xC42E6CE8, 0x8ED66CE1,
+    0xC45AE1D7, 0x8EBEF7FB,
+    0xC4875FF8, 0x8EA7948C,
+    0xC4B3E746, 0x8E904298,
+    0xC4E077B8, 0x8E790222,
+    0xC50D1148, 0x8E61D32D,
+    0xC539B3F0, 0x8E4AB5BF,
+    0xC5665FA8, 0x8E33A9D9,
+    0xC593146A, 0x8E1CAF80,
+    0xC5BFD22E, 0x8E05C6B7,
+    0xC5EC98ED, 0x8DEEEF82,
+    0xC61968A2, 0x8DD829E4,
+    0xC6464144, 0x8DC175E0,
+    0xC67322CD, 0x8DAAD37B,
+    0xC6A00D36, 0x8D9442B7,
+    0xC6CD0079, 0x8D7DC399,
+    0xC6F9FC8D, 0x8D675623,
+    0xC727016C, 0x8D50FA59,
+    0xC7540F10, 0x8D3AB03F,
+    0xC7812571, 0x8D2477D8,
+    0xC7AE4489, 0x8D0E5127,
+    0xC7DB6C50, 0x8CF83C30,
+    0xC8089CBF, 0x8CE238F6,
+    0xC835D5D0, 0x8CCC477D,
+    0xC863177B, 0x8CB667C7,
+    0xC89061BA, 0x8CA099D9,
+    0xC8BDB485, 0x8C8ADDB6,
+    0xC8EB0FD6, 0x8C753361,
+    0xC91873A5, 0x8C5F9ADD,
+    0xC945DFEC, 0x8C4A142F,
+    0xC97354A3, 0x8C349F58,
+    0xC9A0D1C4, 0x8C1F3C5C,
+    0xC9CE5748, 0x8C09EB40,
+    0xC9FBE527, 0x8BF4AC05,
+    0xCA297B5A, 0x8BDF7EAF,
+    0xCA5719DB, 0x8BCA6342,
+    0xCA84C0A2, 0x8BB559C1,
+    0xCAB26FA9, 0x8BA0622F,
+    0xCAE026E8, 0x8B8B7C8F,
+    0xCB0DE658, 0x8B76A8E4,
+    0xCB3BADF2, 0x8B61E732,
+    0xCB697DB0, 0x8B4D377C,
+    0xCB975589, 0x8B3899C5,
+    0xCBC53578, 0x8B240E10,
+    0xCBF31D75, 0x8B0F9461,
+    0xCC210D78, 0x8AFB2CBA,
+    0xCC4F057B, 0x8AE6D71F,
+    0xCC7D0577, 0x8AD29393,
+    0xCCAB0D65, 0x8ABE6219,
+    0xCCD91D3D, 0x8AAA42B4,
+    0xCD0734F8, 0x8A963567,
+    0xCD355490, 0x8A823A35,
+    0xCD637BFD, 0x8A6E5122,
+    0xCD91AB38, 0x8A5A7A30,
+    0xCDBFE23A, 0x8A46B563,
+    0xCDEE20FC, 0x8A3302BD,
+    0xCE1C6776, 0x8A1F6242,
+    0xCE4AB5A2, 0x8A0BD3F5,
+    0xCE790B78, 0x89F857D8,
+    0xCEA768F2, 0x89E4EDEE,
+    0xCED5CE08, 0x89D1963C,
+    0xCF043AB2, 0x89BE50C3,
+    0xCF32AEEB, 0x89AB1D86,
+    0xCF612AAA, 0x8997FC89,
+    0xCF8FADE8, 0x8984EDCF,
+    0xCFBE389F, 0x8971F15A,
+    0xCFECCAC7, 0x895F072D,
+    0xD01B6459, 0x894C2F4C,
+    0xD04A054D, 0x893969B9,
+    0xD078AD9D, 0x8926B677,
+    0xD0A75D42, 0x89141589,
+    0xD0D61433, 0x890186F1,
+    0xD104D26B, 0x88EF0AB4,
+    0xD13397E1, 0x88DCA0D3,
+    0xD162648F, 0x88CA4951,
+    0xD191386D, 0x88B80431,
+    0xD1C01374, 0x88A5D177,
+    0xD1EEF59E, 0x8893B124,
+    0xD21DDEE1, 0x8881A33C,
+    0xD24CCF38, 0x886FA7C2,
+    0xD27BC69C, 0x885DBEB7,
+    0xD2AAC504, 0x884BE820,
+    0xD2D9CA6A, 0x883A23FE,
+    0xD308D6C6, 0x88287255,
+    0xD337EA12, 0x8816D327,
+    0xD3670445, 0x88054677,
+    0xD3962559, 0x87F3CC47,
+    0xD3C54D46, 0x87E2649B,
+    0xD3F47C06, 0x87D10F75,
+    0xD423B190, 0x87BFCCD7,
+    0xD452EDDE, 0x87AE9CC5,
+    0xD48230E8, 0x879D7F40,
+    0xD4B17AA7, 0x878C744C,
+    0xD4E0CB14, 0x877B7BEC,
+    0xD5102227, 0x876A9621,
+    0xD53F7FDA, 0x8759C2EF,
+    0xD56EE424, 0x87490257,
+    0xD59E4EFE, 0x8738545E,
+    0xD5CDC062, 0x8727B904,
+    0xD5FD3847, 0x8717304E,
+    0xD62CB6A7, 0x8706BA3C,
+    0xD65C3B7B, 0x86F656D3,
+    0xD68BC6BA, 0x86E60614,
+    0xD6BB585D, 0x86D5C802,
+    0xD6EAF05E, 0x86C59C9F,
+    0xD71A8EB5, 0x86B583EE,
+    0xD74A335A, 0x86A57DF1,
+    0xD779DE46, 0x86958AAB,
+    0xD7A98F73, 0x8685AA1F,
+    0xD7D946D7, 0x8675DC4E,
+    0xD809046D, 0x8666213C,
+    0xD838C82D, 0x865678EA,
+    0xD868920F, 0x8646E35B,
+    0xD898620C, 0x86376092,
+    0xD8C8381C, 0x8627F090,
+    0xD8F81439, 0x86189359,
+    0xD927F65B, 0x860948EE,
+    0xD957DE7A, 0x85FA1152,
+    0xD987CC8F, 0x85EAEC88,
+    0xD9B7C093, 0x85DBDA91,
+    0xD9E7BA7E, 0x85CCDB70,
+    0xDA17BA4A, 0x85BDEF27,
+    0xDA47BFED, 0x85AF15B9,
+    0xDA77CB62, 0x85A04F28,
+    0xDAA7DCA1, 0x85919B75,
+    0xDAD7F3A2, 0x8582FAA4,
+    0xDB08105E, 0x85746CB7,
+    0xDB3832CD, 0x8565F1B0,
+    0xDB685AE8, 0x85578991,
+    0xDB9888A8, 0x8549345C,
+    0xDBC8BC05, 0x853AF214,
+    0xDBF8F4F8, 0x852CC2BA,
+    0xDC293379, 0x851EA652,
+    0xDC597781, 0x85109CDC,
+    0xDC89C108, 0x8502A65C,
+    0xDCBA1008, 0x84F4C2D3,
+    0xDCEA6478, 0x84E6F244,
+    0xDD1ABE51, 0x84D934B0,
+    0xDD4B1D8B, 0x84CB8A1B,
+    0xDD7B8220, 0x84BDF285,
+    0xDDABEC07, 0x84B06DF1,
+    0xDDDC5B3A, 0x84A2FC62,
+    0xDE0CCFB1, 0x84959DD9,
+    0xDE3D4963, 0x84885257,
+    0xDE6DC84B, 0x847B19E1,
+    0xDE9E4C60, 0x846DF476,
+    0xDECED59B, 0x8460E21A,
+    0xDEFF63F4, 0x8453E2CE,
+    0xDF2FF764, 0x8446F695,
+    0xDF608FE3, 0x843A1D70,
+    0xDF912D6A, 0x842D5761,
+    0xDFC1CFF2, 0x8420A46B,
+    0xDFF27773, 0x8414048F,
+    0xE02323E5, 0x840777CF,
+    0xE053D541, 0x83FAFE2E,
+    0xE0848B7F, 0x83EE97AC,
+    0xE0B54698, 0x83E2444D,
+    0xE0E60684, 0x83D60411,
+    0xE116CB3D, 0x83C9D6FB,
+    0xE14794B9, 0x83BDBD0D,
+    0xE17862F3, 0x83B1B649,
+    0xE1A935E1, 0x83A5C2B0,
+    0xE1DA0D7E, 0x8399E244,
+    0xE20AE9C1, 0x838E1507,
+    0xE23BCAA2, 0x83825AFB,
+    0xE26CB01A, 0x8376B422,
+    0xE29D9A22, 0x836B207D,
+    0xE2CE88B2, 0x835FA00E,
+    0xE2FF7BC3, 0x835432D8,
+    0xE330734C, 0x8348D8DB,
+    0xE3616F47, 0x833D921A,
+    0xE3926FAC, 0x83325E97,
+    0xE3C37473, 0x83273E52,
+    0xE3F47D95, 0x831C314E,
+    0xE4258B0A, 0x8311378C,
+    0xE4569CCB, 0x8306510F,
+    0xE487B2CF, 0x82FB7DD8,
+    0xE4B8CD10, 0x82F0BDE8,
+    0xE4E9EB86, 0x82E61141,
+    0xE51B0E2A, 0x82DB77E5,
+    0xE54C34F3, 0x82D0F1D5,
+    0xE57D5FDA, 0x82C67F13,
+    0xE5AE8ED8, 0x82BC1FA1,
+    0xE5DFC1E4, 0x82B1D381,
+    0xE610F8F9, 0x82A79AB3,
+    0xE642340D, 0x829D753A,
+    0xE6737319, 0x82936316,
+    0xE6A4B616, 0x8289644A,
+    0xE6D5FCFC, 0x827F78D8,
+    0xE70747C3, 0x8275A0C0,
+    0xE7389664, 0x826BDC04,
+    0xE769E8D8, 0x82622AA5,
+    0xE79B3F16, 0x82588CA6,
+    0xE7CC9917, 0x824F0208,
+    0xE7FDF6D3, 0x82458ACB,
+    0xE82F5844, 0x823C26F2,
+    0xE860BD60, 0x8232D67E,
+    0xE8922621, 0x82299971,
+    0xE8C3927F, 0x82206FCB,
+    0xE8F50273, 0x8217598F,
+    0xE92675F4, 0x820E56BE,
+    0xE957ECFB, 0x82056758,
+    0xE9896780, 0x81FC8B60,
+    0xE9BAE57C, 0x81F3C2D7,
+    0xE9EC66E8, 0x81EB0DBD,
+    0xEA1DEBBB, 0x81E26C16,
+    0xEA4F73EE, 0x81D9DDE1,
+    0xEA80FF79, 0x81D16320,
+    0xEAB28E55, 0x81C8FBD5,
+    0xEAE4207A, 0x81C0A801,
+    0xEB15B5E0, 0x81B867A4,
+    0xEB474E80, 0x81B03AC1,
+    0xEB78EA52, 0x81A82159,
+    0xEBAA894E, 0x81A01B6C,
+    0xEBDC2B6D, 0x819828FD,
+    0xEC0DD0A8, 0x81904A0C,
+    0xEC3F78F5, 0x81887E9A,
+    0xEC71244F, 0x8180C6A9,
+    0xECA2D2AC, 0x8179223A,
+    0xECD48406, 0x8171914E,
+    0xED063855, 0x816A13E6,
+    0xED37EF91, 0x8162AA03,
+    0xED69A9B2, 0x815B53A8,
+    0xED9B66B2, 0x815410D3,
+    0xEDCD2687, 0x814CE188,
+    0xEDFEE92B, 0x8145C5C6,
+    0xEE30AE95, 0x813EBD90,
+    0xEE6276BF, 0x8137C8E6,
+    0xEE9441A0, 0x8130E7C8,
+    0xEEC60F31, 0x812A1A39,
+    0xEEF7DF6A, 0x81236039,
+    0xEF29B243, 0x811CB9CA,
+    0xEF5B87B5, 0x811626EC,
+    0xEF8D5FB8, 0x810FA7A0,
+    0xEFBF3A44, 0x81093BE8,
+    0xEFF11752, 0x8102E3C3,
+    0xF022F6DA, 0x80FC9F35,
+    0xF054D8D4, 0x80F66E3C,
+    0xF086BD39, 0x80F050DB,
+    0xF0B8A401, 0x80EA4712,
+    0xF0EA8D23, 0x80E450E2,
+    0xF11C789A, 0x80DE6E4C,
+    0xF14E665C, 0x80D89F51,
+    0xF1805662, 0x80D2E3F1,
+    0xF1B248A5, 0x80CD3C2F,
+    0xF1E43D1C, 0x80C7A80A,
+    0xF21633C0, 0x80C22783,
+    0xF2482C89, 0x80BCBA9C,
+    0xF27A2770, 0x80B76155,
+    0xF2AC246D, 0x80B21BAF,
+    0xF2DE2378, 0x80ACE9AB,
+    0xF310248A, 0x80A7CB49,
+    0xF342279A, 0x80A2C08B,
+    0xF3742CA1, 0x809DC970,
+    0xF3A63398, 0x8098E5FB,
+    0xF3D83C76, 0x8094162B,
+    0xF40A4734, 0x808F5A02,
+    0xF43C53CA, 0x808AB180,
+    0xF46E6231, 0x80861CA5,
+    0xF4A07260, 0x80819B74,
+    0xF4D28451, 0x807D2DEB,
+    0xF50497FA, 0x8078D40D,
+    0xF536AD55, 0x80748DD9,
+    0xF568C45A, 0x80705B50,
+    0xF59ADD01, 0x806C3C73,
+    0xF5CCF743, 0x80683143,
+    0xF5FF1317, 0x806439C0,
+    0xF6313076, 0x806055EA,
+    0xF6634F58, 0x805C85C3,
+    0xF6956FB6, 0x8058C94C,
+    0xF6C79188, 0x80552083,
+    0xF6F9B4C5, 0x80518B6B,
+    0xF72BD967, 0x804E0A03,
+    0xF75DFF65, 0x804A9C4D,
+    0xF79026B8, 0x80474248,
+    0xF7C24F58, 0x8043FBF6,
+    0xF7F4793E, 0x8040C956,
+    0xF826A461, 0x803DAA69,
+    0xF858D0BA, 0x803A9F31,
+    0xF88AFE41, 0x8037A7AC,
+    0xF8BD2CEF, 0x8034C3DC,
+    0xF8EF5CBB, 0x8031F3C1,
+    0xF9218D9E, 0x802F375C,
+    0xF953BF90, 0x802C8EAD,
+    0xF985F28A, 0x8029F9B4,
+    0xF9B82683, 0x80277872,
+    0xF9EA5B75, 0x80250AE7,
+    0xFA1C9156, 0x8022B113,
+    0xFA4EC820, 0x80206AF8,
+    0xFA80FFCB, 0x801E3894,
+    0xFAB3384F, 0x801C19E9,
+    0xFAE571A4, 0x801A0EF7,
+    0xFB17ABC2, 0x801817BF,
+    0xFB49E6A2, 0x80163440,
+    0xFB7C223C, 0x8014647A,
+    0xFBAE5E89, 0x8012A86F,
+    0xFBE09B80, 0x8011001E,
+    0xFC12D919, 0x800F6B88,
+    0xFC45174E, 0x800DEAAC,
+    0xFC775616, 0x800C7D8C,
+    0xFCA99569, 0x800B2427,
+    0xFCDBD541, 0x8009DE7D,
+    0xFD0E1594, 0x8008AC90,
+    0xFD40565B, 0x80078E5E,
+    0xFD72978F, 0x800683E8,
+    0xFDA4D928, 0x80058D2E,
+    0xFDD71B1E, 0x8004AA31,
+    0xFE095D69, 0x8003DAF0,
+    0xFE3BA001, 0x80031F6C,
+    0xFE6DE2E0, 0x800277A5,
+    0xFEA025FC, 0x8001E39B,
+    0xFED2694F, 0x8001634D,
+    0xFF04ACD0, 0x8000F6BD,
+    0xFF36F078, 0x80009DE9,
+    0xFF69343E, 0x800058D3,
+    0xFF9B781D, 0x8000277A,
+    0xFFCDBC0A, 0x800009DE
+};
+
+
+
+/*    
+* @brief  q15 Twiddle factors Table    
+*/
+
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 16	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_16_q15[24] = {
+    0x7FFF, 0x0000,
+    0x7641, 0x30FB,
+    0x5A82, 0x5A82,
+    0x30FB, 0x7641,
+    0x0000, 0x7FFF,
+    0xCF04, 0x7641,
+    0xA57D, 0x5A82,
+    0x89BE, 0x30FB,
+    0x8000, 0x0000,
+    0x89BE, 0xCF04,
+    0xA57D, 0xA57D,
+    0xCF04, 0x89BE
+};
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 32	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_32_q15[48] = {
+    0x7FFF, 0x0000,
+    0x7D8A, 0x18F8,
+    0x7641, 0x30FB,
+    0x6A6D, 0x471C,
+    0x5A82, 0x5A82,
+    0x471C, 0x6A6D,
+    0x30FB, 0x7641,
+    0x18F8, 0x7D8A,
+    0x0000, 0x7FFF,
+    0xE707, 0x7D8A,
+    0xCF04, 0x7641,
+    0xB8E3, 0x6A6D,
+    0xA57D, 0x5A82,
+    0x9592, 0x471C,
+    0x89BE, 0x30FB,
+    0x8275, 0x18F8,
+    0x8000, 0x0000,
+    0x8275, 0xE707,
+    0x89BE, 0xCF04,
+    0x9592, 0xB8E3,
+    0xA57D, 0xA57D,
+    0xB8E3, 0x9592,
+    0xCF04, 0x89BE,
+    0xE707, 0x8275
+};
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 64	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_64_q15[96] = {
+    0x7FFF, 0x0000,
+    0x7F62, 0x0C8B,
+    0x7D8A, 0x18F8,
+    0x7A7D, 0x2528,
+    0x7641, 0x30FB,
+    0x70E2, 0x3C56,
+    0x6A6D, 0x471C,
+    0x62F2, 0x5133,
+    0x5A82, 0x5A82,
+    0x5133, 0x62F2,
+    0x471C, 0x6A6D,
+    0x3C56, 0x70E2,
+    0x30FB, 0x7641,
+    0x2528, 0x7A7D,
+    0x18F8, 0x7D8A,
+    0x0C8B, 0x7F62,
+    0x0000, 0x7FFF,
+    0xF374, 0x7F62,
+    0xE707, 0x7D8A,
+    0xDAD7, 0x7A7D,
+    0xCF04, 0x7641,
+    0xC3A9, 0x70E2,
+    0xB8E3, 0x6A6D,
+    0xAECC, 0x62F2,
+    0xA57D, 0x5A82,
+    0x9D0D, 0x5133,
+    0x9592, 0x471C,
+    0x8F1D, 0x3C56,
+    0x89BE, 0x30FB,
+    0x8582, 0x2528,
+    0x8275, 0x18F8,
+    0x809D, 0x0C8B,
+    0x8000, 0x0000,
+    0x809D, 0xF374,
+    0x8275, 0xE707,
+    0x8582, 0xDAD7,
+    0x89BE, 0xCF04,
+    0x8F1D, 0xC3A9,
+    0x9592, 0xB8E3,
+    0x9D0D, 0xAECC,
+    0xA57D, 0xA57D,
+    0xAECC, 0x9D0D,
+    0xB8E3, 0x9592,
+    0xC3A9, 0x8F1D,
+    0xCF04, 0x89BE,
+    0xDAD7, 0x8582,
+    0xE707, 0x8275,
+    0xF374, 0x809D
+};
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 128	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_128_q15[192] = {
+    0x7FFF, 0x0000,
+    0x7FD8, 0x0647,
+    0x7F62, 0x0C8B,
+    0x7E9D, 0x12C8,
+    0x7D8A, 0x18F8,
+    0x7C29, 0x1F19,
+    0x7A7D, 0x2528,
+    0x7884, 0x2B1F,
+    0x7641, 0x30FB,
+    0x73B5, 0x36BA,
+    0x70E2, 0x3C56,
+    0x6DCA, 0x41CE,
+    0x6A6D, 0x471C,
+    0x66CF, 0x4C3F,
+    0x62F2, 0x5133,
+    0x5ED7, 0x55F5,
+    0x5A82, 0x5A82,
+    0x55F5, 0x5ED7,
+    0x5133, 0x62F2,
+    0x4C3F, 0x66CF,
+    0x471C, 0x6A6D,
+    0x41CE, 0x6DCA,
+    0x3C56, 0x70E2,
+    0x36BA, 0x73B5,
+    0x30FB, 0x7641,
+    0x2B1F, 0x7884,
+    0x2528, 0x7A7D,
+    0x1F19, 0x7C29,
+    0x18F8, 0x7D8A,
+    0x12C8, 0x7E9D,
+    0x0C8B, 0x7F62,
+    0x0647, 0x7FD8,
+    0x0000, 0x7FFF,
+    0xF9B8, 0x7FD8,
+    0xF374, 0x7F62,
+    0xED37, 0x7E9D,
+    0xE707, 0x7D8A,
+    0xE0E6, 0x7C29,
+    0xDAD7, 0x7A7D,
+    0xD4E0, 0x7884,
+    0xCF04, 0x7641,
+    0xC945, 0x73B5,
+    0xC3A9, 0x70E2,
+    0xBE31, 0x6DCA,
+    0xB8E3, 0x6A6D,
+    0xB3C0, 0x66CF,
+    0xAECC, 0x62F2,
+    0xAA0A, 0x5ED7,
+    0xA57D, 0x5A82,
+    0xA128, 0x55F5,
+    0x9D0D, 0x5133,
+    0x9930, 0x4C3F,
+    0x9592, 0x471C,
+    0x9235, 0x41CE,
+    0x8F1D, 0x3C56,
+    0x8C4A, 0x36BA,
+    0x89BE, 0x30FB,
+    0x877B, 0x2B1F,
+    0x8582, 0x2528,
+    0x83D6, 0x1F19,
+    0x8275, 0x18F8,
+    0x8162, 0x12C8,
+    0x809D, 0x0C8B,
+    0x8027, 0x0647,
+    0x8000, 0x0000,
+    0x8027, 0xF9B8,
+    0x809D, 0xF374,
+    0x8162, 0xED37,
+    0x8275, 0xE707,
+    0x83D6, 0xE0E6,
+    0x8582, 0xDAD7,
+    0x877B, 0xD4E0,
+    0x89BE, 0xCF04,
+    0x8C4A, 0xC945,
+    0x8F1D, 0xC3A9,
+    0x9235, 0xBE31,
+    0x9592, 0xB8E3,
+    0x9930, 0xB3C0,
+    0x9D0D, 0xAECC,
+    0xA128, 0xAA0A,
+    0xA57D, 0xA57D,
+    0xAA0A, 0xA128,
+    0xAECC, 0x9D0D,
+    0xB3C0, 0x9930,
+    0xB8E3, 0x9592,
+    0xBE31, 0x9235,
+    0xC3A9, 0x8F1D,
+    0xC945, 0x8C4A,
+    0xCF04, 0x89BE,
+    0xD4E0, 0x877B,
+    0xDAD7, 0x8582,
+    0xE0E6, 0x83D6,
+    0xE707, 0x8275,
+    0xED37, 0x8162,
+    0xF374, 0x809D,
+    0xF9B8, 0x8027
+};
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 256	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_256_q15[384] = {
+    0x7FFF, 0x0000,
+    0x7FF6, 0x0324,
+    0x7FD8, 0x0647,
+    0x7FA7, 0x096A,
+    0x7F62, 0x0C8B,
+    0x7F09, 0x0FAB,
+    0x7E9D, 0x12C8,
+    0x7E1D, 0x15E2,
+    0x7D8A, 0x18F8,
+    0x7CE3, 0x1C0B,
+    0x7C29, 0x1F19,
+    0x7B5D, 0x2223,
+    0x7A7D, 0x2528,
+    0x798A, 0x2826,
+    0x7884, 0x2B1F,
+    0x776C, 0x2E11,
+    0x7641, 0x30FB,
+    0x7504, 0x33DE,
+    0x73B5, 0x36BA,
+    0x7255, 0x398C,
+    0x70E2, 0x3C56,
+    0x6F5F, 0x3F17,
+    0x6DCA, 0x41CE,
+    0x6C24, 0x447A,
+    0x6A6D, 0x471C,
+    0x68A6, 0x49B4,
+    0x66CF, 0x4C3F,
+    0x64E8, 0x4EBF,
+    0x62F2, 0x5133,
+    0x60EC, 0x539B,
+    0x5ED7, 0x55F5,
+    0x5CB4, 0x5842,
+    0x5A82, 0x5A82,
+    0x5842, 0x5CB4,
+    0x55F5, 0x5ED7,
+    0x539B, 0x60EC,
+    0x5133, 0x62F2,
+    0x4EBF, 0x64E8,
+    0x4C3F, 0x66CF,
+    0x49B4, 0x68A6,
+    0x471C, 0x6A6D,
+    0x447A, 0x6C24,
+    0x41CE, 0x6DCA,
+    0x3F17, 0x6F5F,
+    0x3C56, 0x70E2,
+    0x398C, 0x7255,
+    0x36BA, 0x73B5,
+    0x33DE, 0x7504,
+    0x30FB, 0x7641,
+    0x2E11, 0x776C,
+    0x2B1F, 0x7884,
+    0x2826, 0x798A,
+    0x2528, 0x7A7D,
+    0x2223, 0x7B5D,
+    0x1F19, 0x7C29,
+    0x1C0B, 0x7CE3,
+    0x18F8, 0x7D8A,
+    0x15E2, 0x7E1D,
+    0x12C8, 0x7E9D,
+    0x0FAB, 0x7F09,
+    0x0C8B, 0x7F62,
+    0x096A, 0x7FA7,
+    0x0647, 0x7FD8,
+    0x0324, 0x7FF6,
+    0x0000, 0x7FFF,
+    0xFCDB, 0x7FF6,
+    0xF9B8, 0x7FD8,
+    0xF695, 0x7FA7,
+    0xF374, 0x7F62,
+    0xF054, 0x7F09,
+    0xED37, 0x7E9D,
+    0xEA1D, 0x7E1D,
+    0xE707, 0x7D8A,
+    0xE3F4, 0x7CE3,
+    0xE0E6, 0x7C29,
+    0xDDDC, 0x7B5D,
+    0xDAD7, 0x7A7D,
+    0xD7D9, 0x798A,
+    0xD4E0, 0x7884,
+    0xD1EE, 0x776C,
+    0xCF04, 0x7641,
+    0xCC21, 0x7504,
+    0xC945, 0x73B5,
+    0xC673, 0x7255,
+    0xC3A9, 0x70E2,
+    0xC0E8, 0x6F5F,
+    0xBE31, 0x6DCA,
+    0xBB85, 0x6C24,
+    0xB8E3, 0x6A6D,
+    0xB64B, 0x68A6,
+    0xB3C0, 0x66CF,
+    0xB140, 0x64E8,
+    0xAECC, 0x62F2,
+    0xAC64, 0x60EC,
+    0xAA0A, 0x5ED7,
+    0xA7BD, 0x5CB4,
+    0xA57D, 0x5A82,
+    0xA34B, 0x5842,
+    0xA128, 0x55F5,
+    0x9F13, 0x539B,
+    0x9D0D, 0x5133,
+    0x9B17, 0x4EBF,
+    0x9930, 0x4C3F,
+    0x9759, 0x49B4,
+    0x9592, 0x471C,
+    0x93DB, 0x447A,
+    0x9235, 0x41CE,
+    0x90A0, 0x3F17,
+    0x8F1D, 0x3C56,
+    0x8DAA, 0x398C,
+    0x8C4A, 0x36BA,
+    0x8AFB, 0x33DE,
+    0x89BE, 0x30FB,
+    0x8893, 0x2E11,
+    0x877B, 0x2B1F,
+    0x8675, 0x2826,
+    0x8582, 0x2528,
+    0x84A2, 0x2223,
+    0x83D6, 0x1F19,
+    0x831C, 0x1C0B,
+    0x8275, 0x18F8,
+    0x81E2, 0x15E2,
+    0x8162, 0x12C8,
+    0x80F6, 0x0FAB,
+    0x809D, 0x0C8B,
+    0x8058, 0x096A,
+    0x8027, 0x0647,
+    0x8009, 0x0324,
+    0x8000, 0x0000,
+    0x8009, 0xFCDB,
+    0x8027, 0xF9B8,
+    0x8058, 0xF695,
+    0x809D, 0xF374,
+    0x80F6, 0xF054,
+    0x8162, 0xED37,
+    0x81E2, 0xEA1D,
+    0x8275, 0xE707,
+    0x831C, 0xE3F4,
+    0x83D6, 0xE0E6,
+    0x84A2, 0xDDDC,
+    0x8582, 0xDAD7,
+    0x8675, 0xD7D9,
+    0x877B, 0xD4E0,
+    0x8893, 0xD1EE,
+    0x89BE, 0xCF04,
+    0x8AFB, 0xCC21,
+    0x8C4A, 0xC945,
+    0x8DAA, 0xC673,
+    0x8F1D, 0xC3A9,
+    0x90A0, 0xC0E8,
+    0x9235, 0xBE31,
+    0x93DB, 0xBB85,
+    0x9592, 0xB8E3,
+    0x9759, 0xB64B,
+    0x9930, 0xB3C0,
+    0x9B17, 0xB140,
+    0x9D0D, 0xAECC,
+    0x9F13, 0xAC64,
+    0xA128, 0xAA0A,
+    0xA34B, 0xA7BD,
+    0xA57D, 0xA57D,
+    0xA7BD, 0xA34B,
+    0xAA0A, 0xA128,
+    0xAC64, 0x9F13,
+    0xAECC, 0x9D0D,
+    0xB140, 0x9B17,
+    0xB3C0, 0x9930,
+    0xB64B, 0x9759,
+    0xB8E3, 0x9592,
+    0xBB85, 0x93DB,
+    0xBE31, 0x9235,
+    0xC0E8, 0x90A0,
+    0xC3A9, 0x8F1D,
+    0xC673, 0x8DAA,
+    0xC945, 0x8C4A,
+    0xCC21, 0x8AFB,
+    0xCF04, 0x89BE,
+    0xD1EE, 0x8893,
+    0xD4E0, 0x877B,
+    0xD7D9, 0x8675,
+    0xDAD7, 0x8582,
+    0xDDDC, 0x84A2,
+    0xE0E6, 0x83D6,
+    0xE3F4, 0x831C,
+    0xE707, 0x8275,
+    0xEA1D, 0x81E2,
+    0xED37, 0x8162,
+    0xF054, 0x80F6,
+    0xF374, 0x809D,
+    0xF695, 0x8058,
+    0xF9B8, 0x8027,
+    0xFCDB, 0x8009
+};
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 512	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_512_q15[768] = {
+    0x7FFF, 0x0000,
+    0x7FFD, 0x0192,
+    0x7FF6, 0x0324,
+    0x7FE9, 0x04B6,
+    0x7FD8, 0x0647,
+    0x7FC2, 0x07D9,
+    0x7FA7, 0x096A,
+    0x7F87, 0x0AFB,
+    0x7F62, 0x0C8B,
+    0x7F38, 0x0E1B,
+    0x7F09, 0x0FAB,
+    0x7ED5, 0x1139,
+    0x7E9D, 0x12C8,
+    0x7E5F, 0x1455,
+    0x7E1D, 0x15E2,
+    0x7DD6, 0x176D,
+    0x7D8A, 0x18F8,
+    0x7D39, 0x1A82,
+    0x7CE3, 0x1C0B,
+    0x7C89, 0x1D93,
+    0x7C29, 0x1F19,
+    0x7BC5, 0x209F,
+    0x7B5D, 0x2223,
+    0x7AEF, 0x23A6,
+    0x7A7D, 0x2528,
+    0x7A05, 0x26A8,
+    0x798A, 0x2826,
+    0x7909, 0x29A3,
+    0x7884, 0x2B1F,
+    0x77FA, 0x2C98,
+    0x776C, 0x2E11,
+    0x76D9, 0x2F87,
+    0x7641, 0x30FB,
+    0x75A5, 0x326E,
+    0x7504, 0x33DE,
+    0x745F, 0x354D,
+    0x73B5, 0x36BA,
+    0x7307, 0x3824,
+    0x7255, 0x398C,
+    0x719E, 0x3AF2,
+    0x70E2, 0x3C56,
+    0x7023, 0x3DB8,
+    0x6F5F, 0x3F17,
+    0x6E96, 0x4073,
+    0x6DCA, 0x41CE,
+    0x6CF9, 0x4325,
+    0x6C24, 0x447A,
+    0x6B4A, 0x45CD,
+    0x6A6D, 0x471C,
+    0x698C, 0x4869,
+    0x68A6, 0x49B4,
+    0x67BD, 0x4AFB,
+    0x66CF, 0x4C3F,
+    0x65DD, 0x4D81,
+    0x64E8, 0x4EBF,
+    0x63EF, 0x4FFB,
+    0x62F2, 0x5133,
+    0x61F1, 0x5269,
+    0x60EC, 0x539B,
+    0x5FE3, 0x54CA,
+    0x5ED7, 0x55F5,
+    0x5DC7, 0x571D,
+    0x5CB4, 0x5842,
+    0x5B9D, 0x5964,
+    0x5A82, 0x5A82,
+    0x5964, 0x5B9D,
+    0x5842, 0x5CB4,
+    0x571D, 0x5DC7,
+    0x55F5, 0x5ED7,
+    0x54CA, 0x5FE3,
+    0x539B, 0x60EC,
+    0x5269, 0x61F1,
+    0x5133, 0x62F2,
+    0x4FFB, 0x63EF,
+    0x4EBF, 0x64E8,
+    0x4D81, 0x65DD,
+    0x4C3F, 0x66CF,
+    0x4AFB, 0x67BD,
+    0x49B4, 0x68A6,
+    0x4869, 0x698C,
+    0x471C, 0x6A6D,
+    0x45CD, 0x6B4A,
+    0x447A, 0x6C24,
+    0x4325, 0x6CF9,
+    0x41CE, 0x6DCA,
+    0x4073, 0x6E96,
+    0x3F17, 0x6F5F,
+    0x3DB8, 0x7023,
+    0x3C56, 0x70E2,
+    0x3AF2, 0x719E,
+    0x398C, 0x7255,
+    0x3824, 0x7307,
+    0x36BA, 0x73B5,
+    0x354D, 0x745F,
+    0x33DE, 0x7504,
+    0x326E, 0x75A5,
+    0x30FB, 0x7641,
+    0x2F87, 0x76D9,
+    0x2E11, 0x776C,
+    0x2C98, 0x77FA,
+    0x2B1F, 0x7884,
+    0x29A3, 0x7909,
+    0x2826, 0x798A,
+    0x26A8, 0x7A05,
+    0x2528, 0x7A7D,
+    0x23A6, 0x7AEF,
+    0x2223, 0x7B5D,
+    0x209F, 0x7BC5,
+    0x1F19, 0x7C29,
+    0x1D93, 0x7C89,
+    0x1C0B, 0x7CE3,
+    0x1A82, 0x7D39,
+    0x18F8, 0x7D8A,
+    0x176D, 0x7DD6,
+    0x15E2, 0x7E1D,
+    0x1455, 0x7E5F,
+    0x12C8, 0x7E9D,
+    0x1139, 0x7ED5,
+    0x0FAB, 0x7F09,
+    0x0E1B, 0x7F38,
+    0x0C8B, 0x7F62,
+    0x0AFB, 0x7F87,
+    0x096A, 0x7FA7,
+    0x07D9, 0x7FC2,
+    0x0647, 0x7FD8,
+    0x04B6, 0x7FE9,
+    0x0324, 0x7FF6,
+    0x0192, 0x7FFD,
+    0x0000, 0x7FFF,
+    0xFE6D, 0x7FFD,
+    0xFCDB, 0x7FF6,
+    0xFB49, 0x7FE9,
+    0xF9B8, 0x7FD8,
+    0xF826, 0x7FC2,
+    0xF695, 0x7FA7,
+    0xF504, 0x7F87,
+    0xF374, 0x7F62,
+    0xF1E4, 0x7F38,
+    0xF054, 0x7F09,
+    0xEEC6, 0x7ED5,
+    0xED37, 0x7E9D,
+    0xEBAA, 0x7E5F,
+    0xEA1D, 0x7E1D,
+    0xE892, 0x7DD6,
+    0xE707, 0x7D8A,
+    0xE57D, 0x7D39,
+    0xE3F4, 0x7CE3,
+    0xE26C, 0x7C89,
+    0xE0E6, 0x7C29,
+    0xDF60, 0x7BC5,
+    0xDDDC, 0x7B5D,
+    0xDC59, 0x7AEF,
+    0xDAD7, 0x7A7D,
+    0xD957, 0x7A05,
+    0xD7D9, 0x798A,
+    0xD65C, 0x7909,
+    0xD4E0, 0x7884,
+    0xD367, 0x77FA,
+    0xD1EE, 0x776C,
+    0xD078, 0x76D9,
+    0xCF04, 0x7641,
+    0xCD91, 0x75A5,
+    0xCC21, 0x7504,
+    0xCAB2, 0x745F,
+    0xC945, 0x73B5,
+    0xC7DB, 0x7307,
+    0xC673, 0x7255,
+    0xC50D, 0x719E,
+    0xC3A9, 0x70E2,
+    0xC247, 0x7023,
+    0xC0E8, 0x6F5F,
+    0xBF8C, 0x6E96,
+    0xBE31, 0x6DCA,
+    0xBCDA, 0x6CF9,
+    0xBB85, 0x6C24,
+    0xBA32, 0x6B4A,
+    0xB8E3, 0x6A6D,
+    0xB796, 0x698C,
+    0xB64B, 0x68A6,
+    0xB504, 0x67BD,
+    0xB3C0, 0x66CF,
+    0xB27E, 0x65DD,
+    0xB140, 0x64E8,
+    0xB004, 0x63EF,
+    0xAECC, 0x62F2,
+    0xAD96, 0x61F1,
+    0xAC64, 0x60EC,
+    0xAB35, 0x5FE3,
+    0xAA0A, 0x5ED7,
+    0xA8E2, 0x5DC7,
+    0xA7BD, 0x5CB4,
+    0xA69B, 0x5B9D,
+    0xA57D, 0x5A82,
+    0xA462, 0x5964,
+    0xA34B, 0x5842,
+    0xA238, 0x571D,
+    0xA128, 0x55F5,
+    0xA01C, 0x54CA,
+    0x9F13, 0x539B,
+    0x9E0E, 0x5269,
+    0x9D0D, 0x5133,
+    0x9C10, 0x4FFB,
+    0x9B17, 0x4EBF,
+    0x9A22, 0x4D81,
+    0x9930, 0x4C3F,
+    0x9842, 0x4AFB,
+    0x9759, 0x49B4,
+    0x9673, 0x4869,
+    0x9592, 0x471C,
+    0x94B5, 0x45CD,
+    0x93DB, 0x447A,
+    0x9306, 0x4325,
+    0x9235, 0x41CE,
+    0x9169, 0x4073,
+    0x90A0, 0x3F17,
+    0x8FDC, 0x3DB8,
+    0x8F1D, 0x3C56,
+    0x8E61, 0x3AF2,
+    0x8DAA, 0x398C,
+    0x8CF8, 0x3824,
+    0x8C4A, 0x36BA,
+    0x8BA0, 0x354D,
+    0x8AFB, 0x33DE,
+    0x8A5A, 0x326E,
+    0x89BE, 0x30FB,
+    0x8926, 0x2F87,
+    0x8893, 0x2E11,
+    0x8805, 0x2C98,
+    0x877B, 0x2B1F,
+    0x86F6, 0x29A3,
+    0x8675, 0x2826,
+    0x85FA, 0x26A8,
+    0x8582, 0x2528,
+    0x8510, 0x23A6,
+    0x84A2, 0x2223,
+    0x843A, 0x209F,
+    0x83D6, 0x1F19,
+    0x8376, 0x1D93,
+    0x831C, 0x1C0B,
+    0x82C6, 0x1A82,
+    0x8275, 0x18F8,
+    0x8229, 0x176D,
+    0x81E2, 0x15E2,
+    0x81A0, 0x1455,
+    0x8162, 0x12C8,
+    0x812A, 0x1139,
+    0x80F6, 0x0FAB,
+    0x80C7, 0x0E1B,
+    0x809D, 0x0C8B,
+    0x8078, 0x0AFB,
+    0x8058, 0x096A,
+    0x803D, 0x07D9,
+    0x8027, 0x0647,
+    0x8016, 0x04B6,
+    0x8009, 0x0324,
+    0x8002, 0x0192,
+    0x8000, 0x0000,
+    0x8002, 0xFE6D,
+    0x8009, 0xFCDB,
+    0x8016, 0xFB49,
+    0x8027, 0xF9B8,
+    0x803D, 0xF826,
+    0x8058, 0xF695,
+    0x8078, 0xF504,
+    0x809D, 0xF374,
+    0x80C7, 0xF1E4,
+    0x80F6, 0xF054,
+    0x812A, 0xEEC6,
+    0x8162, 0xED37,
+    0x81A0, 0xEBAA,
+    0x81E2, 0xEA1D,
+    0x8229, 0xE892,
+    0x8275, 0xE707,
+    0x82C6, 0xE57D,
+    0x831C, 0xE3F4,
+    0x8376, 0xE26C,
+    0x83D6, 0xE0E6,
+    0x843A, 0xDF60,
+    0x84A2, 0xDDDC,
+    0x8510, 0xDC59,
+    0x8582, 0xDAD7,
+    0x85FA, 0xD957,
+    0x8675, 0xD7D9,
+    0x86F6, 0xD65C,
+    0x877B, 0xD4E0,
+    0x8805, 0xD367,
+    0x8893, 0xD1EE,
+    0x8926, 0xD078,
+    0x89BE, 0xCF04,
+    0x8A5A, 0xCD91,
+    0x8AFB, 0xCC21,
+    0x8BA0, 0xCAB2,
+    0x8C4A, 0xC945,
+    0x8CF8, 0xC7DB,
+    0x8DAA, 0xC673,
+    0x8E61, 0xC50D,
+    0x8F1D, 0xC3A9,
+    0x8FDC, 0xC247,
+    0x90A0, 0xC0E8,
+    0x9169, 0xBF8C,
+    0x9235, 0xBE31,
+    0x9306, 0xBCDA,
+    0x93DB, 0xBB85,
+    0x94B5, 0xBA32,
+    0x9592, 0xB8E3,
+    0x9673, 0xB796,
+    0x9759, 0xB64B,
+    0x9842, 0xB504,
+    0x9930, 0xB3C0,
+    0x9A22, 0xB27E,
+    0x9B17, 0xB140,
+    0x9C10, 0xB004,
+    0x9D0D, 0xAECC,
+    0x9E0E, 0xAD96,
+    0x9F13, 0xAC64,
+    0xA01C, 0xAB35,
+    0xA128, 0xAA0A,
+    0xA238, 0xA8E2,
+    0xA34B, 0xA7BD,
+    0xA462, 0xA69B,
+    0xA57D, 0xA57D,
+    0xA69B, 0xA462,
+    0xA7BD, 0xA34B,
+    0xA8E2, 0xA238,
+    0xAA0A, 0xA128,
+    0xAB35, 0xA01C,
+    0xAC64, 0x9F13,
+    0xAD96, 0x9E0E,
+    0xAECC, 0x9D0D,
+    0xB004, 0x9C10,
+    0xB140, 0x9B17,
+    0xB27E, 0x9A22,
+    0xB3C0, 0x9930,
+    0xB504, 0x9842,
+    0xB64B, 0x9759,
+    0xB796, 0x9673,
+    0xB8E3, 0x9592,
+    0xBA32, 0x94B5,
+    0xBB85, 0x93DB,
+    0xBCDA, 0x9306,
+    0xBE31, 0x9235,
+    0xBF8C, 0x9169,
+    0xC0E8, 0x90A0,
+    0xC247, 0x8FDC,
+    0xC3A9, 0x8F1D,
+    0xC50D, 0x8E61,
+    0xC673, 0x8DAA,
+    0xC7DB, 0x8CF8,
+    0xC945, 0x8C4A,
+    0xCAB2, 0x8BA0,
+    0xCC21, 0x8AFB,
+    0xCD91, 0x8A5A,
+    0xCF04, 0x89BE,
+    0xD078, 0x8926,
+    0xD1EE, 0x8893,
+    0xD367, 0x8805,
+    0xD4E0, 0x877B,
+    0xD65C, 0x86F6,
+    0xD7D9, 0x8675,
+    0xD957, 0x85FA,
+    0xDAD7, 0x8582,
+    0xDC59, 0x8510,
+    0xDDDC, 0x84A2,
+    0xDF60, 0x843A,
+    0xE0E6, 0x83D6,
+    0xE26C, 0x8376,
+    0xE3F4, 0x831C,
+    0xE57D, 0x82C6,
+    0xE707, 0x8275,
+    0xE892, 0x8229,
+    0xEA1D, 0x81E2,
+    0xEBAA, 0x81A0,
+    0xED37, 0x8162,
+    0xEEC6, 0x812A,
+    0xF054, 0x80F6,
+    0xF1E4, 0x80C7,
+    0xF374, 0x809D,
+    0xF504, 0x8078,
+    0xF695, 0x8058,
+    0xF826, 0x803D,
+    0xF9B8, 0x8027,
+    0xFB49, 0x8016,
+    0xFCDB, 0x8009,
+    0xFE6D, 0x8002
+};
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 1024	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_1024_q15[1536] = {
+    0x7FFF, 0x0000,
+    0x7FFF, 0x00C9,
+    0x7FFD, 0x0192,
+    0x7FFA, 0x025B,
+    0x7FF6, 0x0324,
+    0x7FF0, 0x03ED,
+    0x7FE9, 0x04B6,
+    0x7FE1, 0x057F,
+    0x7FD8, 0x0647,
+    0x7FCE, 0x0710,
+    0x7FC2, 0x07D9,
+    0x7FB5, 0x08A2,
+    0x7FA7, 0x096A,
+    0x7F97, 0x0A33,
+    0x7F87, 0x0AFB,
+    0x7F75, 0x0BC3,
+    0x7F62, 0x0C8B,
+    0x7F4D, 0x0D53,
+    0x7F38, 0x0E1B,
+    0x7F21, 0x0EE3,
+    0x7F09, 0x0FAB,
+    0x7EF0, 0x1072,
+    0x7ED5, 0x1139,
+    0x7EBA, 0x1201,
+    0x7E9D, 0x12C8,
+    0x7E7F, 0x138E,
+    0x7E5F, 0x1455,
+    0x7E3F, 0x151B,
+    0x7E1D, 0x15E2,
+    0x7DFA, 0x16A8,
+    0x7DD6, 0x176D,
+    0x7DB0, 0x1833,
+    0x7D8A, 0x18F8,
+    0x7D62, 0x19BD,
+    0x7D39, 0x1A82,
+    0x7D0F, 0x1B47,
+    0x7CE3, 0x1C0B,
+    0x7CB7, 0x1CCF,
+    0x7C89, 0x1D93,
+    0x7C5A, 0x1E56,
+    0x7C29, 0x1F19,
+    0x7BF8, 0x1FDC,
+    0x7BC5, 0x209F,
+    0x7B92, 0x2161,
+    0x7B5D, 0x2223,
+    0x7B26, 0x22E5,
+    0x7AEF, 0x23A6,
+    0x7AB6, 0x2467,
+    0x7A7D, 0x2528,
+    0x7A42, 0x25E8,
+    0x7A05, 0x26A8,
+    0x79C8, 0x2767,
+    0x798A, 0x2826,
+    0x794A, 0x28E5,
+    0x7909, 0x29A3,
+    0x78C7, 0x2A61,
+    0x7884, 0x2B1F,
+    0x7840, 0x2BDC,
+    0x77FA, 0x2C98,
+    0x77B4, 0x2D55,
+    0x776C, 0x2E11,
+    0x7723, 0x2ECC,
+    0x76D9, 0x2F87,
+    0x768E, 0x3041,
+    0x7641, 0x30FB,
+    0x75F4, 0x31B5,
+    0x75A5, 0x326E,
+    0x7555, 0x3326,
+    0x7504, 0x33DE,
+    0x74B2, 0x3496,
+    0x745F, 0x354D,
+    0x740B, 0x3604,
+    0x73B5, 0x36BA,
+    0x735F, 0x376F,
+    0x7307, 0x3824,
+    0x72AF, 0x38D8,
+    0x7255, 0x398C,
+    0x71FA, 0x3A40,
+    0x719E, 0x3AF2,
+    0x7141, 0x3BA5,
+    0x70E2, 0x3C56,
+    0x7083, 0x3D07,
+    0x7023, 0x3DB8,
+    0x6FC1, 0x3E68,
+    0x6F5F, 0x3F17,
+    0x6EFB, 0x3FC5,
+    0x6E96, 0x4073,
+    0x6E30, 0x4121,
+    0x6DCA, 0x41CE,
+    0x6D62, 0x427A,
+    0x6CF9, 0x4325,
+    0x6C8F, 0x43D0,
+    0x6C24, 0x447A,
+    0x6BB8, 0x4524,
+    0x6B4A, 0x45CD,
+    0x6ADC, 0x4675,
+    0x6A6D, 0x471C,
+    0x69FD, 0x47C3,
+    0x698C, 0x4869,
+    0x6919, 0x490F,
+    0x68A6, 0x49B4,
+    0x6832, 0x4A58,
+    0x67BD, 0x4AFB,
+    0x6746, 0x4B9E,
+    0x66CF, 0x4C3F,
+    0x6657, 0x4CE1,
+    0x65DD, 0x4D81,
+    0x6563, 0x4E21,
+    0x64E8, 0x4EBF,
+    0x646C, 0x4F5E,
+    0x63EF, 0x4FFB,
+    0x6371, 0x5097,
+    0x62F2, 0x5133,
+    0x6271, 0x51CE,
+    0x61F1, 0x5269,
+    0x616F, 0x5302,
+    0x60EC, 0x539B,
+    0x6068, 0x5433,
+    0x5FE3, 0x54CA,
+    0x5F5E, 0x5560,
+    0x5ED7, 0x55F5,
+    0x5E50, 0x568A,
+    0x5DC7, 0x571D,
+    0x5D3E, 0x57B0,
+    0x5CB4, 0x5842,
+    0x5C29, 0x58D4,
+    0x5B9D, 0x5964,
+    0x5B10, 0x59F3,
+    0x5A82, 0x5A82,
+    0x59F3, 0x5B10,
+    0x5964, 0x5B9D,
+    0x58D4, 0x5C29,
+    0x5842, 0x5CB4,
+    0x57B0, 0x5D3E,
+    0x571D, 0x5DC7,
+    0x568A, 0x5E50,
+    0x55F5, 0x5ED7,
+    0x5560, 0x5F5E,
+    0x54CA, 0x5FE3,
+    0x5433, 0x6068,
+    0x539B, 0x60EC,
+    0x5302, 0x616F,
+    0x5269, 0x61F1,
+    0x51CE, 0x6271,
+    0x5133, 0x62F2,
+    0x5097, 0x6371,
+    0x4FFB, 0x63EF,
+    0x4F5E, 0x646C,
+    0x4EBF, 0x64E8,
+    0x4E21, 0x6563,
+    0x4D81, 0x65DD,
+    0x4CE1, 0x6657,
+    0x4C3F, 0x66CF,
+    0x4B9E, 0x6746,
+    0x4AFB, 0x67BD,
+    0x4A58, 0x6832,
+    0x49B4, 0x68A6,
+    0x490F, 0x6919,
+    0x4869, 0x698C,
+    0x47C3, 0x69FD,
+    0x471C, 0x6A6D,
+    0x4675, 0x6ADC,
+    0x45CD, 0x6B4A,
+    0x4524, 0x6BB8,
+    0x447A, 0x6C24,
+    0x43D0, 0x6C8F,
+    0x4325, 0x6CF9,
+    0x427A, 0x6D62,
+    0x41CE, 0x6DCA,
+    0x4121, 0x6E30,
+    0x4073, 0x6E96,
+    0x3FC5, 0x6EFB,
+    0x3F17, 0x6F5F,
+    0x3E68, 0x6FC1,
+    0x3DB8, 0x7023,
+    0x3D07, 0x7083,
+    0x3C56, 0x70E2,
+    0x3BA5, 0x7141,
+    0x3AF2, 0x719E,
+    0x3A40, 0x71FA,
+    0x398C, 0x7255,
+    0x38D8, 0x72AF,
+    0x3824, 0x7307,
+    0x376F, 0x735F,
+    0x36BA, 0x73B5,
+    0x3604, 0x740B,
+    0x354D, 0x745F,
+    0x3496, 0x74B2,
+    0x33DE, 0x7504,
+    0x3326, 0x7555,
+    0x326E, 0x75A5,
+    0x31B5, 0x75F4,
+    0x30FB, 0x7641,
+    0x3041, 0x768E,
+    0x2F87, 0x76D9,
+    0x2ECC, 0x7723,
+    0x2E11, 0x776C,
+    0x2D55, 0x77B4,
+    0x2C98, 0x77FA,
+    0x2BDC, 0x7840,
+    0x2B1F, 0x7884,
+    0x2A61, 0x78C7,
+    0x29A3, 0x7909,
+    0x28E5, 0x794A,
+    0x2826, 0x798A,
+    0x2767, 0x79C8,
+    0x26A8, 0x7A05,
+    0x25E8, 0x7A42,
+    0x2528, 0x7A7D,
+    0x2467, 0x7AB6,
+    0x23A6, 0x7AEF,
+    0x22E5, 0x7B26,
+    0x2223, 0x7B5D,
+    0x2161, 0x7B92,
+    0x209F, 0x7BC5,
+    0x1FDC, 0x7BF8,
+    0x1F19, 0x7C29,
+    0x1E56, 0x7C5A,
+    0x1D93, 0x7C89,
+    0x1CCF, 0x7CB7,
+    0x1C0B, 0x7CE3,
+    0x1B47, 0x7D0F,
+    0x1A82, 0x7D39,
+    0x19BD, 0x7D62,
+    0x18F8, 0x7D8A,
+    0x1833, 0x7DB0,
+    0x176D, 0x7DD6,
+    0x16A8, 0x7DFA,
+    0x15E2, 0x7E1D,
+    0x151B, 0x7E3F,
+    0x1455, 0x7E5F,
+    0x138E, 0x7E7F,
+    0x12C8, 0x7E9D,
+    0x1201, 0x7EBA,
+    0x1139, 0x7ED5,
+    0x1072, 0x7EF0,
+    0x0FAB, 0x7F09,
+    0x0EE3, 0x7F21,
+    0x0E1B, 0x7F38,
+    0x0D53, 0x7F4D,
+    0x0C8B, 0x7F62,
+    0x0BC3, 0x7F75,
+    0x0AFB, 0x7F87,
+    0x0A33, 0x7F97,
+    0x096A, 0x7FA7,
+    0x08A2, 0x7FB5,
+    0x07D9, 0x7FC2,
+    0x0710, 0x7FCE,
+    0x0647, 0x7FD8,
+    0x057F, 0x7FE1,
+    0x04B6, 0x7FE9,
+    0x03ED, 0x7FF0,
+    0x0324, 0x7FF6,
+    0x025B, 0x7FFA,
+    0x0192, 0x7FFD,
+    0x00C9, 0x7FFF,
+    0x0000, 0x7FFF,
+    0xFF36, 0x7FFF,
+    0xFE6D, 0x7FFD,
+    0xFDA4, 0x7FFA,
+    0xFCDB, 0x7FF6,
+    0xFC12, 0x7FF0,
+    0xFB49, 0x7FE9,
+    0xFA80, 0x7FE1,
+    0xF9B8, 0x7FD8,
+    0xF8EF, 0x7FCE,
+    0xF826, 0x7FC2,
+    0xF75D, 0x7FB5,
+    0xF695, 0x7FA7,
+    0xF5CC, 0x7F97,
+    0xF504, 0x7F87,
+    0xF43C, 0x7F75,
+    0xF374, 0x7F62,
+    0xF2AC, 0x7F4D,
+    0xF1E4, 0x7F38,
+    0xF11C, 0x7F21,
+    0xF054, 0x7F09,
+    0xEF8D, 0x7EF0,
+    0xEEC6, 0x7ED5,
+    0xEDFE, 0x7EBA,
+    0xED37, 0x7E9D,
+    0xEC71, 0x7E7F,
+    0xEBAA, 0x7E5F,
+    0xEAE4, 0x7E3F,
+    0xEA1D, 0x7E1D,
+    0xE957, 0x7DFA,
+    0xE892, 0x7DD6,
+    0xE7CC, 0x7DB0,
+    0xE707, 0x7D8A,
+    0xE642, 0x7D62,
+    0xE57D, 0x7D39,
+    0xE4B8, 0x7D0F,
+    0xE3F4, 0x7CE3,
+    0xE330, 0x7CB7,
+    0xE26C, 0x7C89,
+    0xE1A9, 0x7C5A,
+    0xE0E6, 0x7C29,
+    0xE023, 0x7BF8,
+    0xDF60, 0x7BC5,
+    0xDE9E, 0x7B92,
+    0xDDDC, 0x7B5D,
+    0xDD1A, 0x7B26,
+    0xDC59, 0x7AEF,
+    0xDB98, 0x7AB6,
+    0xDAD7, 0x7A7D,
+    0xDA17, 0x7A42,
+    0xD957, 0x7A05,
+    0xD898, 0x79C8,
+    0xD7D9, 0x798A,
+    0xD71A, 0x794A,
+    0xD65C, 0x7909,
+    0xD59E, 0x78C7,
+    0xD4E0, 0x7884,
+    0xD423, 0x7840,
+    0xD367, 0x77FA,
+    0xD2AA, 0x77B4,
+    0xD1EE, 0x776C,
+    0xD133, 0x7723,
+    0xD078, 0x76D9,
+    0xCFBE, 0x768E,
+    0xCF04, 0x7641,
+    0xCE4A, 0x75F4,
+    0xCD91, 0x75A5,
+    0xCCD9, 0x7555,
+    0xCC21, 0x7504,
+    0xCB69, 0x74B2,
+    0xCAB2, 0x745F,
+    0xC9FB, 0x740B,
+    0xC945, 0x73B5,
+    0xC890, 0x735F,
+    0xC7DB, 0x7307,
+    0xC727, 0x72AF,
+    0xC673, 0x7255,
+    0xC5BF, 0x71FA,
+    0xC50D, 0x719E,
+    0xC45A, 0x7141,
+    0xC3A9, 0x70E2,
+    0xC2F8, 0x7083,
+    0xC247, 0x7023,
+    0xC197, 0x6FC1,
+    0xC0E8, 0x6F5F,
+    0xC03A, 0x6EFB,
+    0xBF8C, 0x6E96,
+    0xBEDE, 0x6E30,
+    0xBE31, 0x6DCA,
+    0xBD85, 0x6D62,
+    0xBCDA, 0x6CF9,
+    0xBC2F, 0x6C8F,
+    0xBB85, 0x6C24,
+    0xBADB, 0x6BB8,
+    0xBA32, 0x6B4A,
+    0xB98A, 0x6ADC,
+    0xB8E3, 0x6A6D,
+    0xB83C, 0x69FD,
+    0xB796, 0x698C,
+    0xB6F0, 0x6919,
+    0xB64B, 0x68A6,
+    0xB5A7, 0x6832,
+    0xB504, 0x67BD,
+    0xB461, 0x6746,
+    0xB3C0, 0x66CF,
+    0xB31E, 0x6657,
+    0xB27E, 0x65DD,
+    0xB1DE, 0x6563,
+    0xB140, 0x64E8,
+    0xB0A1, 0x646C,
+    0xB004, 0x63EF,
+    0xAF68, 0x6371,
+    0xAECC, 0x62F2,
+    0xAE31, 0x6271,
+    0xAD96, 0x61F1,
+    0xACFD, 0x616F,
+    0xAC64, 0x60EC,
+    0xABCC, 0x6068,
+    0xAB35, 0x5FE3,
+    0xAA9F, 0x5F5E,
+    0xAA0A, 0x5ED7,
+    0xA975, 0x5E50,
+    0xA8E2, 0x5DC7,
+    0xA84F, 0x5D3E,
+    0xA7BD, 0x5CB4,
+    0xA72B, 0x5C29,
+    0xA69B, 0x5B9D,
+    0xA60C, 0x5B10,
+    0xA57D, 0x5A82,
+    0xA4EF, 0x59F3,
+    0xA462, 0x5964,
+    0xA3D6, 0x58D4,
+    0xA34B, 0x5842,
+    0xA2C1, 0x57B0,
+    0xA238, 0x571D,
+    0xA1AF, 0x568A,
+    0xA128, 0x55F5,
+    0xA0A1, 0x5560,
+    0xA01C, 0x54CA,
+    0x9F97, 0x5433,
+    0x9F13, 0x539B,
+    0x9E90, 0x5302,
+    0x9E0E, 0x5269,
+    0x9D8E, 0x51CE,
+    0x9D0D, 0x5133,
+    0x9C8E, 0x5097,
+    0x9C10, 0x4FFB,
+    0x9B93, 0x4F5E,
+    0x9B17, 0x4EBF,
+    0x9A9C, 0x4E21,
+    0x9A22, 0x4D81,
+    0x99A8, 0x4CE1,
+    0x9930, 0x4C3F,
+    0x98B9, 0x4B9E,
+    0x9842, 0x4AFB,
+    0x97CD, 0x4A58,
+    0x9759, 0x49B4,
+    0x96E6, 0x490F,
+    0x9673, 0x4869,
+    0x9602, 0x47C3,
+    0x9592, 0x471C,
+    0x9523, 0x4675,
+    0x94B5, 0x45CD,
+    0x9447, 0x4524,
+    0x93DB, 0x447A,
+    0x9370, 0x43D0,
+    0x9306, 0x4325,
+    0x929D, 0x427A,
+    0x9235, 0x41CE,
+    0x91CF, 0x4121,
+    0x9169, 0x4073,
+    0x9104, 0x3FC5,
+    0x90A0, 0x3F17,
+    0x903E, 0x3E68,
+    0x8FDC, 0x3DB8,
+    0x8F7C, 0x3D07,
+    0x8F1D, 0x3C56,
+    0x8EBE, 0x3BA5,
+    0x8E61, 0x3AF2,
+    0x8E05, 0x3A40,
+    0x8DAA, 0x398C,
+    0x8D50, 0x38D8,
+    0x8CF8, 0x3824,
+    0x8CA0, 0x376F,
+    0x8C4A, 0x36BA,
+    0x8BF4, 0x3604,
+    0x8BA0, 0x354D,
+    0x8B4D, 0x3496,
+    0x8AFB, 0x33DE,
+    0x8AAA, 0x3326,
+    0x8A5A, 0x326E,
+    0x8A0B, 0x31B5,
+    0x89BE, 0x30FB,
+    0x8971, 0x3041,
+    0x8926, 0x2F87,
+    0x88DC, 0x2ECC,
+    0x8893, 0x2E11,
+    0x884B, 0x2D55,
+    0x8805, 0x2C98,
+    0x87BF, 0x2BDC,
+    0x877B, 0x2B1F,
+    0x8738, 0x2A61,
+    0x86F6, 0x29A3,
+    0x86B5, 0x28E5,
+    0x8675, 0x2826,
+    0x8637, 0x2767,
+    0x85FA, 0x26A8,
+    0x85BD, 0x25E8,
+    0x8582, 0x2528,
+    0x8549, 0x2467,
+    0x8510, 0x23A6,
+    0x84D9, 0x22E5,
+    0x84A2, 0x2223,
+    0x846D, 0x2161,
+    0x843A, 0x209F,
+    0x8407, 0x1FDC,
+    0x83D6, 0x1F19,
+    0x83A5, 0x1E56,
+    0x8376, 0x1D93,
+    0x8348, 0x1CCF,
+    0x831C, 0x1C0B,
+    0x82F0, 0x1B47,
+    0x82C6, 0x1A82,
+    0x829D, 0x19BD,
+    0x8275, 0x18F8,
+    0x824F, 0x1833,
+    0x8229, 0x176D,
+    0x8205, 0x16A8,
+    0x81E2, 0x15E2,
+    0x81C0, 0x151B,
+    0x81A0, 0x1455,
+    0x8180, 0x138E,
+    0x8162, 0x12C8,
+    0x8145, 0x1201,
+    0x812A, 0x1139,
+    0x810F, 0x1072,
+    0x80F6, 0x0FAB,
+    0x80DE, 0x0EE3,
+    0x80C7, 0x0E1B,
+    0x80B2, 0x0D53,
+    0x809D, 0x0C8B,
+    0x808A, 0x0BC3,
+    0x8078, 0x0AFB,
+    0x8068, 0x0A33,
+    0x8058, 0x096A,
+    0x804A, 0x08A2,
+    0x803D, 0x07D9,
+    0x8031, 0x0710,
+    0x8027, 0x0647,
+    0x801E, 0x057F,
+    0x8016, 0x04B6,
+    0x800F, 0x03ED,
+    0x8009, 0x0324,
+    0x8005, 0x025B,
+    0x8002, 0x0192,
+    0x8000, 0x00C9,
+    0x8000, 0x0000,
+    0x8000, 0xFF36,
+    0x8002, 0xFE6D,
+    0x8005, 0xFDA4,
+    0x8009, 0xFCDB,
+    0x800F, 0xFC12,
+    0x8016, 0xFB49,
+    0x801E, 0xFA80,
+    0x8027, 0xF9B8,
+    0x8031, 0xF8EF,
+    0x803D, 0xF826,
+    0x804A, 0xF75D,
+    0x8058, 0xF695,
+    0x8068, 0xF5CC,
+    0x8078, 0xF504,
+    0x808A, 0xF43C,
+    0x809D, 0xF374,
+    0x80B2, 0xF2AC,
+    0x80C7, 0xF1E4,
+    0x80DE, 0xF11C,
+    0x80F6, 0xF054,
+    0x810F, 0xEF8D,
+    0x812A, 0xEEC6,
+    0x8145, 0xEDFE,
+    0x8162, 0xED37,
+    0x8180, 0xEC71,
+    0x81A0, 0xEBAA,
+    0x81C0, 0xEAE4,
+    0x81E2, 0xEA1D,
+    0x8205, 0xE957,
+    0x8229, 0xE892,
+    0x824F, 0xE7CC,
+    0x8275, 0xE707,
+    0x829D, 0xE642,
+    0x82C6, 0xE57D,
+    0x82F0, 0xE4B8,
+    0x831C, 0xE3F4,
+    0x8348, 0xE330,
+    0x8376, 0xE26C,
+    0x83A5, 0xE1A9,
+    0x83D6, 0xE0E6,
+    0x8407, 0xE023,
+    0x843A, 0xDF60,
+    0x846D, 0xDE9E,
+    0x84A2, 0xDDDC,
+    0x84D9, 0xDD1A,
+    0x8510, 0xDC59,
+    0x8549, 0xDB98,
+    0x8582, 0xDAD7,
+    0x85BD, 0xDA17,
+    0x85FA, 0xD957,
+    0x8637, 0xD898,
+    0x8675, 0xD7D9,
+    0x86B5, 0xD71A,
+    0x86F6, 0xD65C,
+    0x8738, 0xD59E,
+    0x877B, 0xD4E0,
+    0x87BF, 0xD423,
+    0x8805, 0xD367,
+    0x884B, 0xD2AA,
+    0x8893, 0xD1EE,
+    0x88DC, 0xD133,
+    0x8926, 0xD078,
+    0x8971, 0xCFBE,
+    0x89BE, 0xCF04,
+    0x8A0B, 0xCE4A,
+    0x8A5A, 0xCD91,
+    0x8AAA, 0xCCD9,
+    0x8AFB, 0xCC21,
+    0x8B4D, 0xCB69,
+    0x8BA0, 0xCAB2,
+    0x8BF4, 0xC9FB,
+    0x8C4A, 0xC945,
+    0x8CA0, 0xC890,
+    0x8CF8, 0xC7DB,
+    0x8D50, 0xC727,
+    0x8DAA, 0xC673,
+    0x8E05, 0xC5BF,
+    0x8E61, 0xC50D,
+    0x8EBE, 0xC45A,
+    0x8F1D, 0xC3A9,
+    0x8F7C, 0xC2F8,
+    0x8FDC, 0xC247,
+    0x903E, 0xC197,
+    0x90A0, 0xC0E8,
+    0x9104, 0xC03A,
+    0x9169, 0xBF8C,
+    0x91CF, 0xBEDE,
+    0x9235, 0xBE31,
+    0x929D, 0xBD85,
+    0x9306, 0xBCDA,
+    0x9370, 0xBC2F,
+    0x93DB, 0xBB85,
+    0x9447, 0xBADB,
+    0x94B5, 0xBA32,
+    0x9523, 0xB98A,
+    0x9592, 0xB8E3,
+    0x9602, 0xB83C,
+    0x9673, 0xB796,
+    0x96E6, 0xB6F0,
+    0x9759, 0xB64B,
+    0x97CD, 0xB5A7,
+    0x9842, 0xB504,
+    0x98B9, 0xB461,
+    0x9930, 0xB3C0,
+    0x99A8, 0xB31E,
+    0x9A22, 0xB27E,
+    0x9A9C, 0xB1DE,
+    0x9B17, 0xB140,
+    0x9B93, 0xB0A1,
+    0x9C10, 0xB004,
+    0x9C8E, 0xAF68,
+    0x9D0D, 0xAECC,
+    0x9D8E, 0xAE31,
+    0x9E0E, 0xAD96,
+    0x9E90, 0xACFD,
+    0x9F13, 0xAC64,
+    0x9F97, 0xABCC,
+    0xA01C, 0xAB35,
+    0xA0A1, 0xAA9F,
+    0xA128, 0xAA0A,
+    0xA1AF, 0xA975,
+    0xA238, 0xA8E2,
+    0xA2C1, 0xA84F,
+    0xA34B, 0xA7BD,
+    0xA3D6, 0xA72B,
+    0xA462, 0xA69B,
+    0xA4EF, 0xA60C,
+    0xA57D, 0xA57D,
+    0xA60C, 0xA4EF,
+    0xA69B, 0xA462,
+    0xA72B, 0xA3D6,
+    0xA7BD, 0xA34B,
+    0xA84F, 0xA2C1,
+    0xA8E2, 0xA238,
+    0xA975, 0xA1AF,
+    0xAA0A, 0xA128,
+    0xAA9F, 0xA0A1,
+    0xAB35, 0xA01C,
+    0xABCC, 0x9F97,
+    0xAC64, 0x9F13,
+    0xACFD, 0x9E90,
+    0xAD96, 0x9E0E,
+    0xAE31, 0x9D8E,
+    0xAECC, 0x9D0D,
+    0xAF68, 0x9C8E,
+    0xB004, 0x9C10,
+    0xB0A1, 0x9B93,
+    0xB140, 0x9B17,
+    0xB1DE, 0x9A9C,
+    0xB27E, 0x9A22,
+    0xB31E, 0x99A8,
+    0xB3C0, 0x9930,
+    0xB461, 0x98B9,
+    0xB504, 0x9842,
+    0xB5A7, 0x97CD,
+    0xB64B, 0x9759,
+    0xB6F0, 0x96E6,
+    0xB796, 0x9673,
+    0xB83C, 0x9602,
+    0xB8E3, 0x9592,
+    0xB98A, 0x9523,
+    0xBA32, 0x94B5,
+    0xBADB, 0x9447,
+    0xBB85, 0x93DB,
+    0xBC2F, 0x9370,
+    0xBCDA, 0x9306,
+    0xBD85, 0x929D,
+    0xBE31, 0x9235,
+    0xBEDE, 0x91CF,
+    0xBF8C, 0x9169,
+    0xC03A, 0x9104,
+    0xC0E8, 0x90A0,
+    0xC197, 0x903E,
+    0xC247, 0x8FDC,
+    0xC2F8, 0x8F7C,
+    0xC3A9, 0x8F1D,
+    0xC45A, 0x8EBE,
+    0xC50D, 0x8E61,
+    0xC5BF, 0x8E05,
+    0xC673, 0x8DAA,
+    0xC727, 0x8D50,
+    0xC7DB, 0x8CF8,
+    0xC890, 0x8CA0,
+    0xC945, 0x8C4A,
+    0xC9FB, 0x8BF4,
+    0xCAB2, 0x8BA0,
+    0xCB69, 0x8B4D,
+    0xCC21, 0x8AFB,
+    0xCCD9, 0x8AAA,
+    0xCD91, 0x8A5A,
+    0xCE4A, 0x8A0B,
+    0xCF04, 0x89BE,
+    0xCFBE, 0x8971,
+    0xD078, 0x8926,
+    0xD133, 0x88DC,
+    0xD1EE, 0x8893,
+    0xD2AA, 0x884B,
+    0xD367, 0x8805,
+    0xD423, 0x87BF,
+    0xD4E0, 0x877B,
+    0xD59E, 0x8738,
+    0xD65C, 0x86F6,
+    0xD71A, 0x86B5,
+    0xD7D9, 0x8675,
+    0xD898, 0x8637,
+    0xD957, 0x85FA,
+    0xDA17, 0x85BD,
+    0xDAD7, 0x8582,
+    0xDB98, 0x8549,
+    0xDC59, 0x8510,
+    0xDD1A, 0x84D9,
+    0xDDDC, 0x84A2,
+    0xDE9E, 0x846D,
+    0xDF60, 0x843A,
+    0xE023, 0x8407,
+    0xE0E6, 0x83D6,
+    0xE1A9, 0x83A5,
+    0xE26C, 0x8376,
+    0xE330, 0x8348,
+    0xE3F4, 0x831C,
+    0xE4B8, 0x82F0,
+    0xE57D, 0x82C6,
+    0xE642, 0x829D,
+    0xE707, 0x8275,
+    0xE7CC, 0x824F,
+    0xE892, 0x8229,
+    0xE957, 0x8205,
+    0xEA1D, 0x81E2,
+    0xEAE4, 0x81C0,
+    0xEBAA, 0x81A0,
+    0xEC71, 0x8180,
+    0xED37, 0x8162,
+    0xEDFE, 0x8145,
+    0xEEC6, 0x812A,
+    0xEF8D, 0x810F,
+    0xF054, 0x80F6,
+    0xF11C, 0x80DE,
+    0xF1E4, 0x80C7,
+    0xF2AC, 0x80B2,
+    0xF374, 0x809D,
+    0xF43C, 0x808A,
+    0xF504, 0x8078,
+    0xF5CC, 0x8068,
+    0xF695, 0x8058,
+    0xF75D, 0x804A,
+    0xF826, 0x803D,
+    0xF8EF, 0x8031,
+    0xF9B8, 0x8027,
+    0xFA80, 0x801E,
+    0xFB49, 0x8016,
+    0xFC12, 0x800F,
+    0xFCDB, 0x8009,
+    0xFDA4, 0x8005,
+    0xFE6D, 0x8002,
+    0xFF36, 0x8000
+};
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 2048	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_2048_q15[3072] = {
+    0x7FFF, 0x0000,
+    0x7FFF, 0x0064,
+    0x7FFF, 0x00C9,
+    0x7FFE, 0x012D,
+    0x7FFD, 0x0192,
+    0x7FFC, 0x01F6,
+    0x7FFA, 0x025B,
+    0x7FF8, 0x02BF,
+    0x7FF6, 0x0324,
+    0x7FF3, 0x0388,
+    0x7FF0, 0x03ED,
+    0x7FED, 0x0451,
+    0x7FE9, 0x04B6,
+    0x7FE5, 0x051A,
+    0x7FE1, 0x057F,
+    0x7FDD, 0x05E3,
+    0x7FD8, 0x0647,
+    0x7FD3, 0x06AC,
+    0x7FCE, 0x0710,
+    0x7FC8, 0x0775,
+    0x7FC2, 0x07D9,
+    0x7FBC, 0x083D,
+    0x7FB5, 0x08A2,
+    0x7FAE, 0x0906,
+    0x7FA7, 0x096A,
+    0x7F9F, 0x09CE,
+    0x7F97, 0x0A33,
+    0x7F8F, 0x0A97,
+    0x7F87, 0x0AFB,
+    0x7F7E, 0x0B5F,
+    0x7F75, 0x0BC3,
+    0x7F6B, 0x0C27,
+    0x7F62, 0x0C8B,
+    0x7F58, 0x0CEF,
+    0x7F4D, 0x0D53,
+    0x7F43, 0x0DB7,
+    0x7F38, 0x0E1B,
+    0x7F2D, 0x0E7F,
+    0x7F21, 0x0EE3,
+    0x7F15, 0x0F47,
+    0x7F09, 0x0FAB,
+    0x7EFD, 0x100E,
+    0x7EF0, 0x1072,
+    0x7EE3, 0x10D6,
+    0x7ED5, 0x1139,
+    0x7EC8, 0x119D,
+    0x7EBA, 0x1201,
+    0x7EAB, 0x1264,
+    0x7E9D, 0x12C8,
+    0x7E8E, 0x132B,
+    0x7E7F, 0x138E,
+    0x7E6F, 0x13F2,
+    0x7E5F, 0x1455,
+    0x7E4F, 0x14B8,
+    0x7E3F, 0x151B,
+    0x7E2E, 0x157F,
+    0x7E1D, 0x15E2,
+    0x7E0C, 0x1645,
+    0x7DFA, 0x16A8,
+    0x7DE8, 0x170A,
+    0x7DD6, 0x176D,
+    0x7DC3, 0x17D0,
+    0x7DB0, 0x1833,
+    0x7D9D, 0x1896,
+    0x7D8A, 0x18F8,
+    0x7D76, 0x195B,
+    0x7D62, 0x19BD,
+    0x7D4E, 0x1A20,
+    0x7D39, 0x1A82,
+    0x7D24, 0x1AE4,
+    0x7D0F, 0x1B47,
+    0x7CF9, 0x1BA9,
+    0x7CE3, 0x1C0B,
+    0x7CCD, 0x1C6D,
+    0x7CB7, 0x1CCF,
+    0x7CA0, 0x1D31,
+    0x7C89, 0x1D93,
+    0x7C71, 0x1DF5,
+    0x7C5A, 0x1E56,
+    0x7C42, 0x1EB8,
+    0x7C29, 0x1F19,
+    0x7C11, 0x1F7B,
+    0x7BF8, 0x1FDC,
+    0x7BDF, 0x203E,
+    0x7BC5, 0x209F,
+    0x7BAC, 0x2100,
+    0x7B92, 0x2161,
+    0x7B77, 0x21C2,
+    0x7B5D, 0x2223,
+    0x7B42, 0x2284,
+    0x7B26, 0x22E5,
+    0x7B0B, 0x2345,
+    0x7AEF, 0x23A6,
+    0x7AD3, 0x2407,
+    0x7AB6, 0x2467,
+    0x7A9A, 0x24C7,
+    0x7A7D, 0x2528,
+    0x7A5F, 0x2588,
+    0x7A42, 0x25E8,
+    0x7A24, 0x2648,
+    0x7A05, 0x26A8,
+    0x79E7, 0x2707,
+    0x79C8, 0x2767,
+    0x79A9, 0x27C7,
+    0x798A, 0x2826,
+    0x796A, 0x2886,
+    0x794A, 0x28E5,
+    0x792A, 0x2944,
+    0x7909, 0x29A3,
+    0x78E8, 0x2A02,
+    0x78C7, 0x2A61,
+    0x78A6, 0x2AC0,
+    0x7884, 0x2B1F,
+    0x7862, 0x2B7D,
+    0x7840, 0x2BDC,
+    0x781D, 0x2C3A,
+    0x77FA, 0x2C98,
+    0x77D7, 0x2CF7,
+    0x77B4, 0x2D55,
+    0x7790, 0x2DB3,
+    0x776C, 0x2E11,
+    0x7747, 0x2E6E,
+    0x7723, 0x2ECC,
+    0x76FE, 0x2F29,
+    0x76D9, 0x2F87,
+    0x76B3, 0x2FE4,
+    0x768E, 0x3041,
+    0x7668, 0x309E,
+    0x7641, 0x30FB,
+    0x761B, 0x3158,
+    0x75F4, 0x31B5,
+    0x75CC, 0x3211,
+    0x75A5, 0x326E,
+    0x757D, 0x32CA,
+    0x7555, 0x3326,
+    0x752D, 0x3382,
+    0x7504, 0x33DE,
+    0x74DB, 0x343A,
+    0x74B2, 0x3496,
+    0x7489, 0x34F2,
+    0x745F, 0x354D,
+    0x7435, 0x35A8,
+    0x740B, 0x3604,
+    0x73E0, 0x365F,
+    0x73B5, 0x36BA,
+    0x738A, 0x3714,
+    0x735F, 0x376F,
+    0x7333, 0x37CA,
+    0x7307, 0x3824,
+    0x72DB, 0x387E,
+    0x72AF, 0x38D8,
+    0x7282, 0x3932,
+    0x7255, 0x398C,
+    0x7227, 0x39E6,
+    0x71FA, 0x3A40,
+    0x71CC, 0x3A99,
+    0x719E, 0x3AF2,
+    0x716F, 0x3B4C,
+    0x7141, 0x3BA5,
+    0x7112, 0x3BFD,
+    0x70E2, 0x3C56,
+    0x70B3, 0x3CAF,
+    0x7083, 0x3D07,
+    0x7053, 0x3D60,
+    0x7023, 0x3DB8,
+    0x6FF2, 0x3E10,
+    0x6FC1, 0x3E68,
+    0x6F90, 0x3EBF,
+    0x6F5F, 0x3F17,
+    0x6F2D, 0x3F6E,
+    0x6EFB, 0x3FC5,
+    0x6EC9, 0x401D,
+    0x6E96, 0x4073,
+    0x6E63, 0x40CA,
+    0x6E30, 0x4121,
+    0x6DFD, 0x4177,
+    0x6DCA, 0x41CE,
+    0x6D96, 0x4224,
+    0x6D62, 0x427A,
+    0x6D2D, 0x42D0,
+    0x6CF9, 0x4325,
+    0x6CC4, 0x437B,
+    0x6C8F, 0x43D0,
+    0x6C59, 0x4425,
+    0x6C24, 0x447A,
+    0x6BEE, 0x44CF,
+    0x6BB8, 0x4524,
+    0x6B81, 0x4578,
+    0x6B4A, 0x45CD,
+    0x6B13, 0x4621,
+    0x6ADC, 0x4675,
+    0x6AA5, 0x46C9,
+    0x6A6D, 0x471C,
+    0x6A35, 0x4770,
+    0x69FD, 0x47C3,
+    0x69C4, 0x4816,
+    0x698C, 0x4869,
+    0x6953, 0x48BC,
+    0x6919, 0x490F,
+    0x68E0, 0x4961,
+    0x68A6, 0x49B4,
+    0x686C, 0x4A06,
+    0x6832, 0x4A58,
+    0x67F7, 0x4AA9,
+    0x67BD, 0x4AFB,
+    0x6782, 0x4B4C,
+    0x6746, 0x4B9E,
+    0x670B, 0x4BEF,
+    0x66CF, 0x4C3F,
+    0x6693, 0x4C90,
+    0x6657, 0x4CE1,
+    0x661A, 0x4D31,
+    0x65DD, 0x4D81,
+    0x65A0, 0x4DD1,
+    0x6563, 0x4E21,
+    0x6526, 0x4E70,
+    0x64E8, 0x4EBF,
+    0x64AA, 0x4F0F,
+    0x646C, 0x4F5E,
+    0x642D, 0x4FAC,
+    0x63EF, 0x4FFB,
+    0x63B0, 0x5049,
+    0x6371, 0x5097,
+    0x6331, 0x50E5,
+    0x62F2, 0x5133,
+    0x62B2, 0x5181,
+    0x6271, 0x51CE,
+    0x6231, 0x521C,
+    0x61F1, 0x5269,
+    0x61B0, 0x52B5,
+    0x616F, 0x5302,
+    0x612D, 0x534E,
+    0x60EC, 0x539B,
+    0x60AA, 0x53E7,
+    0x6068, 0x5433,
+    0x6026, 0x547E,
+    0x5FE3, 0x54CA,
+    0x5FA0, 0x5515,
+    0x5F5E, 0x5560,
+    0x5F1A, 0x55AB,
+    0x5ED7, 0x55F5,
+    0x5E93, 0x5640,
+    0x5E50, 0x568A,
+    0x5E0B, 0x56D4,
+    0x5DC7, 0x571D,
+    0x5D83, 0x5767,
+    0x5D3E, 0x57B0,
+    0x5CF9, 0x57F9,
+    0x5CB4, 0x5842,
+    0x5C6E, 0x588B,
+    0x5C29, 0x58D4,
+    0x5BE3, 0x591C,
+    0x5B9D, 0x5964,
+    0x5B56, 0x59AC,
+    0x5B10, 0x59F3,
+    0x5AC9, 0x5A3B,
+    0x5A82, 0x5A82,
+    0x5A3B, 0x5AC9,
+    0x59F3, 0x5B10,
+    0x59AC, 0x5B56,
+    0x5964, 0x5B9D,
+    0x591C, 0x5BE3,
+    0x58D4, 0x5C29,
+    0x588B, 0x5C6E,
+    0x5842, 0x5CB4,
+    0x57F9, 0x5CF9,
+    0x57B0, 0x5D3E,
+    0x5767, 0x5D83,
+    0x571D, 0x5DC7,
+    0x56D4, 0x5E0B,
+    0x568A, 0x5E50,
+    0x5640, 0x5E93,
+    0x55F5, 0x5ED7,
+    0x55AB, 0x5F1A,
+    0x5560, 0x5F5E,
+    0x5515, 0x5FA0,
+    0x54CA, 0x5FE3,
+    0x547E, 0x6026,
+    0x5433, 0x6068,
+    0x53E7, 0x60AA,
+    0x539B, 0x60EC,
+    0x534E, 0x612D,
+    0x5302, 0x616F,
+    0x52B5, 0x61B0,
+    0x5269, 0x61F1,
+    0x521C, 0x6231,
+    0x51CE, 0x6271,
+    0x5181, 0x62B2,
+    0x5133, 0x62F2,
+    0x50E5, 0x6331,
+    0x5097, 0x6371,
+    0x5049, 0x63B0,
+    0x4FFB, 0x63EF,
+    0x4FAC, 0x642D,
+    0x4F5E, 0x646C,
+    0x4F0F, 0x64AA,
+    0x4EBF, 0x64E8,
+    0x4E70, 0x6526,
+    0x4E21, 0x6563,
+    0x4DD1, 0x65A0,
+    0x4D81, 0x65DD,
+    0x4D31, 0x661A,
+    0x4CE1, 0x6657,
+    0x4C90, 0x6693,
+    0x4C3F, 0x66CF,
+    0x4BEF, 0x670B,
+    0x4B9E, 0x6746,
+    0x4B4C, 0x6782,
+    0x4AFB, 0x67BD,
+    0x4AA9, 0x67F7,
+    0x4A58, 0x6832,
+    0x4A06, 0x686C,
+    0x49B4, 0x68A6,
+    0x4961, 0x68E0,
+    0x490F, 0x6919,
+    0x48BC, 0x6953,
+    0x4869, 0x698C,
+    0x4816, 0x69C4,
+    0x47C3, 0x69FD,
+    0x4770, 0x6A35,
+    0x471C, 0x6A6D,
+    0x46C9, 0x6AA5,
+    0x4675, 0x6ADC,
+    0x4621, 0x6B13,
+    0x45CD, 0x6B4A,
+    0x4578, 0x6B81,
+    0x4524, 0x6BB8,
+    0x44CF, 0x6BEE,
+    0x447A, 0x6C24,
+    0x4425, 0x6C59,
+    0x43D0, 0x6C8F,
+    0x437B, 0x6CC4,
+    0x4325, 0x6CF9,
+    0x42D0, 0x6D2D,
+    0x427A, 0x6D62,
+    0x4224, 0x6D96,
+    0x41CE, 0x6DCA,
+    0x4177, 0x6DFD,
+    0x4121, 0x6E30,
+    0x40CA, 0x6E63,
+    0x4073, 0x6E96,
+    0x401D, 0x6EC9,
+    0x3FC5, 0x6EFB,
+    0x3F6E, 0x6F2D,
+    0x3F17, 0x6F5F,
+    0x3EBF, 0x6F90,
+    0x3E68, 0x6FC1,
+    0x3E10, 0x6FF2,
+    0x3DB8, 0x7023,
+    0x3D60, 0x7053,
+    0x3D07, 0x7083,
+    0x3CAF, 0x70B3,
+    0x3C56, 0x70E2,
+    0x3BFD, 0x7112,
+    0x3BA5, 0x7141,
+    0x3B4C, 0x716F,
+    0x3AF2, 0x719E,
+    0x3A99, 0x71CC,
+    0x3A40, 0x71FA,
+    0x39E6, 0x7227,
+    0x398C, 0x7255,
+    0x3932, 0x7282,
+    0x38D8, 0x72AF,
+    0x387E, 0x72DB,
+    0x3824, 0x7307,
+    0x37CA, 0x7333,
+    0x376F, 0x735F,
+    0x3714, 0x738A,
+    0x36BA, 0x73B5,
+    0x365F, 0x73E0,
+    0x3604, 0x740B,
+    0x35A8, 0x7435,
+    0x354D, 0x745F,
+    0x34F2, 0x7489,
+    0x3496, 0x74B2,
+    0x343A, 0x74DB,
+    0x33DE, 0x7504,
+    0x3382, 0x752D,
+    0x3326, 0x7555,
+    0x32CA, 0x757D,
+    0x326E, 0x75A5,
+    0x3211, 0x75CC,
+    0x31B5, 0x75F4,
+    0x3158, 0x761B,
+    0x30FB, 0x7641,
+    0x309E, 0x7668,
+    0x3041, 0x768E,
+    0x2FE4, 0x76B3,
+    0x2F87, 0x76D9,
+    0x2F29, 0x76FE,
+    0x2ECC, 0x7723,
+    0x2E6E, 0x7747,
+    0x2E11, 0x776C,
+    0x2DB3, 0x7790,
+    0x2D55, 0x77B4,
+    0x2CF7, 0x77D7,
+    0x2C98, 0x77FA,
+    0x2C3A, 0x781D,
+    0x2BDC, 0x7840,
+    0x2B7D, 0x7862,
+    0x2B1F, 0x7884,
+    0x2AC0, 0x78A6,
+    0x2A61, 0x78C7,
+    0x2A02, 0x78E8,
+    0x29A3, 0x7909,
+    0x2944, 0x792A,
+    0x28E5, 0x794A,
+    0x2886, 0x796A,
+    0x2826, 0x798A,
+    0x27C7, 0x79A9,
+    0x2767, 0x79C8,
+    0x2707, 0x79E7,
+    0x26A8, 0x7A05,
+    0x2648, 0x7A24,
+    0x25E8, 0x7A42,
+    0x2588, 0x7A5F,
+    0x2528, 0x7A7D,
+    0x24C7, 0x7A9A,
+    0x2467, 0x7AB6,
+    0x2407, 0x7AD3,
+    0x23A6, 0x7AEF,
+    0x2345, 0x7B0B,
+    0x22E5, 0x7B26,
+    0x2284, 0x7B42,
+    0x2223, 0x7B5D,
+    0x21C2, 0x7B77,
+    0x2161, 0x7B92,
+    0x2100, 0x7BAC,
+    0x209F, 0x7BC5,
+    0x203E, 0x7BDF,
+    0x1FDC, 0x7BF8,
+    0x1F7B, 0x7C11,
+    0x1F19, 0x7C29,
+    0x1EB8, 0x7C42,
+    0x1E56, 0x7C5A,
+    0x1DF5, 0x7C71,
+    0x1D93, 0x7C89,
+    0x1D31, 0x7CA0,
+    0x1CCF, 0x7CB7,
+    0x1C6D, 0x7CCD,
+    0x1C0B, 0x7CE3,
+    0x1BA9, 0x7CF9,
+    0x1B47, 0x7D0F,
+    0x1AE4, 0x7D24,
+    0x1A82, 0x7D39,
+    0x1A20, 0x7D4E,
+    0x19BD, 0x7D62,
+    0x195B, 0x7D76,
+    0x18F8, 0x7D8A,
+    0x1896, 0x7D9D,
+    0x1833, 0x7DB0,
+    0x17D0, 0x7DC3,
+    0x176D, 0x7DD6,
+    0x170A, 0x7DE8,
+    0x16A8, 0x7DFA,
+    0x1645, 0x7E0C,
+    0x15E2, 0x7E1D,
+    0x157F, 0x7E2E,
+    0x151B, 0x7E3F,
+    0x14B8, 0x7E4F,
+    0x1455, 0x7E5F,
+    0x13F2, 0x7E6F,
+    0x138E, 0x7E7F,
+    0x132B, 0x7E8E,
+    0x12C8, 0x7E9D,
+    0x1264, 0x7EAB,
+    0x1201, 0x7EBA,
+    0x119D, 0x7EC8,
+    0x1139, 0x7ED5,
+    0x10D6, 0x7EE3,
+    0x1072, 0x7EF0,
+    0x100E, 0x7EFD,
+    0x0FAB, 0x7F09,
+    0x0F47, 0x7F15,
+    0x0EE3, 0x7F21,
+    0x0E7F, 0x7F2D,
+    0x0E1B, 0x7F38,
+    0x0DB7, 0x7F43,
+    0x0D53, 0x7F4D,
+    0x0CEF, 0x7F58,
+    0x0C8B, 0x7F62,
+    0x0C27, 0x7F6B,
+    0x0BC3, 0x7F75,
+    0x0B5F, 0x7F7E,
+    0x0AFB, 0x7F87,
+    0x0A97, 0x7F8F,
+    0x0A33, 0x7F97,
+    0x09CE, 0x7F9F,
+    0x096A, 0x7FA7,
+    0x0906, 0x7FAE,
+    0x08A2, 0x7FB5,
+    0x083D, 0x7FBC,
+    0x07D9, 0x7FC2,
+    0x0775, 0x7FC8,
+    0x0710, 0x7FCE,
+    0x06AC, 0x7FD3,
+    0x0647, 0x7FD8,
+    0x05E3, 0x7FDD,
+    0x057F, 0x7FE1,
+    0x051A, 0x7FE5,
+    0x04B6, 0x7FE9,
+    0x0451, 0x7FED,
+    0x03ED, 0x7FF0,
+    0x0388, 0x7FF3,
+    0x0324, 0x7FF6,
+    0x02BF, 0x7FF8,
+    0x025B, 0x7FFA,
+    0x01F6, 0x7FFC,
+    0x0192, 0x7FFD,
+    0x012D, 0x7FFE,
+    0x00C9, 0x7FFF,
+    0x0064, 0x7FFF,
+    0x0000, 0x7FFF,
+    0xFF9B, 0x7FFF,
+    0xFF36, 0x7FFF,
+    0xFED2, 0x7FFE,
+    0xFE6D, 0x7FFD,
+    0xFE09, 0x7FFC,
+    0xFDA4, 0x7FFA,
+    0xFD40, 0x7FF8,
+    0xFCDB, 0x7FF6,
+    0xFC77, 0x7FF3,
+    0xFC12, 0x7FF0,
+    0xFBAE, 0x7FED,
+    0xFB49, 0x7FE9,
+    0xFAE5, 0x7FE5,
+    0xFA80, 0x7FE1,
+    0xFA1C, 0x7FDD,
+    0xF9B8, 0x7FD8,
+    0xF953, 0x7FD3,
+    0xF8EF, 0x7FCE,
+    0xF88A, 0x7FC8,
+    0xF826, 0x7FC2,
+    0xF7C2, 0x7FBC,
+    0xF75D, 0x7FB5,
+    0xF6F9, 0x7FAE,
+    0xF695, 0x7FA7,
+    0xF631, 0x7F9F,
+    0xF5CC, 0x7F97,
+    0xF568, 0x7F8F,
+    0xF504, 0x7F87,
+    0xF4A0, 0x7F7E,
+    0xF43C, 0x7F75,
+    0xF3D8, 0x7F6B,
+    0xF374, 0x7F62,
+    0xF310, 0x7F58,
+    0xF2AC, 0x7F4D,
+    0xF248, 0x7F43,
+    0xF1E4, 0x7F38,
+    0xF180, 0x7F2D,
+    0xF11C, 0x7F21,
+    0xF0B8, 0x7F15,
+    0xF054, 0x7F09,
+    0xEFF1, 0x7EFD,
+    0xEF8D, 0x7EF0,
+    0xEF29, 0x7EE3,
+    0xEEC6, 0x7ED5,
+    0xEE62, 0x7EC8,
+    0xEDFE, 0x7EBA,
+    0xED9B, 0x7EAB,
+    0xED37, 0x7E9D,
+    0xECD4, 0x7E8E,
+    0xEC71, 0x7E7F,
+    0xEC0D, 0x7E6F,
+    0xEBAA, 0x7E5F,
+    0xEB47, 0x7E4F,
+    0xEAE4, 0x7E3F,
+    0xEA80, 0x7E2E,
+    0xEA1D, 0x7E1D,
+    0xE9BA, 0x7E0C,
+    0xE957, 0x7DFA,
+    0xE8F5, 0x7DE8,
+    0xE892, 0x7DD6,
+    0xE82F, 0x7DC3,
+    0xE7CC, 0x7DB0,
+    0xE769, 0x7D9D,
+    0xE707, 0x7D8A,
+    0xE6A4, 0x7D76,
+    0xE642, 0x7D62,
+    0xE5DF, 0x7D4E,
+    0xE57D, 0x7D39,
+    0xE51B, 0x7D24,
+    0xE4B8, 0x7D0F,
+    0xE456, 0x7CF9,
+    0xE3F4, 0x7CE3,
+    0xE392, 0x7CCD,
+    0xE330, 0x7CB7,
+    0xE2CE, 0x7CA0,
+    0xE26C, 0x7C89,
+    0xE20A, 0x7C71,
+    0xE1A9, 0x7C5A,
+    0xE147, 0x7C42,
+    0xE0E6, 0x7C29,
+    0xE084, 0x7C11,
+    0xE023, 0x7BF8,
+    0xDFC1, 0x7BDF,
+    0xDF60, 0x7BC5,
+    0xDEFF, 0x7BAC,
+    0xDE9E, 0x7B92,
+    0xDE3D, 0x7B77,
+    0xDDDC, 0x7B5D,
+    0xDD7B, 0x7B42,
+    0xDD1A, 0x7B26,
+    0xDCBA, 0x7B0B,
+    0xDC59, 0x7AEF,
+    0xDBF8, 0x7AD3,
+    0xDB98, 0x7AB6,
+    0xDB38, 0x7A9A,
+    0xDAD7, 0x7A7D,
+    0xDA77, 0x7A5F,
+    0xDA17, 0x7A42,
+    0xD9B7, 0x7A24,
+    0xD957, 0x7A05,
+    0xD8F8, 0x79E7,
+    0xD898, 0x79C8,
+    0xD838, 0x79A9,
+    0xD7D9, 0x798A,
+    0xD779, 0x796A,
+    0xD71A, 0x794A,
+    0xD6BB, 0x792A,
+    0xD65C, 0x7909,
+    0xD5FD, 0x78E8,
+    0xD59E, 0x78C7,
+    0xD53F, 0x78A6,
+    0xD4E0, 0x7884,
+    0xD482, 0x7862,
+    0xD423, 0x7840,
+    0xD3C5, 0x781D,
+    0xD367, 0x77FA,
+    0xD308, 0x77D7,
+    0xD2AA, 0x77B4,
+    0xD24C, 0x7790,
+    0xD1EE, 0x776C,
+    0xD191, 0x7747,
+    0xD133, 0x7723,
+    0xD0D6, 0x76FE,
+    0xD078, 0x76D9,
+    0xD01B, 0x76B3,
+    0xCFBE, 0x768E,
+    0xCF61, 0x7668,
+    0xCF04, 0x7641,
+    0xCEA7, 0x761B,
+    0xCE4A, 0x75F4,
+    0xCDEE, 0x75CC,
+    0xCD91, 0x75A5,
+    0xCD35, 0x757D,
+    0xCCD9, 0x7555,
+    0xCC7D, 0x752D,
+    0xCC21, 0x7504,
+    0xCBC5, 0x74DB,
+    0xCB69, 0x74B2,
+    0xCB0D, 0x7489,
+    0xCAB2, 0x745F,
+    0xCA57, 0x7435,
+    0xC9FB, 0x740B,
+    0xC9A0, 0x73E0,
+    0xC945, 0x73B5,
+    0xC8EB, 0x738A,
+    0xC890, 0x735F,
+    0xC835, 0x7333,
+    0xC7DB, 0x7307,
+    0xC781, 0x72DB,
+    0xC727, 0x72AF,
+    0xC6CD, 0x7282,
+    0xC673, 0x7255,
+    0xC619, 0x7227,
+    0xC5BF, 0x71FA,
+    0xC566, 0x71CC,
+    0xC50D, 0x719E,
+    0xC4B3, 0x716F,
+    0xC45A, 0x7141,
+    0xC402, 0x7112,
+    0xC3A9, 0x70E2,
+    0xC350, 0x70B3,
+    0xC2F8, 0x7083,
+    0xC29F, 0x7053,
+    0xC247, 0x7023,
+    0xC1EF, 0x6FF2,
+    0xC197, 0x6FC1,
+    0xC140, 0x6F90,
+    0xC0E8, 0x6F5F,
+    0xC091, 0x6F2D,
+    0xC03A, 0x6EFB,
+    0xBFE2, 0x6EC9,
+    0xBF8C, 0x6E96,
+    0xBF35, 0x6E63,
+    0xBEDE, 0x6E30,
+    0xBE88, 0x6DFD,
+    0xBE31, 0x6DCA,
+    0xBDDB, 0x6D96,
+    0xBD85, 0x6D62,
+    0xBD2F, 0x6D2D,
+    0xBCDA, 0x6CF9,
+    0xBC84, 0x6CC4,
+    0xBC2F, 0x6C8F,
+    0xBBDA, 0x6C59,
+    0xBB85, 0x6C24,
+    0xBB30, 0x6BEE,
+    0xBADB, 0x6BB8,
+    0xBA87, 0x6B81,
+    0xBA32, 0x6B4A,
+    0xB9DE, 0x6B13,
+    0xB98A, 0x6ADC,
+    0xB936, 0x6AA5,
+    0xB8E3, 0x6A6D,
+    0xB88F, 0x6A35,
+    0xB83C, 0x69FD,
+    0xB7E9, 0x69C4,
+    0xB796, 0x698C,
+    0xB743, 0x6953,
+    0xB6F0, 0x6919,
+    0xB69E, 0x68E0,
+    0xB64B, 0x68A6,
+    0xB5F9, 0x686C,
+    0xB5A7, 0x6832,
+    0xB556, 0x67F7,
+    0xB504, 0x67BD,
+    0xB4B3, 0x6782,
+    0xB461, 0x6746,
+    0xB410, 0x670B,
+    0xB3C0, 0x66CF,
+    0xB36F, 0x6693,
+    0xB31E, 0x6657,
+    0xB2CE, 0x661A,
+    0xB27E, 0x65DD,
+    0xB22E, 0x65A0,
+    0xB1DE, 0x6563,
+    0xB18F, 0x6526,
+    0xB140, 0x64E8,
+    0xB0F0, 0x64AA,
+    0xB0A1, 0x646C,
+    0xB053, 0x642D,
+    0xB004, 0x63EF,
+    0xAFB6, 0x63B0,
+    0xAF68, 0x6371,
+    0xAF1A, 0x6331,
+    0xAECC, 0x62F2,
+    0xAE7E, 0x62B2,
+    0xAE31, 0x6271,
+    0xADE3, 0x6231,
+    0xAD96, 0x61F1,
+    0xAD4A, 0x61B0,
+    0xACFD, 0x616F,
+    0xACB1, 0x612D,
+    0xAC64, 0x60EC,
+    0xAC18, 0x60AA,
+    0xABCC, 0x6068,
+    0xAB81, 0x6026,
+    0xAB35, 0x5FE3,
+    0xAAEA, 0x5FA0,
+    0xAA9F, 0x5F5E,
+    0xAA54, 0x5F1A,
+    0xAA0A, 0x5ED7,
+    0xA9BF, 0x5E93,
+    0xA975, 0x5E50,
+    0xA92B, 0x5E0B,
+    0xA8E2, 0x5DC7,
+    0xA898, 0x5D83,
+    0xA84F, 0x5D3E,
+    0xA806, 0x5CF9,
+    0xA7BD, 0x5CB4,
+    0xA774, 0x5C6E,
+    0xA72B, 0x5C29,
+    0xA6E3, 0x5BE3,
+    0xA69B, 0x5B9D,
+    0xA653, 0x5B56,
+    0xA60C, 0x5B10,
+    0xA5C4, 0x5AC9,
+    0xA57D, 0x5A82,
+    0xA536, 0x5A3B,
+    0xA4EF, 0x59F3,
+    0xA4A9, 0x59AC,
+    0xA462, 0x5964,
+    0xA41C, 0x591C,
+    0xA3D6, 0x58D4,
+    0xA391, 0x588B,
+    0xA34B, 0x5842,
+    0xA306, 0x57F9,
+    0xA2C1, 0x57B0,
+    0xA27C, 0x5767,
+    0xA238, 0x571D,
+    0xA1F4, 0x56D4,
+    0xA1AF, 0x568A,
+    0xA16C, 0x5640,
+    0xA128, 0x55F5,
+    0xA0E5, 0x55AB,
+    0xA0A1, 0x5560,
+    0xA05F, 0x5515,
+    0xA01C, 0x54CA,
+    0x9FD9, 0x547E,
+    0x9F97, 0x5433,
+    0x9F55, 0x53E7,
+    0x9F13, 0x539B,
+    0x9ED2, 0x534E,
+    0x9E90, 0x5302,
+    0x9E4F, 0x52B5,
+    0x9E0E, 0x5269,
+    0x9DCE, 0x521C,
+    0x9D8E, 0x51CE,
+    0x9D4D, 0x5181,
+    0x9D0D, 0x5133,
+    0x9CCE, 0x50E5,
+    0x9C8E, 0x5097,
+    0x9C4F, 0x5049,
+    0x9C10, 0x4FFB,
+    0x9BD2, 0x4FAC,
+    0x9B93, 0x4F5E,
+    0x9B55, 0x4F0F,
+    0x9B17, 0x4EBF,
+    0x9AD9, 0x4E70,
+    0x9A9C, 0x4E21,
+    0x9A5F, 0x4DD1,
+    0x9A22, 0x4D81,
+    0x99E5, 0x4D31,
+    0x99A8, 0x4CE1,
+    0x996C, 0x4C90,
+    0x9930, 0x4C3F,
+    0x98F4, 0x4BEF,
+    0x98B9, 0x4B9E,
+    0x987D, 0x4B4C,
+    0x9842, 0x4AFB,
+    0x9808, 0x4AA9,
+    0x97CD, 0x4A58,
+    0x9793, 0x4A06,
+    0x9759, 0x49B4,
+    0x971F, 0x4961,
+    0x96E6, 0x490F,
+    0x96AC, 0x48BC,
+    0x9673, 0x4869,
+    0x963B, 0x4816,
+    0x9602, 0x47C3,
+    0x95CA, 0x4770,
+    0x9592, 0x471C,
+    0x955A, 0x46C9,
+    0x9523, 0x4675,
+    0x94EC, 0x4621,
+    0x94B5, 0x45CD,
+    0x947E, 0x4578,
+    0x9447, 0x4524,
+    0x9411, 0x44CF,
+    0x93DB, 0x447A,
+    0x93A6, 0x4425,
+    0x9370, 0x43D0,
+    0x933B, 0x437B,
+    0x9306, 0x4325,
+    0x92D2, 0x42D0,
+    0x929D, 0x427A,
+    0x9269, 0x4224,
+    0x9235, 0x41CE,
+    0x9202, 0x4177,
+    0x91CF, 0x4121,
+    0x919C, 0x40CA,
+    0x9169, 0x4073,
+    0x9136, 0x401D,
+    0x9104, 0x3FC5,
+    0x90D2, 0x3F6E,
+    0x90A0, 0x3F17,
+    0x906F, 0x3EBF,
+    0x903E, 0x3E68,
+    0x900D, 0x3E10,
+    0x8FDC, 0x3DB8,
+    0x8FAC, 0x3D60,
+    0x8F7C, 0x3D07,
+    0x8F4C, 0x3CAF,
+    0x8F1D, 0x3C56,
+    0x8EED, 0x3BFD,
+    0x8EBE, 0x3BA5,
+    0x8E90, 0x3B4C,
+    0x8E61, 0x3AF2,
+    0x8E33, 0x3A99,
+    0x8E05, 0x3A40,
+    0x8DD8, 0x39E6,
+    0x8DAA, 0x398C,
+    0x8D7D, 0x3932,
+    0x8D50, 0x38D8,
+    0x8D24, 0x387E,
+    0x8CF8, 0x3824,
+    0x8CCC, 0x37CA,
+    0x8CA0, 0x376F,
+    0x8C75, 0x3714,
+    0x8C4A, 0x36BA,
+    0x8C1F, 0x365F,
+    0x8BF4, 0x3604,
+    0x8BCA, 0x35A8,
+    0x8BA0, 0x354D,
+    0x8B76, 0x34F2,
+    0x8B4D, 0x3496,
+    0x8B24, 0x343A,
+    0x8AFB, 0x33DE,
+    0x8AD2, 0x3382,
+    0x8AAA, 0x3326,
+    0x8A82, 0x32CA,
+    0x8A5A, 0x326E,
+    0x8A33, 0x3211,
+    0x8A0B, 0x31B5,
+    0x89E4, 0x3158,
+    0x89BE, 0x30FB,
+    0x8997, 0x309E,
+    0x8971, 0x3041,
+    0x894C, 0x2FE4,
+    0x8926, 0x2F87,
+    0x8901, 0x2F29,
+    0x88DC, 0x2ECC,
+    0x88B8, 0x2E6E,
+    0x8893, 0x2E11,
+    0x886F, 0x2DB3,
+    0x884B, 0x2D55,
+    0x8828, 0x2CF7,
+    0x8805, 0x2C98,
+    0x87E2, 0x2C3A,
+    0x87BF, 0x2BDC,
+    0x879D, 0x2B7D,
+    0x877B, 0x2B1F,
+    0x8759, 0x2AC0,
+    0x8738, 0x2A61,
+    0x8717, 0x2A02,
+    0x86F6, 0x29A3,
+    0x86D5, 0x2944,
+    0x86B5, 0x28E5,
+    0x8695, 0x2886,
+    0x8675, 0x2826,
+    0x8656, 0x27C7,
+    0x8637, 0x2767,
+    0x8618, 0x2707,
+    0x85FA, 0x26A8,
+    0x85DB, 0x2648,
+    0x85BD, 0x25E8,
+    0x85A0, 0x2588,
+    0x8582, 0x2528,
+    0x8565, 0x24C7,
+    0x8549, 0x2467,
+    0x852C, 0x2407,
+    0x8510, 0x23A6,
+    0x84F4, 0x2345,
+    0x84D9, 0x22E5,
+    0x84BD, 0x2284,
+    0x84A2, 0x2223,
+    0x8488, 0x21C2,
+    0x846D, 0x2161,
+    0x8453, 0x2100,
+    0x843A, 0x209F,
+    0x8420, 0x203E,
+    0x8407, 0x1FDC,
+    0x83EE, 0x1F7B,
+    0x83D6, 0x1F19,
+    0x83BD, 0x1EB8,
+    0x83A5, 0x1E56,
+    0x838E, 0x1DF5,
+    0x8376, 0x1D93,
+    0x835F, 0x1D31,
+    0x8348, 0x1CCF,
+    0x8332, 0x1C6D,
+    0x831C, 0x1C0B,
+    0x8306, 0x1BA9,
+    0x82F0, 0x1B47,
+    0x82DB, 0x1AE4,
+    0x82C6, 0x1A82,
+    0x82B1, 0x1A20,
+    0x829D, 0x19BD,
+    0x8289, 0x195B,
+    0x8275, 0x18F8,
+    0x8262, 0x1896,
+    0x824F, 0x1833,
+    0x823C, 0x17D0,
+    0x8229, 0x176D,
+    0x8217, 0x170A,
+    0x8205, 0x16A8,
+    0x81F3, 0x1645,
+    0x81E2, 0x15E2,
+    0x81D1, 0x157F,
+    0x81C0, 0x151B,
+    0x81B0, 0x14B8,
+    0x81A0, 0x1455,
+    0x8190, 0x13F2,
+    0x8180, 0x138E,
+    0x8171, 0x132B,
+    0x8162, 0x12C8,
+    0x8154, 0x1264,
+    0x8145, 0x1201,
+    0x8137, 0x119D,
+    0x812A, 0x1139,
+    0x811C, 0x10D6,
+    0x810F, 0x1072,
+    0x8102, 0x100E,
+    0x80F6, 0x0FAB,
+    0x80EA, 0x0F47,
+    0x80DE, 0x0EE3,
+    0x80D2, 0x0E7F,
+    0x80C7, 0x0E1B,
+    0x80BC, 0x0DB7,
+    0x80B2, 0x0D53,
+    0x80A7, 0x0CEF,
+    0x809D, 0x0C8B,
+    0x8094, 0x0C27,
+    0x808A, 0x0BC3,
+    0x8081, 0x0B5F,
+    0x8078, 0x0AFB,
+    0x8070, 0x0A97,
+    0x8068, 0x0A33,
+    0x8060, 0x09CE,
+    0x8058, 0x096A,
+    0x8051, 0x0906,
+    0x804A, 0x08A2,
+    0x8043, 0x083D,
+    0x803D, 0x07D9,
+    0x8037, 0x0775,
+    0x8031, 0x0710,
+    0x802C, 0x06AC,
+    0x8027, 0x0647,
+    0x8022, 0x05E3,
+    0x801E, 0x057F,
+    0x801A, 0x051A,
+    0x8016, 0x04B6,
+    0x8012, 0x0451,
+    0x800F, 0x03ED,
+    0x800C, 0x0388,
+    0x8009, 0x0324,
+    0x8007, 0x02BF,
+    0x8005, 0x025B,
+    0x8003, 0x01F6,
+    0x8002, 0x0192,
+    0x8001, 0x012D,
+    0x8000, 0x00C9,
+    0x8000, 0x0064,
+    0x8000, 0x0000,
+    0x8000, 0xFF9B,
+    0x8000, 0xFF36,
+    0x8001, 0xFED2,
+    0x8002, 0xFE6D,
+    0x8003, 0xFE09,
+    0x8005, 0xFDA4,
+    0x8007, 0xFD40,
+    0x8009, 0xFCDB,
+    0x800C, 0xFC77,
+    0x800F, 0xFC12,
+    0x8012, 0xFBAE,
+    0x8016, 0xFB49,
+    0x801A, 0xFAE5,
+    0x801E, 0xFA80,
+    0x8022, 0xFA1C,
+    0x8027, 0xF9B8,
+    0x802C, 0xF953,
+    0x8031, 0xF8EF,
+    0x8037, 0xF88A,
+    0x803D, 0xF826,
+    0x8043, 0xF7C2,
+    0x804A, 0xF75D,
+    0x8051, 0xF6F9,
+    0x8058, 0xF695,
+    0x8060, 0xF631,
+    0x8068, 0xF5CC,
+    0x8070, 0xF568,
+    0x8078, 0xF504,
+    0x8081, 0xF4A0,
+    0x808A, 0xF43C,
+    0x8094, 0xF3D8,
+    0x809D, 0xF374,
+    0x80A7, 0xF310,
+    0x80B2, 0xF2AC,
+    0x80BC, 0xF248,
+    0x80C7, 0xF1E4,
+    0x80D2, 0xF180,
+    0x80DE, 0xF11C,
+    0x80EA, 0xF0B8,
+    0x80F6, 0xF054,
+    0x8102, 0xEFF1,
+    0x810F, 0xEF8D,
+    0x811C, 0xEF29,
+    0x812A, 0xEEC6,
+    0x8137, 0xEE62,
+    0x8145, 0xEDFE,
+    0x8154, 0xED9B,
+    0x8162, 0xED37,
+    0x8171, 0xECD4,
+    0x8180, 0xEC71,
+    0x8190, 0xEC0D,
+    0x81A0, 0xEBAA,
+    0x81B0, 0xEB47,
+    0x81C0, 0xEAE4,
+    0x81D1, 0xEA80,
+    0x81E2, 0xEA1D,
+    0x81F3, 0xE9BA,
+    0x8205, 0xE957,
+    0x8217, 0xE8F5,
+    0x8229, 0xE892,
+    0x823C, 0xE82F,
+    0x824F, 0xE7CC,
+    0x8262, 0xE769,
+    0x8275, 0xE707,
+    0x8289, 0xE6A4,
+    0x829D, 0xE642,
+    0x82B1, 0xE5DF,
+    0x82C6, 0xE57D,
+    0x82DB, 0xE51B,
+    0x82F0, 0xE4B8,
+    0x8306, 0xE456,
+    0x831C, 0xE3F4,
+    0x8332, 0xE392,
+    0x8348, 0xE330,
+    0x835F, 0xE2CE,
+    0x8376, 0xE26C,
+    0x838E, 0xE20A,
+    0x83A5, 0xE1A9,
+    0x83BD, 0xE147,
+    0x83D6, 0xE0E6,
+    0x83EE, 0xE084,
+    0x8407, 0xE023,
+    0x8420, 0xDFC1,
+    0x843A, 0xDF60,
+    0x8453, 0xDEFF,
+    0x846D, 0xDE9E,
+    0x8488, 0xDE3D,
+    0x84A2, 0xDDDC,
+    0x84BD, 0xDD7B,
+    0x84D9, 0xDD1A,
+    0x84F4, 0xDCBA,
+    0x8510, 0xDC59,
+    0x852C, 0xDBF8,
+    0x8549, 0xDB98,
+    0x8565, 0xDB38,
+    0x8582, 0xDAD7,
+    0x85A0, 0xDA77,
+    0x85BD, 0xDA17,
+    0x85DB, 0xD9B7,
+    0x85FA, 0xD957,
+    0x8618, 0xD8F8,
+    0x8637, 0xD898,
+    0x8656, 0xD838,
+    0x8675, 0xD7D9,
+    0x8695, 0xD779,
+    0x86B5, 0xD71A,
+    0x86D5, 0xD6BB,
+    0x86F6, 0xD65C,
+    0x8717, 0xD5FD,
+    0x8738, 0xD59E,
+    0x8759, 0xD53F,
+    0x877B, 0xD4E0,
+    0x879D, 0xD482,
+    0x87BF, 0xD423,
+    0x87E2, 0xD3C5,
+    0x8805, 0xD367,
+    0x8828, 0xD308,
+    0x884B, 0xD2AA,
+    0x886F, 0xD24C,
+    0x8893, 0xD1EE,
+    0x88B8, 0xD191,
+    0x88DC, 0xD133,
+    0x8901, 0xD0D6,
+    0x8926, 0xD078,
+    0x894C, 0xD01B,
+    0x8971, 0xCFBE,
+    0x8997, 0xCF61,
+    0x89BE, 0xCF04,
+    0x89E4, 0xCEA7,
+    0x8A0B, 0xCE4A,
+    0x8A33, 0xCDEE,
+    0x8A5A, 0xCD91,
+    0x8A82, 0xCD35,
+    0x8AAA, 0xCCD9,
+    0x8AD2, 0xCC7D,
+    0x8AFB, 0xCC21,
+    0x8B24, 0xCBC5,
+    0x8B4D, 0xCB69,
+    0x8B76, 0xCB0D,
+    0x8BA0, 0xCAB2,
+    0x8BCA, 0xCA57,
+    0x8BF4, 0xC9FB,
+    0x8C1F, 0xC9A0,
+    0x8C4A, 0xC945,
+    0x8C75, 0xC8EB,
+    0x8CA0, 0xC890,
+    0x8CCC, 0xC835,
+    0x8CF8, 0xC7DB,
+    0x8D24, 0xC781,
+    0x8D50, 0xC727,
+    0x8D7D, 0xC6CD,
+    0x8DAA, 0xC673,
+    0x8DD8, 0xC619,
+    0x8E05, 0xC5BF,
+    0x8E33, 0xC566,
+    0x8E61, 0xC50D,
+    0x8E90, 0xC4B3,
+    0x8EBE, 0xC45A,
+    0x8EED, 0xC402,
+    0x8F1D, 0xC3A9,
+    0x8F4C, 0xC350,
+    0x8F7C, 0xC2F8,
+    0x8FAC, 0xC29F,
+    0x8FDC, 0xC247,
+    0x900D, 0xC1EF,
+    0x903E, 0xC197,
+    0x906F, 0xC140,
+    0x90A0, 0xC0E8,
+    0x90D2, 0xC091,
+    0x9104, 0xC03A,
+    0x9136, 0xBFE2,
+    0x9169, 0xBF8C,
+    0x919C, 0xBF35,
+    0x91CF, 0xBEDE,
+    0x9202, 0xBE88,
+    0x9235, 0xBE31,
+    0x9269, 0xBDDB,
+    0x929D, 0xBD85,
+    0x92D2, 0xBD2F,
+    0x9306, 0xBCDA,
+    0x933B, 0xBC84,
+    0x9370, 0xBC2F,
+    0x93A6, 0xBBDA,
+    0x93DB, 0xBB85,
+    0x9411, 0xBB30,
+    0x9447, 0xBADB,
+    0x947E, 0xBA87,
+    0x94B5, 0xBA32,
+    0x94EC, 0xB9DE,
+    0x9523, 0xB98A,
+    0x955A, 0xB936,
+    0x9592, 0xB8E3,
+    0x95CA, 0xB88F,
+    0x9602, 0xB83C,
+    0x963B, 0xB7E9,
+    0x9673, 0xB796,
+    0x96AC, 0xB743,
+    0x96E6, 0xB6F0,
+    0x971F, 0xB69E,
+    0x9759, 0xB64B,
+    0x9793, 0xB5F9,
+    0x97CD, 0xB5A7,
+    0x9808, 0xB556,
+    0x9842, 0xB504,
+    0x987D, 0xB4B3,
+    0x98B9, 0xB461,
+    0x98F4, 0xB410,
+    0x9930, 0xB3C0,
+    0x996C, 0xB36F,
+    0x99A8, 0xB31E,
+    0x99E5, 0xB2CE,
+    0x9A22, 0xB27E,
+    0x9A5F, 0xB22E,
+    0x9A9C, 0xB1DE,
+    0x9AD9, 0xB18F,
+    0x9B17, 0xB140,
+    0x9B55, 0xB0F0,
+    0x9B93, 0xB0A1,
+    0x9BD2, 0xB053,
+    0x9C10, 0xB004,
+    0x9C4F, 0xAFB6,
+    0x9C8E, 0xAF68,
+    0x9CCE, 0xAF1A,
+    0x9D0D, 0xAECC,
+    0x9D4D, 0xAE7E,
+    0x9D8E, 0xAE31,
+    0x9DCE, 0xADE3,
+    0x9E0E, 0xAD96,
+    0x9E4F, 0xAD4A,
+    0x9E90, 0xACFD,
+    0x9ED2, 0xACB1,
+    0x9F13, 0xAC64,
+    0x9F55, 0xAC18,
+    0x9F97, 0xABCC,
+    0x9FD9, 0xAB81,
+    0xA01C, 0xAB35,
+    0xA05F, 0xAAEA,
+    0xA0A1, 0xAA9F,
+    0xA0E5, 0xAA54,
+    0xA128, 0xAA0A,
+    0xA16C, 0xA9BF,
+    0xA1AF, 0xA975,
+    0xA1F4, 0xA92B,
+    0xA238, 0xA8E2,
+    0xA27C, 0xA898,
+    0xA2C1, 0xA84F,
+    0xA306, 0xA806,
+    0xA34B, 0xA7BD,
+    0xA391, 0xA774,
+    0xA3D6, 0xA72B,
+    0xA41C, 0xA6E3,
+    0xA462, 0xA69B,
+    0xA4A9, 0xA653,
+    0xA4EF, 0xA60C,
+    0xA536, 0xA5C4,
+    0xA57D, 0xA57D,
+    0xA5C4, 0xA536,
+    0xA60C, 0xA4EF,
+    0xA653, 0xA4A9,
+    0xA69B, 0xA462,
+    0xA6E3, 0xA41C,
+    0xA72B, 0xA3D6,
+    0xA774, 0xA391,
+    0xA7BD, 0xA34B,
+    0xA806, 0xA306,
+    0xA84F, 0xA2C1,
+    0xA898, 0xA27C,
+    0xA8E2, 0xA238,
+    0xA92B, 0xA1F4,
+    0xA975, 0xA1AF,
+    0xA9BF, 0xA16C,
+    0xAA0A, 0xA128,
+    0xAA54, 0xA0E5,
+    0xAA9F, 0xA0A1,
+    0xAAEA, 0xA05F,
+    0xAB35, 0xA01C,
+    0xAB81, 0x9FD9,
+    0xABCC, 0x9F97,
+    0xAC18, 0x9F55,
+    0xAC64, 0x9F13,
+    0xACB1, 0x9ED2,
+    0xACFD, 0x9E90,
+    0xAD4A, 0x9E4F,
+    0xAD96, 0x9E0E,
+    0xADE3, 0x9DCE,
+    0xAE31, 0x9D8E,
+    0xAE7E, 0x9D4D,
+    0xAECC, 0x9D0D,
+    0xAF1A, 0x9CCE,
+    0xAF68, 0x9C8E,
+    0xAFB6, 0x9C4F,
+    0xB004, 0x9C10,
+    0xB053, 0x9BD2,
+    0xB0A1, 0x9B93,
+    0xB0F0, 0x9B55,
+    0xB140, 0x9B17,
+    0xB18F, 0x9AD9,
+    0xB1DE, 0x9A9C,
+    0xB22E, 0x9A5F,
+    0xB27E, 0x9A22,
+    0xB2CE, 0x99E5,
+    0xB31E, 0x99A8,
+    0xB36F, 0x996C,
+    0xB3C0, 0x9930,
+    0xB410, 0x98F4,
+    0xB461, 0x98B9,
+    0xB4B3, 0x987D,
+    0xB504, 0x9842,
+    0xB556, 0x9808,
+    0xB5A7, 0x97CD,
+    0xB5F9, 0x9793,
+    0xB64B, 0x9759,
+    0xB69E, 0x971F,
+    0xB6F0, 0x96E6,
+    0xB743, 0x96AC,
+    0xB796, 0x9673,
+    0xB7E9, 0x963B,
+    0xB83C, 0x9602,
+    0xB88F, 0x95CA,
+    0xB8E3, 0x9592,
+    0xB936, 0x955A,
+    0xB98A, 0x9523,
+    0xB9DE, 0x94EC,
+    0xBA32, 0x94B5,
+    0xBA87, 0x947E,
+    0xBADB, 0x9447,
+    0xBB30, 0x9411,
+    0xBB85, 0x93DB,
+    0xBBDA, 0x93A6,
+    0xBC2F, 0x9370,
+    0xBC84, 0x933B,
+    0xBCDA, 0x9306,
+    0xBD2F, 0x92D2,
+    0xBD85, 0x929D,
+    0xBDDB, 0x9269,
+    0xBE31, 0x9235,
+    0xBE88, 0x9202,
+    0xBEDE, 0x91CF,
+    0xBF35, 0x919C,
+    0xBF8C, 0x9169,
+    0xBFE2, 0x9136,
+    0xC03A, 0x9104,
+    0xC091, 0x90D2,
+    0xC0E8, 0x90A0,
+    0xC140, 0x906F,
+    0xC197, 0x903E,
+    0xC1EF, 0x900D,
+    0xC247, 0x8FDC,
+    0xC29F, 0x8FAC,
+    0xC2F8, 0x8F7C,
+    0xC350, 0x8F4C,
+    0xC3A9, 0x8F1D,
+    0xC402, 0x8EED,
+    0xC45A, 0x8EBE,
+    0xC4B3, 0x8E90,
+    0xC50D, 0x8E61,
+    0xC566, 0x8E33,
+    0xC5BF, 0x8E05,
+    0xC619, 0x8DD8,
+    0xC673, 0x8DAA,
+    0xC6CD, 0x8D7D,
+    0xC727, 0x8D50,
+    0xC781, 0x8D24,
+    0xC7DB, 0x8CF8,
+    0xC835, 0x8CCC,
+    0xC890, 0x8CA0,
+    0xC8EB, 0x8C75,
+    0xC945, 0x8C4A,
+    0xC9A0, 0x8C1F,
+    0xC9FB, 0x8BF4,
+    0xCA57, 0x8BCA,
+    0xCAB2, 0x8BA0,
+    0xCB0D, 0x8B76,
+    0xCB69, 0x8B4D,
+    0xCBC5, 0x8B24,
+    0xCC21, 0x8AFB,
+    0xCC7D, 0x8AD2,
+    0xCCD9, 0x8AAA,
+    0xCD35, 0x8A82,
+    0xCD91, 0x8A5A,
+    0xCDEE, 0x8A33,
+    0xCE4A, 0x8A0B,
+    0xCEA7, 0x89E4,
+    0xCF04, 0x89BE,
+    0xCF61, 0x8997,
+    0xCFBE, 0x8971,
+    0xD01B, 0x894C,
+    0xD078, 0x8926,
+    0xD0D6, 0x8901,
+    0xD133, 0x88DC,
+    0xD191, 0x88B8,
+    0xD1EE, 0x8893,
+    0xD24C, 0x886F,
+    0xD2AA, 0x884B,
+    0xD308, 0x8828,
+    0xD367, 0x8805,
+    0xD3C5, 0x87E2,
+    0xD423, 0x87BF,
+    0xD482, 0x879D,
+    0xD4E0, 0x877B,
+    0xD53F, 0x8759,
+    0xD59E, 0x8738,
+    0xD5FD, 0x8717,
+    0xD65C, 0x86F6,
+    0xD6BB, 0x86D5,
+    0xD71A, 0x86B5,
+    0xD779, 0x8695,
+    0xD7D9, 0x8675,
+    0xD838, 0x8656,
+    0xD898, 0x8637,
+    0xD8F8, 0x8618,
+    0xD957, 0x85FA,
+    0xD9B7, 0x85DB,
+    0xDA17, 0x85BD,
+    0xDA77, 0x85A0,
+    0xDAD7, 0x8582,
+    0xDB38, 0x8565,
+    0xDB98, 0x8549,
+    0xDBF8, 0x852C,
+    0xDC59, 0x8510,
+    0xDCBA, 0x84F4,
+    0xDD1A, 0x84D9,
+    0xDD7B, 0x84BD,
+    0xDDDC, 0x84A2,
+    0xDE3D, 0x8488,
+    0xDE9E, 0x846D,
+    0xDEFF, 0x8453,
+    0xDF60, 0x843A,
+    0xDFC1, 0x8420,
+    0xE023, 0x8407,
+    0xE084, 0x83EE,
+    0xE0E6, 0x83D6,
+    0xE147, 0x83BD,
+    0xE1A9, 0x83A5,
+    0xE20A, 0x838E,
+    0xE26C, 0x8376,
+    0xE2CE, 0x835F,
+    0xE330, 0x8348,
+    0xE392, 0x8332,
+    0xE3F4, 0x831C,
+    0xE456, 0x8306,
+    0xE4B8, 0x82F0,
+    0xE51B, 0x82DB,
+    0xE57D, 0x82C6,
+    0xE5DF, 0x82B1,
+    0xE642, 0x829D,
+    0xE6A4, 0x8289,
+    0xE707, 0x8275,
+    0xE769, 0x8262,
+    0xE7CC, 0x824F,
+    0xE82F, 0x823C,
+    0xE892, 0x8229,
+    0xE8F5, 0x8217,
+    0xE957, 0x8205,
+    0xE9BA, 0x81F3,
+    0xEA1D, 0x81E2,
+    0xEA80, 0x81D1,
+    0xEAE4, 0x81C0,
+    0xEB47, 0x81B0,
+    0xEBAA, 0x81A0,
+    0xEC0D, 0x8190,
+    0xEC71, 0x8180,
+    0xECD4, 0x8171,
+    0xED37, 0x8162,
+    0xED9B, 0x8154,
+    0xEDFE, 0x8145,
+    0xEE62, 0x8137,
+    0xEEC6, 0x812A,
+    0xEF29, 0x811C,
+    0xEF8D, 0x810F,
+    0xEFF1, 0x8102,
+    0xF054, 0x80F6,
+    0xF0B8, 0x80EA,
+    0xF11C, 0x80DE,
+    0xF180, 0x80D2,
+    0xF1E4, 0x80C7,
+    0xF248, 0x80BC,
+    0xF2AC, 0x80B2,
+    0xF310, 0x80A7,
+    0xF374, 0x809D,
+    0xF3D8, 0x8094,
+    0xF43C, 0x808A,
+    0xF4A0, 0x8081,
+    0xF504, 0x8078,
+    0xF568, 0x8070,
+    0xF5CC, 0x8068,
+    0xF631, 0x8060,
+    0xF695, 0x8058,
+    0xF6F9, 0x8051,
+    0xF75D, 0x804A,
+    0xF7C2, 0x8043,
+    0xF826, 0x803D,
+    0xF88A, 0x8037,
+    0xF8EF, 0x8031,
+    0xF953, 0x802C,
+    0xF9B8, 0x8027,
+    0xFA1C, 0x8022,
+    0xFA80, 0x801E,
+    0xFAE5, 0x801A,
+    0xFB49, 0x8016,
+    0xFBAE, 0x8012,
+    0xFC12, 0x800F,
+    0xFC77, 0x800C,
+    0xFCDB, 0x8009,
+    0xFD40, 0x8007,
+    0xFDA4, 0x8005,
+    0xFE09, 0x8003,
+    0xFE6D, 0x8002,
+    0xFED2, 0x8001,
+    0xFF36, 0x8000,
+    0xFF9B, 0x8000
+};
+
+/**    
+* \par   
+* Example code for q15 Twiddle factors Generation::    
+* \par    
+* <pre>for(i = 0; i< 3N/4; i++)    
+* {    
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
+* } </pre>    
+* \par    
+* where N = 4096	and PI = 3.14159265358979    
+* \par    
+* Cos and Sin values are interleaved fashion    
+* \par    
+* Convert Floating point to q15(Fixed point 1.15):    
+*	round(twiddleCoefq15(i) * pow(2, 15))    
+*    
+*/
+const q15_t twiddleCoef_4096_q15[6144] = 
+{
+    0x7FFF, 0x0000,
+    0x7FFF, 0x0032,
+    0x7FFF, 0x0064,
+    0x7FFF, 0x0096,
+    0x7FFF, 0x00C9,
+    0x7FFF, 0x00FB,
+    0x7FFE, 0x012D,
+    0x7FFE, 0x015F,
+    0x7FFD, 0x0192,
+    0x7FFC, 0x01C4,
+    0x7FFC, 0x01F6,
+    0x7FFB, 0x0228,
+    0x7FFA, 0x025B,
+    0x7FF9, 0x028D,
+    0x7FF8, 0x02BF,
+    0x7FF7, 0x02F1,
+    0x7FF6, 0x0324,
+    0x7FF4, 0x0356,
+    0x7FF3, 0x0388,
+    0x7FF2, 0x03BA,
+    0x7FF0, 0x03ED,
+    0x7FEE, 0x041F,
+    0x7FED, 0x0451,
+    0x7FEB, 0x0483,
+    0x7FE9, 0x04B6,
+    0x7FE7, 0x04E8,
+    0x7FE5, 0x051A,
+    0x7FE3, 0x054C,
+    0x7FE1, 0x057F,
+    0x7FDF, 0x05B1,
+    0x7FDD, 0x05E3,
+    0x7FDA, 0x0615,
+    0x7FD8, 0x0647,
+    0x7FD6, 0x067A,
+    0x7FD3, 0x06AC,
+    0x7FD0, 0x06DE,
+    0x7FCE, 0x0710,
+    0x7FCB, 0x0742,
+    0x7FC8, 0x0775,
+    0x7FC5, 0x07A7,
+    0x7FC2, 0x07D9,
+    0x7FBF, 0x080B,
+    0x7FBC, 0x083D,
+    0x7FB8, 0x086F,
+    0x7FB5, 0x08A2,
+    0x7FB1, 0x08D4,
+    0x7FAE, 0x0906,
+    0x7FAA, 0x0938,
+    0x7FA7, 0x096A,
+    0x7FA3, 0x099C,
+    0x7F9F, 0x09CE,
+    0x7F9B, 0x0A00,
+    0x7F97, 0x0A33,
+    0x7F93, 0x0A65,
+    0x7F8F, 0x0A97,
+    0x7F8B, 0x0AC9,
+    0x7F87, 0x0AFB,
+    0x7F82, 0x0B2D,
+    0x7F7E, 0x0B5F,
+    0x7F79, 0x0B91,
+    0x7F75, 0x0BC3,
+    0x7F70, 0x0BF5,
+    0x7F6B, 0x0C27,
+    0x7F67, 0x0C59,
+    0x7F62, 0x0C8B,
+    0x7F5D, 0x0CBD,
+    0x7F58, 0x0CEF,
+    0x7F53, 0x0D21,
+    0x7F4D, 0x0D53,
+    0x7F48, 0x0D85,
+    0x7F43, 0x0DB7,
+    0x7F3D, 0x0DE9,
+    0x7F38, 0x0E1B,
+    0x7F32, 0x0E4D,
+    0x7F2D, 0x0E7F,
+    0x7F27, 0x0EB1,
+    0x7F21, 0x0EE3,
+    0x7F1B, 0x0F15,
+    0x7F15, 0x0F47,
+    0x7F0F, 0x0F79,
+    0x7F09, 0x0FAB,
+    0x7F03, 0x0FDD,
+    0x7EFD, 0x100E,
+    0x7EF6, 0x1040,
+    0x7EF0, 0x1072,
+    0x7EE9, 0x10A4,
+    0x7EE3, 0x10D6,
+    0x7EDC, 0x1108,
+    0x7ED5, 0x1139,
+    0x7ECF, 0x116B,
+    0x7EC8, 0x119D,
+    0x7EC1, 0x11CF,
+    0x7EBA, 0x1201,
+    0x7EB3, 0x1232,
+    0x7EAB, 0x1264,
+    0x7EA4, 0x1296,
+    0x7E9D, 0x12C8,
+    0x7E95, 0x12F9,
+    0x7E8E, 0x132B,
+    0x7E86, 0x135D,
+    0x7E7F, 0x138E,
+    0x7E77, 0x13C0,
+    0x7E6F, 0x13F2,
+    0x7E67, 0x1423,
+    0x7E5F, 0x1455,
+    0x7E57, 0x1487,
+    0x7E4F, 0x14B8,
+    0x7E47, 0x14EA,
+    0x7E3F, 0x151B,
+    0x7E37, 0x154D,
+    0x7E2E, 0x157F,
+    0x7E26, 0x15B0,
+    0x7E1D, 0x15E2,
+    0x7E14, 0x1613,
+    0x7E0C, 0x1645,
+    0x7E03, 0x1676,
+    0x7DFA, 0x16A8,
+    0x7DF1, 0x16D9,
+    0x7DE8, 0x170A,
+    0x7DDF, 0x173C,
+    0x7DD6, 0x176D,
+    0x7DCD, 0x179F,
+    0x7DC3, 0x17D0,
+    0x7DBA, 0x1802,
+    0x7DB0, 0x1833,
+    0x7DA7, 0x1864,
+    0x7D9D, 0x1896,
+    0x7D94, 0x18C7,
+    0x7D8A, 0x18F8,
+    0x7D80, 0x192A,
+    0x7D76, 0x195B,
+    0x7D6C, 0x198C,
+    0x7D62, 0x19BD,
+    0x7D58, 0x19EF,
+    0x7D4E, 0x1A20,
+    0x7D43, 0x1A51,
+    0x7D39, 0x1A82,
+    0x7D2F, 0x1AB3,
+    0x7D24, 0x1AE4,
+    0x7D19, 0x1B16,
+    0x7D0F, 0x1B47,
+    0x7D04, 0x1B78,
+    0x7CF9, 0x1BA9,
+    0x7CEE, 0x1BDA,
+    0x7CE3, 0x1C0B,
+    0x7CD8, 0x1C3C,
+    0x7CCD, 0x1C6D,
+    0x7CC2, 0x1C9E,
+    0x7CB7, 0x1CCF,
+    0x7CAB, 0x1D00,
+    0x7CA0, 0x1D31,
+    0x7C94, 0x1D62,
+    0x7C89, 0x1D93,
+    0x7C7D, 0x1DC4,
+    0x7C71, 0x1DF5,
+    0x7C66, 0x1E25,
+    0x7C5A, 0x1E56,
+    0x7C4E, 0x1E87,
+    0x7C42, 0x1EB8,
+    0x7C36, 0x1EE9,
+    0x7C29, 0x1F19,
+    0x7C1D, 0x1F4A,
+    0x7C11, 0x1F7B,
+    0x7C05, 0x1FAC,
+    0x7BF8, 0x1FDC,
+    0x7BEB, 0x200D,
+    0x7BDF, 0x203E,
+    0x7BD2, 0x206E,
+    0x7BC5, 0x209F,
+    0x7BB9, 0x20D0,
+    0x7BAC, 0x2100,
+    0x7B9F, 0x2131,
+    0x7B92, 0x2161,
+    0x7B84, 0x2192,
+    0x7B77, 0x21C2,
+    0x7B6A, 0x21F3,
+    0x7B5D, 0x2223,
+    0x7B4F, 0x2254,
+    0x7B42, 0x2284,
+    0x7B34, 0x22B4,
+    0x7B26, 0x22E5,
+    0x7B19, 0x2315,
+    0x7B0B, 0x2345,
+    0x7AFD, 0x2376,
+    0x7AEF, 0x23A6,
+    0x7AE1, 0x23D6,
+    0x7AD3, 0x2407,
+    0x7AC5, 0x2437,
+    0x7AB6, 0x2467,
+    0x7AA8, 0x2497,
+    0x7A9A, 0x24C7,
+    0x7A8B, 0x24F7,
+    0x7A7D, 0x2528,
+    0x7A6E, 0x2558,
+    0x7A5F, 0x2588,
+    0x7A50, 0x25B8,
+    0x7A42, 0x25E8,
+    0x7A33, 0x2618,
+    0x7A24, 0x2648,
+    0x7A15, 0x2678,
+    0x7A05, 0x26A8,
+    0x79F6, 0x26D8,
+    0x79E7, 0x2707,
+    0x79D8, 0x2737,
+    0x79C8, 0x2767,
+    0x79B9, 0x2797,
+    0x79A9, 0x27C7,
+    0x7999, 0x27F6,
+    0x798A, 0x2826,
+    0x797A, 0x2856,
+    0x796A, 0x2886,
+    0x795A, 0x28B5,
+    0x794A, 0x28E5,
+    0x793A, 0x2915,
+    0x792A, 0x2944,
+    0x7919, 0x2974,
+    0x7909, 0x29A3,
+    0x78F9, 0x29D3,
+    0x78E8, 0x2A02,
+    0x78D8, 0x2A32,
+    0x78C7, 0x2A61,
+    0x78B6, 0x2A91,
+    0x78A6, 0x2AC0,
+    0x7895, 0x2AEF,
+    0x7884, 0x2B1F,
+    0x7873, 0x2B4E,
+    0x7862, 0x2B7D,
+    0x7851, 0x2BAD,
+    0x7840, 0x2BDC,
+    0x782E, 0x2C0B,
+    0x781D, 0x2C3A,
+    0x780C, 0x2C69,
+    0x77FA, 0x2C98,
+    0x77E9, 0x2CC8,
+    0x77D7, 0x2CF7,
+    0x77C5, 0x2D26,
+    0x77B4, 0x2D55,
+    0x77A2, 0x2D84,
+    0x7790, 0x2DB3,
+    0x777E, 0x2DE2,
+    0x776C, 0x2E11,
+    0x775A, 0x2E3F,
+    0x7747, 0x2E6E,
+    0x7735, 0x2E9D,
+    0x7723, 0x2ECC,
+    0x7710, 0x2EFB,
+    0x76FE, 0x2F29,
+    0x76EB, 0x2F58,
+    0x76D9, 0x2F87,
+    0x76C6, 0x2FB5,
+    0x76B3, 0x2FE4,
+    0x76A0, 0x3013,
+    0x768E, 0x3041,
+    0x767B, 0x3070,
+    0x7668, 0x309E,
+    0x7654, 0x30CD,
+    0x7641, 0x30FB,
+    0x762E, 0x312A,
+    0x761B, 0x3158,
+    0x7607, 0x3186,
+    0x75F4, 0x31B5,
+    0x75E0, 0x31E3,
+    0x75CC, 0x3211,
+    0x75B9, 0x3240,
+    0x75A5, 0x326E,
+    0x7591, 0x329C,
+    0x757D, 0x32CA,
+    0x7569, 0x32F8,
+    0x7555, 0x3326,
+    0x7541, 0x3354,
+    0x752D, 0x3382,
+    0x7519, 0x33B0,
+    0x7504, 0x33DE,
+    0x74F0, 0x340C,
+    0x74DB, 0x343A,
+    0x74C7, 0x3468,
+    0x74B2, 0x3496,
+    0x749E, 0x34C4,
+    0x7489, 0x34F2,
+    0x7474, 0x351F,
+    0x745F, 0x354D,
+    0x744A, 0x357B,
+    0x7435, 0x35A8,
+    0x7420, 0x35D6,
+    0x740B, 0x3604,
+    0x73F6, 0x3631,
+    0x73E0, 0x365F,
+    0x73CB, 0x368C,
+    0x73B5, 0x36BA,
+    0x73A0, 0x36E7,
+    0x738A, 0x3714,
+    0x7375, 0x3742,
+    0x735F, 0x376F,
+    0x7349, 0x379C,
+    0x7333, 0x37CA,
+    0x731D, 0x37F7,
+    0x7307, 0x3824,
+    0x72F1, 0x3851,
+    0x72DB, 0x387E,
+    0x72C5, 0x38AB,
+    0x72AF, 0x38D8,
+    0x7298, 0x3906,
+    0x7282, 0x3932,
+    0x726B, 0x395F,
+    0x7255, 0x398C,
+    0x723E, 0x39B9,
+    0x7227, 0x39E6,
+    0x7211, 0x3A13,
+    0x71FA, 0x3A40,
+    0x71E3, 0x3A6C,
+    0x71CC, 0x3A99,
+    0x71B5, 0x3AC6,
+    0x719E, 0x3AF2,
+    0x7186, 0x3B1F,
+    0x716F, 0x3B4C,
+    0x7158, 0x3B78,
+    0x7141, 0x3BA5,
+    0x7129, 0x3BD1,
+    0x7112, 0x3BFD,
+    0x70FA, 0x3C2A,
+    0x70E2, 0x3C56,
+    0x70CB, 0x3C83,
+    0x70B3, 0x3CAF,
+    0x709B, 0x3CDB,
+    0x7083, 0x3D07,
+    0x706B, 0x3D33,
+    0x7053, 0x3D60,
+    0x703B, 0x3D8C,
+    0x7023, 0x3DB8,
+    0x700A, 0x3DE4,
+    0x6FF2, 0x3E10,
+    0x6FDA, 0x3E3C,
+    0x6FC1, 0x3E68,
+    0x6FA9, 0x3E93,
+    0x6F90, 0x3EBF,
+    0x6F77, 0x3EEB,
+    0x6F5F, 0x3F17,
+    0x6F46, 0x3F43,
+    0x6F2D, 0x3F6E,
+    0x6F14, 0x3F9A,
+    0x6EFB, 0x3FC5,
+    0x6EE2, 0x3FF1,
+    0x6EC9, 0x401D,
+    0x6EAF, 0x4048,
+    0x6E96, 0x4073,
+    0x6E7D, 0x409F,
+    0x6E63, 0x40CA,
+    0x6E4A, 0x40F6,
+    0x6E30, 0x4121,
+    0x6E17, 0x414C,
+    0x6DFD, 0x4177,
+    0x6DE3, 0x41A2,
+    0x6DCA, 0x41CE,
+    0x6DB0, 0x41F9,
+    0x6D96, 0x4224,
+    0x6D7C, 0x424F,
+    0x6D62, 0x427A,
+    0x6D48, 0x42A5,
+    0x6D2D, 0x42D0,
+    0x6D13, 0x42FA,
+    0x6CF9, 0x4325,
+    0x6CDE, 0x4350,
+    0x6CC4, 0x437B,
+    0x6CA9, 0x43A5,
+    0x6C8F, 0x43D0,
+    0x6C74, 0x43FB,
+    0x6C59, 0x4425,
+    0x6C3F, 0x4450,
+    0x6C24, 0x447A,
+    0x6C09, 0x44A5,
+    0x6BEE, 0x44CF,
+    0x6BD3, 0x44FA,
+    0x6BB8, 0x4524,
+    0x6B9C, 0x454E,
+    0x6B81, 0x4578,
+    0x6B66, 0x45A3,
+    0x6B4A, 0x45CD,
+    0x6B2F, 0x45F7,
+    0x6B13, 0x4621,
+    0x6AF8, 0x464B,
+    0x6ADC, 0x4675,
+    0x6AC1, 0x469F,
+    0x6AA5, 0x46C9,
+    0x6A89, 0x46F3,
+    0x6A6D, 0x471C,
+    0x6A51, 0x4746,
+    0x6A35, 0x4770,
+    0x6A19, 0x479A,
+    0x69FD, 0x47C3,
+    0x69E1, 0x47ED,
+    0x69C4, 0x4816,
+    0x69A8, 0x4840,
+    0x698C, 0x4869,
+    0x696F, 0x4893,
+    0x6953, 0x48BC,
+    0x6936, 0x48E6,
+    0x6919, 0x490F,
+    0x68FD, 0x4938,
+    0x68E0, 0x4961,
+    0x68C3, 0x498A,
+    0x68A6, 0x49B4,
+    0x6889, 0x49DD,
+    0x686C, 0x4A06,
+    0x684F, 0x4A2F,
+    0x6832, 0x4A58,
+    0x6815, 0x4A81,
+    0x67F7, 0x4AA9,
+    0x67DA, 0x4AD2,
+    0x67BD, 0x4AFB,
+    0x679F, 0x4B24,
+    0x6782, 0x4B4C,
+    0x6764, 0x4B75,
+    0x6746, 0x4B9E,
+    0x6729, 0x4BC6,
+    0x670B, 0x4BEF,
+    0x66ED, 0x4C17,
+    0x66CF, 0x4C3F,
+    0x66B1, 0x4C68,
+    0x6693, 0x4C90,
+    0x6675, 0x4CB8,
+    0x6657, 0x4CE1,
+    0x6639, 0x4D09,
+    0x661A, 0x4D31,
+    0x65FC, 0x4D59,
+    0x65DD, 0x4D81,
+    0x65BF, 0x4DA9,
+    0x65A0, 0x4DD1,
+    0x6582, 0x4DF9,
+    0x6563, 0x4E21,
+    0x6545, 0x4E48,
+    0x6526, 0x4E70,
+    0x6507, 0x4E98,
+    0x64E8, 0x4EBF,
+    0x64C9, 0x4EE7,
+    0x64AA, 0x4F0F,
+    0x648B, 0x4F36,
+    0x646C, 0x4F5E,
+    0x644D, 0x4F85,
+    0x642D, 0x4FAC,
+    0x640E, 0x4FD4,
+    0x63EF, 0x4FFB,
+    0x63CF, 0x5022,
+    0x63B0, 0x5049,
+    0x6390, 0x5070,
+    0x6371, 0x5097,
+    0x6351, 0x50BF,
+    0x6331, 0x50E5,
+    0x6311, 0x510C,
+    0x62F2, 0x5133,
+    0x62D2, 0x515A,
+    0x62B2, 0x5181,
+    0x6292, 0x51A8,
+    0x6271, 0x51CE,
+    0x6251, 0x51F5,
+    0x6231, 0x521C,
+    0x6211, 0x5242,
+    0x61F1, 0x5269,
+    0x61D0, 0x528F,
+    0x61B0, 0x52B5,
+    0x618F, 0x52DC,
+    0x616F, 0x5302,
+    0x614E, 0x5328,
+    0x612D, 0x534E,
+    0x610D, 0x5375,
+    0x60EC, 0x539B,
+    0x60CB, 0x53C1,
+    0x60AA, 0x53E7,
+    0x6089, 0x540D,
+    0x6068, 0x5433,
+    0x6047, 0x5458,
+    0x6026, 0x547E,
+    0x6004, 0x54A4,
+    0x5FE3, 0x54CA,
+    0x5FC2, 0x54EF,
+    0x5FA0, 0x5515,
+    0x5F7F, 0x553A,
+    0x5F5E, 0x5560,
+    0x5F3C, 0x5585,
+    0x5F1A, 0x55AB,
+    0x5EF9, 0x55D0,
+    0x5ED7, 0x55F5,
+    0x5EB5, 0x561A,
+    0x5E93, 0x5640,
+    0x5E71, 0x5665,
+    0x5E50, 0x568A,
+    0x5E2D, 0x56AF,
+    0x5E0B, 0x56D4,
+    0x5DE9, 0x56F9,
+    0x5DC7, 0x571D,
+    0x5DA5, 0x5742,
+    0x5D83, 0x5767,
+    0x5D60, 0x578C,
+    0x5D3E, 0x57B0,
+    0x5D1B, 0x57D5,
+    0x5CF9, 0x57F9,
+    0x5CD6, 0x581E,
+    0x5CB4, 0x5842,
+    0x5C91, 0x5867,
+    0x5C6E, 0x588B,
+    0x5C4B, 0x58AF,
+    0x5C29, 0x58D4,
+    0x5C06, 0x58F8,
+    0x5BE3, 0x591C,
+    0x5BC0, 0x5940,
+    0x5B9D, 0x5964,
+    0x5B79, 0x5988,
+    0x5B56, 0x59AC,
+    0x5B33, 0x59D0,
+    0x5B10, 0x59F3,
+    0x5AEC, 0x5A17,
+    0x5AC9, 0x5A3B,
+    0x5AA5, 0x5A5E,
+    0x5A82, 0x5A82,
+    0x5A5E, 0x5AA5,
+    0x5A3B, 0x5AC9,
+    0x5A17, 0x5AEC,
+    0x59F3, 0x5B10,
+    0x59D0, 0x5B33,
+    0x59AC, 0x5B56,
+    0x5988, 0x5B79,
+    0x5964, 0x5B9D,
+    0x5940, 0x5BC0,
+    0x591C, 0x5BE3,
+    0x58F8, 0x5C06,
+    0x58D4, 0x5C29,
+    0x58AF, 0x5C4B,
+    0x588B, 0x5C6E,
+    0x5867, 0x5C91,
+    0x5842, 0x5CB4,
+    0x581E, 0x5CD6,
+    0x57F9, 0x5CF9,
+    0x57D5, 0x5D1B,
+    0x57B0, 0x5D3E,
+    0x578C, 0x5D60,
+    0x5767, 0x5D83,
+    0x5742, 0x5DA5,
+    0x571D, 0x5DC7,
+    0x56F9, 0x5DE9,
+    0x56D4, 0x5E0B,
+    0x56AF, 0x5E2D,
+    0x568A, 0x5E50,
+    0x5665, 0x5E71,
+    0x5640, 0x5E93,
+    0x561A, 0x5EB5,
+    0x55F5, 0x5ED7,
+    0x55D0, 0x5EF9,
+    0x55AB, 0x5F1A,
+    0x5585, 0x5F3C,
+    0x5560, 0x5F5E,
+    0x553A, 0x5F7F,
+    0x5515, 0x5FA0,
+    0x54EF, 0x5FC2,
+    0x54CA, 0x5FE3,
+    0x54A4, 0x6004,
+    0x547E, 0x6026,
+    0x5458, 0x6047,
+    0x5433, 0x6068,
+    0x540D, 0x6089,
+    0x53E7, 0x60AA,
+    0x53C1, 0x60CB,
+    0x539B, 0x60EC,
+    0x5375, 0x610D,
+    0x534E, 0x612D,
+    0x5328, 0x614E,
+    0x5302, 0x616F,
+    0x52DC, 0x618F,
+    0x52B5, 0x61B0,
+    0x528F, 0x61D0,
+    0x5269, 0x61F1,
+    0x5242, 0x6211,
+    0x521C, 0x6231,
+    0x51F5, 0x6251,
+    0x51CE, 0x6271,
+    0x51A8, 0x6292,
+    0x5181, 0x62B2,
+    0x515A, 0x62D2,
+    0x5133, 0x62F2,
+    0x510C, 0x6311,
+    0x50E5, 0x6331,
+    0x50BF, 0x6351,
+    0x5097, 0x6371,
+    0x5070, 0x6390,
+    0x5049, 0x63B0,
+    0x5022, 0x63CF,
+    0x4FFB, 0x63EF,
+    0x4FD4, 0x640E,
+    0x4FAC, 0x642D,
+    0x4F85, 0x644D,
+    0x4F5E, 0x646C,
+    0x4F36, 0x648B,
+    0x4F0F, 0x64AA,
+    0x4EE7, 0x64C9,
+    0x4EBF, 0x64E8,
+    0x4E98, 0x6507,
+    0x4E70, 0x6526,
+    0x4E48, 0x6545,
+    0x4E21, 0x6563,
+    0x4DF9, 0x6582,
+    0x4DD1, 0x65A0,
+    0x4DA9, 0x65BF,
+    0x4D81, 0x65DD,
+    0x4D59, 0x65FC,
+    0x4D31, 0x661A,
+    0x4D09, 0x6639,
+    0x4CE1, 0x6657,
+    0x4CB8, 0x6675,
+    0x4C90, 0x6693,
+    0x4C68, 0x66B1,
+    0x4C3F, 0x66CF,
+    0x4C17, 0x66ED,
+    0x4BEF, 0x670B,
+    0x4BC6, 0x6729,
+    0x4B9E, 0x6746,
+    0x4B75, 0x6764,
+    0x4B4C, 0x6782,
+    0x4B24, 0x679F,
+    0x4AFB, 0x67BD,
+    0x4AD2, 0x67DA,
+    0x4AA9, 0x67F7,
+    0x4A81, 0x6815,
+    0x4A58, 0x6832,
+    0x4A2F, 0x684F,
+    0x4A06, 0x686C,
+    0x49DD, 0x6889,
+    0x49B4, 0x68A6,
+    0x498A, 0x68C3,
+    0x4961, 0x68E0,
+    0x4938, 0x68FD,
+    0x490F, 0x6919,
+    0x48E6, 0x6936,
+    0x48BC, 0x6953,
+    0x4893, 0x696F,
+    0x4869, 0x698C,
+    0x4840, 0x69A8,
+    0x4816, 0x69C4,
+    0x47ED, 0x69E1,
+    0x47C3, 0x69FD,
+    0x479A, 0x6A19,
+    0x4770, 0x6A35,
+    0x4746, 0x6A51,
+    0x471C, 0x6A6D,
+    0x46F3, 0x6A89,
+    0x46C9, 0x6AA5,
+    0x469F, 0x6AC1,
+    0x4675, 0x6ADC,
+    0x464B, 0x6AF8,
+    0x4621, 0x6B13,
+    0x45F7, 0x6B2F,
+    0x45CD, 0x6B4A,
+    0x45A3, 0x6B66,
+    0x4578, 0x6B81,
+    0x454E, 0x6B9C,
+    0x4524, 0x6BB8,
+    0x44FA, 0x6BD3,
+    0x44CF, 0x6BEE,
+    0x44A5, 0x6C09,
+    0x447A, 0x6C24,
+    0x4450, 0x6C3F,
+    0x4425, 0x6C59,
+    0x43FB, 0x6C74,
+    0x43D0, 0x6C8F,
+    0x43A5, 0x6CA9,
+    0x437B, 0x6CC4,
+    0x4350, 0x6CDE,
+    0x4325, 0x6CF9,
+    0x42FA, 0x6D13,
+    0x42D0, 0x6D2D,
+    0x42A5, 0x6D48,
+    0x427A, 0x6D62,
+    0x424F, 0x6D7C,
+    0x4224, 0x6D96,
+    0x41F9, 0x6DB0,
+    0x41CE, 0x6DCA,
+    0x41A2, 0x6DE3,
+    0x4177, 0x6DFD,
+    0x414C, 0x6E17,
+    0x4121, 0x6E30,
+    0x40F6, 0x6E4A,
+    0x40CA, 0x6E63,
+    0x409F, 0x6E7D,
+    0x4073, 0x6E96,
+    0x4048, 0x6EAF,
+    0x401D, 0x6EC9,
+    0x3FF1, 0x6EE2,
+    0x3FC5, 0x6EFB,
+    0x3F9A, 0x6F14,
+    0x3F6E, 0x6F2D,
+    0x3F43, 0x6F46,
+    0x3F17, 0x6F5F,
+    0x3EEB, 0x6F77,
+    0x3EBF, 0x6F90,
+    0x3E93, 0x6FA9,
+    0x3E68, 0x6FC1,
+    0x3E3C, 0x6FDA,
+    0x3E10, 0x6FF2,
+    0x3DE4, 0x700A,
+    0x3DB8, 0x7023,
+    0x3D8C, 0x703B,
+    0x3D60, 0x7053,
+    0x3D33, 0x706B,
+    0x3D07, 0x7083,
+    0x3CDB, 0x709B,
+    0x3CAF, 0x70B3,
+    0x3C83, 0x70CB,
+    0x3C56, 0x70E2,
+    0x3C2A, 0x70FA,
+    0x3BFD, 0x7112,
+    0x3BD1, 0x7129,
+    0x3BA5, 0x7141,
+    0x3B78, 0x7158,
+    0x3B4C, 0x716F,
+    0x3B1F, 0x7186,
+    0x3AF2, 0x719E,
+    0x3AC6, 0x71B5,
+    0x3A99, 0x71CC,
+    0x3A6C, 0x71E3,
+    0x3A40, 0x71FA,
+    0x3A13, 0x7211,
+    0x39E6, 0x7227,
+    0x39B9, 0x723E,
+    0x398C, 0x7255,
+    0x395F, 0x726B,
+    0x3932, 0x7282,
+    0x3906, 0x7298,
+    0x38D8, 0x72AF,
+    0x38AB, 0x72C5,
+    0x387E, 0x72DB,
+    0x3851, 0x72F1,
+    0x3824, 0x7307,
+    0x37F7, 0x731D,
+    0x37CA, 0x7333,
+    0x379C, 0x7349,
+    0x376F, 0x735F,
+    0x3742, 0x7375,
+    0x3714, 0x738A,
+    0x36E7, 0x73A0,
+    0x36BA, 0x73B5,
+    0x368C, 0x73CB,
+    0x365F, 0x73E0,
+    0x3631, 0x73F6,
+    0x3604, 0x740B,
+    0x35D6, 0x7420,
+    0x35A8, 0x7435,
+    0x357B, 0x744A,
+    0x354D, 0x745F,
+    0x351F, 0x7474,
+    0x34F2, 0x7489,
+    0x34C4, 0x749E,
+    0x3496, 0x74B2,
+    0x3468, 0x74C7,
+    0x343A, 0x74DB,
+    0x340C, 0x74F0,
+    0x33DE, 0x7504,
+    0x33B0, 0x7519,
+    0x3382, 0x752D,
+    0x3354, 0x7541,
+    0x3326, 0x7555,
+    0x32F8, 0x7569,
+    0x32CA, 0x757D,
+    0x329C, 0x7591,
+    0x326E, 0x75A5,
+    0x3240, 0x75B9,
+    0x3211, 0x75CC,
+    0x31E3, 0x75E0,
+    0x31B5, 0x75F4,
+    0x3186, 0x7607,
+    0x3158, 0x761B,
+    0x312A, 0x762E,
+    0x30FB, 0x7641,
+    0x30CD, 0x7654,
+    0x309E, 0x7668,
+    0x3070, 0x767B,
+    0x3041, 0x768E,
+    0x3013, 0x76A0,
+    0x2FE4, 0x76B3,
+    0x2FB5, 0x76C6,
+    0x2F87, 0x76D9,
+    0x2F58, 0x76EB,
+    0x2F29, 0x76FE,
+    0x2EFB, 0x7710,
+    0x2ECC, 0x7723,
+    0x2E9D, 0x7735,
+    0x2E6E, 0x7747,
+    0x2E3F, 0x775A,
+    0x2E11, 0x776C,
+    0x2DE2, 0x777E,
+    0x2DB3, 0x7790,
+    0x2D84, 0x77A2,
+    0x2D55, 0x77B4,
+    0x2D26, 0x77C5,
+    0x2CF7, 0x77D7,
+    0x2CC8, 0x77E9,
+    0x2C98, 0x77FA,
+    0x2C69, 0x780C,
+    0x2C3A, 0x781D,
+    0x2C0B, 0x782E,
+    0x2BDC, 0x7840,
+    0x2BAD, 0x7851,
+    0x2B7D, 0x7862,
+    0x2B4E, 0x7873,
+    0x2B1F, 0x7884,
+    0x2AEF, 0x7895,
+    0x2AC0, 0x78A6,
+    0x2A91, 0x78B6,
+    0x2A61, 0x78C7,
+    0x2A32, 0x78D8,
+    0x2A02, 0x78E8,
+    0x29D3, 0x78F9,
+    0x29A3, 0x7909,
+    0x2974, 0x7919,
+    0x2944, 0x792A,
+    0x2915, 0x793A,
+    0x28E5, 0x794A,
+    0x28B5, 0x795A,
+    0x2886, 0x796A,
+    0x2856, 0x797A,
+    0x2826, 0x798A,
+    0x27F6, 0x7999,
+    0x27C7, 0x79A9,
+    0x2797, 0x79B9,
+    0x2767, 0x79C8,
+    0x2737, 0x79D8,
+    0x2707, 0x79E7,
+    0x26D8, 0x79F6,
+    0x26A8, 0x7A05,
+    0x2678, 0x7A15,
+    0x2648, 0x7A24,
+    0x2618, 0x7A33,
+    0x25E8, 0x7A42,
+    0x25B8, 0x7A50,
+    0x2588, 0x7A5F,
+    0x2558, 0x7A6E,
+    0x2528, 0x7A7D,
+    0x24F7, 0x7A8B,
+    0x24C7, 0x7A9A,
+    0x2497, 0x7AA8,
+    0x2467, 0x7AB6,
+    0x2437, 0x7AC5,
+    0x2407, 0x7AD3,
+    0x23D6, 0x7AE1,
+    0x23A6, 0x7AEF,
+    0x2376, 0x7AFD,
+    0x2345, 0x7B0B,
+    0x2315, 0x7B19,
+    0x22E5, 0x7B26,
+    0x22B4, 0x7B34,
+    0x2284, 0x7B42,
+    0x2254, 0x7B4F,
+    0x2223, 0x7B5D,
+    0x21F3, 0x7B6A,
+    0x21C2, 0x7B77,
+    0x2192, 0x7B84,
+    0x2161, 0x7B92,
+    0x2131, 0x7B9F,
+    0x2100, 0x7BAC,
+    0x20D0, 0x7BB9,
+    0x209F, 0x7BC5,
+    0x206E, 0x7BD2,
+    0x203E, 0x7BDF,
+    0x200D, 0x7BEB,
+    0x1FDC, 0x7BF8,
+    0x1FAC, 0x7C05,
+    0x1F7B, 0x7C11,
+    0x1F4A, 0x7C1D,
+    0x1F19, 0x7C29,
+    0x1EE9, 0x7C36,
+    0x1EB8, 0x7C42,
+    0x1E87, 0x7C4E,
+    0x1E56, 0x7C5A,
+    0x1E25, 0x7C66,
+    0x1DF5, 0x7C71,
+    0x1DC4, 0x7C7D,
+    0x1D93, 0x7C89,
+    0x1D62, 0x7C94,
+    0x1D31, 0x7CA0,
+    0x1D00, 0x7CAB,
+    0x1CCF, 0x7CB7,
+    0x1C9E, 0x7CC2,
+    0x1C6D, 0x7CCD,
+    0x1C3C, 0x7CD8,
+    0x1C0B, 0x7CE3,
+    0x1BDA, 0x7CEE,
+    0x1BA9, 0x7CF9,
+    0x1B78, 0x7D04,
+    0x1B47, 0x7D0F,
+    0x1B16, 0x7D19,
+    0x1AE4, 0x7D24,
+    0x1AB3, 0x7D2F,
+    0x1A82, 0x7D39,
+    0x1A51, 0x7D43,
+    0x1A20, 0x7D4E,
+    0x19EF, 0x7D58,
+    0x19BD, 0x7D62,
+    0x198C, 0x7D6C,
+    0x195B, 0x7D76,
+    0x192A, 0x7D80,
+    0x18F8, 0x7D8A,
+    0x18C7, 0x7D94,
+    0x1896, 0x7D9D,
+    0x1864, 0x7DA7,
+    0x1833, 0x7DB0,
+    0x1802, 0x7DBA,
+    0x17D0, 0x7DC3,
+    0x179F, 0x7DCD,
+    0x176D, 0x7DD6,
+    0x173C, 0x7DDF,
+    0x170A, 0x7DE8,
+    0x16D9, 0x7DF1,
+    0x16A8, 0x7DFA,
+    0x1676, 0x7E03,
+    0x1645, 0x7E0C,
+    0x1613, 0x7E14,
+    0x15E2, 0x7E1D,
+    0x15B0, 0x7E26,
+    0x157F, 0x7E2E,
+    0x154D, 0x7E37,
+    0x151B, 0x7E3F,
+    0x14EA, 0x7E47,
+    0x14B8, 0x7E4F,
+    0x1487, 0x7E57,
+    0x1455, 0x7E5F,
+    0x1423, 0x7E67,
+    0x13F2, 0x7E6F,
+    0x13C0, 0x7E77,
+    0x138E, 0x7E7F,
+    0x135D, 0x7E86,
+    0x132B, 0x7E8E,
+    0x12F9, 0x7E95,
+    0x12C8, 0x7E9D,
+    0x1296, 0x7EA4,
+    0x1264, 0x7EAB,
+    0x1232, 0x7EB3,
+    0x1201, 0x7EBA,
+    0x11CF, 0x7EC1,
+    0x119D, 0x7EC8,
+    0x116B, 0x7ECF,
+    0x1139, 0x7ED5,
+    0x1108, 0x7EDC,
+    0x10D6, 0x7EE3,
+    0x10A4, 0x7EE9,
+    0x1072, 0x7EF0,
+    0x1040, 0x7EF6,
+    0x100E, 0x7EFD,
+    0x0FDD, 0x7F03,
+    0x0FAB, 0x7F09,
+    0x0F79, 0x7F0F,
+    0x0F47, 0x7F15,
+    0x0F15, 0x7F1B,
+    0x0EE3, 0x7F21,
+    0x0EB1, 0x7F27,
+    0x0E7F, 0x7F2D,
+    0x0E4D, 0x7F32,
+    0x0E1B, 0x7F38,
+    0x0DE9, 0x7F3D,
+    0x0DB7, 0x7F43,
+    0x0D85, 0x7F48,
+    0x0D53, 0x7F4D,
+    0x0D21, 0x7F53,
+    0x0CEF, 0x7F58,
+    0x0CBD, 0x7F5D,
+    0x0C8B, 0x7F62,
+    0x0C59, 0x7F67,
+    0x0C27, 0x7F6B,
+    0x0BF5, 0x7F70,
+    0x0BC3, 0x7F75,
+    0x0B91, 0x7F79,
+    0x0B5F, 0x7F7E,
+    0x0B2D, 0x7F82,
+    0x0AFB, 0x7F87,
+    0x0AC9, 0x7F8B,
+    0x0A97, 0x7F8F,
+    0x0A65, 0x7F93,
+    0x0A33, 0x7F97,
+    0x0A00, 0x7F9B,
+    0x09CE, 0x7F9F,
+    0x099C, 0x7FA3,
+    0x096A, 0x7FA7,
+    0x0938, 0x7FAA,
+    0x0906, 0x7FAE,
+    0x08D4, 0x7FB1,
+    0x08A2, 0x7FB5,
+    0x086F, 0x7FB8,
+    0x083D, 0x7FBC,
+    0x080B, 0x7FBF,
+    0x07D9, 0x7FC2,
+    0x07A7, 0x7FC5,
+    0x0775, 0x7FC8,
+    0x0742, 0x7FCB,
+    0x0710, 0x7FCE,
+    0x06DE, 0x7FD0,
+    0x06AC, 0x7FD3,
+    0x067A, 0x7FD6,
+    0x0647, 0x7FD8,
+    0x0615, 0x7FDA,
+    0x05E3, 0x7FDD,
+    0x05B1, 0x7FDF,
+    0x057F, 0x7FE1,
+    0x054C, 0x7FE3,
+    0x051A, 0x7FE5,
+    0x04E8, 0x7FE7,
+    0x04B6, 0x7FE9,
+    0x0483, 0x7FEB,
+    0x0451, 0x7FED,
+    0x041F, 0x7FEE,
+    0x03ED, 0x7FF0,
+    0x03BA, 0x7FF2,
+    0x0388, 0x7FF3,
+    0x0356, 0x7FF4,
+    0x0324, 0x7FF6,
+    0x02F1, 0x7FF7,
+    0x02BF, 0x7FF8,
+    0x028D, 0x7FF9,
+    0x025B, 0x7FFA,
+    0x0228, 0x7FFB,
+    0x01F6, 0x7FFC,
+    0x01C4, 0x7FFC,
+    0x0192, 0x7FFD,
+    0x015F, 0x7FFE,
+    0x012D, 0x7FFE,
+    0x00FB, 0x7FFF,
+    0x00C9, 0x7FFF,
+    0x0096, 0x7FFF,
+    0x0064, 0x7FFF,
+    0x0032, 0x7FFF,
+    0x0000, 0x7FFF,
+    0xFFCD, 0x7FFF,
+    0xFF9B, 0x7FFF,
+    0xFF69, 0x7FFF,
+    0xFF36, 0x7FFF,
+    0xFF04, 0x7FFF,
+    0xFED2, 0x7FFE,
+    0xFEA0, 0x7FFE,
+    0xFE6D, 0x7FFD,
+    0xFE3B, 0x7FFC,
+    0xFE09, 0x7FFC,
+    0xFDD7, 0x7FFB,
+    0xFDA4, 0x7FFA,
+    0xFD72, 0x7FF9,
+    0xFD40, 0x7FF8,
+    0xFD0E, 0x7FF7,
+    0xFCDB, 0x7FF6,
+    0xFCA9, 0x7FF4,
+    0xFC77, 0x7FF3,
+    0xFC45, 0x7FF2,
+    0xFC12, 0x7FF0,
+    0xFBE0, 0x7FEE,
+    0xFBAE, 0x7FED,
+    0xFB7C, 0x7FEB,
+    0xFB49, 0x7FE9,
+    0xFB17, 0x7FE7,
+    0xFAE5, 0x7FE5,
+    0xFAB3, 0x7FE3,
+    0xFA80, 0x7FE1,
+    0xFA4E, 0x7FDF,
+    0xFA1C, 0x7FDD,
+    0xF9EA, 0x7FDA,
+    0xF9B8, 0x7FD8,
+    0xF985, 0x7FD6,
+    0xF953, 0x7FD3,
+    0xF921, 0x7FD0,
+    0xF8EF, 0x7FCE,
+    0xF8BD, 0x7FCB,
+    0xF88A, 0x7FC8,
+    0xF858, 0x7FC5,
+    0xF826, 0x7FC2,
+    0xF7F4, 0x7FBF,
+    0xF7C2, 0x7FBC,
+    0xF790, 0x7FB8,
+    0xF75D, 0x7FB5,
+    0xF72B, 0x7FB1,
+    0xF6F9, 0x7FAE,
+    0xF6C7, 0x7FAA,
+    0xF695, 0x7FA7,
+    0xF663, 0x7FA3,
+    0xF631, 0x7F9F,
+    0xF5FF, 0x7F9B,
+    0xF5CC, 0x7F97,
+    0xF59A, 0x7F93,
+    0xF568, 0x7F8F,
+    0xF536, 0x7F8B,
+    0xF504, 0x7F87,
+    0xF4D2, 0x7F82,
+    0xF4A0, 0x7F7E,
+    0xF46E, 0x7F79,
+    0xF43C, 0x7F75,
+    0xF40A, 0x7F70,
+    0xF3D8, 0x7F6B,
+    0xF3A6, 0x7F67,
+    0xF374, 0x7F62,
+    0xF342, 0x7F5D,
+    0xF310, 0x7F58,
+    0xF2DE, 0x7F53,
+    0xF2AC, 0x7F4D,
+    0xF27A, 0x7F48,
+    0xF248, 0x7F43,
+    0xF216, 0x7F3D,
+    0xF1E4, 0x7F38,
+    0xF1B2, 0x7F32,
+    0xF180, 0x7F2D,
+    0xF14E, 0x7F27,
+    0xF11C, 0x7F21,
+    0xF0EA, 0x7F1B,
+    0xF0B8, 0x7F15,
+    0xF086, 0x7F0F,
+    0xF054, 0x7F09,
+    0xF022, 0x7F03,
+    0xEFF1, 0x7EFD,
+    0xEFBF, 0x7EF6,
+    0xEF8D, 0x7EF0,
+    0xEF5B, 0x7EE9,
+    0xEF29, 0x7EE3,
+    0xEEF7, 0x7EDC,
+    0xEEC6, 0x7ED5,
+    0xEE94, 0x7ECF,
+    0xEE62, 0x7EC8,
+    0xEE30, 0x7EC1,
+    0xEDFE, 0x7EBA,
+    0xEDCD, 0x7EB3,
+    0xED9B, 0x7EAB,
+    0xED69, 0x7EA4,
+    0xED37, 0x7E9D,
+    0xED06, 0x7E95,
+    0xECD4, 0x7E8E,
+    0xECA2, 0x7E86,
+    0xEC71, 0x7E7F,
+    0xEC3F, 0x7E77,
+    0xEC0D, 0x7E6F,
+    0xEBDC, 0x7E67,
+    0xEBAA, 0x7E5F,
+    0xEB78, 0x7E57,
+    0xEB47, 0x7E4F,
+    0xEB15, 0x7E47,
+    0xEAE4, 0x7E3F,
+    0xEAB2, 0x7E37,
+    0xEA80, 0x7E2E,
+    0xEA4F, 0x7E26,
+    0xEA1D, 0x7E1D,
+    0xE9EC, 0x7E14,
+    0xE9BA, 0x7E0C,
+    0xE989, 0x7E03,
+    0xE957, 0x7DFA,
+    0xE926, 0x7DF1,
+    0xE8F5, 0x7DE8,
+    0xE8C3, 0x7DDF,
+    0xE892, 0x7DD6,
+    0xE860, 0x7DCD,
+    0xE82F, 0x7DC3,
+    0xE7FD, 0x7DBA,
+    0xE7CC, 0x7DB0,
+    0xE79B, 0x7DA7,
+    0xE769, 0x7D9D,
+    0xE738, 0x7D94,
+    0xE707, 0x7D8A,
+    0xE6D5, 0x7D80,
+    0xE6A4, 0x7D76,
+    0xE673, 0x7D6C,
+    0xE642, 0x7D62,
+    0xE610, 0x7D58,
+    0xE5DF, 0x7D4E,
+    0xE5AE, 0x7D43,
+    0xE57D, 0x7D39,
+    0xE54C, 0x7D2F,
+    0xE51B, 0x7D24,
+    0xE4E9, 0x7D19,
+    0xE4B8, 0x7D0F,
+    0xE487, 0x7D04,
+    0xE456, 0x7CF9,
+    0xE425, 0x7CEE,
+    0xE3F4, 0x7CE3,
+    0xE3C3, 0x7CD8,
+    0xE392, 0x7CCD,
+    0xE361, 0x7CC2,
+    0xE330, 0x7CB7,
+    0xE2FF, 0x7CAB,
+    0xE2CE, 0x7CA0,
+    0xE29D, 0x7C94,
+    0xE26C, 0x7C89,
+    0xE23B, 0x7C7D,
+    0xE20A, 0x7C71,
+    0xE1DA, 0x7C66,
+    0xE1A9, 0x7C5A,
+    0xE178, 0x7C4E,
+    0xE147, 0x7C42,
+    0xE116, 0x7C36,
+    0xE0E6, 0x7C29,
+    0xE0B5, 0x7C1D,
+    0xE084, 0x7C11,
+    0xE053, 0x7C05,
+    0xE023, 0x7BF8,
+    0xDFF2, 0x7BEB,
+    0xDFC1, 0x7BDF,
+    0xDF91, 0x7BD2,
+    0xDF60, 0x7BC5,
+    0xDF2F, 0x7BB9,
+    0xDEFF, 0x7BAC,
+    0xDECE, 0x7B9F,
+    0xDE9E, 0x7B92,
+    0xDE6D, 0x7B84,
+    0xDE3D, 0x7B77,
+    0xDE0C, 0x7B6A,
+    0xDDDC, 0x7B5D,
+    0xDDAB, 0x7B4F,
+    0xDD7B, 0x7B42,
+    0xDD4B, 0x7B34,
+    0xDD1A, 0x7B26,
+    0xDCEA, 0x7B19,
+    0xDCBA, 0x7B0B,
+    0xDC89, 0x7AFD,
+    0xDC59, 0x7AEF,
+    0xDC29, 0x7AE1,
+    0xDBF8, 0x7AD3,
+    0xDBC8, 0x7AC5,
+    0xDB98, 0x7AB6,
+    0xDB68, 0x7AA8,
+    0xDB38, 0x7A9A,
+    0xDB08, 0x7A8B,
+    0xDAD7, 0x7A7D,
+    0xDAA7, 0x7A6E,
+    0xDA77, 0x7A5F,
+    0xDA47, 0x7A50,
+    0xDA17, 0x7A42,
+    0xD9E7, 0x7A33,
+    0xD9B7, 0x7A24,
+    0xD987, 0x7A15,
+    0xD957, 0x7A05,
+    0xD927, 0x79F6,
+    0xD8F8, 0x79E7,
+    0xD8C8, 0x79D8,
+    0xD898, 0x79C8,
+    0xD868, 0x79B9,
+    0xD838, 0x79A9,
+    0xD809, 0x7999,
+    0xD7D9, 0x798A,
+    0xD7A9, 0x797A,
+    0xD779, 0x796A,
+    0xD74A, 0x795A,
+    0xD71A, 0x794A,
+    0xD6EA, 0x793A,
+    0xD6BB, 0x792A,
+    0xD68B, 0x7919,
+    0xD65C, 0x7909,
+    0xD62C, 0x78F9,
+    0xD5FD, 0x78E8,
+    0xD5CD, 0x78D8,
+    0xD59E, 0x78C7,
+    0xD56E, 0x78B6,
+    0xD53F, 0x78A6,
+    0xD510, 0x7895,
+    0xD4E0, 0x7884,
+    0xD4B1, 0x7873,
+    0xD482, 0x7862,
+    0xD452, 0x7851,
+    0xD423, 0x7840,
+    0xD3F4, 0x782E,
+    0xD3C5, 0x781D,
+    0xD396, 0x780C,
+    0xD367, 0x77FA,
+    0xD337, 0x77E9,
+    0xD308, 0x77D7,
+    0xD2D9, 0x77C5,
+    0xD2AA, 0x77B4,
+    0xD27B, 0x77A2,
+    0xD24C, 0x7790,
+    0xD21D, 0x777E,
+    0xD1EE, 0x776C,
+    0xD1C0, 0x775A,
+    0xD191, 0x7747,
+    0xD162, 0x7735,
+    0xD133, 0x7723,
+    0xD104, 0x7710,
+    0xD0D6, 0x76FE,
+    0xD0A7, 0x76EB,
+    0xD078, 0x76D9,
+    0xD04A, 0x76C6,
+    0xD01B, 0x76B3,
+    0xCFEC, 0x76A0,
+    0xCFBE, 0x768E,
+    0xCF8F, 0x767B,
+    0xCF61, 0x7668,
+    0xCF32, 0x7654,
+    0xCF04, 0x7641,
+    0xCED5, 0x762E,
+    0xCEA7, 0x761B,
+    0xCE79, 0x7607,
+    0xCE4A, 0x75F4,
+    0xCE1C, 0x75E0,
+    0xCDEE, 0x75CC,
+    0xCDBF, 0x75B9,
+    0xCD91, 0x75A5,
+    0xCD63, 0x7591,
+    0xCD35, 0x757D,
+    0xCD07, 0x7569,
+    0xCCD9, 0x7555,
+    0xCCAB, 0x7541,
+    0xCC7D, 0x752D,
+    0xCC4F, 0x7519,
+    0xCC21, 0x7504,
+    0xCBF3, 0x74F0,
+    0xCBC5, 0x74DB,
+    0xCB97, 0x74C7,
+    0xCB69, 0x74B2,
+    0xCB3B, 0x749E,
+    0xCB0D, 0x7489,
+    0xCAE0, 0x7474,
+    0xCAB2, 0x745F,
+    0xCA84, 0x744A,
+    0xCA57, 0x7435,
+    0xCA29, 0x7420,
+    0xC9FB, 0x740B,
+    0xC9CE, 0x73F6,
+    0xC9A0, 0x73E0,
+    0xC973, 0x73CB,
+    0xC945, 0x73B5,
+    0xC918, 0x73A0,
+    0xC8EB, 0x738A,
+    0xC8BD, 0x7375,
+    0xC890, 0x735F,
+    0xC863, 0x7349,
+    0xC835, 0x7333,
+    0xC808, 0x731D,
+    0xC7DB, 0x7307,
+    0xC7AE, 0x72F1,
+    0xC781, 0x72DB,
+    0xC754, 0x72C5,
+    0xC727, 0x72AF,
+    0xC6F9, 0x7298,
+    0xC6CD, 0x7282,
+    0xC6A0, 0x726B,
+    0xC673, 0x7255,
+    0xC646, 0x723E,
+    0xC619, 0x7227,
+    0xC5EC, 0x7211,
+    0xC5BF, 0x71FA,
+    0xC593, 0x71E3,
+    0xC566, 0x71CC,
+    0xC539, 0x71B5,
+    0xC50D, 0x719E,
+    0xC4E0, 0x7186,
+    0xC4B3, 0x716F,
+    0xC487, 0x7158,
+    0xC45A, 0x7141,
+    0xC42E, 0x7129,
+    0xC402, 0x7112,
+    0xC3D5, 0x70FA,
+    0xC3A9, 0x70E2,
+    0xC37C, 0x70CB,
+    0xC350, 0x70B3,
+    0xC324, 0x709B,
+    0xC2F8, 0x7083,
+    0xC2CC, 0x706B,
+    0xC29F, 0x7053,
+    0xC273, 0x703B,
+    0xC247, 0x7023,
+    0xC21B, 0x700A,
+    0xC1EF, 0x6FF2,
+    0xC1C3, 0x6FDA,
+    0xC197, 0x6FC1,
+    0xC16C, 0x6FA9,
+    0xC140, 0x6F90,
+    0xC114, 0x6F77,
+    0xC0E8, 0x6F5F,
+    0xC0BC, 0x6F46,
+    0xC091, 0x6F2D,
+    0xC065, 0x6F14,
+    0xC03A, 0x6EFB,
+    0xC00E, 0x6EE2,
+    0xBFE2, 0x6EC9,
+    0xBFB7, 0x6EAF,
+    0xBF8C, 0x6E96,
+    0xBF60, 0x6E7D,
+    0xBF35, 0x6E63,
+    0xBF09, 0x6E4A,
+    0xBEDE, 0x6E30,
+    0xBEB3, 0x6E17,
+    0xBE88, 0x6DFD,
+    0xBE5D, 0x6DE3,
+    0xBE31, 0x6DCA,
+    0xBE06, 0x6DB0,
+    0xBDDB, 0x6D96,
+    0xBDB0, 0x6D7C,
+    0xBD85, 0x6D62,
+    0xBD5A, 0x6D48,
+    0xBD2F, 0x6D2D,
+    0xBD05, 0x6D13,
+    0xBCDA, 0x6CF9,
+    0xBCAF, 0x6CDE,
+    0xBC84, 0x6CC4,
+    0xBC5A, 0x6CA9,
+    0xBC2F, 0x6C8F,
+    0xBC04, 0x6C74,
+    0xBBDA, 0x6C59,
+    0xBBAF, 0x6C3F,
+    0xBB85, 0x6C24,
+    0xBB5A, 0x6C09,
+    0xBB30, 0x6BEE,
+    0xBB05, 0x6BD3,
+    0xBADB, 0x6BB8,
+    0xBAB1, 0x6B9C,
+    0xBA87, 0x6B81,
+    0xBA5C, 0x6B66,
+    0xBA32, 0x6B4A,
+    0xBA08, 0x6B2F,
+    0xB9DE, 0x6B13,
+    0xB9B4, 0x6AF8,
+    0xB98A, 0x6ADC,
+    0xB960, 0x6AC1,
+    0xB936, 0x6AA5,
+    0xB90C, 0x6A89,
+    0xB8E3, 0x6A6D,
+    0xB8B9, 0x6A51,
+    0xB88F, 0x6A35,
+    0xB865, 0x6A19,
+    0xB83C, 0x69FD,
+    0xB812, 0x69E1,
+    0xB7E9, 0x69C4,
+    0xB7BF, 0x69A8,
+    0xB796, 0x698C,
+    0xB76C, 0x696F,
+    0xB743, 0x6953,
+    0xB719, 0x6936,
+    0xB6F0, 0x6919,
+    0xB6C7, 0x68FD,
+    0xB69E, 0x68E0,
+    0xB675, 0x68C3,
+    0xB64B, 0x68A6,
+    0xB622, 0x6889,
+    0xB5F9, 0x686C,
+    0xB5D0, 0x684F,
+    0xB5A7, 0x6832,
+    0xB57E, 0x6815,
+    0xB556, 0x67F7,
+    0xB52D, 0x67DA,
+    0xB504, 0x67BD,
+    0xB4DB, 0x679F,
+    0xB4B3, 0x6782,
+    0xB48A, 0x6764,
+    0xB461, 0x6746,
+    0xB439, 0x6729,
+    0xB410, 0x670B,
+    0xB3E8, 0x66ED,
+    0xB3C0, 0x66CF,
+    0xB397, 0x66B1,
+    0xB36F, 0x6693,
+    0xB347, 0x6675,
+    0xB31E, 0x6657,
+    0xB2F6, 0x6639,
+    0xB2CE, 0x661A,
+    0xB2A6, 0x65FC,
+    0xB27E, 0x65DD,
+    0xB256, 0x65BF,
+    0xB22E, 0x65A0,
+    0xB206, 0x6582,
+    0xB1DE, 0x6563,
+    0xB1B7, 0x6545,
+    0xB18F, 0x6526,
+    0xB167, 0x6507,
+    0xB140, 0x64E8,
+    0xB118, 0x64C9,
+    0xB0F0, 0x64AA,
+    0xB0C9, 0x648B,
+    0xB0A1, 0x646C,
+    0xB07A, 0x644D,
+    0xB053, 0x642D,
+    0xB02B, 0x640E,
+    0xB004, 0x63EF,
+    0xAFDD, 0x63CF,
+    0xAFB6, 0x63B0,
+    0xAF8F, 0x6390,
+    0xAF68, 0x6371,
+    0xAF40, 0x6351,
+    0xAF1A, 0x6331,
+    0xAEF3, 0x6311,
+    0xAECC, 0x62F2,
+    0xAEA5, 0x62D2,
+    0xAE7E, 0x62B2,
+    0xAE57, 0x6292,
+    0xAE31, 0x6271,
+    0xAE0A, 0x6251,
+    0xADE3, 0x6231,
+    0xADBD, 0x6211,
+    0xAD96, 0x61F1,
+    0xAD70, 0x61D0,
+    0xAD4A, 0x61B0,
+    0xAD23, 0x618F,
+    0xACFD, 0x616F,
+    0xACD7, 0x614E,
+    0xACB1, 0x612D,
+    0xAC8A, 0x610D,
+    0xAC64, 0x60EC,
+    0xAC3E, 0x60CB,
+    0xAC18, 0x60AA,
+    0xABF2, 0x6089,
+    0xABCC, 0x6068,
+    0xABA7, 0x6047,
+    0xAB81, 0x6026,
+    0xAB5B, 0x6004,
+    0xAB35, 0x5FE3,
+    0xAB10, 0x5FC2,
+    0xAAEA, 0x5FA0,
+    0xAAC5, 0x5F7F,
+    0xAA9F, 0x5F5E,
+    0xAA7A, 0x5F3C,
+    0xAA54, 0x5F1A,
+    0xAA2F, 0x5EF9,
+    0xAA0A, 0x5ED7,
+    0xA9E5, 0x5EB5,
+    0xA9BF, 0x5E93,
+    0xA99A, 0x5E71,
+    0xA975, 0x5E50,
+    0xA950, 0x5E2D,
+    0xA92B, 0x5E0B,
+    0xA906, 0x5DE9,
+    0xA8E2, 0x5DC7,
+    0xA8BD, 0x5DA5,
+    0xA898, 0x5D83,
+    0xA873, 0x5D60,
+    0xA84F, 0x5D3E,
+    0xA82A, 0x5D1B,
+    0xA806, 0x5CF9,
+    0xA7E1, 0x5CD6,
+    0xA7BD, 0x5CB4,
+    0xA798, 0x5C91,
+    0xA774, 0x5C6E,
+    0xA750, 0x5C4B,
+    0xA72B, 0x5C29,
+    0xA707, 0x5C06,
+    0xA6E3, 0x5BE3,
+    0xA6BF, 0x5BC0,
+    0xA69B, 0x5B9D,
+    0xA677, 0x5B79,
+    0xA653, 0x5B56,
+    0xA62F, 0x5B33,
+    0xA60C, 0x5B10,
+    0xA5E8, 0x5AEC,
+    0xA5C4, 0x5AC9,
+    0xA5A1, 0x5AA5,
+    0xA57D, 0x5A82,
+    0xA55A, 0x5A5E,
+    0xA536, 0x5A3B,
+    0xA513, 0x5A17,
+    0xA4EF, 0x59F3,
+    0xA4CC, 0x59D0,
+    0xA4A9, 0x59AC,
+    0xA486, 0x5988,
+    0xA462, 0x5964,
+    0xA43F, 0x5940,
+    0xA41C, 0x591C,
+    0xA3F9, 0x58F8,
+    0xA3D6, 0x58D4,
+    0xA3B4, 0x58AF,
+    0xA391, 0x588B,
+    0xA36E, 0x5867,
+    0xA34B, 0x5842,
+    0xA329, 0x581E,
+    0xA306, 0x57F9,
+    0xA2E4, 0x57D5,
+    0xA2C1, 0x57B0,
+    0xA29F, 0x578C,
+    0xA27C, 0x5767,
+    0xA25A, 0x5742,
+    0xA238, 0x571D,
+    0xA216, 0x56F9,
+    0xA1F4, 0x56D4,
+    0xA1D2, 0x56AF,
+    0xA1AF, 0x568A,
+    0xA18E, 0x5665,
+    0xA16C, 0x5640,
+    0xA14A, 0x561A,
+    0xA128, 0x55F5,
+    0xA106, 0x55D0,
+    0xA0E5, 0x55AB,
+    0xA0C3, 0x5585,
+    0xA0A1, 0x5560,
+    0xA080, 0x553A,
+    0xA05F, 0x5515,
+    0xA03D, 0x54EF,
+    0xA01C, 0x54CA,
+    0x9FFB, 0x54A4,
+    0x9FD9, 0x547E,
+    0x9FB8, 0x5458,
+    0x9F97, 0x5433,
+    0x9F76, 0x540D,
+    0x9F55, 0x53E7,
+    0x9F34, 0x53C1,
+    0x9F13, 0x539B,
+    0x9EF2, 0x5375,
+    0x9ED2, 0x534E,
+    0x9EB1, 0x5328,
+    0x9E90, 0x5302,
+    0x9E70, 0x52DC,
+    0x9E4F, 0x52B5,
+    0x9E2F, 0x528F,
+    0x9E0E, 0x5269,
+    0x9DEE, 0x5242,
+    0x9DCE, 0x521C,
+    0x9DAE, 0x51F5,
+    0x9D8E, 0x51CE,
+    0x9D6D, 0x51A8,
+    0x9D4D, 0x5181,
+    0x9D2D, 0x515A,
+    0x9D0D, 0x5133,
+    0x9CEE, 0x510C,
+    0x9CCE, 0x50E5,
+    0x9CAE, 0x50BF,
+    0x9C8E, 0x5097,
+    0x9C6F, 0x5070,
+    0x9C4F, 0x5049,
+    0x9C30, 0x5022,
+    0x9C10, 0x4FFB,
+    0x9BF1, 0x4FD4,
+    0x9BD2, 0x4FAC,
+    0x9BB2, 0x4F85,
+    0x9B93, 0x4F5E,
+    0x9B74, 0x4F36,
+    0x9B55, 0x4F0F,
+    0x9B36, 0x4EE7,
+    0x9B17, 0x4EBF,
+    0x9AF8, 0x4E98,
+    0x9AD9, 0x4E70,
+    0x9ABA, 0x4E48,
+    0x9A9C, 0x4E21,
+    0x9A7D, 0x4DF9,
+    0x9A5F, 0x4DD1,
+    0x9A40, 0x4DA9,
+    0x9A22, 0x4D81,
+    0x9A03, 0x4D59,
+    0x99E5, 0x4D31,
+    0x99C6, 0x4D09,
+    0x99A8, 0x4CE1,
+    0x998A, 0x4CB8,
+    0x996C, 0x4C90,
+    0x994E, 0x4C68,
+    0x9930, 0x4C3F,
+    0x9912, 0x4C17,
+    0x98F4, 0x4BEF,
+    0x98D6, 0x4BC6,
+    0x98B9, 0x4B9E,
+    0x989B, 0x4B75,
+    0x987D, 0x4B4C,
+    0x9860, 0x4B24,
+    0x9842, 0x4AFB,
+    0x9825, 0x4AD2,
+    0x9808, 0x4AA9,
+    0x97EA, 0x4A81,
+    0x97CD, 0x4A58,
+    0x97B0, 0x4A2F,
+    0x9793, 0x4A06,
+    0x9776, 0x49DD,
+    0x9759, 0x49B4,
+    0x973C, 0x498A,
+    0x971F, 0x4961,
+    0x9702, 0x4938,
+    0x96E6, 0x490F,
+    0x96C9, 0x48E6,
+    0x96AC, 0x48BC,
+    0x9690, 0x4893,
+    0x9673, 0x4869,
+    0x9657, 0x4840,
+    0x963B, 0x4816,
+    0x961E, 0x47ED,
+    0x9602, 0x47C3,
+    0x95E6, 0x479A,
+    0x95CA, 0x4770,
+    0x95AE, 0x4746,
+    0x9592, 0x471C,
+    0x9576, 0x46F3,
+    0x955A, 0x46C9,
+    0x953E, 0x469F,
+    0x9523, 0x4675,
+    0x9507, 0x464B,
+    0x94EC, 0x4621,
+    0x94D0, 0x45F7,
+    0x94B5, 0x45CD,
+    0x9499, 0x45A3,
+    0x947E, 0x4578,
+    0x9463, 0x454E,
+    0x9447, 0x4524,
+    0x942C, 0x44FA,
+    0x9411, 0x44CF,
+    0x93F6, 0x44A5,
+    0x93DB, 0x447A,
+    0x93C0, 0x4450,
+    0x93A6, 0x4425,
+    0x938B, 0x43FB,
+    0x9370, 0x43D0,
+    0x9356, 0x43A5,
+    0x933B, 0x437B,
+    0x9321, 0x4350,
+    0x9306, 0x4325,
+    0x92EC, 0x42FA,
+    0x92D2, 0x42D0,
+    0x92B7, 0x42A5,
+    0x929D, 0x427A,
+    0x9283, 0x424F,
+    0x9269, 0x4224,
+    0x924F, 0x41F9,
+    0x9235, 0x41CE,
+    0x921C, 0x41A2,
+    0x9202, 0x4177,
+    0x91E8, 0x414C,
+    0x91CF, 0x4121,
+    0x91B5, 0x40F6,
+    0x919C, 0x40CA,
+    0x9182, 0x409F,
+    0x9169, 0x4073,
+    0x9150, 0x4048,
+    0x9136, 0x401D,
+    0x911D, 0x3FF1,
+    0x9104, 0x3FC5,
+    0x90EB, 0x3F9A,
+    0x90D2, 0x3F6E,
+    0x90B9, 0x3F43,
+    0x90A0, 0x3F17,
+    0x9088, 0x3EEB,
+    0x906F, 0x3EBF,
+    0x9056, 0x3E93,
+    0x903E, 0x3E68,
+    0x9025, 0x3E3C,
+    0x900D, 0x3E10,
+    0x8FF5, 0x3DE4,
+    0x8FDC, 0x3DB8,
+    0x8FC4, 0x3D8C,
+    0x8FAC, 0x3D60,
+    0x8F94, 0x3D33,
+    0x8F7C, 0x3D07,
+    0x8F64, 0x3CDB,
+    0x8F4C, 0x3CAF,
+    0x8F34, 0x3C83,
+    0x8F1D, 0x3C56,
+    0x8F05, 0x3C2A,
+    0x8EED, 0x3BFD,
+    0x8ED6, 0x3BD1,
+    0x8EBE, 0x3BA5,
+    0x8EA7, 0x3B78,
+    0x8E90, 0x3B4C,
+    0x8E79, 0x3B1F,
+    0x8E61, 0x3AF2,
+    0x8E4A, 0x3AC6,
+    0x8E33, 0x3A99,
+    0x8E1C, 0x3A6C,
+    0x8E05, 0x3A40,
+    0x8DEE, 0x3A13,
+    0x8DD8, 0x39E6,
+    0x8DC1, 0x39B9,
+    0x8DAA, 0x398C,
+    0x8D94, 0x395F,
+    0x8D7D, 0x3932,
+    0x8D67, 0x3906,
+    0x8D50, 0x38D8,
+    0x8D3A, 0x38AB,
+    0x8D24, 0x387E,
+    0x8D0E, 0x3851,
+    0x8CF8, 0x3824,
+    0x8CE2, 0x37F7,
+    0x8CCC, 0x37CA,
+    0x8CB6, 0x379C,
+    0x8CA0, 0x376F,
+    0x8C8A, 0x3742,
+    0x8C75, 0x3714,
+    0x8C5F, 0x36E7,
+    0x8C4A, 0x36BA,
+    0x8C34, 0x368C,
+    0x8C1F, 0x365F,
+    0x8C09, 0x3631,
+    0x8BF4, 0x3604,
+    0x8BDF, 0x35D6,
+    0x8BCA, 0x35A8,
+    0x8BB5, 0x357B,
+    0x8BA0, 0x354D,
+    0x8B8B, 0x351F,
+    0x8B76, 0x34F2,
+    0x8B61, 0x34C4,
+    0x8B4D, 0x3496,
+    0x8B38, 0x3468,
+    0x8B24, 0x343A,
+    0x8B0F, 0x340C,
+    0x8AFB, 0x33DE,
+    0x8AE6, 0x33B0,
+    0x8AD2, 0x3382,
+    0x8ABE, 0x3354,
+    0x8AAA, 0x3326,
+    0x8A96, 0x32F8,
+    0x8A82, 0x32CA,
+    0x8A6E, 0x329C,
+    0x8A5A, 0x326E,
+    0x8A46, 0x3240,
+    0x8A33, 0x3211,
+    0x8A1F, 0x31E3,
+    0x8A0B, 0x31B5,
+    0x89F8, 0x3186,
+    0x89E4, 0x3158,
+    0x89D1, 0x312A,
+    0x89BE, 0x30FB,
+    0x89AB, 0x30CD,
+    0x8997, 0x309E,
+    0x8984, 0x3070,
+    0x8971, 0x3041,
+    0x895F, 0x3013,
+    0x894C, 0x2FE4,
+    0x8939, 0x2FB5,
+    0x8926, 0x2F87,
+    0x8914, 0x2F58,
+    0x8901, 0x2F29,
+    0x88EF, 0x2EFB,
+    0x88DC, 0x2ECC,
+    0x88CA, 0x2E9D,
+    0x88B8, 0x2E6E,
+    0x88A5, 0x2E3F,
+    0x8893, 0x2E11,
+    0x8881, 0x2DE2,
+    0x886F, 0x2DB3,
+    0x885D, 0x2D84,
+    0x884B, 0x2D55,
+    0x883A, 0x2D26,
+    0x8828, 0x2CF7,
+    0x8816, 0x2CC8,
+    0x8805, 0x2C98,
+    0x87F3, 0x2C69,
+    0x87E2, 0x2C3A,
+    0x87D1, 0x2C0B,
+    0x87BF, 0x2BDC,
+    0x87AE, 0x2BAD,
+    0x879D, 0x2B7D,
+    0x878C, 0x2B4E,
+    0x877B, 0x2B1F,
+    0x876A, 0x2AEF,
+    0x8759, 0x2AC0,
+    0x8749, 0x2A91,
+    0x8738, 0x2A61,
+    0x8727, 0x2A32,
+    0x8717, 0x2A02,
+    0x8706, 0x29D3,
+    0x86F6, 0x29A3,
+    0x86E6, 0x2974,
+    0x86D5, 0x2944,
+    0x86C5, 0x2915,
+    0x86B5, 0x28E5,
+    0x86A5, 0x28B5,
+    0x8695, 0x2886,
+    0x8685, 0x2856,
+    0x8675, 0x2826,
+    0x8666, 0x27F6,
+    0x8656, 0x27C7,
+    0x8646, 0x2797,
+    0x8637, 0x2767,
+    0x8627, 0x2737,
+    0x8618, 0x2707,
+    0x8609, 0x26D8,
+    0x85FA, 0x26A8,
+    0x85EA, 0x2678,
+    0x85DB, 0x2648,
+    0x85CC, 0x2618,
+    0x85BD, 0x25E8,
+    0x85AF, 0x25B8,
+    0x85A0, 0x2588,
+    0x8591, 0x2558,
+    0x8582, 0x2528,
+    0x8574, 0x24F7,
+    0x8565, 0x24C7,
+    0x8557, 0x2497,
+    0x8549, 0x2467,
+    0x853A, 0x2437,
+    0x852C, 0x2407,
+    0x851E, 0x23D6,
+    0x8510, 0x23A6,
+    0x8502, 0x2376,
+    0x84F4, 0x2345,
+    0x84E6, 0x2315,
+    0x84D9, 0x22E5,
+    0x84CB, 0x22B4,
+    0x84BD, 0x2284,
+    0x84B0, 0x2254,
+    0x84A2, 0x2223,
+    0x8495, 0x21F3,
+    0x8488, 0x21C2,
+    0x847B, 0x2192,
+    0x846D, 0x2161,
+    0x8460, 0x2131,
+    0x8453, 0x2100,
+    0x8446, 0x20D0,
+    0x843A, 0x209F,
+    0x842D, 0x206E,
+    0x8420, 0x203E,
+    0x8414, 0x200D,
+    0x8407, 0x1FDC,
+    0x83FA, 0x1FAC,
+    0x83EE, 0x1F7B,
+    0x83E2, 0x1F4A,
+    0x83D6, 0x1F19,
+    0x83C9, 0x1EE9,
+    0x83BD, 0x1EB8,
+    0x83B1, 0x1E87,
+    0x83A5, 0x1E56,
+    0x8399, 0x1E25,
+    0x838E, 0x1DF5,
+    0x8382, 0x1DC4,
+    0x8376, 0x1D93,
+    0x836B, 0x1D62,
+    0x835F, 0x1D31,
+    0x8354, 0x1D00,
+    0x8348, 0x1CCF,
+    0x833D, 0x1C9E,
+    0x8332, 0x1C6D,
+    0x8327, 0x1C3C,
+    0x831C, 0x1C0B,
+    0x8311, 0x1BDA,
+    0x8306, 0x1BA9,
+    0x82FB, 0x1B78,
+    0x82F0, 0x1B47,
+    0x82E6, 0x1B16,
+    0x82DB, 0x1AE4,
+    0x82D0, 0x1AB3,
+    0x82C6, 0x1A82,
+    0x82BC, 0x1A51,
+    0x82B1, 0x1A20,
+    0x82A7, 0x19EF,
+    0x829D, 0x19BD,
+    0x8293, 0x198C,
+    0x8289, 0x195B,
+    0x827F, 0x192A,
+    0x8275, 0x18F8,
+    0x826B, 0x18C7,
+    0x8262, 0x1896,
+    0x8258, 0x1864,
+    0x824F, 0x1833,
+    0x8245, 0x1802,
+    0x823C, 0x17D0,
+    0x8232, 0x179F,
+    0x8229, 0x176D,
+    0x8220, 0x173C,
+    0x8217, 0x170A,
+    0x820E, 0x16D9,
+    0x8205, 0x16A8,
+    0x81FC, 0x1676,
+    0x81F3, 0x1645,
+    0x81EB, 0x1613,
+    0x81E2, 0x15E2,
+    0x81D9, 0x15B0,
+    0x81D1, 0x157F,
+    0x81C8, 0x154D,
+    0x81C0, 0x151B,
+    0x81B8, 0x14EA,
+    0x81B0, 0x14B8,
+    0x81A8, 0x1487,
+    0x81A0, 0x1455,
+    0x8198, 0x1423,
+    0x8190, 0x13F2,
+    0x8188, 0x13C0,
+    0x8180, 0x138E,
+    0x8179, 0x135D,
+    0x8171, 0x132B,
+    0x816A, 0x12F9,
+    0x8162, 0x12C8,
+    0x815B, 0x1296,
+    0x8154, 0x1264,
+    0x814C, 0x1232,
+    0x8145, 0x1201,
+    0x813E, 0x11CF,
+    0x8137, 0x119D,
+    0x8130, 0x116B,
+    0x812A, 0x1139,
+    0x8123, 0x1108,
+    0x811C, 0x10D6,
+    0x8116, 0x10A4,
+    0x810F, 0x1072,
+    0x8109, 0x1040,
+    0x8102, 0x100E,
+    0x80FC, 0x0FDD,
+    0x80F6, 0x0FAB,
+    0x80F0, 0x0F79,
+    0x80EA, 0x0F47,
+    0x80E4, 0x0F15,
+    0x80DE, 0x0EE3,
+    0x80D8, 0x0EB1,
+    0x80D2, 0x0E7F,
+    0x80CD, 0x0E4D,
+    0x80C7, 0x0E1B,
+    0x80C2, 0x0DE9,
+    0x80BC, 0x0DB7,
+    0x80B7, 0x0D85,
+    0x80B2, 0x0D53,
+    0x80AC, 0x0D21,
+    0x80A7, 0x0CEF,
+    0x80A2, 0x0CBD,
+    0x809D, 0x0C8B,
+    0x8098, 0x0C59,
+    0x8094, 0x0C27,
+    0x808F, 0x0BF5,
+    0x808A, 0x0BC3,
+    0x8086, 0x0B91,
+    0x8081, 0x0B5F,
+    0x807D, 0x0B2D,
+    0x8078, 0x0AFB,
+    0x8074, 0x0AC9,
+    0x8070, 0x0A97,
+    0x806C, 0x0A65,
+    0x8068, 0x0A33,
+    0x8064, 0x0A00,
+    0x8060, 0x09CE,
+    0x805C, 0x099C,
+    0x8058, 0x096A,
+    0x8055, 0x0938,
+    0x8051, 0x0906,
+    0x804E, 0x08D4,
+    0x804A, 0x08A2,
+    0x8047, 0x086F,
+    0x8043, 0x083D,
+    0x8040, 0x080B,
+    0x803D, 0x07D9,
+    0x803A, 0x07A7,
+    0x8037, 0x0775,
+    0x8034, 0x0742,
+    0x8031, 0x0710,
+    0x802F, 0x06DE,
+    0x802C, 0x06AC,
+    0x8029, 0x067A,
+    0x8027, 0x0647,
+    0x8025, 0x0615,
+    0x8022, 0x05E3,
+    0x8020, 0x05B1,
+    0x801E, 0x057F,
+    0x801C, 0x054C,
+    0x801A, 0x051A,
+    0x8018, 0x04E8,
+    0x8016, 0x04B6,
+    0x8014, 0x0483,
+    0x8012, 0x0451,
+    0x8011, 0x041F,
+    0x800F, 0x03ED,
+    0x800D, 0x03BA,
+    0x800C, 0x0388,
+    0x800B, 0x0356,
+    0x8009, 0x0324,
+    0x8008, 0x02F1,
+    0x8007, 0x02BF,
+    0x8006, 0x028D,
+    0x8005, 0x025B,
+    0x8004, 0x0228,
+    0x8003, 0x01F6,
+    0x8003, 0x01C4,
+    0x8002, 0x0192,
+    0x8001, 0x015F,
+    0x8001, 0x012D,
+    0x8000, 0x00FB,
+    0x8000, 0x00C9,
+    0x8000, 0x0096,
+    0x8000, 0x0064,
+    0x8000, 0x0032,
+    0x8000, 0x0000,
+    0x8000, 0xFFCD,
+    0x8000, 0xFF9B,
+    0x8000, 0xFF69,
+    0x8000, 0xFF36,
+    0x8000, 0xFF04,
+    0x8001, 0xFED2,
+    0x8001, 0xFEA0,
+    0x8002, 0xFE6D,
+    0x8003, 0xFE3B,
+    0x8003, 0xFE09,
+    0x8004, 0xFDD7,
+    0x8005, 0xFDA4,
+    0x8006, 0xFD72,
+    0x8007, 0xFD40,
+    0x8008, 0xFD0E,
+    0x8009, 0xFCDB,
+    0x800B, 0xFCA9,
+    0x800C, 0xFC77,
+    0x800D, 0xFC45,
+    0x800F, 0xFC12,
+    0x8011, 0xFBE0,
+    0x8012, 0xFBAE,
+    0x8014, 0xFB7C,
+    0x8016, 0xFB49,
+    0x8018, 0xFB17,
+    0x801A, 0xFAE5,
+    0x801C, 0xFAB3,
+    0x801E, 0xFA80,
+    0x8020, 0xFA4E,
+    0x8022, 0xFA1C,
+    0x8025, 0xF9EA,
+    0x8027, 0xF9B8,
+    0x8029, 0xF985,
+    0x802C, 0xF953,
+    0x802F, 0xF921,
+    0x8031, 0xF8EF,
+    0x8034, 0xF8BD,
+    0x8037, 0xF88A,
+    0x803A, 0xF858,
+    0x803D, 0xF826,
+    0x8040, 0xF7F4,
+    0x8043, 0xF7C2,
+    0x8047, 0xF790,
+    0x804A, 0xF75D,
+    0x804E, 0xF72B,
+    0x8051, 0xF6F9,
+    0x8055, 0xF6C7,
+    0x8058, 0xF695,
+    0x805C, 0xF663,
+    0x8060, 0xF631,
+    0x8064, 0xF5FF,
+    0x8068, 0xF5CC,
+    0x806C, 0xF59A,
+    0x8070, 0xF568,
+    0x8074, 0xF536,
+    0x8078, 0xF504,
+    0x807D, 0xF4D2,
+    0x8081, 0xF4A0,
+    0x8086, 0xF46E,
+    0x808A, 0xF43C,
+    0x808F, 0xF40A,
+    0x8094, 0xF3D8,
+    0x8098, 0xF3A6,
+    0x809D, 0xF374,
+    0x80A2, 0xF342,
+    0x80A7, 0xF310,
+    0x80AC, 0xF2DE,
+    0x80B2, 0xF2AC,
+    0x80B7, 0xF27A,
+    0x80BC, 0xF248,
+    0x80C2, 0xF216,
+    0x80C7, 0xF1E4,
+    0x80CD, 0xF1B2,
+    0x80D2, 0xF180,
+    0x80D8, 0xF14E,
+    0x80DE, 0xF11C,
+    0x80E4, 0xF0EA,
+    0x80EA, 0xF0B8,
+    0x80F0, 0xF086,
+    0x80F6, 0xF054,
+    0x80FC, 0xF022,
+    0x8102, 0xEFF1,
+    0x8109, 0xEFBF,
+    0x810F, 0xEF8D,
+    0x8116, 0xEF5B,
+    0x811C, 0xEF29,
+    0x8123, 0xEEF7,
+    0x812A, 0xEEC6,
+    0x8130, 0xEE94,
+    0x8137, 0xEE62,
+    0x813E, 0xEE30,
+    0x8145, 0xEDFE,
+    0x814C, 0xEDCD,
+    0x8154, 0xED9B,
+    0x815B, 0xED69,
+    0x8162, 0xED37,
+    0x816A, 0xED06,
+    0x8171, 0xECD4,
+    0x8179, 0xECA2,
+    0x8180, 0xEC71,
+    0x8188, 0xEC3F,
+    0x8190, 0xEC0D,
+    0x8198, 0xEBDC,
+    0x81A0, 0xEBAA,
+    0x81A8, 0xEB78,
+    0x81B0, 0xEB47,
+    0x81B8, 0xEB15,
+    0x81C0, 0xEAE4,
+    0x81C8, 0xEAB2,
+    0x81D1, 0xEA80,
+    0x81D9, 0xEA4F,
+    0x81E2, 0xEA1D,
+    0x81EB, 0xE9EC,
+    0x81F3, 0xE9BA,
+    0x81FC, 0xE989,
+    0x8205, 0xE957,
+    0x820E, 0xE926,
+    0x8217, 0xE8F5,
+    0x8220, 0xE8C3,
+    0x8229, 0xE892,
+    0x8232, 0xE860,
+    0x823C, 0xE82F,
+    0x8245, 0xE7FD,
+    0x824F, 0xE7CC,
+    0x8258, 0xE79B,
+    0x8262, 0xE769,
+    0x826B, 0xE738,
+    0x8275, 0xE707,
+    0x827F, 0xE6D5,
+    0x8289, 0xE6A4,
+    0x8293, 0xE673,
+    0x829D, 0xE642,
+    0x82A7, 0xE610,
+    0x82B1, 0xE5DF,
+    0x82BC, 0xE5AE,
+    0x82C6, 0xE57D,
+    0x82D0, 0xE54C,
+    0x82DB, 0xE51B,
+    0x82E6, 0xE4E9,
+    0x82F0, 0xE4B8,
+    0x82FB, 0xE487,
+    0x8306, 0xE456,
+    0x8311, 0xE425,
+    0x831C, 0xE3F4,
+    0x8327, 0xE3C3,
+    0x8332, 0xE392,
+    0x833D, 0xE361,
+    0x8348, 0xE330,
+    0x8354, 0xE2FF,
+    0x835F, 0xE2CE,
+    0x836B, 0xE29D,
+    0x8376, 0xE26C,
+    0x8382, 0xE23B,
+    0x838E, 0xE20A,
+    0x8399, 0xE1DA,
+    0x83A5, 0xE1A9,
+    0x83B1, 0xE178,
+    0x83BD, 0xE147,
+    0x83C9, 0xE116,
+    0x83D6, 0xE0E6,
+    0x83E2, 0xE0B5,
+    0x83EE, 0xE084,
+    0x83FA, 0xE053,
+    0x8407, 0xE023,
+    0x8414, 0xDFF2,
+    0x8420, 0xDFC1,
+    0x842D, 0xDF91,
+    0x843A, 0xDF60,
+    0x8446, 0xDF2F,
+    0x8453, 0xDEFF,
+    0x8460, 0xDECE,
+    0x846D, 0xDE9E,
+    0x847B, 0xDE6D,
+    0x8488, 0xDE3D,
+    0x8495, 0xDE0C,
+    0x84A2, 0xDDDC,
+    0x84B0, 0xDDAB,
+    0x84BD, 0xDD7B,
+    0x84CB, 0xDD4B,
+    0x84D9, 0xDD1A,
+    0x84E6, 0xDCEA,
+    0x84F4, 0xDCBA,
+    0x8502, 0xDC89,
+    0x8510, 0xDC59,
+    0x851E, 0xDC29,
+    0x852C, 0xDBF8,
+    0x853A, 0xDBC8,
+    0x8549, 0xDB98,
+    0x8557, 0xDB68,
+    0x8565, 0xDB38,
+    0x8574, 0xDB08,
+    0x8582, 0xDAD7,
+    0x8591, 0xDAA7,
+    0x85A0, 0xDA77,
+    0x85AF, 0xDA47,
+    0x85BD, 0xDA17,
+    0x85CC, 0xD9E7,
+    0x85DB, 0xD9B7,
+    0x85EA, 0xD987,
+    0x85FA, 0xD957,
+    0x8609, 0xD927,
+    0x8618, 0xD8F8,
+    0x8627, 0xD8C8,
+    0x8637, 0xD898,
+    0x8646, 0xD868,
+    0x8656, 0xD838,
+    0x8666, 0xD809,
+    0x8675, 0xD7D9,
+    0x8685, 0xD7A9,
+    0x8695, 0xD779,
+    0x86A5, 0xD74A,
+    0x86B5, 0xD71A,
+    0x86C5, 0xD6EA,
+    0x86D5, 0xD6BB,
+    0x86E6, 0xD68B,
+    0x86F6, 0xD65C,
+    0x8706, 0xD62C,
+    0x8717, 0xD5FD,
+    0x8727, 0xD5CD,
+    0x8738, 0xD59E,
+    0x8749, 0xD56E,
+    0x8759, 0xD53F,
+    0x876A, 0xD510,
+    0x877B, 0xD4E0,
+    0x878C, 0xD4B1,
+    0x879D, 0xD482,
+    0x87AE, 0xD452,
+    0x87BF, 0xD423,
+    0x87D1, 0xD3F4,
+    0x87E2, 0xD3C5,
+    0x87F3, 0xD396,
+    0x8805, 0xD367,
+    0x8816, 0xD337,
+    0x8828, 0xD308,
+    0x883A, 0xD2D9,
+    0x884B, 0xD2AA,
+    0x885D, 0xD27B,
+    0x886F, 0xD24C,
+    0x8881, 0xD21D,
+    0x8893, 0xD1EE,
+    0x88A5, 0xD1C0,
+    0x88B8, 0xD191,
+    0x88CA, 0xD162,
+    0x88DC, 0xD133,
+    0x88EF, 0xD104,
+    0x8901, 0xD0D6,
+    0x8914, 0xD0A7,
+    0x8926, 0xD078,
+    0x8939, 0xD04A,
+    0x894C, 0xD01B,
+    0x895F, 0xCFEC,
+    0x8971, 0xCFBE,
+    0x8984, 0xCF8F,
+    0x8997, 0xCF61,
+    0x89AB, 0xCF32,
+    0x89BE, 0xCF04,
+    0x89D1, 0xCED5,
+    0x89E4, 0xCEA7,
+    0x89F8, 0xCE79,
+    0x8A0B, 0xCE4A,
+    0x8A1F, 0xCE1C,
+    0x8A33, 0xCDEE,
+    0x8A46, 0xCDBF,
+    0x8A5A, 0xCD91,
+    0x8A6E, 0xCD63,
+    0x8A82, 0xCD35,
+    0x8A96, 0xCD07,
+    0x8AAA, 0xCCD9,
+    0x8ABE, 0xCCAB,
+    0x8AD2, 0xCC7D,
+    0x8AE6, 0xCC4F,
+    0x8AFB, 0xCC21,
+    0x8B0F, 0xCBF3,
+    0x8B24, 0xCBC5,
+    0x8B38, 0xCB97,
+    0x8B4D, 0xCB69,
+    0x8B61, 0xCB3B,
+    0x8B76, 0xCB0D,
+    0x8B8B, 0xCAE0,
+    0x8BA0, 0xCAB2,
+    0x8BB5, 0xCA84,
+    0x8BCA, 0xCA57,
+    0x8BDF, 0xCA29,
+    0x8BF4, 0xC9FB,
+    0x8C09, 0xC9CE,
+    0x8C1F, 0xC9A0,
+    0x8C34, 0xC973,
+    0x8C4A, 0xC945,
+    0x8C5F, 0xC918,
+    0x8C75, 0xC8EB,
+    0x8C8A, 0xC8BD,
+    0x8CA0, 0xC890,
+    0x8CB6, 0xC863,
+    0x8CCC, 0xC835,
+    0x8CE2, 0xC808,
+    0x8CF8, 0xC7DB,
+    0x8D0E, 0xC7AE,
+    0x8D24, 0xC781,
+    0x8D3A, 0xC754,
+    0x8D50, 0xC727,
+    0x8D67, 0xC6F9,
+    0x8D7D, 0xC6CD,
+    0x8D94, 0xC6A0,
+    0x8DAA, 0xC673,
+    0x8DC1, 0xC646,
+    0x8DD8, 0xC619,
+    0x8DEE, 0xC5EC,
+    0x8E05, 0xC5BF,
+    0x8E1C, 0xC593,
+    0x8E33, 0xC566,
+    0x8E4A, 0xC539,
+    0x8E61, 0xC50D,
+    0x8E79, 0xC4E0,
+    0x8E90, 0xC4B3,
+    0x8EA7, 0xC487,
+    0x8EBE, 0xC45A,
+    0x8ED6, 0xC42E,
+    0x8EED, 0xC402,
+    0x8F05, 0xC3D5,
+    0x8F1D, 0xC3A9,
+    0x8F34, 0xC37C,
+    0x8F4C, 0xC350,
+    0x8F64, 0xC324,
+    0x8F7C, 0xC2F8,
+    0x8F94, 0xC2CC,
+    0x8FAC, 0xC29F,
+    0x8FC4, 0xC273,
+    0x8FDC, 0xC247,
+    0x8FF5, 0xC21B,
+    0x900D, 0xC1EF,
+    0x9025, 0xC1C3,
+    0x903E, 0xC197,
+    0x9056, 0xC16C,
+    0x906F, 0xC140,
+    0x9088, 0xC114,
+    0x90A0, 0xC0E8,
+    0x90B9, 0xC0BC,
+    0x90D2, 0xC091,
+    0x90EB, 0xC065,
+    0x9104, 0xC03A,
+    0x911D, 0xC00E,
+    0x9136, 0xBFE2,
+    0x9150, 0xBFB7,
+    0x9169, 0xBF8C,
+    0x9182, 0xBF60,
+    0x919C, 0xBF35,
+    0x91B5, 0xBF09,
+    0x91CF, 0xBEDE,
+    0x91E8, 0xBEB3,
+    0x9202, 0xBE88,
+    0x921C, 0xBE5D,
+    0x9235, 0xBE31,
+    0x924F, 0xBE06,
+    0x9269, 0xBDDB,
+    0x9283, 0xBDB0,
+    0x929D, 0xBD85,
+    0x92B7, 0xBD5A,
+    0x92D2, 0xBD2F,
+    0x92EC, 0xBD05,
+    0x9306, 0xBCDA,
+    0x9321, 0xBCAF,
+    0x933B, 0xBC84,
+    0x9356, 0xBC5A,
+    0x9370, 0xBC2F,
+    0x938B, 0xBC04,
+    0x93A6, 0xBBDA,
+    0x93C0, 0xBBAF,
+    0x93DB, 0xBB85,
+    0x93F6, 0xBB5A,
+    0x9411, 0xBB30,
+    0x942C, 0xBB05,
+    0x9447, 0xBADB,
+    0x9463, 0xBAB1,
+    0x947E, 0xBA87,
+    0x9499, 0xBA5C,
+    0x94B5, 0xBA32,
+    0x94D0, 0xBA08,
+    0x94EC, 0xB9DE,
+    0x9507, 0xB9B4,
+    0x9523, 0xB98A,
+    0x953E, 0xB960,
+    0x955A, 0xB936,
+    0x9576, 0xB90C,
+    0x9592, 0xB8E3,
+    0x95AE, 0xB8B9,
+    0x95CA, 0xB88F,
+    0x95E6, 0xB865,
+    0x9602, 0xB83C,
+    0x961E, 0xB812,
+    0x963B, 0xB7E9,
+    0x9657, 0xB7BF,
+    0x9673, 0xB796,
+    0x9690, 0xB76C,
+    0x96AC, 0xB743,
+    0x96C9, 0xB719,
+    0x96E6, 0xB6F0,
+    0x9702, 0xB6C7,
+    0x971F, 0xB69E,
+    0x973C, 0xB675,
+    0x9759, 0xB64B,
+    0x9776, 0xB622,
+    0x9793, 0xB5F9,
+    0x97B0, 0xB5D0,
+    0x97CD, 0xB5A7,
+    0x97EA, 0xB57E,
+    0x9808, 0xB556,
+    0x9825, 0xB52D,
+    0x9842, 0xB504,
+    0x9860, 0xB4DB,
+    0x987D, 0xB4B3,
+    0x989B, 0xB48A,
+    0x98B9, 0xB461,
+    0x98D6, 0xB439,
+    0x98F4, 0xB410,
+    0x9912, 0xB3E8,
+    0x9930, 0xB3C0,
+    0x994E, 0xB397,
+    0x996C, 0xB36F,
+    0x998A, 0xB347,
+    0x99A8, 0xB31E,
+    0x99C6, 0xB2F6,
+    0x99E5, 0xB2CE,
+    0x9A03, 0xB2A6,
+    0x9A22, 0xB27E,
+    0x9A40, 0xB256,
+    0x9A5F, 0xB22E,
+    0x9A7D, 0xB206,
+    0x9A9C, 0xB1DE,
+    0x9ABA, 0xB1B7,
+    0x9AD9, 0xB18F,
+    0x9AF8, 0xB167,
+    0x9B17, 0xB140,
+    0x9B36, 0xB118,
+    0x9B55, 0xB0F0,
+    0x9B74, 0xB0C9,
+    0x9B93, 0xB0A1,
+    0x9BB2, 0xB07A,
+    0x9BD2, 0xB053,
+    0x9BF1, 0xB02B,
+    0x9C10, 0xB004,
+    0x9C30, 0xAFDD,
+    0x9C4F, 0xAFB6,
+    0x9C6F, 0xAF8F,
+    0x9C8E, 0xAF68,
+    0x9CAE, 0xAF40,
+    0x9CCE, 0xAF1A,
+    0x9CEE, 0xAEF3,
+    0x9D0D, 0xAECC,
+    0x9D2D, 0xAEA5,
+    0x9D4D, 0xAE7E,
+    0x9D6D, 0xAE57,
+    0x9D8E, 0xAE31,
+    0x9DAE, 0xAE0A,
+    0x9DCE, 0xADE3,
+    0x9DEE, 0xADBD,
+    0x9E0E, 0xAD96,
+    0x9E2F, 0xAD70,
+    0x9E4F, 0xAD4A,
+    0x9E70, 0xAD23,
+    0x9E90, 0xACFD,
+    0x9EB1, 0xACD7,
+    0x9ED2, 0xACB1,
+    0x9EF2, 0xAC8A,
+    0x9F13, 0xAC64,
+    0x9F34, 0xAC3E,
+    0x9F55, 0xAC18,
+    0x9F76, 0xABF2,
+    0x9F97, 0xABCC,
+    0x9FB8, 0xABA7,
+    0x9FD9, 0xAB81,
+    0x9FFB, 0xAB5B,
+    0xA01C, 0xAB35,
+    0xA03D, 0xAB10,
+    0xA05F, 0xAAEA,
+    0xA080, 0xAAC5,
+    0xA0A1, 0xAA9F,
+    0xA0C3, 0xAA7A,
+    0xA0E5, 0xAA54,
+    0xA106, 0xAA2F,
+    0xA128, 0xAA0A,
+    0xA14A, 0xA9E5,
+    0xA16C, 0xA9BF,
+    0xA18E, 0xA99A,
+    0xA1AF, 0xA975,
+    0xA1D2, 0xA950,
+    0xA1F4, 0xA92B,
+    0xA216, 0xA906,
+    0xA238, 0xA8E2,
+    0xA25A, 0xA8BD,
+    0xA27C, 0xA898,
+    0xA29F, 0xA873,
+    0xA2C1, 0xA84F,
+    0xA2E4, 0xA82A,
+    0xA306, 0xA806,
+    0xA329, 0xA7E1,
+    0xA34B, 0xA7BD,
+    0xA36E, 0xA798,
+    0xA391, 0xA774,
+    0xA3B4, 0xA750,
+    0xA3D6, 0xA72B,
+    0xA3F9, 0xA707,
+    0xA41C, 0xA6E3,
+    0xA43F, 0xA6BF,
+    0xA462, 0xA69B,
+    0xA486, 0xA677,
+    0xA4A9, 0xA653,
+    0xA4CC, 0xA62F,
+    0xA4EF, 0xA60C,
+    0xA513, 0xA5E8,
+    0xA536, 0xA5C4,
+    0xA55A, 0xA5A1,
+    0xA57D, 0xA57D,
+    0xA5A1, 0xA55A,
+    0xA5C4, 0xA536,
+    0xA5E8, 0xA513,
+    0xA60C, 0xA4EF,
+    0xA62F, 0xA4CC,
+    0xA653, 0xA4A9,
+    0xA677, 0xA486,
+    0xA69B, 0xA462,
+    0xA6BF, 0xA43F,
+    0xA6E3, 0xA41C,
+    0xA707, 0xA3F9,
+    0xA72B, 0xA3D6,
+    0xA750, 0xA3B4,
+    0xA774, 0xA391,
+    0xA798, 0xA36E,
+    0xA7BD, 0xA34B,
+    0xA7E1, 0xA329,
+    0xA806, 0xA306,
+    0xA82A, 0xA2E4,
+    0xA84F, 0xA2C1,
+    0xA873, 0xA29F,
+    0xA898, 0xA27C,
+    0xA8BD, 0xA25A,
+    0xA8E2, 0xA238,
+    0xA906, 0xA216,
+    0xA92B, 0xA1F4,
+    0xA950, 0xA1D2,
+    0xA975, 0xA1AF,
+    0xA99A, 0xA18E,
+    0xA9BF, 0xA16C,
+    0xA9E5, 0xA14A,
+    0xAA0A, 0xA128,
+    0xAA2F, 0xA106,
+    0xAA54, 0xA0E5,
+    0xAA7A, 0xA0C3,
+    0xAA9F, 0xA0A1,
+    0xAAC5, 0xA080,
+    0xAAEA, 0xA05F,
+    0xAB10, 0xA03D,
+    0xAB35, 0xA01C,
+    0xAB5B, 0x9FFB,
+    0xAB81, 0x9FD9,
+    0xABA7, 0x9FB8,
+    0xABCC, 0x9F97,
+    0xABF2, 0x9F76,
+    0xAC18, 0x9F55,
+    0xAC3E, 0x9F34,
+    0xAC64, 0x9F13,
+    0xAC8A, 0x9EF2,
+    0xACB1, 0x9ED2,
+    0xACD7, 0x9EB1,
+    0xACFD, 0x9E90,
+    0xAD23, 0x9E70,
+    0xAD4A, 0x9E4F,
+    0xAD70, 0x9E2F,
+    0xAD96, 0x9E0E,
+    0xADBD, 0x9DEE,
+    0xADE3, 0x9DCE,
+    0xAE0A, 0x9DAE,
+    0xAE31, 0x9D8E,
+    0xAE57, 0x9D6D,
+    0xAE7E, 0x9D4D,
+    0xAEA5, 0x9D2D,
+    0xAECC, 0x9D0D,
+    0xAEF3, 0x9CEE,
+    0xAF1A, 0x9CCE,
+    0xAF40, 0x9CAE,
+    0xAF68, 0x9C8E,
+    0xAF8F, 0x9C6F,
+    0xAFB6, 0x9C4F,
+    0xAFDD, 0x9C30,
+    0xB004, 0x9C10,
+    0xB02B, 0x9BF1,
+    0xB053, 0x9BD2,
+    0xB07A, 0x9BB2,
+    0xB0A1, 0x9B93,
+    0xB0C9, 0x9B74,
+    0xB0F0, 0x9B55,
+    0xB118, 0x9B36,
+    0xB140, 0x9B17,
+    0xB167, 0x9AF8,
+    0xB18F, 0x9AD9,
+    0xB1B7, 0x9ABA,
+    0xB1DE, 0x9A9C,
+    0xB206, 0x9A7D,
+    0xB22E, 0x9A5F,
+    0xB256, 0x9A40,
+    0xB27E, 0x9A22,
+    0xB2A6, 0x9A03,
+    0xB2CE, 0x99E5,
+    0xB2F6, 0x99C6,
+    0xB31E, 0x99A8,
+    0xB347, 0x998A,
+    0xB36F, 0x996C,
+    0xB397, 0x994E,
+    0xB3C0, 0x9930,
+    0xB3E8, 0x9912,
+    0xB410, 0x98F4,
+    0xB439, 0x98D6,
+    0xB461, 0x98B9,
+    0xB48A, 0x989B,
+    0xB4B3, 0x987D,
+    0xB4DB, 0x9860,
+    0xB504, 0x9842,
+    0xB52D, 0x9825,
+    0xB556, 0x9808,
+    0xB57E, 0x97EA,
+    0xB5A7, 0x97CD,
+    0xB5D0, 0x97B0,
+    0xB5F9, 0x9793,
+    0xB622, 0x9776,
+    0xB64B, 0x9759,
+    0xB675, 0x973C,
+    0xB69E, 0x971F,
+    0xB6C7, 0x9702,
+    0xB6F0, 0x96E6,
+    0xB719, 0x96C9,
+    0xB743, 0x96AC,
+    0xB76C, 0x9690,
+    0xB796, 0x9673,
+    0xB7BF, 0x9657,
+    0xB7E9, 0x963B,
+    0xB812, 0x961E,
+    0xB83C, 0x9602,
+    0xB865, 0x95E6,
+    0xB88F, 0x95CA,
+    0xB8B9, 0x95AE,
+    0xB8E3, 0x9592,
+    0xB90C, 0x9576,
+    0xB936, 0x955A,
+    0xB960, 0x953E,
+    0xB98A, 0x9523,
+    0xB9B4, 0x9507,
+    0xB9DE, 0x94EC,
+    0xBA08, 0x94D0,
+    0xBA32, 0x94B5,
+    0xBA5C, 0x9499,
+    0xBA87, 0x947E,
+    0xBAB1, 0x9463,
+    0xBADB, 0x9447,
+    0xBB05, 0x942C,
+    0xBB30, 0x9411,
+    0xBB5A, 0x93F6,
+    0xBB85, 0x93DB,
+    0xBBAF, 0x93C0,
+    0xBBDA, 0x93A6,
+    0xBC04, 0x938B,
+    0xBC2F, 0x9370,
+    0xBC5A, 0x9356,
+    0xBC84, 0x933B,
+    0xBCAF, 0x9321,
+    0xBCDA, 0x9306,
+    0xBD05, 0x92EC,
+    0xBD2F, 0x92D2,
+    0xBD5A, 0x92B7,
+    0xBD85, 0x929D,
+    0xBDB0, 0x9283,
+    0xBDDB, 0x9269,
+    0xBE06, 0x924F,
+    0xBE31, 0x9235,
+    0xBE5D, 0x921C,
+    0xBE88, 0x9202,
+    0xBEB3, 0x91E8,
+    0xBEDE, 0x91CF,
+    0xBF09, 0x91B5,
+    0xBF35, 0x919C,
+    0xBF60, 0x9182,
+    0xBF8C, 0x9169,
+    0xBFB7, 0x9150,
+    0xBFE2, 0x9136,
+    0xC00E, 0x911D,
+    0xC03A, 0x9104,
+    0xC065, 0x90EB,
+    0xC091, 0x90D2,
+    0xC0BC, 0x90B9,
+    0xC0E8, 0x90A0,
+    0xC114, 0x9088,
+    0xC140, 0x906F,
+    0xC16C, 0x9056,
+    0xC197, 0x903E,
+    0xC1C3, 0x9025,
+    0xC1EF, 0x900D,
+    0xC21B, 0x8FF5,
+    0xC247, 0x8FDC,
+    0xC273, 0x8FC4,
+    0xC29F, 0x8FAC,
+    0xC2CC, 0x8F94,
+    0xC2F8, 0x8F7C,
+    0xC324, 0x8F64,
+    0xC350, 0x8F4C,
+    0xC37C, 0x8F34,
+    0xC3A9, 0x8F1D,
+    0xC3D5, 0x8F05,
+    0xC402, 0x8EED,
+    0xC42E, 0x8ED6,
+    0xC45A, 0x8EBE,
+    0xC487, 0x8EA7,
+    0xC4B3, 0x8E90,
+    0xC4E0, 0x8E79,
+    0xC50D, 0x8E61,
+    0xC539, 0x8E4A,
+    0xC566, 0x8E33,
+    0xC593, 0x8E1C,
+    0xC5BF, 0x8E05,
+    0xC5EC, 0x8DEE,
+    0xC619, 0x8DD8,
+    0xC646, 0x8DC1,
+    0xC673, 0x8DAA,
+    0xC6A0, 0x8D94,
+    0xC6CD, 0x8D7D,
+    0xC6F9, 0x8D67,
+    0xC727, 0x8D50,
+    0xC754, 0x8D3A,
+    0xC781, 0x8D24,
+    0xC7AE, 0x8D0E,
+    0xC7DB, 0x8CF8,
+    0xC808, 0x8CE2,
+    0xC835, 0x8CCC,
+    0xC863, 0x8CB6,
+    0xC890, 0x8CA0,
+    0xC8BD, 0x8C8A,
+    0xC8EB, 0x8C75,
+    0xC918, 0x8C5F,
+    0xC945, 0x8C4A,
+    0xC973, 0x8C34,
+    0xC9A0, 0x8C1F,
+    0xC9CE, 0x8C09,
+    0xC9FB, 0x8BF4,
+    0xCA29, 0x8BDF,
+    0xCA57, 0x8BCA,
+    0xCA84, 0x8BB5,
+    0xCAB2, 0x8BA0,
+    0xCAE0, 0x8B8B,
+    0xCB0D, 0x8B76,
+    0xCB3B, 0x8B61,
+    0xCB69, 0x8B4D,
+    0xCB97, 0x8B38,
+    0xCBC5, 0x8B24,
+    0xCBF3, 0x8B0F,
+    0xCC21, 0x8AFB,
+    0xCC4F, 0x8AE6,
+    0xCC7D, 0x8AD2,
+    0xCCAB, 0x8ABE,
+    0xCCD9, 0x8AAA,
+    0xCD07, 0x8A96,
+    0xCD35, 0x8A82,
+    0xCD63, 0x8A6E,
+    0xCD91, 0x8A5A,
+    0xCDBF, 0x8A46,
+    0xCDEE, 0x8A33,
+    0xCE1C, 0x8A1F,
+    0xCE4A, 0x8A0B,
+    0xCE79, 0x89F8,
+    0xCEA7, 0x89E4,
+    0xCED5, 0x89D1,
+    0xCF04, 0x89BE,
+    0xCF32, 0x89AB,
+    0xCF61, 0x8997,
+    0xCF8F, 0x8984,
+    0xCFBE, 0x8971,
+    0xCFEC, 0x895F,
+    0xD01B, 0x894C,
+    0xD04A, 0x8939,
+    0xD078, 0x8926,
+    0xD0A7, 0x8914,
+    0xD0D6, 0x8901,
+    0xD104, 0x88EF,
+    0xD133, 0x88DC,
+    0xD162, 0x88CA,
+    0xD191, 0x88B8,
+    0xD1C0, 0x88A5,
+    0xD1EE, 0x8893,
+    0xD21D, 0x8881,
+    0xD24C, 0x886F,
+    0xD27B, 0x885D,
+    0xD2AA, 0x884B,
+    0xD2D9, 0x883A,
+    0xD308, 0x8828,
+    0xD337, 0x8816,
+    0xD367, 0x8805,
+    0xD396, 0x87F3,
+    0xD3C5, 0x87E2,
+    0xD3F4, 0x87D1,
+    0xD423, 0x87BF,
+    0xD452, 0x87AE,
+    0xD482, 0x879D,
+    0xD4B1, 0x878C,
+    0xD4E0, 0x877B,
+    0xD510, 0x876A,
+    0xD53F, 0x8759,
+    0xD56E, 0x8749,
+    0xD59E, 0x8738,
+    0xD5CD, 0x8727,
+    0xD5FD, 0x8717,
+    0xD62C, 0x8706,
+    0xD65C, 0x86F6,
+    0xD68B, 0x86E6,
+    0xD6BB, 0x86D5,
+    0xD6EA, 0x86C5,
+    0xD71A, 0x86B5,
+    0xD74A, 0x86A5,
+    0xD779, 0x8695,
+    0xD7A9, 0x8685,
+    0xD7D9, 0x8675,
+    0xD809, 0x8666,
+    0xD838, 0x8656,
+    0xD868, 0x8646,
+    0xD898, 0x8637,
+    0xD8C8, 0x8627,
+    0xD8F8, 0x8618,
+    0xD927, 0x8609,
+    0xD957, 0x85FA,
+    0xD987, 0x85EA,
+    0xD9B7, 0x85DB,
+    0xD9E7, 0x85CC,
+    0xDA17, 0x85BD,
+    0xDA47, 0x85AF,
+    0xDA77, 0x85A0,
+    0xDAA7, 0x8591,
+    0xDAD7, 0x8582,
+    0xDB08, 0x8574,
+    0xDB38, 0x8565,
+    0xDB68, 0x8557,
+    0xDB98, 0x8549,
+    0xDBC8, 0x853A,
+    0xDBF8, 0x852C,
+    0xDC29, 0x851E,
+    0xDC59, 0x8510,
+    0xDC89, 0x8502,
+    0xDCBA, 0x84F4,
+    0xDCEA, 0x84E6,
+    0xDD1A, 0x84D9,
+    0xDD4B, 0x84CB,
+    0xDD7B, 0x84BD,
+    0xDDAB, 0x84B0,
+    0xDDDC, 0x84A2,
+    0xDE0C, 0x8495,
+    0xDE3D, 0x8488,
+    0xDE6D, 0x847B,
+    0xDE9E, 0x846D,
+    0xDECE, 0x8460,
+    0xDEFF, 0x8453,
+    0xDF2F, 0x8446,
+    0xDF60, 0x843A,
+    0xDF91, 0x842D,
+    0xDFC1, 0x8420,
+    0xDFF2, 0x8414,
+    0xE023, 0x8407,
+    0xE053, 0x83FA,
+    0xE084, 0x83EE,
+    0xE0B5, 0x83E2,
+    0xE0E6, 0x83D6,
+    0xE116, 0x83C9,
+    0xE147, 0x83BD,
+    0xE178, 0x83B1,
+    0xE1A9, 0x83A5,
+    0xE1DA, 0x8399,
+    0xE20A, 0x838E,
+    0xE23B, 0x8382,
+    0xE26C, 0x8376,
+    0xE29D, 0x836B,
+    0xE2CE, 0x835F,
+    0xE2FF, 0x8354,
+    0xE330, 0x8348,
+    0xE361, 0x833D,
+    0xE392, 0x8332,
+    0xE3C3, 0x8327,
+    0xE3F4, 0x831C,
+    0xE425, 0x8311,
+    0xE456, 0x8306,
+    0xE487, 0x82FB,
+    0xE4B8, 0x82F0,
+    0xE4E9, 0x82E6,
+    0xE51B, 0x82DB,
+    0xE54C, 0x82D0,
+    0xE57D, 0x82C6,
+    0xE5AE, 0x82BC,
+    0xE5DF, 0x82B1,
+    0xE610, 0x82A7,
+    0xE642, 0x829D,
+    0xE673, 0x8293,
+    0xE6A4, 0x8289,
+    0xE6D5, 0x827F,
+    0xE707, 0x8275,
+    0xE738, 0x826B,
+    0xE769, 0x8262,
+    0xE79B, 0x8258,
+    0xE7CC, 0x824F,
+    0xE7FD, 0x8245,
+    0xE82F, 0x823C,
+    0xE860, 0x8232,
+    0xE892, 0x8229,
+    0xE8C3, 0x8220,
+    0xE8F5, 0x8217,
+    0xE926, 0x820E,
+    0xE957, 0x8205,
+    0xE989, 0x81FC,
+    0xE9BA, 0x81F3,
+    0xE9EC, 0x81EB,
+    0xEA1D, 0x81E2,
+    0xEA4F, 0x81D9,
+    0xEA80, 0x81D1,
+    0xEAB2, 0x81C8,
+    0xEAE4, 0x81C0,
+    0xEB15, 0x81B8,
+    0xEB47, 0x81B0,
+    0xEB78, 0x81A8,
+    0xEBAA, 0x81A0,
+    0xEBDC, 0x8198,
+    0xEC0D, 0x8190,
+    0xEC3F, 0x8188,
+    0xEC71, 0x8180,
+    0xECA2, 0x8179,
+    0xECD4, 0x8171,
+    0xED06, 0x816A,
+    0xED37, 0x8162,
+    0xED69, 0x815B,
+    0xED9B, 0x8154,
+    0xEDCD, 0x814C,
+    0xEDFE, 0x8145,
+    0xEE30, 0x813E,
+    0xEE62, 0x8137,
+    0xEE94, 0x8130,
+    0xEEC6, 0x812A,
+    0xEEF7, 0x8123,
+    0xEF29, 0x811C,
+    0xEF5B, 0x8116,
+    0xEF8D, 0x810F,
+    0xEFBF, 0x8109,
+    0xEFF1, 0x8102,
+    0xF022, 0x80FC,
+    0xF054, 0x80F6,
+    0xF086, 0x80F0,
+    0xF0B8, 0x80EA,
+    0xF0EA, 0x80E4,
+    0xF11C, 0x80DE,
+    0xF14E, 0x80D8,
+    0xF180, 0x80D2,
+    0xF1B2, 0x80CD,
+    0xF1E4, 0x80C7,
+    0xF216, 0x80C2,
+    0xF248, 0x80BC,
+    0xF27A, 0x80B7,
+    0xF2AC, 0x80B2,
+    0xF2DE, 0x80AC,
+    0xF310, 0x80A7,
+    0xF342, 0x80A2,
+    0xF374, 0x809D,
+    0xF3A6, 0x8098,
+    0xF3D8, 0x8094,
+    0xF40A, 0x808F,
+    0xF43C, 0x808A,
+    0xF46E, 0x8086,
+    0xF4A0, 0x8081,
+    0xF4D2, 0x807D,
+    0xF504, 0x8078,
+    0xF536, 0x8074,
+    0xF568, 0x8070,
+    0xF59A, 0x806C,
+    0xF5CC, 0x8068,
+    0xF5FF, 0x8064,
+    0xF631, 0x8060,
+    0xF663, 0x805C,
+    0xF695, 0x8058,
+    0xF6C7, 0x8055,
+    0xF6F9, 0x8051,
+    0xF72B, 0x804E,
+    0xF75D, 0x804A,
+    0xF790, 0x8047,
+    0xF7C2, 0x8043,
+    0xF7F4, 0x8040,
+    0xF826, 0x803D,
+    0xF858, 0x803A,
+    0xF88A, 0x8037,
+    0xF8BD, 0x8034,
+    0xF8EF, 0x8031,
+    0xF921, 0x802F,
+    0xF953, 0x802C,
+    0xF985, 0x8029,
+    0xF9B8, 0x8027,
+    0xF9EA, 0x8025,
+    0xFA1C, 0x8022,
+    0xFA4E, 0x8020,
+    0xFA80, 0x801E,
+    0xFAB3, 0x801C,
+    0xFAE5, 0x801A,
+    0xFB17, 0x8018,
+    0xFB49, 0x8016,
+    0xFB7C, 0x8014,
+    0xFBAE, 0x8012,
+    0xFBE0, 0x8011,
+    0xFC12, 0x800F,
+    0xFC45, 0x800D,
+    0xFC77, 0x800C,
+    0xFCA9, 0x800B,
+    0xFCDB, 0x8009,
+    0xFD0E, 0x8008,
+    0xFD40, 0x8007,
+    0xFD72, 0x8006,
+    0xFDA4, 0x8005,
+    0xFDD7, 0x8004,
+    0xFE09, 0x8003,
+    0xFE3B, 0x8003,
+    0xFE6D, 0x8002,
+    0xFEA0, 0x8001,
+    0xFED2, 0x8001,
+    0xFF04, 0x8000,
+    0xFF36, 0x8000,
+    0xFF69, 0x8000,
+    0xFF9B, 0x8000,
+    0xFFCD, 0x8000
+};
+
+
+/**    
+* @} end of CFFT_CIFFT group    
+*/
+
+/*    
+* @brief  Q15 table for reciprocal    
+*/
+const q15_t ALIGN4 armRecipTableQ15[64] = {
+ 0x7F03, 0x7D13, 0x7B31, 0x795E, 0x7798, 0x75E0,
+ 0x7434, 0x7294, 0x70FF, 0x6F76, 0x6DF6, 0x6C82,
+ 0x6B16, 0x69B5, 0x685C, 0x670C, 0x65C4, 0x6484,
+ 0x634C, 0x621C, 0x60F3, 0x5FD0, 0x5EB5, 0x5DA0,
+ 0x5C91, 0x5B88, 0x5A85, 0x5988, 0x5890, 0x579E,
+ 0x56B0, 0x55C8, 0x54E4, 0x5405, 0x532B, 0x5255,
+ 0x5183, 0x50B6, 0x4FEC, 0x4F26, 0x4E64, 0x4DA6,
+ 0x4CEC, 0x4C34, 0x4B81, 0x4AD0, 0x4A23, 0x4978,
+ 0x48D1, 0x482D, 0x478C, 0x46ED, 0x4651, 0x45B8,
+ 0x4521, 0x448D, 0x43FC, 0x436C, 0x42DF, 0x4255,
+ 0x41CC, 0x4146, 0x40C2, 0x4040
+};
+
+/*    
+* @brief  Q31 table for reciprocal    
+*/
+const q31_t armRecipTableQ31[64] = {
+  0x7F03F03F, 0x7D137420, 0x7B31E739, 0x795E9F94, 0x7798FD29, 0x75E06928,
+  0x7434554D, 0x72943B4B, 0x70FF9C40, 0x6F760031, 0x6DF6F593, 0x6C8210E3,
+  0x6B16EC3A, 0x69B526F6, 0x685C655F, 0x670C505D, 0x65C4952D, 0x6484E519,
+  0x634CF53E, 0x621C7E4F, 0x60F33C61, 0x5FD0EEB3, 0x5EB55785, 0x5DA03BEB,
+  0x5C9163A1, 0x5B8898E6, 0x5A85A85A, 0x598860DF, 0x58909373, 0x579E1318,
+  0x56B0B4B8, 0x55C84F0B, 0x54E4BA80, 0x5405D124, 0x532B6E8F, 0x52556FD0,
+  0x5183B35A, 0x50B618F3, 0x4FEC81A2, 0x4F26CFA2, 0x4E64E64E, 0x4DA6AA1D,
+  0x4CEC008B, 0x4C34D010, 0x4B810016, 0x4AD078EF, 0x4A2323C4, 0x4978EA96,
+  0x48D1B827, 0x482D77FE, 0x478C1657, 0x46ED801D, 0x4651A2E5, 0x45B86CE2,
+  0x4521CCE1, 0x448DB244, 0x43FC0CFA, 0x436CCD78, 0x42DFE4B4, 0x42554426,
+  0x41CCDDB6, 0x4146A3C6, 0x40C28923, 0x40408102
+};
+
+const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH] = 
+{
+   //8x2, size 20
+   8,64, 24,72, 16,64, 40,80, 32,64, 56,88, 48,72, 88,104, 72,96, 104,112
+};
+
+const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH] = 
+{
+   //8x4, size 48
+   8,64, 16,128, 24,192, 32,64, 40,72, 48,136, 56,200, 64,128, 72,80, 88,208,
+   80,144, 96,192, 104,208, 112,152, 120,216, 136,192, 144,160, 168,208,
+   152,224, 176,208, 184,232, 216,240, 200,224, 232,240
+};
+
+const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH] = 
+{   
+   //radix 8, size 56
+   8,64, 16,128, 24,192, 32,256, 40,320, 48,384, 56,448, 80,136, 88,200, 
+   96,264, 104,328, 112,392, 120,456, 152,208, 160,272, 168,336, 176,400, 
+   184,464, 224,280, 232,344, 240,408, 248,472, 296,352, 304,416, 312,480, 
+   368,424, 376,488, 440,496
+};
+
+const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH] = 
+{
+   //8x2, size 208
+   8,512, 16,64, 24,576, 32,128, 40,640, 48,192, 56,704, 64,256, 72,768, 
+   80,320, 88,832, 96,384, 104,896, 112,448, 120,960, 128,512, 136,520, 
+   144,768, 152,584, 160,520, 168,648, 176,200, 184,712, 192,264, 200,776, 
+   208,328, 216,840, 224,392, 232,904, 240,456, 248,968, 264,528, 272,320, 
+   280,592, 288,768, 296,656, 304,328, 312,720, 328,784, 344,848, 352,400, 
+   360,912, 368,464, 376,976, 384,576, 392,536, 400,832, 408,600, 416,584, 
+   424,664, 432,840, 440,728, 448,592, 456,792, 464,848, 472,856, 480,600, 
+   488,920, 496,856, 504,984, 520,544, 528,576, 536,608, 552,672, 560,608, 
+   568,736, 576,768, 584,800, 592,832, 600,864, 608,800, 616,928, 624,864, 
+   632,992, 648,672, 656,896, 664,928, 688,904, 696,744, 704,896, 712,808, 
+   720,912, 728,872, 736,928, 744,936, 752,920, 760,1000, 776,800, 784,832, 
+   792,864, 808,904, 816,864, 824,920, 840,864, 856,880, 872,944, 888,1008, 
+   904,928, 912,960, 920,992, 944,968, 952,1000, 968,992, 984,1008
+};
+
+const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH] = 
+{
+   //8x4, size 440
+   8,512, 16,1024, 24,1536, 32,64, 40,576, 48,1088, 56,1600, 64,128, 72,640, 
+   80,1152, 88,1664, 96,192, 104,704, 112,1216, 120,1728, 128,256, 136,768, 
+   144,1280, 152,1792, 160,320, 168,832, 176,1344, 184,1856, 192,384, 
+   200,896, 208,1408, 216,1920, 224,448, 232,960, 240,1472, 248,1984, 
+   256,512, 264,520, 272,1032, 280,1544, 288,640, 296,584, 304,1096, 312,1608, 
+   320,768, 328,648, 336,1160, 344,1672, 352,896, 360,712, 368,1224, 376,1736, 
+   384,520, 392,776, 400,1288, 408,1800, 416,648, 424,840, 432,1352, 440,1864, 
+   448,776, 456,904, 464,1416, 472,1928, 480,904, 488,968, 496,1480, 504,1992, 
+   520,528, 512,1024, 528,1040, 536,1552, 544,1152, 552,592, 560,1104, 
+   568,1616, 576,1280, 584,656, 592,1168, 600,1680, 608,1408, 616,720, 
+   624,1232, 632,1744, 640,1032, 648,784, 656,1296, 664,1808, 672,1160, 
+   680,848, 688,1360, 696,1872, 704,1288, 712,912, 720,1424, 728,1936, 
+   736,1416, 744,976, 752,1488, 760,2000, 768,1536, 776,1552, 784,1048, 
+   792,1560, 800,1664, 808,1680, 816,1112, 824,1624, 832,1792, 840,1808, 
+   848,1176, 856,1688, 864,1920, 872,1936, 880,1240, 888,1752, 896,1544, 
+   904,1560, 912,1304, 920,1816, 928,1672, 936,1688, 944,1368, 952,1880, 
+   960,1800, 968,1816, 976,1432, 984,1944, 992,1928, 1000,1944, 1008,1496, 
+   1016,2008, 1032,1152, 1040,1056, 1048,1568, 1064,1408, 1072,1120, 
+   1080,1632, 1088,1536, 1096,1160, 1104,1184, 1112,1696, 1120,1552, 
+   1128,1416, 1136,1248, 1144,1760, 1160,1664, 1168,1312, 1176,1824, 
+   1184,1544, 1192,1920, 1200,1376, 1208,1888, 1216,1568, 1224,1672, 
+   1232,1440, 1240,1952, 1248,1560, 1256,1928, 1264,1504, 1272,2016, 
+   1288,1312, 1296,1408, 1304,1576, 1320,1424, 1328,1416, 1336,1640, 
+   1344,1792, 1352,1824, 1360,1920, 1368,1704, 1376,1800, 1384,1432, 
+   1392,1928, 1400,1768, 1416,1680, 1432,1832, 1440,1576, 1448,1936, 
+   1456,1832, 1464,1896, 1472,1808, 1480,1688, 1488,1936, 1496,1960, 
+   1504,1816, 1512,1944, 1520,1944, 1528,2024, 1560,1584, 1592,1648, 
+   1600,1792, 1608,1920, 1616,1800, 1624,1712, 1632,1808, 1640,1936, 
+   1648,1816, 1656,1776, 1672,1696, 1688,1840, 1704,1952, 1712,1928, 
+   1720,1904, 1728,1824, 1736,1952, 1744,1832, 1752,1968, 1760,1840, 
+   1768,1960, 1776,1944, 1784,2032, 1864,1872, 1848,1944, 1872,1888, 
+   1880,1904, 1888,1984, 1896,2000, 1912,2032, 1904,2016, 1976,2032,
+   1960,1968, 2008,2032, 1992,2016, 2024,2032
+};
+
+const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH] = 
+{
+   //radix 8, size 448
+   8,512, 16,1024, 24,1536, 32,2048, 40,2560, 48,3072, 56,3584, 72,576, 
+   80,1088, 88,1600, 96,2112, 104,2624, 112,3136, 120,3648, 136,640, 144,1152, 
+   152,1664, 160,2176, 168,2688, 176,3200, 184,3712, 200,704, 208,1216, 
+   216,1728, 224,2240, 232,2752, 240,3264, 248,3776, 264,768, 272,1280, 
+   280,1792, 288,2304, 296,2816, 304,3328, 312,3840, 328,832, 336,1344, 
+   344,1856, 352,2368, 360,2880, 368,3392, 376,3904, 392,896, 400,1408, 
+   408,1920, 416,2432, 424,2944, 432,3456, 440,3968, 456,960, 464,1472, 
+   472,1984, 480,2496, 488,3008, 496,3520, 504,4032, 528,1032, 536,1544, 
+   544,2056, 552,2568, 560,3080, 568,3592, 592,1096, 600,1608, 608,2120, 
+   616,2632, 624,3144, 632,3656, 656,1160, 664,1672, 672,2184, 680,2696, 
+   688,3208, 696,3720, 720,1224, 728,1736, 736,2248, 744,2760, 752,3272, 
+   760,3784, 784,1288, 792,1800, 800,2312, 808,2824, 816,3336, 824,3848, 
+   848,1352, 856,1864, 864,2376, 872,2888, 880,3400, 888,3912, 912,1416, 
+   920,1928, 928,2440, 936,2952, 944,3464, 952,3976, 976,1480, 984,1992, 
+   992,2504, 1000,3016, 1008,3528, 1016,4040, 1048,1552, 1056,2064, 1064,2576, 
+   1072,3088, 1080,3600, 1112,1616, 1120,2128, 1128,2640, 1136,3152, 
+   1144,3664, 1176,1680, 1184,2192, 1192,2704, 1200,3216, 1208,3728, 
+   1240,1744, 1248,2256, 1256,2768, 1264,3280, 1272,3792, 1304,1808, 
+   1312,2320, 1320,2832, 1328,3344, 1336,3856, 1368,1872, 1376,2384, 
+   1384,2896, 1392,3408, 1400,3920, 1432,1936, 1440,2448, 1448,2960, 
+   1456,3472, 1464,3984, 1496,2000, 1504,2512, 1512,3024, 1520,3536, 
+   1528,4048, 1568,2072, 1576,2584, 1584,3096, 1592,3608, 1632,2136, 
+   1640,2648, 1648,3160, 1656,3672, 1696,2200, 1704,2712, 1712,3224, 
+   1720,3736, 1760,2264, 1768,2776, 1776,3288, 1784,3800, 1824,2328, 
+   1832,2840, 1840,3352, 1848,3864, 1888,2392, 1896,2904, 1904,3416, 
+   1912,3928, 1952,2456, 1960,2968, 1968,3480, 1976,3992, 2016,2520, 
+   2024,3032, 2032,3544, 2040,4056, 2088,2592, 2096,3104, 2104,3616, 
+   2152,2656, 2160,3168, 2168,3680, 2216,2720, 2224,3232, 2232,3744, 
+   2280,2784, 2288,3296, 2296,3808, 2344,2848, 2352,3360, 2360,3872, 
+   2408,2912, 2416,3424, 2424,3936, 2472,2976, 2480,3488, 2488,4000, 
+   2536,3040, 2544,3552, 2552,4064, 2608,3112, 2616,3624, 2672,3176, 
+   2680,3688, 2736,3240, 2744,3752, 2800,3304, 2808,3816, 2864,3368, 
+   2872,3880, 2928,3432, 2936,3944, 2992,3496, 3000,4008, 3056,3560, 
+   3064,4072, 3128,3632, 3192,3696, 3256,3760, 3320,3824, 3384,3888, 
+   3448,3952, 3512,4016, 3576,4080
+};
+
+const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH] = 
+{
+   //8x2, size 1800
+   8,4096, 16,512, 24,4608, 32,1024, 40,5120, 48,1536, 56,5632, 64,2048, 
+   72,6144, 80,2560, 88,6656, 96,3072, 104,7168, 112,3584, 120,7680, 128,2048, 
+   136,4160, 144,576, 152,4672, 160,1088, 168,5184, 176,1600, 184,5696, 
+   192,2112, 200,6208, 208,2624, 216,6720, 224,3136, 232,7232, 240,3648, 
+   248,7744, 256,2048, 264,4224, 272,640, 280,4736, 288,1152, 296,5248, 
+   304,1664, 312,5760, 320,2176, 328,6272, 336,2688, 344,6784, 352,3200, 
+   360,7296, 368,3712, 376,7808, 384,2112, 392,4288, 400,704, 408,4800, 
+   416,1216, 424,5312, 432,1728, 440,5824, 448,2240, 456,6336, 464,2752, 
+   472,6848, 480,3264, 488,7360, 496,3776, 504,7872, 512,2048, 520,4352, 
+   528,768, 536,4864, 544,1280, 552,5376, 560,1792, 568,5888, 576,2304, 
+   584,6400, 592,2816, 600,6912, 608,3328, 616,7424, 624,3840, 632,7936, 
+   640,2176, 648,4416, 656,832, 664,4928, 672,1344, 680,5440, 688,1856, 
+   696,5952, 704,2368, 712,6464, 720,2880, 728,6976, 736,3392, 744,7488, 
+   752,3904, 760,8000, 768,2112, 776,4480, 784,896, 792,4992, 800,1408, 
+   808,5504, 816,1920, 824,6016, 832,2432, 840,6528, 848,2944, 856,7040, 
+   864,3456, 872,7552, 880,3968, 888,8064, 896,2240, 904,4544, 912,960, 
+   920,5056, 928,1472, 936,5568, 944,1984, 952,6080, 960,2496, 968,6592, 
+   976,3008, 984,7104, 992,3520, 1000,7616, 1008,4032, 1016,8128, 1024,4096, 
+   1032,4104, 1040,4352, 1048,4616, 1056,4104, 1064,5128, 1072,1544, 
+   1080,5640, 1088,2056, 1096,6152, 1104,2568, 1112,6664, 1120,3080, 
+   1128,7176, 1136,3592, 1144,7688, 1152,6144, 1160,4168, 1168,6400, 
+   1176,4680, 1184,6152, 1192,5192, 1200,1608, 1208,5704, 1216,2120, 
+   1224,6216, 1232,2632, 1240,6728, 1248,3144, 1256,7240, 1264,3656, 
+   1272,7752, 1280,4160, 1288,4232, 1296,4416, 1304,4744, 1312,4168, 
+   1320,5256, 1328,1672, 1336,5768, 1344,2184, 1352,6280, 1360,2696, 
+   1368,6792, 1376,3208, 1384,7304, 1392,3720, 1400,7816, 1408,6208, 
+   1416,4296, 1424,6464, 1432,4808, 1440,6216, 1448,5320, 1456,1736, 
+   1464,5832, 1472,2248, 1480,6344, 1488,2760, 1496,6856, 1504,3272, 
+   1512,7368, 1520,3784, 1528,7880, 1536,4224, 1544,4360, 1552,4480, 
+   1560,4872, 1568,4232, 1576,5384, 1584,1800, 1592,5896, 1600,2312, 
+   1608,6408, 1616,2824, 1624,6920, 1632,3336, 1640,7432, 1648,3848, 
+   1656,7944, 1664,6272, 1672,4424, 1680,6528, 1688,4936, 1696,6280, 
+   1704,5448, 1712,1864, 1720,5960, 1728,2376, 1736,6472, 1744,2888, 
+   1752,6984, 1760,3400, 1768,7496, 1776,3912, 1784,8008, 1792,4288, 
+   1800,4488, 1808,4544, 1816,5000, 1824,4296, 1832,5512, 1840,1928, 
+   1848,6024, 1856,2440, 1864,6536, 1872,2952, 1880,7048, 1888,3464, 
+   1896,7560, 1904,3976, 1912,8072, 1920,6336, 1928,4552, 1936,6592, 
+   1944,5064, 1952,6344, 1960,5576, 1968,1992, 1976,6088, 1984,2504, 
+   1992,6600, 2000,3016, 2008,7112, 2016,3528, 2024,7624, 2032,4040, 
+   2040,8136, 2056,4112, 2064,2112, 2072,4624, 2080,4352, 2088,5136, 
+   2096,4480, 2104,5648, 2120,6160, 2128,2576, 2136,6672, 2144,3088, 
+   2152,7184, 2160,3600, 2168,7696, 2176,2560, 2184,4176, 2192,2816, 
+   2200,4688, 2208,2568, 2216,5200, 2224,2824, 2232,5712, 2240,2576, 
+   2248,6224, 2256,2640, 2264,6736, 2272,3152, 2280,7248, 2288,3664, 
+   2296,7760, 2312,4240, 2320,2432, 2328,4752, 2336,6400, 2344,5264, 
+   2352,6528, 2360,5776, 2368,2816, 2376,6288, 2384,2704, 2392,6800, 
+   2400,3216, 2408,7312, 2416,3728, 2424,7824, 2432,2624, 2440,4304, 
+   2448,2880, 2456,4816, 2464,2632, 2472,5328, 2480,2888, 2488,5840, 
+   2496,2640, 2504,6352, 2512,2768, 2520,6864, 2528,3280, 2536,7376, 
+   2544,3792, 2552,7888, 2568,4368, 2584,4880, 2592,4416, 2600,5392, 
+   2608,4544, 2616,5904, 2632,6416, 2640,2832, 2648,6928, 2656,3344, 
+   2664,7440, 2672,3856, 2680,7952, 2696,4432, 2704,2944, 2712,4944, 
+   2720,4432, 2728,5456, 2736,2952, 2744,5968, 2752,2944, 2760,6480, 
+   2768,2896, 2776,6992, 2784,3408, 2792,7504, 2800,3920, 2808,8016, 
+   2824,4496, 2840,5008, 2848,6464, 2856,5520, 2864,6592, 2872,6032, 
+   2888,6544, 2896,2960, 2904,7056, 2912,3472, 2920,7568, 2928,3984, 
+   2936,8080, 2952,4560, 2960,3008, 2968,5072, 2976,6480, 2984,5584, 
+   2992,3016, 3000,6096, 3016,6608, 3032,7120, 3040,3536, 3048,7632, 
+   3056,4048, 3064,8144, 3072,4608, 3080,4120, 3088,4864, 3096,4632, 
+   3104,4616, 3112,5144, 3120,4872, 3128,5656, 3136,4624, 3144,6168, 
+   3152,4880, 3160,6680, 3168,4632, 3176,7192, 3184,3608, 3192,7704, 
+   3200,6656, 3208,4184, 3216,6912, 3224,4696, 3232,6664, 3240,5208, 
+   3248,6920, 3256,5720, 3264,6672, 3272,6232, 3280,6928, 3288,6744, 
+   3296,6680, 3304,7256, 3312,3672, 3320,7768, 3328,4672, 3336,4248, 
+   3344,4928, 3352,4760, 3360,4680, 3368,5272, 3376,4936, 3384,5784, 
+   3392,4688, 3400,6296, 3408,4944, 3416,6808, 3424,4696, 3432,7320, 
+   3440,3736, 3448,7832, 3456,6720, 3464,4312, 3472,6976, 3480,4824, 
+   3488,6728, 3496,5336, 3504,6984, 3512,5848, 3520,6736, 3528,6360, 
+   3536,6992, 3544,6872, 3552,6744, 3560,7384, 3568,3800, 3576,7896, 
+   3584,4736, 3592,4376, 3600,4992, 3608,4888, 3616,4744, 3624,5400, 
+   3632,5000, 3640,5912, 3648,4752, 3656,6424, 3664,5008, 3672,6936, 
+   3680,4760, 3688,7448, 3696,3864, 3704,7960, 3712,6784, 3720,4440, 
+   3728,7040, 3736,4952, 3744,6792, 3752,5464, 3760,7048, 3768,5976, 
+   3776,6800, 3784,6488, 3792,7056, 3800,7000, 3808,6808, 3816,7512, 
+   3824,3928, 3832,8024, 3840,4800, 3848,4504, 3856,5056, 3864,5016, 
+   3872,4808, 3880,5528, 3888,5064, 3896,6040, 3904,4816, 3912,6552, 
+   3920,5072, 3928,7064, 3936,4824, 3944,7576, 3952,3992, 3960,8088, 
+   3968,6848, 3976,4568, 3984,7104, 3992,5080, 4000,6856, 4008,5592, 
+   4016,7112, 4024,6104, 4032,6864, 4040,6616, 4048,7120, 4056,7128, 
+   4064,6872, 4072,7640, 4080,7128, 4088,8152, 4104,4128, 4112,4160, 
+   4120,4640, 4136,5152, 4144,4232, 4152,5664, 4160,4352, 4168,6176, 
+   4176,4416, 4184,6688, 4192,4616, 4200,7200, 4208,4744, 4216,7712, 
+   4224,4608, 4232,4616, 4240,4672, 4248,4704, 4256,4640, 4264,5216, 
+   4272,4704, 4280,5728, 4288,4864, 4296,6240, 4304,4928, 4312,6752, 
+   4320,4632, 4328,7264, 4336,4760, 4344,7776, 4360,4640, 4368,4416, 
+   4376,4768, 4384,6152, 4392,5280, 4400,6280, 4408,5792, 4424,6304, 
+   4440,6816, 4448,6664, 4456,7328, 4464,6792, 4472,7840, 4480,4624, 
+   4488,4632, 4496,4688, 4504,4832, 4512,6168, 4520,5344, 4528,6296, 
+   4536,5856, 4544,4880, 4552,6368, 4560,4944, 4568,6880, 4576,6680, 
+   4584,7392, 4592,6808, 4600,7904, 4608,6144, 4616,6152, 4624,6208, 
+   4632,4896, 4640,6176, 4648,5408, 4656,6240, 4664,5920, 4672,6400, 
+   4680,6432, 4688,6464, 4696,6944, 4704,6432, 4712,7456, 4720,4808, 
+   4728,7968, 4736,6656, 4744,6664, 4752,6720, 4760,4960, 4768,6688, 
+   4776,5472, 4784,6752, 4792,5984, 4800,6912, 4808,6496, 4816,6976, 
+   4824,7008, 4832,6944, 4840,7520, 4848,7008, 4856,8032, 4864,6160, 
+   4872,6168, 4880,6224, 4888,5024, 4896,6216, 4904,5536, 4912,6344, 
+   4920,6048, 4928,6416, 4936,6560, 4944,6480, 4952,7072, 4960,6728, 
+   4968,7584, 4976,6856, 4984,8096, 4992,6672, 5000,6680, 5008,6736, 
+   5016,5088, 5024,6232, 5032,5600, 5040,6360, 5048,6112, 5056,6928, 
+   5064,6624, 5072,6992, 5080,7136, 5088,6744, 5096,7648, 5104,6872, 
+   5112,8160, 5128,5152, 5136,5376, 5144,5408, 5168,5384, 5176,5672, 
+   5184,5376, 5192,6184, 5200,5392, 5208,6696, 5216,5408, 5224,7208, 
+   5232,5400, 5240,7720, 5248,7168, 5256,7200, 5264,7424, 5272,7456, 
+   5280,7176, 5288,7208, 5296,7432, 5304,5736, 5312,7184, 5320,6248, 
+   5328,7440, 5336,6760, 5344,7192, 5352,7272, 5360,7448, 5368,7784, 
+   5384,5408, 5392,5440, 5400,5472, 5408,6184, 5416,7208, 5424,5448, 
+   5432,5800, 5448,6312, 5464,6824, 5472,6696, 5480,7336, 5488,6824, 
+   5496,7848, 5504,7232, 5512,7264, 5520,7488, 5528,7520, 5536,7240, 
+   5544,7272, 5552,7496, 5560,5864, 5568,7248, 5576,6376, 5584,7504, 
+   5592,6888, 5600,7256, 5608,7400, 5616,7512, 5624,7912, 5632,7168, 
+   5640,7176, 5648,7232, 5656,7240, 5664,7200, 5672,7208, 5680,7264, 
+   5688,5928, 5696,7424, 5704,6440, 5712,7488, 5720,6952, 5728,7456, 
+   5736,7464, 5744,7520, 5752,7976, 5760,7296, 5768,7328, 5776,7552, 
+   5784,7584, 5792,7304, 5800,7336, 5808,7560, 5816,5992, 5824,7312, 
+   5832,6504, 5840,7568, 5848,7016, 5856,7320, 5864,7528, 5872,7576, 
+   5880,8040, 5888,7184, 5896,7192, 5904,7248, 5912,7256, 5920,6248, 
+   5928,7272, 5936,6376, 5944,6056, 5952,7440, 5960,6568, 5968,7504, 
+   5976,7080, 5984,6760, 5992,7592, 6000,6888, 6008,8104, 6016,7360, 
+   6024,7392, 6032,7616, 6040,7648, 6048,7368, 6056,7400, 6064,7624, 
+   6072,6120, 6080,7376, 6088,6632, 6096,7632, 6104,7144, 6112,7384, 
+   6120,7656, 6128,7640, 6136,8168, 6168,6240, 6192,6216, 6200,7264, 
+   6232,6704, 6248,7216, 6256,6680, 6264,7728, 6272,6656, 6280,6664, 
+   6288,6912, 6296,6496, 6304,6688, 6312,6696, 6320,6944, 6328,7520, 
+   6336,6672, 6344,6680, 6352,6928, 6360,6768, 6368,6704, 6376,7280, 
+   6384,6744, 6392,7792, 6408,6432, 6424,6752, 6440,7432, 6448,6536, 
+   6456,7560, 6472,6944, 6488,6832, 6496,6920, 6504,7344, 6512,7048, 
+   6520,7856, 6528,6720, 6536,6728, 6544,6976, 6552,7008, 6560,6752, 
+   6568,7448, 6576,7008, 6584,7576, 6592,6736, 6600,6744, 6608,6992, 
+   6616,6896, 6624,6936, 6632,7408, 6640,7064, 6648,7920, 6712,7280, 
+   6744,6960, 6760,7472, 6768,6936, 6776,7984, 6800,6848, 6808,6856, 
+   6832,6880, 6840,6888, 6848,7040, 6856,7048, 6864,7104, 6872,7024, 
+   6880,7072, 6888,7536, 6896,7136, 6904,8048, 6952,7496, 6968,7624, 
+   6984,7008, 7000,7088, 7016,7600, 7024,7112, 7032,8112, 7056,7104, 
+   7064,7112, 7080,7512, 7088,7136, 7096,7640, 7128,7152, 7144,7664, 
+   7160,8176, 7176,7200, 7192,7216, 7224,7272, 7240,7264, 7256,7280, 
+   7288,7736, 7296,7680, 7304,7712, 7312,7936, 7320,7968, 7328,7688, 
+   7336,7720, 7344,7944, 7352,7976, 7360,7696, 7368,7728, 7376,7952, 
+   7384,7984, 7392,7704, 7400,7736, 7408,7960, 7416,7800, 7432,7456, 
+   7448,7472, 7480,7592, 7496,7520, 7512,7536, 7528,7976, 7544,7864, 
+   7552,7744, 7560,7776, 7568,8000, 7576,8032, 7584,7752, 7592,7784, 
+   7600,8008, 7608,8040, 7616,7760, 7624,7792, 7632,8016, 7640,8048, 
+   7648,7768, 7656,7800, 7664,8024, 7672,7928, 7688,7712, 7704,7728, 
+   7752,7776, 7768,7792, 7800,7992, 7816,7840, 7824,8064, 7832,8096, 
+   7856,8072, 7864,8104, 7872,8064, 7880,8072, 7888,8080, 7896,8112, 
+   7904,8096, 7912,8104, 7920,8088, 7928,8056, 7944,7968, 7960,7984, 
+   8008,8032, 8024,8048, 8056,8120, 8072,8096, 8080,8128, 8088,8160, 
+   8112,8136, 8120,8168, 8136,8160, 8152,8176
+};
+
+const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH] = 
+{
+   //8x2, size 3808
+   8,4096, 16,8192, 24,12288, 32,512, 40,4608, 48,8704, 56,12800, 64,1024, 
+   72,5120, 80,9216, 88,13312, 96,1536, 104,5632, 112,9728, 120,13824, 
+   128,2048, 136,6144, 144,10240, 152,14336, 160,2560, 168,6656, 176,10752, 
+   184,14848, 192,3072, 200,7168, 208,11264, 216,15360, 224,3584, 232,7680, 
+   240,11776, 248,15872, 256,1024, 264,4160, 272,8256, 280,12352, 288,576, 
+   296,4672, 304,8768, 312,12864, 320,1088, 328,5184, 336,9280, 344,13376, 
+   352,1600, 360,5696, 368,9792, 376,13888, 384,2112, 392,6208, 400,10304, 
+   408,14400, 416,2624, 424,6720, 432,10816, 440,14912, 448,3136, 456,7232, 
+   464,11328, 472,15424, 480,3648, 488,7744, 496,11840, 504,15936, 512,2048, 
+   520,4224, 528,8320, 536,12416, 544,640, 552,4736, 560,8832, 568,12928, 
+   576,1152, 584,5248, 592,9344, 600,13440, 608,1664, 616,5760, 624,9856, 
+   632,13952, 640,2176, 648,6272, 656,10368, 664,14464, 672,2688, 680,6784, 
+   688,10880, 696,14976, 704,3200, 712,7296, 720,11392, 728,15488, 736,3712, 
+   744,7808, 752,11904, 760,16000, 768,3072, 776,4288, 784,8384, 792,12480, 
+   800,3200, 808,4800, 816,8896, 824,12992, 832,1216, 840,5312, 848,9408, 
+   856,13504, 864,1728, 872,5824, 880,9920, 888,14016, 896,2240, 904,6336, 
+   912,10432, 920,14528, 928,2752, 936,6848, 944,10944, 952,15040, 960,3264, 
+   968,7360, 976,11456, 984,15552, 992,3776, 1000,7872, 1008,11968, 1016,16064, 
+   1032,4352, 1040,8448, 1048,12544, 1056,3072, 1064,4864, 1072,8960, 
+   1080,13056, 1088,1280, 1096,5376, 1104,9472, 1112,13568, 1120,1792, 
+   1128,5888, 1136,9984, 1144,14080, 1152,2304, 1160,6400, 1168,10496, 
+   1176,14592, 1184,2816, 1192,6912, 1200,11008, 1208,15104, 1216,3328, 
+   1224,7424, 1232,11520, 1240,15616, 1248,3840, 1256,7936, 1264,12032, 
+   1272,16128, 1288,4416, 1296,8512, 1304,12608, 1312,3328, 1320,4928, 
+   1328,9024, 1336,13120, 1352,5440, 1360,9536, 1368,13632, 1376,1856, 
+   1384,5952, 1392,10048, 1400,14144, 1408,2368, 1416,6464, 1424,10560, 
+   1432,14656, 1440,2880, 1448,6976, 1456,11072, 1464,15168, 1472,3392, 
+   1480,7488, 1488,11584, 1496,15680, 1504,3904, 1512,8000, 1520,12096, 
+   1528,16192, 1536,2112, 1544,4480, 1552,8576, 1560,12672, 1568,2240, 
+   1576,4992, 1584,9088, 1592,13184, 1600,2368, 1608,5504, 1616,9600, 
+   1624,13696, 1632,1920, 1640,6016, 1648,10112, 1656,14208, 1664,2432, 
+   1672,6528, 1680,10624, 1688,14720, 1696,2944, 1704,7040, 1712,11136, 
+   1720,15232, 1728,3456, 1736,7552, 1744,11648, 1752,15744, 1760,3968, 
+   1768,8064, 1776,12160, 1784,16256, 1792,3136, 1800,4544, 1808,8640, 
+   1816,12736, 1824,3264, 1832,5056, 1840,9152, 1848,13248, 1856,3392, 
+   1864,5568, 1872,9664, 1880,13760, 1888,1984, 1896,6080, 1904,10176, 
+   1912,14272, 1920,2496, 1928,6592, 1936,10688, 1944,14784, 1952,3008, 
+   1960,7104, 1968,11200, 1976,15296, 1984,3520, 1992,7616, 2000,11712, 
+   2008,15808, 2016,4032, 2024,8128, 2032,12224, 2040,16320, 2048,4096, 
+   2056,4104, 2064,8200, 2072,12296, 2080,4224, 2088,4616, 2096,8712, 
+   2104,12808, 2112,4352, 2120,5128, 2128,9224, 2136,13320, 2144,4480, 
+   2152,5640, 2160,9736, 2168,13832, 2176,4104, 2184,6152, 2192,10248, 
+   2200,14344, 2208,2568, 2216,6664, 2224,10760, 2232,14856, 2240,3080, 
+   2248,7176, 2256,11272, 2264,15368, 2272,3592, 2280,7688, 2288,11784, 
+   2296,15880, 2304,5120, 2312,4168, 2320,8264, 2328,12360, 2336,5248, 
+   2344,4680, 2352,8776, 2360,12872, 2368,5376, 2376,5192, 2384,9288, 
+   2392,13384, 2400,5504, 2408,5704, 2416,9800, 2424,13896, 2432,5128, 
+   2440,6216, 2448,10312, 2456,14408, 2464,2632, 2472,6728, 2480,10824, 
+   2488,14920, 2496,3144, 2504,7240, 2512,11336, 2520,15432, 2528,3656, 
+   2536,7752, 2544,11848, 2552,15944, 2560,6144, 2568,4232, 2576,8328, 
+   2584,12424, 2592,6272, 2600,4744, 2608,8840, 2616,12936, 2624,6400, 
+   2632,5256, 2640,9352, 2648,13448, 2656,6528, 2664,5768, 2672,9864, 
+   2680,13960, 2688,6152, 2696,6280, 2704,10376, 2712,14472, 2720,6280, 
+   2728,6792, 2736,10888, 2744,14984, 2752,3208, 2760,7304, 2768,11400, 
+   2776,15496, 2784,3720, 2792,7816, 2800,11912, 2808,16008, 2816,7168, 
+   2824,4296, 2832,8392, 2840,12488, 2848,7296, 2856,4808, 2864,8904, 
+   2872,13000, 2880,7424, 2888,5320, 2896,9416, 2904,13512, 2912,7552, 
+   2920,5832, 2928,9928, 2936,14024, 2944,7176, 2952,6344, 2960,10440, 
+   2968,14536, 2976,7304, 2984,6856, 2992,10952, 3000,15048, 3008,3272, 
+   3016,7368, 3024,11464, 3032,15560, 3040,3784, 3048,7880, 3056,11976, 
+   3064,16072, 3072,4160, 3080,4360, 3088,8456, 3096,12552, 3104,4288, 
+   3112,4872, 3120,8968, 3128,13064, 3136,4416, 3144,5384, 3152,9480, 
+   3160,13576, 3168,4544, 3176,5896, 3184,9992, 3192,14088, 3200,4168, 
+   3208,6408, 3216,10504, 3224,14600, 3232,4296, 3240,6920, 3248,11016, 
+   3256,15112, 3264,3336, 3272,7432, 3280,11528, 3288,15624, 3296,3848, 
+   3304,7944, 3312,12040, 3320,16136, 3328,5184, 3336,4424, 3344,8520, 
+   3352,12616, 3360,5312, 3368,4936, 3376,9032, 3384,13128, 3392,5440, 
+   3400,5448, 3408,9544, 3416,13640, 3424,5568, 3432,5960, 3440,10056, 
+   3448,14152, 3456,5192, 3464,6472, 3472,10568, 3480,14664, 3488,5320, 
+   3496,6984, 3504,11080, 3512,15176, 3520,5448, 3528,7496, 3536,11592, 
+   3544,15688, 3552,3912, 3560,8008, 3568,12104, 3576,16200, 3584,6208, 
+   3592,4488, 3600,8584, 3608,12680, 3616,6336, 3624,5000, 3632,9096, 
+   3640,13192, 3648,6464, 3656,5512, 3664,9608, 3672,13704, 3680,6592, 
+   3688,6024, 3696,10120, 3704,14216, 3712,6216, 3720,6536, 3728,10632, 
+   3736,14728, 3744,6344, 3752,7048, 3760,11144, 3768,15240, 3776,6472, 
+   3784,7560, 3792,11656, 3800,15752, 3808,3976, 3816,8072, 3824,12168, 
+   3832,16264, 3840,7232, 3848,4552, 3856,8648, 3864,12744, 3872,7360, 
+   3880,5064, 3888,9160, 3896,13256, 3904,7488, 3912,5576, 3920,9672, 
+   3928,13768, 3936,7616, 3944,6088, 3952,10184, 3960,14280, 3968,7240, 
+   3976,6600, 3984,10696, 3992,14792, 4000,7368, 4008,7112, 4016,11208, 
+   4024,15304, 4032,7496, 4040,7624, 4048,11720, 4056,15816, 4064,7624, 
+   4072,8136, 4080,12232, 4088,16328, 4096,8192, 4104,4112, 4112,8208, 
+   4120,12304, 4128,8320, 4136,4624, 4144,8720, 4152,12816, 4160,8448, 
+   4168,5136, 4176,9232, 4184,13328, 4192,8576, 4200,5648, 4208,9744, 
+   4216,13840, 4224,8200, 4232,6160, 4240,10256, 4248,14352, 4256,8328, 
+   4264,6672, 4272,10768, 4280,14864, 4288,8456, 4296,7184, 4304,11280, 
+   4312,15376, 4320,8584, 4328,7696, 4336,11792, 4344,15888, 4352,9216, 
+   4360,9232, 4368,8272, 4376,12368, 4384,9344, 4392,4688, 4400,8784, 
+   4408,12880, 4416,9472, 4424,5200, 4432,9296, 4440,13392, 4448,9600, 
+   4456,5712, 4464,9808, 4472,13904, 4480,9224, 4488,6224, 4496,10320, 
+   4504,14416, 4512,9352, 4520,6736, 4528,10832, 4536,14928, 4544,9480, 
+   4552,7248, 4560,11344, 4568,15440, 4576,9608, 4584,7760, 4592,11856, 
+   4600,15952, 4608,10240, 4616,10256, 4624,8336, 4632,12432, 4640,10368, 
+   4648,4752, 4656,8848, 4664,12944, 4672,10496, 4680,5264, 4688,9360, 
+   4696,13456, 4704,10624, 4712,5776, 4720,9872, 4728,13968, 4736,10248, 
+   4744,6288, 4752,10384, 4760,14480, 4768,10376, 4776,6800, 4784,10896, 
+   4792,14992, 4800,10504, 4808,7312, 4816,11408, 4824,15504, 4832,10632, 
+   4840,7824, 4848,11920, 4856,16016, 4864,11264, 4872,11280, 4880,8400, 
+   4888,12496, 4896,11392, 4904,11408, 4912,8912, 4920,13008, 4928,11520, 
+   4936,5328, 4944,9424, 4952,13520, 4960,11648, 4968,5840, 4976,9936, 
+   4984,14032, 4992,11272, 5000,6352, 5008,10448, 5016,14544, 5024,11400, 
+   5032,6864, 5040,10960, 5048,15056, 5056,11528, 5064,7376, 5072,11472, 
+   5080,15568, 5088,11656, 5096,7888, 5104,11984, 5112,16080, 5120,8256, 
+   5128,8272, 5136,8464, 5144,12560, 5152,8384, 5160,8400, 5168,8976, 
+   5176,13072, 5184,8512, 5192,5392, 5200,9488, 5208,13584, 5216,8640, 
+   5224,5904, 5232,10000, 5240,14096, 5248,8264, 5256,6416, 5264,10512, 
+   5272,14608, 5280,8392, 5288,6928, 5296,11024, 5304,15120, 5312,8520, 
+   5320,7440, 5328,11536, 5336,15632, 5344,8648, 5352,7952, 5360,12048, 
+   5368,16144, 5376,9280, 5384,9296, 5392,8528, 5400,12624, 5408,9408, 
+   5416,9424, 5424,9040, 5432,13136, 5440,9536, 5448,5456, 5456,9552, 
+   5464,13648, 5472,9664, 5480,5968, 5488,10064, 5496,14160, 5504,9288, 
+   5512,6480, 5520,10576, 5528,14672, 5536,9416, 5544,6992, 5552,11088, 
+   5560,15184, 5568,9544, 5576,7504, 5584,11600, 5592,15696, 5600,9672, 
+   5608,8016, 5616,12112, 5624,16208, 5632,10304, 5640,10320, 5648,8592, 
+   5656,12688, 5664,10432, 5672,10448, 5680,9104, 5688,13200, 5696,10560, 
+   5704,10576, 5712,9616, 5720,13712, 5728,10688, 5736,6032, 5744,10128, 
+   5752,14224, 5760,10312, 5768,6544, 5776,10640, 5784,14736, 5792,10440, 
+   5800,7056, 5808,11152, 5816,15248, 5824,10568, 5832,7568, 5840,11664, 
+   5848,15760, 5856,10696, 5864,8080, 5872,12176, 5880,16272, 5888,11328, 
+   5896,11344, 5904,8656, 5912,12752, 5920,11456, 5928,11472, 5936,9168, 
+   5944,13264, 5952,11584, 5960,11600, 5968,9680, 5976,13776, 5984,11712, 
+   5992,6096, 6000,10192, 6008,14288, 6016,11336, 6024,6608, 6032,10704, 
+   6040,14800, 6048,11464, 6056,7120, 6064,11216, 6072,15312, 6080,11592, 
+   6088,7632, 6096,11728, 6104,15824, 6112,11720, 6120,8144, 6128,12240, 
+   6136,16336, 6144,12288, 6152,12304, 6160,8216, 6168,12312, 6176,12416, 
+   6184,12432, 6192,8728, 6200,12824, 6208,12544, 6216,12560, 6224,9240, 
+   6232,13336, 6240,12672, 6248,12688, 6256,9752, 6264,13848, 6272,12296, 
+   6280,12312, 6288,10264, 6296,14360, 6304,12424, 6312,6680, 6320,10776, 
+   6328,14872, 6336,12552, 6344,7192, 6352,11288, 6360,15384, 6368,12680, 
+   6376,7704, 6384,11800, 6392,15896, 6400,13312, 6408,13328, 6416,8280, 
+   6424,12376, 6432,13440, 6440,13456, 6448,8792, 6456,12888, 6464,13568, 
+   6472,13584, 6480,9304, 6488,13400, 6496,13696, 6504,13712, 6512,9816, 
+   6520,13912, 6528,13320, 6536,13336, 6544,10328, 6552,14424, 6560,13448, 
+   6568,6744, 6576,10840, 6584,14936, 6592,13576, 6600,7256, 6608,11352, 
+   6616,15448, 6624,13704, 6632,7768, 6640,11864, 6648,15960, 6656,14336, 
+   6664,14352, 6672,8344, 6680,12440, 6688,14464, 6696,14480, 6704,8856, 
+   6712,12952, 6720,14592, 6728,14608, 6736,9368, 6744,13464, 6752,14720, 
+   6760,14736, 6768,9880, 6776,13976, 6784,14344, 6792,14360, 6800,10392, 
+   6808,14488, 6816,14472, 6824,14488, 6832,10904, 6840,15000, 6848,14600, 
+   6856,7320, 6864,11416, 6872,15512, 6880,14728, 6888,7832, 6896,11928, 
+   6904,16024, 6912,15360, 6920,15376, 6928,8408, 6936,12504, 6944,15488, 
+   6952,15504, 6960,8920, 6968,13016, 6976,15616, 6984,15632, 6992,9432, 
+   7000,13528, 7008,15744, 7016,15760, 7024,9944, 7032,14040, 7040,15368, 
+   7048,15384, 7056,10456, 7064,14552, 7072,15496, 7080,15512, 7088,10968, 
+   7096,15064, 7104,15624, 7112,7384, 7120,11480, 7128,15576, 7136,15752, 
+   7144,7896, 7152,11992, 7160,16088, 7168,12352, 7176,12368, 7184,8472, 
+   7192,12568, 7200,12480, 7208,12496, 7216,8984, 7224,13080, 7232,12608, 
+   7240,12624, 7248,9496, 7256,13592, 7264,12736, 7272,12752, 7280,10008, 
+   7288,14104, 7296,12360, 7304,12376, 7312,10520, 7320,14616, 7328,12488, 
+   7336,12504, 7344,11032, 7352,15128, 7360,12616, 7368,7448, 7376,11544, 
+   7384,15640, 7392,12744, 7400,7960, 7408,12056, 7416,16152, 7424,13376, 
+   7432,13392, 7440,8536, 7448,12632, 7456,13504, 7464,13520, 7472,9048, 
+   7480,13144, 7488,13632, 7496,13648, 7504,9560, 7512,13656, 7520,13760, 
+   7528,13776, 7536,10072, 7544,14168, 7552,13384, 7560,13400, 7568,10584, 
+   7576,14680, 7584,13512, 7592,13528, 7600,11096, 7608,15192, 7616,13640, 
+   7624,13656, 7632,11608, 7640,15704, 7648,13768, 7656,8024, 7664,12120, 
+   7672,16216, 7680,14400, 7688,14416, 7696,8600, 7704,12696, 7712,14528, 
+   7720,14544, 7728,9112, 7736,13208, 7744,14656, 7752,14672, 7760,9624, 
+   7768,13720, 7776,14784, 7784,14800, 7792,10136, 7800,14232, 7808,14408, 
+   7816,14424, 7824,10648, 7832,14744, 7840,14536, 7848,14552, 7856,11160, 
+   7864,15256, 7872,14664, 7880,14680, 7888,11672, 7896,15768, 7904,14792, 
+   7912,8088, 7920,12184, 7928,16280, 7936,15424, 7944,15440, 7952,8664, 
+   7960,12760, 7968,15552, 7976,15568, 7984,9176, 7992,13272, 8000,15680, 
+   8008,15696, 8016,9688, 8024,13784, 8032,15808, 8040,15824, 8048,10200, 
+   8056,14296, 8064,15432, 8072,15448, 8080,10712, 8088,14808, 8096,15560, 
+   8104,15576, 8112,11224, 8120,15320, 8128,15688, 8136,15704, 8144,11736, 
+   8152,15832, 8160,15816, 8168,15832, 8176,12248, 8184,16344, 8200,8320, 
+   8208,8224, 8216,12320, 8232,10368, 8240,8736, 8248,12832, 8256,8448, 
+   8264,8384, 8272,9248, 8280,13344, 8288,9232, 8296,10432, 8304,9760, 
+   8312,13856, 8328,12416, 8336,10272, 8344,14368, 8352,12296, 8360,14464, 
+   8368,10784, 8376,14880, 8384,8456, 8392,12480, 8400,11296, 8408,15392, 
+   8416,12552, 8424,14528, 8432,11808, 8440,15904, 8448,9216, 8456,8576, 
+   8464,9232, 8472,12384, 8480,9248, 8488,10624, 8496,8800, 8504,12896, 
+   8512,9472, 8520,8640, 8528,9312, 8536,13408, 8544,9296, 8552,10688, 
+   8560,9824, 8568,13920, 8576,9224, 8584,12672, 8592,10336, 8600,14432, 
+   8608,13320, 8616,14720, 8624,10848, 8632,14944, 8640,9480, 8648,12736, 
+   8656,11360, 8664,15456, 8672,13576, 8680,14784, 8688,11872, 8696,15968, 
+   8704,12288, 8712,12416, 8720,12296, 8728,12448, 8736,12304, 8744,10376, 
+   8752,8864, 8760,12960, 8768,12352, 8776,12480, 8784,9376, 8792,13472, 
+   8800,12368, 8808,10440, 8816,9888, 8824,13984, 8832,12320, 8840,12424, 
+   8848,10400, 8856,14496, 8864,12312, 8872,14472, 8880,10912, 8888,15008, 
+   8896,12384, 8904,12488, 8912,11424, 8920,15520, 8928,12568, 8936,14536, 
+   8944,11936, 8952,16032, 8960,12544, 8968,12672, 8976,12552, 8984,12512, 
+   8992,12560, 9000,10632, 9008,12568, 9016,13024, 9024,12608, 9032,12736, 
+   9040,9440, 9048,13536, 9056,12624, 9064,10696, 9072,9952, 9080,14048, 
+   9088,9240, 9096,12680, 9104,10464, 9112,14560, 9120,13336, 9128,14728, 
+   9136,10976, 9144,15072, 9152,9496, 9160,12744, 9168,11488, 9176,15584, 
+   9184,13592, 9192,14792, 9200,12000, 9208,16096, 9224,9344, 9232,9248, 
+   9240,12576, 9256,11392, 9264,12560, 9272,13088, 9280,9472, 9288,9408, 
+   9296,9504, 9304,13600, 9312,9488, 9320,11456, 9328,10016, 9336,14112, 
+   9352,13440, 9360,10528, 9368,14624, 9376,12360, 9384,15488, 9392,11040, 
+   9400,15136, 9408,9480, 9416,13504, 9424,11552, 9432,15648, 9440,12616, 
+   9448,15552, 9456,12064, 9464,16160, 9480,9600, 9488,9504, 9496,12640, 
+   9512,11648, 9520,12624, 9528,13152, 9544,9664, 9552,9568, 9560,13664, 
+   9576,11712, 9584,10080, 9592,14176, 9608,13696, 9616,10592, 9624,14688, 
+   9632,13384, 9640,15744, 9648,11104, 9656,15200, 9672,13760, 9680,11616, 
+   9688,15712, 9696,13640, 9704,15808, 9712,12128, 9720,16224, 9728,13312, 
+   9736,13440, 9744,13320, 9752,12704, 9760,13328, 9768,11400, 9776,13336, 
+   9784,13216, 9792,13376, 9800,13504, 9808,13384, 9816,13728, 9824,13392, 
+   9832,11464, 9840,10144, 9848,14240, 9856,13344, 9864,13448, 9872,10656, 
+   9880,14752, 9888,12376, 9896,15496, 9904,11168, 9912,15264, 9920,13408, 
+   9928,13512, 9936,11680, 9944,15776, 9952,12632, 9960,15560, 9968,12192, 
+   9976,16288, 9984,13568, 9992,13696, 10000,13576, 10008,12768, 10016,13584, 
+   10024,11656, 10032,13592, 10040,13280, 10048,13632, 10056,13760, 
+   10064,13640, 10072,13792, 10080,13648, 10088,11720, 10096,10208, 
+   10104,14304, 10112,13600, 10120,13704, 10128,10720, 10136,14816, 
+   10144,13400, 10152,15752, 10160,11232, 10168,15328, 10176,13664, 
+   10184,13768, 10192,11744, 10200,15840, 10208,13656, 10216,15816, 
+   10224,12256, 10232,16352, 10248,10272, 10256,10368, 10264,12328, 
+   10280,10384, 10288,10376, 10296,12840, 10304,11264, 10312,11296, 
+   10320,11392, 10328,13352, 10336,11272, 10344,10448, 10352,11400, 
+   10360,13864, 10376,12432, 10392,14376, 10400,12328, 10408,14480, 
+   10416,10792, 10424,14888, 10432,11280, 10440,12496, 10448,11304, 
+   10456,15400, 10464,11288, 10472,14544, 10480,11816, 10488,15912, 
+   10496,11264, 10504,11272, 10512,11280, 10520,12392, 10528,11296, 
+   10536,10640, 10544,12496, 10552,12904, 10560,11328, 10568,11360, 
+   10576,11456, 10584,13416, 10592,11336, 10600,10704, 10608,11464, 
+   10616,13928, 10624,11392, 10632,12688, 10640,11304, 10648,14440, 
+   10656,13352, 10664,14736, 10672,10856, 10680,14952, 10688,11344, 
+   10696,12752, 10704,11368, 10712,15464, 10720,11352, 10728,14800, 
+   10736,11880, 10744,15976, 10752,14336, 10760,14368, 10768,14464, 
+   10776,12456, 10784,14344, 10792,14376, 10800,14472, 10808,12968, 
+   10816,15360, 10824,15392, 10832,15488, 10840,13480, 10848,15368, 
+   10856,15400, 10864,15496, 10872,13992, 10880,14352, 10888,12440, 
+   10896,14480, 10904,14504, 10912,14360, 10920,14488, 10928,14488, 
+   10936,15016, 10944,15376, 10952,12504, 10960,11432, 10968,15528, 
+   10976,15384, 10984,14552, 10992,11944, 11000,16040, 11008,14400, 
+   11016,14432, 11024,14528, 11032,12520, 11040,14408, 11048,14440, 
+   11056,14536, 11064,13032, 11072,15424, 11080,15456, 11088,15552, 
+   11096,13544, 11104,15432, 11112,15464, 11120,15560, 11128,14056, 
+   11136,14416, 11144,12696, 11152,14544, 11160,14568, 11168,14424, 
+   11176,14744, 11184,14552, 11192,15080, 11200,15440, 11208,12760, 
+   11216,11496, 11224,15592, 11232,15448, 11240,14808, 11248,12008, 
+   11256,16104, 11272,11296, 11280,11392, 11288,12584, 11304,11408, 
+   11312,12688, 11320,13096, 11328,11520, 11336,11552, 11344,11648, 
+   11352,13608, 11360,11528, 11368,11472, 11376,11656, 11384,14120, 
+   11400,13456, 11416,14632, 11424,12392, 11432,15504, 11440,14440, 
+   11448,15144, 11456,11536, 11464,13520, 11472,11560, 11480,15656, 
+   11488,11544, 11496,15568, 11504,12072, 11512,16168, 11528,11552, 
+   11536,11648, 11544,12648, 11560,11664, 11568,12752, 11576,13160, 
+   11592,11616, 11600,11712, 11608,13672, 11624,11728, 11632,11720, 
+   11640,14184, 11656,13712, 11672,14696, 11680,13416, 11688,15760, 
+   11696,15464, 11704,15208, 11720,13776, 11736,15720, 11744,13672, 
+   11752,15824, 11760,12136, 11768,16232, 11776,14592, 11784,14624, 
+   11792,14720, 11800,12712, 11808,14600, 11816,14632, 11824,14728, 
+   11832,13224, 11840,15616, 11848,15648, 11856,15744, 11864,13736, 
+   11872,15624, 11880,15656, 11888,15752, 11896,14248, 11904,14608, 
+   11912,13464, 11920,14736, 11928,14760, 11936,14616, 11944,15512, 
+   11952,14744, 11960,15272, 11968,15632, 11976,13528, 11984,15760, 
+   11992,15784, 12000,15640, 12008,15576, 12016,12200, 12024,16296, 
+   12032,14656, 12040,14688, 12048,14784, 12056,12776, 12064,14664, 
+   12072,14696, 12080,14792, 12088,13288, 12096,15680, 12104,15712, 
+   12112,15808, 12120,13800, 12128,15688, 12136,15720, 12144,15816, 
+   12152,14312, 12160,14672, 12168,13720, 12176,14800, 12184,14824, 
+   12192,14680, 12200,15768, 12208,14808, 12216,15336, 12224,15696, 
+   12232,13784, 12240,15824, 12248,15848, 12256,15704, 12264,15832, 
+   12272,15832, 12280,16360, 12312,12336, 12344,12848, 12352,12544, 
+   12360,12552, 12368,12560, 12376,13360, 12384,12576, 12392,12584, 
+   12400,13336, 12408,13872, 12424,12448, 12440,14384, 12456,14496, 
+   12464,14472, 12472,14896, 12480,12672, 12488,12512, 12496,12688, 
+   12504,15408, 12512,12680, 12520,14560, 12528,14728, 12536,15920, 
+   12544,13312, 12552,13320, 12560,13328, 12568,13336, 12576,13344, 
+   12584,13352, 12592,13360, 12600,12912, 12608,13568, 12616,13576, 
+   12624,13584, 12632,13424, 12640,13600, 12648,13608, 12656,13400, 
+   12664,13936, 12672,13440, 12680,12704, 12688,13456, 12696,14448, 
+   12704,13448, 12712,14752, 12720,15496, 12728,14960, 12736,13696, 
+   12744,12768, 12752,13712, 12760,15472, 12768,13704, 12776,14816, 
+   12784,15752, 12792,15984, 12800,14336, 12808,14464, 12816,14344, 
+   12824,14472, 12832,14352, 12840,14480, 12848,14360, 12856,12976, 
+   12864,14400, 12872,14528, 12880,14408, 12888,13488, 12896,14416, 
+   12904,14544, 12912,14424, 12920,14000, 12928,14368, 12936,14496, 
+   12944,14376, 12952,14512, 12960,14384, 12968,14504, 12976,14488, 
+   12984,15024, 12992,14432, 13000,14560, 13008,14440, 13016,15536, 
+   13024,14448, 13032,14568, 13040,14744, 13048,16048, 13056,14592, 
+   13064,14720, 13072,14600, 13080,14728, 13088,14608, 13096,14736, 
+   13104,14616, 13112,14744, 13120,14656, 13128,14784, 13136,14664, 
+   13144,13552, 13152,14672, 13160,14800, 13168,14680, 13176,14064, 
+   13184,14624, 13192,14752, 13200,14632, 13208,14576, 13216,13464, 
+   13224,14760, 13232,15512, 13240,15088, 13248,14688, 13256,14816, 
+   13264,14696, 13272,15600, 13280,13720, 13288,14824, 13296,15768, 
+   13304,16112, 13336,13360, 13368,14616, 13376,13568, 13384,13576, 
+   13392,13584, 13400,13616, 13408,13600, 13416,13608, 13424,13592, 
+   13432,14128, 13448,13472, 13464,14640, 13480,15520, 13488,14536, 
+   13496,15152, 13504,13696, 13512,13536, 13520,13712, 13528,15664, 
+   13536,13704, 13544,15584, 13552,14792, 13560,16176, 13592,13616, 
+   13624,14680, 13656,13680, 13688,14192, 13704,13728, 13720,14704, 
+   13736,15776, 13744,15560, 13752,15216, 13768,13792, 13784,15728, 
+   13800,15840, 13808,15816, 13816,16240, 13824,15360, 13832,15488, 
+   13840,15368, 13848,15496, 13856,15376, 13864,15504, 13872,15384, 
+   13880,15512, 13888,15424, 13896,15552, 13904,15432, 13912,15560, 
+   13920,15440, 13928,15568, 13936,15448, 13944,14256, 13952,15392, 
+   13960,15520, 13968,15400, 13976,14768, 13984,15408, 13992,15528, 
+   14000,14552, 14008,15280, 14016,15456, 14024,15584, 14032,15464, 
+   14040,15792, 14048,15472, 14056,15592, 14064,14808, 14072,16304, 
+   14080,15616, 14088,15744, 14096,15624, 14104,15752, 14112,15632, 
+   14120,15760, 14128,15640, 14136,15768, 14144,15680, 14152,15808, 
+   14160,15688, 14168,15816, 14176,15696, 14184,15824, 14192,15704, 
+   14200,14320, 14208,15648, 14216,15776, 14224,15656, 14232,14832, 
+   14240,15664, 14248,15784, 14256,15576, 14264,15344, 14272,15712, 
+   14280,15840, 14288,15720, 14296,15856, 14304,15728, 14312,15848, 
+   14320,15832, 14328,16368, 14392,14488, 14400,14592, 14408,14600, 
+   14416,14608, 14424,14616, 14432,14624, 14440,14632, 14448,14640, 
+   14456,15512, 14504,14512, 14520,14904, 14528,14720, 14536,14728, 
+   14544,14736, 14552,15416, 14560,14752, 14568,14576, 14584,15928,
+   14576,14760, 14592,15360, 14600,15368, 14608,15376, 14616,15384, 
+   14624,15392, 14632,15400, 14640,15408, 14648,15416, 14656,15616, 
+   14664,15624, 14672,15632, 14680,15640, 14688,15648, 14696,15656, 
+   14704,15664, 14712,15576, 14720,15488, 14728,15496, 14736,15504, 
+   14744,15512, 14752,15520, 14760,14768, 14776,14968, 14768,15528, 
+   14784,15744, 14792,15752, 14800,15760, 14808,15480, 14816,15776, 
+   14824,14832, 14840,15992, 14832,15784, 14856,14864, 14864,14880, 
+   14872,14896, 14880,14976, 14888,14992, 14896,15008, 14904,15024, 
+   14912,15104, 14920,15120, 14928,15136, 14936,15152, 14944,15232, 
+   14952,15248, 14960,15264, 14968,15280, 14984,15008, 15000,15024, 
+   15016,15024, 15040,15112, 15048,15128, 15056,15144, 15064,15544, 
+   15072,15240, 15080,15256, 15088,15272, 15096,16056, 15104,15872, 
+   15112,15888, 15120,15904, 15128,15920, 15136,16000, 15144,16016, 
+   15152,16032, 15160,16048, 15168,16128, 15176,16144, 15184,16160, 
+   15192,16176, 15200,16256, 15208,16272, 15216,16288, 15224,16304, 
+   15232,15880, 15240,15896, 15248,15912, 15256,15928, 15264,16008, 
+   15272,16024, 15280,16040, 15288,16056, 15296,16136, 15304,16152, 
+   15312,16168, 15320,15608, 15328,16264, 15336,16280, 15344,16296, 
+   15352,16120, 15416,15512, 15424,15616, 15432,15624, 15440,15632, 
+   15448,15640, 15456,15648, 15464,15656, 15472,15664, 15480,15768, 
+   15528,15536, 15544,16048, 15552,15744, 15560,15752, 15568,15760, 
+   15576,15672, 15584,15776, 15592,15600, 15600,15784, 15608,16184, 
+   15672,15768, 15736,15832, 15784,15792, 15800,16304, 15848,15856, 
+   15880,16000, 15864,16248, 15888,16000, 15896,16008, 15904,16000, 
+   15912,16016, 15920,16008, 15928,16024, 15936,16128, 15944,16160, 
+   15952,16256, 15960,16288, 15968,16136, 15976,16168, 15984,16264, 
+   15992,16296, 16008,16032, 16024,16040, 16064,16144, 16040,16048, 
+   16072,16176, 16080,16272, 16088,16304, 16096,16152, 16104,16184, 
+   16112,16280, 16136,16256, 16120,16312, 16144,16256, 16152,16264, 
+   16160,16256, 16168,16272, 16176,16264, 16184,16280, 16200,16208, 
+   16208,16224, 16216,16240, 16224,16320, 16232,16336, 16240,16352, 
+   16248,16368, 16264,16288, 16280,16296, 16296,16304, 16344,16368,
+   16328,16352, 16360,16368
+};
+
+const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH] = 
+{
+   //radix 8, size 4032
+   8,4096, 16,8192, 24,12288, 32,16384, 40,20480, 48,24576, 56,28672, 64,512, 
+   72,4608, 80,8704, 88,12800, 96,16896, 104,20992, 112,25088, 120,29184, 
+   128,1024, 136,5120, 144,9216, 152,13312, 160,17408, 168,21504, 176,25600, 
+   184,29696, 192,1536, 200,5632, 208,9728, 216,13824, 224,17920, 232,22016, 
+   240,26112, 248,30208, 256,2048, 264,6144, 272,10240, 280,14336, 288,18432, 
+   296,22528, 304,26624, 312,30720, 320,2560, 328,6656, 336,10752, 344,14848, 
+   352,18944, 360,23040, 368,27136, 376,31232, 384,3072, 392,7168, 400,11264, 
+   408,15360, 416,19456, 424,23552, 432,27648, 440,31744, 448,3584, 456,7680, 
+   464,11776, 472,15872, 480,19968, 488,24064, 496,28160, 504,32256, 520,4160, 
+   528,8256, 536,12352, 544,16448, 552,20544, 560,24640, 568,28736, 584,4672, 
+   592,8768, 600,12864, 608,16960, 616,21056, 624,25152, 632,29248, 640,1088, 
+   648,5184, 656,9280, 664,13376, 672,17472, 680,21568, 688,25664, 696,29760, 
+   704,1600, 712,5696, 720,9792, 728,13888, 736,17984, 744,22080, 752,26176, 
+   760,30272, 768,2112, 776,6208, 784,10304, 792,14400, 800,18496, 808,22592, 
+   816,26688, 824,30784, 832,2624, 840,6720, 848,10816, 856,14912, 864,19008, 
+   872,23104, 880,27200, 888,31296, 896,3136, 904,7232, 912,11328, 920,15424, 
+   928,19520, 936,23616, 944,27712, 952,31808, 960,3648, 968,7744, 976,11840, 
+   984,15936, 992,20032, 1000,24128, 1008,28224, 1016,32320, 1032,4224, 
+   1040,8320, 1048,12416, 1056,16512, 1064,20608, 1072,24704, 1080,28800, 
+   1096,4736, 1104,8832, 1112,12928, 1120,17024, 1128,21120, 1136,25216, 
+   1144,29312, 1160,5248, 1168,9344, 1176,13440, 1184,17536, 1192,21632, 
+   1200,25728, 1208,29824, 1216,1664, 1224,5760, 1232,9856, 1240,13952, 
+   1248,18048, 1256,22144, 1264,26240, 1272,30336, 1280,2176, 1288,6272, 
+   1296,10368, 1304,14464, 1312,18560, 1320,22656, 1328,26752, 1336,30848, 
+   1344,2688, 1352,6784, 1360,10880, 1368,14976, 1376,19072, 1384,23168, 
+   1392,27264, 1400,31360, 1408,3200, 1416,7296, 1424,11392, 1432,15488, 
+   1440,19584, 1448,23680, 1456,27776, 1464,31872, 1472,3712, 1480,7808, 
+   1488,11904, 1496,16000, 1504,20096, 1512,24192, 1520,28288, 1528,32384, 
+   1544,4288, 1552,8384, 1560,12480, 1568,16576, 1576,20672, 1584,24768, 
+   1592,28864, 1608,4800, 1616,8896, 1624,12992, 1632,17088, 1640,21184, 
+   1648,25280, 1656,29376, 1672,5312, 1680,9408, 1688,13504, 1696,17600, 
+   1704,21696, 1712,25792, 1720,29888, 1736,5824, 1744,9920, 1752,14016, 
+   1760,18112, 1768,22208, 1776,26304, 1784,30400, 1792,2240, 1800,6336, 
+   1808,10432, 1816,14528, 1824,18624, 1832,22720, 1840,26816, 1848,30912, 
+   1856,2752, 1864,6848, 1872,10944, 1880,15040, 1888,19136, 1896,23232, 
+   1904,27328, 1912,31424, 1920,3264, 1928,7360, 1936,11456, 1944,15552, 
+   1952,19648, 1960,23744, 1968,27840, 1976,31936, 1984,3776, 1992,7872, 
+   2000,11968, 2008,16064, 2016,20160, 2024,24256, 2032,28352, 2040,32448, 
+   2056,4352, 2064,8448, 2072,12544, 2080,16640, 2088,20736, 2096,24832, 
+   2104,28928, 2120,4864, 2128,8960, 2136,13056, 2144,17152, 2152,21248, 
+   2160,25344, 2168,29440, 2184,5376, 2192,9472, 2200,13568, 2208,17664, 
+   2216,21760, 2224,25856, 2232,29952, 2248,5888, 2256,9984, 2264,14080, 
+   2272,18176, 2280,22272, 2288,26368, 2296,30464, 2312,6400, 2320,10496, 
+   2328,14592, 2336,18688, 2344,22784, 2352,26880, 2360,30976, 2368,2816, 
+   2376,6912, 2384,11008, 2392,15104, 2400,19200, 2408,23296, 2416,27392, 
+   2424,31488, 2432,3328, 2440,7424, 2448,11520, 2456,15616, 2464,19712, 
+   2472,23808, 2480,27904, 2488,32000, 2496,3840, 2504,7936, 2512,12032, 
+   2520,16128, 2528,20224, 2536,24320, 2544,28416, 2552,32512, 2568,4416, 
+   2576,8512, 2584,12608, 2592,16704, 2600,20800, 2608,24896, 2616,28992, 
+   2632,4928, 2640,9024, 2648,13120, 2656,17216, 2664,21312, 2672,25408, 
+   2680,29504, 2696,5440, 2704,9536, 2712,13632, 2720,17728, 2728,21824, 
+   2736,25920, 2744,30016, 2760,5952, 2768,10048, 2776,14144, 2784,18240, 
+   2792,22336, 2800,26432, 2808,30528, 2824,6464, 2832,10560, 2840,14656, 
+   2848,18752, 2856,22848, 2864,26944, 2872,31040, 2888,6976, 2896,11072, 
+   2904,15168, 2912,19264, 2920,23360, 2928,27456, 2936,31552, 2944,3392, 
+   2952,7488, 2960,11584, 2968,15680, 2976,19776, 2984,23872, 2992,27968, 
+   3000,32064, 3008,3904, 3016,8000, 3024,12096, 3032,16192, 3040,20288, 
+   3048,24384, 3056,28480, 3064,32576, 3080,4480, 3088,8576, 3096,12672, 
+   3104,16768, 3112,20864, 3120,24960, 3128,29056, 3144,4992, 3152,9088, 
+   3160,13184, 3168,17280, 3176,21376, 3184,25472, 3192,29568, 3208,5504, 
+   3216,9600, 3224,13696, 3232,17792, 3240,21888, 3248,25984, 3256,30080, 
+   3272,6016, 3280,10112, 3288,14208, 3296,18304, 3304,22400, 3312,26496, 
+   3320,30592, 3336,6528, 3344,10624, 3352,14720, 3360,18816, 3368,22912, 
+   3376,27008, 3384,31104, 3400,7040, 3408,11136, 3416,15232, 3424,19328, 
+   3432,23424, 3440,27520, 3448,31616, 3464,7552, 3472,11648, 3480,15744, 
+   3488,19840, 3496,23936, 3504,28032, 3512,32128, 3520,3968, 3528,8064, 
+   3536,12160, 3544,16256, 3552,20352, 3560,24448, 3568,28544, 3576,32640, 
+   3592,4544, 3600,8640, 3608,12736, 3616,16832, 3624,20928, 3632,25024, 
+   3640,29120, 3656,5056, 3664,9152, 3672,13248, 3680,17344, 3688,21440, 
+   3696,25536, 3704,29632, 3720,5568, 3728,9664, 3736,13760, 3744,17856, 
+   3752,21952, 3760,26048, 3768,30144, 3784,6080, 3792,10176, 3800,14272, 
+   3808,18368, 3816,22464, 3824,26560, 3832,30656, 3848,6592, 3856,10688, 
+   3864,14784, 3872,18880, 3880,22976, 3888,27072, 3896,31168, 3912,7104, 
+   3920,11200, 3928,15296, 3936,19392, 3944,23488, 3952,27584, 3960,31680, 
+   3976,7616, 3984,11712, 3992,15808, 4000,19904, 4008,24000, 4016,28096, 
+   4024,32192, 4040,8128, 4048,12224, 4056,16320, 4064,20416, 4072,24512, 
+   4080,28608, 4088,32704, 4112,8200, 4120,12296, 4128,16392, 4136,20488, 
+   4144,24584, 4152,28680, 4168,4616, 4176,8712, 4184,12808, 4192,16904, 
+   4200,21000, 4208,25096, 4216,29192, 4232,5128, 4240,9224, 4248,13320, 
+   4256,17416, 4264,21512, 4272,25608, 4280,29704, 4296,5640, 4304,9736, 
+   4312,13832, 4320,17928, 4328,22024, 4336,26120, 4344,30216, 4360,6152, 
+   4368,10248, 4376,14344, 4384,18440, 4392,22536, 4400,26632, 4408,30728, 
+   4424,6664, 4432,10760, 4440,14856, 4448,18952, 4456,23048, 4464,27144, 
+   4472,31240, 4488,7176, 4496,11272, 4504,15368, 4512,19464, 4520,23560, 
+   4528,27656, 4536,31752, 4552,7688, 4560,11784, 4568,15880, 4576,19976, 
+   4584,24072, 4592,28168, 4600,32264, 4624,8264, 4632,12360, 4640,16456, 
+   4648,20552, 4656,24648, 4664,28744, 4688,8776, 4696,12872, 4704,16968, 
+   4712,21064, 4720,25160, 4728,29256, 4744,5192, 4752,9288, 4760,13384, 
+   4768,17480, 4776,21576, 4784,25672, 4792,29768, 4808,5704, 4816,9800, 
+   4824,13896, 4832,17992, 4840,22088, 4848,26184, 4856,30280, 4872,6216, 
+   4880,10312, 4888,14408, 4896,18504, 4904,22600, 4912,26696, 4920,30792, 
+   4936,6728, 4944,10824, 4952,14920, 4960,19016, 4968,23112, 4976,27208, 
+   4984,31304, 5000,7240, 5008,11336, 5016,15432, 5024,19528, 5032,23624, 
+   5040,27720, 5048,31816, 5064,7752, 5072,11848, 5080,15944, 5088,20040, 
+   5096,24136, 5104,28232, 5112,32328, 5136,8328, 5144,12424, 5152,16520, 
+   5160,20616, 5168,24712, 5176,28808, 5200,8840, 5208,12936, 5216,17032, 
+   5224,21128, 5232,25224, 5240,29320, 5264,9352, 5272,13448, 5280,17544, 
+   5288,21640, 5296,25736, 5304,29832, 5320,5768, 5328,9864, 5336,13960, 
+   5344,18056, 5352,22152, 5360,26248, 5368,30344, 5384,6280, 5392,10376, 
+   5400,14472, 5408,18568, 5416,22664, 5424,26760, 5432,30856, 5448,6792, 
+   5456,10888, 5464,14984, 5472,19080, 5480,23176, 5488,27272, 5496,31368, 
+   5512,7304, 5520,11400, 5528,15496, 5536,19592, 5544,23688, 5552,27784, 
+   5560,31880, 5576,7816, 5584,11912, 5592,16008, 5600,20104, 5608,24200, 
+   5616,28296, 5624,32392, 5648,8392, 5656,12488, 5664,16584, 5672,20680, 
+   5680,24776, 5688,28872, 5712,8904, 5720,13000, 5728,17096, 5736,21192, 
+   5744,25288, 5752,29384, 5776,9416, 5784,13512, 5792,17608, 5800,21704, 
+   5808,25800, 5816,29896, 5840,9928, 5848,14024, 5856,18120, 5864,22216, 
+   5872,26312, 5880,30408, 5896,6344, 5904,10440, 5912,14536, 5920,18632, 
+   5928,22728, 5936,26824, 5944,30920, 5960,6856, 5968,10952, 5976,15048, 
+   5984,19144, 5992,23240, 6000,27336, 6008,31432, 6024,7368, 6032,11464, 
+   6040,15560, 6048,19656, 6056,23752, 6064,27848, 6072,31944, 6088,7880, 
+   6096,11976, 6104,16072, 6112,20168, 6120,24264, 6128,28360, 6136,32456, 
+   6160,8456, 6168,12552, 6176,16648, 6184,20744, 6192,24840, 6200,28936, 
+   6224,8968, 6232,13064, 6240,17160, 6248,21256, 6256,25352, 6264,29448, 
+   6288,9480, 6296,13576, 6304,17672, 6312,21768, 6320,25864, 6328,29960, 
+   6352,9992, 6360,14088, 6368,18184, 6376,22280, 6384,26376, 6392,30472, 
+   6416,10504, 6424,14600, 6432,18696, 6440,22792, 6448,26888, 6456,30984, 
+   6472,6920, 6480,11016, 6488,15112, 6496,19208, 6504,23304, 6512,27400, 
+   6520,31496, 6536,7432, 6544,11528, 6552,15624, 6560,19720, 6568,23816, 
+   6576,27912, 6584,32008, 6600,7944, 6608,12040, 6616,16136, 6624,20232, 
+   6632,24328, 6640,28424, 6648,32520, 6672,8520, 6680,12616, 6688,16712, 
+   6696,20808, 6704,24904, 6712,29000, 6736,9032, 6744,13128, 6752,17224, 
+   6760,21320, 6768,25416, 6776,29512, 6800,9544, 6808,13640, 6816,17736, 
+   6824,21832, 6832,25928, 6840,30024, 6864,10056, 6872,14152, 6880,18248, 
+   6888,22344, 6896,26440, 6904,30536, 6928,10568, 6936,14664, 6944,18760, 
+   6952,22856, 6960,26952, 6968,31048, 6992,11080, 7000,15176, 7008,19272, 
+   7016,23368, 7024,27464, 7032,31560, 7048,7496, 7056,11592, 7064,15688, 
+   7072,19784, 7080,23880, 7088,27976, 7096,32072, 7112,8008, 7120,12104, 
+   7128,16200, 7136,20296, 7144,24392, 7152,28488, 7160,32584, 7184,8584, 
+   7192,12680, 7200,16776, 7208,20872, 7216,24968, 7224,29064, 7248,9096, 
+   7256,13192, 7264,17288, 7272,21384, 7280,25480, 7288,29576, 7312,9608, 
+   7320,13704, 7328,17800, 7336,21896, 7344,25992, 7352,30088, 7376,10120, 
+   7384,14216, 7392,18312, 7400,22408, 7408,26504, 7416,30600, 7440,10632, 
+   7448,14728, 7456,18824, 7464,22920, 7472,27016, 7480,31112, 7504,11144, 
+   7512,15240, 7520,19336, 7528,23432, 7536,27528, 7544,31624, 7568,11656, 
+   7576,15752, 7584,19848, 7592,23944, 7600,28040, 7608,32136, 7624,8072, 
+   7632,12168, 7640,16264, 7648,20360, 7656,24456, 7664,28552, 7672,32648, 
+   7696,8648, 7704,12744, 7712,16840, 7720,20936, 7728,25032, 7736,29128, 
+   7760,9160, 7768,13256, 7776,17352, 7784,21448, 7792,25544, 7800,29640, 
+   7824,9672, 7832,13768, 7840,17864, 7848,21960, 7856,26056, 7864,30152, 
+   7888,10184, 7896,14280, 7904,18376, 7912,22472, 7920,26568, 7928,30664, 
+   7952,10696, 7960,14792, 7968,18888, 7976,22984, 7984,27080, 7992,31176, 
+   8016,11208, 8024,15304, 8032,19400, 8040,23496, 8048,27592, 8056,31688, 
+   8080,11720, 8088,15816, 8096,19912, 8104,24008, 8112,28104, 8120,32200, 
+   8144,12232, 8152,16328, 8160,20424, 8168,24520, 8176,28616, 8184,32712, 
+   8216,12304, 8224,16400, 8232,20496, 8240,24592, 8248,28688, 8272,8720, 
+   8280,12816, 8288,16912, 8296,21008, 8304,25104, 8312,29200, 8336,9232, 
+   8344,13328, 8352,17424, 8360,21520, 8368,25616, 8376,29712, 8400,9744, 
+   8408,13840, 8416,17936, 8424,22032, 8432,26128, 8440,30224, 8464,10256, 
+   8472,14352, 8480,18448, 8488,22544, 8496,26640, 8504,30736, 8528,10768, 
+   8536,14864, 8544,18960, 8552,23056, 8560,27152, 8568,31248, 8592,11280, 
+   8600,15376, 8608,19472, 8616,23568, 8624,27664, 8632,31760, 8656,11792, 
+   8664,15888, 8672,19984, 8680,24080, 8688,28176, 8696,32272, 8728,12368, 
+   8736,16464, 8744,20560, 8752,24656, 8760,28752, 8792,12880, 8800,16976, 
+   8808,21072, 8816,25168, 8824,29264, 8848,9296, 8856,13392, 8864,17488, 
+   8872,21584, 8880,25680, 8888,29776, 8912,9808, 8920,13904, 8928,18000, 
+   8936,22096, 8944,26192, 8952,30288, 8976,10320, 8984,14416, 8992,18512, 
+   9000,22608, 9008,26704, 9016,30800, 9040,10832, 9048,14928, 9056,19024, 
+   9064,23120, 9072,27216, 9080,31312, 9104,11344, 9112,15440, 9120,19536, 
+   9128,23632, 9136,27728, 9144,31824, 9168,11856, 9176,15952, 9184,20048, 
+   9192,24144, 9200,28240, 9208,32336, 9240,12432, 9248,16528, 9256,20624, 
+   9264,24720, 9272,28816, 9304,12944, 9312,17040, 9320,21136, 9328,25232, 
+   9336,29328, 9368,13456, 9376,17552, 9384,21648, 9392,25744, 9400,29840, 
+   9424,9872, 9432,13968, 9440,18064, 9448,22160, 9456,26256, 9464,30352, 
+   9488,10384, 9496,14480, 9504,18576, 9512,22672, 9520,26768, 9528,30864, 
+   9552,10896, 9560,14992, 9568,19088, 9576,23184, 9584,27280, 9592,31376, 
+   9616,11408, 9624,15504, 9632,19600, 9640,23696, 9648,27792, 9656,31888, 
+   9680,11920, 9688,16016, 9696,20112, 9704,24208, 9712,28304, 9720,32400, 
+   9752,12496, 9760,16592, 9768,20688, 9776,24784, 9784,28880, 9816,13008, 
+   9824,17104, 9832,21200, 9840,25296, 9848,29392, 9880,13520, 9888,17616, 
+   9896,21712, 9904,25808, 9912,29904, 9944,14032, 9952,18128, 9960,22224, 
+   9968,26320, 9976,30416, 10000,10448, 10008,14544, 10016,18640, 10024,22736, 
+   10032,26832, 10040,30928, 10064,10960, 10072,15056, 10080,19152, 
+   10088,23248, 10096,27344, 10104,31440, 10128,11472, 10136,15568, 
+   10144,19664, 10152,23760, 10160,27856, 10168,31952, 10192,11984, 
+   10200,16080, 10208,20176, 10216,24272, 10224,28368, 10232,32464, 
+   10264,12560, 10272,16656, 10280,20752, 10288,24848, 10296,28944, 
+   10328,13072, 10336,17168, 10344,21264, 10352,25360, 10360,29456, 
+   10392,13584, 10400,17680, 10408,21776, 10416,25872, 10424,29968, 
+   10456,14096, 10464,18192, 10472,22288, 10480,26384, 10488,30480, 
+   10520,14608, 10528,18704, 10536,22800, 10544,26896, 10552,30992, 
+   10576,11024, 10584,15120, 10592,19216, 10600,23312, 10608,27408, 
+   10616,31504, 10640,11536, 10648,15632, 10656,19728, 10664,23824, 
+   10672,27920, 10680,32016, 10704,12048, 10712,16144, 10720,20240, 
+   10728,24336, 10736,28432, 10744,32528, 10776,12624, 10784,16720, 
+   10792,20816, 10800,24912, 10808,29008, 10840,13136, 10848,17232, 
+   10856,21328, 10864,25424, 10872,29520, 10904,13648, 10912,17744, 
+   10920,21840, 10928,25936, 10936,30032, 10968,14160, 10976,18256, 
+   10984,22352, 10992,26448, 11000,30544, 11032,14672, 11040,18768, 
+   11048,22864, 11056,26960, 11064,31056, 11096,15184, 11104,19280, 
+   11112,23376, 11120,27472, 11128,31568, 11152,11600, 11160,15696, 
+   11168,19792, 11176,23888, 11184,27984, 11192,32080, 11216,12112, 
+   11224,16208, 11232,20304, 11240,24400, 11248,28496, 11256,32592, 
+   11288,12688, 11296,16784, 11304,20880, 11312,24976, 11320,29072, 
+   11352,13200, 11360,17296, 11368,21392, 11376,25488, 11384,29584, 
+   11416,13712, 11424,17808, 11432,21904, 11440,26000, 11448,30096, 
+   11480,14224, 11488,18320, 11496,22416, 11504,26512, 11512,30608, 
+   11544,14736, 11552,18832, 11560,22928, 11568,27024, 11576,31120, 
+   11608,15248, 11616,19344, 11624,23440, 11632,27536, 11640,31632, 
+   11672,15760, 11680,19856, 11688,23952, 11696,28048, 11704,32144, 
+   11728,12176, 11736,16272, 11744,20368, 11752,24464, 11760,28560, 
+   11768,32656, 11800,12752, 11808,16848, 11816,20944, 11824,25040, 
+   11832,29136, 11864,13264, 11872,17360, 11880,21456, 11888,25552, 
+   11896,29648, 11928,13776, 11936,17872, 11944,21968, 11952,26064, 
+   11960,30160, 11992,14288, 12000,18384, 12008,22480, 12016,26576, 
+   12024,30672, 12056,14800, 12064,18896, 12072,22992, 12080,27088, 
+   12088,31184, 12120,15312, 12128,19408, 12136,23504, 12144,27600, 
+   12152,31696, 12184,15824, 12192,19920, 12200,24016, 12208,28112, 
+   12216,32208, 12248,16336, 12256,20432, 12264,24528, 12272,28624, 
+   12280,32720, 12320,16408, 12328,20504, 12336,24600, 12344,28696, 
+   12376,12824, 12384,16920, 12392,21016, 12400,25112, 12408,29208, 
+   12440,13336, 12448,17432, 12456,21528, 12464,25624, 12472,29720, 
+   12504,13848, 12512,17944, 12520,22040, 12528,26136, 12536,30232, 
+   12568,14360, 12576,18456, 12584,22552, 12592,26648, 12600,30744, 
+   12632,14872, 12640,18968, 12648,23064, 12656,27160, 12664,31256, 
+   12696,15384, 12704,19480, 12712,23576, 12720,27672, 12728,31768, 
+   12760,15896, 12768,19992, 12776,24088, 12784,28184, 12792,32280, 
+   12832,16472, 12840,20568, 12848,24664, 12856,28760, 12896,16984, 
+   12904,21080, 12912,25176, 12920,29272, 12952,13400, 12960,17496, 
+   12968,21592, 12976,25688, 12984,29784, 13016,13912, 13024,18008, 
+   13032,22104, 13040,26200, 13048,30296, 13080,14424, 13088,18520, 
+   13096,22616, 13104,26712, 13112,30808, 13144,14936, 13152,19032, 
+   13160,23128, 13168,27224, 13176,31320, 13208,15448, 13216,19544, 
+   13224,23640, 13232,27736, 13240,31832, 13272,15960, 13280,20056, 
+   13288,24152, 13296,28248, 13304,32344, 13344,16536, 13352,20632, 
+   13360,24728, 13368,28824, 13408,17048, 13416,21144, 13424,25240, 
+   13432,29336, 13472,17560, 13480,21656, 13488,25752, 13496,29848, 
+   13528,13976, 13536,18072, 13544,22168, 13552,26264, 13560,30360, 
+   13592,14488, 13600,18584, 13608,22680, 13616,26776, 13624,30872, 
+   13656,15000, 13664,19096, 13672,23192, 13680,27288, 13688,31384, 
+   13720,15512, 13728,19608, 13736,23704, 13744,27800, 13752,31896, 
+   13784,16024, 13792,20120, 13800,24216, 13808,28312, 13816,32408, 
+   13856,16600, 13864,20696, 13872,24792, 13880,28888, 13920,17112, 
+   13928,21208, 13936,25304, 13944,29400, 13984,17624, 13992,21720, 
+   14000,25816, 14008,29912, 14048,18136, 14056,22232, 14064,26328, 
+   14072,30424, 14104,14552, 14112,18648, 14120,22744, 14128,26840, 
+   14136,30936, 14168,15064, 14176,19160, 14184,23256, 14192,27352, 
+   14200,31448, 14232,15576, 14240,19672, 14248,23768, 14256,27864, 
+   14264,31960, 14296,16088, 14304,20184, 14312,24280, 14320,28376, 
+   14328,32472, 14368,16664, 14376,20760, 14384,24856, 14392,28952, 
+   14432,17176, 14440,21272, 14448,25368, 14456,29464, 14496,17688, 
+   14504,21784, 14512,25880, 14520,29976, 14560,18200, 14568,22296, 
+   14576,26392, 14584,30488, 14624,18712, 14632,22808, 14640,26904, 
+   14648,31000, 14680,15128, 14688,19224, 14696,23320, 14704,27416, 
+   14712,31512, 14744,15640, 14752,19736, 14760,23832, 14768,27928, 
+   14776,32024, 14808,16152, 14816,20248, 14824,24344, 14832,28440, 
+   14840,32536, 14880,16728, 14888,20824, 14896,24920, 14904,29016, 
+   14944,17240, 14952,21336, 14960,25432, 14968,29528, 15008,17752, 
+   15016,21848, 15024,25944, 15032,30040, 15072,18264, 15080,22360, 
+   15088,26456, 15096,30552, 15136,18776, 15144,22872, 15152,26968, 
+   15160,31064, 15200,19288, 15208,23384, 15216,27480, 15224,31576, 
+   15256,15704, 15264,19800, 15272,23896, 15280,27992, 15288,32088, 
+   15320,16216, 15328,20312, 15336,24408, 15344,28504, 15352,32600, 
+   15392,16792, 15400,20888, 15408,24984, 15416,29080, 15456,17304, 
+   15464,21400, 15472,25496, 15480,29592, 15520,17816, 15528,21912, 
+   15536,26008, 15544,30104, 15584,18328, 15592,22424, 15600,26520, 
+   15608,30616, 15648,18840, 15656,22936, 15664,27032, 15672,31128, 
+   15712,19352, 15720,23448, 15728,27544, 15736,31640, 15776,19864, 
+   15784,23960, 15792,28056, 15800,32152, 15832,16280, 15840,20376, 
+   15848,24472, 15856,28568, 15864,32664, 15904,16856, 15912,20952, 
+   15920,25048, 15928,29144, 15968,17368, 15976,21464, 15984,25560, 
+   15992,29656, 16032,17880, 16040,21976, 16048,26072, 16056,30168, 
+   16096,18392, 16104,22488, 16112,26584, 16120,30680, 16160,18904, 
+   16168,23000, 16176,27096, 16184,31192, 16224,19416, 16232,23512, 
+   16240,27608, 16248,31704, 16288,19928, 16296,24024, 16304,28120, 
+   16312,32216, 16352,20440, 16360,24536, 16368,28632, 16376,32728, 
+   16424,20512, 16432,24608, 16440,28704, 16480,16928, 16488,21024, 
+   16496,25120, 16504,29216, 16544,17440, 16552,21536, 16560,25632, 
+   16568,29728, 16608,17952, 16616,22048, 16624,26144, 16632,30240, 
+   16672,18464, 16680,22560, 16688,26656, 16696,30752, 16736,18976, 
+   16744,23072, 16752,27168, 16760,31264, 16800,19488, 16808,23584, 
+   16816,27680, 16824,31776, 16864,20000, 16872,24096, 16880,28192, 
+   16888,32288, 16936,20576, 16944,24672, 16952,28768, 17000,21088, 
+   17008,25184, 17016,29280, 17056,17504, 17064,21600, 17072,25696, 
+   17080,29792, 17120,18016, 17128,22112, 17136,26208, 17144,30304, 
+   17184,18528, 17192,22624, 17200,26720, 17208,30816, 17248,19040, 
+   17256,23136, 17264,27232, 17272,31328, 17312,19552, 17320,23648, 
+   17328,27744, 17336,31840, 17376,20064, 17384,24160, 17392,28256, 
+   17400,32352, 17448,20640, 17456,24736, 17464,28832, 17512,21152, 
+   17520,25248, 17528,29344, 17576,21664, 17584,25760, 17592,29856, 
+   17632,18080, 17640,22176, 17648,26272, 17656,30368, 17696,18592, 
+   17704,22688, 17712,26784, 17720,30880, 17760,19104, 17768,23200, 
+   17776,27296, 17784,31392, 17824,19616, 17832,23712, 17840,27808, 
+   17848,31904, 17888,20128, 17896,24224, 17904,28320, 17912,32416, 
+   17960,20704, 17968,24800, 17976,28896, 18024,21216, 18032,25312, 
+   18040,29408, 18088,21728, 18096,25824, 18104,29920, 18152,22240, 
+   18160,26336, 18168,30432, 18208,18656, 18216,22752, 18224,26848, 
+   18232,30944, 18272,19168, 18280,23264, 18288,27360, 18296,31456, 
+   18336,19680, 18344,23776, 18352,27872, 18360,31968, 18400,20192, 
+   18408,24288, 18416,28384, 18424,32480, 18472,20768, 18480,24864, 
+   18488,28960, 18536,21280, 18544,25376, 18552,29472, 18600,21792, 
+   18608,25888, 18616,29984, 18664,22304, 18672,26400, 18680,30496, 
+   18728,22816, 18736,26912, 18744,31008, 18784,19232, 18792,23328, 
+   18800,27424, 18808,31520, 18848,19744, 18856,23840, 18864,27936, 
+   18872,32032, 18912,20256, 18920,24352, 18928,28448, 18936,32544, 
+   18984,20832, 18992,24928, 19000,29024, 19048,21344, 19056,25440, 
+   19064,29536, 19112,21856, 19120,25952, 19128,30048, 19176,22368, 
+   19184,26464, 19192,30560, 19240,22880, 19248,26976, 19256,31072, 
+   19304,23392, 19312,27488, 19320,31584, 19360,19808, 19368,23904, 
+   19376,28000, 19384,32096, 19424,20320, 19432,24416, 19440,28512, 
+   19448,32608, 19496,20896, 19504,24992, 19512,29088, 19560,21408, 
+   19568,25504, 19576,29600, 19624,21920, 19632,26016, 19640,30112, 
+   19688,22432, 19696,26528, 19704,30624, 19752,22944, 19760,27040, 
+   19768,31136, 19816,23456, 19824,27552, 19832,31648, 19880,23968, 
+   19888,28064, 19896,32160, 19936,20384, 19944,24480, 19952,28576, 
+   19960,32672, 20008,20960, 20016,25056, 20024,29152, 20072,21472, 
+   20080,25568, 20088,29664, 20136,21984, 20144,26080, 20152,30176, 
+   20200,22496, 20208,26592, 20216,30688, 20264,23008, 20272,27104, 
+   20280,31200, 20328,23520, 20336,27616, 20344,31712, 20392,24032, 
+   20400,28128, 20408,32224, 20456,24544, 20464,28640, 20472,32736, 
+   20528,24616, 20536,28712, 20584,21032, 20592,25128, 20600,29224, 
+   20648,21544, 20656,25640, 20664,29736, 20712,22056, 20720,26152, 
+   20728,30248, 20776,22568, 20784,26664, 20792,30760, 20840,23080, 
+   20848,27176, 20856,31272, 20904,23592, 20912,27688, 20920,31784, 
+   20968,24104, 20976,28200, 20984,32296, 21040,24680, 21048,28776, 
+   21104,25192, 21112,29288, 21160,21608, 21168,25704, 21176,29800, 
+   21224,22120, 21232,26216, 21240,30312, 21288,22632, 21296,26728, 
+   21304,30824, 21352,23144, 21360,27240, 21368,31336, 21416,23656, 
+   21424,27752, 21432,31848, 21480,24168, 21488,28264, 21496,32360, 
+   21552,24744, 21560,28840, 21616,25256, 21624,29352, 21680,25768, 
+   21688,29864, 21736,22184, 21744,26280, 21752,30376, 21800,22696, 
+   21808,26792, 21816,30888, 21864,23208, 21872,27304, 21880,31400, 
+   21928,23720, 21936,27816, 21944,31912, 21992,24232, 22000,28328, 
+   22008,32424, 22064,24808, 22072,28904, 22128,25320, 22136,29416, 
+   22192,25832, 22200,29928, 22256,26344, 22264,30440, 22312,22760, 
+   22320,26856, 22328,30952, 22376,23272, 22384,27368, 22392,31464, 
+   22440,23784, 22448,27880, 22456,31976, 22504,24296, 22512,28392, 
+   22520,32488, 22576,24872, 22584,28968, 22640,25384, 22648,29480, 
+   22704,25896, 22712,29992, 22768,26408, 22776,30504, 22832,26920, 
+   22840,31016, 22888,23336, 22896,27432, 22904,31528, 22952,23848, 
+   22960,27944, 22968,32040, 23016,24360, 23024,28456, 23032,32552, 
+   23088,24936, 23096,29032, 23152,25448, 23160,29544, 23216,25960, 
+   23224,30056, 23280,26472, 23288,30568, 23344,26984, 23352,31080, 
+   23408,27496, 23416,31592, 23464,23912, 23472,28008, 23480,32104, 
+   23528,24424, 23536,28520, 23544,32616, 23600,25000, 23608,29096, 
+   23664,25512, 23672,29608, 23728,26024, 23736,30120, 23792,26536, 
+   23800,30632, 23856,27048, 23864,31144, 23920,27560, 23928,31656, 
+   23984,28072, 23992,32168, 24040,24488, 24048,28584, 24056,32680, 
+   24112,25064, 24120,29160, 24176,25576, 24184,29672, 24240,26088, 
+   24248,30184, 24304,26600, 24312,30696, 24368,27112, 24376,31208, 
+   24432,27624, 24440,31720, 24496,28136, 24504,32232, 24560,28648, 
+   24568,32744, 24632,28720, 24688,25136, 24696,29232, 24752,25648, 
+   24760,29744, 24816,26160, 24824,30256, 24880,26672, 24888,30768, 
+   24944,27184, 24952,31280, 25008,27696, 25016,31792, 25072,28208, 
+   25080,32304, 25144,28784, 25208,29296, 25264,25712, 25272,29808, 
+   25328,26224, 25336,30320, 25392,26736, 25400,30832, 25456,27248, 
+   25464,31344, 25520,27760, 25528,31856, 25584,28272, 25592,32368, 
+   25656,28848, 25720,29360, 25784,29872, 25840,26288, 25848,30384, 
+   25904,26800, 25912,30896, 25968,27312, 25976,31408, 26032,27824, 
+   26040,31920, 26096,28336, 26104,32432, 26168,28912, 26232,29424, 
+   26296,29936, 26360,30448, 26416,26864, 26424,30960, 26480,27376, 
+   26488,31472, 26544,27888, 26552,31984, 26608,28400, 26616,32496, 
+   26680,28976, 26744,29488, 26808,30000, 26872,30512, 26936,31024, 
+   26992,27440, 27000,31536, 27056,27952, 27064,32048, 27120,28464, 
+   27128,32560, 27192,29040, 27256,29552, 27320,30064, 27384,30576, 
+   27448,31088, 27512,31600, 27568,28016, 27576,32112, 27632,28528, 
+   27640,32624, 27704,29104, 27768,29616, 27832,30128, 27896,30640, 
+   27960,31152, 28024,31664, 28088,32176, 28144,28592, 28152,32688, 
+   28216,29168, 28280,29680, 28344,30192, 28408,30704, 28472,31216, 
+   28536,31728, 28600,32240, 28664,32752, 28792,29240, 28856,29752, 
+   28920,30264, 28984,30776, 29048,31288, 29112,31800, 29176,32312, 
+   29368,29816, 29432,30328, 29496,30840, 29560,31352, 29624,31864, 
+   29688,32376, 29944,30392, 30008,30904, 30072,31416, 30136,31928, 
+   30200,32440, 30520,30968, 30584,31480, 30648,31992, 30712,32504, 
+   31096,31544, 31160,32056, 31224,32568, 31672,32120, 31736,32632, 
+   32248,32696
+};
+
+
+const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH] = 
+{
+   //radix 4, size 12
+   8,64, 16,32, 24,96, 40,80, 56,112, 88,104
+};
+
+const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH] = 
+{
+   //4x2, size 24
+   8,128, 16,64, 24,192, 40,160, 48,96, 56,224, 72,144,
+   88,208, 104,176, 120,240, 152,200, 184,232
+};
+
+const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH] = 
+{   
+   //radix 4, size 56
+   8,256, 16,128, 24,384, 32,64, 40,320, 48,192, 56,448, 72,288, 80,160, 88,416, 104,352,
+   112,224, 120,480, 136,272, 152,400, 168,336, 176,208, 184,464, 200,304, 216,432,
+   232,368, 248,496, 280,392, 296,328, 312,456, 344,424, 376,488, 440,472
+};
+
+const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH] = 
+{
+   //4x2, size 112
+   8,512, 16,256, 24,768, 32,128, 40,640, 48,384, 56,896, 72,576, 80,320, 88,832, 96,192,
+   104,704, 112,448, 120,960, 136,544, 144,288, 152,800, 168,672, 176,416, 184,928, 200,608,
+   208,352, 216,864, 232,736, 240,480, 248,992, 264,528, 280,784, 296,656, 304,400, 312,912,
+   328,592, 344,848, 360,720, 368,464, 376,976, 392,560, 408,816, 424,688, 440,944, 456,624,
+   472,880, 488,752, 504,1008, 536,776, 552,648, 568,904, 600,840, 616,712, 632,968,
+   664,808, 696,936, 728,872, 760,1000, 824,920, 888,984
+};
+
+const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH] = 
+{
+   //radix 4, size 240
+   8,1024, 16,512, 24,1536, 32,256, 40,1280, 48,768, 56,1792, 64,128, 72,1152, 80,640,
+   88,1664, 96,384, 104,1408, 112,896, 120,1920, 136,1088, 144,576, 152,1600, 160,320,
+   168,1344, 176,832, 184,1856, 200,1216, 208,704, 216,1728, 224,448, 232,1472, 240,960,
+   248,1984, 264,1056, 272,544, 280,1568, 296,1312, 304,800, 312,1824, 328,1184, 336,672,
+   344,1696, 352,416, 360,1440, 368,928, 376,1952, 392,1120, 400,608, 408,1632, 424,1376,
+   432,864, 440,1888, 456,1248, 464,736, 472,1760, 488,1504, 496,992, 504,2016, 520,1040,
+   536,1552, 552,1296, 560,784, 568,1808, 584,1168, 592,656, 600,1680, 616,1424, 624,912,
+   632,1936, 648,1104, 664,1616, 680,1360, 688,848, 696,1872, 712,1232, 728,1744, 744,1488,
+   752,976, 760,2000, 776,1072, 792,1584, 808,1328, 824,1840, 840,1200, 856,1712, 872,1456,
+   880,944, 888,1968, 904,1136, 920,1648, 936,1392, 952,1904, 968,1264, 984,1776, 1000,1520,
+   1016,2032, 1048,1544, 1064,1288, 1080,1800, 1096,1160, 1112,1672, 1128,1416, 1144,1928,
+   1176,1608, 1192,1352, 1208,1864, 1240,1736, 1256,1480, 1272,1992, 1304,1576, 1336,1832,
+   1368,1704, 1384,1448, 1400,1960, 1432,1640, 1464,1896, 1496,1768, 1528,2024, 1592,1816,
+   1624,1688, 1656,1944, 1720,1880, 1784,2008, 1912,1976
+};
+
+const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH] = 
+{
+   //4x2, size 480
+   8,2048, 16,1024, 24,3072, 32,512, 40,2560, 48,1536, 56,3584, 64,256, 72,2304, 80,1280,
+   88,3328, 96,768, 104,2816, 112,1792, 120,3840, 136,2176, 144,1152, 152,3200, 160,640,
+   168,2688, 176,1664, 184,3712, 192,384, 200,2432, 208,1408, 216,3456, 224,896, 232,2944,
+   240,1920, 248,3968, 264,2112, 272,1088, 280,3136, 288,576, 296,2624, 304,1600, 312,3648,
+   328,2368, 336,1344, 344,3392, 352,832, 360,2880, 368,1856, 376,3904, 392,2240, 400,1216,
+   408,3264, 416,704, 424,2752, 432,1728, 440,3776, 456,2496, 464,1472, 472,3520, 480,960,
+   488,3008, 496,1984, 504,4032, 520,2080, 528,1056, 536,3104, 552,2592, 560,1568, 568,3616,
+   584,2336, 592,1312, 600,3360, 608,800, 616,2848, 624,1824, 632,3872, 648,2208, 656,1184,
+   664,3232, 680,2720, 688,1696, 696,3744, 712,2464, 720,1440, 728,3488, 736,928, 744,2976,
+   752,1952, 760,4000, 776,2144, 784,1120, 792,3168, 808,2656, 816,1632, 824,3680, 840,2400,
+   848,1376, 856,3424, 872,2912, 880,1888, 888,3936, 904,2272, 912,1248, 920,3296, 936,2784,
+   944,1760, 952,3808, 968,2528, 976,1504, 984,3552, 1000,3040, 1008,2016, 1016,4064,
+   1032,2064, 1048,3088, 1064,2576, 1072,1552, 1080,3600, 1096,2320, 1104,1296, 1112,3344,
+   1128,2832, 1136,1808, 1144,3856, 1160,2192, 1176,3216, 1192,2704, 1200,1680, 1208,3728,
+   1224,2448, 1232,1424, 1240,3472, 1256,2960, 1264,1936, 1272,3984, 1288,2128, 1304,3152,
+   1320,2640, 1328,1616, 1336,3664, 1352,2384, 1368,3408, 1384,2896, 1392,1872, 1400,3920,
+   1416,2256, 1432,3280, 1448,2768, 1456,1744, 1464,3792, 1480,2512, 1496,3536, 1512,3024,
+   1520,2000, 1528,4048, 1544,2096, 1560,3120, 1576,2608, 1592,3632, 1608,2352, 1624,3376,
+   1640,2864, 1648,1840, 1656,3888, 1672,2224, 1688,3248, 1704,2736, 1720,3760, 1736,2480,
+   1752,3504, 1768,2992, 1776,1968, 1784,4016, 1800,2160, 1816,3184, 1832,2672, 1848,3696,
+   1864,2416, 1880,3440, 1896,2928, 1912,3952, 1928,2288, 1944,3312, 1960,2800, 1976,3824,
+   1992,2544, 2008,3568, 2024,3056, 2040,4080, 2072,3080, 2088,2568, 2104,3592, 2120,2312,
+   2136,3336, 2152,2824, 2168,3848, 2200,3208, 2216,2696, 2232,3720, 2248,2440, 2264,3464,
+   2280,2952, 2296,3976, 2328,3144, 2344,2632, 2360,3656, 2392,3400, 2408,2888, 2424,3912,
+   2456,3272, 2472,2760, 2488,3784, 2520,3528, 2536,3016, 2552,4040, 2584,3112, 2616,3624,
+   2648,3368, 2664,2856, 2680,3880, 2712,3240, 2744,3752, 2776,3496, 2792,2984, 2808,4008,
+   2840,3176, 2872,3688, 2904,3432, 2936,3944, 2968,3304, 3000,3816, 3032,3560, 3064,4072,
+   3128,3608, 3160,3352, 3192,3864, 3256,3736, 3288,3480, 3320,3992, 3384,3672, 3448,3928,
+   3512,3800, 3576,4056, 3704,3896, 3832,4024
+};
+
+const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH] = 
+{
+    //radix 4, size 992
+    8,4096, 16,2048, 24,6144, 32,1024, 40,5120, 48,3072, 56,7168, 64,512, 72,4608, 
+    80,2560, 88,6656, 96,1536, 104,5632, 112,3584, 120,7680, 128,256, 136,4352, 
+    144,2304, 152,6400, 160,1280, 168,5376, 176,3328, 184,7424, 192,768, 200,4864, 
+    208,2816, 216,6912, 224,1792, 232,5888, 240,3840, 248,7936, 264,4224, 272,2176, 
+    280,6272, 288,1152, 296,5248, 304,3200, 312,7296, 320,640, 328,4736, 336,2688, 
+    344,6784, 352,1664, 360,5760, 368,3712, 376,7808, 392,4480, 400,2432, 408,6528, 
+    416,1408, 424,5504, 432,3456, 440,7552, 448,896, 456,4992, 464,2944, 472,7040, 
+    480,1920, 488,6016, 496,3968, 504,8064, 520,4160, 528,2112, 536,6208, 544,1088, 
+    552,5184, 560,3136, 568,7232, 584,4672, 592,2624, 600,6720, 608,1600, 616,5696, 
+    624,3648, 632,7744, 648,4416, 656,2368, 664,6464, 672,1344, 680,5440, 688,3392, 
+    696,7488, 704,832, 712,4928, 720,2880, 728,6976, 736,1856, 744,5952, 752,3904, 
+    760,8000, 776,4288, 784,2240, 792,6336, 800,1216, 808,5312, 816,3264, 824,7360, 
+    840,4800, 848,2752, 856,6848, 864,1728, 872,5824, 880,3776, 888,7872, 904,4544, 
+    912,2496, 920,6592, 928,1472, 936,5568, 944,3520, 952,7616, 968,5056, 976,3008, 
+    984,7104, 992,1984, 1000,6080, 1008,4032, 1016,8128, 1032,4128, 1040,2080, 
+    1048,6176, 1064,5152, 1072,3104, 1080,7200, 1096,4640, 1104,2592, 1112,6688, 
+    1120,1568, 1128,5664, 1136,3616, 1144,7712, 1160,4384, 1168,2336, 1176,6432, 
+    1184,1312, 1192,5408, 1200,3360, 1208,7456, 1224,4896, 1232,2848, 1240,6944, 
+    1248,1824, 1256,5920, 1264,3872, 1272,7968, 1288,4256, 1296,2208, 1304,6304, 
+    1320,5280, 1328,3232, 1336,7328, 1352,4768, 1360,2720, 1368,6816, 1376,1696, 
+    1384,5792, 1392,3744, 1400,7840, 1416,4512, 1424,2464, 1432,6560, 1448,5536, 
+    1456,3488, 1464,7584, 1480,5024, 1488,2976, 1496,7072, 1504,1952, 1512,6048, 
+    1520,4000, 1528,8096, 1544,4192, 1552,2144, 1560,6240, 1576,5216, 1584,3168, 
+    1592,7264, 1608,4704, 1616,2656, 1624,6752, 1640,5728, 1648,3680, 1656,7776, 
+    1672,4448, 1680,2400, 1688,6496, 1704,5472, 1712,3424, 1720,7520, 1736,4960, 
+    1744,2912, 1752,7008, 1760,1888, 1768,5984, 1776,3936, 1784,8032, 1800,4320, 
+    1808,2272, 1816,6368, 1832,5344, 1840,3296, 1848,7392, 1864,4832, 1872,2784, 
+    1880,6880, 1896,5856, 1904,3808, 1912,7904, 1928,4576, 1936,2528, 1944,6624, 
+    1960,5600, 1968,3552, 1976,7648, 1992,5088, 2000,3040, 2008,7136, 2024,6112, 
+    2032,4064, 2040,8160, 2056,4112, 2072,6160, 2088,5136, 2096,3088, 2104,7184, 
+    2120,4624, 2128,2576, 2136,6672, 2152,5648, 2160,3600, 2168,7696, 2184,4368, 
+    2192,2320, 2200,6416, 2216,5392, 2224,3344, 2232,7440, 2248,4880, 2256,2832, 
+    2264,6928, 2280,5904, 2288,3856, 2296,7952, 2312,4240, 2328,6288, 2344,5264, 
+    2352,3216, 2360,7312, 2376,4752, 2384,2704, 2392,6800, 2408,5776, 2416,3728, 
+    2424,7824, 2440,4496, 2456,6544, 2472,5520, 2480,3472, 2488,7568, 2504,5008, 
+    2512,2960, 2520,7056, 2536,6032, 2544,3984, 2552,8080, 2568,4176, 2584,6224, 
+    2600,5200, 2608,3152, 2616,7248, 2632,4688, 2648,6736, 2664,5712, 2672,3664, 
+    2680,7760, 2696,4432, 2712,6480, 2728,5456, 2736,3408, 2744,7504, 2760,4944, 
+    2768,2896, 2776,6992, 2792,5968, 2800,3920, 2808,8016, 2824,4304, 2840,6352, 
+    2856,5328, 2864,3280, 2872,7376, 2888,4816, 2904,6864, 2920,5840, 2928,3792, 
+    2936,7888, 2952,4560, 2968,6608, 2984,5584, 2992,3536, 3000,7632, 3016,5072, 
+    3032,7120, 3048,6096, 3056,4048, 3064,8144, 3080,4144, 3096,6192, 3112,5168, 
+    3128,7216, 3144,4656, 3160,6704, 3176,5680, 3184,3632, 3192,7728, 3208,4400, 
+    3224,6448, 3240,5424, 3248,3376, 3256,7472, 3272,4912, 3288,6960, 3304,5936, 
+    3312,3888, 3320,7984, 3336,4272, 3352,6320, 3368,5296, 3384,7344, 3400,4784, 
+    3416,6832, 3432,5808, 3440,3760, 3448,7856, 3464,4528, 3480,6576, 3496,5552, 
+    3512,7600, 3528,5040, 3544,7088, 3560,6064, 3568,4016, 3576,8112, 3592,4208, 
+    3608,6256, 3624,5232, 3640,7280, 3656,4720, 3672,6768, 3688,5744, 3704,7792, 
+    3720,4464, 3736,6512, 3752,5488, 3768,7536, 3784,4976, 3800,7024, 3816,6000, 
+    3824,3952, 3832,8048, 3848,4336, 3864,6384, 3880,5360, 3896,7408, 3912,4848, 
+    3928,6896, 3944,5872, 3960,7920, 3976,4592, 3992,6640, 4008,5616, 4024,7664, 
+    4040,5104, 4056,7152, 4072,6128, 4088,8176, 4120,6152, 4136,5128, 4152,7176, 
+    4168,4616, 4184,6664, 4200,5640, 4216,7688, 4232,4360, 4248,6408, 4264,5384, 
+    4280,7432, 4296,4872, 4312,6920, 4328,5896, 4344,7944, 4376,6280, 4392,5256, 
+    4408,7304, 4424,4744, 4440,6792, 4456,5768, 4472,7816, 4504,6536, 4520,5512, 
+    4536,7560, 4552,5000, 4568,7048, 4584,6024, 4600,8072, 4632,6216, 4648,5192, 
+    4664,7240, 4696,6728, 4712,5704, 4728,7752, 4760,6472, 4776,5448, 4792,7496, 
+    4808,4936, 4824,6984, 4840,5960, 4856,8008, 4888,6344, 4904,5320, 4920,7368, 
+    4952,6856, 4968,5832, 4984,7880, 5016,6600, 5032,5576, 5048,7624, 5080,7112, 
+    5096,6088, 5112,8136, 5144,6184, 5176,7208, 5208,6696, 5224,5672, 5240,7720, 
+    5272,6440, 5288,5416, 5304,7464, 5336,6952, 5352,5928, 5368,7976, 5400,6312, 
+    5432,7336, 5464,6824, 5480,5800, 5496,7848, 5528,6568, 5560,7592, 5592,7080, 
+    5608,6056, 5624,8104, 5656,6248, 5688,7272, 5720,6760, 5752,7784, 5784,6504, 
+    5816,7528, 5848,7016, 5864,5992, 5880,8040, 5912,6376, 5944,7400, 5976,6888, 
+    6008,7912, 6040,6632, 6072,7656, 6104,7144, 6136,8168, 6200,7192, 6232,6680, 
+    6264,7704, 6296,6424, 6328,7448, 6360,6936, 6392,7960, 6456,7320, 6488,6808, 
+    6520,7832, 6584,7576, 6616,7064, 6648,8088, 6712,7256, 6776,7768, 6840,7512, 
+    6872,7000, 6904,8024, 6968,7384, 7032,7896, 7096,7640, 7160,8152, 7288,7736, 
+    7352,7480, 7416,7992, 7544,7864, 7672,8120, 7928,8056 
+};
+
+const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH] = 
+{
+    //4x2, size 1984
+    8,8192, 16,4096, 24,12288, 32,2048, 40,10240, 48,6144, 56,14336, 64,1024, 
+    72,9216, 80,5120, 88,13312, 96,3072, 104,11264, 112,7168, 120,15360, 128,512, 
+    136,8704, 144,4608, 152,12800, 160,2560, 168,10752, 176,6656, 184,14848, 
+    192,1536, 200,9728, 208,5632, 216,13824, 224,3584, 232,11776, 240,7680, 
+    248,15872, 264,8448, 272,4352, 280,12544, 288,2304, 296,10496, 304,6400, 
+    312,14592, 320,1280, 328,9472, 336,5376, 344,13568, 352,3328, 360,11520, 
+    368,7424, 376,15616, 384,768, 392,8960, 400,4864, 408,13056, 416,2816, 
+    424,11008, 432,6912, 440,15104, 448,1792, 456,9984, 464,5888, 472,14080, 
+    480,3840, 488,12032, 496,7936, 504,16128, 520,8320, 528,4224, 536,12416, 
+    544,2176, 552,10368, 560,6272, 568,14464, 576,1152, 584,9344, 592,5248, 
+    600,13440, 608,3200, 616,11392, 624,7296, 632,15488, 648,8832, 656,4736, 
+    664,12928, 672,2688, 680,10880, 688,6784, 696,14976, 704,1664, 712,9856, 
+    720,5760, 728,13952, 736,3712, 744,11904, 752,7808, 760,16000, 776,8576, 
+    784,4480, 792,12672, 800,2432, 808,10624, 816,6528, 824,14720, 832,1408, 
+    840,9600, 848,5504, 856,13696, 864,3456, 872,11648, 880,7552, 888,15744, 
+    904,9088, 912,4992, 920,13184, 928,2944, 936,11136, 944,7040, 952,15232, 
+    960,1920, 968,10112, 976,6016, 984,14208, 992,3968, 1000,12160, 1008,8064, 
+    1016,16256, 1032,8256, 1040,4160, 1048,12352, 1056,2112, 1064,10304, 1072,6208, 
+    1080,14400, 1096,9280, 1104,5184, 1112,13376, 1120,3136, 1128,11328, 1136,7232, 
+    1144,15424, 1160,8768, 1168,4672, 1176,12864, 1184,2624, 1192,10816, 1200,6720, 
+    1208,14912, 1216,1600, 1224,9792, 1232,5696, 1240,13888, 1248,3648, 1256,11840, 
+    1264,7744, 1272,15936, 1288,8512, 1296,4416, 1304,12608, 1312,2368, 1320,10560, 
+    1328,6464, 1336,14656, 1352,9536, 1360,5440, 1368,13632, 1376,3392, 1384,11584, 
+    1392,7488, 1400,15680, 1416,9024, 1424,4928, 1432,13120, 1440,2880, 1448,11072, 
+    1456,6976, 1464,15168, 1472,1856, 1480,10048, 1488,5952, 1496,14144, 1504,3904, 
+    1512,12096, 1520,8000, 1528,16192, 1544,8384, 1552,4288, 1560,12480, 1568,2240, 
+    1576,10432, 1584,6336, 1592,14528, 1608,9408, 1616,5312, 1624,13504, 1632,3264, 
+    1640,11456, 1648,7360, 1656,15552, 1672,8896, 1680,4800, 1688,12992, 1696,2752, 
+    1704,10944, 1712,6848, 1720,15040, 1736,9920, 1744,5824, 1752,14016, 1760,3776, 
+    1768,11968, 1776,7872, 1784,16064, 1800,8640, 1808,4544, 1816,12736, 1824,2496, 
+    1832,10688, 1840,6592, 1848,14784, 1864,9664, 1872,5568, 1880,13760, 1888,3520, 
+    1896,11712, 1904,7616, 1912,15808, 1928,9152, 1936,5056, 1944,13248, 1952,3008, 
+    1960,11200, 1968,7104, 1976,15296, 1992,10176, 2000,6080, 2008,14272, 2016,4032, 
+    2024,12224, 2032,8128, 2040,16320, 2056,8224, 2064,4128, 2072,12320, 2088,10272, 
+    2096,6176, 2104,14368, 2120,9248, 2128,5152, 2136,13344, 2144,3104, 2152,11296, 
+    2160,7200, 2168,15392, 2184,8736, 2192,4640, 2200,12832, 2208,2592, 2216,10784, 
+    2224,6688, 2232,14880, 2248,9760, 2256,5664, 2264,13856, 2272,3616, 2280,11808, 
+    2288,7712, 2296,15904, 2312,8480, 2320,4384, 2328,12576, 2344,10528, 2352,6432, 
+    2360,14624, 2376,9504, 2384,5408, 2392,13600, 2400,3360, 2408,11552, 2416,7456, 
+    2424,15648, 2440,8992, 2448,4896, 2456,13088, 2464,2848, 2472,11040, 2480,6944, 
+    2488,15136, 2504,10016, 2512,5920, 2520,14112, 2528,3872, 2536,12064, 2544,7968, 
+    2552,16160, 2568,8352, 2576,4256, 2584,12448, 2600,10400, 2608,6304, 2616,14496, 
+    2632,9376, 2640,5280, 2648,13472, 2656,3232, 2664,11424, 2672,7328, 2680,15520, 
+    2696,8864, 2704,4768, 2712,12960, 2728,10912, 2736,6816, 2744,15008, 2760,9888, 
+    2768,5792, 2776,13984, 2784,3744, 2792,11936, 2800,7840, 2808,16032, 2824,8608, 
+    2832,4512, 2840,12704, 2856,10656, 2864,6560, 2872,14752, 2888,9632, 2896,5536, 
+    2904,13728, 2912,3488, 2920,11680, 2928,7584, 2936,15776, 2952,9120, 2960,5024, 
+    2968,13216, 2984,11168, 2992,7072, 3000,15264, 3016,10144, 3024,6048, 
+    3032,14240, 3040,4000, 3048,12192, 3056,8096, 3064,16288, 3080,8288, 3088,4192, 
+    3096,12384, 3112,10336, 3120,6240, 3128,14432, 3144,9312, 3152,5216, 3160,13408, 
+    3176,11360, 3184,7264, 3192,15456, 3208,8800, 3216,4704, 3224,12896, 3240,10848, 
+    3248,6752, 3256,14944, 3272,9824, 3280,5728, 3288,13920, 3296,3680, 3304,11872, 
+    3312,7776, 3320,15968, 3336,8544, 3344,4448, 3352,12640, 3368,10592, 3376,6496, 
+    3384,14688, 3400,9568, 3408,5472, 3416,13664, 3432,11616, 3440,7520, 3448,15712, 
+    3464,9056, 3472,4960, 3480,13152, 3496,11104, 3504,7008, 3512,15200, 3528,10080, 
+    3536,5984, 3544,14176, 3552,3936, 3560,12128, 3568,8032, 3576,16224, 3592,8416, 
+    3600,4320, 3608,12512, 3624,10464, 3632,6368, 3640,14560, 3656,9440, 3664,5344, 
+    3672,13536, 3688,11488, 3696,7392, 3704,15584, 3720,8928, 3728,4832, 3736,13024, 
+    3752,10976, 3760,6880, 3768,15072, 3784,9952, 3792,5856, 3800,14048, 3816,12000, 
+    3824,7904, 3832,16096, 3848,8672, 3856,4576, 3864,12768, 3880,10720, 3888,6624, 
+    3896,14816, 3912,9696, 3920,5600, 3928,13792, 3944,11744, 3952,7648, 3960,15840, 
+    3976,9184, 3984,5088, 3992,13280, 4008,11232, 4016,7136, 4024,15328, 4040,10208, 
+    4048,6112, 4056,14304, 4072,12256, 4080,8160, 4088,16352, 4104,8208, 4120,12304, 
+    4136,10256, 4144,6160, 4152,14352, 4168,9232, 4176,5136, 4184,13328, 4200,11280, 
+    4208,7184, 4216,15376, 4232,8720, 4240,4624, 4248,12816, 4264,10768, 4272,6672, 
+    4280,14864, 4296,9744, 4304,5648, 4312,13840, 4328,11792, 4336,7696, 4344,15888, 
+    4360,8464, 4376,12560, 4392,10512, 4400,6416, 4408,14608, 4424,9488, 4432,5392, 
+    4440,13584, 4456,11536, 4464,7440, 4472,15632, 4488,8976, 4496,4880, 4504,13072, 
+    4520,11024, 4528,6928, 4536,15120, 4552,10000, 4560,5904, 4568,14096, 
+    4584,12048, 4592,7952, 4600,16144, 4616,8336, 4632,12432, 4648,10384, 4656,6288, 
+    4664,14480, 4680,9360, 4688,5264, 4696,13456, 4712,11408, 4720,7312, 4728,15504, 
+    4744,8848, 4760,12944, 4776,10896, 4784,6800, 4792,14992, 4808,9872, 4816,5776, 
+    4824,13968, 4840,11920, 4848,7824, 4856,16016, 4872,8592, 4888,12688, 
+    4904,10640, 4912,6544, 4920,14736, 4936,9616, 4944,5520, 4952,13712, 4968,11664, 
+    4976,7568, 4984,15760, 5000,9104, 5016,13200, 5032,11152, 5040,7056, 5048,15248, 
+    5064,10128, 5072,6032, 5080,14224, 5096,12176, 5104,8080, 5112,16272, 5128,8272, 
+    5144,12368, 5160,10320, 5168,6224, 5176,14416, 5192,9296, 5208,13392, 
+    5224,11344, 5232,7248, 5240,15440, 5256,8784, 5272,12880, 5288,10832, 5296,6736, 
+    5304,14928, 5320,9808, 5328,5712, 5336,13904, 5352,11856, 5360,7760, 5368,15952, 
+    5384,8528, 5400,12624, 5416,10576, 5424,6480, 5432,14672, 5448,9552, 5464,13648, 
+    5480,11600, 5488,7504, 5496,15696, 5512,9040, 5528,13136, 5544,11088, 5552,6992, 
+    5560,15184, 5576,10064, 5584,5968, 5592,14160, 5608,12112, 5616,8016, 
+    5624,16208, 5640,8400, 5656,12496, 5672,10448, 5680,6352, 5688,14544, 5704,9424, 
+    5720,13520, 5736,11472, 5744,7376, 5752,15568, 5768,8912, 5784,13008, 
+    5800,10960, 5808,6864, 5816,15056, 5832,9936, 5848,14032, 5864,11984, 5872,7888, 
+    5880,16080, 5896,8656, 5912,12752, 5928,10704, 5936,6608, 5944,14800, 5960,9680, 
+    5976,13776, 5992,11728, 6000,7632, 6008,15824, 6024,9168, 6040,13264, 
+    6056,11216, 6064,7120, 6072,15312, 6088,10192, 6104,14288, 6120,12240, 
+    6128,8144, 6136,16336, 6152,8240, 6168,12336, 6184,10288, 6200,14384, 6216,9264, 
+    6232,13360, 6248,11312, 6256,7216, 6264,15408, 6280,8752, 6296,12848, 
+    6312,10800, 6320,6704, 6328,14896, 6344,9776, 6360,13872, 6376,11824, 6384,7728, 
+    6392,15920, 6408,8496, 6424,12592, 6440,10544, 6456,14640, 6472,9520, 
+    6488,13616, 6504,11568, 6512,7472, 6520,15664, 6536,9008, 6552,13104, 
+    6568,11056, 6576,6960, 6584,15152, 6600,10032, 6616,14128, 6632,12080, 
+    6640,7984, 6648,16176, 6664,8368, 6680,12464, 6696,10416, 6712,14512, 6728,9392, 
+    6744,13488, 6760,11440, 6768,7344, 6776,15536, 6792,8880, 6808,12976, 
+    6824,10928, 6840,15024, 6856,9904, 6872,14000, 6888,11952, 6896,7856, 
+    6904,16048, 6920,8624, 6936,12720, 6952,10672, 6968,14768, 6984,9648, 
+    7000,13744, 7016,11696, 7024,7600, 7032,15792, 7048,9136, 7064,13232, 
+    7080,11184, 7096,15280, 7112,10160, 7128,14256, 7144,12208, 7152,8112, 
+    7160,16304, 7176,8304, 7192,12400, 7208,10352, 7224,14448, 7240,9328, 
+    7256,13424, 7272,11376, 7288,15472, 7304,8816, 7320,12912, 7336,10864, 
+    7352,14960, 7368,9840, 7384,13936, 7400,11888, 7408,7792, 7416,15984, 7432,8560, 
+    7448,12656, 7464,10608, 7480,14704, 7496,9584, 7512,13680, 7528,11632, 
+    7544,15728, 7560,9072, 7576,13168, 7592,11120, 7608,15216, 7624,10096, 
+    7640,14192, 7656,12144, 7664,8048, 7672,16240, 7688,8432, 7704,12528, 
+    7720,10480, 7736,14576, 7752,9456, 7768,13552, 7784,11504, 7800,15600, 
+    7816,8944, 7832,13040, 7848,10992, 7864,15088, 7880,9968, 7896,14064, 
+    7912,12016, 7928,16112, 7944,8688, 7960,12784, 7976,10736, 7992,14832, 
+    8008,9712, 8024,13808, 8040,11760, 8056,15856, 8072,9200, 8088,13296, 
+    8104,11248, 8120,15344, 8136,10224, 8152,14320, 8168,12272, 8184,16368, 
+    8216,12296, 8232,10248, 8248,14344, 8264,9224, 8280,13320, 8296,11272, 
+    8312,15368, 8328,8712, 8344,12808, 8360,10760, 8376,14856, 8392,9736, 
+    8408,13832, 8424,11784, 8440,15880, 8472,12552, 8488,10504, 8504,14600, 
+    8520,9480, 8536,13576, 8552,11528, 8568,15624, 8584,8968, 8600,13064, 
+    8616,11016, 8632,15112, 8648,9992, 8664,14088, 8680,12040, 8696,16136, 
+    8728,12424, 8744,10376, 8760,14472, 8776,9352, 8792,13448, 8808,11400, 
+    8824,15496, 8856,12936, 8872,10888, 8888,14984, 8904,9864, 8920,13960, 
+    8936,11912, 8952,16008, 8984,12680, 9000,10632, 9016,14728, 9032,9608, 
+    9048,13704, 9064,11656, 9080,15752, 9112,13192, 9128,11144, 9144,15240, 
+    9160,10120, 9176,14216, 9192,12168, 9208,16264, 9240,12360, 9256,10312, 
+    9272,14408, 9304,13384, 9320,11336, 9336,15432, 9368,12872, 9384,10824, 
+    9400,14920, 9416,9800, 9432,13896, 9448,11848, 9464,15944, 9496,12616, 
+    9512,10568, 9528,14664, 9560,13640, 9576,11592, 9592,15688, 9624,13128, 
+    9640,11080, 9656,15176, 9672,10056, 9688,14152, 9704,12104, 9720,16200, 
+    9752,12488, 9768,10440, 9784,14536, 9816,13512, 9832,11464, 9848,15560, 
+    9880,13000, 9896,10952, 9912,15048, 9944,14024, 9960,11976, 9976,16072, 
+    10008,12744, 10024,10696, 10040,14792, 10072,13768, 10088,11720, 10104,15816, 
+    10136,13256, 10152,11208, 10168,15304, 10200,14280, 10216,12232, 10232,16328, 
+    10264,12328, 10296,14376, 10328,13352, 10344,11304, 10360,15400, 10392,12840, 
+    10408,10792, 10424,14888, 10456,13864, 10472,11816, 10488,15912, 10520,12584, 
+    10552,14632, 10584,13608, 10600,11560, 10616,15656, 10648,13096, 10664,11048, 
+    10680,15144, 10712,14120, 10728,12072, 10744,16168, 10776,12456, 10808,14504, 
+    10840,13480, 10856,11432, 10872,15528, 10904,12968, 10936,15016, 10968,13992, 
+    10984,11944, 11000,16040, 11032,12712, 11064,14760, 11096,13736, 11112,11688, 
+    11128,15784, 11160,13224, 11192,15272, 11224,14248, 11240,12200, 11256,16296, 
+    11288,12392, 11320,14440, 11352,13416, 11384,15464, 11416,12904, 11448,14952, 
+    11480,13928, 11496,11880, 11512,15976, 11544,12648, 11576,14696, 11608,13672, 
+    11640,15720, 11672,13160, 11704,15208, 11736,14184, 11752,12136, 11768,16232, 
+    11800,12520, 11832,14568, 11864,13544, 11896,15592, 11928,13032, 11960,15080, 
+    11992,14056, 12024,16104, 12056,12776, 12088,14824, 12120,13800, 12152,15848, 
+    12184,13288, 12216,15336, 12248,14312, 12280,16360, 12344,14360, 12376,13336, 
+    12408,15384, 12440,12824, 12472,14872, 12504,13848, 12536,15896, 12600,14616, 
+    12632,13592, 12664,15640, 12696,13080, 12728,15128, 12760,14104, 12792,16152, 
+    12856,14488, 12888,13464, 12920,15512, 12984,15000, 13016,13976, 13048,16024, 
+    13112,14744, 13144,13720, 13176,15768, 13240,15256, 13272,14232, 13304,16280, 
+    13368,14424, 13432,15448, 13496,14936, 13528,13912, 13560,15960, 13624,14680, 
+    13688,15704, 13752,15192, 13784,14168, 13816,16216, 13880,14552, 13944,15576, 
+    14008,15064, 14072,16088, 14136,14808, 14200,15832, 14264,15320, 14328,16344, 
+    14456,15416, 14520,14904, 14584,15928, 14712,15672, 14776,15160, 14840,16184, 
+    14968,15544, 15096,16056, 15224,15800, 15352,16312, 15608,15992, 15864,16248 
+};
+
+const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH] = 
+{
+    //radix 4, size 4032
+    8,16384, 16,8192, 24,24576, 32,4096, 40,20480, 48,12288, 56,28672, 64,2048, 
+    72,18432, 80,10240, 88,26624, 96,6144, 104,22528, 112,14336, 120,30720, 
+    128,1024, 136,17408, 144,9216, 152,25600, 160,5120, 168,21504, 176,13312, 
+    184,29696, 192,3072, 200,19456, 208,11264, 216,27648, 224,7168, 232,23552, 
+    240,15360, 248,31744, 256,512, 264,16896, 272,8704, 280,25088, 288,4608, 
+    296,20992, 304,12800, 312,29184, 320,2560, 328,18944, 336,10752, 344,27136, 
+    352,6656, 360,23040, 368,14848, 376,31232, 384,1536, 392,17920, 400,9728, 
+    408,26112, 416,5632, 424,22016, 432,13824, 440,30208, 448,3584, 456,19968, 
+    464,11776, 472,28160, 480,7680, 488,24064, 496,15872, 504,32256, 520,16640, 
+    528,8448, 536,24832, 544,4352, 552,20736, 560,12544, 568,28928, 576,2304, 
+    584,18688, 592,10496, 600,26880, 608,6400, 616,22784, 624,14592, 632,30976, 
+    640,1280, 648,17664, 656,9472, 664,25856, 672,5376, 680,21760, 688,13568, 
+    696,29952, 704,3328, 712,19712, 720,11520, 728,27904, 736,7424, 744,23808, 
+    752,15616, 760,32000, 776,17152, 784,8960, 792,25344, 800,4864, 808,21248, 
+    816,13056, 824,29440, 832,2816, 840,19200, 848,11008, 856,27392, 864,6912, 
+    872,23296, 880,15104, 888,31488, 896,1792, 904,18176, 912,9984, 920,26368, 
+    928,5888, 936,22272, 944,14080, 952,30464, 960,3840, 968,20224, 976,12032, 
+    984,28416, 992,7936, 1000,24320, 1008,16128, 1016,32512, 1032,16512, 1040,8320, 
+    1048,24704, 1056,4224, 1064,20608, 1072,12416, 1080,28800, 1088,2176, 
+    1096,18560, 1104,10368, 1112,26752, 1120,6272, 1128,22656, 1136,14464, 
+    1144,30848, 1160,17536, 1168,9344, 1176,25728, 1184,5248, 1192,21632, 
+    1200,13440, 1208,29824, 1216,3200, 1224,19584, 1232,11392, 1240,27776, 
+    1248,7296, 1256,23680, 1264,15488, 1272,31872, 1288,17024, 1296,8832, 
+    1304,25216, 1312,4736, 1320,21120, 1328,12928, 1336,29312, 1344,2688, 
+    1352,19072, 1360,10880, 1368,27264, 1376,6784, 1384,23168, 1392,14976, 
+    1400,31360, 1408,1664, 1416,18048, 1424,9856, 1432,26240, 1440,5760, 1448,22144, 
+    1456,13952, 1464,30336, 1472,3712, 1480,20096, 1488,11904, 1496,28288, 
+    1504,7808, 1512,24192, 1520,16000, 1528,32384, 1544,16768, 1552,8576, 
+    1560,24960, 1568,4480, 1576,20864, 1584,12672, 1592,29056, 1600,2432, 
+    1608,18816, 1616,10624, 1624,27008, 1632,6528, 1640,22912, 1648,14720, 
+    1656,31104, 1672,17792, 1680,9600, 1688,25984, 1696,5504, 1704,21888, 
+    1712,13696, 1720,30080, 1728,3456, 1736,19840, 1744,11648, 1752,28032, 
+    1760,7552, 1768,23936, 1776,15744, 1784,32128, 1800,17280, 1808,9088, 
+    1816,25472, 1824,4992, 1832,21376, 1840,13184, 1848,29568, 1856,2944, 
+    1864,19328, 1872,11136, 1880,27520, 1888,7040, 1896,23424, 1904,15232, 
+    1912,31616, 1928,18304, 1936,10112, 1944,26496, 1952,6016, 1960,22400, 
+    1968,14208, 1976,30592, 1984,3968, 1992,20352, 2000,12160, 2008,28544, 
+    2016,8064, 2024,24448, 2032,16256, 2040,32640, 2056,16448, 2064,8256, 
+    2072,24640, 2080,4160, 2088,20544, 2096,12352, 2104,28736, 2120,18496, 
+    2128,10304, 2136,26688, 2144,6208, 2152,22592, 2160,14400, 2168,30784, 
+    2184,17472, 2192,9280, 2200,25664, 2208,5184, 2216,21568, 2224,13376, 
+    2232,29760, 2240,3136, 2248,19520, 2256,11328, 2264,27712, 2272,7232, 
+    2280,23616, 2288,15424, 2296,31808, 2312,16960, 2320,8768, 2328,25152, 
+    2336,4672, 2344,21056, 2352,12864, 2360,29248, 2368,2624, 2376,19008, 
+    2384,10816, 2392,27200, 2400,6720, 2408,23104, 2416,14912, 2424,31296, 
+    2440,17984, 2448,9792, 2456,26176, 2464,5696, 2472,22080, 2480,13888, 
+    2488,30272, 2496,3648, 2504,20032, 2512,11840, 2520,28224, 2528,7744, 
+    2536,24128, 2544,15936, 2552,32320, 2568,16704, 2576,8512, 2584,24896, 
+    2592,4416, 2600,20800, 2608,12608, 2616,28992, 2632,18752, 2640,10560, 
+    2648,26944, 2656,6464, 2664,22848, 2672,14656, 2680,31040, 2696,17728, 
+    2704,9536, 2712,25920, 2720,5440, 2728,21824, 2736,13632, 2744,30016, 2752,3392, 
+    2760,19776, 2768,11584, 2776,27968, 2784,7488, 2792,23872, 2800,15680, 
+    2808,32064, 2824,17216, 2832,9024, 2840,25408, 2848,4928, 2856,21312, 
+    2864,13120, 2872,29504, 2888,19264, 2896,11072, 2904,27456, 2912,6976, 
+    2920,23360, 2928,15168, 2936,31552, 2952,18240, 2960,10048, 2968,26432, 
+    2976,5952, 2984,22336, 2992,14144, 3000,30528, 3008,3904, 3016,20288, 
+    3024,12096, 3032,28480, 3040,8000, 3048,24384, 3056,16192, 3064,32576, 
+    3080,16576, 3088,8384, 3096,24768, 3104,4288, 3112,20672, 3120,12480, 
+    3128,28864, 3144,18624, 3152,10432, 3160,26816, 3168,6336, 3176,22720, 
+    3184,14528, 3192,30912, 3208,17600, 3216,9408, 3224,25792, 3232,5312, 
+    3240,21696, 3248,13504, 3256,29888, 3272,19648, 3280,11456, 3288,27840, 
+    3296,7360, 3304,23744, 3312,15552, 3320,31936, 3336,17088, 3344,8896, 
+    3352,25280, 3360,4800, 3368,21184, 3376,12992, 3384,29376, 3400,19136, 
+    3408,10944, 3416,27328, 3424,6848, 3432,23232, 3440,15040, 3448,31424, 
+    3464,18112, 3472,9920, 3480,26304, 3488,5824, 3496,22208, 3504,14016, 
+    3512,30400, 3520,3776, 3528,20160, 3536,11968, 3544,28352, 3552,7872, 
+    3560,24256, 3568,16064, 3576,32448, 3592,16832, 3600,8640, 3608,25024, 
+    3616,4544, 3624,20928, 3632,12736, 3640,29120, 3656,18880, 3664,10688, 
+    3672,27072, 3680,6592, 3688,22976, 3696,14784, 3704,31168, 3720,17856, 
+    3728,9664, 3736,26048, 3744,5568, 3752,21952, 3760,13760, 3768,30144, 
+    3784,19904, 3792,11712, 3800,28096, 3808,7616, 3816,24000, 3824,15808, 
+    3832,32192, 3848,17344, 3856,9152, 3864,25536, 3872,5056, 3880,21440, 
+    3888,13248, 3896,29632, 3912,19392, 3920,11200, 3928,27584, 3936,7104, 
+    3944,23488, 3952,15296, 3960,31680, 3976,18368, 3984,10176, 3992,26560, 
+    4000,6080, 4008,22464, 4016,14272, 4024,30656, 4040,20416, 4048,12224, 
+    4056,28608, 4064,8128, 4072,24512, 4080,16320, 4088,32704, 4104,16416, 
+    4112,8224, 4120,24608, 4136,20512, 4144,12320, 4152,28704, 4168,18464, 
+    4176,10272, 4184,26656, 4192,6176, 4200,22560, 4208,14368, 4216,30752, 
+    4232,17440, 4240,9248, 4248,25632, 4256,5152, 4264,21536, 4272,13344, 
+    4280,29728, 4296,19488, 4304,11296, 4312,27680, 4320,7200, 4328,23584, 
+    4336,15392, 4344,31776, 4360,16928, 4368,8736, 4376,25120, 4384,4640, 
+    4392,21024, 4400,12832, 4408,29216, 4424,18976, 4432,10784, 4440,27168, 
+    4448,6688, 4456,23072, 4464,14880, 4472,31264, 4488,17952, 4496,9760, 
+    4504,26144, 4512,5664, 4520,22048, 4528,13856, 4536,30240, 4552,20000, 
+    4560,11808, 4568,28192, 4576,7712, 4584,24096, 4592,15904, 4600,32288, 
+    4616,16672, 4624,8480, 4632,24864, 4648,20768, 4656,12576, 4664,28960, 
+    4680,18720, 4688,10528, 4696,26912, 4704,6432, 4712,22816, 4720,14624, 
+    4728,31008, 4744,17696, 4752,9504, 4760,25888, 4768,5408, 4776,21792, 
+    4784,13600, 4792,29984, 4808,19744, 4816,11552, 4824,27936, 4832,7456, 
+    4840,23840, 4848,15648, 4856,32032, 4872,17184, 4880,8992, 4888,25376, 
+    4904,21280, 4912,13088, 4920,29472, 4936,19232, 4944,11040, 4952,27424, 
+    4960,6944, 4968,23328, 4976,15136, 4984,31520, 5000,18208, 5008,10016, 
+    5016,26400, 5024,5920, 5032,22304, 5040,14112, 5048,30496, 5064,20256, 
+    5072,12064, 5080,28448, 5088,7968, 5096,24352, 5104,16160, 5112,32544, 
+    5128,16544, 5136,8352, 5144,24736, 5160,20640, 5168,12448, 5176,28832, 
+    5192,18592, 5200,10400, 5208,26784, 5216,6304, 5224,22688, 5232,14496, 
+    5240,30880, 5256,17568, 5264,9376, 5272,25760, 5288,21664, 5296,13472, 
+    5304,29856, 5320,19616, 5328,11424, 5336,27808, 5344,7328, 5352,23712, 
+    5360,15520, 5368,31904, 5384,17056, 5392,8864, 5400,25248, 5416,21152, 
+    5424,12960, 5432,29344, 5448,19104, 5456,10912, 5464,27296, 5472,6816, 
+    5480,23200, 5488,15008, 5496,31392, 5512,18080, 5520,9888, 5528,26272, 
+    5536,5792, 5544,22176, 5552,13984, 5560,30368, 5576,20128, 5584,11936, 
+    5592,28320, 5600,7840, 5608,24224, 5616,16032, 5624,32416, 5640,16800, 
+    5648,8608, 5656,24992, 5672,20896, 5680,12704, 5688,29088, 5704,18848, 
+    5712,10656, 5720,27040, 5728,6560, 5736,22944, 5744,14752, 5752,31136, 
+    5768,17824, 5776,9632, 5784,26016, 5800,21920, 5808,13728, 5816,30112, 
+    5832,19872, 5840,11680, 5848,28064, 5856,7584, 5864,23968, 5872,15776, 
+    5880,32160, 5896,17312, 5904,9120, 5912,25504, 5928,21408, 5936,13216, 
+    5944,29600, 5960,19360, 5968,11168, 5976,27552, 5984,7072, 5992,23456, 
+    6000,15264, 6008,31648, 6024,18336, 6032,10144, 6040,26528, 6056,22432, 
+    6064,14240, 6072,30624, 6088,20384, 6096,12192, 6104,28576, 6112,8096, 
+    6120,24480, 6128,16288, 6136,32672, 6152,16480, 6160,8288, 6168,24672, 
+    6184,20576, 6192,12384, 6200,28768, 6216,18528, 6224,10336, 6232,26720, 
+    6248,22624, 6256,14432, 6264,30816, 6280,17504, 6288,9312, 6296,25696, 
+    6312,21600, 6320,13408, 6328,29792, 6344,19552, 6352,11360, 6360,27744, 
+    6368,7264, 6376,23648, 6384,15456, 6392,31840, 6408,16992, 6416,8800, 
+    6424,25184, 6440,21088, 6448,12896, 6456,29280, 6472,19040, 6480,10848, 
+    6488,27232, 6496,6752, 6504,23136, 6512,14944, 6520,31328, 6536,18016, 
+    6544,9824, 6552,26208, 6568,22112, 6576,13920, 6584,30304, 6600,20064, 
+    6608,11872, 6616,28256, 6624,7776, 6632,24160, 6640,15968, 6648,32352, 
+    6664,16736, 6672,8544, 6680,24928, 6696,20832, 6704,12640, 6712,29024, 
+    6728,18784, 6736,10592, 6744,26976, 6760,22880, 6768,14688, 6776,31072, 
+    6792,17760, 6800,9568, 6808,25952, 6824,21856, 6832,13664, 6840,30048, 
+    6856,19808, 6864,11616, 6872,28000, 6880,7520, 6888,23904, 6896,15712, 
+    6904,32096, 6920,17248, 6928,9056, 6936,25440, 6952,21344, 6960,13152, 
+    6968,29536, 6984,19296, 6992,11104, 7000,27488, 7016,23392, 7024,15200, 
+    7032,31584, 7048,18272, 7056,10080, 7064,26464, 7080,22368, 7088,14176, 
+    7096,30560, 7112,20320, 7120,12128, 7128,28512, 7136,8032, 7144,24416, 
+    7152,16224, 7160,32608, 7176,16608, 7184,8416, 7192,24800, 7208,20704, 
+    7216,12512, 7224,28896, 7240,18656, 7248,10464, 7256,26848, 7272,22752, 
+    7280,14560, 7288,30944, 7304,17632, 7312,9440, 7320,25824, 7336,21728, 
+    7344,13536, 7352,29920, 7368,19680, 7376,11488, 7384,27872, 7400,23776, 
+    7408,15584, 7416,31968, 7432,17120, 7440,8928, 7448,25312, 7464,21216, 
+    7472,13024, 7480,29408, 7496,19168, 7504,10976, 7512,27360, 7528,23264, 
+    7536,15072, 7544,31456, 7560,18144, 7568,9952, 7576,26336, 7592,22240, 
+    7600,14048, 7608,30432, 7624,20192, 7632,12000, 7640,28384, 7648,7904, 
+    7656,24288, 7664,16096, 7672,32480, 7688,16864, 7696,8672, 7704,25056, 
+    7720,20960, 7728,12768, 7736,29152, 7752,18912, 7760,10720, 7768,27104, 
+    7784,23008, 7792,14816, 7800,31200, 7816,17888, 7824,9696, 7832,26080, 
+    7848,21984, 7856,13792, 7864,30176, 7880,19936, 7888,11744, 7896,28128, 
+    7912,24032, 7920,15840, 7928,32224, 7944,17376, 7952,9184, 7960,25568, 
+    7976,21472, 7984,13280, 7992,29664, 8008,19424, 8016,11232, 8024,27616, 
+    8040,23520, 8048,15328, 8056,31712, 8072,18400, 8080,10208, 8088,26592, 
+    8104,22496, 8112,14304, 8120,30688, 8136,20448, 8144,12256, 8152,28640, 
+    8168,24544, 8176,16352, 8184,32736, 8200,16400, 8216,24592, 8232,20496, 
+    8240,12304, 8248,28688, 8264,18448, 8272,10256, 8280,26640, 8296,22544, 
+    8304,14352, 8312,30736, 8328,17424, 8336,9232, 8344,25616, 8360,21520, 
+    8368,13328, 8376,29712, 8392,19472, 8400,11280, 8408,27664, 8424,23568, 
+    8432,15376, 8440,31760, 8456,16912, 8464,8720, 8472,25104, 8488,21008, 
+    8496,12816, 8504,29200, 8520,18960, 8528,10768, 8536,27152, 8552,23056, 
+    8560,14864, 8568,31248, 8584,17936, 8592,9744, 8600,26128, 8616,22032, 
+    8624,13840, 8632,30224, 8648,19984, 8656,11792, 8664,28176, 8680,24080, 
+    8688,15888, 8696,32272, 8712,16656, 8728,24848, 8744,20752, 8752,12560, 
+    8760,28944, 8776,18704, 8784,10512, 8792,26896, 8808,22800, 8816,14608, 
+    8824,30992, 8840,17680, 8848,9488, 8856,25872, 8872,21776, 8880,13584, 
+    8888,29968, 8904,19728, 8912,11536, 8920,27920, 8936,23824, 8944,15632, 
+    8952,32016, 8968,17168, 8984,25360, 9000,21264, 9008,13072, 9016,29456, 
+    9032,19216, 9040,11024, 9048,27408, 9064,23312, 9072,15120, 9080,31504, 
+    9096,18192, 9104,10000, 9112,26384, 9128,22288, 9136,14096, 9144,30480, 
+    9160,20240, 9168,12048, 9176,28432, 9192,24336, 9200,16144, 9208,32528, 
+    9224,16528, 9240,24720, 9256,20624, 9264,12432, 9272,28816, 9288,18576, 
+    9296,10384, 9304,26768, 9320,22672, 9328,14480, 9336,30864, 9352,17552, 
+    9368,25744, 9384,21648, 9392,13456, 9400,29840, 9416,19600, 9424,11408, 
+    9432,27792, 9448,23696, 9456,15504, 9464,31888, 9480,17040, 9496,25232, 
+    9512,21136, 9520,12944, 9528,29328, 9544,19088, 9552,10896, 9560,27280, 
+    9576,23184, 9584,14992, 9592,31376, 9608,18064, 9616,9872, 9624,26256, 
+    9640,22160, 9648,13968, 9656,30352, 9672,20112, 9680,11920, 9688,28304, 
+    9704,24208, 9712,16016, 9720,32400, 9736,16784, 9752,24976, 9768,20880, 
+    9776,12688, 9784,29072, 9800,18832, 9808,10640, 9816,27024, 9832,22928, 
+    9840,14736, 9848,31120, 9864,17808, 9880,26000, 9896,21904, 9904,13712, 
+    9912,30096, 9928,19856, 9936,11664, 9944,28048, 9960,23952, 9968,15760, 
+    9976,32144, 9992,17296, 10008,25488, 10024,21392, 10032,13200, 10040,29584, 
+    10056,19344, 10064,11152, 10072,27536, 10088,23440, 10096,15248, 10104,31632, 
+    10120,18320, 10136,26512, 10152,22416, 10160,14224, 10168,30608, 10184,20368, 
+    10192,12176, 10200,28560, 10216,24464, 10224,16272, 10232,32656, 10248,16464, 
+    10264,24656, 10280,20560, 10288,12368, 10296,28752, 10312,18512, 10328,26704, 
+    10344,22608, 10352,14416, 10360,30800, 10376,17488, 10392,25680, 10408,21584, 
+    10416,13392, 10424,29776, 10440,19536, 10448,11344, 10456,27728, 10472,23632, 
+    10480,15440, 10488,31824, 10504,16976, 10520,25168, 10536,21072, 10544,12880, 
+    10552,29264, 10568,19024, 10576,10832, 10584,27216, 10600,23120, 10608,14928, 
+    10616,31312, 10632,18000, 10648,26192, 10664,22096, 10672,13904, 10680,30288, 
+    10696,20048, 10704,11856, 10712,28240, 10728,24144, 10736,15952, 10744,32336, 
+    10760,16720, 10776,24912, 10792,20816, 10800,12624, 10808,29008, 10824,18768, 
+    10840,26960, 10856,22864, 10864,14672, 10872,31056, 10888,17744, 10904,25936, 
+    10920,21840, 10928,13648, 10936,30032, 10952,19792, 10960,11600, 10968,27984, 
+    10984,23888, 10992,15696, 11000,32080, 11016,17232, 11032,25424, 11048,21328, 
+    11056,13136, 11064,29520, 11080,19280, 11096,27472, 11112,23376, 11120,15184, 
+    11128,31568, 11144,18256, 11160,26448, 11176,22352, 11184,14160, 11192,30544, 
+    11208,20304, 11216,12112, 11224,28496, 11240,24400, 11248,16208, 11256,32592, 
+    11272,16592, 11288,24784, 11304,20688, 11312,12496, 11320,28880, 11336,18640, 
+    11352,26832, 11368,22736, 11376,14544, 11384,30928, 11400,17616, 11416,25808, 
+    11432,21712, 11440,13520, 11448,29904, 11464,19664, 11480,27856, 11496,23760, 
+    11504,15568, 11512,31952, 11528,17104, 11544,25296, 11560,21200, 11568,13008, 
+    11576,29392, 11592,19152, 11608,27344, 11624,23248, 11632,15056, 11640,31440, 
+    11656,18128, 11672,26320, 11688,22224, 11696,14032, 11704,30416, 11720,20176, 
+    11728,11984, 11736,28368, 11752,24272, 11760,16080, 11768,32464, 11784,16848, 
+    11800,25040, 11816,20944, 11824,12752, 11832,29136, 11848,18896, 11864,27088, 
+    11880,22992, 11888,14800, 11896,31184, 11912,17872, 11928,26064, 11944,21968, 
+    11952,13776, 11960,30160, 11976,19920, 11992,28112, 12008,24016, 12016,15824, 
+    12024,32208, 12040,17360, 12056,25552, 12072,21456, 12080,13264, 12088,29648, 
+    12104,19408, 12120,27600, 12136,23504, 12144,15312, 12152,31696, 12168,18384, 
+    12184,26576, 12200,22480, 12208,14288, 12216,30672, 12232,20432, 12248,28624, 
+    12264,24528, 12272,16336, 12280,32720, 12296,16432, 12312,24624, 12328,20528, 
+    12344,28720, 12360,18480, 12376,26672, 12392,22576, 12400,14384, 12408,30768, 
+    12424,17456, 12440,25648, 12456,21552, 12464,13360, 12472,29744, 12488,19504, 
+    12504,27696, 12520,23600, 12528,15408, 12536,31792, 12552,16944, 12568,25136, 
+    12584,21040, 12592,12848, 12600,29232, 12616,18992, 12632,27184, 12648,23088, 
+    12656,14896, 12664,31280, 12680,17968, 12696,26160, 12712,22064, 12720,13872, 
+    12728,30256, 12744,20016, 12760,28208, 12776,24112, 12784,15920, 12792,32304, 
+    12808,16688, 12824,24880, 12840,20784, 12856,28976, 12872,18736, 12888,26928, 
+    12904,22832, 12912,14640, 12920,31024, 12936,17712, 12952,25904, 12968,21808, 
+    12976,13616, 12984,30000, 13000,19760, 13016,27952, 13032,23856, 13040,15664, 
+    13048,32048, 13064,17200, 13080,25392, 13096,21296, 13112,29488, 13128,19248, 
+    13144,27440, 13160,23344, 13168,15152, 13176,31536, 13192,18224, 13208,26416, 
+    13224,22320, 13232,14128, 13240,30512, 13256,20272, 13272,28464, 13288,24368, 
+    13296,16176, 13304,32560, 13320,16560, 13336,24752, 13352,20656, 13368,28848, 
+    13384,18608, 13400,26800, 13416,22704, 13424,14512, 13432,30896, 13448,17584, 
+    13464,25776, 13480,21680, 13496,29872, 13512,19632, 13528,27824, 13544,23728, 
+    13552,15536, 13560,31920, 13576,17072, 13592,25264, 13608,21168, 13624,29360, 
+    13640,19120, 13656,27312, 13672,23216, 13680,15024, 13688,31408, 13704,18096, 
+    13720,26288, 13736,22192, 13744,14000, 13752,30384, 13768,20144, 13784,28336, 
+    13800,24240, 13808,16048, 13816,32432, 13832,16816, 13848,25008, 13864,20912, 
+    13880,29104, 13896,18864, 13912,27056, 13928,22960, 13936,14768, 13944,31152, 
+    13960,17840, 13976,26032, 13992,21936, 14008,30128, 14024,19888, 14040,28080, 
+    14056,23984, 14064,15792, 14072,32176, 14088,17328, 14104,25520, 14120,21424, 
+    14136,29616, 14152,19376, 14168,27568, 14184,23472, 14192,15280, 14200,31664, 
+    14216,18352, 14232,26544, 14248,22448, 14264,30640, 14280,20400, 14296,28592, 
+    14312,24496, 14320,16304, 14328,32688, 14344,16496, 14360,24688, 14376,20592, 
+    14392,28784, 14408,18544, 14424,26736, 14440,22640, 14456,30832, 14472,17520, 
+    14488,25712, 14504,21616, 14520,29808, 14536,19568, 14552,27760, 14568,23664, 
+    14576,15472, 14584,31856, 14600,17008, 14616,25200, 14632,21104, 14648,29296, 
+    14664,19056, 14680,27248, 14696,23152, 14704,14960, 14712,31344, 14728,18032, 
+    14744,26224, 14760,22128, 14776,30320, 14792,20080, 14808,28272, 14824,24176, 
+    14832,15984, 14840,32368, 14856,16752, 14872,24944, 14888,20848, 14904,29040, 
+    14920,18800, 14936,26992, 14952,22896, 14968,31088, 14984,17776, 15000,25968, 
+    15016,21872, 15032,30064, 15048,19824, 15064,28016, 15080,23920, 15088,15728, 
+    15096,32112, 15112,17264, 15128,25456, 15144,21360, 15160,29552, 15176,19312, 
+    15192,27504, 15208,23408, 15224,31600, 15240,18288, 15256,26480, 15272,22384, 
+    15288,30576, 15304,20336, 15320,28528, 15336,24432, 15344,16240, 15352,32624, 
+    15368,16624, 15384,24816, 15400,20720, 15416,28912, 15432,18672, 15448,26864, 
+    15464,22768, 15480,30960, 15496,17648, 15512,25840, 15528,21744, 15544,29936, 
+    15560,19696, 15576,27888, 15592,23792, 15608,31984, 15624,17136, 15640,25328, 
+    15656,21232, 15672,29424, 15688,19184, 15704,27376, 15720,23280, 15736,31472, 
+    15752,18160, 15768,26352, 15784,22256, 15800,30448, 15816,20208, 15832,28400, 
+    15848,24304, 15856,16112, 15864,32496, 15880,16880, 15896,25072, 15912,20976, 
+    15928,29168, 15944,18928, 15960,27120, 15976,23024, 15992,31216, 16008,17904, 
+    16024,26096, 16040,22000, 16056,30192, 16072,19952, 16088,28144, 16104,24048, 
+    16120,32240, 16136,17392, 16152,25584, 16168,21488, 16184,29680, 16200,19440, 
+    16216,27632, 16232,23536, 16248,31728, 16264,18416, 16280,26608, 16296,22512, 
+    16312,30704, 16328,20464, 16344,28656, 16360,24560, 16376,32752, 16408,24584, 
+    16424,20488, 16440,28680, 16456,18440, 16472,26632, 16488,22536, 16504,30728, 
+    16520,17416, 16536,25608, 16552,21512, 16568,29704, 16584,19464, 16600,27656, 
+    16616,23560, 16632,31752, 16648,16904, 16664,25096, 16680,21000, 16696,29192, 
+    16712,18952, 16728,27144, 16744,23048, 16760,31240, 16776,17928, 16792,26120, 
+    16808,22024, 16824,30216, 16840,19976, 16856,28168, 16872,24072, 16888,32264, 
+    16920,24840, 16936,20744, 16952,28936, 16968,18696, 16984,26888, 17000,22792, 
+    17016,30984, 17032,17672, 17048,25864, 17064,21768, 17080,29960, 17096,19720, 
+    17112,27912, 17128,23816, 17144,32008, 17176,25352, 17192,21256, 17208,29448, 
+    17224,19208, 17240,27400, 17256,23304, 17272,31496, 17288,18184, 17304,26376, 
+    17320,22280, 17336,30472, 17352,20232, 17368,28424, 17384,24328, 17400,32520, 
+    17432,24712, 17448,20616, 17464,28808, 17480,18568, 17496,26760, 17512,22664, 
+    17528,30856, 17560,25736, 17576,21640, 17592,29832, 17608,19592, 17624,27784, 
+    17640,23688, 17656,31880, 17688,25224, 17704,21128, 17720,29320, 17736,19080, 
+    17752,27272, 17768,23176, 17784,31368, 17800,18056, 17816,26248, 17832,22152, 
+    17848,30344, 17864,20104, 17880,28296, 17896,24200, 17912,32392, 17944,24968, 
+    17960,20872, 17976,29064, 17992,18824, 18008,27016, 18024,22920, 18040,31112, 
+    18072,25992, 18088,21896, 18104,30088, 18120,19848, 18136,28040, 18152,23944, 
+    18168,32136, 18200,25480, 18216,21384, 18232,29576, 18248,19336, 18264,27528, 
+    18280,23432, 18296,31624, 18328,26504, 18344,22408, 18360,30600, 18376,20360, 
+    18392,28552, 18408,24456, 18424,32648, 18456,24648, 18472,20552, 18488,28744, 
+    18520,26696, 18536,22600, 18552,30792, 18584,25672, 18600,21576, 18616,29768, 
+    18632,19528, 18648,27720, 18664,23624, 18680,31816, 18712,25160, 18728,21064, 
+    18744,29256, 18760,19016, 18776,27208, 18792,23112, 18808,31304, 18840,26184, 
+    18856,22088, 18872,30280, 18888,20040, 18904,28232, 18920,24136, 18936,32328, 
+    18968,24904, 18984,20808, 19000,29000, 19032,26952, 19048,22856, 19064,31048, 
+    19096,25928, 19112,21832, 19128,30024, 19144,19784, 19160,27976, 19176,23880, 
+    19192,32072, 19224,25416, 19240,21320, 19256,29512, 19288,27464, 19304,23368, 
+    19320,31560, 19352,26440, 19368,22344, 19384,30536, 19400,20296, 19416,28488, 
+    19432,24392, 19448,32584, 19480,24776, 19496,20680, 19512,28872, 19544,26824, 
+    19560,22728, 19576,30920, 19608,25800, 19624,21704, 19640,29896, 19672,27848, 
+    19688,23752, 19704,31944, 19736,25288, 19752,21192, 19768,29384, 19800,27336, 
+    19816,23240, 19832,31432, 19864,26312, 19880,22216, 19896,30408, 19912,20168, 
+    19928,28360, 19944,24264, 19960,32456, 19992,25032, 20008,20936, 20024,29128, 
+    20056,27080, 20072,22984, 20088,31176, 20120,26056, 20136,21960, 20152,30152, 
+    20184,28104, 20200,24008, 20216,32200, 20248,25544, 20264,21448, 20280,29640, 
+    20312,27592, 20328,23496, 20344,31688, 20376,26568, 20392,22472, 20408,30664, 
+    20440,28616, 20456,24520, 20472,32712, 20504,24616, 20536,28712, 20568,26664, 
+    20584,22568, 20600,30760, 20632,25640, 20648,21544, 20664,29736, 20696,27688, 
+    20712,23592, 20728,31784, 20760,25128, 20776,21032, 20792,29224, 20824,27176, 
+    20840,23080, 20856,31272, 20888,26152, 20904,22056, 20920,30248, 20952,28200, 
+    20968,24104, 20984,32296, 21016,24872, 21048,28968, 21080,26920, 21096,22824, 
+    21112,31016, 21144,25896, 21160,21800, 21176,29992, 21208,27944, 21224,23848, 
+    21240,32040, 21272,25384, 21304,29480, 21336,27432, 21352,23336, 21368,31528, 
+    21400,26408, 21416,22312, 21432,30504, 21464,28456, 21480,24360, 21496,32552, 
+    21528,24744, 21560,28840, 21592,26792, 21608,22696, 21624,30888, 21656,25768, 
+    21688,29864, 21720,27816, 21736,23720, 21752,31912, 21784,25256, 21816,29352, 
+    21848,27304, 21864,23208, 21880,31400, 21912,26280, 21928,22184, 21944,30376, 
+    21976,28328, 21992,24232, 22008,32424, 22040,25000, 22072,29096, 22104,27048, 
+    22120,22952, 22136,31144, 22168,26024, 22200,30120, 22232,28072, 22248,23976, 
+    22264,32168, 22296,25512, 22328,29608, 22360,27560, 22376,23464, 22392,31656, 
+    22424,26536, 22456,30632, 22488,28584, 22504,24488, 22520,32680, 22552,24680, 
+    22584,28776, 22616,26728, 22648,30824, 22680,25704, 22712,29800, 22744,27752, 
+    22760,23656, 22776,31848, 22808,25192, 22840,29288, 22872,27240, 22888,23144, 
+    22904,31336, 22936,26216, 22968,30312, 23000,28264, 23016,24168, 23032,32360, 
+    23064,24936, 23096,29032, 23128,26984, 23160,31080, 23192,25960, 23224,30056, 
+    23256,28008, 23272,23912, 23288,32104, 23320,25448, 23352,29544, 23384,27496, 
+    23416,31592, 23448,26472, 23480,30568, 23512,28520, 23528,24424, 23544,32616, 
+    23576,24808, 23608,28904, 23640,26856, 23672,30952, 23704,25832, 23736,29928, 
+    23768,27880, 23800,31976, 23832,25320, 23864,29416, 23896,27368, 23928,31464, 
+    23960,26344, 23992,30440, 24024,28392, 24040,24296, 24056,32488, 24088,25064, 
+    24120,29160, 24152,27112, 24184,31208, 24216,26088, 24248,30184, 24280,28136, 
+    24312,32232, 24344,25576, 24376,29672, 24408,27624, 24440,31720, 24472,26600, 
+    24504,30696, 24536,28648, 24568,32744, 24632,28696, 24664,26648, 24696,30744, 
+    24728,25624, 24760,29720, 24792,27672, 24824,31768, 24856,25112, 24888,29208, 
+    24920,27160, 24952,31256, 24984,26136, 25016,30232, 25048,28184, 25080,32280, 
+    25144,28952, 25176,26904, 25208,31000, 25240,25880, 25272,29976, 25304,27928, 
+    25336,32024, 25400,29464, 25432,27416, 25464,31512, 25496,26392, 25528,30488, 
+    25560,28440, 25592,32536, 25656,28824, 25688,26776, 25720,30872, 25784,29848, 
+    25816,27800, 25848,31896, 25912,29336, 25944,27288, 25976,31384, 26008,26264, 
+    26040,30360, 26072,28312, 26104,32408, 26168,29080, 26200,27032, 26232,31128, 
+    26296,30104, 26328,28056, 26360,32152, 26424,29592, 26456,27544, 26488,31640, 
+    26552,30616, 26584,28568, 26616,32664, 26680,28760, 26744,30808, 26808,29784, 
+    26840,27736, 26872,31832, 26936,29272, 26968,27224, 27000,31320, 27064,30296, 
+    27096,28248, 27128,32344, 27192,29016, 27256,31064, 27320,30040, 27352,27992, 
+    27384,32088, 27448,29528, 27512,31576, 27576,30552, 27608,28504, 27640,32600, 
+    27704,28888, 27768,30936, 27832,29912, 27896,31960, 27960,29400, 28024,31448, 
+    28088,30424, 28120,28376, 28152,32472, 28216,29144, 28280,31192, 28344,30168, 
+    28408,32216, 28472,29656, 28536,31704, 28600,30680, 28664,32728, 28792,30776, 
+    28856,29752, 28920,31800, 28984,29240, 29048,31288, 29112,30264, 29176,32312, 
+    29304,31032, 29368,30008, 29432,32056, 29560,31544, 29624,30520, 29688,32568, 
+    29816,30904, 29944,31928, 30072,31416, 30136,30392, 30200,32440, 30328,31160, 
+    30456,32184, 30584,31672, 30712,32696, 30968,31864, 31096,31352, 31224,32376, 
+    31480,32120, 31736,32632, 32248,32504 
+};
+
+/**    
+* \par    
+* Example code for Floating-point RFFT Twiddle factors Generation:    
+* \par    
+* <pre>TW = exp(2*pi*i*[0:L/2-1]/L - pi/2*i).' </pre>    
+* \par    
+* Real and Imag values are in interleaved fashion    
+*/
+const float32_t twiddleCoef_rfft_32[32] = {
+0.0f			,	1.0f			,
+0.195090322f	,	0.98078528f 	,
+0.382683432f	,	0.923879533f	,
+0.555570233f	,	0.831469612f	,
+0.707106781f	,	0.707106781f	,
+0.831469612f	,	0.555570233f	,
+0.923879533f	,	0.382683432f    ,	
+0.98078528f		,	0.195090322f	,
+1.0f			,	0.0f			,
+0.98078528f		,	-0.195090322f	,
+0.923879533f	,	-0.382683432f	,
+0.831469612f	,	-0.555570233f	,
+0.707106781f	,	-0.707106781f	,
+0.555570233f	,	-0.831469612f	,
+0.382683432f	,	-0.923879533f	,
+0.195090322f	,	-0.98078528f	
+};
+
+const float32_t twiddleCoef_rfft_64[64] = {
+0.0f,	1.0f,
+0.098017140329561f,	0.995184726672197f,
+0.195090322016128f,	0.98078528040323f,
+0.290284677254462f,	0.956940335732209f,
+0.38268343236509f,	0.923879532511287f,
+0.471396736825998f,	0.881921264348355f,
+0.555570233019602f,	0.831469612302545f,
+0.634393284163645f,	0.773010453362737f,
+0.707106781186547f,	0.707106781186548f,
+0.773010453362737f,	0.634393284163645f,
+0.831469612302545f,	0.555570233019602f,
+0.881921264348355f,	0.471396736825998f,
+0.923879532511287f,	0.38268343236509f,
+0.956940335732209f,	0.290284677254462f,
+0.98078528040323f,	0.195090322016128f,
+0.995184726672197f,	0.098017140329561f,
+1.0f,	0.0f,
+0.995184726672197f,	-0.098017140329561f,
+0.98078528040323f,	-0.195090322016128f,
+0.956940335732209f,	-0.290284677254462f,
+0.923879532511287f,	-0.38268343236509f,
+0.881921264348355f,	-0.471396736825998f,
+0.831469612302545f,	-0.555570233019602f,
+0.773010453362737f,	-0.634393284163645f,
+0.707106781186548f,	-0.707106781186547f,
+0.634393284163645f,	-0.773010453362737f,
+0.555570233019602f,	-0.831469612302545f,
+0.471396736825998f,	-0.881921264348355f,
+0.38268343236509f,	-0.923879532511287f,
+0.290284677254462f,	-0.956940335732209f,
+0.195090322016129f,	-0.98078528040323f,
+0.098017140329561f,	-0.995184726672197f
+};
+
+const float32_t twiddleCoef_rfft_128[128] = {
+    0.000000000f,  1.000000000f,
+    0.049067674f,  0.998795456f,
+    0.098017140f,  0.995184727f,
+    0.146730474f,  0.989176510f,
+    0.195090322f,  0.980785280f,
+    0.242980180f,  0.970031253f,
+    0.290284677f,  0.956940336f,
+    0.336889853f,  0.941544065f,
+    0.382683432f,  0.923879533f,
+    0.427555093f,  0.903989293f,
+    0.471396737f,  0.881921264f,
+    0.514102744f,  0.857728610f,
+    0.555570233f,  0.831469612f,
+    0.595699304f,  0.803207531f,
+    0.634393284f,  0.773010453f,
+    0.671558955f,  0.740951125f,
+    0.707106781f,  0.707106781f,
+    0.740951125f,  0.671558955f,
+    0.773010453f,  0.634393284f,
+    0.803207531f,  0.595699304f,
+    0.831469612f,  0.555570233f,
+    0.857728610f,  0.514102744f,
+    0.881921264f,  0.471396737f,
+    0.903989293f,  0.427555093f,
+    0.923879533f,  0.382683432f,
+    0.941544065f,  0.336889853f,
+    0.956940336f,  0.290284677f,
+    0.970031253f,  0.242980180f,
+    0.980785280f,  0.195090322f,
+    0.989176510f,  0.146730474f,
+    0.995184727f,  0.098017140f,
+    0.998795456f,  0.049067674f,
+    1.000000000f,  0.000000000f,
+    0.998795456f, -0.049067674f,
+    0.995184727f, -0.098017140f,
+    0.989176510f, -0.146730474f,
+    0.980785280f, -0.195090322f,
+    0.970031253f, -0.242980180f,
+    0.956940336f, -0.290284677f,
+    0.941544065f, -0.336889853f,
+    0.923879533f, -0.382683432f,
+    0.903989293f, -0.427555093f,
+    0.881921264f, -0.471396737f,
+    0.857728610f, -0.514102744f,
+    0.831469612f, -0.555570233f,
+    0.803207531f, -0.595699304f,
+    0.773010453f, -0.634393284f,
+    0.740951125f, -0.671558955f,
+    0.707106781f, -0.707106781f,
+    0.671558955f, -0.740951125f,
+    0.634393284f, -0.773010453f,
+    0.595699304f, -0.803207531f,
+    0.555570233f, -0.831469612f,
+    0.514102744f, -0.857728610f,
+    0.471396737f, -0.881921264f,
+    0.427555093f, -0.903989293f,
+    0.382683432f, -0.923879533f,
+    0.336889853f, -0.941544065f,
+    0.290284677f, -0.956940336f,
+    0.242980180f, -0.970031253f,
+    0.195090322f, -0.980785280f,
+    0.146730474f, -0.989176510f,
+    0.098017140f, -0.995184727f,
+    0.049067674f, -0.998795456f
+};
+
+const float32_t twiddleCoef_rfft_256[256] = {
+    0.000000000f,  1.000000000f,
+    0.024541229f,  0.999698819f,
+    0.049067674f,  0.998795456f,
+    0.073564564f,  0.997290457f,
+    0.098017140f,  0.995184727f,
+    0.122410675f,  0.992479535f,
+    0.146730474f,  0.989176510f,
+    0.170961889f,  0.985277642f,
+    0.195090322f,  0.980785280f,
+    0.219101240f,  0.975702130f,
+    0.242980180f,  0.970031253f,
+    0.266712757f,  0.963776066f,
+    0.290284677f,  0.956940336f,
+    0.313681740f,  0.949528181f,
+    0.336889853f,  0.941544065f,
+    0.359895037f,  0.932992799f,
+    0.382683432f,  0.923879533f,
+    0.405241314f,  0.914209756f,
+    0.427555093f,  0.903989293f,
+    0.449611330f,  0.893224301f,
+    0.471396737f,  0.881921264f,
+    0.492898192f,  0.870086991f,
+    0.514102744f,  0.857728610f,
+    0.534997620f,  0.844853565f,
+    0.555570233f,  0.831469612f,
+    0.575808191f,  0.817584813f,
+    0.595699304f,  0.803207531f,
+    0.615231591f,  0.788346428f,
+    0.634393284f,  0.773010453f,
+    0.653172843f,  0.757208847f,
+    0.671558955f,  0.740951125f,
+    0.689540545f,  0.724247083f,
+    0.707106781f,  0.707106781f,
+    0.724247083f,  0.689540545f,
+    0.740951125f,  0.671558955f,
+    0.757208847f,  0.653172843f,
+    0.773010453f,  0.634393284f,
+    0.788346428f,  0.615231591f,
+    0.803207531f,  0.595699304f,
+    0.817584813f,  0.575808191f,
+    0.831469612f,  0.555570233f,
+    0.844853565f,  0.534997620f,
+    0.857728610f,  0.514102744f,
+    0.870086991f,  0.492898192f,
+    0.881921264f,  0.471396737f,
+    0.893224301f,  0.449611330f,
+    0.903989293f,  0.427555093f,
+    0.914209756f,  0.405241314f,
+    0.923879533f,  0.382683432f,
+    0.932992799f,  0.359895037f,
+    0.941544065f,  0.336889853f,
+    0.949528181f,  0.313681740f,
+    0.956940336f,  0.290284677f,
+    0.963776066f,  0.266712757f,
+    0.970031253f,  0.242980180f,
+    0.975702130f,  0.219101240f,
+    0.980785280f,  0.195090322f,
+    0.985277642f,  0.170961889f,
+    0.989176510f,  0.146730474f,
+    0.992479535f,  0.122410675f,
+    0.995184727f,  0.098017140f,
+    0.997290457f,  0.073564564f,
+    0.998795456f,  0.049067674f,
+    0.999698819f,  0.024541229f,
+    1.000000000f,  0.000000000f,
+    0.999698819f, -0.024541229f,
+    0.998795456f, -0.049067674f,
+    0.997290457f, -0.073564564f,
+    0.995184727f, -0.098017140f,
+    0.992479535f, -0.122410675f,
+    0.989176510f, -0.146730474f,
+    0.985277642f, -0.170961889f,
+    0.980785280f, -0.195090322f,
+    0.975702130f, -0.219101240f,
+    0.970031253f, -0.242980180f,
+    0.963776066f, -0.266712757f,
+    0.956940336f, -0.290284677f,
+    0.949528181f, -0.313681740f,
+    0.941544065f, -0.336889853f,
+    0.932992799f, -0.359895037f,
+    0.923879533f, -0.382683432f,
+    0.914209756f, -0.405241314f,
+    0.903989293f, -0.427555093f,
+    0.893224301f, -0.449611330f,
+    0.881921264f, -0.471396737f,
+    0.870086991f, -0.492898192f,
+    0.857728610f, -0.514102744f,
+    0.844853565f, -0.534997620f,
+    0.831469612f, -0.555570233f,
+    0.817584813f, -0.575808191f,
+    0.803207531f, -0.595699304f,
+    0.788346428f, -0.615231591f,
+    0.773010453f, -0.634393284f,
+    0.757208847f, -0.653172843f,
+    0.740951125f, -0.671558955f,
+    0.724247083f, -0.689540545f,
+    0.707106781f, -0.707106781f,
+    0.689540545f, -0.724247083f,
+    0.671558955f, -0.740951125f,
+    0.653172843f, -0.757208847f,
+    0.634393284f, -0.773010453f,
+    0.615231591f, -0.788346428f,
+    0.595699304f, -0.803207531f,
+    0.575808191f, -0.817584813f,
+    0.555570233f, -0.831469612f,
+    0.534997620f, -0.844853565f,
+    0.514102744f, -0.857728610f,
+    0.492898192f, -0.870086991f,
+    0.471396737f, -0.881921264f,
+    0.449611330f, -0.893224301f,
+    0.427555093f, -0.903989293f,
+    0.405241314f, -0.914209756f,
+    0.382683432f, -0.923879533f,
+    0.359895037f, -0.932992799f,
+    0.336889853f, -0.941544065f,
+    0.313681740f, -0.949528181f,
+    0.290284677f, -0.956940336f,
+    0.266712757f, -0.963776066f,
+    0.242980180f, -0.970031253f,
+    0.219101240f, -0.975702130f,
+    0.195090322f, -0.980785280f,
+    0.170961889f, -0.985277642f,
+    0.146730474f, -0.989176510f,
+    0.122410675f, -0.992479535f,
+    0.098017140f, -0.995184727f,
+    0.073564564f, -0.997290457f,
+    0.049067674f, -0.998795456f,
+    0.024541229f, -0.999698819f
+};
+
+const float32_t twiddleCoef_rfft_512[512] = {
+    0.000000000f,  1.000000000f,
+    0.012271538f,  0.999924702f,
+    0.024541229f,  0.999698819f,
+    0.036807223f,  0.999322385f,
+    0.049067674f,  0.998795456f,
+    0.061320736f,  0.998118113f,
+    0.073564564f,  0.997290457f,
+    0.085797312f,  0.996312612f,
+    0.098017140f,  0.995184727f,
+    0.110222207f,  0.993906970f,
+    0.122410675f,  0.992479535f,
+    0.134580709f,  0.990902635f,
+    0.146730474f,  0.989176510f,
+    0.158858143f,  0.987301418f,
+    0.170961889f,  0.985277642f,
+    0.183039888f,  0.983105487f,
+    0.195090322f,  0.980785280f,
+    0.207111376f,  0.978317371f,
+    0.219101240f,  0.975702130f,
+    0.231058108f,  0.972939952f,
+    0.242980180f,  0.970031253f,
+    0.254865660f,  0.966976471f,
+    0.266712757f,  0.963776066f,
+    0.278519689f,  0.960430519f,
+    0.290284677f,  0.956940336f,
+    0.302005949f,  0.953306040f,
+    0.313681740f,  0.949528181f,
+    0.325310292f,  0.945607325f,
+    0.336889853f,  0.941544065f,
+    0.348418680f,  0.937339012f,
+    0.359895037f,  0.932992799f,
+    0.371317194f,  0.928506080f,
+    0.382683432f,  0.923879533f,
+    0.393992040f,  0.919113852f,
+    0.405241314f,  0.914209756f,
+    0.416429560f,  0.909167983f,
+    0.427555093f,  0.903989293f,
+    0.438616239f,  0.898674466f,
+    0.449611330f,  0.893224301f,
+    0.460538711f,  0.887639620f,
+    0.471396737f,  0.881921264f,
+    0.482183772f,  0.876070094f,
+    0.492898192f,  0.870086991f,
+    0.503538384f,  0.863972856f,
+    0.514102744f,  0.857728610f,
+    0.524589683f,  0.851355193f,
+    0.534997620f,  0.844853565f,
+    0.545324988f,  0.838224706f,
+    0.555570233f,  0.831469612f,
+    0.565731811f,  0.824589303f,
+    0.575808191f,  0.817584813f,
+    0.585797857f,  0.810457198f,
+    0.595699304f,  0.803207531f,
+    0.605511041f,  0.795836905f,
+    0.615231591f,  0.788346428f,
+    0.624859488f,  0.780737229f,
+    0.634393284f,  0.773010453f,
+    0.643831543f,  0.765167266f,
+    0.653172843f,  0.757208847f,
+    0.662415778f,  0.749136395f,
+    0.671558955f,  0.740951125f,
+    0.680600998f,  0.732654272f,
+    0.689540545f,  0.724247083f,
+    0.698376249f,  0.715730825f,
+    0.707106781f,  0.707106781f,
+    0.715730825f,  0.698376249f,
+    0.724247083f,  0.689540545f,
+    0.732654272f,  0.680600998f,
+    0.740951125f,  0.671558955f,
+    0.749136395f,  0.662415778f,
+    0.757208847f,  0.653172843f,
+    0.765167266f,  0.643831543f,
+    0.773010453f,  0.634393284f,
+    0.780737229f,  0.624859488f,
+    0.788346428f,  0.615231591f,
+    0.795836905f,  0.605511041f,
+    0.803207531f,  0.595699304f,
+    0.810457198f,  0.585797857f,
+    0.817584813f,  0.575808191f,
+    0.824589303f,  0.565731811f,
+    0.831469612f,  0.555570233f,
+    0.838224706f,  0.545324988f,
+    0.844853565f,  0.534997620f,
+    0.851355193f,  0.524589683f,
+    0.857728610f,  0.514102744f,
+    0.863972856f,  0.503538384f,
+    0.870086991f,  0.492898192f,
+    0.876070094f,  0.482183772f,
+    0.881921264f,  0.471396737f,
+    0.887639620f,  0.460538711f,
+    0.893224301f,  0.449611330f,
+    0.898674466f,  0.438616239f,
+    0.903989293f,  0.427555093f,
+    0.909167983f,  0.416429560f,
+    0.914209756f,  0.405241314f,
+    0.919113852f,  0.393992040f,
+    0.923879533f,  0.382683432f,
+    0.928506080f,  0.371317194f,
+    0.932992799f,  0.359895037f,
+    0.937339012f,  0.348418680f,
+    0.941544065f,  0.336889853f,
+    0.945607325f,  0.325310292f,
+    0.949528181f,  0.313681740f,
+    0.953306040f,  0.302005949f,
+    0.956940336f,  0.290284677f,
+    0.960430519f,  0.278519689f,
+    0.963776066f,  0.266712757f,
+    0.966976471f,  0.254865660f,
+    0.970031253f,  0.242980180f,
+    0.972939952f,  0.231058108f,
+    0.975702130f,  0.219101240f,
+    0.978317371f,  0.207111376f,
+    0.980785280f,  0.195090322f,
+    0.983105487f,  0.183039888f,
+    0.985277642f,  0.170961889f,
+    0.987301418f,  0.158858143f,
+    0.989176510f,  0.146730474f,
+    0.990902635f,  0.134580709f,
+    0.992479535f,  0.122410675f,
+    0.993906970f,  0.110222207f,
+    0.995184727f,  0.098017140f,
+    0.996312612f,  0.085797312f,
+    0.997290457f,  0.073564564f,
+    0.998118113f,  0.061320736f,
+    0.998795456f,  0.049067674f,
+    0.999322385f,  0.036807223f,
+    0.999698819f,  0.024541229f,
+    0.999924702f,  0.012271538f,
+    1.000000000f,  0.000000000f,
+    0.999924702f, -0.012271538f,
+    0.999698819f, -0.024541229f,
+    0.999322385f, -0.036807223f,
+    0.998795456f, -0.049067674f,
+    0.998118113f, -0.061320736f,
+    0.997290457f, -0.073564564f,
+    0.996312612f, -0.085797312f,
+    0.995184727f, -0.098017140f,
+    0.993906970f, -0.110222207f,
+    0.992479535f, -0.122410675f,
+    0.990902635f, -0.134580709f,
+    0.989176510f, -0.146730474f,
+    0.987301418f, -0.158858143f,
+    0.985277642f, -0.170961889f,
+    0.983105487f, -0.183039888f,
+    0.980785280f, -0.195090322f,
+    0.978317371f, -0.207111376f,
+    0.975702130f, -0.219101240f,
+    0.972939952f, -0.231058108f,
+    0.970031253f, -0.242980180f,
+    0.966976471f, -0.254865660f,
+    0.963776066f, -0.266712757f,
+    0.960430519f, -0.278519689f,
+    0.956940336f, -0.290284677f,
+    0.953306040f, -0.302005949f,
+    0.949528181f, -0.313681740f,
+    0.945607325f, -0.325310292f,
+    0.941544065f, -0.336889853f,
+    0.937339012f, -0.348418680f,
+    0.932992799f, -0.359895037f,
+    0.928506080f, -0.371317194f,
+    0.923879533f, -0.382683432f,
+    0.919113852f, -0.393992040f,
+    0.914209756f, -0.405241314f,
+    0.909167983f, -0.416429560f,
+    0.903989293f, -0.427555093f,
+    0.898674466f, -0.438616239f,
+    0.893224301f, -0.449611330f,
+    0.887639620f, -0.460538711f,
+    0.881921264f, -0.471396737f,
+    0.876070094f, -0.482183772f,
+    0.870086991f, -0.492898192f,
+    0.863972856f, -0.503538384f,
+    0.857728610f, -0.514102744f,
+    0.851355193f, -0.524589683f,
+    0.844853565f, -0.534997620f,
+    0.838224706f, -0.545324988f,
+    0.831469612f, -0.555570233f,
+    0.824589303f, -0.565731811f,
+    0.817584813f, -0.575808191f,
+    0.810457198f, -0.585797857f,
+    0.803207531f, -0.595699304f,
+    0.795836905f, -0.605511041f,
+    0.788346428f, -0.615231591f,
+    0.780737229f, -0.624859488f,
+    0.773010453f, -0.634393284f,
+    0.765167266f, -0.643831543f,
+    0.757208847f, -0.653172843f,
+    0.749136395f, -0.662415778f,
+    0.740951125f, -0.671558955f,
+    0.732654272f, -0.680600998f,
+    0.724247083f, -0.689540545f,
+    0.715730825f, -0.698376249f,
+    0.707106781f, -0.707106781f,
+    0.698376249f, -0.715730825f,
+    0.689540545f, -0.724247083f,
+    0.680600998f, -0.732654272f,
+    0.671558955f, -0.740951125f,
+    0.662415778f, -0.749136395f,
+    0.653172843f, -0.757208847f,
+    0.643831543f, -0.765167266f,
+    0.634393284f, -0.773010453f,
+    0.624859488f, -0.780737229f,
+    0.615231591f, -0.788346428f,
+    0.605511041f, -0.795836905f,
+    0.595699304f, -0.803207531f,
+    0.585797857f, -0.810457198f,
+    0.575808191f, -0.817584813f,
+    0.565731811f, -0.824589303f,
+    0.555570233f, -0.831469612f,
+    0.545324988f, -0.838224706f,
+    0.534997620f, -0.844853565f,
+    0.524589683f, -0.851355193f,
+    0.514102744f, -0.857728610f,
+    0.503538384f, -0.863972856f,
+    0.492898192f, -0.870086991f,
+    0.482183772f, -0.876070094f,
+    0.471396737f, -0.881921264f,
+    0.460538711f, -0.887639620f,
+    0.449611330f, -0.893224301f,
+    0.438616239f, -0.898674466f,
+    0.427555093f, -0.903989293f,
+    0.416429560f, -0.909167983f,
+    0.405241314f, -0.914209756f,
+    0.393992040f, -0.919113852f,
+    0.382683432f, -0.923879533f,
+    0.371317194f, -0.928506080f,
+    0.359895037f, -0.932992799f,
+    0.348418680f, -0.937339012f,
+    0.336889853f, -0.941544065f,
+    0.325310292f, -0.945607325f,
+    0.313681740f, -0.949528181f,
+    0.302005949f, -0.953306040f,
+    0.290284677f, -0.956940336f,
+    0.278519689f, -0.960430519f,
+    0.266712757f, -0.963776066f,
+    0.254865660f, -0.966976471f,
+    0.242980180f, -0.970031253f,
+    0.231058108f, -0.972939952f,
+    0.219101240f, -0.975702130f,
+    0.207111376f, -0.978317371f,
+    0.195090322f, -0.980785280f,
+    0.183039888f, -0.983105487f,
+    0.170961889f, -0.985277642f,
+    0.158858143f, -0.987301418f,
+    0.146730474f, -0.989176510f,
+    0.134580709f, -0.990902635f,
+    0.122410675f, -0.992479535f,
+    0.110222207f, -0.993906970f,
+    0.098017140f, -0.995184727f,
+    0.085797312f, -0.996312612f,
+    0.073564564f, -0.997290457f,
+    0.061320736f, -0.998118113f,
+    0.049067674f, -0.998795456f,
+    0.036807223f, -0.999322385f,
+    0.024541229f, -0.999698819f,
+    0.012271538f, -0.999924702f
+};
+
+const float32_t twiddleCoef_rfft_1024[1024] = {
+    0.000000000f,  1.000000000f,
+    0.006135885f,  0.999981175f,
+    0.012271538f,  0.999924702f,
+    0.018406730f,  0.999830582f,
+    0.024541229f,  0.999698819f,
+    0.030674803f,  0.999529418f,
+    0.036807223f,  0.999322385f,
+    0.042938257f,  0.999077728f,
+    0.049067674f,  0.998795456f,
+    0.055195244f,  0.998475581f,
+    0.061320736f,  0.998118113f,
+    0.067443920f,  0.997723067f,
+    0.073564564f,  0.997290457f,
+    0.079682438f,  0.996820299f,
+    0.085797312f,  0.996312612f,
+    0.091908956f,  0.995767414f,
+    0.098017140f,  0.995184727f,
+    0.104121634f,  0.994564571f,
+    0.110222207f,  0.993906970f,
+    0.116318631f,  0.993211949f,
+    0.122410675f,  0.992479535f,
+    0.128498111f,  0.991709754f,
+    0.134580709f,  0.990902635f,
+    0.140658239f,  0.990058210f,
+    0.146730474f,  0.989176510f,
+    0.152797185f,  0.988257568f,
+    0.158858143f,  0.987301418f,
+    0.164913120f,  0.986308097f,
+    0.170961889f,  0.985277642f,
+    0.177004220f,  0.984210092f,
+    0.183039888f,  0.983105487f,
+    0.189068664f,  0.981963869f,
+    0.195090322f,  0.980785280f,
+    0.201104635f,  0.979569766f,
+    0.207111376f,  0.978317371f,
+    0.213110320f,  0.977028143f,
+    0.219101240f,  0.975702130f,
+    0.225083911f,  0.974339383f,
+    0.231058108f,  0.972939952f,
+    0.237023606f,  0.971503891f,
+    0.242980180f,  0.970031253f,
+    0.248927606f,  0.968522094f,
+    0.254865660f,  0.966976471f,
+    0.260794118f,  0.965394442f,
+    0.266712757f,  0.963776066f,
+    0.272621355f,  0.962121404f,
+    0.278519689f,  0.960430519f,
+    0.284407537f,  0.958703475f,
+    0.290284677f,  0.956940336f,
+    0.296150888f,  0.955141168f,
+    0.302005949f,  0.953306040f,
+    0.307849640f,  0.951435021f,
+    0.313681740f,  0.949528181f,
+    0.319502031f,  0.947585591f,
+    0.325310292f,  0.945607325f,
+    0.331106306f,  0.943593458f,
+    0.336889853f,  0.941544065f,
+    0.342660717f,  0.939459224f,
+    0.348418680f,  0.937339012f,
+    0.354163525f,  0.935183510f,
+    0.359895037f,  0.932992799f,
+    0.365612998f,  0.930766961f,
+    0.371317194f,  0.928506080f,
+    0.377007410f,  0.926210242f,
+    0.382683432f,  0.923879533f,
+    0.388345047f,  0.921514039f,
+    0.393992040f,  0.919113852f,
+    0.399624200f,  0.916679060f,
+    0.405241314f,  0.914209756f,
+    0.410843171f,  0.911706032f,
+    0.416429560f,  0.909167983f,
+    0.422000271f,  0.906595705f,
+    0.427555093f,  0.903989293f,
+    0.433093819f,  0.901348847f,
+    0.438616239f,  0.898674466f,
+    0.444122145f,  0.895966250f,
+    0.449611330f,  0.893224301f,
+    0.455083587f,  0.890448723f,
+    0.460538711f,  0.887639620f,
+    0.465976496f,  0.884797098f,
+    0.471396737f,  0.881921264f,
+    0.476799230f,  0.879012226f,
+    0.482183772f,  0.876070094f,
+    0.487550160f,  0.873094978f,
+    0.492898192f,  0.870086991f,
+    0.498227667f,  0.867046246f,
+    0.503538384f,  0.863972856f,
+    0.508830143f,  0.860866939f,
+    0.514102744f,  0.857728610f,
+    0.519355990f,  0.854557988f,
+    0.524589683f,  0.851355193f,
+    0.529803625f,  0.848120345f,
+    0.534997620f,  0.844853565f,
+    0.540171473f,  0.841554977f,
+    0.545324988f,  0.838224706f,
+    0.550457973f,  0.834862875f,
+    0.555570233f,  0.831469612f,
+    0.560661576f,  0.828045045f,
+    0.565731811f,  0.824589303f,
+    0.570780746f,  0.821102515f,
+    0.575808191f,  0.817584813f,
+    0.580813958f,  0.814036330f,
+    0.585797857f,  0.810457198f,
+    0.590759702f,  0.806847554f,
+    0.595699304f,  0.803207531f,
+    0.600616479f,  0.799537269f,
+    0.605511041f,  0.795836905f,
+    0.610382806f,  0.792106577f,
+    0.615231591f,  0.788346428f,
+    0.620057212f,  0.784556597f,
+    0.624859488f,  0.780737229f,
+    0.629638239f,  0.776888466f,
+    0.634393284f,  0.773010453f,
+    0.639124445f,  0.769103338f,
+    0.643831543f,  0.765167266f,
+    0.648514401f,  0.761202385f,
+    0.653172843f,  0.757208847f,
+    0.657806693f,  0.753186799f,
+    0.662415778f,  0.749136395f,
+    0.666999922f,  0.745057785f,
+    0.671558955f,  0.740951125f,
+    0.676092704f,  0.736816569f,
+    0.680600998f,  0.732654272f,
+    0.685083668f,  0.728464390f,
+    0.689540545f,  0.724247083f,
+    0.693971461f,  0.720002508f,
+    0.698376249f,  0.715730825f,
+    0.702754744f,  0.711432196f,
+    0.707106781f,  0.707106781f,
+    0.711432196f,  0.702754744f,
+    0.715730825f,  0.698376249f,
+    0.720002508f,  0.693971461f,
+    0.724247083f,  0.689540545f,
+    0.728464390f,  0.685083668f,
+    0.732654272f,  0.680600998f,
+    0.736816569f,  0.676092704f,
+    0.740951125f,  0.671558955f,
+    0.745057785f,  0.666999922f,
+    0.749136395f,  0.662415778f,
+    0.753186799f,  0.657806693f,
+    0.757208847f,  0.653172843f,
+    0.761202385f,  0.648514401f,
+    0.765167266f,  0.643831543f,
+    0.769103338f,  0.639124445f,
+    0.773010453f,  0.634393284f,
+    0.776888466f,  0.629638239f,
+    0.780737229f,  0.624859488f,
+    0.784556597f,  0.620057212f,
+    0.788346428f,  0.615231591f,
+    0.792106577f,  0.610382806f,
+    0.795836905f,  0.605511041f,
+    0.799537269f,  0.600616479f,
+    0.803207531f,  0.595699304f,
+    0.806847554f,  0.590759702f,
+    0.810457198f,  0.585797857f,
+    0.814036330f,  0.580813958f,
+    0.817584813f,  0.575808191f,
+    0.821102515f,  0.570780746f,
+    0.824589303f,  0.565731811f,
+    0.828045045f,  0.560661576f,
+    0.831469612f,  0.555570233f,
+    0.834862875f,  0.550457973f,
+    0.838224706f,  0.545324988f,
+    0.841554977f,  0.540171473f,
+    0.844853565f,  0.534997620f,
+    0.848120345f,  0.529803625f,
+    0.851355193f,  0.524589683f,
+    0.854557988f,  0.519355990f,
+    0.857728610f,  0.514102744f,
+    0.860866939f,  0.508830143f,
+    0.863972856f,  0.503538384f,
+    0.867046246f,  0.498227667f,
+    0.870086991f,  0.492898192f,
+    0.873094978f,  0.487550160f,
+    0.876070094f,  0.482183772f,
+    0.879012226f,  0.476799230f,
+    0.881921264f,  0.471396737f,
+    0.884797098f,  0.465976496f,
+    0.887639620f,  0.460538711f,
+    0.890448723f,  0.455083587f,
+    0.893224301f,  0.449611330f,
+    0.895966250f,  0.444122145f,
+    0.898674466f,  0.438616239f,
+    0.901348847f,  0.433093819f,
+    0.903989293f,  0.427555093f,
+    0.906595705f,  0.422000271f,
+    0.909167983f,  0.416429560f,
+    0.911706032f,  0.410843171f,
+    0.914209756f,  0.405241314f,
+    0.916679060f,  0.399624200f,
+    0.919113852f,  0.393992040f,
+    0.921514039f,  0.388345047f,
+    0.923879533f,  0.382683432f,
+    0.926210242f,  0.377007410f,
+    0.928506080f,  0.371317194f,
+    0.930766961f,  0.365612998f,
+    0.932992799f,  0.359895037f,
+    0.935183510f,  0.354163525f,
+    0.937339012f,  0.348418680f,
+    0.939459224f,  0.342660717f,
+    0.941544065f,  0.336889853f,
+    0.943593458f,  0.331106306f,
+    0.945607325f,  0.325310292f,
+    0.947585591f,  0.319502031f,
+    0.949528181f,  0.313681740f,
+    0.951435021f,  0.307849640f,
+    0.953306040f,  0.302005949f,
+    0.955141168f,  0.296150888f,
+    0.956940336f,  0.290284677f,
+    0.958703475f,  0.284407537f,
+    0.960430519f,  0.278519689f,
+    0.962121404f,  0.272621355f,
+    0.963776066f,  0.266712757f,
+    0.965394442f,  0.260794118f,
+    0.966976471f,  0.254865660f,
+    0.968522094f,  0.248927606f,
+    0.970031253f,  0.242980180f,
+    0.971503891f,  0.237023606f,
+    0.972939952f,  0.231058108f,
+    0.974339383f,  0.225083911f,
+    0.975702130f,  0.219101240f,
+    0.977028143f,  0.213110320f,
+    0.978317371f,  0.207111376f,
+    0.979569766f,  0.201104635f,
+    0.980785280f,  0.195090322f,
+    0.981963869f,  0.189068664f,
+    0.983105487f,  0.183039888f,
+    0.984210092f,  0.177004220f,
+    0.985277642f,  0.170961889f,
+    0.986308097f,  0.164913120f,
+    0.987301418f,  0.158858143f,
+    0.988257568f,  0.152797185f,
+    0.989176510f,  0.146730474f,
+    0.990058210f,  0.140658239f,
+    0.990902635f,  0.134580709f,
+    0.991709754f,  0.128498111f,
+    0.992479535f,  0.122410675f,
+    0.993211949f,  0.116318631f,
+    0.993906970f,  0.110222207f,
+    0.994564571f,  0.104121634f,
+    0.995184727f,  0.098017140f,
+    0.995767414f,  0.091908956f,
+    0.996312612f,  0.085797312f,
+    0.996820299f,  0.079682438f,
+    0.997290457f,  0.073564564f,
+    0.997723067f,  0.067443920f,
+    0.998118113f,  0.061320736f,
+    0.998475581f,  0.055195244f,
+    0.998795456f,  0.049067674f,
+    0.999077728f,  0.042938257f,
+    0.999322385f,  0.036807223f,
+    0.999529418f,  0.030674803f,
+    0.999698819f,  0.024541229f,
+    0.999830582f,  0.018406730f,
+    0.999924702f,  0.012271538f,
+    0.999981175f,  0.006135885f,
+    1.000000000f,  0.000000000f,
+    0.999981175f, -0.006135885f,
+    0.999924702f, -0.012271538f,
+    0.999830582f, -0.018406730f,
+    0.999698819f, -0.024541229f,
+    0.999529418f, -0.030674803f,
+    0.999322385f, -0.036807223f,
+    0.999077728f, -0.042938257f,
+    0.998795456f, -0.049067674f,
+    0.998475581f, -0.055195244f,
+    0.998118113f, -0.061320736f,
+    0.997723067f, -0.067443920f,
+    0.997290457f, -0.073564564f,
+    0.996820299f, -0.079682438f,
+    0.996312612f, -0.085797312f,
+    0.995767414f, -0.091908956f,
+    0.995184727f, -0.098017140f,
+    0.994564571f, -0.104121634f,
+    0.993906970f, -0.110222207f,
+    0.993211949f, -0.116318631f,
+    0.992479535f, -0.122410675f,
+    0.991709754f, -0.128498111f,
+    0.990902635f, -0.134580709f,
+    0.990058210f, -0.140658239f,
+    0.989176510f, -0.146730474f,
+    0.988257568f, -0.152797185f,
+    0.987301418f, -0.158858143f,
+    0.986308097f, -0.164913120f,
+    0.985277642f, -0.170961889f,
+    0.984210092f, -0.177004220f,
+    0.983105487f, -0.183039888f,
+    0.981963869f, -0.189068664f,
+    0.980785280f, -0.195090322f,
+    0.979569766f, -0.201104635f,
+    0.978317371f, -0.207111376f,
+    0.977028143f, -0.213110320f,
+    0.975702130f, -0.219101240f,
+    0.974339383f, -0.225083911f,
+    0.972939952f, -0.231058108f,
+    0.971503891f, -0.237023606f,
+    0.970031253f, -0.242980180f,
+    0.968522094f, -0.248927606f,
+    0.966976471f, -0.254865660f,
+    0.965394442f, -0.260794118f,
+    0.963776066f, -0.266712757f,
+    0.962121404f, -0.272621355f,
+    0.960430519f, -0.278519689f,
+    0.958703475f, -0.284407537f,
+    0.956940336f, -0.290284677f,
+    0.955141168f, -0.296150888f,
+    0.953306040f, -0.302005949f,
+    0.951435021f, -0.307849640f,
+    0.949528181f, -0.313681740f,
+    0.947585591f, -0.319502031f,
+    0.945607325f, -0.325310292f,
+    0.943593458f, -0.331106306f,
+    0.941544065f, -0.336889853f,
+    0.939459224f, -0.342660717f,
+    0.937339012f, -0.348418680f,
+    0.935183510f, -0.354163525f,
+    0.932992799f, -0.359895037f,
+    0.930766961f, -0.365612998f,
+    0.928506080f, -0.371317194f,
+    0.926210242f, -0.377007410f,
+    0.923879533f, -0.382683432f,
+    0.921514039f, -0.388345047f,
+    0.919113852f, -0.393992040f,
+    0.916679060f, -0.399624200f,
+    0.914209756f, -0.405241314f,
+    0.911706032f, -0.410843171f,
+    0.909167983f, -0.416429560f,
+    0.906595705f, -0.422000271f,
+    0.903989293f, -0.427555093f,
+    0.901348847f, -0.433093819f,
+    0.898674466f, -0.438616239f,
+    0.895966250f, -0.444122145f,
+    0.893224301f, -0.449611330f,
+    0.890448723f, -0.455083587f,
+    0.887639620f, -0.460538711f,
+    0.884797098f, -0.465976496f,
+    0.881921264f, -0.471396737f,
+    0.879012226f, -0.476799230f,
+    0.876070094f, -0.482183772f,
+    0.873094978f, -0.487550160f,
+    0.870086991f, -0.492898192f,
+    0.867046246f, -0.498227667f,
+    0.863972856f, -0.503538384f,
+    0.860866939f, -0.508830143f,
+    0.857728610f, -0.514102744f,
+    0.854557988f, -0.519355990f,
+    0.851355193f, -0.524589683f,
+    0.848120345f, -0.529803625f,
+    0.844853565f, -0.534997620f,
+    0.841554977f, -0.540171473f,
+    0.838224706f, -0.545324988f,
+    0.834862875f, -0.550457973f,
+    0.831469612f, -0.555570233f,
+    0.828045045f, -0.560661576f,
+    0.824589303f, -0.565731811f,
+    0.821102515f, -0.570780746f,
+    0.817584813f, -0.575808191f,
+    0.814036330f, -0.580813958f,
+    0.810457198f, -0.585797857f,
+    0.806847554f, -0.590759702f,
+    0.803207531f, -0.595699304f,
+    0.799537269f, -0.600616479f,
+    0.795836905f, -0.605511041f,
+    0.792106577f, -0.610382806f,
+    0.788346428f, -0.615231591f,
+    0.784556597f, -0.620057212f,
+    0.780737229f, -0.624859488f,
+    0.776888466f, -0.629638239f,
+    0.773010453f, -0.634393284f,
+    0.769103338f, -0.639124445f,
+    0.765167266f, -0.643831543f,
+    0.761202385f, -0.648514401f,
+    0.757208847f, -0.653172843f,
+    0.753186799f, -0.657806693f,
+    0.749136395f, -0.662415778f,
+    0.745057785f, -0.666999922f,
+    0.740951125f, -0.671558955f,
+    0.736816569f, -0.676092704f,
+    0.732654272f, -0.680600998f,
+    0.728464390f, -0.685083668f,
+    0.724247083f, -0.689540545f,
+    0.720002508f, -0.693971461f,
+    0.715730825f, -0.698376249f,
+    0.711432196f, -0.702754744f,
+    0.707106781f, -0.707106781f,
+    0.702754744f, -0.711432196f,
+    0.698376249f, -0.715730825f,
+    0.693971461f, -0.720002508f,
+    0.689540545f, -0.724247083f,
+    0.685083668f, -0.728464390f,
+    0.680600998f, -0.732654272f,
+    0.676092704f, -0.736816569f,
+    0.671558955f, -0.740951125f,
+    0.666999922f, -0.745057785f,
+    0.662415778f, -0.749136395f,
+    0.657806693f, -0.753186799f,
+    0.653172843f, -0.757208847f,
+    0.648514401f, -0.761202385f,
+    0.643831543f, -0.765167266f,
+    0.639124445f, -0.769103338f,
+    0.634393284f, -0.773010453f,
+    0.629638239f, -0.776888466f,
+    0.624859488f, -0.780737229f,
+    0.620057212f, -0.784556597f,
+    0.615231591f, -0.788346428f,
+    0.610382806f, -0.792106577f,
+    0.605511041f, -0.795836905f,
+    0.600616479f, -0.799537269f,
+    0.595699304f, -0.803207531f,
+    0.590759702f, -0.806847554f,
+    0.585797857f, -0.810457198f,
+    0.580813958f, -0.814036330f,
+    0.575808191f, -0.817584813f,
+    0.570780746f, -0.821102515f,
+    0.565731811f, -0.824589303f,
+    0.560661576f, -0.828045045f,
+    0.555570233f, -0.831469612f,
+    0.550457973f, -0.834862875f,
+    0.545324988f, -0.838224706f,
+    0.540171473f, -0.841554977f,
+    0.534997620f, -0.844853565f,
+    0.529803625f, -0.848120345f,
+    0.524589683f, -0.851355193f,
+    0.519355990f, -0.854557988f,
+    0.514102744f, -0.857728610f,
+    0.508830143f, -0.860866939f,
+    0.503538384f, -0.863972856f,
+    0.498227667f, -0.867046246f,
+    0.492898192f, -0.870086991f,
+    0.487550160f, -0.873094978f,
+    0.482183772f, -0.876070094f,
+    0.476799230f, -0.879012226f,
+    0.471396737f, -0.881921264f,
+    0.465976496f, -0.884797098f,
+    0.460538711f, -0.887639620f,
+    0.455083587f, -0.890448723f,
+    0.449611330f, -0.893224301f,
+    0.444122145f, -0.895966250f,
+    0.438616239f, -0.898674466f,
+    0.433093819f, -0.901348847f,
+    0.427555093f, -0.903989293f,
+    0.422000271f, -0.906595705f,
+    0.416429560f, -0.909167983f,
+    0.410843171f, -0.911706032f,
+    0.405241314f, -0.914209756f,
+    0.399624200f, -0.916679060f,
+    0.393992040f, -0.919113852f,
+    0.388345047f, -0.921514039f,
+    0.382683432f, -0.923879533f,
+    0.377007410f, -0.926210242f,
+    0.371317194f, -0.928506080f,
+    0.365612998f, -0.930766961f,
+    0.359895037f, -0.932992799f,
+    0.354163525f, -0.935183510f,
+    0.348418680f, -0.937339012f,
+    0.342660717f, -0.939459224f,
+    0.336889853f, -0.941544065f,
+    0.331106306f, -0.943593458f,
+    0.325310292f, -0.945607325f,
+    0.319502031f, -0.947585591f,
+    0.313681740f, -0.949528181f,
+    0.307849640f, -0.951435021f,
+    0.302005949f, -0.953306040f,
+    0.296150888f, -0.955141168f,
+    0.290284677f, -0.956940336f,
+    0.284407537f, -0.958703475f,
+    0.278519689f, -0.960430519f,
+    0.272621355f, -0.962121404f,
+    0.266712757f, -0.963776066f,
+    0.260794118f, -0.965394442f,
+    0.254865660f, -0.966976471f,
+    0.248927606f, -0.968522094f,
+    0.242980180f, -0.970031253f,
+    0.237023606f, -0.971503891f,
+    0.231058108f, -0.972939952f,
+    0.225083911f, -0.974339383f,
+    0.219101240f, -0.975702130f,
+    0.213110320f, -0.977028143f,
+    0.207111376f, -0.978317371f,
+    0.201104635f, -0.979569766f,
+    0.195090322f, -0.980785280f,
+    0.189068664f, -0.981963869f,
+    0.183039888f, -0.983105487f,
+    0.177004220f, -0.984210092f,
+    0.170961889f, -0.985277642f,
+    0.164913120f, -0.986308097f,
+    0.158858143f, -0.987301418f,
+    0.152797185f, -0.988257568f,
+    0.146730474f, -0.989176510f,
+    0.140658239f, -0.990058210f,
+    0.134580709f, -0.990902635f,
+    0.128498111f, -0.991709754f,
+    0.122410675f, -0.992479535f,
+    0.116318631f, -0.993211949f,
+    0.110222207f, -0.993906970f,
+    0.104121634f, -0.994564571f,
+    0.098017140f, -0.995184727f,
+    0.091908956f, -0.995767414f,
+    0.085797312f, -0.996312612f,
+    0.079682438f, -0.996820299f,
+    0.073564564f, -0.997290457f,
+    0.067443920f, -0.997723067f,
+    0.061320736f, -0.998118113f,
+    0.055195244f, -0.998475581f,
+    0.049067674f, -0.998795456f,
+    0.042938257f, -0.999077728f,
+    0.036807223f, -0.999322385f,
+    0.030674803f, -0.999529418f,
+    0.024541229f, -0.999698819f,
+    0.018406730f, -0.999830582f,
+    0.012271538f, -0.999924702f,
+    0.006135885f, -0.999981175f
+};
+
+const float32_t twiddleCoef_rfft_2048[2048] = {
+    0.000000000f,  1.000000000f,
+    0.003067957f,  0.999995294f,
+    0.006135885f,  0.999981175f,
+    0.009203755f,  0.999957645f,
+    0.012271538f,  0.999924702f,
+    0.015339206f,  0.999882347f,
+    0.018406730f,  0.999830582f,
+    0.021474080f,  0.999769405f,
+    0.024541229f,  0.999698819f,
+    0.027608146f,  0.999618822f,
+    0.030674803f,  0.999529418f,
+    0.033741172f,  0.999430605f,
+    0.036807223f,  0.999322385f,
+    0.039872928f,  0.999204759f,
+    0.042938257f,  0.999077728f,
+    0.046003182f,  0.998941293f,
+    0.049067674f,  0.998795456f,
+    0.052131705f,  0.998640218f,
+    0.055195244f,  0.998475581f,
+    0.058258265f,  0.998301545f,
+    0.061320736f,  0.998118113f,
+    0.064382631f,  0.997925286f,
+    0.067443920f,  0.997723067f,
+    0.070504573f,  0.997511456f,
+    0.073564564f,  0.997290457f,
+    0.076623861f,  0.997060070f,
+    0.079682438f,  0.996820299f,
+    0.082740265f,  0.996571146f,
+    0.085797312f,  0.996312612f,
+    0.088853553f,  0.996044701f,
+    0.091908956f,  0.995767414f,
+    0.094963495f,  0.995480755f,
+    0.098017140f,  0.995184727f,
+    0.101069863f,  0.994879331f,
+    0.104121634f,  0.994564571f,
+    0.107172425f,  0.994240449f,
+    0.110222207f,  0.993906970f,
+    0.113270952f,  0.993564136f,
+    0.116318631f,  0.993211949f,
+    0.119365215f,  0.992850414f,
+    0.122410675f,  0.992479535f,
+    0.125454983f,  0.992099313f,
+    0.128498111f,  0.991709754f,
+    0.131540029f,  0.991310860f,
+    0.134580709f,  0.990902635f,
+    0.137620122f,  0.990485084f,
+    0.140658239f,  0.990058210f,
+    0.143695033f,  0.989622017f,
+    0.146730474f,  0.989176510f,
+    0.149764535f,  0.988721692f,
+    0.152797185f,  0.988257568f,
+    0.155828398f,  0.987784142f,
+    0.158858143f,  0.987301418f,
+    0.161886394f,  0.986809402f,
+    0.164913120f,  0.986308097f,
+    0.167938295f,  0.985797509f,
+    0.170961889f,  0.985277642f,
+    0.173983873f,  0.984748502f,
+    0.177004220f,  0.984210092f,
+    0.180022901f,  0.983662419f,
+    0.183039888f,  0.983105487f,
+    0.186055152f,  0.982539302f,
+    0.189068664f,  0.981963869f,
+    0.192080397f,  0.981379193f,
+    0.195090322f,  0.980785280f,
+    0.198098411f,  0.980182136f,
+    0.201104635f,  0.979569766f,
+    0.204108966f,  0.978948175f,
+    0.207111376f,  0.978317371f,
+    0.210111837f,  0.977677358f,
+    0.213110320f,  0.977028143f,
+    0.216106797f,  0.976369731f,
+    0.219101240f,  0.975702130f,
+    0.222093621f,  0.975025345f,
+    0.225083911f,  0.974339383f,
+    0.228072083f,  0.973644250f,
+    0.231058108f,  0.972939952f,
+    0.234041959f,  0.972226497f,
+    0.237023606f,  0.971503891f,
+    0.240003022f,  0.970772141f,
+    0.242980180f,  0.970031253f,
+    0.245955050f,  0.969281235f,
+    0.248927606f,  0.968522094f,
+    0.251897818f,  0.967753837f,
+    0.254865660f,  0.966976471f,
+    0.257831102f,  0.966190003f,
+    0.260794118f,  0.965394442f,
+    0.263754679f,  0.964589793f,
+    0.266712757f,  0.963776066f,
+    0.269668326f,  0.962953267f,
+    0.272621355f,  0.962121404f,
+    0.275571819f,  0.961280486f,
+    0.278519689f,  0.960430519f,
+    0.281464938f,  0.959571513f,
+    0.284407537f,  0.958703475f,
+    0.287347460f,  0.957826413f,
+    0.290284677f,  0.956940336f,
+    0.293219163f,  0.956045251f,
+    0.296150888f,  0.955141168f,
+    0.299079826f,  0.954228095f,
+    0.302005949f,  0.953306040f,
+    0.304929230f,  0.952375013f,
+    0.307849640f,  0.951435021f,
+    0.310767153f,  0.950486074f,
+    0.313681740f,  0.949528181f,
+    0.316593376f,  0.948561350f,
+    0.319502031f,  0.947585591f,
+    0.322407679f,  0.946600913f,
+    0.325310292f,  0.945607325f,
+    0.328209844f,  0.944604837f,
+    0.331106306f,  0.943593458f,
+    0.333999651f,  0.942573198f,
+    0.336889853f,  0.941544065f,
+    0.339776884f,  0.940506071f,
+    0.342660717f,  0.939459224f,
+    0.345541325f,  0.938403534f,
+    0.348418680f,  0.937339012f,
+    0.351292756f,  0.936265667f,
+    0.354163525f,  0.935183510f,
+    0.357030961f,  0.934092550f,
+    0.359895037f,  0.932992799f,
+    0.362755724f,  0.931884266f,
+    0.365612998f,  0.930766961f,
+    0.368466830f,  0.929640896f,
+    0.371317194f,  0.928506080f,
+    0.374164063f,  0.927362526f,
+    0.377007410f,  0.926210242f,
+    0.379847209f,  0.925049241f,
+    0.382683432f,  0.923879533f,
+    0.385516054f,  0.922701128f,
+    0.388345047f,  0.921514039f,
+    0.391170384f,  0.920318277f,
+    0.393992040f,  0.919113852f,
+    0.396809987f,  0.917900776f,
+    0.399624200f,  0.916679060f,
+    0.402434651f,  0.915448716f,
+    0.405241314f,  0.914209756f,
+    0.408044163f,  0.912962190f,
+    0.410843171f,  0.911706032f,
+    0.413638312f,  0.910441292f,
+    0.416429560f,  0.909167983f,
+    0.419216888f,  0.907886116f,
+    0.422000271f,  0.906595705f,
+    0.424779681f,  0.905296759f,
+    0.427555093f,  0.903989293f,
+    0.430326481f,  0.902673318f,
+    0.433093819f,  0.901348847f,
+    0.435857080f,  0.900015892f,
+    0.438616239f,  0.898674466f,
+    0.441371269f,  0.897324581f,
+    0.444122145f,  0.895966250f,
+    0.446868840f,  0.894599486f,
+    0.449611330f,  0.893224301f,
+    0.452349587f,  0.891840709f,
+    0.455083587f,  0.890448723f,
+    0.457813304f,  0.889048356f,
+    0.460538711f,  0.887639620f,
+    0.463259784f,  0.886222530f,
+    0.465976496f,  0.884797098f,
+    0.468688822f,  0.883363339f,
+    0.471396737f,  0.881921264f,
+    0.474100215f,  0.880470889f,
+    0.476799230f,  0.879012226f,
+    0.479493758f,  0.877545290f,
+    0.482183772f,  0.876070094f,
+    0.484869248f,  0.874586652f,
+    0.487550160f,  0.873094978f,
+    0.490226483f,  0.871595087f,
+    0.492898192f,  0.870086991f,
+    0.495565262f,  0.868570706f,
+    0.498227667f,  0.867046246f,
+    0.500885383f,  0.865513624f,
+    0.503538384f,  0.863972856f,
+    0.506186645f,  0.862423956f,
+    0.508830143f,  0.860866939f,
+    0.511468850f,  0.859301818f,
+    0.514102744f,  0.857728610f,
+    0.516731799f,  0.856147328f,
+    0.519355990f,  0.854557988f,
+    0.521975293f,  0.852960605f,
+    0.524589683f,  0.851355193f,
+    0.527199135f,  0.849741768f,
+    0.529803625f,  0.848120345f,
+    0.532403128f,  0.846490939f,
+    0.534997620f,  0.844853565f,
+    0.537587076f,  0.843208240f,
+    0.540171473f,  0.841554977f,
+    0.542750785f,  0.839893794f,
+    0.545324988f,  0.838224706f,
+    0.547894059f,  0.836547727f,
+    0.550457973f,  0.834862875f,
+    0.553016706f,  0.833170165f,
+    0.555570233f,  0.831469612f,
+    0.558118531f,  0.829761234f,
+    0.560661576f,  0.828045045f,
+    0.563199344f,  0.826321063f,
+    0.565731811f,  0.824589303f,
+    0.568258953f,  0.822849781f,
+    0.570780746f,  0.821102515f,
+    0.573297167f,  0.819347520f,
+    0.575808191f,  0.817584813f,
+    0.578313796f,  0.815814411f,
+    0.580813958f,  0.814036330f,
+    0.583308653f,  0.812250587f,
+    0.585797857f,  0.810457198f,
+    0.588281548f,  0.808656182f,
+    0.590759702f,  0.806847554f,
+    0.593232295f,  0.805031331f,
+    0.595699304f,  0.803207531f,
+    0.598160707f,  0.801376172f,
+    0.600616479f,  0.799537269f,
+    0.603066599f,  0.797690841f,
+    0.605511041f,  0.795836905f,
+    0.607949785f,  0.793975478f,
+    0.610382806f,  0.792106577f,
+    0.612810082f,  0.790230221f,
+    0.615231591f,  0.788346428f,
+    0.617647308f,  0.786455214f,
+    0.620057212f,  0.784556597f,
+    0.622461279f,  0.782650596f,
+    0.624859488f,  0.780737229f,
+    0.627251815f,  0.778816512f,
+    0.629638239f,  0.776888466f,
+    0.632018736f,  0.774953107f,
+    0.634393284f,  0.773010453f,
+    0.636761861f,  0.771060524f,
+    0.639124445f,  0.769103338f,
+    0.641481013f,  0.767138912f,
+    0.643831543f,  0.765167266f,
+    0.646176013f,  0.763188417f,
+    0.648514401f,  0.761202385f,
+    0.650846685f,  0.759209189f,
+    0.653172843f,  0.757208847f,
+    0.655492853f,  0.755201377f,
+    0.657806693f,  0.753186799f,
+    0.660114342f,  0.751165132f,
+    0.662415778f,  0.749136395f,
+    0.664710978f,  0.747100606f,
+    0.666999922f,  0.745057785f,
+    0.669282588f,  0.743007952f,
+    0.671558955f,  0.740951125f,
+    0.673829000f,  0.738887324f,
+    0.676092704f,  0.736816569f,
+    0.678350043f,  0.734738878f,
+    0.680600998f,  0.732654272f,
+    0.682845546f,  0.730562769f,
+    0.685083668f,  0.728464390f,
+    0.687315341f,  0.726359155f,
+    0.689540545f,  0.724247083f,
+    0.691759258f,  0.722128194f,
+    0.693971461f,  0.720002508f,
+    0.696177131f,  0.717870045f,
+    0.698376249f,  0.715730825f,
+    0.700568794f,  0.713584869f,
+    0.702754744f,  0.711432196f,
+    0.704934080f,  0.709272826f,
+    0.707106781f,  0.707106781f,
+    0.709272826f,  0.704934080f,
+    0.711432196f,  0.702754744f,
+    0.713584869f,  0.700568794f,
+    0.715730825f,  0.698376249f,
+    0.717870045f,  0.696177131f,
+    0.720002508f,  0.693971461f,
+    0.722128194f,  0.691759258f,
+    0.724247083f,  0.689540545f,
+    0.726359155f,  0.687315341f,
+    0.728464390f,  0.685083668f,
+    0.730562769f,  0.682845546f,
+    0.732654272f,  0.680600998f,
+    0.734738878f,  0.678350043f,
+    0.736816569f,  0.676092704f,
+    0.738887324f,  0.673829000f,
+    0.740951125f,  0.671558955f,
+    0.743007952f,  0.669282588f,
+    0.745057785f,  0.666999922f,
+    0.747100606f,  0.664710978f,
+    0.749136395f,  0.662415778f,
+    0.751165132f,  0.660114342f,
+    0.753186799f,  0.657806693f,
+    0.755201377f,  0.655492853f,
+    0.757208847f,  0.653172843f,
+    0.759209189f,  0.650846685f,
+    0.761202385f,  0.648514401f,
+    0.763188417f,  0.646176013f,
+    0.765167266f,  0.643831543f,
+    0.767138912f,  0.641481013f,
+    0.769103338f,  0.639124445f,
+    0.771060524f,  0.636761861f,
+    0.773010453f,  0.634393284f,
+    0.774953107f,  0.632018736f,
+    0.776888466f,  0.629638239f,
+    0.778816512f,  0.627251815f,
+    0.780737229f,  0.624859488f,
+    0.782650596f,  0.622461279f,
+    0.784556597f,  0.620057212f,
+    0.786455214f,  0.617647308f,
+    0.788346428f,  0.615231591f,
+    0.790230221f,  0.612810082f,
+    0.792106577f,  0.610382806f,
+    0.793975478f,  0.607949785f,
+    0.795836905f,  0.605511041f,
+    0.797690841f,  0.603066599f,
+    0.799537269f,  0.600616479f,
+    0.801376172f,  0.598160707f,
+    0.803207531f,  0.595699304f,
+    0.805031331f,  0.593232295f,
+    0.806847554f,  0.590759702f,
+    0.808656182f,  0.588281548f,
+    0.810457198f,  0.585797857f,
+    0.812250587f,  0.583308653f,
+    0.814036330f,  0.580813958f,
+    0.815814411f,  0.578313796f,
+    0.817584813f,  0.575808191f,
+    0.819347520f,  0.573297167f,
+    0.821102515f,  0.570780746f,
+    0.822849781f,  0.568258953f,
+    0.824589303f,  0.565731811f,
+    0.826321063f,  0.563199344f,
+    0.828045045f,  0.560661576f,
+    0.829761234f,  0.558118531f,
+    0.831469612f,  0.555570233f,
+    0.833170165f,  0.553016706f,
+    0.834862875f,  0.550457973f,
+    0.836547727f,  0.547894059f,
+    0.838224706f,  0.545324988f,
+    0.839893794f,  0.542750785f,
+    0.841554977f,  0.540171473f,
+    0.843208240f,  0.537587076f,
+    0.844853565f,  0.534997620f,
+    0.846490939f,  0.532403128f,
+    0.848120345f,  0.529803625f,
+    0.849741768f,  0.527199135f,
+    0.851355193f,  0.524589683f,
+    0.852960605f,  0.521975293f,
+    0.854557988f,  0.519355990f,
+    0.856147328f,  0.516731799f,
+    0.857728610f,  0.514102744f,
+    0.859301818f,  0.511468850f,
+    0.860866939f,  0.508830143f,
+    0.862423956f,  0.506186645f,
+    0.863972856f,  0.503538384f,
+    0.865513624f,  0.500885383f,
+    0.867046246f,  0.498227667f,
+    0.868570706f,  0.495565262f,
+    0.870086991f,  0.492898192f,
+    0.871595087f,  0.490226483f,
+    0.873094978f,  0.487550160f,
+    0.874586652f,  0.484869248f,
+    0.876070094f,  0.482183772f,
+    0.877545290f,  0.479493758f,
+    0.879012226f,  0.476799230f,
+    0.880470889f,  0.474100215f,
+    0.881921264f,  0.471396737f,
+    0.883363339f,  0.468688822f,
+    0.884797098f,  0.465976496f,
+    0.886222530f,  0.463259784f,
+    0.887639620f,  0.460538711f,
+    0.889048356f,  0.457813304f,
+    0.890448723f,  0.455083587f,
+    0.891840709f,  0.452349587f,
+    0.893224301f,  0.449611330f,
+    0.894599486f,  0.446868840f,
+    0.895966250f,  0.444122145f,
+    0.897324581f,  0.441371269f,
+    0.898674466f,  0.438616239f,
+    0.900015892f,  0.435857080f,
+    0.901348847f,  0.433093819f,
+    0.902673318f,  0.430326481f,
+    0.903989293f,  0.427555093f,
+    0.905296759f,  0.424779681f,
+    0.906595705f,  0.422000271f,
+    0.907886116f,  0.419216888f,
+    0.909167983f,  0.416429560f,
+    0.910441292f,  0.413638312f,
+    0.911706032f,  0.410843171f,
+    0.912962190f,  0.408044163f,
+    0.914209756f,  0.405241314f,
+    0.915448716f,  0.402434651f,
+    0.916679060f,  0.399624200f,
+    0.917900776f,  0.396809987f,
+    0.919113852f,  0.393992040f,
+    0.920318277f,  0.391170384f,
+    0.921514039f,  0.388345047f,
+    0.922701128f,  0.385516054f,
+    0.923879533f,  0.382683432f,
+    0.925049241f,  0.379847209f,
+    0.926210242f,  0.377007410f,
+    0.927362526f,  0.374164063f,
+    0.928506080f,  0.371317194f,
+    0.929640896f,  0.368466830f,
+    0.930766961f,  0.365612998f,
+    0.931884266f,  0.362755724f,
+    0.932992799f,  0.359895037f,
+    0.934092550f,  0.357030961f,
+    0.935183510f,  0.354163525f,
+    0.936265667f,  0.351292756f,
+    0.937339012f,  0.348418680f,
+    0.938403534f,  0.345541325f,
+    0.939459224f,  0.342660717f,
+    0.940506071f,  0.339776884f,
+    0.941544065f,  0.336889853f,
+    0.942573198f,  0.333999651f,
+    0.943593458f,  0.331106306f,
+    0.944604837f,  0.328209844f,
+    0.945607325f,  0.325310292f,
+    0.946600913f,  0.322407679f,
+    0.947585591f,  0.319502031f,
+    0.948561350f,  0.316593376f,
+    0.949528181f,  0.313681740f,
+    0.950486074f,  0.310767153f,
+    0.951435021f,  0.307849640f,
+    0.952375013f,  0.304929230f,
+    0.953306040f,  0.302005949f,
+    0.954228095f,  0.299079826f,
+    0.955141168f,  0.296150888f,
+    0.956045251f,  0.293219163f,
+    0.956940336f,  0.290284677f,
+    0.957826413f,  0.287347460f,
+    0.958703475f,  0.284407537f,
+    0.959571513f,  0.281464938f,
+    0.960430519f,  0.278519689f,
+    0.961280486f,  0.275571819f,
+    0.962121404f,  0.272621355f,
+    0.962953267f,  0.269668326f,
+    0.963776066f,  0.266712757f,
+    0.964589793f,  0.263754679f,
+    0.965394442f,  0.260794118f,
+    0.966190003f,  0.257831102f,
+    0.966976471f,  0.254865660f,
+    0.967753837f,  0.251897818f,
+    0.968522094f,  0.248927606f,
+    0.969281235f,  0.245955050f,
+    0.970031253f,  0.242980180f,
+    0.970772141f,  0.240003022f,
+    0.971503891f,  0.237023606f,
+    0.972226497f,  0.234041959f,
+    0.972939952f,  0.231058108f,
+    0.973644250f,  0.228072083f,
+    0.974339383f,  0.225083911f,
+    0.975025345f,  0.222093621f,
+    0.975702130f,  0.219101240f,
+    0.976369731f,  0.216106797f,
+    0.977028143f,  0.213110320f,
+    0.977677358f,  0.210111837f,
+    0.978317371f,  0.207111376f,
+    0.978948175f,  0.204108966f,
+    0.979569766f,  0.201104635f,
+    0.980182136f,  0.198098411f,
+    0.980785280f,  0.195090322f,
+    0.981379193f,  0.192080397f,
+    0.981963869f,  0.189068664f,
+    0.982539302f,  0.186055152f,
+    0.983105487f,  0.183039888f,
+    0.983662419f,  0.180022901f,
+    0.984210092f,  0.177004220f,
+    0.984748502f,  0.173983873f,
+    0.985277642f,  0.170961889f,
+    0.985797509f,  0.167938295f,
+    0.986308097f,  0.164913120f,
+    0.986809402f,  0.161886394f,
+    0.987301418f,  0.158858143f,
+    0.987784142f,  0.155828398f,
+    0.988257568f,  0.152797185f,
+    0.988721692f,  0.149764535f,
+    0.989176510f,  0.146730474f,
+    0.989622017f,  0.143695033f,
+    0.990058210f,  0.140658239f,
+    0.990485084f,  0.137620122f,
+    0.990902635f,  0.134580709f,
+    0.991310860f,  0.131540029f,
+    0.991709754f,  0.128498111f,
+    0.992099313f,  0.125454983f,
+    0.992479535f,  0.122410675f,
+    0.992850414f,  0.119365215f,
+    0.993211949f,  0.116318631f,
+    0.993564136f,  0.113270952f,
+    0.993906970f,  0.110222207f,
+    0.994240449f,  0.107172425f,
+    0.994564571f,  0.104121634f,
+    0.994879331f,  0.101069863f,
+    0.995184727f,  0.098017140f,
+    0.995480755f,  0.094963495f,
+    0.995767414f,  0.091908956f,
+    0.996044701f,  0.088853553f,
+    0.996312612f,  0.085797312f,
+    0.996571146f,  0.082740265f,
+    0.996820299f,  0.079682438f,
+    0.997060070f,  0.076623861f,
+    0.997290457f,  0.073564564f,
+    0.997511456f,  0.070504573f,
+    0.997723067f,  0.067443920f,
+    0.997925286f,  0.064382631f,
+    0.998118113f,  0.061320736f,
+    0.998301545f,  0.058258265f,
+    0.998475581f,  0.055195244f,
+    0.998640218f,  0.052131705f,
+    0.998795456f,  0.049067674f,
+    0.998941293f,  0.046003182f,
+    0.999077728f,  0.042938257f,
+    0.999204759f,  0.039872928f,
+    0.999322385f,  0.036807223f,
+    0.999430605f,  0.033741172f,
+    0.999529418f,  0.030674803f,
+    0.999618822f,  0.027608146f,
+    0.999698819f,  0.024541229f,
+    0.999769405f,  0.021474080f,
+    0.999830582f,  0.018406730f,
+    0.999882347f,  0.015339206f,
+    0.999924702f,  0.012271538f,
+    0.999957645f,  0.009203755f,
+    0.999981175f,  0.006135885f,
+    0.999995294f,  0.003067957f,
+    1.000000000f,  0.000000000f,
+    0.999995294f, -0.003067957f,
+    0.999981175f, -0.006135885f,
+    0.999957645f, -0.009203755f,
+    0.999924702f, -0.012271538f,
+    0.999882347f, -0.015339206f,
+    0.999830582f, -0.018406730f,
+    0.999769405f, -0.021474080f,
+    0.999698819f, -0.024541229f,
+    0.999618822f, -0.027608146f,
+    0.999529418f, -0.030674803f,
+    0.999430605f, -0.033741172f,
+    0.999322385f, -0.036807223f,
+    0.999204759f, -0.039872928f,
+    0.999077728f, -0.042938257f,
+    0.998941293f, -0.046003182f,
+    0.998795456f, -0.049067674f,
+    0.998640218f, -0.052131705f,
+    0.998475581f, -0.055195244f,
+    0.998301545f, -0.058258265f,
+    0.998118113f, -0.061320736f,
+    0.997925286f, -0.064382631f,
+    0.997723067f, -0.067443920f,
+    0.997511456f, -0.070504573f,
+    0.997290457f, -0.073564564f,
+    0.997060070f, -0.076623861f,
+    0.996820299f, -0.079682438f,
+    0.996571146f, -0.082740265f,
+    0.996312612f, -0.085797312f,
+    0.996044701f, -0.088853553f,
+    0.995767414f, -0.091908956f,
+    0.995480755f, -0.094963495f,
+    0.995184727f, -0.098017140f,
+    0.994879331f, -0.101069863f,
+    0.994564571f, -0.104121634f,
+    0.994240449f, -0.107172425f,
+    0.993906970f, -0.110222207f,
+    0.993564136f, -0.113270952f,
+    0.993211949f, -0.116318631f,
+    0.992850414f, -0.119365215f,
+    0.992479535f, -0.122410675f,
+    0.992099313f, -0.125454983f,
+    0.991709754f, -0.128498111f,
+    0.991310860f, -0.131540029f,
+    0.990902635f, -0.134580709f,
+    0.990485084f, -0.137620122f,
+    0.990058210f, -0.140658239f,
+    0.989622017f, -0.143695033f,
+    0.989176510f, -0.146730474f,
+    0.988721692f, -0.149764535f,
+    0.988257568f, -0.152797185f,
+    0.987784142f, -0.155828398f,
+    0.987301418f, -0.158858143f,
+    0.986809402f, -0.161886394f,
+    0.986308097f, -0.164913120f,
+    0.985797509f, -0.167938295f,
+    0.985277642f, -0.170961889f,
+    0.984748502f, -0.173983873f,
+    0.984210092f, -0.177004220f,
+    0.983662419f, -0.180022901f,
+    0.983105487f, -0.183039888f,
+    0.982539302f, -0.186055152f,
+    0.981963869f, -0.189068664f,
+    0.981379193f, -0.192080397f,
+    0.980785280f, -0.195090322f,
+    0.980182136f, -0.198098411f,
+    0.979569766f, -0.201104635f,
+    0.978948175f, -0.204108966f,
+    0.978317371f, -0.207111376f,
+    0.977677358f, -0.210111837f,
+    0.977028143f, -0.213110320f,
+    0.976369731f, -0.216106797f,
+    0.975702130f, -0.219101240f,
+    0.975025345f, -0.222093621f,
+    0.974339383f, -0.225083911f,
+    0.973644250f, -0.228072083f,
+    0.972939952f, -0.231058108f,
+    0.972226497f, -0.234041959f,
+    0.971503891f, -0.237023606f,
+    0.970772141f, -0.240003022f,
+    0.970031253f, -0.242980180f,
+    0.969281235f, -0.245955050f,
+    0.968522094f, -0.248927606f,
+    0.967753837f, -0.251897818f,
+    0.966976471f, -0.254865660f,
+    0.966190003f, -0.257831102f,
+    0.965394442f, -0.260794118f,
+    0.964589793f, -0.263754679f,
+    0.963776066f, -0.266712757f,
+    0.962953267f, -0.269668326f,
+    0.962121404f, -0.272621355f,
+    0.961280486f, -0.275571819f,
+    0.960430519f, -0.278519689f,
+    0.959571513f, -0.281464938f,
+    0.958703475f, -0.284407537f,
+    0.957826413f, -0.287347460f,
+    0.956940336f, -0.290284677f,
+    0.956045251f, -0.293219163f,
+    0.955141168f, -0.296150888f,
+    0.954228095f, -0.299079826f,
+    0.953306040f, -0.302005949f,
+    0.952375013f, -0.304929230f,
+    0.951435021f, -0.307849640f,
+    0.950486074f, -0.310767153f,
+    0.949528181f, -0.313681740f,
+    0.948561350f, -0.316593376f,
+    0.947585591f, -0.319502031f,
+    0.946600913f, -0.322407679f,
+    0.945607325f, -0.325310292f,
+    0.944604837f, -0.328209844f,
+    0.943593458f, -0.331106306f,
+    0.942573198f, -0.333999651f,
+    0.941544065f, -0.336889853f,
+    0.940506071f, -0.339776884f,
+    0.939459224f, -0.342660717f,
+    0.938403534f, -0.345541325f,
+    0.937339012f, -0.348418680f,
+    0.936265667f, -0.351292756f,
+    0.935183510f, -0.354163525f,
+    0.934092550f, -0.357030961f,
+    0.932992799f, -0.359895037f,
+    0.931884266f, -0.362755724f,
+    0.930766961f, -0.365612998f,
+    0.929640896f, -0.368466830f,
+    0.928506080f, -0.371317194f,
+    0.927362526f, -0.374164063f,
+    0.926210242f, -0.377007410f,
+    0.925049241f, -0.379847209f,
+    0.923879533f, -0.382683432f,
+    0.922701128f, -0.385516054f,
+    0.921514039f, -0.388345047f,
+    0.920318277f, -0.391170384f,
+    0.919113852f, -0.393992040f,
+    0.917900776f, -0.396809987f,
+    0.916679060f, -0.399624200f,
+    0.915448716f, -0.402434651f,
+    0.914209756f, -0.405241314f,
+    0.912962190f, -0.408044163f,
+    0.911706032f, -0.410843171f,
+    0.910441292f, -0.413638312f,
+    0.909167983f, -0.416429560f,
+    0.907886116f, -0.419216888f,
+    0.906595705f, -0.422000271f,
+    0.905296759f, -0.424779681f,
+    0.903989293f, -0.427555093f,
+    0.902673318f, -0.430326481f,
+    0.901348847f, -0.433093819f,
+    0.900015892f, -0.435857080f,
+    0.898674466f, -0.438616239f,
+    0.897324581f, -0.441371269f,
+    0.895966250f, -0.444122145f,
+    0.894599486f, -0.446868840f,
+    0.893224301f, -0.449611330f,
+    0.891840709f, -0.452349587f,
+    0.890448723f, -0.455083587f,
+    0.889048356f, -0.457813304f,
+    0.887639620f, -0.460538711f,
+    0.886222530f, -0.463259784f,
+    0.884797098f, -0.465976496f,
+    0.883363339f, -0.468688822f,
+    0.881921264f, -0.471396737f,
+    0.880470889f, -0.474100215f,
+    0.879012226f, -0.476799230f,
+    0.877545290f, -0.479493758f,
+    0.876070094f, -0.482183772f,
+    0.874586652f, -0.484869248f,
+    0.873094978f, -0.487550160f,
+    0.871595087f, -0.490226483f,
+    0.870086991f, -0.492898192f,
+    0.868570706f, -0.495565262f,
+    0.867046246f, -0.498227667f,
+    0.865513624f, -0.500885383f,
+    0.863972856f, -0.503538384f,
+    0.862423956f, -0.506186645f,
+    0.860866939f, -0.508830143f,
+    0.859301818f, -0.511468850f,
+    0.857728610f, -0.514102744f,
+    0.856147328f, -0.516731799f,
+    0.854557988f, -0.519355990f,
+    0.852960605f, -0.521975293f,
+    0.851355193f, -0.524589683f,
+    0.849741768f, -0.527199135f,
+    0.848120345f, -0.529803625f,
+    0.846490939f, -0.532403128f,
+    0.844853565f, -0.534997620f,
+    0.843208240f, -0.537587076f,
+    0.841554977f, -0.540171473f,
+    0.839893794f, -0.542750785f,
+    0.838224706f, -0.545324988f,
+    0.836547727f, -0.547894059f,
+    0.834862875f, -0.550457973f,
+    0.833170165f, -0.553016706f,
+    0.831469612f, -0.555570233f,
+    0.829761234f, -0.558118531f,
+    0.828045045f, -0.560661576f,
+    0.826321063f, -0.563199344f,
+    0.824589303f, -0.565731811f,
+    0.822849781f, -0.568258953f,
+    0.821102515f, -0.570780746f,
+    0.819347520f, -0.573297167f,
+    0.817584813f, -0.575808191f,
+    0.815814411f, -0.578313796f,
+    0.814036330f, -0.580813958f,
+    0.812250587f, -0.583308653f,
+    0.810457198f, -0.585797857f,
+    0.808656182f, -0.588281548f,
+    0.806847554f, -0.590759702f,
+    0.805031331f, -0.593232295f,
+    0.803207531f, -0.595699304f,
+    0.801376172f, -0.598160707f,
+    0.799537269f, -0.600616479f,
+    0.797690841f, -0.603066599f,
+    0.795836905f, -0.605511041f,
+    0.793975478f, -0.607949785f,
+    0.792106577f, -0.610382806f,
+    0.790230221f, -0.612810082f,
+    0.788346428f, -0.615231591f,
+    0.786455214f, -0.617647308f,
+    0.784556597f, -0.620057212f,
+    0.782650596f, -0.622461279f,
+    0.780737229f, -0.624859488f,
+    0.778816512f, -0.627251815f,
+    0.776888466f, -0.629638239f,
+    0.774953107f, -0.632018736f,
+    0.773010453f, -0.634393284f,
+    0.771060524f, -0.636761861f,
+    0.769103338f, -0.639124445f,
+    0.767138912f, -0.641481013f,
+    0.765167266f, -0.643831543f,
+    0.763188417f, -0.646176013f,
+    0.761202385f, -0.648514401f,
+    0.759209189f, -0.650846685f,
+    0.757208847f, -0.653172843f,
+    0.755201377f, -0.655492853f,
+    0.753186799f, -0.657806693f,
+    0.751165132f, -0.660114342f,
+    0.749136395f, -0.662415778f,
+    0.747100606f, -0.664710978f,
+    0.745057785f, -0.666999922f,
+    0.743007952f, -0.669282588f,
+    0.740951125f, -0.671558955f,
+    0.738887324f, -0.673829000f,
+    0.736816569f, -0.676092704f,
+    0.734738878f, -0.678350043f,
+    0.732654272f, -0.680600998f,
+    0.730562769f, -0.682845546f,
+    0.728464390f, -0.685083668f,
+    0.726359155f, -0.687315341f,
+    0.724247083f, -0.689540545f,
+    0.722128194f, -0.691759258f,
+    0.720002508f, -0.693971461f,
+    0.717870045f, -0.696177131f,
+    0.715730825f, -0.698376249f,
+    0.713584869f, -0.700568794f,
+    0.711432196f, -0.702754744f,
+    0.709272826f, -0.704934080f,
+    0.707106781f, -0.707106781f,
+    0.704934080f, -0.709272826f,
+    0.702754744f, -0.711432196f,
+    0.700568794f, -0.713584869f,
+    0.698376249f, -0.715730825f,
+    0.696177131f, -0.717870045f,
+    0.693971461f, -0.720002508f,
+    0.691759258f, -0.722128194f,
+    0.689540545f, -0.724247083f,
+    0.687315341f, -0.726359155f,
+    0.685083668f, -0.728464390f,
+    0.682845546f, -0.730562769f,
+    0.680600998f, -0.732654272f,
+    0.678350043f, -0.734738878f,
+    0.676092704f, -0.736816569f,
+    0.673829000f, -0.738887324f,
+    0.671558955f, -0.740951125f,
+    0.669282588f, -0.743007952f,
+    0.666999922f, -0.745057785f,
+    0.664710978f, -0.747100606f,
+    0.662415778f, -0.749136395f,
+    0.660114342f, -0.751165132f,
+    0.657806693f, -0.753186799f,
+    0.655492853f, -0.755201377f,
+    0.653172843f, -0.757208847f,
+    0.650846685f, -0.759209189f,
+    0.648514401f, -0.761202385f,
+    0.646176013f, -0.763188417f,
+    0.643831543f, -0.765167266f,
+    0.641481013f, -0.767138912f,
+    0.639124445f, -0.769103338f,
+    0.636761861f, -0.771060524f,
+    0.634393284f, -0.773010453f,
+    0.632018736f, -0.774953107f,
+    0.629638239f, -0.776888466f,
+    0.627251815f, -0.778816512f,
+    0.624859488f, -0.780737229f,
+    0.622461279f, -0.782650596f,
+    0.620057212f, -0.784556597f,
+    0.617647308f, -0.786455214f,
+    0.615231591f, -0.788346428f,
+    0.612810082f, -0.790230221f,
+    0.610382806f, -0.792106577f,
+    0.607949785f, -0.793975478f,
+    0.605511041f, -0.795836905f,
+    0.603066599f, -0.797690841f,
+    0.600616479f, -0.799537269f,
+    0.598160707f, -0.801376172f,
+    0.595699304f, -0.803207531f,
+    0.593232295f, -0.805031331f,
+    0.590759702f, -0.806847554f,
+    0.588281548f, -0.808656182f,
+    0.585797857f, -0.810457198f,
+    0.583308653f, -0.812250587f,
+    0.580813958f, -0.814036330f,
+    0.578313796f, -0.815814411f,
+    0.575808191f, -0.817584813f,
+    0.573297167f, -0.819347520f,
+    0.570780746f, -0.821102515f,
+    0.568258953f, -0.822849781f,
+    0.565731811f, -0.824589303f,
+    0.563199344f, -0.826321063f,
+    0.560661576f, -0.828045045f,
+    0.558118531f, -0.829761234f,
+    0.555570233f, -0.831469612f,
+    0.553016706f, -0.833170165f,
+    0.550457973f, -0.834862875f,
+    0.547894059f, -0.836547727f,
+    0.545324988f, -0.838224706f,
+    0.542750785f, -0.839893794f,
+    0.540171473f, -0.841554977f,
+    0.537587076f, -0.843208240f,
+    0.534997620f, -0.844853565f,
+    0.532403128f, -0.846490939f,
+    0.529803625f, -0.848120345f,
+    0.527199135f, -0.849741768f,
+    0.524589683f, -0.851355193f,
+    0.521975293f, -0.852960605f,
+    0.519355990f, -0.854557988f,
+    0.516731799f, -0.856147328f,
+    0.514102744f, -0.857728610f,
+    0.511468850f, -0.859301818f,
+    0.508830143f, -0.860866939f,
+    0.506186645f, -0.862423956f,
+    0.503538384f, -0.863972856f,
+    0.500885383f, -0.865513624f,
+    0.498227667f, -0.867046246f,
+    0.495565262f, -0.868570706f,
+    0.492898192f, -0.870086991f,
+    0.490226483f, -0.871595087f,
+    0.487550160f, -0.873094978f,
+    0.484869248f, -0.874586652f,
+    0.482183772f, -0.876070094f,
+    0.479493758f, -0.877545290f,
+    0.476799230f, -0.879012226f,
+    0.474100215f, -0.880470889f,
+    0.471396737f, -0.881921264f,
+    0.468688822f, -0.883363339f,
+    0.465976496f, -0.884797098f,
+    0.463259784f, -0.886222530f,
+    0.460538711f, -0.887639620f,
+    0.457813304f, -0.889048356f,
+    0.455083587f, -0.890448723f,
+    0.452349587f, -0.891840709f,
+    0.449611330f, -0.893224301f,
+    0.446868840f, -0.894599486f,
+    0.444122145f, -0.895966250f,
+    0.441371269f, -0.897324581f,
+    0.438616239f, -0.898674466f,
+    0.435857080f, -0.900015892f,
+    0.433093819f, -0.901348847f,
+    0.430326481f, -0.902673318f,
+    0.427555093f, -0.903989293f,
+    0.424779681f, -0.905296759f,
+    0.422000271f, -0.906595705f,
+    0.419216888f, -0.907886116f,
+    0.416429560f, -0.909167983f,
+    0.413638312f, -0.910441292f,
+    0.410843171f, -0.911706032f,
+    0.408044163f, -0.912962190f,
+    0.405241314f, -0.914209756f,
+    0.402434651f, -0.915448716f,
+    0.399624200f, -0.916679060f,
+    0.396809987f, -0.917900776f,
+    0.393992040f, -0.919113852f,
+    0.391170384f, -0.920318277f,
+    0.388345047f, -0.921514039f,
+    0.385516054f, -0.922701128f,
+    0.382683432f, -0.923879533f,
+    0.379847209f, -0.925049241f,
+    0.377007410f, -0.926210242f,
+    0.374164063f, -0.927362526f,
+    0.371317194f, -0.928506080f,
+    0.368466830f, -0.929640896f,
+    0.365612998f, -0.930766961f,
+    0.362755724f, -0.931884266f,
+    0.359895037f, -0.932992799f,
+    0.357030961f, -0.934092550f,
+    0.354163525f, -0.935183510f,
+    0.351292756f, -0.936265667f,
+    0.348418680f, -0.937339012f,
+    0.345541325f, -0.938403534f,
+    0.342660717f, -0.939459224f,
+    0.339776884f, -0.940506071f,
+    0.336889853f, -0.941544065f,
+    0.333999651f, -0.942573198f,
+    0.331106306f, -0.943593458f,
+    0.328209844f, -0.944604837f,
+    0.325310292f, -0.945607325f,
+    0.322407679f, -0.946600913f,
+    0.319502031f, -0.947585591f,
+    0.316593376f, -0.948561350f,
+    0.313681740f, -0.949528181f,
+    0.310767153f, -0.950486074f,
+    0.307849640f, -0.951435021f,
+    0.304929230f, -0.952375013f,
+    0.302005949f, -0.953306040f,
+    0.299079826f, -0.954228095f,
+    0.296150888f, -0.955141168f,
+    0.293219163f, -0.956045251f,
+    0.290284677f, -0.956940336f,
+    0.287347460f, -0.957826413f,
+    0.284407537f, -0.958703475f,
+    0.281464938f, -0.959571513f,
+    0.278519689f, -0.960430519f,
+    0.275571819f, -0.961280486f,
+    0.272621355f, -0.962121404f,
+    0.269668326f, -0.962953267f,
+    0.266712757f, -0.963776066f,
+    0.263754679f, -0.964589793f,
+    0.260794118f, -0.965394442f,
+    0.257831102f, -0.966190003f,
+    0.254865660f, -0.966976471f,
+    0.251897818f, -0.967753837f,
+    0.248927606f, -0.968522094f,
+    0.245955050f, -0.969281235f,
+    0.242980180f, -0.970031253f,
+    0.240003022f, -0.970772141f,
+    0.237023606f, -0.971503891f,
+    0.234041959f, -0.972226497f,
+    0.231058108f, -0.972939952f,
+    0.228072083f, -0.973644250f,
+    0.225083911f, -0.974339383f,
+    0.222093621f, -0.975025345f,
+    0.219101240f, -0.975702130f,
+    0.216106797f, -0.976369731f,
+    0.213110320f, -0.977028143f,
+    0.210111837f, -0.977677358f,
+    0.207111376f, -0.978317371f,
+    0.204108966f, -0.978948175f,
+    0.201104635f, -0.979569766f,
+    0.198098411f, -0.980182136f,
+    0.195090322f, -0.980785280f,
+    0.192080397f, -0.981379193f,
+    0.189068664f, -0.981963869f,
+    0.186055152f, -0.982539302f,
+    0.183039888f, -0.983105487f,
+    0.180022901f, -0.983662419f,
+    0.177004220f, -0.984210092f,
+    0.173983873f, -0.984748502f,
+    0.170961889f, -0.985277642f,
+    0.167938295f, -0.985797509f,
+    0.164913120f, -0.986308097f,
+    0.161886394f, -0.986809402f,
+    0.158858143f, -0.987301418f,
+    0.155828398f, -0.987784142f,
+    0.152797185f, -0.988257568f,
+    0.149764535f, -0.988721692f,
+    0.146730474f, -0.989176510f,
+    0.143695033f, -0.989622017f,
+    0.140658239f, -0.990058210f,
+    0.137620122f, -0.990485084f,
+    0.134580709f, -0.990902635f,
+    0.131540029f, -0.991310860f,
+    0.128498111f, -0.991709754f,
+    0.125454983f, -0.992099313f,
+    0.122410675f, -0.992479535f,
+    0.119365215f, -0.992850414f,
+    0.116318631f, -0.993211949f,
+    0.113270952f, -0.993564136f,
+    0.110222207f, -0.993906970f,
+    0.107172425f, -0.994240449f,
+    0.104121634f, -0.994564571f,
+    0.101069863f, -0.994879331f,
+    0.098017140f, -0.995184727f,
+    0.094963495f, -0.995480755f,
+    0.091908956f, -0.995767414f,
+    0.088853553f, -0.996044701f,
+    0.085797312f, -0.996312612f,
+    0.082740265f, -0.996571146f,
+    0.079682438f, -0.996820299f,
+    0.076623861f, -0.997060070f,
+    0.073564564f, -0.997290457f,
+    0.070504573f, -0.997511456f,
+    0.067443920f, -0.997723067f,
+    0.064382631f, -0.997925286f,
+    0.061320736f, -0.998118113f,
+    0.058258265f, -0.998301545f,
+    0.055195244f, -0.998475581f,
+    0.052131705f, -0.998640218f,
+    0.049067674f, -0.998795456f,
+    0.046003182f, -0.998941293f,
+    0.042938257f, -0.999077728f,
+    0.039872928f, -0.999204759f,
+    0.036807223f, -0.999322385f,
+    0.033741172f, -0.999430605f,
+    0.030674803f, -0.999529418f,
+    0.027608146f, -0.999618822f,
+    0.024541229f, -0.999698819f,
+    0.021474080f, -0.999769405f,
+    0.018406730f, -0.999830582f,
+    0.015339206f, -0.999882347f,
+    0.012271538f, -0.999924702f,
+    0.009203755f, -0.999957645f,
+    0.006135885f, -0.999981175f,
+    0.003067957f, -0.999995294f
+};
+
+const float32_t twiddleCoef_rfft_4096[4096] = {
+    0.000000000f,  1.000000000f,
+    0.001533980f,  0.999998823f,
+    0.003067957f,  0.999995294f,
+    0.004601926f,  0.999989411f,
+    0.006135885f,  0.999981175f,
+    0.007669829f,  0.999970586f,
+    0.009203755f,  0.999957645f,
+    0.010737659f,  0.999942350f,
+    0.012271538f,  0.999924702f,
+    0.013805389f,  0.999904701f,
+    0.015339206f,  0.999882347f,
+    0.016872988f,  0.999857641f,
+    0.018406730f,  0.999830582f,
+    0.019940429f,  0.999801170f,
+    0.021474080f,  0.999769405f,
+    0.023007681f,  0.999735288f,
+    0.024541229f,  0.999698819f,
+    0.026074718f,  0.999659997f,
+    0.027608146f,  0.999618822f,
+    0.029141509f,  0.999575296f,
+    0.030674803f,  0.999529418f,
+    0.032208025f,  0.999481187f,
+    0.033741172f,  0.999430605f,
+    0.035274239f,  0.999377670f,
+    0.036807223f,  0.999322385f,
+    0.038340120f,  0.999264747f,
+    0.039872928f,  0.999204759f,
+    0.041405641f,  0.999142419f,
+    0.042938257f,  0.999077728f,
+    0.044470772f,  0.999010686f,
+    0.046003182f,  0.998941293f,
+    0.047535484f,  0.998869550f,
+    0.049067674f,  0.998795456f,
+    0.050599749f,  0.998719012f,
+    0.052131705f,  0.998640218f,
+    0.053663538f,  0.998559074f,
+    0.055195244f,  0.998475581f,
+    0.056726821f,  0.998389737f,
+    0.058258265f,  0.998301545f,
+    0.059789571f,  0.998211003f,
+    0.061320736f,  0.998118113f,
+    0.062851758f,  0.998022874f,
+    0.064382631f,  0.997925286f,
+    0.065913353f,  0.997825350f,
+    0.067443920f,  0.997723067f,
+    0.068974328f,  0.997618435f,
+    0.070504573f,  0.997511456f,
+    0.072034653f,  0.997402130f,
+    0.073564564f,  0.997290457f,
+    0.075094301f,  0.997176437f,
+    0.076623861f,  0.997060070f,
+    0.078153242f,  0.996941358f,
+    0.079682438f,  0.996820299f,
+    0.081211447f,  0.996696895f,
+    0.082740265f,  0.996571146f,
+    0.084268888f,  0.996443051f,
+    0.085797312f,  0.996312612f,
+    0.087325535f,  0.996179829f,
+    0.088853553f,  0.996044701f,
+    0.090381361f,  0.995907229f,
+    0.091908956f,  0.995767414f,
+    0.093436336f,  0.995625256f,
+    0.094963495f,  0.995480755f,
+    0.096490431f,  0.995333912f,
+    0.098017140f,  0.995184727f,
+    0.099543619f,  0.995033199f,
+    0.101069863f,  0.994879331f,
+    0.102595869f,  0.994723121f,
+    0.104121634f,  0.994564571f,
+    0.105647154f,  0.994403680f,
+    0.107172425f,  0.994240449f,
+    0.108697444f,  0.994074879f,
+    0.110222207f,  0.993906970f,
+    0.111746711f,  0.993736722f,
+    0.113270952f,  0.993564136f,
+    0.114794927f,  0.993389211f,
+    0.116318631f,  0.993211949f,
+    0.117842062f,  0.993032350f,
+    0.119365215f,  0.992850414f,
+    0.120888087f,  0.992666142f,
+    0.122410675f,  0.992479535f,
+    0.123932975f,  0.992290591f,
+    0.125454983f,  0.992099313f,
+    0.126976696f,  0.991905700f,
+    0.128498111f,  0.991709754f,
+    0.130019223f,  0.991511473f,
+    0.131540029f,  0.991310860f,
+    0.133060525f,  0.991107914f,
+    0.134580709f,  0.990902635f,
+    0.136100575f,  0.990695025f,
+    0.137620122f,  0.990485084f,
+    0.139139344f,  0.990272812f,
+    0.140658239f,  0.990058210f,
+    0.142176804f,  0.989841278f,
+    0.143695033f,  0.989622017f,
+    0.145212925f,  0.989400428f,
+    0.146730474f,  0.989176510f,
+    0.148247679f,  0.988950265f,
+    0.149764535f,  0.988721692f,
+    0.151281038f,  0.988490793f,
+    0.152797185f,  0.988257568f,
+    0.154312973f,  0.988022017f,
+    0.155828398f,  0.987784142f,
+    0.157343456f,  0.987543942f,
+    0.158858143f,  0.987301418f,
+    0.160372457f,  0.987056571f,
+    0.161886394f,  0.986809402f,
+    0.163399949f,  0.986559910f,
+    0.164913120f,  0.986308097f,
+    0.166425904f,  0.986053963f,
+    0.167938295f,  0.985797509f,
+    0.169450291f,  0.985538735f,
+    0.170961889f,  0.985277642f,
+    0.172473084f,  0.985014231f,
+    0.173983873f,  0.984748502f,
+    0.175494253f,  0.984480455f,
+    0.177004220f,  0.984210092f,
+    0.178513771f,  0.983937413f,
+    0.180022901f,  0.983662419f,
+    0.181531608f,  0.983385110f,
+    0.183039888f,  0.983105487f,
+    0.184547737f,  0.982823551f,
+    0.186055152f,  0.982539302f,
+    0.187562129f,  0.982252741f,
+    0.189068664f,  0.981963869f,
+    0.190574755f,  0.981672686f,
+    0.192080397f,  0.981379193f,
+    0.193585587f,  0.981083391f,
+    0.195090322f,  0.980785280f,
+    0.196594598f,  0.980484862f,
+    0.198098411f,  0.980182136f,
+    0.199601758f,  0.979877104f,
+    0.201104635f,  0.979569766f,
+    0.202607039f,  0.979260123f,
+    0.204108966f,  0.978948175f,
+    0.205610413f,  0.978633924f,
+    0.207111376f,  0.978317371f,
+    0.208611852f,  0.977998515f,
+    0.210111837f,  0.977677358f,
+    0.211611327f,  0.977353900f,
+    0.213110320f,  0.977028143f,
+    0.214608811f,  0.976700086f,
+    0.216106797f,  0.976369731f,
+    0.217604275f,  0.976037079f,
+    0.219101240f,  0.975702130f,
+    0.220597690f,  0.975364885f,
+    0.222093621f,  0.975025345f,
+    0.223589029f,  0.974683511f,
+    0.225083911f,  0.974339383f,
+    0.226578264f,  0.973992962f,
+    0.228072083f,  0.973644250f,
+    0.229565366f,  0.973293246f,
+    0.231058108f,  0.972939952f,
+    0.232550307f,  0.972584369f,
+    0.234041959f,  0.972226497f,
+    0.235533059f,  0.971866337f,
+    0.237023606f,  0.971503891f,
+    0.238513595f,  0.971139158f,
+    0.240003022f,  0.970772141f,
+    0.241491885f,  0.970402839f,
+    0.242980180f,  0.970031253f,
+    0.244467903f,  0.969657385f,
+    0.245955050f,  0.969281235f,
+    0.247441619f,  0.968902805f,
+    0.248927606f,  0.968522094f,
+    0.250413007f,  0.968139105f,
+    0.251897818f,  0.967753837f,
+    0.253382037f,  0.967366292f,
+    0.254865660f,  0.966976471f,
+    0.256348682f,  0.966584374f,
+    0.257831102f,  0.966190003f,
+    0.259312915f,  0.965793359f,
+    0.260794118f,  0.965394442f,
+    0.262274707f,  0.964993253f,
+    0.263754679f,  0.964589793f,
+    0.265234030f,  0.964184064f,
+    0.266712757f,  0.963776066f,
+    0.268190857f,  0.963365800f,
+    0.269668326f,  0.962953267f,
+    0.271145160f,  0.962538468f,
+    0.272621355f,  0.962121404f,
+    0.274096910f,  0.961702077f,
+    0.275571819f,  0.961280486f,
+    0.277046080f,  0.960856633f,
+    0.278519689f,  0.960430519f,
+    0.279992643f,  0.960002146f,
+    0.281464938f,  0.959571513f,
+    0.282936570f,  0.959138622f,
+    0.284407537f,  0.958703475f,
+    0.285877835f,  0.958266071f,
+    0.287347460f,  0.957826413f,
+    0.288816408f,  0.957384501f,
+    0.290284677f,  0.956940336f,
+    0.291752263f,  0.956493919f,
+    0.293219163f,  0.956045251f,
+    0.294685372f,  0.955594334f,
+    0.296150888f,  0.955141168f,
+    0.297615707f,  0.954685755f,
+    0.299079826f,  0.954228095f,
+    0.300543241f,  0.953768190f,
+    0.302005949f,  0.953306040f,
+    0.303467947f,  0.952841648f,
+    0.304929230f,  0.952375013f,
+    0.306389795f,  0.951906137f,
+    0.307849640f,  0.951435021f,
+    0.309308760f,  0.950961666f,
+    0.310767153f,  0.950486074f,
+    0.312224814f,  0.950008245f,
+    0.313681740f,  0.949528181f,
+    0.315137929f,  0.949045882f,
+    0.316593376f,  0.948561350f,
+    0.318048077f,  0.948074586f,
+    0.319502031f,  0.947585591f,
+    0.320955232f,  0.947094366f,
+    0.322407679f,  0.946600913f,
+    0.323859367f,  0.946105232f,
+    0.325310292f,  0.945607325f,
+    0.326760452f,  0.945107193f,
+    0.328209844f,  0.944604837f,
+    0.329658463f,  0.944100258f,
+    0.331106306f,  0.943593458f,
+    0.332553370f,  0.943084437f,
+    0.333999651f,  0.942573198f,
+    0.335445147f,  0.942059740f,
+    0.336889853f,  0.941544065f,
+    0.338333767f,  0.941026175f,
+    0.339776884f,  0.940506071f,
+    0.341219202f,  0.939983753f,
+    0.342660717f,  0.939459224f,
+    0.344101426f,  0.938932484f,
+    0.345541325f,  0.938403534f,
+    0.346980411f,  0.937872376f,
+    0.348418680f,  0.937339012f,
+    0.349856130f,  0.936803442f,
+    0.351292756f,  0.936265667f,
+    0.352728556f,  0.935725689f,
+    0.354163525f,  0.935183510f,
+    0.355597662f,  0.934639130f,
+    0.357030961f,  0.934092550f,
+    0.358463421f,  0.933543773f,
+    0.359895037f,  0.932992799f,
+    0.361325806f,  0.932439629f,
+    0.362755724f,  0.931884266f,
+    0.364184790f,  0.931326709f,
+    0.365612998f,  0.930766961f,
+    0.367040346f,  0.930205023f,
+    0.368466830f,  0.929640896f,
+    0.369892447f,  0.929074581f,
+    0.371317194f,  0.928506080f,
+    0.372741067f,  0.927935395f,
+    0.374164063f,  0.927362526f,
+    0.375586178f,  0.926787474f,
+    0.377007410f,  0.926210242f,
+    0.378427755f,  0.925630831f,
+    0.379847209f,  0.925049241f,
+    0.381265769f,  0.924465474f,
+    0.382683432f,  0.923879533f,
+    0.384100195f,  0.923291417f,
+    0.385516054f,  0.922701128f,
+    0.386931006f,  0.922108669f,
+    0.388345047f,  0.921514039f,
+    0.389758174f,  0.920917242f,
+    0.391170384f,  0.920318277f,
+    0.392581674f,  0.919717146f,
+    0.393992040f,  0.919113852f,
+    0.395401479f,  0.918508394f,
+    0.396809987f,  0.917900776f,
+    0.398217562f,  0.917290997f,
+    0.399624200f,  0.916679060f,
+    0.401029897f,  0.916064966f,
+    0.402434651f,  0.915448716f,
+    0.403838458f,  0.914830312f,
+    0.405241314f,  0.914209756f,
+    0.406643217f,  0.913587048f,
+    0.408044163f,  0.912962190f,
+    0.409444149f,  0.912335185f,
+    0.410843171f,  0.911706032f,
+    0.412241227f,  0.911074734f,
+    0.413638312f,  0.910441292f,
+    0.415034424f,  0.909805708f,
+    0.416429560f,  0.909167983f,
+    0.417823716f,  0.908528119f,
+    0.419216888f,  0.907886116f,
+    0.420609074f,  0.907241978f,
+    0.422000271f,  0.906595705f,
+    0.423390474f,  0.905947298f,
+    0.424779681f,  0.905296759f,
+    0.426167889f,  0.904644091f,
+    0.427555093f,  0.903989293f,
+    0.428941292f,  0.903332368f,
+    0.430326481f,  0.902673318f,
+    0.431710658f,  0.902012144f,
+    0.433093819f,  0.901348847f,
+    0.434475961f,  0.900683429f,
+    0.435857080f,  0.900015892f,
+    0.437237174f,  0.899346237f,
+    0.438616239f,  0.898674466f,
+    0.439994271f,  0.898000580f,
+    0.441371269f,  0.897324581f,
+    0.442747228f,  0.896646470f,
+    0.444122145f,  0.895966250f,
+    0.445496017f,  0.895283921f,
+    0.446868840f,  0.894599486f,
+    0.448240612f,  0.893912945f,
+    0.449611330f,  0.893224301f,
+    0.450980989f,  0.892533555f,
+    0.452349587f,  0.891840709f,
+    0.453717121f,  0.891145765f,
+    0.455083587f,  0.890448723f,
+    0.456448982f,  0.889749586f,
+    0.457813304f,  0.889048356f,
+    0.459176548f,  0.888345033f,
+    0.460538711f,  0.887639620f,
+    0.461899791f,  0.886932119f,
+    0.463259784f,  0.886222530f,
+    0.464618686f,  0.885510856f,
+    0.465976496f,  0.884797098f,
+    0.467333209f,  0.884081259f,
+    0.468688822f,  0.883363339f,
+    0.470043332f,  0.882643340f,
+    0.471396737f,  0.881921264f,
+    0.472749032f,  0.881197113f,
+    0.474100215f,  0.880470889f,
+    0.475450282f,  0.879742593f,
+    0.476799230f,  0.879012226f,
+    0.478147056f,  0.878279792f,
+    0.479493758f,  0.877545290f,
+    0.480839331f,  0.876808724f,
+    0.482183772f,  0.876070094f,
+    0.483527079f,  0.875329403f,
+    0.484869248f,  0.874586652f,
+    0.486210276f,  0.873841843f,
+    0.487550160f,  0.873094978f,
+    0.488888897f,  0.872346059f,
+    0.490226483f,  0.871595087f,
+    0.491562916f,  0.870842063f,
+    0.492898192f,  0.870086991f,
+    0.494232309f,  0.869329871f,
+    0.495565262f,  0.868570706f,
+    0.496897049f,  0.867809497f,
+    0.498227667f,  0.867046246f,
+    0.499557113f,  0.866280954f,
+    0.500885383f,  0.865513624f,
+    0.502212474f,  0.864744258f,
+    0.503538384f,  0.863972856f,
+    0.504863109f,  0.863199422f,
+    0.506186645f,  0.862423956f,
+    0.507508991f,  0.861646461f,
+    0.508830143f,  0.860866939f,
+    0.510150097f,  0.860085390f,
+    0.511468850f,  0.859301818f,
+    0.512786401f,  0.858516224f,
+    0.514102744f,  0.857728610f,
+    0.515417878f,  0.856938977f,
+    0.516731799f,  0.856147328f,
+    0.518044504f,  0.855353665f,
+    0.519355990f,  0.854557988f,
+    0.520666254f,  0.853760301f,
+    0.521975293f,  0.852960605f,
+    0.523283103f,  0.852158902f,
+    0.524589683f,  0.851355193f,
+    0.525895027f,  0.850549481f,
+    0.527199135f,  0.849741768f,
+    0.528502002f,  0.848932055f,
+    0.529803625f,  0.848120345f,
+    0.531104001f,  0.847306639f,
+    0.532403128f,  0.846490939f,
+    0.533701002f,  0.845673247f,
+    0.534997620f,  0.844853565f,
+    0.536292979f,  0.844031895f,
+    0.537587076f,  0.843208240f,
+    0.538879909f,  0.842382600f,
+    0.540171473f,  0.841554977f,
+    0.541461766f,  0.840725375f,
+    0.542750785f,  0.839893794f,
+    0.544038527f,  0.839060237f,
+    0.545324988f,  0.838224706f,
+    0.546610167f,  0.837387202f,
+    0.547894059f,  0.836547727f,
+    0.549176662f,  0.835706284f,
+    0.550457973f,  0.834862875f,
+    0.551737988f,  0.834017501f,
+    0.553016706f,  0.833170165f,
+    0.554294121f,  0.832320868f,
+    0.555570233f,  0.831469612f,
+    0.556845037f,  0.830616400f,
+    0.558118531f,  0.829761234f,
+    0.559390712f,  0.828904115f,
+    0.560661576f,  0.828045045f,
+    0.561931121f,  0.827184027f,
+    0.563199344f,  0.826321063f,
+    0.564466242f,  0.825456154f,
+    0.565731811f,  0.824589303f,
+    0.566996049f,  0.823720511f,
+    0.568258953f,  0.822849781f,
+    0.569520519f,  0.821977115f,
+    0.570780746f,  0.821102515f,
+    0.572039629f,  0.820225983f,
+    0.573297167f,  0.819347520f,
+    0.574553355f,  0.818467130f,
+    0.575808191f,  0.817584813f,
+    0.577061673f,  0.816700573f,
+    0.578313796f,  0.815814411f,
+    0.579564559f,  0.814926329f,
+    0.580813958f,  0.814036330f,
+    0.582061990f,  0.813144415f,
+    0.583308653f,  0.812250587f,
+    0.584553943f,  0.811354847f,
+    0.585797857f,  0.810457198f,
+    0.587040394f,  0.809557642f,
+    0.588281548f,  0.808656182f,
+    0.589521319f,  0.807752818f,
+    0.590759702f,  0.806847554f,
+    0.591996695f,  0.805940391f,
+    0.593232295f,  0.805031331f,
+    0.594466499f,  0.804120377f,
+    0.595699304f,  0.803207531f,
+    0.596930708f,  0.802292796f,
+    0.598160707f,  0.801376172f,
+    0.599389298f,  0.800457662f,
+    0.600616479f,  0.799537269f,
+    0.601842247f,  0.798614995f,
+    0.603066599f,  0.797690841f,
+    0.604289531f,  0.796764810f,
+    0.605511041f,  0.795836905f,
+    0.606731127f,  0.794907126f,
+    0.607949785f,  0.793975478f,
+    0.609167012f,  0.793041960f,
+    0.610382806f,  0.792106577f,
+    0.611597164f,  0.791169330f,
+    0.612810082f,  0.790230221f,
+    0.614021559f,  0.789289253f,
+    0.615231591f,  0.788346428f,
+    0.616440175f,  0.787401747f,
+    0.617647308f,  0.786455214f,
+    0.618852988f,  0.785506830f,
+    0.620057212f,  0.784556597f,
+    0.621259977f,  0.783604519f,
+    0.622461279f,  0.782650596f,
+    0.623661118f,  0.781694832f,
+    0.624859488f,  0.780737229f,
+    0.626056388f,  0.779777788f,
+    0.627251815f,  0.778816512f,
+    0.628445767f,  0.777853404f,
+    0.629638239f,  0.776888466f,
+    0.630829230f,  0.775921699f,
+    0.632018736f,  0.774953107f,
+    0.633206755f,  0.773982691f,
+    0.634393284f,  0.773010453f,
+    0.635578320f,  0.772036397f,
+    0.636761861f,  0.771060524f,
+    0.637943904f,  0.770082837f,
+    0.639124445f,  0.769103338f,
+    0.640303482f,  0.768122029f,
+    0.641481013f,  0.767138912f,
+    0.642657034f,  0.766153990f,
+    0.643831543f,  0.765167266f,
+    0.645004537f,  0.764178741f,
+    0.646176013f,  0.763188417f,
+    0.647345969f,  0.762196298f,
+    0.648514401f,  0.761202385f,
+    0.649681307f,  0.760206682f,
+    0.650846685f,  0.759209189f,
+    0.652010531f,  0.758209910f,
+    0.653172843f,  0.757208847f,
+    0.654333618f,  0.756206001f,
+    0.655492853f,  0.755201377f,
+    0.656650546f,  0.754194975f,
+    0.657806693f,  0.753186799f,
+    0.658961293f,  0.752176850f,
+    0.660114342f,  0.751165132f,
+    0.661265838f,  0.750151646f,
+    0.662415778f,  0.749136395f,
+    0.663564159f,  0.748119380f,
+    0.664710978f,  0.747100606f,
+    0.665856234f,  0.746080074f,
+    0.666999922f,  0.745057785f,
+    0.668142041f,  0.744033744f,
+    0.669282588f,  0.743007952f,
+    0.670421560f,  0.741980412f,
+    0.671558955f,  0.740951125f,
+    0.672694769f,  0.739920095f,
+    0.673829000f,  0.738887324f,
+    0.674961646f,  0.737852815f,
+    0.676092704f,  0.736816569f,
+    0.677222170f,  0.735778589f,
+    0.678350043f,  0.734738878f,
+    0.679476320f,  0.733697438f,
+    0.680600998f,  0.732654272f,
+    0.681724074f,  0.731609381f,
+    0.682845546f,  0.730562769f,
+    0.683965412f,  0.729514438f,
+    0.685083668f,  0.728464390f,
+    0.686200312f,  0.727412629f,
+    0.687315341f,  0.726359155f,
+    0.688428753f,  0.725303972f,
+    0.689540545f,  0.724247083f,
+    0.690650714f,  0.723188489f,
+    0.691759258f,  0.722128194f,
+    0.692866175f,  0.721066199f,
+    0.693971461f,  0.720002508f,
+    0.695075114f,  0.718937122f,
+    0.696177131f,  0.717870045f,
+    0.697277511f,  0.716801279f,
+    0.698376249f,  0.715730825f,
+    0.699473345f,  0.714658688f,
+    0.700568794f,  0.713584869f,
+    0.701662595f,  0.712509371f,
+    0.702754744f,  0.711432196f,
+    0.703845241f,  0.710353347f,
+    0.704934080f,  0.709272826f,
+    0.706021261f,  0.708190637f,
+    0.707106781f,  0.707106781f,
+    0.708190637f,  0.706021261f,
+    0.709272826f,  0.704934080f,
+    0.710353347f,  0.703845241f,
+    0.711432196f,  0.702754744f,
+    0.712509371f,  0.701662595f,
+    0.713584869f,  0.700568794f,
+    0.714658688f,  0.699473345f,
+    0.715730825f,  0.698376249f,
+    0.716801279f,  0.697277511f,
+    0.717870045f,  0.696177131f,
+    0.718937122f,  0.695075114f,
+    0.720002508f,  0.693971461f,
+    0.721066199f,  0.692866175f,
+    0.722128194f,  0.691759258f,
+    0.723188489f,  0.690650714f,
+    0.724247083f,  0.689540545f,
+    0.725303972f,  0.688428753f,
+    0.726359155f,  0.687315341f,
+    0.727412629f,  0.686200312f,
+    0.728464390f,  0.685083668f,
+    0.729514438f,  0.683965412f,
+    0.730562769f,  0.682845546f,
+    0.731609381f,  0.681724074f,
+    0.732654272f,  0.680600998f,
+    0.733697438f,  0.679476320f,
+    0.734738878f,  0.678350043f,
+    0.735778589f,  0.677222170f,
+    0.736816569f,  0.676092704f,
+    0.737852815f,  0.674961646f,
+    0.738887324f,  0.673829000f,
+    0.739920095f,  0.672694769f,
+    0.740951125f,  0.671558955f,
+    0.741980412f,  0.670421560f,
+    0.743007952f,  0.669282588f,
+    0.744033744f,  0.668142041f,
+    0.745057785f,  0.666999922f,
+    0.746080074f,  0.665856234f,
+    0.747100606f,  0.664710978f,
+    0.748119380f,  0.663564159f,
+    0.749136395f,  0.662415778f,
+    0.750151646f,  0.661265838f,
+    0.751165132f,  0.660114342f,
+    0.752176850f,  0.658961293f,
+    0.753186799f,  0.657806693f,
+    0.754194975f,  0.656650546f,
+    0.755201377f,  0.655492853f,
+    0.756206001f,  0.654333618f,
+    0.757208847f,  0.653172843f,
+    0.758209910f,  0.652010531f,
+    0.759209189f,  0.650846685f,
+    0.760206682f,  0.649681307f,
+    0.761202385f,  0.648514401f,
+    0.762196298f,  0.647345969f,
+    0.763188417f,  0.646176013f,
+    0.764178741f,  0.645004537f,
+    0.765167266f,  0.643831543f,
+    0.766153990f,  0.642657034f,
+    0.767138912f,  0.641481013f,
+    0.768122029f,  0.640303482f,
+    0.769103338f,  0.639124445f,
+    0.770082837f,  0.637943904f,
+    0.771060524f,  0.636761861f,
+    0.772036397f,  0.635578320f,
+    0.773010453f,  0.634393284f,
+    0.773982691f,  0.633206755f,
+    0.774953107f,  0.632018736f,
+    0.775921699f,  0.630829230f,
+    0.776888466f,  0.629638239f,
+    0.777853404f,  0.628445767f,
+    0.778816512f,  0.627251815f,
+    0.779777788f,  0.626056388f,
+    0.780737229f,  0.624859488f,
+    0.781694832f,  0.623661118f,
+    0.782650596f,  0.622461279f,
+    0.783604519f,  0.621259977f,
+    0.784556597f,  0.620057212f,
+    0.785506830f,  0.618852988f,
+    0.786455214f,  0.617647308f,
+    0.787401747f,  0.616440175f,
+    0.788346428f,  0.615231591f,
+    0.789289253f,  0.614021559f,
+    0.790230221f,  0.612810082f,
+    0.791169330f,  0.611597164f,
+    0.792106577f,  0.610382806f,
+    0.793041960f,  0.609167012f,
+    0.793975478f,  0.607949785f,
+    0.794907126f,  0.606731127f,
+    0.795836905f,  0.605511041f,
+    0.796764810f,  0.604289531f,
+    0.797690841f,  0.603066599f,
+    0.798614995f,  0.601842247f,
+    0.799537269f,  0.600616479f,
+    0.800457662f,  0.599389298f,
+    0.801376172f,  0.598160707f,
+    0.802292796f,  0.596930708f,
+    0.803207531f,  0.595699304f,
+    0.804120377f,  0.594466499f,
+    0.805031331f,  0.593232295f,
+    0.805940391f,  0.591996695f,
+    0.806847554f,  0.590759702f,
+    0.807752818f,  0.589521319f,
+    0.808656182f,  0.588281548f,
+    0.809557642f,  0.587040394f,
+    0.810457198f,  0.585797857f,
+    0.811354847f,  0.584553943f,
+    0.812250587f,  0.583308653f,
+    0.813144415f,  0.582061990f,
+    0.814036330f,  0.580813958f,
+    0.814926329f,  0.579564559f,
+    0.815814411f,  0.578313796f,
+    0.816700573f,  0.577061673f,
+    0.817584813f,  0.575808191f,
+    0.818467130f,  0.574553355f,
+    0.819347520f,  0.573297167f,
+    0.820225983f,  0.572039629f,
+    0.821102515f,  0.570780746f,
+    0.821977115f,  0.569520519f,
+    0.822849781f,  0.568258953f,
+    0.823720511f,  0.566996049f,
+    0.824589303f,  0.565731811f,
+    0.825456154f,  0.564466242f,
+    0.826321063f,  0.563199344f,
+    0.827184027f,  0.561931121f,
+    0.828045045f,  0.560661576f,
+    0.828904115f,  0.559390712f,
+    0.829761234f,  0.558118531f,
+    0.830616400f,  0.556845037f,
+    0.831469612f,  0.555570233f,
+    0.832320868f,  0.554294121f,
+    0.833170165f,  0.553016706f,
+    0.834017501f,  0.551737988f,
+    0.834862875f,  0.550457973f,
+    0.835706284f,  0.549176662f,
+    0.836547727f,  0.547894059f,
+    0.837387202f,  0.546610167f,
+    0.838224706f,  0.545324988f,
+    0.839060237f,  0.544038527f,
+    0.839893794f,  0.542750785f,
+    0.840725375f,  0.541461766f,
+    0.841554977f,  0.540171473f,
+    0.842382600f,  0.538879909f,
+    0.843208240f,  0.537587076f,
+    0.844031895f,  0.536292979f,
+    0.844853565f,  0.534997620f,
+    0.845673247f,  0.533701002f,
+    0.846490939f,  0.532403128f,
+    0.847306639f,  0.531104001f,
+    0.848120345f,  0.529803625f,
+    0.848932055f,  0.528502002f,
+    0.849741768f,  0.527199135f,
+    0.850549481f,  0.525895027f,
+    0.851355193f,  0.524589683f,
+    0.852158902f,  0.523283103f,
+    0.852960605f,  0.521975293f,
+    0.853760301f,  0.520666254f,
+    0.854557988f,  0.519355990f,
+    0.855353665f,  0.518044504f,
+    0.856147328f,  0.516731799f,
+    0.856938977f,  0.515417878f,
+    0.857728610f,  0.514102744f,
+    0.858516224f,  0.512786401f,
+    0.859301818f,  0.511468850f,
+    0.860085390f,  0.510150097f,
+    0.860866939f,  0.508830143f,
+    0.861646461f,  0.507508991f,
+    0.862423956f,  0.506186645f,
+    0.863199422f,  0.504863109f,
+    0.863972856f,  0.503538384f,
+    0.864744258f,  0.502212474f,
+    0.865513624f,  0.500885383f,
+    0.866280954f,  0.499557113f,
+    0.867046246f,  0.498227667f,
+    0.867809497f,  0.496897049f,
+    0.868570706f,  0.495565262f,
+    0.869329871f,  0.494232309f,
+    0.870086991f,  0.492898192f,
+    0.870842063f,  0.491562916f,
+    0.871595087f,  0.490226483f,
+    0.872346059f,  0.488888897f,
+    0.873094978f,  0.487550160f,
+    0.873841843f,  0.486210276f,
+    0.874586652f,  0.484869248f,
+    0.875329403f,  0.483527079f,
+    0.876070094f,  0.482183772f,
+    0.876808724f,  0.480839331f,
+    0.877545290f,  0.479493758f,
+    0.878279792f,  0.478147056f,
+    0.879012226f,  0.476799230f,
+    0.879742593f,  0.475450282f,
+    0.880470889f,  0.474100215f,
+    0.881197113f,  0.472749032f,
+    0.881921264f,  0.471396737f,
+    0.882643340f,  0.470043332f,
+    0.883363339f,  0.468688822f,
+    0.884081259f,  0.467333209f,
+    0.884797098f,  0.465976496f,
+    0.885510856f,  0.464618686f,
+    0.886222530f,  0.463259784f,
+    0.886932119f,  0.461899791f,
+    0.887639620f,  0.460538711f,
+    0.888345033f,  0.459176548f,
+    0.889048356f,  0.457813304f,
+    0.889749586f,  0.456448982f,
+    0.890448723f,  0.455083587f,
+    0.891145765f,  0.453717121f,
+    0.891840709f,  0.452349587f,
+    0.892533555f,  0.450980989f,
+    0.893224301f,  0.449611330f,
+    0.893912945f,  0.448240612f,
+    0.894599486f,  0.446868840f,
+    0.895283921f,  0.445496017f,
+    0.895966250f,  0.444122145f,
+    0.896646470f,  0.442747228f,
+    0.897324581f,  0.441371269f,
+    0.898000580f,  0.439994271f,
+    0.898674466f,  0.438616239f,
+    0.899346237f,  0.437237174f,
+    0.900015892f,  0.435857080f,
+    0.900683429f,  0.434475961f,
+    0.901348847f,  0.433093819f,
+    0.902012144f,  0.431710658f,
+    0.902673318f,  0.430326481f,
+    0.903332368f,  0.428941292f,
+    0.903989293f,  0.427555093f,
+    0.904644091f,  0.426167889f,
+    0.905296759f,  0.424779681f,
+    0.905947298f,  0.423390474f,
+    0.906595705f,  0.422000271f,
+    0.907241978f,  0.420609074f,
+    0.907886116f,  0.419216888f,
+    0.908528119f,  0.417823716f,
+    0.909167983f,  0.416429560f,
+    0.909805708f,  0.415034424f,
+    0.910441292f,  0.413638312f,
+    0.911074734f,  0.412241227f,
+    0.911706032f,  0.410843171f,
+    0.912335185f,  0.409444149f,
+    0.912962190f,  0.408044163f,
+    0.913587048f,  0.406643217f,
+    0.914209756f,  0.405241314f,
+    0.914830312f,  0.403838458f,
+    0.915448716f,  0.402434651f,
+    0.916064966f,  0.401029897f,
+    0.916679060f,  0.399624200f,
+    0.917290997f,  0.398217562f,
+    0.917900776f,  0.396809987f,
+    0.918508394f,  0.395401479f,
+    0.919113852f,  0.393992040f,
+    0.919717146f,  0.392581674f,
+    0.920318277f,  0.391170384f,
+    0.920917242f,  0.389758174f,
+    0.921514039f,  0.388345047f,
+    0.922108669f,  0.386931006f,
+    0.922701128f,  0.385516054f,
+    0.923291417f,  0.384100195f,
+    0.923879533f,  0.382683432f,
+    0.924465474f,  0.381265769f,
+    0.925049241f,  0.379847209f,
+    0.925630831f,  0.378427755f,
+    0.926210242f,  0.377007410f,
+    0.926787474f,  0.375586178f,
+    0.927362526f,  0.374164063f,
+    0.927935395f,  0.372741067f,
+    0.928506080f,  0.371317194f,
+    0.929074581f,  0.369892447f,
+    0.929640896f,  0.368466830f,
+    0.930205023f,  0.367040346f,
+    0.930766961f,  0.365612998f,
+    0.931326709f,  0.364184790f,
+    0.931884266f,  0.362755724f,
+    0.932439629f,  0.361325806f,
+    0.932992799f,  0.359895037f,
+    0.933543773f,  0.358463421f,
+    0.934092550f,  0.357030961f,
+    0.934639130f,  0.355597662f,
+    0.935183510f,  0.354163525f,
+    0.935725689f,  0.352728556f,
+    0.936265667f,  0.351292756f,
+    0.936803442f,  0.349856130f,
+    0.937339012f,  0.348418680f,
+    0.937872376f,  0.346980411f,
+    0.938403534f,  0.345541325f,
+    0.938932484f,  0.344101426f,
+    0.939459224f,  0.342660717f,
+    0.939983753f,  0.341219202f,
+    0.940506071f,  0.339776884f,
+    0.941026175f,  0.338333767f,
+    0.941544065f,  0.336889853f,
+    0.942059740f,  0.335445147f,
+    0.942573198f,  0.333999651f,
+    0.943084437f,  0.332553370f,
+    0.943593458f,  0.331106306f,
+    0.944100258f,  0.329658463f,
+    0.944604837f,  0.328209844f,
+    0.945107193f,  0.326760452f,
+    0.945607325f,  0.325310292f,
+    0.946105232f,  0.323859367f,
+    0.946600913f,  0.322407679f,
+    0.947094366f,  0.320955232f,
+    0.947585591f,  0.319502031f,
+    0.948074586f,  0.318048077f,
+    0.948561350f,  0.316593376f,
+    0.949045882f,  0.315137929f,
+    0.949528181f,  0.313681740f,
+    0.950008245f,  0.312224814f,
+    0.950486074f,  0.310767153f,
+    0.950961666f,  0.309308760f,
+    0.951435021f,  0.307849640f,
+    0.951906137f,  0.306389795f,
+    0.952375013f,  0.304929230f,
+    0.952841648f,  0.303467947f,
+    0.953306040f,  0.302005949f,
+    0.953768190f,  0.300543241f,
+    0.954228095f,  0.299079826f,
+    0.954685755f,  0.297615707f,
+    0.955141168f,  0.296150888f,
+    0.955594334f,  0.294685372f,
+    0.956045251f,  0.293219163f,
+    0.956493919f,  0.291752263f,
+    0.956940336f,  0.290284677f,
+    0.957384501f,  0.288816408f,
+    0.957826413f,  0.287347460f,
+    0.958266071f,  0.285877835f,
+    0.958703475f,  0.284407537f,
+    0.959138622f,  0.282936570f,
+    0.959571513f,  0.281464938f,
+    0.960002146f,  0.279992643f,
+    0.960430519f,  0.278519689f,
+    0.960856633f,  0.277046080f,
+    0.961280486f,  0.275571819f,
+    0.961702077f,  0.274096910f,
+    0.962121404f,  0.272621355f,
+    0.962538468f,  0.271145160f,
+    0.962953267f,  0.269668326f,
+    0.963365800f,  0.268190857f,
+    0.963776066f,  0.266712757f,
+    0.964184064f,  0.265234030f,
+    0.964589793f,  0.263754679f,
+    0.964993253f,  0.262274707f,
+    0.965394442f,  0.260794118f,
+    0.965793359f,  0.259312915f,
+    0.966190003f,  0.257831102f,
+    0.966584374f,  0.256348682f,
+    0.966976471f,  0.254865660f,
+    0.967366292f,  0.253382037f,
+    0.967753837f,  0.251897818f,
+    0.968139105f,  0.250413007f,
+    0.968522094f,  0.248927606f,
+    0.968902805f,  0.247441619f,
+    0.969281235f,  0.245955050f,
+    0.969657385f,  0.244467903f,
+    0.970031253f,  0.242980180f,
+    0.970402839f,  0.241491885f,
+    0.970772141f,  0.240003022f,
+    0.971139158f,  0.238513595f,
+    0.971503891f,  0.237023606f,
+    0.971866337f,  0.235533059f,
+    0.972226497f,  0.234041959f,
+    0.972584369f,  0.232550307f,
+    0.972939952f,  0.231058108f,
+    0.973293246f,  0.229565366f,
+    0.973644250f,  0.228072083f,
+    0.973992962f,  0.226578264f,
+    0.974339383f,  0.225083911f,
+    0.974683511f,  0.223589029f,
+    0.975025345f,  0.222093621f,
+    0.975364885f,  0.220597690f,
+    0.975702130f,  0.219101240f,
+    0.976037079f,  0.217604275f,
+    0.976369731f,  0.216106797f,
+    0.976700086f,  0.214608811f,
+    0.977028143f,  0.213110320f,
+    0.977353900f,  0.211611327f,
+    0.977677358f,  0.210111837f,
+    0.977998515f,  0.208611852f,
+    0.978317371f,  0.207111376f,
+    0.978633924f,  0.205610413f,
+    0.978948175f,  0.204108966f,
+    0.979260123f,  0.202607039f,
+    0.979569766f,  0.201104635f,
+    0.979877104f,  0.199601758f,
+    0.980182136f,  0.198098411f,
+    0.980484862f,  0.196594598f,
+    0.980785280f,  0.195090322f,
+    0.981083391f,  0.193585587f,
+    0.981379193f,  0.192080397f,
+    0.981672686f,  0.190574755f,
+    0.981963869f,  0.189068664f,
+    0.982252741f,  0.187562129f,
+    0.982539302f,  0.186055152f,
+    0.982823551f,  0.184547737f,
+    0.983105487f,  0.183039888f,
+    0.983385110f,  0.181531608f,
+    0.983662419f,  0.180022901f,
+    0.983937413f,  0.178513771f,
+    0.984210092f,  0.177004220f,
+    0.984480455f,  0.175494253f,
+    0.984748502f,  0.173983873f,
+    0.985014231f,  0.172473084f,
+    0.985277642f,  0.170961889f,
+    0.985538735f,  0.169450291f,
+    0.985797509f,  0.167938295f,
+    0.986053963f,  0.166425904f,
+    0.986308097f,  0.164913120f,
+    0.986559910f,  0.163399949f,
+    0.986809402f,  0.161886394f,
+    0.987056571f,  0.160372457f,
+    0.987301418f,  0.158858143f,
+    0.987543942f,  0.157343456f,
+    0.987784142f,  0.155828398f,
+    0.988022017f,  0.154312973f,
+    0.988257568f,  0.152797185f,
+    0.988490793f,  0.151281038f,
+    0.988721692f,  0.149764535f,
+    0.988950265f,  0.148247679f,
+    0.989176510f,  0.146730474f,
+    0.989400428f,  0.145212925f,
+    0.989622017f,  0.143695033f,
+    0.989841278f,  0.142176804f,
+    0.990058210f,  0.140658239f,
+    0.990272812f,  0.139139344f,
+    0.990485084f,  0.137620122f,
+    0.990695025f,  0.136100575f,
+    0.990902635f,  0.134580709f,
+    0.991107914f,  0.133060525f,
+    0.991310860f,  0.131540029f,
+    0.991511473f,  0.130019223f,
+    0.991709754f,  0.128498111f,
+    0.991905700f,  0.126976696f,
+    0.992099313f,  0.125454983f,
+    0.992290591f,  0.123932975f,
+    0.992479535f,  0.122410675f,
+    0.992666142f,  0.120888087f,
+    0.992850414f,  0.119365215f,
+    0.993032350f,  0.117842062f,
+    0.993211949f,  0.116318631f,
+    0.993389211f,  0.114794927f,
+    0.993564136f,  0.113270952f,
+    0.993736722f,  0.111746711f,
+    0.993906970f,  0.110222207f,
+    0.994074879f,  0.108697444f,
+    0.994240449f,  0.107172425f,
+    0.994403680f,  0.105647154f,
+    0.994564571f,  0.104121634f,
+    0.994723121f,  0.102595869f,
+    0.994879331f,  0.101069863f,
+    0.995033199f,  0.099543619f,
+    0.995184727f,  0.098017140f,
+    0.995333912f,  0.096490431f,
+    0.995480755f,  0.094963495f,
+    0.995625256f,  0.093436336f,
+    0.995767414f,  0.091908956f,
+    0.995907229f,  0.090381361f,
+    0.996044701f,  0.088853553f,
+    0.996179829f,  0.087325535f,
+    0.996312612f,  0.085797312f,
+    0.996443051f,  0.084268888f,
+    0.996571146f,  0.082740265f,
+    0.996696895f,  0.081211447f,
+    0.996820299f,  0.079682438f,
+    0.996941358f,  0.078153242f,
+    0.997060070f,  0.076623861f,
+    0.997176437f,  0.075094301f,
+    0.997290457f,  0.073564564f,
+    0.997402130f,  0.072034653f,
+    0.997511456f,  0.070504573f,
+    0.997618435f,  0.068974328f,
+    0.997723067f,  0.067443920f,
+    0.997825350f,  0.065913353f,
+    0.997925286f,  0.064382631f,
+    0.998022874f,  0.062851758f,
+    0.998118113f,  0.061320736f,
+    0.998211003f,  0.059789571f,
+    0.998301545f,  0.058258265f,
+    0.998389737f,  0.056726821f,
+    0.998475581f,  0.055195244f,
+    0.998559074f,  0.053663538f,
+    0.998640218f,  0.052131705f,
+    0.998719012f,  0.050599749f,
+    0.998795456f,  0.049067674f,
+    0.998869550f,  0.047535484f,
+    0.998941293f,  0.046003182f,
+    0.999010686f,  0.044470772f,
+    0.999077728f,  0.042938257f,
+    0.999142419f,  0.041405641f,
+    0.999204759f,  0.039872928f,
+    0.999264747f,  0.038340120f,
+    0.999322385f,  0.036807223f,
+    0.999377670f,  0.035274239f,
+    0.999430605f,  0.033741172f,
+    0.999481187f,  0.032208025f,
+    0.999529418f,  0.030674803f,
+    0.999575296f,  0.029141509f,
+    0.999618822f,  0.027608146f,
+    0.999659997f,  0.026074718f,
+    0.999698819f,  0.024541229f,
+    0.999735288f,  0.023007681f,
+    0.999769405f,  0.021474080f,
+    0.999801170f,  0.019940429f,
+    0.999830582f,  0.018406730f,
+    0.999857641f,  0.016872988f,
+    0.999882347f,  0.015339206f,
+    0.999904701f,  0.013805389f,
+    0.999924702f,  0.012271538f,
+    0.999942350f,  0.010737659f,
+    0.999957645f,  0.009203755f,
+    0.999970586f,  0.007669829f,
+    0.999981175f,  0.006135885f,
+    0.999989411f,  0.004601926f,
+    0.999995294f,  0.003067957f,
+    0.999998823f,  0.001533980f,
+    1.000000000f,  0.000000000f,
+    0.999998823f, -0.001533980f,
+    0.999995294f, -0.003067957f,
+    0.999989411f, -0.004601926f,
+    0.999981175f, -0.006135885f,
+    0.999970586f, -0.007669829f,
+    0.999957645f, -0.009203755f,
+    0.999942350f, -0.010737659f,
+    0.999924702f, -0.012271538f,
+    0.999904701f, -0.013805389f,
+    0.999882347f, -0.015339206f,
+    0.999857641f, -0.016872988f,
+    0.999830582f, -0.018406730f,
+    0.999801170f, -0.019940429f,
+    0.999769405f, -0.021474080f,
+    0.999735288f, -0.023007681f,
+    0.999698819f, -0.024541229f,
+    0.999659997f, -0.026074718f,
+    0.999618822f, -0.027608146f,
+    0.999575296f, -0.029141509f,
+    0.999529418f, -0.030674803f,
+    0.999481187f, -0.032208025f,
+    0.999430605f, -0.033741172f,
+    0.999377670f, -0.035274239f,
+    0.999322385f, -0.036807223f,
+    0.999264747f, -0.038340120f,
+    0.999204759f, -0.039872928f,
+    0.999142419f, -0.041405641f,
+    0.999077728f, -0.042938257f,
+    0.999010686f, -0.044470772f,
+    0.998941293f, -0.046003182f,
+    0.998869550f, -0.047535484f,
+    0.998795456f, -0.049067674f,
+    0.998719012f, -0.050599749f,
+    0.998640218f, -0.052131705f,
+    0.998559074f, -0.053663538f,
+    0.998475581f, -0.055195244f,
+    0.998389737f, -0.056726821f,
+    0.998301545f, -0.058258265f,
+    0.998211003f, -0.059789571f,
+    0.998118113f, -0.061320736f,
+    0.998022874f, -0.062851758f,
+    0.997925286f, -0.064382631f,
+    0.997825350f, -0.065913353f,
+    0.997723067f, -0.067443920f,
+    0.997618435f, -0.068974328f,
+    0.997511456f, -0.070504573f,
+    0.997402130f, -0.072034653f,
+    0.997290457f, -0.073564564f,
+    0.997176437f, -0.075094301f,
+    0.997060070f, -0.076623861f,
+    0.996941358f, -0.078153242f,
+    0.996820299f, -0.079682438f,
+    0.996696895f, -0.081211447f,
+    0.996571146f, -0.082740265f,
+    0.996443051f, -0.084268888f,
+    0.996312612f, -0.085797312f,
+    0.996179829f, -0.087325535f,
+    0.996044701f, -0.088853553f,
+    0.995907229f, -0.090381361f,
+    0.995767414f, -0.091908956f,
+    0.995625256f, -0.093436336f,
+    0.995480755f, -0.094963495f,
+    0.995333912f, -0.096490431f,
+    0.995184727f, -0.098017140f,
+    0.995033199f, -0.099543619f,
+    0.994879331f, -0.101069863f,
+    0.994723121f, -0.102595869f,
+    0.994564571f, -0.104121634f,
+    0.994403680f, -0.105647154f,
+    0.994240449f, -0.107172425f,
+    0.994074879f, -0.108697444f,
+    0.993906970f, -0.110222207f,
+    0.993736722f, -0.111746711f,
+    0.993564136f, -0.113270952f,
+    0.993389211f, -0.114794927f,
+    0.993211949f, -0.116318631f,
+    0.993032350f, -0.117842062f,
+    0.992850414f, -0.119365215f,
+    0.992666142f, -0.120888087f,
+    0.992479535f, -0.122410675f,
+    0.992290591f, -0.123932975f,
+    0.992099313f, -0.125454983f,
+    0.991905700f, -0.126976696f,
+    0.991709754f, -0.128498111f,
+    0.991511473f, -0.130019223f,
+    0.991310860f, -0.131540029f,
+    0.991107914f, -0.133060525f,
+    0.990902635f, -0.134580709f,
+    0.990695025f, -0.136100575f,
+    0.990485084f, -0.137620122f,
+    0.990272812f, -0.139139344f,
+    0.990058210f, -0.140658239f,
+    0.989841278f, -0.142176804f,
+    0.989622017f, -0.143695033f,
+    0.989400428f, -0.145212925f,
+    0.989176510f, -0.146730474f,
+    0.988950265f, -0.148247679f,
+    0.988721692f, -0.149764535f,
+    0.988490793f, -0.151281038f,
+    0.988257568f, -0.152797185f,
+    0.988022017f, -0.154312973f,
+    0.987784142f, -0.155828398f,
+    0.987543942f, -0.157343456f,
+    0.987301418f, -0.158858143f,
+    0.987056571f, -0.160372457f,
+    0.986809402f, -0.161886394f,
+    0.986559910f, -0.163399949f,
+    0.986308097f, -0.164913120f,
+    0.986053963f, -0.166425904f,
+    0.985797509f, -0.167938295f,
+    0.985538735f, -0.169450291f,
+    0.985277642f, -0.170961889f,
+    0.985014231f, -0.172473084f,
+    0.984748502f, -0.173983873f,
+    0.984480455f, -0.175494253f,
+    0.984210092f, -0.177004220f,
+    0.983937413f, -0.178513771f,
+    0.983662419f, -0.180022901f,
+    0.983385110f, -0.181531608f,
+    0.983105487f, -0.183039888f,
+    0.982823551f, -0.184547737f,
+    0.982539302f, -0.186055152f,
+    0.982252741f, -0.187562129f,
+    0.981963869f, -0.189068664f,
+    0.981672686f, -0.190574755f,
+    0.981379193f, -0.192080397f,
+    0.981083391f, -0.193585587f,
+    0.980785280f, -0.195090322f,
+    0.980484862f, -0.196594598f,
+    0.980182136f, -0.198098411f,
+    0.979877104f, -0.199601758f,
+    0.979569766f, -0.201104635f,
+    0.979260123f, -0.202607039f,
+    0.978948175f, -0.204108966f,
+    0.978633924f, -0.205610413f,
+    0.978317371f, -0.207111376f,
+    0.977998515f, -0.208611852f,
+    0.977677358f, -0.210111837f,
+    0.977353900f, -0.211611327f,
+    0.977028143f, -0.213110320f,
+    0.976700086f, -0.214608811f,
+    0.976369731f, -0.216106797f,
+    0.976037079f, -0.217604275f,
+    0.975702130f, -0.219101240f,
+    0.975364885f, -0.220597690f,
+    0.975025345f, -0.222093621f,
+    0.974683511f, -0.223589029f,
+    0.974339383f, -0.225083911f,
+    0.973992962f, -0.226578264f,
+    0.973644250f, -0.228072083f,
+    0.973293246f, -0.229565366f,
+    0.972939952f, -0.231058108f,
+    0.972584369f, -0.232550307f,
+    0.972226497f, -0.234041959f,
+    0.971866337f, -0.235533059f,
+    0.971503891f, -0.237023606f,
+    0.971139158f, -0.238513595f,
+    0.970772141f, -0.240003022f,
+    0.970402839f, -0.241491885f,
+    0.970031253f, -0.242980180f,
+    0.969657385f, -0.244467903f,
+    0.969281235f, -0.245955050f,
+    0.968902805f, -0.247441619f,
+    0.968522094f, -0.248927606f,
+    0.968139105f, -0.250413007f,
+    0.967753837f, -0.251897818f,
+    0.967366292f, -0.253382037f,
+    0.966976471f, -0.254865660f,
+    0.966584374f, -0.256348682f,
+    0.966190003f, -0.257831102f,
+    0.965793359f, -0.259312915f,
+    0.965394442f, -0.260794118f,
+    0.964993253f, -0.262274707f,
+    0.964589793f, -0.263754679f,
+    0.964184064f, -0.265234030f,
+    0.963776066f, -0.266712757f,
+    0.963365800f, -0.268190857f,
+    0.962953267f, -0.269668326f,
+    0.962538468f, -0.271145160f,
+    0.962121404f, -0.272621355f,
+    0.961702077f, -0.274096910f,
+    0.961280486f, -0.275571819f,
+    0.960856633f, -0.277046080f,
+    0.960430519f, -0.278519689f,
+    0.960002146f, -0.279992643f,
+    0.959571513f, -0.281464938f,
+    0.959138622f, -0.282936570f,
+    0.958703475f, -0.284407537f,
+    0.958266071f, -0.285877835f,
+    0.957826413f, -0.287347460f,
+    0.957384501f, -0.288816408f,
+    0.956940336f, -0.290284677f,
+    0.956493919f, -0.291752263f,
+    0.956045251f, -0.293219163f,
+    0.955594334f, -0.294685372f,
+    0.955141168f, -0.296150888f,
+    0.954685755f, -0.297615707f,
+    0.954228095f, -0.299079826f,
+    0.953768190f, -0.300543241f,
+    0.953306040f, -0.302005949f,
+    0.952841648f, -0.303467947f,
+    0.952375013f, -0.304929230f,
+    0.951906137f, -0.306389795f,
+    0.951435021f, -0.307849640f,
+    0.950961666f, -0.309308760f,
+    0.950486074f, -0.310767153f,
+    0.950008245f, -0.312224814f,
+    0.949528181f, -0.313681740f,
+    0.949045882f, -0.315137929f,
+    0.948561350f, -0.316593376f,
+    0.948074586f, -0.318048077f,
+    0.947585591f, -0.319502031f,
+    0.947094366f, -0.320955232f,
+    0.946600913f, -0.322407679f,
+    0.946105232f, -0.323859367f,
+    0.945607325f, -0.325310292f,
+    0.945107193f, -0.326760452f,
+    0.944604837f, -0.328209844f,
+    0.944100258f, -0.329658463f,
+    0.943593458f, -0.331106306f,
+    0.943084437f, -0.332553370f,
+    0.942573198f, -0.333999651f,
+    0.942059740f, -0.335445147f,
+    0.941544065f, -0.336889853f,
+    0.941026175f, -0.338333767f,
+    0.940506071f, -0.339776884f,
+    0.939983753f, -0.341219202f,
+    0.939459224f, -0.342660717f,
+    0.938932484f, -0.344101426f,
+    0.938403534f, -0.345541325f,
+    0.937872376f, -0.346980411f,
+    0.937339012f, -0.348418680f,
+    0.936803442f, -0.349856130f,
+    0.936265667f, -0.351292756f,
+    0.935725689f, -0.352728556f,
+    0.935183510f, -0.354163525f,
+    0.934639130f, -0.355597662f,
+    0.934092550f, -0.357030961f,
+    0.933543773f, -0.358463421f,
+    0.932992799f, -0.359895037f,
+    0.932439629f, -0.361325806f,
+    0.931884266f, -0.362755724f,
+    0.931326709f, -0.364184790f,
+    0.930766961f, -0.365612998f,
+    0.930205023f, -0.367040346f,
+    0.929640896f, -0.368466830f,
+    0.929074581f, -0.369892447f,
+    0.928506080f, -0.371317194f,
+    0.927935395f, -0.372741067f,
+    0.927362526f, -0.374164063f,
+    0.926787474f, -0.375586178f,
+    0.926210242f, -0.377007410f,
+    0.925630831f, -0.378427755f,
+    0.925049241f, -0.379847209f,
+    0.924465474f, -0.381265769f,
+    0.923879533f, -0.382683432f,
+    0.923291417f, -0.384100195f,
+    0.922701128f, -0.385516054f,
+    0.922108669f, -0.386931006f,
+    0.921514039f, -0.388345047f,
+    0.920917242f, -0.389758174f,
+    0.920318277f, -0.391170384f,
+    0.919717146f, -0.392581674f,
+    0.919113852f, -0.393992040f,
+    0.918508394f, -0.395401479f,
+    0.917900776f, -0.396809987f,
+    0.917290997f, -0.398217562f,
+    0.916679060f, -0.399624200f,
+    0.916064966f, -0.401029897f,
+    0.915448716f, -0.402434651f,
+    0.914830312f, -0.403838458f,
+    0.914209756f, -0.405241314f,
+    0.913587048f, -0.406643217f,
+    0.912962190f, -0.408044163f,
+    0.912335185f, -0.409444149f,
+    0.911706032f, -0.410843171f,
+    0.911074734f, -0.412241227f,
+    0.910441292f, -0.413638312f,
+    0.909805708f, -0.415034424f,
+    0.909167983f, -0.416429560f,
+    0.908528119f, -0.417823716f,
+    0.907886116f, -0.419216888f,
+    0.907241978f, -0.420609074f,
+    0.906595705f, -0.422000271f,
+    0.905947298f, -0.423390474f,
+    0.905296759f, -0.424779681f,
+    0.904644091f, -0.426167889f,
+    0.903989293f, -0.427555093f,
+    0.903332368f, -0.428941292f,
+    0.902673318f, -0.430326481f,
+    0.902012144f, -0.431710658f,
+    0.901348847f, -0.433093819f,
+    0.900683429f, -0.434475961f,
+    0.900015892f, -0.435857080f,
+    0.899346237f, -0.437237174f,
+    0.898674466f, -0.438616239f,
+    0.898000580f, -0.439994271f,
+    0.897324581f, -0.441371269f,
+    0.896646470f, -0.442747228f,
+    0.895966250f, -0.444122145f,
+    0.895283921f, -0.445496017f,
+    0.894599486f, -0.446868840f,
+    0.893912945f, -0.448240612f,
+    0.893224301f, -0.449611330f,
+    0.892533555f, -0.450980989f,
+    0.891840709f, -0.452349587f,
+    0.891145765f, -0.453717121f,
+    0.890448723f, -0.455083587f,
+    0.889749586f, -0.456448982f,
+    0.889048356f, -0.457813304f,
+    0.888345033f, -0.459176548f,
+    0.887639620f, -0.460538711f,
+    0.886932119f, -0.461899791f,
+    0.886222530f, -0.463259784f,
+    0.885510856f, -0.464618686f,
+    0.884797098f, -0.465976496f,
+    0.884081259f, -0.467333209f,
+    0.883363339f, -0.468688822f,
+    0.882643340f, -0.470043332f,
+    0.881921264f, -0.471396737f,
+    0.881197113f, -0.472749032f,
+    0.880470889f, -0.474100215f,
+    0.879742593f, -0.475450282f,
+    0.879012226f, -0.476799230f,
+    0.878279792f, -0.478147056f,
+    0.877545290f, -0.479493758f,
+    0.876808724f, -0.480839331f,
+    0.876070094f, -0.482183772f,
+    0.875329403f, -0.483527079f,
+    0.874586652f, -0.484869248f,
+    0.873841843f, -0.486210276f,
+    0.873094978f, -0.487550160f,
+    0.872346059f, -0.488888897f,
+    0.871595087f, -0.490226483f,
+    0.870842063f, -0.491562916f,
+    0.870086991f, -0.492898192f,
+    0.869329871f, -0.494232309f,
+    0.868570706f, -0.495565262f,
+    0.867809497f, -0.496897049f,
+    0.867046246f, -0.498227667f,
+    0.866280954f, -0.499557113f,
+    0.865513624f, -0.500885383f,
+    0.864744258f, -0.502212474f,
+    0.863972856f, -0.503538384f,
+    0.863199422f, -0.504863109f,
+    0.862423956f, -0.506186645f,
+    0.861646461f, -0.507508991f,
+    0.860866939f, -0.508830143f,
+    0.860085390f, -0.510150097f,
+    0.859301818f, -0.511468850f,
+    0.858516224f, -0.512786401f,
+    0.857728610f, -0.514102744f,
+    0.856938977f, -0.515417878f,
+    0.856147328f, -0.516731799f,
+    0.855353665f, -0.518044504f,
+    0.854557988f, -0.519355990f,
+    0.853760301f, -0.520666254f,
+    0.852960605f, -0.521975293f,
+    0.852158902f, -0.523283103f,
+    0.851355193f, -0.524589683f,
+    0.850549481f, -0.525895027f,
+    0.849741768f, -0.527199135f,
+    0.848932055f, -0.528502002f,
+    0.848120345f, -0.529803625f,
+    0.847306639f, -0.531104001f,
+    0.846490939f, -0.532403128f,
+    0.845673247f, -0.533701002f,
+    0.844853565f, -0.534997620f,
+    0.844031895f, -0.536292979f,
+    0.843208240f, -0.537587076f,
+    0.842382600f, -0.538879909f,
+    0.841554977f, -0.540171473f,
+    0.840725375f, -0.541461766f,
+    0.839893794f, -0.542750785f,
+    0.839060237f, -0.544038527f,
+    0.838224706f, -0.545324988f,
+    0.837387202f, -0.546610167f,
+    0.836547727f, -0.547894059f,
+    0.835706284f, -0.549176662f,
+    0.834862875f, -0.550457973f,
+    0.834017501f, -0.551737988f,
+    0.833170165f, -0.553016706f,
+    0.832320868f, -0.554294121f,
+    0.831469612f, -0.555570233f,
+    0.830616400f, -0.556845037f,
+    0.829761234f, -0.558118531f,
+    0.828904115f, -0.559390712f,
+    0.828045045f, -0.560661576f,
+    0.827184027f, -0.561931121f,
+    0.826321063f, -0.563199344f,
+    0.825456154f, -0.564466242f,
+    0.824589303f, -0.565731811f,
+    0.823720511f, -0.566996049f,
+    0.822849781f, -0.568258953f,
+    0.821977115f, -0.569520519f,
+    0.821102515f, -0.570780746f,
+    0.820225983f, -0.572039629f,
+    0.819347520f, -0.573297167f,
+    0.818467130f, -0.574553355f,
+    0.817584813f, -0.575808191f,
+    0.816700573f, -0.577061673f,
+    0.815814411f, -0.578313796f,
+    0.814926329f, -0.579564559f,
+    0.814036330f, -0.580813958f,
+    0.813144415f, -0.582061990f,
+    0.812250587f, -0.583308653f,
+    0.811354847f, -0.584553943f,
+    0.810457198f, -0.585797857f,
+    0.809557642f, -0.587040394f,
+    0.808656182f, -0.588281548f,
+    0.807752818f, -0.589521319f,
+    0.806847554f, -0.590759702f,
+    0.805940391f, -0.591996695f,
+    0.805031331f, -0.593232295f,
+    0.804120377f, -0.594466499f,
+    0.803207531f, -0.595699304f,
+    0.802292796f, -0.596930708f,
+    0.801376172f, -0.598160707f,
+    0.800457662f, -0.599389298f,
+    0.799537269f, -0.600616479f,
+    0.798614995f, -0.601842247f,
+    0.797690841f, -0.603066599f,
+    0.796764810f, -0.604289531f,
+    0.795836905f, -0.605511041f,
+    0.794907126f, -0.606731127f,
+    0.793975478f, -0.607949785f,
+    0.793041960f, -0.609167012f,
+    0.792106577f, -0.610382806f,
+    0.791169330f, -0.611597164f,
+    0.790230221f, -0.612810082f,
+    0.789289253f, -0.614021559f,
+    0.788346428f, -0.615231591f,
+    0.787401747f, -0.616440175f,
+    0.786455214f, -0.617647308f,
+    0.785506830f, -0.618852988f,
+    0.784556597f, -0.620057212f,
+    0.783604519f, -0.621259977f,
+    0.782650596f, -0.622461279f,
+    0.781694832f, -0.623661118f,
+    0.780737229f, -0.624859488f,
+    0.779777788f, -0.626056388f,
+    0.778816512f, -0.627251815f,
+    0.777853404f, -0.628445767f,
+    0.776888466f, -0.629638239f,
+    0.775921699f, -0.630829230f,
+    0.774953107f, -0.632018736f,
+    0.773982691f, -0.633206755f,
+    0.773010453f, -0.634393284f,
+    0.772036397f, -0.635578320f,
+    0.771060524f, -0.636761861f,
+    0.770082837f, -0.637943904f,
+    0.769103338f, -0.639124445f,
+    0.768122029f, -0.640303482f,
+    0.767138912f, -0.641481013f,
+    0.766153990f, -0.642657034f,
+    0.765167266f, -0.643831543f,
+    0.764178741f, -0.645004537f,
+    0.763188417f, -0.646176013f,
+    0.762196298f, -0.647345969f,
+    0.761202385f, -0.648514401f,
+    0.760206682f, -0.649681307f,
+    0.759209189f, -0.650846685f,
+    0.758209910f, -0.652010531f,
+    0.757208847f, -0.653172843f,
+    0.756206001f, -0.654333618f,
+    0.755201377f, -0.655492853f,
+    0.754194975f, -0.656650546f,
+    0.753186799f, -0.657806693f,
+    0.752176850f, -0.658961293f,
+    0.751165132f, -0.660114342f,
+    0.750151646f, -0.661265838f,
+    0.749136395f, -0.662415778f,
+    0.748119380f, -0.663564159f,
+    0.747100606f, -0.664710978f,
+    0.746080074f, -0.665856234f,
+    0.745057785f, -0.666999922f,
+    0.744033744f, -0.668142041f,
+    0.743007952f, -0.669282588f,
+    0.741980412f, -0.670421560f,
+    0.740951125f, -0.671558955f,
+    0.739920095f, -0.672694769f,
+    0.738887324f, -0.673829000f,
+    0.737852815f, -0.674961646f,
+    0.736816569f, -0.676092704f,
+    0.735778589f, -0.677222170f,
+    0.734738878f, -0.678350043f,
+    0.733697438f, -0.679476320f,
+    0.732654272f, -0.680600998f,
+    0.731609381f, -0.681724074f,
+    0.730562769f, -0.682845546f,
+    0.729514438f, -0.683965412f,
+    0.728464390f, -0.685083668f,
+    0.727412629f, -0.686200312f,
+    0.726359155f, -0.687315341f,
+    0.725303972f, -0.688428753f,
+    0.724247083f, -0.689540545f,
+    0.723188489f, -0.690650714f,
+    0.722128194f, -0.691759258f,
+    0.721066199f, -0.692866175f,
+    0.720002508f, -0.693971461f,
+    0.718937122f, -0.695075114f,
+    0.717870045f, -0.696177131f,
+    0.716801279f, -0.697277511f,
+    0.715730825f, -0.698376249f,
+    0.714658688f, -0.699473345f,
+    0.713584869f, -0.700568794f,
+    0.712509371f, -0.701662595f,
+    0.711432196f, -0.702754744f,
+    0.710353347f, -0.703845241f,
+    0.709272826f, -0.704934080f,
+    0.708190637f, -0.706021261f,
+    0.707106781f, -0.707106781f,
+    0.706021261f, -0.708190637f,
+    0.704934080f, -0.709272826f,
+    0.703845241f, -0.710353347f,
+    0.702754744f, -0.711432196f,
+    0.701662595f, -0.712509371f,
+    0.700568794f, -0.713584869f,
+    0.699473345f, -0.714658688f,
+    0.698376249f, -0.715730825f,
+    0.697277511f, -0.716801279f,
+    0.696177131f, -0.717870045f,
+    0.695075114f, -0.718937122f,
+    0.693971461f, -0.720002508f,
+    0.692866175f, -0.721066199f,
+    0.691759258f, -0.722128194f,
+    0.690650714f, -0.723188489f,
+    0.689540545f, -0.724247083f,
+    0.688428753f, -0.725303972f,
+    0.687315341f, -0.726359155f,
+    0.686200312f, -0.727412629f,
+    0.685083668f, -0.728464390f,
+    0.683965412f, -0.729514438f,
+    0.682845546f, -0.730562769f,
+    0.681724074f, -0.731609381f,
+    0.680600998f, -0.732654272f,
+    0.679476320f, -0.733697438f,
+    0.678350043f, -0.734738878f,
+    0.677222170f, -0.735778589f,
+    0.676092704f, -0.736816569f,
+    0.674961646f, -0.737852815f,
+    0.673829000f, -0.738887324f,
+    0.672694769f, -0.739920095f,
+    0.671558955f, -0.740951125f,
+    0.670421560f, -0.741980412f,
+    0.669282588f, -0.743007952f,
+    0.668142041f, -0.744033744f,
+    0.666999922f, -0.745057785f,
+    0.665856234f, -0.746080074f,
+    0.664710978f, -0.747100606f,
+    0.663564159f, -0.748119380f,
+    0.662415778f, -0.749136395f,
+    0.661265838f, -0.750151646f,
+    0.660114342f, -0.751165132f,
+    0.658961293f, -0.752176850f,
+    0.657806693f, -0.753186799f,
+    0.656650546f, -0.754194975f,
+    0.655492853f, -0.755201377f,
+    0.654333618f, -0.756206001f,
+    0.653172843f, -0.757208847f,
+    0.652010531f, -0.758209910f,
+    0.650846685f, -0.759209189f,
+    0.649681307f, -0.760206682f,
+    0.648514401f, -0.761202385f,
+    0.647345969f, -0.762196298f,
+    0.646176013f, -0.763188417f,
+    0.645004537f, -0.764178741f,
+    0.643831543f, -0.765167266f,
+    0.642657034f, -0.766153990f,
+    0.641481013f, -0.767138912f,
+    0.640303482f, -0.768122029f,
+    0.639124445f, -0.769103338f,
+    0.637943904f, -0.770082837f,
+    0.636761861f, -0.771060524f,
+    0.635578320f, -0.772036397f,
+    0.634393284f, -0.773010453f,
+    0.633206755f, -0.773982691f,
+    0.632018736f, -0.774953107f,
+    0.630829230f, -0.775921699f,
+    0.629638239f, -0.776888466f,
+    0.628445767f, -0.777853404f,
+    0.627251815f, -0.778816512f,
+    0.626056388f, -0.779777788f,
+    0.624859488f, -0.780737229f,
+    0.623661118f, -0.781694832f,
+    0.622461279f, -0.782650596f,
+    0.621259977f, -0.783604519f,
+    0.620057212f, -0.784556597f,
+    0.618852988f, -0.785506830f,
+    0.617647308f, -0.786455214f,
+    0.616440175f, -0.787401747f,
+    0.615231591f, -0.788346428f,
+    0.614021559f, -0.789289253f,
+    0.612810082f, -0.790230221f,
+    0.611597164f, -0.791169330f,
+    0.610382806f, -0.792106577f,
+    0.609167012f, -0.793041960f,
+    0.607949785f, -0.793975478f,
+    0.606731127f, -0.794907126f,
+    0.605511041f, -0.795836905f,
+    0.604289531f, -0.796764810f,
+    0.603066599f, -0.797690841f,
+    0.601842247f, -0.798614995f,
+    0.600616479f, -0.799537269f,
+    0.599389298f, -0.800457662f,
+    0.598160707f, -0.801376172f,
+    0.596930708f, -0.802292796f,
+    0.595699304f, -0.803207531f,
+    0.594466499f, -0.804120377f,
+    0.593232295f, -0.805031331f,
+    0.591996695f, -0.805940391f,
+    0.590759702f, -0.806847554f,
+    0.589521319f, -0.807752818f,
+    0.588281548f, -0.808656182f,
+    0.587040394f, -0.809557642f,
+    0.585797857f, -0.810457198f,
+    0.584553943f, -0.811354847f,
+    0.583308653f, -0.812250587f,
+    0.582061990f, -0.813144415f,
+    0.580813958f, -0.814036330f,
+    0.579564559f, -0.814926329f,
+    0.578313796f, -0.815814411f,
+    0.577061673f, -0.816700573f,
+    0.575808191f, -0.817584813f,
+    0.574553355f, -0.818467130f,
+    0.573297167f, -0.819347520f,
+    0.572039629f, -0.820225983f,
+    0.570780746f, -0.821102515f,
+    0.569520519f, -0.821977115f,
+    0.568258953f, -0.822849781f,
+    0.566996049f, -0.823720511f,
+    0.565731811f, -0.824589303f,
+    0.564466242f, -0.825456154f,
+    0.563199344f, -0.826321063f,
+    0.561931121f, -0.827184027f,
+    0.560661576f, -0.828045045f,
+    0.559390712f, -0.828904115f,
+    0.558118531f, -0.829761234f,
+    0.556845037f, -0.830616400f,
+    0.555570233f, -0.831469612f,
+    0.554294121f, -0.832320868f,
+    0.553016706f, -0.833170165f,
+    0.551737988f, -0.834017501f,
+    0.550457973f, -0.834862875f,
+    0.549176662f, -0.835706284f,
+    0.547894059f, -0.836547727f,
+    0.546610167f, -0.837387202f,
+    0.545324988f, -0.838224706f,
+    0.544038527f, -0.839060237f,
+    0.542750785f, -0.839893794f,
+    0.541461766f, -0.840725375f,
+    0.540171473f, -0.841554977f,
+    0.538879909f, -0.842382600f,
+    0.537587076f, -0.843208240f,
+    0.536292979f, -0.844031895f,
+    0.534997620f, -0.844853565f,
+    0.533701002f, -0.845673247f,
+    0.532403128f, -0.846490939f,
+    0.531104001f, -0.847306639f,
+    0.529803625f, -0.848120345f,
+    0.528502002f, -0.848932055f,
+    0.527199135f, -0.849741768f,
+    0.525895027f, -0.850549481f,
+    0.524589683f, -0.851355193f,
+    0.523283103f, -0.852158902f,
+    0.521975293f, -0.852960605f,
+    0.520666254f, -0.853760301f,
+    0.519355990f, -0.854557988f,
+    0.518044504f, -0.855353665f,
+    0.516731799f, -0.856147328f,
+    0.515417878f, -0.856938977f,
+    0.514102744f, -0.857728610f,
+    0.512786401f, -0.858516224f,
+    0.511468850f, -0.859301818f,
+    0.510150097f, -0.860085390f,
+    0.508830143f, -0.860866939f,
+    0.507508991f, -0.861646461f,
+    0.506186645f, -0.862423956f,
+    0.504863109f, -0.863199422f,
+    0.503538384f, -0.863972856f,
+    0.502212474f, -0.864744258f,
+    0.500885383f, -0.865513624f,
+    0.499557113f, -0.866280954f,
+    0.498227667f, -0.867046246f,
+    0.496897049f, -0.867809497f,
+    0.495565262f, -0.868570706f,
+    0.494232309f, -0.869329871f,
+    0.492898192f, -0.870086991f,
+    0.491562916f, -0.870842063f,
+    0.490226483f, -0.871595087f,
+    0.488888897f, -0.872346059f,
+    0.487550160f, -0.873094978f,
+    0.486210276f, -0.873841843f,
+    0.484869248f, -0.874586652f,
+    0.483527079f, -0.875329403f,
+    0.482183772f, -0.876070094f,
+    0.480839331f, -0.876808724f,
+    0.479493758f, -0.877545290f,
+    0.478147056f, -0.878279792f,
+    0.476799230f, -0.879012226f,
+    0.475450282f, -0.879742593f,
+    0.474100215f, -0.880470889f,
+    0.472749032f, -0.881197113f,
+    0.471396737f, -0.881921264f,
+    0.470043332f, -0.882643340f,
+    0.468688822f, -0.883363339f,
+    0.467333209f, -0.884081259f,
+    0.465976496f, -0.884797098f,
+    0.464618686f, -0.885510856f,
+    0.463259784f, -0.886222530f,
+    0.461899791f, -0.886932119f,
+    0.460538711f, -0.887639620f,
+    0.459176548f, -0.888345033f,
+    0.457813304f, -0.889048356f,
+    0.456448982f, -0.889749586f,
+    0.455083587f, -0.890448723f,
+    0.453717121f, -0.891145765f,
+    0.452349587f, -0.891840709f,
+    0.450980989f, -0.892533555f,
+    0.449611330f, -0.893224301f,
+    0.448240612f, -0.893912945f,
+    0.446868840f, -0.894599486f,
+    0.445496017f, -0.895283921f,
+    0.444122145f, -0.895966250f,
+    0.442747228f, -0.896646470f,
+    0.441371269f, -0.897324581f,
+    0.439994271f, -0.898000580f,
+    0.438616239f, -0.898674466f,
+    0.437237174f, -0.899346237f,
+    0.435857080f, -0.900015892f,
+    0.434475961f, -0.900683429f,
+    0.433093819f, -0.901348847f,
+    0.431710658f, -0.902012144f,
+    0.430326481f, -0.902673318f,
+    0.428941292f, -0.903332368f,
+    0.427555093f, -0.903989293f,
+    0.426167889f, -0.904644091f,
+    0.424779681f, -0.905296759f,
+    0.423390474f, -0.905947298f,
+    0.422000271f, -0.906595705f,
+    0.420609074f, -0.907241978f,
+    0.419216888f, -0.907886116f,
+    0.417823716f, -0.908528119f,
+    0.416429560f, -0.909167983f,
+    0.415034424f, -0.909805708f,
+    0.413638312f, -0.910441292f,
+    0.412241227f, -0.911074734f,
+    0.410843171f, -0.911706032f,
+    0.409444149f, -0.912335185f,
+    0.408044163f, -0.912962190f,
+    0.406643217f, -0.913587048f,
+    0.405241314f, -0.914209756f,
+    0.403838458f, -0.914830312f,
+    0.402434651f, -0.915448716f,
+    0.401029897f, -0.916064966f,
+    0.399624200f, -0.916679060f,
+    0.398217562f, -0.917290997f,
+    0.396809987f, -0.917900776f,
+    0.395401479f, -0.918508394f,
+    0.393992040f, -0.919113852f,
+    0.392581674f, -0.919717146f,
+    0.391170384f, -0.920318277f,
+    0.389758174f, -0.920917242f,
+    0.388345047f, -0.921514039f,
+    0.386931006f, -0.922108669f,
+    0.385516054f, -0.922701128f,
+    0.384100195f, -0.923291417f,
+    0.382683432f, -0.923879533f,
+    0.381265769f, -0.924465474f,
+    0.379847209f, -0.925049241f,
+    0.378427755f, -0.925630831f,
+    0.377007410f, -0.926210242f,
+    0.375586178f, -0.926787474f,
+    0.374164063f, -0.927362526f,
+    0.372741067f, -0.927935395f,
+    0.371317194f, -0.928506080f,
+    0.369892447f, -0.929074581f,
+    0.368466830f, -0.929640896f,
+    0.367040346f, -0.930205023f,
+    0.365612998f, -0.930766961f,
+    0.364184790f, -0.931326709f,
+    0.362755724f, -0.931884266f,
+    0.361325806f, -0.932439629f,
+    0.359895037f, -0.932992799f,
+    0.358463421f, -0.933543773f,
+    0.357030961f, -0.934092550f,
+    0.355597662f, -0.934639130f,
+    0.354163525f, -0.935183510f,
+    0.352728556f, -0.935725689f,
+    0.351292756f, -0.936265667f,
+    0.349856130f, -0.936803442f,
+    0.348418680f, -0.937339012f,
+    0.346980411f, -0.937872376f,
+    0.345541325f, -0.938403534f,
+    0.344101426f, -0.938932484f,
+    0.342660717f, -0.939459224f,
+    0.341219202f, -0.939983753f,
+    0.339776884f, -0.940506071f,
+    0.338333767f, -0.941026175f,
+    0.336889853f, -0.941544065f,
+    0.335445147f, -0.942059740f,
+    0.333999651f, -0.942573198f,
+    0.332553370f, -0.943084437f,
+    0.331106306f, -0.943593458f,
+    0.329658463f, -0.944100258f,
+    0.328209844f, -0.944604837f,
+    0.326760452f, -0.945107193f,
+    0.325310292f, -0.945607325f,
+    0.323859367f, -0.946105232f,
+    0.322407679f, -0.946600913f,
+    0.320955232f, -0.947094366f,
+    0.319502031f, -0.947585591f,
+    0.318048077f, -0.948074586f,
+    0.316593376f, -0.948561350f,
+    0.315137929f, -0.949045882f,
+    0.313681740f, -0.949528181f,
+    0.312224814f, -0.950008245f,
+    0.310767153f, -0.950486074f,
+    0.309308760f, -0.950961666f,
+    0.307849640f, -0.951435021f,
+    0.306389795f, -0.951906137f,
+    0.304929230f, -0.952375013f,
+    0.303467947f, -0.952841648f,
+    0.302005949f, -0.953306040f,
+    0.300543241f, -0.953768190f,
+    0.299079826f, -0.954228095f,
+    0.297615707f, -0.954685755f,
+    0.296150888f, -0.955141168f,
+    0.294685372f, -0.955594334f,
+    0.293219163f, -0.956045251f,
+    0.291752263f, -0.956493919f,
+    0.290284677f, -0.956940336f,
+    0.288816408f, -0.957384501f,
+    0.287347460f, -0.957826413f,
+    0.285877835f, -0.958266071f,
+    0.284407537f, -0.958703475f,
+    0.282936570f, -0.959138622f,
+    0.281464938f, -0.959571513f,
+    0.279992643f, -0.960002146f,
+    0.278519689f, -0.960430519f,
+    0.277046080f, -0.960856633f,
+    0.275571819f, -0.961280486f,
+    0.274096910f, -0.961702077f,
+    0.272621355f, -0.962121404f,
+    0.271145160f, -0.962538468f,
+    0.269668326f, -0.962953267f,
+    0.268190857f, -0.963365800f,
+    0.266712757f, -0.963776066f,
+    0.265234030f, -0.964184064f,
+    0.263754679f, -0.964589793f,
+    0.262274707f, -0.964993253f,
+    0.260794118f, -0.965394442f,
+    0.259312915f, -0.965793359f,
+    0.257831102f, -0.966190003f,
+    0.256348682f, -0.966584374f,
+    0.254865660f, -0.966976471f,
+    0.253382037f, -0.967366292f,
+    0.251897818f, -0.967753837f,
+    0.250413007f, -0.968139105f,
+    0.248927606f, -0.968522094f,
+    0.247441619f, -0.968902805f,
+    0.245955050f, -0.969281235f,
+    0.244467903f, -0.969657385f,
+    0.242980180f, -0.970031253f,
+    0.241491885f, -0.970402839f,
+    0.240003022f, -0.970772141f,
+    0.238513595f, -0.971139158f,
+    0.237023606f, -0.971503891f,
+    0.235533059f, -0.971866337f,
+    0.234041959f, -0.972226497f,
+    0.232550307f, -0.972584369f,
+    0.231058108f, -0.972939952f,
+    0.229565366f, -0.973293246f,
+    0.228072083f, -0.973644250f,
+    0.226578264f, -0.973992962f,
+    0.225083911f, -0.974339383f,
+    0.223589029f, -0.974683511f,
+    0.222093621f, -0.975025345f,
+    0.220597690f, -0.975364885f,
+    0.219101240f, -0.975702130f,
+    0.217604275f, -0.976037079f,
+    0.216106797f, -0.976369731f,
+    0.214608811f, -0.976700086f,
+    0.213110320f, -0.977028143f,
+    0.211611327f, -0.977353900f,
+    0.210111837f, -0.977677358f,
+    0.208611852f, -0.977998515f,
+    0.207111376f, -0.978317371f,
+    0.205610413f, -0.978633924f,
+    0.204108966f, -0.978948175f,
+    0.202607039f, -0.979260123f,
+    0.201104635f, -0.979569766f,
+    0.199601758f, -0.979877104f,
+    0.198098411f, -0.980182136f,
+    0.196594598f, -0.980484862f,
+    0.195090322f, -0.980785280f,
+    0.193585587f, -0.981083391f,
+    0.192080397f, -0.981379193f,
+    0.190574755f, -0.981672686f,
+    0.189068664f, -0.981963869f,
+    0.187562129f, -0.982252741f,
+    0.186055152f, -0.982539302f,
+    0.184547737f, -0.982823551f,
+    0.183039888f, -0.983105487f,
+    0.181531608f, -0.983385110f,
+    0.180022901f, -0.983662419f,
+    0.178513771f, -0.983937413f,
+    0.177004220f, -0.984210092f,
+    0.175494253f, -0.984480455f,
+    0.173983873f, -0.984748502f,
+    0.172473084f, -0.985014231f,
+    0.170961889f, -0.985277642f,
+    0.169450291f, -0.985538735f,
+    0.167938295f, -0.985797509f,
+    0.166425904f, -0.986053963f,
+    0.164913120f, -0.986308097f,
+    0.163399949f, -0.986559910f,
+    0.161886394f, -0.986809402f,
+    0.160372457f, -0.987056571f,
+    0.158858143f, -0.987301418f,
+    0.157343456f, -0.987543942f,
+    0.155828398f, -0.987784142f,
+    0.154312973f, -0.988022017f,
+    0.152797185f, -0.988257568f,
+    0.151281038f, -0.988490793f,
+    0.149764535f, -0.988721692f,
+    0.148247679f, -0.988950265f,
+    0.146730474f, -0.989176510f,
+    0.145212925f, -0.989400428f,
+    0.143695033f, -0.989622017f,
+    0.142176804f, -0.989841278f,
+    0.140658239f, -0.990058210f,
+    0.139139344f, -0.990272812f,
+    0.137620122f, -0.990485084f,
+    0.136100575f, -0.990695025f,
+    0.134580709f, -0.990902635f,
+    0.133060525f, -0.991107914f,
+    0.131540029f, -0.991310860f,
+    0.130019223f, -0.991511473f,
+    0.128498111f, -0.991709754f,
+    0.126976696f, -0.991905700f,
+    0.125454983f, -0.992099313f,
+    0.123932975f, -0.992290591f,
+    0.122410675f, -0.992479535f,
+    0.120888087f, -0.992666142f,
+    0.119365215f, -0.992850414f,
+    0.117842062f, -0.993032350f,
+    0.116318631f, -0.993211949f,
+    0.114794927f, -0.993389211f,
+    0.113270952f, -0.993564136f,
+    0.111746711f, -0.993736722f,
+    0.110222207f, -0.993906970f,
+    0.108697444f, -0.994074879f,
+    0.107172425f, -0.994240449f,
+    0.105647154f, -0.994403680f,
+    0.104121634f, -0.994564571f,
+    0.102595869f, -0.994723121f,
+    0.101069863f, -0.994879331f,
+    0.099543619f, -0.995033199f,
+    0.098017140f, -0.995184727f,
+    0.096490431f, -0.995333912f,
+    0.094963495f, -0.995480755f,
+    0.093436336f, -0.995625256f,
+    0.091908956f, -0.995767414f,
+    0.090381361f, -0.995907229f,
+    0.088853553f, -0.996044701f,
+    0.087325535f, -0.996179829f,
+    0.085797312f, -0.996312612f,
+    0.084268888f, -0.996443051f,
+    0.082740265f, -0.996571146f,
+    0.081211447f, -0.996696895f,
+    0.079682438f, -0.996820299f,
+    0.078153242f, -0.996941358f,
+    0.076623861f, -0.997060070f,
+    0.075094301f, -0.997176437f,
+    0.073564564f, -0.997290457f,
+    0.072034653f, -0.997402130f,
+    0.070504573f, -0.997511456f,
+    0.068974328f, -0.997618435f,
+    0.067443920f, -0.997723067f,
+    0.065913353f, -0.997825350f,
+    0.064382631f, -0.997925286f,
+    0.062851758f, -0.998022874f,
+    0.061320736f, -0.998118113f,
+    0.059789571f, -0.998211003f,
+    0.058258265f, -0.998301545f,
+    0.056726821f, -0.998389737f,
+    0.055195244f, -0.998475581f,
+    0.053663538f, -0.998559074f,
+    0.052131705f, -0.998640218f,
+    0.050599749f, -0.998719012f,
+    0.049067674f, -0.998795456f,
+    0.047535484f, -0.998869550f,
+    0.046003182f, -0.998941293f,
+    0.044470772f, -0.999010686f,
+    0.042938257f, -0.999077728f,
+    0.041405641f, -0.999142419f,
+    0.039872928f, -0.999204759f,
+    0.038340120f, -0.999264747f,
+    0.036807223f, -0.999322385f,
+    0.035274239f, -0.999377670f,
+    0.033741172f, -0.999430605f,
+    0.032208025f, -0.999481187f,
+    0.030674803f, -0.999529418f,
+    0.029141509f, -0.999575296f,
+    0.027608146f, -0.999618822f,
+    0.026074718f, -0.999659997f,
+    0.024541229f, -0.999698819f,
+    0.023007681f, -0.999735288f,
+    0.021474080f, -0.999769405f,
+    0.019940429f, -0.999801170f,
+    0.018406730f, -0.999830582f,
+    0.016872988f, -0.999857641f,
+    0.015339206f, -0.999882347f,
+    0.013805389f, -0.999904701f,
+    0.012271538f, -0.999924702f,
+    0.010737659f, -0.999942350f,
+    0.009203755f, -0.999957645f,
+    0.007669829f, -0.999970586f,
+    0.006135885f, -0.999981175f,
+    0.004601926f, -0.999989411f,
+    0.003067957f, -0.999995294f,
+    0.001533980f, -0.999998823f
+};
+
+
+/**   
+ * \par    
+ * Example code for the generation of the floating-point sine table:
+ * <pre>
+ * tableSize = 512;    
+ * for(n = 0; n < (tableSize + 1); n++)    
+ * {    
+ *	sinTable[n]=sin(2*pi*n/tableSize);    
+ * }</pre>    
+ * \par    
+ * where pi value is  3.14159265358979    
+ */
+
+const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1] = {
+   0.00000000f, 0.01227154f, 0.02454123f, 0.03680722f, 0.04906767f, 0.06132074f,
+   0.07356456f, 0.08579731f, 0.09801714f, 0.11022221f, 0.12241068f, 0.13458071f,
+   0.14673047f, 0.15885814f, 0.17096189f, 0.18303989f, 0.19509032f, 0.20711138f,
+   0.21910124f, 0.23105811f, 0.24298018f, 0.25486566f, 0.26671276f, 0.27851969f,
+   0.29028468f, 0.30200595f, 0.31368174f, 0.32531029f, 0.33688985f, 0.34841868f,
+   0.35989504f, 0.37131719f, 0.38268343f, 0.39399204f, 0.40524131f, 0.41642956f,
+   0.42755509f, 0.43861624f, 0.44961133f, 0.46053871f, 0.47139674f, 0.48218377f,
+   0.49289819f, 0.50353838f, 0.51410274f, 0.52458968f, 0.53499762f, 0.54532499f,
+   0.55557023f, 0.56573181f, 0.57580819f, 0.58579786f, 0.59569930f, 0.60551104f,
+   0.61523159f, 0.62485949f, 0.63439328f, 0.64383154f, 0.65317284f, 0.66241578f,
+   0.67155895f, 0.68060100f, 0.68954054f, 0.69837625f, 0.70710678f, 0.71573083f,
+   0.72424708f, 0.73265427f, 0.74095113f, 0.74913639f, 0.75720885f, 0.76516727f,
+   0.77301045f, 0.78073723f, 0.78834643f, 0.79583690f, 0.80320753f, 0.81045720f,
+   0.81758481f, 0.82458930f, 0.83146961f, 0.83822471f, 0.84485357f, 0.85135519f,
+   0.85772861f, 0.86397286f, 0.87008699f, 0.87607009f, 0.88192126f, 0.88763962f,
+   0.89322430f, 0.89867447f, 0.90398929f, 0.90916798f, 0.91420976f, 0.91911385f,
+   0.92387953f, 0.92850608f, 0.93299280f, 0.93733901f, 0.94154407f, 0.94560733f,
+   0.94952818f, 0.95330604f, 0.95694034f, 0.96043052f, 0.96377607f, 0.96697647f,
+   0.97003125f, 0.97293995f, 0.97570213f, 0.97831737f, 0.98078528f, 0.98310549f,
+   0.98527764f, 0.98730142f, 0.98917651f, 0.99090264f, 0.99247953f, 0.99390697f,
+   0.99518473f, 0.99631261f, 0.99729046f, 0.99811811f, 0.99879546f, 0.99932238f,
+   0.99969882f, 0.99992470f, 1.00000000f, 0.99992470f, 0.99969882f, 0.99932238f,
+   0.99879546f, 0.99811811f, 0.99729046f, 0.99631261f, 0.99518473f, 0.99390697f,
+   0.99247953f, 0.99090264f, 0.98917651f, 0.98730142f, 0.98527764f, 0.98310549f,
+   0.98078528f, 0.97831737f, 0.97570213f, 0.97293995f, 0.97003125f, 0.96697647f,
+   0.96377607f, 0.96043052f, 0.95694034f, 0.95330604f, 0.94952818f, 0.94560733f,
+   0.94154407f, 0.93733901f, 0.93299280f, 0.92850608f, 0.92387953f, 0.91911385f,
+   0.91420976f, 0.90916798f, 0.90398929f, 0.89867447f, 0.89322430f, 0.88763962f,
+   0.88192126f, 0.87607009f, 0.87008699f, 0.86397286f, 0.85772861f, 0.85135519f,
+   0.84485357f, 0.83822471f, 0.83146961f, 0.82458930f, 0.81758481f, 0.81045720f,
+   0.80320753f, 0.79583690f, 0.78834643f, 0.78073723f, 0.77301045f, 0.76516727f,
+   0.75720885f, 0.74913639f, 0.74095113f, 0.73265427f, 0.72424708f, 0.71573083f,
+   0.70710678f, 0.69837625f, 0.68954054f, 0.68060100f, 0.67155895f, 0.66241578f,
+   0.65317284f, 0.64383154f, 0.63439328f, 0.62485949f, 0.61523159f, 0.60551104f,
+   0.59569930f, 0.58579786f, 0.57580819f, 0.56573181f, 0.55557023f, 0.54532499f,
+   0.53499762f, 0.52458968f, 0.51410274f, 0.50353838f, 0.49289819f, 0.48218377f,
+   0.47139674f, 0.46053871f, 0.44961133f, 0.43861624f, 0.42755509f, 0.41642956f,
+   0.40524131f, 0.39399204f, 0.38268343f, 0.37131719f, 0.35989504f, 0.34841868f,
+   0.33688985f, 0.32531029f, 0.31368174f, 0.30200595f, 0.29028468f, 0.27851969f,
+   0.26671276f, 0.25486566f, 0.24298018f, 0.23105811f, 0.21910124f, 0.20711138f,
+   0.19509032f, 0.18303989f, 0.17096189f, 0.15885814f, 0.14673047f, 0.13458071f,
+   0.12241068f, 0.11022221f, 0.09801714f, 0.08579731f, 0.07356456f, 0.06132074f,
+   0.04906767f, 0.03680722f, 0.02454123f, 0.01227154f, 0.00000000f, -0.01227154f,
+   -0.02454123f, -0.03680722f, -0.04906767f, -0.06132074f, -0.07356456f,
+   -0.08579731f, -0.09801714f, -0.11022221f, -0.12241068f, -0.13458071f,
+   -0.14673047f, -0.15885814f, -0.17096189f, -0.18303989f, -0.19509032f, 
+   -0.20711138f, -0.21910124f, -0.23105811f, -0.24298018f, -0.25486566f, 
+   -0.26671276f, -0.27851969f, -0.29028468f, -0.30200595f, -0.31368174f, 
+   -0.32531029f, -0.33688985f, -0.34841868f, -0.35989504f, -0.37131719f, 
+   -0.38268343f, -0.39399204f, -0.40524131f, -0.41642956f, -0.42755509f, 
+   -0.43861624f, -0.44961133f, -0.46053871f, -0.47139674f, -0.48218377f, 
+   -0.49289819f, -0.50353838f, -0.51410274f, -0.52458968f, -0.53499762f, 
+   -0.54532499f, -0.55557023f, -0.56573181f, -0.57580819f, -0.58579786f, 
+   -0.59569930f, -0.60551104f, -0.61523159f, -0.62485949f, -0.63439328f, 
+   -0.64383154f, -0.65317284f, -0.66241578f, -0.67155895f, -0.68060100f, 
+   -0.68954054f, -0.69837625f, -0.70710678f, -0.71573083f, -0.72424708f, 
+   -0.73265427f, -0.74095113f, -0.74913639f, -0.75720885f, -0.76516727f, 
+   -0.77301045f, -0.78073723f, -0.78834643f, -0.79583690f, -0.80320753f, 
+   -0.81045720f, -0.81758481f, -0.82458930f, -0.83146961f, -0.83822471f, 
+   -0.84485357f, -0.85135519f, -0.85772861f, -0.86397286f, -0.87008699f, 
+   -0.87607009f, -0.88192126f, -0.88763962f, -0.89322430f, -0.89867447f, 
+   -0.90398929f, -0.90916798f, -0.91420976f, -0.91911385f, -0.92387953f, 
+   -0.92850608f, -0.93299280f, -0.93733901f, -0.94154407f, -0.94560733f, 
+   -0.94952818f, -0.95330604f, -0.95694034f, -0.96043052f, -0.96377607f, 
+   -0.96697647f, -0.97003125f, -0.97293995f, -0.97570213f, -0.97831737f, 
+   -0.98078528f, -0.98310549f, -0.98527764f, -0.98730142f, -0.98917651f, 
+   -0.99090264f, -0.99247953f, -0.99390697f, -0.99518473f, -0.99631261f, 
+   -0.99729046f, -0.99811811f, -0.99879546f, -0.99932238f, -0.99969882f, 
+   -0.99992470f, -1.00000000f, -0.99992470f, -0.99969882f, -0.99932238f, 
+   -0.99879546f, -0.99811811f, -0.99729046f, -0.99631261f, -0.99518473f, 
+   -0.99390697f, -0.99247953f, -0.99090264f, -0.98917651f, -0.98730142f, 
+   -0.98527764f, -0.98310549f, -0.98078528f, -0.97831737f, -0.97570213f, 
+   -0.97293995f, -0.97003125f, -0.96697647f, -0.96377607f, -0.96043052f, 
+   -0.95694034f, -0.95330604f, -0.94952818f, -0.94560733f, -0.94154407f, 
+   -0.93733901f, -0.93299280f, -0.92850608f, -0.92387953f, -0.91911385f, 
+   -0.91420976f, -0.90916798f, -0.90398929f, -0.89867447f, -0.89322430f, 
+   -0.88763962f, -0.88192126f, -0.87607009f, -0.87008699f, -0.86397286f, 
+   -0.85772861f, -0.85135519f, -0.84485357f, -0.83822471f, -0.83146961f, 
+   -0.82458930f, -0.81758481f, -0.81045720f, -0.80320753f, -0.79583690f, 
+   -0.78834643f, -0.78073723f, -0.77301045f, -0.76516727f, -0.75720885f, 
+   -0.74913639f, -0.74095113f, -0.73265427f, -0.72424708f, -0.71573083f, 
+   -0.70710678f, -0.69837625f, -0.68954054f, -0.68060100f, -0.67155895f, 
+   -0.66241578f, -0.65317284f, -0.64383154f, -0.63439328f, -0.62485949f, 
+   -0.61523159f, -0.60551104f, -0.59569930f, -0.58579786f, -0.57580819f, 
+   -0.56573181f, -0.55557023f, -0.54532499f, -0.53499762f, -0.52458968f, 
+   -0.51410274f, -0.50353838f, -0.49289819f, -0.48218377f, -0.47139674f, 
+   -0.46053871f, -0.44961133f, -0.43861624f, -0.42755509f, -0.41642956f, 
+   -0.40524131f, -0.39399204f, -0.38268343f, -0.37131719f, -0.35989504f, 
+   -0.34841868f, -0.33688985f, -0.32531029f, -0.31368174f, -0.30200595f, 
+   -0.29028468f, -0.27851969f, -0.26671276f, -0.25486566f, -0.24298018f, 
+   -0.23105811f, -0.21910124f, -0.20711138f, -0.19509032f, -0.18303989f, 
+   -0.17096189f, -0.15885814f, -0.14673047f, -0.13458071f, -0.12241068f, 
+   -0.11022221f, -0.09801714f, -0.08579731f, -0.07356456f, -0.06132074f, 
+   -0.04906767f, -0.03680722f, -0.02454123f, -0.01227154f, -0.00000000f
+};
+
+/**   
+ * \par    
+ * Table values are in Q31 (1.31 fixed-point format) and generation is done in 
+ * three steps.  First,  generate sin values in floating point:    
+ * <pre>
+ * tableSize = 512;      
+ * for(n = 0; n < (tableSize + 1); n++)    
+ * {    
+ *	sinTable[n]= sin(2*pi*n/tableSize);    
+ * } </pre>    
+ * where pi value is  3.14159265358979    
+ * \par    
+ * Second, convert floating-point to Q31 (Fixed point):
+ *	(sinTable[i] * pow(2, 31))    
+ * \par    
+ * Finally, round to the nearest integer value:
+ * 	sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);    
+ */
+const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1] = {
+   0x00000000, 0x01921D20, 0x03242ABF, 0x04B6195D, 0x0647D97C, 0x07D95B9E, 
+   0x096A9049, 0x0AFB6805, 0x0C8BD35E, 0x0E1BC2E4, 0x0FAB272B, 0x1139F0CF, 
+   0x12C8106F, 0x145576B1, 0x15E21445, 0x176DD9DE, 0x18F8B83C, 0x1A82A026, 
+   0x1C0B826A, 0x1D934FE5, 0x1F19F97B, 0x209F701C, 0x2223A4C5, 0x23A6887F, 
+   0x25280C5E, 0x26A82186, 0x2826B928, 0x29A3C485, 0x2B1F34EB, 0x2C98FBBA, 
+   0x2E110A62, 0x2F875262, 0x30FBC54D, 0x326E54C7, 0x33DEF287, 0x354D9057, 
+   0x36BA2014, 0x382493B0, 0x398CDD32, 0x3AF2EEB7, 0x3C56BA70, 0x3DB832A6, 
+   0x3F1749B8, 0x4073F21D, 0x41CE1E65, 0x4325C135, 0x447ACD50, 0x45CD358F, 
+   0x471CECE7, 0x4869E665, 0x49B41533, 0x4AFB6C98, 0x4C3FDFF4, 0x4D8162C4, 
+   0x4EBFE8A5, 0x4FFB654D, 0x5133CC94, 0x5269126E, 0x539B2AF0, 0x54CA0A4B, 
+   0x55F5A4D2, 0x571DEEFA, 0x5842DD54, 0x59646498, 0x5A82799A, 0x5B9D1154, 
+   0x5CB420E0, 0x5DC79D7C, 0x5ED77C8A, 0x5FE3B38D, 0x60EC3830, 0x61F1003F, 
+   0x62F201AC, 0x63EF3290, 0x64E88926, 0x65DDFBD3, 0x66CF8120, 0x67BD0FBD, 
+   0x68A69E81, 0x698C246C, 0x6A6D98A4, 0x6B4AF279, 0x6C242960, 0x6CF934FC, 
+   0x6DCA0D14, 0x6E96A99D, 0x6F5F02B2, 0x7023109A, 0x70E2CBC6, 0x719E2CD2, 
+   0x72552C85, 0x7307C3D0, 0x73B5EBD1, 0x745F9DD1, 0x7504D345, 0x75A585CF, 
+   0x7641AF3D, 0x76D94989, 0x776C4EDB, 0x77FAB989, 0x78848414, 0x7909A92D, 
+   0x798A23B1, 0x7A05EEAD, 0x7A7D055B, 0x7AEF6323, 0x7B5D039E, 0x7BC5E290, 
+   0x7C29FBEE, 0x7C894BDE, 0x7CE3CEB2, 0x7D3980EC, 0x7D8A5F40, 0x7DD6668F, 
+   0x7E1D93EA, 0x7E5FE493, 0x7E9D55FC, 0x7ED5E5C6, 0x7F0991C4, 0x7F3857F6, 
+   0x7F62368F, 0x7F872BF3, 0x7FA736B4, 0x7FC25596, 0x7FD8878E, 0x7FE9CBC0, 
+   0x7FF62182, 0x7FFD885A, 0x7FFFFFFF, 0x7FFD885A, 0x7FF62182, 0x7FE9CBC0, 
+   0x7FD8878E, 0x7FC25596, 0x7FA736B4, 0x7F872BF3, 0x7F62368F, 0x7F3857F6, 
+   0x7F0991C4, 0x7ED5E5C6, 0x7E9D55FC, 0x7E5FE493, 0x7E1D93EA, 0x7DD6668F, 
+   0x7D8A5F40, 0x7D3980EC, 0x7CE3CEB2, 0x7C894BDE, 0x7C29FBEE, 0x7BC5E290, 
+   0x7B5D039E, 0x7AEF6323, 0x7A7D055B, 0x7A05EEAD, 0x798A23B1, 0x7909A92D, 
+   0x78848414, 0x77FAB989, 0x776C4EDB, 0x76D94989, 0x7641AF3D, 0x75A585CF, 
+   0x7504D345, 0x745F9DD1, 0x73B5EBD1, 0x7307C3D0, 0x72552C85, 0x719E2CD2, 
+   0x70E2CBC6, 0x7023109A, 0x6F5F02B2, 0x6E96A99D, 0x6DCA0D14, 0x6CF934FC, 
+   0x6C242960, 0x6B4AF279, 0x6A6D98A4, 0x698C246C, 0x68A69E81, 0x67BD0FBD, 
+   0x66CF8120, 0x65DDFBD3, 0x64E88926, 0x63EF3290, 0x62F201AC, 0x61F1003F, 
+   0x60EC3830, 0x5FE3B38D, 0x5ED77C8A, 0x5DC79D7C, 0x5CB420E0, 0x5B9D1154, 
+   0x5A82799A, 0x59646498, 0x5842DD54, 0x571DEEFA, 0x55F5A4D2, 0x54CA0A4B, 
+   0x539B2AF0, 0x5269126E, 0x5133CC94, 0x4FFB654D, 0x4EBFE8A5, 0x4D8162C4, 
+   0x4C3FDFF4, 0x4AFB6C98, 0x49B41533, 0x4869E665, 0x471CECE7, 0x45CD358F, 
+   0x447ACD50, 0x4325C135, 0x41CE1E65, 0x4073F21D, 0x3F1749B8, 0x3DB832A6, 
+   0x3C56BA70, 0x3AF2EEB7, 0x398CDD32, 0x382493B0, 0x36BA2014, 0x354D9057, 
+   0x33DEF287, 0x326E54C7, 0x30FBC54D, 0x2F875262, 0x2E110A62, 0x2C98FBBA, 
+   0x2B1F34EB, 0x29A3C485, 0x2826B928, 0x26A82186, 0x25280C5E, 0x23A6887F, 
+   0x2223A4C5, 0x209F701C, 0x1F19F97B, 0x1D934FE5, 0x1C0B826A, 0x1A82A026, 
+   0x18F8B83C, 0x176DD9DE, 0x15E21445, 0x145576B1, 0x12C8106F, 0x1139F0CF, 
+   0x0FAB272B, 0x0E1BC2E4, 0x0C8BD35E, 0x0AFB6805, 0x096A9049, 0x07D95B9E, 
+   0x0647D97C, 0x04B6195D, 0x03242ABF, 0x01921D20, 0x00000000, 0xFE6DE2E0, 
+   0xFCDBD541, 0xFB49E6A3, 0xF9B82684, 0xF826A462, 0xF6956FB7, 0xF50497FB, 
+   0xF3742CA2, 0xF1E43D1C, 0xF054D8D5, 0xEEC60F31, 0xED37EF91, 0xEBAA894F, 
+   0xEA1DEBBB, 0xE8922622, 0xE70747C4, 0xE57D5FDA, 0xE3F47D96, 0xE26CB01B, 
+   0xE0E60685, 0xDF608FE4, 0xDDDC5B3B, 0xDC597781, 0xDAD7F3A2, 0xD957DE7A, 
+   0xD7D946D8, 0xD65C3B7B, 0xD4E0CB15, 0xD3670446, 0xD1EEF59E, 0xD078AD9E, 
+   0xCF043AB3, 0xCD91AB39, 0xCC210D79, 0xCAB26FA9, 0xC945DFEC, 0xC7DB6C50, 
+   0xC67322CE, 0xC50D1149, 0xC3A94590, 0xC247CD5A, 0xC0E8B648, 0xBF8C0DE3, 
+   0xBE31E19B, 0xBCDA3ECB, 0xBB8532B0, 0xBA32CA71, 0xB8E31319, 0xB796199B, 
+   0xB64BEACD, 0xB5049368, 0xB3C0200C, 0xB27E9D3C, 0xB140175B, 0xB0049AB3, 
+   0xAECC336C, 0xAD96ED92, 0xAC64D510, 0xAB35F5B5, 0xAA0A5B2E, 0xA8E21106, 
+   0xA7BD22AC, 0xA69B9B68, 0xA57D8666, 0xA462EEAC, 0xA34BDF20, 0xA2386284, 
+   0xA1288376, 0xA01C4C73, 0x9F13C7D0, 0x9E0EFFC1, 0x9D0DFE54, 0x9C10CD70, 
+   0x9B1776DA, 0x9A22042D, 0x99307EE0, 0x9842F043, 0x9759617F, 0x9673DB94, 
+   0x9592675C, 0x94B50D87, 0x93DBD6A0, 0x9306CB04, 0x9235F2EC, 0x91695663, 
+   0x90A0FD4E, 0x8FDCEF66, 0x8F1D343A, 0x8E61D32E, 0x8DAAD37B, 0x8CF83C30, 
+   0x8C4A142F, 0x8BA0622F, 0x8AFB2CBB, 0x8A5A7A31, 0x89BE50C3, 0x8926B677, 
+   0x8893B125, 0x88054677, 0x877B7BEC, 0x86F656D3, 0x8675DC4F, 0x85FA1153, 
+   0x8582FAA5, 0x85109CDD, 0x84A2FC62, 0x843A1D70, 0x83D60412, 0x8376B422, 
+   0x831C314E, 0x82C67F14, 0x8275A0C0, 0x82299971, 0x81E26C16, 0x81A01B6D, 
+   0x8162AA04, 0x812A1A3A, 0x80F66E3C, 0x80C7A80A, 0x809DC971, 0x8078D40D, 
+   0x8058C94C, 0x803DAA6A, 0x80277872, 0x80163440, 0x8009DE7E, 0x800277A6, 
+   0x80000000, 0x800277A6, 0x8009DE7E, 0x80163440, 0x80277872, 0x803DAA6A, 
+   0x8058C94C, 0x8078D40D, 0x809DC971, 0x80C7A80A, 0x80F66E3C, 0x812A1A3A, 
+   0x8162AA04, 0x81A01B6D, 0x81E26C16, 0x82299971, 0x8275A0C0, 0x82C67F14, 
+   0x831C314E, 0x8376B422, 0x83D60412, 0x843A1D70, 0x84A2FC62, 0x85109CDD, 
+   0x8582FAA5, 0x85FA1153, 0x8675DC4F, 0x86F656D3, 0x877B7BEC, 0x88054677, 
+   0x8893B125, 0x8926B677, 0x89BE50C3, 0x8A5A7A31, 0x8AFB2CBB, 0x8BA0622F, 
+   0x8C4A142F, 0x8CF83C30, 0x8DAAD37B, 0x8E61D32E, 0x8F1D343A, 0x8FDCEF66, 
+   0x90A0FD4E, 0x91695663, 0x9235F2EC, 0x9306CB04, 0x93DBD6A0, 0x94B50D87, 
+   0x9592675C, 0x9673DB94, 0x9759617F, 0x9842F043, 0x99307EE0, 0x9A22042D, 
+   0x9B1776DA, 0x9C10CD70, 0x9D0DFE54, 0x9E0EFFC1, 0x9F13C7D0, 0xA01C4C73, 
+   0xA1288376, 0xA2386284, 0xA34BDF20, 0xA462EEAC, 0xA57D8666, 0xA69B9B68, 
+   0xA7BD22AC, 0xA8E21106, 0xAA0A5B2E, 0xAB35F5B5, 0xAC64D510, 0xAD96ED92, 
+   0xAECC336C, 0xB0049AB3, 0xB140175B, 0xB27E9D3C, 0xB3C0200C, 0xB5049368, 
+   0xB64BEACD, 0xB796199B, 0xB8E31319, 0xBA32CA71, 0xBB8532B0, 0xBCDA3ECB, 
+   0xBE31E19B, 0xBF8C0DE3, 0xC0E8B648, 0xC247CD5A, 0xC3A94590, 0xC50D1149, 
+   0xC67322CE, 0xC7DB6C50, 0xC945DFEC, 0xCAB26FA9, 0xCC210D79, 0xCD91AB39, 
+   0xCF043AB3, 0xD078AD9E, 0xD1EEF59E, 0xD3670446, 0xD4E0CB15, 0xD65C3B7B, 
+   0xD7D946D8, 0xD957DE7A, 0xDAD7F3A2, 0xDC597781, 0xDDDC5B3B, 0xDF608FE4, 
+   0xE0E60685, 0xE26CB01B, 0xE3F47D96, 0xE57D5FDA, 0xE70747C4, 0xE8922622, 
+   0xEA1DEBBB, 0xEBAA894F, 0xED37EF91, 0xEEC60F31, 0xF054D8D5, 0xF1E43D1C, 
+   0xF3742CA2, 0xF50497FB, 0xF6956FB7, 0xF826A462, 0xF9B82684, 0xFB49E6A3, 
+   0xFCDBD541, 0xFE6DE2E0, 0x00000000 
+};
+
+/**   
+ * \par    
+ * Table values are in Q15 (1.15 fixed-point format) and generation is done in 
+ * three steps.  First,  generate sin values in floating point:    
+ * <pre>
+ * tableSize = 512;      
+ * for(n = 0; n < (tableSize + 1); n++)    
+ * {    
+ *	sinTable[n]= sin(2*pi*n/tableSize);    
+ * } </pre>    
+ * where pi value is  3.14159265358979    
+ * \par    
+ * Second, convert floating-point to Q15 (Fixed point):
+ *	(sinTable[i] * pow(2, 15))    
+ * \par    
+ * Finally, round to the nearest integer value:
+ * 	sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);    
+ */
+const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1] = {
+   0x0000, 0x0192, 0x0324, 0x04B6, 0x0648, 0x07D9, 0x096B, 0x0AFB, 0x0C8C, 0x0E1C, 0x0FAB, 0x113A, 0x12C8,
+   0x1455, 0x15E2, 0x176E, 0x18F9, 0x1A83, 0x1C0C, 0x1D93, 0x1F1A, 0x209F, 0x2224, 0x23A7, 0x2528, 0x26A8,
+   0x2827, 0x29A4, 0x2B1F, 0x2C99, 0x2E11, 0x2F87, 0x30FC, 0x326E, 0x33DF, 0x354E, 0x36BA, 0x3825, 0x398D,
+   0x3AF3, 0x3C57, 0x3DB8, 0x3F17, 0x4074, 0x41CE, 0x4326, 0x447B, 0x45CD, 0x471D, 0x486A, 0x49B4, 0x4AFB,
+   0x4C40, 0x4D81, 0x4EC0, 0x4FFB, 0x5134, 0x5269, 0x539B, 0x54CA, 0x55F6, 0x571E, 0x5843, 0x5964, 0x5A82,
+   0x5B9D, 0x5CB4, 0x5DC8, 0x5ED7, 0x5FE4, 0x60EC, 0x61F1, 0x62F2, 0x63EF, 0x64E9, 0x65DE, 0x66D0, 0x67BD,
+   0x68A7, 0x698C, 0x6A6E, 0x6B4B, 0x6C24, 0x6CF9, 0x6DCA, 0x6E97, 0x6F5F, 0x7023, 0x70E3, 0x719E, 0x7255,
+   0x7308, 0x73B6, 0x7460, 0x7505, 0x75A6, 0x7642, 0x76D9, 0x776C, 0x77FB, 0x7885, 0x790A, 0x798A, 0x7A06,
+   0x7A7D, 0x7AEF, 0x7B5D, 0x7BC6, 0x7C2A, 0x7C89, 0x7CE4, 0x7D3A, 0x7D8A, 0x7DD6, 0x7E1E, 0x7E60, 0x7E9D,
+   0x7ED6, 0x7F0A, 0x7F38, 0x7F62, 0x7F87, 0x7FA7, 0x7FC2, 0x7FD9, 0x7FEA, 0x7FF6, 0x7FFE, 0x7FFF, 0x7FFE,
+   0x7FF6, 0x7FEA, 0x7FD9, 0x7FC2, 0x7FA7, 0x7F87, 0x7F62, 0x7F38, 0x7F0A, 0x7ED6, 0x7E9D, 0x7E60, 0x7E1E,
+   0x7DD6, 0x7D8A, 0x7D3A, 0x7CE4, 0x7C89, 0x7C2A, 0x7BC6, 0x7B5D, 0x7AEF, 0x7A7D, 0x7A06, 0x798A, 0x790A,
+   0x7885, 0x77FB, 0x776C, 0x76D9, 0x7642, 0x75A6, 0x7505, 0x7460, 0x73B6, 0x7308, 0x7255, 0x719E, 0x70E3,
+   0x7023, 0x6F5F, 0x6E97, 0x6DCA, 0x6CF9, 0x6C24, 0x6B4B, 0x6A6E, 0x698C, 0x68A7, 0x67BD, 0x66D0, 0x65DE,
+   0x64E9, 0x63EF, 0x62F2, 0x61F1, 0x60EC, 0x5FE4, 0x5ED7, 0x5DC8, 0x5CB4, 0x5B9D, 0x5A82, 0x5964, 0x5843,
+   0x571E, 0x55F6, 0x54CA, 0x539B, 0x5269, 0x5134, 0x4FFB, 0x4EC0, 0x4D81, 0x4C40, 0x4AFB, 0x49B4, 0x486A,
+   0x471D, 0x45CD, 0x447B, 0x4326, 0x41CE, 0x4074, 0x3F17, 0x3DB8, 0x3C57, 0x3AF3, 0x398D, 0x3825, 0x36BA,
+   0x354E, 0x33DF, 0x326E, 0x30FC, 0x2F87, 0x2E11, 0x2C99, 0x2B1F, 0x29A4, 0x2827, 0x26A8, 0x2528, 0x23A7,
+   0x2224, 0x209F, 0x1F1A, 0x1D93, 0x1C0C, 0x1A83, 0x18F9, 0x176E, 0x15E2, 0x1455, 0x12C8, 0x113A, 0x0FAB,
+   0x0E1C, 0x0C8C, 0x0AFB, 0x096B, 0x07D9, 0x0648, 0x04B6, 0x0324, 0x0192, 0x0000, 0xFE6E, 0xFCDC, 0xFB4A,
+   0xF9B8, 0xF827, 0xF695, 0xF505, 0xF374, 0xF1E4, 0xF055, 0xEEC6, 0xED38, 0xEBAB, 0xEA1E, 0xE892, 0xE707,
+   0xE57D, 0xE3F4, 0xE26D, 0xE0E6, 0xDF61, 0xDDDC, 0xDC59, 0xDAD8, 0xD958, 0xD7D9, 0xD65C, 0xD4E1, 0xD367,
+   0xD1EF, 0xD079, 0xCF04, 0xCD92, 0xCC21, 0xCAB2, 0xC946, 0xC7DB, 0xC673, 0xC50D, 0xC3A9, 0xC248, 0xC0E9,
+   0xBF8C, 0xBE32, 0xBCDA, 0xBB85, 0xBA33, 0xB8E3, 0xB796, 0xB64C, 0xB505, 0xB3C0, 0xB27F, 0xB140, 0xB005,
+   0xAECC, 0xAD97, 0xAC65, 0xAB36, 0xAA0A, 0xA8E2, 0xA7BD, 0xA69C, 0xA57E, 0xA463, 0xA34C, 0xA238, 0xA129,
+   0xA01C, 0x9F14, 0x9E0F, 0x9D0E, 0x9C11, 0x9B17, 0x9A22, 0x9930, 0x9843, 0x9759, 0x9674, 0x9592, 0x94B5,
+   0x93DC, 0x9307, 0x9236, 0x9169, 0x90A1, 0x8FDD, 0x8F1D, 0x8E62, 0x8DAB, 0x8CF8, 0x8C4A, 0x8BA0, 0x8AFB,
+   0x8A5A, 0x89BE, 0x8927, 0x8894, 0x8805, 0x877B, 0x86F6, 0x8676, 0x85FA, 0x8583, 0x8511, 0x84A3, 0x843A,
+   0x83D6, 0x8377, 0x831C, 0x82C6, 0x8276, 0x822A, 0x81E2, 0x81A0, 0x8163, 0x812A, 0x80F6, 0x80C8, 0x809E,
+   0x8079, 0x8059, 0x803E, 0x8027, 0x8016, 0x800A, 0x8002, 0x8000, 0x8002, 0x800A, 0x8016, 0x8027, 0x803E,
+   0x8059, 0x8079, 0x809E, 0x80C8, 0x80F6, 0x812A, 0x8163, 0x81A0, 0x81E2, 0x822A, 0x8276, 0x82C6, 0x831C,
+   0x8377, 0x83D6, 0x843A, 0x84A3, 0x8511, 0x8583, 0x85FA, 0x8676, 0x86F6, 0x877B, 0x8805, 0x8894, 0x8927,
+   0x89BE, 0x8A5A, 0x8AFB, 0x8BA0, 0x8C4A, 0x8CF8, 0x8DAB, 0x8E62, 0x8F1D, 0x8FDD, 0x90A1, 0x9169, 0x9236,
+   0x9307, 0x93DC, 0x94B5, 0x9592, 0x9674, 0x9759, 0x9843, 0x9930, 0x9A22, 0x9B17, 0x9C11, 0x9D0E, 0x9E0F,
+   0x9F14, 0xA01C, 0xA129, 0xA238, 0xA34C, 0xA463, 0xA57E, 0xA69C, 0xA7BD, 0xA8E2, 0xAA0A, 0xAB36, 0xAC65,
+   0xAD97, 0xAECC, 0xB005, 0xB140, 0xB27F, 0xB3C0, 0xB505, 0xB64C, 0xB796, 0xB8E3, 0xBA33, 0xBB85, 0xBCDA,
+   0xBE32, 0xBF8C, 0xC0E9, 0xC248, 0xC3A9, 0xC50D, 0xC673, 0xC7DB, 0xC946, 0xCAB2, 0xCC21, 0xCD92, 0xCF04,
+   0xD079, 0xD1EF, 0xD367, 0xD4E1, 0xD65C, 0xD7D9, 0xD958, 0xDAD8, 0xDC59, 0xDDDC, 0xDF61, 0xE0E6, 0xE26D,
+   0xE3F4, 0xE57D, 0xE707, 0xE892, 0xEA1E, 0xEBAB, 0xED38, 0xEEC6, 0xF055, 0xF1E4, 0xF374, 0xF505, 0xF695,
+   0xF827, 0xF9B8, 0xFB4A, 0xFCDC, 0xFE6E, 0x0000
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,156 @@
+/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved. 
+* 
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5
+* 
+* Project: 	    CMSIS DSP Library 
+* Title:	    arm_const_structs.c 
+* 
+* Description:	This file has constant structs that are initialized for
+*              user convenience.  For example, some can be given as 
+*              arguments to the arm_cfft_f32() function.
+* 
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_const_structs.h"
+
+//Floating-point structs
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = {
+	16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE__16_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = {
+	32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE__32_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = {
+	64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE__64_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = {
+	128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = {
+	256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = {
+	512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = {
+	1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE1024_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = {
+	2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE2048_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = {
+	4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE4096_TABLE_LENGTH
+};
+
+//Fixed-point structs
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len16 = {
+	16, twiddleCoef_16_q31, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len32 = {
+	32, twiddleCoef_32_q31, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len64 = {
+	64, twiddleCoef_64_q31, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len128 = {
+	128, twiddleCoef_128_q31, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len256 = {
+	256, twiddleCoef_256_q31, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len512 = {
+	512, twiddleCoef_512_q31, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024 = {
+	1024, twiddleCoef_1024_q31, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048 = {
+	2048, twiddleCoef_2048_q31, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096 = {
+	4096, twiddleCoef_4096_q31, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH
+};
+
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len16 = {
+	16, twiddleCoef_16_q15, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len32 = {
+	32, twiddleCoef_32_q15, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len64 = {
+	64, twiddleCoef_64_q15, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len128 = {
+	128, twiddleCoef_128_q15, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len256 = {
+	256, twiddleCoef_256_q15, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len512 = {
+	512, twiddleCoef_512_q15, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024 = {
+	1024, twiddleCoef_1024_q15, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048 = {
+	2048, twiddleCoef_2048_q15, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096 = {
+	4096, twiddleCoef_4096_q15, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,182 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_conj_f32.c    
+*    
+* Description:	Floating-point complex conjugate.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupCmplxMath        
+ */
+
+/**        
+ * @defgroup cmplx_conj Complex Conjugate        
+ *        
+ * Conjugates the elements of a complex data vector.        
+ *       
+ * The <code>pSrc</code> points to the source data and        
+ * <code>pDst</code> points to the where the result should be written.        
+ * <code>numSamples</code> specifies the number of complex samples        
+ * and the data in each array is stored in an interleaved fashion        
+ * (real, imag, real, imag, ...).        
+ * Each array has a total of <code>2*numSamples</code> values.        
+ * The underlying algorithm is used:        
+ *        
+ * <pre>        
+ * for(n=0; n<numSamples; n++) {        
+ *     pDst[(2*n)+0)] = pSrc[(2*n)+0];     // real part        
+ *     pDst[(2*n)+1)] = -pSrc[(2*n)+1];    // imag part        
+ * }        
+ * </pre>        
+ *        
+ * There are separate functions for floating-point, Q15, and Q31 data types.        
+ */
+
+/**        
+ * @addtogroup cmplx_conj        
+ * @{        
+ */
+
+/**        
+ * @brief  Floating-point complex conjugate.        
+ * @param  *pSrc points to the input vector        
+ * @param  *pDst points to the output vector        
+ * @param  numSamples number of complex samples in each vector        
+ * @return none.        
+ */
+
+void arm_cmplx_conj_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t inR1, inR2, inR3, inR4;
+  float32_t inI1, inI2, inI3, inI4;
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    /* read real input samples */
+    inR1 = pSrc[0];
+    /* store real samples to destination */
+    pDst[0] = inR1;
+    inR2 = pSrc[2];
+    pDst[2] = inR2;
+    inR3 = pSrc[4];
+    pDst[4] = inR3;
+    inR4 = pSrc[6];
+    pDst[6] = inR4;
+
+    /* read imaginary input samples */
+    inI1 = pSrc[1];
+    inI2 = pSrc[3];
+
+    /* conjugate input */
+    inI1 = -inI1;
+
+    /* read imaginary input samples */
+    inI3 = pSrc[5];
+
+    /* conjugate input */
+    inI2 = -inI2;
+
+    /* read imaginary input samples */
+    inI4 = pSrc[7];
+
+    /* conjugate input */
+    inI3 = -inI3;
+
+    /* store imaginary samples to destination */
+    pDst[1] = inI1;
+    pDst[3] = inI2;
+
+    /* conjugate input */
+    inI4 = -inI4;
+
+    /* store imaginary samples to destination */
+    pDst[5] = inI3;
+
+    /* increment source pointer by 8 to process next sampels */
+    pSrc += 8u;
+
+    /* store imaginary sample to destination */
+    pDst[7] = inI4;
+
+    /* increment destination pointer by 8 to store next samples */
+    pDst += 8u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* realOut + j (imagOut) = realIn + j (-1) imagIn */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of cmplx_conj group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,161 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. October 2015
+* $Revision: 	V.1.4.5 a
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_conj_q15.c    
+*    
+* Description:	Q15 complex conjugate.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup cmplx_conj    
+ * @{    
+ */
+
+/**    
+ * @brief  Q15 complex conjugate.    
+ * @param  *pSrc points to the input vector    
+ * @param  *pDst points to the output vector    
+ * @param  numSamples number of complex samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.    
+ */
+
+void arm_cmplx_conj_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in1, in2, in3, in4;
+  q31_t zero = 0;
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    in1 = *__SIMD32(pSrc)++;
+    in2 = *__SIMD32(pSrc)++;
+    in3 = *__SIMD32(pSrc)++;
+    in4 = *__SIMD32(pSrc)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    in1 = __QASX(zero, in1);
+    in2 = __QASX(zero, in2);
+    in3 = __QASX(zero, in3);
+    in4 = __QASX(zero, in4);
+
+#else
+
+    in1 = __QSAX(zero, in1);
+    in2 = __QSAX(zero, in2);
+    in3 = __QSAX(zero, in3);
+    in4 = __QSAX(zero, in4);
+
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
+
+    in1 = ((uint32_t) in1 >> 16) | ((uint32_t) in1 << 16);
+    in2 = ((uint32_t) in2 >> 16) | ((uint32_t) in2 << 16);
+    in3 = ((uint32_t) in3 >> 16) | ((uint32_t) in3 << 16);
+    in4 = ((uint32_t) in4 >> 16) | ((uint32_t) in4 << 16);
+
+    *__SIMD32(pDst)++ = in1;
+    *__SIMD32(pDst)++ = in2;
+    *__SIMD32(pDst)++ = in3;
+    *__SIMD32(pDst)++ = in4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = __SSAT(-*pSrc++, 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  q15_t in;
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut + j (imagOut) = realIn+ j (-1) imagIn */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == (q15_t) 0x8000) ? 0x7fff : -in;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of cmplx_conj group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,180 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_conj_q31.c    
+*    
+* Description:	Q31 complex conjugate.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupCmplxMath        
+ */
+
+/**        
+ * @addtogroup cmplx_conj        
+ * @{        
+ */
+
+/**        
+ * @brief  Q31 complex conjugate.        
+ * @param  *pSrc points to the input vector        
+ * @param  *pDst points to the output vector        
+ * @param  numSamples number of complex samples in each vector        
+ * @return none.        
+ *        
+ * <b>Scaling and Overflow Behavior:</b>        
+ * \par        
+ * The function uses saturating arithmetic.        
+ * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.        
+ */
+
+void arm_cmplx_conj_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in;                                      /* Input value */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inR1, inR2, inR3, inR4;                  /* Temporary real variables */
+  q31_t inI1, inI2, inI3, inI4;                  /* Temporary imaginary variables */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    /* Saturated to 0x7fffffff if the input is -1(0x80000000) */
+    /* read real input sample */
+    inR1 = pSrc[0];
+    /* store real input sample */
+    pDst[0] = inR1;
+
+    /* read imaginary input sample */
+    inI1 = pSrc[1];
+
+    /* read real input sample */
+    inR2 = pSrc[2];
+    /* store real input sample */
+    pDst[2] = inR2;
+
+    /* read imaginary input sample */
+    inI2 = pSrc[3];
+
+    /* negate imaginary input sample */
+    inI1 = __QSUB(0, inI1);
+
+    /* read real input sample */
+    inR3 = pSrc[4];
+    /* store real input sample */
+    pDst[4] = inR3;
+
+    /* read imaginary input sample */
+    inI3 = pSrc[5];
+
+    /* negate imaginary input sample */
+    inI2 = __QSUB(0, inI2);
+
+    /* read real input sample */
+    inR4 = pSrc[6];
+    /* store real input sample */
+    pDst[6] = inR4;
+
+    /* negate imaginary input sample */
+    inI3 = __QSUB(0, inI3);
+
+    /* store imaginary input sample */
+    inI4 = pSrc[7];
+
+    /* store imaginary input samples */
+    pDst[1] = inI1;
+
+    /* negate imaginary input sample */
+    inI4 = __QSUB(0, inI4);
+
+    /* store imaginary input samples */
+    pDst[3] = inI2;
+
+    /* increment source pointer by 8 to proecess next samples */
+    pSrc += 8u;
+
+    /* store imaginary input samples */
+    pDst[5] = inI3;
+    pDst[7] = inI4;
+
+    /* increment destination pointer by 8 to process next samples */
+    pDst += 8u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    /* Saturated to 0x7fffffff if the input is -1(0x80000000) */
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of cmplx_conj group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,203 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_dot_prod_f32.c    
+*    
+* Description:	Floating-point complex dot product    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @defgroup cmplx_dot_prod Complex Dot Product    
+ *    
+ * Computes the dot product of two complex vectors.    
+ * The vectors are multiplied element-by-element and then summed.    
+ *   
+ * The <code>pSrcA</code> points to the first complex input vector and    
+ * <code>pSrcB</code> points to the second complex input vector.    
+ * <code>numSamples</code> specifies the number of complex samples    
+ * and the data in each array is stored in an interleaved fashion    
+ * (real, imag, real, imag, ...).    
+ * Each array has a total of <code>2*numSamples</code> values.    
+ *    
+ * The underlying algorithm is used:    
+ * <pre>    
+ * realResult=0;    
+ * imagResult=0;    
+ * for(n=0; n<numSamples; n++) {    
+ *     realResult += pSrcA[(2*n)+0]*pSrcB[(2*n)+0] - pSrcA[(2*n)+1]*pSrcB[(2*n)+1];    
+ *     imagResult += pSrcA[(2*n)+0]*pSrcB[(2*n)+1] + pSrcA[(2*n)+1]*pSrcB[(2*n)+0];    
+ * }    
+ * </pre>    
+ *    
+ * There are separate functions for floating-point, Q15, and Q31 data types.    
+ */
+
+/**    
+ * @addtogroup cmplx_dot_prod    
+ * @{    
+ */
+
+/**    
+ * @brief  Floating-point complex dot product    
+ * @param  *pSrcA points to the first input vector    
+ * @param  *pSrcB points to the second input vector    
+ * @param  numSamples number of complex samples in each vector    
+ * @param  *realResult real part of the result returned here    
+ * @param  *imagResult imaginary part of the result returned here    
+ * @return none.    
+ */
+
+void arm_cmplx_dot_prod_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  uint32_t numSamples,
+  float32_t * realResult,
+  float32_t * imagResult)
+{
+  float32_t real_sum = 0.0f, imag_sum = 0.0f;    /* Temporary result storage */
+  float32_t a0,b0,c0,d0;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+    
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++; 
+  
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+      
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+    
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++; 
+  
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples & 0x3u;
+
+  while(blkCnt > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      /* Decrement the loop counter */
+      numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  /* Store the real and imaginary results in the destination buffers */
+  *realResult = real_sum;
+  *imagResult = imag_sum;
+}
+
+/**    
+ * @} end of cmplx_dot_prod group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,189 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_dot_prod_q15.c    
+*    
+* Description:	Processing function for the Q15 Complex Dot product    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup cmplx_dot_prod    
+ * @{    
+ */
+
+/**    
+ * @brief  Q15 complex dot product    
+ * @param  *pSrcA points to the first input vector    
+ * @param  *pSrcB points to the second input vector    
+ * @param  numSamples number of complex samples in each vector    
+ * @param  *realResult real part of the result returned here    
+ * @param  *imagResult imaginary part of the result returned here    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The intermediate 1.15 by 1.15 multiplications are performed with full precision and yield a 2.30 result.    
+ * These are accumulated in a 64-bit accumulator with 34.30 precision.    
+ * As a final step, the accumulators are converted to 8.24 format.    
+ * The return results <code>realResult</code> and <code>imagResult</code> are in 8.24 format.    
+ */
+
+void arm_cmplx_dot_prod_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  uint32_t numSamples,
+  q31_t * realResult,
+  q31_t * imagResult)
+{
+  q63_t real_sum = 0, imag_sum = 0;              /* Temporary result storage */
+  q15_t a0,b0,c0,d0;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+      
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+      
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+      
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+
+      /* Decrement the loop counter */
+      numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  /* Store the real and imaginary results in 8.24 format  */
+  /* Convert real data in 34.30 to 8.24 by 6 right shifts */
+  *realResult = (q31_t) (real_sum >> 6);
+  /* Convert imaginary data in 34.30 to 8.24 by 6 right shifts */
+  *imagResult = (q31_t) (imag_sum >> 6);
+}
+
+/**    
+ * @} end of cmplx_dot_prod group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,187 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_dot_prod_q31.c    
+*    
+* Description:	Q31 complex dot product    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup cmplx_dot_prod    
+ * @{    
+ */
+
+/**    
+ * @brief  Q31 complex dot product    
+ * @param  *pSrcA points to the first input vector    
+ * @param  *pSrcB points to the second input vector    
+ * @param  numSamples number of complex samples in each vector    
+ * @param  *realResult real part of the result returned here    
+ * @param  *imagResult imaginary part of the result returned here    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The intermediate 1.31 by 1.31 multiplications are performed with 64-bit precision and then shifted to 16.48 format.    
+ * The internal real and imaginary accumulators are in 16.48 format and provide 15 guard bits.    
+ * Additions are nonsaturating and no overflow will occur as long as <code>numSamples</code> is less than 32768.    
+ * The return results <code>realResult</code> and <code>imagResult</code> are in 16.48 format.    
+ * Input down scaling is not required.    
+ */
+
+void arm_cmplx_dot_prod_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  uint32_t numSamples,
+  q63_t * realResult,
+  q63_t * imagResult)
+{
+  q63_t real_sum = 0, imag_sum = 0;              /* Temporary result storage */
+  q31_t a0,b0,c0,d0;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+      
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+      
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+      
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+  /* If the numSamples  is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;  
+  
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      /* Decrement the loop counter */
+      numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  /* Store the real and imaginary results in 16.48 format  */
+  *realResult = real_sum;
+  *imagResult = imag_sum;
+}
+
+/**    
+ * @} end of cmplx_dot_prod group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,165 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_mag_f32.c    
+*    
+* Description:	Floating-point complex magnitude.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @defgroup cmplx_mag Complex Magnitude    
+ *    
+ * Computes the magnitude of the elements of a complex data vector.    
+ *   
+ * The <code>pSrc</code> points to the source data and    
+ * <code>pDst</code> points to the where the result should be written.    
+ * <code>numSamples</code> specifies the number of complex samples    
+ * in the input array and the data is stored in an interleaved fashion    
+ * (real, imag, real, imag, ...).    
+ * The input array has a total of <code>2*numSamples</code> values;    
+ * the output array has a total of <code>numSamples</code> values.    
+ * The underlying algorithm is used:    
+ *    
+ * <pre>    
+ * for(n=0; n<numSamples; n++) {    
+ *     pDst[n] = sqrt(pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2);    
+ * }    
+ * </pre>    
+ *    
+ * There are separate functions for floating-point, Q15, and Q31 data types.    
+ */
+
+/**    
+ * @addtogroup cmplx_mag    
+ * @{    
+ */
+/**    
+ * @brief Floating-point complex magnitude.    
+ * @param[in]       *pSrc points to complex input buffer    
+ * @param[out]      *pDst points to real output buffer    
+ * @param[in]       numSamples number of complex samples in the input vector    
+ * @return none.    
+ *    
+ */
+
+
+void arm_cmplx_mag_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t realIn, imagIn;                      /* Temporary variables to hold input values */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* out = sqrt((real * real) + (imag * imag)) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of cmplx_mag group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,153 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_mag_q15.c    
+*    
+* Description:	Q15 complex magnitude.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup cmplx_mag    
+ * @{    
+ */
+
+
+/**    
+ * @brief  Q15 complex magnitude    
+ * @param  *pSrc points to the complex input vector    
+ * @param  *pDst points to the real output vector    
+ * @param  numSamples number of complex samples in the input vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 2.14 format.    
+ */
+
+void arm_cmplx_mag_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in1, in2, in3, in4;
+  q31_t acc2, acc3;
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    in1 = *__SIMD32(pSrc)++;
+    in2 = *__SIMD32(pSrc)++;
+    in3 = *__SIMD32(pSrc)++;
+    in4 = *__SIMD32(pSrc)++;
+
+    acc0 = __SMUAD(in1, in1);
+    acc1 = __SMUAD(in2, in2);
+    acc2 = __SMUAD(in3, in3);
+    acc3 = __SMUAD(in4, in4);
+
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) ((acc0) >> 17), pDst++);
+    arm_sqrt_q15((q15_t) ((acc1) >> 17), pDst++);
+    arm_sqrt_q15((q15_t) ((acc2) >> 17), pDst++);
+    arm_sqrt_q15((q15_t) ((acc3) >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    in1 = *__SIMD32(pSrc)++;
+    acc0 = __SMUAD(in1, in1);
+
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (acc0 >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q15_t real, imag;                              /* Temporary variables to hold input values */
+
+  while(numSamples > 0u)
+  {
+    /* out = sqrt(real * real + imag * imag) */
+    real = *pSrc++;
+    imag = *pSrc++;
+
+    acc0 = (real * real);
+    acc1 = (imag * imag);
+
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of cmplx_mag group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,185 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_mag_q31.c    
+*    
+* Description:	Q31 complex magnitude    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupCmplxMath        
+ */
+
+/**        
+ * @addtogroup cmplx_mag        
+ * @{        
+ */
+
+/**        
+ * @brief  Q31 complex magnitude        
+ * @param  *pSrc points to the complex input vector        
+ * @param  *pDst points to the real output vector        
+ * @param  numSamples number of complex samples in the input vector        
+ * @return none.        
+ *        
+ * <b>Scaling and Overflow Behavior:</b>        
+ * \par        
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 2.30 format.        
+ * Input down scaling is not required.        
+ */
+
+void arm_cmplx_mag_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t real, imag;                              /* Temporary variables to hold input values */
+  q31_t acc0, acc1;                              /* Accumulators */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t real1, real2, imag1, imag2;              /* Temporary variables to hold input values */
+  q31_t out1, out2, out3, out4;                  /* Accumulators */
+  q63_t mul1, mul2, mul3, mul4;                  /* Temporary variables */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* read complex input from source buffer */
+    real1 = pSrc[0];
+    imag1 = pSrc[1];
+    real2 = pSrc[2];
+    imag2 = pSrc[3];
+
+    /* calculate power of input values */
+    mul1 = (q63_t) real1 *real1;
+    mul2 = (q63_t) imag1 *imag1;
+    mul3 = (q63_t) real2 *real2;
+    mul4 = (q63_t) imag2 *imag2;
+
+    /* get the result to 3.29 format */
+    out1 = (q31_t) (mul1 >> 33);
+    out2 = (q31_t) (mul2 >> 33);
+    out3 = (q31_t) (mul3 >> 33);
+    out4 = (q31_t) (mul4 >> 33);
+
+    /* add real and imaginary accumulators */
+    out1 = out1 + out2;
+    out3 = out3 + out4;
+
+    /* read complex input from source buffer */
+    real1 = pSrc[4];
+    imag1 = pSrc[5];
+    real2 = pSrc[6];
+    imag2 = pSrc[7];
+
+    /* calculate square root */
+    arm_sqrt_q31(out1, &pDst[0]);
+
+    /* calculate power of input values */
+    mul1 = (q63_t) real1 *real1;
+
+    /* calculate square root */
+    arm_sqrt_q31(out3, &pDst[1]);
+
+    /* calculate power of input values */
+    mul2 = (q63_t) imag1 *imag1;
+    mul3 = (q63_t) real2 *real2;
+    mul4 = (q63_t) imag2 *imag2;
+
+    /* get the result to 3.29 format */
+    out1 = (q31_t) (mul1 >> 33);
+    out2 = (q31_t) (mul2 >> 33);
+    out3 = (q31_t) (mul3 >> 33);
+    out4 = (q31_t) (mul4 >> 33);
+
+    /* add real and imaginary accumulators */
+    out1 = out1 + out2;
+    out3 = out3 + out4;
+
+    /* calculate square root */
+    arm_sqrt_q31(out1, &pDst[2]);
+
+    /* increment destination by 8 to process next samples */
+    pSrc += 8u;
+
+    /* calculate square root */
+    arm_sqrt_q31(out3, &pDst[3]);
+
+    /* increment destination by 4 to process next samples */
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 2.30 format in the destination buffer. */
+    arm_sqrt_q31(acc0 + acc1, pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of cmplx_mag group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,215 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_mag_squared_f32.c    
+*    
+* Description:	Floating-point complex magnitude squared.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupCmplxMath        
+ */
+
+/**        
+ * @defgroup cmplx_mag_squared Complex Magnitude Squared        
+ *        
+ * Computes the magnitude squared of the elements of a complex data vector.        
+ *       
+ * The <code>pSrc</code> points to the source data and        
+ * <code>pDst</code> points to the where the result should be written.        
+ * <code>numSamples</code> specifies the number of complex samples        
+ * in the input array and the data is stored in an interleaved fashion        
+ * (real, imag, real, imag, ...).        
+ * The input array has a total of <code>2*numSamples</code> values;        
+ * the output array has a total of <code>numSamples</code> values.        
+ *        
+ * The underlying algorithm is used:        
+ *        
+ * <pre>        
+ * for(n=0; n<numSamples; n++) {        
+ *     pDst[n] = pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2;        
+ * }        
+ * </pre>        
+ *        
+ * There are separate functions for floating-point, Q15, and Q31 data types.        
+ */
+
+/**        
+ * @addtogroup cmplx_mag_squared        
+ * @{        
+ */
+
+
+/**        
+ * @brief  Floating-point complex magnitude squared        
+ * @param[in]  *pSrc points to the complex input vector        
+ * @param[out]  *pDst points to the real output vector        
+ * @param[in]  numSamples number of complex samples in the input vector        
+ * @return none.        
+ */
+
+void arm_cmplx_mag_squared_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t real, imag;                          /* Temporary variables to store real and imaginary values */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+  float32_t real1, real2, real3, real4;          /* Temporary variables to hold real values */
+  float32_t imag1, imag2, imag3, imag4;          /* Temporary variables to hold imaginary values */
+  float32_t mul1, mul2, mul3, mul4;              /* Temporary variables */
+  float32_t mul5, mul6, mul7, mul8;              /* Temporary variables */
+  float32_t out1, out2, out3, out4;              /* Temporary variables to hold output values */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    /* read real input sample from source buffer */
+    real1 = pSrc[0];
+    /* read imaginary input sample from source buffer */
+    imag1 = pSrc[1];
+
+    /* calculate power of real value */
+    mul1 = real1 * real1;
+
+    /* read real input sample from source buffer */
+    real2 = pSrc[2];
+
+    /* calculate power of imaginary value */
+    mul2 = imag1 * imag1;
+
+    /* read imaginary input sample from source buffer */
+    imag2 = pSrc[3];
+
+    /* calculate power of real value */
+    mul3 = real2 * real2;
+
+    /* read real input sample from source buffer */
+    real3 = pSrc[4];
+
+    /* calculate power of imaginary value */
+    mul4 = imag2 * imag2;
+
+    /* read imaginary input sample from source buffer */
+    imag3 = pSrc[5];
+
+    /* calculate power of real value */
+    mul5 = real3 * real3;
+    /* calculate power of imaginary value */
+    mul6 = imag3 * imag3;
+
+    /* read real input sample from source buffer */
+    real4 = pSrc[6];
+
+    /* accumulate real and imaginary powers */
+    out1 = mul1 + mul2;
+
+    /* read imaginary input sample from source buffer */
+    imag4 = pSrc[7];
+
+    /* accumulate real and imaginary powers */
+    out2 = mul3 + mul4;
+
+    /* calculate power of real value */
+    mul7 = real4 * real4;
+    /* calculate power of imaginary value */
+    mul8 = imag4 * imag4;
+
+    /* store output to destination */
+    pDst[0] = out1;
+
+    /* accumulate real and imaginary powers */
+    out3 = mul5 + mul6;
+
+    /* store output to destination */
+    pDst[1] = out2;
+
+    /* accumulate real and imaginary powers */
+    out4 = mul7 + mul8;
+
+    /* store output to destination */
+    pDst[2] = out3;
+
+    /* increment destination pointer by 8 to process next samples */
+    pSrc += 8u;
+
+    /* store output to destination */
+    pDst[3] = out4;
+
+    /* increment destination pointer by 4 to process next samples */
+    pDst += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+
+    /* out = (real * real) + (imag * imag) */
+    /* store the result in the destination buffer. */
+    *pDst++ = (real * real) + (imag * imag);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of cmplx_mag_squared group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,148 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_mag_squared_q15.c    
+*    
+* Description:	Q15 complex magnitude squared.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup cmplx_mag_squared    
+ * @{    
+ */
+
+/**    
+ * @brief  Q15 complex magnitude squared    
+ * @param  *pSrc points to the complex input vector    
+ * @param  *pDst points to the real output vector    
+ * @param  numSamples number of complex samples in the input vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.    
+ */
+
+void arm_cmplx_mag_squared_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in1, in2, in3, in4;
+  q31_t acc2, acc3;
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    in1 = *__SIMD32(pSrc)++;
+    in2 = *__SIMD32(pSrc)++;
+    in3 = *__SIMD32(pSrc)++;
+    in4 = *__SIMD32(pSrc)++;
+
+    acc0 = __SMUAD(in1, in1);
+    acc1 = __SMUAD(in2, in2);
+    acc2 = __SMUAD(in3, in3);
+    acc3 = __SMUAD(in4, in4);
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (acc0 >> 17);
+    *pDst++ = (q15_t) (acc1 >> 17);
+    *pDst++ = (q15_t) (acc2 >> 17);
+    *pDst++ = (q15_t) (acc3 >> 17);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    in1 = *__SIMD32(pSrc)++;
+    acc0 = __SMUAD(in1, in1);
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (acc0 >> 17);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q15_t real, imag;                              /* Temporary variables to store real and imaginary values */
+
+  while(numSamples > 0u)
+  {
+    /* out = ((real * real) + (imag * imag)) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (real * real);
+    acc1 = (imag * imag);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of cmplx_mag_squared group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,161 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_cmplx_mag_squared_q31.c    
+*    
+* Description:	Q31 complex magnitude squared.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup cmplx_mag_squared    
+ * @{    
+ */
+
+
+/**    
+ * @brief  Q31 complex magnitude squared    
+ * @param  *pSrc points to the complex input vector    
+ * @param  *pDst points to the real output vector    
+ * @param  numSamples number of complex samples in the input vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.    
+ * Input down scaling is not required.    
+ */
+
+void arm_cmplx_mag_squared_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t real, imag;                              /* Temporary variables to store real and imaginary values */
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* out = ((real * real) + (imag * imag)) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of cmplx_mag_squared group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,207 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cmplx_mult_cmplx_f32.c    
+*    
+* Description:	Floating-point complex-by-complex multiplication    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupCmplxMath        
+ */
+
+/**        
+ * @defgroup CmplxByCmplxMult Complex-by-Complex Multiplication        
+ *        
+ * Multiplies a complex vector by another complex vector and generates a complex result.        
+ * The data in the complex arrays is stored in an interleaved fashion        
+ * (real, imag, real, imag, ...).        
+ * The parameter <code>numSamples</code> represents the number of complex        
+ * samples processed.  The complex arrays have a total of <code>2*numSamples</code>        
+ * real values.        
+ *        
+ * The underlying algorithm is used:        
+ *        
+ * <pre>        
+ * for(n=0; n<numSamples; n++) {        
+ *     pDst[(2*n)+0] = pSrcA[(2*n)+0] * pSrcB[(2*n)+0] - pSrcA[(2*n)+1] * pSrcB[(2*n)+1];        
+ *     pDst[(2*n)+1] = pSrcA[(2*n)+0] * pSrcB[(2*n)+1] + pSrcA[(2*n)+1] * pSrcB[(2*n)+0];        
+ * }        
+ * </pre>        
+ *        
+ * There are separate functions for floating-point, Q15, and Q31 data types.        
+ */
+
+/**        
+ * @addtogroup CmplxByCmplxMult        
+ * @{        
+ */
+
+
+/**        
+ * @brief  Floating-point complex-by-complex multiplication        
+ * @param[in]  *pSrcA points to the first input vector        
+ * @param[in]  *pSrcB points to the second input vector        
+ * @param[out]  *pDst  points to the output vector        
+ * @param[in]  numSamples number of complex samples in each vector        
+ * @return none.        
+ */
+
+void arm_cmplx_mult_cmplx_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t a1, b1, c1, d1;                      /* Temporary variables to store real and imaginary values */
+  uint32_t blkCnt;                               /* loop counters */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t a2, b2, c2, d2;                      /* Temporary variables to store real and imaginary values */
+  float32_t acc1, acc2, acc3, acc4;
+
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a1 = *pSrcA;                /* A[2 * i] */
+    c1 = *pSrcB;                /* B[2 * i] */
+
+    b1 = *(pSrcA + 1);          /* A[2 * i + 1] */
+    acc1 = a1 * c1;             /* acc1 = A[2 * i] * B[2 * i] */
+
+    a2 = *(pSrcA + 2);          /* A[2 * i + 2] */
+    acc2 = (b1 * c1);           /* acc2 = A[2 * i + 1] * B[2 * i] */
+
+    d1 = *(pSrcB + 1);          /* B[2 * i + 1] */
+    c2 = *(pSrcB + 2);          /* B[2 * i + 2] */
+    acc1 -= b1 * d1;            /* acc1 =      A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1] */
+
+    d2 = *(pSrcB + 3);          /* B[2 * i + 3] */
+    acc3 = a2 * c2;             /* acc3 =       A[2 * i + 2] * B[2 * i + 2] */
+
+    b2 = *(pSrcA + 3);          /* A[2 * i + 3] */
+    acc2 += (a1 * d1);          /* acc2 =      A[2 * i + 1] * B[2 * i] + A[2 * i] * B[2 * i + 1] */
+
+    a1 = *(pSrcA + 4);          /* A[2 * i + 4] */
+    acc4 = (a2 * d2);           /* acc4 =   A[2 * i + 2] * B[2 * i + 3] */
+
+    c1 = *(pSrcB + 4);          /* B[2 * i + 4] */
+    acc3 -= (b2 * d2);          /* acc3 =       A[2 * i + 2] * B[2 * i + 2] - A[2 * i + 3] * B[2 * i + 3] */
+    *pDst = acc1;               /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1] */
+
+    b1 = *(pSrcA + 5);          /* A[2 * i + 5] */
+    acc4 += b2 * c2;            /* acc4 =   A[2 * i + 2] * B[2 * i + 3] + A[2 * i + 3] * B[2 * i + 2] */
+
+    *(pDst + 1) = acc2;         /* C[2 * i + 1] = A[2 * i + 1] * B[2 * i] + A[2 * i] * B[2 * i + 1]  */
+    acc1 = (a1 * c1);
+
+    d1 = *(pSrcB + 5);
+    acc2 = (b1 * c1);
+
+    *(pDst + 2) = acc3;
+    *(pDst + 3) = acc4;
+
+    a2 = *(pSrcA + 6);
+    acc1 -= (b1 * d1);
+
+    c2 = *(pSrcB + 6);
+    acc2 += (a1 * d1);
+
+    b2 = *(pSrcA + 7);
+    acc3 = (a2 * c2);
+
+    d2 = *(pSrcB + 7);
+    acc4 = (b2 * c2);
+
+    *(pDst + 4) = acc1;
+    pSrcA += 8u;
+
+    acc3 -= (b2 * d2);
+    acc4 += (a2 * d2);
+
+    *(pDst + 5) = acc2;
+    pSrcB += 8u;
+
+    *(pDst + 6) = acc3;
+    *(pDst + 7) = acc4;
+
+    pDst += 8u;
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a1 = *pSrcA++;
+    b1 = *pSrcA++;
+    c1 = *pSrcB++;
+    d1 = *pSrcB++;
+
+    /* store the result in the destination buffer. */
+    *pDst++ = (a1 * c1) - (b1 * d1);
+    *pDst++ = (a1 * d1) + (b1 * c1);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of CmplxByCmplxMult group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,193 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cmplx_mult_cmplx_q15.c    
+*    
+* Description:	Q15 complex-by-complex multiplication    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup CmplxByCmplxMult    
+ * @{    
+ */
+
+/**    
+ * @brief  Q15 complex-by-complex multiplication    
+ * @param[in]  *pSrcA points to the first input vector    
+ * @param[in]  *pSrcB points to the second input vector    
+ * @param[out]  *pDst  points to the output vector    
+ * @param[in]  numSamples number of complex samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.    
+ */
+
+void arm_cmplx_mult_cmplx_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q15_t a, b, c, d;                              /* Temporary variables to store real and imaginary values */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of CmplxByCmplxMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,326 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cmplx_mult_cmplx_q31.c    
+*    
+* Description:	Q31 complex-by-complex multiplication    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup CmplxByCmplxMult    
+ * @{    
+ */
+
+
+/**    
+ * @brief  Q31 complex-by-complex multiplication    
+ * @param[in]  *pSrcA points to the first input vector    
+ * @param[in]  *pSrcB points to the second input vector    
+ * @param[out]  *pDst  points to the output vector    
+ * @param[in]  numSamples number of complex samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.    
+ * Input down scaling is not required.    
+ */
+
+void arm_cmplx_mult_cmplx_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t a, b, c, d;                              /* Temporary variables to store real and imaginary values */
+  uint32_t blkCnt;                               /* loop counters */
+  q31_t mul1, mul2, mul3, mul4;
+  q31_t out1, out2;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 1u;
+
+  /* First part of the processing with loop unrolling.  Compute 2 outputs at a time.     
+   ** a second loop below computes the remaining 1 sample. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 2, compute any remaining output samples here.     
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x2u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of CmplxByCmplxMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,225 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cmplx_mult_real_f32.c    
+*    
+* Description:	Floating-point complex by real multiplication    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupCmplxMath        
+ */
+
+/**        
+ * @defgroup CmplxByRealMult Complex-by-Real Multiplication        
+ *        
+ * Multiplies a complex vector by a real vector and generates a complex result.        
+ * The data in the complex arrays is stored in an interleaved fashion        
+ * (real, imag, real, imag, ...).        
+ * The parameter <code>numSamples</code> represents the number of complex        
+ * samples processed.  The complex arrays have a total of <code>2*numSamples</code>        
+ * real values while the real array has a total of <code>numSamples</code>        
+ * real values.        
+ *        
+ * The underlying algorithm is used:        
+ *        
+ * <pre>        
+ * for(n=0; n<numSamples; n++) {        
+ *     pCmplxDst[(2*n)+0] = pSrcCmplx[(2*n)+0] * pSrcReal[n];        
+ *     pCmplxDst[(2*n)+1] = pSrcCmplx[(2*n)+1] * pSrcReal[n];        
+ * }        
+ * </pre>        
+ *        
+ * There are separate functions for floating-point, Q15, and Q31 data types.        
+ */
+
+/**        
+ * @addtogroup CmplxByRealMult        
+ * @{        
+ */
+
+
+/**        
+ * @brief  Floating-point complex-by-real multiplication        
+ * @param[in]  *pSrcCmplx points to the complex input vector        
+ * @param[in]  *pSrcReal points to the real input vector        
+ * @param[out]  *pCmplxDst points to the complex output vector        
+ * @param[in]  numSamples number of samples in each vector        
+ * @return none.        
+ */
+
+void arm_cmplx_mult_real_f32(
+  float32_t * pSrcCmplx,
+  float32_t * pSrcReal,
+  float32_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  float32_t in;                                  /* Temporary variable to store input value */
+  uint32_t blkCnt;                               /* loop counters */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t inA1, inA2, inA3, inA4;              /* Temporary variables to hold input data */
+  float32_t inA5, inA6, inA7, inA8;              /* Temporary variables to hold input data */
+  float32_t inB1, inB2, inB3, inB4;              /* Temporary variables to hold input data */
+  float32_t out1, out2, out3, out4;              /* Temporary variables to hold output data */
+  float32_t out5, out6, out7, out8;              /* Temporary variables to hold output data */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    /* read input from complex input buffer */
+    inA1 = pSrcCmplx[0];
+    inA2 = pSrcCmplx[1];
+    /* read input from real input buffer */
+    inB1 = pSrcReal[0];
+
+    /* read input from complex input buffer */
+    inA3 = pSrcCmplx[2];
+
+    /* multiply complex buffer real input with real buffer input */
+    out1 = inA1 * inB1;
+
+    /* read input from complex input buffer */
+    inA4 = pSrcCmplx[3];
+
+    /* multiply complex buffer imaginary input with real buffer input */
+    out2 = inA2 * inB1;
+
+    /* read input from real input buffer */
+    inB2 = pSrcReal[1];
+    /* read input from complex input buffer */
+    inA5 = pSrcCmplx[4];
+
+    /* multiply complex buffer real input with real buffer input */
+    out3 = inA3 * inB2;
+
+    /* read input from complex input buffer */
+    inA6 = pSrcCmplx[5];
+    /* read input from real input buffer */
+    inB3 = pSrcReal[2];
+
+    /* multiply complex buffer imaginary input with real buffer input */
+    out4 = inA4 * inB2;
+
+    /* read input from complex input buffer */
+    inA7 = pSrcCmplx[6];
+
+    /* multiply complex buffer real input with real buffer input */
+    out5 = inA5 * inB3;
+
+    /* read input from complex input buffer */
+    inA8 = pSrcCmplx[7];
+
+    /* multiply complex buffer imaginary input with real buffer input */
+    out6 = inA6 * inB3;
+
+    /* read input from real input buffer */
+    inB4 = pSrcReal[3];
+
+    /* store result to destination bufer */
+    pCmplxDst[0] = out1;
+
+    /* multiply complex buffer real input with real buffer input */
+    out7 = inA7 * inB4;
+
+    /* store result to destination bufer */
+    pCmplxDst[1] = out2;
+
+    /* multiply complex buffer imaginary input with real buffer input */
+    out8 = inA8 * inB4;
+
+    /* store result to destination bufer */
+    pCmplxDst[2] = out3;
+    pCmplxDst[3] = out4;
+    pCmplxDst[4] = out5;
+
+    /* incremnet complex input buffer by 8 to process next samples */
+    pSrcCmplx += 8u;
+
+    /* store result to destination bufer */
+    pCmplxDst[5] = out6;
+
+    /* increment real input buffer by 4 to process next samples */
+    pSrcReal += 4u;
+
+    /* store result to destination bufer */
+    pCmplxDst[6] = out7;
+    pCmplxDst[7] = out8;
+
+    /* increment destination buffer by 8 to process next sampels */
+    pCmplxDst += 8u;
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+}
+
+/**        
+ * @} end of CmplxByRealMult group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,203 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. October 2015
+* $Revision: 	V.1.4.5 a
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cmplx_mult_real_q15.c    
+*    
+* Description:	Q15 complex by real multiplication    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup CmplxByRealMult    
+ * @{    
+ */
+
+
+/**    
+ * @brief  Q15 complex-by-real multiplication    
+ * @param[in]  *pSrcCmplx points to the complex input vector    
+ * @param[in]  *pSrcReal points to the real input vector    
+ * @param[out]  *pCmplxDst points to the complex output vector    
+ * @param[in]  numSamples number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.    
+ */
+
+void arm_cmplx_mult_real_q15(
+  q15_t * pSrcCmplx,
+  q15_t * pSrcReal,
+  q15_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  q15_t in;                                      /* Temporary variable to store input value */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+  q31_t inA1, inA2;                              /* Temporary variables to hold input data */
+  q31_t inB1;                                    /* Temporary variables to hold input data */
+  q15_t out1, out2, out3, out4;                  /* Temporary variables to hold output data */
+  q31_t mul1, mul2, mul3, mul4;                  /* Temporary variables to hold intermediate data */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    /* read complex number both real and imaginary from complex input buffer */
+    inA1 = *__SIMD32(pSrcCmplx)++;
+    /* read two real values at a time from real input buffer */
+    inB1 = *__SIMD32(pSrcReal)++;
+    /* read complex number both real and imaginary from complex input buffer */
+    inA2 = *__SIMD32(pSrcCmplx)++;
+
+    /* multiply complex number with real numbers */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    mul1 = (q31_t) ((q15_t) (inA1) * (q15_t) (inB1));
+    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1));
+    mul3 = (q31_t) ((q15_t) (inA2) * (q15_t) (inB1 >> 16));
+    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB1 >> 16));
+
+#else
+
+    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));
+    mul1 = (q31_t) ((q15_t) inA1 * (q15_t) (inB1 >> 16));
+    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);
+    mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);
+
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
+
+    /* saturate the result */
+    out1 = (q15_t) __SSAT(mul1 >> 15u, 16);
+    out2 = (q15_t) __SSAT(mul2 >> 15u, 16);
+    out3 = (q15_t) __SSAT(mul3 >> 15u, 16);
+    out4 = (q15_t) __SSAT(mul4 >> 15u, 16);
+
+    /* pack real and imaginary outputs and store them to destination */
+    *__SIMD32(pCmplxDst)++ = __PKHBT(out1, out2, 16);
+    *__SIMD32(pCmplxDst)++ = __PKHBT(out3, out4, 16);
+
+    inA1 = *__SIMD32(pSrcCmplx)++;
+    inB1 = *__SIMD32(pSrcReal)++;
+    inA2 = *__SIMD32(pSrcCmplx)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    mul1 = (q31_t) ((q15_t) (inA1) * (q15_t) (inB1));
+    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1));
+    mul3 = (q31_t) ((q15_t) (inA2) * (q15_t) (inB1 >> 16));
+    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB1 >> 16));
+
+#else
+
+    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));
+    mul1 = (q31_t) ((q15_t) inA1 * (q15_t) (inB1 >> 16));
+    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);
+    mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);
+
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
+
+    out1 = (q15_t) __SSAT(mul1 >> 15u, 16);
+    out2 = (q15_t) __SSAT(mul2 >> 15u, 16);
+    out3 = (q15_t) __SSAT(mul3 >> 15u, 16);
+    out4 = (q15_t) __SSAT(mul4 >> 15u, 16);
+
+    *__SIMD32(pCmplxDst)++ = __PKHBT(out1, out2, 16);
+    *__SIMD32(pCmplxDst)++ = __PKHBT(out3, out4, 16);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut = realA * realB.            */
+    /* imagOut = imagA * realB.                */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    /* Decrement the numSamples loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of CmplxByRealMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,223 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cmplx_mult_real_q31.c    
+*    
+* Description:	Q31 complex by real multiplication    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupCmplxMath    
+ */
+
+/**    
+ * @addtogroup CmplxByRealMult    
+ * @{    
+ */
+
+
+/**    
+ * @brief  Q31 complex-by-real multiplication    
+ * @param[in]  *pSrcCmplx points to the complex input vector    
+ * @param[in]  *pSrcReal points to the real input vector    
+ * @param[out]  *pCmplxDst points to the complex output vector    
+ * @param[in]  numSamples number of samples in each vector    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.    
+ */
+
+void arm_cmplx_mult_real_q31(
+  q31_t * pSrcCmplx,
+  q31_t * pSrcReal,
+  q31_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  q31_t inA1;                                    /* Temporary variable to store input value */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+  q31_t inA2, inA3, inA4;                        /* Temporary variables to hold input data */
+  q31_t inB1, inB2;                              /* Temporary variabels to hold input data */
+  q31_t out1, out2, out3, out4;                  /* Temporary variables to hold output data */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    /* read real input from complex input buffer */
+    inA1 = *pSrcCmplx++;
+    inA2 = *pSrcCmplx++;
+    /* read input from real input bufer */
+    inB1 = *pSrcReal++;
+    inB2 = *pSrcReal++;
+    /* read imaginary input from complex input buffer */
+    inA3 = *pSrcCmplx++;
+    inA4 = *pSrcCmplx++;
+
+    /* multiply complex input with real input */
+    out1 = ((q63_t) inA1 * inB1) >> 32;
+    out2 = ((q63_t) inA2 * inB1) >> 32;
+    out3 = ((q63_t) inA3 * inB2) >> 32;
+    out4 = ((q63_t) inA4 * inB2) >> 32;
+
+    /* sature the result */
+    out1 = __SSAT(out1, 31);
+    out2 = __SSAT(out2, 31);
+    out3 = __SSAT(out3, 31);
+    out4 = __SSAT(out4, 31);
+
+    /* get result in 1.31 format */
+    out1 = out1 << 1;
+    out2 = out2 << 1;
+    out3 = out3 << 1;
+    out4 = out4 << 1;
+
+    /* store the result to destination buffer */
+    *pCmplxDst++ = out1;
+    *pCmplxDst++ = out2;
+    *pCmplxDst++ = out3;
+    *pCmplxDst++ = out4;
+
+    /* read real input from complex input buffer */
+    inA1 = *pSrcCmplx++;
+    inA2 = *pSrcCmplx++;
+    /* read input from real input bufer */
+    inB1 = *pSrcReal++;
+    inB2 = *pSrcReal++;
+    /* read imaginary input from complex input buffer */
+    inA3 = *pSrcCmplx++;
+    inA4 = *pSrcCmplx++;
+
+    /* multiply complex input with real input */
+    out1 = ((q63_t) inA1 * inB1) >> 32;
+    out2 = ((q63_t) inA2 * inB1) >> 32;
+    out3 = ((q63_t) inA3 * inB2) >> 32;
+    out4 = ((q63_t) inA4 * inB2) >> 32;
+
+    /* sature the result */
+    out1 = __SSAT(out1, 31);
+    out2 = __SSAT(out2, 31);
+    out3 = __SSAT(out3, 31);
+    out4 = __SSAT(out4, 31);
+
+    /* get result in 1.31 format */
+    out1 = out1 << 1;
+    out2 = out2 << 1;
+    out3 = out3 << 1;
+    out4 = out4 << 1;
+
+    /* store the result to destination buffer */
+    *pCmplxDst++ = out1;
+    *pCmplxDst++ = out2;
+    *pCmplxDst++ = out3;
+    *pCmplxDst++ = out4;
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    /* read real input from complex input buffer */
+    inA1 = *pSrcCmplx++;
+    inA2 = *pSrcCmplx++;
+    /* read input from real input bufer */
+    inB1 = *pSrcReal++;
+
+    /* multiply complex input with real input */
+    out1 = ((q63_t) inA1 * inB1) >> 32;
+    out2 = ((q63_t) inA2 * inB1) >> 32;
+
+    /* sature the result */
+    out1 = __SSAT(out1, 31);
+    out2 = __SSAT(out2, 31);
+
+    /* get result in 1.31 format */
+    out1 = out1 << 1;
+    out2 = out2 << 1;
+
+    /* store the result to destination buffer */
+    *pCmplxDst++ = out1;
+    *pCmplxDst++ = out2;
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut = realA * realB.            */
+    /* imagReal = imagA * realB.               */
+    inA1 = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * inA1) >> 31);
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * inA1) >> 31);
+
+    /* Decrement the numSamples loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of CmplxByRealMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,87 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_pid_init_f32.c    
+*    
+* Description:	Floating-point PID Control initialization function    
+*				   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**    
+ * @addtogroup PID    
+ * @{    
+ */
+
+/**    
+ * @brief  Initialization function for the floating-point PID Control.   
+ * @param[in,out] *S points to an instance of the PID structure.   
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state & 1 = reset the state.   
+ * @return none.   
+ * \par Description:   
+ * \par    
+ * The <code>resetStateFlag</code> specifies whether to set state to zero or not. \n   
+ * The function computes the structure fields: <code>A0</code>, <code>A1</code> <code>A2</code>    
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)    
+ * also sets the state variables to all zeros.    
+ */
+
+void arm_pid_init_f32(
+  arm_pid_instance_f32 * S,
+  int32_t resetStateFlag)
+{
+
+  /* Derived coefficient A0 */
+  S->A0 = S->Kp + S->Ki + S->Kd;
+
+  /* Derived coefficient A1 */
+  S->A1 = (-S->Kp) - ((float32_t) 2.0 * S->Kd);
+
+  /* Derived coefficient A2 */
+  S->A2 = S->Kd;
+
+  /* Check whether state needs reset or not */
+  if(resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3u * sizeof(float32_t));
+  }
+
+}
+
+/**    
+ * @} end of PID group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,122 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_pid_init_q15.c    
+*    
+* Description:	Q15 PID Control initialization function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**    
+ * @addtogroup PID    
+ * @{    
+ */
+
+/**    
+ * @details    
+ * @param[in,out] *S points to an instance of the Q15 PID structure.    
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.    
+ * @return none.    
+ * \par Description:   
+ * \par    
+ * The <code>resetStateFlag</code> specifies whether to set state to zero or not. \n   
+ * The function computes the structure fields: <code>A0</code>, <code>A1</code> <code>A2</code>    
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)    
+ * also sets the state variables to all zeros.    
+ */
+
+void arm_pid_init_q15(
+  arm_pid_instance_q15 * S,
+  int32_t resetStateFlag)
+{
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Derived coefficient A0 */
+  S->A0 = __QADD16(__QADD16(S->Kp, S->Ki), S->Kd);
+
+  /* Derived coefficients and pack into A1 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+  S->A1 = __PKHBT(-__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), S->Kd, 16);
+
+#else
+
+  S->A1 = __PKHBT(S->Kd, -__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+  /* Check whether state needs reset or not */
+  if(resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3u * sizeof(q15_t));
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t temp;                                    /*to store the sum */
+
+  /* Derived coefficient A0 */
+  temp = S->Kp + S->Ki + S->Kd;
+  S->A0 = (q15_t) __SSAT(temp, 16);
+
+  /* Derived coefficients and pack into A1 */
+  temp = -(S->Kd + S->Kd + S->Kp);
+  S->A1 = (q15_t) __SSAT(temp, 16);
+  S->A2 = S->Kd;
+
+
+
+  /* Check whether state needs reset or not */
+  if(resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3u * sizeof(q15_t));
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of PID group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,107 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_pid_init_q31.c    
+*    
+* Description:	Q31 PID Control initialization function     
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**    
+ * @addtogroup PID    
+ * @{    
+ */
+
+/**    
+ * @brief  Initialization function for the Q31 PID Control.   
+ * @param[in,out] *S points to an instance of the Q31 PID structure.   
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.   
+ * @return none.    
+ * \par Description:   
+ * \par    
+ * The <code>resetStateFlag</code> specifies whether to set state to zero or not. \n   
+ * The function computes the structure fields: <code>A0</code>, <code>A1</code> <code>A2</code>    
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)    
+ * also sets the state variables to all zeros.    
+ */
+
+void arm_pid_init_q31(
+  arm_pid_instance_q31 * S,
+  int32_t resetStateFlag)
+{
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Derived coefficient A0 */
+  S->A0 = __QADD(__QADD(S->Kp, S->Ki), S->Kd);
+
+  /* Derived coefficient A1 */
+  S->A1 = -__QADD(__QADD(S->Kd, S->Kd), S->Kp);
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t temp;
+
+  /* Derived coefficient A0 */
+  temp = clip_q63_to_q31((q63_t) S->Kp + S->Ki);
+  S->A0 = clip_q63_to_q31((q63_t) temp + S->Kd);
+
+  /* Derived coefficient A1 */
+  temp = clip_q63_to_q31((q63_t) S->Kd + S->Kd);
+  S->A1 = -clip_q63_to_q31((q63_t) temp + S->Kp);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  /* Derived coefficient A2 */
+  S->A2 = S->Kd;
+
+  /* Check whether state needs reset or not */
+  if(resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3u * sizeof(q31_t));
+  }
+
+}
+
+/**    
+ * @} end of PID group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,65 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_pid_reset_f32.c    
+*    
+* Description:	Floating-point PID Control reset function   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**    
+ * @addtogroup PID    
+ * @{    
+ */
+
+/**    
+* @brief  Reset function for the floating-point PID Control.   
+* @param[in] *S	Instance pointer of PID control data structure.   
+* @return none.    
+* \par Description:   
+* The function resets the state buffer to zeros.    
+*/
+void arm_pid_reset_f32(
+  arm_pid_instance_f32 * S)
+{
+
+  /* Clear the state buffer.  The size will be always 3 samples */
+  memset(S->state, 0, 3u * sizeof(float32_t));
+}
+
+/**    
+ * @} end of PID group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,64 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_pid_reset_q15.c    
+*    
+* Description:	Q15 PID Control reset function   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**    
+ * @addtogroup PID    
+ * @{    
+ */
+
+/**    
+* @brief  Reset function for the Q15 PID Control.   
+* @param[in] *S		Instance pointer of PID control data structure.   
+* @return none.    
+* \par Description:   
+* The function resets the state buffer to zeros.    
+*/
+void arm_pid_reset_q15(
+  arm_pid_instance_q15 * S)
+{
+  /* Reset state to zero, The size will be always 3 samples */
+  memset(S->state, 0, 3u * sizeof(q15_t));
+}
+
+/**    
+ * @} end of PID group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,65 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_pid_reset_q31.c    
+*    
+* Description:	Q31 PID Control reset function   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**    
+ * @addtogroup PID    
+ * @{    
+ */
+
+/**    
+* @brief  Reset function for the Q31 PID Control.   
+* @param[in] *S	Instance pointer of PID control data structure.   
+* @return none.    
+* \par Description:   
+* The function resets the state buffer to zeros.    
+*/
+void arm_pid_reset_q31(
+  arm_pid_instance_q31 * S)
+{
+
+  /* Clear the state buffer.  The size will be always 3 samples */
+  memset(S->state, 0, 3u * sizeof(q31_t));
+}
+
+/**    
+ * @} end of PID group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,149 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_sin_cos_f32.c    
+*    
+* Description:	Sine and Cosine calculation for floating-point values.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupController    
+ */
+
+/**    
+ * @defgroup SinCos Sine Cosine   
+ *    
+ * Computes the trigonometric sine and cosine values using a combination of table lookup   
+ * and linear interpolation.     
+ * There are separate functions for Q31 and floating-point data types.   
+ * The input to the floating-point version is in degrees while the   
+ * fixed-point Q31 have a scaled input with the range   
+ * [-1 0.9999] mapping to [-180 +180] degrees.   
+ *
+ * The floating point function also allows values that are out of the usual range. When this happens, the function will
+ * take extra time to adjust the input value to the range of [-180 180].
+ *   
+ * The implementation is based on table lookup using 360 values together with linear interpolation.   
+ * The steps used are:   
+ *  -# Calculation of the nearest integer table index.   
+ *  -# Compute the fractional portion (fract) of the input.   
+ *  -# Fetch the value corresponding to \c index from sine table to \c y0 and also value from \c index+1 to \c y1.      
+ *  -# Sine value is computed as <code> *psinVal = y0 + (fract * (y1 - y0))</code>.    
+ *  -# Fetch the value corresponding to \c index from cosine table to \c y0 and also value from \c index+1 to \c y1.      
+ *  -# Cosine value is computed as <code> *pcosVal = y0 + (fract * (y1 - y0))</code>.    
+ */
+
+ /**    
+ * @addtogroup SinCos    
+ * @{    
+ */
+
+/**    
+ * @brief  Floating-point sin_cos function.   
+ * @param[in]  theta    input value in degrees    
+ * @param[out] *pSinVal points to the processed sine output.    
+ * @param[out] *pCosVal points to the processed cos output.    
+ * @return none.   
+ */
+
+void arm_sin_cos_f32(
+  float32_t theta,
+  float32_t * pSinVal,
+  float32_t * pCosVal)
+{
+  float32_t fract, in;                             /* Temporary variables for input, output */
+  uint16_t indexS, indexC;                         /* Index variable */
+  float32_t f1, f2, d1, d2;                        /* Two nearest output values */
+  int32_t n;
+  float32_t findex, Dn, Df, temp;
+
+  /* input x is in degrees */
+  /* Scale the input, divide input by 360, for cosine add 0.25 (pi/2) to read sine table */
+  in = theta * 0.00277777777778f;
+
+  /* Calculation of floor value of input */
+  n = (int32_t) in;
+
+  /* Make negative values towards -infinity */
+  if(in < 0.0f)
+  {
+    n--;
+  }
+  /* Map input value to [0 1] */
+  in = in - (float32_t) n;
+
+  /* Calculation of index of the table */
+  findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
+  indexS = ((uint16_t)findex) & 0x1ff;
+  indexC = (indexS + (FAST_MATH_TABLE_SIZE / 4)) & 0x1ff;
+
+  /* fractional value calculation */
+  fract = findex - (float32_t) indexS;
+
+  /* Read two nearest values of input value from the cos & sin tables */
+  f1 = sinTable_f32[indexC+0];
+  f2 = sinTable_f32[indexC+1];
+  d1 = -sinTable_f32[indexS+0];
+  d2 = -sinTable_f32[indexS+1];
+
+  Dn = 0.0122718463030f; // delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE
+  Df = f2 - f1; // delta between the values of the functions
+  temp = Dn*(d1 + d2) - 2*Df;
+  temp = fract*temp + (3*Df - (d2 + 2*d1)*Dn);
+  temp = fract*temp + d1*Dn;
+
+  /* Calculation of cosine value */
+  *pCosVal = fract*temp + f1;
+  
+  /* Read two nearest values of input value from the cos & sin tables */
+  f1 = sinTable_f32[indexS+0];
+  f2 = sinTable_f32[indexS+1];
+  d1 = sinTable_f32[indexC+0];
+  d2 = sinTable_f32[indexC+1];
+
+  Df = f2 - f1; // delta between the values of the functions
+  temp = Dn*(d1 + d2) - 2*Df;
+  temp = fract*temp + (3*Df - (d2 + 2*d1)*Dn);
+  temp = fract*temp + d1*Dn;
+  
+  /* Calculation of sine value */
+  *pSinVal = fract*temp + f1;
+}
+/**    
+ * @} end of SinCos group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,122 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_sin_cos_q31.c    
+*    
+* Description:	Cosine & Sine calculation for Q31 values.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupController    
+ */
+
+ /**    
+ * @addtogroup SinCos    
+ * @{    
+ */
+
+/**    
+ * @brief  Q31 sin_cos function.   
+ * @param[in]  theta    scaled input value in degrees    
+ * @param[out] *pSinVal points to the processed sine output.    
+ * @param[out] *pCosVal points to the processed cosine output.    
+ * @return none.   
+ *    
+ * The Q31 input value is in the range [-1 0.999999] and is mapped to a degree value in the range [-180 179].   
+ *    
+ */
+
+void arm_sin_cos_q31(
+  q31_t theta,
+  q31_t * pSinVal,
+  q31_t * pCosVal)
+{
+  q31_t fract;                                 /* Temporary variables for input, output */
+  uint16_t indexS, indexC;                     /* Index variable */
+  q31_t f1, f2, d1, d2;                        /* Two nearest output values */
+  q31_t Dn, Df;
+  q63_t temp;
+  
+  /* Calculate the nearest index */
+  indexS = (uint32_t)theta >> CONTROLLER_Q31_SHIFT;
+  indexC = (indexS + 128) & 0x1ff;
+
+  /* Calculation of fractional value */
+  fract = (theta - (indexS << CONTROLLER_Q31_SHIFT)) << 8;
+  
+  /* Read two nearest values of input value from the cos & sin tables */
+  f1 = sinTable_q31[indexC+0];
+  f2 = sinTable_q31[indexC+1];
+  d1 = -sinTable_q31[indexS+0];
+  d2 = -sinTable_q31[indexS+1];
+
+  Dn = 0x1921FB5; // delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE
+  Df = f2 - f1; // delta between the values of the functions
+  temp = Dn*((q63_t)d1 + d2);
+  temp = temp - ((q63_t)Df << 32);
+  temp = (q63_t)fract*(temp >> 31);
+  temp = temp + ((3*(q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1))*Dn);
+  temp = (q63_t)fract*(temp >> 31);
+  temp = temp + (q63_t)d1*Dn;
+  temp = (q63_t)fract*(temp >> 31);
+
+  /* Calculation of cosine value */
+  *pCosVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);
+  
+  /* Read two nearest values of input value from the cos & sin tables */
+  f1 = sinTable_q31[indexS+0];
+  f2 = sinTable_q31[indexS+1];
+  d1 = sinTable_q31[indexC+0];
+  d2 = sinTable_q31[indexC+1];
+
+  Df = f2 - f1; // delta between the values of the functions
+  temp = Dn*((q63_t)d1 + d2);
+  temp = temp - ((q63_t)Df << 32);
+  temp = (q63_t)fract*(temp >> 31);
+  temp = temp + ((3*(q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1))*Dn);
+  temp = (q63_t)fract*(temp >> 31);
+  temp = temp + (q63_t)d1*Dn;
+  temp = (q63_t)fract*(temp >> 31);
+  
+  /* Calculation of sine value */
+  *pSinVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);
+}
+
+/**    
+ * @} end of SinCos group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,127 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date:        21. September 2015
+* $Revision:    V.1.4.5 a
+*
+* Project:      CMSIS DSP Library
+* Title:        arm_cos_f32.c
+*
+* Description:  Fast cosine calculation for floating-point values.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+/**
+ * @ingroup groupFastMath
+ */
+
+/**
+ * @defgroup cos Cosine
+ *
+ * Computes the trigonometric cosine function using a combination of table lookup
+ * and linear interpolation.  There are separate functions for
+ * Q15, Q31, and floating-point data types.
+ * The input to the floating-point version is in radians while the
+ * fixed-point Q15 and Q31 have a scaled input with the range
+ * [0 +0.9999] mapping to [0 2*pi).  The fixed-point range is chosen so that a
+ * value of 2*pi wraps around to 0.
+ *
+ * The implementation is based on table lookup using 256 values together with linear interpolation.
+ * The steps used are:
+ *  -# Calculation of the nearest integer table index
+ *  -# Compute the fractional portion (fract) of the table index.
+ *  -# The final result equals <code>(1.0f-fract)*a + fract*b;</code>
+ *
+ * where
+ * <pre>
+ *    b=Table[index+0];
+ *    c=Table[index+1];
+ * </pre>
+ */
+
+ /**
+ * @addtogroup cos
+ * @{
+ */
+
+/**
+ * @brief  Fast approximation to the trigonometric cosine function for floating-point data.
+ * @param[in] x input value in radians.
+ * @return cos(x).
+ */
+
+float32_t arm_cos_f32(
+  float32_t x)
+{
+  float32_t cosVal, fract, in;                   /* Temporary variables for input, output */
+  uint16_t index;                                /* Index variable */
+  float32_t a, b;                                /* Two nearest output values */
+  int32_t n;
+  float32_t findex;
+
+  /* input x is in radians */
+  /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi, add 0.25 (pi/2) to read sine table */
+  in = x * 0.159154943092f + 0.25f;
+
+  /* Calculation of floor value of input */
+  n = (int32_t) in;
+
+  /* Make negative values towards -infinity */
+  if(in < 0.0f)
+  {
+    n--;
+  }
+
+  /* Map input value to [0 1] */
+  in = in - (float32_t) n;
+
+  /* Calculation of index of the table */
+  findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
+  index = ((uint16_t)findex) & 0x1ff;
+
+  /* fractional value calculation */
+  fract = findex - (float32_t) index;
+
+  /* Read two nearest values of input value from the cos table */
+  a = sinTable_f32[index];
+  b = sinTable_f32[index+1];
+
+  /* Linear interpolation process */
+  cosVal = (1.0f-fract)*a + fract*b;
+
+  /* Return the output value */
+  return (cosVal);
+}
+
+/**
+ * @} end of cos group
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,96 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date:        07. September 2015
+* $Revision:    V.1.4.5 a
+*
+* Project:      CMSIS DSP Library
+* Title:        arm_cos_q15.c
+*
+* Description:  Fast cosine calculation for Q15 values.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**
+ * @ingroup groupFastMath
+ */
+
+ /**
+ * @addtogroup cos
+ * @{
+ */
+
+/**
+ * @brief Fast approximation to the trigonometric cosine function for Q15 data.
+ * @param[in] x Scaled input value in radians.
+ * @return  cos(x).
+ *
+ * The Q15 input value is in the range [0 +0.9999] and is mapped to a radian
+ * value in the range [0 2*pi).
+ */
+
+q15_t arm_cos_q15(
+  q15_t x)
+{
+  q15_t cosVal;                                  /* Temporary variables for input, output */
+  int32_t index;                                 /* Index variables */
+  q15_t a, b;                                    /* Four nearest output values */
+  q15_t fract;                                   /* Temporary values for fractional values */
+
+  /* add 0.25 (pi/2) to read sine table */
+  x = (uint16_t)x + 0x2000;
+  if(x < 0)
+  {   /* convert negative numbers to corresponding positive ones */
+      x = (uint16_t)x + 0x8000;
+  }
+
+  /* Calculate the nearest index */
+  index = (uint32_t)x >> FAST_MATH_Q15_SHIFT;
+
+  /* Calculation of fractional value */
+  fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9;
+
+  /* Read two nearest values of input value from the sin table */
+  a = sinTable_q15[index];
+  b = sinTable_q15[index+1];
+
+  /* Linear interpolation process */
+  cosVal = (q31_t)(0x8000-fract)*a >> 16;
+  cosVal = (q15_t)((((q31_t)cosVal << 16) + ((q31_t)fract*b)) >> 16);
+
+  return cosVal << 1;
+}
+
+/**
+ * @} end of cos group
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,96 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date:        07. September 2015
+* $Revision:    V.1.4.5 a
+*
+* Project:      CMSIS DSP Library
+* Title:        arm_cos_q31.c
+*
+* Description: Fast cosine calculation for Q31 values.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**
+ * @ingroup groupFastMath
+ */
+
+ /**
+ * @addtogroup cos
+ * @{
+ */
+
+/**
+ * @brief Fast approximation to the trigonometric cosine function for Q31 data.
+ * @param[in] x Scaled input value in radians.
+ * @return  cos(x).
+ *
+ * The Q31 input value is in the range [0 +0.9999] and is mapped to a radian
+ * value in the range [0 2*pi).
+ */
+
+q31_t arm_cos_q31(
+  q31_t x)
+{
+  q31_t cosVal;                                  /* Temporary variables for input, output */
+  int32_t index;                                 /* Index variables */
+  q31_t a, b;                                    /* Four nearest output values */
+  q31_t fract;                                   /* Temporary values for fractional values */
+
+  /* add 0.25 (pi/2) to read sine table */
+  x = (uint32_t)x + 0x20000000;
+  if(x < 0)
+  {   /* convert negative numbers to corresponding positive ones */
+      x = (uint32_t)x + 0x80000000;
+  }
+
+  /* Calculate the nearest index */
+  index = (uint32_t)x >> FAST_MATH_Q31_SHIFT;
+
+  /* Calculation of fractional value */
+  fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9;
+
+  /* Read two nearest values of input value from the sin table */
+  a = sinTable_q31[index];
+  b = sinTable_q31[index+1];
+
+  /* Linear interpolation process */
+  cosVal = (q63_t)(0x80000000-fract)*a >> 32;
+  cosVal = (q31_t)((((q63_t)cosVal << 32) + ((q63_t)fract*b)) >> 32);
+
+  return cosVal << 1;
+}
+
+/**
+ * @} end of cos group
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,133 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date:        21. September 2015
+* $Revision:    V.1.4.5 a
+*
+* Project:      CMSIS DSP Library
+* Title:        arm_sin_f32.c
+*
+* Description:  Fast sine calculation for floating-point values.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+#include <math.h>
+
+/**
+ * @ingroup groupFastMath
+ */
+
+/**
+ * @defgroup sin Sine
+ *
+ * Computes the trigonometric sine function using a combination of table lookup
+ * and linear interpolation.  There are separate functions for
+ * Q15, Q31, and floating-point data types.
+ * The input to the floating-point version is in radians while the
+ * fixed-point Q15 and Q31 have a scaled input with the range
+ * [0 +0.9999] mapping to [0 2*pi).  The fixed-point range is chosen so that a
+ * value of 2*pi wraps around to 0.
+ *
+ * The implementation is based on table lookup using 256 values together with linear interpolation.
+ * The steps used are:
+ *  -# Calculation of the nearest integer table index
+ *  -# Compute the fractional portion (fract) of the table index.
+ *  -# The final result equals <code>(1.0f-fract)*a + fract*b;</code>
+ *
+ * where
+ * <pre>
+ *    b=Table[index+0];
+ *    c=Table[index+1];
+ * </pre>
+ */
+
+/**
+ * @addtogroup sin
+ * @{
+ */
+
+/**
+ * @brief  Fast approximation to the trigonometric sine function for floating-point data.
+ * @param[in] x input value in radians.
+ * @return  sin(x).
+ */
+
+float32_t arm_sin_f32(
+  float32_t x)
+{
+  float32_t sinVal, fract, in;                           /* Temporary variables for input, output */
+  uint16_t index;                                        /* Index variable */
+  float32_t a, b;                                        /* Two nearest output values */
+  int32_t n;
+  float32_t findex;
+
+  /* input x is in radians */
+  /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */
+  in = x * 0.159154943092f;
+
+  /* Calculation of floor value of input */
+  n = (int32_t) in;
+
+  /* Make negative values towards -infinity */
+  if(x < 0.0f)
+  {
+    n--;
+  }
+
+  /* Map input value to [0 1] */
+  in = in - (float32_t) n;
+
+  /* Calculation of index of the table */
+  findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
+  if (findex >= 512.0f) {
+    findex -= 512.0f;
+  }
+
+  index = ((uint16_t)findex) & 0x1ff;
+
+  /* fractional value calculation */
+  fract = findex - (float32_t) index;
+
+  /* Read two nearest values of input value from the sin table */
+  a = sinTable_f32[index];
+  b = sinTable_f32[index+1];
+
+  /* Linear interpolation process */
+  sinVal = (1.0f-fract)*a + fract*b;
+
+  /* Return the output value */
+  return (sinVal);
+}
+
+/**
+ * @} end of sin group
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,88 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_sin_q15.c    
+*    
+* Description:	Fast sine calculation for Q15 values.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupFastMath    
+ */
+
+ /**    
+ * @addtogroup sin    
+ * @{    
+ */
+
+/**   
+ * @brief Fast approximation to the trigonometric sine function for Q15 data.   
+ * @param[in] x Scaled input value in radians.   
+ * @return  sin(x).   
+ *   
+ * The Q15 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*pi).
+ */
+
+q15_t arm_sin_q15(
+  q15_t x)
+{
+  q15_t sinVal;                                  /* Temporary variables for input, output */
+  int32_t index;                                 /* Index variables */
+  q15_t a, b;                                    /* Four nearest output values */
+  q15_t fract;                                   /* Temporary values for fractional values */
+
+  /* Calculate the nearest index */
+  index = (uint32_t)x >> FAST_MATH_Q15_SHIFT;
+
+  /* Calculation of fractional value */
+  fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9;
+
+  /* Read two nearest values of input value from the sin table */
+  a = sinTable_q15[index];
+  b = sinTable_q15[index+1];
+
+  /* Linear interpolation process */
+  sinVal = (q31_t)(0x8000-fract)*a >> 16;
+  sinVal = (q15_t)((((q31_t)sinVal << 16) + ((q31_t)fract*b)) >> 16);
+
+  return sinVal << 1;
+}
+
+/**    
+ * @} end of sin group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,87 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_sin_q31.c    
+*    
+* Description:	Fast sine calculation for Q31 values.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupFastMath    
+ */
+
+ /**    
+ * @addtogroup sin    
+ * @{    
+ */
+
+/**   
+ * @brief Fast approximation to the trigonometric sine function for Q31 data.
+ * @param[in] x Scaled input value in radians.
+ * @return  sin(x).
+ *
+ * The Q31 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*pi). */
+
+q31_t arm_sin_q31(
+  q31_t x)
+{
+  q31_t sinVal;                                  /* Temporary variables for input, output */
+  int32_t index;                                 /* Index variables */
+  q31_t a, b;                                    /* Four nearest output values */
+  q31_t fract;                                   /* Temporary values for fractional values */
+
+  /* Calculate the nearest index */
+  index = (uint32_t)x >> FAST_MATH_Q31_SHIFT;
+
+  /* Calculation of fractional value */
+  fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9;
+
+  /* Read two nearest values of input value from the sin table */
+  a = sinTable_q31[index];
+  b = sinTable_q31[index+1];
+
+  /* Linear interpolation process */
+  sinVal = (q63_t)(0x80000000-fract)*a >> 32;
+  sinVal = (q31_t)((((q63_t)sinVal << 32) + ((q63_t)fract*b)) >> 32);
+
+  return sinVal << 1;
+}
+
+/**    
+ * @} end of sin group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,155 @@
+/* ----------------------------------------------------------------------     
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.  
+*     
+* $Date:        19. October 2015
+* $Revision: 	V.1.4.5 a
+*     
+* Project:      CMSIS DSP Library  
+* Title:		arm_sqrt_q15.c     
+*     
+* Description:	Q15 square root function.    
+*     
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+
+/**     
+ * @ingroup groupFastMath     
+ */
+
+/**     
+ * @addtogroup SQRT     
+ * @{     
+ */
+
+  /**    
+   * @brief  Q15 square root function.    
+   * @param[in]   in     input value.  The range of the input value is [0 +1) or 0x0000 to 0x7FFF.    
+   * @param[out]  *pOut  square root of input value.    
+   * @return The function returns ARM_MATH_SUCCESS if the input value is positive
+   * and ARM_MATH_ARGUMENT_ERROR if the input is negative.  For
+   * negative inputs, the function returns *pOut = 0.
+   */
+
+arm_status arm_sqrt_q15(
+  q15_t in,
+  q15_t * pOut)
+{
+  q15_t number, temp1, var1, signBits1, half;
+  q31_t bits_val1;
+  float32_t temp_float1;
+  union
+  {
+    q31_t fracval;
+    float32_t floatval;
+  } tempconv;
+
+  number = in;
+
+  /* If the input is a positive number then compute the signBits. */
+  if(number > 0)
+  {
+    signBits1 = __CLZ(number) - 17;
+
+    /* Shift by the number of signBits1 */
+    if((signBits1 % 2) == 0)
+    {
+      number = number << signBits1;
+    }
+    else
+    {
+      number = number << (signBits1 - 1);
+    }
+
+    /* Calculate half value of the number */
+    half = number >> 1;
+    /* Store the number for later use */
+    temp1 = number;
+
+    /* Convert to float */
+    temp_float1 = number * 3.051757812500000e-005f;
+    /*Store as integer */
+    tempconv.floatval = temp_float1;
+    bits_val1 = tempconv.fracval;
+    /* Subtract the shifted value from the magic number to give intial guess */
+    bits_val1 = 0x5f3759df - (bits_val1 >> 1);  /* gives initial guess */
+    /* Store as float */
+    tempconv.fracval = bits_val1;
+    temp_float1 = tempconv.floatval;
+    /* Convert to integer format */
+    var1 = (q31_t) (temp_float1 * 16384);
+
+    /* 1st iteration */
+    var1 = ((q15_t) ((q31_t) var1 * (0x3000 -
+                                     ((q15_t)
+                                      ((((q15_t)
+                                         (((q31_t) var1 * var1) >> 15)) *
+                                        (q31_t) half) >> 15))) >> 15)) << 2;
+    /* 2nd iteration */
+    var1 = ((q15_t) ((q31_t) var1 * (0x3000 -
+                                     ((q15_t)
+                                      ((((q15_t)
+                                         (((q31_t) var1 * var1) >> 15)) *
+                                        (q31_t) half) >> 15))) >> 15)) << 2;
+    /* 3rd iteration */
+    var1 = ((q15_t) ((q31_t) var1 * (0x3000 -
+                                     ((q15_t)
+                                      ((((q15_t)
+                                         (((q31_t) var1 * var1) >> 15)) *
+                                        (q31_t) half) >> 15))) >> 15)) << 2;
+
+    /* Multiply the inverse square root with the original value */
+    var1 = ((q15_t) (((q31_t) temp1 * var1) >> 15)) << 1;
+
+    /* Shift the output down accordingly */
+    if((signBits1 % 2) == 0)
+    {
+      var1 = var1 >> (signBits1 / 2);
+    }
+    else
+    {
+      var1 = var1 >> ((signBits1 - 1) / 2);
+    }
+    *pOut = var1;
+
+    return (ARM_MATH_SUCCESS);
+  }
+  /* If the number is a negative number then store zero as its square root value */
+  else
+  {
+    *pOut = 0;
+    return (ARM_MATH_ARGUMENT_ERROR);
+  }
+}
+
+/**     
+ * @} end of SQRT group     
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,153 @@
+/* ----------------------------------------------------------------------     
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.  
+*     
+* $Date:        19. October 2015
+* $Revision: 	V.1.4.5 a
+*     
+* Project:      CMSIS DSP Library  
+* Title:		arm_sqrt_q31.c     
+*     
+* Description:	Q31 square root function.    
+*     
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**     
+ * @ingroup groupFastMath     
+ */
+
+/**     
+ * @addtogroup SQRT     
+ * @{     
+ */
+
+/**    
+ * @brief Q31 square root function.    
+ * @param[in]   in    input value.  The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF.    
+ * @param[out]  *pOut square root of input value.    
+ * @return The function returns ARM_MATH_SUCCESS if the input value is positive
+ * and ARM_MATH_ARGUMENT_ERROR if the input is negative.  For
+ * negative inputs, the function returns *pOut = 0.
+ */
+
+arm_status arm_sqrt_q31(
+  q31_t in,
+  q31_t * pOut)
+{
+  q31_t number, temp1, bits_val1, var1, signBits1, half;
+  float32_t temp_float1;
+  union
+  {
+      q31_t fracval;
+      float32_t floatval;
+  } tempconv;
+
+  number = in;
+
+  /* If the input is a positive number then compute the signBits. */
+  if(number > 0)
+  {
+    signBits1 = __CLZ(number) - 1;
+
+    /* Shift by the number of signBits1 */
+    if((signBits1 % 2) == 0)
+    {
+      number = number << signBits1;
+    }
+    else
+    {
+      number = number << (signBits1 - 1);
+    }
+
+    /* Calculate half value of the number */
+    half = number >> 1;
+    /* Store the number for later use */
+    temp1 = number;
+
+    /*Convert to float */
+    temp_float1 = number * 4.6566128731e-010f;
+    /*Store as integer */
+    tempconv.floatval = temp_float1;
+    bits_val1 = tempconv.fracval;
+    /* Subtract the shifted value from the magic number to give intial guess */
+    bits_val1 = 0x5f3759df - (bits_val1 >> 1);  /* gives initial guess */
+    /* Store as float */
+    tempconv.fracval = bits_val1;
+    temp_float1 = tempconv.floatval;
+    /* Convert to integer format */
+    var1 = (q31_t) (temp_float1 * 1073741824);
+
+    /* 1st iteration */
+    var1 = ((q31_t) ((q63_t) var1 * (0x30000000 -
+                                     ((q31_t)
+                                      ((((q31_t)
+                                         (((q63_t) var1 * var1) >> 31)) *
+                                        (q63_t) half) >> 31))) >> 31)) << 2;
+    /* 2nd iteration */
+    var1 = ((q31_t) ((q63_t) var1 * (0x30000000 -
+                                     ((q31_t)
+                                      ((((q31_t)
+                                         (((q63_t) var1 * var1) >> 31)) *
+                                        (q63_t) half) >> 31))) >> 31)) << 2;
+    /* 3rd iteration */
+    var1 = ((q31_t) ((q63_t) var1 * (0x30000000 -
+                                     ((q31_t)
+                                      ((((q31_t)
+                                         (((q63_t) var1 * var1) >> 31)) *
+                                        (q63_t) half) >> 31))) >> 31)) << 2;
+
+    /* Multiply the inverse square root with the original value */
+    var1 = ((q31_t) (((q63_t) temp1 * var1) >> 31)) << 1;
+
+    /* Shift the output down accordingly */
+    if((signBits1 % 2) == 0)
+    {
+      var1 = var1 >> (signBits1 / 2);
+    }
+    else
+    {
+      var1 = var1 >> ((signBits1 - 1) / 2);
+    }
+    *pOut = var1;
+
+    return (ARM_MATH_SUCCESS);
+  }
+  /* If the number is a negative number then store zero as its square root value */
+  else
+  {
+    *pOut = 0;
+    return (ARM_MATH_ARGUMENT_ERROR);
+  }
+}
+
+/**     
+ * @} end of SQRT group     
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,110 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df1_32x64_init_q31.c    
+*    
+* Description:	High precision Q31 Biquad cascade filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1_32x64    
+ * @{    
+ */
+
+/**    
+ * @details    
+ *    
+ * @param[in,out] *S           	points to an instance of the high precision Q31 Biquad cascade filter structure.    
+ * @param[in]     numStages     number of 2nd order stages in the filter.    
+ * @param[in]     *pCoeffs      points to the filter coefficients.    
+ * @param[in]     *pState       points to the state buffer.    
+ * @param[in]     postShift     Shift to be applied after the accumulator.  Varies according to the coefficients format.    
+ * @return        none    
+ *    
+ * <b>Coefficient and State Ordering:</b>    
+ *    
+ * \par    
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:    
+ * <pre>    
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}    
+ * </pre>    
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,    
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,    
+ * and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.    
+ *    
+ * \par    
+ * The <code>pState</code> points to state variables array and size of each state variable is 1.63 format.    
+ * Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.    
+ * The state variables are arranged in the state array as:    
+ * <pre>    
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}    
+ * </pre>    
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>4*numStages</code> values.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ */
+
+void arm_biquad_cas_df1_32x64_init_q31(
+  arm_biquad_cas_df1_32x64_ins_q31 * S,
+  uint8_t numStages,
+  q31_t * pCoeffs,
+  q63_t * pState,
+  uint8_t postShift)
+{
+  /* Assign filter stages */
+  S->numStages = numStages;
+
+  /* Assign postShift to be applied to the output */
+  S->postShift = postShift;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always 4 * numStages */
+  memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(q63_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+}
+
+/**    
+ * @} end of BiquadCascadeDF1_32x64 group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,561 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. October 2015
+* $Revision: 	V.1.4.5 a
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df1_32x64_q31.c    
+*    
+* Description:	High precision Q31 Biquad cascade filter processing function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup BiquadCascadeDF1_32x64 High Precision Q31 Biquad Cascade Filter    
+ *    
+ * This function implements a high precision Biquad cascade filter which operates on    
+ * Q31 data values.  The filter coefficients are in 1.31 format and the state variables    
+ * are in 1.63 format.  The double precision state variables reduce quantization noise    
+ * in the filter and provide a cleaner output.    
+ * These filters are particularly useful when implementing filters in which the    
+ * singularities are close to the unit circle.  This is common for low pass or high    
+ * pass filters with very low cutoff frequencies.    
+ *    
+ * The function operates on blocks of input and output data    
+ * and each call to the function processes <code>blockSize</code> samples through    
+ * the filter. <code>pSrc</code> and <code>pDst</code> points to input and output arrays    
+ * containing <code>blockSize</code> Q31 values.    
+ *    
+ * \par Algorithm    
+ * Each Biquad stage implements a second order filter using the difference equation:    
+ * <pre>    
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]    
+ * </pre>    
+ * A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage.    
+ * \image html Biquad.gif "Single Biquad filter stage"    
+ * Coefficients <code>b0, b1, and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.    
+ * Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.    
+ * Pay careful attention to the sign of the feedback coefficients.    
+ * Some design tools use the difference equation    
+ * <pre>    
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]    
+ * </pre>    
+ * In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.    
+ *    
+ * \par    
+ * Higher order filters are realized as a cascade of second order sections.    
+ * <code>numStages</code> refers to the number of second order stages used.    
+ * For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.    
+ * \image html BiquadCascade.gif "8th order filter using a cascade of Biquad stages"    
+ * A 9th order filter would be realized with <code>numStages=5</code> second order stages with the coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).    
+ *    
+ * \par    
+ * The <code>pState</code> points to state variables array .    
+ * Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code> and each state variable in 1.63 format to improve precision.    
+ * The state variables are arranged in the array as:    
+ * <pre>    
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}    
+ * </pre>    
+ *    
+ * \par    
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>4*numStages</code> values of data in 1.63 format.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ *    
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter.    
+ * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.    
+ *    
+ * \par Init Function    
+ * There is also an associated initialization function which performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.    
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * numStages, pCoeffs, postShift, pState. Also set all of the values in pState to zero. 
+ *
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * Set the values in the state buffer to zeros before static initialization.    
+ * For example, to statically initialize the filter instance structure use    
+ * <pre>    
+ *     arm_biquad_cas_df1_32x64_ins_q31 S1 = {numStages, pState, pCoeffs, postShift};    
+ * </pre>    
+ * where <code>numStages</code> is the number of Biquad stages in the filter; <code>pState</code> is the address of the state buffer;    
+ * <code>pCoeffs</code> is the address of the coefficient buffer; <code>postShift</code> shift to be applied which is described in detail below.    
+ * \par Fixed-Point Behavior    
+ * Care must be taken while using Biquad Cascade 32x64 filter function.    
+ * Following issues must be considered:    
+ * - Scaling of coefficients    
+ * - Filter gain    
+ * - Overflow and saturation    
+ *    
+ * \par    
+ * Filter coefficients are represented as fractional values and    
+ * restricted to lie in the range <code>[-1 +1)</code>.    
+ * The processing function has an additional scaling parameter <code>postShift</code>    
+ * which allows the filter coefficients to exceed the range <code>[+1 -1)</code>.    
+ * At the output of the filter's accumulator is a shift register which shifts the result by <code>postShift</code> bits.    
+ * \image html BiquadPostshift.gif "Fixed-point Biquad with shift by postShift bits after accumulator"    
+ * This essentially scales the filter coefficients by <code>2^postShift</code>.    
+ * For example, to realize the coefficients    
+ * <pre>    
+ *    {1.5, -0.8, 1.2, 1.6, -0.9}    
+ * </pre>    
+ * set the Coefficient array to:    
+ * <pre>    
+ *    {0.75, -0.4, 0.6, 0.8, -0.45}    
+ * </pre>    
+ * and set <code>postShift=1</code>    
+ *    
+ * \par    
+ * The second thing to keep in mind is the gain through the filter.    
+ * The frequency response of a Biquad filter is a function of its coefficients.    
+ * It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies.    
+ * This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter.    
+ * To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed.    
+ *    
+ * \par    
+ * The third item to consider is the overflow and saturation behavior of the fixed-point Q31 version.    
+ * This is described in the function specific documentation below.    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1_32x64    
+ * @{    
+ */
+
+/**    
+ * @details    
+    
+ * @param[in]  *S points to an instance of the high precision Q31 Biquad cascade filter.    
+ * @param[in]  *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data.    
+ * @param[in]  blockSize number of samples to process.    
+ * @return none.    
+ *    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around rather than clip.    
+ * In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25).    
+ * After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by <code>postShift</code> bits and the result truncated to    
+ * 1.31 format by discarding the low 32 bits.    
+ *    
+ * \par    
+ * Two related functions are provided in the CMSIS DSP library.    
+ * <code>arm_biquad_cascade_df1_q31()</code> implements a Biquad cascade with 32-bit coefficients and state variables with a Q63 accumulator.    
+ * <code>arm_biquad_cascade_df1_fast_q31()</code> implements a Biquad cascade with 32-bit coefficients and state variables with a Q31 accumulator.    
+ */
+
+void arm_biquad_cas_df1_32x64_q31(
+  const arm_biquad_cas_df1_32x64_ins_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pIn = pSrc;                             /*  input pointer initialization  */
+  q31_t *pOut = pDst;                            /*  output pointer initialization */
+  q63_t *pState = S->pState;                     /*  state pointer initialization  */
+  q31_t *pCoeffs = S->pCoeffs;                   /*  coeff pointer initialization  */
+  q63_t acc;                                     /*  accumulator                   */
+  q31_t Xn1, Xn2;                                /*  Input Filter state variables        */
+  q63_t Yn1, Yn2;                                /*  Output Filter state variables        */
+  q31_t b0, b1, b2, a1, a2;                      /*  Filter coefficients           */
+  q31_t Xn;                                      /*  temporary input               */
+  int32_t shift = (int32_t) S->postShift + 1;    /*  Shift to be applied to the output */
+  uint32_t sample, stage = S->numStages;         /*  loop counters                     */
+  q31_t acc_l, acc_h;                            /*  temporary output               */
+  uint32_t uShift = ((uint32_t) S->postShift + 1u);
+  uint32_t lShift = 32u - uShift;                /*  Shift to be applied to the output */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  do
+  {
+    /* Reading the coefficients */
+    b0 = *pCoeffs++;
+    b1 = *pCoeffs++;
+    b2 = *pCoeffs++;
+    a1 = *pCoeffs++;
+    a2 = *pCoeffs++;
+
+    /* Reading the state values */
+    Xn1 = (q31_t) (pState[0]);
+    Xn2 = (q31_t) (pState[1]);
+    Yn1 = pState[2];
+    Yn2 = pState[3];
+
+    /* Apply loop unrolling and compute 4 output values simultaneously. */
+    /* The variable acc hold output value that is being computed and    
+     * stored in the destination buffer    
+     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]    
+     */
+
+    sample = blockSize >> 2u;
+
+    /* First part of the processing with loop unrolling. Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) Xn *b0;
+
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) Xn1 *b1;
+
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) Xn2 *b2;
+
+      /* acc +=  a1 * y[n-1] */
+      acc += mult32x64(Yn1, a1);
+
+      /* acc +=  a2 * y[n-2] */
+      acc += mult32x64(Yn2, a2);
+
+      /* The result is converted to 1.63 , Yn2 variable is reused */
+      Yn2 = acc << shift;
+
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Store the output in the destination buffer in 1.31 format. */
+      *pOut = acc_h;
+
+      /* Read the second input into Xn2, to reuse the value */
+      Xn2 = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc +=  b1 * x[n-1] */
+      acc = (q63_t) Xn *b1;
+
+      /* acc =  b0 * x[n] */
+      acc += (q63_t) Xn2 *b0;
+
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) Xn1 *b2;
+
+      /* acc +=  a1 * y[n-1] */
+      acc += mult32x64(Yn2, a1);
+
+      /* acc +=  a2 * y[n-2] */
+      acc += mult32x64(Yn1, a2);
+
+      /* The result is converted to 1.63, Yn1 variable is reused */
+      Yn1 = acc << shift;
+
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Read the third input into Xn1, to reuse the value */
+      Xn1 = *pIn++;
+
+      /* The result is converted to 1.31 */
+      /* Store the output in the destination buffer. */
+      *(pOut + 1u) = acc_h;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) Xn1 *b0;
+
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) Xn2 *b1;
+
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) Xn *b2;
+
+      /* acc +=  a1 * y[n-1] */
+      acc += mult32x64(Yn1, a1);
+
+      /* acc +=  a2 * y[n-2] */
+      acc += mult32x64(Yn2, a2);
+
+      /* The result is converted to 1.63, Yn2 variable is reused  */
+      Yn2 = acc << shift;
+
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Store the output in the destination buffer in 1.31 format. */
+      *(pOut + 2u) = acc_h;
+
+      /* Read the fourth input into Xn, to reuse the value */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) Xn *b0;
+
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) Xn1 *b1;
+
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) Xn2 *b2;
+
+      /* acc +=  a1 * y[n-1] */
+      acc += mult32x64(Yn2, a1);
+
+      /* acc +=  a2 * y[n-2] */
+      acc += mult32x64(Yn1, a2);
+
+      /* The result is converted to 1.63, Yn1 variable is reused  */
+      Yn1 = acc << shift;
+
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Store the output in the destination buffer in 1.31 format. */
+      *(pOut + 3u) = acc_h;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc    */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+
+      /* update output pointer */
+      pOut += 4u;
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    sample = (blockSize & 0x3u);
+
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) Xn *b0;
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) Xn1 *b1;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) Xn2 *b2;
+      /* acc +=  a1 * y[n-1] */
+      acc += mult32x64(Yn1, a1);
+      /* acc +=  a2 * y[n-2] */
+      acc += mult32x64(Yn2, a2);
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc    */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+      Yn2 = Yn1;
+      /* The result is converted to 1.63, Yn1 variable is reused  */
+      Yn1 = acc << shift;
+
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Store the output in the destination buffer in 1.31 format. */
+      *pOut++ = acc_h;
+      /* Yn1 = acc << shift; */
+
+      /* Store the output in the destination buffer in 1.31 format. */
+/*      *pOut++ = (q31_t) (acc >> (32 - shift));  */
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /*  The first stage output is given as input to the second stage. */
+    pIn = pDst;
+
+    /* Reset to destination buffer working pointer */
+    pOut = pDst;
+
+    /*  Store the updated state variables back into the pState array */
+    /*  Store the updated state variables back into the pState array */
+    *pState++ = (q63_t) Xn1;
+    *pState++ = (q63_t) Xn2;
+    *pState++ = Yn1;
+    *pState++ = Yn2;
+
+  } while(--stage);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  do
+  {
+    /* Reading the coefficients */
+    b0 = *pCoeffs++;
+    b1 = *pCoeffs++;
+    b2 = *pCoeffs++;
+    a1 = *pCoeffs++;
+    a2 = *pCoeffs++;
+
+    /* Reading the state values */
+    Xn1 = pState[0];
+    Xn2 = pState[1];
+    Yn1 = pState[2];
+    Yn2 = pState[3];
+
+    /* The variable acc hold output value that is being computed and        
+     * stored in the destination buffer            
+     * acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]            
+     */
+
+    sample = blockSize;
+
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) Xn *b0;
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) Xn1 *b1;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) Xn2 *b2;
+      /* acc +=  a1 * y[n-1] */
+      acc += mult32x64(Yn1, a1);
+      /* acc +=  a2 * y[n-2] */
+      acc += mult32x64(Yn2, a2);
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc    */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+      Yn2 = Yn1;
+
+      /* The result is converted to 1.63, Yn1 variable is reused  */
+      Yn1 = acc << shift;
+
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Store the output in the destination buffer in 1.31 format. */
+      *pOut++ = acc_h;
+
+      /* Yn1 = acc << shift; */
+
+      /* Store the output in the destination buffer in 1.31 format. */
+      /* *pOut++ = (q31_t) (acc >> (32 - shift)); */
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /*  The first stage output is given as input to the second stage. */
+    pIn = pDst;
+
+    /* Reset to destination buffer working pointer */
+    pOut = pDst;
+
+    /*  Store the updated state variables back into the pState array */
+    *pState++ = (q63_t) Xn1;
+    *pState++ = (q63_t) Xn2;
+    *pState++ = Yn1;
+    *pState++ = Yn2;
+
+  } while(--stage);
+
+#endif /*    #ifndef ARM_MATH_CM0_FAMILY     */
+}
+
+  /**    
+   * @} end of BiquadCascadeDF1_32x64 group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,425 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df1_f32.c    
+*    
+* Description:	Processing function for the    
+*               floating-point Biquad cascade DirectFormI(DF1) filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup BiquadCascadeDF1 Biquad Cascade IIR Filters Using Direct Form I Structure    
+ *    
+ * This set of functions implements arbitrary order recursive (IIR) filters.    
+ * The filters are implemented as a cascade of second order Biquad sections.    
+ * The functions support Q15, Q31 and floating-point data types.  
+ * Fast version of Q15 and Q31 also supported on CortexM4 and Cortex-M3.    
+ *    
+ * The functions operate on blocks of input and output data and each call to the function    
+ * processes <code>blockSize</code> samples through the filter.    
+ * <code>pSrc</code> points to the array of input data and    
+ * <code>pDst</code> points to the array of output data.    
+ * Both arrays contain <code>blockSize</code> values.    
+ *    
+ * \par Algorithm    
+ * Each Biquad stage implements a second order filter using the difference equation:    
+ * <pre>    
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]    
+ * </pre>    
+ * A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage.    
+ * \image html Biquad.gif "Single Biquad filter stage"    
+ * Coefficients <code>b0, b1 and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.    
+ * Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.    
+ * Pay careful attention to the sign of the feedback coefficients.    
+ * Some design tools use the difference equation    
+ * <pre>    
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]    
+ * </pre>    
+ * In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.    
+ *    
+ * \par    
+ * Higher order filters are realized as a cascade of second order sections.    
+ * <code>numStages</code> refers to the number of second order stages used.    
+ * For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.    
+ * \image html BiquadCascade.gif "8th order filter using a cascade of Biquad stages"    
+ * A 9th order filter would be realized with <code>numStages=5</code> second order stages with the coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).    
+ *    
+ * \par    
+ * The <code>pState</code> points to state variables array.    
+ * Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.    
+ * The state variables are arranged in the <code>pState</code> array as:    
+ * <pre>    
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}    
+ * </pre>    
+ *    
+ * \par    
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>4*numStages</code> values.    
+ * The state variables are updated after each block of data is processed, the coefficients are untouched.    
+ *    
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter.    
+ * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.    
+ * There are separate instance structure declarations for each of the 3 supported data types.    
+ *    
+ * \par Init Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.    
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * numStages, pCoeffs, pState. Also set all of the values in pState to zero. 
+ *    
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * Set the values in the state buffer to zeros before static initialization.    
+ * The code below statically initializes each of the 3 different data type filter instance structures    
+ * <pre>    
+ *     arm_biquad_casd_df1_inst_f32 S1 = {numStages, pState, pCoeffs};    
+ *     arm_biquad_casd_df1_inst_q15 S2 = {numStages, pState, pCoeffs, postShift};    
+ *     arm_biquad_casd_df1_inst_q31 S3 = {numStages, pState, pCoeffs, postShift};    
+ * </pre>    
+ * where <code>numStages</code> is the number of Biquad stages in the filter; <code>pState</code> is the address of the state buffer;    
+ * <code>pCoeffs</code> is the address of the coefficient buffer; <code>postShift</code> shift to be applied.    
+ *    
+ * \par Fixed-Point Behavior    
+ * Care must be taken when using the Q15 and Q31 versions of the Biquad Cascade filter functions.    
+ * Following issues must be considered:    
+ * - Scaling of coefficients    
+ * - Filter gain    
+ * - Overflow and saturation    
+ *    
+ * \par    
+ * <b>Scaling of coefficients: </b>    
+ * Filter coefficients are represented as fractional values and    
+ * coefficients are restricted to lie in the range <code>[-1 +1)</code>.    
+ * The fixed-point functions have an additional scaling parameter <code>postShift</code>    
+ * which allow the filter coefficients to exceed the range <code>[+1 -1)</code>.    
+ * At the output of the filter's accumulator is a shift register which shifts the result by <code>postShift</code> bits.    
+ * \image html BiquadPostshift.gif "Fixed-point Biquad with shift by postShift bits after accumulator"    
+ * This essentially scales the filter coefficients by <code>2^postShift</code>.    
+ * For example, to realize the coefficients    
+ * <pre>    
+ *    {1.5, -0.8, 1.2, 1.6, -0.9}    
+ * </pre>    
+ * set the pCoeffs array to:    
+ * <pre>    
+ *    {0.75, -0.4, 0.6, 0.8, -0.45}    
+ * </pre>    
+ * and set <code>postShift=1</code>    
+ *    
+ * \par    
+ * <b>Filter gain: </b>    
+ * The frequency response of a Biquad filter is a function of its coefficients.    
+ * It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies.    
+ * This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter.    
+ * To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed.    
+ *    
+ * \par    
+ * <b>Overflow and saturation: </b>    
+ * For Q15 and Q31 versions, it is described separately as part of the function specific documentation below.    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1    
+ * @{    
+ */
+
+/**    
+ * @param[in]  *S         points to an instance of the floating-point Biquad cascade structure.    
+ * @param[in]  *pSrc      points to the block of input data.    
+ * @param[out] *pDst      points to the block of output data.    
+ * @param[in]  blockSize  number of samples to process per call.    
+ * @return     none.    
+ *    
+ */
+
+void arm_biquad_cascade_df1_f32(
+  const arm_biquad_casd_df1_inst_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t *pIn = pSrc;                         /*  source pointer            */
+  float32_t *pOut = pDst;                        /*  destination pointer       */
+  float32_t *pState = S->pState;                 /*  pState pointer            */
+  float32_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */
+  float32_t acc;                                 /*  Simulates the accumulator */
+  float32_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */
+  float32_t Xn1, Xn2, Yn1, Yn2;                  /*  Filter pState variables   */
+  float32_t Xn;                                  /*  temporary input           */
+  uint32_t sample, stage = S->numStages;         /*  loop counters             */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  do
+  {
+    /* Reading the coefficients */
+    b0 = *pCoeffs++;
+    b1 = *pCoeffs++;
+    b2 = *pCoeffs++;
+    a1 = *pCoeffs++;
+    a2 = *pCoeffs++;
+
+    /* Reading the pState values */
+    Xn1 = pState[0];
+    Xn2 = pState[1];
+    Yn1 = pState[2];
+    Yn2 = pState[3];
+
+    /* Apply loop unrolling and compute 4 output values simultaneously. */
+    /*      The variable acc hold output values that are being computed:    
+     *    
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1]   + a2 * y[n-2]    
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1]   + a2 * y[n-2]    
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1]   + a2 * y[n-2]    
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1]   + a2 * y[n-2]    
+     */
+
+    sample = blockSize >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(sample > 0u)
+    {
+      /* Read the first input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      Yn2 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2);
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = Yn2;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+
+      /* Read the second input */
+      Xn2 = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      Yn1 = (b0 * Xn2) + (b1 * Xn) + (b2 * Xn1) + (a1 * Yn2) + (a2 * Yn1);
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = Yn1;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+
+      /* Read the third input */
+      Xn1 = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      Yn2 = (b0 * Xn1) + (b1 * Xn2) + (b2 * Xn) + (a1 * Yn1) + (a2 * Yn2);
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = Yn2;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as: */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+
+      /* Read the forth input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      Yn1 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn2) + (a2 * Yn1);
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = Yn1;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+
+      /* decrement the loop counter */
+      sample--;
+
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    sample = blockSize & 0x3u;
+
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2);
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = acc;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:    */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+      Yn2 = Yn1;
+      Yn1 = acc;
+
+      /* decrement the loop counter */
+      sample--;
+
+    }
+
+    /*  Store the updated state variables back into the pState array */
+    *pState++ = Xn1;
+    *pState++ = Xn2;
+    *pState++ = Yn1;
+    *pState++ = Yn2;
+
+    /*  The first stage goes from the input buffer to the output buffer. */
+    /*  Subsequent numStages  occur in-place in the output buffer */
+    pIn = pDst;
+
+    /* Reset the output pointer */
+    pOut = pDst;
+
+    /* decrement the loop counter */
+    stage--;
+
+  } while(stage > 0u);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  do
+  {
+    /* Reading the coefficients */
+    b0 = *pCoeffs++;
+    b1 = *pCoeffs++;
+    b2 = *pCoeffs++;
+    a1 = *pCoeffs++;
+    a2 = *pCoeffs++;
+
+    /* Reading the pState values */
+    Xn1 = pState[0];
+    Xn2 = pState[1];
+    Yn1 = pState[2];
+    Yn2 = pState[3];
+
+    /*      The variables acc holds the output value that is computed:        
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1]   + a2 * y[n-2]        
+     */
+
+    sample = blockSize;
+
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2);
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = acc;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:    */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+      Yn2 = Yn1;
+      Yn1 = acc;
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /*  Store the updated state variables back into the pState array */
+    *pState++ = Xn1;
+    *pState++ = Xn2;
+    *pState++ = Yn1;
+    *pState++ = Yn2;
+
+    /*  The first stage goes from the input buffer to the output buffer. */
+    /*  Subsequent numStages  occur in-place in the output buffer */
+    pIn = pDst;
+
+    /* Reset the output pointer */
+    pOut = pDst;
+
+    /* decrement the loop counter */
+    stage--;
+
+  } while(stage > 0u);
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY         */
+
+}
+
+
+  /**    
+   * @} end of BiquadCascadeDF1 group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,286 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df1_fast_q15.c    
+*    
+* Description:	Fast processing function for the    
+*				Q15 Biquad cascade filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1    
+ * @{    
+ */
+
+/**    
+ * @details    
+ * @param[in]  *S points to an instance of the Q15 Biquad cascade structure.    
+ * @param[in]  *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data.    
+ * @param[in]  blockSize number of samples to process per call.    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * This fast version uses a 32-bit accumulator with 2.30 format.    
+ * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around and distorts the result.    
+ * In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25).    
+ * The 2.30 accumulator is then shifted by <code>postShift</code> bits and the result truncated to 1.15 format by discarding the low 16 bits.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_biquad_cascade_df1_q15()</code> for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.  Both the slow and the fast versions use the same instance structure.    
+ * Use the function <code>arm_biquad_cascade_df1_init_q15()</code> to initialize the filter structure.    
+ *    
+ */
+
+void arm_biquad_cascade_df1_fast_q15(
+  const arm_biquad_casd_df1_inst_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pIn = pSrc;                             /*  Source pointer                               */
+  q15_t *pOut = pDst;                            /*  Destination pointer                          */
+  q31_t in;                                      /*  Temporary variable to hold input value       */
+  q31_t out;                                     /*  Temporary variable to hold output value      */
+  q31_t b0;                                      /*  Temporary variable to hold bo value          */
+  q31_t b1, a1;                                  /*  Filter coefficients                          */
+  q31_t state_in, state_out;                     /*  Filter state variables                       */
+  q31_t acc;                                     /*  Accumulator                                  */
+  int32_t shift = (int32_t) (15 - S->postShift); /*  Post shift                                   */
+  q15_t *pState = S->pState;                     /*  State pointer                                */
+  q15_t *pCoeffs = S->pCoeffs;                   /*  Coefficient pointer                          */
+  uint32_t sample, stage = S->numStages;         /*  Stage loop counter                           */
+
+
+
+  do
+  {
+
+    /* Read the b0 and 0 coefficients using SIMD  */
+    b0 = *__SIMD32(pCoeffs)++;
+
+    /* Read the b1 and b2 coefficients using SIMD */
+    b1 = *__SIMD32(pCoeffs)++;
+
+    /* Read the a1 and a2 coefficients using SIMD */
+    a1 = *__SIMD32(pCoeffs)++;
+
+    /* Read the input state values from the state buffer:  x[n-1], x[n-2] */
+    state_in = *__SIMD32(pState)++;
+
+    /* Read the output state values from the state buffer:  y[n-1], y[n-2] */
+    state_out = *__SIMD32(pState)--;
+
+    /* Apply loop unrolling and compute 2 output values simultaneously. */
+    /*      The variable acc hold output values that are being computed:       
+     *    
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]       
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]       
+     */
+    sample = blockSize >> 1u;
+
+    /* First part of the processing with loop unrolling.  Compute 2 outputs at a time.    
+     ** a second loop below computes the remaining 1 sample. */
+    while(sample > 0u)
+    {
+
+      /* Read the input */
+      in = *__SIMD32(pIn)++;
+
+      /* out =  b0 * x[n] + 0 * 0 */
+      out = __SMUAD(b0, in);
+      /* acc =  b1 * x[n-1] + acc +=  b2 * x[n-2] + out */
+      acc = __SMLAD(b1, state_in, out);
+      /* acc +=  a1 * y[n-1] + acc +=  a2 * y[n-2] */
+      acc = __SMLAD(a1, state_out, acc);
+
+      /* The result is converted from 3.29 to 1.31 and then saturation is applied */
+      out = __SSAT((acc >> shift), 16);
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */
+      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      state_in = __PKHBT(in, state_in, 16);
+      state_out = __PKHBT(out, state_out, 16);
+
+#else
+
+      state_in = __PKHBT(state_in >> 16, (in >> 16), 16);
+      state_out = __PKHBT(state_out >> 16, (out), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* out =  b0 * x[n] + 0 * 0 */
+      out = __SMUADX(b0, in);
+      /* acc0 =  b1 * x[n-1] , acc0 +=  b2 * x[n-2] + out */
+      acc = __SMLAD(b1, state_in, out);
+      /* acc +=  a1 * y[n-1] + acc +=  a2 * y[n-2] */
+      acc = __SMLAD(a1, state_out, acc);
+
+      /* The result is converted from 3.29 to 1.31 and then saturation is applied */
+      out = __SSAT((acc >> shift), 16);
+
+
+      /* Store the output in the destination buffer. */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pOut)++ = __PKHBT(state_out, out, 16);
+
+#else
+
+      *__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */
+      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      state_in = __PKHBT(in >> 16, state_in, 16);
+      state_out = __PKHBT(out, state_out, 16);
+
+#else
+
+      state_in = __PKHBT(state_in >> 16, in, 16);
+      state_out = __PKHBT(state_out >> 16, out, 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+
+      /* Decrement the loop counter */
+      sample--;
+
+    }
+
+    /* If the blockSize is not a multiple of 2, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+
+    if((blockSize & 0x1u) != 0u)
+    {
+      /* Read the input */
+      in = *pIn++;
+
+      /* out =  b0 * x[n] + 0 * 0 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      out = __SMUAD(b0, in);
+
+#else
+
+      out = __SMUADX(b0, in);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* acc =  b1 * x[n-1], acc +=  b2 * x[n-2] + out */
+      acc = __SMLAD(b1, state_in, out);
+      /* acc +=  a1 * y[n-1] + acc +=  a2 * y[n-2] */
+      acc = __SMLAD(a1, state_out, acc);
+
+      /* The result is converted from 3.29 to 1.31 and then saturation is applied */
+      out = __SSAT((acc >> shift), 16);
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = (q15_t) out;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */
+      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      state_in = __PKHBT(in, state_in, 16);
+      state_out = __PKHBT(out, state_out, 16);
+
+#else
+
+      state_in = __PKHBT(state_in >> 16, in, 16);
+      state_out = __PKHBT(state_out >> 16, out, 16);
+
+#endif /*   #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+    }
+
+    /*  The first stage goes from the input buffer to the output buffer.  */
+    /*  Subsequent (numStages - 1) occur in-place in the output buffer  */
+    pIn = pDst;
+
+    /* Reset the output pointer */
+    pOut = pDst;
+
+    /*  Store the updated state variables back into the state array */
+    *__SIMD32(pState)++ = state_in;
+    *__SIMD32(pState)++ = state_out;
+
+
+    /* Decrement the loop counter */
+    stage--;
+
+  } while(stage > 0u);
+}
+
+
+/**    
+ * @} end of BiquadCascadeDF1 group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,305 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. October 2015
+* $Revision: 	V.1.4.5 a
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df1_fast_q31.c    
+*    
+* Description:	Processing function for the    
+*				Q31 Fast Biquad cascade DirectFormI(DF1) filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1    
+ * @{    
+ */
+
+/**    
+ * @details    
+ *    
+ * @param[in]  *S        points to an instance of the Q31 Biquad cascade structure.    
+ * @param[in]  *pSrc     points to the block of input data.    
+ * @param[out] *pDst     points to the block of output data.    
+ * @param[in]  blockSize number of samples to process per call.    
+ * @return 	   none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * This function is optimized for speed at the expense of fixed-point precision and overflow protection.    
+ * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.    
+ * These intermediate results are added to a 2.30 accumulator.    
+ * Finally, the accumulator is saturated and converted to a 1.31 result.    
+ * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result.    
+ * In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). Use the intialization function    
+ * arm_biquad_cascade_df1_init_q31() to initialize filter structure.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_biquad_cascade_df1_q31()</code> for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.  Both the slow and the fast versions use the same instance structure.    
+ * Use the function <code>arm_biquad_cascade_df1_init_q31()</code> to initialize the filter structure.    
+ */
+
+void arm_biquad_cascade_df1_fast_q31(
+  const arm_biquad_casd_df1_inst_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t acc = 0;                                 /*  accumulator                   */
+  q31_t Xn1, Xn2, Yn1, Yn2;                      /*  Filter state variables        */
+  q31_t b0, b1, b2, a1, a2;                      /*  Filter coefficients           */
+  q31_t *pIn = pSrc;                             /*  input pointer initialization  */
+  q31_t *pOut = pDst;                            /*  output pointer initialization */
+  q31_t *pState = S->pState;                     /*  pState pointer initialization */
+  q31_t *pCoeffs = S->pCoeffs;                   /*  coeff pointer initialization  */
+  q31_t Xn;                                      /*  temporary input               */
+  int32_t shift = (int32_t) S->postShift + 1;    /*  Shift to be applied to the output */
+  uint32_t sample, stage = S->numStages;         /*  loop counters                     */
+
+
+  do
+  {
+    /* Reading the coefficients */
+    b0 = *pCoeffs++;
+    b1 = *pCoeffs++;
+    b2 = *pCoeffs++;
+    a1 = *pCoeffs++;
+    a2 = *pCoeffs++;
+
+    /* Reading the state values */
+    Xn1 = pState[0];
+    Xn2 = pState[1];
+    Yn1 = pState[2];
+    Yn2 = pState[3];
+
+    /* Apply loop unrolling and compute 4 output values simultaneously. */
+    /*      The variables acc ... acc3 hold output values that are being computed:       
+     *       
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]       
+     */
+
+    sample = blockSize >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.       
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      /*acc = (q31_t) (((q63_t) b1 * Xn1) >> 32);*/
+      mult_32x32_keep32_R(acc, b1, Xn1);
+      /* acc +=  b1 * x[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b0 * (Xn))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b0, Xn);
+      /* acc +=  b[2] * x[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b2, Xn2);
+      /* acc +=  a1 * y[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a1, Yn1);
+      /* acc +=  a2 * y[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a2, Yn2);
+
+      /* The result is converted to 1.31 , Yn2 variable is reused */
+      Yn2 = acc << shift;
+
+      /* Read the second input */
+      Xn2 = *(pIn + 1u);
+
+      /* Store the output in the destination buffer. */
+      *pOut = Yn2;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      /*acc = (q31_t) (((q63_t) b0 * (Xn2)) >> 32);*/
+      mult_32x32_keep32_R(acc, b0, Xn2);
+      /* acc +=  b1 * x[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b1, Xn);
+      /* acc +=  b[2] * x[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn1))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b2, Xn1);
+      /* acc +=  a1 * y[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a1, Yn2);
+      /* acc +=  a2 * y[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a2, Yn1);
+
+      /* The result is converted to 1.31, Yn1 variable is reused  */
+      Yn1 = acc << shift;
+
+      /* Read the third input  */
+      Xn1 = *(pIn + 2u);
+
+      /* Store the output in the destination buffer. */
+      *(pOut + 1u) = Yn1;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      /*acc = (q31_t) (((q63_t) b0 * (Xn1)) >> 32);*/
+      mult_32x32_keep32_R(acc, b0, Xn1);
+      /* acc +=  b1 * x[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b1, Xn2);
+      /* acc +=  b[2] * x[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b2, Xn);
+      /* acc +=  a1 * y[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a1, Yn1);
+      /* acc +=  a2 * y[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a2, Yn2);
+
+      /* The result is converted to 1.31, Yn2 variable is reused  */
+      Yn2 = acc << shift;
+
+      /* Read the forth input */
+      Xn = *(pIn + 3u);
+
+      /* Store the output in the destination buffer. */
+      *(pOut + 2u) = Yn2;
+      pIn += 4u;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      /*acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/
+      mult_32x32_keep32_R(acc, b0, Xn);
+      /* acc +=  b1 * x[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b1, Xn1);
+      /* acc +=  b[2] * x[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b2, Xn2);
+      /* acc +=  a1 * y[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a1, Yn2);
+      /* acc +=  a2 * y[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a2, Yn1);
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      Xn2 = Xn1;
+
+      /* The result is converted to 1.31, Yn1 variable is reused  */
+      Yn1 = acc << shift;
+
+      /* Xn1 = Xn     */
+      Xn1 = Xn;
+
+      /* Store the output in the destination buffer. */
+      *(pOut + 3u) = Yn1;
+      pOut += 4u;
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.       
+     ** No loop unrolling is used. */
+    sample = (blockSize & 0x3u);
+
+   while(sample > 0u)
+   {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      /*acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/
+      mult_32x32_keep32_R(acc, b0, Xn);
+      /* acc +=  b1 * x[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b1, Xn1);
+      /* acc +=  b[2] * x[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, b2, Xn2);
+      /* acc +=  a1 * y[n-1] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a1, Yn1);
+      /* acc +=  a2 * y[n-2] */
+      /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/
+      multAcc_32x32_keep32_R(acc, a2, Yn2);
+
+      /* The result is converted to 1.31  */
+      acc = acc << shift;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc    */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+      Yn2 = Yn1;
+      Yn1 = acc;
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = acc;
+
+      /* decrement the loop counter */
+      sample--;
+   }
+
+    /*  The first stage goes from the input buffer to the output buffer. */
+    /*  Subsequent stages occur in-place in the output buffer */
+    pIn = pDst;
+
+    /* Reset to destination pointer */
+    pOut = pDst;
+
+    /*  Store the updated state variables back into the pState array */
+    *pState++ = Xn1;
+    *pState++ = Xn2;
+    *pState++ = Yn1;
+    *pState++ = Yn2;
+
+  } while(--stage);
+}
+
+/**    
+  * @} end of BiquadCascadeDF1 group    
+  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,109 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_biquad_cascade_df1_init_f32.c    
+*    
+* Description:  floating-point Biquad cascade DirectFormI(DF1) filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1    
+ * @{    
+ */
+
+/**    
+ * @details    
+ * @brief  Initialization function for the floating-point Biquad cascade filter.    
+ * @param[in,out] *S           points to an instance of the floating-point Biquad cascade structure.    
+ * @param[in]     numStages    number of 2nd order stages in the filter.    
+ * @param[in]     *pCoeffs     points to the filter coefficients array.    
+ * @param[in]     *pState      points to the state array.    
+ * @return        none    
+ *    
+ *    
+ * <b>Coefficient and State Ordering:</b>    
+ *    
+ * \par    
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:    
+ * <pre>    
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}    
+ * </pre>    
+ *    
+ * \par    
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,    
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,    
+ * and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.    
+ *    
+ * \par    
+ * The <code>pState</code> is a pointer to state array.    
+ * Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.    
+ * The state variables are arranged in the <code>pState</code> array as:    
+ * <pre>    
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}    
+ * </pre>    
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>4*numStages</code> values.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ *    
+ */
+
+void arm_biquad_cascade_df1_init_f32(
+  arm_biquad_casd_df1_inst_f32 * S,
+  uint8_t numStages,
+  float32_t * pCoeffs,
+  float32_t * pState)
+{
+  /* Assign filter stages */
+  S->numStages = numStages;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always 4 * numStages */
+  memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+}
+
+/**    
+ * @} end of BiquadCascadeDF1 group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,111 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_biquad_cascade_df1_init_q15.c    
+*    
+* Description:  Q15 Biquad cascade DirectFormI(DF1) filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1    
+ * @{    
+ */
+
+/**    
+ * @details    
+ *    
+ * @param[in,out] *S           points to an instance of the Q15 Biquad cascade structure.    
+ * @param[in]     numStages    number of 2nd order stages in the filter.    
+ * @param[in]     *pCoeffs     points to the filter coefficients.    
+ * @param[in]     *pState      points to the state buffer.    
+ * @param[in]     postShift    Shift to be applied to the accumulator result. Varies according to the coefficients format    
+ * @return        none    
+ *    
+ * <b>Coefficient and State Ordering:</b>    
+ *    
+ * \par    
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:    
+ * <pre>    
+ *     {b10, 0, b11, b12, a11, a12, b20, 0, b21, b22, a21, a22, ...}    
+ * </pre>    
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,    
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,    
+ * and so on.  The <code>pCoeffs</code> array contains a total of <code>6*numStages</code> values.    
+ * The zero coefficient between <code>b1</code> and <code>b2</code> facilities  use of 16-bit SIMD instructions on the Cortex-M4.    
+ *    
+ * \par    
+ * The state variables are stored in the array <code>pState</code>.    
+ * Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.    
+ * The state variables are arranged in the <code>pState</code> array as:    
+ * <pre>    
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}    
+ * </pre>    
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>4*numStages</code> values.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ */
+
+void arm_biquad_cascade_df1_init_q15(
+  arm_biquad_casd_df1_inst_q15 * S,
+  uint8_t numStages,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  int8_t postShift)
+{
+  /* Assign filter stages */
+  S->numStages = numStages;
+
+  /* Assign postShift to be applied to the output */
+  S->postShift = postShift;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always 4 * numStages */
+  memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(q15_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+}
+
+/**    
+ * @} end of BiquadCascadeDF1 group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,111 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df1_init_q31.c    
+*    
+* Description:	Q31 Biquad cascade DirectFormI(DF1) filter initialization function.    
+*    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1    
+ * @{    
+ */
+
+/**    
+ * @details    
+ *    
+ * @param[in,out] *S           points to an instance of the Q31 Biquad cascade structure.    
+ * @param[in]     numStages    number of 2nd order stages in the filter.    
+ * @param[in]     *pCoeffs     points to the filter coefficients buffer.    
+ * @param[in]     *pState      points to the state buffer.    
+ * @param[in]     postShift    Shift to be applied after the accumulator.  Varies according to the coefficients format    
+ * @return        none    
+ *    
+ * <b>Coefficient and State Ordering:</b>    
+ *    
+ * \par    
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:    
+ * <pre>    
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}    
+ * </pre>    
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,    
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,    
+ * and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.    
+ *    
+ * \par    
+ * The <code>pState</code> points to state variables array.    
+ * Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>.    
+ * The state variables are arranged in the <code>pState</code> array as:    
+ * <pre>    
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}    
+ * </pre>    
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>4*numStages</code> values.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ */
+
+void arm_biquad_cascade_df1_init_q31(
+  arm_biquad_casd_df1_inst_q31 * S,
+  uint8_t numStages,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  int8_t postShift)
+{
+  /* Assign filter stages */
+  S->numStages = numStages;
+
+  /* Assign postShift to be applied to the output */
+  S->postShift = postShift;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always 4 * numStages */
+  memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(q31_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+}
+
+/**    
+ * @} end of BiquadCascadeDF1 group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,411 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df1_q15.c    
+*    
+* Description:	Processing function for the    
+*				Q15 Biquad cascade DirectFormI(DF1) filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q15 Biquad cascade filter.    
+ * @param[in]  *S points to an instance of the Q15 Biquad cascade structure.    
+ * @param[in]  *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the location where the output result is written.    
+ * @param[in]  blockSize number of samples to process per call.    
+ * @return none.    
+ *    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.    
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.    
+ * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.    
+ * The accumulator is then shifted by <code>postShift</code> bits to truncate the result to 1.15 format by discarding the low 16 bits.    
+ * Finally, the result is saturated to 1.15 format.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_biquad_cascade_df1_fast_q15()</code> for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4.    
+ */
+
+void arm_biquad_cascade_df1_q15(
+  const arm_biquad_casd_df1_inst_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q15_t *pIn = pSrc;                             /*  Source pointer                               */
+  q15_t *pOut = pDst;                            /*  Destination pointer                          */
+  q31_t in;                                      /*  Temporary variable to hold input value       */
+  q31_t out;                                     /*  Temporary variable to hold output value      */
+  q31_t b0;                                      /*  Temporary variable to hold bo value          */
+  q31_t b1, a1;                                  /*  Filter coefficients                          */
+  q31_t state_in, state_out;                     /*  Filter state variables                       */
+  q31_t acc_l, acc_h;
+  q63_t acc;                                     /*  Accumulator                                  */
+  int32_t lShift = (15 - (int32_t) S->postShift);       /*  Post shift                                   */
+  q15_t *pState = S->pState;                     /*  State pointer                                */
+  q15_t *pCoeffs = S->pCoeffs;                   /*  Coefficient pointer                          */
+  uint32_t sample, stage = (uint32_t) S->numStages;     /*  Stage loop counter                           */
+  int32_t uShift = (32 - lShift);
+
+  do
+  {
+    /* Read the b0 and 0 coefficients using SIMD  */
+    b0 = *__SIMD32(pCoeffs)++;
+
+    /* Read the b1 and b2 coefficients using SIMD */
+    b1 = *__SIMD32(pCoeffs)++;
+
+    /* Read the a1 and a2 coefficients using SIMD */
+    a1 = *__SIMD32(pCoeffs)++;
+
+    /* Read the input state values from the state buffer:  x[n-1], x[n-2] */
+    state_in = *__SIMD32(pState)++;
+
+    /* Read the output state values from the state buffer:  y[n-1], y[n-2] */
+    state_out = *__SIMD32(pState)--;
+
+    /* Apply loop unrolling and compute 2 output values simultaneously. */
+    /*      The variable acc hold output values that are being computed:    
+     *    
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]    
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]    
+     */
+    sample = blockSize >> 1u;
+
+    /* First part of the processing with loop unrolling.  Compute 2 outputs at a time.    
+     ** a second loop below computes the remaining 1 sample. */
+    while(sample > 0u)
+    {
+
+      /* Read the input */
+      in = *__SIMD32(pIn)++;
+
+      /* out =  b0 * x[n] + 0 * 0 */
+      out = __SMUAD(b0, in);
+
+      /* acc +=  b1 * x[n-1] +  b2 * x[n-2] + out */
+      acc = __SMLALD(b1, state_in, out);
+      /* acc +=  a1 * y[n-1] +  a2 * y[n-2] */
+      acc = __SMLALD(a1, state_out, acc);
+
+      /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      out = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      out = __SSAT(out, 16);
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */
+      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      state_in = __PKHBT(in, state_in, 16);
+      state_out = __PKHBT(out, state_out, 16);
+
+#else
+
+      state_in = __PKHBT(state_in >> 16, (in >> 16), 16);
+      state_out = __PKHBT(state_out >> 16, (out), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* out =  b0 * x[n] + 0 * 0 */
+      out = __SMUADX(b0, in);
+      /* acc +=  b1 * x[n-1] +  b2 * x[n-2] + out */
+      acc = __SMLALD(b1, state_in, out);
+      /* acc +=  a1 * y[n-1] + a2 * y[n-2] */
+      acc = __SMLALD(a1, state_out, acc);
+
+      /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      out = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      out = __SSAT(out, 16);
+
+      /* Store the output in the destination buffer. */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pOut)++ = __PKHBT(state_out, out, 16);
+
+#else
+
+      *__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */
+      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      state_in = __PKHBT(in >> 16, state_in, 16);
+      state_out = __PKHBT(out, state_out, 16);
+
+#else
+
+      state_in = __PKHBT(state_in >> 16, in, 16);
+      state_out = __PKHBT(state_out >> 16, out, 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+
+      /* Decrement the loop counter */
+      sample--;
+
+    }
+
+    /* If the blockSize is not a multiple of 2, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+
+    if((blockSize & 0x1u) != 0u)
+    {
+      /* Read the input */
+      in = *pIn++;
+
+      /* out =  b0 * x[n] + 0 * 0 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      out = __SMUAD(b0, in);
+
+#else
+
+      out = __SMUADX(b0, in);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* acc =  b1 * x[n-1] + b2 * x[n-2] + out */
+      acc = __SMLALD(b1, state_in, out);
+      /* acc +=  a1 * y[n-1] + a2 * y[n-2] */
+      acc = __SMLALD(a1, state_out, acc);
+
+      /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      out = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      out = __SSAT(out, 16);
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = (q15_t) out;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc   */
+      /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */
+      /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      state_in = __PKHBT(in, state_in, 16);
+      state_out = __PKHBT(out, state_out, 16);
+
+#else
+
+      state_in = __PKHBT(state_in >> 16, in, 16);
+      state_out = __PKHBT(state_out >> 16, out, 16);
+
+#endif /*   #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+    }
+
+    /*  The first stage goes from the input wire to the output wire.  */
+    /*  Subsequent numStages occur in-place in the output wire  */
+    pIn = pDst;
+
+    /* Reset the output pointer */
+    pOut = pDst;
+
+    /*  Store the updated state variables back into the state array */
+    *__SIMD32(pState)++ = state_in;
+    *__SIMD32(pState)++ = state_out;
+
+
+    /* Decrement the loop counter */
+    stage--;
+
+  } while(stage > 0u);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q15_t *pIn = pSrc;                             /*  Source pointer                               */
+  q15_t *pOut = pDst;                            /*  Destination pointer                          */
+  q15_t b0, b1, b2, a1, a2;                      /*  Filter coefficients           */
+  q15_t Xn1, Xn2, Yn1, Yn2;                      /*  Filter state variables        */
+  q15_t Xn;                                      /*  temporary input               */
+  q63_t acc;                                     /*  Accumulator                                  */
+  int32_t shift = (15 - (int32_t) S->postShift); /*  Post shift                                   */
+  q15_t *pState = S->pState;                     /*  State pointer                                */
+  q15_t *pCoeffs = S->pCoeffs;                   /*  Coefficient pointer                          */
+  uint32_t sample, stage = (uint32_t) S->numStages;     /*  Stage loop counter                           */
+
+  do
+  {
+    /* Reading the coefficients */
+    b0 = *pCoeffs++;
+    pCoeffs++;  // skip the 0 coefficient
+    b1 = *pCoeffs++;
+    b2 = *pCoeffs++;
+    a1 = *pCoeffs++;
+    a2 = *pCoeffs++;
+
+    /* Reading the state values */
+    Xn1 = pState[0];
+    Xn2 = pState[1];
+    Yn1 = pState[2];
+    Yn2 = pState[3];
+
+    /*      The variables acc holds the output value that is computed:         
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]         
+     */
+
+    sample = blockSize;
+
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      acc = (q31_t) b0 *Xn;
+
+      /* acc +=  b1 * x[n-1] */
+      acc += (q31_t) b1 *Xn1;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q31_t) b2 *Xn2;
+      /* acc +=  a1 * y[n-1] */
+      acc += (q31_t) a1 *Yn1;
+      /* acc +=  a2 * y[n-2] */
+      acc += (q31_t) a2 *Yn2;
+
+      /* The result is converted to 1.31  */
+      acc = __SSAT((acc >> shift), 16);
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc    */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+      Yn2 = Yn1;
+      Yn1 = (q15_t) acc;
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = (q15_t) acc;
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /*  The first stage goes from the input buffer to the output buffer. */
+    /*  Subsequent stages occur in-place in the output buffer */
+    pIn = pDst;
+
+    /* Reset to destination pointer */
+    pOut = pDst;
+
+    /*  Store the updated state variables back into the pState array */
+    *pState++ = Xn1;
+    *pState++ = Xn2;
+    *pState++ = Yn1;
+    *pState++ = Yn2;
+
+  } while(--stage);
+
+#endif /*     #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+
+/**    
+ * @} end of BiquadCascadeDF1 group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,405 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df1_q31.c    
+*    
+* Description:	Processing function for the    
+*				Q31 Biquad cascade filter    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF1    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q31 Biquad cascade filter.    
+ * @param[in]  *S         points to an instance of the Q31 Biquad cascade structure.    
+ * @param[in]  *pSrc      points to the block of input data.    
+ * @param[out] *pDst      points to the block of output data.    
+ * @param[in]  blockSize  number of samples to process per call.    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around rather than clip.    
+ * In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25).    
+ * After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by <code>postShift</code> bits and the result truncated to    
+ * 1.31 format by discarding the low 32 bits.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_biquad_cascade_df1_fast_q31()</code> for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4.    
+ */
+
+void arm_biquad_cascade_df1_q31(
+  const arm_biquad_casd_df1_inst_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q63_t acc;                                     /*  accumulator                   */
+  uint32_t uShift = ((uint32_t) S->postShift + 1u);
+  uint32_t lShift = 32u - uShift;                /*  Shift to be applied to the output */
+  q31_t *pIn = pSrc;                             /*  input pointer initialization  */
+  q31_t *pOut = pDst;                            /*  output pointer initialization */
+  q31_t *pState = S->pState;                     /*  pState pointer initialization */
+  q31_t *pCoeffs = S->pCoeffs;                   /*  coeff pointer initialization  */
+  q31_t Xn1, Xn2, Yn1, Yn2;                      /*  Filter state variables        */
+  q31_t b0, b1, b2, a1, a2;                      /*  Filter coefficients           */
+  q31_t Xn;                                      /*  temporary input               */
+  uint32_t sample, stage = S->numStages;         /*  loop counters                     */
+
+
+#ifndef ARM_MATH_CM0_FAMILY_FAMILY
+
+  q31_t acc_l, acc_h;                            /*  temporary output variables    */
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  do
+  {
+    /* Reading the coefficients */
+    b0 = *pCoeffs++;
+    b1 = *pCoeffs++;
+    b2 = *pCoeffs++;
+    a1 = *pCoeffs++;
+    a2 = *pCoeffs++;
+
+    /* Reading the state values */
+    Xn1 = pState[0];
+    Xn2 = pState[1];
+    Yn1 = pState[2];
+    Yn2 = pState[3];
+
+    /* Apply loop unrolling and compute 4 output values simultaneously. */
+    /*      The variable acc hold output values that are being computed:    
+     *    
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]    
+     */
+
+    sample = blockSize >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) b0 *Xn;
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) b1 *Xn1;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) b2 *Xn2;
+      /* acc +=  a1 * y[n-1] */
+      acc += (q63_t) a1 *Yn1;
+      /* acc +=  a2 * y[n-2] */
+      acc += (q63_t) a2 *Yn2;
+
+      /* The result is converted to 1.31 , Yn2 variable is reused */
+
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = Yn2;
+
+      /* Read the second input */
+      Xn2 = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) b0 *Xn2;
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) b1 *Xn;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) b2 *Xn1;
+      /* acc +=  a1 * y[n-1] */
+      acc += (q63_t) a1 *Yn2;
+      /* acc +=  a2 * y[n-2] */
+      acc += (q63_t) a2 *Yn1;
+
+
+      /* The result is converted to 1.31, Yn1 variable is reused  */
+
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = Yn1;
+
+      /* Read the third input  */
+      Xn1 = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) b0 *Xn1;
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) b1 *Xn2;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) b2 *Xn;
+      /* acc +=  a1 * y[n-1] */
+      acc += (q63_t) a1 *Yn1;
+      /* acc +=  a2 * y[n-2] */
+      acc += (q63_t) a2 *Yn2;
+
+      /* The result is converted to 1.31, Yn2 variable is reused  */
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = Yn2;
+
+      /* Read the forth input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) b0 *Xn;
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) b1 *Xn1;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) b2 *Xn2;
+      /* acc +=  a1 * y[n-1] */
+      acc += (q63_t) a1 *Yn2;
+      /* acc +=  a2 * y[n-2] */
+      acc += (q63_t) a2 *Yn1;
+
+      /* The result is converted to 1.31, Yn1 variable is reused  */
+      /* Calc lower part of acc */
+      acc_l = acc & 0xffffffff;
+
+      /* Calc upper part of acc */
+      acc_h = (acc >> 32) & 0xffffffff;
+
+      /* Apply shift for lower part of acc and upper part of acc */
+      Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc    */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = Yn1;
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    sample = (blockSize & 0x3u);
+
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) b0 *Xn;
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) b1 *Xn1;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) b2 *Xn2;
+      /* acc +=  a1 * y[n-1] */
+      acc += (q63_t) a1 *Yn1;
+      /* acc +=  a2 * y[n-2] */
+      acc += (q63_t) a2 *Yn2;
+
+      /* The result is converted to 1.31  */
+      acc = acc >> lShift;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc    */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+      Yn2 = Yn1;
+      Yn1 = (q31_t) acc;
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = (q31_t) acc;
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /*  The first stage goes from the input buffer to the output buffer. */
+    /*  Subsequent stages occur in-place in the output buffer */
+    pIn = pDst;
+
+    /* Reset to destination pointer */
+    pOut = pDst;
+
+    /*  Store the updated state variables back into the pState array */
+    *pState++ = Xn1;
+    *pState++ = Xn2;
+    *pState++ = Yn1;
+    *pState++ = Yn2;
+
+  } while(--stage);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  do
+  {
+    /* Reading the coefficients */
+    b0 = *pCoeffs++;
+    b1 = *pCoeffs++;
+    b2 = *pCoeffs++;
+    a1 = *pCoeffs++;
+    a2 = *pCoeffs++;
+
+    /* Reading the state values */
+    Xn1 = pState[0];
+    Xn2 = pState[1];
+    Yn1 = pState[2];
+    Yn2 = pState[3];
+
+    /*      The variables acc holds the output value that is computed:         
+     *    acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]         
+     */
+
+    sample = blockSize;
+
+    while(sample > 0u)
+    {
+      /* Read the input */
+      Xn = *pIn++;
+
+      /* acc =  b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
+      /* acc =  b0 * x[n] */
+      acc = (q63_t) b0 *Xn;
+
+      /* acc +=  b1 * x[n-1] */
+      acc += (q63_t) b1 *Xn1;
+      /* acc +=  b[2] * x[n-2] */
+      acc += (q63_t) b2 *Xn2;
+      /* acc +=  a1 * y[n-1] */
+      acc += (q63_t) a1 *Yn1;
+      /* acc +=  a2 * y[n-2] */
+      acc += (q63_t) a2 *Yn2;
+
+      /* The result is converted to 1.31  */
+      acc = acc >> lShift;
+
+      /* Every time after the output is computed state should be updated. */
+      /* The states should be updated as:  */
+      /* Xn2 = Xn1    */
+      /* Xn1 = Xn     */
+      /* Yn2 = Yn1    */
+      /* Yn1 = acc    */
+      Xn2 = Xn1;
+      Xn1 = Xn;
+      Yn2 = Yn1;
+      Yn1 = (q31_t) acc;
+
+      /* Store the output in the destination buffer. */
+      *pOut++ = (q31_t) acc;
+
+      /* decrement the loop counter */
+      sample--;
+    }
+
+    /*  The first stage goes from the input buffer to the output buffer. */
+    /*  Subsequent stages occur in-place in the output buffer */
+    pIn = pDst;
+
+    /* Reset to destination pointer */
+    pOut = pDst;
+
+    /*  Store the updated state variables back into the pState array */
+    *pState++ = Xn1;
+    *pState++ = Xn2;
+    *pState++ = Yn1;
+    *pState++ = Yn2;
+
+  } while(--stage);
+
+#endif /*  #ifndef ARM_MATH_CM0_FAMILY_FAMILY */
+}
+
+
+
+
+/**    
+  * @} end of BiquadCascadeDF1 group    
+  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,603 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df2T_f32.c    
+*    
+* Description:  Processing function for the floating-point transposed    
+*               direct form II Biquad cascade filter.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**       
+* @ingroup groupFilters       
+*/
+
+/**       
+* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure       
+*       
+* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure.       
+* The filters are implemented as a cascade of second order Biquad sections.       
+* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions.      
+* Only floating-point data is supported.       
+*       
+* This function operate on blocks of input and output data and each call to the function       
+* processes <code>blockSize</code> samples through the filter.       
+* <code>pSrc</code> points to the array of input data and       
+* <code>pDst</code> points to the array of output data.       
+* Both arrays contain <code>blockSize</code> values.       
+*       
+* \par Algorithm       
+* Each Biquad stage implements a second order filter using the difference equation:       
+* <pre>       
+*    y[n] = b0 * x[n] + d1       
+*    d1 = b1 * x[n] + a1 * y[n] + d2       
+*    d2 = b2 * x[n] + a2 * y[n]       
+* </pre>       
+* where d1 and d2 represent the two state values.       
+*       
+* \par       
+* A Biquad filter using a transposed Direct Form II structure is shown below.       
+* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad"       
+* Coefficients <code>b0, b1, and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.       
+* Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.       
+* Pay careful attention to the sign of the feedback coefficients.       
+* Some design tools flip the sign of the feedback coefficients:       
+* <pre>       
+*    y[n] = b0 * x[n] + d1;       
+*    d1 = b1 * x[n] - a1 * y[n] + d2;       
+*    d2 = b2 * x[n] - a2 * y[n];       
+* </pre>       
+* In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.       
+*       
+* \par       
+* Higher order filters are realized as a cascade of second order sections.       
+* <code>numStages</code> refers to the number of second order stages used.       
+* For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.       
+* A 9th order filter would be realized with <code>numStages=5</code> second order stages with the       
+* coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).       
+*       
+* \par       
+* <code>pState</code> points to the state variable array.       
+* Each Biquad stage has 2 state variables <code>d1</code> and <code>d2</code>.       
+* The state variables are arranged in the <code>pState</code> array as:       
+* <pre>       
+*     {d11, d12, d21, d22, ...}       
+* </pre>       
+* where <code>d1x</code> refers to the state variables for the first Biquad and       
+* <code>d2x</code> refers to the state variables for the second Biquad.       
+* The state array has a total length of <code>2*numStages</code> values.       
+* The state variables are updated after each block of data is processed; the coefficients are untouched.       
+*       
+* \par       
+* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II.    
+* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types.    
+* That is why the Direct Form I structure supports Q15 and Q31 data types.    
+* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables <code>d1</code> and <code>d2</code>.    
+* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad.    
+* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage.    
+*       
+* \par Instance Structure       
+* The coefficients and state variables for a filter are stored together in an instance data structure.       
+* A separate instance structure must be defined for each filter.       
+* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.       
+*       
+* \par Init Functions       
+* There is also an associated initialization function.      
+* The initialization function performs following operations:       
+* - Sets the values of the internal structure fields.       
+* - Zeros out the values in the state buffer.       
+* To do this manually without calling the init function, assign the follow subfields of the instance structure:
+* numStages, pCoeffs, pState. Also set all of the values in pState to zero. 
+*       
+* \par       
+* Use of the initialization function is optional.       
+* However, if the initialization function is used, then the instance structure cannot be placed into a const data section.       
+* To place an instance structure into a const data section, the instance structure must be manually initialized.       
+* Set the values in the state buffer to zeros before static initialization.       
+* For example, to statically initialize the instance structure use       
+* <pre>       
+*     arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};       
+* </pre>       
+* where <code>numStages</code> is the number of Biquad stages in the filter; <code>pState</code> is the address of the state buffer.       
+* <code>pCoeffs</code> is the address of the coefficient buffer;        
+*       
+*/
+
+/**       
+* @addtogroup BiquadCascadeDF2T       
+* @{       
+*/
+
+/**      
+* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.      
+* @param[in]  *S        points to an instance of the filter data structure.      
+* @param[in]  *pSrc     points to the block of input data.      
+* @param[out] *pDst     points to the block of output data      
+* @param[in]  blockSize number of samples to process.      
+* @return none.      
+*/
+
+
+LOW_OPTIMIZATION_ENTER
+void arm_biquad_cascade_df2T_f32(
+const arm_biquad_cascade_df2T_instance_f32 * S,
+float32_t * pSrc,
+float32_t * pDst,
+uint32_t blockSize)
+{
+
+   float32_t *pIn = pSrc;                         /*  source pointer            */
+   float32_t *pOut = pDst;                        /*  destination pointer       */
+   float32_t *pState = S->pState;                 /*  State pointer             */
+   float32_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */
+   float32_t acc1;                                /*  accumulator               */
+   float32_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */
+   float32_t Xn1;                                 /*  temporary input           */
+   float32_t d1, d2;                              /*  state variables           */
+   uint32_t sample, stage = S->numStages;         /*  loop counters             */
+
+#if defined(ARM_MATH_CM7)
+	
+   float32_t Xn2, Xn3, Xn4, Xn5, Xn6, Xn7, Xn8;   /*  Input State variables     */
+   float32_t Xn9, Xn10, Xn11, Xn12, Xn13, Xn14, Xn15, Xn16;
+   float32_t acc2, acc3, acc4, acc5, acc6, acc7;  /*  Simulates the accumulator */
+   float32_t acc8, acc9, acc10, acc11, acc12, acc13, acc14, acc15, acc16;
+
+   do
+   {
+      /* Reading the coefficients */ 
+      b0 = pCoeffs[0]; 
+      b1 = pCoeffs[1]; 
+      b2 = pCoeffs[2]; 
+      a1 = pCoeffs[3]; 
+      /* Apply loop unrolling and compute 16 output values simultaneously. */ 
+      sample = blockSize >> 4u; 
+      a2 = pCoeffs[4]; 
+
+      /*Reading the state values */ 
+      d1 = pState[0]; 
+      d2 = pState[1]; 
+
+      pCoeffs += 5u;
+
+      
+      /* First part of the processing with loop unrolling.  Compute 16 outputs at a time.       
+       ** a second loop below computes the remaining 1 to 15 samples. */
+      while(sample > 0u) {
+
+         /* y[n] = b0 * x[n] + d1 */
+         /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+         /* d2 = b2 * x[n] + a2 * y[n] */
+
+         /* Read the first 2 inputs. 2 cycles */
+         Xn1  = pIn[0 ];
+         Xn2  = pIn[1 ];
+
+         /* Sample 1. 5 cycles */
+         Xn3  = pIn[2 ];
+         acc1 = b0 * Xn1 + d1;
+         
+         Xn4  = pIn[3 ];
+         d1 = b1 * Xn1 + d2;
+         
+         Xn5  = pIn[4 ];
+         d2 = b2 * Xn1;
+         
+         Xn6  = pIn[5 ];
+         d1 += a1 * acc1;
+         
+         Xn7  = pIn[6 ];
+         d2 += a2 * acc1;
+
+         /* Sample 2. 5 cycles */
+         Xn8  = pIn[7 ];
+         acc2 = b0 * Xn2 + d1;
+         
+         Xn9  = pIn[8 ];
+         d1 = b1 * Xn2 + d2;
+         
+         Xn10 = pIn[9 ];
+         d2 = b2 * Xn2;
+         
+         Xn11 = pIn[10];
+         d1 += a1 * acc2;
+         
+         Xn12 = pIn[11];
+         d2 += a2 * acc2;
+
+         /* Sample 3. 5 cycles */
+         Xn13 = pIn[12];
+         acc3 = b0 * Xn3 + d1;
+         
+         Xn14 = pIn[13];
+         d1 = b1 * Xn3 + d2;
+         
+         Xn15 = pIn[14];
+         d2 = b2 * Xn3;
+         
+         Xn16 = pIn[15];
+         d1 += a1 * acc3;
+         
+         pIn += 16;
+         d2 += a2 * acc3;
+
+         /* Sample 4. 5 cycles */
+         acc4 = b0 * Xn4 + d1;
+         d1 = b1 * Xn4 + d2;
+         d2 = b2 * Xn4;
+         d1 += a1 * acc4;
+         d2 += a2 * acc4;
+
+         /* Sample 5. 5 cycles */
+         acc5 = b0 * Xn5 + d1;
+         d1 = b1 * Xn5 + d2;
+         d2 = b2 * Xn5;
+         d1 += a1 * acc5;
+         d2 += a2 * acc5;
+
+         /* Sample 6. 5 cycles */
+         acc6 = b0 * Xn6 + d1;
+         d1 = b1 * Xn6 + d2;
+         d2 = b2 * Xn6;
+         d1 += a1 * acc6;
+         d2 += a2 * acc6;
+
+         /* Sample 7. 5 cycles */
+         acc7 = b0 * Xn7 + d1;
+         d1 = b1 * Xn7 + d2;
+         d2 = b2 * Xn7;
+         d1 += a1 * acc7;
+         d2 += a2 * acc7;
+
+         /* Sample 8. 5 cycles */
+         acc8 = b0 * Xn8 + d1;
+         d1 = b1 * Xn8 + d2;
+         d2 = b2 * Xn8;
+         d1 += a1 * acc8;
+         d2 += a2 * acc8;
+
+         /* Sample 9. 5 cycles */
+         acc9 = b0 * Xn9 + d1;
+         d1 = b1 * Xn9 + d2;
+         d2 = b2 * Xn9;
+         d1 += a1 * acc9;
+         d2 += a2 * acc9;
+
+         /* Sample 10. 5 cycles */
+         acc10 = b0 * Xn10 + d1;
+         d1 = b1 * Xn10 + d2;
+         d2 = b2 * Xn10;
+         d1 += a1 * acc10;
+         d2 += a2 * acc10;
+
+         /* Sample 11. 5 cycles */
+         acc11 = b0 * Xn11 + d1;
+         d1 = b1 * Xn11 + d2;
+         d2 = b2 * Xn11;
+         d1 += a1 * acc11;
+         d2 += a2 * acc11;
+
+         /* Sample 12. 5 cycles */
+         acc12 = b0 * Xn12 + d1;
+         d1 = b1 * Xn12 + d2;
+         d2 = b2 * Xn12;
+         d1 += a1 * acc12;
+         d2 += a2 * acc12;
+
+         /* Sample 13. 5 cycles */
+         acc13 = b0 * Xn13 + d1;         
+         d1 = b1 * Xn13 + d2;         
+         d2 = b2 * Xn13;
+         
+         pOut[0 ] = acc1 ;
+         d1 += a1 * acc13;
+         
+         pOut[1 ] = acc2 ;	
+         d2 += a2 * acc13;
+
+         /* Sample 14. 5 cycles */
+         pOut[2 ] = acc3 ;	
+         acc14 = b0 * Xn14 + d1;
+             
+         pOut[3 ] = acc4 ;
+         d1 = b1 * Xn14 + d2;
+          
+         pOut[4 ] = acc5 ; 
+         d2 = b2 * Xn14;
+         
+         pOut[5 ] = acc6 ;	  
+         d1 += a1 * acc14;
+         
+         pOut[6 ] = acc7 ;	
+         d2 += a2 * acc14;
+
+         /* Sample 15. 5 cycles */
+         pOut[7 ] = acc8 ;
+         pOut[8 ] = acc9 ;  
+         acc15 = b0 * Xn15 + d1;
+              
+         pOut[9 ] = acc10;	
+         d1 = b1 * Xn15 + d2;
+         
+         pOut[10] = acc11;	
+         d2 = b2 * Xn15;
+         
+         pOut[11] = acc12;
+         d1 += a1 * acc15;
+         
+         pOut[12] = acc13;
+         d2 += a2 * acc15;
+
+         /* Sample 16. 5 cycles */
+         pOut[13] = acc14;	
+         acc16 = b0 * Xn16 + d1;
+         
+         pOut[14] = acc15;	
+         d1 = b1 * Xn16 + d2;
+         
+         pOut[15] = acc16;
+         d2 = b2 * Xn16;
+         
+         sample--;	 
+         d1 += a1 * acc16;
+         
+         pOut += 16;
+         d2 += a2 * acc16;
+      }
+
+      sample = blockSize & 0xFu;
+      while(sample > 0u) {
+         Xn1 = *pIn;         
+         acc1 = b0 * Xn1 + d1;
+         
+         pIn++;
+         d1 = b1 * Xn1 + d2;
+         
+         *pOut = acc1; 
+         d2 = b2 * Xn1;
+         
+         pOut++;
+         d1 += a1 * acc1;
+         
+         sample--;	
+         d2 += a2 * acc1; 
+      }
+
+      /* Store the updated state variables back into the state array */ 
+      pState[0] = d1; 
+      /* The current stage input is given as the output to the next stage */ 
+      pIn = pDst; 
+      
+      pState[1] = d2; 
+      /* decrement the loop counter */ 
+      stage--; 
+
+      pState += 2u;
+
+      /*Reset the output working pointer */ 
+      pOut = pDst; 
+
+   } while(stage > 0u);
+	
+#elif defined(ARM_MATH_CM0_FAMILY)
+
+   /* Run the below code for Cortex-M0 */
+
+   do
+   {
+      /* Reading the coefficients */
+      b0 = *pCoeffs++;
+      b1 = *pCoeffs++;
+      b2 = *pCoeffs++;
+      a1 = *pCoeffs++;
+      a2 = *pCoeffs++;
+
+      /*Reading the state values */
+      d1 = pState[0];
+      d2 = pState[1];
+
+
+      sample = blockSize;
+
+      while(sample > 0u)
+      {
+         /* Read the input */
+         Xn1 = *pIn++;
+
+         /* y[n] = b0 * x[n] + d1 */
+         acc1 = (b0 * Xn1) + d1;
+
+         /* Store the result in the accumulator in the destination buffer. */
+         *pOut++ = acc1;
+
+         /* Every time after the output is computed state should be updated. */
+         /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+         d1 = ((b1 * Xn1) + (a1 * acc1)) + d2;
+
+         /* d2 = b2 * x[n] + a2 * y[n] */
+         d2 = (b2 * Xn1) + (a2 * acc1);
+
+         /* decrement the loop counter */
+         sample--;
+      }
+
+      /* Store the updated state variables back into the state array */
+      *pState++ = d1;
+      *pState++ = d2;
+
+      /* The current stage input is given as the output to the next stage */
+      pIn = pDst;
+
+      /*Reset the output working pointer */
+      pOut = pDst;
+
+      /* decrement the loop counter */
+      stage--;
+
+   } while(stage > 0u);
+	 
+#else
+
+   float32_t Xn2, Xn3, Xn4;                  	  /*  Input State variables     */
+   float32_t acc2, acc3, acc4;              		  /*  accumulator               */
+
+
+   float32_t p0, p1, p2, p3, p4, A1;
+
+   /* Run the below code for Cortex-M4 and Cortex-M3 */
+   do
+   {
+      /* Reading the coefficients */     
+      b0 = *pCoeffs++;
+      b1 = *pCoeffs++;
+      b2 = *pCoeffs++;
+      a1 = *pCoeffs++;
+      a2 = *pCoeffs++;
+      
+
+      /*Reading the state values */
+      d1 = pState[0];
+      d2 = pState[1];
+
+      /* Apply loop unrolling and compute 4 output values simultaneously. */
+      sample = blockSize >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.       
+   ** a second loop below computes the remaining 1 to 3 samples. */
+      while(sample > 0u) {
+
+         /* y[n] = b0 * x[n] + d1 */
+         /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+         /* d2 = b2 * x[n] + a2 * y[n] */
+
+         /* Read the four inputs */
+         Xn1 = pIn[0];
+         Xn2 = pIn[1];
+         Xn3 = pIn[2];
+         Xn4 = pIn[3];
+         pIn += 4;     
+
+         p0 = b0 * Xn1; 
+         p1 = b1 * Xn1;
+         acc1 = p0 + d1;
+         p0 = b0 * Xn2; 
+         p3 = a1 * acc1;
+         p2 = b2 * Xn1;
+         A1 = p1 + p3;
+         p4 = a2 * acc1;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+
+         p1 = b1 * Xn2;
+         acc2 = p0 + d1;
+         p0 = b0 * Xn3;	 
+         p3 = a1 * acc2; 
+         p2 = b2 * Xn2;                                 
+         A1 = p1 + p3;
+         p4 = a2 * acc2;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+
+         p1 = b1 * Xn3;
+         acc3 = p0 + d1;
+         p0 = b0 * Xn4;	
+         p3 = a1 * acc3;
+         p2 = b2 * Xn3;
+         A1 = p1 + p3;
+         p4 = a2 * acc3;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+
+         acc4 = p0 + d1;
+         p1 = b1 * Xn4;
+         p3 = a1 * acc4;
+         p2 = b2 * Xn4;
+         A1 = p1 + p3;
+         p4 = a2 * acc4;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+
+         pOut[0] = acc1;	
+         pOut[1] = acc2;	
+         pOut[2] = acc3;	
+         pOut[3] = acc4;
+		 pOut += 4;
+				 
+         sample--;	       
+      }
+
+      sample = blockSize & 0x3u;
+      while(sample > 0u) {
+         Xn1 = *pIn++;
+
+         p0 = b0 * Xn1; 
+         p1 = b1 * Xn1;
+         acc1 = p0 + d1;
+         p3 = a1 * acc1;
+         p2 = b2 * Xn1;
+         A1 = p1 + p3;
+         p4 = a2 * acc1;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+	
+         *pOut++ = acc1;
+         
+         sample--;	       
+      }
+
+      /* Store the updated state variables back into the state array */
+      *pState++ = d1;
+      *pState++ = d2;
+
+      /* The current stage input is given as the output to the next stage */
+      pIn = pDst;
+
+      /*Reset the output working pointer */
+      pOut = pDst;
+
+      /* decrement the loop counter */
+      stage--;
+
+   } while(stage > 0u);
+
+#endif 
+
+}
+LOW_OPTIMIZATION_EXIT
+
+/**       
+   * @} end of BiquadCascadeDF2T group       
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,603 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_df2T_f64.c    
+*    
+* Description:  Processing function for the floating-point transposed    
+*               direct form II Biquad cascade filter.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**       
+* @ingroup groupFilters       
+*/
+
+/**       
+* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure       
+*       
+* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure.       
+* The filters are implemented as a cascade of second order Biquad sections.       
+* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions.      
+* Only floating-point data is supported.       
+*       
+* This function operate on blocks of input and output data and each call to the function       
+* processes <code>blockSize</code> samples through the filter.       
+* <code>pSrc</code> points to the array of input data and       
+* <code>pDst</code> points to the array of output data.       
+* Both arrays contain <code>blockSize</code> values.       
+*       
+* \par Algorithm       
+* Each Biquad stage implements a second order filter using the difference equation:       
+* <pre>       
+*    y[n] = b0 * x[n] + d1       
+*    d1 = b1 * x[n] + a1 * y[n] + d2       
+*    d2 = b2 * x[n] + a2 * y[n]       
+* </pre>       
+* where d1 and d2 represent the two state values.       
+*       
+* \par       
+* A Biquad filter using a transposed Direct Form II structure is shown below.       
+* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad"       
+* Coefficients <code>b0, b1, and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.       
+* Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.       
+* Pay careful attention to the sign of the feedback coefficients.       
+* Some design tools flip the sign of the feedback coefficients:       
+* <pre>       
+*    y[n] = b0 * x[n] + d1;       
+*    d1 = b1 * x[n] - a1 * y[n] + d2;       
+*    d2 = b2 * x[n] - a2 * y[n];       
+* </pre>       
+* In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.       
+*       
+* \par       
+* Higher order filters are realized as a cascade of second order sections.       
+* <code>numStages</code> refers to the number of second order stages used.       
+* For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.       
+* A 9th order filter would be realized with <code>numStages=5</code> second order stages with the       
+* coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).       
+*       
+* \par       
+* <code>pState</code> points to the state variable array.       
+* Each Biquad stage has 2 state variables <code>d1</code> and <code>d2</code>.       
+* The state variables are arranged in the <code>pState</code> array as:       
+* <pre>       
+*     {d11, d12, d21, d22, ...}       
+* </pre>       
+* where <code>d1x</code> refers to the state variables for the first Biquad and       
+* <code>d2x</code> refers to the state variables for the second Biquad.       
+* The state array has a total length of <code>2*numStages</code> values.       
+* The state variables are updated after each block of data is processed; the coefficients are untouched.       
+*       
+* \par       
+* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II.    
+* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types.    
+* That is why the Direct Form I structure supports Q15 and Q31 data types.    
+* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables <code>d1</code> and <code>d2</code>.    
+* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad.    
+* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage.    
+*       
+* \par Instance Structure       
+* The coefficients and state variables for a filter are stored together in an instance data structure.       
+* A separate instance structure must be defined for each filter.       
+* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.       
+*       
+* \par Init Functions       
+* There is also an associated initialization function.      
+* The initialization function performs following operations:       
+* - Sets the values of the internal structure fields.       
+* - Zeros out the values in the state buffer.       
+* To do this manually without calling the init function, assign the follow subfields of the instance structure:
+* numStages, pCoeffs, pState. Also set all of the values in pState to zero. 
+*       
+* \par       
+* Use of the initialization function is optional.       
+* However, if the initialization function is used, then the instance structure cannot be placed into a const data section.       
+* To place an instance structure into a const data section, the instance structure must be manually initialized.       
+* Set the values in the state buffer to zeros before static initialization.       
+* For example, to statically initialize the instance structure use       
+* <pre>       
+*     arm_biquad_cascade_df2T_instance_f64 S1 = {numStages, pState, pCoeffs};       
+* </pre>       
+* where <code>numStages</code> is the number of Biquad stages in the filter; <code>pState</code> is the address of the state buffer.       
+* <code>pCoeffs</code> is the address of the coefficient buffer;        
+*       
+*/
+
+/**       
+* @addtogroup BiquadCascadeDF2T       
+* @{       
+*/
+
+/**      
+* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.      
+* @param[in]  *S        points to an instance of the filter data structure.      
+* @param[in]  *pSrc     points to the block of input data.      
+* @param[out] *pDst     points to the block of output data      
+* @param[in]  blockSize number of samples to process.      
+* @return none.      
+*/
+
+
+LOW_OPTIMIZATION_ENTER
+void arm_biquad_cascade_df2T_f64(
+const arm_biquad_cascade_df2T_instance_f64 * S,
+float64_t * pSrc,
+float64_t * pDst,
+uint32_t blockSize)
+{
+
+   float64_t *pIn = pSrc;                         /*  source pointer            */
+   float64_t *pOut = pDst;                        /*  destination pointer       */
+   float64_t *pState = S->pState;                 /*  State pointer             */
+   float64_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */
+   float64_t acc1;                                /*  accumulator               */
+   float64_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */
+   float64_t Xn1;                                 /*  temporary input           */
+   float64_t d1, d2;                              /*  state variables           */
+   uint32_t sample, stage = S->numStages;         /*  loop counters             */
+
+#if defined(ARM_MATH_CM7)
+	
+   float64_t Xn2, Xn3, Xn4, Xn5, Xn6, Xn7, Xn8;   /*  Input State variables     */
+   float64_t Xn9, Xn10, Xn11, Xn12, Xn13, Xn14, Xn15, Xn16;
+   float64_t acc2, acc3, acc4, acc5, acc6, acc7;  /*  Simulates the accumulator */
+   float64_t acc8, acc9, acc10, acc11, acc12, acc13, acc14, acc15, acc16;
+
+   do
+   {
+      /* Reading the coefficients */ 
+      b0 = pCoeffs[0]; 
+      b1 = pCoeffs[1]; 
+      b2 = pCoeffs[2]; 
+      a1 = pCoeffs[3]; 
+      /* Apply loop unrolling and compute 16 output values simultaneously. */ 
+      sample = blockSize >> 4u; 
+      a2 = pCoeffs[4]; 
+
+      /*Reading the state values */ 
+      d1 = pState[0]; 
+      d2 = pState[1]; 
+
+      pCoeffs += 5u;
+
+      
+      /* First part of the processing with loop unrolling.  Compute 16 outputs at a time.       
+       ** a second loop below computes the remaining 1 to 15 samples. */
+      while(sample > 0u) {
+
+         /* y[n] = b0 * x[n] + d1 */
+         /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+         /* d2 = b2 * x[n] + a2 * y[n] */
+
+         /* Read the first 2 inputs. 2 cycles */
+         Xn1  = pIn[0 ];
+         Xn2  = pIn[1 ];
+
+         /* Sample 1. 5 cycles */
+         Xn3  = pIn[2 ];
+         acc1 = b0 * Xn1 + d1;
+         
+         Xn4  = pIn[3 ];
+         d1 = b1 * Xn1 + d2;
+         
+         Xn5  = pIn[4 ];
+         d2 = b2 * Xn1;
+         
+         Xn6  = pIn[5 ];
+         d1 += a1 * acc1;
+         
+         Xn7  = pIn[6 ];
+         d2 += a2 * acc1;
+
+         /* Sample 2. 5 cycles */
+         Xn8  = pIn[7 ];
+         acc2 = b0 * Xn2 + d1;
+         
+         Xn9  = pIn[8 ];
+         d1 = b1 * Xn2 + d2;
+         
+         Xn10 = pIn[9 ];
+         d2 = b2 * Xn2;
+         
+         Xn11 = pIn[10];
+         d1 += a1 * acc2;
+         
+         Xn12 = pIn[11];
+         d2 += a2 * acc2;
+
+         /* Sample 3. 5 cycles */
+         Xn13 = pIn[12];
+         acc3 = b0 * Xn3 + d1;
+         
+         Xn14 = pIn[13];
+         d1 = b1 * Xn3 + d2;
+         
+         Xn15 = pIn[14];
+         d2 = b2 * Xn3;
+         
+         Xn16 = pIn[15];
+         d1 += a1 * acc3;
+         
+         pIn += 16;
+         d2 += a2 * acc3;
+
+         /* Sample 4. 5 cycles */
+         acc4 = b0 * Xn4 + d1;
+         d1 = b1 * Xn4 + d2;
+         d2 = b2 * Xn4;
+         d1 += a1 * acc4;
+         d2 += a2 * acc4;
+
+         /* Sample 5. 5 cycles */
+         acc5 = b0 * Xn5 + d1;
+         d1 = b1 * Xn5 + d2;
+         d2 = b2 * Xn5;
+         d1 += a1 * acc5;
+         d2 += a2 * acc5;
+
+         /* Sample 6. 5 cycles */
+         acc6 = b0 * Xn6 + d1;
+         d1 = b1 * Xn6 + d2;
+         d2 = b2 * Xn6;
+         d1 += a1 * acc6;
+         d2 += a2 * acc6;
+
+         /* Sample 7. 5 cycles */
+         acc7 = b0 * Xn7 + d1;
+         d1 = b1 * Xn7 + d2;
+         d2 = b2 * Xn7;
+         d1 += a1 * acc7;
+         d2 += a2 * acc7;
+
+         /* Sample 8. 5 cycles */
+         acc8 = b0 * Xn8 + d1;
+         d1 = b1 * Xn8 + d2;
+         d2 = b2 * Xn8;
+         d1 += a1 * acc8;
+         d2 += a2 * acc8;
+
+         /* Sample 9. 5 cycles */
+         acc9 = b0 * Xn9 + d1;
+         d1 = b1 * Xn9 + d2;
+         d2 = b2 * Xn9;
+         d1 += a1 * acc9;
+         d2 += a2 * acc9;
+
+         /* Sample 10. 5 cycles */
+         acc10 = b0 * Xn10 + d1;
+         d1 = b1 * Xn10 + d2;
+         d2 = b2 * Xn10;
+         d1 += a1 * acc10;
+         d2 += a2 * acc10;
+
+         /* Sample 11. 5 cycles */
+         acc11 = b0 * Xn11 + d1;
+         d1 = b1 * Xn11 + d2;
+         d2 = b2 * Xn11;
+         d1 += a1 * acc11;
+         d2 += a2 * acc11;
+
+         /* Sample 12. 5 cycles */
+         acc12 = b0 * Xn12 + d1;
+         d1 = b1 * Xn12 + d2;
+         d2 = b2 * Xn12;
+         d1 += a1 * acc12;
+         d2 += a2 * acc12;
+
+         /* Sample 13. 5 cycles */
+         acc13 = b0 * Xn13 + d1;         
+         d1 = b1 * Xn13 + d2;         
+         d2 = b2 * Xn13;
+         
+         pOut[0 ] = acc1 ;
+         d1 += a1 * acc13;
+         
+         pOut[1 ] = acc2 ;	
+         d2 += a2 * acc13;
+
+         /* Sample 14. 5 cycles */
+         pOut[2 ] = acc3 ;	
+         acc14 = b0 * Xn14 + d1;
+             
+         pOut[3 ] = acc4 ;
+         d1 = b1 * Xn14 + d2;
+          
+         pOut[4 ] = acc5 ; 
+         d2 = b2 * Xn14;
+         
+         pOut[5 ] = acc6 ;	  
+         d1 += a1 * acc14;
+         
+         pOut[6 ] = acc7 ;	
+         d2 += a2 * acc14;
+
+         /* Sample 15. 5 cycles */
+         pOut[7 ] = acc8 ;
+         pOut[8 ] = acc9 ;  
+         acc15 = b0 * Xn15 + d1;
+              
+         pOut[9 ] = acc10;	
+         d1 = b1 * Xn15 + d2;
+         
+         pOut[10] = acc11;	
+         d2 = b2 * Xn15;
+         
+         pOut[11] = acc12;
+         d1 += a1 * acc15;
+         
+         pOut[12] = acc13;
+         d2 += a2 * acc15;
+
+         /* Sample 16. 5 cycles */
+         pOut[13] = acc14;	
+         acc16 = b0 * Xn16 + d1;
+         
+         pOut[14] = acc15;	
+         d1 = b1 * Xn16 + d2;
+         
+         pOut[15] = acc16;
+         d2 = b2 * Xn16;
+         
+         sample--;	 
+         d1 += a1 * acc16;
+         
+         pOut += 16;
+         d2 += a2 * acc16;
+      }
+
+      sample = blockSize & 0xFu;
+      while(sample > 0u) {
+         Xn1 = *pIn;         
+         acc1 = b0 * Xn1 + d1;
+         
+         pIn++;
+         d1 = b1 * Xn1 + d2;
+         
+         *pOut = acc1; 
+         d2 = b2 * Xn1;
+         
+         pOut++;
+         d1 += a1 * acc1;
+         
+         sample--;	
+         d2 += a2 * acc1; 
+      }
+
+      /* Store the updated state variables back into the state array */ 
+      pState[0] = d1; 
+      /* The current stage input is given as the output to the next stage */ 
+      pIn = pDst; 
+      
+      pState[1] = d2; 
+      /* decrement the loop counter */ 
+      stage--; 
+
+      pState += 2u;
+
+      /*Reset the output working pointer */ 
+      pOut = pDst; 
+
+   } while(stage > 0u);
+	
+#elif defined(ARM_MATH_CM0_FAMILY)
+
+   /* Run the below code for Cortex-M0 */
+
+   do
+   {
+      /* Reading the coefficients */
+      b0 = *pCoeffs++;
+      b1 = *pCoeffs++;
+      b2 = *pCoeffs++;
+      a1 = *pCoeffs++;
+      a2 = *pCoeffs++;
+
+      /*Reading the state values */
+      d1 = pState[0];
+      d2 = pState[1];
+
+
+      sample = blockSize;
+
+      while(sample > 0u)
+      {
+         /* Read the input */
+         Xn1 = *pIn++;
+
+         /* y[n] = b0 * x[n] + d1 */
+         acc1 = (b0 * Xn1) + d1;
+
+         /* Store the result in the accumulator in the destination buffer. */
+         *pOut++ = acc1;
+
+         /* Every time after the output is computed state should be updated. */
+         /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+         d1 = ((b1 * Xn1) + (a1 * acc1)) + d2;
+
+         /* d2 = b2 * x[n] + a2 * y[n] */
+         d2 = (b2 * Xn1) + (a2 * acc1);
+
+         /* decrement the loop counter */
+         sample--;
+      }
+
+      /* Store the updated state variables back into the state array */
+      *pState++ = d1;
+      *pState++ = d2;
+
+      /* The current stage input is given as the output to the next stage */
+      pIn = pDst;
+
+      /*Reset the output working pointer */
+      pOut = pDst;
+
+      /* decrement the loop counter */
+      stage--;
+
+   } while(stage > 0u);
+	 
+#else
+
+   float64_t Xn2, Xn3, Xn4;                  	  /*  Input State variables     */
+   float64_t acc2, acc3, acc4;              		  /*  accumulator               */
+
+
+   float64_t p0, p1, p2, p3, p4, A1;
+
+   /* Run the below code for Cortex-M4 and Cortex-M3 */
+   do
+   {
+      /* Reading the coefficients */     
+      b0 = *pCoeffs++;
+      b1 = *pCoeffs++;
+      b2 = *pCoeffs++;
+      a1 = *pCoeffs++;
+      a2 = *pCoeffs++;
+      
+
+      /*Reading the state values */
+      d1 = pState[0];
+      d2 = pState[1];
+
+      /* Apply loop unrolling and compute 4 output values simultaneously. */
+      sample = blockSize >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.       
+   ** a second loop below computes the remaining 1 to 3 samples. */
+      while(sample > 0u) {
+
+         /* y[n] = b0 * x[n] + d1 */
+         /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+         /* d2 = b2 * x[n] + a2 * y[n] */
+
+         /* Read the four inputs */
+         Xn1 = pIn[0];
+         Xn2 = pIn[1];
+         Xn3 = pIn[2];
+         Xn4 = pIn[3];
+         pIn += 4;     
+
+         p0 = b0 * Xn1; 
+         p1 = b1 * Xn1;
+         acc1 = p0 + d1;
+         p0 = b0 * Xn2; 
+         p3 = a1 * acc1;
+         p2 = b2 * Xn1;
+         A1 = p1 + p3;
+         p4 = a2 * acc1;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+
+         p1 = b1 * Xn2;
+         acc2 = p0 + d1;
+         p0 = b0 * Xn3;	 
+         p3 = a1 * acc2; 
+         p2 = b2 * Xn2;                                 
+         A1 = p1 + p3;
+         p4 = a2 * acc2;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+
+         p1 = b1 * Xn3;
+         acc3 = p0 + d1;
+         p0 = b0 * Xn4;	
+         p3 = a1 * acc3;
+         p2 = b2 * Xn3;
+         A1 = p1 + p3;
+         p4 = a2 * acc3;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+
+         acc4 = p0 + d1;
+         p1 = b1 * Xn4;
+         p3 = a1 * acc4;
+         p2 = b2 * Xn4;
+         A1 = p1 + p3;
+         p4 = a2 * acc4;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+
+         pOut[0] = acc1;	
+         pOut[1] = acc2;	
+         pOut[2] = acc3;	
+         pOut[3] = acc4;
+				 pOut += 4;
+				 
+         sample--;	       
+      }
+
+      sample = blockSize & 0x3u;
+      while(sample > 0u) {
+         Xn1 = *pIn++;
+
+         p0 = b0 * Xn1; 
+         p1 = b1 * Xn1;
+         acc1 = p0 + d1;
+         p3 = a1 * acc1;
+         p2 = b2 * Xn1;
+         A1 = p1 + p3;
+         p4 = a2 * acc1;
+         d1 = A1 + d2;
+         d2 = p2 + p4;
+	
+         *pOut++ = acc1;
+         
+         sample--;	       
+      }
+
+      /* Store the updated state variables back into the state array */
+      *pState++ = d1;
+      *pState++ = d2;
+
+      /* The current stage input is given as the output to the next stage */
+      pIn = pDst;
+
+      /*Reset the output working pointer */
+      pOut = pDst;
+
+      /* decrement the loop counter */
+      stage--;
+
+   } while(stage > 0u);
+
+#endif 
+
+}
+LOW_OPTIMIZATION_EXIT
+
+/**       
+   * @} end of BiquadCascadeDF2T group       
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,102 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_biquad_cascade_df2T_init_f32.c    
+*    
+* Description:  Initialization function for the floating-point transposed   
+*               direct form II Biquad cascade filter.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF2T    
+ * @{    
+ */
+
+/**   
+ * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.   
+ * @param[in,out] *S           points to an instance of the filter data structure.   
+ * @param[in]     numStages    number of 2nd order stages in the filter.   
+ * @param[in]     *pCoeffs     points to the filter coefficients.   
+ * @param[in]     *pState      points to the state buffer.   
+ * @return        none   
+ *    
+ * <b>Coefficient and State Ordering:</b>    
+ * \par    
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:    
+ * <pre>    
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}    
+ * </pre>    
+ *    
+ * \par    
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,    
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,    
+ * and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.    
+ *    
+ * \par    
+ * The <code>pState</code> is a pointer to state array.    
+ * Each Biquad stage has 2 state variables <code>d1,</code> and <code>d2</code>.    
+ * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>2*numStages</code> values.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ */
+
+void arm_biquad_cascade_df2T_init_f32(
+  arm_biquad_cascade_df2T_instance_f32 * S,
+  uint8_t numStages,
+  float32_t * pCoeffs,
+  float32_t * pState)
+{
+  /* Assign filter stages */
+  S->numStages = numStages;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always 2 * numStages */
+  memset(pState, 0, (2u * (uint32_t) numStages) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+}
+
+/**    
+ * @} end of BiquadCascadeDF2T group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,102 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_biquad_cascade_df2T_init_f64.c    
+*    
+* Description:  Initialization function for the floating-point transposed   
+*               direct form II Biquad cascade filter.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF2T    
+ * @{    
+ */
+
+/**   
+ * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.   
+ * @param[in,out] *S           points to an instance of the filter data structure.   
+ * @param[in]     numStages    number of 2nd order stages in the filter.   
+ * @param[in]     *pCoeffs     points to the filter coefficients.   
+ * @param[in]     *pState      points to the state buffer.   
+ * @return        none   
+ *    
+ * <b>Coefficient and State Ordering:</b>    
+ * \par    
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:    
+ * <pre>    
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}    
+ * </pre>    
+ *    
+ * \par    
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,    
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,    
+ * and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.    
+ *    
+ * \par    
+ * The <code>pState</code> is a pointer to state array.    
+ * Each Biquad stage has 2 state variables <code>d1,</code> and <code>d2</code>.    
+ * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>2*numStages</code> values.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ */
+
+void arm_biquad_cascade_df2T_init_f64(
+  arm_biquad_cascade_df2T_instance_f64 * S,
+  uint8_t numStages,
+  float64_t * pCoeffs,
+  float64_t * pState)
+{
+  /* Assign filter stages */
+  S->numStages = numStages;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always 2 * numStages */
+  memset(pState, 0, (2u * (uint32_t) numStages) * sizeof(float64_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+}
+
+/**    
+ * @} end of BiquadCascadeDF2T group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,683 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_biquad_cascade_stereo_df2T_f32.c    
+*    
+* Description:  Processing function for the floating-point transposed    
+*               direct form II Biquad cascade filter. 2 channels  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**       
+* @ingroup groupFilters       
+*/
+
+/**       
+* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure       
+*       
+* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure.       
+* The filters are implemented as a cascade of second order Biquad sections.       
+* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions.      
+* Only floating-point data is supported.       
+*       
+* This function operate on blocks of input and output data and each call to the function       
+* processes <code>blockSize</code> samples through the filter.       
+* <code>pSrc</code> points to the array of input data and       
+* <code>pDst</code> points to the array of output data.       
+* Both arrays contain <code>blockSize</code> values.       
+*       
+* \par Algorithm       
+* Each Biquad stage implements a second order filter using the difference equation:       
+* <pre>       
+*    y[n] = b0 * x[n] + d1       
+*    d1 = b1 * x[n] + a1 * y[n] + d2       
+*    d2 = b2 * x[n] + a2 * y[n]       
+* </pre>       
+* where d1 and d2 represent the two state values.       
+*       
+* \par       
+* A Biquad filter using a transposed Direct Form II structure is shown below.       
+* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad"       
+* Coefficients <code>b0, b1, and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.       
+* Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.       
+* Pay careful attention to the sign of the feedback coefficients.       
+* Some design tools flip the sign of the feedback coefficients:       
+* <pre>       
+*    y[n] = b0 * x[n] + d1;       
+*    d1 = b1 * x[n] - a1 * y[n] + d2;       
+*    d2 = b2 * x[n] - a2 * y[n];       
+* </pre>       
+* In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.       
+*       
+* \par       
+* Higher order filters are realized as a cascade of second order sections.       
+* <code>numStages</code> refers to the number of second order stages used.       
+* For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.       
+* A 9th order filter would be realized with <code>numStages=5</code> second order stages with the       
+* coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).       
+*       
+* \par       
+* <code>pState</code> points to the state variable array.       
+* Each Biquad stage has 2 state variables <code>d1</code> and <code>d2</code>.       
+* The state variables are arranged in the <code>pState</code> array as:       
+* <pre>       
+*     {d11, d12, d21, d22, ...}       
+* </pre>       
+* where <code>d1x</code> refers to the state variables for the first Biquad and       
+* <code>d2x</code> refers to the state variables for the second Biquad.       
+* The state array has a total length of <code>2*numStages</code> values.       
+* The state variables are updated after each block of data is processed; the coefficients are untouched.       
+*       
+* \par       
+* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II.    
+* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types.    
+* That is why the Direct Form I structure supports Q15 and Q31 data types.    
+* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables <code>d1</code> and <code>d2</code>.    
+* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad.    
+* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage.    
+*       
+* \par Instance Structure       
+* The coefficients and state variables for a filter are stored together in an instance data structure.       
+* A separate instance structure must be defined for each filter.       
+* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.       
+*       
+* \par Init Functions       
+* There is also an associated initialization function.      
+* The initialization function performs following operations:       
+* - Sets the values of the internal structure fields.       
+* - Zeros out the values in the state buffer.       
+* To do this manually without calling the init function, assign the follow subfields of the instance structure:
+* numStages, pCoeffs, pState. Also set all of the values in pState to zero. 
+*       
+* \par       
+* Use of the initialization function is optional.       
+* However, if the initialization function is used, then the instance structure cannot be placed into a const data section.       
+* To place an instance structure into a const data section, the instance structure must be manually initialized.       
+* Set the values in the state buffer to zeros before static initialization.       
+* For example, to statically initialize the instance structure use       
+* <pre>       
+*     arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};       
+* </pre>       
+* where <code>numStages</code> is the number of Biquad stages in the filter; <code>pState</code> is the address of the state buffer.       
+* <code>pCoeffs</code> is the address of the coefficient buffer;        
+*       
+*/
+
+/**       
+* @addtogroup BiquadCascadeDF2T       
+* @{       
+*/
+
+/**      
+* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.      
+* @param[in]  *S        points to an instance of the filter data structure.      
+* @param[in]  *pSrc     points to the block of input data.      
+* @param[out] *pDst     points to the block of output data      
+* @param[in]  blockSize number of samples to process.      
+* @return none.      
+*/
+
+
+LOW_OPTIMIZATION_ENTER
+void arm_biquad_cascade_stereo_df2T_f32(
+const arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+float32_t * pSrc,
+float32_t * pDst,
+uint32_t blockSize)
+{
+
+    float32_t *pIn = pSrc;                         /*  source pointer            */
+    float32_t *pOut = pDst;                        /*  destination pointer       */
+    float32_t *pState = S->pState;                 /*  State pointer             */
+    float32_t *pCoeffs = S->pCoeffs;               /*  coefficient pointer       */
+    float32_t acc1a, acc1b;                        /*  accumulator               */
+    float32_t b0, b1, b2, a1, a2;                  /*  Filter coefficients       */
+    float32_t Xn1a, Xn1b;                          /*  temporary input           */
+    float32_t d1a, d2a, d1b, d2b;                  /*  state variables           */
+    uint32_t sample, stage = S->numStages;         /*  loop counters             */
+
+#if defined(ARM_MATH_CM7)
+	
+    float32_t Xn2a, Xn3a, Xn4a, Xn5a, Xn6a, Xn7a, Xn8a;         /*  Input State variables     */
+    float32_t Xn2b, Xn3b, Xn4b, Xn5b, Xn6b, Xn7b, Xn8b;         /*  Input State variables     */
+    float32_t acc2a, acc3a, acc4a, acc5a, acc6a, acc7a, acc8a;  /*  Simulates the accumulator */
+    float32_t acc2b, acc3b, acc4b, acc5b, acc6b, acc7b, acc8b;  /*  Simulates the accumulator */
+
+    do
+    {
+        /* Reading the coefficients */ 
+        b0 = pCoeffs[0]; 
+        b1 = pCoeffs[1]; 
+        b2 = pCoeffs[2]; 
+        a1 = pCoeffs[3]; 
+        /* Apply loop unrolling and compute 8 output values simultaneously. */ 
+        sample = blockSize >> 3u; 
+        a2 = pCoeffs[4]; 
+
+        /*Reading the state values */ 
+        d1a = pState[0]; 
+        d2a = pState[1]; 
+        d1b = pState[2]; 
+        d2b = pState[3]; 
+
+        pCoeffs += 5u;
+
+        /* First part of the processing with loop unrolling.  Compute 8 outputs at a time.       
+        ** a second loop below computes the remaining 1 to 7 samples. */
+        while(sample > 0u) {
+
+            /* y[n] = b0 * x[n] + d1 */
+            /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+            /* d2 = b2 * x[n] + a2 * y[n] */
+
+            /* Read the first 2 inputs. 2 cycles */
+            Xn1a  = pIn[0 ];
+            Xn1b  = pIn[1 ];
+
+            /* Sample 1. 5 cycles */
+            Xn2a  = pIn[2 ];
+            acc1a = b0 * Xn1a + d1a;
+
+            Xn2b  = pIn[3 ];
+            d1a = b1 * Xn1a + d2a;
+
+            Xn3a  = pIn[4 ];
+            d2a = b2 * Xn1a;
+
+            Xn3b  = pIn[5 ];
+            d1a += a1 * acc1a;
+
+            Xn4a  = pIn[6 ];
+            d2a += a2 * acc1a;
+
+            /* Sample 2. 5 cycles */
+            Xn4b  = pIn[7 ];
+            acc1b = b0 * Xn1b + d1b;
+
+            Xn5a  = pIn[8 ];
+            d1b = b1 * Xn1b + d2b;
+
+            Xn5b = pIn[9 ];
+            d2b = b2 * Xn1b;
+
+            Xn6a = pIn[10];
+            d1b += a1 * acc1b;
+
+            Xn6b = pIn[11];
+            d2b += a2 * acc1b;
+
+            /* Sample 3. 5 cycles */
+            Xn7a = pIn[12];
+            acc2a = b0 * Xn2a + d1a;
+
+            Xn7b = pIn[13];
+            d1a = b1 * Xn2a + d2a;
+
+            Xn8a = pIn[14];
+            d2a = b2 * Xn2a;
+
+            Xn8b = pIn[15];
+            d1a += a1 * acc2a;
+
+            pIn += 16;
+            d2a += a2 * acc2a;
+
+            /* Sample 4. 5 cycles */
+            acc2b = b0 * Xn2b + d1b;
+            d1b = b1 * Xn2b + d2b;
+            d2b = b2 * Xn2b;
+            d1b += a1 * acc2b;
+            d2b += a2 * acc2b;
+
+            /* Sample 5. 5 cycles */
+            acc3a = b0 * Xn3a + d1a;
+            d1a = b1 * Xn3a + d2a;
+            d2a = b2 * Xn3a;
+            d1a += a1 * acc3a;
+            d2a += a2 * acc3a;
+
+            /* Sample 6. 5 cycles */
+            acc3b = b0 * Xn3b + d1b;
+            d1b = b1 * Xn3b + d2b;
+            d2b = b2 * Xn3b;
+            d1b += a1 * acc3b;
+            d2b += a2 * acc3b;
+
+            /* Sample 7. 5 cycles */
+            acc4a = b0 * Xn4a + d1a;
+            d1a = b1 * Xn4a + d2a;
+            d2a = b2 * Xn4a;
+            d1a += a1 * acc4a;
+            d2a += a2 * acc4a;
+
+            /* Sample 8. 5 cycles */
+            acc4b = b0 * Xn4b + d1b;
+            d1b = b1 * Xn4b + d2b;
+            d2b = b2 * Xn4b;
+            d1b += a1 * acc4b;
+            d2b += a2 * acc4b;
+
+            /* Sample 9. 5 cycles */
+            acc5a = b0 * Xn5a + d1a;
+            d1a = b1 * Xn5a + d2a;
+            d2a = b2 * Xn5a;
+            d1a += a1 * acc5a;
+            d2a += a2 * acc5a;
+
+            /* Sample 10. 5 cycles */
+            acc5b = b0 * Xn5b + d1b;
+            d1b = b1 * Xn5b + d2b;
+            d2b = b2 * Xn5b;
+            d1b += a1 * acc5b;
+            d2b += a2 * acc5b;
+
+            /* Sample 11. 5 cycles */
+            acc6a = b0 * Xn6a + d1a;
+            d1a = b1 * Xn6a + d2a;
+            d2a = b2 * Xn6a;
+            d1a += a1 * acc6a;
+            d2a += a2 * acc6a;
+
+            /* Sample 12. 5 cycles */
+            acc6b = b0 * Xn6b + d1b;
+            d1b = b1 * Xn6b + d2b;
+            d2b = b2 * Xn6b;
+            d1b += a1 * acc6b;
+            d2b += a2 * acc6b;
+
+            /* Sample 13. 5 cycles */
+            acc7a = b0 * Xn7a + d1a;         
+            d1a = b1 * Xn7a + d2a;   
+            
+            pOut[0 ] = acc1a ;      
+            d2a = b2 * Xn7a;
+
+            pOut[1 ] = acc1b ;	
+            d1a += a1 * acc7a;
+
+            pOut[2 ] = acc2a ;	
+            d2a += a2 * acc7a;
+
+            /* Sample 14. 5 cycles */
+            pOut[3 ] = acc2b ;
+            acc7b = b0 * Xn7b + d1b;
+
+            pOut[4 ] = acc3a ; 
+            d1b = b1 * Xn7b + d2b;
+
+            pOut[5 ] = acc3b ;	
+            d2b = b2 * Xn7b;
+
+            pOut[6 ] = acc4a ;	  
+            d1b += a1 * acc7b;
+
+            pOut[7 ] = acc4b ;
+            d2b += a2 * acc7b;
+
+            /* Sample 15. 5 cycles */
+            pOut[8 ] = acc5a ;  
+            acc8a = b0 * Xn8a + d1a;
+
+            pOut[9 ] = acc5b;	
+            d1a = b1 * Xn8a + d2a;
+
+            pOut[10] = acc6a;	
+            d2a = b2 * Xn8a;
+
+            pOut[11] = acc6b;
+            d1a += a1 * acc8a;
+
+            pOut[12] = acc7a;
+            d2a += a2 * acc8a;
+
+            /* Sample 16. 5 cycles */
+            pOut[13] = acc7b;	
+            acc8b = b0 * Xn8b + d1b;
+
+            pOut[14] = acc8a;	
+            d1b = b1 * Xn8b + d2b;
+
+            pOut[15] = acc8b;
+            d2b = b2 * Xn8b;
+
+            sample--;	 
+            d1b += a1 * acc8b;
+
+            pOut += 16;
+            d2b += a2 * acc8b;
+        }
+
+        sample = blockSize & 0x7u;
+        while(sample > 0u) {
+            /* Read the input */
+            Xn1a = *pIn++; //Channel a
+            Xn1b = *pIn++; //Channel b
+
+            /* y[n] = b0 * x[n] + d1 */
+            acc1a = (b0 * Xn1a) + d1a;
+            acc1b = (b0 * Xn1b) + d1b;
+
+            /* Store the result in the accumulator in the destination buffer. */
+            *pOut++ = acc1a;
+            *pOut++ = acc1b;
+
+            /* Every time after the output is computed state should be updated. */
+            /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+            d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;
+            d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;
+
+            /* d2 = b2 * x[n] + a2 * y[n] */
+            d2a = (b2 * Xn1a) + (a2 * acc1a);
+            d2b = (b2 * Xn1b) + (a2 * acc1b);
+
+            sample--;	
+        }
+
+        /* Store the updated state variables back into the state array */ 
+        pState[0] = d1a; 
+        pState[1] = d2a;         
+
+        pState[2] = d1b; 
+        pState[3] = d2b; 
+        
+        /* The current stage input is given as the output to the next stage */ 
+        pIn = pDst; 
+        /* decrement the loop counter */ 
+        stage--; 
+
+        pState += 4u;
+        /*Reset the output working pointer */ 
+        pOut = pDst; 
+
+    } while(stage > 0u);
+	
+#elif defined(ARM_MATH_CM0_FAMILY)
+
+    /* Run the below code for Cortex-M0 */
+
+    do
+    {
+        /* Reading the coefficients */
+        b0 = *pCoeffs++;
+        b1 = *pCoeffs++;
+        b2 = *pCoeffs++;
+        a1 = *pCoeffs++;
+        a2 = *pCoeffs++;
+
+        /*Reading the state values */
+        d1a = pState[0];
+        d2a = pState[1];
+        d1b = pState[2];
+        d2b = pState[3];
+
+
+        sample = blockSize;
+
+        while(sample > 0u)
+        {
+            /* Read the input */
+            Xn1a = *pIn++; //Channel a
+            Xn1b = *pIn++; //Channel b
+
+            /* y[n] = b0 * x[n] + d1 */
+            acc1a = (b0 * Xn1a) + d1a;
+            acc1b = (b0 * Xn1b) + d1b;
+
+            /* Store the result in the accumulator in the destination buffer. */
+            *pOut++ = acc1a;
+            *pOut++ = acc1b;
+
+            /* Every time after the output is computed state should be updated. */
+            /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+            d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;
+            d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;
+
+            /* d2 = b2 * x[n] + a2 * y[n] */
+            d2a = (b2 * Xn1a) + (a2 * acc1a);
+            d2b = (b2 * Xn1b) + (a2 * acc1b);
+
+            /* decrement the loop counter */
+            sample--;
+        }
+
+        /* Store the updated state variables back into the state array */
+        *pState++ = d1a;
+        *pState++ = d2a;
+        *pState++ = d1b;
+        *pState++ = d2b;
+
+        /* The current stage input is given as the output to the next stage */
+        pIn = pDst;
+
+        /*Reset the output working pointer */
+        pOut = pDst;
+
+        /* decrement the loop counter */
+        stage--;
+
+    } while(stage > 0u);
+	 
+#else
+
+    float32_t Xn2a, Xn3a, Xn4a;                          /*  Input State variables     */
+    float32_t Xn2b, Xn3b, Xn4b;                          /*  Input State variables     */
+    float32_t acc2a, acc3a, acc4a;                       /*  accumulator               */
+    float32_t acc2b, acc3b, acc4b;                       /*  accumulator               */
+    float32_t p0a, p1a, p2a, p3a, p4a, A1a;
+    float32_t p0b, p1b, p2b, p3b, p4b, A1b;
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+    do
+    {
+        /* Reading the coefficients */     
+        b0 = *pCoeffs++;
+        b1 = *pCoeffs++;
+        b2 = *pCoeffs++;
+        a1 = *pCoeffs++;
+        a2 = *pCoeffs++;      
+
+        /*Reading the state values */
+        d1a = pState[0];
+        d2a = pState[1];
+        d1b = pState[2];
+        d2b = pState[3];
+
+        /* Apply loop unrolling and compute 4 output values simultaneously. */
+        sample = blockSize >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.       
+        ** a second loop below computes the remaining 1 to 3 samples. */
+        while(sample > 0u) {
+
+            /* y[n] = b0 * x[n] + d1 */
+            /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+            /* d2 = b2 * x[n] + a2 * y[n] */
+
+            /* Read the four inputs */
+            Xn1a = pIn[0];
+            Xn1b = pIn[1];
+            Xn2a = pIn[2];
+            Xn2b = pIn[3];
+            Xn3a = pIn[4];
+            Xn3b = pIn[5];
+            Xn4a = pIn[6];
+            Xn4b = pIn[7];
+            pIn += 8;     
+            
+            p0a = b0 * Xn1a; 
+            p0b = b0 * Xn1b; 
+            p1a = b1 * Xn1a;
+            p1b = b1 * Xn1b;
+            acc1a = p0a + d1a;
+            acc1b = p0b + d1b;
+            p0a = b0 * Xn2a; 
+            p0b = b0 * Xn2b; 
+            p3a = a1 * acc1a;
+            p3b = a1 * acc1b;
+            p2a = b2 * Xn1a;
+            p2b = b2 * Xn1b;
+            A1a = p1a + p3a;
+            A1b = p1b + p3b;
+            p4a = a2 * acc1a;
+            p4b = a2 * acc1b;
+            d1a = A1a + d2a;
+            d1b = A1b + d2b;
+            d2a = p2a + p4a;
+            d2b = p2b + p4b;
+            
+            p1a = b1 * Xn2a;
+            p1b = b1 * Xn2b;
+            acc2a = p0a + d1a;
+            acc2b = p0b + d1b;
+            p0a = b0 * Xn3a; 
+            p0b = b0 * Xn3b; 
+            p3a = a1 * acc2a;
+            p3b = a1 * acc2b;
+            p2a = b2 * Xn2a;
+            p2b = b2 * Xn2b;
+            A1a = p1a + p3a;
+            A1b = p1b + p3b;
+            p4a = a2 * acc2a;
+            p4b = a2 * acc2b;
+            d1a = A1a + d2a;
+            d1b = A1b + d2b;
+            d2a = p2a + p4a;
+            d2b = p2b + p4b;
+            
+            p1a = b1 * Xn3a;
+            p1b = b1 * Xn3b;
+            acc3a = p0a + d1a;
+            acc3b = p0b + d1b;
+            p0a = b0 * Xn4a; 
+            p0b = b0 * Xn4b; 
+            p3a = a1 * acc3a;
+            p3b = a1 * acc3b;
+            p2a = b2 * Xn3a;
+            p2b = b2 * Xn3b;
+            A1a = p1a + p3a;
+            A1b = p1b + p3b;
+            p4a = a2 * acc3a;
+            p4b = a2 * acc3b;
+            d1a = A1a + d2a;
+            d1b = A1b + d2b;
+            d2a = p2a + p4a;
+            d2b = p2b + p4b;
+            
+            acc4a = p0a + d1a;
+            acc4b = p0b + d1b;
+            p1a = b1 * Xn4a;
+            p1b = b1 * Xn4b;
+            p3a = a1 * acc4a;
+            p3b = a1 * acc4b;
+            p2a = b2 * Xn4a;
+            p2b = b2 * Xn4b;
+            A1a = p1a + p3a;
+            A1b = p1b + p3b;
+            p4a = a2 * acc4a;
+            p4b = a2 * acc4b;
+            d1a = A1a + d2a;
+            d1b = A1b + d2b;
+            d2a = p2a + p4a;
+            d2b = p2b + p4b;
+
+            pOut[0] = acc1a;	
+            pOut[1] = acc1b;	
+            pOut[2] = acc2a;	
+            pOut[3] = acc2b;
+            pOut[4] = acc3a;	
+            pOut[5] = acc3b;	
+            pOut[6] = acc4a;	
+            pOut[7] = acc4b;
+            pOut += 8;
+             
+            sample--;	       
+        }
+
+        sample = blockSize & 0x3u;
+        while(sample > 0u) {
+            Xn1a = *pIn++;
+            Xn1b = *pIn++;
+
+            p0a = b0 * Xn1a; 
+            p0b = b0 * Xn1b; 
+            p1a = b1 * Xn1a;
+            p1b = b1 * Xn1b;
+            acc1a = p0a + d1a;
+            acc1b = p0b + d1b;
+            p3a = a1 * acc1a;
+            p3b = a1 * acc1b;
+            p2a = b2 * Xn1a;
+            p2b = b2 * Xn1b;
+            A1a = p1a + p3a;
+            A1b = p1b + p3b;
+            p4a = a2 * acc1a;
+            p4b = a2 * acc1b;
+            d1a = A1a + d2a;
+            d1b = A1b + d2b;
+            d2a = p2a + p4a;
+            d2b = p2b + p4b;
+
+            *pOut++ = acc1a;
+            *pOut++ = acc1b;
+
+            sample--;	       
+        }
+
+        /* Store the updated state variables back into the state array */
+        *pState++ = d1a;
+        *pState++ = d2a;
+        *pState++ = d1b;
+        *pState++ = d2b;
+
+        /* The current stage input is given as the output to the next stage */
+        pIn = pDst;
+
+        /*Reset the output working pointer */
+        pOut = pDst;
+
+        /* decrement the loop counter */
+        stage--;
+
+    } while(stage > 0u);
+
+#endif 
+
+}
+LOW_OPTIMIZATION_EXIT
+
+/**       
+   * @} end of BiquadCascadeDF2T group       
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,102 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_biquad_cascade_stereo_df2T_init_f32.c    
+*    
+* Description:  Initialization function for the floating-point transposed   
+*               direct form II Biquad cascade filter.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup BiquadCascadeDF2T    
+ * @{    
+ */
+
+/**   
+ * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.   
+ * @param[in,out] *S           points to an instance of the filter data structure.   
+ * @param[in]     numStages    number of 2nd order stages in the filter.   
+ * @param[in]     *pCoeffs     points to the filter coefficients.   
+ * @param[in]     *pState      points to the state buffer.   
+ * @return        none   
+ *    
+ * <b>Coefficient and State Ordering:</b>    
+ * \par    
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:    
+ * <pre>    
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}    
+ * </pre>    
+ *    
+ * \par    
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,    
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,    
+ * and so on.  The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.    
+ *    
+ * \par    
+ * The <code>pState</code> is a pointer to state array.    
+ * Each Biquad stage has 2 state variables <code>d1,</code> and <code>d2</code> for each channel.    
+ * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on.    
+ * The state array has a total length of <code>2*numStages</code> values.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ */
+
+void arm_biquad_cascade_stereo_df2T_init_f32(
+  arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+  uint8_t numStages,
+  float32_t * pCoeffs,
+  float32_t * pState)
+{
+  /* Assign filter stages */
+  S->numStages = numStages;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always 4 * numStages */
+  memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+}
+
+/**    
+ * @} end of BiquadCascadeDF2T group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,647 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_f32.c    
+*    
+* Description:	Convolution of floating-point sequences.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup Conv Convolution    
+ *    
+ * Convolution is a mathematical operation that operates on two finite length vectors to generate a finite length output vector.    
+ * Convolution is similar to correlation and is frequently used in filtering and data analysis.    
+ * The CMSIS DSP library contains functions for convolving Q7, Q15, Q31, and floating-point data types.    
+ * The library also provides fast versions of the Q15 and Q31 functions on Cortex-M4 and Cortex-M3.    
+ *    
+ * \par Algorithm    
+ * Let <code>a[n]</code> and <code>b[n]</code> be sequences of length <code>srcALen</code> and <code>srcBLen</code> samples respectively.    
+ * Then the convolution    
+ *    
+ * <pre>    
+ *                   c[n] = a[n] * b[n]    
+ * </pre>    
+ *    
+ * \par    
+ * is defined as    
+ * \image html ConvolutionEquation.gif    
+ * \par    
+ * Note that <code>c[n]</code> is of length <code>srcALen + srcBLen - 1</code> and is defined over the interval <code>n=0, 1, 2, ..., srcALen + srcBLen - 2</code>.    
+ * <code>pSrcA</code> points to the first input vector of length <code>srcALen</code> and    
+ * <code>pSrcB</code> points to the second input vector of length <code>srcBLen</code>.    
+ * The output result is written to <code>pDst</code> and the calling function must allocate <code>srcALen+srcBLen-1</code> words for the result.    
+ *    
+ * \par    
+ * Conceptually, when two signals <code>a[n]</code> and <code>b[n]</code> are convolved,    
+ * the signal <code>b[n]</code> slides over <code>a[n]</code>.    
+ * For each offset \c n, the overlapping portions of a[n] and b[n] are multiplied and summed together.    
+ *    
+ * \par    
+ * Note that convolution is a commutative operation:    
+ *    
+ * <pre>    
+ *                   a[n] * b[n] = b[n] * a[n].    
+ * </pre>    
+ *    
+ * \par    
+ * This means that switching the A and B arguments to the convolution functions has no effect.    
+ *    
+ * <b>Fixed-Point Behavior</b>    
+ *    
+ * \par    
+ * Convolution requires summing up a large number of intermediate products.    
+ * As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation.    
+ * Refer to the function specific documentation below for further details of the particular algorithm used.    
+ *
+ *
+ * <b>Fast Versions</b>
+ *
+ * \par 
+ * Fast versions are supported for Q31 and Q15.  Cycles for Fast versions are less compared to Q31 and Q15 of conv and the design requires
+ * the input signals should be scaled down to avoid intermediate overflows.   
+ *
+ *
+ * <b>Opt Versions</b>
+ *
+ * \par 
+ * Opt versions are supported for Q15 and Q7.  Design uses internal scratch buffer for getting good optimisation.
+ * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions 
+ */
+
+/**    
+ * @addtogroup Conv    
+ * @{    
+ */
+
+/**    
+ * @brief Convolution of floating-point sequences.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.    
+ * @return none.    
+ */
+
+void arm_conv_f32(
+  float32_t * pSrcA,
+  uint32_t srcALen,
+  float32_t * pSrcB,
+  uint32_t srcBLen,
+  float32_t * pDst)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t *pIn1;                               /* inputA pointer */
+  float32_t *pIn2;                               /* inputB pointer */
+  float32_t *pOut = pDst;                        /* output pointer */
+  float32_t *px;                                 /* Intermediate inputA pointer */
+  float32_t *py;                                 /* Intermediate inputB pointer */
+  float32_t *pSrc1, *pSrc2;                      /* Intermediate pointers */
+  float32_t sum, acc0, acc1, acc2, acc3;         /* Accumulator */
+  float32_t x0, x1, x2, x3, c0;                  /* Temporary variables to hold state and coefficient values */
+  uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3;     /* loop counters */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+  /* The function is internally    
+   * divided into three stages according to the number of multiplications that has to be    
+   * taken place between inputA samples and inputB samples. In the first stage of the    
+   * algorithm, the multiplications increase by one for every iteration.    
+   * In the second stage of the algorithm, srcBLen number of multiplications are done.    
+   * In the third stage of the algorithm, the multiplications decrease by one    
+   * for every iteration. */
+
+  /* The algorithm is implemented in three stages.    
+     The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------    
+   * initializations of stage1    
+   * -------------------------*/
+
+  /* sum = x[0] * y[0]    
+   * sum = x[0] * y[1] + x[1] * y[0]    
+   * ....    
+   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]    
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+
+  /* ------------------------    
+   * Stage1 process    
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0.0f;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 1] */
+      sum += *px++ * *py--;
+
+      /* x[1] * y[srcBLen - 2] */
+      sum += *px++ * *py--;
+
+      /* x[2] * y[srcBLen - 3] */
+      sum += *px++ * *py--;
+
+      /* x[3] * y[srcBLen - 4] */
+      sum += *px++ * *py--;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += *px++ * *py--;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = sum;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------    
+   * Initializations of stage2    
+   * ------------------------*/
+
+  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]    
+   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]    
+   * ....    
+   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]    
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------    
+   * Stage2 process    
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+   * So, to loop unroll over blockSize2,    
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0.0f;
+      acc1 = 0.0f;
+      acc2 = 0.0f;
+      acc3 = 0.0f;
+
+      /* read x[0], x[1], x[2] samples */
+      x0 = *(px++);
+      x1 = *(px++);
+      x2 = *(px++);
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read y[srcBLen - 1] sample */
+        c0 = *(py--);
+
+        /* Read x[3] sample */
+        x3 = *(px);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[0] * y[srcBLen - 1] */
+        acc0 += x0 * c0;
+
+        /* acc1 +=  x[1] * y[srcBLen - 1] */
+        acc1 += x1 * c0;
+
+        /* acc2 +=  x[2] * y[srcBLen - 1] */
+        acc2 += x2 * c0;
+
+        /* acc3 +=  x[3] * y[srcBLen - 1] */
+        acc3 += x3 * c0;
+
+        /* Read y[srcBLen - 2] sample */
+        c0 = *(py--);
+
+        /* Read x[4] sample */
+        x0 = *(px + 1u);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[1] * y[srcBLen - 2] */
+        acc0 += x1 * c0;
+        /* acc1 +=  x[2] * y[srcBLen - 2] */
+        acc1 += x2 * c0;
+        /* acc2 +=  x[3] * y[srcBLen - 2] */
+        acc2 += x3 * c0;
+        /* acc3 +=  x[4] * y[srcBLen - 2] */
+        acc3 += x0 * c0;
+
+        /* Read y[srcBLen - 3] sample */
+        c0 = *(py--);
+
+        /* Read x[5] sample */
+        x1 = *(px + 2u);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[2] * y[srcBLen - 3] */
+        acc0 += x2 * c0;
+        /* acc1 +=  x[3] * y[srcBLen - 2] */
+        acc1 += x3 * c0;
+        /* acc2 +=  x[4] * y[srcBLen - 2] */
+        acc2 += x0 * c0;
+        /* acc3 +=  x[5] * y[srcBLen - 2] */
+        acc3 += x1 * c0;
+
+        /* Read y[srcBLen - 4] sample */
+        c0 = *(py--);
+
+        /* Read x[6] sample */
+        x2 = *(px + 3u);
+        px += 4u;
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[3] * y[srcBLen - 4] */
+        acc0 += x3 * c0;
+        /* acc1 +=  x[4] * y[srcBLen - 4] */
+        acc1 += x0 * c0;
+        /* acc2 +=  x[5] * y[srcBLen - 4] */
+        acc2 += x1 * c0;
+        /* acc3 +=  x[6] * y[srcBLen - 4] */
+        acc3 += x2 * c0;
+
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Read y[srcBLen - 5] sample */
+        c0 = *(py--);
+
+        /* Read x[7] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[4] * y[srcBLen - 5] */
+        acc0 += x0 * c0;
+        /* acc1 +=  x[5] * y[srcBLen - 5] */
+        acc1 += x1 * c0;
+        /* acc2 +=  x[6] * y[srcBLen - 5] */
+        acc2 += x2 * c0;
+        /* acc3 +=  x[7] * y[srcBLen - 5] */
+        acc3 += x3 * c0;
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+        x2 = x3;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = acc0;
+      *pOut++ = acc1;
+      *pOut++ = acc2;
+      *pOut++ = acc3;
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0.0f;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += *px++ * *py--;
+        sum += *px++ * *py--;
+        sum += *px++ * *py--;
+        sum += *px++ * *py--;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += *px++ * *py--;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = sum;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,    
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0.0f;
+
+      /* srcBLen number of MACS should be performed */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += *px++ * *py--;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = sum;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+
+  /* --------------------------    
+   * Initializations of stage3    
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]    
+   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]    
+   * ....    
+   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]    
+   * sum +=  x[srcALen-1] * y[srcBLen-1]    
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.    
+     The blockSize3 variable holds the number of MAC operations performed */
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* -------------------    
+   * Stage3 process    
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0.0f;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3 >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */
+      sum += *px++ * *py--;
+
+      /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */
+      sum += *px++ * *py--;
+
+      /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */
+      sum += *px++ * *py--;
+
+      /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */
+      sum += *px++ * *py--;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = blockSize3 % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+      sum += *px++ * *py--;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = sum;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pSrc2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  float32_t *pIn1 = pSrcA;                       /* inputA pointer */
+  float32_t *pIn2 = pSrcB;                       /* inputB pointer */
+  float32_t sum;                                 /* Accumulator */
+  uint32_t i, j;                                 /* loop counters */
+
+  /* Loop to calculate convolution for output length number of times */
+  for (i = 0u; i < ((srcALen + srcBLen) - 1u); i++)
+  {
+    /* Initialize sum with zero to carry out MAC operations */
+    sum = 0.0f;
+
+    /* Loop to perform MAC operations according to convolution equation */
+    for (j = 0u; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if((((i - j) < srcBLen) && (j < srcALen)))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += pIn1[j] * pIn2[i - j];
+      }
+    }
+    /* Store the output in the destination buffer */
+    pDst[i] = sum;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY        */
+
+}
+
+/**    
+ * @} end of Conv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,543 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_fast_opt_q15.c    
+*    
+* Description:	Fast Q15 Convolution.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Conv    
+ * @{    
+ */
+
+/**    
+ * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.    
+ * @param[in]  *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.   
+ * @param[in]  *pScratch2 points to scratch buffer of size min(srcALen, srcBLen).   
+ * @return none.    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit    
+ *     
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * This fast version uses a 32-bit accumulator with 2.30 format.    
+ * The accumulator maintains full precision of the intermediate multiplication results    
+ * but provides only a single guard bit. There is no saturation on intermediate additions.    
+ * Thus, if the accumulator overflows it wraps around and distorts the result.    
+ * The input signals should be scaled down to avoid intermediate overflows.    
+ * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows,    
+ * as maximum of min(srcALen, srcBLen) number of additions are carried internally.    
+ * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.    
+ *    
+ * \par    
+ * See <code>arm_conv_q15()</code> for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.    
+ */
+
+void arm_conv_fast_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */
+  q31_t x1, x2, x3;                              /* Temporary variables to hold state and coefficient values */
+  q31_t y1, y2;                                  /* State variables */
+  q15_t *pOut = pDst;                            /* output pointer */
+  q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */
+  q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  uint32_t j, k, blkCnt;                         /* loop counter */
+  uint32_t tapCnt;                               /* loop count */
+#ifdef UNALIGNED_SUPPORT_DISABLE
+
+  q15_t a, b;
+
+#endif	/*	#ifdef UNALIGNED_SUPPORT_DISABLE	*/
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* Pointer to take end of scratch2 buffer */
+  pScr2 = pScratch2 + srcBLen - 1;
+
+  /* points to smaller length sequence */
+  px = pIn2;
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = srcBLen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+
+  /* Copy smaller length input sequence in reverse order into second scratch buffer */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr2-- = *px++;
+    *pScr2-- = *px++;
+    *pScr2-- = *px++;
+    *pScr2-- = *px++;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = srcBLen % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr2-- = *px++;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* Initialze temporary scratch pointer */
+  pScr1 = pScratch1;
+
+  /* Assuming scratch1 buffer is aligned by 32-bit */
+  /* Fill (srcBLen - 1u) zeros in scratch1 buffer */
+  arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+  /* Update temporary scratch pointer */
+  pScr1 += (srcBLen - 1u);
+
+  /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Copy (srcALen) samples in scratch buffer */
+  arm_copy_q15(pIn1, pScr1, srcALen);
+
+  /* Update pointers */
+  pScr1 += srcALen;
+
+#else
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = srcALen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr1++ = *pIn1++;
+    *pScr1++ = *pIn1++;
+    *pScr1++ = *pIn1++;
+    *pScr1++ = *pIn1++;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = srcALen % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr1++ = *pIn1++;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+  arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+  /* Update pointer */
+  pScr1 += (srcBLen - 1u);
+
+#else
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = (srcBLen - 1u) >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = (srcBLen - 1u) % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr1++ = 0;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+  /* Temporary pointer for scratch2 */
+  py = pScratch2;
+
+
+  /* Initialization of pIn2 pointer */
+  pIn2 = py;
+
+  /* First part of the processing with loop unrolling process 4 data points at a time.       
+   ** a second loop below process for the remaining 1 to 3 samples. */
+
+  /* Actual convolution process starts here */
+  blkCnt = (srcALen + srcBLen - 1u) >> 2;
+
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr1 = pScratch1;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Read two samples from scratch1 buffer */
+    x1 = *__SIMD32(pScr1)++;
+
+    /* Read next two samples from scratch1 buffer */
+    x2 = *__SIMD32(pScr1)++;
+
+    tapCnt = (srcBLen) >> 2u;
+
+    while(tapCnt > 0u)
+    {
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+      /* Read four samples from smaller buffer */
+      y1 = _SIMD32_OFFSET(pIn2);
+      y2 = _SIMD32_OFFSET(pIn2 + 2u);
+
+      /* multiply and accumlate */
+      acc0 = __SMLAD(x1, y1, acc0);
+      acc2 = __SMLAD(x2, y1, acc2);
+
+      /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      /* multiply and accumlate */
+      acc1 = __SMLADX(x3, y1, acc1);
+
+      /* Read next two samples from scratch1 buffer */
+      x1 = _SIMD32_OFFSET(pScr1);
+
+      /* multiply and accumlate */
+      acc0 = __SMLAD(x2, y2, acc0);
+      acc2 = __SMLAD(x1, y2, acc2);
+
+      /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y1, acc3);
+      acc1 = __SMLADX(x3, y2, acc1);
+
+      x2 = _SIMD32_OFFSET(pScr1 + 2u);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y2, acc3);
+
+#else	 
+
+      /* Read four samples from smaller buffer */
+	  a = *pIn2;
+	  b = *(pIn2 + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      y1 = __PKHBT(a, b, 16);
+#else
+      y1 = __PKHBT(b, a, 16);
+#endif
+	  
+	  a = *(pIn2 + 2);
+	  b = *(pIn2 + 3);
+#ifndef ARM_MATH_BIG_ENDIAN
+      y2 = __PKHBT(a, b, 16);
+#else
+      y2 = __PKHBT(b, a, 16);
+#endif				
+
+      acc0 = __SMLAD(x1, y1, acc0);
+
+      acc2 = __SMLAD(x2, y1, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc1 = __SMLADX(x3, y1, acc1);
+
+	  a = *pScr1;
+	  b = *(pScr1 + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(a, b, 16);
+#else
+      x1 = __PKHBT(b, a, 16);
+#endif
+
+      acc0 = __SMLAD(x2, y2, acc0);
+
+      acc2 = __SMLAD(x1, y2, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y1, acc3);
+
+      acc1 = __SMLADX(x3, y2, acc1);
+
+	  a = *(pScr1 + 2);
+	  b = *(pScr1 + 3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x2 = __PKHBT(a, b, 16);
+#else
+      x2 = __PKHBT(b, a, 16);
+#endif
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y2, acc3);
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+      /* update scratch pointers */
+      pIn2 += 4u;
+      pScr1 += 4u;
+
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Update scratch pointer for remaining samples of smaller length sequence */
+    pScr1 -= 4u;
+
+    /* apply same above for remaining samples of smaller length sequence */
+    tapCnt = (srcBLen) & 3u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr1++ * *pIn2);
+      acc1 += (*pScr1++ * *pIn2);
+      acc2 += (*pScr1++ * *pIn2);
+      acc3 += (*pScr1++ * *pIn2++);
+
+      pScr1 -= 3u;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+
+    /* Store the results in the accumulators in the destination buffer. */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pOut)++ =
+      __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+
+    *__SIMD32(pOut)++ =
+      __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+
+#else
+
+    *__SIMD32(pOut)++ =
+      __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+
+    *__SIMD32(pOut)++ =
+      __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN       */
+
+    /* Initialization of inputB pointer */
+    pIn2 = py;
+
+    pScratch1 += 4u;
+
+  }
+
+
+  blkCnt = (srcALen + srcBLen - 1u) & 0x3;
+
+  /* Calculate convolution for remaining samples of Bigger length sequence */
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr1 = pScratch1;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+
+    tapCnt = (srcBLen) >> 1u;
+
+    while(tapCnt > 0u)
+    {
+
+      acc0 += (*pScr1++ * *pIn2++);
+      acc0 += (*pScr1++ * *pIn2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    tapCnt = (srcBLen) & 1u;
+
+    /* apply same above for remaining samples of smaller length sequence */
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr1++ * *pIn2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+    /* The result is in 2.30 format.  Convert to 1.15 with saturation.       
+     ** Then store the output in the destination buffer. */
+    *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+    /* Initialization of inputB pointer */
+    pIn2 = py;
+
+    pScratch1 += 1u;
+
+  }
+
+}
+
+/**    
+ * @} end of Conv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1410 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_conv_fast_q15.c   
+*   
+* Description:	Fast Q15 Convolution.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3
+* 
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup Conv   
+ * @{   
+ */
+
+/**   
+ * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.   
+ * @param[in] *pSrcA points to the first input sequence.   
+ * @param[in] srcALen length of the first input sequence.   
+ * @param[in] *pSrcB points to the second input sequence.   
+ * @param[in] srcBLen length of the second input sequence.   
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.   
+ * @return none.   
+ *   
+ * <b>Scaling and Overflow Behavior:</b>   
+ *   
+ * \par   
+ * This fast version uses a 32-bit accumulator with 2.30 format.   
+ * The accumulator maintains full precision of the intermediate multiplication results   
+ * but provides only a single guard bit. There is no saturation on intermediate additions.   
+ * Thus, if the accumulator overflows it wraps around and distorts the result.   
+ * The input signals should be scaled down to avoid intermediate overflows.   
+ * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows,   
+ * as maximum of min(srcALen, srcBLen) number of additions are carried internally.   
+ * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.   
+ *   
+ * \par   
+ * See <code>arm_conv_q15()</code> for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.   
+ */
+
+void arm_conv_fast_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst)
+{
+#ifndef UNALIGNED_SUPPORT_DISABLE
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *pOut = pDst;                            /* output pointer */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulator */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers */
+  q31_t x0, x1, x2, x3, c0;                      /* Temporary variables to hold state and coefficient values */
+  uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt;     /* loop counter */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+  /* The function is internally   
+   * divided into three stages according to the number of multiplications that has to be   
+   * taken place between inputA samples and inputB samples. In the first stage of the   
+   * algorithm, the multiplications increase by one for every iteration.   
+   * In the second stage of the algorithm, srcBLen number of multiplications are done.   
+   * In the third stage of the algorithm, the multiplications decrease by one   
+   * for every iteration. */
+
+  /* The algorithm is implemented in three stages.   
+     The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------   
+   * Initializations of stage1   
+   * -------------------------*/
+
+  /* sum = x[0] * y[0]   
+   * sum = x[0] * y[1] + x[1] * y[0]   
+   * ....   
+   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]   
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+
+  /* ------------------------   
+   * Stage1 process   
+   * ----------------------*/
+
+  /* For loop unrolling by 4, this stage is divided into two. */
+  /* First part of this stage computes the MAC operations less than 4 */
+  /* Second part of this stage computes the MAC operations greater than or equal to 4 */
+
+  /* The first part of the stage starts here */
+  while((count < 4u) && (blockSize1 > 0u))
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Loop over number of MAC operations between   
+     * inputA samples and inputB samples */
+    k = count;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum = __SMLAD(*px++, *py--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (sum >> 15);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* The second part of the stage starts here */
+  /* The internal loop, over count, is unrolled by 4 */
+  /* To, read the last two inputB samples using SIMD:   
+   * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */
+  py = py - 1;
+
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */
+      sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+      /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */
+      sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* For the next MAC operations, the pointer py is used without SIMD   
+     * So, py is incremented by 1 */
+    py = py + 1u;
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum = __SMLAD(*px++, *py--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (sum >> 15);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + (count - 1u);
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------   
+   * Initializations of stage2   
+   * ------------------------*/
+
+  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]   
+   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]   
+   * ....   
+   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]   
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* count is the index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+
+  /* --------------------   
+   * Stage2 process   
+   * -------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      py = py - 1u;
+
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+
+      /* read x[0], x[1] samples */
+      x0 = *__SIMD32(px);
+      /* read x[1], x[2] samples */
+      x1 = _SIMD32_OFFSET(px+1);
+	  px+= 2u;
+
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read the last two inputB samples using SIMD:   
+         * y[srcBLen - 1] and y[srcBLen - 2] */
+        c0 = *__SIMD32(py)--;
+
+        /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */
+        acc0 = __SMLADX(x0, c0, acc0);
+
+        /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */
+        acc1 = __SMLADX(x1, c0, acc1);
+
+        /* Read x[2], x[3] */
+        x2 = *__SIMD32(px);
+
+        /* Read x[3], x[4] */
+        x3 = _SIMD32_OFFSET(px+1);
+
+        /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */
+        acc2 = __SMLADX(x2, c0, acc2);
+
+        /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */
+        acc3 = __SMLADX(x3, c0, acc3);
+
+        /* Read y[srcBLen - 3] and y[srcBLen - 4] */
+        c0 = *__SIMD32(py)--;
+
+        /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */
+        acc0 = __SMLADX(x2, c0, acc0);
+
+        /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */
+        acc1 = __SMLADX(x3, c0, acc1);
+
+        /* Read x[4], x[5] */
+        x0 = _SIMD32_OFFSET(px+2);
+
+        /* Read x[5], x[6] */
+        x1 = _SIMD32_OFFSET(px+3);
+		px += 4u;
+
+        /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */
+        acc2 = __SMLADX(x0, c0, acc2);
+
+        /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */
+        acc3 = __SMLADX(x1, c0, acc3);
+
+      } while(--k);
+
+      /* For the next MAC operations, SIMD is not used   
+       * So, the 16 bit pointer if inputB, py is updated */
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      if(k == 1u)
+      {
+        /* Read y[srcBLen - 5] */
+        c0 = *(py+1);
+
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[7] */
+        x3 = *__SIMD32(px);
+		px++;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLADX(x1, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      if(k == 2u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+        c0 = _SIMD32_OFFSET(py);
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px+1);
+		px += 2u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x0, c0, acc0);
+        acc1 = __SMLADX(x1, c0, acc1);
+        acc2 = __SMLADX(x3, c0, acc2);
+        acc3 = __SMLADX(x2, c0, acc3);
+      }
+
+      if(k == 3u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+        c0 = _SIMD32_OFFSET(py);
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px+1);
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x0, c0, acc0);
+        acc1 = __SMLADX(x1, c0, acc1);
+        acc2 = __SMLADX(x3, c0, acc2);
+        acc3 = __SMLADX(x2, c0, acc3);
+
+        /* Read y[srcBLen - 7] */
+		c0 = *(py-1);
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[10] */
+        x3 =  _SIMD32_OFFSET(px+2);
+		px += 3u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x1, c0, acc0);
+        acc1 = __SMLAD(x2, c0, acc1);
+        acc2 = __SMLADX(x2, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      /* Store the results in the accumulators in the destination buffer. */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pOut)++ = __PKHBT((acc0 >> 15), (acc1 >> 15), 16);
+      *__SIMD32(pOut)++ = __PKHBT((acc2 >> 15), (acc3 >> 15), 16);
+
+#else
+
+      *__SIMD32(pOut)++ = __PKHBT((acc1 >> 15), (acc0 >> 15), 16);
+      *__SIMD32(pOut)++ = __PKHBT((acc3 >> 15), (acc2 >> 15), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,   
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* srcBLen number of MACS should be performed */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+
+  /* --------------------------   
+   * Initializations of stage3   
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]   
+   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]   
+   * ....   
+   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]   
+   * sum +=  x[srcALen-1] * y[srcBLen-1]   
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.   
+     The blockSize3 variable holds the number of MAC operations performed */
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  pIn2 = pSrc2 - 1u;
+  py = pIn2;
+
+  /* -------------------   
+   * Stage3 process   
+   * ------------------*/
+
+  /* For loop unrolling by 4, this stage is divided into two. */
+  /* First part of this stage computes the MAC operations greater than 4 */
+  /* Second part of this stage computes the MAC operations less than or equal to 4 */
+
+  /* The first part of the stage starts here */
+  j = blockSize3 >> 2u;
+
+  while((j > 0u) && (blockSize3 > 0u))
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3 >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied   
+       * with y[srcBLen - 1], y[srcBLen - 2] respectively */
+      sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+      /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied   
+       * with y[srcBLen - 3], y[srcBLen - 4] respectively */
+      sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* For the next MAC operations, the pointer py is used without SIMD   
+     * So, py is incremented by 1 */
+    py = py + 1u;
+
+    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = blockSize3 % 0x4u;
+
+    while(k > 0u)
+    {
+      /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */
+      sum = __SMLAD(*px++, *py--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (sum >> 15);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+
+    j--;
+  }
+
+  /* The second part of the stage starts here */
+  /* SIMD is not used for the next MAC operations,   
+   * so pointer py is updated to read only one sample at a time */
+  py = py + 1u;
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+      sum = __SMLAD(*px++, *py--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (sum >> 15);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pSrc2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *pOut = pDst;                            /* output pointer */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulator */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers */
+  q31_t x0, x1, x2, x3, c0;                      /* Temporary variables to hold state and coefficient values */
+  uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt;     /* loop counter */
+  q15_t a, b;
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+  /* The function is internally   
+   * divided into three stages according to the number of multiplications that has to be   
+   * taken place between inputA samples and inputB samples. In the first stage of the   
+   * algorithm, the multiplications increase by one for every iteration.   
+   * In the second stage of the algorithm, srcBLen number of multiplications are done.   
+   * In the third stage of the algorithm, the multiplications decrease by one   
+   * for every iteration. */
+
+  /* The algorithm is implemented in three stages.   
+     The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------   
+   * Initializations of stage1   
+   * -------------------------*/
+
+  /* sum = x[0] * y[0]   
+   * sum = x[0] * y[1] + x[1] * y[0]   
+   * ....   
+   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]   
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+
+  /* ------------------------   
+   * Stage1 process   
+   * ----------------------*/
+
+  /* For loop unrolling by 4, this stage is divided into two. */
+  /* First part of this stage computes the MAC operations less than 4 */
+  /* Second part of this stage computes the MAC operations greater than or equal to 4 */
+
+  /* The first part of the stage starts here */
+  while((count < 4u) && (blockSize1 > 0u))
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Loop over number of MAC operations between   
+     * inputA samples and inputB samples */
+    k = count;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum += ((q31_t) * px++ * *py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (sum >> 15);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* The second part of the stage starts here */
+  /* The internal loop, over count, is unrolled by 4 */
+  /* To, read the last two inputB samples using SIMD:   
+   * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */
+  py = py - 1;
+
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+	py++;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum += ((q31_t) * px++ * *py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (sum >> 15);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + (count - 1u);
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------   
+   * Initializations of stage2   
+   * ------------------------*/
+
+  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]   
+   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]   
+   * ....   
+   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]   
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* count is the index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+
+  /* --------------------   
+   * Stage2 process   
+   * -------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      py = py - 1u;
+
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;	  
+
+      /* read x[0], x[1] samples */
+	  a = *px++;
+	  b = *px++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x0 = __PKHBT(a, b, 16);
+	  a = *px;
+	  x1 = __PKHBT(b, a, 16);
+
+#else
+
+	  x0 = __PKHBT(b, a, 16);
+	  a = *px;
+	  x1 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read the last two inputB samples using SIMD:   
+         * y[srcBLen - 1] and y[srcBLen - 2] */
+		a = *py;
+		b = *(py+1);
+		py -= 2;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		c0 = __PKHBT(a, b, 16);
+
+#else
+
+ 		c0 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */
+        acc0 = __SMLADX(x0, c0, acc0);
+
+        /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */
+        acc1 = __SMLADX(x1, c0, acc1);
+
+	  a = *px;
+	  b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x2 = __PKHBT(a, b, 16);
+	  a = *(px + 2);
+	  x3 = __PKHBT(b, a, 16);
+
+#else
+
+	  x2 = __PKHBT(b, a, 16);
+	  a = *(px + 2);
+	  x3 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+
+        /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */
+        acc2 = __SMLADX(x2, c0, acc2);
+
+        /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */
+        acc3 = __SMLADX(x3, c0, acc3);
+
+        /* Read y[srcBLen - 3] and y[srcBLen - 4] */
+		a = *py;
+		b = *(py+1);
+		py -= 2;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		c0 = __PKHBT(a, b, 16);
+
+#else
+
+ 		c0 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */
+        acc0 = __SMLADX(x2, c0, acc0);
+
+        /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */
+        acc1 = __SMLADX(x3, c0, acc1);
+
+        /* Read x[4], x[5], x[6] */
+	  a = *(px + 2);
+	  b = *(px + 3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x0 = __PKHBT(a, b, 16);
+	  a = *(px + 4);
+	  x1 = __PKHBT(b, a, 16);
+
+#else
+
+	  x0 = __PKHBT(b, a, 16);
+	  a = *(px + 4);
+	  x1 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+
+		px += 4u;
+
+        /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */
+        acc2 = __SMLADX(x0, c0, acc2);
+
+        /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */
+        acc3 = __SMLADX(x1, c0, acc3);
+
+      } while(--k);
+
+      /* For the next MAC operations, SIMD is not used   
+       * So, the 16 bit pointer if inputB, py is updated */
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      if(k == 1u)
+      {
+        /* Read y[srcBLen - 5] */
+        c0 = *(py+1);
+
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[7] */
+		a = *px;
+		b = *(px+1);
+		px++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		x3 = __PKHBT(a, b, 16);
+
+#else
+
+ 		x3 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLADX(x1, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      if(k == 2u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+		a = *py;
+		b = *(py+1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		c0 = __PKHBT(a, b, 16);
+
+#else
+
+ 		c0 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* Read x[7], x[8], x[9] */
+	  a = *px;
+	  b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x3 = __PKHBT(a, b, 16);
+	  a = *(px + 2);
+	  x2 = __PKHBT(b, a, 16);
+
+#else
+
+	  x3 = __PKHBT(b, a, 16);
+	  a = *(px + 2);
+	  x2 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+		px += 2u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x0, c0, acc0);
+        acc1 = __SMLADX(x1, c0, acc1);
+        acc2 = __SMLADX(x3, c0, acc2);
+        acc3 = __SMLADX(x2, c0, acc3);
+      }
+
+      if(k == 3u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+		a = *py;
+		b = *(py+1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		c0 = __PKHBT(a, b, 16);
+
+#else
+
+ 		c0 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* Read x[7], x[8], x[9] */
+	  a = *px;
+	  b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x3 = __PKHBT(a, b, 16);
+	  a = *(px + 2);
+	  x2 = __PKHBT(b, a, 16);
+
+#else
+
+	  x3 = __PKHBT(b, a, 16);
+	  a = *(px + 2);
+	  x2 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x0, c0, acc0);
+        acc1 = __SMLADX(x1, c0, acc1);
+        acc2 = __SMLADX(x3, c0, acc2);
+        acc3 = __SMLADX(x2, c0, acc3);
+
+        /* Read y[srcBLen - 7] */
+		c0 = *(py-1);
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[10] */
+		a = *(px+2);
+		b = *(px+3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		x3 = __PKHBT(a, b, 16);
+
+#else
+
+ 		x3 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+		px += 3u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x1, c0, acc0);
+        acc1 = __SMLAD(x2, c0, acc1);
+        acc2 = __SMLADX(x2, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      /* Store the results in the accumulators in the destination buffer. */
+	  *pOut++ = (q15_t)(acc0 >> 15);
+	  *pOut++ = (q15_t)(acc1 >> 15);
+	  *pOut++ = (q15_t)(acc2 >> 15);
+	  *pOut++ = (q15_t)(acc3 >> 15);
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,   
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* srcBLen number of MACS should be performed */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+
+  /* --------------------------   
+   * Initializations of stage3   
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]   
+   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]   
+   * ....   
+   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]   
+   * sum +=  x[srcALen-1] * y[srcBLen-1]   
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.   
+     The blockSize3 variable holds the number of MAC operations performed */
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  pIn2 = pSrc2 - 1u;
+  py = pIn2;
+
+  /* -------------------   
+   * Stage3 process   
+   * ------------------*/
+
+  /* For loop unrolling by 4, this stage is divided into two. */
+  /* First part of this stage computes the MAC operations greater than 4 */
+  /* Second part of this stage computes the MAC operations less than or equal to 4 */
+
+  /* The first part of the stage starts here */
+  j = blockSize3 >> 2u;
+
+  while((j > 0u) && (blockSize3 > 0u))
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3 >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+	py++;
+
+    while(k > 0u)
+    {	
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = blockSize3 % 0x4u;
+
+    while(k > 0u)
+    {
+      /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */
+        sum += ((q31_t) * px++ * *py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (sum >> 15);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+
+    j--;
+  }
+
+  /* The second part of the stage starts here */
+  /* SIMD is not used for the next MAC operations,   
+   * so pointer py is updated to read only one sample at a time */
+  py = py + 1u;
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+        sum += ((q31_t) * px++ * *py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (sum >> 15);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pSrc2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+}
+
+/**   
+ * @} end of Conv group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,577 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_fast_q31.c    
+*    
+* Description:	Q31 Convolution (fast version).    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Conv    
+ * @{    
+ */
+
+/**    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * This function is optimized for speed at the expense of fixed-point precision and overflow protection.    
+ * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.    
+ * These intermediate results are accumulated in a 32-bit register in 2.30 format.    
+ * Finally, the accumulator is saturated and converted to a 1.31 result.    
+ *    
+ * \par    
+ * The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result.    
+ * In order to avoid overflows completely the input signals must be scaled down.    
+ * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows,    
+ * as maximum of min(srcALen, srcBLen) number of additions are carried internally.    
+ *    
+ * \par    
+ * See <code>arm_conv_q31()</code> for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.    
+ */
+
+void arm_conv_fast_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst)
+{
+  q31_t *pIn1;                                   /* inputA pointer */
+  q31_t *pIn2;                                   /* inputB pointer */
+  q31_t *pOut = pDst;                            /* output pointer */
+  q31_t *px;                                     /* Intermediate inputA pointer  */
+  q31_t *py;                                     /* Intermediate inputB pointer  */
+  q31_t *pSrc1, *pSrc2;                          /* Intermediate pointers */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulator */
+  q31_t x0, x1, x2, x3, c0;                      /* Temporary variables to hold state and coefficient values */
+  uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3;     /* loop counter */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+  /* The function is internally    
+   * divided into three stages according to the number of multiplications that has to be    
+   * taken place between inputA samples and inputB samples. In the first stage of the    
+   * algorithm, the multiplications increase by one for every iteration.    
+   * In the second stage of the algorithm, srcBLen number of multiplications are done.    
+   * In the third stage of the algorithm, the multiplications decrease by one    
+   * for every iteration. */
+
+  /* The algorithm is implemented in three stages.    
+     The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------    
+   * Initializations of stage1    
+   * -------------------------*/
+
+  /* sum = x[0] * y[0]    
+   * sum = x[0] * y[1] + x[1] * y[0]    
+   * ....    
+   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]    
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+
+  /* ------------------------    
+   * Stage1 process    
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 1] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* x[1] * y[srcBLen - 2] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* x[2] * y[srcBLen - 3] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* x[3] * y[srcBLen - 4] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = sum << 1;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------    
+   * Initializations of stage2    
+   * ------------------------*/
+
+  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]    
+   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]    
+   * ....    
+   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]    
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------    
+   * Stage2 process    
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+   * So, to loop unroll over blockSize2,    
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* read x[0], x[1], x[2] samples */
+      x0 = *(px++);
+      x1 = *(px++);
+      x2 = *(px++);
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read y[srcBLen - 1] sample */
+        c0 = *(py--);
+
+        /* Read x[3] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[0] * y[srcBLen - 1] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+        /* acc1 +=  x[1] * y[srcBLen - 1] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+        /* acc2 +=  x[2] * y[srcBLen - 1] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);
+
+        /* acc3 +=  x[3] * y[srcBLen - 1] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);
+
+        /* Read y[srcBLen - 2] sample */
+        c0 = *(py--);
+
+        /* Read x[4] sample */
+        x0 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[1] * y[srcBLen - 2] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32);
+        /* acc1 +=  x[2] * y[srcBLen - 2] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32);
+        /* acc2 +=  x[3] * y[srcBLen - 2] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32);
+        /* acc3 +=  x[4] * y[srcBLen - 2] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+        /* Read y[srcBLen - 3] sample */
+        c0 = *(py--);
+
+        /* Read x[5] sample */
+        x1 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[2] * y[srcBLen - 3] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32);
+        /* acc1 +=  x[3] * y[srcBLen - 3] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32);
+        /* acc2 +=  x[4] * y[srcBLen - 3] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32);
+        /* acc3 +=  x[5] * y[srcBLen - 3] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+        /* Read y[srcBLen - 4] sample */
+        c0 = *(py--);
+
+        /* Read x[6] sample */
+        x2 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[3] * y[srcBLen - 4] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32);
+        /* acc1 +=  x[4] * y[srcBLen - 4] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32);
+        /* acc2 +=  x[5] * y[srcBLen - 4] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32);
+        /* acc3 +=  x[6] * y[srcBLen - 4] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32);
+
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Read y[srcBLen - 5] sample */
+        c0 = *(py--);
+
+        /* Read x[7] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[4] * y[srcBLen - 5] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+        /* acc1 +=  x[5] * y[srcBLen - 5] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+        /* acc2 +=  x[6] * y[srcBLen - 5] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);
+        /* acc3 +=  x[7] * y[srcBLen - 5] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+        x2 = x3;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the results in the accumulators in the destination buffer. */
+      *pOut++ = (q31_t) (acc0 << 1);
+      *pOut++ = (q31_t) (acc1 << 1);
+      *pOut++ = (q31_t) (acc2 << 1);
+      *pOut++ = (q31_t) (acc3 << 1);
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = sum << 1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,    
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* srcBLen number of MACS should be performed */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = sum << 1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+
+  /* --------------------------    
+   * Initializations of stage3    
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]    
+   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]    
+   * ....    
+   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]    
+   * sum +=  x[srcALen-1] * y[srcBLen-1]    
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.    
+     The blockSize3 variable holds the number of MAC operations performed */
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* -------------------    
+   * Stage3 process    
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3 >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = blockSize3 % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py--))) >> 32);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = sum << 1;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pSrc2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+}
+
+/**    
+ * @} end of Conv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,545 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_opt_q15.c    
+*    
+* Description:	Convolution of Q15 sequences.      
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Conv    
+ * @{    
+ */
+
+/**    
+ * @brief Convolution of Q15 sequences.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.    
+ * @param[in]  *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.    
+ * @param[in]  *pScratch2 points to scratch buffer of size min(srcALen, srcBLen).    
+ * @return none.    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit    
+ *    
+ *       
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * Both inputs are in 1.15 format and multiplications yield a 2.30 result.    
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.    
+ * This approach provides 33 guard bits and there is no risk of overflow.    
+ * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.    
+ *  
+ *   
+ * \par    
+ * Refer to <code>arm_conv_fast_q15()</code> for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.     
+ * 
+ *  
+ */
+
+void arm_conv_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+  q63_t acc0, acc1, acc2, acc3;                  /* Accumulator */
+  q31_t x1, x2, x3;                              /* Temporary variables to hold state and coefficient values */
+  q31_t y1, y2;                                  /* State variables */
+  q15_t *pOut = pDst;                            /* output pointer */
+  q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */
+  q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  uint32_t j, k, blkCnt;                         /* loop counter */
+  uint32_t tapCnt;                               /* loop count */
+#ifdef UNALIGNED_SUPPORT_DISABLE
+
+  q15_t a, b;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* pointer to take end of scratch2 buffer */
+  pScr2 = pScratch2 + srcBLen - 1;
+
+  /* points to smaller length sequence */
+  px = pIn2;
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = srcBLen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  /* Copy smaller length input sequence in reverse order into second scratch buffer */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr2-- = *px++;
+    *pScr2-- = *px++;
+    *pScr2-- = *px++;
+    *pScr2-- = *px++;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = srcBLen % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr2-- = *px++;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* Initialze temporary scratch pointer */
+  pScr1 = pScratch1;
+
+  /* Assuming scratch1 buffer is aligned by 32-bit */
+  /* Fill (srcBLen - 1u) zeros in scratch buffer */
+  arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+  /* Update temporary scratch pointer */
+  pScr1 += (srcBLen - 1u);
+
+  /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Copy (srcALen) samples in scratch buffer */
+  arm_copy_q15(pIn1, pScr1, srcALen);
+
+  /* Update pointers */
+  pScr1 += srcALen;
+
+#else
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = srcALen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr1++ = *pIn1++;
+    *pScr1++ = *pIn1++;
+    *pScr1++ = *pIn1++;
+    *pScr1++ = *pIn1++;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = srcALen % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr1++ = *pIn1++;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+#endif
+
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+  arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+  /* Update pointer */
+  pScr1 += (srcBLen - 1u);
+
+#else
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = (srcBLen - 1u) >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = (srcBLen - 1u) % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr1++ = 0;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+#endif
+
+  /* Temporary pointer for scratch2 */
+  py = pScratch2;
+
+
+  /* Initialization of pIn2 pointer */
+  pIn2 = py;
+
+  /* First part of the processing with loop unrolling process 4 data points at a time.       
+   ** a second loop below process for the remaining 1 to 3 samples. */
+
+  /* Actual convolution process starts here */
+  blkCnt = (srcALen + srcBLen - 1u) >> 2;
+
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr1 = pScratch1;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Read two samples from scratch1 buffer */
+    x1 = *__SIMD32(pScr1)++;
+
+    /* Read next two samples from scratch1 buffer */
+    x2 = *__SIMD32(pScr1)++;
+
+    tapCnt = (srcBLen) >> 2u;
+
+    while(tapCnt > 0u)
+    {
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+      /* Read four samples from smaller buffer */
+      y1 = _SIMD32_OFFSET(pIn2);
+      y2 = _SIMD32_OFFSET(pIn2 + 2u);
+
+      /* multiply and accumlate */
+      acc0 = __SMLALD(x1, y1, acc0);
+      acc2 = __SMLALD(x2, y1, acc2);
+
+      /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      /* multiply and accumlate */
+      acc1 = __SMLALDX(x3, y1, acc1);
+
+      /* Read next two samples from scratch1 buffer */
+      x1 = _SIMD32_OFFSET(pScr1);
+
+      /* multiply and accumlate */
+      acc0 = __SMLALD(x2, y2, acc0);
+      acc2 = __SMLALD(x1, y2, acc2);
+
+      /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLALDX(x3, y1, acc3);
+      acc1 = __SMLALDX(x3, y2, acc1);
+
+      x2 = _SIMD32_OFFSET(pScr1 + 2u);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLALDX(x3, y2, acc3);
+
+#else	 
+
+      /* Read four samples from smaller buffer */
+	  a = *pIn2;
+	  b = *(pIn2 + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      y1 = __PKHBT(a, b, 16);
+#else
+      y1 = __PKHBT(b, a, 16);
+#endif
+	  
+	  a = *(pIn2 + 2);
+	  b = *(pIn2 + 3);
+#ifndef ARM_MATH_BIG_ENDIAN
+      y2 = __PKHBT(a, b, 16);
+#else
+      y2 = __PKHBT(b, a, 16);
+#endif				
+
+      acc0 = __SMLALD(x1, y1, acc0);
+
+      acc2 = __SMLALD(x2, y1, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc1 = __SMLALDX(x3, y1, acc1);
+
+	  a = *pScr1;
+	  b = *(pScr1 + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(a, b, 16);
+#else
+      x1 = __PKHBT(b, a, 16);
+#endif
+
+      acc0 = __SMLALD(x2, y2, acc0);
+
+      acc2 = __SMLALD(x1, y2, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLALDX(x3, y1, acc3);
+
+      acc1 = __SMLALDX(x3, y2, acc1);
+
+	  a = *(pScr1 + 2);
+	  b = *(pScr1 + 3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x2 = __PKHBT(a, b, 16);
+#else
+      x2 = __PKHBT(b, a, 16);
+#endif
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLALDX(x3, y2, acc3);
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+      pIn2 += 4u;
+      pScr1 += 4u;
+
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Update scratch pointer for remaining samples of smaller length sequence */
+    pScr1 -= 4u;
+
+    /* apply same above for remaining samples of smaller length sequence */
+    tapCnt = (srcBLen) & 3u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr1++ * *pIn2);
+      acc1 += (*pScr1++ * *pIn2);
+      acc2 += (*pScr1++ * *pIn2);
+      acc3 += (*pScr1++ * *pIn2++);
+
+      pScr1 -= 3u;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+
+    /* Store the results in the accumulators in the destination buffer. */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pOut)++ =
+      __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+
+    *__SIMD32(pOut)++ =
+      __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+#else
+
+    *__SIMD32(pOut)++ =
+      __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+
+    *__SIMD32(pOut)++ =
+      __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN       */
+
+    /* Initialization of inputB pointer */
+    pIn2 = py;
+
+    pScratch1 += 4u;
+
+  }
+
+
+  blkCnt = (srcALen + srcBLen - 1u) & 0x3;
+
+  /* Calculate convolution for remaining samples of Bigger length sequence */
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr1 = pScratch1;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+
+    tapCnt = (srcBLen) >> 1u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* Read next two samples from scratch1 buffer */
+      acc0 += (*pScr1++ * *pIn2++);
+      acc0 += (*pScr1++ * *pIn2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    tapCnt = (srcBLen) & 1u;
+
+    /* apply same above for remaining samples of smaller length sequence */
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr1++ * *pIn2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+    /* The result is in 2.30 format.  Convert to 1.15 with saturation.       
+     ** Then store the output in the destination buffer. */
+    *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+
+    /* Initialization of inputB pointer */
+    pIn2 = py;
+
+    pScratch1 += 1u;
+
+  }
+
+}
+
+
+/**    
+ * @} end of Conv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,435 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_opt_q7.c    
+*    
+* Description:	Convolution of Q7 sequences.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Conv    
+ * @{    
+ */
+
+/**    
+ * @brief Convolution of Q7 sequences.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.    
+ * @param[in]  *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.   
+ * @param[in]  *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).   
+ * @return none.    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit     
+ *       
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 32-bit internal accumulator.    
+ * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result.    
+ * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.    
+ * This approach provides 17 guard bits and there is no risk of overflow as long as <code>max(srcALen, srcBLen)<131072</code>.    
+ * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format.    
+ *
+ */
+
+void arm_conv_opt_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+
+  q15_t *pScr2, *pScr1;                          /* Intermediate pointers for scratch pointers */
+  q15_t x4;                                      /* Temporary input variable */
+  q7_t *pIn1, *pIn2;                             /* inputA and inputB pointer */
+  uint32_t j, k, blkCnt, tapCnt;                 /* loop counter */
+  q7_t *px;                                      /* Temporary input1 pointer */
+  q15_t *py;                                     /* Temporary input2 pointer */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulator */
+  q31_t x1, x2, x3, y1;                          /* Temporary input variables */
+  q7_t *pOut = pDst;                             /* output pointer */
+  q7_t out0, out1, out2, out3;                   /* temporary variables */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* pointer to take end of scratch2 buffer */
+  pScr2 = pScratch2;
+
+  /* points to smaller length sequence */
+  px = pIn2 + srcBLen - 1;
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = srcBLen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    x4 = (q15_t) * px--;
+    *pScr2++ = x4;
+    x4 = (q15_t) * px--;
+    *pScr2++ = x4;
+    x4 = (q15_t) * px--;
+    *pScr2++ = x4;
+    x4 = (q15_t) * px--;
+    *pScr2++ = x4;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = srcBLen % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    x4 = (q15_t) * px--;
+    *pScr2++ = x4;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* Initialze temporary scratch pointer */
+  pScr1 = pScratch1;
+
+  /* Fill (srcBLen - 1u) zeros in scratch buffer */
+  arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+  /* Update temporary scratch pointer */
+  pScr1 += (srcBLen - 1u);
+
+  /* Copy (srcALen) samples in scratch buffer */
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = srcALen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = srcALen % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+  arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+  /* Update pointer */
+  pScr1 += (srcBLen - 1u);
+
+#else
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = (srcBLen - 1u) >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = (srcBLen - 1u) % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr1++ = 0;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+#endif
+
+  /* Temporary pointer for scratch2 */
+  py = pScratch2;
+
+  /* Initialization of pIn2 pointer */
+  pIn2 = (q7_t *) py;
+
+  pScr2 = py;
+
+  /* Actual convolution process starts here */
+  blkCnt = (srcALen + srcBLen - 1u) >> 2;
+
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr1 = pScratch1;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Read two samples from scratch1 buffer */
+    x1 = *__SIMD32(pScr1)++;
+
+    /* Read next two samples from scratch1 buffer */
+    x2 = *__SIMD32(pScr1)++;
+
+    tapCnt = (srcBLen) >> 2u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* Read four samples from smaller buffer */
+      y1 = _SIMD32_OFFSET(pScr2);
+
+      /* multiply and accumlate */
+      acc0 = __SMLAD(x1, y1, acc0);
+      acc2 = __SMLAD(x2, y1, acc2);
+
+      /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      /* multiply and accumlate */
+      acc1 = __SMLADX(x3, y1, acc1);
+
+      /* Read next two samples from scratch1 buffer */
+      x1 = *__SIMD32(pScr1)++;
+
+      /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y1, acc3);
+
+      /* Read four samples from smaller buffer */
+      y1 = _SIMD32_OFFSET(pScr2 + 2u);
+
+      acc0 = __SMLAD(x2, y1, acc0);
+
+      acc2 = __SMLAD(x1, y1, acc2);
+
+      acc1 = __SMLADX(x3, y1, acc1);
+
+      x2 = *__SIMD32(pScr1)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y1, acc3);
+
+      pScr2 += 4u;
+
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+
+
+    /* Update scratch pointer for remaining samples of smaller length sequence */
+    pScr1 -= 4u;
+
+
+    /* apply same above for remaining samples of smaller length sequence */
+    tapCnt = (srcBLen) & 3u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr1++ * *pScr2);
+      acc1 += (*pScr1++ * *pScr2);
+      acc2 += (*pScr1++ * *pScr2);
+      acc3 += (*pScr1++ * *pScr2++);
+
+      pScr1 -= 3u;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+    /* Store the result in the accumulator in the destination buffer. */
+    out0 = (q7_t) (__SSAT(acc0 >> 7u, 8));
+    out1 = (q7_t) (__SSAT(acc1 >> 7u, 8));
+    out2 = (q7_t) (__SSAT(acc2 >> 7u, 8));
+    out3 = (q7_t) (__SSAT(acc3 >> 7u, 8));
+
+    *__SIMD32(pOut)++ = __PACKq7(out0, out1, out2, out3);
+
+    /* Initialization of inputB pointer */
+    pScr2 = py;
+
+    pScratch1 += 4u;
+
+  }
+
+
+  blkCnt = (srcALen + srcBLen - 1u) & 0x3;
+
+  /* Calculate convolution for remaining samples of Bigger length sequence */
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr1 = pScratch1;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+
+    tapCnt = (srcBLen) >> 1u;
+
+    while(tapCnt > 0u)
+    {
+      acc0 += (*pScr1++ * *pScr2++);
+      acc0 += (*pScr1++ * *pScr2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    tapCnt = (srcBLen) & 1u;
+
+    /* apply same above for remaining samples of smaller length sequence */
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr1++ * *pScr2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q7_t) (__SSAT(acc0 >> 7u, 8));
+
+    /* Initialization of inputB pointer */
+    pScr2 = py;
+
+    pScratch1 += 1u;
+
+  }
+
+}
+
+
+/**    
+ * @} end of Conv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,669 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_partial_f32.c    
+*    
+* Description:	Partial convolution of floating-point sequences.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup PartialConv Partial Convolution    
+ *    
+ * Partial Convolution is equivalent to Convolution except that a subset of the output samples is generated.    
+ * Each function has two additional arguments.    
+ * <code>firstIndex</code> specifies the starting index of the subset of output samples.    
+ * <code>numPoints</code> is the number of output samples to compute.    
+ * The function computes the output in the range    
+ * <code>[firstIndex, ..., firstIndex+numPoints-1]</code>.    
+ * The output array <code>pDst</code> contains <code>numPoints</code> values.    
+ *    
+ * The allowable range of output indices is [0 srcALen+srcBLen-2].    
+ * If the requested subset does not fall in this range then the functions return ARM_MATH_ARGUMENT_ERROR.    
+ * Otherwise the functions return ARM_MATH_SUCCESS.    
+ * \note Refer arm_conv_f32() for details on fixed point behavior.   
+ *
+ * 
+ * <b>Fast Versions</b>
+ *
+ * \par 
+ * Fast versions are supported for Q31 and Q15 of partial convolution.  Cycles for Fast versions are less compared to Q31 and Q15 of partial conv and the design requires
+ * the input signals should be scaled down to avoid intermediate overflows.   
+ *
+ *
+ * <b>Opt Versions</b>
+ *
+ * \par 
+ * Opt versions are supported for Q15 and Q7.  Design uses internal scratch buffer for getting good optimisation.
+ * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions of partial convolution
+ */
+
+/**    
+ * @addtogroup PartialConv    
+ * @{    
+ */
+
+/**    
+ * @brief Partial convolution of floating-point sequences.    
+ * @param[in]       *pSrcA points to the first input sequence.    
+ * @param[in]       srcALen length of the first input sequence.    
+ * @param[in]       *pSrcB points to the second input sequence.    
+ * @param[in]       srcBLen length of the second input sequence.    
+ * @param[out]      *pDst points to the location where the output result is written.    
+ * @param[in]       firstIndex is the first output sample to start with.    
+ * @param[in]       numPoints is the number of output points to be computed.    
+ * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].    
+ */
+
+arm_status arm_conv_partial_f32(
+  float32_t * pSrcA,
+  uint32_t srcALen,
+  float32_t * pSrcB,
+  uint32_t srcBLen,
+  float32_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t *pIn1 = pSrcA;                       /* inputA pointer */
+  float32_t *pIn2 = pSrcB;                       /* inputB pointer */
+  float32_t *pOut = pDst;                        /* output pointer */
+  float32_t *px;                                 /* Intermediate inputA pointer */
+  float32_t *py;                                 /* Intermediate inputB pointer */
+  float32_t *pSrc1, *pSrc2;                      /* Intermediate pointers */
+  float32_t sum, acc0, acc1, acc2, acc3;         /* Accumulator */
+  float32_t x0, x1, x2, x3, c0;                  /* Temporary variables to hold state and coefficient values */
+  uint32_t j, k, count = 0u, blkCnt, check;
+  int32_t blockSize1, blockSize2, blockSize3;    /* loop counters */
+  arm_status status;                             /* status of Partial convolution */
+
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Conditions to check which loopCounter holds    
+     * the first and last indices of the output samples to be calculated. */
+    check = firstIndex + numPoints;
+    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
+    blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
+    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
+                                     (int32_t) numPoints) : 0;
+    blockSize2 = ((int32_t) check - blockSize3) -
+      (blockSize1 + (int32_t) firstIndex);
+    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;
+
+    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+    /* The function is internally    
+     * divided into three stages according to the number of multiplications that has to be    
+     * taken place between inputA samples and inputB samples. In the first stage of the    
+     * algorithm, the multiplications increase by one for every iteration.    
+     * In the second stage of the algorithm, srcBLen number of multiplications are done.    
+     * In the third stage of the algorithm, the multiplications decrease by one    
+     * for every iteration. */
+
+    /* Set the output pointer to point to the firstIndex    
+     * of the output sample to be calculated. */
+    pOut = pDst + firstIndex;
+
+    /* --------------------------    
+     * Initializations of stage1    
+     * -------------------------*/
+
+    /* sum = x[0] * y[0]    
+     * sum = x[0] * y[1] + x[1] * y[0]    
+     * ....    
+     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]    
+     */
+
+    /* In this stage the MAC operations are increased by 1 for every iteration.    
+       The count variable holds the number of MAC operations performed.    
+       Since the partial convolution starts from from firstIndex    
+       Number of Macs to be performed is firstIndex + 1 */
+    count = 1u + firstIndex;
+
+    /* Working pointer of inputA */
+    px = pIn1;
+
+    /* Working pointer of inputB */
+    pSrc1 = pIn2 + firstIndex;
+    py = pSrc1;
+
+    /* ------------------------    
+     * Stage1 process    
+     * ----------------------*/
+
+    /* The first stage starts here */
+    while(blockSize1 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0.0f;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* x[0] * y[srcBLen - 1] */
+        sum += *px++ * *py--;
+
+        /* x[1] * y[srcBLen - 2] */
+        sum += *px++ * *py--;
+
+        /* x[2] * y[srcBLen - 3] */
+        sum += *px++ * *py--;
+
+        /* x[3] * y[srcBLen - 4] */
+        sum += *px++ * *py--;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += *px++ * *py--;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = sum;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc1;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* --------------------------    
+     * Initializations of stage2    
+     * ------------------------*/
+
+    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]    
+     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]    
+     * ....    
+     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]    
+     */
+
+    /* Working pointer of inputA */
+    if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+    {
+      px = pIn1 + firstIndex - srcBLen + 1;
+    }
+    else
+    {
+      px = pIn1;
+    }
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* count is index by which the pointer pIn1 to be incremented */
+    count = 0u;
+
+    /* -------------------    
+     * Stage2 process    
+     * ------------------*/
+
+    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+     * So, to loop unroll over blockSize2,    
+     * srcBLen should be greater than or equal to 4 */
+    if(srcBLen >= 4u)
+    {
+      /* Loop unroll over blockSize2, by 4 */
+      blkCnt = ((uint32_t) blockSize2 >> 2u);
+
+      while(blkCnt > 0u)
+      {
+        /* Set all accumulators to zero */
+        acc0 = 0.0f;
+        acc1 = 0.0f;
+        acc2 = 0.0f;
+        acc3 = 0.0f;
+
+        /* read x[0], x[1], x[2] samples */
+        x0 = *(px++);
+        x1 = *(px++);
+        x2 = *(px++);
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        do
+        {
+          /* Read y[srcBLen - 1] sample */
+          c0 = *(py--);
+
+          /* Read x[3] sample */
+          x3 = *(px++);
+
+          /* Perform the multiply-accumulate */
+          /* acc0 +=  x[0] * y[srcBLen - 1] */
+          acc0 += x0 * c0;
+
+          /* acc1 +=  x[1] * y[srcBLen - 1] */
+          acc1 += x1 * c0;
+
+          /* acc2 +=  x[2] * y[srcBLen - 1] */
+          acc2 += x2 * c0;
+
+          /* acc3 +=  x[3] * y[srcBLen - 1] */
+          acc3 += x3 * c0;
+
+          /* Read y[srcBLen - 2] sample */
+          c0 = *(py--);
+
+          /* Read x[4] sample */
+          x0 = *(px++);
+
+          /* Perform the multiply-accumulate */
+          /* acc0 +=  x[1] * y[srcBLen - 2] */
+          acc0 += x1 * c0;
+          /* acc1 +=  x[2] * y[srcBLen - 2] */
+          acc1 += x2 * c0;
+          /* acc2 +=  x[3] * y[srcBLen - 2] */
+          acc2 += x3 * c0;
+          /* acc3 +=  x[4] * y[srcBLen - 2] */
+          acc3 += x0 * c0;
+
+          /* Read y[srcBLen - 3] sample */
+          c0 = *(py--);
+
+          /* Read x[5] sample */
+          x1 = *(px++);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[2] * y[srcBLen - 3] */
+          acc0 += x2 * c0;
+          /* acc1 +=  x[3] * y[srcBLen - 2] */
+          acc1 += x3 * c0;
+          /* acc2 +=  x[4] * y[srcBLen - 2] */
+          acc2 += x0 * c0;
+          /* acc3 +=  x[5] * y[srcBLen - 2] */
+          acc3 += x1 * c0;
+
+          /* Read y[srcBLen - 4] sample */
+          c0 = *(py--);
+
+          /* Read x[6] sample */
+          x2 = *(px++);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[3] * y[srcBLen - 4] */
+          acc0 += x3 * c0;
+          /* acc1 +=  x[4] * y[srcBLen - 4] */
+          acc1 += x0 * c0;
+          /* acc2 +=  x[5] * y[srcBLen - 4] */
+          acc2 += x1 * c0;
+          /* acc3 +=  x[6] * y[srcBLen - 4] */
+          acc3 += x2 * c0;
+
+
+        } while(--k);
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Read y[srcBLen - 5] sample */
+          c0 = *(py--);
+
+          /* Read x[7] sample */
+          x3 = *(px++);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[4] * y[srcBLen - 5] */
+          acc0 += x0 * c0;
+          /* acc1 +=  x[5] * y[srcBLen - 5] */
+          acc1 += x1 * c0;
+          /* acc2 +=  x[6] * y[srcBLen - 5] */
+          acc2 += x2 * c0;
+          /* acc3 +=  x[7] * y[srcBLen - 5] */
+          acc3 += x3 * c0;
+
+          /* Reuse the present samples for the next MAC */
+          x0 = x1;
+          x1 = x2;
+          x2 = x3;
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = acc0;
+        *pOut++ = acc1;
+        *pOut++ = acc2;
+        *pOut++ = acc3;
+
+        /* Increment the pointer pIn1 index, count by 1 */
+        count += 4u;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+
+      /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.    
+       ** No loop unrolling is used. */
+      blkCnt = (uint32_t) blockSize2 % 0x4u;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0.0f;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += *px++ * *py--;
+          sum += *px++ * *py--;
+          sum += *px++ * *py--;
+          sum += *px++ * *py--;
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum += *px++ * *py--;
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = sum;
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+    else
+    {
+      /* If the srcBLen is not a multiple of 4,    
+       * the blockSize2 loop cannot be unrolled by 4 */
+      blkCnt = (uint32_t) blockSize2;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0.0f;
+
+        /* srcBLen number of MACS should be performed */
+        k = srcBLen;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum += *px++ * *py--;
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = sum;
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+
+
+    /* --------------------------    
+     * Initializations of stage3    
+     * -------------------------*/
+
+    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]    
+     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]    
+     * ....    
+     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]    
+     * sum +=  x[srcALen-1] * y[srcBLen-1]    
+     */
+
+    /* In this stage the MAC operations are decreased by 1 for every iteration.    
+       The count variable holds the number of MAC operations performed */
+    count = srcBLen - 1u;
+
+    /* Working pointer of inputA */
+    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+    px = pSrc1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    while(blockSize3 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0.0f;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */
+        sum += *px++ * *py--;
+
+        /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */
+        sum += *px++ * *py--;
+
+        /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */
+        sum += *px++ * *py--;
+
+        /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */
+        sum += *px++ * *py--;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+        sum += *px++ * *py--;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = sum;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pSrc2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  float32_t *pIn1 = pSrcA;                       /* inputA pointer */
+  float32_t *pIn2 = pSrcB;                       /* inputB pointer */
+  float32_t sum;                                 /* Accumulator */
+  uint32_t i, j;                                 /* loop counters */
+  arm_status status;                             /* status of Partial convolution */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+    /* Loop to calculate convolution for output length number of values */
+    for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++)
+    {
+      /* Initialize sum with zero to carry on MAC operations */
+      sum = 0.0f;
+
+      /* Loop to perform MAC operations according to convolution equation */
+      for (j = 0u; j <= i; j++)
+      {
+        /* Check the array limitations for inputs */
+        if((((i - j) < srcBLen) && (j < srcALen)))
+        {
+          /* z[i] += x[i-j] * y[j] */
+          sum += pIn1[j] * pIn2[i - j];
+        }
+      }
+      /* Store the output in the destination buffer */
+      pDst[i] = sum;
+    }
+    /* set status as ARM_SUCCESS as there are no argument errors */
+    status = ARM_MATH_SUCCESS;
+  }
+  return (status);
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of PartialConv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,768 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_partial_fast_opt_q15.c    
+*    
+* Description:	Fast Q15 Partial convolution.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup PartialConv    
+ * @{    
+ */
+
+/**    
+ * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.    
+ * @param[in]       *pSrcA points to the first input sequence.    
+ * @param[in]       srcALen length of the first input sequence.    
+ * @param[in]       *pSrcB points to the second input sequence.    
+ * @param[in]       srcBLen length of the second input sequence.    
+ * @param[out]      *pDst points to the location where the output result is written.    
+ * @param[in]       firstIndex is the first output sample to start with.    
+ * @param[in]       numPoints is the number of output points to be computed.    
+ * @param[in]       *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.   
+ * @param[in]       *pScratch2 points to scratch buffer of size min(srcALen, srcBLen).   
+ * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].    
+ *    
+ * See <code>arm_conv_partial_q15()</code> for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit    
+ *     
+ */
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+arm_status arm_conv_partial_fast_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+
+  q15_t *pOut = pDst;                            /* output pointer */
+  q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */
+  q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulator */
+  q31_t x1, x2, x3;                              /* Temporary variables to hold state and coefficient values */
+  q31_t y1, y2;                                  /* State variables */
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  uint32_t j, k, blkCnt;                         /* loop counter */
+  arm_status status;
+
+  uint32_t tapCnt;                               /* loop count */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Temporary pointer for scratch2 */
+    py = pScratch2;
+
+    /* pointer to take end of scratch2 buffer */
+    pScr2 = pScratch2 + srcBLen - 1;
+
+    /* points to smaller length sequence */
+    px = pIn2;
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcBLen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+
+    /* Copy smaller length input sequence in reverse order into second scratch buffer */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcBLen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr2-- = *px++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Initialze temporary scratch pointer */
+    pScr1 = pScratch1;
+
+    /* Assuming scratch1 buffer is aligned by 32-bit */
+    /* Fill (srcBLen - 1u) zeros in scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update temporary scratch pointer */
+    pScr1 += (srcBLen - 1u);
+
+    /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */
+
+    /* Copy (srcALen) samples in scratch buffer */
+    arm_copy_q15(pIn1, pScr1, srcALen);
+
+    /* Update pointers */
+    pScr1 += srcALen;
+
+    /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update pointer */
+    pScr1 += (srcBLen - 1u);
+
+    /* Initialization of pIn2 pointer */
+    pIn2 = py;
+
+    pScratch1 += firstIndex;
+
+    pOut = pDst + firstIndex;
+
+    /* First part of the processing with loop unrolling process 4 data points at a time.       
+     ** a second loop below process for the remaining 1 to 3 samples. */
+
+    /* Actual convolution process starts here */
+    blkCnt = (numPoints) >> 2;
+
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* Read two samples from scratch1 buffer */
+      x1 = *__SIMD32(pScr1)++;
+
+      /* Read next two samples from scratch1 buffer */
+      x2 = *__SIMD32(pScr1)++;
+
+      tapCnt = (srcBLen) >> 2u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read four samples from smaller buffer */
+        y1 = _SIMD32_OFFSET(pIn2);
+        y2 = _SIMD32_OFFSET(pIn2 + 2u);
+
+        /* multiply and accumlate */
+        acc0 = __SMLAD(x1, y1, acc0);
+        acc2 = __SMLAD(x2, y1, acc2);
+
+        /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x2, x1, 0);
+#else
+        x3 = __PKHBT(x1, x2, 0);
+#endif
+
+        /* multiply and accumlate */
+        acc1 = __SMLADX(x3, y1, acc1);
+
+        /* Read next two samples from scratch1 buffer */
+        x1 = _SIMD32_OFFSET(pScr1);
+
+        /* multiply and accumlate */
+        acc0 = __SMLAD(x2, y2, acc0);
+
+        acc2 = __SMLAD(x1, y2, acc2);
+
+        /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x1, x2, 0);
+#else
+        x3 = __PKHBT(x2, x1, 0);
+#endif
+
+        acc3 = __SMLADX(x3, y1, acc3);
+        acc1 = __SMLADX(x3, y2, acc1);
+
+        x2 = _SIMD32_OFFSET(pScr1 + 2u);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x2, x1, 0);
+#else
+        x3 = __PKHBT(x1, x2, 0);
+#endif
+
+        acc3 = __SMLADX(x3, y2, acc3);
+
+        /* update scratch pointers */
+        pIn2 += 4u;
+        pScr1 += 4u;
+
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* Update scratch pointer for remaining samples of smaller length sequence */
+      pScr1 -= 4u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      tapCnt = (srcBLen) & 3u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pIn2);
+        acc1 += (*pScr1++ * *pIn2);
+        acc2 += (*pScr1++ * *pIn2);
+        acc3 += (*pScr1++ * *pIn2++);
+
+        pScr1 -= 3u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+
+      /* Store the results in the accumulators in the destination buffer. */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+#else
+
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Initialization of inputB pointer */
+      pIn2 = py;
+
+      pScratch1 += 4u;
+
+    }
+
+
+    blkCnt = numPoints & 0x3;
+
+    /* Calculate convolution for remaining samples of Bigger length sequence */
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+
+      tapCnt = (srcBLen) >> 1u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read next two samples from scratch1 buffer */
+        x1 = *__SIMD32(pScr1)++;
+
+        /* Read two samples from smaller buffer */
+        y1 = *__SIMD32(pIn2)++;
+
+        acc0 = __SMLAD(x1, y1, acc0);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      tapCnt = (srcBLen) & 1u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pIn2++);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+      /* The result is in 2.30 format.  Convert to 1.15 with saturation.       
+       ** Then store the output in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+      /* Initialization of inputB pointer */
+      pIn2 = py;
+
+      pScratch1 += 1u;
+
+    }
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+  /* Return to application */
+  return (status);
+}
+
+#else
+
+arm_status arm_conv_partial_fast_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+
+  q15_t *pOut = pDst;                            /* output pointer */
+  q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */
+  q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulator */
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  uint32_t j, k, blkCnt;                         /* loop counter */
+  arm_status status;                             /* Status variable */
+  uint32_t tapCnt;                               /* loop count */
+  q15_t x10, x11, x20, x21;                      /* Temporary variables to hold srcA buffer */
+  q15_t y10, y11;                                /* Temporary variables to hold srcB buffer */
+
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Temporary pointer for scratch2 */
+    py = pScratch2;
+
+    /* pointer to take end of scratch2 buffer */
+    pScr2 = pScratch2 + srcBLen - 1;
+
+    /* points to smaller length sequence */
+    px = pIn2;
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcBLen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcBLen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr2-- = *px++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Initialze temporary scratch pointer */
+    pScr1 = pScratch1;
+
+    /* Fill (srcBLen - 1u) zeros in scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update temporary scratch pointer */
+    pScr1 += (srcBLen - 1u);
+
+    /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */
+
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcALen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr1++ = *pIn1++;
+      *pScr1++ = *pIn1++;
+      *pScr1++ = *pIn1++;
+      *pScr1++ = *pIn1++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcALen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr1++ = *pIn1++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = (srcBLen - 1u) >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = (srcBLen - 1u) % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr1++ = 0;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+
+    /* Initialization of pIn2 pointer */
+    pIn2 = py;
+
+    pScratch1 += firstIndex;
+
+    pOut = pDst + firstIndex;
+
+    /* Actual convolution process starts here */
+    blkCnt = (numPoints) >> 2;
+
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* Read two samples from scratch1 buffer */
+      x10 = *pScr1++;
+      x11 = *pScr1++;
+
+      /* Read next two samples from scratch1 buffer */
+      x20 = *pScr1++;
+      x21 = *pScr1++;
+
+      tapCnt = (srcBLen) >> 2u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read two samples from smaller buffer */
+        y10 = *pIn2;
+        y11 = *(pIn2 + 1u);
+
+        /* multiply and accumlate */
+        acc0 += (q31_t) x10 *y10;
+        acc0 += (q31_t) x11 *y11;
+        acc2 += (q31_t) x20 *y10;
+        acc2 += (q31_t) x21 *y11;
+
+        /* multiply and accumlate */
+        acc1 += (q31_t) x11 *y10;
+        acc1 += (q31_t) x20 *y11;
+
+        /* Read next two samples from scratch1 buffer */
+        x10 = *pScr1;
+        x11 = *(pScr1 + 1u);
+
+        /* multiply and accumlate */
+        acc3 += (q31_t) x21 *y10;
+        acc3 += (q31_t) x10 *y11;
+
+        /* Read next two samples from scratch2 buffer */
+        y10 = *(pIn2 + 2u);
+        y11 = *(pIn2 + 3u);
+
+        /* multiply and accumlate */
+        acc0 += (q31_t) x20 *y10;
+        acc0 += (q31_t) x21 *y11;
+        acc2 += (q31_t) x10 *y10;
+        acc2 += (q31_t) x11 *y11;
+        acc1 += (q31_t) x21 *y10;
+        acc1 += (q31_t) x10 *y11;
+
+        /* Read next two samples from scratch1 buffer */
+        x20 = *(pScr1 + 2);
+        x21 = *(pScr1 + 3);
+
+        /* multiply and accumlate */
+        acc3 += (q31_t) x11 *y10;
+        acc3 += (q31_t) x20 *y11;
+
+        /* update scratch pointers */
+        pIn2 += 4u;
+        pScr1 += 4u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* Update scratch pointer for remaining samples of smaller length sequence */
+      pScr1 -= 4u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      tapCnt = (srcBLen) & 3u;
+
+      while(tapCnt > 0u)
+      {
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pIn2);
+        acc1 += (*pScr1++ * *pIn2);
+        acc2 += (*pScr1++ * *pIn2);
+        acc3 += (*pScr1++ * *pIn2++);
+
+        pScr1 -= 3u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+
+      /* Store the results in the accumulators in the destination buffer. */
+      *pOut++ = __SSAT((acc0 >> 15), 16);
+      *pOut++ = __SSAT((acc1 >> 15), 16);
+      *pOut++ = __SSAT((acc2 >> 15), 16);
+      *pOut++ = __SSAT((acc3 >> 15), 16);
+
+      /* Initialization of inputB pointer */
+      pIn2 = py;
+
+      pScratch1 += 4u;
+
+    }
+
+
+    blkCnt = numPoints & 0x3;
+
+    /* Calculate convolution for remaining samples of Bigger length sequence */
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+
+      tapCnt = (srcBLen) >> 1u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read next two samples from scratch1 buffer */
+        x10 = *pScr1++;
+        x11 = *pScr1++;
+
+        /* Read two samples from smaller buffer */
+        y10 = *pIn2++;
+        y11 = *pIn2++;
+
+        /* multiply and accumlate */
+        acc0 += (q31_t) x10 *y10;
+        acc0 += (q31_t) x11 *y11;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      tapCnt = (srcBLen) & 1u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pIn2++);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+      /* Initialization of inputB pointer */
+      pIn2 = py;
+
+      pScratch1 += 1u;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+/**    
+ * @} end of PartialConv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1492 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_conv_partial_fast_q15.c   
+*   
+* Description:	Fast Q15 Partial convolution.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup PartialConv   
+ * @{   
+ */
+
+/**   
+ * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.   
+ * @param[in]       *pSrcA points to the first input sequence.   
+ * @param[in]       srcALen length of the first input sequence.   
+ * @param[in]       *pSrcB points to the second input sequence.   
+ * @param[in]       srcBLen length of the second input sequence.   
+ * @param[out]      *pDst points to the location where the output result is written.   
+ * @param[in]       firstIndex is the first output sample to start with.   
+ * @param[in]       numPoints is the number of output points to be computed.   
+ * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].   
+ *   
+ * See <code>arm_conv_partial_q15()</code> for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.   
+ */
+
+
+arm_status arm_conv_partial_fast_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints)
+{
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  q15_t *pIn1;                                   /* inputA pointer               */
+  q15_t *pIn2;                                   /* inputB pointer               */
+  q15_t *pOut = pDst;                            /* output pointer               */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulator                  */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers        */
+  q31_t x0, x1, x2, x3, c0;
+  uint32_t j, k, count, check, blkCnt;
+  int32_t blockSize1, blockSize2, blockSize3;    /* loop counters                 */
+  arm_status status;                             /* status of Partial convolution */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >=srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Conditions to check which loopCounter holds   
+     * the first and last indices of the output samples to be calculated. */
+    check = firstIndex + numPoints;
+    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
+    blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
+    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
+                                     (int32_t) numPoints) : 0;
+    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) +
+                                    (int32_t) firstIndex);
+    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;
+
+    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+    /* The function is internally   
+     * divided into three stages according to the number of multiplications that has to be   
+     * taken place between inputA samples and inputB samples. In the first stage of the   
+     * algorithm, the multiplications increase by one for every iteration.   
+     * In the second stage of the algorithm, srcBLen number of multiplications are done.   
+     * In the third stage of the algorithm, the multiplications decrease by one   
+     * for every iteration. */
+
+    /* Set the output pointer to point to the firstIndex   
+     * of the output sample to be calculated. */
+    pOut = pDst + firstIndex;
+
+    /* --------------------------   
+     * Initializations of stage1   
+     * -------------------------*/
+
+    /* sum = x[0] * y[0]   
+     * sum = x[0] * y[1] + x[1] * y[0]   
+     * ....   
+     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]   
+     */
+
+    /* In this stage the MAC operations are increased by 1 for every iteration.   
+       The count variable holds the number of MAC operations performed.   
+       Since the partial convolution starts from firstIndex   
+       Number of Macs to be performed is firstIndex + 1 */
+    count = 1u + firstIndex;
+
+    /* Working pointer of inputA */
+    px = pIn1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + firstIndex;
+    py = pSrc2;
+
+    /* ------------------------   
+     * Stage1 process   
+     * ----------------------*/
+
+    /* For loop unrolling by 4, this stage is divided into two. */
+    /* First part of this stage computes the MAC operations less than 4 */
+    /* Second part of this stage computes the MAC operations greater than or equal to 4 */
+
+    /* The first part of the stage starts here */
+    while((count < 4u) && (blockSize1 > 0))
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over number of MAC operations between   
+       * inputA samples and inputB samples */
+      k = count;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum = __SMLAD(*px++, *py--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* The second part of the stage starts here */
+    /* The internal loop, over count, is unrolled by 4 */
+    /* To, read the last two inputB samples using SIMD:   
+     * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */
+    py = py - 1;
+
+    while(blockSize1 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */
+        sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+        /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */
+        sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* For the next MAC operations, the pointer py is used without SIMD   
+       * So, py is incremented by 1 */
+      py = py + 1u;
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum = __SMLAD(*px++, *py--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2 - 1u;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* --------------------------   
+     * Initializations of stage2   
+     * ------------------------*/
+
+    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]   
+     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]   
+     * ....   
+     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]   
+     */
+
+    /* Working pointer of inputA */
+    if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+    {
+      px = pIn1 + firstIndex - srcBLen + 1;
+    }
+    else
+    {
+      px = pIn1;
+    }
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* count is the index by which the pointer pIn1 to be incremented */
+    count = 0u;
+
+
+    /* --------------------   
+     * Stage2 process   
+     * -------------------*/
+
+    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+     * So, to loop unroll over blockSize2,   
+     * srcBLen should be greater than or equal to 4 */
+    if(srcBLen >= 4u)
+    {
+      /* Loop unroll over blockSize2, by 4 */
+      blkCnt = ((uint32_t) blockSize2 >> 2u);
+
+      while(blkCnt > 0u)
+      {
+      py = py - 1u;
+
+        /* Set all accumulators to zero */
+        acc0 = 0;
+        acc1 = 0;
+        acc2 = 0;
+        acc3 = 0;
+
+
+        /* read x[0], x[1] samples */
+      x0 = *__SIMD32(px);
+        /* read x[1], x[2] samples */
+      x1 = _SIMD32_OFFSET(px+1);
+	  px+= 2u;
+
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        do
+        {
+          /* Read the last two inputB samples using SIMD:   
+           * y[srcBLen - 1] and y[srcBLen - 2] */
+        c0 = *__SIMD32(py)--;
+
+          /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */
+          acc0 = __SMLADX(x0, c0, acc0);
+
+          /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */
+          acc1 = __SMLADX(x1, c0, acc1);
+
+          /* Read x[2], x[3] */
+        x2 = *__SIMD32(px);
+
+          /* Read x[3], x[4] */
+        x3 = _SIMD32_OFFSET(px+1);
+
+          /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */
+          acc2 = __SMLADX(x2, c0, acc2);
+
+          /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */
+          acc3 = __SMLADX(x3, c0, acc3);
+
+          /* Read y[srcBLen - 3] and y[srcBLen - 4] */
+        c0 = *__SIMD32(py)--;
+
+          /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */
+          acc0 = __SMLADX(x2, c0, acc0);
+
+          /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */
+          acc1 = __SMLADX(x3, c0, acc1);
+
+          /* Read x[4], x[5] */
+        x0 = _SIMD32_OFFSET(px+2);
+
+          /* Read x[5], x[6] */
+        x1 = _SIMD32_OFFSET(px+3);
+		px += 4u;
+
+          /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */
+          acc2 = __SMLADX(x0, c0, acc2);
+
+          /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */
+          acc3 = __SMLADX(x1, c0, acc3);
+
+        } while(--k);
+
+        /* For the next MAC operations, SIMD is not used   
+         * So, the 16 bit pointer if inputB, py is updated */
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        if(k == 1u)
+        {
+          /* Read y[srcBLen - 5] */
+        c0 = *(py+1);
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+          /* Read x[7] */
+        x3 = *__SIMD32(px);
+		px++;
+
+          /* Perform the multiply-accumulates */
+          acc0 = __SMLAD(x0, c0, acc0);
+          acc1 = __SMLAD(x1, c0, acc1);
+          acc2 = __SMLADX(x1, c0, acc2);
+          acc3 = __SMLADX(x3, c0, acc3);
+        }
+
+        if(k == 2u)
+        {
+          /* Read y[srcBLen - 5], y[srcBLen - 6] */
+        c0 = _SIMD32_OFFSET(py);
+
+          /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px+1);
+		px += 2u;
+
+          /* Perform the multiply-accumulates */
+          acc0 = __SMLADX(x0, c0, acc0);
+          acc1 = __SMLADX(x1, c0, acc1);
+          acc2 = __SMLADX(x3, c0, acc2);
+          acc3 = __SMLADX(x2, c0, acc3);
+        }
+
+        if(k == 3u)
+        {
+          /* Read y[srcBLen - 5], y[srcBLen - 6] */
+        c0 = _SIMD32_OFFSET(py);
+
+          /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+          /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px+1);
+
+          /* Perform the multiply-accumulates */
+          acc0 = __SMLADX(x0, c0, acc0);
+          acc1 = __SMLADX(x1, c0, acc1);
+          acc2 = __SMLADX(x3, c0, acc2);
+          acc3 = __SMLADX(x2, c0, acc3);
+
+		c0 = *(py-1);
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+          /* Read x[10] */
+        x3 =  _SIMD32_OFFSET(px+2);
+		px += 3u;
+
+          /* Perform the multiply-accumulates */
+          acc0 = __SMLADX(x1, c0, acc0);
+          acc1 = __SMLAD(x2, c0, acc1);
+          acc2 = __SMLADX(x2, c0, acc2);
+          acc3 = __SMLADX(x3, c0, acc3);
+        }
+
+        /* Store the results in the accumulators in the destination buffer. */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *__SIMD32(pOut)++ = __PKHBT(acc0 >> 15, acc1 >> 15, 16);
+        *__SIMD32(pOut)++ = __PKHBT(acc2 >> 15, acc3 >> 15, 16);
+
+#else
+
+        *__SIMD32(pOut)++ = __PKHBT(acc1 >> 15, acc0 >> 15, 16);
+        *__SIMD32(pOut)++ = __PKHBT(acc3 >> 15, acc2 >> 15, 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+        /* Increment the pointer pIn1 index, count by 4 */
+        count += 4u;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+
+      /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+       ** No loop unrolling is used. */
+      blkCnt = (uint32_t) blockSize2 % 0x4u;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += ((q31_t) * px++ * *py--);
+          sum += ((q31_t) * px++ * *py--);
+          sum += ((q31_t) * px++ * *py--);
+          sum += ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q15_t) (sum >> 15);
+
+        /* Increment the pointer pIn1 index, count by 1 */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+    else
+    {
+      /* If the srcBLen is not a multiple of 4,   
+       * the blockSize2 loop cannot be unrolled by 4 */
+      blkCnt = (uint32_t) blockSize2;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* srcBLen number of MACS should be performed */
+        k = srcBLen;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum += ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q15_t) (sum >> 15);
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+
+
+    /* --------------------------   
+     * Initializations of stage3   
+     * -------------------------*/
+
+    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]   
+     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]   
+     * ....   
+     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]   
+     * sum +=  x[srcALen-1] * y[srcBLen-1]   
+     */
+
+    /* In this stage the MAC operations are decreased by 1 for every iteration.   
+       The count variable holds the number of MAC operations performed */
+    count = srcBLen - 1u;
+
+    /* Working pointer of inputA */
+    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+    px = pSrc1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    pIn2 = pSrc2 - 1u;
+    py = pIn2;
+
+    /* -------------------   
+     * Stage3 process   
+     * ------------------*/
+
+    /* For loop unrolling by 4, this stage is divided into two. */
+    /* First part of this stage computes the MAC operations greater than 4 */
+    /* Second part of this stage computes the MAC operations less than or equal to 4 */
+
+    /* The first part of the stage starts here */
+    j = count >> 2u;
+
+    while((j > 0u) && (blockSize3 > 0))
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied   
+         * with y[srcBLen - 1], y[srcBLen - 2] respectively */
+        sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+        /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied   
+         * with y[srcBLen - 3], y[srcBLen - 4] respectively */
+        sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* For the next MAC operations, the pointer py is used without SIMD   
+       * So, py is incremented by 1 */
+      py = py + 1u;
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */
+        sum = __SMLAD(*px++, *py--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pIn2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+
+      j--;
+    }
+
+    /* The second part of the stage starts here */
+    /* SIMD is not used for the next MAC operations,   
+     * so pointer py is updated to read only one sample at a time */
+    py = py + 1u;
+
+    while(blockSize3 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+        sum = __SMLAD(*px++, *py--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pSrc2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+
+#else
+
+  q15_t *pIn1;                                   /* inputA pointer               */
+  q15_t *pIn2;                                   /* inputB pointer               */
+  q15_t *pOut = pDst;                            /* output pointer               */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulator                  */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers        */
+  q31_t x0, x1, x2, x3, c0;
+  uint32_t j, k, count, check, blkCnt;
+  int32_t blockSize1, blockSize2, blockSize3;    /* loop counters                 */
+  arm_status status;                             /* status of Partial convolution */
+  q15_t a, b;
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >=srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Conditions to check which loopCounter holds   
+     * the first and last indices of the output samples to be calculated. */
+    check = firstIndex + numPoints;
+    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
+    blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
+    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
+                                     (int32_t) numPoints) : 0;
+    blockSize2 = ((int32_t) check - blockSize3) -
+      (blockSize1 + (int32_t) firstIndex);
+    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;
+
+    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+    /* The function is internally   
+     * divided into three stages according to the number of multiplications that has to be   
+     * taken place between inputA samples and inputB samples. In the first stage of the   
+     * algorithm, the multiplications increase by one for every iteration.   
+     * In the second stage of the algorithm, srcBLen number of multiplications are done.   
+     * In the third stage of the algorithm, the multiplications decrease by one   
+     * for every iteration. */
+
+    /* Set the output pointer to point to the firstIndex   
+     * of the output sample to be calculated. */
+    pOut = pDst + firstIndex;
+
+    /* --------------------------   
+     * Initializations of stage1   
+     * -------------------------*/
+
+    /* sum = x[0] * y[0]   
+     * sum = x[0] * y[1] + x[1] * y[0]   
+     * ....   
+     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]   
+     */
+
+    /* In this stage the MAC operations are increased by 1 for every iteration.   
+       The count variable holds the number of MAC operations performed.   
+       Since the partial convolution starts from firstIndex   
+       Number of Macs to be performed is firstIndex + 1 */
+    count = 1u + firstIndex;
+
+    /* Working pointer of inputA */
+    px = pIn1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + firstIndex;
+    py = pSrc2;
+
+    /* ------------------------   
+     * Stage1 process   
+     * ----------------------*/
+
+    /* For loop unrolling by 4, this stage is divided into two. */
+    /* First part of this stage computes the MAC operations less than 4 */
+    /* Second part of this stage computes the MAC operations greater than or equal to 4 */
+
+    /* The first part of the stage starts here */
+  while((count < 4u) && (blockSize1 > 0))
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over number of MAC operations between   
+       * inputA samples and inputB samples */
+      k = count;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+      sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* The second part of the stage starts here */
+    /* The internal loop, over count, is unrolled by 4 */
+    /* To, read the last two inputB samples using SIMD:   
+     * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */
+    py = py - 1;
+
+  while(blockSize1 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+	py++;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+      sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2 - 1u;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* --------------------------   
+     * Initializations of stage2   
+     * ------------------------*/
+
+    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]   
+     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]   
+     * ....   
+     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]   
+     */
+
+    /* Working pointer of inputA */
+    if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+    {
+      px = pIn1 + firstIndex - srcBLen + 1;
+    }
+    else
+    {
+      px = pIn1;
+    }
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* count is the index by which the pointer pIn1 to be incremented */
+    count = 0u;
+
+
+    /* --------------------   
+     * Stage2 process   
+     * -------------------*/
+
+    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+     * So, to loop unroll over blockSize2,   
+     * srcBLen should be greater than or equal to 4 */
+    if(srcBLen >= 4u)
+    {
+      /* Loop unroll over blockSize2, by 4 */
+      blkCnt = ((uint32_t) blockSize2 >> 2u);
+
+      while(blkCnt > 0u)
+      {
+      py = py - 1u;
+
+        /* Set all accumulators to zero */
+        acc0 = 0;
+        acc1 = 0;
+        acc2 = 0;
+        acc3 = 0;
+
+      /* read x[0], x[1] samples */
+	  a = *px++;
+	  b = *px++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x0 = __PKHBT(a, b, 16);
+	  a = *px;
+	  x1 = __PKHBT(b, a, 16);
+
+#else
+
+	  x0 = __PKHBT(b, a, 16);
+	  a = *px;
+	  x1 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read the last two inputB samples using SIMD:   
+         * y[srcBLen - 1] and y[srcBLen - 2] */
+		a = *py;
+		b = *(py+1);
+		py -= 2;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		c0 = __PKHBT(a, b, 16);
+
+#else
+
+ 		c0 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */
+        acc0 = __SMLADX(x0, c0, acc0);
+
+        /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */
+        acc1 = __SMLADX(x1, c0, acc1);
+
+	  a = *px;
+	  b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x2 = __PKHBT(a, b, 16);
+	  a = *(px + 2);
+	  x3 = __PKHBT(b, a, 16);
+
+#else
+
+	  x2 = __PKHBT(b, a, 16);
+	  a = *(px + 2);
+	  x3 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+
+        /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */
+        acc2 = __SMLADX(x2, c0, acc2);
+
+        /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */
+        acc3 = __SMLADX(x3, c0, acc3);
+
+        /* Read y[srcBLen - 3] and y[srcBLen - 4] */
+		a = *py;
+		b = *(py+1);
+		py -= 2;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		c0 = __PKHBT(a, b, 16);
+
+#else
+
+ 		c0 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */
+        acc0 = __SMLADX(x2, c0, acc0);
+
+        /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */
+        acc1 = __SMLADX(x3, c0, acc1);
+
+        /* Read x[4], x[5], x[6] */
+	  a = *(px + 2);
+	  b = *(px + 3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x0 = __PKHBT(a, b, 16);
+	  a = *(px + 4);
+	  x1 = __PKHBT(b, a, 16);
+
+#else
+
+	  x0 = __PKHBT(b, a, 16);
+	  a = *(px + 4);
+	  x1 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+
+		px += 4u;
+
+        /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */
+        acc2 = __SMLADX(x0, c0, acc2);
+
+        /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */
+        acc3 = __SMLADX(x1, c0, acc3);
+
+      } while(--k);
+
+      /* For the next MAC operations, SIMD is not used   
+       * So, the 16 bit pointer if inputB, py is updated */
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      if(k == 1u)
+      {
+        /* Read y[srcBLen - 5] */
+        c0 = *(py+1);
+
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[7] */
+		a = *px;
+		b = *(px+1);
+		px++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		x3 = __PKHBT(a, b, 16);
+
+#else
+
+ 		x3 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLADX(x1, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      if(k == 2u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+		a = *py;
+		b = *(py+1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		c0 = __PKHBT(a, b, 16);
+
+#else
+
+ 		c0 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* Read x[7], x[8], x[9] */
+	  a = *px;
+	  b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x3 = __PKHBT(a, b, 16);
+	  a = *(px + 2);
+	  x2 = __PKHBT(b, a, 16);
+
+#else
+
+	  x3 = __PKHBT(b, a, 16);
+	  a = *(px + 2);
+	  x2 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+		px += 2u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x0, c0, acc0);
+        acc1 = __SMLADX(x1, c0, acc1);
+        acc2 = __SMLADX(x3, c0, acc2);
+        acc3 = __SMLADX(x2, c0, acc3);
+      }
+
+      if(k == 3u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+		a = *py;
+		b = *(py+1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		c0 = __PKHBT(a, b, 16);
+
+#else
+
+ 		c0 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* Read x[7], x[8], x[9] */
+	  a = *px;
+	  b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+	  x3 = __PKHBT(a, b, 16);
+	  a = *(px + 2);
+	  x2 = __PKHBT(b, a, 16);
+
+#else
+
+	  x3 = __PKHBT(b, a, 16);
+	  a = *(px + 2);
+	  x2 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	   */
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x0, c0, acc0);
+        acc1 = __SMLADX(x1, c0, acc1);
+        acc2 = __SMLADX(x3, c0, acc2);
+        acc3 = __SMLADX(x2, c0, acc3);
+
+        /* Read y[srcBLen - 7] */
+		c0 = *(py-1);
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[10] */
+		a = *(px+2);
+		b = *(px+3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+		x3 = __PKHBT(a, b, 16);
+
+#else
+
+ 		x3 = __PKHBT(b, a, 16);;
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+		px += 3u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x1, c0, acc0);
+        acc1 = __SMLAD(x2, c0, acc1);
+        acc2 = __SMLADX(x2, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      /* Store the results in the accumulators in the destination buffer. */
+	  *pOut++ = (q15_t)(acc0 >> 15);
+	  *pOut++ = (q15_t)(acc1 >> 15);
+	  *pOut++ = (q15_t)(acc2 >> 15);
+	  *pOut++ = (q15_t)(acc3 >> 15);
+
+        /* Increment the pointer pIn1 index, count by 4 */
+        count += 4u;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+
+      /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+       ** No loop unrolling is used. */
+      blkCnt = (uint32_t) blockSize2 % 0x4u;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += ((q31_t) * px++ * *py--);
+          sum += ((q31_t) * px++ * *py--);
+          sum += ((q31_t) * px++ * *py--);
+          sum += ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q15_t) (sum >> 15);
+
+        /* Increment the pointer pIn1 index, count by 1 */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+    else
+    {
+      /* If the srcBLen is not a multiple of 4,   
+       * the blockSize2 loop cannot be unrolled by 4 */
+      blkCnt = (uint32_t) blockSize2;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* srcBLen number of MACS should be performed */
+        k = srcBLen;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum += ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q15_t) (sum >> 15);
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+
+
+    /* --------------------------   
+     * Initializations of stage3   
+     * -------------------------*/
+
+    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]   
+     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]   
+     * ....   
+     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]   
+     * sum +=  x[srcALen-1] * y[srcBLen-1]   
+     */
+
+    /* In this stage the MAC operations are decreased by 1 for every iteration.   
+       The count variable holds the number of MAC operations performed */
+    count = srcBLen - 1u;
+
+    /* Working pointer of inputA */
+    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+    px = pSrc1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    pIn2 = pSrc2 - 1u;
+    py = pIn2;
+
+    /* -------------------   
+     * Stage3 process   
+     * ------------------*/
+
+    /* For loop unrolling by 4, this stage is divided into two. */
+    /* First part of this stage computes the MAC operations greater than 4 */
+    /* Second part of this stage computes the MAC operations less than or equal to 4 */
+
+    /* The first part of the stage starts here */
+    j = count >> 2u;
+
+    while((j > 0u) && (blockSize3 > 0))
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+	py++;
+
+    while(k > 0u)
+    {	
+      /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+        sum += ((q31_t) * px++ * *py--);
+      /* Decrement the loop counter */
+      k--;
+    }
+
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+      /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pIn2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+
+      j--;
+    }
+
+    /* The second part of the stage starts here */
+    /* SIMD is not used for the next MAC operations,   
+     * so pointer py is updated to read only one sample at a time */
+    py = py + 1u;
+
+  while(blockSize3 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (sum >> 15);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pSrc2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+
+#endif /*     #ifndef UNALIGNED_SUPPORT_DISABLE      */
+}
+
+/**   
+ * @} end of PartialConv group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,611 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_partial_fast_q31.c    
+*    
+* Description:	Fast Q31 Partial convolution.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup PartialConv    
+ * @{    
+ */
+
+/**    
+ * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.    
+ * @param[in]       *pSrcA points to the first input sequence.    
+ * @param[in]       srcALen length of the first input sequence.    
+ * @param[in]       *pSrcB points to the second input sequence.    
+ * @param[in]       srcBLen length of the second input sequence.    
+ * @param[out]      *pDst points to the location where the output result is written.    
+ * @param[in]       firstIndex is the first output sample to start with.    
+ * @param[in]       numPoints is the number of output points to be computed.    
+ * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].    
+ *    
+ * \par    
+ * See <code>arm_conv_partial_q31()</code> for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision.    
+ */
+
+arm_status arm_conv_partial_fast_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints)
+{
+  q31_t *pIn1;                                   /* inputA pointer               */
+  q31_t *pIn2;                                   /* inputB pointer               */
+  q31_t *pOut = pDst;                            /* output pointer               */
+  q31_t *px;                                     /* Intermediate inputA pointer  */
+  q31_t *py;                                     /* Intermediate inputB pointer  */
+  q31_t *pSrc1, *pSrc2;                          /* Intermediate pointers        */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators                  */
+  q31_t x0, x1, x2, x3, c0;
+  uint32_t j, k, count, check, blkCnt;
+  int32_t blockSize1, blockSize2, blockSize3;    /* loop counters                 */
+  arm_status status;                             /* status of Partial convolution */
+
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Conditions to check which loopCounter holds    
+     * the first and last indices of the output samples to be calculated. */
+    check = firstIndex + numPoints;
+    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
+    blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
+    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
+                                     (int32_t) numPoints) : 0;
+    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) +
+                                    (int32_t) firstIndex);
+    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;
+
+    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+    /* The function is internally    
+     * divided into three stages according to the number of multiplications that has to be    
+     * taken place between inputA samples and inputB samples. In the first stage of the    
+     * algorithm, the multiplications increase by one for every iteration.    
+     * In the second stage of the algorithm, srcBLen number of multiplications are done.    
+     * In the third stage of the algorithm, the multiplications decrease by one    
+     * for every iteration. */
+
+    /* Set the output pointer to point to the firstIndex    
+     * of the output sample to be calculated. */
+    pOut = pDst + firstIndex;
+
+    /* --------------------------    
+     * Initializations of stage1    
+     * -------------------------*/
+
+    /* sum = x[0] * y[0]    
+     * sum = x[0] * y[1] + x[1] * y[0]    
+     * ....    
+     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]    
+     */
+
+    /* In this stage the MAC operations are increased by 1 for every iteration.    
+       The count variable holds the number of MAC operations performed.    
+       Since the partial convolution starts from firstIndex    
+       Number of Macs to be performed is firstIndex + 1 */
+    count = 1u + firstIndex;
+
+    /* Working pointer of inputA */
+    px = pIn1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + firstIndex;
+    py = pSrc2;
+
+    /* ------------------------    
+     * Stage1 process    
+     * ----------------------*/
+
+    /* The first loop starts here */
+    while(blockSize1 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* x[0] * y[srcBLen - 1] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* x[1] * y[srcBLen - 2] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* x[2] * y[srcBLen - 3] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* x[3] * y[srcBLen - 4] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = sum << 1;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* --------------------------    
+     * Initializations of stage2    
+     * ------------------------*/
+
+    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]    
+     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]    
+     * ....    
+     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]    
+     */
+
+    /* Working pointer of inputA */
+    if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+    {
+      px = pIn1 + firstIndex - srcBLen + 1;
+    }
+    else
+    {
+      px = pIn1;
+    }
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* count is index by which the pointer pIn1 to be incremented */
+    count = 0u;
+
+    /* -------------------    
+     * Stage2 process    
+     * ------------------*/
+
+    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+     * So, to loop unroll over blockSize2,    
+     * srcBLen should be greater than or equal to 4 */
+    if(srcBLen >= 4u)
+    {
+      /* Loop unroll over blockSize2 */
+      blkCnt = ((uint32_t) blockSize2 >> 2u);
+
+      while(blkCnt > 0u)
+      {
+        /* Set all accumulators to zero */
+        acc0 = 0;
+        acc1 = 0;
+        acc2 = 0;
+        acc3 = 0;
+
+        /* read x[0], x[1], x[2] samples */
+        x0 = *(px++);
+        x1 = *(px++);
+        x2 = *(px++);
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        do
+        {
+          /* Read y[srcBLen - 1] sample */
+          c0 = *(py--);
+
+          /* Read x[3] sample */
+          x3 = *(px++);
+
+          /* Perform the multiply-accumulate */
+          /* acc0 +=  x[0] * y[srcBLen - 1] */
+          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+          /* acc1 +=  x[1] * y[srcBLen - 1] */
+          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+          /* acc2 +=  x[2] * y[srcBLen - 1] */
+          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);
+
+          /* acc3 +=  x[3] * y[srcBLen - 1] */
+          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);
+
+          /* Read y[srcBLen - 2] sample */
+          c0 = *(py--);
+
+          /* Read x[4] sample */
+          x0 = *(px++);
+
+          /* Perform the multiply-accumulate */
+          /* acc0 +=  x[1] * y[srcBLen - 2] */
+          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32);
+          /* acc1 +=  x[2] * y[srcBLen - 2] */
+          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32);
+          /* acc2 +=  x[3] * y[srcBLen - 2] */
+          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32);
+          /* acc3 +=  x[4] * y[srcBLen - 2] */
+          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+          /* Read y[srcBLen - 3] sample */
+          c0 = *(py--);
+
+          /* Read x[5] sample */
+          x1 = *(px++);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[2] * y[srcBLen - 3] */
+          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32);
+          /* acc1 +=  x[3] * y[srcBLen - 2] */
+          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32);
+          /* acc2 +=  x[4] * y[srcBLen - 2] */
+          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32);
+          /* acc3 +=  x[5] * y[srcBLen - 2] */
+          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+          /* Read y[srcBLen - 4] sample */
+          c0 = *(py--);
+
+          /* Read x[6] sample */
+          x2 = *(px++);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[3] * y[srcBLen - 4] */
+          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32);
+          /* acc1 +=  x[4] * y[srcBLen - 4] */
+          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32);
+          /* acc2 +=  x[5] * y[srcBLen - 4] */
+          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32);
+          /* acc3 +=  x[6] * y[srcBLen - 4] */
+          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32);
+
+
+        } while(--k);
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Read y[srcBLen - 5] sample */
+          c0 = *(py--);
+
+          /* Read x[7] sample */
+          x3 = *(px++);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[4] * y[srcBLen - 5] */
+          acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+          /* acc1 +=  x[5] * y[srcBLen - 5] */
+          acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+          /* acc2 +=  x[6] * y[srcBLen - 5] */
+          acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);
+          /* acc3 +=  x[7] * y[srcBLen - 5] */
+          acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);
+
+          /* Reuse the present samples for the next MAC */
+          x0 = x1;
+          x1 = x2;
+          x2 = x3;
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q31_t) (acc0 << 1);
+        *pOut++ = (q31_t) (acc1 << 1);
+        *pOut++ = (q31_t) (acc2 << 1);
+        *pOut++ = (q31_t) (acc3 << 1);
+
+        /* Increment the pointer pIn1 index, count by 4 */
+        count += 4u;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+
+      /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.    
+       ** No loop unrolling is used. */
+      blkCnt = (uint32_t) blockSize2 % 0x4u;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum = (q31_t) ((((q63_t) sum << 32) +
+                          ((q63_t) * px++ * (*py--))) >> 32);
+          sum = (q31_t) ((((q63_t) sum << 32) +
+                          ((q63_t) * px++ * (*py--))) >> 32);
+          sum = (q31_t) ((((q63_t) sum << 32) +
+                          ((q63_t) * px++ * (*py--))) >> 32);
+          sum = (q31_t) ((((q63_t) sum << 32) +
+                          ((q63_t) * px++ * (*py--))) >> 32);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum = (q31_t) ((((q63_t) sum << 32) +
+                          ((q63_t) * px++ * (*py--))) >> 32);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = sum << 1;
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+    else
+    {
+      /* If the srcBLen is not a multiple of 4,    
+       * the blockSize2 loop cannot be unrolled by 4 */
+      blkCnt = (uint32_t) blockSize2;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* srcBLen number of MACS should be performed */
+        k = srcBLen;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum = (q31_t) ((((q63_t) sum << 32) +
+                          ((q63_t) * px++ * (*py--))) >> 32);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = sum << 1;
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+
+
+    /* --------------------------    
+     * Initializations of stage3    
+     * -------------------------*/
+
+    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]    
+     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]    
+     * ....    
+     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]    
+     * sum +=  x[srcALen-1] * y[srcBLen-1]    
+     */
+
+    /* In this stage the MAC operations are decreased by 1 for every iteration.    
+       The count variable holds the number of MAC operations performed */
+    count = srcBLen - 1u;
+
+    /* Working pointer of inputA */
+    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+    px = pSrc1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* -------------------    
+     * Stage3 process    
+     * ------------------*/
+
+    while(blockSize3 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py--))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = sum << 1;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pSrc2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+
+}
+
+/**    
+ * @} end of PartialConv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,765 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_partial_opt_q15.c    
+*    
+* Description:	Partial convolution of Q15 sequences.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup PartialConv    
+ * @{    
+ */
+
+/**    
+ * @brief Partial convolution of Q15 sequences.    
+ * @param[in]       *pSrcA points to the first input sequence.    
+ * @param[in]       srcALen length of the first input sequence.    
+ * @param[in]       *pSrcB points to the second input sequence.    
+ * @param[in]       srcBLen length of the second input sequence.    
+ * @param[out]      *pDst points to the location where the output result is written.    
+ * @param[in]       firstIndex is the first output sample to start with.    
+ * @param[in]       numPoints is the number of output points to be computed.    
+ * @param[in]       *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.   
+ * @param[in]       *pScratch2 points to scratch buffer of size min(srcALen, srcBLen).   
+ * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, state buffers should be aligned by 32-bit    
+ *    
+ * Refer to <code>arm_conv_partial_fast_q15()</code> for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.   
+ *  
+ * 
+ */
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+arm_status arm_conv_partial_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+
+  q15_t *pOut = pDst;                            /* output pointer */
+  q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */
+  q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */
+  q63_t acc0, acc1, acc2, acc3;                  /* Accumulator */
+  q31_t x1, x2, x3;                              /* Temporary variables to hold state and coefficient values */
+  q31_t y1, y2;                                  /* State variables */
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  uint32_t j, k, blkCnt;                         /* loop counter */
+  arm_status status;                             /* Status variable */
+  uint32_t tapCnt;                               /* loop count */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Temporary pointer for scratch2 */
+    py = pScratch2;
+
+    /* pointer to take end of scratch2 buffer */
+    pScr2 = pScratch2 + srcBLen - 1;
+
+    /* points to smaller length sequence */
+    px = pIn2;
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcBLen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcBLen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr2-- = *px++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Initialze temporary scratch pointer */
+    pScr1 = pScratch1;
+
+    /* Fill (srcBLen - 1u) zeros in scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update temporary scratch pointer */
+    pScr1 += (srcBLen - 1u);
+
+    /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */
+
+    /* Copy (srcALen) samples in scratch buffer */
+    arm_copy_q15(pIn1, pScr1, srcALen);
+
+    /* Update pointers */
+    pScr1 += srcALen;
+
+    /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update pointer */
+    pScr1 += (srcBLen - 1u);
+
+    /* Initialization of pIn2 pointer */
+    pIn2 = py;
+
+    pScratch1 += firstIndex;
+
+    pOut = pDst + firstIndex;
+
+    /* Actual convolution process starts here */
+    blkCnt = (numPoints) >> 2;
+
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* Read two samples from scratch1 buffer */
+      x1 = *__SIMD32(pScr1)++;
+
+      /* Read next two samples from scratch1 buffer */
+      x2 = *__SIMD32(pScr1)++;
+
+      tapCnt = (srcBLen) >> 2u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read four samples from smaller buffer */
+        y1 = _SIMD32_OFFSET(pIn2);
+        y2 = _SIMD32_OFFSET(pIn2 + 2u);
+
+        /* multiply and accumlate */
+        acc0 = __SMLALD(x1, y1, acc0);
+        acc2 = __SMLALD(x2, y1, acc2);
+
+        /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x2, x1, 0);
+#else
+        x3 = __PKHBT(x1, x2, 0);
+#endif
+
+        /* multiply and accumlate */
+        acc1 = __SMLALDX(x3, y1, acc1);
+
+        /* Read next two samples from scratch1 buffer */
+        x1 = _SIMD32_OFFSET(pScr1);
+
+        /* multiply and accumlate */
+        acc0 = __SMLALD(x2, y2, acc0);
+        acc2 = __SMLALD(x1, y2, acc2);
+
+        /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x1, x2, 0);
+#else
+        x3 = __PKHBT(x2, x1, 0);
+#endif
+
+        acc3 = __SMLALDX(x3, y1, acc3);
+        acc1 = __SMLALDX(x3, y2, acc1);
+
+        x2 = _SIMD32_OFFSET(pScr1 + 2u);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x2, x1, 0);
+#else
+        x3 = __PKHBT(x1, x2, 0);
+#endif
+
+        acc3 = __SMLALDX(x3, y2, acc3);
+
+        /* update scratch pointers */
+        pIn2 += 4u;
+        pScr1 += 4u;
+
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* Update scratch pointer for remaining samples of smaller length sequence */
+      pScr1 -= 4u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      tapCnt = (srcBLen) & 3u;
+
+      while(tapCnt > 0u)
+      {
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pIn2);
+        acc1 += (*pScr1++ * *pIn2);
+        acc2 += (*pScr1++ * *pIn2);
+        acc3 += (*pScr1++ * *pIn2++);
+
+        pScr1 -= 3u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+
+      /* Store the results in the accumulators in the destination buffer. */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+#else
+
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Initialization of inputB pointer */
+      pIn2 = py;
+
+      pScratch1 += 4u;
+
+    }
+
+
+    blkCnt = numPoints & 0x3;
+
+    /* Calculate convolution for remaining samples of Bigger length sequence */
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+
+      tapCnt = (srcBLen) >> 1u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read next two samples from scratch1 buffer */
+        x1 = *__SIMD32(pScr1)++;
+
+        /* Read two samples from smaller buffer */
+        y1 = *__SIMD32(pIn2)++;
+
+        acc0 = __SMLALD(x1, y1, acc0);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      tapCnt = (srcBLen) & 1u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pIn2++);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+      /* Initialization of inputB pointer */
+      pIn2 = py;
+
+      pScratch1 += 1u;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+#else
+
+arm_status arm_conv_partial_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+
+  q15_t *pOut = pDst;                            /* output pointer */
+  q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch1 */
+  q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch1 */
+  q63_t acc0, acc1, acc2, acc3;                  /* Accumulator */
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  uint32_t j, k, blkCnt;                         /* loop counter */
+  arm_status status;                             /* Status variable */
+  uint32_t tapCnt;                               /* loop count */
+  q15_t x10, x11, x20, x21;                      /* Temporary variables to hold srcA buffer */
+  q15_t y10, y11;                                /* Temporary variables to hold srcB buffer */
+
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Temporary pointer for scratch2 */
+    py = pScratch2;
+
+    /* pointer to take end of scratch2 buffer */
+    pScr2 = pScratch2 + srcBLen - 1;
+
+    /* points to smaller length sequence */
+    px = pIn2;
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcBLen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+      *pScr2-- = *px++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcBLen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr2-- = *px++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Initialze temporary scratch pointer */
+    pScr1 = pScratch1;
+
+    /* Fill (srcBLen - 1u) zeros in scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update temporary scratch pointer */
+    pScr1 += (srcBLen - 1u);
+
+    /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */
+
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcALen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr1++ = *pIn1++;
+      *pScr1++ = *pIn1++;
+      *pScr1++ = *pIn1++;
+      *pScr1++ = *pIn1++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcALen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr1++ = *pIn1++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = (srcBLen - 1u) >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = (srcBLen - 1u) % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr1++ = 0;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+
+    /* Initialization of pIn2 pointer */
+    pIn2 = py;
+
+    pScratch1 += firstIndex;
+
+    pOut = pDst + firstIndex;
+
+    /* Actual convolution process starts here */
+    blkCnt = (numPoints) >> 2;
+
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* Read two samples from scratch1 buffer */
+      x10 = *pScr1++;
+      x11 = *pScr1++;
+
+      /* Read next two samples from scratch1 buffer */
+      x20 = *pScr1++;
+      x21 = *pScr1++;
+
+      tapCnt = (srcBLen) >> 2u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read two samples from smaller buffer */
+        y10 = *pIn2;
+        y11 = *(pIn2 + 1u);
+
+        /* multiply and accumlate */
+        acc0 += (q63_t) x10 *y10;
+        acc0 += (q63_t) x11 *y11;
+        acc2 += (q63_t) x20 *y10;
+        acc2 += (q63_t) x21 *y11;
+
+        /* multiply and accumlate */
+        acc1 += (q63_t) x11 *y10;
+        acc1 += (q63_t) x20 *y11;
+
+        /* Read next two samples from scratch1 buffer */
+        x10 = *pScr1;
+        x11 = *(pScr1 + 1u);
+
+        /* multiply and accumlate */
+        acc3 += (q63_t) x21 *y10;
+        acc3 += (q63_t) x10 *y11;
+
+        /* Read next two samples from scratch2 buffer */
+        y10 = *(pIn2 + 2u);
+        y11 = *(pIn2 + 3u);
+
+        /* multiply and accumlate */
+        acc0 += (q63_t) x20 *y10;
+        acc0 += (q63_t) x21 *y11;
+        acc2 += (q63_t) x10 *y10;
+        acc2 += (q63_t) x11 *y11;
+        acc1 += (q63_t) x21 *y10;
+        acc1 += (q63_t) x10 *y11;
+
+        /* Read next two samples from scratch1 buffer */
+        x20 = *(pScr1 + 2);
+        x21 = *(pScr1 + 3);
+
+        /* multiply and accumlate */
+        acc3 += (q63_t) x11 *y10;
+        acc3 += (q63_t) x20 *y11;
+
+        /* update scratch pointers */
+        pIn2 += 4u;
+        pScr1 += 4u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* Update scratch pointer for remaining samples of smaller length sequence */
+      pScr1 -= 4u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      tapCnt = (srcBLen) & 3u;
+
+      while(tapCnt > 0u)
+      {
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pIn2);
+        acc1 += (*pScr1++ * *pIn2);
+        acc2 += (*pScr1++ * *pIn2);
+        acc3 += (*pScr1++ * *pIn2++);
+
+        pScr1 -= 3u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+
+      /* Store the results in the accumulators in the destination buffer. */
+      *pOut++ = __SSAT((acc0 >> 15), 16);
+      *pOut++ = __SSAT((acc1 >> 15), 16);
+      *pOut++ = __SSAT((acc2 >> 15), 16);
+      *pOut++ = __SSAT((acc3 >> 15), 16);
+
+
+      /* Initialization of inputB pointer */
+      pIn2 = py;
+
+      pScratch1 += 4u;
+
+    }
+
+
+    blkCnt = numPoints & 0x3;
+
+    /* Calculate convolution for remaining samples of Bigger length sequence */
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+
+      tapCnt = (srcBLen) >> 1u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read next two samples from scratch1 buffer */
+        x10 = *pScr1++;
+        x11 = *pScr1++;
+
+        /* Read two samples from smaller buffer */
+        y10 = *pIn2++;
+        y11 = *pIn2++;
+
+        /* multiply and accumlate */
+        acc0 += (q63_t) x10 *y10;
+        acc0 += (q63_t) x11 *y11;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      tapCnt = (srcBLen) & 1u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pIn2++);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+
+      /* Initialization of inputB pointer */
+      pIn2 = py;
+
+      pScratch1 += 1u;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+
+/**    
+ * @} end of PartialConv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,803 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_partial_opt_q7.c    
+*    
+* Description:	Partial convolution of Q7 sequences.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup PartialConv    
+ * @{    
+ */
+
+/**    
+ * @brief Partial convolution of Q7 sequences.    
+ * @param[in]       *pSrcA points to the first input sequence.    
+ * @param[in]       srcALen length of the first input sequence.    
+ * @param[in]       *pSrcB points to the second input sequence.    
+ * @param[in]       srcBLen length of the second input sequence.    
+ * @param[out]      *pDst points to the location where the output result is written.    
+ * @param[in]       firstIndex is the first output sample to start with.    
+ * @param[in]       numPoints is the number of output points to be computed.    
+ * @param[in]      *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.    
+ * @param[in]      *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).    
+ * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit   
+ * 
+ *
+ * 
+ */
+
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+arm_status arm_conv_partial_opt_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+
+  q15_t *pScr2, *pScr1;                          /* Intermediate pointers for scratch pointers */
+  q15_t x4;                                      /* Temporary input variable */
+  q7_t *pIn1, *pIn2;                             /* inputA and inputB pointer */
+  uint32_t j, k, blkCnt, tapCnt;                 /* loop counter */
+  q7_t *px;                                      /* Temporary input1 pointer */
+  q15_t *py;                                     /* Temporary input2 pointer */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulator */
+  q31_t x1, x2, x3, y1;                          /* Temporary input variables */
+  arm_status status;
+  q7_t *pOut = pDst;                             /* output pointer */
+  q7_t out0, out1, out2, out3;                   /* temporary variables */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* pointer to take end of scratch2 buffer */
+    pScr2 = pScratch2;
+
+    /* points to smaller length sequence */
+    px = pIn2 + srcBLen - 1;
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcBLen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcBLen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Initialze temporary scratch pointer */
+    pScr1 = pScratch1;
+
+    /* Fill (srcBLen - 1u) zeros in scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update temporary scratch pointer */
+    pScr1 += (srcBLen - 1u);
+
+    /* Copy (srcALen) samples in scratch buffer */
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcALen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcALen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update pointer */
+    pScr1 += (srcBLen - 1u);
+
+
+    /* Temporary pointer for scratch2 */
+    py = pScratch2;
+
+    /* Initialization of pIn2 pointer */
+    pIn2 = (q7_t *) py;
+
+    pScr2 = py;
+
+    pOut = pDst + firstIndex;
+
+    pScratch1 += firstIndex;
+
+    /* Actual convolution process starts here */
+    blkCnt = (numPoints) >> 2;
+
+
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* Read two samples from scratch1 buffer */
+      x1 = *__SIMD32(pScr1)++;
+
+      /* Read next two samples from scratch1 buffer */
+      x2 = *__SIMD32(pScr1)++;
+
+      tapCnt = (srcBLen) >> 2u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read four samples from smaller buffer */
+        y1 = _SIMD32_OFFSET(pScr2);
+
+        /* multiply and accumlate */
+        acc0 = __SMLAD(x1, y1, acc0);
+        acc2 = __SMLAD(x2, y1, acc2);
+
+        /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x2, x1, 0);
+#else
+        x3 = __PKHBT(x1, x2, 0);
+#endif
+
+        /* multiply and accumlate */
+        acc1 = __SMLADX(x3, y1, acc1);
+
+        /* Read next two samples from scratch1 buffer */
+        x1 = *__SIMD32(pScr1)++;
+
+        /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x1, x2, 0);
+#else
+        x3 = __PKHBT(x2, x1, 0);
+#endif
+
+        acc3 = __SMLADX(x3, y1, acc3);
+
+        /* Read four samples from smaller buffer */
+        y1 = _SIMD32_OFFSET(pScr2 + 2u);
+
+        acc0 = __SMLAD(x2, y1, acc0);
+
+        acc2 = __SMLAD(x1, y1, acc2);
+
+        acc1 = __SMLADX(x3, y1, acc1);
+
+        x2 = *__SIMD32(pScr1)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+        x3 = __PKHBT(x2, x1, 0);
+#else
+        x3 = __PKHBT(x1, x2, 0);
+#endif
+
+        acc3 = __SMLADX(x3, y1, acc3);
+
+        pScr2 += 4u;
+
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+
+
+      /* Update scratch pointer for remaining samples of smaller length sequence */
+      pScr1 -= 4u;
+
+
+      /* apply same above for remaining samples of smaller length sequence */
+      tapCnt = (srcBLen) & 3u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pScr2);
+        acc1 += (*pScr1++ * *pScr2);
+        acc2 += (*pScr1++ * *pScr2);
+        acc3 += (*pScr1++ * *pScr2++);
+
+        pScr1 -= 3u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+      /* Store the result in the accumulator in the destination buffer. */
+      out0 = (q7_t) (__SSAT(acc0 >> 7u, 8));
+      out1 = (q7_t) (__SSAT(acc1 >> 7u, 8));
+      out2 = (q7_t) (__SSAT(acc2 >> 7u, 8));
+      out3 = (q7_t) (__SSAT(acc3 >> 7u, 8));
+
+      *__SIMD32(pOut)++ = __PACKq7(out0, out1, out2, out3);
+
+      /* Initialization of inputB pointer */
+      pScr2 = py;
+
+      pScratch1 += 4u;
+
+    }
+
+    blkCnt = (numPoints) & 0x3;
+
+    /* Calculate convolution for remaining samples of Bigger length sequence */
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+
+      tapCnt = (srcBLen) >> 1u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read next two samples from scratch1 buffer */
+        x1 = *__SIMD32(pScr1)++;
+
+        /* Read two samples from smaller buffer */
+        y1 = *__SIMD32(pScr2)++;
+
+        acc0 = __SMLAD(x1, y1, acc0);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      tapCnt = (srcBLen) & 1u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pScr2++);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q7_t) (__SSAT(acc0 >> 7u, 8));
+
+      /* Initialization of inputB pointer */
+      pScr2 = py;
+
+      pScratch1 += 1u;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+
+
+  }
+
+  return (status);
+
+}
+
+#else
+
+arm_status arm_conv_partial_opt_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+
+  q15_t *pScr2, *pScr1;                          /* Intermediate pointers for scratch pointers */
+  q15_t x4;                                      /* Temporary input variable */
+  q7_t *pIn1, *pIn2;                             /* inputA and inputB pointer */
+  uint32_t j, k, blkCnt, tapCnt;                 /* loop counter */
+  q7_t *px;                                      /* Temporary input1 pointer */
+  q15_t *py;                                     /* Temporary input2 pointer */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulator */
+  arm_status status;
+  q7_t *pOut = pDst;                             /* output pointer */
+  q15_t x10, x11, x20, x21;                      /* Temporary input variables */
+  q15_t y10, y11;                                /* Temporary input variables */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* pointer to take end of scratch2 buffer */
+    pScr2 = pScratch2;
+
+    /* points to smaller length sequence */
+    px = pIn2 + srcBLen - 1;
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcBLen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcBLen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      x4 = (q15_t) * px--;
+      *pScr2++ = x4;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Initialze temporary scratch pointer */
+    pScr1 = pScratch1;
+
+    /* Fill (srcBLen - 1u) zeros in scratch buffer */
+    arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+    /* Update temporary scratch pointer */
+    pScr1 += (srcBLen - 1u);
+
+    /* Copy (srcALen) samples in scratch buffer */
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = srcALen >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = srcALen % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      x4 = (q15_t) * pIn1++;
+      *pScr1++ = x4;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Apply loop unrolling and do 4 Copies simultaneously. */
+    k = (srcBLen - 1u) >> 2u;
+
+    /* First part of the processing with loop unrolling copies 4 data points at a time.       
+     ** a second loop below copies for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner */
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+      *pScr1++ = 0;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, copy remaining samples here.       
+     ** No loop unrolling is used. */
+    k = (srcBLen - 1u) % 0x4u;
+
+    while(k > 0u)
+    {
+      /* copy second buffer in reversal manner for remaining samples */
+      *pScr1++ = 0;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+
+    /* Temporary pointer for scratch2 */
+    py = pScratch2;
+
+    /* Initialization of pIn2 pointer */
+    pIn2 = (q7_t *) py;
+
+    pScr2 = py;
+
+    pOut = pDst + firstIndex;
+
+    pScratch1 += firstIndex;
+
+    /* Actual convolution process starts here */
+    blkCnt = (numPoints) >> 2;
+
+
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* Read two samples from scratch1 buffer */
+      x10 = *pScr1++;
+      x11 = *pScr1++;
+
+      /* Read next two samples from scratch1 buffer */
+      x20 = *pScr1++;
+      x21 = *pScr1++;
+
+      tapCnt = (srcBLen) >> 2u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read four samples from smaller buffer */
+        y10 = *pScr2;
+        y11 = *(pScr2 + 1u);
+
+        /* multiply and accumlate */
+        acc0 += (q31_t) x10 *y10;
+        acc0 += (q31_t) x11 *y11;
+        acc2 += (q31_t) x20 *y10;
+        acc2 += (q31_t) x21 *y11;
+
+
+        acc1 += (q31_t) x11 *y10;
+        acc1 += (q31_t) x20 *y11;
+
+        /* Read next two samples from scratch1 buffer */
+        x10 = *pScr1;
+        x11 = *(pScr1 + 1u);
+
+        /* multiply and accumlate */
+        acc3 += (q31_t) x21 *y10;
+        acc3 += (q31_t) x10 *y11;
+
+        /* Read next two samples from scratch2 buffer */
+        y10 = *(pScr2 + 2u);
+        y11 = *(pScr2 + 3u);
+
+        /* multiply and accumlate */
+        acc0 += (q31_t) x20 *y10;
+        acc0 += (q31_t) x21 *y11;
+        acc2 += (q31_t) x10 *y10;
+        acc2 += (q31_t) x11 *y11;
+        acc1 += (q31_t) x21 *y10;
+        acc1 += (q31_t) x10 *y11;
+
+        /* Read next two samples from scratch1 buffer */
+        x20 = *(pScr1 + 2);
+        x21 = *(pScr1 + 3);
+
+        /* multiply and accumlate */
+        acc3 += (q31_t) x11 *y10;
+        acc3 += (q31_t) x20 *y11;
+
+        /* update scratch pointers */
+
+        pScr1 += 4u;
+        pScr2 += 4u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+
+
+      /* Update scratch pointer for remaining samples of smaller length sequence */
+      pScr1 -= 4u;
+
+
+      /* apply same above for remaining samples of smaller length sequence */
+      tapCnt = (srcBLen) & 3u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pScr2);
+        acc1 += (*pScr1++ * *pScr2);
+        acc2 += (*pScr1++ * *pScr2);
+        acc3 += (*pScr1++ * *pScr2++);
+
+        pScr1 -= 3u;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q7_t) (__SSAT(acc0 >> 7u, 8));
+      *pOut++ = (q7_t) (__SSAT(acc1 >> 7u, 8));
+      *pOut++ = (q7_t) (__SSAT(acc2 >> 7u, 8));
+      *pOut++ = (q7_t) (__SSAT(acc3 >> 7u, 8));
+
+      /* Initialization of inputB pointer */
+      pScr2 = py;
+
+      pScratch1 += 4u;
+
+    }
+
+    blkCnt = (numPoints) & 0x3;
+
+    /* Calculate convolution for remaining samples of Bigger length sequence */
+    while(blkCnt > 0)
+    {
+      /* Initialze temporary scratch pointer as scratch1 */
+      pScr1 = pScratch1;
+
+      /* Clear Accumlators */
+      acc0 = 0;
+
+      tapCnt = (srcBLen) >> 1u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read next two samples from scratch1 buffer */
+        x10 = *pScr1++;
+        x11 = *pScr1++;
+
+        /* Read two samples from smaller buffer */
+        y10 = *pScr2++;
+        y11 = *pScr2++;
+
+        /* multiply and accumlate */
+        acc0 += (q31_t) x10 *y10;
+        acc0 += (q31_t) x11 *y11;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      tapCnt = (srcBLen) & 1u;
+
+      /* apply same above for remaining samples of smaller length sequence */
+      while(tapCnt > 0u)
+      {
+
+        /* accumlate the results */
+        acc0 += (*pScr1++ * *pScr2++);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      blkCnt--;
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q7_t) (__SSAT(acc0 >> 7u, 8));
+
+      /* Initialization of inputB pointer */
+      pScr2 = py;
+
+      pScratch1 += 1u;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+
+  }
+
+  return (status);
+
+}
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+
+
+/**    
+ * @} end of PartialConv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,786 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_conv_partial_q15.c   
+*   
+* Description:	Partial convolution of Q15 sequences.  
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+* 
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup PartialConv   
+ * @{   
+ */
+
+/**   
+ * @brief Partial convolution of Q15 sequences.   
+ * @param[in]       *pSrcA points to the first input sequence.   
+ * @param[in]       srcALen length of the first input sequence.   
+ * @param[in]       *pSrcB points to the second input sequence.   
+ * @param[in]       srcBLen length of the second input sequence.   
+ * @param[out]      *pDst points to the location where the output result is written.   
+ * @param[in]       firstIndex is the first output sample to start with.   
+ * @param[in]       numPoints is the number of output points to be computed.   
+ * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].   
+ *   
+ * Refer to <code>arm_conv_partial_fast_q15()</code> for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.  
+ * 
+ * \par    
+ * Refer the function <code>arm_conv_partial_opt_q15()</code> for a faster implementation of this function using scratch buffers.
+ * 
+ */
+
+
+arm_status arm_conv_partial_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints)
+{
+
+#if (defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q15_t *pIn1;                                   /* inputA pointer               */
+  q15_t *pIn2;                                   /* inputB pointer               */
+  q15_t *pOut = pDst;                            /* output pointer               */
+  q63_t sum, acc0, acc1, acc2, acc3;             /* Accumulator                  */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers        */
+  q31_t x0, x1, x2, x3, c0;                      /* Temporary input variables */
+  uint32_t j, k, count, check, blkCnt;
+  int32_t blockSize1, blockSize2, blockSize3;    /* loop counter                 */
+  arm_status status;                             /* status of Partial convolution */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Conditions to check which loopCounter holds   
+     * the first and last indices of the output samples to be calculated. */
+    check = firstIndex + numPoints;
+    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
+    blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
+    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
+                                     (int32_t) numPoints) : 0;
+    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) +
+                                    (int32_t) firstIndex);
+    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;
+
+    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+    /* The function is internally   
+     * divided into three stages according to the number of multiplications that has to be   
+     * taken place between inputA samples and inputB samples. In the first stage of the   
+     * algorithm, the multiplications increase by one for every iteration.   
+     * In the second stage of the algorithm, srcBLen number of multiplications are done.   
+     * In the third stage of the algorithm, the multiplications decrease by one   
+     * for every iteration. */
+
+    /* Set the output pointer to point to the firstIndex   
+     * of the output sample to be calculated. */
+    pOut = pDst + firstIndex;
+
+    /* --------------------------   
+     * Initializations of stage1   
+     * -------------------------*/
+
+    /* sum = x[0] * y[0]   
+     * sum = x[0] * y[1] + x[1] * y[0]   
+     * ....   
+     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]   
+     */
+
+    /* In this stage the MAC operations are increased by 1 for every iteration.   
+       The count variable holds the number of MAC operations performed.   
+       Since the partial convolution starts from firstIndex   
+       Number of Macs to be performed is firstIndex + 1 */
+    count = 1u + firstIndex;
+
+    /* Working pointer of inputA */
+    px = pIn1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + firstIndex;
+    py = pSrc2;
+
+    /* ------------------------   
+     * Stage1 process   
+     * ----------------------*/
+
+    /* For loop unrolling by 4, this stage is divided into two. */
+    /* First part of this stage computes the MAC operations less than 4 */
+    /* Second part of this stage computes the MAC operations greater than or equal to 4 */
+
+    /* The first part of the stage starts here */
+    while((count < 4u) && (blockSize1 > 0))
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over number of MAC operations between   
+       * inputA samples and inputB samples */
+      k = count;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum = __SMLALD(*px++, *py--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* The second part of the stage starts here */
+    /* The internal loop, over count, is unrolled by 4 */
+    /* To, read the last two inputB samples using SIMD:   
+     * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */
+    py = py - 1;
+
+    while(blockSize1 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */
+        sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+        /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */
+        sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* For the next MAC operations, the pointer py is used without SIMD   
+       * So, py is incremented by 1 */
+      py = py + 1u;
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum = __SMLALD(*px++, *py--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2 - 1u;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* --------------------------   
+     * Initializations of stage2   
+     * ------------------------*/
+
+    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]   
+     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]   
+     * ....   
+     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]   
+     */
+
+    /* Working pointer of inputA */
+    if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+    {
+      px = pIn1 + firstIndex - srcBLen + 1;
+    }
+    else
+    {
+      px = pIn1;
+    }
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+  /* count is the index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+
+  /* --------------------   
+   * Stage2 process   
+   * -------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      py = py - 1u;
+
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+
+      /* read x[0], x[1] samples */
+      x0 = *__SIMD32(px);
+      /* read x[1], x[2] samples */
+      x1 = _SIMD32_OFFSET(px+1);
+	  px+= 2u;
+
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read the last two inputB samples using SIMD:   
+         * y[srcBLen - 1] and y[srcBLen - 2] */
+        c0 = *__SIMD32(py)--;
+
+        /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */
+        acc0 = __SMLALDX(x0, c0, acc0);
+
+        /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */
+        acc1 = __SMLALDX(x1, c0, acc1);
+
+        /* Read x[2], x[3] */
+        x2 = *__SIMD32(px);
+
+        /* Read x[3], x[4] */
+        x3 = _SIMD32_OFFSET(px+1);
+
+        /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */
+        acc2 = __SMLALDX(x2, c0, acc2);
+
+        /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */
+        acc3 = __SMLALDX(x3, c0, acc3);
+
+        /* Read y[srcBLen - 3] and y[srcBLen - 4] */
+        c0 = *__SIMD32(py)--;
+
+        /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */
+        acc0 = __SMLALDX(x2, c0, acc0);
+
+        /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */
+        acc1 = __SMLALDX(x3, c0, acc1);
+
+        /* Read x[4], x[5] */
+        x0 = _SIMD32_OFFSET(px+2);
+
+        /* Read x[5], x[6] */
+        x1 = _SIMD32_OFFSET(px+3);
+		px += 4u;
+
+        /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */
+        acc2 = __SMLALDX(x0, c0, acc2);
+
+        /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */
+        acc3 = __SMLALDX(x1, c0, acc3);
+
+      } while(--k);
+
+      /* For the next MAC operations, SIMD is not used   
+       * So, the 16 bit pointer if inputB, py is updated */
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      if(k == 1u)
+      {
+        /* Read y[srcBLen - 5] */
+        c0 = *(py+1);
+
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[7] */
+        x3 = *__SIMD32(px);
+		px++;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALD(x0, c0, acc0);
+        acc1 = __SMLALD(x1, c0, acc1);
+        acc2 = __SMLALDX(x1, c0, acc2);
+        acc3 = __SMLALDX(x3, c0, acc3);
+      }
+
+      if(k == 2u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+        c0 = _SIMD32_OFFSET(py);
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px+1);
+		px += 2u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALDX(x0, c0, acc0);
+        acc1 = __SMLALDX(x1, c0, acc1);
+        acc2 = __SMLALDX(x3, c0, acc2);
+        acc3 = __SMLALDX(x2, c0, acc3);
+      }
+
+      if(k == 3u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+        c0 = _SIMD32_OFFSET(py);
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px+1);
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALDX(x0, c0, acc0);
+        acc1 = __SMLALDX(x1, c0, acc1);
+        acc2 = __SMLALDX(x3, c0, acc2);
+        acc3 = __SMLALDX(x2, c0, acc3);
+
+		c0 = *(py-1);
+
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[10] */
+        x3 =  _SIMD32_OFFSET(px+2);
+		px += 3u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALDX(x1, c0, acc0);
+        acc1 = __SMLALD(x2, c0, acc1);
+        acc2 = __SMLALDX(x2, c0, acc2);
+        acc3 = __SMLALDX(x3, c0, acc3);
+      }
+
+
+      /* Store the results in the accumulators in the destination buffer. */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+#else
+
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+
+      /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+       ** No loop unrolling is used. */
+      blkCnt = (uint32_t) blockSize2 % 0x4u;
+  	  
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += (q63_t) ((q31_t) * px++ * *py--);
+          sum += (q63_t) ((q31_t) * px++ * *py--);
+          sum += (q63_t) ((q31_t) * px++ * *py--);
+          sum += (q63_t) ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += (q63_t) ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q15_t) (__SSAT(sum >> 15, 16));
+
+        /* Increment the pointer pIn1 index, count by 1 */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+    else
+    {
+      /* If the srcBLen is not a multiple of 4,   
+       * the blockSize2 loop cannot be unrolled by 4 */
+      blkCnt = (uint32_t) blockSize2;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* srcBLen number of MACS should be performed */
+        k = srcBLen;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum += (q63_t) ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q15_t) (__SSAT(sum >> 15, 16));
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+  
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+
+
+    /* --------------------------   
+     * Initializations of stage3   
+     * -------------------------*/
+
+    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]   
+     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]   
+     * ....   
+     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]   
+     * sum +=  x[srcALen-1] * y[srcBLen-1]   
+     */
+
+    /* In this stage the MAC operations are decreased by 1 for every iteration.   
+       The count variable holds the number of MAC operations performed */
+    count = srcBLen - 1u;
+
+    /* Working pointer of inputA */
+    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+    px = pSrc1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    pIn2 = pSrc2 - 1u;
+    py = pIn2;
+
+    /* -------------------   
+     * Stage3 process   
+     * ------------------*/
+
+    /* For loop unrolling by 4, this stage is divided into two. */
+    /* First part of this stage computes the MAC operations greater than 4 */
+    /* Second part of this stage computes the MAC operations less than or equal to 4 */
+
+    /* The first part of the stage starts here */
+    j = count >> 2u;
+
+    while((j > 0u) && (blockSize3 > 0))
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied   
+         * with y[srcBLen - 1], y[srcBLen - 2] respectively */
+        sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+        /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied   
+         * with y[srcBLen - 3], y[srcBLen - 4] respectively */
+        sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* For the next MAC operations, the pointer py is used without SIMD   
+       * So, py is incremented by 1 */
+      py = py + 1u;
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */
+        sum = __SMLALD(*px++, *py--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pIn2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+
+      j--;
+    }
+
+    /* The second part of the stage starts here */
+    /* SIMD is not used for the next MAC operations,   
+     * so pointer py is updated to read only one sample at a time */
+    py = py + 1u;
+
+    while(blockSize3 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+        sum = __SMLALD(*px++, *py--, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pSrc2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q15_t *pIn1 = pSrcA;                           /* inputA pointer */
+  q15_t *pIn2 = pSrcB;                           /* inputB pointer */
+  q63_t sum;                                     /* Accumulator */
+  uint32_t i, j;                                 /* loop counters */
+  arm_status status;                             /* status of Partial convolution */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+    /* Loop to calculate convolution for output length number of values */
+    for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++)
+    {
+      /* Initialize sum with zero to carry on MAC operations */
+      sum = 0;
+
+      /* Loop to perform MAC operations according to convolution equation */
+      for (j = 0; j <= i; j++)
+      {
+        /* Check the array limitations */
+        if(((i - j) < srcBLen) && (j < srcALen))
+        {
+          /* z[i] += x[i-j] * y[j] */
+          sum += ((q31_t) pIn1[j] * (pIn2[i - j]));
+        }
+      }
+
+      /* Store the output in the destination buffer */
+      pDst[i] = (q15_t) __SSAT((sum >> 15u), 16u);
+    }
+    /* set status as ARM_SUCCESS as there are no argument errors */
+    status = ARM_MATH_SUCCESS;
+  }
+  return (status);
+
+#endif /* #if (defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE)  */
+
+}
+
+/**   
+ * @} end of PartialConv group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,607 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_partial_q31.c    
+*    
+* Description:	Partial convolution of Q31 sequences.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup PartialConv    
+ * @{    
+ */
+
+/**    
+ * @brief Partial convolution of Q31 sequences.    
+ * @param[in]       *pSrcA points to the first input sequence.    
+ * @param[in]       srcALen length of the first input sequence.    
+ * @param[in]       *pSrcB points to the second input sequence.    
+ * @param[in]       srcBLen length of the second input sequence.    
+ * @param[out]      *pDst points to the location where the output result is written.    
+ * @param[in]       firstIndex is the first output sample to start with.    
+ * @param[in]       numPoints is the number of output points to be computed.    
+ * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].    
+ *    
+ * See <code>arm_conv_partial_fast_q31()</code> for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.    
+ */
+
+arm_status arm_conv_partial_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t *pIn1;                                   /* inputA pointer               */
+  q31_t *pIn2;                                   /* inputB pointer               */
+  q31_t *pOut = pDst;                            /* output pointer               */
+  q31_t *px;                                     /* Intermediate inputA pointer  */
+  q31_t *py;                                     /* Intermediate inputB pointer  */
+  q31_t *pSrc1, *pSrc2;                          /* Intermediate pointers        */
+  q63_t sum, acc0, acc1, acc2;                   /* Accumulator                  */
+  q31_t x0, x1, x2, c0;
+  uint32_t j, k, count, check, blkCnt;
+  int32_t blockSize1, blockSize2, blockSize3;    /* loop counter                 */
+  arm_status status;                             /* status of Partial convolution */
+
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Conditions to check which loopCounter holds    
+     * the first and last indices of the output samples to be calculated. */
+    check = firstIndex + numPoints;
+    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
+    blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
+    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
+                                     (int32_t) numPoints) : 0;
+    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) +
+                                    (int32_t) firstIndex);
+    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;
+
+    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+    /* The function is internally    
+     * divided into three stages according to the number of multiplications that has to be    
+     * taken place between inputA samples and inputB samples. In the first stage of the    
+     * algorithm, the multiplications increase by one for every iteration.    
+     * In the second stage of the algorithm, srcBLen number of multiplications are done.    
+     * In the third stage of the algorithm, the multiplications decrease by one    
+     * for every iteration. */
+
+    /* Set the output pointer to point to the firstIndex    
+     * of the output sample to be calculated. */
+    pOut = pDst + firstIndex;
+
+    /* --------------------------    
+     * Initializations of stage1    
+     * -------------------------*/
+
+    /* sum = x[0] * y[0]    
+     * sum = x[0] * y[1] + x[1] * y[0]    
+     * ....    
+     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]    
+     */
+
+    /* In this stage the MAC operations are increased by 1 for every iteration.    
+       The count variable holds the number of MAC operations performed.    
+       Since the partial convolution starts from firstIndex    
+       Number of Macs to be performed is firstIndex + 1 */
+    count = 1u + firstIndex;
+
+    /* Working pointer of inputA */
+    px = pIn1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + firstIndex;
+    py = pSrc2;
+
+    /* ------------------------    
+     * Stage1 process    
+     * ----------------------*/
+
+    /* The first loop starts here */
+    while(blockSize1 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* x[0] * y[srcBLen - 1] */
+        sum += (q63_t) * px++ * (*py--);
+        /* x[1] * y[srcBLen - 2] */
+        sum += (q63_t) * px++ * (*py--);
+        /* x[2] * y[srcBLen - 3] */
+        sum += (q63_t) * px++ * (*py--);
+        /* x[3] * y[srcBLen - 4] */
+        sum += (q63_t) * px++ * (*py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += (q63_t) * px++ * (*py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q31_t) (sum >> 31);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* --------------------------    
+     * Initializations of stage2    
+     * ------------------------*/
+
+    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]    
+     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]    
+     * ....    
+     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]    
+     */
+
+    /* Working pointer of inputA */
+    if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+    {
+      px = pIn1 + firstIndex - srcBLen + 1;
+    }
+    else
+    {
+      px = pIn1;
+    }
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* count is index by which the pointer pIn1 to be incremented */
+    count = 0u;
+
+    /* -------------------    
+     * Stage2 process    
+     * ------------------*/
+
+    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+     * So, to loop unroll over blockSize2,    
+     * srcBLen should be greater than or equal to 4 */
+    if(srcBLen >= 4u)
+    {
+      /* Loop unroll over blkCnt */
+
+      blkCnt = blockSize2 / 3;
+      while(blkCnt > 0u)
+      {
+        /* Set all accumulators to zero */
+        acc0 = 0;
+        acc1 = 0;
+        acc2 = 0;
+
+        /* read x[0], x[1] samples */
+        x0 = *(px++);
+        x1 = *(px++);
+
+        /* Apply loop unrolling and compute 3 MACs simultaneously. */
+        k = srcBLen / 3;
+
+        /* First part of the processing with loop unrolling.  Compute 3 MACs at a time.        
+         ** a second loop below computes MACs for the remaining 1 to 2 samples. */
+        do
+        {
+          /* Read y[srcBLen - 1] sample */
+          c0 = *(py);
+
+          /* Read x[2] sample */
+          x2 = *(px);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[0] * y[srcBLen - 1] */
+          acc0 += (q63_t) x0 *c0;
+          /* acc1 +=  x[1] * y[srcBLen - 1] */
+          acc1 += (q63_t) x1 *c0;
+          /* acc2 +=  x[2] * y[srcBLen - 1] */
+          acc2 += (q63_t) x2 *c0;
+
+          /* Read y[srcBLen - 2] sample */
+          c0 = *(py - 1u);
+
+          /* Read x[3] sample */
+          x0 = *(px + 1u);
+
+          /* Perform the multiply-accumulate */
+          /* acc0 +=  x[1] * y[srcBLen - 2] */
+          acc0 += (q63_t) x1 *c0;
+          /* acc1 +=  x[2] * y[srcBLen - 2] */
+          acc1 += (q63_t) x2 *c0;
+          /* acc2 +=  x[3] * y[srcBLen - 2] */
+          acc2 += (q63_t) x0 *c0;
+
+          /* Read y[srcBLen - 3] sample */
+          c0 = *(py - 2u);
+
+          /* Read x[4] sample */
+          x1 = *(px + 2u);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[2] * y[srcBLen - 3] */
+          acc0 += (q63_t) x2 *c0;
+          /* acc1 +=  x[3] * y[srcBLen - 2] */
+          acc1 += (q63_t) x0 *c0;
+          /* acc2 +=  x[4] * y[srcBLen - 2] */
+          acc2 += (q63_t) x1 *c0;
+
+
+          px += 3u;
+
+          py -= 3u;
+
+        } while(--k);
+
+        /* If the srcBLen is not a multiple of 3, compute any remaining MACs here.        
+         ** No loop unrolling is used. */
+        k = srcBLen - (3 * (srcBLen / 3));
+
+        while(k > 0u)
+        {
+          /* Read y[srcBLen - 5] sample */
+          c0 = *(py--);
+
+          /* Read x[7] sample */
+          x2 = *(px++);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[4] * y[srcBLen - 5] */
+          acc0 += (q63_t) x0 *c0;
+          /* acc1 +=  x[5] * y[srcBLen - 5] */
+          acc1 += (q63_t) x1 *c0;
+          /* acc2 +=  x[6] * y[srcBLen - 5] */
+          acc2 += (q63_t) x2 *c0;
+
+          /* Reuse the present samples for the next MAC */
+          x0 = x1;
+          x1 = x2;
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q31_t) (acc0 >> 31);
+        *pOut++ = (q31_t) (acc1 >> 31);
+        *pOut++ = (q31_t) (acc2 >> 31);
+
+        /* Increment the pointer pIn1 index, count by 3 */
+        count += 3u;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+
+      /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here.        
+       ** No loop unrolling is used. */
+      blkCnt = blockSize2 - 3 * (blockSize2 / 3);
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += (q63_t) * px++ * (*py--);
+          sum += (q63_t) * px++ * (*py--);
+          sum += (q63_t) * px++ * (*py--);
+          sum += (q63_t) * px++ * (*py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum += (q63_t) * px++ * (*py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q31_t) (sum >> 31);
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+    else
+    {
+      /* If the srcBLen is not a multiple of 4,    
+       * the blockSize2 loop cannot be unrolled by 4 */
+      blkCnt = (uint32_t) blockSize2;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* srcBLen number of MACS should be performed */
+        k = srcBLen;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum += (q63_t) * px++ * (*py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q31_t) (sum >> 31);
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+
+
+    /* --------------------------    
+     * Initializations of stage3    
+     * -------------------------*/
+
+    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]    
+     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]    
+     * ....    
+     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]    
+     * sum +=  x[srcALen-1] * y[srcBLen-1]    
+     */
+
+    /* In this stage the MAC operations are decreased by 1 for every iteration.    
+       The blockSize3 variable holds the number of MAC operations performed */
+    count = srcBLen - 1u;
+
+    /* Working pointer of inputA */
+    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+    px = pSrc1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* -------------------    
+     * Stage3 process    
+     * ------------------*/
+
+    while(blockSize3 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        sum += (q63_t) * px++ * (*py--);
+        sum += (q63_t) * px++ * (*py--);
+        sum += (q63_t) * px++ * (*py--);
+        sum += (q63_t) * px++ * (*py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += (q63_t) * px++ * (*py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q31_t) (sum >> 31);
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pSrc2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t *pIn1 = pSrcA;                           /* inputA pointer */
+  q31_t *pIn2 = pSrcB;                           /* inputB pointer */
+  q63_t sum;                                     /* Accumulator */
+  uint32_t i, j;                                 /* loop counters */
+  arm_status status;                             /* status of Partial convolution */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+    /* Loop to calculate convolution for output length number of values */
+    for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++)
+    {
+      /* Initialize sum with zero to carry on MAC operations */
+      sum = 0;
+
+      /* Loop to perform MAC operations according to convolution equation */
+      for (j = 0; j <= i; j++)
+      {
+        /* Check the array limitations */
+        if(((i - j) < srcBLen) && (j < srcALen))
+        {
+          /* z[i] += x[i-j] * y[j] */
+          sum += ((q63_t) pIn1[j] * (pIn2[i - j]));
+        }
+      }
+
+      /* Store the output in the destination buffer */
+      pDst[i] = (q31_t) (sum >> 31u);
+    }
+    /* set status as ARM_SUCCESS as there are no argument errors */
+    status = ARM_MATH_SUCCESS;
+  }
+  return (status);
+
+#endif /*    #ifndef ARM_MATH_CM0_FAMILY      */
+
+}
+
+/**    
+ * @} end of PartialConv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,741 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_conv_partial_q7.c   
+*   
+* Description:	Partial convolution of Q7 sequences.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup PartialConv   
+ * @{   
+ */
+
+/**   
+ * @brief Partial convolution of Q7 sequences.   
+ * @param[in]       *pSrcA points to the first input sequence.   
+ * @param[in]       srcALen length of the first input sequence.   
+ * @param[in]       *pSrcB points to the second input sequence.   
+ * @param[in]       srcBLen length of the second input sequence.   
+ * @param[out]      *pDst points to the location where the output result is written.   
+ * @param[in]       firstIndex is the first output sample to start with.   
+ * @param[in]       numPoints is the number of output points to be computed.   
+ * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].   
+ *  
+ * \par    
+ * Refer the function <code>arm_conv_partial_opt_q7()</code> for a faster implementation of this function.
+ *  
+ */
+
+arm_status arm_conv_partial_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q7_t *pIn1;                                    /* inputA pointer */
+  q7_t *pIn2;                                    /* inputB pointer */
+  q7_t *pOut = pDst;                             /* output pointer */
+  q7_t *px;                                      /* Intermediate inputA pointer */
+  q7_t *py;                                      /* Intermediate inputB pointer */
+  q7_t *pSrc1, *pSrc2;                           /* Intermediate pointers */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulator */
+  q31_t input1, input2;
+  q15_t in1, in2;
+  q7_t x0, x1, x2, x3, c0, c1;
+  uint32_t j, k, count, check, blkCnt;
+  int32_t blockSize1, blockSize2, blockSize3;    /* loop counter */
+  arm_status status;
+
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_MATH_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+
+    /* The algorithm implementation is based on the lengths of the inputs. */
+    /* srcB is always made to slide across srcA. */
+    /* So srcBLen is always considered as shorter or equal to srcALen */
+    if(srcALen >= srcBLen)
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcA;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcB;
+    }
+    else
+    {
+      /* Initialization of inputA pointer */
+      pIn1 = pSrcB;
+
+      /* Initialization of inputB pointer */
+      pIn2 = pSrcA;
+
+      /* srcBLen is always considered as shorter or equal to srcALen */
+      j = srcBLen;
+      srcBLen = srcALen;
+      srcALen = j;
+    }
+
+    /* Conditions to check which loopCounter holds   
+     * the first and last indices of the output samples to be calculated. */
+    check = firstIndex + numPoints;
+    blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+    blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
+    blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
+    blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
+                                     (int32_t) numPoints) : 0;
+    blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) +
+                                    (int32_t) firstIndex);
+    blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;
+
+    /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+    /* The function is internally   
+     * divided into three stages according to the number of multiplications that has to be   
+     * taken place between inputA samples and inputB samples. In the first stage of the   
+     * algorithm, the multiplications increase by one for every iteration.   
+     * In the second stage of the algorithm, srcBLen number of multiplications are done.   
+     * In the third stage of the algorithm, the multiplications decrease by one   
+     * for every iteration. */
+
+    /* Set the output pointer to point to the firstIndex   
+     * of the output sample to be calculated. */
+    pOut = pDst + firstIndex;
+
+    /* --------------------------   
+     * Initializations of stage1   
+     * -------------------------*/
+
+    /* sum = x[0] * y[0]   
+     * sum = x[0] * y[1] + x[1] * y[0]   
+     * ....   
+     * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]   
+     */
+
+    /* In this stage the MAC operations are increased by 1 for every iteration.   
+       The count variable holds the number of MAC operations performed.   
+       Since the partial convolution starts from from firstIndex   
+       Number of Macs to be performed is firstIndex + 1 */
+    count = 1u + firstIndex;
+
+    /* Working pointer of inputA */
+    px = pIn1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + firstIndex;
+    py = pSrc2;
+
+    /* ------------------------   
+     * Stage1 process   
+     * ----------------------*/
+
+    /* The first stage starts here */
+    while(blockSize1 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* x[0] , x[1] */
+        in1 = (q15_t) * px++;
+        in2 = (q15_t) * px++;
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* y[srcBLen - 1] , y[srcBLen - 2] */
+        in1 = (q15_t) * py--;
+        in2 = (q15_t) * py--;
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* x[0] * y[srcBLen - 1] */
+        /* x[1] * y[srcBLen - 2] */
+        sum = __SMLAD(input1, input2, sum);
+
+        /* x[2] , x[3] */
+        in1 = (q15_t) * px++;
+        in2 = (q15_t) * px++;
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* y[srcBLen - 3] , y[srcBLen - 4] */
+        in1 = (q15_t) * py--;
+        in2 = (q15_t) * py--;
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* x[2] * y[srcBLen - 3] */
+        /* x[3] * y[srcBLen - 4] */
+        sum = __SMLAD(input1, input2, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q7_t) (__SSAT(sum >> 7, 8));
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      py = ++pSrc2;
+      px = pIn1;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Decrement the loop counter */
+      blockSize1--;
+    }
+
+    /* --------------------------   
+     * Initializations of stage2   
+     * ------------------------*/
+
+    /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]   
+     * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]   
+     * ....   
+     * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]   
+     */
+
+    /* Working pointer of inputA */
+    if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+    {
+      px = pIn1 + firstIndex - srcBLen + 1;
+    }
+    else
+    {
+      px = pIn1;
+    }
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* count is index by which the pointer pIn1 to be incremented */
+    count = 0u;
+
+    /* -------------------   
+     * Stage2 process   
+     * ------------------*/
+
+    /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+     * So, to loop unroll over blockSize2,   
+     * srcBLen should be greater than or equal to 4 */
+    if(srcBLen >= 4u)
+    {
+      /* Loop unroll over blockSize2, by 4 */
+      blkCnt = ((uint32_t) blockSize2 >> 2u);
+
+      while(blkCnt > 0u)
+      {
+        /* Set all accumulators to zero */
+        acc0 = 0;
+        acc1 = 0;
+        acc2 = 0;
+        acc3 = 0;
+
+        /* read x[0], x[1], x[2] samples */
+        x0 = *(px++);
+        x1 = *(px++);
+        x2 = *(px++);
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        do
+        {
+          /* Read y[srcBLen - 1] sample */
+          c0 = *(py--);
+          /* Read y[srcBLen - 2] sample */
+          c1 = *(py--);
+
+          /* Read x[3] sample */
+          x3 = *(px++);
+
+          /* x[0] and x[1] are packed */
+          in1 = (q15_t) x0;
+          in2 = (q15_t) x1;
+
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* y[srcBLen - 1]   and y[srcBLen - 2] are packed */
+          in1 = (q15_t) c0;
+          in2 = (q15_t) c1;
+
+          input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2]  */
+          acc0 = __SMLAD(input1, input2, acc0);
+
+          /* x[1] and x[2] are packed */
+          in1 = (q15_t) x1;
+          in2 = (q15_t) x2;
+
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2]  */
+          acc1 = __SMLAD(input1, input2, acc1);
+
+          /* x[2] and x[3] are packed */
+          in1 = (q15_t) x2;
+          in2 = (q15_t) x3;
+
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2]  */
+          acc2 = __SMLAD(input1, input2, acc2);
+
+          /* Read x[4] sample */
+          x0 = *(px++);
+
+          /* x[3] and x[4] are packed */
+          in1 = (q15_t) x3;
+          in2 = (q15_t) x0;
+
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2]  */
+          acc3 = __SMLAD(input1, input2, acc3);
+
+          /* Read y[srcBLen - 3] sample */
+          c0 = *(py--);
+          /* Read y[srcBLen - 4] sample */
+          c1 = *(py--);
+
+          /* Read x[5] sample */
+          x1 = *(px++);
+
+          /* x[2] and x[3] are packed */
+          in1 = (q15_t) x2;
+          in2 = (q15_t) x3;
+
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* y[srcBLen - 3] and y[srcBLen - 4] are packed */
+          in1 = (q15_t) c0;
+          in2 = (q15_t) c1;
+
+          input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4]  */
+          acc0 = __SMLAD(input1, input2, acc0);
+
+          /* x[3] and x[4] are packed */
+          in1 = (q15_t) x3;
+          in2 = (q15_t) x0;
+
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4]  */
+          acc1 = __SMLAD(input1, input2, acc1);
+
+          /* x[4] and x[5] are packed */
+          in1 = (q15_t) x0;
+          in2 = (q15_t) x1;
+
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4]  */
+          acc2 = __SMLAD(input1, input2, acc2);
+
+          /* Read x[6] sample */
+          x2 = *(px++);
+
+          /* x[5] and x[6] are packed */
+          in1 = (q15_t) x1;
+          in2 = (q15_t) x2;
+
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4]  */
+          acc3 = __SMLAD(input1, input2, acc3);
+
+        } while(--k);
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Read y[srcBLen - 5] sample */
+          c0 = *(py--);
+
+          /* Read x[7] sample */
+          x3 = *(px++);
+
+          /* Perform the multiply-accumulates */
+          /* acc0 +=  x[4] * y[srcBLen - 5] */
+          acc0 += ((q31_t) x0 * c0);
+          /* acc1 +=  x[5] * y[srcBLen - 5] */
+          acc1 += ((q31_t) x1 * c0);
+          /* acc2 +=  x[6] * y[srcBLen - 5] */
+          acc2 += ((q31_t) x2 * c0);
+          /* acc3 +=  x[7] * y[srcBLen - 5] */
+          acc3 += ((q31_t) x3 * c0);
+
+          /* Reuse the present samples for the next MAC */
+          x0 = x1;
+          x1 = x2;
+          x2 = x3;
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q7_t) (__SSAT(acc0 >> 7, 8));
+        *pOut++ = (q7_t) (__SSAT(acc1 >> 7, 8));
+        *pOut++ = (q7_t) (__SSAT(acc2 >> 7, 8));
+        *pOut++ = (q7_t) (__SSAT(acc3 >> 7, 8));
+
+        /* Increment the pointer pIn1 index, count by 4 */
+        count += 4u;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+
+      /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+       ** No loop unrolling is used. */
+      blkCnt = (uint32_t) blockSize2 % 0x4u;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        k = srcBLen >> 2u;
+
+        /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+         ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+        while(k > 0u)
+        {
+
+          /* Reading two inputs of SrcA buffer and packing */
+          in1 = (q15_t) * px++;
+          in2 = (q15_t) * px++;
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* Reading two inputs of SrcB buffer and packing */
+          in1 = (q15_t) * py--;
+          in2 = (q15_t) * py--;
+          input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* Perform the multiply-accumulates */
+          sum = __SMLAD(input1, input2, sum);
+
+          /* Reading two inputs of SrcA buffer and packing */
+          in1 = (q15_t) * px++;
+          in2 = (q15_t) * px++;
+          input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* Reading two inputs of SrcB buffer and packing */
+          in1 = (q15_t) * py--;
+          in2 = (q15_t) * py--;
+          input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+          /* Perform the multiply-accumulates */
+          sum = __SMLAD(input1, input2, sum);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+         ** No loop unrolling is used. */
+        k = srcBLen % 0x4u;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulates */
+          sum += ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q7_t) (__SSAT(sum >> 7, 8));
+
+        /* Increment the pointer pIn1 index, count by 1 */
+ 	    count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+      	px = pIn1 + count;
+        py = pSrc2;	
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+    else
+    {
+      /* If the srcBLen is not a multiple of 4,   
+       * the blockSize2 loop cannot be unrolled by 4 */
+      blkCnt = (uint32_t) blockSize2;
+
+      while(blkCnt > 0u)
+      {
+        /* Accumulator is made zero for every iteration */
+        sum = 0;
+
+        /* srcBLen number of MACS should be performed */
+        k = srcBLen;
+
+        while(k > 0u)
+        {
+          /* Perform the multiply-accumulate */
+          sum += ((q31_t) * px++ * *py--);
+
+          /* Decrement the loop counter */
+          k--;
+        }
+
+        /* Store the result in the accumulator in the destination buffer. */
+        *pOut++ = (q7_t) (__SSAT(sum >> 7, 8));
+
+        /* Increment the MAC count */
+        count++;
+
+        /* Update the inputA and inputB pointers for next MAC calculation */
+        px = pIn1 + count;
+        py = pSrc2;
+
+        /* Decrement the loop counter */
+        blkCnt--;
+      }
+    }
+
+
+    /* --------------------------   
+     * Initializations of stage3   
+     * -------------------------*/
+
+    /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]   
+     * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]   
+     * ....   
+     * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]   
+     * sum +=  x[srcALen-1] * y[srcBLen-1]   
+     */
+
+    /* In this stage the MAC operations are decreased by 1 for every iteration.   
+       The count variable holds the number of MAC operations performed */
+    count = srcBLen - 1u;
+
+    /* Working pointer of inputA */
+    pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+    px = pSrc1;
+
+    /* Working pointer of inputB */
+    pSrc2 = pIn2 + (srcBLen - 1u);
+    py = pSrc2;
+
+    /* -------------------   
+     * Stage3 process   
+     * ------------------*/
+
+    while(blockSize3 > 0)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = count >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */
+        in1 = (q15_t) * px++;
+        in2 = (q15_t) * px++;
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */
+        in1 = (q15_t) * py--;
+        in2 = (q15_t) * py--;
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */
+        /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */
+        sum = __SMLAD(input1, input2, sum);
+
+        /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */
+        in1 = (q15_t) * px++;
+        in2 = (q15_t) * px++;
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */
+        in1 = (q15_t) * py--;
+        in2 = (q15_t) * py--;
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */
+        /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */
+        sum = __SMLAD(input1, input2, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the count is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = count % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+        sum += ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q7_t) (__SSAT(sum >> 7, 8));
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = ++pSrc1;
+      py = pSrc2;
+
+      /* Decrement the MAC count */
+      count--;
+
+      /* Decrement the loop counter */
+      blockSize3--;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q7_t *pIn1 = pSrcA;                            /* inputA pointer */
+  q7_t *pIn2 = pSrcB;                            /* inputB pointer */
+  q31_t sum;                                     /* Accumulator */
+  uint32_t i, j;                                 /* loop counters */
+  arm_status status;                             /* status of Partial convolution */
+
+  /* Check for range of output samples to be calculated */
+  if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
+  {
+    /* Set status as ARM_ARGUMENT_ERROR */
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+    /* Loop to calculate convolution for output length number of values */
+    for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++)
+    {
+      /* Initialize sum with zero to carry on MAC operations */
+      sum = 0;
+
+      /* Loop to perform MAC operations according to convolution equation */
+      for (j = 0; j <= i; j++)
+      {
+        /* Check the array limitations */
+        if(((i - j) < srcBLen) && (j < srcALen))
+        {
+          /* z[i] += x[i-j] * y[j] */
+          sum += ((q15_t) pIn1[j] * (pIn2[i - j]));
+        }
+      }
+
+      /* Store the output in the destination buffer */
+      pDst[i] = (q7_t) __SSAT((sum >> 7u), 8u);
+    }
+    /* set status as ARM_SUCCESS as there are no argument errors */
+    status = ARM_MATH_SUCCESS;
+  }
+  return (status);
+
+#endif /*  #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**   
+ * @} end of PartialConv group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,734 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_conv_q15.c   
+*   
+* Description:	Convolution of Q15 sequences.     
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup Conv   
+ * @{   
+ */
+
+/**   
+ * @brief Convolution of Q15 sequences.   
+ * @param[in] *pSrcA points to the first input sequence.   
+ * @param[in] srcALen length of the first input sequence.   
+ * @param[in] *pSrcB points to the second input sequence.   
+ * @param[in] srcBLen length of the second input sequence.   
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.   
+ * @return none.   
+ *   
+ * @details   
+ * <b>Scaling and Overflow Behavior:</b>   
+ *   
+ * \par   
+ * The function is implemented using a 64-bit internal accumulator.   
+ * Both inputs are in 1.15 format and multiplications yield a 2.30 result.   
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.   
+ * This approach provides 33 guard bits and there is no risk of overflow.   
+ * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.   
+ *   
+ * \par   
+ * Refer to <code>arm_conv_fast_q15()</code> for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. 
+ *
+ * \par    
+ * Refer the function <code>arm_conv_opt_q15()</code> for a faster implementation of this function using scratch buffers.
+ *  
+ */
+
+void arm_conv_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst)
+{
+
+#if (defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q15_t *pIn1;                                   /* inputA pointer */
+  q15_t *pIn2;                                   /* inputB pointer */
+  q15_t *pOut = pDst;                            /* output pointer */
+  q63_t sum, acc0, acc1, acc2, acc3;             /* Accumulator */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1, *pSrc2;                          /* Intermediate pointers */
+  q31_t x0, x1, x2, x3, c0;                      /* Temporary variables to hold state and coefficient values */
+  uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt;     /* loop counter */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+  /* The function is internally   
+   * divided into three stages according to the number of multiplications that has to be   
+   * taken place between inputA samples and inputB samples. In the first stage of the   
+   * algorithm, the multiplications increase by one for every iteration.   
+   * In the second stage of the algorithm, srcBLen number of multiplications are done.   
+   * In the third stage of the algorithm, the multiplications decrease by one   
+   * for every iteration. */
+
+  /* The algorithm is implemented in three stages.   
+     The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+
+  /* --------------------------   
+   * Initializations of stage1   
+   * -------------------------*/
+
+  /* sum = x[0] * y[0]   
+   * sum = x[0] * y[1] + x[1] * y[0]   
+   * ....   
+   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]   
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+
+  /* ------------------------   
+   * Stage1 process   
+   * ----------------------*/
+
+  /* For loop unrolling by 4, this stage is divided into two. */
+  /* First part of this stage computes the MAC operations less than 4 */
+  /* Second part of this stage computes the MAC operations greater than or equal to 4 */
+
+  /* The first part of the stage starts here */
+  while((count < 4u) && (blockSize1 > 0u))
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Loop over number of MAC operations between   
+     * inputA samples and inputB samples */
+    k = count;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum = __SMLALD(*px++, *py--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* The second part of the stage starts here */
+  /* The internal loop, over count, is unrolled by 4 */
+  /* To, read the last two inputB samples using SIMD:   
+   * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */
+  py = py - 1;
+
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */
+      sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+      /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */
+      sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* For the next MAC operations, the pointer py is used without SIMD   
+     * So, py is incremented by 1 */
+    py = py + 1u;
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum = __SMLALD(*px++, *py--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + (count - 1u);
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------   
+   * Initializations of stage2   
+   * ------------------------*/
+
+  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]   
+   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]   
+   * ....   
+   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]   
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* count is the index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+
+  /* --------------------   
+   * Stage2 process   
+   * -------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      py = py - 1u;
+
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+
+      /* read x[0], x[1] samples */
+      x0 = *__SIMD32(px);
+      /* read x[1], x[2] samples */
+      x1 = _SIMD32_OFFSET(px+1);
+	  px+= 2u;
+
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read the last two inputB samples using SIMD:   
+         * y[srcBLen - 1] and y[srcBLen - 2] */
+        c0 = *__SIMD32(py)--;
+
+        /* acc0 +=  x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */
+        acc0 = __SMLALDX(x0, c0, acc0);
+
+        /* acc1 +=  x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */
+        acc1 = __SMLALDX(x1, c0, acc1);
+
+        /* Read x[2], x[3] */
+        x2 = *__SIMD32(px);
+
+        /* Read x[3], x[4] */
+        x3 = _SIMD32_OFFSET(px+1);
+
+        /* acc2 +=  x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */
+        acc2 = __SMLALDX(x2, c0, acc2);
+
+        /* acc3 +=  x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */
+        acc3 = __SMLALDX(x3, c0, acc3);
+
+        /* Read y[srcBLen - 3] and y[srcBLen - 4] */
+        c0 = *__SIMD32(py)--;
+
+        /* acc0 +=  x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */
+        acc0 = __SMLALDX(x2, c0, acc0);
+
+        /* acc1 +=  x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */
+        acc1 = __SMLALDX(x3, c0, acc1);
+
+        /* Read x[4], x[5] */
+        x0 = _SIMD32_OFFSET(px+2);
+
+        /* Read x[5], x[6] */
+        x1 = _SIMD32_OFFSET(px+3);
+		px += 4u;
+
+        /* acc2 +=  x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */
+        acc2 = __SMLALDX(x0, c0, acc2);
+
+        /* acc3 +=  x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */
+        acc3 = __SMLALDX(x1, c0, acc3);
+
+      } while(--k);
+
+      /* For the next MAC operations, SIMD is not used   
+       * So, the 16 bit pointer if inputB, py is updated */
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      if(k == 1u)
+      {
+        /* Read y[srcBLen - 5] */
+        c0 = *(py+1);
+
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+        /* Read x[7] */
+        x3 = *__SIMD32(px);
+		px++;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALD(x0, c0, acc0);
+        acc1 = __SMLALD(x1, c0, acc1);
+        acc2 = __SMLALDX(x1, c0, acc2);
+        acc3 = __SMLALDX(x3, c0, acc3);
+      }
+
+      if(k == 2u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+        c0 = _SIMD32_OFFSET(py);
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px+1);
+		px += 2u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALDX(x0, c0, acc0);
+        acc1 = __SMLALDX(x1, c0, acc1);
+        acc2 = __SMLALDX(x3, c0, acc2);
+        acc3 = __SMLALDX(x2, c0, acc3);
+      }
+
+      if(k == 3u)
+      {
+        /* Read y[srcBLen - 5], y[srcBLen - 6] */
+        c0 = _SIMD32_OFFSET(py);
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px+1);
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALDX(x0, c0, acc0);
+        acc1 = __SMLALDX(x1, c0, acc1);
+        acc2 = __SMLALDX(x3, c0, acc2);
+        acc3 = __SMLALDX(x2, c0, acc3);
+
+		c0 = *(py-1);
+
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+        /* Read x[10] */
+        x3 =  _SIMD32_OFFSET(px+2);
+		px += 3u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALDX(x1, c0, acc0);
+        acc1 = __SMLALD(x2, c0, acc1);
+        acc2 = __SMLALDX(x2, c0, acc2);
+        acc3 = __SMLALDX(x3, c0, acc3);
+      }
+
+
+      /* Store the results in the accumulators in the destination buffer. */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+#else
+
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+      *__SIMD32(pOut)++ =
+        __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+       /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += (q63_t) ((q31_t) * px++ * *py--);
+        sum += (q63_t) ((q31_t) * px++ * *py--);
+        sum += (q63_t) ((q31_t) * px++ * *py--);
+        sum += (q63_t) ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += (q63_t) ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT(sum >> 15, 16));
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,   
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* srcBLen number of MACS should be performed */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += (q63_t) ((q31_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q15_t) (__SSAT(sum >> 15, 16));
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+
+  /* --------------------------   
+   * Initializations of stage3   
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]   
+   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]   
+   * ....   
+   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]   
+   * sum +=  x[srcALen-1] * y[srcBLen-1]   
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.   
+     The blockSize3 variable holds the number of MAC operations performed */
+
+  blockSize3 = srcBLen - 1u;
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  pIn2 = pSrc2 - 1u;
+  py = pIn2;
+
+  /* -------------------   
+   * Stage3 process   
+   * ------------------*/
+
+  /* For loop unrolling by 4, this stage is divided into two. */
+  /* First part of this stage computes the MAC operations greater than 4 */
+  /* Second part of this stage computes the MAC operations less than or equal to 4 */
+
+  /* The first part of the stage starts here */
+  j = blockSize3 >> 2u;
+
+  while((j > 0u) && (blockSize3 > 0u))
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3 >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied   
+       * with y[srcBLen - 1], y[srcBLen - 2] respectively */
+      sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+      /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied   
+       * with y[srcBLen - 3], y[srcBLen - 4] respectively */
+      sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* For the next MAC operations, the pointer py is used without SIMD   
+     * So, py is incremented by 1 */
+    py = py + 1u;
+
+    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = blockSize3 % 0x4u;
+
+    while(k > 0u)
+    {
+      /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */
+      sum = __SMLALD(*px++, *py--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+
+    j--;
+  }
+
+  /* The second part of the stage starts here */
+  /* SIMD is not used for the next MAC operations,   
+   * so pointer py is updated to read only one sample at a time */
+  py = py + 1u;
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum +=  x[srcALen-1] * y[srcBLen-1] */
+      sum = __SMLALD(*px++, *py--, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pSrc2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+  q15_t *pIn1 = pSrcA;                           /* input pointer */
+  q15_t *pIn2 = pSrcB;                           /* coefficient pointer */
+  q63_t sum;                                     /* Accumulator */
+  uint32_t i, j;                                 /* loop counter */
+
+  /* Loop to calculate output of convolution for output length number of times */
+  for (i = 0; i < (srcALen + srcBLen - 1); i++)
+  {
+    /* Initialize sum with zero to carry on MAC operations */
+    sum = 0;
+
+    /* Loop to perform MAC operations according to convolution equation */
+    for (j = 0; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if(((i - j) < srcBLen) && (j < srcALen))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += (q31_t) pIn1[j] * (pIn2[i - j]);
+      }
+    }
+
+    /* Store the output in the destination buffer */
+    pDst[i] = (q15_t) __SSAT((sum >> 15u), 16u);
+  }
+
+#endif /*  #if (defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE)*/
+
+}
+
+/**   
+ * @} end of Conv group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,565 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_conv_q31.c    
+*    
+* Description:	Convolution of Q31 sequences.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Conv    
+ * @{    
+ */
+
+/**    
+ * @brief Convolution of Q31 sequences.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * There is no saturation on intermediate additions.    
+ * Thus, if the accumulator overflows it wraps around and distorts the result.    
+ * The input signals should be scaled down to avoid intermediate overflows.    
+ * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows,    
+ * as maximum of min(srcALen, srcBLen) number of additions are carried internally.    
+ * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.    
+ *    
+ * \par    
+ * See <code>arm_conv_fast_q31()</code> for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.    
+ */
+
+void arm_conv_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t *pIn1;                                   /* inputA pointer */
+  q31_t *pIn2;                                   /* inputB pointer */
+  q31_t *pOut = pDst;                            /* output pointer */
+  q31_t *px;                                     /* Intermediate inputA pointer  */
+  q31_t *py;                                     /* Intermediate inputB pointer  */
+  q31_t *pSrc1, *pSrc2;                          /* Intermediate pointers */
+  q63_t sum;                                     /* Accumulator */
+  q63_t acc0, acc1, acc2;                        /* Accumulator */
+  q31_t x0, x1, x2, c0;                          /* Temporary variables to hold state and coefficient values */
+  uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3;     /* loop counter */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (q31_t *) pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = (q31_t *) pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+  /* The function is internally    
+   * divided into three stages according to the number of multiplications that has to be    
+   * taken place between inputA samples and inputB samples. In the first stage of the    
+   * algorithm, the multiplications increase by one for every iteration.    
+   * In the second stage of the algorithm, srcBLen number of multiplications are done.    
+   * In the third stage of the algorithm, the multiplications decrease by one    
+   * for every iteration. */
+
+  /* The algorithm is implemented in three stages.    
+     The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------    
+   * Initializations of stage1    
+   * -------------------------*/
+
+  /* sum = x[0] * y[0]    
+   * sum = x[0] * y[1] + x[1] * y[0]    
+   * ....    
+   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]    
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+
+  /* ------------------------    
+   * Stage1 process    
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 1] */
+      sum += (q63_t) * px++ * (*py--);
+      /* x[1] * y[srcBLen - 2] */
+      sum += (q63_t) * px++ * (*py--);
+      /* x[2] * y[srcBLen - 3] */
+      sum += (q63_t) * px++ * (*py--);
+      /* x[3] * y[srcBLen - 4] */
+      sum += (q63_t) * px++ * (*py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += (q63_t) * px++ * (*py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q31_t) (sum >> 31);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------    
+   * Initializations of stage2    
+   * ------------------------*/
+
+  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]    
+   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]    
+   * ....    
+   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]    
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------    
+   * Stage2 process    
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+   * So, to loop unroll over blockSize2,    
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll by 3 */
+    blkCnt = blockSize2 / 3;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+
+      /* read x[0], x[1], x[2] samples */
+      x0 = *(px++);
+      x1 = *(px++);
+
+      /* Apply loop unrolling and compute 3 MACs simultaneously. */
+      k = srcBLen / 3;
+
+      /* First part of the processing with loop unrolling.  Compute 3 MACs at a time.        
+       ** a second loop below computes MACs for the remaining 1 to 2 samples. */
+      do
+      {
+        /* Read y[srcBLen - 1] sample */
+        c0 = *(py);
+
+        /* Read x[3] sample */
+        x2 = *(px);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[0] * y[srcBLen - 1] */
+        acc0 += ((q63_t) x0 * c0);
+        /* acc1 +=  x[1] * y[srcBLen - 1] */
+        acc1 += ((q63_t) x1 * c0);
+        /* acc2 +=  x[2] * y[srcBLen - 1] */
+        acc2 += ((q63_t) x2 * c0);
+
+        /* Read y[srcBLen - 2] sample */
+        c0 = *(py - 1u);
+
+        /* Read x[4] sample */
+        x0 = *(px + 1u);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[1] * y[srcBLen - 2] */
+        acc0 += ((q63_t) x1 * c0);
+        /* acc1 +=  x[2] * y[srcBLen - 2] */
+        acc1 += ((q63_t) x2 * c0);
+        /* acc2 +=  x[3] * y[srcBLen - 2] */
+        acc2 += ((q63_t) x0 * c0);
+
+        /* Read y[srcBLen - 3] sample */
+        c0 = *(py - 2u);
+
+        /* Read x[5] sample */
+        x1 = *(px + 2u);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[2] * y[srcBLen - 3] */
+        acc0 += ((q63_t) x2 * c0);
+        /* acc1 +=  x[3] * y[srcBLen - 2] */
+        acc1 += ((q63_t) x0 * c0);
+        /* acc2 +=  x[4] * y[srcBLen - 2] */
+        acc2 += ((q63_t) x1 * c0);
+
+        /* update scratch pointers */
+        px += 3u;
+        py -= 3u;
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 3, compute any remaining MACs here.        
+       ** No loop unrolling is used. */
+      k = srcBLen - (3 * (srcBLen / 3));
+
+      while(k > 0u)
+      {
+        /* Read y[srcBLen - 5] sample */
+        c0 = *(py--);
+
+        /* Read x[7] sample */
+        x2 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[4] * y[srcBLen - 5] */
+        acc0 += ((q63_t) x0 * c0);
+        /* acc1 +=  x[5] * y[srcBLen - 5] */
+        acc1 += ((q63_t) x1 * c0);
+        /* acc2 +=  x[6] * y[srcBLen - 5] */
+        acc2 += ((q63_t) x2 * c0);
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the results in the accumulators in the destination buffer. */
+      *pOut++ = (q31_t) (acc0 >> 31);
+      *pOut++ = (q31_t) (acc1 >> 31);
+      *pOut++ = (q31_t) (acc2 >> 31);
+
+      /* Increment the pointer pIn1 index, count by 3 */
+      count += 3u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here.        
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 - 3 * (blockSize2 / 3);
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += (q63_t) * px++ * (*py--);
+        sum += (q63_t) * px++ * (*py--);
+        sum += (q63_t) * px++ * (*py--);
+        sum += (q63_t) * px++ * (*py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += (q63_t) * px++ * (*py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q31_t) (sum >> 31);
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,    
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* srcBLen number of MACS should be performed */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += (q63_t) * px++ * (*py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q31_t) (sum >> 31);
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+
+  /* --------------------------    
+   * Initializations of stage3    
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]    
+   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]    
+   * ....    
+   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]    
+   * sum +=  x[srcALen-1] * y[srcBLen-1]    
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.    
+     The blockSize3 variable holds the number of MAC operations performed */
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* -------------------    
+   * Stage3 process    
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3 >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */
+      sum += (q63_t) * px++ * (*py--);
+      /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */
+      sum += (q63_t) * px++ * (*py--);
+      /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */
+      sum += (q63_t) * px++ * (*py--);
+      /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */
+      sum += (q63_t) * px++ * (*py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = blockSize3 % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += (q63_t) * px++ * (*py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q31_t) (sum >> 31);
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pSrc2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t *pIn1 = pSrcA;                           /* input pointer */
+  q31_t *pIn2 = pSrcB;                           /* coefficient pointer */
+  q63_t sum;                                     /* Accumulator */
+  uint32_t i, j;                                 /* loop counter */
+
+  /* Loop to calculate output of convolution for output length number of times */
+  for (i = 0; i < (srcALen + srcBLen - 1); i++)
+  {
+    /* Initialize sum with zero to carry on MAC operations */
+    sum = 0;
+
+    /* Loop to perform MAC operations according to convolution equation */
+    for (j = 0; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if(((i - j) < srcBLen) && (j < srcALen))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += ((q63_t) pIn1[j] * (pIn2[i - j]));
+      }
+    }
+
+    /* Store the output in the destination buffer */
+    pDst[i] = (q31_t) (sum >> 31u);
+  }
+
+#endif /*     #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of Conv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,690 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_conv_q7.c   
+*   
+* Description:	Convolution of Q7 sequences. 
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup Conv   
+ * @{   
+ */
+
+/**   
+ * @brief Convolution of Q7 sequences.   
+ * @param[in] *pSrcA points to the first input sequence.   
+ * @param[in] srcALen length of the first input sequence.   
+ * @param[in] *pSrcB points to the second input sequence.   
+ * @param[in] srcBLen length of the second input sequence.   
+ * @param[out] *pDst points to the location where the output result is written.  Length srcALen+srcBLen-1.   
+ * @return none.   
+ *   
+ * @details   
+ * <b>Scaling and Overflow Behavior:</b>   
+ *   
+ * \par   
+ * The function is implemented using a 32-bit internal accumulator.   
+ * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result.   
+ * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.   
+ * This approach provides 17 guard bits and there is no risk of overflow as long as <code>max(srcALen, srcBLen)<131072</code>.   
+ * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format.   
+ *
+ * \par    
+ * Refer the function <code>arm_conv_opt_q7()</code> for a faster implementation of this function.
+ * 
+ */
+
+void arm_conv_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q7_t *pIn1;                                    /* inputA pointer */
+  q7_t *pIn2;                                    /* inputB pointer */
+  q7_t *pOut = pDst;                             /* output pointer */
+  q7_t *px;                                      /* Intermediate inputA pointer */
+  q7_t *py;                                      /* Intermediate inputB pointer */
+  q7_t *pSrc1, *pSrc2;                           /* Intermediate pointers */
+  q7_t x0, x1, x2, x3, c0, c1;                   /* Temporary variables to hold state and coefficient values */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulator */
+  q31_t input1, input2;                          /* Temporary input variables */
+  q15_t in1, in2;                                /* Temporary input variables */
+  uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3;     /* loop counter */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+  }
+
+  /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
+  /* The function is internally   
+   * divided into three stages according to the number of multiplications that has to be   
+   * taken place between inputA samples and inputB samples. In the first stage of the   
+   * algorithm, the multiplications increase by one for every iteration.   
+   * In the second stage of the algorithm, srcBLen number of multiplications are done.   
+   * In the third stage of the algorithm, the multiplications decrease by one   
+   * for every iteration. */
+
+  /* The algorithm is implemented in three stages.   
+     The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = (srcALen - srcBLen) + 1u;
+  blockSize3 = blockSize1;
+
+  /* --------------------------   
+   * Initializations of stage1   
+   * -------------------------*/
+
+  /* sum = x[0] * y[0]   
+   * sum = x[0] * y[1] + x[1] * y[0]   
+   * ....   
+   * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0]   
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+
+  /* ------------------------   
+   * Stage1 process   
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] , x[1] */
+      in1 = (q15_t) * px++;
+      in2 = (q15_t) * px++;
+      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+      /* y[srcBLen - 1] , y[srcBLen - 2] */
+      in1 = (q15_t) * py--;
+      in2 = (q15_t) * py--;
+      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+      /* x[0] * y[srcBLen - 1] */
+      /* x[1] * y[srcBLen - 2] */
+      sum = __SMLAD(input1, input2, sum);
+
+      /* x[2] , x[3] */
+      in1 = (q15_t) * px++;
+      in2 = (q15_t) * px++;
+      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+      /* y[srcBLen - 3] , y[srcBLen - 4] */
+      in1 = (q15_t) * py--;
+      in2 = (q15_t) * py--;
+      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+      /* x[2] * y[srcBLen - 3] */
+      /* x[3] * y[srcBLen - 4] */
+      sum = __SMLAD(input1, input2, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum += ((q15_t) * px++ * *py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q7_t) (__SSAT(sum >> 7u, 8));
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pIn2 + count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------   
+   * Initializations of stage2   
+   * ------------------------*/
+
+  /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0]   
+   * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0]   
+   * ....   
+   * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0]   
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------   
+   * Stage2 process   
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* read x[0], x[1], x[2] samples */
+      x0 = *(px++);
+      x1 = *(px++);
+      x2 = *(px++);
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read y[srcBLen - 1] sample */
+        c0 = *(py--);
+        /* Read y[srcBLen - 2] sample */
+        c1 = *(py--);
+
+        /* Read x[3] sample */
+        x3 = *(px++);
+
+        /* x[0] and x[1] are packed */
+        in1 = (q15_t) x0;
+        in2 = (q15_t) x1;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* y[srcBLen - 1]   and y[srcBLen - 2] are packed */
+        in1 = (q15_t) c0;
+        in2 = (q15_t) c1;
+
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2]  */
+        acc0 = __SMLAD(input1, input2, acc0);
+
+        /* x[1] and x[2] are packed */
+        in1 = (q15_t) x1;
+        in2 = (q15_t) x2;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2]  */
+        acc1 = __SMLAD(input1, input2, acc1);
+
+        /* x[2] and x[3] are packed */
+        in1 = (q15_t) x2;
+        in2 = (q15_t) x3;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2]  */
+        acc2 = __SMLAD(input1, input2, acc2);
+
+        /* Read x[4] sample */
+        x0 = *(px++);
+
+        /* x[3] and x[4] are packed */
+        in1 = (q15_t) x3;
+        in2 = (q15_t) x0;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2]  */
+        acc3 = __SMLAD(input1, input2, acc3);
+
+        /* Read y[srcBLen - 3] sample */
+        c0 = *(py--);
+        /* Read y[srcBLen - 4] sample */
+        c1 = *(py--);
+
+        /* Read x[5] sample */
+        x1 = *(px++);
+
+        /* x[2] and x[3] are packed */
+        in1 = (q15_t) x2;
+        in2 = (q15_t) x3;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* y[srcBLen - 3] and y[srcBLen - 4] are packed */
+        in1 = (q15_t) c0;
+        in2 = (q15_t) c1;
+
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4]  */
+        acc0 = __SMLAD(input1, input2, acc0);
+
+        /* x[3] and x[4] are packed */
+        in1 = (q15_t) x3;
+        in2 = (q15_t) x0;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4]  */
+        acc1 = __SMLAD(input1, input2, acc1);
+
+        /* x[4] and x[5] are packed */
+        in1 = (q15_t) x0;
+        in2 = (q15_t) x1;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4]  */
+        acc2 = __SMLAD(input1, input2, acc2);
+
+        /* Read x[6] sample */
+        x2 = *(px++);
+
+        /* x[5] and x[6] are packed */
+        in1 = (q15_t) x1;
+        in2 = (q15_t) x2;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4]  */
+        acc3 = __SMLAD(input1, input2, acc3);
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Read y[srcBLen - 5] sample */
+        c0 = *(py--);
+
+        /* Read x[7] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[4] * y[srcBLen - 5] */
+        acc0 += ((q15_t) x0 * c0);
+        /* acc1 +=  x[5] * y[srcBLen - 5] */
+        acc1 += ((q15_t) x1 * c0);
+        /* acc2 +=  x[6] * y[srcBLen - 5] */
+        acc2 += ((q15_t) x2 * c0);
+        /* acc3 +=  x[7] * y[srcBLen - 5] */
+        acc3 += ((q15_t) x3 * c0);
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+        x2 = x3;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q7_t) (__SSAT(acc0 >> 7u, 8));
+      *pOut++ = (q7_t) (__SSAT(acc1 >> 7u, 8));
+      *pOut++ = (q7_t) (__SSAT(acc2 >> 7u, 8));
+      *pOut++ = (q7_t) (__SSAT(acc3 >> 7u, 8));
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+
+        /* Reading two inputs of SrcA buffer and packing */
+        in1 = (q15_t) * px++;
+        in2 = (q15_t) * px++;
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* Reading two inputs of SrcB buffer and packing */
+        in1 = (q15_t) * py--;
+        in2 = (q15_t) * py--;
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* Perform the multiply-accumulates */
+        sum = __SMLAD(input1, input2, sum);
+
+        /* Reading two inputs of SrcA buffer and packing */
+        in1 = (q15_t) * px++;
+        in2 = (q15_t) * px++;
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* Reading two inputs of SrcB buffer and packing */
+        in1 = (q15_t) * py--;
+        in2 = (q15_t) * py--;
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+        /* Perform the multiply-accumulates */
+        sum = __SMLAD(input1, input2, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q15_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q7_t) (__SSAT(sum >> 7u, 8));
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,   
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* srcBLen number of MACS should be performed */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += ((q15_t) * px++ * *py--);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut++ = (q7_t) (__SSAT(sum >> 7u, 8));
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pSrc2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+
+  /* --------------------------   
+   * Initializations of stage3   
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1]   
+   * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2]   
+   * ....   
+   * sum +=  x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2]   
+   * sum +=  x[srcALen-1] * y[srcBLen-1]   
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.   
+     The blockSize3 variable holds the number of MAC operations performed */
+
+  /* Working pointer of inputA */
+  pSrc1 = pIn1 + (srcALen - (srcBLen - 1u));
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  pSrc2 = pIn2 + (srcBLen - 1u);
+  py = pSrc2;
+
+  /* -------------------   
+   * Stage3 process   
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = blockSize3 >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */
+      in1 = (q15_t) * px++;
+      in2 = (q15_t) * px++;
+      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+      /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */
+      in1 = (q15_t) * py--;
+      in2 = (q15_t) * py--;
+      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+      /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */
+      /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */
+      sum = __SMLAD(input1, input2, sum);
+
+      /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */
+      in1 = (q15_t) * px++;
+      in2 = (q15_t) * px++;
+      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+      /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */
+      in1 = (q15_t) * py--;
+      in2 = (q15_t) * py--;
+      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u);
+
+      /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */
+      /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */
+      sum = __SMLAD(input1, input2, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = blockSize3 % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum += ((q15_t) * px++ * *py--);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut++ = (q7_t) (__SSAT(sum >> 7u, 8));
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pSrc2;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q7_t *pIn1 = pSrcA;                            /* input pointer */
+  q7_t *pIn2 = pSrcB;                            /* coefficient pointer */
+  q31_t sum;                                     /* Accumulator */
+  uint32_t i, j;                                 /* loop counter */
+
+  /* Loop to calculate output of convolution for output length number of times */
+  for (i = 0; i < (srcALen + srcBLen - 1); i++)
+  {
+    /* Initialize sum with zero to carry on MAC operations */
+    sum = 0;
+
+    /* Loop to perform MAC operations according to convolution equation */
+    for (j = 0; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if(((i - j) < srcBLen) && (j < srcALen))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += (q15_t) pIn1[j] * (pIn2[i - j]);
+      }
+    }
+
+    /* Store the output in the destination buffer */
+    pDst[i] = (q7_t) __SSAT((sum >> 7u), 8u);
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY        */
+
+}
+
+/**   
+ * @} end of Conv group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,739 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_correlate_f32.c    
+*    
+* Description:	 Correlation of floating-point sequences.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup Corr Correlation    
+ *    
+ * Correlation is a mathematical operation that is similar to convolution.    
+ * As with convolution, correlation uses two signals to produce a third signal.    
+ * The underlying algorithms in correlation and convolution are identical except that one of the inputs is flipped in convolution.    
+ * Correlation is commonly used to measure the similarity between two signals.    
+ * It has applications in pattern recognition, cryptanalysis, and searching.    
+ * The CMSIS library provides correlation functions for Q7, Q15, Q31 and floating-point data types.    
+ * Fast versions of the Q15 and Q31 functions are also provided.    
+ *    
+ * \par Algorithm    
+ * Let <code>a[n]</code> and <code>b[n]</code> be sequences of length <code>srcALen</code> and <code>srcBLen</code> samples respectively.    
+ * The convolution of the two signals is denoted by    
+ * <pre>    
+ *                   c[n] = a[n] * b[n]    
+ * </pre>    
+ * In correlation, one of the signals is flipped in time    
+ * <pre>    
+ *                   c[n] = a[n] * b[-n]    
+ * </pre>    
+ *    
+ * \par    
+ * and this is mathematically defined as    
+ * \image html CorrelateEquation.gif    
+ * \par    
+ * The <code>pSrcA</code> points to the first input vector of length <code>srcALen</code> and <code>pSrcB</code> points to the second input vector of length <code>srcBLen</code>.    
+ * The result <code>c[n]</code> is of length <code>2 * max(srcALen, srcBLen) - 1</code> and is defined over the interval <code>n=0, 1, 2, ..., (2 * max(srcALen, srcBLen) - 2)</code>.    
+ * The output result is written to <code>pDst</code> and the calling function must allocate <code>2 * max(srcALen, srcBLen) - 1</code> words for the result.    
+ *    
+ * <b>Note</b>   
+ * \par  
+ * The <code>pDst</code> should be initialized to all zeros before being used.  
+ *  
+ * <b>Fixed-Point Behavior</b>    
+ * \par    
+ * Correlation requires summing up a large number of intermediate products.    
+ * As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation.    
+ * Refer to the function specific documentation below for further details of the particular algorithm used.    
+ *
+ *
+ * <b>Fast Versions</b>
+ *
+ * \par 
+ * Fast versions are supported for Q31 and Q15.  Cycles for Fast versions are less compared to Q31 and Q15 of correlate and the design requires
+ * the input signals should be scaled down to avoid intermediate overflows.   
+ *
+ *
+ * <b>Opt Versions</b>
+ *
+ * \par 
+ * Opt versions are supported for Q15 and Q7.  Design uses internal scratch buffer for getting good optimisation.
+ * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions of correlate 
+ */
+
+/**    
+ * @addtogroup Corr    
+ * @{    
+ */
+/**    
+ * @brief Correlation of floating-point sequences.    
+ * @param[in]  *pSrcA points to the first input sequence.    
+ * @param[in]  srcALen length of the first input sequence.    
+ * @param[in]  *pSrcB points to the second input sequence.    
+ * @param[in]  srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.    
+ * @return none.    
+ */
+
+void arm_correlate_f32(
+  float32_t * pSrcA,
+  uint32_t srcALen,
+  float32_t * pSrcB,
+  uint32_t srcBLen,
+  float32_t * pDst)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t *pIn1;                               /* inputA pointer */
+  float32_t *pIn2;                               /* inputB pointer */
+  float32_t *pOut = pDst;                        /* output pointer */
+  float32_t *px;                                 /* Intermediate inputA pointer */
+  float32_t *py;                                 /* Intermediate inputB pointer */
+  float32_t *pSrc1;                              /* Intermediate pointers */
+  float32_t sum, acc0, acc1, acc2, acc3;         /* Accumulators */
+  float32_t x0, x1, x2, x3, c0;                  /* temporary variables for holding input and coefficient values */
+  uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3;  /* loop counters */
+  int32_t inc = 1;                               /* Destination address modifier */
+
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,    
+   * we assume zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,    
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,    
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding has to be done to srcB    
+     * to make their lengths equal.    
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))    
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+    //while(j > 0u)   
+    //{   
+    //  /* Zero is stored in the destination buffer */   
+    //  *pOut++ = 0.0f;   
+
+    //  /* Decrement the loop counter */   
+    //  j--;   
+    //}   
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  /* The function is internally    
+   * divided into three parts according to the number of multiplications that has to be    
+   * taken place between inputA samples and inputB samples. In the first part of the    
+   * algorithm, the multiplications increase by one for every iteration.    
+   * In the second part of the algorithm, srcBLen number of multiplications are done.    
+   * In the third part of the algorithm, the multiplications decrease by one    
+   * for every iteration.*/
+  /* The algorithm is implemented in three stages.    
+   * The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------    
+   * Initializations of stage1    
+   * -------------------------*/
+
+  /* sum = x[0] * y[srcBlen - 1]    
+   * sum = x[0] * y[srcBlen-2] + x[1] * y[srcBlen - 1]    
+   * ....    
+   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]    
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc1 = pIn2 + (srcBLen - 1u);
+  py = pSrc1;
+
+  /* ------------------------    
+   * Stage1 process    
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0.0f;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 4] */
+      sum += *px++ * *py++;
+      /* x[1] * y[srcBLen - 3] */
+      sum += *px++ * *py++;
+      /* x[2] * y[srcBLen - 2] */
+      sum += *px++ * *py++;
+      /* x[3] * y[srcBLen - 1] */
+      sum += *px++ * *py++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      /* x[0] * y[srcBLen - 1] */
+      sum += *px++ * *py++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = sum;
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pSrc1 - count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------    
+   * Initializations of stage2    
+   * ------------------------*/
+
+  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]    
+   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]    
+   * ....    
+   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------    
+   * Stage2 process    
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+   * So, to loop unroll over blockSize2,    
+   * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0.0f;
+      acc1 = 0.0f;
+      acc2 = 0.0f;
+      acc3 = 0.0f;
+
+      /* read x[0], x[1], x[2] samples */
+      x0 = *(px++);
+      x1 = *(px++);
+      x2 = *(px++);
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read y[0] sample */
+        c0 = *(py++);
+
+        /* Read x[3] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[0] * y[0] */
+        acc0 += x0 * c0;
+        /* acc1 +=  x[1] * y[0] */
+        acc1 += x1 * c0;
+        /* acc2 +=  x[2] * y[0] */
+        acc2 += x2 * c0;
+        /* acc3 +=  x[3] * y[0] */
+        acc3 += x3 * c0;
+
+        /* Read y[1] sample */
+        c0 = *(py++);
+
+        /* Read x[4] sample */
+        x0 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[1] * y[1] */
+        acc0 += x1 * c0;
+        /* acc1 +=  x[2] * y[1] */
+        acc1 += x2 * c0;
+        /* acc2 +=  x[3] * y[1] */
+        acc2 += x3 * c0;
+        /* acc3 +=  x[4] * y[1] */
+        acc3 += x0 * c0;
+
+        /* Read y[2] sample */
+        c0 = *(py++);
+
+        /* Read x[5] sample */
+        x1 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[2] * y[2] */
+        acc0 += x2 * c0;
+        /* acc1 +=  x[3] * y[2] */
+        acc1 += x3 * c0;
+        /* acc2 +=  x[4] * y[2] */
+        acc2 += x0 * c0;
+        /* acc3 +=  x[5] * y[2] */
+        acc3 += x1 * c0;
+
+        /* Read y[3] sample */
+        c0 = *(py++);
+
+        /* Read x[6] sample */
+        x2 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[3] * y[3] */
+        acc0 += x3 * c0;
+        /* acc1 +=  x[4] * y[3] */
+        acc1 += x0 * c0;
+        /* acc2 +=  x[5] * y[3] */
+        acc2 += x1 * c0;
+        /* acc3 +=  x[6] * y[3] */
+        acc3 += x2 * c0;
+
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Read y[4] sample */
+        c0 = *(py++);
+
+        /* Read x[7] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[4] * y[4] */
+        acc0 += x0 * c0;
+        /* acc1 +=  x[5] * y[4] */
+        acc1 += x1 * c0;
+        /* acc2 +=  x[6] * y[4] */
+        acc2 += x2 * c0;
+        /* acc3 +=  x[7] * y[4] */
+        acc3 += x3 * c0;
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+        x2 = x3;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = acc0;
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      *pOut = acc1;
+      pOut += inc;
+
+      *pOut = acc2;
+      pOut += inc;
+
+      *pOut = acc3;
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0.0f;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += *px++ * *py++;
+        sum += *px++ * *py++;
+        sum += *px++ * *py++;
+        sum += *px++ * *py++;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += *px++ * *py++;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = sum;
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,    
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0.0f;
+
+      /* Loop over srcBLen */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += *px++ * *py++;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = sum;
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+  /* --------------------------    
+   * Initializations of stage3    
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   * ....    
+   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]    
+   * sum +=  x[srcALen-1] * y[0]    
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = srcBLen - 1u;
+
+  /* Working pointer of inputA */
+  pSrc1 = pIn1 + (srcALen - (srcBLen - 1u));
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* -------------------    
+   * Stage3 process    
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0.0f;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum += x[srcALen - srcBLen + 4] * y[3] */
+      sum += *px++ * *py++;
+      /* sum += x[srcALen - srcBLen + 3] * y[2] */
+      sum += *px++ * *py++;
+      /* sum += x[srcALen - srcBLen + 2] * y[1] */
+      sum += *px++ * *py++;
+      /* sum += x[srcALen - srcBLen + 1] * y[0] */
+      sum += *px++ * *py++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum += *px++ * *py++;
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = sum;
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the MAC count */
+    count--;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  float32_t *pIn1 = pSrcA;                       /* inputA pointer */
+  float32_t *pIn2 = pSrcB + (srcBLen - 1u);      /* inputB pointer */
+  float32_t sum;                                 /* Accumulator */
+  uint32_t i = 0u, j;                            /* loop counters */
+  uint32_t inv = 0u;                             /* Reverse order flag */
+  uint32_t tot = 0u;                             /* Length */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and a varaible, inv is set to 1 */
+  /* If lengths are not equal then zero pad has to be done to  make the two    
+   * inputs of same length. But to improve the performance, we assume zeroes    
+   * in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the    
+   * starting of the output buffer */
+  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the   
+   * ending of the output buffer */
+  /* Once the zero padding is done the remaining of the output is calcualted   
+   * using convolution but with the shorter signal time shifted. */
+
+  /* Calculate the length of the remaining sequence */
+  tot = ((srcALen + srcBLen) - 2u);
+
+  if(srcALen > srcBLen)
+  {
+    /* Calculating the number of zeros to be padded to the output */
+    j = srcALen - srcBLen;
+
+    /* Initialise the pointer after zero padding */
+    pDst += j;
+  }
+
+  else if(srcALen < srcBLen)
+  {
+    /* Initialization to inputB pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization to the end of inputA pointer */
+    pIn2 = pSrcA + (srcALen - 1u);
+
+    /* Initialisation of the pointer after zero padding */
+    pDst = pDst + tot;
+
+    /* Swapping the lengths */
+    j = srcALen;
+    srcALen = srcBLen;
+    srcBLen = j;
+
+    /* Setting the reverse flag */
+    inv = 1;
+
+  }
+
+  /* Loop to calculate convolution for output length number of times */
+  for (i = 0u; i <= tot; i++)
+  {
+    /* Initialize sum with zero to carry on MAC operations */
+    sum = 0.0f;
+
+    /* Loop to perform MAC operations according to convolution equation */
+    for (j = 0u; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if((((i - j) < srcBLen) && (j < srcALen)))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += pIn1[j] * pIn2[-((int32_t) i - j)];
+      }
+    }
+    /* Store the output in the destination buffer */
+    if(inv == 1)
+      *pDst-- = sum;
+    else
+      *pDst++ = sum;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of Corr group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,512 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_correlate_fast_opt_q15.c    
+*    
+* Description:	Fast Q15 Correlation.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Corr    
+ * @{    
+ */
+
+/**    
+ * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.    
+ * @param[in]  *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.   
+ * @return none.    
+ *    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, scratch buffers should be aligned by 32-bit    
+ *    
+ *     
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * This fast version uses a 32-bit accumulator with 2.30 format.    
+ * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * There is no saturation on intermediate additions.    
+ * Thus, if the accumulator overflows it wraps around and distorts the result.    
+ * The input signals should be scaled down to avoid intermediate overflows.    
+ * Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a    
+ * maximum of min(srcALen, srcBLen) number of additions is carried internally.    
+ * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.    
+ *    
+ * \par    
+ * See <code>arm_correlate_q15()</code> for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.    
+ */
+
+void arm_correlate_fast_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  q15_t * pScratch)
+{
+  q15_t *pIn1;                                   /* inputA pointer               */
+  q15_t *pIn2;                                   /* inputB pointer               */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulators                  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q31_t x1, x2, x3;                              /* temporary variables for holding input and coefficient values */
+  uint32_t j, blkCnt, outBlockSize;              /* loop counter                 */
+  int32_t inc = 1;                               /* Destination address modifier */
+  uint32_t tapCnt;
+  q31_t y1, y2;
+  q15_t *pScr;                                   /* Intermediate pointers        */
+  q15_t *pOut = pDst;                            /* output pointer               */
+#ifdef UNALIGNED_SUPPORT_DISABLE
+
+  q15_t a, b;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,        
+   * we include zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,        
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,        
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB        
+     * to make their lengths equal.        
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))        
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  pScr = pScratch;
+
+  /* Fill (srcBLen - 1u) zeros in scratch buffer */
+  arm_fill_q15(0, pScr, (srcBLen - 1u));
+
+  /* Update temporary scratch pointer */
+  pScr += (srcBLen - 1u);
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Copy (srcALen) samples in scratch buffer */
+  arm_copy_q15(pIn1, pScr, srcALen);
+
+  /* Update pointers */
+  pScr += srcALen;
+
+#else
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  j = srcALen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(j > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr++ = *pIn1++;
+    *pScr++ = *pIn1++;
+    *pScr++ = *pIn1++;
+    *pScr++ = *pIn1++;
+
+    /* Decrement the loop counter */
+    j--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  j = srcALen % 0x4u;
+
+  while(j > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr++ = *pIn1++;
+
+    /* Decrement the loop counter */
+    j--;
+  }
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+  arm_fill_q15(0, pScr, (srcBLen - 1u));
+
+  /* Update pointer */
+  pScr += (srcBLen - 1u);
+
+#else
+
+/* Apply loop unrolling and do 4 Copies simultaneously. */
+  j = (srcBLen - 1u) >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(j > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr++ = 0;
+    *pScr++ = 0;
+    *pScr++ = 0;
+    *pScr++ = 0;
+
+    /* Decrement the loop counter */
+    j--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  j = (srcBLen - 1u) % 0x4u;
+
+  while(j > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr++ = 0;
+
+    /* Decrement the loop counter */
+    j--;
+  }
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+  /* Temporary pointer for scratch2 */
+  py = pIn2;
+
+
+  /* Actual correlation process starts here */
+  blkCnt = (srcALen + srcBLen - 1u) >> 2;
+
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr = pScratch;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Read four samples from scratch1 buffer */
+    x1 = *__SIMD32(pScr)++;
+
+    /* Read next four samples from scratch1 buffer */
+    x2 = *__SIMD32(pScr)++;
+
+    tapCnt = (srcBLen) >> 2u;
+
+    while(tapCnt > 0u)
+    {
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+      /* Read four samples from smaller buffer */
+      y1 = _SIMD32_OFFSET(pIn2);
+      y2 = _SIMD32_OFFSET(pIn2 + 2u);
+
+      acc0 = __SMLAD(x1, y1, acc0);
+
+      acc2 = __SMLAD(x2, y1, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc1 = __SMLADX(x3, y1, acc1);
+
+      x1 = _SIMD32_OFFSET(pScr);
+
+      acc0 = __SMLAD(x2, y2, acc0);
+
+      acc2 = __SMLAD(x1, y2, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y1, acc3);
+
+      acc1 = __SMLADX(x3, y2, acc1);
+
+      x2 = _SIMD32_OFFSET(pScr + 2u);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y2, acc3);
+#else	 
+
+      /* Read four samples from smaller buffer */
+	  a = *pIn2;
+	  b = *(pIn2 + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      y1 = __PKHBT(a, b, 16);
+#else
+      y1 = __PKHBT(b, a, 16);
+#endif
+	  
+	  a = *(pIn2 + 2);
+	  b = *(pIn2 + 3);
+#ifndef ARM_MATH_BIG_ENDIAN
+      y2 = __PKHBT(a, b, 16);
+#else
+      y2 = __PKHBT(b, a, 16);
+#endif				
+
+      acc0 = __SMLAD(x1, y1, acc0);
+
+      acc2 = __SMLAD(x2, y1, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc1 = __SMLADX(x3, y1, acc1);
+
+	  a = *pScr;
+	  b = *(pScr + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(a, b, 16);
+#else
+      x1 = __PKHBT(b, a, 16);
+#endif
+
+      acc0 = __SMLAD(x2, y2, acc0);
+
+      acc2 = __SMLAD(x1, y2, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y1, acc3);
+
+      acc1 = __SMLADX(x3, y2, acc1);
+
+	  a = *(pScr + 2);
+	  b = *(pScr + 3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x2 = __PKHBT(a, b, 16);
+#else
+      x2 = __PKHBT(b, a, 16);
+#endif
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y2, acc3);
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+      pIn2 += 4u;
+
+      pScr += 4u;
+
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+
+
+    /* Update scratch pointer for remaining samples of smaller length sequence */
+    pScr -= 4u;
+
+
+    /* apply same above for remaining samples of smaller length sequence */
+    tapCnt = (srcBLen) & 3u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr++ * *pIn2);
+      acc1 += (*pScr++ * *pIn2);
+      acc2 += (*pScr++ * *pIn2);
+      acc3 += (*pScr++ * *pIn2++);
+
+      pScr -= 3u;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+
+    /* Store the results in the accumulators in the destination buffer. */
+    *pOut = (__SSAT(acc0 >> 15u, 16));
+    pOut += inc;
+    *pOut = (__SSAT(acc1 >> 15u, 16));
+    pOut += inc;
+    *pOut = (__SSAT(acc2 >> 15u, 16));
+    pOut += inc;
+    *pOut = (__SSAT(acc3 >> 15u, 16));
+    pOut += inc;
+
+
+    /* Initialization of inputB pointer */
+    pIn2 = py;
+
+    pScratch += 4u;
+
+  }
+
+
+  blkCnt = (srcALen + srcBLen - 1u) & 0x3;
+
+  /* Calculate correlation for remaining samples of Bigger length sequence */
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr = pScratch;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+
+    tapCnt = (srcBLen) >> 1u;
+
+    while(tapCnt > 0u)
+    {
+
+      acc0 += (*pScr++ * *pIn2++);
+      acc0 += (*pScr++ * *pIn2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    tapCnt = (srcBLen) & 1u;
+
+    /* apply same above for remaining samples of smaller length sequence */
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr++ * *pIn2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+    /* Store the result in the accumulator in the destination buffer. */
+
+    *pOut = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+    pOut += inc;
+
+    /* Initialization of inputB pointer */
+    pIn2 = py;
+
+    pScratch += 1u;
+
+  }
+}
+
+/**    
+ * @} end of Corr group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1319 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_correlate_fast_q15.c   
+*   
+* Description:	Fast Q15 Correlation.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup Corr   
+ * @{   
+ */
+
+/**   
+ * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.   
+ * @param[in] *pSrcA points to the first input sequence.   
+ * @param[in] srcALen length of the first input sequence.   
+ * @param[in] *pSrcB points to the second input sequence.   
+ * @param[in] srcBLen length of the second input sequence.   
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.   
+ * @return none.   
+ *   
+ * <b>Scaling and Overflow Behavior:</b>   
+ *   
+ * \par   
+ * This fast version uses a 32-bit accumulator with 2.30 format.   
+ * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.   
+ * There is no saturation on intermediate additions.   
+ * Thus, if the accumulator overflows it wraps around and distorts the result.   
+ * The input signals should be scaled down to avoid intermediate overflows.   
+ * Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a   
+ * maximum of min(srcALen, srcBLen) number of additions is carried internally.   
+ * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.   
+ *   
+ * \par   
+ * See <code>arm_correlate_q15()</code> for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.   
+ */
+
+void arm_correlate_fast_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst)
+{
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  q15_t *pIn1;                                   /* inputA pointer               */
+  q15_t *pIn2;                                   /* inputB pointer               */
+  q15_t *pOut = pDst;                            /* output pointer               */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators                  */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1;                                  /* Intermediate pointers        */
+  q31_t x0, x1, x2, x3, c0;                      /* temporary variables for holding input and coefficient values */
+  uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3;  /* loop counter                 */
+  int32_t inc = 1;                               /* Destination address modifier */
+
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,   
+   * we include zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,   
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,   
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB   
+     * to make their lengths equal.   
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))   
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  /* The function is internally   
+   * divided into three parts according to the number of multiplications that has to be   
+   * taken place between inputA samples and inputB samples. In the first part of the   
+   * algorithm, the multiplications increase by one for every iteration.   
+   * In the second part of the algorithm, srcBLen number of multiplications are done.   
+   * In the third part of the algorithm, the multiplications decrease by one   
+   * for every iteration.*/
+  /* The algorithm is implemented in three stages.   
+   * The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------   
+   * Initializations of stage1   
+   * -------------------------*/
+
+  /* sum = x[0] * y[srcBlen - 1]   
+   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]   
+   * ....   
+   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]   
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc1 = pIn2 + (srcBLen - 1u);
+  py = pSrc1;
+
+  /* ------------------------   
+   * Stage1 process   
+   * ----------------------*/
+
+  /* The first loop starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */
+      sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum);
+      /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */
+      sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* x[0] * y[srcBLen - 1] */
+      sum = __SMLAD(*px++, *py++, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q15_t) (sum >> 15);
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pSrc1 - count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------   
+   * Initializations of stage2   
+   * ------------------------*/
+
+  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]   
+   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]   
+   * ....   
+   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------   
+   * Stage2 process   
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* read x[0], x[1] samples */
+      x0 = *__SIMD32(px);
+      /* read x[1], x[2] samples */
+      x1 = _SIMD32_OFFSET(px + 1);
+	  px += 2u;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read the first two inputB samples using SIMD:   
+         * y[0] and y[1] */
+        c0 = *__SIMD32(py)++;
+
+        /* acc0 +=  x[0] * y[0] + x[1] * y[1] */
+        acc0 = __SMLAD(x0, c0, acc0);
+
+        /* acc1 +=  x[1] * y[0] + x[2] * y[1] */
+        acc1 = __SMLAD(x1, c0, acc1);
+
+        /* Read x[2], x[3] */
+        x2 = *__SIMD32(px);
+
+        /* Read x[3], x[4] */
+        x3 = _SIMD32_OFFSET(px + 1);
+
+        /* acc2 +=  x[2] * y[0] + x[3] * y[1] */
+        acc2 = __SMLAD(x2, c0, acc2);
+
+        /* acc3 +=  x[3] * y[0] + x[4] * y[1] */
+        acc3 = __SMLAD(x3, c0, acc3);
+
+        /* Read y[2] and y[3] */
+        c0 = *__SIMD32(py)++;
+
+        /* acc0 +=  x[2] * y[2] + x[3] * y[3] */
+        acc0 = __SMLAD(x2, c0, acc0);
+
+        /* acc1 +=  x[3] * y[2] + x[4] * y[3] */
+        acc1 = __SMLAD(x3, c0, acc1);
+
+        /* Read x[4], x[5] */
+        x0 = _SIMD32_OFFSET(px + 2);
+
+        /* Read x[5], x[6] */
+        x1 = _SIMD32_OFFSET(px + 3);
+		px += 4u;
+
+        /* acc2 +=  x[4] * y[2] + x[5] * y[3] */
+        acc2 = __SMLAD(x0, c0, acc2);
+
+        /* acc3 +=  x[5] * y[2] + x[6] * y[3] */
+        acc3 = __SMLAD(x1, c0, acc3);
+
+      } while(--k);
+
+      /* For the next MAC operations, SIMD is not used   
+       * So, the 16 bit pointer if inputB, py is updated */
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      if(k == 1u)
+      {
+        /* Read y[4] */
+        c0 = *py;
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[7] */
+        x3 = *__SIMD32(px);
+		px++;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLADX(x1, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      if(k == 2u)
+      {
+        /* Read y[4], y[5] */
+        c0 = *__SIMD32(py);
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px + 1);
+		px += 2u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLAD(x3, c0, acc2);
+        acc3 = __SMLAD(x2, c0, acc3);
+      }
+
+      if(k == 3u)
+      {
+        /* Read y[4], y[5] */
+        c0 = *__SIMD32(py)++;
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px + 1);
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLAD(x3, c0, acc2);
+        acc3 = __SMLAD(x2, c0, acc3);
+
+        c0 = (*py);
+        /* Read y[6] */
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[10] */
+        x3 = _SIMD32_OFFSET(px + 2);
+		px += 3u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x1, c0, acc0);
+        acc1 = __SMLAD(x2, c0, acc1);
+        acc2 = __SMLADX(x2, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (acc0 >> 15);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      *pOut = (q15_t) (acc1 >> 15);
+      pOut += inc;
+
+      *pOut = (q15_t) (acc2 >> 15);
+      pOut += inc;
+
+      *pOut = (q15_t) (acc3 >> 15);
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (sum >> 15);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,   
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over srcBLen */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += ((q31_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (sum >> 15);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+  /* --------------------------   
+   * Initializations of stage3   
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   * ....   
+   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]   
+   * sum +=  x[srcALen-1] * y[0]   
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = srcBLen - 1u;
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* -------------------   
+   * Stage3 process   
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */
+      sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum);
+      /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */
+      sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum = __SMLAD(*px++, *py++, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q15_t) (sum >> 15);
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the MAC count */
+    count--;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+  q15_t *pIn1;                                   /* inputA pointer               */
+  q15_t *pIn2;                                   /* inputB pointer               */
+  q15_t *pOut = pDst;                            /* output pointer               */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators                  */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1;                                  /* Intermediate pointers        */
+  q31_t x0, x1, x2, x3, c0;                      /* temporary variables for holding input and coefficient values */
+  uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3;  /* loop counter                 */
+  int32_t inc = 1;                               /* Destination address modifier */
+  q15_t a, b;
+
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,   
+   * we include zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,   
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,   
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB   
+     * to make their lengths equal.   
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))   
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  /* The function is internally   
+   * divided into three parts according to the number of multiplications that has to be   
+   * taken place between inputA samples and inputB samples. In the first part of the   
+   * algorithm, the multiplications increase by one for every iteration.   
+   * In the second part of the algorithm, srcBLen number of multiplications are done.   
+   * In the third part of the algorithm, the multiplications decrease by one   
+   * for every iteration.*/
+  /* The algorithm is implemented in three stages.   
+   * The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------   
+   * Initializations of stage1   
+   * -------------------------*/
+
+  /* sum = x[0] * y[srcBlen - 1]   
+   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]   
+   * ....   
+   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]   
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc1 = pIn2 + (srcBLen - 1u);
+  py = pSrc1;
+
+  /* ------------------------   
+   * Stage1 process   
+   * ----------------------*/
+
+  /* The first loop starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* x[0] * y[srcBLen - 1] */
+        sum += ((q31_t) * px++ * *py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q15_t) (sum >> 15);
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pSrc1 - count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------   
+   * Initializations of stage2   
+   * ------------------------*/
+
+  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]   
+   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]   
+   * ....   
+   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------   
+   * Stage2 process   
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* read x[0], x[1], x[2] samples */
+	  a = *px;
+	  b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+	  x0 = __PKHBT(a, b, 16);
+	  a = *(px + 2);
+	  x1 = __PKHBT(b, a, 16);
+
+#else
+
+	  x0 = __PKHBT(b, a, 16);
+	  a = *(px + 2);
+	  x1 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+	  px += 2u;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read the first two inputB samples using SIMD:   
+         * y[0] and y[1] */
+		  a = *py;
+		  b = *(py + 1);
+	
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+		  c0 = __PKHBT(a, b, 16);
+	
+#else
+	
+		  c0 = __PKHBT(b, a, 16);
+	
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* acc0 +=  x[0] * y[0] + x[1] * y[1] */
+        acc0 = __SMLAD(x0, c0, acc0);
+
+        /* acc1 +=  x[1] * y[0] + x[2] * y[1] */
+        acc1 = __SMLAD(x1, c0, acc1);
+
+        /* Read x[2], x[3], x[4] */
+	  	a = *px;
+	  	b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+	  	x2 = __PKHBT(a, b, 16);
+	  	a = *(px + 2);
+	  	x3 = __PKHBT(b, a, 16);
+
+#else
+
+	  	x2 = __PKHBT(b, a, 16);
+	  	a = *(px + 2);
+	  	x3 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* acc2 +=  x[2] * y[0] + x[3] * y[1] */
+        acc2 = __SMLAD(x2, c0, acc2);
+
+        /* acc3 +=  x[3] * y[0] + x[4] * y[1] */
+        acc3 = __SMLAD(x3, c0, acc3);
+
+        /* Read y[2] and y[3] */
+		  a = *(py + 2);
+		  b = *(py + 3);
+
+		  py += 4u;
+	
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+		  c0 = __PKHBT(a, b, 16);
+	
+#else
+	
+		  c0 = __PKHBT(b, a, 16);
+	
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* acc0 +=  x[2] * y[2] + x[3] * y[3] */
+        acc0 = __SMLAD(x2, c0, acc0);
+
+        /* acc1 +=  x[3] * y[2] + x[4] * y[3] */
+        acc1 = __SMLAD(x3, c0, acc1);
+
+        /* Read x[4], x[5], x[6] */
+	  	a = *(px + 2);
+	  	b = *(px + 3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+	  	x0 = __PKHBT(a, b, 16);
+	  	a = *(px + 4);
+	  	x1 = __PKHBT(b, a, 16);
+
+#else
+
+	  	x0 = __PKHBT(b, a, 16);
+	  	a = *(px + 4);
+	  	x1 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+		px += 4u;
+
+        /* acc2 +=  x[4] * y[2] + x[5] * y[3] */
+        acc2 = __SMLAD(x0, c0, acc2);
+
+        /* acc3 +=  x[5] * y[2] + x[6] * y[3] */
+        acc3 = __SMLAD(x1, c0, acc3);
+
+      } while(--k);
+
+      /* For the next MAC operations, SIMD is not used   
+       * So, the 16 bit pointer if inputB, py is updated */
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      if(k == 1u)
+      {
+        /* Read y[4] */
+        c0 = *py;
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[7] */
+		a = *px;
+		b = *(px + 1);
+
+		px++;;
+	
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+		x3 = __PKHBT(a, b, 16);
+	
+#else
+	
+		x3 = __PKHBT(b, a, 16);
+	
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+		px++;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLADX(x1, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      if(k == 2u)
+      {
+        /* Read y[4], y[5] */
+		  a = *py;
+		  b = *(py + 1);
+	
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+		  c0 = __PKHBT(a, b, 16);
+	
+#else
+	
+		  c0 = __PKHBT(b, a, 16);
+	
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* Read x[7], x[8], x[9] */
+	  	a = *px;
+	  	b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+	  	x3 = __PKHBT(a, b, 16);
+	  	a = *(px + 2);
+	  	x2 = __PKHBT(b, a, 16);
+
+#else
+
+	  	x3 = __PKHBT(b, a, 16);
+	  	a = *(px + 2);
+	  	x2 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+		px += 2u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLAD(x3, c0, acc2);
+        acc3 = __SMLAD(x2, c0, acc3);
+      }
+
+      if(k == 3u)
+      {
+        /* Read y[4], y[5] */
+		  a = *py;
+		  b = *(py + 1);
+	
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+		  c0 = __PKHBT(a, b, 16);
+	
+#else
+	
+		  c0 = __PKHBT(b, a, 16);
+	
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+		py += 2u;
+
+        /* Read x[7], x[8], x[9] */
+	  	a = *px;
+	  	b = *(px + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+	  	x3 = __PKHBT(a, b, 16);
+	  	a = *(px + 2);
+	  	x2 = __PKHBT(b, a, 16);
+
+#else
+
+	  	x3 = __PKHBT(b, a, 16);
+	  	a = *(px + 2);
+	  	x2 = __PKHBT(a, b, 16);
+
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLAD(x0, c0, acc0);
+        acc1 = __SMLAD(x1, c0, acc1);
+        acc2 = __SMLAD(x3, c0, acc2);
+        acc3 = __SMLAD(x2, c0, acc3);
+
+        c0 = (*py);
+        /* Read y[6] */
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+
+        /* Read x[10] */
+		b = *(px + 3);
+	
+#ifndef ARM_MATH_BIG_ENDIAN
+	
+		x3 = __PKHBT(a, b, 16);
+	
+#else
+	
+		x3 = __PKHBT(b, a, 16);
+	
+#endif	/*	#ifndef ARM_MATH_BIG_ENDIAN	*/
+
+		px += 3u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLADX(x1, c0, acc0);
+        acc1 = __SMLAD(x2, c0, acc1);
+        acc2 = __SMLADX(x2, c0, acc2);
+        acc3 = __SMLADX(x3, c0, acc3);
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (acc0 >> 15);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      *pOut = (q15_t) (acc1 >> 15);
+      pOut += inc;
+
+      *pOut = (q15_t) (acc2 >> 15);
+      pOut += inc;
+
+      *pOut = (q15_t) (acc3 >> 15);
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (sum >> 15);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,   
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over srcBLen */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += ((q31_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (sum >> 15);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+  /* --------------------------   
+   * Initializations of stage3   
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   * ....   
+   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]   
+   * sum +=  x[srcALen-1] * y[0]   
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = srcBLen - 1u;
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* -------------------   
+   * Stage3 process   
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+        sum += ((q31_t) * px++ * *py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+        sum += ((q31_t) * px++ * *py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q15_t) (sum >> 15);
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the MAC count */
+    count--;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#endif /*   #ifndef UNALIGNED_SUPPORT_DISABLE */
+
+}
+
+/**   
+ * @} end of Corr group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,612 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_correlate_fast_q31.c    
+*    
+* Description:	Fast Q31 Correlation.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Corr    
+ * @{    
+ */
+
+/**    
+ * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * This function is optimized for speed at the expense of fixed-point precision and overflow protection.    
+ * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.    
+ * These intermediate results are accumulated in a 32-bit register in 2.30 format.    
+ * Finally, the accumulator is saturated and converted to a 1.31 result.    
+ *    
+ * \par    
+ * The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result.    
+ * In order to avoid overflows completely the input signals must be scaled down.    
+ * The input signals should be scaled down to avoid intermediate overflows.    
+ * Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a    
+ * maximum of min(srcALen, srcBLen) number of additions is carried internally.    
+ *    
+ * \par    
+ * See <code>arm_correlate_q31()</code> for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.    
+ */
+
+void arm_correlate_fast_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst)
+{
+  q31_t *pIn1;                                   /* inputA pointer               */
+  q31_t *pIn2;                                   /* inputB pointer               */
+  q31_t *pOut = pDst;                            /* output pointer               */
+  q31_t *px;                                     /* Intermediate inputA pointer  */
+  q31_t *py;                                     /* Intermediate inputB pointer  */
+  q31_t *pSrc1;                                  /* Intermediate pointers        */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators                  */
+  q31_t x0, x1, x2, x3, c0;                      /* temporary variables for holding input and coefficient values */
+  uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3;  /* loop counter                 */
+  int32_t inc = 1;                               /* Destination address modifier */
+
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB    
+     * to make their lengths equal.    
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))    
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  /* The function is internally    
+   * divided into three parts according to the number of multiplications that has to be    
+   * taken place between inputA samples and inputB samples. In the first part of the    
+   * algorithm, the multiplications increase by one for every iteration.    
+   * In the second part of the algorithm, srcBLen number of multiplications are done.    
+   * In the third part of the algorithm, the multiplications decrease by one    
+   * for every iteration.*/
+  /* The algorithm is implemented in three stages.    
+   * The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------    
+   * Initializations of stage1    
+   * -------------------------*/
+
+  /* sum = x[0] * y[srcBlen - 1]    
+   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]    
+   * ....    
+   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]    
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc1 = pIn2 + (srcBLen - 1u);
+  py = pSrc1;
+
+  /* ------------------------    
+   * Stage1 process    
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 4] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+      /* x[1] * y[srcBLen - 3] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+      /* x[2] * y[srcBLen - 2] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+      /* x[3] * y[srcBLen - 1] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* x[0] * y[srcBLen - 1] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = sum << 1;
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pSrc1 - count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------    
+   * Initializations of stage2    
+   * ------------------------*/
+
+  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]    
+   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]    
+   * ....    
+   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------    
+   * Stage2 process    
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+   * So, to loop unroll over blockSize2,    
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* read x[0], x[1], x[2] samples */
+      x0 = *(px++);
+      x1 = *(px++);
+      x2 = *(px++);
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read y[0] sample */
+        c0 = *(py++);
+
+        /* Read x[3] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[0] * y[0] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+        /* acc1 +=  x[1] * y[0] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+        /* acc2 +=  x[2] * y[0] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);
+        /* acc3 +=  x[3] * y[0] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);
+
+        /* Read y[1] sample */
+        c0 = *(py++);
+
+        /* Read x[4] sample */
+        x0 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[1] * y[1] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32);
+        /* acc1 +=  x[2] * y[1] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32);
+        /* acc2 +=  x[3] * y[1] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32);
+        /* acc3 +=  x[4] * y[1] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+        /* Read y[2] sample */
+        c0 = *(py++);
+
+        /* Read x[5] sample */
+        x1 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[2] * y[2] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32);
+        /* acc1 +=  x[3] * y[2] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32);
+        /* acc2 +=  x[4] * y[2] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32);
+        /* acc3 +=  x[5] * y[2] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+        /* Read y[3] sample */
+        c0 = *(py++);
+
+        /* Read x[6] sample */
+        x2 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[3] * y[3] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32);
+        /* acc1 +=  x[4] * y[3] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32);
+        /* acc2 +=  x[5] * y[3] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32);
+        /* acc3 +=  x[6] * y[3] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32);
+
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Read y[4] sample */
+        c0 = *(py++);
+
+        /* Read x[7] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[4] * y[4] */
+        acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+        /* acc1 +=  x[5] * y[4] */
+        acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+        /* acc2 +=  x[6] * y[4] */
+        acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32);
+        /* acc3 +=  x[7] * y[4] */
+        acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32);
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+        x2 = x3;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q31_t) (acc0 << 1);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      *pOut = (q31_t) (acc1 << 1);
+      pOut += inc;
+
+      *pOut = (q31_t) (acc2 << 1);
+      pOut += inc;
+
+      *pOut = (q31_t) (acc3 << 1);
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py++))) >> 32);
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py++))) >> 32);
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py++))) >> 32);
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py++))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py++))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = sum << 1;
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,    
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over srcBLen */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum = (q31_t) ((((q63_t) sum << 32) +
+                        ((q63_t) * px++ * (*py++))) >> 32);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = sum << 1;
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+  /* --------------------------    
+   * Initializations of stage3    
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   * ....    
+   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]    
+   * sum +=  x[srcALen-1] * y[0]    
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = srcBLen - 1u;
+
+  /* Working pointer of inputA */
+  pSrc1 = ((pIn1 + srcALen) - srcBLen) + 1u;
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* -------------------    
+   * Stage3 process    
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum += x[srcALen - srcBLen + 4] * y[3] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+      /* sum += x[srcALen - srcBLen + 3] * y[2] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+      /* sum += x[srcALen - srcBLen + 2] * y[1] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+      /* sum += x[srcALen - srcBLen + 1] * y[0] */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum = (q31_t) ((((q63_t) sum << 32) +
+                      ((q63_t) * px++ * (*py++))) >> 32);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = sum << 1;
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the MAC count */
+    count--;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+}
+
+/**    
+ * @} end of Corr group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,513 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_correlate_opt_q15.c    
+*    
+* Description:	Correlation of Q15 sequences.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Corr    
+ * @{    
+ */
+
+/**    
+ * @brief Correlation of Q15 sequences.  
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.    
+ * @param[in]  *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.    
+ * @return none.    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, scratch buffers should be aligned by 32-bit    
+ *     
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * Both inputs are in 1.15 format and multiplications yield a 2.30 result.    
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.    
+ * This approach provides 33 guard bits and there is no risk of overflow.    
+ * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.    
+ *    
+ * \par    
+ * Refer to <code>arm_correlate_fast_q15()</code> for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.   
+ *  
+ * 
+ */
+
+
+void arm_correlate_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  q15_t * pScratch)
+{
+  q15_t *pIn1;                                   /* inputA pointer               */
+  q15_t *pIn2;                                   /* inputB pointer               */
+  q63_t acc0, acc1, acc2, acc3;                  /* Accumulators                  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q31_t x1, x2, x3;                              /* temporary variables for holding input1 and input2 values */
+  uint32_t j, blkCnt, outBlockSize;              /* loop counter                 */
+  int32_t inc = 1;                               /* output pointer increment     */
+  uint32_t tapCnt;
+  q31_t y1, y2;
+  q15_t *pScr;                                   /* Intermediate pointers        */
+  q15_t *pOut = pDst;                            /* output pointer               */
+#ifdef UNALIGNED_SUPPORT_DISABLE
+
+  q15_t a, b;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,        
+   * we include zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,        
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,        
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB        
+     * to make their lengths equal.        
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))        
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  pScr = pScratch;
+
+  /* Fill (srcBLen - 1u) zeros in scratch buffer */
+  arm_fill_q15(0, pScr, (srcBLen - 1u));
+
+  /* Update temporary scratch pointer */
+  pScr += (srcBLen - 1u);
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Copy (srcALen) samples in scratch buffer */
+  arm_copy_q15(pIn1, pScr, srcALen);
+
+  /* Update pointers */
+  //pIn1 += srcALen;    
+  pScr += srcALen;
+
+#else
+
+  /* Apply loop unrolling and do 4 Copies simultaneously. */
+  j = srcALen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(j > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr++ = *pIn1++;
+    *pScr++ = *pIn1++;
+    *pScr++ = *pIn1++;
+    *pScr++ = *pIn1++;
+
+    /* Decrement the loop counter */
+    j--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  j = srcALen % 0x4u;
+
+  while(j > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr++ = *pIn1++;
+
+    /* Decrement the loop counter */
+    j--;
+  }
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+  arm_fill_q15(0, pScr, (srcBLen - 1u));
+
+  /* Update pointer */
+  pScr += (srcBLen - 1u);
+
+#else
+
+/* Apply loop unrolling and do 4 Copies simultaneously. */
+  j = (srcBLen - 1u) >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(j > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr++ = 0;
+    *pScr++ = 0;
+    *pScr++ = 0;
+    *pScr++ = 0;
+
+    /* Decrement the loop counter */
+    j--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  j = (srcBLen - 1u) % 0x4u;
+
+  while(j > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr++ = 0;
+
+    /* Decrement the loop counter */
+    j--;
+  }
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+  /* Temporary pointer for scratch2 */
+  py = pIn2;
+
+
+  /* Actual correlation process starts here */
+  blkCnt = (srcALen + srcBLen - 1u) >> 2;
+
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr = pScratch;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Read four samples from scratch1 buffer */
+    x1 = *__SIMD32(pScr)++;
+
+    /* Read next four samples from scratch1 buffer */
+    x2 = *__SIMD32(pScr)++;
+
+    tapCnt = (srcBLen) >> 2u;
+
+    while(tapCnt > 0u)
+    {
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+      /* Read four samples from smaller buffer */
+      y1 = _SIMD32_OFFSET(pIn2);
+      y2 = _SIMD32_OFFSET(pIn2 + 2u);
+
+      acc0 = __SMLALD(x1, y1, acc0);
+
+      acc2 = __SMLALD(x2, y1, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc1 = __SMLALDX(x3, y1, acc1);
+
+      x1 = _SIMD32_OFFSET(pScr);
+
+      acc0 = __SMLALD(x2, y2, acc0);
+
+      acc2 = __SMLALD(x1, y2, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLALDX(x3, y1, acc3);
+
+      acc1 = __SMLALDX(x3, y2, acc1);
+
+      x2 = _SIMD32_OFFSET(pScr + 2u);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLALDX(x3, y2, acc3);
+
+#else	 
+
+      /* Read four samples from smaller buffer */
+	  a = *pIn2;
+	  b = *(pIn2 + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      y1 = __PKHBT(a, b, 16);
+#else
+      y1 = __PKHBT(b, a, 16);
+#endif
+	  
+	  a = *(pIn2 + 2);
+	  b = *(pIn2 + 3);
+#ifndef ARM_MATH_BIG_ENDIAN
+      y2 = __PKHBT(a, b, 16);
+#else
+      y2 = __PKHBT(b, a, 16);
+#endif				
+
+      acc0 = __SMLALD(x1, y1, acc0);
+
+      acc2 = __SMLALD(x2, y1, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc1 = __SMLALDX(x3, y1, acc1);
+
+	  a = *pScr;
+	  b = *(pScr + 1);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(a, b, 16);
+#else
+      x1 = __PKHBT(b, a, 16);
+#endif
+
+      acc0 = __SMLALD(x2, y2, acc0);
+
+      acc2 = __SMLALD(x1, y2, acc2);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLALDX(x3, y1, acc3);
+
+      acc1 = __SMLALDX(x3, y2, acc1);
+
+	  a = *(pScr + 2);
+	  b = *(pScr + 3);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x2 = __PKHBT(a, b, 16);
+#else
+      x2 = __PKHBT(b, a, 16);
+#endif
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLALDX(x3, y2, acc3);
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+      pIn2 += 4u;
+
+      pScr += 4u;
+
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+
+
+    /* Update scratch pointer for remaining samples of smaller length sequence */
+    pScr -= 4u;
+
+
+    /* apply same above for remaining samples of smaller length sequence */
+    tapCnt = (srcBLen) & 3u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr++ * *pIn2);
+      acc1 += (*pScr++ * *pIn2);
+      acc2 += (*pScr++ * *pIn2);
+      acc3 += (*pScr++ * *pIn2++);
+
+      pScr -= 3u;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+
+    /* Store the results in the accumulators in the destination buffer. */
+    *pOut = (__SSAT(acc0 >> 15u, 16));
+    pOut += inc;
+    *pOut = (__SSAT(acc1 >> 15u, 16));
+    pOut += inc;
+    *pOut = (__SSAT(acc2 >> 15u, 16));
+    pOut += inc;
+    *pOut = (__SSAT(acc3 >> 15u, 16));
+    pOut += inc;
+
+    /* Initialization of inputB pointer */
+    pIn2 = py;
+
+    pScratch += 4u;
+
+  }
+
+
+  blkCnt = (srcALen + srcBLen - 1u) & 0x3;
+
+  /* Calculate correlation for remaining samples of Bigger length sequence */
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr = pScratch;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+
+    tapCnt = (srcBLen) >> 1u;
+
+    while(tapCnt > 0u)
+    {
+
+      acc0 += (*pScr++ * *pIn2++);
+      acc0 += (*pScr++ * *pIn2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    tapCnt = (srcBLen) & 1u;
+
+    /* apply same above for remaining samples of smaller length sequence */
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr++ * *pIn2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+    pOut += inc;
+
+    /* Initialization of inputB pointer */
+    pIn2 = py;
+
+    pScratch += 1u;
+
+  }
+
+
+}
+
+/**    
+ * @} end of Corr group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,464 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_correlate_opt_q7.c    
+*    
+* Description:	Correlation of Q7 sequences.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Corr    
+ * @{    
+ */
+
+/**    
+ * @brief Correlation of Q7 sequences.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.    
+ * @param[in]  *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.    
+ * @param[in]  *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).    
+ * @return none.    
+ *    
+ *    
+ * \par Restrictions    
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE    
+ *	In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit     
+ *        
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 32-bit internal accumulator.    
+ * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result.    
+ * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.    
+ * This approach provides 17 guard bits and there is no risk of overflow as long as <code>max(srcALen, srcBLen)<131072</code>.    
+ * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format.  
+ *  
+ * 
+ */
+
+
+
+void arm_correlate_opt_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  q15_t * pScratch1,
+  q15_t * pScratch2)
+{
+  q7_t *pOut = pDst;                             /* output pointer                */
+  q15_t *pScr1 = pScratch1;                      /* Temporary pointer for scratch */
+  q15_t *pScr2 = pScratch2;                      /* Temporary pointer for scratch */
+  q7_t *pIn1;                                    /* inputA pointer                */
+  q7_t *pIn2;                                    /* inputB pointer                */
+  q15_t *py;                                     /* Intermediate inputB pointer   */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulators                  */
+  uint32_t j, k = 0u, blkCnt;                    /* loop counter                  */
+  int32_t inc = 1;                               /* output pointer increment          */
+  uint32_t outBlockSize;                         /* loop counter                  */
+  q15_t x4;                                      /* Temporary input variable      */
+  uint32_t tapCnt;                               /* loop counter                  */
+  q31_t x1, x2, x3, y1;                          /* Temporary input variables     */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,        
+   * we include zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,        
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,        
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB        
+     * to make their lengths equal.        
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))        
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+
+  /* Copy (srcBLen) samples in scratch buffer */
+  k = srcBLen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    x4 = (q15_t) * pIn2++;
+    *pScr2++ = x4;
+    x4 = (q15_t) * pIn2++;
+    *pScr2++ = x4;
+    x4 = (q15_t) * pIn2++;
+    *pScr2++ = x4;
+    x4 = (q15_t) * pIn2++;
+    *pScr2++ = x4;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = srcBLen % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    x4 = (q15_t) * pIn2++;
+    *pScr2++ = x4;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* Fill (srcBLen - 1u) zeros in scratch buffer */
+  arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+  /* Update temporary scratch pointer */
+  pScr1 += (srcBLen - 1u);
+
+  /* Copy (srcALen) samples in scratch buffer */
+  k = srcALen >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = srcALen % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    x4 = (q15_t) * pIn1++;
+    *pScr1++ = x4;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  /* Fill (srcBLen - 1u) zeros at end of scratch buffer */
+  arm_fill_q15(0, pScr1, (srcBLen - 1u));
+
+  /* Update pointer */
+  pScr1 += (srcBLen - 1u);
+
+#else
+
+/* Apply loop unrolling and do 4 Copies simultaneously. */
+  k = (srcBLen - 1u) >> 2u;
+
+  /* First part of the processing with loop unrolling copies 4 data points at a time.       
+   ** a second loop below copies for the remaining 1 to 3 samples. */
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner */
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+    *pScr1++ = 0;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+  /* If the count is not a multiple of 4, copy remaining samples here.       
+   ** No loop unrolling is used. */
+  k = (srcBLen - 1u) % 0x4u;
+
+  while(k > 0u)
+  {
+    /* copy second buffer in reversal manner for remaining samples */
+    *pScr1++ = 0;
+
+    /* Decrement the loop counter */
+    k--;
+  }
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+  /* Temporary pointer for second sequence */
+  py = pScratch2;
+
+  /* Initialization of pScr2 pointer */
+  pScr2 = pScratch2;
+
+  /* Actual correlation process starts here */
+  blkCnt = (srcALen + srcBLen - 1u) >> 2;
+
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr1 = pScratch1;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Read two samples from scratch1 buffer */
+    x1 = *__SIMD32(pScr1)++;
+
+    /* Read next two samples from scratch1 buffer */
+    x2 = *__SIMD32(pScr1)++;
+
+    tapCnt = (srcBLen) >> 2u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* Read four samples from smaller buffer */
+      y1 = _SIMD32_OFFSET(pScr2);
+
+      /* multiply and accumlate */
+      acc0 = __SMLAD(x1, y1, acc0);
+      acc2 = __SMLAD(x2, y1, acc2);
+
+      /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      /* multiply and accumlate */
+      acc1 = __SMLADX(x3, y1, acc1);
+
+      /* Read next two samples from scratch1 buffer */
+      x1 = *__SIMD32(pScr1)++;
+
+      /* pack input data */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x1, x2, 0);
+#else
+      x3 = __PKHBT(x2, x1, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y1, acc3);
+
+      /* Read four samples from smaller buffer */
+      y1 = _SIMD32_OFFSET(pScr2 + 2u);
+
+      acc0 = __SMLAD(x2, y1, acc0);
+
+      acc2 = __SMLAD(x1, y1, acc2);
+
+      acc1 = __SMLADX(x3, y1, acc1);
+
+      x2 = *__SIMD32(pScr1)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+      x3 = __PKHBT(x2, x1, 0);
+#else
+      x3 = __PKHBT(x1, x2, 0);
+#endif
+
+      acc3 = __SMLADX(x3, y1, acc3);
+
+      pScr2 += 4u;
+
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+
+
+    /* Update scratch pointer for remaining samples of smaller length sequence */
+    pScr1 -= 4u;
+
+
+    /* apply same above for remaining samples of smaller length sequence */
+    tapCnt = (srcBLen) & 3u;
+
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr1++ * *pScr2);
+      acc1 += (*pScr1++ * *pScr2);
+      acc2 += (*pScr1++ * *pScr2);
+      acc3 += (*pScr1++ * *pScr2++);
+
+      pScr1 -= 3u;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q7_t) (__SSAT(acc0 >> 7u, 8));
+    pOut += inc;
+    *pOut = (q7_t) (__SSAT(acc1 >> 7u, 8));
+    pOut += inc;
+    *pOut = (q7_t) (__SSAT(acc2 >> 7u, 8));
+    pOut += inc;
+    *pOut = (q7_t) (__SSAT(acc3 >> 7u, 8));
+    pOut += inc;
+
+    /* Initialization of inputB pointer */
+    pScr2 = py;
+
+    pScratch1 += 4u;
+
+  }
+
+
+  blkCnt = (srcALen + srcBLen - 1u) & 0x3;
+
+  /* Calculate correlation for remaining samples of Bigger length sequence */
+  while(blkCnt > 0)
+  {
+    /* Initialze temporary scratch pointer as scratch1 */
+    pScr1 = pScratch1;
+
+    /* Clear Accumlators */
+    acc0 = 0;
+
+    tapCnt = (srcBLen) >> 1u;
+
+    while(tapCnt > 0u)
+    {
+      acc0 += (*pScr1++ * *pScr2++);
+      acc0 += (*pScr1++ * *pScr2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    tapCnt = (srcBLen) & 1u;
+
+    /* apply same above for remaining samples of smaller length sequence */
+    while(tapCnt > 0u)
+    {
+
+      /* accumlate the results */
+      acc0 += (*pScr1++ * *pScr2++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    blkCnt--;
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q7_t) (__SSAT(acc0 >> 7u, 8));
+
+    pOut += inc;
+
+    /* Initialization of inputB pointer */
+    pScr2 = py;
+
+    pScratch1 += 1u;
+
+  }
+
+}
+
+/**    
+ * @} end of Corr group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,719 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_correlate_q15.c   
+*   
+* Description:	Correlation of Q15 sequences. 
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup Corr   
+ * @{   
+ */
+
+/**   
+ * @brief Correlation of Q15 sequences. 
+ * @param[in] *pSrcA points to the first input sequence.   
+ * @param[in] srcALen length of the first input sequence.   
+ * @param[in] *pSrcB points to the second input sequence.   
+ * @param[in] srcBLen length of the second input sequence.   
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.   
+ * @return none.   
+ *   
+ * @details   
+ * <b>Scaling and Overflow Behavior:</b>   
+ *   
+ * \par   
+ * The function is implemented using a 64-bit internal accumulator.   
+ * Both inputs are in 1.15 format and multiplications yield a 2.30 result.   
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.   
+ * This approach provides 33 guard bits and there is no risk of overflow.   
+ * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.   
+ *   
+ * \par   
+ * Refer to <code>arm_correlate_fast_q15()</code> for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. 
+ *
+ * \par    
+ * Refer the function <code>arm_correlate_opt_q15()</code> for a faster implementation of this function using scratch buffers.
+ * 
+ */
+
+void arm_correlate_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst)
+{
+
+#if (defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q15_t *pIn1;                                   /* inputA pointer               */
+  q15_t *pIn2;                                   /* inputB pointer               */
+  q15_t *pOut = pDst;                            /* output pointer               */
+  q63_t sum, acc0, acc1, acc2, acc3;             /* Accumulators                  */
+  q15_t *px;                                     /* Intermediate inputA pointer  */
+  q15_t *py;                                     /* Intermediate inputB pointer  */
+  q15_t *pSrc1;                                  /* Intermediate pointers        */
+  q31_t x0, x1, x2, x3, c0;                      /* temporary variables for holding input and coefficient values */
+  uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3;  /* loop counter                 */
+  int32_t inc = 1;                               /* Destination address modifier */
+
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,   
+   * we include zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,   
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,   
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB   
+     * to make their lengths equal.   
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))   
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  /* The function is internally   
+   * divided into three parts according to the number of multiplications that has to be   
+   * taken place between inputA samples and inputB samples. In the first part of the   
+   * algorithm, the multiplications increase by one for every iteration.   
+   * In the second part of the algorithm, srcBLen number of multiplications are done.   
+   * In the third part of the algorithm, the multiplications decrease by one   
+   * for every iteration.*/
+  /* The algorithm is implemented in three stages.   
+   * The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------   
+   * Initializations of stage1   
+   * -------------------------*/
+
+  /* sum = x[0] * y[srcBlen - 1]   
+   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]   
+   * ....   
+   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]   
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc1 = pIn2 + (srcBLen - 1u);
+  py = pSrc1;
+
+  /* ------------------------   
+   * Stage1 process   
+   * ----------------------*/
+
+  /* The first loop starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */
+      sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum);
+      /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */
+      sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* x[0] * y[srcBLen - 1] */
+      sum = __SMLALD(*px++, *py++, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q15_t) (__SSAT((sum >> 15), 16));
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pSrc1 - count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------   
+   * Initializations of stage2   
+   * ------------------------*/
+
+  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]   
+   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]   
+   * ....   
+   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------   
+   * Stage2 process   
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* read x[0], x[1] samples */
+      x0 = *__SIMD32(px);
+      /* read x[1], x[2] samples */
+      x1 = _SIMD32_OFFSET(px + 1);
+	  px += 2u;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read the first two inputB samples using SIMD:   
+         * y[0] and y[1] */
+        c0 = *__SIMD32(py)++;
+
+        /* acc0 +=  x[0] * y[0] + x[1] * y[1] */
+        acc0 = __SMLALD(x0, c0, acc0);
+
+        /* acc1 +=  x[1] * y[0] + x[2] * y[1] */
+        acc1 = __SMLALD(x1, c0, acc1);
+
+        /* Read x[2], x[3] */
+        x2 = *__SIMD32(px);
+
+        /* Read x[3], x[4] */
+        x3 = _SIMD32_OFFSET(px + 1);
+
+        /* acc2 +=  x[2] * y[0] + x[3] * y[1] */
+        acc2 = __SMLALD(x2, c0, acc2);
+
+        /* acc3 +=  x[3] * y[0] + x[4] * y[1] */
+        acc3 = __SMLALD(x3, c0, acc3);
+
+        /* Read y[2] and y[3] */
+        c0 = *__SIMD32(py)++;
+
+        /* acc0 +=  x[2] * y[2] + x[3] * y[3] */
+        acc0 = __SMLALD(x2, c0, acc0);
+
+        /* acc1 +=  x[3] * y[2] + x[4] * y[3] */
+        acc1 = __SMLALD(x3, c0, acc1);
+
+        /* Read x[4], x[5] */
+        x0 = _SIMD32_OFFSET(px + 2);
+
+        /* Read x[5], x[6] */
+        x1 = _SIMD32_OFFSET(px + 3);
+
+		px += 4u;
+
+        /* acc2 +=  x[4] * y[2] + x[5] * y[3] */
+        acc2 = __SMLALD(x0, c0, acc2);
+
+        /* acc3 +=  x[5] * y[2] + x[6] * y[3] */
+        acc3 = __SMLALD(x1, c0, acc3);
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      if(k == 1u)
+      {
+        /* Read y[4] */
+        c0 = *py;
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+
+#else
+
+        c0 = c0 & 0x0000FFFF;
+
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+        /* Read x[7] */
+        x3 = *__SIMD32(px);
+		px++;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALD(x0, c0, acc0);
+        acc1 = __SMLALD(x1, c0, acc1);
+        acc2 = __SMLALDX(x1, c0, acc2);
+        acc3 = __SMLALDX(x3, c0, acc3);
+      }
+
+      if(k == 2u)
+      {
+        /* Read y[4], y[5] */
+        c0 = *__SIMD32(py);
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px + 1);
+		px += 2u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALD(x0, c0, acc0);
+        acc1 = __SMLALD(x1, c0, acc1);
+        acc2 = __SMLALD(x3, c0, acc2);
+        acc3 = __SMLALD(x2, c0, acc3);
+      }
+
+      if(k == 3u)
+      {
+        /* Read y[4], y[5] */
+        c0 = *__SIMD32(py)++;
+
+        /* Read x[7], x[8] */
+        x3 = *__SIMD32(px);
+
+        /* Read x[9] */
+        x2 = _SIMD32_OFFSET(px + 1);
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALD(x0, c0, acc0);
+        acc1 = __SMLALD(x1, c0, acc1);
+        acc2 = __SMLALD(x3, c0, acc2);
+        acc3 = __SMLALD(x2, c0, acc3);
+
+        c0 = (*py);
+
+        /* Read y[6] */
+#ifdef  ARM_MATH_BIG_ENDIAN
+
+        c0 = c0 << 16u;
+#else
+
+        c0 = c0 & 0x0000FFFF;
+#endif /*      #ifdef  ARM_MATH_BIG_ENDIAN     */
+        /* Read x[10] */
+        x3 = _SIMD32_OFFSET(px + 2);
+		px += 3u;
+
+        /* Perform the multiply-accumulates */
+        acc0 = __SMLALDX(x1, c0, acc0);
+        acc1 = __SMLALD(x2, c0, acc1);
+        acc2 = __SMLALDX(x2, c0, acc2);
+        acc3 = __SMLALDX(x3, c0, acc3);
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (__SSAT(acc0 >> 15, 16));
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      *pOut = (q15_t) (__SSAT(acc1 >> 15, 16));
+      pOut += inc;
+
+      *pOut = (q15_t) (__SSAT(acc2 >> 15, 16));
+      pOut += inc;
+
+      *pOut = (q15_t) (__SSAT(acc3 >> 15, 16));
+      pOut += inc;
+
+      /* Increment the count by 4 as 4 output values are computed */
+      count += 4u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q63_t) * px++ * *py++);
+        sum += ((q63_t) * px++ * *py++);
+        sum += ((q63_t) * px++ * *py++);
+        sum += ((q63_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q63_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (__SSAT(sum >> 15, 16));
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment count by 1, as one output value is computed */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,   
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over srcBLen */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += ((q63_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q15_t) (__SSAT(sum >> 15, 16));
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+  /* --------------------------   
+   * Initializations of stage3   
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   * ....   
+   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]   
+   * sum +=  x[srcALen-1] * y[0]   
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = srcBLen - 1u;
+
+  /* Working pointer of inputA */
+  pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u);
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* -------------------   
+   * Stage3 process   
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */
+      sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum);
+      /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */
+      sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum = __SMLALD(*px++, *py++, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q15_t) (__SSAT((sum >> 15), 16));
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the MAC count */
+    count--;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+  q15_t *pIn1 = pSrcA;                           /* inputA pointer               */
+  q15_t *pIn2 = pSrcB + (srcBLen - 1u);          /* inputB pointer               */
+  q63_t sum;                                     /* Accumulators                  */
+  uint32_t i = 0u, j;                            /* loop counters */
+  uint32_t inv = 0u;                             /* Reverse order flag */
+  uint32_t tot = 0u;                             /* Length */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and a varaible, inv is set to 1 */
+  /* If lengths are not equal then zero pad has to be done to  make the two   
+   * inputs of same length. But to improve the performance, we include zeroes   
+   * in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the   
+   * starting of the output buffer */
+  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the  
+   * ending of the output buffer */
+  /* Once the zero padding is done the remaining of the output is calcualted  
+   * using convolution but with the shorter signal time shifted. */
+
+  /* Calculate the length of the remaining sequence */
+  tot = ((srcALen + srcBLen) - 2u);
+
+  if(srcALen > srcBLen)
+  {
+    /* Calculating the number of zeros to be padded to the output */
+    j = srcALen - srcBLen;
+
+    /* Initialise the pointer after zero padding */
+    pDst += j;
+  }
+
+  else if(srcALen < srcBLen)
+  {
+    /* Initialization to inputB pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization to the end of inputA pointer */
+    pIn2 = pSrcA + (srcALen - 1u);
+
+    /* Initialisation of the pointer after zero padding */
+    pDst = pDst + tot;
+
+    /* Swapping the lengths */
+    j = srcALen;
+    srcALen = srcBLen;
+    srcBLen = j;
+
+    /* Setting the reverse flag */
+    inv = 1;
+
+  }
+
+  /* Loop to calculate convolution for output length number of times */
+  for (i = 0u; i <= tot; i++)
+  {
+    /* Initialize sum with zero to carry on MAC operations */
+    sum = 0;
+
+    /* Loop to perform MAC operations according to convolution equation */
+    for (j = 0u; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if((((i - j) < srcBLen) && (j < srcALen)))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]);
+      }
+    }
+    /* Store the output in the destination buffer */
+    if(inv == 1)
+      *pDst-- = (q15_t) __SSAT((sum >> 15u), 16u);
+    else
+      *pDst++ = (q15_t) __SSAT((sum >> 15u), 16u);
+  }
+
+#endif /*#if (defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) */
+
+}
+
+/**   
+ * @} end of Corr group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,665 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_correlate_q31.c    
+*    
+* Description:	Correlation of Q31 sequences.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup Corr    
+ * @{    
+ */
+
+/**    
+ * @brief Correlation of Q31 sequences.    
+ * @param[in] *pSrcA points to the first input sequence.    
+ * @param[in] srcALen length of the first input sequence.    
+ * @param[in] *pSrcB points to the second input sequence.    
+ * @param[in] srcBLen length of the second input sequence.    
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * There is no saturation on intermediate additions.    
+ * Thus, if the accumulator overflows it wraps around and distorts the result.    
+ * The input signals should be scaled down to avoid intermediate overflows.    
+ * Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a    
+ * maximum of min(srcALen, srcBLen) number of additions is carried internally.    
+ * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.    
+ *    
+ * \par    
+ * See <code>arm_correlate_fast_q31()</code> for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.    
+ */
+
+void arm_correlate_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst)
+{
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t *pIn1;                                   /* inputA pointer               */
+  q31_t *pIn2;                                   /* inputB pointer               */
+  q31_t *pOut = pDst;                            /* output pointer               */
+  q31_t *px;                                     /* Intermediate inputA pointer  */
+  q31_t *py;                                     /* Intermediate inputB pointer  */
+  q31_t *pSrc1;                                  /* Intermediate pointers        */
+  q63_t sum, acc0, acc1, acc2;                   /* Accumulators                  */
+  q31_t x0, x1, x2, c0;                          /* temporary variables for holding input and coefficient values */
+  uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3;  /* loop counter                 */
+  int32_t inc = 1;                               /* Destination address modifier */
+
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,    
+   * we include zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,    
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,    
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB    
+     * to make their lengths equal.    
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))    
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  /* The function is internally    
+   * divided into three parts according to the number of multiplications that has to be    
+   * taken place between inputA samples and inputB samples. In the first part of the    
+   * algorithm, the multiplications increase by one for every iteration.    
+   * In the second part of the algorithm, srcBLen number of multiplications are done.    
+   * In the third part of the algorithm, the multiplications decrease by one    
+   * for every iteration.*/
+  /* The algorithm is implemented in three stages.    
+   * The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------    
+   * Initializations of stage1    
+   * -------------------------*/
+
+  /* sum = x[0] * y[srcBlen - 1]    
+   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]    
+   * ....    
+   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]    
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc1 = pIn2 + (srcBLen - 1u);
+  py = pSrc1;
+
+  /* ------------------------    
+   * Stage1 process    
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] * y[srcBLen - 4] */
+      sum += (q63_t) * px++ * (*py++);
+      /* x[1] * y[srcBLen - 3] */
+      sum += (q63_t) * px++ * (*py++);
+      /* x[2] * y[srcBLen - 2] */
+      sum += (q63_t) * px++ * (*py++);
+      /* x[3] * y[srcBLen - 1] */
+      sum += (q63_t) * px++ * (*py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* x[0] * y[srcBLen - 1] */
+      sum += (q63_t) * px++ * (*py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q31_t) (sum >> 31);
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pSrc1 - count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------    
+   * Initializations of stage2    
+   * ------------------------*/
+
+  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]    
+   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]    
+   * ....    
+   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------    
+   * Stage2 process    
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.    
+   * So, to loop unroll over blockSize2,    
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll by 3 */
+    blkCnt = blockSize2 / 3;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+
+      /* read x[0], x[1] samples */
+      x0 = *(px++);
+      x1 = *(px++);
+
+      /* Apply loop unrolling and compute 3 MACs simultaneously. */
+      k = srcBLen / 3;
+
+      /* First part of the processing with loop unrolling.  Compute 3 MACs at a time.        
+       ** a second loop below computes MACs for the remaining 1 to 2 samples. */
+      do
+      {
+        /* Read y[0] sample */
+        c0 = *(py);
+
+        /* Read x[2] sample */
+        x2 = *(px);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[0] * y[0] */
+        acc0 += ((q63_t) x0 * c0);
+        /* acc1 +=  x[1] * y[0] */
+        acc1 += ((q63_t) x1 * c0);
+        /* acc2 +=  x[2] * y[0] */
+        acc2 += ((q63_t) x2 * c0);
+
+        /* Read y[1] sample */
+        c0 = *(py + 1u);
+
+        /* Read x[3] sample */
+        x0 = *(px + 1u);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[1] * y[1] */
+        acc0 += ((q63_t) x1 * c0);
+        /* acc1 +=  x[2] * y[1] */
+        acc1 += ((q63_t) x2 * c0);
+        /* acc2 +=  x[3] * y[1] */
+        acc2 += ((q63_t) x0 * c0);
+
+        /* Read y[2] sample */
+        c0 = *(py + 2u);
+
+        /* Read x[4] sample */
+        x1 = *(px + 2u);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[2] * y[2] */
+        acc0 += ((q63_t) x2 * c0);
+        /* acc1 +=  x[3] * y[2] */
+        acc1 += ((q63_t) x0 * c0);
+        /* acc2 +=  x[4] * y[2] */
+        acc2 += ((q63_t) x1 * c0);
+
+        /* update scratch pointers */
+        px += 3u;
+        py += 3u;
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 3, compute any remaining MACs here.        
+       ** No loop unrolling is used. */
+      k = srcBLen - (3 * (srcBLen / 3));
+
+      while(k > 0u)
+      {
+        /* Read y[4] sample */
+        c0 = *(py++);
+
+        /* Read x[7] sample */
+        x2 = *(px++);
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[4] * y[4] */
+        acc0 += ((q63_t) x0 * c0);
+        /* acc1 +=  x[5] * y[4] */
+        acc1 += ((q63_t) x1 * c0);
+        /* acc2 +=  x[6] * y[4] */
+        acc2 += ((q63_t) x2 * c0);
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q31_t) (acc0 >> 31);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      *pOut = (q31_t) (acc1 >> 31);
+      pOut += inc;
+
+      *pOut = (q31_t) (acc2 >> 31);
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 3 */
+      count += 3u;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here.        
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 - 3 * (blockSize2 / 3);
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += (q63_t) * px++ * (*py++);
+        sum += (q63_t) * px++ * (*py++);
+        sum += (q63_t) * px++ * (*py++);
+        sum += (q63_t) * px++ * (*py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.    
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += (q63_t) * px++ * (*py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q31_t) (sum >> 31);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,    
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over srcBLen */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += (q63_t) * px++ * (*py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q31_t) (sum >> 31);
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+  /* --------------------------    
+   * Initializations of stage3    
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]    
+   * ....    
+   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]    
+   * sum +=  x[srcALen-1] * y[0]    
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.    
+     The count variable holds the number of MAC operations performed */
+  count = srcBLen - 1u;
+
+  /* Working pointer of inputA */
+  pSrc1 = pIn1 + (srcALen - (srcBLen - 1u));
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* -------------------    
+   * Stage3 process    
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.    
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* sum += x[srcALen - srcBLen + 4] * y[3] */
+      sum += (q63_t) * px++ * (*py++);
+      /* sum += x[srcALen - srcBLen + 3] * y[2] */
+      sum += (q63_t) * px++ * (*py++);
+      /* sum += x[srcALen - srcBLen + 2] * y[1] */
+      sum += (q63_t) * px++ * (*py++);
+      /* sum += x[srcALen - srcBLen + 1] * y[0] */
+      sum += (q63_t) * px++ * (*py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.    
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum += (q63_t) * px++ * (*py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q31_t) (sum >> 31);
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the MAC count */
+    count--;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t *pIn1 = pSrcA;                           /* inputA pointer               */
+  q31_t *pIn2 = pSrcB + (srcBLen - 1u);          /* inputB pointer               */
+  q63_t sum;                                     /* Accumulators                  */
+  uint32_t i = 0u, j;                            /* loop counters */
+  uint32_t inv = 0u;                             /* Reverse order flag */
+  uint32_t tot = 0u;                             /* Length */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and a varaible, inv is set to 1 */
+  /* If lengths are not equal then zero pad has to be done to  make the two    
+   * inputs of same length. But to improve the performance, we include zeroes    
+   * in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the    
+   * starting of the output buffer */
+  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the   
+   * ending of the output buffer */
+  /* Once the zero padding is done the remaining of the output is calcualted   
+   * using correlation but with the shorter signal time shifted. */
+
+  /* Calculate the length of the remaining sequence */
+  tot = ((srcALen + srcBLen) - 2u);
+
+  if(srcALen > srcBLen)
+  {
+    /* Calculating the number of zeros to be padded to the output */
+    j = srcALen - srcBLen;
+
+    /* Initialise the pointer after zero padding */
+    pDst += j;
+  }
+
+  else if(srcALen < srcBLen)
+  {
+    /* Initialization to inputB pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization to the end of inputA pointer */
+    pIn2 = pSrcA + (srcALen - 1u);
+
+    /* Initialisation of the pointer after zero padding */
+    pDst = pDst + tot;
+
+    /* Swapping the lengths */
+    j = srcALen;
+    srcALen = srcBLen;
+    srcBLen = j;
+
+    /* Setting the reverse flag */
+    inv = 1;
+
+  }
+
+  /* Loop to calculate correlation for output length number of times */
+  for (i = 0u; i <= tot; i++)
+  {
+    /* Initialize sum with zero to carry on MAC operations */
+    sum = 0;
+
+    /* Loop to perform MAC operations according to correlation equation */
+    for (j = 0u; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if((((i - j) < srcBLen) && (j < srcALen)))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)]);
+      }
+    }
+    /* Store the output in the destination buffer */
+    if(inv == 1)
+      *pDst-- = (q31_t) (sum >> 31u);
+    else
+      *pDst++ = (q31_t) (sum >> 31u);
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of Corr group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,790 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_correlate_q7.c   
+*   
+* Description:	Correlation of Q7 sequences. 
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupFilters   
+ */
+
+/**   
+ * @addtogroup Corr   
+ * @{   
+ */
+
+/**   
+ * @brief Correlation of Q7 sequences.   
+ * @param[in] *pSrcA points to the first input sequence.   
+ * @param[in] srcALen length of the first input sequence.   
+ * @param[in] *pSrcB points to the second input sequence.   
+ * @param[in] srcBLen length of the second input sequence.   
+ * @param[out] *pDst points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.   
+ * @return none.   
+ *   
+ * @details   
+ * <b>Scaling and Overflow Behavior:</b>   
+ *   
+ * \par   
+ * The function is implemented using a 32-bit internal accumulator.   
+ * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result.   
+ * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.   
+ * This approach provides 17 guard bits and there is no risk of overflow as long as <code>max(srcALen, srcBLen)<131072</code>.   
+ * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format.   
+ *
+ * \par    
+ * Refer the function <code>arm_correlate_opt_q7()</code> for a faster implementation of this function.
+ * 
+ */
+
+void arm_correlate_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q7_t *pIn1;                                    /* inputA pointer               */
+  q7_t *pIn2;                                    /* inputB pointer               */
+  q7_t *pOut = pDst;                             /* output pointer               */
+  q7_t *px;                                      /* Intermediate inputA pointer  */
+  q7_t *py;                                      /* Intermediate inputB pointer  */
+  q7_t *pSrc1;                                   /* Intermediate pointers        */
+  q31_t sum, acc0, acc1, acc2, acc3;             /* Accumulators                  */
+  q31_t input1, input2;                          /* temporary variables */
+  q15_t in1, in2;                                /* temporary variables */
+  q7_t x0, x1, x2, x3, c0, c1;                   /* temporary variables for holding input and coefficient values */
+  uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3;  /* loop counter                 */
+  int32_t inc = 1;
+
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,   
+   * we include zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,   
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,   
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if(srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcA);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcB);
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2u * srcALen) - 1u;
+
+    /* When srcALen > srcBLen, zero padding is done to srcB   
+     * to make their lengths equal.   
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))   
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1u));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = (pSrcB);
+
+    /* Initialization of inputB pointer */
+    pIn2 = (pSrcA);
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2u);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+
+  }
+
+  /* The function is internally   
+   * divided into three parts according to the number of multiplications that has to be   
+   * taken place between inputA samples and inputB samples. In the first part of the   
+   * algorithm, the multiplications increase by one for every iteration.   
+   * In the second part of the algorithm, srcBLen number of multiplications are done.   
+   * In the third part of the algorithm, the multiplications decrease by one   
+   * for every iteration.*/
+  /* The algorithm is implemented in three stages.   
+   * The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1u;
+  blockSize2 = srcALen - (srcBLen - 1u);
+  blockSize3 = blockSize1;
+
+  /* --------------------------   
+   * Initializations of stage1   
+   * -------------------------*/
+
+  /* sum = x[0] * y[srcBlen - 1]   
+   * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1]   
+   * ....   
+   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]   
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = 1u;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc1 = pIn2 + (srcBLen - 1u);
+  py = pSrc1;
+
+  /* ------------------------   
+   * Stage1 process   
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while(blockSize1 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[0] , x[1] */
+      in1 = (q15_t) * px++;
+      in2 = (q15_t) * px++;
+      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+      /* y[srcBLen - 4] , y[srcBLen - 3] */
+      in1 = (q15_t) * py++;
+      in2 = (q15_t) * py++;
+      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+      /* x[0] * y[srcBLen - 4] */
+      /* x[1] * y[srcBLen - 3] */
+      sum = __SMLAD(input1, input2, sum);
+
+      /* x[2] , x[3] */
+      in1 = (q15_t) * px++;
+      in2 = (q15_t) * px++;
+      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+      /* y[srcBLen - 2] , y[srcBLen - 1] */
+      in1 = (q15_t) * py++;
+      in2 = (q15_t) * py++;
+      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+      /* x[2] * y[srcBLen - 2] */
+      /* x[3] * y[srcBLen - 1] */
+      sum = __SMLAD(input1, input2, sum);
+
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      /* x[0] * y[srcBLen - 1] */
+      sum += (q31_t) ((q15_t) * px++ * *py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q7_t) (__SSAT(sum >> 7, 8));
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pSrc1 - count;
+    px = pIn1;
+
+    /* Increment the MAC count */
+    count++;
+
+    /* Decrement the loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------   
+   * Initializations of stage2   
+   * ------------------------*/
+
+  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]   
+   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1]   
+   * ....   
+   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0u;
+
+  /* -------------------   
+   * Stage2 process   
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.   
+   * So, to loop unroll over blockSize2,   
+   * srcBLen should be greater than or equal to 4 */
+  if(srcBLen >= 4u)
+  {
+    /* Loop unroll over blockSize2, by 4 */
+    blkCnt = blockSize2 >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0;
+      acc1 = 0;
+      acc2 = 0;
+      acc3 = 0;
+
+      /* read x[0], x[1], x[2] samples */
+      x0 = *px++;
+      x1 = *px++;
+      x2 = *px++;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read y[0] sample */
+        c0 = *py++;
+        /* Read y[1] sample */
+        c1 = *py++;
+
+        /* Read x[3] sample */
+        x3 = *px++;
+
+        /* x[0] and x[1] are packed */
+        in1 = (q15_t) x0;
+        in2 = (q15_t) x1;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* y[0] and y[1] are packed */
+        in1 = (q15_t) c0;
+        in2 = (q15_t) c1;
+
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* acc0 += x[0] * y[0] + x[1] * y[1]  */
+        acc0 = __SMLAD(input1, input2, acc0);
+
+        /* x[1] and x[2] are packed */
+        in1 = (q15_t) x1;
+        in2 = (q15_t) x2;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* acc1 += x[1] * y[0] + x[2] * y[1] */
+        acc1 = __SMLAD(input1, input2, acc1);
+
+        /* x[2] and x[3] are packed */
+        in1 = (q15_t) x2;
+        in2 = (q15_t) x3;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* acc2 += x[2] * y[0] + x[3] * y[1]  */
+        acc2 = __SMLAD(input1, input2, acc2);
+
+        /* Read x[4] sample */
+        x0 = *(px++);
+
+        /* x[3] and x[4] are packed */
+        in1 = (q15_t) x3;
+        in2 = (q15_t) x0;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* acc3 += x[3] * y[0] + x[4] * y[1]  */
+        acc3 = __SMLAD(input1, input2, acc3);
+
+        /* Read y[2] sample */
+        c0 = *py++;
+        /* Read y[3] sample */
+        c1 = *py++;
+
+        /* Read x[5] sample */
+        x1 = *px++;
+
+        /* x[2] and x[3] are packed */
+        in1 = (q15_t) x2;
+        in2 = (q15_t) x3;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* y[2] and y[3] are packed */
+        in1 = (q15_t) c0;
+        in2 = (q15_t) c1;
+
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* acc0 += x[2] * y[2] + x[3] * y[3]  */
+        acc0 = __SMLAD(input1, input2, acc0);
+
+        /* x[3] and x[4] are packed */
+        in1 = (q15_t) x3;
+        in2 = (q15_t) x0;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* acc1 += x[3] * y[2] + x[4] * y[3]  */
+        acc1 = __SMLAD(input1, input2, acc1);
+
+        /* x[4] and x[5] are packed */
+        in1 = (q15_t) x0;
+        in2 = (q15_t) x1;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* acc2 += x[4] * y[2] + x[5] * y[3]  */
+        acc2 = __SMLAD(input1, input2, acc2);
+
+        /* Read x[6] sample */
+        x2 = *px++;
+
+        /* x[5] and x[6] are packed */
+        in1 = (q15_t) x1;
+        in2 = (q15_t) x2;
+
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* acc3 += x[5] * y[2] + x[6] * y[3]  */
+        acc3 = __SMLAD(input1, input2, acc3);
+
+      } while(--k);
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Read y[4] sample */
+        c0 = *py++;
+
+        /* Read x[7] sample */
+        x3 = *px++;
+
+        /* Perform the multiply-accumulates */
+        /* acc0 +=  x[4] * y[4] */
+        acc0 += ((q15_t) x0 * c0);
+        /* acc1 +=  x[5] * y[4] */
+        acc1 += ((q15_t) x1 * c0);
+        /* acc2 +=  x[6] * y[4] */
+        acc2 += ((q15_t) x2 * c0);
+        /* acc3 +=  x[7] * y[4] */
+        acc3 += ((q15_t) x3 * c0);
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+        x2 = x3;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q7_t) (__SSAT(acc0 >> 7, 8));
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      *pOut = (q7_t) (__SSAT(acc1 >> 7, 8));
+      pOut += inc;
+
+      *pOut = (q7_t) (__SSAT(acc2 >> 7, 8));
+      pOut += inc;
+
+      *pOut = (q7_t) (__SSAT(acc3 >> 7, 8));
+      pOut += inc;
+
+	  count += 4u;
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here.   
+     ** No loop unrolling is used. */
+    blkCnt = blockSize2 % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2u;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while(k > 0u)
+      {
+        /* Reading two inputs of SrcA buffer and packing */
+        in1 = (q15_t) * px++;
+        in2 = (q15_t) * px++;
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* Reading two inputs of SrcB buffer and packing */
+        in1 = (q15_t) * py++;
+        in2 = (q15_t) * py++;
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* Perform the multiply-accumulates */
+        sum = __SMLAD(input1, input2, sum);
+
+        /* Reading two inputs of SrcA buffer and packing */
+        in1 = (q15_t) * px++;
+        in2 = (q15_t) * px++;
+        input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* Reading two inputs of SrcB buffer and packing */
+        in1 = (q15_t) * py++;
+        in2 = (q15_t) * py++;
+        input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+        /* Perform the multiply-accumulates */
+        sum = __SMLAD(input1, input2, sum);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.   
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4u;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulates */
+        sum += ((q15_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q7_t) (__SSAT(sum >> 7, 8));
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+	  count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,   
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while(blkCnt > 0u)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0;
+
+      /* Loop over srcBLen */
+      k = srcBLen;
+
+      while(k > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += ((q15_t) * px++ * *py++);
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = (q7_t) (__SSAT(sum >> 7, 8));
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the MAC count */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+  /* --------------------------   
+   * Initializations of stage3   
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]   
+   * ....   
+   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]   
+   * sum +=  x[srcALen-1] * y[0]   
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.   
+     The count variable holds the number of MAC operations performed */
+  count = srcBLen - 1u;
+
+  /* Working pointer of inputA */
+  pSrc1 = pIn1 + (srcALen - (srcBLen - 1u));
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* -------------------   
+   * Stage3 process   
+   * ------------------*/
+
+  while(blockSize3 > 0u)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0;
+
+    /* Apply loop unrolling and compute 4 MACs simultaneously. */
+    k = count >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.   
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while(k > 0u)
+    {
+      /* x[srcALen - srcBLen + 1] , x[srcALen - srcBLen + 2]  */
+      in1 = (q15_t) * px++;
+      in2 = (q15_t) * px++;
+      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+      /* y[0] , y[1] */
+      in1 = (q15_t) * py++;
+      in2 = (q15_t) * py++;
+      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+      /* sum += x[srcALen - srcBLen + 1] * y[0] */
+      /* sum += x[srcALen - srcBLen + 2] * y[1] */
+      sum = __SMLAD(input1, input2, sum);
+
+      /* x[srcALen - srcBLen + 3] , x[srcALen - srcBLen + 4] */
+      in1 = (q15_t) * px++;
+      in2 = (q15_t) * px++;
+      input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+      /* y[2] , y[3] */
+      in1 = (q15_t) * py++;
+      in2 = (q15_t) * py++;
+      input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16);
+
+      /* sum += x[srcALen - srcBLen + 3] * y[2] */
+      /* sum += x[srcALen - srcBLen + 4] * y[3] */
+      sum = __SMLAD(input1, input2, sum);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* If the count is not a multiple of 4, compute any remaining MACs here.   
+     ** No loop unrolling is used. */
+    k = count % 0x4u;
+
+    while(k > 0u)
+    {
+      /* Perform the multiply-accumulates */
+      sum += ((q15_t) * px++ * *py++);
+
+      /* Decrement the loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = (q7_t) (__SSAT(sum >> 7, 8));
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement the MAC count */
+    count--;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+  q7_t *pIn1 = pSrcA;                            /* inputA pointer */
+  q7_t *pIn2 = pSrcB + (srcBLen - 1u);           /* inputB pointer */
+  q31_t sum;                                     /* Accumulator */
+  uint32_t i = 0u, j;                            /* loop counters */
+  uint32_t inv = 0u;                             /* Reverse order flag */
+  uint32_t tot = 0u;                             /* Length */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and a varaible, inv is set to 1 */
+  /* If lengths are not equal then zero pad has to be done to  make the two   
+   * inputs of same length. But to improve the performance, we include zeroes   
+   * in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the   
+   * starting of the output buffer */
+  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the  
+   * ending of the output buffer */
+  /* Once the zero padding is done the remaining of the output is calcualted  
+   * using convolution but with the shorter signal time shifted. */
+
+  /* Calculate the length of the remaining sequence */
+  tot = ((srcALen + srcBLen) - 2u);
+
+  if(srcALen > srcBLen)
+  {
+    /* Calculating the number of zeros to be padded to the output */
+    j = srcALen - srcBLen;
+
+    /* Initialise the pointer after zero padding */
+    pDst += j;
+  }
+
+  else if(srcALen < srcBLen)
+  {
+    /* Initialization to inputB pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization to the end of inputA pointer */
+    pIn2 = pSrcA + (srcALen - 1u);
+
+    /* Initialisation of the pointer after zero padding */
+    pDst = pDst + tot;
+
+    /* Swapping the lengths */
+    j = srcALen;
+    srcALen = srcBLen;
+    srcBLen = j;
+
+    /* Setting the reverse flag */
+    inv = 1;
+
+  }
+
+  /* Loop to calculate convolution for output length number of times */
+  for (i = 0u; i <= tot; i++)
+  {
+    /* Initialize sum with zero to carry on MAC operations */
+    sum = 0;
+
+    /* Loop to perform MAC operations according to convolution equation */
+    for (j = 0u; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if((((i - j) < srcBLen) && (j < srcALen)))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - j)]);
+      }
+    }
+    /* Store the output in the destination buffer */
+    if(inv == 1)
+      *pDst-- = (q7_t) __SSAT((sum >> 7u), 8u);
+    else
+      *pDst++ = (q7_t) __SSAT((sum >> 7u), 8u);
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**   
+ * @} end of Corr group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,524 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_decimate_f32.c    
+*    
+* Description:	FIR decimation for floating-point sequences.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup FIR_decimate Finite Impulse Response (FIR) Decimator    
+ *    
+ * These functions combine an FIR filter together with a decimator.    
+ * They are used in multirate systems for reducing the sample rate of a signal without introducing aliasing distortion.    
+ * Conceptually, the functions are equivalent to the block diagram below:    
+ * \image html FIRDecimator.gif "Components included in the FIR Decimator functions"    
+ * When decimating by a factor of <code>M</code>, the signal should be prefiltered by a lowpass filter with a normalized    
+ * cutoff frequency of <code>1/M</code> in order to prevent aliasing distortion.    
+ * The user of the function is responsible for providing the filter coefficients.    
+ *    
+ * The FIR decimator functions provided in the CMSIS DSP Library combine the FIR filter and the decimator in an efficient manner.    
+ * Instead of calculating all of the FIR filter outputs and discarding <code>M-1</code> out of every <code>M</code>, only the    
+ * samples output by the decimator are computed.    
+ * The functions operate on blocks of input and output data.    
+ * <code>pSrc</code> points to an array of <code>blockSize</code> input values and    
+ * <code>pDst</code> points to an array of <code>blockSize/M</code> output values.    
+ * In order to have an integer number of output samples <code>blockSize</code>    
+ * must always be a multiple of the decimation factor <code>M</code>.    
+ *    
+ * The library provides separate functions for Q15, Q31 and floating-point data types.    
+ *    
+ * \par Algorithm:    
+ * The FIR portion of the algorithm uses the standard form filter:    
+ * <pre>    
+ *    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]    
+ * </pre>    
+ * where, <code>b[n]</code> are the filter coefficients.    
+ * \par   
+ * The <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.    
+ * Coefficients are stored in time reversed order.    
+ * \par    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to a state array of size <code>numTaps + blockSize - 1</code>.    
+ * Samples in the state buffer are stored in the order:    
+ * \par    
+ * <pre>    
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}    
+ * </pre>    
+ * The state variables are updated after each block of data is processed, the coefficients are untouched.    
+ *    
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter.    
+ * Coefficient arrays may be shared among several instances while state variable array should be allocated separately.    
+ * There are separate instance structure declarations for each of the 3 supported data types.    
+ *    
+ * \par Initialization Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.    
+ * - Checks to make sure that the size of the input is a multiple of the decimation factor.    
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * numTaps, pCoeffs, M (decimation factor), pState. Also set all of the values in pState to zero. 
+ *    
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * The code below statically initializes each of the 3 different data type filter instance structures    
+ * <pre>    
+ *arm_fir_decimate_instance_f32 S = {M, numTaps, pCoeffs, pState};    
+ *arm_fir_decimate_instance_q31 S = {M, numTaps, pCoeffs, pState};    
+ *arm_fir_decimate_instance_q15 S = {M, numTaps, pCoeffs, pState};    
+ * </pre>    
+ * where <code>M</code> is the decimation factor; <code>numTaps</code> is the number of filter coefficients in the filter;    
+ * <code>pCoeffs</code> is the address of the coefficient buffer;    
+ * <code>pState</code> is the address of the state buffer.    
+ * Be sure to set the values in the state buffer to zeros when doing static initialization.    
+ *    
+ * \par Fixed-Point Behavior    
+ * Care must be taken when using the fixed-point versions of the FIR decimate filter functions.    
+ * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.    
+ * Refer to the function specific documentation below for usage guidelines.    
+ */
+
+/**    
+ * @addtogroup FIR_decimate    
+ * @{    
+ */
+
+  /**    
+   * @brief Processing function for the floating-point FIR decimator.    
+   * @param[in] *S        points to an instance of the floating-point FIR decimator structure.    
+   * @param[in] *pSrc     points to the block of input data.    
+   * @param[out] *pDst    points to the block of output data.    
+   * @param[in] blockSize number of input samples to process per call.    
+   * @return none.    
+   */
+
+void arm_fir_decimate_f32(
+  const arm_fir_decimate_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t *pState = S->pState;                 /* State pointer */
+  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+  float32_t *pStateCurnt;                        /* Points to the current sample of the state */
+  float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */
+  float32_t sum0;                                /* Accumulator */
+  float32_t x0, c0;                              /* Temporary variables to hold state and coefficient values */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M;  /* Loop counters */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  uint32_t blkCntN4;
+  float32_t *px0, *px1, *px2, *px3;
+  float32_t acc0, acc1, acc2, acc3;
+  float32_t x1, x2, x3;
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize / 4;
+  blkCntN4 = outBlockSize - (4 * blkCnt);
+
+  while(blkCnt > 0u)
+  {
+    /* Copy 4 * decimation factor number of new input samples into the state buffer */
+    i = 4 * S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulators to zero */
+    acc0 = 0.0f;
+    acc1 = 0.0f;
+    acc2 = 0.0f;
+    acc3 = 0.0f;
+
+    /* Initialize state pointer for all the samples */
+    px0 = pState;
+    px1 = pState + S->M;
+    px2 = pState + 2 * S->M;
+    px3 = pState + 3 * S->M;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+
+    while(tapCnt > 0u)
+    {
+      /* Read the b[numTaps-1] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-1] sample for acc0 */
+      x0 = *(px0++);
+      /* Read x[n-numTaps-1] sample for acc1 */
+      x1 = *(px1++);
+      /* Read x[n-numTaps-1] sample for acc2 */
+      x2 = *(px2++);
+      /* Read x[n-numTaps-1] sample for acc3 */
+      x3 = *(px3++);
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+      acc2 += x2 * c0;
+      acc3 += x3 * c0;
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-2] sample for acc0, acc1, acc2, acc3 */
+      x0 = *(px0++);
+      x1 = *(px1++);
+      x2 = *(px2++);
+      x3 = *(px3++);
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+      acc2 += x2 * c0;
+      acc3 += x3 * c0;
+
+      /* Read the b[numTaps-3] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-3] sample acc0, acc1, acc2, acc3 */
+      x0 = *(px0++);
+      x1 = *(px1++);
+      x2 = *(px2++);
+      x3 = *(px3++);
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+      acc2 += x2 * c0;
+      acc3 += x3 * c0;
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-4] sample acc0, acc1, acc2, acc3 */
+      x0 = *(px0++);
+      x1 = *(px1++);
+      x2 = *(px2++);
+      x3 = *(px3++);
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+      acc2 += x2 * c0;
+      acc3 += x3 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *(pb++);
+
+      /* Fetch  state variables for acc0, acc1, acc2, acc3 */
+      x0 = *(px0++);
+      x1 = *(px1++);
+      x2 = *(px2++);
+      x3 = *(px3++);
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+      acc2 += x2 * c0;
+      acc3 += x3 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + 4 * S->M;
+
+    /* The result is in the accumulator, store in the destination buffer. */
+    *pDst++ = acc0;
+    *pDst++ = acc1;
+    *pDst++ = acc2;
+    *pDst++ = acc3;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  while(blkCntN4 > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    sum0 = 0.0f;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the b[numTaps-1] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-1] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-2] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-3] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-3] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-4] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *(pb++);
+
+      /* Fetch 1 state variable */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* The result is in the accumulator, store in the destination buffer. */
+    *pDst++ = sum0;
+
+    /* Decrement the loop counter */
+    blkCntN4--;
+  }
+
+  /* Processing is complete.    
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.    
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = (numTaps - 1u) >> 2;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+  i = (numTaps - 1u) % 0x04u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    sum0 = 0.0f;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor           
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* The result is in the accumulator, store in the destination buffer. */
+    *pDst++ = sum0;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last numTaps - 1 samples to the start of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  /* Copy numTaps number of values */
+  i = (numTaps - 1u);
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY        */
+
+}
+
+/**    
+ * @} end of FIR_decimate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,598 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_decimate_fast_q15.c    
+*    
+* Description:	Fast Q15 FIR Decimator.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_decimate    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.    
+ * @param[in] *S points to an instance of the Q15 FIR decimator structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return none    
+ *    
+ * \par Restrictions   
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE   
+ *	In this case input, output, state buffers should be aligned by 32-bit   
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * This fast version uses a 32-bit accumulator with 2.30 format.    
+ * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around and distorts the result.    
+ * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (log2 is read as log to the base 2).    
+ * The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_fir_decimate_q15()</code> for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.    
+ * Both the slow and the fast versions use the same instance structure.    
+ * Use the function <code>arm_fir_decimate_init_q15()</code> to initialize the filter structure.    
+ */
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+void arm_fir_decimate_fast_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q15_t *px;                                     /* Temporary pointer for state buffer */
+  q15_t *pb;                                     /* Temporary pointer coefficient buffer */
+  q31_t x0, x1, c0, c1;                          /* Temporary variables to hold state and coefficient values */
+  q31_t sum0;                                    /* Accumulators */
+  q31_t acc0, acc1;
+  q15_t *px0, *px1;
+  uint32_t blkCntN3;
+  uint32_t numTaps = S->numTaps;                 /* Number of taps */
+  uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */
+
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize / 2;
+  blkCntN3 = outBlockSize - (2 * blkCnt);
+
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = 2 * S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    acc0 = 0;
+    acc1 = 0;
+
+    /* Initialize state pointer */
+    px0 = pState;
+
+    px1 = pState + S->M;
+
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the Read b[numTaps-1] and b[numTaps-2]  coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */
+      x0 = *__SIMD32(px0)++;
+
+      x1 = *__SIMD32(px1)++;
+
+      /* Perform the multiply-accumulate */
+      acc0 = __SMLAD(x0, c0, acc0);
+
+      acc1 = __SMLAD(x1, c0, acc1);
+
+      /* Read the b[numTaps-3] and b[numTaps-4] coefficient */
+      c0 = *__SIMD32(pb)++;
+
+      /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */
+      x0 = *__SIMD32(px0)++;
+
+      x1 = *__SIMD32(px1)++;
+
+      /* Perform the multiply-accumulate */
+      acc0 = __SMLAD(x0, c0, acc0);
+
+      acc1 = __SMLAD(x1, c0, acc1);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px0++;
+
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 = __SMLAD(x0, c0, acc0);
+      acc1 = __SMLAD(x1, c0, acc1);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M * 2;
+
+    /* Store filter output, smlad returns the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+    *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+
+  while(blkCntN3 > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /*Set sum to zero */
+    sum0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the Read b[numTaps-1] and b[numTaps-2]  coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */
+      x0 = *__SIMD32(px)++;
+
+      /* Read the b[numTaps-3] and b[numTaps-4] coefficient */
+      c1 = *__SIMD32(pb)++;
+
+      /* Perform the multiply-accumulate */
+      sum0 = __SMLAD(x0, c0, sum0);
+
+      /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */
+      x0 = *__SIMD32(px)++;
+
+      /* Perform the multiply-accumulate */
+      sum0 = __SMLAD(x0, c1, sum0);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 = __SMLAD(x0, c0, sum0);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* Store filter output, smlad returns the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));
+
+    /* Decrement the loop counter */
+    blkCntN3--;
+  }
+
+  /* Processing is complete.       
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+  i = (numTaps - 1u) % 0x04u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+}
+
+#else
+
+
+void arm_fir_decimate_fast_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q15_t *px;                                     /* Temporary pointer for state buffer */
+  q15_t *pb;                                     /* Temporary pointer coefficient buffer */
+  q15_t x0, x1, c0;                              /* Temporary variables to hold state and coefficient values */
+  q31_t sum0;                                    /* Accumulators */
+  q31_t acc0, acc1;
+  q15_t *px0, *px1;
+  uint32_t blkCntN3;
+  uint32_t numTaps = S->numTaps;                 /* Number of taps */
+  uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */
+
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize / 2;
+  blkCntN3 = outBlockSize - (2 * blkCnt);
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = 2 * S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    acc0 = 0;
+    acc1 = 0;
+
+    /* Initialize state pointer */
+    px0 = pState;
+
+    px1 = pState + S->M;
+
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the Read b[numTaps-1] coefficients */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-1] for sample 0 and for sample 1 */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-2] for sample 0 and sample 1 */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Read the b[numTaps-3]  coefficients */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-3] for sample 0 and sample 1 */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-4] for sample 0 and sample 1 */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M * 2;
+
+    /* Store filter output, smlad returns the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+
+    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+    *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16));
+
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  while(blkCntN3 > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /*Set sum to zero */
+    sum0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the Read b[numTaps-1] coefficients */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-1] and sample */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-2] and  sample */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-3]  coefficients */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-3] sample */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-4] sample */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* Store filter output, smlad returns the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));
+
+    /* Decrement the loop counter */
+    blkCntN3--;
+  }
+
+  /* Processing is complete.       
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+  i = (numTaps - 1u) % 0x04u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+}
+
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+/**    
+ * @} end of FIR_decimate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,351 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_decimate_fast_q31.c    
+*    
+* Description:	Fast Q31 FIR Decimator.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_decimate    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.    
+ * @param[in] *S points to an instance of the Q31 FIR decimator structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return none    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * This function is optimized for speed at the expense of fixed-point precision and overflow protection.    
+ * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.    
+ * These intermediate results are added to a 2.30 accumulator.    
+ * Finally, the accumulator is saturated and converted to a 1.31 result.    
+ * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result.    
+ * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2).    
+ *    
+ * \par    
+ * Refer to the function <code>arm_fir_decimate_q31()</code> for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision.    
+ * Both the slow and the fast versions use the same instance structure.    
+ * Use the function <code>arm_fir_decimate_init_q31()</code> to initialize the filter structure.    
+ */
+
+void arm_fir_decimate_fast_q31(
+  arm_fir_decimate_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pState = S->pState;                     /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */
+  q31_t *px;                                     /* Temporary pointers for state buffer */
+  q31_t *pb;                                     /* Temporary pointers for coefficient buffer */
+  q31_t sum0;                                    /* Accumulator */
+  uint32_t numTaps = S->numTaps;                 /* Number of taps */
+  uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M;  /* Loop counters */
+  uint32_t blkCntN2;
+  q31_t x1;
+  q31_t acc0, acc1;
+  q31_t *px0, *px1;
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+  /* Total number of output samples to be computed */
+
+  blkCnt = outBlockSize / 2;
+  blkCntN2 = outBlockSize - (2 * blkCnt);
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = 2 * S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    acc0 = 0;
+    acc1 = 0;
+
+    /* Initialize state pointer */
+    px0 = pState;
+    px1 = pState + S->M;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the b[numTaps-1] coefficient */
+      c0 = *(pb);
+
+      /* Read x[n-numTaps-1] for sample 0 sample 1 */
+      x0 = *(px0);
+      x1 = *(px1);
+
+      /* Perform the multiply-accumulate */
+      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *(pb + 1u);
+
+      /* Read x[n-numTaps-2]  for sample 0 sample 1  */
+      x0 = *(px0 + 1u);
+      x1 = *(px1 + 1u);
+
+      /* Perform the multiply-accumulate */
+      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+      /* Read the b[numTaps-3] coefficient */
+      c0 = *(pb + 2u);
+
+      /* Read x[n-numTaps-3]  for sample 0 sample 1 */
+      x0 = *(px0 + 2u);
+      x1 = *(px1 + 2u);
+      pb += 4u;
+
+      /* Perform the multiply-accumulate */
+      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *(pb - 1u);
+
+      /* Read x[n-numTaps-4] for sample 0 sample 1 */
+      x0 = *(px0 + 3u);
+      x1 = *(px1 + 3u);
+
+
+      /* Perform the multiply-accumulate */
+      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+      /* update state pointers */
+      px0 += 4u;
+      px1 += 4u;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *(pb++);
+
+      /* Fetch 1 state variable */
+      x0 = *(px0++);
+      x1 = *(px1++);
+
+      /* Perform the multiply-accumulate */
+      acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32);
+      acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M * 2;
+
+    /* The result is in the accumulator, store in the destination buffer. */
+    *pDst++ = (q31_t) (acc0 << 1);
+    *pDst++ = (q31_t) (acc1 << 1);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  while(blkCntN2 > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    sum0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the b[numTaps-1] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-1] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-2] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+      /* Read the b[numTaps-3] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-3] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-4] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *(pb++);
+
+      /* Fetch 1 state variable */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* The result is in the accumulator, store in the destination buffer. */
+    *pDst++ = (q31_t) (sum0 << 1);
+
+    /* Decrement the loop counter */
+    blkCntN2--;
+  }
+
+  /* Processing is complete.       
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+  i = (numTaps - 1u) % 0x04u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+}
+
+/**    
+ * @} end of FIR_decimate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,117 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_decimate_init_f32.c    
+*    
+* Description:  Floating-point FIR Decimator initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_decimate    
+ * @{    
+ */
+
+/**    
+ * @brief  Initialization function for the floating-point FIR decimator.    
+ * @param[in,out] *S points to an instance of the floating-point FIR decimator structure.    
+ * @param[in] numTaps  number of coefficients in the filter.    
+ * @param[in] M  decimation factor.    
+ * @param[in] *pCoeffs points to the filter coefficients.    
+ * @param[in] *pState points to the state buffer.    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return    The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if    
+ * <code>blockSize</code> is not a multiple of <code>M</code>.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>numTaps+blockSize-1</code> words where <code>blockSize</code> is the number of input samples passed to <code>arm_fir_decimate_f32()</code>.    
+ * <code>M</code> is the decimation factor.    
+ */
+
+arm_status arm_fir_decimate_init_f32(
+  arm_fir_decimate_instance_f32 * S,
+  uint16_t numTaps,
+  uint8_t M,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  uint32_t blockSize)
+{
+  arm_status status;
+
+  /* The size of the input block must be a multiple of the decimation factor */
+  if((blockSize % M) != 0u)
+  {
+    /* Set status as ARM_MATH_LENGTH_ERROR */
+    status = ARM_MATH_LENGTH_ERROR;
+  }
+  else
+  {
+    /* Assign filter taps */
+    S->numTaps = numTaps;
+
+    /* Assign coefficient pointer */
+    S->pCoeffs = pCoeffs;
+
+    /* Clear state buffer and size is always (blockSize + numTaps - 1) */
+    memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(float32_t));
+
+    /* Assign state pointer */
+    S->pState = pState;
+
+    /* Assign Decimation Factor */
+    S->M = M;
+
+    status = ARM_MATH_SUCCESS;
+  }
+
+  return (status);
+
+}
+
+/**    
+ * @} end of FIR_decimate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,119 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_decimate_init_q15.c    
+*    
+* Description:  Initialization function for the Q15 FIR Decimator.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_decimate    
+ * @{    
+ */
+
+/**    
+ * @brief  Initialization function for the Q15 FIR decimator.    
+ * @param[in,out] *S points to an instance of the Q15 FIR decimator structure.    
+ * @param[in] numTaps  number of coefficients in the filter.    
+ * @param[in] M  decimation factor.    
+ * @param[in] *pCoeffs points to the filter coefficients.    
+ * @param[in] *pState points to the state buffer.    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return    The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if    
+ * <code>blockSize</code> is not a multiple of <code>M</code>.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>numTaps+blockSize-1</code> words where <code>blockSize</code> is the number of input samples    
+ * to the call <code>arm_fir_decimate_q15()</code>.    
+ * <code>M</code> is the decimation factor.    
+ */
+
+arm_status arm_fir_decimate_init_q15(
+  arm_fir_decimate_instance_q15 * S,
+  uint16_t numTaps,
+  uint8_t M,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  uint32_t blockSize)
+{
+
+  arm_status status;
+
+  /* The size of the input block must be a multiple of the decimation factor */
+  if((blockSize % M) != 0u)
+  {
+    /* Set status as ARM_MATH_LENGTH_ERROR */
+    status = ARM_MATH_LENGTH_ERROR;
+  }
+  else
+  {
+    /* Assign filter taps */
+    S->numTaps = numTaps;
+
+    /* Assign coefficient pointer */
+    S->pCoeffs = pCoeffs;
+
+    /* Clear the state buffer.  The size of buffer is always (blockSize + numTaps - 1) */
+    memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t));
+
+    /* Assign state pointer */
+    S->pState = pState;
+
+    /* Assign Decimation factor */
+    S->M = M;
+
+    status = ARM_MATH_SUCCESS;
+  }
+
+  return (status);
+
+}
+
+/**    
+ * @} end of FIR_decimate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,117 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_decimate_init_q31.c    
+*    
+* Description:  Initialization function for Q31 FIR Decimation filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_decimate    
+ * @{    
+ */
+
+/**    
+ * @brief  Initialization function for the Q31 FIR decimator.    
+ * @param[in,out] *S points to an instance of the Q31 FIR decimator structure.    
+ * @param[in] numTaps  number of coefficients in the filter.    
+ * @param[in] M  decimation factor.    
+ * @param[in] *pCoeffs points to the filter coefficients.    
+ * @param[in] *pState points to the state buffer.    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return    The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if    
+ * <code>blockSize</code> is not a multiple of <code>M</code>.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>numTaps+blockSize-1</code> words where <code>blockSize</code> is the number of input samples passed to <code>arm_fir_decimate_q31()</code>.    
+ * <code>M</code> is the decimation factor.    
+ */
+
+arm_status arm_fir_decimate_init_q31(
+  arm_fir_decimate_instance_q31 * S,
+  uint16_t numTaps,
+  uint8_t M,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  uint32_t blockSize)
+{
+  arm_status status;
+
+  /* The size of the input block must be a multiple of the decimation factor */
+  if((blockSize % M) != 0u)
+  {
+    /* Set status as ARM_MATH_LENGTH_ERROR */
+    status = ARM_MATH_LENGTH_ERROR;
+  }
+  else
+  {
+    /* Assign filter taps */
+    S->numTaps = numTaps;
+
+    /* Assign coefficient pointer */
+    S->pCoeffs = pCoeffs;
+
+    /* Clear the state buffer.  The size is always (blockSize + numTaps - 1) */
+    memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(q31_t));
+
+    /* Assign state pointer */
+    S->pState = pState;
+
+    /* Assign Decimation factor */
+    S->M = M;
+
+    status = ARM_MATH_SUCCESS;
+  }
+
+  return (status);
+
+}
+
+/**    
+ * @} end of FIR_decimate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,696 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_decimate_q15.c    
+*    
+* Description:	Q15 FIR Decimator.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_decimate    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q15 FIR decimator.    
+ * @param[in] *S points to an instance of the Q15 FIR decimator structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the location where the output result is written.    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.    
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.    
+ * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.    
+ * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.    
+ * Lastly, the accumulator is saturated to yield a result in 1.15 format.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_fir_decimate_fast_q15()</code> for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.    
+ */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+void arm_fir_decimate_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q15_t *px;                                     /* Temporary pointer for state buffer */
+  q15_t *pb;                                     /* Temporary pointer coefficient buffer */
+  q31_t x0, x1, c0, c1;                          /* Temporary variables to hold state and coefficient values */
+  q63_t sum0;                                    /* Accumulators */
+  q63_t acc0, acc1;
+  q15_t *px0, *px1;
+  uint32_t blkCntN3;
+  uint32_t numTaps = S->numTaps;                 /* Number of taps */
+  uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */
+
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize / 2;
+  blkCntN3 = outBlockSize - (2 * blkCnt);
+
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = 2 * S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    acc0 = 0;
+    acc1 = 0;
+
+    /* Initialize state pointer */
+    px0 = pState;
+
+    px1 = pState + S->M;
+
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the Read b[numTaps-1] and b[numTaps-2]  coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */
+      x0 = *__SIMD32(px0)++;
+
+      x1 = *__SIMD32(px1)++;
+
+      /* Perform the multiply-accumulate */
+      acc0 = __SMLALD(x0, c0, acc0);
+
+      acc1 = __SMLALD(x1, c0, acc1);
+
+      /* Read the b[numTaps-3] and b[numTaps-4] coefficient */
+      c0 = *__SIMD32(pb)++;
+
+      /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */
+      x0 = *__SIMD32(px0)++;
+
+      x1 = *__SIMD32(px1)++;
+
+      /* Perform the multiply-accumulate */
+      acc0 = __SMLALD(x0, c0, acc0);
+
+      acc1 = __SMLALD(x1, c0, acc1);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px0++;
+
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 = __SMLALD(x0, c0, acc0);
+      acc1 = __SMLALD(x1, c0, acc1);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M * 2;
+
+    /* Store filter output, smlad returns the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+    *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+
+  while(blkCntN3 > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /*Set sum to zero */
+    sum0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the Read b[numTaps-1] and b[numTaps-2]  coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */
+      x0 = *__SIMD32(px)++;
+
+      /* Read the b[numTaps-3] and b[numTaps-4] coefficient */
+      c1 = *__SIMD32(pb)++;
+
+      /* Perform the multiply-accumulate */
+      sum0 = __SMLALD(x0, c0, sum0);
+
+      /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */
+      x0 = *__SIMD32(px)++;
+
+      /* Perform the multiply-accumulate */
+      sum0 = __SMLALD(x0, c1, sum0);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 = __SMLALD(x0, c0, sum0);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* Store filter output, smlad returns the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));
+
+    /* Decrement the loop counter */
+    blkCntN3--;
+  }
+
+  /* Processing is complete.       
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+  i = (numTaps - 1u) % 0x04u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+}
+
+#else
+
+
+void arm_fir_decimate_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q15_t *px;                                     /* Temporary pointer for state buffer */
+  q15_t *pb;                                     /* Temporary pointer coefficient buffer */
+  q15_t x0, x1, c0;                              /* Temporary variables to hold state and coefficient values */
+  q63_t sum0;                                    /* Accumulators */
+  q63_t acc0, acc1;
+  q15_t *px0, *px1;
+  uint32_t blkCntN3;
+  uint32_t numTaps = S->numTaps;                 /* Number of taps */
+  uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */
+
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize / 2;
+  blkCntN3 = outBlockSize - (2 * blkCnt);
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = 2 * S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    acc0 = 0;
+    acc1 = 0;
+
+    /* Initialize state pointer */
+    px0 = pState;
+
+    px1 = pState + S->M;
+
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the Read b[numTaps-1] coefficients */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-1] for sample 0 and for sample 1 */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-2] for sample 0 and sample 1 */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Read the b[numTaps-3] coefficients */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-3] for sample 0 and sample 1 */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-4] for sample 0 and sample 1 */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px0++;
+      x1 = *px1++;
+
+      /* Perform the multiply-accumulate */
+      acc0 += x0 * c0;
+      acc1 += x1 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M * 2;
+
+    /* Store filter output, smlad returns the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+
+    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+    *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  while(blkCntN3 > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /*Set sum to zero */
+    sum0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the Read b[numTaps-1] coefficients */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-1] and sample */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-2] and  sample */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-3]  coefficients */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-3] sample */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *pb++;
+
+      /* Read x[n-numTaps-4] sample */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += x0 * c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor       
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* Store filter output, smlad returns the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));
+
+    /* Decrement the loop counter */
+    blkCntN3--;
+  }
+
+  /* Processing is complete.       
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+  i = (numTaps - 1u) % 0x04u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+}
+
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+#else
+
+
+void arm_fir_decimate_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q15_t *px;                                     /* Temporary pointer for state buffer */
+  q15_t *pb;                                     /* Temporary pointer coefficient buffer */
+  q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */
+  q63_t sum0;                                    /* Accumulators */
+  uint32_t numTaps = S->numTaps;                 /* Number of taps */
+  uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M;  /* Loop counters */
+
+
+
+/* Run the below code for Cortex-M0 */
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /*Set sum to zero */
+    sum0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += (q31_t) x0 *c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor           
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /*Store filter output , smlad will return the values in 2.14 format */
+    /* so downsacle by 15 to get output in 1.15 */
+    *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last numTaps - 1 samples to the start of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = numTaps - 1u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+
+}
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+
+/**    
+ * @} end of FIR_decimate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,311 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_decimate_q31.c    
+*    
+* Description:	Q31 FIR Decimator.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_decimate    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q31 FIR decimator.    
+ * @param[in] *S points to an instance of the Q31 FIR decimator structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return none    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around rather than clip.    
+ * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2).    
+ * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_fir_decimate_fast_q31()</code> for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.    
+ */
+
+void arm_fir_decimate_q31(
+  const arm_fir_decimate_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pState = S->pState;                     /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */
+  q31_t *px;                                     /* Temporary pointers for state buffer */
+  q31_t *pb;                                     /* Temporary pointers for coefficient buffer */
+  q63_t sum0;                                    /* Accumulator */
+  uint32_t numTaps = S->numTaps;                 /* Number of taps */
+  uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M;  /* Loop counters */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    sum0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.    
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    while(tapCnt > 0u)
+    {
+      /* Read the b[numTaps-1] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-1] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += (q63_t) x0 *c0;
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-2] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += (q63_t) x0 *c0;
+
+      /* Read the b[numTaps-3] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-3] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += (q63_t) x0 *c0;
+
+      /* Read the b[numTaps-4] coefficient */
+      c0 = *(pb++);
+
+      /* Read x[n-numTaps-4] sample */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += (q63_t) x0 *c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *(pb++);
+
+      /* Fetch 1 state variable */
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulate */
+      sum0 += (q63_t) x0 *c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor    
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* The result is in the accumulator, store in the destination buffer. */
+    *pDst++ = (q31_t) (sum0 >> 31);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.    
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.    
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+  i = (numTaps - 1u) % 0x04u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+  /* Total number of output samples to be computed */
+  blkCnt = outBlockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy decimation factor number of new input samples into the state buffer */
+    i = S->M;
+
+    do
+    {
+      *pStateCurnt++ = *pSrc++;
+
+    } while(--i);
+
+    /* Set accumulator to zero */
+    sum0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = pCoeffs;
+
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Read coefficients */
+      c0 = *pb++;
+
+      /* Fetch 1 state variable */
+      x0 = *px++;
+
+      /* Perform the multiply-accumulate */
+      sum0 += (q63_t) x0 *c0;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance the state pointer by the decimation factor           
+     * to process the next group of decimation factor number samples */
+    pState = pState + S->M;
+
+    /* The result is in the accumulator, store in the destination buffer. */
+    *pDst++ = (q31_t) (sum0 >> 31);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last numTaps - 1 samples to the start of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = numTaps - 1u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR_decimate group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,997 @@
+/* ----------------------------------------------------------------------  
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.  
+*  
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*  
+* Project: 	    CMSIS DSP Library  
+* Title:	    arm_fir_f32.c  
+*  
+* Description:	Floating-point FIR filter processing function.  
+*  
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**  
+* @ingroup groupFilters  
+*/
+
+/**  
+* @defgroup FIR Finite Impulse Response (FIR) Filters  
+*  
+* This set of functions implements Finite Impulse Response (FIR) filters  
+* for Q7, Q15, Q31, and floating-point data types.  Fast versions of Q15 and Q31 are also provided.  
+* The functions operate on blocks of input and output data and each call to the function processes  
+* <code>blockSize</code> samples through the filter.  <code>pSrc</code> and  
+* <code>pDst</code> points to input and output arrays containing <code>blockSize</code> values.  
+*  
+* \par Algorithm:  
+* The FIR filter algorithm is based upon a sequence of multiply-accumulate (MAC) operations.  
+* Each filter coefficient <code>b[n]</code> is multiplied by a state variable which equals a previous input sample <code>x[n]</code>.  
+* <pre>  
+*    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]  
+* </pre>  
+* \par  
+* \image html FIR.gif "Finite Impulse Response filter"  
+* \par  
+* <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.  
+* Coefficients are stored in time reversed order.  
+* \par  
+* <pre>  
+*    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}  
+* </pre>  
+* \par  
+* <code>pState</code> points to a state array of size <code>numTaps + blockSize - 1</code>.  
+* Samples in the state buffer are stored in the following order.  
+* \par  
+* <pre>  
+*    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}  
+* </pre>  
+* \par  
+* Note that the length of the state buffer exceeds the length of the coefficient array by <code>blockSize-1</code>.  
+* The increased state buffer length allows circular addressing, which is traditionally used in the FIR filters,  
+* to be avoided and yields a significant speed improvement.  
+* The state variables are updated after each block of data is processed; the coefficients are untouched.  
+* \par Instance Structure  
+* The coefficients and state variables for a filter are stored together in an instance data structure.  
+* A separate instance structure must be defined for each filter.  
+* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.  
+* There are separate instance structure declarations for each of the 4 supported data types.  
+*  
+* \par Initialization Functions  
+* There is also an associated initialization function for each data type.  
+* The initialization function performs the following operations:  
+* - Sets the values of the internal structure fields.  
+* - Zeros out the values in the state buffer.  
+* To do this manually without calling the init function, assign the follow subfields of the instance structure:
+* numTaps, pCoeffs, pState. Also set all of the values in pState to zero. 
+*  
+* \par  
+* Use of the initialization function is optional.  
+* However, if the initialization function is used, then the instance structure cannot be placed into a const data section.  
+* To place an instance structure into a const data section, the instance structure must be manually initialized.  
+* Set the values in the state buffer to zeros before static initialization.  
+* The code below statically initializes each of the 4 different data type filter instance structures  
+* <pre>  
+*arm_fir_instance_f32 S = {numTaps, pState, pCoeffs};  
+*arm_fir_instance_q31 S = {numTaps, pState, pCoeffs};  
+*arm_fir_instance_q15 S = {numTaps, pState, pCoeffs};  
+*arm_fir_instance_q7 S =  {numTaps, pState, pCoeffs};  
+* </pre>  
+*  
+* where <code>numTaps</code> is the number of filter coefficients in the filter; <code>pState</code> is the address of the state buffer;  
+* <code>pCoeffs</code> is the address of the coefficient buffer.  
+*  
+* \par Fixed-Point Behavior  
+* Care must be taken when using the fixed-point versions of the FIR filter functions.  
+* In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.  
+* Refer to the function specific documentation below for usage guidelines.  
+*/
+
+/**  
+* @addtogroup FIR  
+* @{  
+*/
+
+/**  
+*  
+* @param[in]  *S points to an instance of the floating-point FIR filter structure.  
+* @param[in]  *pSrc points to the block of input data.  
+* @param[out] *pDst points to the block of output data.  
+* @param[in]  blockSize number of samples to process per call.  
+* @return     none.  
+*  
+*/
+
+#if defined(ARM_MATH_CM7)
+
+void arm_fir_f32(
+const arm_fir_instance_f32 * S,
+float32_t * pSrc,
+float32_t * pDst,
+uint32_t blockSize)
+{
+   float32_t *pState = S->pState;                 /* State pointer */
+   float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+   float32_t *pStateCurnt;                        /* Points to the current sample of the state */
+   float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */
+   float32_t acc0, acc1, acc2, acc3, acc4, acc5, acc6, acc7;     /* Accumulators */
+   float32_t x0, x1, x2, x3, x4, x5, x6, x7, c0;  /* Temporary variables to hold state and coefficient values */
+   uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+   uint32_t i, tapCnt, blkCnt;                    /* Loop counters */
+
+   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+   /* pStateCurnt points to the location where the new input data should be written */
+   pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+   /* Apply loop unrolling and compute 8 output values simultaneously.  
+    * The variables acc0 ... acc7 hold output values that are being computed:  
+    *  
+    *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]  
+    *    acc1 =  b[numTaps-1] * x[n-numTaps] +   b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]  
+    *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] +   b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]  
+    *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]  
+    */
+   blkCnt = blockSize >> 3;
+
+   /* First part of the processing with loop unrolling.  Compute 8 outputs at a time.  
+   ** a second loop below computes the remaining 1 to 7 samples. */
+   while(blkCnt > 0u)
+   {
+      /* Copy four new input samples into the state buffer */
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+
+      /* Set all accumulators to zero */
+      acc0 = 0.0f;
+      acc1 = 0.0f;
+      acc2 = 0.0f;
+      acc3 = 0.0f;
+      acc4 = 0.0f;
+      acc5 = 0.0f;
+      acc6 = 0.0f;
+      acc7 = 0.0f;		
+
+      /* Initialize state pointer */
+      px = pState;
+
+      /* Initialize coeff pointer */
+      pb = (pCoeffs);		
+   
+      /* This is separated from the others to avoid 
+       * a call to __aeabi_memmove which would be slower
+       */
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+
+      /* Read the first seven samples from the state buffer:  x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */
+      x0 = *px++;
+      x1 = *px++;
+      x2 = *px++;
+      x3 = *px++;
+      x4 = *px++;
+      x5 = *px++;
+      x6 = *px++;
+
+      /* Loop unrolling.  Process 8 taps at a time. */
+      tapCnt = numTaps >> 3u;
+      
+      /* Loop over the number of taps.  Unroll by a factor of 8.  
+       ** Repeat until we've computed numTaps-8 coefficients. */
+      while(tapCnt > 0u)
+      {
+         /* Read the b[numTaps-1] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-3] sample */
+         x7 = *(px++);
+
+         /* acc0 +=  b[numTaps-1] * x[n-numTaps] */
+         acc0 += x0 * c0;
+
+         /* acc1 +=  b[numTaps-1] * x[n-numTaps-1] */
+         acc1 += x1 * c0;
+
+         /* acc2 +=  b[numTaps-1] * x[n-numTaps-2] */
+         acc2 += x2 * c0;
+
+         /* acc3 +=  b[numTaps-1] * x[n-numTaps-3] */
+         acc3 += x3 * c0;
+
+         /* acc4 +=  b[numTaps-1] * x[n-numTaps-4] */
+         acc4 += x4 * c0;
+
+         /* acc1 +=  b[numTaps-1] * x[n-numTaps-5] */
+         acc5 += x5 * c0;
+
+         /* acc2 +=  b[numTaps-1] * x[n-numTaps-6] */
+         acc6 += x6 * c0;
+
+         /* acc3 +=  b[numTaps-1] * x[n-numTaps-7] */
+         acc7 += x7 * c0;
+         
+         /* Read the b[numTaps-2] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-4] sample */
+         x0 = *(px++);
+
+         /* Perform the multiply-accumulate */
+         acc0 += x1 * c0;
+         acc1 += x2 * c0;   
+         acc2 += x3 * c0;   
+         acc3 += x4 * c0;   
+         acc4 += x5 * c0;   
+         acc5 += x6 * c0;   
+         acc6 += x7 * c0;   
+         acc7 += x0 * c0;   
+         
+         /* Read the b[numTaps-3] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-5] sample */
+         x1 = *(px++);
+
+         /* Perform the multiply-accumulates */      
+         acc0 += x2 * c0;
+         acc1 += x3 * c0;   
+         acc2 += x4 * c0;   
+         acc3 += x5 * c0;   
+         acc4 += x6 * c0;   
+         acc5 += x7 * c0;   
+         acc6 += x0 * c0;   
+         acc7 += x1 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x2 = *(px++);
+
+         /* Perform the multiply-accumulates */      
+         acc0 += x3 * c0;
+         acc1 += x4 * c0;   
+         acc2 += x5 * c0;   
+         acc3 += x6 * c0;   
+         acc4 += x7 * c0;   
+         acc5 += x0 * c0;   
+         acc6 += x1 * c0;   
+         acc7 += x2 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x3 = *(px++);
+         /* Perform the multiply-accumulates */      
+         acc0 += x4 * c0;
+         acc1 += x5 * c0;   
+         acc2 += x6 * c0;   
+         acc3 += x7 * c0;   
+         acc4 += x0 * c0;   
+         acc5 += x1 * c0;   
+         acc6 += x2 * c0;   
+         acc7 += x3 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x4 = *(px++);
+
+         /* Perform the multiply-accumulates */      
+         acc0 += x5 * c0;
+         acc1 += x6 * c0;   
+         acc2 += x7 * c0;   
+         acc3 += x0 * c0;   
+         acc4 += x1 * c0;   
+         acc5 += x2 * c0;   
+         acc6 += x3 * c0;   
+         acc7 += x4 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x5 = *(px++);
+
+         /* Perform the multiply-accumulates */      
+         acc0 += x6 * c0;
+         acc1 += x7 * c0;   
+         acc2 += x0 * c0;   
+         acc3 += x1 * c0;   
+         acc4 += x2 * c0;   
+         acc5 += x3 * c0;   
+         acc6 += x4 * c0;   
+         acc7 += x5 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x6 = *(px++);
+
+         /* Perform the multiply-accumulates */      
+         acc0 += x7 * c0;
+         acc1 += x0 * c0;   
+         acc2 += x1 * c0;   
+         acc3 += x2 * c0;   
+         acc4 += x3 * c0;   
+         acc5 += x4 * c0;   
+         acc6 += x5 * c0;   
+         acc7 += x6 * c0;   
+
+         tapCnt--;
+      }
+
+      /* If the filter length is not a multiple of 8, compute the remaining filter taps */
+      tapCnt = numTaps % 0x8u;
+
+      while(tapCnt > 0u)
+      {
+         /* Read coefficients */
+         c0 = *(pb++);
+
+         /* Fetch 1 state variable */
+         x7 = *(px++);
+
+         /* Perform the multiply-accumulates */      
+         acc0 += x0 * c0;
+         acc1 += x1 * c0;   
+         acc2 += x2 * c0;   
+         acc3 += x3 * c0;   
+         acc4 += x4 * c0;   
+         acc5 += x5 * c0;   
+         acc6 += x6 * c0;   
+         acc7 += x7 * c0;   
+
+         /* Reuse the present sample states for next sample */
+         x0 = x1;
+         x1 = x2;
+         x2 = x3;
+         x3 = x4;
+         x4 = x5;
+         x5 = x6;
+         x6 = x7;
+
+         /* Decrement the loop counter */
+         tapCnt--;
+      }
+
+      /* Advance the state pointer by 8 to process the next group of 8 samples */
+      pState = pState + 8;
+
+      /* The results in the 8 accumulators, store in the destination buffer. */
+      *pDst++ = acc0;
+      *pDst++ = acc1;
+      *pDst++ = acc2;
+      *pDst++ = acc3;
+      *pDst++ = acc4;
+      *pDst++ = acc5;
+      *pDst++ = acc6;
+      *pDst++ = acc7;
+
+      blkCnt--;
+   }
+
+   /* If the blockSize is not a multiple of 8, compute any remaining output samples here.  
+   ** No loop unrolling is used. */
+   blkCnt = blockSize % 0x8u;
+
+   while(blkCnt > 0u)
+   {
+      /* Copy one sample at a time into state buffer */
+      *pStateCurnt++ = *pSrc++;
+
+      /* Set the accumulator to zero */
+      acc0 = 0.0f;
+
+      /* Initialize state pointer */
+      px = pState;
+
+      /* Initialize Coefficient pointer */
+      pb = (pCoeffs);
+
+      i = numTaps;
+
+      /* Perform the multiply-accumulates */
+      do
+      {
+         acc0 += *px++ * *pb++;
+         i--;
+
+      } while(i > 0u);
+
+      /* The result is store in the destination buffer. */
+      *pDst++ = acc0;
+
+      /* Advance state pointer by 1 for the next sample */
+      pState = pState + 1;
+
+      blkCnt--;
+   }
+
+   /* Processing is complete.  
+   ** Now copy the last numTaps - 1 samples to the start of the state buffer.  
+   ** This prepares the state buffer for the next function call. */
+
+   /* Points to the start of the state buffer */
+   pStateCurnt = S->pState;
+
+   tapCnt = (numTaps - 1u) >> 2u;
+
+   /* copy data */
+   while(tapCnt > 0u)
+   {
+      *pStateCurnt++ = *pState++;
+      *pStateCurnt++ = *pState++;
+      *pStateCurnt++ = *pState++;
+      *pStateCurnt++ = *pState++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+   }
+
+   /* Calculate remaining number of copies */
+   tapCnt = (numTaps - 1u) % 0x4u;
+
+   /* Copy the remaining q31_t data */
+   while(tapCnt > 0u)
+   {
+      *pStateCurnt++ = *pState++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+   }
+}
+
+#elif defined(ARM_MATH_CM0_FAMILY)
+
+void arm_fir_f32(
+const arm_fir_instance_f32 * S,
+float32_t * pSrc,
+float32_t * pDst,
+uint32_t blockSize)
+{
+   float32_t *pState = S->pState;                 /* State pointer */
+   float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+   float32_t *pStateCurnt;                        /* Points to the current sample of the state */
+   float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */
+   uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+   uint32_t i, tapCnt, blkCnt;                    /* Loop counters */
+
+   /* Run the below code for Cortex-M0 */
+
+   float32_t acc;
+
+   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+   /* pStateCurnt points to the location where the new input data should be written */
+   pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+   /* Initialize blkCnt with blockSize */
+   blkCnt = blockSize;
+
+   while(blkCnt > 0u)
+   {
+      /* Copy one sample at a time into state buffer */
+      *pStateCurnt++ = *pSrc++;
+
+      /* Set the accumulator to zero */
+      acc = 0.0f;
+
+      /* Initialize state pointer */
+      px = pState;
+
+      /* Initialize Coefficient pointer */
+      pb = pCoeffs;
+
+      i = numTaps;
+
+      /* Perform the multiply-accumulates */
+      do
+      {
+         /* acc =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */
+         acc += *px++ * *pb++;
+         i--;
+
+      } while(i > 0u);
+
+      /* The result is store in the destination buffer. */
+      *pDst++ = acc;
+
+      /* Advance state pointer by 1 for the next sample */
+      pState = pState + 1;
+
+      blkCnt--;
+   }
+
+   /* Processing is complete.         
+   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+   /* Points to the start of the state buffer */
+   pStateCurnt = S->pState;
+
+   /* Copy numTaps number of values */
+   tapCnt = numTaps - 1u;
+
+   /* Copy data */
+   while(tapCnt > 0u)
+   {
+      *pStateCurnt++ = *pState++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+   }
+
+}
+
+#else
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+void arm_fir_f32(
+const arm_fir_instance_f32 * S,
+float32_t * pSrc,
+float32_t * pDst,
+uint32_t blockSize)
+{
+   float32_t *pState = S->pState;                 /* State pointer */
+   float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+   float32_t *pStateCurnt;                        /* Points to the current sample of the state */
+   float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */
+   float32_t acc0, acc1, acc2, acc3, acc4, acc5, acc6, acc7;     /* Accumulators */
+   float32_t x0, x1, x2, x3, x4, x5, x6, x7, c0;  /* Temporary variables to hold state and coefficient values */
+   uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+   uint32_t i, tapCnt, blkCnt;                    /* Loop counters */
+   float32_t p0,p1,p2,p3,p4,p5,p6,p7;             /* Temporary product values */
+
+   /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+   /* pStateCurnt points to the location where the new input data should be written */
+   pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+   /* Apply loop unrolling and compute 8 output values simultaneously.  
+    * The variables acc0 ... acc7 hold output values that are being computed:  
+    *  
+    *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]  
+    *    acc1 =  b[numTaps-1] * x[n-numTaps] +   b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]  
+    *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] +   b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]  
+    *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]  
+    */
+   blkCnt = blockSize >> 3;
+
+   /* First part of the processing with loop unrolling.  Compute 8 outputs at a time.  
+   ** a second loop below computes the remaining 1 to 7 samples. */
+   while(blkCnt > 0u)
+   {
+      /* Copy four new input samples into the state buffer */
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+
+      /* Set all accumulators to zero */
+      acc0 = 0.0f;
+      acc1 = 0.0f;
+      acc2 = 0.0f;
+      acc3 = 0.0f;
+      acc4 = 0.0f;
+      acc5 = 0.0f;
+      acc6 = 0.0f;
+      acc7 = 0.0f;		
+
+      /* Initialize state pointer */
+      px = pState;
+
+      /* Initialize coeff pointer */
+      pb = (pCoeffs);		
+   
+      /* This is separated from the others to avoid 
+       * a call to __aeabi_memmove which would be slower
+       */
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+      *pStateCurnt++ = *pSrc++;
+
+      /* Read the first seven samples from the state buffer:  x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */
+      x0 = *px++;
+      x1 = *px++;
+      x2 = *px++;
+      x3 = *px++;
+      x4 = *px++;
+      x5 = *px++;
+      x6 = *px++;
+
+      /* Loop unrolling.  Process 8 taps at a time. */
+      tapCnt = numTaps >> 3u;
+      
+      /* Loop over the number of taps.  Unroll by a factor of 8.  
+       ** Repeat until we've computed numTaps-8 coefficients. */
+      while(tapCnt > 0u)
+      {
+         /* Read the b[numTaps-1] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-3] sample */
+         x7 = *(px++);
+
+         /* acc0 +=  b[numTaps-1] * x[n-numTaps] */
+         p0 = x0 * c0;
+
+         /* acc1 +=  b[numTaps-1] * x[n-numTaps-1] */
+         p1 = x1 * c0;
+
+         /* acc2 +=  b[numTaps-1] * x[n-numTaps-2] */
+         p2 = x2 * c0;
+
+         /* acc3 +=  b[numTaps-1] * x[n-numTaps-3] */
+         p3 = x3 * c0;
+
+         /* acc4 +=  b[numTaps-1] * x[n-numTaps-4] */
+         p4 = x4 * c0;
+
+         /* acc1 +=  b[numTaps-1] * x[n-numTaps-5] */
+         p5 = x5 * c0;
+
+         /* acc2 +=  b[numTaps-1] * x[n-numTaps-6] */
+         p6 = x6 * c0;
+
+         /* acc3 +=  b[numTaps-1] * x[n-numTaps-7] */
+         p7 = x7 * c0;
+         
+         /* Read the b[numTaps-2] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-4] sample */
+         x0 = *(px++);
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+
+
+         /* Perform the multiply-accumulate */
+         p0 = x1 * c0;
+         p1 = x2 * c0;   
+         p2 = x3 * c0;   
+         p3 = x4 * c0;   
+         p4 = x5 * c0;   
+         p5 = x6 * c0;   
+         p6 = x7 * c0;   
+         p7 = x0 * c0;   
+         
+         /* Read the b[numTaps-3] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-5] sample */
+         x1 = *(px++);
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+
+         /* Perform the multiply-accumulates */      
+         p0 = x2 * c0;
+         p1 = x3 * c0;   
+         p2 = x4 * c0;   
+         p3 = x5 * c0;   
+         p4 = x6 * c0;   
+         p5 = x7 * c0;   
+         p6 = x0 * c0;   
+         p7 = x1 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x2 = *(px++);
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+
+         /* Perform the multiply-accumulates */      
+         p0 = x3 * c0;
+         p1 = x4 * c0;   
+         p2 = x5 * c0;   
+         p3 = x6 * c0;   
+         p4 = x7 * c0;   
+         p5 = x0 * c0;   
+         p6 = x1 * c0;   
+         p7 = x2 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x3 = *(px++);
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+
+         /* Perform the multiply-accumulates */      
+         p0 = x4 * c0;
+         p1 = x5 * c0;   
+         p2 = x6 * c0;   
+         p3 = x7 * c0;   
+         p4 = x0 * c0;   
+         p5 = x1 * c0;   
+         p6 = x2 * c0;   
+         p7 = x3 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x4 = *(px++);
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+
+         /* Perform the multiply-accumulates */      
+         p0 = x5 * c0;
+         p1 = x6 * c0;   
+         p2 = x7 * c0;   
+         p3 = x0 * c0;   
+         p4 = x1 * c0;   
+         p5 = x2 * c0;   
+         p6 = x3 * c0;   
+         p7 = x4 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x5 = *(px++);
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+
+         /* Perform the multiply-accumulates */      
+         p0 = x6 * c0;
+         p1 = x7 * c0;   
+         p2 = x0 * c0;   
+         p3 = x1 * c0;   
+         p4 = x2 * c0;   
+         p5 = x3 * c0;   
+         p6 = x4 * c0;   
+         p7 = x5 * c0;   
+
+         /* Read the b[numTaps-4] coefficient */
+         c0 = *(pb++);
+
+         /* Read x[n-numTaps-6] sample */
+         x6 = *(px++);
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+
+         /* Perform the multiply-accumulates */      
+         p0 = x7 * c0;
+         p1 = x0 * c0;   
+         p2 = x1 * c0;   
+         p3 = x2 * c0;   
+         p4 = x3 * c0;   
+         p5 = x4 * c0;   
+         p6 = x5 * c0;   
+         p7 = x6 * c0;   
+
+         tapCnt--;
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+      }
+
+      /* If the filter length is not a multiple of 8, compute the remaining filter taps */
+      tapCnt = numTaps % 0x8u;
+
+      while(tapCnt > 0u)
+      {
+         /* Read coefficients */
+         c0 = *(pb++);
+
+         /* Fetch 1 state variable */
+         x7 = *(px++);
+
+         /* Perform the multiply-accumulates */      
+         p0 = x0 * c0;
+         p1 = x1 * c0;   
+         p2 = x2 * c0;   
+         p3 = x3 * c0;   
+         p4 = x4 * c0;   
+         p5 = x5 * c0;   
+         p6 = x6 * c0;   
+         p7 = x7 * c0;   
+
+         /* Reuse the present sample states for next sample */
+         x0 = x1;
+         x1 = x2;
+         x2 = x3;
+         x3 = x4;
+         x4 = x5;
+         x5 = x6;
+         x6 = x7;
+         
+         acc0 += p0;
+         acc1 += p1;
+         acc2 += p2;
+         acc3 += p3;
+         acc4 += p4;
+         acc5 += p5;
+         acc6 += p6;
+         acc7 += p7;
+
+         /* Decrement the loop counter */
+         tapCnt--;
+      }
+
+      /* Advance the state pointer by 8 to process the next group of 8 samples */
+      pState = pState + 8;
+
+      /* The results in the 8 accumulators, store in the destination buffer. */
+      *pDst++ = acc0;
+      *pDst++ = acc1;
+      *pDst++ = acc2;
+      *pDst++ = acc3;
+      *pDst++ = acc4;
+      *pDst++ = acc5;
+      *pDst++ = acc6;
+      *pDst++ = acc7;
+
+      blkCnt--;
+   }
+
+   /* If the blockSize is not a multiple of 8, compute any remaining output samples here.  
+   ** No loop unrolling is used. */
+   blkCnt = blockSize % 0x8u;
+
+   while(blkCnt > 0u)
+   {
+      /* Copy one sample at a time into state buffer */
+      *pStateCurnt++ = *pSrc++;
+
+      /* Set the accumulator to zero */
+      acc0 = 0.0f;
+
+      /* Initialize state pointer */
+      px = pState;
+
+      /* Initialize Coefficient pointer */
+      pb = (pCoeffs);
+
+      i = numTaps;
+
+      /* Perform the multiply-accumulates */
+      do
+      {
+         acc0 += *px++ * *pb++;
+         i--;
+
+      } while(i > 0u);
+
+      /* The result is store in the destination buffer. */
+      *pDst++ = acc0;
+
+      /* Advance state pointer by 1 for the next sample */
+      pState = pState + 1;
+
+      blkCnt--;
+   }
+
+   /* Processing is complete.  
+   ** Now copy the last numTaps - 1 samples to the start of the state buffer.  
+   ** This prepares the state buffer for the next function call. */
+
+   /* Points to the start of the state buffer */
+   pStateCurnt = S->pState;
+
+   tapCnt = (numTaps - 1u) >> 2u;
+
+   /* copy data */
+   while(tapCnt > 0u)
+   {
+      *pStateCurnt++ = *pState++;
+      *pStateCurnt++ = *pState++;
+      *pStateCurnt++ = *pState++;
+      *pStateCurnt++ = *pState++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+   }
+
+   /* Calculate remaining number of copies */
+   tapCnt = (numTaps - 1u) % 0x4u;
+
+   /* Copy the remaining q31_t data */
+   while(tapCnt > 0u)
+   {
+      *pStateCurnt++ = *pState++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+   }
+}
+
+#endif 
+
+/**  
+* @} end of FIR group  
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,345 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_fast_q15.c    
+*    
+* Description:  Q15 Fast FIR filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR    
+ * @{    
+ */
+
+/**    
+ * @param[in] *S points to an instance of the Q15 FIR filter structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data.    
+ * @param[in] blockSize number of samples to process per call.    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * This fast version uses a 32-bit accumulator with 2.30 format.    
+ * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around and distorts the result.    
+ * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits.    
+ * The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_fir_q15()</code> for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.  Both the slow and the fast versions use the same instance structure.    
+ * Use the function <code>arm_fir_init_q15()</code> to initialize the filter structure.    
+ */
+
+void arm_fir_fast_q15(
+  const arm_fir_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */
+  q15_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  q15_t *px;                                     /* Temporary q31 pointer for SIMD state buffer accesses */
+  q31_t x0, x1, x2, c0;                          /* Temporary variables to hold SIMD state and coefficient values */
+  uint32_t numTaps = S->numTaps;                 /* Number of taps in the filter */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+
+
+  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Apply loop unrolling and compute 4 output values simultaneously.      
+   * The variables acc0 ... acc3 hold output values that are being computed:      
+   *      
+   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]      
+   *    acc1 =  b[numTaps-1] * x[n-numTaps] +   b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]      
+   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] +   b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]      
+   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]      
+   */
+
+  blkCnt = blockSize >> 2;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.      
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Copy four new input samples into the state buffer.      
+     ** Use 32-bit SIMD to move the 16-bit data.  Only requires two copies. */
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+
+
+    /* Set all accumulators to zero */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Typecast q15_t pointer to q31_t pointer for state reading in q31_t */
+    px = pState;
+
+    /* Typecast q15_t pointer to q31_t pointer for coefficient reading in q31_t */
+    pb = pCoeffs;
+
+    /* Read the first two samples from the state buffer:  x[n-N], x[n-N-1] */
+    x0 = *__SIMD32(px)++;
+
+    /* Read the third and forth samples from the state buffer: x[n-N-2], x[n-N-3] */
+    x2 = *__SIMD32(px)++;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.      
+     ** Repeat until we've computed numTaps-(numTaps%4) coefficients. */
+    tapCnt = numTaps >> 2;
+
+    while(tapCnt > 0)
+    {
+      /* Read the first two coefficients using SIMD:  b[N] and b[N-1] coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* acc0 +=  b[N] * x[n-N] + b[N-1] * x[n-N-1] */
+      acc0 = __SMLAD(x0, c0, acc0);
+
+      /* acc2 +=  b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */
+      acc2 = __SMLAD(x2, c0, acc2);
+
+      /* pack  x[n-N-1] and x[n-N-2] */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x2, x0, 0);
+#else
+      x1 = __PKHBT(x0, x2, 0);
+#endif
+
+      /* Read state x[n-N-4], x[n-N-5] */
+      x0 = _SIMD32_OFFSET(px);
+
+      /* acc1 +=  b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */
+      acc1 = __SMLADX(x1, c0, acc1);
+
+      /* pack  x[n-N-3] and x[n-N-4] */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x0, x2, 0);
+#else
+      x1 = __PKHBT(x2, x0, 0);
+#endif
+
+      /* acc3 +=  b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */
+      acc3 = __SMLADX(x1, c0, acc3);
+
+      /* Read coefficients b[N-2], b[N-3] */
+      c0 = *__SIMD32(pb)++;
+
+      /* acc0 +=  b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */
+      acc0 = __SMLAD(x2, c0, acc0);
+
+      /* Read state x[n-N-6], x[n-N-7] with offset */
+      x2 = _SIMD32_OFFSET(px + 2u);
+
+      /* acc2 +=  b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */
+      acc2 = __SMLAD(x0, c0, acc2);
+
+      /* acc1 +=  b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */
+      acc1 = __SMLADX(x1, c0, acc1);
+
+      /* pack  x[n-N-5] and x[n-N-6] */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x2, x0, 0);
+#else
+      x1 = __PKHBT(x0, x2, 0);
+#endif
+
+      /* acc3 +=  b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */
+      acc3 = __SMLADX(x1, c0, acc3);
+
+      /* Update state pointer for next state reading */
+      px += 4u;
+
+      /* Decrement tap count */
+      tapCnt--;
+
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps.       
+     ** This is always be 2 taps since the filter length is even. */
+    if((numTaps & 0x3u) != 0u)
+    {
+
+      /* Read last two coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* Perform the multiply-accumulates */
+      acc0 = __SMLAD(x0, c0, acc0);
+      acc2 = __SMLAD(x2, c0, acc2);
+
+      /* pack state variables */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x2, x0, 0);
+#else
+      x1 = __PKHBT(x0, x2, 0);
+#endif
+
+      /* Read last state variables */
+      x0 = *__SIMD32(px);
+
+      /* Perform the multiply-accumulates */
+      acc1 = __SMLADX(x1, c0, acc1);
+
+      /* pack state variables */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x0, x2, 0);
+#else
+      x1 = __PKHBT(x2, x0, 0);
+#endif
+
+      /* Perform the multiply-accumulates */
+      acc3 = __SMLADX(x1, c0, acc3);
+    }
+
+    /* The results in the 4 accumulators are in 2.30 format.  Convert to 1.15 with saturation.       
+     ** Then store the 4 outputs in the destination buffer. */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+#else
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN       */
+
+    /* Advance the state pointer by 4 to process the next group of 4 samples */
+    pState = pState + 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.      
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+  while(blkCnt > 0u)
+  {
+    /* Copy two samples into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set the accumulator to zero */
+    acc0 = 0;
+
+    /* Use SIMD to hold states and coefficients */
+    px = pState;
+    pb = pCoeffs;
+
+    tapCnt = numTaps >> 1u;
+
+    do
+    {
+
+      acc0 += (q31_t) * px++ * *pb++;
+	  acc0 += (q31_t) * px++ * *pb++;
+
+      tapCnt--;
+    }
+    while(tapCnt > 0u);
+
+    /* The result is in 2.30 format.  Convert to 1.15 with saturation.      
+     ** Then store the output in the destination buffer. */
+    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.      
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.      
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  /* Calculation of count for copying integer writes */
+  tapCnt = (numTaps - 1u) >> 2;
+
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    tapCnt--;
+
+  }
+
+  /* Calculation of count for remaining q15_t data */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* copy remaining data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+}
+
+/**    
+ * @} end of FIR group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,305 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_fast_q31.c    
+*    
+* Description:	Processing function for the Q31 Fast FIR filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR    
+ * @{    
+ */
+
+/**    
+ * @param[in] *S points to an instance of the Q31 structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block output data.    
+ * @param[in] blockSize number of samples to process per call.    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * This function is optimized for speed at the expense of fixed-point precision and overflow protection.    
+ * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format.    
+ * These intermediate results are added to a 2.30 accumulator.    
+ * Finally, the accumulator is saturated and converted to a 1.31 result.    
+ * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result.    
+ * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits.    
+ *    
+ * \par    
+ * Refer to the function <code>arm_fir_q31()</code> for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision.  Both the slow and the fast versions use the same instance structure.    
+ * Use the function <code>arm_fir_init_q31()</code> to initialize the filter structure.    
+ */
+
+IAR_ONLY_LOW_OPTIMIZATION_ENTER
+void arm_fir_fast_q31(
+  const arm_fir_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pState = S->pState;                     /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q31_t x0, x1, x2, x3;                          /* Temporary variables to hold state */
+  q31_t c0;                                      /* Temporary variable to hold coefficient value */
+  q31_t *px;                                     /* Temporary pointer for state */
+  q31_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  uint32_t i, tapCnt, blkCnt;                    /* Loop counters */
+
+  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Apply loop unrolling and compute 4 output values simultaneously.    
+   * The variables acc0 ... acc3 hold output values that are being computed:    
+   *    
+   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]    
+   *    acc1 =  b[numTaps-1] * x[n-numTaps] +   b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]    
+   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] +   b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]    
+   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]    
+   */
+  blkCnt = blockSize >> 2;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Copy four new input samples into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set all accumulators to zero */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coefficient pointer */
+    pb = pCoeffs;
+
+    /* Read the first three samples from the state buffer:    
+     *  x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */
+    x0 = *(px++);
+    x1 = *(px++);
+    x2 = *(px++);
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+    i = tapCnt;
+
+    while(i > 0u)
+    {
+      /* Read the b[numTaps] coefficient */
+      c0 = *pb;
+
+      /* Read x[n-numTaps-3] sample */
+      x3 = *px;
+
+      /* acc0 +=  b[numTaps] * x[n-numTaps] */
+      multAcc_32x32_keep32_R(acc0, x0, c0);
+
+      /* acc1 +=  b[numTaps] * x[n-numTaps-1] */
+      multAcc_32x32_keep32_R(acc1, x1, c0);
+
+      /* acc2 +=  b[numTaps] * x[n-numTaps-2] */
+      multAcc_32x32_keep32_R(acc2, x2, c0);
+
+      /* acc3 +=  b[numTaps] * x[n-numTaps-3] */
+      multAcc_32x32_keep32_R(acc3, x3, c0);
+
+      /* Read the b[numTaps-1] coefficient */
+      c0 = *(pb + 1u);
+
+      /* Read x[n-numTaps-4] sample */
+      x0 = *(px + 1u);
+
+      /* Perform the multiply-accumulates */      
+      multAcc_32x32_keep32_R(acc0, x1, c0);
+      multAcc_32x32_keep32_R(acc1, x2, c0);
+      multAcc_32x32_keep32_R(acc2, x3, c0);
+      multAcc_32x32_keep32_R(acc3, x0, c0);
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *(pb + 2u);
+
+      /* Read x[n-numTaps-5] sample */
+      x1 = *(px + 2u);
+
+      /* Perform the multiply-accumulates */      
+      multAcc_32x32_keep32_R(acc0, x2, c0);
+      multAcc_32x32_keep32_R(acc1, x3, c0);
+      multAcc_32x32_keep32_R(acc2, x0, c0);
+      multAcc_32x32_keep32_R(acc3, x1, c0);
+
+      /* Read the b[numTaps-3] coefficients */
+      c0 = *(pb + 3u);
+
+      /* Read x[n-numTaps-6] sample */
+      x2 = *(px + 3u);
+
+      /* Perform the multiply-accumulates */      
+      multAcc_32x32_keep32_R(acc0, x3, c0);
+      multAcc_32x32_keep32_R(acc1, x0, c0);
+      multAcc_32x32_keep32_R(acc2, x1, c0);
+      multAcc_32x32_keep32_R(acc3, x2, c0);
+
+      /* update coefficient pointer */
+      pb += 4u;
+      px += 4u;
+      
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+
+    i = numTaps - (tapCnt * 4u);
+    while(i > 0u)
+    {
+      /* Read coefficients */
+      c0 = *(pb++);
+
+      /* Fetch 1 state variable */
+      x3 = *(px++);
+
+      /* Perform the multiply-accumulates */      
+      multAcc_32x32_keep32_R(acc0, x0, c0);
+      multAcc_32x32_keep32_R(acc1, x1, c0);
+      multAcc_32x32_keep32_R(acc2, x2, c0);
+      multAcc_32x32_keep32_R(acc3, x3, c0);
+
+      /* Reuse the present sample states for next sample */
+      x0 = x1;
+      x1 = x2;
+      x2 = x3;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 4 to process the next group of 4 samples */
+    pState = pState + 4;
+
+    /* The results in the 4 accumulators are in 2.30 format.  Convert to 1.31    
+     ** Then store the 4 outputs in the destination buffer. */
+    *pDst++ = (q31_t) (acc0 << 1);
+    *pDst++ = (q31_t) (acc1 << 1);
+    *pDst++ = (q31_t) (acc2 << 1);
+    *pDst++ = (q31_t) (acc3 << 1);
+
+    /* Decrement the samples loop counter */
+    blkCnt--;
+  }
+
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 4u;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy one sample at a time into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set the accumulator to zero */
+    acc0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize Coefficient pointer */
+    pb = (pCoeffs);
+
+    i = numTaps;
+
+    /* Perform the multiply-accumulates */
+    do
+    {
+      multAcc_32x32_keep32_R(acc0, (*px++), (*(pb++)));
+      i--;
+    } while(i > 0u);
+
+    /* The result is in 2.30 format.  Convert to 1.31    
+     ** Then store the output in the destination buffer. */
+    *pDst++ = (q31_t) (acc0 << 1);
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the samples loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.    
+   ** Now copy the last numTaps - 1 samples to the start of the state buffer.    
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numTaps - 1u);
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+
+}
+IAR_ONLY_LOW_OPTIMIZATION_EXIT
+/**    
+ * @} end of FIR group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,96 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_init_f32.c    
+*    
+* Description:  Floating-point FIR filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR    
+ * @{    
+ */
+
+/**    
+ * @details    
+ *    
+ * @param[in,out] *S points to an instance of the floating-point FIR filter structure.    
+ * @param[in] 	  numTaps  Number of filter coefficients in the filter.    
+ * @param[in]     *pCoeffs points to the filter coefficients buffer.    
+ * @param[in]     *pState points to the state buffer.    
+ * @param[in] 	  blockSize number of samples that are processed per call.    
+ * @return 		  none.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_f32()</code>.    
+ */
+
+void arm_fir_init_f32(
+  arm_fir_instance_f32 * S,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and the size of state buffer is (blockSize + numTaps - 1) */
+  memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,154 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_init_q15.c    
+*    
+* Description:  Q15 FIR filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR    
+ * @{    
+ */
+
+/**    
+ * @param[in,out]  *S points to an instance of the Q15 FIR filter structure.    
+ * @param[in] 	   numTaps  Number of filter coefficients in the filter. Must be even and greater than or equal to 4.    
+ * @param[in]      *pCoeffs points to the filter coefficients buffer.    
+ * @param[in]      *pState points to the state buffer.    
+ * @param[in]      blockSize is number of samples processed per call.    
+ * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if    
+ * <code>numTaps</code> is not greater than or equal to 4 and even.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * Note that <code>numTaps</code> must be even and greater than or equal to 4.    
+ * To implement an odd length filter simply increase <code>numTaps</code> by 1 and set the last coefficient to zero.    
+ * For example, to implement a filter with <code>numTaps=3</code> and coefficients    
+ * <pre>    
+ *     {0.3, -0.8, 0.3}    
+ * </pre>    
+ * set <code>numTaps=4</code> and use the coefficients:    
+ * <pre>    
+ *     {0.3, -0.8, 0.3, 0}.    
+ * </pre>    
+ * Similarly, to implement a two point filter    
+ * <pre>    
+ *     {0.3, -0.3}    
+ * </pre>    
+ * set <code>numTaps=4</code> and use the coefficients:    
+ * <pre>    
+ *     {0.3, -0.3, 0, 0}.    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>numTaps+blockSize</code>, when running on Cortex-M4 and Cortex-M3  and is of length <code>numTaps+blockSize-1</code>, when running on Cortex-M0 where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_q15()</code>.    
+ */
+
+arm_status arm_fir_init_q15(
+  arm_fir_instance_q15 * S,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  uint32_t blockSize)
+{
+  arm_status status;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* The Number of filter coefficients in the filter must be even and at least 4 */
+  if(numTaps & 0x1u)
+  {
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+  else
+  {
+    /* Assign filter taps */
+    S->numTaps = numTaps;
+
+    /* Assign coefficient pointer */
+    S->pCoeffs = pCoeffs;
+
+    /* Clear the state buffer.  The size is always (blockSize + numTaps ) */
+    memset(pState, 0, (numTaps + (blockSize)) * sizeof(q15_t));
+
+    /* Assign state pointer */
+    S->pState = pState;
+
+    status = ARM_MATH_SUCCESS;
+  }
+
+  return (status);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear the state buffer.  The size is always (blockSize + numTaps - 1) */
+  memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+  status = ARM_MATH_SUCCESS;
+
+  return (status);
+
+#endif /*  #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,96 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_init_q31.c    
+*    
+* Description:	Q31 FIR filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR    
+ * @{    
+ */
+
+/**    
+ * @details    
+ *    
+ * @param[in,out] *S points to an instance of the Q31 FIR filter structure.    
+ * @param[in] 	  numTaps  Number of filter coefficients in the filter.    
+ * @param[in] 	  *pCoeffs points to the filter coefficients buffer.    
+ * @param[in] 	  *pState points to the state buffer.    
+ * @param[in] 	  blockSize number of samples that are processed per call.    
+ * @return        none.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_q31()</code>.    
+ */
+
+void arm_fir_init_q31(
+  arm_fir_instance_q31 * S,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and state array size is (blockSize + numTaps - 1) */
+  memset(pState, 0, (blockSize + ((uint32_t) numTaps - 1u)) * sizeof(q31_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,94 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_init_q7.c    
+*    
+* Description:  Q7 FIR filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR    
+ * @{    
+ */
+/**    
+ * @param[in,out] *S points to an instance of the Q7 FIR filter structure.    
+ * @param[in] 	  numTaps  Number of filter coefficients in the filter.    
+ * @param[in] 	  *pCoeffs points to the filter coefficients buffer.    
+ * @param[in]     *pState points to the state buffer.    
+ * @param[in]     blockSize number of samples that are processed per call.    
+ * @return     	  none    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_q7()</code>.    
+ */
+
+void arm_fir_init_q7(
+  arm_fir_instance_q7 * S,
+  uint16_t numTaps,
+  q7_t * pCoeffs,
+  q7_t * pState,
+  uint32_t blockSize)
+{
+
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear the state buffer.  The size is always (blockSize + numTaps - 1) */
+  memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q7_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,581 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_interpolate_f32.c    
+*    
+* Description:	FIR interpolation for floating-point sequences.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @defgroup FIR_Interpolate Finite Impulse Response (FIR) Interpolator    
+ *    
+ * These functions combine an upsampler (zero stuffer) and an FIR filter.    
+ * They are used in multirate systems for increasing the sample rate of a signal without introducing high frequency images.    
+ * Conceptually, the functions are equivalent to the block diagram below:    
+ * \image html FIRInterpolator.gif "Components included in the FIR Interpolator functions"    
+ * After upsampling by a factor of <code>L</code>, the signal should be filtered by a lowpass filter with a normalized    
+ * cutoff frequency of <code>1/L</code> in order to eliminate high frequency copies of the spectrum.    
+ * The user of the function is responsible for providing the filter coefficients.    
+ *    
+ * The FIR interpolator functions provided in the CMSIS DSP Library combine the upsampler and FIR filter in an efficient manner.    
+ * The upsampler inserts <code>L-1</code> zeros between each sample.    
+ * Instead of multiplying by these zero values, the FIR filter is designed to skip them.    
+ * This leads to an efficient implementation without any wasted effort.    
+ * The functions operate on blocks of input and output data.    
+ * <code>pSrc</code> points to an array of <code>blockSize</code> input values and    
+ * <code>pDst</code> points to an array of <code>blockSize*L</code> output values.    
+ *    
+ * The library provides separate functions for Q15, Q31, and floating-point data types.    
+ *    
+ * \par Algorithm:    
+ * The functions use a polyphase filter structure:    
+ * <pre>    
+ *    y[n] = b[0] * x[n] + b[L]   * x[n-1] + ... + b[L*(phaseLength-1)] * x[n-phaseLength+1]    
+ *    y[n+1] = b[1] * x[n] + b[L+1] * x[n-1] + ... + b[L*(phaseLength-1)+1] * x[n-phaseLength+1]    
+ *    ...    
+ *    y[n+(L-1)] = b[L-1] * x[n] + b[2*L-1] * x[n-1] + ....+ b[L*(phaseLength-1)+(L-1)] * x[n-phaseLength+1]    
+ * </pre>    
+ * This approach is more efficient than straightforward upsample-then-filter algorithms.    
+ * With this method the computation is reduced by a factor of <code>1/L</code> when compared to using a standard FIR filter.    
+ * \par    
+ * <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.    
+ * <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code> and this is checked by the    
+ * initialization functions.    
+ * Internally, the function divides the FIR filter's impulse response into shorter filters of length    
+ * <code>phaseLength=numTaps/L</code>.    
+ * Coefficients are stored in time reversed order.    
+ * \par    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to a state array of size <code>blockSize + phaseLength - 1</code>.    
+ * Samples in the state buffer are stored in the order:    
+ * \par    
+ * <pre>    
+ *    {x[n-phaseLength+1], x[n-phaseLength], x[n-phaseLength-1], x[n-phaseLength-2]....x[0], x[1], ..., x[blockSize-1]}    
+ * </pre>    
+ * The state variables are updated after each block of data is processed, the coefficients are untouched.    
+ *    
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter.    
+ * Coefficient arrays may be shared among several instances while state variable array should be allocated separately.    
+ * There are separate instance structure declarations for each of the 3 supported data types.    
+ *    
+ * \par Initialization Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.    
+ * - Checks to make sure that the length of the filter is a multiple of the interpolation factor.    
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * L (interpolation factor), pCoeffs, phaseLength (numTaps / L), pState. Also set all of the values in pState to zero. 
+ *    
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * The code below statically initializes each of the 3 different data type filter instance structures    
+ * <pre>    
+ * arm_fir_interpolate_instance_f32 S = {L, phaseLength, pCoeffs, pState};    
+ * arm_fir_interpolate_instance_q31 S = {L, phaseLength, pCoeffs, pState};    
+ * arm_fir_interpolate_instance_q15 S = {L, phaseLength, pCoeffs, pState};    
+ * </pre>    
+ * where <code>L</code> is the interpolation factor; <code>phaseLength=numTaps/L</code> is the    
+ * length of each of the shorter FIR filters used internally,    
+ * <code>pCoeffs</code> is the address of the coefficient buffer;    
+ * <code>pState</code> is the address of the state buffer.    
+ * Be sure to set the values in the state buffer to zeros when doing static initialization.    
+ *    
+ * \par Fixed-Point Behavior    
+ * Care must be taken when using the fixed-point versions of the FIR interpolate filter functions.    
+ * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.    
+ * Refer to the function specific documentation below for usage guidelines.    
+ */
+
+/**    
+ * @addtogroup FIR_Interpolate    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the floating-point FIR interpolator.    
+ * @param[in] *S        points to an instance of the floating-point FIR interpolator structure.    
+ * @param[in] *pSrc     points to the block of input data.    
+ * @param[out] *pDst    points to the block of output data.    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return none.    
+ */
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+void arm_fir_interpolate_f32(
+  const arm_fir_interpolate_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t *pState = S->pState;                 /* State pointer */
+  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+  float32_t *pStateCurnt;                        /* Points to the current sample of the state */
+  float32_t *ptr1, *ptr2;                        /* Temporary pointers for state and coefficient buffers */
+  float32_t sum0;                                /* Accumulators */
+  float32_t x0, c0;                              /* Temporary variables to hold state and coefficient values */
+  uint32_t i, blkCnt, j;                         /* Loop counters */
+  uint16_t phaseLen = S->phaseLength, tapCnt;    /* Length of each polyphase filter component */
+  float32_t acc0, acc1, acc2, acc3;
+  float32_t x1, x2, x3;
+  uint32_t blkCntN4;
+  float32_t c1, c2, c3;
+
+  /* S->pState buffer contains previous frame (phaseLen - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (phaseLen - 1u);
+
+  /* Initialise  blkCnt */
+  blkCnt = blockSize / 4;
+  blkCntN4 = blockSize - (4 * blkCnt);
+
+  /* Samples loop unrolled by 4 */
+  while(blkCnt > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+
+    /* Address modifier index of coefficient buffer */
+    j = 1u;
+
+    /* Loop over the Interpolation factor. */
+    i = (S->L);
+
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      acc0 = 0.0f;
+      acc1 = 0.0f;
+      acc2 = 0.0f;
+      acc3 = 0.0f;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (S->L - j);
+
+      /* Loop over the polyPhase length. Unroll by a factor of 4.        
+       ** Repeat until we've computed numTaps-(4*S->L) coefficients. */
+      tapCnt = phaseLen >> 2u;
+
+      x0 = *(ptr1++);
+      x1 = *(ptr1++);
+      x2 = *(ptr1++);
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read the input sample */
+        x3 = *(ptr1++);
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Perform the multiply-accumulate */
+        acc0 += x0 * c0;
+        acc1 += x1 * c0;
+        acc2 += x2 * c0;
+        acc3 += x3 * c0;
+
+        /* Read the coefficient */
+        c1 = *(ptr2 + S->L);
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += x1 * c1;
+        acc1 += x2 * c1;
+        acc2 += x3 * c1;
+        acc3 += x0 * c1;
+
+        /* Read the coefficient */
+        c2 = *(ptr2 + S->L * 2);
+
+        /* Read the input sample */
+        x1 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += x2 * c2;
+        acc1 += x3 * c2;
+        acc2 += x0 * c2;
+        acc3 += x1 * c2;
+
+        /* Read the coefficient */
+        c3 = *(ptr2 + S->L * 3);
+
+        /* Read the input sample */
+        x2 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += x3 * c3;
+        acc1 += x0 * c3;
+        acc2 += x1 * c3;
+        acc3 += x2 * c3;
+
+
+        /* Upsampling is done by stuffing L-1 zeros between each sample.        
+         * So instead of multiplying zeros with coefficients,        
+         * Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += 4 * S->L;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */
+      tapCnt = phaseLen % 0x4u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read the input sample */
+        x3 = *(ptr1++);
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Perform the multiply-accumulate */
+        acc0 += x0 * c0;
+        acc1 += x1 * c0;
+        acc2 += x2 * c0;
+        acc3 += x3 * c0;
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* update states for next sample processing */
+        x0 = x1;
+        x1 = x2;
+        x2 = x3;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* The result is in the accumulator, store in the destination buffer. */
+      *pDst = acc0;
+      *(pDst + S->L) = acc1;
+      *(pDst + 2 * S->L) = acc2;
+      *(pDst + 3 * S->L) = acc3;
+
+      pDst++;
+
+      /* Increment the address modifier index of coefficient buffer */
+      j++;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1        
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 4;
+
+    pDst += S->L * 3;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+
+  while(blkCntN4 > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Address modifier index of coefficient buffer */
+    j = 1u;
+
+    /* Loop over the Interpolation factor. */
+    i = S->L;
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      sum0 = 0.0f;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (S->L - j);
+
+      /* Loop over the polyPhase length. Unroll by a factor of 4.        
+       ** Repeat until we've computed numTaps-(4*S->L) coefficients. */
+      tapCnt = phaseLen >> 2u;
+      while(tapCnt > 0u)
+      {
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Upsampling is done by stuffing L-1 zeros between each sample.        
+         * So instead of multiplying zeros with coefficients,        
+         * Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += x0 * c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += x0 * c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += x0 * c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += x0 * c0;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */
+      tapCnt = phaseLen % 0x4u;
+
+      while(tapCnt > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum0 += *(ptr1++) * (*ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* The result is in the accumulator, store in the destination buffer. */
+      *pDst++ = sum0;
+
+      /* Increment the address modifier index of coefficient buffer */
+      j++;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1        
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCntN4--;
+  }
+
+  /* Processing is complete.        
+   ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer.        
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  tapCnt = (phaseLen - 1u) >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+  tapCnt = (phaseLen - 1u) % 0x04u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+}
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+void arm_fir_interpolate_f32(
+  const arm_fir_interpolate_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t *pState = S->pState;                 /* State pointer */
+  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+  float32_t *pStateCurnt;                        /* Points to the current sample of the state */
+  float32_t *ptr1, *ptr2;                        /* Temporary pointers for state and coefficient buffers */
+
+
+  float32_t sum;                                 /* Accumulator */
+  uint32_t i, blkCnt;                            /* Loop counters */
+  uint16_t phaseLen = S->phaseLength, tapCnt;    /* Length of each polyphase filter component */
+
+
+  /* S->pState buffer contains previous frame (phaseLen - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (phaseLen - 1u);
+
+  /* Total number of intput samples */
+  blkCnt = blockSize;
+
+  /* Loop over the blockSize. */
+  while(blkCnt > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Loop over the Interpolation factor. */
+    i = S->L;
+
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      sum = 0.0f;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (i - 1u);
+
+      /* Loop over the polyPhase length */
+      tapCnt = phaseLen;
+
+      while(tapCnt > 0u)
+      {
+        /* Perform the multiply-accumulate */
+        sum += *ptr1++ * *ptr2;
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* The result is in the accumulator, store in the destination buffer. */
+      *pDst++ = sum;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1           
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last phaseLen - 1 samples to the start of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  tapCnt = phaseLen - 1u;
+
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+}
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+
+
+ /**    
+  * @} end of FIR_Interpolate group    
+  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,121 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_interpolate_init_f32.c    
+*    
+* Description:  Floating-point FIR interpolator initialization function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Interpolate    
+ * @{    
+ */
+
+/**    
+ * @brief  Initialization function for the floating-point FIR interpolator.    
+ * @param[in,out] *S        points to an instance of the floating-point FIR interpolator structure.    
+ * @param[in]     L         upsample factor.    
+ * @param[in]     numTaps   number of filter coefficients in the filter.    
+ * @param[in]     *pCoeffs  points to the filter coefficient buffer.    
+ * @param[in]     *pState   points to the state buffer.    
+ * @param[in]     blockSize number of input samples to process per call.    
+ * @return        The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if    
+ * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}    
+ * </pre>    
+ * The length of the filter <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code>.    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>(numTaps/L)+blockSize-1</code> words    
+ * where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_interpolate_f32()</code>.    
+ */
+
+arm_status arm_fir_interpolate_init_f32(
+  arm_fir_interpolate_instance_f32 * S,
+  uint8_t L,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  uint32_t blockSize)
+{
+  arm_status status;
+
+  /* The filter length must be a multiple of the interpolation factor */
+  if((numTaps % L) != 0u)
+  {
+    /* Set status as ARM_MATH_LENGTH_ERROR */
+    status = ARM_MATH_LENGTH_ERROR;
+  }
+  else
+  {
+
+    /* Assign coefficient pointer */
+    S->pCoeffs = pCoeffs;
+
+    /* Assign Interpolation factor */
+    S->L = L;
+
+    /* Assign polyPhaseLength */
+    S->phaseLength = numTaps / L;
+
+    /* Clear state buffer and size of state array is always phaseLength + blockSize - 1 */
+    memset(pState, 0,
+           (blockSize +
+            ((uint32_t) S->phaseLength - 1u)) * sizeof(float32_t));
+
+    /* Assign state pointer */
+    S->pState = pState;
+
+    status = ARM_MATH_SUCCESS;
+  }
+
+  return (status);
+
+}
+
+ /**    
+  * @} end of FIR_Interpolate group    
+  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,120 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_interpolate_init_q15.c    
+*    
+* Description:  Q15 FIR interpolator initialization function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Interpolate    
+ * @{    
+ */
+
+/**    
+ * @brief  Initialization function for the Q15 FIR interpolator.    
+ * @param[in,out] *S        points to an instance of the Q15 FIR interpolator structure.    
+ * @param[in]     L         upsample factor.    
+ * @param[in]     numTaps   number of filter coefficients in the filter.    
+ * @param[in]     *pCoeffs  points to the filter coefficient buffer.    
+ * @param[in]     *pState   points to the state buffer.    
+ * @param[in]     blockSize number of input samples to process per call.    
+ * @return        The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if    
+ * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}    
+ * </pre>    
+ * The length of the filter <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code>.    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>(numTaps/L)+blockSize-1</code> words    
+ * where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_interpolate_q15()</code>.    
+ */
+
+arm_status arm_fir_interpolate_init_q15(
+  arm_fir_interpolate_instance_q15 * S,
+  uint8_t L,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  uint32_t blockSize)
+{
+  arm_status status;
+
+  /* The filter length must be a multiple of the interpolation factor */
+  if((numTaps % L) != 0u)
+  {
+    /* Set status as ARM_MATH_LENGTH_ERROR */
+    status = ARM_MATH_LENGTH_ERROR;
+  }
+  else
+  {
+
+    /* Assign coefficient pointer */
+    S->pCoeffs = pCoeffs;
+
+    /* Assign Interpolation factor */
+    S->L = L;
+
+    /* Assign polyPhaseLength */
+    S->phaseLength = numTaps / L;
+
+    /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */
+    memset(pState, 0,
+           (blockSize + ((uint32_t) S->phaseLength - 1u)) * sizeof(q15_t));
+
+    /* Assign state pointer */
+    S->pState = pState;
+
+    status = ARM_MATH_SUCCESS;
+  }
+
+  return (status);
+
+}
+
+ /**    
+  * @} end of FIR_Interpolate group    
+  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,121 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_interpolate_init_q31.c    
+*    
+* Description:  Q31 FIR interpolator initialization function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Interpolate    
+ * @{    
+ */
+
+
+/**    
+ * @brief  Initialization function for the Q31 FIR interpolator.    
+ * @param[in,out] *S        points to an instance of the Q31 FIR interpolator structure.    
+ * @param[in]     L         upsample factor.    
+ * @param[in]     numTaps   number of filter coefficients in the filter.    
+ * @param[in]     *pCoeffs  points to the filter coefficient buffer.    
+ * @param[in]     *pState   points to the state buffer.    
+ * @param[in]     blockSize number of input samples to process per call.    
+ * @return        The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if    
+ * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}    
+ * </pre>    
+ * The length of the filter <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code>.    
+ * \par    
+ * <code>pState</code> points to the array of state variables.    
+ * <code>pState</code> is of length <code>(numTaps/L)+blockSize-1</code> words    
+ * where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_interpolate_q31()</code>.    
+ */
+
+arm_status arm_fir_interpolate_init_q31(
+  arm_fir_interpolate_instance_q31 * S,
+  uint8_t L,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  uint32_t blockSize)
+{
+  arm_status status;
+
+  /* The filter length must be a multiple of the interpolation factor */
+  if((numTaps % L) != 0u)
+  {
+    /* Set status as ARM_MATH_LENGTH_ERROR */
+    status = ARM_MATH_LENGTH_ERROR;
+  }
+  else
+  {
+
+    /* Assign coefficient pointer */
+    S->pCoeffs = pCoeffs;
+
+    /* Assign Interpolation factor */
+    S->L = L;
+
+    /* Assign polyPhaseLength */
+    S->phaseLength = numTaps / L;
+
+    /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */
+    memset(pState, 0,
+           (blockSize + ((uint32_t) S->phaseLength - 1u)) * sizeof(q31_t));
+
+    /* Assign state pointer */
+    S->pState = pState;
+
+    status = ARM_MATH_SUCCESS;
+  }
+
+  return (status);
+
+}
+
+ /**    
+  * @} end of FIR_Interpolate group    
+  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,508 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_fir_interpolate_q15.c    
+*    
+* Description:	Q15 FIR interpolation.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Interpolate    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q15 FIR interpolator.    
+ * @param[in] *S        points to an instance of the Q15 FIR interpolator structure.    
+ * @param[in] *pSrc     points to the block of input data.    
+ * @param[out] *pDst    points to the block of output data.    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.    
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.    
+ * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.    
+ * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.    
+ * Lastly, the accumulator is saturated to yield a result in 1.15 format.    
+ */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+void arm_fir_interpolate_q15(
+  const arm_fir_interpolate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer                                            */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer                                      */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state                */
+  q15_t *ptr1, *ptr2;                            /* Temporary pointers for state and coefficient buffers     */
+  q63_t sum0;                                    /* Accumulators                                             */
+  q15_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */
+  uint32_t i, blkCnt, j, tapCnt;                 /* Loop counters                                            */
+  uint16_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */
+  uint32_t blkCntN2;
+  q63_t acc0, acc1;
+  q15_t x1;
+
+  /* S->pState buffer contains previous frame (phaseLen - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + ((q31_t) phaseLen - 1);
+
+  /* Initialise  blkCnt */
+  blkCnt = blockSize / 2;
+  blkCntN2 = blockSize - (2 * blkCnt);
+
+  /* Samples loop unrolled by 2 */
+  while(blkCnt > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+
+    /* Address modifier index of coefficient buffer */
+    j = 1u;
+
+    /* Loop over the Interpolation factor. */
+    i = (S->L);
+
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      acc0 = 0;
+      acc1 = 0;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (S->L - j);
+
+      /* Loop over the polyPhase length. Unroll by a factor of 4.        
+       ** Repeat until we've computed numTaps-(4*S->L) coefficients. */
+      tapCnt = phaseLen >> 2u;
+
+      x0 = *(ptr1++);
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read the input sample */
+        x1 = *(ptr1++);
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x0 *c0;
+        acc1 += (q63_t) x1 *c0;
+
+
+        /* Read the coefficient */
+        c0 = *(ptr2 + S->L);
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x1 *c0;
+        acc1 += (q63_t) x0 *c0;
+
+
+        /* Read the coefficient */
+        c0 = *(ptr2 + S->L * 2);
+
+        /* Read the input sample */
+        x1 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x0 *c0;
+        acc1 += (q63_t) x1 *c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2 + S->L * 3);
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x1 *c0;
+        acc1 += (q63_t) x0 *c0;
+
+
+        /* Upsampling is done by stuffing L-1 zeros between each sample.        
+         * So instead of multiplying zeros with coefficients,        
+         * Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += 4 * S->L;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */
+      tapCnt = phaseLen % 0x4u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read the input sample */
+        x1 = *(ptr1++);
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x0 *c0;
+        acc1 += (q63_t) x1 *c0;
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* update states for next sample processing */
+        x0 = x1;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* The result is in the accumulator, store in the destination buffer. */
+      *pDst = (q15_t) (__SSAT((acc0 >> 15), 16));
+      *(pDst + S->L) = (q15_t) (__SSAT((acc1 >> 15), 16));
+
+      pDst++;
+
+      /* Increment the address modifier index of coefficient buffer */
+      j++;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1        
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 2;
+
+    pDst += S->L;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 2, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blkCntN2;
+
+  /* Loop over the blockSize. */
+  while(blkCnt > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Address modifier index of coefficient buffer */
+    j = 1u;
+
+    /* Loop over the Interpolation factor. */
+    i = S->L;
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      sum0 = 0;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (S->L - j);
+
+      /* Loop over the polyPhase length. Unroll by a factor of 4.        
+       ** Repeat until we've computed numTaps-(4*S->L) coefficients. */
+      tapCnt = phaseLen >> 2;
+      while(tapCnt > 0u)
+      {
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Upsampling is done by stuffing L-1 zeros between each sample.        
+         * So instead of multiplying zeros with coefficients,        
+         * Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */
+      tapCnt = phaseLen & 0x3u;
+
+      while(tapCnt > 0u)
+      {
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* The result is in the accumulator, store in the destination buffer. */
+      *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16));
+
+      j++;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1        
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+  /* Processing is complete.    
+   ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer.    
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = ((uint32_t) phaseLen - 1u) >> 2u;
+
+  /* copy data */
+  while(i > 0u)
+  {
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+
+#else
+
+    *pStateCurnt++ = *pState++;
+	*pStateCurnt++ = *pState++;
+	*pStateCurnt++ = *pState++;
+	*pStateCurnt++ = *pState++;
+	
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+	
+	/* Decrement the loop counter */
+    i--;
+  }
+
+  i = ((uint32_t) phaseLen - 1u) % 0x04u;
+
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+}
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+void arm_fir_interpolate_q15(
+  const arm_fir_interpolate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer                                            */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer                                      */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state                */
+  q15_t *ptr1, *ptr2;                            /* Temporary pointers for state and coefficient buffers     */
+  q63_t sum;                                     /* Accumulator */
+  q15_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */
+  uint32_t i, blkCnt, tapCnt;                    /* Loop counters                                            */
+  uint16_t phaseLen = S->phaseLength;            /* Length of each polyphase filter component */
+
+
+  /* S->pState buffer contains previous frame (phaseLen - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (phaseLen - 1u);
+
+  /* Total number of intput samples */
+  blkCnt = blockSize;
+
+  /* Loop over the blockSize. */
+  while(blkCnt > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Loop over the Interpolation factor. */
+    i = S->L;
+
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      sum = 0;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (i - 1u);
+
+      /* Loop over the polyPhase length */
+      tapCnt = (uint32_t) phaseLen;
+
+      while(tapCnt > 0u)
+      {
+        /* Read the coefficient */
+        c0 = *ptr2;
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *ptr1++;
+
+        /* Perform the multiply-accumulate */
+        sum += ((q31_t) x0 * c0);
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* Store the result after converting to 1.15 format in the destination buffer */
+      *pDst++ = (q15_t) (__SSAT((sum >> 15), 16));
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1           
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last phaseLen - 1 samples to the start of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  i = (uint32_t) phaseLen - 1u;
+
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+}
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+
+ /**    
+  * @} end of FIR_Interpolate group    
+  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,504 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_fir_interpolate_q31.c    
+*    
+* Description:	Q31 FIR interpolation.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Interpolate    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q31 FIR interpolator.    
+ * @param[in] *S        points to an instance of the Q31 FIR interpolator structure.    
+ * @param[in] *pSrc     points to the block of input data.    
+ * @param[out] *pDst    points to the block of output data.    
+ * @param[in] blockSize number of input samples to process per call.    
+ * @return none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around rather than clip.    
+ * In order to avoid overflows completely the input signal must be scaled down by <code>1/(numTaps/L)</code>.    
+ * since <code>numTaps/L</code> additions occur per output sample.    
+ * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.    
+ */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+void arm_fir_interpolate_q31(
+  const arm_fir_interpolate_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pState = S->pState;                     /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q31_t *ptr1, *ptr2;                            /* Temporary pointers for state and coefficient buffers */
+  q63_t sum0;                                    /* Accumulators */
+  q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */
+  uint32_t i, blkCnt, j;                         /* Loop counters */
+  uint16_t phaseLen = S->phaseLength, tapCnt;    /* Length of each polyphase filter component */
+
+  uint32_t blkCntN2;
+  q63_t acc0, acc1;
+  q31_t x1;
+
+  /* S->pState buffer contains previous frame (phaseLen - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + ((q31_t) phaseLen - 1);
+
+  /* Initialise  blkCnt */
+  blkCnt = blockSize / 2;
+  blkCntN2 = blockSize - (2 * blkCnt);
+
+  /* Samples loop unrolled by 2 */
+  while(blkCnt > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+
+    /* Address modifier index of coefficient buffer */
+    j = 1u;
+
+    /* Loop over the Interpolation factor. */
+    i = (S->L);
+
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      acc0 = 0;
+      acc1 = 0;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (S->L - j);
+
+      /* Loop over the polyPhase length. Unroll by a factor of 4.        
+       ** Repeat until we've computed numTaps-(4*S->L) coefficients. */
+      tapCnt = phaseLen >> 2u;
+
+      x0 = *(ptr1++);
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read the input sample */
+        x1 = *(ptr1++);
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x0 *c0;
+        acc1 += (q63_t) x1 *c0;
+
+
+        /* Read the coefficient */
+        c0 = *(ptr2 + S->L);
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x1 *c0;
+        acc1 += (q63_t) x0 *c0;
+
+
+        /* Read the coefficient */
+        c0 = *(ptr2 + S->L * 2);
+
+        /* Read the input sample */
+        x1 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x0 *c0;
+        acc1 += (q63_t) x1 *c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2 + S->L * 3);
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x1 *c0;
+        acc1 += (q63_t) x0 *c0;
+
+
+        /* Upsampling is done by stuffing L-1 zeros between each sample.        
+         * So instead of multiplying zeros with coefficients,        
+         * Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += 4 * S->L;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */
+      tapCnt = phaseLen % 0x4u;
+
+      while(tapCnt > 0u)
+      {
+
+        /* Read the input sample */
+        x1 = *(ptr1++);
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Perform the multiply-accumulate */
+        acc0 += (q63_t) x0 *c0;
+        acc1 += (q63_t) x1 *c0;
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* update states for next sample processing */
+        x0 = x1;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* The result is in the accumulator, store in the destination buffer. */
+      *pDst = (q31_t) (acc0 >> 31);
+      *(pDst + S->L) = (q31_t) (acc1 >> 31);
+
+
+      pDst++;
+
+      /* Increment the address modifier index of coefficient buffer */
+      j++;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1        
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 2;
+
+    pDst += S->L;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 2, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blkCntN2;
+
+  /* Loop over the blockSize. */
+  while(blkCnt > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Address modifier index of coefficient buffer */
+    j = 1u;
+
+    /* Loop over the Interpolation factor. */
+    i = S->L;
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      sum0 = 0;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (S->L - j);
+
+      /* Loop over the polyPhase length. Unroll by a factor of 4.        
+       ** Repeat until we've computed numTaps-(4*S->L) coefficients. */
+      tapCnt = phaseLen >> 2;
+      while(tapCnt > 0u)
+      {
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Upsampling is done by stuffing L-1 zeros between each sample.        
+         * So instead of multiplying zeros with coefficients,        
+         * Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */
+      tapCnt = phaseLen & 0x3u;
+
+      while(tapCnt > 0u)
+      {
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *(ptr1++);
+
+        /* Perform the multiply-accumulate */
+        sum0 += (q63_t) x0 *c0;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* The result is in the accumulator, store in the destination buffer. */
+      *pDst++ = (q31_t) (sum0 >> 31);
+
+      /* Increment the address modifier index of coefficient buffer */
+      j++;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1        
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.        
+   ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer.        
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  tapCnt = (phaseLen - 1u) >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+  tapCnt = (phaseLen - 1u) % 0x04u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+}
+
+
+#else
+
+void arm_fir_interpolate_q31(
+  const arm_fir_interpolate_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pState = S->pState;                     /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q31_t *ptr1, *ptr2;                            /* Temporary pointers for state and coefficient buffers */
+
+  /* Run the below code for Cortex-M0 */
+
+  q63_t sum;                                     /* Accumulator */
+  q31_t x0, c0;                                  /* Temporary variables to hold state and coefficient values */
+  uint32_t i, blkCnt;                            /* Loop counters */
+  uint16_t phaseLen = S->phaseLength, tapCnt;    /* Length of each polyphase filter component */
+
+
+  /* S->pState buffer contains previous frame (phaseLen - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + ((q31_t) phaseLen - 1);
+
+  /* Total number of intput samples */
+  blkCnt = blockSize;
+
+  /* Loop over the blockSize. */
+  while(blkCnt > 0u)
+  {
+    /* Copy new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Loop over the Interpolation factor. */
+    i = S->L;
+
+    while(i > 0u)
+    {
+      /* Set accumulator to zero */
+      sum = 0;
+
+      /* Initialize state pointer */
+      ptr1 = pState;
+
+      /* Initialize coefficient pointer */
+      ptr2 = pCoeffs + (i - 1u);
+
+      tapCnt = phaseLen;
+
+      while(tapCnt > 0u)
+      {
+        /* Read the coefficient */
+        c0 = *(ptr2);
+
+        /* Increment the coefficient pointer by interpolation factor times. */
+        ptr2 += S->L;
+
+        /* Read the input sample */
+        x0 = *ptr1++;
+
+        /* Perform the multiply-accumulate */
+        sum += (q63_t) x0 *c0;
+
+        /* Decrement the loop counter */
+        tapCnt--;
+      }
+
+      /* The result is in the accumulator, store in the destination buffer. */
+      *pDst++ = (q31_t) (sum >> 31);
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 1           
+     * to process the next group of interpolation factor number samples */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  tapCnt = phaseLen - 1u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+}
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+ /**    
+  * @} end of FIR_Interpolate group    
+  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,506 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_lattice_f32.c    
+*    
+* Description:	Processing function for the floating-point FIR Lattice filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup FIR_Lattice Finite Impulse Response (FIR) Lattice Filters    
+ *    
+ * This set of functions implements Finite Impulse Response (FIR) lattice filters    
+ * for Q15, Q31 and floating-point data types.  Lattice filters are used in a     
+ * variety of adaptive filter applications.  The filter structure is feedforward and    
+ * the net impulse response is finite length.    
+ * The functions operate on blocks    
+ * of input and output data and each call to the function processes    
+ * <code>blockSize</code> samples through the filter.  <code>pSrc</code> and    
+ * <code>pDst</code> point to input and output arrays containing <code>blockSize</code> values.    
+ *    
+ * \par Algorithm:    
+ * \image html FIRLattice.gif "Finite Impulse Response Lattice filter"    
+ * The following difference equation is implemented:    
+ * <pre>    
+ *    f0[n] = g0[n] = x[n]    
+ *    fm[n] = fm-1[n] + km * gm-1[n-1] for m = 1, 2, ...M    
+ *    gm[n] = km * fm-1[n] + gm-1[n-1] for m = 1, 2, ...M    
+ *    y[n] = fM[n]    
+ * </pre>    
+ * \par    
+ * <code>pCoeffs</code> points to tha array of reflection coefficients of size <code>numStages</code>.    
+ * Reflection Coefficients are stored in the following order.    
+ * \par    
+ * <pre>    
+ *    {k1, k2, ..., kM}    
+ * </pre>    
+ * where M is number of stages    
+ * \par    
+ * <code>pState</code> points to a state array of size <code>numStages</code>.    
+ * The state variables (g values) hold previous inputs and are stored in the following order.    
+ * <pre>    
+ *    {g0[n], g1[n], g2[n] ...gM-1[n]}    
+ * </pre>    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter.    
+ * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.    
+ * There are separate instance structure declarations for each of the 3 supported data types.    
+ *    
+ * \par Initialization Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.    
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * numStages, pCoeffs, pState. Also set all of the values in pState to zero. 
+ *    
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * Set the values in the state buffer to zeros and then manually initialize the instance structure as follows:    
+ * <pre>    
+ *arm_fir_lattice_instance_f32 S = {numStages, pState, pCoeffs};    
+ *arm_fir_lattice_instance_q31 S = {numStages, pState, pCoeffs};    
+ *arm_fir_lattice_instance_q15 S = {numStages, pState, pCoeffs};    
+ * </pre>    
+ * \par    
+ * where <code>numStages</code> is the number of stages in the filter; <code>pState</code> is the address of the state buffer;    
+ * <code>pCoeffs</code> is the address of the coefficient buffer.    
+ * \par Fixed-Point Behavior    
+ * Care must be taken when using the fixed-point versions of the FIR Lattice filter functions.    
+ * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.    
+ * Refer to the function specific documentation below for usage guidelines.    
+ */
+
+/**    
+ * @addtogroup FIR_Lattice    
+ * @{    
+ */
+
+
+  /**    
+   * @brief Processing function for the floating-point FIR lattice filter.    
+   * @param[in]  *S        points to an instance of the floating-point FIR lattice structure.    
+   * @param[in]  *pSrc     points to the block of input data.    
+   * @param[out] *pDst     points to the block of output data    
+   * @param[in]  blockSize number of samples to process.    
+   * @return none.    
+   */
+
+void arm_fir_lattice_f32(
+  const arm_fir_lattice_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t *pState;                             /* State pointer */
+  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+  float32_t *px;                                 /* temporary state pointer */
+  float32_t *pk;                                 /* temporary coefficient pointer */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t fcurr1, fnext1, gcurr1, gnext1;      /* temporary variables for first sample in loop unrolling */
+  float32_t fcurr2, fnext2, gnext2;              /* temporary variables for second sample in loop unrolling */
+  float32_t fcurr3, fnext3, gnext3;              /* temporary variables for third sample in loop unrolling */
+  float32_t fcurr4, fnext4, gnext4;              /* temporary variables for fourth sample in loop unrolling */
+  uint32_t numStages = S->numStages;             /* Number of stages in the filter */
+  uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */
+
+  gcurr1 = 0.0f;
+  pState = &S->pState[0];
+
+  blkCnt = blockSize >> 2;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+    /* Read two samples from input buffer */
+    /* f0(n) = x(n) */
+    fcurr1 = *pSrc++;
+    fcurr2 = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = (pCoeffs);
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Read g0(n-1) from state */
+    gcurr1 = *px;
+
+    /* Process first sample for first tap */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext1 = fcurr1 + ((*pk) * gcurr1);
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext1 = (fcurr1 * (*pk)) + gcurr1;
+
+    /* Process second sample for first tap */
+    /* for sample 2 processing */
+    fnext2 = fcurr2 + ((*pk) * fcurr1);
+    gnext2 = (fcurr2 * (*pk)) + fcurr1;
+
+    /* Read next two samples from input buffer */
+    /* f0(n+2) = x(n+2) */
+    fcurr3 = *pSrc++;
+    fcurr4 = *pSrc++;
+
+    /* Copy only last input samples into the state buffer    
+       which will be used for next four samples processing */
+    *px++ = fcurr4;
+
+    /* Process third sample for first tap */
+    fnext3 = fcurr3 + ((*pk) * fcurr2);
+    gnext3 = (fcurr3 * (*pk)) + fcurr2;
+
+    /* Process fourth sample for first tap */
+    fnext4 = fcurr4 + ((*pk) * fcurr3);
+    gnext4 = (fcurr4 * (*pk++)) + fcurr3;
+
+    /* Update of f values for next coefficient set processing */
+    fcurr1 = fnext1;
+    fcurr2 = fnext2;
+    fcurr3 = fnext3;
+    fcurr4 = fnext4;
+
+    /* Loop unrolling.  Process 4 taps at a time . */
+    stageCnt = (numStages - 1u) >> 2u;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.    
+     ** Repeat until we've computed numStages-3 coefficients. */
+
+    /* Process 2nd, 3rd, 4th and 5th taps ... here */
+    while(stageCnt > 0u)
+    {
+      /* Read g1(n-1), g3(n-1) .... from state */
+      gcurr1 = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = gnext4;
+
+      /* Process first sample for 2nd, 6th .. tap */
+      /* Sample processing for K2, K6.... */
+      /* f2(n) = f1(n) +  K2 * g1(n-1) */
+      fnext1 = fcurr1 + ((*pk) * gcurr1);
+      /* Process second sample for 2nd, 6th .. tap */
+      /* for sample 2 processing */
+      fnext2 = fcurr2 + ((*pk) * gnext1);
+      /* Process third sample for 2nd, 6th .. tap */
+      fnext3 = fcurr3 + ((*pk) * gnext2);
+      /* Process fourth sample for 2nd, 6th .. tap */
+      fnext4 = fcurr4 + ((*pk) * gnext3);
+
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      /* Calculation of state values for next stage */
+      gnext4 = (fcurr4 * (*pk)) + gnext3;
+      gnext3 = (fcurr3 * (*pk)) + gnext2;
+      gnext2 = (fcurr2 * (*pk)) + gnext1;
+      gnext1 = (fcurr1 * (*pk++)) + gcurr1;
+
+
+      /* Read g2(n-1), g4(n-1) .... from state */
+      gcurr1 = *px;
+
+      /* save g2(n) in state buffer */
+      *px++ = gnext4;
+
+      /* Sample processing for K3, K7.... */
+      /* Process first sample for 3rd, 7th .. tap */
+      /* f3(n) = f2(n) +  K3 * g2(n-1) */
+      fcurr1 = fnext1 + ((*pk) * gcurr1);
+      /* Process second sample for 3rd, 7th .. tap */
+      fcurr2 = fnext2 + ((*pk) * gnext1);
+      /* Process third sample for 3rd, 7th .. tap */
+      fcurr3 = fnext3 + ((*pk) * gnext2);
+      /* Process fourth sample for 3rd, 7th .. tap */
+      fcurr4 = fnext4 + ((*pk) * gnext3);
+
+      /* Calculation of state values for next stage */
+      /* g3(n) = f2(n) * K3  +  g2(n-1) */
+      gnext4 = (fnext4 * (*pk)) + gnext3;
+      gnext3 = (fnext3 * (*pk)) + gnext2;
+      gnext2 = (fnext2 * (*pk)) + gnext1;
+      gnext1 = (fnext1 * (*pk++)) + gcurr1;
+
+
+      /* Read g1(n-1), g3(n-1) .... from state */
+      gcurr1 = *px;
+
+      /* save g3(n) in state buffer */
+      *px++ = gnext4;
+
+      /* Sample processing for K4, K8.... */
+      /* Process first sample for 4th, 8th .. tap */
+      /* f4(n) = f3(n) +  K4 * g3(n-1) */
+      fnext1 = fcurr1 + ((*pk) * gcurr1);
+      /* Process second sample for 4th, 8th .. tap */
+      /* for sample 2 processing */
+      fnext2 = fcurr2 + ((*pk) * gnext1);
+      /* Process third sample for 4th, 8th .. tap */
+      fnext3 = fcurr3 + ((*pk) * gnext2);
+      /* Process fourth sample for 4th, 8th .. tap */
+      fnext4 = fcurr4 + ((*pk) * gnext3);
+
+      /* g4(n) = f3(n) * K4  +  g3(n-1) */
+      /* Calculation of state values for next stage */
+      gnext4 = (fcurr4 * (*pk)) + gnext3;
+      gnext3 = (fcurr3 * (*pk)) + gnext2;
+      gnext2 = (fcurr2 * (*pk)) + gnext1;
+      gnext1 = (fcurr1 * (*pk++)) + gcurr1;
+
+      /* Read g2(n-1), g4(n-1) .... from state */
+      gcurr1 = *px;
+
+      /* save g4(n) in state buffer */
+      *px++ = gnext4;
+
+      /* Sample processing for K5, K9.... */
+      /* Process first sample for 5th, 9th .. tap */
+      /* f5(n) = f4(n) +  K5 * g4(n-1) */
+      fcurr1 = fnext1 + ((*pk) * gcurr1);
+      /* Process second sample for 5th, 9th .. tap */
+      fcurr2 = fnext2 + ((*pk) * gnext1);
+      /* Process third sample for 5th, 9th .. tap */
+      fcurr3 = fnext3 + ((*pk) * gnext2);
+      /* Process fourth sample for 5th, 9th .. tap */
+      fcurr4 = fnext4 + ((*pk) * gnext3);
+
+      /* Calculation of state values for next stage */
+      /* g5(n) = f4(n) * K5  +  g4(n-1) */
+      gnext4 = (fnext4 * (*pk)) + gnext3;
+      gnext3 = (fnext3 * (*pk)) + gnext2;
+      gnext2 = (fnext2 * (*pk)) + gnext1;
+      gnext1 = (fnext1 * (*pk++)) + gcurr1;
+
+      stageCnt--;
+    }
+
+    /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */
+    stageCnt = (numStages - 1u) % 0x4u;
+
+    while(stageCnt > 0u)
+    {
+      gcurr1 = *px;
+
+      /* save g value in state buffer */
+      *px++ = gnext4;
+
+      /* Process four samples for last three taps here */
+      fnext1 = fcurr1 + ((*pk) * gcurr1);
+      fnext2 = fcurr2 + ((*pk) * gnext1);
+      fnext3 = fcurr3 + ((*pk) * gnext2);
+      fnext4 = fcurr4 + ((*pk) * gnext3);
+
+      /* g1(n) = f0(n) * K1  +  g0(n-1) */
+      gnext4 = (fcurr4 * (*pk)) + gnext3;
+      gnext3 = (fcurr3 * (*pk)) + gnext2;
+      gnext2 = (fcurr2 * (*pk)) + gnext1;
+      gnext1 = (fcurr1 * (*pk++)) + gcurr1;
+
+      /* Update of f values for next coefficient set processing */
+      fcurr1 = fnext1;
+      fcurr2 = fnext2;
+      fcurr3 = fnext3;
+      fcurr4 = fnext4;
+
+      stageCnt--;
+
+    }
+
+    /* The results in the 4 accumulators, store in the destination buffer. */
+    /* y(n) = fN(n) */
+    *pDst++ = fcurr1;
+    *pDst++ = fcurr2;
+    *pDst++ = fcurr3;
+    *pDst++ = fcurr4;
+
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* f0(n) = x(n) */
+    fcurr1 = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = (pCoeffs);
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* read g2(n) from state buffer */
+    gcurr1 = *px;
+
+    /* for sample 1 processing */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext1 = fcurr1 + ((*pk) * gcurr1);
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext1 = (fcurr1 * (*pk++)) + gcurr1;
+
+    /* save g1(n) in state buffer */
+    *px++ = fcurr1;
+
+    /* f1(n) is saved in fcurr1    
+       for next stage processing */
+    fcurr1 = fnext1;
+
+    stageCnt = (numStages - 1u);
+
+    /* stage loop */
+    while(stageCnt > 0u)
+    {
+      /* read g2(n) from state buffer */
+      gcurr1 = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = gnext1;
+
+      /* Sample processing for K2, K3.... */
+      /* f2(n) = f1(n) +  K2 * g1(n-1) */
+      fnext1 = fcurr1 + ((*pk) * gcurr1);
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      gnext1 = (fcurr1 * (*pk++)) + gcurr1;
+
+      /* f1(n) is saved in fcurr1    
+         for next stage processing */
+      fcurr1 = fnext1;
+
+      stageCnt--;
+
+    }
+
+    /* y(n) = fN(n) */
+    *pDst++ = fcurr1;
+
+    blkCnt--;
+
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  float32_t fcurr, fnext, gcurr, gnext;          /* temporary variables */
+  uint32_t numStages = S->numStages;             /* Length of the filter */
+  uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */
+
+  pState = &S->pState[0];
+
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* f0(n) = x(n) */
+    fcurr = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = pCoeffs;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* read g0(n-1) from state buffer */
+    gcurr = *px;
+
+    /* for sample 1 processing */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext = fcurr + ((*pk) * gcurr);
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext = (fcurr * (*pk++)) + gcurr;
+
+    /* save f0(n) in state buffer */
+    *px++ = fcurr;
+
+    /* f1(n) is saved in fcurr            
+       for next stage processing */
+    fcurr = fnext;
+
+    stageCnt = (numStages - 1u);
+
+    /* stage loop */
+    while(stageCnt > 0u)
+    {
+      /* read g2(n) from state buffer */
+      gcurr = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = gnext;
+
+      /* Sample processing for K2, K3.... */
+      /* f2(n) = f1(n) +  K2 * g1(n-1) */
+      fnext = fcurr + ((*pk) * gcurr);
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      gnext = (fcurr * (*pk++)) + gcurr;
+
+      /* f1(n) is saved in fcurr1            
+         for next stage processing */
+      fcurr = fnext;
+
+      stageCnt--;
+
+    }
+
+    /* y(n) = fN(n) */
+    *pDst++ = fcurr;
+
+    blkCnt--;
+
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,83 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_lattice_init_f32.c    
+*    
+* Description:  Floating-point FIR Lattice filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Lattice    
+ * @{    
+ */
+
+/**    
+ * @brief Initialization function for the floating-point FIR lattice filter.    
+ * @param[in] *S points to an instance of the floating-point FIR lattice structure.    
+ * @param[in] numStages  number of filter stages.    
+ * @param[in] *pCoeffs points to the coefficient buffer.  The array is of length numStages.    
+ * @param[in] *pState points to the state buffer.  The array is of length numStages.    
+ * @return none.    
+ */
+
+void arm_fir_lattice_init_f32(
+  arm_fir_lattice_instance_f32 * S,
+  uint16_t numStages,
+  float32_t * pCoeffs,
+  float32_t * pState)
+{
+  /* Assign filter taps */
+  S->numStages = numStages;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always numStages */
+  memset(pState, 0, (numStages) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,83 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_lattice_init_q15.c    
+*    
+* Description:  Q15 FIR Lattice filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Lattice    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for the Q15 FIR lattice filter.    
+   * @param[in] *S points to an instance of the Q15 FIR lattice structure.    
+   * @param[in] numStages  number of filter stages.    
+   * @param[in] *pCoeffs points to the coefficient buffer.  The array is of length numStages.     
+   * @param[in] *pState points to the state buffer.  The array is of length numStages.     
+   * @return none.    
+   */
+
+void arm_fir_lattice_init_q15(
+  arm_fir_lattice_instance_q15 * S,
+  uint16_t numStages,
+  q15_t * pCoeffs,
+  q15_t * pState)
+{
+  /* Assign filter taps */
+  S->numStages = numStages;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always numStages */
+  memset(pState, 0, (numStages) * sizeof(q15_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,83 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_lattice_init_q31.c    
+*    
+* Description:  Q31 FIR lattice filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Lattice    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for the Q31 FIR lattice filter.    
+   * @param[in] *S points to an instance of the Q31 FIR lattice structure.    
+   * @param[in] numStages  number of filter stages.    
+   * @param[in] *pCoeffs points to the coefficient buffer.  The array is of length numStages.    
+   * @param[in] *pState points to the state buffer.   The array is of length numStages.    
+   * @return none.    
+   */
+
+void arm_fir_lattice_init_q31(
+  arm_fir_lattice_instance_q31 * S,
+  uint16_t numStages,
+  q31_t * pCoeffs,
+  q31_t * pState)
+{
+  /* Assign filter taps */
+  S->numStages = numStages;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always numStages */
+  memset(pState, 0, (numStages) * sizeof(q31_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,536 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_lattice_q15.c    
+*    
+* Description:	Q15 FIR lattice filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Lattice    
+ * @{    
+ */
+
+
+/**    
+ * @brief Processing function for the Q15 FIR lattice filter.    
+ * @param[in]  *S        points to an instance of the Q15 FIR lattice structure.    
+ * @param[in]  *pSrc     points to the block of input data.    
+ * @param[out] *pDst     points to the block of output data    
+ * @param[in]  blockSize number of samples to process.    
+ * @return none.    
+ */
+
+void arm_fir_lattice_q15(
+  const arm_fir_lattice_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState;                                 /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *px;                                     /* temporary state pointer */
+  q15_t *pk;                                     /* temporary coefficient pointer */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t fcurnt1, fnext1, gcurnt1 = 0, gnext1;    /* temporary variables for first sample in loop unrolling */
+  q31_t fcurnt2, fnext2, gnext2;                 /* temporary variables for second sample in loop unrolling */
+  q31_t fcurnt3, fnext3, gnext3;                 /* temporary variables for third sample in loop unrolling */
+  q31_t fcurnt4, fnext4, gnext4;                 /* temporary variables for fourth sample in loop unrolling */
+  uint32_t numStages = S->numStages;             /* Number of stages in the filter */
+  uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */
+
+  pState = &S->pState[0];
+
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+    /* Read two samples from input buffer */
+    /* f0(n) = x(n) */
+    fcurnt1 = *pSrc++;
+    fcurnt2 = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = (pCoeffs);
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Read g0(n-1) from state */
+    gcurnt1 = *px;
+
+    /* Process first sample for first tap */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fcurnt1;
+    fnext1 = __SSAT(fnext1, 16);
+
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext1 = (q31_t) ((fcurnt1 * (*pk)) >> 15u) + gcurnt1;
+    gnext1 = __SSAT(gnext1, 16);
+
+    /* Process second sample for first tap */
+    /* for sample 2 processing */
+    fnext2 = (q31_t) ((fcurnt1 * (*pk)) >> 15u) + fcurnt2;
+    fnext2 = __SSAT(fnext2, 16);
+
+    gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + fcurnt1;
+    gnext2 = __SSAT(gnext2, 16);
+
+
+    /* Read next two samples from input buffer */
+    /* f0(n+2) = x(n+2) */
+    fcurnt3 = *pSrc++;
+    fcurnt4 = *pSrc++;
+
+    /* Copy only last input samples into the state buffer    
+       which is used for next four samples processing */
+    *px++ = (q15_t) fcurnt4;
+
+    /* Process third sample for first tap */
+    fnext3 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + fcurnt3;
+    fnext3 = __SSAT(fnext3, 16);
+    gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + fcurnt2;
+    gnext3 = __SSAT(gnext3, 16);
+
+    /* Process fourth sample for first tap */
+    fnext4 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + fcurnt4;
+    fnext4 = __SSAT(fnext4, 16);
+    gnext4 = (q31_t) ((fcurnt4 * (*pk++)) >> 15u) + fcurnt3;
+    gnext4 = __SSAT(gnext4, 16);
+
+    /* Update of f values for next coefficient set processing */
+    fcurnt1 = fnext1;
+    fcurnt2 = fnext2;
+    fcurnt3 = fnext3;
+    fcurnt4 = fnext4;
+
+
+    /* Loop unrolling.  Process 4 taps at a time . */
+    stageCnt = (numStages - 1u) >> 2;
+
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.    
+     ** Repeat until we've computed numStages-3 coefficients. */
+
+    /* Process 2nd, 3rd, 4th and 5th taps ... here */
+    while(stageCnt > 0u)
+    {
+      /* Read g1(n-1), g3(n-1) .... from state */
+      gcurnt1 = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = (q15_t) gnext4;
+
+      /* Process first sample for 2nd, 6th .. tap */
+      /* Sample processing for K2, K6.... */
+      /* f1(n) = f0(n) +  K1 * g0(n-1) */
+      fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fcurnt1;
+      fnext1 = __SSAT(fnext1, 16);
+
+
+      /* Process second sample for 2nd, 6th .. tap */
+      /* for sample 2 processing */
+      fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fcurnt2;
+      fnext2 = __SSAT(fnext2, 16);
+      /* Process third sample for 2nd, 6th .. tap */
+      fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fcurnt3;
+      fnext3 = __SSAT(fnext3, 16);
+      /* Process fourth sample for 2nd, 6th .. tap */
+      /* fnext4 = fcurnt4 + (*pk) * gnext3; */
+      fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fcurnt4;
+      fnext4 = __SSAT(fnext4, 16);
+
+      /* g1(n) = f0(n) * K1  +  g0(n-1) */
+      /* Calculation of state values for next stage */
+      gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15u) + gnext3;
+      gnext4 = __SSAT(gnext4, 16);
+      gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + gnext2;
+      gnext3 = __SSAT(gnext3, 16);
+
+      gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + gnext1;
+      gnext2 = __SSAT(gnext2, 16);
+
+      gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15u) + gcurnt1;
+      gnext1 = __SSAT(gnext1, 16);
+
+
+      /* Read g2(n-1), g4(n-1) .... from state */
+      gcurnt1 = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = (q15_t) gnext4;
+
+      /* Sample processing for K3, K7.... */
+      /* Process first sample for 3rd, 7th .. tap */
+      /* f3(n) = f2(n) +  K3 * g2(n-1) */
+      fcurnt1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fnext1;
+      fcurnt1 = __SSAT(fcurnt1, 16);
+
+      /* Process second sample for 3rd, 7th .. tap */
+      fcurnt2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fnext2;
+      fcurnt2 = __SSAT(fcurnt2, 16);
+
+      /* Process third sample for 3rd, 7th .. tap */
+      fcurnt3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fnext3;
+      fcurnt3 = __SSAT(fcurnt3, 16);
+
+      /* Process fourth sample for 3rd, 7th .. tap */
+      fcurnt4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fnext4;
+      fcurnt4 = __SSAT(fcurnt4, 16);
+
+      /* Calculation of state values for next stage */
+      /* g3(n) = f2(n) * K3  +  g2(n-1) */
+      gnext4 = (q31_t) ((fnext4 * (*pk)) >> 15u) + gnext3;
+      gnext4 = __SSAT(gnext4, 16);
+
+      gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15u) + gnext2;
+      gnext3 = __SSAT(gnext3, 16);
+
+      gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15u) + gnext1;
+      gnext2 = __SSAT(gnext2, 16);
+
+      gnext1 = (q31_t) ((fnext1 * (*pk++)) >> 15u) + gcurnt1;
+      gnext1 = __SSAT(gnext1, 16);
+
+      /* Read g1(n-1), g3(n-1) .... from state */
+      gcurnt1 = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = (q15_t) gnext4;
+
+      /* Sample processing for K4, K8.... */
+      /* Process first sample for 4th, 8th .. tap */
+      /* f4(n) = f3(n) +  K4 * g3(n-1) */
+      fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fcurnt1;
+      fnext1 = __SSAT(fnext1, 16);
+
+      /* Process second sample for 4th, 8th .. tap */
+      /* for sample 2 processing */
+      fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fcurnt2;
+      fnext2 = __SSAT(fnext2, 16);
+
+      /* Process third sample for 4th, 8th .. tap */
+      fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fcurnt3;
+      fnext3 = __SSAT(fnext3, 16);
+
+      /* Process fourth sample for 4th, 8th .. tap */
+      fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fcurnt4;
+      fnext4 = __SSAT(fnext4, 16);
+
+      /* g4(n) = f3(n) * K4  +  g3(n-1) */
+      /* Calculation of state values for next stage */
+      gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15u) + gnext3;
+      gnext4 = __SSAT(gnext4, 16);
+
+      gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + gnext2;
+      gnext3 = __SSAT(gnext3, 16);
+
+      gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + gnext1;
+      gnext2 = __SSAT(gnext2, 16);
+      gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15u) + gcurnt1;
+      gnext1 = __SSAT(gnext1, 16);
+
+
+      /* Read g2(n-1), g4(n-1) .... from state */
+      gcurnt1 = *px;
+
+      /* save g4(n) in state buffer */
+      *px++ = (q15_t) gnext4;
+
+      /* Sample processing for K5, K9.... */
+      /* Process first sample for 5th, 9th .. tap */
+      /* f5(n) = f4(n) +  K5 * g4(n-1) */
+      fcurnt1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fnext1;
+      fcurnt1 = __SSAT(fcurnt1, 16);
+
+      /* Process second sample for 5th, 9th .. tap */
+      fcurnt2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fnext2;
+      fcurnt2 = __SSAT(fcurnt2, 16);
+
+      /* Process third sample for 5th, 9th .. tap */
+      fcurnt3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fnext3;
+      fcurnt3 = __SSAT(fcurnt3, 16);
+
+      /* Process fourth sample for 5th, 9th .. tap */
+      fcurnt4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fnext4;
+      fcurnt4 = __SSAT(fcurnt4, 16);
+
+      /* Calculation of state values for next stage */
+      /* g5(n) = f4(n) * K5  +  g4(n-1) */
+      gnext4 = (q31_t) ((fnext4 * (*pk)) >> 15u) + gnext3;
+      gnext4 = __SSAT(gnext4, 16);
+      gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15u) + gnext2;
+      gnext3 = __SSAT(gnext3, 16);
+      gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15u) + gnext1;
+      gnext2 = __SSAT(gnext2, 16);
+      gnext1 = (q31_t) ((fnext1 * (*pk++)) >> 15u) + gcurnt1;
+      gnext1 = __SSAT(gnext1, 16);
+
+      stageCnt--;
+    }
+
+    /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */
+    stageCnt = (numStages - 1u) % 0x4u;
+
+    while(stageCnt > 0u)
+    {
+      gcurnt1 = *px;
+
+      /* save g value in state buffer */
+      *px++ = (q15_t) gnext4;
+
+      /* Process four samples for last three taps here */
+      fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fcurnt1;
+      fnext1 = __SSAT(fnext1, 16);
+      fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fcurnt2;
+      fnext2 = __SSAT(fnext2, 16);
+
+      fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fcurnt3;
+      fnext3 = __SSAT(fnext3, 16);
+
+      fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fcurnt4;
+      fnext4 = __SSAT(fnext4, 16);
+
+      /* g1(n) = f0(n) * K1  +  g0(n-1) */
+      gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15u) + gnext3;
+      gnext4 = __SSAT(gnext4, 16);
+      gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + gnext2;
+      gnext3 = __SSAT(gnext3, 16);
+      gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + gnext1;
+      gnext2 = __SSAT(gnext2, 16);
+      gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15u) + gcurnt1;
+      gnext1 = __SSAT(gnext1, 16);
+
+      /* Update of f values for next coefficient set processing */
+      fcurnt1 = fnext1;
+      fcurnt2 = fnext2;
+      fcurnt3 = fnext3;
+      fcurnt4 = fnext4;
+
+      stageCnt--;
+
+    }
+
+    /* The results in the 4 accumulators, store in the destination buffer. */
+    /* y(n) = fN(n) */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pDst)++ = __PKHBT(fcurnt1, fcurnt2, 16);
+    *__SIMD32(pDst)++ = __PKHBT(fcurnt3, fcurnt4, 16);
+
+#else
+
+    *__SIMD32(pDst)++ = __PKHBT(fcurnt2, fcurnt1, 16);
+    *__SIMD32(pDst)++ = __PKHBT(fcurnt4, fcurnt3, 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* f0(n) = x(n) */
+    fcurnt1 = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = (pCoeffs);
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* read g2(n) from state buffer */
+    gcurnt1 = *px;
+
+    /* for sample 1 processing */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext1 = (((q31_t) gcurnt1 * (*pk)) >> 15u) + fcurnt1;
+    fnext1 = __SSAT(fnext1, 16);
+
+
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext1 = (((q31_t) fcurnt1 * (*pk++)) >> 15u) + gcurnt1;
+    gnext1 = __SSAT(gnext1, 16);
+
+    /* save g1(n) in state buffer */
+    *px++ = (q15_t) fcurnt1;
+
+    /* f1(n) is saved in fcurnt1    
+       for next stage processing */
+    fcurnt1 = fnext1;
+
+    stageCnt = (numStages - 1u);
+
+    /* stage loop */
+    while(stageCnt > 0u)
+    {
+      /* read g2(n) from state buffer */
+      gcurnt1 = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = (q15_t) gnext1;
+
+      /* Sample processing for K2, K3.... */
+      /* f2(n) = f1(n) +  K2 * g1(n-1) */
+      fnext1 = (((q31_t) gcurnt1 * (*pk)) >> 15u) + fcurnt1;
+      fnext1 = __SSAT(fnext1, 16);
+
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      gnext1 = (((q31_t) fcurnt1 * (*pk++)) >> 15u) + gcurnt1;
+      gnext1 = __SSAT(gnext1, 16);
+
+
+      /* f1(n) is saved in fcurnt1    
+         for next stage processing */
+      fcurnt1 = fnext1;
+
+      stageCnt--;
+
+    }
+
+    /* y(n) = fN(n) */
+    *pDst++ = __SSAT(fcurnt1, 16);
+
+
+    blkCnt--;
+
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t fcurnt, fnext, gcurnt, gnext;            /* temporary variables */
+  uint32_t numStages = S->numStages;             /* Length of the filter */
+  uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */
+
+  pState = &S->pState[0];
+
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* f0(n) = x(n) */
+    fcurnt = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = (pCoeffs);
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* read g0(n-1) from state buffer */
+    gcurnt = *px;
+
+    /* for sample 1 processing */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext = ((gcurnt * (*pk)) >> 15u) + fcurnt;
+    fnext = __SSAT(fnext, 16);
+
+
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext = ((fcurnt * (*pk++)) >> 15u) + gcurnt;
+    gnext = __SSAT(gnext, 16);
+
+    /* save f0(n) in state buffer */
+    *px++ = (q15_t) fcurnt;
+
+    /* f1(n) is saved in fcurnt            
+       for next stage processing */
+    fcurnt = fnext;
+
+    stageCnt = (numStages - 1u);
+
+    /* stage loop */
+    while(stageCnt > 0u)
+    {
+      /* read g1(n-1) from state buffer */
+      gcurnt = *px;
+
+      /* save g0(n-1) in state buffer */
+      *px++ = (q15_t) gnext;
+
+      /* Sample processing for K2, K3.... */
+      /* f2(n) = f1(n) +  K2 * g1(n-1) */
+      fnext = ((gcurnt * (*pk)) >> 15u) + fcurnt;
+      fnext = __SSAT(fnext, 16);
+
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      gnext = ((fcurnt * (*pk++)) >> 15u) + gcurnt;
+      gnext = __SSAT(gnext, 16);
+
+
+      /* f1(n) is saved in fcurnt            
+         for next stage processing */
+      fcurnt = fnext;
+
+      stageCnt--;
+
+    }
+
+    /* y(n) = fN(n) */
+    *pDst++ = __SSAT(fcurnt, 16);
+
+
+    blkCnt--;
+
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,353 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_lattice_q31.c    
+*    
+* Description:	Q31 FIR lattice filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Lattice    
+ * @{    
+ */
+
+
+/**    
+ * @brief Processing function for the Q31 FIR lattice filter.    
+ * @param[in]  *S        points to an instance of the Q31 FIR lattice structure.    
+ * @param[in]  *pSrc     points to the block of input data.    
+ * @param[out] *pDst     points to the block of output data    
+ * @param[in]  blockSize number of samples to process.    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * In order to avoid overflows the input signal must be scaled down by 2*log2(numStages) bits.    
+ */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+void arm_fir_lattice_q31(
+  const arm_fir_lattice_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pState;                                 /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *px;                                     /* temporary state pointer */
+  q31_t *pk;                                     /* temporary coefficient pointer */
+  q31_t fcurr1, fnext1, gcurr1 = 0, gnext1;      /* temporary variables for first sample in loop unrolling */
+  q31_t fcurr2, fnext2, gnext2;                  /* temporary variables for second sample in loop unrolling */
+  uint32_t numStages = S->numStages;             /* Length of the filter */
+  uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */
+  q31_t k;
+
+  pState = &S->pState[0];
+
+  blkCnt = blockSize >> 1u;
+
+  /* First part of the processing with loop unrolling.  Compute 2 outputs at a time.        
+     a second loop below computes the remaining 1 sample. */
+  while(blkCnt > 0u)
+  {
+    /* f0(n) = x(n) */
+    fcurr1 = *pSrc++;
+
+    /* f0(n) = x(n) */
+    fcurr2 = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = (pCoeffs);
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* read g0(n - 1) from state buffer */
+    gcurr1 = *px;
+
+    /* Read the reflection coefficient */
+    k = *pk++;
+
+    /* for sample 1 processing */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32);
+
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32);
+    fnext1 = fcurr1 + (fnext1 << 1u);
+    gnext1 = gcurr1 + (gnext1 << 1u);
+
+    /* for sample 1 processing */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext2 = (q31_t) (((q63_t) fcurr1 * k) >> 32);
+
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext2 = (q31_t) (((q63_t) fcurr2 * (k)) >> 32);
+    fnext2 = fcurr2 + (fnext2 << 1u);
+    gnext2 = fcurr1 + (gnext2 << 1u);
+
+    /* save g1(n) in state buffer */
+    *px++ = fcurr2;
+
+    /* f1(n) is saved in fcurr1        
+       for next stage processing */
+    fcurr1 = fnext1;
+    fcurr2 = fnext2;
+
+    stageCnt = (numStages - 1u);
+
+    /* stage loop */
+    while(stageCnt > 0u)
+    {
+
+      /* Read the reflection coefficient */
+      k = *pk++;
+
+      /* read g2(n) from state buffer */
+      gcurr1 = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = gnext2;
+
+      /* Sample processing for K2, K3.... */
+      /* f2(n) = f1(n) +  K2 * g1(n-1) */
+      fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32);
+      fnext2 = (q31_t) (((q63_t) gnext1 * k) >> 32);
+
+      fnext1 = fcurr1 + (fnext1 << 1u);
+      fnext2 = fcurr2 + (fnext2 << 1u);
+
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      gnext2 = (q31_t) (((q63_t) fcurr2 * (k)) >> 32);
+      gnext2 = gnext1 + (gnext2 << 1u);
+
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32);
+      gnext1 = gcurr1 + (gnext1 << 1u);
+
+      /* f1(n) is saved in fcurr1        
+         for next stage processing */
+      fcurr1 = fnext1;
+      fcurr2 = fnext2;
+
+      stageCnt--;
+
+    }
+
+    /* y(n) = fN(n) */
+    *pDst++ = fcurr1;
+    *pDst++ = fcurr2;
+
+    blkCnt--;
+
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x2u;
+
+  while(blkCnt > 0u)
+  {
+    /* f0(n) = x(n) */
+    fcurr1 = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = (pCoeffs);
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* read g0(n - 1) from state buffer */
+    gcurr1 = *px;
+
+    /* Read the reflection coefficient */
+    k = *pk++;
+
+    /* for sample 1 processing */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32);
+    fnext1 = fcurr1 + (fnext1 << 1u);
+
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32);
+    gnext1 = gcurr1 + (gnext1 << 1u);
+
+    /* save g1(n) in state buffer */
+    *px++ = fcurr1;
+
+    /* f1(n) is saved in fcurr1        
+       for next stage processing */
+    fcurr1 = fnext1;
+
+    stageCnt = (numStages - 1u);
+
+    /* stage loop */
+    while(stageCnt > 0u)
+    {
+      /* Read the reflection coefficient */
+      k = *pk++;
+
+      /* read g2(n) from state buffer */
+      gcurr1 = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = gnext1;
+
+      /* Sample processing for K2, K3.... */
+      /* f2(n) = f1(n) +  K2 * g1(n-1) */
+      fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32);
+      fnext1 = fcurr1 + (fnext1 << 1u);
+
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32);
+      gnext1 = gcurr1 + (gnext1 << 1u);
+
+      /* f1(n) is saved in fcurr1        
+         for next stage processing */
+      fcurr1 = fnext1;
+
+      stageCnt--;
+
+    }
+
+
+    /* y(n) = fN(n) */
+    *pDst++ = fcurr1;
+
+    blkCnt--;
+
+  }
+
+
+}
+
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+void arm_fir_lattice_q31(
+  const arm_fir_lattice_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pState;                                 /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *px;                                     /* temporary state pointer */
+  q31_t *pk;                                     /* temporary coefficient pointer */
+  q31_t fcurr, fnext, gcurr, gnext;              /* temporary variables */
+  uint32_t numStages = S->numStages;             /* Length of the filter */
+  uint32_t blkCnt, stageCnt;                     /* temporary variables for counts */
+
+  pState = &S->pState[0];
+
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* f0(n) = x(n) */
+    fcurr = *pSrc++;
+
+    /* Initialize coeff pointer */
+    pk = (pCoeffs);
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* read g0(n-1) from state buffer */
+    gcurr = *px;
+
+    /* for sample 1 processing */
+    /* f1(n) = f0(n) +  K1 * g0(n-1) */
+    fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr;
+    /* g1(n) = f0(n) * K1  +  g0(n-1) */
+    gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr;
+    /* save g1(n) in state buffer */
+    *px++ = fcurr;
+
+    /* f1(n) is saved in fcurr1            
+       for next stage processing */
+    fcurr = fnext;
+
+    stageCnt = (numStages - 1u);
+
+    /* stage loop */
+    while(stageCnt > 0u)
+    {
+      /* read g2(n) from state buffer */
+      gcurr = *px;
+
+      /* save g1(n) in state buffer */
+      *px++ = gnext;
+
+      /* Sample processing for K2, K3.... */
+      /* f2(n) = f1(n) +  K2 * g1(n-1) */
+      fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr;
+      /* g2(n) = f1(n) * K2  +  g1(n-1) */
+      gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr;
+
+      /* f1(n) is saved in fcurr1            
+         for next stage processing */
+      fcurr = fnext;
+
+      stageCnt--;
+
+    }
+
+    /* y(n) = fN(n) */
+    *pDst++ = fcurr;
+
+    blkCnt--;
+
+  }
+
+}
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+
+/**    
+ * @} end of FIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,691 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_q15.c    
+*    
+* Description:  Q15 FIR filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**       
+ * @ingroup groupFilters       
+ */
+
+/**       
+ * @addtogroup FIR       
+ * @{       
+ */
+
+/**       
+ * @brief Processing function for the Q15 FIR filter.       
+ * @param[in] *S points to an instance of the Q15 FIR structure.       
+ * @param[in] *pSrc points to the block of input data.       
+ * @param[out] *pDst points to the block of output data.       
+ * @param[in]  blockSize number of samples to process per call.       
+ * @return none.       
+ *   
+ *   
+ * \par Restrictions   
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE   
+ *	In this case input, output, state buffers should be aligned by 32-bit   
+ *   
+ * <b>Scaling and Overflow Behavior:</b>       
+ * \par       
+ * The function is implemented using a 64-bit internal accumulator.       
+ * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.       
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.       
+ * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.       
+ * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.       
+ * Lastly, the accumulator is saturated to yield a result in 1.15 format.       
+ *       
+ * \par       
+ * Refer to the function <code>arm_fir_fast_q15()</code> for a faster but less precise implementation of this function.       
+ */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+/* Run the below code for Cortex-M4 and Cortex-M3 */
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+
+void arm_fir_q15(
+  const arm_fir_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q15_t *px1;                                    /* Temporary q15 pointer for state buffer */
+  q15_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  q31_t x0, x1, x2, x3, c0;                      /* Temporary variables to hold SIMD state and coefficient values */
+  q63_t acc0, acc1, acc2, acc3;                  /* Accumulators */
+  uint32_t numTaps = S->numTaps;                 /* Number of taps in the filter */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+
+
+  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Apply loop unrolling and compute 4 output values simultaneously.       
+   * The variables acc0 ... acc3 hold output values that are being computed:       
+   *       
+   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]       
+   *    acc1 =  b[numTaps-1] * x[n-numTaps] +   b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]       
+   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] +   b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]       
+   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]       
+   */
+
+  blkCnt = blockSize >> 2;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.       
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Copy four new input samples into the state buffer.       
+     ** Use 32-bit SIMD to move the 16-bit data.  Only requires two copies. */
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++;
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++;
+
+    /* Set all accumulators to zero */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Initialize state pointer of type q15 */
+    px1 = pState;
+
+    /* Initialize coeff pointer of type q31 */
+    pb = pCoeffs;
+
+    /* Read the first two samples from the state buffer:  x[n-N], x[n-N-1] */
+    x0 = _SIMD32_OFFSET(px1);
+
+    /* Read the third and forth samples from the state buffer: x[n-N-1], x[n-N-2] */
+    x1 = _SIMD32_OFFSET(px1 + 1u);
+
+    px1 += 2u;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.       
+     ** Repeat until we've computed numTaps-4 coefficients. */
+    tapCnt = numTaps >> 2;
+
+    while(tapCnt > 0u)
+    {
+      /* Read the first two coefficients using SIMD:  b[N] and b[N-1] coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* acc0 +=  b[N] * x[n-N] + b[N-1] * x[n-N-1] */
+      acc0 = __SMLALD(x0, c0, acc0);
+
+      /* acc1 +=  b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */
+      acc1 = __SMLALD(x1, c0, acc1);
+
+      /* Read state x[n-N-2], x[n-N-3] */
+      x2 = _SIMD32_OFFSET(px1);
+
+      /* Read state x[n-N-3], x[n-N-4] */
+      x3 = _SIMD32_OFFSET(px1 + 1u);
+
+      /* acc2 +=  b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */
+      acc2 = __SMLALD(x2, c0, acc2);
+
+      /* acc3 +=  b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */
+      acc3 = __SMLALD(x3, c0, acc3);
+
+      /* Read coefficients b[N-2], b[N-3] */
+      c0 = *__SIMD32(pb)++;
+
+      /* acc0 +=  b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */
+      acc0 = __SMLALD(x2, c0, acc0);
+
+      /* acc1 +=  b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */
+      acc1 = __SMLALD(x3, c0, acc1);
+
+      /* Read state x[n-N-4], x[n-N-5] */
+      x0 = _SIMD32_OFFSET(px1 + 2u);
+
+      /* Read state x[n-N-5], x[n-N-6] */
+      x1 = _SIMD32_OFFSET(px1 + 3u);
+
+      /* acc2 +=  b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */
+      acc2 = __SMLALD(x0, c0, acc2);
+
+      /* acc3 +=  b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */
+      acc3 = __SMLALD(x1, c0, acc3);
+
+      px1 += 4u;
+
+      tapCnt--;
+
+    }
+
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps.       
+     ** This is always be 2 taps since the filter length is even. */
+    if((numTaps & 0x3u) != 0u)
+    {
+      /* Read 2 coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* Fetch 4 state variables */
+      x2 = _SIMD32_OFFSET(px1);
+
+      x3 = _SIMD32_OFFSET(px1 + 1u);
+
+      /* Perform the multiply-accumulates */
+      acc0 = __SMLALD(x0, c0, acc0);
+
+      px1 += 2u;
+
+      acc1 = __SMLALD(x1, c0, acc1);
+      acc2 = __SMLALD(x2, c0, acc2);
+      acc3 = __SMLALD(x3, c0, acc3);
+    }
+
+    /* The results in the 4 accumulators are in 2.30 format.  Convert to 1.15 with saturation.       
+     ** Then store the 4 outputs in the destination buffer. */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+#else
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN       */
+
+
+
+    /* Advance the state pointer by 4 to process the next group of 4 samples */
+    pState = pState + 4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.       
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+  while(blkCnt > 0u)
+  {
+    /* Copy two samples into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set the accumulator to zero */
+    acc0 = 0;
+
+    /* Initialize state pointer of type q15 */
+    px1 = pState;
+
+    /* Initialize coeff pointer of type q31 */
+    pb = pCoeffs;
+
+    tapCnt = numTaps >> 1;
+
+    do
+    {
+
+      c0 = *__SIMD32(pb)++;
+      x0 = *__SIMD32(px1)++;
+
+      acc0 = __SMLALD(x0, c0, acc0);
+      tapCnt--;
+    }
+    while(tapCnt > 0u);
+
+    /* The result is in 2.30 format.  Convert to 1.15 with saturation.       
+     ** Then store the output in the destination buffer. */
+    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.       
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  /* Calculation of count for copying integer writes */
+  tapCnt = (numTaps - 1u) >> 2;
+
+  while(tapCnt > 0u)
+  {
+
+    /* Copy state values to start of state buffer */
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+
+    tapCnt--;
+
+  }
+
+  /* Calculation of count for remaining q15_t data */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* copy remaining data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+}
+
+#else /* UNALIGNED_SUPPORT_DISABLE */
+
+void arm_fir_q15(
+  const arm_fir_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q63_t acc0, acc1, acc2, acc3;                  /* Accumulators */
+  q15_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  q15_t *px;                                     /* Temporary q31 pointer for SIMD state buffer accesses */
+  q31_t x0, x1, x2, c0;                          /* Temporary variables to hold SIMD state and coefficient values */
+  uint32_t numTaps = S->numTaps;                 /* Number of taps in the filter */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+
+
+  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Apply loop unrolling and compute 4 output values simultaneously.      
+   * The variables acc0 ... acc3 hold output values that are being computed:      
+   *      
+   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]      
+   *    acc1 =  b[numTaps-1] * x[n-numTaps] +   b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]      
+   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] +   b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]      
+   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]      
+   */
+
+  blkCnt = blockSize >> 2;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.      
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Copy four new input samples into the state buffer.      
+     ** Use 32-bit SIMD to move the 16-bit data.  Only requires two copies. */
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+
+
+    /* Set all accumulators to zero */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Typecast q15_t pointer to q31_t pointer for state reading in q31_t */
+    px = pState;
+
+    /* Typecast q15_t pointer to q31_t pointer for coefficient reading in q31_t */
+    pb = pCoeffs;
+
+    /* Read the first two samples from the state buffer:  x[n-N], x[n-N-1] */
+    x0 = *__SIMD32(px)++;
+
+    /* Read the third and forth samples from the state buffer: x[n-N-2], x[n-N-3] */
+    x2 = *__SIMD32(px)++;
+
+    /* Loop over the number of taps.  Unroll by a factor of 4.      
+     ** Repeat until we've computed numTaps-(numTaps%4) coefficients. */
+    tapCnt = numTaps >> 2;
+
+    while(tapCnt > 0)
+    {
+      /* Read the first two coefficients using SIMD:  b[N] and b[N-1] coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* acc0 +=  b[N] * x[n-N] + b[N-1] * x[n-N-1] */
+      acc0 = __SMLALD(x0, c0, acc0);
+
+      /* acc2 +=  b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */
+      acc2 = __SMLALD(x2, c0, acc2);
+
+      /* pack  x[n-N-1] and x[n-N-2] */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x2, x0, 0);
+#else
+      x1 = __PKHBT(x0, x2, 0);
+#endif
+
+      /* Read state x[n-N-4], x[n-N-5] */
+      x0 = _SIMD32_OFFSET(px);
+
+      /* acc1 +=  b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */
+      acc1 = __SMLALDX(x1, c0, acc1);
+
+      /* pack  x[n-N-3] and x[n-N-4] */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x0, x2, 0);
+#else
+      x1 = __PKHBT(x2, x0, 0);
+#endif
+
+      /* acc3 +=  b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */
+      acc3 = __SMLALDX(x1, c0, acc3);
+
+      /* Read coefficients b[N-2], b[N-3] */
+      c0 = *__SIMD32(pb)++;
+
+      /* acc0 +=  b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */
+      acc0 = __SMLALD(x2, c0, acc0);
+
+      /* Read state x[n-N-6], x[n-N-7] with offset */
+      x2 = _SIMD32_OFFSET(px + 2u);
+
+      /* acc2 +=  b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */
+      acc2 = __SMLALD(x0, c0, acc2);
+
+      /* acc1 +=  b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */
+      acc1 = __SMLALDX(x1, c0, acc1);
+
+      /* pack  x[n-N-5] and x[n-N-6] */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x2, x0, 0);
+#else
+      x1 = __PKHBT(x0, x2, 0);
+#endif
+
+      /* acc3 +=  b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */
+      acc3 = __SMLALDX(x1, c0, acc3);
+
+      /* Update state pointer for next state reading */
+      px += 4u;
+
+      /* Decrement tap count */
+      tapCnt--;
+
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps.       
+     ** This is always be 2 taps since the filter length is even. */
+    if((numTaps & 0x3u) != 0u)
+    {
+
+      /* Read last two coefficients */
+      c0 = *__SIMD32(pb)++;
+
+      /* Perform the multiply-accumulates */
+      acc0 = __SMLALD(x0, c0, acc0);
+      acc2 = __SMLALD(x2, c0, acc2);
+
+      /* pack state variables */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x2, x0, 0);
+#else
+      x1 = __PKHBT(x0, x2, 0);
+#endif
+
+      /* Read last state variables */
+      x0 = *__SIMD32(px);
+
+      /* Perform the multiply-accumulates */
+      acc1 = __SMLALDX(x1, c0, acc1);
+
+      /* pack state variables */
+#ifndef ARM_MATH_BIG_ENDIAN
+      x1 = __PKHBT(x0, x2, 0);
+#else
+      x1 = __PKHBT(x2, x0, 0);
+#endif
+
+      /* Perform the multiply-accumulates */
+      acc3 = __SMLALDX(x1, c0, acc3);
+    }
+
+    /* The results in the 4 accumulators are in 2.30 format.  Convert to 1.15 with saturation.       
+     ** Then store the 4 outputs in the destination buffer. */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16);
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16);
+
+#else
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16);
+
+    *__SIMD32(pDst)++ =
+      __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN       */
+
+    /* Advance the state pointer by 4 to process the next group of 4 samples */
+    pState = pState + 4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.      
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+  while(blkCnt > 0u)
+  {
+    /* Copy two samples into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set the accumulator to zero */
+    acc0 = 0;
+
+    /* Use SIMD to hold states and coefficients */
+    px = pState;
+    pb = pCoeffs;
+
+    tapCnt = numTaps >> 1u;
+
+    do
+    {
+      acc0 += (q31_t) * px++ * *pb++;
+	  acc0 += (q31_t) * px++ * *pb++;
+      tapCnt--;
+    }
+    while(tapCnt > 0u);
+
+    /* The result is in 2.30 format.  Convert to 1.15 with saturation.      
+     ** Then store the output in the destination buffer. */
+    *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16));
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.      
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.      
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  /* Calculation of count for copying integer writes */
+  tapCnt = (numTaps - 1u) >> 2;
+
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    tapCnt--;
+
+  }
+
+  /* Calculation of count for remaining q15_t data */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* copy remaining data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+}
+
+
+#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */
+
+#else /* ARM_MATH_CM0_FAMILY */
+
+
+/* Run the below code for Cortex-M0 */
+
+void arm_fir_q15(
+  const arm_fir_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+
+
+
+  q15_t *px;                                     /* Temporary pointer for state buffer */
+  q15_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  q63_t acc;                                     /* Accumulator */
+  uint32_t numTaps = S->numTaps;                 /* Number of nTaps in the filter */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Initialize blkCnt with blockSize */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy one sample at a time into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize Coefficient pointer */
+    pb = pCoeffs;
+
+    tapCnt = numTaps;
+
+    /* Perform the multiply-accumulates */
+    do
+    {
+      /* acc =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */
+      acc += (q31_t) * px++ * *pb++;
+      tapCnt--;
+    } while(tapCnt > 0u);
+
+    /* The result is in 2.30 format.  Convert to 1.15         
+     ** Then store the output in the destination buffer. */
+    *pDst++ = (q15_t) __SSAT((acc >> 15u), 16);
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the samples loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  /* Copy numTaps number of values */
+  tapCnt = (numTaps - 1u);
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+}
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+
+
+/**       
+ * @} end of FIR group       
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,365 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_q31.c    
+*    
+* Description:	Q31 FIR filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR    
+ * @{    
+ */
+
+/**    
+ * @param[in] *S points to an instance of the Q31 FIR filter structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data.    
+ * @param[in] blockSize number of samples to process per call.    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around rather than clip.    
+ * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits.    
+ * After all multiply-accumulates are performed, the 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.  
+ *    
+ * \par    
+ * Refer to the function <code>arm_fir_fast_q31()</code> for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4.    
+ */
+
+void arm_fir_q31(
+  const arm_fir_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pState = S->pState;                     /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *pStateCurnt;                            /* Points to the current sample of the state */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t x0, x1, x2;                              /* Temporary variables to hold state */
+  q31_t c0;                                      /* Temporary variable to hold coefficient value */
+  q31_t *px;                                     /* Temporary pointer for state */
+  q31_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  q63_t acc0, acc1, acc2;                        /* Accumulators */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  uint32_t i, tapCnt, blkCnt, tapCntN3;          /* Loop counters */
+
+  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Apply loop unrolling and compute 4 output values simultaneously.    
+   * The variables acc0 ... acc3 hold output values that are being computed:    
+   *    
+   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]    
+   *    acc1 =  b[numTaps-1] * x[n-numTaps] +   b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]    
+   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] +   b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]    
+   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]    
+   */
+  blkCnt = blockSize / 3;
+  blockSize = blockSize - (3 * blkCnt);
+
+  tapCnt = numTaps / 3;
+  tapCntN3 = numTaps - (3 * tapCnt);
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Copy three new input samples into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set all accumulators to zero */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coefficient pointer */
+    pb = pCoeffs;
+
+    /* Read the first two samples from the state buffer:    
+     *  x[n-numTaps], x[n-numTaps-1] */
+    x0 = *(px++);
+    x1 = *(px++);
+
+    /* Loop unrolling.  Process 3 taps at a time. */
+    i = tapCnt;
+
+    while(i > 0u)
+    {
+      /* Read the b[numTaps] coefficient */
+      c0 = *pb;
+
+      /* Read x[n-numTaps-2] sample */
+      x2 = *(px++);
+
+      /* Perform the multiply-accumulates */
+      acc0 += ((q63_t) x0 * c0);
+      acc1 += ((q63_t) x1 * c0);
+      acc2 += ((q63_t) x2 * c0);
+
+      /* Read the coefficient and state */
+      c0 = *(pb + 1u);
+      x0 = *(px++);
+
+      /* Perform the multiply-accumulates */
+      acc0 += ((q63_t) x1 * c0);
+      acc1 += ((q63_t) x2 * c0);
+      acc2 += ((q63_t) x0 * c0);
+
+      /* Read the coefficient and state */
+      c0 = *(pb + 2u);
+      x1 = *(px++);
+
+      /* update coefficient pointer */
+      pb += 3u;
+
+      /* Perform the multiply-accumulates */
+      acc0 += ((q63_t) x2 * c0);
+      acc1 += ((q63_t) x0 * c0);
+      acc2 += ((q63_t) x1 * c0);
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* If the filter length is not a multiple of 3, compute the remaining filter taps */
+
+    i = tapCntN3;
+
+    while(i > 0u)
+    {
+      /* Read coefficients */
+      c0 = *(pb++);
+
+      /* Fetch 1 state variable */
+      x2 = *(px++);
+
+      /* Perform the multiply-accumulates */
+      acc0 += ((q63_t) x0 * c0);
+      acc1 += ((q63_t) x1 * c0);
+      acc2 += ((q63_t) x2 * c0);
+
+      /* Reuse the present sample states for next sample */
+      x0 = x1;
+      x1 = x2;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 3 to process the next group of 3 samples */
+    pState = pState + 3;
+
+    /* The results in the 3 accumulators are in 2.30 format.  Convert to 1.31    
+     ** Then store the 3 outputs in the destination buffer. */
+    *pDst++ = (q31_t) (acc0 >> 31u);
+    *pDst++ = (q31_t) (acc1 >> 31u);
+    *pDst++ = (q31_t) (acc2 >> 31u);
+
+    /* Decrement the samples loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 3, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+
+  while(blockSize > 0u)
+  {
+    /* Copy one sample at a time into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set the accumulator to zero */
+    acc0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize Coefficient pointer */
+    pb = (pCoeffs);
+
+    i = numTaps;
+
+    /* Perform the multiply-accumulates */
+    do
+    {
+      acc0 += (q63_t) * (px++) * (*(pb++));
+      i--;
+    } while(i > 0u);
+
+    /* The result is in 2.62 format.  Convert to 1.31    
+     ** Then store the output in the destination buffer. */
+    *pDst++ = (q31_t) (acc0 >> 31u);
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the samples loop counter */
+    blockSize--;
+  }
+
+  /* Processing is complete.    
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.    
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  tapCnt = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+  q31_t *px;                                     /* Temporary pointer for state */
+  q31_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  q63_t acc;                                     /* Accumulator */
+  uint32_t numTaps = S->numTaps;                 /* Length of the filter */
+  uint32_t i, tapCnt, blkCnt;                    /* Loop counters */
+
+  /* S->pState buffer contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Initialize blkCnt with blockSize */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy one sample at a time into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize Coefficient pointer */
+    pb = pCoeffs;
+
+    i = numTaps;
+
+    /* Perform the multiply-accumulates */
+    do
+    {
+      /* acc =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */
+      acc += (q63_t) * px++ * *pb++;
+      i--;
+    } while(i > 0u);
+
+    /* The result is in 2.62 format.  Convert to 1.31         
+     ** Then store the output in the destination buffer. */
+    *pDst++ = (q31_t) (acc >> 31u);
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the samples loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last numTaps - 1 samples to the starting of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  /* Copy numTaps number of values */
+  tapCnt = numTaps - 1u;
+
+  /* Copy the data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+
+#endif /*  #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,397 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_q7.c    
+*    
+* Description:  Q7 FIR filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR    
+ * @{    
+ */
+
+/**    
+ * @param[in]   *S points to an instance of the Q7 FIR filter structure.    
+ * @param[in]   *pSrc points to the block of input data.    
+ * @param[out]  *pDst points to the block of output data.    
+ * @param[in]   blockSize number of samples to process per call.    
+ * @return 	none.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using a 32-bit internal accumulator.    
+ * Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result.    
+ * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.    
+ * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.    
+ * The accumulator is converted to 18.7 format by discarding the low 7 bits.    
+ * Finally, the result is truncated to 1.7 format.    
+ */
+
+void arm_fir_q7(
+  const arm_fir_instance_q7 * S,
+  q7_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q7_t *pState = S->pState;                      /* State pointer */
+  q7_t *pCoeffs = S->pCoeffs;                    /* Coefficient pointer */
+  q7_t *pStateCurnt;                             /* Points to the current sample of the state */
+  q7_t x0, x1, x2, x3;                           /* Temporary variables to hold state */
+  q7_t c0;                                       /* Temporary variable to hold coefficient value */
+  q7_t *px;                                      /* Temporary pointer for state */
+  q7_t *pb;                                      /* Temporary pointer for coefficient buffer */
+  q31_t acc0, acc1, acc2, acc3;                  /* Accumulators */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  uint32_t i, tapCnt, blkCnt;                    /* Loop counters */
+
+  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Apply loop unrolling and compute 4 output values simultaneously.    
+   * The variables acc0 ... acc3 hold output values that are being computed:    
+   *    
+   *    acc0 =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]    
+   *    acc1 =  b[numTaps-1] * x[n-numTaps] +   b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]    
+   *    acc2 =  b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] +   b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]    
+   *    acc3 =  b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps]   +...+ b[0] * x[3]    
+   */
+  blkCnt = blockSize >> 2;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Copy four new input samples into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set all accumulators to zero */
+    acc0 = 0;
+    acc1 = 0;
+    acc2 = 0;
+    acc3 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coefficient pointer */
+    pb = pCoeffs;
+
+    /* Read the first three samples from the state buffer:    
+     *  x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */
+    x0 = *(px++);
+    x1 = *(px++);
+    x2 = *(px++);
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+    i = tapCnt;
+
+    while(i > 0u)
+    {
+      /* Read the b[numTaps] coefficient */
+      c0 = *pb;
+
+      /* Read x[n-numTaps-3] sample */
+      x3 = *px;
+      
+      /* acc0 +=  b[numTaps] * x[n-numTaps] */
+      acc0 += ((q15_t) x0 * c0);
+
+      /* acc1 +=  b[numTaps] * x[n-numTaps-1] */
+      acc1 += ((q15_t) x1 * c0);
+
+      /* acc2 +=  b[numTaps] * x[n-numTaps-2] */
+      acc2 += ((q15_t) x2 * c0);
+
+      /* acc3 +=  b[numTaps] * x[n-numTaps-3] */
+      acc3 += ((q15_t) x3 * c0);
+
+      /* Read the b[numTaps-1] coefficient */
+      c0 = *(pb + 1u);
+
+      /* Read x[n-numTaps-4] sample */
+      x0 = *(px + 1u);
+
+      /* Perform the multiply-accumulates */
+      acc0 += ((q15_t) x1 * c0);
+      acc1 += ((q15_t) x2 * c0);
+      acc2 += ((q15_t) x3 * c0);
+      acc3 += ((q15_t) x0 * c0);
+
+      /* Read the b[numTaps-2] coefficient */
+      c0 = *(pb + 2u);
+
+      /* Read x[n-numTaps-5] sample */
+      x1 = *(px + 2u);
+
+      /* Perform the multiply-accumulates */
+      acc0 += ((q15_t) x2 * c0);
+      acc1 += ((q15_t) x3 * c0);
+      acc2 += ((q15_t) x0 * c0);
+      acc3 += ((q15_t) x1 * c0);
+
+      /* Read the b[numTaps-3] coefficients */
+      c0 = *(pb + 3u);
+
+      /* Read x[n-numTaps-6] sample */
+      x2 = *(px + 3u);
+      
+      /* Perform the multiply-accumulates */
+      acc0 += ((q15_t) x3 * c0);
+      acc1 += ((q15_t) x0 * c0);
+      acc2 += ((q15_t) x1 * c0);
+      acc3 += ((q15_t) x2 * c0);
+
+      /* update coefficient pointer */
+      pb += 4u;
+      px += 4u;
+      
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+
+    i = numTaps - (tapCnt * 4u);
+    while(i > 0u)
+    {
+      /* Read coefficients */
+      c0 = *(pb++);
+
+      /* Fetch 1 state variable */
+      x3 = *(px++);
+
+      /* Perform the multiply-accumulates */
+      acc0 += ((q15_t) x0 * c0);
+      acc1 += ((q15_t) x1 * c0);
+      acc2 += ((q15_t) x2 * c0);
+      acc3 += ((q15_t) x3 * c0);
+
+      /* Reuse the present sample states for next sample */
+      x0 = x1;
+      x1 = x2;
+      x2 = x3;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Advance the state pointer by 4 to process the next group of 4 samples */
+    pState = pState + 4;
+
+    /* The results in the 4 accumulators are in 2.62 format.  Convert to 1.31    
+     ** Then store the 4 outputs in the destination buffer. */
+    acc0 = __SSAT((acc0 >> 7u), 8);
+    *pDst++ = acc0;
+    acc1 = __SSAT((acc1 >> 7u), 8);
+    *pDst++ = acc1;
+    acc2 = __SSAT((acc2 >> 7u), 8);
+    *pDst++ = acc2;
+    acc3 = __SSAT((acc3 >> 7u), 8);
+    *pDst++ = acc3;
+
+    /* Decrement the samples loop counter */
+    blkCnt--;
+  }
+
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 4u;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy one sample at a time into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set the accumulator to zero */
+    acc0 = 0;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize Coefficient pointer */
+    pb = (pCoeffs);
+
+    i = numTaps;
+
+    /* Perform the multiply-accumulates */
+    do
+    {
+      acc0 += (q15_t) * (px++) * (*(pb++));
+      i--;
+    } while(i > 0u);
+
+    /* The result is in 2.14 format.  Convert to 1.7    
+     ** Then store the output in the destination buffer. */
+    *pDst++ = __SSAT((acc0 >> 7u), 8);
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the samples loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.    
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.    
+   ** This prepares the state buffer for the next function call. */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+  tapCnt = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+  uint32_t numTaps = S->numTaps;                 /* Number of taps in the filter */
+  uint32_t i, blkCnt;                            /* Loop counters */
+  q7_t *pState = S->pState;                      /* State pointer */
+  q7_t *pCoeffs = S->pCoeffs;                    /* Coefficient pointer */
+  q7_t *px, *pb;                                 /* Temporary pointers to state and coeff */
+  q31_t acc = 0;                                 /* Accumlator */
+  q7_t *pStateCurnt;                             /* Points to the current sample of the state */
+
+
+  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = S->pState + (numTaps - 1u);
+
+  /* Initialize blkCnt with blockSize */
+  blkCnt = blockSize;
+
+  /* Perform filtering upto BlockSize - BlockSize%4  */
+  while(blkCnt > 0u)
+  {
+    /* Copy one sample at a time into state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Set accumulator to zero */
+    acc = 0;
+
+    /* Initialize state pointer of type q7 */
+    px = pState;
+
+    /* Initialize coeff pointer of type q7 */
+    pb = pCoeffs;
+
+
+    i = numTaps;
+
+    while(i > 0u)
+    {
+      /* acc =  b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */
+      acc += (q15_t) * px++ * *pb++;
+      i--;
+    }
+
+    /* Store the 1.7 format filter output in destination buffer */
+    *pDst++ = (q7_t) __SSAT((acc >> 7), 8);
+
+    /* Advance the state pointer by 1 to process the next sample */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete.         
+   ** Now copy the last numTaps - 1 samples to the satrt of the state buffer.       
+   ** This prepares the state buffer for the next function call. */
+
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = S->pState;
+
+
+  /* Copy numTaps number of values */
+  i = (numTaps - 1u);
+
+  /* Copy q7_t data */
+  while(i > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    i--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,444 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_sparse_f32.c    
+*    
+* Description:	Floating-point sparse FIR filter processing function.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup FIR_Sparse Finite Impulse Response (FIR) Sparse Filters    
+ *    
+ * This group of functions implements sparse FIR filters.     
+ * Sparse FIR filters are equivalent to standard FIR filters except that most of the coefficients are equal to zero.   
+ * Sparse filters are used for simulating reflections in communications and audio applications.   
+ *   
+ * There are separate functions for Q7, Q15, Q31, and floating-point data types.    
+ * The functions operate on blocks  of input and output data and each call to the function processes    
+ * <code>blockSize</code> samples through the filter.  <code>pSrc</code> and    
+ * <code>pDst</code> points to input and output arrays respectively containing <code>blockSize</code> values.    
+ *    
+ * \par Algorithm:    
+ * The sparse filter instant structure contains an array of tap indices <code>pTapDelay</code> which specifies the locations of the non-zero coefficients.   
+ * This is in addition to the coefficient array <code>b</code>.   
+ * The implementation essentially skips the multiplications by zero and leads to an efficient realization.   
+ * <pre>   
+ *     y[n] = b[0] * x[n-pTapDelay[0]] + b[1] * x[n-pTapDelay[1]] + b[2] * x[n-pTapDelay[2]] + ...+ b[numTaps-1] * x[n-pTapDelay[numTaps-1]]    
+ * </pre>    
+ * \par    
+ * \image html FIRSparse.gif "Sparse FIR filter.  b[n] represents the filter coefficients"   
+ * \par    
+ * <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>;    
+ * <code>pTapDelay</code> points to an array of nonzero indices and is also of size <code>numTaps</code>;   
+ * <code>pState</code> points to a state array of size <code>maxDelay + blockSize</code>, where   
+ * <code>maxDelay</code> is the largest offset value that is ever used in the <code>pTapDelay</code> array.   
+ * Some of the processing functions also require temporary working buffers.   
+ *   
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter.    
+ * Coefficient and offset arrays may be shared among several instances while state variable arrays cannot be shared.    
+ * There are separate instance structure declarations for each of the 4 supported data types.    
+ *    
+ * \par Initialization Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.    
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * numTaps, pCoeffs, pTapDelay, maxDelay, stateIndex, pState. Also set all of the values in pState to zero. 
+ *    
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * Set the values in the state buffer to zeros before static initialization.    
+ * The code below statically initializes each of the 4 different data type filter instance structures    
+ * <pre>    
+ *arm_fir_sparse_instance_f32 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};    
+ *arm_fir_sparse_instance_q31 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};    
+ *arm_fir_sparse_instance_q15 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};    
+ *arm_fir_sparse_instance_q7 S =  {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};    
+ * </pre>    
+ * \par    
+ *    
+ * \par Fixed-Point Behavior    
+ * Care must be taken when using the fixed-point versions of the sparse FIR filter functions.    
+ * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.    
+ * Refer to the function specific documentation below for usage guidelines.    
+ */
+
+/**    
+ * @addtogroup FIR_Sparse    
+ * @{    
+ */
+
+/**   
+ * @brief Processing function for the floating-point sparse FIR filter.   
+ * @param[in]  *S          points to an instance of the floating-point sparse FIR structure.   
+ * @param[in]  *pSrc       points to the block of input data.   
+ * @param[out] *pDst       points to the block of output data   
+ * @param[in]  *pScratchIn points to a temporary buffer of size blockSize.   
+ * @param[in]  blockSize   number of input samples to process per call.   
+ * @return none.   
+ */
+
+void arm_fir_sparse_f32(
+  arm_fir_sparse_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  float32_t * pScratchIn,
+  uint32_t blockSize)
+{
+
+  float32_t *pState = S->pState;                 /* State pointer */
+  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+  float32_t *px;                                 /* Scratch buffer pointer */
+  float32_t *py = pState;                        /* Temporary pointers for state buffer */
+  float32_t *pb = pScratchIn;                    /* Temporary pointers for scratch buffer */
+  float32_t *pOut;                               /* Destination pointer */
+  int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */
+  uint32_t delaySize = S->maxDelay + blockSize;  /* state length */
+  uint16_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter  */
+  int32_t readIndex;                             /* Read index of the state buffer */
+  uint32_t tapCnt, blkCnt;                       /* loop counters */
+  float32_t coeff = *pCoeffs++;                  /* Read the first coefficient value */
+
+
+
+  /* BlockSize of Input samples are copied into the state buffer */
+  /* StateIndex points to the starting position to write in the state buffer */
+  arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1,
+                        (int32_t *) pSrc, 1, blockSize);
+
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Working pointer for state buffer is updated */
+  py = pState;
+
+  /* blockSize samples are read from the state buffer */
+  arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+                       (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+                       blockSize);
+
+  /* Working pointer for the scratch buffer */
+  px = pb;
+
+  /* Working pointer for destination buffer */
+  pOut = pDst;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Loop over the blockSize. Unroll by a factor of 4.    
+   * Compute 4 Multiplications at a time. */
+  blkCnt = blockSize >> 2u;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform Multiplications and store in destination buffer */
+    *pOut++ = *px++ * coeff;
+    *pOut++ = *px++ * coeff;
+    *pOut++ = *px++ * coeff;
+    *pOut++ = *px++ * coeff;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4,    
+   * compute the remaining samples */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform Multiplications and store in destination buffer */
+    *pOut++ = *px++ * coeff;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Load the coefficient value and    
+   * increment the coefficient buffer for the next set of state values */
+  coeff = *pCoeffs++;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Loop over the number of taps. */
+  tapCnt = (uint32_t) numTaps - 2u;
+
+  while(tapCnt > 0u)
+  {
+
+    /* Working pointer for state buffer is updated */
+    py = pState;
+
+    /* blockSize samples are read from the state buffer */
+    arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+                         (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+                         blockSize);
+
+    /* Working pointer for the scratch buffer */
+    px = pb;
+
+    /* Working pointer for destination buffer */
+    pOut = pDst;
+
+    /* Loop over the blockSize. Unroll by a factor of 4.    
+     * Compute 4 MACS at a time. */
+    blkCnt = blockSize >> 2u;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      *pOut++ += *px++ * coeff;
+      *pOut++ += *px++ * coeff;
+      *pOut++ += *px++ * coeff;
+      *pOut++ += *px++ * coeff;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4,    
+     * compute the remaining samples */
+    blkCnt = blockSize % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      *pOut++ += *px++ * coeff;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Load the coefficient value and    
+     * increment the coefficient buffer for the next set of state values */
+    coeff = *pCoeffs++;
+
+    /* Read Index, from where the state buffer should be read, is calculated. */
+    readIndex = ((int32_t) S->stateIndex -
+                 (int32_t) blockSize) - *pTapDelay++;
+
+    /* Wraparound of readIndex */
+    if(readIndex < 0)
+    {
+      readIndex += (int32_t) delaySize;
+    }
+
+    /* Decrement the tap loop counter */
+    tapCnt--;
+  }
+	
+	/* Compute last tap without the final read of pTapDelay */
+
+	/* Working pointer for state buffer is updated */
+	py = pState;
+
+	/* blockSize samples are read from the state buffer */
+	arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+											 (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+											 blockSize);
+
+	/* Working pointer for the scratch buffer */
+	px = pb;
+
+	/* Working pointer for destination buffer */
+	pOut = pDst;
+
+	/* Loop over the blockSize. Unroll by a factor of 4.    
+	 * Compute 4 MACS at a time. */
+	blkCnt = blockSize >> 2u;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		*pOut++ += *px++ * coeff;
+		*pOut++ += *px++ * coeff;
+		*pOut++ += *px++ * coeff;
+		*pOut++ += *px++ * coeff;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+	/* If the blockSize is not a multiple of 4,    
+	 * compute the remaining samples */
+	blkCnt = blockSize % 0x4u;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		*pOut++ += *px++ * coeff;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+#else
+
+/* Run the below code for Cortex-M0 */
+
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform Multiplications and store in destination buffer */
+    *pOut++ = *px++ * coeff;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Load the coefficient value and           
+   * increment the coefficient buffer for the next set of state values */
+  coeff = *pCoeffs++;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Loop over the number of taps. */
+  tapCnt = (uint32_t) numTaps - 2u;
+
+  while(tapCnt > 0u)
+  {
+
+    /* Working pointer for state buffer is updated */
+    py = pState;
+
+    /* blockSize samples are read from the state buffer */
+    arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+                         (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+                         blockSize);
+
+    /* Working pointer for the scratch buffer */
+    px = pb;
+
+    /* Working pointer for destination buffer */
+    pOut = pDst;
+
+    blkCnt = blockSize;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      *pOut++ += *px++ * coeff;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Load the coefficient value and           
+     * increment the coefficient buffer for the next set of state values */
+    coeff = *pCoeffs++;
+
+    /* Read Index, from where the state buffer should be read, is calculated. */
+    readIndex =
+      ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+    /* Wraparound of readIndex */
+    if(readIndex < 0)
+    {
+      readIndex += (int32_t) delaySize;
+    }
+
+    /* Decrement the tap loop counter */
+    tapCnt--;
+  }
+	
+	/* Compute last tap without the final read of pTapDelay */	
+	
+	/* Working pointer for state buffer is updated */
+	py = pState;
+
+	/* blockSize samples are read from the state buffer */
+	arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+											 (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+											 blockSize);
+
+	/* Working pointer for the scratch buffer */
+	px = pb;
+
+	/* Working pointer for destination buffer */
+	pOut = pDst;
+
+	blkCnt = blockSize;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		*pOut++ += *px++ * coeff;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY        */
+
+}
+
+/**    
+ * @} end of FIR_Sparse group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,107 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_sparse_init_f32.c    
+*    
+* Description:	Floating-point sparse FIR filter initialization function.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Sparse    
+ * @{    
+ */
+
+/**   
+ * @brief  Initialization function for the floating-point sparse FIR filter.   
+ * @param[in,out] *S         points to an instance of the floating-point sparse FIR structure.   
+ * @param[in]     numTaps    number of nonzero coefficients in the filter.   
+ * @param[in]     *pCoeffs   points to the array of filter coefficients.   
+ * @param[in]     *pState    points to the state buffer.   
+ * @param[in]     *pTapDelay points to the array of offset times.   
+ * @param[in]     maxDelay   maximum offset time supported.   
+ * @param[in]     blockSize  number of samples that will be processed per block.   
+ * @return none   
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> holds the filter coefficients and has length <code>numTaps</code>.    
+ * <code>pState</code> holds the filter's state variables and must be of length    
+ * <code>maxDelay + blockSize</code>, where <code>maxDelay</code>    
+ * is the maximum number of delay line values.    
+ * <code>blockSize</code> is the    
+ * number of samples processed by the <code>arm_fir_sparse_f32()</code> function.    
+ */
+
+void arm_fir_sparse_init_f32(
+  arm_fir_sparse_instance_f32 * S,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  int32_t * pTapDelay,
+  uint16_t maxDelay,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Assign TapDelay pointer */
+  S->pTapDelay = pTapDelay;
+
+  /* Assign MaxDelay */
+  S->maxDelay = maxDelay;
+
+  /* reset the stateIndex to 0 */
+  S->stateIndex = 0u;
+
+  /* Clear state buffer and size is always maxDelay + blockSize */
+  memset(pState, 0, (maxDelay + blockSize) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR_Sparse group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,107 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_sparse_init_q15.c    
+*    
+* Description:	Q15 sparse FIR filter initialization function.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Sparse    
+ * @{    
+ */
+
+/**   
+ * @brief  Initialization function for the Q15 sparse FIR filter.   
+ * @param[in,out] *S         points to an instance of the Q15 sparse FIR structure.   
+ * @param[in]     numTaps    number of nonzero coefficients in the filter.   
+ * @param[in]     *pCoeffs   points to the array of filter coefficients.   
+ * @param[in]     *pState    points to the state buffer.   
+ * @param[in]     *pTapDelay points to the array of offset times.   
+ * @param[in]     maxDelay   maximum offset time supported.   
+ * @param[in]     blockSize  number of samples that will be processed per block.   
+ * @return none   
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> holds the filter coefficients and has length <code>numTaps</code>.    
+ * <code>pState</code> holds the filter's state variables and must be of length    
+ * <code>maxDelay + blockSize</code>, where <code>maxDelay</code>    
+ * is the maximum number of delay line values.    
+ * <code>blockSize</code> is the    
+ * number of words processed by <code>arm_fir_sparse_q15()</code> function.    
+ */
+
+void arm_fir_sparse_init_q15(
+  arm_fir_sparse_instance_q15 * S,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  int32_t * pTapDelay,
+  uint16_t maxDelay,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Assign TapDelay pointer */
+  S->pTapDelay = pTapDelay;
+
+  /* Assign MaxDelay */
+  S->maxDelay = maxDelay;
+
+  /* reset the stateIndex to 0 */
+  S->stateIndex = 0u;
+
+  /* Clear state buffer and size is always maxDelay + blockSize */
+  memset(pState, 0, (maxDelay + blockSize) * sizeof(q15_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR_Sparse group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,106 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_sparse_init_q31.c    
+*    
+* Description:	Q31 sparse FIR filter initialization function.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Sparse    
+ * @{    
+ */
+
+/**   
+ * @brief  Initialization function for the Q31 sparse FIR filter.   
+ * @param[in,out] *S         points to an instance of the Q31 sparse FIR structure.   
+ * @param[in]     numTaps    number of nonzero coefficients in the filter.   
+ * @param[in]     *pCoeffs   points to the array of filter coefficients.   
+ * @param[in]     *pState    points to the state buffer.   
+ * @param[in]     *pTapDelay points to the array of offset times.   
+ * @param[in]     maxDelay   maximum offset time supported.   
+ * @param[in]     blockSize  number of samples that will be processed per block.   
+ * @return none   
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> holds the filter coefficients and has length <code>numTaps</code>.    
+ * <code>pState</code> holds the filter's state variables and must be of length    
+ * <code>maxDelay + blockSize</code>, where <code>maxDelay</code>    
+ * is the maximum number of delay line values.    
+ * <code>blockSize</code> is the number of words processed by <code>arm_fir_sparse_q31()</code> function.    
+ */
+
+void arm_fir_sparse_init_q31(
+  arm_fir_sparse_instance_q31 * S,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  int32_t * pTapDelay,
+  uint16_t maxDelay,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Assign TapDelay pointer */
+  S->pTapDelay = pTapDelay;
+
+  /* Assign MaxDelay */
+  S->maxDelay = maxDelay;
+
+  /* reset the stateIndex to 0 */
+  S->stateIndex = 0u;
+
+  /* Clear state buffer and size is always maxDelay + blockSize */
+  memset(pState, 0, (maxDelay + blockSize) * sizeof(q31_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR_Sparse group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,107 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_fir_sparse_init_q7.c    
+*    
+* Description:	Q7 sparse FIR filter initialization function.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE. 
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Sparse    
+ * @{    
+ */
+
+/**   
+ * @brief  Initialization function for the Q7 sparse FIR filter.   
+ * @param[in,out] *S         points to an instance of the Q7 sparse FIR structure.   
+ * @param[in]     numTaps    number of nonzero coefficients in the filter.   
+ * @param[in]     *pCoeffs   points to the array of filter coefficients.   
+ * @param[in]     *pState    points to the state buffer.   
+ * @param[in]     *pTapDelay points to the array of offset times.   
+ * @param[in]     maxDelay   maximum offset time supported.   
+ * @param[in]     blockSize  number of samples that will be processed per block.   
+ * @return none   
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> holds the filter coefficients and has length <code>numTaps</code>.    
+ * <code>pState</code> holds the filter's state variables and must be of length    
+ * <code>maxDelay + blockSize</code>, where <code>maxDelay</code>    
+ * is the maximum number of delay line values.    
+ * <code>blockSize</code> is the    
+ * number of samples processed by the <code>arm_fir_sparse_q7()</code> function.    
+ */
+
+void arm_fir_sparse_init_q7(
+  arm_fir_sparse_instance_q7 * S,
+  uint16_t numTaps,
+  q7_t * pCoeffs,
+  q7_t * pState,
+  int32_t * pTapDelay,
+  uint16_t maxDelay,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Assign TapDelay pointer */
+  S->pTapDelay = pTapDelay;
+
+  /* Assign MaxDelay */
+  S->maxDelay = maxDelay;
+
+  /* reset the stateIndex to 0 */
+  S->stateIndex = 0u;
+
+  /* Clear state buffer and size is always maxDelay + blockSize */
+  memset(pState, 0, (maxDelay + blockSize) * sizeof(q7_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+}
+
+/**    
+ * @} end of FIR_Sparse group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,481 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_sparse_q15.c    
+*    
+* Description:	Q15 sparse FIR filter processing function.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**    
+ * @addtogroup FIR_Sparse    
+ * @{    
+ */
+
+/**   
+ * @brief Processing function for the Q15 sparse FIR filter.   
+ * @param[in]  *S           points to an instance of the Q15 sparse FIR structure.   
+ * @param[in]  *pSrc        points to the block of input data.   
+ * @param[out] *pDst        points to the block of output data   
+ * @param[in]  *pScratchIn  points to a temporary buffer of size blockSize.   
+ * @param[in]  *pScratchOut points to a temporary buffer of size blockSize.   
+ * @param[in]  blockSize    number of input samples to process per call.   
+ * @return none.   
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 32-bit accumulator.   
+ * The 1.15 x 1.15 multiplications yield a 2.30 result and these are added to a 2.30 accumulator.   
+ * Thus the full precision of the multiplications is maintained but there is only a single guard bit in the accumulator.   
+ * If the accumulator result overflows it will wrap around rather than saturate.   
+ * After all multiply-accumulates are performed, the 2.30 accumulator is truncated to 2.15 format and then saturated to 1.15 format.    
+ * In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits.   
+ */
+
+
+void arm_fir_sparse_q15(
+  arm_fir_sparse_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  q15_t * pScratchIn,
+  q31_t * pScratchOut,
+  uint32_t blockSize)
+{
+
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pIn = pSrc;                             /* Working pointer for input */
+  q15_t *pOut = pDst;                            /* Working pointer for output */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *px;                                     /* Temporary pointers for scratch buffer */
+  q15_t *pb = pScratchIn;                        /* Temporary pointers for scratch buffer */
+  q15_t *py = pState;                            /* Temporary pointers for state buffer */
+  int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */
+  uint32_t delaySize = S->maxDelay + blockSize;  /* state length */
+  uint16_t numTaps = S->numTaps;                 /* Filter order */
+  int32_t readIndex;                             /* Read index of the state buffer */
+  uint32_t tapCnt, blkCnt;                       /* loop counters */
+  q15_t coeff = *pCoeffs++;                      /* Read the first coefficient value */
+  q31_t *pScr2 = pScratchOut;                    /* Working pointer for pScratchOut */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t in1, in2;                                /* Temporary variables */
+
+
+  /* BlockSize of Input samples are copied into the state buffer */
+  /* StateIndex points to the starting position to write in the state buffer */
+  arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize);
+
+  /* Loop over the number of taps. */
+  tapCnt = numTaps;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = (S->stateIndex - blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Working pointer for state buffer is updated */
+  py = pState;
+
+  /* blockSize samples are read from the state buffer */
+  arm_circularRead_q15(py, delaySize, &readIndex, 1,
+                       pb, pb, blockSize, 1, blockSize);
+
+  /* Working pointer for the scratch buffer of state values */
+  px = pb;
+
+  /* Working pointer for scratch buffer of output values */
+  pScratchOut = pScr2;
+
+  /* Loop over the blockSize. Unroll by a factor of 4.    
+   * Compute 4 multiplications at a time. */
+  blkCnt = blockSize >> 2;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform multiplication and store in the scratch buffer */
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4,    
+   * compute the remaining samples */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform multiplication and store in the scratch buffer */
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Load the coefficient value and    
+   * increment the coefficient buffer for the next set of state values */
+  coeff = *pCoeffs++;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = (S->stateIndex - blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Loop over the number of taps. */
+  tapCnt = (uint32_t) numTaps - 2u;
+
+  while(tapCnt > 0u)
+  {
+    /* Working pointer for state buffer is updated */
+    py = pState;
+
+    /* blockSize samples are read from the state buffer */
+    arm_circularRead_q15(py, delaySize, &readIndex, 1,
+                         pb, pb, blockSize, 1, blockSize);
+
+    /* Working pointer for the scratch buffer of state values */
+    px = pb;
+
+    /* Working pointer for scratch buffer of output values */
+    pScratchOut = pScr2;
+
+    /* Loop over the blockSize. Unroll by a factor of 4.    
+     * Compute 4 MACS at a time. */
+    blkCnt = blockSize >> 2;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      *pScratchOut++ += (q31_t) * px++ * coeff;
+      *pScratchOut++ += (q31_t) * px++ * coeff;
+      *pScratchOut++ += (q31_t) * px++ * coeff;
+      *pScratchOut++ += (q31_t) * px++ * coeff;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4,    
+     * compute the remaining samples */
+    blkCnt = blockSize % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      *pScratchOut++ += (q31_t) * px++ * coeff;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Load the coefficient value and    
+     * increment the coefficient buffer for the next set of state values */
+    coeff = *pCoeffs++;
+
+    /* Read Index, from where the state buffer should be read, is calculated. */
+    readIndex = (S->stateIndex - blockSize) - *pTapDelay++;
+
+    /* Wraparound of readIndex */
+    if(readIndex < 0)
+    {
+      readIndex += (int32_t) delaySize;
+    }
+
+    /* Decrement the tap loop counter */
+    tapCnt--;
+  }
+	
+	/* Compute last tap without the final read of pTapDelay */		
+
+	/* Working pointer for state buffer is updated */
+	py = pState;
+
+	/* blockSize samples are read from the state buffer */
+	arm_circularRead_q15(py, delaySize, &readIndex, 1,
+											 pb, pb, blockSize, 1, blockSize);
+
+	/* Working pointer for the scratch buffer of state values */
+	px = pb;
+
+	/* Working pointer for scratch buffer of output values */
+	pScratchOut = pScr2;
+
+	/* Loop over the blockSize. Unroll by a factor of 4.    
+	 * Compute 4 MACS at a time. */
+	blkCnt = blockSize >> 2;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		*pScratchOut++ += (q31_t) * px++ * coeff;
+		*pScratchOut++ += (q31_t) * px++ * coeff;
+		*pScratchOut++ += (q31_t) * px++ * coeff;
+		*pScratchOut++ += (q31_t) * px++ * coeff;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+	/* If the blockSize is not a multiple of 4,    
+	 * compute the remaining samples */
+	blkCnt = blockSize % 0x4u;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		*pScratchOut++ += (q31_t) * px++ * coeff;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+  /* All the output values are in pScratchOut buffer.    
+     Convert them into 1.15 format, saturate and store in the destination buffer. */
+  /* Loop over the blockSize. */
+  blkCnt = blockSize >> 2;
+
+  while(blkCnt > 0u)
+  {
+    in1 = *pScr2++;
+    in2 = *pScr2++;
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pOut)++ =
+      __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16),
+              16);
+
+#else
+    *__SIMD32(pOut)++ =
+      __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16),
+              16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+    in1 = *pScr2++;
+
+    in2 = *pScr2++;
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pOut)++ =
+      __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16),
+              16);
+
+#else
+
+    *__SIMD32(pOut)++ =
+      __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16),
+              16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+
+    blkCnt--;
+
+  }
+
+  /* If the blockSize is not a multiple of 4,    
+     remaining samples are processed in the below loop */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16);
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* BlockSize of Input samples are copied into the state buffer */
+  /* StateIndex points to the starting position to write in the state buffer */
+  arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize);
+
+  /* Loop over the number of taps. */
+  tapCnt = numTaps;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = (S->stateIndex - blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Working pointer for state buffer is updated */
+  py = pState;
+
+  /* blockSize samples are read from the state buffer */
+  arm_circularRead_q15(py, delaySize, &readIndex, 1,
+                       pb, pb, blockSize, 1, blockSize);
+
+  /* Working pointer for the scratch buffer of state values */
+  px = pb;
+
+  /* Working pointer for scratch buffer of output values */
+  pScratchOut = pScr2;
+
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform multiplication and store in the scratch buffer */
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Load the coefficient value and           
+   * increment the coefficient buffer for the next set of state values */
+  coeff = *pCoeffs++;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = (S->stateIndex - blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Loop over the number of taps. */
+  tapCnt = (uint32_t) numTaps - 2u;
+
+  while(tapCnt > 0u)
+  {
+    /* Working pointer for state buffer is updated */
+    py = pState;
+
+    /* blockSize samples are read from the state buffer */
+    arm_circularRead_q15(py, delaySize, &readIndex, 1,
+                         pb, pb, blockSize, 1, blockSize);
+
+    /* Working pointer for the scratch buffer of state values */
+    px = pb;
+
+    /* Working pointer for scratch buffer of output values */
+    pScratchOut = pScr2;
+
+    blkCnt = blockSize;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      *pScratchOut++ += (q31_t) * px++ * coeff;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Load the coefficient value and           
+     * increment the coefficient buffer for the next set of state values */
+    coeff = *pCoeffs++;
+
+    /* Read Index, from where the state buffer should be read, is calculated. */
+    readIndex = (S->stateIndex - blockSize) - *pTapDelay++;
+
+    /* Wraparound of readIndex */
+    if(readIndex < 0)
+    {
+      readIndex += (int32_t) delaySize;
+    }
+
+    /* Decrement the tap loop counter */
+    tapCnt--;
+  }
+	
+	/* Compute last tap without the final read of pTapDelay */	
+	
+	/* Working pointer for state buffer is updated */
+	py = pState;
+
+	/* blockSize samples are read from the state buffer */
+	arm_circularRead_q15(py, delaySize, &readIndex, 1,
+											 pb, pb, blockSize, 1, blockSize);
+
+	/* Working pointer for the scratch buffer of state values */
+	px = pb;
+
+	/* Working pointer for scratch buffer of output values */
+	pScratchOut = pScr2;
+
+	blkCnt = blockSize;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		*pScratchOut++ += (q31_t) * px++ * coeff;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+  /* All the output values are in pScratchOut buffer.       
+     Convert them into 1.15 format, saturate and store in the destination buffer. */
+  /* Loop over the blockSize. */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16);
+    blkCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR_Sparse group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,461 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_sparse_q31.c    
+*    
+* Description:	Q31 sparse FIR filter processing function.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ------------------------------------------------------------------- */
+#include "arm_math.h"
+
+
+/**    
+ * @addtogroup FIR_Sparse    
+ * @{    
+ */
+
+/**   
+ * @brief Processing function for the Q31 sparse FIR filter.   
+ * @param[in]  *S          points to an instance of the Q31 sparse FIR structure.   
+ * @param[in]  *pSrc       points to the block of input data.   
+ * @param[out] *pDst       points to the block of output data   
+ * @param[in]  *pScratchIn points to a temporary buffer of size blockSize.   
+ * @param[in]  blockSize   number of input samples to process per call.   
+ * @return none.   
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 32-bit accumulator.   
+ * The 1.31 x 1.31 multiplications are truncated to 2.30 format.   
+ * This leads to loss of precision on the intermediate multiplications and provides only a single guard bit.    
+ * If the accumulator result overflows, it wraps around rather than saturate.   
+ * In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits.   
+ */
+
+void arm_fir_sparse_q31(
+  arm_fir_sparse_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  q31_t * pScratchIn,
+  uint32_t blockSize)
+{
+
+  q31_t *pState = S->pState;                     /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *px;                                     /* Scratch buffer pointer */
+  q31_t *py = pState;                            /* Temporary pointers for state buffer */
+  q31_t *pb = pScratchIn;                        /* Temporary pointers for scratch buffer */
+  q31_t *pOut;                                   /* Destination pointer */
+  q63_t out;                                     /* Temporary output variable */
+  int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */
+  uint32_t delaySize = S->maxDelay + blockSize;  /* state length */
+  uint16_t numTaps = S->numTaps;                 /* Filter order */
+  int32_t readIndex;                             /* Read index of the state buffer */
+  uint32_t tapCnt, blkCnt;                       /* loop counters */
+  q31_t coeff = *pCoeffs++;                      /* Read the first coefficient value */
+  q31_t in;
+
+
+  /* BlockSize of Input samples are copied into the state buffer */
+  /* StateIndex points to the starting position to write in the state buffer */
+  arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1,
+                        (int32_t *) pSrc, 1, blockSize);
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Working pointer for state buffer is updated */
+  py = pState;
+
+  /* blockSize samples are read from the state buffer */
+  arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+                       (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+                       blockSize);
+
+  /* Working pointer for the scratch buffer of state values */
+  px = pb;
+
+  /* Working pointer for scratch buffer of output values */
+  pOut = pDst;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Loop over the blockSize. Unroll by a factor of 4.    
+   * Compute 4 Multiplications at a time. */
+  blkCnt = blockSize >> 2;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform Multiplications and store in the destination buffer */
+    *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32);
+    *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32);
+    *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32);
+    *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4,    
+   * compute the remaining samples */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform Multiplications and store in the destination buffer */
+    *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Load the coefficient value and    
+   * increment the coefficient buffer for the next set of state values */
+  coeff = *pCoeffs++;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Loop over the number of taps. */
+  tapCnt = (uint32_t) numTaps - 2u;
+
+  while(tapCnt > 0u)
+  {
+    /* Working pointer for state buffer is updated */
+    py = pState;
+
+    /* blockSize samples are read from the state buffer */
+    arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+                         (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+                         blockSize);
+
+    /* Working pointer for the scratch buffer of state values */
+    px = pb;
+
+    /* Working pointer for scratch buffer of output values */
+    pOut = pDst;
+
+    /* Loop over the blockSize. Unroll by a factor of 4.    
+     * Compute 4 MACS at a time. */
+    blkCnt = blockSize >> 2;
+
+    while(blkCnt > 0u)
+    {
+      out = *pOut;
+      out += ((q63_t) * px++ * coeff) >> 32;
+      *pOut++ = (q31_t) (out);
+
+      out = *pOut;
+      out += ((q63_t) * px++ * coeff) >> 32;
+      *pOut++ = (q31_t) (out);
+
+      out = *pOut;
+      out += ((q63_t) * px++ * coeff) >> 32;
+      *pOut++ = (q31_t) (out);
+
+      out = *pOut;
+      out += ((q63_t) * px++ * coeff) >> 32;
+      *pOut++ = (q31_t) (out);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4,    
+     * compute the remaining samples */
+    blkCnt = blockSize % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      out = *pOut;
+      out += ((q63_t) * px++ * coeff) >> 32;
+      *pOut++ = (q31_t) (out);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Load the coefficient value and    
+     * increment the coefficient buffer for the next set of state values */
+    coeff = *pCoeffs++;
+
+    /* Read Index, from where the state buffer should be read, is calculated. */
+    readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;
+
+    /* Wraparound of readIndex */
+    if(readIndex < 0)
+    {
+      readIndex += (int32_t) delaySize;
+    }
+
+    /* Decrement the tap loop counter */
+    tapCnt--;
+  }
+	
+	/* Compute last tap without the final read of pTapDelay */
+	
+	/* Working pointer for state buffer is updated */
+	py = pState;
+
+	/* blockSize samples are read from the state buffer */
+	arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+											 (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+											 blockSize);
+
+	/* Working pointer for the scratch buffer of state values */
+	px = pb;
+
+	/* Working pointer for scratch buffer of output values */
+	pOut = pDst;
+
+	/* Loop over the blockSize. Unroll by a factor of 4.    
+	 * Compute 4 MACS at a time. */
+	blkCnt = blockSize >> 2;
+
+	while(blkCnt > 0u)
+	{
+		out = *pOut;
+		out += ((q63_t) * px++ * coeff) >> 32;
+		*pOut++ = (q31_t) (out);
+
+		out = *pOut;
+		out += ((q63_t) * px++ * coeff) >> 32;
+		*pOut++ = (q31_t) (out);
+
+		out = *pOut;
+		out += ((q63_t) * px++ * coeff) >> 32;
+		*pOut++ = (q31_t) (out);
+
+		out = *pOut;
+		out += ((q63_t) * px++ * coeff) >> 32;
+		*pOut++ = (q31_t) (out);
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+	/* If the blockSize is not a multiple of 4,    
+	 * compute the remaining samples */
+	blkCnt = blockSize % 0x4u;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		out = *pOut;
+		out += ((q63_t) * px++ * coeff) >> 32;
+		*pOut++ = (q31_t) (out);
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}	
+
+  /* Working output pointer is updated */
+  pOut = pDst;
+
+  /* Output is converted into 1.31 format. */
+  /* Loop over the blockSize. Unroll by a factor of 4.    
+   * process 4 output samples at a time. */
+  blkCnt = blockSize >> 2;
+
+  while(blkCnt > 0u)
+  {
+    in = *pOut << 1;
+    *pOut++ = in;
+    in = *pOut << 1;
+    *pOut++ = in;
+    in = *pOut << 1;
+    *pOut++ = in;
+    in = *pOut << 1;
+    *pOut++ = in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4,    
+   * process the remaining output samples */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    in = *pOut << 1;
+    *pOut++ = in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform Multiplications and store in the destination buffer */
+    *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Load the coefficient value and           
+   * increment the coefficient buffer for the next set of state values */
+  coeff = *pCoeffs++;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Loop over the number of taps. */
+  tapCnt = (uint32_t) numTaps - 2u;
+
+  while(tapCnt > 0u)
+  {
+    /* Working pointer for state buffer is updated */
+    py = pState;
+
+    /* blockSize samples are read from the state buffer */
+    arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+                         (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+                         blockSize);
+
+    /* Working pointer for the scratch buffer of state values */
+    px = pb;
+
+    /* Working pointer for scratch buffer of output values */
+    pOut = pDst;
+
+    blkCnt = blockSize;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      out = *pOut;
+      out += ((q63_t) * px++ * coeff) >> 32;
+      *pOut++ = (q31_t) (out);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Load the coefficient value and           
+     * increment the coefficient buffer for the next set of state values */
+    coeff = *pCoeffs++;
+
+    /* Read Index, from where the state buffer should be read, is calculated. */
+    readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++;
+
+    /* Wraparound of readIndex */
+    if(readIndex < 0)
+    {
+      readIndex += (int32_t) delaySize;
+    }
+
+    /* Decrement the tap loop counter */
+    tapCnt--;
+  }
+	
+	/* Compute last tap without the final read of pTapDelay */	
+	
+	/* Working pointer for state buffer is updated */
+	py = pState;
+
+	/* blockSize samples are read from the state buffer */
+	arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+											 (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+											 blockSize);
+
+	/* Working pointer for the scratch buffer of state values */
+	px = pb;
+
+	/* Working pointer for scratch buffer of output values */
+	pOut = pDst;
+
+	blkCnt = blockSize;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		out = *pOut;
+		out += ((q63_t) * px++ * coeff) >> 32;
+		*pOut++ = (q31_t) (out);
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+  /* Working output pointer is updated */
+  pOut = pDst;
+
+  /* Output is converted into 1.31 format. */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    in = *pOut << 1;
+    *pOut++ = in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR_Sparse group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,480 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_fir_sparse_q7.c    
+*    
+* Description:	Q7 sparse FIR filter processing function.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ------------------------------------------------------------------- */
+#include "arm_math.h"
+
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup FIR_Sparse    
+ * @{    
+ */
+
+
+/**   
+ * @brief Processing function for the Q7 sparse FIR filter.   
+ * @param[in]  *S           points to an instance of the Q7 sparse FIR structure.   
+ * @param[in]  *pSrc        points to the block of input data.   
+ * @param[out] *pDst        points to the block of output data   
+ * @param[in]  *pScratchIn  points to a temporary buffer of size blockSize.   
+ * @param[in]  *pScratchOut points to a temporary buffer of size blockSize.   
+ * @param[in]  blockSize    number of input samples to process per call.   
+ * @return none.   
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using a 32-bit internal accumulator.    
+ * Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result.    
+ * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format.    
+ * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.    
+ * The accumulator is then converted to 18.7 format by discarding the low 7 bits.   
+ * Finally, the result is truncated to 1.7 format.   
+ */
+
+void arm_fir_sparse_q7(
+  arm_fir_sparse_instance_q7 * S,
+  q7_t * pSrc,
+  q7_t * pDst,
+  q7_t * pScratchIn,
+  q31_t * pScratchOut,
+  uint32_t blockSize)
+{
+
+  q7_t *pState = S->pState;                      /* State pointer */
+  q7_t *pCoeffs = S->pCoeffs;                    /* Coefficient pointer */
+  q7_t *px;                                      /* Scratch buffer pointer */
+  q7_t *py = pState;                             /* Temporary pointers for state buffer */
+  q7_t *pb = pScratchIn;                         /* Temporary pointers for scratch buffer */
+  q7_t *pOut = pDst;                             /* Destination pointer */
+  int32_t *pTapDelay = S->pTapDelay;             /* Pointer to the array containing offset of the non-zero tap values. */
+  uint32_t delaySize = S->maxDelay + blockSize;  /* state length */
+  uint16_t numTaps = S->numTaps;                 /* Filter order */
+  int32_t readIndex;                             /* Read index of the state buffer */
+  uint32_t tapCnt, blkCnt;                       /* loop counters */
+  q7_t coeff = *pCoeffs++;                       /* Read the coefficient value */
+  q31_t *pScr2 = pScratchOut;                    /* Working pointer for scratch buffer of output values */
+  q31_t in;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q7_t in1, in2, in3, in4;
+
+  /* BlockSize of Input samples are copied into the state buffer */
+  /* StateIndex points to the starting position to write in the state buffer */
+  arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1,
+                       blockSize);
+
+  /* Loop over the number of taps. */
+  tapCnt = numTaps;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Working pointer for state buffer is updated */
+  py = pState;
+
+  /* blockSize samples are read from the state buffer */
+  arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,
+                      (int32_t) blockSize, 1, blockSize);
+
+  /* Working pointer for the scratch buffer of state values */
+  px = pb;
+
+  /* Working pointer for scratch buffer of output values */
+  pScratchOut = pScr2;
+
+  /* Loop over the blockSize. Unroll by a factor of 4.    
+   * Compute 4 multiplications at a time. */
+  blkCnt = blockSize >> 2;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform multiplication and store in the scratch buffer */
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4,    
+   * compute the remaining samples */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform multiplication and store in the scratch buffer */
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Load the coefficient value and    
+   * increment the coefficient buffer for the next set of state values */
+  coeff = *pCoeffs++;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Loop over the number of taps. */
+  tapCnt = (uint32_t) numTaps - 2u;
+
+  while(tapCnt > 0u)
+  {
+    /* Working pointer for state buffer is updated */
+    py = pState;
+
+    /* blockSize samples are read from the state buffer */
+    arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,
+                        (int32_t) blockSize, 1, blockSize);
+
+    /* Working pointer for the scratch buffer of state values */
+    px = pb;
+
+    /* Working pointer for scratch buffer of output values */
+    pScratchOut = pScr2;
+
+    /* Loop over the blockSize. Unroll by a factor of 4.    
+     * Compute 4 MACS at a time. */
+    blkCnt = blockSize >> 2;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      in = *pScratchOut + ((q31_t) * px++ * coeff);
+      *pScratchOut++ = in;
+      in = *pScratchOut + ((q31_t) * px++ * coeff);
+      *pScratchOut++ = in;
+      in = *pScratchOut + ((q31_t) * px++ * coeff);
+      *pScratchOut++ = in;
+      in = *pScratchOut + ((q31_t) * px++ * coeff);
+      *pScratchOut++ = in;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4,    
+     * compute the remaining samples */
+    blkCnt = blockSize % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      in = *pScratchOut + ((q31_t) * px++ * coeff);
+      *pScratchOut++ = in;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Load the coefficient value and    
+     * increment the coefficient buffer for the next set of state values */
+    coeff = *pCoeffs++;
+
+    /* Read Index, from where the state buffer should be read, is calculated. */
+    readIndex = ((int32_t) S->stateIndex -
+                 (int32_t) blockSize) - *pTapDelay++;
+
+    /* Wraparound of readIndex */
+    if(readIndex < 0)
+    {
+      readIndex += (int32_t) delaySize;
+    }
+
+    /* Decrement the tap loop counter */
+    tapCnt--;
+  }
+	
+	/* Compute last tap without the final read of pTapDelay */	
+	
+	/* Working pointer for state buffer is updated */
+	py = pState;
+
+	/* blockSize samples are read from the state buffer */
+	arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,
+											(int32_t) blockSize, 1, blockSize);
+
+	/* Working pointer for the scratch buffer of state values */
+	px = pb;
+
+	/* Working pointer for scratch buffer of output values */
+	pScratchOut = pScr2;
+
+	/* Loop over the blockSize. Unroll by a factor of 4.    
+	 * Compute 4 MACS at a time. */
+	blkCnt = blockSize >> 2;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		in = *pScratchOut + ((q31_t) * px++ * coeff);
+		*pScratchOut++ = in;
+		in = *pScratchOut + ((q31_t) * px++ * coeff);
+		*pScratchOut++ = in;
+		in = *pScratchOut + ((q31_t) * px++ * coeff);
+		*pScratchOut++ = in;
+		in = *pScratchOut + ((q31_t) * px++ * coeff);
+		*pScratchOut++ = in;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+	/* If the blockSize is not a multiple of 4,    
+	 * compute the remaining samples */
+	blkCnt = blockSize % 0x4u;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		in = *pScratchOut + ((q31_t) * px++ * coeff);
+		*pScratchOut++ = in;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+  /* All the output values are in pScratchOut buffer.    
+     Convert them into 1.15 format, saturate and store in the destination buffer. */
+  /* Loop over the blockSize. */
+  blkCnt = blockSize >> 2;
+
+  while(blkCnt > 0u)
+  {
+    in1 = (q7_t) __SSAT(*pScr2++ >> 7, 8);
+    in2 = (q7_t) __SSAT(*pScr2++ >> 7, 8);
+    in3 = (q7_t) __SSAT(*pScr2++ >> 7, 8);
+    in4 = (q7_t) __SSAT(*pScr2++ >> 7, 8);
+
+    *__SIMD32(pOut)++ = __PACKq7(in1, in2, in3, in4);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4,    
+     remaining samples are processed in the below loop */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* BlockSize of Input samples are copied into the state buffer */
+  /* StateIndex points to the starting position to write in the state buffer */
+  arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1,
+                       blockSize);
+
+  /* Loop over the number of taps. */
+  tapCnt = numTaps;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Working pointer for state buffer is updated */
+  py = pState;
+
+  /* blockSize samples are read from the state buffer */
+  arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,
+                      (int32_t) blockSize, 1, blockSize);
+
+  /* Working pointer for the scratch buffer of state values */
+  px = pb;
+
+  /* Working pointer for scratch buffer of output values */
+  pScratchOut = pScr2;
+
+  /* Loop over the blockSize */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Perform multiplication and store in the scratch buffer */
+    *pScratchOut++ = ((q31_t) * px++ * coeff);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Load the coefficient value and           
+   * increment the coefficient buffer for the next set of state values */
+  coeff = *pCoeffs++;
+
+  /* Read Index, from where the state buffer should be read, is calculated. */
+  readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+  /* Wraparound of readIndex */
+  if(readIndex < 0)
+  {
+    readIndex += (int32_t) delaySize;
+  }
+
+  /* Loop over the number of taps. */
+  tapCnt = (uint32_t) numTaps - 2u;
+
+  while(tapCnt > 0u)
+  {
+    /* Working pointer for state buffer is updated */
+    py = pState;
+
+    /* blockSize samples are read from the state buffer */
+    arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,
+                        (int32_t) blockSize, 1, blockSize);
+
+    /* Working pointer for the scratch buffer of state values */
+    px = pb;
+
+    /* Working pointer for scratch buffer of output values */
+    pScratchOut = pScr2;
+
+    /* Loop over the blockSize */
+    blkCnt = blockSize;
+
+    while(blkCnt > 0u)
+    {
+      /* Perform Multiply-Accumulate */
+      in = *pScratchOut + ((q31_t) * px++ * coeff);
+      *pScratchOut++ = in;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Load the coefficient value and           
+     * increment the coefficient buffer for the next set of state values */
+    coeff = *pCoeffs++;
+
+    /* Read Index, from where the state buffer should be read, is calculated. */
+    readIndex =
+      ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++;
+
+    /* Wraparound of readIndex */
+    if(readIndex < 0)
+    {
+      readIndex += (int32_t) delaySize;
+    }
+
+    /* Decrement the tap loop counter */
+    tapCnt--;
+  }
+	
+	/* Compute last tap without the final read of pTapDelay */	
+	
+	/* Working pointer for state buffer is updated */
+	py = pState;
+
+	/* blockSize samples are read from the state buffer */
+	arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,
+											(int32_t) blockSize, 1, blockSize);
+
+	/* Working pointer for the scratch buffer of state values */
+	px = pb;
+
+	/* Working pointer for scratch buffer of output values */
+	pScratchOut = pScr2;
+
+	/* Loop over the blockSize */
+	blkCnt = blockSize;
+
+	while(blkCnt > 0u)
+	{
+		/* Perform Multiply-Accumulate */
+		in = *pScratchOut + ((q31_t) * px++ * coeff);
+		*pScratchOut++ = in;
+
+		/* Decrement the loop counter */
+		blkCnt--;
+	}
+
+  /* All the output values are in pScratchOut buffer.       
+     Convert them into 1.15 format, saturate and store in the destination buffer. */
+  /* Loop over the blockSize. */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of FIR_Sparse group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,447 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_iir_lattice_f32.c    
+*    
+* Description:	Floating-point IIR Lattice filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup IIR_Lattice Infinite Impulse Response (IIR) Lattice Filters    
+ *    
+ * This set of functions implements lattice filters    
+ * for Q15, Q31 and floating-point data types.  Lattice filters are used in a     
+ * variety of adaptive filter applications.  The filter structure has feedforward and    
+ * feedback components and the net impulse response is infinite length.    
+ * The functions operate on blocks    
+ * of input and output data and each call to the function processes    
+ * <code>blockSize</code> samples through the filter.  <code>pSrc</code> and    
+ * <code>pDst</code> point to input and output arrays containing <code>blockSize</code> values.    
+    
+ * \par Algorithm:    
+ * \image html IIRLattice.gif "Infinite Impulse Response Lattice filter"    
+ * <pre>    
+ *    fN(n)   =  x(n)    
+ *    fm-1(n) = fm(n) - km * gm-1(n-1)   for m = N, N-1, ...1    
+ *    gm(n)   = km * fm-1(n) + gm-1(n-1) for m = N, N-1, ...1    
+ *    y(n)    = vN * gN(n) + vN-1 * gN-1(n) + ...+ v0 * g0(n)    
+ * </pre>    
+ * \par    
+ * <code>pkCoeffs</code> points to array of reflection coefficients of size <code>numStages</code>.     
+ * Reflection coefficients are stored in time-reversed order.    
+ * \par    
+ * <pre>    
+ *    {kN, kN-1, ....k1}    
+ * </pre>    
+ * <code>pvCoeffs</code> points to the array of ladder coefficients of size <code>(numStages+1)</code>.     
+ * Ladder coefficients are stored in time-reversed order.    
+ * \par    
+ * <pre>    
+ *    {vN, vN-1, ...v0}    
+ * </pre>    
+ * <code>pState</code> points to a state array of size <code>numStages + blockSize</code>.    
+ * The state variables shown in the figure above (the g values) are stored in the <code>pState</code> array.    
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.    
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter.    
+ * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.    
+ * There are separate instance structure declarations for each of the 3 supported data types.    
+  *    
+ * \par Initialization Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.   
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * numStages, pkCoeffs, pvCoeffs, pState. Also set all of the values in pState to zero. 
+ *    
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * Set the values in the state buffer to zeros and then manually initialize the instance structure as follows:    
+ * <pre>    
+ *arm_iir_lattice_instance_f32 S = {numStages, pState, pkCoeffs, pvCoeffs};    
+ *arm_iir_lattice_instance_q31 S = {numStages, pState, pkCoeffs, pvCoeffs};    
+ *arm_iir_lattice_instance_q15 S = {numStages, pState, pkCoeffs, pvCoeffs};    
+ * </pre>    
+ * \par    
+ * where <code>numStages</code> is the number of stages in the filter; <code>pState</code> points to the state buffer array;    
+ * <code>pkCoeffs</code> points to array of the reflection coefficients; <code>pvCoeffs</code> points to the array of ladder coefficients.    
+ * \par Fixed-Point Behavior    
+ * Care must be taken when using the fixed-point versions of the IIR lattice filter functions.    
+ * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.    
+ * Refer to the function specific documentation below for usage guidelines.    
+ */
+
+/**    
+ * @addtogroup IIR_Lattice    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the floating-point IIR lattice filter.    
+ * @param[in] *S points to an instance of the floating-point IIR lattice structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data.    
+ * @param[in] blockSize number of samples to process.    
+ * @return none.    
+ */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+void arm_iir_lattice_f32(
+  const arm_iir_lattice_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t fnext1, gcurr1, gnext;               /* Temporary variables for lattice stages */
+  float32_t acc;                                 /* Accumlator */
+  uint32_t blkCnt, tapCnt;                       /* temporary variables for counts */
+  float32_t *px1, *px2, *pk, *pv;                /* temporary pointers for state and coef */
+  uint32_t numStages = S->numStages;             /* number of stages */
+  float32_t *pState;                             /* State pointer */
+  float32_t *pStateCurnt;                        /* State current pointer */
+  float32_t k1, k2;
+  float32_t v1, v2, v3, v4;
+  float32_t gcurr2;
+  float32_t fnext2;
+
+  /* initialise loop count */
+  blkCnt = blockSize;
+
+  /* initialise state pointer */
+  pState = &S->pState[0];
+
+  /* Sample processing */
+  while(blkCnt > 0u)
+  {
+    /* Read Sample from input buffer */
+    /* fN(n) = x(n) */
+    fnext2 = *pSrc++;
+
+    /* Initialize Ladder coeff pointer */
+    pv = &S->pvCoeffs[0];
+    /* Initialize Reflection coeff pointer */
+    pk = &S->pkCoeffs[0];
+
+    /* Initialize state read pointer */
+    px1 = pState;
+    /* Initialize state write pointer */
+    px2 = pState;
+
+    /* Set accumulator to zero */
+    acc = 0.0;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = (numStages) >> 2;
+
+    while(tapCnt > 0u)
+    {
+      /* Read gN-1(n-1) from state buffer */
+      gcurr1 = *px1;
+
+      /* read reflection coefficient kN */
+      k1 = *pk;
+
+      /* fN-1(n) = fN(n) - kN * gN-1(n-1) */
+      fnext1 = fnext2 - (k1 * gcurr1);
+
+      /* read ladder coefficient vN */
+      v1 = *pv;
+
+      /* read next reflection coefficient kN-1 */
+      k2 = *(pk + 1u);
+
+      /* Read gN-2(n-1) from state buffer */
+      gcurr2 = *(px1 + 1u);
+
+      /* read next ladder coefficient vN-1 */
+      v2 = *(pv + 1u);
+
+      /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */
+      fnext2 = fnext1 - (k2 * gcurr2);
+
+      /* gN(n)   = kN * fN-1(n) + gN-1(n-1) */
+      gnext = gcurr1 + (k1 * fnext1);
+
+      /* read reflection coefficient kN-2 */
+      k1 = *(pk + 2u);
+
+      /* write gN(n) into state for next sample processing */
+      *px2++ = gnext;
+
+      /* Read gN-3(n-1) from state buffer */
+      gcurr1 = *(px1 + 2u);
+
+      /* y(n) += gN(n) * vN  */
+      acc += (gnext * v1);
+
+      /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */
+      fnext1 = fnext2 - (k1 * gcurr1);
+
+      /* gN-1(n)   = kN-1 * fN-2(n) + gN-2(n-1) */
+      gnext = gcurr2 + (k2 * fnext2);
+
+      /* Read gN-4(n-1) from state buffer */
+      gcurr2 = *(px1 + 3u);
+
+      /* y(n) += gN-1(n) * vN-1  */
+      acc += (gnext * v2);
+
+      /* read reflection coefficient kN-3 */
+      k2 = *(pk + 3u);
+
+      /* write gN-1(n) into state for next sample processing */
+      *px2++ = gnext;
+
+      /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */
+      fnext2 = fnext1 - (k2 * gcurr2);
+
+      /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */
+      gnext = gcurr1 + (k1 * fnext1);
+
+      /* read ladder coefficient vN-2 */
+      v3 = *(pv + 2u);
+
+      /* y(n) += gN-2(n) * vN-2  */
+      acc += (gnext * v3);
+
+      /* write gN-2(n) into state for next sample processing */
+      *px2++ = gnext;
+
+      /* update pointer */
+      pk += 4u;
+
+      /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */
+      gnext = (fnext2 * k2) + gcurr2;
+
+      /* read next ladder coefficient vN-3 */
+      v4 = *(pv + 3u);
+
+      /* y(n) += gN-4(n) * vN-4  */
+      acc += (gnext * v4);
+
+      /* write gN-3(n) into state for next sample processing */
+      *px2++ = gnext;
+
+      /* update pointers */
+      px1 += 4u;
+      pv += 4u;
+
+      tapCnt--;
+
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = (numStages) % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      gcurr1 = *px1++;
+      /* Process sample for last taps */
+      fnext1 = fnext2 - ((*pk) * gcurr1);
+      gnext = (fnext1 * (*pk++)) + gcurr1;
+      /* Output samples for last taps */
+      acc += (gnext * (*pv++));
+      *px2++ = gnext;
+      fnext2 = fnext1;
+
+      tapCnt--;
+
+    }
+
+    /* y(n) += g0(n) * v0 */
+    acc += (fnext2 * (*pv));
+
+    *px2++ = fnext2;
+
+    /* write out into pDst */
+    *pDst++ = acc;
+
+    /* Advance the state pointer by 4 to process the next group of 4 samples */
+    pState = pState + 1u;
+
+    blkCnt--;
+
+  }
+
+  /* Processing is complete. Now copy last S->numStages samples to start of the buffer        
+     for the preperation of next frame process */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = &S->pState[0];
+  pState = &S->pState[blockSize];
+
+  tapCnt = numStages >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+
+  }
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numStages) % 0x4u;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+}
+
+#else
+
+void arm_iir_lattice_f32(
+  const arm_iir_lattice_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t fcurr, fnext = 0, gcurr, gnext;      /* Temporary variables for lattice stages */
+  float32_t acc;                                 /* Accumlator */
+  uint32_t blkCnt, tapCnt;                       /* temporary variables for counts */
+  float32_t *px1, *px2, *pk, *pv;                /* temporary pointers for state and coef */
+  uint32_t numStages = S->numStages;             /* number of stages */
+  float32_t *pState;                             /* State pointer */
+  float32_t *pStateCurnt;                        /* State current pointer */
+
+
+  /* Run the below code for Cortex-M0 */
+
+  blkCnt = blockSize;
+
+  pState = &S->pState[0];
+
+  /* Sample processing */
+  while(blkCnt > 0u)
+  {
+    /* Read Sample from input buffer */
+    /* fN(n) = x(n) */
+    fcurr = *pSrc++;
+
+    /* Initialize state read pointer */
+    px1 = pState;
+    /* Initialize state write pointer */
+    px2 = pState;
+    /* Set accumulator to zero */
+    acc = 0.0f;
+    /* Initialize Ladder coeff pointer */
+    pv = &S->pvCoeffs[0];
+    /* Initialize Reflection coeff pointer */
+    pk = &S->pkCoeffs[0];
+
+
+    /* Process sample for numStages */
+    tapCnt = numStages;
+
+    while(tapCnt > 0u)
+    {
+      gcurr = *px1++;
+      /* Process sample for last taps */
+      fnext = fcurr - ((*pk) * gcurr);
+      gnext = (fnext * (*pk++)) + gcurr;
+
+      /* Output samples for last taps */
+      acc += (gnext * (*pv++));
+      *px2++ = gnext;
+      fcurr = fnext;
+
+      /* Decrementing loop counter */
+      tapCnt--;
+
+    }
+
+    /* y(n) += g0(n) * v0 */
+    acc += (fnext * (*pv));
+
+    *px2++ = fnext;
+
+    /* write out into pDst */
+    *pDst++ = acc;
+
+    /* Advance the state pointer by 1 to process the next group of samples */
+    pState = pState + 1u;
+    blkCnt--;
+
+  }
+
+  /* Processing is complete. Now copy last S->numStages samples to start of the buffer           
+     for the preperation of next frame process */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = &S->pState[0];
+  pState = &S->pState[blockSize];
+
+  tapCnt = numStages;
+
+  /* Copy the data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+}
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+
+/**    
+ * @} end of IIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,91 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_iir_lattice_init_f32.c    
+*    
+* Description:  Floating-point IIR lattice filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup IIR_Lattice    
+ * @{    
+ */
+
+/**    
+ * @brief Initialization function for the floating-point IIR lattice filter.    
+ * @param[in] *S points to an instance of the floating-point IIR lattice structure.    
+ * @param[in] numStages number of stages in the filter.    
+ * @param[in] *pkCoeffs points to the reflection coefficient buffer.  The array is of length numStages.    
+ * @param[in] *pvCoeffs points to the ladder coefficient buffer.  The array is of length numStages+1.    
+ * @param[in] *pState points to the state buffer.  The array is of length numStages+blockSize.    
+ * @param[in] blockSize number of samples to process.    
+ * @return none.    
+ */
+
+void arm_iir_lattice_init_f32(
+  arm_iir_lattice_instance_f32 * S,
+  uint16_t numStages,
+  float32_t * pkCoeffs,
+  float32_t * pvCoeffs,
+  float32_t * pState,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numStages = numStages;
+
+  /* Assign reflection coefficient pointer */
+  S->pkCoeffs = pkCoeffs;
+
+  /* Assign ladder coefficient pointer */
+  S->pvCoeffs = pvCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numStages */
+  memset(pState, 0, (numStages + blockSize) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+
+}
+
+  /**    
+   * @} end of IIR_Lattice group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,91 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_iir_lattice_init_q15.c    
+*    
+* Description:  Q15 IIR lattice filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup IIR_Lattice    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for the Q15 IIR lattice filter.    
+   * @param[in] *S points to an instance of the Q15 IIR lattice structure.    
+   * @param[in] numStages  number of stages in the filter.    
+   * @param[in] *pkCoeffs points to reflection coefficient buffer.  The array is of length numStages.    
+   * @param[in] *pvCoeffs points to ladder coefficient buffer.  The array is of length numStages+1.    
+   * @param[in] *pState points to state buffer.  The array is of length numStages+blockSize.    
+   * @param[in] blockSize number of samples to process per call.    
+   * @return none.    
+   */
+
+void arm_iir_lattice_init_q15(
+  arm_iir_lattice_instance_q15 * S,
+  uint16_t numStages,
+  q15_t * pkCoeffs,
+  q15_t * pvCoeffs,
+  q15_t * pState,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numStages = numStages;
+
+  /* Assign reflection coefficient pointer */
+  S->pkCoeffs = pkCoeffs;
+
+  /* Assign ladder coefficient pointer */
+  S->pvCoeffs = pvCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numStages */
+  memset(pState, 0, (numStages + blockSize) * sizeof(q15_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+
+}
+
+/**    
+ * @} end of IIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,91 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_iir_lattice_init_q31.c    
+*    
+* Description:  Initialization function for the Q31 IIR lattice filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup IIR_Lattice    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for the Q31 IIR lattice filter.    
+   * @param[in] *S points to an instance of the Q31 IIR lattice structure.    
+   * @param[in] numStages number of stages in the filter.    
+   * @param[in] *pkCoeffs points to the reflection coefficient buffer.  The array is of length numStages.    
+   * @param[in] *pvCoeffs points to the ladder coefficient buffer.  The array is of length numStages+1.    
+   * @param[in] *pState points to the state buffer.  The array is of length numStages+blockSize.    
+   * @param[in] blockSize number of samples to process.    
+   * @return none.    
+   */
+
+void arm_iir_lattice_init_q31(
+  arm_iir_lattice_instance_q31 * S,
+  uint16_t numStages,
+  q31_t * pkCoeffs,
+  q31_t * pvCoeffs,
+  q31_t * pState,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numStages = numStages;
+
+  /* Assign reflection coefficient pointer */
+  S->pkCoeffs = pkCoeffs;
+
+  /* Assign ladder coefficient pointer */
+  S->pvCoeffs = pvCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numStages */
+  memset(pState, 0, (numStages + blockSize) * sizeof(q31_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+
+}
+
+/**    
+ * @} end of IIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,464 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_iir_lattice_q15.c    
+*    
+* Description:	Q15 IIR lattice filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup IIR_Lattice    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q15 IIR lattice filter.    
+ * @param[in] *S points to an instance of the Q15 IIR lattice structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data.    
+ * @param[in] blockSize number of samples to process.    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.    
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.    
+ * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.    
+ * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.    
+ * Lastly, the accumulator is saturated to yield a result in 1.15 format.    
+ */
+
+void arm_iir_lattice_q15(
+  const arm_iir_lattice_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t fcurr, fnext, gcurr = 0, gnext;          /* Temporary variables for lattice stages */
+  q15_t gnext1, gnext2;                          /* Temporary variables for lattice stages */
+  uint32_t stgCnt;                               /* Temporary variables for counts */
+  q63_t acc;                                     /* Accumlator */
+  uint32_t blkCnt, tapCnt;                       /* Temporary variables for counts */
+  q15_t *px1, *px2, *pk, *pv;                    /* temporary pointers for state and coef */
+  uint32_t numStages = S->numStages;             /* number of stages */
+  q15_t *pState;                                 /* State pointer */
+  q15_t *pStateCurnt;                            /* State current pointer */
+  q15_t out;                                     /* Temporary variable for output */
+  q31_t v;                                       /* Temporary variable for ladder coefficient */
+#ifdef UNALIGNED_SUPPORT_DISABLE
+	q15_t v1, v2;
+#endif
+
+
+  blkCnt = blockSize;
+
+  pState = &S->pState[0];
+
+  /* Sample processing */
+  while(blkCnt > 0u)
+  {
+    /* Read Sample from input buffer */
+    /* fN(n) = x(n) */
+    fcurr = *pSrc++;
+
+    /* Initialize state read pointer */
+    px1 = pState;
+    /* Initialize state write pointer */
+    px2 = pState;
+    /* Set accumulator to zero */
+    acc = 0;
+    /* Initialize Ladder coeff pointer */
+    pv = &S->pvCoeffs[0];
+    /* Initialize Reflection coeff pointer */
+    pk = &S->pkCoeffs[0];
+
+
+    /* Process sample for first tap */
+    gcurr = *px1++;
+    /* fN-1(n) = fN(n) - kN * gN-1(n-1) */
+    fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15);
+    fnext = __SSAT(fnext, 16);
+    /* gN(n) = kN * fN-1(n) + gN-1(n-1) */
+    gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr;
+    gnext = __SSAT(gnext, 16);
+    /* write gN(n) into state for next sample processing */
+    *px2++ = (q15_t) gnext;
+    /* y(n) += gN(n) * vN  */
+    acc += (q31_t) ((gnext * (*pv++)));
+
+
+    /* Update f values for next coefficient processing */
+    fcurr = fnext;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = (numStages - 1u) >> 2;
+
+    while(tapCnt > 0u)
+    {
+
+      /* Process sample for 2nd, 6th ...taps */
+      /* Read gN-2(n-1) from state buffer */
+      gcurr = *px1++;
+      /* Process sample for 2nd, 6th .. taps */
+      /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */
+      fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15);
+      fnext = __SSAT(fnext, 16);
+      /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */
+      gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr;
+      gnext1 = (q15_t) __SSAT(gnext, 16);
+      /* write gN-1(n) into state */
+      *px2++ = (q15_t) gnext1;
+
+
+      /* Process sample for 3nd, 7th ...taps */
+      /* Read gN-3(n-1) from state */
+      gcurr = *px1++;
+      /* Process sample for 3rd, 7th .. taps */
+      /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */
+      fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15);
+      fcurr = __SSAT(fcurr, 16);
+      /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */
+      gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr;
+      gnext2 = (q15_t) __SSAT(gnext, 16);
+      /* write gN-2(n) into state */
+      *px2++ = (q15_t) gnext2;
+
+      /* Read vN-1 and vN-2 at a time */
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+      v = *__SIMD32(pv)++;
+
+#else
+
+	  v1 = *pv++;
+	  v2 = *pv++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+	  v = __PKHBT(v1, v2, 16);
+
+#else
+
+	  v = __PKHBT(v2, v1, 16);
+
+#endif	/* 	#ifndef ARM_MATH_BIG_ENDIAN		*/
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE */
+
+
+      /* Pack gN-1(n) and gN-2(n) */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      gnext = __PKHBT(gnext1, gnext2, 16);
+
+#else
+
+      gnext = __PKHBT(gnext2, gnext1, 16);
+
+#endif /*   #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* y(n) += gN-1(n) * vN-1  */
+      /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */
+      /* y(n) += gN-2(n) * vN-2  */
+      /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */
+      acc = __SMLALD(gnext, v, acc);
+
+
+      /* Process sample for 4th, 8th ...taps */
+      /* Read gN-4(n-1) from state */
+      gcurr = *px1++;
+      /* Process sample for 4th, 8th .. taps */
+      /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */
+      fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15);
+      fnext = __SSAT(fnext, 16);
+      /* gN-3(n) = kN-3 * fN-1(n) + gN-1(n-1) */
+      gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr;
+      gnext1 = (q15_t) __SSAT(gnext, 16);
+      /* write  gN-3(n) for the next sample process */
+      *px2++ = (q15_t) gnext1;
+
+
+      /* Process sample for 5th, 9th ...taps */
+      /* Read gN-5(n-1) from state */
+      gcurr = *px1++;
+      /* Process sample for 5th, 9th .. taps */
+      /* fN-5(n) = fN-4(n) - kN-4 * gN-5(n-1) */
+      fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15);
+      fcurr = __SSAT(fcurr, 16);
+      /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */
+      gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr;
+      gnext2 = (q15_t) __SSAT(gnext, 16);
+      /* write      gN-4(n) for the next sample process */
+      *px2++ = (q15_t) gnext2;
+
+      /* Read vN-3 and vN-4 at a time */
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+      v = *__SIMD32(pv)++;
+
+#else
+
+	  v1 = *pv++;
+	  v2 = *pv++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+	  v = __PKHBT(v1, v2, 16);
+
+#else
+
+	  v = __PKHBT(v2, v1, 16);
+
+#endif	/* #ifndef ARM_MATH_BIG_ENDIAN	 */
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE */
+
+
+      /* Pack gN-3(n) and gN-4(n) */
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+      gnext = __PKHBT(gnext1, gnext2, 16);
+
+#else
+
+      gnext = __PKHBT(gnext2, gnext1, 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+      /* y(n) += gN-4(n) * vN-4  */
+      /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */
+      /* y(n) += gN-3(n) * vN-3  */
+      /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */
+      acc = __SMLALD(gnext, v, acc);
+
+      tapCnt--;
+
+    }
+
+    fnext = fcurr;
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = (numStages - 1u) % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      gcurr = *px1++;
+      /* Process sample for last taps */
+      fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15);
+      fnext = __SSAT(fnext, 16);
+      gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr;
+      gnext = __SSAT(gnext, 16);
+      /* Output samples for last taps */
+      acc += (q31_t) (((q31_t) gnext * (*pv++)));
+      *px2++ = (q15_t) gnext;
+      fcurr = fnext;
+
+      tapCnt--;
+    }
+
+    /* y(n) += g0(n) * v0 */
+    acc += (q31_t) (((q31_t) fnext * (*pv++)));
+
+    out = (q15_t) __SSAT(acc >> 15, 16);
+    *px2++ = (q15_t) fnext;
+
+    /* write out into pDst */
+    *pDst++ = out;
+
+    /* Advance the state pointer by 4 to process the next group of 4 samples */
+    pState = pState + 1u;
+    blkCnt--;
+
+  }
+
+  /* Processing is complete. Now copy last S->numStages samples to start of the buffer    
+     for the preperation of next frame process */
+  /* Points to the start of the state buffer */
+  pStateCurnt = &S->pState[0];
+  pState = &S->pState[blockSize];
+
+  stgCnt = (numStages >> 2u);
+
+  /* copy data */
+  while(stgCnt > 0u)
+  {
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+
+#else
+
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+#endif /*	#ifndef UNALIGNED_SUPPORT_DISABLE */
+
+    /* Decrement the loop counter */
+    stgCnt--;
+
+  }
+
+  /* Calculation of count for remaining q15_t data */
+  stgCnt = (numStages) % 0x4u;
+
+  /* copy data */
+  while(stgCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    stgCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t fcurr, fnext = 0, gcurr = 0, gnext;      /* Temporary variables for lattice stages */
+  uint32_t stgCnt;                               /* Temporary variables for counts */
+  q63_t acc;                                     /* Accumlator */
+  uint32_t blkCnt, tapCnt;                       /* Temporary variables for counts */
+  q15_t *px1, *px2, *pk, *pv;                    /* temporary pointers for state and coef */
+  uint32_t numStages = S->numStages;             /* number of stages */
+  q15_t *pState;                                 /* State pointer */
+  q15_t *pStateCurnt;                            /* State current pointer */
+  q15_t out;                                     /* Temporary variable for output */
+
+
+  blkCnt = blockSize;
+
+  pState = &S->pState[0];
+
+  /* Sample processing */
+  while(blkCnt > 0u)
+  {
+    /* Read Sample from input buffer */
+    /* fN(n) = x(n) */
+    fcurr = *pSrc++;
+
+    /* Initialize state read pointer */
+    px1 = pState;
+    /* Initialize state write pointer */
+    px2 = pState;
+    /* Set accumulator to zero */
+    acc = 0;
+    /* Initialize Ladder coeff pointer */
+    pv = &S->pvCoeffs[0];
+    /* Initialize Reflection coeff pointer */
+    pk = &S->pkCoeffs[0];
+
+    tapCnt = numStages;
+
+    while(tapCnt > 0u)
+    {
+      gcurr = *px1++;
+      /* Process sample */
+      /* fN-1(n) = fN(n) - kN * gN-1(n-1) */
+      fnext = fcurr - ((gcurr * (*pk)) >> 15);
+      fnext = __SSAT(fnext, 16);
+      /* gN(n) = kN * fN-1(n) + gN-1(n-1) */
+      gnext = ((fnext * (*pk++)) >> 15) + gcurr;
+      gnext = __SSAT(gnext, 16);
+      /* Output samples */
+      /* y(n) += gN(n) * vN */
+      acc += (q31_t) ((gnext * (*pv++)));
+      /* write gN(n) into state for next sample processing */
+      *px2++ = (q15_t) gnext;
+      /* Update f values for next coefficient processing */
+      fcurr = fnext;
+
+      tapCnt--;
+    }
+
+    /* y(n) += g0(n) * v0 */
+    acc += (q31_t) ((fnext * (*pv++)));
+
+    out = (q15_t) __SSAT(acc >> 15, 16);
+    *px2++ = (q15_t) fnext;
+
+    /* write out into pDst */
+    *pDst++ = out;
+
+    /* Advance the state pointer by 1 to process the next group of samples */
+    pState = pState + 1u;
+    blkCnt--;
+
+  }
+
+  /* Processing is complete. Now copy last S->numStages samples to start of the buffer           
+     for the preperation of next frame process */
+  /* Points to the start of the state buffer */
+  pStateCurnt = &S->pState[0];
+  pState = &S->pState[blockSize];
+
+  stgCnt = numStages;
+
+  /* copy data */
+  while(stgCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    stgCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+
+
+
+/**    
+ * @} end of IIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,350 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_iir_lattice_q31.c    
+*    
+* Description:	Q31 IIR lattice filter processing function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup IIR_Lattice    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q31 IIR lattice filter.    
+ * @param[in] *S points to an instance of the Q31 IIR lattice structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[out] *pDst points to the block of output data.    
+ * @param[in] blockSize number of samples to process.    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.    
+ * Thus, if the accumulator result overflows it wraps around rather than clip.    
+ * In order to avoid overflows completely the input signal must be scaled down by 2*log2(numStages) bits.    
+ * After all multiply-accumulates are performed, the 2.62 accumulator is saturated to 1.32 format and then truncated to 1.31 format.    
+ */
+
+void arm_iir_lattice_q31(
+  const arm_iir_lattice_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t fcurr, fnext = 0, gcurr = 0, gnext;      /* Temporary variables for lattice stages */
+  q63_t acc;                                     /* Accumlator */
+  uint32_t blkCnt, tapCnt;                       /* Temporary variables for counts */
+  q31_t *px1, *px2, *pk, *pv;                    /* Temporary pointers for state and coef */
+  uint32_t numStages = S->numStages;             /* number of stages */
+  q31_t *pState;                                 /* State pointer */
+  q31_t *pStateCurnt;                            /* State current pointer */
+
+  blkCnt = blockSize;
+
+  pState = &S->pState[0];
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Sample processing */
+  while(blkCnt > 0u)
+  {
+    /* Read Sample from input buffer */
+    /* fN(n) = x(n) */
+    fcurr = *pSrc++;
+
+    /* Initialize state read pointer */
+    px1 = pState;
+    /* Initialize state write pointer */
+    px2 = pState;
+    /* Set accumulator to zero */
+    acc = 0;
+    /* Initialize Ladder coeff pointer */
+    pv = &S->pvCoeffs[0];
+    /* Initialize Reflection coeff pointer */
+    pk = &S->pkCoeffs[0];
+
+
+    /* Process sample for first tap */
+    gcurr = *px1++;
+    /* fN-1(n) = fN(n) - kN * gN-1(n-1) */
+    fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31));
+    /* gN(n) = kN * fN-1(n) + gN-1(n-1) */
+    gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31));
+    /* write gN-1(n-1) into state for next sample processing */
+    *px2++ = gnext;
+    /* y(n) += gN(n) * vN  */
+    acc += ((q63_t) gnext * *pv++);
+
+    /* Update f values for next coefficient processing */
+    fcurr = fnext;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = (numStages - 1u) >> 2;
+
+    while(tapCnt > 0u)
+    {
+
+      /* Process sample for 2nd, 6th .. taps */
+      /* Read gN-2(n-1) from state buffer */
+      gcurr = *px1++;
+      /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */
+      fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31));
+      /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */
+      gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31));
+      /* y(n) += gN-1(n) * vN-1  */
+      /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */
+      acc += ((q63_t) gnext * *pv++);
+      /* write gN-1(n) into state for next sample processing */
+      *px2++ = gnext;
+
+      /* Process sample for 3nd, 7th ...taps */
+      /* Read gN-3(n-1) from state buffer */
+      gcurr = *px1++;
+      /* Process sample for 3rd, 7th .. taps */
+      /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */
+      fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk)) >> 31));
+      /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */
+      gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31));
+      /* y(n) += gN-2(n) * vN-2  */
+      /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */
+      acc += ((q63_t) gnext * *pv++);
+      /* write gN-2(n) into state for next sample processing */
+      *px2++ = gnext;
+
+
+      /* Process sample for 4th, 8th ...taps */
+      /* Read gN-4(n-1) from state buffer */
+      gcurr = *px1++;
+      /* Process sample for 4th, 8th .. taps */
+      /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */
+      fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31));
+      /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */
+      gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31));
+      /* y(n) += gN-3(n) * vN-3  */
+      /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */
+      acc += ((q63_t) gnext * *pv++);
+      /* write gN-3(n) into state for next sample processing */
+      *px2++ = gnext;
+
+
+      /* Process sample for 5th, 9th ...taps */
+      /* Read gN-5(n-1) from state buffer */
+      gcurr = *px1++;
+      /* Process sample for 5th, 9th .. taps */
+      /* fN-5(n) = fN-4(n) - kN-4 * gN-1(n-1) */
+      fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk)) >> 31));
+      /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */
+      gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31));
+      /* y(n) += gN-4(n) * vN-4  */
+      /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */
+      acc += ((q63_t) gnext * *pv++);
+      /* write gN-4(n) into state for next sample processing */
+      *px2++ = gnext;
+
+      tapCnt--;
+
+    }
+
+    fnext = fcurr;
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = (numStages - 1u) % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      gcurr = *px1++;
+      /* Process sample for last taps */
+      fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31));
+      gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31));
+      /* Output samples for last taps */
+      acc += ((q63_t) gnext * *pv++);
+      *px2++ = gnext;
+      fcurr = fnext;
+
+      tapCnt--;
+
+    }
+
+    /* y(n) += g0(n) * v0 */
+    acc += (q63_t) fnext *(
+  *pv++);
+
+    *px2++ = fnext;
+
+    /* write out into pDst */
+    *pDst++ = (q31_t) (acc >> 31u);
+
+    /* Advance the state pointer by 4 to process the next group of 4 samples */
+    pState = pState + 1u;
+    blkCnt--;
+
+  }
+
+  /* Processing is complete. Now copy last S->numStages samples to start of the buffer    
+     for the preperation of next frame process */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = &S->pState[0];
+  pState = &S->pState[blockSize];
+
+  tapCnt = numStages >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+
+  }
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numStages) % 0x4u;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  };
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  /* Sample processing */
+  while(blkCnt > 0u)
+  {
+    /* Read Sample from input buffer */
+    /* fN(n) = x(n) */
+    fcurr = *pSrc++;
+
+    /* Initialize state read pointer */
+    px1 = pState;
+    /* Initialize state write pointer */
+    px2 = pState;
+    /* Set accumulator to zero */
+    acc = 0;
+    /* Initialize Ladder coeff pointer */
+    pv = &S->pvCoeffs[0];
+    /* Initialize Reflection coeff pointer */
+    pk = &S->pkCoeffs[0];
+
+    tapCnt = numStages;
+
+    while(tapCnt > 0u)
+    {
+      gcurr = *px1++;
+      /* Process sample */
+      /* fN-1(n) = fN(n) - kN * gN-1(n-1) */
+      fnext =
+        clip_q63_to_q31(((q63_t) fcurr -
+                         ((q31_t) (((q63_t) gcurr * (*pk)) >> 31))));
+      /* gN(n) = kN * fN-1(n) + gN-1(n-1) */
+      gnext =
+        clip_q63_to_q31(((q63_t) gcurr +
+                         ((q31_t) (((q63_t) fnext * (*pk++)) >> 31))));
+      /* Output samples */
+      /* y(n) += gN(n) * vN  */
+      acc += ((q63_t) gnext * *pv++);
+      /* write gN-1(n-1) into state for next sample processing */
+      *px2++ = gnext;
+      /* Update f values for next coefficient processing */
+      fcurr = fnext;
+
+      tapCnt--;
+    }
+
+    /* y(n) += g0(n) * v0 */
+    acc += (q63_t) fnext *(
+  *pv++);
+
+    *px2++ = fnext;
+
+    /* write out into pDst */
+    *pDst++ = (q31_t) (acc >> 31u);
+
+    /* Advance the state pointer by 1 to process the next group of samples */
+    pState = pState + 1u;
+    blkCnt--;
+
+  }
+
+  /* Processing is complete. Now copy last S->numStages samples to start of the buffer           
+     for the preperation of next frame process */
+
+  /* Points to the start of the state buffer */
+  pStateCurnt = &S->pState[0];
+  pState = &S->pState[blockSize];
+
+  tapCnt = numStages;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+
+
+
+/**    
+ * @} end of IIR_Lattice group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,442 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_lms_f32.c    
+*    
+* Description:	Processing function for the floating-point LMS filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup LMS Least Mean Square (LMS) Filters    
+ *    
+ * LMS filters are a class of adaptive filters that are able to "learn" an unknown transfer functions.    
+ * LMS filters use a gradient descent method in which the filter coefficients are updated based on the instantaneous error signal.    
+ * Adaptive filters are often used in communication systems, equalizers, and noise removal.    
+ * The CMSIS DSP Library contains LMS filter functions that operate on Q15, Q31, and floating-point data types.    
+ * The library also contains normalized LMS filters in which the filter coefficient adaptation is indepedent of the level of the input signal.    
+ *    
+ * An LMS filter consists of two components as shown below.    
+ * The first component is a standard transversal or FIR filter.    
+ * The second component is a coefficient update mechanism.    
+ * The LMS filter has two input signals.    
+ * The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter.    
+ * That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input.    
+ * The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input.    
+ * This "error signal" tends towards zero as the filter adapts.    
+ * The LMS processing functions accept the input and reference input signals and generate the filter output and error signal.    
+ * \image html LMS.gif "Internal structure of the Least Mean Square filter"    
+ *    
+ * The functions operate on blocks of data and each call to the function processes    
+ * <code>blockSize</code> samples through the filter.    
+ * <code>pSrc</code> points to input signal, <code>pRef</code> points to reference signal,    
+ * <code>pOut</code> points to output signal and <code>pErr</code> points to error signal.    
+ * All arrays contain <code>blockSize</code> values.    
+ *    
+ * The functions operate on a block-by-block basis.    
+ * Internally, the filter coefficients <code>b[n]</code> are updated on a sample-by-sample basis.    
+ * The convergence of the LMS filter is slower compared to the normalized LMS algorithm.    
+ *    
+ * \par Algorithm:    
+ * The output signal <code>y[n]</code> is computed by a standard FIR filter:    
+ * <pre>    
+ *     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]    
+ * </pre>    
+ *    
+ * \par    
+ * The error signal equals the difference between the reference signal <code>d[n]</code> and the filter output:    
+ * <pre>    
+ *     e[n] = d[n] - y[n].    
+ * </pre>    
+ *    
+ * \par    
+ * After each sample of the error signal is computed, the filter coefficients <code>b[k]</code> are updated on a sample-by-sample basis:    
+ * <pre>    
+ *     b[k] = b[k] + e[n] * mu * x[n-k],  for k=0, 1, ..., numTaps-1    
+ * </pre>    
+ * where <code>mu</code> is the step size and controls the rate of coefficient convergence.    
+ *\par    
+ * In the APIs, <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.    
+ * Coefficients are stored in time reversed order.    
+ * \par    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to a state array of size <code>numTaps + blockSize - 1</code>.    
+ * Samples in the state buffer are stored in the order:    
+ * \par    
+ * <pre>    
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}    
+ * </pre>    
+ * \par    
+ * Note that the length of the state buffer exceeds the length of the coefficient array by <code>blockSize-1</code> samples.    
+ * The increased state buffer length allows circular addressing, which is traditionally used in FIR filters,    
+ * to be avoided and yields a significant speed improvement.    
+ * The state variables are updated after each block of data is processed.    
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter and    
+ * coefficient and state arrays cannot be shared among instances.    
+ * There are separate instance structure declarations for each of the 3 supported data types.    
+ *    
+ * \par Initialization Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.    
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * numTaps, pCoeffs, mu, postShift (not for f32), pState. Also set all of the values in pState to zero. 
+ *
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * Set the values in the state buffer to zeros before static initialization.    
+ * The code below statically initializes each of the 3 different data type filter instance structures    
+ * <pre>    
+ *    arm_lms_instance_f32 S = {numTaps, pState, pCoeffs, mu};    
+ *    arm_lms_instance_q31 S = {numTaps, pState, pCoeffs, mu, postShift};    
+ *    arm_lms_instance_q15 S = {numTaps, pState, pCoeffs, mu, postShift};    
+ * </pre>    
+ * where <code>numTaps</code> is the number of filter coefficients in the filter; <code>pState</code> is the address of the state buffer;    
+ * <code>pCoeffs</code> is the address of the coefficient buffer; <code>mu</code> is the step size parameter; and <code>postShift</code> is the shift applied to coefficients.    
+ *    
+ * \par Fixed-Point Behavior:    
+ * Care must be taken when using the Q15 and Q31 versions of the LMS filter.    
+ * The following issues must be considered:    
+ * - Scaling of coefficients    
+ * - Overflow and saturation    
+ *    
+ * \par Scaling of Coefficients:    
+ * Filter coefficients are represented as fractional values and    
+ * coefficients are restricted to lie in the range <code>[-1 +1)</code>.    
+ * The fixed-point functions have an additional scaling parameter <code>postShift</code>.    
+ * At the output of the filter's accumulator is a shift register which shifts the result by <code>postShift</code> bits.    
+ * This essentially scales the filter coefficients by <code>2^postShift</code> and    
+ * allows the filter coefficients to exceed the range <code>[+1 -1)</code>.    
+ * The value of <code>postShift</code> is set by the user based on the expected gain through the system being modeled.    
+ *    
+ * \par Overflow and Saturation:    
+ * Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are    
+ * described separately as part of the function specific documentation below.    
+ */
+
+/**    
+ * @addtogroup LMS    
+ * @{    
+ */
+
+/**           
+ * @details           
+ * This function operates on floating-point data types.       
+ *    
+ * @brief Processing function for floating-point LMS filter.    
+ * @param[in]  *S points to an instance of the floating-point LMS filter structure.    
+ * @param[in]  *pSrc points to the block of input data.    
+ * @param[in]  *pRef points to the block of reference data.    
+ * @param[out] *pOut points to the block of output data.    
+ * @param[out] *pErr points to the block of error data.    
+ * @param[in]  blockSize number of samples to process.    
+ * @return     none.    
+ */
+
+void arm_lms_f32(
+  const arm_lms_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pRef,
+  float32_t * pOut,
+  float32_t * pErr,
+  uint32_t blockSize)
+{
+  float32_t *pState = S->pState;                 /* State pointer */
+  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+  float32_t *pStateCurnt;                        /* Points to the current sample of the state */
+  float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */
+  float32_t mu = S->mu;                          /* Adaptive factor */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+  float32_t sum, e, d;                           /* accumulator, error, reference data sample */
+  float32_t w = 0.0f;                            /* weight factor */
+
+  e = 0.0f;
+  d = 0.0f;
+
+  /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  blkCnt = blockSize;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Set the accumulator to zero */
+    sum = 0.0f;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += (*px++) * (*pb++);
+      sum += (*px++) * (*pb++);
+      sum += (*px++) * (*pb++);
+      sum += (*px++) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += (*px++) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* The result in the accumulator, store in the destination buffer. */
+    *pOut++ = sum;
+
+    /* Compute and store error */
+    d = (float32_t) (*pRef++);
+    e = d - sum;
+    *pErr++ = e;
+
+    /* Calculation of Weighting factor for the updating filter coefficients */
+    w = e * mu;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Update filter coefficients */
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      *pb = *pb + (w * (*px++));
+      pb++;
+
+      *pb = *pb + (w * (*px++));
+      pb++;
+
+      *pb = *pb + (w * (*px++));
+      pb++;
+
+      *pb = *pb + (w * (*px++));
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      *pb = *pb + (w * (*px++));
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the    
+     satrt of the state buffer. This prepares the state buffer for the    
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* Loop unrolling for (numTaps - 1u) samples copy */
+  tapCnt = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Set the accumulator to zero */
+    sum = 0.0f;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += (*px++) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* The result is stored in the destination buffer. */
+    *pOut++ = sum;
+
+    /* Compute and store error */
+    d = (float32_t) (*pRef++);
+    e = d - sum;
+    *pErr++ = e;
+
+    /* Weighting factor for the LMS version */
+    w = e * mu;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      *pb = *pb + (w * (*px++));
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the        
+   * start of the state buffer. This prepares the state buffer for the        
+   * next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /*  Copy (numTaps - 1u) samples  */
+  tapCnt = (numTaps - 1u);
+
+  /* Copy the data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+   * @} end of LMS group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,95 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_lms_init_f32.c    
+*    
+* Description:  Floating-point LMS filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @addtogroup LMS    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for floating-point LMS filter.    
+   * @param[in] *S points to an instance of the floating-point LMS filter structure.    
+   * @param[in] numTaps  number of filter coefficients.    
+   * @param[in] *pCoeffs points to the coefficient buffer.    
+   * @param[in] *pState points to state buffer.    
+   * @param[in] mu step size that controls filter coefficient updates.    
+   * @param[in] blockSize number of samples to process.    
+   * @return none.    
+   */
+
+/**    
+ * \par Description:    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * The initial filter coefficients serve as a starting point for the adaptive filter.    
+ * <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_lms_f32()</code>.    
+ */
+
+void arm_lms_init_f32(
+  arm_lms_instance_f32 * S,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  float32_t mu,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numTaps */
+  memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+  /* Assign Step size value */
+  S->mu = mu;
+}
+
+/**    
+ * @} end of LMS group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,105 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_lms_init_q15.c    
+*    
+* Description:  Q15 LMS filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup LMS    
+ * @{    
+ */
+
+/**    
+* @brief Initialization function for the Q15 LMS filter.    
+* @param[in] *S points to an instance of the Q15 LMS filter structure.    
+* @param[in] numTaps  number of filter coefficients.    
+* @param[in] *pCoeffs points to the coefficient buffer.    
+* @param[in] *pState points to the state buffer.    
+* @param[in] mu step size that controls filter coefficient updates.    
+* @param[in] blockSize number of samples to process.    
+* @param[in] postShift bit shift applied to coefficients.    
+* @return    none.    
+*    
+* \par Description:    
+* <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+* <pre>    
+*    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+* </pre>    
+* The initial filter coefficients serve as a starting point for the adaptive filter.    
+* <code>pState</code> points to the array of state variables and size of array is    
+* <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of    
+* input samples processed by each call to <code>arm_lms_q15()</code>.    
+*/
+
+void arm_lms_init_q15(
+  arm_lms_instance_q15 * S,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  q15_t mu,
+  uint32_t blockSize,
+  uint32_t postShift)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numTaps - 1 */
+  memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+  /* Assign Step size value */
+  S->mu = mu;
+
+  /* Assign postShift value to be applied */
+  S->postShift = postShift;
+
+}
+
+/**    
+ * @} end of LMS group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,105 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_lms_init_q31.c    
+*    
+* Description:  Q31 LMS filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup LMS    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for Q31 LMS filter.    
+   * @param[in] *S points to an instance of the Q31 LMS filter structure.    
+   * @param[in] numTaps  number of filter coefficients.    
+   * @param[in] *pCoeffs points to coefficient buffer.    
+   * @param[in] *pState points to state buffer.    
+   * @param[in] mu step size that controls filter coefficient updates.    
+   * @param[in] blockSize number of samples to process.    
+   * @param[in] postShift bit shift applied to coefficients.    
+   * @return none.    
+ *    
+ * \par Description:    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * The initial filter coefficients serve as a starting point for the adaptive filter.    
+ * <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples,    
+ * where <code>blockSize</code> is the number of input samples processed by each call to    
+ * <code>arm_lms_q31()</code>.    
+ */
+
+void arm_lms_init_q31(
+  arm_lms_instance_q31 * S,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  q31_t mu,
+  uint32_t blockSize,
+  uint32_t postShift)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numTaps - 1 */
+  memset(pState, 0, ((uint32_t) numTaps + (blockSize - 1u)) * sizeof(q31_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+  /* Assign Step size value */
+  S->mu = mu;
+
+  /* Assign postShift value to be applied */
+  S->postShift = postShift;
+
+}
+
+/**    
+ * @} end of LMS group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,466 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_lms_norm_f32.c    
+*    
+* Description:	Processing function for the floating-point Normalised LMS.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @defgroup LMS_NORM Normalized LMS Filters    
+ *    
+ * This set of functions implements a commonly used adaptive filter.    
+ * It is related to the Least Mean Square (LMS) adaptive filter and includes an additional normalization    
+ * factor which increases the adaptation rate of the filter.    
+ * The CMSIS DSP Library contains normalized LMS filter functions that operate on Q15, Q31, and floating-point data types.    
+ *    
+ * A normalized least mean square (NLMS) filter consists of two components as shown below.    
+ * The first component is a standard transversal or FIR filter.    
+ * The second component is a coefficient update mechanism.    
+ * The NLMS filter has two input signals.    
+ * The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter.    
+ * That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input.    
+ * The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input.    
+ * This "error signal" tends towards zero as the filter adapts.    
+ * The NLMS processing functions accept the input and reference input signals and generate the filter output and error signal.    
+ * \image html LMS.gif "Internal structure of the NLMS adaptive filter"    
+ *    
+ * The functions operate on blocks of data and each call to the function processes    
+ * <code>blockSize</code> samples through the filter.    
+ * <code>pSrc</code> points to input signal, <code>pRef</code> points to reference signal,    
+ * <code>pOut</code> points to output signal and <code>pErr</code> points to error signal.    
+ * All arrays contain <code>blockSize</code> values.    
+ *    
+ * The functions operate on a block-by-block basis.    
+ * Internally, the filter coefficients <code>b[n]</code> are updated on a sample-by-sample basis.    
+ * The convergence of the LMS filter is slower compared to the normalized LMS algorithm.    
+ *    
+ * \par Algorithm:    
+ * The output signal <code>y[n]</code> is computed by a standard FIR filter:    
+ * <pre>    
+ *     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]    
+ * </pre>    
+ *    
+ * \par    
+ * The error signal equals the difference between the reference signal <code>d[n]</code> and the filter output:    
+ * <pre>    
+ *     e[n] = d[n] - y[n].    
+ * </pre>    
+ *    
+ * \par    
+ * After each sample of the error signal is computed the instanteous energy of the filter state variables is calculated:    
+ * <pre>    
+ *    E = x[n]^2 + x[n-1]^2 + ... + x[n-numTaps+1]^2.    
+ * </pre>    
+ * The filter coefficients <code>b[k]</code> are then updated on a sample-by-sample basis:    
+ * <pre>    
+ *     b[k] = b[k] + e[n] * (mu/E) * x[n-k],  for k=0, 1, ..., numTaps-1    
+ * </pre>    
+ * where <code>mu</code> is the step size and controls the rate of coefficient convergence.    
+ *\par    
+ * In the APIs, <code>pCoeffs</code> points to a coefficient array of size <code>numTaps</code>.    
+ * Coefficients are stored in time reversed order.    
+ * \par    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * \par    
+ * <code>pState</code> points to a state array of size <code>numTaps + blockSize - 1</code>.    
+ * Samples in the state buffer are stored in the order:    
+ * \par    
+ * <pre>    
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}    
+ * </pre>    
+ * \par    
+ * Note that the length of the state buffer exceeds the length of the coefficient array by <code>blockSize-1</code> samples.    
+ * The increased state buffer length allows circular addressing, which is traditionally used in FIR filters,    
+ * to be avoided and yields a significant speed improvement.    
+ * The state variables are updated after each block of data is processed.    
+ * \par Instance Structure    
+ * The coefficients and state variables for a filter are stored together in an instance data structure.    
+ * A separate instance structure must be defined for each filter and    
+ * coefficient and state arrays cannot be shared among instances.    
+ * There are separate instance structure declarations for each of the 3 supported data types.    
+ *    
+ * \par Initialization Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Zeros out the values in the state buffer.    
+ * To do this manually without calling the init function, assign the follow subfields of the instance structure:
+ * numTaps, pCoeffs, mu, energy, x0, pState. Also set all of the values in pState to zero. 
+ * For Q7, Q15, and Q31 the following fields must also be initialized;
+ * recipTable, postShift
+ *
+ * \par    
+ * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.    
+ * \par Fixed-Point Behavior:    
+ * Care must be taken when using the Q15 and Q31 versions of the normalised LMS filter.    
+ * The following issues must be considered:    
+ * - Scaling of coefficients    
+ * - Overflow and saturation    
+ *    
+ * \par Scaling of Coefficients:    
+ * Filter coefficients are represented as fractional values and    
+ * coefficients are restricted to lie in the range <code>[-1 +1)</code>.    
+ * The fixed-point functions have an additional scaling parameter <code>postShift</code>.    
+ * At the output of the filter's accumulator is a shift register which shifts the result by <code>postShift</code> bits.    
+ * This essentially scales the filter coefficients by <code>2^postShift</code> and    
+ * allows the filter coefficients to exceed the range <code>[+1 -1)</code>.    
+ * The value of <code>postShift</code> is set by the user based on the expected gain through the system being modeled.    
+ *    
+ * \par Overflow and Saturation:    
+ * Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are    
+ * described separately as part of the function specific documentation below.    
+ */
+
+
+/**    
+ * @addtogroup LMS_NORM    
+ * @{    
+ */
+
+
+  /**    
+   * @brief Processing function for floating-point normalized LMS filter.    
+   * @param[in] *S points to an instance of the floating-point normalized LMS filter structure.    
+   * @param[in] *pSrc points to the block of input data.    
+   * @param[in] *pRef points to the block of reference data.    
+   * @param[out] *pOut points to the block of output data.    
+   * @param[out] *pErr points to the block of error data.    
+   * @param[in] blockSize number of samples to process.    
+   * @return none.    
+   */
+
+void arm_lms_norm_f32(
+  arm_lms_norm_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pRef,
+  float32_t * pOut,
+  float32_t * pErr,
+  uint32_t blockSize)
+{
+  float32_t *pState = S->pState;                 /* State pointer */
+  float32_t *pCoeffs = S->pCoeffs;               /* Coefficient pointer */
+  float32_t *pStateCurnt;                        /* Points to the current sample of the state */
+  float32_t *px, *pb;                            /* Temporary pointers for state and coefficient buffers */
+  float32_t mu = S->mu;                          /* Adaptive factor */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+  float32_t energy;                              /* Energy of the input */
+  float32_t sum, e, d;                           /* accumulator, error, reference data sample */
+  float32_t w, x0, in;                           /* weight factor, temporary variable to hold input sample and state */
+
+  /* Initializations of error,  difference, Coefficient update */
+  e = 0.0f;
+  d = 0.0f;
+  w = 0.0f;
+
+  energy = S->energy;
+  x0 = S->x0;
+
+  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Read the sample from input buffer */
+    in = *pSrc++;
+
+    /* Update the energy calculation */
+    energy -= x0 * x0;
+    energy += in * in;
+
+    /* Set the accumulator to zero */
+    sum = 0.0f;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += (*px++) * (*pb++);
+      sum += (*px++) * (*pb++);
+      sum += (*px++) * (*pb++);
+      sum += (*px++) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += (*px++) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* The result in the accumulator, store in the destination buffer. */
+    *pOut++ = sum;
+
+    /* Compute and store error */
+    d = (float32_t) (*pRef++);
+    e = d - sum;
+    *pErr++ = e;
+
+    /* Calculation of Weighting factor for updating filter coefficients */
+    /* epsilon value 0.000000119209289f */
+    w = (e * mu) / (energy + 0.000000119209289f);
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Update filter coefficients */
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      *pb += w * (*px++);
+      pb++;
+
+      *pb += w * (*px++);
+      pb++;
+
+      *pb += w * (*px++);
+      pb++;
+
+      *pb += w * (*px++);
+      pb++;
+
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      *pb += w * (*px++);
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    x0 = *pState;
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  S->energy = energy;
+  S->x0 = x0;
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the    
+     satrt of the state buffer. This prepares the state buffer for the    
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* Loop unrolling for (numTaps - 1u)/4 samples copy */
+  tapCnt = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Read the sample from input buffer */
+    in = *pSrc++;
+
+    /* Update the energy calculation */
+    energy -= x0 * x0;
+    energy += in * in;
+
+    /* Set the accumulator to zero */
+    sum = 0.0f;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      sum += (*px++) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* The result in the accumulator is stored in the destination buffer. */
+    *pOut++ = sum;
+
+    /* Compute and store error */
+    d = (float32_t) (*pRef++);
+    e = d - sum;
+    *pErr++ = e;
+
+    /* Calculation of Weighting factor for updating filter coefficients */
+    /* epsilon value 0.000000119209289f */
+    w = (e * mu) / (energy + 0.000000119209289f);
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize pCcoeffs pointer */
+    pb = pCoeffs;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      *pb += w * (*px++);
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    x0 = *pState;
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  S->energy = energy;
+  S->x0 = x0;
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the        
+     satrt of the state buffer. This prepares the state buffer for the        
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* Copy (numTaps - 1u) samples  */
+  tapCnt = (numTaps - 1u);
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+   * @} end of LMS_NORM group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,105 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_lms_norm_init_f32.c    
+*    
+* Description:  Floating-point NLMS filter initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup LMS_NORM    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for floating-point normalized LMS filter.    
+   * @param[in] *S points to an instance of the floating-point LMS filter structure.    
+   * @param[in] numTaps  number of filter coefficients.    
+   * @param[in] *pCoeffs points to coefficient buffer.    
+   * @param[in] *pState points to state buffer.    
+   * @param[in] mu step size that controls filter coefficient updates.    
+   * @param[in] blockSize number of samples to process.    
+   * @return none.    
+   *    
+ * \par Description:    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * The initial filter coefficients serve as a starting point for the adaptive filter.    
+ * <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples,    
+ * where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_lms_norm_f32()</code>.    
+ */
+
+void arm_lms_norm_init_f32(
+  arm_lms_norm_instance_f32 * S,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  float32_t mu,
+  uint32_t blockSize)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numTaps - 1 */
+  memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(float32_t));
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+  /* Assign Step size value */
+  S->mu = mu;
+
+  /* Initialise Energy to zero */
+  S->energy = 0.0f;
+
+  /* Initialise x0 to zero */
+  S->x0 = 0.0f;
+
+}
+
+/**    
+ * @} end of LMS_NORM group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,112 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_lms_norm_init_q15.c    
+*    
+* Description:  Q15 NLMS initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @addtogroup LMS_NORM    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for Q15 normalized LMS filter.    
+   * @param[in] *S points to an instance of the Q15 normalized LMS filter structure.    
+   * @param[in] numTaps  number of filter coefficients.    
+   * @param[in] *pCoeffs points to coefficient buffer.    
+   * @param[in] *pState points to state buffer.    
+   * @param[in] mu step size that controls filter coefficient updates.    
+   * @param[in] blockSize number of samples to process.    
+   * @param[in] postShift bit shift applied to coefficients.    
+   * @return none.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * The initial filter coefficients serve as a starting point for the adaptive filter.    
+ * <code>pState</code> points to the array of state variables and size of array is    
+ * <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed    
+ * by each call to <code>arm_lms_norm_q15()</code>.    
+ */
+
+void arm_lms_norm_init_q15(
+  arm_lms_norm_instance_q15 * S,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  q15_t mu,
+  uint32_t blockSize,
+  uint8_t postShift)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numTaps - 1 */
+  memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t));
+
+  /* Assign post Shift value applied to coefficients */
+  S->postShift = postShift;
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+  /* Assign Step size value */
+  S->mu = mu;
+
+  /* Initialize reciprocal pointer table */
+  S->recipTable = (q15_t *) armRecipTableQ15;
+
+  /* Initialise Energy to zero */
+  S->energy = 0;
+
+  /* Initialise x0 to zero */
+  S->x0 = 0;
+
+}
+
+/**    
+ * @} end of LMS_NORM group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,111 @@
+/*-----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_lms_norm_init_q31.c    
+*    
+* Description:  Q31 NLMS initialization function.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @addtogroup LMS_NORM    
+ * @{    
+ */
+
+  /**    
+   * @brief Initialization function for Q31 normalized LMS filter.    
+   * @param[in] *S points to an instance of the Q31 normalized LMS filter structure.    
+   * @param[in] numTaps  number of filter coefficients.    
+   * @param[in] *pCoeffs points to coefficient buffer.    
+   * @param[in] *pState points to state buffer.    
+   * @param[in] mu step size that controls filter coefficient updates.    
+   * @param[in] blockSize number of samples to process.    
+   * @param[in] postShift bit shift applied to coefficients.    
+   * @return none.    
+ *    
+ * <b>Description:</b>    
+ * \par    
+ * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order:    
+ * <pre>    
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}    
+ * </pre>    
+ * The initial filter coefficients serve as a starting point for the adaptive filter.    
+ * <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples,    
+ * where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_lms_norm_q31()</code>.    
+ */
+
+void arm_lms_norm_init_q31(
+  arm_lms_norm_instance_q31 * S,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  q31_t mu,
+  uint32_t blockSize,
+  uint8_t postShift)
+{
+  /* Assign filter taps */
+  S->numTaps = numTaps;
+
+  /* Assign coefficient pointer */
+  S->pCoeffs = pCoeffs;
+
+  /* Clear state buffer and size is always blockSize + numTaps - 1  */
+  memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q31_t));
+
+  /* Assign post Shift value applied to coefficients */
+  S->postShift = postShift;
+
+  /* Assign state pointer */
+  S->pState = pState;
+
+  /* Assign Step size value */
+  S->mu = mu;
+
+  /* Initialize reciprocal pointer table */
+  S->recipTable = (q31_t *) armRecipTableQ31;
+
+  /* Initialise Energy to zero */
+  S->energy = 0;
+
+  /* Initialise x0 to zero */
+  S->x0 = 0;
+
+}
+
+/**    
+ * @} end of LMS_NORM group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,440 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_lms_norm_q15.c    
+*    
+* Description:	Q15 NLMS filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup LMS_NORM    
+ * @{    
+ */
+
+/**    
+* @brief Processing function for Q15 normalized LMS filter.    
+* @param[in] *S points to an instance of the Q15 normalized LMS filter structure.    
+* @param[in] *pSrc points to the block of input data.    
+* @param[in] *pRef points to the block of reference data.    
+* @param[out] *pOut points to the block of output data.    
+* @param[out] *pErr points to the block of error data.    
+* @param[in] blockSize number of samples to process.    
+* @return none.    
+*    
+* <b>Scaling and Overflow Behavior:</b>     
+* \par     
+* The function is implemented using a 64-bit internal accumulator.     
+* Both coefficients and state variables are represented in 1.15 format and    
+* multiplications yield a 2.30 result. The 2.30 intermediate results are    
+* accumulated in a 64-bit accumulator in 34.30 format.     
+* There is no risk of internal overflow with this approach and the full    
+* precision of intermediate multiplications is preserved. After all additions    
+* have been performed, the accumulator is truncated to 34.15 format by    
+* discarding low 15 bits. Lastly, the accumulator is saturated to yield a    
+* result in 1.15 format.    
+*    
+* \par   
+* 	In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted.    
+*    
+ */
+
+void arm_lms_norm_q15(
+  arm_lms_norm_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pRef,
+  q15_t * pOut,
+  q15_t * pErr,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q15_t *px, *pb;                                /* Temporary pointers for state and coefficient buffers */
+  q15_t mu = S->mu;                              /* Adaptive factor */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+  q31_t energy;                                  /* Energy of the input */
+  q63_t acc;                                     /* Accumulator */
+  q15_t e = 0, d = 0;                            /* error, reference data sample */
+  q15_t w = 0, in;                               /* weight factor and state */
+  q15_t x0;                                      /* temporary variable to hold input sample */
+  //uint32_t shift = (uint32_t) S->postShift + 1u; /* Shift to be applied to the output */ 
+  q15_t errorXmu, oneByEnergy;                   /* Temporary variables to store error and mu product and reciprocal of energy */
+  q15_t postShift;                               /* Post shift to be applied to weight after reciprocal calculation */
+  q31_t coef;                                    /* Teporary variable for coefficient */
+  q31_t acc_l, acc_h;
+  int32_t lShift = (15 - (int32_t) S->postShift);       /*  Post shift  */
+  int32_t uShift = (32 - lShift);
+
+  energy = S->energy;
+  x0 = S->x0;
+
+  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Read the sample from input buffer */
+    in = *pSrc++;
+
+    /* Update the energy calculation */
+    energy -= (((q31_t) x0 * (x0)) >> 15);
+    energy += (((q31_t) in * (in)) >> 15);
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    while(tapCnt > 0u)
+    {
+
+      /* Perform the multiply-accumulate */
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+      acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc);
+      acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc);
+
+#else
+
+      acc += (((q31_t) * px++ * (*pb++)));
+      acc += (((q31_t) * px++ * (*pb++)));
+      acc += (((q31_t) * px++ * (*pb++)));
+      acc += (((q31_t) * px++ * (*pb++)));
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += (((q31_t) * px++ * (*pb++)));
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Calc lower part of acc */
+    acc_l = acc & 0xffffffff;
+
+    /* Calc upper part of acc */
+    acc_h = (acc >> 32) & 0xffffffff;
+
+    /* Apply shift for lower part of acc and upper part of acc */
+    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+    /* Converting the result to 1.15 format and saturate the output */
+    acc = __SSAT(acc, 16u);
+
+    /* Store the result from accumulator into the destination buffer. */
+    *pOut++ = (q15_t) acc;
+
+    /* Compute and store error */
+    d = *pRef++;
+    e = d - (q15_t) acc;
+    *pErr++ = e;
+
+    /* Calculation of 1/energy */
+    postShift = arm_recip_q15((q15_t) energy + DELTA_Q15,
+                              &oneByEnergy, S->recipTable);
+
+    /* Calculation of e * mu value */
+    errorXmu = (q15_t) (((q31_t) e * mu) >> 15);
+
+    /* Calculation of (e * mu) * (1/energy) value */
+    acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift));
+
+    /* Weighting factor for the normalized version */
+    w = (q15_t) __SSAT((q31_t) acc, 16);
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Update filter coefficients */
+    while(tapCnt > 0u)
+    {
+      coef = *pb + (((q31_t) w * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+      coef = *pb + (((q31_t) w * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+      coef = *pb + (((q31_t) w * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+      coef = *pb + (((q31_t) w * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      coef = *pb + (((q31_t) w * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Read the sample from state buffer */
+    x0 = *pState;
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Save energy and x0 values for the next frame */
+  S->energy = (q15_t) energy;
+  S->x0 = x0;
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the    
+     satrt of the state buffer. This prepares the state buffer for the    
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* Calculation of count for copying integer writes */
+  tapCnt = (numTaps - 1u) >> 2;
+
+  while(tapCnt > 0u)
+  {
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+
+#else
+
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+#endif
+
+    tapCnt--;
+
+  }
+
+  /* Calculation of count for remaining q15_t data */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Read the sample from input buffer */
+    in = *pSrc++;
+
+    /* Update the energy calculation */
+    energy -= (((q31_t) x0 * (x0)) >> 15);
+    energy += (((q31_t) in * (in)) >> 15);
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += (((q31_t) * px++ * (*pb++)));
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Calc lower part of acc */
+    acc_l = acc & 0xffffffff;
+
+    /* Calc upper part of acc */
+    acc_h = (acc >> 32) & 0xffffffff;
+
+    /* Apply shift for lower part of acc and upper part of acc */
+    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+    /* Converting the result to 1.15 format and saturate the output */
+    acc = __SSAT(acc, 16u);
+
+    /* Converting the result to 1.15 format */
+    //acc = __SSAT((acc >> (16u - shift)), 16u); 
+
+    /* Store the result from accumulator into the destination buffer. */
+    *pOut++ = (q15_t) acc;
+
+    /* Compute and store error */
+    d = *pRef++;
+    e = d - (q15_t) acc;
+    *pErr++ = e;
+
+    /* Calculation of 1/energy */
+    postShift = arm_recip_q15((q15_t) energy + DELTA_Q15,
+                              &oneByEnergy, S->recipTable);
+
+    /* Calculation of e * mu value */
+    errorXmu = (q15_t) (((q31_t) e * mu) >> 15);
+
+    /* Calculation of (e * mu) * (1/energy) value */
+    acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift));
+
+    /* Weighting factor for the normalized version */
+    w = (q15_t) __SSAT((q31_t) acc, 16);
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      coef = *pb + (((q31_t) w * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Read the sample from state buffer */
+    x0 = *pState;
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Save energy and x0 values for the next frame */
+  S->energy = (q15_t) energy;
+  S->x0 = x0;
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the        
+     satrt of the state buffer. This prepares the state buffer for the        
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* copy (numTaps - 1u) data */
+  tapCnt = (numTaps - 1u);
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+
+/**    
+   * @} end of LMS_NORM group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,431 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_lms_norm_q31.c    
+*    
+* Description:	Processing function for the Q31 NLMS filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup LMS_NORM    
+ * @{    
+ */
+
+/**    
+* @brief Processing function for Q31 normalized LMS filter.    
+* @param[in] *S points to an instance of the Q31 normalized LMS filter structure.    
+* @param[in] *pSrc points to the block of input data.    
+* @param[in] *pRef points to the block of reference data.    
+* @param[out] *pOut points to the block of output data.    
+* @param[out] *pErr points to the block of error data.    
+* @param[in] blockSize number of samples to process.    
+* @return none.    
+*    
+* <b>Scaling and Overflow Behavior:</b>     
+* \par     
+* The function is implemented using an internal 64-bit accumulator.     
+* The accumulator has a 2.62 format and maintains full precision of the intermediate   
+* multiplication results but provides only a single guard bit.     
+* Thus, if the accumulator result overflows it wraps around rather than clip.     
+* In order to avoid overflows completely the input signal must be scaled down by    
+* log2(numTaps) bits. The reference signal should not be scaled down.     
+* After all multiply-accumulates are performed, the 2.62 accumulator is shifted    
+* and saturated to 1.31 format to yield the final result.     
+* The output signal and error signal are in 1.31 format.     
+*    
+* \par    
+* 	In this filter, filter coefficients are updated for each sample and the    
+* updation of filter cofficients are saturted.    
+*     
+*/
+
+void arm_lms_norm_q31(
+  arm_lms_norm_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pRef,
+  q31_t * pOut,
+  q31_t * pErr,
+  uint32_t blockSize)
+{
+  q31_t *pState = S->pState;                     /* State pointer */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q31_t *px, *pb;                                /* Temporary pointers for state and coefficient buffers */
+  q31_t mu = S->mu;                              /* Adaptive factor */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+  q63_t energy;                                  /* Energy of the input */
+  q63_t acc;                                     /* Accumulator */
+  q31_t e = 0, d = 0;                            /* error, reference data sample */
+  q31_t w = 0, in;                               /* weight factor and state */
+  q31_t x0;                                      /* temporary variable to hold input sample */
+//  uint32_t shift = 32u - ((uint32_t) S->postShift + 1u);        /* Shift to be applied to the output */      
+  q31_t errorXmu, oneByEnergy;                   /* Temporary variables to store error and mu product and reciprocal of energy */
+  q31_t postShift;                               /* Post shift to be applied to weight after reciprocal calculation */
+  q31_t coef;                                    /* Temporary variable for coef */
+  q31_t acc_l, acc_h;                            /*  temporary input */
+  uint32_t uShift = ((uint32_t) S->postShift + 1u);
+  uint32_t lShift = 32u - uShift;                /*  Shift to be applied to the output */
+
+  energy = S->energy;
+  x0 = S->x0;
+
+  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  while(blkCnt > 0u)
+  {
+
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Read the sample from input buffer */
+    in = *pSrc++;
+
+    /* Update the energy calculation */
+    energy = (q31_t) ((((q63_t) energy << 32) -
+                       (((q63_t) x0 * x0) << 1)) >> 32);
+    energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32);
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += ((q63_t) (*px++)) * (*pb++);
+      acc += ((q63_t) (*px++)) * (*pb++);
+      acc += ((q63_t) (*px++)) * (*pb++);
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Converting the result to 1.31 format */
+    /* Calc lower part of acc */
+    acc_l = acc & 0xffffffff;
+
+    /* Calc upper part of acc */
+    acc_h = (acc >> 32) & 0xffffffff;
+
+    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+    /* Store the result from accumulator into the destination buffer. */
+    *pOut++ = (q31_t) acc;
+
+    /* Compute and store error */
+    d = *pRef++;
+    e = d - (q31_t) acc;
+    *pErr++ = e;
+
+    /* Calculates the reciprocal of energy */
+    postShift = arm_recip_q31(energy + DELTA_Q31,
+                              &oneByEnergy, &S->recipTable[0]);
+
+    /* Calculation of product of (e * mu) */
+    errorXmu = (q31_t) (((q63_t) e * mu) >> 31);
+
+    /* Weighting factor for the normalized version */
+    w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift));
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Update filter coefficients */
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+
+      /* coef is in 2.30 format */
+      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));
+      /* get coef in 1.31 format by left shifting */
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      /* update coefficient buffer to next coefficient */
+      pb++;
+
+      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Read the sample from state buffer */
+    x0 = *pState;
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Save energy and x0 values for the next frame */
+  S->energy = (q31_t) energy;
+  S->x0 = x0;
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the    
+     satrt of the state buffer. This prepares the state buffer for the    
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* Loop unrolling for (numTaps - 1u) samples copy */
+  tapCnt = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(blkCnt > 0u)
+  {
+
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Read the sample from input buffer */
+    in = *pSrc++;
+
+    /* Update the energy calculation */
+    energy =
+      (q31_t) ((((q63_t) energy << 32) - (((q63_t) x0 * x0) << 1)) >> 32);
+    energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32);
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Converting the result to 1.31 format */
+    /* Converting the result to 1.31 format */
+    /* Calc lower part of acc */
+    acc_l = acc & 0xffffffff;
+
+    /* Calc upper part of acc */
+    acc_h = (acc >> 32) & 0xffffffff;
+
+    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+
+    //acc = (q31_t) (acc >> shift); 
+
+    /* Store the result from accumulator into the destination buffer. */
+    *pOut++ = (q31_t) acc;
+
+    /* Compute and store error */
+    d = *pRef++;
+    e = d - (q31_t) acc;
+    *pErr++ = e;
+
+    /* Calculates the reciprocal of energy */
+    postShift =
+      arm_recip_q31(energy + DELTA_Q31, &oneByEnergy, &S->recipTable[0]);
+
+    /* Calculation of product of (e * mu) */
+    errorXmu = (q31_t) (((q63_t) e * mu) >> 31);
+
+    /* Weighting factor for the normalized version */
+    w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift));
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize coeff pointer */
+    pb = (pCoeffs);
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      /* coef is in 2.30 format */
+      coef = (q31_t) (((q63_t) w * (*px++)) >> (32));
+      /* get coef in 1.31 format by left shifting */
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      /* update coefficient buffer to next coefficient */
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Read the sample from state buffer */
+    x0 = *pState;
+
+    /* Advance state pointer by 1 for the next sample */
+    pState = pState + 1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Save energy and x0 values for the next frame */
+  S->energy = (q31_t) energy;
+  S->x0 = x0;
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the     
+     start of the state buffer. This prepares the state buffer for the        
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* Loop for (numTaps - 1u) samples copy */
+  tapCnt = (numTaps - 1u);
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of LMS_NORM group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,380 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_lms_q15.c    
+*    
+* Description:	Processing function for the Q15 LMS filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup LMS    
+ * @{    
+ */
+
+ /**    
+ * @brief Processing function for Q15 LMS filter.    
+ * @param[in] *S points to an instance of the Q15 LMS filter structure.    
+ * @param[in] *pSrc points to the block of input data.    
+ * @param[in] *pRef points to the block of reference data.    
+ * @param[out] *pOut points to the block of output data.    
+ * @param[out] *pErr points to the block of error data.    
+ * @param[in] blockSize number of samples to process.    
+ * @return none.    
+ *    
+ * \par Scaling and Overflow Behavior:    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result.    
+ * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.    
+ * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.    
+ * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.    
+ * Lastly, the accumulator is saturated to yield a result in 1.15 format.    
+ *   
+ * \par   
+ * 	In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted.   
+ *    
+ */
+
+void arm_lms_q15(
+  const arm_lms_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pRef,
+  q15_t * pOut,
+  q15_t * pErr,
+  uint32_t blockSize)
+{
+  q15_t *pState = S->pState;                     /* State pointer */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  q15_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q15_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q15_t mu = S->mu;                              /* Adaptive factor */
+  q15_t *px;                                     /* Temporary pointer for state */
+  q15_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+  q63_t acc;                                     /* Accumulator */
+  q15_t e = 0;                                   /* error of data sample */
+  q15_t alpha;                                   /* Intermediate constant for taps update */
+  q31_t coef;                                    /* Teporary variable for coefficient */
+  q31_t acc_l, acc_h;
+  int32_t lShift = (15 - (int32_t) S->postShift);       /*  Post shift  */
+  int32_t uShift = (32 - lShift);
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+
+  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Initializing blkCnt with blockSize */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coefficient pointer */
+    pb = pCoeffs;
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2u;
+
+    while(tapCnt > 0u)
+    {
+      /* acc +=  b[N] * x[n-N] + b[N-1] * x[n-N-1] */
+      /* Perform the multiply-accumulate */
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+      acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc);
+      acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc);
+
+#else
+
+      acc += (q63_t) (((q31_t) (*px++) * (*pb++)));
+      acc += (q63_t) (((q31_t) (*px++) * (*pb++)));
+      acc += (q63_t) (((q31_t) (*px++) * (*pb++)));
+      acc += (q63_t) (((q31_t) (*px++) * (*pb++)));
+
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += (q63_t) (((q31_t) (*px++) * (*pb++)));
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Calc lower part of acc */
+    acc_l = acc & 0xffffffff;
+
+    /* Calc upper part of acc */
+    acc_h = (acc >> 32) & 0xffffffff;
+
+    /* Apply shift for lower part of acc and upper part of acc */
+    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+    /* Converting the result to 1.15 format and saturate the output */
+    acc = __SSAT(acc, 16);
+
+    /* Store the result from accumulator into the destination buffer. */
+    *pOut++ = (q15_t) acc;
+
+    /* Compute and store error */
+    e = *pRef++ - (q15_t) acc;
+
+    *pErr++ = (q15_t) e;
+
+    /* Compute alpha i.e. intermediate constant for taps update */
+    alpha = (q15_t) (((q31_t) e * (mu)) >> 15);
+
+    /* Initialize state pointer */
+    /* Advance state pointer by 1 for the next sample */
+    px = pState++;
+
+    /* Initialize coefficient pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2u;
+
+    /* Update filter coefficients */
+    while(tapCnt > 0u)
+    {
+      coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+      coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+      coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+      coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Decrement the loop counter */
+    blkCnt--;
+
+  }
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the    
+     satrt of the state buffer. This prepares the state buffer for the    
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* Calculation of count for copying integer writes */
+  tapCnt = (numTaps - 1u) >> 2;
+
+  while(tapCnt > 0u)
+  {
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+    *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++;
+#else
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+#endif
+
+    tapCnt--;
+
+  }
+
+  /* Calculation of count for remaining q15_t data */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += (q63_t) ((q31_t) (*px++) * (*pb++));
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Calc lower part of acc */
+    acc_l = acc & 0xffffffff;
+
+    /* Calc upper part of acc */
+    acc_h = (acc >> 32) & 0xffffffff;
+
+    /* Apply shift for lower part of acc and upper part of acc */
+    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+    /* Converting the result to 1.15 format and saturate the output */
+    acc = __SSAT(acc, 16);
+
+    /* Store the result from accumulator into the destination buffer. */
+    *pOut++ = (q15_t) acc;
+
+    /* Compute and store error */
+    e = *pRef++ - (q15_t) acc;
+
+    *pErr++ = (q15_t) e;
+
+    /* Compute alpha i.e. intermediate constant for taps update */
+    alpha = (q15_t) (((q31_t) e * (mu)) >> 15);
+
+    /* Initialize pState pointer */
+    /* Advance state pointer by 1 for the next sample */
+    px = pState++;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15);
+      *pb++ = (q15_t) __SSAT((coef), 16);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Decrement the loop counter */
+    blkCnt--;
+
+  }
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the        
+     start of the state buffer. This prepares the state buffer for the   
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /*  Copy (numTaps - 1u) samples  */
+  tapCnt = (numTaps - 1u);
+
+  /* Copy the data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+   * @} end of LMS group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,369 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_lms_q31.c    
+*    
+* Description:	Processing function for the Q31 LMS filter.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+/**    
+ * @ingroup groupFilters    
+ */
+
+/**    
+ * @addtogroup LMS    
+ * @{    
+ */
+
+ /**    
+ * @brief Processing function for Q31 LMS filter.    
+ * @param[in]  *S points to an instance of the Q15 LMS filter structure.    
+ * @param[in]  *pSrc points to the block of input data.    
+ * @param[in]  *pRef points to the block of reference data.    
+ * @param[out] *pOut points to the block of output data.    
+ * @param[out] *pErr points to the block of error data.    
+ * @param[in]  blockSize number of samples to process.    
+ * @return     none.    
+ *    
+ * \par Scaling and Overflow Behavior:     
+ * The function is implemented using an internal 64-bit accumulator.     
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate    
+ * multiplication results but provides only a single guard bit.     
+ * Thus, if the accumulator result overflows it wraps around rather than clips.     
+ * In order to avoid overflows completely the input signal must be scaled down by    
+ * log2(numTaps) bits.     
+ * The reference signal should not be scaled down.     
+ * After all multiply-accumulates are performed, the 2.62 accumulator is shifted    
+ * and saturated to 1.31 format to yield the final result.     
+ * The output signal and error signal are in 1.31 format.     
+ *    
+ * \par    
+ * 	In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted.    
+ */
+
+void arm_lms_q31(
+  const arm_lms_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pRef,
+  q31_t * pOut,
+  q31_t * pErr,
+  uint32_t blockSize)
+{
+  q31_t *pState = S->pState;                     /* State pointer */
+  uint32_t numTaps = S->numTaps;                 /* Number of filter coefficients in the filter */
+  q31_t *pCoeffs = S->pCoeffs;                   /* Coefficient pointer */
+  q31_t *pStateCurnt;                            /* Points to the current sample of the state */
+  q31_t mu = S->mu;                              /* Adaptive factor */
+  q31_t *px;                                     /* Temporary pointer for state */
+  q31_t *pb;                                     /* Temporary pointer for coefficient buffer */
+  uint32_t tapCnt, blkCnt;                       /* Loop counters */
+  q63_t acc;                                     /* Accumulator */
+  q31_t e = 0;                                   /* error of data sample */
+  q31_t alpha;                                   /* Intermediate constant for taps update */
+  q31_t coef;                                    /* Temporary variable for coef */
+  q31_t acc_l, acc_h;                            /*  temporary input */
+  uint32_t uShift = ((uint32_t) S->postShift + 1u);
+  uint32_t lShift = 32u - uShift;                /*  Shift to be applied to the output */
+
+  /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */
+  /* pStateCurnt points to the location where the new input data should be written */
+  pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+  /* Initializing blkCnt with blockSize */
+  blkCnt = blockSize;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Initialize state pointer */
+    px = pState;
+
+    /* Initialize coefficient pointer */
+    pb = pCoeffs;
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      /* acc +=  b[N] * x[n-N] */
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* acc +=  b[N-1] * x[n-N-1] */
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* acc +=  b[N-2] * x[n-N-2] */
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* acc +=  b[N-3] * x[n-N-3] */
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Converting the result to 1.31 format */
+    /* Calc lower part of acc */
+    acc_l = acc & 0xffffffff;
+
+    /* Calc upper part of acc */
+    acc_h = (acc >> 32) & 0xffffffff;
+
+    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+    /* Store the result from accumulator into the destination buffer. */
+    *pOut++ = (q31_t) acc;
+
+    /* Compute and store error */
+    e = *pRef++ - (q31_t) acc;
+
+    *pErr++ = (q31_t) e;
+
+    /* Compute alpha i.e. intermediate constant for taps update */
+    alpha = (q31_t) (((q63_t) e * mu) >> 31);
+
+    /* Initialize state pointer */
+    /* Advance state pointer by 1 for the next sample */
+    px = pState++;
+
+    /* Initialize coefficient pointer */
+    pb = pCoeffs;
+
+    /* Loop unrolling.  Process 4 taps at a time. */
+    tapCnt = numTaps >> 2;
+
+    /* Update filter coefficients */
+    while(tapCnt > 0u)
+    {
+      /* coef is in 2.30 format */
+      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));
+      /* get coef in 1.31 format by left shifting */
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      /* update coefficient buffer to next coefficient */
+      pb++;
+
+      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* If the filter length is not a multiple of 4, compute the remaining filter taps */
+    tapCnt = numTaps % 0x4u;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the    
+     satrt of the state buffer. This prepares the state buffer for the    
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /* Loop unrolling for (numTaps - 1u) samples copy */
+  tapCnt = (numTaps - 1u) >> 2u;
+
+  /* copy data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+  /* Calculate remaining number of copies */
+  tapCnt = (numTaps - 1u) % 0x4u;
+
+  /* Copy the remaining q31_t data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(blkCnt > 0u)
+  {
+    /* Copy the new input sample into the state buffer */
+    *pStateCurnt++ = *pSrc++;
+
+    /* Initialize pState pointer */
+    px = pState;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Set the accumulator to zero */
+    acc = 0;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      acc += ((q63_t) (*px++)) * (*pb++);
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Converting the result to 1.31 format */
+    /* Store the result from accumulator into the destination buffer. */
+    /* Calc lower part of acc */
+    acc_l = acc & 0xffffffff;
+
+    /* Calc upper part of acc */
+    acc_h = (acc >> 32) & 0xffffffff;
+
+    acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
+
+    *pOut++ = (q31_t) acc;
+
+    /* Compute and store error */
+    e = *pRef++ - (q31_t) acc;
+
+    *pErr++ = (q31_t) e;
+
+    /* Weighting factor for the LMS version */
+    alpha = (q31_t) (((q63_t) e * mu) >> 31);
+
+    /* Initialize pState pointer */
+    /* Advance state pointer by 1 for the next sample */
+    px = pState++;
+
+    /* Initialize pCoeffs pointer */
+    pb = pCoeffs;
+
+    /* Loop over numTaps number of values */
+    tapCnt = numTaps;
+
+    while(tapCnt > 0u)
+    {
+      /* Perform the multiply-accumulate */
+      coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));
+      *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
+      pb++;
+
+      /* Decrement the loop counter */
+      tapCnt--;
+    }
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Processing is complete. Now copy the last numTaps - 1 samples to the     
+     start of the state buffer. This prepares the state buffer for the   
+     next function call. */
+
+  /* Points to the start of the pState buffer */
+  pStateCurnt = S->pState;
+
+  /*  Copy (numTaps - 1u) samples  */
+  tapCnt = (numTaps - 1u);
+
+  /* Copy the data */
+  while(tapCnt > 0u)
+  {
+    *pStateCurnt++ = *pState++;
+
+    /* Decrement the loop counter */
+    tapCnt--;
+  }
+
+#endif /*   #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+   * @} end of LMS group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,208 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_mat_add_f32.c    
+*    
+* Description:	Floating-point matrix addition    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMatrix        
+ */
+
+/**        
+ * @defgroup MatrixAdd Matrix Addition        
+ *        
+ * Adds two matrices.        
+ * \image html MatrixAddition.gif "Addition of two 3 x 3 matrices"        
+ *        
+ * The functions check to make sure that        
+ * <code>pSrcA</code>, <code>pSrcB</code>, and <code>pDst</code> have the same        
+ * number of rows and columns.        
+ */
+
+/**        
+ * @addtogroup MatrixAdd        
+ * @{        
+ */
+
+
+/**        
+ * @brief Floating-point matrix addition.        
+ * @param[in]       *pSrcA points to the first input matrix structure        
+ * @param[in]       *pSrcB points to the second input matrix structure        
+ * @param[out]      *pDst points to output matrix structure        
+ * @return     		The function returns either        
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.        
+ */
+
+arm_status arm_mat_add_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+  arm_matrix_instance_f32 * pDst)
+{
+  float32_t *pIn1 = pSrcA->pData;                /* input data matrix pointer A  */
+  float32_t *pIn2 = pSrcB->pData;                /* input data matrix pointer B  */
+  float32_t *pOut = pDst->pData;                 /* output data matrix pointer   */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  float32_t inA1, inA2, inB1, inB2, out1, out2;  /* temporary variables */
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+  uint32_t numSamples;                           /* total number of elements in the matrix  */
+  uint32_t blkCnt;                               /* loop counters */
+  arm_status status;                             /* status of matrix addition */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numRows != pSrcB->numRows) ||
+     (pSrcA->numCols != pSrcB->numCols) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif
+  {
+
+    /* Total number of samples in the input matrix */
+    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Loop unrolling */
+    blkCnt = numSamples >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) + B(m,n) */
+      /* Add and then store the results in the destination buffer. */
+      /* Read values from source A */
+      inA1 = pIn1[0];
+
+      /* Read values from source B */
+      inB1 = pIn2[0];
+
+      /* Read values from source A */
+      inA2 = pIn1[1];
+
+      /* out = sourceA + sourceB */
+      out1 = inA1 + inB1;
+
+      /* Read values from source B */
+      inB2 = pIn2[1];
+
+      /* Read values from source A */
+      inA1 = pIn1[2];
+
+      /* out = sourceA + sourceB */
+      out2 = inA2 + inB2;
+
+      /* Read values from source B */
+      inB1 = pIn2[2];
+
+      /* Store result in destination */
+      pOut[0] = out1;
+      pOut[1] = out2;
+
+      /* Read values from source A */
+      inA2 = pIn1[3];
+
+      /* Read values from source B */
+      inB2 = pIn2[3];
+
+      /* out = sourceA + sourceB */
+      out1 = inA1 + inB1;
+
+      /* out = sourceA + sourceB */
+      out2 = inA2 + inB2;
+
+      /* Store result in destination */
+      pOut[2] = out1;
+
+      /* Store result in destination */
+      pOut[3] = out2;
+
+
+      /* update pointers to process next sampels */
+      pIn1 += 4u;
+      pIn2 += 4u;
+      pOut += 4u;
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = numSamples % 0x4u;
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) + B(m,n) */
+      /* Add and then store the results in the destination buffer. */
+      *pOut++ = (*pIn1++) + (*pIn2++);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**        
+ * @} end of MatrixAdd group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,163 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_add_q15.c    
+*    
+* Description:	Q15 matrix addition    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixAdd    
+ * @{    
+ */
+
+/**    
+ * @brief Q15 matrix addition.    
+ * @param[in]       *pSrcA points to the first input matrix structure    
+ * @param[in]       *pSrcB points to the second input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @return     		The function returns either    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.    
+ */
+
+arm_status arm_mat_add_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst)
+{
+  q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A  */
+  q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B */
+  q15_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  uint16_t numSamples;                           /* total number of elements in the matrix  */
+  uint32_t blkCnt;                               /* loop counters  */
+  arm_status status;                             /* status of matrix addition  */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numRows != pSrcB->numRows) ||
+     (pSrcA->numCols != pSrcB->numCols) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* Total number of samples in the input matrix */
+    numSamples = (uint16_t) (pSrcA->numRows * pSrcA->numCols);
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+    /* Loop unrolling */
+    blkCnt = (uint32_t) numSamples >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) + B(m,n) */
+      /* Add, Saturate and then store the results in the destination buffer. */
+      *__SIMD32(pOut)++ = __QADD16(*__SIMD32(pInA)++, *__SIMD32(pInB)++);
+      *__SIMD32(pOut)++ = __QADD16(*__SIMD32(pInA)++, *__SIMD32(pInB)++);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = (uint32_t) numSamples % 0x4u;
+
+    /* q15 pointers of input and output are initialized */
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) + B(m,n) */
+      /* Add, Saturate and then store the results in the destination buffer. */
+      *pOut++ = (q15_t) __QADD16(*pInA++, *pInB++);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = (uint32_t) numSamples;
+
+
+    /* q15 pointers of input and output are initialized */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) + B(m,n) */
+      /* Add, Saturate and then store the results in the destination buffer. */
+      *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ + *pInB++), 16);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixAdd group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,207 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_add_q31.c    
+*    
+* Description:	Q31 matrix addition    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**      
+ * @ingroup groupMatrix      
+ */
+
+/**      
+ * @addtogroup MatrixAdd      
+ * @{      
+ */
+
+/**      
+ * @brief Q31 matrix addition.      
+ * @param[in]       *pSrcA points to the first input matrix structure      
+ * @param[in]       *pSrcB points to the second input matrix structure      
+ * @param[out]      *pDst points to output matrix structure      
+ * @return     		The function returns either      
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.      
+ *      
+ * <b>Scaling and Overflow Behavior:</b>      
+ * \par      
+ * The function uses saturating arithmetic.      
+ * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.      
+ */
+
+arm_status arm_mat_add_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst)
+{
+  q31_t *pIn1 = pSrcA->pData;                    /* input data matrix pointer A */
+  q31_t *pIn2 = pSrcB->pData;                    /* input data matrix pointer B */
+  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  q31_t inA1, inB1;                              /* temporary variables */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  q31_t inA2, inB2;                              /* temporary variables */
+  q31_t out1, out2;                              /* temporary variables */
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+  uint32_t numSamples;                           /* total number of elements in the matrix  */
+  uint32_t blkCnt;                               /* loop counters */
+  arm_status status;                             /* status of matrix addition */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numRows != pSrcB->numRows) ||
+     (pSrcA->numCols != pSrcB->numCols) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif
+  {
+    /* Total number of samples in the input matrix */
+    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+    /* Loop Unrolling */
+    blkCnt = numSamples >> 2u;
+
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) + B(m,n) */
+      /* Add, saturate and then store the results in the destination buffer. */
+      /* Read values from source A */
+      inA1 = pIn1[0];
+
+      /* Read values from source B */
+      inB1 = pIn2[0];
+
+      /* Read values from source A */
+      inA2 = pIn1[1];
+
+      /* Add and saturate */
+      out1 = __QADD(inA1, inB1);
+
+      /* Read values from source B */
+      inB2 = pIn2[1];
+
+      /* Read values from source A */
+      inA1 = pIn1[2];
+
+      /* Add and saturate */
+      out2 = __QADD(inA2, inB2);
+
+      /* Read values from source B */
+      inB1 = pIn2[2];
+
+      /* Store result in destination */
+      pOut[0] = out1;
+      pOut[1] = out2;
+
+      /* Read values from source A */
+      inA2 = pIn1[3];
+
+      /* Read values from source B */
+      inB2 = pIn2[3];
+
+      /* Add and saturate */
+      out1 = __QADD(inA1, inB1);
+      out2 = __QADD(inA2, inB2);
+
+      /* Store result in destination */
+      pOut[2] = out1;
+      pOut[3] = out2;
+
+      /* update pointers to process next sampels */
+      pIn1 += 4u;
+      pIn2 += 4u;
+      pOut += 4u;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.      
+     ** No loop unrolling is used. */
+    blkCnt = numSamples % 0x4u;
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = numSamples;
+
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) + B(m,n) */
+      /* Add, saturate and then store the results in the destination buffer. */
+      inA1 = *pIn1++;
+      inB1 = *pIn2++;
+
+      inA1 = __QADD(inA1, inB1);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+
+      *pOut++ = inA1;
+
+    }
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**      
+ * @} end of MatrixAdd group      
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,283 @@
+/* ----------------------------------------------------------------------      
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved. 
+*      
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*      
+* Project:      CMSIS DSP Library 
+* Title:	    arm_mat_cmplx_mult_f32.c      
+*      
+* Description:  Floating-point matrix multiplication.      
+*      
+* Target Processor:          Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**      
+ * @ingroup groupMatrix      
+ */
+
+/**      
+ * @defgroup CmplxMatrixMult  Complex Matrix Multiplication     
+ *     
+ * Complex Matrix multiplication is only defined if the number of columns of the      
+ * first matrix equals the number of rows of the second matrix.      
+ * Multiplying an <code>M x N</code> matrix with an <code>N x P</code> matrix results      
+ * in an <code>M x P</code> matrix.      
+ * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of      
+ * <code>pSrcA</code> and <code>pSrcB</code> are equal; and (2) that the size of the output      
+ * matrix equals the outer dimensions of <code>pSrcA</code> and <code>pSrcB</code>.      
+ */
+
+
+/**      
+ * @addtogroup CmplxMatrixMult      
+ * @{      
+ */
+
+/**      
+ * @brief Floating-point Complex matrix multiplication.      
+ * @param[in]       *pSrcA points to the first input complex matrix structure      
+ * @param[in]       *pSrcB points to the second input complex matrix structure      
+ * @param[out]      *pDst points to output complex matrix structure      
+ * @return     		The function returns either      
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.      
+ */
+
+arm_status arm_mat_cmplx_mult_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+  arm_matrix_instance_f32 * pDst)
+{
+  float32_t *pIn1 = pSrcA->pData;                /* input data matrix pointer A */
+  float32_t *pIn2 = pSrcB->pData;                /* input data matrix pointer B */
+  float32_t *pInA = pSrcA->pData;                /* input data matrix pointer A  */
+  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */
+  float32_t *px;                                 /* Temporary output data matrix pointer */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+  float32_t sumReal1, sumImag1;                  /* accumulator */
+  float32_t a0, b0, c0, d0;
+  float32_t a1, b1, c1, d1;
+  float32_t sumReal2, sumImag2;                  /* accumulator */
+
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  uint16_t col, i = 0u, j, row = numRowsA, colCnt;      /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* Output pointer is set to starting address of the row being processed */
+      px = pOut + 2 * i;
+
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set      
+       ** to the starting address of the pSrcB data */
+      pIn2 = pSrcB->pData;
+
+      j = 0u;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sumReal1 = 0.0f;
+        sumImag1 = 0.0f;
+
+        sumReal2 = 0.0f;
+        sumImag2 = 0.0f;
+
+        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+        pIn1 = pInA;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        colCnt = numColsA >> 2;
+
+        /* matrix multiplication        */
+        while(colCnt > 0u)
+        {
+
+          /* Reading real part of complex matrix A */
+          a0 = *pIn1;
+
+          /* Reading real part of complex matrix B */
+          c0 = *pIn2;
+
+          /* Reading imaginary part of complex matrix A */
+          b0 = *(pIn1 + 1u);
+
+          /* Reading imaginary part of complex matrix B */
+          d0 = *(pIn2 + 1u);
+
+          sumReal1 += a0 * c0;
+          sumImag1 += b0 * c0;
+
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          sumReal2 -= b0 * d0;
+          sumImag2 += a0 * d0;
+
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+          a1 = *pIn1;
+          c1 = *pIn2;
+
+          b1 = *(pIn1 + 1u);
+          d1 = *(pIn2 + 1u);
+
+          sumReal1 += a1 * c1;
+          sumImag1 += b1 * c1;
+
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          sumReal2 -= b1 * d1;
+          sumImag2 += a1 * d1;
+
+          a0 = *pIn1;
+          c0 = *pIn2;
+
+          b0 = *(pIn1 + 1u);
+          d0 = *(pIn2 + 1u);
+
+          sumReal1 += a0 * c0;
+          sumImag1 += b0 * c0;
+
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          sumReal2 -= b0 * d0;
+          sumImag2 += a0 * d0;
+
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+          a1 = *pIn1;
+          c1 = *pIn2;
+
+          b1 = *(pIn1 + 1u);
+          d1 = *(pIn2 + 1u);
+
+          sumReal1 += a1 * c1;
+          sumImag1 += b1 * c1;
+
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          sumReal2 -= b1 * d1;
+          sumImag2 += a1 * d1;
+
+          /* Decrement the loop count */
+          colCnt--;
+        }
+
+        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.      
+         ** No loop unrolling is used. */
+        colCnt = numColsA % 0x4u;
+
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          a1 = *pIn1;
+          c1 = *pIn2;
+
+          b1 = *(pIn1 + 1u);
+          d1 = *(pIn2 + 1u);
+
+          sumReal1 += a1 * c1;
+          sumImag1 += b1 * c1;
+
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          sumReal2 -= b1 * d1;
+          sumImag2 += a1 * d1;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        sumReal1 += sumReal2;
+        sumImag1 += sumImag2;
+
+        /* Store the result in the destination buffer */
+        *px++ = sumReal1;
+        *px++ = sumImag1;
+
+        /* Update the pointer pIn2 to point to the  starting address of the next column */
+        j++;
+        pIn2 = pSrcB->pData + 2u * j;
+
+        /* Decrement the column loop counter */
+        col--;
+
+      } while(col > 0u);
+
+      /* Update the pointer pInA to point to the  starting address of the next row */
+      i = i + numColsB;
+      pInA = pInA + 2 * numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**      
+ * @} end of MatrixMult group      
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,424 @@
+/* ----------------------------------------------------------------------      
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved. 
+*      
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*      
+* Project:      CMSIS DSP Library 
+* Title:	    arm_cmplx_mat_mult_q15.c      
+*      
+* Description:	 Q15 complex matrix multiplication.      
+*      
+* Target Processor:          Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**      
+ * @ingroup groupMatrix      
+ */
+
+/**      
+ * @addtogroup CmplxMatrixMult      
+ * @{      
+ */
+
+
+/**      
+ * @brief Q15 Complex matrix multiplication      
+ * @param[in]       *pSrcA points to the first input complex matrix structure      
+ * @param[in]       *pSrcB points to the second input complex matrix structure      
+ * @param[out]      *pDst points to output complex matrix structure      
+ * @param[in]		*pScratch points to the array for storing intermediate results     
+ * @return     		The function returns either      
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.         
+ *  
+ * \par Conditions for optimum performance  
+ *  Input, output and state buffers should be aligned by 32-bit  
+ *  
+ * \par Restrictions  
+ *  If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE  
+ *	In this case input, output, scratch buffers should be aligned by 32-bit  
+ *  
+ * @details      
+ * <b>Scaling and Overflow Behavior:</b>      
+ *      
+ * \par      
+ * The function is implemented using a 64-bit internal accumulator. The inputs to the      
+ * multiplications are in 1.15 format and multiplications yield a 2.30 result.      
+ * The 2.30 intermediate      
+ * results are accumulated in a 64-bit accumulator in 34.30 format. This approach      
+ * provides 33 guard bits and there is no risk of overflow. The 34.30 result is then      
+ * truncated to 34.15 format by discarding the low 15 bits and then saturated to      
+ * 1.15 format.      
+ *      
+ * \par      
+ * Refer to <code>arm_mat_mult_fast_q15()</code> for a faster but less precise version of this function.      
+ *      
+ */
+
+
+
+
+arm_status arm_mat_cmplx_mult_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst,
+  q15_t * pScratch)
+{
+  /* accumulator */
+  q15_t *pSrcBT = pScratch;                      /* input data matrix pointer for transpose */
+  q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A of Q15 type */
+  q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B of Q15 type */
+  q15_t *px;                                     /* Temporary output data matrix pointer */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A    */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+  uint16_t numRowsB = pSrcB->numRows;            /* number of rows of input matrix A    */
+  uint16_t col, i = 0u, row = numRowsB, colCnt;  /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+  q63_t sumReal, sumImag;
+
+#ifdef UNALIGNED_SUPPORT_DISABLE
+  q15_t in;                                      /* Temporary variable to hold the input value */
+  q15_t a, b, c, d;
+#else
+  q31_t in;                                      /* Temporary variable to hold the input value */
+  q31_t prod1, prod2;
+  q31_t pSourceA, pSourceB;
+#endif
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif
+  {
+    /* Matrix transpose */
+    do
+    {
+      /* Apply loop unrolling and exchange the columns with row elements */
+      col = numColsB >> 2;
+
+      /* The pointer px is set to starting address of the column being processed */
+      px = pSrcBT + i;
+
+      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.      
+       ** a second loop below computes the remaining 1 to 3 samples. */
+      while(col > 0u)
+      {
+#ifdef UNALIGNED_SUPPORT_DISABLE
+        /* Read two elements from the row */
+        in = *pInB++;
+        *px = in;
+        in = *pInB++;
+        px[1] = in;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+        /* Read two elements from the row */
+        in = *pInB++;
+        *px = in;
+        in = *pInB++;
+        px[1] = in;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+        /* Read two elements from the row */
+        in = *pInB++;
+        *px = in;
+        in = *pInB++;
+        px[1] = in;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+        /* Read two elements from the row */
+        in = *pInB++;
+        *px = in;
+        in = *pInB++;
+        px[1] = in;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+      /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.      
+       ** No loop unrolling is used. */
+      col = numColsB % 0x4u;
+
+      while(col > 0u)
+      {
+        /* Read two elements from the row */
+        in = *pInB++;
+        *px = in;
+        in = *pInB++;
+        px[1] = in;
+#else
+
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        *__SIMD32(px) = in;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        *__SIMD32(px) = in;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        *__SIMD32(px) = in;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        *__SIMD32(px) = in;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+      /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.      
+       ** No loop unrolling is used. */
+      col = numColsB % 0x4u;
+
+      while(col > 0u)
+      {
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        *__SIMD32(px) = in;
+#endif
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB * 2;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+      i = i + 2u;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* Reset the variables for the usage in the following multiplication process */
+    row = numRowsA;
+    i = 0u;
+    px = pDst->pData;
+
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set      
+       ** to the starting address of the transposed pSrcB data */
+      pInB = pSrcBT;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sumReal = 0;
+        sumImag = 0;
+
+        /* Apply loop unrolling and compute 2 MACs simultaneously. */
+        colCnt = numColsA >> 1;
+
+        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+        pInA = pSrcA->pData + i * 2;
+
+
+        /* matrix multiplication */
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+#ifdef UNALIGNED_SUPPORT_DISABLE
+
+          /* read real and imag values from pSrcA buffer */
+          a = *pInA;
+          b = *(pInA + 1u);
+          /* read real and imag values from pSrcB buffer */
+          c = *pInB;
+          d = *(pInB + 1u);
+
+          /* Multiply and Accumlates */
+          sumReal += (q31_t) a *c;
+          sumImag += (q31_t) a *d;
+          sumReal -= (q31_t) b *d;
+          sumImag += (q31_t) b *c;
+
+          /* read next real and imag values from pSrcA buffer */
+          a = *(pInA + 2u);
+          b = *(pInA + 3u);
+          /* read next real and imag values from pSrcB buffer */
+          c = *(pInB + 2u);
+          d = *(pInB + 3u);
+
+          /* update pointer */
+          pInA += 4u;
+
+          /* Multiply and Accumlates */
+          sumReal += (q31_t) a *c;
+          sumImag += (q31_t) a *d;
+          sumReal -= (q31_t) b *d;
+          sumImag += (q31_t) b *c;
+          /* update pointer */
+          pInB += 4u;
+#else
+          /* read real and imag values from pSrcA and pSrcB buffer */
+          pSourceA = *__SIMD32(pInA)++;
+          pSourceB = *__SIMD32(pInB)++;
+
+          /* Multiply and Accumlates */
+#ifdef ARM_MATH_BIG_ENDIAN
+          prod1 = -__SMUSD(pSourceA, pSourceB);
+#else
+          prod1 = __SMUSD(pSourceA, pSourceB);
+#endif
+          prod2 = __SMUADX(pSourceA, pSourceB);
+          sumReal += (q63_t) prod1;
+          sumImag += (q63_t) prod2;
+
+          /* read real and imag values from pSrcA and pSrcB buffer */
+          pSourceA = *__SIMD32(pInA)++;
+          pSourceB = *__SIMD32(pInB)++;
+
+          /* Multiply and Accumlates */
+#ifdef ARM_MATH_BIG_ENDIAN
+          prod1 = -__SMUSD(pSourceA, pSourceB);
+#else
+          prod1 = __SMUSD(pSourceA, pSourceB);
+#endif
+          prod2 = __SMUADX(pSourceA, pSourceB);
+          sumReal += (q63_t) prod1;
+          sumImag += (q63_t) prod2;
+
+#endif /*      #ifdef UNALIGNED_SUPPORT_DISABLE */
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* process odd column samples */
+        if((numColsA & 0x1u) > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+#ifdef UNALIGNED_SUPPORT_DISABLE
+
+          /* read real and imag values from pSrcA and pSrcB buffer */
+          a = *pInA++;
+          b = *pInA++;
+          c = *pInB++;
+          d = *pInB++;
+
+          /* Multiply and Accumlates */
+          sumReal += (q31_t) a *c;
+          sumImag += (q31_t) a *d;
+          sumReal -= (q31_t) b *d;
+          sumImag += (q31_t) b *c;
+
+#else
+          /* read real and imag values from pSrcA and pSrcB buffer */
+          pSourceA = *__SIMD32(pInA)++;
+          pSourceB = *__SIMD32(pInB)++;
+
+          /* Multiply and Accumlates */
+#ifdef ARM_MATH_BIG_ENDIAN
+          prod1 = -__SMUSD(pSourceA, pSourceB);
+#else
+          prod1 = __SMUSD(pSourceA, pSourceB);
+#endif
+          prod2 = __SMUADX(pSourceA, pSourceB);
+          sumReal += (q63_t) prod1;
+          sumImag += (q63_t) prod2;
+
+#endif /*      #ifdef UNALIGNED_SUPPORT_DISABLE */
+
+        }
+
+        /* Saturate and store the result in the destination buffer */
+
+        *px++ = (q15_t) (__SSAT(sumReal >> 15, 16));
+        *px++ = (q15_t) (__SSAT(sumImag >> 15, 16));
+
+        /* Decrement the column loop counter */
+        col--;
+
+      } while(col > 0u);
+
+      i = i + numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**      
+ * @} end of MatrixMult group      
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,293 @@
+/* ----------------------------------------------------------------------      
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved. 
+*      
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*      
+* Project:      CMSIS DSP Library 
+* Title:	    arm_mat_cmplx_mult_q31.c      
+*      
+* Description:  Floating-point matrix multiplication.      
+*      
+* Target Processor:          Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**     
+ * @ingroup groupMatrix     
+ */
+
+/**      
+ * @addtogroup CmplxMatrixMult      
+ * @{      
+ */
+
+/**      
+ * @brief Q31 Complex matrix multiplication      
+ * @param[in]       *pSrcA points to the first input complex matrix structure      
+ * @param[in]       *pSrcB points to the second input complex matrix structure      
+ * @param[out]      *pDst points to output complex matrix structure      
+ * @return     		The function returns either      
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.      
+ *      
+ * @details      
+ * <b>Scaling and Overflow Behavior:</b>      
+ *      
+ * \par      
+ * The function is implemented using an internal 64-bit accumulator.      
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate      
+ * multiplication results but provides only a single guard bit. There is no saturation      
+ * on intermediate additions. Thus, if the accumulator overflows it wraps around and      
+ * distorts the result. The input signals should be scaled down to avoid intermediate      
+ * overflows. The input is thus scaled down by log2(numColsA) bits      
+ * to avoid overflows, as a total of numColsA additions are performed internally.      
+ * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.      
+ *      
+ *      
+ */
+
+arm_status arm_mat_cmplx_mult_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst)
+{
+  q31_t *pIn1 = pSrcA->pData;                    /* input data matrix pointer A */
+  q31_t *pIn2 = pSrcB->pData;                    /* input data matrix pointer B */
+  q31_t *pInA = pSrcA->pData;                    /* input data matrix pointer A  */
+  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  q31_t *px;                                     /* Temporary output data matrix pointer */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+  q63_t sumReal1, sumImag1;                      /* accumulator */
+  q31_t a0, b0, c0, d0;
+  q31_t a1, b1, c1, d1;
+
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  uint16_t col, i = 0u, j, row = numRowsA, colCnt;      /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* Output pointer is set to starting address of the row being processed */
+      px = pOut + 2 * i;
+
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set     
+       ** to the starting address of the pSrcB data */
+      pIn2 = pSrcB->pData;
+
+      j = 0u;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sumReal1 = 0.0;
+        sumImag1 = 0.0;
+
+        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+        pIn1 = pInA;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        colCnt = numColsA >> 2;
+
+        /* matrix multiplication        */
+        while(colCnt > 0u)
+        {
+
+          /* Reading real part of complex matrix A */
+          a0 = *pIn1;
+
+          /* Reading real part of complex matrix B */
+          c0 = *pIn2;
+
+          /* Reading imaginary part of complex matrix A */
+          b0 = *(pIn1 + 1u);
+
+          /* Reading imaginary part of complex matrix B */
+          d0 = *(pIn2 + 1u);
+
+          /* Multiply and Accumlates */
+          sumReal1 += (q63_t) a0 *c0;
+          sumImag1 += (q63_t) b0 *c0;
+
+          /* update pointers */
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          /* Multiply and Accumlates */
+          sumReal1 -= (q63_t) b0 *d0;
+          sumImag1 += (q63_t) a0 *d0;
+
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+          /* read real and imag values from pSrcA and pSrcB buffer */
+          a1 = *pIn1;
+          c1 = *pIn2;
+          b1 = *(pIn1 + 1u);
+          d1 = *(pIn2 + 1u);
+
+          /* Multiply and Accumlates */
+          sumReal1 += (q63_t) a1 *c1;
+          sumImag1 += (q63_t) b1 *c1;
+
+          /* update pointers */
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          /* Multiply and Accumlates */
+          sumReal1 -= (q63_t) b1 *d1;
+          sumImag1 += (q63_t) a1 *d1;
+
+          a0 = *pIn1;
+          c0 = *pIn2;
+
+          b0 = *(pIn1 + 1u);
+          d0 = *(pIn2 + 1u);
+
+          /* Multiply and Accumlates */
+          sumReal1 += (q63_t) a0 *c0;
+          sumImag1 += (q63_t) b0 *c0;
+
+          /* update pointers */
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          /* Multiply and Accumlates */
+          sumReal1 -= (q63_t) b0 *d0;
+          sumImag1 += (q63_t) a0 *d0;
+
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+          a1 = *pIn1;
+          c1 = *pIn2;
+
+          b1 = *(pIn1 + 1u);
+          d1 = *(pIn2 + 1u);
+
+          /* Multiply and Accumlates */
+          sumReal1 += (q63_t) a1 *c1;
+          sumImag1 += (q63_t) b1 *c1;
+
+          /* update pointers */
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          /* Multiply and Accumlates */
+          sumReal1 -= (q63_t) b1 *d1;
+          sumImag1 += (q63_t) a1 *d1;
+
+          /* Decrement the loop count */
+          colCnt--;
+        }
+
+        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.     
+         ** No loop unrolling is used. */
+        colCnt = numColsA % 0x4u;
+
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          a1 = *pIn1;
+          c1 = *pIn2;
+
+          b1 = *(pIn1 + 1u);
+          d1 = *(pIn2 + 1u);
+
+          /* Multiply and Accumlates */
+          sumReal1 += (q63_t) a1 *c1;
+          sumImag1 += (q63_t) b1 *c1;
+
+          /* update pointers */
+          pIn1 += 2u;
+          pIn2 += 2 * numColsB;
+
+          /* Multiply and Accumlates */
+          sumReal1 -= (q63_t) b1 *d1;
+          sumImag1 += (q63_t) a1 *d1;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* Store the result in the destination buffer */
+        *px++ = (q31_t) clip_q63_to_q31(sumReal1 >> 31);
+        *px++ = (q31_t) clip_q63_to_q31(sumImag1 >> 31);
+        
+        /* Update the pointer pIn2 to point to the  starting address of the next column */
+        j++;
+        pIn2 = pSrcB->pData + 2u * j;
+
+        /* Decrement the column loop counter */
+        col--;
+
+      } while(col > 0u);
+
+      /* Update the pointer pInA to point to the  starting address of the next row */
+      i = i + numColsB;
+      pInA = pInA + 2 * numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**     
+ * @} end of MatrixMult group     
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,88 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_mat_init_f32.c    
+*    
+* Description:	Floating-point matrix initialization.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @defgroup MatrixInit Matrix Initialization    
+ *    
+ * Initializes the underlying matrix data structure.    
+ * The functions set the <code>numRows</code>,    
+ * <code>numCols</code>, and <code>pData</code> fields    
+ * of the matrix data structure.    
+ */
+
+/**    
+ * @addtogroup MatrixInit    
+ * @{    
+ */
+
+/**    
+   * @brief  Floating-point matrix initialization.    
+   * @param[in,out] *S             points to an instance of the floating-point matrix structure.    
+   * @param[in]     nRows          number of rows in the matrix.    
+   * @param[in]     nColumns       number of columns in the matrix.    
+   * @param[in]     *pData	   points to the matrix data array.    
+   * @return        none    
+   */
+
+void arm_mat_init_f32(
+  arm_matrix_instance_f32 * S,
+  uint16_t nRows,
+  uint16_t nColumns,
+  float32_t * pData)
+{
+  /* Assign Number of Rows */
+  S->numRows = nRows;
+
+  /* Assign Number of Columns */
+  S->numCols = nColumns;
+
+  /* Assign Data pointer */
+  S->pData = pData;
+}
+
+/**    
+ * @} end of MatrixInit group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,80 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_mat_init_q15.c    
+*    
+* Description:	Q15 matrix initialization.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixInit    
+ * @{    
+ */
+
+  /**    
+   * @brief  Q15 matrix initialization.    
+   * @param[in,out] *S             points to an instance of the floating-point matrix structure.    
+   * @param[in]     nRows          number of rows in the matrix.    
+   * @param[in]     nColumns       number of columns in the matrix.    
+   * @param[in]     *pData	   points to the matrix data array.    
+   * @return        none    
+   */
+
+void arm_mat_init_q15(
+  arm_matrix_instance_q15 * S,
+  uint16_t nRows,
+  uint16_t nColumns,
+  q15_t * pData)
+{
+  /* Assign Number of Rows */
+  S->numRows = nRows;
+
+  /* Assign Number of Columns */
+  S->numCols = nColumns;
+
+  /* Assign Data pointer */
+  S->pData = pData;
+}
+
+/**    
+ * @} end of MatrixInit group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,84 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_mat_init_q31.c    
+*    
+* Description:	Q31 matrix initialization.    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @defgroup MatrixInit Matrix Initialization    
+ *    
+ */
+
+/**    
+ * @addtogroup MatrixInit    
+ * @{    
+ */
+
+  /**    
+   * @brief  Q31 matrix initialization.    
+   * @param[in,out] *S             points to an instance of the floating-point matrix structure.    
+   * @param[in]     nRows          number of rows in the matrix.    
+   * @param[in]     nColumns       number of columns in the matrix.    
+   * @param[in]     *pData	   points to the matrix data array.    
+   * @return        none    
+   */
+
+void arm_mat_init_q31(
+  arm_matrix_instance_q31 * S,
+  uint16_t nRows,
+  uint16_t nColumns,
+  q31_t * pData)
+{
+  /* Assign Number of Rows */
+  S->numRows = nRows;
+
+  /* Assign Number of Columns */
+  S->numCols = nColumns;
+
+  /* Assign Data pointer */
+  S->pData = pData;
+}
+
+/**    
+ * @} end of MatrixInit group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,703 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_inverse_f32.c    
+*    
+* Description:	Floating-point matrix inverse.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @defgroup MatrixInv Matrix Inverse    
+ *    
+ * Computes the inverse of a matrix.    
+ *    
+ * The inverse is defined only if the input matrix is square and non-singular (the determinant    
+ * is non-zero). The function checks that the input and output matrices are square and of the    
+ * same size.    
+ *    
+ * Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix    
+ * inversion of floating-point matrices.    
+ *    
+ * \par Algorithm    
+ * The Gauss-Jordan method is used to find the inverse.    
+ * The algorithm performs a sequence of elementary row-operations until it    
+ * reduces the input matrix to an identity matrix. Applying the same sequence    
+ * of elementary row-operations to an identity matrix yields the inverse matrix.    
+ * If the input matrix is singular, then the algorithm terminates and returns error status    
+ * <code>ARM_MATH_SINGULAR</code>.    
+ * \image html MatrixInverse.gif "Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method"    
+ */
+
+/**    
+ * @addtogroup MatrixInv    
+ * @{    
+ */
+
+/**    
+ * @brief Floating-point matrix inverse.    
+ * @param[in]       *pSrc points to input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @return     		The function returns    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> if the input matrix is not square or if the size    
+ * of the output matrix does not match the size of the input matrix.    
+ * If the input matrix is found to be singular (non-invertible), then the function returns    
+ * <code>ARM_MATH_SINGULAR</code>.  Otherwise, the function returns <code>ARM_MATH_SUCCESS</code>.    
+ */
+
+arm_status arm_mat_inverse_f32(
+  const arm_matrix_instance_f32 * pSrc,
+  arm_matrix_instance_f32 * pDst)
+{
+  float32_t *pIn = pSrc->pData;                  /* input data matrix pointer */
+  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */
+  float32_t *pInT1, *pInT2;                      /* Temporary input data matrix pointer */
+  float32_t *pOutT1, *pOutT2;                    /* Temporary output data matrix pointer */
+  float32_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst;  /* Temporary input and output data matrix pointer */
+  uint32_t numRows = pSrc->numRows;              /* Number of rows in the matrix  */
+  uint32_t numCols = pSrc->numCols;              /* Number of Cols in the matrix  */
+
+#ifndef ARM_MATH_CM0_FAMILY
+  float32_t maxC;                                /* maximum value in the column */
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t Xchg, in = 0.0f, in1;                /* Temporary input values  */
+  uint32_t i, rowCnt, flag = 0u, j, loopCnt, k, l;      /* loop counters */
+  arm_status status;                             /* status of matrix inverse */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols)
+     || (pSrc->numRows != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+
+    /*--------------------------------------------------------------------------------------------------------------    
+	 * Matrix Inverse can be solved using elementary row operations.    
+	 *    
+	 *	Gauss-Jordan Method:    
+	 *    
+	 *	   1. First combine the identity matrix and the input matrix separated by a bar to form an    
+	 *        augmented matrix as follows:    
+	 *				        _ 	      	       _         _	       _    
+	 *					   |  a11  a12 | 1   0  |       |  X11 X12  |    
+	 *					   |           |        |   =   |           |    
+	 *					   |_ a21  a22 | 0   1 _|       |_ X21 X21 _|    
+	 *    
+	 *		2. In our implementation, pDst Matrix is used as identity matrix.    
+	 *    
+	 *		3. Begin with the first row. Let i = 1.    
+	 *    
+	 *	    4. Check to see if the pivot for column i is the greatest of the column.    
+	 *		   The pivot is the element of the main diagonal that is on the current row.    
+	 *		   For instance, if working with row i, then the pivot element is aii.    
+	 *		   If the pivot is not the most significant of the columns, exchange that row with a row
+	 *		   below it that does contain the most significant value in column i. If the most
+	 *         significant value of the column is zero, then an inverse to that matrix does not exist.
+	 *		   The most significant value of the column is the absolute maximum.
+	 *    
+	 *	    5. Divide every element of row i by the pivot.    
+	 *    
+	 *	    6. For every row below and  row i, replace that row with the sum of that row and    
+	 *		   a multiple of row i so that each new element in column i below row i is zero.    
+	 *    
+	 *	    7. Move to the next row and column and repeat steps 2 through 5 until you have zeros    
+	 *		   for every element below and above the main diagonal.    
+	 *    
+	 *		8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc).    
+	 *		   Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst).    
+	 *----------------------------------------------------------------------------------------------------------------*/
+
+    /* Working pointer for destination matrix */
+    pOutT1 = pOut;
+
+    /* Loop over the number of rows */
+    rowCnt = numRows;
+
+    /* Making the destination matrix as identity matrix */
+    while(rowCnt > 0u)
+    {
+      /* Writing all zeroes in lower triangle of the destination matrix */
+      j = numRows - rowCnt;
+      while(j > 0u)
+      {
+        *pOutT1++ = 0.0f;
+        j--;
+      }
+
+      /* Writing all ones in the diagonal of the destination matrix */
+      *pOutT1++ = 1.0f;
+
+      /* Writing all zeroes in upper triangle of the destination matrix */
+      j = rowCnt - 1u;
+      while(j > 0u)
+      {
+        *pOutT1++ = 0.0f;
+        j--;
+      }
+
+      /* Decrement the loop counter */
+      rowCnt--;
+    }
+
+    /* Loop over the number of columns of the input matrix.    
+       All the elements in each column are processed by the row operations */
+    loopCnt = numCols;
+
+    /* Index modifier to navigate through the columns */
+    l = 0u;
+
+    while(loopCnt > 0u)
+    {
+      /* Check if the pivot element is zero..    
+       * If it is zero then interchange the row with non zero row below.    
+       * If there is no non zero element to replace in the rows below,    
+       * then the matrix is Singular. */
+
+      /* Working pointer for the input matrix that points    
+       * to the pivot element of the particular row  */
+      pInT1 = pIn + (l * numCols);
+
+      /* Working pointer for the destination matrix that points    
+       * to the pivot element of the particular row  */
+      pOutT1 = pOut + (l * numCols);
+
+      /* Temporary variable to hold the pivot value */
+      in = *pInT1;
+
+      /* Grab the most significant value from column l */
+      maxC = 0;
+      for (i = l; i < numRows; i++)
+      {
+        maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC);
+        pInT1 += numCols;
+      }
+
+      /* Update the status if the matrix is singular */
+      if(maxC == 0.0f)
+      {
+        return ARM_MATH_SINGULAR;
+      }
+
+      /* Restore pInT1  */
+      pInT1 = pIn;
+
+      /* Destination pointer modifier */
+      k = 1u;
+      
+      /* Check if the pivot element is the most significant of the column */
+      if( (in > 0.0f ? in : -in) != maxC)
+      {
+        /* Loop over the number rows present below */
+        i = numRows - (l + 1u);
+
+        while(i > 0u)
+        {
+          /* Update the input and destination pointers */
+          pInT2 = pInT1 + (numCols * l);
+          pOutT2 = pOutT1 + (numCols * k);
+
+          /* Look for the most significant element to    
+           * replace in the rows below */
+          if((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC)
+          {
+            /* Loop over number of columns    
+             * to the right of the pilot element */
+            j = numCols - l;
+
+            while(j > 0u)
+            {
+              /* Exchange the row elements of the input matrix */
+              Xchg = *pInT2;
+              *pInT2++ = *pInT1;
+              *pInT1++ = Xchg;
+
+              /* Decrement the loop counter */
+              j--;
+            }
+
+            /* Loop over number of columns of the destination matrix */
+            j = numCols;
+
+            while(j > 0u)
+            {
+              /* Exchange the row elements of the destination matrix */
+              Xchg = *pOutT2;
+              *pOutT2++ = *pOutT1;
+              *pOutT1++ = Xchg;
+
+              /* Decrement the loop counter */
+              j--;
+            }
+
+            /* Flag to indicate whether exchange is done or not */
+            flag = 1u;
+
+            /* Break after exchange is done */
+            break;
+          }
+
+          /* Update the destination pointer modifier */
+          k++;
+
+          /* Decrement the loop counter */
+          i--;
+        }
+      }
+
+      /* Update the status if the matrix is singular */
+      if((flag != 1u) && (in == 0.0f))
+      {
+        return ARM_MATH_SINGULAR;
+      }
+
+      /* Points to the pivot row of input and destination matrices */
+      pPivotRowIn = pIn + (l * numCols);
+      pPivotRowDst = pOut + (l * numCols);
+
+      /* Temporary pointers to the pivot row pointers */
+      pInT1 = pPivotRowIn;
+      pInT2 = pPivotRowDst;
+
+      /* Pivot element of the row */
+      in = *pPivotRowIn;
+
+      /* Loop over number of columns    
+       * to the right of the pilot element */
+      j = (numCols - l);
+
+      while(j > 0u)
+      {
+        /* Divide each element of the row of the input matrix    
+         * by the pivot element */
+        in1 = *pInT1;
+        *pInT1++ = in1 / in;
+
+        /* Decrement the loop counter */
+        j--;
+      }
+
+      /* Loop over number of columns of the destination matrix */
+      j = numCols;
+
+      while(j > 0u)
+      {
+        /* Divide each element of the row of the destination matrix    
+         * by the pivot element */
+        in1 = *pInT2;
+        *pInT2++ = in1 / in;
+
+        /* Decrement the loop counter */
+        j--;
+      }
+
+      /* Replace the rows with the sum of that row and a multiple of row i    
+       * so that each new element in column i above row i is zero.*/
+
+      /* Temporary pointers for input and destination matrices */
+      pInT1 = pIn;
+      pInT2 = pOut;
+
+      /* index used to check for pivot element */
+      i = 0u;
+
+      /* Loop over number of rows */
+      /*  to be replaced by the sum of that row and a multiple of row i */
+      k = numRows;
+
+      while(k > 0u)
+      {
+        /* Check for the pivot element */
+        if(i == l)
+        {
+          /* If the processing element is the pivot element,    
+             only the columns to the right are to be processed */
+          pInT1 += numCols - l;
+
+          pInT2 += numCols;
+        }
+        else
+        {
+          /* Element of the reference row */
+          in = *pInT1;
+
+          /* Working pointers for input and destination pivot rows */
+          pPRT_in = pPivotRowIn;
+          pPRT_pDst = pPivotRowDst;
+
+          /* Loop over the number of columns to the right of the pivot element,    
+             to replace the elements in the input matrix */
+          j = (numCols - l);
+
+          while(j > 0u)
+          {
+            /* Replace the element by the sum of that row    
+               and a multiple of the reference row  */
+            in1 = *pInT1;
+            *pInT1++ = in1 - (in * *pPRT_in++);
+
+            /* Decrement the loop counter */
+            j--;
+          }
+
+          /* Loop over the number of columns to    
+             replace the elements in the destination matrix */
+          j = numCols;
+
+          while(j > 0u)
+          {
+            /* Replace the element by the sum of that row    
+               and a multiple of the reference row  */
+            in1 = *pInT2;
+            *pInT2++ = in1 - (in * *pPRT_pDst++);
+
+            /* Decrement the loop counter */
+            j--;
+          }
+
+        }
+
+        /* Increment the temporary input pointer */
+        pInT1 = pInT1 + l;
+
+        /* Decrement the loop counter */
+        k--;
+
+        /* Increment the pivot index */
+        i++;
+      }
+
+      /* Increment the input pointer */
+      pIn++;
+
+      /* Decrement the loop counter */
+      loopCnt--;
+
+      /* Increment the index modifier */
+      l++;
+    }
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  float32_t Xchg, in = 0.0f;                     /* Temporary input values  */
+  uint32_t i, rowCnt, flag = 0u, j, loopCnt, k, l;      /* loop counters */
+  arm_status status;                             /* status of matrix inverse */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols)
+     || (pSrc->numRows != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+  {
+
+    /*--------------------------------------------------------------------------------------------------------------       
+	 * Matrix Inverse can be solved using elementary row operations.        
+	 *        
+	 *	Gauss-Jordan Method:       
+	 *	 	       
+	 *	   1. First combine the identity matrix and the input matrix separated by a bar to form an        
+	 *        augmented matrix as follows:        
+	 *				        _  _	      _	    _	   _   _         _	       _       
+	 *					   |  |  a11  a12  | | | 1   0  |   |       |  X11 X12  |         
+	 *					   |  |            | | |        |   |   =   |           |        
+	 *					   |_ |_ a21  a22 _| | |_0   1 _|  _|       |_ X21 X21 _|       
+	 *					          
+	 *		2. In our implementation, pDst Matrix is used as identity matrix.    
+	 *       
+	 *		3. Begin with the first row. Let i = 1.       
+	 *       
+	 *	    4. Check to see if the pivot for row i is zero.       
+	 *		   The pivot is the element of the main diagonal that is on the current row.       
+	 *		   For instance, if working with row i, then the pivot element is aii.       
+	 *		   If the pivot is zero, exchange that row with a row below it that does not        
+	 *		   contain a zero in column i. If this is not possible, then an inverse        
+	 *		   to that matrix does not exist.       
+	 *	       
+	 *	    5. Divide every element of row i by the pivot.       
+	 *	       
+	 *	    6. For every row below and  row i, replace that row with the sum of that row and        
+	 *		   a multiple of row i so that each new element in column i below row i is zero.       
+	 *	       
+	 *	    7. Move to the next row and column and repeat steps 2 through 5 until you have zeros       
+	 *		   for every element below and above the main diagonal.        
+	 *		   		          
+	 *		8. Now an identical matrix is formed to the left of the bar(input matrix, src).       
+	 *		   Therefore, the matrix to the right of the bar is our solution(dst matrix, dst).         
+	 *----------------------------------------------------------------------------------------------------------------*/
+
+    /* Working pointer for destination matrix */
+    pOutT1 = pOut;
+
+    /* Loop over the number of rows */
+    rowCnt = numRows;
+
+    /* Making the destination matrix as identity matrix */
+    while(rowCnt > 0u)
+    {
+      /* Writing all zeroes in lower triangle of the destination matrix */
+      j = numRows - rowCnt;
+      while(j > 0u)
+      {
+        *pOutT1++ = 0.0f;
+        j--;
+      }
+
+      /* Writing all ones in the diagonal of the destination matrix */
+      *pOutT1++ = 1.0f;
+
+      /* Writing all zeroes in upper triangle of the destination matrix */
+      j = rowCnt - 1u;
+      while(j > 0u)
+      {
+        *pOutT1++ = 0.0f;
+        j--;
+      }
+
+      /* Decrement the loop counter */
+      rowCnt--;
+    }
+
+    /* Loop over the number of columns of the input matrix.     
+       All the elements in each column are processed by the row operations */
+    loopCnt = numCols;
+
+    /* Index modifier to navigate through the columns */
+    l = 0u;
+    //for(loopCnt = 0u; loopCnt < numCols; loopCnt++)   
+    while(loopCnt > 0u)
+    {
+      /* Check if the pivot element is zero..    
+       * If it is zero then interchange the row with non zero row below.   
+       * If there is no non zero element to replace in the rows below,   
+       * then the matrix is Singular. */
+
+      /* Working pointer for the input matrix that points     
+       * to the pivot element of the particular row  */
+      pInT1 = pIn + (l * numCols);
+
+      /* Working pointer for the destination matrix that points     
+       * to the pivot element of the particular row  */
+      pOutT1 = pOut + (l * numCols);
+
+      /* Temporary variable to hold the pivot value */
+      in = *pInT1;
+
+      /* Destination pointer modifier */
+      k = 1u;
+
+      /* Check if the pivot element is zero */
+      if(*pInT1 == 0.0f)
+      {
+        /* Loop over the number rows present below */
+        for (i = (l + 1u); i < numRows; i++)
+        {
+          /* Update the input and destination pointers */
+          pInT2 = pInT1 + (numCols * l);
+          pOutT2 = pOutT1 + (numCols * k);
+
+          /* Check if there is a non zero pivot element to     
+           * replace in the rows below */
+          if(*pInT2 != 0.0f)
+          {
+            /* Loop over number of columns     
+             * to the right of the pilot element */
+            for (j = 0u; j < (numCols - l); j++)
+            {
+              /* Exchange the row elements of the input matrix */
+              Xchg = *pInT2;
+              *pInT2++ = *pInT1;
+              *pInT1++ = Xchg;
+            }
+
+            for (j = 0u; j < numCols; j++)
+            {
+              Xchg = *pOutT2;
+              *pOutT2++ = *pOutT1;
+              *pOutT1++ = Xchg;
+            }
+
+            /* Flag to indicate whether exchange is done or not */
+            flag = 1u;
+
+            /* Break after exchange is done */
+            break;
+          }
+
+          /* Update the destination pointer modifier */
+          k++;
+        }
+      }
+
+      /* Update the status if the matrix is singular */
+      if((flag != 1u) && (in == 0.0f))
+      {
+        return ARM_MATH_SINGULAR;
+      }
+
+      /* Points to the pivot row of input and destination matrices */
+      pPivotRowIn = pIn + (l * numCols);
+      pPivotRowDst = pOut + (l * numCols);
+
+      /* Temporary pointers to the pivot row pointers */
+      pInT1 = pPivotRowIn;
+      pOutT1 = pPivotRowDst;
+
+      /* Pivot element of the row */
+      in = *(pIn + (l * numCols));
+
+      /* Loop over number of columns     
+       * to the right of the pilot element */
+      for (j = 0u; j < (numCols - l); j++)
+      {
+        /* Divide each element of the row of the input matrix     
+         * by the pivot element */
+        *pInT1 = *pInT1 / in;
+        pInT1++;
+      }
+      for (j = 0u; j < numCols; j++)
+      {
+        /* Divide each element of the row of the destination matrix     
+         * by the pivot element */
+        *pOutT1 = *pOutT1 / in;
+        pOutT1++;
+      }
+
+      /* Replace the rows with the sum of that row and a multiple of row i     
+       * so that each new element in column i above row i is zero.*/
+
+      /* Temporary pointers for input and destination matrices */
+      pInT1 = pIn;
+      pOutT1 = pOut;
+
+      for (i = 0u; i < numRows; i++)
+      {
+        /* Check for the pivot element */
+        if(i == l)
+        {
+          /* If the processing element is the pivot element,     
+             only the columns to the right are to be processed */
+          pInT1 += numCols - l;
+          pOutT1 += numCols;
+        }
+        else
+        {
+          /* Element of the reference row */
+          in = *pInT1;
+
+          /* Working pointers for input and destination pivot rows */
+          pPRT_in = pPivotRowIn;
+          pPRT_pDst = pPivotRowDst;
+
+          /* Loop over the number of columns to the right of the pivot element,     
+             to replace the elements in the input matrix */
+          for (j = 0u; j < (numCols - l); j++)
+          {
+            /* Replace the element by the sum of that row     
+               and a multiple of the reference row  */
+            *pInT1 = *pInT1 - (in * *pPRT_in++);
+            pInT1++;
+          }
+          /* Loop over the number of columns to     
+             replace the elements in the destination matrix */
+          for (j = 0u; j < numCols; j++)
+          {
+            /* Replace the element by the sum of that row     
+               and a multiple of the reference row  */
+            *pOutT1 = *pOutT1 - (in * *pPRT_pDst++);
+            pOutT1++;
+          }
+
+        }
+        /* Increment the temporary input pointer */
+        pInT1 = pInT1 + l;
+      }
+      /* Increment the input pointer */
+      pIn++;
+
+      /* Decrement the loop counter */
+      loopCnt--;
+      /* Increment the index modifier */
+      l++;
+    }
+
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+
+    if((flag != 1u) && (in == 0.0f))
+    {
+      pIn = pSrc->pData;
+      for (i = 0; i < numRows * numCols; i++)
+      {
+        if (pIn[i] != 0.0f)
+            break;
+      }
+      
+      if (i == numRows * numCols)
+        status = ARM_MATH_SINGULAR;
+    }
+  }
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixInv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,703 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_inverse_f64.c    
+*    
+* Description:	Floating-point matrix inverse.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @defgroup MatrixInv Matrix Inverse    
+ *    
+ * Computes the inverse of a matrix.    
+ *    
+ * The inverse is defined only if the input matrix is square and non-singular (the determinant    
+ * is non-zero). The function checks that the input and output matrices are square and of the    
+ * same size.    
+ *    
+ * Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix    
+ * inversion of floating-point matrices.    
+ *    
+ * \par Algorithm    
+ * The Gauss-Jordan method is used to find the inverse.    
+ * The algorithm performs a sequence of elementary row-operations until it    
+ * reduces the input matrix to an identity matrix. Applying the same sequence    
+ * of elementary row-operations to an identity matrix yields the inverse matrix.    
+ * If the input matrix is singular, then the algorithm terminates and returns error status    
+ * <code>ARM_MATH_SINGULAR</code>.    
+ * \image html MatrixInverse.gif "Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method"    
+ */
+
+/**    
+ * @addtogroup MatrixInv    
+ * @{    
+ */
+
+/**    
+ * @brief Floating-point matrix inverse.    
+ * @param[in]       *pSrc points to input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @return     		The function returns    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> if the input matrix is not square or if the size    
+ * of the output matrix does not match the size of the input matrix.    
+ * If the input matrix is found to be singular (non-invertible), then the function returns    
+ * <code>ARM_MATH_SINGULAR</code>.  Otherwise, the function returns <code>ARM_MATH_SUCCESS</code>.    
+ */
+
+arm_status arm_mat_inverse_f64(
+  const arm_matrix_instance_f64 * pSrc,
+  arm_matrix_instance_f64 * pDst)
+{
+  float64_t *pIn = pSrc->pData;                  /* input data matrix pointer */
+  float64_t *pOut = pDst->pData;                 /* output data matrix pointer */
+  float64_t *pInT1, *pInT2;                      /* Temporary input data matrix pointer */
+  float64_t *pOutT1, *pOutT2;                    /* Temporary output data matrix pointer */
+  float64_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst;  /* Temporary input and output data matrix pointer */
+  uint32_t numRows = pSrc->numRows;              /* Number of rows in the matrix  */
+  uint32_t numCols = pSrc->numCols;              /* Number of Cols in the matrix  */
+
+#ifndef ARM_MATH_CM0_FAMILY
+  float64_t maxC;                                /* maximum value in the column */
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float64_t Xchg, in = 0.0f, in1;                /* Temporary input values  */
+  uint32_t i, rowCnt, flag = 0u, j, loopCnt, k, l;      /* loop counters */
+  arm_status status;                             /* status of matrix inverse */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols)
+     || (pSrc->numRows != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+
+    /*--------------------------------------------------------------------------------------------------------------    
+	 * Matrix Inverse can be solved using elementary row operations.    
+	 *    
+	 *	Gauss-Jordan Method:    
+	 *    
+	 *	   1. First combine the identity matrix and the input matrix separated by a bar to form an    
+	 *        augmented matrix as follows:    
+	 *				        _ 	      	       _         _	       _    
+	 *					   |  a11  a12 | 1   0  |       |  X11 X12  |    
+	 *					   |           |        |   =   |           |    
+	 *					   |_ a21  a22 | 0   1 _|       |_ X21 X21 _|    
+	 *    
+	 *		2. In our implementation, pDst Matrix is used as identity matrix.    
+	 *    
+	 *		3. Begin with the first row. Let i = 1.    
+	 *    
+	 *	    4. Check to see if the pivot for column i is the greatest of the column.    
+	 *		   The pivot is the element of the main diagonal that is on the current row.    
+	 *		   For instance, if working with row i, then the pivot element is aii.    
+	 *		   If the pivot is not the most significant of the columns, exchange that row with a row
+	 *		   below it that does contain the most significant value in column i. If the most
+	 *         significant value of the column is zero, then an inverse to that matrix does not exist.
+	 *		   The most significant value of the column is the absolute maximum.
+	 *    
+	 *	    5. Divide every element of row i by the pivot.    
+	 *    
+	 *	    6. For every row below and  row i, replace that row with the sum of that row and    
+	 *		   a multiple of row i so that each new element in column i below row i is zero.    
+	 *    
+	 *	    7. Move to the next row and column and repeat steps 2 through 5 until you have zeros    
+	 *		   for every element below and above the main diagonal.    
+	 *    
+	 *		8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc).    
+	 *		   Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst).    
+	 *----------------------------------------------------------------------------------------------------------------*/
+
+    /* Working pointer for destination matrix */
+    pOutT1 = pOut;
+
+    /* Loop over the number of rows */
+    rowCnt = numRows;
+
+    /* Making the destination matrix as identity matrix */
+    while(rowCnt > 0u)
+    {
+      /* Writing all zeroes in lower triangle of the destination matrix */
+      j = numRows - rowCnt;
+      while(j > 0u)
+      {
+        *pOutT1++ = 0.0f;
+        j--;
+      }
+
+      /* Writing all ones in the diagonal of the destination matrix */
+      *pOutT1++ = 1.0f;
+
+      /* Writing all zeroes in upper triangle of the destination matrix */
+      j = rowCnt - 1u;
+      while(j > 0u)
+      {
+        *pOutT1++ = 0.0f;
+        j--;
+      }
+
+      /* Decrement the loop counter */
+      rowCnt--;
+    }
+
+    /* Loop over the number of columns of the input matrix.    
+       All the elements in each column are processed by the row operations */
+    loopCnt = numCols;
+
+    /* Index modifier to navigate through the columns */
+    l = 0u;
+
+    while(loopCnt > 0u)
+    {
+      /* Check if the pivot element is zero..    
+       * If it is zero then interchange the row with non zero row below.    
+       * If there is no non zero element to replace in the rows below,    
+       * then the matrix is Singular. */
+
+      /* Working pointer for the input matrix that points    
+       * to the pivot element of the particular row  */
+      pInT1 = pIn + (l * numCols);
+
+      /* Working pointer for the destination matrix that points    
+       * to the pivot element of the particular row  */
+      pOutT1 = pOut + (l * numCols);
+
+      /* Temporary variable to hold the pivot value */
+      in = *pInT1;
+
+      /* Grab the most significant value from column l */
+      maxC = 0;
+      for (i = l; i < numRows; i++)
+      {
+        maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC);
+        pInT1 += numCols;
+      }
+
+      /* Update the status if the matrix is singular */
+      if(maxC == 0.0f)
+      {
+        return ARM_MATH_SINGULAR;
+      }
+
+      /* Restore pInT1  */
+      pInT1 = pIn;
+
+      /* Destination pointer modifier */
+      k = 1u;
+      
+      /* Check if the pivot element is the most significant of the column */
+      if( (in > 0.0f ? in : -in) != maxC)
+      {
+        /* Loop over the number rows present below */
+        i = numRows - (l + 1u);
+
+        while(i > 0u)
+        {
+          /* Update the input and destination pointers */
+          pInT2 = pInT1 + (numCols * l);
+          pOutT2 = pOutT1 + (numCols * k);
+
+          /* Look for the most significant element to    
+           * replace in the rows below */
+          if((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC)
+          {
+            /* Loop over number of columns    
+             * to the right of the pilot element */
+            j = numCols - l;
+
+            while(j > 0u)
+            {
+              /* Exchange the row elements of the input matrix */
+              Xchg = *pInT2;
+              *pInT2++ = *pInT1;
+              *pInT1++ = Xchg;
+
+              /* Decrement the loop counter */
+              j--;
+            }
+
+            /* Loop over number of columns of the destination matrix */
+            j = numCols;
+
+            while(j > 0u)
+            {
+              /* Exchange the row elements of the destination matrix */
+              Xchg = *pOutT2;
+              *pOutT2++ = *pOutT1;
+              *pOutT1++ = Xchg;
+
+              /* Decrement the loop counter */
+              j--;
+            }
+
+            /* Flag to indicate whether exchange is done or not */
+            flag = 1u;
+
+            /* Break after exchange is done */
+            break;
+          }
+
+          /* Update the destination pointer modifier */
+          k++;
+
+          /* Decrement the loop counter */
+          i--;
+        }
+      }
+
+      /* Update the status if the matrix is singular */
+      if((flag != 1u) && (in == 0.0f))
+      {
+        return ARM_MATH_SINGULAR;
+      }
+
+      /* Points to the pivot row of input and destination matrices */
+      pPivotRowIn = pIn + (l * numCols);
+      pPivotRowDst = pOut + (l * numCols);
+
+      /* Temporary pointers to the pivot row pointers */
+      pInT1 = pPivotRowIn;
+      pInT2 = pPivotRowDst;
+
+      /* Pivot element of the row */
+      in = *pPivotRowIn;
+
+      /* Loop over number of columns    
+       * to the right of the pilot element */
+      j = (numCols - l);
+
+      while(j > 0u)
+      {
+        /* Divide each element of the row of the input matrix    
+         * by the pivot element */
+        in1 = *pInT1;
+        *pInT1++ = in1 / in;
+
+        /* Decrement the loop counter */
+        j--;
+      }
+
+      /* Loop over number of columns of the destination matrix */
+      j = numCols;
+
+      while(j > 0u)
+      {
+        /* Divide each element of the row of the destination matrix    
+         * by the pivot element */
+        in1 = *pInT2;
+        *pInT2++ = in1 / in;
+
+        /* Decrement the loop counter */
+        j--;
+      }
+
+      /* Replace the rows with the sum of that row and a multiple of row i    
+       * so that each new element in column i above row i is zero.*/
+
+      /* Temporary pointers for input and destination matrices */
+      pInT1 = pIn;
+      pInT2 = pOut;
+
+      /* index used to check for pivot element */
+      i = 0u;
+
+      /* Loop over number of rows */
+      /*  to be replaced by the sum of that row and a multiple of row i */
+      k = numRows;
+
+      while(k > 0u)
+      {
+        /* Check for the pivot element */
+        if(i == l)
+        {
+          /* If the processing element is the pivot element,    
+             only the columns to the right are to be processed */
+          pInT1 += numCols - l;
+
+          pInT2 += numCols;
+        }
+        else
+        {
+          /* Element of the reference row */
+          in = *pInT1;
+
+          /* Working pointers for input and destination pivot rows */
+          pPRT_in = pPivotRowIn;
+          pPRT_pDst = pPivotRowDst;
+
+          /* Loop over the number of columns to the right of the pivot element,    
+             to replace the elements in the input matrix */
+          j = (numCols - l);
+
+          while(j > 0u)
+          {
+            /* Replace the element by the sum of that row    
+               and a multiple of the reference row  */
+            in1 = *pInT1;
+            *pInT1++ = in1 - (in * *pPRT_in++);
+
+            /* Decrement the loop counter */
+            j--;
+          }
+
+          /* Loop over the number of columns to    
+             replace the elements in the destination matrix */
+          j = numCols;
+
+          while(j > 0u)
+          {
+            /* Replace the element by the sum of that row    
+               and a multiple of the reference row  */
+            in1 = *pInT2;
+            *pInT2++ = in1 - (in * *pPRT_pDst++);
+
+            /* Decrement the loop counter */
+            j--;
+          }
+
+        }
+
+        /* Increment the temporary input pointer */
+        pInT1 = pInT1 + l;
+
+        /* Decrement the loop counter */
+        k--;
+
+        /* Increment the pivot index */
+        i++;
+      }
+
+      /* Increment the input pointer */
+      pIn++;
+
+      /* Decrement the loop counter */
+      loopCnt--;
+
+      /* Increment the index modifier */
+      l++;
+    }
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  float64_t Xchg, in = 0.0f;                     /* Temporary input values  */
+  uint32_t i, rowCnt, flag = 0u, j, loopCnt, k, l;      /* loop counters */
+  arm_status status;                             /* status of matrix inverse */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols)
+     || (pSrc->numRows != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+  {
+
+    /*--------------------------------------------------------------------------------------------------------------       
+	 * Matrix Inverse can be solved using elementary row operations.        
+	 *        
+	 *	Gauss-Jordan Method:       
+	 *	 	       
+	 *	   1. First combine the identity matrix and the input matrix separated by a bar to form an        
+	 *        augmented matrix as follows:        
+	 *				        _  _	      _	    _	   _   _         _	       _       
+	 *					   |  |  a11  a12  | | | 1   0  |   |       |  X11 X12  |         
+	 *					   |  |            | | |        |   |   =   |           |        
+	 *					   |_ |_ a21  a22 _| | |_0   1 _|  _|       |_ X21 X21 _|       
+	 *					          
+	 *		2. In our implementation, pDst Matrix is used as identity matrix.    
+	 *       
+	 *		3. Begin with the first row. Let i = 1.       
+	 *       
+	 *	    4. Check to see if the pivot for row i is zero.       
+	 *		   The pivot is the element of the main diagonal that is on the current row.       
+	 *		   For instance, if working with row i, then the pivot element is aii.       
+	 *		   If the pivot is zero, exchange that row with a row below it that does not        
+	 *		   contain a zero in column i. If this is not possible, then an inverse        
+	 *		   to that matrix does not exist.       
+	 *	       
+	 *	    5. Divide every element of row i by the pivot.       
+	 *	       
+	 *	    6. For every row below and  row i, replace that row with the sum of that row and        
+	 *		   a multiple of row i so that each new element in column i below row i is zero.       
+	 *	       
+	 *	    7. Move to the next row and column and repeat steps 2 through 5 until you have zeros       
+	 *		   for every element below and above the main diagonal.        
+	 *		   		          
+	 *		8. Now an identical matrix is formed to the left of the bar(input matrix, src).       
+	 *		   Therefore, the matrix to the right of the bar is our solution(dst matrix, dst).         
+	 *----------------------------------------------------------------------------------------------------------------*/
+
+    /* Working pointer for destination matrix */
+    pOutT1 = pOut;
+
+    /* Loop over the number of rows */
+    rowCnt = numRows;
+
+    /* Making the destination matrix as identity matrix */
+    while(rowCnt > 0u)
+    {
+      /* Writing all zeroes in lower triangle of the destination matrix */
+      j = numRows - rowCnt;
+      while(j > 0u)
+      {
+        *pOutT1++ = 0.0f;
+        j--;
+      }
+
+      /* Writing all ones in the diagonal of the destination matrix */
+      *pOutT1++ = 1.0f;
+
+      /* Writing all zeroes in upper triangle of the destination matrix */
+      j = rowCnt - 1u;
+      while(j > 0u)
+      {
+        *pOutT1++ = 0.0f;
+        j--;
+      }
+
+      /* Decrement the loop counter */
+      rowCnt--;
+    }
+
+    /* Loop over the number of columns of the input matrix.     
+       All the elements in each column are processed by the row operations */
+    loopCnt = numCols;
+
+    /* Index modifier to navigate through the columns */
+    l = 0u;
+    //for(loopCnt = 0u; loopCnt < numCols; loopCnt++)   
+    while(loopCnt > 0u)
+    {
+      /* Check if the pivot element is zero..    
+       * If it is zero then interchange the row with non zero row below.   
+       * If there is no non zero element to replace in the rows below,   
+       * then the matrix is Singular. */
+
+      /* Working pointer for the input matrix that points     
+       * to the pivot element of the particular row  */
+      pInT1 = pIn + (l * numCols);
+
+      /* Working pointer for the destination matrix that points     
+       * to the pivot element of the particular row  */
+      pOutT1 = pOut + (l * numCols);
+
+      /* Temporary variable to hold the pivot value */
+      in = *pInT1;
+
+      /* Destination pointer modifier */
+      k = 1u;
+
+      /* Check if the pivot element is zero */
+      if(*pInT1 == 0.0f)
+      {
+        /* Loop over the number rows present below */
+        for (i = (l + 1u); i < numRows; i++)
+        {
+          /* Update the input and destination pointers */
+          pInT2 = pInT1 + (numCols * l);
+          pOutT2 = pOutT1 + (numCols * k);
+
+          /* Check if there is a non zero pivot element to     
+           * replace in the rows below */
+          if(*pInT2 != 0.0f)
+          {
+            /* Loop over number of columns     
+             * to the right of the pilot element */
+            for (j = 0u; j < (numCols - l); j++)
+            {
+              /* Exchange the row elements of the input matrix */
+              Xchg = *pInT2;
+              *pInT2++ = *pInT1;
+              *pInT1++ = Xchg;
+            }
+
+            for (j = 0u; j < numCols; j++)
+            {
+              Xchg = *pOutT2;
+              *pOutT2++ = *pOutT1;
+              *pOutT1++ = Xchg;
+            }
+
+            /* Flag to indicate whether exchange is done or not */
+            flag = 1u;
+
+            /* Break after exchange is done */
+            break;
+          }
+
+          /* Update the destination pointer modifier */
+          k++;
+        }
+      }
+
+      /* Update the status if the matrix is singular */
+      if((flag != 1u) && (in == 0.0f))
+      {
+        return ARM_MATH_SINGULAR;
+      }
+
+      /* Points to the pivot row of input and destination matrices */
+      pPivotRowIn = pIn + (l * numCols);
+      pPivotRowDst = pOut + (l * numCols);
+
+      /* Temporary pointers to the pivot row pointers */
+      pInT1 = pPivotRowIn;
+      pOutT1 = pPivotRowDst;
+
+      /* Pivot element of the row */
+      in = *(pIn + (l * numCols));
+
+      /* Loop over number of columns     
+       * to the right of the pilot element */
+      for (j = 0u; j < (numCols - l); j++)
+      {
+        /* Divide each element of the row of the input matrix     
+         * by the pivot element */
+        *pInT1 = *pInT1 / in;
+        pInT1++;
+      }
+      for (j = 0u; j < numCols; j++)
+      {
+        /* Divide each element of the row of the destination matrix     
+         * by the pivot element */
+        *pOutT1 = *pOutT1 / in;
+        pOutT1++;
+      }
+
+      /* Replace the rows with the sum of that row and a multiple of row i     
+       * so that each new element in column i above row i is zero.*/
+
+      /* Temporary pointers for input and destination matrices */
+      pInT1 = pIn;
+      pOutT1 = pOut;
+
+      for (i = 0u; i < numRows; i++)
+      {
+        /* Check for the pivot element */
+        if(i == l)
+        {
+          /* If the processing element is the pivot element,     
+             only the columns to the right are to be processed */
+          pInT1 += numCols - l;
+          pOutT1 += numCols;
+        }
+        else
+        {
+          /* Element of the reference row */
+          in = *pInT1;
+
+          /* Working pointers for input and destination pivot rows */
+          pPRT_in = pPivotRowIn;
+          pPRT_pDst = pPivotRowDst;
+
+          /* Loop over the number of columns to the right of the pivot element,     
+             to replace the elements in the input matrix */
+          for (j = 0u; j < (numCols - l); j++)
+          {
+            /* Replace the element by the sum of that row     
+               and a multiple of the reference row  */
+            *pInT1 = *pInT1 - (in * *pPRT_in++);
+            pInT1++;
+          }
+          /* Loop over the number of columns to     
+             replace the elements in the destination matrix */
+          for (j = 0u; j < numCols; j++)
+          {
+            /* Replace the element by the sum of that row     
+               and a multiple of the reference row  */
+            *pOutT1 = *pOutT1 - (in * *pPRT_pDst++);
+            pOutT1++;
+          }
+
+        }
+        /* Increment the temporary input pointer */
+        pInT1 = pInT1 + l;
+      }
+      /* Increment the input pointer */
+      pIn++;
+
+      /* Decrement the loop counter */
+      loopCnt--;
+      /* Increment the index modifier */
+      l++;
+    }
+
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+
+    if((flag != 1u) && (in == 0.0f))
+    {
+      pIn = pSrc->pData;
+      for (i = 0; i < numRows * numCols; i++)
+      {
+        if (pIn[i] != 0.0f)
+            break;
+      }
+      
+      if (i == numRows * numCols)
+        status = ARM_MATH_SINGULAR;
+    }
+  }
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixInv group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,286 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_mult_f32.c    
+*    
+* Description:  Floating-point matrix multiplication.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @defgroup MatrixMult Matrix Multiplication    
+ *    
+ * Multiplies two matrices.    
+ *    
+ * \image html MatrixMultiplication.gif "Multiplication of two 3 x 3 matrices"    
+    
+ * Matrix multiplication is only defined if the number of columns of the    
+ * first matrix equals the number of rows of the second matrix.    
+ * Multiplying an <code>M x N</code> matrix with an <code>N x P</code> matrix results    
+ * in an <code>M x P</code> matrix.    
+ * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of    
+ * <code>pSrcA</code> and <code>pSrcB</code> are equal; and (2) that the size of the output    
+ * matrix equals the outer dimensions of <code>pSrcA</code> and <code>pSrcB</code>.    
+ */
+
+
+/**    
+ * @addtogroup MatrixMult    
+ * @{    
+ */
+
+/**    
+ * @brief Floating-point matrix multiplication.    
+ * @param[in]       *pSrcA points to the first input matrix structure    
+ * @param[in]       *pSrcB points to the second input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @return     		The function returns either    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ */
+
+arm_status arm_mat_mult_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+  arm_matrix_instance_f32 * pDst)
+{
+  float32_t *pIn1 = pSrcA->pData;                /* input data matrix pointer A */
+  float32_t *pIn2 = pSrcB->pData;                /* input data matrix pointer B */
+  float32_t *pInA = pSrcA->pData;                /* input data matrix pointer A  */
+  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */
+  float32_t *px;                                 /* Temporary output data matrix pointer */
+  float32_t sum;                                 /* Accumulator */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t in1, in2, in3, in4;
+  uint16_t col, i = 0u, j, row = numRowsA, colCnt;      /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* Output pointer is set to starting address of the row being processed */
+      px = pOut + i;
+
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set    
+       ** to the starting address of the pSrcB data */
+      pIn2 = pSrcB->pData;
+
+      j = 0u;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sum = 0.0f;
+
+        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+        pIn1 = pInA;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        colCnt = numColsA >> 2u;
+
+        /* matrix multiplication        */
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          in3 = *pIn2;
+          pIn2 += numColsB;
+          in1 = pIn1[0];
+          in2 = pIn1[1];
+          sum += in1 * in3;
+          in4 = *pIn2;
+          pIn2 += numColsB;
+          sum += in2 * in4;
+
+          in3 = *pIn2;
+          pIn2 += numColsB;
+          in1 = pIn1[2];
+          in2 = pIn1[3];
+          sum += in1 * in3;
+          in4 = *pIn2;
+          pIn2 += numColsB;
+          sum += in2 * in4;
+          pIn1 += 4u;
+
+          /* Decrement the loop count */
+          colCnt--;
+        }
+
+        /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.    
+         ** No loop unrolling is used. */
+        colCnt = numColsA % 0x4u;
+
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          sum += *pIn1++ * (*pIn2);
+          pIn2 += numColsB;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* Store the result in the destination buffer */
+        *px++ = sum;
+
+        /* Update the pointer pIn2 to point to the  starting address of the next column */
+        j++;
+        pIn2 = pSrcB->pData + j;
+
+        /* Decrement the column loop counter */
+        col--;
+
+      } while(col > 0u);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  float32_t *pInB = pSrcB->pData;                /* input data matrix pointer B */
+  uint16_t col, i = 0u, row = numRowsA, colCnt;  /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* The following loop performs the dot-product of each row in pInA with each column in pInB */
+    /* row loop */
+    do
+    {
+      /* Output pointer is set to starting address of the row being processed */
+      px = pOut + i;
+
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set     
+       ** to the starting address of the pSrcB data */
+      pIn2 = pSrcB->pData;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sum = 0.0f;
+
+        /* Initialize the pointer pIn1 to point to the starting address of the row being processed */
+        pIn1 = pInA;
+
+        /* Matrix A columns number of MAC operations are to be performed */
+        colCnt = numColsA;
+
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          sum += *pIn1++ * (*pIn2);
+          pIn2 += numColsB;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* Store the result in the destination buffer */
+        *px++ = sum;
+
+        /* Decrement the column loop counter */
+        col--;
+
+        /* Update the pointer pIn2 to point to the  starting address of the next column */
+        pIn2 = pInB + (numColsB - col);
+
+      } while(col > 0u);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+      /* Update the pointer pInA to point to the  starting address of the next row */
+      i = i + numColsB;
+      pInA = pInA + numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,369 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_mult_fast_q15.c    
+*    
+* Description:	 Q15 matrix multiplication (fast variant)    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixMult    
+ * @{    
+ */
+
+
+/**    
+ * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4    
+ * @param[in]       *pSrcA points to the first input matrix structure    
+ * @param[in]       *pSrcB points to the second input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @param[in]		*pState points to the array for storing intermediate results    
+ * @return     		The function returns either    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The difference between the function arm_mat_mult_q15() and this fast variant is that    
+ * the fast variant use a 32-bit rather than a 64-bit accumulator.    
+ * The result of each 1.15 x 1.15 multiplication is truncated to        
+ * 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30        
+ * format. Finally, the accumulator is saturated and converted to a 1.15 result.        
+ *        
+ * \par        
+ * The fast version has the same overflow behavior as the standard version but provides        
+ * less precision since it discards the low 16 bits of each multiplication result.        
+ * In order to avoid overflows completely the input signals must be scaled down.        
+ * Scale down one of the input matrices by log2(numColsA) bits to        
+ * avoid overflows, as a total of numColsA additions are computed internally for each        
+ * output element.        
+ *        
+ * \par    
+ * See <code>arm_mat_mult_q15()</code> for a slower implementation of this function    
+ * which uses 64-bit accumulation to provide higher precision.    
+ */
+
+arm_status arm_mat_mult_fast_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst,
+  q15_t * pState)
+{
+  q31_t sum;                                     /* accumulator */
+  q15_t *pSrcBT = pState;                        /* input data matrix pointer for transpose */
+  q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A of Q15 type */
+  q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B of Q15 type */
+  q15_t *px;                                     /* Temporary output data matrix pointer */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A    */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+  uint16_t numRowsB = pSrcB->numRows;            /* number of rows of input matrix A    */
+  uint16_t col, i = 0u, row = numRowsB, colCnt;  /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  q31_t in;                                      /* Temporary variable to hold the input value */
+  q31_t inA1, inA2, inB1, inB2;
+
+#else
+
+  q15_t in;                                      /* Temporary variable to hold the input value */
+  q15_t inA1, inA2, inB1, inB2;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif
+  {
+    /* Matrix transpose */
+    do
+    {
+      /* Apply loop unrolling and exchange the columns with row elements */
+      col = numColsB >> 2;
+
+      /* The pointer px is set to starting address of the column being processed */
+      px = pSrcBT + i;
+
+      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+       ** a second loop below computes the remaining 1 to 3 samples. */
+      while(col > 0u)
+      {
+#ifndef UNALIGNED_SUPPORT_DISABLE
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        /* Unpack and store one element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *px = (q15_t) in;
+
+#else
+
+        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Unpack and store the second element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#else
+
+        *px = (q15_t) in;
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        /* Unpack and store one element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *px = (q15_t) in;
+
+#else
+
+        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Unpack and store the second element in the destination */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#else
+
+        *px = (q15_t) in;
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+#else
+
+        /* Read one element from the row */
+        in = *pInB++;
+
+        /* Store one element in the destination */
+        *px = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Read one element from the row */
+        in = *pInB++;
+
+        /* Store one element in the destination */
+        *px = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Read one element from the row */
+        in = *pInB++;
+
+        /* Store one element in the destination */
+        *px = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Read one element from the row */
+        in = *pInB++;
+
+        /* Store one element in the destination */
+        *px = in;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+        
+		/* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+      /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.        
+       ** No loop unrolling is used. */
+      col = numColsB % 0x4u;
+
+      while(col > 0u)
+      {
+        /* Read and store the input element in the destination */
+        *px = *pInB++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+      i++;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* Reset the variables for the usage in the following multiplication process */
+    row = numRowsA;
+    i = 0u;
+    px = pDst->pData;
+
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set        
+       ** to the starting address of the transposed pSrcB data */
+      pInB = pSrcBT;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sum = 0;
+
+        /* Apply loop unrolling and compute 2 MACs simultaneously. */
+        colCnt = numColsA >> 2;
+
+        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+        pInA = pSrcA->pData + i;
+
+        /* matrix multiplication */
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+          inA1 = *__SIMD32(pInA)++;
+          inB1 = *__SIMD32(pInB)++;
+          inA2 = *__SIMD32(pInA)++;
+          inB2 = *__SIMD32(pInB)++;
+
+          sum = __SMLAD(inA1, inB1, sum);
+          sum = __SMLAD(inA2, inB2, sum);
+
+#else
+
+          inA1 = *pInA++;
+          inB1 = *pInB++;
+          inA2 = *pInA++;
+          sum += inA1 * inB1;
+          inB2 = *pInB++;
+
+          inA1 = *pInA++;
+          inB1 = *pInB++;
+          sum += inA2 * inB2;
+          inA2 = *pInA++;
+          inB2 = *pInB++;
+
+          sum += inA1 * inB1;
+          sum += inA2 * inB2;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* process odd column samples */
+        colCnt = numColsA % 0x4u;
+
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          sum += (q31_t) (*pInA++) * (*pInB++);
+
+          colCnt--;
+        }
+
+        /* Saturate and store the result in the destination buffer */
+        *px = (q15_t) (sum >> 15);
+        px++;
+
+        /* Decrement the column loop counter */
+        col--;
+
+      } while(col > 0u);
+
+      i = i + numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**        
+ * @} end of MatrixMult group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,226 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_mult_fast_q31.c    
+*    
+* Description:	 Q31 matrix multiplication (fast variant).    
+*    
+* Target Processor: Cortex-M4/Cortex-M3
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixMult    
+ * @{    
+ */
+
+/**    
+ * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4    
+ * @param[in]       *pSrcA points to the first input matrix structure    
+ * @param[in]       *pSrcB points to the second input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @return     		The function returns either    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The difference between the function arm_mat_mult_q31() and this fast variant is that    
+ * the fast variant use a 32-bit rather than a 64-bit accumulator.    
+ * The result of each 1.31 x 1.31 multiplication is truncated to    
+ * 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30    
+ * format. Finally, the accumulator is saturated and converted to a 1.31 result.    
+ *    
+ * \par    
+ * The fast version has the same overflow behavior as the standard version but provides    
+ * less precision since it discards the low 32 bits of each multiplication result.    
+ * In order to avoid overflows completely the input signals must be scaled down.    
+ * Scale down one of the input matrices by log2(numColsA) bits to    
+ * avoid overflows, as a total of numColsA additions are computed internally for each    
+ * output element.    
+ *    
+ * \par    
+ * See <code>arm_mat_mult_q31()</code> for a slower implementation of this function    
+ * which uses 64-bit accumulation to provide higher precision.    
+ */
+
+arm_status arm_mat_mult_fast_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst)
+{
+  q31_t *pIn1 = pSrcA->pData;                    /* input data matrix pointer A */
+  q31_t *pIn2 = pSrcB->pData;                    /* input data matrix pointer B */
+  q31_t *pInA = pSrcA->pData;                    /* input data matrix pointer A */
+//  q31_t *pSrcB = pSrcB->pData;                    /* input data matrix pointer B */    
+  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  q31_t *px;                                     /* Temporary output data matrix pointer */
+  q31_t sum;                                     /* Accumulator */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A    */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+  uint16_t col, i = 0u, j, row = numRowsA, colCnt;      /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+  q31_t inA1, inA2, inA3, inA4, inB1, inB2, inB3, inB4;
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* Output pointer is set to starting address of the row being processed */
+      px = pOut + i;
+
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set    
+       ** to the starting address of the pSrcB data */
+      pIn2 = pSrcB->pData;
+
+      j = 0u;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sum = 0;
+
+        /* Initiate the pointer pIn1 to point to the starting address of pInA */
+        pIn1 = pInA;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        colCnt = numColsA >> 2;
+
+
+        /* matrix multiplication */
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          /* Perform the multiply-accumulates */
+          inB1 = *pIn2;
+          pIn2 += numColsB;
+
+          inA1 = pIn1[0];
+          inA2 = pIn1[1];
+
+          inB2 = *pIn2;
+          pIn2 += numColsB;
+
+          inB3 = *pIn2;
+          pIn2 += numColsB;
+
+          sum = (q31_t) ((((q63_t) sum << 32) + ((q63_t) inA1 * inB1)) >> 32);
+          sum = (q31_t) ((((q63_t) sum << 32) + ((q63_t) inA2 * inB2)) >> 32);
+
+          inA3 = pIn1[2];
+          inA4 = pIn1[3];
+
+          inB4 = *pIn2;
+          pIn2 += numColsB;
+
+          sum = (q31_t) ((((q63_t) sum << 32) + ((q63_t) inA3 * inB3)) >> 32);
+          sum = (q31_t) ((((q63_t) sum << 32) + ((q63_t) inA4 * inB4)) >> 32);
+
+          pIn1 += 4u;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* If the columns of pSrcA is not a multiple of 4, compute any remaining output samples here.    
+         ** No loop unrolling is used. */
+        colCnt = numColsA % 0x4u;
+
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          /* Perform the multiply-accumulates */
+          sum = (q31_t) ((((q63_t) sum << 32) +
+                          ((q63_t) * pIn1++ * (*pIn2))) >> 32);
+          pIn2 += numColsB;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* Convert the result from 2.30 to 1.31 format and store in destination buffer */
+        *px++ = sum << 1;
+
+        /* Update the pointer pIn2 to point to the  starting address of the next column */
+        j++;
+        pIn2 = pSrcB->pData + j;
+
+        /* Decrement the column loop counter */
+        col--;
+
+      } while(col > 0u);
+
+      /* Update the pointer pInA to point to the  starting address of the next row */
+      i = i + numColsB;
+      pInA = pInA + numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,469 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_mult_q15.c    
+*    
+* Description:	 Q15 matrix multiplication.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixMult    
+ * @{    
+ */
+
+
+/**    
+ * @brief Q15 matrix multiplication    
+ * @param[in]       *pSrcA points to the first input matrix structure    
+ * @param[in]       *pSrcB points to the second input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @param[in]		*pState points to the array for storing intermediate results (Unused)  
+ * @return     		The function returns either    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator. The inputs to the    
+ * multiplications are in 1.15 format and multiplications yield a 2.30 result.    
+ * The 2.30 intermediate    
+ * results are accumulated in a 64-bit accumulator in 34.30 format. This approach    
+ * provides 33 guard bits and there is no risk of overflow. The 34.30 result is then    
+ * truncated to 34.15 format by discarding the low 15 bits and then saturated to    
+ * 1.15 format.    
+ *    
+ * \par    
+ * Refer to <code>arm_mat_mult_fast_q15()</code> for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.    
+ *    
+ */
+
+arm_status arm_mat_mult_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst,
+  q15_t * pState CMSIS_UNUSED)
+{
+  q63_t sum;                                     /* accumulator */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q15_t *pSrcBT = pState;                        /* input data matrix pointer for transpose */
+  q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A of Q15 type */
+  q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B of Q15 type */
+  q15_t *px;                                     /* Temporary output data matrix pointer */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A    */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+  uint16_t numRowsB = pSrcB->numRows;            /* number of rows of input matrix A    */
+  uint16_t col, i = 0u, row = numRowsB, colCnt;  /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  q31_t in;                                      /* Temporary variable to hold the input value */
+  q31_t pSourceA1, pSourceB1, pSourceA2, pSourceB2;
+
+#else
+
+  q15_t in;                                      /* Temporary variable to hold the input value */
+  q15_t inA1, inB1, inA2, inB2;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+  {
+    /* Matrix transpose */
+    do
+    {
+      /* Apply loop unrolling and exchange the columns with row elements */
+      col = numColsB >> 2;
+
+      /* The pointer px is set to starting address of the column being processed */
+      px = pSrcBT + i;
+
+      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.        
+       ** a second loop below computes the remaining 1 to 3 samples. */
+      while(col > 0u)
+      {
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        /* Unpack and store one element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *px = (q15_t) in;
+
+#else
+
+        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Unpack and store the second element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#else
+
+        *px = (q15_t) in;
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Read two elements from the row */
+        in = *__SIMD32(pInB)++;
+
+        /* Unpack and store one element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *px = (q15_t) in;
+
+#else
+
+        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Unpack and store the second element in the destination */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#else
+
+        *px = (q15_t) in;
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+#else
+
+        /* Read one element from the row */
+        in = *pInB++;
+
+        /* Store one element in the destination */
+        *px = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Read one element from the row */
+        in = *pInB++;
+
+        /* Store one element in the destination */
+        *px = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Read one element from the row */
+        in = *pInB++;
+
+        /* Store one element in the destination */
+        *px = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Read one element from the row */
+        in = *pInB++;
+
+        /* Store one element in the destination */
+        *px = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+       /* Decrement the column loop counter */
+        col--;
+      }
+
+      /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.        
+       ** No loop unrolling is used. */
+      col = numColsB % 0x4u;
+
+      while(col > 0u)
+      {
+        /* Read and store the input element in the destination */
+        *px = *pInB++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += numRowsB;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+      i++;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* Reset the variables for the usage in the following multiplication process */
+    row = numRowsA;
+    i = 0u;
+    px = pDst->pData;
+
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set        
+       ** to the starting address of the transposed pSrcB data */
+      pInB = pSrcBT;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sum = 0;
+
+        /* Apply loop unrolling and compute 2 MACs simultaneously. */
+        colCnt = numColsA >> 2;
+
+        /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+        pInA = pSrcA->pData + i;
+
+
+        /* matrix multiplication */
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+          /* read real and imag values from pSrcA and pSrcB buffer */
+          pSourceA1 = *__SIMD32(pInA)++;
+          pSourceB1 = *__SIMD32(pInB)++;
+
+          pSourceA2 = *__SIMD32(pInA)++;
+          pSourceB2 = *__SIMD32(pInB)++;
+
+          /* Multiply and Accumlates */
+          sum = __SMLALD(pSourceA1, pSourceB1, sum);
+          sum = __SMLALD(pSourceA2, pSourceB2, sum);
+
+#else
+          /* read real and imag values from pSrcA and pSrcB buffer */
+          inA1 = *pInA++;
+          inB1 = *pInB++;
+          inA2 = *pInA++;
+          /* Multiply and Accumlates */
+          sum += inA1 * inB1;
+          inB2 = *pInB++;
+
+          inA1 = *pInA++;
+          inB1 = *pInB++;
+          /* Multiply and Accumlates */
+          sum += inA2 * inB2;
+          inA2 = *pInA++;
+          inB2 = *pInB++;
+
+          /* Multiply and Accumlates */
+          sum += inA1 * inB1;
+          sum += inA2 * inB2;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* process remaining column samples */
+        colCnt = numColsA & 3u;
+
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          sum += *pInA++ * *pInB++;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* Saturate and store the result in the destination buffer */
+        *px = (q15_t) (__SSAT((sum >> 15), 16));
+        px++;
+
+        /* Decrement the column loop counter */
+        col--;
+
+      } while(col > 0u);
+
+      i = i + numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q15_t *pIn1 = pSrcA->pData;                    /* input data matrix pointer A */
+  q15_t *pIn2 = pSrcB->pData;                    /* input data matrix pointer B */
+  q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A of Q15 type */
+  q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B of Q15 type */
+  q15_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  q15_t *px;                                     /* Temporary output data matrix pointer */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A    */
+  uint16_t col, i = 0u, row = numRowsA, colCnt;  /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* Output pointer is set to starting address of the row being processed */
+      px = pOut + i;
+
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set          
+       ** to the starting address of the pSrcB data */
+      pIn2 = pSrcB->pData;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sum = 0;
+
+        /* Initiate the pointer pIn1 to point to the starting address of pSrcA */
+        pIn1 = pInA;
+
+        /* Matrix A columns number of MAC operations are to be performed */
+        colCnt = numColsA;
+
+        /* matrix multiplication */
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          /* Perform the multiply-accumulates */
+          sum += (q31_t) * pIn1++ * *pIn2;
+          pIn2 += numColsB;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* Convert the result from 34.30 to 1.15 format and store the saturated value in destination buffer */
+        /* Saturate and store the result in the destination buffer */
+        *px++ = (q15_t) __SSAT((sum >> 15), 16);
+
+        /* Decrement the column loop counter */
+        col--;
+
+        /* Update the pointer pIn2 to point to the  starting address of the next column */
+        pIn2 = pInB + (numColsB - col);
+
+      } while(col > 0u);
+
+      /* Update the pointer pSrcA to point to the  starting address of the next row */
+      i = i + numColsB;
+      pInA = pInA + numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**        
+ * @} end of MatrixMult group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,294 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_mult_q31.c    
+*    
+* Description:	 Q31 matrix multiplication.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixMult    
+ * @{    
+ */
+
+/**    
+ * @brief Q31 matrix multiplication    
+ * @param[in]       *pSrcA points to the first input matrix structure    
+ * @param[in]       *pSrcB points to the second input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @return     		The function returns either    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using an internal 64-bit accumulator.    
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate    
+ * multiplication results but provides only a single guard bit. There is no saturation    
+ * on intermediate additions. Thus, if the accumulator overflows it wraps around and    
+ * distorts the result. The input signals should be scaled down to avoid intermediate    
+ * overflows. The input is thus scaled down by log2(numColsA) bits    
+ * to avoid overflows, as a total of numColsA additions are performed internally.    
+ * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.    
+ *    
+ * \par    
+ * See <code>arm_mat_mult_fast_q31()</code> for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.    
+ *    
+ */
+
+arm_status arm_mat_mult_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst)
+{
+  q31_t *pIn1 = pSrcA->pData;                    /* input data matrix pointer A */
+  q31_t *pIn2 = pSrcB->pData;                    /* input data matrix pointer B */
+  q31_t *pInA = pSrcA->pData;                    /* input data matrix pointer A */
+  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  q31_t *px;                                     /* Temporary output data matrix pointer */
+  q63_t sum;                                     /* Accumulator */
+  uint16_t numRowsA = pSrcA->numRows;            /* number of rows of input matrix A    */
+  uint16_t numColsB = pSrcB->numCols;            /* number of columns of input matrix B */
+  uint16_t numColsA = pSrcA->numCols;            /* number of columns of input matrix A */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  uint16_t col, i = 0u, j, row = numRowsA, colCnt;      /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+  q31_t a0, a1, a2, a3, b0, b1, b2, b3;
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* Output pointer is set to starting address of the row being processed */
+      px = pOut + i;
+
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set    
+       ** to the starting address of the pSrcB data */
+      pIn2 = pSrcB->pData;
+
+      j = 0u;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sum = 0;
+
+        /* Initiate the pointer pIn1 to point to the starting address of pInA */
+        pIn1 = pInA;
+
+        /* Apply loop unrolling and compute 4 MACs simultaneously. */
+        colCnt = numColsA >> 2;
+
+
+        /* matrix multiplication */
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          /* Perform the multiply-accumulates */
+          b0 = *pIn2;
+          pIn2 += numColsB;
+
+          a0 = *pIn1++;
+          a1 = *pIn1++;
+
+          b1 = *pIn2;
+          pIn2 += numColsB;
+          b2 = *pIn2;
+          pIn2 += numColsB;
+
+          sum += (q63_t) a0 *b0;
+          sum += (q63_t) a1 *b1;
+
+          a2 = *pIn1++;
+          a3 = *pIn1++;
+
+          b3 = *pIn2;
+          pIn2 += numColsB;
+
+          sum += (q63_t) a2 *b2;
+          sum += (q63_t) a3 *b3;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* If the columns of pSrcA is not a multiple of 4, compute any remaining output samples here.    
+         ** No loop unrolling is used. */
+        colCnt = numColsA % 0x4u;
+
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          /* Perform the multiply-accumulates */
+          sum += (q63_t) * pIn1++ * *pIn2;
+          pIn2 += numColsB;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* Convert the result from 2.62 to 1.31 format and store in destination buffer */
+        *px++ = (q31_t) (sum >> 31);
+
+        /* Update the pointer pIn2 to point to the  starting address of the next column */
+        j++;
+        pIn2 = (pSrcB->pData) + j;
+
+        /* Decrement the column loop counter */
+        col--;
+
+      } while(col > 0u);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t *pInB = pSrcB->pData;                    /* input data matrix pointer B */
+  uint16_t col, i = 0u, row = numRowsA, colCnt;  /* loop counters */
+  arm_status status;                             /* status of matrix multiplication */
+
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numCols != pSrcB->numRows) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+    /* row loop */
+    do
+    {
+      /* Output pointer is set to starting address of the row being processed */
+      px = pOut + i;
+
+      /* For every row wise process, the column loop counter is to be initiated */
+      col = numColsB;
+
+      /* For every row wise process, the pIn2 pointer is set          
+       ** to the starting address of the pSrcB data */
+      pIn2 = pSrcB->pData;
+
+      /* column loop */
+      do
+      {
+        /* Set the variable sum, that acts as accumulator, to zero */
+        sum = 0;
+
+        /* Initiate the pointer pIn1 to point to the starting address of pInA */
+        pIn1 = pInA;
+
+        /* Matrix A columns number of MAC operations are to be performed */
+        colCnt = numColsA;
+
+        /* matrix multiplication */
+        while(colCnt > 0u)
+        {
+          /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+          /* Perform the multiply-accumulates */
+          sum += (q63_t) * pIn1++ * *pIn2;
+          pIn2 += numColsB;
+
+          /* Decrement the loop counter */
+          colCnt--;
+        }
+
+        /* Convert the result from 2.62 to 1.31 format and store in destination buffer */
+        *px++ = (q31_t) clip_q63_to_q31(sum >> 31);
+
+        /* Decrement the column loop counter */
+        col--;
+
+        /* Update the pointer pIn2 to point to the  starting address of the next column */
+        pIn2 = pInB + (numColsB - col);
+
+      } while(col > 0u);
+
+#endif
+
+      /* Update the pointer pInA to point to the  starting address of the next row */
+      i = i + numColsB;
+      pInA = pInA + numColsA;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixMult group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,181 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:        arm_mat_scale_f32.c    
+*    
+* Description:	Multiplies a floating-point matrix by a scalar.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMatrix        
+ */
+
+/**        
+ * @defgroup MatrixScale Matrix Scale        
+ *        
+ * Multiplies a matrix by a scalar.  This is accomplished by multiplying each element in the        
+ * matrix by the scalar.  For example:        
+ * \image html MatrixScale.gif "Matrix Scaling of a 3 x 3 matrix"        
+ *        
+ * The function checks to make sure that the input and output matrices are of the same size.        
+ *        
+ * In the fixed-point Q15 and Q31 functions, <code>scale</code> is represented by        
+ * a fractional multiplication <code>scaleFract</code> and an arithmetic shift <code>shift</code>.        
+ * The shift allows the gain of the scaling operation to exceed 1.0.        
+ * The overall scale factor applied to the fixed-point data is        
+ * <pre>        
+ *     scale = scaleFract * 2^shift.        
+ * </pre>        
+ */
+
+/**        
+ * @addtogroup MatrixScale        
+ * @{        
+ */
+
+/**        
+ * @brief Floating-point matrix scaling.        
+ * @param[in]       *pSrc points to input matrix structure        
+ * @param[in]       scale scale factor to be applied         
+ * @param[out]      *pDst points to output matrix structure        
+ * @return     		The function returns either <code>ARM_MATH_SIZE_MISMATCH</code>         
+ * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.        
+ *        
+ */
+
+arm_status arm_mat_scale_f32(
+  const arm_matrix_instance_f32 * pSrc,
+  float32_t scale,
+  arm_matrix_instance_f32 * pDst)
+{
+  float32_t *pIn = pSrc->pData;                  /* input data matrix pointer */
+  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */
+  uint32_t numSamples;                           /* total number of elements in the matrix */
+  uint32_t blkCnt;                               /* loop counters */
+  arm_status status;                             /* status of matrix scaling     */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  float32_t in1, in2, in3, in4;                  /* temporary variables */
+  float32_t out1, out2, out3, out4;              /* temporary variables */
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+  {
+    /* Total number of samples in the input matrix */
+    numSamples = (uint32_t) pSrc->numRows * pSrc->numCols;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+    /* Loop Unrolling */
+    blkCnt = numSamples >> 2;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) * scale */
+      /* Scaling and results are stored in the destination buffer. */
+      in1 = pIn[0];
+      in2 = pIn[1];
+      in3 = pIn[2];
+      in4 = pIn[3];
+
+      out1 = in1 * scale;
+      out2 = in2 * scale;
+      out3 = in3 * scale;
+      out4 = in4 * scale;
+
+
+      pOut[0] = out1;
+      pOut[1] = out2;
+      pOut[2] = out3;
+      pOut[3] = out4;
+
+      /* update pointers to process next sampels */
+      pIn += 4u;
+      pOut += 4u;
+
+      /* Decrement the numSamples loop counter */
+      blkCnt--;
+    }
+
+    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = numSamples % 0x4u;
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) * scale */
+      /* The results are stored in the destination buffer. */
+      *pOut++ = (*pIn++) * scale;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**        
+ * @} end of MatrixScale group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,183 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_scale_q15.c    
+*    
+* Description:	Multiplies a Q15 matrix by a scalar.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixScale    
+ * @{    
+ */
+
+/**    
+ * @brief Q15 matrix scaling.    
+ * @param[in]       *pSrc points to input matrix    
+ * @param[in]       scaleFract fractional portion of the scale factor    
+ * @param[in]       shift number of bits to shift the result by    
+ * @param[out]      *pDst points to output matrix structure    
+ * @return     		The function returns either    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.15 format.    
+ * These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format.    
+ */
+
+arm_status arm_mat_scale_q15(
+  const arm_matrix_instance_q15 * pSrc,
+  q15_t scaleFract,
+  int32_t shift,
+  arm_matrix_instance_q15 * pDst)
+{
+  q15_t *pIn = pSrc->pData;                      /* input data matrix pointer */
+  q15_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  uint32_t numSamples;                           /* total number of elements in the matrix */
+  int32_t totShift = 15 - shift;                 /* total shift to apply after scaling */
+  uint32_t blkCnt;                               /* loop counters */
+  arm_status status;                             /* status of matrix scaling     */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  q15_t in1, in2, in3, in4;
+  q31_t out1, out2, out3, out4;
+  q31_t inA1, inA2;
+
+#endif //     #ifndef ARM_MATH_CM0_FAMILY
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch */
+  if((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif //    #ifdef ARM_MATH_MATRIX_CHECK
+  {
+    /* Total number of samples in the input matrix */
+    numSamples = (uint32_t) pSrc->numRows * pSrc->numCols;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+    /* Loop Unrolling */
+    blkCnt = numSamples >> 2;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) * k */
+      /* Scale, saturate and then store the results in the destination buffer. */
+      /* Reading 2 inputs from memory */
+      inA1 = _SIMD32_OFFSET(pIn);
+      inA2 = _SIMD32_OFFSET(pIn + 2);
+
+      /* C = A * scale */
+      /* Scale the inputs and then store the 2 results in the destination buffer        
+       * in single cycle by packing the outputs */
+      out1 = (q31_t) ((q15_t) (inA1 >> 16) * scaleFract);
+      out2 = (q31_t) ((q15_t) inA1 * scaleFract);
+      out3 = (q31_t) ((q15_t) (inA2 >> 16) * scaleFract);
+      out4 = (q31_t) ((q15_t) inA2 * scaleFract);
+
+      out1 = out1 >> totShift;
+      inA1 = _SIMD32_OFFSET(pIn + 4);
+      out2 = out2 >> totShift;
+      inA2 = _SIMD32_OFFSET(pIn + 6);
+      out3 = out3 >> totShift;
+      out4 = out4 >> totShift;
+
+      in1 = (q15_t) (__SSAT(out1, 16));
+      in2 = (q15_t) (__SSAT(out2, 16));
+      in3 = (q15_t) (__SSAT(out3, 16));
+      in4 = (q15_t) (__SSAT(out4, 16));
+
+      _SIMD32_OFFSET(pOut) = __PKHBT(in2, in1, 16);
+      _SIMD32_OFFSET(pOut + 2) = __PKHBT(in4, in3, 16);
+
+      /* update pointers to process next sampels */
+      pIn += 4u;
+      pOut += 4u;
+
+
+      /* Decrement the numSamples loop counter */
+      blkCnt--;
+    }
+
+    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.        
+     ** No loop unrolling is used. */
+    blkCnt = numSamples % 0x4u;
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) * k */
+      /* Scale, saturate and then store the results in the destination buffer. */
+      *pOut++ =
+        (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> totShift, 16));
+
+      /* Decrement the numSamples loop counter */
+      blkCnt--;
+    }
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**        
+ * @} end of MatrixScale group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,202 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_scale_q31.c    
+*    
+* Description:	Multiplies a Q31 matrix by a scalar.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  ------------------------------------------------ */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMatrix        
+ */
+
+/**        
+ * @addtogroup MatrixScale        
+ * @{        
+ */
+
+/**        
+ * @brief Q31 matrix scaling.        
+ * @param[in]       *pSrc points to input matrix        
+ * @param[in]       scaleFract fractional portion of the scale factor        
+ * @param[in]       shift number of bits to shift the result by        
+ * @param[out]      *pDst points to output matrix structure        
+ * @return     		The function returns either        
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.        
+ *        
+ * @details        
+ * <b>Scaling and Overflow Behavior:</b>        
+ * \par        
+ * The input data <code>*pSrc</code> and <code>scaleFract</code> are in 1.31 format.        
+ * These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format.        
+ */
+
+arm_status arm_mat_scale_q31(
+  const arm_matrix_instance_q31 * pSrc,
+  q31_t scaleFract,
+  int32_t shift,
+  arm_matrix_instance_q31 * pDst)
+{
+  q31_t *pIn = pSrc->pData;                      /* input data matrix pointer */
+  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  uint32_t numSamples;                           /* total number of elements in the matrix */
+  int32_t totShift = shift + 1;                  /* shift to apply after scaling */
+  uint32_t blkCnt;                               /* loop counters  */
+  arm_status status;                             /* status of matrix scaling      */
+  q31_t in1, in2, out1;                          /* temporary variabels */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  q31_t in3, in4, out2, out3, out4;              /* temporary variables */
+
+#endif //      #ifndef ARM_MAT_CM0
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch  */
+  if((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif //    #ifdef ARM_MATH_MATRIX_CHECK
+  {
+    /* Total number of samples in the input matrix */
+    numSamples = (uint32_t) pSrc->numRows * pSrc->numCols;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+    /* Loop Unrolling */
+    blkCnt = numSamples >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) * k */
+      /* Read values from input */
+      in1 = *pIn;
+      in2 = *(pIn + 1);
+      in3 = *(pIn + 2);
+      in4 = *(pIn + 3);
+
+      /* multiply input with scaler value */
+      in1 = ((q63_t) in1 * scaleFract) >> 32;
+      in2 = ((q63_t) in2 * scaleFract) >> 32;
+      in3 = ((q63_t) in3 * scaleFract) >> 32;
+      in4 = ((q63_t) in4 * scaleFract) >> 32;
+
+      /* apply shifting */
+      out1 = in1 << totShift;
+      out2 = in2 << totShift;
+
+      /* saturate the results. */
+      if(in1 != (out1 >> totShift))
+        out1 = 0x7FFFFFFF ^ (in1 >> 31);
+
+      if(in2 != (out2 >> totShift))
+        out2 = 0x7FFFFFFF ^ (in2 >> 31);
+
+      out3 = in3 << totShift;
+      out4 = in4 << totShift;
+
+      *pOut = out1;
+      *(pOut + 1) = out2;
+
+      if(in3 != (out3 >> totShift))
+        out3 = 0x7FFFFFFF ^ (in3 >> 31);
+
+      if(in4 != (out4 >> totShift))
+        out4 = 0x7FFFFFFF ^ (in4 >> 31);
+
+
+      *(pOut + 2) = out3;
+      *(pOut + 3) = out4;
+
+      /* update pointers to process next sampels */
+      pIn += 4u;
+      pOut += 4u;
+
+
+      /* Decrement the numSamples loop counter */
+      blkCnt--;
+    }
+
+    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = numSamples % 0x4u;
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) * k */
+      /* Scale, saturate and then store the results in the destination buffer. */
+      in1 = *pIn++;
+
+      in2 = ((q63_t) in1 * scaleFract) >> 32;
+
+      out1 = in2 << totShift;
+
+      if(in2 != (out1 >> totShift))
+        out1 = 0x7FFFFFFF ^ (in2 >> 31);
+
+      *pOut++ = out1;
+
+      /* Decrement the numSamples loop counter */
+      blkCnt--;
+    }
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**        
+ * @} end of MatrixScale group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,209 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_sub_f32.c    
+*    
+* Description:	Floating-point matrix subtraction.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMatrix        
+ */
+
+/**        
+ * @defgroup MatrixSub Matrix Subtraction        
+ *        
+ * Subtract two matrices.        
+ * \image html MatrixSubtraction.gif "Subraction of two 3 x 3 matrices"        
+ *        
+ * The functions check to make sure that        
+ * <code>pSrcA</code>, <code>pSrcB</code>, and <code>pDst</code> have the same        
+ * number of rows and columns.        
+ */
+
+/**        
+ * @addtogroup MatrixSub        
+ * @{        
+ */
+
+/**        
+ * @brief Floating-point matrix subtraction        
+ * @param[in]       *pSrcA points to the first input matrix structure        
+ * @param[in]       *pSrcB points to the second input matrix structure        
+ * @param[out]      *pDst points to output matrix structure        
+ * @return     		The function returns either        
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.        
+ */
+
+arm_status arm_mat_sub_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+  arm_matrix_instance_f32 * pDst)
+{
+  float32_t *pIn1 = pSrcA->pData;                /* input data matrix pointer A */
+  float32_t *pIn2 = pSrcB->pData;                /* input data matrix pointer B */
+  float32_t *pOut = pDst->pData;                 /* output data matrix pointer  */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  float32_t inA1, inA2, inB1, inB2, out1, out2;  /* temporary variables */
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+  uint32_t numSamples;                           /* total number of elements in the matrix  */
+  uint32_t blkCnt;                               /* loop counters */
+  arm_status status;                             /* status of matrix subtraction */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numRows != pSrcB->numRows) ||
+     (pSrcA->numCols != pSrcB->numCols) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+  {
+    /* Total number of samples in the input matrix */
+    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+    /* Loop Unrolling */
+    blkCnt = numSamples >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) - B(m,n) */
+      /* Subtract and then store the results in the destination buffer. */
+      /* Read values from source A */
+      inA1 = pIn1[0];
+
+      /* Read values from source B */
+      inB1 = pIn2[0];
+
+      /* Read values from source A */
+      inA2 = pIn1[1];
+
+      /* out = sourceA - sourceB */
+      out1 = inA1 - inB1;
+
+      /* Read values from source B */
+      inB2 = pIn2[1];
+
+      /* Read values from source A */
+      inA1 = pIn1[2];
+
+      /* out = sourceA - sourceB */
+      out2 = inA2 - inB2;
+
+      /* Read values from source B */
+      inB1 = pIn2[2];
+
+      /* Store result in destination */
+      pOut[0] = out1;
+      pOut[1] = out2;
+
+      /* Read values from source A */
+      inA2 = pIn1[3];
+
+      /* Read values from source B */
+      inB2 = pIn2[3];
+
+      /* out = sourceA - sourceB */
+      out1 = inA1 - inB1;
+
+
+      /* out = sourceA - sourceB */
+      out2 = inA2 - inB2;
+
+      /* Store result in destination */
+      pOut[2] = out1;
+
+      /* Store result in destination */
+      pOut[3] = out2;
+
+
+      /* update pointers to process next sampels */
+      pIn1 += 4u;
+      pIn2 += 4u;
+      pOut += 4u;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = numSamples % 0x4u;
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) - B(m,n) */
+      /* Subtract and then store the results in the destination buffer. */
+      *pOut++ = (*pIn1++) - (*pIn2++);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**        
+ * @} end of MatrixSub group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,160 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_sub_q15.c    
+*    
+* Description:	Q15 Matrix subtraction    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixSub    
+ * @{    
+ */
+
+/**    
+ * @brief Q15 matrix subtraction.    
+ * @param[in]       *pSrcA points to the first input matrix structure    
+ * @param[in]       *pSrcB points to the second input matrix structure    
+ * @param[out]      *pDst points to output matrix structure    
+ * @return     		The function returns either    
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ *    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.    
+ */
+
+arm_status arm_mat_sub_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst)
+{
+  q15_t *pInA = pSrcA->pData;                    /* input data matrix pointer A */
+  q15_t *pInB = pSrcB->pData;                    /* input data matrix pointer B */
+  q15_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  uint32_t numSamples;                           /* total number of elements in the matrix */
+  uint32_t blkCnt;                               /* loop counters  */
+  arm_status status;                             /* status of matrix subtraction  */
+
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrcA->numRows != pSrcB->numRows) ||
+     (pSrcA->numCols != pSrcB->numCols) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* Total number of samples in the input matrix */
+    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+    /* Apply loop unrolling */
+    blkCnt = numSamples >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) - B(m,n) */
+      /* Subtract, Saturate and then store the results in the destination buffer. */
+      *__SIMD32(pOut)++ = __QSUB16(*__SIMD32(pInA)++, *__SIMD32(pInB)++);
+      *__SIMD32(pOut)++ = __QSUB16(*__SIMD32(pInA)++, *__SIMD32(pInB)++);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+     ** No loop unrolling is used. */
+    blkCnt = numSamples % 0x4u;
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) - B(m,n) */
+      /* Subtract and then store the results in the destination buffer. */
+      *pOut++ = (q15_t) __QSUB16(*pInA++, *pInB++);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = numSamples;
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) - B(m,n) */
+      /* Subtract and then store the results in the destination buffer. */
+      *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16);
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixSub group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,208 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_sub_q31.c    
+*    
+* Description:	Q31 matrix subtraction    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupMatrix        
+ */
+
+/**        
+ * @addtogroup MatrixSub        
+ * @{        
+ */
+
+/**        
+ * @brief Q31 matrix subtraction.        
+ * @param[in]       *pSrcA points to the first input matrix structure        
+ * @param[in]       *pSrcB points to the second input matrix structure        
+ * @param[out]      *pDst points to output matrix structure        
+ * @return     		The function returns either        
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.        
+ *        
+ * <b>Scaling and Overflow Behavior:</b>        
+ * \par        
+ * The function uses saturating arithmetic.        
+ * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.        
+ */
+
+
+arm_status arm_mat_sub_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst)
+{
+  q31_t *pIn1 = pSrcA->pData;                    /* input data matrix pointer A */
+  q31_t *pIn2 = pSrcB->pData;                    /* input data matrix pointer B */
+  q31_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  q31_t inA1, inB1;                              /* temporary variables */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  q31_t inA2, inB2;                              /* temporary variables */
+  q31_t out1, out2;                              /* temporary variables */
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+  uint32_t numSamples;                           /* total number of elements in the matrix  */
+  uint32_t blkCnt;                               /* loop counters */
+  arm_status status;                             /* status of matrix subtraction */
+
+
+#ifdef ARM_MATH_MATRIX_CHECK
+  /* Check for matrix mismatch condition  */
+  if((pSrcA->numRows != pSrcB->numRows) ||
+     (pSrcA->numCols != pSrcB->numCols) ||
+     (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif
+  {
+    /* Total number of samples in the input matrix */
+    numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+    /* Loop Unrolling */
+    blkCnt = numSamples >> 2u;
+
+    /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+     ** a second loop below computes the remaining 1 to 3 samples. */
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) - B(m,n) */
+      /* Subtract, saturate and then store the results in the destination buffer. */
+      /* Read values from source A */
+      inA1 = pIn1[0];
+
+      /* Read values from source B */
+      inB1 = pIn2[0];
+
+      /* Read values from source A */
+      inA2 = pIn1[1];
+
+      /* Subtract and saturate */
+      out1 = __QSUB(inA1, inB1);
+
+      /* Read values from source B */
+      inB2 = pIn2[1];
+
+      /* Read values from source A */
+      inA1 = pIn1[2];
+
+      /* Subtract and saturate */
+      out2 = __QSUB(inA2, inB2);
+
+      /* Read values from source B */
+      inB1 = pIn2[2];
+
+      /* Store result in destination */
+      pOut[0] = out1;
+      pOut[1] = out2;
+
+      /* Read values from source A */
+      inA2 = pIn1[3];
+
+      /* Read values from source B */
+      inB2 = pIn2[3];
+
+      /* Subtract and saturate */
+      out1 = __QSUB(inA1, inB1);
+
+      /* Subtract and saturate */
+      out2 = __QSUB(inA2, inB2);
+
+      /* Store result in destination */
+      pOut[2] = out1;
+      pOut[3] = out2;
+
+      /* update pointers to process next samples */
+      pIn1 += 4u;
+      pIn2 += 4u;
+      pOut += 4u;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* If the numSamples is not a multiple of 4, compute any remaining output samples here.        
+     ** No loop unrolling is used. */
+    blkCnt = numSamples % 0x4u;
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = numSamples;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+    while(blkCnt > 0u)
+    {
+      /* C(m,n) = A(m,n) - B(m,n) */
+      /* Subtract, saturate and then store the results in the destination buffer. */
+      inA1 = *pIn1++;
+      inB1 = *pIn2++;
+
+      inA1 = __QSUB(inA1, inB1);
+
+      *pOut++ = inA1;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**        
+ * @} end of MatrixSub group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,218 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_trans_f32.c    
+*    
+* Description:	Floating-point matrix transpose.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+/**    
+ * @defgroup MatrixTrans Matrix Transpose    
+ *    
+ * Tranposes a matrix.    
+ * Transposing an <code>M x N</code> matrix flips it around the center diagonal and results in an <code>N x M</code> matrix.    
+ * \image html MatrixTranspose.gif "Transpose of a 3 x 3 matrix"    
+ */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixTrans    
+ * @{    
+ */
+
+/**    
+  * @brief Floating-point matrix transpose.    
+  * @param[in]  *pSrc points to the input matrix    
+  * @param[out] *pDst points to the output matrix    
+  * @return 	The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>    
+  * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+  */
+
+
+arm_status arm_mat_trans_f32(
+  const arm_matrix_instance_f32 * pSrc,
+  arm_matrix_instance_f32 * pDst)
+{
+  float32_t *pIn = pSrc->pData;                  /* input data matrix pointer */
+  float32_t *pOut = pDst->pData;                 /* output data matrix pointer */
+  float32_t *px;                                 /* Temporary output data matrix pointer */
+  uint16_t nRows = pSrc->numRows;                /* number of rows */
+  uint16_t nColumns = pSrc->numCols;             /* number of columns */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  uint16_t blkCnt, i = 0u, row = nRows;          /* loop counters */
+  arm_status status;                             /* status of matrix transpose  */
+
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* Matrix transpose by exchanging the rows with columns */
+    /* row loop     */
+    do
+    {
+      /* Loop Unrolling */
+      blkCnt = nColumns >> 2;
+
+      /* The pointer px is set to starting address of the column being processed */
+      px = pOut + i;
+
+      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+       ** a second loop below computes the remaining 1 to 3 samples. */
+      while(blkCnt > 0u)        /* column loop */
+      {
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Decrement the column loop counter */
+        blkCnt--;
+      }
+
+      /* Perform matrix transpose for last 3 samples here. */
+      blkCnt = nColumns % 0x4u;
+
+      while(blkCnt > 0u)
+      {
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Decrement the column loop counter */
+        blkCnt--;
+      }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  uint16_t col, i = 0u, row = nRows;             /* loop counters */
+  arm_status status;                             /* status of matrix transpose  */
+
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* Matrix transpose by exchanging the rows with columns */
+    /* row loop     */
+    do
+    {
+      /* The pointer px is set to starting address of the column being processed */
+      px = pOut + i;
+
+      /* Initialize column loop counter */
+      col = nColumns;
+
+      while(col > 0u)
+      {
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+      i++;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);          /* row loop end  */
+
+    /* Set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixTrans group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,284 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_trans_q15.c    
+*    
+* Description:	Q15 matrix transpose.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixTrans    
+ * @{    
+ */
+
+/*    
+ * @brief Q15 matrix transpose.    
+ * @param[in]  *pSrc points to the input matrix    
+ * @param[out] *pDst points to the output matrix    
+ * @return 	The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>    
+ * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ */
+
+arm_status arm_mat_trans_q15(
+  const arm_matrix_instance_q15 * pSrc,
+  arm_matrix_instance_q15 * pDst)
+{
+  q15_t *pSrcA = pSrc->pData;                    /* input data matrix pointer */
+  q15_t *pOut = pDst->pData;                     /* output data matrix pointer */
+  uint16_t nRows = pSrc->numRows;                /* number of nRows */
+  uint16_t nColumns = pSrc->numCols;             /* number of nColumns */
+  uint16_t col, row = nRows, i = 0u;             /* row and column loop counters */
+  arm_status status;                             /* status of matrix transpose */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+  q31_t in;                                      /* variable to hold temporary output  */
+
+#else
+
+  q15_t in;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*      #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* Matrix transpose by exchanging the rows with columns */
+    /* row loop     */
+    do
+    {
+
+      /* Apply loop unrolling and exchange the columns with row elements */
+      col = nColumns >> 2u;
+
+      /* The pointer pOut is set to starting address of the column being processed */
+      pOut = pDst->pData + i;
+
+      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+       ** a second loop below computes the remaining 1 to 3 samples. */
+      while(col > 0u)
+      {
+#ifndef UNALIGNED_SUPPORT_DISABLE
+
+        /* Read two elements from the row */
+        in = *__SIMD32(pSrcA)++;
+
+        /* Unpack and store one element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *pOut = (q15_t) in;
+
+#else
+
+        *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer pOut to point to the next row of the transposed matrix */
+        pOut += nRows;
+
+        /* Unpack and store the second element in the destination */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#else
+
+        *pOut = (q15_t) in;
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer pOut to point to the next row of the transposed matrix */
+        pOut += nRows;
+
+        /* Read two elements from the row */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        in = *__SIMD32(pSrcA)++;
+
+#else
+
+        in = *__SIMD32(pSrcA)++;
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Unpack and store one element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *pOut = (q15_t) in;
+
+#else
+
+        *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+        /* Update the pointer pOut to point to the next row of the transposed matrix */
+        pOut += nRows;
+
+        /* Unpack and store the second element in the destination */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16);
+
+#else
+
+        *pOut = (q15_t) in;
+
+#endif /*    #ifndef ARM_MATH_BIG_ENDIAN    */
+
+#else	 
+        /* Read one element from the row */
+        in = *pSrcA++;
+
+        /* Store one element in the destination */
+        *pOut = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        pOut += nRows;
+
+        /* Read one element from the row */
+        in = *pSrcA++;
+
+        /* Store one element in the destination */
+        *pOut = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        pOut += nRows;
+
+        /* Read one element from the row */
+        in = *pSrcA++;
+
+        /* Store one element in the destination */
+        *pOut = in;
+ 
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        pOut += nRows;
+
+        /* Read one element from the row */
+        in = *pSrcA++;
+
+        /* Store one element in the destination */
+        *pOut = in;
+
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
+
+        /* Update the pointer pOut to point to the next row of the transposed matrix */
+        pOut += nRows;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+      /* Perform matrix transpose for last 3 samples here. */
+      col = nColumns % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* Matrix transpose by exchanging the rows with columns */
+    /* row loop     */
+    do
+    {
+      /* The pointer pOut is set to starting address of the column being processed */
+      pOut = pDst->pData + i;
+
+      /* Initialize column loop counter */
+      col = nColumns;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+      while(col > 0u)
+      {
+        /* Read and store the input element in the destination */
+        *pOut = *pSrcA++;
+
+        /* Update the pointer pOut to point to the next row of the transposed matrix */
+        pOut += nRows;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+      i++;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    } while(row > 0u);
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixTrans group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,210 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_mat_trans_q31.c    
+*    
+* Description:	Q31 matrix transpose.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupMatrix    
+ */
+
+/**    
+ * @addtogroup MatrixTrans    
+ * @{    
+ */
+
+/*    
+  * @brief Q31 matrix transpose.    
+  * @param[in]  *pSrc points to the input matrix    
+  * @param[out] *pDst points to the output matrix    
+  * @return 	The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>    
+  * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.    
+ */
+
+arm_status arm_mat_trans_q31(
+  const arm_matrix_instance_q31 * pSrc,
+  arm_matrix_instance_q31 * pDst)
+{
+  q31_t *pIn = pSrc->pData;                      /* input data matrix pointer  */
+  q31_t *pOut = pDst->pData;                     /* output data matrix pointer  */
+  q31_t *px;                                     /* Temporary output data matrix pointer */
+  uint16_t nRows = pSrc->numRows;                /* number of nRows */
+  uint16_t nColumns = pSrc->numCols;             /* number of nColumns  */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  uint16_t blkCnt, i = 0u, row = nRows;          /* loop counters */
+  arm_status status;                             /* status of matrix transpose */
+
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* Matrix transpose by exchanging the rows with columns */
+    /* row loop     */
+    do
+    {
+      /* Apply loop unrolling and exchange the columns with row elements */
+      blkCnt = nColumns >> 2u;
+
+      /* The pointer px is set to starting address of the column being processed */
+      px = pOut + i;
+
+      /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+       ** a second loop below computes the remaining 1 to 3 samples. */
+      while(blkCnt > 0u)
+      {
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Decrement the column loop counter */
+        blkCnt--;
+      }
+
+      /* Perform matrix transpose for last 3 samples here. */
+      blkCnt = nColumns % 0x4u;
+
+      while(blkCnt > 0u)
+      {
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Decrement the column loop counter */
+        blkCnt--;
+      }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  uint16_t col, i = 0u, row = nRows;             /* loop counters */
+  arm_status status;                             /* status of matrix transpose */
+
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+  /* Check for matrix mismatch condition */
+  if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows))
+  {
+    /* Set status as ARM_MATH_SIZE_MISMATCH */
+    status = ARM_MATH_SIZE_MISMATCH;
+  }
+  else
+#endif /*    #ifdef ARM_MATH_MATRIX_CHECK    */
+
+  {
+    /* Matrix transpose by exchanging the rows with columns */
+    /* row loop     */
+    do
+    {
+      /* The pointer px is set to starting address of the column being processed */
+      px = pOut + i;
+
+      /* Initialize column loop counter */
+      col = nColumns;
+
+      while(col > 0u)
+      {
+        /* Read and store the input element in the destination */
+        *px = *pIn++;
+
+        /* Update the pointer px to point to the next row of the transposed matrix */
+        px += nRows;
+
+        /* Decrement the column loop counter */
+        col--;
+      }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+      i++;
+
+      /* Decrement the row loop counter */
+      row--;
+
+    }
+    while(row > 0u);            /* row loop end */
+
+    /* set status as ARM_MATH_SUCCESS */
+    status = ARM_MATH_SUCCESS;
+  }
+
+  /* Return to application */
+  return (status);
+}
+
+/**    
+ * @} end of MatrixTrans group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,186 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_max_f32.c    
+*    
+* Description:	Maximum value of a floating-point vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @defgroup Max Maximum    
+ *    
+ * Computes the maximum value of an array of data.     
+ * The function returns both the maximum value and its position within the array.     
+ * There are separate functions for floating-point, Q31, Q15, and Q7 data types.    
+ */
+
+/**    
+ * @addtogroup Max    
+ * @{    
+ */
+
+
+/**    
+ * @brief Maximum value of a floating-point vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult maximum value returned here    
+ * @param[out]      *pIndex index of maximum value returned here    
+ * @return none.    
+ */
+
+void arm_max_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult,
+  uint32_t * pIndex)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t maxVal1, maxVal2, out;               /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex, count;              /* loop counter */
+
+  /* Initialise the count value. */
+  count = 0u;
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  /* Loop unrolling */
+  blkCnt = (blockSize - 1u) >> 2u;
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  while(blkCnt > 0u)
+  {
+    /* Initialize maxVal to the next consecutive values one by one */
+    maxVal1 = *pSrc++;
+
+    maxVal2 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal1;
+      outIndex = count + 1u;
+    }
+
+    maxVal1 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal2)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal2;
+      outIndex = count + 2u;
+    }
+
+    maxVal2 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal1;
+      outIndex = count + 3u;
+    }
+
+    /* compare for the maximum value */
+    if(out < maxVal2)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal2;
+      outIndex = count + 4u;
+    }
+
+    count += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* if (blockSize - 1u) is not multiple of 4 */
+  blkCnt = (blockSize - 1u) % 4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  float32_t maxVal1, out;                        /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex;                     /* loop counter */
+
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  blkCnt = (blockSize - 1u);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* Initialize maxVal to the next consecutive values one by one */
+    maxVal1 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and it's index */
+      out = maxVal1;
+      outIndex = blockSize - blkCnt;
+    }
+
+
+    /* Decrement the loop counter */
+    blkCnt--;
+
+  }
+
+  /* Store the maximum value and it's index into destination pointers */
+  *pResult = out;
+  *pIndex = outIndex;
+}
+
+/**    
+ * @} end of Max group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,176 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_max_q15.c    
+*    
+* Description:	Maximum value of a Q15 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup Max    
+ * @{    
+ */
+
+
+/**    
+ * @brief Maximum value of a Q15 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult maximum value returned here    
+ * @param[out]      *pIndex index of maximum value returned here    
+ * @return none.    
+ */
+
+void arm_max_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult,
+  uint32_t * pIndex)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q15_t maxVal1, maxVal2, out;                   /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex, count;              /* loop counter */
+
+  /* Initialise the count value. */
+  count = 0u;
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  /* Loop unrolling */
+  blkCnt = (blockSize - 1u) >> 2u;
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  while(blkCnt > 0u)
+  {
+    /* Initialize maxVal to the next consecutive values one by one */
+    maxVal1 = *pSrc++;
+
+    maxVal2 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal1;
+      outIndex = count + 1u;
+    }
+
+    maxVal1 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal2)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal2;
+      outIndex = count + 2u;
+    }
+
+    maxVal2 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal1;
+      outIndex = count + 3u;
+    }
+
+    /* compare for the maximum value */
+    if(out < maxVal2)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal2;
+      outIndex = count + 4u;
+    }
+
+    count += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* if (blockSize - 1u) is not multiple of 4 */
+  blkCnt = (blockSize - 1u) % 4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q15_t maxVal1, out;                            /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex;                     /* loop counter */
+
+  blkCnt = (blockSize - 1u);
+
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* Initialize maxVal to the next consecutive values one by one */
+    maxVal1 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and it's index */
+      out = maxVal1;
+      outIndex = blockSize - blkCnt;
+    }
+    /* Decrement the loop counter */
+    blkCnt--;
+
+  }
+
+  /* Store the maximum value and its index into destination pointers */
+  *pResult = out;
+  *pIndex = outIndex;
+}
+
+/**    
+ * @} end of Max group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,177 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_max_q31.c    
+*    
+* Description:	Maximum value of a Q31 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup Max    
+ * @{    
+ */
+
+
+/**    
+ * @brief Maximum value of a Q31 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult maximum value returned here    
+ * @param[out]      *pIndex index of maximum value returned here    
+ * @return none.    
+ */
+
+void arm_max_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult,
+  uint32_t * pIndex)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t maxVal1, maxVal2, out;                   /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex, count;              /* loop counter */
+
+  /* Initialise the count value. */
+  count = 0u;
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  /* Loop unrolling */
+  blkCnt = (blockSize - 1u) >> 2u;
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  while(blkCnt > 0u)
+  {
+    /* Initialize maxVal to the next consecutive values one by one */
+    maxVal1 = *pSrc++;
+
+    maxVal2 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal1;
+      outIndex = count + 1u;
+    }
+
+    maxVal1 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal2)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal2;
+      outIndex = count + 2u;
+    }
+
+    maxVal2 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal1;
+      outIndex = count + 3u;
+    }
+
+    /* compare for the maximum value */
+    if(out < maxVal2)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal2;
+      outIndex = count + 4u;
+    }
+
+    count += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* if (blockSize - 1u) is not multiple of 4 */
+  blkCnt = (blockSize - 1u) % 4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q31_t maxVal1, out;                            /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex;                     /* loop counter */
+
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  blkCnt = (blockSize - 1u);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* Initialize maxVal to the next consecutive values one by one */
+    maxVal1 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and it's index */
+      out = maxVal1;
+      outIndex = blockSize - blkCnt;
+    }
+
+    /* Decrement the loop counter */
+    blkCnt--;
+
+  }
+
+  /* Store the maximum value and its index into destination pointers */
+  *pResult = out;
+  *pIndex = outIndex;
+}
+
+/**    
+ * @} end of Max group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,177 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_max_q7.c    
+*    
+* Description:	Maximum value of a Q7 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup Max    
+ * @{    
+ */
+
+
+/**    
+ * @brief Maximum value of a Q7 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult maximum value returned here    
+ * @param[out]      *pIndex index of maximum value returned here    
+  * @return none.    
+ */
+
+void arm_max_q7(
+  q7_t * pSrc,
+  uint32_t blockSize,
+  q7_t * pResult,
+  uint32_t * pIndex)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q7_t maxVal1, maxVal2, out;                    /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex, count;              /* loop counter */
+
+  /* Initialise the count value. */
+  count = 0u;
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  /* Loop unrolling */
+  blkCnt = (blockSize - 1u) >> 2u;
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  while(blkCnt > 0u)
+  {
+    /* Initialize maxVal to the next consecutive values one by one */
+    maxVal1 = *pSrc++;
+
+    maxVal2 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal1;
+      outIndex = count + 1u;
+    }
+
+    maxVal1 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal2)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal2;
+      outIndex = count + 2u;
+    }
+
+    maxVal2 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal1;
+      outIndex = count + 3u;
+    }
+
+    /* compare for the maximum value */
+    if(out < maxVal2)
+    {
+      /* Update the maximum value and its index */
+      out = maxVal2;
+      outIndex = count + 4u;
+    }
+
+    count += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* if (blockSize - 1u) is not multiple of 4 */
+  blkCnt = (blockSize - 1u) % 4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q7_t maxVal1, out;                             /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex;                     /* loop counter */
+
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  blkCnt = (blockSize - 1u);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* Initialize maxVal to the next consecutive values one by one */
+    maxVal1 = *pSrc++;
+
+    /* compare for the maximum value */
+    if(out < maxVal1)
+    {
+      /* Update the maximum value and it's index */
+      out = maxVal1;
+      outIndex = blockSize - blkCnt;
+    }
+    /* Decrement the loop counter */
+    blkCnt--;
+
+  }
+
+  /* Store the maximum value and its index into destination pointers */
+  *pResult = out;
+  *pIndex = outIndex;
+
+}
+
+/**    
+ * @} end of Max group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,139 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_mean_f32.c    
+*    
+* Description:	Mean value of a floating-point vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @defgroup mean Mean    
+ *    
+ * Calculates the mean of the input vector. Mean is defined as the average of the elements in the vector.    
+ * The underlying algorithm is used:    
+ *    
+ * <pre>    
+ * 	Result = (pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]) / blockSize;    
+ * </pre>    
+ *    
+ * There are separate functions for floating-point, Q31, Q15, and Q7 data types.    
+ */
+
+/**    
+ * @addtogroup mean    
+ * @{    
+ */
+
+
+/**    
+ * @brief Mean value of a floating-point vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult mean value returned here    
+ * @return none.    
+ */
+
+
+void arm_mean_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult)
+{
+  float32_t sum = 0.0f;                          /* Temporary result storage */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t in1, in2, in3, in4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+    in3 = *pSrc++;
+    in4 = *pSrc++;
+
+    sum += in1;
+    sum += in2;
+    sum += in3;
+    sum += in4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    sum += *pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */
+  /* Store the result to the destination */
+  *pResult = sum / (float32_t) blockSize;
+}
+
+/**    
+ * @} end of mean group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,133 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_mean_q15.c    
+*    
+* Description:	Mean value of a Q15 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup mean    
+ * @{    
+ */
+
+/**    
+ * @brief Mean value of a Q15 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult mean value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using a 32-bit internal accumulator.    
+ * The input is represented in 1.15 format and is accumulated in a 32-bit     
+ * accumulator in 17.15 format.     
+ * There is no risk of internal overflow with this approach, and the     
+ * full precision of intermediate result is preserved.     
+ * Finally, the accumulator is saturated and truncated to yield a result of 1.15 format.    
+ *    
+ */
+
+
+void arm_mean_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult)
+{
+  q31_t sum = 0;                                 /* Temporary result storage */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    in = *__SIMD32(pSrc)++;
+    sum += ((in << 16) >> 16);
+    sum += (in >> 16);
+    in = *__SIMD32(pSrc)++;
+    sum += ((in << 16) >> 16);
+    sum += (in >> 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    sum += *pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */
+  /* Store the result to the destination */
+  *pResult = (q15_t) (sum / (q31_t)blockSize);
+}
+
+/**    
+ * @} end of mean group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,136 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_mean_q31.c    
+*    
+* Description:	Mean value of a Q31 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup mean    
+ * @{    
+ */
+
+/**    
+ * @brief Mean value of a Q31 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult mean value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *\par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * The input is represented in 1.31 format and is accumulated in a 64-bit    
+ * accumulator in 33.31 format.    
+ * There is no risk of internal overflow with this approach, and the     
+ * full precision of intermediate result is preserved.     
+ * Finally, the accumulator is truncated to yield a result of 1.31 format.    
+ *    
+ */
+
+
+void arm_mean_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult)
+{
+  q63_t sum = 0;                                 /* Temporary result storage */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2, in3, in4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+    in3 = *pSrc++;
+    in4 = *pSrc++;
+
+    sum += in1;
+    sum += in2;
+    sum += in3;
+    sum += in4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    sum += *pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */
+  /* Store the result to the destination */
+  *pResult = (q31_t) (sum / (int32_t) blockSize);
+}
+
+/**    
+ * @} end of mean group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,133 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_mean_q7.c    
+*    
+* Description:	Mean value of a Q7 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup mean    
+ * @{    
+ */
+
+/**    
+ * @brief Mean value of a Q7 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult mean value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function is implemented using a 32-bit internal accumulator.     
+ * The input is represented in 1.7 format and is accumulated in a 32-bit    
+ * accumulator in 25.7 format.    
+ * There is no risk of internal overflow with this approach, and the     
+ * full precision of intermediate result is preserved.     
+ * Finally, the accumulator is truncated to yield a result of 1.7 format.    
+ *    
+ */
+
+
+void arm_mean_q7(
+  q7_t * pSrc,
+  uint32_t blockSize,
+  q7_t * pResult)
+{
+  q31_t sum = 0;                                 /* Temporary result storage */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    in = *__SIMD32(pSrc)++;
+
+    sum += ((in << 24) >> 24);
+    sum += ((in << 16) >> 24);
+    sum += ((in << 8) >> 24);
+    sum += (in >> 24);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    sum += *pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize  */
+  /* Store the result to the destination */
+  *pResult = (q7_t) (sum / (int32_t) blockSize);
+}
+
+/**    
+ * @} end of mean group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,183 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_min_f32.c    
+*    
+* Description:	Minimum value of a floating-point vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @defgroup Min Minimum    
+ *    
+ * Computes the minimum value of an array of data.     
+ * The function returns both the minimum value and its position within the array.     
+ * There are separate functions for floating-point, Q31, Q15, and Q7 data types.    
+ */
+
+/**    
+ * @addtogroup Min    
+ * @{    
+ */
+
+
+/**    
+ * @brief Minimum value of a floating-point vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult minimum value returned here    
+ * @param[out]      *pIndex index of minimum value returned here    
+  * @return none.    
+ *    
+ */
+
+void arm_min_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult,
+  uint32_t * pIndex)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t minVal1, minVal2, out;               /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex, count;              /* loop counter */
+
+  /* Initialise the count value. */
+  count = 0u;
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  /* Loop unrolling */
+  blkCnt = (blockSize - 1u) >> 2u;
+
+  while(blkCnt > 0)
+  {
+    /* Initialize minVal to the next consecutive values one by one */
+    minVal1 = *pSrc++;
+    minVal2 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and its index */
+      out = minVal1;
+      outIndex = count + 1u;
+    }
+
+    minVal1 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal2)
+    {
+      /* Update the minimum value and its index */
+      out = minVal2;
+      outIndex = count + 2u;
+    }
+
+    minVal2 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and its index */
+      out = minVal1;
+      outIndex = count + 3u;
+    }
+
+    /* compare for the minimum value */
+    if(out > minVal2)
+    {
+      /* Update the minimum value and its index */
+      out = minVal2;
+      outIndex = count + 4u;
+    }
+
+    count += 4u;
+
+    blkCnt--;
+  }
+
+  /* if (blockSize - 1u ) is not multiple of 4 */
+  blkCnt = (blockSize - 1u) % 4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  float32_t minVal1, out;                        /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex;                     /* loop counter */
+
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  blkCnt = (blockSize - 1u);
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+  while(blkCnt > 0)
+  {
+    /* Initialize minVal to the next consecutive values one by one */
+    minVal1 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and it's index */
+      out = minVal1;
+      outIndex = blockSize - blkCnt;
+    }
+
+    blkCnt--;
+
+  }
+
+  /* Store the minimum value and it's index into destination pointers */
+  *pResult = out;
+  *pIndex = outIndex;
+}
+
+/**    
+ * @} end of Min group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,177 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_min_q15.c    
+*    
+* Description:	Minimum value of a Q15 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+
+/**    
+ * @addtogroup Min    
+ * @{    
+ */
+
+
+/**    
+ * @brief Minimum value of a Q15 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult minimum value returned here    
+ * @param[out]      *pIndex index of minimum value returned here    
+ * @return none.    
+ *    
+ */
+
+void arm_min_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult,
+  uint32_t * pIndex)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q15_t minVal1, minVal2, out;                   /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex, count;              /* loop counter */
+
+  /* Initialise the count value. */
+  count = 0u;
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  /* Loop unrolling */
+  blkCnt = (blockSize - 1u) >> 2u;
+
+  while(blkCnt > 0)
+  {
+    /* Initialize minVal to the next consecutive values one by one */
+    minVal1 = *pSrc++;
+    minVal2 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and its index */
+      out = minVal1;
+      outIndex = count + 1u;
+    }
+
+    minVal1 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal2)
+    {
+      /* Update the minimum value and its index */
+      out = minVal2;
+      outIndex = count + 2u;
+    }
+
+    minVal2 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and its index */
+      out = minVal1;
+      outIndex = count + 3u;
+    }
+
+    /* compare for the minimum value */
+    if(out > minVal2)
+    {
+      /* Update the minimum value and its index */
+      out = minVal2;
+      outIndex = count + 4u;
+    }
+
+    count += 4u;
+
+    blkCnt--;
+  }
+
+  /* if (blockSize - 1u ) is not multiple of 4 */
+  blkCnt = (blockSize - 1u) % 4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q15_t minVal1, out;                            /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex;                     /* loop counter */
+
+  blkCnt = (blockSize - 1u);
+
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+  while(blkCnt > 0)
+  {
+    /* Initialize minVal to the next consecutive values one by one */
+    minVal1 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and it's index */
+      out = minVal1;
+      outIndex = blockSize - blkCnt;
+    }
+
+    blkCnt--;
+
+  }
+
+
+
+  /* Store the minimum value and its index into destination pointers */
+  *pResult = out;
+  *pIndex = outIndex;
+}
+
+/**    
+ * @} end of Min group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,176 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_min_q31.c    
+*    
+* Description:	Minimum value of a Q31 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+
+/**    
+ * @addtogroup Min    
+ * @{    
+ */
+
+
+/**    
+ * @brief Minimum value of a Q31 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult minimum value returned here    
+ * @param[out]      *pIndex index of minimum value returned here    
+ * @return none.    
+ *    
+ */
+
+void arm_min_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult,
+  uint32_t * pIndex)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t minVal1, minVal2, out;                   /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex, count;              /* loop counter */
+
+  /* Initialise the count value. */
+  count = 0u;
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+
+  /* Loop unrolling */
+  blkCnt = (blockSize - 1u) >> 2u;
+
+  while(blkCnt > 0)
+  {
+    /* Initialize minVal to the next consecutive values one by one */
+    minVal1 = *pSrc++;
+    minVal2 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and its index */
+      out = minVal1;
+      outIndex = count + 1u;
+    }
+
+    minVal1 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal2)
+    {
+      /* Update the minimum value and its index */
+      out = minVal2;
+      outIndex = count + 2u;
+    }
+
+    minVal2 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and its index */
+      out = minVal1;
+      outIndex = count + 3u;
+    }
+
+    /* compare for the minimum value */
+    if(out > minVal2)
+    {
+      /* Update the minimum value and its index */
+      out = minVal2;
+      outIndex = count + 4u;
+    }
+
+    count += 4u;
+
+    blkCnt--;
+  }
+
+  /* if (blockSize - 1u ) is not multiple of 4 */
+  blkCnt = (blockSize - 1u) % 4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q31_t minVal1, out;                            /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex;                     /* loop counter */
+
+  blkCnt = (blockSize - 1u);
+
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+  while(blkCnt > 0)
+  {
+    /* Initialize minVal to the next consecutive values one by one */
+    minVal1 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and it's index */
+      out = minVal1;
+      outIndex = blockSize - blkCnt;
+    }
+
+    blkCnt--;
+
+  }
+
+  /* Store the minimum value and its index into destination pointers */
+  *pResult = out;
+  *pIndex = outIndex;
+}
+
+/**    
+ * @} end of Min group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,178 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_min_q7.c    
+*    
+* Description:	Minimum value of a Q7 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup Min    
+ * @{    
+ */
+
+
+/**    
+ * @brief Minimum value of a Q7 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult minimum value returned here    
+ * @param[out]      *pIndex index of minimum value returned here    
+ * @return none.    
+ *    
+ */
+
+void arm_min_q7(
+  q7_t * pSrc,
+  uint32_t blockSize,
+  q7_t * pResult,
+  uint32_t * pIndex)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q7_t minVal1, minVal2, out;                    /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex, count;              /* loop counter */
+
+  /* Initialise the count value. */
+  count = 0u;
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  /* Loop unrolling */
+  blkCnt = (blockSize - 1u) >> 2u;
+
+  while(blkCnt > 0)
+  {
+    /* Initialize minVal to the next consecutive values one by one */
+    minVal1 = *pSrc++;
+    minVal2 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and its index */
+      out = minVal1;
+      outIndex = count + 1u;
+    }
+
+    minVal1 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal2)
+    {
+      /* Update the minimum value and its index */
+      out = minVal2;
+      outIndex = count + 2u;
+    }
+
+    minVal2 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and its index */
+      out = minVal1;
+      outIndex = count + 3u;
+    }
+
+    /* compare for the minimum value */
+    if(out > minVal2)
+    {
+      /* Update the minimum value and its index */
+      out = minVal2;
+      outIndex = count + 4u;
+    }
+
+    count += 4u;
+
+    blkCnt--;
+  }
+
+  /* if (blockSize - 1u ) is not multiple of 4 */
+  blkCnt = (blockSize - 1u) % 4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q7_t minVal1, out;                             /* Temporary variables to store the output value. */
+  uint32_t blkCnt, outIndex;                     /* loop counter */
+
+  /* Initialise the index value to zero. */
+  outIndex = 0u;
+  /* Load first input value that act as reference value for comparision */
+  out = *pSrc++;
+
+  blkCnt = (blockSize - 1u);
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+  while(blkCnt > 0)
+  {
+    /* Initialize minVal to the next consecutive values one by one */
+    minVal1 = *pSrc++;
+
+    /* compare for the minimum value */
+    if(out > minVal1)
+    {
+      /* Update the minimum value and it's index */
+      out = minVal1;
+      outIndex = blockSize - blkCnt;
+    }
+
+    blkCnt--;
+
+  }
+
+  /* Store the minimum value and its index into destination pointers */
+  *pResult = out;
+  *pIndex = outIndex;
+
+
+}
+
+/**    
+ * @} end of Min group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,143 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_power_f32.c    
+*    
+* Description:	Sum of the squares of the elements of a floating-point vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @defgroup power Power    
+ *    
+ * Calculates the sum of the squares of the elements in the input vector.    
+ * The underlying algorithm is used:    
+ *    
+ * <pre>    
+ * 	Result = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + pSrc[2] * pSrc[2] + ... + pSrc[blockSize-1] * pSrc[blockSize-1];    
+ * </pre>    
+ *   
+ * There are separate functions for floating point, Q31, Q15, and Q7 data types.     
+ */
+
+/**    
+ * @addtogroup power    
+ * @{    
+ */
+
+
+/**    
+ * @brief Sum of the squares of the elements of a floating-point vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult sum of the squares value returned here    
+ * @return none.    
+ *    
+ */
+
+
+void arm_power_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult)
+{
+  float32_t sum = 0.0f;                          /* accumulator */
+  float32_t in;                                  /* Temporary variable to store input value */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute Power and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += in * in;
+    in = *pSrc++;
+    sum += in * in;
+    in = *pSrc++;
+    sum += in * in;
+    in = *pSrc++;
+    sum += in * in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* compute power and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += in * in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Store the result to the destination */
+  *pResult = sum;
+}
+
+/**    
+ * @} end of power group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,152 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_power_q15.c    
+*    
+* Description:	Sum of the squares of the elements of a Q15 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup power    
+ * @{    
+ */
+
+/**    
+ * @brief Sum of the squares of the elements of a Q15 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult sum of the squares value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.     
+ * The input is represented in 1.15 format.   
+ * Intermediate multiplication yields a 2.30 format, and this    
+ * result is added without saturation to a 64-bit accumulator in 34.30 format.    
+ * With 33 guard bits in the accumulator, there is no risk of overflow, and the    
+ * full precision of the intermediate multiplication is preserved.    
+ * Finally, the return result is in 34.30 format.     
+ *    
+ */
+
+void arm_power_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q63_t * pResult)
+{
+  q63_t sum = 0;                                 /* Temporary result storage */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t in32;                                    /* Temporary variable to store input value */
+  q15_t in16;                                    /* Temporary variable to store input value */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /* loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute Power and then store the result in a temporary variable, sum. */
+    in32 = *__SIMD32(pSrc)++;
+    sum = __SMLALD(in32, in32, sum);
+    in32 = *__SIMD32(pSrc)++;
+    sum = __SMLALD(in32, in32, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute Power and then store the result in a temporary variable, sum. */
+    in16 = *pSrc++;
+    sum = __SMLALD(in16, in16, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q15_t in;                                      /* Temporary variable to store input value */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute Power and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += ((q31_t) in * in);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  /* Store the results in 34.30 format  */
+  *pResult = sum;
+}
+
+/**    
+ * @} end of power group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,143 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_power_q31.c    
+*    
+* Description:	Sum of the squares of the elements of a Q31 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup power    
+ * @{    
+ */
+
+/**    
+ * @brief Sum of the squares of the elements of a Q31 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult sum of the squares value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * The input is represented in 1.31 format.    
+ * Intermediate multiplication yields a 2.62 format, and this    
+ * result is truncated to 2.48 format by discarding the lower 14 bits.    
+ * The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format.    
+ * With 15 guard bits in the accumulator, there is no risk of overflow, and the    
+ * full precision of the intermediate multiplication is preserved.    
+ * Finally, the return result is in 16.48 format.     
+ *    
+ */
+
+void arm_power_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q63_t * pResult)
+{
+  q63_t sum = 0;                                 /* Temporary result storage */
+  q31_t in;
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute Power then shift intermediate results by 14 bits to maintain 16.48 format and then store the result in a temporary variable sum, providing 15 guard bits. */
+    in = *pSrc++;
+    sum += ((q63_t) in * in) >> 14u;
+
+    in = *pSrc++;
+    sum += ((q63_t) in * in) >> 14u;
+
+    in = *pSrc++;
+    sum += ((q63_t) in * in) >> 14u;
+
+    in = *pSrc++;
+    sum += ((q63_t) in * in) >> 14u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute Power and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += ((q63_t) in * in) >> 14u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Store the results in 16.48 format  */
+  *pResult = sum;
+}
+
+/**    
+ * @} end of power group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,141 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_power_q7.c    
+*    
+* Description:	Sum of the squares of the elements of a Q7 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup power    
+ * @{    
+ */
+
+/**    
+ * @brief Sum of the squares of the elements of a Q7 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult sum of the squares value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 32-bit internal accumulator.     
+ * The input is represented in 1.7 format.   
+ * Intermediate multiplication yields a 2.14 format, and this    
+ * result is added without saturation to an accumulator in 18.14 format.    
+ * With 17 guard bits in the accumulator, there is no risk of overflow, and the    
+ * full precision of the intermediate multiplication is preserved.    
+ * Finally, the return result is in 18.14 format.     
+ *    
+ */
+
+void arm_power_q7(
+  q7_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult)
+{
+  q31_t sum = 0;                                 /* Temporary result storage */
+  q7_t in;                                       /* Temporary variable to store input */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t input1;                                  /* Temporary variable to store packed input */
+  q31_t in1, in2;                                /* Temporary variables to store input */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* Reading two inputs of pSrc vector and packing */
+    input1 = *__SIMD32(pSrc)++;
+
+    in1 = __SXTB16(__ROR(input1, 8));
+    in2 = __SXTB16(input1);
+
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* calculate power and accumulate to accumulator */
+    sum = __SMLAD(in1, in1, sum);
+    sum = __SMLAD(in2, in2, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute Power and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += ((q15_t) in * in);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Store the result in 18.14 format  */
+  *pResult = sum;
+}
+
+/**    
+ * @} end of power group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,141 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_rms_f32.c    
+*    
+* Description:	Root mean square value of an array of F32 type    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @defgroup RMS Root mean square (RMS)    
+ *    
+ *     
+ * Calculates the Root Mean Sqaure of the elements in the input vector.    
+ * The underlying algorithm is used:    
+ *    
+ * <pre>    
+ * 	Result = sqrt(((pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]) / blockSize));    
+ * </pre>    
+ *   
+ * There are separate functions for floating point, Q31, and Q15 data types.     
+ */
+
+/**    
+ * @addtogroup RMS    
+ * @{    
+ */
+
+
+/**    
+ * @brief Root Mean Square of the elements of a floating-point vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult rms value returned here    
+ * @return none.    
+ *    
+ */
+
+void arm_rms_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult)
+{
+  float32_t sum = 0.0f;                          /* Accumulator */
+  float32_t in;                                  /* Tempoprary variable to store input value */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute sum of the squares and then store the result in a temporary variable, sum  */
+    in = *pSrc++;
+    sum += in * in;
+    in = *pSrc++;
+    sum += in * in;
+    in = *pSrc++;
+    sum += in * in;
+    in = *pSrc++;
+    sum += in * in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute sum of the squares and then store the results in a temporary variable, sum  */
+    in = *pSrc++;
+    sum += in * in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Rms and store the result in the destination */
+  arm_sqrt_f32(sum / (float32_t) blockSize, pResult);
+}
+
+/**    
+ * @} end of RMS group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,153 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_rms_q15.c    
+*    
+* Description:	Root Mean Square of the elements of a Q15 vector.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @addtogroup RMS    
+ * @{    
+ */
+
+/**    
+ * @brief Root Mean Square of the elements of a Q15 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult rms value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * The input is represented in 1.15 format.    
+ * Intermediate multiplication yields a 2.30 format, and this    
+ * result is added without saturation to a 64-bit accumulator in 34.30 format.    
+ * With 33 guard bits in the accumulator, there is no risk of overflow, and the    
+ * full precision of the intermediate multiplication is preserved.    
+ * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower     
+ * 15 bits, and then saturated to yield a result in 1.15 format.    
+ *    
+ */
+
+void arm_rms_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult)
+{
+  q63_t sum = 0;                                 /* accumulator */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t in;                                      /* temporary variable to store the input value */
+  q15_t in1;                                     /* temporary variable to store the input value */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /* loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute sum of the squares and then store the results in a temporary variable, sum */
+    in = *__SIMD32(pSrc)++;
+    sum = __SMLALD(in, in, sum);
+    in = *__SIMD32(pSrc)++;
+    sum = __SMLALD(in, in, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute sum of the squares and then store the results in a temporary variable, sum */
+    in1 = *pSrc++;
+    sum = __SMLALD(in1, in1, sum);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Truncating and saturating the accumulator to 1.15 format */
+  /* Store the result in the destination */
+  arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q15_t in;                                      /* temporary variable to store the input value */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute sum of the squares and then store the results in a temporary variable, sum */
+    in = *pSrc++;
+    sum += ((q31_t) in * in);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Truncating and saturating the accumulator to 1.15 format */
+  /* Store the result in the destination */
+  arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of RMS group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,150 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_rms_q31.c    
+*    
+* Description:	Root Mean Square of the elements of a Q31 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @addtogroup RMS        
+ * @{        
+ */
+
+
+/**        
+ * @brief Root Mean Square of the elements of a Q31 vector.        
+ * @param[in]       *pSrc points to the input vector        
+ * @param[in]       blockSize length of the input vector        
+ * @param[out]      *pResult rms value returned here        
+ * @return none.        
+ *        
+ * @details        
+ * <b>Scaling and Overflow Behavior:</b>        
+ *        
+ *\par        
+ * The function is implemented using an internal 64-bit accumulator.        
+ * The input is represented in 1.31 format, and intermediate multiplication        
+ * yields a 2.62 format.        
+ * The accumulator maintains full precision of the intermediate multiplication results,         
+ * but provides only a single guard bit.        
+ * There is no saturation on intermediate additions.        
+ * If the accumulator overflows, it wraps around and distorts the result.         
+ * In order to avoid overflows completely, the input signal must be scaled down by         
+ * log2(blockSize) bits, as a total of blockSize additions are performed internally.         
+ * Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value.        
+ *        
+ */
+
+void arm_rms_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult)
+{
+  q63_t sum = 0;                                 /* accumulator */
+  q31_t in;                                      /* Temporary variable to store the input */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t in1, in2, in3, in4;                      /* Temporary input variables */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 8 outputs at a time.        
+   ** a second loop below computes the remaining 1 to 7 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute sum of the squares and then store the result in a temporary variable, sum */
+    /* read two samples from source buffer */
+    in1 = pSrc[0];
+    in2 = pSrc[1];
+
+    /* calculate power and accumulate to accumulator */
+    sum += (q63_t) in1 *in1;
+    sum += (q63_t) in2 *in2;
+
+    /* read two samples from source buffer */
+    in3 = pSrc[2];
+    in4 = pSrc[3];
+
+    /* calculate power and accumulate to accumulator */
+    sum += (q63_t) in3 *in3;
+    sum += (q63_t) in4 *in4;
+
+
+    /* update source buffer to process next samples */
+    pSrc += 4u;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 8, compute any remaining output samples here.        
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */
+    /* Compute sum of the squares and then store the results in a temporary variable, sum */
+    in = *pSrc++;
+    sum += (q63_t) in *in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Convert data in 2.62 to 1.31 by 31 right shifts and saturate */
+  /* Compute Rms and store the result in the destination vector */
+  arm_sqrt_q31(clip_q63_to_q31((sum / (q63_t) blockSize) >> 31), pResult);
+}
+
+/**        
+ * @} end of RMS group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,208 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_std_f32.c    
+*    
+* Description:	Standard deviation of the elements of a floating-point vector.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @defgroup STD Standard deviation    
+ *    
+ * Calculates the standard deviation of the elements in the input vector.     
+ * The underlying algorithm is used:    
+ *   
+ * <pre>    
+ * 	Result = sqrt((sumOfSquares - sum<sup>2</sup> / blockSize) / (blockSize - 1))   
+ *   
+ *	   where, sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]   
+ *   
+ *	                   sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]   
+ * </pre>   
+ *    
+ * There are separate functions for floating point, Q31, and Q15 data types.    
+ */
+
+/**    
+ * @addtogroup STD    
+ * @{    
+ */
+
+
+/**    
+ * @brief Standard deviation of the elements of a floating-point vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult standard deviation value returned here    
+ * @return none.    
+ *    
+ */
+
+
+void arm_std_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult)
+{
+  float32_t sum = 0.0f;                          /* Temporary result storage */
+  float32_t sumOfSquares = 0.0f;                 /* Sum of squares */
+  float32_t in;                                  /* input value */
+  uint32_t blkCnt;                               /* loop counter */
+   
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t meanOfSquares, mean, squareOfMean;
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1])  */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples    
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = sumOfSquares / ((float32_t) blockSize - 1.0f);
+
+  /* Compute mean of all input values */
+  mean = sum / (float32_t) blockSize;
+
+  /* Compute square of mean */
+  squareOfMean = (mean * mean) * (((float32_t) blockSize) /
+                                  ((float32_t) blockSize - 1.0f));
+
+  /* Compute standard deviation and then store the result to the destination */
+  arm_sqrt_f32((meanOfSquares - squareOfMean), pResult);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  float32_t squareOfSum;                         /* Square of Sum */
+  float32_t var;                                 /* Temporary varaince storage */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples     
+     * and then store the result in a temporary variable, sumOfSquares. */
+    in = *pSrc++;
+    sumOfSquares += in * in;
+
+    /* C = (A[0] + A[1] + ... + A[blockSize-1]) */
+    /* Compute Sum of the input samples     
+     * and then store the result in a temporary variable, sum. */
+    sum += in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute the square of sum */
+  squareOfSum = ((sum * sum) / (float32_t) blockSize);
+
+  /* Compute the variance */
+  var = ((sumOfSquares - squareOfSum) / (float32_t) (blockSize - 1.0f));
+
+  /* Compute standard deviation and then store the result to the destination */
+  arm_sqrt_f32(var, pResult);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of STD group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,195 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_std_q15.c    
+*    
+* Description:	Standard deviation of an array of Q15 type.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup STD    
+ * @{    
+ */
+
+/**    
+ * @brief Standard deviation of the elements of a Q15 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult standard deviation value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * The input is represented in 1.15 format.   
+ * Intermediate multiplication yields a 2.30 format, and this    
+ * result is added without saturation to a 64-bit accumulator in 34.30 format.    
+ * With 33 guard bits in the accumulator, there is no risk of overflow, and the    
+ * full precision of the intermediate multiplication is preserved.    
+ * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower     
+ * 15 bits, and then saturated to yield a result in 1.15 format.    
+ */
+
+void arm_std_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult)
+{
+  q31_t sum = 0;                                 /* Accumulator */
+  q31_t meanOfSquares, squareOfMean;             /* square of mean and mean of square */
+  uint32_t blkCnt;                               /* loop counter */
+  q63_t sumOfSquares = 0;                        /* Accumulator */
+   
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t in;                                      /* input value */
+  q15_t in1;                                     /* input value */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1])  */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *__SIMD32(pSrc)++;
+    sum += ((in << 16) >> 16);
+    sum += (in >> 16);
+    sumOfSquares = __SMLALD(in, in, sumOfSquares);
+    in = *__SIMD32(pSrc)++;
+    sum += ((in << 16) >> 16);
+    sum += (in >> 16);
+    sumOfSquares = __SMLALD(in, in, sumOfSquares);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in1 = *pSrc++;
+    sumOfSquares = __SMLALD(in1, in1, sumOfSquares);
+    sum += in1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples    
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1));
+
+  /* Compute square of mean */
+  squareOfMean = (q31_t) ((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
+
+  /* mean of the squares minus the square of the mean. */
+  /* Compute standard deviation and store the result to the destination */
+  arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15, 16u), pResult);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q15_t in;                                      /* input value */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples     
+     * and then store the result in a temporary variable, sumOfSquares. */
+    in = *pSrc++;
+    sumOfSquares += (in * in);
+
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    /* Compute sum of all input values and then store the result in a temporary variable, sum. */
+    sum += in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples     
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1));
+
+  /* Compute square of mean */
+  squareOfMean = (q31_t) ((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
+
+  /* mean of the squares minus the square of the mean. */
+  /* Compute standard deviation and store the result to the destination */
+  arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15, 16u), pResult);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+}
+
+/**    
+ * @} end of STD group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,186 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_std_q31.c    
+*    
+* Description:	Standard deviation of an array of Q31 type.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup STD    
+ * @{    
+ */
+
+
+/**    
+ * @brief Standard deviation of the elements of a Q31 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult standard deviation value returned here    
+ * @return none.    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ *\par    
+ * The function is implemented using an internal 64-bit accumulator.        
+ * The input is represented in 1.31 format, which is then downshifted by 8 bits
+ * which yields 1.23, and intermediate multiplication yields a 2.46 format.        
+ * The accumulator maintains full precision of the intermediate multiplication results,         
+ * but provides only a 16 guard bits.        
+ * There is no saturation on intermediate additions.        
+ * If the accumulator overflows it wraps around and distorts the result.        
+ * In order to avoid overflows completely the input signal must be scaled down by         
+ * log2(blockSize)-8 bits, as a total of blockSize additions are performed internally.  
+ * After division, internal variables should be Q18.46 
+ * Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value. 
+ *    
+ */
+
+
+void arm_std_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult)
+{
+  q63_t sum = 0;                                 /* Accumulator */
+  q63_t meanOfSquares, squareOfMean;             /* square of mean and mean of square */
+  q31_t in;                                      /* input value */
+  uint32_t blkCnt;                               /* loop counter */
+  q63_t sumOfSquares = 0;                        /* Accumulator */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+   
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1])  */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples    
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples     
+     * and then store the result in a temporary variable, sumOfSquares. */
+    in = *pSrc++ >> 8;
+    sumOfSquares += ((q63_t) (in) * (in));
+
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    /* Compute sum of all input values and then store the result in a temporary variable, sum. */
+    sum += in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples     
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  /* Compute square of mean */
+  squareOfMean = sum * sum / (q63_t)(blockSize * (blockSize - 1u));
+
+  /* Compute standard deviation and then store the result to the destination */
+  arm_sqrt_q31((meanOfSquares - squareOfMean) >> 15, pResult);
+
+}
+
+/**    
+ * @} end of STD group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,204 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_var_f32.c    
+*    
+* Description:	Variance of the elements of a floating-point vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @defgroup variance  Variance    
+ *    
+ * Calculates the variance of the elements in the input vector.    
+ * The underlying algorithm is used:    
+ *    
+ * <pre>    
+ * 	Result = (sumOfSquares - sum<sup>2</sup> / blockSize) / (blockSize - 1)   
+ *   
+ *	   where, sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]   
+ *   
+ *	                   sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]   
+ * </pre>   
+ *    
+ * There are separate functions for floating point, Q31, and Q15 data types.    
+ */
+
+/**    
+ * @addtogroup variance    
+ * @{    
+ */
+
+
+/**    
+ * @brief Variance of the elements of a floating-point vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult variance value returned here    
+ * @return none.    
+ *    
+ */
+
+
+void arm_var_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult)
+{
+
+  float32_t sum = 0.0f;                          /* Temporary result storage */
+  float32_t sumOfSquares = 0.0f;                 /* Sum of squares */
+  float32_t in;                                  /* input value */
+  uint32_t blkCnt;                               /* loop counter */
+  
+#ifndef ARM_MATH_CM0_FAMILY
+   
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  float32_t meanOfSquares, mean, squareOfMean;   /* Temporary variables */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1])  */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *pSrc++;
+    sum += in;
+    sumOfSquares += in * in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples    
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = sumOfSquares / ((float32_t) blockSize - 1.0f);
+
+  /* Compute mean of all input values */
+  mean = sum / (float32_t) blockSize;
+
+  /* Compute square of mean */
+  squareOfMean = (mean * mean) * (((float32_t) blockSize) /
+                                  ((float32_t) blockSize - 1.0f));
+
+  /* Compute variance and then store the result to the destination */
+  *pResult = meanOfSquares - squareOfMean;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  float32_t squareOfSum;                         /* Square of Sum */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples     
+     * and then store the result in a temporary variable, sumOfSquares. */
+    in = *pSrc++;
+    sumOfSquares += in * in;
+
+    /* C = (A[0] + A[1] + ... + A[blockSize-1]) */
+    /* Compute Sum of the input samples     
+     * and then store the result in a temporary variable, sum. */
+    sum += in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute the square of sum */
+  squareOfSum = ((sum * sum) / (float32_t) blockSize);
+
+  /* Compute the variance */
+  *pResult = ((sumOfSquares - squareOfSum) / (float32_t) (blockSize - 1.0f));
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of variance group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,195 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_var_q15.c    
+*    
+* Description:	Variance of an array of Q15 type.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupStats    
+ */
+
+/**    
+ * @addtogroup variance    
+ * @{    
+ */
+
+/**    
+ * @brief Variance of the elements of a Q15 vector.    
+ * @param[in]       *pSrc points to the input vector    
+ * @param[in]       blockSize length of the input vector    
+ * @param[out]      *pResult variance value returned here    
+ * @return none.    
+ *    
+ * @details    
+ * <b>Scaling and Overflow Behavior:</b>    
+ *    
+ * \par    
+ * The function is implemented using a 64-bit internal accumulator.    
+ * The input is represented in 1.15 format.   
+ * Intermediate multiplication yields a 2.30 format, and this    
+ * result is added without saturation to a 64-bit accumulator in 34.30 format.    
+ * With 33 guard bits in the accumulator, there is no risk of overflow, and the    
+ * full precision of the intermediate multiplication is preserved.    
+ * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower     
+ * 15 bits, and then saturated to yield a result in 1.15 format.    
+ *    
+ */
+
+
+void arm_var_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult)
+{
+
+  q31_t sum = 0;                                 /* Accumulator */
+  q31_t meanOfSquares, squareOfMean;             /* square of mean and mean of square */
+  uint32_t blkCnt;                               /* loop counter */
+  q63_t sumOfSquares = 0;                        /* Accumulator */
+   
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t in;                                      /* input value */
+  q15_t in1;                                     /* input value */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1])  */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *__SIMD32(pSrc)++;
+    sum += ((in << 16) >> 16);
+    sum += (in >> 16);
+    sumOfSquares = __SMLALD(in, in, sumOfSquares);
+    in = *__SIMD32(pSrc)++;
+    sum += ((in << 16) >> 16);
+    sum += (in >> 16);
+    sumOfSquares = __SMLALD(in, in, sumOfSquares);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in1 = *pSrc++;
+    sumOfSquares = __SMLALD(in1, in1, sumOfSquares);
+    sum += in1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples    
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = (q31_t) (sumOfSquares / (q63_t)(blockSize - 1));
+
+  /* Compute square of mean */
+  squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
+
+  /* mean of the squares minus the square of the mean. */
+  *pResult = (meanOfSquares - squareOfMean) >> 15;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q15_t in;                                      /* input value */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples     
+     * and then store the result in a temporary variable, sumOfSquares. */
+    in = *pSrc++;
+    sumOfSquares += (in * in);
+
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    /* Compute sum of all input values and then store the result in a temporary variable, sum. */
+    sum += in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples     
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = (q31_t) (sumOfSquares / (q63_t)(blockSize - 1));
+
+  /* Compute square of mean */
+  squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
+
+  /* mean of the squares minus the square of the mean. */
+  *pResult = (meanOfSquares - squareOfMean) >> 15;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of variance group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,187 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_var_q31.c    
+*    
+* Description:	Variance of an array of Q31 type.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**        
+ * @ingroup groupStats        
+ */
+
+/**        
+ * @addtogroup variance        
+ * @{        
+ */
+
+/**        
+ * @brief Variance of the elements of a Q31 vector.        
+ * @param[in]       *pSrc points to the input vector        
+ * @param[in]       blockSize length of the input vector        
+ * @param[out]      *pResult variance value returned here        
+ * @return none.        
+ *        
+ * @details        
+ * <b>Scaling and Overflow Behavior:</b>        
+ *        
+ *\par        
+ * The function is implemented using an internal 64-bit accumulator.        
+ * The input is represented in 1.31 format, which is then downshifted by 8 bits
+ * which yields 1.23, and intermediate multiplication yields a 2.46 format.        
+ * The accumulator maintains full precision of the intermediate multiplication results,         
+ * but provides only a 16 guard bits.        
+ * There is no saturation on intermediate additions.        
+ * If the accumulator overflows it wraps around and distorts the result.        
+ * In order to avoid overflows completely the input signal must be scaled down by         
+ * log2(blockSize)-8 bits, as a total of blockSize additions are performed internally.  
+ * After division, internal variables should be Q18.46 
+ * Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value.        
+ *        
+ */
+
+
+void arm_var_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult)
+{
+  q63_t sum = 0;                                 /* Accumulator */
+  q63_t meanOfSquares, squareOfMean;             /* square of mean and mean of square */
+  q31_t in;                                      /* input value */
+  uint32_t blkCnt;                               /* loop counter */
+  q63_t sumOfSquares = 0;                        /* Accumulator */
+
+	if(blockSize == 1)
+	{
+		*pResult = 0;
+		return;
+	}
+   
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1])  */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples    
+     * and then store the result in a temporary variable, sum. */
+    in = *pSrc++ >> 8;
+    sum += in;
+    sumOfSquares += ((q63_t) (in) * (in));
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples    
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1);
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+    /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+    /* Compute Sum of squares of the input samples     
+     * and then store the result in a temporary variable, sumOfSquares. */
+    in = *pSrc++ >> 8;
+    sumOfSquares += ((q63_t) (in) * (in));
+
+    /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+    /* Compute sum of all input values and then store the result in a temporary variable, sum. */
+    sum += in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* Compute Mean of squares of the input samples     
+   * and then store the result in a temporary variable, meanOfSquares. */
+  meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  /* Compute square of mean */
+  squareOfMean = sum * sum / (q63_t)(blockSize * (blockSize - 1u));
+
+
+  /* Compute standard deviation and then store the result to the destination */
+  *pResult = (meanOfSquares - squareOfMean) >> 15;
+
+}
+
+/**        
+ * @} end of variance group        
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,135 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_copy_f32.c    
+*    
+* Description:	Copies the elements of a floating-point vector.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @defgroup copy Vector Copy    
+ *    
+ * Copies sample by sample from source vector to destination vector.    
+ *    
+ * <pre>    
+ * 	pDst[n] = pSrc[n];   0 <= n < blockSize.    
+ * </pre>    
+ *   
+ * There are separate functions for floating point, Q31, Q15, and Q7 data types.     
+ */
+
+/**    
+ * @addtogroup copy    
+ * @{    
+ */
+
+/**    
+ * @brief Copies the elements of a floating-point vector.     
+ * @param[in]       *pSrc points to input vector    
+ * @param[out]      *pDst points to output vector    
+ * @param[in]       blockSize length of the input vector   
+ * @return none.    
+ *    
+ */
+
+
+void arm_copy_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t in1, in2, in3, in4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A */
+    /* Copy and then store the results in the destination buffer */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+    in3 = *pSrc++;
+    in4 = *pSrc++;
+
+    *pDst++ = in1;
+    *pDst++ = in2;
+    *pDst++ = in3;
+    *pDst++ = in4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A */
+    /* Copy and then store the results in the destination buffer */
+    *pDst++ = *pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of BasicCopy group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,114 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_copy_q15.c    
+*    
+* Description:	Copies the elements of a Q15 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup copy    
+ * @{    
+ */
+/**    
+ * @brief Copies the elements of a Q15 vector.     
+ * @param[in]       *pSrc points to input vector    
+ * @param[out]      *pDst points to output vector    
+ * @param[in]       blockSize length of the input vector   
+ * @return none.    
+ *    
+ */
+
+void arm_copy_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A */
+    /* Read two inputs */
+    *__SIMD32(pDst)++ = *__SIMD32(pSrc)++;
+    *__SIMD32(pDst)++ = *__SIMD32(pSrc)++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A */
+    /* Copy and then store the value in the destination buffer */
+    *pDst++ = *pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of BasicCopy group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,123 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_copy_q31.c    
+*    
+* Description:	Copies the elements of a Q31 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup copy    
+ * @{    
+ */
+
+/**    
+ * @brief Copies the elements of a Q31 vector.     
+ * @param[in]       *pSrc points to input vector    
+ * @param[out]      *pDst points to output vector    
+ * @param[in]       blockSize length of the input vector   
+ * @return none.    
+ *    
+ */
+
+void arm_copy_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2, in3, in4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A */
+    /* Copy and then store the values in the destination buffer */
+    in1 = *pSrc++;
+    in2 = *pSrc++;
+    in3 = *pSrc++;
+    in4 = *pSrc++;
+
+    *pDst++ = in1;
+    *pDst++ = in2;
+    *pDst++ = in3;
+    *pDst++ = in4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = A */
+    /* Copy and then store the value in the destination buffer */
+    *pDst++ = *pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of BasicCopy group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,115 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_copy_q7.c    
+*    
+* Description:	Copies the elements of a Q7 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup copy    
+ * @{    
+ */
+
+/**    
+ * @brief Copies the elements of a Q7 vector.    
+ * @param[in]       *pSrc points to input vector    
+ * @param[out]      *pDst points to output vector    
+ * @param[in]       blockSize length of the input vector   
+ * @return none.    
+ *    
+ */
+
+void arm_copy_q7(
+  q7_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = A */
+    /* Copy and then store the results in the destination buffer */
+    /* 4 samples are copied and stored at a time using SIMD */
+    *__SIMD32(pDst)++ = *__SIMD32(pSrc)++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = A */
+    /* Copy and then store the results in the destination buffer */
+    *pDst++ = *pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of BasicCopy group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,134 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_fill_f32.c    
+*    
+* Description:	Fills a constant value into a floating-point vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @defgroup Fill Vector Fill    
+ *    
+ * Fills the destination vector with a constant value.    
+ *    
+ * <pre>    
+ * 	pDst[n] = value;   0 <= n < blockSize.    
+ * </pre>    
+ *   
+ * There are separate functions for floating point, Q31, Q15, and Q7 data types.     
+ */
+
+/**    
+ * @addtogroup Fill    
+ * @{    
+ */
+
+/**    
+ * @brief Fills a constant value into a floating-point vector.     
+ * @param[in]       value input value to be filled   
+ * @param[out]      *pDst points to output vector    
+ * @param[in]       blockSize length of the output vector   
+ * @return none.    
+ *    
+ */
+
+
+void arm_fill_f32(
+  float32_t value,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t in1 = value;
+  float32_t in2 = value;
+  float32_t in3 = value;
+  float32_t in4 = value;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = value */
+    /* Fill the value in the destination buffer */
+    *pDst++ = in1;
+    *pDst++ = in2;
+    *pDst++ = in3;
+    *pDst++ = in4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+
+  while(blkCnt > 0u)
+  {
+    /* C = value */
+    /* Fill the value in the destination buffer */
+    *pDst++ = value;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of Fill group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,120 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_fill_q15.c    
+*    
+* Description:	Fills a constant value into a Q15 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup Fill    
+ * @{    
+ */
+
+/**    
+ * @brief Fills a constant value into a Q15 vector.    
+ * @param[in]       value input value to be filled   
+ * @param[out]      *pDst points to output vector    
+ * @param[in]       blockSize length of the output vector   
+ * @return none.    
+ *    
+ */
+
+void arm_fill_q15(
+  q15_t value,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t packedValue;                             /* value packed to 32 bits */
+
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* Packing two 16 bit values to 32 bit value in order to use SIMD */
+  packedValue = __PKHBT(value, value, 16u);
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = value */
+    /* Fill the value in the destination buffer */
+    *__SIMD32(pDst)++ = packedValue;
+    *__SIMD32(pDst)++ = packedValue;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = value */
+    /* Fill the value in the destination buffer */
+    *pDst++ = value;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of Fill group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,121 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_fill_q31.c    
+*    
+* Description:	Fills a constant value into a Q31 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup Fill    
+ * @{    
+ */
+
+/**    
+ * @brief Fills a constant value into a Q31 vector.    
+ * @param[in]       value input value to be filled   
+ * @param[out]      *pDst points to output vector    
+ * @param[in]       blockSize length of the output vector   
+ * @return none.    
+ *    
+ */
+
+void arm_fill_q31(
+  q31_t value,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1 = value;
+  q31_t in2 = value;
+  q31_t in3 = value;
+  q31_t in4 = value;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = value */
+    /* Fill the value in the destination buffer */
+    *pDst++ = in1;
+    *pDst++ = in2;
+    *pDst++ = in3;
+    *pDst++ = in4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = value */
+    /* Fill the value in the destination buffer */
+    *pDst++ = value;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of Fill group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,118 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_fill_q7.c    
+*    
+* Description:	Fills a constant value into a Q7 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup Fill    
+ * @{    
+ */
+
+/**    
+ * @brief Fills a constant value into a Q7 vector.    
+ * @param[in]       value input value to be filled   
+ * @param[out]      *pDst points to output vector    
+ * @param[in]       blockSize length of the output vector   
+ * @return none.    
+ *    
+ */
+
+void arm_fill_q7(
+  q7_t value,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t packedValue;                             /* value packed to 32 bits */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* Packing four 8 bit values to 32 bit value in order to use SIMD */
+  packedValue = __PACKq7(value, value, value, value);
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = value */
+    /* Fill the value in the destination buffer */
+    *__SIMD32(pDst)++ = packedValue;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = value */
+    /* Fill the value in the destination buffer */
+    *pDst++ = value;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of Fill group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,204 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_float_to_q15.c    
+*    
+* Description:	Converts the elements of the floating-point vector to Q15 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup float_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the floating-point vector to Q15 vector.    
+ * @param[in]       *pSrc points to the floating-point input vector    
+ * @param[out]      *pDst points to the Q15 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ * \par Description:    
+ * \par   
+ * The equation used for the conversion process is:    
+ * <pre>    
+ * 	pDst[n] = (q15_t)(pSrc[n] * 32768);   0 <= n < blockSize.    
+ * </pre>    
+ * \par Scaling and Overflow Behavior:    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.    
+ * \note   
+ * In order to apply rounding, the library should be rebuilt with the ROUNDING macro     
+ * defined in the preprocessor section of project options.     
+ *    
+ */
+
+
+void arm_float_to_q15(
+  float32_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t *pIn = pSrc;                         /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifdef ARM_MATH_ROUNDING
+
+  float32_t in;
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+#ifdef ARM_MATH_ROUNDING
+    /* C = A * 32768 */
+    /* convert from float to q15 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 32768.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
+
+    in = *pIn++;
+    in = (in * 32768.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
+
+    in = *pIn++;
+    in = (in * 32768.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
+
+    in = *pIn++;
+    in = (in * 32768.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
+
+#else
+
+    /* C = A * 32768 */
+    /* convert from float to q15 and then store the results in the destination buffer */
+    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);
+    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);
+    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);
+    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+
+#ifdef ARM_MATH_ROUNDING
+    /* C = A * 32768 */
+    /* convert from float to q15 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 32768.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
+
+#else
+
+    /* C = A * 32768 */
+    /* convert from float to q15 and then store the results in the destination buffer */
+    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+
+#ifdef ARM_MATH_ROUNDING
+    /* C = A * 32768 */
+    /* convert from float to q15 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 32768.0f);
+    in += in > 0 ? 0.5f : -0.5f;
+    *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
+
+#else
+
+    /* C = A * 32768 */
+    /* convert from float to q15 and then store the results in the destination buffer */
+    *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16);
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of float_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,211 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_float_to_q31.c    
+*    
+* Description:	Converts the elements of the floating-point vector to Q31 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @defgroup float_to_x  Convert 32-bit floating point value    
+ */
+
+/**    
+ * @addtogroup float_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the floating-point vector to Q31 vector.    
+ * @param[in]       *pSrc points to the floating-point input vector    
+ * @param[out]      *pDst points to the Q31 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ *\par Description:    
+ * \par   
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (q31_t)(pSrc[n] * 2147483648);   0 <= n < blockSize.    
+ * </pre>    
+ * <b>Scaling and Overflow Behavior:</b>    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.    
+ *   
+ * \note In order to apply rounding, the library should be rebuilt with the ROUNDING macro     
+ * defined in the preprocessor section of project options.     
+ */
+
+
+void arm_float_to_q31(
+  float32_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t *pIn = pSrc;                         /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifdef ARM_MATH_ROUNDING
+
+  float32_t in;
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+#ifdef ARM_MATH_ROUNDING
+
+    /* C = A * 32768 */
+    /* convert from float to Q31 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 2147483648.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = clip_q63_to_q31((q63_t) (in));
+
+    in = *pIn++;
+    in = (in * 2147483648.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = clip_q63_to_q31((q63_t) (in));
+
+    in = *pIn++;
+    in = (in * 2147483648.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = clip_q63_to_q31((q63_t) (in));
+
+    in = *pIn++;
+    in = (in * 2147483648.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = clip_q63_to_q31((q63_t) (in));
+
+#else
+
+    /* C = A * 2147483648 */
+    /* convert from float to Q31 and then store the results in the destination buffer */
+    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));
+    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));
+    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));
+    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+
+#ifdef ARM_MATH_ROUNDING
+
+    /* C = A * 2147483648 */
+    /* convert from float to Q31 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 2147483648.0f);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = clip_q63_to_q31((q63_t) (in));
+
+#else
+
+    /* C = A * 2147483648 */
+    /* convert from float to Q31 and then store the results in the destination buffer */
+    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+
+#ifdef ARM_MATH_ROUNDING
+
+    /* C = A * 2147483648 */
+    /* convert from float to Q31 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 2147483648.0f);
+    in += in > 0 ? 0.5f : -0.5f;
+    *pDst++ = clip_q63_to_q31((q63_t) (in));
+
+#else
+
+    /* C = A * 2147483648 */
+    /* convert from float to Q31 and then store the results in the destination buffer */
+    *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f));
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of float_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,203 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_float_to_q7.c    
+*    
+* Description:	Converts the elements of the floating-point vector to Q7 vector.   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup float_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the floating-point vector to Q7 vector.    
+ * @param[in]       *pSrc points to the floating-point input vector    
+ * @param[out]      *pDst points to the Q7 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ *\par Description:    
+ * \par   
+ * The equation used for the conversion process is:    
+ * <pre>    
+ * 	pDst[n] = (q7_t)(pSrc[n] * 128);   0 <= n < blockSize.    
+ * </pre>    
+ * \par Scaling and Overflow Behavior:    
+ * \par    
+ * The function uses saturating arithmetic.    
+ * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.    
+ * \note   
+ * In order to apply rounding, the library should be rebuilt with the ROUNDING macro     
+ * defined in the preprocessor section of project options.     
+ */
+
+
+void arm_float_to_q7(
+  float32_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  float32_t *pIn = pSrc;                         /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifdef ARM_MATH_ROUNDING
+
+  float32_t in;
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+#ifdef ARM_MATH_ROUNDING
+    /* C = A * 128 */
+    /* convert from float to q7 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 128);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
+
+    in = *pIn++;
+    in = (in * 128);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
+
+    in = *pIn++;
+    in = (in * 128);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
+
+    in = *pIn++;
+    in = (in * 128);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
+
+#else
+
+    /* C = A * 128 */
+    /* convert from float to q7 and then store the results in the destination buffer */
+    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);
+    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);
+    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);
+    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+
+#ifdef ARM_MATH_ROUNDING
+    /* C = A * 128 */
+    /* convert from float to q7 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 128);
+    in += in > 0.0f ? 0.5f : -0.5f;
+    *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
+
+#else
+
+    /* C = A * 128 */
+    /* convert from float to q7 and then store the results in the destination buffer */
+    *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8);
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+  while(blkCnt > 0u)
+  {
+#ifdef ARM_MATH_ROUNDING
+    /* C = A * 128 */
+    /* convert from float to q7 and then store the results in the destination buffer */
+    in = *pIn++;
+    in = (in * 128.0f);
+    in += in > 0 ? 0.5f : -0.5f;
+    *pDst++ = (q7_t) (__SSAT((q31_t) (in), 8));
+
+#else
+
+    /* C = A * 128 */
+    /* convert from float to q7 and then store the results in the destination buffer */
+    *pDst++ = (q7_t) __SSAT((q31_t) (*pIn++ * 128.0f), 8);
+
+#endif /*      #ifdef ARM_MATH_ROUNDING        */
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+ * @} end of float_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,134 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q15_to_float.c    
+*    
+* Description:	Converts the elements of the Q15 vector to floating-point vector.     
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @defgroup q15_to_x  Convert 16-bit Integer value    
+ */
+
+/**    
+ * @addtogroup q15_to_x    
+ * @{    
+ */
+
+
+
+
+/**    
+ * @brief  Converts the elements of the Q15 vector to floating-point vector.     
+ * @param[in]       *pSrc points to the Q15 input vector    
+ * @param[out]      *pDst points to the floating-point output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (float32_t) pSrc[n] / 32768;   0 <= n < blockSize.    
+ * </pre>    
+ *   
+ */
+
+
+void arm_q15_to_float(
+  q15_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pIn = pSrc;                             /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (float32_t) A / 32768 */
+    /* convert from q15 to float and then store the results in the destination buffer */
+    *pDst++ = ((float32_t) * pIn++ / 32768.0f);
+    *pDst++ = ((float32_t) * pIn++ / 32768.0f);
+    *pDst++ = ((float32_t) * pIn++ / 32768.0f);
+    *pDst++ = ((float32_t) * pIn++ / 32768.0f);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (float32_t) A / 32768 */
+    /* convert from q15 to float and then store the results in the destination buffer */
+    *pDst++ = ((float32_t) * pIn++ / 32768.0f);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of q15_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,156 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q15_to_q31.c    
+*    
+* Description:	Converts the elements of the Q15 vector to Q31 vector.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup q15_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the Q15 vector to Q31 vector.     
+ * @param[in]       *pSrc points to the Q15 input vector    
+ * @param[out]      *pDst points to the Q31 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:   
+ *   
+ * <pre>    
+ * 	pDst[n] = (q31_t) pSrc[n] << 16;   0 <= n < blockSize.    
+ * </pre>    
+ *   
+ */
+
+
+void arm_q15_to_q31(
+  q15_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pIn = pSrc;                             /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2;
+  q31_t out1, out2, out3, out4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (q31_t)A << 16 */
+    /* convert from q15 to q31 and then store the results in the destination buffer */
+    in1 = *__SIMD32(pIn)++;
+    in2 = *__SIMD32(pIn)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* extract lower 16 bits to 32 bit result */
+    out1 = in1 << 16u;
+    /* extract upper 16 bits to 32 bit result */
+    out2 = in1 & 0xFFFF0000;
+    /* extract lower 16 bits to 32 bit result */
+    out3 = in2 << 16u;
+    /* extract upper 16 bits to 32 bit result */
+    out4 = in2 & 0xFFFF0000;
+
+#else
+
+    /* extract upper 16 bits to 32 bit result */
+    out1 = in1 & 0xFFFF0000;
+    /* extract lower 16 bits to 32 bit result */
+    out2 = in1 << 16u;
+    /* extract upper 16 bits to 32 bit result */
+    out3 = in2 & 0xFFFF0000;
+    /* extract lower 16 bits to 32 bit result */
+    out4 = in2 << 16u;
+
+#endif //      #ifndef ARM_MATH_BIG_ENDIAN
+
+    *pDst++ = out1;
+    *pDst++ = out2;
+    *pDst++ = out3;
+    *pDst++ = out4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (q31_t)A << 16 */
+    /* convert from q15 to q31 and then store the results in the destination buffer */
+    *pDst++ = (q31_t) * pIn++ << 16;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+}
+
+/**    
+ * @} end of q15_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,154 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q15_to_q7.c    
+*    
+* Description:	Converts the elements of the Q15 vector to Q7 vector.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup q15_to_x    
+ * @{    
+ */
+
+
+/**    
+ * @brief Converts the elements of the Q15 vector to Q7 vector.     
+ * @param[in]       *pSrc points to the Q15 input vector    
+ * @param[out]      *pDst points to the Q7 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (q7_t) pSrc[n] >> 8;   0 <= n < blockSize.    
+ * </pre>   
+ *   
+ */
+
+
+void arm_q15_to_q7(
+  q15_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  q15_t *pIn = pSrc;                             /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2;
+  q31_t out1, out2;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (q7_t) A >> 8 */
+    /* convert from q15 to q7 and then store the results in the destination buffer */
+    in1 = *__SIMD32(pIn)++;
+    in2 = *__SIMD32(pIn)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    out1 = __PKHTB(in2, in1, 16);
+    out2 = __PKHBT(in2, in1, 16);
+
+#else
+
+    out1 = __PKHTB(in1, in2, 16);
+    out2 = __PKHBT(in1, in2, 16);
+
+#endif //      #ifndef ARM_MATH_BIG_ENDIAN
+
+    /* rotate packed value by 24 */
+    out2 = ((uint32_t) out2 << 8) | ((uint32_t) out2 >> 24);
+
+    /* anding with 0xff00ff00 to get two 8 bit values */
+    out1 = out1 & 0xFF00FF00;
+    /* anding with 0x00ff00ff to get two 8 bit values */
+    out2 = out2 & 0x00FF00FF;
+
+    /* oring two values(contains two 8 bit values) to get four packed 8 bit values */
+    out1 = out1 | out2;
+
+    /* store 4 samples at a time to destiantion buffer */
+    *__SIMD32(pDst)++ = out1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (q7_t) A >> 8 */
+    /* convert from q15 to q7 and then store the results in the destination buffer */
+    *pDst++ = (q7_t) (*pIn++ >> 8);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+}
+
+/**    
+ * @} end of q15_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,131 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q31_to_float.c    
+*    
+* Description:	Converts the elements of the Q31 vector to floating-point vector.      
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @defgroup q31_to_x  Convert 32-bit Integer value    
+ */
+
+/**    
+ * @addtogroup q31_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the Q31 vector to floating-point vector.    
+ * @param[in]       *pSrc points to the Q31 input vector    
+ * @param[out]      *pDst points to the floating-point output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (float32_t) pSrc[n] / 2147483648;   0 <= n < blockSize.    
+ * </pre>    
+ *   
+ */
+
+
+void arm_q31_to_float(
+  q31_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pIn = pSrc;                             /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (float32_t) A / 2147483648 */
+    /* convert from q31 to float and then store the results in the destination buffer */
+    *pDst++ = ((float32_t) * pIn++ / 2147483648.0f);
+    *pDst++ = ((float32_t) * pIn++ / 2147483648.0f);
+    *pDst++ = ((float32_t) * pIn++ / 2147483648.0f);
+    *pDst++ = ((float32_t) * pIn++ / 2147483648.0f);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (float32_t) A / 2147483648 */
+    /* convert from q31 to float and then store the results in the destination buffer */
+    *pDst++ = ((float32_t) * pIn++ / 2147483648.0f);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of q31_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,145 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q31_to_q15.c    
+*    
+* Description:	Converts the elements of the Q31 vector to Q15 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup q31_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the Q31 vector to Q15 vector.    
+ * @param[in]       *pSrc points to the Q31 input vector    
+ * @param[out]      *pDst points to the Q15 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *     
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (q15_t) pSrc[n] >> 16;   0 <= n < blockSize.    
+ * </pre>    
+ *   
+ */
+
+
+void arm_q31_to_q15(
+  q31_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pIn = pSrc;                             /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2, in3, in4;
+  q31_t out1, out2;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (q15_t) A >> 16 */
+    /* convert from q31 to q15 and then store the results in the destination buffer */
+    in1 = *pIn++;
+    in2 = *pIn++;
+    in3 = *pIn++;
+    in4 = *pIn++;
+
+    /* pack two higher 16-bit values from two 32-bit values */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    out1 = __PKHTB(in2, in1, 16);
+    out2 = __PKHTB(in4, in3, 16);
+
+#else
+
+    out1 = __PKHTB(in1, in2, 16);
+    out2 = __PKHTB(in3, in4, 16);
+
+#endif //      #ifdef ARM_MATH_BIG_ENDIAN
+
+    *__SIMD32(pDst)++ = out1;
+    *__SIMD32(pDst)++ = out2;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (q15_t) A >> 16 */
+    /* convert from q31 to q15 and then store the results in the destination buffer */
+    *pDst++ = (q15_t) (*pIn++ >> 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+}
+
+/**    
+ * @} end of q31_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,136 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q31_to_q7.c    
+*    
+* Description:	Converts the elements of the Q31 vector to Q7 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup q31_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the Q31 vector to Q7 vector.    
+ * @param[in]       *pSrc points to the Q31 input vector    
+ * @param[out]      *pDst points to the Q7 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (q7_t) pSrc[n] >> 24;   0 <= n < blockSize.     
+ * </pre>    
+ *   
+ */
+
+
+void arm_q31_to_q7(
+  q31_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize)
+{
+  q31_t *pIn = pSrc;                             /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t in1, in2, in3, in4;
+  q7_t out1, out2, out3, out4;
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (q7_t) A >> 24 */
+    /* convert from q31 to q7 and then store the results in the destination buffer */
+    in1 = *pIn++;
+    in2 = *pIn++;
+    in3 = *pIn++;
+    in4 = *pIn++;
+
+    out1 = (q7_t) (in1 >> 24);
+    out2 = (q7_t) (in2 >> 24);
+    out3 = (q7_t) (in3 >> 24);
+    out4 = (q7_t) (in4 >> 24);
+
+    *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (q7_t) A >> 24 */
+    /* convert from q31 to q7 and then store the results in the destination buffer */
+    *pDst++ = (q7_t) (*pIn++ >> 24);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+}
+
+/**    
+ * @} end of q31_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,131 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q7_to_float.c    
+*    
+* Description:	Converts the elements of the Q7 vector to floating-point vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @defgroup q7_to_x  Convert 8-bit Integer value    
+ */
+
+/**    
+ * @addtogroup q7_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the Q7 vector to floating-point vector.    
+ * @param[in]       *pSrc points to the Q7 input vector    
+ * @param[out]      *pDst points to the floating-point output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *		     
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (float32_t) pSrc[n] / 128;   0 <= n < blockSize.    
+ * </pre>    
+ *   
+ */
+
+
+void arm_q7_to_float(
+  q7_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize)
+{
+  q7_t *pIn = pSrc;                              /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (float32_t) A / 128 */
+    /* convert from q7 to float and then store the results in the destination buffer */
+    *pDst++ = ((float32_t) * pIn++ / 128.0f);
+    *pDst++ = ((float32_t) * pIn++ / 128.0f);
+    *pDst++ = ((float32_t) * pIn++ / 128.0f);
+    *pDst++ = ((float32_t) * pIn++ / 128.0f);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (float32_t) A / 128 */
+    /* convert from q7 to float and then store the results in the destination buffer */
+    *pDst++ = ((float32_t) * pIn++ / 128.0f);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**    
+ * @} end of q7_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,157 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q7_to_q15.c    
+*    
+* Description:	Converts the elements of the Q7 vector to Q15 vector.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup q7_to_x    
+ * @{    
+ */
+
+
+
+
+/**    
+ * @brief Converts the elements of the Q7 vector to Q15 vector.    
+ * @param[in]       *pSrc points to the Q7 input vector    
+ * @param[out]      *pDst points to the Q15 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (q15_t) pSrc[n] << 8;   0 <= n < blockSize.    
+ * </pre>    
+ *   
+ */
+
+
+void arm_q7_to_q15(
+  q7_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize)
+{
+  q7_t *pIn = pSrc;                              /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+  q31_t in;
+  q31_t in1, in2;
+  q31_t out1, out2;
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (q15_t) A << 8 */
+    /* convert from q7 to q15 and then store the results in the destination buffer */
+    in = *__SIMD32(pIn)++;
+
+    /* rotatate in by 8 and extend two q7_t values to q15_t values */
+    in1 = __SXTB16(__ROR(in, 8));
+
+    /* extend remainig two q7_t values to q15_t values */
+    in2 = __SXTB16(in);
+
+    in1 = in1 << 8u;
+    in2 = in2 << 8u;
+
+    in1 = in1 & 0xFF00FF00;
+    in2 = in2 & 0xFF00FF00;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    out2 = __PKHTB(in1, in2, 16);
+    out1 = __PKHBT(in2, in1, 16);
+
+#else
+
+    out1 = __PKHTB(in1, in2, 16);
+    out2 = __PKHBT(in2, in1, 16);
+
+#endif
+
+    *__SIMD32(pDst)++ = out1;
+    *__SIMD32(pDst)++ = out2;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (q15_t) A << 8 */
+    /* convert from q7 to q15 and then store the results in the destination buffer */
+    *pDst++ = (q15_t) * pIn++ << 8;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+}
+
+/**    
+ * @} end of q7_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,142 @@
+/* ----------------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:		arm_q7_to_q31.c    
+*    
+* Description:	Converts the elements of the Q7 vector to Q31 vector.  
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupSupport    
+ */
+
+/**    
+ * @addtogroup q7_to_x    
+ * @{    
+ */
+
+/**    
+ * @brief Converts the elements of the Q7 vector to Q31 vector.    
+ * @param[in]       *pSrc points to the Q7 input vector    
+ * @param[out]      *pDst points to the Q31 output vector   
+ * @param[in]       blockSize length of the input vector    
+ * @return none.    
+ *    
+ * \par Description:    
+ *    
+ * The equation used for the conversion process is:    
+ *   
+ * <pre>    
+ * 	pDst[n] = (q31_t) pSrc[n] << 24;   0 <= n < blockSize.   
+ * </pre>     
+ *   
+ */
+
+
+void arm_q7_to_q31(
+  q7_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize)
+{
+  q7_t *pIn = pSrc;                              /* Src pointer */
+  uint32_t blkCnt;                               /* loop counter */
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  q31_t in;
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /*loop Unrolling */
+  blkCnt = blockSize >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C = (q31_t) A << 24 */
+    /* convert from q7 to q31 and then store the results in the destination buffer */
+    in = *__SIMD32(pIn)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    *pDst++ = (__ROR(in, 8)) & 0xFF000000;
+    *pDst++ = (__ROR(in, 16)) & 0xFF000000;
+    *pDst++ = (__ROR(in, 24)) & 0xFF000000;
+    *pDst++ = (in & 0xFF000000);
+
+#else
+
+    *pDst++ = (in & 0xFF000000);
+    *pDst++ = (__ROR(in, 24)) & 0xFF000000;
+    *pDst++ = (__ROR(in, 16)) & 0xFF000000;
+    *pDst++ = (__ROR(in, 8)) & 0xFF000000;
+
+#endif //              #ifndef ARM_MATH_BIG_ENDIAN
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = blockSize % 0x4u;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Loop over blockSize number of values */
+  blkCnt = blockSize;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+  while(blkCnt > 0u)
+  {
+    /* C = (q31_t) A << 24 */
+    /* convert from q7 to q31 and then store the results in the destination buffer */
+    *pDst++ = (q31_t) * pIn++ << 24;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+}
+
+/**    
+ * @} end of q7_to_x group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,242 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_bitreversal.c    
+*    
+* Description:	This file has common tables like Bitreverse, reciprocal etc which are used across different functions    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/*    
+* @brief  In-place bit reversal function.   
+* @param[in, out] *pSrc        points to the in-place buffer of floating-point data type.   
+* @param[in]      fftSize      length of the FFT.   
+* @param[in]      bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table.   
+* @param[in]      *pBitRevTab  points to the bit reversal table.   
+* @return none.   
+*/
+
+void arm_bitreversal_f32(
+float32_t * pSrc,
+uint16_t fftSize,
+uint16_t bitRevFactor,
+uint16_t * pBitRevTab)
+{
+   uint16_t fftLenBy2, fftLenBy2p1;
+   uint16_t i, j;
+   float32_t in;
+
+   /*  Initializations */
+   j = 0u;
+   fftLenBy2 = fftSize >> 1u;
+   fftLenBy2p1 = (fftSize >> 1u) + 1u;
+
+   /* Bit Reversal Implementation */
+   for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u)
+   {
+      if(i < j)
+      {
+         /*  pSrc[i] <-> pSrc[j]; */
+         in = pSrc[2u * i];
+         pSrc[2u * i] = pSrc[2u * j];
+         pSrc[2u * j] = in;
+
+         /*  pSrc[i+1u] <-> pSrc[j+1u] */
+         in = pSrc[(2u * i) + 1u];
+         pSrc[(2u * i) + 1u] = pSrc[(2u * j) + 1u];
+         pSrc[(2u * j) + 1u] = in;
+
+         /*  pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */
+         in = pSrc[2u * (i + fftLenBy2p1)];
+         pSrc[2u * (i + fftLenBy2p1)] = pSrc[2u * (j + fftLenBy2p1)];
+         pSrc[2u * (j + fftLenBy2p1)] = in;
+
+         /*  pSrc[i+fftLenBy2p1+1u] <-> pSrc[j+fftLenBy2p1+1u] */
+         in = pSrc[(2u * (i + fftLenBy2p1)) + 1u];
+         pSrc[(2u * (i + fftLenBy2p1)) + 1u] =
+         pSrc[(2u * (j + fftLenBy2p1)) + 1u];
+         pSrc[(2u * (j + fftLenBy2p1)) + 1u] = in;
+
+      }
+
+      /*  pSrc[i+1u] <-> pSrc[j+1u] */
+      in = pSrc[2u * (i + 1u)];
+      pSrc[2u * (i + 1u)] = pSrc[2u * (j + fftLenBy2)];
+      pSrc[2u * (j + fftLenBy2)] = in;
+
+      /*  pSrc[i+2u] <-> pSrc[j+2u] */
+      in = pSrc[(2u * (i + 1u)) + 1u];
+      pSrc[(2u * (i + 1u)) + 1u] = pSrc[(2u * (j + fftLenBy2)) + 1u];
+      pSrc[(2u * (j + fftLenBy2)) + 1u] = in;
+
+      /*  Reading the index for the bit reversal */
+      j = *pBitRevTab;
+
+      /*  Updating the bit reversal index depending on the fft length  */
+      pBitRevTab += bitRevFactor;
+   }
+}
+
+
+
+/*    
+* @brief  In-place bit reversal function.   
+* @param[in, out] *pSrc        points to the in-place buffer of Q31 data type.   
+* @param[in]      fftLen       length of the FFT.   
+* @param[in]      bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table   
+* @param[in]      *pBitRevTab  points to bit reversal table.   
+* @return none.   
+*/
+
+void arm_bitreversal_q31(
+q31_t * pSrc,
+uint32_t fftLen,
+uint16_t bitRevFactor,
+uint16_t * pBitRevTable)
+{
+   uint32_t fftLenBy2, fftLenBy2p1, i, j;
+   q31_t in;
+
+   /*  Initializations      */
+   j = 0u;
+   fftLenBy2 = fftLen / 2u;
+   fftLenBy2p1 = (fftLen / 2u) + 1u;
+
+   /* Bit Reversal Implementation */
+   for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u)
+   {
+      if(i < j)
+      {
+         /*  pSrc[i] <-> pSrc[j]; */
+         in = pSrc[2u * i];
+         pSrc[2u * i] = pSrc[2u * j];
+         pSrc[2u * j] = in;
+
+         /*  pSrc[i+1u] <-> pSrc[j+1u] */
+         in = pSrc[(2u * i) + 1u];
+         pSrc[(2u * i) + 1u] = pSrc[(2u * j) + 1u];
+         pSrc[(2u * j) + 1u] = in;
+
+         /*  pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */
+         in = pSrc[2u * (i + fftLenBy2p1)];
+         pSrc[2u * (i + fftLenBy2p1)] = pSrc[2u * (j + fftLenBy2p1)];
+         pSrc[2u * (j + fftLenBy2p1)] = in;
+
+         /*  pSrc[i+fftLenBy2p1+1u] <-> pSrc[j+fftLenBy2p1+1u] */
+         in = pSrc[(2u * (i + fftLenBy2p1)) + 1u];
+         pSrc[(2u * (i + fftLenBy2p1)) + 1u] =
+         pSrc[(2u * (j + fftLenBy2p1)) + 1u];
+         pSrc[(2u * (j + fftLenBy2p1)) + 1u] = in;
+
+      }
+
+      /*  pSrc[i+1u] <-> pSrc[j+1u] */
+      in = pSrc[2u * (i + 1u)];
+      pSrc[2u * (i + 1u)] = pSrc[2u * (j + fftLenBy2)];
+      pSrc[2u * (j + fftLenBy2)] = in;
+
+      /*  pSrc[i+2u] <-> pSrc[j+2u] */
+      in = pSrc[(2u * (i + 1u)) + 1u];
+      pSrc[(2u * (i + 1u)) + 1u] = pSrc[(2u * (j + fftLenBy2)) + 1u];
+      pSrc[(2u * (j + fftLenBy2)) + 1u] = in;
+
+      /*  Reading the index for the bit reversal */
+      j = *pBitRevTable;
+
+      /*  Updating the bit reversal index depending on the fft length */
+      pBitRevTable += bitRevFactor;
+   }
+}
+
+
+
+/*    
+   * @brief  In-place bit reversal function.   
+   * @param[in, out] *pSrc        points to the in-place buffer of Q15 data type.   
+   * @param[in]      fftLen       length of the FFT.   
+   * @param[in]      bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table   
+   * @param[in]      *pBitRevTab  points to bit reversal table.   
+   * @return none.   
+*/
+
+void arm_bitreversal_q15(
+q15_t * pSrc16,
+uint32_t fftLen,
+uint16_t bitRevFactor,
+uint16_t * pBitRevTab)
+{
+   q31_t *pSrc = (q31_t *) pSrc16;
+   q31_t in;
+   uint32_t fftLenBy2, fftLenBy2p1;
+   uint32_t i, j;
+
+   /*  Initializations */
+   j = 0u;
+   fftLenBy2 = fftLen / 2u;
+   fftLenBy2p1 = (fftLen / 2u) + 1u;
+
+   /* Bit Reversal Implementation */
+   for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u)
+   {
+      if(i < j)
+      {
+         /*  pSrc[i] <-> pSrc[j]; */
+         /*  pSrc[i+1u] <-> pSrc[j+1u] */
+         in = pSrc[i];
+         pSrc[i] = pSrc[j];
+         pSrc[j] = in;
+
+         /*  pSrc[i + fftLenBy2p1] <-> pSrc[j + fftLenBy2p1];  */
+         /*  pSrc[i + fftLenBy2p1+1u] <-> pSrc[j + fftLenBy2p1+1u] */
+         in = pSrc[i + fftLenBy2p1];
+         pSrc[i + fftLenBy2p1] = pSrc[j + fftLenBy2p1];
+         pSrc[j + fftLenBy2p1] = in;
+      }
+
+      /*  pSrc[i+1u] <-> pSrc[j+fftLenBy2];         */
+      /*  pSrc[i+2] <-> pSrc[j+fftLenBy2+1u]  */
+      in = pSrc[i + 1u];
+      pSrc[i + 1u] = pSrc[j + fftLenBy2];
+      pSrc[j + fftLenBy2] = in;
+
+      /*  Reading the index for the bit reversal */
+      j = *pBitRevTab;
+
+      /*  Updating the bit reversal index depending on the fft length  */
+      pBitRevTab += bitRevFactor;
+   }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,632 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_f32.c   
+*    
+* Description:	Combined Radix Decimation in Frequency CFFT Floating point processing function
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+extern void arm_radix8_butterfly_f32(
+    float32_t * pSrc,
+    uint16_t fftLen,
+    const float32_t * pCoef,
+    uint16_t twidCoefModifier);
+
+extern void arm_bitreversal_32(
+    uint32_t * pSrc,
+    const uint16_t bitRevLen,
+    const uint16_t * pBitRevTable);
+
+/**   
+* @ingroup groupTransforms   
+*/
+
+/**   
+* @defgroup ComplexFFT Complex FFT Functions   
+*   
+* \par
+* The Fast Fourier Transform (FFT) is an efficient algorithm for computing the
+* Discrete Fourier Transform (DFT).  The FFT can be orders of magnitude faster
+* than the DFT, especially for long lengths.
+* The algorithms described in this section
+* operate on complex data.  A separate set of functions is devoted to handling
+* of real sequences.
+* \par
+* There are separate algorithms for handling floating-point, Q15, and Q31 data
+* types.  The algorithms available for each data type are described next.
+* \par
+* The FFT functions operate in-place.  That is, the array holding the input data
+* will also be used to hold the corresponding result.  The input data is complex
+* and contains <code>2*fftLen</code> interleaved values as shown below.
+* <pre> {real[0], imag[0], real[1], imag[1],..} </pre>
+* The FFT result will be contained in the same array and the frequency domain
+* values will have the same interleaving.
+*
+* \par Floating-point
+* The floating-point complex FFT uses a mixed-radix algorithm.  Multiple radix-8
+* stages are performed along with a single radix-2 or radix-4 stage, as needed.
+* The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses
+* a different twiddle factor table.  
+* \par
+* The function uses the standard FFT definition and output values may grow by a
+* factor of <code>fftLen</code> when computing the forward transform.  The
+* inverse transform includes a scale of <code>1/fftLen</code> as part of the
+* calculation and this matches the textbook definition of the inverse FFT.
+* \par
+* Pre-initialized data structures containing twiddle factors and bit reversal
+* tables are provided and defined in <code>arm_const_structs.h</code>.  Include 
+* this header in your function and then pass one of the constant structures as 
+* an argument to arm_cfft_f32.  For example:
+* \par
+* <code>arm_cfft_f32(arm_cfft_sR_f32_len64, pSrc, 1, 1)</code>
+* \par
+* computes a 64-point inverse complex FFT including bit reversal.
+* The data structures are treated as constant data and not modified during the
+* calculation.  The same data structure can be reused for multiple transforms
+* including mixing forward and inverse transforms.
+* \par
+* Earlier releases of the library provided separate radix-2 and radix-4
+* algorithms that operated on floating-point data.  These functions are still
+* provided but are deprecated.  The older functions are slower and less general
+* than the new functions.
+* \par
+* An example of initialization of the constants for the arm_cfft_f32 function follows:
+* \code
+* const static arm_cfft_instance_f32 *S;
+* ...
+*   switch (length) {
+*     case 16:
+*       S = &arm_cfft_sR_f32_len16;
+*       break;
+*     case 32:
+*       S = &arm_cfft_sR_f32_len32;
+*       break;
+*     case 64:
+*       S = &arm_cfft_sR_f32_len64;
+*       break;
+*     case 128:
+*       S = &arm_cfft_sR_f32_len128;
+*       break;
+*     case 256:
+*       S = &arm_cfft_sR_f32_len256;
+*       break;
+*     case 512:
+*       S = &arm_cfft_sR_f32_len512;
+*       break;
+*     case 1024:
+*       S = &arm_cfft_sR_f32_len1024;
+*       break;
+*     case 2048:
+*       S = &arm_cfft_sR_f32_len2048;
+*       break;
+*     case 4096:
+*       S = &arm_cfft_sR_f32_len4096;
+*       break;
+*   }
+* \endcode
+* \par Q15 and Q31
+* The floating-point complex FFT uses a mixed-radix algorithm.  Multiple radix-4
+* stages are performed along with a single radix-2 stage, as needed.
+* The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses
+* a different twiddle factor table.  
+* \par
+* The function uses the standard FFT definition and output values may grow by a
+* factor of <code>fftLen</code> when computing the forward transform.  The
+* inverse transform includes a scale of <code>1/fftLen</code> as part of the
+* calculation and this matches the textbook definition of the inverse FFT.
+* \par
+* Pre-initialized data structures containing twiddle factors and bit reversal
+* tables are provided and defined in <code>arm_const_structs.h</code>.  Include 
+* this header in your function and then pass one of the constant structures as 
+* an argument to arm_cfft_q31.  For example:
+* \par
+* <code>arm_cfft_q31(arm_cfft_sR_q31_len64, pSrc, 1, 1)</code>
+* \par
+* computes a 64-point inverse complex FFT including bit reversal.
+* The data structures are treated as constant data and not modified during the
+* calculation.  The same data structure can be reused for multiple transforms
+* including mixing forward and inverse transforms.
+* \par
+* Earlier releases of the library provided separate radix-2 and radix-4
+* algorithms that operated on floating-point data.  These functions are still
+* provided but are deprecated.  The older functions are slower and less general
+* than the new functions.
+* \par
+* An example of initialization of the constants for the arm_cfft_q31 function follows:
+* \code
+* const static arm_cfft_instance_q31 *S;
+* ...
+*   switch (length) {
+*     case 16:
+*       S = &arm_cfft_sR_q31_len16;
+*       break;
+*     case 32:
+*       S = &arm_cfft_sR_q31_len32;
+*       break;
+*     case 64:
+*       S = &arm_cfft_sR_q31_len64;
+*       break;
+*     case 128:
+*       S = &arm_cfft_sR_q31_len128;
+*       break;
+*     case 256:
+*       S = &arm_cfft_sR_q31_len256;
+*       break;
+*     case 512:
+*       S = &arm_cfft_sR_q31_len512;
+*       break;
+*     case 1024:
+*       S = &arm_cfft_sR_q31_len1024;
+*       break;
+*     case 2048:
+*       S = &arm_cfft_sR_q31_len2048;
+*       break;
+*     case 4096:
+*       S = &arm_cfft_sR_q31_len4096;
+*       break;
+*   }
+* \endcode
+* 
+*/
+
+void arm_cfft_radix8by2_f32( arm_cfft_instance_f32 * S, float32_t * p1) 
+{
+    uint32_t    L  = S->fftLen;
+    float32_t * pCol1, * pCol2, * pMid1, * pMid2;
+    float32_t * p2 = p1 + L;
+    const float32_t * tw = (float32_t *) S->pTwiddle;
+    float32_t t1[4], t2[4], t3[4], t4[4], twR, twI;
+    float32_t m0, m1, m2, m3;
+    uint32_t l;
+
+    pCol1 = p1;
+    pCol2 = p2;
+
+    //    Define new length
+    L >>= 1;
+    //    Initialize mid pointers
+    pMid1 = p1 + L;
+    pMid2 = p2 + L;
+
+    // do two dot Fourier transform
+    for ( l = L >> 2; l > 0; l-- ) 
+    {
+        t1[0] = p1[0];
+        t1[1] = p1[1];
+        t1[2] = p1[2];
+        t1[3] = p1[3];
+
+        t2[0] = p2[0];
+        t2[1] = p2[1];
+        t2[2] = p2[2];
+        t2[3] = p2[3];
+
+        t3[0] = pMid1[0];
+        t3[1] = pMid1[1];
+        t3[2] = pMid1[2];
+        t3[3] = pMid1[3];
+
+        t4[0] = pMid2[0];
+        t4[1] = pMid2[1];
+        t4[2] = pMid2[2];
+        t4[3] = pMid2[3];
+
+        *p1++ = t1[0] + t2[0];
+        *p1++ = t1[1] + t2[1];
+        *p1++ = t1[2] + t2[2];
+        *p1++ = t1[3] + t2[3];    // col 1
+
+        t2[0] = t1[0] - t2[0];
+        t2[1] = t1[1] - t2[1];
+        t2[2] = t1[2] - t2[2];
+        t2[3] = t1[3] - t2[3];    // for col 2
+
+        *pMid1++ = t3[0] + t4[0];
+        *pMid1++ = t3[1] + t4[1];
+        *pMid1++ = t3[2] + t4[2];
+        *pMid1++ = t3[3] + t4[3]; // col 1
+
+        t4[0] = t4[0] - t3[0];
+        t4[1] = t4[1] - t3[1];
+        t4[2] = t4[2] - t3[2];
+        t4[3] = t4[3] - t3[3];    // for col 2
+
+        twR = *tw++;
+        twI = *tw++;
+
+        // multiply by twiddle factors
+        m0 = t2[0] * twR;
+        m1 = t2[1] * twI;
+        m2 = t2[1] * twR;
+        m3 = t2[0] * twI;
+        
+        // R  =  R  *  Tr - I * Ti
+        *p2++ = m0 + m1;
+        // I  =  I  *  Tr + R * Ti
+        *p2++ = m2 - m3;
+        
+        // use vertical symmetry
+        //  0.9988 - 0.0491i <==> -0.0491 - 0.9988i
+        m0 = t4[0] * twI;
+        m1 = t4[1] * twR;
+        m2 = t4[1] * twI;
+        m3 = t4[0] * twR;
+        
+        *pMid2++ = m0 - m1;
+        *pMid2++ = m2 + m3;
+
+        twR = *tw++;
+        twI = *tw++;
+        
+        m0 = t2[2] * twR;
+        m1 = t2[3] * twI;
+        m2 = t2[3] * twR;
+        m3 = t2[2] * twI;
+        
+        *p2++ = m0 + m1;
+        *p2++ = m2 - m3;
+        
+        m0 = t4[2] * twI;
+        m1 = t4[3] * twR;
+        m2 = t4[3] * twI;
+        m3 = t4[2] * twR;
+        
+        *pMid2++ = m0 - m1;
+        *pMid2++ = m2 + m3;
+    }
+
+    // first col
+    arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 2u);
+    // second col
+    arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 2u);
+}
+
+void arm_cfft_radix8by4_f32( arm_cfft_instance_f32 * S, float32_t * p1) 
+{
+    uint32_t    L  = S->fftLen >> 1;
+    float32_t * pCol1, *pCol2, *pCol3, *pCol4, *pEnd1, *pEnd2, *pEnd3, *pEnd4;
+    const float32_t *tw2, *tw3, *tw4;
+    float32_t * p2 = p1 + L;
+    float32_t * p3 = p2 + L;
+    float32_t * p4 = p3 + L;
+    float32_t t2[4], t3[4], t4[4], twR, twI;
+    float32_t p1ap3_0, p1sp3_0, p1ap3_1, p1sp3_1;
+    float32_t m0, m1, m2, m3;
+    uint32_t l, twMod2, twMod3, twMod4;
+
+    pCol1 = p1;         // points to real values by default
+    pCol2 = p2;
+    pCol3 = p3;
+    pCol4 = p4;
+    pEnd1 = p2 - 1;     // points to imaginary values by default
+    pEnd2 = p3 - 1;
+    pEnd3 = p4 - 1;
+    pEnd4 = pEnd3 + L;
+
+    tw2 = tw3 = tw4 = (float32_t *) S->pTwiddle;
+
+    L >>= 1;
+
+    // do four dot Fourier transform
+
+    twMod2 = 2;
+    twMod3 = 4;
+    twMod4 = 6;
+
+    // TOP
+    p1ap3_0 = p1[0] + p3[0];
+    p1sp3_0 = p1[0] - p3[0];
+    p1ap3_1 = p1[1] + p3[1];
+    p1sp3_1 = p1[1] - p3[1];
+
+    // col 2
+    t2[0] = p1sp3_0 + p2[1] - p4[1];
+    t2[1] = p1sp3_1 - p2[0] + p4[0];
+    // col 3
+    t3[0] = p1ap3_0 - p2[0] - p4[0];
+    t3[1] = p1ap3_1 - p2[1] - p4[1];
+    // col 4
+    t4[0] = p1sp3_0 - p2[1] + p4[1];
+    t4[1] = p1sp3_1 + p2[0] - p4[0];
+    // col 1
+    *p1++ = p1ap3_0 + p2[0] + p4[0];
+    *p1++ = p1ap3_1 + p2[1] + p4[1];
+
+    // Twiddle factors are ones
+    *p2++ = t2[0];
+    *p2++ = t2[1];
+    *p3++ = t3[0];
+    *p3++ = t3[1];
+    *p4++ = t4[0];
+    *p4++ = t4[1];
+
+    tw2 += twMod2;
+    tw3 += twMod3;
+    tw4 += twMod4;
+
+    for (l = (L - 2) >> 1; l > 0; l-- ) 
+    {
+        // TOP
+        p1ap3_0 = p1[0] + p3[0];
+        p1sp3_0 = p1[0] - p3[0];
+        p1ap3_1 = p1[1] + p3[1];
+        p1sp3_1 = p1[1] - p3[1];
+        // col 2
+        t2[0] = p1sp3_0 + p2[1] - p4[1];
+        t2[1] = p1sp3_1 - p2[0] + p4[0];
+        // col 3
+        t3[0] = p1ap3_0 - p2[0] - p4[0];
+        t3[1] = p1ap3_1 - p2[1] - p4[1];
+        // col 4
+        t4[0] = p1sp3_0 - p2[1] + p4[1];
+        t4[1] = p1sp3_1 + p2[0] - p4[0];
+        // col 1 - top
+        *p1++ = p1ap3_0 + p2[0] + p4[0];
+        *p1++ = p1ap3_1 + p2[1] + p4[1];
+
+        // BOTTOM
+        p1ap3_1 = pEnd1[-1] + pEnd3[-1];
+        p1sp3_1 = pEnd1[-1] - pEnd3[-1];
+        p1ap3_0 = pEnd1[0] + pEnd3[0];
+        p1sp3_0 = pEnd1[0] - pEnd3[0];
+        // col 2
+        t2[2] = pEnd2[0]  - pEnd4[0] + p1sp3_1;
+        t2[3] = pEnd1[0] - pEnd3[0] - pEnd2[-1] + pEnd4[-1];
+        // col 3
+        t3[2] = p1ap3_1 - pEnd2[-1] - pEnd4[-1];
+        t3[3] = p1ap3_0 - pEnd2[0]  - pEnd4[0];
+        // col 4
+        t4[2] = pEnd2[0]  - pEnd4[0]  - p1sp3_1;
+        t4[3] = pEnd4[-1] - pEnd2[-1] - p1sp3_0;
+        // col 1 - Bottom
+        *pEnd1-- = p1ap3_0 + pEnd2[0] + pEnd4[0];
+        *pEnd1-- = p1ap3_1 + pEnd2[-1] + pEnd4[-1];
+
+        // COL 2
+        // read twiddle factors
+        twR = *tw2++;
+        twI = *tw2++;
+        // multiply by twiddle factors
+        //  let    Z1 = a + i(b),   Z2 = c + i(d)
+        //   =>  Z1 * Z2  =  (a*c - b*d) + i(b*c + a*d)
+        
+        // Top
+        m0 = t2[0] * twR;
+        m1 = t2[1] * twI;
+        m2 = t2[1] * twR;
+        m3 = t2[0] * twI;
+        
+        *p2++ = m0 + m1;
+        *p2++ = m2 - m3;
+        // use vertical symmetry col 2
+        // 0.9997 - 0.0245i  <==>  0.0245 - 0.9997i
+        // Bottom
+        m0 = t2[3] * twI;
+        m1 = t2[2] * twR;
+        m2 = t2[2] * twI;
+        m3 = t2[3] * twR;
+        
+        *pEnd2-- = m0 - m1;
+        *pEnd2-- = m2 + m3;
+
+        // COL 3
+        twR = tw3[0];
+        twI = tw3[1];
+        tw3 += twMod3;
+        // Top
+        m0 = t3[0] * twR;
+        m1 = t3[1] * twI;
+        m2 = t3[1] * twR;
+        m3 = t3[0] * twI;
+        
+        *p3++ = m0 + m1;
+        *p3++ = m2 - m3;
+        // use vertical symmetry col 3
+        // 0.9988 - 0.0491i  <==>  -0.9988 - 0.0491i
+        // Bottom
+        m0 = -t3[3] * twR;
+        m1 = t3[2] * twI;
+        m2 = t3[2] * twR;
+        m3 = t3[3] * twI;
+        
+        *pEnd3-- = m0 - m1;
+        *pEnd3-- = m3 - m2;
+        
+        // COL 4
+        twR = tw4[0];
+        twI = tw4[1];
+        tw4 += twMod4;
+        // Top
+        m0 = t4[0] * twR;
+        m1 = t4[1] * twI;
+        m2 = t4[1] * twR;
+        m3 = t4[0] * twI;
+        
+        *p4++ = m0 + m1;
+        *p4++ = m2 - m3;
+        // use vertical symmetry col 4
+        // 0.9973 - 0.0736i  <==>  -0.0736 + 0.9973i
+        // Bottom
+        m0 = t4[3] * twI;
+        m1 = t4[2] * twR;
+        m2 = t4[2] * twI;
+        m3 = t4[3] * twR;
+        
+        *pEnd4-- = m0 - m1;
+        *pEnd4-- = m2 + m3;
+    }
+
+    //MIDDLE
+    // Twiddle factors are 
+    //  1.0000  0.7071-0.7071i  -1.0000i  -0.7071-0.7071i
+    p1ap3_0 = p1[0] + p3[0];
+    p1sp3_0 = p1[0] - p3[0];
+    p1ap3_1 = p1[1] + p3[1];
+    p1sp3_1 = p1[1] - p3[1];
+
+    // col 2
+    t2[0] = p1sp3_0 + p2[1] - p4[1];
+    t2[1] = p1sp3_1 - p2[0] + p4[0];
+    // col 3
+    t3[0] = p1ap3_0 - p2[0] - p4[0];
+    t3[1] = p1ap3_1 - p2[1] - p4[1];
+    // col 4
+    t4[0] = p1sp3_0 - p2[1] + p4[1];
+    t4[1] = p1sp3_1 + p2[0] - p4[0];
+    // col 1 - Top
+    *p1++ = p1ap3_0 + p2[0] + p4[0];
+    *p1++ = p1ap3_1 + p2[1] + p4[1];
+
+    // COL 2
+    twR = tw2[0];
+    twI = tw2[1];
+
+    m0 = t2[0] * twR;
+    m1 = t2[1] * twI;
+    m2 = t2[1] * twR;
+    m3 = t2[0] * twI;
+
+    *p2++ = m0 + m1;
+    *p2++ = m2 - m3;
+    // COL 3
+    twR = tw3[0];
+    twI = tw3[1];
+
+    m0 = t3[0] * twR;
+    m1 = t3[1] * twI;
+    m2 = t3[1] * twR;
+    m3 = t3[0] * twI;
+
+    *p3++ = m0 + m1;
+    *p3++ = m2 - m3;
+    // COL 4
+    twR = tw4[0];
+    twI = tw4[1];
+
+    m0 = t4[0] * twR;
+    m1 = t4[1] * twI;
+    m2 = t4[1] * twR;
+    m3 = t4[0] * twI;
+
+    *p4++ = m0 + m1;
+    *p4++ = m2 - m3;
+
+    // first col
+    arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 4u);
+    // second col
+    arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 4u);
+    // third col
+    arm_radix8_butterfly_f32( pCol3, L, (float32_t *) S->pTwiddle, 4u);
+    // fourth col
+    arm_radix8_butterfly_f32( pCol4, L, (float32_t *) S->pTwiddle, 4u);
+}
+
+/**
+* @addtogroup ComplexFFT   
+* @{   
+*/
+
+/**   
+* @details   
+* @brief       Processing function for the floating-point complex FFT.
+* @param[in]      *S    points to an instance of the floating-point CFFT structure.  
+* @param[in, out] *p1   points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.  
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.  
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.  
+* @return none.  
+*/
+
+void arm_cfft_f32( 
+    const arm_cfft_instance_f32 * S, 
+    float32_t * p1,
+    uint8_t ifftFlag,
+    uint8_t bitReverseFlag)
+{
+    uint32_t  L = S->fftLen, l;
+    float32_t invL, * pSrc;
+
+    if(ifftFlag == 1u)
+    {
+        /*  Conjugate input data  */
+        pSrc = p1 + 1;
+        for(l=0; l<L; l++) 
+        {
+            *pSrc = -*pSrc;
+            pSrc += 2;
+        }
+    }
+
+    switch (L) 
+    {
+    case 16: 
+    case 128:
+    case 1024:
+        arm_cfft_radix8by2_f32  ( (arm_cfft_instance_f32 *) S, p1);
+        break;
+    case 32:
+    case 256:
+    case 2048:
+        arm_cfft_radix8by4_f32  ( (arm_cfft_instance_f32 *) S, p1);
+        break;
+    case 64:
+    case 512:
+    case 4096:
+        arm_radix8_butterfly_f32( p1, L, (float32_t *) S->pTwiddle, 1);
+        break;
+    }  
+
+    if( bitReverseFlag )
+        arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable);
+
+    if(ifftFlag == 1u)
+    {
+        invL = 1.0f/(float32_t)L;
+        /*  Conjugate and scale output data */
+        pSrc = p1;
+        for(l=0; l<L; l++) 
+        {
+            *pSrc++ *=   invL ;
+            *pSrc  = -(*pSrc) * invL;
+            pSrc++;
+        }
+    }
+}
+
+/**    
+* @} end of ComplexFFT group    
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,357 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_q15.c   
+*    
+* Description:	Combined Radix Decimation in Q15 Frequency CFFT processing function
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+extern void arm_radix4_butterfly_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    q15_t * pCoef,
+    uint32_t twidCoefModifier);
+
+extern void arm_radix4_butterfly_inverse_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    q15_t * pCoef,
+    uint32_t twidCoefModifier);
+
+extern void arm_bitreversal_16(
+    uint16_t * pSrc,
+    const uint16_t bitRevLen,
+    const uint16_t * pBitRevTable);
+    
+void arm_cfft_radix4by2_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    const q15_t * pCoef);
+    
+void arm_cfft_radix4by2_inverse_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    const q15_t * pCoef);
+
+/**   
+* @ingroup groupTransforms   
+*/
+
+/**
+* @addtogroup ComplexFFT   
+* @{   
+*/
+
+/**   
+* @details   
+* @brief       Processing function for the Q15 complex FFT.
+* @param[in]      *S    points to an instance of the Q15 CFFT structure.  
+* @param[in, out] *p1   points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.  
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.  
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.  
+* @return none.  
+*/
+
+void arm_cfft_q15( 
+    const arm_cfft_instance_q15 * S, 
+    q15_t * p1,
+    uint8_t ifftFlag,
+    uint8_t bitReverseFlag)
+{
+    uint32_t L = S->fftLen;
+
+    if(ifftFlag == 1u)
+    {
+        switch (L) 
+        {
+        case 16: 
+        case 64:
+        case 256:
+        case 1024:
+        case 4096:
+            arm_radix4_butterfly_inverse_q15  ( p1, L, (q15_t*)S->pTwiddle, 1 );
+            break;
+            
+        case 32:
+        case 128:
+        case 512:
+        case 2048:
+            arm_cfft_radix4by2_inverse_q15  ( p1, L, S->pTwiddle );
+            break;
+        }  
+    }
+    else
+    {
+        switch (L) 
+        {
+        case 16: 
+        case 64:
+        case 256:
+        case 1024:
+        case 4096:
+            arm_radix4_butterfly_q15  ( p1, L, (q15_t*)S->pTwiddle, 1 );
+            break;
+            
+        case 32:
+        case 128:
+        case 512:
+        case 2048:
+            arm_cfft_radix4by2_q15  ( p1, L, S->pTwiddle );
+            break;
+        }  
+    }
+    
+    if( bitReverseFlag )
+        arm_bitreversal_16((uint16_t*)p1,S->bitRevLength,S->pBitRevTable);    
+}
+
+/**    
+* @} end of ComplexFFT group    
+*/
+
+void arm_cfft_radix4by2_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    const q15_t * pCoef) 
+{    
+    uint32_t i;
+    uint32_t n2;
+    q15_t p0, p1, p2, p3;
+#ifndef ARM_MATH_CM0_FAMILY
+    q31_t T, S, R;
+    q31_t coeff, out1, out2;
+    const q15_t *pC = pCoef;
+    q15_t *pSi = pSrc;
+    q15_t *pSl = pSrc + fftLen;
+#else
+    uint32_t ia, l;
+    q15_t xt, yt, cosVal, sinVal;
+#endif
+    
+    n2 = fftLen >> 1; 
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    for (i = n2; i > 0; i--)
+    {
+        coeff = _SIMD32_OFFSET(pC);
+        pC += 2;
+
+        T = _SIMD32_OFFSET(pSi);
+        T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1
+
+        S = _SIMD32_OFFSET(pSl);
+        S = __SHADD16(S, 0); // this is just a SIMD arithmetic shift right by 1
+
+        R = __QSUB16(T, S);
+
+        _SIMD32_OFFSET(pSi) = __SHADD16(T, S);
+        pSi += 2;
+
+    #ifndef ARM_MATH_BIG_ENDIAN
+
+        out1 = __SMUAD(coeff, R) >> 16;
+        out2 = __SMUSDX(coeff, R);
+
+    #else
+
+        out1 = __SMUSDX(R, coeff) >> 16u;
+        out2 = __SMUAD(coeff, R);
+
+    #endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+        _SIMD32_OFFSET(pSl) =
+        (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+        pSl += 2;
+    } 
+    
+#else //    #ifndef ARM_MATH_CM0_FAMILY
+    
+    ia = 0;
+    for (i = 0; i < n2; i++)
+    {
+        cosVal = pCoef[ia * 2];
+        sinVal = pCoef[(ia * 2) + 1];
+        ia++;
+        
+        l = i + n2;        
+        
+        xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+        pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
+        
+        yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
+        pSrc[2 * i + 1] =
+        ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
+
+        pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) +
+                  ((int16_t) (((q31_t) yt * sinVal) >> 16)));
+
+        pSrc[2u * l + 1u] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) -
+                       ((int16_t) (((q31_t) xt * sinVal) >> 16)));
+    } 
+    
+#endif //    #ifndef ARM_MATH_CM0_FAMILY
+    
+    // first col
+    arm_radix4_butterfly_q15( pSrc, n2, (q15_t*)pCoef, 2u);
+    // second col
+    arm_radix4_butterfly_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2u);
+			
+    for (i = 0; i < fftLen >> 1; i++)
+    {
+        p0 = pSrc[4*i+0];
+        p1 = pSrc[4*i+1];
+        p2 = pSrc[4*i+2];
+        p3 = pSrc[4*i+3];
+        
+        p0 <<= 1;
+        p1 <<= 1;
+        p2 <<= 1;
+        p3 <<= 1;
+        
+        pSrc[4*i+0] = p0;
+        pSrc[4*i+1] = p1;
+        pSrc[4*i+2] = p2;
+        pSrc[4*i+3] = p3;
+    }
+}
+
+void arm_cfft_radix4by2_inverse_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    const q15_t * pCoef) 
+{    
+    uint32_t i;
+    uint32_t n2;
+    q15_t p0, p1, p2, p3;
+#ifndef ARM_MATH_CM0_FAMILY
+    q31_t T, S, R;
+    q31_t coeff, out1, out2;
+    const q15_t *pC = pCoef;
+    q15_t *pSi = pSrc;
+    q15_t *pSl = pSrc + fftLen;
+#else
+    uint32_t ia, l;
+    q15_t xt, yt, cosVal, sinVal;
+#endif
+    
+    n2 = fftLen >> 1; 
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    for (i = n2; i > 0; i--)
+    {
+        coeff = _SIMD32_OFFSET(pC);
+        pC += 2;
+
+        T = _SIMD32_OFFSET(pSi);
+        T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1
+
+        S = _SIMD32_OFFSET(pSl);
+        S = __SHADD16(S, 0); // this is just a SIMD arithmetic shift right by 1
+
+        R = __QSUB16(T, S);
+
+        _SIMD32_OFFSET(pSi) = __SHADD16(T, S);
+        pSi += 2;
+
+    #ifndef ARM_MATH_BIG_ENDIAN
+
+        out1 = __SMUSD(coeff, R) >> 16;
+        out2 = __SMUADX(coeff, R);
+    #else
+
+        out1 = __SMUADX(R, coeff) >> 16u;
+        out2 = __SMUSD(__QSUB(0, coeff), R);
+
+    #endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+        _SIMD32_OFFSET(pSl) =
+        (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);        
+        pSl += 2;
+    } 
+    
+#else //    #ifndef ARM_MATH_CM0_FAMILY
+
+    ia = 0;
+    for (i = 0; i < n2; i++)
+    {
+        cosVal = pCoef[ia * 2];
+        sinVal = pCoef[(ia * 2) + 1];
+        ia++;
+        
+        l = i + n2;
+        xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+        pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
+        
+        yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
+        pSrc[2 * i + 1] =
+          ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
+        
+        pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) -
+                        ((int16_t) (((q31_t) yt * sinVal) >> 16)));
+        
+        pSrc[2u * l + 1u] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) +
+                           ((int16_t) (((q31_t) xt * sinVal) >> 16)));
+    } 
+    
+#endif //    #ifndef ARM_MATH_CM0_FAMILY
+
+    // first col
+    arm_radix4_butterfly_inverse_q15( pSrc, n2, (q15_t*)pCoef, 2u);
+    // second col
+    arm_radix4_butterfly_inverse_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2u);
+			
+    for (i = 0; i < fftLen >> 1; i++)
+    {
+        p0 = pSrc[4*i+0];
+        p1 = pSrc[4*i+1];
+        p2 = pSrc[4*i+2];
+        p3 = pSrc[4*i+3];
+        
+        p0 <<= 1;
+        p1 <<= 1;
+        p2 <<= 1;
+        p3 <<= 1;
+        
+        pSrc[4*i+0] = p0;
+        pSrc[4*i+1] = p1;
+        pSrc[4*i+2] = p2;
+        pSrc[4*i+3] = p3;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,264 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_q31.c   
+*    
+* Description:	Combined Radix Decimation in Frequency CFFT fixed point processing function
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+extern void arm_radix4_butterfly_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    q31_t * pCoef,
+    uint32_t twidCoefModifier);
+
+extern void arm_radix4_butterfly_inverse_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    q31_t * pCoef,
+    uint32_t twidCoefModifier);
+
+extern void arm_bitreversal_32(
+    uint32_t * pSrc,
+    const uint16_t bitRevLen,
+    const uint16_t * pBitRevTable);
+    
+void arm_cfft_radix4by2_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    const q31_t * pCoef);
+    
+void arm_cfft_radix4by2_inverse_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    const q31_t * pCoef);
+
+/**   
+* @ingroup groupTransforms   
+*/
+
+/**
+* @addtogroup ComplexFFT   
+* @{   
+*/
+
+/**   
+* @details   
+* @brief       Processing function for the fixed-point complex FFT in Q31 format.
+* @param[in]      *S    points to an instance of the fixed-point CFFT structure.  
+* @param[in, out] *p1   points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.  
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.  
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.  
+* @return none.  
+*/
+
+void arm_cfft_q31( 
+    const arm_cfft_instance_q31 * S, 
+    q31_t * p1,
+    uint8_t ifftFlag,
+    uint8_t bitReverseFlag)
+{
+    uint32_t L = S->fftLen;
+
+    if(ifftFlag == 1u)
+    {
+        switch (L) 
+        {
+        case 16: 
+        case 64:
+        case 256:
+        case 1024:
+        case 4096:
+            arm_radix4_butterfly_inverse_q31  ( p1, L, (q31_t*)S->pTwiddle, 1 );
+            break;
+            
+        case 32:
+        case 128:
+        case 512:
+        case 2048:
+            arm_cfft_radix4by2_inverse_q31  ( p1, L, S->pTwiddle );
+            break;
+        }  
+    }
+    else
+    {
+        switch (L) 
+        {
+        case 16: 
+        case 64:
+        case 256:
+        case 1024:
+        case 4096:
+            arm_radix4_butterfly_q31  ( p1, L, (q31_t*)S->pTwiddle, 1 );
+            break;
+            
+        case 32:
+        case 128:
+        case 512:
+        case 2048:
+            arm_cfft_radix4by2_q31  ( p1, L, S->pTwiddle );
+            break;
+        }  
+    }
+    
+    if( bitReverseFlag )
+        arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable);    
+}
+
+/**    
+* @} end of ComplexFFT group    
+*/
+
+void arm_cfft_radix4by2_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    const q31_t * pCoef) 
+{    
+    uint32_t i, l;
+    uint32_t n2, ia;
+    q31_t xt, yt, cosVal, sinVal;
+    q31_t p0, p1;
+    
+    n2 = fftLen >> 1;    
+    ia = 0;
+    for (i = 0; i < n2; i++)
+    {
+        cosVal = pCoef[2*ia];
+        sinVal = pCoef[2*ia + 1];
+        ia++;
+        
+        l = i + n2;
+        xt = (pSrc[2 * i] >> 2) - (pSrc[2 * l] >> 2);
+        pSrc[2 * i] = (pSrc[2 * i] >> 2) + (pSrc[2 * l] >> 2);
+        
+        yt = (pSrc[2 * i + 1] >> 2) - (pSrc[2 * l + 1] >> 2);
+        pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2) + (pSrc[2 * i + 1] >> 2);
+        
+        mult_32x32_keep32_R(p0, xt, cosVal);
+        mult_32x32_keep32_R(p1, yt, cosVal);
+        multAcc_32x32_keep32_R(p0, yt, sinVal); 
+        multSub_32x32_keep32_R(p1, xt, sinVal);
+        
+        pSrc[2u * l] = p0 << 1;
+        pSrc[2u * l + 1u] = p1 << 1;
+    
+    }
+
+    // first col
+    arm_radix4_butterfly_q31( pSrc, n2, (q31_t*)pCoef, 2u);
+    // second col
+    arm_radix4_butterfly_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2u);
+			
+    for (i = 0; i < fftLen >> 1; i++)
+    {
+        p0 = pSrc[4*i+0];
+        p1 = pSrc[4*i+1];
+        xt = pSrc[4*i+2];
+        yt = pSrc[4*i+3];
+        
+        p0 <<= 1;
+        p1 <<= 1;
+        xt <<= 1;
+        yt <<= 1;
+        
+        pSrc[4*i+0] = p0;
+        pSrc[4*i+1] = p1;
+        pSrc[4*i+2] = xt;
+        pSrc[4*i+3] = yt;
+    }
+
+}
+
+void arm_cfft_radix4by2_inverse_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    const q31_t * pCoef) 
+{    
+    uint32_t i, l;
+    uint32_t n2, ia;
+    q31_t xt, yt, cosVal, sinVal;
+    q31_t p0, p1;
+    
+    n2 = fftLen >> 1;    
+    ia = 0;
+    for (i = 0; i < n2; i++)
+    {
+        cosVal = pCoef[2*ia];
+        sinVal = pCoef[2*ia + 1];
+        ia++;
+        
+        l = i + n2;
+        xt = (pSrc[2 * i] >> 2) - (pSrc[2 * l] >> 2);
+        pSrc[2 * i] = (pSrc[2 * i] >> 2) + (pSrc[2 * l] >> 2);
+        
+        yt = (pSrc[2 * i + 1] >> 2) - (pSrc[2 * l + 1] >> 2);
+        pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2) + (pSrc[2 * i + 1] >> 2);
+        
+        mult_32x32_keep32_R(p0, xt, cosVal);
+        mult_32x32_keep32_R(p1, yt, cosVal);
+        multSub_32x32_keep32_R(p0, yt, sinVal); 
+        multAcc_32x32_keep32_R(p1, xt, sinVal);
+        
+        pSrc[2u * l] = p0 << 1;
+        pSrc[2u * l + 1u] = p1 << 1;
+    
+    }
+
+    // first col
+    arm_radix4_butterfly_inverse_q31( pSrc, n2, (q31_t*)pCoef, 2u);
+    // second col
+    arm_radix4_butterfly_inverse_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2u);
+			
+    for (i = 0; i < fftLen >> 1; i++)
+    {
+        p0 = pSrc[4*i+0];
+        p1 = pSrc[4*i+1];
+        xt = pSrc[4*i+2];
+        yt = pSrc[4*i+3];
+        
+        p0 <<= 1;
+        p1 <<= 1;
+        xt <<= 1;
+        yt <<= 1;
+        
+        pSrc[4*i+0] = p0;
+        pSrc[4*i+1] = p1;
+        pSrc[4*i+2] = xt;
+        pSrc[4*i+3] = yt;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,485 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cfft_radix2_f32.c   
+*   
+* Description:	Radix-2 Decimation in Frequency CFFT & CIFFT Floating point processing function   
+*   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+void arm_radix2_butterfly_f32(
+  float32_t * pSrc,
+  uint32_t fftLen,
+  float32_t * pCoef,
+  uint16_t twidCoefModifier);
+
+void arm_radix2_butterfly_inverse_f32(
+  float32_t * pSrc,
+  uint32_t fftLen,
+  float32_t * pCoef,
+  uint16_t twidCoefModifier,
+  float32_t onebyfftLen);
+
+extern void arm_bitreversal_f32(
+    float32_t * pSrc,
+    uint16_t fftSize,
+    uint16_t bitRevFactor,
+    uint16_t * pBitRevTab);
+
+/**   
+* @ingroup groupTransforms   
+*/
+
+/**   
+* @addtogroup ComplexFFT   
+* @{   
+*/
+
+/**   
+* @details
+* @brief Radix-2 CFFT/CIFFT.
+* @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_f32 and will be removed
+* in the future.
+* @param[in]      *S    points to an instance of the floating-point Radix-2 CFFT/CIFFT structure.  
+* @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.  
+* @return none.
+*/
+
+void arm_cfft_radix2_f32(
+const arm_cfft_radix2_instance_f32 * S,
+float32_t * pSrc)
+{
+
+   if(S->ifftFlag == 1u)
+   {
+      /*  Complex IFFT radix-2  */
+      arm_radix2_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle,
+      S->twidCoefModifier, S->onebyfftLen);
+   }
+   else
+   {
+      /*  Complex FFT radix-2  */
+      arm_radix2_butterfly_f32(pSrc, S->fftLen, S->pTwiddle,
+      S->twidCoefModifier);
+   }
+
+   if(S->bitReverseFlag == 1u)
+   {
+      /*  Bit Reversal */
+      arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);
+   }
+
+}
+
+
+/**    
+* @} end of ComplexFFT group    
+*/
+
+
+
+/* ----------------------------------------------------------------------    
+** Internal helper function used by the FFTs    
+** ------------------------------------------------------------------- */
+
+/*    
+* @brief  Core function for the floating-point CFFT butterfly process.   
+* @param[in, out] *pSrc            points to the in-place buffer of floating-point data type.   
+* @param[in]      fftLen           length of the FFT.   
+* @param[in]      *pCoef           points to the twiddle coefficient buffer.   
+* @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+* @return none.   
+*/
+
+void arm_radix2_butterfly_f32(
+float32_t * pSrc,
+uint32_t fftLen,
+float32_t * pCoef,
+uint16_t twidCoefModifier)
+{
+
+   uint32_t i, j, k, l;
+   uint32_t n1, n2, ia;
+   float32_t xt, yt, cosVal, sinVal;
+   float32_t p0, p1, p2, p3;
+   float32_t a0, a1;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+   /*  Initializations for the first stage */
+   n2 = fftLen >> 1;
+   ia = 0;
+   i = 0;
+
+   // loop for groups 
+   for (k = n2; k > 0; k--)
+   {
+      cosVal = pCoef[ia * 2];
+      sinVal = pCoef[(ia * 2) + 1];
+
+      /*  Twiddle coefficients index modifier */
+      ia += twidCoefModifier;
+
+      /*  index calculation for the input as, */
+      /*  pSrc[i + 0], pSrc[i + fftLen/1] */
+      l = i + n2;
+
+      /*  Butterfly implementation */
+      a0 = pSrc[2 * i] + pSrc[2 * l];
+      xt = pSrc[2 * i] - pSrc[2 * l];
+
+      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+      a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
+      
+      p0 = xt * cosVal;
+      p1 = yt * sinVal;
+      p2 = yt * cosVal;
+      p3 = xt * sinVal;  
+      
+      pSrc[2 * i]     = a0;   
+      pSrc[2 * i + 1] = a1;       
+      
+      pSrc[2 * l]     = p0 + p1;
+      pSrc[2 * l + 1] = p2 - p3;
+      
+      i++;
+   }                             // groups loop end 
+
+   twidCoefModifier <<= 1u;
+
+   // loop for stage 
+   for (k = n2; k > 2; k = k >> 1)
+   {
+      n1 = n2;
+      n2 = n2 >> 1;
+      ia = 0;
+
+      // loop for groups 
+      j = 0;
+      do
+      {
+         cosVal = pCoef[ia * 2];
+         sinVal = pCoef[(ia * 2) + 1];
+         ia += twidCoefModifier;
+
+         // loop for butterfly 
+         i = j;
+         do
+         {
+            l = i + n2;
+            a0 = pSrc[2 * i] + pSrc[2 * l];
+            xt = pSrc[2 * i] - pSrc[2 * l];
+
+            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+            a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
+            
+            p0 = xt * cosVal;
+            p1 = yt * sinVal;
+            p2 = yt * cosVal;
+            p3 = xt * sinVal;  
+            
+            pSrc[2 * i] = a0;   
+            pSrc[2 * i + 1] = a1;       
+            
+            pSrc[2 * l]     = p0 + p1;
+            pSrc[2 * l + 1] = p2 - p3;
+            
+            i += n1;
+         } while( i < fftLen );                        // butterfly loop end 
+         j++;
+      } while( j < n2);                          // groups loop end 
+      twidCoefModifier <<= 1u;
+   }                             // stages loop end 
+
+   // loop for butterfly 
+   for (i = 0; i < fftLen; i += 2)
+   {
+      a0 = pSrc[2 * i] + pSrc[2 * i + 2];
+      xt = pSrc[2 * i] - pSrc[2 * i + 2];
+
+      yt = pSrc[2 * i + 1] - pSrc[2 * i + 3];
+      a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1];
+      
+      pSrc[2 * i] = a0;   
+      pSrc[2 * i + 1] = a1;
+      pSrc[2 * i + 2] = xt;
+      pSrc[2 * i + 3] = yt;
+   }                             // groups loop end 
+
+#else
+ 
+   n2 = fftLen;
+
+   // loop for stage 
+   for (k = fftLen; k > 1; k = k >> 1)
+   {
+      n1 = n2;
+      n2 = n2 >> 1;
+      ia = 0;
+
+      // loop for groups 
+      j = 0;
+      do
+      {
+         cosVal = pCoef[ia * 2];
+         sinVal = pCoef[(ia * 2) + 1];
+         ia += twidCoefModifier;
+
+         // loop for butterfly 
+         i = j;
+         do
+         {
+            l = i + n2;
+            a0 = pSrc[2 * i] + pSrc[2 * l];
+            xt = pSrc[2 * i] - pSrc[2 * l];
+
+            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+            a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
+            
+            p0 = xt * cosVal;
+            p1 = yt * sinVal;
+            p2 = yt * cosVal;
+            p3 = xt * sinVal;  
+            
+            pSrc[2 * i] = a0;   
+            pSrc[2 * i + 1] = a1;       
+            
+            pSrc[2 * l]     = p0 + p1;
+            pSrc[2 * l + 1] = p2 - p3;
+            
+            i += n1;
+         } while(i < fftLen);
+         j++;
+      } while(j < n2);
+      twidCoefModifier <<= 1u;
+   }
+
+#endif //    #ifndef ARM_MATH_CM0_FAMILY
+
+}
+
+
+void arm_radix2_butterfly_inverse_f32(
+float32_t * pSrc,
+uint32_t fftLen,
+float32_t * pCoef,
+uint16_t twidCoefModifier,
+float32_t onebyfftLen)
+{
+
+   uint32_t i, j, k, l;
+   uint32_t n1, n2, ia;
+   float32_t xt, yt, cosVal, sinVal;
+   float32_t p0, p1, p2, p3;
+   float32_t a0, a1;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+   n2 = fftLen >> 1;
+   ia = 0;
+
+   // loop for groups 
+   for (i = 0; i < n2; i++)
+   {
+      cosVal = pCoef[ia * 2];
+      sinVal = pCoef[(ia * 2) + 1];
+      ia += twidCoefModifier;
+
+      l = i + n2;
+      a0 = pSrc[2 * i] + pSrc[2 * l];
+      xt = pSrc[2 * i] - pSrc[2 * l];
+
+      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+      a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
+      
+      p0 = xt * cosVal;
+      p1 = yt * sinVal;
+      p2 = yt * cosVal;
+      p3 = xt * sinVal;  
+      
+      pSrc[2 * i] = a0;   
+      pSrc[2 * i + 1] = a1;       
+      
+      pSrc[2 * l]     = p0 - p1;
+      pSrc[2 * l + 1] = p2 + p3;  
+   }                             // groups loop end 
+
+   twidCoefModifier <<= 1u;
+
+   // loop for stage 
+   for (k = fftLen / 2; k > 2; k = k >> 1)
+   {
+      n1 = n2;
+      n2 = n2 >> 1;
+      ia = 0;
+
+      // loop for groups 
+      j = 0;
+      do
+      {
+         cosVal = pCoef[ia * 2];
+         sinVal = pCoef[(ia * 2) + 1];
+         ia += twidCoefModifier;
+
+         // loop for butterfly 
+         i = j;
+         do
+         {
+            l = i + n2;
+            a0 = pSrc[2 * i] + pSrc[2 * l];
+            xt = pSrc[2 * i] - pSrc[2 * l];
+
+            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+            a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
+            
+            p0 = xt * cosVal;
+            p1 = yt * sinVal;
+            p2 = yt * cosVal;
+            p3 = xt * sinVal;  
+            
+            pSrc[2 * i] = a0;   
+            pSrc[2 * i + 1] = a1;       
+            
+            pSrc[2 * l]     = p0 - p1;
+            pSrc[2 * l + 1] = p2 + p3; 
+
+            i += n1;
+         } while( i < fftLen );                 // butterfly loop end 
+         j++;
+      } while(j < n2);                      // groups loop end 
+
+      twidCoefModifier <<= 1u;
+   }                             // stages loop end 
+
+   // loop for butterfly 
+   for (i = 0; i < fftLen; i += 2)
+   {   
+      a0 = pSrc[2 * i] + pSrc[2 * i + 2];
+      xt = pSrc[2 * i] - pSrc[2 * i + 2];
+      
+      a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1];
+      yt = pSrc[2 * i + 1] - pSrc[2 * i + 3];
+      
+      p0 = a0 * onebyfftLen;
+      p2 = xt * onebyfftLen;
+      p1 = a1 * onebyfftLen;
+      p3 = yt * onebyfftLen; 
+      
+      pSrc[2 * i] = p0;
+      pSrc[2 * i + 1] = p1;  
+      pSrc[2 * i + 2] = p2;       
+      pSrc[2 * i + 3] = p3;
+   }                             // butterfly loop end 
+
+#else
+
+   n2 = fftLen;
+
+   // loop for stage 
+   for (k = fftLen; k > 2; k = k >> 1)
+   {
+      n1 = n2;
+      n2 = n2 >> 1;
+      ia = 0;
+
+      // loop for groups 
+      j = 0;
+      do
+      {
+         cosVal = pCoef[ia * 2];
+         sinVal = pCoef[(ia * 2) + 1];
+         ia = ia + twidCoefModifier;
+
+         // loop for butterfly 
+         i = j;
+         do
+         {
+            l = i + n2;
+            a0 = pSrc[2 * i] + pSrc[2 * l];
+            xt = pSrc[2 * i] - pSrc[2 * l];
+
+            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+            a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
+            
+            p0 = xt * cosVal;
+            p1 = yt * sinVal;
+            p2 = yt * cosVal;
+            p3 = xt * sinVal;  
+            
+            pSrc[2 * i] = a0;   
+            pSrc[2 * i + 1] = a1;       
+            
+            pSrc[2 * l]     = p0 - p1;
+            pSrc[2 * l + 1] = p2 + p3;  
+            
+            i += n1;
+         } while( i < fftLen );                    // butterfly loop end 
+         j++;
+      } while( j < n2 );                      // groups loop end 
+
+      twidCoefModifier = twidCoefModifier << 1u;
+   }                             // stages loop end 
+
+   n1 = n2;
+   n2 = n2 >> 1;
+
+   // loop for butterfly 
+   for (i = 0; i < fftLen; i += n1)
+   {
+      l = i + n2;
+      
+      a0 = pSrc[2 * i] + pSrc[2 * l];
+      xt = pSrc[2 * i] - pSrc[2 * l];
+      
+      a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1];
+      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+      
+      p0 = a0 * onebyfftLen;
+      p2 = xt * onebyfftLen;
+      p1 = a1 * onebyfftLen;
+      p3 = yt * onebyfftLen; 
+      
+      pSrc[2 * i] = p0;
+      pSrc[2u * l] = p2;
+     
+      pSrc[2 * i + 1] = p1;    
+      pSrc[2u * l + 1u] = p3;
+   }                             // butterfly loop end 
+
+#endif //      #ifndef ARM_MATH_CM0_FAMILY
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,205 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cfft_radix4_init_f32.c   
+*   
+* Description:	Radix-4 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**   
+ * @ingroup groupTransforms   
+ */
+
+/**   
+ * @addtogroup ComplexFFT   
+ * @{   
+ */
+
+/**   
+* @brief  Initialization function for the floating-point CFFT/CIFFT.  
+* @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_f32 and will be removed
+* in the future.
+* @param[in,out] *S             points to an instance of the floating-point CFFT/CIFFT structure.  
+* @param[in]     fftLen         length of the FFT.  
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.  
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.  
+* @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.  
+*   
+* \par Description:  
+* \par   
+* The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.   
+* Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated  
+* \par   
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.   
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.   
+* \par   
+* The parameter <code>fftLen</code>	Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.   
+* \par   
+* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.   
+*/
+arm_status arm_cfft_radix2_init_f32(
+  arm_cfft_radix2_instance_f32 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag)
+{
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+
+  /*  Initialise the FFT length */
+  S->fftLen = fftLen;
+
+  /*  Initialise the Twiddle coefficient pointer */
+  S->pTwiddle = (float32_t *) twiddleCoef;
+
+  /*  Initialise the Flag for selection of CFFT or CIFFT */
+  S->ifftFlag = ifftFlag;
+
+  /*  Initialise the Flag for calculation Bit reversal or not */
+  S->bitReverseFlag = bitReverseFlag;
+
+  /*  Initializations of structure parameters depending on the FFT length */
+  switch (S->fftLen)
+  {
+
+  case 4096u:
+    /*  Initializations of structure parameters for 4096 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 1u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 1u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) armBitRevTable;
+    /*  Initialise the 1/fftLen Value */
+    S->onebyfftLen = 0.000244140625;
+    break;
+
+  case 2048u:
+    /*  Initializations of structure parameters for 2048 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 2u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 2u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[1];
+    /*  Initialise the 1/fftLen Value */
+    S->onebyfftLen = 0.00048828125;
+    break;
+
+  case 1024u:
+    /*  Initializations of structure parameters for 1024 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 4u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 4u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];
+    /*  Initialise the 1/fftLen Value */
+    S->onebyfftLen = 0.0009765625f;
+    break;
+
+  case 512u:
+    /*  Initializations of structure parameters for 512 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 8u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 8u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[7];
+    /*  Initialise the 1/fftLen Value */
+    S->onebyfftLen = 0.001953125;
+    break;
+
+  case 256u:
+    /*  Initializations of structure parameters for 256 point FFT */
+    S->twidCoefModifier = 16u;
+    S->bitRevFactor = 16u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];
+    S->onebyfftLen = 0.00390625f;
+    break;
+
+  case 128u:
+    /*  Initializations of structure parameters for 128 point FFT */
+    S->twidCoefModifier = 32u;
+    S->bitRevFactor = 32u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[31];
+    S->onebyfftLen = 0.0078125;
+    break;
+
+  case 64u:
+    /*  Initializations of structure parameters for 64 point FFT */
+    S->twidCoefModifier = 64u;
+    S->bitRevFactor = 64u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];
+    S->onebyfftLen = 0.015625f;
+    break;
+
+  case 32u:
+    /*  Initializations of structure parameters for 64 point FFT */
+    S->twidCoefModifier = 128u;
+    S->bitRevFactor = 128u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[127];
+    S->onebyfftLen = 0.03125;
+    break;
+
+  case 16u:
+    /*  Initializations of structure parameters for 16 point FFT */
+    S->twidCoefModifier = 256u;
+    S->bitRevFactor = 256u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];
+    S->onebyfftLen = 0.0625f;
+    break;
+
+
+  default:
+    /*  Reporting argument error if fftSize is not valid value */
+    status = ARM_MATH_ARGUMENT_ERROR;
+    break;
+  }
+
+  return (status);
+}
+
+/**   
+ * @} end of ComplexFFT group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,189 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5   
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_radix2_init_q15.c    
+*    
+* Description:	Radix-2 Decimation in Frequency Q15 FFT & IFFT initialization function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+
+/**    
+ * @addtogroup ComplexFFT    
+ * @{    
+ */
+
+/**   
+* @brief Initialization function for the Q15 CFFT/CIFFT.   
+* @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_q15 and will be removed
+* @param[in,out] *S             points to an instance of the Q15 CFFT/CIFFT structure.   
+* @param[in]     fftLen         length of the FFT.   
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.  
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.  
+* @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.  
+*   
+* \par Description:  
+* \par   
+* The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.   
+* Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated  
+* \par   
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.   
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.   
+* \par   
+* The parameter <code>fftLen</code>	Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.   
+* \par   
+* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.   
+*/
+
+arm_status arm_cfft_radix2_init_q15(
+  arm_cfft_radix2_instance_q15 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag)
+{
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+
+  /*  Initialise the FFT length */
+  S->fftLen = fftLen;
+
+  /*  Initialise the Twiddle coefficient pointer */
+  S->pTwiddle = (q15_t *) twiddleCoef_4096_q15;
+  /*  Initialise the Flag for selection of CFFT or CIFFT */
+  S->ifftFlag = ifftFlag;
+  /*  Initialise the Flag for calculation Bit reversal or not */
+  S->bitReverseFlag = bitReverseFlag;
+
+  /*  Initializations of structure parameters depending on the FFT length */
+  switch (S->fftLen)
+  {
+  case 4096u:
+    /*  Initializations of structure parameters for 4096 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 1u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 1u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) armBitRevTable;
+
+    break;
+
+  case 2048u:
+    /*  Initializations of structure parameters for 2048 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 2u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 2u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[1];
+
+    break;
+
+  case 1024u:
+    /*  Initializations of structure parameters for 1024 point FFT */
+    S->twidCoefModifier = 4u;
+    S->bitRevFactor = 4u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];
+
+    break;
+
+  case 512u:
+    /*  Initializations of structure parameters for 512 point FFT */
+    S->twidCoefModifier = 8u;
+    S->bitRevFactor = 8u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[7];
+
+    break;
+
+  case 256u:
+    /*  Initializations of structure parameters for 256 point FFT */
+    S->twidCoefModifier = 16u;
+    S->bitRevFactor = 16u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];
+
+    break;
+
+  case 128u:
+    /*  Initializations of structure parameters for 128 point FFT */
+    S->twidCoefModifier = 32u;
+    S->bitRevFactor = 32u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[31];
+
+    break;
+
+  case 64u:
+    /*  Initializations of structure parameters for 64 point FFT */
+    S->twidCoefModifier = 64u;
+    S->bitRevFactor = 64u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];
+
+    break;
+
+  case 32u:
+    /*  Initializations of structure parameters for 32 point FFT */
+    S->twidCoefModifier = 128u;
+    S->bitRevFactor = 128u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[127];
+
+    break;
+
+  case 16u:
+    /*  Initializations of structure parameters for 16 point FFT */
+    S->twidCoefModifier = 256u;
+    S->bitRevFactor = 256u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];
+
+    break;
+
+  default:
+    /*  Reporting argument error if fftSize is not valid value */
+    status = ARM_MATH_ARGUMENT_ERROR;
+    break;
+  }
+
+  return (status);
+}
+
+/**    
+ * @} end of ComplexFFT group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,187 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cfft_radix2_init_q31.c   
+*   
+* Description:	Radix-2 Decimation in Frequency Fixed-point CFFT & CIFFT Initialization function   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**   
+ * @ingroup groupTransforms   
+ */
+
+/**   
+ * @addtogroup ComplexFFT   
+ * @{   
+ */
+
+
+/**    
+*    
+* @brief  Initialization function for the Q31 CFFT/CIFFT.   
+* @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_q31 and will be removed
+* @param[in,out] *S             points to an instance of the Q31 CFFT/CIFFT structure.   
+* @param[in]     fftLen         length of the FFT.  
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.  
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.  
+* @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.  
+*   
+* \par Description:  
+* \par   
+* The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.   
+* Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated  
+* \par   
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.   
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.   
+* \par   
+* The parameter <code>fftLen</code>	Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.   
+* \par   
+* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.   
+*/
+
+arm_status arm_cfft_radix2_init_q31(
+  arm_cfft_radix2_instance_q31 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag)
+{
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+
+  /*  Initialise the FFT length */
+  S->fftLen = fftLen;
+
+  /*  Initialise the Twiddle coefficient pointer */
+  S->pTwiddle = (q31_t *) twiddleCoef_4096_q31;
+  /*  Initialise the Flag for selection of CFFT or CIFFT */
+  S->ifftFlag = ifftFlag;
+  /*  Initialise the Flag for calculation Bit reversal or not */
+  S->bitReverseFlag = bitReverseFlag;
+
+  /*  Initializations of Instance structure depending on the FFT length */
+  switch (S->fftLen)
+  {
+    /*  Initializations of structure parameters for 4096 point FFT */
+  case 4096u:
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 1u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 1u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) armBitRevTable;
+    break;
+
+    /*  Initializations of structure parameters for 2048 point FFT */
+  case 2048u:
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 2u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 2u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[1];
+    break;
+
+    /*  Initializations of structure parameters for 1024 point FFT */
+  case 1024u:
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 4u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 4u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];
+    break;
+
+    /*  Initializations of structure parameters for 512 point FFT */
+  case 512u:
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 8u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 8u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[7];
+    break;
+
+  case 256u:
+    /*  Initializations of structure parameters for 256 point FFT */
+    S->twidCoefModifier = 16u;
+    S->bitRevFactor = 16u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];
+    break;
+
+  case 128u:
+    /*  Initializations of structure parameters for 128 point FFT */
+    S->twidCoefModifier = 32u;
+    S->bitRevFactor = 32u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[31];
+    break;
+
+  case 64u:
+    /*  Initializations of structure parameters for 64 point FFT */
+    S->twidCoefModifier = 64u;
+    S->bitRevFactor = 64u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];
+    break;
+
+  case 32u:
+    /*  Initializations of structure parameters for 32 point FFT */
+    S->twidCoefModifier = 128u;
+    S->bitRevFactor = 128u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[127];
+    break;
+
+  case 16u:
+    /*  Initializations of structure parameters for 16 point FFT */
+    S->twidCoefModifier = 256u;
+    S->bitRevFactor = 256u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];
+    break;
+
+
+  default:
+    /*  Reporting argument error if fftSize is not valid value */
+    status = ARM_MATH_ARGUMENT_ERROR;
+    break;
+  }
+
+  return (status);
+}
+
+/**   
+ * @} end of ComplexFFT group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,742 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cfft_radix2_q15.c   
+*   
+* Description:	Radix-2 Decimation in Frequency CFFT & CIFFT Fixed point processing function   
+*   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+void arm_radix2_butterfly_q15(
+  q15_t * pSrc,
+  uint32_t fftLen,
+  q15_t * pCoef,
+  uint16_t twidCoefModifier);
+
+void arm_radix2_butterfly_inverse_q15(
+  q15_t * pSrc,
+  uint32_t fftLen,
+  q15_t * pCoef,
+  uint16_t twidCoefModifier);
+	
+void arm_bitreversal_q15(
+  q15_t * pSrc,
+  uint32_t fftLen,
+  uint16_t bitRevFactor,
+  uint16_t * pBitRevTab);
+
+/**   
+ * @ingroup groupTransforms   
+ */
+
+/**   
+ * @addtogroup ComplexFFT   
+ * @{   
+ */
+
+/**   
+ * @details   
+ * @brief Processing function for the fixed-point CFFT/CIFFT.  
+ * @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_q15 and will be removed
+ * @param[in]      *S    points to an instance of the fixed-point CFFT/CIFFT structure.  
+ * @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.  
+ * @return none.  
+ */
+
+void arm_cfft_radix2_q15(
+  const arm_cfft_radix2_instance_q15 * S,
+  q15_t * pSrc)
+{
+
+  if(S->ifftFlag == 1u)
+  {
+    arm_radix2_butterfly_inverse_q15(pSrc, S->fftLen,
+                                     S->pTwiddle, S->twidCoefModifier);
+  }
+  else
+  {
+    arm_radix2_butterfly_q15(pSrc, S->fftLen,
+                             S->pTwiddle, S->twidCoefModifier);
+  }
+
+  arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);
+}
+
+/**   
+ * @} end of ComplexFFT group   
+ */
+
+void arm_radix2_butterfly_q15(
+  q15_t * pSrc,
+  uint32_t fftLen,
+  q15_t * pCoef,
+  uint16_t twidCoefModifier)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  unsigned i, j, k, l;
+  unsigned n1, n2, ia;
+  q15_t in;
+  q31_t T, S, R;
+  q31_t coeff, out1, out2;
+
+  //N = fftLen; 
+  n2 = fftLen;
+
+  n1 = n2;
+  n2 = n2 >> 1;
+  ia = 0;
+
+  // loop for groups 
+  for (i = 0; i < n2; i++)
+  {
+    coeff = _SIMD32_OFFSET(pCoef + (ia * 2u));
+
+    ia = ia + twidCoefModifier;
+
+    l = i + n2;
+
+    T = _SIMD32_OFFSET(pSrc + (2 * i));
+    in = ((int16_t) (T & 0xFFFF)) >> 1;
+    T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);
+
+    S = _SIMD32_OFFSET(pSrc + (2 * l));
+    in = ((int16_t) (S & 0xFFFF)) >> 1;
+    S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);
+
+    R = __QSUB16(T, S);
+
+    _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    out1 = __SMUAD(coeff, R) >> 16;
+    out2 = __SMUSDX(coeff, R);
+
+#else
+
+    out1 = __SMUSDX(R, coeff) >> 16u;
+    out2 = __SMUAD(coeff, R);
+
+#endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+    _SIMD32_OFFSET(pSrc + (2u * l)) =
+      (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+
+    coeff = _SIMD32_OFFSET(pCoef + (ia * 2u));
+
+    ia = ia + twidCoefModifier;
+
+    // loop for butterfly 
+    i++;
+    l++;
+
+    T = _SIMD32_OFFSET(pSrc + (2 * i));
+    in = ((int16_t) (T & 0xFFFF)) >> 1;
+    T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);
+
+    S = _SIMD32_OFFSET(pSrc + (2 * l));
+    in = ((int16_t) (S & 0xFFFF)) >> 1;
+    S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);
+
+    R = __QSUB16(T, S);
+
+    _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    out1 = __SMUAD(coeff, R) >> 16;
+    out2 = __SMUSDX(coeff, R);
+
+#else
+
+    out1 = __SMUSDX(R, coeff) >> 16u;
+    out2 = __SMUAD(coeff, R);
+
+#endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+    _SIMD32_OFFSET(pSrc + (2u * l)) =
+      (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+
+  }                             // groups loop end 
+
+  twidCoefModifier = twidCoefModifier << 1u;
+
+  // loop for stage 
+  for (k = fftLen / 2; k > 2; k = k >> 1)
+  {
+    n1 = n2;
+    n2 = n2 >> 1;
+    ia = 0;
+
+    // loop for groups 
+    for (j = 0; j < n2; j++)
+    {
+      coeff = _SIMD32_OFFSET(pCoef + (ia * 2u));
+
+      ia = ia + twidCoefModifier;
+
+      // loop for butterfly 
+      for (i = j; i < fftLen; i += n1)
+      {
+        l = i + n2;
+
+        T = _SIMD32_OFFSET(pSrc + (2 * i));
+
+        S = _SIMD32_OFFSET(pSrc + (2 * l));
+
+        R = __QSUB16(T, S);
+
+        _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        out1 = __SMUAD(coeff, R) >> 16;
+        out2 = __SMUSDX(coeff, R);
+
+#else
+
+        out1 = __SMUSDX(R, coeff) >> 16u;
+        out2 = __SMUAD(coeff, R);
+
+#endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+        _SIMD32_OFFSET(pSrc + (2u * l)) =
+          (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+
+        i += n1;
+
+        l = i + n2;
+
+        T = _SIMD32_OFFSET(pSrc + (2 * i));
+
+        S = _SIMD32_OFFSET(pSrc + (2 * l));
+
+        R = __QSUB16(T, S);
+
+        _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        out1 = __SMUAD(coeff, R) >> 16;
+        out2 = __SMUSDX(coeff, R);
+
+#else
+
+        out1 = __SMUSDX(R, coeff) >> 16u;
+        out2 = __SMUAD(coeff, R);
+
+#endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+        _SIMD32_OFFSET(pSrc + (2u * l)) =
+          (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+
+      }                         // butterfly loop end 
+
+    }                           // groups loop end 
+
+    twidCoefModifier = twidCoefModifier << 1u;
+  }                             // stages loop end 
+
+  n1 = n2;
+  n2 = n2 >> 1;
+  ia = 0;
+
+  coeff = _SIMD32_OFFSET(pCoef + (ia * 2u));
+
+  ia = ia + twidCoefModifier;
+
+  // loop for butterfly 
+  for (i = 0; i < fftLen; i += n1)
+  {
+    l = i + n2;
+
+    T = _SIMD32_OFFSET(pSrc + (2 * i));
+
+    S = _SIMD32_OFFSET(pSrc + (2 * l));
+
+    R = __QSUB16(T, S);
+
+    _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S);
+
+    _SIMD32_OFFSET(pSrc + (2u * l)) = R;
+
+    i += n1;
+    l = i + n2;
+
+    T = _SIMD32_OFFSET(pSrc + (2 * i));
+
+    S = _SIMD32_OFFSET(pSrc + (2 * l));
+
+    R = __QSUB16(T, S);
+
+    _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S);
+
+    _SIMD32_OFFSET(pSrc + (2u * l)) = R;
+
+  }                             // groups loop end 
+
+
+#else
+
+  unsigned i, j, k, l;
+  unsigned n1, n2, ia;
+  q15_t xt, yt, cosVal, sinVal;
+
+
+  //N = fftLen; 
+  n2 = fftLen;
+
+  n1 = n2;
+  n2 = n2 >> 1;
+  ia = 0;
+
+  // loop for groups 
+  for (j = 0; j < n2; j++)
+  {
+    cosVal = pCoef[ia * 2];
+    sinVal = pCoef[(ia * 2) + 1];
+    ia = ia + twidCoefModifier;
+
+    // loop for butterfly 
+    for (i = j; i < fftLen; i += n1)
+    {
+      l = i + n2;
+      xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+      pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
+
+      yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
+      pSrc[2 * i + 1] =
+        ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
+
+      pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) +
+                      ((int16_t) (((q31_t) yt * sinVal) >> 16)));
+
+      pSrc[2u * l + 1u] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) -
+                           ((int16_t) (((q31_t) xt * sinVal) >> 16)));
+
+    }                           // butterfly loop end 
+
+  }                             // groups loop end 
+
+  twidCoefModifier = twidCoefModifier << 1u;
+
+  // loop for stage 
+  for (k = fftLen / 2; k > 2; k = k >> 1)
+  {
+    n1 = n2;
+    n2 = n2 >> 1;
+    ia = 0;
+
+    // loop for groups 
+    for (j = 0; j < n2; j++)
+    {
+      cosVal = pCoef[ia * 2];
+      sinVal = pCoef[(ia * 2) + 1];
+      ia = ia + twidCoefModifier;
+
+      // loop for butterfly 
+      for (i = j; i < fftLen; i += n1)
+      {
+        l = i + n2;
+        xt = pSrc[2 * i] - pSrc[2 * l];
+        pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1u;
+
+        yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+        pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1u;
+
+        pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) +
+                        ((int16_t) (((q31_t) yt * sinVal) >> 16)));
+
+        pSrc[2u * l + 1u] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) -
+                             ((int16_t) (((q31_t) xt * sinVal) >> 16)));
+
+      }                         // butterfly loop end 
+
+    }                           // groups loop end 
+
+    twidCoefModifier = twidCoefModifier << 1u;
+  }                             // stages loop end 
+
+  n1 = n2;
+  n2 = n2 >> 1;
+  ia = 0;
+
+  // loop for groups 
+  for (j = 0; j < n2; j++)
+  {
+    cosVal = pCoef[ia * 2];
+    sinVal = pCoef[(ia * 2) + 1];
+
+    ia = ia + twidCoefModifier;
+
+    // loop for butterfly 
+    for (i = j; i < fftLen; i += n1)
+    {
+      l = i + n2;
+      xt = pSrc[2 * i] - pSrc[2 * l];
+      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);
+
+      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);
+
+      pSrc[2u * l] = xt;
+
+      pSrc[2u * l + 1u] = yt;
+
+    }                           // butterfly loop end 
+
+  }                             // groups loop end 
+
+  twidCoefModifier = twidCoefModifier << 1u;
+
+#endif //             #ifndef ARM_MATH_CM0_FAMILY
+
+}
+
+
+void arm_radix2_butterfly_inverse_q15(
+  q15_t * pSrc,
+  uint32_t fftLen,
+  q15_t * pCoef,
+  uint16_t twidCoefModifier)
+{
+#ifndef ARM_MATH_CM0_FAMILY
+
+  unsigned i, j, k, l;
+  unsigned n1, n2, ia;
+  q15_t in;
+  q31_t T, S, R;
+  q31_t coeff, out1, out2;
+
+  //N = fftLen; 
+  n2 = fftLen;
+
+  n1 = n2;
+  n2 = n2 >> 1;
+  ia = 0;
+
+  // loop for groups 
+  for (i = 0; i < n2; i++)
+  {
+    coeff = _SIMD32_OFFSET(pCoef + (ia * 2u));
+
+    ia = ia + twidCoefModifier;
+
+    l = i + n2;
+
+    T = _SIMD32_OFFSET(pSrc + (2 * i));
+    in = ((int16_t) (T & 0xFFFF)) >> 1;
+    T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);
+
+    S = _SIMD32_OFFSET(pSrc + (2 * l));
+    in = ((int16_t) (S & 0xFFFF)) >> 1;
+    S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);
+
+    R = __QSUB16(T, S);
+
+    _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    out1 = __SMUSD(coeff, R) >> 16;
+    out2 = __SMUADX(coeff, R);
+#else
+
+    out1 = __SMUADX(R, coeff) >> 16u;
+    out2 = __SMUSD(__QSUB(0, coeff), R);
+
+#endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+    _SIMD32_OFFSET(pSrc + (2u * l)) =
+      (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+
+    coeff = _SIMD32_OFFSET(pCoef + (ia * 2u));
+
+    ia = ia + twidCoefModifier;
+
+    // loop for butterfly 
+    i++;
+    l++;
+
+    T = _SIMD32_OFFSET(pSrc + (2 * i));
+    in = ((int16_t) (T & 0xFFFF)) >> 1;
+    T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);
+
+    S = _SIMD32_OFFSET(pSrc + (2 * l));
+    in = ((int16_t) (S & 0xFFFF)) >> 1;
+    S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);
+
+    R = __QSUB16(T, S);
+
+    _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    out1 = __SMUSD(coeff, R) >> 16;
+    out2 = __SMUADX(coeff, R);
+#else
+
+    out1 = __SMUADX(R, coeff) >> 16u;
+    out2 = __SMUSD(__QSUB(0, coeff), R);
+
+#endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+    _SIMD32_OFFSET(pSrc + (2u * l)) =
+      (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+
+  }                             // groups loop end 
+
+  twidCoefModifier = twidCoefModifier << 1u;
+
+  // loop for stage 
+  for (k = fftLen / 2; k > 2; k = k >> 1)
+  {
+    n1 = n2;
+    n2 = n2 >> 1;
+    ia = 0;
+
+    // loop for groups 
+    for (j = 0; j < n2; j++)
+    {
+      coeff = _SIMD32_OFFSET(pCoef + (ia * 2u));
+
+      ia = ia + twidCoefModifier;
+
+      // loop for butterfly 
+      for (i = j; i < fftLen; i += n1)
+      {
+        l = i + n2;
+
+        T = _SIMD32_OFFSET(pSrc + (2 * i));
+
+        S = _SIMD32_OFFSET(pSrc + (2 * l));
+
+        R = __QSUB16(T, S);
+
+        _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        out1 = __SMUSD(coeff, R) >> 16;
+        out2 = __SMUADX(coeff, R);
+
+#else
+
+        out1 = __SMUADX(R, coeff) >> 16u;
+        out2 = __SMUSD(__QSUB(0, coeff), R);
+
+#endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+        _SIMD32_OFFSET(pSrc + (2u * l)) =
+          (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+
+        i += n1;
+
+        l = i + n2;
+
+        T = _SIMD32_OFFSET(pSrc + (2 * i));
+
+        S = _SIMD32_OFFSET(pSrc + (2 * l));
+
+        R = __QSUB16(T, S);
+
+        _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        out1 = __SMUSD(coeff, R) >> 16;
+        out2 = __SMUADX(coeff, R);
+#else
+
+        out1 = __SMUADX(R, coeff) >> 16u;
+        out2 = __SMUSD(__QSUB(0, coeff), R);
+
+#endif //     #ifndef ARM_MATH_BIG_ENDIAN
+
+        _SIMD32_OFFSET(pSrc + (2u * l)) =
+          (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+
+      }                         // butterfly loop end 
+
+    }                           // groups loop end 
+
+    twidCoefModifier = twidCoefModifier << 1u;
+  }                             // stages loop end 
+
+  n1 = n2;
+  n2 = n2 >> 1;
+  ia = 0;
+
+  // loop for groups 
+  for (j = 0; j < n2; j++)
+  {
+    coeff = _SIMD32_OFFSET(pCoef + (ia * 2u));
+
+    ia = ia + twidCoefModifier;
+
+    // loop for butterfly 
+    for (i = j; i < fftLen; i += n1)
+    {
+      l = i + n2;
+
+      T = _SIMD32_OFFSET(pSrc + (2 * i));
+
+      S = _SIMD32_OFFSET(pSrc + (2 * l));
+
+      R = __QSUB16(T, S);
+
+      _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S);
+
+      _SIMD32_OFFSET(pSrc + (2u * l)) = R;
+
+    }                           // butterfly loop end 
+
+  }                             // groups loop end 
+
+  twidCoefModifier = twidCoefModifier << 1u;
+
+#else
+
+
+  unsigned i, j, k, l;
+  unsigned n1, n2, ia;
+  q15_t xt, yt, cosVal, sinVal;
+
+  //N = fftLen; 
+  n2 = fftLen;
+
+  n1 = n2;
+  n2 = n2 >> 1;
+  ia = 0;
+
+  // loop for groups 
+  for (j = 0; j < n2; j++)
+  {
+    cosVal = pCoef[ia * 2];
+    sinVal = pCoef[(ia * 2) + 1];
+    ia = ia + twidCoefModifier;
+
+    // loop for butterfly 
+    for (i = j; i < fftLen; i += n1)
+    {
+      l = i + n2;
+      xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+      pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
+
+      yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
+      pSrc[2 * i + 1] =
+        ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
+
+      pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) -
+                      ((int16_t) (((q31_t) yt * sinVal) >> 16)));
+
+      pSrc[2u * l + 1u] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) +
+                           ((int16_t) (((q31_t) xt * sinVal) >> 16)));
+
+    }                           // butterfly loop end 
+
+  }                             // groups loop end 
+
+  twidCoefModifier = twidCoefModifier << 1u;
+
+  // loop for stage 
+  for (k = fftLen / 2; k > 2; k = k >> 1)
+  {
+    n1 = n2;
+    n2 = n2 >> 1;
+    ia = 0;
+
+    // loop for groups 
+    for (j = 0; j < n2; j++)
+    {
+      cosVal = pCoef[ia * 2];
+      sinVal = pCoef[(ia * 2) + 1];
+      ia = ia + twidCoefModifier;
+
+      // loop for butterfly 
+      for (i = j; i < fftLen; i += n1)
+      {
+        l = i + n2;
+        xt = pSrc[2 * i] - pSrc[2 * l];
+        pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1u;
+
+        yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+        pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1u;
+
+        pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) -
+                        ((int16_t) (((q31_t) yt * sinVal) >> 16)));
+
+        pSrc[2u * l + 1u] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) +
+                             ((int16_t) (((q31_t) xt * sinVal) >> 16)));
+
+      }                         // butterfly loop end 
+
+    }                           // groups loop end 
+
+    twidCoefModifier = twidCoefModifier << 1u;
+  }                             // stages loop end 
+
+  n1 = n2;
+  n2 = n2 >> 1;
+  ia = 0;
+
+  cosVal = pCoef[ia * 2];
+  sinVal = pCoef[(ia * 2) + 1];
+
+  ia = ia + twidCoefModifier;
+
+  // loop for butterfly 
+  for (i = 0; i < fftLen; i += n1)
+  {
+    l = i + n2;
+    xt = pSrc[2 * i] - pSrc[2 * l];
+    pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);
+
+    yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+    pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);
+
+    pSrc[2u * l] = xt;
+
+    pSrc[2u * l + 1u] = yt;
+
+  }                             // groups loop end 
+
+
+#endif //             #ifndef ARM_MATH_CM0_FAMILY
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,351 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.   
+*   
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cfft_radix2_q31.c   
+*   
+* Description:	Radix-2 Decimation in Frequency CFFT & CIFFT Fixed point processing function   
+*   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+void arm_radix2_butterfly_q31(
+  q31_t * pSrc,
+  uint32_t fftLen,
+  q31_t * pCoef,
+  uint16_t twidCoefModifier);
+
+void arm_radix2_butterfly_inverse_q31(
+  q31_t * pSrc,
+  uint32_t fftLen,
+  q31_t * pCoef,
+  uint16_t twidCoefModifier);
+
+void arm_bitreversal_q31(
+  q31_t * pSrc,
+  uint32_t fftLen,
+  uint16_t bitRevFactor,
+  uint16_t * pBitRevTab);
+
+/**   
+* @ingroup groupTransforms   
+*/
+
+/**   
+* @addtogroup ComplexFFT   
+* @{   
+*/
+
+/**   
+* @details   
+* @brief Processing function for the fixed-point CFFT/CIFFT.  
+* @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_q31 and will be removed
+* @param[in]      *S    points to an instance of the fixed-point CFFT/CIFFT structure.  
+* @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.  
+* @return none.  
+*/
+
+void arm_cfft_radix2_q31(
+const arm_cfft_radix2_instance_q31 * S,
+q31_t * pSrc)
+{
+
+   if(S->ifftFlag == 1u)
+   {
+      arm_radix2_butterfly_inverse_q31(pSrc, S->fftLen,
+      S->pTwiddle, S->twidCoefModifier);
+   }
+   else
+   {
+      arm_radix2_butterfly_q31(pSrc, S->fftLen,
+      S->pTwiddle, S->twidCoefModifier);
+   }
+
+   arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);
+}
+
+/**   
+* @} end of ComplexFFT group   
+*/
+
+void arm_radix2_butterfly_q31(
+q31_t * pSrc,
+uint32_t fftLen,
+q31_t * pCoef,
+uint16_t twidCoefModifier)
+{
+
+   unsigned i, j, k, l, m;
+   unsigned n1, n2, ia;
+   q31_t xt, yt, cosVal, sinVal;
+   q31_t p0, p1;
+
+   //N = fftLen; 
+   n2 = fftLen;
+
+   n1 = n2;
+   n2 = n2 >> 1;
+   ia = 0;
+
+   // loop for groups 
+   for (i = 0; i < n2; i++)
+   {
+      cosVal = pCoef[ia * 2];
+      sinVal = pCoef[(ia * 2) + 1];
+      ia = ia + twidCoefModifier;
+
+      l = i + n2;
+      xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+      pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
+      
+      yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
+      pSrc[2 * i + 1] =
+        ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
+
+      mult_32x32_keep32_R(p0, xt, cosVal);
+      mult_32x32_keep32_R(p1, yt, cosVal);
+      multAcc_32x32_keep32_R(p0, yt, sinVal); 
+      multSub_32x32_keep32_R(p1, xt, sinVal);
+      
+      pSrc[2u * l] = p0;
+      pSrc[2u * l + 1u] = p1;
+
+   }                             // groups loop end 
+
+   twidCoefModifier <<= 1u;
+
+   // loop for stage 
+   for (k = fftLen / 2; k > 2; k = k >> 1)
+   {
+      n1 = n2;
+      n2 = n2 >> 1;
+      ia = 0;
+
+      // loop for groups 
+      for (j = 0; j < n2; j++)
+      {
+         cosVal = pCoef[ia * 2];
+         sinVal = pCoef[(ia * 2) + 1];
+         ia = ia + twidCoefModifier;
+
+         // loop for butterfly 
+         i = j;
+         m = fftLen / n1;
+         do
+         {
+            l = i + n2;
+            xt = pSrc[2 * i] - pSrc[2 * l];
+            pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1u;
+            
+            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+            pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1u;
+
+            mult_32x32_keep32_R(p0, xt, cosVal);
+            mult_32x32_keep32_R(p1, yt, cosVal);
+            multAcc_32x32_keep32_R(p0, yt, sinVal);
+            multSub_32x32_keep32_R(p1, xt, sinVal);
+            
+            pSrc[2u * l] = p0;
+            pSrc[2u * l + 1u] = p1;
+            i += n1;
+            m--;
+         } while( m > 0);                   // butterfly loop end 
+
+      }                           // groups loop end 
+
+      twidCoefModifier <<= 1u;
+   }                             // stages loop end 
+
+   n1 = n2;
+   n2 = n2 >> 1;
+   ia = 0;
+
+   cosVal = pCoef[ia * 2];
+   sinVal = pCoef[(ia * 2) + 1];
+   ia = ia + twidCoefModifier;
+
+   // loop for butterfly 
+   for (i = 0; i < fftLen; i += n1)
+   {
+      l = i + n2;
+      xt = pSrc[2 * i] - pSrc[2 * l];
+      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);
+
+      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);
+
+      pSrc[2u * l] = xt;
+
+      pSrc[2u * l + 1u] = yt;
+
+      i += n1;
+      l = i + n2;
+
+      xt = pSrc[2 * i] - pSrc[2 * l];
+      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);
+
+      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);
+
+      pSrc[2u * l] = xt;
+
+      pSrc[2u * l + 1u] = yt;
+
+   }                             // butterfly loop end 
+
+}
+
+
+void arm_radix2_butterfly_inverse_q31(
+q31_t * pSrc,
+uint32_t fftLen,
+q31_t * pCoef,
+uint16_t twidCoefModifier)
+{
+
+   unsigned i, j, k, l;
+   unsigned n1, n2, ia;
+   q31_t xt, yt, cosVal, sinVal;
+   q31_t p0, p1;
+
+   //N = fftLen; 
+   n2 = fftLen;
+
+   n1 = n2;
+   n2 = n2 >> 1;
+   ia = 0;
+
+   // loop for groups 
+   for (i = 0; i < n2; i++)
+   {
+      cosVal = pCoef[ia * 2];
+      sinVal = pCoef[(ia * 2) + 1];
+      ia = ia + twidCoefModifier;
+
+      l = i + n2;
+      xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+      pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
+      
+      yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
+      pSrc[2 * i + 1] =
+        ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
+
+      mult_32x32_keep32_R(p0, xt, cosVal);
+      mult_32x32_keep32_R(p1, yt, cosVal);
+      multSub_32x32_keep32_R(p0, yt, sinVal);
+      multAcc_32x32_keep32_R(p1, xt, sinVal);
+      
+      pSrc[2u * l] = p0;
+      pSrc[2u * l + 1u] = p1;
+   }                             // groups loop end 
+
+   twidCoefModifier = twidCoefModifier << 1u;
+
+   // loop for stage 
+   for (k = fftLen / 2; k > 2; k = k >> 1)
+   {
+      n1 = n2;
+      n2 = n2 >> 1;
+      ia = 0;
+
+      // loop for groups 
+      for (j = 0; j < n2; j++)
+      {
+         cosVal = pCoef[ia * 2];
+         sinVal = pCoef[(ia * 2) + 1];
+         ia = ia + twidCoefModifier;
+
+         // loop for butterfly 
+         for (i = j; i < fftLen; i += n1)
+         {
+            l = i + n2;
+            xt = pSrc[2 * i] - pSrc[2 * l];
+            pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1u;
+      
+            yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+            pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1u;
+
+            mult_32x32_keep32_R(p0, xt, cosVal);
+            mult_32x32_keep32_R(p1, yt, cosVal);
+            multSub_32x32_keep32_R(p0, yt, sinVal);
+            multAcc_32x32_keep32_R(p1, xt, sinVal);
+            
+            pSrc[2u * l] = p0;
+            pSrc[2u * l + 1u] = p1;
+         }                         // butterfly loop end 
+
+      }                           // groups loop end 
+
+      twidCoefModifier = twidCoefModifier << 1u;
+   }                             // stages loop end 
+
+   n1 = n2;
+   n2 = n2 >> 1;
+   ia = 0;
+
+   cosVal = pCoef[ia * 2];
+   sinVal = pCoef[(ia * 2) + 1];
+   ia = ia + twidCoefModifier;
+
+   // loop for butterfly 
+   for (i = 0; i < fftLen; i += n1)
+   {
+      l = i + n2;
+      xt = pSrc[2 * i] - pSrc[2 * l];
+      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);
+
+      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);
+
+      pSrc[2u * l] = xt;
+
+      pSrc[2u * l + 1u] = yt;
+
+      i += n1;
+      l = i + n2;
+
+      xt = pSrc[2 * i] - pSrc[2 * l];
+      pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]);
+
+      yt = pSrc[2 * i + 1] - pSrc[2 * l + 1];
+      pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]);
+
+      pSrc[2u * l] = xt;
+
+      pSrc[2u * l + 1u] = yt;
+
+   }                             // butterfly loop end 
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1210 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_radix4_f32.c    
+*    
+* Description:	Radix-4 Decimation in Frequency CFFT & CIFFT Floating point processing function    
+*    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+extern void arm_bitreversal_f32(
+float32_t * pSrc,
+uint16_t fftSize,
+uint16_t bitRevFactor,
+uint16_t * pBitRevTab);
+
+/**    
+* @ingroup groupTransforms    
+*/
+
+/* ----------------------------------------------------------------------    
+** Internal helper function used by the FFTs    
+** ------------------------------------------------------------------- */
+
+/*    
+* @brief  Core function for the floating-point CFFT butterfly process.   
+* @param[in, out] *pSrc            points to the in-place buffer of floating-point data type.   
+* @param[in]      fftLen           length of the FFT.   
+* @param[in]      *pCoef           points to the twiddle coefficient buffer.   
+* @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+* @return none.   
+*/
+
+void arm_radix4_butterfly_f32(
+float32_t * pSrc,
+uint16_t fftLen,
+float32_t * pCoef,
+uint16_t twidCoefModifier)
+{
+
+   float32_t co1, co2, co3, si1, si2, si3;
+   uint32_t ia1, ia2, ia3;
+   uint32_t i0, i1, i2, i3;
+   uint32_t n1, n2, j, k;
+
+#ifndef ARM_MATH_CM0_FAMILY_FAMILY
+
+   /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+   float32_t xaIn, yaIn, xbIn, ybIn, xcIn, ycIn, xdIn, ydIn;
+   float32_t Xaplusc, Xbplusd, Yaplusc, Ybplusd, Xaminusc, Xbminusd, Yaminusc,
+   Ybminusd;
+   float32_t Xb12C_out, Yb12C_out, Xc12C_out, Yc12C_out, Xd12C_out, Yd12C_out;
+   float32_t Xb12_out, Yb12_out, Xc12_out, Yc12_out, Xd12_out, Yd12_out;
+   float32_t *ptr1;
+   float32_t p0,p1,p2,p3,p4,p5;
+   float32_t a0,a1,a2,a3,a4,a5,a6,a7;
+
+   /*  Initializations for the first stage */
+   n2 = fftLen;
+   n1 = n2;
+
+   /* n2 = fftLen/4 */
+   n2 >>= 2u;
+   i0 = 0u;
+   ia1 = 0u;
+
+   j = n2;
+
+   /*  Calculation of first stage */
+   do
+   {
+      /*  index calculation for the input as, */
+      /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */
+      i1 = i0 + n2;
+      i2 = i1 + n2;
+      i3 = i2 + n2;
+
+      xaIn = pSrc[(2u * i0)];
+      yaIn = pSrc[(2u * i0) + 1u];
+
+      xbIn = pSrc[(2u * i1)];
+      ybIn = pSrc[(2u * i1) + 1u];
+
+      xcIn = pSrc[(2u * i2)];
+      ycIn = pSrc[(2u * i2) + 1u];
+
+      xdIn = pSrc[(2u * i3)];
+      ydIn = pSrc[(2u * i3) + 1u];
+
+      /* xa + xc */
+      Xaplusc = xaIn + xcIn;
+      /* xb + xd */
+      Xbplusd = xbIn + xdIn;
+      /* ya + yc */
+      Yaplusc = yaIn + ycIn;
+      /* yb + yd */
+      Ybplusd = ybIn + ydIn;
+
+      /*  index calculation for the coefficients */
+      ia2 = ia1 + ia1;
+      co2 = pCoef[ia2 * 2u];
+      si2 = pCoef[(ia2 * 2u) + 1u];
+
+      /* xa - xc */
+      Xaminusc = xaIn - xcIn;
+      /* xb - xd */
+      Xbminusd = xbIn - xdIn;
+      /* ya - yc */
+      Yaminusc = yaIn - ycIn;
+      /* yb - yd */
+      Ybminusd = ybIn - ydIn;
+
+      /* xa' = xa + xb + xc + xd */
+      pSrc[(2u * i0)] = Xaplusc + Xbplusd;
+      /* ya' = ya + yb + yc + yd */
+      pSrc[(2u * i0) + 1u] = Yaplusc + Ybplusd;
+
+      /* (xa - xc) + (yb - yd) */
+      Xb12C_out = (Xaminusc + Ybminusd);
+      /* (ya - yc) + (xb - xd) */
+      Yb12C_out = (Yaminusc - Xbminusd);
+      /* (xa + xc) - (xb + xd) */
+      Xc12C_out = (Xaplusc - Xbplusd);
+      /* (ya + yc) - (yb + yd) */
+      Yc12C_out = (Yaplusc - Ybplusd);
+      /* (xa - xc) - (yb - yd) */
+      Xd12C_out = (Xaminusc - Ybminusd);
+      /* (ya - yc) + (xb - xd) */
+      Yd12C_out = (Xbminusd + Yaminusc);
+
+      co1 = pCoef[ia1 * 2u];
+      si1 = pCoef[(ia1 * 2u) + 1u];
+
+      /*  index calculation for the coefficients */
+      ia3 = ia2 + ia1;
+      co3 = pCoef[ia3 * 2u];
+      si3 = pCoef[(ia3 * 2u) + 1u];
+
+      Xb12_out = Xb12C_out * co1;
+      Yb12_out = Yb12C_out * co1;
+      Xc12_out = Xc12C_out * co2;
+      Yc12_out = Yc12C_out * co2;
+      Xd12_out = Xd12C_out * co3;
+      Yd12_out = Yd12C_out * co3;
+         
+      /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+      //Xb12_out -= Yb12C_out * si1;
+      p0 = Yb12C_out * si1;
+      /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+      //Yb12_out += Xb12C_out * si1;
+      p1 = Xb12C_out * si1;
+      /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+      //Xc12_out -= Yc12C_out * si2;
+      p2 = Yc12C_out * si2;
+      /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+      //Yc12_out += Xc12C_out * si2;
+      p3 = Xc12C_out * si2;
+      /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+      //Xd12_out -= Yd12C_out * si3;
+      p4 = Yd12C_out * si3;
+      /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+      //Yd12_out += Xd12C_out * si3;
+      p5 = Xd12C_out * si3;
+      
+      Xb12_out += p0;
+      Yb12_out -= p1;
+      Xc12_out += p2;
+      Yc12_out -= p3;
+      Xd12_out += p4;
+      Yd12_out -= p5;
+
+      /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+      pSrc[2u * i1] = Xc12_out;
+
+      /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+      pSrc[(2u * i1) + 1u] = Yc12_out;
+
+      /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+      pSrc[2u * i2] = Xb12_out;
+
+      /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+      pSrc[(2u * i2) + 1u] = Yb12_out;
+
+      /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+      pSrc[2u * i3] = Xd12_out;
+
+      /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+      pSrc[(2u * i3) + 1u] = Yd12_out;
+
+      /*  Twiddle coefficients index modifier */
+      ia1 += twidCoefModifier;
+
+      /*  Updating input index */
+      i0++;
+
+   }
+   while(--j);
+
+   twidCoefModifier <<= 2u;
+
+   /*  Calculation of second stage to excluding last stage */
+   for (k = fftLen >> 2u; k > 4u; k >>= 2u)
+   {
+      /*  Initializations for the first stage */
+      n1 = n2;
+      n2 >>= 2u;
+      ia1 = 0u;
+
+      /*  Calculation of first stage */
+      j = 0;
+      do
+      {
+         /*  index calculation for the coefficients */
+         ia2 = ia1 + ia1;
+         ia3 = ia2 + ia1;
+         co1 = pCoef[ia1 * 2u];
+         si1 = pCoef[(ia1 * 2u) + 1u];
+         co2 = pCoef[ia2 * 2u];
+         si2 = pCoef[(ia2 * 2u) + 1u];
+         co3 = pCoef[ia3 * 2u];
+         si3 = pCoef[(ia3 * 2u) + 1u];
+
+         /*  Twiddle coefficients index modifier */
+         ia1 += twidCoefModifier;
+      
+         i0 = j;
+         do
+         {
+            /*  index calculation for the input as, */
+            /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */
+            i1 = i0 + n2;
+            i2 = i1 + n2;
+            i3 = i2 + n2;
+
+            xaIn = pSrc[(2u * i0)];
+            yaIn = pSrc[(2u * i0) + 1u];
+
+            xbIn = pSrc[(2u * i1)];
+            ybIn = pSrc[(2u * i1) + 1u];
+
+            xcIn = pSrc[(2u * i2)];
+            ycIn = pSrc[(2u * i2) + 1u];
+
+            xdIn = pSrc[(2u * i3)];
+            ydIn = pSrc[(2u * i3) + 1u];
+
+            /* xa - xc */
+            Xaminusc = xaIn - xcIn;
+            /* (xb - xd) */
+            Xbminusd = xbIn - xdIn;
+            /* ya - yc */
+            Yaminusc = yaIn - ycIn;
+            /* (yb - yd) */
+            Ybminusd = ybIn - ydIn;
+
+            /* xa + xc */
+            Xaplusc = xaIn + xcIn;
+            /* xb + xd */
+            Xbplusd = xbIn + xdIn;
+            /* ya + yc */
+            Yaplusc = yaIn + ycIn;
+            /* yb + yd */
+            Ybplusd = ybIn + ydIn;
+
+            /* (xa - xc) + (yb - yd) */
+            Xb12C_out = (Xaminusc + Ybminusd);
+            /* (ya - yc) -  (xb - xd) */
+            Yb12C_out = (Yaminusc - Xbminusd);
+            /* xa + xc -(xb + xd) */
+            Xc12C_out = (Xaplusc - Xbplusd);
+            /* (ya + yc) - (yb + yd) */
+            Yc12C_out = (Yaplusc - Ybplusd);
+            /* (xa - xc) - (yb - yd) */
+            Xd12C_out = (Xaminusc - Ybminusd);
+            /* (ya - yc) +  (xb - xd) */
+            Yd12C_out = (Xbminusd + Yaminusc);
+
+            pSrc[(2u * i0)] = Xaplusc + Xbplusd;
+            pSrc[(2u * i0) + 1u] = Yaplusc + Ybplusd;
+
+            Xb12_out = Xb12C_out * co1;
+            Yb12_out = Yb12C_out * co1;
+            Xc12_out = Xc12C_out * co2;
+            Yc12_out = Yc12C_out * co2;
+            Xd12_out = Xd12C_out * co3;
+            Yd12_out = Yd12C_out * co3;
+         
+            /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+            //Xb12_out -= Yb12C_out * si1;
+            p0 = Yb12C_out * si1;
+            /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+            //Yb12_out += Xb12C_out * si1;
+            p1 = Xb12C_out * si1;
+            /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+            //Xc12_out -= Yc12C_out * si2;
+            p2 = Yc12C_out * si2;
+            /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+            //Yc12_out += Xc12C_out * si2;
+            p3 = Xc12C_out * si2;
+            /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+            //Xd12_out -= Yd12C_out * si3;
+            p4 = Yd12C_out * si3;
+            /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+            //Yd12_out += Xd12C_out * si3;
+            p5 = Xd12C_out * si3;
+            
+            Xb12_out += p0;
+            Yb12_out -= p1;
+            Xc12_out += p2;
+            Yc12_out -= p3;
+            Xd12_out += p4;
+            Yd12_out -= p5;
+
+            /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+            pSrc[2u * i1] = Xc12_out;
+
+            /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+            pSrc[(2u * i1) + 1u] = Yc12_out;
+
+            /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+            pSrc[2u * i2] = Xb12_out;
+
+            /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+            pSrc[(2u * i2) + 1u] = Yb12_out;
+
+            /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+            pSrc[2u * i3] = Xd12_out;
+
+            /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+            pSrc[(2u * i3) + 1u] = Yd12_out;
+
+            i0 += n1;
+         } while(i0 < fftLen);
+         j++;
+      } while(j <= (n2 - 1u));
+      twidCoefModifier <<= 2u;
+   }
+
+   j = fftLen >> 2;
+   ptr1 = &pSrc[0];
+
+   /*  Calculations of last stage */
+   do
+   {
+      xaIn = ptr1[0];
+      yaIn = ptr1[1];
+      xbIn = ptr1[2];
+      ybIn = ptr1[3];
+      xcIn = ptr1[4];
+      ycIn = ptr1[5];
+      xdIn = ptr1[6];
+      ydIn = ptr1[7];
+
+      /* xa + xc */
+      Xaplusc = xaIn + xcIn;
+
+      /* xa - xc */
+      Xaminusc = xaIn - xcIn;
+
+      /* ya + yc */
+      Yaplusc = yaIn + ycIn;
+
+      /* ya - yc */
+      Yaminusc = yaIn - ycIn;
+
+      /* xb + xd */
+      Xbplusd = xbIn + xdIn;
+
+      /* yb + yd */
+      Ybplusd = ybIn + ydIn;
+
+      /* (xb-xd) */
+      Xbminusd = xbIn - xdIn;
+
+      /* (yb-yd) */
+      Ybminusd = ybIn - ydIn;
+
+      /* xa' = xa + xb + xc + xd */
+      a0 = (Xaplusc + Xbplusd);
+      /* ya' = ya + yb + yc + yd */
+      a1 = (Yaplusc + Ybplusd);
+      /* xc' = (xa-xb+xc-xd) */
+      a2 = (Xaplusc - Xbplusd);
+      /* yc' = (ya-yb+yc-yd) */
+      a3 = (Yaplusc - Ybplusd);
+      /* xb' = (xa+yb-xc-yd) */
+      a4 = (Xaminusc + Ybminusd);
+      /* yb' = (ya-xb-yc+xd) */
+      a5 = (Yaminusc - Xbminusd);
+      /* xd' = (xa-yb-xc+yd)) */
+      a6 = (Xaminusc - Ybminusd);
+      /* yd' = (ya+xb-yc-xd) */
+      a7 = (Xbminusd + Yaminusc);
+   
+      ptr1[0] = a0;
+      ptr1[1] = a1;
+      ptr1[2] = a2;
+      ptr1[3] = a3;
+      ptr1[4] = a4;
+      ptr1[5] = a5;
+      ptr1[6] = a6;
+      ptr1[7] = a7;
+
+      /* increment pointer by 8 */
+      ptr1 += 8u;
+   } while(--j);
+
+#else
+
+   float32_t t1, t2, r1, r2, s1, s2;
+
+   /* Run the below code for Cortex-M0 */
+
+   /*  Initializations for the fft calculation */
+   n2 = fftLen;
+   n1 = n2;
+   for (k = fftLen; k > 1u; k >>= 2u)
+   {
+      /*  Initializations for the fft calculation */
+      n1 = n2;
+      n2 >>= 2u;
+      ia1 = 0u;
+
+      /*  FFT Calculation */
+      j = 0;
+      do
+      {
+         /*  index calculation for the coefficients */
+         ia2 = ia1 + ia1;
+         ia3 = ia2 + ia1;
+         co1 = pCoef[ia1 * 2u];
+         si1 = pCoef[(ia1 * 2u) + 1u];
+         co2 = pCoef[ia2 * 2u];
+         si2 = pCoef[(ia2 * 2u) + 1u];
+         co3 = pCoef[ia3 * 2u];
+         si3 = pCoef[(ia3 * 2u) + 1u];
+
+         /*  Twiddle coefficients index modifier */
+         ia1 = ia1 + twidCoefModifier;
+
+         i0 = j;
+         do
+         {
+            /*  index calculation for the input as, */
+            /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */
+            i1 = i0 + n2;
+            i2 = i1 + n2;
+            i3 = i2 + n2;
+
+            /* xa + xc */
+            r1 = pSrc[(2u * i0)] + pSrc[(2u * i2)];
+
+            /* xa - xc */
+            r2 = pSrc[(2u * i0)] - pSrc[(2u * i2)];
+
+            /* ya + yc */
+            s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u];
+
+            /* ya - yc */
+            s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u];
+
+            /* xb + xd */
+            t1 = pSrc[2u * i1] + pSrc[2u * i3];
+
+            /* xa' = xa + xb + xc + xd */
+            pSrc[2u * i0] = r1 + t1;
+
+            /* xa + xc -(xb + xd) */
+            r1 = r1 - t1;
+
+            /* yb + yd */
+            t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u];
+
+            /* ya' = ya + yb + yc + yd */
+            pSrc[(2u * i0) + 1u] = s1 + t2;
+
+            /* (ya + yc) - (yb + yd) */
+            s1 = s1 - t2;
+
+            /* (yb - yd) */
+            t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u];
+
+            /* (xb - xd) */
+            t2 = pSrc[2u * i1] - pSrc[2u * i3];
+
+            /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+            pSrc[2u * i1] = (r1 * co2) + (s1 * si2);
+
+            /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+            pSrc[(2u * i1) + 1u] = (s1 * co2) - (r1 * si2);
+
+            /* (xa - xc) + (yb - yd) */
+            r1 = r2 + t1;
+
+            /* (xa - xc) - (yb - yd) */
+            r2 = r2 - t1;
+
+            /* (ya - yc) -  (xb - xd) */
+            s1 = s2 - t2;
+
+            /* (ya - yc) +  (xb - xd) */
+            s2 = s2 + t2;
+
+            /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+            pSrc[2u * i2] = (r1 * co1) + (s1 * si1);
+
+            /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+            pSrc[(2u * i2) + 1u] = (s1 * co1) - (r1 * si1);
+
+            /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+            pSrc[2u * i3] = (r2 * co3) + (s2 * si3);
+
+            /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+            pSrc[(2u * i3) + 1u] = (s2 * co3) - (r2 * si3);
+         
+            i0 += n1;
+         } while( i0 < fftLen);
+         j++;
+      } while(j <= (n2 - 1u));
+      twidCoefModifier <<= 2u;
+   }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY_FAMILY */
+
+}
+
+/*    
+* @brief  Core function for the floating-point CIFFT butterfly process.   
+* @param[in, out] *pSrc            points to the in-place buffer of floating-point data type.   
+* @param[in]      fftLen           length of the FFT.   
+* @param[in]      *pCoef           points to twiddle coefficient buffer.   
+* @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+* @param[in]      onebyfftLen      value of 1/fftLen.   
+* @return none.   
+*/
+
+void arm_radix4_butterfly_inverse_f32(
+float32_t * pSrc,
+uint16_t fftLen,
+float32_t * pCoef,
+uint16_t twidCoefModifier,
+float32_t onebyfftLen)
+{
+   float32_t co1, co2, co3, si1, si2, si3;
+   uint32_t ia1, ia2, ia3;
+   uint32_t i0, i1, i2, i3;
+   uint32_t n1, n2, j, k;
+
+#ifndef ARM_MATH_CM0_FAMILY_FAMILY
+
+   float32_t xaIn, yaIn, xbIn, ybIn, xcIn, ycIn, xdIn, ydIn;
+   float32_t Xaplusc, Xbplusd, Yaplusc, Ybplusd, Xaminusc, Xbminusd, Yaminusc,
+   Ybminusd;
+   float32_t Xb12C_out, Yb12C_out, Xc12C_out, Yc12C_out, Xd12C_out, Yd12C_out;
+   float32_t Xb12_out, Yb12_out, Xc12_out, Yc12_out, Xd12_out, Yd12_out;
+   float32_t *ptr1;
+   float32_t p0,p1,p2,p3,p4,p5,p6,p7;
+   float32_t a0,a1,a2,a3,a4,a5,a6,a7;
+
+
+   /*  Initializations for the first stage */
+   n2 = fftLen;
+   n1 = n2;
+
+   /* n2 = fftLen/4 */
+   n2 >>= 2u;
+   i0 = 0u;
+   ia1 = 0u;
+
+   j = n2;
+
+   /*  Calculation of first stage */
+   do
+   {
+      /*  index calculation for the input as, */
+      /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */
+      i1 = i0 + n2;
+      i2 = i1 + n2;
+      i3 = i2 + n2;
+
+      /*  Butterfly implementation */
+      xaIn = pSrc[(2u * i0)];
+      yaIn = pSrc[(2u * i0) + 1u];
+
+      xcIn = pSrc[(2u * i2)];
+      ycIn = pSrc[(2u * i2) + 1u];
+
+      xbIn = pSrc[(2u * i1)];
+      ybIn = pSrc[(2u * i1) + 1u];
+
+      xdIn = pSrc[(2u * i3)];
+      ydIn = pSrc[(2u * i3) + 1u];
+
+      /* xa + xc */
+      Xaplusc = xaIn + xcIn;
+      /* xb + xd */
+      Xbplusd = xbIn + xdIn;
+      /* ya + yc */
+      Yaplusc = yaIn + ycIn;
+      /* yb + yd */
+      Ybplusd = ybIn + ydIn;
+
+      /*  index calculation for the coefficients */
+      ia2 = ia1 + ia1;
+      co2 = pCoef[ia2 * 2u];
+      si2 = pCoef[(ia2 * 2u) + 1u];
+
+      /* xa - xc */
+      Xaminusc = xaIn - xcIn;
+      /* xb - xd */
+      Xbminusd = xbIn - xdIn;
+      /* ya - yc */
+      Yaminusc = yaIn - ycIn;
+      /* yb - yd */
+      Ybminusd = ybIn - ydIn;
+
+      /* xa' = xa + xb + xc + xd */
+      pSrc[(2u * i0)] = Xaplusc + Xbplusd;
+
+      /* ya' = ya + yb + yc + yd */
+      pSrc[(2u * i0) + 1u] = Yaplusc + Ybplusd;
+
+      /* (xa - xc) - (yb - yd) */
+      Xb12C_out = (Xaminusc - Ybminusd);
+      /* (ya - yc) + (xb - xd) */
+      Yb12C_out = (Yaminusc + Xbminusd);
+      /* (xa + xc) - (xb + xd) */
+      Xc12C_out = (Xaplusc - Xbplusd);
+      /* (ya + yc) - (yb + yd) */
+      Yc12C_out = (Yaplusc - Ybplusd);
+      /* (xa - xc) + (yb - yd) */
+      Xd12C_out = (Xaminusc + Ybminusd);
+      /* (ya - yc) - (xb - xd) */
+      Yd12C_out = (Yaminusc - Xbminusd);
+
+      co1 = pCoef[ia1 * 2u];
+      si1 = pCoef[(ia1 * 2u) + 1u];
+
+      /*  index calculation for the coefficients */
+      ia3 = ia2 + ia1;
+      co3 = pCoef[ia3 * 2u];
+      si3 = pCoef[(ia3 * 2u) + 1u];
+
+      Xb12_out = Xb12C_out * co1;
+      Yb12_out = Yb12C_out * co1;
+      Xc12_out = Xc12C_out * co2;
+      Yc12_out = Yc12C_out * co2;
+      Xd12_out = Xd12C_out * co3;
+      Yd12_out = Yd12C_out * co3;
+   
+      /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+      //Xb12_out -= Yb12C_out * si1;
+      p0 = Yb12C_out * si1;
+      /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+      //Yb12_out += Xb12C_out * si1;
+      p1 = Xb12C_out * si1;
+      /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+      //Xc12_out -= Yc12C_out * si2;
+      p2 = Yc12C_out * si2;
+      /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+      //Yc12_out += Xc12C_out * si2;
+      p3 = Xc12C_out * si2;
+      /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+      //Xd12_out -= Yd12C_out * si3;
+      p4 = Yd12C_out * si3;
+      /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+      //Yd12_out += Xd12C_out * si3;
+      p5 = Xd12C_out * si3;
+      
+      Xb12_out -= p0;
+      Yb12_out += p1;
+      Xc12_out -= p2;
+      Yc12_out += p3;
+      Xd12_out -= p4;
+      Yd12_out += p5;
+
+      /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+      pSrc[2u * i1] = Xc12_out;
+
+      /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+      pSrc[(2u * i1) + 1u] = Yc12_out;
+
+      /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+      pSrc[2u * i2] = Xb12_out;
+
+      /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+      pSrc[(2u * i2) + 1u] = Yb12_out;
+
+      /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+      pSrc[2u * i3] = Xd12_out;
+
+      /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+      pSrc[(2u * i3) + 1u] = Yd12_out;
+
+      /*  Twiddle coefficients index modifier */
+      ia1 = ia1 + twidCoefModifier;
+
+      /*  Updating input index */
+      i0 = i0 + 1u;
+
+   } while(--j);
+
+   twidCoefModifier <<= 2u;
+
+   /*  Calculation of second stage to excluding last stage */
+   for (k = fftLen >> 2u; k > 4u; k >>= 2u)
+   {
+      /*  Initializations for the first stage */
+      n1 = n2;
+      n2 >>= 2u;
+      ia1 = 0u;
+
+      /*  Calculation of first stage */
+      j = 0;
+      do
+      {
+         /*  index calculation for the coefficients */
+         ia2 = ia1 + ia1;
+         ia3 = ia2 + ia1;
+         co1 = pCoef[ia1 * 2u];
+         si1 = pCoef[(ia1 * 2u) + 1u];
+         co2 = pCoef[ia2 * 2u];
+         si2 = pCoef[(ia2 * 2u) + 1u];
+         co3 = pCoef[ia3 * 2u];
+         si3 = pCoef[(ia3 * 2u) + 1u];
+
+         /*  Twiddle coefficients index modifier */
+         ia1 = ia1 + twidCoefModifier;
+
+         i0 = j;
+         do
+         {
+            /*  index calculation for the input as, */
+            /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */
+            i1 = i0 + n2;
+            i2 = i1 + n2;
+            i3 = i2 + n2;
+
+            xaIn = pSrc[(2u * i0)];
+            yaIn = pSrc[(2u * i0) + 1u];
+
+            xbIn = pSrc[(2u * i1)];
+            ybIn = pSrc[(2u * i1) + 1u];
+
+            xcIn = pSrc[(2u * i2)];
+            ycIn = pSrc[(2u * i2) + 1u];
+
+            xdIn = pSrc[(2u * i3)];
+            ydIn = pSrc[(2u * i3) + 1u];
+
+            /* xa - xc */
+            Xaminusc = xaIn - xcIn;
+            /* (xb - xd) */
+            Xbminusd = xbIn - xdIn;
+            /* ya - yc */
+            Yaminusc = yaIn - ycIn;
+            /* (yb - yd) */
+            Ybminusd = ybIn - ydIn;
+
+            /* xa + xc */
+            Xaplusc = xaIn + xcIn;
+            /* xb + xd */
+            Xbplusd = xbIn + xdIn;
+            /* ya + yc */
+            Yaplusc = yaIn + ycIn;
+            /* yb + yd */
+            Ybplusd = ybIn + ydIn;
+
+            /* (xa - xc) - (yb - yd) */
+            Xb12C_out = (Xaminusc - Ybminusd);
+            /* (ya - yc) +  (xb - xd) */
+            Yb12C_out = (Yaminusc + Xbminusd);
+            /* xa + xc -(xb + xd) */
+            Xc12C_out = (Xaplusc - Xbplusd);
+            /* (ya + yc) - (yb + yd) */
+            Yc12C_out = (Yaplusc - Ybplusd);
+            /* (xa - xc) + (yb - yd) */
+            Xd12C_out = (Xaminusc + Ybminusd);
+            /* (ya - yc) -  (xb - xd) */
+            Yd12C_out = (Yaminusc - Xbminusd);
+
+            pSrc[(2u * i0)] = Xaplusc + Xbplusd;
+            pSrc[(2u * i0) + 1u] = Yaplusc + Ybplusd;
+
+            Xb12_out = Xb12C_out * co1;
+            Yb12_out = Yb12C_out * co1;
+            Xc12_out = Xc12C_out * co2;
+            Yc12_out = Yc12C_out * co2;
+            Xd12_out = Xd12C_out * co3;
+            Yd12_out = Yd12C_out * co3;
+
+            /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+            //Xb12_out -= Yb12C_out * si1;
+            p0 = Yb12C_out * si1;
+            /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+            //Yb12_out += Xb12C_out * si1;
+            p1 = Xb12C_out * si1;
+            /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+            //Xc12_out -= Yc12C_out * si2;
+            p2 = Yc12C_out * si2;
+            /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+            //Yc12_out += Xc12C_out * si2;
+            p3 = Xc12C_out * si2;
+            /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+            //Xd12_out -= Yd12C_out * si3;
+            p4 = Yd12C_out * si3;
+            /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+            //Yd12_out += Xd12C_out * si3;
+            p5 = Xd12C_out * si3;
+            
+            Xb12_out -= p0;
+            Yb12_out += p1;
+            Xc12_out -= p2;
+            Yc12_out += p3;
+            Xd12_out -= p4;
+            Yd12_out += p5;
+
+            /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+            pSrc[2u * i1] = Xc12_out;
+
+            /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+            pSrc[(2u * i1) + 1u] = Yc12_out;
+
+            /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+            pSrc[2u * i2] = Xb12_out;
+
+            /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+            pSrc[(2u * i2) + 1u] = Yb12_out;
+
+            /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+            pSrc[2u * i3] = Xd12_out;
+
+            /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+            pSrc[(2u * i3) + 1u] = Yd12_out;
+
+            i0 += n1;
+         } while(i0 < fftLen);
+         j++;
+      } while(j <= (n2 - 1u));
+      twidCoefModifier <<= 2u;
+   }
+   /*  Initializations of last stage */
+
+   j = fftLen >> 2;
+   ptr1 = &pSrc[0];
+
+   /*  Calculations of last stage */
+   do
+   {
+      xaIn = ptr1[0];
+      yaIn = ptr1[1];
+      xbIn = ptr1[2];
+      ybIn = ptr1[3];
+      xcIn = ptr1[4];
+      ycIn = ptr1[5];
+      xdIn = ptr1[6];
+      ydIn = ptr1[7];
+
+      /*  Butterfly implementation */
+      /* xa + xc */
+      Xaplusc = xaIn + xcIn;
+
+      /* xa - xc */
+      Xaminusc = xaIn - xcIn;
+
+      /* ya + yc */
+      Yaplusc = yaIn + ycIn;
+
+      /* ya - yc */
+      Yaminusc = yaIn - ycIn;
+
+      /* xb + xd */
+      Xbplusd = xbIn + xdIn;
+
+      /* yb + yd */
+      Ybplusd = ybIn + ydIn;
+
+      /* (xb-xd) */
+      Xbminusd = xbIn - xdIn;
+
+      /* (yb-yd) */
+      Ybminusd = ybIn - ydIn;
+      
+      /* xa' = (xa+xb+xc+xd) * onebyfftLen */
+      a0 = (Xaplusc + Xbplusd);
+      /* ya' = (ya+yb+yc+yd) * onebyfftLen */
+      a1 = (Yaplusc + Ybplusd);
+      /* xc' = (xa-xb+xc-xd) * onebyfftLen */
+      a2 = (Xaplusc - Xbplusd);
+      /* yc' = (ya-yb+yc-yd) * onebyfftLen  */
+      a3 = (Yaplusc - Ybplusd);
+      /* xb' = (xa-yb-xc+yd) * onebyfftLen */
+      a4 = (Xaminusc - Ybminusd);
+      /* yb' = (ya+xb-yc-xd) * onebyfftLen */
+      a5 = (Yaminusc + Xbminusd);
+      /* xd' = (xa-yb-xc+yd) * onebyfftLen */
+      a6 = (Xaminusc + Ybminusd);
+      /* yd' = (ya-xb-yc+xd) * onebyfftLen */
+      a7 = (Yaminusc - Xbminusd);
+   
+      p0 = a0 * onebyfftLen;
+      p1 = a1 * onebyfftLen;
+      p2 = a2 * onebyfftLen;
+      p3 = a3 * onebyfftLen;
+      p4 = a4 * onebyfftLen;
+      p5 = a5 * onebyfftLen;
+      p6 = a6 * onebyfftLen;
+      p7 = a7 * onebyfftLen;
+   
+      /* xa' = (xa+xb+xc+xd) * onebyfftLen */
+      ptr1[0] = p0;
+      /* ya' = (ya+yb+yc+yd) * onebyfftLen */
+      ptr1[1] = p1;
+      /* xc' = (xa-xb+xc-xd) * onebyfftLen */
+      ptr1[2] = p2;
+      /* yc' = (ya-yb+yc-yd) * onebyfftLen  */
+      ptr1[3] = p3;
+      /* xb' = (xa-yb-xc+yd) * onebyfftLen */
+      ptr1[4] = p4;
+      /* yb' = (ya+xb-yc-xd) * onebyfftLen */
+      ptr1[5] = p5;
+      /* xd' = (xa-yb-xc+yd) * onebyfftLen */
+      ptr1[6] = p6;
+      /* yd' = (ya-xb-yc+xd) * onebyfftLen */
+      ptr1[7] = p7;
+
+      /* increment source pointer by 8 for next calculations */
+      ptr1 = ptr1 + 8u;
+
+   } while(--j);
+
+#else
+
+   float32_t t1, t2, r1, r2, s1, s2;
+
+   /* Run the below code for Cortex-M0 */
+
+   /*  Initializations for the first stage */
+   n2 = fftLen;
+   n1 = n2;
+
+   /*  Calculation of first stage */
+   for (k = fftLen; k > 4u; k >>= 2u)
+   {
+      /*  Initializations for the first stage */
+      n1 = n2;
+      n2 >>= 2u;
+      ia1 = 0u;
+
+      /*  Calculation of first stage */
+      j = 0;
+      do
+      {
+         /*  index calculation for the coefficients */
+         ia2 = ia1 + ia1;
+         ia3 = ia2 + ia1;
+         co1 = pCoef[ia1 * 2u];
+         si1 = pCoef[(ia1 * 2u) + 1u];
+         co2 = pCoef[ia2 * 2u];
+         si2 = pCoef[(ia2 * 2u) + 1u];
+         co3 = pCoef[ia3 * 2u];
+         si3 = pCoef[(ia3 * 2u) + 1u];
+
+         /*  Twiddle coefficients index modifier */
+         ia1 = ia1 + twidCoefModifier;
+
+         i0 = j;
+         do
+         {
+            /*  index calculation for the input as, */
+            /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */
+            i1 = i0 + n2;
+            i2 = i1 + n2;
+            i3 = i2 + n2;
+
+            /* xa + xc */
+            r1 = pSrc[(2u * i0)] + pSrc[(2u * i2)];
+
+            /* xa - xc */
+            r2 = pSrc[(2u * i0)] - pSrc[(2u * i2)];
+
+            /* ya + yc */
+            s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u];
+
+            /* ya - yc */
+            s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u];
+
+            /* xb + xd */
+            t1 = pSrc[2u * i1] + pSrc[2u * i3];
+
+            /* xa' = xa + xb + xc + xd */
+            pSrc[2u * i0] = r1 + t1;
+
+            /* xa + xc -(xb + xd) */
+            r1 = r1 - t1;
+
+            /* yb + yd */
+            t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u];
+
+            /* ya' = ya + yb + yc + yd */
+            pSrc[(2u * i0) + 1u] = s1 + t2;
+
+            /* (ya + yc) - (yb + yd) */
+            s1 = s1 - t2;
+
+            /* (yb - yd) */
+            t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u];
+
+            /* (xb - xd) */
+            t2 = pSrc[2u * i1] - pSrc[2u * i3];
+
+            /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+            pSrc[2u * i1] = (r1 * co2) - (s1 * si2);
+
+            /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+            pSrc[(2u * i1) + 1u] = (s1 * co2) + (r1 * si2);
+
+            /* (xa - xc) - (yb - yd) */
+            r1 = r2 - t1;
+
+            /* (xa - xc) + (yb - yd) */
+            r2 = r2 + t1;
+
+            /* (ya - yc) +  (xb - xd) */
+            s1 = s2 + t2;
+
+            /* (ya - yc) -  (xb - xd) */
+            s2 = s2 - t2;
+
+            /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+            pSrc[2u * i2] = (r1 * co1) - (s1 * si1);
+
+            /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+            pSrc[(2u * i2) + 1u] = (s1 * co1) + (r1 * si1);
+
+            /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+            pSrc[2u * i3] = (r2 * co3) - (s2 * si3);
+
+            /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+            pSrc[(2u * i3) + 1u] = (s2 * co3) + (r2 * si3);
+         
+            i0 += n1;
+         } while( i0 < fftLen);
+         j++;
+      } while(j <= (n2 - 1u));
+      twidCoefModifier <<= 2u;
+   }
+   /*  Initializations of last stage */
+   n1 = n2;
+   n2 >>= 2u;
+
+   /*  Calculations of last stage */
+   for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1)
+   {
+      /*  index calculation for the input as, */
+      /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */
+      i1 = i0 + n2;
+      i2 = i1 + n2;
+      i3 = i2 + n2;
+
+      /*  Butterfly implementation */
+      /* xa + xc */
+      r1 = pSrc[2u * i0] + pSrc[2u * i2];
+
+      /* xa - xc */
+      r2 = pSrc[2u * i0] - pSrc[2u * i2];
+
+      /* ya + yc */
+      s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u];
+
+      /* ya - yc */
+      s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u];
+
+      /* xc + xd */
+      t1 = pSrc[2u * i1] + pSrc[2u * i3];
+
+      /* xa' = xa + xb + xc + xd */
+      pSrc[2u * i0] = (r1 + t1) * onebyfftLen;
+
+      /* (xa + xb) - (xc + xd) */
+      r1 = r1 - t1;
+
+      /* yb + yd */
+      t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u];
+
+      /* ya' = ya + yb + yc + yd */
+      pSrc[(2u * i0) + 1u] = (s1 + t2) * onebyfftLen;
+
+      /* (ya + yc) - (yb + yd) */
+      s1 = s1 - t2;
+
+      /* (yb-yd) */
+      t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u];
+
+      /* (xb-xd) */
+      t2 = pSrc[2u * i1] - pSrc[2u * i3];
+
+      /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+      pSrc[2u * i1] = r1 * onebyfftLen;
+
+      /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+      pSrc[(2u * i1) + 1u] = s1 * onebyfftLen;
+
+      /* (xa - xc) - (yb-yd) */
+      r1 = r2 - t1;
+
+      /* (xa - xc) + (yb-yd) */
+      r2 = r2 + t1;
+
+      /* (ya - yc) + (xb-xd) */
+      s1 = s2 + t2;
+
+      /* (ya - yc) - (xb-xd) */
+      s2 = s2 - t2;
+
+      /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+      pSrc[2u * i2] = r1 * onebyfftLen;
+
+      /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+      pSrc[(2u * i2) + 1u] = s1 * onebyfftLen;
+
+      /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+      pSrc[2u * i3] = r2 * onebyfftLen;
+
+      /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+      pSrc[(2u * i3) + 1u] = s2 * onebyfftLen;
+   }
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY_FAMILY */
+}
+
+/**    
+* @addtogroup ComplexFFT    
+* @{    
+*/
+
+/**    
+* @details    
+* @brief Processing function for the floating-point Radix-4 CFFT/CIFFT.   
+* @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_f32 and will be removed
+* in the future.
+* @param[in]      *S    points to an instance of the floating-point Radix-4 CFFT/CIFFT structure.   
+* @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.   
+* @return none.   
+*/
+
+void arm_cfft_radix4_f32(
+const arm_cfft_radix4_instance_f32 * S,
+float32_t * pSrc)
+{
+
+   if(S->ifftFlag == 1u)
+   {
+      /*  Complex IFFT radix-4  */
+      arm_radix4_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle,
+      S->twidCoefModifier, S->onebyfftLen);
+   }
+   else
+   {
+      /*  Complex FFT radix-4  */
+      arm_radix4_butterfly_f32(pSrc, S->fftLen, S->pTwiddle,
+      S->twidCoefModifier);
+   }
+
+   if(S->bitReverseFlag == 1u)
+   {
+      /*  Bit Reversal */
+      arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);
+   }
+
+}
+
+/**    
+* @} end of ComplexFFT group    
+*/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,165 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_radix4_init_f32.c    
+*    
+* Description:	Radix-4 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup ComplexFFT    
+ * @{    
+ */
+
+/**    
+* @brief  Initialization function for the floating-point CFFT/CIFFT.   
+* @deprecated Do not use this function.  It has been superceded by \ref arm_cfft_f32 and will be removed
+* in the future.
+* @param[in,out] *S             points to an instance of the floating-point CFFT/CIFFT structure.   
+* @param[in]     fftLen         length of the FFT.   
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.   
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.   
+* @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.   
+*    
+* \par Description:   
+* \par    
+* The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.    
+* Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated   
+* \par    
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.    
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.    
+* \par    
+* The parameter <code>fftLen</code>	Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.    
+* \par    
+* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.    
+*/
+
+arm_status arm_cfft_radix4_init_f32(
+  arm_cfft_radix4_instance_f32 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag)
+{
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+
+  /*  Initialise the FFT length */
+  S->fftLen = fftLen;
+
+  /*  Initialise the Twiddle coefficient pointer */
+  S->pTwiddle = (float32_t *) twiddleCoef;
+
+  /*  Initialise the Flag for selection of CFFT or CIFFT */
+  S->ifftFlag = ifftFlag;
+
+  /*  Initialise the Flag for calculation Bit reversal or not */
+  S->bitReverseFlag = bitReverseFlag;
+
+  /*  Initializations of structure parameters depending on the FFT length */
+  switch (S->fftLen)
+  {
+
+  case 4096u:
+    /*  Initializations of structure parameters for 4096 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 1u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 1u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) armBitRevTable;
+    /*  Initialise the 1/fftLen Value */
+    S->onebyfftLen = 0.000244140625;
+    break;
+
+  case 1024u:
+    /*  Initializations of structure parameters for 1024 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 4u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 4u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];
+    /*  Initialise the 1/fftLen Value */
+    S->onebyfftLen = 0.0009765625f;
+    break;
+
+
+  case 256u:
+    /*  Initializations of structure parameters for 256 point FFT */
+    S->twidCoefModifier = 16u;
+    S->bitRevFactor = 16u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];
+    S->onebyfftLen = 0.00390625f;
+    break;
+
+  case 64u:
+    /*  Initializations of structure parameters for 64 point FFT */
+    S->twidCoefModifier = 64u;
+    S->bitRevFactor = 64u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];
+    S->onebyfftLen = 0.015625f;
+    break;
+
+  case 16u:
+    /*  Initializations of structure parameters for 16 point FFT */
+    S->twidCoefModifier = 256u;
+    S->bitRevFactor = 256u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];
+    S->onebyfftLen = 0.0625f;
+    break;
+
+
+  default:
+    /*  Reporting argument error if fftSize is not valid value */
+    status = ARM_MATH_ARGUMENT_ERROR;
+    break;
+  }
+
+  return (status);
+}
+
+/**    
+ * @} end of ComplexFFT group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,152 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_radix4_init_q15.c    
+*    
+* Description:	Radix-4 Decimation in Frequency Q15 FFT & IFFT initialization function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+
+/**    
+ * @addtogroup ComplexFFT    
+ * @{    
+ */
+
+
+/**    
+* @brief Initialization function for the Q15 CFFT/CIFFT.   
+* @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_q15 and will be removed
+* @param[in,out] *S             points to an instance of the Q15 CFFT/CIFFT structure.   
+* @param[in]     fftLen         length of the FFT.   
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.   
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.   
+* @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.   
+*    
+* \par Description:   
+* \par    
+* The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.    
+* Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated   
+* \par    
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.    
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.    
+* \par    
+* The parameter <code>fftLen</code>	Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.    
+* \par    
+* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.    
+*/
+
+arm_status arm_cfft_radix4_init_q15(
+  arm_cfft_radix4_instance_q15 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag)
+{
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+  /*  Initialise the FFT length */
+  S->fftLen = fftLen;
+  /*  Initialise the Twiddle coefficient pointer */
+  S->pTwiddle = (q15_t *) twiddleCoef_4096_q15;
+  /*  Initialise the Flag for selection of CFFT or CIFFT */
+  S->ifftFlag = ifftFlag;
+  /*  Initialise the Flag for calculation Bit reversal or not */
+  S->bitReverseFlag = bitReverseFlag;
+
+  /*  Initializations of structure parameters depending on the FFT length */
+  switch (S->fftLen)
+  {
+  case 4096u:
+    /*  Initializations of structure parameters for 4096 point FFT */
+
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 1u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 1u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) armBitRevTable;
+
+    break;
+
+  case 1024u:
+    /*  Initializations of structure parameters for 1024 point FFT */
+    S->twidCoefModifier = 4u;
+    S->bitRevFactor = 4u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];
+
+    break;
+
+  case 256u:
+    /*  Initializations of structure parameters for 256 point FFT */
+    S->twidCoefModifier = 16u;
+    S->bitRevFactor = 16u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];
+
+    break;
+
+  case 64u:
+    /*  Initializations of structure parameters for 64 point FFT */
+    S->twidCoefModifier = 64u;
+    S->bitRevFactor = 64u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];
+
+    break;
+
+  case 16u:
+    /*  Initializations of structure parameters for 16 point FFT */
+    S->twidCoefModifier = 256u;
+    S->bitRevFactor = 256u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];
+
+    break;
+
+  default:
+    /*  Reporting argument error if fftSize is not valid value */
+    status = ARM_MATH_ARGUMENT_ERROR;
+    break;
+  }
+
+  return (status);
+}
+
+/**    
+ * @} end of ComplexFFT group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,148 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5   
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_radix4_init_q31.c    
+*    
+* Description:	Radix-4 Decimation in Frequency Q31 FFT & IFFT initialization function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup ComplexFFT    
+ * @{    
+ */
+
+/**    
+*    
+* @brief  Initialization function for the Q31 CFFT/CIFFT.   
+* @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_q31 and will be removed
+* @param[in,out] *S             points to an instance of the Q31 CFFT/CIFFT structure.   
+* @param[in]     fftLen         length of the FFT.   
+* @param[in]     ifftFlag       flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.   
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.   
+* @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.   
+*    
+* \par Description:   
+* \par    
+* The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.    
+* Set(=1) ifftFlag for calculation of CIFFT otherwise  CFFT is calculated   
+* \par    
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.    
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.    
+* \par    
+* The parameter <code>fftLen</code>	Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.    
+* \par    
+* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.    
+*/
+
+arm_status arm_cfft_radix4_init_q31(
+  arm_cfft_radix4_instance_q31 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag)
+{
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+  /*  Initialise the FFT length */
+  S->fftLen = fftLen;
+  /*  Initialise the Twiddle coefficient pointer */
+  S->pTwiddle = (q31_t *) twiddleCoef_4096_q31;
+  /*  Initialise the Flag for selection of CFFT or CIFFT */
+  S->ifftFlag = ifftFlag;
+  /*  Initialise the Flag for calculation Bit reversal or not */
+  S->bitReverseFlag = bitReverseFlag;
+
+  /*  Initializations of Instance structure depending on the FFT length */
+  switch (S->fftLen)
+  {
+    /*  Initializations of structure parameters for 4096 point FFT */
+  case 4096u:
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 1u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 1u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) armBitRevTable;
+    break;
+
+    /*  Initializations of structure parameters for 1024 point FFT */
+  case 1024u:
+    /*  Initialise the twiddle coef modifier value */
+    S->twidCoefModifier = 4u;
+    /*  Initialise the bit reversal table modifier */
+    S->bitRevFactor = 4u;
+    /*  Initialise the bit reversal table pointer */
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[3];
+    break;
+
+  case 256u:
+    /*  Initializations of structure parameters for 256 point FFT */
+    S->twidCoefModifier = 16u;
+    S->bitRevFactor = 16u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[15];
+    break;
+
+  case 64u:
+    /*  Initializations of structure parameters for 64 point FFT */
+    S->twidCoefModifier = 64u;
+    S->bitRevFactor = 64u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[63];
+    break;
+
+  case 16u:
+    /*  Initializations of structure parameters for 16 point FFT */
+    S->twidCoefModifier = 256u;
+    S->bitRevFactor = 256u;
+    S->pBitRevTable = (uint16_t *) & armBitRevTable[255];
+    break;
+
+  default:
+    /*  Reporting argument error if fftSize is not valid value */
+    status = ARM_MATH_ARGUMENT_ERROR;
+    break;
+  }
+
+  return (status);
+}
+
+/**    
+ * @} end of ComplexFFT group    
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1924 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_radix4_q15.c    
+*    
+* Description:	This file has function definition of Radix-4 FFT & IFFT function and    
+*				In-place bit reversal using bit reversal table    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+
+void arm_radix4_butterfly_q15(
+  q15_t * pSrc16,
+  uint32_t fftLen,
+  q15_t * pCoef16,
+  uint32_t twidCoefModifier);
+
+void arm_radix4_butterfly_inverse_q15(
+  q15_t * pSrc16,
+  uint32_t fftLen,
+  q15_t * pCoef16,
+  uint32_t twidCoefModifier);
+
+void arm_bitreversal_q15(
+  q15_t * pSrc,
+  uint32_t fftLen,
+  uint16_t bitRevFactor,
+  uint16_t * pBitRevTab);
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup ComplexFFT    
+ * @{    
+ */
+
+
+/**    
+ * @details    
+ * @brief Processing function for the Q15 CFFT/CIFFT.   
+ * @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_q15 and will be removed
+ * @param[in]      *S    points to an instance of the Q15 CFFT/CIFFT structure.   
+ * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place.   
+ * @return none.   
+ *     
+ * \par Input and output formats:    
+ * \par    
+ * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.   
+ * Hence the output format is different for different FFT sizes.    
+ * The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT:   
+ * \par   
+ * \image html CFFTQ15.gif "Input and Output Formats for Q15 CFFT"    
+ * \image html CIFFTQ15.gif "Input and Output Formats for Q15 CIFFT"    
+ */
+
+void arm_cfft_radix4_q15(
+  const arm_cfft_radix4_instance_q15 * S,
+  q15_t * pSrc)
+{
+  if(S->ifftFlag == 1u)
+  {
+    /*  Complex IFFT radix-4  */
+    arm_radix4_butterfly_inverse_q15(pSrc, S->fftLen, S->pTwiddle,
+                                     S->twidCoefModifier);
+  }
+  else
+  {
+    /*  Complex FFT radix-4  */
+    arm_radix4_butterfly_q15(pSrc, S->fftLen, S->pTwiddle,
+                             S->twidCoefModifier);
+  }
+
+  if(S->bitReverseFlag == 1u)
+  {
+    /*  Bit Reversal */
+    arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);
+  }
+
+}
+
+/**    
+ * @} end of ComplexFFT group    
+ */
+
+/*    
+* Radix-4 FFT algorithm used is :    
+*    
+* Input real and imaginary data:    
+* x(n) = xa + j * ya    
+* x(n+N/4 ) = xb + j * yb    
+* x(n+N/2 ) = xc + j * yc    
+* x(n+3N 4) = xd + j * yd    
+*    
+*    
+* Output real and imaginary data:    
+* x(4r) = xa'+ j * ya'    
+* x(4r+1) = xb'+ j * yb'    
+* x(4r+2) = xc'+ j * yc'    
+* x(4r+3) = xd'+ j * yd'    
+*    
+*    
+* Twiddle factors for radix-4 FFT:    
+* Wn = co1 + j * (- si1)    
+* W2n = co2 + j * (- si2)    
+* W3n = co3 + j * (- si3)    
+    
+* The real and imaginary output values for the radix-4 butterfly are    
+* xa' = xa + xb + xc + xd    
+* ya' = ya + yb + yc + yd    
+* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1)    
+* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1)    
+* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2)    
+* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2)    
+* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3)    
+* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3)    
+*    
+*/
+
+/**    
+ * @brief  Core function for the Q15 CFFT butterfly process.   
+ * @param[in, out] *pSrc16          points to the in-place buffer of Q15 data type.   
+ * @param[in]      fftLen           length of the FFT.   
+ * @param[in]      *pCoef16         points to twiddle coefficient buffer.   
+ * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+ * @return none.   
+ */
+
+void arm_radix4_butterfly_q15(
+  q15_t * pSrc16,
+  uint32_t fftLen,
+  q15_t * pCoef16,
+  uint32_t twidCoefModifier)
+{
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t R, S, T, U;
+  q31_t C1, C2, C3, out1, out2;
+  uint32_t n1, n2, ic, i0, j, k;
+
+  q15_t *ptr1;
+  q15_t *pSi0;
+  q15_t *pSi1;
+  q15_t *pSi2;
+  q15_t *pSi3;
+
+  q31_t xaya, xbyb, xcyc, xdyd;
+
+  /* Total process is divided into three stages */
+
+  /* process first stage, middle stages, & last stage */
+
+  /*  Initializations for the first stage */
+  n2 = fftLen;
+  n1 = n2;
+
+  /* n2 = fftLen/4 */
+  n2 >>= 2u;
+
+  /* Index for twiddle coefficient */
+  ic = 0u;
+
+  /* Index for input read and output write */
+  j = n2;
+  
+  pSi0 = pSrc16;
+  pSi1 = pSi0 + 2 * n2;
+  pSi2 = pSi1 + 2 * n2;
+  pSi3 = pSi2 + 2 * n2;
+
+  /* Input is in 1.15(q15) format */
+
+  /*  start of first stage process */
+  do
+  {
+    /*  Butterfly implementation */
+
+    /*  Reading i0, i0+fftLen/2 inputs */
+    /* Read ya (real), xa(imag) input */
+    T = _SIMD32_OFFSET(pSi0);
+    T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1
+    T = __SHADD16(T, 0); // it turns out doing this twice is 2 cycles, the alternative takes 3 cycles
+    //in = ((int16_t) (T & 0xFFFF)) >> 2;       // alternative code that takes 3 cycles
+    //T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+
+    /* Read yc (real), xc(imag) input */
+    S = _SIMD32_OFFSET(pSi2);
+    S = __SHADD16(S, 0);
+    S = __SHADD16(S, 0);
+
+    /* R = packed((ya + yc), (xa + xc) ) */
+    R = __QADD16(T, S);
+
+    /* S = packed((ya - yc), (xa - xc) ) */
+    S = __QSUB16(T, S);
+
+    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+    /* Read yb (real), xb(imag) input */
+    T = _SIMD32_OFFSET(pSi1);
+    T = __SHADD16(T, 0);
+    T = __SHADD16(T, 0);
+
+    /* Read yd (real), xd(imag) input */
+    U = _SIMD32_OFFSET(pSi3);
+    U = __SHADD16(U, 0);
+    U = __SHADD16(U, 0);
+
+    /* T = packed((yb + yd), (xb + xd) ) */
+    T = __QADD16(T, U);
+
+    /*  writing the butterfly processed i0 sample */
+    /* xa' = xa + xb + xc + xd */
+    /* ya' = ya + yb + yc + yd */
+    _SIMD32_OFFSET(pSi0) = __SHADD16(R, T);
+    pSi0 += 2;
+
+    /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */
+    R = __QSUB16(R, T);
+
+    /* co2 & si2 are read from SIMD Coefficient pointer */
+    C2 = _SIMD32_OFFSET(pCoef16 + (4u * ic));
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
+    out1 = __SMUAD(C2, R) >> 16u;
+    /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+    out2 = __SMUSDX(C2, R);
+
+#else
+
+    /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+    out1 = __SMUSDX(R, C2) >> 16u;
+    /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
+    out2 = __SMUAD(C2, R);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+    /*  Reading i0+fftLen/4 */
+    /* T = packed(yb, xb) */
+    T = _SIMD32_OFFSET(pSi1);
+    T = __SHADD16(T, 0);
+    T = __SHADD16(T, 0);
+
+    /* writing the butterfly processed i0 + fftLen/4 sample */
+    /* writing output(xc', yc') in little endian format */
+    _SIMD32_OFFSET(pSi1) =
+      (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+    pSi1 += 2;
+
+    /*  Butterfly calculations */
+    /* U = packed(yd, xd) */
+    U = _SIMD32_OFFSET(pSi3);
+    U = __SHADD16(U, 0);
+    U = __SHADD16(U, 0);
+
+    /* T = packed(yb-yd, xb-xd) */
+    T = __QSUB16(T, U);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */
+    R = __QASX(S, T);
+    /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */
+    S = __QSAX(S, T);
+
+#else
+
+    /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */
+    R = __QSAX(S, T);
+    /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */
+    S = __QASX(S, T);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+    /* co1 & si1 are read from SIMD Coefficient pointer */
+    C1 = _SIMD32_OFFSET(pCoef16 + (2u * ic));
+    /*  Butterfly process for the i0+fftLen/2 sample */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
+    out1 = __SMUAD(C1, S) >> 16u;
+    /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
+    out2 = __SMUSDX(C1, S);
+
+#else
+
+    /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
+    out1 = __SMUSDX(S, C1) >> 16u;
+    /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
+    out2 = __SMUAD(C1, S);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+    /* writing output(xb', yb') in little endian format */
+    _SIMD32_OFFSET(pSi2) =
+      ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF);
+    pSi2 += 2;
+
+
+    /* co3 & si3 are read from SIMD Coefficient pointer */
+    C3 = _SIMD32_OFFSET(pCoef16 + (6u * ic));
+    /*  Butterfly process for the i0+3fftLen/4 sample */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */
+    out1 = __SMUAD(C3, R) >> 16u;
+    /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */
+    out2 = __SMUSDX(C3, R);
+
+#else
+
+    /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */
+    out1 = __SMUSDX(R, C3) >> 16u;
+    /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */
+    out2 = __SMUAD(C3, R);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+    /* writing output(xd', yd') in little endian format */
+    _SIMD32_OFFSET(pSi3) =
+      ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+    pSi3 += 2;
+
+    /*  Twiddle coefficients index modifier */
+    ic = ic + twidCoefModifier;
+
+  } while(--j);
+  /* data is in 4.11(q11) format */
+
+  /* end of first stage process */
+
+
+  /* start of middle stage process */
+
+  /*  Twiddle coefficients index modifier */
+  twidCoefModifier <<= 2u;
+
+  /*  Calculation of Middle stage */
+  for (k = fftLen / 4u; k > 4u; k >>= 2u)
+  {
+    /*  Initializations for the middle stage */
+    n1 = n2;
+    n2 >>= 2u;
+    ic = 0u;
+
+    for (j = 0u; j <= (n2 - 1u); j++)
+    {
+      /*  index calculation for the coefficients */
+      C1 = _SIMD32_OFFSET(pCoef16 + (2u * ic));
+      C2 = _SIMD32_OFFSET(pCoef16 + (4u * ic));
+      C3 = _SIMD32_OFFSET(pCoef16 + (6u * ic));
+
+      /*  Twiddle coefficients index modifier */
+      ic = ic + twidCoefModifier;
+      
+      pSi0 = pSrc16 + 2 * j;
+      pSi1 = pSi0 + 2 * n2;
+      pSi2 = pSi1 + 2 * n2;
+      pSi3 = pSi2 + 2 * n2;
+
+      /*  Butterfly implementation */
+      for (i0 = j; i0 < fftLen; i0 += n1)
+      {
+        /*  Reading i0, i0+fftLen/2 inputs */
+        /* Read ya (real), xa(imag) input */
+        T = _SIMD32_OFFSET(pSi0);
+
+        /* Read yc (real), xc(imag) input */
+        S = _SIMD32_OFFSET(pSi2);
+
+        /* R = packed( (ya + yc), (xa + xc)) */
+        R = __QADD16(T, S);
+
+        /* S = packed((ya - yc), (xa - xc)) */
+        S = __QSUB16(T, S);
+
+        /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+        /* Read yb (real), xb(imag) input */
+        T = _SIMD32_OFFSET(pSi1);
+
+        /* Read yd (real), xd(imag) input */
+        U = _SIMD32_OFFSET(pSi3);
+
+        /* T = packed( (yb + yd), (xb + xd)) */
+        T = __QADD16(T, U);
+
+        /*  writing the butterfly processed i0 sample */
+
+        /* xa' = xa + xb + xc + xd */
+        /* ya' = ya + yb + yc + yd */
+        out1 = __SHADD16(R, T);
+        out1 = __SHADD16(out1, 0);
+        _SIMD32_OFFSET(pSi0) = out1;
+        pSi0 += 2 * n1;
+
+        /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */
+        R = __SHSUB16(R, T);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */
+        out1 = __SMUAD(C2, R) >> 16u;
+
+        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+        out2 = __SMUSDX(C2, R);
+
+#else
+
+        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+        out1 = __SMUSDX(R, C2) >> 16u;
+
+        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */
+        out2 = __SMUAD(C2, R);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /*  Reading i0+3fftLen/4 */
+        /* Read yb (real), xb(imag) input */
+        T = _SIMD32_OFFSET(pSi1);
+
+        /*  writing the butterfly processed i0 + fftLen/4 sample */
+        /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
+        /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+        _SIMD32_OFFSET(pSi1) =
+          ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+        pSi1 += 2 * n1;
+
+        /*  Butterfly calculations */
+
+        /* Read yd (real), xd(imag) input */
+        U = _SIMD32_OFFSET(pSi3);
+
+        /* T = packed(yb-yd, xb-xd) */
+        T = __QSUB16(T, U);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */
+        R = __SHASX(S, T);
+
+        /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */
+        S = __SHSAX(S, T);
+
+
+        /*  Butterfly process for the i0+fftLen/2 sample */
+        out1 = __SMUAD(C1, S) >> 16u;
+        out2 = __SMUSDX(C1, S);
+
+#else
+
+        /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */
+        R = __SHSAX(S, T);
+
+        /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */
+        S = __SHASX(S, T);
+
+
+        /*  Butterfly process for the i0+fftLen/2 sample */
+        out1 = __SMUSDX(S, C1) >> 16u;
+        out2 = __SMUAD(C1, S);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
+        /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
+        _SIMD32_OFFSET(pSi2) =
+          ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+        pSi2 += 2 * n1;
+
+        /*  Butterfly process for the i0+3fftLen/4 sample */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        out1 = __SMUAD(C3, R) >> 16u;
+        out2 = __SMUSDX(C3, R);
+
+#else
+
+        out1 = __SMUSDX(R, C3) >> 16u;
+        out2 = __SMUAD(C3, R);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */
+        /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */
+        _SIMD32_OFFSET(pSi3) =
+          ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+        pSi3 += 2 * n1;
+      }
+    }
+    /*  Twiddle coefficients index modifier */
+    twidCoefModifier <<= 2u;
+  }
+  /* end of middle stage process */
+
+
+  /* data is in 10.6(q6) format for the 1024 point */
+  /* data is in 8.8(q8) format for the 256 point */
+  /* data is in 6.10(q10) format for the 64 point */
+  /* data is in 4.12(q12) format for the 16 point */
+
+  /*  Initializations for the last stage */
+  j = fftLen >> 2;
+
+  ptr1 = &pSrc16[0];
+
+  /* start of last stage process */
+
+  /*  Butterfly implementation */
+  do
+  {
+    /* Read xa (real), ya(imag) input */
+    xaya = *__SIMD32(ptr1)++;
+
+    /* Read xb (real), yb(imag) input */
+    xbyb = *__SIMD32(ptr1)++;
+
+    /* Read xc (real), yc(imag) input */
+    xcyc = *__SIMD32(ptr1)++;
+
+    /* Read xd (real), yd(imag) input */
+    xdyd = *__SIMD32(ptr1)++;
+
+    /* R = packed((ya + yc), (xa + xc)) */
+    R = __QADD16(xaya, xcyc);
+
+    /* T = packed((yb + yd), (xb + xd)) */
+    T = __QADD16(xbyb, xdyd);
+
+    /* pointer updation for writing */
+    ptr1 = ptr1 - 8u;
+
+
+    /* xa' = xa + xb + xc + xd */
+    /* ya' = ya + yb + yc + yd */
+    *__SIMD32(ptr1)++ = __SHADD16(R, T);
+
+    /* T = packed((yb + yd), (xb + xd)) */
+    T = __QADD16(xbyb, xdyd);
+
+    /* xc' = (xa-xb+xc-xd) */
+    /* yc' = (ya-yb+yc-yd) */
+    *__SIMD32(ptr1)++ = __SHSUB16(R, T);
+
+    /* S = packed((ya - yc), (xa - xc)) */
+    S = __QSUB16(xaya, xcyc);
+
+    /* Read yd (real), xd(imag) input */
+    /* T = packed( (yb - yd), (xb - xd))  */
+    U = __QSUB16(xbyb, xdyd);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* xb' = (xa+yb-xc-yd) */
+    /* yb' = (ya-xb-yc+xd) */
+    *__SIMD32(ptr1)++ = __SHSAX(S, U);
+
+
+    /* xd' = (xa-yb-xc+yd) */
+    /* yd' = (ya+xb-yc-xd) */
+    *__SIMD32(ptr1)++ = __SHASX(S, U);
+
+#else
+
+    /* xb' = (xa+yb-xc-yd) */
+    /* yb' = (ya-xb-yc+xd) */
+    *__SIMD32(ptr1)++ = __SHASX(S, U);
+
+
+    /* xd' = (xa-yb-xc+yd) */
+    /* yd' = (ya+xb-yc-xd) */
+    *__SIMD32(ptr1)++ = __SHSAX(S, U);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+  } while(--j);
+
+  /* end of last stage process */
+
+  /* output is in 11.5(q5) format for the 1024 point */
+  /* output is in 9.7(q7) format for the 256 point   */
+  /* output is in 7.9(q9) format for the 64 point  */
+  /* output is in 5.11(q11) format for the 16 point  */
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q15_t R0, R1, S0, S1, T0, T1, U0, U1;
+  q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2;
+  uint32_t n1, n2, ic, i0, i1, i2, i3, j, k;
+
+  /* Total process is divided into three stages */
+
+  /* process first stage, middle stages, & last stage */
+
+  /*  Initializations for the first stage */
+  n2 = fftLen;
+  n1 = n2;
+
+  /* n2 = fftLen/4 */
+  n2 >>= 2u;
+
+  /* Index for twiddle coefficient */
+  ic = 0u;
+
+  /* Index for input read and output write */
+  i0 = 0u;
+  j = n2;
+
+  /* Input is in 1.15(q15) format */
+
+  /*  start of first stage process */
+  do
+  {
+    /*  Butterfly implementation */
+
+    /*  index calculation for the input as, */
+    /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
+    i1 = i0 + n2;
+    i2 = i1 + n2;
+    i3 = i2 + n2;
+
+    /*  Reading i0, i0+fftLen/2 inputs */
+
+    /* input is down scale by 4 to avoid overflow */
+    /* Read ya (real), xa(imag) input */
+    T0 = pSrc16[i0 * 2u] >> 2u;
+    T1 = pSrc16[(i0 * 2u) + 1u] >> 2u;
+
+    /* input is down scale by 4 to avoid overflow */
+    /* Read yc (real), xc(imag) input */
+    S0 = pSrc16[i2 * 2u] >> 2u;
+    S1 = pSrc16[(i2 * 2u) + 1u] >> 2u;
+
+    /* R0 = (ya + yc) */
+    R0 = __SSAT(T0 + S0, 16u);
+    /* R1 = (xa + xc) */
+    R1 = __SSAT(T1 + S1, 16u);
+
+    /* S0 = (ya - yc) */
+    S0 = __SSAT(T0 - S0, 16);
+    /* S1 = (xa - xc) */
+    S1 = __SSAT(T1 - S1, 16);
+
+    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+    /* input is down scale by 4 to avoid overflow */
+    /* Read yb (real), xb(imag) input */
+    T0 = pSrc16[i1 * 2u] >> 2u;
+    T1 = pSrc16[(i1 * 2u) + 1u] >> 2u;
+
+    /* input is down scale by 4 to avoid overflow */
+    /* Read yd (real), xd(imag) input */
+    U0 = pSrc16[i3 * 2u] >> 2u;
+    U1 = pSrc16[(i3 * 2u) + 1] >> 2u;
+
+    /* T0 = (yb + yd) */
+    T0 = __SSAT(T0 + U0, 16u);
+    /* T1 = (xb + xd) */
+    T1 = __SSAT(T1 + U1, 16u);
+
+    /*  writing the butterfly processed i0 sample */
+    /* ya' = ya + yb + yc + yd */
+    /* xa' = xa + xb + xc + xd */
+    pSrc16[i0 * 2u] = (R0 >> 1u) + (T0 >> 1u);
+    pSrc16[(i0 * 2u) + 1u] = (R1 >> 1u) + (T1 >> 1u);
+
+    /* R0 = (ya + yc) - (yb + yd) */
+    /* R1 = (xa + xc) - (xb + xd) */
+    R0 = __SSAT(R0 - T0, 16u);
+    R1 = __SSAT(R1 - T1, 16u);
+
+    /* co2 & si2 are read from Coefficient pointer */
+    Co2 = pCoef16[2u * ic * 2u];
+    Si2 = pCoef16[(2u * ic * 2u) + 1];
+
+    /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
+    out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16u);
+    /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+    out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16u);
+
+    /*  Reading i0+fftLen/4 */
+    /* input is down scale by 4 to avoid overflow */
+    /* T0 = yb, T1 =  xb */
+    T0 = pSrc16[i1 * 2u] >> 2;
+    T1 = pSrc16[(i1 * 2u) + 1] >> 2;
+
+    /* writing the butterfly processed i0 + fftLen/4 sample */
+    /* writing output(xc', yc') in little endian format */
+    pSrc16[i1 * 2u] = out1;
+    pSrc16[(i1 * 2u) + 1] = out2;
+
+    /*  Butterfly calculations */
+    /* input is down scale by 4 to avoid overflow */
+    /* U0 = yd, U1 = xd */
+    U0 = pSrc16[i3 * 2u] >> 2;
+    U1 = pSrc16[(i3 * 2u) + 1] >> 2;
+    /* T0 = yb-yd */
+    T0 = __SSAT(T0 - U0, 16);
+    /* T1 = xb-xd */
+    T1 = __SSAT(T1 - U1, 16);
+
+    /* R1 = (ya-yc) + (xb- xd),  R0 = (xa-xc) - (yb-yd)) */
+    R0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16);
+    R1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16);
+
+    /* S1 = (ya-yc) - (xb- xd), S0 = (xa-xc) + (yb-yd)) */
+    S0 = (q15_t) __SSAT(((q31_t) S0 + T1), 16u);
+    S1 = (q15_t) __SSAT(((q31_t) S1 - T0), 16u);
+
+    /* co1 & si1 are read from Coefficient pointer */
+    Co1 = pCoef16[ic * 2u];
+    Si1 = pCoef16[(ic * 2u) + 1];
+    /*  Butterfly process for the i0+fftLen/2 sample */
+    /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
+    out1 = (q15_t) ((Si1 * S1 + Co1 * S0) >> 16);
+    /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
+    out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16);
+
+    /* writing output(xb', yb') in little endian format */
+    pSrc16[i2 * 2u] = out1;
+    pSrc16[(i2 * 2u) + 1] = out2;
+
+    /* Co3 & si3 are read from Coefficient pointer */
+    Co3 = pCoef16[3u * (ic * 2u)];
+    Si3 = pCoef16[(3u * (ic * 2u)) + 1];
+    /*  Butterfly process for the i0+3fftLen/4 sample */
+    /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */
+    out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16u);
+    /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */
+    out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16u);
+    /* writing output(xd', yd') in little endian format */
+    pSrc16[i3 * 2u] = out1;
+    pSrc16[(i3 * 2u) + 1] = out2;
+
+    /*  Twiddle coefficients index modifier */
+    ic = ic + twidCoefModifier;
+
+    /*  Updating input index */
+    i0 = i0 + 1u;
+
+  } while(--j);
+  /* data is in 4.11(q11) format */
+
+  /* end of first stage process */
+
+
+  /* start of middle stage process */
+
+  /*  Twiddle coefficients index modifier */
+  twidCoefModifier <<= 2u;
+
+  /*  Calculation of Middle stage */
+  for (k = fftLen / 4u; k > 4u; k >>= 2u)
+  {
+    /*  Initializations for the middle stage */
+    n1 = n2;
+    n2 >>= 2u;
+    ic = 0u;
+
+    for (j = 0u; j <= (n2 - 1u); j++)
+    {
+      /*  index calculation for the coefficients */
+      Co1 = pCoef16[ic * 2u];
+      Si1 = pCoef16[(ic * 2u) + 1u];
+      Co2 = pCoef16[2u * (ic * 2u)];
+      Si2 = pCoef16[(2u * (ic * 2u)) + 1u];
+      Co3 = pCoef16[3u * (ic * 2u)];
+      Si3 = pCoef16[(3u * (ic * 2u)) + 1u];
+
+      /*  Twiddle coefficients index modifier */
+      ic = ic + twidCoefModifier;
+
+      /*  Butterfly implementation */
+      for (i0 = j; i0 < fftLen; i0 += n1)
+      {
+        /*  index calculation for the input as, */
+        /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
+        i1 = i0 + n2;
+        i2 = i1 + n2;
+        i3 = i2 + n2;
+
+        /*  Reading i0, i0+fftLen/2 inputs */
+        /* Read ya (real), xa(imag) input */
+        T0 = pSrc16[i0 * 2u];
+        T1 = pSrc16[(i0 * 2u) + 1u];
+
+        /* Read yc (real), xc(imag) input */
+        S0 = pSrc16[i2 * 2u];
+        S1 = pSrc16[(i2 * 2u) + 1u];
+
+        /* R0 = (ya + yc), R1 = (xa + xc) */
+        R0 = __SSAT(T0 + S0, 16);
+        R1 = __SSAT(T1 + S1, 16);
+
+        /* S0 = (ya - yc), S1 =(xa - xc) */
+        S0 = __SSAT(T0 - S0, 16);
+        S1 = __SSAT(T1 - S1, 16);
+
+        /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+        /* Read yb (real), xb(imag) input */
+        T0 = pSrc16[i1 * 2u];
+        T1 = pSrc16[(i1 * 2u) + 1u];
+
+        /* Read yd (real), xd(imag) input */
+        U0 = pSrc16[i3 * 2u];
+        U1 = pSrc16[(i3 * 2u) + 1u];
+
+
+        /* T0 = (yb + yd), T1 = (xb + xd) */
+        T0 = __SSAT(T0 + U0, 16);
+        T1 = __SSAT(T1 + U1, 16);
+
+        /*  writing the butterfly processed i0 sample */
+
+        /* xa' = xa + xb + xc + xd */
+        /* ya' = ya + yb + yc + yd */
+        out1 = ((R0 >> 1u) + (T0 >> 1u)) >> 1u;
+        out2 = ((R1 >> 1u) + (T1 >> 1u)) >> 1u;
+
+        pSrc16[i0 * 2u] = out1;
+        pSrc16[(2u * i0) + 1u] = out2;
+
+        /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */
+        R0 = (R0 >> 1u) - (T0 >> 1u);
+        R1 = (R1 >> 1u) - (T1 >> 1u);
+
+        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */
+        out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16u);
+
+        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+        out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16u);
+
+        /*  Reading i0+3fftLen/4 */
+        /* Read yb (real), xb(imag) input */
+        T0 = pSrc16[i1 * 2u];
+        T1 = pSrc16[(i1 * 2u) + 1u];
+
+        /*  writing the butterfly processed i0 + fftLen/4 sample */
+        /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
+        /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+        pSrc16[i1 * 2u] = out1;
+        pSrc16[(i1 * 2u) + 1u] = out2;
+
+        /*  Butterfly calculations */
+
+        /* Read yd (real), xd(imag) input */
+        U0 = pSrc16[i3 * 2u];
+        U1 = pSrc16[(i3 * 2u) + 1u];
+
+        /* T0 = yb-yd, T1 = xb-xd */
+        T0 = __SSAT(T0 - U0, 16);
+        T1 = __SSAT(T1 - U1, 16);
+
+        /* R0 = (ya-yc) + (xb- xd), R1 = (xa-xc) - (yb-yd)) */
+        R0 = (S0 >> 1u) - (T1 >> 1u);
+        R1 = (S1 >> 1u) + (T0 >> 1u);
+
+        /* S0 = (ya-yc) - (xb- xd), S1 = (xa-xc) + (yb-yd)) */
+        S0 = (S0 >> 1u) + (T1 >> 1u);
+        S1 = (S1 >> 1u) - (T0 >> 1u);
+
+        /*  Butterfly process for the i0+fftLen/2 sample */
+        out1 = (q15_t) ((Co1 * S0 + Si1 * S1) >> 16u);
+
+        out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16u);
+
+        /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
+        /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
+        pSrc16[i2 * 2u] = out1;
+        pSrc16[(i2 * 2u) + 1u] = out2;
+
+        /*  Butterfly process for the i0+3fftLen/4 sample */
+        out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16u);
+
+        out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16u);
+        /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */
+        /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */
+        pSrc16[i3 * 2u] = out1;
+        pSrc16[(i3 * 2u) + 1u] = out2;
+      }
+    }
+    /*  Twiddle coefficients index modifier */
+    twidCoefModifier <<= 2u;
+  }
+  /* end of middle stage process */
+
+
+  /* data is in 10.6(q6) format for the 1024 point */
+  /* data is in 8.8(q8) format for the 256 point */
+  /* data is in 6.10(q10) format for the 64 point */
+  /* data is in 4.12(q12) format for the 16 point */
+
+  /*  Initializations for the last stage */
+  n1 = n2;
+  n2 >>= 2u;
+
+  /* start of last stage process */
+
+  /*  Butterfly implementation */
+  for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1)
+  {
+    /*  index calculation for the input as, */
+    /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
+    i1 = i0 + n2;
+    i2 = i1 + n2;
+    i3 = i2 + n2;
+
+    /*  Reading i0, i0+fftLen/2 inputs */
+    /* Read ya (real), xa(imag) input */
+    T0 = pSrc16[i0 * 2u];
+    T1 = pSrc16[(i0 * 2u) + 1u];
+
+    /* Read yc (real), xc(imag) input */
+    S0 = pSrc16[i2 * 2u];
+    S1 = pSrc16[(i2 * 2u) + 1u];
+
+    /* R0 = (ya + yc), R1 = (xa + xc) */
+    R0 = __SSAT(T0 + S0, 16u);
+    R1 = __SSAT(T1 + S1, 16u);
+
+    /* S0 = (ya - yc), S1 = (xa - xc) */
+    S0 = __SSAT(T0 - S0, 16u);
+    S1 = __SSAT(T1 - S1, 16u);
+
+    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+    /* Read yb (real), xb(imag) input */
+    T0 = pSrc16[i1 * 2u];
+    T1 = pSrc16[(i1 * 2u) + 1u];
+    /* Read yd (real), xd(imag) input */
+    U0 = pSrc16[i3 * 2u];
+    U1 = pSrc16[(i3 * 2u) + 1u];
+
+    /* T0 = (yb + yd), T1 = (xb + xd)) */
+    T0 = __SSAT(T0 + U0, 16u);
+    T1 = __SSAT(T1 + U1, 16u);
+
+    /*  writing the butterfly processed i0 sample */
+    /* xa' = xa + xb + xc + xd */
+    /* ya' = ya + yb + yc + yd */
+    pSrc16[i0 * 2u] = (R0 >> 1u) + (T0 >> 1u);
+    pSrc16[(i0 * 2u) + 1u] = (R1 >> 1u) + (T1 >> 1u);
+
+    /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */
+    R0 = (R0 >> 1u) - (T0 >> 1u);
+    R1 = (R1 >> 1u) - (T1 >> 1u);
+    /* Read yb (real), xb(imag) input */
+    T0 = pSrc16[i1 * 2u];
+    T1 = pSrc16[(i1 * 2u) + 1u];
+
+    /*  writing the butterfly processed i0 + fftLen/4 sample */
+    /* xc' = (xa-xb+xc-xd) */
+    /* yc' = (ya-yb+yc-yd) */
+    pSrc16[i1 * 2u] = R0;
+    pSrc16[(i1 * 2u) + 1u] = R1;
+
+    /* Read yd (real), xd(imag) input */
+    U0 = pSrc16[i3 * 2u];
+    U1 = pSrc16[(i3 * 2u) + 1u];
+    /* T0 = (yb - yd), T1 = (xb - xd)  */
+    T0 = __SSAT(T0 - U0, 16u);
+    T1 = __SSAT(T1 - U1, 16u);
+
+    /*  writing the butterfly processed i0 + fftLen/2 sample */
+    /* xb' = (xa+yb-xc-yd) */
+    /* yb' = (ya-xb-yc+xd) */
+    pSrc16[i2 * 2u] = (S0 >> 1u) + (T1 >> 1u);
+    pSrc16[(i2 * 2u) + 1u] = (S1 >> 1u) - (T0 >> 1u);
+
+    /*  writing the butterfly processed i0 + 3fftLen/4 sample */
+    /* xd' = (xa-yb-xc+yd) */
+    /* yd' = (ya+xb-yc-xd) */
+    pSrc16[i3 * 2u] = (S0 >> 1u) - (T1 >> 1u);
+    pSrc16[(i3 * 2u) + 1u] = (S1 >> 1u) + (T0 >> 1u);
+
+  }
+
+  /* end of last stage process */
+
+  /* output is in 11.5(q5) format for the 1024 point */
+  /* output is in 9.7(q7) format for the 256 point   */
+  /* output is in 7.9(q9) format for the 64 point  */
+  /* output is in 5.11(q11) format for the 16 point  */
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+
+/**    
+ * @brief  Core function for the Q15 CIFFT butterfly process.   
+ * @param[in, out] *pSrc16          points to the in-place buffer of Q15 data type.   
+ * @param[in]      fftLen           length of the FFT.   
+ * @param[in]      *pCoef16         points to twiddle coefficient buffer.   
+ * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+ * @return none.   
+ */
+
+/*    
+* Radix-4 IFFT algorithm used is :    
+*    
+* CIFFT uses same twiddle coefficients as CFFT function    
+*  x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4]    
+*    
+*    
+* IFFT is implemented with following changes in equations from FFT    
+*    
+* Input real and imaginary data:    
+* x(n) = xa + j * ya    
+* x(n+N/4 ) = xb + j * yb    
+* x(n+N/2 ) = xc + j * yc    
+* x(n+3N 4) = xd + j * yd    
+*    
+*    
+* Output real and imaginary data:    
+* x(4r) = xa'+ j * ya'    
+* x(4r+1) = xb'+ j * yb'    
+* x(4r+2) = xc'+ j * yc'    
+* x(4r+3) = xd'+ j * yd'    
+*    
+*    
+* Twiddle factors for radix-4 IFFT:    
+* Wn = co1 + j * (si1)    
+* W2n = co2 + j * (si2)    
+* W3n = co3 + j * (si3)    
+    
+* The real and imaginary output values for the radix-4 butterfly are    
+* xa' = xa + xb + xc + xd    
+* ya' = ya + yb + yc + yd    
+* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1)    
+* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1)    
+* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2)    
+* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2)    
+* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3)    
+* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3)    
+*    
+*/
+
+void arm_radix4_butterfly_inverse_q15(
+  q15_t * pSrc16,
+  uint32_t fftLen,
+  q15_t * pCoef16,
+  uint32_t twidCoefModifier)
+{
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  q31_t R, S, T, U;
+  q31_t C1, C2, C3, out1, out2;
+  uint32_t n1, n2, ic, i0, j, k;
+
+  q15_t *ptr1;
+  q15_t *pSi0;
+  q15_t *pSi1;
+  q15_t *pSi2;
+  q15_t *pSi3;
+
+  q31_t xaya, xbyb, xcyc, xdyd;
+
+  /* Total process is divided into three stages */
+
+  /* process first stage, middle stages, & last stage */
+
+  /*  Initializations for the first stage */
+  n2 = fftLen;
+  n1 = n2;
+
+  /* n2 = fftLen/4 */
+  n2 >>= 2u;
+
+  /* Index for twiddle coefficient */
+  ic = 0u;
+
+  /* Index for input read and output write */
+  j = n2;
+  
+  pSi0 = pSrc16;
+  pSi1 = pSi0 + 2 * n2;
+  pSi2 = pSi1 + 2 * n2;
+  pSi3 = pSi2 + 2 * n2;
+
+  /* Input is in 1.15(q15) format */
+
+  /*  start of first stage process */
+  do
+  {
+    /*  Butterfly implementation */
+
+    /*  Reading i0, i0+fftLen/2 inputs */
+    /* Read ya (real), xa(imag) input */
+    T = _SIMD32_OFFSET(pSi0);
+    T = __SHADD16(T, 0);
+    T = __SHADD16(T, 0);
+
+    /* Read yc (real), xc(imag) input */
+    S = _SIMD32_OFFSET(pSi2);
+    S = __SHADD16(S, 0);
+    S = __SHADD16(S, 0);
+
+    /* R = packed((ya + yc), (xa + xc) ) */
+    R = __QADD16(T, S);
+
+    /* S = packed((ya - yc), (xa - xc) ) */
+    S = __QSUB16(T, S);
+
+    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+    /* Read yb (real), xb(imag) input */
+    T = _SIMD32_OFFSET(pSi1);
+    T = __SHADD16(T, 0);
+    T = __SHADD16(T, 0);
+
+    /* Read yd (real), xd(imag) input */
+    U = _SIMD32_OFFSET(pSi3);
+    U = __SHADD16(U, 0);
+    U = __SHADD16(U, 0);
+
+    /* T = packed((yb + yd), (xb + xd) ) */
+    T = __QADD16(T, U);
+
+    /*  writing the butterfly processed i0 sample */
+    /* xa' = xa + xb + xc + xd */
+    /* ya' = ya + yb + yc + yd */
+    _SIMD32_OFFSET(pSi0) = __SHADD16(R, T);
+    pSi0 += 2;
+
+    /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */
+    R = __QSUB16(R, T);
+
+    /* co2 & si2 are read from SIMD Coefficient pointer */
+    C2 = _SIMD32_OFFSET(pCoef16 + (4u * ic));
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
+    out1 = __SMUSD(C2, R) >> 16u;
+    /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+    out2 = __SMUADX(C2, R);
+
+#else
+
+    /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+    out1 = __SMUADX(C2, R) >> 16u;
+    /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
+    out2 = __SMUSD(__QSUB16(0, C2), R);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+    /*  Reading i0+fftLen/4 */
+    /* T = packed(yb, xb) */
+    T = _SIMD32_OFFSET(pSi1);
+    T = __SHADD16(T, 0);
+    T = __SHADD16(T, 0);
+
+    /* writing the butterfly processed i0 + fftLen/4 sample */
+    /* writing output(xc', yc') in little endian format */
+    _SIMD32_OFFSET(pSi1) =
+      (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+    pSi1 += 2;
+
+    /*  Butterfly calculations */
+    /* U = packed(yd, xd) */
+    U = _SIMD32_OFFSET(pSi3);
+    U = __SHADD16(U, 0);
+    U = __SHADD16(U, 0);
+
+    /* T = packed(yb-yd, xb-xd) */
+    T = __QSUB16(T, U);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */
+    R = __QSAX(S, T);
+    /* S = packed((ya-yc) + (xb- xd),  (xa-xc) - (yb-yd)) */
+    S = __QASX(S, T);
+
+#else
+
+    /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */
+    R = __QASX(S, T);
+    /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */
+    S = __QSAX(S, T);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+    /* co1 & si1 are read from SIMD Coefficient pointer */
+    C1 = _SIMD32_OFFSET(pCoef16 + (2u * ic));
+    /*  Butterfly process for the i0+fftLen/2 sample */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
+    out1 = __SMUSD(C1, S) >> 16u;
+    /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
+    out2 = __SMUADX(C1, S);
+
+#else
+
+    /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
+    out1 = __SMUADX(C1, S) >> 16u;
+    /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
+    out2 = __SMUSD(__QSUB16(0, C1), S);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+    /* writing output(xb', yb') in little endian format */
+    _SIMD32_OFFSET(pSi2) =
+      ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF);
+    pSi2 += 2;
+
+
+    /* co3 & si3 are read from SIMD Coefficient pointer */
+    C3 = _SIMD32_OFFSET(pCoef16 + (6u * ic));
+    /*  Butterfly process for the i0+3fftLen/4 sample */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */
+    out1 = __SMUSD(C3, R) >> 16u;
+    /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */
+    out2 = __SMUADX(C3, R);
+
+#else
+
+    /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */
+    out1 = __SMUADX(C3, R) >> 16u;
+    /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */
+    out2 = __SMUSD(__QSUB16(0, C3), R);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+    /* writing output(xd', yd') in little endian format */
+    _SIMD32_OFFSET(pSi3) =
+      ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+    pSi3 += 2;
+
+    /*  Twiddle coefficients index modifier */
+    ic = ic + twidCoefModifier;
+
+  } while(--j);
+  /* data is in 4.11(q11) format */
+
+  /* end of first stage process */
+
+
+  /* start of middle stage process */
+
+  /*  Twiddle coefficients index modifier */
+  twidCoefModifier <<= 2u;
+
+  /*  Calculation of Middle stage */
+  for (k = fftLen / 4u; k > 4u; k >>= 2u)
+  {
+    /*  Initializations for the middle stage */
+    n1 = n2;
+    n2 >>= 2u;
+    ic = 0u;
+
+    for (j = 0u; j <= (n2 - 1u); j++)
+    {
+      /*  index calculation for the coefficients */
+      C1 = _SIMD32_OFFSET(pCoef16 + (2u * ic));
+      C2 = _SIMD32_OFFSET(pCoef16 + (4u * ic));
+      C3 = _SIMD32_OFFSET(pCoef16 + (6u * ic));
+
+      /*  Twiddle coefficients index modifier */
+      ic = ic + twidCoefModifier;
+      
+      pSi0 = pSrc16 + 2 * j;
+      pSi1 = pSi0 + 2 * n2;
+      pSi2 = pSi1 + 2 * n2;
+      pSi3 = pSi2 + 2 * n2;
+
+      /*  Butterfly implementation */
+      for (i0 = j; i0 < fftLen; i0 += n1)
+      {
+        /*  Reading i0, i0+fftLen/2 inputs */
+        /* Read ya (real), xa(imag) input */
+        T = _SIMD32_OFFSET(pSi0);
+
+        /* Read yc (real), xc(imag) input */
+        S = _SIMD32_OFFSET(pSi2);
+
+        /* R = packed( (ya + yc), (xa + xc)) */
+        R = __QADD16(T, S);
+
+        /* S = packed((ya - yc), (xa - xc)) */
+        S = __QSUB16(T, S);
+
+        /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+        /* Read yb (real), xb(imag) input */
+        T = _SIMD32_OFFSET(pSi1);
+
+        /* Read yd (real), xd(imag) input */
+        U = _SIMD32_OFFSET(pSi3);
+
+        /* T = packed( (yb + yd), (xb + xd)) */
+        T = __QADD16(T, U);
+
+        /*  writing the butterfly processed i0 sample */
+
+        /* xa' = xa + xb + xc + xd */
+        /* ya' = ya + yb + yc + yd */
+        out1 = __SHADD16(R, T);
+        out1 = __SHADD16(out1, 0);
+        _SIMD32_OFFSET(pSi0) = out1;
+        pSi0 += 2 * n1;
+
+        /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */
+        R = __SHSUB16(R, T);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */
+        out1 = __SMUSD(C2, R) >> 16u;
+
+        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+        out2 = __SMUADX(C2, R);
+
+#else
+
+        /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+        out1 = __SMUADX(R, C2) >> 16u;
+
+        /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */
+        out2 = __SMUSD(__QSUB16(0, C2), R);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /*  Reading i0+3fftLen/4 */
+        /* Read yb (real), xb(imag) input */
+        T = _SIMD32_OFFSET(pSi1);
+
+        /*  writing the butterfly processed i0 + fftLen/4 sample */
+        /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
+        /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
+        _SIMD32_OFFSET(pSi1) =
+          ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+        pSi1 += 2 * n1;
+
+        /*  Butterfly calculations */
+
+        /* Read yd (real), xd(imag) input */
+        U = _SIMD32_OFFSET(pSi3);
+
+        /* T = packed(yb-yd, xb-xd) */
+        T = __QSUB16(T, U);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */
+        R = __SHSAX(S, T);
+
+        /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */
+        S = __SHASX(S, T);
+
+
+        /*  Butterfly process for the i0+fftLen/2 sample */
+        out1 = __SMUSD(C1, S) >> 16u;
+        out2 = __SMUADX(C1, S);
+
+#else
+
+        /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */
+        R = __SHASX(S, T);
+
+        /* S = packed((ya-yc) - (xb- xd),  (xa-xc) + (yb-yd)) */
+        S = __SHSAX(S, T);
+
+
+        /*  Butterfly process for the i0+fftLen/2 sample */
+        out1 = __SMUADX(S, C1) >> 16u;
+        out2 = __SMUSD(__QSUB16(0, C1), S);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
+        /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
+        _SIMD32_OFFSET(pSi2) =
+          ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+        pSi2 += 2 * n1;
+
+        /*  Butterfly process for the i0+3fftLen/4 sample */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        out1 = __SMUSD(C3, R) >> 16u;
+        out2 = __SMUADX(C3, R);
+
+#else
+
+        out1 = __SMUADX(C3, R) >> 16u;
+        out2 = __SMUSD(__QSUB16(0, C3), R);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */
+        /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */
+        _SIMD32_OFFSET(pSi3) =
+          ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+        pSi3 += 2 * n1;
+      }
+    }
+    /*  Twiddle coefficients index modifier */
+    twidCoefModifier <<= 2u;
+  }
+  /* end of middle stage process */
+
+  /* data is in 10.6(q6) format for the 1024 point */
+  /* data is in 8.8(q8) format for the 256 point */
+  /* data is in 6.10(q10) format for the 64 point */
+  /* data is in 4.12(q12) format for the 16 point */
+
+  /*  Initializations for the last stage */
+  j = fftLen >> 2;
+
+  ptr1 = &pSrc16[0];
+
+  /* start of last stage process */
+
+  /*  Butterfly implementation */
+  do
+  {
+    /* Read xa (real), ya(imag) input */
+    xaya = *__SIMD32(ptr1)++;
+
+    /* Read xb (real), yb(imag) input */
+    xbyb = *__SIMD32(ptr1)++;
+
+    /* Read xc (real), yc(imag) input */
+    xcyc = *__SIMD32(ptr1)++;
+
+    /* Read xd (real), yd(imag) input */
+    xdyd = *__SIMD32(ptr1)++;
+
+    /* R = packed((ya + yc), (xa + xc)) */
+    R = __QADD16(xaya, xcyc);
+
+    /* T = packed((yb + yd), (xb + xd)) */
+    T = __QADD16(xbyb, xdyd);
+
+    /* pointer updation for writing */
+    ptr1 = ptr1 - 8u;
+
+
+    /* xa' = xa + xb + xc + xd */
+    /* ya' = ya + yb + yc + yd */
+    *__SIMD32(ptr1)++ = __SHADD16(R, T);
+
+    /* T = packed((yb + yd), (xb + xd)) */
+    T = __QADD16(xbyb, xdyd);
+
+    /* xc' = (xa-xb+xc-xd) */
+    /* yc' = (ya-yb+yc-yd) */
+    *__SIMD32(ptr1)++ = __SHSUB16(R, T);
+
+    /* S = packed((ya - yc), (xa - xc)) */
+    S = __QSUB16(xaya, xcyc);
+
+    /* Read yd (real), xd(imag) input */
+    /* T = packed( (yb - yd), (xb - xd))  */
+    U = __QSUB16(xbyb, xdyd);
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* xb' = (xa+yb-xc-yd) */
+    /* yb' = (ya-xb-yc+xd) */
+    *__SIMD32(ptr1)++ = __SHASX(S, U);
+
+
+    /* xd' = (xa-yb-xc+yd) */
+    /* yd' = (ya+xb-yc-xd) */
+    *__SIMD32(ptr1)++ = __SHSAX(S, U);
+
+#else
+
+    /* xb' = (xa+yb-xc-yd) */
+    /* yb' = (ya-xb-yc+xd) */
+    *__SIMD32(ptr1)++ = __SHSAX(S, U);
+
+
+    /* xd' = (xa-yb-xc+yd) */
+    /* yd' = (ya+xb-yc-xd) */
+    *__SIMD32(ptr1)++ = __SHASX(S, U);
+
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+  } while(--j);
+
+  /* end of last stage  process */
+
+  /* output is in 11.5(q5) format for the 1024 point */
+  /* output is in 9.7(q7) format for the 256 point   */
+  /* output is in 7.9(q9) format for the 64 point  */
+  /* output is in 5.11(q11) format for the 16 point  */
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q15_t R0, R1, S0, S1, T0, T1, U0, U1;
+  q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2;
+  uint32_t n1, n2, ic, i0, i1, i2, i3, j, k;
+
+  /* Total process is divided into three stages */
+
+  /* process first stage, middle stages, & last stage */
+
+  /*  Initializations for the first stage */
+  n2 = fftLen;
+  n1 = n2;
+
+  /* n2 = fftLen/4 */
+  n2 >>= 2u;
+
+  /* Index for twiddle coefficient */
+  ic = 0u;
+
+  /* Index for input read and output write */
+  i0 = 0u;
+
+  j = n2;
+
+  /* Input is in 1.15(q15) format */
+
+  /*  Start of first stage process */
+  do
+  {
+    /*  Butterfly implementation */
+
+    /*  index calculation for the input as, */
+    /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
+    i1 = i0 + n2;
+    i2 = i1 + n2;
+    i3 = i2 + n2;
+
+    /*  Reading i0, i0+fftLen/2 inputs */
+    /* input is down scale by 4 to avoid overflow */
+    /* Read ya (real), xa(imag) input */
+    T0 = pSrc16[i0 * 2u] >> 2u;
+    T1 = pSrc16[(i0 * 2u) + 1u] >> 2u;
+    /* input is down scale by 4 to avoid overflow */
+    /* Read yc (real), xc(imag) input */
+    S0 = pSrc16[i2 * 2u] >> 2u;
+    S1 = pSrc16[(i2 * 2u) + 1u] >> 2u;
+
+    /* R0 = (ya + yc), R1 = (xa + xc) */
+    R0 = __SSAT(T0 + S0, 16u);
+    R1 = __SSAT(T1 + S1, 16u);
+    /* S0 = (ya - yc), S1 = (xa - xc) */
+    S0 = __SSAT(T0 - S0, 16u);
+    S1 = __SSAT(T1 - S1, 16u);
+
+    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+    /* input is down scale by 4 to avoid overflow */
+    /* Read yb (real), xb(imag) input */
+    T0 = pSrc16[i1 * 2u] >> 2u;
+    T1 = pSrc16[(i1 * 2u) + 1u] >> 2u;
+    /* Read yd (real), xd(imag) input */
+    /* input is down scale by 4 to avoid overflow */
+    U0 = pSrc16[i3 * 2u] >> 2u;
+    U1 = pSrc16[(i3 * 2u) + 1u] >> 2u;
+
+    /* T0 = (yb + yd), T1 = (xb + xd) */
+    T0 = __SSAT(T0 + U0, 16u);
+    T1 = __SSAT(T1 + U1, 16u);
+
+    /*  writing the butterfly processed i0 sample */
+    /* xa' = xa + xb + xc + xd */
+    /* ya' = ya + yb + yc + yd */
+    pSrc16[i0 * 2u] = (R0 >> 1u) + (T0 >> 1u);
+    pSrc16[(i0 * 2u) + 1u] = (R1 >> 1u) + (T1 >> 1u);
+
+    /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc)- (xb + xd) */
+    R0 = __SSAT(R0 - T0, 16u);
+    R1 = __SSAT(R1 - T1, 16u);
+    /* co2 & si2 are read from Coefficient pointer */
+    Co2 = pCoef16[2u * ic * 2u];
+    Si2 = pCoef16[(2u * ic * 2u) + 1u];
+    /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */
+    out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16u);
+    /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */
+    out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16u);
+
+    /*  Reading i0+fftLen/4 */
+    /* input is down scale by 4 to avoid overflow */
+    /* T0 = yb, T1 = xb */
+    T0 = pSrc16[i1 * 2u] >> 2u;
+    T1 = pSrc16[(i1 * 2u) + 1u] >> 2u;
+
+    /* writing the butterfly processed i0 + fftLen/4 sample */
+    /* writing output(xc', yc') in little endian format */
+    pSrc16[i1 * 2u] = out1;
+    pSrc16[(i1 * 2u) + 1u] = out2;
+
+    /*  Butterfly calculations */
+    /* input is down scale by 4 to avoid overflow */
+    /* U0 = yd, U1 = xd) */
+    U0 = pSrc16[i3 * 2u] >> 2u;
+    U1 = pSrc16[(i3 * 2u) + 1u] >> 2u;
+
+    /* T0 = yb-yd, T1 = xb-xd) */
+    T0 = __SSAT(T0 - U0, 16u);
+    T1 = __SSAT(T1 - U1, 16u);
+    /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */
+    R0 = (q15_t) __SSAT((q31_t) (S0 + T1), 16);
+    R1 = (q15_t) __SSAT((q31_t) (S1 - T0), 16);
+    /* S = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */
+    S0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16);
+    S1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16);
+
+    /* co1 & si1 are read from Coefficient pointer */
+    Co1 = pCoef16[ic * 2u];
+    Si1 = pCoef16[(ic * 2u) + 1u];
+    /*  Butterfly process for the i0+fftLen/2 sample */
+    /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */
+    out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16u);
+    /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */
+    out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16u);
+    /* writing output(xb', yb') in little endian format */
+    pSrc16[i2 * 2u] = out1;
+    pSrc16[(i2 * 2u) + 1u] = out2;
+
+    /* Co3 & si3 are read from Coefficient pointer */
+    Co3 = pCoef16[3u * ic * 2u];
+    Si3 = pCoef16[(3u * ic * 2u) + 1u];
+    /*  Butterfly process for the i0+3fftLen/4 sample */
+    /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */
+    out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16u);
+    /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */
+    out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16u);
+    /* writing output(xd', yd') in little endian format */
+    pSrc16[i3 * 2u] = out1;
+    pSrc16[(i3 * 2u) + 1u] = out2;
+
+    /*  Twiddle coefficients index modifier */
+    ic = ic + twidCoefModifier;
+
+    /*  Updating input index */
+    i0 = i0 + 1u;
+
+  } while(--j);
+
+  /*  End of first stage process */
+
+  /* data is in 4.11(q11) format */
+
+
+  /*  Start of Middle stage process */
+
+  /*  Twiddle coefficients index modifier */
+  twidCoefModifier <<= 2u;
+
+  /*  Calculation of Middle stage */
+  for (k = fftLen / 4u; k > 4u; k >>= 2u)
+  {
+    /*  Initializations for the middle stage */
+    n1 = n2;
+    n2 >>= 2u;
+    ic = 0u;
+
+    for (j = 0u; j <= (n2 - 1u); j++)
+    {
+      /*  index calculation for the coefficients */
+      Co1 = pCoef16[ic * 2u];
+      Si1 = pCoef16[(ic * 2u) + 1u];
+      Co2 = pCoef16[2u * ic * 2u];
+      Si2 = pCoef16[2u * ic * 2u + 1u];
+      Co3 = pCoef16[3u * ic * 2u];
+      Si3 = pCoef16[(3u * ic * 2u) + 1u];
+
+      /*  Twiddle coefficients index modifier */
+      ic = ic + twidCoefModifier;
+
+      /*  Butterfly implementation */
+      for (i0 = j; i0 < fftLen; i0 += n1)
+      {
+        /*  index calculation for the input as, */
+        /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
+        i1 = i0 + n2;
+        i2 = i1 + n2;
+        i3 = i2 + n2;
+
+        /*  Reading i0, i0+fftLen/2 inputs */
+        /* Read ya (real), xa(imag) input */
+        T0 = pSrc16[i0 * 2u];
+        T1 = pSrc16[(i0 * 2u) + 1u];
+
+        /* Read yc (real), xc(imag) input */
+        S0 = pSrc16[i2 * 2u];
+        S1 = pSrc16[(i2 * 2u) + 1u];
+
+
+        /* R0 = (ya + yc), R1 = (xa + xc) */
+        R0 = __SSAT(T0 + S0, 16u);
+        R1 = __SSAT(T1 + S1, 16u);
+        /* S0 = (ya - yc), S1 = (xa - xc) */
+        S0 = __SSAT(T0 - S0, 16u);
+        S1 = __SSAT(T1 - S1, 16u);
+
+        /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+        /* Read yb (real), xb(imag) input */
+        T0 = pSrc16[i1 * 2u];
+        T1 = pSrc16[(i1 * 2u) + 1u];
+
+        /* Read yd (real), xd(imag) input */
+        U0 = pSrc16[i3 * 2u];
+        U1 = pSrc16[(i3 * 2u) + 1u];
+
+        /* T0 = (yb + yd), T1 = (xb + xd) */
+        T0 = __SSAT(T0 + U0, 16u);
+        T1 = __SSAT(T1 + U1, 16u);
+
+        /*  writing the butterfly processed i0 sample */
+        /* xa' = xa + xb + xc + xd */
+        /* ya' = ya + yb + yc + yd */
+        pSrc16[i0 * 2u] = ((R0 >> 1u) + (T0 >> 1u)) >> 1u;
+        pSrc16[(i0 * 2u) + 1u] = ((R1 >> 1u) + (T1 >> 1u)) >> 1u;
+
+        /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */
+        R0 = (R0 >> 1u) - (T0 >> 1u);
+        R1 = (R1 >> 1u) - (T1 >> 1u);
+
+        /* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */
+        out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16);
+        /* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */
+        out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16);
+
+        /*  Reading i0+3fftLen/4 */
+        /* Read yb (real), xb(imag) input */
+        T0 = pSrc16[i1 * 2u];
+        T1 = pSrc16[(i1 * 2u) + 1u];
+
+        /*  writing the butterfly processed i0 + fftLen/4 sample */
+        /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */
+        /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */
+        pSrc16[i1 * 2u] = out1;
+        pSrc16[(i1 * 2u) + 1u] = out2;
+
+        /*  Butterfly calculations */
+        /* Read yd (real), xd(imag) input */
+        U0 = pSrc16[i3 * 2u];
+        U1 = pSrc16[(i3 * 2u) + 1u];
+
+        /* T0 = yb-yd, T1 = xb-xd) */
+        T0 = __SSAT(T0 - U0, 16u);
+        T1 = __SSAT(T1 - U1, 16u);
+
+        /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */
+        R0 = (S0 >> 1u) + (T1 >> 1u);
+        R1 = (S1 >> 1u) - (T0 >> 1u);
+
+        /* S1 = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */
+        S0 = (S0 >> 1u) - (T1 >> 1u);
+        S1 = (S1 >> 1u) + (T0 >> 1u);
+
+        /*  Butterfly process for the i0+fftLen/2 sample */
+        out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16u);
+        out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16u);
+        /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */
+        /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */
+        pSrc16[i2 * 2u] = out1;
+        pSrc16[(i2 * 2u) + 1u] = out2;
+
+        /*  Butterfly process for the i0+3fftLen/4 sample */
+        out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16u);
+
+        out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16u);
+        /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */
+        /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */
+        pSrc16[i3 * 2u] = out1;
+        pSrc16[(i3 * 2u) + 1u] = out2;
+
+
+      }
+    }
+    /*  Twiddle coefficients index modifier */
+    twidCoefModifier <<= 2u;
+  }
+  /*  End of Middle stages process */
+
+
+  /* data is in 10.6(q6) format for the 1024 point */
+  /* data is in 8.8(q8) format for the 256 point   */
+  /* data is in 6.10(q10) format for the 64 point  */
+  /* data is in 4.12(q12) format for the 16 point  */
+
+  /* start of last stage process */
+
+
+  /*  Initializations for the last stage */
+  n1 = n2;
+  n2 >>= 2u;
+
+  /*  Butterfly implementation */
+  for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1)
+  {
+    /*  index calculation for the input as, */
+    /*  pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
+    i1 = i0 + n2;
+    i2 = i1 + n2;
+    i3 = i2 + n2;
+
+    /*  Reading i0, i0+fftLen/2 inputs */
+    /* Read ya (real), xa(imag) input */
+    T0 = pSrc16[i0 * 2u];
+    T1 = pSrc16[(i0 * 2u) + 1u];
+    /* Read yc (real), xc(imag) input */
+    S0 = pSrc16[i2 * 2u];
+    S1 = pSrc16[(i2 * 2u) + 1u];
+
+    /* R0 = (ya + yc), R1 = (xa + xc) */
+    R0 = __SSAT(T0 + S0, 16u);
+    R1 = __SSAT(T1 + S1, 16u);
+    /* S0 = (ya - yc), S1 = (xa - xc) */
+    S0 = __SSAT(T0 - S0, 16u);
+    S1 = __SSAT(T1 - S1, 16u);
+
+    /*  Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
+    /* Read yb (real), xb(imag) input */
+    T0 = pSrc16[i1 * 2u];
+    T1 = pSrc16[(i1 * 2u) + 1u];
+    /* Read yd (real), xd(imag) input */
+    U0 = pSrc16[i3 * 2u];
+    U1 = pSrc16[(i3 * 2u) + 1u];
+
+    /* T0 = (yb + yd), T1 = (xb + xd) */
+    T0 = __SSAT(T0 + U0, 16u);
+    T1 = __SSAT(T1 + U1, 16u);
+
+    /*  writing the butterfly processed i0 sample */
+    /* xa' = xa + xb + xc + xd */
+    /* ya' = ya + yb + yc + yd */
+    pSrc16[i0 * 2u] = (R0 >> 1u) + (T0 >> 1u);
+    pSrc16[(i0 * 2u) + 1u] = (R1 >> 1u) + (T1 >> 1u);
+
+    /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */
+    R0 = (R0 >> 1u) - (T0 >> 1u);
+    R1 = (R1 >> 1u) - (T1 >> 1u);
+
+    /* Read yb (real), xb(imag) input */
+    T0 = pSrc16[i1 * 2u];
+    T1 = pSrc16[(i1 * 2u) + 1u];
+
+    /*  writing the butterfly processed i0 + fftLen/4 sample */
+    /* xc' = (xa-xb+xc-xd) */
+    /* yc' = (ya-yb+yc-yd) */
+    pSrc16[i1 * 2u] = R0;
+    pSrc16[(i1 * 2u) + 1u] = R1;
+
+    /* Read yd (real), xd(imag) input */
+    U0 = pSrc16[i3 * 2u];
+    U1 = pSrc16[(i3 * 2u) + 1u];
+    /* T0 = (yb - yd), T1 = (xb - xd) */
+    T0 = __SSAT(T0 - U0, 16u);
+    T1 = __SSAT(T1 - U1, 16u);
+
+    /*  writing the butterfly processed i0 + fftLen/2 sample */
+    /* xb' = (xa-yb-xc+yd) */
+    /* yb' = (ya+xb-yc-xd) */
+    pSrc16[i2 * 2u] = (S0 >> 1u) - (T1 >> 1u);
+    pSrc16[(i2 * 2u) + 1u] = (S1 >> 1u) + (T0 >> 1u);
+
+
+    /*  writing the butterfly processed i0 + 3fftLen/4 sample */
+    /* xd' = (xa+yb-xc-yd) */
+    /* yd' = (ya-xb-yc+xd) */
+    pSrc16[i3 * 2u] = (S0 >> 1u) + (T1 >> 1u);
+    pSrc16[(i3 * 2u) + 1u] = (S1 >> 1u) - (T0 >> 1u);
+  }
+  /* end of last stage  process */
+
+  /* output is in 11.5(q5) format for the 1024 point */
+  /* output is in 9.7(q7) format for the 256 point   */
+  /* output is in 7.9(q9) format for the 64 point  */
+  /* output is in 5.11(q11) format for the 16 point  */
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1404 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_radix4_q31.c    
+*    
+* Description:	This file has function definition of Radix-4 FFT & IFFT function and    
+*				In-place bit reversal using bit reversal table    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+void arm_radix4_butterfly_inverse_q31(
+q31_t * pSrc,
+uint32_t fftLen,
+q31_t * pCoef,
+uint32_t twidCoefModifier);
+
+void arm_radix4_butterfly_q31(
+q31_t * pSrc,
+uint32_t fftLen,
+q31_t * pCoef,
+uint32_t twidCoefModifier);
+
+void arm_bitreversal_q31(
+q31_t * pSrc,
+uint32_t fftLen,
+uint16_t bitRevFactor,
+uint16_t * pBitRevTab);
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup ComplexFFT    
+ * @{    
+ */
+
+/**    
+ * @details    
+ * @brief Processing function for the Q31 CFFT/CIFFT.    
+ * @deprecated Do not use this function.  It has been superseded by \ref arm_cfft_q31 and will be removed
+ * @param[in]      *S    points to an instance of the Q31 CFFT/CIFFT structure.   
+ * @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.   
+ * @return none.    
+ *     
+ * \par Input and output formats:    
+ * \par    
+ * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.   
+ * Hence the output format is different for different FFT sizes.    
+ * The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT:   
+ * \par   
+ * \image html CFFTQ31.gif "Input and Output Formats for Q31 CFFT"    
+ * \image html CIFFTQ31.gif "Input and Output Formats for Q31 CIFFT"    
+ *    
+ */
+
+void arm_cfft_radix4_q31(
+  const arm_cfft_radix4_instance_q31 * S,
+  q31_t * pSrc)
+{
+  if(S->ifftFlag == 1u)
+  {
+    /* Complex IFFT radix-4 */
+    arm_radix4_butterfly_inverse_q31(pSrc, S->fftLen, S->pTwiddle,
+                                     S->twidCoefModifier);
+  }
+  else
+  {
+    /* Complex FFT radix-4 */
+    arm_radix4_butterfly_q31(pSrc, S->fftLen, S->pTwiddle,
+                             S->twidCoefModifier);
+  }
+
+
+  if(S->bitReverseFlag == 1u)
+  {
+    /*  Bit Reversal */
+    arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable);
+  }
+
+}
+
+/**    
+ * @} end of ComplexFFT group    
+ */
+
+/*    
+* Radix-4 FFT algorithm used is :    
+*    
+* Input real and imaginary data:    
+* x(n) = xa + j * ya    
+* x(n+N/4 ) = xb + j * yb    
+* x(n+N/2 ) = xc + j * yc    
+* x(n+3N 4) = xd + j * yd    
+*    
+*    
+* Output real and imaginary data:    
+* x(4r) = xa'+ j * ya'    
+* x(4r+1) = xb'+ j * yb'    
+* x(4r+2) = xc'+ j * yc'    
+* x(4r+3) = xd'+ j * yd'    
+*    
+*    
+* Twiddle factors for radix-4 FFT:    
+* Wn = co1 + j * (- si1)    
+* W2n = co2 + j * (- si2)    
+* W3n = co3 + j * (- si3)    
+*    
+*  Butterfly implementation:    
+* xa' = xa + xb + xc + xd    
+* ya' = ya + yb + yc + yd    
+* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1)    
+* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1)    
+* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2)    
+* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2)    
+* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3)    
+* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3)    
+*    
+*/
+
+/**    
+ * @brief  Core function for the Q31 CFFT butterfly process.   
+ * @param[in, out] *pSrc            points to the in-place buffer of Q31 data type.   
+ * @param[in]      fftLen           length of the FFT.   
+ * @param[in]      *pCoef           points to twiddle coefficient buffer.   
+ * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+ * @return none.   
+ */
+
+void arm_radix4_butterfly_q31(
+  q31_t * pSrc,
+  uint32_t fftLen,
+  q31_t * pCoef,
+  uint32_t twidCoefModifier)
+{
+#if defined(ARM_MATH_CM7)
+  uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k;
+  q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;
+
+  q31_t xa, xb, xc, xd;
+  q31_t ya, yb, yc, yd;
+  q31_t xa_out, xb_out, xc_out, xd_out;
+  q31_t ya_out, yb_out, yc_out, yd_out;
+
+  q31_t *ptr1;
+  q63_t xaya, xbyb, xcyc, xdyd;
+  /* Total process is divided into three stages */
+
+  /* process first stage, middle stages, & last stage */
+
+
+  /* start of first stage process */
+
+  /*  Initializations for the first stage */
+  n2 = fftLen;
+  n1 = n2;
+  /* n2 = fftLen/4 */
+  n2 >>= 2u;
+  i0 = 0u;
+  ia1 = 0u;
+
+  j = n2;
+
+  /*  Calculation of first stage */
+  do
+  {
+    /*  index calculation for the input as, */
+    /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */
+    i1 = i0 + n2;
+    i2 = i1 + n2;
+    i3 = i2 + n2;
+
+    /* input is in 1.31(q31) format and provide 4 guard bits for the input */
+
+    /*  Butterfly implementation */
+    /* xa + xc */
+    r1 = (pSrc[(2u * i0)] >> 4u) + (pSrc[(2u * i2)] >> 4u);
+    /* xa - xc */
+    r2 = (pSrc[2u * i0] >> 4u) - (pSrc[2u * i2] >> 4u);
+
+    /* xb + xd */
+    t1 = (pSrc[2u * i1] >> 4u) + (pSrc[2u * i3] >> 4u);
+
+    /* ya + yc */
+    s1 = (pSrc[(2u * i0) + 1u] >> 4u) + (pSrc[(2u * i2) + 1u] >> 4u);
+    /* ya - yc */
+    s2 = (pSrc[(2u * i0) + 1u] >> 4u) - (pSrc[(2u * i2) + 1u] >> 4u);
+
+    /* xa' = xa + xb + xc + xd */
+    pSrc[2u * i0] = (r1 + t1);
+    /* (xa + xc) - (xb + xd) */
+    r1 = r1 - t1;
+    /* yb + yd */
+    t2 = (pSrc[(2u * i1) + 1u] >> 4u) + (pSrc[(2u * i3) + 1u] >> 4u);
+
+    /* ya' = ya + yb + yc + yd */
+    pSrc[(2u * i0) + 1u] = (s1 + t2);
+
+    /* (ya + yc) - (yb + yd) */
+    s1 = s1 - t2;
+
+    /* yb - yd */
+    t1 = (pSrc[(2u * i1) + 1u] >> 4u) - (pSrc[(2u * i3) + 1u] >> 4u);
+    /* xb - xd */
+    t2 = (pSrc[2u * i1] >> 4u) - (pSrc[2u * i3] >> 4u);
+
+    /*  index calculation for the coefficients */
+    ia2 = 2u * ia1;
+    co2 = pCoef[ia2 * 2u];
+    si2 = pCoef[(ia2 * 2u) + 1u];
+
+    /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+    pSrc[2u * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) +
+                     ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1u;
+
+    /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+    pSrc[(2u * i1) + 1u] = (((int32_t) (((q63_t) s1 * co2) >> 32)) -
+                            ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1u;
+
+    /* (xa - xc) + (yb - yd) */
+    r1 = r2 + t1;
+    /* (xa - xc) - (yb - yd) */
+    r2 = r2 - t1;
+
+    /* (ya - yc) - (xb - xd) */
+    s1 = s2 - t2;
+    /* (ya - yc) + (xb - xd) */
+    s2 = s2 + t2;
+
+    co1 = pCoef[ia1 * 2u];
+    si1 = pCoef[(ia1 * 2u) + 1u];
+
+    /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+    pSrc[2u * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) +
+                     ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1u;
+
+    /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+    pSrc[(2u * i2) + 1u] = (((int32_t) (((q63_t) s1 * co1) >> 32)) -
+                            ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1u;
+
+    /*  index calculation for the coefficients */
+    ia3 = 3u * ia1;
+    co3 = pCoef[ia3 * 2u];
+    si3 = pCoef[(ia3 * 2u) + 1u];
+
+    /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+    pSrc[2u * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) +
+                     ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1u;
+
+    /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+    pSrc[(2u * i3) + 1u] = (((int32_t) (((q63_t) s2 * co3) >> 32)) -
+                            ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1u;
+
+    /*  Twiddle coefficients index modifier */
+    ia1 = ia1 + twidCoefModifier;
+
+    /*  Updating input index */
+    i0 = i0 + 1u;
+
+  } while(--j);
+
+  /* end of first stage process */
+
+  /* data is in 5.27(q27) format */
+
+
+  /* start of Middle stages process */
+
+
+  /* each stage in middle stages provides two down scaling of the input */
+
+  twidCoefModifier <<= 2u;
+
+
+  for (k = fftLen / 4u; k > 4u; k >>= 2u)
+  {
+    /*  Initializations for the first stage */
+    n1 = n2;
+    n2 >>= 2u;
+    ia1 = 0u;
+
+    /*  Calculation of first stage */
+    for (j = 0u; j <= (n2 - 1u); j++)
+    {
+      /*  index calculation for the coefficients */
+      ia2 = ia1 + ia1;
+      ia3 = ia2 + ia1;
+      co1 = pCoef[ia1 * 2u];
+      si1 = pCoef[(ia1 * 2u) + 1u];
+      co2 = pCoef[ia2 * 2u];
+      si2 = pCoef[(ia2 * 2u) + 1u];
+      co3 = pCoef[ia3 * 2u];
+      si3 = pCoef[(ia3 * 2u) + 1u];
+      /*  Twiddle coefficients index modifier */
+      ia1 = ia1 + twidCoefModifier;
+
+      for (i0 = j; i0 < fftLen; i0 += n1)
+      {
+        /*  index calculation for the input as, */
+        /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */
+        i1 = i0 + n2;
+        i2 = i1 + n2;
+        i3 = i2 + n2;
+
+        /*  Butterfly implementation */
+        /* xa + xc */
+        r1 = pSrc[2u * i0] + pSrc[2u * i2];
+        /* xa - xc */
+        r2 = pSrc[2u * i0] - pSrc[2u * i2];
+
+        /* ya + yc */
+        s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u];
+        /* ya - yc */
+        s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u];
+
+        /* xb + xd */
+        t1 = pSrc[2u * i1] + pSrc[2u * i3];
+
+        /* xa' = xa + xb + xc + xd */
+        pSrc[2u * i0] = (r1 + t1) >> 2u;
+        /* xa + xc -(xb + xd) */
+        r1 = r1 - t1;
+
+        /* yb + yd */
+        t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u];
+        /* ya' = ya + yb + yc + yd */
+        pSrc[(2u * i0) + 1u] = (s1 + t2) >> 2u;
+
+        /* (ya + yc) - (yb + yd) */
+        s1 = s1 - t2;
+
+        /* (yb - yd) */
+        t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u];
+        /* (xb - xd) */
+        t2 = pSrc[2u * i1] - pSrc[2u * i3];
+
+        /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+        pSrc[2u * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) +
+                         ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1u;
+
+        /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+        pSrc[(2u * i1) + 1u] = (((int32_t) (((q63_t) s1 * co2) >> 32)) -
+                                ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1u;
+
+        /* (xa - xc) + (yb - yd) */
+        r1 = r2 + t1;
+        /* (xa - xc) - (yb - yd) */
+        r2 = r2 - t1;
+
+        /* (ya - yc) -  (xb - xd) */
+        s1 = s2 - t2;
+        /* (ya - yc) +  (xb - xd) */
+        s2 = s2 + t2;
+
+        /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+        pSrc[2u * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) +
+                         ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1u;
+
+        /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+        pSrc[(2u * i2) + 1u] = (((int32_t) (((q63_t) s1 * co1) >> 32)) -
+                                ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1u;
+
+        /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+        pSrc[2u * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) +
+                         ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1u;
+
+        /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+        pSrc[(2u * i3) + 1u] = (((int32_t) (((q63_t) s2 * co3) >> 32)) -
+                                ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1u;
+      }
+    }
+    twidCoefModifier <<= 2u;
+  }
+#else
+  uint32_t n1, n2, ia1, ia2, ia3, i0, j, k;
+  q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;
+
+  q31_t xa, xb, xc, xd;
+  q31_t ya, yb, yc, yd;
+  q31_t xa_out, xb_out, xc_out, xd_out;
+  q31_t ya_out, yb_out, yc_out, yd_out;
+
+  q31_t *ptr1;
+  q31_t *pSi0;
+  q31_t *pSi1;
+  q31_t *pSi2;
+  q31_t *pSi3;
+  q63_t xaya, xbyb, xcyc, xdyd;
+  /* Total process is divided into three stages */
+
+  /* process first stage, middle stages, & last stage */
+
+
+  /* start of first stage process */
+
+  /*  Initializations for the first stage */
+  n2 = fftLen;
+  n1 = n2;
+  /* n2 = fftLen/4 */
+  n2 >>= 2u;
+
+  ia1 = 0u;
+
+  j = n2;
+  
+  pSi0 = pSrc;
+  pSi1 = pSi0 + 2 * n2;
+  pSi2 = pSi1 + 2 * n2;
+  pSi3 = pSi2 + 2 * n2;
+
+  /*  Calculation of first stage */
+  do
+  {
+    /* input is in 1.31(q31) format and provide 4 guard bits for the input */
+
+    /*  Butterfly implementation */
+    /* xa + xc */
+    r1 = (pSi0[0] >> 4u) + (pSi2[0] >> 4u);
+    /* xa - xc */
+    r2 = (pSi0[0] >> 4u) - (pSi2[0] >> 4u);
+
+    /* xb + xd */
+    t1 = (pSi1[0] >> 4u) + (pSi3[0] >> 4u);
+
+    /* ya + yc */
+    s1 = (pSi0[1] >> 4u) + (pSi2[1] >> 4u);
+    /* ya - yc */
+    s2 = (pSi0[1] >> 4u) - (pSi2[1] >> 4u);
+
+    /* xa' = xa + xb + xc + xd */
+    *pSi0++ = (r1 + t1);
+    /* (xa + xc) - (xb + xd) */
+    r1 = r1 - t1;
+    /* yb + yd */
+    t2 = (pSi1[1] >> 4u) + (pSi3[1] >> 4u);
+
+    /* ya' = ya + yb + yc + yd */
+    *pSi0++ = (s1 + t2);
+
+    /* (ya + yc) - (yb + yd) */
+    s1 = s1 - t2;
+
+    /* yb - yd */
+    t1 = (pSi1[1] >> 4u) - (pSi3[1] >> 4u);
+    /* xb - xd */
+    t2 = (pSi1[0] >> 4u) - (pSi3[0] >> 4u);
+
+    /*  index calculation for the coefficients */
+    ia2 = 2u * ia1;
+    co2 = pCoef[ia2 * 2u];
+    si2 = pCoef[(ia2 * 2u) + 1u];
+
+    /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+    *pSi1++ = (((int32_t) (((q63_t) r1 * co2) >> 32)) +
+                     ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1u;
+
+    /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+    *pSi1++ = (((int32_t) (((q63_t) s1 * co2) >> 32)) -
+                            ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1u;
+
+    /* (xa - xc) + (yb - yd) */
+    r1 = r2 + t1;
+    /* (xa - xc) - (yb - yd) */
+    r2 = r2 - t1;
+
+    /* (ya - yc) - (xb - xd) */
+    s1 = s2 - t2;
+    /* (ya - yc) + (xb - xd) */
+    s2 = s2 + t2;
+
+    co1 = pCoef[ia1 * 2u];
+    si1 = pCoef[(ia1 * 2u) + 1u];
+
+    /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+    *pSi2++ = (((int32_t) (((q63_t) r1 * co1) >> 32)) +
+                     ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1u;
+
+    /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+    *pSi2++ = (((int32_t) (((q63_t) s1 * co1) >> 32)) -
+                            ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1u;
+
+    /*  index calculation for the coefficients */
+    ia3 = 3u * ia1;
+    co3 = pCoef[ia3 * 2u];
+    si3 = pCoef[(ia3 * 2u) + 1u];
+
+    /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+    *pSi3++ = (((int32_t) (((q63_t) r2 * co3) >> 32)) +
+                     ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1u;
+
+    /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+    *pSi3++ = (((int32_t) (((q63_t) s2 * co3) >> 32)) -
+                            ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1u;
+
+    /*  Twiddle coefficients index modifier */
+    ia1 = ia1 + twidCoefModifier;
+
+  } while(--j);
+
+  /* end of first stage process */
+
+  /* data is in 5.27(q27) format */
+
+
+  /* start of Middle stages process */
+
+
+  /* each stage in middle stages provides two down scaling of the input */
+
+  twidCoefModifier <<= 2u;
+
+
+  for (k = fftLen / 4u; k > 4u; k >>= 2u)
+  {
+    /*  Initializations for the first stage */
+    n1 = n2;
+    n2 >>= 2u;
+    ia1 = 0u;
+
+    /*  Calculation of first stage */
+    for (j = 0u; j <= (n2 - 1u); j++)
+    {
+      /*  index calculation for the coefficients */
+      ia2 = ia1 + ia1;
+      ia3 = ia2 + ia1;
+      co1 = pCoef[ia1 * 2u];
+      si1 = pCoef[(ia1 * 2u) + 1u];
+      co2 = pCoef[ia2 * 2u];
+      si2 = pCoef[(ia2 * 2u) + 1u];
+      co3 = pCoef[ia3 * 2u];
+      si3 = pCoef[(ia3 * 2u) + 1u];
+      /*  Twiddle coefficients index modifier */
+      ia1 = ia1 + twidCoefModifier;
+      
+      pSi0 = pSrc + 2 * j;
+      pSi1 = pSi0 + 2 * n2;
+      pSi2 = pSi1 + 2 * n2;
+      pSi3 = pSi2 + 2 * n2;
+
+      for (i0 = j; i0 < fftLen; i0 += n1)
+      {
+        /*  Butterfly implementation */
+        /* xa + xc */
+        r1 = pSi0[0] + pSi2[0];
+
+        /* xa - xc */
+        r2 = pSi0[0] - pSi2[0];
+
+
+        /* ya + yc */
+        s1 = pSi0[1] + pSi2[1];
+
+        /* ya - yc */
+        s2 = pSi0[1] - pSi2[1];
+
+
+        /* xb + xd */
+        t1 = pSi1[0] + pSi3[0];
+
+
+        /* xa' = xa + xb + xc + xd */
+        pSi0[0] = (r1 + t1) >> 2u;
+        /* xa + xc -(xb + xd) */
+        r1 = r1 - t1;
+
+        /* yb + yd */
+        t2 = pSi1[1] + pSi3[1];
+
+        /* ya' = ya + yb + yc + yd */
+        pSi0[1] = (s1 + t2) >> 2u;
+        pSi0 += 2 * n1;
+
+        /* (ya + yc) - (yb + yd) */
+        s1 = s1 - t2;
+
+        /* (yb - yd) */
+        t1 = pSi1[1] - pSi3[1];
+
+        /* (xb - xd) */
+        t2 = pSi1[0] - pSi3[0];
+
+
+        /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+        pSi1[0] = (((int32_t) (((q63_t) r1 * co2) >> 32)) +
+                         ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1u;
+
+        /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+        pSi1[1] = (((int32_t) (((q63_t) s1 * co2) >> 32)) -
+                                ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1u;
+        pSi1 += 2 * n1;
+
+        /* (xa - xc) + (yb - yd) */
+        r1 = r2 + t1;
+        /* (xa - xc) - (yb - yd) */
+        r2 = r2 - t1;
+
+        /* (ya - yc) -  (xb - xd) */
+        s1 = s2 - t2;
+        /* (ya - yc) +  (xb - xd) */
+        s2 = s2 + t2;
+
+        /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+        pSi2[0] = (((int32_t) (((q63_t) r1 * co1) >> 32)) +
+                         ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1u;
+
+        /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+        pSi2[1] = (((int32_t) (((q63_t) s1 * co1) >> 32)) -
+                                ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1u;
+        pSi2 += 2 * n1;
+
+        /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+        pSi3[0] = (((int32_t) (((q63_t) r2 * co3) >> 32)) +
+                         ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1u;
+
+        /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+        pSi3[1] = (((int32_t) (((q63_t) s2 * co3) >> 32)) -
+                                ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1u;
+        pSi3 += 2 * n1;
+      }
+    }
+    twidCoefModifier <<= 2u;
+  }
+#endif
+
+  /* End of Middle stages process */
+
+  /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */
+  /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */
+  /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */
+  /* data is in 5.27(q27) format for the 16 point as there are no middle stages */
+
+
+  /* start of Last stage process */
+  /*  Initializations for the last stage */
+  j = fftLen >> 2;
+  ptr1 = &pSrc[0];
+
+  /*  Calculations of last stage */
+  do
+  {
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    /* Read xa (real), ya(imag) input */
+    xaya = *__SIMD64(ptr1)++;
+    xa = (q31_t) xaya;
+    ya = (q31_t) (xaya >> 32);
+
+    /* Read xb (real), yb(imag) input */
+    xbyb = *__SIMD64(ptr1)++;
+    xb = (q31_t) xbyb;
+    yb = (q31_t) (xbyb >> 32);
+
+    /* Read xc (real), yc(imag) input */
+    xcyc = *__SIMD64(ptr1)++;
+    xc = (q31_t) xcyc;
+    yc = (q31_t) (xcyc >> 32);
+
+    /* Read xc (real), yc(imag) input */
+    xdyd = *__SIMD64(ptr1)++;
+    xd = (q31_t) xdyd;
+    yd = (q31_t) (xdyd >> 32);
+
+#else
+
+    /* Read xa (real), ya(imag) input */
+    xaya = *__SIMD64(ptr1)++;
+    ya = (q31_t) xaya;
+    xa = (q31_t) (xaya >> 32);
+
+    /* Read xb (real), yb(imag) input */
+    xbyb = *__SIMD64(ptr1)++;
+    yb = (q31_t) xbyb;
+    xb = (q31_t) (xbyb >> 32);
+
+    /* Read xc (real), yc(imag) input */
+    xcyc = *__SIMD64(ptr1)++;
+    yc = (q31_t) xcyc;
+    xc = (q31_t) (xcyc >> 32);
+
+    /* Read xc (real), yc(imag) input */
+    xdyd = *__SIMD64(ptr1)++;
+    yd = (q31_t) xdyd;
+    xd = (q31_t) (xdyd >> 32);
+
+
+#endif
+
+    /* xa' = xa + xb + xc + xd */
+    xa_out = xa + xb + xc + xd;
+
+    /* ya' = ya + yb + yc + yd */
+    ya_out = ya + yb + yc + yd;
+
+    /* pointer updation for writing */
+    ptr1 = ptr1 - 8u;
+
+    /* writing xa' and ya' */
+    *ptr1++ = xa_out;
+    *ptr1++ = ya_out;
+
+    xc_out = (xa - xb + xc - xd);
+    yc_out = (ya - yb + yc - yd);
+
+    /* writing xc' and yc' */
+    *ptr1++ = xc_out;
+    *ptr1++ = yc_out;
+
+    xb_out = (xa + yb - xc - yd);
+    yb_out = (ya - xb - yc + xd);
+
+    /* writing xb' and yb' */
+    *ptr1++ = xb_out;
+    *ptr1++ = yb_out;
+
+    xd_out = (xa - yb - xc + yd);
+    yd_out = (ya + xb - yc - xd);
+
+    /* writing xd' and yd' */
+    *ptr1++ = xd_out;
+    *ptr1++ = yd_out;
+
+
+  } while(--j);
+
+  /* output is in 11.21(q21) format for the 1024 point */
+  /* output is in 9.23(q23) format for the 256 point */
+  /* output is in 7.25(q25) format for the 64 point */
+  /* output is in 5.27(q27) format for the 16 point */
+
+  /* End of last stage process */
+
+}
+
+
+/**    
+ * @brief  Core function for the Q31 CIFFT butterfly process.   
+ * @param[in, out] *pSrc            points to the in-place buffer of Q31 data type.   
+ * @param[in]      fftLen           length of the FFT.   
+ * @param[in]      *pCoef           points to twiddle coefficient buffer.   
+ * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+ * @return none.   
+ */
+
+
+/*    
+* Radix-4 IFFT algorithm used is :    
+*    
+* CIFFT uses same twiddle coefficients as CFFT Function    
+*  x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4]    
+*    
+*    
+* IFFT is implemented with following changes in equations from FFT    
+*    
+* Input real and imaginary data:    
+* x(n) = xa + j * ya    
+* x(n+N/4 ) = xb + j * yb    
+* x(n+N/2 ) = xc + j * yc    
+* x(n+3N 4) = xd + j * yd    
+*    
+*    
+* Output real and imaginary data:    
+* x(4r) = xa'+ j * ya'    
+* x(4r+1) = xb'+ j * yb'    
+* x(4r+2) = xc'+ j * yc'    
+* x(4r+3) = xd'+ j * yd'    
+*    
+*    
+* Twiddle factors for radix-4 IFFT:    
+* Wn = co1 + j * (si1)    
+* W2n = co2 + j * (si2)    
+* W3n = co3 + j * (si3)    
+    
+* The real and imaginary output values for the radix-4 butterfly are    
+* xa' = xa + xb + xc + xd    
+* ya' = ya + yb + yc + yd    
+* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1)    
+* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1)    
+* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2)    
+* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2)    
+* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3)    
+* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3)    
+*    
+*/
+
+void arm_radix4_butterfly_inverse_q31(
+  q31_t * pSrc,
+  uint32_t fftLen,
+  q31_t * pCoef,
+  uint32_t twidCoefModifier)
+{
+#if defined(ARM_MATH_CM7)
+  uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k;
+  q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;
+  q31_t xa, xb, xc, xd;
+  q31_t ya, yb, yc, yd;
+  q31_t xa_out, xb_out, xc_out, xd_out;
+  q31_t ya_out, yb_out, yc_out, yd_out;
+
+  q31_t *ptr1;
+  q63_t xaya, xbyb, xcyc, xdyd;
+
+  /* input is be 1.31(q31) format for all FFT sizes */
+  /* Total process is divided into three stages */
+  /* process first stage, middle stages, & last stage */
+
+  /* Start of first stage process */
+
+  /* Initializations for the first stage */
+  n2 = fftLen;
+  n1 = n2;
+  /* n2 = fftLen/4 */
+  n2 >>= 2u;
+  i0 = 0u;
+  ia1 = 0u;
+
+  j = n2;
+
+  do
+  {
+
+    /* input is in 1.31(q31) format and provide 4 guard bits for the input */
+
+    /*  index calculation for the input as, */
+    /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */
+    i1 = i0 + n2;
+    i2 = i1 + n2;
+    i3 = i2 + n2;
+
+    /*  Butterfly implementation */
+    /* xa + xc */
+    r1 = (pSrc[2u * i0] >> 4u) + (pSrc[2u * i2] >> 4u);
+    /* xa - xc */
+    r2 = (pSrc[2u * i0] >> 4u) - (pSrc[2u * i2] >> 4u);
+
+    /* xb + xd */
+    t1 = (pSrc[2u * i1] >> 4u) + (pSrc[2u * i3] >> 4u);
+
+    /* ya + yc */
+    s1 = (pSrc[(2u * i0) + 1u] >> 4u) + (pSrc[(2u * i2) + 1u] >> 4u);
+    /* ya - yc */
+    s2 = (pSrc[(2u * i0) + 1u] >> 4u) - (pSrc[(2u * i2) + 1u] >> 4u);
+
+    /* xa' = xa + xb + xc + xd */
+    pSrc[2u * i0] = (r1 + t1);
+    /* (xa + xc) - (xb + xd) */
+    r1 = r1 - t1;
+    /* yb + yd */
+    t2 = (pSrc[(2u * i1) + 1u] >> 4u) + (pSrc[(2u * i3) + 1u] >> 4u);
+    /* ya' = ya + yb + yc + yd */
+    pSrc[(2u * i0) + 1u] = (s1 + t2);
+
+    /* (ya + yc) - (yb + yd) */
+    s1 = s1 - t2;
+
+    /* yb - yd */
+    t1 = (pSrc[(2u * i1) + 1u] >> 4u) - (pSrc[(2u * i3) + 1u] >> 4u);
+    /* xb - xd */
+    t2 = (pSrc[2u * i1] >> 4u) - (pSrc[2u * i3] >> 4u);
+
+    /*  index calculation for the coefficients */
+    ia2 = 2u * ia1;
+    co2 = pCoef[ia2 * 2u];
+    si2 = pCoef[(ia2 * 2u) + 1u];
+
+    /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+    pSrc[2u * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) -
+                     ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1u;
+
+    /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+    pSrc[2u * i1 + 1u] = (((int32_t) (((q63_t) s1 * co2) >> 32)) +
+                          ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1u;
+
+    /* (xa - xc) - (yb - yd) */
+    r1 = r2 - t1;
+    /* (xa - xc) + (yb - yd) */
+    r2 = r2 + t1;
+
+    /* (ya - yc) + (xb - xd) */
+    s1 = s2 + t2;
+    /* (ya - yc) - (xb - xd) */
+    s2 = s2 - t2;
+
+    co1 = pCoef[ia1 * 2u];
+    si1 = pCoef[(ia1 * 2u) + 1u];
+
+    /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+    pSrc[2u * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) -
+                     ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1u;
+
+    /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+    pSrc[(2u * i2) + 1u] = (((int32_t) (((q63_t) s1 * co1) >> 32)) +
+                            ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1u;
+
+    /*  index calculation for the coefficients */
+    ia3 = 3u * ia1;
+    co3 = pCoef[ia3 * 2u];
+    si3 = pCoef[(ia3 * 2u) + 1u];
+
+    /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+    pSrc[2u * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) -
+                     ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1u;
+
+    /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+    pSrc[(2u * i3) + 1u] = (((int32_t) (((q63_t) s2 * co3) >> 32)) +
+                            ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1u;
+
+    /*  Twiddle coefficients index modifier */
+    ia1 = ia1 + twidCoefModifier;
+
+    /*  Updating input index */
+    i0 = i0 + 1u;
+
+  } while(--j);
+
+  /* data is in 5.27(q27) format */
+  /* each stage provides two down scaling of the input */
+
+
+  /* Start of Middle stages process */
+
+  twidCoefModifier <<= 2u;
+
+  /*  Calculation of second stage to excluding last stage */
+  for (k = fftLen / 4u; k > 4u; k >>= 2u)
+  {
+    /*  Initializations for the first stage */
+    n1 = n2;
+    n2 >>= 2u;
+    ia1 = 0u;
+
+    for (j = 0; j <= (n2 - 1u); j++)
+    {
+      /*  index calculation for the coefficients */
+      ia2 = ia1 + ia1;
+      ia3 = ia2 + ia1;
+      co1 = pCoef[ia1 * 2u];
+      si1 = pCoef[(ia1 * 2u) + 1u];
+      co2 = pCoef[ia2 * 2u];
+      si2 = pCoef[(ia2 * 2u) + 1u];
+      co3 = pCoef[ia3 * 2u];
+      si3 = pCoef[(ia3 * 2u) + 1u];
+      /*  Twiddle coefficients index modifier */
+      ia1 = ia1 + twidCoefModifier;
+
+      for (i0 = j; i0 < fftLen; i0 += n1)
+      {
+        /*  index calculation for the input as, */
+        /*  pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */
+        i1 = i0 + n2;
+        i2 = i1 + n2;
+        i3 = i2 + n2;
+
+        /*  Butterfly implementation */
+        /* xa + xc */
+        r1 = pSrc[2u * i0] + pSrc[2u * i2];
+        /* xa - xc */
+        r2 = pSrc[2u * i0] - pSrc[2u * i2];
+
+        /* ya + yc */
+        s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u];
+        /* ya - yc */
+        s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u];
+
+        /* xb + xd */
+        t1 = pSrc[2u * i1] + pSrc[2u * i3];
+
+        /* xa' = xa + xb + xc + xd */
+        pSrc[2u * i0] = (r1 + t1) >> 2u;
+        /* xa + xc -(xb + xd) */
+        r1 = r1 - t1;
+        /* yb + yd */
+        t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u];
+        /* ya' = ya + yb + yc + yd */
+        pSrc[(2u * i0) + 1u] = (s1 + t2) >> 2u;
+
+        /* (ya + yc) - (yb + yd) */
+        s1 = s1 - t2;
+
+        /* (yb - yd) */
+        t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u];
+        /* (xb - xd) */
+        t2 = pSrc[2u * i1] - pSrc[2u * i3];
+
+        /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+        pSrc[2u * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32u)) -
+                         ((int32_t) (((q63_t) s1 * si2) >> 32u))) >> 1u;
+
+        /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+        pSrc[(2u * i1) + 1u] =
+          (((int32_t) (((q63_t) s1 * co2) >> 32u)) +
+           ((int32_t) (((q63_t) r1 * si2) >> 32u))) >> 1u;
+
+        /* (xa - xc) - (yb - yd) */
+        r1 = r2 - t1;
+        /* (xa - xc) + (yb - yd) */
+        r2 = r2 + t1;
+
+        /* (ya - yc) +  (xb - xd) */
+        s1 = s2 + t2;
+        /* (ya - yc) -  (xb - xd) */
+        s2 = s2 - t2;
+
+        /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+        pSrc[2u * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) -
+                         ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1u;
+
+        /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+        pSrc[(2u * i2) + 1u] = (((int32_t) (((q63_t) s1 * co1) >> 32)) +
+                                ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1u;
+
+        /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+        pSrc[(2u * i3)] = (((int32_t) (((q63_t) r2 * co3) >> 32)) -
+                           ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1u;
+
+        /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+        pSrc[(2u * i3) + 1u] = (((int32_t) (((q63_t) s2 * co3) >> 32)) +
+                                ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1u;
+      }
+    }
+    twidCoefModifier <<= 2u;
+  }
+#else
+  uint32_t n1, n2, ia1, ia2, ia3, i0, j, k;
+  q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;
+  q31_t xa, xb, xc, xd;
+  q31_t ya, yb, yc, yd;
+  q31_t xa_out, xb_out, xc_out, xd_out;
+  q31_t ya_out, yb_out, yc_out, yd_out;
+
+  q31_t *ptr1;
+  q31_t *pSi0;
+  q31_t *pSi1;
+  q31_t *pSi2;
+  q31_t *pSi3;
+  q63_t xaya, xbyb, xcyc, xdyd;
+
+  /* input is be 1.31(q31) format for all FFT sizes */
+  /* Total process is divided into three stages */
+  /* process first stage, middle stages, & last stage */
+
+  /* Start of first stage process */
+
+  /* Initializations for the first stage */
+  n2 = fftLen;
+  n1 = n2;
+  /* n2 = fftLen/4 */
+  n2 >>= 2u;
+
+  ia1 = 0u;
+
+  j = n2;
+  
+  pSi0 = pSrc;
+  pSi1 = pSi0 + 2 * n2;
+  pSi2 = pSi1 + 2 * n2;
+  pSi3 = pSi2 + 2 * n2;
+
+  do
+  {
+    /*  Butterfly implementation */
+    /* xa + xc */
+    r1 = (pSi0[0] >> 4u) + (pSi2[0] >> 4u);
+    /* xa - xc */
+    r2 = (pSi0[0] >> 4u) - (pSi2[0] >> 4u);
+
+    /* xb + xd */
+    t1 = (pSi1[0] >> 4u) + (pSi3[0] >> 4u);
+
+    /* ya + yc */
+    s1 = (pSi0[1] >> 4u) + (pSi2[1] >> 4u);
+    /* ya - yc */
+    s2 = (pSi0[1] >> 4u) - (pSi2[1] >> 4u);
+
+    /* xa' = xa + xb + xc + xd */
+    *pSi0++ = (r1 + t1);
+    /* (xa + xc) - (xb + xd) */
+    r1 = r1 - t1;
+    /* yb + yd */
+    t2 = (pSi1[1] >> 4u) + (pSi3[1] >> 4u);
+    /* ya' = ya + yb + yc + yd */
+    *pSi0++ = (s1 + t2);
+
+    /* (ya + yc) - (yb + yd) */
+    s1 = s1 - t2;
+
+    /* yb - yd */
+    t1 = (pSi1[1] >> 4u) - (pSi3[1] >> 4u);
+    /* xb - xd */
+    t2 = (pSi1[0] >> 4u) - (pSi3[0] >> 4u);
+
+    /*  index calculation for the coefficients */
+    ia2 = 2u * ia1;
+    co2 = pCoef[ia2 * 2u];
+    si2 = pCoef[(ia2 * 2u) + 1u];
+
+    /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+    *pSi1++ = (((int32_t) (((q63_t) r1 * co2) >> 32)) -
+                     ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1u;
+
+    /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+    *pSi1++ = (((int32_t) (((q63_t) s1 * co2) >> 32)) +
+                          ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1u;
+
+    /* (xa - xc) - (yb - yd) */
+    r1 = r2 - t1;
+    /* (xa - xc) + (yb - yd) */
+    r2 = r2 + t1;
+
+    /* (ya - yc) + (xb - xd) */
+    s1 = s2 + t2;
+    /* (ya - yc) - (xb - xd) */
+    s2 = s2 - t2;
+
+    co1 = pCoef[ia1 * 2u];
+    si1 = pCoef[(ia1 * 2u) + 1u];
+
+    /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+    *pSi2++ = (((int32_t) (((q63_t) r1 * co1) >> 32)) -
+                     ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1u;
+
+    /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+    *pSi2++ = (((int32_t) (((q63_t) s1 * co1) >> 32)) +
+                            ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1u;
+
+    /*  index calculation for the coefficients */
+    ia3 = 3u * ia1;
+    co3 = pCoef[ia3 * 2u];
+    si3 = pCoef[(ia3 * 2u) + 1u];
+
+    /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+    *pSi3++ = (((int32_t) (((q63_t) r2 * co3) >> 32)) -
+                     ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1u;
+
+    /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+    *pSi3++ = (((int32_t) (((q63_t) s2 * co3) >> 32)) +
+                            ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1u;
+
+    /*  Twiddle coefficients index modifier */
+    ia1 = ia1 + twidCoefModifier;
+
+  } while(--j);
+
+  /* data is in 5.27(q27) format */
+  /* each stage provides two down scaling of the input */
+
+
+  /* Start of Middle stages process */
+
+  twidCoefModifier <<= 2u;
+
+  /*  Calculation of second stage to excluding last stage */
+  for (k = fftLen / 4u; k > 4u; k >>= 2u)
+  {
+    /*  Initializations for the first stage */
+    n1 = n2;
+    n2 >>= 2u;
+    ia1 = 0u;
+
+    for (j = 0; j <= (n2 - 1u); j++)
+    {
+      /*  index calculation for the coefficients */
+      ia2 = ia1 + ia1;
+      ia3 = ia2 + ia1;
+      co1 = pCoef[ia1 * 2u];
+      si1 = pCoef[(ia1 * 2u) + 1u];
+      co2 = pCoef[ia2 * 2u];
+      si2 = pCoef[(ia2 * 2u) + 1u];
+      co3 = pCoef[ia3 * 2u];
+      si3 = pCoef[(ia3 * 2u) + 1u];
+      /*  Twiddle coefficients index modifier */
+      ia1 = ia1 + twidCoefModifier;
+      
+      pSi0 = pSrc + 2 * j;
+      pSi1 = pSi0 + 2 * n2;
+      pSi2 = pSi1 + 2 * n2;
+      pSi3 = pSi2 + 2 * n2;
+
+      for (i0 = j; i0 < fftLen; i0 += n1)
+      {
+        /*  Butterfly implementation */
+        /* xa + xc */
+        r1 = pSi0[0] + pSi2[0];
+
+        /* xa - xc */
+        r2 = pSi0[0] - pSi2[0];
+
+
+        /* ya + yc */
+        s1 = pSi0[1] + pSi2[1];
+
+        /* ya - yc */
+        s2 = pSi0[1] - pSi2[1];
+
+
+        /* xb + xd */
+        t1 = pSi1[0] + pSi3[0];
+
+
+        /* xa' = xa + xb + xc + xd */
+        pSi0[0] = (r1 + t1) >> 2u;
+        /* xa + xc -(xb + xd) */
+        r1 = r1 - t1;
+        /* yb + yd */
+        t2 = pSi1[1] + pSi3[1];
+
+        /* ya' = ya + yb + yc + yd */
+        pSi0[1] = (s1 + t2) >> 2u;
+        pSi0 += 2 * n1;
+
+        /* (ya + yc) - (yb + yd) */
+        s1 = s1 - t2;
+
+        /* (yb - yd) */
+        t1 = pSi1[1] - pSi3[1];
+
+        /* (xb - xd) */
+        t2 = pSi1[0] - pSi3[0];
+
+
+        /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+        pSi1[0] = (((int32_t) (((q63_t) r1 * co2) >> 32u)) -
+                         ((int32_t) (((q63_t) s1 * si2) >> 32u))) >> 1u;
+
+        /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+        pSi1[1] =
+
+          (((int32_t) (((q63_t) s1 * co2) >> 32u)) +
+           ((int32_t) (((q63_t) r1 * si2) >> 32u))) >> 1u;
+        pSi1 += 2 * n1;
+
+        /* (xa - xc) - (yb - yd) */
+        r1 = r2 - t1;
+        /* (xa - xc) + (yb - yd) */
+        r2 = r2 + t1;
+
+        /* (ya - yc) +  (xb - xd) */
+        s1 = s2 + t2;
+        /* (ya - yc) -  (xb - xd) */
+        s2 = s2 - t2;
+
+        /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+        pSi2[0] = (((int32_t) (((q63_t) r1 * co1) >> 32)) -
+                         ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1u;
+
+        /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+        pSi2[1] = (((int32_t) (((q63_t) s1 * co1) >> 32)) +
+                                ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1u;
+        pSi2 += 2 * n1;
+
+        /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+        pSi3[0] = (((int32_t) (((q63_t) r2 * co3) >> 32)) -
+                           ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1u;
+
+        /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+        pSi3[1] = (((int32_t) (((q63_t) s2 * co3) >> 32)) +
+                                ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1u;
+        pSi3 += 2 * n1;
+      }
+    }
+    twidCoefModifier <<= 2u;
+  }
+#endif
+
+  /* End of Middle stages process */
+
+  /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */
+  /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */
+  /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */
+  /* data is in 5.27(q27) format for the 16 point as there are no middle stages */
+
+
+  /* Start of last stage process */
+
+
+  /*  Initializations for the last stage */
+  j = fftLen >> 2;
+  ptr1 = &pSrc[0];
+
+  /*  Calculations of last stage */
+  do
+  {
+#ifndef ARM_MATH_BIG_ENDIAN
+    /* Read xa (real), ya(imag) input */
+    xaya = *__SIMD64(ptr1)++;
+    xa = (q31_t) xaya;
+    ya = (q31_t) (xaya >> 32);
+
+    /* Read xb (real), yb(imag) input */
+    xbyb = *__SIMD64(ptr1)++;
+    xb = (q31_t) xbyb;
+    yb = (q31_t) (xbyb >> 32);
+
+    /* Read xc (real), yc(imag) input */
+    xcyc = *__SIMD64(ptr1)++;
+    xc = (q31_t) xcyc;
+    yc = (q31_t) (xcyc >> 32);
+
+    /* Read xc (real), yc(imag) input */
+    xdyd = *__SIMD64(ptr1)++;
+    xd = (q31_t) xdyd;
+    yd = (q31_t) (xdyd >> 32);
+
+#else
+
+    /* Read xa (real), ya(imag) input */
+    xaya = *__SIMD64(ptr1)++;
+    ya = (q31_t) xaya;
+    xa = (q31_t) (xaya >> 32);
+
+    /* Read xb (real), yb(imag) input */
+    xbyb = *__SIMD64(ptr1)++;
+    yb = (q31_t) xbyb;
+    xb = (q31_t) (xbyb >> 32);
+
+    /* Read xc (real), yc(imag) input */
+    xcyc = *__SIMD64(ptr1)++;
+    yc = (q31_t) xcyc;
+    xc = (q31_t) (xcyc >> 32);
+
+    /* Read xc (real), yc(imag) input */
+    xdyd = *__SIMD64(ptr1)++;
+    yd = (q31_t) xdyd;
+    xd = (q31_t) (xdyd >> 32);
+
+
+#endif
+
+    /* xa' = xa + xb + xc + xd */
+    xa_out = xa + xb + xc + xd;
+
+    /* ya' = ya + yb + yc + yd */
+    ya_out = ya + yb + yc + yd;
+
+    /* pointer updation for writing */
+    ptr1 = ptr1 - 8u;
+
+    /* writing xa' and ya' */
+    *ptr1++ = xa_out;
+    *ptr1++ = ya_out;
+
+    xc_out = (xa - xb + xc - xd);
+    yc_out = (ya - yb + yc - yd);
+
+    /* writing xc' and yc' */
+    *ptr1++ = xc_out;
+    *ptr1++ = yc_out;
+
+    xb_out = (xa - yb - xc + yd);
+    yb_out = (ya + xb - yc - xd);
+
+    /* writing xb' and yb' */
+    *ptr1++ = xb_out;
+    *ptr1++ = yb_out;
+
+    xd_out = (xa + yb - xc - yd);
+    yd_out = (ya - xb - yc + xd);
+
+    /* writing xd' and yd' */
+    *ptr1++ = xd_out;
+    *ptr1++ = yd_out;
+
+  } while(--j);
+
+  /* output is in 11.21(q21) format for the 1024 point */
+  /* output is in 9.23(q23) format for the 256 point */
+  /* output is in 7.25(q25) format for the 64 point */
+  /* output is in 5.27(q27) format for the 16 point */
+
+  /* End of last stage process */
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,384 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_radix8_f32.c    
+*    
+* Description:	Radix-8 Decimation in Frequency CFFT & CIFFT Floating point processing function        
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.      
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+* @ingroup groupTransforms    
+*/
+
+/**    
+* @defgroup Radix8_CFFT_CIFFT Radix-8 Complex FFT Functions    
+*    
+* \par    
+* Complex Fast Fourier Transform(CFFT) and Complex Inverse Fast Fourier Transform(CIFFT) is an efficient algorithm to compute Discrete Fourier Transform(DFT) and Inverse Discrete Fourier Transform(IDFT).    
+* Computational complexity of CFFT reduces drastically when compared to DFT.    
+* \par    
+* This set of functions implements CFFT/CIFFT    
+* for floating-point data types.  The functions operates on in-place buffer which uses same buffer for input and output.    
+* Complex input is stored in input buffer in an interleaved fashion.    
+*    
+* \par    
+* The functions operate on blocks of input and output data and each call to the function processes    
+* <code>2*fftLen</code> samples through the transform.  <code>pSrc</code>  points to In-place arrays containing <code>2*fftLen</code> values.    
+* \par   
+* The <code>pSrc</code> points to the array of in-place buffer of size <code>2*fftLen</code> and inputs and outputs are stored in an interleaved fashion as shown below.    
+* <pre> {real[0], imag[0], real[1], imag[1],..} </pre>    
+*    
+* \par Lengths supported by the transform:   
+* \par    
+* Internally, the function utilize a Radix-8 decimation in frequency(DIF) algorithm    
+* and the size of the FFT supported are of the lengths [ 64, 512, 4096].   
+*     
+*    
+* \par Algorithm:    
+*    
+* <b>Complex Fast Fourier Transform:</b>    
+* \par     
+* Input real and imaginary data:    
+* <pre>    
+* x(n) = xa + j * ya    
+* x(n+N/4 ) = xb + j * yb    
+* x(n+N/2 ) = xc + j * yc    
+* x(n+3N 4) = xd + j * yd    
+* </pre>    
+* where N is length of FFT    
+* \par    
+* Output real and imaginary data:    
+* <pre>    
+* X(4r) = xa'+ j * ya'    
+* X(4r+1) = xb'+ j * yb'    
+* X(4r+2) = xc'+ j * yc'    
+* X(4r+3) = xd'+ j * yd'    
+* </pre>    
+* \par    
+* Twiddle factors for Radix-8 FFT:    
+* <pre>    
+* Wn = co1 + j * (- si1)    
+* W2n = co2 + j * (- si2)    
+* W3n = co3 + j * (- si3)    
+* </pre>    
+*    
+* \par    
+* \image html CFFT.gif "Radix-8 Decimation-in Frequency Complex Fast Fourier Transform"    
+*    
+* \par    
+* Output from Radix-8 CFFT Results in Digit reversal order. Interchange middle two branches of every butterfly results in Bit reversed output.    
+* \par    
+* <b> Butterfly CFFT equations:</b>    
+* <pre>    
+* xa' = xa + xb + xc + xd    
+* ya' = ya + yb + yc + yd    
+* xc' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1)    
+* yc' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1)    
+* xb' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2)    
+* yb' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2)    
+* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3)    
+* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3)    
+* </pre>    
+*    
+* \par    
+* where <code>fftLen</code> length of CFFT/CIFFT; <code>ifftFlag</code> Flag for selection of CFFT or CIFFT(Set ifftFlag to calculate CIFFT otherwise calculates CFFT);    
+* <code>bitReverseFlag</code> Flag for selection of output order(Set bitReverseFlag to output in normal order otherwise output in bit reversed order);     
+* <code>pTwiddle</code>points to array of twiddle coefficients; <code>pBitRevTable</code> points to the array of bit reversal table.    
+* <code>twidCoefModifier</code> modifier for twiddle factor table which supports all FFT lengths with same table;     
+* <code>pBitRevTable</code> modifier for bit reversal table which supports all FFT lengths with same table.    
+* <code>onebyfftLen</code> value of 1/fftLen to calculate CIFFT;    
+*   
+* \par Fixed-Point Behavior    
+* Care must be taken when using the fixed-point versions of the CFFT/CIFFT function.    
+* Refer to the function specific documentation below for usage guidelines.    
+*/
+
+
+/*    
+* @brief  Core function for the floating-point CFFT butterfly process.   
+* @param[in, out] *pSrc            points to the in-place buffer of floating-point data type.   
+* @param[in]      fftLen           length of the FFT.   
+* @param[in]      *pCoef           points to the twiddle coefficient buffer.   
+* @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+* @return none.   
+*/
+
+void arm_radix8_butterfly_f32(
+float32_t * pSrc,
+uint16_t fftLen,
+const float32_t * pCoef,
+uint16_t twidCoefModifier)
+{
+   uint32_t ia1, ia2, ia3, ia4, ia5, ia6, ia7;
+   uint32_t i1, i2, i3, i4, i5, i6, i7, i8;
+   uint32_t id;
+   uint32_t n1, n2, j;
+   
+   float32_t r1, r2, r3, r4, r5, r6, r7, r8;
+   float32_t t1, t2;
+   float32_t s1, s2, s3, s4, s5, s6, s7, s8;
+   float32_t p1, p2, p3, p4;
+   float32_t co2, co3, co4, co5, co6, co7, co8;
+   float32_t si2, si3, si4, si5, si6, si7, si8;
+   const float32_t C81 = 0.70710678118f;
+
+   n2 = fftLen;
+   
+   do 
+   {
+      n1 = n2;
+      n2 = n2 >> 3;
+      i1 = 0;
+      
+      do
+      {
+         i2 = i1 + n2;
+         i3 = i2 + n2;
+         i4 = i3 + n2;
+         i5 = i4 + n2;
+         i6 = i5 + n2;
+         i7 = i6 + n2;
+         i8 = i7 + n2;
+         r1 = pSrc[2 * i1] + pSrc[2 * i5];
+         r5 = pSrc[2 * i1] - pSrc[2 * i5];
+         r2 = pSrc[2 * i2] + pSrc[2 * i6];
+         r6 = pSrc[2 * i2] - pSrc[2 * i6];
+         r3 = pSrc[2 * i3] + pSrc[2 * i7];
+         r7 = pSrc[2 * i3] - pSrc[2 * i7];
+         r4 = pSrc[2 * i4] + pSrc[2 * i8];
+         r8 = pSrc[2 * i4] - pSrc[2 * i8];
+         t1 = r1 - r3;
+         r1 = r1 + r3;
+         r3 = r2 - r4;
+         r2 = r2 + r4;
+         pSrc[2 * i1] = r1 + r2;   
+         pSrc[2 * i5] = r1 - r2;
+         r1 = pSrc[2 * i1 + 1] + pSrc[2 * i5 + 1];
+         s5 = pSrc[2 * i1 + 1] - pSrc[2 * i5 + 1];
+         r2 = pSrc[2 * i2 + 1] + pSrc[2 * i6 + 1];
+         s6 = pSrc[2 * i2 + 1] - pSrc[2 * i6 + 1];
+         s3 = pSrc[2 * i3 + 1] + pSrc[2 * i7 + 1];
+         s7 = pSrc[2 * i3 + 1] - pSrc[2 * i7 + 1];
+         r4 = pSrc[2 * i4 + 1] + pSrc[2 * i8 + 1];
+         s8 = pSrc[2 * i4 + 1] - pSrc[2 * i8 + 1];
+         t2 = r1 - s3;
+         r1 = r1 + s3;
+         s3 = r2 - r4;
+         r2 = r2 + r4;
+         pSrc[2 * i1 + 1] = r1 + r2;
+         pSrc[2 * i5 + 1] = r1 - r2;
+         pSrc[2 * i3]     = t1 + s3;
+         pSrc[2 * i7]     = t1 - s3;
+         pSrc[2 * i3 + 1] = t2 - r3;
+         pSrc[2 * i7 + 1] = t2 + r3;
+         r1 = (r6 - r8) * C81;
+         r6 = (r6 + r8) * C81;
+         r2 = (s6 - s8) * C81;
+         s6 = (s6 + s8) * C81;
+         t1 = r5 - r1;
+         r5 = r5 + r1;
+         r8 = r7 - r6;
+         r7 = r7 + r6;
+         t2 = s5 - r2;
+         s5 = s5 + r2;
+         s8 = s7 - s6;
+         s7 = s7 + s6;
+         pSrc[2 * i2]     = r5 + s7;
+         pSrc[2 * i8]     = r5 - s7;
+         pSrc[2 * i6]     = t1 + s8;
+         pSrc[2 * i4]     = t1 - s8;
+         pSrc[2 * i2 + 1] = s5 - r7;
+         pSrc[2 * i8 + 1] = s5 + r7;
+         pSrc[2 * i6 + 1] = t2 - r8;
+         pSrc[2 * i4 + 1] = t2 + r8;
+         
+         i1 += n1;
+      } while(i1 < fftLen);
+      
+      if(n2 < 8)
+         break;
+      
+      ia1 = 0;
+      j = 1;
+      
+      do
+      {      
+         /*  index calculation for the coefficients */
+         id  = ia1 + twidCoefModifier;
+         ia1 = id;
+         ia2 = ia1 + id;
+         ia3 = ia2 + id;
+         ia4 = ia3 + id;
+         ia5 = ia4 + id;
+         ia6 = ia5 + id;
+         ia7 = ia6 + id;
+                  
+         co2 = pCoef[2 * ia1];
+         co3 = pCoef[2 * ia2];
+         co4 = pCoef[2 * ia3];
+         co5 = pCoef[2 * ia4];
+         co6 = pCoef[2 * ia5];
+         co7 = pCoef[2 * ia6];
+         co8 = pCoef[2 * ia7];
+         si2 = pCoef[2 * ia1 + 1];
+         si3 = pCoef[2 * ia2 + 1];
+         si4 = pCoef[2 * ia3 + 1];
+         si5 = pCoef[2 * ia4 + 1];
+         si6 = pCoef[2 * ia5 + 1];
+         si7 = pCoef[2 * ia6 + 1];
+         si8 = pCoef[2 * ia7 + 1];         
+         
+         i1 = j;
+         
+         do
+         {
+            /*  index calculation for the input */
+            i2 = i1 + n2;
+            i3 = i2 + n2;
+            i4 = i3 + n2;
+            i5 = i4 + n2;
+            i6 = i5 + n2;
+            i7 = i6 + n2;
+            i8 = i7 + n2;
+            r1 = pSrc[2 * i1] + pSrc[2 * i5];
+            r5 = pSrc[2 * i1] - pSrc[2 * i5];
+            r2 = pSrc[2 * i2] + pSrc[2 * i6];
+            r6 = pSrc[2 * i2] - pSrc[2 * i6];
+            r3 = pSrc[2 * i3] + pSrc[2 * i7];
+            r7 = pSrc[2 * i3] - pSrc[2 * i7];
+            r4 = pSrc[2 * i4] + pSrc[2 * i8];
+            r8 = pSrc[2 * i4] - pSrc[2 * i8];
+            t1 = r1 - r3;
+            r1 = r1 + r3;
+            r3 = r2 - r4;
+            r2 = r2 + r4;
+            pSrc[2 * i1] = r1 + r2;
+            r2 = r1 - r2;
+            s1 = pSrc[2 * i1 + 1] + pSrc[2 * i5 + 1];
+            s5 = pSrc[2 * i1 + 1] - pSrc[2 * i5 + 1];
+            s2 = pSrc[2 * i2 + 1] + pSrc[2 * i6 + 1];
+            s6 = pSrc[2 * i2 + 1] - pSrc[2 * i6 + 1];
+            s3 = pSrc[2 * i3 + 1] + pSrc[2 * i7 + 1];
+            s7 = pSrc[2 * i3 + 1] - pSrc[2 * i7 + 1];
+            s4 = pSrc[2 * i4 + 1] + pSrc[2 * i8 + 1];
+            s8 = pSrc[2 * i4 + 1] - pSrc[2 * i8 + 1];
+            t2 = s1 - s3;
+            s1 = s1 + s3;
+            s3 = s2 - s4;
+            s2 = s2 + s4;
+            r1 = t1 + s3;
+            t1 = t1 - s3;
+            pSrc[2 * i1 + 1] = s1 + s2;
+            s2 = s1 - s2;
+            s1 = t2 - r3;
+            t2 = t2 + r3;
+            p1 = co5 * r2;
+            p2 = si5 * s2;
+            p3 = co5 * s2;
+            p4 = si5 * r2;
+            pSrc[2 * i5]     = p1 + p2;
+            pSrc[2 * i5 + 1] = p3 - p4;
+            p1 = co3 * r1;
+            p2 = si3 * s1;
+            p3 = co3 * s1;
+            p4 = si3 * r1;
+            pSrc[2 * i3]     = p1 + p2;
+            pSrc[2 * i3 + 1] = p3 - p4;
+            p1 = co7 * t1;
+            p2 = si7 * t2;
+            p3 = co7 * t2;
+            p4 = si7 * t1;
+            pSrc[2 * i7]     = p1 + p2;
+            pSrc[2 * i7 + 1] = p3 - p4;
+            r1 = (r6 - r8) * C81;
+            r6 = (r6 + r8) * C81;
+            s1 = (s6 - s8) * C81;
+            s6 = (s6 + s8) * C81;
+            t1 = r5 - r1;
+            r5 = r5 + r1;
+            r8 = r7 - r6;
+            r7 = r7 + r6;
+            t2 = s5 - s1;
+            s5 = s5 + s1;
+            s8 = s7 - s6;
+            s7 = s7 + s6;
+            r1 = r5 + s7;
+            r5 = r5 - s7;
+            r6 = t1 + s8;
+            t1 = t1 - s8;
+            s1 = s5 - r7;
+            s5 = s5 + r7;
+            s6 = t2 - r8;
+            t2 = t2 + r8;
+            p1 = co2 * r1;
+            p2 = si2 * s1;
+            p3 = co2 * s1;
+            p4 = si2 * r1;
+            pSrc[2 * i2]     = p1 + p2;
+            pSrc[2 * i2 + 1] = p3 - p4;
+            p1 = co8 * r5;
+            p2 = si8 * s5;
+            p3 = co8 * s5;
+            p4 = si8 * r5;
+            pSrc[2 * i8]     = p1 + p2;
+            pSrc[2 * i8 + 1] = p3 - p4;
+            p1 = co6 * r6;
+            p2 = si6 * s6;
+            p3 = co6 * s6;
+            p4 = si6 * r6;
+            pSrc[2 * i6]     = p1 + p2;
+            pSrc[2 * i6 + 1] = p3 - p4;
+            p1 = co4 * t1;
+            p2 = si4 * t2;
+            p3 = co4 * t2;
+            p4 = si4 * t1;
+            pSrc[2 * i4]     = p1 + p2;
+            pSrc[2 * i4 + 1] = p3 - p4;
+            
+            i1 += n1;
+         } while(i1 < fftLen);
+         
+         j++;
+      } while(j < n2);
+      
+      twidCoefModifier <<= 3;
+   } while(n2 > 7);   
+}
+
+/**    
+* @} end of Radix8_CFFT_CIFFT group    
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,461 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_dct4_f32.c    
+*    
+* Description:	Processing function of DCT4 & IDCT4 F32.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.      
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @defgroup DCT4_IDCT4 DCT Type IV Functions    
+ * Representation of signals by minimum number of values is important for storage and transmission.    
+ * The possibility of large discontinuity between the beginning and end of a period of a signal    
+ * in DFT can be avoided by extending the signal so that it is even-symmetric.    
+ * Discrete Cosine Transform (DCT) is constructed such that its energy is heavily concentrated in the lower part of the    
+ * spectrum and is very widely used in signal and image coding applications.    
+ * The family of DCTs (DCT type- 1,2,3,4) is the outcome of different combinations of homogeneous boundary conditions.    
+ * DCT has an excellent energy-packing capability, hence has many applications and in data compression in particular.    
+ *    
+ * DCT is essentially the Discrete Fourier Transform(DFT) of an even-extended real signal.    
+ * Reordering of the input data makes the computation of DCT just a problem of    
+ * computing the DFT of a real signal with a few additional operations.    
+ * This approach provides regular, simple, and very efficient DCT algorithms for practical hardware and software implementations.    
+ *     
+ * DCT type-II can be implemented using Fast fourier transform (FFT) internally, as the transform is applied on real values, Real FFT can be used.    
+ * DCT4 is implemented using DCT2 as their implementations are similar except with some added pre-processing and post-processing.    
+ * DCT2 implementation can be described in the following steps:    
+ * - Re-ordering input    
+ * - Calculating Real FFT    
+ * - Multiplication of weights and Real FFT output and getting real part from the product.    
+ *    
+ * This process is explained by the block diagram below:    
+ * \image html DCT4.gif "Discrete Cosine Transform - type-IV"    
+ *    
+ * \par Algorithm:    
+ * The N-point type-IV DCT is defined as a real, linear transformation by the formula:    
+ * \image html DCT4Equation.gif    
+ * where <code>k = 0,1,2,.....N-1</code>    
+ *\par    
+ * Its inverse is defined as follows:    
+ * \image html IDCT4Equation.gif    
+ * where <code>n = 0,1,2,.....N-1</code>    
+ *\par    
+ * The DCT4 matrices become involutory (i.e. they are self-inverse) by multiplying with an overall scale factor of sqrt(2/N).    
+ * The symmetry of the transform matrix indicates that the fast algorithms for the forward    
+ * and inverse transform computation are identical.    
+ * Note that the implementation of Inverse DCT4 and DCT4 is same, hence same process function can be used for both.    
+ *    
+ * \par Lengths supported by the transform:    
+ *  As DCT4 internally uses Real FFT, it supports all the lengths supported by arm_rfft_f32().    
+ * The library provides separate functions for Q15, Q31, and floating-point data types.    
+ * \par Instance Structure    
+ * The instances for Real FFT and FFT, cosine values table and twiddle factor table are stored in an instance data structure.    
+ * A separate instance structure must be defined for each transform.    
+ * There are separate instance structure declarations for each of the 3 supported data types.    
+ *    
+ * \par Initialization Functions    
+ * There is also an associated initialization function for each data type.    
+ * The initialization function performs the following operations:    
+ * - Sets the values of the internal structure fields.    
+ * - Initializes Real FFT as its process function is used internally in DCT4, by calling arm_rfft_init_f32().    
+ * \par    
+ * Use of the initialization function is optional.    
+ * However, if the initialization function is used, then the instance structure cannot be placed into a const data section.    
+ * To place an instance structure into a const data section, the instance structure must be manually initialized.    
+ * Manually initialize the instance structure as follows:    
+ * <pre>    
+ *arm_dct4_instance_f32 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};    
+ *arm_dct4_instance_q31 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};   
+ *arm_dct4_instance_q15 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};   
+ * </pre>   
+ * where \c N is the length of the DCT4; \c Nby2 is half of the length of the DCT4;   
+ * \c normalize is normalizing factor used and is equal to <code>sqrt(2/N)</code>;    
+ * \c pTwiddle points to the twiddle factor table;   
+ * \c pCosFactor points to the cosFactor table;   
+ * \c pRfft points to the real FFT instance;   
+ * \c pCfft points to the complex FFT instance;   
+ * The CFFT and RFFT structures also needs to be initialized, refer to arm_cfft_radix4_f32()   
+ * and arm_rfft_f32() respectively for details regarding static initialization.   
+ *   
+ * \par Fixed-Point Behavior    
+ * Care must be taken when using the fixed-point versions of the DCT4 transform functions.    
+ * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.    
+ * Refer to the function specific documentation below for usage guidelines.    
+ */
+
+ /**    
+ * @addtogroup DCT4_IDCT4    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the floating-point DCT4/IDCT4.   
+ * @param[in]       *S             points to an instance of the floating-point DCT4/IDCT4 structure.   
+ * @param[in]       *pState        points to state buffer.   
+ * @param[in,out]   *pInlineBuffer points to the in-place input and output buffer.   
+ * @return none.   
+ */
+
+void arm_dct4_f32(
+  const arm_dct4_instance_f32 * S,
+  float32_t * pState,
+  float32_t * pInlineBuffer)
+{
+  uint32_t i;                                    /* Loop counter */
+  float32_t *weights = S->pTwiddle;              /* Pointer to the Weights table */
+  float32_t *cosFact = S->pCosFactor;            /* Pointer to the cos factors table */
+  float32_t *pS1, *pS2, *pbuff;                  /* Temporary pointers for input buffer and pState buffer */
+  float32_t in;                                  /* Temporary variable */
+
+
+  /* DCT4 computation involves DCT2 (which is calculated using RFFT)    
+   * along with some pre-processing and post-processing.    
+   * Computational procedure is explained as follows:    
+   * (a) Pre-processing involves multiplying input with cos factor,    
+   *     r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n))    
+   *              where,    
+   *                 r(n) -- output of preprocessing    
+   *                 u(n) -- input to preprocessing(actual Source buffer)    
+   * (b) Calculation of DCT2 using FFT is divided into three steps:    
+   *                  Step1: Re-ordering of even and odd elements of input.    
+   *                  Step2: Calculating FFT of the re-ordered input.    
+   *                  Step3: Taking the real part of the product of FFT output and weights.    
+   * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation:    
+   *                   Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *                        where,    
+   *                           Y4 -- DCT4 output,   Y2 -- DCT2 output    
+   * (d) Multiplying the output with the normalizing factor sqrt(2/N).    
+   */
+
+        /*-------- Pre-processing ------------*/
+  /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */
+  arm_scale_f32(pInlineBuffer, 2.0f, pInlineBuffer, S->N);
+  arm_mult_f32(pInlineBuffer, cosFact, pInlineBuffer, S->N);
+
+  /* ----------------------------------------------------------------    
+   * Step1: Re-ordering of even and odd elements as,    
+   *             pState[i] =  pInlineBuffer[2*i] and    
+   *             pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2    
+   ---------------------------------------------------------------------*/
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */
+  pS2 = pState + (S->N - 1u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */
+  i = (uint32_t) S->Nby2 >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  do
+  {
+    /* Re-ordering of even and odd elements */
+    /* pState[i] =  pInlineBuffer[2*i] */
+    *pS1++ = *pbuff++;
+    /* pState[N-i-1] = pInlineBuffer[2*i+1] */
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Initializing the loop counter to N/4 instead of N for loop unrolling */
+  i = (uint32_t) S->N >> 2u;
+
+  /* Processing with loop unrolling 4 times as N is always multiple of 4.    
+   * Compute 4 outputs at a time */
+  do
+  {
+    /* Writing the re-ordered output back to inplace input buffer */
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+  /* ---------------------------------------------------------    
+   *     Step2: Calculate RFFT for N-point input    
+   * ---------------------------------------------------------- */
+  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */
+  arm_rfft_f32(S->pRfft, pInlineBuffer, pState);
+
+        /*----------------------------------------------------------------------    
+	 *  Step3: Multiply the FFT output with the weights.    
+	 *----------------------------------------------------------------------*/
+  arm_cmplx_mult_cmplx_f32(pState, weights, pState, S->N);
+
+  /* ----------- Post-processing ---------- */
+  /* DCT-IV can be obtained from DCT-II by the equation,    
+   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *       Hence, Y4(0) = Y2(0)/2  */
+  /* Getting only real part from the output and Converting to DCT-IV */
+
+  /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */
+  i = ((uint32_t) S->N - 1u) >> 2u;
+
+  /* pbuff initialized to input buffer. */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */
+  in = *pS1++ * (float32_t) 0.5;
+  /* input buffer acts as inplace, so output values are stored in the input itself. */
+  *pbuff++ = in;
+
+  /* pState pointer is incremented twice as the real values are located alternatively in the array */
+  pS1++;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  do
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  i = ((uint32_t) S->N - 1u) % 0x4u;
+
+  while(i > 0u)
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+
+        /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/
+
+  /* Initializing the loop counter to N/4 instead of N for loop unrolling */
+  i = (uint32_t) S->N >> 2u;
+
+  /* pbuff initialized to the pInlineBuffer(now contains the output values) */
+  pbuff = pInlineBuffer;
+
+  /* Processing with loop unrolling 4 times as N is always multiple of 4.  Compute 4 outputs at a time */
+  do
+  {
+    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */
+    in = *pbuff;
+    *pbuff++ = in * S->normalize;
+
+    in = *pbuff;
+    *pbuff++ = in * S->normalize;
+
+    in = *pbuff;
+    *pbuff++ = in * S->normalize;
+
+    in = *pbuff;
+    *pbuff++ = in * S->normalize;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initializing the loop counter to N/2 */
+  i = (uint32_t) S->Nby2;
+
+  do
+  {
+    /* Re-ordering of even and odd elements */
+    /* pState[i] =  pInlineBuffer[2*i] */
+    *pS1++ = *pbuff++;
+    /* pState[N-i-1] = pInlineBuffer[2*i+1] */
+    *pS2-- = *pbuff++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Initializing the loop counter */
+  i = (uint32_t) S->N;
+
+  do
+  {
+    /* Writing the re-ordered output back to inplace input buffer */
+    *pbuff++ = *pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+  /* ---------------------------------------------------------    
+   *     Step2: Calculate RFFT for N-point input    
+   * ---------------------------------------------------------- */
+  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */
+  arm_rfft_f32(S->pRfft, pInlineBuffer, pState);
+
+        /*----------------------------------------------------------------------    
+	 *  Step3: Multiply the FFT output with the weights.    
+	 *----------------------------------------------------------------------*/
+  arm_cmplx_mult_cmplx_f32(pState, weights, pState, S->N);
+
+  /* ----------- Post-processing ---------- */
+  /* DCT-IV can be obtained from DCT-II by the equation,    
+   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *       Hence, Y4(0) = Y2(0)/2  */
+  /* Getting only real part from the output and Converting to DCT-IV */
+
+  /* pbuff initialized to input buffer. */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */
+  in = *pS1++ * (float32_t) 0.5;
+  /* input buffer acts as inplace, so output values are stored in the input itself. */
+  *pbuff++ = in;
+
+  /* pState pointer is incremented twice as the real values are located alternatively in the array */
+  pS1++;
+
+  /* Initializing the loop counter */
+  i = ((uint32_t) S->N - 1u);
+
+  do
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+        /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/
+
+  /* Initializing the loop counter */
+  i = (uint32_t) S->N;
+
+  /* pbuff initialized to the pInlineBuffer(now contains the output values) */
+  pbuff = pInlineBuffer;
+
+  do
+  {
+    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */
+    in = *pbuff;
+    *pbuff++ = in * S->normalize;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+   * @} end of DCT4_IDCT4 group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,16519 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_dct4_init_f32.c    
+*    
+* Description:	Initialization function of DCT-4 & IDCT4 F32    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup DCT4_IDCT4    
+ * @{    
+ */
+
+/*    
+* @brief  Weights Table    
+*/
+
+/**    
+* \par    
+* Weights tables are generated using the formula : <pre>weights[n] = e^(-j*n*pi/(2*N))</pre>    
+* \par    
+* C command to generate the table    
+* <pre>    
+* for(i = 0; i< N; i++)    
+* {    
+*    weights[2*i]= cos(i*c);    
+*    weights[(2*i)+1]= -sin(i * c);    
+* } </pre>    
+* \par    
+* Where <code>N</code> is the Number of weights to be calculated and <code>c</code> is <code>pi/(2*N)</code>    
+* \par    
+* In the tables below the real and imaginary values are placed alternatively, hence the    
+* array length is <code>2*N</code>.    
+*/
+
+static const float32_t Weights_128[256] = {
+  1.000000000000000000f, 0.000000000000000000f, 0.999924701839144500f,
+  -0.012271538285719925f,
+  0.999698818696204250f, -0.024541228522912288f, 0.999322384588349540f,
+  -0.036807222941358832f,
+  0.998795456205172410f, -0.049067674327418015f, 0.998118112900149180f,
+  -0.061320736302208578f,
+  0.997290456678690210f, -0.073564563599667426f, 0.996312612182778000f,
+  -0.085797312344439894f,
+  0.995184726672196930f, -0.098017140329560604f, 0.993906970002356060f,
+  -0.110222207293883060f,
+  0.992479534598709970f, -0.122410675199216200f, 0.990902635427780010f,
+  -0.134580708507126170f,
+  0.989176509964781010f, -0.146730474455361750f, 0.987301418157858430f,
+  -0.158858143333861450f,
+  0.985277642388941220f, -0.170961888760301220f, 0.983105487431216290f,
+  -0.183039887955140950f,
+  0.980785280403230430f, -0.195090322016128250f, 0.978317370719627650f,
+  -0.207111376192218560f,
+  0.975702130038528570f, -0.219101240156869800f, 0.972939952205560180f,
+  -0.231058108280671110f,
+  0.970031253194543970f, -0.242980179903263870f, 0.966976471044852070f,
+  -0.254865659604514570f,
+  0.963776065795439840f, -0.266712757474898370f, 0.960430519415565790f,
+  -0.278519689385053060f,
+  0.956940335732208820f, -0.290284677254462330f, 0.953306040354193860f,
+  -0.302005949319228080f,
+  0.949528180593036670f, -0.313681740398891520f, 0.945607325380521280f,
+  -0.325310292162262930f,
+  0.941544065183020810f, -0.336889853392220050f, 0.937339011912574960f,
+  -0.348418680249434560f,
+  0.932992798834738960f, -0.359895036534988110f, 0.928506080473215590f,
+  -0.371317193951837540f,
+  0.923879532511286740f, -0.382683432365089780f, 0.919113851690057770f,
+  -0.393992040061048100f,
+  0.914209755703530690f, -0.405241314004989860f, 0.909167983090522380f,
+  -0.416429560097637150f,
+  0.903989293123443340f, -0.427555093430282080f, 0.898674465693953820f,
+  -0.438616238538527660f,
+  0.893224301195515320f, -0.449611329654606540f, 0.887639620402853930f,
+  -0.460538710958240010f,
+  0.881921264348355050f, -0.471396736825997640f, 0.876070094195406600f,
+  -0.482183772079122720f,
+  0.870086991108711460f, -0.492898192229784040f, 0.863972856121586810f,
+  -0.503538383725717580f,
+  0.857728610000272120f, -0.514102744193221660f, 0.851355193105265200f,
+  -0.524589682678468950f,
+  0.844853565249707120f, -0.534997619887097150f, 0.838224705554838080f,
+  -0.545324988422046460f,
+  0.831469612302545240f, -0.555570233019602180f, 0.824589302785025290f,
+  -0.565731810783613120f,
+  0.817584813151583710f, -0.575808191417845340f, 0.810457198252594770f,
+  -0.585797857456438860f,
+  0.803207531480644940f, -0.595699304492433360f, 0.795836904608883570f,
+  -0.605511041404325550f,
+  0.788346427626606340f, -0.615231590580626820f, 0.780737228572094490f,
+  -0.624859488142386340f,
+  0.773010453362736990f, -0.634393284163645490f, 0.765167265622458960f,
+  -0.643831542889791390f,
+  0.757208846506484570f, -0.653172842953776760f, 0.749136394523459370f,
+  -0.662415777590171780f,
+  0.740951125354959110f, -0.671558954847018330f, 0.732654271672412820f,
+  -0.680600997795453020f,
+  0.724247082951467000f, -0.689540544737066830f, 0.715730825283818590f,
+  -0.698376249408972920f,
+  0.707106781186547570f, -0.707106781186547460f, 0.698376249408972920f,
+  -0.715730825283818590f,
+  0.689540544737066940f, -0.724247082951466890f, 0.680600997795453130f,
+  -0.732654271672412820f,
+  0.671558954847018330f, -0.740951125354959110f, 0.662415777590171780f,
+  -0.749136394523459260f,
+  0.653172842953776760f, -0.757208846506484460f, 0.643831542889791500f,
+  -0.765167265622458960f,
+  0.634393284163645490f, -0.773010453362736990f, 0.624859488142386450f,
+  -0.780737228572094380f,
+  0.615231590580626820f, -0.788346427626606230f, 0.605511041404325550f,
+  -0.795836904608883460f,
+  0.595699304492433470f, -0.803207531480644830f, 0.585797857456438860f,
+  -0.810457198252594770f,
+  0.575808191417845340f, -0.817584813151583710f, 0.565731810783613230f,
+  -0.824589302785025290f,
+  0.555570233019602290f, -0.831469612302545240f, 0.545324988422046460f,
+  -0.838224705554837970f,
+  0.534997619887097260f, -0.844853565249707010f, 0.524589682678468840f,
+  -0.851355193105265200f,
+  0.514102744193221660f, -0.857728610000272120f, 0.503538383725717580f,
+  -0.863972856121586700f,
+  0.492898192229784090f, -0.870086991108711350f, 0.482183772079122830f,
+  -0.876070094195406600f,
+  0.471396736825997810f, -0.881921264348354940f, 0.460538710958240010f,
+  -0.887639620402853930f,
+  0.449611329654606600f, -0.893224301195515320f, 0.438616238538527710f,
+  -0.898674465693953820f,
+  0.427555093430282200f, -0.903989293123443340f, 0.416429560097637320f,
+  -0.909167983090522270f,
+  0.405241314004989860f, -0.914209755703530690f, 0.393992040061048100f,
+  -0.919113851690057770f,
+  0.382683432365089840f, -0.923879532511286740f, 0.371317193951837600f,
+  -0.928506080473215480f,
+  0.359895036534988280f, -0.932992798834738850f, 0.348418680249434510f,
+  -0.937339011912574960f,
+  0.336889853392220050f, -0.941544065183020810f, 0.325310292162262980f,
+  -0.945607325380521280f,
+  0.313681740398891570f, -0.949528180593036670f, 0.302005949319228200f,
+  -0.953306040354193750f,
+  0.290284677254462330f, -0.956940335732208940f, 0.278519689385053060f,
+  -0.960430519415565790f,
+  0.266712757474898420f, -0.963776065795439840f, 0.254865659604514630f,
+  -0.966976471044852070f,
+  0.242980179903263980f, -0.970031253194543970f, 0.231058108280671280f,
+  -0.972939952205560070f,
+  0.219101240156869770f, -0.975702130038528570f, 0.207111376192218560f,
+  -0.978317370719627650f,
+  0.195090322016128330f, -0.980785280403230430f, 0.183039887955141060f,
+  -0.983105487431216290f,
+  0.170961888760301360f, -0.985277642388941220f, 0.158858143333861390f,
+  -0.987301418157858430f,
+  0.146730474455361750f, -0.989176509964781010f, 0.134580708507126220f,
+  -0.990902635427780010f,
+  0.122410675199216280f, -0.992479534598709970f, 0.110222207293883180f,
+  -0.993906970002356060f,
+  0.098017140329560770f, -0.995184726672196820f, 0.085797312344439880f,
+  -0.996312612182778000f,
+  0.073564563599667454f, -0.997290456678690210f, 0.061320736302208648f,
+  -0.998118112900149180f,
+  0.049067674327418126f, -0.998795456205172410f, 0.036807222941358991f,
+  -0.999322384588349540f,
+  0.024541228522912264f, -0.999698818696204250f, 0.012271538285719944f,
+  -0.999924701839144500f
+};
+
+static const float32_t Weights_512[1024] = {
+  1.000000000000000000f, 0.000000000000000000f, 0.999995293809576190f,
+  -0.003067956762965976f,
+  0.999981175282601110f, -0.006135884649154475f, 0.999957644551963900f,
+  -0.009203754782059819f,
+  0.999924701839144500f, -0.012271538285719925f, 0.999882347454212560f,
+  -0.015339206284988100f,
+  0.999830581795823400f, -0.018406729905804820f, 0.999769405351215280f,
+  -0.021474080275469508f,
+  0.999698818696204250f, -0.024541228522912288f, 0.999618822495178640f,
+  -0.027608145778965740f,
+  0.999529417501093140f, -0.030674803176636626f, 0.999430604555461730f,
+  -0.033741171851377580f,
+  0.999322384588349540f, -0.036807222941358832f, 0.999204758618363890f,
+  -0.039872927587739811f,
+  0.999077727752645360f, -0.042938256934940820f, 0.998941293186856870f,
+  -0.046003182130914623f,
+  0.998795456205172410f, -0.049067674327418015f, 0.998640218180265270f,
+  -0.052131704680283324f,
+  0.998475580573294770f, -0.055195244349689934f, 0.998301544933892890f,
+  -0.058258264500435752f,
+  0.998118112900149180f, -0.061320736302208578f, 0.997925286198596000f,
+  -0.064382630929857465f,
+  0.997723066644191640f, -0.067443919563664051f, 0.997511456140303450f,
+  -0.070504573389613856f,
+  0.997290456678690210f, -0.073564563599667426f, 0.997060070339482960f,
+  -0.076623861392031492f,
+  0.996820299291165670f, -0.079682437971430126f, 0.996571145790554840f,
+  -0.082740264549375692f,
+  0.996312612182778000f, -0.085797312344439894f, 0.996044700901251970f,
+  -0.088853552582524600f,
+  0.995767414467659820f, -0.091908956497132724f, 0.995480755491926940f,
+  -0.094963495329638992f,
+  0.995184726672196930f, -0.098017140329560604f, 0.994879330794805620f,
+  -0.101069862754827820f,
+  0.994564570734255420f, -0.104121633872054590f, 0.994240449453187900f,
+  -0.107172424956808840f,
+  0.993906970002356060f, -0.110222207293883060f, 0.993564135520595300f,
+  -0.113270952177564350f,
+  0.993211949234794500f, -0.116318630911904750f, 0.992850414459865100f,
+  -0.119365214810991350f,
+  0.992479534598709970f, -0.122410675199216200f, 0.992099313142191800f,
+  -0.125454983411546230f,
+  0.991709753669099530f, -0.128498110793793170f, 0.991310859846115440f,
+  -0.131540028702883120f,
+  0.990902635427780010f, -0.134580708507126170f, 0.990485084256457090f,
+  -0.137620121586486040f,
+  0.990058210262297120f, -0.140658239332849210f, 0.989622017463200890f,
+  -0.143695033150294470f,
+  0.989176509964781010f, -0.146730474455361750f, 0.988721691960323780f,
+  -0.149764534677321510f,
+  0.988257567730749460f, -0.152797185258443440f, 0.987784141644572180f,
+  -0.155828397654265230f,
+  0.987301418157858430f, -0.158858143333861450f, 0.986809401814185530f,
+  -0.161886393780111830f,
+  0.986308097244598670f, -0.164913120489969890f, 0.985797509167567480f,
+  -0.167938294974731170f,
+  0.985277642388941220f, -0.170961888760301220f, 0.984748501801904210f,
+  -0.173983873387463820f,
+  0.984210092386929030f, -0.177004220412148750f, 0.983662419211730250f,
+  -0.180022901405699510f,
+  0.983105487431216290f, -0.183039887955140950f, 0.982539302287441240f,
+  -0.186055151663446630f,
+  0.981963869109555240f, -0.189068664149806190f, 0.981379193313754560f,
+  -0.192080397049892440f,
+  0.980785280403230430f, -0.195090322016128250f, 0.980182135968117430f,
+  -0.198098410717953560f,
+  0.979569765685440520f, -0.201104634842091900f, 0.978948175319062200f,
+  -0.204108966092816870f,
+  0.978317370719627650f, -0.207111376192218560f, 0.977677357824509930f,
+  -0.210111836880469610f,
+  0.977028142657754390f, -0.213110319916091360f, 0.976369731330021140f,
+  -0.216106797076219520f,
+  0.975702130038528570f, -0.219101240156869800f, 0.975025345066994120f,
+  -0.222093620973203510f,
+  0.974339382785575860f, -0.225083911359792830f, 0.973644249650811980f,
+  -0.228072083170885730f,
+  0.972939952205560180f, -0.231058108280671110f, 0.972226497078936270f,
+  -0.234041958583543430f,
+  0.971503890986251780f, -0.237023605994367200f, 0.970772140728950350f,
+  -0.240003022448741500f,
+  0.970031253194543970f, -0.242980179903263870f, 0.969281235356548530f,
+  -0.245955050335794590f,
+  0.968522094274417380f, -0.248927605745720150f, 0.967753837093475510f,
+  -0.251897818154216970f,
+  0.966976471044852070f, -0.254865659604514570f, 0.966190003445412500f,
+  -0.257831102162158990f,
+  0.965394441697689400f, -0.260794117915275510f, 0.964589793289812760f,
+  -0.263754678974831350f,
+  0.963776065795439840f, -0.266712757474898370f, 0.962953266873683880f,
+  -0.269668325572915090f,
+  0.962121404269041580f, -0.272621355449948980f, 0.961280485811320640f,
+  -0.275571819310958140f,
+  0.960430519415565790f, -0.278519689385053060f, 0.959571513081984520f,
+  -0.281464937925757940f,
+  0.958703474895871600f, -0.284407537211271880f, 0.957826413027532910f,
+  -0.287347459544729510f,
+  0.956940335732208820f, -0.290284677254462330f, 0.956045251349996410f,
+  -0.293219162694258630f,
+  0.955141168305770780f, -0.296150888243623790f, 0.954228095109105670f,
+  -0.299079826308040480f,
+  0.953306040354193860f, -0.302005949319228080f, 0.952375012719765880f,
+  -0.304929229735402370f,
+  0.951435020969008340f, -0.307849640041534870f, 0.950486073949481700f,
+  -0.310767152749611470f,
+  0.949528180593036670f, -0.313681740398891520f, 0.948561349915730270f,
+  -0.316593375556165850f,
+  0.947585591017741090f, -0.319502030816015690f, 0.946600913083283530f,
+  -0.322407678801069850f,
+  0.945607325380521280f, -0.325310292162262930f, 0.944604837261480260f,
+  -0.328209843579092500f,
+  0.943593458161960390f, -0.331106305759876430f, 0.942573197601446870f,
+  -0.333999651442009380f,
+  0.941544065183020810f, -0.336889853392220050f, 0.940506070593268300f,
+  -0.339776884406826850f,
+  0.939459223602189920f, -0.342660717311994380f, 0.938403534063108060f,
+  -0.345541324963989090f,
+  0.937339011912574960f, -0.348418680249434560f, 0.936265667170278260f,
+  -0.351292756085567090f,
+  0.935183509938947610f, -0.354163525420490340f, 0.934092550404258980f,
+  -0.357030961233429980f,
+  0.932992798834738960f, -0.359895036534988110f, 0.931884265581668150f,
+  -0.362755724367397230f,
+  0.930766961078983710f, -0.365612997804773850f, 0.929640895843181330f,
+  -0.368466829953372320f,
+  0.928506080473215590f, -0.371317193951837540f, 0.927362525650401110f,
+  -0.374164062971457930f,
+  0.926210242138311380f, -0.377007410216418260f, 0.925049240782677580f,
+  -0.379847208924051160f,
+  0.923879532511286740f, -0.382683432365089780f, 0.922701128333878630f,
+  -0.385516053843918850f,
+  0.921514039342042010f, -0.388345046698826250f, 0.920318276709110590f,
+  -0.391170384302253870f,
+  0.919113851690057770f, -0.393992040061048100f, 0.917900775621390500f,
+  -0.396809987416710310f,
+  0.916679059921042700f, -0.399624199845646790f, 0.915448716088267830f,
+  -0.402434650859418430f,
+  0.914209755703530690f, -0.405241314004989860f, 0.912962190428398210f,
+  -0.408044162864978690f,
+  0.911706032005429880f, -0.410843171057903910f, 0.910441292258067250f,
+  -0.413638312238434500f,
+  0.909167983090522380f, -0.416429560097637150f, 0.907886116487666260f,
+  -0.419216888363223910f,
+  0.906595704514915330f, -0.422000270799799680f, 0.905296759318118820f,
+  -0.424779681209108810f,
+  0.903989293123443340f, -0.427555093430282080f, 0.902673318237258830f,
+  -0.430326481340082610f,
+  0.901348847046022030f, -0.433093818853151960f, 0.900015892016160280f,
+  -0.435857079922255470f,
+  0.898674465693953820f, -0.438616238538527660f, 0.897324580705418320f,
+  -0.441371268731716670f,
+  0.895966249756185220f, -0.444122144570429200f, 0.894599485631382700f,
+  -0.446868840162374160f,
+  0.893224301195515320f, -0.449611329654606540f, 0.891840709392342720f,
+  -0.452349587233770890f,
+  0.890448723244757880f, -0.455083587126343840f, 0.889048355854664570f,
+  -0.457813303598877170f,
+  0.887639620402853930f, -0.460538710958240010f, 0.886222530148880640f,
+  -0.463259783551860150f,
+  0.884797098430937790f, -0.465976495767966180f, 0.883363338665731580f,
+  -0.468688822035827900f,
+  0.881921264348355050f, -0.471396736825997640f, 0.880470889052160750f,
+  -0.474100214650549970f,
+  0.879012226428633530f, -0.476799230063322090f, 0.877545290207261350f,
+  -0.479493757660153010f,
+  0.876070094195406600f, -0.482183772079122720f, 0.874586652278176110f,
+  -0.484869248000791060f,
+  0.873094978418290090f, -0.487550160148436000f, 0.871595086655950980f,
+  -0.490226483288291160f,
+  0.870086991108711460f, -0.492898192229784040f, 0.868570705971340900f,
+  -0.495565261825772540f,
+  0.867046245515692650f, -0.498227666972781870f, 0.865513624090569090f,
+  -0.500885382611240710f,
+  0.863972856121586810f, -0.503538383725717580f, 0.862423956111040610f,
+  -0.506186645345155230f,
+  0.860866938637767310f, -0.508830142543106990f, 0.859301818357008470f,
+  -0.511468850437970300f,
+  0.857728610000272120f, -0.514102744193221660f, 0.856147328375194470f,
+  -0.516731799017649870f,
+  0.854557988365400530f, -0.519355990165589640f, 0.852960604930363630f,
+  -0.521975292937154390f,
+  0.851355193105265200f, -0.524589682678468950f, 0.849741768000852550f,
+  -0.527199134781901280f,
+  0.848120344803297230f, -0.529803624686294610f, 0.846490938774052130f,
+  -0.532403127877197900f,
+  0.844853565249707120f, -0.534997619887097150f, 0.843208239641845440f,
+  -0.537587076295645390f,
+  0.841554977436898440f, -0.540171472729892850f, 0.839893794195999520f,
+  -0.542750784864515890f,
+  0.838224705554838080f, -0.545324988422046460f, 0.836547727223512010f,
+  -0.547894059173100190f,
+  0.834862874986380010f, -0.550457972936604810f, 0.833170164701913190f,
+  -0.553016705580027470f,
+  0.831469612302545240f, -0.555570233019602180f, 0.829761233794523050f,
+  -0.558118531220556100f,
+  0.828045045257755800f, -0.560661576197336030f, 0.826321062845663530f,
+  -0.563199344013834090f,
+  0.824589302785025290f, -0.565731810783613120f, 0.822849781375826430f,
+  -0.568258952670131490f,
+  0.821102514991104650f, -0.570780745886967260f, 0.819347520076796900f,
+  -0.573297166698042200f,
+  0.817584813151583710f, -0.575808191417845340f, 0.815814410806733780f,
+  -0.578313796411655590f,
+  0.814036329705948410f, -0.580813958095764530f, 0.812250586585203880f,
+  -0.583308652937698290f,
+  0.810457198252594770f, -0.585797857456438860f, 0.808656181588174980f,
+  -0.588281548222645220f,
+  0.806847553543799330f, -0.590759701858874160f, 0.805031331142963660f,
+  -0.593232295039799800f,
+  0.803207531480644940f, -0.595699304492433360f, 0.801376171723140240f,
+  -0.598160706996342270f,
+  0.799537269107905010f, -0.600616479383868970f, 0.797690840943391160f,
+  -0.603066598540348160f,
+  0.795836904608883570f, -0.605511041404325550f, 0.793975477554337170f,
+  -0.607949784967773630f,
+  0.792106577300212390f, -0.610382806276309480f, 0.790230221437310030f,
+  -0.612810082429409710f,
+  0.788346427626606340f, -0.615231590580626820f, 0.786455213599085770f,
+  -0.617647307937803870f,
+  0.784556597155575240f, -0.620057211763289100f, 0.782650596166575730f,
+  -0.622461279374149970f,
+  0.780737228572094490f, -0.624859488142386340f, 0.778816512381475980f,
+  -0.627251815495144080f,
+  0.776888465673232440f, -0.629638238914926980f, 0.774953106594873930f,
+  -0.632018735939809060f,
+  0.773010453362736990f, -0.634393284163645490f, 0.771060524261813820f,
+  -0.636761861236284200f,
+  0.769103337645579700f, -0.639124444863775730f, 0.767138911935820400f,
+  -0.641481012808583160f,
+  0.765167265622458960f, -0.643831542889791390f, 0.763188417263381270f,
+  -0.646176012983316280f,
+  0.761202385484261780f, -0.648514401022112440f, 0.759209188978388070f,
+  -0.650846684996380880f,
+  0.757208846506484570f, -0.653172842953776760f, 0.755201376896536550f,
+  -0.655492852999615350f,
+  0.753186799043612520f, -0.657806693297078640f, 0.751165131909686480f,
+  -0.660114342067420480f,
+  0.749136394523459370f, -0.662415777590171780f, 0.747100605980180130f,
+  -0.664710978203344790f,
+  0.745057785441466060f, -0.666999922303637470f, 0.743007952135121720f,
+  -0.669282588346636010f,
+  0.740951125354959110f, -0.671558954847018330f, 0.738887324460615110f,
+  -0.673829000378756040f,
+  0.736816568877369900f, -0.676092703575315920f, 0.734738878095963500f,
+  -0.678350043129861470f,
+  0.732654271672412820f, -0.680600997795453020f, 0.730562769227827590f,
+  -0.682845546385248080f,
+  0.728464390448225200f, -0.685083667772700360f, 0.726359155084346010f,
+  -0.687315340891759050f,
+  0.724247082951467000f, -0.689540544737066830f, 0.722128193929215350f,
+  -0.691759258364157750f,
+  0.720002507961381650f, -0.693971460889654000f, 0.717870045055731710f,
+  -0.696177131491462990f,
+  0.715730825283818590f, -0.698376249408972920f, 0.713584868780793640f,
+  -0.700568793943248340f,
+  0.711432195745216430f, -0.702754744457225300f, 0.709272826438865690f,
+  -0.704934080375904880f,
+  0.707106781186547570f, -0.707106781186547460f, 0.704934080375904990f,
+  -0.709272826438865580f,
+  0.702754744457225300f, -0.711432195745216430f, 0.700568793943248450f,
+  -0.713584868780793520f,
+  0.698376249408972920f, -0.715730825283818590f, 0.696177131491462990f,
+  -0.717870045055731710f,
+  0.693971460889654000f, -0.720002507961381650f, 0.691759258364157750f,
+  -0.722128193929215350f,
+  0.689540544737066940f, -0.724247082951466890f, 0.687315340891759160f,
+  -0.726359155084346010f,
+  0.685083667772700360f, -0.728464390448225200f, 0.682845546385248080f,
+  -0.730562769227827590f,
+  0.680600997795453130f, -0.732654271672412820f, 0.678350043129861580f,
+  -0.734738878095963390f,
+  0.676092703575316030f, -0.736816568877369790f, 0.673829000378756150f,
+  -0.738887324460615110f,
+  0.671558954847018330f, -0.740951125354959110f, 0.669282588346636010f,
+  -0.743007952135121720f,
+  0.666999922303637470f, -0.745057785441465950f, 0.664710978203344900f,
+  -0.747100605980180130f,
+  0.662415777590171780f, -0.749136394523459260f, 0.660114342067420480f,
+  -0.751165131909686370f,
+  0.657806693297078640f, -0.753186799043612410f, 0.655492852999615460f,
+  -0.755201376896536550f,
+  0.653172842953776760f, -0.757208846506484460f, 0.650846684996380990f,
+  -0.759209188978387960f,
+  0.648514401022112550f, -0.761202385484261780f, 0.646176012983316390f,
+  -0.763188417263381270f,
+  0.643831542889791500f, -0.765167265622458960f, 0.641481012808583160f,
+  -0.767138911935820400f,
+  0.639124444863775730f, -0.769103337645579590f, 0.636761861236284200f,
+  -0.771060524261813710f,
+  0.634393284163645490f, -0.773010453362736990f, 0.632018735939809060f,
+  -0.774953106594873820f,
+  0.629638238914927100f, -0.776888465673232440f, 0.627251815495144190f,
+  -0.778816512381475870f,
+  0.624859488142386450f, -0.780737228572094380f, 0.622461279374150080f,
+  -0.782650596166575730f,
+  0.620057211763289210f, -0.784556597155575240f, 0.617647307937803980f,
+  -0.786455213599085770f,
+  0.615231590580626820f, -0.788346427626606230f, 0.612810082429409710f,
+  -0.790230221437310030f,
+  0.610382806276309480f, -0.792106577300212390f, 0.607949784967773740f,
+  -0.793975477554337170f,
+  0.605511041404325550f, -0.795836904608883460f, 0.603066598540348280f,
+  -0.797690840943391040f,
+  0.600616479383868970f, -0.799537269107905010f, 0.598160706996342380f,
+  -0.801376171723140130f,
+  0.595699304492433470f, -0.803207531480644830f, 0.593232295039799800f,
+  -0.805031331142963660f,
+  0.590759701858874280f, -0.806847553543799220f, 0.588281548222645330f,
+  -0.808656181588174980f,
+  0.585797857456438860f, -0.810457198252594770f, 0.583308652937698290f,
+  -0.812250586585203880f,
+  0.580813958095764530f, -0.814036329705948300f, 0.578313796411655590f,
+  -0.815814410806733780f,
+  0.575808191417845340f, -0.817584813151583710f, 0.573297166698042320f,
+  -0.819347520076796900f,
+  0.570780745886967370f, -0.821102514991104650f, 0.568258952670131490f,
+  -0.822849781375826320f,
+  0.565731810783613230f, -0.824589302785025290f, 0.563199344013834090f,
+  -0.826321062845663420f,
+  0.560661576197336030f, -0.828045045257755800f, 0.558118531220556100f,
+  -0.829761233794523050f,
+  0.555570233019602290f, -0.831469612302545240f, 0.553016705580027580f,
+  -0.833170164701913190f,
+  0.550457972936604810f, -0.834862874986380010f, 0.547894059173100190f,
+  -0.836547727223511890f,
+  0.545324988422046460f, -0.838224705554837970f, 0.542750784864516000f,
+  -0.839893794195999410f,
+  0.540171472729892970f, -0.841554977436898330f, 0.537587076295645510f,
+  -0.843208239641845440f,
+  0.534997619887097260f, -0.844853565249707010f, 0.532403127877198010f,
+  -0.846490938774052020f,
+  0.529803624686294830f, -0.848120344803297120f, 0.527199134781901390f,
+  -0.849741768000852440f,
+  0.524589682678468840f, -0.851355193105265200f, 0.521975292937154390f,
+  -0.852960604930363630f,
+  0.519355990165589530f, -0.854557988365400530f, 0.516731799017649980f,
+  -0.856147328375194470f,
+  0.514102744193221660f, -0.857728610000272120f, 0.511468850437970520f,
+  -0.859301818357008360f,
+  0.508830142543106990f, -0.860866938637767310f, 0.506186645345155450f,
+  -0.862423956111040500f,
+  0.503538383725717580f, -0.863972856121586700f, 0.500885382611240940f,
+  -0.865513624090568980f,
+  0.498227666972781870f, -0.867046245515692650f, 0.495565261825772490f,
+  -0.868570705971340900f,
+  0.492898192229784090f, -0.870086991108711350f, 0.490226483288291100f,
+  -0.871595086655951090f,
+  0.487550160148436050f, -0.873094978418290090f, 0.484869248000791120f,
+  -0.874586652278176110f,
+  0.482183772079122830f, -0.876070094195406600f, 0.479493757660153010f,
+  -0.877545290207261240f,
+  0.476799230063322250f, -0.879012226428633410f, 0.474100214650550020f,
+  -0.880470889052160750f,
+  0.471396736825997810f, -0.881921264348354940f, 0.468688822035827960f,
+  -0.883363338665731580f,
+  0.465976495767966130f, -0.884797098430937790f, 0.463259783551860260f,
+  -0.886222530148880640f,
+  0.460538710958240010f, -0.887639620402853930f, 0.457813303598877290f,
+  -0.889048355854664570f,
+  0.455083587126343840f, -0.890448723244757880f, 0.452349587233771000f,
+  -0.891840709392342720f,
+  0.449611329654606600f, -0.893224301195515320f, 0.446868840162374330f,
+  -0.894599485631382580f,
+  0.444122144570429260f, -0.895966249756185110f, 0.441371268731716620f,
+  -0.897324580705418320f,
+  0.438616238538527710f, -0.898674465693953820f, 0.435857079922255470f,
+  -0.900015892016160280f,
+  0.433093818853152010f, -0.901348847046022030f, 0.430326481340082610f,
+  -0.902673318237258830f,
+  0.427555093430282200f, -0.903989293123443340f, 0.424779681209108810f,
+  -0.905296759318118820f,
+  0.422000270799799790f, -0.906595704514915330f, 0.419216888363223960f,
+  -0.907886116487666150f,
+  0.416429560097637320f, -0.909167983090522270f, 0.413638312238434560f,
+  -0.910441292258067140f,
+  0.410843171057903910f, -0.911706032005429880f, 0.408044162864978740f,
+  -0.912962190428398100f,
+  0.405241314004989860f, -0.914209755703530690f, 0.402434650859418540f,
+  -0.915448716088267830f,
+  0.399624199845646790f, -0.916679059921042700f, 0.396809987416710420f,
+  -0.917900775621390390f,
+  0.393992040061048100f, -0.919113851690057770f, 0.391170384302253980f,
+  -0.920318276709110480f,
+  0.388345046698826300f, -0.921514039342041900f, 0.385516053843919020f,
+  -0.922701128333878520f,
+  0.382683432365089840f, -0.923879532511286740f, 0.379847208924051110f,
+  -0.925049240782677580f,
+  0.377007410216418310f, -0.926210242138311270f, 0.374164062971457990f,
+  -0.927362525650401110f,
+  0.371317193951837600f, -0.928506080473215480f, 0.368466829953372320f,
+  -0.929640895843181330f,
+  0.365612997804773960f, -0.930766961078983710f, 0.362755724367397230f,
+  -0.931884265581668150f,
+  0.359895036534988280f, -0.932992798834738850f, 0.357030961233430030f,
+  -0.934092550404258870f,
+  0.354163525420490510f, -0.935183509938947500f, 0.351292756085567150f,
+  -0.936265667170278260f,
+  0.348418680249434510f, -0.937339011912574960f, 0.345541324963989150f,
+  -0.938403534063108060f,
+  0.342660717311994380f, -0.939459223602189920f, 0.339776884406826960f,
+  -0.940506070593268300f,
+  0.336889853392220050f, -0.941544065183020810f, 0.333999651442009490f,
+  -0.942573197601446870f,
+  0.331106305759876430f, -0.943593458161960390f, 0.328209843579092660f,
+  -0.944604837261480260f,
+  0.325310292162262980f, -0.945607325380521280f, 0.322407678801070020f,
+  -0.946600913083283530f,
+  0.319502030816015750f, -0.947585591017741090f, 0.316593375556165850f,
+  -0.948561349915730270f,
+  0.313681740398891570f, -0.949528180593036670f, 0.310767152749611470f,
+  -0.950486073949481700f,
+  0.307849640041534980f, -0.951435020969008340f, 0.304929229735402430f,
+  -0.952375012719765880f,
+  0.302005949319228200f, -0.953306040354193750f, 0.299079826308040480f,
+  -0.954228095109105670f,
+  0.296150888243623960f, -0.955141168305770670f, 0.293219162694258680f,
+  -0.956045251349996410f,
+  0.290284677254462330f, -0.956940335732208940f, 0.287347459544729570f,
+  -0.957826413027532910f,
+  0.284407537211271820f, -0.958703474895871600f, 0.281464937925758050f,
+  -0.959571513081984520f,
+  0.278519689385053060f, -0.960430519415565790f, 0.275571819310958250f,
+  -0.961280485811320640f,
+  0.272621355449948980f, -0.962121404269041580f, 0.269668325572915200f,
+  -0.962953266873683880f,
+  0.266712757474898420f, -0.963776065795439840f, 0.263754678974831510f,
+  -0.964589793289812650f,
+  0.260794117915275570f, -0.965394441697689400f, 0.257831102162158930f,
+  -0.966190003445412620f,
+  0.254865659604514630f, -0.966976471044852070f, 0.251897818154216910f,
+  -0.967753837093475510f,
+  0.248927605745720260f, -0.968522094274417270f, 0.245955050335794590f,
+  -0.969281235356548530f,
+  0.242980179903263980f, -0.970031253194543970f, 0.240003022448741500f,
+  -0.970772140728950350f,
+  0.237023605994367340f, -0.971503890986251780f, 0.234041958583543460f,
+  -0.972226497078936270f,
+  0.231058108280671280f, -0.972939952205560070f, 0.228072083170885790f,
+  -0.973644249650811870f,
+  0.225083911359792780f, -0.974339382785575860f, 0.222093620973203590f,
+  -0.975025345066994120f,
+  0.219101240156869770f, -0.975702130038528570f, 0.216106797076219600f,
+  -0.976369731330021140f,
+  0.213110319916091360f, -0.977028142657754390f, 0.210111836880469720f,
+  -0.977677357824509930f,
+  0.207111376192218560f, -0.978317370719627650f, 0.204108966092817010f,
+  -0.978948175319062200f,
+  0.201104634842091960f, -0.979569765685440520f, 0.198098410717953730f,
+  -0.980182135968117320f,
+  0.195090322016128330f, -0.980785280403230430f, 0.192080397049892380f,
+  -0.981379193313754560f,
+  0.189068664149806280f, -0.981963869109555240f, 0.186055151663446630f,
+  -0.982539302287441240f,
+  0.183039887955141060f, -0.983105487431216290f, 0.180022901405699510f,
+  -0.983662419211730250f,
+  0.177004220412148860f, -0.984210092386929030f, 0.173983873387463850f,
+  -0.984748501801904210f,
+  0.170961888760301360f, -0.985277642388941220f, 0.167938294974731230f,
+  -0.985797509167567370f,
+  0.164913120489970090f, -0.986308097244598670f, 0.161886393780111910f,
+  -0.986809401814185420f,
+  0.158858143333861390f, -0.987301418157858430f, 0.155828397654265320f,
+  -0.987784141644572180f,
+  0.152797185258443410f, -0.988257567730749460f, 0.149764534677321620f,
+  -0.988721691960323780f,
+  0.146730474455361750f, -0.989176509964781010f, 0.143695033150294580f,
+  -0.989622017463200780f,
+  0.140658239332849240f, -0.990058210262297120f, 0.137620121586486180f,
+  -0.990485084256456980f,
+  0.134580708507126220f, -0.990902635427780010f, 0.131540028702883280f,
+  -0.991310859846115440f,
+  0.128498110793793220f, -0.991709753669099530f, 0.125454983411546210f,
+  -0.992099313142191800f,
+  0.122410675199216280f, -0.992479534598709970f, 0.119365214810991350f,
+  -0.992850414459865100f,
+  0.116318630911904880f, -0.993211949234794500f, 0.113270952177564360f,
+  -0.993564135520595300f,
+  0.110222207293883180f, -0.993906970002356060f, 0.107172424956808870f,
+  -0.994240449453187900f,
+  0.104121633872054730f, -0.994564570734255420f, 0.101069862754827880f,
+  -0.994879330794805620f,
+  0.098017140329560770f, -0.995184726672196820f, 0.094963495329639061f,
+  -0.995480755491926940f,
+  0.091908956497132696f, -0.995767414467659820f, 0.088853552582524684f,
+  -0.996044700901251970f,
+  0.085797312344439880f, -0.996312612182778000f, 0.082740264549375803f,
+  -0.996571145790554840f,
+  0.079682437971430126f, -0.996820299291165670f, 0.076623861392031617f,
+  -0.997060070339482960f,
+  0.073564563599667454f, -0.997290456678690210f, 0.070504573389614009f,
+  -0.997511456140303450f,
+  0.067443919563664106f, -0.997723066644191640f, 0.064382630929857410f,
+  -0.997925286198596000f,
+  0.061320736302208648f, -0.998118112900149180f, 0.058258264500435732f,
+  -0.998301544933892890f,
+  0.055195244349690031f, -0.998475580573294770f, 0.052131704680283317f,
+  -0.998640218180265270f,
+  0.049067674327418126f, -0.998795456205172410f, 0.046003182130914644f,
+  -0.998941293186856870f,
+  0.042938256934940959f, -0.999077727752645360f, 0.039872927587739845f,
+  -0.999204758618363890f,
+  0.036807222941358991f, -0.999322384588349540f, 0.033741171851377642f,
+  -0.999430604555461730f,
+  0.030674803176636581f, -0.999529417501093140f, 0.027608145778965820f,
+  -0.999618822495178640f,
+  0.024541228522912264f, -0.999698818696204250f, 0.021474080275469605f,
+  -0.999769405351215280f,
+  0.018406729905804820f, -0.999830581795823400f, 0.015339206284988220f,
+  -0.999882347454212560f,
+  0.012271538285719944f, -0.999924701839144500f, 0.009203754782059960f,
+  -0.999957644551963900f,
+  0.006135884649154515f, -0.999981175282601110f, 0.003067956762966138f,
+  -0.999995293809576190f
+};
+
+static const float32_t Weights_2048[4096] = {
+  1.000000000000000000f, 0.000000000000000000f, 0.999999705862882230f,
+  -0.000766990318742704f,
+  0.999998823451701880f, -0.001533980186284766f, 0.999997352766978210f,
+  -0.002300969151425805f,
+  0.999995293809576190f, -0.003067956762965976f, 0.999992646580707190f,
+  -0.003834942569706228f,
+  0.999989411081928400f, -0.004601926120448571f, 0.999985587315143200f,
+  -0.005368906963996343f,
+  0.999981175282601110f, -0.006135884649154475f, 0.999976174986897610f,
+  -0.006902858724729756f,
+  0.999970586430974140f, -0.007669828739531097f, 0.999964409618118280f,
+  -0.008436794242369799f,
+  0.999957644551963900f, -0.009203754782059819f, 0.999950291236490480f,
+  -0.009970709907418031f,
+  0.999942349676023910f, -0.010737659167264491f, 0.999933819875236000f,
+  -0.011504602110422714f,
+  0.999924701839144500f, -0.012271538285719925f, 0.999914995573113470f,
+  -0.013038467241987334f,
+  0.999904701082852900f, -0.013805388528060391f, 0.999893818374418490f,
+  -0.014572301692779064f,
+  0.999882347454212560f, -0.015339206284988100f, 0.999870288328982950f,
+  -0.016106101853537287f,
+  0.999857641005823860f, -0.016872987947281710f, 0.999844405492175240f,
+  -0.017639864115082053f,
+  0.999830581795823400f, -0.018406729905804820f, 0.999816169924900410f,
+  -0.019173584868322623f,
+  0.999801169887884260f, -0.019940428551514441f, 0.999785581693599210f,
+  -0.020707260504265895f,
+  0.999769405351215280f, -0.021474080275469508f, 0.999752640870248840f,
+  -0.022240887414024961f,
+  0.999735288260561680f, -0.023007681468839369f, 0.999717347532362190f,
+  -0.023774461988827555f,
+  0.999698818696204250f, -0.024541228522912288f, 0.999679701762987930f,
+  -0.025307980620024571f,
+  0.999659996743959220f, -0.026074717829103901f, 0.999639703650710200f,
+  -0.026841439699098531f,
+  0.999618822495178640f, -0.027608145778965740f, 0.999597353289648380f,
+  -0.028374835617672099f,
+  0.999575296046749220f, -0.029141508764193722f, 0.999552650779456990f,
+  -0.029908164767516555f,
+  0.999529417501093140f, -0.030674803176636626f, 0.999505596225325310f,
+  -0.031441423540560301f,
+  0.999481186966166950f, -0.032208025408304586f, 0.999456189737977340f,
+  -0.032974608328897335f,
+  0.999430604555461730f, -0.033741171851377580f, 0.999404431433671300f,
+  -0.034507715524795750f,
+  0.999377670388002850f, -0.035274238898213947f, 0.999350321434199440f,
+  -0.036040741520706229f,
+  0.999322384588349540f, -0.036807222941358832f, 0.999293859866887790f,
+  -0.037573682709270494f,
+  0.999264747286594420f, -0.038340120373552694f, 0.999235046864595850f,
+  -0.039106535483329888f,
+  0.999204758618363890f, -0.039872927587739811f, 0.999173882565716380f,
+  -0.040639296235933736f,
+  0.999142418724816910f, -0.041405640977076739f, 0.999110367114174890f,
+  -0.042171961360347947f,
+  0.999077727752645360f, -0.042938256934940820f, 0.999044500659429290f,
+  -0.043704527250063421f,
+  0.999010685854073380f, -0.044470771854938668f, 0.998976283356469820f,
+  -0.045236990298804590f,
+  0.998941293186856870f, -0.046003182130914623f, 0.998905715365818290f,
+  -0.046769346900537863f,
+  0.998869549914283560f, -0.047535484156959303f, 0.998832796853527990f,
+  -0.048301593449480144f,
+  0.998795456205172410f, -0.049067674327418015f, 0.998757527991183340f,
+  -0.049833726340107277f,
+  0.998719012233872940f, -0.050599749036899282f, 0.998679908955899090f,
+  -0.051365741967162593f,
+  0.998640218180265270f, -0.052131704680283324f, 0.998599939930320370f,
+  -0.052897636725665324f,
+  0.998559074229759310f, -0.053663537652730520f, 0.998517621102622210f,
+  -0.054429407010919133f,
+  0.998475580573294770f, -0.055195244349689934f, 0.998432952666508440f,
+  -0.055961049218520569f,
+  0.998389737407340160f, -0.056726821166907748f, 0.998345934821212370f,
+  -0.057492559744367566f,
+  0.998301544933892890f, -0.058258264500435752f, 0.998256567771495180f,
+  -0.059023934984667931f,
+  0.998211003360478190f, -0.059789570746639868f, 0.998164851727646240f,
+  -0.060555171335947788f,
+  0.998118112900149180f, -0.061320736302208578f, 0.998070786905482340f,
+  -0.062086265195060088f,
+  0.998022873771486240f, -0.062851757564161406f, 0.997974373526346990f,
+  -0.063617212959193106f,
+  0.997925286198596000f, -0.064382630929857465f, 0.997875611817110150f,
+  -0.065148011025878833f,
+  0.997825350411111640f, -0.065913352797003805f, 0.997774502010167820f,
+  -0.066678655793001557f,
+  0.997723066644191640f, -0.067443919563664051f, 0.997671044343441000f,
+  -0.068209143658806329f,
+  0.997618435138519550f, -0.068974327628266746f, 0.997565239060375750f,
+  -0.069739471021907307f,
+  0.997511456140303450f, -0.070504573389613856f, 0.997457086409941910f,
+  -0.071269634281296401f,
+  0.997402129901275300f, -0.072034653246889332f, 0.997346586646633230f,
+  -0.072799629836351673f,
+  0.997290456678690210f, -0.073564563599667426f, 0.997233740030466280f,
+  -0.074329454086845756f,
+  0.997176436735326190f, -0.075094300847921305f, 0.997118546826979980f,
+  -0.075859103432954447f,
+  0.997060070339482960f, -0.076623861392031492f, 0.997001007307235290f,
+  -0.077388574275265049f,
+  0.996941357764982160f, -0.078153241632794232f, 0.996881121747813850f,
+  -0.078917863014784942f,
+  0.996820299291165670f, -0.079682437971430126f, 0.996758890430818000f,
+  -0.080446966052950014f,
+  0.996696895202896060f, -0.081211446809592441f, 0.996634313643869900f,
+  -0.081975879791633066f,
+  0.996571145790554840f, -0.082740264549375692f, 0.996507391680110820f,
+  -0.083504600633152432f,
+  0.996443051350042630f, -0.084268887593324071f, 0.996378124838200210f,
+  -0.085033124980280275f,
+  0.996312612182778000f, -0.085797312344439894f, 0.996246513422315520f,
+  -0.086561449236251170f,
+  0.996179828595696980f, -0.087325535206192059f, 0.996112557742151130f,
+  -0.088089569804770507f,
+  0.996044700901251970f, -0.088853552582524600f, 0.995976258112917790f,
+  -0.089617483090022959f,
+  0.995907229417411720f, -0.090381360877864983f, 0.995837614855341610f,
+  -0.091145185496681005f,
+  0.995767414467659820f, -0.091908956497132724f, 0.995696628295663520f,
+  -0.092672673429913310f,
+  0.995625256380994310f, -0.093436335845747787f, 0.995553298765638470f,
+  -0.094199943295393204f,
+  0.995480755491926940f, -0.094963495329638992f, 0.995407626602534900f,
+  -0.095726991499307162f,
+  0.995333912140482280f, -0.096490431355252593f, 0.995259612149133390f,
+  -0.097253814448363271f,
+  0.995184726672196930f, -0.098017140329560604f, 0.995109255753726110f,
+  -0.098780408549799623f,
+  0.995033199438118630f, -0.099543618660069319f, 0.994956557770116380f,
+  -0.100306770211392860f,
+  0.994879330794805620f, -0.101069862754827820f, 0.994801518557617110f,
+  -0.101832895841466530f,
+  0.994723121104325700f, -0.102595869022436280f, 0.994644138481050710f,
+  -0.103358781848899610f,
+  0.994564570734255420f, -0.104121633872054590f, 0.994484417910747600f,
+  -0.104884424643134970f,
+  0.994403680057679100f, -0.105647153713410620f, 0.994322357222545810f,
+  -0.106409820634187680f,
+  0.994240449453187900f, -0.107172424956808840f, 0.994157956797789730f,
+  -0.107934966232653650f,
+  0.994074879304879370f, -0.108697444013138720f, 0.993991217023329380f,
+  -0.109459857849717980f,
+  0.993906970002356060f, -0.110222207293883060f, 0.993822138291519660f,
+  -0.110984491897163390f,
+  0.993736721940724600f, -0.111746711211126590f, 0.993650721000219120f,
+  -0.112508864787378690f,
+  0.993564135520595300f, -0.113270952177564350f, 0.993476965552789190f,
+  -0.114032972933367200f,
+  0.993389211148080650f, -0.114794926606510080f, 0.993300872358093280f,
+  -0.115556812748755260f,
+  0.993211949234794500f, -0.116318630911904750f, 0.993122441830495580f,
+  -0.117080380647800590f,
+  0.993032350197851410f, -0.117842061508324980f, 0.992941674389860470f,
+  -0.118603673045400720f,
+  0.992850414459865100f, -0.119365214810991350f, 0.992758570461551140f,
+  -0.120126686357101500f,
+  0.992666142448948020f, -0.120888087235777080f, 0.992573130476428810f,
+  -0.121649416999105530f,
+  0.992479534598709970f, -0.122410675199216200f, 0.992385354870851670f,
+  -0.123171861388280480f,
+  0.992290591348257370f, -0.123932975118512160f, 0.992195244086673920f,
+  -0.124694015942167640f,
+  0.992099313142191800f, -0.125454983411546230f, 0.992002798571244520f,
+  -0.126215877078990350f,
+  0.991905700430609330f, -0.126976696496885870f, 0.991808018777406430f,
+  -0.127737441217662310f,
+  0.991709753669099530f, -0.128498110793793170f, 0.991610905163495370f,
+  -0.129258704777796140f,
+  0.991511473318743900f, -0.130019222722233350f, 0.991411458193338540f,
+  -0.130779664179711710f,
+  0.991310859846115440f, -0.131540028702883120f, 0.991209678336254060f,
+  -0.132300315844444650f,
+  0.991107913723276890f, -0.133060525157139060f, 0.991005566067049370f,
+  -0.133820656193754720f,
+  0.990902635427780010f, -0.134580708507126170f, 0.990799121866020370f,
+  -0.135340681650134210f,
+  0.990695025442664630f, -0.136100575175706200f, 0.990590346218950150f,
+  -0.136860388636816380f,
+  0.990485084256457090f, -0.137620121586486040f, 0.990379239617108160f,
+  -0.138379773577783890f,
+  0.990272812363169110f, -0.139139344163826200f, 0.990165802557248400f,
+  -0.139898832897777210f,
+  0.990058210262297120f, -0.140658239332849210f, 0.989950035541608990f,
+  -0.141417563022303020f,
+  0.989841278458820530f, -0.142176803519448030f, 0.989731939077910570f,
+  -0.142935960377642670f,
+  0.989622017463200890f, -0.143695033150294470f, 0.989511513679355190f,
+  -0.144454021390860470f,
+  0.989400427791380380f, -0.145212924652847460f, 0.989288759864625170f,
+  -0.145971742489812210f,
+  0.989176509964781010f, -0.146730474455361750f, 0.989063678157881540f,
+  -0.147489120103153570f,
+  0.988950264510302990f, -0.148247678986896030f, 0.988836269088763540f,
+  -0.149006150660348450f,
+  0.988721691960323780f, -0.149764534677321510f, 0.988606533192386450f,
+  -0.150522830591677400f,
+  0.988490792852696590f, -0.151281037957330220f, 0.988374471009341280f,
+  -0.152039156328246050f,
+  0.988257567730749460f, -0.152797185258443440f, 0.988140083085692570f,
+  -0.153555124301993450f,
+  0.988022017143283530f, -0.154312973013020100f, 0.987903369972977790f,
+  -0.155070730945700510f,
+  0.987784141644572180f, -0.155828397654265230f, 0.987664332228205710f,
+  -0.156585972692998430f,
+  0.987543941794359230f, -0.157343455616238250f, 0.987422970413855410f,
+  -0.158100845978376980f,
+  0.987301418157858430f, -0.158858143333861450f, 0.987179285097874340f,
+  -0.159615347237193060f,
+  0.987056571305750970f, -0.160372457242928280f, 0.986933276853677710f,
+  -0.161129472905678810f,
+  0.986809401814185530f, -0.161886393780111830f, 0.986684946260146690f,
+  -0.162643219420950310f,
+  0.986559910264775410f, -0.163399949382973230f, 0.986434293901627180f,
+  -0.164156583221015810f,
+  0.986308097244598670f, -0.164913120489969890f, 0.986181320367928270f,
+  -0.165669560744784120f,
+  0.986053963346195440f, -0.166425903540464100f, 0.985926026254321130f,
+  -0.167182148432072940f,
+  0.985797509167567480f, -0.167938294974731170f, 0.985668412161537550f,
+  -0.168694342723617330f,
+  0.985538735312176060f, -0.169450291233967960f, 0.985408478695768420f,
+  -0.170206140061078070f,
+  0.985277642388941220f, -0.170961888760301220f, 0.985146226468662230f,
+  -0.171717536887049970f,
+  0.985014231012239840f, -0.172473083996795950f, 0.984881656097323700f,
+  -0.173228529645070320f,
+  0.984748501801904210f, -0.173983873387463820f, 0.984614768204312600f,
+  -0.174739114779627200f,
+  0.984480455383220930f, -0.175494253377271430f, 0.984345563417641900f,
+  -0.176249288736167880f,
+  0.984210092386929030f, -0.177004220412148750f, 0.984074042370776450f,
+  -0.177759047961107170f,
+  0.983937413449218920f, -0.178513770938997510f, 0.983800205702631600f,
+  -0.179268388901835750f,
+  0.983662419211730250f, -0.180022901405699510f, 0.983524054057571260f,
+  -0.180777308006728590f,
+  0.983385110321551180f, -0.181531608261124970f, 0.983245588085407070f,
+  -0.182285801725153300f,
+  0.983105487431216290f, -0.183039887955140950f, 0.982964808441396440f,
+  -0.183793866507478450f,
+  0.982823551198705240f, -0.184547736938619620f, 0.982681715786240860f,
+  -0.185301498805081900f,
+  0.982539302287441240f, -0.186055151663446630f, 0.982396310786084690f,
+  -0.186808695070359270f,
+  0.982252741366289370f, -0.187562128582529600f, 0.982108594112513610f,
+  -0.188315451756732120f,
+  0.981963869109555240f, -0.189068664149806190f, 0.981818566442552500f,
+  -0.189821765318656410f,
+  0.981672686196983110f, -0.190574754820252740f, 0.981526228458664770f,
+  -0.191327632211630900f,
+  0.981379193313754560f, -0.192080397049892440f, 0.981231580848749730f,
+  -0.192833048892205230f,
+  0.981083391150486710f, -0.193585587295803610f, 0.980934624306141640f,
+  -0.194338011817988600f,
+  0.980785280403230430f, -0.195090322016128250f, 0.980635359529608120f,
+  -0.195842517447657850f,
+  0.980484861773469380f, -0.196594597670080220f, 0.980333787223347960f,
+  -0.197346562240965920f,
+  0.980182135968117430f, -0.198098410717953560f, 0.980029908096990090f,
+  -0.198850142658750090f,
+  0.979877103699517640f, -0.199601757621130970f, 0.979723722865591170f,
+  -0.200353255162940450f,
+  0.979569765685440520f, -0.201104634842091900f, 0.979415232249634780f,
+  -0.201855896216568050f,
+  0.979260122649082020f, -0.202607038844421130f, 0.979104436975029250f,
+  -0.203358062283773320f,
+  0.978948175319062200f, -0.204108966092816870f, 0.978791337773105670f,
+  -0.204859749829814420f,
+  0.978633924429423210f, -0.205610413053099240f, 0.978475935380616830f,
+  -0.206360955321075510f,
+  0.978317370719627650f, -0.207111376192218560f, 0.978158230539735050f,
+  -0.207861675225075070f,
+  0.977998514934557140f, -0.208611851978263490f, 0.977838223998050430f,
+  -0.209361906010474160f,
+  0.977677357824509930f, -0.210111836880469610f, 0.977515916508569280f,
+  -0.210861644147084860f,
+  0.977353900145199960f, -0.211611327369227550f, 0.977191308829712280f,
+  -0.212360886105878420f,
+  0.977028142657754390f, -0.213110319916091360f, 0.976864401725312640f,
+  -0.213859628358993750f,
+  0.976700086128711840f, -0.214608810993786760f, 0.976535195964614470f,
+  -0.215357867379745550f,
+  0.976369731330021140f, -0.216106797076219520f, 0.976203692322270560f,
+  -0.216855599642632620f,
+  0.976037079039039020f, -0.217604274638483640f, 0.975869891578341030f,
+  -0.218352821623346320f,
+  0.975702130038528570f, -0.219101240156869800f, 0.975533794518291360f,
+  -0.219849529798778700f,
+  0.975364885116656980f, -0.220597690108873510f, 0.975195401932990370f,
+  -0.221345720647030810f,
+  0.975025345066994120f, -0.222093620973203510f, 0.974854714618708430f,
+  -0.222841390647421120f,
+  0.974683510688510670f, -0.223589029229789990f, 0.974511733377115720f,
+  -0.224336536280493600f,
+  0.974339382785575860f, -0.225083911359792830f, 0.974166459015280320f,
+  -0.225831154028026170f,
+  0.973992962167955830f, -0.226578263845610000f, 0.973818892345666100f,
+  -0.227325240373038860f,
+  0.973644249650811980f, -0.228072083170885730f, 0.973469034186131070f,
+  -0.228818791799802220f,
+  0.973293246054698250f, -0.229565365820518870f, 0.973116885359925130f,
+  -0.230311804793845440f,
+  0.972939952205560180f, -0.231058108280671110f, 0.972762446695688570f,
+  -0.231804275841964780f,
+  0.972584368934732210f, -0.232550307038775240f, 0.972405719027449770f,
+  -0.233296201432231590f,
+  0.972226497078936270f, -0.234041958583543430f, 0.972046703194623500f,
+  -0.234787578054000970f,
+  0.971866337480279400f, -0.235533059404975490f, 0.971685400042008540f,
+  -0.236278402197919570f,
+  0.971503890986251780f, -0.237023605994367200f, 0.971321810419786160f,
+  -0.237768670355934190f,
+  0.971139158449725090f, -0.238513594844318420f, 0.970955935183517970f,
+  -0.239258379021299980f,
+  0.970772140728950350f, -0.240003022448741500f, 0.970587775194143630f,
+  -0.240747524688588430f,
+  0.970402838687555500f, -0.241491885302869330f, 0.970217331317979160f,
+  -0.242236103853696010f,
+  0.970031253194543970f, -0.242980179903263870f, 0.969844604426714830f,
+  -0.243724113013852160f,
+  0.969657385124292450f, -0.244467902747824150f, 0.969469595397413060f,
+  -0.245211548667627540f,
+  0.969281235356548530f, -0.245955050335794590f, 0.969092305112506210f,
+  -0.246698407314942410f,
+  0.968902804776428870f, -0.247441619167773270f, 0.968712734459794780f,
+  -0.248184685457074780f,
+  0.968522094274417380f, -0.248927605745720150f, 0.968330884332445190f,
+  -0.249670379596668570f,
+  0.968139104746362440f, -0.250413006572965220f, 0.967946755628987800f,
+  -0.251155486237741920f,
+  0.967753837093475510f, -0.251897818154216970f, 0.967560349253314360f,
+  -0.252640001885695520f,
+  0.967366292222328510f, -0.253382036995570160f, 0.967171666114676640f,
+  -0.254123923047320620f,
+  0.966976471044852070f, -0.254865659604514570f, 0.966780707127683270f,
+  -0.255607246230807380f,
+  0.966584374478333120f, -0.256348682489942910f, 0.966387473212298900f,
+  -0.257089967945753120f,
+  0.966190003445412500f, -0.257831102162158990f, 0.965991965293840570f,
+  -0.258572084703170340f,
+  0.965793358874083680f, -0.259312915132886230f, 0.965594184302976830f,
+  -0.260053593015495190f,
+  0.965394441697689400f, -0.260794117915275510f, 0.965194131175724720f,
+  -0.261534489396595520f,
+  0.964993252854920320f, -0.262274707023913590f, 0.964791806853447900f,
+  -0.263014770361779000f,
+  0.964589793289812760f, -0.263754678974831350f, 0.964387212282854290f,
+  -0.264494432427801630f,
+  0.964184063951745830f, -0.265234030285511790f, 0.963980348415994110f,
+  -0.265973472112875590f,
+  0.963776065795439840f, -0.266712757474898370f, 0.963571216210257320f,
+  -0.267451885936677620f,
+  0.963365799780954050f, -0.268190857063403180f, 0.963159816628371360f,
+  -0.268929670420357260f,
+  0.962953266873683880f, -0.269668325572915090f, 0.962746150638399410f,
+  -0.270406822086544820f,
+  0.962538468044359160f, -0.271145159526808010f, 0.962330219213737400f,
+  -0.271883337459359720f,
+  0.962121404269041580f, -0.272621355449948980f, 0.961912023333112210f,
+  -0.273359213064418680f,
+  0.961702076529122540f, -0.274096909868706380f, 0.961491563980579000f,
+  -0.274834445428843940f,
+  0.961280485811320640f, -0.275571819310958140f, 0.961068842145519350f,
+  -0.276309031081271080f,
+  0.960856633107679660f, -0.277046080306099900f, 0.960643858822638590f,
+  -0.277782966551857690f,
+  0.960430519415565790f, -0.278519689385053060f, 0.960216615011963430f,
+  -0.279256248372291180f,
+  0.960002145737665960f, -0.279992643080273220f, 0.959787111718839900f,
+  -0.280728873075797190f,
+  0.959571513081984520f, -0.281464937925757940f, 0.959355349953930790f,
+  -0.282200837197147560f,
+  0.959138622461841890f, -0.282936570457055390f, 0.958921330733213170f,
+  -0.283672137272668430f,
+  0.958703474895871600f, -0.284407537211271880f, 0.958485055077976100f,
+  -0.285142769840248670f,
+  0.958266071408017670f, -0.285877834727080620f, 0.958046524014818600f,
+  -0.286612731439347790f,
+  0.957826413027532910f, -0.287347459544729510f, 0.957605738575646350f,
+  -0.288082018611004130f,
+  0.957384500788975860f, -0.288816408206049480f, 0.957162699797670210f,
+  -0.289550627897843030f,
+  0.956940335732208820f, -0.290284677254462330f, 0.956717408723403050f,
+  -0.291018555844085090f,
+  0.956493918902395100f, -0.291752263234989260f, 0.956269866400658030f,
+  -0.292485798995553880f,
+  0.956045251349996410f, -0.293219162694258630f, 0.955820073882545420f,
+  -0.293952353899684660f,
+  0.955594334130771110f, -0.294685372180514330f, 0.955368032227470350f,
+  -0.295418217105532010f,
+  0.955141168305770780f, -0.296150888243623790f, 0.954913742499130520f,
+  -0.296883385163778270f,
+  0.954685754941338340f, -0.297615707435086200f, 0.954457205766513490f,
+  -0.298347854626741400f,
+  0.954228095109105670f, -0.299079826308040480f, 0.953998423103894490f,
+  -0.299811622048383350f,
+  0.953768189885990330f, -0.300543241417273450f, 0.953537395590833280f,
+  -0.301274683984317950f,
+  0.953306040354193860f, -0.302005949319228080f, 0.953074124312172200f,
+  -0.302737036991819140f,
+  0.952841647601198720f, -0.303467946572011320f, 0.952608610358033350f,
+  -0.304198677629829110f,
+  0.952375012719765880f, -0.304929229735402370f, 0.952140854823815830f,
+  -0.305659602458966120f,
+  0.951906136807932350f, -0.306389795370860920f, 0.951670858810193860f,
+  -0.307119808041533100f,
+  0.951435020969008340f, -0.307849640041534870f, 0.951198623423113230f,
+  -0.308579290941525090f,
+  0.950961666311575080f, -0.309308760312268730f, 0.950724149773789610f,
+  -0.310038047724637890f,
+  0.950486073949481700f, -0.310767152749611470f, 0.950247438978705230f,
+  -0.311496074958275910f,
+  0.950008245001843000f, -0.312224813921824880f, 0.949768492159606680f,
+  -0.312953369211560200f,
+  0.949528180593036670f, -0.313681740398891520f, 0.949287310443502120f,
+  -0.314409927055336660f,
+  0.949045881852700560f, -0.315137928752522440f, 0.948803894962658490f,
+  -0.315865745062183960f,
+  0.948561349915730270f, -0.316593375556165850f, 0.948318246854599090f,
+  -0.317320819806421740f,
+  0.948074585922276230f, -0.318048077385014950f, 0.947830367262101010f,
+  -0.318775147864118480f,
+  0.947585591017741090f, -0.319502030816015690f, 0.947340257333192050f,
+  -0.320228725813099860f,
+  0.947094366352777220f, -0.320955232427875210f, 0.946847918221148000f,
+  -0.321681550232956580f,
+  0.946600913083283530f, -0.322407678801069850f, 0.946353351084490590f,
+  -0.323133617705052330f,
+  0.946105232370403450f, -0.323859366517852850f, 0.945856557086983910f,
+  -0.324584924812532150f,
+  0.945607325380521280f, -0.325310292162262930f, 0.945357537397632290f,
+  -0.326035468140330240f,
+  0.945107193285260610f, -0.326760452320131730f, 0.944856293190677210f,
+  -0.327485244275178000f,
+  0.944604837261480260f, -0.328209843579092500f, 0.944352825645594750f,
+  -0.328934249805612200f,
+  0.944100258491272660f, -0.329658462528587490f, 0.943847135947092690f,
+  -0.330382481321982780f,
+  0.943593458161960390f, -0.331106305759876430f, 0.943339225285107720f,
+  -0.331829935416461110f,
+  0.943084437466093490f, -0.332553369866044220f, 0.942829094854802710f,
+  -0.333276608683047930f,
+  0.942573197601446870f, -0.333999651442009380f, 0.942316745856563780f,
+  -0.334722497717581220f,
+  0.942059739771017310f, -0.335445147084531600f, 0.941802179495997650f,
+  -0.336167599117744520f,
+  0.941544065183020810f, -0.336889853392220050f, 0.941285396983928660f,
+  -0.337611909483074620f,
+  0.941026175050889260f, -0.338333766965541130f, 0.940766399536396070f,
+  -0.339055425414969640f,
+  0.940506070593268300f, -0.339776884406826850f, 0.940245188374650880f,
+  -0.340498143516697160f,
+  0.939983753034014050f, -0.341219202320282360f, 0.939721764725153340f,
+  -0.341940060393402190f,
+  0.939459223602189920f, -0.342660717311994380f, 0.939196129819569900f,
+  -0.343381172652115040f,
+  0.938932483532064600f, -0.344101425989938810f, 0.938668284894770170f,
+  -0.344821476901759290f,
+  0.938403534063108060f, -0.345541324963989090f, 0.938138231192824360f,
+  -0.346260969753160010f,
+  0.937872376439989890f, -0.346980410845923680f, 0.937605969960999990f,
+  -0.347699647819051380f,
+  0.937339011912574960f, -0.348418680249434560f, 0.937071502451759190f,
+  -0.349137507714084970f,
+  0.936803441735921560f, -0.349856129790134920f, 0.936534829922755500f,
+  -0.350574546054837510f,
+  0.936265667170278260f, -0.351292756085567090f, 0.935995953636831410f,
+  -0.352010759459819080f,
+  0.935725689481080370f, -0.352728555755210730f, 0.935454874862014620f,
+  -0.353446144549480810f,
+  0.935183509938947610f, -0.354163525420490340f, 0.934911594871516090f,
+  -0.354880697946222790f,
+  0.934639129819680780f, -0.355597661704783850f, 0.934366114943725790f,
+  -0.356314416274402410f,
+  0.934092550404258980f, -0.357030961233429980f, 0.933818436362210960f,
+  -0.357747296160341900f,
+  0.933543772978836170f, -0.358463420633736540f, 0.933268560415712050f,
+  -0.359179334232336500f,
+  0.932992798834738960f, -0.359895036534988110f, 0.932716488398140250f,
+  -0.360610527120662270f,
+  0.932439629268462360f, -0.361325805568454280f, 0.932162221608574430f,
+  -0.362040871457584180f,
+  0.931884265581668150f, -0.362755724367397230f, 0.931605761351257830f,
+  -0.363470363877363760f,
+  0.931326709081180430f, -0.364184789567079890f, 0.931047108935595280f,
+  -0.364899001016267320f,
+  0.930766961078983710f, -0.365612997804773850f, 0.930486265676149780f,
+  -0.366326779512573590f,
+  0.930205022892219070f, -0.367040345719767180f, 0.929923232892639670f,
+  -0.367753696006581980f,
+  0.929640895843181330f, -0.368466829953372320f, 0.929358011909935500f,
+  -0.369179747140620020f,
+  0.929074581259315860f, -0.369892447148934100f, 0.928790604058057020f,
+  -0.370604929559051670f,
+  0.928506080473215590f, -0.371317193951837540f, 0.928221010672169440f,
+  -0.372029239908285010f,
+  0.927935394822617890f, -0.372741067009515760f, 0.927649233092581180f,
+  -0.373452674836780300f,
+  0.927362525650401110f, -0.374164062971457930f, 0.927075272664740100f,
+  -0.374875230995057540f,
+  0.926787474304581750f, -0.375586178489217220f, 0.926499130739230510f,
+  -0.376296905035704790f,
+  0.926210242138311380f, -0.377007410216418260f, 0.925920808671770070f,
+  -0.377717693613385640f,
+  0.925630830509872720f, -0.378427754808765560f, 0.925340307823206310f,
+  -0.379137593384847320f,
+  0.925049240782677580f, -0.379847208924051160f, 0.924757629559513910f,
+  -0.380556601008928520f,
+  0.924465474325262600f, -0.381265769222162380f, 0.924172775251791200f,
+  -0.381974713146567220f,
+  0.923879532511286740f, -0.382683432365089780f, 0.923585746276256670f,
+  -0.383391926460808660f,
+  0.923291416719527640f, -0.384100195016935040f, 0.922996544014246250f,
+  -0.384808237616812880f,
+  0.922701128333878630f, -0.385516053843918850f, 0.922405169852209880f,
+  -0.386223643281862980f,
+  0.922108668743345180f, -0.386931005514388580f, 0.921811625181708120f,
+  -0.387638140125372730f,
+  0.921514039342042010f, -0.388345046698826250f, 0.921215911399408730f,
+  -0.389051724818894380f,
+  0.920917241529189520f, -0.389758174069856410f, 0.920618029907083970f,
+  -0.390464394036126590f,
+  0.920318276709110590f, -0.391170384302253870f, 0.920017982111606570f,
+  -0.391876144452922350f,
+  0.919717146291227360f, -0.392581674072951470f, 0.919415769424947070f,
+  -0.393286972747296400f,
+  0.919113851690057770f, -0.393992040061048100f, 0.918811393264170050f,
+  -0.394696875599433560f,
+  0.918508394325212250f, -0.395401478947816350f, 0.918204855051430900f,
+  -0.396105849691696270f,
+  0.917900775621390500f, -0.396809987416710310f, 0.917596156213972950f,
+  -0.397513891708632330f,
+  0.917290997008377910f, -0.398217562153373560f, 0.916985298184123000f,
+  -0.398920998336982910f,
+  0.916679059921042700f, -0.399624199845646790f, 0.916372282399289140f,
+  -0.400327166265690090f,
+  0.916064965799331720f, -0.401029897183575620f, 0.915757110301956720f,
+  -0.401732392185905010f,
+  0.915448716088267830f, -0.402434650859418430f, 0.915139783339685260f,
+  -0.403136672790995300f,
+  0.914830312237946200f, -0.403838457567654070f, 0.914520302965104450f,
+  -0.404540004776553000f,
+  0.914209755703530690f, -0.405241314004989860f, 0.913898670635911680f,
+  -0.405942384840402510f,
+  0.913587047945250810f, -0.406643216870369030f, 0.913274887814867760f,
+  -0.407343809682607970f,
+  0.912962190428398210f, -0.408044162864978690f, 0.912648955969793900f,
+  -0.408744276005481360f,
+  0.912335184623322750f, -0.409444148692257590f, 0.912020876573568340f,
+  -0.410143780513590240f,
+  0.911706032005429880f, -0.410843171057903910f, 0.911390651104122430f,
+  -0.411542319913765220f,
+  0.911074734055176360f, -0.412241226669882890f, 0.910758281044437570f,
+  -0.412939890915108080f,
+  0.910441292258067250f, -0.413638312238434500f, 0.910123767882541680f,
+  -0.414336490228999100f,
+  0.909805708104652220f, -0.415034424476081630f, 0.909487113111505430f,
+  -0.415732114569105360f,
+  0.909167983090522380f, -0.416429560097637150f, 0.908848318229439120f,
+  -0.417126760651387870f,
+  0.908528118716306120f, -0.417823715820212270f, 0.908207384739488700f,
+  -0.418520425194109700f,
+  0.907886116487666260f, -0.419216888363223910f, 0.907564314149832630f,
+  -0.419913104917843620f,
+  0.907241977915295820f, -0.420609074448402510f, 0.906919107973678140f,
+  -0.421304796545479640f,
+  0.906595704514915330f, -0.422000270799799680f, 0.906271767729257660f,
+  -0.422695496802232950f,
+  0.905947297807268460f, -0.423390474143796050f, 0.905622294939825270f,
+  -0.424085202415651560f,
+  0.905296759318118820f, -0.424779681209108810f, 0.904970691133653250f,
+  -0.425473910115623800f,
+  0.904644090578246240f, -0.426167888726799620f, 0.904316957844028320f,
+  -0.426861616634386430f,
+  0.903989293123443340f, -0.427555093430282080f, 0.903661096609247980f,
+  -0.428248318706531960f,
+  0.903332368494511820f, -0.428941292055329490f, 0.903003108972617150f,
+  -0.429634013069016380f,
+  0.902673318237258830f, -0.430326481340082610f, 0.902342996482444200f,
+  -0.431018696461167030f,
+  0.902012143902493180f, -0.431710658025057260f, 0.901680760692037730f,
+  -0.432402365624690140f,
+  0.901348847046022030f, -0.433093818853151960f, 0.901016403159702330f,
+  -0.433785017303678520f,
+  0.900683429228646970f, -0.434475960569655650f, 0.900349925448735600f,
+  -0.435166648244619260f,
+  0.900015892016160280f, -0.435857079922255470f, 0.899681329127423930f,
+  -0.436547255196401200f,
+  0.899346236979341570f, -0.437237173661044090f, 0.899010615769039070f,
+  -0.437926834910322860f,
+  0.898674465693953820f, -0.438616238538527660f, 0.898337786951834310f,
+  -0.439305384140099950f,
+  0.898000579740739880f, -0.439994271309633260f, 0.897662844259040860f,
+  -0.440682899641872900f,
+  0.897324580705418320f, -0.441371268731716670f, 0.896985789278863970f,
+  -0.442059378174214700f,
+  0.896646470178680150f, -0.442747227564570020f, 0.896306623604479550f,
+  -0.443434816498138480f,
+  0.895966249756185220f, -0.444122144570429200f, 0.895625348834030110f,
+  -0.444809211377104880f,
+  0.895283921038557580f, -0.445496016513981740f, 0.894941966570620750f,
+  -0.446182559577030070f,
+  0.894599485631382700f, -0.446868840162374160f, 0.894256478422316040f,
+  -0.447554857866293010f,
+  0.893912945145203250f, -0.448240612285219890f, 0.893568886002135910f,
+  -0.448926103015743260f,
+  0.893224301195515320f, -0.449611329654606540f, 0.892879190928051680f,
+  -0.450296291798708610f,
+  0.892533555402764580f, -0.450980989045103860f, 0.892187394822982480f,
+  -0.451665420991002490f,
+  0.891840709392342720f, -0.452349587233770890f, 0.891493499314791380f,
+  -0.453033487370931580f,
+  0.891145764794583180f, -0.453717121000163870f, 0.890797506036281490f,
+  -0.454400487719303580f,
+  0.890448723244757880f, -0.455083587126343840f, 0.890099416625192320f,
+  -0.455766418819434640f,
+  0.889749586383072780f, -0.456448982396883920f, 0.889399232724195520f,
+  -0.457131277457156980f,
+  0.889048355854664570f, -0.457813303598877170f, 0.888696955980891600f,
+  -0.458495060420826270f,
+  0.888345033309596350f, -0.459176547521944090f, 0.887992588047805560f,
+  -0.459857764501329540f,
+  0.887639620402853930f, -0.460538710958240010f, 0.887286130582383150f,
+  -0.461219386492092380f,
+  0.886932118794342190f, -0.461899790702462730f, 0.886577585246987040f,
+  -0.462579923189086810f,
+  0.886222530148880640f, -0.463259783551860150f, 0.885866953708892790f,
+  -0.463939371390838520f,
+  0.885510856136199950f, -0.464618686306237820f, 0.885154237640285110f,
+  -0.465297727898434600f,
+  0.884797098430937790f, -0.465976495767966180f, 0.884439438718253810f,
+  -0.466654989515530920f,
+  0.884081258712634990f, -0.467333208741988420f, 0.883722558624789660f,
+  -0.468011153048359830f,
+  0.883363338665731580f, -0.468688822035827900f, 0.883003599046780830f,
+  -0.469366215305737520f,
+  0.882643339979562790f, -0.470043332459595620f, 0.882282561676008710f,
+  -0.470720173099071600f,
+  0.881921264348355050f, -0.471396736825997640f, 0.881559448209143780f,
+  -0.472073023242368660f,
+  0.881197113471222090f, -0.472749031950342790f, 0.880834260347742040f,
+  -0.473424762552241530f,
+  0.880470889052160750f, -0.474100214650549970f, 0.880106999798240360f,
+  -0.474775387847917120f,
+  0.879742592800047410f, -0.475450281747155870f, 0.879377668271953290f,
+  -0.476124895951243580f,
+  0.879012226428633530f, -0.476799230063322090f, 0.878646267485068130f,
+  -0.477473283686698060f,
+  0.878279791656541580f, -0.478147056424843010f, 0.877912799158641840f,
+  -0.478820547881393890f,
+  0.877545290207261350f, -0.479493757660153010f, 0.877177265018595940f,
+  -0.480166685365088390f,
+  0.876808723809145650f, -0.480839330600333960f, 0.876439666795713610f,
+  -0.481511692970189860f,
+  0.876070094195406600f, -0.482183772079122720f, 0.875700006225634600f,
+  -0.482855567531765670f,
+  0.875329403104110890f, -0.483527078932918740f, 0.874958285048851650f,
+  -0.484198305887549030f,
+  0.874586652278176110f, -0.484869248000791060f, 0.874214505010706300f,
+  -0.485539904877946960f,
+  0.873841843465366860f, -0.486210276124486420f, 0.873468667861384880f,
+  -0.486880361346047340f,
+  0.873094978418290090f, -0.487550160148436000f, 0.872720775355914300f,
+  -0.488219672137626790f,
+  0.872346058894391540f, -0.488888896919763170f, 0.871970829254157810f,
+  -0.489557834101157440f,
+  0.871595086655950980f, -0.490226483288291160f, 0.871218831320811020f,
+  -0.490894844087815090f,
+  0.870842063470078980f, -0.491562916106549900f, 0.870464783325397670f,
+  -0.492230698951486020f,
+  0.870086991108711460f, -0.492898192229784040f, 0.869708687042265670f,
+  -0.493565395548774770f,
+  0.869329871348606840f, -0.494232308515959670f, 0.868950544250582380f,
+  -0.494898930739011260f,
+  0.868570705971340900f, -0.495565261825772540f, 0.868190356734331310f,
+  -0.496231301384258250f,
+  0.867809496763303320f, -0.496897049022654470f, 0.867428126282306920f,
+  -0.497562504349319150f,
+  0.867046245515692650f, -0.498227666972781870f, 0.866663854688111130f,
+  -0.498892536501744590f,
+  0.866280954024512990f, -0.499557112545081840f, 0.865897543750148820f,
+  -0.500221394711840680f,
+  0.865513624090569090f, -0.500885382611240710f, 0.865129195271623800f,
+  -0.501549075852675390f,
+  0.864744257519462380f, -0.502212474045710790f, 0.864358811060534030f,
+  -0.502875576800086990f,
+  0.863972856121586810f, -0.503538383725717580f, 0.863586392929668100f,
+  -0.504200894432690340f,
+  0.863199421712124160f, -0.504863108531267590f, 0.862811942696600330f,
+  -0.505525025631885390f,
+  0.862423956111040610f, -0.506186645345155230f, 0.862035462183687210f,
+  -0.506847967281863210f,
+  0.861646461143081300f, -0.507508991052970870f, 0.861256953218062170f,
+  -0.508169716269614600f,
+  0.860866938637767310f, -0.508830142543106990f, 0.860476417631632070f,
+  -0.509490269484936360f,
+  0.860085390429390140f, -0.510150096706766810f, 0.859693857261072610f,
+  -0.510809623820439040f,
+  0.859301818357008470f, -0.511468850437970300f, 0.858909273947823900f,
+  -0.512127776171554690f,
+  0.858516224264442740f, -0.512786400633562960f, 0.858122669538086140f,
+  -0.513444723436543460f,
+  0.857728610000272120f, -0.514102744193221660f, 0.857334045882815590f,
+  -0.514760462516501200f,
+  0.856938977417828760f, -0.515417878019462930f, 0.856543404837719960f,
+  -0.516074990315366630f,
+  0.856147328375194470f, -0.516731799017649870f, 0.855750748263253920f,
+  -0.517388303739929060f,
+  0.855353664735196030f, -0.518044504095999340f, 0.854956078024614930f,
+  -0.518700399699834950f,
+  0.854557988365400530f, -0.519355990165589640f, 0.854159395991738850f,
+  -0.520011275107596040f,
+  0.853760301138111410f, -0.520666254140367160f, 0.853360704039295430f,
+  -0.521320926878595660f,
+  0.852960604930363630f, -0.521975292937154390f, 0.852560004046684080f,
+  -0.522629351931096610f,
+  0.852158901623919830f, -0.523283103475656430f, 0.851757297898029120f,
+  -0.523936547186248600f,
+  0.851355193105265200f, -0.524589682678468950f, 0.850952587482175730f,
+  -0.525242509568094710f,
+  0.850549481265603480f, -0.525895027471084630f, 0.850145874692685210f,
+  -0.526547236003579440f,
+  0.849741768000852550f, -0.527199134781901280f, 0.849337161427830780f,
+  -0.527850723422555230f,
+  0.848932055211639610f, -0.528502001542228480f, 0.848526449590592650f,
+  -0.529152968757790610f,
+  0.848120344803297230f, -0.529803624686294610f, 0.847713741088654380f,
+  -0.530453968944976320f,
+  0.847306638685858320f, -0.531104001151255000f, 0.846899037834397240f,
+  -0.531753720922733320f,
+  0.846490938774052130f, -0.532403127877197900f, 0.846082341744897050f,
+  -0.533052221632619450f,
+  0.845673246987299070f, -0.533701001807152960f, 0.845263654741918220f,
+  -0.534349468019137520f,
+  0.844853565249707120f, -0.534997619887097150f, 0.844442978751910660f,
+  -0.535645457029741090f,
+  0.844031895490066410f, -0.536292979065963180f, 0.843620315706004150f,
+  -0.536940185614842910f,
+  0.843208239641845440f, -0.537587076295645390f, 0.842795667540004120f,
+  -0.538233650727821700f,
+  0.842382599643185850f, -0.538879908531008420f, 0.841969036194387680f,
+  -0.539525849325028890f,
+  0.841554977436898440f, -0.540171472729892850f, 0.841140423614298080f,
+  -0.540816778365796670f,
+  0.840725374970458070f, -0.541461765853123440f, 0.840309831749540770f,
+  -0.542106434812443920f,
+  0.839893794195999520f, -0.542750784864515890f, 0.839477262554578550f,
+  -0.543394815630284800f,
+  0.839060237070312740f, -0.544038526730883820f, 0.838642717988527300f,
+  -0.544681917787634530f,
+  0.838224705554838080f, -0.545324988422046460f, 0.837806200015150940f,
+  -0.545967738255817570f,
+  0.837387201615661940f, -0.546610166910834860f, 0.836967710602857020f,
+  -0.547252274009174090f,
+  0.836547727223512010f, -0.547894059173100190f, 0.836127251724692270f,
+  -0.548535522025067390f,
+  0.835706284353752600f, -0.549176662187719660f, 0.835284825358337370f,
+  -0.549817479283890910f,
+  0.834862874986380010f, -0.550457972936604810f, 0.834440433486103190f,
+  -0.551098142769075430f,
+  0.834017501106018130f, -0.551737988404707340f, 0.833594078094925140f,
+  -0.552377509467096070f,
+  0.833170164701913190f, -0.553016705580027470f, 0.832745761176359460f,
+  -0.553655576367479310f,
+  0.832320867767929680f, -0.554294121453620000f, 0.831895484726577590f,
+  -0.554932340462810370f,
+  0.831469612302545240f, -0.555570233019602180f, 0.831043250746362320f,
+  -0.556207798748739930f,
+  0.830616400308846310f, -0.556845037275160100f, 0.830189061241102370f,
+  -0.557481948223991550f,
+  0.829761233794523050f, -0.558118531220556100f, 0.829332918220788250f,
+  -0.558754785890368310f,
+  0.828904114771864870f, -0.559390711859136140f, 0.828474823700007130f,
+  -0.560026308752760380f,
+  0.828045045257755800f, -0.560661576197336030f, 0.827614779697938400f,
+  -0.561296513819151470f,
+  0.827184027273669130f, -0.561931121244689470f, 0.826752788238348520f,
+  -0.562565398100626560f,
+  0.826321062845663530f, -0.563199344013834090f, 0.825888851349586780f,
+  -0.563832958611378170f,
+  0.825456154004377550f, -0.564466241520519500f, 0.825022971064580220f,
+  -0.565099192368713980f,
+  0.824589302785025290f, -0.565731810783613120f, 0.824155149420828570f,
+  -0.566364096393063840f,
+  0.823720511227391430f, -0.566996048825108680f, 0.823285388460400110f,
+  -0.567627667707986230f,
+  0.822849781375826430f, -0.568258952670131490f, 0.822413690229926390f,
+  -0.568889903340175860f,
+  0.821977115279241550f, -0.569520519346947140f, 0.821540056780597610f,
+  -0.570150800319470300f,
+  0.821102514991104650f, -0.570780745886967260f, 0.820664490168157460f,
+  -0.571410355678857230f,
+  0.820225982569434690f, -0.572039629324757050f, 0.819786992452898990f,
+  -0.572668566454481160f,
+  0.819347520076796900f, -0.573297166698042200f, 0.818907565699658950f,
+  -0.573925429685650750f,
+  0.818467129580298660f, -0.574553355047715760f, 0.818026211977813440f,
+  -0.575180942414845080f,
+  0.817584813151583710f, -0.575808191417845340f, 0.817142933361272970f,
+  -0.576435101687721830f,
+  0.816700572866827850f, -0.577061672855679440f, 0.816257731928477390f,
+  -0.577687904553122800f,
+  0.815814410806733780f, -0.578313796411655590f, 0.815370609762391290f,
+  -0.578939348063081780f,
+  0.814926329056526620f, -0.579564559139405630f, 0.814481568950498610f,
+  -0.580189429272831680f,
+  0.814036329705948410f, -0.580813958095764530f, 0.813590611584798510f,
+  -0.581438145240810170f,
+  0.813144414849253590f, -0.582061990340775440f, 0.812697739761799490f,
+  -0.582685493028668460f,
+  0.812250586585203880f, -0.583308652937698290f, 0.811802955582515470f,
+  -0.583931469701276180f,
+  0.811354847017063730f, -0.584553942953015330f, 0.810906261152459670f,
+  -0.585176072326730410f,
+  0.810457198252594770f, -0.585797857456438860f, 0.810007658581641140f,
+  -0.586419297976360500f,
+  0.809557642404051260f, -0.587040393520917970f, 0.809107149984558240f,
+  -0.587661143724736660f,
+  0.808656181588174980f, -0.588281548222645220f, 0.808204737480194720f,
+  -0.588901606649675720f,
+  0.807752817926190360f, -0.589521318641063940f, 0.807300423192014450f,
+  -0.590140683832248820f,
+  0.806847553543799330f, -0.590759701858874160f, 0.806394209247956240f,
+  -0.591378372356787580f,
+  0.805940390571176280f, -0.591996694962040990f, 0.805486097780429230f,
+  -0.592614669310891130f,
+  0.805031331142963660f, -0.593232295039799800f, 0.804576090926307110f,
+  -0.593849571785433630f,
+  0.804120377398265810f, -0.594466499184664430f, 0.803664190826924090f,
+  -0.595083076874569960f,
+  0.803207531480644940f, -0.595699304492433360f, 0.802750399628069160f,
+  -0.596315181675743710f,
+  0.802292795538115720f, -0.596930708062196500f, 0.801834719479981310f,
+  -0.597545883289693160f,
+  0.801376171723140240f, -0.598160706996342270f, 0.800917152537344300f,
+  -0.598775178820458720f,
+  0.800457662192622820f, -0.599389298400564540f, 0.799997700959281910f,
+  -0.600003065375388940f,
+  0.799537269107905010f, -0.600616479383868970f, 0.799076366909352350f,
+  -0.601229540065148500f,
+  0.798614994634760820f, -0.601842247058580030f, 0.798153152555543750f,
+  -0.602454600003723750f,
+  0.797690840943391160f, -0.603066598540348160f, 0.797228060070268810f,
+  -0.603678242308430370f,
+  0.796764810208418830f, -0.604289530948155960f, 0.796301091630359110f,
+  -0.604900464099919820f,
+  0.795836904608883570f, -0.605511041404325550f, 0.795372249417061310f,
+  -0.606121262502186120f,
+  0.794907126328237010f, -0.606731127034524480f, 0.794441535616030590f,
+  -0.607340634642572930f,
+  0.793975477554337170f, -0.607949784967773630f, 0.793508952417326660f,
+  -0.608558577651779450f,
+  0.793041960479443640f, -0.609167012336453210f, 0.792574502015407690f,
+  -0.609775088663868430f,
+  0.792106577300212390f, -0.610382806276309480f, 0.791638186609125880f,
+  -0.610990164816271660f,
+  0.791169330217690200f, -0.611597163926461910f, 0.790700008401721610f,
+  -0.612203803249797950f,
+  0.790230221437310030f, -0.612810082429409710f, 0.789759969600819070f,
+  -0.613416001108638590f,
+  0.789289253168885650f, -0.614021558931038380f, 0.788818072418420280f,
+  -0.614626755540375050f,
+  0.788346427626606340f, -0.615231590580626820f, 0.787874319070900220f,
+  -0.615836063695985090f,
+  0.787401747029031430f, -0.616440174530853650f, 0.786928711779001810f,
+  -0.617043922729849760f,
+  0.786455213599085770f, -0.617647307937803870f, 0.785981252767830150f,
+  -0.618250329799760250f,
+  0.785506829564053930f, -0.618852987960976320f, 0.785031944266848080f,
+  -0.619455282066924020f,
+  0.784556597155575240f, -0.620057211763289100f, 0.784080788509869950f,
+  -0.620658776695972140f,
+  0.783604518609638200f, -0.621259976511087550f, 0.783127787735057310f,
+  -0.621860810854965360f,
+  0.782650596166575730f, -0.622461279374149970f, 0.782172944184913010f,
+  -0.623061381715401260f,
+  0.781694832071059390f, -0.623661117525694530f, 0.781216260106276090f,
+  -0.624260486452220650f,
+  0.780737228572094490f, -0.624859488142386340f, 0.780257737750316590f,
+  -0.625458122243814360f,
+  0.779777787923014550f, -0.626056388404343520f, 0.779297379372530300f,
+  -0.626654286272029350f,
+  0.778816512381475980f, -0.627251815495144080f, 0.778335187232733210f,
+  -0.627848975722176460f,
+  0.777853404209453150f, -0.628445766601832710f, 0.777371163595056310f,
+  -0.629042187783036000f,
+  0.776888465673232440f, -0.629638238914926980f, 0.776405310727940390f,
+  -0.630233919646864370f,
+  0.775921699043407690f, -0.630829229628424470f, 0.775437630904130540f,
+  -0.631424168509401860f,
+  0.774953106594873930f, -0.632018735939809060f, 0.774468126400670860f,
+  -0.632612931569877410f,
+  0.773982690606822900f, -0.633206755050057190f, 0.773496799498899050f,
+  -0.633800206031017280f,
+  0.773010453362736990f, -0.634393284163645490f, 0.772523652484441330f,
+  -0.634985989099049460f,
+  0.772036397150384520f, -0.635578320488556110f, 0.771548687647206300f,
+  -0.636170277983712170f,
+  0.771060524261813820f, -0.636761861236284200f, 0.770571907281380810f,
+  -0.637353069898259130f,
+  0.770082836993347900f, -0.637943903621844060f, 0.769593313685422940f,
+  -0.638534362059466790f,
+  0.769103337645579700f, -0.639124444863775730f, 0.768612909162058380f,
+  -0.639714151687640450f,
+  0.768122028523365420f, -0.640303482184151670f, 0.767630696018273380f,
+  -0.640892436006621380f,
+  0.767138911935820400f, -0.641481012808583160f, 0.766646676565310380f,
+  -0.642069212243792540f,
+  0.766153990196312920f, -0.642657033966226860f, 0.765660853118662500f,
+  -0.643244477630085850f,
+  0.765167265622458960f, -0.643831542889791390f, 0.764673227998067140f,
+  -0.644418229399988380f,
+  0.764178740536116670f, -0.645004536815543930f, 0.763683803527501870f,
+  -0.645590464791548690f,
+  0.763188417263381270f, -0.646176012983316280f, 0.762692582035177980f,
+  -0.646761181046383920f,
+  0.762196298134578900f, -0.647345968636512060f, 0.761699565853535380f,
+  -0.647930375409685340f,
+  0.761202385484261780f, -0.648514401022112440f, 0.760704757319236920f,
+  -0.649098045130225950f,
+  0.760206681651202420f, -0.649681307390683190f, 0.759708158773163440f,
+  -0.650264187460365850f,
+  0.759209188978388070f, -0.650846684996380880f, 0.758709772560407390f,
+  -0.651428799656059820f,
+  0.758209909813015280f, -0.652010531096959500f, 0.757709601030268080f,
+  -0.652591878976862440f,
+  0.757208846506484570f, -0.653172842953776760f, 0.756707646536245670f,
+  -0.653753422685936060f,
+  0.756206001414394540f, -0.654333617831800440f, 0.755703911436035880f,
+  -0.654913428050056030f,
+  0.755201376896536550f, -0.655492852999615350f, 0.754698398091524500f,
+  -0.656071892339617600f,
+  0.754194975316889170f, -0.656650545729428940f, 0.753691108868781210f,
+  -0.657228812828642540f,
+  0.753186799043612520f, -0.657806693297078640f, 0.752682046138055340f,
+  -0.658384186794785050f,
+  0.752176850449042810f, -0.658961292982037320f, 0.751671212273768430f,
+  -0.659538011519338660f,
+  0.751165131909686480f, -0.660114342067420480f, 0.750658609654510700f,
+  -0.660690284287242300f,
+  0.750151645806215070f, -0.661265837839992270f, 0.749644240663033480f,
+  -0.661841002387086870f,
+  0.749136394523459370f, -0.662415777590171780f, 0.748628107686245440f,
+  -0.662990163111121470f,
+  0.748119380450403600f, -0.663564158612039770f, 0.747610213115205150f,
+  -0.664137763755260010f,
+  0.747100605980180130f, -0.664710978203344790f, 0.746590559345117310f,
+  -0.665283801619087180f,
+  0.746080073510063780f, -0.665856233665509720f, 0.745569148775325430f,
+  -0.666428274005865240f,
+  0.745057785441466060f, -0.666999922303637470f, 0.744545983809307370f,
+  -0.667571178222540310f,
+  0.744033744179929290f, -0.668142041426518450f, 0.743521066854669120f,
+  -0.668712511579747980f,
+  0.743007952135121720f, -0.669282588346636010f, 0.742494400323139180f,
+  -0.669852271391821020f,
+  0.741980411720831070f, -0.670421560380173090f, 0.741465986630563290f,
+  -0.670990454976794220f,
+  0.740951125354959110f, -0.671558954847018330f, 0.740435828196898020f,
+  -0.672127059656411730f,
+  0.739920095459516200f, -0.672694769070772860f, 0.739403927446205760f,
+  -0.673262082756132970f,
+  0.738887324460615110f, -0.673829000378756040f, 0.738370286806648620f,
+  -0.674395521605139050f,
+  0.737852814788465980f, -0.674961646102011930f, 0.737334908710482910f,
+  -0.675527373536338520f,
+  0.736816568877369900f, -0.676092703575315920f, 0.736297795594053170f,
+  -0.676657635886374950f,
+  0.735778589165713590f, -0.677222170137180330f, 0.735258949897786840f,
+  -0.677786305995631500f,
+  0.734738878095963500f, -0.678350043129861470f, 0.734218374066188280f,
+  -0.678913381208238410f,
+  0.733697438114660370f, -0.679476319899364970f, 0.733176070547832740f,
+  -0.680038858872078930f,
+  0.732654271672412820f, -0.680600997795453020f, 0.732132041795361290f,
+  -0.681162736338795430f,
+  0.731609381223892630f, -0.681724074171649710f, 0.731086290265474340f,
+  -0.682285010963795570f,
+  0.730562769227827590f, -0.682845546385248080f, 0.730038818418926260f,
+  -0.683405680106258680f,
+  0.729514438146997010f, -0.683965411797315400f, 0.728989628720519420f,
+  -0.684524741129142300f,
+  0.728464390448225200f, -0.685083667772700360f, 0.727938723639098620f,
+  -0.685642191399187470f,
+  0.727412628602375770f, -0.686200311680038590f, 0.726886105647544970f,
+  -0.686758028286925890f,
+  0.726359155084346010f, -0.687315340891759050f, 0.725831777222770370f,
+  -0.687872249166685550f,
+  0.725303972373060770f, -0.688428752784090440f, 0.724775740845711280f,
+  -0.688984851416597040f,
+  0.724247082951467000f, -0.689540544737066830f, 0.723717999001323500f,
+  -0.690095832418599950f,
+  0.723188489306527460f, -0.690650714134534600f, 0.722658554178575610f,
+  -0.691205189558448450f,
+  0.722128193929215350f, -0.691759258364157750f, 0.721597408870443770f,
+  -0.692312920225718220f,
+  0.721066199314508110f, -0.692866174817424630f, 0.720534565573905270f,
+  -0.693419021813811760f,
+  0.720002507961381650f, -0.693971460889654000f, 0.719470026789932990f,
+  -0.694523491719965520f,
+  0.718937122372804490f, -0.695075113980000880f, 0.718403795023489830f,
+  -0.695626327345254870f,
+  0.717870045055731710f, -0.696177131491462990f, 0.717335872783521730f,
+  -0.696727526094601200f,
+  0.716801278521099540f, -0.697277510830886520f, 0.716266262582953120f,
+  -0.697827085376777290f,
+  0.715730825283818590f, -0.698376249408972920f, 0.715194966938680120f,
+  -0.698925002604414150f,
+  0.714658687862769090f, -0.699473344640283770f, 0.714121988371564820f,
+  -0.700021275194006250f,
+  0.713584868780793640f, -0.700568793943248340f, 0.713047329406429340f,
+  -0.701115900565918660f,
+  0.712509370564692320f, -0.701662594740168450f, 0.711970992572050100f,
+  -0.702208876144391870f,
+  0.711432195745216430f, -0.702754744457225300f, 0.710892980401151680f,
+  -0.703300199357548730f,
+  0.710353346857062420f, -0.703845240524484940f, 0.709813295430400840f,
+  -0.704389867637400410f,
+  0.709272826438865690f, -0.704934080375904880f, 0.708731940200400650f,
+  -0.705477878419852100f,
+  0.708190637033195400f, -0.706021261449339740f, 0.707648917255684350f,
+  -0.706564229144709510f,
+  0.707106781186547570f, -0.707106781186547460f, 0.706564229144709620f,
+  -0.707648917255684350f,
+  0.706021261449339740f, -0.708190637033195290f, 0.705477878419852210f,
+  -0.708731940200400650f,
+  0.704934080375904990f, -0.709272826438865580f, 0.704389867637400410f,
+  -0.709813295430400840f,
+  0.703845240524484940f, -0.710353346857062310f, 0.703300199357548730f,
+  -0.710892980401151680f,
+  0.702754744457225300f, -0.711432195745216430f, 0.702208876144391870f,
+  -0.711970992572049990f,
+  0.701662594740168570f, -0.712509370564692320f, 0.701115900565918660f,
+  -0.713047329406429230f,
+  0.700568793943248450f, -0.713584868780793520f, 0.700021275194006360f,
+  -0.714121988371564710f,
+  0.699473344640283770f, -0.714658687862768980f, 0.698925002604414150f,
+  -0.715194966938680010f,
+  0.698376249408972920f, -0.715730825283818590f, 0.697827085376777290f,
+  -0.716266262582953120f,
+  0.697277510830886630f, -0.716801278521099540f, 0.696727526094601200f,
+  -0.717335872783521730f,
+  0.696177131491462990f, -0.717870045055731710f, 0.695626327345254870f,
+  -0.718403795023489720f,
+  0.695075113980000880f, -0.718937122372804380f, 0.694523491719965520f,
+  -0.719470026789932990f,
+  0.693971460889654000f, -0.720002507961381650f, 0.693419021813811880f,
+  -0.720534565573905270f,
+  0.692866174817424740f, -0.721066199314508110f, 0.692312920225718220f,
+  -0.721597408870443660f,
+  0.691759258364157750f, -0.722128193929215350f, 0.691205189558448450f,
+  -0.722658554178575610f,
+  0.690650714134534720f, -0.723188489306527350f, 0.690095832418599950f,
+  -0.723717999001323390f,
+  0.689540544737066940f, -0.724247082951466890f, 0.688984851416597150f,
+  -0.724775740845711280f,
+  0.688428752784090550f, -0.725303972373060660f, 0.687872249166685550f,
+  -0.725831777222770370f,
+  0.687315340891759160f, -0.726359155084346010f, 0.686758028286925890f,
+  -0.726886105647544970f,
+  0.686200311680038700f, -0.727412628602375770f, 0.685642191399187470f,
+  -0.727938723639098620f,
+  0.685083667772700360f, -0.728464390448225200f, 0.684524741129142300f,
+  -0.728989628720519310f,
+  0.683965411797315510f, -0.729514438146996900f, 0.683405680106258790f,
+  -0.730038818418926150f,
+  0.682845546385248080f, -0.730562769227827590f, 0.682285010963795570f,
+  -0.731086290265474230f,
+  0.681724074171649820f, -0.731609381223892520f, 0.681162736338795430f,
+  -0.732132041795361290f,
+  0.680600997795453130f, -0.732654271672412820f, 0.680038858872079040f,
+  -0.733176070547832740f,
+  0.679476319899365080f, -0.733697438114660260f, 0.678913381208238410f,
+  -0.734218374066188170f,
+  0.678350043129861580f, -0.734738878095963390f, 0.677786305995631500f,
+  -0.735258949897786730f,
+  0.677222170137180450f, -0.735778589165713480f, 0.676657635886374950f,
+  -0.736297795594053060f,
+  0.676092703575316030f, -0.736816568877369790f, 0.675527373536338630f,
+  -0.737334908710482790f,
+  0.674961646102012040f, -0.737852814788465980f, 0.674395521605139050f,
+  -0.738370286806648510f,
+  0.673829000378756150f, -0.738887324460615110f, 0.673262082756132970f,
+  -0.739403927446205760f,
+  0.672694769070772970f, -0.739920095459516090f, 0.672127059656411840f,
+  -0.740435828196898020f,
+  0.671558954847018330f, -0.740951125354959110f, 0.670990454976794220f,
+  -0.741465986630563290f,
+  0.670421560380173090f, -0.741980411720830960f, 0.669852271391821130f,
+  -0.742494400323139180f,
+  0.669282588346636010f, -0.743007952135121720f, 0.668712511579748090f,
+  -0.743521066854669120f,
+  0.668142041426518560f, -0.744033744179929180f, 0.667571178222540310f,
+  -0.744545983809307250f,
+  0.666999922303637470f, -0.745057785441465950f, 0.666428274005865350f,
+  -0.745569148775325430f,
+  0.665856233665509720f, -0.746080073510063780f, 0.665283801619087180f,
+  -0.746590559345117310f,
+  0.664710978203344900f, -0.747100605980180130f, 0.664137763755260010f,
+  -0.747610213115205150f,
+  0.663564158612039880f, -0.748119380450403490f, 0.662990163111121470f,
+  -0.748628107686245330f,
+  0.662415777590171780f, -0.749136394523459260f, 0.661841002387086870f,
+  -0.749644240663033480f,
+  0.661265837839992270f, -0.750151645806214960f, 0.660690284287242300f,
+  -0.750658609654510590f,
+  0.660114342067420480f, -0.751165131909686370f, 0.659538011519338770f,
+  -0.751671212273768430f,
+  0.658961292982037320f, -0.752176850449042700f, 0.658384186794785050f,
+  -0.752682046138055230f,
+  0.657806693297078640f, -0.753186799043612410f, 0.657228812828642650f,
+  -0.753691108868781210f,
+  0.656650545729429050f, -0.754194975316889170f, 0.656071892339617710f,
+  -0.754698398091524390f,
+  0.655492852999615460f, -0.755201376896536550f, 0.654913428050056150f,
+  -0.755703911436035880f,
+  0.654333617831800550f, -0.756206001414394540f, 0.653753422685936170f,
+  -0.756707646536245670f,
+  0.653172842953776760f, -0.757208846506484460f, 0.652591878976862550f,
+  -0.757709601030268080f,
+  0.652010531096959500f, -0.758209909813015280f, 0.651428799656059820f,
+  -0.758709772560407390f,
+  0.650846684996380990f, -0.759209188978387960f, 0.650264187460365960f,
+  -0.759708158773163440f,
+  0.649681307390683190f, -0.760206681651202420f, 0.649098045130226060f,
+  -0.760704757319236920f,
+  0.648514401022112550f, -0.761202385484261780f, 0.647930375409685460f,
+  -0.761699565853535270f,
+  0.647345968636512060f, -0.762196298134578900f, 0.646761181046383920f,
+  -0.762692582035177870f,
+  0.646176012983316390f, -0.763188417263381270f, 0.645590464791548800f,
+  -0.763683803527501870f,
+  0.645004536815544040f, -0.764178740536116670f, 0.644418229399988380f,
+  -0.764673227998067140f,
+  0.643831542889791500f, -0.765167265622458960f, 0.643244477630085850f,
+  -0.765660853118662390f,
+  0.642657033966226860f, -0.766153990196312810f, 0.642069212243792540f,
+  -0.766646676565310380f,
+  0.641481012808583160f, -0.767138911935820400f, 0.640892436006621380f,
+  -0.767630696018273270f,
+  0.640303482184151670f, -0.768122028523365310f, 0.639714151687640450f,
+  -0.768612909162058270f,
+  0.639124444863775730f, -0.769103337645579590f, 0.638534362059466790f,
+  -0.769593313685422940f,
+  0.637943903621844170f, -0.770082836993347900f, 0.637353069898259130f,
+  -0.770571907281380700f,
+  0.636761861236284200f, -0.771060524261813710f, 0.636170277983712170f,
+  -0.771548687647206300f,
+  0.635578320488556230f, -0.772036397150384410f, 0.634985989099049460f,
+  -0.772523652484441330f,
+  0.634393284163645490f, -0.773010453362736990f, 0.633800206031017280f,
+  -0.773496799498899050f,
+  0.633206755050057190f, -0.773982690606822790f, 0.632612931569877520f,
+  -0.774468126400670860f,
+  0.632018735939809060f, -0.774953106594873820f, 0.631424168509401860f,
+  -0.775437630904130430f,
+  0.630829229628424470f, -0.775921699043407580f, 0.630233919646864480f,
+  -0.776405310727940390f,
+  0.629638238914927100f, -0.776888465673232440f, 0.629042187783036000f,
+  -0.777371163595056200f,
+  0.628445766601832710f, -0.777853404209453040f, 0.627848975722176570f,
+  -0.778335187232733090f,
+  0.627251815495144190f, -0.778816512381475870f, 0.626654286272029460f,
+  -0.779297379372530300f,
+  0.626056388404343520f, -0.779777787923014440f, 0.625458122243814360f,
+  -0.780257737750316590f,
+  0.624859488142386450f, -0.780737228572094380f, 0.624260486452220650f,
+  -0.781216260106276090f,
+  0.623661117525694640f, -0.781694832071059390f, 0.623061381715401370f,
+  -0.782172944184912900f,
+  0.622461279374150080f, -0.782650596166575730f, 0.621860810854965360f,
+  -0.783127787735057310f,
+  0.621259976511087660f, -0.783604518609638200f, 0.620658776695972140f,
+  -0.784080788509869950f,
+  0.620057211763289210f, -0.784556597155575240f, 0.619455282066924020f,
+  -0.785031944266848080f,
+  0.618852987960976320f, -0.785506829564053930f, 0.618250329799760250f,
+  -0.785981252767830150f,
+  0.617647307937803980f, -0.786455213599085770f, 0.617043922729849760f,
+  -0.786928711779001700f,
+  0.616440174530853650f, -0.787401747029031320f, 0.615836063695985090f,
+  -0.787874319070900110f,
+  0.615231590580626820f, -0.788346427626606230f, 0.614626755540375050f,
+  -0.788818072418420170f,
+  0.614021558931038490f, -0.789289253168885650f, 0.613416001108638590f,
+  -0.789759969600819070f,
+  0.612810082429409710f, -0.790230221437310030f, 0.612203803249798060f,
+  -0.790700008401721610f,
+  0.611597163926462020f, -0.791169330217690090f, 0.610990164816271770f,
+  -0.791638186609125770f,
+  0.610382806276309480f, -0.792106577300212390f, 0.609775088663868430f,
+  -0.792574502015407580f,
+  0.609167012336453210f, -0.793041960479443640f, 0.608558577651779450f,
+  -0.793508952417326660f,
+  0.607949784967773740f, -0.793975477554337170f, 0.607340634642572930f,
+  -0.794441535616030590f,
+  0.606731127034524480f, -0.794907126328237010f, 0.606121262502186230f,
+  -0.795372249417061190f,
+  0.605511041404325550f, -0.795836904608883460f, 0.604900464099919930f,
+  -0.796301091630359110f,
+  0.604289530948156070f, -0.796764810208418720f, 0.603678242308430370f,
+  -0.797228060070268700f,
+  0.603066598540348280f, -0.797690840943391040f, 0.602454600003723860f,
+  -0.798153152555543750f,
+  0.601842247058580030f, -0.798614994634760820f, 0.601229540065148620f,
+  -0.799076366909352350f,
+  0.600616479383868970f, -0.799537269107905010f, 0.600003065375389060f,
+  -0.799997700959281910f,
+  0.599389298400564540f, -0.800457662192622710f, 0.598775178820458720f,
+  -0.800917152537344300f,
+  0.598160706996342380f, -0.801376171723140130f, 0.597545883289693270f,
+  -0.801834719479981310f,
+  0.596930708062196500f, -0.802292795538115720f, 0.596315181675743820f,
+  -0.802750399628069160f,
+  0.595699304492433470f, -0.803207531480644830f, 0.595083076874569960f,
+  -0.803664190826924090f,
+  0.594466499184664540f, -0.804120377398265700f, 0.593849571785433630f,
+  -0.804576090926307000f,
+  0.593232295039799800f, -0.805031331142963660f, 0.592614669310891130f,
+  -0.805486097780429120f,
+  0.591996694962040990f, -0.805940390571176280f, 0.591378372356787580f,
+  -0.806394209247956240f,
+  0.590759701858874280f, -0.806847553543799220f, 0.590140683832248940f,
+  -0.807300423192014450f,
+  0.589521318641063940f, -0.807752817926190360f, 0.588901606649675840f,
+  -0.808204737480194720f,
+  0.588281548222645330f, -0.808656181588174980f, 0.587661143724736770f,
+  -0.809107149984558130f,
+  0.587040393520918080f, -0.809557642404051260f, 0.586419297976360500f,
+  -0.810007658581641140f,
+  0.585797857456438860f, -0.810457198252594770f, 0.585176072326730410f,
+  -0.810906261152459670f,
+  0.584553942953015330f, -0.811354847017063730f, 0.583931469701276300f,
+  -0.811802955582515360f,
+  0.583308652937698290f, -0.812250586585203880f, 0.582685493028668460f,
+  -0.812697739761799490f,
+  0.582061990340775550f, -0.813144414849253590f, 0.581438145240810280f,
+  -0.813590611584798510f,
+  0.580813958095764530f, -0.814036329705948300f, 0.580189429272831680f,
+  -0.814481568950498610f,
+  0.579564559139405740f, -0.814926329056526620f, 0.578939348063081890f,
+  -0.815370609762391290f,
+  0.578313796411655590f, -0.815814410806733780f, 0.577687904553122800f,
+  -0.816257731928477390f,
+  0.577061672855679550f, -0.816700572866827850f, 0.576435101687721830f,
+  -0.817142933361272970f,
+  0.575808191417845340f, -0.817584813151583710f, 0.575180942414845190f,
+  -0.818026211977813440f,
+  0.574553355047715760f, -0.818467129580298660f, 0.573925429685650750f,
+  -0.818907565699658950f,
+  0.573297166698042320f, -0.819347520076796900f, 0.572668566454481160f,
+  -0.819786992452898990f,
+  0.572039629324757050f, -0.820225982569434690f, 0.571410355678857340f,
+  -0.820664490168157460f,
+  0.570780745886967370f, -0.821102514991104650f, 0.570150800319470300f,
+  -0.821540056780597610f,
+  0.569520519346947250f, -0.821977115279241550f, 0.568889903340175970f,
+  -0.822413690229926390f,
+  0.568258952670131490f, -0.822849781375826320f, 0.567627667707986230f,
+  -0.823285388460400110f,
+  0.566996048825108680f, -0.823720511227391320f, 0.566364096393063950f,
+  -0.824155149420828570f,
+  0.565731810783613230f, -0.824589302785025290f, 0.565099192368714090f,
+  -0.825022971064580220f,
+  0.564466241520519500f, -0.825456154004377440f, 0.563832958611378170f,
+  -0.825888851349586780f,
+  0.563199344013834090f, -0.826321062845663420f, 0.562565398100626560f,
+  -0.826752788238348520f,
+  0.561931121244689470f, -0.827184027273669020f, 0.561296513819151470f,
+  -0.827614779697938400f,
+  0.560661576197336030f, -0.828045045257755800f, 0.560026308752760380f,
+  -0.828474823700007130f,
+  0.559390711859136140f, -0.828904114771864870f, 0.558754785890368310f,
+  -0.829332918220788250f,
+  0.558118531220556100f, -0.829761233794523050f, 0.557481948223991660f,
+  -0.830189061241102370f,
+  0.556845037275160100f, -0.830616400308846200f, 0.556207798748739930f,
+  -0.831043250746362320f,
+  0.555570233019602290f, -0.831469612302545240f, 0.554932340462810370f,
+  -0.831895484726577590f,
+  0.554294121453620110f, -0.832320867767929680f, 0.553655576367479310f,
+  -0.832745761176359460f,
+  0.553016705580027580f, -0.833170164701913190f, 0.552377509467096070f,
+  -0.833594078094925140f,
+  0.551737988404707450f, -0.834017501106018130f, 0.551098142769075430f,
+  -0.834440433486103190f,
+  0.550457972936604810f, -0.834862874986380010f, 0.549817479283891020f,
+  -0.835284825358337370f,
+  0.549176662187719770f, -0.835706284353752600f, 0.548535522025067390f,
+  -0.836127251724692160f,
+  0.547894059173100190f, -0.836547727223511890f, 0.547252274009174090f,
+  -0.836967710602857020f,
+  0.546610166910834860f, -0.837387201615661940f, 0.545967738255817680f,
+  -0.837806200015150940f,
+  0.545324988422046460f, -0.838224705554837970f, 0.544681917787634530f,
+  -0.838642717988527300f,
+  0.544038526730883930f, -0.839060237070312630f, 0.543394815630284800f,
+  -0.839477262554578550f,
+  0.542750784864516000f, -0.839893794195999410f, 0.542106434812444030f,
+  -0.840309831749540770f,
+  0.541461765853123560f, -0.840725374970458070f, 0.540816778365796670f,
+  -0.841140423614298080f,
+  0.540171472729892970f, -0.841554977436898330f, 0.539525849325029010f,
+  -0.841969036194387680f,
+  0.538879908531008420f, -0.842382599643185960f, 0.538233650727821700f,
+  -0.842795667540004120f,
+  0.537587076295645510f, -0.843208239641845440f, 0.536940185614843020f,
+  -0.843620315706004040f,
+  0.536292979065963180f, -0.844031895490066410f, 0.535645457029741090f,
+  -0.844442978751910660f,
+  0.534997619887097260f, -0.844853565249707010f, 0.534349468019137520f,
+  -0.845263654741918220f,
+  0.533701001807152960f, -0.845673246987299070f, 0.533052221632619670f,
+  -0.846082341744896940f,
+  0.532403127877198010f, -0.846490938774052020f, 0.531753720922733320f,
+  -0.846899037834397350f,
+  0.531104001151255000f, -0.847306638685858320f, 0.530453968944976320f,
+  -0.847713741088654270f,
+  0.529803624686294830f, -0.848120344803297120f, 0.529152968757790720f,
+  -0.848526449590592650f,
+  0.528502001542228480f, -0.848932055211639610f, 0.527850723422555460f,
+  -0.849337161427830670f,
+  0.527199134781901390f, -0.849741768000852440f, 0.526547236003579330f,
+  -0.850145874692685210f,
+  0.525895027471084740f, -0.850549481265603370f, 0.525242509568094710f,
+  -0.850952587482175730f,
+  0.524589682678468840f, -0.851355193105265200f, 0.523936547186248600f,
+  -0.851757297898029120f,
+  0.523283103475656430f, -0.852158901623919830f, 0.522629351931096720f,
+  -0.852560004046683970f,
+  0.521975292937154390f, -0.852960604930363630f, 0.521320926878595550f,
+  -0.853360704039295430f,
+  0.520666254140367270f, -0.853760301138111300f, 0.520011275107596040f,
+  -0.854159395991738730f,
+  0.519355990165589530f, -0.854557988365400530f, 0.518700399699835170f,
+  -0.854956078024614820f,
+  0.518044504095999340f, -0.855353664735196030f, 0.517388303739929060f,
+  -0.855750748263253920f,
+  0.516731799017649980f, -0.856147328375194470f, 0.516074990315366630f,
+  -0.856543404837719960f,
+  0.515417878019463150f, -0.856938977417828650f, 0.514760462516501200f,
+  -0.857334045882815590f,
+  0.514102744193221660f, -0.857728610000272120f, 0.513444723436543570f,
+  -0.858122669538086020f,
+  0.512786400633563070f, -0.858516224264442740f, 0.512127776171554690f,
+  -0.858909273947823900f,
+  0.511468850437970520f, -0.859301818357008360f, 0.510809623820439040f,
+  -0.859693857261072610f,
+  0.510150096706766700f, -0.860085390429390140f, 0.509490269484936360f,
+  -0.860476417631632070f,
+  0.508830142543106990f, -0.860866938637767310f, 0.508169716269614710f,
+  -0.861256953218062060f,
+  0.507508991052970870f, -0.861646461143081300f, 0.506847967281863320f,
+  -0.862035462183687210f,
+  0.506186645345155450f, -0.862423956111040500f, 0.505525025631885510f,
+  -0.862811942696600330f,
+  0.504863108531267480f, -0.863199421712124160f, 0.504200894432690560f,
+  -0.863586392929667990f,
+  0.503538383725717580f, -0.863972856121586700f, 0.502875576800086880f,
+  -0.864358811060534030f,
+  0.502212474045710900f, -0.864744257519462380f, 0.501549075852675390f,
+  -0.865129195271623690f,
+  0.500885382611240940f, -0.865513624090568980f, 0.500221394711840680f,
+  -0.865897543750148820f,
+  0.499557112545081890f, -0.866280954024512990f, 0.498892536501744750f,
+  -0.866663854688111020f,
+  0.498227666972781870f, -0.867046245515692650f, 0.497562504349319090f,
+  -0.867428126282306920f,
+  0.496897049022654640f, -0.867809496763303210f, 0.496231301384258310f,
+  -0.868190356734331310f,
+  0.495565261825772490f, -0.868570705971340900f, 0.494898930739011310f,
+  -0.868950544250582380f,
+  0.494232308515959730f, -0.869329871348606730f, 0.493565395548774880f,
+  -0.869708687042265560f,
+  0.492898192229784090f, -0.870086991108711350f, 0.492230698951486080f,
+  -0.870464783325397670f,
+  0.491562916106550060f, -0.870842063470078860f, 0.490894844087815140f,
+  -0.871218831320810900f,
+  0.490226483288291100f, -0.871595086655951090f, 0.489557834101157550f,
+  -0.871970829254157700f,
+  0.488888896919763230f, -0.872346058894391540f, 0.488219672137626740f,
+  -0.872720775355914300f,
+  0.487550160148436050f, -0.873094978418290090f, 0.486880361346047400f,
+  -0.873468667861384880f,
+  0.486210276124486530f, -0.873841843465366750f, 0.485539904877947020f,
+  -0.874214505010706300f,
+  0.484869248000791120f, -0.874586652278176110f, 0.484198305887549140f,
+  -0.874958285048851540f,
+  0.483527078932918740f, -0.875329403104110780f, 0.482855567531765670f,
+  -0.875700006225634600f,
+  0.482183772079122830f, -0.876070094195406600f, 0.481511692970189920f,
+  -0.876439666795713610f,
+  0.480839330600333900f, -0.876808723809145760f, 0.480166685365088440f,
+  -0.877177265018595940f,
+  0.479493757660153010f, -0.877545290207261240f, 0.478820547881394050f,
+  -0.877912799158641730f,
+  0.478147056424843120f, -0.878279791656541460f, 0.477473283686698060f,
+  -0.878646267485068130f,
+  0.476799230063322250f, -0.879012226428633410f, 0.476124895951243630f,
+  -0.879377668271953180f,
+  0.475450281747155870f, -0.879742592800047410f, 0.474775387847917230f,
+  -0.880106999798240360f,
+  0.474100214650550020f, -0.880470889052160750f, 0.473424762552241530f,
+  -0.880834260347742040f,
+  0.472749031950342900f, -0.881197113471221980f, 0.472073023242368660f,
+  -0.881559448209143780f,
+  0.471396736825997810f, -0.881921264348354940f, 0.470720173099071710f,
+  -0.882282561676008600f,
+  0.470043332459595620f, -0.882643339979562790f, 0.469366215305737630f,
+  -0.883003599046780720f,
+  0.468688822035827960f, -0.883363338665731580f, 0.468011153048359830f,
+  -0.883722558624789660f,
+  0.467333208741988530f, -0.884081258712634990f, 0.466654989515530970f,
+  -0.884439438718253700f,
+  0.465976495767966130f, -0.884797098430937790f, 0.465297727898434650f,
+  -0.885154237640285110f,
+  0.464618686306237820f, -0.885510856136199950f, 0.463939371390838460f,
+  -0.885866953708892790f,
+  0.463259783551860260f, -0.886222530148880640f, 0.462579923189086810f,
+  -0.886577585246987040f,
+  0.461899790702462840f, -0.886932118794342080f, 0.461219386492092430f,
+  -0.887286130582383150f,
+  0.460538710958240010f, -0.887639620402853930f, 0.459857764501329650f,
+  -0.887992588047805560f,
+  0.459176547521944150f, -0.888345033309596240f, 0.458495060420826220f,
+  -0.888696955980891710f,
+  0.457813303598877290f, -0.889048355854664570f, 0.457131277457156980f,
+  -0.889399232724195520f,
+  0.456448982396883860f, -0.889749586383072890f, 0.455766418819434750f,
+  -0.890099416625192210f,
+  0.455083587126343840f, -0.890448723244757880f, 0.454400487719303750f,
+  -0.890797506036281490f,
+  0.453717121000163930f, -0.891145764794583180f, 0.453033487370931580f,
+  -0.891493499314791380f,
+  0.452349587233771000f, -0.891840709392342720f, 0.451665420991002540f,
+  -0.892187394822982480f,
+  0.450980989045103810f, -0.892533555402764690f, 0.450296291798708730f,
+  -0.892879190928051680f,
+  0.449611329654606600f, -0.893224301195515320f, 0.448926103015743260f,
+  -0.893568886002136020f,
+  0.448240612285220000f, -0.893912945145203250f, 0.447554857866293010f,
+  -0.894256478422316040f,
+  0.446868840162374330f, -0.894599485631382580f, 0.446182559577030120f,
+  -0.894941966570620750f,
+  0.445496016513981740f, -0.895283921038557580f, 0.444809211377105000f,
+  -0.895625348834030000f,
+  0.444122144570429260f, -0.895966249756185110f, 0.443434816498138430f,
+  -0.896306623604479660f,
+  0.442747227564570130f, -0.896646470178680150f, 0.442059378174214760f,
+  -0.896985789278863970f,
+  0.441371268731716620f, -0.897324580705418320f, 0.440682899641873020f,
+  -0.897662844259040750f,
+  0.439994271309633260f, -0.898000579740739880f, 0.439305384140100060f,
+  -0.898337786951834190f,
+  0.438616238538527710f, -0.898674465693953820f, 0.437926834910322860f,
+  -0.899010615769039070f,
+  0.437237173661044200f, -0.899346236979341460f, 0.436547255196401250f,
+  -0.899681329127423930f,
+  0.435857079922255470f, -0.900015892016160280f, 0.435166648244619370f,
+  -0.900349925448735600f,
+  0.434475960569655710f, -0.900683429228646860f, 0.433785017303678520f,
+  -0.901016403159702330f,
+  0.433093818853152010f, -0.901348847046022030f, 0.432402365624690140f,
+  -0.901680760692037730f,
+  0.431710658025057370f, -0.902012143902493070f, 0.431018696461167080f,
+  -0.902342996482444200f,
+  0.430326481340082610f, -0.902673318237258830f, 0.429634013069016500f,
+  -0.903003108972617040f,
+  0.428941292055329550f, -0.903332368494511820f, 0.428248318706531910f,
+  -0.903661096609247980f,
+  0.427555093430282200f, -0.903989293123443340f, 0.426861616634386490f,
+  -0.904316957844028320f,
+  0.426167888726799620f, -0.904644090578246240f, 0.425473910115623910f,
+  -0.904970691133653250f,
+  0.424779681209108810f, -0.905296759318118820f, 0.424085202415651670f,
+  -0.905622294939825160f,
+  0.423390474143796100f, -0.905947297807268460f, 0.422695496802232950f,
+  -0.906271767729257660f,
+  0.422000270799799790f, -0.906595704514915330f, 0.421304796545479700f,
+  -0.906919107973678030f,
+  0.420609074448402510f, -0.907241977915295930f, 0.419913104917843730f,
+  -0.907564314149832520f,
+  0.419216888363223960f, -0.907886116487666150f, 0.418520425194109700f,
+  -0.908207384739488700f,
+  0.417823715820212380f, -0.908528118716306120f, 0.417126760651387870f,
+  -0.908848318229439120f,
+  0.416429560097637320f, -0.909167983090522270f, 0.415732114569105420f,
+  -0.909487113111505430f,
+  0.415034424476081630f, -0.909805708104652220f, 0.414336490228999210f,
+  -0.910123767882541570f,
+  0.413638312238434560f, -0.910441292258067140f, 0.412939890915108020f,
+  -0.910758281044437570f,
+  0.412241226669883000f, -0.911074734055176250f, 0.411542319913765280f,
+  -0.911390651104122320f,
+  0.410843171057903910f, -0.911706032005429880f, 0.410143780513590350f,
+  -0.912020876573568230f,
+  0.409444148692257590f, -0.912335184623322750f, 0.408744276005481520f,
+  -0.912648955969793900f,
+  0.408044162864978740f, -0.912962190428398100f, 0.407343809682607970f,
+  -0.913274887814867760f,
+  0.406643216870369140f, -0.913587047945250810f, 0.405942384840402570f,
+  -0.913898670635911680f,
+  0.405241314004989860f, -0.914209755703530690f, 0.404540004776553110f,
+  -0.914520302965104450f,
+  0.403838457567654130f, -0.914830312237946090f, 0.403136672790995240f,
+  -0.915139783339685260f,
+  0.402434650859418540f, -0.915448716088267830f, 0.401732392185905010f,
+  -0.915757110301956720f,
+  0.401029897183575790f, -0.916064965799331610f, 0.400327166265690150f,
+  -0.916372282399289140f,
+  0.399624199845646790f, -0.916679059921042700f, 0.398920998336983020f,
+  -0.916985298184122890f,
+  0.398217562153373620f, -0.917290997008377910f, 0.397513891708632330f,
+  -0.917596156213972950f,
+  0.396809987416710420f, -0.917900775621390390f, 0.396105849691696320f,
+  -0.918204855051430900f,
+  0.395401478947816300f, -0.918508394325212250f, 0.394696875599433670f,
+  -0.918811393264169940f,
+  0.393992040061048100f, -0.919113851690057770f, 0.393286972747296570f,
+  -0.919415769424946960f,
+  0.392581674072951530f, -0.919717146291227360f, 0.391876144452922350f,
+  -0.920017982111606570f,
+  0.391170384302253980f, -0.920318276709110480f, 0.390464394036126650f,
+  -0.920618029907083860f,
+  0.389758174069856410f, -0.920917241529189520f, 0.389051724818894500f,
+  -0.921215911399408730f,
+  0.388345046698826300f, -0.921514039342041900f, 0.387638140125372680f,
+  -0.921811625181708120f,
+  0.386931005514388690f, -0.922108668743345070f, 0.386223643281862980f,
+  -0.922405169852209880f,
+  0.385516053843919020f, -0.922701128333878520f, 0.384808237616812930f,
+  -0.922996544014246250f,
+  0.384100195016935040f, -0.923291416719527640f, 0.383391926460808770f,
+  -0.923585746276256560f,
+  0.382683432365089840f, -0.923879532511286740f, 0.381974713146567220f,
+  -0.924172775251791200f,
+  0.381265769222162490f, -0.924465474325262600f, 0.380556601008928570f,
+  -0.924757629559513910f,
+  0.379847208924051110f, -0.925049240782677580f, 0.379137593384847430f,
+  -0.925340307823206200f,
+  0.378427754808765620f, -0.925630830509872720f, 0.377717693613385810f,
+  -0.925920808671769960f,
+  0.377007410216418310f, -0.926210242138311270f, 0.376296905035704790f,
+  -0.926499130739230510f,
+  0.375586178489217330f, -0.926787474304581750f, 0.374875230995057600f,
+  -0.927075272664740100f,
+  0.374164062971457990f, -0.927362525650401110f, 0.373452674836780410f,
+  -0.927649233092581180f,
+  0.372741067009515810f, -0.927935394822617890f, 0.372029239908284960f,
+  -0.928221010672169440f,
+  0.371317193951837600f, -0.928506080473215480f, 0.370604929559051670f,
+  -0.928790604058057020f,
+  0.369892447148934270f, -0.929074581259315750f, 0.369179747140620070f,
+  -0.929358011909935500f,
+  0.368466829953372320f, -0.929640895843181330f, 0.367753696006582090f,
+  -0.929923232892639560f,
+  0.367040345719767240f, -0.930205022892219070f, 0.366326779512573590f,
+  -0.930486265676149780f,
+  0.365612997804773960f, -0.930766961078983710f, 0.364899001016267380f,
+  -0.931047108935595170f,
+  0.364184789567079840f, -0.931326709081180430f, 0.363470363877363870f,
+  -0.931605761351257830f,
+  0.362755724367397230f, -0.931884265581668150f, 0.362040871457584350f,
+  -0.932162221608574320f,
+  0.361325805568454340f, -0.932439629268462360f, 0.360610527120662270f,
+  -0.932716488398140250f,
+  0.359895036534988280f, -0.932992798834738850f, 0.359179334232336560f,
+  -0.933268560415712050f,
+  0.358463420633736540f, -0.933543772978836170f, 0.357747296160342010f,
+  -0.933818436362210960f,
+  0.357030961233430030f, -0.934092550404258870f, 0.356314416274402360f,
+  -0.934366114943725900f,
+  0.355597661704783960f, -0.934639129819680780f, 0.354880697946222790f,
+  -0.934911594871516090f,
+  0.354163525420490510f, -0.935183509938947500f, 0.353446144549480870f,
+  -0.935454874862014620f,
+  0.352728555755210730f, -0.935725689481080370f, 0.352010759459819240f,
+  -0.935995953636831300f,
+  0.351292756085567150f, -0.936265667170278260f, 0.350574546054837570f,
+  -0.936534829922755500f,
+  0.349856129790135030f, -0.936803441735921560f, 0.349137507714085030f,
+  -0.937071502451759190f,
+  0.348418680249434510f, -0.937339011912574960f, 0.347699647819051490f,
+  -0.937605969960999990f,
+  0.346980410845923680f, -0.937872376439989890f, 0.346260969753160170f,
+  -0.938138231192824360f,
+  0.345541324963989150f, -0.938403534063108060f, 0.344821476901759290f,
+  -0.938668284894770170f,
+  0.344101425989938980f, -0.938932483532064490f, 0.343381172652115100f,
+  -0.939196129819569900f,
+  0.342660717311994380f, -0.939459223602189920f, 0.341940060393402300f,
+  -0.939721764725153340f,
+  0.341219202320282410f, -0.939983753034013940f, 0.340498143516697100f,
+  -0.940245188374650880f,
+  0.339776884406826960f, -0.940506070593268300f, 0.339055425414969640f,
+  -0.940766399536396070f,
+  0.338333766965541290f, -0.941026175050889260f, 0.337611909483074680f,
+  -0.941285396983928660f,
+  0.336889853392220050f, -0.941544065183020810f, 0.336167599117744690f,
+  -0.941802179495997650f,
+  0.335445147084531660f, -0.942059739771017310f, 0.334722497717581220f,
+  -0.942316745856563780f,
+  0.333999651442009490f, -0.942573197601446870f, 0.333276608683047980f,
+  -0.942829094854802710f,
+  0.332553369866044220f, -0.943084437466093490f, 0.331829935416461220f,
+  -0.943339225285107720f,
+  0.331106305759876430f, -0.943593458161960390f, 0.330382481321982950f,
+  -0.943847135947092690f,
+  0.329658462528587550f, -0.944100258491272660f, 0.328934249805612200f,
+  -0.944352825645594750f,
+  0.328209843579092660f, -0.944604837261480260f, 0.327485244275178060f,
+  -0.944856293190677210f,
+  0.326760452320131790f, -0.945107193285260610f, 0.326035468140330350f,
+  -0.945357537397632290f,
+  0.325310292162262980f, -0.945607325380521280f, 0.324584924812532150f,
+  -0.945856557086983910f,
+  0.323859366517852960f, -0.946105232370403340f, 0.323133617705052330f,
+  -0.946353351084490590f,
+  0.322407678801070020f, -0.946600913083283530f, 0.321681550232956640f,
+  -0.946847918221148000f,
+  0.320955232427875210f, -0.947094366352777220f, 0.320228725813100020f,
+  -0.947340257333191940f,
+  0.319502030816015750f, -0.947585591017741090f, 0.318775147864118480f,
+  -0.947830367262101010f,
+  0.318048077385015060f, -0.948074585922276230f, 0.317320819806421790f,
+  -0.948318246854599090f,
+  0.316593375556165850f, -0.948561349915730270f, 0.315865745062184070f,
+  -0.948803894962658380f,
+  0.315137928752522440f, -0.949045881852700560f, 0.314409927055336820f,
+  -0.949287310443502010f,
+  0.313681740398891570f, -0.949528180593036670f, 0.312953369211560200f,
+  -0.949768492159606680f,
+  0.312224813921825050f, -0.950008245001843000f, 0.311496074958275970f,
+  -0.950247438978705230f,
+  0.310767152749611470f, -0.950486073949481700f, 0.310038047724638000f,
+  -0.950724149773789610f,
+  0.309308760312268780f, -0.950961666311575080f, 0.308579290941525030f,
+  -0.951198623423113230f,
+  0.307849640041534980f, -0.951435020969008340f, 0.307119808041533100f,
+  -0.951670858810193860f,
+  0.306389795370861080f, -0.951906136807932230f, 0.305659602458966230f,
+  -0.952140854823815830f,
+  0.304929229735402430f, -0.952375012719765880f, 0.304198677629829270f,
+  -0.952608610358033240f,
+  0.303467946572011370f, -0.952841647601198720f, 0.302737036991819140f,
+  -0.953074124312172200f,
+  0.302005949319228200f, -0.953306040354193750f, 0.301274683984318000f,
+  -0.953537395590833280f,
+  0.300543241417273400f, -0.953768189885990330f, 0.299811622048383460f,
+  -0.953998423103894490f,
+  0.299079826308040480f, -0.954228095109105670f, 0.298347854626741570f,
+  -0.954457205766513490f,
+  0.297615707435086310f, -0.954685754941338340f, 0.296883385163778270f,
+  -0.954913742499130520f,
+  0.296150888243623960f, -0.955141168305770670f, 0.295418217105532070f,
+  -0.955368032227470240f,
+  0.294685372180514330f, -0.955594334130771110f, 0.293952353899684770f,
+  -0.955820073882545420f,
+  0.293219162694258680f, -0.956045251349996410f, 0.292485798995553830f,
+  -0.956269866400658140f,
+  0.291752263234989370f, -0.956493918902394990f, 0.291018555844085090f,
+  -0.956717408723403050f,
+  0.290284677254462330f, -0.956940335732208940f, 0.289550627897843140f,
+  -0.957162699797670100f,
+  0.288816408206049480f, -0.957384500788975860f, 0.288082018611004300f,
+  -0.957605738575646240f,
+  0.287347459544729570f, -0.957826413027532910f, 0.286612731439347790f,
+  -0.958046524014818600f,
+  0.285877834727080730f, -0.958266071408017670f, 0.285142769840248720f,
+  -0.958485055077976100f,
+  0.284407537211271820f, -0.958703474895871600f, 0.283672137272668550f,
+  -0.958921330733213060f,
+  0.282936570457055390f, -0.959138622461841890f, 0.282200837197147500f,
+  -0.959355349953930790f,
+  0.281464937925758050f, -0.959571513081984520f, 0.280728873075797190f,
+  -0.959787111718839900f,
+  0.279992643080273380f, -0.960002145737665850f, 0.279256248372291240f,
+  -0.960216615011963430f,
+  0.278519689385053060f, -0.960430519415565790f, 0.277782966551857800f,
+  -0.960643858822638470f,
+  0.277046080306099950f, -0.960856633107679660f, 0.276309031081271030f,
+  -0.961068842145519350f,
+  0.275571819310958250f, -0.961280485811320640f, 0.274834445428843940f,
+  -0.961491563980579000f,
+  0.274096909868706330f, -0.961702076529122540f, 0.273359213064418790f,
+  -0.961912023333112100f,
+  0.272621355449948980f, -0.962121404269041580f, 0.271883337459359890f,
+  -0.962330219213737400f,
+  0.271145159526808070f, -0.962538468044359160f, 0.270406822086544820f,
+  -0.962746150638399410f,
+  0.269668325572915200f, -0.962953266873683880f, 0.268929670420357310f,
+  -0.963159816628371360f,
+  0.268190857063403180f, -0.963365799780954050f, 0.267451885936677740f,
+  -0.963571216210257210f,
+  0.266712757474898420f, -0.963776065795439840f, 0.265973472112875530f,
+  -0.963980348415994110f,
+  0.265234030285511900f, -0.964184063951745720f, 0.264494432427801630f,
+  -0.964387212282854290f,
+  0.263754678974831510f, -0.964589793289812650f, 0.263014770361779060f,
+  -0.964791806853447900f,
+  0.262274707023913590f, -0.964993252854920320f, 0.261534489396595630f,
+  -0.965194131175724720f,
+  0.260794117915275570f, -0.965394441697689400f, 0.260053593015495130f,
+  -0.965594184302976830f,
+  0.259312915132886350f, -0.965793358874083570f, 0.258572084703170390f,
+  -0.965991965293840570f,
+  0.257831102162158930f, -0.966190003445412620f, 0.257089967945753230f,
+  -0.966387473212298790f,
+  0.256348682489942910f, -0.966584374478333120f, 0.255607246230807550f,
+  -0.966780707127683270f,
+  0.254865659604514630f, -0.966976471044852070f, 0.254123923047320620f,
+  -0.967171666114676640f,
+  0.253382036995570270f, -0.967366292222328510f, 0.252640001885695580f,
+  -0.967560349253314360f,
+  0.251897818154216910f, -0.967753837093475510f, 0.251155486237742030f,
+  -0.967946755628987800f,
+  0.250413006572965280f, -0.968139104746362330f, 0.249670379596668520f,
+  -0.968330884332445300f,
+  0.248927605745720260f, -0.968522094274417270f, 0.248184685457074780f,
+  -0.968712734459794780f,
+  0.247441619167773440f, -0.968902804776428870f, 0.246698407314942500f,
+  -0.969092305112506100f,
+  0.245955050335794590f, -0.969281235356548530f, 0.245211548667627680f,
+  -0.969469595397412950f,
+  0.244467902747824210f, -0.969657385124292450f, 0.243724113013852130f,
+  -0.969844604426714830f,
+  0.242980179903263980f, -0.970031253194543970f, 0.242236103853696070f,
+  -0.970217331317979160f,
+  0.241491885302869300f, -0.970402838687555500f, 0.240747524688588540f,
+  -0.970587775194143630f,
+  0.240003022448741500f, -0.970772140728950350f, 0.239258379021300120f,
+  -0.970955935183517970f,
+  0.238513594844318500f, -0.971139158449725090f, 0.237768670355934210f,
+  -0.971321810419786160f,
+  0.237023605994367340f, -0.971503890986251780f, 0.236278402197919620f,
+  -0.971685400042008540f,
+  0.235533059404975460f, -0.971866337480279400f, 0.234787578054001080f,
+  -0.972046703194623500f,
+  0.234041958583543460f, -0.972226497078936270f, 0.233296201432231560f,
+  -0.972405719027449770f,
+  0.232550307038775330f, -0.972584368934732210f, 0.231804275841964780f,
+  -0.972762446695688570f,
+  0.231058108280671280f, -0.972939952205560070f, 0.230311804793845530f,
+  -0.973116885359925130f,
+  0.229565365820518870f, -0.973293246054698250f, 0.228818791799802360f,
+  -0.973469034186130950f,
+  0.228072083170885790f, -0.973644249650811870f, 0.227325240373038830f,
+  -0.973818892345666100f,
+  0.226578263845610110f, -0.973992962167955830f, 0.225831154028026200f,
+  -0.974166459015280320f,
+  0.225083911359792780f, -0.974339382785575860f, 0.224336536280493690f,
+  -0.974511733377115720f,
+  0.223589029229790020f, -0.974683510688510670f, 0.222841390647421280f,
+  -0.974854714618708430f,
+  0.222093620973203590f, -0.975025345066994120f, 0.221345720647030810f,
+  -0.975195401932990370f,
+  0.220597690108873650f, -0.975364885116656870f, 0.219849529798778750f,
+  -0.975533794518291360f,
+  0.219101240156869770f, -0.975702130038528570f, 0.218352821623346430f,
+  -0.975869891578341030f,
+  0.217604274638483670f, -0.976037079039039020f, 0.216855599642632570f,
+  -0.976203692322270560f,
+  0.216106797076219600f, -0.976369731330021140f, 0.215357867379745550f,
+  -0.976535195964614470f,
+  0.214608810993786920f, -0.976700086128711840f, 0.213859628358993830f,
+  -0.976864401725312640f,
+  0.213110319916091360f, -0.977028142657754390f, 0.212360886105878580f,
+  -0.977191308829712280f,
+  0.211611327369227610f, -0.977353900145199960f, 0.210861644147084830f,
+  -0.977515916508569280f,
+  0.210111836880469720f, -0.977677357824509930f, 0.209361906010474190f,
+  -0.977838223998050430f,
+  0.208611851978263460f, -0.977998514934557140f, 0.207861675225075150f,
+  -0.978158230539735050f,
+  0.207111376192218560f, -0.978317370719627650f, 0.206360955321075680f,
+  -0.978475935380616830f,
+  0.205610413053099320f, -0.978633924429423100f, 0.204859749829814420f,
+  -0.978791337773105670f,
+  0.204108966092817010f, -0.978948175319062200f, 0.203358062283773370f,
+  -0.979104436975029250f,
+  0.202607038844421110f, -0.979260122649082020f, 0.201855896216568160f,
+  -0.979415232249634780f,
+  0.201104634842091960f, -0.979569765685440520f, 0.200353255162940420f,
+  -0.979723722865591170f,
+  0.199601757621131050f, -0.979877103699517640f, 0.198850142658750120f,
+  -0.980029908096989980f,
+  0.198098410717953730f, -0.980182135968117320f, 0.197346562240966000f,
+  -0.980333787223347960f,
+  0.196594597670080220f, -0.980484861773469380f, 0.195842517447657990f,
+  -0.980635359529608120f,
+  0.195090322016128330f, -0.980785280403230430f, 0.194338011817988600f,
+  -0.980934624306141640f,
+  0.193585587295803750f, -0.981083391150486590f, 0.192833048892205290f,
+  -0.981231580848749730f,
+  0.192080397049892380f, -0.981379193313754560f, 0.191327632211630990f,
+  -0.981526228458664660f,
+  0.190574754820252800f, -0.981672686196983110f, 0.189821765318656580f,
+  -0.981818566442552500f,
+  0.189068664149806280f, -0.981963869109555240f, 0.188315451756732120f,
+  -0.982108594112513610f,
+  0.187562128582529740f, -0.982252741366289370f, 0.186808695070359330f,
+  -0.982396310786084690f,
+  0.186055151663446630f, -0.982539302287441240f, 0.185301498805082040f,
+  -0.982681715786240860f,
+  0.184547736938619640f, -0.982823551198705240f, 0.183793866507478390f,
+  -0.982964808441396440f,
+  0.183039887955141060f, -0.983105487431216290f, 0.182285801725153320f,
+  -0.983245588085407070f,
+  0.181531608261125130f, -0.983385110321551180f, 0.180777308006728670f,
+  -0.983524054057571260f,
+  0.180022901405699510f, -0.983662419211730250f, 0.179268388901835880f,
+  -0.983800205702631490f,
+  0.178513770938997590f, -0.983937413449218920f, 0.177759047961107140f,
+  -0.984074042370776450f,
+  0.177004220412148860f, -0.984210092386929030f, 0.176249288736167940f,
+  -0.984345563417641900f,
+  0.175494253377271400f, -0.984480455383220930f, 0.174739114779627310f,
+  -0.984614768204312600f,
+  0.173983873387463850f, -0.984748501801904210f, 0.173228529645070490f,
+  -0.984881656097323700f,
+  0.172473083996796030f, -0.985014231012239840f, 0.171717536887049970f,
+  -0.985146226468662230f,
+  0.170961888760301360f, -0.985277642388941220f, 0.170206140061078120f,
+  -0.985408478695768420f,
+  0.169450291233967930f, -0.985538735312176060f, 0.168694342723617440f,
+  -0.985668412161537550f,
+  0.167938294974731230f, -0.985797509167567370f, 0.167182148432072880f,
+  -0.985926026254321130f,
+  0.166425903540464220f, -0.986053963346195440f, 0.165669560744784140f,
+  -0.986181320367928270f,
+  0.164913120489970090f, -0.986308097244598670f, 0.164156583221015890f,
+  -0.986434293901627070f,
+  0.163399949382973230f, -0.986559910264775410f, 0.162643219420950450f,
+  -0.986684946260146690f,
+  0.161886393780111910f, -0.986809401814185420f, 0.161129472905678780f,
+  -0.986933276853677710f,
+  0.160372457242928400f, -0.987056571305750970f, 0.159615347237193090f,
+  -0.987179285097874340f,
+  0.158858143333861390f, -0.987301418157858430f, 0.158100845978377090f,
+  -0.987422970413855410f,
+  0.157343455616238280f, -0.987543941794359230f, 0.156585972692998590f,
+  -0.987664332228205710f,
+  0.155828397654265320f, -0.987784141644572180f, 0.155070730945700510f,
+  -0.987903369972977790f,
+  0.154312973013020240f, -0.988022017143283530f, 0.153555124301993500f,
+  -0.988140083085692570f,
+  0.152797185258443410f, -0.988257567730749460f, 0.152039156328246160f,
+  -0.988374471009341280f,
+  0.151281037957330250f, -0.988490792852696590f, 0.150522830591677370f,
+  -0.988606533192386450f,
+  0.149764534677321620f, -0.988721691960323780f, 0.149006150660348470f,
+  -0.988836269088763540f,
+  0.148247678986896200f, -0.988950264510302990f, 0.147489120103153680f,
+  -0.989063678157881540f,
+  0.146730474455361750f, -0.989176509964781010f, 0.145971742489812370f,
+  -0.989288759864625170f,
+  0.145212924652847520f, -0.989400427791380380f, 0.144454021390860440f,
+  -0.989511513679355190f,
+  0.143695033150294580f, -0.989622017463200780f, 0.142935960377642700f,
+  -0.989731939077910570f,
+  0.142176803519448000f, -0.989841278458820530f, 0.141417563022303130f,
+  -0.989950035541608990f,
+  0.140658239332849240f, -0.990058210262297120f, 0.139898832897777380f,
+  -0.990165802557248400f,
+  0.139139344163826280f, -0.990272812363169110f, 0.138379773577783890f,
+  -0.990379239617108160f,
+  0.137620121586486180f, -0.990485084256456980f, 0.136860388636816430f,
+  -0.990590346218950150f,
+  0.136100575175706200f, -0.990695025442664630f, 0.135340681650134330f,
+  -0.990799121866020370f,
+  0.134580708507126220f, -0.990902635427780010f, 0.133820656193754690f,
+  -0.991005566067049370f,
+  0.133060525157139180f, -0.991107913723276780f, 0.132300315844444680f,
+  -0.991209678336254060f,
+  0.131540028702883280f, -0.991310859846115440f, 0.130779664179711790f,
+  -0.991411458193338540f,
+  0.130019222722233350f, -0.991511473318743900f, 0.129258704777796270f,
+  -0.991610905163495370f,
+  0.128498110793793220f, -0.991709753669099530f, 0.127737441217662280f,
+  -0.991808018777406430f,
+  0.126976696496885980f, -0.991905700430609330f, 0.126215877078990400f,
+  -0.992002798571244520f,
+  0.125454983411546210f, -0.992099313142191800f, 0.124694015942167770f,
+  -0.992195244086673920f,
+  0.123932975118512200f, -0.992290591348257370f, 0.123171861388280650f,
+  -0.992385354870851670f,
+  0.122410675199216280f, -0.992479534598709970f, 0.121649416999105540f,
+  -0.992573130476428810f,
+  0.120888087235777220f, -0.992666142448948020f, 0.120126686357101580f,
+  -0.992758570461551140f,
+  0.119365214810991350f, -0.992850414459865100f, 0.118603673045400840f,
+  -0.992941674389860470f,
+  0.117842061508325020f, -0.993032350197851410f, 0.117080380647800550f,
+  -0.993122441830495580f,
+  0.116318630911904880f, -0.993211949234794500f, 0.115556812748755290f,
+  -0.993300872358093280f,
+  0.114794926606510250f, -0.993389211148080650f, 0.114032972933367300f,
+  -0.993476965552789190f,
+  0.113270952177564360f, -0.993564135520595300f, 0.112508864787378830f,
+  -0.993650721000219120f,
+  0.111746711211126660f, -0.993736721940724600f, 0.110984491897163380f,
+  -0.993822138291519660f,
+  0.110222207293883180f, -0.993906970002356060f, 0.109459857849718030f,
+  -0.993991217023329380f,
+  0.108697444013138670f, -0.994074879304879370f, 0.107934966232653760f,
+  -0.994157956797789730f,
+  0.107172424956808870f, -0.994240449453187900f, 0.106409820634187840f,
+  -0.994322357222545810f,
+  0.105647153713410700f, -0.994403680057679100f, 0.104884424643134970f,
+  -0.994484417910747600f,
+  0.104121633872054730f, -0.994564570734255420f, 0.103358781848899700f,
+  -0.994644138481050710f,
+  0.102595869022436280f, -0.994723121104325700f, 0.101832895841466670f,
+  -0.994801518557617110f,
+  0.101069862754827880f, -0.994879330794805620f, 0.100306770211392820f,
+  -0.994956557770116380f,
+  0.099543618660069444f, -0.995033199438118630f, 0.098780408549799664f,
+  -0.995109255753726110f,
+  0.098017140329560770f, -0.995184726672196820f, 0.097253814448363354f,
+  -0.995259612149133390f,
+  0.096490431355252607f, -0.995333912140482280f, 0.095726991499307315f,
+  -0.995407626602534900f,
+  0.094963495329639061f, -0.995480755491926940f, 0.094199943295393190f,
+  -0.995553298765638470f,
+  0.093436335845747912f, -0.995625256380994310f, 0.092672673429913366f,
+  -0.995696628295663520f,
+  0.091908956497132696f, -0.995767414467659820f, 0.091145185496681130f,
+  -0.995837614855341610f,
+  0.090381360877865011f, -0.995907229417411720f, 0.089617483090022917f,
+  -0.995976258112917790f,
+  0.088853552582524684f, -0.996044700901251970f, 0.088089569804770507f,
+  -0.996112557742151130f,
+  0.087325535206192226f, -0.996179828595696870f, 0.086561449236251239f,
+  -0.996246513422315520f,
+  0.085797312344439880f, -0.996312612182778000f, 0.085033124980280414f,
+  -0.996378124838200210f,
+  0.084268887593324127f, -0.996443051350042630f, 0.083504600633152404f,
+  -0.996507391680110820f,
+  0.082740264549375803f, -0.996571145790554840f, 0.081975879791633108f,
+  -0.996634313643869900f,
+  0.081211446809592386f, -0.996696895202896060f, 0.080446966052950097f,
+  -0.996758890430818000f,
+  0.079682437971430126f, -0.996820299291165670f, 0.078917863014785095f,
+  -0.996881121747813850f,
+  0.078153241632794315f, -0.996941357764982160f, 0.077388574275265049f,
+  -0.997001007307235290f,
+  0.076623861392031617f, -0.997060070339482960f, 0.075859103432954503f,
+  -0.997118546826979980f,
+  0.075094300847921291f, -0.997176436735326190f, 0.074329454086845867f,
+  -0.997233740030466160f,
+  0.073564563599667454f, -0.997290456678690210f, 0.072799629836351618f,
+  -0.997346586646633230f,
+  0.072034653246889416f, -0.997402129901275300f, 0.071269634281296415f,
+  -0.997457086409941910f,
+  0.070504573389614009f, -0.997511456140303450f, 0.069739471021907376f,
+  -0.997565239060375750f,
+  0.068974327628266732f, -0.997618435138519550f, 0.068209143658806454f,
+  -0.997671044343441000f,
+  0.067443919563664106f, -0.997723066644191640f, 0.066678655793001543f,
+  -0.997774502010167820f,
+  0.065913352797003930f, -0.997825350411111640f, 0.065148011025878860f,
+  -0.997875611817110150f,
+  0.064382630929857410f, -0.997925286198596000f, 0.063617212959193190f,
+  -0.997974373526346990f,
+  0.062851757564161420f, -0.998022873771486240f, 0.062086265195060247f,
+  -0.998070786905482340f,
+  0.061320736302208648f, -0.998118112900149180f, 0.060555171335947781f,
+  -0.998164851727646240f,
+  0.059789570746640007f, -0.998211003360478190f, 0.059023934984667986f,
+  -0.998256567771495180f,
+  0.058258264500435732f, -0.998301544933892890f, 0.057492559744367684f,
+  -0.998345934821212370f,
+  0.056726821166907783f, -0.998389737407340160f, 0.055961049218520520f,
+  -0.998432952666508440f,
+  0.055195244349690031f, -0.998475580573294770f, 0.054429407010919147f,
+  -0.998517621102622210f,
+  0.053663537652730679f, -0.998559074229759310f, 0.052897636725665401f,
+  -0.998599939930320370f,
+  0.052131704680283317f, -0.998640218180265270f, 0.051365741967162731f,
+  -0.998679908955899090f,
+  0.050599749036899337f, -0.998719012233872940f, 0.049833726340107257f,
+  -0.998757527991183340f,
+  0.049067674327418126f, -0.998795456205172410f, 0.048301593449480172f,
+  -0.998832796853527990f,
+  0.047535484156959261f, -0.998869549914283560f, 0.046769346900537960f,
+  -0.998905715365818290f,
+  0.046003182130914644f, -0.998941293186856870f, 0.045236990298804750f,
+  -0.998976283356469820f,
+  0.044470771854938744f, -0.999010685854073380f, 0.043704527250063421f,
+  -0.999044500659429290f,
+  0.042938256934940959f, -0.999077727752645360f, 0.042171961360348002f,
+  -0.999110367114174890f,
+  0.041405640977076712f, -0.999142418724816910f, 0.040639296235933854f,
+  -0.999173882565716380f,
+  0.039872927587739845f, -0.999204758618363890f, 0.039106535483329839f,
+  -0.999235046864595850f,
+  0.038340120373552791f, -0.999264747286594420f, 0.037573682709270514f,
+  -0.999293859866887790f,
+  0.036807222941358991f, -0.999322384588349540f, 0.036040741520706299f,
+  -0.999350321434199440f,
+  0.035274238898213947f, -0.999377670388002850f, 0.034507715524795889f,
+  -0.999404431433671300f,
+  0.033741171851377642f, -0.999430604555461730f, 0.032974608328897315f,
+  -0.999456189737977340f,
+  0.032208025408304704f, -0.999481186966166950f, 0.031441423540560343f,
+  -0.999505596225325310f,
+  0.030674803176636581f, -0.999529417501093140f, 0.029908164767516655f,
+  -0.999552650779456990f,
+  0.029141508764193740f, -0.999575296046749220f, 0.028374835617672258f,
+  -0.999597353289648380f,
+  0.027608145778965820f, -0.999618822495178640f, 0.026841439699098527f,
+  -0.999639703650710200f,
+  0.026074717829104040f, -0.999659996743959220f, 0.025307980620024630f,
+  -0.999679701762987930f,
+  0.024541228522912264f, -0.999698818696204250f, 0.023774461988827676f,
+  -0.999717347532362190f,
+  0.023007681468839410f, -0.999735288260561680f, 0.022240887414024919f,
+  -0.999752640870248840f,
+  0.021474080275469605f, -0.999769405351215280f, 0.020707260504265912f,
+  -0.999785581693599210f,
+  0.019940428551514598f, -0.999801169887884260f, 0.019173584868322699f,
+  -0.999816169924900410f,
+  0.018406729905804820f, -0.999830581795823400f, 0.017639864115082195f,
+  -0.999844405492175240f,
+  0.016872987947281773f, -0.999857641005823860f, 0.016106101853537263f,
+  -0.999870288328982950f,
+  0.015339206284988220f, -0.999882347454212560f, 0.014572301692779104f,
+  -0.999893818374418490f,
+  0.013805388528060349f, -0.999904701082852900f, 0.013038467241987433f,
+  -0.999914995573113470f,
+  0.012271538285719944f, -0.999924701839144500f, 0.011504602110422875f,
+  -0.999933819875236000f,
+  0.010737659167264572f, -0.999942349676023910f, 0.009970709907418029f,
+  -0.999950291236490480f,
+  0.009203754782059960f, -0.999957644551963900f, 0.008436794242369860f,
+  -0.999964409618118280f,
+  0.007669828739531077f, -0.999970586430974140f, 0.006902858724729877f,
+  -0.999976174986897610f,
+  0.006135884649154515f, -0.999981175282601110f, 0.005368906963996303f,
+  -0.999985587315143200f,
+  0.004601926120448672f, -0.999989411081928400f, 0.003834942569706248f,
+  -0.999992646580707190f,
+  0.003067956762966138f, -0.999995293809576190f, 0.002300969151425887f,
+  -0.999997352766978210f,
+  0.001533980186284766f, -0.999998823451701880f, 0.000766990318742846f,
+  -0.999999705862882230f
+};
+
+static const float32_t Weights_8192[16384] = {
+  1.000000000000000000, -0.000000000000000000, 0.999999981616429330,
+    -0.000191747597310703,
+  0.999999926465717890, -0.000383495187571396, 0.999999834547867670,
+    -0.000575242763732066,
+  0.999999705862882230, -0.000766990318742704, 0.999999540410766110,
+    -0.000958737845553301,
+  0.999999338191525530, -0.001150485337113849, 0.999999099205167830,
+    -0.001342232786374338,
+  0.999998823451701880, -0.001533980186284766, 0.999998510931137790,
+    -0.001725727529795126,
+  0.999998161643486980, -0.001917474809855419, 0.999997775588762350,
+    -0.002109222019415644,
+  0.999997352766978210, -0.002300969151425805, 0.999996893178149880,
+    -0.002492716198835908,
+  0.999996396822294350, -0.002684463154595962, 0.999995863699429940,
+    -0.002876210011655979,
+  0.999995293809576190, -0.003067956762965976, 0.999994687152754080,
+    -0.003259703401475973,
+  0.999994043728985820, -0.003451449920135994, 0.999993363538295150,
+    -0.003643196311896068,
+  0.999992646580707190, -0.003834942569706228, 0.999991892856248010,
+    -0.004026688686516512,
+  0.999991102364945590, -0.004218434655276963, 0.999990275106828920,
+    -0.004410180468937631,
+  0.999989411081928400, -0.004601926120448571, 0.999988510290275690,
+    -0.004793671602759841,
+  0.999987572731904080, -0.004985416908821511, 0.999986598406848000,
+    -0.005177162031583651,
+  0.999985587315143200, -0.005368906963996343, 0.999984539456826970,
+    -0.005560651699009674,
+  0.999983454831937730, -0.005752396229573736, 0.999982333440515350,
+    -0.005944140548638633,
+  0.999981175282601110, -0.006135884649154475, 0.999979980358237650,
+    -0.006327628524071378,
+  0.999978748667468830, -0.006519372166339468, 0.999977480210339940,
+    -0.006711115568908879,
+  0.999976174986897610, -0.006902858724729756, 0.999974832997189810,
+    -0.007094601626752250,
+  0.999973454241265940, -0.007286344267926521, 0.999972038719176730,
+    -0.007478086641202744,
+  0.999970586430974140, -0.007669828739531097, 0.999969097376711580,
+    -0.007861570555861772,
+  0.999967571556443780, -0.008053312083144972, 0.999966008970226920,
+    -0.008245053314330906,
+  0.999964409618118280, -0.008436794242369799, 0.999962773500176930,
+    -0.008628534860211886,
+  0.999961100616462820, -0.008820275160807412, 0.999959390967037450,
+    -0.009012015137106633,
+  0.999957644551963900, -0.009203754782059819, 0.999955861371306100,
+    -0.009395494088617252,
+  0.999954041425129780, -0.009587233049729225, 0.999952184713501780,
+    -0.009778971658346044,
+  0.999950291236490480, -0.009970709907418031, 0.999948360994165400,
+    -0.010162447789895513,
+  0.999946393986597460, -0.010354185298728842, 0.999944390213859060,
+    -0.010545922426868378,
+  0.999942349676023910, -0.010737659167264491, 0.999940272373166960,
+    -0.010929395512867571,
+  0.999938158305364590, -0.011121131456628021, 0.999936007472694620,
+    -0.011312866991496258,
+  0.999933819875236000, -0.011504602110422714, 0.999931595513069200,
+    -0.011696336806357838,
+  0.999929334386276070, -0.011888071072252092, 0.999927036494939640,
+    -0.012079804901055957,
+  0.999924701839144500, -0.012271538285719925, 0.999922330418976490,
+    -0.012463271219194511,
+  0.999919922234522750, -0.012655003694430242, 0.999917477285871770,
+    -0.012846735704377662,
+  0.999914995573113470, -0.013038467241987334, 0.999912477096339240,
+    -0.013230198300209835,
+  0.999909921855641540, -0.013421928871995765, 0.999907329851114300,
+    -0.013613658950295740,
+  0.999904701082852900, -0.013805388528060391, 0.999902035550953920,
+    -0.013997117598240367,
+  0.999899333255515390, -0.014188846153786345, 0.999896594196636680,
+    -0.014380574187649006,
+  0.999893818374418490, -0.014572301692779064, 0.999891005788962950,
+    -0.014764028662127246,
+  0.999888156440373320, -0.014955755088644296, 0.999885270328754520,
+    -0.015147480965280987,
+  0.999882347454212560, -0.015339206284988100, 0.999879387816854930,
+    -0.015530931040716447,
+  0.999876391416790410, -0.015722655225416857, 0.999873358254129260,
+    -0.015914378832040183,
+  0.999870288328982950, -0.016106101853537287, 0.999867181641464380,
+    -0.016297824282859065,
+  0.999864038191687680, -0.016489546112956437, 0.999860857979768540,
+    -0.016681267336780332,
+  0.999857641005823860, -0.016872987947281710, 0.999854387269971890,
+    -0.017064707937411563,
+  0.999851096772332190, -0.017256427300120877, 0.999847769513025900,
+    -0.017448146028360693,
+  0.999844405492175240, -0.017639864115082053, 0.999841004709904000,
+    -0.017831581553236039,
+  0.999837567166337090, -0.018023298335773746, 0.999834092861600960,
+    -0.018215014455646290,
+  0.999830581795823400, -0.018406729905804820, 0.999827033969133420,
+    -0.018598444679200511,
+  0.999823449381661570, -0.018790158768784555, 0.999819828033539420,
+    -0.018981872167508178,
+  0.999816169924900410, -0.019173584868322623, 0.999812475055878780,
+    -0.019365296864179156,
+  0.999808743426610520, -0.019557008148029083, 0.999804975037232870,
+    -0.019748718712823729,
+  0.999801169887884260, -0.019940428551514441, 0.999797327978704690,
+    -0.020132137657052594,
+  0.999793449309835270, -0.020323846022389593, 0.999789533881418780,
+    -0.020515553640476875,
+  0.999785581693599210, -0.020707260504265895, 0.999781592746521670,
+    -0.020898966606708137,
+  0.999777567040332940, -0.021090671940755121, 0.999773504575180990,
+    -0.021282376499358387,
+  0.999769405351215280, -0.021474080275469508, 0.999765269368586450,
+    -0.021665783262040078,
+  0.999761096627446610, -0.021857485452021735, 0.999756887127949080,
+    -0.022049186838366135,
+  0.999752640870248840, -0.022240887414024961, 0.999748357854501780,
+    -0.022432587171949934,
+  0.999744038080865430, -0.022624286105092803, 0.999739681549498660,
+    -0.022815984206405345,
+  0.999735288260561680, -0.023007681468839369, 0.999730858214216030,
+    -0.023199377885346720,
+  0.999726391410624470, -0.023391073448879258, 0.999721887849951310,
+    -0.023582768152388894,
+  0.999717347532362190, -0.023774461988827555, 0.999712770458023870,
+    -0.023966154951147210,
+  0.999708156627104880, -0.024157847032299864, 0.999703506039774650,
+    -0.024349538225237534,
+  0.999698818696204250, -0.024541228522912288, 0.999694094596566000,
+    -0.024732917918276223,
+  0.999689333741033640, -0.024924606404281468, 0.999684536129782140,
+    -0.025116293973880186,
+  0.999679701762987930, -0.025307980620024571, 0.999674830640828740,
+    -0.025499666335666853,
+  0.999669922763483760, -0.025691351113759295, 0.999664978131133310,
+    -0.025883034947254198,
+  0.999659996743959220, -0.026074717829103901, 0.999654978602144690,
+    -0.026266399752260760,
+  0.999649923705874240, -0.026458080709677187, 0.999644832055333610,
+    -0.026649760694305618,
+  0.999639703650710200, -0.026841439699098531, 0.999634538492192300,
+    -0.027033117717008431,
+  0.999629336579970110, -0.027224794740987875, 0.999624097914234570,
+    -0.027416470763989436,
+  0.999618822495178640, -0.027608145778965740, 0.999613510322995950,
+    -0.027799819778869445,
+  0.999608161397882110, -0.027991492756653243, 0.999602775720033530,
+    -0.028183164705269874,
+  0.999597353289648380, -0.028374835617672099, 0.999591894106925950,
+    -0.028566505486812728,
+  0.999586398172067070, -0.028758174305644615, 0.999580865485273700,
+    -0.028949842067120635,
+  0.999575296046749220, -0.029141508764193722, 0.999569689856698580,
+    -0.029333174389816835,
+  0.999564046915327740, -0.029524838936942976, 0.999558367222844300,
+    -0.029716502398525191,
+  0.999552650779456990, -0.029908164767516555, 0.999546897585375960,
+    -0.030099826036870198,
+  0.999541107640812940, -0.030291486199539284, 0.999535280945980540,
+    -0.030483145248477009,
+  0.999529417501093140, -0.030674803176636626, 0.999523517306366350,
+    -0.030866459976971412,
+  0.999517580362016990, -0.031058115642434700, 0.999511606668263440,
+    -0.031249770165979861,
+  0.999505596225325310, -0.031441423540560301, 0.999499549033423640,
+    -0.031633075759129478,
+  0.999493465092780590, -0.031824726814640887, 0.999487344403620080,
+    -0.032016376700048060,
+  0.999481186966166950, -0.032208025408304586, 0.999474992780647780,
+    -0.032399672932364086,
+  0.999468761847290050, -0.032591319265180226, 0.999462494166323160,
+    -0.032782964399706724,
+  0.999456189737977340, -0.032974608328897335, 0.999449848562484530,
+    -0.033166251045705857,
+  0.999443470640077770, -0.033357892543086139, 0.999437055970991530,
+    -0.033549532813992068,
+  0.999430604555461730, -0.033741171851377580, 0.999424116393725640,
+    -0.033932809648196664,
+  0.999417591486021720, -0.034124446197403326, 0.999411029832589780,
+    -0.034316081491951651,
+  0.999404431433671300, -0.034507715524795750, 0.999397796289508640,
+    -0.034699348288889799,
+  0.999391124400346050, -0.034890979777188004, 0.999384415766428560,
+    -0.035082609982644619,
+  0.999377670388002850, -0.035274238898213947, 0.999370888265317170,
+    -0.035465866516850353,
+  0.999364069398620550, -0.035657492831508222, 0.999357213788164000,
+    -0.035849117835142018,
+  0.999350321434199440, -0.036040741520706229, 0.999343392336980220,
+    -0.036232363881155395,
+  0.999336426496761240, -0.036423984909444110, 0.999329423913798420,
+    -0.036615604598527030,
+  0.999322384588349540, -0.036807222941358832, 0.999315308520673070,
+    -0.036998839930894263,
+  0.999308195711029470, -0.037190455560088119, 0.999301046159680070,
+    -0.037382069821895229,
+  0.999293859866887790, -0.037573682709270494, 0.999286636832916740,
+    -0.037765294215168860,
+  0.999279377058032710, -0.037956904332545310, 0.999272080542502610,
+    -0.038148513054354891,
+  0.999264747286594420, -0.038340120373552694, 0.999257377290578060,
+    -0.038531726283093870,
+  0.999249970554724420, -0.038723330775933623, 0.999242527079305830,
+    -0.038914933845027193,
+  0.999235046864595850, -0.039106535483329888, 0.999227529910869610,
+    -0.039298135683797059,
+  0.999219976218403530, -0.039489734439384118, 0.999212385787475290,
+    -0.039681331743046527,
+  0.999204758618363890, -0.039872927587739811, 0.999197094711349880,
+    -0.040064521966419520,
+  0.999189394066714920, -0.040256114872041282, 0.999181656684742350,
+    -0.040447706297560782,
+  0.999173882565716380, -0.040639296235933736, 0.999166071709923000,
+    -0.040830884680115948,
+  0.999158224117649430, -0.041022471623063238, 0.999150339789184110,
+    -0.041214057057731519,
+  0.999142418724816910, -0.041405640977076739, 0.999134460924839150,
+    -0.041597223374054894,
+  0.999126466389543390, -0.041788804241622061, 0.999118435119223490,
+    -0.041980383572734356,
+  0.999110367114174890, -0.042171961360347947, 0.999102262374694130,
+    -0.042363537597419072,
+  0.999094120901079070, -0.042555112276904020, 0.999085942693629270,
+    -0.042746685391759132,
+  0.999077727752645360, -0.042938256934940820, 0.999069476078429330,
+    -0.043129826899405546,
+  0.999061187671284600, -0.043321395278109825, 0.999052862531515930,
+    -0.043512962064010237,
+  0.999044500659429290, -0.043704527250063421, 0.999036102055332330,
+    -0.043896090829226068,
+  0.999027666719533690, -0.044087652794454944, 0.999019194652343460,
+    -0.044279213138706849,
+  0.999010685854073380, -0.044470771854938668, 0.999002140325035980,
+    -0.044662328936107325,
+  0.998993558065545680, -0.044853884375169815, 0.998984939075918010,
+    -0.045045438165083197,
+  0.998976283356469820, -0.045236990298804590, 0.998967590907519300,
+    -0.045428540769291155,
+  0.998958861729386080, -0.045620089569500144, 0.998950095822391250,
+    -0.045811636692388844,
+  0.998941293186856870, -0.046003182130914623, 0.998932453823106690,
+    -0.046194725878034908,
+  0.998923577731465780, -0.046386267926707157, 0.998914664912260440,
+    -0.046577808269888943,
+  0.998905715365818290, -0.046769346900537863, 0.998896729092468410,
+    -0.046960883811611592,
+  0.998887706092541290, -0.047152418996067869, 0.998878646366368690,
+    -0.047343952446864478,
+  0.998869549914283560, -0.047535484156959303, 0.998860416736620520,
+    -0.047727014119310254,
+  0.998851246833715180, -0.047918542326875327, 0.998842040205904840,
+    -0.048110068772612591,
+  0.998832796853527990, -0.048301593449480144, 0.998823516776924490,
+    -0.048493116350436176,
+  0.998814199976435390, -0.048684637468438943, 0.998804846452403420,
+    -0.048876156796446760,
+  0.998795456205172410, -0.049067674327418015, 0.998786029235087640,
+    -0.049259190054311140,
+  0.998776565542495610, -0.049450703970084664, 0.998767065127744380,
+    -0.049642216067697156,
+  0.998757527991183340, -0.049833726340107277, 0.998747954133162860,
+    -0.050025234780273729,
+  0.998738343554035230, -0.050216741381155311, 0.998728696254153720,
+    -0.050408246135710856,
+  0.998719012233872940, -0.050599749036899282, 0.998709291493549030,
+    -0.050791250077679581,
+  0.998699534033539280, -0.050982749251010803, 0.998689739854202620,
+    -0.051174246549852080,
+  0.998679908955899090, -0.051365741967162593, 0.998670041338990070,
+    -0.051557235495901611,
+  0.998660137003838490, -0.051748727129028456, 0.998650195950808280,
+    -0.051940216859502536,
+  0.998640218180265270, -0.052131704680283324, 0.998630203692576050,
+    -0.052323190584330347,
+  0.998620152488108870, -0.052514674564603223, 0.998610064567233340,
+    -0.052706156614061632,
+  0.998599939930320370, -0.052897636725665324, 0.998589778577742230,
+    -0.053089114892374133,
+  0.998579580509872500, -0.053280591107147945, 0.998569345727086110,
+    -0.053472065362946727,
+  0.998559074229759310, -0.053663537652730520, 0.998548766018269920,
+    -0.053855007969459440,
+  0.998538421092996730, -0.054046476306093660, 0.998528039454320230,
+    -0.054237942655593452,
+  0.998517621102622210, -0.054429407010919133, 0.998507166038285490,
+    -0.054620869365031105,
+  0.998496674261694640, -0.054812329710889854, 0.998486145773235360,
+    -0.055003788041455920,
+  0.998475580573294770, -0.055195244349689934, 0.998464978662261250,
+    -0.055386698628552597,
+  0.998454340040524800, -0.055578150871004678, 0.998443664708476340,
+    -0.055769601070007030,
+  0.998432952666508440, -0.055961049218520569, 0.998422203915015020,
+    -0.056152495309506292,
+  0.998411418454391300, -0.056343939335925290, 0.998400596285033640,
+    -0.056535381290738700,
+  0.998389737407340160, -0.056726821166907748, 0.998378841821709990,
+    -0.056918258957393740,
+  0.998367909528543820, -0.057109694655158062, 0.998356940528243420,
+    -0.057301128253162158,
+  0.998345934821212370, -0.057492559744367566, 0.998334892407855000,
+    -0.057683989121735904,
+  0.998323813288577560, -0.057875416378228857, 0.998312697463787260,
+    -0.058066841506808194,
+  0.998301544933892890, -0.058258264500435752, 0.998290355699304350,
+    -0.058449685352073476,
+  0.998279129760433200, -0.058641104054683341, 0.998267867117692110,
+    -0.058832520601227435,
+  0.998256567771495180, -0.059023934984667931, 0.998245231722257880,
+    -0.059215347197967061,
+  0.998233858970396850, -0.059406757234087150, 0.998222449516330550,
+    -0.059598165085990591,
+  0.998211003360478190, -0.059789570746639868, 0.998199520503260660,
+    -0.059980974208997548,
+  0.998188000945100300, -0.060172375466026259, 0.998176444686420530,
+    -0.060363774510688743,
+  0.998164851727646240, -0.060555171335947788, 0.998153222069203760,
+    -0.060746565934766288,
+  0.998141555711520520, -0.060937958300107203, 0.998129852655025630,
+    -0.061129348424933588,
+  0.998118112900149180, -0.061320736302208578, 0.998106336447323050,
+    -0.061512121924895378,
+  0.998094523296980010, -0.061703505285957298, 0.998082673449554590,
+    -0.061894886378357716,
+  0.998070786905482340, -0.062086265195060088, 0.998058863665200250,
+    -0.062277641729027972,
+  0.998046903729146840, -0.062469015973224996, 0.998034907097761770,
+    -0.062660387920614874,
+  0.998022873771486240, -0.062851757564161406, 0.998010803750762450,
+    -0.063043124896828492,
+  0.997998697036034390, -0.063234489911580066, 0.997986553627747020,
+    -0.063425852601380228,
+  0.997974373526346990, -0.063617212959193106, 0.997962156732281950,
+    -0.063808570977982898,
+  0.997949903246001190, -0.063999926650713940, 0.997937613067955250,
+    -0.064191279970350637,
+  0.997925286198596000, -0.064382630929857465, 0.997912922638376610,
+    -0.064573979522198982,
+  0.997900522387751620, -0.064765325740339885, 0.997888085447177110,
+    -0.064956669577244872,
+  0.997875611817110150, -0.065148011025878833, 0.997863101498009500,
+    -0.065339350079206632,
+  0.997850554490335110, -0.065530686730193327, 0.997837970794548280,
+    -0.065722020971803990,
+  0.997825350411111640, -0.065913352797003805, 0.997812693340489280,
+    -0.066104682198758077,
+  0.997799999583146470, -0.066296009170032130, 0.997787269139549960,
+    -0.066487333703791451,
+  0.997774502010167820, -0.066678655793001557, 0.997761698195469560,
+    -0.066869975430628115,
+  0.997748857695925690, -0.067061292609636822, 0.997735980512008620,
+    -0.067252607322993499,
+  0.997723066644191640, -0.067443919563664051, 0.997710116092949570,
+    -0.067635229324614479,
+  0.997697128858758500, -0.067826536598810869, 0.997684104942096030,
+    -0.068017841379219388,
+  0.997671044343441000, -0.068209143658806329, 0.997657947063273710,
+    -0.068400443430538013,
+  0.997644813102075420, -0.068591740687380942, 0.997631642460329320,
+    -0.068783035422301630,
+  0.997618435138519550, -0.068974327628266746, 0.997605191137131640,
+    -0.069165617298242985,
+  0.997591910456652630, -0.069356904425197208, 0.997578593097570800,
+    -0.069548189002096306,
+  0.997565239060375750, -0.069739471021907307, 0.997551848345558430,
+    -0.069930750477597309,
+  0.997538420953611340, -0.070122027362133521, 0.997524956885027960,
+    -0.070313301668483250,
+  0.997511456140303450, -0.070504573389613856, 0.997497918719934210,
+    -0.070695842518492855,
+  0.997484344624417930, -0.070887109048087801, 0.997470733854253670,
+    -0.071078372971366405,
+  0.997457086409941910, -0.071269634281296401, 0.997443402291984360,
+    -0.071460892970845680,
+  0.997429681500884180, -0.071652149032982212, 0.997415924037145960,
+    -0.071843402460674027,
+  0.997402129901275300, -0.072034653246889332, 0.997388299093779460,
+    -0.072225901384596322,
+  0.997374431615167150, -0.072417146866763413, 0.997360527465947940,
+    -0.072608389686358993,
+  0.997346586646633230, -0.072799629836351673, 0.997332609157735470,
+    -0.072990867309710036,
+  0.997318594999768600, -0.073182102099402888, 0.997304544173247990,
+    -0.073373334198399032,
+  0.997290456678690210, -0.073564563599667426, 0.997276332516613180,
+    -0.073755790296177098,
+  0.997262171687536170, -0.073947014280897200, 0.997247974191979860,
+    -0.074138235546796979,
+  0.997233740030466280, -0.074329454086845756, 0.997219469203518670,
+    -0.074520669894013000,
+  0.997205161711661850, -0.074711882961268211, 0.997190817555421940,
+    -0.074903093281581082,
+  0.997176436735326190, -0.075094300847921305, 0.997162019251903290,
+    -0.075285505653258769,
+  0.997147565105683480, -0.075476707690563388, 0.997133074297198110,
+    -0.075667906952805231,
+  0.997118546826979980, -0.075859103432954447, 0.997103982695563330,
+    -0.076050297123981259,
+  0.997089381903483400, -0.076241488018856066, 0.997074744451277310,
+    -0.076432676110549283,
+  0.997060070339482960, -0.076623861392031492, 0.997045359568640040,
+    -0.076815043856273343,
+  0.997030612139289450, -0.077006223496245640, 0.997015828051973310,
+    -0.077197400304919200,
+  0.997001007307235290, -0.077388574275265049, 0.996986149905620180,
+    -0.077579745400254224,
+  0.996971255847674320, -0.077770913672857947, 0.996956325133945280,
+    -0.077962079086047492,
+  0.996941357764982160, -0.078153241632794232, 0.996926353741335090,
+    -0.078344401306069705,
+  0.996911313063555740, -0.078535558098845479, 0.996896235732197210,
+    -0.078726712004093299,
+  0.996881121747813850, -0.078917863014784942, 0.996865971110961310,
+    -0.079109011123892375,
+  0.996850783822196610, -0.079300156324387597, 0.996835559882078170,
+    -0.079491298609242769,
+  0.996820299291165670, -0.079682437971430126, 0.996805002050020430,
+    -0.079873574403921996,
+  0.996789668159204560, -0.080064707899690890, 0.996774297619282050,
+    -0.080255838451709319,
+  0.996758890430818000, -0.080446966052950014, 0.996743446594378860,
+    -0.080638090696385709,
+  0.996727966110532490, -0.080829212374989329, 0.996712448979848010,
+    -0.081020331081733857,
+  0.996696895202896060, -0.081211446809592441, 0.996681304780248300,
+    -0.081402559551538245,
+  0.996665677712478160, -0.081593669300544652, 0.996650014000160070,
+    -0.081784776049585076,
+  0.996634313643869900, -0.081975879791633066, 0.996618576644185070,
+    -0.082166980519662314,
+  0.996602803001684130, -0.082358078226646536, 0.996586992716946950,
+    -0.082549172905559673,
+  0.996571145790554840, -0.082740264549375692, 0.996555262223090540,
+    -0.082931353151068699,
+  0.996539342015137940, -0.083122438703612911, 0.996523385167282450,
+    -0.083313521199982685,
+  0.996507391680110820, -0.083504600633152432, 0.996491361554210920,
+    -0.083695676996096716,
+  0.996475294790172160, -0.083886750281790226, 0.996459191388585410,
+    -0.084077820483207694,
+  0.996443051350042630, -0.084268887593324071, 0.996426874675137240,
+    -0.084459951605114325,
+  0.996410661364464100, -0.084651012511553617, 0.996394411418619290,
+    -0.084842070305617134,
+  0.996378124838200210, -0.085033124980280275, 0.996361801623805720,
+    -0.085224176528518478,
+  0.996345441776035900, -0.085415224943307333, 0.996329045295492380,
+    -0.085606270217622529,
+  0.996312612182778000, -0.085797312344439894, 0.996296142438496850,
+    -0.085988351316735337,
+  0.996279636063254650, -0.086179387127484894, 0.996263093057658140,
+    -0.086370419769664752,
+  0.996246513422315520, -0.086561449236251170, 0.996229897157836500,
+    -0.086752475520220543,
+  0.996213244264832040, -0.086943498614549378, 0.996196554743914220,
+    -0.087134518512214307,
+  0.996179828595696980, -0.087325535206192059, 0.996163065820794950,
+    -0.087516548689459531,
+  0.996146266419824620, -0.087707558954993659, 0.996129430393403740,
+    -0.087898565995771588,
+  0.996112557742151130, -0.088089569804770507, 0.996095648466687300,
+    -0.088280570374967740,
+  0.996078702567633980, -0.088471567699340767, 0.996061720045614000,
+    -0.088662561770867149,
+  0.996044700901251970, -0.088853552582524600, 0.996027645135173610,
+    -0.089044540127290892,
+  0.996010552748005870, -0.089235524398144014, 0.995993423740377360,
+    -0.089426505388061961,
+  0.995976258112917790, -0.089617483090022959, 0.995959055866258320,
+    -0.089808457497005278,
+  0.995941817001031350, -0.089999428601987341, 0.995924541517870800,
+    -0.090190396397947695,
+  0.995907229417411720, -0.090381360877864983, 0.995889880700290720,
+    -0.090572322034717989,
+  0.995872495367145730, -0.090763279861485621, 0.995855073418615790,
+    -0.090954234351146926,
+  0.995837614855341610, -0.091145185496681005, 0.995820119677964910,
+    -0.091336133291067184,
+  0.995802587887129160, -0.091527077727284828, 0.995785019483478750,
+    -0.091718018798313455,
+  0.995767414467659820, -0.091908956497132724, 0.995749772840319510,
+    -0.092099890816722388,
+  0.995732094602106430, -0.092290821750062355, 0.995714379753670610,
+    -0.092481749290132600,
+  0.995696628295663520, -0.092672673429913310, 0.995678840228737540,
+    -0.092863594162384724,
+  0.995661015553546910, -0.093054511480527249, 0.995643154270746900,
+    -0.093245425377321375,
+  0.995625256380994310, -0.093436335845747787, 0.995607321884947050,
+    -0.093627242878787195,
+  0.995589350783264600, -0.093818146469420549, 0.995571343076607770,
+    -0.094009046610628838,
+  0.995553298765638470, -0.094199943295393204, 0.995535217851020390,
+    -0.094390836516694943,
+  0.995517100333418110, -0.094581726267515445, 0.995498946213497770,
+    -0.094772612540836243,
+  0.995480755491926940, -0.094963495329638992, 0.995462528169374420,
+    -0.095154374626905486,
+  0.995444264246510340, -0.095345250425617617, 0.995425963724006160,
+    -0.095536122718757471,
+  0.995407626602534900, -0.095726991499307162, 0.995389252882770690,
+    -0.095917856760249040,
+  0.995370842565388990, -0.096108718494565509, 0.995352395651066810,
+    -0.096299576695239128,
+  0.995333912140482280, -0.096490431355252593, 0.995315392034315070,
+    -0.096681282467588725,
+  0.995296835333246090, -0.096872130025230471, 0.995278242037957670,
+    -0.097062974021160917,
+  0.995259612149133390, -0.097253814448363271, 0.995240945667458130,
+    -0.097444651299820870,
+  0.995222242593618360, -0.097635484568517200, 0.995203502928301510,
+    -0.097826314247435861,
+  0.995184726672196930, -0.098017140329560604, 0.995165913825994620,
+    -0.098207962807875276,
+  0.995147064390386470, -0.098398781675363881, 0.995128178366065490,
+    -0.098589596925010584,
+  0.995109255753726110, -0.098780408549799623, 0.995090296554064000,
+    -0.098971216542715429,
+  0.995071300767776170, -0.099162020896742503, 0.995052268395561050,
+    -0.099352821604865540,
+  0.995033199438118630, -0.099543618660069319, 0.995014093896149700,
+    -0.099734412055338825,
+  0.994994951770357020, -0.099925201783659073, 0.994975773061444140,
+    -0.100115987838015310,
+  0.994956557770116380, -0.100306770211392860, 0.994937305897080070,
+    -0.100497548896777200,
+  0.994918017443043200, -0.100688323887153960, 0.994898692408714870,
+    -0.100879095175508860,
+  0.994879330794805620, -0.101069862754827820, 0.994859932602027320,
+    -0.101260626618096830,
+  0.994840497831093180, -0.101451386758302080, 0.994821026482717860,
+    -0.101642143168429830,
+  0.994801518557617110, -0.101832895841466530, 0.994781974056508260,
+    -0.102023644770398740,
+  0.994762392980109930, -0.102214389948213210, 0.994742775329142010,
+    -0.102405131367896720,
+  0.994723121104325700, -0.102595869022436280, 0.994703430306383860,
+    -0.102786602904819040,
+  0.994683702936040250, -0.102977333008032220, 0.994663938994020390,
+    -0.103168059325063230,
+  0.994644138481050710, -0.103358781848899610, 0.994624301397859400,
+    -0.103549500572529070,
+  0.994604427745175660, -0.103740215488939370, 0.994584517523730340,
+    -0.103930926591118510,
+  0.994564570734255420, -0.104121633872054590, 0.994544587377484300,
+    -0.104312337324735800,
+  0.994524567454151740, -0.104503036942150570, 0.994504510964993700,
+    -0.104693732717287390,
+  0.994484417910747600, -0.104884424643134970, 0.994464288292152390,
+    -0.105075112712682040,
+  0.994444122109948040, -0.105265796918917600, 0.994423919364875950,
+    -0.105456477254830710,
+  0.994403680057679100, -0.105647153713410620, 0.994383404189101430,
+    -0.105837826287646670,
+  0.994363091759888570, -0.106028494970528410, 0.994342742770787270,
+    -0.106219159755045480,
+  0.994322357222545810, -0.106409820634187680, 0.994301935115913580,
+    -0.106600477600944960,
+  0.994281476451641550, -0.106791130648307390, 0.994260981230481790,
+    -0.106981779769265230,
+  0.994240449453187900, -0.107172424956808840, 0.994219881120514960,
+    -0.107363066203928760,
+  0.994199276233218910, -0.107553703503615620, 0.994178634792057590,
+    -0.107744336848860280,
+  0.994157956797789730, -0.107934966232653650, 0.994137242251175720,
+    -0.108125591647986870,
+  0.994116491152977070, -0.108316213087851170, 0.994095703503956930,
+    -0.108506830545237920,
+  0.994074879304879370, -0.108697444013138720, 0.994054018556510210,
+    -0.108888053484545190,
+  0.994033121259616400, -0.109078658952449240, 0.994012187414966220,
+    -0.109269260409842780,
+  0.993991217023329380, -0.109459857849717980, 0.993970210085476920,
+    -0.109650451265067100,
+  0.993949166602181130, -0.109841040648882600, 0.993928086574215830,
+    -0.110031625994157000,
+  0.993906970002356060, -0.110222207293883060, 0.993885816887378090,
+    -0.110412784541053630,
+  0.993864627230059750, -0.110603357728661730, 0.993843401031180180,
+    -0.110793926849700560,
+  0.993822138291519660, -0.110984491897163390, 0.993800839011860120,
+    -0.111175052864043720,
+  0.993779503192984580, -0.111365609743335160, 0.993758130835677430,
+    -0.111556162528031480,
+  0.993736721940724600, -0.111746711211126590, 0.993715276508913230,
+    -0.111937255785614570,
+  0.993693794541031790, -0.112127796244489640, 0.993672276037870010,
+    -0.112318332580746170,
+  0.993650721000219120, -0.112508864787378690, 0.993629129428871720,
+    -0.112699392857381860,
+  0.993607501324621610, -0.112889916783750520, 0.993585836688263950,
+    -0.113080436559479620,
+  0.993564135520595300, -0.113270952177564350, 0.993542397822413600,
+    -0.113461463630999950,
+  0.993520623594518090, -0.113651970912781870, 0.993498812837709360,
+    -0.113842474015905710,
+  0.993476965552789190, -0.114032972933367200, 0.993455081740560960,
+    -0.114223467658162260,
+  0.993433161401829360, -0.114413958183286920, 0.993411204537400060,
+    -0.114604444501737420,
+  0.993389211148080650, -0.114794926606510080, 0.993367181234679600,
+    -0.114985404490601460,
+  0.993345114798006910, -0.115175878147008190, 0.993323011838873950,
+    -0.115366347568727140,
+  0.993300872358093280, -0.115556812748755260, 0.993278696356479030,
+    -0.115747273680089720,
+  0.993256483834846440, -0.115937730355727780, 0.993234234794012290,
+    -0.116128182768666930,
+  0.993211949234794500, -0.116318630911904750, 0.993189627158012620,
+    -0.116509074778439040,
+  0.993167268564487230, -0.116699514361267690, 0.993144873455040430,
+    -0.116889949653388780,
+  0.993122441830495580, -0.117080380647800590, 0.993099973691677570,
+    -0.117270807337501460,
+  0.993077469039412300, -0.117461229715489990, 0.993054927874527320,
+    -0.117651647774764860,
+  0.993032350197851410, -0.117842061508324980, 0.993009736010214580,
+    -0.118032470909169340,
+  0.992987085312448390, -0.118222875970297170, 0.992964398105385610,
+    -0.118413276684707790,
+  0.992941674389860470, -0.118603673045400720, 0.992918914166708300,
+    -0.118794065045375640,
+  0.992896117436765980, -0.118984452677632340, 0.992873284200871730,
+    -0.119174835935170880,
+  0.992850414459865100, -0.119365214810991350, 0.992827508214586760,
+    -0.119555589298094110,
+  0.992804565465879140, -0.119745959389479600, 0.992781586214585570,
+    -0.119936325078148470,
+  0.992758570461551140, -0.120126686357101500, 0.992735518207621850,
+    -0.120317043219339680,
+  0.992712429453645460, -0.120507395657864130, 0.992689304200470750,
+    -0.120697743665676110,
+  0.992666142448948020, -0.120888087235777080, 0.992642944199928820,
+    -0.121078426361168640,
+  0.992619709454266140, -0.121268761034852600, 0.992596438212814290,
+    -0.121459091249830840,
+  0.992573130476428810, -0.121649416999105530, 0.992549786245966680,
+    -0.121839738275678890,
+  0.992526405522286100, -0.122030055072553360, 0.992502988306246950,
+    -0.122220367382731540,
+  0.992479534598709970, -0.122410675199216200, 0.992456044400537700,
+    -0.122600978515010240,
+  0.992432517712593660, -0.122791277323116770, 0.992408954535742850,
+    -0.122981571616539050,
+  0.992385354870851670, -0.123171861388280480, 0.992361718718787870,
+    -0.123362146631344680,
+  0.992338046080420420, -0.123552427338735370, 0.992314336956619640,
+    -0.123742703503456510,
+  0.992290591348257370, -0.123932975118512160, 0.992266809256206580,
+    -0.124123242176906600,
+  0.992242990681341700, -0.124313504671644230, 0.992219135624538450,
+    -0.124503762595729660,
+  0.992195244086673920, -0.124694015942167640, 0.992171316068626520,
+    -0.124884264703963130,
+  0.992147351571276090, -0.125074508874121170, 0.992123350595503720,
+    -0.125264748445647060,
+  0.992099313142191800, -0.125454983411546230, 0.992075239212224070,
+    -0.125645213764824290,
+  0.992051128806485720, -0.125835439498487000, 0.992026981925863360,
+    -0.126025660605540320,
+  0.992002798571244520, -0.126215877078990350, 0.991978578743518580,
+    -0.126406088911843380,
+  0.991954322443575950, -0.126596296097105850, 0.991930029672308480,
+    -0.126786498627784410,
+  0.991905700430609330, -0.126976696496885870, 0.991881334719373010,
+    -0.127166889697417160,
+  0.991856932539495470, -0.127357078222385400, 0.991832493891873780,
+    -0.127547262064797970,
+  0.991808018777406430, -0.127737441217662310, 0.991783507196993490,
+    -0.127927615673986080,
+  0.991758959151536110, -0.128117785426777130, 0.991734374641936810,
+    -0.128307950469043420,
+  0.991709753669099530, -0.128498110793793170, 0.991685096233929420,
+    -0.128688266394034690,
+  0.991660402337333210, -0.128878417262776550, 0.991635671980218740,
+    -0.129068563393027410,
+  0.991610905163495370, -0.129258704777796140, 0.991586101888073500,
+    -0.129448841410091780,
+  0.991561262154865290, -0.129638973282923560, 0.991536385964783880,
+    -0.129829100389300930,
+  0.991511473318743900, -0.130019222722233350, 0.991486524217661480,
+    -0.130209340274730630,
+  0.991461538662453790, -0.130399453039802690, 0.991436516654039420,
+    -0.130589561010459650,
+  0.991411458193338540, -0.130779664179711710, 0.991386363281272280,
+    -0.130969762540569380,
+  0.991361231918763460, -0.131159856086043270, 0.991336064106736140,
+    -0.131349944809144190,
+  0.991310859846115440, -0.131540028702883120, 0.991285619137828200,
+    -0.131730107760271160,
+  0.991260341982802440, -0.131920181974319790, 0.991235028381967420,
+    -0.132110251338040360,
+  0.991209678336254060, -0.132300315844444650, 0.991184291846594180,
+    -0.132490375486544550,
+  0.991158868913921350, -0.132680430257352070, 0.991133409539170170,
+    -0.132870480149879430,
+  0.991107913723276890, -0.133060525157139060, 0.991082381467178640,
+    -0.133250565272143570,
+  0.991056812771814340, -0.133440600487905680, 0.991031207638124130,
+    -0.133630630797438340,
+  0.991005566067049370, -0.133820656193754720, 0.990979888059532740,
+    -0.134010676669868130,
+  0.990954173616518500, -0.134200692218792020, 0.990928422738951990,
+    -0.134390702833540070,
+  0.990902635427780010, -0.134580708507126170, 0.990876811683950700,
+    -0.134770709232564350,
+  0.990850951508413620, -0.134960705002868750, 0.990825054902119470,
+    -0.135150695811053850,
+  0.990799121866020370, -0.135340681650134210, 0.990773152401069780,
+    -0.135530662513124590,
+  0.990747146508222710, -0.135720638393039910, 0.990721104188435180,
+    -0.135910609282895330,
+  0.990695025442664630, -0.136100575175706200, 0.990668910271870100,
+    -0.136290536064487960,
+  0.990642758677011570, -0.136480491942256280, 0.990616570659050620,
+    -0.136670442802027090,
+  0.990590346218950150, -0.136860388636816380, 0.990564085357674370,
+    -0.137050329439640410,
+  0.990537788076188750, -0.137240265203515590, 0.990511454375460290,
+    -0.137430195921458550,
+  0.990485084256457090, -0.137620121586486040, 0.990458677720148620,
+    -0.137810042191615080,
+  0.990432234767505970, -0.137999957729862790, 0.990405755399501260,
+    -0.138189868194246560,
+  0.990379239617108160, -0.138379773577783890, 0.990352687421301450,
+    -0.138569673873492500,
+  0.990326098813057330, -0.138759569074390350, 0.990299473793353590,
+    -0.138949459173495490,
+  0.990272812363169110, -0.139139344163826200, 0.990246114523483990,
+    -0.139329224038400980,
+  0.990219380275280000, -0.139519098790238490, 0.990192609619540030,
+    -0.139708968412357550,
+  0.990165802557248400, -0.139898832897777210, 0.990138959089390650,
+    -0.140088692239516670,
+  0.990112079216953770, -0.140278546430595420, 0.990085162940925970,
+    -0.140468395464033000,
+  0.990058210262297120, -0.140658239332849210, 0.990031221182058000,
+    -0.140848078030064080,
+  0.990004195701200910, -0.141037911548697710, 0.989977133820719610,
+    -0.141227739881770510,
+  0.989950035541608990, -0.141417563022303020, 0.989922900864865450,
+    -0.141607380963316020,
+  0.989895729791486660, -0.141797193697830390, 0.989868522322471580,
+    -0.141987001218867290,
+  0.989841278458820530, -0.142176803519448030, 0.989813998201535260,
+    -0.142366600592594180,
+  0.989786681551618640, -0.142556392431327340, 0.989759328510075200,
+    -0.142746179028669460,
+  0.989731939077910570, -0.142935960377642670, 0.989704513256131850,
+    -0.143125736471269190,
+  0.989677051045747210, -0.143315507302571500, 0.989649552447766530,
+    -0.143505272864572290,
+  0.989622017463200890, -0.143695033150294470, 0.989594446093062460,
+    -0.143884788152760980,
+  0.989566838338365120, -0.144074537864995160, 0.989539194200123930,
+    -0.144264282280020440,
+  0.989511513679355190, -0.144454021390860470, 0.989483796777076760,
+    -0.144643755190539040,
+  0.989456043494307710, -0.144833483672080210, 0.989428253832068230,
+    -0.145023206828508220,
+  0.989400427791380380, -0.145212924652847460, 0.989372565373267010,
+    -0.145402637138122570,
+  0.989344666578752640, -0.145592344277358340, 0.989316731408863000,
+    -0.145782046063579860,
+  0.989288759864625170, -0.145971742489812210, 0.989260751947067640,
+    -0.146161433549080900,
+  0.989232707657220050, -0.146351119234411460, 0.989204626996113780,
+    -0.146540799538829760,
+  0.989176509964781010, -0.146730474455361750, 0.989148356564255590,
+    -0.146920143977033620,
+  0.989120166795572690, -0.147109808096871820, 0.989091940659768800,
+    -0.147299466807902850,
+  0.989063678157881540, -0.147489120103153570, 0.989035379290950310,
+    -0.147678767975650970,
+  0.989007044060015270, -0.147868410418422220, 0.988978672466118480,
+    -0.148058047424494720,
+  0.988950264510302990, -0.148247678986896030, 0.988921820193613190,
+    -0.148437305098653970,
+  0.988893339517095130, -0.148626925752796540, 0.988864822481795640,
+    -0.148816540942351920,
+  0.988836269088763540, -0.149006150660348450, 0.988807679339048450,
+    -0.149195754899814820,
+  0.988779053233701520, -0.149385353653779720, 0.988750390773775360,
+    -0.149574946915272230,
+  0.988721691960323780, -0.149764534677321510, 0.988692956794401940,
+    -0.149954116932956960,
+  0.988664185277066230, -0.150143693675208190, 0.988635377409374790,
+    -0.150333264897105000,
+  0.988606533192386450, -0.150522830591677400, 0.988577652627162020,
+    -0.150712390751955610,
+  0.988548735714763200, -0.150901945370970040, 0.988519782456253270,
+    -0.151091494441751300,
+  0.988490792852696590, -0.151281037957330220, 0.988461766905159300,
+    -0.151470575910737810,
+  0.988432704614708340, -0.151660108295005310, 0.988403605982412390,
+    -0.151849635103164180,
+  0.988374471009341280, -0.152039156328246050, 0.988345299696566150,
+    -0.152228671963282740,
+  0.988316092045159690, -0.152418182001306330, 0.988286848056195820,
+    -0.152607686435349050,
+  0.988257567730749460, -0.152797185258443440, 0.988228251069897420,
+    -0.152986678463622040,
+  0.988198898074717610, -0.153176166043917840, 0.988169508746289060,
+    -0.153365647992363880,
+  0.988140083085692570, -0.153555124301993450, 0.988110621094009820,
+    -0.153744594965840030,
+  0.988081122772324070, -0.153934059976937350, 0.988051588121720110,
+    -0.154123519328319360,
+  0.988022017143283530, -0.154312973013020100, 0.987992409838101880,
+    -0.154502421024073940,
+  0.987962766207263420, -0.154691863354515430, 0.987933086251858380,
+    -0.154881299997379320,
+  0.987903369972977790, -0.155070730945700510, 0.987873617371714200,
+    -0.155260156192514240,
+  0.987843828449161740, -0.155449575730855850, 0.987814003206415550,
+    -0.155638989553760900,
+  0.987784141644572180, -0.155828397654265230, 0.987754243764729530,
+    -0.156017800025404800,
+  0.987724309567986960, -0.156207196660215900, 0.987694339055445130,
+    -0.156396587551734880,
+  0.987664332228205710, -0.156585972692998430, 0.987634289087372160,
+    -0.156775352077043350,
+  0.987604209634049160, -0.156964725696906780, 0.987574093869342360,
+    -0.157154093545625900,
+  0.987543941794359230, -0.157343455616238250, 0.987513753410208420,
+    -0.157532811901781530,
+  0.987483528717999710, -0.157722162395293630, 0.987453267718844560,
+    -0.157911507089812660,
+  0.987422970413855410, -0.158100845978376980, 0.987392636804146240,
+    -0.158290179054025180,
+  0.987362266890832400, -0.158479506309795960, 0.987331860675030430,
+    -0.158668827738728310,
+  0.987301418157858430, -0.158858143333861450, 0.987270939340435420,
+    -0.159047453088234760,
+  0.987240424223882250, -0.159236756994887850, 0.987209872809320820,
+    -0.159426055046860580,
+  0.987179285097874340, -0.159615347237193060, 0.987148661090667570,
+    -0.159804633558925440,
+  0.987118000788826280, -0.159993914005098270, 0.987087304193477900,
+    -0.160183188568752220,
+  0.987056571305750970, -0.160372457242928280, 0.987025802126775600,
+    -0.160561720020667490,
+  0.986994996657682980, -0.160750976895011220, 0.986964154899605650,
+    -0.160940227859001080,
+  0.986933276853677710, -0.161129472905678810, 0.986902362521034470,
+    -0.161318712028086400,
+  0.986871411902812470, -0.161507945219266120, 0.986840425000149680,
+    -0.161697172472260400,
+  0.986809401814185530, -0.161886393780111830, 0.986778342346060430,
+    -0.162075609135863330,
+  0.986747246596916590, -0.162264818532558000, 0.986716114567897100,
+    -0.162454021963239190,
+  0.986684946260146690, -0.162643219420950310, 0.986653741674811350,
+    -0.162832410898735210,
+  0.986622500813038480, -0.163021596389637840, 0.986591223675976400,
+    -0.163210775886702380,
+  0.986559910264775410, -0.163399949382973230, 0.986528560580586690,
+    -0.163589116871495020,
+  0.986497174624562880, -0.163778278345312670, 0.986465752397857940,
+    -0.163967433797471170,
+  0.986434293901627180, -0.164156583221015810, 0.986402799137027220,
+    -0.164345726608992190,
+  0.986371268105216030, -0.164534863954446000, 0.986339700807353000,
+    -0.164723995250423170,
+  0.986308097244598670, -0.164913120489969890, 0.986276457418115090,
+    -0.165102239666132660,
+  0.986244781329065460, -0.165291352771958000, 0.986213068978614490,
+    -0.165480459800492780,
+  0.986181320367928270, -0.165669560744784120, 0.986149535498173860,
+    -0.165858655597879300,
+  0.986117714370520090, -0.166047744352825790, 0.986085856986136820,
+    -0.166236827002671420,
+  0.986053963346195440, -0.166425903540464100, 0.986022033451868560,
+    -0.166614973959252090,
+  0.985990067304330140, -0.166804038252083730, 0.985958064904755460,
+    -0.166993096412007710,
+  0.985926026254321130, -0.167182148432072940, 0.985893951354205210,
+    -0.167371194305328430,
+  0.985861840205586980, -0.167560234024823560, 0.985829692809647050,
+    -0.167749267583607890,
+  0.985797509167567480, -0.167938294974731170, 0.985765289280531310,
+    -0.168127316191243410,
+  0.985733033149723490, -0.168316331226194830, 0.985700740776329850,
+    -0.168505340072635900,
+  0.985668412161537550, -0.168694342723617330, 0.985636047306535420,
+    -0.168883339172189980,
+  0.985603646212513400, -0.169072329411405010, 0.985571208880662740,
+    -0.169261313434313830,
+  0.985538735312176060, -0.169450291233967960, 0.985506225508247290,
+    -0.169639262803419290,
+  0.985473679470071810, -0.169828228135719850, 0.985441097198846210,
+    -0.170017187223921950,
+  0.985408478695768420, -0.170206140061078070, 0.985375823962037710,
+    -0.170395086640240940,
+  0.985343132998854790, -0.170584026954463590, 0.985310405807421570,
+    -0.170772960996799230,
+  0.985277642388941220, -0.170961888760301220, 0.985244842744618540,
+    -0.171150810238023280,
+  0.985212006875659350, -0.171339725423019310, 0.985179134783271130,
+    -0.171528634308343420,
+  0.985146226468662230, -0.171717536887049970, 0.985113281933042710,
+    -0.171906433152193530,
+  0.985080301177623800, -0.172095323096829010, 0.985047284203618200,
+    -0.172284206714011370,
+  0.985014231012239840, -0.172473083996795950, 0.984981141604703960,
+    -0.172661954938238270,
+  0.984948015982227030, -0.172850819531394080, 0.984914854146027200,
+    -0.173039677769319360,
+  0.984881656097323700, -0.173228529645070320, 0.984848421837337010,
+    -0.173417375151703470,
+  0.984815151367289140, -0.173606214282275410, 0.984781844688403350,
+    -0.173795047029843160,
+  0.984748501801904210, -0.173983873387463820, 0.984715122709017620,
+    -0.174172693348194820,
+  0.984681707410970940, -0.174361506905093750, 0.984648255908992630,
+    -0.174550314051218510,
+  0.984614768204312600, -0.174739114779627200, 0.984581244298162180,
+    -0.174927909083378160,
+  0.984547684191773960, -0.175116696955529920, 0.984514087886381840,
+    -0.175305478389141320,
+  0.984480455383220930, -0.175494253377271430, 0.984446786683527920,
+    -0.175683021912979490,
+  0.984413081788540700, -0.175871783989325040, 0.984379340699498510,
+    -0.176060539599367820,
+  0.984345563417641900, -0.176249288736167880, 0.984311749944212780,
+    -0.176438031392785410,
+  0.984277900280454370, -0.176626767562280880, 0.984244014427611110,
+    -0.176815497237715000,
+  0.984210092386929030, -0.177004220412148750, 0.984176134159655320,
+    -0.177192937078643280,
+  0.984142139747038570, -0.177381647230260040, 0.984108109150328540,
+    -0.177570350860060710,
+  0.984074042370776450, -0.177759047961107170, 0.984039939409634970,
+    -0.177947738526461560,
+  0.984005800268157870, -0.178136422549186300, 0.983971624947600270,
+    -0.178325100022344000,
+  0.983937413449218920, -0.178513770938997510, 0.983903165774271500,
+    -0.178702435292209970,
+  0.983868881924017220, -0.178891093075044720, 0.983834561899716630,
+    -0.179079744280565390,
+  0.983800205702631600, -0.179268388901835750, 0.983765813334025240,
+    -0.179457026931919890,
+  0.983731384795162090, -0.179645658363882160, 0.983696920087308140,
+    -0.179834283190787090,
+  0.983662419211730250, -0.180022901405699510, 0.983627882169697210,
+    -0.180211513001684450,
+  0.983593308962478650, -0.180400117971807240, 0.983558699591345900,
+    -0.180588716309133340,
+  0.983524054057571260, -0.180777308006728590, 0.983489372362428730,
+    -0.180965893057658980,
+  0.983454654507193270, -0.181154471454990810, 0.983419900493141540,
+    -0.181343043191790540,
+  0.983385110321551180, -0.181531608261124970, 0.983350283993701500,
+    -0.181720166656061110,
+  0.983315421510872810, -0.181908718369666160, 0.983280522874346970,
+    -0.182097263395007650,
+  0.983245588085407070, -0.182285801725153300, 0.983210617145337640,
+    -0.182474333353171120,
+  0.983175610055424420, -0.182662858272129270, 0.983140566816954500,
+    -0.182851376475096330,
+  0.983105487431216290, -0.183039887955140950, 0.983070371899499640,
+    -0.183228392705332140,
+  0.983035220223095640, -0.183416890718739100, 0.983000032403296590,
+    -0.183605381988431270,
+  0.982964808441396440, -0.183793866507478450, 0.982929548338690170,
+    -0.183982344268950520,
+  0.982894252096474070, -0.184170815265917720, 0.982858919716046110,
+    -0.184359279491450510,
+  0.982823551198705240, -0.184547736938619620, 0.982788146545751970,
+    -0.184736187600495950,
+  0.982752705758487830, -0.184924631470150790, 0.982717228838215990,
+    -0.185113068540655540,
+  0.982681715786240860, -0.185301498805081900, 0.982646166603868050,
+    -0.185489922256501880,
+  0.982610581292404750, -0.185678338887987630, 0.982574959853159240,
+    -0.185866748692611660,
+  0.982539302287441240, -0.186055151663446630, 0.982503608596561830,
+    -0.186243547793565560,
+  0.982467878781833170, -0.186431937076041610, 0.982432112844569110,
+    -0.186620319503948280,
+  0.982396310786084690, -0.186808695070359270, 0.982360472607696210,
+    -0.186997063768348540,
+  0.982324598310721280, -0.187185425590990330, 0.982288687896478830,
+    -0.187373780531359110,
+  0.982252741366289370, -0.187562128582529600, 0.982216758721474510,
+    -0.187750469737576780,
+  0.982180739963357090, -0.187938803989575910, 0.982144685093261580,
+    -0.188127131331602420,
+  0.982108594112513610, -0.188315451756732120, 0.982072467022440000,
+    -0.188503765258040940,
+  0.982036303824369020, -0.188692071828605230, 0.982000104519630490,
+    -0.188880371461501380,
+  0.981963869109555240, -0.189068664149806190, 0.981927597595475540,
+    -0.189256949886596750,
+  0.981891289978725100, -0.189445228664950230, 0.981854946260638630,
+    -0.189633500477944190,
+  0.981818566442552500, -0.189821765318656410, 0.981782150525804310,
+    -0.190010023180164990,
+  0.981745698511732990, -0.190198274055548150, 0.981709210401678800,
+    -0.190386517937884470,
+  0.981672686196983110, -0.190574754820252740, 0.981636125898989080,
+    -0.190762984695732110,
+  0.981599529509040720, -0.190951207557401800, 0.981562897028483650,
+    -0.191139423398341450,
+  0.981526228458664770, -0.191327632211630900, 0.981489523800932130,
+    -0.191515833990350210,
+  0.981452783056635520, -0.191704028727579800, 0.981416006227125550,
+    -0.191892216416400220,
+  0.981379193313754560, -0.192080397049892440, 0.981342344317876040,
+    -0.192268570621137500,
+  0.981305459240844670, -0.192456737123216840, 0.981268538084016710,
+    -0.192644896549212100,
+  0.981231580848749730, -0.192833048892205230, 0.981194587536402320,
+    -0.193021194145278380,
+  0.981157558148334830, -0.193209332301513960, 0.981120492685908730,
+    -0.193397463353994740,
+  0.981083391150486710, -0.193585587295803610, 0.981046253543432780,
+    -0.193773704120023820,
+  0.981009079866112630, -0.193961813819738840, 0.980971870119892840,
+    -0.194149916388032450,
+  0.980934624306141640, -0.194338011817988600, 0.980897342426228390,
+    -0.194526100102691610,
+  0.980860024481523870, -0.194714181235225960, 0.980822670473400100,
+    -0.194902255208676520,
+  0.980785280403230430, -0.195090322016128250, 0.980747854272389750,
+    -0.195278381650666550,
+  0.980710392082253970, -0.195466434105376980, 0.980672893834200530,
+    -0.195654479373345370,
+  0.980635359529608120, -0.195842517447657850, 0.980597789169856850,
+    -0.196030548321400790,
+  0.980560182756327840, -0.196218571987660880, 0.980522540290404090,
+    -0.196406588439524970,
+  0.980484861773469380, -0.196594597670080220, 0.980447147206909060,
+    -0.196782599672414100,
+  0.980409396592109910, -0.196970594439614340, 0.980371609930459800,
+    -0.197158581964768880,
+  0.980333787223347960, -0.197346562240965920, 0.980295928472165290,
+    -0.197534535261294030,
+  0.980258033678303550, -0.197722501018841920, 0.980220102843156080,
+    -0.197910459506698670,
+  0.980182135968117430, -0.198098410717953560, 0.980144133054583590,
+    -0.198286354645696220,
+  0.980106094103951770, -0.198474291283016390, 0.980068019117620650,
+    -0.198662220623004200,
+  0.980029908096990090, -0.198850142658750090, 0.979991761043461200,
+    -0.199038057383344680,
+  0.979953577958436740, -0.199225964789878830, 0.979915358843320480,
+    -0.199413864871443770,
+  0.979877103699517640, -0.199601757621130970, 0.979838812528434740,
+    -0.199789643032032090,
+  0.979800485331479790, -0.199977521097239150, 0.979762122110061750,
+    -0.200165391809844440,
+  0.979723722865591170, -0.200353255162940450, 0.979685287599479930,
+    -0.200541111149619980,
+  0.979646816313141210, -0.200728959762976140, 0.979608309007989450,
+    -0.200916800996102230,
+  0.979569765685440520, -0.201104634842091900, 0.979531186346911500,
+    -0.201292461294039020,
+  0.979492570993820810, -0.201480280345037730, 0.979453919627588210,
+    -0.201668091988182530,
+  0.979415232249634780, -0.201855896216568050, 0.979376508861383170,
+    -0.202043693023289260,
+  0.979337749464256780, -0.202231482401441450, 0.979298954059681040,
+    -0.202419264344120160,
+  0.979260122649082020, -0.202607038844421130, 0.979221255233887700,
+    -0.202794805895440440,
+  0.979182351815526930, -0.202982565490274440, 0.979143412395430230,
+    -0.203170317622019790,
+  0.979104436975029250, -0.203358062283773320, 0.979065425555756930,
+    -0.203545799468632190,
+  0.979026378139047580, -0.203733529169693920, 0.978987294726337050,
+    -0.203921251380056120,
+  0.978948175319062200, -0.204108966092816870, 0.978909019918661310,
+    -0.204296673301074370,
+  0.978869828526574120, -0.204484372997927240, 0.978830601144241470,
+    -0.204672065176474210,
+  0.978791337773105670, -0.204859749829814420, 0.978752038414610340,
+    -0.205047426951047250,
+  0.978712703070200420, -0.205235096533272350, 0.978673331741322210,
+    -0.205422758569589610,
+  0.978633924429423210, -0.205610413053099240, 0.978594481135952270,
+    -0.205798059976901790,
+  0.978555001862359550, -0.205985699334097910, 0.978515486610096910,
+    -0.206173331117788710,
+  0.978475935380616830, -0.206360955321075510, 0.978436348175373730,
+    -0.206548571937059890,
+  0.978396724995823090, -0.206736180958843690, 0.978357065843421640,
+    -0.206923782379529100,
+  0.978317370719627650, -0.207111376192218560, 0.978277639625900530,
+    -0.207298962390014750,
+  0.978237872563701090, -0.207486540966020650, 0.978198069534491400,
+    -0.207674111913339570,
+  0.978158230539735050, -0.207861675225075070, 0.978118355580896660,
+    -0.208049230894330940,
+  0.978078444659442380, -0.208236778914211330, 0.978038497776839600,
+    -0.208424319277820600,
+  0.977998514934557140, -0.208611851978263490, 0.977958496134064830,
+    -0.208799377008644900,
+  0.977918441376834370, -0.208986894362070070, 0.977878350664338150,
+    -0.209174404031644580,
+  0.977838223998050430, -0.209361906010474160, 0.977798061379446360,
+    -0.209549400291664940,
+  0.977757862810002760, -0.209736886868323290, 0.977717628291197460,
+    -0.209924365733555880,
+  0.977677357824509930, -0.210111836880469610, 0.977637051411420770,
+    -0.210299300302171730,
+  0.977596709053411890, -0.210486755991769720, 0.977556330751966460,
+    -0.210674203942371440,
+  0.977515916508569280, -0.210861644147084860, 0.977475466324706170,
+    -0.211049076599018390,
+  0.977434980201864260, -0.211236501291280710, 0.977394458141532250,
+    -0.211423918216980670,
+  0.977353900145199960, -0.211611327369227550, 0.977313306214358750,
+    -0.211798728741130840,
+  0.977272676350500860, -0.211986122325800330, 0.977232010555120320,
+    -0.212173508116346080,
+  0.977191308829712280, -0.212360886105878420, 0.977150571175773200,
+    -0.212548256287508060,
+  0.977109797594800880, -0.212735618654345930, 0.977068988088294450,
+    -0.212922973199503180,
+  0.977028142657754390, -0.213110319916091360, 0.976987261304682390,
+    -0.213297658797222320,
+  0.976946344030581670, -0.213484989836008050, 0.976905390836956490,
+    -0.213672313025560970,
+  0.976864401725312640, -0.213859628358993750, 0.976823376697157240,
+    -0.214046935829419360,
+  0.976782315753998650, -0.214234235429950990, 0.976741218897346550,
+    -0.214421527153702160,
+  0.976700086128711840, -0.214608810993786760, 0.976658917449606980,
+    -0.214796086943318860,
+  0.976617712861545640, -0.214983354995412820, 0.976576472366042610,
+    -0.215170615143183390,
+  0.976535195964614470, -0.215357867379745550, 0.976493883658778650,
+    -0.215545111698214500,
+  0.976452535450054060, -0.215732348091705880, 0.976411151339961040,
+    -0.215919576553335490,
+  0.976369731330021140, -0.216106797076219520, 0.976328275421757260,
+    -0.216294009653474340,
+  0.976286783616693630, -0.216481214278216730, 0.976245255916355800,
+    -0.216668410943563730,
+  0.976203692322270560, -0.216855599642632620, 0.976162092835966110,
+    -0.217042780368540990,
+  0.976120457458971910, -0.217229953114406790, 0.976078786192818850,
+    -0.217417117873348190,
+  0.976037079039039020, -0.217604274638483640, 0.975995335999165990,
+    -0.217791423402931950,
+  0.975953557074734300, -0.217978564159812200, 0.975911742267280170,
+    -0.218165696902243800,
+  0.975869891578341030, -0.218352821623346320, 0.975828005009455660,
+    -0.218539938316239770,
+  0.975786082562163930, -0.218727046974044440, 0.975744124238007270,
+    -0.218914147589880840,
+  0.975702130038528570, -0.219101240156869800, 0.975660099965271590,
+    -0.219288324668132470,
+  0.975618034019781750, -0.219475401116790310, 0.975575932203605720,
+    -0.219662469495965050,
+  0.975533794518291360, -0.219849529798778700, 0.975491620965388110,
+    -0.220036582018353580,
+  0.975449411546446380, -0.220223626147812380, 0.975407166263018270,
+    -0.220410662180277940,
+  0.975364885116656980, -0.220597690108873510, 0.975322568108916930,
+    -0.220784709926722610,
+  0.975280215241354220, -0.220971721626949110, 0.975237826515525820,
+    -0.221158725202677010,
+  0.975195401932990370, -0.221345720647030810, 0.975152941495307620,
+    -0.221532707953135230,
+  0.975110445204038890, -0.221719687114115220, 0.975067913060746470,
+    -0.221906658123096100,
+  0.975025345066994120, -0.222093620973203510, 0.974982741224347140,
+    -0.222280575657563370,
+  0.974940101534371830, -0.222467522169301880, 0.974897425998635820,
+    -0.222654460501545500,
+  0.974854714618708430, -0.222841390647421120, 0.974811967396159830,
+    -0.223028312600055820,
+  0.974769184332561770, -0.223215226352576980, 0.974726365429487320,
+    -0.223402131898112370,
+  0.974683510688510670, -0.223589029229789990, 0.974640620111207560,
+    -0.223775918340738150,
+  0.974597693699155050, -0.223962799224085460, 0.974554731453931230,
+    -0.224149671872960870,
+  0.974511733377115720, -0.224336536280493600, 0.974468699470289580,
+    -0.224523392439813170,
+  0.974425629735034990, -0.224710240344049430, 0.974382524172935470,
+    -0.224897079986332490,
+  0.974339382785575860, -0.225083911359792830, 0.974296205574542440,
+    -0.225270734457561160,
+  0.974252992541422500, -0.225457549272768540, 0.974209743687805220,
+    -0.225644355798546330,
+  0.974166459015280320, -0.225831154028026170, 0.974123138525439640,
+    -0.226017943954340020,
+  0.974079782219875680, -0.226204725570620190, 0.974036390100182610,
+    -0.226391498869999240,
+  0.973992962167955830, -0.226578263845610000, 0.973949498424792170,
+    -0.226765020490585690,
+  0.973905998872289570, -0.226951768798059810, 0.973862463512047300,
+    -0.227138508761166170,
+  0.973818892345666100, -0.227325240373038860, 0.973775285374748110,
+    -0.227511963626812280,
+  0.973731642600896400, -0.227698678515621170, 0.973687964025715670,
+    -0.227885385032600530,
+  0.973644249650811980, -0.228072083170885730, 0.973600499477792370,
+    -0.228258772923612380,
+  0.973556713508265560, -0.228445454283916470, 0.973512891743841370,
+    -0.228632127244934230,
+  0.973469034186131070, -0.228818791799802220, 0.973425140836747030,
+    -0.229005447941657340,
+  0.973381211697303290, -0.229192095663636770, 0.973337246769414910,
+    -0.229378734958878010,
+  0.973293246054698250, -0.229565365820518870, 0.973249209554771230,
+    -0.229751988241697490,
+  0.973205137271252800, -0.229938602215552210, 0.973161029205763530,
+    -0.230125207735221850,
+  0.973116885359925130, -0.230311804793845440, 0.973072705735360530,
+    -0.230498393384562350,
+  0.973028490333694210, -0.230684973500512200, 0.972984239156551740,
+    -0.230871545134835020,
+  0.972939952205560180, -0.231058108280671110, 0.972895629482347760,
+    -0.231244662931161050,
+  0.972851270988544180, -0.231431209079445750, 0.972806876725780370,
+    -0.231617746718666470,
+  0.972762446695688570, -0.231804275841964780, 0.972717980899902250,
+    -0.231990796442482440,
+  0.972673479340056430, -0.232177308513361710, 0.972628942017787270,
+    -0.232363812047745030,
+  0.972584368934732210, -0.232550307038775240, 0.972539760092530180,
+    -0.232736793479595390,
+  0.972495115492821190, -0.232923271363348980, 0.972450435137246830,
+    -0.233109740683179690,
+  0.972405719027449770, -0.233296201432231590, 0.972360967165074140,
+    -0.233482653603649090,
+  0.972316179551765300, -0.233669097190576820, 0.972271356189170040,
+    -0.233855532186159840,
+  0.972226497078936270, -0.234041958583543430, 0.972181602222713440,
+    -0.234228376375873210,
+  0.972136671622152230, -0.234414785556295160, 0.972091705278904430,
+    -0.234601186117955550,
+  0.972046703194623500, -0.234787578054000970, 0.972001665370963890,
+    -0.234973961357578250,
+  0.971956591809581720, -0.235160336021834730, 0.971911482512134000,
+    -0.235346702039917840,
+  0.971866337480279400, -0.235533059404975490, 0.971821156715677700,
+    -0.235719408110155820,
+  0.971775940219990140, -0.235905748148607370, 0.971730687994879160,
+    -0.236092079513478910,
+  0.971685400042008540, -0.236278402197919570, 0.971640076363043390,
+    -0.236464716195078780,
+  0.971594716959650160, -0.236651021498106380, 0.971549321833496630,
+    -0.236837318100152380,
+  0.971503890986251780, -0.237023605994367200, 0.971458424419585960,
+    -0.237209885173901600,
+  0.971412922135170940, -0.237396155631906610, 0.971367384134679490,
+    -0.237582417361533570,
+  0.971321810419786160, -0.237768670355934190, 0.971276200992166490,
+    -0.237954914608260540,
+  0.971230555853497380, -0.238141150111664840, 0.971184875005457030,
+    -0.238327376859299810,
+  0.971139158449725090, -0.238513594844318420, 0.971093406187982460,
+    -0.238699804059873980,
+  0.971047618221911100, -0.238886004499120040, 0.971001794553194690,
+    -0.239072196155210610,
+  0.970955935183517970, -0.239258379021299980, 0.970910040114567050,
+    -0.239444553090542630,
+  0.970864109348029470, -0.239630718356093560, 0.970818142885593870,
+    -0.239816874811108000,
+  0.970772140728950350, -0.240003022448741500, 0.970726102879790110,
+    -0.240189161262149900,
+  0.970680029339806130, -0.240375291244489450, 0.970633920110692160,
+    -0.240561412388916650,
+  0.970587775194143630, -0.240747524688588430, 0.970541594591857070,
+    -0.240933628136661910,
+  0.970495378305530560, -0.241119722726294590, 0.970449126336863090,
+    -0.241305808450644370,
+  0.970402838687555500, -0.241491885302869330, 0.970356515359309450,
+    -0.241677953276128010,
+  0.970310156353828110, -0.241864012363579180, 0.970263761672816140,
+    -0.242050062558382070,
+  0.970217331317979160, -0.242236103853696010, 0.970170865291024480,
+    -0.242422136242680890,
+  0.970124363593660280, -0.242608159718496810, 0.970077826227596420,
+    -0.242794174274304220,
+  0.970031253194543970, -0.242980179903263870, 0.969984644496215240,
+    -0.243166176598536900,
+  0.969938000134323960, -0.243352164353284740, 0.969891320110585100,
+    -0.243538143160669130,
+  0.969844604426714830, -0.243724113013852160, 0.969797853084430890,
+    -0.243910073905996260,
+  0.969751066085452140, -0.244096025830264210, 0.969704243431498860,
+    -0.244281968779819030,
+  0.969657385124292450, -0.244467902747824150, 0.969610491165555870,
+    -0.244653827727443320,
+  0.969563561557013180, -0.244839743711840670, 0.969516596300390000,
+    -0.245025650694180470,
+  0.969469595397413060, -0.245211548667627540, 0.969422558849810320,
+    -0.245397437625346960,
+  0.969375486659311280, -0.245583317560504060, 0.969328378827646660,
+    -0.245769188466264580,
+  0.969281235356548530, -0.245955050335794590, 0.969234056247750050,
+    -0.246140903162260530,
+  0.969186841502985950, -0.246326746938829030, 0.969139591123992280,
+    -0.246512581658667210,
+  0.969092305112506210, -0.246698407314942410, 0.969044983470266240,
+    -0.246884223900822430,
+  0.968997626199012420, -0.247070031409475250, 0.968950233300485800,
+    -0.247255829834069300,
+  0.968902804776428870, -0.247441619167773270, 0.968855340628585580,
+    -0.247627399403756280,
+  0.968807840858700970, -0.247813170535187670, 0.968760305468521430,
+    -0.247998932555237110,
+  0.968712734459794780, -0.248184685457074780, 0.968665127834270060,
+    -0.248370429233870980,
+  0.968617485593697540, -0.248556163878796560, 0.968569807739828930,
+    -0.248741889385022480,
+  0.968522094274417380, -0.248927605745720150, 0.968474345199216820,
+    -0.249113312954061360,
+  0.968426560515983190, -0.249299011003218190, 0.968378740226473300,
+    -0.249484699886362960,
+  0.968330884332445190, -0.249670379596668550, 0.968282992835658660,
+    -0.249856050127307990,
+  0.968235065737874320, -0.250041711471454650, 0.968187103040854420,
+    -0.250227363622282370,
+  0.968139104746362440, -0.250413006572965220, 0.968091070856162970,
+    -0.250598640316677670,
+  0.968043001372022260, -0.250784264846594500, 0.967994896295707670,
+    -0.250969880155890720,
+  0.967946755628987800, -0.251155486237741920, 0.967898579373632660,
+    -0.251341083085323880,
+  0.967850367531413620, -0.251526670691812610, 0.967802120104103270,
+    -0.251712249050384700,
+  0.967753837093475510, -0.251897818154216970, 0.967705518501305480,
+    -0.252083377996486450,
+  0.967657164329369880, -0.252268928570370810, 0.967608774579446500,
+    -0.252454469869047740,
+  0.967560349253314360, -0.252640001885695520, 0.967511888352754150,
+    -0.252825524613492610,
+  0.967463391879547550, -0.253011038045617860, 0.967414859835477480,
+    -0.253196542175250560,
+  0.967366292222328510, -0.253382036995570160, 0.967317689041886310,
+    -0.253567522499756560,
+  0.967269050295937790, -0.253752998680989990, 0.967220375986271420,
+    -0.253938465532451090,
+  0.967171666114676640, -0.254123923047320620, 0.967122920682944360,
+    -0.254309371218780000,
+  0.967074139692867040, -0.254494810040010730, 0.967025323146238010,
+    -0.254680239504194830,
+  0.966976471044852070, -0.254865659604514570, 0.966927583390505660,
+    -0.255051070334152470,
+  0.966878660184995910, -0.255236471686291710, 0.966829701430121810,
+    -0.255421863654115460,
+  0.966780707127683270, -0.255607246230807380, 0.966731677279481840,
+    -0.255792619409551610,
+  0.966682611887320080, -0.255977983183532430, 0.966633510953002100,
+    -0.256163337545934460,
+  0.966584374478333120, -0.256348682489942910, 0.966535202465119700,
+    -0.256534018008743040,
+  0.966485994915169840, -0.256719344095520660, 0.966436751830292650,
+    -0.256904660743461910,
+  0.966387473212298900, -0.257089967945753120, 0.966338159063000130,
+    -0.257275265695581120,
+  0.966288809384209690, -0.257460553986133100, 0.966239424177741890,
+    -0.257645832810596390,
+  0.966190003445412500, -0.257831102162158990, 0.966140547189038750,
+    -0.258016362034009020,
+  0.966091055410438830, -0.258201612419334870, 0.966041528111432400,
+    -0.258386853311325600,
+  0.965991965293840570, -0.258572084703170340, 0.965942366959485540,
+    -0.258757306588058680,
+  0.965892733110190860, -0.258942518959180520, 0.965843063747781510,
+    -0.259127721809726150,
+  0.965793358874083680, -0.259312915132886230, 0.965743618490924830,
+    -0.259498098921851660,
+  0.965693842600133690, -0.259683273169813770, 0.965644031203540590,
+    -0.259868437869964270,
+  0.965594184302976830, -0.260053593015495190, 0.965544301900275180,
+    -0.260238738599598840,
+  0.965494383997269500, -0.260423874615468010, 0.965444430595795430,
+    -0.260609001056295750,
+  0.965394441697689400, -0.260794117915275510, 0.965344417304789370,
+    -0.260979225185601070,
+  0.965294357418934660, -0.261164322860466480, 0.965244262041965780,
+    -0.261349410933066350,
+  0.965194131175724720, -0.261534489396595520, 0.965143964822054450,
+    -0.261719558244249030,
+  0.965093762982799590, -0.261904617469222610, 0.965043525659805890,
+    -0.262089667064712040,
+  0.964993252854920320, -0.262274707023913590, 0.964942944569991410,
+    -0.262459737340023980,
+  0.964892600806868890, -0.262644758006240040, 0.964842221567403620,
+    -0.262829769015759160,
+  0.964791806853447900, -0.263014770361779000, 0.964741356666855340,
+    -0.263199762037497560,
+  0.964690871009481030, -0.263384744036113280, 0.964640349883180930,
+    -0.263569716350824880,
+  0.964589793289812760, -0.263754678974831350, 0.964539201231235150,
+    -0.263939631901332350,
+  0.964488573709308410, -0.264124575123527550, 0.964437910725893910,
+    -0.264309508634617110,
+  0.964387212282854290, -0.264494432427801630, 0.964336478382053720,
+    -0.264679346496281890,
+  0.964285709025357480, -0.264864250833259260, 0.964234904214632200,
+    -0.265049145431935250,
+  0.964184063951745830, -0.265234030285511790, 0.964133188238567640,
+    -0.265418905387191260,
+  0.964082277076968140, -0.265603770730176330, 0.964031330468819280,
+    -0.265788626307669920,
+  0.963980348415994110, -0.265973472112875590, 0.963929330920367140,
+    -0.266158308138996990,
+  0.963878277983814200, -0.266343134379238180, 0.963827189608212340,
+    -0.266527950826803690,
+  0.963776065795439840, -0.266712757474898370, 0.963724906547376530,
+    -0.266897554316727350,
+  0.963673711865903230, -0.267082341345496300, 0.963622481752902220,
+    -0.267267118554410930,
+  0.963571216210257320, -0.267451885936677620, 0.963519915239853140,
+    -0.267636643485503090,
+  0.963468578843575950, -0.267821391194094150, 0.963417207023313350,
+    -0.268006129055658290,
+  0.963365799780954050, -0.268190857063403180, 0.963314357118388200,
+    -0.268375575210536900,
+  0.963262879037507070, -0.268560283490267890, 0.963211365540203480,
+    -0.268744981895804980,
+  0.963159816628371360, -0.268929670420357260, 0.963108232303906190,
+    -0.269114349057134380,
+  0.963056612568704340, -0.269299017799346120, 0.963004957424663850,
+    -0.269483676640202840,
+  0.962953266873683880, -0.269668325572915090, 0.962901540917665000,
+    -0.269852964590693860,
+  0.962849779558509030, -0.270037593686750570, 0.962797982798119010,
+    -0.270222212854296870,
+  0.962746150638399410, -0.270406822086544820, 0.962694283081255930,
+    -0.270591421376706940,
+  0.962642380128595710, -0.270776010717996010, 0.962590441782326890,
+    -0.270960590103625170,
+  0.962538468044359160, -0.271145159526808010, 0.962486458916603450,
+    -0.271329718980758420,
+  0.962434414400972100, -0.271514268458690700, 0.962382334499378380,
+    -0.271698807953819510,
+  0.962330219213737400, -0.271883337459359720, 0.962278068545965090,
+    -0.272067856968526920,
+  0.962225882497979020, -0.272252366474536710, 0.962173661071697880,
+    -0.272436865970605240,
+  0.962121404269041580, -0.272621355449948980, 0.962069112091931580,
+    -0.272805834905784810,
+  0.962016784542290560, -0.272990304331329920, 0.961964421622042320,
+    -0.273174763719801930,
+  0.961912023333112210, -0.273359213064418680, 0.961859589677426570,
+    -0.273543652358398730,
+  0.961807120656913540, -0.273728081594960540, 0.961754616273502010,
+    -0.273912500767323260,
+  0.961702076529122540, -0.274096909868706380, 0.961649501425706820,
+    -0.274281308892329660,
+  0.961596890965187860, -0.274465697831413220, 0.961544245149499990,
+    -0.274650076679177680,
+  0.961491563980579000, -0.274834445428843940, 0.961438847460361680,
+    -0.275018804073633220,
+  0.961386095590786250, -0.275203152606767310, 0.961333308373792270,
+    -0.275387491021468140,
+  0.961280485811320640, -0.275571819310958140, 0.961227627905313460,
+    -0.275756137468460120,
+  0.961174734657714080, -0.275940445487197150, 0.961121806070467380,
+    -0.276124743360392830,
+  0.961068842145519350, -0.276309031081271080, 0.961015842884817230,
+    -0.276493308643055990,
+  0.960962808290309780, -0.276677576038972420, 0.960909738363946770,
+    -0.276861833262245280,
+  0.960856633107679660, -0.277046080306099900, 0.960803492523460760,
+    -0.277230317163762170,
+  0.960750316613243950, -0.277414543828458090, 0.960697105378984450,
+    -0.277598760293414290,
+  0.960643858822638590, -0.277782966551857690, 0.960590576946164120,
+    -0.277967162597015370,
+  0.960537259751520050, -0.278151348422115090, 0.960483907240666790,
+    -0.278335524020384920,
+  0.960430519415565790, -0.278519689385053060, 0.960377096278180130,
+    -0.278703844509348490,
+  0.960323637830473920, -0.278887989386500280, 0.960270144074412800,
+    -0.279072124009737800,
+  0.960216615011963430, -0.279256248372291180, 0.960163050645094000,
+    -0.279440362467390510,
+  0.960109450975773940, -0.279624466288266590, 0.960055816005973890,
+    -0.279808559828150390,
+  0.960002145737665960, -0.279992643080273220, 0.959948440172823210,
+    -0.280176716037866980,
+  0.959894699313420530, -0.280360778694163810, 0.959840923161433770,
+    -0.280544831042396250,
+  0.959787111718839900, -0.280728873075797190, 0.959733264987617680,
+    -0.280912904787600000,
+  0.959679382969746750, -0.281096926171038260, 0.959625465667208190,
+    -0.281280937219346110,
+  0.959571513081984520, -0.281464937925757940, 0.959517525216059260,
+    -0.281648928283508630,
+  0.959463502071417510, -0.281832908285833350, 0.959409443650045550,
+    -0.282016877925967640,
+  0.959355349953930790, -0.282200837197147560, 0.959301220985062210,
+    -0.282384786092609360,
+  0.959247056745430090, -0.282568724605589740, 0.959192857237025740,
+    -0.282752652729325930,
+  0.959138622461841890, -0.282936570457055390, 0.959084352421872730,
+    -0.283120477782015820,
+  0.959030047119113660, -0.283304374697445740, 0.958975706555561080,
+    -0.283488261196583550,
+  0.958921330733213170, -0.283672137272668430, 0.958866919654069010,
+    -0.283856002918939750,
+  0.958812473320129310, -0.284039858128637190, 0.958757991733395710,
+    -0.284223702895001040,
+  0.958703474895871600, -0.284407537211271880, 0.958648922809561150,
+    -0.284591361070690440,
+  0.958594335476470220, -0.284775174466498300, 0.958539712898605730,
+    -0.284958977391937040,
+  0.958485055077976100, -0.285142769840248670, 0.958430362016590930,
+    -0.285326551804675870,
+  0.958375633716461170, -0.285510323278461260, 0.958320870179598880,
+    -0.285694084254848320,
+  0.958266071408017670, -0.285877834727080620, 0.958211237403732260,
+    -0.286061574688402040,
+  0.958156368168758820, -0.286245304132057120, 0.958101463705114730,
+    -0.286429023051290700,
+  0.958046524014818600, -0.286612731439347790, 0.957991549099890370,
+    -0.286796429289474080,
+  0.957936538962351420, -0.286980116594915570, 0.957881493604224370,
+    -0.287163793348918390,
+  0.957826413027532910, -0.287347459544729510, 0.957771297234302320,
+    -0.287531115175595930,
+  0.957716146226558870, -0.287714760234765170, 0.957660960006330610,
+    -0.287898394715485170,
+  0.957605738575646350, -0.288082018611004130, 0.957550481936536470,
+    -0.288265631914570770,
+  0.957495190091032570, -0.288449234619434220, 0.957439863041167680,
+    -0.288632826718843830,
+  0.957384500788975860, -0.288816408206049480, 0.957329103336492790,
+    -0.288999979074301420,
+  0.957273670685755200, -0.289183539316850200, 0.957218202838801210,
+    -0.289367088926947010,
+  0.957162699797670210, -0.289550627897843030, 0.957107161564402790,
+    -0.289734156222790250,
+  0.957051588141040970, -0.289917673895040750, 0.956995979529628230,
+    -0.290101180907847090,
+  0.956940335732208820, -0.290284677254462330, 0.956884656750828900,
+    -0.290468162928139820,
+  0.956828942587535370, -0.290651637922133220, 0.956773193244376930,
+    -0.290835102229696830,
+  0.956717408723403050, -0.291018555844085090, 0.956661589026665090,
+    -0.291201998758552900,
+  0.956605734156215080, -0.291385430966355660, 0.956549844114106820,
+    -0.291568852460749040,
+  0.956493918902395100, -0.291752263234989260, 0.956437958523136180,
+    -0.291935663282332780,
+  0.956381962978387730, -0.292119052596036380, 0.956325932270208230,
+    -0.292302431169357560,
+  0.956269866400658030, -0.292485798995553880, 0.956213765371798470,
+    -0.292669156067883460,
+  0.956157629185692140, -0.292852502379604810, 0.956101457844403040,
+    -0.293035837923976810,
+  0.956045251349996410, -0.293219162694258630, 0.955989009704538930,
+    -0.293402476683710110,
+  0.955932732910098280, -0.293585779885591200, 0.955876420968743590,
+    -0.293769072293162400,
+  0.955820073882545420, -0.293952353899684660, 0.955763691653575440,
+    -0.294135624698419030,
+  0.955707274283906560, -0.294318884682627400, 0.955650821775613330,
+    -0.294502133845571670,
+  0.955594334130771110, -0.294685372180514330, 0.955537811351456880,
+    -0.294868599680718270,
+  0.955481253439748770, -0.295051816339446720, 0.955424660397726330,
+    -0.295235022149963220,
+  0.955368032227470350, -0.295418217105532010, 0.955311368931062720,
+    -0.295601401199417360,
+  0.955254670510586990, -0.295784574424884260, 0.955197936968127710,
+    -0.295967736775197890,
+  0.955141168305770780, -0.296150888243623790, 0.955084364525603410,
+    -0.296334028823428190,
+  0.955027525629714160, -0.296517158507877470, 0.954970651620192790,
+    -0.296700277290238350,
+  0.954913742499130520, -0.296883385163778270, 0.954856798268619580,
+    -0.297066482121764730,
+  0.954799818930753720, -0.297249568157465840, 0.954742804487627940,
+    -0.297432643264150030,
+  0.954685754941338340, -0.297615707435086200, 0.954628670293982680,
+    -0.297798760663543550,
+  0.954571550547659630, -0.297981802942791810, 0.954514395704469500,
+    -0.298164834266100850,
+  0.954457205766513490, -0.298347854626741400, 0.954399980735894490,
+    -0.298530864017984120,
+  0.954342720614716480, -0.298713862433100330, 0.954285425405084650,
+    -0.298896849865361800,
+  0.954228095109105670, -0.299079826308040480, 0.954170729728887280,
+    -0.299262791754408840,
+  0.954113329266538800, -0.299445746197739890, 0.954055893724170660,
+    -0.299628689631306790,
+  0.953998423103894490, -0.299811622048383350, 0.953940917407823500,
+    -0.299994543442243580,
+  0.953883376638071770, -0.300177453806161950, 0.953825800796755050,
+    -0.300360353133413530,
+  0.953768189885990330, -0.300543241417273450, 0.953710543907895670,
+    -0.300726118651017500,
+  0.953652862864590500, -0.300908984827921890, 0.953595146758195680,
+    -0.301091839941263100,
+  0.953537395590833280, -0.301274683984317950, 0.953479609364626610,
+    -0.301457516950363940,
+  0.953421788081700310, -0.301640338832678770, 0.953363931744180330,
+    -0.301823149624540650,
+  0.953306040354193860, -0.302005949319228080, 0.953248113913869320,
+    -0.302188737910019990,
+  0.953190152425336670, -0.302371515390195970, 0.953132155890726750,
+    -0.302554281753035610,
+  0.953074124312172200, -0.302737036991819140, 0.953016057691806530,
+    -0.302919781099827310,
+  0.952957956031764700, -0.303102514070341060, 0.952899819334182880,
+    -0.303285235896641750,
+  0.952841647601198720, -0.303467946572011320, 0.952783440834950920,
+    -0.303650646089731910,
+  0.952725199037579570, -0.303833334443086360, 0.952666922211226170,
+    -0.304016011625357570,
+  0.952608610358033350, -0.304198677629829110, 0.952550263480144930,
+    -0.304381332449784880,
+  0.952491881579706320, -0.304563976078509100, 0.952433464658864030,
+    -0.304746608509286530,
+  0.952375012719765880, -0.304929229735402370, 0.952316525764560940,
+    -0.305111839750142110,
+  0.952258003795399600, -0.305294438546791670, 0.952199446814433580,
+    -0.305477026118637420,
+  0.952140854823815830, -0.305659602458966120, 0.952082227825700620,
+    -0.305842167561065080,
+  0.952023565822243570, -0.306024721418221790, 0.951964868815601380,
+    -0.306207264023724220,
+  0.951906136807932350, -0.306389795370860920, 0.951847369801395620,
+    -0.306572315452920740,
+  0.951788567798152130, -0.306754824263192780, 0.951729730800363830,
+    -0.306937321794966910,
+  0.951670858810193860, -0.307119808041533100, 0.951611951829806850,
+    -0.307302282996181790,
+  0.951553009861368590, -0.307484746652204100, 0.951494032907046370,
+    -0.307667199002891190,
+  0.951435020969008340, -0.307849640041534870, 0.951375974049424420,
+    -0.308032069761427330,
+  0.951316892150465550, -0.308214488155861050, 0.951257775274304000,
+    -0.308396895218129190,
+  0.951198623423113230, -0.308579290941525090, 0.951139436599068190,
+    -0.308761675319342450,
+  0.951080214804345010, -0.308944048344875710, 0.951020958041121080,
+    -0.309126410011419440,
+  0.950961666311575080, -0.309308760312268730, 0.950902339617887060,
+    -0.309491099240719100,
+  0.950842977962238160, -0.309673426790066380, 0.950783581346811070,
+    -0.309855742953607070,
+  0.950724149773789610, -0.310038047724637890, 0.950664683245358910,
+    -0.310220341096455850,
+  0.950605181763705340, -0.310402623062358720, 0.950545645331016600,
+    -0.310584893615644450,
+  0.950486073949481700, -0.310767152749611470, 0.950426467621290900,
+    -0.310949400457558640,
+  0.950366826348635780, -0.311131636732785270, 0.950307150133709260,
+    -0.311313861568590920,
+  0.950247438978705230, -0.311496074958275910, 0.950187692885819280,
+    -0.311678276895140550,
+  0.950127911857248100, -0.311860467372486020, 0.950068095895189590,
+    -0.312042646383613510,
+  0.950008245001843000, -0.312224813921824880, 0.949948359179409010,
+    -0.312406969980422440,
+  0.949888438430089300, -0.312589114552708710, 0.949828482756087110,
+    -0.312771247631986770,
+  0.949768492159606680, -0.312953369211560200, 0.949708466642853800,
+    -0.313135479284732840,
+  0.949648406208035480, -0.313317577844809010, 0.949588310857359950,
+    -0.313499664885093510,
+  0.949528180593036670, -0.313681740398891520, 0.949468015417276550,
+    -0.313863804379508500,
+  0.949407815332291570, -0.314045856820250710, 0.949347580340295210,
+    -0.314227897714424440,
+  0.949287310443502120, -0.314409927055336660, 0.949227005644128210,
+    -0.314591944836294660,
+  0.949166665944390700, -0.314773951050606070, 0.949106291346508260,
+    -0.314955945691579140,
+  0.949045881852700560, -0.315137928752522440, 0.948985437465188710,
+    -0.315319900226744890,
+  0.948924958186195160, -0.315501860107555990, 0.948864444017943340,
+    -0.315683808388265650,
+  0.948803894962658490, -0.315865745062183960, 0.948743311022566480,
+    -0.316047670122621860,
+  0.948682692199895090, -0.316229583562890330, 0.948622038496872990,
+    -0.316411485376300980,
+  0.948561349915730270, -0.316593375556165850, 0.948500626458698260,
+    -0.316775254095797270,
+  0.948439868128009620, -0.316957120988508150, 0.948379074925898120,
+    -0.317138976227611780,
+  0.948318246854599090, -0.317320819806421740, 0.948257383916349060,
+    -0.317502651718252260,
+  0.948196486113385580, -0.317684471956417970, 0.948135553447947980,
+    -0.317866280514233660,
+  0.948074585922276230, -0.318048077385014950, 0.948013583538612200,
+    -0.318229862562077530,
+  0.947952546299198670, -0.318411636038737790, 0.947891474206279840,
+    -0.318593397808312420,
+  0.947830367262101010, -0.318775147864118480, 0.947769225468909180,
+    -0.318956886199473650,
+  0.947708048828952100, -0.319138612807695900, 0.947646837344479300,
+    -0.319320327682103610,
+  0.947585591017741090, -0.319502030816015690, 0.947524309850989570,
+    -0.319683722202751430,
+  0.947462993846477700, -0.319865401835630500, 0.947401643006459900,
+    -0.320047069707973140,
+  0.947340257333192050, -0.320228725813099860, 0.947278836828930880,
+    -0.320410370144331820,
+  0.947217381495934820, -0.320592002694990330, 0.947155891336463270,
+    -0.320773623458397330,
+  0.947094366352777220, -0.320955232427875210, 0.947032806547138620,
+    -0.321136829596746660,
+  0.946971211921810880, -0.321318414958334850, 0.946909582479058760,
+    -0.321499988505963510,
+  0.946847918221148000, -0.321681550232956580, 0.946786219150346000,
+    -0.321863100132638580,
+  0.946724485268921170, -0.322044638198334510, 0.946662716579143360,
+    -0.322226164423369600,
+  0.946600913083283530, -0.322407678801069850, 0.946539074783614100,
+    -0.322589181324761330,
+  0.946477201682408680, -0.322770671987770710, 0.946415293781942110,
+    -0.322952150783425260,
+  0.946353351084490590, -0.323133617705052330, 0.946291373592331620,
+    -0.323315072745979980,
+  0.946229361307743820, -0.323496515899536710, 0.946167314233007370,
+    -0.323677947159051240,
+  0.946105232370403450, -0.323859366517852850, 0.946043115722214560,
+    -0.324040773969271450,
+  0.945980964290724760, -0.324222169506636960, 0.945918778078219110,
+    -0.324403553123280230,
+  0.945856557086983910, -0.324584924812532150, 0.945794301319306970,
+    -0.324766284567724220,
+  0.945732010777477150, -0.324947632382188430, 0.945669685463784710,
+    -0.325128968249257080,
+  0.945607325380521280, -0.325310292162262930, 0.945544930529979680,
+    -0.325491604114539310,
+  0.945482500914453740, -0.325672904099419850, 0.945420036536239070,
+    -0.325854192110238580,
+  0.945357537397632290, -0.326035468140330240, 0.945295003500931210,
+    -0.326216732183029710,
+  0.945232434848435000, -0.326397984231672490, 0.945169831442444150,
+    -0.326579224279594400,
+  0.945107193285260610, -0.326760452320131730, 0.945044520379187070,
+    -0.326941668346621420,
+  0.944981812726528150, -0.327122872352400510, 0.944919070329589220,
+    -0.327304064330806670,
+  0.944856293190677210, -0.327485244275178000, 0.944793481312100280,
+    -0.327666412178853120,
+  0.944730634696167800, -0.327847568035170840, 0.944667753345190490,
+    -0.328028711837470680,
+  0.944604837261480260, -0.328209843579092500, 0.944541886447350490,
+    -0.328390963253376580,
+  0.944478900905115550, -0.328572070853663740, 0.944415880637091250,
+    -0.328753166373294990,
+  0.944352825645594750, -0.328934249805612200, 0.944289735932944410,
+    -0.329115321143957250,
+  0.944226611501459810, -0.329296380381672750, 0.944163452353461770,
+    -0.329477427512101740,
+  0.944100258491272660, -0.329658462528587490, 0.944037029917215830,
+    -0.329839485424473940,
+  0.943973766633615980, -0.330020496193105420, 0.943910468642799150,
+    -0.330201494827826570,
+  0.943847135947092690, -0.330382481321982780, 0.943783768548825060,
+    -0.330563455668919540,
+  0.943720366450326200, -0.330744417861982890, 0.943656929653927220,
+    -0.330925367894519540,
+  0.943593458161960390, -0.331106305759876430, 0.943529951976759480,
+    -0.331287231451400820,
+  0.943466411100659320, -0.331468144962440870, 0.943402835535996240,
+    -0.331649046286344670,
+  0.943339225285107720, -0.331829935416461110, 0.943275580350332540,
+    -0.332010812346139380,
+  0.943211900734010620, -0.332191677068729150, 0.943148186438483420,
+    -0.332372529577580620,
+  0.943084437466093490, -0.332553369866044220, 0.943020653819184650,
+    -0.332734197927471050,
+  0.942956835500102120, -0.332915013755212650, 0.942892982511192250,
+    -0.333095817342620780,
+  0.942829094854802710, -0.333276608683047930, 0.942765172533282510,
+    -0.333457387769846850,
+  0.942701215548981900, -0.333638154596370860, 0.942637223904252530,
+    -0.333818909155973620,
+  0.942573197601446870, -0.333999651442009380, 0.942509136642919240,
+    -0.334180381447832690,
+  0.942445041031024890, -0.334361099166798740, 0.942380910768120470,
+    -0.334541804592262900,
+  0.942316745856563780, -0.334722497717581220, 0.942252546298714020,
+    -0.334903178536110180,
+  0.942188312096931770, -0.335083847041206580, 0.942124043253578570,
+    -0.335264503226227810,
+  0.942059739771017310, -0.335445147084531600, 0.941995401651612550,
+    -0.335625778609476290,
+  0.941931028897729620, -0.335806397794420450, 0.941866621511735280,
+    -0.335987004632723350,
+  0.941802179495997650, -0.336167599117744520, 0.941737702852886160,
+    -0.336348181242844050,
+  0.941673191584771360, -0.336528751001382410, 0.941608645694025250,
+    -0.336709308386720580,
+  0.941544065183020810, -0.336889853392220050, 0.941479450054132580,
+    -0.337070386011242620,
+  0.941414800309736340, -0.337250906237150590, 0.941350115952208970,
+    -0.337431414063306840,
+  0.941285396983928660, -0.337611909483074620, 0.941220643407275180,
+    -0.337792392489817460,
+  0.941155855224629190, -0.337972863076899720, 0.941091032438372780,
+    -0.338153321237685930,
+  0.941026175050889260, -0.338333766965541130, 0.940961283064563280,
+    -0.338514200253830940,
+  0.940896356481780830, -0.338694621095921190, 0.940831395304928870,
+    -0.338875029485178450,
+  0.940766399536396070, -0.339055425414969640, 0.940701369178571940,
+    -0.339235808878661950,
+  0.940636304233847590, -0.339416179869623360, 0.940571204704615190,
+    -0.339596538381222110,
+  0.940506070593268300, -0.339776884406826850, 0.940440901902201750,
+    -0.339957217939806880,
+  0.940375698633811540, -0.340137538973531720, 0.940310460790495070,
+    -0.340317847501371670,
+  0.940245188374650880, -0.340498143516697160, 0.940179881388678920,
+    -0.340678427012879200,
+  0.940114539834980280, -0.340858697983289440, 0.940049163715957370,
+    -0.341038956421299720,
+  0.939983753034014050, -0.341219202320282360, 0.939918307791555050,
+    -0.341399435673610420,
+  0.939852827990986680, -0.341579656474657160, 0.939787313634716570,
+    -0.341759864716796310,
+  0.939721764725153340, -0.341940060393402190, 0.939656181264707180,
+    -0.342120243497849530,
+  0.939590563255789270, -0.342300414023513520, 0.939524910700812230,
+    -0.342480571963769800,
+  0.939459223602189920, -0.342660717311994380, 0.939393501962337510,
+    -0.342840850061563950,
+  0.939327745783671400, -0.343020970205855540, 0.939261955068609210,
+    -0.343201077738246540,
+  0.939196129819569900, -0.343381172652115040, 0.939130270038973650,
+    -0.343561254940839390,
+  0.939064375729241950, -0.343741324597798490, 0.938998446892797540,
+    -0.343921381616371700,
+  0.938932483532064600, -0.344101425989938810, 0.938866485649468060,
+    -0.344281457711880180,
+  0.938800453247434770, -0.344461476775576540, 0.938734386328392460,
+    -0.344641483174408960,
+  0.938668284894770170, -0.344821476901759290, 0.938602148948998400,
+    -0.345001457951009670,
+  0.938535978493508560, -0.345181426315542550, 0.938469773530733800,
+    -0.345361381988741220,
+  0.938403534063108060, -0.345541324963989090, 0.938337260093066950,
+    -0.345721255234670120,
+  0.938270951623047190, -0.345901172794168990, 0.938204608655486490,
+    -0.346081077635870430,
+  0.938138231192824360, -0.346260969753160010, 0.938071819237501270,
+    -0.346440849139423520,
+  0.938005372791958840, -0.346620715788047320, 0.937938891858640320,
+    -0.346800569692418290,
+  0.937872376439989890, -0.346980410845923680, 0.937805826538453120,
+    -0.347160239241951160,
+  0.937739242156476970, -0.347340054873889140, 0.937672623296509470,
+    -0.347519857735126110,
+  0.937605969960999990, -0.347699647819051380, 0.937539282152399230,
+    -0.347879425119054510,
+  0.937472559873159250, -0.348059189628525610, 0.937405803125732960,
+    -0.348238941340855260,
+  0.937339011912574960, -0.348418680249434560, 0.937272186236140950,
+    -0.348598406347654930,
+  0.937205326098887960, -0.348778119628908420, 0.937138431503274140,
+    -0.348957820086587490,
+  0.937071502451759190, -0.349137507714084970, 0.937004538946803690,
+    -0.349317182504794380,
+  0.936937540990869900, -0.349496844452109550, 0.936870508586420960,
+    -0.349676493549424760,
+  0.936803441735921560, -0.349856129790134920, 0.936736340441837620,
+    -0.350035753167635240,
+  0.936669204706636170, -0.350215363675321580, 0.936602034532785570,
+    -0.350394961306590150,
+  0.936534829922755500, -0.350574546054837510, 0.936467590879016990,
+    -0.350754117913461060,
+  0.936400317404042060, -0.350933676875858360, 0.936333009500304180,
+    -0.351113222935427460,
+  0.936265667170278260, -0.351292756085567090, 0.936198290416440090,
+    -0.351472276319676310,
+  0.936130879241267030, -0.351651783631154570, 0.936063433647237540,
+    -0.351831278013402030,
+  0.935995953636831410, -0.352010759459819080, 0.935928439212529660,
+    -0.352190227963806830,
+  0.935860890376814640, -0.352369683518766630, 0.935793307132169900,
+    -0.352549126118100460,
+  0.935725689481080370, -0.352728555755210730, 0.935658037426032040,
+    -0.352907972423500250,
+  0.935590350969512370, -0.353087376116372480, 0.935522630114009930,
+    -0.353266766827231240,
+  0.935454874862014620, -0.353446144549480810, 0.935387085216017770,
+    -0.353625509276525970,
+  0.935319261178511610, -0.353804861001772050, 0.935251402751989920,
+    -0.353984199718624770,
+  0.935183509938947610, -0.354163525420490340, 0.935115582741880890,
+    -0.354342838100775550,
+  0.935047621163287430, -0.354522137752887430, 0.934979625205665800,
+    -0.354701424370233830,
+  0.934911594871516090, -0.354880697946222790, 0.934843530163339540,
+    -0.355059958474262860,
+  0.934775431083638700, -0.355239205947763310, 0.934707297634917440,
+    -0.355418440360133650,
+  0.934639129819680780, -0.355597661704783850, 0.934570927640435030,
+    -0.355776869975124640,
+  0.934502691099687870, -0.355956065164566850, 0.934434420199948050,
+    -0.356135247266522130,
+  0.934366114943725790, -0.356314416274402410, 0.934297775333532530,
+    -0.356493572181620090,
+  0.934229401371880820, -0.356672714981588260, 0.934160993061284530,
+    -0.356851844667720300,
+  0.934092550404258980, -0.357030961233429980, 0.934024073403320390,
+    -0.357210064672131960,
+  0.933955562060986730, -0.357389154977240940, 0.933887016379776890,
+    -0.357568232142172260,
+  0.933818436362210960, -0.357747296160341900, 0.933749822010810580,
+    -0.357926347025166010,
+  0.933681173328098410, -0.358105384730061590, 0.933612490316598540,
+    -0.358284409268445850,
+  0.933543772978836170, -0.358463420633736540, 0.933475021317337950,
+    -0.358642418819351990,
+  0.933406235334631520, -0.358821403818710860, 0.933337415033246190,
+    -0.359000375625232460,
+  0.933268560415712050, -0.359179334232336500, 0.933199671484560730,
+    -0.359358279633443130,
+  0.933130748242325230, -0.359537211821973070, 0.933061790691539380,
+    -0.359716130791347570,
+  0.932992798834738960, -0.359895036534988110, 0.932923772674460140,
+    -0.360073929046317020,
+  0.932854712213241120, -0.360252808318756890, 0.932785617453621100,
+    -0.360431674345730700,
+  0.932716488398140250, -0.360610527120662270, 0.932647325049340450,
+    -0.360789366636975580,
+  0.932578127409764420, -0.360968192888095230, 0.932508895481956590,
+    -0.361147005867446250,
+  0.932439629268462360, -0.361325805568454280, 0.932370328771828460,
+    -0.361504591984545260,
+  0.932300993994602760, -0.361683365109145840, 0.932231624939334540,
+    -0.361862124935682980,
+  0.932162221608574430, -0.362040871457584180, 0.932092784004874050,
+    -0.362219604668277460,
+  0.932023312130786490, -0.362398324561191310, 0.931953805988866010,
+    -0.362577031129754760,
+  0.931884265581668150, -0.362755724367397230, 0.931814690911749730,
+    -0.362934404267548640,
+  0.931745081981668720, -0.363113070823639470, 0.931675438793984620,
+    -0.363291724029100760,
+  0.931605761351257830, -0.363470363877363760, 0.931536049656050300,
+    -0.363648990361860550,
+  0.931466303710925090, -0.363827603476023500, 0.931396523518446600,
+    -0.364006203213285470,
+  0.931326709081180430, -0.364184789567079890, 0.931256860401693420,
+    -0.364363362530840620,
+  0.931186977482553750, -0.364541922098002120, 0.931117060326330790,
+    -0.364720468261999280,
+  0.931047108935595280, -0.364899001016267320, 0.930977123312918930,
+    -0.365077520354242180,
+  0.930907103460875130, -0.365256026269360320, 0.930837049382038150,
+    -0.365434518755058390,
+  0.930766961078983710, -0.365612997804773850, 0.930696838554288860,
+    -0.365791463411944570,
+  0.930626681810531760, -0.365969915570008740, 0.930556490850291800,
+    -0.366148354272405330,
+  0.930486265676149780, -0.366326779512573590, 0.930416006290687550,
+    -0.366505191283953370,
+  0.930345712696488470, -0.366683589579984930, 0.930275384896137150,
+    -0.366861974394109060,
+  0.930205022892219070, -0.367040345719767180, 0.930134626687321390,
+    -0.367218703550400980,
+  0.930064196284032360, -0.367397047879452710, 0.929993731684941480,
+    -0.367575378700365330,
+  0.929923232892639670, -0.367753696006581980, 0.929852699909718750,
+    -0.367931999791546450,
+  0.929782132738772190, -0.368110290048703050, 0.929711531382394370,
+    -0.368288566771496570,
+  0.929640895843181330, -0.368466829953372320, 0.929570226123729860,
+    -0.368645079587776040,
+  0.929499522226638560, -0.368823315668153910, 0.929428784154506800,
+    -0.369001538187952780,
+  0.929358011909935500, -0.369179747140620020, 0.929287205495526790,
+    -0.369357942519603130,
+  0.929216364913884040, -0.369536124318350650, 0.929145490167611720,
+    -0.369714292530311240,
+  0.929074581259315860, -0.369892447148934100, 0.929003638191603360,
+    -0.370070588167669080,
+  0.928932660967082820, -0.370248715579966360, 0.928861649588363700,
+    -0.370426829379276790,
+  0.928790604058057020, -0.370604929559051670, 0.928719524378774810,
+    -0.370783016112742560,
+  0.928648410553130520, -0.370961089033801980, 0.928577262583738850,
+    -0.371139148315682570,
+  0.928506080473215590, -0.371317193951837540, 0.928434864224177980,
+    -0.371495225935720760,
+  0.928363613839244370, -0.371673244260786520, 0.928292329321034670,
+    -0.371851248920489490,
+  0.928221010672169440, -0.372029239908285010, 0.928149657895271150,
+    -0.372207217217628840,
+  0.928078270992963140, -0.372385180841977360, 0.928006849967869970,
+    -0.372563130774787250,
+  0.927935394822617890, -0.372741067009515760, 0.927863905559833780,
+    -0.372918989539620830,
+  0.927792382182146320, -0.373096898358560640, 0.927720824692185200,
+    -0.373274793459793970,
+  0.927649233092581180, -0.373452674836780300, 0.927577607385966730,
+    -0.373630542482979280,
+  0.927505947574975180, -0.373808396391851210, 0.927434253662241300,
+    -0.373986236556857030,
+  0.927362525650401110, -0.374164062971457930, 0.927290763542091720,
+    -0.374341875629115920,
+  0.927218967339951790, -0.374519674523293210, 0.927147137046620880,
+    -0.374697459647452600,
+  0.927075272664740100, -0.374875230995057540, 0.927003374196951670,
+    -0.375052988559571920,
+  0.926931441645899130, -0.375230732334459920, 0.926859475014227160,
+    -0.375408462313186590,
+  0.926787474304581750, -0.375586178489217220, 0.926715439519610330,
+    -0.375763880856017700,
+  0.926643370661961230, -0.375941569407054420, 0.926571267734284330,
+    -0.376119244135794340,
+  0.926499130739230510, -0.376296905035704790, 0.926426959679452210,
+    -0.376474552100253770,
+  0.926354754557602860, -0.376652185322909560, 0.926282515376337210,
+    -0.376829804697141280,
+  0.926210242138311380, -0.377007410216418260, 0.926137934846182560,
+    -0.377185001874210450,
+  0.926065593502609310, -0.377362579663988340, 0.925993218110251480,
+    -0.377540143579222940,
+  0.925920808671770070, -0.377717693613385640, 0.925848365189827270,
+    -0.377895229759948490,
+  0.925775887667086740, -0.378072752012383990, 0.925703376106213230,
+    -0.378250260364165200,
+  0.925630830509872720, -0.378427754808765560, 0.925558250880732740,
+    -0.378605235339659120,
+  0.925485637221461490, -0.378782701950320540, 0.925412989534729060,
+    -0.378960154634224720,
+  0.925340307823206310, -0.379137593384847320, 0.925267592089565660,
+    -0.379315018195664430,
+  0.925194842336480530, -0.379492429060152630, 0.925122058566625880,
+    -0.379669825971788940,
+  0.925049240782677580, -0.379847208924051160, 0.924976388987313160,
+    -0.380024577910417270,
+  0.924903503183210910, -0.380201932924366050, 0.924830583373050800,
+    -0.380379273959376600,
+  0.924757629559513910, -0.380556601008928520, 0.924684641745282420,
+    -0.380733914066502140,
+  0.924611619933039970, -0.380911213125578070, 0.924538564125471420,
+    -0.381088498179637520,
+  0.924465474325262600, -0.381265769222162380, 0.924392350535101050,
+    -0.381443026246634730,
+  0.924319192757675160, -0.381620269246537360, 0.924246000995674890,
+    -0.381797498215353640,
+  0.924172775251791200, -0.381974713146567220, 0.924099515528716280,
+    -0.382151914033662610,
+  0.924026221829143850, -0.382329100870124510, 0.923952894155768640,
+    -0.382506273649438230,
+  0.923879532511286740, -0.382683432365089780, 0.923806136898395410,
+    -0.382860577010565420,
+  0.923732707319793290, -0.383037707579352020, 0.923659243778179980,
+    -0.383214824064937180,
+  0.923585746276256670, -0.383391926460808660, 0.923512214816725630,
+    -0.383569014760454910,
+  0.923438649402290370, -0.383746088957365010, 0.923365050035655720,
+    -0.383923149045028390,
+  0.923291416719527640, -0.384100195016935040, 0.923217749456613500,
+    -0.384277226866575510,
+  0.923144048249621930, -0.384454244587440820, 0.923070313101262420,
+    -0.384631248173022580,
+  0.922996544014246250, -0.384808237616812880, 0.922922740991285680,
+    -0.384985212912304200,
+  0.922848904035094120, -0.385162174052989860, 0.922775033148386380,
+    -0.385339121032363340,
+  0.922701128333878630, -0.385516053843918850, 0.922627189594287910,
+    -0.385692972481151140,
+  0.922553216932332830, -0.385869876937555310, 0.922479210350733210,
+    -0.386046767206627170,
+  0.922405169852209880, -0.386223643281862980, 0.922331095439485440,
+    -0.386400505156759440,
+  0.922256987115283030, -0.386577352824813920, 0.922182844882327600,
+    -0.386754186279524180,
+  0.922108668743345180, -0.386931005514388580, 0.922034458701062820,
+    -0.387107810522905990,
+  0.921960214758209220, -0.387284601298575840, 0.921885936917513970,
+    -0.387461377834897870,
+  0.921811625181708120, -0.387638140125372730, 0.921737279553523910,
+    -0.387814888163501180,
+  0.921662900035694730, -0.387991621942784860, 0.921588486630955490,
+    -0.388168341456725740,
+  0.921514039342042010, -0.388345046698826250, 0.921439558171691430,
+    -0.388521737662589570,
+  0.921365043122642340, -0.388698414341519190, 0.921290494197634540,
+    -0.388875076729119250,
+  0.921215911399408730, -0.389051724818894380, 0.921141294730707270,
+    -0.389228358604349730,
+  0.921066644194273640, -0.389404978078990940, 0.920991959792852310,
+    -0.389581583236324300,
+  0.920917241529189520, -0.389758174069856410, 0.920842489406032190,
+    -0.389934750573094730,
+  0.920767703426128790, -0.390111312739546910, 0.920692883592229120,
+    -0.390287860562721190,
+  0.920618029907083970, -0.390464394036126590, 0.920543142373445480,
+    -0.390640913153272430,
+  0.920468220994067110, -0.390817417907668500, 0.920393265771703550,
+    -0.390993908292825380,
+  0.920318276709110590, -0.391170384302253870, 0.920243253809045370,
+    -0.391346845929465560,
+  0.920168197074266340, -0.391523293167972410, 0.920093106507533180,
+    -0.391699726011286940,
+  0.920017982111606570, -0.391876144452922350, 0.919942823889248640,
+    -0.392052548486392090,
+  0.919867631843222950, -0.392228938105210310, 0.919792405976293860,
+    -0.392405313302891690,
+  0.919717146291227360, -0.392581674072951470, 0.919641852790790470,
+    -0.392758020408905280,
+  0.919566525477751530, -0.392934352304269490, 0.919491164354880100,
+    -0.393110669752560760,
+  0.919415769424947070, -0.393286972747296400, 0.919340340690724340,
+    -0.393463261281994330,
+  0.919264878154985370, -0.393639535350172880, 0.919189381820504470,
+    -0.393815794945351020,
+  0.919113851690057770, -0.393992040061048100, 0.919038287766422050,
+    -0.394168270690784080,
+  0.918962690052375630, -0.394344486828079600, 0.918887058550697970,
+    -0.394520688466455600,
+  0.918811393264170050, -0.394696875599433560, 0.918735694195573550,
+    -0.394873048220535760,
+  0.918659961347691900, -0.395049206323284770, 0.918584194723309540,
+    -0.395225349901203670,
+  0.918508394325212250, -0.395401478947816350, 0.918432560156186910,
+    -0.395577593456646840,
+  0.918356692219021720, -0.395753693421220080, 0.918280790516506130,
+    -0.395929778835061250,
+  0.918204855051430900, -0.396105849691696270, 0.918128885826588030,
+    -0.396281905984651520,
+  0.918052882844770380, -0.396457947707453910, 0.917976846108772730,
+    -0.396633974853630830,
+  0.917900775621390500, -0.396809987416710310, 0.917824671385420570,
+    -0.396985985390220900,
+  0.917748533403661250, -0.397161968767691610, 0.917672361678911860,
+    -0.397337937542652060,
+  0.917596156213972950, -0.397513891708632330, 0.917519917011646260,
+    -0.397689831259163180,
+  0.917443644074735220, -0.397865756187775750, 0.917367337406043930,
+    -0.398041666488001770,
+  0.917290997008377910, -0.398217562153373560, 0.917214622884544250,
+    -0.398393443177423980,
+  0.917138215037350710, -0.398569309553686300, 0.917061773469606820,
+    -0.398745161275694430,
+  0.916985298184123000, -0.398920998336982910, 0.916908789183710990,
+    -0.399096820731086540,
+  0.916832246471183890, -0.399272628451540990, 0.916755670049355990,
+    -0.399448421491882140,
+  0.916679059921042700, -0.399624199845646790, 0.916602416089060790,
+    -0.399799963506371980,
+  0.916525738556228210, -0.399975712467595330, 0.916449027325364150,
+    -0.400151446722855130,
+  0.916372282399289140, -0.400327166265690090, 0.916295503780824800,
+    -0.400502871089639500,
+  0.916218691472794220, -0.400678561188243240, 0.916141845478021350,
+    -0.400854236555041650,
+  0.916064965799331720, -0.401029897183575620, 0.915988052439551950,
+    -0.401205543067386710,
+  0.915911105401509880, -0.401381174200016790, 0.915834124688034710,
+    -0.401556790575008540,
+  0.915757110301956720, -0.401732392185905010, 0.915680062246107650,
+    -0.401907979026249700,
+  0.915602980523320230, -0.402083551089586990, 0.915525865136428530,
+    -0.402259108369461490,
+  0.915448716088267830, -0.402434650859418430, 0.915371533381674760,
+    -0.402610178553003680,
+  0.915294317019487050, -0.402785691443763530, 0.915217067004543860,
+    -0.402961189525244900,
+  0.915139783339685260, -0.403136672790995300, 0.915062466027752760,
+    -0.403312141234562550,
+  0.914985115071589310, -0.403487594849495310, 0.914907730474038730,
+    -0.403663033629342640,
+  0.914830312237946200, -0.403838457567654070, 0.914752860366158220,
+    -0.404013866657979890,
+  0.914675374861522390, -0.404189260893870690, 0.914597855726887790,
+    -0.404364640268877810,
+  0.914520302965104450, -0.404540004776553000, 0.914442716579023870,
+    -0.404715354410448650,
+  0.914365096571498560, -0.404890689164117580, 0.914287442945382440,
+    -0.405066009031113340,
+  0.914209755703530690, -0.405241314004989860, 0.914132034848799460,
+    -0.405416604079301630,
+  0.914054280384046570, -0.405591879247603870, 0.913976492312130630,
+    -0.405767139503452060,
+  0.913898670635911680, -0.405942384840402510, 0.913820815358251100,
+    -0.406117615252011840,
+  0.913742926482011390, -0.406292830731837360, 0.913665004010056350,
+    -0.406468031273437000,
+  0.913587047945250810, -0.406643216870369030, 0.913509058290461140,
+    -0.406818387516192310,
+  0.913431035048554720, -0.406993543204466510, 0.913352978222400250,
+    -0.407168683928751550,
+  0.913274887814867760, -0.407343809682607970, 0.913196763828828200,
+    -0.407518920459596920,
+  0.913118606267154240, -0.407694016253280110, 0.913040415132719160,
+    -0.407869097057219800,
+  0.912962190428398210, -0.408044162864978690, 0.912883932157067200,
+    -0.408219213670120100,
+  0.912805640321603500, -0.408394249466208000, 0.912727314924885900,
+    -0.408569270246806780,
+  0.912648955969793900, -0.408744276005481360, 0.912570563459208730,
+    -0.408919266735797430,
+  0.912492137396012650, -0.409094242431320980, 0.912413677783089020,
+    -0.409269203085618590,
+  0.912335184623322750, -0.409444148692257590, 0.912256657919599760,
+    -0.409619079244805670,
+  0.912178097674807180, -0.409793994736831150, 0.912099503891833470,
+    -0.409968895161902880,
+  0.912020876573568340, -0.410143780513590240, 0.911942215722902570,
+    -0.410318650785463260,
+  0.911863521342728520, -0.410493505971092410, 0.911784793435939430,
+    -0.410668346064048730,
+  0.911706032005429880, -0.410843171057903910, 0.911627237054095650,
+    -0.411017980946230210,
+  0.911548408584833990, -0.411192775722600160, 0.911469546600543020,
+    -0.411367555380587220,
+  0.911390651104122430, -0.411542319913765220, 0.911311722098472780,
+    -0.411717069315708560,
+  0.911232759586496190, -0.411891803579992170, 0.911153763571095900,
+    -0.412066522700191560,
+  0.911074734055176360, -0.412241226669882890, 0.910995671041643140,
+    -0.412415915482642730,
+  0.910916574533403360, -0.412590589132048210, 0.910837444533365010,
+    -0.412765247611677270,
+  0.910758281044437570, -0.412939890915108080, 0.910679084069531570,
+    -0.413114519035919450,
+  0.910599853611558930, -0.413289131967690960, 0.910520589673432750,
+    -0.413463729704002410,
+  0.910441292258067250, -0.413638312238434500, 0.910361961368377990,
+    -0.413812879564568300,
+  0.910282597007281760, -0.413987431675985400, 0.910203199177696540,
+    -0.414161968566268080,
+  0.910123767882541680, -0.414336490228999100, 0.910044303124737500,
+    -0.414510996657761750,
+  0.909964804907205660, -0.414685487846140010, 0.909885273232869160,
+    -0.414859963787718330,
+  0.909805708104652220, -0.415034424476081630, 0.909726109525480160,
+    -0.415208869904815590,
+  0.909646477498279540, -0.415383300067506230, 0.909566812025978330,
+    -0.415557714957740410,
+  0.909487113111505430, -0.415732114569105360, 0.909407380757791260,
+    -0.415906498895188770,
+  0.909327614967767260, -0.416080867929579210, 0.909247815744366310,
+    -0.416255221665865480,
+  0.909167983090522380, -0.416429560097637150, 0.909088117009170580,
+    -0.416603883218484350,
+  0.909008217503247450, -0.416778191021997650, 0.908928284575690640,
+    -0.416952483501768170,
+  0.908848318229439120, -0.417126760651387870, 0.908768318467432890,
+    -0.417301022464448890,
+  0.908688285292613360, -0.417475268934544290, 0.908608218707923190,
+    -0.417649500055267410,
+  0.908528118716306120, -0.417823715820212270, 0.908447985320707250,
+    -0.417997916222973550,
+  0.908367818524072890, -0.418172101257146320, 0.908287618329350450,
+    -0.418346270916326260,
+  0.908207384739488700, -0.418520425194109700, 0.908127117757437600,
+    -0.418694564084093560,
+  0.908046817386148340, -0.418868687579875050, 0.907966483628573350,
+    -0.419042795675052370,
+  0.907886116487666260, -0.419216888363223910, 0.907805715966381930,
+    -0.419390965637988890,
+  0.907725282067676440, -0.419565027492946880, 0.907644814794507200,
+    -0.419739073921698180,
+  0.907564314149832630, -0.419913104917843620, 0.907483780136612570,
+    -0.420087120474984530,
+  0.907403212757808110, -0.420261120586722880, 0.907322612016381420,
+    -0.420435105246661170,
+  0.907241977915295820, -0.420609074448402510, 0.907161310457516250,
+    -0.420783028185550520,
+  0.907080609646008450, -0.420956966451709440, 0.906999875483739610,
+    -0.421130889240483970,
+  0.906919107973678140, -0.421304796545479640, 0.906838307118793430,
+    -0.421478688360302280,
+  0.906757472922056550, -0.421652564678558330, 0.906676605386439460,
+    -0.421826425493854910,
+  0.906595704514915330, -0.422000270799799680, 0.906514770310458800,
+    -0.422174100590000770,
+  0.906433802776045460, -0.422347914858067050, 0.906352801914652400,
+    -0.422521713597607820,
+  0.906271767729257660, -0.422695496802232950, 0.906190700222840650,
+    -0.422869264465553060,
+  0.906109599398381980, -0.423043016581179040, 0.906028465258863600,
+    -0.423216753142722610,
+  0.905947297807268460, -0.423390474143796050, 0.905866097046580940,
+    -0.423564179578011960,
+  0.905784862979786550, -0.423737869438983840, 0.905703595609872010,
+    -0.423911543720325580,
+  0.905622294939825270, -0.424085202415651560, 0.905540960972635590,
+    -0.424258845518576950,
+  0.905459593711293250, -0.424432473022717420, 0.905378193158790090,
+    -0.424606084921689110,
+  0.905296759318118820, -0.424779681209108810, 0.905215292192273590,
+    -0.424953261878593890,
+  0.905133791784249690, -0.425126826923762360, 0.905052258097043590,
+    -0.425300376338232640,
+  0.904970691133653250, -0.425473910115623800, 0.904889090897077470,
+    -0.425647428249555590,
+  0.904807457390316540, -0.425820930733648240, 0.904725790616371930,
+    -0.425994417561522400,
+  0.904644090578246240, -0.426167888726799620, 0.904562357278943300,
+    -0.426341344223101830,
+  0.904480590721468250, -0.426514784044051520, 0.904398790908827350,
+    -0.426688208183271860,
+  0.904316957844028320, -0.426861616634386430, 0.904235091530079750,
+    -0.427035009391019680,
+  0.904153191969991780, -0.427208386446796320, 0.904071259166775440,
+    -0.427381747795341770,
+  0.903989293123443340, -0.427555093430282080, 0.903907293843009050,
+    -0.427728423345243800,
+  0.903825261328487510, -0.427901737533854080, 0.903743195582894620,
+    -0.428075035989740730,
+  0.903661096609247980, -0.428248318706531960, 0.903578964410566070,
+    -0.428421585677856650,
+  0.903496798989868450, -0.428594836897344400, 0.903414600350176290,
+    -0.428768072358625070,
+  0.903332368494511820, -0.428941292055329490, 0.903250103425898400,
+    -0.429114495981088750,
+  0.903167805147360720, -0.429287684129534610, 0.903085473661924600,
+    -0.429460856494299490,
+  0.903003108972617150, -0.429634013069016380, 0.902920711082466740,
+    -0.429807153847318710,
+  0.902838279994502830, -0.429980278822840620, 0.902755815711756120,
+    -0.430153387989216870,
+  0.902673318237258830, -0.430326481340082610, 0.902590787574043870,
+    -0.430499558869073820,
+  0.902508223725145940, -0.430672620569826800, 0.902425626693600380,
+    -0.430845666435978660,
+  0.902342996482444200, -0.431018696461167030, 0.902260333094715540,
+    -0.431191710639029950,
+  0.902177636533453620, -0.431364708963206330, 0.902094906801698900,
+    -0.431537691427335500,
+  0.902012143902493180, -0.431710658025057260, 0.901929347838879460,
+    -0.431883608750012250,
+  0.901846518613901750, -0.432056543595841500, 0.901763656230605730,
+    -0.432229462556186720,
+  0.901680760692037730, -0.432402365624690140, 0.901597832001245660,
+    -0.432575252794994650,
+  0.901514870161278740, -0.432748124060743700, 0.901431875175186970,
+    -0.432920979415581280,
+  0.901348847046022030, -0.433093818853151960, 0.901265785776836580,
+    -0.433266642367100940,
+  0.901182691370684520, -0.433439449951074090, 0.901099563830620950,
+    -0.433612241598717580,
+  0.901016403159702330, -0.433785017303678520, 0.900933209360986200,
+    -0.433957777059604420,
+  0.900849982437531450, -0.434130520860143310, 0.900766722392397860,
+    -0.434303248698943990,
+  0.900683429228646970, -0.434475960569655650, 0.900600102949340900,
+    -0.434648656465928320,
+  0.900516743557543520, -0.434821336381412290, 0.900433351056319830,
+    -0.434994000309758710,
+  0.900349925448735600, -0.435166648244619260, 0.900266466737858480,
+    -0.435339280179646070,
+  0.900182974926756810, -0.435511896108492000, 0.900099450018500450,
+    -0.435684496024810460,
+  0.900015892016160280, -0.435857079922255470, 0.899932300922808510,
+    -0.436029647794481560,
+  0.899848676741518580, -0.436202199635143950, 0.899765019475365140,
+    -0.436374735437898340,
+  0.899681329127423930, -0.436547255196401200, 0.899597605700772180,
+    -0.436719758904309360,
+  0.899513849198487980, -0.436892246555280360, 0.899430059623650860,
+    -0.437064718142972370,
+  0.899346236979341570, -0.437237173661044090, 0.899262381268642000,
+    -0.437409613103154790,
+  0.899178492494635330, -0.437582036462964400, 0.899094570660405770,
+    -0.437754443734133410,
+  0.899010615769039070, -0.437926834910322860, 0.898926627823621870,
+    -0.438099209985194470,
+  0.898842606827242370, -0.438271568952410430, 0.898758552782989440,
+    -0.438443911805633690,
+  0.898674465693953820, -0.438616238538527660, 0.898590345563227030,
+    -0.438788549144756290,
+  0.898506192393901950, -0.438960843617984320, 0.898422006189072530,
+    -0.439133121951876930,
+  0.898337786951834310, -0.439305384140099950, 0.898253534685283570,
+    -0.439477630176319800,
+  0.898169249392518080, -0.439649860054203480, 0.898084931076636780,
+    -0.439822073767418500,
+  0.898000579740739880, -0.439994271309633260, 0.897916195387928660,
+    -0.440166452674516320,
+  0.897831778021305650, -0.440338617855737250, 0.897747327643974690,
+    -0.440510766846965940,
+  0.897662844259040860, -0.440682899641872900, 0.897578327869610230,
+    -0.440855016234129430,
+  0.897493778478790310, -0.441027116617407230, 0.897409196089689720,
+    -0.441199200785378660,
+  0.897324580705418320, -0.441371268731716670, 0.897239932329087160,
+    -0.441543320450094870,
+  0.897155250963808550, -0.441715355934187310, 0.897070536612695870,
+    -0.441887375177668850,
+  0.896985789278863970, -0.442059378174214700, 0.896901008965428790,
+    -0.442231364917500980,
+  0.896816195675507300, -0.442403335401204080, 0.896731349412217880,
+    -0.442575289619001170,
+  0.896646470178680150, -0.442747227564570020, 0.896561557978014960,
+    -0.442919149231588980,
+  0.896476612813344120, -0.443091054613736880, 0.896391634687790820,
+    -0.443262943704693320,
+  0.896306623604479550, -0.443434816498138480, 0.896221579566536030,
+    -0.443606672987752970,
+  0.896136502577086770, -0.443778513167218220, 0.896051392639260150,
+    -0.443950337030216140,
+  0.895966249756185220, -0.444122144570429200, 0.895881073930992370,
+    -0.444293935781540580,
+  0.895795865166813530, -0.444465710657234000, 0.895710623466781320,
+    -0.444637469191193790,
+  0.895625348834030110, -0.444809211377104880, 0.895540041271694950,
+    -0.444980937208652730,
+  0.895454700782912450, -0.445152646679523640, 0.895369327370820310,
+    -0.445324339783404190,
+  0.895283921038557580, -0.445496016513981740, 0.895198481789264200,
+    -0.445667676864944300,
+  0.895113009626081760, -0.445839320829980290, 0.895027504552152630,
+    -0.446010948402778940,
+  0.894941966570620750, -0.446182559577030070, 0.894856395684631050,
+    -0.446354154346423840,
+  0.894770791897329550, -0.446525732704651350, 0.894685155211863980,
+    -0.446697294645404090,
+  0.894599485631382700, -0.446868840162374160, 0.894513783159035620,
+    -0.447040369249254440,
+  0.894428047797973800, -0.447211881899738320, 0.894342279551349480,
+    -0.447383378107519600,
+  0.894256478422316040, -0.447554857866293010, 0.894170644414028270,
+    -0.447726321169753580,
+  0.894084777529641990, -0.447897768011597310, 0.893998877772314240,
+    -0.448069198385520400,
+  0.893912945145203250, -0.448240612285219890, 0.893826979651468620,
+    -0.448412009704393430,
+  0.893740981294271040, -0.448583390636739240, 0.893654950076772540,
+    -0.448754755075955970,
+  0.893568886002135910, -0.448926103015743260, 0.893482789073525850,
+    -0.449097434449801050,
+  0.893396659294107720, -0.449268749371829920, 0.893310496667048200,
+    -0.449440047775531150,
+  0.893224301195515320, -0.449611329654606540, 0.893138072882678320,
+    -0.449782595002758690,
+  0.893051811731707450, -0.449953843813690520, 0.892965517745774370,
+    -0.450125076081105690,
+  0.892879190928051680, -0.450296291798708610, 0.892792831281713610,
+    -0.450467490960204110,
+  0.892706438809935390, -0.450638673559297600, 0.892620013515893150,
+    -0.450809839589695280,
+  0.892533555402764580, -0.450980989045103860, 0.892447064473728680,
+    -0.451152121919230600,
+  0.892360540731965360, -0.451323238205783520, 0.892273984180655840,
+    -0.451494337898471100,
+  0.892187394822982480, -0.451665420991002490, 0.892100772662129060,
+    -0.451836487477087490,
+  0.892014117701280470, -0.452007537350436420, 0.891927429943622510,
+    -0.452178570604760350,
+  0.891840709392342720, -0.452349587233770890, 0.891753956050629460,
+    -0.452520587231180050,
+  0.891667169921672280, -0.452691570590700920, 0.891580351008662290,
+    -0.452862537306046750,
+  0.891493499314791380, -0.453033487370931580, 0.891406614843252900,
+    -0.453204420779070190,
+  0.891319697597241390, -0.453375337524177750, 0.891232747579952520,
+    -0.453546237599970090,
+  0.891145764794583180, -0.453717121000163870, 0.891058749244331590,
+    -0.453887987718476050,
+  0.890971700932396860, -0.454058837748624430, 0.890884619861979530,
+    -0.454229671084327320,
+  0.890797506036281490, -0.454400487719303580, 0.890710359458505630,
+    -0.454571287647272950,
+  0.890623180131855930, -0.454742070861955450, 0.890535968059537830,
+    -0.454912837357071940,
+  0.890448723244757880, -0.455083587126343840, 0.890361445690723840,
+    -0.455254320163493100,
+  0.890274135400644600, -0.455425036462242360, 0.890186792377730240,
+    -0.455595736016314980,
+  0.890099416625192320, -0.455766418819434640, 0.890012008146243260,
+    -0.455937084865326030,
+  0.889924566944096720, -0.456107734147714110, 0.889837093021967900,
+    -0.456278366660324620,
+  0.889749586383072780, -0.456448982396883920, 0.889662047030628900,
+    -0.456619581351118910,
+  0.889574474967854580, -0.456790163516757160, 0.889486870197969900,
+    -0.456960728887526980,
+  0.889399232724195520, -0.457131277457156980, 0.889311562549753850,
+    -0.457301809219376630,
+  0.889223859677868210, -0.457472324167916060, 0.889136124111763240,
+    -0.457642822296505770,
+  0.889048355854664570, -0.457813303598877170, 0.888960554909799310,
+    -0.457983768068762120,
+  0.888872721280395630, -0.458154215699893060, 0.888784854969682850,
+    -0.458324646486003240,
+  0.888696955980891600, -0.458495060420826270, 0.888609024317253860,
+    -0.458665457498096560,
+  0.888521059982002260, -0.458835837711549120, 0.888433062978371320,
+    -0.459006201054919630,
+  0.888345033309596350, -0.459176547521944090, 0.888256970978913870,
+    -0.459346877106359630,
+  0.888168875989561730, -0.459517189801903480, 0.888080748344778900,
+    -0.459687485602313870,
+  0.887992588047805560, -0.459857764501329540, 0.887904395101883240,
+    -0.460028026492689650,
+  0.887816169510254440, -0.460198271570134320, 0.887727911276163020,
+    -0.460368499727404010,
+  0.887639620402853930, -0.460538710958240010, 0.887551296893573370,
+    -0.460708905256384080,
+  0.887462940751568840, -0.460879082615578690, 0.887374551980088850,
+    -0.461049243029566900,
+  0.887286130582383150, -0.461219386492092380, 0.887197676561702900,
+    -0.461389512996899450,
+  0.887109189921300170, -0.461559622537733080, 0.887020670664428360,
+    -0.461729715108338770,
+  0.886932118794342190, -0.461899790702462730, 0.886843534314297410,
+    -0.462069849313851750,
+  0.886754917227550840, -0.462239890936253340, 0.886666267537361000,
+    -0.462409915563415430,
+  0.886577585246987040, -0.462579923189086810, 0.886488870359689600,
+    -0.462749913807016740,
+  0.886400122878730600, -0.462919887410955080, 0.886311342807372780,
+    -0.463089843994652530,
+  0.886222530148880640, -0.463259783551860150, 0.886133684906519340,
+    -0.463429706076329830,
+  0.886044807083555600, -0.463599611561814010, 0.885955896683257030,
+    -0.463769500002065630,
+  0.885866953708892790, -0.463939371390838520, 0.885777978163732940,
+    -0.464109225721886950,
+  0.885688970051048960, -0.464279062988965760, 0.885599929374113360,
+    -0.464448883185830660,
+  0.885510856136199950, -0.464618686306237820, 0.885421750340583680,
+    -0.464788472343943990,
+  0.885332611990540590, -0.464958241292706690, 0.885243441089348270,
+    -0.465127993146283950,
+  0.885154237640285110, -0.465297727898434600, 0.885065001646630930,
+    -0.465467445542917800,
+  0.884975733111666660, -0.465637146073493660, 0.884886432038674560,
+    -0.465806829483922710,
+  0.884797098430937790, -0.465976495767966180, 0.884707732291741040,
+    -0.466146144919385890,
+  0.884618333624369920, -0.466315776931944430, 0.884528902432111460,
+    -0.466485391799404900,
+  0.884439438718253810, -0.466654989515530920, 0.884349942486086120,
+    -0.466824570074086950,
+  0.884260413738899190, -0.466994133468838000, 0.884170852479984500,
+    -0.467163679693549770,
+  0.884081258712634990, -0.467333208741988420, 0.883991632440144890,
+    -0.467502720607920920,
+  0.883901973665809470, -0.467672215285114770, 0.883812282392925090,
+    -0.467841692767338170,
+  0.883722558624789660, -0.468011153048359830, 0.883632802364701870,
+    -0.468180596121949290,
+  0.883543013615961880, -0.468350021981876530, 0.883453192381870920,
+    -0.468519430621912310,
+  0.883363338665731580, -0.468688822035827900, 0.883273452470847430,
+    -0.468858196217395330,
+  0.883183533800523390, -0.469027553160387130, 0.883093582658065370,
+    -0.469196892858576580,
+  0.883003599046780830, -0.469366215305737520, 0.882913582969978020,
+    -0.469535520495644450,
+  0.882823534430966620, -0.469704808422072460, 0.882733453433057650,
+    -0.469874079078797360,
+  0.882643339979562790, -0.470043332459595620, 0.882553194073795510,
+    -0.470212568558244170,
+  0.882463015719070150, -0.470381787368520650, 0.882372804918702290,
+    -0.470550988884203550,
+  0.882282561676008710, -0.470720173099071600, 0.882192285994307430,
+    -0.470889340006904520,
+  0.882101977876917580, -0.471058489601482500, 0.882011637327159590,
+    -0.471227621876586340,
+  0.881921264348355050, -0.471396736825997640, 0.881830858943826620,
+    -0.471565834443498420,
+  0.881740421116898320, -0.471734914722871430, 0.881649950870895260,
+    -0.471903977657900210,
+  0.881559448209143780, -0.472073023242368660, 0.881468913134971440,
+    -0.472242051470061490,
+  0.881378345651706920, -0.472411062334764040, 0.881287745762680100,
+    -0.472580055830262250,
+  0.881197113471222090, -0.472749031950342790, 0.881106448780665130,
+    -0.472917990688792760,
+  0.881015751694342870, -0.473086932039400050, 0.880925022215589880,
+    -0.473255855995953320,
+  0.880834260347742040, -0.473424762552241530, 0.880743466094136340,
+    -0.473593651702054530,
+  0.880652639458111010, -0.473762523439182850, 0.880561780443005700,
+    -0.473931377757417450,
+  0.880470889052160750, -0.474100214650549970, 0.880379965288918150,
+    -0.474269034112372980,
+  0.880289009156621010, -0.474437836136679230, 0.880198020658613190,
+    -0.474606620717262560,
+  0.880106999798240360, -0.474775387847917120, 0.880015946578849070,
+    -0.474944137522437800,
+  0.879924861003786860, -0.475112869734620300, 0.879833743076402940,
+    -0.475281584478260740,
+  0.879742592800047410, -0.475450281747155870, 0.879651410178071580,
+    -0.475618961535103300,
+  0.879560195213827890, -0.475787623835901120, 0.879468947910670210,
+    -0.475956268643348060,
+  0.879377668271953290, -0.476124895951243580, 0.879286356301033250,
+    -0.476293505753387690,
+  0.879195012001267480, -0.476462098043581190, 0.879103635376014330,
+    -0.476630672815625320,
+  0.879012226428633530, -0.476799230063322090, 0.878920785162485840,
+    -0.476967769780474170,
+  0.878829311580933360, -0.477136291960884810, 0.878737805687339390,
+    -0.477304796598357890,
+  0.878646267485068130, -0.477473283686698060, 0.878554696977485450,
+    -0.477641753219710470,
+  0.878463094167957870, -0.477810205191200990, 0.878371459059853480,
+    -0.477978639594976160,
+  0.878279791656541580, -0.478147056424843010, 0.878188091961392250,
+    -0.478315455674609480,
+  0.878096359977777130, -0.478483837338083970, 0.878004595709069080,
+    -0.478652201409075500,
+  0.877912799158641840, -0.478820547881393890, 0.877820970329870500,
+    -0.478988876748849490,
+  0.877729109226131570, -0.479157188005253310, 0.877637215850802230,
+    -0.479325481644417070,
+  0.877545290207261350, -0.479493757660153010, 0.877453332298888560,
+    -0.479662016046274180,
+  0.877361342129065140, -0.479830256796594190, 0.877269319701173170,
+    -0.479998479904927280,
+  0.877177265018595940, -0.480166685365088390, 0.877085178084718420,
+    -0.480334873170893020,
+  0.876993058902925890, -0.480503043316157510, 0.876900907476605650,
+    -0.480671195794698640,
+  0.876808723809145650, -0.480839330600333960, 0.876716507903935400,
+    -0.481007447726881590,
+  0.876624259764365310, -0.481175547168160300, 0.876531979393827100,
+    -0.481343628917989710,
+  0.876439666795713610, -0.481511692970189860, 0.876347321973419020,
+    -0.481679739318581490,
+  0.876254944930338510, -0.481847767956986030, 0.876162535669868460,
+    -0.482015778879225590,
+  0.876070094195406600, -0.482183772079122720, 0.875977620510351770,
+    -0.482351747550500980,
+  0.875885114618103810, -0.482519705287184350, 0.875792576522063880,
+    -0.482687645282997460,
+  0.875700006225634600, -0.482855567531765670, 0.875607403732219350,
+    -0.483023472027314880,
+  0.875514769045222850, -0.483191358763471860, 0.875422102168050940,
+    -0.483359227734063810,
+  0.875329403104110890, -0.483527078932918740, 0.875236671856810870,
+    -0.483694912353865140,
+  0.875143908429560360, -0.483862727990732270, 0.875051112825769970,
+    -0.484030525837350010,
+  0.874958285048851650, -0.484198305887549030, 0.874865425102218320,
+    -0.484366068135160420,
+  0.874772532989284150, -0.484533812574016180, 0.874679608713464510,
+    -0.484701539197948670,
+  0.874586652278176110, -0.484869248000791060, 0.874493663686836560,
+    -0.485036938976377290,
+  0.874400642942864790, -0.485204612118541820, 0.874307590049680950,
+    -0.485372267421119770,
+  0.874214505010706300, -0.485539904877946960, 0.874121387829363330,
+    -0.485707524482859750,
+  0.874028238509075740, -0.485875126229695250, 0.873935057053268240,
+    -0.486042710112291330,
+  0.873841843465366860, -0.486210276124486420, 0.873748597748798870,
+    -0.486377824260119440,
+  0.873655319906992630, -0.486545354513030270, 0.873562009943377850,
+    -0.486712866877059170,
+  0.873468667861384880, -0.486880361346047340, 0.873375293664446000,
+    -0.487047837913836380,
+  0.873281887355994210, -0.487215296574268760, 0.873188448939463790,
+    -0.487382737321187360,
+  0.873094978418290090, -0.487550160148436000, 0.873001475795909920,
+    -0.487717565049858800,
+  0.872907941075761080, -0.487884952019301040, 0.872814374261282390,
+    -0.488052321050608250,
+  0.872720775355914300, -0.488219672137626790, 0.872627144363097960,
+    -0.488387005274203530,
+  0.872533481286276170, -0.488554320454186180, 0.872439786128892280,
+    -0.488721617671423080,
+  0.872346058894391540, -0.488888896919763170, 0.872252299586219860,
+    -0.489056158193056030,
+  0.872158508207824480, -0.489223401485151980, 0.872064684762653860,
+    -0.489390626789901920,
+  0.871970829254157810, -0.489557834101157440, 0.871876941685786890,
+    -0.489725023412770910,
+  0.871783022060993120, -0.489892194718595190, 0.871689070383229740,
+    -0.490059348012483850,
+  0.871595086655950980, -0.490226483288291160, 0.871501070882612530,
+    -0.490393600539871970,
+  0.871407023066670950, -0.490560699761082020, 0.871312943211584030,
+    -0.490727780945777400,
+  0.871218831320811020, -0.490894844087815090, 0.871124687397811900,
+    -0.491061889181052650,
+  0.871030511446048260, -0.491228916219348280, 0.870936303468982760,
+    -0.491395925196560780,
+  0.870842063470078980, -0.491562916106549900, 0.870747791452801790,
+    -0.491729888943175760,
+  0.870653487420617430, -0.491896843700299290, 0.870559151376993250,
+    -0.492063780371782000,
+  0.870464783325397670, -0.492230698951486020, 0.870370383269300270,
+    -0.492397599433274380,
+  0.870275951212171940, -0.492564481811010590, 0.870181487157484560,
+    -0.492731346078558840,
+  0.870086991108711460, -0.492898192229784040, 0.869992463069326870,
+    -0.493065020258551700,
+  0.869897903042806340, -0.493231830158727900, 0.869803311032626650,
+    -0.493398621924179770,
+  0.869708687042265670, -0.493565395548774770, 0.869614031075202300,
+    -0.493732151026381020,
+  0.869519343134916860, -0.493898888350867480, 0.869424623224890890,
+    -0.494065607516103570,
+  0.869329871348606840, -0.494232308515959670, 0.869235087509548370,
+    -0.494398991344306650,
+  0.869140271711200560, -0.494565655995015950, 0.869045423957049530,
+    -0.494732302461959870,
+  0.868950544250582380, -0.494898930739011260, 0.868855632595287860,
+    -0.495065540820043560,
+  0.868760688994655310, -0.495232132698931180, 0.868665713452175690,
+    -0.495398706369549020,
+  0.868570705971340900, -0.495565261825772540, 0.868475666555644120,
+    -0.495731799061477960,
+  0.868380595208579800, -0.495898318070542190, 0.868285491933643350,
+    -0.496064818846842890,
+  0.868190356734331310, -0.496231301384258250, 0.868095189614141670,
+    -0.496397765676667160,
+  0.867999990576573510, -0.496564211717949290, 0.867904759625126920,
+    -0.496730639501984760,
+  0.867809496763303320, -0.496897049022654470, 0.867714201994605140,
+    -0.497063440273840250,
+  0.867618875322536230, -0.497229813249424220, 0.867523516750601460,
+    -0.497396167943289280,
+  0.867428126282306920, -0.497562504349319150, 0.867332703921159800,
+    -0.497728822461397940,
+  0.867237249670668400, -0.497895122273410870, 0.867141763534342470,
+    -0.498061403779243410,
+  0.867046245515692650, -0.498227666972781870, 0.866950695618230900,
+    -0.498393911847913210,
+  0.866855113845470430, -0.498560138398525140, 0.866759500200925400,
+    -0.498726346618505900,
+  0.866663854688111130, -0.498892536501744590, 0.866568177310544470,
+    -0.499058708042130870,
+  0.866472468071743050, -0.499224861233555080, 0.866376726975225830,
+    -0.499390996069908170,
+  0.866280954024512990, -0.499557112545081840, 0.866185149223125840,
+    -0.499723210652968540,
+  0.866089312574586770, -0.499889290387461330, 0.865993444082419520,
+    -0.500055351742453860,
+  0.865897543750148820, -0.500221394711840680, 0.865801611581300760,
+    -0.500387419289516580,
+  0.865705647579402380, -0.500553425469377420, 0.865609651747981990,
+    -0.500719413245319880,
+  0.865513624090569090, -0.500885382611240710, 0.865417564610694410,
+    -0.501051333561038040,
+  0.865321473311889800, -0.501217266088609950, 0.865225350197688200,
+    -0.501383180187855770,
+  0.865129195271623800, -0.501549075852675390, 0.865033008537231860,
+    -0.501714953076969120,
+  0.864936789998049020, -0.501880811854638290, 0.864840539657612870,
+    -0.502046652179584660,
+  0.864744257519462380, -0.502212474045710790, 0.864647943587137480,
+    -0.502378277446919760,
+  0.864551597864179340, -0.502544062377115690, 0.864455220354130360,
+    -0.502709828830202990,
+  0.864358811060534030, -0.502875576800086990, 0.864262369986934950,
+    -0.503041306280673450,
+  0.864165897136879300, -0.503207017265868920, 0.864069392513913790,
+    -0.503372709749581040,
+  0.863972856121586810, -0.503538383725717580, 0.863876287963447510,
+    -0.503704039188187070,
+  0.863779688043046720, -0.503869676130898950, 0.863683056363935830,
+    -0.504035294547763190,
+  0.863586392929668100, -0.504200894432690340, 0.863489697743797140,
+    -0.504366475779592040,
+  0.863392970809878420, -0.504532038582380270, 0.863296212131468230,
+    -0.504697582834967570,
+  0.863199421712124160, -0.504863108531267590, 0.863102599555404910,
+    -0.505028615665194080,
+  0.863005745664870320, -0.505194104230662240, 0.862908860044081400,
+    -0.505359574221587280,
+  0.862811942696600330, -0.505525025631885390, 0.862714993625990690,
+    -0.505690458455473450,
+  0.862618012835816740, -0.505855872686268860, 0.862521000329644520,
+    -0.506021268318189720,
+  0.862423956111040610, -0.506186645345155230, 0.862326880183573060,
+    -0.506352003761084800,
+  0.862229772550811240, -0.506517343559898530, 0.862132633216325380,
+    -0.506682664735517600,
+  0.862035462183687210, -0.506847967281863210, 0.861938259456469290,
+    -0.507013251192858230,
+  0.861841025038245330, -0.507178516462425180, 0.861743758932590700,
+    -0.507343763084487920,
+  0.861646461143081300, -0.507508991052970870, 0.861549131673294720,
+    -0.507674200361798890,
+  0.861451770526809320, -0.507839391004897720, 0.861354377707204910,
+    -0.508004562976194010,
+  0.861256953218062170, -0.508169716269614600, 0.861159497062963350,
+    -0.508334850879087360,
+  0.861062009245491480, -0.508499966798540930, 0.860964489769231010,
+    -0.508665064021904030,
+  0.860866938637767310, -0.508830142543106990, 0.860769355854687170,
+    -0.508995202356080090,
+  0.860671741423578380, -0.509160243454754640, 0.860574095348029980,
+    -0.509325265833062480,
+  0.860476417631632070, -0.509490269484936360, 0.860378708277976130,
+    -0.509655254404309250,
+  0.860280967290654510, -0.509820220585115450, 0.860183194673260990,
+    -0.509985168021289460,
+  0.860085390429390140, -0.510150096706766810, 0.859987554562638200,
+    -0.510315006635483240,
+  0.859889687076602290, -0.510479897801375700, 0.859791787974880650,
+    -0.510644770198381610,
+  0.859693857261072610, -0.510809623820439040, 0.859595894938779080,
+    -0.510974458661486830,
+  0.859497901011601730, -0.511139274715464390, 0.859399875483143450,
+    -0.511304071976312000,
+  0.859301818357008470, -0.511468850437970300, 0.859203729636801920,
+    -0.511633610094381240,
+  0.859105609326130450, -0.511798350939486890, 0.859007457428601520,
+    -0.511963072967230200,
+  0.858909273947823900, -0.512127776171554690, 0.858811058887407610,
+    -0.512292460546404870,
+  0.858712812250963520, -0.512457126085725690, 0.858614534042104190,
+    -0.512621772783462990,
+  0.858516224264442740, -0.512786400633562960, 0.858417882921593930,
+    -0.512951009629972980,
+  0.858319510017173440, -0.513115599766640560, 0.858221105554798250,
+    -0.513280171037514220,
+  0.858122669538086140, -0.513444723436543460, 0.858024201970656540,
+    -0.513609256957677780,
+  0.857925702856129790, -0.513773771594868030, 0.857827172198127430,
+    -0.513938267342065380,
+  0.857728610000272120, -0.514102744193221660, 0.857630016266187620,
+    -0.514267202142289710,
+  0.857531390999499150, -0.514431641183222820, 0.857432734203832700,
+    -0.514596061309975040,
+  0.857334045882815590, -0.514760462516501200, 0.857235326040076460,
+    -0.514924844796756490,
+  0.857136574679244980, -0.515089208144697160, 0.857037791803951680,
+    -0.515253552554280180,
+  0.856938977417828760, -0.515417878019462930, 0.856840131524509220,
+    -0.515582184534203790,
+  0.856741254127627470, -0.515746472092461380, 0.856642345230818840,
+    -0.515910740688195650,
+  0.856543404837719960, -0.516074990315366630, 0.856444432951968590,
+    -0.516239220967935510,
+  0.856345429577203610, -0.516403432639863990, 0.856246394717065210,
+    -0.516567625325114350,
+  0.856147328375194470, -0.516731799017649870, 0.856048230555233940,
+    -0.516895953711434150,
+  0.855949101260826910, -0.517060089400431910, 0.855849940495618240,
+    -0.517224206078608310,
+  0.855750748263253920, -0.517388303739929060, 0.855651524567380690,
+    -0.517552382378360880,
+  0.855552269411646860, -0.517716441987871150, 0.855452982799701830,
+    -0.517880482562427690,
+  0.855353664735196030, -0.518044504095999340, 0.855254315221780970,
+    -0.518208506582555460,
+  0.855154934263109620, -0.518372490016066110, 0.855055521862835950,
+    -0.518536454390502220,
+  0.854956078024614930, -0.518700399699834950, 0.854856602752102850,
+    -0.518864325938036890,
+  0.854757096048957220, -0.519028233099080860, 0.854657557918836460,
+    -0.519192121176940250,
+  0.854557988365400530, -0.519355990165589640, 0.854458387392310170,
+    -0.519519840059003760,
+  0.854358755003227440, -0.519683670851158410, 0.854259091201815530,
+    -0.519847482536030190,
+  0.854159395991738850, -0.520011275107596040, 0.854059669376662780,
+    -0.520175048559833760,
+  0.853959911360254180, -0.520338802886721960, 0.853860121946180770,
+    -0.520502538082239670,
+  0.853760301138111410, -0.520666254140367160, 0.853660448939716380,
+    -0.520829951055084670,
+  0.853560565354666840, -0.520993628820373920, 0.853460650386635320,
+    -0.521157287430216610,
+  0.853360704039295430, -0.521320926878595660, 0.853260726316321880,
+    -0.521484547159494330,
+  0.853160717221390420, -0.521648148266897090, 0.853060676758178320,
+    -0.521811730194788550,
+  0.852960604930363630, -0.521975292937154390, 0.852860501741625750,
+    -0.522138836487980760,
+  0.852760367195645300, -0.522302360841254590, 0.852660201296103760,
+    -0.522465865990963780,
+  0.852560004046684080, -0.522629351931096610, 0.852459775451070100,
+    -0.522792818655642090,
+  0.852359515512947090, -0.522956266158590140, 0.852259224236001090,
+    -0.523119694433931250,
+  0.852158901623919830, -0.523283103475656430, 0.852058547680391690,
+    -0.523446493277757830,
+  0.851958162409106380, -0.523609863834227920, 0.851857745813754840,
+    -0.523773215139060170,
+  0.851757297898029120, -0.523936547186248600, 0.851656818665622370,
+    -0.524099859969787700,
+  0.851556308120228980, -0.524263153483673360, 0.851455766265544310,
+    -0.524426427721901400,
+  0.851355193105265200, -0.524589682678468950, 0.851254588643089120,
+    -0.524752918347373360,
+  0.851153952882715340, -0.524916134722613000, 0.851053285827843790,
+    -0.525079331798186780,
+  0.850952587482175730, -0.525242509568094710, 0.850851857849413530,
+    -0.525405668026336930,
+  0.850751096933260790, -0.525568807166914680, 0.850650304737422090,
+    -0.525731926983829760,
+  0.850549481265603480, -0.525895027471084630, 0.850448626521511760,
+    -0.526058108622682760,
+  0.850347740508854980, -0.526221170432628060, 0.850246823231342710,
+    -0.526384212894925100,
+  0.850145874692685210, -0.526547236003579440, 0.850044894896594180,
+    -0.526710239752597010,
+  0.849943883846782210, -0.526873224135984590, 0.849842841546963320,
+    -0.527036189147750080,
+  0.849741768000852550, -0.527199134781901280, 0.849640663212165910,
+    -0.527362061032447540,
+  0.849539527184620890, -0.527524967893398200, 0.849438359921936060,
+    -0.527687855358763720,
+  0.849337161427830780, -0.527850723422555230, 0.849235931706025960,
+    -0.528013572078784630,
+  0.849134670760243630, -0.528176401321464370, 0.849033378594206800,
+    -0.528339211144607690,
+  0.848932055211639610, -0.528502001542228480, 0.848830700616267530,
+    -0.528664772508341320,
+  0.848729314811817130, -0.528827524036961870, 0.848627897802015860,
+    -0.528990256122106040,
+  0.848526449590592650, -0.529152968757790610, 0.848424970181277600,
+    -0.529315661938033260,
+  0.848323459577801640, -0.529478335656851980, 0.848221917783896990,
+    -0.529640989908265910,
+  0.848120344803297230, -0.529803624686294610, 0.848018740639736810,
+    -0.529966239984958620,
+  0.847917105296951410, -0.530128835798278960, 0.847815438778677930,
+    -0.530291412120277310,
+  0.847713741088654380, -0.530453968944976320, 0.847612012230619660,
+    -0.530616506266399330,
+  0.847510252208314330, -0.530779024078570140, 0.847408461025479730,
+    -0.530941522375513620,
+  0.847306638685858320, -0.531104001151255000, 0.847204785193194090,
+    -0.531266460399820390,
+  0.847102900551231500, -0.531428900115236800, 0.847000984763716880,
+    -0.531591320291531670,
+  0.846899037834397240, -0.531753720922733320, 0.846797059767020910,
+    -0.531916102002870650,
+  0.846695050565337450, -0.532078463525973540, 0.846593010233097190,
+    -0.532240805486072220,
+  0.846490938774052130, -0.532403127877197900, 0.846388836191954930,
+    -0.532565430693382580,
+  0.846286702490559710, -0.532727713928658810, 0.846184537673621560,
+    -0.532889977577059800,
+  0.846082341744897050, -0.533052221632619450, 0.845980114708143270,
+    -0.533214446089372960,
+  0.845877856567119000, -0.533376650941355330, 0.845775567325584010,
+    -0.533538836182603120,
+  0.845673246987299070, -0.533701001807152960, 0.845570895556026270,
+    -0.533863147809042650,
+  0.845468513035528830, -0.534025274182310380, 0.845366099429570970,
+    -0.534187380920995380,
+  0.845263654741918220, -0.534349468019137520, 0.845161178976337140,
+    -0.534511535470777120,
+  0.845058672136595470, -0.534673583269955510, 0.844956134226462210,
+    -0.534835611410714560,
+  0.844853565249707120, -0.534997619887097150, 0.844750965210101510,
+    -0.535159608693146600,
+  0.844648334111417820, -0.535321577822907120, 0.844545671957429240,
+    -0.535483527270423370,
+  0.844442978751910660, -0.535645457029741090, 0.844340254498637590,
+    -0.535807367094906390,
+  0.844237499201387020, -0.535969257459966710, 0.844134712863936930,
+    -0.536131128118969460,
+  0.844031895490066410, -0.536292979065963180, 0.843929047083555870,
+    -0.536454810294997090,
+  0.843826167648186740, -0.536616621800121040, 0.843723257187741660,
+    -0.536778413575385920,
+  0.843620315706004150, -0.536940185614842910, 0.843517343206759200,
+    -0.537101937912544130,
+  0.843414339693792760, -0.537263670462542530, 0.843311305170892140,
+    -0.537425383258891550,
+  0.843208239641845440, -0.537587076295645390, 0.843105143110442160,
+    -0.537748749566859360,
+  0.843002015580472940, -0.537910403066588880, 0.842898857055729310,
+    -0.538072036788890600,
+  0.842795667540004120, -0.538233650727821700, 0.842692447037091670,
+    -0.538395244877439950,
+  0.842589195550786710, -0.538556819231804100, 0.842485913084885630,
+    -0.538718373784973560,
+  0.842382599643185850, -0.538879908531008420, 0.842279255229485990,
+    -0.539041423463969440,
+  0.842175879847585570, -0.539202918577918240, 0.842072473501285560,
+    -0.539364393866917040,
+  0.841969036194387680, -0.539525849325028890, 0.841865567930695340,
+    -0.539687284946317570,
+  0.841762068714012490, -0.539848700724847590, 0.841658538548144760,
+    -0.540010096654684020,
+  0.841554977436898440, -0.540171472729892850, 0.841451385384081260,
+    -0.540332828944540710,
+  0.841347762393501950, -0.540494165292695230, 0.841244108468970580,
+    -0.540655481768424150,
+  0.841140423614298080, -0.540816778365796670, 0.841036707833296650,
+    -0.540978055078882080,
+  0.840932961129779780, -0.541139311901750800, 0.840829183507561640,
+    -0.541300548828474120,
+  0.840725374970458070, -0.541461765853123440, 0.840621535522285690,
+    -0.541622962969771530,
+  0.840517665166862550, -0.541784140172491550, 0.840413763908007480,
+    -0.541945297455357360,
+  0.840309831749540770, -0.542106434812443920, 0.840205868695283580,
+    -0.542267552237826520,
+  0.840101874749058400, -0.542428649725581250, 0.839997849914688840,
+    -0.542589727269785270,
+  0.839893794195999520, -0.542750784864515890, 0.839789707596816370,
+    -0.542911822503851730,
+  0.839685590120966110, -0.543072840181871740, 0.839581441772277120,
+    -0.543233837892655890,
+  0.839477262554578550, -0.543394815630284800, 0.839373052471700690,
+    -0.543555773388839540,
+  0.839268811527475230, -0.543716711162402280, 0.839164539725734680,
+    -0.543877628945055980,
+  0.839060237070312740, -0.544038526730883820, 0.838955903565044460,
+    -0.544199404513970310,
+  0.838851539213765760, -0.544360262288400400, 0.838747144020313920,
+    -0.544521100048259600,
+  0.838642717988527300, -0.544681917787634530, 0.838538261122245280,
+    -0.544842715500612360,
+  0.838433773425308340, -0.545003493181281160, 0.838329254901558300,
+    -0.545164250823729320,
+  0.838224705554838080, -0.545324988422046460, 0.838120125388991500,
+    -0.545485705970322530,
+  0.838015514407863820, -0.545646403462648590, 0.837910872615301170,
+    -0.545807080893116140,
+  0.837806200015150940, -0.545967738255817570, 0.837701496611261700,
+    -0.546128375544845950,
+  0.837596762407483040, -0.546288992754295210, 0.837491997407665890,
+    -0.546449589878259650,
+  0.837387201615661940, -0.546610166910834860, 0.837282375035324320,
+    -0.546770723846116800,
+  0.837177517670507300, -0.546931260678202190, 0.837072629525066000,
+    -0.547091777401188530,
+  0.836967710602857020, -0.547252274009174090, 0.836862760907737920,
+    -0.547412750496257930,
+  0.836757780443567190, -0.547573206856539760, 0.836652769214204950,
+    -0.547733643084120090,
+  0.836547727223512010, -0.547894059173100190, 0.836442654475350380,
+    -0.548054455117581880,
+  0.836337550973583530, -0.548214830911667780, 0.836232416722075600,
+    -0.548375186549461600,
+  0.836127251724692270, -0.548535522025067390, 0.836022055985299880,
+    -0.548695837332590090,
+  0.835916829507766360, -0.548856132466135290, 0.835811572295960700,
+    -0.549016407419809390,
+  0.835706284353752600, -0.549176662187719660, 0.835600965685013410,
+    -0.549336896763974010,
+  0.835495616293615350, -0.549497111142680960, 0.835390236183431890,
+    -0.549657305317949870,
+  0.835284825358337370, -0.549817479283890910, 0.835179383822207690,
+    -0.549977633034614890,
+  0.835073911578919410, -0.550137766564233630, 0.834968408632350450,
+    -0.550297879866859190,
+  0.834862874986380010, -0.550457972936604810, 0.834757310644888230,
+    -0.550618045767584330,
+  0.834651715611756440, -0.550778098353912120, 0.834546089890866870,
+    -0.550938130689703880,
+  0.834440433486103190, -0.551098142769075430, 0.834334746401350080,
+    -0.551258134586143590,
+  0.834229028640493420, -0.551418106135026060, 0.834123280207420100,
+    -0.551578057409841000,
+  0.834017501106018130, -0.551737988404707340, 0.833911691340176840,
+    -0.551897899113745210,
+  0.833805850913786340, -0.552057789531074980, 0.833699979830738290,
+    -0.552217659650817930,
+  0.833594078094925140, -0.552377509467096070, 0.833488145710240770,
+    -0.552537338974032120,
+  0.833382182680579730, -0.552697148165749770, 0.833276189009838240,
+    -0.552856937036373290,
+  0.833170164701913190, -0.553016705580027470, 0.833064109760702890,
+    -0.553176453790838350,
+  0.832958024190106670, -0.553336181662932300, 0.832851907994025090,
+    -0.553495889190436570,
+  0.832745761176359460, -0.553655576367479310, 0.832639583741012770,
+    -0.553815243188189090,
+  0.832533375691888680, -0.553974889646695500, 0.832427137032892280,
+    -0.554134515737128910,
+  0.832320867767929680, -0.554294121453620000, 0.832214567900907980,
+    -0.554453706790300930,
+  0.832108237435735590, -0.554613271741304040, 0.832001876376321950,
+    -0.554772816300762470,
+  0.831895484726577590, -0.554932340462810370, 0.831789062490414400,
+    -0.555091844221582420,
+  0.831682609671745120, -0.555251327571213980, 0.831576126274483740,
+    -0.555410790505841630,
+  0.831469612302545240, -0.555570233019602180, 0.831363067759845920,
+    -0.555729655106633410,
+  0.831256492650303210, -0.555889056761073810, 0.831149886977835540,
+    -0.556048437977062600,
+  0.831043250746362320, -0.556207798748739930, 0.830936583959804410,
+    -0.556367139070246370,
+  0.830829886622083570, -0.556526458935723610, 0.830723158737122880,
+    -0.556685758339313890,
+  0.830616400308846310, -0.556845037275160100, 0.830509611341179070,
+    -0.557004295737405950,
+  0.830402791838047550, -0.557163533720196220, 0.830295941803379070,
+    -0.557322751217676160,
+  0.830189061241102370, -0.557481948223991550, 0.830082150155146970,
+    -0.557641124733289420,
+  0.829975208549443950, -0.557800280739716990, 0.829868236427924840,
+    -0.557959416237422960,
+  0.829761233794523050, -0.558118531220556100, 0.829654200653172640,
+    -0.558277625683266330,
+  0.829547137007808910, -0.558436699619704100, 0.829440042862368170,
+    -0.558595753024020760,
+  0.829332918220788250, -0.558754785890368310, 0.829225763087007570,
+    -0.558913798212899770,
+  0.829118577464965980, -0.559072789985768480, 0.829011361358604430,
+    -0.559231761203128900,
+  0.828904114771864870, -0.559390711859136140, 0.828796837708690610,
+    -0.559549641947945760,
+  0.828689530173025820, -0.559708551463714680, 0.828582192168815790,
+    -0.559867440400600210,
+  0.828474823700007130, -0.560026308752760380, 0.828367424770547480,
+    -0.560185156514354080,
+  0.828259995384385660, -0.560343983679540860, 0.828152535545471410,
+    -0.560502790242481060,
+  0.828045045257755800, -0.560661576197336030, 0.827937524525190870,
+    -0.560820341538267430,
+  0.827829973351729920, -0.560979086259438150, 0.827722391741327220,
+    -0.561137810355011420,
+  0.827614779697938400, -0.561296513819151470, 0.827507137225519830,
+    -0.561455196646023280,
+  0.827399464328029470, -0.561613858829792420, 0.827291761009425810,
+    -0.561772500364625340,
+  0.827184027273669130, -0.561931121244689470, 0.827076263124720270,
+    -0.562089721464152480,
+  0.826968468566541600, -0.562248301017183150, 0.826860643603096190,
+    -0.562406859897951140,
+  0.826752788238348520, -0.562565398100626560, 0.826644902476264320,
+    -0.562723915619380400,
+  0.826536986320809960, -0.562882412448384440, 0.826429039775953500,
+    -0.563040888581811230,
+  0.826321062845663530, -0.563199344013834090, 0.826213055533910220,
+    -0.563357778738627020,
+  0.826105017844664610, -0.563516192750364800, 0.825996949781899080,
+    -0.563674586043223070,
+  0.825888851349586780, -0.563832958611378170, 0.825780722551702430,
+    -0.563991310449006970,
+  0.825672563392221390, -0.564149641550287680, 0.825564373875120490,
+    -0.564307951909398640,
+  0.825456154004377550, -0.564466241520519500, 0.825347903783971380,
+    -0.564624510377830120,
+  0.825239623217882250, -0.564782758475511400, 0.825131312310091070,
+    -0.564940985807745210,
+  0.825022971064580220, -0.565099192368713980, 0.824914599485333190,
+    -0.565257378152600800,
+  0.824806197576334330, -0.565415543153589660, 0.824697765341569470,
+    -0.565573687365865330,
+  0.824589302785025290, -0.565731810783613120, 0.824480809910689500,
+    -0.565889913401019570,
+  0.824372286722551250, -0.566047995212271450, 0.824263733224600560,
+    -0.566206056211556730,
+  0.824155149420828570, -0.566364096393063840, 0.824046535315227760,
+    -0.566522115750982100,
+  0.823937890911791370, -0.566680114279501600, 0.823829216214513990,
+    -0.566838091972813320,
+  0.823720511227391430, -0.566996048825108680, 0.823611775954420260,
+    -0.567153984830580100,
+  0.823503010399598500, -0.567311899983420800, 0.823394214566925080,
+    -0.567469794277824510,
+  0.823285388460400110, -0.567627667707986230, 0.823176532084024860,
+    -0.567785520268101140,
+  0.823067645441801670, -0.567943351952365560, 0.822958728537734000,
+    -0.568101162754976460,
+  0.822849781375826430, -0.568258952670131490, 0.822740803960084420,
+    -0.568416721692029280,
+  0.822631796294514990, -0.568574469814869140, 0.822522758383125940,
+    -0.568732197032851050,
+  0.822413690229926390, -0.568889903340175860, 0.822304591838926350,
+    -0.569047588731045110,
+  0.822195463214137170, -0.569205253199661200, 0.822086304359571090,
+    -0.569362896740227220,
+  0.821977115279241550, -0.569520519346947140, 0.821867895977163250,
+    -0.569678121014025600,
+  0.821758646457351750, -0.569835701735668000, 0.821649366723823940,
+    -0.569993261506080540,
+  0.821540056780597610, -0.570150800319470300, 0.821430716631691870,
+    -0.570308318170044900,
+  0.821321346281126740, -0.570465815052012990, 0.821211945732923550,
+    -0.570623290959583750,
+  0.821102514991104650, -0.570780745886967260, 0.820993054059693580,
+    -0.570938179828374360,
+  0.820883562942714580, -0.571095592778016690, 0.820774041644193650,
+    -0.571252984730106660,
+  0.820664490168157460, -0.571410355678857230, 0.820554908518633890,
+    -0.571567705618482580,
+  0.820445296699652050, -0.571725034543197120, 0.820335654715241840,
+    -0.571882342447216590,
+  0.820225982569434690, -0.572039629324757050, 0.820116280266262820,
+    -0.572196895170035580,
+  0.820006547809759680, -0.572354139977269920, 0.819896785203959810,
+    -0.572511363740678790,
+  0.819786992452898990, -0.572668566454481160, 0.819677169560613870,
+    -0.572825748112897550,
+  0.819567316531142230, -0.572982908710148560, 0.819457433368523280,
+    -0.573140048240455950,
+  0.819347520076796900, -0.573297166698042200, 0.819237576660004520,
+    -0.573454264077130400,
+  0.819127603122188240, -0.573611340371944610, 0.819017599467391500,
+    -0.573768395576709560,
+  0.818907565699658950, -0.573925429685650750, 0.818797501823036010,
+    -0.574082442692994470,
+  0.818687407841569680, -0.574239434592967890, 0.818577283759307610,
+    -0.574396405379798750,
+  0.818467129580298660, -0.574553355047715760, 0.818356945308593150,
+    -0.574710283590948330,
+  0.818246730948242070, -0.574867191003726740, 0.818136486503297730,
+    -0.575024077280281710,
+  0.818026211977813440, -0.575180942414845080, 0.817915907375843850,
+    -0.575337786401649450,
+  0.817805572701444270, -0.575494609234928120, 0.817695207958671680,
+    -0.575651410908915140,
+  0.817584813151583710, -0.575808191417845340, 0.817474388284239240,
+    -0.575964950755954220,
+  0.817363933360698460, -0.576121688917478280, 0.817253448385022340,
+    -0.576278405896654910,
+  0.817142933361272970, -0.576435101687721830, 0.817032388293513880,
+    -0.576591776284917760,
+  0.816921813185809480, -0.576748429682482410, 0.816811208042225290,
+    -0.576905061874655960,
+  0.816700572866827850, -0.577061672855679440, 0.816589907663684890,
+    -0.577218262619794920,
+  0.816479212436865390, -0.577374831161244880, 0.816368487190439200,
+    -0.577531378474272720,
+  0.816257731928477390, -0.577687904553122800, 0.816146946655052270,
+    -0.577844409392039850,
+  0.816036131374236810, -0.578000892985269910, 0.815925286090105510,
+    -0.578157355327059360,
+  0.815814410806733780, -0.578313796411655590, 0.815703505528198260,
+    -0.578470216233306630,
+  0.815592570258576790, -0.578626614786261430, 0.815481605001947770,
+    -0.578782992064769690,
+  0.815370609762391290, -0.578939348063081780, 0.815259584543988280,
+    -0.579095682775449090,
+  0.815148529350820830, -0.579251996196123550, 0.815037444186972220,
+    -0.579408288319357870,
+  0.814926329056526620, -0.579564559139405630, 0.814815183963569440,
+    -0.579720808650521450,
+  0.814704008912187080, -0.579877036846960350, 0.814592803906467270,
+    -0.580033243722978150,
+  0.814481568950498610, -0.580189429272831680, 0.814370304048371070,
+    -0.580345593490778300,
+  0.814259009204175270, -0.580501736371076490, 0.814147684422003360,
+    -0.580657857907985300,
+  0.814036329705948410, -0.580813958095764530, 0.813924945060104600,
+    -0.580970036928674770,
+  0.813813530488567190, -0.581126094400977620, 0.813702085995432700,
+    -0.581282130506935000,
+  0.813590611584798510, -0.581438145240810170, 0.813479107260763220,
+    -0.581594138596866930,
+  0.813367573027426570, -0.581750110569369650, 0.813256008888889380,
+    -0.581906061152583810,
+  0.813144414849253590, -0.582061990340775440, 0.813032790912622040,
+    -0.582217898128211670,
+  0.812921137083098770, -0.582373784509160110, 0.812809453364789270,
+    -0.582529649477889320,
+  0.812697739761799490, -0.582685493028668460, 0.812585996278237130,
+    -0.582841315155767650,
+  0.812474222918210480, -0.582997115853457700, 0.812362419685829230,
+    -0.583152895116010430,
+  0.812250586585203880, -0.583308652937698290, 0.812138723620446480,
+    -0.583464389312794320,
+  0.812026830795669730, -0.583620104235572760, 0.811914908114987790,
+    -0.583775797700308070,
+  0.811802955582515470, -0.583931469701276180, 0.811690973202369050,
+    -0.584087120232753440,
+  0.811578960978665890, -0.584242749289016980, 0.811466918915524250,
+    -0.584398356864344600,
+  0.811354847017063730, -0.584553942953015330, 0.811242745287404810,
+    -0.584709507549308390,
+  0.811130613730669190, -0.584865050647504490, 0.811018452350979470,
+    -0.585020572241884530,
+  0.810906261152459670, -0.585176072326730410, 0.810794040139234730,
+    -0.585331550896324940,
+  0.810681789315430780, -0.585487007944951340, 0.810569508685174630,
+    -0.585642443466894420,
+  0.810457198252594770, -0.585797857456438860, 0.810344858021820550,
+    -0.585953249907870570,
+  0.810232487996982330, -0.586108620815476430, 0.810120088182211600,
+    -0.586263970173543590,
+  0.810007658581641140, -0.586419297976360500, 0.809895199199404450,
+    -0.586574604218216170,
+  0.809782710039636530, -0.586729888893400390, 0.809670191106473090,
+    -0.586885151996203950,
+  0.809557642404051260, -0.587040393520917970, 0.809445063936509170,
+    -0.587195613461834800,
+  0.809332455707985950, -0.587350811813247660, 0.809219817722621750,
+    -0.587505988569450020,
+  0.809107149984558240, -0.587661143724736660, 0.808994452497937670,
+    -0.587816277273402910,
+  0.808881725266903610, -0.587971389209745010, 0.808768968295600850,
+    -0.588126479528059850,
+  0.808656181588174980, -0.588281548222645220, 0.808543365148773010,
+    -0.588436595287799790,
+  0.808430518981542720, -0.588591620717822890, 0.808317643090633250,
+    -0.588746624507014540,
+  0.808204737480194720, -0.588901606649675720, 0.808091802154378370,
+    -0.589056567140108460,
+  0.807978837117336310, -0.589211505972614960, 0.807865842373222120,
+    -0.589366423141498790,
+  0.807752817926190360, -0.589521318641063940, 0.807639763780396480,
+    -0.589676192465615420,
+  0.807526679939997160, -0.589831044609458790, 0.807413566409150190,
+    -0.589985875066900920,
+  0.807300423192014450, -0.590140683832248820, 0.807187250292749960,
+    -0.590295470899810830,
+  0.807074047715517610, -0.590450236263895810, 0.806960815464479730,
+    -0.590604979918813330,
+  0.806847553543799330, -0.590759701858874160, 0.806734261957640860,
+    -0.590914402078389520,
+  0.806620940710169650, -0.591069080571671400, 0.806507589805552260,
+    -0.591223737333032910,
+  0.806394209247956240, -0.591378372356787580, 0.806280799041550480,
+    -0.591532985637249990,
+  0.806167359190504420, -0.591687577168735430, 0.806053889698989060,
+    -0.591842146945560140,
+  0.805940390571176280, -0.591996694962040990, 0.805826861811239300,
+    -0.592151221212495530,
+  0.805713303423352230, -0.592305725691242290, 0.805599715411690060,
+    -0.592460208392600830,
+  0.805486097780429230, -0.592614669310891130, 0.805372450533747060,
+    -0.592769108440434070,
+  0.805258773675822210, -0.592923525775551300, 0.805145067210834230,
+    -0.593077921310565470,
+  0.805031331142963660, -0.593232295039799800, 0.804917565476392260,
+    -0.593386646957578480,
+  0.804803770215302920, -0.593540977058226390, 0.804689945363879500,
+    -0.593695285336069190,
+  0.804576090926307110, -0.593849571785433630, 0.804462206906771840,
+    -0.594003836400646690,
+  0.804348293309460780, -0.594158079176036800, 0.804234350138562260,
+    -0.594312300105932830,
+  0.804120377398265810, -0.594466499184664430, 0.804006375092761520,
+    -0.594620676406562240,
+  0.803892343226241260, -0.594774831765957580, 0.803778281802897570,
+    -0.594928965257182420,
+  0.803664190826924090, -0.595083076874569960, 0.803550070302515680,
+    -0.595237166612453850,
+  0.803435920233868120, -0.595391234465168730, 0.803321740625178580,
+    -0.595545280427049790,
+  0.803207531480644940, -0.595699304492433360, 0.803093292804466400,
+    -0.595853306655656280,
+  0.802979024600843250, -0.596007286911056530, 0.802864726873976700,
+    -0.596161245252972540,
+  0.802750399628069160, -0.596315181675743710, 0.802636042867324150,
+    -0.596469096173710360,
+  0.802521656595946430, -0.596622988741213220, 0.802407240818141300,
+    -0.596776859372594390,
+  0.802292795538115720, -0.596930708062196500, 0.802178320760077450,
+    -0.597084534804362740,
+  0.802063816488235440, -0.597238339593437420, 0.801949282726799770,
+    -0.597392122423765710,
+  0.801834719479981310, -0.597545883289693160, 0.801720126751992330,
+    -0.597699622185566830,
+  0.801605504547046150, -0.597853339105733910, 0.801490852869356950,
+    -0.598007034044542700,
+  0.801376171723140240, -0.598160706996342270, 0.801261461112612540,
+    -0.598314357955482600,
+  0.801146721041991360, -0.598467986916314310, 0.801031951515495330,
+    -0.598621593873188920,
+  0.800917152537344300, -0.598775178820458720, 0.800802324111759110,
+    -0.598928741752476900,
+  0.800687466242961610, -0.599082282663597310, 0.800572578935174860,
+    -0.599235801548174570,
+  0.800457662192622820, -0.599389298400564540, 0.800342716019530660,
+    -0.599542773215123390,
+  0.800227740420124790, -0.599696225986208310, 0.800112735398632370,
+    -0.599849656708177250,
+  0.799997700959281910, -0.600003065375388940, 0.799882637106302810,
+    -0.600156451982203240,
+  0.799767543843925680, -0.600309816522980430, 0.799652421176382240,
+    -0.600463158992081580,
+  0.799537269107905010, -0.600616479383868970, 0.799422087642728040,
+    -0.600769777692705230,
+  0.799306876785086160, -0.600923053912954090, 0.799191636539215210,
+    -0.601076308038980160,
+  0.799076366909352350, -0.601229540065148500, 0.798961067899735760,
+    -0.601382749985825420,
+  0.798845739514604580, -0.601535937795377730, 0.798730381758199210,
+    -0.601689103488172950,
+  0.798614994634760820, -0.601842247058580030, 0.798499578148532120,
+    -0.601995368500968020,
+  0.798384132303756380, -0.602148467809707210, 0.798268657104678430,
+    -0.602301544979168550,
+  0.798153152555543750, -0.602454600003723750, 0.798037618660599410,
+    -0.602607632877745440,
+  0.797922055424093000, -0.602760643595607220, 0.797806462850273570,
+    -0.602913632151683030,
+  0.797690840943391160, -0.603066598540348160, 0.797575189707696700,
+    -0.603219542755978440,
+  0.797459509147442460, -0.603372464792950260, 0.797343799266881700,
+    -0.603525364645641550,
+  0.797228060070268700, -0.603678242308430370, 0.797112291561858920,
+    -0.603831097775695880,
+  0.796996493745908750, -0.603983931041818020, 0.796880666626675780,
+    -0.604136742101177520,
+  0.796764810208418830, -0.604289530948155960, 0.796648924495397260,
+    -0.604442297577135860,
+  0.796533009491872000, -0.604595041982500360, 0.796417065202104980,
+    -0.604747764158633410,
+  0.796301091630359110, -0.604900464099919820, 0.796185088780898440,
+    -0.605053141800745320,
+  0.796069056657987990, -0.605205797255496500, 0.795952995265893910,
+    -0.605358430458560530,
+  0.795836904608883570, -0.605511041404325550, 0.795720784691225090,
+    -0.605663630087180380,
+  0.795604635517188070, -0.605816196501514970, 0.795488457091042990,
+    -0.605968740641719680,
+  0.795372249417061310, -0.606121262502186120, 0.795256012499515610,
+    -0.606273762077306430,
+  0.795139746342679590, -0.606426239361473550, 0.795023450950828050,
+    -0.606578694349081290,
+  0.794907126328237010, -0.606731127034524480, 0.794790772479183170,
+    -0.606883537412198470,
+  0.794674389407944550, -0.607035925476499650, 0.794557977118800380,
+    -0.607188291221825160,
+  0.794441535616030590, -0.607340634642572930, 0.794325064903916520,
+    -0.607492955733141550,
+  0.794208564986740640, -0.607645254487930830, 0.794092035868785960,
+    -0.607797530901341140,
+  0.793975477554337170, -0.607949784967773630, 0.793858890047679730,
+    -0.608102016681630440,
+  0.793742273353100210, -0.608254226037314490, 0.793625627474886300,
+    -0.608406413029229150,
+  0.793508952417326660, -0.608558577651779450, 0.793392248184711100,
+    -0.608710719899370310,
+  0.793275514781330630, -0.608862839766408200, 0.793158752211477140,
+    -0.609014937247299830,
+  0.793041960479443640, -0.609167012336453210, 0.792925139589524260,
+    -0.609319065028276820,
+  0.792808289546014120, -0.609471095317180240, 0.792691410353209450,
+    -0.609623103197573730,
+  0.792574502015407690, -0.609775088663868430, 0.792457564536907080,
+    -0.609927051710476120,
+  0.792340597922007170, -0.610078992331809620, 0.792223602175008310,
+    -0.610230910522282620,
+  0.792106577300212390, -0.610382806276309480, 0.791989523301921850,
+    -0.610534679588305320,
+  0.791872440184440470, -0.610686530452686280, 0.791755327952073150,
+    -0.610838358863869170,
+  0.791638186609125880, -0.610990164816271660, 0.791521016159905220,
+    -0.611141948304312570,
+  0.791403816608719500, -0.611293709322410890, 0.791286587959877830,
+    -0.611445447864987000,
+  0.791169330217690200, -0.611597163926461910, 0.791052043386467950,
+    -0.611748857501257290,
+  0.790934727470523290, -0.611900528583796070, 0.790817382474169770,
+    -0.612052177168501470,
+  0.790700008401721610, -0.612203803249797950, 0.790582605257494460,
+    -0.612355406822110650,
+  0.790465173045804880, -0.612506987879865570, 0.790347711770970520,
+    -0.612658546417489290,
+  0.790230221437310030, -0.612810082429409710, 0.790112702049143300,
+    -0.612961595910055170,
+  0.789995153610791090, -0.613113086853854910, 0.789877576126575280,
+    -0.613264555255239040,
+  0.789759969600819070, -0.613416001108638590, 0.789642334037846340,
+    -0.613567424408485330,
+  0.789524669441982190, -0.613718825149211720, 0.789406975817552930,
+    -0.613870203325251330,
+  0.789289253168885650, -0.614021558931038380, 0.789171501500308900,
+    -0.614172891961007990,
+  0.789053720816151880, -0.614324202409595950, 0.788935911120745240,
+    -0.614475490271239040,
+  0.788818072418420280, -0.614626755540375050, 0.788700204713509660,
+    -0.614777998211442080,
+  0.788582308010347120, -0.614929218278879590, 0.788464382313267540,
+    -0.615080415737127460,
+  0.788346427626606340, -0.615231590580626820, 0.788228443954700490,
+    -0.615382742803819220,
+  0.788110431301888070, -0.615533872401147320, 0.787992389672507950,
+    -0.615684979367054570,
+  0.787874319070900220, -0.615836063695985090, 0.787756219501406060,
+    -0.615987125382383760,
+  0.787638090968367450, -0.616138164420696910, 0.787519933476127810,
+    -0.616289180805370980,
+  0.787401747029031430, -0.616440174530853650, 0.787283531631423620,
+    -0.616591145591593110,
+  0.787165287287651010, -0.616742093982038720, 0.787047014002060790,
+    -0.616893019696640680,
+  0.786928711779001810, -0.617043922729849760, 0.786810380622823490,
+    -0.617194803076117630,
+  0.786692020537876790, -0.617345660729896830, 0.786573631528513230,
+    -0.617496495685640910,
+  0.786455213599085770, -0.617647307937803870, 0.786336766753948260,
+    -0.617798097480841020,
+  0.786218290997455660, -0.617948864309208150, 0.786099786333963930,
+    -0.618099608417362000,
+  0.785981252767830150, -0.618250329799760250, 0.785862690303412600,
+    -0.618401028450860980,
+  0.785744098945070360, -0.618551704365123740, 0.785625478697163700,
+    -0.618702357537008530,
+  0.785506829564053930, -0.618852987960976320, 0.785388151550103550,
+    -0.619003595631488660,
+  0.785269444659675850, -0.619154180543008410, 0.785150708897135560,
+    -0.619304742689998690,
+  0.785031944266848080, -0.619455282066924020, 0.784913150773180020,
+    -0.619605798668249270,
+  0.784794328420499230, -0.619756292488440660, 0.784675477213174320,
+    -0.619906763521964720,
+  0.784556597155575240, -0.620057211763289100, 0.784437688252072830,
+    -0.620207637206882430,
+  0.784318750507038920, -0.620358039847213720, 0.784199783924846570,
+    -0.620508419678753360,
+  0.784080788509869950, -0.620658776695972140, 0.783961764266484120,
+    -0.620809110893341900,
+  0.783842711199065230, -0.620959422265335180, 0.783723629311990470,
+    -0.621109710806425630,
+  0.783604518609638200, -0.621259976511087550, 0.783485379096387820,
+    -0.621410219373796150,
+  0.783366210776619720, -0.621560439389027160, 0.783247013654715380,
+    -0.621710636551257690,
+  0.783127787735057310, -0.621860810854965360, 0.783008533022029110,
+    -0.622010962294628600,
+  0.782889249520015480, -0.622161090864726820, 0.782769937233402050,
+    -0.622311196559740320,
+  0.782650596166575730, -0.622461279374149970, 0.782531226323924240,
+    -0.622611339302437730,
+  0.782411827709836530, -0.622761376339086350, 0.782292400328702400,
+    -0.622911390478579460,
+  0.782172944184913010, -0.623061381715401260, 0.782053459282860300,
+    -0.623211350044037270,
+  0.781933945626937630, -0.623361295458973230, 0.781814403221538830,
+    -0.623511217954696440,
+  0.781694832071059390, -0.623661117525694530, 0.781575232179895550,
+    -0.623810994166456130,
+  0.781455603552444590, -0.623960847871470660, 0.781335946193104870,
+    -0.624110678635228510,
+  0.781216260106276090, -0.624260486452220650, 0.781096545296358520,
+    -0.624410271316939270,
+  0.780976801767753750, -0.624560033223877210, 0.780857029524864580,
+    -0.624709772167528100,
+  0.780737228572094490, -0.624859488142386340, 0.780617398913848400,
+    -0.625009181142947460,
+  0.780497540554531910, -0.625158851163707620, 0.780377653498552040,
+    -0.625308498199164010,
+  0.780257737750316590, -0.625458122243814360, 0.780137793314234610,
+    -0.625607723292157410,
+  0.780017820194715990, -0.625757301338692900, 0.779897818396172000,
+    -0.625906856377921090,
+  0.779777787923014550, -0.626056388404343520, 0.779657728779656890,
+    -0.626205897412462130,
+  0.779537640970513260, -0.626355383396779990, 0.779417524499998900,
+    -0.626504846351800810,
+  0.779297379372530300, -0.626654286272029350, 0.779177205592524680,
+    -0.626803703151971200,
+  0.779057003164400630, -0.626953096986132660, 0.778936772092577500,
+    -0.627102467769020900,
+  0.778816512381475980, -0.627251815495144080, 0.778696224035517530,
+    -0.627401140159011050,
+  0.778575907059125050, -0.627550441755131530, 0.778455561456721900,
+    -0.627699720278016240,
+  0.778335187232733210, -0.627848975722176460, 0.778214784391584540,
+    -0.627998208082124700,
+  0.778094352937702790, -0.628147417352374000, 0.777973892875516100,
+    -0.628296603527438320,
+  0.777853404209453150, -0.628445766601832710, 0.777732886943944050,
+    -0.628594906570072550,
+  0.777612341083420030, -0.628744023426674680, 0.777491766632313010,
+    -0.628893117166156480,
+  0.777371163595056310, -0.629042187783036000, 0.777250531976084070,
+    -0.629191235271832290,
+  0.777129871779831620, -0.629340259627065630, 0.777009183010735290,
+    -0.629489260843256630,
+  0.776888465673232440, -0.629638238914926980, 0.776767719771761510,
+    -0.629787193836599200,
+  0.776646945310762060, -0.629936125602796440, 0.776526142294674430,
+    -0.630085034208043180,
+  0.776405310727940390, -0.630233919646864370, 0.776284450615002510,
+    -0.630382781913785940,
+  0.776163561960304340, -0.630531621003334600, 0.776042644768290770,
+    -0.630680436910037940,
+  0.775921699043407690, -0.630829229628424470, 0.775800724790101650,
+    -0.630977999153023550,
+  0.775679722012820650, -0.631126745478365340, 0.775558690716013580,
+    -0.631275468598980760,
+  0.775437630904130540, -0.631424168509401860, 0.775316542581622530,
+    -0.631572845204161020,
+  0.775195425752941420, -0.631721498677792260, 0.775074280422540450,
+    -0.631870128924829850,
+  0.774953106594873930, -0.632018735939809060, 0.774831904274396850,
+    -0.632167319717265920,
+  0.774710673465565550, -0.632315880251737570, 0.774589414172837550,
+    -0.632464417537761840,
+  0.774468126400670860, -0.632612931569877410, 0.774346810153525130,
+    -0.632761422342624000,
+  0.774225465435860680, -0.632909889850541750, 0.774104092252139050,
+    -0.633058334088172140,
+  0.773982690606822900, -0.633206755050057190, 0.773861260504375540,
+    -0.633355152730739950,
+  0.773739801949261840, -0.633503527124764320, 0.773618314945947460,
+    -0.633651878226674900,
+  0.773496799498899050, -0.633800206031017280, 0.773375255612584470,
+    -0.633948510532337810,
+  0.773253683291472590, -0.634096791725183740, 0.773132082540033070,
+    -0.634245049604103330,
+  0.773010453362736990, -0.634393284163645490, 0.772888795764056220,
+    -0.634541495398360020,
+  0.772767109748463850, -0.634689683302797740, 0.772645395320433860,
+    -0.634837847871509990,
+  0.772523652484441330, -0.634985989099049460, 0.772401881244962450,
+    -0.635134106979969190,
+  0.772280081606474320, -0.635282201508823420, 0.772158253573455240,
+    -0.635430272680167160,
+  0.772036397150384520, -0.635578320488556110, 0.771914512341742350,
+    -0.635726344928547070,
+  0.771792599152010150, -0.635874345994697720, 0.771670657585670330,
+    -0.636022323681566300,
+  0.771548687647206300, -0.636170277983712170, 0.771426689341102590,
+    -0.636318208895695460,
+  0.771304662671844830, -0.636466116412077180, 0.771182607643919330,
+    -0.636614000527419120,
+  0.771060524261813820, -0.636761861236284200, 0.770938412530016940,
+    -0.636909698533235870,
+  0.770816272453018540, -0.637057512412838590, 0.770694104035309140,
+    -0.637205302869657600,
+  0.770571907281380810, -0.637353069898259130, 0.770449682195725960,
+    -0.637500813493210190,
+  0.770327428782838890, -0.637648533649078810, 0.770205147047214210,
+    -0.637796230360433540,
+  0.770082836993347900, -0.637943903621844060, 0.769960498625737230,
+    -0.638091553427880820,
+  0.769838131948879840, -0.638239179773115280, 0.769715736967275130,
+    -0.638386782652119570,
+  0.769593313685422940, -0.638534362059466790, 0.769470862107824670,
+    -0.638681917989730730,
+  0.769348382238982280, -0.638829450437486290, 0.769225874083399260,
+    -0.638976959397309140,
+  0.769103337645579700, -0.639124444863775730, 0.768980772930028870,
+    -0.639271906831463510,
+  0.768858179941253270, -0.639419345294950700, 0.768735558683760310,
+    -0.639566760248816310,
+  0.768612909162058380, -0.639714151687640450, 0.768490231380656860,
+    -0.639861519606003900,
+  0.768367525344066270, -0.640008863998488440, 0.768244791056798330,
+    -0.640156184859676510,
+  0.768122028523365420, -0.640303482184151670, 0.767999237748281270,
+    -0.640450755966498140,
+  0.767876418736060610, -0.640598006201301030, 0.767753571491219030,
+    -0.640745232883146440,
+  0.767630696018273380, -0.640892436006621380, 0.767507792321741270,
+    -0.641039615566313390,
+  0.767384860406141730, -0.641186771556811250, 0.767261900275994500,
+    -0.641333903972704290,
+  0.767138911935820400, -0.641481012808583160, 0.767015895390141480,
+    -0.641628098059038750,
+  0.766892850643480670, -0.641775159718663500, 0.766769777700361920,
+    -0.641922197782050170,
+  0.766646676565310380, -0.642069212243792540, 0.766523547242852210,
+    -0.642216203098485370,
+  0.766400389737514230, -0.642363170340724320, 0.766277204053824710,
+    -0.642510113965105710,
+  0.766153990196312920, -0.642657033966226860, 0.766030748169509000,
+    -0.642803930338685990,
+  0.765907477977944340, -0.642950803077082080, 0.765784179626150970,
+    -0.643097652176015110,
+  0.765660853118662500, -0.643244477630085850, 0.765537498460013070,
+    -0.643391279433895850,
+  0.765414115654738270, -0.643538057582047740, 0.765290704707374370,
+    -0.643684812069144850,
+  0.765167265622458960, -0.643831542889791390, 0.765043798404530520,
+    -0.643978250038592660,
+  0.764920303058128410, -0.644124933510154540, 0.764796779587793460,
+    -0.644271593299083790,
+  0.764673227998067140, -0.644418229399988380, 0.764549648293492150,
+    -0.644564841807476640,
+  0.764426040478612070, -0.644711430516158310, 0.764302404557971720,
+    -0.644857995520643710,
+  0.764178740536116670, -0.645004536815543930, 0.764055048417593970,
+    -0.645151054395471160,
+  0.763931328206951090, -0.645297548255038380, 0.763807579908737160,
+    -0.645444018388859230,
+  0.763683803527501870, -0.645590464791548690, 0.763559999067796150,
+    -0.645736887457722290,
+  0.763436166534172010, -0.645883286381996320, 0.763312305931182380,
+    -0.646029661558988330,
+  0.763188417263381270, -0.646176012983316280, 0.763064500535323710,
+    -0.646322340649599480,
+  0.762940555751565720, -0.646468644552457780, 0.762816582916664430,
+    -0.646614924686512050,
+  0.762692582035177980, -0.646761181046383920, 0.762568553111665380,
+    -0.646907413626696020,
+  0.762444496150687210, -0.647053622422071540, 0.762320411156804270,
+    -0.647199807427135230,
+  0.762196298134578900, -0.647345968636512060, 0.762072157088574560,
+    -0.647492106044828100,
+  0.761947988023355390, -0.647638219646710310, 0.761823790943486960,
+    -0.647784309436786440,
+  0.761699565853535380, -0.647930375409685340, 0.761575312758068000,
+    -0.648076417560036530,
+  0.761451031661653620, -0.648222435882470420, 0.761326722568861360,
+    -0.648368430371618290,
+  0.761202385484261780, -0.648514401022112440, 0.761078020412426560,
+    -0.648660347828585840,
+  0.760953627357928150, -0.648806270785672550, 0.760829206325340010,
+    -0.648952169888007300,
+  0.760704757319236920, -0.649098045130225950, 0.760580280344194450,
+    -0.649243896506964900,
+  0.760455775404789260, -0.649389724012861660, 0.760331242505599030,
+    -0.649535527642554730,
+  0.760206681651202420, -0.649681307390683190, 0.760082092846179340,
+    -0.649827063251887100,
+  0.759957476095110330, -0.649972795220807530, 0.759832831402577400,
+    -0.650118503292086200,
+  0.759708158773163440, -0.650264187460365850, 0.759583458211452010,
+    -0.650409847720290310,
+  0.759458729722028210, -0.650555484066503880, 0.759333973309477940,
+    -0.650701096493652040,
+  0.759209188978388070, -0.650846684996380880, 0.759084376733346610,
+    -0.650992249569337660,
+  0.758959536578942440, -0.651137790207170330, 0.758834668519765660,
+    -0.651283306904527740,
+  0.758709772560407390, -0.651428799656059820, 0.758584848705459610,
+    -0.651574268456416970,
+  0.758459896959515430, -0.651719713300250910, 0.758334917327168960,
+    -0.651865134182213920,
+  0.758209909813015280, -0.652010531096959500, 0.758084874421650730,
+    -0.652155904039141590,
+  0.757959811157672300, -0.652301253003415460, 0.757834720025678310,
+    -0.652446577984436730,
+  0.757709601030268080, -0.652591878976862440, 0.757584454176041810,
+    -0.652737155975350310,
+  0.757459279467600720, -0.652882408974558850, 0.757334076909547130,
+    -0.653027637969147530,
+  0.757208846506484570, -0.653172842953776760, 0.757083588263017140,
+    -0.653318023923107670,
+  0.756958302183750490, -0.653463180871802330, 0.756832988273290820,
+    -0.653608313794523890,
+  0.756707646536245670, -0.653753422685936060, 0.756582276977223470,
+    -0.653898507540703780,
+  0.756456879600833740, -0.654043568353492640, 0.756331454411686920,
+    -0.654188605118969040,
+  0.756206001414394540, -0.654333617831800440, 0.756080520613569120,
+    -0.654478606486655350,
+  0.755955012013824420, -0.654623571078202680, 0.755829475619774760,
+    -0.654768511601112600,
+  0.755703911436035880, -0.654913428050056030, 0.755578319467224540,
+    -0.655058320419704910,
+  0.755452699717958250, -0.655203188704731820, 0.755327052192855670,
+    -0.655348032899810470,
+  0.755201376896536550, -0.655492852999615350, 0.755075673833621620,
+    -0.655637648998821820,
+  0.754949943008732640, -0.655782420892106030, 0.754824184426492350,
+    -0.655927168674145360,
+  0.754698398091524500, -0.656071892339617600, 0.754572584008453840,
+    -0.656216591883201920,
+  0.754446742181906440, -0.656361267299578000, 0.754320872616508820,
+    -0.656505918583426550,
+  0.754194975316889170, -0.656650545729428940, 0.754069050287676120,
+    -0.656795148732268070,
+  0.753943097533499640, -0.656939727586627110, 0.753817117058990790,
+    -0.657084282287190180,
+  0.753691108868781210, -0.657228812828642540, 0.753565072967504300,
+    -0.657373319205670210,
+  0.753439009359793580, -0.657517801412960120, 0.753312918050284330,
+    -0.657662259445200070,
+  0.753186799043612520, -0.657806693297078640, 0.753060652344415100,
+    -0.657951102963285520,
+  0.752934477957330150, -0.658095488438511180, 0.752808275886996950,
+    -0.658239849717446870,
+  0.752682046138055340, -0.658384186794785050, 0.752555788715146390,
+    -0.658528499665218650,
+  0.752429503622912390, -0.658672788323441890, 0.752303190865996400,
+    -0.658817052764149480,
+  0.752176850449042810, -0.658961292982037320, 0.752050482376696360,
+    -0.659105508971802090,
+  0.751924086653603550, -0.659249700728141490, 0.751797663284411550,
+    -0.659393868245753860,
+  0.751671212273768430, -0.659538011519338660, 0.751544733626323680,
+    -0.659682130543596150,
+  0.751418227346727470, -0.659826225313227320, 0.751291693439630870,
+    -0.659970295822934540,
+  0.751165131909686480, -0.660114342067420480, 0.751038542761547360,
+    -0.660258364041389050,
+  0.750911925999867890, -0.660402361739545030, 0.750785281629303690,
+    -0.660546335156593890,
+  0.750658609654510700, -0.660690284287242300, 0.750531910080146410,
+    -0.660834209126197610,
+  0.750405182910869330, -0.660978109668168060, 0.750278428151338720,
+    -0.661121985907862860,
+  0.750151645806215070, -0.661265837839992270, 0.750024835880159780,
+    -0.661409665459266940,
+  0.749897998377835330, -0.661553468760398890, 0.749771133303905100,
+    -0.661697247738101010,
+  0.749644240663033480, -0.661841002387086870, 0.749517320459886170,
+    -0.661984732702070920,
+  0.749390372699129560, -0.662128438677768720, 0.749263397385431130,
+    -0.662272120308896590,
+  0.749136394523459370, -0.662415777590171780, 0.749009364117883880,
+    -0.662559410516312290,
+  0.748882306173375150, -0.662703019082037440, 0.748755220694604760,
+    -0.662846603282066900,
+  0.748628107686245440, -0.662990163111121470, 0.748500967152970430,
+    -0.663133698563923010,
+  0.748373799099454560, -0.663277209635194100, 0.748246603530373420,
+    -0.663420696319658280,
+  0.748119380450403600, -0.663564158612039770, 0.747992129864222700,
+    -0.663707596507064010,
+  0.747864851776509410, -0.663851009999457340, 0.747737546191943330,
+    -0.663994399083946640,
+  0.747610213115205150, -0.664137763755260010, 0.747482852550976570,
+    -0.664281104008126230,
+  0.747355464503940190, -0.664424419837275180, 0.747228048978779920,
+    -0.664567711237437520,
+  0.747100605980180130, -0.664710978203344790, 0.746973135512826850,
+    -0.664854220729729660,
+  0.746845637581406540, -0.664997438811325340, 0.746718112190607130,
+    -0.665140632442866140,
+  0.746590559345117310, -0.665283801619087180, 0.746462979049626770,
+    -0.665426946334724660,
+  0.746335371308826320, -0.665570066584515450, 0.746207736127407760,
+    -0.665713162363197550,
+  0.746080073510063780, -0.665856233665509720, 0.745952383461488290,
+    -0.665999280486191500,
+  0.745824665986376090, -0.666142302819983540, 0.745696921089422760,
+    -0.666285300661627280,
+  0.745569148775325430, -0.666428274005865240, 0.745441349048781680,
+    -0.666571222847440640,
+  0.745313521914490520, -0.666714147181097670, 0.745185667377151640,
+    -0.666857047001581220,
+  0.745057785441466060, -0.666999922303637470, 0.744929876112135350,
+    -0.667142773082013310,
+  0.744801939393862630, -0.667285599331456370, 0.744673975291351710,
+    -0.667428401046715520,
+  0.744545983809307370, -0.667571178222540310, 0.744417964952435620,
+    -0.667713930853681030,
+  0.744289918725443260, -0.667856658934889320, 0.744161845133038180,
+    -0.667999362460917400,
+  0.744033744179929290, -0.668142041426518450, 0.743905615870826490,
+    -0.668284695826446670,
+  0.743777460210440890, -0.668427325655456820, 0.743649277203484060,
+    -0.668569930908304970,
+  0.743521066854669120, -0.668712511579747980, 0.743392829168709970,
+    -0.668855067664543610,
+  0.743264564150321600, -0.668997599157450270, 0.743136271804219820,
+    -0.669140106053227600,
+  0.743007952135121720, -0.669282588346636010, 0.742879605147745200,
+    -0.669425046032436910,
+  0.742751230846809050, -0.669567479105392490, 0.742622829237033490,
+    -0.669709887560265840,
+  0.742494400323139180, -0.669852271391821020, 0.742365944109848460,
+    -0.669994630594823000,
+  0.742237460601884000, -0.670136965164037650, 0.742108949803969910,
+    -0.670279275094231800,
+  0.741980411720831070, -0.670421560380173090, 0.741851846357193480,
+    -0.670563821016630040,
+  0.741723253717784140, -0.670706056998372160, 0.741594633807331150,
+    -0.670848268320169640,
+  0.741465986630563290, -0.670990454976794220, 0.741337312192210660,
+    -0.671132616963017740,
+  0.741208610497004260, -0.671274754273613490, 0.741079881549676080,
+    -0.671416866903355450,
+  0.740951125354959110, -0.671558954847018330, 0.740822341917587330,
+    -0.671701018099378320,
+  0.740693531242295760, -0.671843056655211930, 0.740564693333820250,
+    -0.671985070509296900,
+  0.740435828196898020, -0.672127059656411730, 0.740306935836266940,
+    -0.672269024091335930,
+  0.740178016256666240, -0.672410963808849790, 0.740049069462835550,
+    -0.672552878803734710,
+  0.739920095459516200, -0.672694769070772860, 0.739791094251449950,
+    -0.672836634604747300,
+  0.739662065843380010, -0.672978475400442090, 0.739533010240050250,
+    -0.673120291452642070,
+  0.739403927446205760, -0.673262082756132970, 0.739274817466592520,
+    -0.673403849305701740,
+  0.739145680305957510, -0.673545591096136100, 0.739016515969048720,
+    -0.673687308122224330,
+  0.738887324460615110, -0.673829000378756040, 0.738758105785406900,
+    -0.673970667860521620,
+  0.738628859948174840, -0.674112310562312360, 0.738499586953671130,
+    -0.674253928478920410,
+  0.738370286806648620, -0.674395521605139050, 0.738240959511861310,
+    -0.674537089935762000,
+  0.738111605074064260, -0.674678633465584540, 0.737982223498013570,
+    -0.674820152189402170,
+  0.737852814788465980, -0.674961646102011930, 0.737723378950179700,
+    -0.675103115198211420,
+  0.737593915987913570, -0.675244559472799270, 0.737464425906427580,
+    -0.675385978920574840,
+  0.737334908710482910, -0.675527373536338520, 0.737205364404841190,
+    -0.675668743314891910,
+  0.737075792994265730, -0.675810088251036940, 0.736946194483520280,
+    -0.675951408339577010,
+  0.736816568877369900, -0.676092703575315920, 0.736686916180580460,
+    -0.676233973953058950,
+  0.736557236397919150, -0.676375219467611590, 0.736427529534153690,
+    -0.676516440113781090,
+  0.736297795594053170, -0.676657635886374950, 0.736168034582387330,
+    -0.676798806780201770,
+  0.736038246503927350, -0.676939952790071130, 0.735908431363445190,
+    -0.677081073910793530,
+  0.735778589165713590, -0.677222170137180330, 0.735648719915506510,
+    -0.677363241464043920,
+  0.735518823617598900, -0.677504287886197430, 0.735388900276766730,
+    -0.677645309398454910,
+  0.735258949897786840, -0.677786305995631500, 0.735128972485437180,
+    -0.677927277672543020,
+  0.734998968044496710, -0.678068224424006600, 0.734868936579745170,
+    -0.678209146244839860,
+  0.734738878095963500, -0.678350043129861470, 0.734608792597933550,
+    -0.678490915073891140,
+  0.734478680090438370, -0.678631762071749360, 0.734348540578261600,
+    -0.678772584118257690,
+  0.734218374066188280, -0.678913381208238410, 0.734088180559004040,
+    -0.679054153336514870,
+  0.733957960061495940, -0.679194900497911200, 0.733827712578451700,
+    -0.679335622687252560,
+  0.733697438114660370, -0.679476319899364970, 0.733567136674911360,
+    -0.679616992129075560,
+  0.733436808263995710, -0.679757639371212030, 0.733306452886705260,
+    -0.679898261620603290,
+  0.733176070547832740, -0.680038858872078930, 0.733045661252172080,
+    -0.680179431120469750,
+  0.732915225004517780, -0.680319978360607200, 0.732784761809665790,
+    -0.680460500587323880,
+  0.732654271672412820, -0.680600997795453020, 0.732523754597556700,
+    -0.680741469979829090,
+  0.732393210589896040, -0.680881917135287230, 0.732262639654230770,
+    -0.681022339256663670,
+  0.732132041795361290, -0.681162736338795430, 0.732001417018089630,
+    -0.681303108376520530,
+  0.731870765327218290, -0.681443455364677870, 0.731740086727550980,
+    -0.681583777298107480,
+  0.731609381223892630, -0.681724074171649710, 0.731478648821048520,
+    -0.681864345980146670,
+  0.731347889523825570, -0.682004592718440830, 0.731217103337031270,
+    -0.682144814381375640,
+  0.731086290265474340, -0.682285010963795570, 0.730955450313964360,
+    -0.682425182460546060,
+  0.730824583487312160, -0.682565328866473250, 0.730693689790329000,
+    -0.682705450176424590,
+  0.730562769227827590, -0.682845546385248080, 0.730431821804621520,
+    -0.682985617487792740,
+  0.730300847525525490, -0.683125663478908680, 0.730169846395354870,
+    -0.683265684353446700,
+  0.730038818418926260, -0.683405680106258680, 0.729907763601057140,
+    -0.683545650732197530,
+  0.729776681946566090, -0.683685596226116580, 0.729645573460272480,
+    -0.683825516582870720,
+  0.729514438146997010, -0.683965411797315400, 0.729383276011561050,
+    -0.684105281864307080,
+  0.729252087058786970, -0.684245126778703080, 0.729120871293498230,
+    -0.684384946535361750,
+  0.728989628720519420, -0.684524741129142300, 0.728858359344675800,
+    -0.684664510554904960,
+  0.728727063170793830, -0.684804254807510620, 0.728595740203700770,
+    -0.684943973881821490,
+  0.728464390448225200, -0.685083667772700360, 0.728333013909196360,
+    -0.685223336475011210,
+  0.728201610591444610, -0.685362979983618730, 0.728070180499801210,
+    -0.685502598293388550,
+  0.727938723639098620, -0.685642191399187470, 0.727807240014169960,
+    -0.685781759295883030,
+  0.727675729629849610, -0.685921301978343560, 0.727544192490972800,
+    -0.686060819441438710,
+  0.727412628602375770, -0.686200311680038590, 0.727281037968895870,
+    -0.686339778689014520,
+  0.727149420595371020, -0.686479220463238950, 0.727017776486640680,
+    -0.686618636997584630,
+  0.726886105647544970, -0.686758028286925890, 0.726754408082925020,
+    -0.686897394326137610,
+  0.726622683797622850, -0.687036735110095660, 0.726490932796481910,
+    -0.687176050633676820,
+  0.726359155084346010, -0.687315340891759050, 0.726227350666060370,
+    -0.687454605879221030,
+  0.726095519546471000, -0.687593845590942170, 0.725963661730424930,
+    -0.687733060021803230,
+  0.725831777222770370, -0.687872249166685550, 0.725699866028356120,
+    -0.688011413020471640,
+  0.725567928152032300, -0.688150551578044830, 0.725435963598649810,
+    -0.688289664834289330,
+  0.725303972373060770, -0.688428752784090440, 0.725171954480117950,
+    -0.688567815422334250,
+  0.725039909924675370, -0.688706852743907750, 0.724907838711587820,
+    -0.688845864743699020,
+  0.724775740845711280, -0.688984851416597040, 0.724643616331902550,
+    -0.689123812757491570,
+  0.724511465175019630, -0.689262748761273470, 0.724379287379921190,
+    -0.689401659422834270,
+  0.724247082951467000, -0.689540544737066830, 0.724114851894517850,
+    -0.689679404698864800,
+  0.723982594213935520, -0.689818239303122470, 0.723850309914582880,
+    -0.689957048544735390,
+  0.723717999001323500, -0.690095832418599950, 0.723585661479022150,
+    -0.690234590919613370,
+  0.723453297352544380, -0.690373324042674040, 0.723320906626756970,
+    -0.690512031782681060,
+  0.723188489306527460, -0.690650714134534600, 0.723056045396724410,
+    -0.690789371093135650,
+  0.722923574902217700, -0.690928002653386160, 0.722791077827877550,
+    -0.691066608810189220,
+  0.722658554178575610, -0.691205189558448450, 0.722526003959184540,
+    -0.691343744893068710,
+  0.722393427174577550, -0.691482274808955850, 0.722260823829629310,
+    -0.691620779301016290,
+  0.722128193929215350, -0.691759258364157750, 0.721995537478211880,
+    -0.691897711993288760,
+  0.721862854481496340, -0.692036140183318720, 0.721730144943947160,
+    -0.692174542929158140,
+  0.721597408870443770, -0.692312920225718220, 0.721464646265866370,
+    -0.692451272067911130,
+  0.721331857135096290, -0.692589598450650380, 0.721199041483015720,
+    -0.692727899368849820,
+  0.721066199314508110, -0.692866174817424630, 0.720933330634457530,
+    -0.693004424791290870,
+  0.720800435447749190, -0.693142649285365400, 0.720667513759269520,
+    -0.693280848294566040,
+  0.720534565573905270, -0.693419021813811760, 0.720401590896544760,
+    -0.693557169838022290,
+  0.720268589732077190, -0.693695292362118240, 0.720135562085392420,
+    -0.693833389381021350,
+  0.720002507961381650, -0.693971460889654000, 0.719869427364936860,
+    -0.694109506882939820,
+  0.719736320300951030, -0.694247527355803310, 0.719603186774318120,
+    -0.694385522303169740,
+  0.719470026789932990, -0.694523491719965520, 0.719336840352691740,
+    -0.694661435601117820,
+  0.719203627467491220, -0.694799353941554900, 0.719070388139229190,
+    -0.694937246736205830,
+  0.718937122372804490, -0.695075113980000880, 0.718803830173116890,
+    -0.695212955667870780,
+  0.718670511545067230, -0.695350771794747690, 0.718537166493557370,
+    -0.695488562355564440,
+  0.718403795023489830, -0.695626327345254870, 0.718270397139768260,
+    -0.695764066758753690,
+  0.718136972847297490, -0.695901780590996830, 0.718003522150983180,
+    -0.696039468836920690,
+  0.717870045055731710, -0.696177131491462990, 0.717736541566450950,
+    -0.696314768549562090,
+  0.717603011688049080, -0.696452380006157830, 0.717469455425435830,
+    -0.696589965856190370,
+  0.717335872783521730, -0.696727526094601200, 0.717202263767218070,
+    -0.696865060716332470,
+  0.717068628381437480, -0.697002569716327460, 0.716934966631093130,
+    -0.697140053089530420,
+  0.716801278521099540, -0.697277510830886520, 0.716667564056371890,
+    -0.697414942935341790,
+  0.716533823241826680, -0.697552349397843160, 0.716400056082381000,
+    -0.697689730213338800,
+  0.716266262582953120, -0.697827085376777290, 0.716132442748462330,
+    -0.697964414883108670,
+  0.715998596583828690, -0.698101718727283770, 0.715864724093973500,
+    -0.698238996904254280,
+  0.715730825283818590, -0.698376249408972920, 0.715596900158287470,
+    -0.698513476236393040,
+  0.715462948722303760, -0.698650677381469460, 0.715328970980792620,
+    -0.698787852839157670,
+  0.715194966938680120, -0.698925002604414150, 0.715060936600893090,
+    -0.699062126672196140,
+  0.714926879972359490, -0.699199225037462120, 0.714792797058008240,
+    -0.699336297695171140,
+  0.714658687862769090, -0.699473344640283770, 0.714524552391572860,
+    -0.699610365867761040,
+  0.714390390649351390, -0.699747361372564990, 0.714256202641037510,
+    -0.699884331149658760,
+  0.714121988371564820, -0.700021275194006250, 0.713987747845867830,
+    -0.700158193500572730,
+  0.713853481068882470, -0.700295086064323780, 0.713719188045545240,
+    -0.700431952880226420,
+  0.713584868780793640, -0.700568793943248340, 0.713450523279566260,
+    -0.700705609248358450,
+  0.713316151546802610, -0.700842398790526120, 0.713181753587443180,
+    -0.700979162564722370,
+  0.713047329406429340, -0.701115900565918660, 0.712912879008703480,
+    -0.701252612789087460,
+  0.712778402399208980, -0.701389299229202230, 0.712643899582890210,
+    -0.701525959881237340,
+  0.712509370564692320, -0.701662594740168450, 0.712374815349561710,
+    -0.701799203800971720,
+  0.712240233942445510, -0.701935787058624360, 0.712105626348291890,
+    -0.702072344508104630,
+  0.711970992572050100, -0.702208876144391870, 0.711836332618670080,
+    -0.702345381962465880,
+  0.711701646493102970, -0.702481861957308000, 0.711566934200300700,
+    -0.702618316123900130,
+  0.711432195745216430, -0.702754744457225300, 0.711297431132803970,
+    -0.702891146952267400,
+  0.711162640368018350, -0.703027523604011220, 0.711027823455815280,
+    -0.703163874407442770,
+  0.710892980401151680, -0.703300199357548730, 0.710758111208985350,
+    -0.703436498449316660,
+  0.710623215884275020, -0.703572771677735580, 0.710488294431980470,
+    -0.703709019037794810,
+  0.710353346857062420, -0.703845240524484940, 0.710218373164482220,
+    -0.703981436132797620,
+  0.710083373359202800, -0.704117605857725310, 0.709948347446187400,
+    -0.704253749694261470,
+  0.709813295430400840, -0.704389867637400410, 0.709678217316808580,
+    -0.704525959682137380,
+  0.709543113110376770, -0.704662025823468820, 0.709407982816072980,
+    -0.704798066056391950,
+  0.709272826438865690, -0.704934080375904880, 0.709137643983724030,
+    -0.705070068777006840,
+  0.709002435455618250, -0.705206031254697830, 0.708867200859519820,
+    -0.705341967803978840,
+  0.708731940200400650, -0.705477878419852100, 0.708596653483234080,
+    -0.705613763097320490,
+  0.708461340712994160, -0.705749621831387790, 0.708326001894655890,
+    -0.705885454617058980,
+  0.708190637033195400, -0.706021261449339740, 0.708055246133589500,
+    -0.706157042323237060,
+  0.707919829200816310, -0.706292797233758480, 0.707784386239854620,
+    -0.706428526175912790,
+  0.707648917255684350, -0.706564229144709510, 0.707513422253286280,
+    -0.706699906135159430,
+  0.707377901237642100, -0.706835557142273750, 0.707242354213734710,
+    -0.706971182161065360,
+  0.707106781186547570, -0.707106781186547460, 0.706971182161065360,
+    -0.707242354213734600,
+  0.706835557142273860, -0.707377901237642100, 0.706699906135159430,
+    -0.707513422253286170,
+  0.706564229144709620, -0.707648917255684350, 0.706428526175912790,
+    -0.707784386239854620,
+  0.706292797233758480, -0.707919829200816310, 0.706157042323237060,
+    -0.708055246133589500,
+  0.706021261449339740, -0.708190637033195290, 0.705885454617058980,
+    -0.708326001894655780,
+  0.705749621831387790, -0.708461340712994050, 0.705613763097320490,
+    -0.708596653483234080,
+  0.705477878419852210, -0.708731940200400650, 0.705341967803978950,
+    -0.708867200859519820,
+  0.705206031254697830, -0.709002435455618250, 0.705070068777006840,
+    -0.709137643983723920,
+  0.704934080375904990, -0.709272826438865580, 0.704798066056391950,
+    -0.709407982816072980,
+  0.704662025823468930, -0.709543113110376770, 0.704525959682137380,
+    -0.709678217316808470,
+  0.704389867637400410, -0.709813295430400840, 0.704253749694261580,
+    -0.709948347446187400,
+  0.704117605857725430, -0.710083373359202690, 0.703981436132797730,
+    -0.710218373164482220,
+  0.703845240524484940, -0.710353346857062310, 0.703709019037794810,
+    -0.710488294431980470,
+  0.703572771677735580, -0.710623215884275020, 0.703436498449316770,
+    -0.710758111208985350,
+  0.703300199357548730, -0.710892980401151680, 0.703163874407442770,
+    -0.711027823455815280,
+  0.703027523604011220, -0.711162640368018350, 0.702891146952267400,
+    -0.711297431132803970,
+  0.702754744457225300, -0.711432195745216430, 0.702618316123900130,
+    -0.711566934200300700,
+  0.702481861957308000, -0.711701646493102970, 0.702345381962465880,
+    -0.711836332618670080,
+  0.702208876144391870, -0.711970992572049990, 0.702072344508104740,
+    -0.712105626348291890,
+  0.701935787058624360, -0.712240233942445510, 0.701799203800971720,
+    -0.712374815349561710,
+  0.701662594740168570, -0.712509370564692320, 0.701525959881237450,
+    -0.712643899582890210,
+  0.701389299229202230, -0.712778402399208870, 0.701252612789087460,
+    -0.712912879008703370,
+  0.701115900565918660, -0.713047329406429230, 0.700979162564722480,
+    -0.713181753587443070,
+  0.700842398790526230, -0.713316151546802610, 0.700705609248358450,
+    -0.713450523279566150,
+  0.700568793943248450, -0.713584868780793520, 0.700431952880226420,
+    -0.713719188045545130,
+  0.700295086064323780, -0.713853481068882470, 0.700158193500572730,
+    -0.713987747845867830,
+  0.700021275194006360, -0.714121988371564710, 0.699884331149658760,
+    -0.714256202641037400,
+  0.699747361372564990, -0.714390390649351390, 0.699610365867761040,
+    -0.714524552391572860,
+  0.699473344640283770, -0.714658687862768980, 0.699336297695171250,
+    -0.714792797058008130,
+  0.699199225037462120, -0.714926879972359370, 0.699062126672196140,
+    -0.715060936600892980,
+  0.698925002604414150, -0.715194966938680010, 0.698787852839157790,
+    -0.715328970980792620,
+  0.698650677381469580, -0.715462948722303650, 0.698513476236393040,
+    -0.715596900158287360,
+  0.698376249408972920, -0.715730825283818590, 0.698238996904254390,
+    -0.715864724093973390,
+  0.698101718727283880, -0.715998596583828690, 0.697964414883108790,
+    -0.716132442748462330,
+  0.697827085376777290, -0.716266262582953120, 0.697689730213338800,
+    -0.716400056082380890,
+  0.697552349397843270, -0.716533823241826570, 0.697414942935341790,
+    -0.716667564056371890,
+  0.697277510830886630, -0.716801278521099540, 0.697140053089530530,
+    -0.716934966631093130,
+  0.697002569716327460, -0.717068628381437480, 0.696865060716332470,
+    -0.717202263767218070,
+  0.696727526094601200, -0.717335872783521730, 0.696589965856190370,
+    -0.717469455425435830,
+  0.696452380006157830, -0.717603011688049080, 0.696314768549562200,
+    -0.717736541566450840,
+  0.696177131491462990, -0.717870045055731710, 0.696039468836920690,
+    -0.718003522150983060,
+  0.695901780590996830, -0.718136972847297490, 0.695764066758753800,
+    -0.718270397139768260,
+  0.695626327345254870, -0.718403795023489720, 0.695488562355564440,
+    -0.718537166493557370,
+  0.695350771794747800, -0.718670511545067230, 0.695212955667870890,
+    -0.718803830173116890,
+  0.695075113980000880, -0.718937122372804380, 0.694937246736205940,
+    -0.719070388139229190,
+  0.694799353941554900, -0.719203627467491220, 0.694661435601117930,
+    -0.719336840352691740,
+  0.694523491719965520, -0.719470026789932990, 0.694385522303169860,
+    -0.719603186774318000,
+  0.694247527355803310, -0.719736320300951030, 0.694109506882939820,
+    -0.719869427364936860,
+  0.693971460889654000, -0.720002507961381650, 0.693833389381021350,
+    -0.720135562085392310,
+  0.693695292362118350, -0.720268589732077080, 0.693557169838022400,
+    -0.720401590896544760,
+  0.693419021813811880, -0.720534565573905270, 0.693280848294566150,
+    -0.720667513759269410,
+  0.693142649285365510, -0.720800435447749190, 0.693004424791290870,
+    -0.720933330634457530,
+  0.692866174817424740, -0.721066199314508110, 0.692727899368849820,
+    -0.721199041483015720,
+  0.692589598450650380, -0.721331857135096180, 0.692451272067911240,
+    -0.721464646265866370,
+  0.692312920225718220, -0.721597408870443660, 0.692174542929158140,
+    -0.721730144943947160,
+  0.692036140183318830, -0.721862854481496340, 0.691897711993288760,
+    -0.721995537478211880,
+  0.691759258364157750, -0.722128193929215350, 0.691620779301016400,
+    -0.722260823829629310,
+  0.691482274808955850, -0.722393427174577550, 0.691343744893068820,
+    -0.722526003959184430,
+  0.691205189558448450, -0.722658554178575610, 0.691066608810189220,
+    -0.722791077827877550,
+  0.690928002653386280, -0.722923574902217700, 0.690789371093135760,
+    -0.723056045396724410,
+  0.690650714134534720, -0.723188489306527350, 0.690512031782681170,
+    -0.723320906626756850,
+  0.690373324042674040, -0.723453297352544380, 0.690234590919613370,
+    -0.723585661479022040,
+  0.690095832418599950, -0.723717999001323390, 0.689957048544735390,
+    -0.723850309914582880,
+  0.689818239303122470, -0.723982594213935520, 0.689679404698864800,
+    -0.724114851894517850,
+  0.689540544737066940, -0.724247082951466890, 0.689401659422834380,
+    -0.724379287379921080,
+  0.689262748761273470, -0.724511465175019520, 0.689123812757491680,
+    -0.724643616331902550,
+  0.688984851416597150, -0.724775740845711280, 0.688845864743699130,
+    -0.724907838711587820,
+  0.688706852743907750, -0.725039909924675370, 0.688567815422334360,
+    -0.725171954480117840,
+  0.688428752784090550, -0.725303972373060660, 0.688289664834289440,
+    -0.725435963598649810,
+  0.688150551578044830, -0.725567928152032300, 0.688011413020471640,
+    -0.725699866028356120,
+  0.687872249166685550, -0.725831777222770370, 0.687733060021803230,
+    -0.725963661730424930,
+  0.687593845590942170, -0.726095519546470890, 0.687454605879221030,
+    -0.726227350666060260,
+  0.687315340891759160, -0.726359155084346010, 0.687176050633676930,
+    -0.726490932796481910,
+  0.687036735110095660, -0.726622683797622850, 0.686897394326137610,
+    -0.726754408082924910,
+  0.686758028286925890, -0.726886105647544970, 0.686618636997584740,
+    -0.727017776486640680,
+  0.686479220463238950, -0.727149420595371020, 0.686339778689014630,
+    -0.727281037968895760,
+  0.686200311680038700, -0.727412628602375770, 0.686060819441438710,
+    -0.727544192490972800,
+  0.685921301978343670, -0.727675729629849610, 0.685781759295883030,
+    -0.727807240014169960,
+  0.685642191399187470, -0.727938723639098620, 0.685502598293388670,
+    -0.728070180499801210,
+  0.685362979983618730, -0.728201610591444500, 0.685223336475011210,
+    -0.728333013909196360,
+  0.685083667772700360, -0.728464390448225200, 0.684943973881821490,
+    -0.728595740203700770,
+  0.684804254807510620, -0.728727063170793720, 0.684664510554904960,
+    -0.728858359344675690,
+  0.684524741129142300, -0.728989628720519310, 0.684384946535361750,
+    -0.729120871293498230,
+  0.684245126778703080, -0.729252087058786970, 0.684105281864307080,
+    -0.729383276011561050,
+  0.683965411797315510, -0.729514438146996900, 0.683825516582870830,
+    -0.729645573460272480,
+  0.683685596226116690, -0.729776681946565970, 0.683545650732197530,
+    -0.729907763601057140,
+  0.683405680106258790, -0.730038818418926150, 0.683265684353446700,
+    -0.730169846395354870,
+  0.683125663478908800, -0.730300847525525380, 0.682985617487792850,
+    -0.730431821804621520,
+  0.682845546385248080, -0.730562769227827590, 0.682705450176424590,
+    -0.730693689790328890,
+  0.682565328866473250, -0.730824583487312050, 0.682425182460546060,
+    -0.730955450313964360,
+  0.682285010963795570, -0.731086290265474230, 0.682144814381375640,
+    -0.731217103337031160,
+  0.682004592718440830, -0.731347889523825460, 0.681864345980146780,
+    -0.731478648821048520,
+  0.681724074171649820, -0.731609381223892520, 0.681583777298107480,
+    -0.731740086727550980,
+  0.681443455364677990, -0.731870765327218290, 0.681303108376520530,
+    -0.732001417018089520,
+  0.681162736338795430, -0.732132041795361290, 0.681022339256663670,
+    -0.732262639654230660,
+  0.680881917135287340, -0.732393210589896040, 0.680741469979829090,
+    -0.732523754597556590,
+  0.680600997795453130, -0.732654271672412820, 0.680460500587323880,
+    -0.732784761809665790,
+  0.680319978360607200, -0.732915225004517780, 0.680179431120469750,
+    -0.733045661252171970,
+  0.680038858872079040, -0.733176070547832740, 0.679898261620603290,
+    -0.733306452886705260,
+  0.679757639371212030, -0.733436808263995710, 0.679616992129075560,
+    -0.733567136674911360,
+  0.679476319899365080, -0.733697438114660260, 0.679335622687252670,
+    -0.733827712578451700,
+  0.679194900497911200, -0.733957960061495940, 0.679054153336514870,
+    -0.734088180559004040,
+  0.678913381208238410, -0.734218374066188170, 0.678772584118257690,
+    -0.734348540578261600,
+  0.678631762071749470, -0.734478680090438370, 0.678490915073891250,
+    -0.734608792597933550,
+  0.678350043129861580, -0.734738878095963390, 0.678209146244839860,
+    -0.734868936579745060,
+  0.678068224424006600, -0.734998968044496600, 0.677927277672543130,
+    -0.735128972485437180,
+  0.677786305995631500, -0.735258949897786730, 0.677645309398454910,
+    -0.735388900276766620,
+  0.677504287886197430, -0.735518823617598900, 0.677363241464044030,
+    -0.735648719915506400,
+  0.677222170137180450, -0.735778589165713480, 0.677081073910793530,
+    -0.735908431363445190,
+  0.676939952790071240, -0.736038246503927350, 0.676798806780201770,
+    -0.736168034582387330,
+  0.676657635886374950, -0.736297795594053060, 0.676516440113781090,
+    -0.736427529534153690,
+  0.676375219467611700, -0.736557236397919150, 0.676233973953058950,
+    -0.736686916180580460,
+  0.676092703575316030, -0.736816568877369790, 0.675951408339577010,
+    -0.736946194483520170,
+  0.675810088251037060, -0.737075792994265620, 0.675668743314891910,
+    -0.737205364404841190,
+  0.675527373536338630, -0.737334908710482790, 0.675385978920574950,
+    -0.737464425906427580,
+  0.675244559472799270, -0.737593915987913460, 0.675103115198211530,
+    -0.737723378950179590,
+  0.674961646102012040, -0.737852814788465980, 0.674820152189402280,
+    -0.737982223498013570,
+  0.674678633465584540, -0.738111605074064260, 0.674537089935762110,
+    -0.738240959511861310,
+  0.674395521605139050, -0.738370286806648510, 0.674253928478920520,
+    -0.738499586953671130,
+  0.674112310562312360, -0.738628859948174840, 0.673970667860521620,
+    -0.738758105785406900,
+  0.673829000378756150, -0.738887324460615110, 0.673687308122224330,
+    -0.739016515969048600,
+  0.673545591096136100, -0.739145680305957400, 0.673403849305701850,
+    -0.739274817466592520,
+  0.673262082756132970, -0.739403927446205760, 0.673120291452642070,
+    -0.739533010240050250,
+  0.672978475400442090, -0.739662065843379900, 0.672836634604747410,
+    -0.739791094251449950,
+  0.672694769070772970, -0.739920095459516090, 0.672552878803734820,
+    -0.740049069462835550,
+  0.672410963808849900, -0.740178016256666240, 0.672269024091336040,
+    -0.740306935836266940,
+  0.672127059656411840, -0.740435828196898020, 0.671985070509296900,
+    -0.740564693333820250,
+  0.671843056655211930, -0.740693531242295640, 0.671701018099378320,
+    -0.740822341917587330,
+  0.671558954847018330, -0.740951125354959110, 0.671416866903355450,
+    -0.741079881549676080,
+  0.671274754273613490, -0.741208610497004260, 0.671132616963017850,
+    -0.741337312192210660,
+  0.670990454976794220, -0.741465986630563290, 0.670848268320169750,
+    -0.741594633807331150,
+  0.670706056998372160, -0.741723253717784140, 0.670563821016630040,
+    -0.741851846357193480,
+  0.670421560380173090, -0.741980411720830960, 0.670279275094231910,
+    -0.742108949803969800,
+  0.670136965164037760, -0.742237460601884000, 0.669994630594823000,
+    -0.742365944109848460,
+  0.669852271391821130, -0.742494400323139180, 0.669709887560265840,
+    -0.742622829237033380,
+  0.669567479105392490, -0.742751230846809050, 0.669425046032436910,
+    -0.742879605147745090,
+  0.669282588346636010, -0.743007952135121720, 0.669140106053227710,
+    -0.743136271804219820,
+  0.668997599157450270, -0.743264564150321490, 0.668855067664543610,
+    -0.743392829168709970,
+  0.668712511579748090, -0.743521066854669120, 0.668569930908305080,
+    -0.743649277203484060,
+  0.668427325655456820, -0.743777460210440780, 0.668284695826446670,
+    -0.743905615870826490,
+  0.668142041426518560, -0.744033744179929180, 0.667999362460917510,
+    -0.744161845133038070,
+  0.667856658934889440, -0.744289918725443140, 0.667713930853681140,
+    -0.744417964952435620,
+  0.667571178222540310, -0.744545983809307250, 0.667428401046715640,
+    -0.744673975291351600,
+  0.667285599331456480, -0.744801939393862630, 0.667142773082013310,
+    -0.744929876112135350,
+  0.666999922303637470, -0.745057785441465950, 0.666857047001581220,
+    -0.745185667377151640,
+  0.666714147181097670, -0.745313521914490410, 0.666571222847440750,
+    -0.745441349048781680,
+  0.666428274005865350, -0.745569148775325430, 0.666285300661627390,
+    -0.745696921089422760,
+  0.666142302819983540, -0.745824665986375980, 0.665999280486191500,
+    -0.745952383461488180,
+  0.665856233665509720, -0.746080073510063780, 0.665713162363197660,
+    -0.746207736127407650,
+  0.665570066584515560, -0.746335371308826320, 0.665426946334724660,
+    -0.746462979049626770,
+  0.665283801619087180, -0.746590559345117310, 0.665140632442866140,
+    -0.746718112190607020,
+  0.664997438811325340, -0.746845637581406540, 0.664854220729729660,
+    -0.746973135512826740,
+  0.664710978203344900, -0.747100605980180130, 0.664567711237437520,
+    -0.747228048978779920,
+  0.664424419837275180, -0.747355464503940190, 0.664281104008126230,
+    -0.747482852550976570,
+  0.664137763755260010, -0.747610213115205150, 0.663994399083946640,
+    -0.747737546191943330,
+  0.663851009999457340, -0.747864851776509410, 0.663707596507064120,
+    -0.747992129864222700,
+  0.663564158612039880, -0.748119380450403490, 0.663420696319658280,
+    -0.748246603530373420,
+  0.663277209635194100, -0.748373799099454560, 0.663133698563923010,
+    -0.748500967152970430,
+  0.662990163111121470, -0.748628107686245330, 0.662846603282066900,
+    -0.748755220694604760,
+  0.662703019082037440, -0.748882306173375030, 0.662559410516312400,
+    -0.749009364117883770,
+  0.662415777590171780, -0.749136394523459260, 0.662272120308896590,
+    -0.749263397385431020,
+  0.662128438677768720, -0.749390372699129560, 0.661984732702071030,
+    -0.749517320459886170,
+  0.661841002387086870, -0.749644240663033480, 0.661697247738101120,
+    -0.749771133303904990,
+  0.661553468760399000, -0.749897998377835220, 0.661409665459266940,
+    -0.750024835880159780,
+  0.661265837839992270, -0.750151645806214960, 0.661121985907862970,
+    -0.750278428151338610,
+  0.660978109668168060, -0.750405182910869220, 0.660834209126197610,
+    -0.750531910080146410,
+  0.660690284287242300, -0.750658609654510590, 0.660546335156593890,
+    -0.750785281629303580,
+  0.660402361739545030, -0.750911925999867890, 0.660258364041389050,
+    -0.751038542761547250,
+  0.660114342067420480, -0.751165131909686370, 0.659970295822934540,
+    -0.751291693439630870,
+  0.659826225313227430, -0.751418227346727360, 0.659682130543596150,
+    -0.751544733626323570,
+  0.659538011519338770, -0.751671212273768430, 0.659393868245753970,
+    -0.751797663284411440,
+  0.659249700728141490, -0.751924086653603550, 0.659105508971802200,
+    -0.752050482376696360,
+  0.658961292982037320, -0.752176850449042700, 0.658817052764149480,
+    -0.752303190865996400,
+  0.658672788323441890, -0.752429503622912390, 0.658528499665218760,
+    -0.752555788715146390,
+  0.658384186794785050, -0.752682046138055230, 0.658239849717446980,
+    -0.752808275886996950,
+  0.658095488438511290, -0.752934477957330150, 0.657951102963285630,
+    -0.753060652344415100,
+  0.657806693297078640, -0.753186799043612410, 0.657662259445200070,
+    -0.753312918050284330,
+  0.657517801412960120, -0.753439009359793580, 0.657373319205670210,
+    -0.753565072967504190,
+  0.657228812828642650, -0.753691108868781210, 0.657084282287190180,
+    -0.753817117058990680,
+  0.656939727586627110, -0.753943097533499640, 0.656795148732268070,
+    -0.754069050287676120,
+  0.656650545729429050, -0.754194975316889170, 0.656505918583426550,
+    -0.754320872616508820,
+  0.656361267299578000, -0.754446742181906330, 0.656216591883202030,
+    -0.754572584008453840,
+  0.656071892339617710, -0.754698398091524390, 0.655927168674145360,
+    -0.754824184426492240,
+  0.655782420892106030, -0.754949943008732640, 0.655637648998821820,
+    -0.755075673833621510,
+  0.655492852999615460, -0.755201376896536550, 0.655348032899810580,
+    -0.755327052192855560,
+  0.655203188704731930, -0.755452699717958140, 0.655058320419704910,
+    -0.755578319467224540,
+  0.654913428050056150, -0.755703911436035880, 0.654768511601112600,
+    -0.755829475619774760,
+  0.654623571078202680, -0.755955012013824310, 0.654478606486655350,
+    -0.756080520613569120,
+  0.654333617831800550, -0.756206001414394540, 0.654188605118969040,
+    -0.756331454411686920,
+  0.654043568353492640, -0.756456879600833630, 0.653898507540703890,
+    -0.756582276977223470,
+  0.653753422685936170, -0.756707646536245670, 0.653608313794523890,
+    -0.756832988273290820,
+  0.653463180871802330, -0.756958302183750490, 0.653318023923107670,
+    -0.757083588263017140,
+  0.653172842953776760, -0.757208846506484460, 0.653027637969147650,
+    -0.757334076909547130,
+  0.652882408974558960, -0.757459279467600720, 0.652737155975350420,
+    -0.757584454176041810,
+  0.652591878976862550, -0.757709601030268080, 0.652446577984436840,
+    -0.757834720025678310,
+  0.652301253003415460, -0.757959811157672300, 0.652155904039141700,
+    -0.758084874421650620,
+  0.652010531096959500, -0.758209909813015280, 0.651865134182214030,
+    -0.758334917327168960,
+  0.651719713300251020, -0.758459896959515320, 0.651574268456417080,
+    -0.758584848705459500,
+  0.651428799656059820, -0.758709772560407390, 0.651283306904527850,
+    -0.758834668519765660,
+  0.651137790207170330, -0.758959536578942440, 0.650992249569337660,
+    -0.759084376733346500,
+  0.650846684996380990, -0.759209188978387960, 0.650701096493652040,
+    -0.759333973309477940,
+  0.650555484066503990, -0.759458729722028210, 0.650409847720290420,
+    -0.759583458211452010,
+  0.650264187460365960, -0.759708158773163440, 0.650118503292086200,
+    -0.759832831402577400,
+  0.649972795220807530, -0.759957476095110330, 0.649827063251887100,
+    -0.760082092846179220,
+  0.649681307390683190, -0.760206681651202420, 0.649535527642554730,
+    -0.760331242505599030,
+  0.649389724012861770, -0.760455775404789260, 0.649243896506965010,
+    -0.760580280344194340,
+  0.649098045130226060, -0.760704757319236920, 0.648952169888007410,
+    -0.760829206325340010,
+  0.648806270785672550, -0.760953627357928040, 0.648660347828585840,
+    -0.761078020412426560,
+  0.648514401022112550, -0.761202385484261780, 0.648368430371618400,
+    -0.761326722568861250,
+  0.648222435882470420, -0.761451031661653510, 0.648076417560036530,
+    -0.761575312758068000,
+  0.647930375409685460, -0.761699565853535270, 0.647784309436786550,
+    -0.761823790943486840,
+  0.647638219646710420, -0.761947988023355390, 0.647492106044828100,
+    -0.762072157088574560,
+  0.647345968636512060, -0.762196298134578900, 0.647199807427135230,
+    -0.762320411156804160,
+  0.647053622422071650, -0.762444496150687100, 0.646907413626696020,
+    -0.762568553111665380,
+  0.646761181046383920, -0.762692582035177870, 0.646614924686512050,
+    -0.762816582916664320,
+  0.646468644552457890, -0.762940555751565720, 0.646322340649599590,
+    -0.763064500535323710,
+  0.646176012983316390, -0.763188417263381270, 0.646029661558988330,
+    -0.763312305931182380,
+  0.645883286381996440, -0.763436166534172010, 0.645736887457722290,
+    -0.763559999067796150,
+  0.645590464791548800, -0.763683803527501870, 0.645444018388859230,
+    -0.763807579908737160,
+  0.645297548255038380, -0.763931328206951090, 0.645151054395471270,
+    -0.764055048417593860,
+  0.645004536815544040, -0.764178740536116670, 0.644857995520643710,
+    -0.764302404557971720,
+  0.644711430516158420, -0.764426040478612070, 0.644564841807476750,
+    -0.764549648293492150,
+  0.644418229399988380, -0.764673227998067140, 0.644271593299083900,
+    -0.764796779587793460,
+  0.644124933510154540, -0.764920303058128410, 0.643978250038592660,
+    -0.765043798404530410,
+  0.643831542889791500, -0.765167265622458960, 0.643684812069144960,
+    -0.765290704707374260,
+  0.643538057582047850, -0.765414115654738160, 0.643391279433895960,
+    -0.765537498460013070,
+  0.643244477630085850, -0.765660853118662390, 0.643097652176015110,
+    -0.765784179626150970,
+  0.642950803077082080, -0.765907477977944230, 0.642803930338686100,
+    -0.766030748169509000,
+  0.642657033966226860, -0.766153990196312810, 0.642510113965105710,
+    -0.766277204053824710,
+  0.642363170340724320, -0.766400389737514120, 0.642216203098485370,
+    -0.766523547242852100,
+  0.642069212243792540, -0.766646676565310380, 0.641922197782050170,
+    -0.766769777700361920,
+  0.641775159718663500, -0.766892850643480670, 0.641628098059038860,
+    -0.767015895390141480,
+  0.641481012808583160, -0.767138911935820400, 0.641333903972704290,
+    -0.767261900275994390,
+  0.641186771556811250, -0.767384860406141620, 0.641039615566313390,
+    -0.767507792321741270,
+  0.640892436006621380, -0.767630696018273270, 0.640745232883146440,
+    -0.767753571491219030,
+  0.640598006201301030, -0.767876418736060610, 0.640450755966498140,
+    -0.767999237748281270,
+  0.640303482184151670, -0.768122028523365310, 0.640156184859676620,
+    -0.768244791056798220,
+  0.640008863998488440, -0.768367525344066270, 0.639861519606004010,
+    -0.768490231380656750,
+  0.639714151687640450, -0.768612909162058270, 0.639566760248816420,
+    -0.768735558683760310,
+  0.639419345294950700, -0.768858179941253270, 0.639271906831463510,
+    -0.768980772930028870,
+  0.639124444863775730, -0.769103337645579590, 0.638976959397309140,
+    -0.769225874083399260,
+  0.638829450437486400, -0.769348382238982280, 0.638681917989730840,
+    -0.769470862107824560,
+  0.638534362059466790, -0.769593313685422940, 0.638386782652119680,
+    -0.769715736967275020,
+  0.638239179773115390, -0.769838131948879840, 0.638091553427880930,
+    -0.769960498625737230,
+  0.637943903621844170, -0.770082836993347900, 0.637796230360433540,
+    -0.770205147047214100,
+  0.637648533649078810, -0.770327428782838770, 0.637500813493210310,
+    -0.770449682195725960,
+  0.637353069898259130, -0.770571907281380700, 0.637205302869657600,
+    -0.770694104035309140,
+  0.637057512412838590, -0.770816272453018430, 0.636909698533235870,
+    -0.770938412530016940,
+  0.636761861236284200, -0.771060524261813710, 0.636614000527419230,
+    -0.771182607643919220,
+  0.636466116412077180, -0.771304662671844720, 0.636318208895695570,
+    -0.771426689341102590,
+  0.636170277983712170, -0.771548687647206300, 0.636022323681566300,
+    -0.771670657585670330,
+  0.635874345994697720, -0.771792599152010150, 0.635726344928547180,
+    -0.771914512341742350,
+  0.635578320488556230, -0.772036397150384410, 0.635430272680167160,
+    -0.772158253573455240,
+  0.635282201508823530, -0.772280081606474320, 0.635134106979969300,
+    -0.772401881244962340,
+  0.634985989099049460, -0.772523652484441330, 0.634837847871510100,
+    -0.772645395320433860,
+  0.634689683302797850, -0.772767109748463740, 0.634541495398360130,
+    -0.772888795764056220,
+  0.634393284163645490, -0.773010453362736990, 0.634245049604103330,
+    -0.773132082540033070,
+  0.634096791725183740, -0.773253683291472590, 0.633948510532337810,
+    -0.773375255612584470,
+  0.633800206031017280, -0.773496799498899050, 0.633651878226674900,
+    -0.773618314945947460,
+  0.633503527124764320, -0.773739801949261840, 0.633355152730740060,
+    -0.773861260504375540,
+  0.633206755050057190, -0.773982690606822790, 0.633058334088172250,
+    -0.774104092252138940,
+  0.632909889850541860, -0.774225465435860570, 0.632761422342624000,
+    -0.774346810153525020,
+  0.632612931569877520, -0.774468126400670860, 0.632464417537761840,
+    -0.774589414172837550,
+  0.632315880251737680, -0.774710673465565550, 0.632167319717266030,
+    -0.774831904274396850,
+  0.632018735939809060, -0.774953106594873820, 0.631870128924829850,
+    -0.775074280422540450,
+  0.631721498677792370, -0.775195425752941310, 0.631572845204161130,
+    -0.775316542581622410,
+  0.631424168509401860, -0.775437630904130430, 0.631275468598980870,
+    -0.775558690716013580,
+  0.631126745478365340, -0.775679722012820540, 0.630977999153023660,
+    -0.775800724790101540,
+  0.630829229628424470, -0.775921699043407580, 0.630680436910038060,
+    -0.776042644768290770,
+  0.630531621003334600, -0.776163561960304340, 0.630382781913785940,
+    -0.776284450615002400,
+  0.630233919646864480, -0.776405310727940390, 0.630085034208043290,
+    -0.776526142294674430,
+  0.629936125602796550, -0.776646945310762060, 0.629787193836599200,
+    -0.776767719771761510,
+  0.629638238914927100, -0.776888465673232440, 0.629489260843256740,
+    -0.777009183010735290,
+  0.629340259627065750, -0.777129871779831620, 0.629191235271832410,
+    -0.777250531976084070,
+  0.629042187783036000, -0.777371163595056200, 0.628893117166156480,
+    -0.777491766632312900,
+  0.628744023426674790, -0.777612341083419920, 0.628594906570072660,
+    -0.777732886943944050,
+  0.628445766601832710, -0.777853404209453040, 0.628296603527438440,
+    -0.777973892875515990,
+  0.628147417352374120, -0.778094352937702790, 0.627998208082124810,
+    -0.778214784391584420,
+  0.627848975722176570, -0.778335187232733090, 0.627699720278016240,
+    -0.778455561456721900,
+  0.627550441755131530, -0.778575907059124940, 0.627401140159011160,
+    -0.778696224035517530,
+  0.627251815495144190, -0.778816512381475870, 0.627102467769021010,
+    -0.778936772092577500,
+  0.626953096986132770, -0.779057003164400630, 0.626803703151971310,
+    -0.779177205592524680,
+  0.626654286272029460, -0.779297379372530300, 0.626504846351800930,
+    -0.779417524499998900,
+  0.626355383396779990, -0.779537640970513150, 0.626205897412462130,
+    -0.779657728779656780,
+  0.626056388404343520, -0.779777787923014440, 0.625906856377921210,
+    -0.779897818396171890,
+  0.625757301338692900, -0.780017820194715990, 0.625607723292157410,
+    -0.780137793314234500,
+  0.625458122243814360, -0.780257737750316590, 0.625308498199164010,
+    -0.780377653498552040,
+  0.625158851163707730, -0.780497540554531910, 0.625009181142947460,
+    -0.780617398913848290,
+  0.624859488142386450, -0.780737228572094380, 0.624709772167528100,
+    -0.780857029524864470,
+  0.624560033223877320, -0.780976801767753750, 0.624410271316939380,
+    -0.781096545296358410,
+  0.624260486452220650, -0.781216260106276090, 0.624110678635228510,
+    -0.781335946193104870,
+  0.623960847871470770, -0.781455603552444480, 0.623810994166456130,
+    -0.781575232179895550,
+  0.623661117525694640, -0.781694832071059390, 0.623511217954696550,
+    -0.781814403221538830,
+  0.623361295458973340, -0.781933945626937630, 0.623211350044037270,
+    -0.782053459282860300,
+  0.623061381715401370, -0.782172944184912900, 0.622911390478579460,
+    -0.782292400328702400,
+  0.622761376339086460, -0.782411827709836420, 0.622611339302437730,
+    -0.782531226323924240,
+  0.622461279374150080, -0.782650596166575730, 0.622311196559740320,
+    -0.782769937233402050,
+  0.622161090864726930, -0.782889249520015480, 0.622010962294628600,
+    -0.783008533022029110,
+  0.621860810854965360, -0.783127787735057310, 0.621710636551257690,
+    -0.783247013654715380,
+  0.621560439389027270, -0.783366210776619720, 0.621410219373796150,
+    -0.783485379096387820,
+  0.621259976511087660, -0.783604518609638200, 0.621109710806425740,
+    -0.783723629311990470,
+  0.620959422265335180, -0.783842711199065230, 0.620809110893341900,
+    -0.783961764266484010,
+  0.620658776695972140, -0.784080788509869950, 0.620508419678753360,
+    -0.784199783924846570,
+  0.620358039847213830, -0.784318750507038920, 0.620207637206882430,
+    -0.784437688252072720,
+  0.620057211763289210, -0.784556597155575240, 0.619906763521964830,
+    -0.784675477213174320,
+  0.619756292488440660, -0.784794328420499230, 0.619605798668249390,
+    -0.784913150773180020,
+  0.619455282066924020, -0.785031944266848080, 0.619304742689998690,
+    -0.785150708897135560,
+  0.619154180543008410, -0.785269444659675850, 0.619003595631488770,
+    -0.785388151550103550,
+  0.618852987960976320, -0.785506829564053930, 0.618702357537008640,
+    -0.785625478697163700,
+  0.618551704365123860, -0.785744098945070360, 0.618401028450860980,
+    -0.785862690303412600,
+  0.618250329799760250, -0.785981252767830150, 0.618099608417362110,
+    -0.786099786333963820,
+  0.617948864309208260, -0.786218290997455550, 0.617798097480841140,
+    -0.786336766753948260,
+  0.617647307937803980, -0.786455213599085770, 0.617496495685640910,
+    -0.786573631528513230,
+  0.617345660729896940, -0.786692020537876680, 0.617194803076117630,
+    -0.786810380622823490,
+  0.617043922729849760, -0.786928711779001700, 0.616893019696640790,
+    -0.787047014002060790,
+  0.616742093982038830, -0.787165287287650890, 0.616591145591593230,
+    -0.787283531631423620,
+  0.616440174530853650, -0.787401747029031320, 0.616289180805370980,
+    -0.787519933476127810,
+  0.616138164420696910, -0.787638090968367450, 0.615987125382383870,
+    -0.787756219501405950,
+  0.615836063695985090, -0.787874319070900110, 0.615684979367054570,
+    -0.787992389672507950,
+  0.615533872401147430, -0.788110431301888070, 0.615382742803819330,
+    -0.788228443954700490,
+  0.615231590580626820, -0.788346427626606230, 0.615080415737127460,
+    -0.788464382313267430,
+  0.614929218278879590, -0.788582308010347120, 0.614777998211442190,
+    -0.788700204713509660,
+  0.614626755540375050, -0.788818072418420170, 0.614475490271239160,
+    -0.788935911120745130,
+  0.614324202409595950, -0.789053720816151880, 0.614172891961007990,
+    -0.789171501500308790,
+  0.614021558931038490, -0.789289253168885650, 0.613870203325251440,
+    -0.789406975817552810,
+  0.613718825149211830, -0.789524669441982190, 0.613567424408485330,
+    -0.789642334037846340,
+  0.613416001108638590, -0.789759969600819070, 0.613264555255239150,
+    -0.789877576126575280,
+  0.613113086853854910, -0.789995153610791090, 0.612961595910055170,
+    -0.790112702049143300,
+  0.612810082429409710, -0.790230221437310030, 0.612658546417489290,
+    -0.790347711770970520,
+  0.612506987879865570, -0.790465173045804880, 0.612355406822110760,
+    -0.790582605257494460,
+  0.612203803249798060, -0.790700008401721610, 0.612052177168501580,
+    -0.790817382474169660,
+  0.611900528583796070, -0.790934727470523290, 0.611748857501257400,
+    -0.791052043386467950,
+  0.611597163926462020, -0.791169330217690090, 0.611445447864987110,
+    -0.791286587959877720,
+  0.611293709322411010, -0.791403816608719500, 0.611141948304312570,
+    -0.791521016159905220,
+  0.610990164816271770, -0.791638186609125770, 0.610838358863869280,
+    -0.791755327952073150,
+  0.610686530452686280, -0.791872440184440470, 0.610534679588305320,
+    -0.791989523301921850,
+  0.610382806276309480, -0.792106577300212390, 0.610230910522282620,
+    -0.792223602175008310,
+  0.610078992331809620, -0.792340597922007060, 0.609927051710476230,
+    -0.792457564536906970,
+  0.609775088663868430, -0.792574502015407580, 0.609623103197573730,
+    -0.792691410353209450,
+  0.609471095317180240, -0.792808289546014120, 0.609319065028276820,
+    -0.792925139589524260,
+  0.609167012336453210, -0.793041960479443640, 0.609014937247299940,
+    -0.793158752211477140,
+  0.608862839766408200, -0.793275514781330630, 0.608710719899370420,
+    -0.793392248184711100,
+  0.608558577651779450, -0.793508952417326660, 0.608406413029229260,
+    -0.793625627474886190,
+  0.608254226037314490, -0.793742273353100100, 0.608102016681630550,
+    -0.793858890047679620,
+  0.607949784967773740, -0.793975477554337170, 0.607797530901341140,
+    -0.794092035868785960,
+  0.607645254487930830, -0.794208564986740640, 0.607492955733141660,
+    -0.794325064903916520,
+  0.607340634642572930, -0.794441535616030590, 0.607188291221825160,
+    -0.794557977118800270,
+  0.607035925476499760, -0.794674389407944550, 0.606883537412198580,
+    -0.794790772479183170,
+  0.606731127034524480, -0.794907126328237010, 0.606578694349081400,
+    -0.795023450950828050,
+  0.606426239361473550, -0.795139746342679590, 0.606273762077306430,
+    -0.795256012499515500,
+  0.606121262502186230, -0.795372249417061190, 0.605968740641719790,
+    -0.795488457091042990,
+  0.605816196501515080, -0.795604635517188070, 0.605663630087180490,
+    -0.795720784691225090,
+  0.605511041404325550, -0.795836904608883460, 0.605358430458560530,
+    -0.795952995265893910,
+  0.605205797255496500, -0.796069056657987990, 0.605053141800745430,
+    -0.796185088780898440,
+  0.604900464099919930, -0.796301091630359110, 0.604747764158633410,
+    -0.796417065202104980,
+  0.604595041982500360, -0.796533009491872000, 0.604442297577135970,
+    -0.796648924495397150,
+  0.604289530948156070, -0.796764810208418720, 0.604136742101177630,
+    -0.796880666626675780,
+  0.603983931041818020, -0.796996493745908750, 0.603831097775695880,
+    -0.797112291561858920,
+  0.603678242308430370, -0.797228060070268700, 0.603525364645641550,
+    -0.797343799266881700,
+  0.603372464792950370, -0.797459509147442460, 0.603219542755978440,
+    -0.797575189707696590,
+  0.603066598540348280, -0.797690840943391040, 0.602913632151683140,
+    -0.797806462850273570,
+  0.602760643595607220, -0.797922055424093000, 0.602607632877745550,
+    -0.798037618660599410,
+  0.602454600003723860, -0.798153152555543750, 0.602301544979168550,
+    -0.798268657104678310,
+  0.602148467809707320, -0.798384132303756380, 0.601995368500968130,
+    -0.798499578148532010,
+  0.601842247058580030, -0.798614994634760820, 0.601689103488173060,
+    -0.798730381758199210,
+  0.601535937795377730, -0.798845739514604580, 0.601382749985825420,
+    -0.798961067899735760,
+  0.601229540065148620, -0.799076366909352350, 0.601076308038980160,
+    -0.799191636539215210,
+  0.600923053912954090, -0.799306876785086160, 0.600769777692705230,
+    -0.799422087642728040,
+  0.600616479383868970, -0.799537269107905010, 0.600463158992081690,
+    -0.799652421176382130,
+  0.600309816522980430, -0.799767543843925680, 0.600156451982203350,
+    -0.799882637106302810,
+  0.600003065375389060, -0.799997700959281910, 0.599849656708177360,
+    -0.800112735398632370,
+  0.599696225986208310, -0.800227740420124790, 0.599542773215123390,
+    -0.800342716019530660,
+  0.599389298400564540, -0.800457662192622710, 0.599235801548174570,
+    -0.800572578935174750,
+  0.599082282663597310, -0.800687466242961500, 0.598928741752476900,
+    -0.800802324111759110,
+  0.598775178820458720, -0.800917152537344300, 0.598621593873188920,
+    -0.801031951515495330,
+  0.598467986916314310, -0.801146721041991250, 0.598314357955482600,
+    -0.801261461112612540,
+  0.598160706996342380, -0.801376171723140130, 0.598007034044542700,
+    -0.801490852869356840,
+  0.597853339105733910, -0.801605504547046040, 0.597699622185566830,
+    -0.801720126751992330,
+  0.597545883289693270, -0.801834719479981310, 0.597392122423765710,
+    -0.801949282726799660,
+  0.597238339593437530, -0.802063816488235440, 0.597084534804362740,
+    -0.802178320760077450,
+  0.596930708062196500, -0.802292795538115720, 0.596776859372594500,
+    -0.802407240818141300,
+  0.596622988741213330, -0.802521656595946320, 0.596469096173710360,
+    -0.802636042867324150,
+  0.596315181675743820, -0.802750399628069160, 0.596161245252972540,
+    -0.802864726873976590,
+  0.596007286911056530, -0.802979024600843140, 0.595853306655656390,
+    -0.803093292804466400,
+  0.595699304492433470, -0.803207531480644830, 0.595545280427049790,
+    -0.803321740625178470,
+  0.595391234465168730, -0.803435920233868120, 0.595237166612453850,
+    -0.803550070302515570,
+  0.595083076874569960, -0.803664190826924090, 0.594928965257182420,
+    -0.803778281802897570,
+  0.594774831765957580, -0.803892343226241260, 0.594620676406562240,
+    -0.804006375092761520,
+  0.594466499184664540, -0.804120377398265700, 0.594312300105932830,
+    -0.804234350138562260,
+  0.594158079176036800, -0.804348293309460780, 0.594003836400646690,
+    -0.804462206906771840,
+  0.593849571785433630, -0.804576090926307000, 0.593695285336069300,
+    -0.804689945363879500,
+  0.593540977058226390, -0.804803770215302810, 0.593386646957578480,
+    -0.804917565476392150,
+  0.593232295039799800, -0.805031331142963660, 0.593077921310565580,
+    -0.805145067210834120,
+  0.592923525775551410, -0.805258773675822210, 0.592769108440434070,
+    -0.805372450533747060,
+  0.592614669310891130, -0.805486097780429120, 0.592460208392600940,
+    -0.805599715411689950,
+  0.592305725691242400, -0.805713303423352120, 0.592151221212495640,
+    -0.805826861811239300,
+  0.591996694962040990, -0.805940390571176280, 0.591842146945560250,
+    -0.806053889698988950,
+  0.591687577168735550, -0.806167359190504310, 0.591532985637249990,
+    -0.806280799041550370,
+  0.591378372356787580, -0.806394209247956240, 0.591223737333032910,
+    -0.806507589805552260,
+  0.591069080571671510, -0.806620940710169650, 0.590914402078389520,
+    -0.806734261957640750,
+  0.590759701858874280, -0.806847553543799220, 0.590604979918813440,
+    -0.806960815464479620,
+  0.590450236263895920, -0.807074047715517610, 0.590295470899810940,
+    -0.807187250292749850,
+  0.590140683832248940, -0.807300423192014450, 0.589985875066900920,
+    -0.807413566409150190,
+  0.589831044609458900, -0.807526679939997160, 0.589676192465615420,
+    -0.807639763780396370,
+  0.589521318641063940, -0.807752817926190360, 0.589366423141498790,
+    -0.807865842373222120,
+  0.589211505972615070, -0.807978837117336310, 0.589056567140108460,
+    -0.808091802154378260,
+  0.588901606649675840, -0.808204737480194720, 0.588746624507014650,
+    -0.808317643090633250,
+  0.588591620717822890, -0.808430518981542720, 0.588436595287799900,
+    -0.808543365148773010,
+  0.588281548222645330, -0.808656181588174980, 0.588126479528059850,
+    -0.808768968295600850,
+  0.587971389209745120, -0.808881725266903610, 0.587816277273403020,
+    -0.808994452497937560,
+  0.587661143724736770, -0.809107149984558130, 0.587505988569450020,
+    -0.809219817722621750,
+  0.587350811813247660, -0.809332455707985840, 0.587195613461834910,
+    -0.809445063936509170,
+  0.587040393520918080, -0.809557642404051260, 0.586885151996203950,
+    -0.809670191106473090,
+  0.586729888893400500, -0.809782710039636420, 0.586574604218216280,
+    -0.809895199199404450,
+  0.586419297976360500, -0.810007658581641140, 0.586263970173543700,
+    -0.810120088182211600,
+  0.586108620815476430, -0.810232487996982330, 0.585953249907870680,
+    -0.810344858021820550,
+  0.585797857456438860, -0.810457198252594770, 0.585642443466894420,
+    -0.810569508685174630,
+  0.585487007944951450, -0.810681789315430670, 0.585331550896324940,
+    -0.810794040139234730,
+  0.585176072326730410, -0.810906261152459670, 0.585020572241884530,
+    -0.811018452350979470,
+  0.584865050647504490, -0.811130613730669190, 0.584709507549308500,
+    -0.811242745287404810,
+  0.584553942953015330, -0.811354847017063730, 0.584398356864344710,
+    -0.811466918915524250,
+  0.584242749289016980, -0.811578960978665890, 0.584087120232753550,
+    -0.811690973202369050,
+  0.583931469701276300, -0.811802955582515360, 0.583775797700308070,
+    -0.811914908114987680,
+  0.583620104235572760, -0.812026830795669730, 0.583464389312794430,
+    -0.812138723620446480,
+  0.583308652937698290, -0.812250586585203880, 0.583152895116010540,
+    -0.812362419685829120,
+  0.582997115853457700, -0.812474222918210480, 0.582841315155767650,
+    -0.812585996278237020,
+  0.582685493028668460, -0.812697739761799490, 0.582529649477889320,
+    -0.812809453364789160,
+  0.582373784509160220, -0.812921137083098770, 0.582217898128211790,
+    -0.813032790912621930,
+  0.582061990340775550, -0.813144414849253590, 0.581906061152583920,
+    -0.813256008888889380,
+  0.581750110569369760, -0.813367573027426570, 0.581594138596866930,
+    -0.813479107260763220,
+  0.581438145240810280, -0.813590611584798510, 0.581282130506935110,
+    -0.813702085995432700,
+  0.581126094400977620, -0.813813530488567190, 0.580970036928674880,
+    -0.813924945060104490,
+  0.580813958095764530, -0.814036329705948300, 0.580657857907985410,
+    -0.814147684422003360,
+  0.580501736371076600, -0.814259009204175270, 0.580345593490778300,
+    -0.814370304048371070,
+  0.580189429272831680, -0.814481568950498610, 0.580033243722978150,
+    -0.814592803906467270,
+  0.579877036846960350, -0.814704008912187080, 0.579720808650521560,
+    -0.814815183963569330,
+  0.579564559139405740, -0.814926329056526620, 0.579408288319357980,
+    -0.815037444186972220,
+  0.579251996196123550, -0.815148529350820830, 0.579095682775449210,
+    -0.815259584543988280,
+  0.578939348063081890, -0.815370609762391290, 0.578782992064769690,
+    -0.815481605001947770,
+  0.578626614786261430, -0.815592570258576680, 0.578470216233306740,
+    -0.815703505528198260,
+  0.578313796411655590, -0.815814410806733780, 0.578157355327059360,
+    -0.815925286090105390,
+  0.578000892985269910, -0.816036131374236700, 0.577844409392039850,
+    -0.816146946655052160,
+  0.577687904553122800, -0.816257731928477390, 0.577531378474272830,
+    -0.816368487190439200,
+  0.577374831161244880, -0.816479212436865390, 0.577218262619794920,
+    -0.816589907663684890,
+  0.577061672855679550, -0.816700572866827850, 0.576905061874655960,
+    -0.816811208042225290,
+  0.576748429682482520, -0.816921813185809480, 0.576591776284917870,
+    -0.817032388293513880,
+  0.576435101687721830, -0.817142933361272970, 0.576278405896654910,
+    -0.817253448385022230,
+  0.576121688917478390, -0.817363933360698460, 0.575964950755954330,
+    -0.817474388284239240,
+  0.575808191417845340, -0.817584813151583710, 0.575651410908915250,
+    -0.817695207958671680,
+  0.575494609234928230, -0.817805572701444270, 0.575337786401649560,
+    -0.817915907375843740,
+  0.575180942414845190, -0.818026211977813440, 0.575024077280281820,
+    -0.818136486503297620,
+  0.574867191003726740, -0.818246730948241960, 0.574710283590948450,
+    -0.818356945308593150,
+  0.574553355047715760, -0.818467129580298660, 0.574396405379798750,
+    -0.818577283759307490,
+  0.574239434592967890, -0.818687407841569570, 0.574082442692994470,
+    -0.818797501823036010,
+  0.573925429685650750, -0.818907565699658950, 0.573768395576709560,
+    -0.819017599467391500,
+  0.573611340371944610, -0.819127603122188240, 0.573454264077130400,
+    -0.819237576660004520,
+  0.573297166698042320, -0.819347520076796900, 0.573140048240456060,
+    -0.819457433368523280,
+  0.572982908710148680, -0.819567316531142230, 0.572825748112897550,
+    -0.819677169560613760,
+  0.572668566454481160, -0.819786992452898990, 0.572511363740678790,
+    -0.819896785203959810,
+  0.572354139977270030, -0.820006547809759680, 0.572196895170035580,
+    -0.820116280266262710,
+  0.572039629324757050, -0.820225982569434690, 0.571882342447216590,
+    -0.820335654715241840,
+  0.571725034543197120, -0.820445296699652050, 0.571567705618482580,
+    -0.820554908518633890,
+  0.571410355678857340, -0.820664490168157460, 0.571252984730106660,
+    -0.820774041644193650,
+  0.571095592778016690, -0.820883562942714580, 0.570938179828374360,
+    -0.820993054059693470,
+  0.570780745886967370, -0.821102514991104650, 0.570623290959583860,
+    -0.821211945732923550,
+  0.570465815052012990, -0.821321346281126740, 0.570308318170045010,
+    -0.821430716631691760,
+  0.570150800319470300, -0.821540056780597610, 0.569993261506080650,
+    -0.821649366723823830,
+  0.569835701735668110, -0.821758646457351640, 0.569678121014025710,
+    -0.821867895977163140,
+  0.569520519346947250, -0.821977115279241550, 0.569362896740227330,
+    -0.822086304359571090,
+  0.569205253199661200, -0.822195463214137170, 0.569047588731045220,
+    -0.822304591838926350,
+  0.568889903340175970, -0.822413690229926390, 0.568732197032851160,
+    -0.822522758383125940,
+  0.568574469814869250, -0.822631796294514990, 0.568416721692029390,
+    -0.822740803960084420,
+  0.568258952670131490, -0.822849781375826320, 0.568101162754976570,
+    -0.822958728537734000,
+  0.567943351952365670, -0.823067645441801670, 0.567785520268101250,
+    -0.823176532084024860,
+  0.567627667707986230, -0.823285388460400110, 0.567469794277824620,
+    -0.823394214566925080,
+  0.567311899983420800, -0.823503010399598390, 0.567153984830580100,
+    -0.823611775954420260,
+  0.566996048825108680, -0.823720511227391320, 0.566838091972813320,
+    -0.823829216214513990,
+  0.566680114279501710, -0.823937890911791370, 0.566522115750982100,
+    -0.824046535315227760,
+  0.566364096393063950, -0.824155149420828570, 0.566206056211556840,
+    -0.824263733224600450,
+  0.566047995212271560, -0.824372286722551250, 0.565889913401019570,
+    -0.824480809910689500,
+  0.565731810783613230, -0.824589302785025290, 0.565573687365865440,
+    -0.824697765341569470,
+  0.565415543153589770, -0.824806197576334330, 0.565257378152600910,
+    -0.824914599485333080,
+  0.565099192368714090, -0.825022971064580220, 0.564940985807745320,
+    -0.825131312310090960,
+  0.564782758475511400, -0.825239623217882130, 0.564624510377830120,
+    -0.825347903783971380,
+  0.564466241520519500, -0.825456154004377440, 0.564307951909398750,
+    -0.825564373875120490,
+  0.564149641550287680, -0.825672563392221390, 0.563991310449007080,
+    -0.825780722551702430,
+  0.563832958611378170, -0.825888851349586780, 0.563674586043223180,
+    -0.825996949781898970,
+  0.563516192750364910, -0.826105017844664610, 0.563357778738627020,
+    -0.826213055533910110,
+  0.563199344013834090, -0.826321062845663420, 0.563040888581811230,
+    -0.826429039775953390,
+  0.562882412448384550, -0.826536986320809960, 0.562723915619380400,
+    -0.826644902476264210,
+  0.562565398100626560, -0.826752788238348520, 0.562406859897951140,
+    -0.826860643603096080,
+  0.562248301017183150, -0.826968468566541490, 0.562089721464152480,
+    -0.827076263124720270,
+  0.561931121244689470, -0.827184027273669020, 0.561772500364625450,
+    -0.827291761009425810,
+  0.561613858829792420, -0.827399464328029350, 0.561455196646023280,
+    -0.827507137225519830,
+  0.561296513819151470, -0.827614779697938400, 0.561137810355011530,
+    -0.827722391741327220,
+  0.560979086259438260, -0.827829973351729810, 0.560820341538267540,
+    -0.827937524525190870,
+  0.560661576197336030, -0.828045045257755800, 0.560502790242481060,
+    -0.828152535545471410,
+  0.560343983679540860, -0.828259995384385550, 0.560185156514354080,
+    -0.828367424770547480,
+  0.560026308752760380, -0.828474823700007130, 0.559867440400600320,
+    -0.828582192168815790,
+  0.559708551463714790, -0.828689530173025710, 0.559549641947945870,
+    -0.828796837708690610,
+  0.559390711859136140, -0.828904114771864870, 0.559231761203129010,
+    -0.829011361358604430,
+  0.559072789985768480, -0.829118577464965980, 0.558913798212899770,
+    -0.829225763087007570,
+  0.558754785890368310, -0.829332918220788250, 0.558595753024020760,
+    -0.829440042862368170,
+  0.558436699619704100, -0.829547137007808800, 0.558277625683266330,
+    -0.829654200653172640,
+  0.558118531220556100, -0.829761233794523050, 0.557959416237422960,
+    -0.829868236427924840,
+  0.557800280739717100, -0.829975208549443840, 0.557641124733289420,
+    -0.830082150155146970,
+  0.557481948223991660, -0.830189061241102370, 0.557322751217676160,
+    -0.830295941803379070,
+  0.557163533720196340, -0.830402791838047550, 0.557004295737406060,
+    -0.830509611341179070,
+  0.556845037275160100, -0.830616400308846200, 0.556685758339313890,
+    -0.830723158737122880,
+  0.556526458935723720, -0.830829886622083570, 0.556367139070246490,
+    -0.830936583959804410,
+  0.556207798748739930, -0.831043250746362320, 0.556048437977062720,
+    -0.831149886977835430,
+  0.555889056761073920, -0.831256492650303210, 0.555729655106633520,
+    -0.831363067759845920,
+  0.555570233019602290, -0.831469612302545240, 0.555410790505841740,
+    -0.831576126274483630,
+  0.555251327571214090, -0.831682609671745120, 0.555091844221582420,
+    -0.831789062490414400,
+  0.554932340462810370, -0.831895484726577590, 0.554772816300762580,
+    -0.832001876376321840,
+  0.554613271741304040, -0.832108237435735480, 0.554453706790301040,
+    -0.832214567900907980,
+  0.554294121453620110, -0.832320867767929680, 0.554134515737128910,
+    -0.832427137032892280,
+  0.553974889646695610, -0.832533375691888680, 0.553815243188189090,
+    -0.832639583741012770,
+  0.553655576367479310, -0.832745761176359460, 0.553495889190436570,
+    -0.832851907994024980,
+  0.553336181662932410, -0.832958024190106670, 0.553176453790838460,
+    -0.833064109760702890,
+  0.553016705580027580, -0.833170164701913190, 0.552856937036373290,
+    -0.833276189009838240,
+  0.552697148165749770, -0.833382182680579730, 0.552537338974032120,
+    -0.833488145710240770,
+  0.552377509467096070, -0.833594078094925140, 0.552217659650817930,
+    -0.833699979830738290,
+  0.552057789531074980, -0.833805850913786340, 0.551897899113745320,
+    -0.833911691340176730,
+  0.551737988404707450, -0.834017501106018130, 0.551578057409841000,
+    -0.834123280207419990,
+  0.551418106135026060, -0.834229028640493420, 0.551258134586143700,
+    -0.834334746401350080,
+  0.551098142769075430, -0.834440433486103190, 0.550938130689703880,
+    -0.834546089890866760,
+  0.550778098353912230, -0.834651715611756330, 0.550618045767584330,
+    -0.834757310644888230,
+  0.550457972936604810, -0.834862874986380010, 0.550297879866859190,
+    -0.834968408632350450,
+  0.550137766564233630, -0.835073911578919300, 0.549977633034615000,
+    -0.835179383822207580,
+  0.549817479283891020, -0.835284825358337370, 0.549657305317949980,
+    -0.835390236183431780,
+  0.549497111142680960, -0.835495616293615350, 0.549336896763974010,
+    -0.835600965685013410,
+  0.549176662187719770, -0.835706284353752600, 0.549016407419809390,
+    -0.835811572295960590,
+  0.548856132466135290, -0.835916829507766360, 0.548695837332590090,
+    -0.836022055985299880,
+  0.548535522025067390, -0.836127251724692160, 0.548375186549461600,
+    -0.836232416722075600,
+  0.548214830911667780, -0.836337550973583530, 0.548054455117581880,
+    -0.836442654475350380,
+  0.547894059173100190, -0.836547727223511890, 0.547733643084120200,
+    -0.836652769214204950,
+  0.547573206856539870, -0.836757780443567190, 0.547412750496257930,
+    -0.836862760907737810,
+  0.547252274009174090, -0.836967710602857020, 0.547091777401188530,
+    -0.837072629525066000,
+  0.546931260678202190, -0.837177517670507190, 0.546770723846116800,
+    -0.837282375035324320,
+  0.546610166910834860, -0.837387201615661940, 0.546449589878259760,
+    -0.837491997407665890,
+  0.546288992754295210, -0.837596762407483040, 0.546128375544846060,
+    -0.837701496611261700,
+  0.545967738255817680, -0.837806200015150940, 0.545807080893116140,
+    -0.837910872615301060,
+  0.545646403462648590, -0.838015514407863700, 0.545485705970322530,
+    -0.838120125388991500,
+  0.545324988422046460, -0.838224705554837970, 0.545164250823729320,
+    -0.838329254901558300,
+  0.545003493181281160, -0.838433773425308340, 0.544842715500612470,
+    -0.838538261122245170,
+  0.544681917787634530, -0.838642717988527300, 0.544521100048259710,
+    -0.838747144020313920,
+  0.544360262288400400, -0.838851539213765760, 0.544199404513970420,
+    -0.838955903565044350,
+  0.544038526730883930, -0.839060237070312630, 0.543877628945055980,
+    -0.839164539725734570,
+  0.543716711162402390, -0.839268811527475230, 0.543555773388839650,
+    -0.839373052471700690,
+  0.543394815630284800, -0.839477262554578550, 0.543233837892656000,
+    -0.839581441772277120,
+  0.543072840181871850, -0.839685590120966110, 0.542911822503851730,
+    -0.839789707596816260,
+  0.542750784864516000, -0.839893794195999410, 0.542589727269785270,
+    -0.839997849914688730,
+  0.542428649725581360, -0.840101874749058400, 0.542267552237826520,
+    -0.840205868695283580,
+  0.542106434812444030, -0.840309831749540770, 0.541945297455357470,
+    -0.840413763908007480,
+  0.541784140172491660, -0.840517665166862440, 0.541622962969771640,
+    -0.840621535522285690,
+  0.541461765853123560, -0.840725374970458070, 0.541300548828474120,
+    -0.840829183507561640,
+  0.541139311901750910, -0.840932961129779670, 0.540978055078882190,
+    -0.841036707833296650,
+  0.540816778365796670, -0.841140423614298080, 0.540655481768424260,
+    -0.841244108468970580,
+  0.540494165292695230, -0.841347762393501950, 0.540332828944540820,
+    -0.841451385384081260,
+  0.540171472729892970, -0.841554977436898330, 0.540010096654684020,
+    -0.841658538548144760,
+  0.539848700724847700, -0.841762068714012490, 0.539687284946317570,
+    -0.841865567930695340,
+  0.539525849325029010, -0.841969036194387680, 0.539364393866917150,
+    -0.842072473501285450,
+  0.539202918577918240, -0.842175879847585570, 0.539041423463969550,
+    -0.842279255229485880,
+  0.538879908531008420, -0.842382599643185960, 0.538718373784973670,
+    -0.842485913084885630,
+  0.538556819231804210, -0.842589195550786600, 0.538395244877439950,
+    -0.842692447037091560,
+  0.538233650727821700, -0.842795667540004120, 0.538072036788890600,
+    -0.842898857055729310,
+  0.537910403066588990, -0.843002015580472830, 0.537748749566859470,
+    -0.843105143110442050,
+  0.537587076295645510, -0.843208239641845440, 0.537425383258891660,
+    -0.843311305170892030,
+  0.537263670462542530, -0.843414339693792760, 0.537101937912544240,
+    -0.843517343206759080,
+  0.536940185614843020, -0.843620315706004040, 0.536778413575385920,
+    -0.843723257187741550,
+  0.536616621800121150, -0.843826167648186740, 0.536454810294997090,
+    -0.843929047083555870,
+  0.536292979065963180, -0.844031895490066410, 0.536131128118969350,
+    -0.844134712863936930,
+  0.535969257459966710, -0.844237499201387020, 0.535807367094906620,
+    -0.844340254498637590,
+  0.535645457029741090, -0.844442978751910660, 0.535483527270423370,
+    -0.844545671957429240,
+  0.535321577822907010, -0.844648334111417820, 0.535159608693146720,
+    -0.844750965210101510,
+  0.534997619887097260, -0.844853565249707010, 0.534835611410714670,
+    -0.844956134226462100,
+  0.534673583269955510, -0.845058672136595470, 0.534511535470777010,
+    -0.845161178976337140,
+  0.534349468019137520, -0.845263654741918220, 0.534187380920995600,
+    -0.845366099429570970,
+  0.534025274182310380, -0.845468513035528830, 0.533863147809042650,
+    -0.845570895556026270,
+  0.533701001807152960, -0.845673246987299070, 0.533538836182603120,
+    -0.845775567325583900,
+  0.533376650941355560, -0.845877856567118890, 0.533214446089372960,
+    -0.845980114708143270,
+  0.533052221632619670, -0.846082341744896940, 0.532889977577059690,
+    -0.846184537673621670,
+  0.532727713928658810, -0.846286702490559710, 0.532565430693382580,
+    -0.846388836191954930,
+  0.532403127877198010, -0.846490938774052020, 0.532240805486072330,
+    -0.846593010233097190,
+  0.532078463525973540, -0.846695050565337450, 0.531916102002870760,
+    -0.846797059767020910,
+  0.531753720922733320, -0.846899037834397350, 0.531591320291531780,
+    -0.847000984763716880,
+  0.531428900115236910, -0.847102900551231500, 0.531266460399820390,
+    -0.847204785193193980,
+  0.531104001151255000, -0.847306638685858320, 0.530941522375513510,
+    -0.847408461025479730,
+  0.530779024078570250, -0.847510252208314330, 0.530616506266399450,
+    -0.847612012230619660,
+  0.530453968944976320, -0.847713741088654270, 0.530291412120277420,
+    -0.847815438778677930,
+  0.530128835798278850, -0.847917105296951410, 0.529966239984958620,
+    -0.848018740639736810,
+  0.529803624686294830, -0.848120344803297120, 0.529640989908265910,
+    -0.848221917783896990,
+  0.529478335656852090, -0.848323459577801530, 0.529315661938033140,
+    -0.848424970181277600,
+  0.529152968757790720, -0.848526449590592650, 0.528990256122106040,
+    -0.848627897802015860,
+  0.528827524036961980, -0.848729314811817010, 0.528664772508341540,
+    -0.848830700616267530,
+  0.528502001542228480, -0.848932055211639610, 0.528339211144607690,
+    -0.849033378594206690,
+  0.528176401321464370, -0.849134670760243630, 0.528013572078784740,
+    -0.849235931706025960,
+  0.527850723422555460, -0.849337161427830670, 0.527687855358763720,
+    -0.849438359921935950,
+  0.527524967893398200, -0.849539527184620890, 0.527362061032447430,
+    -0.849640663212165910,
+  0.527199134781901390, -0.849741768000852440, 0.527036189147750190,
+    -0.849842841546963210,
+  0.526873224135984700, -0.849943883846782210, 0.526710239752597010,
+    -0.850044894896594070,
+  0.526547236003579330, -0.850145874692685210, 0.526384212894925210,
+    -0.850246823231342710,
+  0.526221170432628170, -0.850347740508854980, 0.526058108622682760,
+    -0.850448626521511650,
+  0.525895027471084740, -0.850549481265603370, 0.525731926983829640,
+    -0.850650304737422200,
+  0.525568807166914680, -0.850751096933260790, 0.525405668026336810,
+    -0.850851857849413640,
+  0.525242509568094710, -0.850952587482175730, 0.525079331798186890,
+    -0.851053285827843790,
+  0.524916134722612890, -0.851153952882715340, 0.524752918347373360,
+    -0.851254588643089120,
+  0.524589682678468840, -0.851355193105265200, 0.524426427721901510,
+    -0.851455766265544310,
+  0.524263153483673470, -0.851556308120228870, 0.524099859969787810,
+    -0.851656818665622370,
+  0.523936547186248600, -0.851757297898029120, 0.523773215139060170,
+    -0.851857745813754840,
+  0.523609863834228030, -0.851958162409106380, 0.523446493277757940,
+    -0.852058547680391580,
+  0.523283103475656430, -0.852158901623919830, 0.523119694433931250,
+    -0.852259224236001090,
+  0.522956266158590140, -0.852359515512947090, 0.522792818655642200,
+    -0.852459775451070100,
+  0.522629351931096720, -0.852560004046683970, 0.522465865990963900,
+    -0.852660201296103760,
+  0.522302360841254700, -0.852760367195645300, 0.522138836487980650,
+    -0.852860501741625860,
+  0.521975292937154390, -0.852960604930363630, 0.521811730194788550,
+    -0.853060676758178320,
+  0.521648148266897090, -0.853160717221390420, 0.521484547159494550,
+    -0.853260726316321770,
+  0.521320926878595550, -0.853360704039295430, 0.521157287430216610,
+    -0.853460650386635320,
+  0.520993628820373810, -0.853560565354666840, 0.520829951055084780,
+    -0.853660448939716270,
+  0.520666254140367270, -0.853760301138111300, 0.520502538082239790,
+    -0.853860121946180660,
+  0.520338802886721960, -0.853959911360254060, 0.520175048559833760,
+    -0.854059669376662780,
+  0.520011275107596040, -0.854159395991738730, 0.519847482536030300,
+    -0.854259091201815420,
+  0.519683670851158520, -0.854358755003227440, 0.519519840059003870,
+    -0.854458387392310060,
+  0.519355990165589530, -0.854557988365400530, 0.519192121176940360,
+    -0.854657557918836460,
+  0.519028233099080970, -0.854757096048957110, 0.518864325938037000,
+    -0.854856602752102850,
+  0.518700399699835170, -0.854956078024614820, 0.518536454390502110,
+    -0.855055521862835950,
+  0.518372490016066220, -0.855154934263109620, 0.518208506582555460,
+    -0.855254315221781080,
+  0.518044504095999340, -0.855353664735196030, 0.517880482562427800,
+    -0.855452982799701830,
+  0.517716441987871150, -0.855552269411646970, 0.517552382378360990,
+    -0.855651524567380690,
+  0.517388303739929060, -0.855750748263253920, 0.517224206078608310,
+    -0.855849940495618240,
+  0.517060089400432130, -0.855949101260826790, 0.516895953711434260,
+    -0.856048230555233820,
+  0.516731799017649980, -0.856147328375194470, 0.516567625325114350,
+    -0.856246394717065210,
+  0.516403432639863990, -0.856345429577203610, 0.516239220967935620,
+    -0.856444432951968480,
+  0.516074990315366630, -0.856543404837719960, 0.515910740688195650,
+    -0.856642345230818720,
+  0.515746472092461380, -0.856741254127627470, 0.515582184534203790,
+    -0.856840131524509220,
+  0.515417878019463150, -0.856938977417828650, 0.515253552554280290,
+    -0.857037791803951680,
+  0.515089208144697270, -0.857136574679244870, 0.514924844796756490,
+    -0.857235326040076460,
+  0.514760462516501200, -0.857334045882815590, 0.514596061309975040,
+    -0.857432734203832700,
+  0.514431641183222930, -0.857531390999499040, 0.514267202142289830,
+    -0.857630016266187620,
+  0.514102744193221660, -0.857728610000272120, 0.513938267342065490,
+    -0.857827172198127320,
+  0.513773771594868030, -0.857925702856129790, 0.513609256957677900,
+    -0.858024201970656540,
+  0.513444723436543570, -0.858122669538086020, 0.513280171037514330,
+    -0.858221105554798250,
+  0.513115599766640560, -0.858319510017173440, 0.512951009629972860,
+    -0.858417882921594040,
+  0.512786400633563070, -0.858516224264442740, 0.512621772783463100,
+    -0.858614534042104080,
+  0.512457126085725800, -0.858712812250963520, 0.512292460546404980,
+    -0.858811058887407500,
+  0.512127776171554690, -0.858909273947823900, 0.511963072967230200,
+    -0.859007457428601410,
+  0.511798350939487000, -0.859105609326130340, 0.511633610094381350,
+    -0.859203729636801920,
+  0.511468850437970520, -0.859301818357008360, 0.511304071976311890,
+    -0.859399875483143450,
+  0.511139274715464390, -0.859497901011601620, 0.510974458661486720,
+    -0.859595894938779080,
+  0.510809623820439040, -0.859693857261072610, 0.510644770198381730,
+    -0.859791787974880540,
+  0.510479897801375700, -0.859889687076602290, 0.510315006635483350,
+    -0.859987554562638200,
+  0.510150096706766700, -0.860085390429390140, 0.509985168021289570,
+    -0.860183194673260880,
+  0.509820220585115560, -0.860280967290654510, 0.509655254404309250,
+    -0.860378708277976130,
+  0.509490269484936360, -0.860476417631632070, 0.509325265833062480,
+    -0.860574095348029980,
+  0.509160243454754750, -0.860671741423578380, 0.508995202356080310,
+    -0.860769355854687060,
+  0.508830142543106990, -0.860866938637767310, 0.508665064021904260,
+    -0.860964489769230900,
+  0.508499966798540810, -0.861062009245491480, 0.508334850879087470,
+    -0.861159497062963350,
+  0.508169716269614710, -0.861256953218062060, 0.508004562976194010,
+    -0.861354377707204800,
+  0.507839391004897940, -0.861451770526809210, 0.507674200361798890,
+    -0.861549131673294720,
+  0.507508991052970870, -0.861646461143081300, 0.507343763084487920,
+    -0.861743758932590700,
+  0.507178516462425290, -0.861841025038245330, 0.507013251192858340,
+    -0.861938259456469180,
+  0.506847967281863320, -0.862035462183687210, 0.506682664735517600,
+    -0.862132633216325380,
+  0.506517343559898530, -0.862229772550811240, 0.506352003761084800,
+    -0.862326880183573060,
+  0.506186645345155450, -0.862423956111040500, 0.506021268318189830,
+    -0.862521000329644520,
+  0.505855872686268860, -0.862618012835816740, 0.505690458455473340,
+    -0.862714993625990690,
+  0.505525025631885510, -0.862811942696600330, 0.505359574221587390,
+    -0.862908860044081290,
+  0.505194104230662240, -0.863005745664870210, 0.505028615665194300,
+    -0.863102599555404800,
+  0.504863108531267480, -0.863199421712124160, 0.504697582834967680,
+    -0.863296212131468230,
+  0.504532038582380380, -0.863392970809878310, 0.504366475779592150,
+    -0.863489697743797140,
+  0.504200894432690560, -0.863586392929667990, 0.504035294547763080,
+    -0.863683056363935940,
+  0.503869676130898950, -0.863779688043046610, 0.503704039188186960,
+    -0.863876287963447510,
+  0.503538383725717580, -0.863972856121586700, 0.503372709749581150,
+    -0.864069392513913680,
+  0.503207017265869030, -0.864165897136879300, 0.503041306280673450,
+    -0.864262369986934950,
+  0.502875576800086880, -0.864358811060534030, 0.502709828830203100,
+    -0.864455220354130250,
+  0.502544062377115800, -0.864551597864179230, 0.502378277446919870,
+    -0.864647943587137480,
+  0.502212474045710900, -0.864744257519462380, 0.502046652179584660,
+    -0.864840539657612980,
+  0.501880811854638400, -0.864936789998049020, 0.501714953076969230,
+    -0.865033008537231750,
+  0.501549075852675390, -0.865129195271623690, 0.501383180187855880,
+    -0.865225350197688090,
+  0.501217266088609950, -0.865321473311889800, 0.501051333561038040,
+    -0.865417564610694410,
+  0.500885382611240940, -0.865513624090568980, 0.500719413245319880,
+    -0.865609651747981880,
+  0.500553425469377640, -0.865705647579402270, 0.500387419289516580,
+    -0.865801611581300760,
+  0.500221394711840680, -0.865897543750148820, 0.500055351742453860,
+    -0.865993444082419520,
+  0.499889290387461380, -0.866089312574586770, 0.499723210652968710,
+    -0.866185149223125730,
+  0.499557112545081890, -0.866280954024512990, 0.499390996069908220,
+    -0.866376726975225830,
+  0.499224861233555030, -0.866472468071743050, 0.499058708042130930,
+    -0.866568177310544360,
+  0.498892536501744750, -0.866663854688111020, 0.498726346618505960,
+    -0.866759500200925290,
+  0.498560138398525200, -0.866855113845470320, 0.498393911847913150,
+    -0.866950695618231020,
+  0.498227666972781870, -0.867046245515692650, 0.498061403779243520,
+    -0.867141763534342360,
+  0.497895122273410930, -0.867237249670668400, 0.497728822461398100,
+    -0.867332703921159690,
+  0.497562504349319090, -0.867428126282306920, 0.497396167943289340,
+    -0.867523516750601460,
+  0.497229813249424340, -0.867618875322536230, 0.497063440273840310,
+    -0.867714201994605140,
+  0.496897049022654640, -0.867809496763303210, 0.496730639501984710,
+    -0.867904759625126920,
+  0.496564211717949340, -0.867999990576573400, 0.496397765676667160,
+    -0.868095189614141670,
+  0.496231301384258310, -0.868190356734331310, 0.496064818846843060,
+    -0.868285491933643240,
+  0.495898318070542240, -0.868380595208579800, 0.495731799061478020,
+    -0.868475666555644120,
+  0.495565261825772490, -0.868570705971340900, 0.495398706369549080,
+    -0.868665713452175580,
+  0.495232132698931350, -0.868760688994655190, 0.495065540820043610,
+    -0.868855632595287750,
+  0.494898930739011310, -0.868950544250582380, 0.494732302461959820,
+    -0.869045423957049530,
+  0.494565655995016010, -0.869140271711200560, 0.494398991344306760,
+    -0.869235087509548250,
+  0.494232308515959730, -0.869329871348606730, 0.494065607516103730,
+    -0.869424623224890780,
+  0.493898888350867430, -0.869519343134916970, 0.493732151026381070,
+    -0.869614031075202300,
+  0.493565395548774880, -0.869708687042265560, 0.493398621924179830,
+    -0.869803311032626650,
+  0.493231830158728070, -0.869897903042806340, 0.493065020258551650,
+    -0.869992463069326870,
+  0.492898192229784090, -0.870086991108711350, 0.492731346078558840,
+    -0.870181487157484560,
+  0.492564481811010650, -0.870275951212171830, 0.492397599433274550,
+    -0.870370383269300160,
+  0.492230698951486080, -0.870464783325397670, 0.492063780371782060,
+    -0.870559151376993250,
+  0.491896843700299240, -0.870653487420617540, 0.491729888943175820,
+    -0.870747791452801790,
+  0.491562916106550060, -0.870842063470078860, 0.491395925196560830,
+    -0.870936303468982760,
+  0.491228916219348330, -0.871030511446048260, 0.491061889181052590,
+    -0.871124687397811900,
+  0.490894844087815140, -0.871218831320810900, 0.490727780945777570,
+    -0.871312943211583920,
+  0.490560699761082080, -0.871407023066670950, 0.490393600539872130,
+    -0.871501070882612530,
+  0.490226483288291100, -0.871595086655951090, 0.490059348012483910,
+    -0.871689070383229740,
+  0.489892194718595300, -0.871783022060993010, 0.489725023412770970,
+    -0.871876941685786890,
+  0.489557834101157550, -0.871970829254157700, 0.489390626789901920,
+    -0.872064684762653970,
+  0.489223401485152030, -0.872158508207824480, 0.489056158193055980,
+    -0.872252299586219860,
+  0.488888896919763230, -0.872346058894391540, 0.488721617671423250,
+    -0.872439786128892280,
+  0.488554320454186230, -0.872533481286276060, 0.488387005274203590,
+    -0.872627144363097960,
+  0.488219672137626740, -0.872720775355914300, 0.488052321050608310,
+    -0.872814374261282390,
+  0.487884952019301210, -0.872907941075760970, 0.487717565049858860,
+    -0.873001475795909920,
+  0.487550160148436050, -0.873094978418290090, 0.487382737321187310,
+    -0.873188448939463790,
+  0.487215296574268820, -0.873281887355994210, 0.487047837913836550,
+    -0.873375293664446000,
+  0.486880361346047400, -0.873468667861384880, 0.486712866877059340,
+    -0.873562009943377740,
+  0.486545354513030270, -0.873655319906992630, 0.486377824260119500,
+    -0.873748597748798870,
+  0.486210276124486530, -0.873841843465366750, 0.486042710112291390,
+    -0.873935057053268130,
+  0.485875126229695420, -0.874028238509075630, 0.485707524482859750,
+    -0.874121387829363330,
+  0.485539904877947020, -0.874214505010706300, 0.485372267421119770,
+    -0.874307590049680950,
+  0.485204612118541880, -0.874400642942864790, 0.485036938976377450,
+    -0.874493663686836450,
+  0.484869248000791120, -0.874586652278176110, 0.484701539197948730,
+    -0.874679608713464510,
+  0.484533812574016120, -0.874772532989284150, 0.484366068135160480,
+    -0.874865425102218210,
+  0.484198305887549140, -0.874958285048851540, 0.484030525837350010,
+    -0.875051112825769970,
+  0.483862727990732320, -0.875143908429560250, 0.483694912353865080,
+    -0.875236671856810870,
+  0.483527078932918740, -0.875329403104110780, 0.483359227734063980,
+    -0.875422102168050830,
+  0.483191358763471910, -0.875514769045222740, 0.483023472027315050,
+    -0.875607403732219240,
+  0.482855567531765670, -0.875700006225634600, 0.482687645282997510,
+    -0.875792576522063880,
+  0.482519705287184520, -0.875885114618103700, 0.482351747550501030,
+    -0.875977620510351660,
+  0.482183772079122830, -0.876070094195406600, 0.482015778879225530,
+    -0.876162535669868460,
+  0.481847767956986080, -0.876254944930338400, 0.481679739318581490,
+    -0.876347321973419020,
+  0.481511692970189920, -0.876439666795713610, 0.481343628917989870,
+    -0.876531979393827100,
+  0.481175547168160360, -0.876624259764365310, 0.481007447726881640,
+    -0.876716507903935400,
+  0.480839330600333900, -0.876808723809145760, 0.480671195794698690,
+    -0.876900907476605650,
+  0.480503043316157670, -0.876993058902925780, 0.480334873170893070,
+    -0.877085178084718310,
+  0.480166685365088440, -0.877177265018595940, 0.479998479904927220,
+    -0.877269319701173170,
+  0.479830256796594250, -0.877361342129065140, 0.479662016046274340,
+    -0.877453332298888560,
+  0.479493757660153060, -0.877545290207261240, 0.479325481644417130,
+    -0.877637215850802120,
+  0.479157188005253310, -0.877729109226131570, 0.478988876748849550,
+    -0.877820970329870500,
+  0.478820547881394050, -0.877912799158641730, 0.478652201409075550,
+    -0.878004595709069080,
+  0.478483837338084080, -0.878096359977777130, 0.478315455674609480,
+    -0.878188091961392250,
+  0.478147056424843120, -0.878279791656541460, 0.477978639594976110,
+    -0.878371459059853590,
+  0.477810205191201040, -0.878463094167957870, 0.477641753219710590,
+    -0.878554696977485340,
+  0.477473283686698060, -0.878646267485068130, 0.477304796598358010,
+    -0.878737805687339280,
+  0.477136291960884750, -0.878829311580933360, 0.476967769780474230,
+    -0.878920785162485840,
+  0.476799230063322250, -0.879012226428633410, 0.476630672815625380,
+    -0.879103635376014330,
+  0.476462098043581310, -0.879195012001267370, 0.476293505753387750,
+    -0.879286356301033250,
+  0.476124895951243630, -0.879377668271953180, 0.475956268643348220,
+    -0.879468947910670100,
+  0.475787623835901120, -0.879560195213827890, 0.475618961535103410,
+    -0.879651410178071470,
+  0.475450281747155870, -0.879742592800047410, 0.475281584478260800,
+    -0.879833743076402940,
+  0.475112869734620470, -0.879924861003786860, 0.474944137522437860,
+    -0.880015946578848960,
+  0.474775387847917230, -0.880106999798240360, 0.474606620717262560,
+    -0.880198020658613190,
+  0.474437836136679340, -0.880289009156620890, 0.474269034112372920,
+    -0.880379965288918260,
+  0.474100214650550020, -0.880470889052160750, 0.473931377757417560,
+    -0.880561780443005590,
+  0.473762523439182850, -0.880652639458111010, 0.473593651702054640,
+    -0.880743466094136230,
+  0.473424762552241530, -0.880834260347742040, 0.473255855995953380,
+    -0.880925022215589880,
+  0.473086932039400220, -0.881015751694342760, 0.472917990688792760,
+    -0.881106448780665130,
+  0.472749031950342900, -0.881197113471221980, 0.472580055830262250,
+    -0.881287745762680100,
+  0.472411062334764100, -0.881378345651706810, 0.472242051470061650,
+    -0.881468913134971330,
+  0.472073023242368660, -0.881559448209143780, 0.471903977657900320,
+    -0.881649950870895260,
+  0.471734914722871430, -0.881740421116898320, 0.471565834443498480,
+    -0.881830858943826620,
+  0.471396736825997810, -0.881921264348354940, 0.471227621876586400,
+    -0.882011637327159590,
+  0.471058489601482610, -0.882101977876917580, 0.470889340006904520,
+    -0.882192285994307430,
+  0.470720173099071710, -0.882282561676008600, 0.470550988884203490,
+    -0.882372804918702290,
+  0.470381787368520710, -0.882463015719070040, 0.470212568558244280,
+    -0.882553194073795400,
+  0.470043332459595620, -0.882643339979562790, 0.469874079078797470,
+    -0.882733453433057540,
+  0.469704808422072460, -0.882823534430966730, 0.469535520495644510,
+    -0.882913582969978020,
+  0.469366215305737630, -0.883003599046780720, 0.469196892858576630,
+    -0.883093582658065370,
+  0.469027553160387240, -0.883183533800523280, 0.468858196217395330,
+    -0.883273452470847430,
+  0.468688822035827960, -0.883363338665731580, 0.468519430621912420,
+    -0.883453192381870920,
+  0.468350021981876530, -0.883543013615961880, 0.468180596121949400,
+    -0.883632802364701760,
+  0.468011153048359830, -0.883722558624789660, 0.467841692767338220,
+    -0.883812282392925090,
+  0.467672215285114710, -0.883901973665809470, 0.467502720607920920,
+    -0.883991632440144890,
+  0.467333208741988530, -0.884081258712634990, 0.467163679693549770,
+    -0.884170852479984500,
+  0.466994133468838110, -0.884260413738899080, 0.466824570074086950,
+    -0.884349942486086120,
+  0.466654989515530970, -0.884439438718253700, 0.466485391799405010,
+    -0.884528902432111350,
+  0.466315776931944480, -0.884618333624369920, 0.466146144919386000,
+    -0.884707732291740930,
+  0.465976495767966130, -0.884797098430937790, 0.465806829483922770,
+    -0.884886432038674560,
+  0.465637146073493770, -0.884975733111666660, 0.465467445542917800,
+    -0.885065001646630930,
+  0.465297727898434650, -0.885154237640285110, 0.465127993146283950,
+    -0.885243441089348270,
+  0.464958241292706740, -0.885332611990540590, 0.464788472343944160,
+    -0.885421750340583570,
+  0.464618686306237820, -0.885510856136199950, 0.464448883185830770,
+    -0.885599929374113360,
+  0.464279062988965760, -0.885688970051048960, 0.464109225721887010,
+    -0.885777978163732940,
+  0.463939371390838460, -0.885866953708892790, 0.463769500002065680,
+    -0.885955896683257030,
+  0.463599611561814120, -0.886044807083555490, 0.463429706076329880,
+    -0.886133684906519340,
+  0.463259783551860260, -0.886222530148880640, 0.463089843994652470,
+    -0.886311342807372890,
+  0.462919887410955130, -0.886400122878730490, 0.462749913807016850,
+    -0.886488870359689600,
+  0.462579923189086810, -0.886577585246987040, 0.462409915563415540,
+    -0.886666267537360890,
+  0.462239890936253280, -0.886754917227550950, 0.462069849313851810,
+    -0.886843534314297300,
+  0.461899790702462840, -0.886932118794342080, 0.461729715108338770,
+    -0.887020670664428360,
+  0.461559622537733190, -0.887109189921300060, 0.461389512996899450,
+    -0.887197676561702900,
+  0.461219386492092430, -0.887286130582383150, 0.461049243029567010,
+    -0.887374551980088740,
+  0.460879082615578690, -0.887462940751568840, 0.460708905256384190,
+    -0.887551296893573370,
+  0.460538710958240010, -0.887639620402853930, 0.460368499727404070,
+    -0.887727911276163020,
+  0.460198271570134270, -0.887816169510254550, 0.460028026492689700,
+    -0.887904395101883240,
+  0.459857764501329650, -0.887992588047805560, 0.459687485602313870,
+    -0.888080748344778900,
+  0.459517189801903590, -0.888168875989561620, 0.459346877106359570,
+    -0.888256970978913870,
+  0.459176547521944150, -0.888345033309596240, 0.459006201054919680,
+    -0.888433062978371320,
+  0.458835837711549120, -0.888521059982002260, 0.458665457498096670,
+    -0.888609024317253750,
+  0.458495060420826220, -0.888696955980891710, 0.458324646486003300,
+    -0.888784854969682850,
+  0.458154215699893230, -0.888872721280395520, 0.457983768068762180,
+    -0.888960554909799310,
+  0.457813303598877290, -0.889048355854664570, 0.457642822296505770,
+    -0.889136124111763240,
+  0.457472324167916110, -0.889223859677868210, 0.457301809219376800,
+    -0.889311562549753850,
+  0.457131277457156980, -0.889399232724195520, 0.456960728887527030,
+    -0.889486870197969790,
+  0.456790163516757220, -0.889574474967854580, 0.456619581351118960,
+    -0.889662047030628790,
+  0.456448982396883860, -0.889749586383072890, 0.456278366660324670,
+    -0.889837093021967900,
+  0.456107734147714220, -0.889924566944096720, 0.455937084865326030,
+    -0.890012008146243260,
+  0.455766418819434750, -0.890099416625192210, 0.455595736016314920,
+    -0.890186792377730240,
+  0.455425036462242420, -0.890274135400644480, 0.455254320163493210,
+    -0.890361445690723730,
+  0.455083587126343840, -0.890448723244757880, 0.454912837357072050,
+    -0.890535968059537830,
+  0.454742070861955450, -0.890623180131855930, 0.454571287647273000,
+    -0.890710359458505520,
+  0.454400487719303750, -0.890797506036281490, 0.454229671084327320,
+    -0.890884619861979530,
+  0.454058837748624540, -0.890971700932396750, 0.453887987718476050,
+    -0.891058749244331590,
+  0.453717121000163930, -0.891145764794583180, 0.453546237599970260,
+    -0.891232747579952520,
+  0.453375337524177750, -0.891319697597241390, 0.453204420779070300,
+    -0.891406614843252900,
+  0.453033487370931580, -0.891493499314791380, 0.452862537306046810,
+    -0.891580351008662290,
+  0.452691570590700860, -0.891667169921672390, 0.452520587231180100,
+    -0.891753956050629460,
+  0.452349587233771000, -0.891840709392342720, 0.452178570604760410,
+    -0.891927429943622510,
+  0.452007537350436530, -0.892014117701280360, 0.451836487477087430,
+    -0.892100772662129170,
+  0.451665420991002540, -0.892187394822982480, 0.451494337898471210,
+    -0.892273984180655730,
+  0.451323238205783520, -0.892360540731965360, 0.451152121919230710,
+    -0.892447064473728680,
+  0.450980989045103810, -0.892533555402764690, 0.450809839589695340,
+    -0.892620013515893040,
+  0.450638673559297760, -0.892706438809935280, 0.450467490960204110,
+    -0.892792831281713610,
+  0.450296291798708730, -0.892879190928051680, 0.450125076081105750,
+    -0.892965517745774260,
+  0.449953843813690580, -0.893051811731707450, 0.449782595002758860,
+    -0.893138072882678210,
+  0.449611329654606600, -0.893224301195515320, 0.449440047775531260,
+    -0.893310496667048090,
+  0.449268749371829920, -0.893396659294107610, 0.449097434449801100,
+    -0.893482789073525850,
+  0.448926103015743260, -0.893568886002136020, 0.448754755075956020,
+    -0.893654950076772430,
+  0.448583390636739300, -0.893740981294271040, 0.448412009704393430,
+    -0.893826979651468620,
+  0.448240612285220000, -0.893912945145203250, 0.448069198385520340,
+    -0.893998877772314240,
+  0.447897768011597310, -0.894084777529641990, 0.447726321169753750,
+    -0.894170644414028270,
+  0.447554857866293010, -0.894256478422316040, 0.447383378107519710,
+    -0.894342279551349480,
+  0.447211881899738260, -0.894428047797973800, 0.447040369249254500,
+    -0.894513783159035620,
+  0.446868840162374330, -0.894599485631382580, 0.446697294645404090,
+    -0.894685155211863980,
+  0.446525732704651400, -0.894770791897329550, 0.446354154346423840,
+    -0.894856395684630930,
+  0.446182559577030120, -0.894941966570620750, 0.446010948402779110,
+    -0.895027504552152630,
+  0.445839320829980350, -0.895113009626081760, 0.445667676864944350,
+    -0.895198481789264200,
+  0.445496016513981740, -0.895283921038557580, 0.445324339783404240,
+    -0.895369327370820310,
+  0.445152646679523590, -0.895454700782912450, 0.444980937208652780,
+    -0.895540041271694840,
+  0.444809211377105000, -0.895625348834030000, 0.444637469191193790,
+    -0.895710623466781320,
+  0.444465710657234110, -0.895795865166813420, 0.444293935781540580,
+    -0.895881073930992370,
+  0.444122144570429260, -0.895966249756185110, 0.443950337030216250,
+    -0.896051392639260040,
+  0.443778513167218220, -0.896136502577086770, 0.443606672987753080,
+    -0.896221579566535920,
+  0.443434816498138430, -0.896306623604479660, 0.443262943704693380,
+    -0.896391634687790820,
+  0.443091054613736990, -0.896476612813344010, 0.442919149231588980,
+    -0.896561557978014960,
+  0.442747227564570130, -0.896646470178680150, 0.442575289619001170,
+    -0.896731349412217880,
+  0.442403335401204130, -0.896816195675507190, 0.442231364917501090,
+    -0.896901008965428680,
+  0.442059378174214760, -0.896985789278863970, 0.441887375177668960,
+    -0.897070536612695870,
+  0.441715355934187310, -0.897155250963808550, 0.441543320450094920,
+    -0.897239932329087050,
+  0.441371268731716620, -0.897324580705418320, 0.441199200785378660,
+    -0.897409196089689720,
+  0.441027116617407340, -0.897493778478790190, 0.440855016234129430,
+    -0.897578327869610230,
+  0.440682899641873020, -0.897662844259040750, 0.440510766846965880,
+    -0.897747327643974690,
+  0.440338617855737300, -0.897831778021305650, 0.440166452674516480,
+    -0.897916195387928550,
+  0.439994271309633260, -0.898000579740739880, 0.439822073767418610,
+    -0.898084931076636780,
+  0.439649860054203420, -0.898169249392518080, 0.439477630176319860,
+    -0.898253534685283570,
+  0.439305384140100060, -0.898337786951834190, 0.439133121951876930,
+    -0.898422006189072530,
+  0.438960843617984430, -0.898506192393901840, 0.438788549144756290,
+    -0.898590345563227030,
+  0.438616238538527710, -0.898674465693953820, 0.438443911805633860,
+    -0.898758552782989440,
+  0.438271568952410480, -0.898842606827242260, 0.438099209985194580,
+    -0.898926627823621870,
+  0.437926834910322860, -0.899010615769039070, 0.437754443734133470,
+    -0.899094570660405770,
+  0.437582036462964340, -0.899178492494635330, 0.437409613103154850,
+    -0.899262381268642000,
+  0.437237173661044200, -0.899346236979341460, 0.437064718142972370,
+    -0.899430059623650860,
+  0.436892246555280470, -0.899513849198487870, 0.436719758904309310,
+    -0.899597605700772180,
+  0.436547255196401250, -0.899681329127423930, 0.436374735437898510,
+    -0.899765019475365020,
+  0.436202199635143950, -0.899848676741518580, 0.436029647794481670,
+    -0.899932300922808400,
+  0.435857079922255470, -0.900015892016160280, 0.435684496024810520,
+    -0.900099450018500340,
+  0.435511896108492170, -0.900182974926756700, 0.435339280179646070,
+    -0.900266466737858480,
+  0.435166648244619370, -0.900349925448735600, 0.434994000309758710,
+    -0.900433351056319830,
+  0.434821336381412350, -0.900516743557543520, 0.434648656465928430,
+    -0.900600102949340790,
+  0.434475960569655710, -0.900683429228646860, 0.434303248698944100,
+    -0.900766722392397860,
+  0.434130520860143310, -0.900849982437531450, 0.433957777059604480,
+    -0.900933209360986200,
+  0.433785017303678520, -0.901016403159702330, 0.433612241598717640,
+    -0.901099563830620950,
+  0.433439449951074200, -0.901182691370684410, 0.433266642367100940,
+    -0.901265785776836580,
+  0.433093818853152010, -0.901348847046022030, 0.432920979415581220,
+    -0.901431875175186970,
+  0.432748124060743760, -0.901514870161278630, 0.432575252794994810,
+    -0.901597832001245660,
+  0.432402365624690140, -0.901680760692037730, 0.432229462556186770,
+    -0.901763656230605610,
+  0.432056543595841450, -0.901846518613901860, 0.431883608750012300,
+    -0.901929347838879350,
+  0.431710658025057370, -0.902012143902493070, 0.431537691427335500,
+    -0.902094906801698900,
+  0.431364708963206440, -0.902177636533453510, 0.431191710639030000,
+    -0.902260333094715540,
+  0.431018696461167080, -0.902342996482444200, 0.430845666435978820,
+    -0.902425626693600270,
+  0.430672620569826860, -0.902508223725145830, 0.430499558869073930,
+    -0.902590787574043870,
+  0.430326481340082610, -0.902673318237258830, 0.430153387989216930,
+    -0.902755815711756120,
+  0.429980278822840570, -0.902838279994502830, 0.429807153847318770,
+    -0.902920711082466630,
+  0.429634013069016500, -0.903003108972617040, 0.429460856494299490,
+    -0.903085473661924600,
+  0.429287684129534720, -0.903167805147360610, 0.429114495981088690,
+    -0.903250103425898400,
+  0.428941292055329550, -0.903332368494511820, 0.428768072358625240,
+    -0.903414600350176290,
+  0.428594836897344400, -0.903496798989868450, 0.428421585677856760,
+    -0.903578964410565950,
+  0.428248318706531910, -0.903661096609247980, 0.428075035989740780,
+    -0.903743195582894620,
+  0.427901737533854240, -0.903825261328487390, 0.427728423345243860,
+    -0.903907293843009050,
+  0.427555093430282200, -0.903989293123443340, 0.427381747795341770,
+    -0.904071259166775440,
+  0.427208386446796370, -0.904153191969991670, 0.427035009391019790,
+    -0.904235091530079750,
+  0.426861616634386490, -0.904316957844028320, 0.426688208183271970,
+    -0.904398790908827350,
+  0.426514784044051520, -0.904480590721468250, 0.426341344223101880,
+    -0.904562357278943190,
+  0.426167888726799620, -0.904644090578246240, 0.425994417561522450,
+    -0.904725790616371930,
+  0.425820930733648300, -0.904807457390316540, 0.425647428249555590,
+    -0.904889090897077470,
+  0.425473910115623910, -0.904970691133653250, 0.425300376338232590,
+    -0.905052258097043590,
+  0.425126826923762410, -0.905133791784249580, 0.424953261878594060,
+    -0.905215292192273480,
+  0.424779681209108810, -0.905296759318118820, 0.424606084921689220,
+    -0.905378193158789980,
+  0.424432473022717420, -0.905459593711293250, 0.424258845518577010,
+    -0.905540960972635480,
+  0.424085202415651670, -0.905622294939825160, 0.423911543720325580,
+    -0.905703595609872010,
+  0.423737869438983950, -0.905784862979786440, 0.423564179578011960,
+    -0.905866097046580940,
+  0.423390474143796100, -0.905947297807268460, 0.423216753142722780,
+    -0.906028465258863490,
+  0.423043016581179100, -0.906109599398381980, 0.422869264465553170,
+    -0.906190700222840540,
+  0.422695496802232950, -0.906271767729257660, 0.422521713597607870,
+    -0.906352801914652280,
+  0.422347914858067000, -0.906433802776045460, 0.422174100590000820,
+    -0.906514770310458800,
+  0.422000270799799790, -0.906595704514915330, 0.421826425493854910,
+    -0.906676605386439460,
+  0.421652564678558380, -0.906757472922056550, 0.421478688360302220,
+    -0.906838307118793540,
+  0.421304796545479700, -0.906919107973678030, 0.421130889240484140,
+    -0.906999875483739610,
+  0.420956966451709440, -0.907080609646008450, 0.420783028185550630,
+    -0.907161310457516250,
+  0.420609074448402510, -0.907241977915295930, 0.420435105246661220,
+    -0.907322612016381310,
+  0.420261120586723050, -0.907403212757808000, 0.420087120474984590,
+    -0.907483780136612570,
+  0.419913104917843730, -0.907564314149832520, 0.419739073921698180,
+    -0.907644814794507090,
+  0.419565027492946940, -0.907725282067676330, 0.419390965637989050,
+    -0.907805715966381820,
+  0.419216888363223960, -0.907886116487666150, 0.419042795675052480,
+    -0.907966483628573240,
+  0.418868687579875110, -0.908046817386148340, 0.418694564084093610,
+    -0.908127117757437600,
+  0.418520425194109700, -0.908207384739488700, 0.418346270916326310,
+    -0.908287618329350450,
+  0.418172101257146430, -0.908367818524072780, 0.417997916222973550,
+    -0.908447985320707250,
+  0.417823715820212380, -0.908528118716306120, 0.417649500055267410,
+    -0.908608218707923190,
+  0.417475268934544340, -0.908688285292613360, 0.417301022464449060,
+    -0.908768318467432780,
+  0.417126760651387870, -0.908848318229439120, 0.416952483501768280,
+    -0.908928284575690640,
+  0.416778191021997590, -0.909008217503247450, 0.416603883218484410,
+    -0.909088117009170580,
+  0.416429560097637320, -0.909167983090522270, 0.416255221665865480,
+    -0.909247815744366310,
+  0.416080867929579320, -0.909327614967767260, 0.415906498895188770,
+    -0.909407380757791260,
+  0.415732114569105420, -0.909487113111505430, 0.415557714957740580,
+    -0.909566812025978220,
+  0.415383300067506290, -0.909646477498279540, 0.415208869904815650,
+    -0.909726109525480160,
+  0.415034424476081630, -0.909805708104652220, 0.414859963787718390,
+    -0.909885273232869160,
+  0.414685487846140010, -0.909964804907205660, 0.414510996657761810,
+    -0.910044303124737390,
+  0.414336490228999210, -0.910123767882541570, 0.414161968566268080,
+    -0.910203199177696540,
+  0.413987431675985510, -0.910282597007281760, 0.413812879564568300,
+    -0.910361961368377990,
+  0.413638312238434560, -0.910441292258067140, 0.413463729704002580,
+    -0.910520589673432630,
+  0.413289131967690960, -0.910599853611558930, 0.413114519035919560,
+    -0.910679084069531570,
+  0.412939890915108020, -0.910758281044437570, 0.412765247611677320,
+    -0.910837444533365010,
+  0.412590589132048380, -0.910916574533403240, 0.412415915482642730,
+    -0.910995671041643140,
+  0.412241226669883000, -0.911074734055176250, 0.412066522700191560,
+    -0.911153763571095900,
+  0.411891803579992220, -0.911232759586496190, 0.411717069315708670,
+    -0.911311722098472670,
+  0.411542319913765280, -0.911390651104122320, 0.411367555380587340,
+    -0.911469546600543020,
+  0.411192775722600160, -0.911548408584833990, 0.411017980946230270,
+    -0.911627237054095650,
+  0.410843171057903910, -0.911706032005429880, 0.410668346064048780,
+    -0.911784793435939430,
+  0.410493505971092520, -0.911863521342728520, 0.410318650785463260,
+    -0.911942215722902570,
+  0.410143780513590350, -0.912020876573568230, 0.409968895161902820,
+    -0.912099503891833470,
+  0.409793994736831200, -0.912178097674807060, 0.409619079244805840,
+    -0.912256657919599650,
+  0.409444148692257590, -0.912335184623322750, 0.409269203085618700,
+    -0.912413677783089020,
+  0.409094242431320920, -0.912492137396012650, 0.408919266735797480,
+    -0.912570563459208730,
+  0.408744276005481520, -0.912648955969793900, 0.408569270246806780,
+    -0.912727314924885900,
+  0.408394249466208110, -0.912805640321603500, 0.408219213670120100,
+    -0.912883932157067200,
+  0.408044162864978740, -0.912962190428398100, 0.407869097057219960,
+    -0.913040415132719160,
+  0.407694016253280170, -0.913118606267154130, 0.407518920459597030,
+    -0.913196763828828200,
+  0.407343809682607970, -0.913274887814867760, 0.407168683928751610,
+    -0.913352978222400250,
+  0.406993543204466460, -0.913431035048554720, 0.406818387516192370,
+    -0.913509058290461140,
+  0.406643216870369140, -0.913587047945250810, 0.406468031273437000,
+    -0.913665004010056350,
+  0.406292830731837470, -0.913742926482011390, 0.406117615252011790,
+    -0.913820815358251100,
+  0.405942384840402570, -0.913898670635911680, 0.405767139503452220,
+    -0.913976492312130520,
+  0.405591879247603870, -0.914054280384046460, 0.405416604079301750,
+    -0.914132034848799460,
+  0.405241314004989860, -0.914209755703530690, 0.405066009031113390,
+    -0.914287442945382440,
+  0.404890689164117750, -0.914365096571498450, 0.404715354410448650,
+    -0.914442716579023870,
+  0.404540004776553110, -0.914520302965104450, 0.404364640268877810,
+    -0.914597855726887790,
+  0.404189260893870750, -0.914675374861522390, 0.404013866657980060,
+    -0.914752860366158100,
+  0.403838457567654130, -0.914830312237946090, 0.403663033629342750,
+    -0.914907730474038620,
+  0.403487594849495310, -0.914985115071589310, 0.403312141234562660,
+    -0.915062466027752760,
+  0.403136672790995240, -0.915139783339685260, 0.402961189525244960,
+    -0.915217067004543750,
+  0.402785691443763640, -0.915294317019487050, 0.402610178553003680,
+    -0.915371533381674760,
+  0.402434650859418540, -0.915448716088267830, 0.402259108369461440,
+    -0.915525865136428530,
+  0.402083551089587040, -0.915602980523320230, 0.401907979026249860,
+    -0.915680062246107650,
+  0.401732392185905010, -0.915757110301956720, 0.401556790575008650,
+    -0.915834124688034710,
+  0.401381174200016790, -0.915911105401509880, 0.401205543067386760,
+    -0.915988052439551840,
+  0.401029897183575790, -0.916064965799331610, 0.400854236555041650,
+    -0.916141845478021350,
+  0.400678561188243350, -0.916218691472794110, 0.400502871089639500,
+    -0.916295503780824800,
+  0.400327166265690150, -0.916372282399289140, 0.400151446722855300,
+    -0.916449027325364040,
+  0.399975712467595390, -0.916525738556228100, 0.399799963506372090,
+    -0.916602416089060680,
+  0.399624199845646790, -0.916679059921042700, 0.399448421491882260,
+    -0.916755670049355990,
+  0.399272628451540930, -0.916832246471183890, 0.399096820731086600,
+    -0.916908789183710990,
+  0.398920998336983020, -0.916985298184122890, 0.398745161275694480,
+    -0.917061773469606820,
+  0.398569309553686360, -0.917138215037350710, 0.398393443177423920,
+    -0.917214622884544250,
+  0.398217562153373620, -0.917290997008377910, 0.398041666488001930,
+    -0.917367337406043810,
+  0.397865756187775750, -0.917443644074735220, 0.397689831259163240,
+    -0.917519917011646260,
+  0.397513891708632330, -0.917596156213972950, 0.397337937542652120,
+    -0.917672361678911750,
+  0.397161968767691720, -0.917748533403661250, 0.396985985390220900,
+    -0.917824671385420570,
+  0.396809987416710420, -0.917900775621390390, 0.396633974853630830,
+    -0.917976846108772730,
+  0.396457947707453960, -0.918052882844770380, 0.396281905984651680,
+    -0.918128885826587910,
+  0.396105849691696320, -0.918204855051430900, 0.395929778835061360,
+    -0.918280790516506130,
+  0.395753693421220080, -0.918356692219021720, 0.395577593456646950,
+    -0.918432560156186790,
+  0.395401478947816300, -0.918508394325212250, 0.395225349901203730,
+    -0.918584194723309540,
+  0.395049206323284880, -0.918659961347691900, 0.394873048220535760,
+    -0.918735694195573550,
+  0.394696875599433670, -0.918811393264169940, 0.394520688466455550,
+    -0.918887058550697970,
+  0.394344486828079650, -0.918962690052375630, 0.394168270690784250,
+    -0.919038287766421940,
+  0.393992040061048100, -0.919113851690057770, 0.393815794945351130,
+    -0.919189381820504470,
+  0.393639535350172880, -0.919264878154985250, 0.393463261281994380,
+    -0.919340340690724230,
+  0.393286972747296570, -0.919415769424946960, 0.393110669752560760,
+    -0.919491164354880100,
+  0.392934352304269600, -0.919566525477751530, 0.392758020408905280,
+    -0.919641852790790470,
+  0.392581674072951530, -0.919717146291227360, 0.392405313302891860,
+    -0.919792405976293750,
+  0.392228938105210370, -0.919867631843222950, 0.392052548486392200,
+    -0.919942823889248640,
+  0.391876144452922350, -0.920017982111606570, 0.391699726011287050,
+    -0.920093106507533070,
+  0.391523293167972350, -0.920168197074266450, 0.391346845929465610,
+    -0.920243253809045370,
+  0.391170384302253980, -0.920318276709110480, 0.390993908292825380,
+    -0.920393265771703550,
+  0.390817417907668610, -0.920468220994067110, 0.390640913153272370,
+    -0.920543142373445480,
+  0.390464394036126650, -0.920618029907083860, 0.390287860562721360,
+    -0.920692883592229010,
+  0.390111312739546910, -0.920767703426128790, 0.389934750573094790,
+    -0.920842489406032080,
+  0.389758174069856410, -0.920917241529189520, 0.389581583236324360,
+    -0.920991959792852310,
+  0.389404978078991100, -0.921066644194273530, 0.389228358604349730,
+    -0.921141294730707270,
+  0.389051724818894500, -0.921215911399408730, 0.388875076729119250,
+    -0.921290494197634540,
+  0.388698414341519250, -0.921365043122642340, 0.388521737662589740,
+    -0.921439558171691320,
+  0.388345046698826300, -0.921514039342041900, 0.388168341456725850,
+    -0.921588486630955380,
+  0.387991621942784910, -0.921662900035694730, 0.387814888163501290,
+    -0.921737279553523800,
+  0.387638140125372680, -0.921811625181708120, 0.387461377834897920,
+    -0.921885936917513970,
+  0.387284601298575890, -0.921960214758209110, 0.387107810522905990,
+    -0.922034458701062820,
+  0.386931005514388690, -0.922108668743345070, 0.386754186279524130,
+    -0.922182844882327600,
+  0.386577352824813980, -0.922256987115283030, 0.386400505156759610,
+    -0.922331095439485330,
+  0.386223643281862980, -0.922405169852209880, 0.386046767206627280,
+    -0.922479210350733100,
+  0.385869876937555310, -0.922553216932332830, 0.385692972481151200,
+    -0.922627189594287800,
+  0.385516053843919020, -0.922701128333878520, 0.385339121032363340,
+    -0.922775033148386380,
+  0.385162174052989970, -0.922848904035094120, 0.384985212912304200,
+    -0.922922740991285680,
+  0.384808237616812930, -0.922996544014246250, 0.384631248173022740,
+    -0.923070313101262420,
+  0.384454244587440870, -0.923144048249621820, 0.384277226866575620,
+    -0.923217749456613500,
+  0.384100195016935040, -0.923291416719527640, 0.383923149045028500,
+    -0.923365050035655610,
+  0.383746088957365010, -0.923438649402290370, 0.383569014760454960,
+    -0.923512214816725520,
+  0.383391926460808770, -0.923585746276256560, 0.383214824064937180,
+    -0.923659243778179980,
+  0.383037707579352130, -0.923732707319793180, 0.382860577010565360,
+    -0.923806136898395410,
+  0.382683432365089840, -0.923879532511286740, 0.382506273649438400,
+    -0.923952894155768640,
+  0.382329100870124510, -0.924026221829143850, 0.382151914033662720,
+    -0.924099515528716280,
+  0.381974713146567220, -0.924172775251791200, 0.381797498215353690,
+    -0.924246000995674890,
+  0.381620269246537520, -0.924319192757675160, 0.381443026246634730,
+    -0.924392350535101050,
+  0.381265769222162490, -0.924465474325262600, 0.381088498179637520,
+    -0.924538564125471420,
+  0.380911213125578130, -0.924611619933039970, 0.380733914066502090,
+    -0.924684641745282530,
+  0.380556601008928570, -0.924757629559513910, 0.380379273959376710,
+    -0.924830583373050800,
+  0.380201932924366050, -0.924903503183210910, 0.380024577910417380,
+    -0.924976388987313050,
+  0.379847208924051110, -0.925049240782677580, 0.379669825971789000,
+    -0.925122058566625770,
+  0.379492429060152740, -0.925194842336480420, 0.379315018195664430,
+    -0.925267592089565550,
+  0.379137593384847430, -0.925340307823206200, 0.378960154634224720,
+    -0.925412989534729060,
+  0.378782701950320600, -0.925485637221461490, 0.378605235339659290,
+    -0.925558250880732620,
+  0.378427754808765620, -0.925630830509872720, 0.378250260364165310,
+    -0.925703376106213120,
+  0.378072752012383990, -0.925775887667086740, 0.377895229759948550,
+    -0.925848365189827270,
+  0.377717693613385810, -0.925920808671769960, 0.377540143579222940,
+    -0.925993218110251480,
+  0.377362579663988450, -0.926065593502609310, 0.377185001874210450,
+    -0.926137934846182560,
+  0.377007410216418310, -0.926210242138311270, 0.376829804697141220,
+    -0.926282515376337210,
+  0.376652185322909620, -0.926354754557602860, 0.376474552100253880,
+    -0.926426959679452100,
+  0.376296905035704790, -0.926499130739230510, 0.376119244135794390,
+    -0.926571267734284220,
+  0.375941569407054420, -0.926643370661961230, 0.375763880856017750,
+    -0.926715439519610330,
+  0.375586178489217330, -0.926787474304581750, 0.375408462313186590,
+    -0.926859475014227160,
+  0.375230732334460030, -0.926931441645899130, 0.375052988559571860,
+    -0.927003374196951670,
+  0.374875230995057600, -0.927075272664740100, 0.374697459647452770,
+    -0.927147137046620880,
+  0.374519674523293210, -0.927218967339951790, 0.374341875629116030,
+    -0.927290763542091720,
+  0.374164062971457990, -0.927362525650401110, 0.373986236556857090,
+    -0.927434253662241300,
+  0.373808396391851370, -0.927505947574975180, 0.373630542482979280,
+    -0.927577607385966730,
+  0.373452674836780410, -0.927649233092581180, 0.373274793459794030,
+    -0.927720824692185200,
+  0.373096898358560690, -0.927792382182146320, 0.372918989539620770,
+    -0.927863905559833780,
+  0.372741067009515810, -0.927935394822617890, 0.372563130774787370,
+    -0.928006849967869970,
+  0.372385180841977360, -0.928078270992963140, 0.372207217217628950,
+    -0.928149657895271150,
+  0.372029239908284960, -0.928221010672169440, 0.371851248920489540,
+    -0.928292329321034560,
+  0.371673244260786630, -0.928363613839244370, 0.371495225935720760,
+    -0.928434864224177980,
+  0.371317193951837600, -0.928506080473215480, 0.371139148315682510,
+    -0.928577262583738850,
+  0.370961089033802040, -0.928648410553130520, 0.370783016112742720,
+    -0.928719524378774700,
+  0.370604929559051670, -0.928790604058057020, 0.370426829379276900,
+    -0.928861649588363700,
+  0.370248715579966360, -0.928932660967082820, 0.370070588167669130,
+    -0.929003638191603360,
+  0.369892447148934270, -0.929074581259315750, 0.369714292530311240,
+    -0.929145490167611720,
+  0.369536124318350760, -0.929216364913883930, 0.369357942519603190,
+    -0.929287205495526790,
+  0.369179747140620070, -0.929358011909935500, 0.369001538187952780,
+    -0.929428784154506800,
+  0.368823315668153960, -0.929499522226638560, 0.368645079587776150,
+    -0.929570226123729860,
+  0.368466829953372320, -0.929640895843181330, 0.368288566771496680,
+    -0.929711531382394370,
+  0.368110290048703050, -0.929782132738772190, 0.367931999791546500,
+    -0.929852699909718750,
+  0.367753696006582090, -0.929923232892639560, 0.367575378700365330,
+    -0.929993731684941480,
+  0.367397047879452820, -0.930064196284032360, 0.367218703550400930,
+    -0.930134626687321390,
+  0.367040345719767240, -0.930205022892219070, 0.366861974394109220,
+    -0.930275384896137040,
+  0.366683589579984930, -0.930345712696488470, 0.366505191283953480,
+    -0.930416006290687550,
+  0.366326779512573590, -0.930486265676149780, 0.366148354272405390,
+    -0.930556490850291800,
+  0.365969915570008910, -0.930626681810531650, 0.365791463411944570,
+    -0.930696838554288860,
+  0.365612997804773960, -0.930766961078983710, 0.365434518755058390,
+    -0.930837049382038150,
+  0.365256026269360380, -0.930907103460875020, 0.365077520354242180,
+    -0.930977123312918930,
+  0.364899001016267380, -0.931047108935595170, 0.364720468261999390,
+    -0.931117060326330790,
+  0.364541922098002180, -0.931186977482553750, 0.364363362530840730,
+    -0.931256860401693420,
+  0.364184789567079840, -0.931326709081180430, 0.364006203213285530,
+    -0.931396523518446600,
+  0.363827603476023610, -0.931466303710925090, 0.363648990361860550,
+    -0.931536049656050300,
+  0.363470363877363870, -0.931605761351257830, 0.363291724029100700,
+    -0.931675438793984620,
+  0.363113070823639530, -0.931745081981668720, 0.362934404267548750,
+    -0.931814690911749620,
+  0.362755724367397230, -0.931884265581668150, 0.362577031129754870,
+    -0.931953805988865900,
+  0.362398324561191310, -0.932023312130786490, 0.362219604668277570,
+    -0.932092784004874050,
+  0.362040871457584350, -0.932162221608574320, 0.361862124935682980,
+    -0.932231624939334540,
+  0.361683365109145950, -0.932300993994602640, 0.361504591984545260,
+    -0.932370328771828460,
+  0.361325805568454340, -0.932439629268462360, 0.361147005867446190,
+    -0.932508895481956700,
+  0.360968192888095290, -0.932578127409764420, 0.360789366636975690,
+    -0.932647325049340340,
+  0.360610527120662270, -0.932716488398140250, 0.360431674345730810,
+    -0.932785617453620990,
+  0.360252808318756830, -0.932854712213241230, 0.360073929046317080,
+    -0.932923772674460140,
+  0.359895036534988280, -0.932992798834738850, 0.359716130791347570,
+    -0.933061790691539380,
+  0.359537211821973180, -0.933130748242325110, 0.359358279633443080,
+    -0.933199671484560730,
+  0.359179334232336560, -0.933268560415712050, 0.359000375625232630,
+    -0.933337415033246080,
+  0.358821403818710920, -0.933406235334631520, 0.358642418819352100,
+    -0.933475021317337950,
+  0.358463420633736540, -0.933543772978836170, 0.358284409268445900,
+    -0.933612490316598540,
+  0.358105384730061760, -0.933681173328098300, 0.357926347025166070,
+    -0.933749822010810580,
+  0.357747296160342010, -0.933818436362210960, 0.357568232142172260,
+    -0.933887016379776890,
+  0.357389154977241000, -0.933955562060986730, 0.357210064672131900,
+    -0.934024073403320500,
+  0.357030961233430030, -0.934092550404258870, 0.356851844667720410,
+    -0.934160993061284420,
+  0.356672714981588260, -0.934229401371880820, 0.356493572181620200,
+    -0.934297775333532530,
+  0.356314416274402360, -0.934366114943725900, 0.356135247266522180,
+    -0.934434420199948050,
+  0.355956065164567010, -0.934502691099687870, 0.355776869975124640,
+    -0.934570927640435030,
+  0.355597661704783960, -0.934639129819680780, 0.355418440360133590,
+    -0.934707297634917440,
+  0.355239205947763370, -0.934775431083638700, 0.355059958474263030,
+    -0.934843530163339430,
+  0.354880697946222790, -0.934911594871516090, 0.354701424370233940,
+    -0.934979625205665800,
+  0.354522137752887430, -0.935047621163287430, 0.354342838100775600,
+    -0.935115582741880890,
+  0.354163525420490510, -0.935183509938947500, 0.353984199718624830,
+    -0.935251402751989810,
+  0.353804861001772160, -0.935319261178511500, 0.353625509276525970,
+    -0.935387085216017770,
+  0.353446144549480870, -0.935454874862014620, 0.353266766827231180,
+    -0.935522630114009930,
+  0.353087376116372530, -0.935590350969512370, 0.352907972423500360,
+    -0.935658037426032040,
+  0.352728555755210730, -0.935725689481080370, 0.352549126118100580,
+    -0.935793307132169900,
+  0.352369683518766630, -0.935860890376814640, 0.352190227963806890,
+    -0.935928439212529660,
+  0.352010759459819240, -0.935995953636831300, 0.351831278013402030,
+    -0.936063433647237540,
+  0.351651783631154680, -0.936130879241266920, 0.351472276319676260,
+    -0.936198290416440090,
+  0.351292756085567150, -0.936265667170278260, 0.351113222935427630,
+    -0.936333009500304180,
+  0.350933676875858360, -0.936400317404042060, 0.350754117913461170,
+    -0.936467590879016880,
+  0.350574546054837570, -0.936534829922755500, 0.350394961306590200,
+    -0.936602034532785570,
+  0.350215363675321740, -0.936669204706636060, 0.350035753167635300,
+    -0.936736340441837620,
+  0.349856129790135030, -0.936803441735921560, 0.349676493549424760,
+    -0.936870508586420960,
+  0.349496844452109600, -0.936937540990869900, 0.349317182504794320,
+    -0.937004538946803690,
+  0.349137507714085030, -0.937071502451759190, 0.348957820086587600,
+    -0.937138431503274140,
+  0.348778119628908420, -0.937205326098887960, 0.348598406347655040,
+    -0.937272186236140950,
+  0.348418680249434510, -0.937339011912574960, 0.348238941340855310,
+    -0.937405803125732850,
+  0.348059189628525780, -0.937472559873159140, 0.347879425119054510,
+    -0.937539282152399230,
+  0.347699647819051490, -0.937605969960999990, 0.347519857735126110,
+    -0.937672623296509470,
+  0.347340054873889190, -0.937739242156476970, 0.347160239241951330,
+    -0.937805826538453010,
+  0.346980410845923680, -0.937872376439989890, 0.346800569692418400,
+    -0.937938891858640210,
+  0.346620715788047320, -0.938005372791958840, 0.346440849139423580,
+    -0.938071819237501160,
+  0.346260969753160170, -0.938138231192824360, 0.346081077635870480,
+    -0.938204608655486490,
+  0.345901172794169100, -0.938270951623047080, 0.345721255234670120,
+    -0.938337260093066950,
+  0.345541324963989150, -0.938403534063108060, 0.345361381988741170,
+    -0.938469773530733800,
+  0.345181426315542610, -0.938535978493508560, 0.345001457951009780,
+    -0.938602148948998290,
+  0.344821476901759290, -0.938668284894770170, 0.344641483174409070,
+    -0.938734386328392460,
+  0.344461476775576480, -0.938800453247434770, 0.344281457711880230,
+    -0.938866485649468060,
+  0.344101425989938980, -0.938932483532064490, 0.343921381616371700,
+    -0.938998446892797540,
+  0.343741324597798600, -0.939064375729241950, 0.343561254940839330,
+    -0.939130270038973650,
+  0.343381172652115100, -0.939196129819569900, 0.343201077738246710,
+    -0.939261955068609100,
+  0.343020970205855540, -0.939327745783671400, 0.342840850061564060,
+    -0.939393501962337510,
+  0.342660717311994380, -0.939459223602189920, 0.342480571963769850,
+    -0.939524910700812120,
+  0.342300414023513690, -0.939590563255789160, 0.342120243497849590,
+    -0.939656181264707070,
+  0.341940060393402300, -0.939721764725153340, 0.341759864716796310,
+    -0.939787313634716570,
+  0.341579656474657210, -0.939852827990986680, 0.341399435673610360,
+    -0.939918307791555050,
+  0.341219202320282410, -0.939983753034013940, 0.341038956421299830,
+    -0.940049163715957370,
+  0.340858697983289440, -0.940114539834980280, 0.340678427012879310,
+    -0.940179881388678810,
+  0.340498143516697100, -0.940245188374650880, 0.340317847501371730,
+    -0.940310460790495070,
+  0.340137538973531880, -0.940375698633811540, 0.339957217939806880,
+    -0.940440901902201750,
+  0.339776884406826960, -0.940506070593268300, 0.339596538381222060,
+    -0.940571204704615190,
+  0.339416179869623410, -0.940636304233847590, 0.339235808878662120,
+    -0.940701369178571940,
+  0.339055425414969640, -0.940766399536396070, 0.338875029485178560,
+    -0.940831395304928870,
+  0.338694621095921190, -0.940896356481780830, 0.338514200253831000,
+    -0.940961283064563280,
+  0.338333766965541290, -0.941026175050889260, 0.338153321237685990,
+    -0.941091032438372780,
+  0.337972863076899830, -0.941155855224629190, 0.337792392489817460,
+    -0.941220643407275180,
+  0.337611909483074680, -0.941285396983928660, 0.337431414063306790,
+    -0.941350115952208970,
+  0.337250906237150650, -0.941414800309736230, 0.337070386011242730,
+    -0.941479450054132580,
+  0.336889853392220050, -0.941544065183020810, 0.336709308386720700,
+    -0.941608645694025140,
+  0.336528751001382350, -0.941673191584771360, 0.336348181242844100,
+    -0.941737702852886160,
+  0.336167599117744690, -0.941802179495997650, 0.335987004632723350,
+    -0.941866621511735280,
+  0.335806397794420560, -0.941931028897729510, 0.335625778609476230,
+    -0.941995401651612550,
+  0.335445147084531660, -0.942059739771017310, 0.335264503226227970,
+    -0.942124043253578460,
+  0.335083847041206580, -0.942188312096931770, 0.334903178536110290,
+    -0.942252546298714020,
+  0.334722497717581220, -0.942316745856563780, 0.334541804592262960,
+    -0.942380910768120470,
+  0.334361099166798900, -0.942445041031024890, 0.334180381447832740,
+    -0.942509136642919240,
+  0.333999651442009490, -0.942573197601446870, 0.333818909155973620,
+    -0.942637223904252530,
+  0.333638154596370920, -0.942701215548981900, 0.333457387769846790,
+    -0.942765172533282510,
+  0.333276608683047980, -0.942829094854802710, 0.333095817342620890,
+    -0.942892982511192130,
+  0.332915013755212650, -0.942956835500102120, 0.332734197927471160,
+    -0.943020653819184650,
+  0.332553369866044220, -0.943084437466093490, 0.332372529577580680,
+    -0.943148186438483420,
+  0.332191677068729320, -0.943211900734010620, 0.332010812346139380,
+    -0.943275580350332540,
+  0.331829935416461220, -0.943339225285107720, 0.331649046286344620,
+    -0.943402835535996240,
+  0.331468144962440920, -0.943466411100659320, 0.331287231451400990,
+    -0.943529951976759370,
+  0.331106305759876430, -0.943593458161960390, 0.330925367894519650,
+    -0.943656929653927110,
+  0.330744417861982890, -0.943720366450326200, 0.330563455668919590,
+    -0.943783768548825060,
+  0.330382481321982950, -0.943847135947092690, 0.330201494827826620,
+    -0.943910468642799150,
+  0.330020496193105530, -0.943973766633615980, 0.329839485424473940,
+    -0.944037029917215830,
+  0.329658462528587550, -0.944100258491272660, 0.329477427512101680,
+    -0.944163452353461770,
+  0.329296380381672800, -0.944226611501459810, 0.329115321143957360,
+    -0.944289735932944410,
+  0.328934249805612200, -0.944352825645594750, 0.328753166373295100,
+    -0.944415880637091250,
+  0.328572070853663690, -0.944478900905115550, 0.328390963253376630,
+    -0.944541886447350380,
+  0.328209843579092660, -0.944604837261480260, 0.328028711837470730,
+    -0.944667753345190490,
+  0.327847568035170960, -0.944730634696167800, 0.327666412178853060,
+    -0.944793481312100280,
+  0.327485244275178060, -0.944856293190677210, 0.327304064330806830,
+    -0.944919070329589220,
+  0.327122872352400510, -0.944981812726528150, 0.326941668346621530,
+    -0.945044520379187070,
+  0.326760452320131790, -0.945107193285260610, 0.326579224279594460,
+    -0.945169831442444150,
+  0.326397984231672660, -0.945232434848434890, 0.326216732183029770,
+    -0.945295003500931100,
+  0.326035468140330350, -0.945357537397632290, 0.325854192110238580,
+    -0.945420036536239070,
+  0.325672904099419900, -0.945482500914453740, 0.325491604114539260,
+    -0.945544930529979680,
+  0.325310292162262980, -0.945607325380521280, 0.325128968249257190,
+    -0.945669685463784710,
+  0.324947632382188430, -0.945732010777477150, 0.324766284567724330,
+    -0.945794301319306860,
+  0.324584924812532150, -0.945856557086983910, 0.324403553123280290,
+    -0.945918778078219110,
+  0.324222169506637130, -0.945980964290724760, 0.324040773969271450,
+    -0.946043115722214560,
+  0.323859366517852960, -0.946105232370403340, 0.323677947159051180,
+    -0.946167314233007370,
+  0.323496515899536760, -0.946229361307743820, 0.323315072745980150,
+    -0.946291373592331510,
+  0.323133617705052330, -0.946353351084490590, 0.322952150783425370,
+    -0.946415293781942110,
+  0.322770671987770710, -0.946477201682408680, 0.322589181324761390,
+    -0.946539074783614100,
+  0.322407678801070020, -0.946600913083283530, 0.322226164423369650,
+    -0.946662716579143360,
+  0.322044638198334620, -0.946724485268921170, 0.321863100132638580,
+    -0.946786219150346000,
+  0.321681550232956640, -0.946847918221148000, 0.321499988505963450,
+    -0.946909582479058760,
+  0.321318414958334910, -0.946971211921810880, 0.321136829596746780,
+    -0.947032806547138620,
+  0.320955232427875210, -0.947094366352777220, 0.320773623458397440,
+    -0.947155891336463270,
+  0.320592002694990330, -0.947217381495934820, 0.320410370144331880,
+    -0.947278836828930880,
+  0.320228725813100020, -0.947340257333191940, 0.320047069707973140,
+    -0.947401643006459900,
+  0.319865401835630610, -0.947462993846477700, 0.319683722202751370,
+    -0.947524309850989570,
+  0.319502030816015750, -0.947585591017741090, 0.319320327682103720,
+    -0.947646837344479190,
+  0.319138612807695900, -0.947708048828952100, 0.318956886199473770,
+    -0.947769225468909180,
+  0.318775147864118480, -0.947830367262101010, 0.318593397808312470,
+    -0.947891474206279730,
+  0.318411636038737960, -0.947952546299198560, 0.318229862562077580,
+    -0.948013583538612200,
+  0.318048077385015060, -0.948074585922276230, 0.317866280514233660,
+    -0.948135553447947980,
+  0.317684471956418020, -0.948196486113385580, 0.317502651718252260,
+    -0.948257383916349060,
+  0.317320819806421790, -0.948318246854599090, 0.317138976227611890,
+    -0.948379074925898120,
+  0.316957120988508150, -0.948439868128009620, 0.316775254095797380,
+    -0.948500626458698260,
+  0.316593375556165850, -0.948561349915730270, 0.316411485376301090,
+    -0.948622038496872990,
+  0.316229583562890490, -0.948682692199895090, 0.316047670122621860,
+    -0.948743311022566480,
+  0.315865745062184070, -0.948803894962658380, 0.315683808388265600,
+    -0.948864444017943340,
+  0.315501860107556040, -0.948924958186195160, 0.315319900226745050,
+    -0.948985437465188710,
+  0.315137928752522440, -0.949045881852700560, 0.314955945691579250,
+    -0.949106291346508260,
+  0.314773951050606070, -0.949166665944390700, 0.314591944836294710,
+    -0.949227005644128210,
+  0.314409927055336820, -0.949287310443502010, 0.314227897714424500,
+    -0.949347580340295210,
+  0.314045856820250820, -0.949407815332291460, 0.313863804379508500,
+    -0.949468015417276550,
+  0.313681740398891570, -0.949528180593036670, 0.313499664885093450,
+    -0.949588310857359950,
+  0.313317577844809070, -0.949648406208035480, 0.313135479284732950,
+    -0.949708466642853800,
+  0.312953369211560200, -0.949768492159606680, 0.312771247631986880,
+    -0.949828482756087000,
+  0.312589114552708660, -0.949888438430089300, 0.312406969980422500,
+    -0.949948359179409010,
+  0.312224813921825050, -0.950008245001843000, 0.312042646383613510,
+    -0.950068095895189590,
+  0.311860467372486130, -0.950127911857248100, 0.311678276895140550,
+    -0.950187692885819280,
+  0.311496074958275970, -0.950247438978705230, 0.311313861568591090,
+    -0.950307150133709140,
+  0.311131636732785270, -0.950366826348635780, 0.310949400457558760,
+    -0.950426467621290900,
+  0.310767152749611470, -0.950486073949481700, 0.310584893615644560,
+    -0.950545645331016600,
+  0.310402623062358880, -0.950605181763705230, 0.310220341096455910,
+    -0.950664683245358910,
+  0.310038047724638000, -0.950724149773789610, 0.309855742953607130,
+    -0.950783581346811070,
+  0.309673426790066490, -0.950842977962238160, 0.309491099240719050,
+    -0.950902339617887060,
+  0.309308760312268780, -0.950961666311575080, 0.309126410011419550,
+    -0.951020958041121080,
+  0.308944048344875710, -0.951080214804345010, 0.308761675319342570,
+    -0.951139436599068190,
+  0.308579290941525030, -0.951198623423113230, 0.308396895218129240,
+    -0.951257775274304000,
+  0.308214488155861220, -0.951316892150465550, 0.308032069761427330,
+    -0.951375974049424420,
+  0.307849640041534980, -0.951435020969008340, 0.307667199002891190,
+    -0.951494032907046370,
+  0.307484746652204160, -0.951553009861368590, 0.307302282996181950,
+    -0.951611951829806730,
+  0.307119808041533100, -0.951670858810193860, 0.306937321794967020,
+    -0.951729730800363720,
+  0.306754824263192780, -0.951788567798152130, 0.306572315452920800,
+    -0.951847369801395620,
+  0.306389795370861080, -0.951906136807932230, 0.306207264023724280,
+    -0.951964868815601380,
+  0.306024721418221900, -0.952023565822243570, 0.305842167561065080,
+    -0.952082227825700620,
+  0.305659602458966230, -0.952140854823815830, 0.305477026118637360,
+    -0.952199446814433580,
+  0.305294438546791720, -0.952258003795399600, 0.305111839750142220,
+    -0.952316525764560830,
+  0.304929229735402430, -0.952375012719765880, 0.304746608509286640,
+    -0.952433464658864030,
+  0.304563976078509050, -0.952491881579706320, 0.304381332449784940,
+    -0.952550263480144930,
+  0.304198677629829270, -0.952608610358033240, 0.304016011625357570,
+    -0.952666922211226170,
+  0.303833334443086470, -0.952725199037579570, 0.303650646089731910,
+    -0.952783440834950920,
+  0.303467946572011370, -0.952841647601198720, 0.303285235896641910,
+    -0.952899819334182880,
+  0.303102514070341060, -0.952957956031764700, 0.302919781099827420,
+    -0.953016057691806530,
+  0.302737036991819140, -0.953074124312172200, 0.302554281753035670,
+    -0.953132155890726750,
+  0.302371515390196130, -0.953190152425336560, 0.302188737910020040,
+    -0.953248113913869320,
+  0.302005949319228200, -0.953306040354193750, 0.301823149624540650,
+    -0.953363931744180330,
+  0.301640338832678880, -0.953421788081700310, 0.301457516950363940,
+    -0.953479609364626610,
+  0.301274683984318000, -0.953537395590833280, 0.301091839941263210,
+    -0.953595146758195680,
+  0.300908984827921890, -0.953652862864590500, 0.300726118651017620,
+    -0.953710543907895560,
+  0.300543241417273400, -0.953768189885990330, 0.300360353133413580,
+    -0.953825800796755050,
+  0.300177453806162120, -0.953883376638071770, 0.299994543442243580,
+    -0.953940917407823500,
+  0.299811622048383460, -0.953998423103894490, 0.299628689631306790,
+    -0.954055893724170660,
+  0.299445746197739950, -0.954113329266538800, 0.299262791754409010,
+    -0.954170729728887280,
+  0.299079826308040480, -0.954228095109105670, 0.298896849865361910,
+    -0.954285425405084650,
+  0.298713862433100390, -0.954342720614716480, 0.298530864017984230,
+    -0.954399980735894490,
+  0.298347854626741570, -0.954457205766513490, 0.298164834266100910,
+    -0.954514395704469500,
+  0.297981802942791920, -0.954571550547659630, 0.297798760663543550,
+    -0.954628670293982680,
+  0.297615707435086310, -0.954685754941338340, 0.297432643264150030,
+    -0.954742804487627940,
+  0.297249568157465890, -0.954799818930753720, 0.297066482121764840,
+    -0.954856798268619580,
+  0.296883385163778270, -0.954913742499130520, 0.296700277290238460,
+    -0.954970651620192790,
+  0.296517158507877410, -0.955027525629714160, 0.296334028823428240,
+    -0.955084364525603410,
+  0.296150888243623960, -0.955141168305770670, 0.295967736775197890,
+    -0.955197936968127710,
+  0.295784574424884370, -0.955254670510586990, 0.295601401199417360,
+    -0.955311368931062720,
+  0.295418217105532070, -0.955368032227470240, 0.295235022149963390,
+    -0.955424660397726330,
+  0.295051816339446720, -0.955481253439748770, 0.294868599680718380,
+    -0.955537811351456770,
+  0.294685372180514330, -0.955594334130771110, 0.294502133845571720,
+    -0.955650821775613220,
+  0.294318884682627570, -0.955707274283906560, 0.294135624698419080,
+    -0.955763691653575440,
+  0.293952353899684770, -0.955820073882545420, 0.293769072293162400,
+    -0.955876420968743590,
+  0.293585779885591310, -0.955932732910098170, 0.293402476683710060,
+    -0.955989009704538930,
+  0.293219162694258680, -0.956045251349996410, 0.293035837923976920,
+    -0.956101457844403040,
+  0.292852502379604810, -0.956157629185692140, 0.292669156067883570,
+    -0.956213765371798470,
+  0.292485798995553830, -0.956269866400658140, 0.292302431169357610,
+    -0.956325932270208230,
+  0.292119052596036540, -0.956381962978387620, 0.291935663282332780,
+    -0.956437958523136180,
+  0.291752263234989370, -0.956493918902394990, 0.291568852460749040,
+    -0.956549844114106820,
+  0.291385430966355720, -0.956605734156215080, 0.291201998758553020,
+    -0.956661589026664980,
+  0.291018555844085090, -0.956717408723403050, 0.290835102229696940,
+    -0.956773193244376930,
+  0.290651637922133220, -0.956828942587535370, 0.290468162928139870,
+    -0.956884656750828900,
+  0.290284677254462330, -0.956940335732208940, 0.290101180907847140,
+    -0.956995979529628230,
+  0.289917673895040860, -0.957051588141040970, 0.289734156222790250,
+    -0.957107161564402790,
+  0.289550627897843140, -0.957162699797670100, 0.289367088926946960,
+    -0.957218202838801210,
+  0.289183539316850310, -0.957273670685755200, 0.288999979074301530,
+    -0.957329103336492790,
+  0.288816408206049480, -0.957384500788975860, 0.288632826718843940,
+    -0.957439863041167570,
+  0.288449234619434170, -0.957495190091032570, 0.288265631914570830,
+    -0.957550481936536470,
+  0.288082018611004300, -0.957605738575646240, 0.287898394715485170,
+    -0.957660960006330610,
+  0.287714760234765280, -0.957716146226558870, 0.287531115175595930,
+    -0.957771297234302320,
+  0.287347459544729570, -0.957826413027532910, 0.287163793348918560,
+    -0.957881493604224250,
+  0.286980116594915570, -0.957936538962351420, 0.286796429289474190,
+    -0.957991549099890370,
+  0.286612731439347790, -0.958046524014818600, 0.286429023051290750,
+    -0.958101463705114620,
+  0.286245304132057120, -0.958156368168758820, 0.286061574688402100,
+    -0.958211237403732260,
+  0.285877834727080730, -0.958266071408017670, 0.285694084254848320,
+    -0.958320870179598880,
+  0.285510323278461380, -0.958375633716461170, 0.285326551804675810,
+    -0.958430362016591040,
+  0.285142769840248720, -0.958485055077976100, 0.284958977391937150,
+    -0.958539712898605730,
+  0.284775174466498300, -0.958594335476470220, 0.284591361070690550,
+    -0.958648922809561040,
+  0.284407537211271820, -0.958703474895871600, 0.284223702895001100,
+    -0.958757991733395710,
+  0.284039858128637360, -0.958812473320129200, 0.283856002918939750,
+    -0.958866919654069010,
+  0.283672137272668550, -0.958921330733213060, 0.283488261196583550,
+    -0.958975706555561080,
+  0.283304374697445790, -0.959030047119113550, 0.283120477782015990,
+    -0.959084352421872730,
+  0.282936570457055390, -0.959138622461841890, 0.282752652729326040,
+    -0.959192857237025740,
+  0.282568724605589740, -0.959247056745430090, 0.282384786092609420,
+    -0.959301220985062210,
+  0.282200837197147500, -0.959355349953930790, 0.282016877925967690,
+    -0.959409443650045550,
+  0.281832908285833460, -0.959463502071417510, 0.281648928283508680,
+    -0.959517525216059260,
+  0.281464937925758050, -0.959571513081984520, 0.281280937219346110,
+    -0.959625465667208300,
+  0.281096926171038320, -0.959679382969746750, 0.280912904787600120,
+    -0.959733264987617680,
+  0.280728873075797190, -0.959787111718839900, 0.280544831042396360,
+    -0.959840923161433660,
+  0.280360778694163810, -0.959894699313420530, 0.280176716037867040,
+    -0.959948440172823210,
+  0.279992643080273380, -0.960002145737665850, 0.279808559828150390,
+    -0.960055816005973890,
+  0.279624466288266700, -0.960109450975773940, 0.279440362467390510,
+    -0.960163050645094000,
+  0.279256248372291240, -0.960216615011963430, 0.279072124009737970,
+    -0.960270144074412800,
+  0.278887989386500280, -0.960323637830473920, 0.278703844509348600,
+    -0.960377096278180130,
+  0.278519689385053060, -0.960430519415565790, 0.278335524020384970,
+    -0.960483907240666790,
+  0.278151348422115090, -0.960537259751520050, 0.277967162597015430,
+    -0.960590576946164120,
+  0.277782966551857800, -0.960643858822638470, 0.277598760293414290,
+    -0.960697105378984450,
+  0.277414543828458200, -0.960750316613243950, 0.277230317163762120,
+    -0.960803492523460760,
+  0.277046080306099950, -0.960856633107679660, 0.276861833262245390,
+    -0.960909738363946770,
+  0.276677576038972420, -0.960962808290309780, 0.276493308643056100,
+    -0.961015842884817230,
+  0.276309031081271030, -0.961068842145519350, 0.276124743360392890,
+    -0.961121806070467380,
+  0.275940445487197320, -0.961174734657714080, 0.275756137468460120,
+    -0.961227627905313460,
+  0.275571819310958250, -0.961280485811320640, 0.275387491021468140,
+    -0.961333308373792270,
+  0.275203152606767370, -0.961386095590786250, 0.275018804073633380,
+    -0.961438847460361570,
+  0.274834445428843940, -0.961491563980579000, 0.274650076679177790,
+    -0.961544245149499990,
+  0.274465697831413220, -0.961596890965187860, 0.274281308892329710,
+    -0.961649501425706820,
+  0.274096909868706330, -0.961702076529122540, 0.273912500767323320,
+    -0.961754616273502010,
+  0.273728081594960650, -0.961807120656913540, 0.273543652358398730,
+    -0.961859589677426570,
+  0.273359213064418790, -0.961912023333112100, 0.273174763719801870,
+    -0.961964421622042320,
+  0.272990304331329980, -0.962016784542290560, 0.272805834905784920,
+    -0.962069112091931580,
+  0.272621355449948980, -0.962121404269041580, 0.272436865970605350,
+    -0.962173661071697770,
+  0.272252366474536660, -0.962225882497979020, 0.272067856968526980,
+    -0.962278068545965090,
+  0.271883337459359890, -0.962330219213737400, 0.271698807953819510,
+    -0.962382334499378380,
+  0.271514268458690810, -0.962434414400971990, 0.271329718980758420,
+    -0.962486458916603450,
+  0.271145159526808070, -0.962538468044359160, 0.270960590103625330,
+    -0.962590441782326780,
+  0.270776010717996010, -0.962642380128595710, 0.270591421376707050,
+    -0.962694283081255930,
+  0.270406822086544820, -0.962746150638399410, 0.270222212854296930,
+    -0.962797982798119010,
+  0.270037593686750510, -0.962849779558509030, 0.269852964590693910,
+    -0.962901540917665000,
+  0.269668325572915200, -0.962953266873683880, 0.269483676640202840,
+    -0.963004957424663850,
+  0.269299017799346230, -0.963056612568704340, 0.269114349057134330,
+    -0.963108232303906190,
+  0.268929670420357310, -0.963159816628371360, 0.268744981895805090,
+    -0.963211365540203480,
+  0.268560283490267890, -0.963262879037507070, 0.268375575210537010,
+    -0.963314357118388090,
+  0.268190857063403180, -0.963365799780954050, 0.268006129055658350,
+    -0.963417207023313350,
+  0.267821391194094320, -0.963468578843575950, 0.267636643485503090,
+    -0.963519915239853140,
+  0.267451885936677740, -0.963571216210257210, 0.267267118554410930,
+    -0.963622481752902220,
+  0.267082341345496350, -0.963673711865903230, 0.266897554316727510,
+    -0.963724906547376410,
+  0.266712757474898420, -0.963776065795439840, 0.266527950826803810,
+    -0.963827189608212340,
+  0.266343134379238180, -0.963878277983814200, 0.266158308138997050,
+    -0.963929330920367140,
+  0.265973472112875530, -0.963980348415994110, 0.265788626307669970,
+    -0.964031330468819280,
+  0.265603770730176440, -0.964082277076968140, 0.265418905387191260,
+    -0.964133188238567640,
+  0.265234030285511900, -0.964184063951745720, 0.265049145431935200,
+    -0.964234904214632200,
+  0.264864250833259320, -0.964285709025357370, 0.264679346496282050,
+    -0.964336478382053720,
+  0.264494432427801630, -0.964387212282854290, 0.264309508634617220,
+    -0.964437910725893910,
+  0.264124575123527490, -0.964488573709308410, 0.263939631901332410,
+    -0.964539201231235150,
+  0.263754678974831510, -0.964589793289812650, 0.263569716350824880,
+    -0.964640349883180930,
+  0.263384744036113390, -0.964690871009480920, 0.263199762037497560,
+    -0.964741356666855340,
+  0.263014770361779060, -0.964791806853447900, 0.262829769015759330,
+    -0.964842221567403510,
+  0.262644758006240100, -0.964892600806868890, 0.262459737340024090,
+    -0.964942944569991410,
+  0.262274707023913590, -0.964993252854920320, 0.262089667064712100,
+    -0.965043525659805890,
+  0.261904617469222560, -0.965093762982799590, 0.261719558244249080,
+    -0.965143964822054450,
+  0.261534489396595630, -0.965194131175724720, 0.261349410933066350,
+    -0.965244262041965780,
+  0.261164322860466590, -0.965294357418934660, 0.260979225185601020,
+    -0.965344417304789370,
+  0.260794117915275570, -0.965394441697689400, 0.260609001056295920,
+    -0.965444430595795430,
+  0.260423874615468010, -0.965494383997269500, 0.260238738599598950,
+    -0.965544301900275070,
+  0.260053593015495130, -0.965594184302976830, 0.259868437869964330,
+    -0.965644031203540590,
+  0.259683273169813930, -0.965693842600133690, 0.259498098921851660,
+    -0.965743618490924830,
+  0.259312915132886350, -0.965793358874083570, 0.259127721809726150,
+    -0.965843063747781510,
+  0.258942518959180580, -0.965892733110190860, 0.258757306588058840,
+    -0.965942366959485540,
+  0.258572084703170390, -0.965991965293840570, 0.258386853311325710,
+    -0.966041528111432400,
+  0.258201612419334870, -0.966091055410438830, 0.258016362034009070,
+    -0.966140547189038750,
+  0.257831102162158930, -0.966190003445412620, 0.257645832810596440,
+    -0.966239424177741890,
+  0.257460553986133210, -0.966288809384209580, 0.257275265695581120,
+    -0.966338159063000130,
+  0.257089967945753230, -0.966387473212298790, 0.256904660743461850,
+    -0.966436751830292650,
+  0.256719344095520720, -0.966485994915169840, 0.256534018008743200,
+    -0.966535202465119700,
+  0.256348682489942910, -0.966584374478333120, 0.256163337545934570,
+    -0.966633510953002100,
+  0.255977983183532380, -0.966682611887320190, 0.255792619409551670,
+    -0.966731677279481840,
+  0.255607246230807550, -0.966780707127683270, 0.255421863654115460,
+    -0.966829701430121810,
+  0.255236471686291820, -0.966878660184995910, 0.255051070334152530,
+    -0.966927583390505660,
+  0.254865659604514630, -0.966976471044852070, 0.254680239504194990,
+    -0.967025323146237900,
+  0.254494810040010790, -0.967074139692867040, 0.254309371218780110,
+    -0.967122920682944360,
+  0.254123923047320620, -0.967171666114676640, 0.253938465532451140,
+    -0.967220375986271310,
+  0.253752998680989940, -0.967269050295937790, 0.253567522499756610,
+    -0.967317689041886310,
+  0.253382036995570270, -0.967366292222328510, 0.253196542175250560,
+    -0.967414859835477480,
+  0.253011038045617980, -0.967463391879547440, 0.252825524613492610,
+    -0.967511888352754150,
+  0.252640001885695580, -0.967560349253314360, 0.252454469869047900,
+    -0.967608774579446380,
+  0.252268928570370810, -0.967657164329369880, 0.252083377996486560,
+    -0.967705518501305480,
+  0.251897818154216910, -0.967753837093475510, 0.251712249050384750,
+    -0.967802120104103270,
+  0.251526670691812780, -0.967850367531413620, 0.251341083085323880,
+    -0.967898579373632660,
+  0.251155486237742030, -0.967946755628987800, 0.250969880155890720,
+    -0.967994896295707670,
+  0.250784264846594550, -0.968043001372022260, 0.250598640316677830,
+    -0.968091070856162970,
+  0.250413006572965280, -0.968139104746362330, 0.250227363622282540,
+    -0.968187103040854420,
+  0.250041711471454650, -0.968235065737874320, 0.249856050127308050,
+    -0.968282992835658660,
+  0.249670379596668520, -0.968330884332445300, 0.249484699886363010,
+    -0.968378740226473300,
+  0.249299011003218300, -0.968426560515983190, 0.249113312954061360,
+    -0.968474345199216820,
+  0.248927605745720260, -0.968522094274417270, 0.248741889385022420,
+    -0.968569807739828930,
+  0.248556163878796620, -0.968617485593697540, 0.248370429233871150,
+    -0.968665127834269950,
+  0.248184685457074780, -0.968712734459794780, 0.247998932555237220,
+    -0.968760305468521430,
+  0.247813170535187620, -0.968807840858700970, 0.247627399403756330,
+    -0.968855340628585580,
+  0.247441619167773440, -0.968902804776428870, 0.247255829834069320,
+    -0.968950233300485800,
+  0.247070031409475370, -0.968997626199012310, 0.246884223900822430,
+    -0.969044983470266240,
+  0.246698407314942500, -0.969092305112506100, 0.246512581658667380,
+    -0.969139591123992280,
+  0.246326746938829060, -0.969186841502985950, 0.246140903162260640,
+    -0.969234056247750050,
+  0.245955050335794590, -0.969281235356548530, 0.245769188466264670,
+    -0.969328378827646660,
+  0.245583317560504000, -0.969375486659311280, 0.245397437625346990,
+    -0.969422558849810320,
+  0.245211548667627680, -0.969469595397412950, 0.245025650694180470,
+    -0.969516596300390000,
+  0.244839743711840750, -0.969563561557013180, 0.244653827727443320,
+    -0.969610491165555870,
+  0.244467902747824210, -0.969657385124292450, 0.244281968779819170,
+    -0.969704243431498750,
+  0.244096025830264210, -0.969751066085452140, 0.243910073905996370,
+    -0.969797853084430890,
+  0.243724113013852130, -0.969844604426714830, 0.243538143160669180,
+    -0.969891320110585100,
+  0.243352164353284880, -0.969938000134323960, 0.243166176598536930,
+    -0.969984644496215240,
+  0.242980179903263980, -0.970031253194543970, 0.242794174274304190,
+    -0.970077826227596420,
+  0.242608159718496890, -0.970124363593660280, 0.242422136242681050,
+    -0.970170865291024360,
+  0.242236103853696040, -0.970217331317979160, 0.242050062558382180,
+    -0.970263761672816140,
+  0.241864012363579210, -0.970310156353828110, 0.241677953276128090,
+    -0.970356515359309450,
+  0.241491885302869300, -0.970402838687555500, 0.241305808450644390,
+    -0.970449126336863090,
+  0.241119722726294730, -0.970495378305530450, 0.240933628136661910,
+    -0.970541594591857070,
+  0.240747524688588540, -0.970587775194143630, 0.240561412388916620,
+    -0.970633920110692160,
+  0.240375291244489500, -0.970680029339806130, 0.240189161262150040,
+    -0.970726102879790110,
+  0.240003022448741500, -0.970772140728950350, 0.239816874811108110,
+    -0.970818142885593870,
+  0.239630718356093560, -0.970864109348029470, 0.239444553090542720,
+    -0.970910040114567050,
+  0.239258379021300120, -0.970955935183517970, 0.239072196155210660,
+    -0.971001794553194690,
+  0.238886004499120170, -0.971047618221911100, 0.238699804059873950,
+    -0.971093406187982460,
+  0.238513594844318500, -0.971139158449725090, 0.238327376859299970,
+    -0.971184875005457030,
+  0.238141150111664870, -0.971230555853497380, 0.237954914608260650,
+    -0.971276200992166490,
+  0.237768670355934210, -0.971321810419786160, 0.237582417361533650,
+    -0.971367384134679490,
+  0.237396155631906550, -0.971412922135170940, 0.237209885173901620,
+    -0.971458424419585960,
+  0.237023605994367340, -0.971503890986251780, 0.236837318100152380,
+    -0.971549321833496630,
+  0.236651021498106460, -0.971594716959650160, 0.236464716195078750,
+    -0.971640076363043390,
+  0.236278402197919620, -0.971685400042008540, 0.236092079513479050,
+    -0.971730687994879160,
+  0.235905748148607370, -0.971775940219990140, 0.235719408110155930,
+    -0.971821156715677700,
+  0.235533059404975460, -0.971866337480279400, 0.235346702039917920,
+    -0.971911482512134000,
+  0.235160336021834860, -0.971956591809581600, 0.234973961357578310,
+    -0.972001665370963890,
+  0.234787578054001080, -0.972046703194623380, 0.234601186117955550,
+    -0.972091705278904430,
+  0.234414785556295250, -0.972136671622152120, 0.234228376375873380,
+    -0.972181602222713440,
+  0.234041958583543460, -0.972226497078936270, 0.233855532186159950,
+    -0.972271356189170040,
+  0.233669097190576820, -0.972316179551765300, 0.233482653603649170,
+    -0.972360967165074140,
+  0.233296201432231560, -0.972405719027449770, 0.233109740683179740,
+    -0.972450435137246830,
+  0.232923271363349120, -0.972495115492821190, 0.232736793479595420,
+    -0.972539760092530180,
+  0.232550307038775330, -0.972584368934732210, 0.232363812047745010,
+    -0.972628942017787270,
+  0.232177308513361770, -0.972673479340056430, 0.231990796442482580,
+    -0.972717980899902250,
+  0.231804275841964780, -0.972762446695688570, 0.231617746718666580,
+    -0.972806876725780370,
+  0.231431209079445730, -0.972851270988544180, 0.231244662931161110,
+    -0.972895629482347760,
+  0.231058108280671280, -0.972939952205560070, 0.230871545134835070,
+    -0.972984239156551740,
+  0.230684973500512310, -0.973028490333694100, 0.230498393384562320,
+    -0.973072705735360530,
+  0.230311804793845530, -0.973116885359925130, 0.230125207735222020,
+    -0.973161029205763530,
+  0.229938602215552260, -0.973205137271252800, 0.229751988241697600,
+    -0.973249209554771120,
+  0.229565365820518870, -0.973293246054698250, 0.229378734958878120,
+    -0.973337246769414800,
+  0.229192095663636740, -0.973381211697303290, 0.229005447941657390,
+    -0.973425140836747030,
+  0.228818791799802360, -0.973469034186130950, 0.228632127244934230,
+    -0.973512891743841370,
+  0.228445454283916550, -0.973556713508265560, 0.228258772923612350,
+    -0.973600499477792370,
+  0.228072083170885790, -0.973644249650811870, 0.227885385032600700,
+    -0.973687964025715670,
+  0.227698678515621170, -0.973731642600896400, 0.227511963626812390,
+    -0.973775285374748000,
+  0.227325240373038830, -0.973818892345666100, 0.227138508761166260,
+    -0.973862463512047300,
+  0.226951768798059980, -0.973905998872289460, 0.226765020490585720,
+    -0.973949498424792170,
+  0.226578263845610110, -0.973992962167955830, 0.226391498869999210,
+    -0.974036390100182610,
+  0.226204725570620270, -0.974079782219875680, 0.226017943954340190,
+    -0.974123138525439520,
+  0.225831154028026200, -0.974166459015280320, 0.225644355798546440,
+    -0.974209743687805110,
+  0.225457549272768540, -0.974252992541422500, 0.225270734457561240,
+    -0.974296205574542330,
+  0.225083911359792780, -0.974339382785575860, 0.224897079986332540,
+    -0.974382524172935470,
+  0.224710240344049570, -0.974425629735034990, 0.224523392439813170,
+    -0.974468699470289580,
+  0.224336536280493690, -0.974511733377115720, 0.224149671872960840,
+    -0.974554731453931230,
+  0.223962799224085520, -0.974597693699155050, 0.223775918340738290,
+    -0.974640620111207560,
+  0.223589029229790020, -0.974683510688510670, 0.223402131898112480,
+    -0.974726365429487320,
+  0.223215226352576960, -0.974769184332561770, 0.223028312600055870,
+    -0.974811967396159830,
+  0.222841390647421280, -0.974854714618708430, 0.222654460501545550,
+    -0.974897425998635820,
+  0.222467522169301990, -0.974940101534371720, 0.222280575657563370,
+    -0.974982741224347140,
+  0.222093620973203590, -0.975025345066994120, 0.221906658123096260,
+    -0.975067913060746360,
+  0.221719687114115240, -0.975110445204038890, 0.221532707953135340,
+    -0.975152941495307620,
+  0.221345720647030810, -0.975195401932990370, 0.221158725202677100,
+    -0.975237826515525820,
+  0.220971721626949060, -0.975280215241354220, 0.220784709926722670,
+    -0.975322568108916930,
+  0.220597690108873650, -0.975364885116656870, 0.220410662180277940,
+    -0.975407166263018270,
+  0.220223626147812460, -0.975449411546446380, 0.220036582018353550,
+    -0.975491620965388110,
+  0.219849529798778750, -0.975533794518291360, 0.219662469495965180,
+    -0.975575932203605610,
+  0.219475401116790340, -0.975618034019781750, 0.219288324668132580,
+    -0.975660099965271590,
+  0.219101240156869770, -0.975702130038528570, 0.218914147589880900,
+    -0.975744124238007270,
+  0.218727046974044600, -0.975786082562163930, 0.218539938316239830,
+    -0.975828005009455550,
+  0.218352821623346430, -0.975869891578341030, 0.218165696902243770,
+    -0.975911742267280170,
+  0.217978564159812290, -0.975953557074734300, 0.217791423402932120,
+    -0.975995335999165880,
+  0.217604274638483670, -0.976037079039039020, 0.217417117873348300,
+    -0.976078786192818850,
+  0.217229953114406790, -0.976120457458971910, 0.217042780368541080,
+    -0.976162092835966110,
+  0.216855599642632570, -0.976203692322270560, 0.216668410943563790,
+    -0.976245255916355800,
+  0.216481214278216900, -0.976286783616693630, 0.216294009653474370,
+    -0.976328275421757260,
+  0.216106797076219600, -0.976369731330021140, 0.215919576553335460,
+    -0.976411151339961040,
+  0.215732348091705940, -0.976452535450054060, 0.215545111698214660,
+    -0.976493883658778540,
+  0.215357867379745550, -0.976535195964614470, 0.215170615143183500,
+    -0.976576472366042610,
+  0.214983354995412820, -0.976617712861545640, 0.214796086943318920,
+    -0.976658917449606980,
+  0.214608810993786920, -0.976700086128711840, 0.214421527153702190,
+    -0.976741218897346550,
+  0.214234235429951100, -0.976782315753998650, 0.214046935829419330,
+    -0.976823376697157240,
+  0.213859628358993830, -0.976864401725312640, 0.213672313025561140,
+    -0.976905390836956490,
+  0.213484989836008080, -0.976946344030581560, 0.213297658797222430,
+    -0.976987261304682390,
+  0.213110319916091360, -0.977028142657754390, 0.212922973199503260,
+    -0.977068988088294450,
+  0.212735618654345870, -0.977109797594800880, 0.212548256287508120,
+    -0.977150571175773200,
+  0.212360886105878580, -0.977191308829712280, 0.212173508116346080,
+    -0.977232010555120320,
+  0.211986122325800410, -0.977272676350500860, 0.211798728741130820,
+    -0.977313306214358750,
+  0.211611327369227610, -0.977353900145199960, 0.211423918216980810,
+    -0.977394458141532250,
+  0.211236501291280710, -0.977434980201864260, 0.211049076599018500,
+    -0.977475466324706050,
+  0.210861644147084830, -0.977515916508569280, 0.210674203942371490,
+    -0.977556330751966460,
+  0.210486755991769890, -0.977596709053411780, 0.210299300302171750,
+    -0.977637051411420770,
+  0.210111836880469720, -0.977677357824509930, 0.209924365733555860,
+    -0.977717628291197570,
+  0.209736886868323370, -0.977757862810002760, 0.209549400291665110,
+    -0.977798061379446360,
+  0.209361906010474190, -0.977838223998050430, 0.209174404031644700,
+    -0.977878350664338150,
+  0.208986894362070070, -0.977918441376834370, 0.208799377008644980,
+    -0.977958496134064830,
+  0.208611851978263460, -0.977998514934557140, 0.208424319277820650,
+    -0.978038497776839600,
+  0.208236778914211470, -0.978078444659442380, 0.208049230894330940,
+    -0.978118355580896660,
+  0.207861675225075150, -0.978158230539735050, 0.207674111913339540,
+    -0.978198069534491400,
+  0.207486540966020700, -0.978237872563701090, 0.207298962390014880,
+    -0.978277639625900420,
+  0.207111376192218560, -0.978317370719627650, 0.206923782379529210,
+    -0.978357065843421640,
+  0.206736180958843660, -0.978396724995823090, 0.206548571937059940,
+    -0.978436348175373730,
+  0.206360955321075680, -0.978475935380616830, 0.206173331117788770,
+    -0.978515486610096910,
+  0.205985699334098050, -0.978555001862359550, 0.205798059976901760,
+    -0.978594481135952270,
+  0.205610413053099320, -0.978633924429423100, 0.205422758569589780,
+    -0.978673331741322210,
+  0.205235096533272380, -0.978712703070200420, 0.205047426951047380,
+    -0.978752038414610340,
+  0.204859749829814420, -0.978791337773105670, 0.204672065176474290,
+    -0.978830601144241470,
+  0.204484372997927180, -0.978869828526574120, 0.204296673301074430,
+    -0.978909019918661310,
+  0.204108966092817010, -0.978948175319062200, 0.203921251380056150,
+    -0.978987294726337050,
+  0.203733529169694010, -0.979026378139047580, 0.203545799468632190,
+    -0.979065425555756930,
+  0.203358062283773370, -0.979104436975029250, 0.203170317622019920,
+    -0.979143412395430230,
+  0.202982565490274460, -0.979182351815526930, 0.202794805895440550,
+    -0.979221255233887700,
+  0.202607038844421110, -0.979260122649082020, 0.202419264344120220,
+    -0.979298954059681040,
+  0.202231482401441620, -0.979337749464256780, 0.202043693023289280,
+    -0.979376508861383170,
+  0.201855896216568160, -0.979415232249634780, 0.201668091988182500,
+    -0.979453919627588210,
+  0.201480280345037820, -0.979492570993820700, 0.201292461294039190,
+    -0.979531186346911390,
+  0.201104634842091960, -0.979569765685440520, 0.200916800996102370,
+    -0.979608309007989450,
+  0.200728959762976140, -0.979646816313141210, 0.200541111149620090,
+    -0.979685287599479930,
+  0.200353255162940420, -0.979723722865591170, 0.200165391809844500,
+    -0.979762122110061640,
+  0.199977521097239290, -0.979800485331479680, 0.199789643032032120,
+    -0.979838812528434740,
+  0.199601757621131050, -0.979877103699517640, 0.199413864871443750,
+    -0.979915358843320480,
+  0.199225964789878890, -0.979953577958436740, 0.199038057383344820,
+    -0.979991761043461200,
+  0.198850142658750120, -0.980029908096989980, 0.198662220623004320,
+    -0.980068019117620650,
+  0.198474291283016360, -0.980106094103951770, 0.198286354645696270,
+    -0.980144133054583590,
+  0.198098410717953730, -0.980182135968117320, 0.197910459506698720,
+    -0.980220102843155970,
+  0.197722501018842030, -0.980258033678303550, 0.197534535261294000,
+    -0.980295928472165290,
+  0.197346562240966000, -0.980333787223347960, 0.197158581964769040,
+    -0.980371609930459690,
+  0.196970594439614370, -0.980409396592109910, 0.196782599672414240,
+    -0.980447147206909060,
+  0.196594597670080220, -0.980484861773469380, 0.196406588439525050,
+    -0.980522540290404090,
+  0.196218571987660850, -0.980560182756327950, 0.196030548321400880,
+    -0.980597789169856850,
+  0.195842517447657990, -0.980635359529608120, 0.195654479373345370,
+    -0.980672893834200530,
+  0.195466434105377090, -0.980710392082253970, 0.195278381650666520,
+    -0.980747854272389750,
+  0.195090322016128330, -0.980785280403230430, 0.194902255208676660,
+    -0.980822670473399990,
+  0.194714181235225990, -0.980860024481523870, 0.194526100102691720,
+    -0.980897342426228390,
+  0.194338011817988600, -0.980934624306141640, 0.194149916388032530,
+    -0.980971870119892840,
+  0.193961813819739010, -0.981009079866112630, 0.193773704120023840,
+    -0.981046253543432780,
+  0.193585587295803750, -0.981083391150486590, 0.193397463353994740,
+    -0.981120492685908730,
+  0.193209332301514080, -0.981157558148334830, 0.193021194145278320,
+    -0.981194587536402320,
+  0.192833048892205290, -0.981231580848749730, 0.192644896549212240,
+    -0.981268538084016710,
+  0.192456737123216840, -0.981305459240844670, 0.192268570621137590,
+    -0.981342344317875930,
+  0.192080397049892380, -0.981379193313754560, 0.191892216416400310,
+    -0.981416006227125550,
+  0.191704028727579940, -0.981452783056635520, 0.191515833990350240,
+    -0.981489523800932130,
+  0.191327632211630990, -0.981526228458664660, 0.191139423398341420,
+    -0.981562897028483650,
+  0.190951207557401860, -0.981599529509040720, 0.190762984695732250,
+    -0.981636125898989080,
+  0.190574754820252800, -0.981672686196983110, 0.190386517937884580,
+    -0.981709210401678800,
+  0.190198274055548120, -0.981745698511732990, 0.190010023180165050,
+    -0.981782150525804310,
+  0.189821765318656580, -0.981818566442552500, 0.189633500477944220,
+    -0.981854946260638630,
+  0.189445228664950340, -0.981891289978724990, 0.189256949886596720,
+    -0.981927597595475540,
+  0.189068664149806280, -0.981963869109555240, 0.188880371461501330,
+    -0.982000104519630490,
+  0.188692071828605260, -0.982036303824369020, 0.188503765258041080,
+    -0.982072467022439890,
+  0.188315451756732120, -0.982108594112513610, 0.188127131331602530,
+    -0.982144685093261580,
+  0.187938803989575850, -0.982180739963357200, 0.187750469737576840,
+    -0.982216758721474510,
+  0.187562128582529740, -0.982252741366289370, 0.187373780531359110,
+    -0.982288687896478830,
+  0.187185425590990440, -0.982324598310721160, 0.186997063768348510,
+    -0.982360472607696210,
+  0.186808695070359330, -0.982396310786084690, 0.186620319503948420,
+    -0.982432112844569110,
+  0.186431937076041640, -0.982467878781833170, 0.186243547793565670,
+    -0.982503608596561720,
+  0.186055151663446630, -0.982539302287441240, 0.185866748692611720,
+    -0.982574959853159240,
+  0.185678338887987790, -0.982610581292404750, 0.185489922256501900,
+    -0.982646166603868050,
+  0.185301498805082040, -0.982681715786240860, 0.185113068540655510,
+    -0.982717228838215990,
+  0.184924631470150870, -0.982752705758487830, 0.184736187600495930,
+    -0.982788146545751970,
+  0.184547736938619640, -0.982823551198705240, 0.184359279491450640,
+    -0.982858919716046110,
+  0.184170815265917720, -0.982894252096474070, 0.183982344268950600,
+    -0.982929548338690060,
+  0.183793866507478390, -0.982964808441396440, 0.183605381988431350,
+    -0.983000032403296590,
+  0.183416890718739230, -0.983035220223095640, 0.183228392705332140,
+    -0.983070371899499640,
+  0.183039887955141060, -0.983105487431216290, 0.182851376475096310,
+    -0.983140566816954500,
+  0.182662858272129360, -0.983175610055424420, 0.182474333353171260,
+    -0.983210617145337640,
+  0.182285801725153320, -0.983245588085407070, 0.182097263395007760,
+    -0.983280522874346970,
+  0.181908718369666160, -0.983315421510872810, 0.181720166656061170,
+    -0.983350283993701500,
+  0.181531608261125130, -0.983385110321551180, 0.181343043191790590,
+    -0.983419900493141540,
+  0.181154471454990920, -0.983454654507193270, 0.180965893057658980,
+    -0.983489372362428730,
+  0.180777308006728670, -0.983524054057571260, 0.180588716309133280,
+    -0.983558699591345900,
+  0.180400117971807270, -0.983593308962478650, 0.180211513001684590,
+    -0.983627882169697210,
+  0.180022901405699510, -0.983662419211730250, 0.179834283190787180,
+    -0.983696920087308020,
+  0.179645658363882100, -0.983731384795162090, 0.179457026931919950,
+    -0.983765813334025240,
+  0.179268388901835880, -0.983800205702631490, 0.179079744280565390,
+    -0.983834561899716630,
+  0.178891093075044830, -0.983868881924017220, 0.178702435292209940,
+    -0.983903165774271500,
+  0.178513770938997590, -0.983937413449218920, 0.178325100022344140,
+    -0.983971624947600270,
+  0.178136422549186320, -0.984005800268157870, 0.177947738526461670,
+    -0.984039939409634970,
+  0.177759047961107140, -0.984074042370776450, 0.177570350860060790,
+    -0.984108109150328540,
+  0.177381647230260200, -0.984142139747038570, 0.177192937078643310,
+    -0.984176134159655320,
+  0.177004220412148860, -0.984210092386929030, 0.176815497237715000,
+    -0.984244014427611110,
+  0.176626767562280960, -0.984277900280454370, 0.176438031392785350,
+    -0.984311749944212780,
+  0.176249288736167940, -0.984345563417641900, 0.176060539599367960,
+    -0.984379340699498510,
+  0.175871783989325040, -0.984413081788540700, 0.175683021912979580,
+    -0.984446786683527920,
+  0.175494253377271400, -0.984480455383220930, 0.175305478389141370,
+    -0.984514087886381840,
+  0.175116696955530060, -0.984547684191773960, 0.174927909083378160,
+    -0.984581244298162180,
+  0.174739114779627310, -0.984614768204312600, 0.174550314051218490,
+    -0.984648255908992630,
+  0.174361506905093830, -0.984681707410970940, 0.174172693348194960,
+    -0.984715122709017620,
+  0.173983873387463850, -0.984748501801904210, 0.173795047029843270,
+    -0.984781844688403350,
+  0.173606214282275410, -0.984815151367289140, 0.173417375151703520,
+    -0.984848421837337010,
+  0.173228529645070490, -0.984881656097323700, 0.173039677769319390,
+    -0.984914854146027200,
+  0.172850819531394200, -0.984948015982227030, 0.172661954938238270,
+    -0.984981141604703960,
+  0.172473083996796030, -0.985014231012239840, 0.172284206714011350,
+    -0.985047284203618200,
+  0.172095323096829040, -0.985080301177623800, 0.171906433152193700,
+    -0.985113281933042590,
+  0.171717536887049970, -0.985146226468662230, 0.171528634308343500,
+    -0.985179134783271020,
+  0.171339725423019260, -0.985212006875659460, 0.171150810238023340,
+    -0.985244842744618540,
+  0.170961888760301360, -0.985277642388941220, 0.170772960996799230,
+    -0.985310405807421570,
+  0.170584026954463700, -0.985343132998854790, 0.170395086640240920,
+    -0.985375823962037710,
+  0.170206140061078120, -0.985408478695768420, 0.170017187223922090,
+    -0.985441097198846210,
+  0.169828228135719880, -0.985473679470071810, 0.169639262803419400,
+    -0.985506225508247290,
+  0.169450291233967930, -0.985538735312176060, 0.169261313434313890,
+    -0.985571208880662740,
+  0.169072329411405180, -0.985603646212513400, 0.168883339172190010,
+    -0.985636047306535420,
+  0.168694342723617440, -0.985668412161537550, 0.168505340072635900,
+    -0.985700740776329850,
+  0.168316331226194910, -0.985733033149723490, 0.168127316191243350,
+    -0.985765289280531310,
+  0.167938294974731230, -0.985797509167567370, 0.167749267583608030,
+    -0.985829692809647050,
+  0.167560234024823590, -0.985861840205586980, 0.167371194305328540,
+    -0.985893951354205210,
+  0.167182148432072880, -0.985926026254321130, 0.166993096412007770,
+    -0.985958064904755460,
+  0.166804038252083870, -0.985990067304330030, 0.166614973959252090,
+    -0.986022033451868560,
+  0.166425903540464220, -0.986053963346195440, 0.166236827002671390,
+    -0.986085856986136820,
+  0.166047744352825850, -0.986117714370520090, 0.165858655597879430,
+    -0.986149535498173860,
+  0.165669560744784140, -0.986181320367928270, 0.165480459800492890,
+    -0.986213068978614490,
+  0.165291352771957970, -0.986244781329065460, 0.165102239666132720,
+    -0.986276457418114980,
+  0.164913120489970090, -0.986308097244598670, 0.164723995250423190,
+    -0.986339700807353000,
+  0.164534863954446110, -0.986371268105216030, 0.164345726608992190,
+    -0.986402799137027220,
+  0.164156583221015890, -0.986434293901627070, 0.163967433797471110,
+    -0.986465752397857940,
+  0.163778278345312690, -0.986497174624562880, 0.163589116871495160,
+    -0.986528560580586690,
+  0.163399949382973230, -0.986559910264775410, 0.163210775886702460,
+    -0.986591223675976400,
+  0.163021596389637810, -0.986622500813038480, 0.162832410898735260,
+    -0.986653741674811350,
+  0.162643219420950450, -0.986684946260146690, 0.162454021963239190,
+    -0.986716114567897100,
+  0.162264818532558110, -0.986747246596916480, 0.162075609135863330,
+    -0.986778342346060430,
+  0.161886393780111910, -0.986809401814185420, 0.161697172472260540,
+    -0.986840425000149680,
+  0.161507945219266150, -0.986871411902812470, 0.161318712028086540,
+    -0.986902362521034470,
+  0.161129472905678780, -0.986933276853677710, 0.160940227859001140,
+    -0.986964154899605650,
+  0.160750976895011390, -0.986994996657682870, 0.160561720020667510,
+    -0.987025802126775600,
+  0.160372457242928400, -0.987056571305750970, 0.160183188568752240,
+    -0.987087304193477900,
+  0.159993914005098350, -0.987118000788826280, 0.159804633558925380,
+    -0.987148661090667570,
+  0.159615347237193090, -0.987179285097874340, 0.159426055046860750,
+    -0.987209872809320820,
+  0.159236756994887850, -0.987240424223882250, 0.159047453088234840,
+    -0.987270939340435420,
+  0.158858143333861390, -0.987301418157858430, 0.158668827738728370,
+    -0.987331860675030430,
+  0.158479506309796100, -0.987362266890832400, 0.158290179054025180,
+    -0.987392636804146240,
+  0.158100845978377090, -0.987422970413855410, 0.157911507089812640,
+    -0.987453267718844560,
+  0.157722162395293690, -0.987483528717999710, 0.157532811901781670,
+    -0.987513753410208420,
+  0.157343455616238280, -0.987543941794359230, 0.157154093545626010,
+    -0.987574093869342360,
+  0.156964725696906750, -0.987604209634049160, 0.156775352077043430,
+    -0.987634289087372160,
+  0.156585972692998590, -0.987664332228205710, 0.156396587551734940,
+    -0.987694339055445130,
+  0.156207196660216040, -0.987724309567986960, 0.156017800025404830,
+    -0.987754243764729530,
+  0.155828397654265320, -0.987784141644572180, 0.155638989553760850,
+    -0.987814003206415550,
+  0.155449575730855880, -0.987843828449161740, 0.155260156192514380,
+    -0.987873617371714200,
+  0.155070730945700510, -0.987903369972977790, 0.154881299997379400,
+    -0.987933086251858380,
+  0.154691863354515400, -0.987962766207263420, 0.154502421024073990,
+    -0.987992409838101880,
+  0.154312973013020240, -0.988022017143283530, 0.154123519328319360,
+    -0.988051588121720110,
+  0.153934059976937460, -0.988081122772324070, 0.153744594965840000,
+    -0.988110621094009820,
+  0.153555124301993500, -0.988140083085692570, 0.153365647992364020,
+    -0.988169508746289060,
+  0.153176166043917870, -0.988198898074717610, 0.152986678463622160,
+    -0.988228251069897420,
+  0.152797185258443410, -0.988257567730749460, 0.152607686435349140,
+    -0.988286848056195710,
+  0.152418182001306500, -0.988316092045159690, 0.152228671963282770,
+    -0.988345299696566150,
+  0.152039156328246160, -0.988374471009341280, 0.151849635103164180,
+    -0.988403605982412390,
+  0.151660108295005400, -0.988432704614708340, 0.151470575910737760,
+    -0.988461766905159300,
+  0.151281037957330250, -0.988490792852696590, 0.151091494441751430,
+    -0.988519782456253270,
+  0.150901945370970040, -0.988548735714763200, 0.150712390751955720,
+    -0.988577652627162020,
+  0.150522830591677370, -0.988606533192386450, 0.150333264897105050,
+    -0.988635377409374790,
+  0.150143693675208330, -0.988664185277066230, 0.149954116932956990,
+    -0.988692956794401940,
+  0.149764534677321620, -0.988721691960323780, 0.149574946915272210,
+    -0.988750390773775360,
+  0.149385353653779810, -0.988779053233701520, 0.149195754899814960,
+    -0.988807679339048340,
+  0.149006150660348470, -0.988836269088763540, 0.148816540942352030,
+    -0.988864822481795640,
+  0.148626925752796540, -0.988893339517095130, 0.148437305098654050,
+    -0.988921820193613190,
+  0.148247678986896200, -0.988950264510302990, 0.148058047424494740,
+    -0.988978672466118480,
+  0.147868410418422360, -0.989007044060015270, 0.147678767975650970,
+    -0.989035379290950310,
+  0.147489120103153680, -0.989063678157881540, 0.147299466807902820,
+    -0.989091940659768800,
+  0.147109808096871850, -0.989120166795572690, 0.146920143977033760,
+    -0.989148356564255590,
+  0.146730474455361750, -0.989176509964781010, 0.146540799538829870,
+    -0.989204626996113780,
+  0.146351119234411440, -0.989232707657220050, 0.146161433549080950,
+    -0.989260751947067640,
+  0.145971742489812370, -0.989288759864625170, 0.145782046063579860,
+    -0.989316731408863000,
+  0.145592344277358450, -0.989344666578752640, 0.145402637138122540,
+    -0.989372565373267010,
+  0.145212924652847520, -0.989400427791380380, 0.145023206828508360,
+    -0.989428253832068230,
+  0.144833483672080240, -0.989456043494307710, 0.144643755190539150,
+    -0.989483796777076760,
+  0.144454021390860440, -0.989511513679355190, 0.144264282280020530,
+    -0.989539194200123930,
+  0.144074537864995330, -0.989566838338365120, 0.143884788152761010,
+    -0.989594446093062460,
+  0.143695033150294580, -0.989622017463200780, 0.143505272864572290,
+    -0.989649552447766530,
+  0.143315507302571590, -0.989677051045747210, 0.143125736471269140,
+    -0.989704513256131850,
+  0.142935960377642700, -0.989731939077910570, 0.142746179028669620,
+    -0.989759328510075200,
+  0.142556392431327340, -0.989786681551618640, 0.142366600592594260,
+    -0.989813998201535260,
+  0.142176803519448000, -0.989841278458820530, 0.141987001218867340,
+    -0.989868522322471580,
+  0.141797193697830530, -0.989895729791486660, 0.141607380963316020,
+    -0.989922900864865450,
+  0.141417563022303130, -0.989950035541608990, 0.141227739881770480,
+    -0.989977133820719610,
+  0.141037911548697770, -0.990004195701200910, 0.140848078030064220,
+    -0.990031221182058000,
+  0.140658239332849240, -0.990058210262297120, 0.140468395464033110,
+    -0.990085162940925970,
+  0.140278546430595420, -0.990112079216953770, 0.140088692239516780,
+    -0.990138959089390650,
+  0.139898832897777380, -0.990165802557248400, 0.139708968412357580,
+    -0.990192609619540030,
+  0.139519098790238600, -0.990219380275280000, 0.139329224038400980,
+    -0.990246114523483990,
+  0.139139344163826280, -0.990272812363169110, 0.138949459173495440,
+    -0.990299473793353590,
+  0.138759569074390380, -0.990326098813057330, 0.138569673873492640,
+    -0.990352687421301340,
+  0.138379773577783890, -0.990379239617108160, 0.138189868194246640,
+    -0.990405755399501260,
+  0.137999957729862760, -0.990432234767505970, 0.137810042191615130,
+    -0.990458677720148620,
+  0.137620121586486180, -0.990485084256456980, 0.137430195921458550,
+    -0.990511454375460290,
+  0.137240265203515700, -0.990537788076188750, 0.137050329439640380,
+    -0.990564085357674370,
+  0.136860388636816430, -0.990590346218950150, 0.136670442802027230,
+    -0.990616570659050620,
+  0.136480491942256310, -0.990642758677011570, 0.136290536064488070,
+    -0.990668910271869980,
+  0.136100575175706200, -0.990695025442664630, 0.135910609282895440,
+    -0.990721104188435180,
+  0.135720638393040080, -0.990747146508222710, 0.135530662513124620,
+    -0.990773152401069780,
+  0.135340681650134330, -0.990799121866020370, 0.135150695811053850,
+    -0.990825054902119470,
+  0.134960705002868830, -0.990850951508413620, 0.134770709232564290,
+    -0.990876811683950810,
+  0.134580708507126220, -0.990902635427780010, 0.134390702833540240,
+    -0.990928422738951990,
+  0.134200692218792020, -0.990954173616518500, 0.134010676669868210,
+    -0.990979888059532740,
+  0.133820656193754690, -0.991005566067049370, 0.133630630797438390,
+    -0.991031207638124130,
+  0.133440600487905820, -0.991056812771814340, 0.133250565272143570,
+    -0.991082381467178640,
+  0.133060525157139180, -0.991107913723276780, 0.132870480149879400,
+    -0.991133409539170170,
+  0.132680430257352130, -0.991158868913921350, 0.132490375486544710,
+    -0.991184291846594180,
+  0.132300315844444680, -0.991209678336254060, 0.132110251338040470,
+    -0.991235028381967420,
+  0.131920181974319760, -0.991260341982802440, 0.131730107760271280,
+    -0.991285619137828200,
+  0.131540028702883280, -0.991310859846115440, 0.131349944809144220,
+    -0.991336064106736140,
+  0.131159856086043410, -0.991361231918763460, 0.130969762540569380,
+    -0.991386363281272280,
+  0.130779664179711790, -0.991411458193338540, 0.130589561010459600,
+    -0.991436516654039420,
+  0.130399453039802740, -0.991461538662453790, 0.130209340274730770,
+    -0.991486524217661480,
+  0.130019222722233350, -0.991511473318743900, 0.129829100389301010,
+    -0.991536385964783880,
+  0.129638973282923540, -0.991561262154865290, 0.129448841410091830,
+    -0.991586101888073500,
+  0.129258704777796270, -0.991610905163495370, 0.129068563393027410,
+    -0.991635671980218740,
+  0.128878417262776660, -0.991660402337333210, 0.128688266394034690,
+    -0.991685096233929530,
+  0.128498110793793220, -0.991709753669099530, 0.128307950469043590,
+    -0.991734374641936810,
+  0.128117785426777150, -0.991758959151536110, 0.127927615673986190,
+    -0.991783507196993490,
+  0.127737441217662280, -0.991808018777406430, 0.127547262064798050,
+    -0.991832493891873780,
+  0.127357078222385570, -0.991856932539495360, 0.127166889697417180,
+    -0.991881334719373010,
+  0.126976696496885980, -0.991905700430609330, 0.126786498627784430,
+    -0.991930029672308480,
+  0.126596296097105960, -0.991954322443575950, 0.126406088911843320,
+    -0.991978578743518580,
+  0.126215877078990400, -0.992002798571244520, 0.126025660605540460,
+    -0.992026981925863360,
+  0.125835439498487020, -0.992051128806485720, 0.125645213764824380,
+    -0.992075239212224070,
+  0.125454983411546210, -0.992099313142191800, 0.125264748445647110,
+    -0.992123350595503720,
+  0.125074508874121300, -0.992147351571276090, 0.124884264703963150,
+    -0.992171316068626520,
+  0.124694015942167770, -0.992195244086673920, 0.124503762595729650,
+    -0.992219135624538450,
+  0.124313504671644300, -0.992242990681341700, 0.124123242176906760,
+    -0.992266809256206580,
+  0.123932975118512200, -0.992290591348257370, 0.123742703503456630,
+    -0.992314336956619640,
+  0.123552427338735370, -0.992338046080420420, 0.123362146631344750,
+    -0.992361718718787870,
+  0.123171861388280650, -0.992385354870851670, 0.122981571616539080,
+    -0.992408954535742850,
+  0.122791277323116900, -0.992432517712593550, 0.122600978515010240,
+    -0.992456044400537700,
+  0.122410675199216280, -0.992479534598709970, 0.122220367382731500,
+    -0.992502988306246950,
+  0.122030055072553410, -0.992526405522286100, 0.121839738275679020,
+    -0.992549786245966570,
+  0.121649416999105540, -0.992573130476428810, 0.121459091249830950,
+    -0.992596438212814290,
+  0.121268761034852550, -0.992619709454266140, 0.121078426361168710,
+    -0.992642944199928820,
+  0.120888087235777220, -0.992666142448948020, 0.120697743665676120,
+    -0.992689304200470750,
+  0.120507395657864240, -0.992712429453645460, 0.120317043219339670,
+    -0.992735518207621850,
+  0.120126686357101580, -0.992758570461551140, 0.119936325078148620,
+    -0.992781586214585570,
+  0.119745959389479630, -0.992804565465879140, 0.119555589298094230,
+    -0.992827508214586760,
+  0.119365214810991350, -0.992850414459865100, 0.119174835935170960,
+    -0.992873284200871730,
+  0.118984452677632520, -0.992896117436765980, 0.118794065045375670,
+    -0.992918914166708300,
+  0.118603673045400840, -0.992941674389860470, 0.118413276684707770,
+    -0.992964398105385610,
+  0.118222875970297250, -0.992987085312448390, 0.118032470909169300,
+    -0.993009736010214580,
+  0.117842061508325020, -0.993032350197851410, 0.117651647774765000,
+    -0.993054927874527320,
+  0.117461229715489990, -0.993077469039412300, 0.117270807337501560,
+    -0.993099973691677570,
+  0.117080380647800550, -0.993122441830495580, 0.116889949653388850,
+    -0.993144873455040430,
+  0.116699514361267840, -0.993167268564487230, 0.116509074778439050,
+    -0.993189627158012620,
+  0.116318630911904880, -0.993211949234794500, 0.116128182768666920,
+    -0.993234234794012290,
+  0.115937730355727850, -0.993256483834846440, 0.115747273680089870,
+    -0.993278696356479030,
+  0.115556812748755290, -0.993300872358093280, 0.115366347568727250,
+    -0.993323011838873950,
+  0.115175878147008180, -0.993345114798006910, 0.114985404490601530,
+    -0.993367181234679600,
+  0.114794926606510250, -0.993389211148080650, 0.114604444501737460,
+    -0.993411204537400060,
+  0.114413958183287050, -0.993433161401829360, 0.114223467658162260,
+    -0.993455081740560960,
+  0.114032972933367300, -0.993476965552789190, 0.113842474015905660,
+    -0.993498812837709360,
+  0.113651970912781920, -0.993520623594518090, 0.113461463631000080,
+    -0.993542397822413600,
+  0.113270952177564360, -0.993564135520595300, 0.113080436559479720,
+    -0.993585836688263950,
+  0.112889916783750470, -0.993607501324621610, 0.112699392857381910,
+    -0.993629129428871720,
+  0.112508864787378830, -0.993650721000219120, 0.112318332580746190,
+    -0.993672276037870010,
+  0.112127796244489750, -0.993693794541031680, 0.111937255785614560,
+    -0.993715276508913230,
+  0.111746711211126660, -0.993736721940724600, 0.111556162528031630,
+    -0.993758130835677430,
+  0.111365609743335190, -0.993779503192984580, 0.111175052864043830,
+    -0.993800839011860120,
+  0.110984491897163380, -0.993822138291519660, 0.110793926849700630,
+    -0.993843401031180180,
+  0.110603357728661910, -0.993864627230059750, 0.110412784541053660,
+    -0.993885816887378090,
+  0.110222207293883180, -0.993906970002356060, 0.110031625994157000,
+    -0.993928086574215830,
+  0.109841040648882680, -0.993949166602181130, 0.109650451265067080,
+    -0.993970210085476920,
+  0.109459857849718030, -0.993991217023329380, 0.109269260409842920,
+    -0.994012187414966220,
+  0.109078658952449240, -0.994033121259616400, 0.108888053484545310,
+    -0.994054018556510210,
+  0.108697444013138670, -0.994074879304879370, 0.108506830545237980,
+    -0.994095703503956930,
+  0.108316213087851300, -0.994116491152977070, 0.108125591647986880,
+    -0.994137242251175720,
+  0.107934966232653760, -0.994157956797789730, 0.107744336848860260,
+    -0.994178634792057590,
+  0.107553703503615710, -0.994199276233218910, 0.107363066203928920,
+    -0.994219881120514850,
+  0.107172424956808870, -0.994240449453187900, 0.106981779769265340,
+    -0.994260981230481790,
+  0.106791130648307380, -0.994281476451641550, 0.106600477600945030,
+    -0.994301935115913580,
+  0.106409820634187840, -0.994322357222545810, 0.106219159755045520,
+    -0.994342742770787270,
+  0.106028494970528530, -0.994363091759888570, 0.105837826287646670,
+    -0.994383404189101430,
+  0.105647153713410700, -0.994403680057679100, 0.105456477254830660,
+    -0.994423919364875950,
+  0.105265796918917650, -0.994444122109948040, 0.105075112712682180,
+    -0.994464288292152390,
+  0.104884424643134970, -0.994484417910747600, 0.104693732717287500,
+    -0.994504510964993590,
+  0.104503036942150550, -0.994524567454151740, 0.104312337324735870,
+    -0.994544587377484300,
+  0.104121633872054730, -0.994564570734255420, 0.103930926591118540,
+    -0.994584517523730340,
+  0.103740215488939480, -0.994604427745175660, 0.103549500572529040,
+    -0.994624301397859400,
+  0.103358781848899700, -0.994644138481050710, 0.103168059325063390,
+    -0.994663938994020280,
+  0.102977333008032250, -0.994683702936040250, 0.102786602904819150,
+    -0.994703430306383860,
+  0.102595869022436280, -0.994723121104325700, 0.102405131367896790,
+    -0.994742775329142010,
+  0.102214389948213370, -0.994762392980109930, 0.102023644770398800,
+    -0.994781974056508260,
+  0.101832895841466670, -0.994801518557617110, 0.101642143168429830,
+    -0.994821026482717860,
+  0.101451386758302160, -0.994840497831093180, 0.101260626618096800,
+    -0.994859932602027320,
+  0.101069862754827880, -0.994879330794805620, 0.100879095175509010,
+    -0.994898692408714870,
+  0.100688323887153970, -0.994918017443043200, 0.100497548896777310,
+    -0.994937305897080070,
+  0.100306770211392820, -0.994956557770116380, 0.100115987838015370,
+    -0.994975773061444140,
+  0.099925201783659226, -0.994994951770357020, 0.099734412055338839,
+    -0.995014093896149700,
+  0.099543618660069444, -0.995033199438118630, 0.099352821604865513,
+    -0.995052268395561160,
+  0.099162020896742573, -0.995071300767776170, 0.098971216542715582,
+    -0.995090296554063890,
+  0.098780408549799664, -0.995109255753726110, 0.098589596925010708,
+    -0.995128178366065490,
+  0.098398781675363881, -0.995147064390386470, 0.098207962807875346,
+    -0.995165913825994620,
+  0.098017140329560770, -0.995184726672196820, 0.097826314247435903,
+    -0.995203502928301510,
+  0.097635484568517339, -0.995222242593618240, 0.097444651299820870,
+    -0.995240945667458130,
+  0.097253814448363354, -0.995259612149133390, 0.097062974021160875,
+    -0.995278242037957670,
+  0.096872130025230527, -0.995296835333246090, 0.096681282467588864,
+    -0.995315392034315070,
+  0.096490431355252607, -0.995333912140482280, 0.096299576695239225,
+    -0.995352395651066810,
+  0.096108718494565468, -0.995370842565388990, 0.095917856760249096,
+    -0.995389252882770690,
+  0.095726991499307315, -0.995407626602534900, 0.095536122718757485,
+    -0.995425963724006160,
+  0.095345250425617742, -0.995444264246510340, 0.095154374626905472,
+    -0.995462528169374420,
+  0.094963495329639061, -0.995480755491926940, 0.094772612540836410,
+    -0.995498946213497770,
+  0.094581726267515473, -0.995517100333418110, 0.094390836516695067,
+    -0.995535217851020390,
+  0.094199943295393190, -0.995553298765638470, 0.094009046610628907,
+    -0.995571343076607770,
+  0.093818146469420494, -0.995589350783264600, 0.093627242878787237,
+    -0.995607321884947050,
+  0.093436335845747912, -0.995625256380994310, 0.093245425377321389,
+    -0.995643154270746900,
+  0.093054511480527333, -0.995661015553546910, 0.092863594162384697,
+    -0.995678840228737540,
+  0.092672673429913366, -0.995696628295663520, 0.092481749290132753,
+    -0.995714379753670610,
+  0.092290821750062355, -0.995732094602106430, 0.092099890816722485,
+    -0.995749772840319400,
+  0.091908956497132696, -0.995767414467659820, 0.091718018798313525,
+    -0.995785019483478750,
+  0.091527077727284981, -0.995802587887129160, 0.091336133291067212,
+    -0.995820119677964910,
+  0.091145185496681130, -0.995837614855341610, 0.090954234351146898,
+    -0.995855073418615790,
+  0.090763279861485704, -0.995872495367145730, 0.090572322034718156,
+    -0.995889880700290720,
+  0.090381360877865011, -0.995907229417411720, 0.090190396397947820,
+    -0.995924541517870690,
+  0.089999428601987341, -0.995941817001031350, 0.089808457497005362,
+    -0.995959055866258320,
+  0.089617483090022917, -0.995976258112917790, 0.089426505388062016,
+    -0.995993423740377360,
+  0.089235524398144139, -0.996010552748005870, 0.089044540127290905,
+    -0.996027645135173610,
+  0.088853552582524684, -0.996044700901251970, 0.088662561770867121,
+    -0.996061720045614000,
+  0.088471567699340822, -0.996078702567633980, 0.088280570374967879,
+    -0.996095648466687300,
+  0.088089569804770507, -0.996112557742151130, 0.087898565995771685,
+    -0.996129430393403740,
+  0.087707558954993645, -0.996146266419824620, 0.087516548689459586,
+    -0.996163065820794950,
+  0.087325535206192226, -0.996179828595696870, 0.087134518512214321,
+    -0.996196554743914220,
+  0.086943498614549489, -0.996213244264832040, 0.086752475520220515,
+    -0.996229897157836500,
+  0.086561449236251239, -0.996246513422315520, 0.086370419769664919,
+    -0.996263093057658030,
+  0.086179387127484922, -0.996279636063254650, 0.085988351316735448,
+    -0.996296142438496850,
+  0.085797312344439880, -0.996312612182778000, 0.085606270217622613,
+    -0.996329045295492380,
+  0.085415224943307277, -0.996345441776035900, 0.085224176528518519,
+    -0.996361801623805720,
+  0.085033124980280414, -0.996378124838200210, 0.084842070305617148,
+    -0.996394411418619290,
+  0.084651012511553700, -0.996410661364464100, 0.084459951605114297,
+    -0.996426874675137240,
+  0.084268887593324127, -0.996443051350042630, 0.084077820483207846,
+    -0.996459191388585410,
+  0.083886750281790226, -0.996475294790172160, 0.083695676996096827,
+    -0.996491361554210920,
+  0.083504600633152404, -0.996507391680110820, 0.083313521199982740,
+    -0.996523385167282450,
+  0.083122438703613077, -0.996539342015137940, 0.082931353151068726,
+    -0.996555262223090540,
+  0.082740264549375803, -0.996571145790554840, 0.082549172905559659,
+    -0.996586992716946950,
+  0.082358078226646619, -0.996602803001684130, 0.082166980519662466,
+    -0.996618576644185070,
+  0.081975879791633108, -0.996634313643869900, 0.081784776049585201,
+    -0.996650014000160070,
+  0.081593669300544638, -0.996665677712478160, 0.081402559551538328,
+    -0.996681304780248300,
+  0.081211446809592386, -0.996696895202896060, 0.081020331081733912,
+    -0.996712448979848010,
+  0.080829212374989468, -0.996727966110532490, 0.080638090696385709,
+    -0.996743446594378860,
+  0.080446966052950097, -0.996758890430818000, 0.080255838451709291,
+    -0.996774297619282050,
+  0.080064707899690932, -0.996789668159204560, 0.079873574403922148,
+    -0.996805002050020320,
+  0.079682437971430126, -0.996820299291165670, 0.079491298609242866,
+    -0.996835559882078170,
+  0.079300156324387569, -0.996850783822196610, 0.079109011123892431,
+    -0.996865971110961310,
+  0.078917863014785095, -0.996881121747813850, 0.078726712004093313,
+    -0.996896235732197210,
+  0.078535558098845590, -0.996911313063555740, 0.078344401306069678,
+    -0.996926353741335090,
+  0.078153241632794315, -0.996941357764982160, 0.077962079086047645,
+    -0.996956325133945280,
+  0.077770913672857989, -0.996971255847674320, 0.077579745400254363,
+    -0.996986149905620180,
+  0.077388574275265049, -0.997001007307235290, 0.077197400304919297,
+    -0.997015828051973310,
+  0.077006223496245585, -0.997030612139289450, 0.076815043856273399,
+    -0.997045359568640040,
+  0.076623861392031617, -0.997060070339482960, 0.076432676110549283,
+    -0.997074744451277310,
+  0.076241488018856149, -0.997089381903483400, 0.076050297123981231,
+    -0.997103982695563330,
+  0.075859103432954503, -0.997118546826979980, 0.075667906952805383,
+    -0.997133074297198110,
+  0.075476707690563416, -0.997147565105683480, 0.075285505653258880,
+    -0.997162019251903290,
+  0.075094300847921291, -0.997176436735326190, 0.074903093281581137,
+    -0.997190817555421940,
+  0.074711882961268378, -0.997205161711661850, 0.074520669894013014,
+    -0.997219469203518670,
+  0.074329454086845867, -0.997233740030466160, 0.074138235546796952,
+    -0.997247974191979860,
+  0.073947014280897269, -0.997262171687536170, 0.073755790296177265,
+    -0.997276332516613180,
+  0.073564563599667454, -0.997290456678690210, 0.073373334198399157,
+    -0.997304544173247990,
+  0.073182102099402888, -0.997318594999768600, 0.072990867309710133,
+    -0.997332609157735470,
+  0.072799629836351618, -0.997346586646633230, 0.072608389686359048,
+    -0.997360527465947940,
+  0.072417146866763538, -0.997374431615167030, 0.072225901384596336,
+    -0.997388299093779460,
+  0.072034653246889416, -0.997402129901275300, 0.071843402460674000,
+    -0.997415924037145960,
+  0.071652149032982254, -0.997429681500884180, 0.071460892970845832,
+    -0.997443402291984360,
+  0.071269634281296415, -0.997457086409941910, 0.071078372971366502,
+    -0.997470733854253670,
+  0.070887109048087787, -0.997484344624417930, 0.070695842518492924,
+    -0.997497918719934210,
+  0.070504573389614009, -0.997511456140303450, 0.070313301668483263,
+    -0.997524956885027960,
+  0.070122027362133646, -0.997538420953611230, 0.069930750477597295,
+    -0.997551848345558430,
+  0.069739471021907376, -0.997565239060375750, 0.069548189002096472,
+    -0.997578593097570800,
+  0.069356904425197236, -0.997591910456652630, 0.069165617298243109,
+    -0.997605191137131640,
+  0.068974327628266732, -0.997618435138519550, 0.068783035422301728,
+    -0.997631642460329320,
+  0.068591740687380900, -0.997644813102075420, 0.068400443430538069,
+    -0.997657947063273710,
+  0.068209143658806454, -0.997671044343441000, 0.068017841379219388,
+    -0.997684104942096030,
+  0.067826536598810966, -0.997697128858758500, 0.067635229324614451,
+    -0.997710116092949570,
+  0.067443919563664106, -0.997723066644191640, 0.067252607322993652,
+    -0.997735980512008620,
+  0.067061292609636836, -0.997748857695925690, 0.066869975430628226,
+    -0.997761698195469560,
+  0.066678655793001543, -0.997774502010167820, 0.066487333703791507,
+    -0.997787269139549960,
+  0.066296009170032283, -0.997799999583146470, 0.066104682198758091,
+    -0.997812693340489280,
+  0.065913352797003930, -0.997825350411111640, 0.065722020971803977,
+    -0.997837970794548280,
+  0.065530686730193397, -0.997850554490335110, 0.065339350079206798,
+    -0.997863101498009500,
+  0.065148011025878860, -0.997875611817110150, 0.064956669577245010,
+    -0.997888085447177110,
+  0.064765325740339871, -0.997900522387751620, 0.064573979522199065,
+    -0.997912922638376610,
+  0.064382630929857410, -0.997925286198596000, 0.064191279970350679,
+    -0.997937613067955250,
+  0.063999926650714078, -0.997949903246001190, 0.063808570977982898,
+    -0.997962156732281950,
+  0.063617212959193190, -0.997974373526346990, 0.063425852601380200,
+    -0.997986553627747020,
+  0.063234489911580136, -0.997998697036034390, 0.063043124896828631,
+    -0.998010803750762450,
+  0.062851757564161420, -0.998022873771486240, 0.062660387920614985,
+    -0.998034907097761770,
+  0.062469015973224969, -0.998046903729146840, 0.062277641729028041,
+    -0.998058863665200250,
+  0.062086265195060247, -0.998070786905482340, 0.061894886378357744,
+    -0.998082673449554590,
+  0.061703505285957416, -0.998094523296980010, 0.061512121924895365,
+    -0.998106336447323050,
+  0.061320736302208648, -0.998118112900149180, 0.061129348424933755,
+    -0.998129852655025520,
+  0.060937958300107238, -0.998141555711520520, 0.060746565934766412,
+    -0.998153222069203650,
+  0.060555171335947781, -0.998164851727646240, 0.060363774510688827,
+    -0.998176444686420530,
+  0.060172375466026218, -0.998188000945100300, 0.059980974208997596,
+    -0.998199520503260660,
+  0.059789570746640007, -0.998211003360478190, 0.059598165085990598,
+    -0.998222449516330550,
+  0.059406757234087247, -0.998233858970396850, 0.059215347197967026,
+    -0.998245231722257880,
+  0.059023934984667986, -0.998256567771495180, 0.058832520601227581,
+    -0.998267867117692110,
+  0.058641104054683348, -0.998279129760433200, 0.058449685352073573,
+    -0.998290355699304350,
+  0.058258264500435732, -0.998301544933892890, 0.058066841506808263,
+    -0.998312697463787260,
+  0.057875416378229017, -0.998323813288577560, 0.057683989121735932,
+    -0.998334892407855000,
+  0.057492559744367684, -0.998345934821212370, 0.057301128253162144,
+    -0.998356940528243420,
+  0.057109694655158132, -0.998367909528543820, 0.056918258957393907,
+    -0.998378841821709990,
+  0.056726821166907783, -0.998389737407340160, 0.056535381290738825,
+    -0.998400596285033640,
+  0.056343939335925283, -0.998411418454391300, 0.056152495309506383,
+    -0.998422203915015020,
+  0.055961049218520520, -0.998432952666508440, 0.055769601070007072,
+    -0.998443664708476340,
+  0.055578150871004817, -0.998454340040524800, 0.055386698628552604,
+    -0.998464978662261250,
+  0.055195244349690031, -0.998475580573294770, 0.055003788041455885,
+    -0.998486145773235360,
+  0.054812329710889909, -0.998496674261694640, 0.054620869365031251,
+    -0.998507166038285490,
+  0.054429407010919147, -0.998517621102622210, 0.054237942655593556,
+    -0.998528039454320230,
+  0.054046476306093640, -0.998538421092996730, 0.053855007969459509,
+    -0.998548766018269920,
+  0.053663537652730679, -0.998559074229759310, 0.053472065362946755,
+    -0.998569345727086110,
+  0.053280591107148056, -0.998579580509872500, 0.053089114892374119,
+    -0.998589778577742230,
+  0.052897636725665401, -0.998599939930320370, 0.052706156614061798,
+    -0.998610064567233340,
+  0.052514674564603257, -0.998620152488108870, 0.052323190584330471,
+    -0.998630203692576050,
+  0.052131704680283317, -0.998640218180265270, 0.051940216859502626,
+    -0.998650195950808280,
+  0.051748727129028414, -0.998660137003838490, 0.051557235495901653,
+    -0.998670041338990070,
+  0.051365741967162731, -0.998679908955899090, 0.051174246549852087,
+    -0.998689739854202620,
+  0.050982749251010900, -0.998699534033539280, 0.050791250077679546,
+    -0.998709291493549030,
+  0.050599749036899337, -0.998719012233872940, 0.050408246135710995,
+    -0.998728696254153720,
+  0.050216741381155325, -0.998738343554035230, 0.050025234780273840,
+    -0.998747954133162860,
+  0.049833726340107257, -0.998757527991183340, 0.049642216067697226,
+    -0.998767065127744380,
+  0.049450703970084824, -0.998776565542495610, 0.049259190054311168,
+    -0.998786029235087640,
+  0.049067674327418126, -0.998795456205172410, 0.048876156796446746,
+    -0.998804846452403420,
+  0.048684637468439020, -0.998814199976435390, 0.048493116350436342,
+    -0.998823516776924380,
+  0.048301593449480172, -0.998832796853527990, 0.048110068772612716,
+    -0.998842040205904840,
+  0.047918542326875327, -0.998851246833715180, 0.047727014119310344,
+    -0.998860416736620520,
+  0.047535484156959261, -0.998869549914283560, 0.047343952446864526,
+    -0.998878646366368690,
+  0.047152418996068000, -0.998887706092541290, 0.046960883811611599,
+    -0.998896729092468410,
+  0.046769346900537960, -0.998905715365818290, 0.046577808269888908,
+    -0.998914664912260440,
+  0.046386267926707213, -0.998923577731465780, 0.046194725878035046,
+    -0.998932453823106690,
+  0.046003182130914644, -0.998941293186856870, 0.045811636692388955,
+    -0.998950095822391250,
+  0.045620089569500123, -0.998958861729386080, 0.045428540769291224,
+    -0.998967590907519300,
+  0.045236990298804750, -0.998976283356469820, 0.045045438165083225,
+    -0.998984939075918010,
+  0.044853884375169933, -0.998993558065545680, 0.044662328936107311,
+    -0.999002140325035980,
+  0.044470771854938744, -0.999010685854073380, 0.044279213138707016,
+    -0.999019194652343460,
+  0.044087652794454979, -0.999027666719533690, 0.043896090829226200,
+    -0.999036102055332330,
+  0.043704527250063421, -0.999044500659429290, 0.043512962064010327,
+    -0.999052862531515930,
+  0.043321395278109784, -0.999061187671284600, 0.043129826899405595,
+    -0.999069476078429330,
+  0.042938256934940959, -0.999077727752645360, 0.042746685391759139,
+    -0.999085942693629270,
+  0.042555112276904117, -0.999094120901079070, 0.042363537597419038,
+    -0.999102262374694130,
+  0.042171961360348002, -0.999110367114174890, 0.041980383572734502,
+    -0.999118435119223490,
+  0.041788804241622082, -0.999126466389543390, 0.041597223374055005,
+    -0.999134460924839150,
+  0.041405640977076712, -0.999142418724816910, 0.041214057057731589,
+    -0.999150339789184110,
+  0.041022471623063397, -0.999158224117649430, 0.040830884680115968,
+    -0.999166071709923000,
+  0.040639296235933854, -0.999173882565716380, 0.040447706297560768,
+    -0.999181656684742350,
+  0.040256114872041358, -0.999189394066714920, 0.040064521966419686,
+    -0.999197094711349880,
+  0.039872927587739845, -0.999204758618363890, 0.039681331743046659,
+    -0.999212385787475290,
+  0.039489734439384118, -0.999219976218403530, 0.039298135683797149,
+    -0.999227529910869610,
+  0.039106535483329839, -0.999235046864595850, 0.038914933845027241,
+    -0.999242527079305830,
+  0.038723330775933762, -0.999249970554724420, 0.038531726283093877,
+    -0.999257377290578060,
+  0.038340120373552791, -0.999264747286594420, 0.038148513054354856,
+    -0.999272080542502610,
+  0.037956904332545366, -0.999279377058032710, 0.037765294215169005,
+    -0.999286636832916740,
+  0.037573682709270514, -0.999293859866887790, 0.037382069821895340,
+    -0.999301046159680070,
+  0.037190455560088091, -0.999308195711029470, 0.036998839930894332,
+    -0.999315308520673070,
+  0.036807222941358991, -0.999322384588349540, 0.036615604598527057,
+    -0.999329423913798420,
+  0.036423984909444228, -0.999336426496761240, 0.036232363881155374,
+    -0.999343392336980220,
+  0.036040741520706299, -0.999350321434199440, 0.035849117835142184,
+    -0.999357213788164000,
+  0.035657492831508264, -0.999364069398620550, 0.035465866516850478,
+    -0.999370888265317060,
+  0.035274238898213947, -0.999377670388002850, 0.035082609982644702,
+    -0.999384415766428560,
+  0.034890979777187955, -0.999391124400346050, 0.034699348288889847,
+    -0.999397796289508640,
+  0.034507715524795889, -0.999404431433671300, 0.034316081491951658,
+    -0.999411029832589780,
+  0.034124446197403423, -0.999417591486021720, 0.033932809648196623,
+    -0.999424116393725640,
+  0.033741171851377642, -0.999430604555461730, 0.033549532813992221,
+    -0.999437055970991530,
+  0.033357892543086159, -0.999443470640077770, 0.033166251045705968,
+    -0.999449848562484530,
+  0.032974608328897315, -0.999456189737977340, 0.032782964399706793,
+    -0.999462494166323160,
+  0.032591319265180385, -0.999468761847290050, 0.032399672932364114,
+    -0.999474992780647780,
+  0.032208025408304704, -0.999481186966166950, 0.032016376700048046,
+    -0.999487344403620080,
+  0.031824726814640963, -0.999493465092780590, 0.031633075759129645,
+    -0.999499549033423640,
+  0.031441423540560343, -0.999505596225325310, 0.031249770165979990,
+    -0.999511606668263440,
+  0.031058115642434700, -0.999517580362016990, 0.030866459976971503,
+    -0.999523517306366350,
+  0.030674803176636581, -0.999529417501093140, 0.030483145248477058,
+    -0.999535280945980540,
+  0.030291486199539423, -0.999541107640812940, 0.030099826036870208,
+    -0.999546897585375960,
+  0.029908164767516655, -0.999552650779456990, 0.029716502398525156,
+    -0.999558367222844300,
+  0.029524838936943035, -0.999564046915327740, 0.029333174389816984,
+    -0.999569689856698580,
+  0.029141508764193740, -0.999575296046749220, 0.028949842067120746,
+    -0.999580865485273700,
+  0.028758174305644590, -0.999586398172067070, 0.028566505486812797,
+    -0.999591894106925950,
+  0.028374835617672258, -0.999597353289648380, 0.028183164705269902,
+    -0.999602775720033530,
+  0.027991492756653365, -0.999608161397882110, 0.027799819778869434,
+    -0.999613510322995950,
+  0.027608145778965820, -0.999618822495178640, 0.027416470763989606,
+    -0.999624097914234570,
+  0.027224794740987910, -0.999629336579970110, 0.027033117717008563,
+    -0.999634538492192300,
+  0.026841439699098527, -0.999639703650710200, 0.026649760694305708,
+    -0.999644832055333610,
+  0.026458080709677145, -0.999649923705874240, 0.026266399752260809,
+    -0.999654978602144690,
+  0.026074717829104040, -0.999659996743959220, 0.025883034947254208,
+    -0.999664978131133310,
+  0.025691351113759395, -0.999669922763483760, 0.025499666335666818,
+    -0.999674830640828740,
+  0.025307980620024630, -0.999679701762987930, 0.025116293973880335,
+    -0.999684536129782140,
+  0.024924606404281485, -0.999689333741033640, 0.024732917918276334,
+    -0.999694094596566000,
+  0.024541228522912264, -0.999698818696204250, 0.024349538225237600,
+    -0.999703506039774650,
+  0.024157847032300020, -0.999708156627104880, 0.023966154951147241,
+    -0.999712770458023870,
+  0.023774461988827676, -0.999717347532362190, 0.023582768152388880,
+    -0.999721887849951310,
+  0.023391073448879338, -0.999726391410624470, 0.023199377885346890,
+    -0.999730858214216030,
+  0.023007681468839410, -0.999735288260561680, 0.022815984206405477,
+    -0.999739681549498660,
+  0.022624286105092803, -0.999744038080865430, 0.022432587171950024,
+    -0.999748357854501780,
+  0.022240887414024919, -0.999752640870248840, 0.022049186838366180,
+    -0.999756887127949080,
+  0.021857485452021874, -0.999761096627446610, 0.021665783262040089,
+    -0.999765269368586450,
+  0.021474080275469605, -0.999769405351215280, 0.021282376499358355,
+    -0.999773504575180990,
+  0.021090671940755180, -0.999777567040332940, 0.020898966606708289,
+    -0.999781592746521670,
+  0.020707260504265912, -0.999785581693599210, 0.020515553640476986,
+    -0.999789533881418780,
+  0.020323846022389572, -0.999793449309835270, 0.020132137657052664,
+    -0.999797327978704690,
+  0.019940428551514598, -0.999801169887884260, 0.019748718712823757,
+    -0.999804975037232870,
+  0.019557008148029204, -0.999808743426610520, 0.019365296864179146,
+    -0.999812475055878780,
+  0.019173584868322699, -0.999816169924900410, 0.018981872167508348,
+    -0.999819828033539420,
+  0.018790158768784596, -0.999823449381661570, 0.018598444679200642,
+    -0.999827033969133420,
+  0.018406729905804820, -0.999830581795823400, 0.018215014455646376,
+    -0.999834092861600960,
+  0.018023298335773701, -0.999837567166337090, 0.017831581553236088,
+    -0.999841004709904000,
+  0.017639864115082195, -0.999844405492175240, 0.017448146028360704,
+    -0.999847769513025900,
+  0.017256427300120978, -0.999851096772332190, 0.017064707937411529,
+    -0.999854387269971890,
+  0.016872987947281773, -0.999857641005823860, 0.016681267336780482,
+    -0.999860857979768540,
+  0.016489546112956454, -0.999864038191687680, 0.016297824282859176,
+    -0.999867181641464380,
+  0.016106101853537263, -0.999870288328982950, 0.015914378832040249,
+    -0.999873358254129260,
+  0.015722655225417017, -0.999876391416790410, 0.015530931040716478,
+    -0.999879387816854930,
+  0.015339206284988220, -0.999882347454212560, 0.015147480965280975,
+    -0.999885270328754520,
+  0.014955755088644378, -0.999888156440373320, 0.014764028662127416,
+    -0.999891005788962950,
+  0.014572301692779104, -0.999893818374418490, 0.014380574187649138,
+    -0.999896594196636680,
+  0.014188846153786343, -0.999899333255515390, 0.013997117598240459,
+    -0.999902035550953920,
+  0.013805388528060349, -0.999904701082852900, 0.013613658950295789,
+    -0.999907329851114300,
+  0.013421928871995907, -0.999909921855641540, 0.013230198300209845,
+    -0.999912477096339240,
+  0.013038467241987433, -0.999914995573113470, 0.012846735704377631,
+    -0.999917477285871770,
+  0.012655003694430301, -0.999919922234522750, 0.012463271219194662,
+    -0.999922330418976490,
+  0.012271538285719944, -0.999924701839144500, 0.012079804901056066,
+    -0.999927036494939640,
+  0.011888071072252072, -0.999929334386276070, 0.011696336806357907,
+    -0.999931595513069200,
+  0.011504602110422875, -0.999933819875236000, 0.011312866991496287,
+    -0.999936007472694620,
+  0.011121131456628141, -0.999938158305364590, 0.010929395512867561,
+    -0.999940272373166960,
+  0.010737659167264572, -0.999942349676023910, 0.010545922426868548,
+    -0.999944390213859060,
+  0.010354185298728884, -0.999946393986597460, 0.010162447789895645,
+    -0.999948360994165400,
+  0.009970709907418029, -0.999950291236490480, 0.009778971658346134,
+    -0.999952184713501780,
+  0.009587233049729183, -0.999954041425129780, 0.009395494088617302,
+    -0.999955861371306100,
+  0.009203754782059960, -0.999957644551963900, 0.009012015137106642,
+    -0.999959390967037450,
+  0.008820275160807512, -0.999961100616462820, 0.008628534860211857,
+    -0.999962773500176930,
+  0.008436794242369860, -0.999964409618118280, 0.008245053314331058,
+    -0.999966008970226920,
+  0.008053312083144991, -0.999967571556443780, 0.007861570555861883,
+    -0.999969097376711580,
+  0.007669828739531077, -0.999970586430974140, 0.007478086641202815,
+    -0.999972038719176730,
+  0.007286344267926684, -0.999973454241265940, 0.007094601626752279,
+    -0.999974832997189810,
+  0.006902858724729877, -0.999976174986897610, 0.006711115568908869,
+    -0.999977480210339940,
+  0.006519372166339549, -0.999978748667468830, 0.006327628524071549,
+    -0.999979980358237650,
+  0.006135884649154515, -0.999981175282601110, 0.005944140548638765,
+    -0.999982333440515350,
+  0.005752396229573737, -0.999983454831937730, 0.005560651699009764,
+    -0.999984539456826970,
+  0.005368906963996303, -0.999985587315143200, 0.005177162031583702,
+    -0.999986598406848000,
+  0.004985416908821652, -0.999987572731904080, 0.004793671602759852,
+    -0.999988510290275690,
+  0.004601926120448672, -0.999989411081928400, 0.004410180468937601,
+    -0.999990275106828920,
+  0.004218434655277024, -0.999991102364945590, 0.004026688686516664,
+    -0.999991892856248010,
+  0.003834942569706248, -0.999992646580707190, 0.003643196311896179,
+    -0.999993363538295150,
+  0.003451449920135975, -0.999994043728985820, 0.003259703401476044,
+    -0.999994687152754080,
+  0.003067956762966138, -0.999995293809576190, 0.002876210011656010,
+    -0.999995863699429940,
+  0.002684463154596083, -0.999996396822294350, 0.002492716198835898,
+    -0.999996893178149880,
+  0.002300969151425887, -0.999997352766978210, 0.002109222019415816,
+    -0.999997775588762350,
+  0.001917474809855460, -0.999998161643486980, 0.001725727529795258,
+    -0.999998510931137790,
+  0.001533980186284766, -0.999998823451701880, 0.001342232786374430,
+    -0.999999099205167830,
+  0.001150485337113809, -0.999999338191525530, 0.000958737845553352,
+    -0.999999540410766110,
+  0.000766990318742846, -0.999999705862882230, 0.000575242763732077,
+    -0.999999834547867670,
+  0.000383495187571497, -0.999999926465717890, 0.000191747597310674,
+    -0.999999981616429330,
+
+};
+
+/**    
+* \par    
+* cosFactor tables are generated using the formula : <pre>cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))</pre>    
+* \par    
+* C command to generate the table    
+* \par    
+* <pre> for(i = 0; i< N; i++)    
+* {    
+*    cos_factors[i]= 2 * cos((2*i+1)*c/2);    
+* } </pre>    
+* \par    
+* where <code>N</code> is the number of factors to generate and <code>c</code> is <code>pi/(2*N)</code>    
+*/
+static const float32_t cos_factors_128[128] = {
+  0.999981175282601110f, 0.999830581795823400f, 0.999529417501093140f,
+  0.999077727752645360f,
+  0.998475580573294770f, 0.997723066644191640f, 0.996820299291165670f,
+  0.995767414467659820f,
+  0.994564570734255420f, 0.993211949234794500f, 0.991709753669099530f,
+  0.990058210262297120f,
+  0.988257567730749460f, 0.986308097244598670f, 0.984210092386929030f,
+  0.981963869109555240f,
+  0.979569765685440520f, 0.977028142657754390f, 0.974339382785575860f,
+  0.971503890986251780f,
+  0.968522094274417380f, 0.965394441697689400f, 0.962121404269041580f,
+  0.958703474895871600f,
+  0.955141168305770780f, 0.951435020969008340f, 0.947585591017741090f,
+  0.943593458161960390f,
+  0.939459223602189920f, 0.935183509938947610f, 0.930766961078983710f,
+  0.926210242138311380f,
+  0.921514039342042010f, 0.916679059921042700f, 0.911706032005429880f,
+  0.906595704514915330f,
+  0.901348847046022030f, 0.895966249756185220f, 0.890448723244757880f,
+  0.884797098430937790f,
+  0.879012226428633530f, 0.873094978418290090f, 0.867046245515692650f,
+  0.860866938637767310f,
+  0.854557988365400530f, 0.848120344803297230f, 0.841554977436898440f,
+  0.834862874986380010f,
+  0.828045045257755800f, 0.821102514991104650f, 0.814036329705948410f,
+  0.806847553543799330f,
+  0.799537269107905010f, 0.792106577300212390f, 0.784556597155575240f,
+  0.776888465673232440f,
+  0.769103337645579700f, 0.761202385484261780f, 0.753186799043612520f,
+  0.745057785441466060f,
+  0.736816568877369900f, 0.728464390448225200f, 0.720002507961381650f,
+  0.711432195745216430f,
+  0.702754744457225300f, 0.693971460889654000f, 0.685083667772700360f,
+  0.676092703575316030f,
+  0.666999922303637470f, 0.657806693297078640f, 0.648514401022112550f,
+  0.639124444863775730f,
+  0.629638238914927100f, 0.620057211763289210f, 0.610382806276309480f,
+  0.600616479383868970f,
+  0.590759701858874280f, 0.580813958095764530f, 0.570780745886967370f,
+  0.560661576197336030f,
+  0.550457972936604810f, 0.540171472729892970f, 0.529803624686294830f,
+  0.519355990165589530f,
+  0.508830142543106990f, 0.498227666972781870f, 0.487550160148436050f,
+  0.476799230063322250f,
+  0.465976495767966130f, 0.455083587126343840f, 0.444122144570429260f,
+  0.433093818853152010f,
+  0.422000270799799790f, 0.410843171057903910f, 0.399624199845646790f,
+  0.388345046698826300f,
+  0.377007410216418310f, 0.365612997804773960f, 0.354163525420490510f,
+  0.342660717311994380f,
+  0.331106305759876430f, 0.319502030816015750f, 0.307849640041534980f,
+  0.296150888243623960f,
+  0.284407537211271820f, 0.272621355449948980f, 0.260794117915275570f,
+  0.248927605745720260f,
+  0.237023605994367340f, 0.225083911359792780f, 0.213110319916091360f,
+  0.201104634842091960f,
+  0.189068664149806280f, 0.177004220412148860f, 0.164913120489970090f,
+  0.152797185258443410f,
+  0.140658239332849240f, 0.128498110793793220f, 0.116318630911904880f,
+  0.104121633872054730f,
+  0.091908956497132696f, 0.079682437971430126f, 0.067443919563664106f,
+  0.055195244349690031f,
+  0.042938256934940959f, 0.030674803176636581f, 0.018406729905804820f,
+  0.006135884649154515f
+};
+
+static const float32_t cos_factors_512[512] = {
+  0.999998823451701880f, 0.999989411081928400f, 0.999970586430974140f,
+  0.999942349676023910f,
+  0.999904701082852900f, 0.999857641005823860f, 0.999801169887884260f,
+  0.999735288260561680f,
+  0.999659996743959220f, 0.999575296046749220f, 0.999481186966166950f,
+  0.999377670388002850f,
+  0.999264747286594420f, 0.999142418724816910f, 0.999010685854073380f,
+  0.998869549914283560f,
+  0.998719012233872940f, 0.998559074229759310f, 0.998389737407340160f,
+  0.998211003360478190f,
+  0.998022873771486240f, 0.997825350411111640f, 0.997618435138519550f,
+  0.997402129901275300f,
+  0.997176436735326190f, 0.996941357764982160f, 0.996696895202896060f,
+  0.996443051350042630f,
+  0.996179828595696980f, 0.995907229417411720f, 0.995625256380994310f,
+  0.995333912140482280f,
+  0.995033199438118630f, 0.994723121104325700f, 0.994403680057679100f,
+  0.994074879304879370f,
+  0.993736721940724600f, 0.993389211148080650f, 0.993032350197851410f,
+  0.992666142448948020f,
+  0.992290591348257370f, 0.991905700430609330f, 0.991511473318743900f,
+  0.991107913723276890f,
+  0.990695025442664630f, 0.990272812363169110f, 0.989841278458820530f,
+  0.989400427791380380f,
+  0.988950264510302990f, 0.988490792852696590f, 0.988022017143283530f,
+  0.987543941794359230f,
+  0.987056571305750970f, 0.986559910264775410f, 0.986053963346195440f,
+  0.985538735312176060f,
+  0.985014231012239840f, 0.984480455383220930f, 0.983937413449218920f,
+  0.983385110321551180f,
+  0.982823551198705240f, 0.982252741366289370f, 0.981672686196983110f,
+  0.981083391150486710f,
+  0.980484861773469380f, 0.979877103699517640f, 0.979260122649082020f,
+  0.978633924429423210f,
+  0.977998514934557140f, 0.977353900145199960f, 0.976700086128711840f,
+  0.976037079039039020f,
+  0.975364885116656980f, 0.974683510688510670f, 0.973992962167955830f,
+  0.973293246054698250f,
+  0.972584368934732210f, 0.971866337480279400f, 0.971139158449725090f,
+  0.970402838687555500f,
+  0.969657385124292450f, 0.968902804776428870f, 0.968139104746362440f,
+  0.967366292222328510f,
+  0.966584374478333120f, 0.965793358874083680f, 0.964993252854920320f,
+  0.964184063951745830f,
+  0.963365799780954050f, 0.962538468044359160f, 0.961702076529122540f,
+  0.960856633107679660f,
+  0.960002145737665960f, 0.959138622461841890f, 0.958266071408017670f,
+  0.957384500788975860f,
+  0.956493918902395100f, 0.955594334130771110f, 0.954685754941338340f,
+  0.953768189885990330f,
+  0.952841647601198720f, 0.951906136807932350f, 0.950961666311575080f,
+  0.950008245001843000f,
+  0.949045881852700560f, 0.948074585922276230f, 0.947094366352777220f,
+  0.946105232370403450f,
+  0.945107193285260610f, 0.944100258491272660f, 0.943084437466093490f,
+  0.942059739771017310f,
+  0.941026175050889260f, 0.939983753034014050f, 0.938932483532064600f,
+  0.937872376439989890f,
+  0.936803441735921560f, 0.935725689481080370f, 0.934639129819680780f,
+  0.933543772978836170f,
+  0.932439629268462360f, 0.931326709081180430f, 0.930205022892219070f,
+  0.929074581259315860f,
+  0.927935394822617890f, 0.926787474304581750f, 0.925630830509872720f,
+  0.924465474325262600f,
+  0.923291416719527640f, 0.922108668743345180f, 0.920917241529189520f,
+  0.919717146291227360f,
+  0.918508394325212250f, 0.917290997008377910f, 0.916064965799331720f,
+  0.914830312237946200f,
+  0.913587047945250810f, 0.912335184623322750f, 0.911074734055176360f,
+  0.909805708104652220f,
+  0.908528118716306120f, 0.907241977915295820f, 0.905947297807268460f,
+  0.904644090578246240f,
+  0.903332368494511820f, 0.902012143902493180f, 0.900683429228646970f,
+  0.899346236979341570f,
+  0.898000579740739880f, 0.896646470178680150f, 0.895283921038557580f,
+  0.893912945145203250f,
+  0.892533555402764580f, 0.891145764794583180f, 0.889749586383072780f,
+  0.888345033309596350f,
+  0.886932118794342190f, 0.885510856136199950f, 0.884081258712634990f,
+  0.882643339979562790f,
+  0.881197113471222090f, 0.879742592800047410f, 0.878279791656541580f,
+  0.876808723809145650f,
+  0.875329403104110890f, 0.873841843465366860f, 0.872346058894391540f,
+  0.870842063470078980f,
+  0.869329871348606840f, 0.867809496763303320f, 0.866280954024512990f,
+  0.864744257519462380f,
+  0.863199421712124160f, 0.861646461143081300f, 0.860085390429390140f,
+  0.858516224264442740f,
+  0.856938977417828760f, 0.855353664735196030f, 0.853760301138111410f,
+  0.852158901623919830f,
+  0.850549481265603480f, 0.848932055211639610f, 0.847306638685858320f,
+  0.845673246987299070f,
+  0.844031895490066410f, 0.842382599643185850f, 0.840725374970458070f,
+  0.839060237070312740f,
+  0.837387201615661940f, 0.835706284353752600f, 0.834017501106018130f,
+  0.832320867767929680f,
+  0.830616400308846310f, 0.828904114771864870f, 0.827184027273669130f,
+  0.825456154004377550f,
+  0.823720511227391430f, 0.821977115279241550f, 0.820225982569434690f,
+  0.818467129580298660f,
+  0.816700572866827850f, 0.814926329056526620f, 0.813144414849253590f,
+  0.811354847017063730f,
+  0.809557642404051260f, 0.807752817926190360f, 0.805940390571176280f,
+  0.804120377398265810f,
+  0.802292795538115720f, 0.800457662192622820f, 0.798614994634760820f,
+  0.796764810208418830f,
+  0.794907126328237010f, 0.793041960479443640f, 0.791169330217690200f,
+  0.789289253168885650f,
+  0.787401747029031430f, 0.785506829564053930f, 0.783604518609638200f,
+  0.781694832071059390f,
+  0.779777787923014550f, 0.777853404209453150f, 0.775921699043407690f,
+  0.773982690606822900f,
+  0.772036397150384520f, 0.770082836993347900f, 0.768122028523365420f,
+  0.766153990196312920f,
+  0.764178740536116670f, 0.762196298134578900f, 0.760206681651202420f,
+  0.758209909813015280f,
+  0.756206001414394540f, 0.754194975316889170f, 0.752176850449042810f,
+  0.750151645806215070f,
+  0.748119380450403600f, 0.746080073510063780f, 0.744033744179929290f,
+  0.741980411720831070f,
+  0.739920095459516200f, 0.737852814788465980f, 0.735778589165713590f,
+  0.733697438114660370f,
+  0.731609381223892630f, 0.729514438146997010f, 0.727412628602375770f,
+  0.725303972373060770f,
+  0.723188489306527460f, 0.721066199314508110f, 0.718937122372804490f,
+  0.716801278521099540f,
+  0.714658687862769090f, 0.712509370564692320f, 0.710353346857062420f,
+  0.708190637033195400f,
+  0.706021261449339740f, 0.703845240524484940f, 0.701662594740168570f,
+  0.699473344640283770f,
+  0.697277510830886630f, 0.695075113980000880f, 0.692866174817424740f,
+  0.690650714134534720f,
+  0.688428752784090550f, 0.686200311680038700f, 0.683965411797315510f,
+  0.681724074171649820f,
+  0.679476319899365080f, 0.677222170137180450f, 0.674961646102012040f,
+  0.672694769070772970f,
+  0.670421560380173090f, 0.668142041426518560f, 0.665856233665509720f,
+  0.663564158612039880f,
+  0.661265837839992270f, 0.658961292982037320f, 0.656650545729429050f,
+  0.654333617831800550f,
+  0.652010531096959500f, 0.649681307390683190f, 0.647345968636512060f,
+  0.645004536815544040f,
+  0.642657033966226860f, 0.640303482184151670f, 0.637943903621844170f,
+  0.635578320488556230f,
+  0.633206755050057190f, 0.630829229628424470f, 0.628445766601832710f,
+  0.626056388404343520f,
+  0.623661117525694640f, 0.621259976511087660f, 0.618852987960976320f,
+  0.616440174530853650f,
+  0.614021558931038490f, 0.611597163926462020f, 0.609167012336453210f,
+  0.606731127034524480f,
+  0.604289530948156070f, 0.601842247058580030f, 0.599389298400564540f,
+  0.596930708062196500f,
+  0.594466499184664540f, 0.591996694962040990f, 0.589521318641063940f,
+  0.587040393520918080f,
+  0.584553942953015330f, 0.582061990340775550f, 0.579564559139405740f,
+  0.577061672855679550f,
+  0.574553355047715760f, 0.572039629324757050f, 0.569520519346947250f,
+  0.566996048825108680f,
+  0.564466241520519500f, 0.561931121244689470f, 0.559390711859136140f,
+  0.556845037275160100f,
+  0.554294121453620110f, 0.551737988404707450f, 0.549176662187719770f,
+  0.546610166910834860f,
+  0.544038526730883930f, 0.541461765853123560f, 0.538879908531008420f,
+  0.536292979065963180f,
+  0.533701001807152960f, 0.531104001151255000f, 0.528502001542228480f,
+  0.525895027471084740f,
+  0.523283103475656430f, 0.520666254140367270f, 0.518044504095999340f,
+  0.515417878019463150f,
+  0.512786400633563070f, 0.510150096706766700f, 0.507508991052970870f,
+  0.504863108531267480f,
+  0.502212474045710900f, 0.499557112545081890f, 0.496897049022654640f,
+  0.494232308515959730f,
+  0.491562916106550060f, 0.488888896919763230f, 0.486210276124486530f,
+  0.483527078932918740f,
+  0.480839330600333900f, 0.478147056424843120f, 0.475450281747155870f,
+  0.472749031950342900f,
+  0.470043332459595620f, 0.467333208741988530f, 0.464618686306237820f,
+  0.461899790702462840f,
+  0.459176547521944150f, 0.456448982396883860f, 0.453717121000163930f,
+  0.450980989045103810f,
+  0.448240612285220000f, 0.445496016513981740f, 0.442747227564570130f,
+  0.439994271309633260f,
+  0.437237173661044200f, 0.434475960569655710f, 0.431710658025057370f,
+  0.428941292055329550f,
+  0.426167888726799620f, 0.423390474143796100f, 0.420609074448402510f,
+  0.417823715820212380f,
+  0.415034424476081630f, 0.412241226669883000f, 0.409444148692257590f,
+  0.406643216870369140f,
+  0.403838457567654130f, 0.401029897183575790f, 0.398217562153373620f,
+  0.395401478947816300f,
+  0.392581674072951530f, 0.389758174069856410f, 0.386931005514388690f,
+  0.384100195016935040f,
+  0.381265769222162490f, 0.378427754808765620f, 0.375586178489217330f,
+  0.372741067009515810f,
+  0.369892447148934270f, 0.367040345719767240f, 0.364184789567079840f,
+  0.361325805568454340f,
+  0.358463420633736540f, 0.355597661704783960f, 0.352728555755210730f,
+  0.349856129790135030f,
+  0.346980410845923680f, 0.344101425989938980f, 0.341219202320282410f,
+  0.338333766965541290f,
+  0.335445147084531660f, 0.332553369866044220f, 0.329658462528587550f,
+  0.326760452320131790f,
+  0.323859366517852960f, 0.320955232427875210f, 0.318048077385015060f,
+  0.315137928752522440f,
+  0.312224813921825050f, 0.309308760312268780f, 0.306389795370861080f,
+  0.303467946572011370f,
+  0.300543241417273400f, 0.297615707435086310f, 0.294685372180514330f,
+  0.291752263234989370f,
+  0.288816408206049480f, 0.285877834727080730f, 0.282936570457055390f,
+  0.279992643080273380f,
+  0.277046080306099950f, 0.274096909868706330f, 0.271145159526808070f,
+  0.268190857063403180f,
+  0.265234030285511900f, 0.262274707023913590f, 0.259312915132886350f,
+  0.256348682489942910f,
+  0.253382036995570270f, 0.250413006572965280f, 0.247441619167773440f,
+  0.244467902747824210f,
+  0.241491885302869300f, 0.238513594844318500f, 0.235533059404975460f,
+  0.232550307038775330f,
+  0.229565365820518870f, 0.226578263845610110f, 0.223589029229790020f,
+  0.220597690108873650f,
+  0.217604274638483670f, 0.214608810993786920f, 0.211611327369227610f,
+  0.208611851978263460f,
+  0.205610413053099320f, 0.202607038844421110f, 0.199601757621131050f,
+  0.196594597670080220f,
+  0.193585587295803750f, 0.190574754820252800f, 0.187562128582529740f,
+  0.184547736938619640f,
+  0.181531608261125130f, 0.178513770938997590f, 0.175494253377271400f,
+  0.172473083996796030f,
+  0.169450291233967930f, 0.166425903540464220f, 0.163399949382973230f,
+  0.160372457242928400f,
+  0.157343455616238280f, 0.154312973013020240f, 0.151281037957330250f,
+  0.148247678986896200f,
+  0.145212924652847520f, 0.142176803519448000f, 0.139139344163826280f,
+  0.136100575175706200f,
+  0.133060525157139180f, 0.130019222722233350f, 0.126976696496885980f,
+  0.123932975118512200f,
+  0.120888087235777220f, 0.117842061508325020f, 0.114794926606510250f,
+  0.111746711211126660f,
+  0.108697444013138670f, 0.105647153713410700f, 0.102595869022436280f,
+  0.099543618660069444f,
+  0.096490431355252607f, 0.093436335845747912f, 0.090381360877865011f,
+  0.087325535206192226f,
+  0.084268887593324127f, 0.081211446809592386f, 0.078153241632794315f,
+  0.075094300847921291f,
+  0.072034653246889416f, 0.068974327628266732f, 0.065913352797003930f,
+  0.062851757564161420f,
+  0.059789570746640007f, 0.056726821166907783f, 0.053663537652730679f,
+  0.050599749036899337f,
+  0.047535484156959261f, 0.044470771854938744f, 0.041405640977076712f,
+  0.038340120373552791f,
+  0.035274238898213947f, 0.032208025408304704f, 0.029141508764193740f,
+  0.026074717829104040f,
+  0.023007681468839410f, 0.019940428551514598f, 0.016872987947281773f,
+  0.013805388528060349f,
+  0.010737659167264572f, 0.007669828739531077f, 0.004601926120448672f,
+  0.001533980186284766f
+};
+
+static const float32_t cos_factors_2048[2048] = {
+  0.999999926465717890f, 0.999999338191525530f, 0.999998161643486980f,
+  0.999996396822294350f,
+  0.999994043728985820f, 0.999991102364945590f, 0.999987572731904080f,
+  0.999983454831937730f,
+  0.999978748667468830f, 0.999973454241265940f, 0.999967571556443780f,
+  0.999961100616462820f,
+  0.999954041425129780f, 0.999946393986597460f, 0.999938158305364590f,
+  0.999929334386276070f,
+  0.999919922234522750f, 0.999909921855641540f, 0.999899333255515390f,
+  0.999888156440373320f,
+  0.999876391416790410f, 0.999864038191687680f, 0.999851096772332190f,
+  0.999837567166337090f,
+  0.999823449381661570f, 0.999808743426610520f, 0.999793449309835270f,
+  0.999777567040332940f,
+  0.999761096627446610f, 0.999744038080865430f, 0.999726391410624470f,
+  0.999708156627104880f,
+  0.999689333741033640f, 0.999669922763483760f, 0.999649923705874240f,
+  0.999629336579970110f,
+  0.999608161397882110f, 0.999586398172067070f, 0.999564046915327740f,
+  0.999541107640812940f,
+  0.999517580362016990f, 0.999493465092780590f, 0.999468761847290050f,
+  0.999443470640077770f,
+  0.999417591486021720f, 0.999391124400346050f, 0.999364069398620550f,
+  0.999336426496761240f,
+  0.999308195711029470f, 0.999279377058032710f, 0.999249970554724420f,
+  0.999219976218403530f,
+  0.999189394066714920f, 0.999158224117649430f, 0.999126466389543390f,
+  0.999094120901079070f,
+  0.999061187671284600f, 0.999027666719533690f, 0.998993558065545680f,
+  0.998958861729386080f,
+  0.998923577731465780f, 0.998887706092541290f, 0.998851246833715180f,
+  0.998814199976435390f,
+  0.998776565542495610f, 0.998738343554035230f, 0.998699534033539280f,
+  0.998660137003838490f,
+  0.998620152488108870f, 0.998579580509872500f, 0.998538421092996730f,
+  0.998496674261694640f,
+  0.998454340040524800f, 0.998411418454391300f, 0.998367909528543820f,
+  0.998323813288577560f,
+  0.998279129760433200f, 0.998233858970396850f, 0.998188000945100300f,
+  0.998141555711520520f,
+  0.998094523296980010f, 0.998046903729146840f, 0.997998697036034390f,
+  0.997949903246001190f,
+  0.997900522387751620f, 0.997850554490335110f, 0.997799999583146470f,
+  0.997748857695925690f,
+  0.997697128858758500f, 0.997644813102075420f, 0.997591910456652630f,
+  0.997538420953611340f,
+  0.997484344624417930f, 0.997429681500884180f, 0.997374431615167150f,
+  0.997318594999768600f,
+  0.997262171687536170f, 0.997205161711661850f, 0.997147565105683480f,
+  0.997089381903483400f,
+  0.997030612139289450f, 0.996971255847674320f, 0.996911313063555740f,
+  0.996850783822196610f,
+  0.996789668159204560f, 0.996727966110532490f, 0.996665677712478160f,
+  0.996602803001684130f,
+  0.996539342015137940f, 0.996475294790172160f, 0.996410661364464100f,
+  0.996345441776035900f,
+  0.996279636063254650f, 0.996213244264832040f, 0.996146266419824620f,
+  0.996078702567633980f,
+  0.996010552748005870f, 0.995941817001031350f, 0.995872495367145730f,
+  0.995802587887129160f,
+  0.995732094602106430f, 0.995661015553546910f, 0.995589350783264600f,
+  0.995517100333418110f,
+  0.995444264246510340f, 0.995370842565388990f, 0.995296835333246090f,
+  0.995222242593618360f,
+  0.995147064390386470f, 0.995071300767776170f, 0.994994951770357020f,
+  0.994918017443043200f,
+  0.994840497831093180f, 0.994762392980109930f, 0.994683702936040250f,
+  0.994604427745175660f,
+  0.994524567454151740f, 0.994444122109948040f, 0.994363091759888570f,
+  0.994281476451641550f,
+  0.994199276233218910f, 0.994116491152977070f, 0.994033121259616400f,
+  0.993949166602181130f,
+  0.993864627230059750f, 0.993779503192984580f, 0.993693794541031790f,
+  0.993607501324621610f,
+  0.993520623594518090f, 0.993433161401829360f, 0.993345114798006910f,
+  0.993256483834846440f,
+  0.993167268564487230f, 0.993077469039412300f, 0.992987085312448390f,
+  0.992896117436765980f,
+  0.992804565465879140f, 0.992712429453645460f, 0.992619709454266140f,
+  0.992526405522286100f,
+  0.992432517712593660f, 0.992338046080420420f, 0.992242990681341700f,
+  0.992147351571276090f,
+  0.992051128806485720f, 0.991954322443575950f, 0.991856932539495470f,
+  0.991758959151536110f,
+  0.991660402337333210f, 0.991561262154865290f, 0.991461538662453790f,
+  0.991361231918763460f,
+  0.991260341982802440f, 0.991158868913921350f, 0.991056812771814340f,
+  0.990954173616518500f,
+  0.990850951508413620f, 0.990747146508222710f, 0.990642758677011570f,
+  0.990537788076188750f,
+  0.990432234767505970f, 0.990326098813057330f, 0.990219380275280000f,
+  0.990112079216953770f,
+  0.990004195701200910f, 0.989895729791486660f, 0.989786681551618640f,
+  0.989677051045747210f,
+  0.989566838338365120f, 0.989456043494307710f, 0.989344666578752640f,
+  0.989232707657220050f,
+  0.989120166795572690f, 0.989007044060015270f, 0.988893339517095130f,
+  0.988779053233701520f,
+  0.988664185277066230f, 0.988548735714763200f, 0.988432704614708340f,
+  0.988316092045159690f,
+  0.988198898074717610f, 0.988081122772324070f, 0.987962766207263420f,
+  0.987843828449161740f,
+  0.987724309567986960f, 0.987604209634049160f, 0.987483528717999710f,
+  0.987362266890832400f,
+  0.987240424223882250f, 0.987118000788826280f, 0.986994996657682980f,
+  0.986871411902812470f,
+  0.986747246596916590f, 0.986622500813038480f, 0.986497174624562880f,
+  0.986371268105216030f,
+  0.986244781329065460f, 0.986117714370520090f, 0.985990067304330140f,
+  0.985861840205586980f,
+  0.985733033149723490f, 0.985603646212513400f, 0.985473679470071810f,
+  0.985343132998854790f,
+  0.985212006875659350f, 0.985080301177623800f, 0.984948015982227030f,
+  0.984815151367289140f,
+  0.984681707410970940f, 0.984547684191773960f, 0.984413081788540700f,
+  0.984277900280454370f,
+  0.984142139747038570f, 0.984005800268157870f, 0.983868881924017220f,
+  0.983731384795162090f,
+  0.983593308962478650f, 0.983454654507193270f, 0.983315421510872810f,
+  0.983175610055424420f,
+  0.983035220223095640f, 0.982894252096474070f, 0.982752705758487830f,
+  0.982610581292404750f,
+  0.982467878781833170f, 0.982324598310721280f, 0.982180739963357090f,
+  0.982036303824369020f,
+  0.981891289978725100f, 0.981745698511732990f, 0.981599529509040720f,
+  0.981452783056635520f,
+  0.981305459240844670f, 0.981157558148334830f, 0.981009079866112630f,
+  0.980860024481523870f,
+  0.980710392082253970f, 0.980560182756327840f, 0.980409396592109910f,
+  0.980258033678303550f,
+  0.980106094103951770f, 0.979953577958436740f, 0.979800485331479790f,
+  0.979646816313141210f,
+  0.979492570993820810f, 0.979337749464256780f, 0.979182351815526930f,
+  0.979026378139047580f,
+  0.978869828526574120f, 0.978712703070200420f, 0.978555001862359550f,
+  0.978396724995823090f,
+  0.978237872563701090f, 0.978078444659442380f, 0.977918441376834370f,
+  0.977757862810002760f,
+  0.977596709053411890f, 0.977434980201864260f, 0.977272676350500860f,
+  0.977109797594800880f,
+  0.976946344030581670f, 0.976782315753998650f, 0.976617712861545640f,
+  0.976452535450054060f,
+  0.976286783616693630f, 0.976120457458971910f, 0.975953557074734300f,
+  0.975786082562163930f,
+  0.975618034019781750f, 0.975449411546446380f, 0.975280215241354220f,
+  0.975110445204038890f,
+  0.974940101534371830f, 0.974769184332561770f, 0.974597693699155050f,
+  0.974425629735034990f,
+  0.974252992541422500f, 0.974079782219875680f, 0.973905998872289570f,
+  0.973731642600896400f,
+  0.973556713508265560f, 0.973381211697303290f, 0.973205137271252800f,
+  0.973028490333694210f,
+  0.972851270988544180f, 0.972673479340056430f, 0.972495115492821190f,
+  0.972316179551765300f,
+  0.972136671622152230f, 0.971956591809581720f, 0.971775940219990140f,
+  0.971594716959650160f,
+  0.971412922135170940f, 0.971230555853497380f, 0.971047618221911100f,
+  0.970864109348029470f,
+  0.970680029339806130f, 0.970495378305530560f, 0.970310156353828110f,
+  0.970124363593660280f,
+  0.969938000134323960f, 0.969751066085452140f, 0.969563561557013180f,
+  0.969375486659311280f,
+  0.969186841502985950f, 0.968997626199012420f, 0.968807840858700970f,
+  0.968617485593697540f,
+  0.968426560515983190f, 0.968235065737874320f, 0.968043001372022260f,
+  0.967850367531413620f,
+  0.967657164329369880f, 0.967463391879547550f, 0.967269050295937790f,
+  0.967074139692867040f,
+  0.966878660184995910f, 0.966682611887320080f, 0.966485994915169840f,
+  0.966288809384209690f,
+  0.966091055410438830f, 0.965892733110190860f, 0.965693842600133690f,
+  0.965494383997269500f,
+  0.965294357418934660f, 0.965093762982799590f, 0.964892600806868890f,
+  0.964690871009481030f,
+  0.964488573709308410f, 0.964285709025357480f, 0.964082277076968140f,
+  0.963878277983814200f,
+  0.963673711865903230f, 0.963468578843575950f, 0.963262879037507070f,
+  0.963056612568704340f,
+  0.962849779558509030f, 0.962642380128595710f, 0.962434414400972100f,
+  0.962225882497979020f,
+  0.962016784542290560f, 0.961807120656913540f, 0.961596890965187860f,
+  0.961386095590786250f,
+  0.961174734657714080f, 0.960962808290309780f, 0.960750316613243950f,
+  0.960537259751520050f,
+  0.960323637830473920f, 0.960109450975773940f, 0.959894699313420530f,
+  0.959679382969746750f,
+  0.959463502071417510f, 0.959247056745430090f, 0.959030047119113660f,
+  0.958812473320129310f,
+  0.958594335476470220f, 0.958375633716461170f, 0.958156368168758820f,
+  0.957936538962351420f,
+  0.957716146226558870f, 0.957495190091032570f, 0.957273670685755200f,
+  0.957051588141040970f,
+  0.956828942587535370f, 0.956605734156215080f, 0.956381962978387730f,
+  0.956157629185692140f,
+  0.955932732910098280f, 0.955707274283906560f, 0.955481253439748770f,
+  0.955254670510586990f,
+  0.955027525629714160f, 0.954799818930753720f, 0.954571550547659630f,
+  0.954342720614716480f,
+  0.954113329266538800f, 0.953883376638071770f, 0.953652862864590500f,
+  0.953421788081700310f,
+  0.953190152425336670f, 0.952957956031764700f, 0.952725199037579570f,
+  0.952491881579706320f,
+  0.952258003795399600f, 0.952023565822243570f, 0.951788567798152130f,
+  0.951553009861368590f,
+  0.951316892150465550f, 0.951080214804345010f, 0.950842977962238160f,
+  0.950605181763705340f,
+  0.950366826348635780f, 0.950127911857248100f, 0.949888438430089300f,
+  0.949648406208035480f,
+  0.949407815332291570f, 0.949166665944390700f, 0.948924958186195160f,
+  0.948682692199895090f,
+  0.948439868128009620f, 0.948196486113385580f, 0.947952546299198670f,
+  0.947708048828952100f,
+  0.947462993846477700f, 0.947217381495934820f, 0.946971211921810880f,
+  0.946724485268921170f,
+  0.946477201682408680f, 0.946229361307743820f, 0.945980964290724760f,
+  0.945732010777477150f,
+  0.945482500914453740f, 0.945232434848435000f, 0.944981812726528150f,
+  0.944730634696167800f,
+  0.944478900905115550f, 0.944226611501459810f, 0.943973766633615980f,
+  0.943720366450326200f,
+  0.943466411100659320f, 0.943211900734010620f, 0.942956835500102120f,
+  0.942701215548981900f,
+  0.942445041031024890f, 0.942188312096931770f, 0.941931028897729620f,
+  0.941673191584771360f,
+  0.941414800309736340f, 0.941155855224629190f, 0.940896356481780830f,
+  0.940636304233847590f,
+  0.940375698633811540f, 0.940114539834980280f, 0.939852827990986680f,
+  0.939590563255789270f,
+  0.939327745783671400f, 0.939064375729241950f, 0.938800453247434770f,
+  0.938535978493508560f,
+  0.938270951623047190f, 0.938005372791958840f, 0.937739242156476970f,
+  0.937472559873159250f,
+  0.937205326098887960f, 0.936937540990869900f, 0.936669204706636170f,
+  0.936400317404042060f,
+  0.936130879241267030f, 0.935860890376814640f, 0.935590350969512370f,
+  0.935319261178511610f,
+  0.935047621163287430f, 0.934775431083638700f, 0.934502691099687870f,
+  0.934229401371880820f,
+  0.933955562060986730f, 0.933681173328098410f, 0.933406235334631520f,
+  0.933130748242325230f,
+  0.932854712213241120f, 0.932578127409764420f, 0.932300993994602760f,
+  0.932023312130786490f,
+  0.931745081981668720f, 0.931466303710925090f, 0.931186977482553750f,
+  0.930907103460875130f,
+  0.930626681810531760f, 0.930345712696488470f, 0.930064196284032360f,
+  0.929782132738772190f,
+  0.929499522226638560f, 0.929216364913884040f, 0.928932660967082820f,
+  0.928648410553130520f,
+  0.928363613839244370f, 0.928078270992963140f, 0.927792382182146320f,
+  0.927505947574975180f,
+  0.927218967339951790f, 0.926931441645899130f, 0.926643370661961230f,
+  0.926354754557602860f,
+  0.926065593502609310f, 0.925775887667086740f, 0.925485637221461490f,
+  0.925194842336480530f,
+  0.924903503183210910f, 0.924611619933039970f, 0.924319192757675160f,
+  0.924026221829143850f,
+  0.923732707319793290f, 0.923438649402290370f, 0.923144048249621930f,
+  0.922848904035094120f,
+  0.922553216932332830f, 0.922256987115283030f, 0.921960214758209220f,
+  0.921662900035694730f,
+  0.921365043122642340f, 0.921066644194273640f, 0.920767703426128790f,
+  0.920468220994067110f,
+  0.920168197074266340f, 0.919867631843222950f, 0.919566525477751530f,
+  0.919264878154985370f,
+  0.918962690052375630f, 0.918659961347691900f, 0.918356692219021720f,
+  0.918052882844770380f,
+  0.917748533403661250f, 0.917443644074735220f, 0.917138215037350710f,
+  0.916832246471183890f,
+  0.916525738556228210f, 0.916218691472794220f, 0.915911105401509880f,
+  0.915602980523320230f,
+  0.915294317019487050f, 0.914985115071589310f, 0.914675374861522390f,
+  0.914365096571498560f,
+  0.914054280384046570f, 0.913742926482011390f, 0.913431035048554720f,
+  0.913118606267154240f,
+  0.912805640321603500f, 0.912492137396012650f, 0.912178097674807180f,
+  0.911863521342728520f,
+  0.911548408584833990f, 0.911232759586496190f, 0.910916574533403360f,
+  0.910599853611558930f,
+  0.910282597007281760f, 0.909964804907205660f, 0.909646477498279540f,
+  0.909327614967767260f,
+  0.909008217503247450f, 0.908688285292613360f, 0.908367818524072890f,
+  0.908046817386148340f,
+  0.907725282067676440f, 0.907403212757808110f, 0.907080609646008450f,
+  0.906757472922056550f,
+  0.906433802776045460f, 0.906109599398381980f, 0.905784862979786550f,
+  0.905459593711293250f,
+  0.905133791784249690f, 0.904807457390316540f, 0.904480590721468250f,
+  0.904153191969991780f,
+  0.903825261328487510f, 0.903496798989868450f, 0.903167805147360720f,
+  0.902838279994502830f,
+  0.902508223725145940f, 0.902177636533453620f, 0.901846518613901750f,
+  0.901514870161278740f,
+  0.901182691370684520f, 0.900849982437531450f, 0.900516743557543520f,
+  0.900182974926756810f,
+  0.899848676741518580f, 0.899513849198487980f, 0.899178492494635330f,
+  0.898842606827242370f,
+  0.898506192393901950f, 0.898169249392518080f, 0.897831778021305650f,
+  0.897493778478790310f,
+  0.897155250963808550f, 0.896816195675507300f, 0.896476612813344120f,
+  0.896136502577086770f,
+  0.895795865166813530f, 0.895454700782912450f, 0.895113009626081760f,
+  0.894770791897329550f,
+  0.894428047797973800f, 0.894084777529641990f, 0.893740981294271040f,
+  0.893396659294107720f,
+  0.893051811731707450f, 0.892706438809935390f, 0.892360540731965360f,
+  0.892014117701280470f,
+  0.891667169921672280f, 0.891319697597241390f, 0.890971700932396860f,
+  0.890623180131855930f,
+  0.890274135400644600f, 0.889924566944096720f, 0.889574474967854580f,
+  0.889223859677868210f,
+  0.888872721280395630f, 0.888521059982002260f, 0.888168875989561730f,
+  0.887816169510254440f,
+  0.887462940751568840f, 0.887109189921300170f, 0.886754917227550840f,
+  0.886400122878730600f,
+  0.886044807083555600f, 0.885688970051048960f, 0.885332611990540590f,
+  0.884975733111666660f,
+  0.884618333624369920f, 0.884260413738899190f, 0.883901973665809470f,
+  0.883543013615961880f,
+  0.883183533800523390f, 0.882823534430966620f, 0.882463015719070150f,
+  0.882101977876917580f,
+  0.881740421116898320f, 0.881378345651706920f, 0.881015751694342870f,
+  0.880652639458111010f,
+  0.880289009156621010f, 0.879924861003786860f, 0.879560195213827890f,
+  0.879195012001267480f,
+  0.878829311580933360f, 0.878463094167957870f, 0.878096359977777130f,
+  0.877729109226131570f,
+  0.877361342129065140f, 0.876993058902925890f, 0.876624259764365310f,
+  0.876254944930338510f,
+  0.875885114618103810f, 0.875514769045222850f, 0.875143908429560360f,
+  0.874772532989284150f,
+  0.874400642942864790f, 0.874028238509075740f, 0.873655319906992630f,
+  0.873281887355994210f,
+  0.872907941075761080f, 0.872533481286276170f, 0.872158508207824480f,
+  0.871783022060993120f,
+  0.871407023066670950f, 0.871030511446048260f, 0.870653487420617430f,
+  0.870275951212171940f,
+  0.869897903042806340f, 0.869519343134916860f, 0.869140271711200560f,
+  0.868760688994655310f,
+  0.868380595208579800f, 0.867999990576573510f, 0.867618875322536230f,
+  0.867237249670668400f,
+  0.866855113845470430f, 0.866472468071743050f, 0.866089312574586770f,
+  0.865705647579402380f,
+  0.865321473311889800f, 0.864936789998049020f, 0.864551597864179340f,
+  0.864165897136879300f,
+  0.863779688043046720f, 0.863392970809878420f, 0.863005745664870320f,
+  0.862618012835816740f,
+  0.862229772550811240f, 0.861841025038245330f, 0.861451770526809320f,
+  0.861062009245491480f,
+  0.860671741423578380f, 0.860280967290654510f, 0.859889687076602290f,
+  0.859497901011601730f,
+  0.859105609326130450f, 0.858712812250963520f, 0.858319510017173440f,
+  0.857925702856129790f,
+  0.857531390999499150f, 0.857136574679244980f, 0.856741254127627470f,
+  0.856345429577203610f,
+  0.855949101260826910f, 0.855552269411646860f, 0.855154934263109620f,
+  0.854757096048957220f,
+  0.854358755003227440f, 0.853959911360254180f, 0.853560565354666840f,
+  0.853160717221390420f,
+  0.852760367195645300f, 0.852359515512947090f, 0.851958162409106380f,
+  0.851556308120228980f,
+  0.851153952882715340f, 0.850751096933260790f, 0.850347740508854980f,
+  0.849943883846782210f,
+  0.849539527184620890f, 0.849134670760243630f, 0.848729314811817130f,
+  0.848323459577801640f,
+  0.847917105296951410f, 0.847510252208314330f, 0.847102900551231500f,
+  0.846695050565337450f,
+  0.846286702490559710f, 0.845877856567119000f, 0.845468513035528830f,
+  0.845058672136595470f,
+  0.844648334111417820f, 0.844237499201387020f, 0.843826167648186740f,
+  0.843414339693792760f,
+  0.843002015580472940f, 0.842589195550786710f, 0.842175879847585570f,
+  0.841762068714012490f,
+  0.841347762393501950f, 0.840932961129779780f, 0.840517665166862550f,
+  0.840101874749058400f,
+  0.839685590120966110f, 0.839268811527475230f, 0.838851539213765760f,
+  0.838433773425308340f,
+  0.838015514407863820f, 0.837596762407483040f, 0.837177517670507300f,
+  0.836757780443567190f,
+  0.836337550973583530f, 0.835916829507766360f, 0.835495616293615350f,
+  0.835073911578919410f,
+  0.834651715611756440f, 0.834229028640493420f, 0.833805850913786340f,
+  0.833382182680579730f,
+  0.832958024190106670f, 0.832533375691888680f, 0.832108237435735590f,
+  0.831682609671745120f,
+  0.831256492650303210f, 0.830829886622083570f, 0.830402791838047550f,
+  0.829975208549443950f,
+  0.829547137007808910f, 0.829118577464965980f, 0.828689530173025820f,
+  0.828259995384385660f,
+  0.827829973351729920f, 0.827399464328029470f, 0.826968468566541600f,
+  0.826536986320809960f,
+  0.826105017844664610f, 0.825672563392221390f, 0.825239623217882250f,
+  0.824806197576334330f,
+  0.824372286722551250f, 0.823937890911791370f, 0.823503010399598500f,
+  0.823067645441801670f,
+  0.822631796294514990f, 0.822195463214137170f, 0.821758646457351750f,
+  0.821321346281126740f,
+  0.820883562942714580f, 0.820445296699652050f, 0.820006547809759680f,
+  0.819567316531142230f,
+  0.819127603122188240f, 0.818687407841569680f, 0.818246730948242070f,
+  0.817805572701444270f,
+  0.817363933360698460f, 0.816921813185809480f, 0.816479212436865390f,
+  0.816036131374236810f,
+  0.815592570258576790f, 0.815148529350820830f, 0.814704008912187080f,
+  0.814259009204175270f,
+  0.813813530488567190f, 0.813367573027426570f, 0.812921137083098770f,
+  0.812474222918210480f,
+  0.812026830795669730f, 0.811578960978665890f, 0.811130613730669190f,
+  0.810681789315430780f,
+  0.810232487996982330f, 0.809782710039636530f, 0.809332455707985950f,
+  0.808881725266903610f,
+  0.808430518981542720f, 0.807978837117336310f, 0.807526679939997160f,
+  0.807074047715517610f,
+  0.806620940710169650f, 0.806167359190504420f, 0.805713303423352230f,
+  0.805258773675822210f,
+  0.804803770215302920f, 0.804348293309460780f, 0.803892343226241260f,
+  0.803435920233868120f,
+  0.802979024600843250f, 0.802521656595946430f, 0.802063816488235440f,
+  0.801605504547046150f,
+  0.801146721041991360f, 0.800687466242961610f, 0.800227740420124790f,
+  0.799767543843925680f,
+  0.799306876785086160f, 0.798845739514604580f, 0.798384132303756380f,
+  0.797922055424093000f,
+  0.797459509147442460f, 0.796996493745908750f, 0.796533009491872000f,
+  0.796069056657987990f,
+  0.795604635517188070f, 0.795139746342679590f, 0.794674389407944550f,
+  0.794208564986740640f,
+  0.793742273353100210f, 0.793275514781330630f, 0.792808289546014120f,
+  0.792340597922007170f,
+  0.791872440184440470f, 0.791403816608719500f, 0.790934727470523290f,
+  0.790465173045804880f,
+  0.789995153610791090f, 0.789524669441982190f, 0.789053720816151880f,
+  0.788582308010347120f,
+  0.788110431301888070f, 0.787638090968367450f, 0.787165287287651010f,
+  0.786692020537876790f,
+  0.786218290997455660f, 0.785744098945070360f, 0.785269444659675850f,
+  0.784794328420499230f,
+  0.784318750507038920f, 0.783842711199065230f, 0.783366210776619720f,
+  0.782889249520015480f,
+  0.782411827709836530f, 0.781933945626937630f, 0.781455603552444590f,
+  0.780976801767753750f,
+  0.780497540554531910f, 0.780017820194715990f, 0.779537640970513260f,
+  0.779057003164400630f,
+  0.778575907059125050f, 0.778094352937702790f, 0.777612341083420030f,
+  0.777129871779831620f,
+  0.776646945310762060f, 0.776163561960304340f, 0.775679722012820650f,
+  0.775195425752941420f,
+  0.774710673465565550f, 0.774225465435860680f, 0.773739801949261840f,
+  0.773253683291472590f,
+  0.772767109748463850f, 0.772280081606474320f, 0.771792599152010150f,
+  0.771304662671844830f,
+  0.770816272453018540f, 0.770327428782838890f, 0.769838131948879840f,
+  0.769348382238982280f,
+  0.768858179941253270f, 0.768367525344066270f, 0.767876418736060610f,
+  0.767384860406141730f,
+  0.766892850643480670f, 0.766400389737514230f, 0.765907477977944340f,
+  0.765414115654738270f,
+  0.764920303058128410f, 0.764426040478612070f, 0.763931328206951090f,
+  0.763436166534172010f,
+  0.762940555751565720f, 0.762444496150687210f, 0.761947988023355390f,
+  0.761451031661653620f,
+  0.760953627357928150f, 0.760455775404789260f, 0.759957476095110330f,
+  0.759458729722028210f,
+  0.758959536578942440f, 0.758459896959515430f, 0.757959811157672300f,
+  0.757459279467600720f,
+  0.756958302183750490f, 0.756456879600833740f, 0.755955012013824420f,
+  0.755452699717958250f,
+  0.754949943008732640f, 0.754446742181906440f, 0.753943097533499640f,
+  0.753439009359793580f,
+  0.752934477957330150f, 0.752429503622912390f, 0.751924086653603550f,
+  0.751418227346727470f,
+  0.750911925999867890f, 0.750405182910869330f, 0.749897998377835330f,
+  0.749390372699129560f,
+  0.748882306173375150f, 0.748373799099454560f, 0.747864851776509410f,
+  0.747355464503940190f,
+  0.746845637581406540f, 0.746335371308826320f, 0.745824665986376090f,
+  0.745313521914490520f,
+  0.744801939393862630f, 0.744289918725443260f, 0.743777460210440890f,
+  0.743264564150321600f,
+  0.742751230846809050f, 0.742237460601884000f, 0.741723253717784140f,
+  0.741208610497004260f,
+  0.740693531242295760f, 0.740178016256666240f, 0.739662065843380010f,
+  0.739145680305957510f,
+  0.738628859948174840f, 0.738111605074064260f, 0.737593915987913570f,
+  0.737075792994265730f,
+  0.736557236397919150f, 0.736038246503927350f, 0.735518823617598900f,
+  0.734998968044496710f,
+  0.734478680090438370f, 0.733957960061495940f, 0.733436808263995710f,
+  0.732915225004517780f,
+  0.732393210589896040f, 0.731870765327218290f, 0.731347889523825570f,
+  0.730824583487312160f,
+  0.730300847525525490f, 0.729776681946566090f, 0.729252087058786970f,
+  0.728727063170793830f,
+  0.728201610591444610f, 0.727675729629849610f, 0.727149420595371020f,
+  0.726622683797622850f,
+  0.726095519546471000f, 0.725567928152032300f, 0.725039909924675370f,
+  0.724511465175019630f,
+  0.723982594213935520f, 0.723453297352544380f, 0.722923574902217700f,
+  0.722393427174577550f,
+  0.721862854481496340f, 0.721331857135096290f, 0.720800435447749190f,
+  0.720268589732077190f,
+  0.719736320300951030f, 0.719203627467491220f, 0.718670511545067230f,
+  0.718136972847297490f,
+  0.717603011688049080f, 0.717068628381437480f, 0.716533823241826680f,
+  0.715998596583828690f,
+  0.715462948722303760f, 0.714926879972359490f, 0.714390390649351390f,
+  0.713853481068882470f,
+  0.713316151546802610f, 0.712778402399208980f, 0.712240233942445510f,
+  0.711701646493102970f,
+  0.711162640368018350f, 0.710623215884275020f, 0.710083373359202800f,
+  0.709543113110376770f,
+  0.709002435455618250f, 0.708461340712994160f, 0.707919829200816310f,
+  0.707377901237642100f,
+  0.706835557142273860f, 0.706292797233758480f, 0.705749621831387790f,
+  0.705206031254697830f,
+  0.704662025823468930f, 0.704117605857725430f, 0.703572771677735580f,
+  0.703027523604011220f,
+  0.702481861957308000f, 0.701935787058624360f, 0.701389299229202230f,
+  0.700842398790526230f,
+  0.700295086064323780f, 0.699747361372564990f, 0.699199225037462120f,
+  0.698650677381469580f,
+  0.698101718727283880f, 0.697552349397843270f, 0.697002569716327460f,
+  0.696452380006157830f,
+  0.695901780590996830f, 0.695350771794747800f, 0.694799353941554900f,
+  0.694247527355803310f,
+  0.693695292362118350f, 0.693142649285365510f, 0.692589598450650380f,
+  0.692036140183318830f,
+  0.691482274808955850f, 0.690928002653386280f, 0.690373324042674040f,
+  0.689818239303122470f,
+  0.689262748761273470f, 0.688706852743907750f, 0.688150551578044830f,
+  0.687593845590942170f,
+  0.687036735110095660f, 0.686479220463238950f, 0.685921301978343670f,
+  0.685362979983618730f,
+  0.684804254807510620f, 0.684245126778703080f, 0.683685596226116690f,
+  0.683125663478908800f,
+  0.682565328866473250f, 0.682004592718440830f, 0.681443455364677990f,
+  0.680881917135287340f,
+  0.680319978360607200f, 0.679757639371212030f, 0.679194900497911200f,
+  0.678631762071749470f,
+  0.678068224424006600f, 0.677504287886197430f, 0.676939952790071240f,
+  0.676375219467611700f,
+  0.675810088251037060f, 0.675244559472799270f, 0.674678633465584540f,
+  0.674112310562312360f,
+  0.673545591096136100f, 0.672978475400442090f, 0.672410963808849900f,
+  0.671843056655211930f,
+  0.671274754273613490f, 0.670706056998372160f, 0.670136965164037760f,
+  0.669567479105392490f,
+  0.668997599157450270f, 0.668427325655456820f, 0.667856658934889440f,
+  0.667285599331456480f,
+  0.666714147181097670f, 0.666142302819983540f, 0.665570066584515560f,
+  0.664997438811325340f,
+  0.664424419837275180f, 0.663851009999457340f, 0.663277209635194100f,
+  0.662703019082037440f,
+  0.662128438677768720f, 0.661553468760399000f, 0.660978109668168060f,
+  0.660402361739545030f,
+  0.659826225313227430f, 0.659249700728141490f, 0.658672788323441890f,
+  0.658095488438511290f,
+  0.657517801412960120f, 0.656939727586627110f, 0.656361267299578000f,
+  0.655782420892106030f,
+  0.655203188704731930f, 0.654623571078202680f, 0.654043568353492640f,
+  0.653463180871802330f,
+  0.652882408974558960f, 0.652301253003415460f, 0.651719713300251020f,
+  0.651137790207170330f,
+  0.650555484066503990f, 0.649972795220807530f, 0.649389724012861770f,
+  0.648806270785672550f,
+  0.648222435882470420f, 0.647638219646710420f, 0.647053622422071650f,
+  0.646468644552457890f,
+  0.645883286381996440f, 0.645297548255038380f, 0.644711430516158420f,
+  0.644124933510154540f,
+  0.643538057582047850f, 0.642950803077082080f, 0.642363170340724320f,
+  0.641775159718663500f,
+  0.641186771556811250f, 0.640598006201301030f, 0.640008863998488440f,
+  0.639419345294950700f,
+  0.638829450437486400f, 0.638239179773115390f, 0.637648533649078810f,
+  0.637057512412838590f,
+  0.636466116412077180f, 0.635874345994697720f, 0.635282201508823530f,
+  0.634689683302797850f,
+  0.634096791725183740f, 0.633503527124764320f, 0.632909889850541860f,
+  0.632315880251737680f,
+  0.631721498677792370f, 0.631126745478365340f, 0.630531621003334600f,
+  0.629936125602796550f,
+  0.629340259627065750f, 0.628744023426674790f, 0.628147417352374120f,
+  0.627550441755131530f,
+  0.626953096986132770f, 0.626355383396779990f, 0.625757301338692900f,
+  0.625158851163707730f,
+  0.624560033223877320f, 0.623960847871470770f, 0.623361295458973340f,
+  0.622761376339086460f,
+  0.622161090864726930f, 0.621560439389027270f, 0.620959422265335180f,
+  0.620358039847213830f,
+  0.619756292488440660f, 0.619154180543008410f, 0.618551704365123860f,
+  0.617948864309208260f,
+  0.617345660729896940f, 0.616742093982038830f, 0.616138164420696910f,
+  0.615533872401147430f,
+  0.614929218278879590f, 0.614324202409595950f, 0.613718825149211830f,
+  0.613113086853854910f,
+  0.612506987879865570f, 0.611900528583796070f, 0.611293709322411010f,
+  0.610686530452686280f,
+  0.610078992331809620f, 0.609471095317180240f, 0.608862839766408200f,
+  0.608254226037314490f,
+  0.607645254487930830f, 0.607035925476499760f, 0.606426239361473550f,
+  0.605816196501515080f,
+  0.605205797255496500f, 0.604595041982500360f, 0.603983931041818020f,
+  0.603372464792950370f,
+  0.602760643595607220f, 0.602148467809707320f, 0.601535937795377730f,
+  0.600923053912954090f,
+  0.600309816522980430f, 0.599696225986208310f, 0.599082282663597310f,
+  0.598467986916314310f,
+  0.597853339105733910f, 0.597238339593437530f, 0.596622988741213330f,
+  0.596007286911056530f,
+  0.595391234465168730f, 0.594774831765957580f, 0.594158079176036800f,
+  0.593540977058226390f,
+  0.592923525775551410f, 0.592305725691242400f, 0.591687577168735550f,
+  0.591069080571671510f,
+  0.590450236263895920f, 0.589831044609458900f, 0.589211505972615070f,
+  0.588591620717822890f,
+  0.587971389209745120f, 0.587350811813247660f, 0.586729888893400500f,
+  0.586108620815476430f,
+  0.585487007944951450f, 0.584865050647504490f, 0.584242749289016980f,
+  0.583620104235572760f,
+  0.582997115853457700f, 0.582373784509160220f, 0.581750110569369760f,
+  0.581126094400977620f,
+  0.580501736371076600f, 0.579877036846960350f, 0.579251996196123550f,
+  0.578626614786261430f,
+  0.578000892985269910f, 0.577374831161244880f, 0.576748429682482520f,
+  0.576121688917478390f,
+  0.575494609234928230f, 0.574867191003726740f, 0.574239434592967890f,
+  0.573611340371944610f,
+  0.572982908710148680f, 0.572354139977270030f, 0.571725034543197120f,
+  0.571095592778016690f,
+  0.570465815052012990f, 0.569835701735668110f, 0.569205253199661200f,
+  0.568574469814869250f,
+  0.567943351952365670f, 0.567311899983420800f, 0.566680114279501710f,
+  0.566047995212271560f,
+  0.565415543153589770f, 0.564782758475511400f, 0.564149641550287680f,
+  0.563516192750364910f,
+  0.562882412448384550f, 0.562248301017183150f, 0.561613858829792420f,
+  0.560979086259438260f,
+  0.560343983679540860f, 0.559708551463714790f, 0.559072789985768480f,
+  0.558436699619704100f,
+  0.557800280739717100f, 0.557163533720196340f, 0.556526458935723720f,
+  0.555889056761073920f,
+  0.555251327571214090f, 0.554613271741304040f, 0.553974889646695610f,
+  0.553336181662932410f,
+  0.552697148165749770f, 0.552057789531074980f, 0.551418106135026060f,
+  0.550778098353912230f,
+  0.550137766564233630f, 0.549497111142680960f, 0.548856132466135290f,
+  0.548214830911667780f,
+  0.547573206856539870f, 0.546931260678202190f, 0.546288992754295210f,
+  0.545646403462648590f,
+  0.545003493181281160f, 0.544360262288400400f, 0.543716711162402390f,
+  0.543072840181871850f,
+  0.542428649725581360f, 0.541784140172491660f, 0.541139311901750910f,
+  0.540494165292695230f,
+  0.539848700724847700f, 0.539202918577918240f, 0.538556819231804210f,
+  0.537910403066588990f,
+  0.537263670462542530f, 0.536616621800121150f, 0.535969257459966710f,
+  0.535321577822907010f,
+  0.534673583269955510f, 0.534025274182310380f, 0.533376650941355560f,
+  0.532727713928658810f,
+  0.532078463525973540f, 0.531428900115236910f, 0.530779024078570250f,
+  0.530128835798278850f,
+  0.529478335656852090f, 0.528827524036961980f, 0.528176401321464370f,
+  0.527524967893398200f,
+  0.526873224135984700f, 0.526221170432628170f, 0.525568807166914680f,
+  0.524916134722612890f,
+  0.524263153483673470f, 0.523609863834228030f, 0.522956266158590140f,
+  0.522302360841254700f,
+  0.521648148266897090f, 0.520993628820373810f, 0.520338802886721960f,
+  0.519683670851158520f,
+  0.519028233099080970f, 0.518372490016066220f, 0.517716441987871150f,
+  0.517060089400432130f,
+  0.516403432639863990f, 0.515746472092461380f, 0.515089208144697270f,
+  0.514431641183222930f,
+  0.513773771594868030f, 0.513115599766640560f, 0.512457126085725800f,
+  0.511798350939487000f,
+  0.511139274715464390f, 0.510479897801375700f, 0.509820220585115560f,
+  0.509160243454754750f,
+  0.508499966798540810f, 0.507839391004897940f, 0.507178516462425290f,
+  0.506517343559898530f,
+  0.505855872686268860f, 0.505194104230662240f, 0.504532038582380380f,
+  0.503869676130898950f,
+  0.503207017265869030f, 0.502544062377115800f, 0.501880811854638400f,
+  0.501217266088609950f,
+  0.500553425469377640f, 0.499889290387461380f, 0.499224861233555030f,
+  0.498560138398525200f,
+  0.497895122273410930f, 0.497229813249424340f, 0.496564211717949340f,
+  0.495898318070542240f,
+  0.495232132698931350f, 0.494565655995016010f, 0.493898888350867430f,
+  0.493231830158728070f,
+  0.492564481811010650f, 0.491896843700299240f, 0.491228916219348330f,
+  0.490560699761082080f,
+  0.489892194718595300f, 0.489223401485152030f, 0.488554320454186230f,
+  0.487884952019301210f,
+  0.487215296574268820f, 0.486545354513030270f, 0.485875126229695420f,
+  0.485204612118541880f,
+  0.484533812574016120f, 0.483862727990732320f, 0.483191358763471910f,
+  0.482519705287184520f,
+  0.481847767956986080f, 0.481175547168160360f, 0.480503043316157670f,
+  0.479830256796594250f,
+  0.479157188005253310f, 0.478483837338084080f, 0.477810205191201040f,
+  0.477136291960884750f,
+  0.476462098043581310f, 0.475787623835901120f, 0.475112869734620470f,
+  0.474437836136679340f,
+  0.473762523439182850f, 0.473086932039400220f, 0.472411062334764100f,
+  0.471734914722871430f,
+  0.471058489601482610f, 0.470381787368520710f, 0.469704808422072460f,
+  0.469027553160387240f,
+  0.468350021981876530f, 0.467672215285114710f, 0.466994133468838110f,
+  0.466315776931944480f,
+  0.465637146073493770f, 0.464958241292706740f, 0.464279062988965760f,
+  0.463599611561814120f,
+  0.462919887410955130f, 0.462239890936253280f, 0.461559622537733190f,
+  0.460879082615578690f,
+  0.460198271570134270f, 0.459517189801903590f, 0.458835837711549120f,
+  0.458154215699893230f,
+  0.457472324167916110f, 0.456790163516757220f, 0.456107734147714220f,
+  0.455425036462242420f,
+  0.454742070861955450f, 0.454058837748624540f, 0.453375337524177750f,
+  0.452691570590700860f,
+  0.452007537350436530f, 0.451323238205783520f, 0.450638673559297760f,
+  0.449953843813690580f,
+  0.449268749371829920f, 0.448583390636739300f, 0.447897768011597360f,
+  0.447211881899738260f,
+  0.446525732704651400f, 0.445839320829980350f, 0.445152646679523590f,
+  0.444465710657234110f,
+  0.443778513167218280f, 0.443091054613736990f, 0.442403335401204130f,
+  0.441715355934187310f,
+  0.441027116617407340f, 0.440338617855737300f, 0.439649860054203420f,
+  0.438960843617984430f,
+  0.438271568952410480f, 0.437582036462964340f, 0.436892246555280470f,
+  0.436202199635143950f,
+  0.435511896108492170f, 0.434821336381412350f, 0.434130520860143310f,
+  0.433439449951074200f,
+  0.432748124060743760f, 0.432056543595841450f, 0.431364708963206440f,
+  0.430672620569826860f,
+  0.429980278822840570f, 0.429287684129534720f, 0.428594836897344400f,
+  0.427901737533854240f,
+  0.427208386446796370f, 0.426514784044051520f, 0.425820930733648350f,
+  0.425126826923762410f,
+  0.424432473022717420f, 0.423737869438983950f, 0.423043016581179100f,
+  0.422347914858067000f,
+  0.421652564678558380f, 0.420956966451709440f, 0.420261120586723050f,
+  0.419565027492946940f,
+  0.418868687579875110f, 0.418172101257146430f, 0.417475268934544340f,
+  0.416778191021997590f,
+  0.416080867929579320f, 0.415383300067506290f, 0.414685487846140010f,
+  0.413987431675985510f,
+  0.413289131967690960f, 0.412590589132048380f, 0.411891803579992220f,
+  0.411192775722600160f,
+  0.410493505971092520f, 0.409793994736831200f, 0.409094242431320920f,
+  0.408394249466208110f,
+  0.407694016253280170f, 0.406993543204466460f, 0.406292830731837470f,
+  0.405591879247603870f,
+  0.404890689164117750f, 0.404189260893870750f, 0.403487594849495310f,
+  0.402785691443763640f,
+  0.402083551089587040f, 0.401381174200016790f, 0.400678561188243350f,
+  0.399975712467595390f,
+  0.399272628451540930f, 0.398569309553686360f, 0.397865756187775750f,
+  0.397161968767691720f,
+  0.396457947707453960f, 0.395753693421220080f, 0.395049206323284880f,
+  0.394344486828079650f,
+  0.393639535350172880f, 0.392934352304269600f, 0.392228938105210370f,
+  0.391523293167972350f,
+  0.390817417907668610f, 0.390111312739546910f, 0.389404978078991100f,
+  0.388698414341519250f,
+  0.387991621942784910f, 0.387284601298575890f, 0.386577352824813980f,
+  0.385869876937555310f,
+  0.385162174052989970f, 0.384454244587440870f, 0.383746088957365010f,
+  0.383037707579352130f,
+  0.382329100870124510f, 0.381620269246537520f, 0.380911213125578130f,
+  0.380201932924366050f,
+  0.379492429060152740f, 0.378782701950320600f, 0.378072752012383990f,
+  0.377362579663988450f,
+  0.376652185322909620f, 0.375941569407054420f, 0.375230732334460030f,
+  0.374519674523293210f,
+  0.373808396391851370f, 0.373096898358560690f, 0.372385180841977360f,
+  0.371673244260786630f,
+  0.370961089033802040f, 0.370248715579966360f, 0.369536124318350760f,
+  0.368823315668153960f,
+  0.368110290048703050f, 0.367397047879452820f, 0.366683589579984930f,
+  0.365969915570008910f,
+  0.365256026269360380f, 0.364541922098002180f, 0.363827603476023610f,
+  0.363113070823639530f,
+  0.362398324561191310f, 0.361683365109145950f, 0.360968192888095290f,
+  0.360252808318756830f,
+  0.359537211821973180f, 0.358821403818710860f, 0.358105384730061760f,
+  0.357389154977241000f,
+  0.356672714981588260f, 0.355956065164567010f, 0.355239205947763370f,
+  0.354522137752887430f,
+  0.353804861001772160f, 0.353087376116372530f, 0.352369683518766630f,
+  0.351651783631154680f,
+  0.350933676875858360f, 0.350215363675321740f, 0.349496844452109600f,
+  0.348778119628908420f,
+  0.348059189628525780f, 0.347340054873889190f, 0.346620715788047320f,
+  0.345901172794169100f,
+  0.345181426315542610f, 0.344461476775576480f, 0.343741324597798600f,
+  0.343020970205855540f,
+  0.342300414023513690f, 0.341579656474657210f, 0.340858697983289440f,
+  0.340137538973531880f,
+  0.339416179869623410f, 0.338694621095921190f, 0.337972863076899830f,
+  0.337250906237150650f,
+  0.336528751001382350f, 0.335806397794420560f, 0.335083847041206580f,
+  0.334361099166798900f,
+  0.333638154596370920f, 0.332915013755212650f, 0.332191677068729320f,
+  0.331468144962440920f,
+  0.330744417861982890f, 0.330020496193105530f, 0.329296380381672800f,
+  0.328572070853663690f,
+  0.327847568035170960f, 0.327122872352400510f, 0.326397984231672660f,
+  0.325672904099419900f,
+  0.324947632382188430f, 0.324222169506637130f, 0.323496515899536760f,
+  0.322770671987770710f,
+  0.322044638198334620f, 0.321318414958334910f, 0.320592002694990330f,
+  0.319865401835630610f,
+  0.319138612807695900f, 0.318411636038737960f, 0.317684471956418020f,
+  0.316957120988508150f,
+  0.316229583562890490f, 0.315501860107556040f, 0.314773951050606070f,
+  0.314045856820250820f,
+  0.313317577844809070f, 0.312589114552708660f, 0.311860467372486130f,
+  0.311131636732785270f,
+  0.310402623062358880f, 0.309673426790066490f, 0.308944048344875710f,
+  0.308214488155861220f,
+  0.307484746652204160f, 0.306754824263192780f, 0.306024721418221900f,
+  0.305294438546791720f,
+  0.304563976078509050f, 0.303833334443086470f, 0.303102514070341060f,
+  0.302371515390196130f,
+  0.301640338832678880f, 0.300908984827921890f, 0.300177453806162120f,
+  0.299445746197739950f,
+  0.298713862433100390f, 0.297981802942791920f, 0.297249568157465890f,
+  0.296517158507877410f,
+  0.295784574424884370f, 0.295051816339446720f, 0.294318884682627570f,
+  0.293585779885591310f,
+  0.292852502379604810f, 0.292119052596036540f, 0.291385430966355720f,
+  0.290651637922133220f,
+  0.289917673895040860f, 0.289183539316850310f, 0.288449234619434170f,
+  0.287714760234765280f,
+  0.286980116594915570f, 0.286245304132057120f, 0.285510323278461380f,
+  0.284775174466498300f,
+  0.284039858128637360f, 0.283304374697445790f, 0.282568724605589740f,
+  0.281832908285833460f,
+  0.281096926171038320f, 0.280360778694163810f, 0.279624466288266700f,
+  0.278887989386500280f,
+  0.278151348422115090f, 0.277414543828458200f, 0.276677576038972420f,
+  0.275940445487197320f,
+  0.275203152606767370f, 0.274465697831413220f, 0.273728081594960650f,
+  0.272990304331329980f,
+  0.272252366474536660f, 0.271514268458690810f, 0.270776010717996010f,
+  0.270037593686750510f,
+  0.269299017799346230f, 0.268560283490267890f, 0.267821391194094320f,
+  0.267082341345496350f,
+  0.266343134379238180f, 0.265603770730176440f, 0.264864250833259320f,
+  0.264124575123527490f,
+  0.263384744036113390f, 0.262644758006240100f, 0.261904617469222560f,
+  0.261164322860466590f,
+  0.260423874615468010f, 0.259683273169813930f, 0.258942518959180580f,
+  0.258201612419334870f,
+  0.257460553986133210f, 0.256719344095520720f, 0.255977983183532380f,
+  0.255236471686291820f,
+  0.254494810040010790f, 0.253752998680989940f, 0.253011038045617980f,
+  0.252268928570370810f,
+  0.251526670691812780f, 0.250784264846594550f, 0.250041711471454650f,
+  0.249299011003218300f,
+  0.248556163878796620f, 0.247813170535187620f, 0.247070031409475370f,
+  0.246326746938829060f,
+  0.245583317560504000f, 0.244839743711840750f, 0.244096025830264210f,
+  0.243352164353284880f,
+  0.242608159718496890f, 0.241864012363579210f, 0.241119722726294730f,
+  0.240375291244489500f,
+  0.239630718356093560f, 0.238886004499120170f, 0.238141150111664870f,
+  0.237396155631906550f,
+  0.236651021498106460f, 0.235905748148607370f, 0.235160336021834860f,
+  0.234414785556295250f,
+  0.233669097190576820f, 0.232923271363349120f, 0.232177308513361770f,
+  0.231431209079445730f,
+  0.230684973500512310f, 0.229938602215552260f, 0.229192095663636740f,
+  0.228445454283916550f,
+  0.227698678515621170f, 0.226951768798059980f, 0.226204725570620270f,
+  0.225457549272768540f,
+  0.224710240344049570f, 0.223962799224085520f, 0.223215226352576960f,
+  0.222467522169301990f,
+  0.221719687114115240f, 0.220971721626949060f, 0.220223626147812460f,
+  0.219475401116790340f,
+  0.218727046974044600f, 0.217978564159812290f, 0.217229953114406790f,
+  0.216481214278216900f,
+  0.215732348091705940f, 0.214983354995412820f, 0.214234235429951100f,
+  0.213484989836008080f,
+  0.212735618654345870f, 0.211986122325800410f, 0.211236501291280710f,
+  0.210486755991769890f,
+  0.209736886868323370f, 0.208986894362070070f, 0.208236778914211470f,
+  0.207486540966020700f,
+  0.206736180958843660f, 0.205985699334098050f, 0.205235096533272380f,
+  0.204484372997927180f,
+  0.203733529169694010f, 0.202982565490274460f, 0.202231482401441620f,
+  0.201480280345037820f,
+  0.200728959762976140f, 0.199977521097239290f, 0.199225964789878890f,
+  0.198474291283016360f,
+  0.197722501018842030f, 0.196970594439614370f, 0.196218571987660850f,
+  0.195466434105377090f,
+  0.194714181235225990f, 0.193961813819739010f, 0.193209332301514080f,
+  0.192456737123216840f,
+  0.191704028727579940f, 0.190951207557401860f, 0.190198274055548120f,
+  0.189445228664950340f,
+  0.188692071828605260f, 0.187938803989575850f, 0.187185425590990440f,
+  0.186431937076041640f,
+  0.185678338887987790f, 0.184924631470150870f, 0.184170815265917720f,
+  0.183416890718739230f,
+  0.182662858272129360f, 0.181908718369666160f, 0.181154471454990920f,
+  0.180400117971807270f,
+  0.179645658363882100f, 0.178891093075044830f, 0.178136422549186320f,
+  0.177381647230260200f,
+  0.176626767562280960f, 0.175871783989325040f, 0.175116696955530060f,
+  0.174361506905093830f,
+  0.173606214282275410f, 0.172850819531394200f, 0.172095323096829040f,
+  0.171339725423019260f,
+  0.170584026954463700f, 0.169828228135719880f, 0.169072329411405180f,
+  0.168316331226194910f,
+  0.167560234024823590f, 0.166804038252083870f, 0.166047744352825850f,
+  0.165291352771957970f,
+  0.164534863954446110f, 0.163778278345312690f, 0.163021596389637810f,
+  0.162264818532558110f,
+  0.161507945219266150f, 0.160750976895011390f, 0.159993914005098350f,
+  0.159236756994887850f,
+  0.158479506309796100f, 0.157722162395293690f, 0.156964725696906750f,
+  0.156207196660216040f,
+  0.155449575730855880f, 0.154691863354515400f, 0.153934059976937460f,
+  0.153176166043917870f,
+  0.152418182001306500f, 0.151660108295005400f, 0.150901945370970040f,
+  0.150143693675208330f,
+  0.149385353653779810f, 0.148626925752796540f, 0.147868410418422360f,
+  0.147109808096871850f,
+  0.146351119234411440f, 0.145592344277358450f, 0.144833483672080240f,
+  0.144074537864995330f,
+  0.143315507302571590f, 0.142556392431327340f, 0.141797193697830530f,
+  0.141037911548697770f,
+  0.140278546430595420f, 0.139519098790238600f, 0.138759569074390380f,
+  0.137999957729862760f,
+  0.137240265203515700f, 0.136480491942256310f, 0.135720638393040080f,
+  0.134960705002868830f,
+  0.134200692218792020f, 0.133440600487905820f, 0.132680430257352130f,
+  0.131920181974319760f,
+  0.131159856086043410f, 0.130399453039802740f, 0.129638973282923540f,
+  0.128878417262776660f,
+  0.128117785426777150f, 0.127357078222385570f, 0.126596296097105960f,
+  0.125835439498487020f,
+  0.125074508874121300f, 0.124313504671644300f, 0.123552427338735370f,
+  0.122791277323116900f,
+  0.122030055072553410f, 0.121268761034852550f, 0.120507395657864240f,
+  0.119745959389479630f,
+  0.118984452677632520f, 0.118222875970297250f, 0.117461229715489990f,
+  0.116699514361267840f,
+  0.115937730355727850f, 0.115175878147008180f, 0.114413958183287050f,
+  0.113651970912781920f,
+  0.112889916783750470f, 0.112127796244489750f, 0.111365609743335190f,
+  0.110603357728661910f,
+  0.109841040648882680f, 0.109078658952449240f, 0.108316213087851300f,
+  0.107553703503615710f,
+  0.106791130648307380f, 0.106028494970528530f, 0.105265796918917650f,
+  0.104503036942150550f,
+  0.103740215488939480f, 0.102977333008032250f, 0.102214389948213370f,
+  0.101451386758302160f,
+  0.100688323887153970f, 0.099925201783659226f, 0.099162020896742573f,
+  0.098398781675363881f,
+  0.097635484568517339f, 0.096872130025230527f, 0.096108718494565468f,
+  0.095345250425617742f,
+  0.094581726267515473f, 0.093818146469420494f, 0.093054511480527333f,
+  0.092290821750062355f,
+  0.091527077727284981f, 0.090763279861485704f, 0.089999428601987341f,
+  0.089235524398144139f,
+  0.088471567699340822f, 0.087707558954993645f, 0.086943498614549489f,
+  0.086179387127484922f,
+  0.085415224943307277f, 0.084651012511553700f, 0.083886750281790226f,
+  0.083122438703613077f,
+  0.082358078226646619f, 0.081593669300544638f, 0.080829212374989468f,
+  0.080064707899690932f,
+  0.079300156324387569f, 0.078535558098845590f, 0.077770913672857989f,
+  0.077006223496245585f,
+  0.076241488018856149f, 0.075476707690563416f, 0.074711882961268378f,
+  0.073947014280897269f,
+  0.073182102099402888f, 0.072417146866763538f, 0.071652149032982254f,
+  0.070887109048087787f,
+  0.070122027362133646f, 0.069356904425197236f, 0.068591740687380900f,
+  0.067826536598810966f,
+  0.067061292609636836f, 0.066296009170032283f, 0.065530686730193397f,
+  0.064765325740339871f,
+  0.063999926650714078f, 0.063234489911580136f, 0.062469015973224969f,
+  0.061703505285957416f,
+  0.060937958300107238f, 0.060172375466026218f, 0.059406757234087247f,
+  0.058641104054683348f,
+  0.057875416378229017f, 0.057109694655158132f, 0.056343939335925283f,
+  0.055578150871004817f,
+  0.054812329710889909f, 0.054046476306093640f, 0.053280591107148056f,
+  0.052514674564603257f,
+  0.051748727129028414f, 0.050982749251010900f, 0.050216741381155325f,
+  0.049450703970084824f,
+  0.048684637468439020f, 0.047918542326875327f, 0.047152418996068000f,
+  0.046386267926707213f,
+  0.045620089569500123f, 0.044853884375169933f, 0.044087652794454979f,
+  0.043321395278109784f,
+  0.042555112276904117f, 0.041788804241622082f, 0.041022471623063397f,
+  0.040256114872041358f,
+  0.039489734439384118f, 0.038723330775933762f, 0.037956904332545366f,
+  0.037190455560088091f,
+  0.036423984909444228f, 0.035657492831508264f, 0.034890979777187955f,
+  0.034124446197403423f,
+  0.033357892543086159f, 0.032591319265180385f, 0.031824726814640963f,
+  0.031058115642434700f,
+  0.030291486199539423f, 0.029524838936943035f, 0.028758174305644590f,
+  0.027991492756653365f,
+  0.027224794740987910f, 0.026458080709677145f, 0.025691351113759395f,
+  0.024924606404281485f,
+  0.024157847032300020f, 0.023391073448879338f, 0.022624286105092803f,
+  0.021857485452021874f,
+  0.021090671940755180f, 0.020323846022389572f, 0.019557008148029204f,
+  0.018790158768784596f,
+  0.018023298335773701f, 0.017256427300120978f, 0.016489546112956454f,
+  0.015722655225417017f,
+  0.014955755088644378f, 0.014188846153786343f, 0.013421928871995907f,
+  0.012655003694430301f,
+  0.011888071072252072f, 0.011121131456628141f, 0.010354185298728884f,
+  0.009587233049729183f,
+  0.008820275160807512f, 0.008053312083144991f, 0.007286344267926684f,
+  0.006519372166339549f,
+  0.005752396229573737f, 0.004985416908821652f, 0.004218434655277024f,
+  0.003451449920135975f,
+  0.002684463154596083f, 0.001917474809855460f, 0.001150485337113809f,
+  0.000383495187571497f
+};
+
+static const float32_t cos_factors_8192[8192] = {
+  1.999999990808214700, 1.999999917273932200, 1.999999770205369800,
+    1.999999549602533100,
+  1.999999255465430200, 1.999998887794072000, 1.999998446588471700,
+    1.999997931848645600,
+  1.999997343574612800, 1.999996681766395000, 1.999995946424016200,
+    1.999995137547503600,
+  1.999994255136887000, 1.999993299192198700, 1.999992269713474200,
+    1.999991166700750800,
+  1.999989990154069600, 1.999988740073473500, 1.999987416459008600,
+    1.999986019310723500,
+  1.999984548628669600, 1.999983004412901000, 1.999981386663474400,
+    1.999979695380449400,
+  1.999977930563888100, 1.999976092213855400, 1.999974180330418700,
+    1.999972194913648900,
+  1.999970135963618400, 1.999968003480403000, 1.999965797464081200,
+    1.999963517914734100,
+  1.999961164832445800, 1.999958738217302300, 1.999956238069392900,
+    1.999953664388809800,
+  1.999951017175647600, 1.999948296430003500, 1.999945502151977600,
+    1.999942634341672600,
+  1.999939692999193900, 1.999936678124649700, 1.999933589718150700,
+    1.999930427779810900,
+  1.999927192309745900, 1.999923883308075200, 1.999920500774920300,
+    1.999917044710405500,
+  1.999913515114657900, 1.999909911987807200, 1.999906235329986100,
+    1.999902485141329400,
+  1.999898661421975400, 1.999894764172064600, 1.999890793391740000,
+    1.999886749081147800,
+  1.999882631240436700, 1.999878439869758200, 1.999874174969266300,
+    1.999869836539117700,
+  1.999865424579472000, 1.999860939090491600, 1.999856380072341000,
+    1.999851747525188200,
+  1.999847041449203300, 1.999842261844559700, 1.999837408711432600,
+    1.999832482050000900,
+  1.999827481860445300, 1.999822408142949900, 1.999817260897701400,
+    1.999812040124888700,
+  1.999806745824704000, 1.999801377997341800, 1.999795936642999600,
+    1.999790421761877400,
+  1.999784833354177900, 1.999779171420106700, 1.999773435959872000,
+    1.999767626973684400,
+  1.999761744461757700, 1.999755788424308200, 1.999749758861554900,
+    1.999743655773719400,
+  1.999737479161026100, 1.999731229023702200, 1.999724905361977200,
+    1.999718508176084000,
+  1.999712037466257600, 1.999705493232735800, 1.999698875475759600,
+    1.999692184195571900,
+  1.999685419392419000, 1.999678581066549400, 1.999671669218214600,
+    1.999664683847668800,
+  1.999657624955168700, 1.999650492540973900, 1.999643286605346800,
+    1.999636007148552400,
+  1.999628654170857900, 1.999621227672533800, 1.999613727653853500,
+    1.999606154115092500,
+  1.999598507056529000, 1.999590786478444600, 1.999582992381123000,
+    1.999575124764850800,
+  1.999567183629917100, 1.999559168976613900, 1.999551080805236100,
+    1.999542919116081000,
+  1.999534683909448600, 1.999526375185641800, 1.999517992944965800,
+    1.999509537187729200,
+  1.999501007914242600, 1.999492405124819700, 1.999483728819776900,
+    1.999474978999432800,
+  1.999466155664109600, 1.999457258814131500, 1.999448288449825500,
+    1.999439244571521700,
+  1.999430127179552500, 1.999420936274252800, 1.999411671855960900,
+    1.999402333925017300,
+  1.999392922481765500, 1.999383437526551300, 1.999373879059723500,
+    1.999364247081633500,
+  1.999354541592635500, 1.999344762593086500, 1.999334910083345700,
+    1.999324984063775700,
+  1.999314984534741100, 1.999304911496609700, 1.999294764949752100,
+    1.999284544894541100,
+  1.999274251331352400, 1.999263884260564600, 1.999253443682558900,
+    1.999242929597719200,
+  1.999232342006432000, 1.999221680909086400, 1.999210946306074500,
+    1.999200138197791100,
+  1.999189256584633600, 1.999178301467001900, 1.999167272845298900,
+    1.999156170719930100,
+  1.999144995091303600, 1.999133745959830600, 1.999122423325924200,
+    1.999111027190001000,
+  1.999099557552479900, 1.999088014413782800, 1.999076397774334000,
+    1.999064707634560700,
+  1.999052943994892300, 1.999041106855761900, 1.999029196217604100,
+    1.999017212080857400,
+  1.999005154445962200, 1.998993023313361700, 1.998980818683502100,
+    1.998968540556831800,
+  1.998956188933802800, 1.998943763814868800, 1.998931265200486900,
+    1.998918693091116200,
+  1.998906047487219600, 1.998893328389261400, 1.998880535797709700,
+    1.998867669713034500,
+  1.998854730135709400, 1.998841717066209400, 1.998828630505013400,
+    1.998815470452602400,
+  1.998802236909460500, 1.998788929876074100, 1.998775549352932400,
+    1.998762095340527400,
+  1.998748567839354000, 1.998734966849909000, 1.998721292372693100,
+    1.998707544408208700,
+  1.998693722956961500, 1.998679828019459300, 1.998665859596213500,
+    1.998651817687737300,
+  1.998637702294547000, 1.998623513417161700, 1.998609251056103100,
+    1.998594915211895600,
+  1.998580505885066100, 1.998566023076144600, 1.998551466785663400,
+    1.998536837014157900,
+  1.998522133762165900, 1.998507357030227900, 1.998492506818887200,
+    1.998477583128690100,
+  1.998462585960185000, 1.998447515313923400, 1.998432371190459500,
+    1.998417153590349900,
+  1.998401862514154200, 1.998386497962434800, 1.998371059935756300,
+    1.998355548434686400,
+  1.998339963459795400, 1.998324305011656600, 1.998308573090845200,
+    1.998292767697940100,
+  1.998276888833522300, 1.998260936498175400, 1.998244910692486000,
+    1.998228811417043700,
+  1.998212638672439900, 1.998196392459269400, 1.998180072778129600,
+    1.998163679629620500,
+  1.998147213014344900, 1.998130672932908000, 1.998114059385918400,
+    1.998097372373986300,
+  1.998080611897725700, 1.998063777957752600, 1.998046870554686100,
+    1.998029889689147700,
+  1.998012835361761900, 1.997995707573155600, 1.997978506323958600,
+    1.997961231614803200,
+  1.997943883446324800, 1.997926461819161000, 1.997908966733952500,
+    1.997891398191342400,
+  1.997873756191977000, 1.997856040736504500, 1.997838251825576400,
+    1.997820389459846700,
+  1.997802453639972300, 1.997784444366612600, 1.997766361640429800,
+    1.997748205462088500,
+  1.997729975832256600, 1.997711672751604200, 1.997693296220804000,
+    1.997674846240532000,
+  1.997656322811466500, 1.997637725934288300, 1.997619055609681600,
+    1.997600311838332500,
+  1.997581494620930300, 1.997562603958166600, 1.997543639850736200,
+    1.997524602299336500,
+  1.997505491304667000, 1.997486306867430900, 1.997467048988333000,
+    1.997447717668082000,
+  1.997428312907388200, 1.997408834706965000, 1.997389283067528800,
+    1.997369657989798400,
+  1.997349959474495200, 1.997330187522343700, 1.997310342134070800,
+    1.997290423310406100,
+  1.997270431052081900, 1.997250365359833200, 1.997230226234397900,
+    1.997210013676516700,
+  1.997189727686932400, 1.997169368266390900, 1.997148935415640600,
+    1.997128429135433400,
+  1.997107849426522600, 1.997087196289665000, 1.997066469725620200,
+    1.997045669735150000,
+  1.997024796319019300, 1.997003849477995600, 1.996982829212848900,
+    1.996961735524351900,
+  1.996940568413280600, 1.996919327880412900, 1.996898013926530000,
+    1.996876626552415400,
+  1.996855165758855600, 1.996833631546639300, 1.996812023916558800,
+    1.996790342869408000,
+  1.996768588405984300, 1.996746760527087700, 1.996724859233520500,
+    1.996702884526087900,
+  1.996680836405598100, 1.996658714872861800, 1.996636519928692000,
+    1.996614251573904900,
+  1.996591909809319400, 1.996569494635756600, 1.996547006054041100,
+    1.996524444064999400,
+  1.996501808669461000, 1.996479099868258400, 1.996456317662226300,
+    1.996433462052202600,
+  1.996410533039027400, 1.996387530623543900, 1.996364454806597500,
+    1.996341305589037100,
+  1.996318082971713500, 1.996294786955480800, 1.996271417541195300,
+    1.996247974729716200,
+  1.996224458521905600, 1.996200868918628100, 1.996177205920750800,
+    1.996153469529144100,
+  1.996129659744680300, 1.996105776568235100, 1.996081820000686500,
+    1.996057790042915500,
+  1.996033686695805300, 1.996009509960242400, 1.995985259837115500,
+    1.995960936327316300,
+  1.995936539431739000, 1.995912069151280800, 1.995887525486841300,
+    1.995862908439323100,
+  1.995838218009630800, 1.995813454198672700, 1.995788617007359100,
+    1.995763706436603200,
+  1.995738722487320600, 1.995713665160430600, 1.995688534456853800,
+    1.995663330377514400,
+  1.995638052923339300, 1.995612702095257400, 1.995587277894201400,
+    1.995561780321105600,
+  1.995536209376907600, 1.995510565062547800, 1.995484847378968600,
+    1.995459056327116000,
+  1.995433191907938000, 1.995407254122385700, 1.995381242971412600,
+    1.995355158455975200,
+  1.995329000577032800, 1.995302769335546500, 1.995276464732481200,
+    1.995250086768804100,
+  1.995223635445484900, 1.995197110763496000, 1.995170512723813100,
+    1.995143841327413400,
+  1.995117096575278200, 1.995090278468390600, 1.995063387007736600,
+    1.995036422194304700,
+  1.995009384029086800, 1.994982272513076600, 1.994955087647271000,
+    1.994927829432669800,
+  1.994900497870274900, 1.994873092961091200, 1.994845614706126400,
+    1.994818063106391000,
+  1.994790438162897600, 1.994762739876662100, 1.994734968248702800,
+    1.994707123280041100,
+  1.994679204971700100, 1.994651213324707000, 1.994623148340090700,
+    1.994595010018883000,
+  1.994566798362118300, 1.994538513370834200, 1.994510155046070700,
+    1.994481723388870100,
+  1.994453218400277900, 1.994424640081342100, 1.994395988433113700,
+    1.994367263456646100,
+  1.994338465152995000, 1.994309593523219600, 1.994280648568381500,
+    1.994251630289544600,
+  1.994222538687776100, 1.994193373764145500, 1.994164135519725000,
+    1.994134823955589800,
+  1.994105439072817700, 1.994075980872488800, 1.994046449355686200,
+    1.994016844523496000,
+  1.993987166377006600, 1.993957414917308700, 1.993927590145496900,
+    1.993897692062667200,
+  1.993867720669919400, 1.993837675968354700, 1.993807557959078600,
+    1.993777366643197900,
+  1.993747102021822900, 1.993716764096066200, 1.993686352867043200,
+    1.993655868335872300,
+  1.993625310503674100, 1.993594679371572200, 1.993563974940692800,
+    1.993533197212164800,
+  1.993502346187119700, 1.993471421866692200, 1.993440424252018900,
+    1.993409353344239600,
+  1.993378209144496700, 1.993346991653935300, 1.993315700873703200,
+    1.993284336804950900,
+  1.993252899448831400, 1.993221388806500900, 1.993189804879117500,
+    1.993158147667842800,
+  1.993126417173840500, 1.993094613398277400, 1.993062736342323000,
+    1.993030786007148800,
+  1.992998762393930000, 1.992966665503844000, 1.992934495338070800,
+    1.992902251897793000,
+  1.992869935184196300, 1.992837545198469000, 1.992805081941801700,
+    1.992772545415388200,
+  1.992739935620424700, 1.992707252558110200, 1.992674496229646500,
+    1.992641666636237700,
+  1.992608763779091000, 1.992575787659416100, 1.992542738278425300,
+    1.992509615637334100,
+  1.992476419737359900, 1.992443150579723500, 1.992409808165648100,
+    1.992376392496359300,
+  1.992342903573086000, 1.992309341397059600, 1.992275705969513800,
+    1.992241997291685400,
+  1.992208215364813700, 1.992174360190140900, 1.992140431768911500,
+    1.992106430102373400,
+  1.992072355191776300, 1.992038207038373300, 1.992003985643419700,
+    1.991969691008174100,
+  1.991935323133897000, 1.991900882021852200, 1.991866367673306200,
+    1.991831780089527500,
+  1.991797119271788300, 1.991762385221362600, 1.991727577939527600,
+    1.991692697427563300,
+  1.991657743686751700, 1.991622716718378400, 1.991587616523731000,
+    1.991552443104099800,
+  1.991517196460778500, 1.991481876595062800, 1.991446483508251500,
+    1.991411017201645500,
+  1.991375477676549100, 1.991339864934268800, 1.991304178976114100,
+    1.991268419803397200,
+  1.991232587417432600, 1.991196681819537900, 1.991160703011033200,
+    1.991124650993241400,
+  1.991088525767488200, 1.991052327335101300, 1.991016055697411900,
+    1.990979710855753900,
+  1.990943292811463000, 1.990906801565878600, 1.990870237120342400,
+    1.990833599476198800,
+  1.990796888634794400, 1.990760104597479400, 1.990723247365606200,
+    1.990686316940529800,
+  1.990649313323608100, 1.990612236516201300, 1.990575086519673200,
+    1.990537863335389400,
+  1.990500566964718400, 1.990463197409031700, 1.990425754669703100,
+    1.990388238748109100,
+  1.990350649645629600, 1.990312987363646000, 1.990275251903543600,
+    1.990237443266709400,
+  1.990199561454533600, 1.990161606468409300, 1.990123578309731700,
+    1.990085476979899000,
+  1.990047302480312300, 1.990009054812374800, 1.989970733977493000,
+    1.989932339977075900,
+  1.989893872812535000, 1.989855332485284800, 1.989816718996742200,
+    1.989778032348326700,
+  1.989739272541461100, 1.989700439577570400, 1.989661533458082100,
+    1.989622554184426800,
+  1.989583501758037700, 1.989544376180350600, 1.989505177452804100,
+    1.989465905576839600,
+  1.989426560553900500, 1.989387142385433900, 1.989347651072888900,
+    1.989308086617717500,
+  1.989268449021374300, 1.989228738285316900, 1.989188954411005100,
+    1.989149097399901500,
+  1.989109167253472000, 1.989069163973184300, 1.989029087560509700,
+    1.988988938016921000,
+  1.988948715343894900, 1.988908419542910100, 1.988868050615448100,
+    1.988827608562993200,
+  1.988787093387032600, 1.988746505089055600, 1.988705843670554500,
+    1.988665109133024500,
+  1.988624301477963200, 1.988583420706871100, 1.988542466821251000,
+    1.988501439822608900,
+  1.988460339712453200, 1.988419166492295000, 1.988377920163648000,
+    1.988336600728029000,
+  1.988295208186956700, 1.988253742541953800, 1.988212203794544000,
+    1.988170591946255100,
+  1.988128906998616800, 1.988087148953161700, 1.988045317811425700,
+    1.988003413574946000,
+  1.987961436245263800, 1.987919385823922400, 1.987877262312467600,
+    1.987835065712448600,
+  1.987792796025416500, 1.987750453252925500, 1.987708037396532800,
+    1.987665548457797400,
+  1.987622986438281700, 1.987580351339550700, 1.987537643163171700,
+    1.987494861910715100,
+  1.987452007583754100, 1.987409080183863800, 1.987366079712622900,
+    1.987323006171612500,
+  1.987279859562415900, 1.987236639886619700, 1.987193347145813000,
+    1.987149981341587400,
+  1.987106542475537400, 1.987063030549260300, 1.987019445564355700,
+    1.986975787522426100,
+  1.986932056425076800, 1.986888252273915500, 1.986844375070552900,
+    1.986800424816602200,
+  1.986756401513679400, 1.986712305163403000, 1.986668135767394300,
+    1.986623893327277500,
+  1.986579577844678900, 1.986535189321228000, 1.986490727758556800,
+    1.986446193158300400,
+  1.986401585522095600, 1.986356904851583000, 1.986312151148405200,
+    1.986267324414207500,
+  1.986222424650638400, 1.986177451859348200, 1.986132406041990900,
+    1.986087287200222700,
+  1.986042095335702300, 1.985996830450091200, 1.985951492545054100,
+    1.985906081622257300,
+  1.985860597683371000, 1.985815040730067200, 1.985769410764020900,
+    1.985723707786909900,
+  1.985677931800414500, 1.985632082806217900, 1.985586160806005700,
+    1.985540165801466200,
+  1.985494097794290800, 1.985447956786173100, 1.985401742778809500,
+    1.985355455773899500,
+  1.985309095773144500, 1.985262662778249300, 1.985216156790921000,
+    1.985169577812869500,
+  1.985122925845807400, 1.985076200891450000, 1.985029402951515200,
+    1.984982532027723700,
+  1.984935588121798700, 1.984888571235466200, 1.984841481370454900,
+    1.984794318528496200,
+  1.984747082711324100, 1.984699773920675300, 1.984652392158289500,
+    1.984604937425908300,
+  1.984557409725276700, 1.984509809058142300, 1.984462135426255000,
+    1.984414388831367900,
+  1.984366569275236400, 1.984318676759618400, 1.984270711286275200,
+    1.984222672856969800,
+  1.984174561473469200, 1.984126377137541700, 1.984078119850959200,
+    1.984029789615495900,
+  1.983981386432928800, 1.983932910305037400, 1.983884361233604100,
+    1.983835739220414000,
+  1.983787044267254700, 1.983738276375916800, 1.983689435548192900,
+    1.983640521785879200,
+  1.983591535090773800, 1.983542475464678000, 1.983493342909395500,
+    1.983444137426732600,
+  1.983394859018498900, 1.983345507686505900, 1.983296083432567900,
+    1.983246586258502700,
+  1.983197016166129400, 1.983147373157271300, 1.983097657233753100,
+    1.983047868397403100,
+  1.982998006650051400, 1.982948071993531700, 1.982898064429679900,
+    1.982847983960334600,
+  1.982797830587336800, 1.982747604312531200, 1.982697305137763700,
+    1.982646933064884200,
+  1.982596488095744300, 1.982545970232199000, 1.982495379476105800,
+    1.982444715829324600,
+  1.982393979293718200, 1.982343169871152000, 1.982292287563494300,
+    1.982241332372615600,
+  1.982190304300389400, 1.982139203348692200, 1.982088029519402300,
+    1.982036782814401900,
+  1.981985463235574700, 1.981934070784807400, 1.981882605463990200,
+    1.981831067275015000,
+  1.981779456219776600, 1.981727772300172500, 1.981676015518103500,
+    1.981624185875472000,
+  1.981572283374183800, 1.981520308016147200, 1.981468259803273300,
+    1.981416138737475800,
+  1.981363944820670800, 1.981311678054777500, 1.981259338441717400,
+    1.981206925983415300,
+  1.981154440681797800, 1.981101882538794900, 1.981049251556338900,
+    1.980996547736364900,
+  1.980943771080810700, 1.980890921591616600, 1.980837999270726100,
+    1.980785004120084700,
+  1.980731936141640900, 1.980678795337345900, 1.980625581709153600,
+    1.980572295259020600,
+  1.980518935988905700, 1.980465503900771000, 1.980411998996581200,
+    1.980358421278303200,
+  1.980304770747907300, 1.980251047407365600, 1.980197251258653900,
+    1.980143382303749500,
+  1.980089440544633600, 1.980035425983289300, 1.979981338621702200,
+    1.979927178461861500,
+  1.979872945505758000, 1.979818639755386100, 1.979764261212742400,
+    1.979709809879825800,
+  1.979655285758638900, 1.979600688851186100, 1.979546019159474900,
+    1.979491276685515300,
+  1.979436461431320000, 1.979381573398904400, 1.979326612590286400,
+    1.979271579007487100,
+  1.979216472652529900, 1.979161293527440500, 1.979106041634248100,
+    1.979050716974983800,
+  1.978995319551682100, 1.978939849366379700, 1.978884306421115900,
+    1.978828690717932900,
+  1.978773002258875600, 1.978717241045991700, 1.978661407081331100,
+    1.978605500366946700,
+  1.978549520904894000, 1.978493468697231300, 1.978437343746019600,
+    1.978381146053322000,
+  1.978324875621205300, 1.978268532451738200, 1.978212116546992100,
+    1.978155627909041300,
+  1.978099066539962900, 1.978042432441836400, 1.977985725616743900,
+    1.977928946066770600,
+  1.977872093794004200, 1.977815168800534500, 1.977758171088455100,
+    1.977701100659861300,
+  1.977643957516851400, 1.977586741661526500, 1.977529453095990200,
+    1.977472091822348700,
+  1.977414657842711200, 1.977357151159189400, 1.977299571773897700,
+    1.977241919688953000,
+  1.977184194906475000, 1.977126397428586000, 1.977068527257411300,
+    1.977010584395078300,
+  1.976952568843717700, 1.976894480605462500, 1.976836319682448300,
+    1.976778086076813600,
+  1.976719779790699500, 1.976661400826249500, 1.976602949185610500,
+    1.976544424870931400,
+  1.976485827884363800, 1.976427158228062100, 1.976368415904183900,
+    1.976309600914888400,
+  1.976250713262338600, 1.976191752948699200, 1.976132719976138000,
+    1.976073614346825800,
+  1.976014436062935700, 1.975955185126643300, 1.975895861540127200,
+    1.975836465305568400,
+  1.975776996425151000, 1.975717454901061400, 1.975657840735488800,
+    1.975598153930624900,
+  1.975538394488664200, 1.975478562411804100, 1.975418657702244300,
+    1.975358680362187400,
+  1.975298630393838500, 1.975238507799405500, 1.975178312581099100,
+    1.975118044741132300,
+  1.975057704281721000, 1.974997291205083700, 1.974936805513442000,
+    1.974876247209019100,
+  1.974815616294042200, 1.974754912770740200, 1.974694136641345300,
+    1.974633287908091500,
+  1.974572366573216400, 1.974511372638960000, 1.974450306107564900,
+    1.974389166981275900,
+  1.974327955262341400, 1.974266670953011400, 1.974205314055540000,
+    1.974143884572182400,
+  1.974082382505197400, 1.974020807856846400, 1.973959160629393100,
+    1.973897440825104200,
+  1.973835648446248900, 1.973773783495099500, 1.973711845973930000,
+    1.973649835885018100,
+  1.973587753230643400, 1.973525598013088800, 1.973463370234639600,
+    1.973401069897583200,
+  1.973338697004211100, 1.973276251556815600, 1.973213733557693400,
+    1.973151143009142800,
+  1.973088479913465100, 1.973025744272964200, 1.972962936089946800,
+    1.972900055366722000,
+  1.972837102105601900, 1.972774076308901200, 1.972710977978936900,
+    1.972647807118029300,
+  1.972584563728500700, 1.972521247812676600, 1.972457859372884500,
+    1.972394398411455800,
+  1.972330864930723200, 1.972267258933022600, 1.972203580420693000,
+    1.972139829396075200,
+  1.972076005861513700, 1.972012109819354600, 1.971948141271947500,
+    1.971884100221644300,
+  1.971819986670799500, 1.971755800621770400, 1.971691542076916800,
+    1.971627211038601500,
+  1.971562807509189800, 1.971498331491049700, 1.971433782986551400,
+    1.971369161998068400,
+  1.971304468527976800, 1.971239702578655000, 1.971174864152484400,
+    1.971109953251848600,
+  1.971044969879134600, 1.970979914036731500, 1.970914785727030800,
+    1.970849584952427900,
+  1.970784311715319400, 1.970718966018105500, 1.970653547863188600,
+    1.970588057252973900,
+  1.970522494189869800, 1.970456858676286300, 1.970391150714636800,
+    1.970325370307337100,
+  1.970259517456806100, 1.970193592165464700, 1.970127594435737000,
+    1.970061524270049400,
+  1.969995381670831100, 1.969929166640514100, 1.969862879181532700,
+    1.969796519296324300,
+  1.969730086987328900, 1.969663582256988600, 1.969597005107748900,
+    1.969530355542057800,
+  1.969463633562365400, 1.969396839171125200, 1.969329972370792700,
+    1.969263033163826800,
+  1.969196021552688500, 1.969128937539841500, 1.969061781127752400,
+    1.968994552318890300,
+  1.968927251115727200, 1.968859877520737300, 1.968792431536398000,
+    1.968724913165188900,
+  1.968657322409592500, 1.968589659272094000, 1.968521923755181000,
+    1.968454115861344000,
+  1.968386235593076300, 1.968318282952873600, 1.968250257943234200,
+    1.968182160566659000,
+  1.968113990825652200, 1.968045748722719900, 1.967977434260371300,
+    1.967909047441118100,
+  1.967840588267474500, 1.967772056741957900, 1.967703452867087800,
+    1.967634776645386600,
+  1.967566028079379200, 1.967497207171593500, 1.967428313924559600,
+    1.967359348340810700,
+  1.967290310422882700, 1.967221200173313400, 1.967152017594644200,
+    1.967082762689418500,
+  1.967013435460182700, 1.966944035909485600, 1.966874564039879300,
+    1.966805019853917500,
+  1.966735403354157500, 1.966665714543159000, 1.966595953423483800,
+    1.966526119997697100,
+  1.966456214268366600, 1.966386236238062200, 1.966316185909357200,
+    1.966246063284826700,
+  1.966175868367049400, 1.966105601158605600, 1.966035261662079300,
+    1.965964849880056600,
+  1.965894365815126000, 1.965823809469879400, 1.965753180846910900,
+    1.965682479948817100,
+  1.965611706778197700, 1.965540861337654600, 1.965469943629792700,
+    1.965398953657219600,
+  1.965327891422544900, 1.965256756928382100, 1.965185550177345900,
+    1.965114271172054800,
+  1.965042919915129400, 1.964971496409193100, 1.964900000656872000,
+    1.964828432660794500,
+  1.964756792423592200, 1.964685079947899200, 1.964613295236352000,
+    1.964541438291590000,
+  1.964469509116255000, 1.964397507712991800, 1.964325434084447600,
+    1.964253288233272400,
+  1.964181070162119000, 1.964108779873642100, 1.964036417370500300,
+    1.963963982655353400,
+  1.963891475730865400, 1.963818896599701400, 1.963746245264530700,
+    1.963673521728023900,
+  1.963600725992855200, 1.963527858061700600, 1.963454917937239800,
+    1.963381905622154400,
+  1.963308821119128700, 1.963235664430850200, 1.963162435560008100,
+    1.963089134509295300,
+  1.963015761281406800, 1.962942315879040000, 1.962868798304895400,
+    1.962795208561676200,
+  1.962721546652088200, 1.962647812578839400, 1.962574006344640900,
+    1.962500127952206300,
+  1.962426177404252200, 1.962352154703497200, 1.962278059852663000,
+    1.962203892854473800,
+  1.962129653711656800, 1.962055342426941400, 1.961980959003059500,
+    1.961906503442746300,
+  1.961831975748739200, 1.961757375923778700, 1.961682703970607100,
+    1.961607959891970200,
+  1.961533143690616000, 1.961458255369295400, 1.961383294930761700,
+    1.961308262377770900,
+  1.961233157713082200, 1.961157980939456400, 1.961082732059657800,
+    1.961007411076453000,
+  1.960932017992611500, 1.960856552810905200, 1.960781015534108800,
+    1.960705406164999300,
+  1.960629724706357100, 1.960553971160964500, 1.960478145531606700,
+    1.960402247821071900,
+  1.960326278032150200, 1.960250236167635100, 1.960174122230322400,
+    1.960097936223010400,
+  1.960021678148500500, 1.959945348009596500, 1.959868945809104500,
+    1.959792471549834000,
+  1.959715925234596600, 1.959639306866206600, 1.959562616447480900,
+    1.959485853981239600,
+  1.959409019470304700, 1.959332112917501400, 1.959255134325657000,
+    1.959178083697602300,
+  1.959100961036169800, 1.959023766344195200, 1.958946499624516700,
+    1.958869160879975500,
+  1.958791750113414700, 1.958714267327680500, 1.958636712525621900,
+    1.958559085710090500,
+  1.958481386883940100, 1.958403616050027600, 1.958325773211212300,
+    1.958247858370356400,
+  1.958169871530324600, 1.958091812693984400, 1.958013681864205500,
+    1.957935479043860600,
+  1.957857204235825100, 1.957778857442976900, 1.957700438668196700,
+    1.957621947914367500,
+  1.957543385184375300, 1.957464750481108700, 1.957386043807458800,
+    1.957307265166319500,
+  1.957228414560587200, 1.957149491993160900, 1.957070497466942400,
+    1.956991430984836400,
+  1.956912292549749500, 1.956833082164591600, 1.956753799832275300,
+    1.956674445555715000,
+  1.956595019337829000, 1.956515521181537000, 1.956435951089762200,
+    1.956356309065430100,
+  1.956276595111468900, 1.956196809230809500, 1.956116951426385600,
+    1.956037021701132900,
+  1.955957020057990500, 1.955876946499899700, 1.955796801029804800,
+    1.955716583650652000,
+  1.955636294365391300, 1.955555933176974300, 1.955475500088355900,
+    1.955394995102493100,
+  1.955314418222346100, 1.955233769450877200, 1.955153048791052000,
+    1.955072256245838000,
+  1.954991391818206000, 1.954910455511129000, 1.954829447327582900,
+    1.954748367270545900,
+  1.954667215342999600, 1.954585991547927100, 1.954504695888315000,
+    1.954423328367152600,
+  1.954341888987431100, 1.954260377752145000, 1.954178794664291200,
+    1.954097139726869600,
+  1.954015412942881900, 1.953933614315333200, 1.953851743847231100,
+    1.953769801541585400,
+  1.953687787401409400, 1.953605701429718100, 1.953523543629529700,
+    1.953441314003864900,
+  1.953359012555747200, 1.953276639288202400, 1.953194194204259200,
+    1.953111677306948800,
+  1.953029088599305100, 1.952946428084364900, 1.952863695765167100,
+    1.952780891644753500,
+  1.952698015726169100, 1.952615068012460300, 1.952532048506677300,
+    1.952448957211872200,
+  1.952365794131100300, 1.952282559267419100, 1.952199252623889200,
+    1.952115874203572900,
+  1.952032424009536600, 1.951948902044847900, 1.951865308312577900,
+    1.951781642815800100,
+  1.951697905557590700, 1.951614096541028500, 1.951530215769194700,
+    1.951446263245173500,
+  1.951362238972051500, 1.951278142952918200, 1.951193975190865600,
+    1.951109735688987900,
+  1.951025424450382900, 1.950941041478150100, 1.950856586775392200,
+    1.950772060345214300,
+  1.950687462190724200, 1.950602792315032200, 1.950518050721251600,
+    1.950433237412498000,
+  1.950348352391889600, 1.950263395662547700, 1.950178367227595900,
+    1.950093267090159800,
+  1.950008095253369200, 1.949922851720355100, 1.949837536494251700,
+    1.949752149578196000,
+  1.949666690975327100, 1.949581160688787400, 1.949495558721721500,
+    1.949409885077276500,
+  1.949324139758602700, 1.949238322768852800, 1.949152434111181700,
+    1.949066473788747300,
+  1.948980441804710300, 1.948894338162233900, 1.948808162864483600,
+    1.948721915914628100,
+  1.948635597315838200, 1.948549207071288000, 1.948462745184153400,
+    1.948376211657613500,
+  1.948289606494849800, 1.948202929699046800, 1.948116181273391100,
+    1.948029361221072400,
+  1.947942469545282500, 1.947855506249216700, 1.947768471336071700,
+    1.947681364809048100,
+  1.947594186671348000, 1.947506936926177300, 1.947419615576743600,
+    1.947332222626257500,
+  1.947244758077932200, 1.947157221934983500, 1.947069614200629900,
+    1.946981934878092300,
+  1.946894183970594900, 1.946806361481363500, 1.946718467413627300,
+    1.946630501770618000,
+  1.946542464555569800, 1.946454355771719300, 1.946366175422306500,
+    1.946277923510573200,
+  1.946189600039764300, 1.946101205013127000, 1.946012738433911600,
+    1.945924200305370700,
+  1.945835590630759400, 1.945746909413335900, 1.945658156656360700,
+    1.945569332363096700,
+  1.945480436536810100, 1.945391469180769200, 1.945302430298244900,
+    1.945213319892511200,
+  1.945124137966844200, 1.945034884524523100, 1.944945559568829200,
+    1.944856163103046800,
+  1.944766695130463000, 1.944677155654366900, 1.944587544678050900,
+    1.944497862204809900,
+  1.944408108237940700, 1.944318282780743900, 1.944228385836521700,
+    1.944138417408579400,
+  1.944048377500225100, 1.943958266114769200, 1.943868083255524800,
+    1.943777828925807600,
+  1.943687503128936200, 1.943597105868231500, 1.943506637147017300,
+    1.943416096968619400,
+  1.943325485336367300, 1.943234802253592400, 1.943144047723628400,
+    1.943053221749812400,
+  1.942962324335484100, 1.942871355483985200, 1.942780315198660200,
+    1.942689203482856900,
+  1.942598020339924700, 1.942506765773216500, 1.942415439786087300,
+    1.942324042381895000,
+  1.942232573564000000, 1.942141033335765400, 1.942049421700556600,
+    1.941957738661741900,
+  1.941865984222692900, 1.941774158386782200, 1.941682261157386700,
+    1.941590292537884700,
+  1.941498252531658200, 1.941406141142090600, 1.941313958372568900,
+    1.941221704226482500,
+  1.941129378707223000, 1.941036981818185400, 1.940944513562766300,
+    1.940851973944365900,
+  1.940759362966386600, 1.940666680632233200, 1.940573926945313700,
+    1.940481101909038200,
+  1.940388205526819600, 1.940295237802073500, 1.940202198738217900,
+    1.940109088338673600,
+  1.940015906606864300, 1.939922653546215500, 1.939829329160156500,
+    1.939735933452118000,
+  1.939642466425534300, 1.939548928083841800, 1.939455318430479500,
+    1.939361637468889100,
+  1.939267885202515400, 1.939174061634805000, 1.939080166769207700,
+    1.938986200609175600,
+  1.938892163158163700, 1.938798054419629500, 1.938703874397032800,
+    1.938609623093837000,
+  1.938515300513506700, 1.938420906659510600, 1.938326441535318500,
+    1.938231905144404400,
+  1.938137297490243500, 1.938042618576314400, 1.937947868406098500,
+    1.937853046983079300,
+  1.937758154310742900, 1.937663190392578500, 1.937568155232077600,
+    1.937473048832734500,
+  1.937377871198045600, 1.937282622331510500, 1.937187302236631500,
+    1.937091910916912900,
+  1.936996448375861900, 1.936900914616988900, 1.936805309643805800,
+    1.936709633459828200,
+  1.936613886068573500, 1.936518067473562300, 1.936422177678317300,
+    1.936326216686364400,
+  1.936230184501231500, 1.936134081126449800, 1.936037906565552400,
+    1.935941660822075600,
+  1.935845343899558000, 1.935748955801540800, 1.935652496531568000,
+    1.935555966093186300,
+  1.935459364489944500, 1.935362691725394500, 1.935265947803090900,
+    1.935169132726590500,
+  1.935072246499453000, 1.934975289125240500, 1.934878260607517900,
+    1.934781160949852600,
+  1.934683990155814800, 1.934586748228977100, 1.934489435172914900,
+    1.934392050991206300,
+  1.934294595687431300, 1.934197069265173500, 1.934099471728018700,
+    1.934001803079554700,
+  1.933904063323373300, 1.933806252463067500, 1.933708370502233800,
+    1.933610417444471000,
+  1.933512393293380600, 1.933414298052566600, 1.933316131725635800,
+    1.933217894316197300,
+  1.933119585827862900, 1.933021206264247600, 1.932922755628968100,
+    1.932824233925644300,
+  1.932725641157898600, 1.932626977329356100, 1.932528242443643900,
+    1.932429436504392800,
+  1.932330559515235100, 1.932231611479806800, 1.932132592401745400,
+    1.932033502284691700,
+  1.931934341132289100, 1.931835108948183300, 1.931735805736022800,
+    1.931636431499459000,
+  1.931536986242145200, 1.931437469967737900, 1.931337882679895900,
+    1.931238224382281000,
+  1.931138495078557300, 1.931038694772391200, 1.930938823467452500,
+    1.930838881167413100,
+  1.930738867875947400, 1.930638783596732700, 1.930538628333448900,
+    1.930438402089778200,
+  1.930338104869405900, 1.930237736676019500, 1.930137297513309300,
+    1.930036787384968200,
+  1.929936206294691400, 1.929835554246177400, 1.929734831243126600,
+    1.929634037289242400,
+  1.929533172388230700, 1.929432236543799900, 1.929331229759661200,
+    1.929230152039528500,
+  1.929129003387117800, 1.929027783806148300, 1.928926493300341400,
+    1.928825131873421500,
+  1.928723699529115000, 1.928622196271151800, 1.928520622103263400,
+    1.928418977029184600,
+  1.928317261052652700, 1.928215474177407100, 1.928113616407190600,
+    1.928011687745748300,
+  1.927909688196827400, 1.927807617764178300, 1.927705476451554000,
+    1.927603264262709900,
+  1.927500981201404100, 1.927398627271397000, 1.927296202476451900,
+    1.927193706820335100,
+  1.927091140306814500, 1.926988502939661400, 1.926885794722649600,
+    1.926783015659555300,
+  1.926680165754157500, 1.926577245010237400, 1.926474253431579500,
+    1.926371191021970100,
+  1.926268057785198700, 1.926164853725057300, 1.926061578845340600,
+    1.925958233149845000,
+  1.925854816642371000, 1.925751329326720600, 1.925647771206698600,
+    1.925544142286112800,
+  1.925440442568773000, 1.925336672058492300, 1.925232830759086000,
+    1.925128918674371900,
+  1.925024935808170600, 1.924920882164305300, 1.924816757746601800,
+    1.924712562558888100,
+  1.924608296604995800, 1.924503959888757900, 1.924399552414010700,
+    1.924295074184593000,
+  1.924190525204346300, 1.924085905477114400, 1.923981215006744100,
+    1.923876453797084300,
+  1.923771621851986700, 1.923666719175306100, 1.923561745770898900,
+    1.923456701642625200,
+  1.923351586794346900, 1.923246401229928600, 1.923141144953238300,
+    1.923035817968145300,
+  1.922930420278522500, 1.922824951888245000, 1.922719412801190600,
+    1.922613803021239600,
+  1.922508122552275100, 1.922402371398182600, 1.922296549562850100,
+    1.922190657050168800,
+  1.922084693864031700, 1.921978660008334600, 1.921872555486976700,
+    1.921766380303858500,
+  1.921660134462884100, 1.921553817967959900, 1.921447430822994500,
+    1.921340973031900000,
+  1.921234444598590100, 1.921127845526981600, 1.921021175820994100,
+    1.920914435484549100,
+  1.920807624521571700, 1.920700742935988600, 1.920593790731729600,
+    1.920486767912727300,
+  1.920379674482916500, 1.920272510446234400, 1.920165275806621400,
+    1.920057970568020100,
+  1.919950594734376000, 1.919843148309637000, 1.919735631297753400,
+    1.919628043702678300,
+  1.919520385528367300, 1.919412656778779000, 1.919304857457874200,
+    1.919196987569616200,
+  1.919089047117971100, 1.918981036106907700, 1.918872954540397300,
+    1.918764802422413500,
+  1.918656579756932800, 1.918548286547934400, 1.918439922799399800,
+    1.918331488515313300,
+  1.918222983699661600, 1.918114408356434300, 1.918005762489623400,
+    1.917897046103223200,
+  1.917788259201231200, 1.917679401787647100, 1.917570473866473200,
+    1.917461475441714500,
+  1.917352406517378600, 1.917243267097475700, 1.917134057186018300,
+    1.917024776787022100,
+  1.916915425904504700, 1.916806004542486800, 1.916696512704991500,
+    1.916586950396044400,
+  1.916477317619674100, 1.916367614379911100, 1.916257840680788900,
+    1.916147996526343700,
+  1.916038081920614400, 1.915928096867641800, 1.915818041371470000,
+    1.915707915436145200,
+  1.915597719065716700, 1.915487452264236000, 1.915377115035757200,
+    1.915266707384337200,
+  1.915156229314035200, 1.915045680828913400, 1.914935061933036300,
+    1.914824372630470800,
+  1.914713612925287100, 1.914602782821557000, 1.914491882323355700,
+    1.914380911434760500,
+  1.914269870159851700, 1.914158758502712000, 1.914047576467426500,
+    1.913936324058083100,
+  1.913825001278772100, 1.913713608133586600, 1.913602144626622500,
+    1.913490610761977600,
+  1.913379006543752800, 1.913267331976051400, 1.913155587062979500,
+    1.913043771808645700,
+  1.912931886217160900, 1.912819930292639000, 1.912707904039196300,
+    1.912595807460951500,
+  1.912483640562026200, 1.912371403346544400, 1.912259095818632700,
+    1.912146717982420500,
+  1.912034269842039600, 1.911921751401624200, 1.911809162665311500,
+    1.911696503637241100,
+  1.911583774321554700, 1.911470974722397500, 1.911358104843916500,
+    1.911245164690262000,
+  1.911132154265586100, 1.911019073574044200, 1.910905922619793800,
+    1.910792701406995000,
+  1.910679409939810600, 1.910566048222406300, 1.910452616258949900,
+    1.910339114053611900,
+  1.910225541610565800, 1.910111898933986900, 1.909998186028053700,
+    1.909884402896947100,
+  1.909770549544850500, 1.909656625975950200, 1.909542632194434700,
+    1.909428568204495100,
+  1.909314434010325400, 1.909200229616121700, 1.909085955026083200,
+    1.908971610244411600,
+  1.908857195275310800, 1.908742710122987700, 1.908628154791651300,
+    1.908513529285513500,
+  1.908398833608789100, 1.908284067765694900, 1.908169231760450400,
+    1.908054325597278200,
+  1.907939349280402400, 1.907824302814050900, 1.907709186202453600,
+    1.907593999449842800,
+  1.907478742560453600, 1.907363415538523700, 1.907248018388293400,
+    1.907132551114005600,
+  1.907017013719905600, 1.906901406210241200, 1.906785728589263300,
+    1.906669980861224900,
+  1.906554163030381500, 1.906438275100991600, 1.906322317077316300,
+    1.906206288963618700,
+  1.906090190764164700, 1.905974022483223300, 1.905857784125065500,
+    1.905741475693964800,
+  1.905625097194197900, 1.905508648630043700, 1.905392130005783400,
+    1.905275541325701400,
+  1.905158882594083900, 1.905042153815220700, 1.904925354993402900,
+    1.904808486132925300,
+  1.904691547238084800, 1.904574538313180700, 1.904457459362515200,
+    1.904340310390393100,
+  1.904223091401121600, 1.904105802399010300, 1.903988443388371600,
+    1.903871014373520700,
+  1.903753515358774800, 1.903635946348454500, 1.903518307346881800,
+    1.903400598358382600,
+  1.903282819387284200, 1.903164970437917400, 1.903047051514615000,
+    1.902929062621712600,
+  1.902811003763547900, 1.902692874944462300, 1.902574676168798700,
+    1.902456407440902700,
+  1.902338068765123200, 1.902219660145810800, 1.902101181587319000,
+    1.901982633094004200,
+  1.901864014670225000, 1.901745326320342500, 1.901626568048721000,
+    1.901507739859726200,
+  1.901388841757727600, 1.901269873747096600, 1.901150835832207100,
+    1.901031728017436300,
+  1.900912550307162700, 1.900793302705768900, 1.900673985217638900,
+    1.900554597847159400,
+  1.900435140598720500, 1.900315613476714100, 1.900196016485534700,
+    1.900076349629579600,
+  1.899956612913248800, 1.899836806340944300, 1.899716929917071500,
+    1.899596983646037600,
+  1.899476967532252900, 1.899356881580129800, 1.899236725794083600,
+    1.899116500178532200,
+  1.898996204737895900, 1.898875839476597700, 1.898755404399062900,
+    1.898634899509719500,
+  1.898514324812998300, 1.898393680313332600, 1.898272966015157800,
+    1.898152181922912600,
+  1.898031328041037700, 1.897910404373976500, 1.897789410926175000,
+    1.897668347702081900,
+  1.897547214706148300, 1.897426011942827900, 1.897304739416577200,
+    1.897183397131854600,
+  1.897061985093121800, 1.896940503304842800, 1.896818951771484000,
+    1.896697330497514800,
+  1.896575639487406300, 1.896453878745633100, 1.896332048276672100,
+    1.896210148085002400,
+  1.896088178175106200, 1.895966138551467700, 1.895844029218574100,
+    1.895721850180915000,
+  1.895599601442982600, 1.895477283009271400, 1.895354894884279100,
+    1.895232437072505300,
+  1.895109909578452500, 1.894987312406625700, 1.894864645561532100,
+    1.894741909047682500,
+  1.894619102869589100, 1.894496227031767100, 1.894373281538734400,
+    1.894250266395011600,
+  1.894127181605121100, 1.894004027173588700, 1.893880803104942600,
+    1.893757509403713100,
+  1.893634146074433500, 1.893510713121639300, 1.893387210549869000,
+    1.893263638363663400,
+  1.893139996567565900, 1.893016285166122500, 1.892892504163881600,
+    1.892768653565394300,
+  1.892644733375214300, 1.892520743597897700, 1.892396684238003300,
+    1.892272555300092300,
+  1.892148356788728700, 1.892024088708479200, 1.891899751063912200,
+    1.891775343859599400,
+  1.891650867100115300, 1.891526320790036100, 1.891401704933941100,
+    1.891277019536412400,
+  1.891152264602033800, 1.891027440135392600, 1.890902546141078000,
+    1.890777582623682300,
+  1.890652549587799700, 1.890527447038027300, 1.890402274978965100,
+    1.890277033415215200,
+  1.890151722351382200, 1.890026341792073500, 1.889900891741899100,
+    1.889775372205471300,
+  1.889649783187405100, 1.889524124692318200, 1.889398396724830500,
+    1.889272599289564900,
+  1.889146732391146400, 1.889020796034202700, 1.888894790223364600,
+    1.888768714963264400,
+  1.888642570258537700, 1.888516356113822700, 1.888390072533759700,
+    1.888263719522991900,
+  1.888137297086165000, 1.888010805227927000, 1.887884243952928600,
+    1.887757613265823400,
+  1.887630913171267000, 1.887504143673917700, 1.887377304778437000,
+    1.887250396489487800,
+  1.887123418811736500, 1.886996371749851700, 1.886869255308504200,
+    1.886742069492368000,
+  1.886614814306119400, 1.886487489754437300, 1.886360095842002600,
+    1.886232632573499700,
+  1.886105099953614900, 1.885977497987037000, 1.885849826678457800,
+    1.885722086032571200,
+  1.885594276054074300, 1.885466396747665700, 1.885338448118047700,
+    1.885210430169924200,
+  1.885082342908002400, 1.884954186336991400, 1.884825960461603100,
+    1.884697665286552400,
+  1.884569300816556000, 1.884440867056333700, 1.884312364010607600,
+    1.884183791684102400,
+  1.884055150081545200, 1.883926439207665800, 1.883797659067196800,
+    1.883668809664872600,
+  1.883539891005431100, 1.883410903093611900, 1.883281845934157800,
+    1.883152719531813800,
+  1.883023523891327300, 1.882894259017448900, 1.882764924914930700,
+    1.882635521588528400,
+  1.882506049042999700, 1.882376507283104900, 1.882246896313606800,
+    1.882117216139270700,
+  1.881987466764865100, 1.881857648195159900, 1.881727760434928500,
+    1.881597803488946500,
+  1.881467777361992100, 1.881337682058845700, 1.881207517584290600,
+    1.881077283943112900,
+  1.880946981140100500, 1.880816609180044700, 1.880686168067738500,
+    1.880555657807977800,
+  1.880425078405561600, 1.880294429865290600, 1.880163712191968300,
+    1.880032925390400900,
+  1.879902069465397200, 1.879771144421768200, 1.879640150264327600,
+    1.879509086997891900,
+  1.879377954627279700, 1.879246753157312700, 1.879115482592814500,
+    1.878984142938611600,
+  1.878852734199532900, 1.878721256380410100, 1.878589709486077300,
+    1.878458093521370800,
+  1.878326408491130200, 1.878194654400196600, 1.878062831253414900,
+    1.877930939055631100,
+  1.877798977811695200, 1.877666947526458700, 1.877534848204775800,
+    1.877402679851504000,
+  1.877270442471502100, 1.877138136069632400, 1.877005760650759500,
+    1.876873316219750200,
+  1.876740802781474500, 1.876608220340804100, 1.876475568902614000,
+    1.876342848471781200,
+  1.876210059053185600, 1.876077200651709500, 1.875944273272237800,
+    1.875811276919657500,
+  1.875678211598858800, 1.875545077314734000, 1.875411874072178100,
+    1.875278601876088700,
+  1.875145260731365700, 1.875011850642911600, 1.874878371615631900,
+    1.874744823654434000,
+  1.874611206764227800, 1.874477520949926500, 1.874343766216444800,
+    1.874209942568701100,
+  1.874076050011615400, 1.873942088550110400, 1.873808058189111700,
+    1.873673958933546900,
+  1.873539790788347100, 1.873405553758444600, 1.873271247848775400,
+    1.873136873064277000,
+  1.873002429409890600, 1.872867916890558900, 1.872733335511227700,
+    1.872598685276845000,
+  1.872463966192361900, 1.872329178262731200, 1.872194321492908700,
+    1.872059395887852900,
+  1.871924401452524700, 1.871789338191887100, 1.871654206110906500,
+    1.871519005214550700,
+  1.871383735507791100, 1.871248396995601300, 1.871112989682956800,
+    1.870977513574836500,
+  1.870841968676221400, 1.870706354992095000, 1.870570672527443600,
+    1.870434921287255700,
+  1.870299101276522400, 1.870163212500237900, 1.870027254963397800,
+    1.869891228671001200,
+  1.869755133628049600, 1.869618969839546500, 1.869482737310498100,
+    1.869346436045913800,
+  1.869210066050804600, 1.869073627330184700, 1.868937119889070300,
+    1.868800543732480600,
+  1.868663898865437200, 1.868527185292963700, 1.868390403020087100,
+    1.868253552051836200,
+  1.868116632393243000, 1.867979644049341200, 1.867842587025167800,
+    1.867705461325761800,
+  1.867568266956164800, 1.867431003921421500, 1.867293672226578300,
+    1.867156271876684500,
+  1.867018802876792200, 1.866881265231955500, 1.866743658947231300,
+    1.866605984027679000,
+  1.866468240478360600, 1.866330428304340300, 1.866192547510685300,
+    1.866054598102465000,
+  1.865916580084751500, 1.865778493462619100, 1.865640338241145100,
+    1.865502114425408900,
+  1.865363822020492700, 1.865225461031480900, 1.865087031463460900,
+    1.864948533321522300,
+  1.864809966610757400, 1.864671331336260600, 1.864532627503129100,
+    1.864393855116463200,
+  1.864255014181364500, 1.864116104702938000, 1.863977126686291200,
+    1.863838080136534000,
+  1.863698965058778300, 1.863559781458139300, 1.863420529339734100,
+    1.863281208708683000,
+  1.863141819570107900, 1.863002361929134500, 1.862862835790889400,
+    1.862723241160503300,
+  1.862583578043108100, 1.862443846443839300, 1.862304046367834200,
+    1.862164177820232700,
+  1.862024240806177800, 1.861884235330814300, 1.861744161399289600,
+    1.861604019016754200,
+  1.861463808188360500, 1.861323528919263800, 1.861183181214621600,
+    1.861042765079594200,
+  1.860902280519344500, 1.860761727539037300, 1.860621106143840500,
+    1.860480416338924600,
+  1.860339658129461800, 1.860198831520627900, 1.860057936517600700,
+    1.859916973125560000,
+  1.859775941349689000, 1.859634841195173100, 1.859493672667199800,
+    1.859352435770959900,
+  1.859211130511645900, 1.859069756894453400, 1.858928314924580300,
+    1.858786804607227100,
+  1.858645225947596300, 1.858503578950893900, 1.858361863622327400,
+    1.858220079967107600,
+  1.858078227990447300, 1.857936307697561900, 1.857794319093669900,
+    1.857652262183991000,
+  1.857510136973749000, 1.857367943468169100, 1.857225681672479300,
+    1.857083351591910300,
+  1.856940953231694900, 1.856798486597069000, 1.856655951693270600,
+    1.856513348525540300,
+  1.856370677099121100, 1.856227937419258700, 1.856085129491201100,
+    1.855942253320199200,
+  1.855799308911506100, 1.855656296270377300, 1.855513215402071000,
+    1.855370066311848000,
+  1.855226849004971500, 1.855083563486706900, 1.854940209762322700,
+    1.854796787837089500,
+  1.854653297716280400, 1.854509739405171300, 1.854366112909040300,
+    1.854222418233168400,
+  1.854078655382838300, 1.853934824363336200, 1.853790925179950500,
+    1.853646957837971500,
+  1.853502922342692600, 1.853358818699409900, 1.853214646913421200,
+    1.853070406990027500,
+  1.852926098934532200, 1.852781722752241000, 1.852637278448462200,
+    1.852492766028506400,
+  1.852348185497687300, 1.852203536861320600, 1.852058820124724300,
+    1.851914035293219700,
+  1.851769182372129600, 1.851624261366780400, 1.851479272282500000,
+    1.851334215124619300,
+  1.851189089898471800, 1.851043896609393400, 1.850898635262721900,
+    1.850753305863798800,
+  1.850607908417967200, 1.850462442930572900, 1.850316909406964200,
+    1.850171307852492200,
+  1.850025638272510000, 1.849879900672373600, 1.849734095057441200,
+    1.849588221433073700,
+  1.849442279804634600, 1.849296270177489800, 1.849150192557007300,
+    1.849004046948558200,
+  1.848857833357515900, 1.848711551789256300, 1.848565202249157400,
+    1.848418784742600400,
+  1.848272299274968500, 1.848125745851647800, 1.847979124478026100,
+    1.847832435159495000,
+  1.847685677901447200, 1.847538852709279100, 1.847391959588388300,
+    1.847244998544176300,
+  1.847097969582046200, 1.846950872707404000, 1.846803707925657600,
+    1.846656475242218300,
+  1.846509174662499300, 1.846361806191916000, 1.846214369835887500,
+    1.846066865599834000,
+  1.845919293489179000, 1.845771653509348200, 1.845623945665770100,
+    1.845476169963875500,
+  1.845328326409097400, 1.845180415006871800, 1.845032435762637100,
+    1.844884388681833800,
+  1.844736273769905300, 1.844588091032297400, 1.844439840474458200,
+    1.844291522101838800,
+  1.844143135919891900, 1.843994681934073600, 1.843846160149842200,
+    1.843697570572658200,
+  1.843548913207985000, 1.843400188061288000, 1.843251395138035800,
+    1.843102534443698900,
+  1.842953605983750400, 1.842804609763666100, 1.842655545788924000,
+    1.842506414065004900,
+  1.842357214597392100, 1.842207947391570900, 1.842058612453029600,
+    1.841909209787258900,
+  1.841759739399751800, 1.841610201296003800, 1.841460595481513100,
+    1.841310921961780500,
+  1.841161180742308500, 1.841011371828603200, 1.840861495226172600,
+    1.840711550940526700,
+  1.840561538977179200, 1.840411459341645400, 1.840261312039443100,
+    1.840111097076092800,
+  1.839960814457117600, 1.839810464188043100, 1.839660046274397100,
+    1.839509560721709800,
+  1.839359007535514400, 1.839208386721346500, 1.839057698284743500,
+    1.838906942231246100,
+  1.838756118566397200, 1.838605227295741800, 1.838454268424828400,
+    1.838303241959206700,
+  1.838152147904429800, 1.838000986266052900, 1.837849757049633900,
+    1.837698460260732900,
+  1.837547095904912700, 1.837395663987738700, 1.837244164514778600,
+    1.837092597491602100,
+  1.836940962923782700, 1.836789260816895000, 1.836637491176516600,
+    1.836485654008228200,
+  1.836333749317611700, 1.836181777110252900, 1.836029737391738700,
+    1.835877630167659800,
+  1.835725455443608200, 1.835573213225179400, 1.835420903517970500,
+    1.835268526327581900,
+  1.835116081659615700, 1.834963569519677100, 1.834810989913373500,
+    1.834658342846314800,
+  1.834505628324113200, 1.834352846352383700, 1.834199996936744000,
+    1.834047080082813300,
+  1.833894095796214400, 1.833741044082571900, 1.833587924947513100,
+    1.833434738396668000,
+  1.833281484435668400, 1.833128163070149300, 1.832974774305747600,
+    1.832821318148103500,
+  1.832667794602858400, 1.832514203675657600, 1.832360545372147900,
+    1.832206819697979000,
+  1.832053026658802700, 1.831899166260273700, 1.831745238508049300,
+    1.831591243407788300,
+  1.831437180965153100, 1.831283051185808300, 1.831128854075420500,
+    1.830974589639659000,
+  1.830820257884196100, 1.830665858814705600, 1.830511392436864800,
+    1.830356858756352800,
+  1.830202257778851300, 1.830047589510044500, 1.829892853955619200,
+    1.829738051121264600,
+  1.829583181012672400, 1.829428243635536500, 1.829273238995553700,
+    1.829118167098423100,
+  1.828963027949846100, 1.828807821555527000, 1.828652547921171900,
+    1.828497207052490100,
+  1.828341798955192900, 1.828186323634994200, 1.828030781097610400,
+    1.827875171348760400,
+  1.827719494394165500, 1.827563750239549400, 1.827407938890638600,
+    1.827252060353161500,
+  1.827096114632849700, 1.826940101735436500, 1.826784021666658400,
+    1.826627874432253700,
+  1.826471660037963800, 1.826315378489531800, 1.826159029792704400,
+    1.826002613953229500,
+  1.825846130976858100, 1.825689580869344100, 1.825532963636443000,
+    1.825376279283913200,
+  1.825219527817515800, 1.825062709243013800, 1.824905823566173000,
+    1.824748870792761900,
+  1.824591850928550800, 1.824434763979313300, 1.824277609950824700,
+    1.824120388848863300,
+  1.823963100679209600, 1.823805745447646600, 1.823648323159960100,
+    1.823490833821937600,
+  1.823333277439369600, 1.823175654018049300, 1.823017963563772000,
+    1.822860206082335300,
+  1.822702381579539800, 1.822544490061187800, 1.822386531533084900,
+    1.822228506001038800,
+  1.822070413470859600, 1.821912253948359700, 1.821754027439354400,
+    1.821595733949661100,
+  1.821437373485099900, 1.821278946051493100, 1.821120451654665700,
+    1.820961890300445400,
+  1.820803261994661500, 1.820644566743146800, 1.820485804551735800,
+    1.820326975426265600,
+  1.820168079372576300, 1.820009116396509800, 1.819850086503910700,
+    1.819690989700625900,
+  1.819531825992505500, 1.819372595385401000, 1.819213297885166900,
+    1.819053933497660300,
+  1.818894502228740600, 1.818735004084269600, 1.818575439070111200,
+    1.818415807192132600,
+  1.818256108456203000, 1.818096342868193800, 1.817936510433979300,
+    1.817776611159436000,
+  1.817616645050443000, 1.817456612112881900, 1.817296512352636300,
+    1.817136345775592900,
+  1.816976112387640700, 1.816815812194670700, 1.816655445202576700,
+    1.816495011417255300,
+  1.816334510844604700, 1.816173943490526400, 1.816013309360923900,
+    1.815852608461703300,
+  1.815691840798773000, 1.815531006378043900, 1.815370105205429600,
+    1.815209137286846200,
+  1.815048102628211500, 1.814887001235446600, 1.814725833114474700,
+    1.814564598271221300,
+  1.814403296711615000, 1.814241928441585800, 1.814080493467067300,
+    1.813918991793994900,
+  1.813757423428306000, 1.813595788375941700, 1.813434086642844400,
+    1.813272318234959700,
+  1.813110483158235400, 1.812948581418621500, 1.812786613022070700,
+    1.812624577974538000,
+  1.812462476281981200, 1.812300307950360300, 1.812138072985637800,
+    1.811975771393778300,
+  1.811813403180749300, 1.811650968352521000, 1.811488466915065000,
+    1.811325898874356800,
+  1.811163264236372900, 1.811000563007093100, 1.810837795192499400,
+    1.810674960798576600,
+  1.810512059831311400, 1.810349092296693400, 1.810186058200714100,
+    1.810022957549368000,
+  1.809859790348652200, 1.809696556604565300, 1.809533256323109200,
+    1.809369889510288100,
+  1.809206456172108200, 1.809042956314578900, 1.808879389943711200,
+    1.808715757065519200,
+  1.808552057686019200, 1.808388291811230000, 1.808224459447172800,
+    1.808060560599871200,
+  1.807896595275351200, 1.807732563479641300, 1.807568465218772900,
+    1.807404300498778800,
+  1.807240069325695400, 1.807075771705560800, 1.806911407644415700,
+    1.806746977148303300,
+  1.806582480223269500, 1.806417916875362000, 1.806253287110631600,
+    1.806088590935131000,
+  1.805923828354915900, 1.805758999376044100, 1.805594104004575800,
+    1.805429142246573600,
+  1.805264114108102900, 1.805099019595231200, 1.804933858714028700,
+    1.804768631470567500,
+  1.804603337870923000, 1.804437977921172300, 1.804272551627395400,
+    1.804107058995674500,
+  1.803941500032094200, 1.803775874742741500, 1.803610183133706400,
+    1.803444425211080400,
+  1.803278600980958300, 1.803112710449436900, 1.802946753622615400,
+    1.802780730506595700,
+  1.802614641107481900, 1.802448485431380900, 1.802282263484401300,
+    1.802115975272655000,
+  1.801949620802255600, 1.801783200079319900, 1.801616713109966300,
+    1.801450159900316300,
+  1.801283540456493700, 1.801116854784624400, 1.800950102890836800,
+    1.800783284781262200,
+  1.800616400462033800, 1.800449449939287800, 1.800282433219162000,
+    1.800115350307797600,
+  1.799948201211337500, 1.799780985935927300, 1.799613704487715200,
+    1.799446356872851400,
+  1.799278943097489100, 1.799111463167783400, 1.798943917089892000,
+    1.798776304869975200,
+  1.798608626514195800, 1.798440882028718500, 1.798273071419711000,
+    1.798105194693343500,
+  1.797937251855787700, 1.797769242913218800, 1.797601167871813800,
+    1.797433026737752700,
+  1.797264819517217200, 1.797096546216391900, 1.796928206841463800,
+    1.796759801398622100,
+  1.796591329894058800, 1.796422792333968000, 1.796254188724546500,
+    1.796085519071992900,
+  1.795916783382509200, 1.795747981662299200, 1.795579113917569200,
+    1.795410180154527900,
+  1.795241180379386800, 1.795072114598359200, 1.794902982817661500,
+    1.794733785043511900,
+  1.794564521282131300, 1.794395191539743400, 1.794225795822573600,
+    1.794056334136850300,
+  1.793886806488804100, 1.793717212884667900, 1.793547553330677300,
+    1.793377827833070100,
+  1.793208036398086900, 1.793038179031970000, 1.792868255740965000,
+    1.792698266531319400,
+  1.792528211409282900, 1.792358090381108300, 1.792187903453050100,
+    1.792017650631366100,
+  1.791847331922315600, 1.791676947332161000, 1.791506496867166600,
+    1.791335980533599300,
+  1.791165398337728900, 1.790994750285827000, 1.790824036384167900,
+    1.790653256639028100,
+  1.790482411056686800, 1.790311499643425500, 1.790140522405528200,
+    1.789969479349281100,
+  1.789798370480973000, 1.789627195806895200, 1.789455955333341100,
+    1.789284649066606800,
+  1.789113277012990900, 1.788941839178794100, 1.788770335570319700,
+    1.788598766193873600,
+  1.788427131055763600, 1.788255430162300400, 1.788083663519796800,
+    1.787911831134568300,
+  1.787739933012932900, 1.787567969161210300, 1.787395939585723500,
+    1.787223844292797500,
+  1.787051683288759500, 1.786879456579939700, 1.786707164172670200,
+    1.786534806073285700,
+  1.786362382288123400, 1.786189892823522700, 1.786017337685825700,
+    1.785844716881376700,
+  1.785672030416522300, 1.785499278297612000, 1.785326460530997300,
+    1.785153577123032000,
+  1.784980628080072900, 1.784807613408478300, 1.784634533114609800,
+    1.784461387204831400,
+  1.784288175685508700, 1.784114898563010200, 1.783941555843707100,
+    1.783768147533972200,
+  1.783594673640181800, 1.783421134168713800, 1.783247529125948900,
+    1.783073858518269700,
+  1.782900122352062000, 1.782726320633713200, 1.782552453369613800,
+    1.782378520566156200,
+  1.782204522229735600, 1.782030458366749200, 1.781856328983596900,
+    1.781682134086680900,
+  1.781507873682406200, 1.781333547777179200, 1.781159156377410100,
+    1.780984699489510200,
+  1.780810177119894100, 1.780635589274978600, 1.780460935961182300,
+    1.780286217184927000,
+  1.780111432952636600, 1.779936583270737400, 1.779761668145658300,
+    1.779586687583830200,
+  1.779411641591686500, 1.779236530175663600, 1.779061353342199500,
+    1.778886111097735000,
+  1.778710803448713400, 1.778535430401580100, 1.778359991962783000,
+    1.778184488138772900,
+  1.778008918936002000, 1.777833284360925900, 1.777657584420002000,
+    1.777481819119690200,
+  1.777305988466453000, 1.777130092466755200, 1.776954131127064200,
+    1.776778104453849100,
+  1.776602012453582400, 1.776425855132738100, 1.776249632497793200,
+    1.776073344555227000,
+  1.775896991311520800, 1.775720572773158900, 1.775544088946627600,
+    1.775367539838415700,
+  1.775190925455014400, 1.775014245802917200, 1.774837500888620400,
+    1.774660690718622000,
+  1.774483815299423100, 1.774306874637527000, 1.774129868739439100,
+    1.773952797611667100,
+  1.773775661260722100, 1.773598459693116500, 1.773421192915365400,
+    1.773243860933986400,
+  1.773066463755499800, 1.772889001386427800, 1.772711473833295200,
+    1.772533881102629000,
+  1.772356223200959100, 1.772178500134817100, 1.772000711910737700,
+    1.771822858535257600,
+  1.771644940014915700, 1.771466956356254000, 1.771288907565816000,
+    1.771110793650148500,
+  1.770932614615799800, 1.770754370469321400, 1.770576061217266500,
+    1.770397686866191300,
+  1.770219247422653700, 1.770040742893215000, 1.769862173284438000,
+    1.769683538602888000,
+  1.769504838855133100, 1.769326074047743700, 1.769147244187292200,
+    1.768968349280353800,
+  1.768789389333506000, 1.768610364353328600, 1.768431274346403900,
+    1.768252119319316400,
+  1.768072899278653200, 1.767893614231003800, 1.767714264182959500,
+    1.767534849141115100,
+  1.767355369112067100, 1.767175824102414000, 1.766996214118757800,
+    1.766816539167701800,
+  1.766636799255852300, 1.766456994389817600, 1.766277124576209000,
+    1.766097189821639300,
+  1.765917190132724600, 1.765737125516083000, 1.765556995978334800,
+    1.765376801526102700,
+  1.765196542166012100, 1.765016217904690900, 1.764835828748768400,
+    1.764655374704877700,
+  1.764474855779653200, 1.764294271979732100, 1.764113623311754000,
+    1.763932909782361100,
+  1.763752131398197200, 1.763571288165909400, 1.763390380092146400,
+    1.763209407183560200,
+  1.763028369446804500, 1.762847266888535100, 1.762666099515411100,
+    1.762484867334093400,
+  1.762303570351245300, 1.762122208573532600, 1.761940782007623600,
+    1.761759290660188400,
+  1.761577734537900500, 1.761396113647435000, 1.761214427995469100,
+    1.761032677588683800,
+  1.760850862433760700, 1.760668982537384900, 1.760487037906243600,
+    1.760305028547026500,
+  1.760122954466425600, 1.759940815671135100, 1.759758612167851700,
+    1.759576343963274600,
+  1.759394011064105100, 1.759211613477047200, 1.759029151208807400,
+    1.758846624266093800,
+  1.758664032655617500, 1.758481376384092500, 1.758298655458233600,
+    1.758115869884759700,
+  1.757933019670390800, 1.757750104821850000, 1.757567125345862700,
+    1.757384081249156100,
+  1.757200972538460700, 1.757017799220508500, 1.756834561302034400,
+    1.756651258789775800,
+  1.756467891690471700, 1.756284460010864200, 1.756100963757697900,
+    1.755917402937718900,
+  1.755733777557676500, 1.755550087624322000, 1.755366333144409200,
+    1.755182514124693900,
+  1.754998630571935200, 1.754814682492893600, 1.754630669894332600,
+    1.754446592783017500,
+  1.754262451165716300, 1.754078245049199600, 1.753893974440240000,
+    1.753709639345612600,
+  1.753525239772095100, 1.753340775726466700, 1.753156247215510400,
+    1.752971654246010300,
+  1.752786996824753600, 1.752602274958529500, 1.752417488654129700,
+    1.752232637918348200,
+  1.752047722757981600, 1.751862743179828600, 1.751677699190690400,
+    1.751492590797370600,
+  1.751307418006674800, 1.751122180825411800, 1.750936879260391700,
+    1.750751513318427700,
+  1.750566083006335600, 1.750380588330932500, 1.750195029299038900,
+    1.750009405917477100,
+  1.749823718193071800, 1.749637966132650900, 1.749452149743043100,
+    1.749266269031080700,
+  1.749080324003598100, 1.748894314667431800, 1.748708241029421000,
+    1.748522103096407300,
+  1.748335900875233900, 1.748149634372747200, 1.747963303595795500,
+    1.747776908551230000,
+  1.747590449245904000, 1.747403925686672500, 1.747217337880393900,
+    1.747030685833928200,
+  1.746843969554138200, 1.746657189047889200, 1.746470344322048200,
+    1.746283435383485100,
+  1.746096462239072000, 1.745909424895683200, 1.745722323360195900,
+    1.745535157639489100,
+  1.745347927740444200, 1.745160633669945200, 1.744973275434878300,
+    1.744785853042132300,
+  1.744598366498598200, 1.744410815811169300, 1.744223200986741100,
+    1.744035522032211900,
+  1.743847778954482000, 1.743659971760454200, 1.743472100457033700,
+    1.743284165051127700,
+  1.743096165549646400, 1.742908101959502100, 1.742719974287608900,
+    1.742531782540884100,
+  1.742343526726246800, 1.742155206850618800, 1.741966822920923800,
+    1.741778374944088000,
+  1.741589862927040800, 1.741401286876712800, 1.741212646800037300,
+    1.741023942703950200,
+  1.740835174595389600, 1.740646342481295900, 1.740457446368612000,
+    1.740268486264283200,
+  1.740079462175256900, 1.739890374108482600, 1.739701222070913200,
+    1.739512006069502800,
+  1.739322726111208500, 1.739133382202989500, 1.738943974351807600,
+    1.738754502564626700,
+  1.738564966848413100, 1.738375367210135400, 1.738185703656765200,
+    1.737995976195275000,
+  1.737806184832640900, 1.737616329575841300, 1.737426410431856200,
+    1.737236427407668800,
+  1.737046380510263800, 1.736856269746629000, 1.736666095123754000,
+    1.736475856648631400,
+  1.736285554328254900, 1.736095188169622500, 1.735904758179732400,
+    1.735714264365586700,
+  1.735523706734189100, 1.735333085292545900, 1.735142400047666100,
+    1.734951651006560100,
+  1.734760838176241400, 1.734569961563725600, 1.734379021176030600,
+    1.734188017020177100,
+  1.733996949103187500, 1.733805817432086900, 1.733614622013902600,
+    1.733423362855664100,
+  1.733232039964403900, 1.733040653347156300, 1.732849203010957900,
+    1.732657688962847600,
+  1.732466111209867200, 1.732274469759060200, 1.732082764617472800,
+    1.731890995792153600,
+  1.731699163290153100, 1.731507267118524500, 1.731315307284323700,
+    1.731123283794607800,
+  1.730931196656437600, 1.730739045876875200, 1.730546831462985500,
+    1.730354553421835600,
+  1.730162211760495300, 1.729969806486036500, 1.729777337605533000,
+    1.729584805126061400,
+  1.729392209054700900, 1.729199549398532400, 1.729006826164639400,
+    1.728814039360108100,
+  1.728621188992026400, 1.728428275067485100, 1.728235297593577100,
+    1.728042256577397200,
+  1.727849152026043500, 1.727655983946615700, 1.727462752346216000,
+    1.727269457231948900,
+  1.727076098610921500, 1.726882676490243000, 1.726689190877025000,
+    1.726495641778381200,
+  1.726302029201427900, 1.726108353153283900, 1.725914613641069900,
+    1.725720810671909300,
+  1.725526944252927700, 1.725333014391252900, 1.725139021094015200,
+    1.724944964368347000,
+  1.724750844221383500, 1.724556660660261800, 1.724362413692121400,
+    1.724168103324104300,
+  1.723973729563354600, 1.723779292417019200, 1.723584791892246700,
+    1.723390227996188600,
+  1.723195600735998100, 1.723000910118831300, 1.722806156151846400,
+    1.722611338842204000,
+  1.722416458197066900, 1.722221514223600100, 1.722026506928971500,
+    1.721831436320350800,
+  1.721636302404910200, 1.721441105189824000, 1.721245844682269600,
+    1.721050520889425600,
+  1.720855133818473900, 1.720659683476597900, 1.720464169870984200,
+    1.720268593008821100,
+  1.720072952897299100, 1.719877249543611900, 1.719681482954954500,
+    1.719485653138524800,
+  1.719289760101522900, 1.719093803851151400, 1.718897784394614900,
+    1.718701701739120400,
+  1.718505555891877400, 1.718309346860097600, 1.718113074650995200,
+    1.717916739271786500,
+  1.717720340729689700, 1.717523879031926500, 1.717327354185719900,
+    1.717130766198295700,
+  1.716934115076881800, 1.716737400828708400, 1.716540623461008100,
+    1.716343782981016200,
+  1.716146879395969500, 1.715949912713108100, 1.715752882939673300,
+    1.715555790082909900,
+  1.715358634150064000, 1.715161415148384500, 1.714964133085122900,
+    1.714766787967532600,
+  1.714569379802868900, 1.714371908598390800, 1.714174374361358000,
+    1.713976777099033700,
+  1.713779116818682900, 1.713581393527573000, 1.713383607232973600,
+    1.713185757942156800,
+  1.712987845662396800, 1.712789870400970700, 1.712591832165157200,
+    1.712393730962237500,
+  1.712195566799495500, 1.711997339684216700, 1.711799049623689900,
+    1.711600696625205300,
+  1.711402280696055800, 1.711203801843536700, 1.711005260074945200,
+    1.710806655397581600,
+  1.710607987818747700, 1.710409257345748100, 1.710210463985889500,
+    1.710011607746480600,
+  1.709812688634833300, 1.709613706658261100, 1.709414661824080000,
+    1.709215554139608400,
+  1.709016383612166600, 1.708817150249077900, 1.708617854057667300,
+    1.708418495045262300,
+  1.708219073219193300, 1.708019588586791700, 1.707820041155392500,
+    1.707620430932332400,
+  1.707420757924950300, 1.707221022140587900, 1.707021223586588700,
+    1.706821362270298600,
+  1.706621438199066300, 1.706421451380242000, 1.706221401821179200,
+    1.706021289529232800,
+  1.705821114511760300, 1.705620876776121600, 1.705420576329679000,
+    1.705220213179796900,
+  1.705019787333842200, 1.704819298799183700, 1.704618747583193100,
+    1.704418133693243800,
+  1.704217457136711900, 1.704016717920976000, 1.703815916053416300,
+    1.703615051541415900,
+  1.703414124392360000, 1.703213134613636100, 1.703012082212634000,
+    1.702810967196746000,
+  1.702609789573366300, 1.702408549349891500, 1.702207246533721000,
+    1.702005881132255800,
+  1.701804453152900000, 1.701602962603059100, 1.701401409490141300,
+    1.701199793821557300,
+  1.700998115604720000, 1.700796374847044300, 1.700594571555948100,
+    1.700392705738850400,
+  1.700190777403173700, 1.699988786556342300, 1.699786733205783000,
+    1.699584617358924400,
+  1.699382439023197700, 1.699180198206036600, 1.698977894914877100,
+    1.698775529157156700,
+  1.698573100940316400, 1.698370610271798800, 1.698168057159048700,
+    1.697965441609513300,
+  1.697762763630642700, 1.697560023229888200, 1.697357220414704500,
+    1.697154355192547900,
+  1.696951427570877000, 1.696748437557152900, 1.696545385158839200,
+    1.696342270383401200,
+  1.696139093238307400, 1.695935853731027600, 1.695732551869034300,
+    1.695529187659802400,
+  1.695325761110809200, 1.695122272229534000, 1.694918721023458600,
+    1.694715107500066800,
+  1.694511431666845000, 1.694307693531282000, 1.694103893100868100,
+    1.693900030383096900,
+  1.693696105385463800, 1.693492118115466500, 1.693288068580604900,
+    1.693083956788381500,
+  1.692879782746300700, 1.692675546461869900, 1.692471247942597600,
+    1.692266887195995600,
+  1.692062464229577600, 1.691857979050859900, 1.691653431667360600,
+    1.691448822086600400,
+  1.691244150316102000, 1.691039416363390800, 1.690834620235994300,
+    1.690629761941442100,
+  1.690424841487266700, 1.690219858881001800, 1.690014814130184300,
+    1.689809707242353200,
+  1.689604538225049700, 1.689399307085817300, 1.689194013832201500,
+    1.688988658471750600,
+  1.688783241012014700, 1.688577761460546800, 1.688372219824901400,
+    1.688166616112636100,
+  1.687960950331309800, 1.687755222488484600, 1.687549432591724400,
+    1.687343580648595700,
+  1.687137666666667100, 1.686931690653509000, 1.686725652616694900,
+    1.686519552563800400,
+  1.686313390502403000, 1.686107166440082600, 1.685900880384421800,
+    1.685694532343004600,
+  1.685488122323418400, 1.685281650333251900, 1.685075116380096800,
+    1.684868520471546600,
+  1.684661862615197000, 1.684455142818646700, 1.684248361089495800,
+    1.684041517435347400,
+  1.683834611863806100, 1.683627644382479800, 1.683420614998977900,
+    1.683213523720911800,
+  1.683006370555896400, 1.682799155511547600, 1.682591878595484300,
+    1.682384539815327400,
+  1.682177139178700400, 1.681969676693228600, 1.681762152366539600,
+    1.681554566206263900,
+  1.681346918220033800, 1.681139208415483700, 1.680931436800250600,
+    1.680723603381973500,
+  1.680515708168294200, 1.680307751166856300, 1.680099732385305300,
+    1.679891651831290100,
+  1.679683509512460900, 1.679475305436470600, 1.679267039610974300,
+    1.679058712043629300,
+  1.678850322742095200, 1.678641871714033900, 1.678433358967109400,
+    1.678224784508988400,
+  1.678016148347339300, 1.677807450489833300, 1.677598690944143400,
+    1.677389869717945000,
+  1.677180986818916300, 1.676972042254736900, 1.676763036033089600,
+    1.676553968161658600,
+  1.676344838648130600, 1.676135647500194700, 1.675926394725542700,
+    1.675717080331867900,
+  1.675507704326866200, 1.675298266718235900, 1.675088767513677200,
+    1.674879206720892900,
+  1.674669584347587800, 1.674459900401469700, 1.674250154890247300,
+    1.674040347821632800,
+  1.673830479203340000, 1.673620549043085500, 1.673410557348587600,
+    1.673200504127567000,
+  1.672990389387746700, 1.672780213136852300, 1.672569975382611300,
+    1.672359676132753500,
+  1.672149315395010900, 1.671938893177118000, 1.671728409486811500,
+    1.671517864331830000,
+  1.671307257719914800, 1.671096589658809500, 1.670885860156259300,
+    1.670675069220012500,
+  1.670464216857819200, 1.670253303077431800, 1.670042327886605200,
+    1.669831291293095900,
+  1.669620193304663500, 1.669409033929069500, 1.669197813174077200,
+    1.668986531047453000,
+  1.668775187556965000, 1.668563782710383600, 1.668352316515481700,
+    1.668140788980034400,
+  1.667929200111818400, 1.667717549918614100, 1.667505838408202700,
+    1.667294065588368100,
+  1.667082231466896900, 1.666870336051577800, 1.666658379350201000,
+    1.666446361370560000,
+  1.666234282120450100, 1.666022141607668600, 1.665809939840015500,
+    1.665597676825292700,
+  1.665385352571304500, 1.665172967085857700, 1.664960520376761000,
+    1.664748012451825200,
+  1.664535443318863900, 1.664322812985692600, 1.664110121460129000,
+    1.663897368749993400,
+  1.663684554863107800, 1.663471679807296800, 1.663258743590387400,
+    1.663045746220208600,
+  1.662832687704591800, 1.662619568051370500, 1.662406387268380100,
+    1.662193145363459100,
+  1.661979842344447600, 1.661766478219188300, 1.661553052995526000,
+    1.661339566681307600,
+  1.661126019284382200, 1.660912410812601900, 1.660698741273819700,
+    1.660485010675892400,
+  1.660271219026677700, 1.660057366334036300, 1.659843452605831200,
+    1.659629477849926800,
+  1.659415442074190900, 1.659201345286492900, 1.658987187494704200,
+    1.658772968706699000,
+  1.658558688930353400, 1.658344348173546300, 1.658129946444157700,
+    1.657915483750071100,
+  1.657700960099171200, 1.657486375499345900, 1.657271729958484500,
+    1.657057023484479000,
+  1.656842256085223800, 1.656627427768615000, 1.656412538542551200,
+    1.656197588414933600,
+  1.655982577393664700, 1.655767505486650500, 1.655552372701798200,
+    1.655337179047017700,
+  1.655121924530220900, 1.654906609159322500, 1.654691232942238500,
+    1.654475795886888300,
+  1.654260298001192200, 1.654044739293073900, 1.653829119770458900,
+    1.653613439441274500,
+  1.653397698313451300, 1.653181896394921000, 1.652966033693617800,
+    1.652750110217479100,
+  1.652534125974443000, 1.652318080972451400, 1.652101975219447200,
+    1.651885808723375900,
+  1.651669581492185300, 1.651453293533826000, 1.651236944856249600,
+    1.651020535467411200,
+  1.650804065375267400, 1.650587534587776700, 1.650370943112901000,
+    1.650154290958603300,
+  1.649937578132849400, 1.649720804643607400, 1.649503970498847200,
+    1.649287075706541200,
+  1.649070120274664000, 1.648853104211192700, 1.648636027524106100,
+    1.648418890221385400,
+  1.648201692311014300, 1.647984433800978600, 1.647767114699266100,
+    1.647549735013867000,
+  1.647332294752774200, 1.647114793923981600, 1.646897232535486500,
+    1.646679610595287900,
+  1.646461928111387300, 1.646244185091788400, 1.646026381544496400,
+    1.645808517477519700,
+  1.645590592898868600, 1.645372607816555400, 1.645154562238594800,
+    1.644936456173004000,
+  1.644718289627801600, 1.644500062611009300, 1.644281775130650900,
+    1.644063427194751600,
+  1.643845018811340300, 1.643626549988446200, 1.643408020734102600,
+    1.643189431056343700,
+  1.642970780963206800, 1.642752070462730800, 1.642533299562957100,
+    1.642314468271929300,
+  1.642095576597693200, 1.641876624548297000, 1.641657612131790500,
+    1.641438539356226500,
+  1.641219406229659700, 1.641000212760146800, 1.640780958955747200,
+    1.640561644824521700,
+  1.640342270374534500, 1.640122835613851100, 1.639903340550539200,
+    1.639683785192669600,
+  1.639464169548314100, 1.639244493625547900, 1.639024757432447500,
+    1.638804960977092100,
+  1.638585104267562800, 1.638365187311943400, 1.638145210118319400,
+    1.637925172694778800,
+  1.637705075049411800, 1.637484917190310800, 1.637264699125570200,
+    1.637044420863286600,
+  1.636824082411559600, 1.636603683778490100, 1.636383224972181500,
+    1.636162706000739300,
+  1.635942126872271800, 1.635721487594888400, 1.635500788176702100,
+    1.635280028625826900,
+  1.635059208950379700, 1.634838329158479200, 1.634617389258246700,
+    1.634396389257805700,
+  1.634175329165281400, 1.633954208988801700, 1.633733028736496400,
+    1.633511788416498000,
+  1.633290488036940500, 1.633069127605960800, 1.632847707131697600,
+    1.632626226622291700,
+  1.632404686085886300, 1.632183085530627200, 1.631961424964661700,
+    1.631739704396139900,
+  1.631517923833213400, 1.631296083284036900, 1.631074182756766300,
+    1.630852222259560700,
+  1.630630201800580900, 1.630408121387990000, 1.630185981029953000,
+    1.629963780734637400,
+  1.629741520510213000, 1.629519200364851800, 1.629296820306727700,
+    1.629074380344017100,
+  1.628851880484898200, 1.628629320737551700, 1.628406701110161100,
+    1.628184021610910700,
+  1.627961282247988300, 1.627738483029583100, 1.627515623963887000,
+    1.627292705059093700,
+  1.627069726323399500, 1.626846687765002700, 1.626623589392103500,
+    1.626400431212904800,
+  1.626177213235611400, 1.625953935468430500, 1.625730597919571300,
+    1.625507200597245500,
+  1.625283743509666300, 1.625060226665050000, 1.624836650071614500,
+    1.624613013737580000,
+  1.624389317671169500, 1.624165561880607000, 1.623941746374119500,
+    1.623717871159936300,
+  1.623493936246288300, 1.623269941641409400, 1.623045887353534900,
+    1.622821773390902700,
+  1.622597599761753000, 1.622373366474327800, 1.622149073536871800,
+    1.621924720957631300,
+  1.621700308744855200, 1.621475836906794500, 1.621251305451702400,
+    1.621026714387834300,
+  1.620802063723447700, 1.620577353466802700, 1.620352583626160500,
+    1.620127754209786100,
+  1.619902865225945300, 1.619677916682906700, 1.619452908588941300,
+    1.619227840952321800,
+  1.619002713781323200, 1.618777527084222800, 1.618552280869300300,
+    1.618326975144837000,
+  1.618101609919117200, 1.617876185200426600, 1.617650700997053500,
+    1.617425157317288200,
+  1.617199554169423500, 1.616973891561754200, 1.616748169502577200,
+    1.616522388000191500,
+  1.616296547062898500, 1.616070646699001800, 1.615844686916807300,
+    1.615618667724622700,
+  1.615392589130757900, 1.615166451143525300, 1.614940253771239400,
+    1.614713997022216900,
+  1.614487680904776600, 1.614261305427239200, 1.614034870597928400,
+    1.613808376425168900,
+  1.613581822917288900, 1.613355210082617800, 1.613128537929487500,
+    1.612901806466232200,
+  1.612675015701188000, 1.612448165642693400, 1.612221256299089200,
+    1.611994287678718100,
+  1.611767259789925100, 1.611540172641057200, 1.611313026240463800,
+    1.611085820596496600,
+  1.610858555717509200, 1.610631231611857800, 1.610403848287899700,
+    1.610176405753995800,
+  1.609948904018508200, 1.609721343089801600, 1.609493722976242900,
+    1.609266043686200700,
+  1.609038305228046400, 1.608810507610153100, 1.608582650840896200,
+    1.608354734928653800,
+  1.608126759881805400, 1.607898725708732900, 1.607670632417820500,
+    1.607442480017454700,
+  1.607214268516024000, 1.606985997921919000, 1.606757668243532500,
+    1.606529279489259600,
+  1.606300831667497600, 1.606072324786645500, 1.605843758855105300,
+    1.605615133881280700,
+  1.605386449873577300, 1.605157706840403300, 1.604928904790168700,
+    1.604700043731286200,
+  1.604471123672170500, 1.604242144621237800, 1.604013106586907400,
+    1.603784009577600100,
+  1.603554853601739700, 1.603325638667751000, 1.603096364784061900,
+    1.602867031959102100,
+  1.602637640201303400, 1.602408189519099800, 1.602178679920927900,
+    1.601949111415226000,
+  1.601719484010434300, 1.601489797714996000, 1.601260052537355700,
+    1.601030248485960900,
+  1.600800385569260300, 1.600570463795705700, 1.600340483173750400,
+    1.600110443711850300,
+  1.599880345418463100, 1.599650188302049100, 1.599419972371070500,
+    1.599189697633991400,
+  1.598959364099278700, 1.598728971775401000, 1.598498520670828900,
+    1.598268010794035900,
+  1.598037442153496900, 1.597806814757689200, 1.597576128615092200,
+    1.597345383734188000,
+  1.597114580123460100, 1.596883717791394800, 1.596652796746479600,
+    1.596421816997205500,
+  1.596190778552064800, 1.595959681419551800, 1.595728525608163700,
+    1.595497311126399300,
+  1.595266037982759500, 1.595034706185747500, 1.594803315743869000,
+    1.594571866665631700,
+  1.594340358959544800, 1.594108792634120600, 1.593877167697873100,
+    1.593645484159318200,
+  1.593413742026974500, 1.593181941309362400, 1.592950082015004700,
+    1.592718164152426000,
+  1.592486187730153300, 1.592254152756715600, 1.592022059240644400,
+    1.591789907190473100,
+  1.591557696614737100, 1.591325427521974100, 1.591093099920724200,
+    1.590860713819529400,
+  1.590628269226933600, 1.590395766151483400, 1.590163204601727100,
+    1.589930584586215500,
+  1.589697906113501000, 1.589465169192139100, 1.589232373830686400,
+    1.588999520037702300,
+  1.588766607821748200, 1.588533637191387400, 1.588300608155185600,
+    1.588067520721711000,
+  1.587834374899533400, 1.587601170697224600, 1.587367908123358900,
+    1.587134587186513000,
+  1.586901207895265300, 1.586667770258196600, 1.586434274283889500,
+    1.586200719980929200,
+  1.585967107357902700, 1.585733436423399000, 1.585499707186010200,
+    1.585265919654329300,
+  1.585032073836952100, 1.584798169742476400, 1.584564207379502500,
+    1.584330186756632200,
+  1.584096107882470000, 1.583861970765622100, 1.583627775414697000,
+    1.583393521838305700,
+  1.583159210045060900, 1.582924840043577400, 1.582690411842472700,
+    1.582455925450365600,
+  1.582221380875877800, 1.581986778127632700, 1.581752117214255900,
+    1.581517398144375800,
+  1.581282620926621300, 1.581047785569625400, 1.580812892082021900,
+    1.580577940472447200,
+  1.580342930749539800, 1.580107862921940700, 1.579872736998292100,
+    1.579637552987239100,
+  1.579402310897428900, 1.579167010737510600, 1.578931652516135700,
+    1.578696236241957200,
+  1.578460761923630800, 1.578225229569814700, 1.577989639189168100,
+    1.577753990790353500,
+  1.577518284382034800, 1.577282519972878200, 1.577046697571552000,
+    1.576810817186727000,
+  1.576574878827075700, 1.576338882501273000, 1.576102828217995600,
+    1.575866715985922500,
+  1.575630545813735200, 1.575394317710116600, 1.575158031683752300,
+    1.574921687743330300,
+  1.574685285897539800, 1.574448826155072400, 1.574212308524622500,
+    1.573975733014886000,
+  1.573739099634561500, 1.573502408392348600, 1.573265659296950300,
+    1.573028852357070800,
+  1.572791987581417100, 1.572555064978698100, 1.572318084557624800,
+    1.572081046326909900,
+  1.571843950295269000, 1.571606796471419100, 1.571369584864080100,
+    1.571132315481973200,
+  1.570894988333822400, 1.570657603428353300, 1.570420160774294000,
+    1.570182660380374600,
+  1.569945102255327200, 1.569707486407886600, 1.569469812846788500,
+    1.569232081580771900,
+  1.568994292618577400, 1.568756445968948000, 1.568518541640628400,
+    1.568280579642366000,
+  1.568042559982909500, 1.567804482671010500, 1.567566347715422500,
+    1.567328155124900800,
+  1.567089904908203200, 1.566851597074089500, 1.566613231631321500,
+    1.566374808588663300,
+  1.566136327954881000, 1.565897789738742900, 1.565659193949019400,
+    1.565420540594482800,
+  1.565181829683907700, 1.564943061226071100, 1.564704235229751500,
+    1.564465351703730400,
+  1.564226410656790000, 1.563987412097716200, 1.563748356035296000,
+    1.563509242478319000,
+  1.563270071435576500, 1.563030842915862100, 1.562791556927971800,
+    1.562552213480703300,
+  1.562312812582856500, 1.562073354243233700, 1.561833838470639200,
+    1.561594265273878800,
+  1.561354634661761300, 1.561114946643096900, 1.560875201226698900,
+    1.560635398421381400,
+  1.560395538235961800, 1.560155620679258400, 1.559915645760092900,
+    1.559675613487288200,
+  1.559435523869669500, 1.559195376916064700, 1.558955172635302800,
+    1.558714911036215700,
+  1.558474592127637100, 1.558234215918402600, 1.557993782417350400,
+    1.557753291633320500,
+  1.557512743575155000, 1.557272138251698300, 1.557031475671796400,
+    1.556790755844298400,
+  1.556549978778054300, 1.556309144481917300, 1.556068252964741600,
+    1.555827304235384500,
+  1.555586298302704900, 1.555345235175563900, 1.555104114862824600,
+    1.554862937373352500,
+  1.554621702716015000, 1.554380410899681300, 1.554139061933223200,
+    1.553897655825514600,
+  1.553656192585431100, 1.553414672221850700, 1.553173094743653300,
+    1.552931460159721100,
+  1.552689768478938500, 1.552448019710191300, 1.552206213862368500,
+    1.551964350944360100,
+  1.551722430965059000, 1.551480453933359800, 1.551238419858159700,
+    1.550996328748356800,
+  1.550754180612852900, 1.550511975460550500, 1.550269713300355100,
+    1.550027394141174000,
+  1.549785017991916400, 1.549542584861493900, 1.549300094758820000,
+    1.549057547692810600,
+  1.548814943672383300, 1.548572282706457900, 1.548329564803956300,
+    1.548086789973802700,
+  1.547843958224923000, 1.547601069566245900, 1.547358124006701400,
+    1.547115121555221700,
+  1.546872062220741700, 1.546628946012197800, 1.546385772938528600,
+    1.546142543008675300,
+  1.545899256231580300, 1.545655912616188800, 1.545412512171447700,
+    1.545169054906306200,
+  1.544925540829715600, 1.544681969950629300, 1.544438342278002600,
+    1.544194657820792800,
+  1.543950916587959700, 1.543707118588464800, 1.543463263831272000,
+    1.543219352325347200,
+  1.542975384079658300, 1.542731359103175300, 1.542487277404870100,
+    1.542243138993717000,
+  1.541998943878692300, 1.541754692068774600, 1.541510383572944000,
+    1.541266018400183200,
+  1.541021596559476700, 1.540777118059811100, 1.540532582910175500,
+    1.540287991119560600,
+  1.540043342696959100, 1.539798637651366400, 1.539553875991779300,
+    1.539309057727197300,
+  1.539064182866621400, 1.538819251419055100, 1.538574263393503800,
+    1.538329218798974800,
+  1.538084117644477900, 1.537838959939025200, 1.537593745691629500,
+    1.537348474911307300,
+  1.537103147607076200, 1.536857763787956400, 1.536612323462969800,
+    1.536366826641140800,
+  1.536121273331495300, 1.535875663543061700, 1.535629997284870400,
+    1.535384274565953600,
+  1.535138495395346400, 1.534892659782085100, 1.534646767735208000,
+    1.534400819263756400,
+  1.534154814376772700, 1.533908753083302200, 1.533662635392391700,
+    1.533416461313090100,
+  1.533170230854448400, 1.532923944025520200, 1.532677600835360600,
+    1.532431201293027000,
+  1.532184745407578500, 1.531938233188077100, 1.531691664643585900,
+    1.531445039783170500,
+  1.531198358615898800, 1.530951621150840700, 1.530704827397067800,
+    1.530457977363654000,
+  1.530211071059675200, 1.529964108494209700, 1.529717089676337500,
+    1.529470014615140800,
+  1.529222883319703700, 1.528975695799112500, 1.528728452062455600,
+    1.528481152118823700,
+  1.528233795977309400, 1.527986383647006500, 1.527738915137012400,
+    1.527491390456425600,
+  1.527243809614346600, 1.526996172619878900, 1.526748479482126700,
+    1.526500730210197200,
+  1.526252924813199500, 1.526005063300244900, 1.525757145680446200,
+    1.525509171962918800,
+  1.525261142156779900, 1.525013056271149000, 1.524764914315147200,
+    1.524516716297898300,
+  1.524268462228527900, 1.524020152116163200, 1.523771785969934000,
+    1.523523363798972000,
+  1.523274885612411200, 1.523026351419387100, 1.522777761229038100,
+    1.522529115050503600,
+  1.522280412892925900, 1.522031654765448900, 1.521782840677218700,
+    1.521533970637383800,
+  1.521285044655094300, 1.521036062739502300, 1.520787024899762100,
+    1.520537931145030400,
+  1.520288781484465700, 1.520039575927228500, 1.519790314482481100,
+    1.519540997159388300,
+  1.519291623967116600, 1.519042194914835200, 1.518792710011714500,
+    1.518543169266927600,
+  1.518293572689648900, 1.518043920289055900, 1.517794212074327500,
+    1.517544448054644500,
+  1.517294628239190400, 1.517044752637150000, 1.516794821257710500,
+    1.516544834110061600,
+  1.516294791203394200, 1.516044692546901800, 1.515794538149779700,
+    1.515544328021225500,
+  1.515294062170438700, 1.515043740606620800, 1.514793363338975600,
+    1.514542930376708600,
+  1.514292441729027300, 1.514041897405141700, 1.513791297414263800,
+    1.513540641765606800,
+  1.513289930468387300, 1.513039163531823000, 1.512788340965133500,
+    1.512537462777541200,
+  1.512286528978270300, 1.512035539576546600, 1.511784494581598600,
+    1.511533394002656100,
+  1.511282237848951400, 1.511031026129719100, 1.510779758854195400,
+    1.510528436031618900,
+  1.510277057671229400, 1.510025623782270000, 1.509774134373984800,
+    1.509522589455620600,
+  1.509270989036425800, 1.509019333125651200, 1.508767621732549400,
+    1.508515854866375100,
+  1.508264032536385000, 1.508012154751837700, 1.507760221521994700,
+    1.507508232856118200,
+  1.507256188763473200, 1.507004089253327000, 1.506751934334948000,
+    1.506499724017607900,
+  1.506247458310579400, 1.505995137223137500, 1.505742760764559300,
+    1.505490328944124200,
+  1.505237841771113200, 1.504985299254809800, 1.504732701404498900,
+    1.504480048229468000,
+  1.504227339739006500, 1.503974575942405700, 1.503721756848958700,
+    1.503468882467961600,
+  1.503215952808711500, 1.502962967880507600, 1.502709927692651900,
+    1.502456832254447600,
+  1.502203681575200700, 1.501950475664218600, 1.501697214530810700,
+    1.501443898184289200,
+  1.501190526633967600, 1.500937099889161600, 1.500683617959188900,
+    1.500430080853369500,
+  1.500176488581024900, 1.499922841151479600, 1.499669138574058800,
+    1.499415380858090800,
+  1.499161568012905300, 1.498907700047834600, 1.498653776972212600,
+    1.498399798795375000,
+  1.498145765526660300, 1.497891677175408500, 1.497637533750961300,
+    1.497383335262663300,
+  1.497129081719860400, 1.496874773131900800, 1.496620409508134800,
+    1.496365990857914600,
+  1.496111517190594300, 1.495856988515530400, 1.495602404842080800,
+    1.495347766179606400,
+  1.495093072537469100, 1.494838323925033400, 1.494583520351665500,
+    1.494328661826734200,
+  1.494073748359609600, 1.493818779959664300, 1.493563756636272500,
+    1.493308678398810800,
+  1.493053545256657800, 1.492798357219194100, 1.492543114295801900,
+    1.492287816495866200,
+  1.492032463828773200, 1.491777056303911700, 1.491521593930672100,
+    1.491266076718446900,
+  1.491010504676631500, 1.490754877814621800, 1.490499196141816600,
+    1.490243459667616600,
+  1.489987668401424800, 1.489731822352645500, 1.489475921530685900,
+    1.489219965944954300,
+  1.488963955604861500, 1.488707890519820600, 1.488451770699245900,
+    1.488195596152554800,
+  1.487939366889165600, 1.487683082918499300, 1.487426744249978400,
+    1.487170350893028500,
+  1.486913902857075700, 1.486657400151549600, 1.486400842785880100,
+    1.486144230769501000,
+  1.485887564111846500, 1.485630842822354100, 1.485374066910462500,
+    1.485117236385612200,
+  1.484860351257246500, 1.484603411534810300, 1.484346417227750700,
+    1.484089368345516300,
+  1.483832264897558400, 1.483575106893329600, 1.483317894342285100,
+    1.483060627253882000,
+  1.482803305637578900, 1.482545929502837100, 1.482288498859119400,
+    1.482031013715890700,
+  1.481773474082618300, 1.481515879968770900, 1.481258231383819800,
+    1.481000528337237800,
+  1.480742770838499900, 1.480484958897083200, 1.480227092522466500,
+    1.479969171724131200,
+  1.479711196511560100, 1.479453166894238100, 1.479195082881652200,
+    1.478936944483291600,
+  1.478678751708647000, 1.478420504567211900, 1.478162203068481100,
+    1.477903847221951400,
+  1.477645437037121900, 1.477386972523493800, 1.477128453690569800,
+    1.476869880547855300,
+  1.476611253104856700, 1.476352571371083700, 1.476093835356046700,
+    1.475835045069259000,
+  1.475576200520235500, 1.475317301718493300, 1.475058348673551100,
+    1.474799341394929900,
+  1.474540279892153000, 1.474281164174744900, 1.474021994252233000,
+    1.473762770134145800,
+  1.473503491830014300, 1.473244159349371700, 1.472984772701752900,
+    1.472725331896694400,
+  1.472465836943735600, 1.472206287852416900, 1.471946684632281500,
+    1.471687027292874400,
+  1.471427315843742100, 1.471167550294433700, 1.470907730654499800,
+    1.470647856933493300,
+  1.470387929140969200, 1.470127947286484100, 1.469867911379596900,
+    1.469607821429868500,
+  1.469347677446861500, 1.469087479440140300, 1.468827227419272200,
+    1.468566921393825700,
+  1.468306561373371900, 1.468046147367482600, 1.467785679385733300,
+    1.467525157437700200,
+  1.467264581532962100, 1.467003951681099800, 1.466743267891695800,
+    1.466482530174334500,
+  1.466221738538602500, 1.465960892994088800, 1.465699993550383400,
+    1.465439040217079400,
+  1.465178033003770700, 1.464916971920054100, 1.464655856975527900,
+    1.464394688179792900,
+  1.464133465542451200, 1.463872189073107500, 1.463610858781367900,
+    1.463349474676840700,
+  1.463088036769136600, 1.462826545067867700, 1.462564999582648600,
+    1.462303400323095000,
+  1.462041747298825900, 1.461780040519460800, 1.461518279994622200,
+    1.461256465733934400,
+  1.460994597747023600, 1.460732676043517800, 1.460470700633046800,
+    1.460208671525243400,
+  1.459946588729741100, 1.459684452256176300, 1.459422262114186800,
+    1.459160018313412400,
+  1.458897720863495500, 1.458635369774079500, 1.458372965054810700,
+    1.458110506715337000,
+  1.457847994765308200, 1.457585429214375700, 1.457322810072193800,
+    1.457060137348418000,
+  1.456797411052706200, 1.456534631194717800, 1.456271797784114900,
+    1.456008910830560500,
+  1.455745970343720800, 1.455482976333263100, 1.455219928808857200,
+    1.454956827780174100,
+  1.454693673256887600, 1.454430465248673300, 1.454167203765208000,
+    1.453903888816171900,
+  1.453640520411245900, 1.453377098560113100, 1.453113623272459100,
+    1.452850094557971000,
+  1.452586512426338000, 1.452322876887251400, 1.452059187950404100,
+    1.451795445625491300,
+  1.451531649922210200, 1.451267800850259500, 1.451003898419340500,
+    1.450739942639155800,
+  1.450475933519410400, 1.450211871069811300, 1.449947755300067500,
+    1.449683586219889400,
+  1.449419363838989800, 1.449155088167083600, 1.448890759213887100,
+    1.448626376989119400,
+  1.448361941502500900, 1.448097452763754000, 1.447832910782603100,
+    1.447568315568775100,
+  1.447303667131997900, 1.447038965482002200, 1.446774210628520200,
+    1.446509402581286400,
+  1.446244541350036700, 1.445979626944509300, 1.445714659374444500,
+    1.445449638649584500,
+  1.445184564779673500, 1.444919437774456700, 1.444654257643682900,
+    1.444389024397101600,
+  1.444123738044464900, 1.443858398595526400, 1.443593006060042100,
+    1.443327560447769600,
+  1.443062061768468400, 1.442796510031900500, 1.442530905247829200,
+    1.442265247426020200,
+  1.441999536576240800, 1.441733772708260600, 1.441467955831850800,
+    1.441202085956784900,
+  1.440936163092837900, 1.440670187249787600, 1.440404158437412500,
+    1.440138076665494100,
+  1.439871941943815300, 1.439605754282161400, 1.439339513690319100,
+    1.439073220178077400,
+  1.438806873755226900, 1.438540474431560600, 1.438274022216873500,
+    1.438007517120961900,
+  1.437740959153624500, 1.437474348324662100, 1.437207684643876800,
+    1.436940968121073600,
+  1.436674198766058500, 1.436407376588640000, 1.436140501598628400,
+    1.435873573805835900,
+  1.435606593220076600, 1.435339559851166500, 1.435072473708924000,
+    1.434805334803169100,
+  1.434538143143723200, 1.434270898740410700, 1.434003601603057300,
+    1.433736251741490700,
+  1.433468849165540500, 1.433201393885038500, 1.432933885909818000,
+    1.432666325249714700,
+  1.432398711914566200, 1.432131045914211600, 1.431863327258492400,
+    1.431595555957251700,
+  1.431327732020334800, 1.431059855457588600, 1.430791926278862400,
+    1.430523944494007400,
+  1.430255910112876000, 1.429987823145323100, 1.429719683601205800,
+    1.429451491490382900,
+  1.429183246822714800, 1.428914949608064200, 1.428646599856295400,
+    1.428378197577275100,
+  1.428109742780871800, 1.427841235476955400, 1.427572675675398600,
+    1.427304063386075200,
+  1.427035398618861500, 1.426766681383635500, 1.426497911690277000,
+    1.426229089548668200,
+  1.425960214968693000, 1.425691287960236600, 1.425422308533187200,
+    1.425153276697434000,
+  1.424884192462868800, 1.424615055839385300, 1.424345866836878200,
+    1.424076625465245500,
+  1.423807331734385800, 1.423537985654200800, 1.423268587234593400,
+    1.422999136485468600,
+  1.422729633416733200, 1.422460078038296300, 1.422190470360068300,
+    1.421920810391962500,
+  1.421651098143893000, 1.421381333625776600, 1.421111516847531700,
+    1.420841647819078600,
+  1.420571726550339700, 1.420301753051239400, 1.420031727331703800,
+    1.419761649401660500,
+  1.419491519271040000, 1.419221336949774100, 1.418951102447796800,
+    1.418680815775043500,
+  1.418410476941452100, 1.418140085956961900, 1.417869642831514700,
+    1.417599147575054000,
+  1.417328600197524900, 1.417058000708874700, 1.416787349119052600,
+    1.416516645438009600,
+  1.416245889675698900, 1.415975081842075300, 1.415704221947095700,
+    1.415433310000718600,
+  1.415162346012905000, 1.414891329993617200, 1.414620261952819600,
+    1.414349141900479000,
+  1.414077969846563500, 1.413806745801043500, 1.413535469773890700,
+    1.413264141775079300,
+  1.412992761814585400, 1.412721329902386900, 1.412449846048463600,
+    1.412178310262796900,
+  1.411906722555370500, 1.411635082936170100, 1.411363391415182900,
+    1.411091648002398500,
+  1.410819852707807700, 1.410548005541404100, 1.410276106513182400,
+    1.410004155633139500,
+  1.409732152911274500, 1.409460098357588200, 1.409187991982083100,
+    1.408915833794763800,
+  1.408643623805636800, 1.408371362024710500, 1.408099048461995300,
+    1.407826683127503000,
+  1.407554266031248100, 1.407281797183246500, 1.407009276593515800,
+    1.406736704272076400,
+  1.406464080228949600, 1.406191404474159000, 1.405918677017730100,
+    1.405645897869690400,
+  1.405373067040069300, 1.405100184538898000, 1.404827250376209400,
+    1.404554264562038400,
+  1.404281227106422400, 1.404008138019399800, 1.403734997311011600,
+    1.403461804991300100,
+  1.403188561070310100, 1.402915265558087700, 1.402641918464681400,
+    1.402368519800141200,
+  1.402095069574519800, 1.401821567797870300, 1.401548014480249000,
+    1.401274409631713600,
+  1.401000753262323900, 1.400727045382141400, 1.400453286001229800,
+    1.400179475129653700,
+  1.399905612777481200, 1.399631698954780800, 1.399357733671623900,
+    1.399083716938083600,
+  1.398809648764234100, 1.398535529160152400, 1.398261358135917300,
+    1.397987135701609200,
+  1.397712861867310300, 1.397438536643105000, 1.397164160039079200,
+    1.396889732065321300,
+  1.396615252731921100, 1.396340722048970300, 1.396066140026562800,
+    1.395791506674794100,
+  1.395516822003761700, 1.395242086023564800, 1.394967298744304900,
+    1.394692460176085300,
+  1.394417570329010700, 1.394142629213188000, 1.393867636838725900,
+    1.393592593215735600,
+  1.393317498354329300, 1.393042352264621600, 1.392767154956728400,
+    1.392491906440768600,
+  1.392216606726861800, 1.391941255825130100, 1.391665853745697400,
+    1.391390400498689700,
+  1.391114896094234100, 1.390839340542460600, 1.390563733853500200,
+    1.390288076037486500,
+  1.390012367104554600, 1.389736607064841100, 1.389460795928485500,
+    1.389184933705628300,
+  1.388909020406412100, 1.388633056040981600, 1.388357040619483200,
+    1.388080974152065200,
+  1.387804856648877600, 1.387528688120072600, 1.387252468575804100,
+    1.386976198026228100,
+  1.386699876481501900, 1.386423503951785200, 1.386147080447239600,
+    1.385870605978028100,
+  1.385594080554316100, 1.385317504186270900, 1.385040876884061000,
+    1.384764198657857200,
+  1.384487469517832200, 1.384210689474160600, 1.383933858537019100,
+    1.383656976716585600,
+  1.383380044023040400, 1.383103060466565300, 1.382826026057344600,
+    1.382548940805563800,
+  1.382271804721410600, 1.381994617815074400, 1.381717380096746800,
+    1.381440091576620700,
+  1.381162752264891500, 1.380885362171756300, 1.380607921307413400,
+    1.380330429682064000,
+  1.380052887305910400, 1.379775294189157000, 1.379497650342010400,
+    1.379219955774678700,
+  1.378942210497371600, 1.378664414520301500, 1.378386567853681700,
+    1.378108670507728300,
+  1.377830722492658500, 1.377552723818691500, 1.377274674496048700,
+    1.376996574534953300,
+  1.376718423945630000, 1.376440222738305700, 1.376161970923209400,
+    1.375883668510570900,
+  1.375605315510623200, 1.375326911933600200, 1.375048457789738400,
+    1.374769953089275400,
+  1.374491397842451100, 1.374212792059507100, 1.373934135750687100,
+    1.373655428926236400,
+  1.373376671596402400, 1.373097863771434200, 1.372819005461582500,
+    1.372540096677100200,
+  1.372261137428242300, 1.371982127725264800, 1.371703067578426700,
+    1.371423956997988000,
+  1.371144795994210500, 1.370865584577358300, 1.370586322757697500,
+    1.370307010545495500,
+  1.370027647951022100, 1.369748234984548000, 1.369468771656347200,
+    1.369189257976694200,
+  1.368909693955866000, 1.368630079604142000, 1.368350414931802000,
+    1.368070699949128800,
+  1.367790934666406600, 1.367511119093921800, 1.367231253241962200,
+    1.366951337120818000,
+  1.366671370740780500, 1.366391354112143500, 1.366111287245202400,
+    1.365831170150254300,
+  1.365551002837598600, 1.365270785317536100, 1.364990517600369400,
+    1.364710199696403300,
+  1.364429831615944200, 1.364149413369300600, 1.363868944966782900,
+    1.363588426418702600,
+  1.363307857735373900, 1.363027238927112300, 1.362746570004235400,
+    1.362465850977062900,
+  1.362185081855915600, 1.361904262651116900, 1.361623393372991300,
+    1.361342474031866000,
+  1.361061504638069400, 1.360780485201932300, 1.360499415733786400,
+    1.360218296243966200,
+  1.359937126742807300, 1.359655907240648000, 1.359374637747827700,
+    1.359093318274687800,
+  1.358811948831571500, 1.358530529428824400, 1.358249060076792900,
+    1.357967540785826300,
+  1.357685971566275200, 1.357404352428492000, 1.357122683382830900,
+    1.356840964439648200,
+  1.356559195609301700, 1.356277376902151900, 1.355995508328559500,
+    1.355713589898888800,
+  1.355431621623504700, 1.355149603512774400, 1.354867535577067200,
+    1.354585417826753800,
+  1.354303250272206500, 1.354021032923800300, 1.353738765791911100,
+    1.353456448886917200,
+  1.353174082219199100, 1.352891665799137900, 1.352609199637117500,
+    1.352326683743523300,
+  1.352044118128742600, 1.351761502803164900, 1.351478837777180700,
+    1.351196123061183100,
+  1.350913358665566400, 1.350630544600727200, 1.350347680877063800,
+    1.350064767504976400,
+  1.349781804494866600, 1.349498791857138400, 1.349215729602197400,
+    1.348932617740450600,
+  1.348649456282307700, 1.348366245238179500, 1.348082984618478800,
+    1.347799674433620500,
+  1.347516314694020800, 1.347232905410098200, 1.346949446592273100,
+    1.346665938250967100,
+  1.346382380396604000, 1.346098773039609700, 1.345815116190411300,
+    1.345531409859438200,
+  1.345247654057121700, 1.344963848793894200, 1.344679994080190800,
+    1.344396089926448000,
+  1.344112136343103900, 1.343828133340598800, 1.343544080929374800,
+    1.343259979119875600,
+  1.342975827922546600, 1.342691627347835500, 1.342407377406191500,
+    1.342123078108065700,
+  1.341838729463910900, 1.341554331484181600, 1.341269884179334700,
+    1.340985387559828100,
+  1.340700841636122400, 1.340416246418678800, 1.340131601917961900,
+    1.339846908144436600,
+  1.339562165108570700, 1.339277372820833400, 1.338992531291695500,
+    1.338707640531629800,
+  1.338422700551110900, 1.338137711360615200, 1.337852672970621300,
+    1.337567585391608900,
+  1.337282448634059800, 1.336997262708457900, 1.336712027625288600,
+    1.336426743395039000,
+  1.336141410028198500, 1.335856027535258000, 1.335570595926709700,
+    1.335285115213048500,
+  1.334999585404770700, 1.334714006512374400, 1.334428378546359500,
+    1.334142701517227600,
+  1.333856975435482300, 1.333571200311629100, 1.333285376156174700,
+    1.332999502979628700,
+  1.332713580792501500, 1.332427609605305400, 1.332141589428554900,
+    1.331855520272766200,
+  1.331569402148457400, 1.331283235066148100, 1.330997019036359800,
+    1.330710754069615700,
+  1.330424440176441300, 1.330138077367363200, 1.329851665652910500,
+    1.329565205043613800,
+  1.329278695550004700, 1.328992137182618100, 1.328705529951989400,
+    1.328418873868656900,
+  1.328132168943159800, 1.327845415186039000, 1.327558612607838500,
+    1.327271761219102500,
+  1.326984861030378000, 1.326697912052213500, 1.326410914295159400,
+    1.326123867769767500,
+  1.325836772486591800, 1.325549628456188100, 1.325262435689113600,
+    1.324975194195928000,
+  1.324687903987191900, 1.324400565073468300, 1.324113177465321900,
+    1.323825741173318700,
+  1.323538256208027800, 1.323250722580018500, 1.322963140299862500,
+    1.322675509378133900,
+  1.322387829825407700, 1.322100101652261100, 1.321812324869273500,
+    1.321524499487024800,
+  1.321236625516098100, 1.320948702967077400, 1.320660731850549000,
+    1.320372712177100700,
+  1.320084643957322400, 1.319796527201805300, 1.319508361921142500,
+    1.319220148125929100,
+  1.318931885826762000, 1.318643575034239800, 1.318355215758962900,
+    1.318066808011533200,
+  1.317778351802554800, 1.317489847142633300, 1.317201294042376300,
+    1.316912692512393300,
+  1.316624042563294900, 1.316335344205694200, 1.316046597450205800,
+    1.315757802307445900,
+  1.315468958788033000, 1.315180066902586800, 1.314891126661728900,
+    1.314602138076083300,
+  1.314313101156274800, 1.314024015912930600, 1.313734882356679900,
+    1.313445700498152800,
+  1.313156470347981900, 1.312867191916801100, 1.312577865215246900,
+    1.312288490253956900,
+  1.311999067043570200, 1.311709595594728000, 1.311420075918073900,
+    1.311130508024252400,
+  1.310840891923910100, 1.310551227627695400, 1.310261515146258200,
+    1.309971754490250700,
+  1.309681945670326400, 1.309392088697140900, 1.309102183581351200,
+    1.308812230333616500,
+  1.308522228964597500, 1.308232179484956500, 1.307942081905358000,
+    1.307651936236467800,
+  1.307361742488954300, 1.307071500673486800, 1.306781210800736200,
+    1.306490872881376200,
+  1.306200486926081700, 1.305910052945529200, 1.305619570950396800,
+    1.305329040951365100,
+  1.305038462959116100, 1.304747836984333300, 1.304457163037702200,
+    1.304166441129910300,
+  1.303875671271646400, 1.303584853473601200, 1.303293987746467300,
+    1.303003074100939100,
+  1.302712112547712800, 1.302421103097485900, 1.302130045760958100,
+    1.301838940548830600,
+  1.301547787471806900, 1.301256586540591600, 1.300965337765891600,
+    1.300674041158414800,
+  1.300382696728871400, 1.300091304487973800, 1.299799864446435200,
+    1.299508376614971500,
+  1.299216841004299200, 1.298925257625137800, 1.298633626488207500,
+    1.298341947604231300,
+  1.298050220983932900, 1.297758446638038700, 1.297466624577275900,
+    1.297174754812374400,
+  1.296882837354065100, 1.296590872213081200, 1.296298859400157700,
+    1.296006798926030200,
+  1.295714690801437600, 1.295422535037119800, 1.295130331643818500,
+    1.294838080632277000,
+  1.294545782013240900, 1.294253435797456900, 1.293961041995673700,
+    1.293668600618642000,
+  1.293376111677113900, 1.293083575181843500, 1.292790991143586200,
+    1.292498359573099700,
+  1.292205680481143500, 1.291912953878477900, 1.291620179775866400,
+    1.291327358184073200,
+  1.291034489113864100, 1.290741572576007400, 1.290448608581273000,
+    1.290155597140431700,
+  1.289862538264257700, 1.289569431963524900, 1.289276278249010600,
+    1.288983077131493000,
+  1.288689828621752300, 1.288396532730570400, 1.288103189468731400,
+    1.287809798847019800,
+  1.287516360876223500, 1.287222875567130900, 1.286929342930532800,
+    1.286635762977221800,
+  1.286342135717991600, 1.286048461163638000, 1.285754739324958900,
+    1.285460970212753500,
+  1.285167153837822900, 1.284873290210969900, 1.284579379342998700,
+    1.284285421244715900,
+  1.283991415926929400, 1.283697363400448900, 1.283403263676086100,
+    1.283109116764654000,
+  1.282814922676967400, 1.282520681423843000, 1.282226393016099500,
+    1.281932057464557000,
+  1.281637674780037100, 1.281343244973363700, 1.281048768055361900,
+    1.280754244036858900,
+  1.280459672928683500, 1.280165054741666300, 1.279870389486639400,
+    1.279575677174437100,
+  1.279280917815894600, 1.278986111421849900, 1.278691258003142000,
+    1.278396357570611900,
+  1.278101410135101800, 1.277806415707456700, 1.277511374298522200,
+    1.277216285919146500,
+  1.276921150580179200, 1.276625968292471000, 1.276330739066875400,
+    1.276035462914247000,
+  1.275740139845442400, 1.275444769871319600, 1.275149353002738700,
+    1.274853889250561200,
+  1.274558378625650200, 1.274262821138871300, 1.273967216801090900,
+    1.273671565623178100,
+  1.273375867616002300, 1.273080122790436000, 1.272784331157352800,
+    1.272488492727628100,
+  1.272192607512139300, 1.271896675521764900, 1.271600696767385400,
+    1.271304671259883200,
+  1.271008599010142500, 1.270712480029048800, 1.270416314327489800,
+    1.270120101916354600,
+  1.269823842806533800, 1.269527537008920300, 1.269231184534408200,
+    1.268934785393893700,
+  1.268638339598274500, 1.268341847158450200, 1.268045308085321800,
+    1.267748722389792100,
+  1.267452090082765900, 1.267155411175149500, 1.266858685677851000,
+    1.266561913601780100,
+  1.266265094957848000, 1.265968229756968100, 1.265671318010055400,
+    1.265374359728026500,
+  1.265077354921799300, 1.264780303602294200, 1.264483205780432700,
+    1.264186061467138500,
+  1.263888870673336400, 1.263591633409954000, 1.263294349687918800,
+    1.262997019518161700,
+  1.262699642911614600, 1.262402219879211300, 1.262104750431887000,
+    1.261807234580578900,
+  1.261509672336225600, 1.261212063709767900, 1.260914408712147800,
+    1.260616707354309500,
+  1.260318959647198400, 1.260021165601761900, 1.259723325228949000,
+    1.259425438539710300,
+  1.259127505544998600, 1.258829526255768000, 1.258531500682973800,
+    1.258233428837574300,
+  1.257935310730528000, 1.257637146372796400, 1.257338935775342200,
+    1.257040678949129500,
+  1.256742375905124400, 1.256444026654294400, 1.256145631207609400,
+    1.255847189576040100,
+  1.255548701770560000, 1.255250167802143000, 1.254951587681765600,
+    1.254652961420405600,
+  1.254354289029042900, 1.254055570518658500, 1.253756805900235700,
+    1.253457995184759300,
+  1.253159138383215200, 1.252860235506592100, 1.252561286565879300,
+    1.252262291572068900,
+  1.251963250536153500, 1.251664163469128300, 1.251365030381989700,
+    1.251065851285736200,
+  1.250766626191367500, 1.250467355109885500, 1.250168038052293500,
+    1.249868675029596200,
+  1.249569266052800800, 1.249269811132915200, 1.248970310280950200,
+    1.248670763507917100,
+  1.248371170824829300, 1.248071532242702100, 1.247771847772552300,
+    1.247472117425398700,
+  1.247172341212261500, 1.246872519144162300, 1.246572651232124700,
+    1.246272737487174300,
+  1.245972777920338000, 1.245672772542644400, 1.245372721365123600,
+    1.245072624398807900,
+  1.244772481654731000, 1.244472293143928300, 1.244172058877436800,
+    1.243871778866295400,
+  1.243571453121544000, 1.243271081654225400, 1.242970664475383100,
+    1.242670201596062700,
+  1.242369693027311200, 1.242069138780177400, 1.241768538865712000,
+    1.241467893294967200,
+  1.241167202078996800, 1.240866465228856100, 1.240565682755603100,
+    1.240264854670295900,
+  1.239963980983995300, 1.239663061707763700, 1.239362096852665300,
+    1.239061086429765300,
+  1.238760030450130900, 1.238458928924831600, 1.238157781864937400,
+    1.237856589281521000,
+  1.237555351185656500, 1.237254067588419400, 1.236952738500886900,
+    1.236651363934138300,
+  1.236349943899254000, 1.236048478407316500, 1.235746967469409900,
+    1.235445411096619500,
+  1.235143809300033300, 1.234842162090739700, 1.234540469479829900,
+    1.234238731478396000,
+  1.233936948097532400, 1.233635119348334400, 1.233333245241899200,
+    1.233031325789326400,
+  1.232729361001716500, 1.232427350890172000, 1.232125295465796600,
+    1.231823194739696300,
+  1.231521048722978200, 1.231218857426751700, 1.230916620862127400,
+    1.230614339040217800,
+  1.230312011972136500, 1.230009639668999500, 1.229707222141924100,
+    1.229404759402029400,
+  1.229102251460436400, 1.228799698328266700, 1.228497100016644900,
+    1.228194456536696500,
+  1.227891767899548700, 1.227589034116330700, 1.227286255198173100,
+    1.226983431156208200,
+  1.226680562001569900, 1.226377647745394000, 1.226074688398817600,
+    1.225771683972980200,
+  1.225468634479021500, 1.225165539928084300, 1.224862400331312400,
+    1.224559215699851500,
+  1.224255986044848500, 1.223952711377453100, 1.223649391708814700,
+    1.223346027050086400,
+  1.223042617412421600, 1.222739162806975900, 1.222435663244906700,
+    1.222132118737372400,
+  1.221828529295533800, 1.221524894930552800, 1.221221215653593100,
+    1.220917491475820500,
+  1.220613722408401900, 1.220309908462505800, 1.220006049649302800,
+    1.219702145979964600,
+  1.219398197465665400, 1.219094204117580300, 1.218790165946886100,
+    1.218486082964761500,
+  1.218181955182386500, 1.217877782610943700, 1.217573565261616000,
+    1.217269303145589000,
+  1.216964996274049400, 1.216660644658185600, 1.216356248309187600,
+    1.216051807238247800,
+  1.215747321456559300, 1.215442790975316700, 1.215138215805717300,
+    1.214833595958959300,
+  1.214528931446242600, 1.214224222278769100, 1.213919468467741900,
+    1.213614670024366000,
+  1.213309826959847700, 1.213004939285395400, 1.212700007012219100,
+    1.212395030151530300,
+  1.212090008714541600, 1.211784942712468300, 1.211479832156526800,
+    1.211174677057934800,
+  1.210869477427912300, 1.210564233277680500, 1.210258944618462200,
+    1.209953611461482200,
+  1.209648233817966600, 1.209342811699143600, 1.209037345116242400,
+    1.208731834080493800,
+  1.208426278603131200, 1.208120678695388600, 1.207815034368502100,
+    1.207509345633709600,
+  1.207203612502250300, 1.206897834985365000, 1.206592013094296200,
+    1.206286146840288300,
+  1.205980236234587100, 1.205674281288440000, 1.205368282013096200,
+    1.205062238419806200,
+  1.204756150519822300, 1.204450018324398900, 1.204143841844791200,
+    1.203837621092256800,
+  1.203531356078054100, 1.203225046813444000, 1.202918693309688300,
+    1.202612295578050900,
+  1.202305853629797500, 1.201999367476194400, 1.201692837128510700,
+    1.201386262598016500,
+  1.201079643895983700, 1.200772981033685800, 1.200466274022397900,
+    1.200159522873396800,
+  1.199852727597960700, 1.199545888207369700, 1.199239004712905300,
+    1.198932077125851100,
+  1.198625105457491700, 1.198318089719113200, 1.198011029922004400,
+    1.197703926077454200,
+  1.197396778196754700, 1.197089586291198500, 1.196782350372080300,
+    1.196475070450696100,
+  1.196167746538343600, 1.195860378646322700, 1.195552966785933900,
+    1.195245510968480300,
+  1.194938011205265900, 1.194630467507596500, 1.194322879886780000,
+    1.194015248354125100,
+  1.193707572920943000, 1.193399853598545500, 1.193092090398246900,
+    1.192784283331362700,
+  1.192476432409210100, 1.192168537643107900, 1.191860599044376500,
+    1.191552616624337800,
+  1.191244590394315400, 1.190936520365635000, 1.190628406549622900,
+    1.190320248957608100,
+  1.190012047600920200, 1.189703802490891000, 1.189395513638853900,
+    1.189087181056143900,
+  1.188778804754097300, 1.188470384744052100, 1.188161921037348400,
+    1.187853413645327100,
+  1.187544862579331500, 1.187236267850706000, 1.186927629470796900,
+    1.186618947450951600,
+  1.186310221802519900, 1.186001452536852300, 1.185692639665301600,
+    1.185383783199222000,
+  1.185074883149969100, 1.184765939528900500, 1.184456952347374900,
+    1.184147921616753200,
+  1.183838847348397400, 1.183529729553671500, 1.183220568243940300,
+    1.182911363430571200,
+  1.182602115124932900, 1.182292823338395100, 1.181983488082330300,
+    1.181674109368111300,
+  1.181364687207113100, 1.181055221610712400, 1.180745712590287400,
+    1.180436160157217800,
+  1.180126564322885100, 1.179816925098671900, 1.179507242495962900,
+    1.179197516526144600,
+  1.178887747200604300, 1.178577934530731700, 1.178268078527917200,
+    1.177958179203553800,
+  1.177648236569035300, 1.177338250635757700, 1.177028221415118200,
+    1.176718148918515700,
+  1.176408033157350300, 1.176097874143024600, 1.175787671886942000,
+    1.175477426400507700,
+  1.175167137695128900, 1.174856805782213500, 1.174546430673171900,
+    1.174236012379415600,
+  1.173925550912357800, 1.173615046283413200, 1.173304498503998400,
+    1.172993907585530900,
+  1.172683273539430800, 1.172372596377118800, 1.172061876110017700,
+    1.171751112749551900,
+  1.171440306307147200, 1.171129456794231200, 1.170818564222232800,
+    1.170507628602582800,
+  1.170196649946713100, 1.169885628266057900, 1.169574563572052300,
+    1.169263455876133200,
+  1.168952305189739200, 1.168641111524310700, 1.168329874891289400,
+    1.168018595302118000,
+  1.167707272768241800, 1.167395907301107100, 1.167084498912162300,
+    1.166773047612856400,
+  1.166461553414641000, 1.166150016328968600, 1.165838436367293800,
+    1.165526813541072100,
+  1.165215147861761400, 1.164903439340820900, 1.164591687989710500,
+    1.164279893819892800,
+  1.163968056842831700, 1.163656177069992500, 1.163344254512841800,
+    1.163032289182848800,
+  1.162720281091483000, 1.162408230250216100, 1.162096136670521600,
+    1.161784000363874000,
+  1.161471821341749900, 1.161159599615627000, 1.160847335196984800,
+    1.160535028097304600,
+  1.160222678328068700, 1.159910285900761700, 1.159597850826869200,
+    1.159285373117878500,
+  1.158972852785278500, 1.158660289840559800, 1.158347684295214300,
+    1.158035036160735900,
+  1.157722345448619400, 1.157409612170361600, 1.157096836337461000,
+    1.156784017961417500,
+  1.156471157053732300, 1.156158253625908700, 1.155845307689450800,
+    1.155532319255865300,
+  1.155219288336659400, 1.154906214943342700, 1.154593099087426000,
+    1.154279940780421400,
+  1.153966740033842900, 1.153653496859206000, 1.153340211268028000,
+    1.153026883271827300,
+  1.152713512882124400, 1.152400100110440700, 1.152086644968299400,
+    1.151773147467225300,
+  1.151459607618745300, 1.151146025434387000, 1.150832400925680100,
+    1.150518734104155400,
+  1.150205024981345800, 1.149891273568785400, 1.149577479878009800,
+    1.149263643920556800,
+  1.148949765707964600, 1.148635845251773800, 1.148321882563526400,
+    1.148007877654766200,
+  1.147693830537038100, 1.147379741221888500, 1.147065609720865600,
+    1.146751436045519300,
+  1.146437220207400700, 1.146122962218062600, 1.145808662089060000,
+    1.145494319831947800,
+  1.145179935458284100, 1.144865508979627800, 1.144551040407539400,
+    1.144236529753581000,
+  1.143921977029316500, 1.143607382246310600, 1.143292745416130600,
+    1.142978066550344400,
+  1.142663345660522000, 1.142348582758234900, 1.142033777855056000,
+    1.141718930962559500,
+  1.141404042092321500, 1.141089111255919800, 1.140774138464933700,
+    1.140459123730943200,
+  1.140144067065530700, 1.139828968480280300, 1.139513827986776900,
+    1.139198645596607400,
+  1.138883421321360600, 1.138568155172625700, 1.138252847161994400,
+    1.137937497301059600,
+  1.137622105601416000, 1.137306672074659900, 1.136991196732388200,
+    1.136675679586200500,
+  1.136360120647697200, 1.136044519928480800, 1.135728877440154800,
+    1.135413193194324800,
+  1.135097467202597100, 1.134781699476580300, 1.134465890027884300,
+    1.134150038868120500,
+  1.133834146008902100, 1.133518211461843200, 1.133202235238559800,
+    1.132886217350669500,
+  1.132570157809791500, 1.132254056627546300, 1.131937913815556300,
+    1.131621729385444900,
+  1.131305503348837300, 1.130989235717360100, 1.130672926502642100,
+    1.130356575716312500,
+  1.130040183370002900, 1.129723749475346000, 1.129407274043976200,
+    1.129090757087529500,
+  1.128774198617643200, 1.128457598645956600, 1.128140957184109700,
+    1.127824274243744500,
+  1.127507549836505000, 1.127190783974035800, 1.126873976667983800,
+    1.126557127929996800,
+  1.126240237771724700, 1.125923306204818400, 1.125606333240930700,
+    1.125289318891715900,
+  1.124972263168829500, 1.124655166083928800, 1.124338027648672500,
+    1.124020847874721100,
+  1.123703626773736100, 1.123386364357381200, 1.123069060637320600,
+    1.122751715625221400,
+  1.122434329332750800, 1.122116901771578400, 1.121799432953375600,
+    1.121481922889814300,
+  1.121164371592568300, 1.120846779073313400, 1.120529145343726500,
+    1.120211470415486200,
+  1.119893754300272300, 1.119575997009766300, 1.119258198555651300,
+    1.118940358949611900,
+  1.118622478203333800, 1.118304556328505200, 1.117986593336814700,
+    1.117668589239953200,
+  1.117350544049612300, 1.117032457777486200, 1.116714330435269600,
+    1.116396162034659600,
+  1.116077952587353600, 1.115759702105052000, 1.115441410599455500,
+    1.115123078082267000,
+  1.114804704565190500, 1.114486290059931900, 1.114167834578198200,
+    1.113849338131698300,
+  1.113530800732142100, 1.113212222391241500, 1.112893603120710000,
+    1.112574942932261600,
+  1.112256241837613000, 1.111937499848481900, 1.111618716976587700,
+    1.111299893233650600,
+  1.110981028631393700, 1.110662123181539900, 1.110343176895814500,
+    1.110024189785944900,
+  1.109705161863658600, 1.109386093140686000, 1.109066983628758100,
+    1.108747833339607200,
+  1.108428642284968100, 1.108109410476576300, 1.107790137926169200,
+    1.107470824645485600,
+  1.107151470646265300, 1.106832075940250600, 1.106512640539184100,
+    1.106193164454811100,
+  1.105873647698877300, 1.105554090283131100, 1.105234492219321100,
+    1.104914853519198400,
+  1.104595174194514800, 1.104275454257024300, 1.103955693718482200,
+    1.103635892590644900,
+  1.103316050885270600, 1.102996168614119000, 1.102676245788951400,
+    1.102356282421530300,
+  1.102036278523620000, 1.101716234106985700, 1.101396149183395000,
+    1.101076023764616400,
+  1.100755857862419700, 1.100435651488577100, 1.100115404654861100,
+    1.099795117373046200,
+  1.099474789654909100, 1.099154421512226600, 1.098834012956778200,
+    1.098513564000344300,
+  1.098193074654706800, 1.097872544931649100, 1.097551974842956500,
+    1.097231364400415000,
+  1.096910713615813200, 1.096590022500939700, 1.096269291067585700,
+    1.095948519327543800,
+  1.095627707292607700, 1.095306854974572800, 1.094985962385235800,
+    1.094665029536395100,
+  1.094344056439850600, 1.094023043107403200, 1.093701989550856000,
+    1.093380895782013000,
+  1.093059761812680100, 1.092738587654664300, 1.092417373319774200,
+    1.092096118819820200,
+  1.091774824166613600, 1.091453489371968100, 1.091132114447697300,
+    1.090810699405617900,
+  1.090489244257547300, 1.090167749015304300, 1.089846213690709900,
+    1.089524638295585400,
+  1.089203022841754400, 1.088881367341041800, 1.088559671805274100,
+    1.088237936246279100,
+  1.087916160675885800, 1.087594345105925300, 1.087272489548229700,
+    1.086950594014632700,
+  1.086628658516969500, 1.086306683067076900, 1.085984667676792600,
+    1.085662612357956500,
+  1.085340517122409800, 1.085018381981994500, 1.084696206948555300,
+    1.084373992033937000,
+  1.084051737249986900, 1.083729442608553300, 1.083407108121486000,
+    1.083084733800636200,
+  1.082762319657857100, 1.082439865705002500, 1.082117371953928300,
+    1.081794838416491700,
+  1.081472265104551200, 1.081149652029967000, 1.080826999204601100,
+    1.080504306640315500,
+  1.080181574348975500, 1.079858802342446900, 1.079535990632596800,
+    1.079213139231294500,
+  1.078890248150409700, 1.078567317401815100, 1.078244346997383300,
+    1.077921336948988600,
+  1.077598287268508400, 1.077275197967819000, 1.076952069058800400,
+    1.076628900553332700,
+  1.076305692463297900, 1.075982444800579700, 1.075659157577062200,
+    1.075335830804633000,
+  1.075012464495178800, 1.074689058660589700, 1.074365613312755900,
+    1.074042128463569500,
+  1.073718604124924500, 1.073395040308715400, 1.073071437026839500,
+    1.072747794291194300,
+  1.072424112113678600, 1.072100390506194500, 1.071776629480643500,
+    1.071452829048929800,
+  1.071128989222958500, 1.070805110014635900, 1.070481191435870500,
+    1.070157233498571600,
+  1.069833236214650800, 1.069509199596019800, 1.069185123654592600,
+    1.068861008402285200,
+  1.068536853851013600, 1.068212660012696700, 1.067888426899253500,
+    1.067564154522606000,
+  1.067239842894676100, 1.066915492027387600, 1.066591101932666800,
+    1.066266672622439700,
+  1.065942204108635300, 1.065617696403183400, 1.065293149518014500,
+    1.064968563465062100,
+  1.064643938256259400, 1.064319273903543000, 1.063994570418849400,
+    1.063669827814116300,
+  1.063345046101285000, 1.063020225292295300, 1.062695365399091200,
+    1.062370466433616400,
+  1.062045528407815900, 1.061720551333637600, 1.061395535223029500,
+    1.061070480087941800,
+  1.060745385940325500, 1.060420252792134000, 1.060095080655320900,
+    1.059769869541841800,
+  1.059444619463654400, 1.059119330432716700, 1.058794002460989000,
+    1.058468635560432500,
+  1.058143229743009600, 1.057817785020685100, 1.057492301405424500,
+    1.057166778909195000,
+  1.056841217543965200, 1.056515617321704500, 1.056189978254385100,
+    1.055864300353978900,
+  1.055538583632461100, 1.055212828101807200, 1.054887033773993300,
+    1.054561200660999200,
+  1.054235328774803900, 1.053909418127389400, 1.053583468730738200,
+    1.053257480596834700,
+  1.052931453737664600, 1.052605388165214700, 1.052279283891473600,
+    1.051953140928431100,
+  1.051626959288079100, 1.051300738982409800, 1.050974480023417500,
+    1.050648182423098000,
+  1.050321846193448000, 1.049995471346466300, 1.049669057894152800,
+    1.049342605848508200,
+  1.049016115221536000, 1.048689586025239700, 1.048363018271625300,
+    1.048036411972699500,
+  1.047709767140470500, 1.047383083786948700, 1.047056361924144400,
+    1.046729601564071200,
+  1.046402802718742400, 1.046075965400174300, 1.045749089620383200,
+    1.045422175391386800,
+  1.045095222725206200, 1.044768231633861100, 1.044441202129375200,
+    1.044114134223771900,
+  1.043787027929076000, 1.043459883257315400, 1.043132700220517300,
+    1.042805478830712200,
+  1.042478219099930400, 1.042150921040204200, 1.041823584663568200,
+    1.041496209982056600,
+  1.041168797007707000, 1.040841345752557200, 1.040513856228645800,
+    1.040186328448014800,
+  1.039858762422705600, 1.039531158164762400, 1.039203515686230000,
+    1.038875834999155100,
+  1.038548116115585800, 1.038220359047570500, 1.037892563807160800,
+    1.037564730406408200,
+  1.037236858857366600, 1.036908949172090900, 1.036581001362636600,
+    1.036253015441062700,
+  1.035924991419427100, 1.035596929309791300, 1.035268829124216700,
+    1.034940690874766300,
+  1.034612514573505700, 1.034284300232500000, 1.033956047863817500,
+    1.033627757479526700,
+  1.033299429091697700, 1.032971062712402700, 1.032642658353714300,
+    1.032314216027707700,
+  1.031985735746457900, 1.031657217522042900, 1.031328661366541300,
+    1.031000067292032300,
+  1.030671435310598600, 1.030342765434322200, 1.030014057675287900,
+    1.029685312045581100,
+  1.029356528557288300, 1.029027707222499100, 1.028698848053302100,
+    1.028369951061789600,
+  1.028041016260053500, 1.027712043660187600, 1.027383033274288400,
+    1.027053985114451100,
+  1.026724899192775300, 1.026395775521359500, 1.026066614112305600,
+    1.025737414977715200,
+  1.025408178129692000, 1.025078903580341600, 1.024749591341769700,
+    1.024420241426085200,
+  1.024090853845396800, 1.023761428611814600, 1.023431965737451800,
+    1.023102465234420700,
+  1.022772927114837100, 1.022443351390816400, 1.022113738074476300,
+    1.021784087177936000,
+  1.021454398713315600, 1.021124672692737000, 1.020794909128323000,
+    1.020465108032198300,
+  1.020135269416488700, 1.019805393293321100, 1.019475479674824900,
+    1.019145528573129000,
+  1.018815540000365800, 1.018485513968667500, 1.018155450490168000,
+    1.017825349577003300,
+  1.017495211241309800, 1.017165035495226400, 1.016834822350892300,
+    1.016504571820448000,
+  1.016174283916036800, 1.015843958649801600, 1.015513596033888400,
+    1.015183196080442900,
+  1.014852758801613200, 1.014522284209548900, 1.014191772316400000,
+    1.013861223134318900,
+  1.013530636675459100, 1.013200012951974700, 1.012869351976022300,
+    1.012538653759758900,
+  1.012207918315344300, 1.011877145654937400, 1.011546335790700600,
+    1.011215488734796800,
+  1.010884604499389800, 1.010553683096645900, 1.010222724538731600,
+    1.009891728837815700,
+  1.009560696006067900, 1.009229626055658800, 1.008898518998761800,
+    1.008567374847549900,
+  1.008236193614199000, 1.007904975310885300, 1.007573719949786700,
+    1.007242427543082900,
+  1.006911098102953900, 1.006579731641582500, 1.006248328171152100,
+    1.005916887703846500,
+  1.005585410251852700, 1.005253895827357800, 1.004922344442551000,
+    1.004590756109621900,
+  1.004259130840762700, 1.003927468648166100, 1.003595769544025900,
+    1.003264033540538500,
+  1.002932260649900000, 1.002600450884309800, 1.002268604255967200,
+    1.001936720777072400,
+  1.001604800459829000, 1.001272843316440000, 1.000940849359111000,
+    1.000608818600048100,
+  1.000276751051459200, 0.999944646725553720, 0.999612505634541740,
+    0.999280327790635690,
+  0.998948113206048590, 0.998615861892994560, 0.998283573863690270,
+    0.997951249130352380,
+  0.997618887705200020, 0.997286489600452630, 0.996954054828332210,
+    0.996621583401061110,
+  0.996289075330862860, 0.995956530629963810, 0.995623949310589620,
+    0.995291331384969390,
+  0.994958676865332010, 0.994625985763907820, 0.994293258092929790,
+    0.993960493864630480,
+  0.993627693091245660, 0.993294855785010760, 0.992961981958163210,
+    0.992629071622942340,
+  0.992296124791587690, 0.991963141476341460, 0.991630121689446090,
+    0.991297065443145440,
+  0.990963972749685840, 0.990630843621313260, 0.990297678070276800,
+    0.989964476108825210,
+  0.989631237749210020, 0.989297963003683330, 0.988964651884498000,
+    0.988631304403909890,
+  0.988297920574174430, 0.987964500407549910, 0.987631043916294970,
+    0.987297551112669370,
+  0.986964022008935520, 0.986630456617355380, 0.986296854950194260,
+    0.985963217019717120,
+  0.985629542838190490, 0.985295832417883540, 0.984962085771065030,
+    0.984628302910006580,
+  0.984294483846980150, 0.983960628594258810, 0.983626737164118190,
+    0.983292809568833910,
+  0.982958845820684270, 0.982624845931947320, 0.982290809914904140,
+    0.981956737781835790,
+  0.981622629545024770, 0.981288485216756160, 0.980954304809314670,
+    0.980620088334987930,
+  0.980285835806063770, 0.979951547234831130, 0.979617222633581860,
+    0.979282862014607240,
+  0.978948465390201530, 0.978614032772659240, 0.978279564174275860,
+    0.977945059607349900,
+  0.977610519084179290, 0.977275942617064740, 0.976941330218307540,
+    0.976606681900209830,
+  0.976271997675076550, 0.975937277555212310, 0.975602521552924600,
+    0.975267729680520560,
+  0.974932901950310350, 0.974598038374604350, 0.974263138965714040,
+    0.973928203735953460,
+  0.973593232697636530, 0.973258225863079970, 0.972923183244600480,
+    0.972588104854516410,
+  0.972252990705148370, 0.971917840808816710, 0.971582655177844700,
+    0.971247433824555920,
+  0.970912176761274950, 0.970576884000329040, 0.970241555554045230,
+    0.969906191434753320,
+  0.969570791654783330, 0.969235356226466500, 0.968899885162136650,
+    0.968564378474127350,
+  0.968228836174775060, 0.967893258276415700, 0.967557644791388500,
+    0.967221995732032490,
+  0.966886311110688230, 0.966550590939698640, 0.966214835231406500,
+    0.965879043998157160,
+  0.965543217252296420, 0.965207355006171270, 0.964871457272131190,
+    0.964535524062525410,
+  0.964199555389706030, 0.963863551266025300, 0.963527511703836660,
+    0.963191436715496120,
+  0.962855326313359350, 0.962519180509785130, 0.962182999317132030,
+    0.961846782747760140,
+  0.961510530814032040, 0.961174243528309820, 0.960837920902958720,
+    0.960501562950343390,
+  0.960165169682831830, 0.959828741112791590, 0.959492277252591900,
+    0.959155778114604400,
+  0.958819243711200310, 0.958482674054753960, 0.958146069157639560,
+    0.957809429032232760,
+  0.957472753690911670, 0.957136043146054050, 0.956799297410040440,
+    0.956462516495251940,
+  0.956125700414070300, 0.955788849178880300, 0.955451962802066120,
+    0.955115041296014880,
+  0.954778084673113870, 0.954441092945751630, 0.954104066126319150,
+    0.953767004227207060,
+  0.953429907260809120, 0.953092775239518630, 0.952755608175731570,
+    0.952418406081844360,
+  0.952081168970254520, 0.951743896853362140, 0.951406589743566950,
+    0.951069247653271500,
+  0.950731870594878510, 0.950394458580791970, 0.950057011623418380,
+    0.949719529735163940,
+  0.949382012928437600, 0.949044461215648560, 0.948706874609207220,
+    0.948369253121526420,
+  0.948031596765018910, 0.947693905552099870, 0.947356179495185020,
+    0.947018418606691230,
+  0.946680622899037650, 0.946342792384643360, 0.946004927075930090,
+    0.945667026985319680,
+  0.945329092125236190, 0.944991122508104350, 0.944653118146349890,
+    0.944315079052401090,
+  0.943977005238685770, 0.943638896717634900, 0.943300753501679190,
+    0.942962575603250920,
+  0.942624363034784580, 0.942286115808714690, 0.941947833937478270,
+    0.941609517433512730,
+  0.941271166309256450, 0.940932780577150460, 0.940594360249635500,
+    0.940255905339155150,
+  0.939917415858152920, 0.939578891819073720, 0.939240333234364950,
+    0.938901740116473540,
+  0.938563112477849630, 0.938224450330942590, 0.937885753688204820,
+    0.937547022562088990,
+  0.937208256965048840, 0.936869456909540490, 0.936530622408019990,
+    0.936191753472946030,
+  0.935852850116777430, 0.935513912351974450, 0.935174940190999560,
+    0.934835933646314900,
+  0.934496892730385720, 0.934157817455677160, 0.933818707834655590,
+    0.933479563879790030,
+  0.933140385603548840, 0.932801173018403480, 0.932461926136825660,
+    0.932122644971287830,
+  0.931783329534265240, 0.931443979838232900, 0.931104595895668410,
+    0.930765177719049210,
+  0.930425725320855430, 0.930086238713567440, 0.929746717909666790,
+    0.929407162921637610,
+  0.929067573761963250, 0.928727950443130500, 0.928388292977625930,
+    0.928048601377937210,
+  0.927708875656554800, 0.927369115825968480, 0.927029321898671270,
+    0.926689493887155820,
+  0.926349631803916270, 0.926009735661449170, 0.925669805472250860,
+    0.925329841248820340,
+  0.924989843003656610, 0.924649810749260110, 0.924309744498133750,
+    0.923969644262779830,
+  0.923629510055703820, 0.923289341889410480, 0.922949139776407800,
+    0.922608903729203570,
+  0.922268633760306990, 0.921928329882229390, 0.921587992107482210,
+    0.921247620448579440,
+  0.920907214918035070, 0.920566775528364410, 0.920226302292085460,
+    0.919885795221715540,
+  0.919545254329774850, 0.919204679628783720, 0.918864071131263780,
+    0.918523428849739030,
+  0.918182752796733110, 0.917842042984772340, 0.917501299426383480,
+    0.917160522134094160,
+  0.916819711120434700, 0.916478866397934850, 0.916137987979127270,
+    0.915797075876544350,
+  0.915456130102721200, 0.915115150670193110, 0.914774137591496510,
+    0.914433090879170130,
+  0.914092010545752620, 0.913750896603785280, 0.913409749065809520,
+    0.913068567944367970,
+  0.912727353252005710, 0.912386105001267270, 0.912044823204700370,
+    0.911703507874852440,
+  0.911362159024272310, 0.911020776665511290, 0.910679360811120000,
+    0.910337911473652390,
+  0.909996428665661990, 0.909654912399703860, 0.909313362688335290,
+    0.908971779544113350,
+  0.908630162979597760, 0.908288513007348140, 0.907946829639926790,
+    0.907605112889895870,
+  0.907263362769819000, 0.906921579292262250, 0.906579762469791110,
+    0.906237912314974080,
+  0.905896028840379560, 0.905554112058577170, 0.905212161982139160,
+    0.904870178623637170,
+  0.904528161995645670, 0.904186112110739510, 0.903844028981494190,
+    0.903501912620488070,
+  0.903159763040298880, 0.902817580253507450, 0.902475364272694370,
+    0.902133115110441470,
+  0.901790832779333250, 0.901448517291953520, 0.901106168660889110,
+    0.900763786898726380,
+  0.900421372018054500, 0.900078924031462610, 0.899736442951541320,
+    0.899393928790883420,
+  0.899051381562081310, 0.898708801277730340, 0.898366187950425780,
+    0.898023541592764210,
+  0.897680862217344440, 0.897338149836764960, 0.896995404463627350,
+    0.896652626110532870,
+  0.896309814790084090, 0.895966970514885940, 0.895624093297543110,
+    0.895281183150662960,
+  0.894938240086852970, 0.894595264118721810, 0.894252255258880410,
+    0.893909213519939460,
+  0.893566138914512420, 0.893223031455212530, 0.892879891154655380,
+    0.892536718025457090,
+  0.892193512080234670, 0.891850273331607600, 0.891507001792195000,
+    0.891163697474618880,
+  0.890820360391500920, 0.890476990555464480, 0.890133587979135000,
+    0.889790152675137610,
+  0.889446684656100330, 0.889103183934650930, 0.888759650523418650,
+    0.888416084435035060,
+  0.888072485682131150, 0.887728854277341050, 0.887385190233298650,
+    0.887041493562639060,
+  0.886697764277999840, 0.886354002392018110, 0.886010207917333760,
+    0.885666380866586560,
+  0.885322521252418610, 0.884978629087472270, 0.884634704384391180,
+    0.884290747155821230,
+  0.883946757414407980, 0.883602735172799640, 0.883258680443644530,
+    0.882914593239592320,
+  0.882570473573294660, 0.882226321457403320, 0.881882136904572400,
+    0.881537919927456340,
+  0.881193670538710450, 0.880849388750992610, 0.880505074576960370,
+    0.880160728029273920,
+  0.879816349120593590, 0.879471937863580690, 0.879127494270899090,
+    0.878783018355212220,
+  0.878438510129186170, 0.878093969605486800, 0.877749396796782770,
+    0.877404791715742370,
+  0.877060154375035710, 0.876715484787334630, 0.876370782965310900,
+    0.876026048921639160,
+  0.875681282668993700, 0.875336484220050390, 0.874991653587487090,
+    0.874646790783981660,
+  0.874301895822214290, 0.873956968714865500, 0.873612009474616810,
+    0.873267018114152300,
+  0.872921994646155390, 0.872576939083312460, 0.872231851438309840,
+    0.871886731723835020,
+  0.871541579952577750, 0.871196396137227660, 0.870851180290476810,
+    0.870505932425017060,
+  0.870160652553543020, 0.869815340688749220, 0.869469996843331370,
+    0.869124621029987670,
+  0.868779213261415610, 0.868433773550315810, 0.868088301909388680,
+    0.867742798351335720,
+  0.867397262888861100, 0.867051695534668210, 0.866706096301463340,
+    0.866360465201952980,
+  0.866014802248844420, 0.865669107454847490, 0.865323380832671800,
+    0.864977622395029290,
+  0.864631832154632240, 0.864286010124194040, 0.863940156316430170,
+    0.863594270744056040,
+  0.863248353419789670, 0.862902404356348570, 0.862556423566453230,
+    0.862210411062823810,
+  0.861864366858181910, 0.861518290965251340, 0.861172183396755500,
+    0.860826044165420630,
+  0.860479873283972910, 0.860133670765139580, 0.859787436621650360,
+    0.859441170866234390,
+  0.859094873511623840, 0.858748544570550610, 0.858402184055747750,
+    0.858055791979950740,
+  0.857709368355894840, 0.857362913196317630, 0.857016426513956930,
+    0.856669908321551650,
+  0.856323358631843170, 0.855976777457572280, 0.855630164811482460,
+    0.855283520706317080,
+  0.854936845154821930, 0.854590138169742830, 0.854243399763827020,
+    0.853896629949823630,
+  0.853549828740481690, 0.853202996148552880, 0.852856132186788910,
+    0.852509236867942440,
+  0.852162310204768740, 0.851815352210022470, 0.851468362896461110,
+    0.851121342276842110,
+  0.850774290363923820, 0.850427207170467380, 0.850080092709233130,
+    0.849732946992984290,
+  0.849385770034483680, 0.849038561846496730, 0.848691322441788910,
+    0.848344051833126780,
+  0.847996750033279350, 0.847649417055015060, 0.847302052911105160,
+    0.846954657614320980,
+  0.846607231177434640, 0.846259773613221020, 0.845912284934454140,
+    0.845564765153910990,
+  0.845217214284368690, 0.844869632338605130, 0.844522019329400630,
+    0.844174375269535320,
+  0.843826700171791620, 0.843478994048952440, 0.843131256913801420,
+    0.842783488779124570,
+  0.842435689657707650, 0.842087859562339000, 0.841739998505806610,
+    0.841392106500900900,
+  0.841044183560412770, 0.840696229697133760, 0.840348244923857960,
+    0.840000229253379030,
+  0.839652182698493290, 0.839304105271996950, 0.838955996986687550,
+    0.838607857855364740,
+  0.838259687890827830, 0.837911487105878820, 0.837563255513319780,
+    0.837214993125953600,
+  0.836866699956585690, 0.836518376018021260, 0.836170021323067610,
+    0.835821635884532730,
+  0.835473219715225040, 0.835124772827955830, 0.834776295235535540,
+    0.834427786950777460,
+  0.834079247986494690, 0.833730678355502630, 0.833382078070616820,
+    0.833033447144653880,
+  0.832684785590432690, 0.832336093420771970, 0.831987370648492710,
+    0.831638617286416190,
+  0.831289833347364620, 0.830941018844162600, 0.830592173789634240,
+    0.830243298196606360,
+  0.829894392077905720, 0.829545455446360270, 0.829196488314800080,
+    0.828847490696055010,
+  0.828498462602957340, 0.828149404048339590, 0.827800315045035150,
+    0.827451195605879990,
+  0.827102045743709160, 0.826752865471360950, 0.826403654801672770,
+    0.826054413747485010,
+  0.825705142321637720, 0.825355840536972420, 0.825006508406332490,
+    0.824657145942561230,
+  0.824307753158504460, 0.823958330067008030, 0.823608876680918760,
+    0.823259393013085820,
+  0.822909879076357930, 0.822560334883586490, 0.822210760447622980,
+    0.821861155781319800,
+  0.821511520897531660, 0.821161855809112830, 0.820812160528920360,
+    0.820462435069811090,
+  0.820112679444643060, 0.819762893666276530, 0.819413077747571440,
+    0.819063231701390170,
+  0.818713355540594880, 0.818363449278050270, 0.818013512926620940,
+    0.817663546499172720,
+  0.817313550008573640, 0.816963523467691410, 0.816613466889396070,
+    0.816263380286557980,
+  0.815913263672048310, 0.815563117058740630, 0.815212940459508210,
+    0.814862733887226740,
+  0.814512497354771830, 0.814162230875020380, 0.813811934460851430,
+    0.813461608125143560,
+  0.813111251880778150, 0.812760865740636440, 0.812410449717600570,
+    0.812060003824555230,
+  0.811709528074384460, 0.811359022479975040, 0.811008487054213360,
+    0.810657921809988410,
+  0.810307326760189020, 0.809956701917705080, 0.809606047295428950,
+    0.809255362906252440,
+  0.808904648763069890, 0.808553904878775760, 0.808203131266265420,
+    0.807852327938436750,
+  0.807501494908186900, 0.807150632188415760, 0.806799739792023240,
+    0.806448817731910130,
+  0.806097866020979660, 0.805746884672134620, 0.805395873698280360,
+    0.805044833112322000,
+  0.804693762927166100, 0.804342663155721230, 0.803991533810895500,
+    0.803640374905599810,
+  0.803289186452744390, 0.802937968465242240, 0.802586720956006250,
+    0.802235443937950320,
+  0.801884137423990890, 0.801532801427043530, 0.801181435960026780,
+    0.800830041035858750,
+  0.800478616667459010, 0.800127162867749210, 0.799775679649650460,
+    0.799424167026086540,
+  0.799072625009981330, 0.798721053614259490, 0.798369452851848020,
+    0.798017822735673680,
+  0.797666163278665570, 0.797314474493752810, 0.796962756393865600,
+    0.796611008991936490,
+  0.796259232300897350, 0.795907426333682830, 0.795555591103226930,
+    0.795203726622466520,
+  0.794851832904338360, 0.794499909961779990, 0.794147957807731400,
+    0.793795976455132220,
+  0.793443965916924570, 0.793091926206050400, 0.792739857335452710,
+    0.792387759318077150,
+  0.792035632166868230, 0.791683475894773720, 0.791331290514740830,
+    0.790979076039718180,
+  0.790626832482656310, 0.790274559856505520, 0.789922258174218570,
+    0.789569927448748320,
+  0.789217567693048520, 0.788865178920075130, 0.788512761142783790,
+    0.788160314374132590,
+  0.787807838627079260, 0.787455333914584220, 0.787102800249607550,
+    0.786750237645110430,
+  0.786397646114056490, 0.786045025669408700, 0.785692376324132690,
+    0.785339698091194080,
+  0.784986990983559170, 0.784634255014197040, 0.784281490196075850,
+    0.783928696542166680,
+  0.783575874065440270, 0.783223022778868350, 0.782870142695425320,
+    0.782517233828084580,
+  0.782164296189822530, 0.781811329793615120, 0.781458334652439630,
+    0.781105310779275470,
+  0.780752258187101480, 0.780399176888899150, 0.780046066897649550,
+    0.779692928226336290,
+  0.779339760887942880, 0.778986564895453810, 0.778633340261856040,
+    0.778280087000135730,
+  0.777926805123281830, 0.777573494644283050, 0.777220155576129220,
+    0.776866787931812410,
+  0.776513391724324210, 0.776159966966658680, 0.775806513671809860,
+    0.775453031852772920,
+  0.775099521522545020, 0.774745982694123090, 0.774392415380506400,
+    0.774038819594694230,
+  0.773685195349686940, 0.773331542658487140, 0.772977861534096640,
+    0.772624151989520280,
+  0.772270414037761980, 0.771916647691828660, 0.771562852964726710,
+    0.771209029869463940,
+  0.770855178419050050, 0.770501298626494410, 0.770147390504808960,
+    0.769793454067005500,
+  0.769439489326096850, 0.769085496295098040, 0.768731474987023660,
+    0.768377425414890850,
+  0.768023347591716640, 0.767669241530518850, 0.767315107244318060,
+    0.766960944746133740,
+  0.766606754048988260, 0.766252535165903970, 0.765898288109903900,
+    0.765544012894013530,
+  0.765189709531257760, 0.764835378034664170, 0.764481018417259680,
+    0.764126630692073870,
+  0.763772214872136200, 0.763417770970477140, 0.763063299000129260,
+    0.762708798974124800,
+  0.762354270905498450, 0.761999714807284790, 0.761645130692519490,
+    0.761290518574240350,
+  0.760935878465484720, 0.760581210379292380, 0.760226514328703140,
+    0.759871790326757670,
+  0.759517038386499090, 0.759162258520969860, 0.758807450743214760,
+    0.758452615066278920,
+  0.758097751503208020, 0.757742860067050380, 0.757387940770853360,
+    0.757032993627667290,
+  0.756678018650541630, 0.756323015852528700, 0.755967985246680520,
+    0.755612926846050080,
+  0.755257840663692730, 0.754902726712663120, 0.754547585006018600,
+    0.754192415556816380,
+  0.753837218378114460, 0.753481993482973400, 0.753126740884452970,
+    0.752771460595615500,
+  0.752416152629523330, 0.752060816999239660, 0.751705453717829930,
+    0.751350062798359140,
+  0.750994644253894730, 0.750639198097504010, 0.750283724342255320,
+    0.749928223001219310,
+  0.749572694087465850, 0.749217137614067500, 0.748861553594096340,
+    0.748505942040627040,
+  0.748150302966733790, 0.747794636385492150, 0.747438942309979870,
+    0.747083220753273820,
+  0.746727471728453770, 0.746371695248599140, 0.746015891326790470,
+    0.745660059976110400,
+  0.745304201209641030, 0.744948315040467210, 0.744592401481673270,
+    0.744236460546344850,
+  0.743880492247569580, 0.743524496598434670, 0.743168473612029980,
+    0.742812423301444810,
+  0.742456345679769810, 0.742100240760097840, 0.741744108555520860,
+    0.741387949079133860,
+  0.741031762344030790, 0.740675548363308620, 0.740319307150063780,
+    0.739963038717393880,
+  0.739606743078398690, 0.739250420246177380, 0.738894070233831800,
+    0.738537693054463370,
+  0.738181288721174830, 0.737824857247070810, 0.737468398645255490,
+    0.737111912928835710,
+  0.736755400110918000, 0.736398860204609870, 0.736042293223021060,
+    0.735685699179260850,
+  0.735329078086440880, 0.734972429957672760, 0.734615754806068890,
+    0.734259052644744230,
+  0.733902323486812610, 0.733545567345390890, 0.733188784233595240,
+    0.732831974164544150,
+  0.732475137151356370, 0.732118273207151170, 0.731761382345050280,
+    0.731404464578174760,
+  0.731047519919648340, 0.730690548382594280, 0.730333549980137110,
+    0.729976524725403530,
+  0.729619472631519270, 0.729262393711613280, 0.728905287978813600,
+    0.728548155446249730,
+  0.728190996127053180, 0.727833810034354990, 0.727476597181288540,
+    0.727119357580987220,
+  0.726762091246585200, 0.726404798191218950, 0.726047478428024420,
+    0.725690131970139980,
+  0.725332758830703360, 0.724975359022855150, 0.724617932559735390,
+    0.724260479454485130,
+  0.723902999720247850, 0.723545493370166160, 0.723187960417385530,
+    0.722830400875050790,
+  0.722472814756308090, 0.722115202074305680, 0.721757562842191060,
+    0.721399897073114470,
+  0.721042204780225960, 0.720684485976676230, 0.720326740675618530,
+    0.719968968890205230,
+  0.719611170633591480, 0.719253345918932090, 0.718895494759382860,
+    0.718537617168101610,
+  0.718179713158245800, 0.717821782742975370, 0.717463825935449550,
+    0.717105842748830160,
+  0.716747833196278770, 0.716389797290958090, 0.716031735046032900,
+    0.715673646474667140,
+  0.715315531590027700, 0.714957390405280950, 0.714599222933594240,
+    0.714241029188137260,
+  0.713882809182079030, 0.713524562928591010, 0.713166290440844450,
+    0.712807991732011590,
+  0.712449666815266890, 0.712091315703784260, 0.711732938410739810,
+    0.711374534949309800,
+  0.711016105332671340, 0.710657649574003460, 0.710299167686484930,
+    0.709940659683296890,
+  0.709582125577619790, 0.709223565382636760, 0.708864979111530680,
+    0.708506366777485130,
+  0.708147728393686340, 0.707789063973319310, 0.707430373529572170,
+    0.707071657075632460,
+  0.706712914624688770, 0.706354146189931750, 0.705995351784551530,
+    0.705636531421740880,
+  0.705277685114692020, 0.704918812876598410, 0.704559914720655490,
+    0.704200990660058150,
+  0.703842040708003820, 0.703483064877689630, 0.703124063182313690,
+    0.702765035635076310,
+  0.702405982249177160, 0.702046903037818250, 0.701687798014201110,
+    0.701328667191529980,
+  0.700969510583008600, 0.700610328201841660, 0.700251120061236020,
+    0.699891886174398130,
+  0.699532626554536630, 0.699173341214860190, 0.698814030168578240,
+    0.698454693428902320,
+  0.698095331009043640, 0.697735942922215520, 0.697376529181631400,
+    0.697017089800505250,
+  0.696657624792053730, 0.696298134169492380, 0.695938617946039510,
+    0.695579076134912990,
+  0.695219508749331800, 0.694859915802517050, 0.694500297307689140,
+    0.694140653278070950,
+  0.693780983726884790, 0.693421288667355530, 0.693061568112707690,
+    0.692701822076166820,
+  0.692342050570960430, 0.691982253610315510, 0.691622431207461700,
+    0.691262583375628180,
+  0.690902710128045050, 0.690542811477944610, 0.690182887438558710,
+    0.689822938023121220,
+  0.689462963244866330, 0.689102963117028790, 0.688742937652845550,
+    0.688382886865552930,
+  0.688022810768389670, 0.687662709374594510, 0.687302582697406850,
+    0.686942430750068330,
+  0.686582253545819920, 0.686222051097905130, 0.685861823419566700,
+    0.685501570524050140,
+  0.685141292424600310, 0.684780989134463280, 0.684420660666887120,
+    0.684060307035119440,
+  0.683699928252410110, 0.683339524332008840, 0.682979095287166160,
+    0.682618641131135020,
+  0.682258161877167370, 0.681897657538517720, 0.681537128128440470,
+    0.681176573660190910,
+  0.680815994147026320, 0.680455389602203310, 0.680094760038981280,
+    0.679734105470619080,
+  0.679373425910376310, 0.679012721371515250, 0.678651991867297080,
+    0.678291237410985510,
+  0.677930458015843620, 0.677569653695137220, 0.677208824462131490,
+    0.676847970330092700,
+  0.676487091312289350, 0.676126187421989040, 0.675765258672461950,
+    0.675404305076978020,
+  0.675043326648808170, 0.674682323401225250, 0.674321295347501510,
+    0.673960242500911690,
+  0.673599164874730370, 0.673238062482232950, 0.672876935336696900,
+    0.672515783451398950,
+  0.672154606839618470, 0.671793405514634180, 0.671432179489727110,
+    0.671070928778178090,
+  0.670709653393269050, 0.670348353348283690, 0.669987028656505170,
+    0.669625679331219300,
+  0.669264305385711360, 0.668902906833267590, 0.668541483687176590,
+    0.668180035960725840,
+  0.667818563667205600, 0.667457066819905800, 0.667095545432117240,
+    0.666733999517132860,
+  0.666372429088244790, 0.666010834158747840, 0.665649214741936390,
+    0.665287570851105680,
+  0.664925902499553190, 0.664564209700575500, 0.664202492467472090,
+    0.663840750813541210,
+  0.663478984752084110, 0.663117194296401260, 0.662755379459794350,
+    0.662393540255567070,
+  0.662031676697022450, 0.661669788797465960, 0.661307876570202740,
+    0.660945940028538900,
+  0.660583979185782600, 0.660221994055241400, 0.659859984650225110,
+    0.659497950984043510,
+  0.659135893070007080, 0.658773810921428500, 0.658411704551619570,
+    0.658049573973894850,
+  0.657687419201568260, 0.657325240247955020, 0.656963037126372160,
+    0.656600809850135910,
+  0.656238558432565400, 0.655876282886978410, 0.655513983226695960,
+    0.655151659465038060,
+  0.654789311615326050, 0.654426939690883280, 0.654064543705032310,
+    0.653702123671098150,
+  0.653339679602405470, 0.652977211512280050, 0.652614719414049580,
+    0.652252203321041060,
+  0.651889663246583930, 0.651527099204007310, 0.651164511206641320,
+    0.650801899267818060,
+  0.650439263400868990, 0.650076603619127890, 0.649713919935928420,
+    0.649351212364604910,
+  0.648988480918494040, 0.648625725610931460, 0.648262946455255510,
+    0.647900143464803730,
+  0.647537316652916140, 0.647174466032932490, 0.646811591618193350,
+    0.646448693422041360,
+  0.646085771457818310, 0.645722825738868860, 0.645359856278536980,
+    0.644996863090167570,
+  0.644633846187107620, 0.644270805582703550, 0.643907741290304040,
+    0.643544653323257610,
+  0.643181541694913480, 0.642818406418622980, 0.642455247507736860,
+    0.642092064975608220,
+  0.641728858835589830, 0.641365629101035340, 0.641002375785300500,
+    0.640639098901740200,
+  0.640275798463712080, 0.639912474484572560, 0.639549126977681070,
+    0.639185755956396480,
+  0.638822361434078330, 0.638458943424088490, 0.638095501939787920,
+    0.637732036994540290,
+  0.637368548601708660, 0.637005036774657030, 0.636641501526751590,
+    0.636277942871357530,
+  0.635914360821842830, 0.635550755391574910, 0.635187126593922070,
+    0.634823474442254840,
+  0.634459798949942640, 0.634096100130357660, 0.633732377996871770,
+    0.633368632562857470,
+  0.633004863841689520, 0.632641071846741790, 0.632277256591390780,
+    0.631913418089012020,
+  0.631549556352983710, 0.631185671396683470, 0.630821763233490040,
+    0.630457831876783950,
+  0.630093877339945260, 0.629729899636356280, 0.629365898779399080,
+    0.629001874782456500,
+  0.628637827658913300, 0.628273757422153860, 0.627909664085564810,
+    0.627545547662532230,
+  0.627181408166443410, 0.626817245610687520, 0.626453060008652860,
+    0.626088851373730380,
+  0.625724619719310480, 0.625360365058784670, 0.624996087405546350,
+    0.624631786772988030,
+  0.624267463174504880, 0.623903116623491180, 0.623538747133343780,
+    0.623174354717459190,
+  0.622809939389234460, 0.622445501162069090, 0.622081040049361490,
+    0.621716556064512820,
+  0.621352049220923570, 0.620987519531995270, 0.620622967011131400,
+    0.620258391671734690,
+  0.619893793527210410, 0.619529172590963410, 0.619164528876399280,
+    0.618799862396925750,
+  0.618435173165949760, 0.618070461196880800, 0.617705726503127720,
+    0.617340969098100430,
+  0.616976188995210780, 0.616611386207870040, 0.616246560749491690,
+    0.615881712633488340,
+  0.615516841873275490, 0.615151948482267840, 0.614787032473881110,
+    0.614422093861533010,
+  0.614057132658640590, 0.613692148878623000, 0.613327142534899510,
+    0.612962113640889710,
+  0.612597062210015750, 0.612231988255698470, 0.611866891791361560,
+    0.611501772830428060,
+  0.611136631386322020, 0.610771467472469460, 0.610406281102295440,
+    0.610041072289227990,
+  0.609675841046694030, 0.609310587388121830, 0.608945311326941520,
+    0.608580012876582370,
+  0.608214692050476290, 0.607849348862054220, 0.607483983324749510,
+    0.607118595451995420,
+  0.606753185257225550, 0.606387752753876020, 0.606022297955381760,
+    0.605656820875180360,
+  0.605291321526709060, 0.604925799923405670, 0.604560256078710220,
+    0.604194690006061960,
+  0.603829101718902580, 0.603463491230673220, 0.603097858554815790,
+    0.602732203704774650,
+  0.602366526693992930, 0.602000827535916330, 0.601635106243990190,
+    0.601269362831660550,
+  0.600903597312375640, 0.600537809699582810, 0.600172000006731770,
+    0.599806168247271620,
+  0.599440314434653620, 0.599074438582328780, 0.598708540703749010,
+    0.598342620812368000,
+  0.597976678921638860, 0.597610715045016950, 0.597244729195957500,
+    0.596878721387916090,
+  0.596512691634350830, 0.596146639948718640, 0.595780566344478960,
+    0.595414470835091030,
+  0.595048353434014630, 0.594682214154711790, 0.594316053010643270,
+    0.593949870015273000,
+  0.593583665182063740, 0.593217438524479500, 0.592851190055986300,
+    0.592484919790049140,
+  0.592118627740135460, 0.591752313919712170, 0.591385978342248260,
+    0.591019621021212420,
+  0.590653241970074180, 0.590286841202305120, 0.589920418731375800,
+    0.589553974570759530,
+  0.589187508733928890, 0.588821021234357310, 0.588454512085520460,
+    0.588087981300892900,
+  0.587721428893951850, 0.587354854878173850, 0.586988259267036350,
+    0.586621642074019120,
+  0.586255003312600500, 0.585888342996261690, 0.585521661138483250,
+    0.585154957752746730,
+  0.584788232852535560, 0.584421486451332410, 0.584054718562622140,
+    0.583687929199888990,
+  0.583321118376619710, 0.582954286106300290, 0.582587432402417840,
+    0.582220557278461340,
+  0.581853660747918780, 0.581486742824280810, 0.581119803521037650,
+    0.580752842851679940,
+  0.580385860829700780, 0.580018857468592270, 0.579651832781848730,
+    0.579284786782964360,
+  0.578917719485433800, 0.578550630902754050, 0.578183521048421080,
+    0.577816389935933090,
+  0.577449237578788300, 0.577082063990485340, 0.576714869184524860,
+    0.576347653174406840,
+  0.575980415973633590, 0.575613157595706530, 0.575245878054129520,
+    0.574878577362406000,
+  0.574511255534040030, 0.574143912582537940, 0.573776548521405030,
+    0.573409163364148930,
+  0.573041757124277180, 0.572674329815297640, 0.572306881450720390,
+    0.571939412044054740,
+  0.571571921608812320, 0.571204410158504090, 0.570836877706642270,
+    0.570469324266740570,
+  0.570101749852312100, 0.569734154476872480, 0.569366538153936560,
+    0.568998900897020210,
+  0.568631242719641270, 0.568263563635316600, 0.567895863657565500,
+    0.567528142799906490,
+  0.567160401075860410, 0.566792638498947680, 0.566424855082689470,
+    0.566057050840608870,
+  0.565689225786228160, 0.565321379933072190, 0.564953513294665140,
+    0.564585625884531870,
+  0.564217717716199550, 0.563849788803194140, 0.563481839159044150,
+    0.563113868797277870,
+  0.562745877731423820, 0.562377865975012940, 0.562009833541575080,
+    0.561641780444642640,
+  0.561273706697747450, 0.560905612314422150, 0.560537497308201240,
+    0.560169361692618440,
+  0.559801205481210040, 0.559433028687510990, 0.559064831325059240,
+    0.558696613407391630,
+  0.558328374948046320, 0.557960115960563050, 0.557591836458480870,
+    0.557223536455341280,
+  0.556855215964685120, 0.556486875000054000, 0.556118513574991650,
+    0.555750131703040880,
+  0.555381729397746880, 0.555013306672654360, 0.554644863541308600,
+    0.554276400017257090,
+  0.553907916114046440, 0.553539411845225590, 0.553170887224342820,
+    0.552802342264947400,
+  0.552433776980590490, 0.552065191384822350, 0.551696585491195710,
+    0.551327959313262280,
+  0.550959312864576220, 0.550590646158691240, 0.550221959209161620,
+    0.549853252029543830,
+  0.549484524633393480, 0.549115777034268170, 0.548747009245725500,
+    0.548378221281323520,
+  0.548009413154622370, 0.547640584879181100, 0.547271736468561530,
+    0.546902867936324590,
+  0.546533979296032200, 0.546165070561248080, 0.545796141745535150,
+    0.545427192862458780,
+  0.545058223925583670, 0.544689234948475210, 0.544320225944701200,
+    0.543951196927828010,
+  0.543582147911424560, 0.543213078909059120, 0.542843989934301940,
+    0.542474881000723050,
+  0.542105752121893050, 0.541736603311384620, 0.541367434582769480,
+    0.540998245949621760,
+  0.540629037425515050, 0.540259809024023600, 0.539890560758723770,
+    0.539521292643190930,
+  0.539152004691002770, 0.538782696915736770, 0.538413369330970610,
+    0.538044021950284450,
+  0.537674654787257180, 0.537305267855470390, 0.536935861168504670,
+    0.536566434739941920,
+  0.536196988583365510, 0.535827522712358230, 0.535458037140505110,
+    0.535088531881390050,
+  0.534719006948599860, 0.534349462355720230, 0.533979898116337950,
+    0.533610314244041710,
+  0.533240710752419080, 0.532871087655060300, 0.532501444965554960,
+    0.532131782697493170,
+  0.531762100864467290, 0.531392399480068670, 0.531022678557890980,
+    0.530652938111527360,
+  0.530283178154571710, 0.529913398700619820, 0.529543599763266700,
+    0.529173781356109600,
+  0.528803943492745180, 0.528434086186771010, 0.528064209451786560,
+    0.527694313301390160,
+  0.527324397749182720, 0.526954462808764120, 0.526584508493736840,
+    0.526214534817702310,
+  0.525844541794263210, 0.525474529437023890, 0.525104497759587900,
+    0.524734446775560910,
+  0.524364376498548390, 0.523994286942156220, 0.523624178119992400,
+    0.523254050045663940,
+  0.522883902732780290, 0.522513736194950230, 0.522143550445783310,
+    0.521773345498891090,
+  0.521403121367884030, 0.521032878066375100, 0.520662615607976660,
+    0.520292334006301820,
+  0.519922033274965560, 0.519551713427582000, 0.519181374477767470,
+    0.518811016439137520,
+  0.518440639325310040, 0.518070243149902240, 0.517699827926532130,
+    0.517329393668819580,
+  0.516958940390383700, 0.516588468104845820, 0.516217976825826600,
+    0.515847466566947580,
+  0.515476937341832310, 0.515106389164103120, 0.514735822047384990,
+    0.514365236005302040,
+  0.513994631051479240, 0.513624007199543600, 0.513253364463121090,
+    0.512882702855839920,
+  0.512512022391327980, 0.512141323083213470, 0.511770604945127050,
+    0.511399867990697920,
+  0.511029112233557960, 0.510658337687338040, 0.510287544365671140,
+    0.509916732282189920,
+  0.509545901450527690, 0.509175051884319660, 0.508804183597200140,
+    0.508433296602805670,
+  0.508062390914772230, 0.507691466546736580, 0.507320523512337470,
+    0.506949561825212450,
+  0.506578581499001590, 0.506207582547344550, 0.505836564983881190,
+    0.505465528822253710,
+  0.505094474076103310, 0.504723400759073290, 0.504352308884806750,
+    0.503981198466947000,
+  0.503610069519139780, 0.503238922055029400, 0.502867756088262840,
+    0.502496571632486070,
+  0.502125368701347050, 0.501754147308493770, 0.501382907467574190,
+    0.501011649192238950,
+  0.500640372496137020, 0.500269077392920150, 0.499897763896239410,
+    0.499526432019746450,
+  0.499155081777094940, 0.498783713181937540, 0.498412326247929250,
+    0.498040920988724490,
+  0.497669497417978280, 0.497298055549347750, 0.496926595396488870,
+    0.496555116973059980,
+  0.496183620292718900, 0.495812105369124070, 0.495440572215935850,
+    0.495069020846813650,
+  0.494697451275419140, 0.494325863515413130, 0.493954257580458580,
+    0.493582633484217940,
+  0.493210991240354450, 0.492839330862533120, 0.492467652364417970,
+    0.492095955759675460,
+  0.491724241061971320, 0.491352508284972070, 0.490980757442346090,
+    0.490608988547760690,
+  0.490237201614885710, 0.489865396657390210, 0.489493573688943970,
+    0.489121732723218740,
+  0.488749873773885120, 0.488377996854616250, 0.488006101979084450,
+    0.487634189160962910,
+  0.487262258413926560, 0.486890309751649490, 0.486518343187807900,
+    0.486146358736077200,
+  0.485774356410135000, 0.485402336223658360, 0.485030298190324950,
+    0.484658242323814380,
+  0.484286168637805270, 0.483914077145978560, 0.483541967862014480,
+    0.483169840799594130,
+  0.482797695972400300, 0.482425533394114920, 0.482053353078422120,
+    0.481681155039005550,
+  0.481308939289549380, 0.480936705843739820, 0.480564454715261990,
+    0.480192185917803270,
+  0.479819899465050160, 0.479447595370691370, 0.479075273648415010,
+    0.478702934311909910,
+  0.478330577374866780, 0.477958202850975230, 0.477585810753927250,
+    0.477213401097414220,
+  0.476840973895128200, 0.476468529160763100, 0.476096066908011760,
+    0.475723587150569390,
+  0.475351089902130650, 0.474978575176390750, 0.474606042987046840,
+    0.474233493347795020,
+  0.473860926272333670, 0.473488341774360670, 0.473115739867574380,
+    0.472743120565675250,
+  0.472370483882362520, 0.471997829831337810, 0.471625158426301700,
+    0.471252469680957190,
+  0.470879763609006460, 0.470507040224152460, 0.470134299540099940,
+    0.469761541570552780,
+  0.469388766329217000, 0.469015973829798090, 0.468643164086002100,
+    0.468270337111537040,
+  0.467897492920109850, 0.467524631525429830, 0.467151752941205530,
+    0.466778857181146260,
+  0.466405944258963200, 0.466033014188366350, 0.465660066983068220,
+    0.465287102656780530,
+  0.464914121223215740, 0.464541122696088100, 0.464168107089110940,
+    0.463795074415999760,
+  0.463422024690469060, 0.463048957926235630, 0.462675874137015720,
+    0.462302773336526080,
+  0.461929655538485470, 0.461556520756611410, 0.461183369004623920,
+    0.460810200296242310,
+  0.460437014645186440, 0.460063812065178160, 0.459690592569938270,
+    0.459317356173189750,
+  0.458944102888655060, 0.458570832730057170, 0.458197545711121090,
+    0.457824241845570630,
+  0.457450921147131930, 0.457077583629530550, 0.456704229306492570,
+    0.456330858191746010,
+  0.455957470299017840, 0.455584065642037350, 0.455210644234532610,
+    0.454837206090234200,
+  0.454463751222871910, 0.454090279646176210, 0.453716791373879380,
+    0.453343286419712720,
+  0.452969764797409750, 0.452596226520703360, 0.452222671603327130,
+    0.451849100059016350,
+  0.451475511901505420, 0.451101907144530910, 0.450728285801828830,
+    0.450354647887135640,
+  0.449980993414189900, 0.449607322396728900, 0.449233634848492320,
+    0.448859930783219170,
+  0.448486210214649020, 0.448112473156523420, 0.447738719622582710,
+    0.447364949626569590,
+  0.446991163182225700, 0.446617360303294910, 0.446243541003520480,
+    0.445869705296646270,
+  0.445495853196417930, 0.445121984716580210, 0.444748099870879880,
+    0.444374198673063330,
+  0.444000281136877280, 0.443626347276070590, 0.443252397104390790,
+    0.442878430635587910,
+  0.442504447883411090, 0.442130448861610240, 0.441756433583937120,
+    0.441382402064142250,
+  0.441008354315978680, 0.440634290353198510, 0.440260210189554690,
+    0.439886113838801880,
+  0.439512001314693700, 0.439137872630986080, 0.438763727801433690,
+    0.438389566839793740,
+  0.438015389759822630, 0.437641196575277220, 0.437266987299916590,
+    0.436892761947498260,
+  0.436518520531782470, 0.436144263066528480, 0.435769989565496290,
+    0.435395700042447710,
+  0.435021394511143410, 0.434647072985346380, 0.434272735478819010,
+    0.433898382005324050,
+  0.433524012578626440, 0.433149627212489670, 0.432775225920679740,
+    0.432400808716961900,
+  0.432026375615101930, 0.431651926628867530, 0.431277461772025310,
+    0.430902981058344070,
+  0.430528484501591540, 0.430153972115537800, 0.429779443913952170,
+    0.429404899910604490,
+  0.429030340119266550, 0.428655764553708960, 0.428281173227704760,
+    0.427906566155026040,
+  0.427531943349445720, 0.427157304824738350, 0.426782650594677570,
+    0.426407980673039090,
+  0.426033295073598160, 0.425658593810130330, 0.425283876896413280,
+    0.424909144346223290,
+  0.424534396173339160, 0.424159632391538870, 0.423784853014600950,
+    0.423410058056305830,
+  0.423035247530432810, 0.422660421450763490, 0.422285579831078230,
+    0.421910722685159720,
+  0.421535850026790060, 0.421160961869751720, 0.420786058227829220,
+    0.420411139114805770,
+  0.420036204544466940, 0.419661254530597550, 0.419286289086983070,
+    0.418911308227410740,
+  0.418536311965666650, 0.418161300315539220, 0.417786273290816130,
+    0.417411230905285650,
+  0.417036173172737830, 0.416661100106961610, 0.416286011721748230,
+    0.415910908030888200,
+  0.415535789048172620, 0.415160654787394280, 0.414785505262345030,
+    0.414410340486818910,
+  0.414035160474608700, 0.413659965239509710, 0.413284754795316230,
+    0.412909529155823300,
+  0.412534288334827750, 0.412159032346125280, 0.411783761203513790,
+    0.411408474920790520,
+  0.411033173511753220, 0.410657856990201580, 0.410282525369933980,
+    0.409907178664751180,
+  0.409531816888453190, 0.409156440054840590, 0.408781048177715660,
+    0.408405641270879690,
+  0.408030219348136270, 0.407654782423288010, 0.407279330510138260,
+    0.406903863622492260,
+  0.406528381774153900, 0.406152884978929480, 0.405777373250624070,
+    0.405401846603045010,
+  0.405026305049998980, 0.404650748605293040, 0.404275177282736260,
+    0.403899591096136380,
+  0.403523990059303620, 0.403148374186047210, 0.402772743490177110,
+    0.402397097985504990,
+  0.402021437685841480, 0.401645762604999350, 0.401270072756790610,
+    0.400894368155027990,
+  0.400518648813525830, 0.400142914746097480, 0.399767165966558420,
+    0.399391402488723400,
+  0.399015624326407800, 0.398639831493428740, 0.398264024003602220,
+    0.397888201870746420,
+  0.397512365108678430, 0.397136513731217500, 0.396760647752182230,
+    0.396384767185391620,
+  0.396008872044666730, 0.395632962343827170, 0.395257038096694990,
+    0.394881099317091370,
+  0.394505146018838130, 0.394129178215758820, 0.393753195921675850,
+    0.393377199150413860,
+  0.393001187915796750, 0.392625162231649010, 0.392249122111796800,
+    0.391873067570065240,
+  0.391496998620281590, 0.391120915276272410, 0.390744817551864850,
+    0.390368705460887750,
+  0.389992579017168830, 0.389616438234538010, 0.389240283126824070,
+    0.388864113707858060,
+  0.388487929991470140, 0.388111731991491180, 0.387735519721753690,
+    0.387359293196089140,
+  0.386983052428331030, 0.386606797432312350, 0.386230528221866430,
+    0.385854244810828530,
+  0.385477947213032580, 0.385101635442314900, 0.384725309512510880,
+    0.384348969437456610,
+  0.383972615230989860, 0.383596246906947210, 0.383219864479167560,
+    0.382843467961488940,
+  0.382467057367749940, 0.382090632711791060, 0.381714194007451380,
+    0.381337741268572390,
+  0.380961274508994250, 0.380584793742559550, 0.380208298983109930,
+    0.379831790244487540,
+  0.379455267540536490, 0.379078730885099520, 0.378702180292021630,
+    0.378325615775147170,
+  0.377949037348320800, 0.377572445025389230, 0.377195838820197690,
+    0.376819218746593910,
+  0.376442584818424570, 0.376065937049537060, 0.375689275453780500,
+    0.375312600045002780,
+  0.374935910837054080, 0.374559207843783660, 0.374182491079041500,
+    0.373805760556679190,
+  0.373429016290547200, 0.373052258294498230, 0.372675486582383640,
+    0.372298701168057190,
+  0.371921902065371730, 0.371545089288180640, 0.371168262850339210,
+    0.370791422765701320,
+  0.370414569048123140, 0.370037701711460170, 0.369660820769568240,
+    0.369283926236305070,
+  0.368907018125527120, 0.368530096451093140, 0.368153161226860980,
+    0.367776212466689010,
+  0.367399250184437480, 0.367022274393965340, 0.366645285109133750,
+    0.366268282343803150,
+  0.365891266111834370, 0.365514236427090080, 0.365137193303431750,
+    0.364760136754723020,
+  0.364383066794826350, 0.364005983437606320, 0.363628886696926890,
+    0.363251776586652310,
+  0.362874653120648700, 0.362497516312780990, 0.362120366176916230,
+    0.361743202726920790,
+  0.361366025976661450, 0.360988835940006750, 0.360611632630824020,
+    0.360234416062982840,
+  0.359857186250351960, 0.359479943206800550, 0.359102686946199680,
+    0.358725417482419150,
+  0.358348134829330870, 0.357970839000806010, 0.357593530010716310,
+    0.357216207872935120,
+  0.356838872601334680, 0.356461524209789380, 0.356084162712172360,
+    0.355706788122359060,
+  0.355329400454223950, 0.354951999721642100, 0.354574585938490280,
+    0.354197159118644080,
+  0.353819719275981330, 0.353442266424378930, 0.353064800577714280,
+    0.352687321749866610,
+  0.352309829954713830, 0.351932325206136210, 0.351554807518012990,
+    0.351177276904224070,
+  0.350799733378650890, 0.350422176955173910, 0.350044607647675640,
+    0.349667025470037810,
+  0.349289430436142520, 0.348911822559873850, 0.348534201855114360,
+    0.348156568335749040,
+  0.347778922015661520, 0.347401262908737570, 0.347023591028862320,
+    0.346645906389921150,
+  0.346268209005801410, 0.345890498890388980, 0.345512776057572080,
+    0.345135040521238170,
+  0.344757292295274910, 0.344379531393571970, 0.344001757830017680,
+    0.343623971618502560,
+  0.343246172772916250, 0.342868361307148980, 0.342490537235092600,
+    0.342112700570637750,
+  0.341734851327677280, 0.341356989520103240, 0.340979115161808070,
+    0.340601228266685980,
+  0.340223328848629880, 0.339845416921535030, 0.339467492499295200,
+    0.339089555595806560,
+  0.338711606224964210, 0.338333644400663940, 0.337955670136803170,
+    0.337577683447278010,
+  0.337199684345986910, 0.336821672846827290, 0.336443648963697160,
+    0.336065612710496290,
+  0.335687564101123050, 0.335309503149478110, 0.334931429869461230,
+    0.334553344274972690,
+  0.334175246379914470, 0.333797136198187240, 0.333419013743693980,
+    0.333040879030336690,
+  0.332662732072017800, 0.332284572882641680, 0.331906401476111280,
+    0.331528217866331690,
+  0.331150022067206780, 0.330771814092642610, 0.330393593956544440,
+    0.330015361672817750,
+  0.329637117255370090, 0.329258860718107450, 0.328880592074938190,
+    0.328502311339769700,
+  0.328124018526509800, 0.327745713649068180, 0.327367396721353070,
+    0.326989067757275040,
+  0.326610726770743760, 0.326232373775669270, 0.325854008785963320,
+    0.325475631815536570,
+  0.325097242878301660, 0.324718841988170470, 0.324340429159055250,
+    0.323962004404870050,
+  0.323583567739527570, 0.323205119176942720, 0.322826658731029110,
+    0.322448186415702550,
+  0.322069702244877910, 0.321691206232470550, 0.321312698392397570,
+    0.320934178738574720,
+  0.320555647284919980, 0.320177104045350440, 0.319798549033783570,
+    0.319419982264138650,
+  0.319041403750333630, 0.318662813506288670, 0.318284211545923010,
+    0.317905597883156250,
+  0.317526972531909870, 0.317148335506103940, 0.316769686819660780,
+    0.316391026486501690,
+  0.316012354520548600, 0.315633670935725030, 0.315254975745953180,
+    0.314876268965157470,
+  0.314497550607261090, 0.314118820686189180, 0.313740079215866160,
+    0.313361326210216840,
+  0.312982561683167790, 0.312603785648644220, 0.312224998120573420,
+    0.311846199112882030,
+  0.311467388639496860, 0.311088566714346650, 0.310709733351358600,
+    0.310330888564462340,
+  0.309952032367586390, 0.309573164774659850, 0.309194285799613390,
+    0.308815395456376430,
+  0.308436493758880660, 0.308057580721056660, 0.307678656356835560,
+    0.307299720680150270,
+  0.306920773704932260, 0.306541815445115160, 0.306162845914631390,
+    0.305783865127415400,
+  0.305404873097400780, 0.305025869838521590, 0.304646855364713530,
+    0.304267829689911010,
+  0.303888792828050650, 0.303509744793068030, 0.303130685598899270,
+    0.302751615259482190,
+  0.302372533788753170, 0.301993441200650910, 0.301614337509113100,
+    0.301235222728077840,
+  0.300856096871485010, 0.300476959953273060, 0.300097811987382670,
+    0.299718652987753580,
+  0.299339482968325970, 0.298960301943041680, 0.298581109925841300,
+    0.298201906930667390,
+  0.297822692971461410, 0.297443468062166820, 0.297064232216726120,
+    0.296684985449082390,
+  0.296305727773180260, 0.295926459202963120, 0.295547179752376430,
+    0.295167889435364820,
+  0.294788588265873170, 0.294409276257848300, 0.294029953425235520,
+    0.293650619781982260,
+  0.293271275342035120, 0.292891920119341120, 0.292512554127848930,
+    0.292133177381505850,
+  0.291753789894261320, 0.291374391680063520, 0.290994982752862730,
+    0.290615563126608250,
+  0.290236132815249790, 0.289856691832738880, 0.289477240193025510,
+    0.289097777910061970,
+  0.288718304997799550, 0.288338821470189910, 0.287959327341186510,
+    0.287579822624741350,
+  0.287200307334808670, 0.286820781485341620, 0.286441245090293950,
+    0.286061698163620930,
+  0.285682140719276560, 0.285302572771216960, 0.284922994333397350,
+    0.284543405419773240,
+  0.284163806044301910, 0.283784196220939370, 0.283404575963643550,
+    0.283024945286371230,
+  0.282645304203081090, 0.282265652727731130, 0.281885990874279570,
+    0.281506318656686290,
+  0.281126636088910030, 0.280746943184911340, 0.280367239958650150,
+    0.279987526424086530,
+  0.279607802595182420, 0.279228068485898210, 0.278848324110196550,
+    0.278468569482039130,
+  0.278088804615388040, 0.277709029524206950, 0.277329244222458250,
+    0.276949448724106480,
+  0.276569643043115150, 0.276189827193448200, 0.275810001189071290,
+    0.275430165043948570,
+  0.275050318772046500, 0.274670462387330010, 0.274290595903766200,
+    0.273910719335321300,
+  0.273530832695961790, 0.273150935999655950, 0.272771029260370560,
+    0.272391112492074590,
+  0.272011185708736060, 0.271631248924323390, 0.271251302152806570,
+    0.270871345408154380,
+  0.270491378704337540, 0.270111402055325910, 0.269731415475089780,
+    0.269351418977600950,
+  0.268971412576829990, 0.268591396286749500, 0.268211370121331170,
+    0.267831334094547010,
+  0.267451288220370730, 0.267071232512774700, 0.266691166985733360,
+    0.266311091653219700,
+  0.265931006529208920, 0.265550911627675250, 0.265170806962593210,
+    0.264790692547939020,
+  0.264410568397687560, 0.264030434525815760, 0.263650290946299660,
+    0.263270137673115630,
+  0.262889974720241610, 0.262509802101654310, 0.262129619831332370,
+    0.261749427923253670,
+  0.261369226391396310, 0.260989015249740050, 0.260608794512263380,
+    0.260228564192946710,
+  0.259848324305769600, 0.259468074864711960, 0.259087815883755400,
+    0.258707547376880010,
+  0.258327269358068100, 0.257946981841300490, 0.257566684840560170,
+    0.257186378369829110,
+  0.256806062443089680, 0.256425737074325920, 0.256045402277520320,
+    0.255665058066657680,
+  0.255284704455721660, 0.254904341458696390, 0.254523969089567590,
+    0.254143587362319620,
+  0.253763196290938850, 0.253382795889410710, 0.253002386171721110,
+    0.252621967151857420,
+  0.252241538843805680, 0.251861101261554090, 0.251480654419089730,
+    0.251100198330400150,
+  0.250719733009474530, 0.250339258470300590, 0.249958774726868170,
+    0.249578281793165680,
+  0.249197779683183660, 0.248817268410911650, 0.248436747990339490,
+    0.248056218435458720,
+  0.247675679760259450, 0.247295131978733870, 0.246914575104873220,
+    0.246534009152669040,
+  0.246153434136114490, 0.245772850069201410, 0.245392256965923620,
+    0.245011654840274010,
+  0.244631043706245800, 0.244250423577833860, 0.243869794469031620,
+    0.243489156393834590,
+  0.243108509366237320, 0.242727853400234670, 0.242347188509823150,
+    0.241966514708997830,
+  0.241585832011755900, 0.241205140432093070, 0.240824439984007180,
+    0.240443730681495050,
+  0.240063012538553830, 0.239682285569182310, 0.239301549787377890,
+    0.238920805207139960,
+  0.238540051842467020, 0.238159289707357810, 0.237778518815812740,
+    0.237397739181830820,
+  0.237016950819413100, 0.236636153742559610, 0.236255347965270780,
+    0.235874533501548580,
+  0.235493710365393630, 0.235112878570808560, 0.234732038131795020,
+    0.234351189062355030,
+  0.233970331376492150, 0.233589465088208580, 0.233208590211508550,
+    0.232827706760394850,
+  0.232446814748872410, 0.232065914190945020, 0.231685005100616930,
+    0.231304087491893930,
+  0.230923161378780380, 0.230542226775282770, 0.230161283695406500,
+    0.229780332153157300,
+  0.229399372162542610, 0.229018403737568290, 0.228637426892242400,
+    0.228256441640571880,
+  0.227875447996564060, 0.227494445974227850, 0.227113435587570770,
+    0.226732416850602300,
+  0.226351389777330990, 0.225970354381765690, 0.225589310677916880,
+    0.225208258679793520,
+  0.224827198401406690, 0.224446129856766040, 0.224065053059883250,
+    0.223683968024768950,
+  0.223302874765434120, 0.222921773295891380, 0.222540663630151820,
+    0.222159545782228660,
+  0.221778419766134050, 0.221397285595880480, 0.221016143285482050,
+    0.220634992848951380,
+  0.220253834300303180, 0.219872667653551100, 0.219491492922709110,
+    0.219110310121792800,
+  0.218729119264816280, 0.218347920365795780, 0.217966713438746380,
+    0.217585498497683580,
+  0.217204275556624420, 0.216823044629584520, 0.216441805730581500,
+    0.216060558873631570,
+  0.215679304072752960, 0.215298041341962870, 0.214916770695278810,
+    0.214535492146719880,
+  0.214154205710303750, 0.213772911400050090, 0.213391609229977570,
+    0.213010299214105140,
+  0.212628981366453330, 0.212247655701041290, 0.211866322231890090,
+    0.211484980973019880,
+  0.211103631938451000, 0.210722275142205480, 0.210340910598303870,
+    0.209959538320768660,
+  0.209578158323621420, 0.209196770620883960, 0.208815375226579670,
+    0.208433972154730530,
+  0.208052561419360520, 0.207671143034492080, 0.207289717014149830,
+    0.206908283372357230,
+  0.206526842123138070, 0.206145393280517730, 0.205763936858520150,
+    0.205382472871171230,
+  0.205001001332495910, 0.204619522256519300, 0.204238035657268250,
+    0.203856541548768030,
+  0.203475039945045950, 0.203093530860128300, 0.202712014308041620,
+    0.202330490302814110,
+  0.201948958858472420, 0.201567419989045200, 0.201185873708560170,
+    0.200804320031045230,
+  0.200422758970529910, 0.200041190541042220, 0.199659614756612230,
+    0.199278031631268500,
+  0.198896441179041650, 0.198514843413961220, 0.198133238350057030,
+    0.197751626001360480,
+  0.197370006381901520, 0.196988379505712050, 0.196606745386822960,
+    0.196225104039265410,
+  0.195843455477072190, 0.195461799714274460, 0.195080136764905570,
+    0.194698466642997730,
+  0.194316789362583340, 0.193935104937696560, 0.193553413382369890,
+    0.193171714710637930,
+  0.192790008936534220, 0.192408296074092570, 0.192026576137348330,
+    0.191644849140335360,
+  0.191263115097089540, 0.190881374021645320, 0.190499625928039040,
+    0.190117870830306100,
+  0.189736108742482030, 0.189354339678604100, 0.188972563652707950,
+    0.188590780678831250,
+  0.188208990771010640, 0.187827193943283040, 0.187445390209686870,
+    0.187063579584259070,
+  0.186681762081038650, 0.186299937714063470, 0.185918106497371700,
+    0.185536268445003070,
+  0.185154423570995760, 0.184772571889390000, 0.184390713414225000,
+    0.184008848159540110,
+  0.183626976139376310, 0.183245097367773090, 0.182863211858771880,
+    0.182481319626412670,
+  0.182099420684737420, 0.181717515047787020, 0.181335602729602590,
+    0.180953683744226880,
+  0.180571758105701030, 0.180189825828068250, 0.179807886925370670,
+    0.179425941411650660,
+  0.179043989300952110, 0.178662030607317450, 0.178280065344791100,
+    0.177898093527416370,
+  0.177516115169236820, 0.177134130284297610, 0.176752138886642350,
+    0.176370140990316640,
+  0.175988136609365020, 0.175606125757832240, 0.175224108449764660,
+    0.174842084699207030,
+  0.174460054520206240, 0.174078017926807490, 0.173695974933058080,
+    0.173313925553004180,
+  0.172931869800692250, 0.172549807690170230, 0.172167739235484620,
+    0.171785664450683800,
+  0.171403583349815180, 0.171021495946926340, 0.170639402256066410,
+    0.170257302291283000,
+  0.169875196066625710, 0.169493083596143100, 0.169110964893883830,
+    0.168728839973898290,
+  0.168346708850235140, 0.167964571536945220, 0.167582428048078130,
+    0.167200278397683750,
+  0.166818122599813570, 0.166435960668517400, 0.166053792617847200,
+    0.165671618461853270,
+  0.165289438214587970, 0.164907251890102520, 0.164525059502448390,
+    0.164142861065678550,
+  0.163760656593844480, 0.163378446100999640, 0.162996229601196390,
+    0.162614007108487250,
+  0.162231778636926370, 0.161849544200566300, 0.161467303813461580,
+    0.161085057489665670,
+  0.160702805243232240, 0.160320547088216470, 0.159938283038672050,
+    0.159556013108654580,
+  0.159173737312218650, 0.158791455663418930, 0.158409168176311760,
+    0.158026874864951870,
+  0.157644575743395960, 0.157262270825699210, 0.156879960125918730,
+    0.156497643658110590,
+  0.156115321436331000, 0.155732993474637760, 0.155350659787087090,
+    0.154968320387737170,
+  0.154585975290645110, 0.154203624509868190, 0.153821268059465250,
+    0.153438905953493550,
+  0.153056538206012340, 0.152674164831079730, 0.152291785842754070,
+    0.151909401255095250,
+  0.151527011082161540, 0.151144615338013210, 0.150762214036709470,
+    0.150379807192309620,
+  0.149997394818874590, 0.149614976930463660, 0.149232553541138180,
+    0.148850124664957870,
+  0.148467690315984390, 0.148085250508278370, 0.147702805255900570,
+    0.147320354572913260,
+  0.146937898473377210, 0.146555436971355090, 0.146172970080908520,
+    0.145790497816099230,
+  0.145408020190990560, 0.145025537219644170, 0.144643048916123810,
+    0.144260555294492000,
+  0.143878056368811510, 0.143495552153146630, 0.143113042661560050,
+    0.142730527908116440,
+  0.142348007906879320, 0.141965482671912420, 0.141582952217280980,
+    0.141200416557048680,
+  0.140817875705281120, 0.140435329676042390, 0.140052778483398480,
+    0.139670222141414250,
+  0.139287660664154770, 0.138905094065686600, 0.138522522360074780,
+    0.138139945561386200,
+  0.137757363683686740, 0.137374776741042340, 0.136992184747520560,
+    0.136609587717187310,
+  0.136226985664110460, 0.135844378602356760, 0.135461766545993150,
+    0.135079149509088060,
+  0.134696527505708320, 0.134313900549922760, 0.133931268655799020,
+    0.133548631837404950,
+  0.133165990108809860, 0.132783343484081580, 0.132400691977289760,
+    0.132018035602502530,
+  0.131635374373789940, 0.131252708305220960, 0.130870037410864640,
+    0.130487361704791580,
+  0.130104681201070800, 0.129721995913773260, 0.129339305856968730,
+    0.128956611044727220,
+  0.128573911491120210, 0.128191207210217570, 0.127808498216091110,
+    0.127425784522811530,
+  0.127043066144449680, 0.126660343095077900, 0.126277615388766920,
+    0.125894883039589430,
+  0.125512146061616980, 0.125129404468921260, 0.124746658275575490,
+    0.124363907495651240,
+  0.123981152143222060, 0.123598392232359880, 0.123215627777138580,
+    0.122832858791630880,
+  0.122450085289909640, 0.122067307286049230, 0.121684524794122440,
+    0.121301737828203960,
+  0.120918946402367330, 0.120536150530686250, 0.120153350227235940,
+    0.119770545506089950,
+  0.119387736381323830, 0.119004922867011920, 0.118622104977228730,
+    0.118239282726050290,
+  0.117856456127550970, 0.117473625195807100, 0.117090789944893860,
+    0.116707950388886520,
+  0.116325106541861910, 0.115942258417895240, 0.115559406031063570,
+    0.115176549395442460,
+  0.114793688525109290, 0.114410823434140360, 0.114027954136612060,
+    0.113645080646602280,
+  0.113262202978187320, 0.112879321145445350, 0.112496435162453430,
+    0.112113545043288730,
+  0.111730650802029900, 0.111347752452754000, 0.110964850009539970,
+    0.110581943486465610,
+  0.110199032897608850, 0.109816118257049110, 0.109433199578864170,
+    0.109050276877133770,
+  0.108667350165936400, 0.108284419459350770, 0.107901484771457020,
+    0.107518546116333660,
+  0.107135603508061170, 0.106752656960718350, 0.106369706488385940,
+    0.105986752105143480,
+  0.105603793825070680, 0.105220831662248700, 0.104837865630757090,
+    0.104454895744677270,
+  0.104071922018089540, 0.103688944465074300, 0.103305963099713400,
+    0.102922977936087120,
+  0.102539988988277600, 0.102156996270365800, 0.101773999796432830,
+    0.101390999580561250,
+  0.101007995636832020, 0.100624987979327970, 0.100241976622130760,
+    0.099858961579322170,
+  0.099475942864985456, 0.099092920493202258, 0.098709894478056073,
+    0.098326864833628791,
+  0.097943831574004214, 0.097560794713264939, 0.097177754265493674,
+    0.096794710244774623,
+  0.096411662665190329, 0.096028611540825232, 0.095645556885762609,
+    0.095262498714085819,
+  0.094879437039879722, 0.094496371877227495, 0.094113303240214247,
+    0.093730231142923864,
+  0.093347155599440373, 0.092964076623849271, 0.092580994230234359,
+    0.092197908432681386,
+  0.091814819245274432, 0.091431726682099479, 0.091048630757241303,
+    0.090665531484784803,
+  0.090282428878816323, 0.089899322953420582, 0.089516213722684160,
+    0.089133101200692441,
+  0.088749985401530951, 0.088366866339286629, 0.087983744028044805,
+    0.087600618481892656,
+  0.087217489714916191, 0.086834357741201490, 0.086451222574836131,
+    0.086068084229906014,
+  0.085684942720498897, 0.085301798060701386, 0.084918650264600160,
+    0.084535499346283349,
+  0.084152345319837438, 0.083769188199350780, 0.083386027998910095,
+    0.083002864732603973,
+  0.082619698414519799, 0.082236529058745025, 0.081853356679368619,
+    0.081470181290477811,
+  0.081087002906161790, 0.080703821540508452, 0.080320637207605849,
+    0.079937449921543474,
+  0.079554259696409127, 0.079171066546292510, 0.078787870485282088,
+    0.078404671527466441,
+  0.078021469686935602, 0.077638264977777913, 0.077255057414083589,
+    0.076871847009941652,
+  0.076488633779441206, 0.076105417736672773, 0.075722198895725248,
+    0.075338977270689375,
+  0.074955752875654230, 0.074572525724710764, 0.074189295831948693,
+    0.073806063211457842,
+  0.073422827877329483, 0.073039589843653177, 0.072656349124520389,
+    0.072273105734021334,
+  0.071889859686246352, 0.071506610995287156, 0.071123359675233852,
+    0.070740105740178361,
+  0.070356849204211397, 0.069973590081423773, 0.069590328385907715,
+    0.069207064131753759,
+  0.068823797333054326, 0.068440528003900616, 0.068057256158383886,
+    0.067673981810596848,
+  0.067290704974630494, 0.066907425664577733, 0.066524143894529736,
+    0.066140859678579578,
+  0.065757573030819083, 0.065374283965340146, 0.064990992496236119,
+    0.064607698637598646,
+  0.064224402403521202, 0.063841103808096086, 0.063457802865415636,
+    0.063074499589573618,
+  0.062691193994662109, 0.062307886094775049, 0.061924575904005130,
+    0.061541263436445129,
+  0.061157948706189229, 0.060774631727329942, 0.060391312513961619,
+    0.060007991080177375,
+  0.059624667440070382, 0.059241341607735261, 0.058858013597264912,
+    0.058474683422754095,
+  0.058091351098295878, 0.057708016637985186, 0.057324680055915692,
+    0.056941341366181127,
+  0.056558000582876661, 0.056174657720095743, 0.055791312791933681,
+    0.055407965812484541,
+  0.055024616795842439, 0.054641265756102911, 0.054257912707359794,
+    0.053874557663708772,
+  0.053491200639244271, 0.053107841648060788, 0.052724480704254229,
+    0.052341117821918783,
+  0.051957753015150501, 0.051574386298044173, 0.051191017684694640,
+    0.050807647189198162,
+  0.050424274825649297, 0.050040900608144430, 0.049657524550778251,
+    0.049274146667647289,
+  0.048890766972846805, 0.048507385480472134, 0.048124002204620014,
+    0.047740617159385448,
+  0.047357230358865306, 0.046973841817155179, 0.046590451548350717,
+    0.046207059566548990,
+  0.045823665885845313, 0.045440270520336883, 0.045056873484119603,
+    0.044673474791289434,
+  0.044290074455943754, 0.043906672492178188, 0.043523268914090238,
+    0.043139863735776100,
+  0.042756456971332048, 0.042373048634855741, 0.041989638740443119,
+    0.041606227302191955,
+  0.041222814334198304, 0.040839399850560058, 0.040455983865373815,
+    0.040072566392736257,
+  0.039689147446745419, 0.039305727041497644, 0.038922305191091085,
+    0.038538881909622631,
+  0.038155457211189216, 0.037772031109889144, 0.037388603619819022,
+    0.037005174755077273,
+  0.036621744529761024, 0.036238312957967478, 0.035854880053795196,
+    0.035471445831341021,
+  0.035088010304703626, 0.034704573487980395, 0.034321135395268765,
+    0.033937696040667535,
+  0.033554255438273790, 0.033170813602186440, 0.032787370546502645,
+    0.032403926285321405,
+  0.032020480832740429, 0.031637034202857461, 0.031253586409771626,
+    0.030870137467580314,
+  0.030486687390382738, 0.030103236192276818, 0.029719783887360508,
+    0.029336330489733147,
+  0.028952876013492331, 0.028569420472737472, 0.028185963881566689,
+    0.027802506254078142,
+  0.027419047604371360, 0.027035587946544135, 0.026652127294696067,
+    0.026268665662925468,
+  0.025885203065330677, 0.025501739516011413, 0.025118275029065638,
+    0.024734809618593138,
+  0.024351343298691951, 0.023967876083461924, 0.023584407987001611,
+    0.023200939023409587,
+  0.022817469206785804, 0.022433998551228459, 0.022050527070837558,
+    0.021667054779711814,
+  0.021283581691949955, 0.020900107821652084, 0.020516633182916549,
+    0.020133157789843505,
+  0.019749681656531803, 0.019366204797080316, 0.018982727225589285,
+    0.018599248956157190,
+  0.018215770002884327, 0.017832290379869671, 0.017448810101212228,
+    0.017065329181012358,
+  0.016681847633368677, 0.016298365472381587, 0.015914882712149747,
+    0.015531399366773606,
+  0.015147915450352307, 0.014764430976985016, 0.014380945960772247,
+    0.013997460415812761,
+  0.013613974356207112, 0.013230487796054543, 0.012847000749454314,
+    0.012463513230507034,
+  0.012080025253311559, 0.011696536831968529, 0.011313047980577277,
+    0.010929558713237145,
+  0.010546069044048827, 0.010162578987111254, 0.009779088556525145,
+    0.009395597766389905,
+  0.009012106630804949, 0.008628615163871038, 0.008245123379687167,
+    0.007861631292354124,
+  0.007478138915970929, 0.007094646264638386, 0.006711153352455981,
+    0.006327660193523208,
+  0.005944166801940901, 0.005560673191808128, 0.005177179377225743,
+    0.004793685372293270,
+  0.004410191191110246, 0.004026696847777542, 0.003643202356394263,
+    0.003259707731061291,
+  0.002876212985878184, 0.002492718134944503, 0.002109223192361147,
+    0.001725728172227238,
+  0.001342233088643682, 0.000958737955710053, 0.000575242787525925,
+    0.000191747598192208,
+
+};
+
+/**    
+ * @brief  Initialization function for the floating-point DCT4/IDCT4.   
+ * @param[in,out] *S         points to an instance of floating-point DCT4/IDCT4 structure.   
+ * @param[in]     *S_RFFT    points to an instance of floating-point RFFT/RIFFT structure.   
+ * @param[in]     *S_CFFT    points to an instance of floating-point CFFT/CIFFT structure.   
+ * @param[in]     N			 length of the DCT4.   
+ * @param[in]     Nby2       half of the length of the DCT4.   
+ * @param[in]     normalize  normalizing factor.   
+ * @return        arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.   
+ * \par Normalizing factor:    
+ * The normalizing factor is <code>sqrt(2/N)</code>, which depends on the size of transform <code>N</code>.    
+ * Floating-point normalizing factors are mentioned in the table below for different DCT sizes:    
+ * \image html dct4NormalizingF32Table.gif    
+ */
+
+arm_status arm_dct4_init_f32(
+  arm_dct4_instance_f32 * S,
+  arm_rfft_instance_f32 * S_RFFT,
+  arm_cfft_radix4_instance_f32 * S_CFFT,
+  uint16_t N,
+  uint16_t Nby2,
+  float32_t normalize)
+{
+  /*  Initialize the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+
+  /* Initializing the pointer array with the weight table base addresses of different lengths */
+  float32_t *twiddlePtr[4] =
+    { (float32_t *) Weights_128, (float32_t *) Weights_512,
+    (float32_t *) Weights_2048, (float32_t *) Weights_8192
+  };
+
+  /* Initializing the pointer array with the cos factor table base addresses of different lengths */
+  float32_t *pCosFactor[4] =
+    { (float32_t *) cos_factors_128, (float32_t *) cos_factors_512,
+    (float32_t *) cos_factors_2048, (float32_t *) cos_factors_8192
+  };
+
+  /* Initialize the DCT4 length */
+  S->N = N;
+
+  /* Initialize the half of DCT4 length */
+  S->Nby2 = Nby2;
+
+  /* Initialize the DCT4 Normalizing factor */
+  S->normalize = normalize;
+
+  /* Initialize Real FFT Instance */
+  S->pRfft = S_RFFT;
+
+  /* Initialize Complex FFT Instance */
+  S->pCfft = S_CFFT;
+
+  switch (N)
+  {
+    /* Initialize the table modifier values */
+  case 8192u:
+    S->pTwiddle = twiddlePtr[3];
+    S->pCosFactor = pCosFactor[3];
+    break;
+  case 2048u:
+    S->pTwiddle = twiddlePtr[2];
+    S->pCosFactor = pCosFactor[2];
+    break;
+  case 512u:
+    S->pTwiddle = twiddlePtr[1];
+    S->pCosFactor = pCosFactor[1];
+    break;
+  case 128u:
+    S->pTwiddle = twiddlePtr[0];
+    S->pCosFactor = pCosFactor[0];
+    break;
+  default:
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+
+  /* Initialize the RFFT/RIFFT */
+  arm_rfft_init_f32(S->pRfft, S->pCfft, S->N, 0u, 1u);
+
+  /* return the status of DCT4 Init function */
+  return (status);
+}
+
+/**    
+   * @} end of DCT4_IDCT4 group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,4284 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_dct4_init_q15.c    
+*    
+* Description:	Initialization function of DCT-4 & IDCT4 Q15    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup DCT4_IDCT4    
+ * @{    
+ */
+
+/*    
+* @brief  Weights Table    
+*/
+
+/**    
+* \par    
+* Weights tables are generated using the formula : <pre>weights[n] = e^(-j*n*pi/(2*N))</pre>    
+* \par    
+* C command to generate the table    
+* <pre>    
+* for(i = 0; i< N; i++)    
+* {    
+*   weights[2*i]= cos(i*c);    
+*   weights[(2*i)+1]= -sin(i * c);    
+* } </pre>    
+* \par    
+* where <code>N</code> is the Number of weights to be calculated and <code>c</code> is <code>pi/(2*N)</code>    
+* \par    
+* Converted the output to q15 format by multiplying with 2^31 and saturated if required.    
+* \par    
+* In the tables below the real and imaginary values are placed alternatively, hence the    
+* array length is <code>2*N</code>.    
+*/
+
+static const q15_t ALIGN4 WeightsQ15_128[256] = {
+  0x7fff, 0x0, 0x7ffd, 0xfe6e, 0x7ff6, 0xfcdc, 0x7fe9, 0xfb4a,
+  0x7fd8, 0xf9b9, 0x7fc2, 0xf827, 0x7fa7, 0xf696, 0x7f87, 0xf505,
+  0x7f62, 0xf375, 0x7f38, 0xf1e5, 0x7f09, 0xf055, 0x7ed5, 0xeec7,
+  0x7e9d, 0xed38, 0x7e5f, 0xebab, 0x7e1d, 0xea1e, 0x7dd6, 0xe893,
+  0x7d8a, 0xe708, 0x7d39, 0xe57e, 0x7ce3, 0xe3f5, 0x7c89, 0xe26d,
+  0x7c29, 0xe0e7, 0x7bc5, 0xdf61, 0x7b5d, 0xdddd, 0x7aef, 0xdc5a,
+  0x7a7d, 0xdad8, 0x7a05, 0xd958, 0x798a, 0xd7da, 0x7909, 0xd65d,
+  0x7884, 0xd4e1, 0x77fa, 0xd368, 0x776c, 0xd1ef, 0x76d9, 0xd079,
+  0x7641, 0xcf05, 0x75a5, 0xcd92, 0x7504, 0xcc22, 0x745f, 0xcab3,
+  0x73b5, 0xc946, 0x7307, 0xc7dc, 0x7255, 0xc674, 0x719e, 0xc50e,
+  0x70e2, 0xc3aa, 0x7023, 0xc248, 0x6f5f, 0xc0e9, 0x6e96, 0xbf8d,
+  0x6dca, 0xbe32, 0x6cf9, 0xbcdb, 0x6c24, 0xbb86, 0x6b4a, 0xba33,
+  0x6a6d, 0xb8e4, 0x698c, 0xb797, 0x68a6, 0xb64c, 0x67bd, 0xb505,
+  0x66cf, 0xb3c1, 0x65dd, 0xb27f, 0x64e8, 0xb141, 0x63ef, 0xb005,
+  0x62f2, 0xaecd, 0x61f1, 0xad97, 0x60ec, 0xac65, 0x5fe3, 0xab36,
+  0x5ed7, 0xaa0b, 0x5dc7, 0xa8e3, 0x5cb4, 0xa7be, 0x5b9d, 0xa69c,
+  0x5a82, 0xa57e, 0x5964, 0xa463, 0x5842, 0xa34c, 0x571d, 0xa239,
+  0x55f5, 0xa129, 0x54ca, 0xa01d, 0x539b, 0x9f14, 0x5269, 0x9e0f,
+  0x5133, 0x9d0e, 0x4ffb, 0x9c11, 0x4ebf, 0x9b18, 0x4d81, 0x9a23,
+  0x4c3f, 0x9931, 0x4afb, 0x9843, 0x49b4, 0x975a, 0x4869, 0x9674,
+  0x471c, 0x9593, 0x45cd, 0x94b6, 0x447a, 0x93dc, 0x4325, 0x9307,
+  0x41ce, 0x9236, 0x4073, 0x916a, 0x3f17, 0x90a1, 0x3db8, 0x8fdd,
+  0x3c56, 0x8f1e, 0x3af2, 0x8e62, 0x398c, 0x8dab, 0x3824, 0x8cf9,
+  0x36ba, 0x8c4b, 0x354d, 0x8ba1, 0x33de, 0x8afc, 0x326e, 0x8a5b,
+  0x30fb, 0x89bf, 0x2f87, 0x8927, 0x2e11, 0x8894, 0x2c98, 0x8806,
+  0x2b1f, 0x877c, 0x29a3, 0x86f7, 0x2826, 0x8676, 0x26a8, 0x85fb,
+  0x2528, 0x8583, 0x23a6, 0x8511, 0x2223, 0x84a3, 0x209f, 0x843b,
+  0x1f19, 0x83d7, 0x1d93, 0x8377, 0x1c0b, 0x831d, 0x1a82, 0x82c7,
+  0x18f8, 0x8276, 0x176d, 0x822a, 0x15e2, 0x81e3, 0x1455, 0x81a1,
+  0x12c8, 0x8163, 0x1139, 0x812b, 0xfab, 0x80f7, 0xe1b, 0x80c8,
+  0xc8b, 0x809e, 0xafb, 0x8079, 0x96a, 0x8059, 0x7d9, 0x803e,
+  0x647, 0x8028, 0x4b6, 0x8017, 0x324, 0x800a, 0x192, 0x8003,
+};
+
+static const q15_t ALIGN4 WeightsQ15_512[1024] = {
+  0x7fff, 0x0, 0x7fff, 0xff9c, 0x7fff, 0xff37, 0x7ffe, 0xfed3,
+  0x7ffd, 0xfe6e, 0x7ffc, 0xfe0a, 0x7ffa, 0xfda5, 0x7ff8, 0xfd41,
+  0x7ff6, 0xfcdc, 0x7ff3, 0xfc78, 0x7ff0, 0xfc13, 0x7fed, 0xfbaf,
+  0x7fe9, 0xfb4a, 0x7fe5, 0xfae6, 0x7fe1, 0xfa81, 0x7fdd, 0xfa1d,
+  0x7fd8, 0xf9b9, 0x7fd3, 0xf954, 0x7fce, 0xf8f0, 0x7fc8, 0xf88b,
+  0x7fc2, 0xf827, 0x7fbc, 0xf7c3, 0x7fb5, 0xf75e, 0x7fae, 0xf6fa,
+  0x7fa7, 0xf696, 0x7f9f, 0xf632, 0x7f97, 0xf5cd, 0x7f8f, 0xf569,
+  0x7f87, 0xf505, 0x7f7e, 0xf4a1, 0x7f75, 0xf43d, 0x7f6b, 0xf3d9,
+  0x7f62, 0xf375, 0x7f58, 0xf311, 0x7f4d, 0xf2ad, 0x7f43, 0xf249,
+  0x7f38, 0xf1e5, 0x7f2d, 0xf181, 0x7f21, 0xf11d, 0x7f15, 0xf0b9,
+  0x7f09, 0xf055, 0x7efd, 0xeff2, 0x7ef0, 0xef8e, 0x7ee3, 0xef2a,
+  0x7ed5, 0xeec7, 0x7ec8, 0xee63, 0x7eba, 0xedff, 0x7eab, 0xed9c,
+  0x7e9d, 0xed38, 0x7e8e, 0xecd5, 0x7e7f, 0xec72, 0x7e6f, 0xec0e,
+  0x7e5f, 0xebab, 0x7e4f, 0xeb48, 0x7e3f, 0xeae5, 0x7e2e, 0xea81,
+  0x7e1d, 0xea1e, 0x7e0c, 0xe9bb, 0x7dfa, 0xe958, 0x7de8, 0xe8f6,
+  0x7dd6, 0xe893, 0x7dc3, 0xe830, 0x7db0, 0xe7cd, 0x7d9d, 0xe76a,
+  0x7d8a, 0xe708, 0x7d76, 0xe6a5, 0x7d62, 0xe643, 0x7d4e, 0xe5e0,
+  0x7d39, 0xe57e, 0x7d24, 0xe51c, 0x7d0f, 0xe4b9, 0x7cf9, 0xe457,
+  0x7ce3, 0xe3f5, 0x7ccd, 0xe393, 0x7cb7, 0xe331, 0x7ca0, 0xe2cf,
+  0x7c89, 0xe26d, 0x7c71, 0xe20b, 0x7c5a, 0xe1aa, 0x7c42, 0xe148,
+  0x7c29, 0xe0e7, 0x7c11, 0xe085, 0x7bf8, 0xe024, 0x7bdf, 0xdfc2,
+  0x7bc5, 0xdf61, 0x7bac, 0xdf00, 0x7b92, 0xde9f, 0x7b77, 0xde3e,
+  0x7b5d, 0xdddd, 0x7b42, 0xdd7c, 0x7b26, 0xdd1b, 0x7b0b, 0xdcbb,
+  0x7aef, 0xdc5a, 0x7ad3, 0xdbf9, 0x7ab6, 0xdb99, 0x7a9a, 0xdb39,
+  0x7a7d, 0xdad8, 0x7a5f, 0xda78, 0x7a42, 0xda18, 0x7a24, 0xd9b8,
+  0x7a05, 0xd958, 0x79e7, 0xd8f9, 0x79c8, 0xd899, 0x79a9, 0xd839,
+  0x798a, 0xd7da, 0x796a, 0xd77a, 0x794a, 0xd71b, 0x792a, 0xd6bc,
+  0x7909, 0xd65d, 0x78e8, 0xd5fe, 0x78c7, 0xd59f, 0x78a6, 0xd540,
+  0x7884, 0xd4e1, 0x7862, 0xd483, 0x7840, 0xd424, 0x781d, 0xd3c6,
+  0x77fa, 0xd368, 0x77d7, 0xd309, 0x77b4, 0xd2ab, 0x7790, 0xd24d,
+  0x776c, 0xd1ef, 0x7747, 0xd192, 0x7723, 0xd134, 0x76fe, 0xd0d7,
+  0x76d9, 0xd079, 0x76b3, 0xd01c, 0x768e, 0xcfbf, 0x7668, 0xcf62,
+  0x7641, 0xcf05, 0x761b, 0xcea8, 0x75f4, 0xce4b, 0x75cc, 0xcdef,
+  0x75a5, 0xcd92, 0x757d, 0xcd36, 0x7555, 0xccda, 0x752d, 0xcc7e,
+  0x7504, 0xcc22, 0x74db, 0xcbc6, 0x74b2, 0xcb6a, 0x7489, 0xcb0e,
+  0x745f, 0xcab3, 0x7435, 0xca58, 0x740b, 0xc9fc, 0x73e0, 0xc9a1,
+  0x73b5, 0xc946, 0x738a, 0xc8ec, 0x735f, 0xc891, 0x7333, 0xc836,
+  0x7307, 0xc7dc, 0x72db, 0xc782, 0x72af, 0xc728, 0x7282, 0xc6ce,
+  0x7255, 0xc674, 0x7227, 0xc61a, 0x71fa, 0xc5c0, 0x71cc, 0xc567,
+  0x719e, 0xc50e, 0x716f, 0xc4b4, 0x7141, 0xc45b, 0x7112, 0xc403,
+  0x70e2, 0xc3aa, 0x70b3, 0xc351, 0x7083, 0xc2f9, 0x7053, 0xc2a0,
+  0x7023, 0xc248, 0x6ff2, 0xc1f0, 0x6fc1, 0xc198, 0x6f90, 0xc141,
+  0x6f5f, 0xc0e9, 0x6f2d, 0xc092, 0x6efb, 0xc03b, 0x6ec9, 0xbfe3,
+  0x6e96, 0xbf8d, 0x6e63, 0xbf36, 0x6e30, 0xbedf, 0x6dfd, 0xbe89,
+  0x6dca, 0xbe32, 0x6d96, 0xbddc, 0x6d62, 0xbd86, 0x6d2d, 0xbd30,
+  0x6cf9, 0xbcdb, 0x6cc4, 0xbc85, 0x6c8f, 0xbc30, 0x6c59, 0xbbdb,
+  0x6c24, 0xbb86, 0x6bee, 0xbb31, 0x6bb8, 0xbadc, 0x6b81, 0xba88,
+  0x6b4a, 0xba33, 0x6b13, 0xb9df, 0x6adc, 0xb98b, 0x6aa5, 0xb937,
+  0x6a6d, 0xb8e4, 0x6a35, 0xb890, 0x69fd, 0xb83d, 0x69c4, 0xb7ea,
+  0x698c, 0xb797, 0x6953, 0xb744, 0x6919, 0xb6f1, 0x68e0, 0xb69f,
+  0x68a6, 0xb64c, 0x686c, 0xb5fa, 0x6832, 0xb5a8, 0x67f7, 0xb557,
+  0x67bd, 0xb505, 0x6782, 0xb4b4, 0x6746, 0xb462, 0x670b, 0xb411,
+  0x66cf, 0xb3c1, 0x6693, 0xb370, 0x6657, 0xb31f, 0x661a, 0xb2cf,
+  0x65dd, 0xb27f, 0x65a0, 0xb22f, 0x6563, 0xb1df, 0x6526, 0xb190,
+  0x64e8, 0xb141, 0x64aa, 0xb0f1, 0x646c, 0xb0a2, 0x642d, 0xb054,
+  0x63ef, 0xb005, 0x63b0, 0xafb7, 0x6371, 0xaf69, 0x6331, 0xaf1b,
+  0x62f2, 0xaecd, 0x62b2, 0xae7f, 0x6271, 0xae32, 0x6231, 0xade4,
+  0x61f1, 0xad97, 0x61b0, 0xad4b, 0x616f, 0xacfe, 0x612d, 0xacb2,
+  0x60ec, 0xac65, 0x60aa, 0xac19, 0x6068, 0xabcd, 0x6026, 0xab82,
+  0x5fe3, 0xab36, 0x5fa0, 0xaaeb, 0x5f5e, 0xaaa0, 0x5f1a, 0xaa55,
+  0x5ed7, 0xaa0b, 0x5e93, 0xa9c0, 0x5e50, 0xa976, 0x5e0b, 0xa92c,
+  0x5dc7, 0xa8e3, 0x5d83, 0xa899, 0x5d3e, 0xa850, 0x5cf9, 0xa807,
+  0x5cb4, 0xa7be, 0x5c6e, 0xa775, 0x5c29, 0xa72c, 0x5be3, 0xa6e4,
+  0x5b9d, 0xa69c, 0x5b56, 0xa654, 0x5b10, 0xa60d, 0x5ac9, 0xa5c5,
+  0x5a82, 0xa57e, 0x5a3b, 0xa537, 0x59f3, 0xa4f0, 0x59ac, 0xa4aa,
+  0x5964, 0xa463, 0x591c, 0xa41d, 0x58d4, 0xa3d7, 0x588b, 0xa392,
+  0x5842, 0xa34c, 0x57f9, 0xa307, 0x57b0, 0xa2c2, 0x5767, 0xa27d,
+  0x571d, 0xa239, 0x56d4, 0xa1f5, 0x568a, 0xa1b0, 0x5640, 0xa16d,
+  0x55f5, 0xa129, 0x55ab, 0xa0e6, 0x5560, 0xa0a2, 0x5515, 0xa060,
+  0x54ca, 0xa01d, 0x547e, 0x9fda, 0x5433, 0x9f98, 0x53e7, 0x9f56,
+  0x539b, 0x9f14, 0x534e, 0x9ed3, 0x5302, 0x9e91, 0x52b5, 0x9e50,
+  0x5269, 0x9e0f, 0x521c, 0x9dcf, 0x51ce, 0x9d8f, 0x5181, 0x9d4e,
+  0x5133, 0x9d0e, 0x50e5, 0x9ccf, 0x5097, 0x9c8f, 0x5049, 0x9c50,
+  0x4ffb, 0x9c11, 0x4fac, 0x9bd3, 0x4f5e, 0x9b94, 0x4f0f, 0x9b56,
+  0x4ebf, 0x9b18, 0x4e70, 0x9ada, 0x4e21, 0x9a9d, 0x4dd1, 0x9a60,
+  0x4d81, 0x9a23, 0x4d31, 0x99e6, 0x4ce1, 0x99a9, 0x4c90, 0x996d,
+  0x4c3f, 0x9931, 0x4bef, 0x98f5, 0x4b9e, 0x98ba, 0x4b4c, 0x987e,
+  0x4afb, 0x9843, 0x4aa9, 0x9809, 0x4a58, 0x97ce, 0x4a06, 0x9794,
+  0x49b4, 0x975a, 0x4961, 0x9720, 0x490f, 0x96e7, 0x48bc, 0x96ad,
+  0x4869, 0x9674, 0x4816, 0x963c, 0x47c3, 0x9603, 0x4770, 0x95cb,
+  0x471c, 0x9593, 0x46c9, 0x955b, 0x4675, 0x9524, 0x4621, 0x94ed,
+  0x45cd, 0x94b6, 0x4578, 0x947f, 0x4524, 0x9448, 0x44cf, 0x9412,
+  0x447a, 0x93dc, 0x4425, 0x93a7, 0x43d0, 0x9371, 0x437b, 0x933c,
+  0x4325, 0x9307, 0x42d0, 0x92d3, 0x427a, 0x929e, 0x4224, 0x926a,
+  0x41ce, 0x9236, 0x4177, 0x9203, 0x4121, 0x91d0, 0x40ca, 0x919d,
+  0x4073, 0x916a, 0x401d, 0x9137, 0x3fc5, 0x9105, 0x3f6e, 0x90d3,
+  0x3f17, 0x90a1, 0x3ebf, 0x9070, 0x3e68, 0x903f, 0x3e10, 0x900e,
+  0x3db8, 0x8fdd, 0x3d60, 0x8fad, 0x3d07, 0x8f7d, 0x3caf, 0x8f4d,
+  0x3c56, 0x8f1e, 0x3bfd, 0x8eee, 0x3ba5, 0x8ebf, 0x3b4c, 0x8e91,
+  0x3af2, 0x8e62, 0x3a99, 0x8e34, 0x3a40, 0x8e06, 0x39e6, 0x8dd9,
+  0x398c, 0x8dab, 0x3932, 0x8d7e, 0x38d8, 0x8d51, 0x387e, 0x8d25,
+  0x3824, 0x8cf9, 0x37ca, 0x8ccd, 0x376f, 0x8ca1, 0x3714, 0x8c76,
+  0x36ba, 0x8c4b, 0x365f, 0x8c20, 0x3604, 0x8bf5, 0x35a8, 0x8bcb,
+  0x354d, 0x8ba1, 0x34f2, 0x8b77, 0x3496, 0x8b4e, 0x343a, 0x8b25,
+  0x33de, 0x8afc, 0x3382, 0x8ad3, 0x3326, 0x8aab, 0x32ca, 0x8a83,
+  0x326e, 0x8a5b, 0x3211, 0x8a34, 0x31b5, 0x8a0c, 0x3158, 0x89e5,
+  0x30fb, 0x89bf, 0x309e, 0x8998, 0x3041, 0x8972, 0x2fe4, 0x894d,
+  0x2f87, 0x8927, 0x2f29, 0x8902, 0x2ecc, 0x88dd, 0x2e6e, 0x88b9,
+  0x2e11, 0x8894, 0x2db3, 0x8870, 0x2d55, 0x884c, 0x2cf7, 0x8829,
+  0x2c98, 0x8806, 0x2c3a, 0x87e3, 0x2bdc, 0x87c0, 0x2b7d, 0x879e,
+  0x2b1f, 0x877c, 0x2ac0, 0x875a, 0x2a61, 0x8739, 0x2a02, 0x8718,
+  0x29a3, 0x86f7, 0x2944, 0x86d6, 0x28e5, 0x86b6, 0x2886, 0x8696,
+  0x2826, 0x8676, 0x27c7, 0x8657, 0x2767, 0x8638, 0x2707, 0x8619,
+  0x26a8, 0x85fb, 0x2648, 0x85dc, 0x25e8, 0x85be, 0x2588, 0x85a1,
+  0x2528, 0x8583, 0x24c7, 0x8566, 0x2467, 0x854a, 0x2407, 0x852d,
+  0x23a6, 0x8511, 0x2345, 0x84f5, 0x22e5, 0x84da, 0x2284, 0x84be,
+  0x2223, 0x84a3, 0x21c2, 0x8489, 0x2161, 0x846e, 0x2100, 0x8454,
+  0x209f, 0x843b, 0x203e, 0x8421, 0x1fdc, 0x8408, 0x1f7b, 0x83ef,
+  0x1f19, 0x83d7, 0x1eb8, 0x83be, 0x1e56, 0x83a6, 0x1df5, 0x838f,
+  0x1d93, 0x8377, 0x1d31, 0x8360, 0x1ccf, 0x8349, 0x1c6d, 0x8333,
+  0x1c0b, 0x831d, 0x1ba9, 0x8307, 0x1b47, 0x82f1, 0x1ae4, 0x82dc,
+  0x1a82, 0x82c7, 0x1a20, 0x82b2, 0x19bd, 0x829e, 0x195b, 0x828a,
+  0x18f8, 0x8276, 0x1896, 0x8263, 0x1833, 0x8250, 0x17d0, 0x823d,
+  0x176d, 0x822a, 0x170a, 0x8218, 0x16a8, 0x8206, 0x1645, 0x81f4,
+  0x15e2, 0x81e3, 0x157f, 0x81d2, 0x151b, 0x81c1, 0x14b8, 0x81b1,
+  0x1455, 0x81a1, 0x13f2, 0x8191, 0x138e, 0x8181, 0x132b, 0x8172,
+  0x12c8, 0x8163, 0x1264, 0x8155, 0x1201, 0x8146, 0x119d, 0x8138,
+  0x1139, 0x812b, 0x10d6, 0x811d, 0x1072, 0x8110, 0x100e, 0x8103,
+  0xfab, 0x80f7, 0xf47, 0x80eb, 0xee3, 0x80df, 0xe7f, 0x80d3,
+  0xe1b, 0x80c8, 0xdb7, 0x80bd, 0xd53, 0x80b3, 0xcef, 0x80a8,
+  0xc8b, 0x809e, 0xc27, 0x8095, 0xbc3, 0x808b, 0xb5f, 0x8082,
+  0xafb, 0x8079, 0xa97, 0x8071, 0xa33, 0x8069, 0x9ce, 0x8061,
+  0x96a, 0x8059, 0x906, 0x8052, 0x8a2, 0x804b, 0x83d, 0x8044,
+  0x7d9, 0x803e, 0x775, 0x8038, 0x710, 0x8032, 0x6ac, 0x802d,
+  0x647, 0x8028, 0x5e3, 0x8023, 0x57f, 0x801f, 0x51a, 0x801b,
+  0x4b6, 0x8017, 0x451, 0x8013, 0x3ed, 0x8010, 0x388, 0x800d,
+  0x324, 0x800a, 0x2bf, 0x8008, 0x25b, 0x8006, 0x1f6, 0x8004,
+  0x192, 0x8003, 0x12d, 0x8002, 0xc9, 0x8001, 0x64, 0x8001,
+};
+
+static const q15_t ALIGN4 WeightsQ15_2048[4096] = {
+  0x7fff, 0x0, 0x7fff, 0xffe7, 0x7fff, 0xffce, 0x7fff, 0xffb5,
+  0x7fff, 0xff9c, 0x7fff, 0xff83, 0x7fff, 0xff6a, 0x7fff, 0xff51,
+  0x7fff, 0xff37, 0x7fff, 0xff1e, 0x7fff, 0xff05, 0x7ffe, 0xfeec,
+  0x7ffe, 0xfed3, 0x7ffe, 0xfeba, 0x7ffe, 0xfea1, 0x7ffd, 0xfe88,
+  0x7ffd, 0xfe6e, 0x7ffd, 0xfe55, 0x7ffc, 0xfe3c, 0x7ffc, 0xfe23,
+  0x7ffc, 0xfe0a, 0x7ffb, 0xfdf1, 0x7ffb, 0xfdd8, 0x7ffa, 0xfdbe,
+  0x7ffa, 0xfda5, 0x7ff9, 0xfd8c, 0x7ff9, 0xfd73, 0x7ff8, 0xfd5a,
+  0x7ff8, 0xfd41, 0x7ff7, 0xfd28, 0x7ff7, 0xfd0f, 0x7ff6, 0xfcf5,
+  0x7ff6, 0xfcdc, 0x7ff5, 0xfcc3, 0x7ff4, 0xfcaa, 0x7ff4, 0xfc91,
+  0x7ff3, 0xfc78, 0x7ff2, 0xfc5f, 0x7ff2, 0xfc46, 0x7ff1, 0xfc2c,
+  0x7ff0, 0xfc13, 0x7fef, 0xfbfa, 0x7fee, 0xfbe1, 0x7fee, 0xfbc8,
+  0x7fed, 0xfbaf, 0x7fec, 0xfb96, 0x7feb, 0xfb7d, 0x7fea, 0xfb64,
+  0x7fe9, 0xfb4a, 0x7fe8, 0xfb31, 0x7fe7, 0xfb18, 0x7fe6, 0xfaff,
+  0x7fe5, 0xfae6, 0x7fe4, 0xfacd, 0x7fe3, 0xfab4, 0x7fe2, 0xfa9b,
+  0x7fe1, 0xfa81, 0x7fe0, 0xfa68, 0x7fdf, 0xfa4f, 0x7fde, 0xfa36,
+  0x7fdd, 0xfa1d, 0x7fdc, 0xfa04, 0x7fda, 0xf9eb, 0x7fd9, 0xf9d2,
+  0x7fd8, 0xf9b9, 0x7fd7, 0xf9a0, 0x7fd6, 0xf986, 0x7fd4, 0xf96d,
+  0x7fd3, 0xf954, 0x7fd2, 0xf93b, 0x7fd0, 0xf922, 0x7fcf, 0xf909,
+  0x7fce, 0xf8f0, 0x7fcc, 0xf8d7, 0x7fcb, 0xf8be, 0x7fc9, 0xf8a5,
+  0x7fc8, 0xf88b, 0x7fc6, 0xf872, 0x7fc5, 0xf859, 0x7fc3, 0xf840,
+  0x7fc2, 0xf827, 0x7fc0, 0xf80e, 0x7fbf, 0xf7f5, 0x7fbd, 0xf7dc,
+  0x7fbc, 0xf7c3, 0x7fba, 0xf7aa, 0x7fb8, 0xf791, 0x7fb7, 0xf778,
+  0x7fb5, 0xf75e, 0x7fb3, 0xf745, 0x7fb1, 0xf72c, 0x7fb0, 0xf713,
+  0x7fae, 0xf6fa, 0x7fac, 0xf6e1, 0x7faa, 0xf6c8, 0x7fa9, 0xf6af,
+  0x7fa7, 0xf696, 0x7fa5, 0xf67d, 0x7fa3, 0xf664, 0x7fa1, 0xf64b,
+  0x7f9f, 0xf632, 0x7f9d, 0xf619, 0x7f9b, 0xf600, 0x7f99, 0xf5e7,
+  0x7f97, 0xf5cd, 0x7f95, 0xf5b4, 0x7f93, 0xf59b, 0x7f91, 0xf582,
+  0x7f8f, 0xf569, 0x7f8d, 0xf550, 0x7f8b, 0xf537, 0x7f89, 0xf51e,
+  0x7f87, 0xf505, 0x7f85, 0xf4ec, 0x7f82, 0xf4d3, 0x7f80, 0xf4ba,
+  0x7f7e, 0xf4a1, 0x7f7c, 0xf488, 0x7f79, 0xf46f, 0x7f77, 0xf456,
+  0x7f75, 0xf43d, 0x7f72, 0xf424, 0x7f70, 0xf40b, 0x7f6e, 0xf3f2,
+  0x7f6b, 0xf3d9, 0x7f69, 0xf3c0, 0x7f67, 0xf3a7, 0x7f64, 0xf38e,
+  0x7f62, 0xf375, 0x7f5f, 0xf35c, 0x7f5d, 0xf343, 0x7f5a, 0xf32a,
+  0x7f58, 0xf311, 0x7f55, 0xf2f8, 0x7f53, 0xf2df, 0x7f50, 0xf2c6,
+  0x7f4d, 0xf2ad, 0x7f4b, 0xf294, 0x7f48, 0xf27b, 0x7f45, 0xf262,
+  0x7f43, 0xf249, 0x7f40, 0xf230, 0x7f3d, 0xf217, 0x7f3b, 0xf1fe,
+  0x7f38, 0xf1e5, 0x7f35, 0xf1cc, 0x7f32, 0xf1b3, 0x7f2f, 0xf19a,
+  0x7f2d, 0xf181, 0x7f2a, 0xf168, 0x7f27, 0xf14f, 0x7f24, 0xf136,
+  0x7f21, 0xf11d, 0x7f1e, 0xf104, 0x7f1b, 0xf0eb, 0x7f18, 0xf0d2,
+  0x7f15, 0xf0b9, 0x7f12, 0xf0a0, 0x7f0f, 0xf087, 0x7f0c, 0xf06e,
+  0x7f09, 0xf055, 0x7f06, 0xf03c, 0x7f03, 0xf023, 0x7f00, 0xf00b,
+  0x7efd, 0xeff2, 0x7ef9, 0xefd9, 0x7ef6, 0xefc0, 0x7ef3, 0xefa7,
+  0x7ef0, 0xef8e, 0x7eed, 0xef75, 0x7ee9, 0xef5c, 0x7ee6, 0xef43,
+  0x7ee3, 0xef2a, 0x7edf, 0xef11, 0x7edc, 0xeef8, 0x7ed9, 0xeedf,
+  0x7ed5, 0xeec7, 0x7ed2, 0xeeae, 0x7ecf, 0xee95, 0x7ecb, 0xee7c,
+  0x7ec8, 0xee63, 0x7ec4, 0xee4a, 0x7ec1, 0xee31, 0x7ebd, 0xee18,
+  0x7eba, 0xedff, 0x7eb6, 0xede7, 0x7eb3, 0xedce, 0x7eaf, 0xedb5,
+  0x7eab, 0xed9c, 0x7ea8, 0xed83, 0x7ea4, 0xed6a, 0x7ea1, 0xed51,
+  0x7e9d, 0xed38, 0x7e99, 0xed20, 0x7e95, 0xed07, 0x7e92, 0xecee,
+  0x7e8e, 0xecd5, 0x7e8a, 0xecbc, 0x7e86, 0xeca3, 0x7e83, 0xec8a,
+  0x7e7f, 0xec72, 0x7e7b, 0xec59, 0x7e77, 0xec40, 0x7e73, 0xec27,
+  0x7e6f, 0xec0e, 0x7e6b, 0xebf5, 0x7e67, 0xebdd, 0x7e63, 0xebc4,
+  0x7e5f, 0xebab, 0x7e5b, 0xeb92, 0x7e57, 0xeb79, 0x7e53, 0xeb61,
+  0x7e4f, 0xeb48, 0x7e4b, 0xeb2f, 0x7e47, 0xeb16, 0x7e43, 0xeafd,
+  0x7e3f, 0xeae5, 0x7e3b, 0xeacc, 0x7e37, 0xeab3, 0x7e32, 0xea9a,
+  0x7e2e, 0xea81, 0x7e2a, 0xea69, 0x7e26, 0xea50, 0x7e21, 0xea37,
+  0x7e1d, 0xea1e, 0x7e19, 0xea06, 0x7e14, 0xe9ed, 0x7e10, 0xe9d4,
+  0x7e0c, 0xe9bb, 0x7e07, 0xe9a3, 0x7e03, 0xe98a, 0x7dff, 0xe971,
+  0x7dfa, 0xe958, 0x7df6, 0xe940, 0x7df1, 0xe927, 0x7ded, 0xe90e,
+  0x7de8, 0xe8f6, 0x7de4, 0xe8dd, 0x7ddf, 0xe8c4, 0x7dda, 0xe8ab,
+  0x7dd6, 0xe893, 0x7dd1, 0xe87a, 0x7dcd, 0xe861, 0x7dc8, 0xe849,
+  0x7dc3, 0xe830, 0x7dbf, 0xe817, 0x7dba, 0xe7fe, 0x7db5, 0xe7e6,
+  0x7db0, 0xe7cd, 0x7dac, 0xe7b4, 0x7da7, 0xe79c, 0x7da2, 0xe783,
+  0x7d9d, 0xe76a, 0x7d98, 0xe752, 0x7d94, 0xe739, 0x7d8f, 0xe720,
+  0x7d8a, 0xe708, 0x7d85, 0xe6ef, 0x7d80, 0xe6d6, 0x7d7b, 0xe6be,
+  0x7d76, 0xe6a5, 0x7d71, 0xe68d, 0x7d6c, 0xe674, 0x7d67, 0xe65b,
+  0x7d62, 0xe643, 0x7d5d, 0xe62a, 0x7d58, 0xe611, 0x7d53, 0xe5f9,
+  0x7d4e, 0xe5e0, 0x7d49, 0xe5c8, 0x7d43, 0xe5af, 0x7d3e, 0xe596,
+  0x7d39, 0xe57e, 0x7d34, 0xe565, 0x7d2f, 0xe54d, 0x7d29, 0xe534,
+  0x7d24, 0xe51c, 0x7d1f, 0xe503, 0x7d19, 0xe4ea, 0x7d14, 0xe4d2,
+  0x7d0f, 0xe4b9, 0x7d09, 0xe4a1, 0x7d04, 0xe488, 0x7cff, 0xe470,
+  0x7cf9, 0xe457, 0x7cf4, 0xe43f, 0x7cee, 0xe426, 0x7ce9, 0xe40e,
+  0x7ce3, 0xe3f5, 0x7cde, 0xe3dc, 0x7cd8, 0xe3c4, 0x7cd3, 0xe3ab,
+  0x7ccd, 0xe393, 0x7cc8, 0xe37a, 0x7cc2, 0xe362, 0x7cbc, 0xe349,
+  0x7cb7, 0xe331, 0x7cb1, 0xe318, 0x7cab, 0xe300, 0x7ca6, 0xe2e8,
+  0x7ca0, 0xe2cf, 0x7c9a, 0xe2b7, 0x7c94, 0xe29e, 0x7c8f, 0xe286,
+  0x7c89, 0xe26d, 0x7c83, 0xe255, 0x7c7d, 0xe23c, 0x7c77, 0xe224,
+  0x7c71, 0xe20b, 0x7c6c, 0xe1f3, 0x7c66, 0xe1db, 0x7c60, 0xe1c2,
+  0x7c5a, 0xe1aa, 0x7c54, 0xe191, 0x7c4e, 0xe179, 0x7c48, 0xe160,
+  0x7c42, 0xe148, 0x7c3c, 0xe130, 0x7c36, 0xe117, 0x7c30, 0xe0ff,
+  0x7c29, 0xe0e7, 0x7c23, 0xe0ce, 0x7c1d, 0xe0b6, 0x7c17, 0xe09d,
+  0x7c11, 0xe085, 0x7c0b, 0xe06d, 0x7c05, 0xe054, 0x7bfe, 0xe03c,
+  0x7bf8, 0xe024, 0x7bf2, 0xe00b, 0x7beb, 0xdff3, 0x7be5, 0xdfdb,
+  0x7bdf, 0xdfc2, 0x7bd9, 0xdfaa, 0x7bd2, 0xdf92, 0x7bcc, 0xdf79,
+  0x7bc5, 0xdf61, 0x7bbf, 0xdf49, 0x7bb9, 0xdf30, 0x7bb2, 0xdf18,
+  0x7bac, 0xdf00, 0x7ba5, 0xdee8, 0x7b9f, 0xdecf, 0x7b98, 0xdeb7,
+  0x7b92, 0xde9f, 0x7b8b, 0xde87, 0x7b84, 0xde6e, 0x7b7e, 0xde56,
+  0x7b77, 0xde3e, 0x7b71, 0xde26, 0x7b6a, 0xde0d, 0x7b63, 0xddf5,
+  0x7b5d, 0xdddd, 0x7b56, 0xddc5, 0x7b4f, 0xddac, 0x7b48, 0xdd94,
+  0x7b42, 0xdd7c, 0x7b3b, 0xdd64, 0x7b34, 0xdd4c, 0x7b2d, 0xdd33,
+  0x7b26, 0xdd1b, 0x7b1f, 0xdd03, 0x7b19, 0xdceb, 0x7b12, 0xdcd3,
+  0x7b0b, 0xdcbb, 0x7b04, 0xdca2, 0x7afd, 0xdc8a, 0x7af6, 0xdc72,
+  0x7aef, 0xdc5a, 0x7ae8, 0xdc42, 0x7ae1, 0xdc2a, 0x7ada, 0xdc12,
+  0x7ad3, 0xdbf9, 0x7acc, 0xdbe1, 0x7ac5, 0xdbc9, 0x7abd, 0xdbb1,
+  0x7ab6, 0xdb99, 0x7aaf, 0xdb81, 0x7aa8, 0xdb69, 0x7aa1, 0xdb51,
+  0x7a9a, 0xdb39, 0x7a92, 0xdb21, 0x7a8b, 0xdb09, 0x7a84, 0xdaf1,
+  0x7a7d, 0xdad8, 0x7a75, 0xdac0, 0x7a6e, 0xdaa8, 0x7a67, 0xda90,
+  0x7a5f, 0xda78, 0x7a58, 0xda60, 0x7a50, 0xda48, 0x7a49, 0xda30,
+  0x7a42, 0xda18, 0x7a3a, 0xda00, 0x7a33, 0xd9e8, 0x7a2b, 0xd9d0,
+  0x7a24, 0xd9b8, 0x7a1c, 0xd9a0, 0x7a15, 0xd988, 0x7a0d, 0xd970,
+  0x7a05, 0xd958, 0x79fe, 0xd940, 0x79f6, 0xd928, 0x79ef, 0xd911,
+  0x79e7, 0xd8f9, 0x79df, 0xd8e1, 0x79d8, 0xd8c9, 0x79d0, 0xd8b1,
+  0x79c8, 0xd899, 0x79c0, 0xd881, 0x79b9, 0xd869, 0x79b1, 0xd851,
+  0x79a9, 0xd839, 0x79a1, 0xd821, 0x7999, 0xd80a, 0x7992, 0xd7f2,
+  0x798a, 0xd7da, 0x7982, 0xd7c2, 0x797a, 0xd7aa, 0x7972, 0xd792,
+  0x796a, 0xd77a, 0x7962, 0xd763, 0x795a, 0xd74b, 0x7952, 0xd733,
+  0x794a, 0xd71b, 0x7942, 0xd703, 0x793a, 0xd6eb, 0x7932, 0xd6d4,
+  0x792a, 0xd6bc, 0x7922, 0xd6a4, 0x7919, 0xd68c, 0x7911, 0xd675,
+  0x7909, 0xd65d, 0x7901, 0xd645, 0x78f9, 0xd62d, 0x78f1, 0xd615,
+  0x78e8, 0xd5fe, 0x78e0, 0xd5e6, 0x78d8, 0xd5ce, 0x78cf, 0xd5b7,
+  0x78c7, 0xd59f, 0x78bf, 0xd587, 0x78b6, 0xd56f, 0x78ae, 0xd558,
+  0x78a6, 0xd540, 0x789d, 0xd528, 0x7895, 0xd511, 0x788c, 0xd4f9,
+  0x7884, 0xd4e1, 0x787c, 0xd4ca, 0x7873, 0xd4b2, 0x786b, 0xd49a,
+  0x7862, 0xd483, 0x7859, 0xd46b, 0x7851, 0xd453, 0x7848, 0xd43c,
+  0x7840, 0xd424, 0x7837, 0xd40d, 0x782e, 0xd3f5, 0x7826, 0xd3dd,
+  0x781d, 0xd3c6, 0x7814, 0xd3ae, 0x780c, 0xd397, 0x7803, 0xd37f,
+  0x77fa, 0xd368, 0x77f1, 0xd350, 0x77e9, 0xd338, 0x77e0, 0xd321,
+  0x77d7, 0xd309, 0x77ce, 0xd2f2, 0x77c5, 0xd2da, 0x77bc, 0xd2c3,
+  0x77b4, 0xd2ab, 0x77ab, 0xd294, 0x77a2, 0xd27c, 0x7799, 0xd265,
+  0x7790, 0xd24d, 0x7787, 0xd236, 0x777e, 0xd21e, 0x7775, 0xd207,
+  0x776c, 0xd1ef, 0x7763, 0xd1d8, 0x775a, 0xd1c1, 0x7751, 0xd1a9,
+  0x7747, 0xd192, 0x773e, 0xd17a, 0x7735, 0xd163, 0x772c, 0xd14b,
+  0x7723, 0xd134, 0x771a, 0xd11d, 0x7710, 0xd105, 0x7707, 0xd0ee,
+  0x76fe, 0xd0d7, 0x76f5, 0xd0bf, 0x76eb, 0xd0a8, 0x76e2, 0xd091,
+  0x76d9, 0xd079, 0x76cf, 0xd062, 0x76c6, 0xd04b, 0x76bd, 0xd033,
+  0x76b3, 0xd01c, 0x76aa, 0xd005, 0x76a0, 0xcfed, 0x7697, 0xcfd6,
+  0x768e, 0xcfbf, 0x7684, 0xcfa7, 0x767b, 0xcf90, 0x7671, 0xcf79,
+  0x7668, 0xcf62, 0x765e, 0xcf4a, 0x7654, 0xcf33, 0x764b, 0xcf1c,
+  0x7641, 0xcf05, 0x7638, 0xceee, 0x762e, 0xced6, 0x7624, 0xcebf,
+  0x761b, 0xcea8, 0x7611, 0xce91, 0x7607, 0xce7a, 0x75fd, 0xce62,
+  0x75f4, 0xce4b, 0x75ea, 0xce34, 0x75e0, 0xce1d, 0x75d6, 0xce06,
+  0x75cc, 0xcdef, 0x75c3, 0xcdd8, 0x75b9, 0xcdc0, 0x75af, 0xcda9,
+  0x75a5, 0xcd92, 0x759b, 0xcd7b, 0x7591, 0xcd64, 0x7587, 0xcd4d,
+  0x757d, 0xcd36, 0x7573, 0xcd1f, 0x7569, 0xcd08, 0x755f, 0xccf1,
+  0x7555, 0xccda, 0x754b, 0xccc3, 0x7541, 0xccac, 0x7537, 0xcc95,
+  0x752d, 0xcc7e, 0x7523, 0xcc67, 0x7519, 0xcc50, 0x750f, 0xcc39,
+  0x7504, 0xcc22, 0x74fa, 0xcc0b, 0x74f0, 0xcbf4, 0x74e6, 0xcbdd,
+  0x74db, 0xcbc6, 0x74d1, 0xcbaf, 0x74c7, 0xcb98, 0x74bd, 0xcb81,
+  0x74b2, 0xcb6a, 0x74a8, 0xcb53, 0x749e, 0xcb3c, 0x7493, 0xcb25,
+  0x7489, 0xcb0e, 0x747e, 0xcaf8, 0x7474, 0xcae1, 0x746a, 0xcaca,
+  0x745f, 0xcab3, 0x7455, 0xca9c, 0x744a, 0xca85, 0x7440, 0xca6e,
+  0x7435, 0xca58, 0x742b, 0xca41, 0x7420, 0xca2a, 0x7415, 0xca13,
+  0x740b, 0xc9fc, 0x7400, 0xc9e6, 0x73f6, 0xc9cf, 0x73eb, 0xc9b8,
+  0x73e0, 0xc9a1, 0x73d6, 0xc98b, 0x73cb, 0xc974, 0x73c0, 0xc95d,
+  0x73b5, 0xc946, 0x73ab, 0xc930, 0x73a0, 0xc919, 0x7395, 0xc902,
+  0x738a, 0xc8ec, 0x737f, 0xc8d5, 0x7375, 0xc8be, 0x736a, 0xc8a8,
+  0x735f, 0xc891, 0x7354, 0xc87a, 0x7349, 0xc864, 0x733e, 0xc84d,
+  0x7333, 0xc836, 0x7328, 0xc820, 0x731d, 0xc809, 0x7312, 0xc7f3,
+  0x7307, 0xc7dc, 0x72fc, 0xc7c5, 0x72f1, 0xc7af, 0x72e6, 0xc798,
+  0x72db, 0xc782, 0x72d0, 0xc76b, 0x72c5, 0xc755, 0x72ba, 0xc73e,
+  0x72af, 0xc728, 0x72a3, 0xc711, 0x7298, 0xc6fa, 0x728d, 0xc6e4,
+  0x7282, 0xc6ce, 0x7276, 0xc6b7, 0x726b, 0xc6a1, 0x7260, 0xc68a,
+  0x7255, 0xc674, 0x7249, 0xc65d, 0x723e, 0xc647, 0x7233, 0xc630,
+  0x7227, 0xc61a, 0x721c, 0xc603, 0x7211, 0xc5ed, 0x7205, 0xc5d7,
+  0x71fa, 0xc5c0, 0x71ee, 0xc5aa, 0x71e3, 0xc594, 0x71d7, 0xc57d,
+  0x71cc, 0xc567, 0x71c0, 0xc551, 0x71b5, 0xc53a, 0x71a9, 0xc524,
+  0x719e, 0xc50e, 0x7192, 0xc4f7, 0x7186, 0xc4e1, 0x717b, 0xc4cb,
+  0x716f, 0xc4b4, 0x7164, 0xc49e, 0x7158, 0xc488, 0x714c, 0xc472,
+  0x7141, 0xc45b, 0x7135, 0xc445, 0x7129, 0xc42f, 0x711d, 0xc419,
+  0x7112, 0xc403, 0x7106, 0xc3ec, 0x70fa, 0xc3d6, 0x70ee, 0xc3c0,
+  0x70e2, 0xc3aa, 0x70d6, 0xc394, 0x70cb, 0xc37d, 0x70bf, 0xc367,
+  0x70b3, 0xc351, 0x70a7, 0xc33b, 0x709b, 0xc325, 0x708f, 0xc30f,
+  0x7083, 0xc2f9, 0x7077, 0xc2e3, 0x706b, 0xc2cd, 0x705f, 0xc2b7,
+  0x7053, 0xc2a0, 0x7047, 0xc28a, 0x703b, 0xc274, 0x702f, 0xc25e,
+  0x7023, 0xc248, 0x7016, 0xc232, 0x700a, 0xc21c, 0x6ffe, 0xc206,
+  0x6ff2, 0xc1f0, 0x6fe6, 0xc1da, 0x6fda, 0xc1c4, 0x6fcd, 0xc1ae,
+  0x6fc1, 0xc198, 0x6fb5, 0xc183, 0x6fa9, 0xc16d, 0x6f9c, 0xc157,
+  0x6f90, 0xc141, 0x6f84, 0xc12b, 0x6f77, 0xc115, 0x6f6b, 0xc0ff,
+  0x6f5f, 0xc0e9, 0x6f52, 0xc0d3, 0x6f46, 0xc0bd, 0x6f39, 0xc0a8,
+  0x6f2d, 0xc092, 0x6f20, 0xc07c, 0x6f14, 0xc066, 0x6f07, 0xc050,
+  0x6efb, 0xc03b, 0x6eee, 0xc025, 0x6ee2, 0xc00f, 0x6ed5, 0xbff9,
+  0x6ec9, 0xbfe3, 0x6ebc, 0xbfce, 0x6eaf, 0xbfb8, 0x6ea3, 0xbfa2,
+  0x6e96, 0xbf8d, 0x6e89, 0xbf77, 0x6e7d, 0xbf61, 0x6e70, 0xbf4b,
+  0x6e63, 0xbf36, 0x6e57, 0xbf20, 0x6e4a, 0xbf0a, 0x6e3d, 0xbef5,
+  0x6e30, 0xbedf, 0x6e24, 0xbeca, 0x6e17, 0xbeb4, 0x6e0a, 0xbe9e,
+  0x6dfd, 0xbe89, 0x6df0, 0xbe73, 0x6de3, 0xbe5e, 0x6dd6, 0xbe48,
+  0x6dca, 0xbe32, 0x6dbd, 0xbe1d, 0x6db0, 0xbe07, 0x6da3, 0xbdf2,
+  0x6d96, 0xbddc, 0x6d89, 0xbdc7, 0x6d7c, 0xbdb1, 0x6d6f, 0xbd9c,
+  0x6d62, 0xbd86, 0x6d55, 0xbd71, 0x6d48, 0xbd5b, 0x6d3a, 0xbd46,
+  0x6d2d, 0xbd30, 0x6d20, 0xbd1b, 0x6d13, 0xbd06, 0x6d06, 0xbcf0,
+  0x6cf9, 0xbcdb, 0x6cec, 0xbcc5, 0x6cde, 0xbcb0, 0x6cd1, 0xbc9b,
+  0x6cc4, 0xbc85, 0x6cb7, 0xbc70, 0x6ca9, 0xbc5b, 0x6c9c, 0xbc45,
+  0x6c8f, 0xbc30, 0x6c81, 0xbc1b, 0x6c74, 0xbc05, 0x6c67, 0xbbf0,
+  0x6c59, 0xbbdb, 0x6c4c, 0xbbc5, 0x6c3f, 0xbbb0, 0x6c31, 0xbb9b,
+  0x6c24, 0xbb86, 0x6c16, 0xbb70, 0x6c09, 0xbb5b, 0x6bfb, 0xbb46,
+  0x6bee, 0xbb31, 0x6be0, 0xbb1c, 0x6bd3, 0xbb06, 0x6bc5, 0xbaf1,
+  0x6bb8, 0xbadc, 0x6baa, 0xbac7, 0x6b9c, 0xbab2, 0x6b8f, 0xba9d,
+  0x6b81, 0xba88, 0x6b73, 0xba73, 0x6b66, 0xba5d, 0x6b58, 0xba48,
+  0x6b4a, 0xba33, 0x6b3d, 0xba1e, 0x6b2f, 0xba09, 0x6b21, 0xb9f4,
+  0x6b13, 0xb9df, 0x6b06, 0xb9ca, 0x6af8, 0xb9b5, 0x6aea, 0xb9a0,
+  0x6adc, 0xb98b, 0x6ace, 0xb976, 0x6ac1, 0xb961, 0x6ab3, 0xb94c,
+  0x6aa5, 0xb937, 0x6a97, 0xb922, 0x6a89, 0xb90d, 0x6a7b, 0xb8f8,
+  0x6a6d, 0xb8e4, 0x6a5f, 0xb8cf, 0x6a51, 0xb8ba, 0x6a43, 0xb8a5,
+  0x6a35, 0xb890, 0x6a27, 0xb87b, 0x6a19, 0xb866, 0x6a0b, 0xb852,
+  0x69fd, 0xb83d, 0x69ef, 0xb828, 0x69e1, 0xb813, 0x69d3, 0xb7fe,
+  0x69c4, 0xb7ea, 0x69b6, 0xb7d5, 0x69a8, 0xb7c0, 0x699a, 0xb7ab,
+  0x698c, 0xb797, 0x697d, 0xb782, 0x696f, 0xb76d, 0x6961, 0xb758,
+  0x6953, 0xb744, 0x6944, 0xb72f, 0x6936, 0xb71a, 0x6928, 0xb706,
+  0x6919, 0xb6f1, 0x690b, 0xb6dd, 0x68fd, 0xb6c8, 0x68ee, 0xb6b3,
+  0x68e0, 0xb69f, 0x68d1, 0xb68a, 0x68c3, 0xb676, 0x68b5, 0xb661,
+  0x68a6, 0xb64c, 0x6898, 0xb638, 0x6889, 0xb623, 0x687b, 0xb60f,
+  0x686c, 0xb5fa, 0x685e, 0xb5e6, 0x684f, 0xb5d1, 0x6840, 0xb5bd,
+  0x6832, 0xb5a8, 0x6823, 0xb594, 0x6815, 0xb57f, 0x6806, 0xb56b,
+  0x67f7, 0xb557, 0x67e9, 0xb542, 0x67da, 0xb52e, 0x67cb, 0xb519,
+  0x67bd, 0xb505, 0x67ae, 0xb4f1, 0x679f, 0xb4dc, 0x6790, 0xb4c8,
+  0x6782, 0xb4b4, 0x6773, 0xb49f, 0x6764, 0xb48b, 0x6755, 0xb477,
+  0x6746, 0xb462, 0x6737, 0xb44e, 0x6729, 0xb43a, 0x671a, 0xb426,
+  0x670b, 0xb411, 0x66fc, 0xb3fd, 0x66ed, 0xb3e9, 0x66de, 0xb3d5,
+  0x66cf, 0xb3c1, 0x66c0, 0xb3ac, 0x66b1, 0xb398, 0x66a2, 0xb384,
+  0x6693, 0xb370, 0x6684, 0xb35c, 0x6675, 0xb348, 0x6666, 0xb334,
+  0x6657, 0xb31f, 0x6648, 0xb30b, 0x6639, 0xb2f7, 0x6629, 0xb2e3,
+  0x661a, 0xb2cf, 0x660b, 0xb2bb, 0x65fc, 0xb2a7, 0x65ed, 0xb293,
+  0x65dd, 0xb27f, 0x65ce, 0xb26b, 0x65bf, 0xb257, 0x65b0, 0xb243,
+  0x65a0, 0xb22f, 0x6591, 0xb21b, 0x6582, 0xb207, 0x6573, 0xb1f3,
+  0x6563, 0xb1df, 0x6554, 0xb1cc, 0x6545, 0xb1b8, 0x6535, 0xb1a4,
+  0x6526, 0xb190, 0x6516, 0xb17c, 0x6507, 0xb168, 0x64f7, 0xb154,
+  0x64e8, 0xb141, 0x64d9, 0xb12d, 0x64c9, 0xb119, 0x64ba, 0xb105,
+  0x64aa, 0xb0f1, 0x649b, 0xb0de, 0x648b, 0xb0ca, 0x647b, 0xb0b6,
+  0x646c, 0xb0a2, 0x645c, 0xb08f, 0x644d, 0xb07b, 0x643d, 0xb067,
+  0x642d, 0xb054, 0x641e, 0xb040, 0x640e, 0xb02c, 0x63fe, 0xb019,
+  0x63ef, 0xb005, 0x63df, 0xaff1, 0x63cf, 0xafde, 0x63c0, 0xafca,
+  0x63b0, 0xafb7, 0x63a0, 0xafa3, 0x6390, 0xaf90, 0x6380, 0xaf7c,
+  0x6371, 0xaf69, 0x6361, 0xaf55, 0x6351, 0xaf41, 0x6341, 0xaf2e,
+  0x6331, 0xaf1b, 0x6321, 0xaf07, 0x6311, 0xaef4, 0x6301, 0xaee0,
+  0x62f2, 0xaecd, 0x62e2, 0xaeb9, 0x62d2, 0xaea6, 0x62c2, 0xae92,
+  0x62b2, 0xae7f, 0x62a2, 0xae6c, 0x6292, 0xae58, 0x6282, 0xae45,
+  0x6271, 0xae32, 0x6261, 0xae1e, 0x6251, 0xae0b, 0x6241, 0xadf8,
+  0x6231, 0xade4, 0x6221, 0xadd1, 0x6211, 0xadbe, 0x6201, 0xadab,
+  0x61f1, 0xad97, 0x61e0, 0xad84, 0x61d0, 0xad71, 0x61c0, 0xad5e,
+  0x61b0, 0xad4b, 0x619f, 0xad37, 0x618f, 0xad24, 0x617f, 0xad11,
+  0x616f, 0xacfe, 0x615e, 0xaceb, 0x614e, 0xacd8, 0x613e, 0xacc5,
+  0x612d, 0xacb2, 0x611d, 0xac9e, 0x610d, 0xac8b, 0x60fc, 0xac78,
+  0x60ec, 0xac65, 0x60db, 0xac52, 0x60cb, 0xac3f, 0x60ba, 0xac2c,
+  0x60aa, 0xac19, 0x6099, 0xac06, 0x6089, 0xabf3, 0x6078, 0xabe0,
+  0x6068, 0xabcd, 0x6057, 0xabbb, 0x6047, 0xaba8, 0x6036, 0xab95,
+  0x6026, 0xab82, 0x6015, 0xab6f, 0x6004, 0xab5c, 0x5ff4, 0xab49,
+  0x5fe3, 0xab36, 0x5fd3, 0xab24, 0x5fc2, 0xab11, 0x5fb1, 0xaafe,
+  0x5fa0, 0xaaeb, 0x5f90, 0xaad8, 0x5f7f, 0xaac6, 0x5f6e, 0xaab3,
+  0x5f5e, 0xaaa0, 0x5f4d, 0xaa8e, 0x5f3c, 0xaa7b, 0x5f2b, 0xaa68,
+  0x5f1a, 0xaa55, 0x5f0a, 0xaa43, 0x5ef9, 0xaa30, 0x5ee8, 0xaa1d,
+  0x5ed7, 0xaa0b, 0x5ec6, 0xa9f8, 0x5eb5, 0xa9e6, 0x5ea4, 0xa9d3,
+  0x5e93, 0xa9c0, 0x5e82, 0xa9ae, 0x5e71, 0xa99b, 0x5e60, 0xa989,
+  0x5e50, 0xa976, 0x5e3f, 0xa964, 0x5e2d, 0xa951, 0x5e1c, 0xa93f,
+  0x5e0b, 0xa92c, 0x5dfa, 0xa91a, 0x5de9, 0xa907, 0x5dd8, 0xa8f5,
+  0x5dc7, 0xa8e3, 0x5db6, 0xa8d0, 0x5da5, 0xa8be, 0x5d94, 0xa8ab,
+  0x5d83, 0xa899, 0x5d71, 0xa887, 0x5d60, 0xa874, 0x5d4f, 0xa862,
+  0x5d3e, 0xa850, 0x5d2d, 0xa83d, 0x5d1b, 0xa82b, 0x5d0a, 0xa819,
+  0x5cf9, 0xa807, 0x5ce8, 0xa7f4, 0x5cd6, 0xa7e2, 0x5cc5, 0xa7d0,
+  0x5cb4, 0xa7be, 0x5ca2, 0xa7ab, 0x5c91, 0xa799, 0x5c80, 0xa787,
+  0x5c6e, 0xa775, 0x5c5d, 0xa763, 0x5c4b, 0xa751, 0x5c3a, 0xa73f,
+  0x5c29, 0xa72c, 0x5c17, 0xa71a, 0x5c06, 0xa708, 0x5bf4, 0xa6f6,
+  0x5be3, 0xa6e4, 0x5bd1, 0xa6d2, 0x5bc0, 0xa6c0, 0x5bae, 0xa6ae,
+  0x5b9d, 0xa69c, 0x5b8b, 0xa68a, 0x5b79, 0xa678, 0x5b68, 0xa666,
+  0x5b56, 0xa654, 0x5b45, 0xa642, 0x5b33, 0xa630, 0x5b21, 0xa61f,
+  0x5b10, 0xa60d, 0x5afe, 0xa5fb, 0x5aec, 0xa5e9, 0x5adb, 0xa5d7,
+  0x5ac9, 0xa5c5, 0x5ab7, 0xa5b3, 0x5aa5, 0xa5a2, 0x5a94, 0xa590,
+  0x5a82, 0xa57e, 0x5a70, 0xa56c, 0x5a5e, 0xa55b, 0x5a4d, 0xa549,
+  0x5a3b, 0xa537, 0x5a29, 0xa525, 0x5a17, 0xa514, 0x5a05, 0xa502,
+  0x59f3, 0xa4f0, 0x59e1, 0xa4df, 0x59d0, 0xa4cd, 0x59be, 0xa4bb,
+  0x59ac, 0xa4aa, 0x599a, 0xa498, 0x5988, 0xa487, 0x5976, 0xa475,
+  0x5964, 0xa463, 0x5952, 0xa452, 0x5940, 0xa440, 0x592e, 0xa42f,
+  0x591c, 0xa41d, 0x590a, 0xa40c, 0x58f8, 0xa3fa, 0x58e6, 0xa3e9,
+  0x58d4, 0xa3d7, 0x58c1, 0xa3c6, 0x58af, 0xa3b5, 0x589d, 0xa3a3,
+  0x588b, 0xa392, 0x5879, 0xa380, 0x5867, 0xa36f, 0x5855, 0xa35e,
+  0x5842, 0xa34c, 0x5830, 0xa33b, 0x581e, 0xa32a, 0x580c, 0xa318,
+  0x57f9, 0xa307, 0x57e7, 0xa2f6, 0x57d5, 0xa2e5, 0x57c3, 0xa2d3,
+  0x57b0, 0xa2c2, 0x579e, 0xa2b1, 0x578c, 0xa2a0, 0x5779, 0xa28f,
+  0x5767, 0xa27d, 0x5755, 0xa26c, 0x5742, 0xa25b, 0x5730, 0xa24a,
+  0x571d, 0xa239, 0x570b, 0xa228, 0x56f9, 0xa217, 0x56e6, 0xa206,
+  0x56d4, 0xa1f5, 0x56c1, 0xa1e4, 0x56af, 0xa1d3, 0x569c, 0xa1c1,
+  0x568a, 0xa1b0, 0x5677, 0xa1a0, 0x5665, 0xa18f, 0x5652, 0xa17e,
+  0x5640, 0xa16d, 0x562d, 0xa15c, 0x561a, 0xa14b, 0x5608, 0xa13a,
+  0x55f5, 0xa129, 0x55e3, 0xa118, 0x55d0, 0xa107, 0x55bd, 0xa0f6,
+  0x55ab, 0xa0e6, 0x5598, 0xa0d5, 0x5585, 0xa0c4, 0x5572, 0xa0b3,
+  0x5560, 0xa0a2, 0x554d, 0xa092, 0x553a, 0xa081, 0x5528, 0xa070,
+  0x5515, 0xa060, 0x5502, 0xa04f, 0x54ef, 0xa03e, 0x54dc, 0xa02d,
+  0x54ca, 0xa01d, 0x54b7, 0xa00c, 0x54a4, 0x9ffc, 0x5491, 0x9feb,
+  0x547e, 0x9fda, 0x546b, 0x9fca, 0x5458, 0x9fb9, 0x5445, 0x9fa9,
+  0x5433, 0x9f98, 0x5420, 0x9f88, 0x540d, 0x9f77, 0x53fa, 0x9f67,
+  0x53e7, 0x9f56, 0x53d4, 0x9f46, 0x53c1, 0x9f35, 0x53ae, 0x9f25,
+  0x539b, 0x9f14, 0x5388, 0x9f04, 0x5375, 0x9ef3, 0x5362, 0x9ee3,
+  0x534e, 0x9ed3, 0x533b, 0x9ec2, 0x5328, 0x9eb2, 0x5315, 0x9ea2,
+  0x5302, 0x9e91, 0x52ef, 0x9e81, 0x52dc, 0x9e71, 0x52c9, 0x9e61,
+  0x52b5, 0x9e50, 0x52a2, 0x9e40, 0x528f, 0x9e30, 0x527c, 0x9e20,
+  0x5269, 0x9e0f, 0x5255, 0x9dff, 0x5242, 0x9def, 0x522f, 0x9ddf,
+  0x521c, 0x9dcf, 0x5208, 0x9dbf, 0x51f5, 0x9daf, 0x51e2, 0x9d9f,
+  0x51ce, 0x9d8f, 0x51bb, 0x9d7e, 0x51a8, 0x9d6e, 0x5194, 0x9d5e,
+  0x5181, 0x9d4e, 0x516e, 0x9d3e, 0x515a, 0x9d2e, 0x5147, 0x9d1e,
+  0x5133, 0x9d0e, 0x5120, 0x9cff, 0x510c, 0x9cef, 0x50f9, 0x9cdf,
+  0x50e5, 0x9ccf, 0x50d2, 0x9cbf, 0x50bf, 0x9caf, 0x50ab, 0x9c9f,
+  0x5097, 0x9c8f, 0x5084, 0x9c80, 0x5070, 0x9c70, 0x505d, 0x9c60,
+  0x5049, 0x9c50, 0x5036, 0x9c40, 0x5022, 0x9c31, 0x500f, 0x9c21,
+  0x4ffb, 0x9c11, 0x4fe7, 0x9c02, 0x4fd4, 0x9bf2, 0x4fc0, 0x9be2,
+  0x4fac, 0x9bd3, 0x4f99, 0x9bc3, 0x4f85, 0x9bb3, 0x4f71, 0x9ba4,
+  0x4f5e, 0x9b94, 0x4f4a, 0x9b85, 0x4f36, 0x9b75, 0x4f22, 0x9b65,
+  0x4f0f, 0x9b56, 0x4efb, 0x9b46, 0x4ee7, 0x9b37, 0x4ed3, 0x9b27,
+  0x4ebf, 0x9b18, 0x4eac, 0x9b09, 0x4e98, 0x9af9, 0x4e84, 0x9aea,
+  0x4e70, 0x9ada, 0x4e5c, 0x9acb, 0x4e48, 0x9abb, 0x4e34, 0x9aac,
+  0x4e21, 0x9a9d, 0x4e0d, 0x9a8d, 0x4df9, 0x9a7e, 0x4de5, 0x9a6f,
+  0x4dd1, 0x9a60, 0x4dbd, 0x9a50, 0x4da9, 0x9a41, 0x4d95, 0x9a32,
+  0x4d81, 0x9a23, 0x4d6d, 0x9a13, 0x4d59, 0x9a04, 0x4d45, 0x99f5,
+  0x4d31, 0x99e6, 0x4d1d, 0x99d7, 0x4d09, 0x99c7, 0x4cf5, 0x99b8,
+  0x4ce1, 0x99a9, 0x4ccc, 0x999a, 0x4cb8, 0x998b, 0x4ca4, 0x997c,
+  0x4c90, 0x996d, 0x4c7c, 0x995e, 0x4c68, 0x994f, 0x4c54, 0x9940,
+  0x4c3f, 0x9931, 0x4c2b, 0x9922, 0x4c17, 0x9913, 0x4c03, 0x9904,
+  0x4bef, 0x98f5, 0x4bda, 0x98e6, 0x4bc6, 0x98d7, 0x4bb2, 0x98c9,
+  0x4b9e, 0x98ba, 0x4b89, 0x98ab, 0x4b75, 0x989c, 0x4b61, 0x988d,
+  0x4b4c, 0x987e, 0x4b38, 0x9870, 0x4b24, 0x9861, 0x4b0f, 0x9852,
+  0x4afb, 0x9843, 0x4ae7, 0x9835, 0x4ad2, 0x9826, 0x4abe, 0x9817,
+  0x4aa9, 0x9809, 0x4a95, 0x97fa, 0x4a81, 0x97eb, 0x4a6c, 0x97dd,
+  0x4a58, 0x97ce, 0x4a43, 0x97c0, 0x4a2f, 0x97b1, 0x4a1a, 0x97a2,
+  0x4a06, 0x9794, 0x49f1, 0x9785, 0x49dd, 0x9777, 0x49c8, 0x9768,
+  0x49b4, 0x975a, 0x499f, 0x974b, 0x498a, 0x973d, 0x4976, 0x972f,
+  0x4961, 0x9720, 0x494d, 0x9712, 0x4938, 0x9703, 0x4923, 0x96f5,
+  0x490f, 0x96e7, 0x48fa, 0x96d8, 0x48e6, 0x96ca, 0x48d1, 0x96bc,
+  0x48bc, 0x96ad, 0x48a8, 0x969f, 0x4893, 0x9691, 0x487e, 0x9683,
+  0x4869, 0x9674, 0x4855, 0x9666, 0x4840, 0x9658, 0x482b, 0x964a,
+  0x4816, 0x963c, 0x4802, 0x962d, 0x47ed, 0x961f, 0x47d8, 0x9611,
+  0x47c3, 0x9603, 0x47ae, 0x95f5, 0x479a, 0x95e7, 0x4785, 0x95d9,
+  0x4770, 0x95cb, 0x475b, 0x95bd, 0x4746, 0x95af, 0x4731, 0x95a1,
+  0x471c, 0x9593, 0x4708, 0x9585, 0x46f3, 0x9577, 0x46de, 0x9569,
+  0x46c9, 0x955b, 0x46b4, 0x954d, 0x469f, 0x953f, 0x468a, 0x9532,
+  0x4675, 0x9524, 0x4660, 0x9516, 0x464b, 0x9508, 0x4636, 0x94fa,
+  0x4621, 0x94ed, 0x460c, 0x94df, 0x45f7, 0x94d1, 0x45e2, 0x94c3,
+  0x45cd, 0x94b6, 0x45b8, 0x94a8, 0x45a3, 0x949a, 0x458d, 0x948d,
+  0x4578, 0x947f, 0x4563, 0x9471, 0x454e, 0x9464, 0x4539, 0x9456,
+  0x4524, 0x9448, 0x450f, 0x943b, 0x44fa, 0x942d, 0x44e4, 0x9420,
+  0x44cf, 0x9412, 0x44ba, 0x9405, 0x44a5, 0x93f7, 0x4490, 0x93ea,
+  0x447a, 0x93dc, 0x4465, 0x93cf, 0x4450, 0x93c1, 0x443b, 0x93b4,
+  0x4425, 0x93a7, 0x4410, 0x9399, 0x43fb, 0x938c, 0x43e5, 0x937f,
+  0x43d0, 0x9371, 0x43bb, 0x9364, 0x43a5, 0x9357, 0x4390, 0x9349,
+  0x437b, 0x933c, 0x4365, 0x932f, 0x4350, 0x9322, 0x433b, 0x9314,
+  0x4325, 0x9307, 0x4310, 0x92fa, 0x42fa, 0x92ed, 0x42e5, 0x92e0,
+  0x42d0, 0x92d3, 0x42ba, 0x92c6, 0x42a5, 0x92b8, 0x428f, 0x92ab,
+  0x427a, 0x929e, 0x4264, 0x9291, 0x424f, 0x9284, 0x4239, 0x9277,
+  0x4224, 0x926a, 0x420e, 0x925d, 0x41f9, 0x9250, 0x41e3, 0x9243,
+  0x41ce, 0x9236, 0x41b8, 0x922a, 0x41a2, 0x921d, 0x418d, 0x9210,
+  0x4177, 0x9203, 0x4162, 0x91f6, 0x414c, 0x91e9, 0x4136, 0x91dc,
+  0x4121, 0x91d0, 0x410b, 0x91c3, 0x40f6, 0x91b6, 0x40e0, 0x91a9,
+  0x40ca, 0x919d, 0x40b5, 0x9190, 0x409f, 0x9183, 0x4089, 0x9177,
+  0x4073, 0x916a, 0x405e, 0x915d, 0x4048, 0x9151, 0x4032, 0x9144,
+  0x401d, 0x9137, 0x4007, 0x912b, 0x3ff1, 0x911e, 0x3fdb, 0x9112,
+  0x3fc5, 0x9105, 0x3fb0, 0x90f9, 0x3f9a, 0x90ec, 0x3f84, 0x90e0,
+  0x3f6e, 0x90d3, 0x3f58, 0x90c7, 0x3f43, 0x90ba, 0x3f2d, 0x90ae,
+  0x3f17, 0x90a1, 0x3f01, 0x9095, 0x3eeb, 0x9089, 0x3ed5, 0x907c,
+  0x3ebf, 0x9070, 0x3ea9, 0x9064, 0x3e93, 0x9057, 0x3e7d, 0x904b,
+  0x3e68, 0x903f, 0x3e52, 0x9033, 0x3e3c, 0x9026, 0x3e26, 0x901a,
+  0x3e10, 0x900e, 0x3dfa, 0x9002, 0x3de4, 0x8ff6, 0x3dce, 0x8fea,
+  0x3db8, 0x8fdd, 0x3da2, 0x8fd1, 0x3d8c, 0x8fc5, 0x3d76, 0x8fb9,
+  0x3d60, 0x8fad, 0x3d49, 0x8fa1, 0x3d33, 0x8f95, 0x3d1d, 0x8f89,
+  0x3d07, 0x8f7d, 0x3cf1, 0x8f71, 0x3cdb, 0x8f65, 0x3cc5, 0x8f59,
+  0x3caf, 0x8f4d, 0x3c99, 0x8f41, 0x3c83, 0x8f35, 0x3c6c, 0x8f2a,
+  0x3c56, 0x8f1e, 0x3c40, 0x8f12, 0x3c2a, 0x8f06, 0x3c14, 0x8efa,
+  0x3bfd, 0x8eee, 0x3be7, 0x8ee3, 0x3bd1, 0x8ed7, 0x3bbb, 0x8ecb,
+  0x3ba5, 0x8ebf, 0x3b8e, 0x8eb4, 0x3b78, 0x8ea8, 0x3b62, 0x8e9c,
+  0x3b4c, 0x8e91, 0x3b35, 0x8e85, 0x3b1f, 0x8e7a, 0x3b09, 0x8e6e,
+  0x3af2, 0x8e62, 0x3adc, 0x8e57, 0x3ac6, 0x8e4b, 0x3aaf, 0x8e40,
+  0x3a99, 0x8e34, 0x3a83, 0x8e29, 0x3a6c, 0x8e1d, 0x3a56, 0x8e12,
+  0x3a40, 0x8e06, 0x3a29, 0x8dfb, 0x3a13, 0x8def, 0x39fd, 0x8de4,
+  0x39e6, 0x8dd9, 0x39d0, 0x8dcd, 0x39b9, 0x8dc2, 0x39a3, 0x8db7,
+  0x398c, 0x8dab, 0x3976, 0x8da0, 0x395f, 0x8d95, 0x3949, 0x8d8a,
+  0x3932, 0x8d7e, 0x391c, 0x8d73, 0x3906, 0x8d68, 0x38ef, 0x8d5d,
+  0x38d8, 0x8d51, 0x38c2, 0x8d46, 0x38ab, 0x8d3b, 0x3895, 0x8d30,
+  0x387e, 0x8d25, 0x3868, 0x8d1a, 0x3851, 0x8d0f, 0x383b, 0x8d04,
+  0x3824, 0x8cf9, 0x380d, 0x8cee, 0x37f7, 0x8ce3, 0x37e0, 0x8cd8,
+  0x37ca, 0x8ccd, 0x37b3, 0x8cc2, 0x379c, 0x8cb7, 0x3786, 0x8cac,
+  0x376f, 0x8ca1, 0x3758, 0x8c96, 0x3742, 0x8c8b, 0x372b, 0x8c81,
+  0x3714, 0x8c76, 0x36fe, 0x8c6b, 0x36e7, 0x8c60, 0x36d0, 0x8c55,
+  0x36ba, 0x8c4b, 0x36a3, 0x8c40, 0x368c, 0x8c35, 0x3675, 0x8c2a,
+  0x365f, 0x8c20, 0x3648, 0x8c15, 0x3631, 0x8c0a, 0x361a, 0x8c00,
+  0x3604, 0x8bf5, 0x35ed, 0x8beb, 0x35d6, 0x8be0, 0x35bf, 0x8bd5,
+  0x35a8, 0x8bcb, 0x3592, 0x8bc0, 0x357b, 0x8bb6, 0x3564, 0x8bab,
+  0x354d, 0x8ba1, 0x3536, 0x8b96, 0x351f, 0x8b8c, 0x3508, 0x8b82,
+  0x34f2, 0x8b77, 0x34db, 0x8b6d, 0x34c4, 0x8b62, 0x34ad, 0x8b58,
+  0x3496, 0x8b4e, 0x347f, 0x8b43, 0x3468, 0x8b39, 0x3451, 0x8b2f,
+  0x343a, 0x8b25, 0x3423, 0x8b1a, 0x340c, 0x8b10, 0x33f5, 0x8b06,
+  0x33de, 0x8afc, 0x33c7, 0x8af1, 0x33b0, 0x8ae7, 0x3399, 0x8add,
+  0x3382, 0x8ad3, 0x336b, 0x8ac9, 0x3354, 0x8abf, 0x333d, 0x8ab5,
+  0x3326, 0x8aab, 0x330f, 0x8aa1, 0x32f8, 0x8a97, 0x32e1, 0x8a8d,
+  0x32ca, 0x8a83, 0x32b3, 0x8a79, 0x329c, 0x8a6f, 0x3285, 0x8a65,
+  0x326e, 0x8a5b, 0x3257, 0x8a51, 0x3240, 0x8a47, 0x3228, 0x8a3d,
+  0x3211, 0x8a34, 0x31fa, 0x8a2a, 0x31e3, 0x8a20, 0x31cc, 0x8a16,
+  0x31b5, 0x8a0c, 0x319e, 0x8a03, 0x3186, 0x89f9, 0x316f, 0x89ef,
+  0x3158, 0x89e5, 0x3141, 0x89dc, 0x312a, 0x89d2, 0x3112, 0x89c8,
+  0x30fb, 0x89bf, 0x30e4, 0x89b5, 0x30cd, 0x89ac, 0x30b6, 0x89a2,
+  0x309e, 0x8998, 0x3087, 0x898f, 0x3070, 0x8985, 0x3059, 0x897c,
+  0x3041, 0x8972, 0x302a, 0x8969, 0x3013, 0x8960, 0x2ffb, 0x8956,
+  0x2fe4, 0x894d, 0x2fcd, 0x8943, 0x2fb5, 0x893a, 0x2f9e, 0x8931,
+  0x2f87, 0x8927, 0x2f6f, 0x891e, 0x2f58, 0x8915, 0x2f41, 0x890b,
+  0x2f29, 0x8902, 0x2f12, 0x88f9, 0x2efb, 0x88f0, 0x2ee3, 0x88e6,
+  0x2ecc, 0x88dd, 0x2eb5, 0x88d4, 0x2e9d, 0x88cb, 0x2e86, 0x88c2,
+  0x2e6e, 0x88b9, 0x2e57, 0x88af, 0x2e3f, 0x88a6, 0x2e28, 0x889d,
+  0x2e11, 0x8894, 0x2df9, 0x888b, 0x2de2, 0x8882, 0x2dca, 0x8879,
+  0x2db3, 0x8870, 0x2d9b, 0x8867, 0x2d84, 0x885e, 0x2d6c, 0x8855,
+  0x2d55, 0x884c, 0x2d3d, 0x8844, 0x2d26, 0x883b, 0x2d0e, 0x8832,
+  0x2cf7, 0x8829, 0x2cdf, 0x8820, 0x2cc8, 0x8817, 0x2cb0, 0x880f,
+  0x2c98, 0x8806, 0x2c81, 0x87fd, 0x2c69, 0x87f4, 0x2c52, 0x87ec,
+  0x2c3a, 0x87e3, 0x2c23, 0x87da, 0x2c0b, 0x87d2, 0x2bf3, 0x87c9,
+  0x2bdc, 0x87c0, 0x2bc4, 0x87b8, 0x2bad, 0x87af, 0x2b95, 0x87a7,
+  0x2b7d, 0x879e, 0x2b66, 0x8795, 0x2b4e, 0x878d, 0x2b36, 0x8784,
+  0x2b1f, 0x877c, 0x2b07, 0x8774, 0x2aef, 0x876b, 0x2ad8, 0x8763,
+  0x2ac0, 0x875a, 0x2aa8, 0x8752, 0x2a91, 0x874a, 0x2a79, 0x8741,
+  0x2a61, 0x8739, 0x2a49, 0x8731, 0x2a32, 0x8728, 0x2a1a, 0x8720,
+  0x2a02, 0x8718, 0x29eb, 0x870f, 0x29d3, 0x8707, 0x29bb, 0x86ff,
+  0x29a3, 0x86f7, 0x298b, 0x86ef, 0x2974, 0x86e7, 0x295c, 0x86de,
+  0x2944, 0x86d6, 0x292c, 0x86ce, 0x2915, 0x86c6, 0x28fd, 0x86be,
+  0x28e5, 0x86b6, 0x28cd, 0x86ae, 0x28b5, 0x86a6, 0x289d, 0x869e,
+  0x2886, 0x8696, 0x286e, 0x868e, 0x2856, 0x8686, 0x283e, 0x867e,
+  0x2826, 0x8676, 0x280e, 0x866e, 0x27f6, 0x8667, 0x27df, 0x865f,
+  0x27c7, 0x8657, 0x27af, 0x864f, 0x2797, 0x8647, 0x277f, 0x8640,
+  0x2767, 0x8638, 0x274f, 0x8630, 0x2737, 0x8628, 0x271f, 0x8621,
+  0x2707, 0x8619, 0x26ef, 0x8611, 0x26d8, 0x860a, 0x26c0, 0x8602,
+  0x26a8, 0x85fb, 0x2690, 0x85f3, 0x2678, 0x85eb, 0x2660, 0x85e4,
+  0x2648, 0x85dc, 0x2630, 0x85d5, 0x2618, 0x85cd, 0x2600, 0x85c6,
+  0x25e8, 0x85be, 0x25d0, 0x85b7, 0x25b8, 0x85b0, 0x25a0, 0x85a8,
+  0x2588, 0x85a1, 0x2570, 0x8599, 0x2558, 0x8592, 0x2540, 0x858b,
+  0x2528, 0x8583, 0x250f, 0x857c, 0x24f7, 0x8575, 0x24df, 0x856e,
+  0x24c7, 0x8566, 0x24af, 0x855f, 0x2497, 0x8558, 0x247f, 0x8551,
+  0x2467, 0x854a, 0x244f, 0x8543, 0x2437, 0x853b, 0x241f, 0x8534,
+  0x2407, 0x852d, 0x23ee, 0x8526, 0x23d6, 0x851f, 0x23be, 0x8518,
+  0x23a6, 0x8511, 0x238e, 0x850a, 0x2376, 0x8503, 0x235e, 0x84fc,
+  0x2345, 0x84f5, 0x232d, 0x84ee, 0x2315, 0x84e7, 0x22fd, 0x84e1,
+  0x22e5, 0x84da, 0x22cd, 0x84d3, 0x22b4, 0x84cc, 0x229c, 0x84c5,
+  0x2284, 0x84be, 0x226c, 0x84b8, 0x2254, 0x84b1, 0x223b, 0x84aa,
+  0x2223, 0x84a3, 0x220b, 0x849d, 0x21f3, 0x8496, 0x21da, 0x848f,
+  0x21c2, 0x8489, 0x21aa, 0x8482, 0x2192, 0x847c, 0x2179, 0x8475,
+  0x2161, 0x846e, 0x2149, 0x8468, 0x2131, 0x8461, 0x2118, 0x845b,
+  0x2100, 0x8454, 0x20e8, 0x844e, 0x20d0, 0x8447, 0x20b7, 0x8441,
+  0x209f, 0x843b, 0x2087, 0x8434, 0x206e, 0x842e, 0x2056, 0x8427,
+  0x203e, 0x8421, 0x2025, 0x841b, 0x200d, 0x8415, 0x1ff5, 0x840e,
+  0x1fdc, 0x8408, 0x1fc4, 0x8402, 0x1fac, 0x83fb, 0x1f93, 0x83f5,
+  0x1f7b, 0x83ef, 0x1f63, 0x83e9, 0x1f4a, 0x83e3, 0x1f32, 0x83dd,
+  0x1f19, 0x83d7, 0x1f01, 0x83d0, 0x1ee9, 0x83ca, 0x1ed0, 0x83c4,
+  0x1eb8, 0x83be, 0x1ea0, 0x83b8, 0x1e87, 0x83b2, 0x1e6f, 0x83ac,
+  0x1e56, 0x83a6, 0x1e3e, 0x83a0, 0x1e25, 0x839a, 0x1e0d, 0x8394,
+  0x1df5, 0x838f, 0x1ddc, 0x8389, 0x1dc4, 0x8383, 0x1dab, 0x837d,
+  0x1d93, 0x8377, 0x1d7a, 0x8371, 0x1d62, 0x836c, 0x1d49, 0x8366,
+  0x1d31, 0x8360, 0x1d18, 0x835a, 0x1d00, 0x8355, 0x1ce8, 0x834f,
+  0x1ccf, 0x8349, 0x1cb7, 0x8344, 0x1c9e, 0x833e, 0x1c86, 0x8338,
+  0x1c6d, 0x8333, 0x1c55, 0x832d, 0x1c3c, 0x8328, 0x1c24, 0x8322,
+  0x1c0b, 0x831d, 0x1bf2, 0x8317, 0x1bda, 0x8312, 0x1bc1, 0x830c,
+  0x1ba9, 0x8307, 0x1b90, 0x8301, 0x1b78, 0x82fc, 0x1b5f, 0x82f7,
+  0x1b47, 0x82f1, 0x1b2e, 0x82ec, 0x1b16, 0x82e7, 0x1afd, 0x82e1,
+  0x1ae4, 0x82dc, 0x1acc, 0x82d7, 0x1ab3, 0x82d1, 0x1a9b, 0x82cc,
+  0x1a82, 0x82c7, 0x1a6a, 0x82c2, 0x1a51, 0x82bd, 0x1a38, 0x82b7,
+  0x1a20, 0x82b2, 0x1a07, 0x82ad, 0x19ef, 0x82a8, 0x19d6, 0x82a3,
+  0x19bd, 0x829e, 0x19a5, 0x8299, 0x198c, 0x8294, 0x1973, 0x828f,
+  0x195b, 0x828a, 0x1942, 0x8285, 0x192a, 0x8280, 0x1911, 0x827b,
+  0x18f8, 0x8276, 0x18e0, 0x8271, 0x18c7, 0x826c, 0x18ae, 0x8268,
+  0x1896, 0x8263, 0x187d, 0x825e, 0x1864, 0x8259, 0x184c, 0x8254,
+  0x1833, 0x8250, 0x181a, 0x824b, 0x1802, 0x8246, 0x17e9, 0x8241,
+  0x17d0, 0x823d, 0x17b7, 0x8238, 0x179f, 0x8233, 0x1786, 0x822f,
+  0x176d, 0x822a, 0x1755, 0x8226, 0x173c, 0x8221, 0x1723, 0x821c,
+  0x170a, 0x8218, 0x16f2, 0x8213, 0x16d9, 0x820f, 0x16c0, 0x820a,
+  0x16a8, 0x8206, 0x168f, 0x8201, 0x1676, 0x81fd, 0x165d, 0x81f9,
+  0x1645, 0x81f4, 0x162c, 0x81f0, 0x1613, 0x81ec, 0x15fa, 0x81e7,
+  0x15e2, 0x81e3, 0x15c9, 0x81df, 0x15b0, 0x81da, 0x1597, 0x81d6,
+  0x157f, 0x81d2, 0x1566, 0x81ce, 0x154d, 0x81c9, 0x1534, 0x81c5,
+  0x151b, 0x81c1, 0x1503, 0x81bd, 0x14ea, 0x81b9, 0x14d1, 0x81b5,
+  0x14b8, 0x81b1, 0x149f, 0x81ad, 0x1487, 0x81a9, 0x146e, 0x81a5,
+  0x1455, 0x81a1, 0x143c, 0x819d, 0x1423, 0x8199, 0x140b, 0x8195,
+  0x13f2, 0x8191, 0x13d9, 0x818d, 0x13c0, 0x8189, 0x13a7, 0x8185,
+  0x138e, 0x8181, 0x1376, 0x817d, 0x135d, 0x817a, 0x1344, 0x8176,
+  0x132b, 0x8172, 0x1312, 0x816e, 0x12f9, 0x816b, 0x12e0, 0x8167,
+  0x12c8, 0x8163, 0x12af, 0x815f, 0x1296, 0x815c, 0x127d, 0x8158,
+  0x1264, 0x8155, 0x124b, 0x8151, 0x1232, 0x814d, 0x1219, 0x814a,
+  0x1201, 0x8146, 0x11e8, 0x8143, 0x11cf, 0x813f, 0x11b6, 0x813c,
+  0x119d, 0x8138, 0x1184, 0x8135, 0x116b, 0x8131, 0x1152, 0x812e,
+  0x1139, 0x812b, 0x1121, 0x8127, 0x1108, 0x8124, 0x10ef, 0x8121,
+  0x10d6, 0x811d, 0x10bd, 0x811a, 0x10a4, 0x8117, 0x108b, 0x8113,
+  0x1072, 0x8110, 0x1059, 0x810d, 0x1040, 0x810a, 0x1027, 0x8107,
+  0x100e, 0x8103, 0xff5, 0x8100, 0xfdd, 0x80fd, 0xfc4, 0x80fa,
+  0xfab, 0x80f7, 0xf92, 0x80f4, 0xf79, 0x80f1, 0xf60, 0x80ee,
+  0xf47, 0x80eb, 0xf2e, 0x80e8, 0xf15, 0x80e5, 0xefc, 0x80e2,
+  0xee3, 0x80df, 0xeca, 0x80dc, 0xeb1, 0x80d9, 0xe98, 0x80d6,
+  0xe7f, 0x80d3, 0xe66, 0x80d1, 0xe4d, 0x80ce, 0xe34, 0x80cb,
+  0xe1b, 0x80c8, 0xe02, 0x80c5, 0xde9, 0x80c3, 0xdd0, 0x80c0,
+  0xdb7, 0x80bd, 0xd9e, 0x80bb, 0xd85, 0x80b8, 0xd6c, 0x80b5,
+  0xd53, 0x80b3, 0xd3a, 0x80b0, 0xd21, 0x80ad, 0xd08, 0x80ab,
+  0xcef, 0x80a8, 0xcd6, 0x80a6, 0xcbd, 0x80a3, 0xca4, 0x80a1,
+  0xc8b, 0x809e, 0xc72, 0x809c, 0xc59, 0x8099, 0xc40, 0x8097,
+  0xc27, 0x8095, 0xc0e, 0x8092, 0xbf5, 0x8090, 0xbdc, 0x808e,
+  0xbc3, 0x808b, 0xbaa, 0x8089, 0xb91, 0x8087, 0xb78, 0x8084,
+  0xb5f, 0x8082, 0xb46, 0x8080, 0xb2d, 0x807e, 0xb14, 0x807b,
+  0xafb, 0x8079, 0xae2, 0x8077, 0xac9, 0x8075, 0xab0, 0x8073,
+  0xa97, 0x8071, 0xa7e, 0x806f, 0xa65, 0x806d, 0xa4c, 0x806b,
+  0xa33, 0x8069, 0xa19, 0x8067, 0xa00, 0x8065, 0x9e7, 0x8063,
+  0x9ce, 0x8061, 0x9b5, 0x805f, 0x99c, 0x805d, 0x983, 0x805b,
+  0x96a, 0x8059, 0x951, 0x8057, 0x938, 0x8056, 0x91f, 0x8054,
+  0x906, 0x8052, 0x8ed, 0x8050, 0x8d4, 0x804f, 0x8bb, 0x804d,
+  0x8a2, 0x804b, 0x888, 0x8049, 0x86f, 0x8048, 0x856, 0x8046,
+  0x83d, 0x8044, 0x824, 0x8043, 0x80b, 0x8041, 0x7f2, 0x8040,
+  0x7d9, 0x803e, 0x7c0, 0x803d, 0x7a7, 0x803b, 0x78e, 0x803a,
+  0x775, 0x8038, 0x75b, 0x8037, 0x742, 0x8035, 0x729, 0x8034,
+  0x710, 0x8032, 0x6f7, 0x8031, 0x6de, 0x8030, 0x6c5, 0x802e,
+  0x6ac, 0x802d, 0x693, 0x802c, 0x67a, 0x802a, 0x660, 0x8029,
+  0x647, 0x8028, 0x62e, 0x8027, 0x615, 0x8026, 0x5fc, 0x8024,
+  0x5e3, 0x8023, 0x5ca, 0x8022, 0x5b1, 0x8021, 0x598, 0x8020,
+  0x57f, 0x801f, 0x565, 0x801e, 0x54c, 0x801d, 0x533, 0x801c,
+  0x51a, 0x801b, 0x501, 0x801a, 0x4e8, 0x8019, 0x4cf, 0x8018,
+  0x4b6, 0x8017, 0x49c, 0x8016, 0x483, 0x8015, 0x46a, 0x8014,
+  0x451, 0x8013, 0x438, 0x8012, 0x41f, 0x8012, 0x406, 0x8011,
+  0x3ed, 0x8010, 0x3d4, 0x800f, 0x3ba, 0x800e, 0x3a1, 0x800e,
+  0x388, 0x800d, 0x36f, 0x800c, 0x356, 0x800c, 0x33d, 0x800b,
+  0x324, 0x800a, 0x30b, 0x800a, 0x2f1, 0x8009, 0x2d8, 0x8009,
+  0x2bf, 0x8008, 0x2a6, 0x8008, 0x28d, 0x8007, 0x274, 0x8007,
+  0x25b, 0x8006, 0x242, 0x8006, 0x228, 0x8005, 0x20f, 0x8005,
+  0x1f6, 0x8004, 0x1dd, 0x8004, 0x1c4, 0x8004, 0x1ab, 0x8003,
+  0x192, 0x8003, 0x178, 0x8003, 0x15f, 0x8002, 0x146, 0x8002,
+  0x12d, 0x8002, 0x114, 0x8002, 0xfb, 0x8001, 0xe2, 0x8001,
+  0xc9, 0x8001, 0xaf, 0x8001, 0x96, 0x8001, 0x7d, 0x8001,
+  0x64, 0x8001, 0x4b, 0x8001, 0x32, 0x8001, 0x19, 0x8001,
+};
+
+static const q15_t ALIGN4 WeightsQ15_8192[16384] = {
+  0x7fff, 0x0, 0x7fff, 0xfffa, 0x7fff, 0xfff4, 0x7fff, 0xffee,
+  0x7fff, 0xffe7, 0x7fff, 0xffe1, 0x7fff, 0xffdb, 0x7fff, 0xffd5,
+  0x7fff, 0xffce, 0x7fff, 0xffc8, 0x7fff, 0xffc2, 0x7fff, 0xffbb,
+  0x7fff, 0xffb5, 0x7fff, 0xffaf, 0x7fff, 0xffa9, 0x7fff, 0xffa2,
+  0x7fff, 0xff9c, 0x7fff, 0xff96, 0x7fff, 0xff8f, 0x7fff, 0xff89,
+  0x7fff, 0xff83, 0x7fff, 0xff7d, 0x7fff, 0xff76, 0x7fff, 0xff70,
+  0x7fff, 0xff6a, 0x7fff, 0xff63, 0x7fff, 0xff5d, 0x7fff, 0xff57,
+  0x7fff, 0xff51, 0x7fff, 0xff4a, 0x7fff, 0xff44, 0x7fff, 0xff3e,
+  0x7fff, 0xff37, 0x7fff, 0xff31, 0x7fff, 0xff2b, 0x7fff, 0xff25,
+  0x7fff, 0xff1e, 0x7fff, 0xff18, 0x7fff, 0xff12, 0x7fff, 0xff0b,
+  0x7fff, 0xff05, 0x7ffe, 0xfeff, 0x7ffe, 0xfef9, 0x7ffe, 0xfef2,
+  0x7ffe, 0xfeec, 0x7ffe, 0xfee6, 0x7ffe, 0xfedf, 0x7ffe, 0xfed9,
+  0x7ffe, 0xfed3, 0x7ffe, 0xfecd, 0x7ffe, 0xfec6, 0x7ffe, 0xfec0,
+  0x7ffe, 0xfeba, 0x7ffe, 0xfeb3, 0x7ffe, 0xfead, 0x7ffe, 0xfea7,
+  0x7ffe, 0xfea1, 0x7ffe, 0xfe9a, 0x7ffd, 0xfe94, 0x7ffd, 0xfe8e,
+  0x7ffd, 0xfe88, 0x7ffd, 0xfe81, 0x7ffd, 0xfe7b, 0x7ffd, 0xfe75,
+  0x7ffd, 0xfe6e, 0x7ffd, 0xfe68, 0x7ffd, 0xfe62, 0x7ffd, 0xfe5c,
+  0x7ffd, 0xfe55, 0x7ffd, 0xfe4f, 0x7ffd, 0xfe49, 0x7ffc, 0xfe42,
+  0x7ffc, 0xfe3c, 0x7ffc, 0xfe36, 0x7ffc, 0xfe30, 0x7ffc, 0xfe29,
+  0x7ffc, 0xfe23, 0x7ffc, 0xfe1d, 0x7ffc, 0xfe16, 0x7ffc, 0xfe10,
+  0x7ffc, 0xfe0a, 0x7ffc, 0xfe04, 0x7ffb, 0xfdfd, 0x7ffb, 0xfdf7,
+  0x7ffb, 0xfdf1, 0x7ffb, 0xfdea, 0x7ffb, 0xfde4, 0x7ffb, 0xfdde,
+  0x7ffb, 0xfdd8, 0x7ffb, 0xfdd1, 0x7ffb, 0xfdcb, 0x7ffb, 0xfdc5,
+  0x7ffa, 0xfdbe, 0x7ffa, 0xfdb8, 0x7ffa, 0xfdb2, 0x7ffa, 0xfdac,
+  0x7ffa, 0xfda5, 0x7ffa, 0xfd9f, 0x7ffa, 0xfd99, 0x7ffa, 0xfd93,
+  0x7ff9, 0xfd8c, 0x7ff9, 0xfd86, 0x7ff9, 0xfd80, 0x7ff9, 0xfd79,
+  0x7ff9, 0xfd73, 0x7ff9, 0xfd6d, 0x7ff9, 0xfd67, 0x7ff9, 0xfd60,
+  0x7ff8, 0xfd5a, 0x7ff8, 0xfd54, 0x7ff8, 0xfd4d, 0x7ff8, 0xfd47,
+  0x7ff8, 0xfd41, 0x7ff8, 0xfd3b, 0x7ff8, 0xfd34, 0x7ff8, 0xfd2e,
+  0x7ff7, 0xfd28, 0x7ff7, 0xfd21, 0x7ff7, 0xfd1b, 0x7ff7, 0xfd15,
+  0x7ff7, 0xfd0f, 0x7ff7, 0xfd08, 0x7ff7, 0xfd02, 0x7ff6, 0xfcfc,
+  0x7ff6, 0xfcf5, 0x7ff6, 0xfcef, 0x7ff6, 0xfce9, 0x7ff6, 0xfce3,
+  0x7ff6, 0xfcdc, 0x7ff5, 0xfcd6, 0x7ff5, 0xfcd0, 0x7ff5, 0xfcc9,
+  0x7ff5, 0xfcc3, 0x7ff5, 0xfcbd, 0x7ff5, 0xfcb7, 0x7ff5, 0xfcb0,
+  0x7ff4, 0xfcaa, 0x7ff4, 0xfca4, 0x7ff4, 0xfc9e, 0x7ff4, 0xfc97,
+  0x7ff4, 0xfc91, 0x7ff4, 0xfc8b, 0x7ff3, 0xfc84, 0x7ff3, 0xfc7e,
+  0x7ff3, 0xfc78, 0x7ff3, 0xfc72, 0x7ff3, 0xfc6b, 0x7ff2, 0xfc65,
+  0x7ff2, 0xfc5f, 0x7ff2, 0xfc58, 0x7ff2, 0xfc52, 0x7ff2, 0xfc4c,
+  0x7ff2, 0xfc46, 0x7ff1, 0xfc3f, 0x7ff1, 0xfc39, 0x7ff1, 0xfc33,
+  0x7ff1, 0xfc2c, 0x7ff1, 0xfc26, 0x7ff0, 0xfc20, 0x7ff0, 0xfc1a,
+  0x7ff0, 0xfc13, 0x7ff0, 0xfc0d, 0x7ff0, 0xfc07, 0x7fef, 0xfc01,
+  0x7fef, 0xfbfa, 0x7fef, 0xfbf4, 0x7fef, 0xfbee, 0x7fef, 0xfbe7,
+  0x7fee, 0xfbe1, 0x7fee, 0xfbdb, 0x7fee, 0xfbd5, 0x7fee, 0xfbce,
+  0x7fee, 0xfbc8, 0x7fed, 0xfbc2, 0x7fed, 0xfbbb, 0x7fed, 0xfbb5,
+  0x7fed, 0xfbaf, 0x7fed, 0xfba9, 0x7fec, 0xfba2, 0x7fec, 0xfb9c,
+  0x7fec, 0xfb96, 0x7fec, 0xfb8f, 0x7fec, 0xfb89, 0x7feb, 0xfb83,
+  0x7feb, 0xfb7d, 0x7feb, 0xfb76, 0x7feb, 0xfb70, 0x7fea, 0xfb6a,
+  0x7fea, 0xfb64, 0x7fea, 0xfb5d, 0x7fea, 0xfb57, 0x7fea, 0xfb51,
+  0x7fe9, 0xfb4a, 0x7fe9, 0xfb44, 0x7fe9, 0xfb3e, 0x7fe9, 0xfb38,
+  0x7fe8, 0xfb31, 0x7fe8, 0xfb2b, 0x7fe8, 0xfb25, 0x7fe8, 0xfb1e,
+  0x7fe7, 0xfb18, 0x7fe7, 0xfb12, 0x7fe7, 0xfb0c, 0x7fe7, 0xfb05,
+  0x7fe6, 0xfaff, 0x7fe6, 0xfaf9, 0x7fe6, 0xfaf3, 0x7fe6, 0xfaec,
+  0x7fe5, 0xfae6, 0x7fe5, 0xfae0, 0x7fe5, 0xfad9, 0x7fe5, 0xfad3,
+  0x7fe4, 0xfacd, 0x7fe4, 0xfac7, 0x7fe4, 0xfac0, 0x7fe4, 0xfaba,
+  0x7fe3, 0xfab4, 0x7fe3, 0xfaad, 0x7fe3, 0xfaa7, 0x7fe3, 0xfaa1,
+  0x7fe2, 0xfa9b, 0x7fe2, 0xfa94, 0x7fe2, 0xfa8e, 0x7fe2, 0xfa88,
+  0x7fe1, 0xfa81, 0x7fe1, 0xfa7b, 0x7fe1, 0xfa75, 0x7fe0, 0xfa6f,
+  0x7fe0, 0xfa68, 0x7fe0, 0xfa62, 0x7fe0, 0xfa5c, 0x7fdf, 0xfa56,
+  0x7fdf, 0xfa4f, 0x7fdf, 0xfa49, 0x7fdf, 0xfa43, 0x7fde, 0xfa3c,
+  0x7fde, 0xfa36, 0x7fde, 0xfa30, 0x7fdd, 0xfa2a, 0x7fdd, 0xfa23,
+  0x7fdd, 0xfa1d, 0x7fdd, 0xfa17, 0x7fdc, 0xfa11, 0x7fdc, 0xfa0a,
+  0x7fdc, 0xfa04, 0x7fdb, 0xf9fe, 0x7fdb, 0xf9f7, 0x7fdb, 0xf9f1,
+  0x7fda, 0xf9eb, 0x7fda, 0xf9e5, 0x7fda, 0xf9de, 0x7fda, 0xf9d8,
+  0x7fd9, 0xf9d2, 0x7fd9, 0xf9cb, 0x7fd9, 0xf9c5, 0x7fd8, 0xf9bf,
+  0x7fd8, 0xf9b9, 0x7fd8, 0xf9b2, 0x7fd7, 0xf9ac, 0x7fd7, 0xf9a6,
+  0x7fd7, 0xf9a0, 0x7fd6, 0xf999, 0x7fd6, 0xf993, 0x7fd6, 0xf98d,
+  0x7fd6, 0xf986, 0x7fd5, 0xf980, 0x7fd5, 0xf97a, 0x7fd5, 0xf974,
+  0x7fd4, 0xf96d, 0x7fd4, 0xf967, 0x7fd4, 0xf961, 0x7fd3, 0xf95b,
+  0x7fd3, 0xf954, 0x7fd3, 0xf94e, 0x7fd2, 0xf948, 0x7fd2, 0xf941,
+  0x7fd2, 0xf93b, 0x7fd1, 0xf935, 0x7fd1, 0xf92f, 0x7fd1, 0xf928,
+  0x7fd0, 0xf922, 0x7fd0, 0xf91c, 0x7fd0, 0xf916, 0x7fcf, 0xf90f,
+  0x7fcf, 0xf909, 0x7fcf, 0xf903, 0x7fce, 0xf8fc, 0x7fce, 0xf8f6,
+  0x7fce, 0xf8f0, 0x7fcd, 0xf8ea, 0x7fcd, 0xf8e3, 0x7fcd, 0xf8dd,
+  0x7fcc, 0xf8d7, 0x7fcc, 0xf8d0, 0x7fcb, 0xf8ca, 0x7fcb, 0xf8c4,
+  0x7fcb, 0xf8be, 0x7fca, 0xf8b7, 0x7fca, 0xf8b1, 0x7fca, 0xf8ab,
+  0x7fc9, 0xf8a5, 0x7fc9, 0xf89e, 0x7fc9, 0xf898, 0x7fc8, 0xf892,
+  0x7fc8, 0xf88b, 0x7fc7, 0xf885, 0x7fc7, 0xf87f, 0x7fc7, 0xf879,
+  0x7fc6, 0xf872, 0x7fc6, 0xf86c, 0x7fc6, 0xf866, 0x7fc5, 0xf860,
+  0x7fc5, 0xf859, 0x7fc5, 0xf853, 0x7fc4, 0xf84d, 0x7fc4, 0xf846,
+  0x7fc3, 0xf840, 0x7fc3, 0xf83a, 0x7fc3, 0xf834, 0x7fc2, 0xf82d,
+  0x7fc2, 0xf827, 0x7fc1, 0xf821, 0x7fc1, 0xf81b, 0x7fc1, 0xf814,
+  0x7fc0, 0xf80e, 0x7fc0, 0xf808, 0x7fc0, 0xf802, 0x7fbf, 0xf7fb,
+  0x7fbf, 0xf7f5, 0x7fbe, 0xf7ef, 0x7fbe, 0xf7e8, 0x7fbe, 0xf7e2,
+  0x7fbd, 0xf7dc, 0x7fbd, 0xf7d6, 0x7fbc, 0xf7cf, 0x7fbc, 0xf7c9,
+  0x7fbc, 0xf7c3, 0x7fbb, 0xf7bd, 0x7fbb, 0xf7b6, 0x7fba, 0xf7b0,
+  0x7fba, 0xf7aa, 0x7fb9, 0xf7a3, 0x7fb9, 0xf79d, 0x7fb9, 0xf797,
+  0x7fb8, 0xf791, 0x7fb8, 0xf78a, 0x7fb7, 0xf784, 0x7fb7, 0xf77e,
+  0x7fb7, 0xf778, 0x7fb6, 0xf771, 0x7fb6, 0xf76b, 0x7fb5, 0xf765,
+  0x7fb5, 0xf75e, 0x7fb4, 0xf758, 0x7fb4, 0xf752, 0x7fb4, 0xf74c,
+  0x7fb3, 0xf745, 0x7fb3, 0xf73f, 0x7fb2, 0xf739, 0x7fb2, 0xf733,
+  0x7fb1, 0xf72c, 0x7fb1, 0xf726, 0x7fb1, 0xf720, 0x7fb0, 0xf71a,
+  0x7fb0, 0xf713, 0x7faf, 0xf70d, 0x7faf, 0xf707, 0x7fae, 0xf700,
+  0x7fae, 0xf6fa, 0x7fae, 0xf6f4, 0x7fad, 0xf6ee, 0x7fad, 0xf6e7,
+  0x7fac, 0xf6e1, 0x7fac, 0xf6db, 0x7fab, 0xf6d5, 0x7fab, 0xf6ce,
+  0x7faa, 0xf6c8, 0x7faa, 0xf6c2, 0x7fa9, 0xf6bc, 0x7fa9, 0xf6b5,
+  0x7fa9, 0xf6af, 0x7fa8, 0xf6a9, 0x7fa8, 0xf6a2, 0x7fa7, 0xf69c,
+  0x7fa7, 0xf696, 0x7fa6, 0xf690, 0x7fa6, 0xf689, 0x7fa5, 0xf683,
+  0x7fa5, 0xf67d, 0x7fa4, 0xf677, 0x7fa4, 0xf670, 0x7fa3, 0xf66a,
+  0x7fa3, 0xf664, 0x7fa3, 0xf65e, 0x7fa2, 0xf657, 0x7fa2, 0xf651,
+  0x7fa1, 0xf64b, 0x7fa1, 0xf644, 0x7fa0, 0xf63e, 0x7fa0, 0xf638,
+  0x7f9f, 0xf632, 0x7f9f, 0xf62b, 0x7f9e, 0xf625, 0x7f9e, 0xf61f,
+  0x7f9d, 0xf619, 0x7f9d, 0xf612, 0x7f9c, 0xf60c, 0x7f9c, 0xf606,
+  0x7f9b, 0xf600, 0x7f9b, 0xf5f9, 0x7f9a, 0xf5f3, 0x7f9a, 0xf5ed,
+  0x7f99, 0xf5e7, 0x7f99, 0xf5e0, 0x7f98, 0xf5da, 0x7f98, 0xf5d4,
+  0x7f97, 0xf5cd, 0x7f97, 0xf5c7, 0x7f96, 0xf5c1, 0x7f96, 0xf5bb,
+  0x7f95, 0xf5b4, 0x7f95, 0xf5ae, 0x7f94, 0xf5a8, 0x7f94, 0xf5a2,
+  0x7f93, 0xf59b, 0x7f93, 0xf595, 0x7f92, 0xf58f, 0x7f92, 0xf589,
+  0x7f91, 0xf582, 0x7f91, 0xf57c, 0x7f90, 0xf576, 0x7f90, 0xf570,
+  0x7f8f, 0xf569, 0x7f8f, 0xf563, 0x7f8e, 0xf55d, 0x7f8e, 0xf556,
+  0x7f8d, 0xf550, 0x7f8d, 0xf54a, 0x7f8c, 0xf544, 0x7f8b, 0xf53d,
+  0x7f8b, 0xf537, 0x7f8a, 0xf531, 0x7f8a, 0xf52b, 0x7f89, 0xf524,
+  0x7f89, 0xf51e, 0x7f88, 0xf518, 0x7f88, 0xf512, 0x7f87, 0xf50b,
+  0x7f87, 0xf505, 0x7f86, 0xf4ff, 0x7f86, 0xf4f9, 0x7f85, 0xf4f2,
+  0x7f85, 0xf4ec, 0x7f84, 0xf4e6, 0x7f83, 0xf4e0, 0x7f83, 0xf4d9,
+  0x7f82, 0xf4d3, 0x7f82, 0xf4cd, 0x7f81, 0xf4c6, 0x7f81, 0xf4c0,
+  0x7f80, 0xf4ba, 0x7f80, 0xf4b4, 0x7f7f, 0xf4ad, 0x7f7e, 0xf4a7,
+  0x7f7e, 0xf4a1, 0x7f7d, 0xf49b, 0x7f7d, 0xf494, 0x7f7c, 0xf48e,
+  0x7f7c, 0xf488, 0x7f7b, 0xf482, 0x7f7b, 0xf47b, 0x7f7a, 0xf475,
+  0x7f79, 0xf46f, 0x7f79, 0xf469, 0x7f78, 0xf462, 0x7f78, 0xf45c,
+  0x7f77, 0xf456, 0x7f77, 0xf450, 0x7f76, 0xf449, 0x7f75, 0xf443,
+  0x7f75, 0xf43d, 0x7f74, 0xf437, 0x7f74, 0xf430, 0x7f73, 0xf42a,
+  0x7f72, 0xf424, 0x7f72, 0xf41e, 0x7f71, 0xf417, 0x7f71, 0xf411,
+  0x7f70, 0xf40b, 0x7f70, 0xf405, 0x7f6f, 0xf3fe, 0x7f6e, 0xf3f8,
+  0x7f6e, 0xf3f2, 0x7f6d, 0xf3ec, 0x7f6d, 0xf3e5, 0x7f6c, 0xf3df,
+  0x7f6b, 0xf3d9, 0x7f6b, 0xf3d2, 0x7f6a, 0xf3cc, 0x7f6a, 0xf3c6,
+  0x7f69, 0xf3c0, 0x7f68, 0xf3b9, 0x7f68, 0xf3b3, 0x7f67, 0xf3ad,
+  0x7f67, 0xf3a7, 0x7f66, 0xf3a0, 0x7f65, 0xf39a, 0x7f65, 0xf394,
+  0x7f64, 0xf38e, 0x7f64, 0xf387, 0x7f63, 0xf381, 0x7f62, 0xf37b,
+  0x7f62, 0xf375, 0x7f61, 0xf36e, 0x7f60, 0xf368, 0x7f60, 0xf362,
+  0x7f5f, 0xf35c, 0x7f5f, 0xf355, 0x7f5e, 0xf34f, 0x7f5d, 0xf349,
+  0x7f5d, 0xf343, 0x7f5c, 0xf33c, 0x7f5b, 0xf336, 0x7f5b, 0xf330,
+  0x7f5a, 0xf32a, 0x7f5a, 0xf323, 0x7f59, 0xf31d, 0x7f58, 0xf317,
+  0x7f58, 0xf311, 0x7f57, 0xf30a, 0x7f56, 0xf304, 0x7f56, 0xf2fe,
+  0x7f55, 0xf2f8, 0x7f55, 0xf2f1, 0x7f54, 0xf2eb, 0x7f53, 0xf2e5,
+  0x7f53, 0xf2df, 0x7f52, 0xf2d8, 0x7f51, 0xf2d2, 0x7f51, 0xf2cc,
+  0x7f50, 0xf2c6, 0x7f4f, 0xf2bf, 0x7f4f, 0xf2b9, 0x7f4e, 0xf2b3,
+  0x7f4d, 0xf2ad, 0x7f4d, 0xf2a6, 0x7f4c, 0xf2a0, 0x7f4b, 0xf29a,
+  0x7f4b, 0xf294, 0x7f4a, 0xf28d, 0x7f49, 0xf287, 0x7f49, 0xf281,
+  0x7f48, 0xf27b, 0x7f47, 0xf274, 0x7f47, 0xf26e, 0x7f46, 0xf268,
+  0x7f45, 0xf262, 0x7f45, 0xf25b, 0x7f44, 0xf255, 0x7f43, 0xf24f,
+  0x7f43, 0xf249, 0x7f42, 0xf242, 0x7f41, 0xf23c, 0x7f41, 0xf236,
+  0x7f40, 0xf230, 0x7f3f, 0xf229, 0x7f3f, 0xf223, 0x7f3e, 0xf21d,
+  0x7f3d, 0xf217, 0x7f3d, 0xf210, 0x7f3c, 0xf20a, 0x7f3b, 0xf204,
+  0x7f3b, 0xf1fe, 0x7f3a, 0xf1f7, 0x7f39, 0xf1f1, 0x7f39, 0xf1eb,
+  0x7f38, 0xf1e5, 0x7f37, 0xf1de, 0x7f36, 0xf1d8, 0x7f36, 0xf1d2,
+  0x7f35, 0xf1cc, 0x7f34, 0xf1c6, 0x7f34, 0xf1bf, 0x7f33, 0xf1b9,
+  0x7f32, 0xf1b3, 0x7f32, 0xf1ad, 0x7f31, 0xf1a6, 0x7f30, 0xf1a0,
+  0x7f2f, 0xf19a, 0x7f2f, 0xf194, 0x7f2e, 0xf18d, 0x7f2d, 0xf187,
+  0x7f2d, 0xf181, 0x7f2c, 0xf17b, 0x7f2b, 0xf174, 0x7f2a, 0xf16e,
+  0x7f2a, 0xf168, 0x7f29, 0xf162, 0x7f28, 0xf15b, 0x7f28, 0xf155,
+  0x7f27, 0xf14f, 0x7f26, 0xf149, 0x7f25, 0xf142, 0x7f25, 0xf13c,
+  0x7f24, 0xf136, 0x7f23, 0xf130, 0x7f23, 0xf129, 0x7f22, 0xf123,
+  0x7f21, 0xf11d, 0x7f20, 0xf117, 0x7f20, 0xf110, 0x7f1f, 0xf10a,
+  0x7f1e, 0xf104, 0x7f1d, 0xf0fe, 0x7f1d, 0xf0f8, 0x7f1c, 0xf0f1,
+  0x7f1b, 0xf0eb, 0x7f1a, 0xf0e5, 0x7f1a, 0xf0df, 0x7f19, 0xf0d8,
+  0x7f18, 0xf0d2, 0x7f17, 0xf0cc, 0x7f17, 0xf0c6, 0x7f16, 0xf0bf,
+  0x7f15, 0xf0b9, 0x7f14, 0xf0b3, 0x7f14, 0xf0ad, 0x7f13, 0xf0a6,
+  0x7f12, 0xf0a0, 0x7f11, 0xf09a, 0x7f11, 0xf094, 0x7f10, 0xf08d,
+  0x7f0f, 0xf087, 0x7f0e, 0xf081, 0x7f0e, 0xf07b, 0x7f0d, 0xf075,
+  0x7f0c, 0xf06e, 0x7f0b, 0xf068, 0x7f0b, 0xf062, 0x7f0a, 0xf05c,
+  0x7f09, 0xf055, 0x7f08, 0xf04f, 0x7f08, 0xf049, 0x7f07, 0xf043,
+  0x7f06, 0xf03c, 0x7f05, 0xf036, 0x7f04, 0xf030, 0x7f04, 0xf02a,
+  0x7f03, 0xf023, 0x7f02, 0xf01d, 0x7f01, 0xf017, 0x7f01, 0xf011,
+  0x7f00, 0xf00b, 0x7eff, 0xf004, 0x7efe, 0xeffe, 0x7efd, 0xeff8,
+  0x7efd, 0xeff2, 0x7efc, 0xefeb, 0x7efb, 0xefe5, 0x7efa, 0xefdf,
+  0x7ef9, 0xefd9, 0x7ef9, 0xefd2, 0x7ef8, 0xefcc, 0x7ef7, 0xefc6,
+  0x7ef6, 0xefc0, 0x7ef5, 0xefb9, 0x7ef5, 0xefb3, 0x7ef4, 0xefad,
+  0x7ef3, 0xefa7, 0x7ef2, 0xefa1, 0x7ef1, 0xef9a, 0x7ef1, 0xef94,
+  0x7ef0, 0xef8e, 0x7eef, 0xef88, 0x7eee, 0xef81, 0x7eed, 0xef7b,
+  0x7eed, 0xef75, 0x7eec, 0xef6f, 0x7eeb, 0xef68, 0x7eea, 0xef62,
+  0x7ee9, 0xef5c, 0x7ee9, 0xef56, 0x7ee8, 0xef50, 0x7ee7, 0xef49,
+  0x7ee6, 0xef43, 0x7ee5, 0xef3d, 0x7ee4, 0xef37, 0x7ee4, 0xef30,
+  0x7ee3, 0xef2a, 0x7ee2, 0xef24, 0x7ee1, 0xef1e, 0x7ee0, 0xef18,
+  0x7edf, 0xef11, 0x7edf, 0xef0b, 0x7ede, 0xef05, 0x7edd, 0xeeff,
+  0x7edc, 0xeef8, 0x7edb, 0xeef2, 0x7eda, 0xeeec, 0x7eda, 0xeee6,
+  0x7ed9, 0xeedf, 0x7ed8, 0xeed9, 0x7ed7, 0xeed3, 0x7ed6, 0xeecd,
+  0x7ed5, 0xeec7, 0x7ed5, 0xeec0, 0x7ed4, 0xeeba, 0x7ed3, 0xeeb4,
+  0x7ed2, 0xeeae, 0x7ed1, 0xeea7, 0x7ed0, 0xeea1, 0x7ecf, 0xee9b,
+  0x7ecf, 0xee95, 0x7ece, 0xee8f, 0x7ecd, 0xee88, 0x7ecc, 0xee82,
+  0x7ecb, 0xee7c, 0x7eca, 0xee76, 0x7ec9, 0xee6f, 0x7ec9, 0xee69,
+  0x7ec8, 0xee63, 0x7ec7, 0xee5d, 0x7ec6, 0xee57, 0x7ec5, 0xee50,
+  0x7ec4, 0xee4a, 0x7ec3, 0xee44, 0x7ec3, 0xee3e, 0x7ec2, 0xee37,
+  0x7ec1, 0xee31, 0x7ec0, 0xee2b, 0x7ebf, 0xee25, 0x7ebe, 0xee1f,
+  0x7ebd, 0xee18, 0x7ebc, 0xee12, 0x7ebb, 0xee0c, 0x7ebb, 0xee06,
+  0x7eba, 0xedff, 0x7eb9, 0xedf9, 0x7eb8, 0xedf3, 0x7eb7, 0xeded,
+  0x7eb6, 0xede7, 0x7eb5, 0xede0, 0x7eb4, 0xedda, 0x7eb4, 0xedd4,
+  0x7eb3, 0xedce, 0x7eb2, 0xedc7, 0x7eb1, 0xedc1, 0x7eb0, 0xedbb,
+  0x7eaf, 0xedb5, 0x7eae, 0xedaf, 0x7ead, 0xeda8, 0x7eac, 0xeda2,
+  0x7eab, 0xed9c, 0x7eab, 0xed96, 0x7eaa, 0xed8f, 0x7ea9, 0xed89,
+  0x7ea8, 0xed83, 0x7ea7, 0xed7d, 0x7ea6, 0xed77, 0x7ea5, 0xed70,
+  0x7ea4, 0xed6a, 0x7ea3, 0xed64, 0x7ea2, 0xed5e, 0x7ea1, 0xed58,
+  0x7ea1, 0xed51, 0x7ea0, 0xed4b, 0x7e9f, 0xed45, 0x7e9e, 0xed3f,
+  0x7e9d, 0xed38, 0x7e9c, 0xed32, 0x7e9b, 0xed2c, 0x7e9a, 0xed26,
+  0x7e99, 0xed20, 0x7e98, 0xed19, 0x7e97, 0xed13, 0x7e96, 0xed0d,
+  0x7e95, 0xed07, 0x7e94, 0xed01, 0x7e94, 0xecfa, 0x7e93, 0xecf4,
+  0x7e92, 0xecee, 0x7e91, 0xece8, 0x7e90, 0xece1, 0x7e8f, 0xecdb,
+  0x7e8e, 0xecd5, 0x7e8d, 0xeccf, 0x7e8c, 0xecc9, 0x7e8b, 0xecc2,
+  0x7e8a, 0xecbc, 0x7e89, 0xecb6, 0x7e88, 0xecb0, 0x7e87, 0xecaa,
+  0x7e86, 0xeca3, 0x7e85, 0xec9d, 0x7e84, 0xec97, 0x7e84, 0xec91,
+  0x7e83, 0xec8a, 0x7e82, 0xec84, 0x7e81, 0xec7e, 0x7e80, 0xec78,
+  0x7e7f, 0xec72, 0x7e7e, 0xec6b, 0x7e7d, 0xec65, 0x7e7c, 0xec5f,
+  0x7e7b, 0xec59, 0x7e7a, 0xec53, 0x7e79, 0xec4c, 0x7e78, 0xec46,
+  0x7e77, 0xec40, 0x7e76, 0xec3a, 0x7e75, 0xec34, 0x7e74, 0xec2d,
+  0x7e73, 0xec27, 0x7e72, 0xec21, 0x7e71, 0xec1b, 0x7e70, 0xec15,
+  0x7e6f, 0xec0e, 0x7e6e, 0xec08, 0x7e6d, 0xec02, 0x7e6c, 0xebfc,
+  0x7e6b, 0xebf5, 0x7e6a, 0xebef, 0x7e69, 0xebe9, 0x7e68, 0xebe3,
+  0x7e67, 0xebdd, 0x7e66, 0xebd6, 0x7e65, 0xebd0, 0x7e64, 0xebca,
+  0x7e63, 0xebc4, 0x7e62, 0xebbe, 0x7e61, 0xebb7, 0x7e60, 0xebb1,
+  0x7e5f, 0xebab, 0x7e5e, 0xeba5, 0x7e5d, 0xeb9f, 0x7e5c, 0xeb98,
+  0x7e5b, 0xeb92, 0x7e5a, 0xeb8c, 0x7e59, 0xeb86, 0x7e58, 0xeb80,
+  0x7e57, 0xeb79, 0x7e56, 0xeb73, 0x7e55, 0xeb6d, 0x7e54, 0xeb67,
+  0x7e53, 0xeb61, 0x7e52, 0xeb5a, 0x7e51, 0xeb54, 0x7e50, 0xeb4e,
+  0x7e4f, 0xeb48, 0x7e4e, 0xeb42, 0x7e4d, 0xeb3b, 0x7e4c, 0xeb35,
+  0x7e4b, 0xeb2f, 0x7e4a, 0xeb29, 0x7e49, 0xeb23, 0x7e48, 0xeb1c,
+  0x7e47, 0xeb16, 0x7e46, 0xeb10, 0x7e45, 0xeb0a, 0x7e44, 0xeb04,
+  0x7e43, 0xeafd, 0x7e42, 0xeaf7, 0x7e41, 0xeaf1, 0x7e40, 0xeaeb,
+  0x7e3f, 0xeae5, 0x7e3e, 0xeade, 0x7e3d, 0xead8, 0x7e3c, 0xead2,
+  0x7e3b, 0xeacc, 0x7e3a, 0xeac6, 0x7e39, 0xeabf, 0x7e38, 0xeab9,
+  0x7e37, 0xeab3, 0x7e35, 0xeaad, 0x7e34, 0xeaa7, 0x7e33, 0xeaa0,
+  0x7e32, 0xea9a, 0x7e31, 0xea94, 0x7e30, 0xea8e, 0x7e2f, 0xea88,
+  0x7e2e, 0xea81, 0x7e2d, 0xea7b, 0x7e2c, 0xea75, 0x7e2b, 0xea6f,
+  0x7e2a, 0xea69, 0x7e29, 0xea63, 0x7e28, 0xea5c, 0x7e27, 0xea56,
+  0x7e26, 0xea50, 0x7e25, 0xea4a, 0x7e24, 0xea44, 0x7e22, 0xea3d,
+  0x7e21, 0xea37, 0x7e20, 0xea31, 0x7e1f, 0xea2b, 0x7e1e, 0xea25,
+  0x7e1d, 0xea1e, 0x7e1c, 0xea18, 0x7e1b, 0xea12, 0x7e1a, 0xea0c,
+  0x7e19, 0xea06, 0x7e18, 0xe9ff, 0x7e17, 0xe9f9, 0x7e16, 0xe9f3,
+  0x7e14, 0xe9ed, 0x7e13, 0xe9e7, 0x7e12, 0xe9e1, 0x7e11, 0xe9da,
+  0x7e10, 0xe9d4, 0x7e0f, 0xe9ce, 0x7e0e, 0xe9c8, 0x7e0d, 0xe9c2,
+  0x7e0c, 0xe9bb, 0x7e0b, 0xe9b5, 0x7e0a, 0xe9af, 0x7e08, 0xe9a9,
+  0x7e07, 0xe9a3, 0x7e06, 0xe99c, 0x7e05, 0xe996, 0x7e04, 0xe990,
+  0x7e03, 0xe98a, 0x7e02, 0xe984, 0x7e01, 0xe97e, 0x7e00, 0xe977,
+  0x7dff, 0xe971, 0x7dfd, 0xe96b, 0x7dfc, 0xe965, 0x7dfb, 0xe95f,
+  0x7dfa, 0xe958, 0x7df9, 0xe952, 0x7df8, 0xe94c, 0x7df7, 0xe946,
+  0x7df6, 0xe940, 0x7df5, 0xe93a, 0x7df3, 0xe933, 0x7df2, 0xe92d,
+  0x7df1, 0xe927, 0x7df0, 0xe921, 0x7def, 0xe91b, 0x7dee, 0xe914,
+  0x7ded, 0xe90e, 0x7dec, 0xe908, 0x7dea, 0xe902, 0x7de9, 0xe8fc,
+  0x7de8, 0xe8f6, 0x7de7, 0xe8ef, 0x7de6, 0xe8e9, 0x7de5, 0xe8e3,
+  0x7de4, 0xe8dd, 0x7de2, 0xe8d7, 0x7de1, 0xe8d0, 0x7de0, 0xe8ca,
+  0x7ddf, 0xe8c4, 0x7dde, 0xe8be, 0x7ddd, 0xe8b8, 0x7ddc, 0xe8b2,
+  0x7dda, 0xe8ab, 0x7dd9, 0xe8a5, 0x7dd8, 0xe89f, 0x7dd7, 0xe899,
+  0x7dd6, 0xe893, 0x7dd5, 0xe88c, 0x7dd4, 0xe886, 0x7dd2, 0xe880,
+  0x7dd1, 0xe87a, 0x7dd0, 0xe874, 0x7dcf, 0xe86e, 0x7dce, 0xe867,
+  0x7dcd, 0xe861, 0x7dcc, 0xe85b, 0x7dca, 0xe855, 0x7dc9, 0xe84f,
+  0x7dc8, 0xe849, 0x7dc7, 0xe842, 0x7dc6, 0xe83c, 0x7dc5, 0xe836,
+  0x7dc3, 0xe830, 0x7dc2, 0xe82a, 0x7dc1, 0xe823, 0x7dc0, 0xe81d,
+  0x7dbf, 0xe817, 0x7dbd, 0xe811, 0x7dbc, 0xe80b, 0x7dbb, 0xe805,
+  0x7dba, 0xe7fe, 0x7db9, 0xe7f8, 0x7db8, 0xe7f2, 0x7db6, 0xe7ec,
+  0x7db5, 0xe7e6, 0x7db4, 0xe7e0, 0x7db3, 0xe7d9, 0x7db2, 0xe7d3,
+  0x7db0, 0xe7cd, 0x7daf, 0xe7c7, 0x7dae, 0xe7c1, 0x7dad, 0xe7bb,
+  0x7dac, 0xe7b4, 0x7dab, 0xe7ae, 0x7da9, 0xe7a8, 0x7da8, 0xe7a2,
+  0x7da7, 0xe79c, 0x7da6, 0xe796, 0x7da5, 0xe78f, 0x7da3, 0xe789,
+  0x7da2, 0xe783, 0x7da1, 0xe77d, 0x7da0, 0xe777, 0x7d9f, 0xe771,
+  0x7d9d, 0xe76a, 0x7d9c, 0xe764, 0x7d9b, 0xe75e, 0x7d9a, 0xe758,
+  0x7d98, 0xe752, 0x7d97, 0xe74c, 0x7d96, 0xe745, 0x7d95, 0xe73f,
+  0x7d94, 0xe739, 0x7d92, 0xe733, 0x7d91, 0xe72d, 0x7d90, 0xe727,
+  0x7d8f, 0xe720, 0x7d8e, 0xe71a, 0x7d8c, 0xe714, 0x7d8b, 0xe70e,
+  0x7d8a, 0xe708, 0x7d89, 0xe702, 0x7d87, 0xe6fb, 0x7d86, 0xe6f5,
+  0x7d85, 0xe6ef, 0x7d84, 0xe6e9, 0x7d82, 0xe6e3, 0x7d81, 0xe6dd,
+  0x7d80, 0xe6d6, 0x7d7f, 0xe6d0, 0x7d7e, 0xe6ca, 0x7d7c, 0xe6c4,
+  0x7d7b, 0xe6be, 0x7d7a, 0xe6b8, 0x7d79, 0xe6b2, 0x7d77, 0xe6ab,
+  0x7d76, 0xe6a5, 0x7d75, 0xe69f, 0x7d74, 0xe699, 0x7d72, 0xe693,
+  0x7d71, 0xe68d, 0x7d70, 0xe686, 0x7d6f, 0xe680, 0x7d6d, 0xe67a,
+  0x7d6c, 0xe674, 0x7d6b, 0xe66e, 0x7d6a, 0xe668, 0x7d68, 0xe661,
+  0x7d67, 0xe65b, 0x7d66, 0xe655, 0x7d65, 0xe64f, 0x7d63, 0xe649,
+  0x7d62, 0xe643, 0x7d61, 0xe63d, 0x7d60, 0xe636, 0x7d5e, 0xe630,
+  0x7d5d, 0xe62a, 0x7d5c, 0xe624, 0x7d5a, 0xe61e, 0x7d59, 0xe618,
+  0x7d58, 0xe611, 0x7d57, 0xe60b, 0x7d55, 0xe605, 0x7d54, 0xe5ff,
+  0x7d53, 0xe5f9, 0x7d52, 0xe5f3, 0x7d50, 0xe5ed, 0x7d4f, 0xe5e6,
+  0x7d4e, 0xe5e0, 0x7d4c, 0xe5da, 0x7d4b, 0xe5d4, 0x7d4a, 0xe5ce,
+  0x7d49, 0xe5c8, 0x7d47, 0xe5c2, 0x7d46, 0xe5bb, 0x7d45, 0xe5b5,
+  0x7d43, 0xe5af, 0x7d42, 0xe5a9, 0x7d41, 0xe5a3, 0x7d3f, 0xe59d,
+  0x7d3e, 0xe596, 0x7d3d, 0xe590, 0x7d3c, 0xe58a, 0x7d3a, 0xe584,
+  0x7d39, 0xe57e, 0x7d38, 0xe578, 0x7d36, 0xe572, 0x7d35, 0xe56b,
+  0x7d34, 0xe565, 0x7d32, 0xe55f, 0x7d31, 0xe559, 0x7d30, 0xe553,
+  0x7d2f, 0xe54d, 0x7d2d, 0xe547, 0x7d2c, 0xe540, 0x7d2b, 0xe53a,
+  0x7d29, 0xe534, 0x7d28, 0xe52e, 0x7d27, 0xe528, 0x7d25, 0xe522,
+  0x7d24, 0xe51c, 0x7d23, 0xe515, 0x7d21, 0xe50f, 0x7d20, 0xe509,
+  0x7d1f, 0xe503, 0x7d1d, 0xe4fd, 0x7d1c, 0xe4f7, 0x7d1b, 0xe4f1,
+  0x7d19, 0xe4ea, 0x7d18, 0xe4e4, 0x7d17, 0xe4de, 0x7d15, 0xe4d8,
+  0x7d14, 0xe4d2, 0x7d13, 0xe4cc, 0x7d11, 0xe4c6, 0x7d10, 0xe4bf,
+  0x7d0f, 0xe4b9, 0x7d0d, 0xe4b3, 0x7d0c, 0xe4ad, 0x7d0b, 0xe4a7,
+  0x7d09, 0xe4a1, 0x7d08, 0xe49b, 0x7d07, 0xe494, 0x7d05, 0xe48e,
+  0x7d04, 0xe488, 0x7d03, 0xe482, 0x7d01, 0xe47c, 0x7d00, 0xe476,
+  0x7cff, 0xe470, 0x7cfd, 0xe46a, 0x7cfc, 0xe463, 0x7cfb, 0xe45d,
+  0x7cf9, 0xe457, 0x7cf8, 0xe451, 0x7cf6, 0xe44b, 0x7cf5, 0xe445,
+  0x7cf4, 0xe43f, 0x7cf2, 0xe438, 0x7cf1, 0xe432, 0x7cf0, 0xe42c,
+  0x7cee, 0xe426, 0x7ced, 0xe420, 0x7cec, 0xe41a, 0x7cea, 0xe414,
+  0x7ce9, 0xe40e, 0x7ce7, 0xe407, 0x7ce6, 0xe401, 0x7ce5, 0xe3fb,
+  0x7ce3, 0xe3f5, 0x7ce2, 0xe3ef, 0x7ce1, 0xe3e9, 0x7cdf, 0xe3e3,
+  0x7cde, 0xe3dc, 0x7cdc, 0xe3d6, 0x7cdb, 0xe3d0, 0x7cda, 0xe3ca,
+  0x7cd8, 0xe3c4, 0x7cd7, 0xe3be, 0x7cd5, 0xe3b8, 0x7cd4, 0xe3b2,
+  0x7cd3, 0xe3ab, 0x7cd1, 0xe3a5, 0x7cd0, 0xe39f, 0x7ccf, 0xe399,
+  0x7ccd, 0xe393, 0x7ccc, 0xe38d, 0x7cca, 0xe387, 0x7cc9, 0xe381,
+  0x7cc8, 0xe37a, 0x7cc6, 0xe374, 0x7cc5, 0xe36e, 0x7cc3, 0xe368,
+  0x7cc2, 0xe362, 0x7cc1, 0xe35c, 0x7cbf, 0xe356, 0x7cbe, 0xe350,
+  0x7cbc, 0xe349, 0x7cbb, 0xe343, 0x7cb9, 0xe33d, 0x7cb8, 0xe337,
+  0x7cb7, 0xe331, 0x7cb5, 0xe32b, 0x7cb4, 0xe325, 0x7cb2, 0xe31f,
+  0x7cb1, 0xe318, 0x7cb0, 0xe312, 0x7cae, 0xe30c, 0x7cad, 0xe306,
+  0x7cab, 0xe300, 0x7caa, 0xe2fa, 0x7ca8, 0xe2f4, 0x7ca7, 0xe2ee,
+  0x7ca6, 0xe2e8, 0x7ca4, 0xe2e1, 0x7ca3, 0xe2db, 0x7ca1, 0xe2d5,
+  0x7ca0, 0xe2cf, 0x7c9e, 0xe2c9, 0x7c9d, 0xe2c3, 0x7c9c, 0xe2bd,
+  0x7c9a, 0xe2b7, 0x7c99, 0xe2b0, 0x7c97, 0xe2aa, 0x7c96, 0xe2a4,
+  0x7c94, 0xe29e, 0x7c93, 0xe298, 0x7c91, 0xe292, 0x7c90, 0xe28c,
+  0x7c8f, 0xe286, 0x7c8d, 0xe280, 0x7c8c, 0xe279, 0x7c8a, 0xe273,
+  0x7c89, 0xe26d, 0x7c87, 0xe267, 0x7c86, 0xe261, 0x7c84, 0xe25b,
+  0x7c83, 0xe255, 0x7c82, 0xe24f, 0x7c80, 0xe249, 0x7c7f, 0xe242,
+  0x7c7d, 0xe23c, 0x7c7c, 0xe236, 0x7c7a, 0xe230, 0x7c79, 0xe22a,
+  0x7c77, 0xe224, 0x7c76, 0xe21e, 0x7c74, 0xe218, 0x7c73, 0xe212,
+  0x7c71, 0xe20b, 0x7c70, 0xe205, 0x7c6e, 0xe1ff, 0x7c6d, 0xe1f9,
+  0x7c6c, 0xe1f3, 0x7c6a, 0xe1ed, 0x7c69, 0xe1e7, 0x7c67, 0xe1e1,
+  0x7c66, 0xe1db, 0x7c64, 0xe1d4, 0x7c63, 0xe1ce, 0x7c61, 0xe1c8,
+  0x7c60, 0xe1c2, 0x7c5e, 0xe1bc, 0x7c5d, 0xe1b6, 0x7c5b, 0xe1b0,
+  0x7c5a, 0xe1aa, 0x7c58, 0xe1a4, 0x7c57, 0xe19e, 0x7c55, 0xe197,
+  0x7c54, 0xe191, 0x7c52, 0xe18b, 0x7c51, 0xe185, 0x7c4f, 0xe17f,
+  0x7c4e, 0xe179, 0x7c4c, 0xe173, 0x7c4b, 0xe16d, 0x7c49, 0xe167,
+  0x7c48, 0xe160, 0x7c46, 0xe15a, 0x7c45, 0xe154, 0x7c43, 0xe14e,
+  0x7c42, 0xe148, 0x7c40, 0xe142, 0x7c3f, 0xe13c, 0x7c3d, 0xe136,
+  0x7c3c, 0xe130, 0x7c3a, 0xe12a, 0x7c39, 0xe123, 0x7c37, 0xe11d,
+  0x7c36, 0xe117, 0x7c34, 0xe111, 0x7c33, 0xe10b, 0x7c31, 0xe105,
+  0x7c30, 0xe0ff, 0x7c2e, 0xe0f9, 0x7c2d, 0xe0f3, 0x7c2b, 0xe0ed,
+  0x7c29, 0xe0e7, 0x7c28, 0xe0e0, 0x7c26, 0xe0da, 0x7c25, 0xe0d4,
+  0x7c23, 0xe0ce, 0x7c22, 0xe0c8, 0x7c20, 0xe0c2, 0x7c1f, 0xe0bc,
+  0x7c1d, 0xe0b6, 0x7c1c, 0xe0b0, 0x7c1a, 0xe0aa, 0x7c19, 0xe0a3,
+  0x7c17, 0xe09d, 0x7c16, 0xe097, 0x7c14, 0xe091, 0x7c12, 0xe08b,
+  0x7c11, 0xe085, 0x7c0f, 0xe07f, 0x7c0e, 0xe079, 0x7c0c, 0xe073,
+  0x7c0b, 0xe06d, 0x7c09, 0xe067, 0x7c08, 0xe061, 0x7c06, 0xe05a,
+  0x7c05, 0xe054, 0x7c03, 0xe04e, 0x7c01, 0xe048, 0x7c00, 0xe042,
+  0x7bfe, 0xe03c, 0x7bfd, 0xe036, 0x7bfb, 0xe030, 0x7bfa, 0xe02a,
+  0x7bf8, 0xe024, 0x7bf6, 0xe01e, 0x7bf5, 0xe017, 0x7bf3, 0xe011,
+  0x7bf2, 0xe00b, 0x7bf0, 0xe005, 0x7bef, 0xdfff, 0x7bed, 0xdff9,
+  0x7beb, 0xdff3, 0x7bea, 0xdfed, 0x7be8, 0xdfe7, 0x7be7, 0xdfe1,
+  0x7be5, 0xdfdb, 0x7be4, 0xdfd5, 0x7be2, 0xdfce, 0x7be0, 0xdfc8,
+  0x7bdf, 0xdfc2, 0x7bdd, 0xdfbc, 0x7bdc, 0xdfb6, 0x7bda, 0xdfb0,
+  0x7bd9, 0xdfaa, 0x7bd7, 0xdfa4, 0x7bd5, 0xdf9e, 0x7bd4, 0xdf98,
+  0x7bd2, 0xdf92, 0x7bd1, 0xdf8c, 0x7bcf, 0xdf86, 0x7bcd, 0xdf7f,
+  0x7bcc, 0xdf79, 0x7bca, 0xdf73, 0x7bc9, 0xdf6d, 0x7bc7, 0xdf67,
+  0x7bc5, 0xdf61, 0x7bc4, 0xdf5b, 0x7bc2, 0xdf55, 0x7bc1, 0xdf4f,
+  0x7bbf, 0xdf49, 0x7bbd, 0xdf43, 0x7bbc, 0xdf3d, 0x7bba, 0xdf37,
+  0x7bb9, 0xdf30, 0x7bb7, 0xdf2a, 0x7bb5, 0xdf24, 0x7bb4, 0xdf1e,
+  0x7bb2, 0xdf18, 0x7bb0, 0xdf12, 0x7baf, 0xdf0c, 0x7bad, 0xdf06,
+  0x7bac, 0xdf00, 0x7baa, 0xdefa, 0x7ba8, 0xdef4, 0x7ba7, 0xdeee,
+  0x7ba5, 0xdee8, 0x7ba3, 0xdee2, 0x7ba2, 0xdedb, 0x7ba0, 0xded5,
+  0x7b9f, 0xdecf, 0x7b9d, 0xdec9, 0x7b9b, 0xdec3, 0x7b9a, 0xdebd,
+  0x7b98, 0xdeb7, 0x7b96, 0xdeb1, 0x7b95, 0xdeab, 0x7b93, 0xdea5,
+  0x7b92, 0xde9f, 0x7b90, 0xde99, 0x7b8e, 0xde93, 0x7b8d, 0xde8d,
+  0x7b8b, 0xde87, 0x7b89, 0xde80, 0x7b88, 0xde7a, 0x7b86, 0xde74,
+  0x7b84, 0xde6e, 0x7b83, 0xde68, 0x7b81, 0xde62, 0x7b7f, 0xde5c,
+  0x7b7e, 0xde56, 0x7b7c, 0xde50, 0x7b7a, 0xde4a, 0x7b79, 0xde44,
+  0x7b77, 0xde3e, 0x7b76, 0xde38, 0x7b74, 0xde32, 0x7b72, 0xde2c,
+  0x7b71, 0xde26, 0x7b6f, 0xde1f, 0x7b6d, 0xde19, 0x7b6c, 0xde13,
+  0x7b6a, 0xde0d, 0x7b68, 0xde07, 0x7b67, 0xde01, 0x7b65, 0xddfb,
+  0x7b63, 0xddf5, 0x7b62, 0xddef, 0x7b60, 0xdde9, 0x7b5e, 0xdde3,
+  0x7b5d, 0xdddd, 0x7b5b, 0xddd7, 0x7b59, 0xddd1, 0x7b57, 0xddcb,
+  0x7b56, 0xddc5, 0x7b54, 0xddbf, 0x7b52, 0xddb9, 0x7b51, 0xddb2,
+  0x7b4f, 0xddac, 0x7b4d, 0xdda6, 0x7b4c, 0xdda0, 0x7b4a, 0xdd9a,
+  0x7b48, 0xdd94, 0x7b47, 0xdd8e, 0x7b45, 0xdd88, 0x7b43, 0xdd82,
+  0x7b42, 0xdd7c, 0x7b40, 0xdd76, 0x7b3e, 0xdd70, 0x7b3c, 0xdd6a,
+  0x7b3b, 0xdd64, 0x7b39, 0xdd5e, 0x7b37, 0xdd58, 0x7b36, 0xdd52,
+  0x7b34, 0xdd4c, 0x7b32, 0xdd46, 0x7b31, 0xdd40, 0x7b2f, 0xdd39,
+  0x7b2d, 0xdd33, 0x7b2b, 0xdd2d, 0x7b2a, 0xdd27, 0x7b28, 0xdd21,
+  0x7b26, 0xdd1b, 0x7b25, 0xdd15, 0x7b23, 0xdd0f, 0x7b21, 0xdd09,
+  0x7b1f, 0xdd03, 0x7b1e, 0xdcfd, 0x7b1c, 0xdcf7, 0x7b1a, 0xdcf1,
+  0x7b19, 0xdceb, 0x7b17, 0xdce5, 0x7b15, 0xdcdf, 0x7b13, 0xdcd9,
+  0x7b12, 0xdcd3, 0x7b10, 0xdccd, 0x7b0e, 0xdcc7, 0x7b0c, 0xdcc1,
+  0x7b0b, 0xdcbb, 0x7b09, 0xdcb5, 0x7b07, 0xdcae, 0x7b06, 0xdca8,
+  0x7b04, 0xdca2, 0x7b02, 0xdc9c, 0x7b00, 0xdc96, 0x7aff, 0xdc90,
+  0x7afd, 0xdc8a, 0x7afb, 0xdc84, 0x7af9, 0xdc7e, 0x7af8, 0xdc78,
+  0x7af6, 0xdc72, 0x7af4, 0xdc6c, 0x7af2, 0xdc66, 0x7af1, 0xdc60,
+  0x7aef, 0xdc5a, 0x7aed, 0xdc54, 0x7aeb, 0xdc4e, 0x7aea, 0xdc48,
+  0x7ae8, 0xdc42, 0x7ae6, 0xdc3c, 0x7ae4, 0xdc36, 0x7ae3, 0xdc30,
+  0x7ae1, 0xdc2a, 0x7adf, 0xdc24, 0x7add, 0xdc1e, 0x7adc, 0xdc18,
+  0x7ada, 0xdc12, 0x7ad8, 0xdc0c, 0x7ad6, 0xdc06, 0x7ad5, 0xdbff,
+  0x7ad3, 0xdbf9, 0x7ad1, 0xdbf3, 0x7acf, 0xdbed, 0x7acd, 0xdbe7,
+  0x7acc, 0xdbe1, 0x7aca, 0xdbdb, 0x7ac8, 0xdbd5, 0x7ac6, 0xdbcf,
+  0x7ac5, 0xdbc9, 0x7ac3, 0xdbc3, 0x7ac1, 0xdbbd, 0x7abf, 0xdbb7,
+  0x7abd, 0xdbb1, 0x7abc, 0xdbab, 0x7aba, 0xdba5, 0x7ab8, 0xdb9f,
+  0x7ab6, 0xdb99, 0x7ab5, 0xdb93, 0x7ab3, 0xdb8d, 0x7ab1, 0xdb87,
+  0x7aaf, 0xdb81, 0x7aad, 0xdb7b, 0x7aac, 0xdb75, 0x7aaa, 0xdb6f,
+  0x7aa8, 0xdb69, 0x7aa6, 0xdb63, 0x7aa4, 0xdb5d, 0x7aa3, 0xdb57,
+  0x7aa1, 0xdb51, 0x7a9f, 0xdb4b, 0x7a9d, 0xdb45, 0x7a9b, 0xdb3f,
+  0x7a9a, 0xdb39, 0x7a98, 0xdb33, 0x7a96, 0xdb2d, 0x7a94, 0xdb27,
+  0x7a92, 0xdb21, 0x7a91, 0xdb1b, 0x7a8f, 0xdb15, 0x7a8d, 0xdb0f,
+  0x7a8b, 0xdb09, 0x7a89, 0xdb03, 0x7a87, 0xdafd, 0x7a86, 0xdaf7,
+  0x7a84, 0xdaf1, 0x7a82, 0xdaea, 0x7a80, 0xdae4, 0x7a7e, 0xdade,
+  0x7a7d, 0xdad8, 0x7a7b, 0xdad2, 0x7a79, 0xdacc, 0x7a77, 0xdac6,
+  0x7a75, 0xdac0, 0x7a73, 0xdaba, 0x7a72, 0xdab4, 0x7a70, 0xdaae,
+  0x7a6e, 0xdaa8, 0x7a6c, 0xdaa2, 0x7a6a, 0xda9c, 0x7a68, 0xda96,
+  0x7a67, 0xda90, 0x7a65, 0xda8a, 0x7a63, 0xda84, 0x7a61, 0xda7e,
+  0x7a5f, 0xda78, 0x7a5d, 0xda72, 0x7a5c, 0xda6c, 0x7a5a, 0xda66,
+  0x7a58, 0xda60, 0x7a56, 0xda5a, 0x7a54, 0xda54, 0x7a52, 0xda4e,
+  0x7a50, 0xda48, 0x7a4f, 0xda42, 0x7a4d, 0xda3c, 0x7a4b, 0xda36,
+  0x7a49, 0xda30, 0x7a47, 0xda2a, 0x7a45, 0xda24, 0x7a43, 0xda1e,
+  0x7a42, 0xda18, 0x7a40, 0xda12, 0x7a3e, 0xda0c, 0x7a3c, 0xda06,
+  0x7a3a, 0xda00, 0x7a38, 0xd9fa, 0x7a36, 0xd9f4, 0x7a35, 0xd9ee,
+  0x7a33, 0xd9e8, 0x7a31, 0xd9e2, 0x7a2f, 0xd9dc, 0x7a2d, 0xd9d6,
+  0x7a2b, 0xd9d0, 0x7a29, 0xd9ca, 0x7a27, 0xd9c4, 0x7a26, 0xd9be,
+  0x7a24, 0xd9b8, 0x7a22, 0xd9b2, 0x7a20, 0xd9ac, 0x7a1e, 0xd9a6,
+  0x7a1c, 0xd9a0, 0x7a1a, 0xd99a, 0x7a18, 0xd994, 0x7a16, 0xd98e,
+  0x7a15, 0xd988, 0x7a13, 0xd982, 0x7a11, 0xd97c, 0x7a0f, 0xd976,
+  0x7a0d, 0xd970, 0x7a0b, 0xd96a, 0x7a09, 0xd964, 0x7a07, 0xd95e,
+  0x7a05, 0xd958, 0x7a04, 0xd952, 0x7a02, 0xd94c, 0x7a00, 0xd946,
+  0x79fe, 0xd940, 0x79fc, 0xd93a, 0x79fa, 0xd934, 0x79f8, 0xd92e,
+  0x79f6, 0xd928, 0x79f4, 0xd922, 0x79f2, 0xd91c, 0x79f0, 0xd917,
+  0x79ef, 0xd911, 0x79ed, 0xd90b, 0x79eb, 0xd905, 0x79e9, 0xd8ff,
+  0x79e7, 0xd8f9, 0x79e5, 0xd8f3, 0x79e3, 0xd8ed, 0x79e1, 0xd8e7,
+  0x79df, 0xd8e1, 0x79dd, 0xd8db, 0x79db, 0xd8d5, 0x79d9, 0xd8cf,
+  0x79d8, 0xd8c9, 0x79d6, 0xd8c3, 0x79d4, 0xd8bd, 0x79d2, 0xd8b7,
+  0x79d0, 0xd8b1, 0x79ce, 0xd8ab, 0x79cc, 0xd8a5, 0x79ca, 0xd89f,
+  0x79c8, 0xd899, 0x79c6, 0xd893, 0x79c4, 0xd88d, 0x79c2, 0xd887,
+  0x79c0, 0xd881, 0x79be, 0xd87b, 0x79bc, 0xd875, 0x79bb, 0xd86f,
+  0x79b9, 0xd869, 0x79b7, 0xd863, 0x79b5, 0xd85d, 0x79b3, 0xd857,
+  0x79b1, 0xd851, 0x79af, 0xd84b, 0x79ad, 0xd845, 0x79ab, 0xd83f,
+  0x79a9, 0xd839, 0x79a7, 0xd833, 0x79a5, 0xd82d, 0x79a3, 0xd827,
+  0x79a1, 0xd821, 0x799f, 0xd81b, 0x799d, 0xd815, 0x799b, 0xd80f,
+  0x7999, 0xd80a, 0x7997, 0xd804, 0x7995, 0xd7fe, 0x7993, 0xd7f8,
+  0x7992, 0xd7f2, 0x7990, 0xd7ec, 0x798e, 0xd7e6, 0x798c, 0xd7e0,
+  0x798a, 0xd7da, 0x7988, 0xd7d4, 0x7986, 0xd7ce, 0x7984, 0xd7c8,
+  0x7982, 0xd7c2, 0x7980, 0xd7bc, 0x797e, 0xd7b6, 0x797c, 0xd7b0,
+  0x797a, 0xd7aa, 0x7978, 0xd7a4, 0x7976, 0xd79e, 0x7974, 0xd798,
+  0x7972, 0xd792, 0x7970, 0xd78c, 0x796e, 0xd786, 0x796c, 0xd780,
+  0x796a, 0xd77a, 0x7968, 0xd774, 0x7966, 0xd76e, 0x7964, 0xd768,
+  0x7962, 0xd763, 0x7960, 0xd75d, 0x795e, 0xd757, 0x795c, 0xd751,
+  0x795a, 0xd74b, 0x7958, 0xd745, 0x7956, 0xd73f, 0x7954, 0xd739,
+  0x7952, 0xd733, 0x7950, 0xd72d, 0x794e, 0xd727, 0x794c, 0xd721,
+  0x794a, 0xd71b, 0x7948, 0xd715, 0x7946, 0xd70f, 0x7944, 0xd709,
+  0x7942, 0xd703, 0x7940, 0xd6fd, 0x793e, 0xd6f7, 0x793c, 0xd6f1,
+  0x793a, 0xd6eb, 0x7938, 0xd6e5, 0x7936, 0xd6e0, 0x7934, 0xd6da,
+  0x7932, 0xd6d4, 0x7930, 0xd6ce, 0x792e, 0xd6c8, 0x792c, 0xd6c2,
+  0x792a, 0xd6bc, 0x7928, 0xd6b6, 0x7926, 0xd6b0, 0x7924, 0xd6aa,
+  0x7922, 0xd6a4, 0x7920, 0xd69e, 0x791e, 0xd698, 0x791c, 0xd692,
+  0x7919, 0xd68c, 0x7917, 0xd686, 0x7915, 0xd680, 0x7913, 0xd67a,
+  0x7911, 0xd675, 0x790f, 0xd66f, 0x790d, 0xd669, 0x790b, 0xd663,
+  0x7909, 0xd65d, 0x7907, 0xd657, 0x7905, 0xd651, 0x7903, 0xd64b,
+  0x7901, 0xd645, 0x78ff, 0xd63f, 0x78fd, 0xd639, 0x78fb, 0xd633,
+  0x78f9, 0xd62d, 0x78f7, 0xd627, 0x78f5, 0xd621, 0x78f3, 0xd61b,
+  0x78f1, 0xd615, 0x78ee, 0xd610, 0x78ec, 0xd60a, 0x78ea, 0xd604,
+  0x78e8, 0xd5fe, 0x78e6, 0xd5f8, 0x78e4, 0xd5f2, 0x78e2, 0xd5ec,
+  0x78e0, 0xd5e6, 0x78de, 0xd5e0, 0x78dc, 0xd5da, 0x78da, 0xd5d4,
+  0x78d8, 0xd5ce, 0x78d6, 0xd5c8, 0x78d4, 0xd5c2, 0x78d2, 0xd5bc,
+  0x78cf, 0xd5b7, 0x78cd, 0xd5b1, 0x78cb, 0xd5ab, 0x78c9, 0xd5a5,
+  0x78c7, 0xd59f, 0x78c5, 0xd599, 0x78c3, 0xd593, 0x78c1, 0xd58d,
+  0x78bf, 0xd587, 0x78bd, 0xd581, 0x78bb, 0xd57b, 0x78b9, 0xd575,
+  0x78b6, 0xd56f, 0x78b4, 0xd569, 0x78b2, 0xd564, 0x78b0, 0xd55e,
+  0x78ae, 0xd558, 0x78ac, 0xd552, 0x78aa, 0xd54c, 0x78a8, 0xd546,
+  0x78a6, 0xd540, 0x78a4, 0xd53a, 0x78a2, 0xd534, 0x789f, 0xd52e,
+  0x789d, 0xd528, 0x789b, 0xd522, 0x7899, 0xd51c, 0x7897, 0xd517,
+  0x7895, 0xd511, 0x7893, 0xd50b, 0x7891, 0xd505, 0x788f, 0xd4ff,
+  0x788c, 0xd4f9, 0x788a, 0xd4f3, 0x7888, 0xd4ed, 0x7886, 0xd4e7,
+  0x7884, 0xd4e1, 0x7882, 0xd4db, 0x7880, 0xd4d5, 0x787e, 0xd4d0,
+  0x787c, 0xd4ca, 0x7879, 0xd4c4, 0x7877, 0xd4be, 0x7875, 0xd4b8,
+  0x7873, 0xd4b2, 0x7871, 0xd4ac, 0x786f, 0xd4a6, 0x786d, 0xd4a0,
+  0x786b, 0xd49a, 0x7868, 0xd494, 0x7866, 0xd48f, 0x7864, 0xd489,
+  0x7862, 0xd483, 0x7860, 0xd47d, 0x785e, 0xd477, 0x785c, 0xd471,
+  0x7859, 0xd46b, 0x7857, 0xd465, 0x7855, 0xd45f, 0x7853, 0xd459,
+  0x7851, 0xd453, 0x784f, 0xd44e, 0x784d, 0xd448, 0x784a, 0xd442,
+  0x7848, 0xd43c, 0x7846, 0xd436, 0x7844, 0xd430, 0x7842, 0xd42a,
+  0x7840, 0xd424, 0x783e, 0xd41e, 0x783b, 0xd418, 0x7839, 0xd412,
+  0x7837, 0xd40d, 0x7835, 0xd407, 0x7833, 0xd401, 0x7831, 0xd3fb,
+  0x782e, 0xd3f5, 0x782c, 0xd3ef, 0x782a, 0xd3e9, 0x7828, 0xd3e3,
+  0x7826, 0xd3dd, 0x7824, 0xd3d7, 0x7821, 0xd3d2, 0x781f, 0xd3cc,
+  0x781d, 0xd3c6, 0x781b, 0xd3c0, 0x7819, 0xd3ba, 0x7817, 0xd3b4,
+  0x7814, 0xd3ae, 0x7812, 0xd3a8, 0x7810, 0xd3a2, 0x780e, 0xd39d,
+  0x780c, 0xd397, 0x780a, 0xd391, 0x7807, 0xd38b, 0x7805, 0xd385,
+  0x7803, 0xd37f, 0x7801, 0xd379, 0x77ff, 0xd373, 0x77fc, 0xd36d,
+  0x77fa, 0xd368, 0x77f8, 0xd362, 0x77f6, 0xd35c, 0x77f4, 0xd356,
+  0x77f1, 0xd350, 0x77ef, 0xd34a, 0x77ed, 0xd344, 0x77eb, 0xd33e,
+  0x77e9, 0xd338, 0x77e6, 0xd333, 0x77e4, 0xd32d, 0x77e2, 0xd327,
+  0x77e0, 0xd321, 0x77de, 0xd31b, 0x77db, 0xd315, 0x77d9, 0xd30f,
+  0x77d7, 0xd309, 0x77d5, 0xd303, 0x77d3, 0xd2fe, 0x77d0, 0xd2f8,
+  0x77ce, 0xd2f2, 0x77cc, 0xd2ec, 0x77ca, 0xd2e6, 0x77c8, 0xd2e0,
+  0x77c5, 0xd2da, 0x77c3, 0xd2d4, 0x77c1, 0xd2cf, 0x77bf, 0xd2c9,
+  0x77bc, 0xd2c3, 0x77ba, 0xd2bd, 0x77b8, 0xd2b7, 0x77b6, 0xd2b1,
+  0x77b4, 0xd2ab, 0x77b1, 0xd2a5, 0x77af, 0xd2a0, 0x77ad, 0xd29a,
+  0x77ab, 0xd294, 0x77a8, 0xd28e, 0x77a6, 0xd288, 0x77a4, 0xd282,
+  0x77a2, 0xd27c, 0x77a0, 0xd276, 0x779d, 0xd271, 0x779b, 0xd26b,
+  0x7799, 0xd265, 0x7797, 0xd25f, 0x7794, 0xd259, 0x7792, 0xd253,
+  0x7790, 0xd24d, 0x778e, 0xd247, 0x778b, 0xd242, 0x7789, 0xd23c,
+  0x7787, 0xd236, 0x7785, 0xd230, 0x7782, 0xd22a, 0x7780, 0xd224,
+  0x777e, 0xd21e, 0x777c, 0xd219, 0x7779, 0xd213, 0x7777, 0xd20d,
+  0x7775, 0xd207, 0x7773, 0xd201, 0x7770, 0xd1fb, 0x776e, 0xd1f5,
+  0x776c, 0xd1ef, 0x776a, 0xd1ea, 0x7767, 0xd1e4, 0x7765, 0xd1de,
+  0x7763, 0xd1d8, 0x7760, 0xd1d2, 0x775e, 0xd1cc, 0x775c, 0xd1c6,
+  0x775a, 0xd1c1, 0x7757, 0xd1bb, 0x7755, 0xd1b5, 0x7753, 0xd1af,
+  0x7751, 0xd1a9, 0x774e, 0xd1a3, 0x774c, 0xd19d, 0x774a, 0xd198,
+  0x7747, 0xd192, 0x7745, 0xd18c, 0x7743, 0xd186, 0x7741, 0xd180,
+  0x773e, 0xd17a, 0x773c, 0xd174, 0x773a, 0xd16f, 0x7738, 0xd169,
+  0x7735, 0xd163, 0x7733, 0xd15d, 0x7731, 0xd157, 0x772e, 0xd151,
+  0x772c, 0xd14b, 0x772a, 0xd146, 0x7727, 0xd140, 0x7725, 0xd13a,
+  0x7723, 0xd134, 0x7721, 0xd12e, 0x771e, 0xd128, 0x771c, 0xd123,
+  0x771a, 0xd11d, 0x7717, 0xd117, 0x7715, 0xd111, 0x7713, 0xd10b,
+  0x7710, 0xd105, 0x770e, 0xd0ff, 0x770c, 0xd0fa, 0x770a, 0xd0f4,
+  0x7707, 0xd0ee, 0x7705, 0xd0e8, 0x7703, 0xd0e2, 0x7700, 0xd0dc,
+  0x76fe, 0xd0d7, 0x76fc, 0xd0d1, 0x76f9, 0xd0cb, 0x76f7, 0xd0c5,
+  0x76f5, 0xd0bf, 0x76f2, 0xd0b9, 0x76f0, 0xd0b4, 0x76ee, 0xd0ae,
+  0x76eb, 0xd0a8, 0x76e9, 0xd0a2, 0x76e7, 0xd09c, 0x76e4, 0xd096,
+  0x76e2, 0xd091, 0x76e0, 0xd08b, 0x76dd, 0xd085, 0x76db, 0xd07f,
+  0x76d9, 0xd079, 0x76d6, 0xd073, 0x76d4, 0xd06e, 0x76d2, 0xd068,
+  0x76cf, 0xd062, 0x76cd, 0xd05c, 0x76cb, 0xd056, 0x76c8, 0xd050,
+  0x76c6, 0xd04b, 0x76c4, 0xd045, 0x76c1, 0xd03f, 0x76bf, 0xd039,
+  0x76bd, 0xd033, 0x76ba, 0xd02d, 0x76b8, 0xd028, 0x76b6, 0xd022,
+  0x76b3, 0xd01c, 0x76b1, 0xd016, 0x76af, 0xd010, 0x76ac, 0xd00a,
+  0x76aa, 0xd005, 0x76a8, 0xcfff, 0x76a5, 0xcff9, 0x76a3, 0xcff3,
+  0x76a0, 0xcfed, 0x769e, 0xcfe7, 0x769c, 0xcfe2, 0x7699, 0xcfdc,
+  0x7697, 0xcfd6, 0x7695, 0xcfd0, 0x7692, 0xcfca, 0x7690, 0xcfc5,
+  0x768e, 0xcfbf, 0x768b, 0xcfb9, 0x7689, 0xcfb3, 0x7686, 0xcfad,
+  0x7684, 0xcfa7, 0x7682, 0xcfa2, 0x767f, 0xcf9c, 0x767d, 0xcf96,
+  0x767b, 0xcf90, 0x7678, 0xcf8a, 0x7676, 0xcf85, 0x7673, 0xcf7f,
+  0x7671, 0xcf79, 0x766f, 0xcf73, 0x766c, 0xcf6d, 0x766a, 0xcf67,
+  0x7668, 0xcf62, 0x7665, 0xcf5c, 0x7663, 0xcf56, 0x7660, 0xcf50,
+  0x765e, 0xcf4a, 0x765c, 0xcf45, 0x7659, 0xcf3f, 0x7657, 0xcf39,
+  0x7654, 0xcf33, 0x7652, 0xcf2d, 0x7650, 0xcf28, 0x764d, 0xcf22,
+  0x764b, 0xcf1c, 0x7648, 0xcf16, 0x7646, 0xcf10, 0x7644, 0xcf0b,
+  0x7641, 0xcf05, 0x763f, 0xceff, 0x763c, 0xcef9, 0x763a, 0xcef3,
+  0x7638, 0xceee, 0x7635, 0xcee8, 0x7633, 0xcee2, 0x7630, 0xcedc,
+  0x762e, 0xced6, 0x762b, 0xced1, 0x7629, 0xcecb, 0x7627, 0xcec5,
+  0x7624, 0xcebf, 0x7622, 0xceb9, 0x761f, 0xceb4, 0x761d, 0xceae,
+  0x761b, 0xcea8, 0x7618, 0xcea2, 0x7616, 0xce9c, 0x7613, 0xce97,
+  0x7611, 0xce91, 0x760e, 0xce8b, 0x760c, 0xce85, 0x760a, 0xce7f,
+  0x7607, 0xce7a, 0x7605, 0xce74, 0x7602, 0xce6e, 0x7600, 0xce68,
+  0x75fd, 0xce62, 0x75fb, 0xce5d, 0x75f9, 0xce57, 0x75f6, 0xce51,
+  0x75f4, 0xce4b, 0x75f1, 0xce45, 0x75ef, 0xce40, 0x75ec, 0xce3a,
+  0x75ea, 0xce34, 0x75e7, 0xce2e, 0x75e5, 0xce28, 0x75e3, 0xce23,
+  0x75e0, 0xce1d, 0x75de, 0xce17, 0x75db, 0xce11, 0x75d9, 0xce0c,
+  0x75d6, 0xce06, 0x75d4, 0xce00, 0x75d1, 0xcdfa, 0x75cf, 0xcdf4,
+  0x75cc, 0xcdef, 0x75ca, 0xcde9, 0x75c8, 0xcde3, 0x75c5, 0xcddd,
+  0x75c3, 0xcdd8, 0x75c0, 0xcdd2, 0x75be, 0xcdcc, 0x75bb, 0xcdc6,
+  0x75b9, 0xcdc0, 0x75b6, 0xcdbb, 0x75b4, 0xcdb5, 0x75b1, 0xcdaf,
+  0x75af, 0xcda9, 0x75ac, 0xcda3, 0x75aa, 0xcd9e, 0x75a7, 0xcd98,
+  0x75a5, 0xcd92, 0x75a3, 0xcd8c, 0x75a0, 0xcd87, 0x759e, 0xcd81,
+  0x759b, 0xcd7b, 0x7599, 0xcd75, 0x7596, 0xcd70, 0x7594, 0xcd6a,
+  0x7591, 0xcd64, 0x758f, 0xcd5e, 0x758c, 0xcd58, 0x758a, 0xcd53,
+  0x7587, 0xcd4d, 0x7585, 0xcd47, 0x7582, 0xcd41, 0x7580, 0xcd3c,
+  0x757d, 0xcd36, 0x757b, 0xcd30, 0x7578, 0xcd2a, 0x7576, 0xcd25,
+  0x7573, 0xcd1f, 0x7571, 0xcd19, 0x756e, 0xcd13, 0x756c, 0xcd0d,
+  0x7569, 0xcd08, 0x7567, 0xcd02, 0x7564, 0xccfc, 0x7562, 0xccf6,
+  0x755f, 0xccf1, 0x755d, 0xcceb, 0x755a, 0xcce5, 0x7558, 0xccdf,
+  0x7555, 0xccda, 0x7553, 0xccd4, 0x7550, 0xccce, 0x754e, 0xccc8,
+  0x754b, 0xccc3, 0x7549, 0xccbd, 0x7546, 0xccb7, 0x7544, 0xccb1,
+  0x7541, 0xccac, 0x753f, 0xcca6, 0x753c, 0xcca0, 0x753a, 0xcc9a,
+  0x7537, 0xcc95, 0x7535, 0xcc8f, 0x7532, 0xcc89, 0x752f, 0xcc83,
+  0x752d, 0xcc7e, 0x752a, 0xcc78, 0x7528, 0xcc72, 0x7525, 0xcc6c,
+  0x7523, 0xcc67, 0x7520, 0xcc61, 0x751e, 0xcc5b, 0x751b, 0xcc55,
+  0x7519, 0xcc50, 0x7516, 0xcc4a, 0x7514, 0xcc44, 0x7511, 0xcc3e,
+  0x750f, 0xcc39, 0x750c, 0xcc33, 0x7509, 0xcc2d, 0x7507, 0xcc27,
+  0x7504, 0xcc22, 0x7502, 0xcc1c, 0x74ff, 0xcc16, 0x74fd, 0xcc10,
+  0x74fa, 0xcc0b, 0x74f8, 0xcc05, 0x74f5, 0xcbff, 0x74f2, 0xcbf9,
+  0x74f0, 0xcbf4, 0x74ed, 0xcbee, 0x74eb, 0xcbe8, 0x74e8, 0xcbe2,
+  0x74e6, 0xcbdd, 0x74e3, 0xcbd7, 0x74e1, 0xcbd1, 0x74de, 0xcbcb,
+  0x74db, 0xcbc6, 0x74d9, 0xcbc0, 0x74d6, 0xcbba, 0x74d4, 0xcbb5,
+  0x74d1, 0xcbaf, 0x74cf, 0xcba9, 0x74cc, 0xcba3, 0x74c9, 0xcb9e,
+  0x74c7, 0xcb98, 0x74c4, 0xcb92, 0x74c2, 0xcb8c, 0x74bf, 0xcb87,
+  0x74bd, 0xcb81, 0x74ba, 0xcb7b, 0x74b7, 0xcb75, 0x74b5, 0xcb70,
+  0x74b2, 0xcb6a, 0x74b0, 0xcb64, 0x74ad, 0xcb5f, 0x74ab, 0xcb59,
+  0x74a8, 0xcb53, 0x74a5, 0xcb4d, 0x74a3, 0xcb48, 0x74a0, 0xcb42,
+  0x749e, 0xcb3c, 0x749b, 0xcb36, 0x7498, 0xcb31, 0x7496, 0xcb2b,
+  0x7493, 0xcb25, 0x7491, 0xcb20, 0x748e, 0xcb1a, 0x748b, 0xcb14,
+  0x7489, 0xcb0e, 0x7486, 0xcb09, 0x7484, 0xcb03, 0x7481, 0xcafd,
+  0x747e, 0xcaf8, 0x747c, 0xcaf2, 0x7479, 0xcaec, 0x7477, 0xcae6,
+  0x7474, 0xcae1, 0x7471, 0xcadb, 0x746f, 0xcad5, 0x746c, 0xcad0,
+  0x746a, 0xcaca, 0x7467, 0xcac4, 0x7464, 0xcabe, 0x7462, 0xcab9,
+  0x745f, 0xcab3, 0x745c, 0xcaad, 0x745a, 0xcaa8, 0x7457, 0xcaa2,
+  0x7455, 0xca9c, 0x7452, 0xca96, 0x744f, 0xca91, 0x744d, 0xca8b,
+  0x744a, 0xca85, 0x7448, 0xca80, 0x7445, 0xca7a, 0x7442, 0xca74,
+  0x7440, 0xca6e, 0x743d, 0xca69, 0x743a, 0xca63, 0x7438, 0xca5d,
+  0x7435, 0xca58, 0x7432, 0xca52, 0x7430, 0xca4c, 0x742d, 0xca46,
+  0x742b, 0xca41, 0x7428, 0xca3b, 0x7425, 0xca35, 0x7423, 0xca30,
+  0x7420, 0xca2a, 0x741d, 0xca24, 0x741b, 0xca1f, 0x7418, 0xca19,
+  0x7415, 0xca13, 0x7413, 0xca0d, 0x7410, 0xca08, 0x740d, 0xca02,
+  0x740b, 0xc9fc, 0x7408, 0xc9f7, 0x7406, 0xc9f1, 0x7403, 0xc9eb,
+  0x7400, 0xc9e6, 0x73fe, 0xc9e0, 0x73fb, 0xc9da, 0x73f8, 0xc9d5,
+  0x73f6, 0xc9cf, 0x73f3, 0xc9c9, 0x73f0, 0xc9c3, 0x73ee, 0xc9be,
+  0x73eb, 0xc9b8, 0x73e8, 0xc9b2, 0x73e6, 0xc9ad, 0x73e3, 0xc9a7,
+  0x73e0, 0xc9a1, 0x73de, 0xc99c, 0x73db, 0xc996, 0x73d8, 0xc990,
+  0x73d6, 0xc98b, 0x73d3, 0xc985, 0x73d0, 0xc97f, 0x73ce, 0xc97a,
+  0x73cb, 0xc974, 0x73c8, 0xc96e, 0x73c6, 0xc968, 0x73c3, 0xc963,
+  0x73c0, 0xc95d, 0x73bd, 0xc957, 0x73bb, 0xc952, 0x73b8, 0xc94c,
+  0x73b5, 0xc946, 0x73b3, 0xc941, 0x73b0, 0xc93b, 0x73ad, 0xc935,
+  0x73ab, 0xc930, 0x73a8, 0xc92a, 0x73a5, 0xc924, 0x73a3, 0xc91f,
+  0x73a0, 0xc919, 0x739d, 0xc913, 0x739b, 0xc90e, 0x7398, 0xc908,
+  0x7395, 0xc902, 0x7392, 0xc8fd, 0x7390, 0xc8f7, 0x738d, 0xc8f1,
+  0x738a, 0xc8ec, 0x7388, 0xc8e6, 0x7385, 0xc8e0, 0x7382, 0xc8db,
+  0x737f, 0xc8d5, 0x737d, 0xc8cf, 0x737a, 0xc8ca, 0x7377, 0xc8c4,
+  0x7375, 0xc8be, 0x7372, 0xc8b9, 0x736f, 0xc8b3, 0x736c, 0xc8ad,
+  0x736a, 0xc8a8, 0x7367, 0xc8a2, 0x7364, 0xc89c, 0x7362, 0xc897,
+  0x735f, 0xc891, 0x735c, 0xc88b, 0x7359, 0xc886, 0x7357, 0xc880,
+  0x7354, 0xc87a, 0x7351, 0xc875, 0x734f, 0xc86f, 0x734c, 0xc869,
+  0x7349, 0xc864, 0x7346, 0xc85e, 0x7344, 0xc858, 0x7341, 0xc853,
+  0x733e, 0xc84d, 0x733b, 0xc847, 0x7339, 0xc842, 0x7336, 0xc83c,
+  0x7333, 0xc836, 0x7330, 0xc831, 0x732e, 0xc82b, 0x732b, 0xc825,
+  0x7328, 0xc820, 0x7326, 0xc81a, 0x7323, 0xc814, 0x7320, 0xc80f,
+  0x731d, 0xc809, 0x731b, 0xc803, 0x7318, 0xc7fe, 0x7315, 0xc7f8,
+  0x7312, 0xc7f3, 0x7310, 0xc7ed, 0x730d, 0xc7e7, 0x730a, 0xc7e2,
+  0x7307, 0xc7dc, 0x7305, 0xc7d6, 0x7302, 0xc7d1, 0x72ff, 0xc7cb,
+  0x72fc, 0xc7c5, 0x72f9, 0xc7c0, 0x72f7, 0xc7ba, 0x72f4, 0xc7b4,
+  0x72f1, 0xc7af, 0x72ee, 0xc7a9, 0x72ec, 0xc7a3, 0x72e9, 0xc79e,
+  0x72e6, 0xc798, 0x72e3, 0xc793, 0x72e1, 0xc78d, 0x72de, 0xc787,
+  0x72db, 0xc782, 0x72d8, 0xc77c, 0x72d5, 0xc776, 0x72d3, 0xc771,
+  0x72d0, 0xc76b, 0x72cd, 0xc765, 0x72ca, 0xc760, 0x72c8, 0xc75a,
+  0x72c5, 0xc755, 0x72c2, 0xc74f, 0x72bf, 0xc749, 0x72bc, 0xc744,
+  0x72ba, 0xc73e, 0x72b7, 0xc738, 0x72b4, 0xc733, 0x72b1, 0xc72d,
+  0x72af, 0xc728, 0x72ac, 0xc722, 0x72a9, 0xc71c, 0x72a6, 0xc717,
+  0x72a3, 0xc711, 0x72a1, 0xc70b, 0x729e, 0xc706, 0x729b, 0xc700,
+  0x7298, 0xc6fa, 0x7295, 0xc6f5, 0x7293, 0xc6ef, 0x7290, 0xc6ea,
+  0x728d, 0xc6e4, 0x728a, 0xc6de, 0x7287, 0xc6d9, 0x7285, 0xc6d3,
+  0x7282, 0xc6ce, 0x727f, 0xc6c8, 0x727c, 0xc6c2, 0x7279, 0xc6bd,
+  0x7276, 0xc6b7, 0x7274, 0xc6b1, 0x7271, 0xc6ac, 0x726e, 0xc6a6,
+  0x726b, 0xc6a1, 0x7268, 0xc69b, 0x7266, 0xc695, 0x7263, 0xc690,
+  0x7260, 0xc68a, 0x725d, 0xc684, 0x725a, 0xc67f, 0x7257, 0xc679,
+  0x7255, 0xc674, 0x7252, 0xc66e, 0x724f, 0xc668, 0x724c, 0xc663,
+  0x7249, 0xc65d, 0x7247, 0xc658, 0x7244, 0xc652, 0x7241, 0xc64c,
+  0x723e, 0xc647, 0x723b, 0xc641, 0x7238, 0xc63c, 0x7236, 0xc636,
+  0x7233, 0xc630, 0x7230, 0xc62b, 0x722d, 0xc625, 0x722a, 0xc620,
+  0x7227, 0xc61a, 0x7224, 0xc614, 0x7222, 0xc60f, 0x721f, 0xc609,
+  0x721c, 0xc603, 0x7219, 0xc5fe, 0x7216, 0xc5f8, 0x7213, 0xc5f3,
+  0x7211, 0xc5ed, 0x720e, 0xc5e7, 0x720b, 0xc5e2, 0x7208, 0xc5dc,
+  0x7205, 0xc5d7, 0x7202, 0xc5d1, 0x71ff, 0xc5cc, 0x71fd, 0xc5c6,
+  0x71fa, 0xc5c0, 0x71f7, 0xc5bb, 0x71f4, 0xc5b5, 0x71f1, 0xc5b0,
+  0x71ee, 0xc5aa, 0x71eb, 0xc5a4, 0x71e9, 0xc59f, 0x71e6, 0xc599,
+  0x71e3, 0xc594, 0x71e0, 0xc58e, 0x71dd, 0xc588, 0x71da, 0xc583,
+  0x71d7, 0xc57d, 0x71d4, 0xc578, 0x71d2, 0xc572, 0x71cf, 0xc56c,
+  0x71cc, 0xc567, 0x71c9, 0xc561, 0x71c6, 0xc55c, 0x71c3, 0xc556,
+  0x71c0, 0xc551, 0x71bd, 0xc54b, 0x71bb, 0xc545, 0x71b8, 0xc540,
+  0x71b5, 0xc53a, 0x71b2, 0xc535, 0x71af, 0xc52f, 0x71ac, 0xc529,
+  0x71a9, 0xc524, 0x71a6, 0xc51e, 0x71a3, 0xc519, 0x71a1, 0xc513,
+  0x719e, 0xc50e, 0x719b, 0xc508, 0x7198, 0xc502, 0x7195, 0xc4fd,
+  0x7192, 0xc4f7, 0x718f, 0xc4f2, 0x718c, 0xc4ec, 0x7189, 0xc4e7,
+  0x7186, 0xc4e1, 0x7184, 0xc4db, 0x7181, 0xc4d6, 0x717e, 0xc4d0,
+  0x717b, 0xc4cb, 0x7178, 0xc4c5, 0x7175, 0xc4c0, 0x7172, 0xc4ba,
+  0x716f, 0xc4b4, 0x716c, 0xc4af, 0x7169, 0xc4a9, 0x7167, 0xc4a4,
+  0x7164, 0xc49e, 0x7161, 0xc499, 0x715e, 0xc493, 0x715b, 0xc48d,
+  0x7158, 0xc488, 0x7155, 0xc482, 0x7152, 0xc47d, 0x714f, 0xc477,
+  0x714c, 0xc472, 0x7149, 0xc46c, 0x7146, 0xc467, 0x7143, 0xc461,
+  0x7141, 0xc45b, 0x713e, 0xc456, 0x713b, 0xc450, 0x7138, 0xc44b,
+  0x7135, 0xc445, 0x7132, 0xc440, 0x712f, 0xc43a, 0x712c, 0xc434,
+  0x7129, 0xc42f, 0x7126, 0xc429, 0x7123, 0xc424, 0x7120, 0xc41e,
+  0x711d, 0xc419, 0x711a, 0xc413, 0x7117, 0xc40e, 0x7114, 0xc408,
+  0x7112, 0xc403, 0x710f, 0xc3fd, 0x710c, 0xc3f7, 0x7109, 0xc3f2,
+  0x7106, 0xc3ec, 0x7103, 0xc3e7, 0x7100, 0xc3e1, 0x70fd, 0xc3dc,
+  0x70fa, 0xc3d6, 0x70f7, 0xc3d1, 0x70f4, 0xc3cb, 0x70f1, 0xc3c5,
+  0x70ee, 0xc3c0, 0x70eb, 0xc3ba, 0x70e8, 0xc3b5, 0x70e5, 0xc3af,
+  0x70e2, 0xc3aa, 0x70df, 0xc3a4, 0x70dc, 0xc39f, 0x70d9, 0xc399,
+  0x70d6, 0xc394, 0x70d3, 0xc38e, 0x70d1, 0xc389, 0x70ce, 0xc383,
+  0x70cb, 0xc37d, 0x70c8, 0xc378, 0x70c5, 0xc372, 0x70c2, 0xc36d,
+  0x70bf, 0xc367, 0x70bc, 0xc362, 0x70b9, 0xc35c, 0x70b6, 0xc357,
+  0x70b3, 0xc351, 0x70b0, 0xc34c, 0x70ad, 0xc346, 0x70aa, 0xc341,
+  0x70a7, 0xc33b, 0x70a4, 0xc336, 0x70a1, 0xc330, 0x709e, 0xc32a,
+  0x709b, 0xc325, 0x7098, 0xc31f, 0x7095, 0xc31a, 0x7092, 0xc314,
+  0x708f, 0xc30f, 0x708c, 0xc309, 0x7089, 0xc304, 0x7086, 0xc2fe,
+  0x7083, 0xc2f9, 0x7080, 0xc2f3, 0x707d, 0xc2ee, 0x707a, 0xc2e8,
+  0x7077, 0xc2e3, 0x7074, 0xc2dd, 0x7071, 0xc2d8, 0x706e, 0xc2d2,
+  0x706b, 0xc2cd, 0x7068, 0xc2c7, 0x7065, 0xc2c2, 0x7062, 0xc2bc,
+  0x705f, 0xc2b7, 0x705c, 0xc2b1, 0x7059, 0xc2ab, 0x7056, 0xc2a6,
+  0x7053, 0xc2a0, 0x7050, 0xc29b, 0x704d, 0xc295, 0x704a, 0xc290,
+  0x7047, 0xc28a, 0x7044, 0xc285, 0x7041, 0xc27f, 0x703e, 0xc27a,
+  0x703b, 0xc274, 0x7038, 0xc26f, 0x7035, 0xc269, 0x7032, 0xc264,
+  0x702f, 0xc25e, 0x702c, 0xc259, 0x7029, 0xc253, 0x7026, 0xc24e,
+  0x7023, 0xc248, 0x7020, 0xc243, 0x701d, 0xc23d, 0x7019, 0xc238,
+  0x7016, 0xc232, 0x7013, 0xc22d, 0x7010, 0xc227, 0x700d, 0xc222,
+  0x700a, 0xc21c, 0x7007, 0xc217, 0x7004, 0xc211, 0x7001, 0xc20c,
+  0x6ffe, 0xc206, 0x6ffb, 0xc201, 0x6ff8, 0xc1fb, 0x6ff5, 0xc1f6,
+  0x6ff2, 0xc1f0, 0x6fef, 0xc1eb, 0x6fec, 0xc1e5, 0x6fe9, 0xc1e0,
+  0x6fe6, 0xc1da, 0x6fe3, 0xc1d5, 0x6fe0, 0xc1cf, 0x6fdd, 0xc1ca,
+  0x6fda, 0xc1c4, 0x6fd6, 0xc1bf, 0x6fd3, 0xc1b9, 0x6fd0, 0xc1b4,
+  0x6fcd, 0xc1ae, 0x6fca, 0xc1a9, 0x6fc7, 0xc1a3, 0x6fc4, 0xc19e,
+  0x6fc1, 0xc198, 0x6fbe, 0xc193, 0x6fbb, 0xc18d, 0x6fb8, 0xc188,
+  0x6fb5, 0xc183, 0x6fb2, 0xc17d, 0x6faf, 0xc178, 0x6fac, 0xc172,
+  0x6fa9, 0xc16d, 0x6fa5, 0xc167, 0x6fa2, 0xc162, 0x6f9f, 0xc15c,
+  0x6f9c, 0xc157, 0x6f99, 0xc151, 0x6f96, 0xc14c, 0x6f93, 0xc146,
+  0x6f90, 0xc141, 0x6f8d, 0xc13b, 0x6f8a, 0xc136, 0x6f87, 0xc130,
+  0x6f84, 0xc12b, 0x6f81, 0xc125, 0x6f7d, 0xc120, 0x6f7a, 0xc11a,
+  0x6f77, 0xc115, 0x6f74, 0xc10f, 0x6f71, 0xc10a, 0x6f6e, 0xc105,
+  0x6f6b, 0xc0ff, 0x6f68, 0xc0fa, 0x6f65, 0xc0f4, 0x6f62, 0xc0ef,
+  0x6f5f, 0xc0e9, 0x6f5b, 0xc0e4, 0x6f58, 0xc0de, 0x6f55, 0xc0d9,
+  0x6f52, 0xc0d3, 0x6f4f, 0xc0ce, 0x6f4c, 0xc0c8, 0x6f49, 0xc0c3,
+  0x6f46, 0xc0bd, 0x6f43, 0xc0b8, 0x6f3f, 0xc0b3, 0x6f3c, 0xc0ad,
+  0x6f39, 0xc0a8, 0x6f36, 0xc0a2, 0x6f33, 0xc09d, 0x6f30, 0xc097,
+  0x6f2d, 0xc092, 0x6f2a, 0xc08c, 0x6f27, 0xc087, 0x6f23, 0xc081,
+  0x6f20, 0xc07c, 0x6f1d, 0xc077, 0x6f1a, 0xc071, 0x6f17, 0xc06c,
+  0x6f14, 0xc066, 0x6f11, 0xc061, 0x6f0e, 0xc05b, 0x6f0b, 0xc056,
+  0x6f07, 0xc050, 0x6f04, 0xc04b, 0x6f01, 0xc045, 0x6efe, 0xc040,
+  0x6efb, 0xc03b, 0x6ef8, 0xc035, 0x6ef5, 0xc030, 0x6ef1, 0xc02a,
+  0x6eee, 0xc025, 0x6eeb, 0xc01f, 0x6ee8, 0xc01a, 0x6ee5, 0xc014,
+  0x6ee2, 0xc00f, 0x6edf, 0xc00a, 0x6edc, 0xc004, 0x6ed8, 0xbfff,
+  0x6ed5, 0xbff9, 0x6ed2, 0xbff4, 0x6ecf, 0xbfee, 0x6ecc, 0xbfe9,
+  0x6ec9, 0xbfe3, 0x6ec6, 0xbfde, 0x6ec2, 0xbfd9, 0x6ebf, 0xbfd3,
+  0x6ebc, 0xbfce, 0x6eb9, 0xbfc8, 0x6eb6, 0xbfc3, 0x6eb3, 0xbfbd,
+  0x6eaf, 0xbfb8, 0x6eac, 0xbfb3, 0x6ea9, 0xbfad, 0x6ea6, 0xbfa8,
+  0x6ea3, 0xbfa2, 0x6ea0, 0xbf9d, 0x6e9c, 0xbf97, 0x6e99, 0xbf92,
+  0x6e96, 0xbf8d, 0x6e93, 0xbf87, 0x6e90, 0xbf82, 0x6e8d, 0xbf7c,
+  0x6e89, 0xbf77, 0x6e86, 0xbf71, 0x6e83, 0xbf6c, 0x6e80, 0xbf67,
+  0x6e7d, 0xbf61, 0x6e7a, 0xbf5c, 0x6e76, 0xbf56, 0x6e73, 0xbf51,
+  0x6e70, 0xbf4b, 0x6e6d, 0xbf46, 0x6e6a, 0xbf41, 0x6e67, 0xbf3b,
+  0x6e63, 0xbf36, 0x6e60, 0xbf30, 0x6e5d, 0xbf2b, 0x6e5a, 0xbf26,
+  0x6e57, 0xbf20, 0x6e53, 0xbf1b, 0x6e50, 0xbf15, 0x6e4d, 0xbf10,
+  0x6e4a, 0xbf0a, 0x6e47, 0xbf05, 0x6e44, 0xbf00, 0x6e40, 0xbefa,
+  0x6e3d, 0xbef5, 0x6e3a, 0xbeef, 0x6e37, 0xbeea, 0x6e34, 0xbee5,
+  0x6e30, 0xbedf, 0x6e2d, 0xbeda, 0x6e2a, 0xbed4, 0x6e27, 0xbecf,
+  0x6e24, 0xbeca, 0x6e20, 0xbec4, 0x6e1d, 0xbebf, 0x6e1a, 0xbeb9,
+  0x6e17, 0xbeb4, 0x6e14, 0xbeae, 0x6e10, 0xbea9, 0x6e0d, 0xbea4,
+  0x6e0a, 0xbe9e, 0x6e07, 0xbe99, 0x6e04, 0xbe93, 0x6e00, 0xbe8e,
+  0x6dfd, 0xbe89, 0x6dfa, 0xbe83, 0x6df7, 0xbe7e, 0x6df3, 0xbe78,
+  0x6df0, 0xbe73, 0x6ded, 0xbe6e, 0x6dea, 0xbe68, 0x6de7, 0xbe63,
+  0x6de3, 0xbe5e, 0x6de0, 0xbe58, 0x6ddd, 0xbe53, 0x6dda, 0xbe4d,
+  0x6dd6, 0xbe48, 0x6dd3, 0xbe43, 0x6dd0, 0xbe3d, 0x6dcd, 0xbe38,
+  0x6dca, 0xbe32, 0x6dc6, 0xbe2d, 0x6dc3, 0xbe28, 0x6dc0, 0xbe22,
+  0x6dbd, 0xbe1d, 0x6db9, 0xbe17, 0x6db6, 0xbe12, 0x6db3, 0xbe0d,
+  0x6db0, 0xbe07, 0x6dac, 0xbe02, 0x6da9, 0xbdfd, 0x6da6, 0xbdf7,
+  0x6da3, 0xbdf2, 0x6d9f, 0xbdec, 0x6d9c, 0xbde7, 0x6d99, 0xbde2,
+  0x6d96, 0xbddc, 0x6d92, 0xbdd7, 0x6d8f, 0xbdd1, 0x6d8c, 0xbdcc,
+  0x6d89, 0xbdc7, 0x6d85, 0xbdc1, 0x6d82, 0xbdbc, 0x6d7f, 0xbdb7,
+  0x6d7c, 0xbdb1, 0x6d78, 0xbdac, 0x6d75, 0xbda6, 0x6d72, 0xbda1,
+  0x6d6f, 0xbd9c, 0x6d6b, 0xbd96, 0x6d68, 0xbd91, 0x6d65, 0xbd8c,
+  0x6d62, 0xbd86, 0x6d5e, 0xbd81, 0x6d5b, 0xbd7c, 0x6d58, 0xbd76,
+  0x6d55, 0xbd71, 0x6d51, 0xbd6b, 0x6d4e, 0xbd66, 0x6d4b, 0xbd61,
+  0x6d48, 0xbd5b, 0x6d44, 0xbd56, 0x6d41, 0xbd51, 0x6d3e, 0xbd4b,
+  0x6d3a, 0xbd46, 0x6d37, 0xbd40, 0x6d34, 0xbd3b, 0x6d31, 0xbd36,
+  0x6d2d, 0xbd30, 0x6d2a, 0xbd2b, 0x6d27, 0xbd26, 0x6d23, 0xbd20,
+  0x6d20, 0xbd1b, 0x6d1d, 0xbd16, 0x6d1a, 0xbd10, 0x6d16, 0xbd0b,
+  0x6d13, 0xbd06, 0x6d10, 0xbd00, 0x6d0c, 0xbcfb, 0x6d09, 0xbcf5,
+  0x6d06, 0xbcf0, 0x6d03, 0xbceb, 0x6cff, 0xbce5, 0x6cfc, 0xbce0,
+  0x6cf9, 0xbcdb, 0x6cf5, 0xbcd5, 0x6cf2, 0xbcd0, 0x6cef, 0xbccb,
+  0x6cec, 0xbcc5, 0x6ce8, 0xbcc0, 0x6ce5, 0xbcbb, 0x6ce2, 0xbcb5,
+  0x6cde, 0xbcb0, 0x6cdb, 0xbcab, 0x6cd8, 0xbca5, 0x6cd4, 0xbca0,
+  0x6cd1, 0xbc9b, 0x6cce, 0xbc95, 0x6cca, 0xbc90, 0x6cc7, 0xbc8b,
+  0x6cc4, 0xbc85, 0x6cc1, 0xbc80, 0x6cbd, 0xbc7b, 0x6cba, 0xbc75,
+  0x6cb7, 0xbc70, 0x6cb3, 0xbc6b, 0x6cb0, 0xbc65, 0x6cad, 0xbc60,
+  0x6ca9, 0xbc5b, 0x6ca6, 0xbc55, 0x6ca3, 0xbc50, 0x6c9f, 0xbc4b,
+  0x6c9c, 0xbc45, 0x6c99, 0xbc40, 0x6c95, 0xbc3b, 0x6c92, 0xbc35,
+  0x6c8f, 0xbc30, 0x6c8b, 0xbc2b, 0x6c88, 0xbc25, 0x6c85, 0xbc20,
+  0x6c81, 0xbc1b, 0x6c7e, 0xbc15, 0x6c7b, 0xbc10, 0x6c77, 0xbc0b,
+  0x6c74, 0xbc05, 0x6c71, 0xbc00, 0x6c6d, 0xbbfb, 0x6c6a, 0xbbf5,
+  0x6c67, 0xbbf0, 0x6c63, 0xbbeb, 0x6c60, 0xbbe5, 0x6c5d, 0xbbe0,
+  0x6c59, 0xbbdb, 0x6c56, 0xbbd5, 0x6c53, 0xbbd0, 0x6c4f, 0xbbcb,
+  0x6c4c, 0xbbc5, 0x6c49, 0xbbc0, 0x6c45, 0xbbbb, 0x6c42, 0xbbb5,
+  0x6c3f, 0xbbb0, 0x6c3b, 0xbbab, 0x6c38, 0xbba6, 0x6c34, 0xbba0,
+  0x6c31, 0xbb9b, 0x6c2e, 0xbb96, 0x6c2a, 0xbb90, 0x6c27, 0xbb8b,
+  0x6c24, 0xbb86, 0x6c20, 0xbb80, 0x6c1d, 0xbb7b, 0x6c1a, 0xbb76,
+  0x6c16, 0xbb70, 0x6c13, 0xbb6b, 0x6c0f, 0xbb66, 0x6c0c, 0xbb61,
+  0x6c09, 0xbb5b, 0x6c05, 0xbb56, 0x6c02, 0xbb51, 0x6bff, 0xbb4b,
+  0x6bfb, 0xbb46, 0x6bf8, 0xbb41, 0x6bf5, 0xbb3b, 0x6bf1, 0xbb36,
+  0x6bee, 0xbb31, 0x6bea, 0xbb2c, 0x6be7, 0xbb26, 0x6be4, 0xbb21,
+  0x6be0, 0xbb1c, 0x6bdd, 0xbb16, 0x6bd9, 0xbb11, 0x6bd6, 0xbb0c,
+  0x6bd3, 0xbb06, 0x6bcf, 0xbb01, 0x6bcc, 0xbafc, 0x6bc9, 0xbaf7,
+  0x6bc5, 0xbaf1, 0x6bc2, 0xbaec, 0x6bbe, 0xbae7, 0x6bbb, 0xbae1,
+  0x6bb8, 0xbadc, 0x6bb4, 0xbad7, 0x6bb1, 0xbad2, 0x6bad, 0xbacc,
+  0x6baa, 0xbac7, 0x6ba7, 0xbac2, 0x6ba3, 0xbabc, 0x6ba0, 0xbab7,
+  0x6b9c, 0xbab2, 0x6b99, 0xbaad, 0x6b96, 0xbaa7, 0x6b92, 0xbaa2,
+  0x6b8f, 0xba9d, 0x6b8b, 0xba97, 0x6b88, 0xba92, 0x6b85, 0xba8d,
+  0x6b81, 0xba88, 0x6b7e, 0xba82, 0x6b7a, 0xba7d, 0x6b77, 0xba78,
+  0x6b73, 0xba73, 0x6b70, 0xba6d, 0x6b6d, 0xba68, 0x6b69, 0xba63,
+  0x6b66, 0xba5d, 0x6b62, 0xba58, 0x6b5f, 0xba53, 0x6b5c, 0xba4e,
+  0x6b58, 0xba48, 0x6b55, 0xba43, 0x6b51, 0xba3e, 0x6b4e, 0xba39,
+  0x6b4a, 0xba33, 0x6b47, 0xba2e, 0x6b44, 0xba29, 0x6b40, 0xba23,
+  0x6b3d, 0xba1e, 0x6b39, 0xba19, 0x6b36, 0xba14, 0x6b32, 0xba0e,
+  0x6b2f, 0xba09, 0x6b2c, 0xba04, 0x6b28, 0xb9ff, 0x6b25, 0xb9f9,
+  0x6b21, 0xb9f4, 0x6b1e, 0xb9ef, 0x6b1a, 0xb9ea, 0x6b17, 0xb9e4,
+  0x6b13, 0xb9df, 0x6b10, 0xb9da, 0x6b0d, 0xb9d5, 0x6b09, 0xb9cf,
+  0x6b06, 0xb9ca, 0x6b02, 0xb9c5, 0x6aff, 0xb9c0, 0x6afb, 0xb9ba,
+  0x6af8, 0xb9b5, 0x6af4, 0xb9b0, 0x6af1, 0xb9ab, 0x6aee, 0xb9a5,
+  0x6aea, 0xb9a0, 0x6ae7, 0xb99b, 0x6ae3, 0xb996, 0x6ae0, 0xb990,
+  0x6adc, 0xb98b, 0x6ad9, 0xb986, 0x6ad5, 0xb981, 0x6ad2, 0xb97b,
+  0x6ace, 0xb976, 0x6acb, 0xb971, 0x6ac8, 0xb96c, 0x6ac4, 0xb966,
+  0x6ac1, 0xb961, 0x6abd, 0xb95c, 0x6aba, 0xb957, 0x6ab6, 0xb951,
+  0x6ab3, 0xb94c, 0x6aaf, 0xb947, 0x6aac, 0xb942, 0x6aa8, 0xb93c,
+  0x6aa5, 0xb937, 0x6aa1, 0xb932, 0x6a9e, 0xb92d, 0x6a9a, 0xb928,
+  0x6a97, 0xb922, 0x6a93, 0xb91d, 0x6a90, 0xb918, 0x6a8c, 0xb913,
+  0x6a89, 0xb90d, 0x6a86, 0xb908, 0x6a82, 0xb903, 0x6a7f, 0xb8fe,
+  0x6a7b, 0xb8f8, 0x6a78, 0xb8f3, 0x6a74, 0xb8ee, 0x6a71, 0xb8e9,
+  0x6a6d, 0xb8e4, 0x6a6a, 0xb8de, 0x6a66, 0xb8d9, 0x6a63, 0xb8d4,
+  0x6a5f, 0xb8cf, 0x6a5c, 0xb8c9, 0x6a58, 0xb8c4, 0x6a55, 0xb8bf,
+  0x6a51, 0xb8ba, 0x6a4e, 0xb8b5, 0x6a4a, 0xb8af, 0x6a47, 0xb8aa,
+  0x6a43, 0xb8a5, 0x6a40, 0xb8a0, 0x6a3c, 0xb89b, 0x6a39, 0xb895,
+  0x6a35, 0xb890, 0x6a32, 0xb88b, 0x6a2e, 0xb886, 0x6a2b, 0xb880,
+  0x6a27, 0xb87b, 0x6a24, 0xb876, 0x6a20, 0xb871, 0x6a1d, 0xb86c,
+  0x6a19, 0xb866, 0x6a16, 0xb861, 0x6a12, 0xb85c, 0x6a0e, 0xb857,
+  0x6a0b, 0xb852, 0x6a07, 0xb84c, 0x6a04, 0xb847, 0x6a00, 0xb842,
+  0x69fd, 0xb83d, 0x69f9, 0xb838, 0x69f6, 0xb832, 0x69f2, 0xb82d,
+  0x69ef, 0xb828, 0x69eb, 0xb823, 0x69e8, 0xb81e, 0x69e4, 0xb818,
+  0x69e1, 0xb813, 0x69dd, 0xb80e, 0x69da, 0xb809, 0x69d6, 0xb804,
+  0x69d3, 0xb7fe, 0x69cf, 0xb7f9, 0x69cb, 0xb7f4, 0x69c8, 0xb7ef,
+  0x69c4, 0xb7ea, 0x69c1, 0xb7e4, 0x69bd, 0xb7df, 0x69ba, 0xb7da,
+  0x69b6, 0xb7d5, 0x69b3, 0xb7d0, 0x69af, 0xb7ca, 0x69ac, 0xb7c5,
+  0x69a8, 0xb7c0, 0x69a5, 0xb7bb, 0x69a1, 0xb7b6, 0x699d, 0xb7b1,
+  0x699a, 0xb7ab, 0x6996, 0xb7a6, 0x6993, 0xb7a1, 0x698f, 0xb79c,
+  0x698c, 0xb797, 0x6988, 0xb791, 0x6985, 0xb78c, 0x6981, 0xb787,
+  0x697d, 0xb782, 0x697a, 0xb77d, 0x6976, 0xb778, 0x6973, 0xb772,
+  0x696f, 0xb76d, 0x696c, 0xb768, 0x6968, 0xb763, 0x6964, 0xb75e,
+  0x6961, 0xb758, 0x695d, 0xb753, 0x695a, 0xb74e, 0x6956, 0xb749,
+  0x6953, 0xb744, 0x694f, 0xb73f, 0x694b, 0xb739, 0x6948, 0xb734,
+  0x6944, 0xb72f, 0x6941, 0xb72a, 0x693d, 0xb725, 0x693a, 0xb720,
+  0x6936, 0xb71a, 0x6932, 0xb715, 0x692f, 0xb710, 0x692b, 0xb70b,
+  0x6928, 0xb706, 0x6924, 0xb701, 0x6921, 0xb6fb, 0x691d, 0xb6f6,
+  0x6919, 0xb6f1, 0x6916, 0xb6ec, 0x6912, 0xb6e7, 0x690f, 0xb6e2,
+  0x690b, 0xb6dd, 0x6907, 0xb6d7, 0x6904, 0xb6d2, 0x6900, 0xb6cd,
+  0x68fd, 0xb6c8, 0x68f9, 0xb6c3, 0x68f5, 0xb6be, 0x68f2, 0xb6b8,
+  0x68ee, 0xb6b3, 0x68eb, 0xb6ae, 0x68e7, 0xb6a9, 0x68e3, 0xb6a4,
+  0x68e0, 0xb69f, 0x68dc, 0xb69a, 0x68d9, 0xb694, 0x68d5, 0xb68f,
+  0x68d1, 0xb68a, 0x68ce, 0xb685, 0x68ca, 0xb680, 0x68c7, 0xb67b,
+  0x68c3, 0xb676, 0x68bf, 0xb670, 0x68bc, 0xb66b, 0x68b8, 0xb666,
+  0x68b5, 0xb661, 0x68b1, 0xb65c, 0x68ad, 0xb657, 0x68aa, 0xb652,
+  0x68a6, 0xb64c, 0x68a3, 0xb647, 0x689f, 0xb642, 0x689b, 0xb63d,
+  0x6898, 0xb638, 0x6894, 0xb633, 0x6890, 0xb62e, 0x688d, 0xb628,
+  0x6889, 0xb623, 0x6886, 0xb61e, 0x6882, 0xb619, 0x687e, 0xb614,
+  0x687b, 0xb60f, 0x6877, 0xb60a, 0x6873, 0xb605, 0x6870, 0xb5ff,
+  0x686c, 0xb5fa, 0x6868, 0xb5f5, 0x6865, 0xb5f0, 0x6861, 0xb5eb,
+  0x685e, 0xb5e6, 0x685a, 0xb5e1, 0x6856, 0xb5dc, 0x6853, 0xb5d6,
+  0x684f, 0xb5d1, 0x684b, 0xb5cc, 0x6848, 0xb5c7, 0x6844, 0xb5c2,
+  0x6840, 0xb5bd, 0x683d, 0xb5b8, 0x6839, 0xb5b3, 0x6835, 0xb5ae,
+  0x6832, 0xb5a8, 0x682e, 0xb5a3, 0x682b, 0xb59e, 0x6827, 0xb599,
+  0x6823, 0xb594, 0x6820, 0xb58f, 0x681c, 0xb58a, 0x6818, 0xb585,
+  0x6815, 0xb57f, 0x6811, 0xb57a, 0x680d, 0xb575, 0x680a, 0xb570,
+  0x6806, 0xb56b, 0x6802, 0xb566, 0x67ff, 0xb561, 0x67fb, 0xb55c,
+  0x67f7, 0xb557, 0x67f4, 0xb552, 0x67f0, 0xb54c, 0x67ec, 0xb547,
+  0x67e9, 0xb542, 0x67e5, 0xb53d, 0x67e1, 0xb538, 0x67de, 0xb533,
+  0x67da, 0xb52e, 0x67d6, 0xb529, 0x67d3, 0xb524, 0x67cf, 0xb51f,
+  0x67cb, 0xb519, 0x67c8, 0xb514, 0x67c4, 0xb50f, 0x67c0, 0xb50a,
+  0x67bd, 0xb505, 0x67b9, 0xb500, 0x67b5, 0xb4fb, 0x67b2, 0xb4f6,
+  0x67ae, 0xb4f1, 0x67aa, 0xb4ec, 0x67a6, 0xb4e7, 0x67a3, 0xb4e1,
+  0x679f, 0xb4dc, 0x679b, 0xb4d7, 0x6798, 0xb4d2, 0x6794, 0xb4cd,
+  0x6790, 0xb4c8, 0x678d, 0xb4c3, 0x6789, 0xb4be, 0x6785, 0xb4b9,
+  0x6782, 0xb4b4, 0x677e, 0xb4af, 0x677a, 0xb4aa, 0x6776, 0xb4a4,
+  0x6773, 0xb49f, 0x676f, 0xb49a, 0x676b, 0xb495, 0x6768, 0xb490,
+  0x6764, 0xb48b, 0x6760, 0xb486, 0x675d, 0xb481, 0x6759, 0xb47c,
+  0x6755, 0xb477, 0x6751, 0xb472, 0x674e, 0xb46d, 0x674a, 0xb468,
+  0x6746, 0xb462, 0x6743, 0xb45d, 0x673f, 0xb458, 0x673b, 0xb453,
+  0x6737, 0xb44e, 0x6734, 0xb449, 0x6730, 0xb444, 0x672c, 0xb43f,
+  0x6729, 0xb43a, 0x6725, 0xb435, 0x6721, 0xb430, 0x671d, 0xb42b,
+  0x671a, 0xb426, 0x6716, 0xb421, 0x6712, 0xb41c, 0x670e, 0xb417,
+  0x670b, 0xb411, 0x6707, 0xb40c, 0x6703, 0xb407, 0x6700, 0xb402,
+  0x66fc, 0xb3fd, 0x66f8, 0xb3f8, 0x66f4, 0xb3f3, 0x66f1, 0xb3ee,
+  0x66ed, 0xb3e9, 0x66e9, 0xb3e4, 0x66e5, 0xb3df, 0x66e2, 0xb3da,
+  0x66de, 0xb3d5, 0x66da, 0xb3d0, 0x66d6, 0xb3cb, 0x66d3, 0xb3c6,
+  0x66cf, 0xb3c1, 0x66cb, 0xb3bc, 0x66c8, 0xb3b7, 0x66c4, 0xb3b1,
+  0x66c0, 0xb3ac, 0x66bc, 0xb3a7, 0x66b9, 0xb3a2, 0x66b5, 0xb39d,
+  0x66b1, 0xb398, 0x66ad, 0xb393, 0x66aa, 0xb38e, 0x66a6, 0xb389,
+  0x66a2, 0xb384, 0x669e, 0xb37f, 0x669b, 0xb37a, 0x6697, 0xb375,
+  0x6693, 0xb370, 0x668f, 0xb36b, 0x668b, 0xb366, 0x6688, 0xb361,
+  0x6684, 0xb35c, 0x6680, 0xb357, 0x667c, 0xb352, 0x6679, 0xb34d,
+  0x6675, 0xb348, 0x6671, 0xb343, 0x666d, 0xb33e, 0x666a, 0xb339,
+  0x6666, 0xb334, 0x6662, 0xb32f, 0x665e, 0xb32a, 0x665b, 0xb325,
+  0x6657, 0xb31f, 0x6653, 0xb31a, 0x664f, 0xb315, 0x664b, 0xb310,
+  0x6648, 0xb30b, 0x6644, 0xb306, 0x6640, 0xb301, 0x663c, 0xb2fc,
+  0x6639, 0xb2f7, 0x6635, 0xb2f2, 0x6631, 0xb2ed, 0x662d, 0xb2e8,
+  0x6629, 0xb2e3, 0x6626, 0xb2de, 0x6622, 0xb2d9, 0x661e, 0xb2d4,
+  0x661a, 0xb2cf, 0x6616, 0xb2ca, 0x6613, 0xb2c5, 0x660f, 0xb2c0,
+  0x660b, 0xb2bb, 0x6607, 0xb2b6, 0x6603, 0xb2b1, 0x6600, 0xb2ac,
+  0x65fc, 0xb2a7, 0x65f8, 0xb2a2, 0x65f4, 0xb29d, 0x65f0, 0xb298,
+  0x65ed, 0xb293, 0x65e9, 0xb28e, 0x65e5, 0xb289, 0x65e1, 0xb284,
+  0x65dd, 0xb27f, 0x65da, 0xb27a, 0x65d6, 0xb275, 0x65d2, 0xb270,
+  0x65ce, 0xb26b, 0x65ca, 0xb266, 0x65c7, 0xb261, 0x65c3, 0xb25c,
+  0x65bf, 0xb257, 0x65bb, 0xb252, 0x65b7, 0xb24d, 0x65b4, 0xb248,
+  0x65b0, 0xb243, 0x65ac, 0xb23e, 0x65a8, 0xb239, 0x65a4, 0xb234,
+  0x65a0, 0xb22f, 0x659d, 0xb22a, 0x6599, 0xb225, 0x6595, 0xb220,
+  0x6591, 0xb21b, 0x658d, 0xb216, 0x658a, 0xb211, 0x6586, 0xb20c,
+  0x6582, 0xb207, 0x657e, 0xb202, 0x657a, 0xb1fd, 0x6576, 0xb1f8,
+  0x6573, 0xb1f3, 0x656f, 0xb1ee, 0x656b, 0xb1e9, 0x6567, 0xb1e4,
+  0x6563, 0xb1df, 0x655f, 0xb1da, 0x655c, 0xb1d6, 0x6558, 0xb1d1,
+  0x6554, 0xb1cc, 0x6550, 0xb1c7, 0x654c, 0xb1c2, 0x6548, 0xb1bd,
+  0x6545, 0xb1b8, 0x6541, 0xb1b3, 0x653d, 0xb1ae, 0x6539, 0xb1a9,
+  0x6535, 0xb1a4, 0x6531, 0xb19f, 0x652d, 0xb19a, 0x652a, 0xb195,
+  0x6526, 0xb190, 0x6522, 0xb18b, 0x651e, 0xb186, 0x651a, 0xb181,
+  0x6516, 0xb17c, 0x6513, 0xb177, 0x650f, 0xb172, 0x650b, 0xb16d,
+  0x6507, 0xb168, 0x6503, 0xb163, 0x64ff, 0xb15e, 0x64fb, 0xb159,
+  0x64f7, 0xb154, 0x64f4, 0xb14f, 0x64f0, 0xb14a, 0x64ec, 0xb146,
+  0x64e8, 0xb141, 0x64e4, 0xb13c, 0x64e0, 0xb137, 0x64dc, 0xb132,
+  0x64d9, 0xb12d, 0x64d5, 0xb128, 0x64d1, 0xb123, 0x64cd, 0xb11e,
+  0x64c9, 0xb119, 0x64c5, 0xb114, 0x64c1, 0xb10f, 0x64bd, 0xb10a,
+  0x64ba, 0xb105, 0x64b6, 0xb100, 0x64b2, 0xb0fb, 0x64ae, 0xb0f6,
+  0x64aa, 0xb0f1, 0x64a6, 0xb0ec, 0x64a2, 0xb0e8, 0x649e, 0xb0e3,
+  0x649b, 0xb0de, 0x6497, 0xb0d9, 0x6493, 0xb0d4, 0x648f, 0xb0cf,
+  0x648b, 0xb0ca, 0x6487, 0xb0c5, 0x6483, 0xb0c0, 0x647f, 0xb0bb,
+  0x647b, 0xb0b6, 0x6478, 0xb0b1, 0x6474, 0xb0ac, 0x6470, 0xb0a7,
+  0x646c, 0xb0a2, 0x6468, 0xb09e, 0x6464, 0xb099, 0x6460, 0xb094,
+  0x645c, 0xb08f, 0x6458, 0xb08a, 0x6454, 0xb085, 0x6451, 0xb080,
+  0x644d, 0xb07b, 0x6449, 0xb076, 0x6445, 0xb071, 0x6441, 0xb06c,
+  0x643d, 0xb067, 0x6439, 0xb062, 0x6435, 0xb05e, 0x6431, 0xb059,
+  0x642d, 0xb054, 0x6429, 0xb04f, 0x6426, 0xb04a, 0x6422, 0xb045,
+  0x641e, 0xb040, 0x641a, 0xb03b, 0x6416, 0xb036, 0x6412, 0xb031,
+  0x640e, 0xb02c, 0x640a, 0xb027, 0x6406, 0xb023, 0x6402, 0xb01e,
+  0x63fe, 0xb019, 0x63fa, 0xb014, 0x63f7, 0xb00f, 0x63f3, 0xb00a,
+  0x63ef, 0xb005, 0x63eb, 0xb000, 0x63e7, 0xaffb, 0x63e3, 0xaff6,
+  0x63df, 0xaff1, 0x63db, 0xafed, 0x63d7, 0xafe8, 0x63d3, 0xafe3,
+  0x63cf, 0xafde, 0x63cb, 0xafd9, 0x63c7, 0xafd4, 0x63c3, 0xafcf,
+  0x63c0, 0xafca, 0x63bc, 0xafc5, 0x63b8, 0xafc1, 0x63b4, 0xafbc,
+  0x63b0, 0xafb7, 0x63ac, 0xafb2, 0x63a8, 0xafad, 0x63a4, 0xafa8,
+  0x63a0, 0xafa3, 0x639c, 0xaf9e, 0x6398, 0xaf99, 0x6394, 0xaf94,
+  0x6390, 0xaf90, 0x638c, 0xaf8b, 0x6388, 0xaf86, 0x6384, 0xaf81,
+  0x6380, 0xaf7c, 0x637c, 0xaf77, 0x6378, 0xaf72, 0x6375, 0xaf6d,
+  0x6371, 0xaf69, 0x636d, 0xaf64, 0x6369, 0xaf5f, 0x6365, 0xaf5a,
+  0x6361, 0xaf55, 0x635d, 0xaf50, 0x6359, 0xaf4b, 0x6355, 0xaf46,
+  0x6351, 0xaf41, 0x634d, 0xaf3d, 0x6349, 0xaf38, 0x6345, 0xaf33,
+  0x6341, 0xaf2e, 0x633d, 0xaf29, 0x6339, 0xaf24, 0x6335, 0xaf1f,
+  0x6331, 0xaf1b, 0x632d, 0xaf16, 0x6329, 0xaf11, 0x6325, 0xaf0c,
+  0x6321, 0xaf07, 0x631d, 0xaf02, 0x6319, 0xaefd, 0x6315, 0xaef8,
+  0x6311, 0xaef4, 0x630d, 0xaeef, 0x6309, 0xaeea, 0x6305, 0xaee5,
+  0x6301, 0xaee0, 0x62fd, 0xaedb, 0x62f9, 0xaed6, 0x62f5, 0xaed2,
+  0x62f2, 0xaecd, 0x62ee, 0xaec8, 0x62ea, 0xaec3, 0x62e6, 0xaebe,
+  0x62e2, 0xaeb9, 0x62de, 0xaeb4, 0x62da, 0xaeb0, 0x62d6, 0xaeab,
+  0x62d2, 0xaea6, 0x62ce, 0xaea1, 0x62ca, 0xae9c, 0x62c6, 0xae97,
+  0x62c2, 0xae92, 0x62be, 0xae8e, 0x62ba, 0xae89, 0x62b6, 0xae84,
+  0x62b2, 0xae7f, 0x62ae, 0xae7a, 0x62aa, 0xae75, 0x62a6, 0xae71,
+  0x62a2, 0xae6c, 0x629e, 0xae67, 0x629a, 0xae62, 0x6296, 0xae5d,
+  0x6292, 0xae58, 0x628e, 0xae54, 0x628a, 0xae4f, 0x6286, 0xae4a,
+  0x6282, 0xae45, 0x627e, 0xae40, 0x627a, 0xae3b, 0x6275, 0xae37,
+  0x6271, 0xae32, 0x626d, 0xae2d, 0x6269, 0xae28, 0x6265, 0xae23,
+  0x6261, 0xae1e, 0x625d, 0xae1a, 0x6259, 0xae15, 0x6255, 0xae10,
+  0x6251, 0xae0b, 0x624d, 0xae06, 0x6249, 0xae01, 0x6245, 0xadfd,
+  0x6241, 0xadf8, 0x623d, 0xadf3, 0x6239, 0xadee, 0x6235, 0xade9,
+  0x6231, 0xade4, 0x622d, 0xade0, 0x6229, 0xaddb, 0x6225, 0xadd6,
+  0x6221, 0xadd1, 0x621d, 0xadcc, 0x6219, 0xadc8, 0x6215, 0xadc3,
+  0x6211, 0xadbe, 0x620d, 0xadb9, 0x6209, 0xadb4, 0x6205, 0xadaf,
+  0x6201, 0xadab, 0x61fd, 0xada6, 0x61f9, 0xada1, 0x61f5, 0xad9c,
+  0x61f1, 0xad97, 0x61ec, 0xad93, 0x61e8, 0xad8e, 0x61e4, 0xad89,
+  0x61e0, 0xad84, 0x61dc, 0xad7f, 0x61d8, 0xad7b, 0x61d4, 0xad76,
+  0x61d0, 0xad71, 0x61cc, 0xad6c, 0x61c8, 0xad67, 0x61c4, 0xad63,
+  0x61c0, 0xad5e, 0x61bc, 0xad59, 0x61b8, 0xad54, 0x61b4, 0xad4f,
+  0x61b0, 0xad4b, 0x61ac, 0xad46, 0x61a8, 0xad41, 0x61a3, 0xad3c,
+  0x619f, 0xad37, 0x619b, 0xad33, 0x6197, 0xad2e, 0x6193, 0xad29,
+  0x618f, 0xad24, 0x618b, 0xad1f, 0x6187, 0xad1b, 0x6183, 0xad16,
+  0x617f, 0xad11, 0x617b, 0xad0c, 0x6177, 0xad08, 0x6173, 0xad03,
+  0x616f, 0xacfe, 0x616b, 0xacf9, 0x6166, 0xacf4, 0x6162, 0xacf0,
+  0x615e, 0xaceb, 0x615a, 0xace6, 0x6156, 0xace1, 0x6152, 0xacdd,
+  0x614e, 0xacd8, 0x614a, 0xacd3, 0x6146, 0xacce, 0x6142, 0xacc9,
+  0x613e, 0xacc5, 0x613a, 0xacc0, 0x6135, 0xacbb, 0x6131, 0xacb6,
+  0x612d, 0xacb2, 0x6129, 0xacad, 0x6125, 0xaca8, 0x6121, 0xaca3,
+  0x611d, 0xac9e, 0x6119, 0xac9a, 0x6115, 0xac95, 0x6111, 0xac90,
+  0x610d, 0xac8b, 0x6108, 0xac87, 0x6104, 0xac82, 0x6100, 0xac7d,
+  0x60fc, 0xac78, 0x60f8, 0xac74, 0x60f4, 0xac6f, 0x60f0, 0xac6a,
+  0x60ec, 0xac65, 0x60e8, 0xac61, 0x60e4, 0xac5c, 0x60df, 0xac57,
+  0x60db, 0xac52, 0x60d7, 0xac4e, 0x60d3, 0xac49, 0x60cf, 0xac44,
+  0x60cb, 0xac3f, 0x60c7, 0xac3b, 0x60c3, 0xac36, 0x60bf, 0xac31,
+  0x60ba, 0xac2c, 0x60b6, 0xac28, 0x60b2, 0xac23, 0x60ae, 0xac1e,
+  0x60aa, 0xac19, 0x60a6, 0xac15, 0x60a2, 0xac10, 0x609e, 0xac0b,
+  0x6099, 0xac06, 0x6095, 0xac02, 0x6091, 0xabfd, 0x608d, 0xabf8,
+  0x6089, 0xabf3, 0x6085, 0xabef, 0x6081, 0xabea, 0x607d, 0xabe5,
+  0x6078, 0xabe0, 0x6074, 0xabdc, 0x6070, 0xabd7, 0x606c, 0xabd2,
+  0x6068, 0xabcd, 0x6064, 0xabc9, 0x6060, 0xabc4, 0x605c, 0xabbf,
+  0x6057, 0xabbb, 0x6053, 0xabb6, 0x604f, 0xabb1, 0x604b, 0xabac,
+  0x6047, 0xaba8, 0x6043, 0xaba3, 0x603f, 0xab9e, 0x603a, 0xab99,
+  0x6036, 0xab95, 0x6032, 0xab90, 0x602e, 0xab8b, 0x602a, 0xab87,
+  0x6026, 0xab82, 0x6022, 0xab7d, 0x601d, 0xab78, 0x6019, 0xab74,
+  0x6015, 0xab6f, 0x6011, 0xab6a, 0x600d, 0xab66, 0x6009, 0xab61,
+  0x6004, 0xab5c, 0x6000, 0xab57, 0x5ffc, 0xab53, 0x5ff8, 0xab4e,
+  0x5ff4, 0xab49, 0x5ff0, 0xab45, 0x5fec, 0xab40, 0x5fe7, 0xab3b,
+  0x5fe3, 0xab36, 0x5fdf, 0xab32, 0x5fdb, 0xab2d, 0x5fd7, 0xab28,
+  0x5fd3, 0xab24, 0x5fce, 0xab1f, 0x5fca, 0xab1a, 0x5fc6, 0xab16,
+  0x5fc2, 0xab11, 0x5fbe, 0xab0c, 0x5fba, 0xab07, 0x5fb5, 0xab03,
+  0x5fb1, 0xaafe, 0x5fad, 0xaaf9, 0x5fa9, 0xaaf5, 0x5fa5, 0xaaf0,
+  0x5fa0, 0xaaeb, 0x5f9c, 0xaae7, 0x5f98, 0xaae2, 0x5f94, 0xaadd,
+  0x5f90, 0xaad8, 0x5f8c, 0xaad4, 0x5f87, 0xaacf, 0x5f83, 0xaaca,
+  0x5f7f, 0xaac6, 0x5f7b, 0xaac1, 0x5f77, 0xaabc, 0x5f72, 0xaab8,
+  0x5f6e, 0xaab3, 0x5f6a, 0xaaae, 0x5f66, 0xaaaa, 0x5f62, 0xaaa5,
+  0x5f5e, 0xaaa0, 0x5f59, 0xaa9c, 0x5f55, 0xaa97, 0x5f51, 0xaa92,
+  0x5f4d, 0xaa8e, 0x5f49, 0xaa89, 0x5f44, 0xaa84, 0x5f40, 0xaa7f,
+  0x5f3c, 0xaa7b, 0x5f38, 0xaa76, 0x5f34, 0xaa71, 0x5f2f, 0xaa6d,
+  0x5f2b, 0xaa68, 0x5f27, 0xaa63, 0x5f23, 0xaa5f, 0x5f1f, 0xaa5a,
+  0x5f1a, 0xaa55, 0x5f16, 0xaa51, 0x5f12, 0xaa4c, 0x5f0e, 0xaa47,
+  0x5f0a, 0xaa43, 0x5f05, 0xaa3e, 0x5f01, 0xaa39, 0x5efd, 0xaa35,
+  0x5ef9, 0xaa30, 0x5ef5, 0xaa2b, 0x5ef0, 0xaa27, 0x5eec, 0xaa22,
+  0x5ee8, 0xaa1d, 0x5ee4, 0xaa19, 0x5edf, 0xaa14, 0x5edb, 0xaa10,
+  0x5ed7, 0xaa0b, 0x5ed3, 0xaa06, 0x5ecf, 0xaa02, 0x5eca, 0xa9fd,
+  0x5ec6, 0xa9f8, 0x5ec2, 0xa9f4, 0x5ebe, 0xa9ef, 0x5eb9, 0xa9ea,
+  0x5eb5, 0xa9e6, 0x5eb1, 0xa9e1, 0x5ead, 0xa9dc, 0x5ea9, 0xa9d8,
+  0x5ea4, 0xa9d3, 0x5ea0, 0xa9ce, 0x5e9c, 0xa9ca, 0x5e98, 0xa9c5,
+  0x5e93, 0xa9c0, 0x5e8f, 0xa9bc, 0x5e8b, 0xa9b7, 0x5e87, 0xa9b3,
+  0x5e82, 0xa9ae, 0x5e7e, 0xa9a9, 0x5e7a, 0xa9a5, 0x5e76, 0xa9a0,
+  0x5e71, 0xa99b, 0x5e6d, 0xa997, 0x5e69, 0xa992, 0x5e65, 0xa98d,
+  0x5e60, 0xa989, 0x5e5c, 0xa984, 0x5e58, 0xa980, 0x5e54, 0xa97b,
+  0x5e50, 0xa976, 0x5e4b, 0xa972, 0x5e47, 0xa96d, 0x5e43, 0xa968,
+  0x5e3f, 0xa964, 0x5e3a, 0xa95f, 0x5e36, 0xa95b, 0x5e32, 0xa956,
+  0x5e2d, 0xa951, 0x5e29, 0xa94d, 0x5e25, 0xa948, 0x5e21, 0xa943,
+  0x5e1c, 0xa93f, 0x5e18, 0xa93a, 0x5e14, 0xa936, 0x5e10, 0xa931,
+  0x5e0b, 0xa92c, 0x5e07, 0xa928, 0x5e03, 0xa923, 0x5dff, 0xa91e,
+  0x5dfa, 0xa91a, 0x5df6, 0xa915, 0x5df2, 0xa911, 0x5dee, 0xa90c,
+  0x5de9, 0xa907, 0x5de5, 0xa903, 0x5de1, 0xa8fe, 0x5ddc, 0xa8fa,
+  0x5dd8, 0xa8f5, 0x5dd4, 0xa8f0, 0x5dd0, 0xa8ec, 0x5dcb, 0xa8e7,
+  0x5dc7, 0xa8e3, 0x5dc3, 0xa8de, 0x5dbf, 0xa8d9, 0x5dba, 0xa8d5,
+  0x5db6, 0xa8d0, 0x5db2, 0xa8cc, 0x5dad, 0xa8c7, 0x5da9, 0xa8c2,
+  0x5da5, 0xa8be, 0x5da1, 0xa8b9, 0x5d9c, 0xa8b5, 0x5d98, 0xa8b0,
+  0x5d94, 0xa8ab, 0x5d8f, 0xa8a7, 0x5d8b, 0xa8a2, 0x5d87, 0xa89e,
+  0x5d83, 0xa899, 0x5d7e, 0xa894, 0x5d7a, 0xa890, 0x5d76, 0xa88b,
+  0x5d71, 0xa887, 0x5d6d, 0xa882, 0x5d69, 0xa87d, 0x5d65, 0xa879,
+  0x5d60, 0xa874, 0x5d5c, 0xa870, 0x5d58, 0xa86b, 0x5d53, 0xa867,
+  0x5d4f, 0xa862, 0x5d4b, 0xa85d, 0x5d46, 0xa859, 0x5d42, 0xa854,
+  0x5d3e, 0xa850, 0x5d3a, 0xa84b, 0x5d35, 0xa847, 0x5d31, 0xa842,
+  0x5d2d, 0xa83d, 0x5d28, 0xa839, 0x5d24, 0xa834, 0x5d20, 0xa830,
+  0x5d1b, 0xa82b, 0x5d17, 0xa827, 0x5d13, 0xa822, 0x5d0e, 0xa81d,
+  0x5d0a, 0xa819, 0x5d06, 0xa814, 0x5d01, 0xa810, 0x5cfd, 0xa80b,
+  0x5cf9, 0xa807, 0x5cf5, 0xa802, 0x5cf0, 0xa7fd, 0x5cec, 0xa7f9,
+  0x5ce8, 0xa7f4, 0x5ce3, 0xa7f0, 0x5cdf, 0xa7eb, 0x5cdb, 0xa7e7,
+  0x5cd6, 0xa7e2, 0x5cd2, 0xa7de, 0x5cce, 0xa7d9, 0x5cc9, 0xa7d4,
+  0x5cc5, 0xa7d0, 0x5cc1, 0xa7cb, 0x5cbc, 0xa7c7, 0x5cb8, 0xa7c2,
+  0x5cb4, 0xa7be, 0x5caf, 0xa7b9, 0x5cab, 0xa7b5, 0x5ca7, 0xa7b0,
+  0x5ca2, 0xa7ab, 0x5c9e, 0xa7a7, 0x5c9a, 0xa7a2, 0x5c95, 0xa79e,
+  0x5c91, 0xa799, 0x5c8d, 0xa795, 0x5c88, 0xa790, 0x5c84, 0xa78c,
+  0x5c80, 0xa787, 0x5c7b, 0xa783, 0x5c77, 0xa77e, 0x5c73, 0xa779,
+  0x5c6e, 0xa775, 0x5c6a, 0xa770, 0x5c66, 0xa76c, 0x5c61, 0xa767,
+  0x5c5d, 0xa763, 0x5c58, 0xa75e, 0x5c54, 0xa75a, 0x5c50, 0xa755,
+  0x5c4b, 0xa751, 0x5c47, 0xa74c, 0x5c43, 0xa748, 0x5c3e, 0xa743,
+  0x5c3a, 0xa73f, 0x5c36, 0xa73a, 0x5c31, 0xa735, 0x5c2d, 0xa731,
+  0x5c29, 0xa72c, 0x5c24, 0xa728, 0x5c20, 0xa723, 0x5c1b, 0xa71f,
+  0x5c17, 0xa71a, 0x5c13, 0xa716, 0x5c0e, 0xa711, 0x5c0a, 0xa70d,
+  0x5c06, 0xa708, 0x5c01, 0xa704, 0x5bfd, 0xa6ff, 0x5bf9, 0xa6fb,
+  0x5bf4, 0xa6f6, 0x5bf0, 0xa6f2, 0x5beb, 0xa6ed, 0x5be7, 0xa6e9,
+  0x5be3, 0xa6e4, 0x5bde, 0xa6e0, 0x5bda, 0xa6db, 0x5bd6, 0xa6d7,
+  0x5bd1, 0xa6d2, 0x5bcd, 0xa6ce, 0x5bc8, 0xa6c9, 0x5bc4, 0xa6c5,
+  0x5bc0, 0xa6c0, 0x5bbb, 0xa6bc, 0x5bb7, 0xa6b7, 0x5bb2, 0xa6b3,
+  0x5bae, 0xa6ae, 0x5baa, 0xa6aa, 0x5ba5, 0xa6a5, 0x5ba1, 0xa6a1,
+  0x5b9d, 0xa69c, 0x5b98, 0xa698, 0x5b94, 0xa693, 0x5b8f, 0xa68f,
+  0x5b8b, 0xa68a, 0x5b87, 0xa686, 0x5b82, 0xa681, 0x5b7e, 0xa67d,
+  0x5b79, 0xa678, 0x5b75, 0xa674, 0x5b71, 0xa66f, 0x5b6c, 0xa66b,
+  0x5b68, 0xa666, 0x5b63, 0xa662, 0x5b5f, 0xa65d, 0x5b5b, 0xa659,
+  0x5b56, 0xa654, 0x5b52, 0xa650, 0x5b4d, 0xa64b, 0x5b49, 0xa647,
+  0x5b45, 0xa642, 0x5b40, 0xa63e, 0x5b3c, 0xa639, 0x5b37, 0xa635,
+  0x5b33, 0xa630, 0x5b2f, 0xa62c, 0x5b2a, 0xa627, 0x5b26, 0xa623,
+  0x5b21, 0xa61f, 0x5b1d, 0xa61a, 0x5b19, 0xa616, 0x5b14, 0xa611,
+  0x5b10, 0xa60d, 0x5b0b, 0xa608, 0x5b07, 0xa604, 0x5b02, 0xa5ff,
+  0x5afe, 0xa5fb, 0x5afa, 0xa5f6, 0x5af5, 0xa5f2, 0x5af1, 0xa5ed,
+  0x5aec, 0xa5e9, 0x5ae8, 0xa5e4, 0x5ae4, 0xa5e0, 0x5adf, 0xa5dc,
+  0x5adb, 0xa5d7, 0x5ad6, 0xa5d3, 0x5ad2, 0xa5ce, 0x5acd, 0xa5ca,
+  0x5ac9, 0xa5c5, 0x5ac5, 0xa5c1, 0x5ac0, 0xa5bc, 0x5abc, 0xa5b8,
+  0x5ab7, 0xa5b3, 0x5ab3, 0xa5af, 0x5aae, 0xa5aa, 0x5aaa, 0xa5a6,
+  0x5aa5, 0xa5a2, 0x5aa1, 0xa59d, 0x5a9d, 0xa599, 0x5a98, 0xa594,
+  0x5a94, 0xa590, 0x5a8f, 0xa58b, 0x5a8b, 0xa587, 0x5a86, 0xa582,
+  0x5a82, 0xa57e, 0x5a7e, 0xa57a, 0x5a79, 0xa575, 0x5a75, 0xa571,
+  0x5a70, 0xa56c, 0x5a6c, 0xa568, 0x5a67, 0xa563, 0x5a63, 0xa55f,
+  0x5a5e, 0xa55b, 0x5a5a, 0xa556, 0x5a56, 0xa552, 0x5a51, 0xa54d,
+  0x5a4d, 0xa549, 0x5a48, 0xa544, 0x5a44, 0xa540, 0x5a3f, 0xa53b,
+  0x5a3b, 0xa537, 0x5a36, 0xa533, 0x5a32, 0xa52e, 0x5a2d, 0xa52a,
+  0x5a29, 0xa525, 0x5a24, 0xa521, 0x5a20, 0xa51c, 0x5a1c, 0xa518,
+  0x5a17, 0xa514, 0x5a13, 0xa50f, 0x5a0e, 0xa50b, 0x5a0a, 0xa506,
+  0x5a05, 0xa502, 0x5a01, 0xa4fe, 0x59fc, 0xa4f9, 0x59f8, 0xa4f5,
+  0x59f3, 0xa4f0, 0x59ef, 0xa4ec, 0x59ea, 0xa4e7, 0x59e6, 0xa4e3,
+  0x59e1, 0xa4df, 0x59dd, 0xa4da, 0x59d9, 0xa4d6, 0x59d4, 0xa4d1,
+  0x59d0, 0xa4cd, 0x59cb, 0xa4c9, 0x59c7, 0xa4c4, 0x59c2, 0xa4c0,
+  0x59be, 0xa4bb, 0x59b9, 0xa4b7, 0x59b5, 0xa4b3, 0x59b0, 0xa4ae,
+  0x59ac, 0xa4aa, 0x59a7, 0xa4a5, 0x59a3, 0xa4a1, 0x599e, 0xa49d,
+  0x599a, 0xa498, 0x5995, 0xa494, 0x5991, 0xa48f, 0x598c, 0xa48b,
+  0x5988, 0xa487, 0x5983, 0xa482, 0x597f, 0xa47e, 0x597a, 0xa479,
+  0x5976, 0xa475, 0x5971, 0xa471, 0x596d, 0xa46c, 0x5968, 0xa468,
+  0x5964, 0xa463, 0x595f, 0xa45f, 0x595b, 0xa45b, 0x5956, 0xa456,
+  0x5952, 0xa452, 0x594d, 0xa44e, 0x5949, 0xa449, 0x5944, 0xa445,
+  0x5940, 0xa440, 0x593b, 0xa43c, 0x5937, 0xa438, 0x5932, 0xa433,
+  0x592e, 0xa42f, 0x5929, 0xa42a, 0x5925, 0xa426, 0x5920, 0xa422,
+  0x591c, 0xa41d, 0x5917, 0xa419, 0x5913, 0xa415, 0x590e, 0xa410,
+  0x590a, 0xa40c, 0x5905, 0xa407, 0x5901, 0xa403, 0x58fc, 0xa3ff,
+  0x58f8, 0xa3fa, 0x58f3, 0xa3f6, 0x58ef, 0xa3f2, 0x58ea, 0xa3ed,
+  0x58e6, 0xa3e9, 0x58e1, 0xa3e5, 0x58dd, 0xa3e0, 0x58d8, 0xa3dc,
+  0x58d4, 0xa3d7, 0x58cf, 0xa3d3, 0x58cb, 0xa3cf, 0x58c6, 0xa3ca,
+  0x58c1, 0xa3c6, 0x58bd, 0xa3c2, 0x58b8, 0xa3bd, 0x58b4, 0xa3b9,
+  0x58af, 0xa3b5, 0x58ab, 0xa3b0, 0x58a6, 0xa3ac, 0x58a2, 0xa3a8,
+  0x589d, 0xa3a3, 0x5899, 0xa39f, 0x5894, 0xa39a, 0x5890, 0xa396,
+  0x588b, 0xa392, 0x5887, 0xa38d, 0x5882, 0xa389, 0x587d, 0xa385,
+  0x5879, 0xa380, 0x5874, 0xa37c, 0x5870, 0xa378, 0x586b, 0xa373,
+  0x5867, 0xa36f, 0x5862, 0xa36b, 0x585e, 0xa366, 0x5859, 0xa362,
+  0x5855, 0xa35e, 0x5850, 0xa359, 0x584b, 0xa355, 0x5847, 0xa351,
+  0x5842, 0xa34c, 0x583e, 0xa348, 0x5839, 0xa344, 0x5835, 0xa33f,
+  0x5830, 0xa33b, 0x582c, 0xa337, 0x5827, 0xa332, 0x5822, 0xa32e,
+  0x581e, 0xa32a, 0x5819, 0xa325, 0x5815, 0xa321, 0x5810, 0xa31d,
+  0x580c, 0xa318, 0x5807, 0xa314, 0x5803, 0xa310, 0x57fe, 0xa30b,
+  0x57f9, 0xa307, 0x57f5, 0xa303, 0x57f0, 0xa2ff, 0x57ec, 0xa2fa,
+  0x57e7, 0xa2f6, 0x57e3, 0xa2f2, 0x57de, 0xa2ed, 0x57d9, 0xa2e9,
+  0x57d5, 0xa2e5, 0x57d0, 0xa2e0, 0x57cc, 0xa2dc, 0x57c7, 0xa2d8,
+  0x57c3, 0xa2d3, 0x57be, 0xa2cf, 0x57b9, 0xa2cb, 0x57b5, 0xa2c6,
+  0x57b0, 0xa2c2, 0x57ac, 0xa2be, 0x57a7, 0xa2ba, 0x57a3, 0xa2b5,
+  0x579e, 0xa2b1, 0x5799, 0xa2ad, 0x5795, 0xa2a8, 0x5790, 0xa2a4,
+  0x578c, 0xa2a0, 0x5787, 0xa29b, 0x5783, 0xa297, 0x577e, 0xa293,
+  0x5779, 0xa28f, 0x5775, 0xa28a, 0x5770, 0xa286, 0x576c, 0xa282,
+  0x5767, 0xa27d, 0x5762, 0xa279, 0x575e, 0xa275, 0x5759, 0xa271,
+  0x5755, 0xa26c, 0x5750, 0xa268, 0x574b, 0xa264, 0x5747, 0xa25f,
+  0x5742, 0xa25b, 0x573e, 0xa257, 0x5739, 0xa253, 0x5734, 0xa24e,
+  0x5730, 0xa24a, 0x572b, 0xa246, 0x5727, 0xa241, 0x5722, 0xa23d,
+  0x571d, 0xa239, 0x5719, 0xa235, 0x5714, 0xa230, 0x5710, 0xa22c,
+  0x570b, 0xa228, 0x5706, 0xa224, 0x5702, 0xa21f, 0x56fd, 0xa21b,
+  0x56f9, 0xa217, 0x56f4, 0xa212, 0x56ef, 0xa20e, 0x56eb, 0xa20a,
+  0x56e6, 0xa206, 0x56e2, 0xa201, 0x56dd, 0xa1fd, 0x56d8, 0xa1f9,
+  0x56d4, 0xa1f5, 0x56cf, 0xa1f0, 0x56ca, 0xa1ec, 0x56c6, 0xa1e8,
+  0x56c1, 0xa1e4, 0x56bd, 0xa1df, 0x56b8, 0xa1db, 0x56b3, 0xa1d7,
+  0x56af, 0xa1d3, 0x56aa, 0xa1ce, 0x56a5, 0xa1ca, 0x56a1, 0xa1c6,
+  0x569c, 0xa1c1, 0x5698, 0xa1bd, 0x5693, 0xa1b9, 0x568e, 0xa1b5,
+  0x568a, 0xa1b0, 0x5685, 0xa1ac, 0x5680, 0xa1a8, 0x567c, 0xa1a4,
+  0x5677, 0xa1a0, 0x5673, 0xa19b, 0x566e, 0xa197, 0x5669, 0xa193,
+  0x5665, 0xa18f, 0x5660, 0xa18a, 0x565b, 0xa186, 0x5657, 0xa182,
+  0x5652, 0xa17e, 0x564d, 0xa179, 0x5649, 0xa175, 0x5644, 0xa171,
+  0x5640, 0xa16d, 0x563b, 0xa168, 0x5636, 0xa164, 0x5632, 0xa160,
+  0x562d, 0xa15c, 0x5628, 0xa157, 0x5624, 0xa153, 0x561f, 0xa14f,
+  0x561a, 0xa14b, 0x5616, 0xa147, 0x5611, 0xa142, 0x560c, 0xa13e,
+  0x5608, 0xa13a, 0x5603, 0xa136, 0x55fe, 0xa131, 0x55fa, 0xa12d,
+  0x55f5, 0xa129, 0x55f0, 0xa125, 0x55ec, 0xa121, 0x55e7, 0xa11c,
+  0x55e3, 0xa118, 0x55de, 0xa114, 0x55d9, 0xa110, 0x55d5, 0xa10b,
+  0x55d0, 0xa107, 0x55cb, 0xa103, 0x55c7, 0xa0ff, 0x55c2, 0xa0fb,
+  0x55bd, 0xa0f6, 0x55b9, 0xa0f2, 0x55b4, 0xa0ee, 0x55af, 0xa0ea,
+  0x55ab, 0xa0e6, 0x55a6, 0xa0e1, 0x55a1, 0xa0dd, 0x559d, 0xa0d9,
+  0x5598, 0xa0d5, 0x5593, 0xa0d1, 0x558f, 0xa0cc, 0x558a, 0xa0c8,
+  0x5585, 0xa0c4, 0x5581, 0xa0c0, 0x557c, 0xa0bc, 0x5577, 0xa0b7,
+  0x5572, 0xa0b3, 0x556e, 0xa0af, 0x5569, 0xa0ab, 0x5564, 0xa0a7,
+  0x5560, 0xa0a2, 0x555b, 0xa09e, 0x5556, 0xa09a, 0x5552, 0xa096,
+  0x554d, 0xa092, 0x5548, 0xa08e, 0x5544, 0xa089, 0x553f, 0xa085,
+  0x553a, 0xa081, 0x5536, 0xa07d, 0x5531, 0xa079, 0x552c, 0xa074,
+  0x5528, 0xa070, 0x5523, 0xa06c, 0x551e, 0xa068, 0x5519, 0xa064,
+  0x5515, 0xa060, 0x5510, 0xa05b, 0x550b, 0xa057, 0x5507, 0xa053,
+  0x5502, 0xa04f, 0x54fd, 0xa04b, 0x54f9, 0xa046, 0x54f4, 0xa042,
+  0x54ef, 0xa03e, 0x54ea, 0xa03a, 0x54e6, 0xa036, 0x54e1, 0xa032,
+  0x54dc, 0xa02d, 0x54d8, 0xa029, 0x54d3, 0xa025, 0x54ce, 0xa021,
+  0x54ca, 0xa01d, 0x54c5, 0xa019, 0x54c0, 0xa014, 0x54bb, 0xa010,
+  0x54b7, 0xa00c, 0x54b2, 0xa008, 0x54ad, 0xa004, 0x54a9, 0xa000,
+  0x54a4, 0x9ffc, 0x549f, 0x9ff7, 0x549a, 0x9ff3, 0x5496, 0x9fef,
+  0x5491, 0x9feb, 0x548c, 0x9fe7, 0x5488, 0x9fe3, 0x5483, 0x9fde,
+  0x547e, 0x9fda, 0x5479, 0x9fd6, 0x5475, 0x9fd2, 0x5470, 0x9fce,
+  0x546b, 0x9fca, 0x5467, 0x9fc6, 0x5462, 0x9fc1, 0x545d, 0x9fbd,
+  0x5458, 0x9fb9, 0x5454, 0x9fb5, 0x544f, 0x9fb1, 0x544a, 0x9fad,
+  0x5445, 0x9fa9, 0x5441, 0x9fa4, 0x543c, 0x9fa0, 0x5437, 0x9f9c,
+  0x5433, 0x9f98, 0x542e, 0x9f94, 0x5429, 0x9f90, 0x5424, 0x9f8c,
+  0x5420, 0x9f88, 0x541b, 0x9f83, 0x5416, 0x9f7f, 0x5411, 0x9f7b,
+  0x540d, 0x9f77, 0x5408, 0x9f73, 0x5403, 0x9f6f, 0x53fe, 0x9f6b,
+  0x53fa, 0x9f67, 0x53f5, 0x9f62, 0x53f0, 0x9f5e, 0x53eb, 0x9f5a,
+  0x53e7, 0x9f56, 0x53e2, 0x9f52, 0x53dd, 0x9f4e, 0x53d8, 0x9f4a,
+  0x53d4, 0x9f46, 0x53cf, 0x9f41, 0x53ca, 0x9f3d, 0x53c5, 0x9f39,
+  0x53c1, 0x9f35, 0x53bc, 0x9f31, 0x53b7, 0x9f2d, 0x53b2, 0x9f29,
+  0x53ae, 0x9f25, 0x53a9, 0x9f21, 0x53a4, 0x9f1c, 0x539f, 0x9f18,
+  0x539b, 0x9f14, 0x5396, 0x9f10, 0x5391, 0x9f0c, 0x538c, 0x9f08,
+  0x5388, 0x9f04, 0x5383, 0x9f00, 0x537e, 0x9efc, 0x5379, 0x9ef8,
+  0x5375, 0x9ef3, 0x5370, 0x9eef, 0x536b, 0x9eeb, 0x5366, 0x9ee7,
+  0x5362, 0x9ee3, 0x535d, 0x9edf, 0x5358, 0x9edb, 0x5353, 0x9ed7,
+  0x534e, 0x9ed3, 0x534a, 0x9ecf, 0x5345, 0x9ecb, 0x5340, 0x9ec6,
+  0x533b, 0x9ec2, 0x5337, 0x9ebe, 0x5332, 0x9eba, 0x532d, 0x9eb6,
+  0x5328, 0x9eb2, 0x5323, 0x9eae, 0x531f, 0x9eaa, 0x531a, 0x9ea6,
+  0x5315, 0x9ea2, 0x5310, 0x9e9e, 0x530c, 0x9e9a, 0x5307, 0x9e95,
+  0x5302, 0x9e91, 0x52fd, 0x9e8d, 0x52f8, 0x9e89, 0x52f4, 0x9e85,
+  0x52ef, 0x9e81, 0x52ea, 0x9e7d, 0x52e5, 0x9e79, 0x52e1, 0x9e75,
+  0x52dc, 0x9e71, 0x52d7, 0x9e6d, 0x52d2, 0x9e69, 0x52cd, 0x9e65,
+  0x52c9, 0x9e61, 0x52c4, 0x9e5d, 0x52bf, 0x9e58, 0x52ba, 0x9e54,
+  0x52b5, 0x9e50, 0x52b1, 0x9e4c, 0x52ac, 0x9e48, 0x52a7, 0x9e44,
+  0x52a2, 0x9e40, 0x529d, 0x9e3c, 0x5299, 0x9e38, 0x5294, 0x9e34,
+  0x528f, 0x9e30, 0x528a, 0x9e2c, 0x5285, 0x9e28, 0x5281, 0x9e24,
+  0x527c, 0x9e20, 0x5277, 0x9e1c, 0x5272, 0x9e18, 0x526d, 0x9e14,
+  0x5269, 0x9e0f, 0x5264, 0x9e0b, 0x525f, 0x9e07, 0x525a, 0x9e03,
+  0x5255, 0x9dff, 0x5251, 0x9dfb, 0x524c, 0x9df7, 0x5247, 0x9df3,
+  0x5242, 0x9def, 0x523d, 0x9deb, 0x5238, 0x9de7, 0x5234, 0x9de3,
+  0x522f, 0x9ddf, 0x522a, 0x9ddb, 0x5225, 0x9dd7, 0x5220, 0x9dd3,
+  0x521c, 0x9dcf, 0x5217, 0x9dcb, 0x5212, 0x9dc7, 0x520d, 0x9dc3,
+  0x5208, 0x9dbf, 0x5203, 0x9dbb, 0x51ff, 0x9db7, 0x51fa, 0x9db3,
+  0x51f5, 0x9daf, 0x51f0, 0x9dab, 0x51eb, 0x9da7, 0x51e6, 0x9da3,
+  0x51e2, 0x9d9f, 0x51dd, 0x9d9b, 0x51d8, 0x9d97, 0x51d3, 0x9d93,
+  0x51ce, 0x9d8f, 0x51c9, 0x9d8b, 0x51c5, 0x9d86, 0x51c0, 0x9d82,
+  0x51bb, 0x9d7e, 0x51b6, 0x9d7a, 0x51b1, 0x9d76, 0x51ac, 0x9d72,
+  0x51a8, 0x9d6e, 0x51a3, 0x9d6a, 0x519e, 0x9d66, 0x5199, 0x9d62,
+  0x5194, 0x9d5e, 0x518f, 0x9d5a, 0x518b, 0x9d56, 0x5186, 0x9d52,
+  0x5181, 0x9d4e, 0x517c, 0x9d4a, 0x5177, 0x9d46, 0x5172, 0x9d42,
+  0x516e, 0x9d3e, 0x5169, 0x9d3a, 0x5164, 0x9d36, 0x515f, 0x9d32,
+  0x515a, 0x9d2e, 0x5155, 0x9d2a, 0x5150, 0x9d26, 0x514c, 0x9d22,
+  0x5147, 0x9d1e, 0x5142, 0x9d1a, 0x513d, 0x9d16, 0x5138, 0x9d12,
+  0x5133, 0x9d0e, 0x512e, 0x9d0b, 0x512a, 0x9d07, 0x5125, 0x9d03,
+  0x5120, 0x9cff, 0x511b, 0x9cfb, 0x5116, 0x9cf7, 0x5111, 0x9cf3,
+  0x510c, 0x9cef, 0x5108, 0x9ceb, 0x5103, 0x9ce7, 0x50fe, 0x9ce3,
+  0x50f9, 0x9cdf, 0x50f4, 0x9cdb, 0x50ef, 0x9cd7, 0x50ea, 0x9cd3,
+  0x50e5, 0x9ccf, 0x50e1, 0x9ccb, 0x50dc, 0x9cc7, 0x50d7, 0x9cc3,
+  0x50d2, 0x9cbf, 0x50cd, 0x9cbb, 0x50c8, 0x9cb7, 0x50c3, 0x9cb3,
+  0x50bf, 0x9caf, 0x50ba, 0x9cab, 0x50b5, 0x9ca7, 0x50b0, 0x9ca3,
+  0x50ab, 0x9c9f, 0x50a6, 0x9c9b, 0x50a1, 0x9c97, 0x509c, 0x9c93,
+  0x5097, 0x9c8f, 0x5093, 0x9c8b, 0x508e, 0x9c88, 0x5089, 0x9c84,
+  0x5084, 0x9c80, 0x507f, 0x9c7c, 0x507a, 0x9c78, 0x5075, 0x9c74,
+  0x5070, 0x9c70, 0x506c, 0x9c6c, 0x5067, 0x9c68, 0x5062, 0x9c64,
+  0x505d, 0x9c60, 0x5058, 0x9c5c, 0x5053, 0x9c58, 0x504e, 0x9c54,
+  0x5049, 0x9c50, 0x5044, 0x9c4c, 0x503f, 0x9c48, 0x503b, 0x9c44,
+  0x5036, 0x9c40, 0x5031, 0x9c3d, 0x502c, 0x9c39, 0x5027, 0x9c35,
+  0x5022, 0x9c31, 0x501d, 0x9c2d, 0x5018, 0x9c29, 0x5013, 0x9c25,
+  0x500f, 0x9c21, 0x500a, 0x9c1d, 0x5005, 0x9c19, 0x5000, 0x9c15,
+  0x4ffb, 0x9c11, 0x4ff6, 0x9c0d, 0x4ff1, 0x9c09, 0x4fec, 0x9c06,
+  0x4fe7, 0x9c02, 0x4fe2, 0x9bfe, 0x4fdd, 0x9bfa, 0x4fd9, 0x9bf6,
+  0x4fd4, 0x9bf2, 0x4fcf, 0x9bee, 0x4fca, 0x9bea, 0x4fc5, 0x9be6,
+  0x4fc0, 0x9be2, 0x4fbb, 0x9bde, 0x4fb6, 0x9bda, 0x4fb1, 0x9bd7,
+  0x4fac, 0x9bd3, 0x4fa7, 0x9bcf, 0x4fa2, 0x9bcb, 0x4f9e, 0x9bc7,
+  0x4f99, 0x9bc3, 0x4f94, 0x9bbf, 0x4f8f, 0x9bbb, 0x4f8a, 0x9bb7,
+  0x4f85, 0x9bb3, 0x4f80, 0x9baf, 0x4f7b, 0x9bac, 0x4f76, 0x9ba8,
+  0x4f71, 0x9ba4, 0x4f6c, 0x9ba0, 0x4f67, 0x9b9c, 0x4f62, 0x9b98,
+  0x4f5e, 0x9b94, 0x4f59, 0x9b90, 0x4f54, 0x9b8c, 0x4f4f, 0x9b88,
+  0x4f4a, 0x9b85, 0x4f45, 0x9b81, 0x4f40, 0x9b7d, 0x4f3b, 0x9b79,
+  0x4f36, 0x9b75, 0x4f31, 0x9b71, 0x4f2c, 0x9b6d, 0x4f27, 0x9b69,
+  0x4f22, 0x9b65, 0x4f1d, 0x9b62, 0x4f18, 0x9b5e, 0x4f14, 0x9b5a,
+  0x4f0f, 0x9b56, 0x4f0a, 0x9b52, 0x4f05, 0x9b4e, 0x4f00, 0x9b4a,
+  0x4efb, 0x9b46, 0x4ef6, 0x9b43, 0x4ef1, 0x9b3f, 0x4eec, 0x9b3b,
+  0x4ee7, 0x9b37, 0x4ee2, 0x9b33, 0x4edd, 0x9b2f, 0x4ed8, 0x9b2b,
+  0x4ed3, 0x9b27, 0x4ece, 0x9b24, 0x4ec9, 0x9b20, 0x4ec4, 0x9b1c,
+  0x4ebf, 0x9b18, 0x4eba, 0x9b14, 0x4eb6, 0x9b10, 0x4eb1, 0x9b0c,
+  0x4eac, 0x9b09, 0x4ea7, 0x9b05, 0x4ea2, 0x9b01, 0x4e9d, 0x9afd,
+  0x4e98, 0x9af9, 0x4e93, 0x9af5, 0x4e8e, 0x9af1, 0x4e89, 0x9aed,
+  0x4e84, 0x9aea, 0x4e7f, 0x9ae6, 0x4e7a, 0x9ae2, 0x4e75, 0x9ade,
+  0x4e70, 0x9ada, 0x4e6b, 0x9ad6, 0x4e66, 0x9ad3, 0x4e61, 0x9acf,
+  0x4e5c, 0x9acb, 0x4e57, 0x9ac7, 0x4e52, 0x9ac3, 0x4e4d, 0x9abf,
+  0x4e48, 0x9abb, 0x4e43, 0x9ab8, 0x4e3e, 0x9ab4, 0x4e39, 0x9ab0,
+  0x4e34, 0x9aac, 0x4e2f, 0x9aa8, 0x4e2a, 0x9aa4, 0x4e26, 0x9aa1,
+  0x4e21, 0x9a9d, 0x4e1c, 0x9a99, 0x4e17, 0x9a95, 0x4e12, 0x9a91,
+  0x4e0d, 0x9a8d, 0x4e08, 0x9a8a, 0x4e03, 0x9a86, 0x4dfe, 0x9a82,
+  0x4df9, 0x9a7e, 0x4df4, 0x9a7a, 0x4def, 0x9a76, 0x4dea, 0x9a73,
+  0x4de5, 0x9a6f, 0x4de0, 0x9a6b, 0x4ddb, 0x9a67, 0x4dd6, 0x9a63,
+  0x4dd1, 0x9a60, 0x4dcc, 0x9a5c, 0x4dc7, 0x9a58, 0x4dc2, 0x9a54,
+  0x4dbd, 0x9a50, 0x4db8, 0x9a4c, 0x4db3, 0x9a49, 0x4dae, 0x9a45,
+  0x4da9, 0x9a41, 0x4da4, 0x9a3d, 0x4d9f, 0x9a39, 0x4d9a, 0x9a36,
+  0x4d95, 0x9a32, 0x4d90, 0x9a2e, 0x4d8b, 0x9a2a, 0x4d86, 0x9a26,
+  0x4d81, 0x9a23, 0x4d7c, 0x9a1f, 0x4d77, 0x9a1b, 0x4d72, 0x9a17,
+  0x4d6d, 0x9a13, 0x4d68, 0x9a10, 0x4d63, 0x9a0c, 0x4d5e, 0x9a08,
+  0x4d59, 0x9a04, 0x4d54, 0x9a00, 0x4d4f, 0x99fd, 0x4d4a, 0x99f9,
+  0x4d45, 0x99f5, 0x4d40, 0x99f1, 0x4d3b, 0x99ed, 0x4d36, 0x99ea,
+  0x4d31, 0x99e6, 0x4d2c, 0x99e2, 0x4d27, 0x99de, 0x4d22, 0x99da,
+  0x4d1d, 0x99d7, 0x4d18, 0x99d3, 0x4d13, 0x99cf, 0x4d0e, 0x99cb,
+  0x4d09, 0x99c7, 0x4d04, 0x99c4, 0x4cff, 0x99c0, 0x4cfa, 0x99bc,
+  0x4cf5, 0x99b8, 0x4cf0, 0x99b5, 0x4ceb, 0x99b1, 0x4ce6, 0x99ad,
+  0x4ce1, 0x99a9, 0x4cdb, 0x99a5, 0x4cd6, 0x99a2, 0x4cd1, 0x999e,
+  0x4ccc, 0x999a, 0x4cc7, 0x9996, 0x4cc2, 0x9993, 0x4cbd, 0x998f,
+  0x4cb8, 0x998b, 0x4cb3, 0x9987, 0x4cae, 0x9984, 0x4ca9, 0x9980,
+  0x4ca4, 0x997c, 0x4c9f, 0x9978, 0x4c9a, 0x9975, 0x4c95, 0x9971,
+  0x4c90, 0x996d, 0x4c8b, 0x9969, 0x4c86, 0x9965, 0x4c81, 0x9962,
+  0x4c7c, 0x995e, 0x4c77, 0x995a, 0x4c72, 0x9956, 0x4c6d, 0x9953,
+  0x4c68, 0x994f, 0x4c63, 0x994b, 0x4c5e, 0x9947, 0x4c59, 0x9944,
+  0x4c54, 0x9940, 0x4c4f, 0x993c, 0x4c49, 0x9938, 0x4c44, 0x9935,
+  0x4c3f, 0x9931, 0x4c3a, 0x992d, 0x4c35, 0x992a, 0x4c30, 0x9926,
+  0x4c2b, 0x9922, 0x4c26, 0x991e, 0x4c21, 0x991b, 0x4c1c, 0x9917,
+  0x4c17, 0x9913, 0x4c12, 0x990f, 0x4c0d, 0x990c, 0x4c08, 0x9908,
+  0x4c03, 0x9904, 0x4bfe, 0x9900, 0x4bf9, 0x98fd, 0x4bf4, 0x98f9,
+  0x4bef, 0x98f5, 0x4be9, 0x98f2, 0x4be4, 0x98ee, 0x4bdf, 0x98ea,
+  0x4bda, 0x98e6, 0x4bd5, 0x98e3, 0x4bd0, 0x98df, 0x4bcb, 0x98db,
+  0x4bc6, 0x98d7, 0x4bc1, 0x98d4, 0x4bbc, 0x98d0, 0x4bb7, 0x98cc,
+  0x4bb2, 0x98c9, 0x4bad, 0x98c5, 0x4ba8, 0x98c1, 0x4ba3, 0x98bd,
+  0x4b9e, 0x98ba, 0x4b98, 0x98b6, 0x4b93, 0x98b2, 0x4b8e, 0x98af,
+  0x4b89, 0x98ab, 0x4b84, 0x98a7, 0x4b7f, 0x98a3, 0x4b7a, 0x98a0,
+  0x4b75, 0x989c, 0x4b70, 0x9898, 0x4b6b, 0x9895, 0x4b66, 0x9891,
+  0x4b61, 0x988d, 0x4b5c, 0x988a, 0x4b56, 0x9886, 0x4b51, 0x9882,
+  0x4b4c, 0x987e, 0x4b47, 0x987b, 0x4b42, 0x9877, 0x4b3d, 0x9873,
+  0x4b38, 0x9870, 0x4b33, 0x986c, 0x4b2e, 0x9868, 0x4b29, 0x9865,
+  0x4b24, 0x9861, 0x4b1f, 0x985d, 0x4b19, 0x985a, 0x4b14, 0x9856,
+  0x4b0f, 0x9852, 0x4b0a, 0x984e, 0x4b05, 0x984b, 0x4b00, 0x9847,
+  0x4afb, 0x9843, 0x4af6, 0x9840, 0x4af1, 0x983c, 0x4aec, 0x9838,
+  0x4ae7, 0x9835, 0x4ae1, 0x9831, 0x4adc, 0x982d, 0x4ad7, 0x982a,
+  0x4ad2, 0x9826, 0x4acd, 0x9822, 0x4ac8, 0x981f, 0x4ac3, 0x981b,
+  0x4abe, 0x9817, 0x4ab9, 0x9814, 0x4ab4, 0x9810, 0x4aae, 0x980c,
+  0x4aa9, 0x9809, 0x4aa4, 0x9805, 0x4a9f, 0x9801, 0x4a9a, 0x97fe,
+  0x4a95, 0x97fa, 0x4a90, 0x97f6, 0x4a8b, 0x97f3, 0x4a86, 0x97ef,
+  0x4a81, 0x97eb, 0x4a7b, 0x97e8, 0x4a76, 0x97e4, 0x4a71, 0x97e0,
+  0x4a6c, 0x97dd, 0x4a67, 0x97d9, 0x4a62, 0x97d5, 0x4a5d, 0x97d2,
+  0x4a58, 0x97ce, 0x4a52, 0x97cb, 0x4a4d, 0x97c7, 0x4a48, 0x97c3,
+  0x4a43, 0x97c0, 0x4a3e, 0x97bc, 0x4a39, 0x97b8, 0x4a34, 0x97b5,
+  0x4a2f, 0x97b1, 0x4a2a, 0x97ad, 0x4a24, 0x97aa, 0x4a1f, 0x97a6,
+  0x4a1a, 0x97a2, 0x4a15, 0x979f, 0x4a10, 0x979b, 0x4a0b, 0x9798,
+  0x4a06, 0x9794, 0x4a01, 0x9790, 0x49fb, 0x978d, 0x49f6, 0x9789,
+  0x49f1, 0x9785, 0x49ec, 0x9782, 0x49e7, 0x977e, 0x49e2, 0x977a,
+  0x49dd, 0x9777, 0x49d8, 0x9773, 0x49d2, 0x9770, 0x49cd, 0x976c,
+  0x49c8, 0x9768, 0x49c3, 0x9765, 0x49be, 0x9761, 0x49b9, 0x975d,
+  0x49b4, 0x975a, 0x49ae, 0x9756, 0x49a9, 0x9753, 0x49a4, 0x974f,
+  0x499f, 0x974b, 0x499a, 0x9748, 0x4995, 0x9744, 0x4990, 0x9741,
+  0x498a, 0x973d, 0x4985, 0x9739, 0x4980, 0x9736, 0x497b, 0x9732,
+  0x4976, 0x972f, 0x4971, 0x972b, 0x496c, 0x9727, 0x4966, 0x9724,
+  0x4961, 0x9720, 0x495c, 0x971d, 0x4957, 0x9719, 0x4952, 0x9715,
+  0x494d, 0x9712, 0x4948, 0x970e, 0x4942, 0x970b, 0x493d, 0x9707,
+  0x4938, 0x9703, 0x4933, 0x9700, 0x492e, 0x96fc, 0x4929, 0x96f9,
+  0x4923, 0x96f5, 0x491e, 0x96f1, 0x4919, 0x96ee, 0x4914, 0x96ea,
+  0x490f, 0x96e7, 0x490a, 0x96e3, 0x4905, 0x96df, 0x48ff, 0x96dc,
+  0x48fa, 0x96d8, 0x48f5, 0x96d5, 0x48f0, 0x96d1, 0x48eb, 0x96ce,
+  0x48e6, 0x96ca, 0x48e0, 0x96c6, 0x48db, 0x96c3, 0x48d6, 0x96bf,
+  0x48d1, 0x96bc, 0x48cc, 0x96b8, 0x48c7, 0x96b5, 0x48c1, 0x96b1,
+  0x48bc, 0x96ad, 0x48b7, 0x96aa, 0x48b2, 0x96a6, 0x48ad, 0x96a3,
+  0x48a8, 0x969f, 0x48a2, 0x969c, 0x489d, 0x9698, 0x4898, 0x9694,
+  0x4893, 0x9691, 0x488e, 0x968d, 0x4888, 0x968a, 0x4883, 0x9686,
+  0x487e, 0x9683, 0x4879, 0x967f, 0x4874, 0x967b, 0x486f, 0x9678,
+  0x4869, 0x9674, 0x4864, 0x9671, 0x485f, 0x966d, 0x485a, 0x966a,
+  0x4855, 0x9666, 0x484f, 0x9663, 0x484a, 0x965f, 0x4845, 0x965b,
+  0x4840, 0x9658, 0x483b, 0x9654, 0x4836, 0x9651, 0x4830, 0x964d,
+  0x482b, 0x964a, 0x4826, 0x9646, 0x4821, 0x9643, 0x481c, 0x963f,
+  0x4816, 0x963c, 0x4811, 0x9638, 0x480c, 0x9635, 0x4807, 0x9631,
+  0x4802, 0x962d, 0x47fc, 0x962a, 0x47f7, 0x9626, 0x47f2, 0x9623,
+  0x47ed, 0x961f, 0x47e8, 0x961c, 0x47e2, 0x9618, 0x47dd, 0x9615,
+  0x47d8, 0x9611, 0x47d3, 0x960e, 0x47ce, 0x960a, 0x47c8, 0x9607,
+  0x47c3, 0x9603, 0x47be, 0x9600, 0x47b9, 0x95fc, 0x47b4, 0x95f9,
+  0x47ae, 0x95f5, 0x47a9, 0x95f2, 0x47a4, 0x95ee, 0x479f, 0x95ea,
+  0x479a, 0x95e7, 0x4794, 0x95e3, 0x478f, 0x95e0, 0x478a, 0x95dc,
+  0x4785, 0x95d9, 0x4780, 0x95d5, 0x477a, 0x95d2, 0x4775, 0x95ce,
+  0x4770, 0x95cb, 0x476b, 0x95c7, 0x4765, 0x95c4, 0x4760, 0x95c0,
+  0x475b, 0x95bd, 0x4756, 0x95b9, 0x4751, 0x95b6, 0x474b, 0x95b2,
+  0x4746, 0x95af, 0x4741, 0x95ab, 0x473c, 0x95a8, 0x4737, 0x95a4,
+  0x4731, 0x95a1, 0x472c, 0x959d, 0x4727, 0x959a, 0x4722, 0x9596,
+  0x471c, 0x9593, 0x4717, 0x958f, 0x4712, 0x958c, 0x470d, 0x9588,
+  0x4708, 0x9585, 0x4702, 0x9581, 0x46fd, 0x957e, 0x46f8, 0x957a,
+  0x46f3, 0x9577, 0x46ed, 0x9574, 0x46e8, 0x9570, 0x46e3, 0x956d,
+  0x46de, 0x9569, 0x46d8, 0x9566, 0x46d3, 0x9562, 0x46ce, 0x955f,
+  0x46c9, 0x955b, 0x46c4, 0x9558, 0x46be, 0x9554, 0x46b9, 0x9551,
+  0x46b4, 0x954d, 0x46af, 0x954a, 0x46a9, 0x9546, 0x46a4, 0x9543,
+  0x469f, 0x953f, 0x469a, 0x953c, 0x4694, 0x9538, 0x468f, 0x9535,
+  0x468a, 0x9532, 0x4685, 0x952e, 0x467f, 0x952b, 0x467a, 0x9527,
+  0x4675, 0x9524, 0x4670, 0x9520, 0x466a, 0x951d, 0x4665, 0x9519,
+  0x4660, 0x9516, 0x465b, 0x9512, 0x4655, 0x950f, 0x4650, 0x950c,
+  0x464b, 0x9508, 0x4646, 0x9505, 0x4640, 0x9501, 0x463b, 0x94fe,
+  0x4636, 0x94fa, 0x4631, 0x94f7, 0x462b, 0x94f3, 0x4626, 0x94f0,
+  0x4621, 0x94ed, 0x461c, 0x94e9, 0x4616, 0x94e6, 0x4611, 0x94e2,
+  0x460c, 0x94df, 0x4607, 0x94db, 0x4601, 0x94d8, 0x45fc, 0x94d4,
+  0x45f7, 0x94d1, 0x45f2, 0x94ce, 0x45ec, 0x94ca, 0x45e7, 0x94c7,
+  0x45e2, 0x94c3, 0x45dd, 0x94c0, 0x45d7, 0x94bc, 0x45d2, 0x94b9,
+  0x45cd, 0x94b6, 0x45c7, 0x94b2, 0x45c2, 0x94af, 0x45bd, 0x94ab,
+  0x45b8, 0x94a8, 0x45b2, 0x94a4, 0x45ad, 0x94a1, 0x45a8, 0x949e,
+  0x45a3, 0x949a, 0x459d, 0x9497, 0x4598, 0x9493, 0x4593, 0x9490,
+  0x458d, 0x948d, 0x4588, 0x9489, 0x4583, 0x9486, 0x457e, 0x9482,
+  0x4578, 0x947f, 0x4573, 0x947b, 0x456e, 0x9478, 0x4569, 0x9475,
+  0x4563, 0x9471, 0x455e, 0x946e, 0x4559, 0x946a, 0x4553, 0x9467,
+  0x454e, 0x9464, 0x4549, 0x9460, 0x4544, 0x945d, 0x453e, 0x9459,
+  0x4539, 0x9456, 0x4534, 0x9453, 0x452e, 0x944f, 0x4529, 0x944c,
+  0x4524, 0x9448, 0x451f, 0x9445, 0x4519, 0x9442, 0x4514, 0x943e,
+  0x450f, 0x943b, 0x4509, 0x9437, 0x4504, 0x9434, 0x44ff, 0x9431,
+  0x44fa, 0x942d, 0x44f4, 0x942a, 0x44ef, 0x9427, 0x44ea, 0x9423,
+  0x44e4, 0x9420, 0x44df, 0x941c, 0x44da, 0x9419, 0x44d4, 0x9416,
+  0x44cf, 0x9412, 0x44ca, 0x940f, 0x44c5, 0x940b, 0x44bf, 0x9408,
+  0x44ba, 0x9405, 0x44b5, 0x9401, 0x44af, 0x93fe, 0x44aa, 0x93fb,
+  0x44a5, 0x93f7, 0x449f, 0x93f4, 0x449a, 0x93f1, 0x4495, 0x93ed,
+  0x4490, 0x93ea, 0x448a, 0x93e6, 0x4485, 0x93e3, 0x4480, 0x93e0,
+  0x447a, 0x93dc, 0x4475, 0x93d9, 0x4470, 0x93d6, 0x446a, 0x93d2,
+  0x4465, 0x93cf, 0x4460, 0x93cc, 0x445a, 0x93c8, 0x4455, 0x93c5,
+  0x4450, 0x93c1, 0x444b, 0x93be, 0x4445, 0x93bb, 0x4440, 0x93b7,
+  0x443b, 0x93b4, 0x4435, 0x93b1, 0x4430, 0x93ad, 0x442b, 0x93aa,
+  0x4425, 0x93a7, 0x4420, 0x93a3, 0x441b, 0x93a0, 0x4415, 0x939d,
+  0x4410, 0x9399, 0x440b, 0x9396, 0x4405, 0x9393, 0x4400, 0x938f,
+  0x43fb, 0x938c, 0x43f5, 0x9389, 0x43f0, 0x9385, 0x43eb, 0x9382,
+  0x43e5, 0x937f, 0x43e0, 0x937b, 0x43db, 0x9378, 0x43d5, 0x9375,
+  0x43d0, 0x9371, 0x43cb, 0x936e, 0x43c5, 0x936b, 0x43c0, 0x9367,
+  0x43bb, 0x9364, 0x43b5, 0x9361, 0x43b0, 0x935d, 0x43ab, 0x935a,
+  0x43a5, 0x9357, 0x43a0, 0x9353, 0x439b, 0x9350, 0x4395, 0x934d,
+  0x4390, 0x9349, 0x438b, 0x9346, 0x4385, 0x9343, 0x4380, 0x933f,
+  0x437b, 0x933c, 0x4375, 0x9339, 0x4370, 0x9336, 0x436b, 0x9332,
+  0x4365, 0x932f, 0x4360, 0x932c, 0x435b, 0x9328, 0x4355, 0x9325,
+  0x4350, 0x9322, 0x434b, 0x931e, 0x4345, 0x931b, 0x4340, 0x9318,
+  0x433b, 0x9314, 0x4335, 0x9311, 0x4330, 0x930e, 0x432b, 0x930b,
+  0x4325, 0x9307, 0x4320, 0x9304, 0x431b, 0x9301, 0x4315, 0x92fd,
+  0x4310, 0x92fa, 0x430b, 0x92f7, 0x4305, 0x92f4, 0x4300, 0x92f0,
+  0x42fa, 0x92ed, 0x42f5, 0x92ea, 0x42f0, 0x92e6, 0x42ea, 0x92e3,
+  0x42e5, 0x92e0, 0x42e0, 0x92dd, 0x42da, 0x92d9, 0x42d5, 0x92d6,
+  0x42d0, 0x92d3, 0x42ca, 0x92cf, 0x42c5, 0x92cc, 0x42c0, 0x92c9,
+  0x42ba, 0x92c6, 0x42b5, 0x92c2, 0x42af, 0x92bf, 0x42aa, 0x92bc,
+  0x42a5, 0x92b8, 0x429f, 0x92b5, 0x429a, 0x92b2, 0x4295, 0x92af,
+  0x428f, 0x92ab, 0x428a, 0x92a8, 0x4284, 0x92a5, 0x427f, 0x92a2,
+  0x427a, 0x929e, 0x4274, 0x929b, 0x426f, 0x9298, 0x426a, 0x9295,
+  0x4264, 0x9291, 0x425f, 0x928e, 0x425a, 0x928b, 0x4254, 0x9288,
+  0x424f, 0x9284, 0x4249, 0x9281, 0x4244, 0x927e, 0x423f, 0x927b,
+  0x4239, 0x9277, 0x4234, 0x9274, 0x422f, 0x9271, 0x4229, 0x926e,
+  0x4224, 0x926a, 0x421e, 0x9267, 0x4219, 0x9264, 0x4214, 0x9261,
+  0x420e, 0x925d, 0x4209, 0x925a, 0x4203, 0x9257, 0x41fe, 0x9254,
+  0x41f9, 0x9250, 0x41f3, 0x924d, 0x41ee, 0x924a, 0x41e9, 0x9247,
+  0x41e3, 0x9243, 0x41de, 0x9240, 0x41d8, 0x923d, 0x41d3, 0x923a,
+  0x41ce, 0x9236, 0x41c8, 0x9233, 0x41c3, 0x9230, 0x41bd, 0x922d,
+  0x41b8, 0x922a, 0x41b3, 0x9226, 0x41ad, 0x9223, 0x41a8, 0x9220,
+  0x41a2, 0x921d, 0x419d, 0x9219, 0x4198, 0x9216, 0x4192, 0x9213,
+  0x418d, 0x9210, 0x4188, 0x920d, 0x4182, 0x9209, 0x417d, 0x9206,
+  0x4177, 0x9203, 0x4172, 0x9200, 0x416d, 0x91fc, 0x4167, 0x91f9,
+  0x4162, 0x91f6, 0x415c, 0x91f3, 0x4157, 0x91f0, 0x4152, 0x91ec,
+  0x414c, 0x91e9, 0x4147, 0x91e6, 0x4141, 0x91e3, 0x413c, 0x91e0,
+  0x4136, 0x91dc, 0x4131, 0x91d9, 0x412c, 0x91d6, 0x4126, 0x91d3,
+  0x4121, 0x91d0, 0x411b, 0x91cc, 0x4116, 0x91c9, 0x4111, 0x91c6,
+  0x410b, 0x91c3, 0x4106, 0x91c0, 0x4100, 0x91bc, 0x40fb, 0x91b9,
+  0x40f6, 0x91b6, 0x40f0, 0x91b3, 0x40eb, 0x91b0, 0x40e5, 0x91ad,
+  0x40e0, 0x91a9, 0x40da, 0x91a6, 0x40d5, 0x91a3, 0x40d0, 0x91a0,
+  0x40ca, 0x919d, 0x40c5, 0x9199, 0x40bf, 0x9196, 0x40ba, 0x9193,
+  0x40b5, 0x9190, 0x40af, 0x918d, 0x40aa, 0x918a, 0x40a4, 0x9186,
+  0x409f, 0x9183, 0x4099, 0x9180, 0x4094, 0x917d, 0x408f, 0x917a,
+  0x4089, 0x9177, 0x4084, 0x9173, 0x407e, 0x9170, 0x4079, 0x916d,
+  0x4073, 0x916a, 0x406e, 0x9167, 0x4069, 0x9164, 0x4063, 0x9160,
+  0x405e, 0x915d, 0x4058, 0x915a, 0x4053, 0x9157, 0x404d, 0x9154,
+  0x4048, 0x9151, 0x4043, 0x914d, 0x403d, 0x914a, 0x4038, 0x9147,
+  0x4032, 0x9144, 0x402d, 0x9141, 0x4027, 0x913e, 0x4022, 0x913a,
+  0x401d, 0x9137, 0x4017, 0x9134, 0x4012, 0x9131, 0x400c, 0x912e,
+  0x4007, 0x912b, 0x4001, 0x9128, 0x3ffc, 0x9124, 0x3ff6, 0x9121,
+  0x3ff1, 0x911e, 0x3fec, 0x911b, 0x3fe6, 0x9118, 0x3fe1, 0x9115,
+  0x3fdb, 0x9112, 0x3fd6, 0x910f, 0x3fd0, 0x910b, 0x3fcb, 0x9108,
+  0x3fc5, 0x9105, 0x3fc0, 0x9102, 0x3fbb, 0x90ff, 0x3fb5, 0x90fc,
+  0x3fb0, 0x90f9, 0x3faa, 0x90f5, 0x3fa5, 0x90f2, 0x3f9f, 0x90ef,
+  0x3f9a, 0x90ec, 0x3f94, 0x90e9, 0x3f8f, 0x90e6, 0x3f89, 0x90e3,
+  0x3f84, 0x90e0, 0x3f7f, 0x90dd, 0x3f79, 0x90d9, 0x3f74, 0x90d6,
+  0x3f6e, 0x90d3, 0x3f69, 0x90d0, 0x3f63, 0x90cd, 0x3f5e, 0x90ca,
+  0x3f58, 0x90c7, 0x3f53, 0x90c4, 0x3f4d, 0x90c1, 0x3f48, 0x90bd,
+  0x3f43, 0x90ba, 0x3f3d, 0x90b7, 0x3f38, 0x90b4, 0x3f32, 0x90b1,
+  0x3f2d, 0x90ae, 0x3f27, 0x90ab, 0x3f22, 0x90a8, 0x3f1c, 0x90a5,
+  0x3f17, 0x90a1, 0x3f11, 0x909e, 0x3f0c, 0x909b, 0x3f06, 0x9098,
+  0x3f01, 0x9095, 0x3efb, 0x9092, 0x3ef6, 0x908f, 0x3ef1, 0x908c,
+  0x3eeb, 0x9089, 0x3ee6, 0x9086, 0x3ee0, 0x9083, 0x3edb, 0x907f,
+  0x3ed5, 0x907c, 0x3ed0, 0x9079, 0x3eca, 0x9076, 0x3ec5, 0x9073,
+  0x3ebf, 0x9070, 0x3eba, 0x906d, 0x3eb4, 0x906a, 0x3eaf, 0x9067,
+  0x3ea9, 0x9064, 0x3ea4, 0x9061, 0x3e9e, 0x905e, 0x3e99, 0x905b,
+  0x3e93, 0x9057, 0x3e8e, 0x9054, 0x3e88, 0x9051, 0x3e83, 0x904e,
+  0x3e7d, 0x904b, 0x3e78, 0x9048, 0x3e73, 0x9045, 0x3e6d, 0x9042,
+  0x3e68, 0x903f, 0x3e62, 0x903c, 0x3e5d, 0x9039, 0x3e57, 0x9036,
+  0x3e52, 0x9033, 0x3e4c, 0x9030, 0x3e47, 0x902d, 0x3e41, 0x902a,
+  0x3e3c, 0x9026, 0x3e36, 0x9023, 0x3e31, 0x9020, 0x3e2b, 0x901d,
+  0x3e26, 0x901a, 0x3e20, 0x9017, 0x3e1b, 0x9014, 0x3e15, 0x9011,
+  0x3e10, 0x900e, 0x3e0a, 0x900b, 0x3e05, 0x9008, 0x3dff, 0x9005,
+  0x3dfa, 0x9002, 0x3df4, 0x8fff, 0x3def, 0x8ffc, 0x3de9, 0x8ff9,
+  0x3de4, 0x8ff6, 0x3dde, 0x8ff3, 0x3dd9, 0x8ff0, 0x3dd3, 0x8fed,
+  0x3dce, 0x8fea, 0x3dc8, 0x8fe7, 0x3dc3, 0x8fe3, 0x3dbd, 0x8fe0,
+  0x3db8, 0x8fdd, 0x3db2, 0x8fda, 0x3dad, 0x8fd7, 0x3da7, 0x8fd4,
+  0x3da2, 0x8fd1, 0x3d9c, 0x8fce, 0x3d97, 0x8fcb, 0x3d91, 0x8fc8,
+  0x3d8c, 0x8fc5, 0x3d86, 0x8fc2, 0x3d81, 0x8fbf, 0x3d7b, 0x8fbc,
+  0x3d76, 0x8fb9, 0x3d70, 0x8fb6, 0x3d6b, 0x8fb3, 0x3d65, 0x8fb0,
+  0x3d60, 0x8fad, 0x3d5a, 0x8faa, 0x3d55, 0x8fa7, 0x3d4f, 0x8fa4,
+  0x3d49, 0x8fa1, 0x3d44, 0x8f9e, 0x3d3e, 0x8f9b, 0x3d39, 0x8f98,
+  0x3d33, 0x8f95, 0x3d2e, 0x8f92, 0x3d28, 0x8f8f, 0x3d23, 0x8f8c,
+  0x3d1d, 0x8f89, 0x3d18, 0x8f86, 0x3d12, 0x8f83, 0x3d0d, 0x8f80,
+  0x3d07, 0x8f7d, 0x3d02, 0x8f7a, 0x3cfc, 0x8f77, 0x3cf7, 0x8f74,
+  0x3cf1, 0x8f71, 0x3cec, 0x8f6e, 0x3ce6, 0x8f6b, 0x3ce1, 0x8f68,
+  0x3cdb, 0x8f65, 0x3cd6, 0x8f62, 0x3cd0, 0x8f5f, 0x3cca, 0x8f5c,
+  0x3cc5, 0x8f59, 0x3cbf, 0x8f56, 0x3cba, 0x8f53, 0x3cb4, 0x8f50,
+  0x3caf, 0x8f4d, 0x3ca9, 0x8f4a, 0x3ca4, 0x8f47, 0x3c9e, 0x8f44,
+  0x3c99, 0x8f41, 0x3c93, 0x8f3e, 0x3c8e, 0x8f3b, 0x3c88, 0x8f38,
+  0x3c83, 0x8f35, 0x3c7d, 0x8f32, 0x3c77, 0x8f2f, 0x3c72, 0x8f2d,
+  0x3c6c, 0x8f2a, 0x3c67, 0x8f27, 0x3c61, 0x8f24, 0x3c5c, 0x8f21,
+  0x3c56, 0x8f1e, 0x3c51, 0x8f1b, 0x3c4b, 0x8f18, 0x3c46, 0x8f15,
+  0x3c40, 0x8f12, 0x3c3b, 0x8f0f, 0x3c35, 0x8f0c, 0x3c2f, 0x8f09,
+  0x3c2a, 0x8f06, 0x3c24, 0x8f03, 0x3c1f, 0x8f00, 0x3c19, 0x8efd,
+  0x3c14, 0x8efa, 0x3c0e, 0x8ef7, 0x3c09, 0x8ef4, 0x3c03, 0x8ef1,
+  0x3bfd, 0x8eee, 0x3bf8, 0x8eec, 0x3bf2, 0x8ee9, 0x3bed, 0x8ee6,
+  0x3be7, 0x8ee3, 0x3be2, 0x8ee0, 0x3bdc, 0x8edd, 0x3bd7, 0x8eda,
+  0x3bd1, 0x8ed7, 0x3bcc, 0x8ed4, 0x3bc6, 0x8ed1, 0x3bc0, 0x8ece,
+  0x3bbb, 0x8ecb, 0x3bb5, 0x8ec8, 0x3bb0, 0x8ec5, 0x3baa, 0x8ec2,
+  0x3ba5, 0x8ebf, 0x3b9f, 0x8ebd, 0x3b99, 0x8eba, 0x3b94, 0x8eb7,
+  0x3b8e, 0x8eb4, 0x3b89, 0x8eb1, 0x3b83, 0x8eae, 0x3b7e, 0x8eab,
+  0x3b78, 0x8ea8, 0x3b73, 0x8ea5, 0x3b6d, 0x8ea2, 0x3b67, 0x8e9f,
+  0x3b62, 0x8e9c, 0x3b5c, 0x8e99, 0x3b57, 0x8e97, 0x3b51, 0x8e94,
+  0x3b4c, 0x8e91, 0x3b46, 0x8e8e, 0x3b40, 0x8e8b, 0x3b3b, 0x8e88,
+  0x3b35, 0x8e85, 0x3b30, 0x8e82, 0x3b2a, 0x8e7f, 0x3b25, 0x8e7c,
+  0x3b1f, 0x8e7a, 0x3b19, 0x8e77, 0x3b14, 0x8e74, 0x3b0e, 0x8e71,
+  0x3b09, 0x8e6e, 0x3b03, 0x8e6b, 0x3afe, 0x8e68, 0x3af8, 0x8e65,
+  0x3af2, 0x8e62, 0x3aed, 0x8e5f, 0x3ae7, 0x8e5d, 0x3ae2, 0x8e5a,
+  0x3adc, 0x8e57, 0x3ad7, 0x8e54, 0x3ad1, 0x8e51, 0x3acb, 0x8e4e,
+  0x3ac6, 0x8e4b, 0x3ac0, 0x8e48, 0x3abb, 0x8e45, 0x3ab5, 0x8e43,
+  0x3aaf, 0x8e40, 0x3aaa, 0x8e3d, 0x3aa4, 0x8e3a, 0x3a9f, 0x8e37,
+  0x3a99, 0x8e34, 0x3a94, 0x8e31, 0x3a8e, 0x8e2e, 0x3a88, 0x8e2c,
+  0x3a83, 0x8e29, 0x3a7d, 0x8e26, 0x3a78, 0x8e23, 0x3a72, 0x8e20,
+  0x3a6c, 0x8e1d, 0x3a67, 0x8e1a, 0x3a61, 0x8e17, 0x3a5c, 0x8e15,
+  0x3a56, 0x8e12, 0x3a50, 0x8e0f, 0x3a4b, 0x8e0c, 0x3a45, 0x8e09,
+  0x3a40, 0x8e06, 0x3a3a, 0x8e03, 0x3a34, 0x8e01, 0x3a2f, 0x8dfe,
+  0x3a29, 0x8dfb, 0x3a24, 0x8df8, 0x3a1e, 0x8df5, 0x3a19, 0x8df2,
+  0x3a13, 0x8def, 0x3a0d, 0x8ded, 0x3a08, 0x8dea, 0x3a02, 0x8de7,
+  0x39fd, 0x8de4, 0x39f7, 0x8de1, 0x39f1, 0x8dde, 0x39ec, 0x8ddc,
+  0x39e6, 0x8dd9, 0x39e0, 0x8dd6, 0x39db, 0x8dd3, 0x39d5, 0x8dd0,
+  0x39d0, 0x8dcd, 0x39ca, 0x8dca, 0x39c4, 0x8dc8, 0x39bf, 0x8dc5,
+  0x39b9, 0x8dc2, 0x39b4, 0x8dbf, 0x39ae, 0x8dbc, 0x39a8, 0x8db9,
+  0x39a3, 0x8db7, 0x399d, 0x8db4, 0x3998, 0x8db1, 0x3992, 0x8dae,
+  0x398c, 0x8dab, 0x3987, 0x8da9, 0x3981, 0x8da6, 0x397c, 0x8da3,
+  0x3976, 0x8da0, 0x3970, 0x8d9d, 0x396b, 0x8d9a, 0x3965, 0x8d98,
+  0x395f, 0x8d95, 0x395a, 0x8d92, 0x3954, 0x8d8f, 0x394f, 0x8d8c,
+  0x3949, 0x8d8a, 0x3943, 0x8d87, 0x393e, 0x8d84, 0x3938, 0x8d81,
+  0x3932, 0x8d7e, 0x392d, 0x8d7b, 0x3927, 0x8d79, 0x3922, 0x8d76,
+  0x391c, 0x8d73, 0x3916, 0x8d70, 0x3911, 0x8d6d, 0x390b, 0x8d6b,
+  0x3906, 0x8d68, 0x3900, 0x8d65, 0x38fa, 0x8d62, 0x38f5, 0x8d5f,
+  0x38ef, 0x8d5d, 0x38e9, 0x8d5a, 0x38e4, 0x8d57, 0x38de, 0x8d54,
+  0x38d8, 0x8d51, 0x38d3, 0x8d4f, 0x38cd, 0x8d4c, 0x38c8, 0x8d49,
+  0x38c2, 0x8d46, 0x38bc, 0x8d44, 0x38b7, 0x8d41, 0x38b1, 0x8d3e,
+  0x38ab, 0x8d3b, 0x38a6, 0x8d38, 0x38a0, 0x8d36, 0x389b, 0x8d33,
+  0x3895, 0x8d30, 0x388f, 0x8d2d, 0x388a, 0x8d2b, 0x3884, 0x8d28,
+  0x387e, 0x8d25, 0x3879, 0x8d22, 0x3873, 0x8d1f, 0x386d, 0x8d1d,
+  0x3868, 0x8d1a, 0x3862, 0x8d17, 0x385d, 0x8d14, 0x3857, 0x8d12,
+  0x3851, 0x8d0f, 0x384c, 0x8d0c, 0x3846, 0x8d09, 0x3840, 0x8d07,
+  0x383b, 0x8d04, 0x3835, 0x8d01, 0x382f, 0x8cfe, 0x382a, 0x8cfb,
+  0x3824, 0x8cf9, 0x381e, 0x8cf6, 0x3819, 0x8cf3, 0x3813, 0x8cf0,
+  0x380d, 0x8cee, 0x3808, 0x8ceb, 0x3802, 0x8ce8, 0x37fd, 0x8ce5,
+  0x37f7, 0x8ce3, 0x37f1, 0x8ce0, 0x37ec, 0x8cdd, 0x37e6, 0x8cda,
+  0x37e0, 0x8cd8, 0x37db, 0x8cd5, 0x37d5, 0x8cd2, 0x37cf, 0x8cd0,
+  0x37ca, 0x8ccd, 0x37c4, 0x8cca, 0x37be, 0x8cc7, 0x37b9, 0x8cc5,
+  0x37b3, 0x8cc2, 0x37ad, 0x8cbf, 0x37a8, 0x8cbc, 0x37a2, 0x8cba,
+  0x379c, 0x8cb7, 0x3797, 0x8cb4, 0x3791, 0x8cb1, 0x378b, 0x8caf,
+  0x3786, 0x8cac, 0x3780, 0x8ca9, 0x377a, 0x8ca7, 0x3775, 0x8ca4,
+  0x376f, 0x8ca1, 0x3769, 0x8c9e, 0x3764, 0x8c9c, 0x375e, 0x8c99,
+  0x3758, 0x8c96, 0x3753, 0x8c94, 0x374d, 0x8c91, 0x3747, 0x8c8e,
+  0x3742, 0x8c8b, 0x373c, 0x8c89, 0x3736, 0x8c86, 0x3731, 0x8c83,
+  0x372b, 0x8c81, 0x3725, 0x8c7e, 0x3720, 0x8c7b, 0x371a, 0x8c78,
+  0x3714, 0x8c76, 0x370f, 0x8c73, 0x3709, 0x8c70, 0x3703, 0x8c6e,
+  0x36fe, 0x8c6b, 0x36f8, 0x8c68, 0x36f2, 0x8c65, 0x36ed, 0x8c63,
+  0x36e7, 0x8c60, 0x36e1, 0x8c5d, 0x36dc, 0x8c5b, 0x36d6, 0x8c58,
+  0x36d0, 0x8c55, 0x36cb, 0x8c53, 0x36c5, 0x8c50, 0x36bf, 0x8c4d,
+  0x36ba, 0x8c4b, 0x36b4, 0x8c48, 0x36ae, 0x8c45, 0x36a9, 0x8c43,
+  0x36a3, 0x8c40, 0x369d, 0x8c3d, 0x3698, 0x8c3a, 0x3692, 0x8c38,
+  0x368c, 0x8c35, 0x3686, 0x8c32, 0x3681, 0x8c30, 0x367b, 0x8c2d,
+  0x3675, 0x8c2a, 0x3670, 0x8c28, 0x366a, 0x8c25, 0x3664, 0x8c22,
+  0x365f, 0x8c20, 0x3659, 0x8c1d, 0x3653, 0x8c1a, 0x364e, 0x8c18,
+  0x3648, 0x8c15, 0x3642, 0x8c12, 0x363d, 0x8c10, 0x3637, 0x8c0d,
+  0x3631, 0x8c0a, 0x362b, 0x8c08, 0x3626, 0x8c05, 0x3620, 0x8c02,
+  0x361a, 0x8c00, 0x3615, 0x8bfd, 0x360f, 0x8bfa, 0x3609, 0x8bf8,
+  0x3604, 0x8bf5, 0x35fe, 0x8bf3, 0x35f8, 0x8bf0, 0x35f3, 0x8bed,
+  0x35ed, 0x8beb, 0x35e7, 0x8be8, 0x35e1, 0x8be5, 0x35dc, 0x8be3,
+  0x35d6, 0x8be0, 0x35d0, 0x8bdd, 0x35cb, 0x8bdb, 0x35c5, 0x8bd8,
+  0x35bf, 0x8bd5, 0x35ba, 0x8bd3, 0x35b4, 0x8bd0, 0x35ae, 0x8bce,
+  0x35a8, 0x8bcb, 0x35a3, 0x8bc8, 0x359d, 0x8bc6, 0x3597, 0x8bc3,
+  0x3592, 0x8bc0, 0x358c, 0x8bbe, 0x3586, 0x8bbb, 0x3580, 0x8bb8,
+  0x357b, 0x8bb6, 0x3575, 0x8bb3, 0x356f, 0x8bb1, 0x356a, 0x8bae,
+  0x3564, 0x8bab, 0x355e, 0x8ba9, 0x3558, 0x8ba6, 0x3553, 0x8ba4,
+  0x354d, 0x8ba1, 0x3547, 0x8b9e, 0x3542, 0x8b9c, 0x353c, 0x8b99,
+  0x3536, 0x8b96, 0x3530, 0x8b94, 0x352b, 0x8b91, 0x3525, 0x8b8f,
+  0x351f, 0x8b8c, 0x351a, 0x8b89, 0x3514, 0x8b87, 0x350e, 0x8b84,
+  0x3508, 0x8b82, 0x3503, 0x8b7f, 0x34fd, 0x8b7c, 0x34f7, 0x8b7a,
+  0x34f2, 0x8b77, 0x34ec, 0x8b75, 0x34e6, 0x8b72, 0x34e0, 0x8b6f,
+  0x34db, 0x8b6d, 0x34d5, 0x8b6a, 0x34cf, 0x8b68, 0x34ca, 0x8b65,
+  0x34c4, 0x8b62, 0x34be, 0x8b60, 0x34b8, 0x8b5d, 0x34b3, 0x8b5b,
+  0x34ad, 0x8b58, 0x34a7, 0x8b55, 0x34a1, 0x8b53, 0x349c, 0x8b50,
+  0x3496, 0x8b4e, 0x3490, 0x8b4b, 0x348b, 0x8b49, 0x3485, 0x8b46,
+  0x347f, 0x8b43, 0x3479, 0x8b41, 0x3474, 0x8b3e, 0x346e, 0x8b3c,
+  0x3468, 0x8b39, 0x3462, 0x8b37, 0x345d, 0x8b34, 0x3457, 0x8b31,
+  0x3451, 0x8b2f, 0x344b, 0x8b2c, 0x3446, 0x8b2a, 0x3440, 0x8b27,
+  0x343a, 0x8b25, 0x3435, 0x8b22, 0x342f, 0x8b1f, 0x3429, 0x8b1d,
+  0x3423, 0x8b1a, 0x341e, 0x8b18, 0x3418, 0x8b15, 0x3412, 0x8b13,
+  0x340c, 0x8b10, 0x3407, 0x8b0e, 0x3401, 0x8b0b, 0x33fb, 0x8b08,
+  0x33f5, 0x8b06, 0x33f0, 0x8b03, 0x33ea, 0x8b01, 0x33e4, 0x8afe,
+  0x33de, 0x8afc, 0x33d9, 0x8af9, 0x33d3, 0x8af7, 0x33cd, 0x8af4,
+  0x33c7, 0x8af1, 0x33c2, 0x8aef, 0x33bc, 0x8aec, 0x33b6, 0x8aea,
+  0x33b0, 0x8ae7, 0x33ab, 0x8ae5, 0x33a5, 0x8ae2, 0x339f, 0x8ae0,
+  0x3399, 0x8add, 0x3394, 0x8adb, 0x338e, 0x8ad8, 0x3388, 0x8ad6,
+  0x3382, 0x8ad3, 0x337d, 0x8ad1, 0x3377, 0x8ace, 0x3371, 0x8acb,
+  0x336b, 0x8ac9, 0x3366, 0x8ac6, 0x3360, 0x8ac4, 0x335a, 0x8ac1,
+  0x3354, 0x8abf, 0x334f, 0x8abc, 0x3349, 0x8aba, 0x3343, 0x8ab7,
+  0x333d, 0x8ab5, 0x3338, 0x8ab2, 0x3332, 0x8ab0, 0x332c, 0x8aad,
+  0x3326, 0x8aab, 0x3321, 0x8aa8, 0x331b, 0x8aa6, 0x3315, 0x8aa3,
+  0x330f, 0x8aa1, 0x330a, 0x8a9e, 0x3304, 0x8a9c, 0x32fe, 0x8a99,
+  0x32f8, 0x8a97, 0x32f3, 0x8a94, 0x32ed, 0x8a92, 0x32e7, 0x8a8f,
+  0x32e1, 0x8a8d, 0x32db, 0x8a8a, 0x32d6, 0x8a88, 0x32d0, 0x8a85,
+  0x32ca, 0x8a83, 0x32c4, 0x8a80, 0x32bf, 0x8a7e, 0x32b9, 0x8a7b,
+  0x32b3, 0x8a79, 0x32ad, 0x8a76, 0x32a8, 0x8a74, 0x32a2, 0x8a71,
+  0x329c, 0x8a6f, 0x3296, 0x8a6c, 0x3290, 0x8a6a, 0x328b, 0x8a67,
+  0x3285, 0x8a65, 0x327f, 0x8a62, 0x3279, 0x8a60, 0x3274, 0x8a5d,
+  0x326e, 0x8a5b, 0x3268, 0x8a59, 0x3262, 0x8a56, 0x325d, 0x8a54,
+  0x3257, 0x8a51, 0x3251, 0x8a4f, 0x324b, 0x8a4c, 0x3245, 0x8a4a,
+  0x3240, 0x8a47, 0x323a, 0x8a45, 0x3234, 0x8a42, 0x322e, 0x8a40,
+  0x3228, 0x8a3d, 0x3223, 0x8a3b, 0x321d, 0x8a38, 0x3217, 0x8a36,
+  0x3211, 0x8a34, 0x320c, 0x8a31, 0x3206, 0x8a2f, 0x3200, 0x8a2c,
+  0x31fa, 0x8a2a, 0x31f4, 0x8a27, 0x31ef, 0x8a25, 0x31e9, 0x8a22,
+  0x31e3, 0x8a20, 0x31dd, 0x8a1d, 0x31d8, 0x8a1b, 0x31d2, 0x8a19,
+  0x31cc, 0x8a16, 0x31c6, 0x8a14, 0x31c0, 0x8a11, 0x31bb, 0x8a0f,
+  0x31b5, 0x8a0c, 0x31af, 0x8a0a, 0x31a9, 0x8a07, 0x31a3, 0x8a05,
+  0x319e, 0x8a03, 0x3198, 0x8a00, 0x3192, 0x89fe, 0x318c, 0x89fb,
+  0x3186, 0x89f9, 0x3181, 0x89f6, 0x317b, 0x89f4, 0x3175, 0x89f2,
+  0x316f, 0x89ef, 0x3169, 0x89ed, 0x3164, 0x89ea, 0x315e, 0x89e8,
+  0x3158, 0x89e5, 0x3152, 0x89e3, 0x314c, 0x89e1, 0x3147, 0x89de,
+  0x3141, 0x89dc, 0x313b, 0x89d9, 0x3135, 0x89d7, 0x312f, 0x89d5,
+  0x312a, 0x89d2, 0x3124, 0x89d0, 0x311e, 0x89cd, 0x3118, 0x89cb,
+  0x3112, 0x89c8, 0x310d, 0x89c6, 0x3107, 0x89c4, 0x3101, 0x89c1,
+  0x30fb, 0x89bf, 0x30f5, 0x89bc, 0x30f0, 0x89ba, 0x30ea, 0x89b8,
+  0x30e4, 0x89b5, 0x30de, 0x89b3, 0x30d8, 0x89b0, 0x30d3, 0x89ae,
+  0x30cd, 0x89ac, 0x30c7, 0x89a9, 0x30c1, 0x89a7, 0x30bb, 0x89a4,
+  0x30b6, 0x89a2, 0x30b0, 0x89a0, 0x30aa, 0x899d, 0x30a4, 0x899b,
+  0x309e, 0x8998, 0x3099, 0x8996, 0x3093, 0x8994, 0x308d, 0x8991,
+  0x3087, 0x898f, 0x3081, 0x898d, 0x307b, 0x898a, 0x3076, 0x8988,
+  0x3070, 0x8985, 0x306a, 0x8983, 0x3064, 0x8981, 0x305e, 0x897e,
+  0x3059, 0x897c, 0x3053, 0x897a, 0x304d, 0x8977, 0x3047, 0x8975,
+  0x3041, 0x8972, 0x303b, 0x8970, 0x3036, 0x896e, 0x3030, 0x896b,
+  0x302a, 0x8969, 0x3024, 0x8967, 0x301e, 0x8964, 0x3019, 0x8962,
+  0x3013, 0x8960, 0x300d, 0x895d, 0x3007, 0x895b, 0x3001, 0x8958,
+  0x2ffb, 0x8956, 0x2ff6, 0x8954, 0x2ff0, 0x8951, 0x2fea, 0x894f,
+  0x2fe4, 0x894d, 0x2fde, 0x894a, 0x2fd8, 0x8948, 0x2fd3, 0x8946,
+  0x2fcd, 0x8943, 0x2fc7, 0x8941, 0x2fc1, 0x893f, 0x2fbb, 0x893c,
+  0x2fb5, 0x893a, 0x2fb0, 0x8938, 0x2faa, 0x8935, 0x2fa4, 0x8933,
+  0x2f9e, 0x8931, 0x2f98, 0x892e, 0x2f92, 0x892c, 0x2f8d, 0x892a,
+  0x2f87, 0x8927, 0x2f81, 0x8925, 0x2f7b, 0x8923, 0x2f75, 0x8920,
+  0x2f6f, 0x891e, 0x2f6a, 0x891c, 0x2f64, 0x8919, 0x2f5e, 0x8917,
+  0x2f58, 0x8915, 0x2f52, 0x8912, 0x2f4c, 0x8910, 0x2f47, 0x890e,
+  0x2f41, 0x890b, 0x2f3b, 0x8909, 0x2f35, 0x8907, 0x2f2f, 0x8904,
+  0x2f29, 0x8902, 0x2f24, 0x8900, 0x2f1e, 0x88fd, 0x2f18, 0x88fb,
+  0x2f12, 0x88f9, 0x2f0c, 0x88f6, 0x2f06, 0x88f4, 0x2f01, 0x88f2,
+  0x2efb, 0x88f0, 0x2ef5, 0x88ed, 0x2eef, 0x88eb, 0x2ee9, 0x88e9,
+  0x2ee3, 0x88e6, 0x2edd, 0x88e4, 0x2ed8, 0x88e2, 0x2ed2, 0x88df,
+  0x2ecc, 0x88dd, 0x2ec6, 0x88db, 0x2ec0, 0x88d9, 0x2eba, 0x88d6,
+  0x2eb5, 0x88d4, 0x2eaf, 0x88d2, 0x2ea9, 0x88cf, 0x2ea3, 0x88cd,
+  0x2e9d, 0x88cb, 0x2e97, 0x88c8, 0x2e91, 0x88c6, 0x2e8c, 0x88c4,
+  0x2e86, 0x88c2, 0x2e80, 0x88bf, 0x2e7a, 0x88bd, 0x2e74, 0x88bb,
+  0x2e6e, 0x88b9, 0x2e68, 0x88b6, 0x2e63, 0x88b4, 0x2e5d, 0x88b2,
+  0x2e57, 0x88af, 0x2e51, 0x88ad, 0x2e4b, 0x88ab, 0x2e45, 0x88a9,
+  0x2e3f, 0x88a6, 0x2e3a, 0x88a4, 0x2e34, 0x88a2, 0x2e2e, 0x88a0,
+  0x2e28, 0x889d, 0x2e22, 0x889b, 0x2e1c, 0x8899, 0x2e16, 0x8896,
+  0x2e11, 0x8894, 0x2e0b, 0x8892, 0x2e05, 0x8890, 0x2dff, 0x888d,
+  0x2df9, 0x888b, 0x2df3, 0x8889, 0x2ded, 0x8887, 0x2de7, 0x8884,
+  0x2de2, 0x8882, 0x2ddc, 0x8880, 0x2dd6, 0x887e, 0x2dd0, 0x887b,
+  0x2dca, 0x8879, 0x2dc4, 0x8877, 0x2dbe, 0x8875, 0x2db9, 0x8872,
+  0x2db3, 0x8870, 0x2dad, 0x886e, 0x2da7, 0x886c, 0x2da1, 0x8869,
+  0x2d9b, 0x8867, 0x2d95, 0x8865, 0x2d8f, 0x8863, 0x2d8a, 0x8860,
+  0x2d84, 0x885e, 0x2d7e, 0x885c, 0x2d78, 0x885a, 0x2d72, 0x8858,
+  0x2d6c, 0x8855, 0x2d66, 0x8853, 0x2d60, 0x8851, 0x2d5b, 0x884f,
+  0x2d55, 0x884c, 0x2d4f, 0x884a, 0x2d49, 0x8848, 0x2d43, 0x8846,
+  0x2d3d, 0x8844, 0x2d37, 0x8841, 0x2d31, 0x883f, 0x2d2c, 0x883d,
+  0x2d26, 0x883b, 0x2d20, 0x8838, 0x2d1a, 0x8836, 0x2d14, 0x8834,
+  0x2d0e, 0x8832, 0x2d08, 0x8830, 0x2d02, 0x882d, 0x2cfd, 0x882b,
+  0x2cf7, 0x8829, 0x2cf1, 0x8827, 0x2ceb, 0x8825, 0x2ce5, 0x8822,
+  0x2cdf, 0x8820, 0x2cd9, 0x881e, 0x2cd3, 0x881c, 0x2ccd, 0x881a,
+  0x2cc8, 0x8817, 0x2cc2, 0x8815, 0x2cbc, 0x8813, 0x2cb6, 0x8811,
+  0x2cb0, 0x880f, 0x2caa, 0x880c, 0x2ca4, 0x880a, 0x2c9e, 0x8808,
+  0x2c98, 0x8806, 0x2c93, 0x8804, 0x2c8d, 0x8801, 0x2c87, 0x87ff,
+  0x2c81, 0x87fd, 0x2c7b, 0x87fb, 0x2c75, 0x87f9, 0x2c6f, 0x87f6,
+  0x2c69, 0x87f4, 0x2c63, 0x87f2, 0x2c5e, 0x87f0, 0x2c58, 0x87ee,
+  0x2c52, 0x87ec, 0x2c4c, 0x87e9, 0x2c46, 0x87e7, 0x2c40, 0x87e5,
+  0x2c3a, 0x87e3, 0x2c34, 0x87e1, 0x2c2e, 0x87df, 0x2c29, 0x87dc,
+  0x2c23, 0x87da, 0x2c1d, 0x87d8, 0x2c17, 0x87d6, 0x2c11, 0x87d4,
+  0x2c0b, 0x87d2, 0x2c05, 0x87cf, 0x2bff, 0x87cd, 0x2bf9, 0x87cb,
+  0x2bf3, 0x87c9, 0x2bee, 0x87c7, 0x2be8, 0x87c5, 0x2be2, 0x87c2,
+  0x2bdc, 0x87c0, 0x2bd6, 0x87be, 0x2bd0, 0x87bc, 0x2bca, 0x87ba,
+  0x2bc4, 0x87b8, 0x2bbe, 0x87b6, 0x2bb8, 0x87b3, 0x2bb2, 0x87b1,
+  0x2bad, 0x87af, 0x2ba7, 0x87ad, 0x2ba1, 0x87ab, 0x2b9b, 0x87a9,
+  0x2b95, 0x87a7, 0x2b8f, 0x87a4, 0x2b89, 0x87a2, 0x2b83, 0x87a0,
+  0x2b7d, 0x879e, 0x2b77, 0x879c, 0x2b71, 0x879a, 0x2b6c, 0x8798,
+  0x2b66, 0x8795, 0x2b60, 0x8793, 0x2b5a, 0x8791, 0x2b54, 0x878f,
+  0x2b4e, 0x878d, 0x2b48, 0x878b, 0x2b42, 0x8789, 0x2b3c, 0x8787,
+  0x2b36, 0x8784, 0x2b30, 0x8782, 0x2b2b, 0x8780, 0x2b25, 0x877e,
+  0x2b1f, 0x877c, 0x2b19, 0x877a, 0x2b13, 0x8778, 0x2b0d, 0x8776,
+  0x2b07, 0x8774, 0x2b01, 0x8771, 0x2afb, 0x876f, 0x2af5, 0x876d,
+  0x2aef, 0x876b, 0x2ae9, 0x8769, 0x2ae4, 0x8767, 0x2ade, 0x8765,
+  0x2ad8, 0x8763, 0x2ad2, 0x8761, 0x2acc, 0x875e, 0x2ac6, 0x875c,
+  0x2ac0, 0x875a, 0x2aba, 0x8758, 0x2ab4, 0x8756, 0x2aae, 0x8754,
+  0x2aa8, 0x8752, 0x2aa2, 0x8750, 0x2a9c, 0x874e, 0x2a97, 0x874c,
+  0x2a91, 0x874a, 0x2a8b, 0x8747, 0x2a85, 0x8745, 0x2a7f, 0x8743,
+  0x2a79, 0x8741, 0x2a73, 0x873f, 0x2a6d, 0x873d, 0x2a67, 0x873b,
+  0x2a61, 0x8739, 0x2a5b, 0x8737, 0x2a55, 0x8735, 0x2a4f, 0x8733,
+  0x2a49, 0x8731, 0x2a44, 0x872e, 0x2a3e, 0x872c, 0x2a38, 0x872a,
+  0x2a32, 0x8728, 0x2a2c, 0x8726, 0x2a26, 0x8724, 0x2a20, 0x8722,
+  0x2a1a, 0x8720, 0x2a14, 0x871e, 0x2a0e, 0x871c, 0x2a08, 0x871a,
+  0x2a02, 0x8718, 0x29fc, 0x8716, 0x29f6, 0x8714, 0x29f0, 0x8712,
+  0x29eb, 0x870f, 0x29e5, 0x870d, 0x29df, 0x870b, 0x29d9, 0x8709,
+  0x29d3, 0x8707, 0x29cd, 0x8705, 0x29c7, 0x8703, 0x29c1, 0x8701,
+  0x29bb, 0x86ff, 0x29b5, 0x86fd, 0x29af, 0x86fb, 0x29a9, 0x86f9,
+  0x29a3, 0x86f7, 0x299d, 0x86f5, 0x2997, 0x86f3, 0x2991, 0x86f1,
+  0x298b, 0x86ef, 0x2986, 0x86ed, 0x2980, 0x86eb, 0x297a, 0x86e9,
+  0x2974, 0x86e7, 0x296e, 0x86e4, 0x2968, 0x86e2, 0x2962, 0x86e0,
+  0x295c, 0x86de, 0x2956, 0x86dc, 0x2950, 0x86da, 0x294a, 0x86d8,
+  0x2944, 0x86d6, 0x293e, 0x86d4, 0x2938, 0x86d2, 0x2932, 0x86d0,
+  0x292c, 0x86ce, 0x2926, 0x86cc, 0x2920, 0x86ca, 0x291b, 0x86c8,
+  0x2915, 0x86c6, 0x290f, 0x86c4, 0x2909, 0x86c2, 0x2903, 0x86c0,
+  0x28fd, 0x86be, 0x28f7, 0x86bc, 0x28f1, 0x86ba, 0x28eb, 0x86b8,
+  0x28e5, 0x86b6, 0x28df, 0x86b4, 0x28d9, 0x86b2, 0x28d3, 0x86b0,
+  0x28cd, 0x86ae, 0x28c7, 0x86ac, 0x28c1, 0x86aa, 0x28bb, 0x86a8,
+  0x28b5, 0x86a6, 0x28af, 0x86a4, 0x28a9, 0x86a2, 0x28a3, 0x86a0,
+  0x289d, 0x869e, 0x2898, 0x869c, 0x2892, 0x869a, 0x288c, 0x8698,
+  0x2886, 0x8696, 0x2880, 0x8694, 0x287a, 0x8692, 0x2874, 0x8690,
+  0x286e, 0x868e, 0x2868, 0x868c, 0x2862, 0x868a, 0x285c, 0x8688,
+  0x2856, 0x8686, 0x2850, 0x8684, 0x284a, 0x8682, 0x2844, 0x8680,
+  0x283e, 0x867e, 0x2838, 0x867c, 0x2832, 0x867a, 0x282c, 0x8678,
+  0x2826, 0x8676, 0x2820, 0x8674, 0x281a, 0x8672, 0x2814, 0x8670,
+  0x280e, 0x866e, 0x2808, 0x866d, 0x2802, 0x866b, 0x27fc, 0x8669,
+  0x27f6, 0x8667, 0x27f1, 0x8665, 0x27eb, 0x8663, 0x27e5, 0x8661,
+  0x27df, 0x865f, 0x27d9, 0x865d, 0x27d3, 0x865b, 0x27cd, 0x8659,
+  0x27c7, 0x8657, 0x27c1, 0x8655, 0x27bb, 0x8653, 0x27b5, 0x8651,
+  0x27af, 0x864f, 0x27a9, 0x864d, 0x27a3, 0x864b, 0x279d, 0x8649,
+  0x2797, 0x8647, 0x2791, 0x8645, 0x278b, 0x8644, 0x2785, 0x8642,
+  0x277f, 0x8640, 0x2779, 0x863e, 0x2773, 0x863c, 0x276d, 0x863a,
+  0x2767, 0x8638, 0x2761, 0x8636, 0x275b, 0x8634, 0x2755, 0x8632,
+  0x274f, 0x8630, 0x2749, 0x862e, 0x2743, 0x862c, 0x273d, 0x862a,
+  0x2737, 0x8628, 0x2731, 0x8627, 0x272b, 0x8625, 0x2725, 0x8623,
+  0x271f, 0x8621, 0x2719, 0x861f, 0x2713, 0x861d, 0x270d, 0x861b,
+  0x2707, 0x8619, 0x2701, 0x8617, 0x26fb, 0x8615, 0x26f5, 0x8613,
+  0x26ef, 0x8611, 0x26e9, 0x8610, 0x26e4, 0x860e, 0x26de, 0x860c,
+  0x26d8, 0x860a, 0x26d2, 0x8608, 0x26cc, 0x8606, 0x26c6, 0x8604,
+  0x26c0, 0x8602, 0x26ba, 0x8600, 0x26b4, 0x85fe, 0x26ae, 0x85fc,
+  0x26a8, 0x85fb, 0x26a2, 0x85f9, 0x269c, 0x85f7, 0x2696, 0x85f5,
+  0x2690, 0x85f3, 0x268a, 0x85f1, 0x2684, 0x85ef, 0x267e, 0x85ed,
+  0x2678, 0x85eb, 0x2672, 0x85ea, 0x266c, 0x85e8, 0x2666, 0x85e6,
+  0x2660, 0x85e4, 0x265a, 0x85e2, 0x2654, 0x85e0, 0x264e, 0x85de,
+  0x2648, 0x85dc, 0x2642, 0x85da, 0x263c, 0x85d9, 0x2636, 0x85d7,
+  0x2630, 0x85d5, 0x262a, 0x85d3, 0x2624, 0x85d1, 0x261e, 0x85cf,
+  0x2618, 0x85cd, 0x2612, 0x85cb, 0x260c, 0x85ca, 0x2606, 0x85c8,
+  0x2600, 0x85c6, 0x25fa, 0x85c4, 0x25f4, 0x85c2, 0x25ee, 0x85c0,
+  0x25e8, 0x85be, 0x25e2, 0x85bd, 0x25dc, 0x85bb, 0x25d6, 0x85b9,
+  0x25d0, 0x85b7, 0x25ca, 0x85b5, 0x25c4, 0x85b3, 0x25be, 0x85b1,
+  0x25b8, 0x85b0, 0x25b2, 0x85ae, 0x25ac, 0x85ac, 0x25a6, 0x85aa,
+  0x25a0, 0x85a8, 0x259a, 0x85a6, 0x2594, 0x85a4, 0x258e, 0x85a3,
+  0x2588, 0x85a1, 0x2582, 0x859f, 0x257c, 0x859d, 0x2576, 0x859b,
+  0x2570, 0x8599, 0x256a, 0x8598, 0x2564, 0x8596, 0x255e, 0x8594,
+  0x2558, 0x8592, 0x2552, 0x8590, 0x254c, 0x858e, 0x2546, 0x858d,
+  0x2540, 0x858b, 0x253a, 0x8589, 0x2534, 0x8587, 0x252e, 0x8585,
+  0x2528, 0x8583, 0x2522, 0x8582, 0x251c, 0x8580, 0x2516, 0x857e,
+  0x250f, 0x857c, 0x2509, 0x857a, 0x2503, 0x8579, 0x24fd, 0x8577,
+  0x24f7, 0x8575, 0x24f1, 0x8573, 0x24eb, 0x8571, 0x24e5, 0x856f,
+  0x24df, 0x856e, 0x24d9, 0x856c, 0x24d3, 0x856a, 0x24cd, 0x8568,
+  0x24c7, 0x8566, 0x24c1, 0x8565, 0x24bb, 0x8563, 0x24b5, 0x8561,
+  0x24af, 0x855f, 0x24a9, 0x855d, 0x24a3, 0x855c, 0x249d, 0x855a,
+  0x2497, 0x8558, 0x2491, 0x8556, 0x248b, 0x8554, 0x2485, 0x8553,
+  0x247f, 0x8551, 0x2479, 0x854f, 0x2473, 0x854d, 0x246d, 0x854b,
+  0x2467, 0x854a, 0x2461, 0x8548, 0x245b, 0x8546, 0x2455, 0x8544,
+  0x244f, 0x8543, 0x2449, 0x8541, 0x2443, 0x853f, 0x243d, 0x853d,
+  0x2437, 0x853b, 0x2431, 0x853a, 0x242b, 0x8538, 0x2425, 0x8536,
+  0x241f, 0x8534, 0x2419, 0x8533, 0x2413, 0x8531, 0x240d, 0x852f,
+  0x2407, 0x852d, 0x2401, 0x852b, 0x23fa, 0x852a, 0x23f4, 0x8528,
+  0x23ee, 0x8526, 0x23e8, 0x8524, 0x23e2, 0x8523, 0x23dc, 0x8521,
+  0x23d6, 0x851f, 0x23d0, 0x851d, 0x23ca, 0x851c, 0x23c4, 0x851a,
+  0x23be, 0x8518, 0x23b8, 0x8516, 0x23b2, 0x8515, 0x23ac, 0x8513,
+  0x23a6, 0x8511, 0x23a0, 0x850f, 0x239a, 0x850e, 0x2394, 0x850c,
+  0x238e, 0x850a, 0x2388, 0x8508, 0x2382, 0x8507, 0x237c, 0x8505,
+  0x2376, 0x8503, 0x2370, 0x8501, 0x236a, 0x8500, 0x2364, 0x84fe,
+  0x235e, 0x84fc, 0x2358, 0x84fa, 0x2352, 0x84f9, 0x234b, 0x84f7,
+  0x2345, 0x84f5, 0x233f, 0x84f4, 0x2339, 0x84f2, 0x2333, 0x84f0,
+  0x232d, 0x84ee, 0x2327, 0x84ed, 0x2321, 0x84eb, 0x231b, 0x84e9,
+  0x2315, 0x84e7, 0x230f, 0x84e6, 0x2309, 0x84e4, 0x2303, 0x84e2,
+  0x22fd, 0x84e1, 0x22f7, 0x84df, 0x22f1, 0x84dd, 0x22eb, 0x84db,
+  0x22e5, 0x84da, 0x22df, 0x84d8, 0x22d9, 0x84d6, 0x22d3, 0x84d5,
+  0x22cd, 0x84d3, 0x22c7, 0x84d1, 0x22c0, 0x84cf, 0x22ba, 0x84ce,
+  0x22b4, 0x84cc, 0x22ae, 0x84ca, 0x22a8, 0x84c9, 0x22a2, 0x84c7,
+  0x229c, 0x84c5, 0x2296, 0x84c4, 0x2290, 0x84c2, 0x228a, 0x84c0,
+  0x2284, 0x84be, 0x227e, 0x84bd, 0x2278, 0x84bb, 0x2272, 0x84b9,
+  0x226c, 0x84b8, 0x2266, 0x84b6, 0x2260, 0x84b4, 0x225a, 0x84b3,
+  0x2254, 0x84b1, 0x224e, 0x84af, 0x2247, 0x84ae, 0x2241, 0x84ac,
+  0x223b, 0x84aa, 0x2235, 0x84a9, 0x222f, 0x84a7, 0x2229, 0x84a5,
+  0x2223, 0x84a3, 0x221d, 0x84a2, 0x2217, 0x84a0, 0x2211, 0x849e,
+  0x220b, 0x849d, 0x2205, 0x849b, 0x21ff, 0x8499, 0x21f9, 0x8498,
+  0x21f3, 0x8496, 0x21ed, 0x8494, 0x21e7, 0x8493, 0x21e1, 0x8491,
+  0x21da, 0x848f, 0x21d4, 0x848e, 0x21ce, 0x848c, 0x21c8, 0x848a,
+  0x21c2, 0x8489, 0x21bc, 0x8487, 0x21b6, 0x8486, 0x21b0, 0x8484,
+  0x21aa, 0x8482, 0x21a4, 0x8481, 0x219e, 0x847f, 0x2198, 0x847d,
+  0x2192, 0x847c, 0x218c, 0x847a, 0x2186, 0x8478, 0x2180, 0x8477,
+  0x2179, 0x8475, 0x2173, 0x8473, 0x216d, 0x8472, 0x2167, 0x8470,
+  0x2161, 0x846e, 0x215b, 0x846d, 0x2155, 0x846b, 0x214f, 0x846a,
+  0x2149, 0x8468, 0x2143, 0x8466, 0x213d, 0x8465, 0x2137, 0x8463,
+  0x2131, 0x8461, 0x212b, 0x8460, 0x2125, 0x845e, 0x211e, 0x845d,
+  0x2118, 0x845b, 0x2112, 0x8459, 0x210c, 0x8458, 0x2106, 0x8456,
+  0x2100, 0x8454, 0x20fa, 0x8453, 0x20f4, 0x8451, 0x20ee, 0x8450,
+  0x20e8, 0x844e, 0x20e2, 0x844c, 0x20dc, 0x844b, 0x20d6, 0x8449,
+  0x20d0, 0x8447, 0x20c9, 0x8446, 0x20c3, 0x8444, 0x20bd, 0x8443,
+  0x20b7, 0x8441, 0x20b1, 0x843f, 0x20ab, 0x843e, 0x20a5, 0x843c,
+  0x209f, 0x843b, 0x2099, 0x8439, 0x2093, 0x8437, 0x208d, 0x8436,
+  0x2087, 0x8434, 0x2081, 0x8433, 0x207a, 0x8431, 0x2074, 0x842f,
+  0x206e, 0x842e, 0x2068, 0x842c, 0x2062, 0x842b, 0x205c, 0x8429,
+  0x2056, 0x8427, 0x2050, 0x8426, 0x204a, 0x8424, 0x2044, 0x8423,
+  0x203e, 0x8421, 0x2038, 0x8420, 0x2032, 0x841e, 0x202b, 0x841c,
+  0x2025, 0x841b, 0x201f, 0x8419, 0x2019, 0x8418, 0x2013, 0x8416,
+  0x200d, 0x8415, 0x2007, 0x8413, 0x2001, 0x8411, 0x1ffb, 0x8410,
+  0x1ff5, 0x840e, 0x1fef, 0x840d, 0x1fe9, 0x840b, 0x1fe2, 0x840a,
+  0x1fdc, 0x8408, 0x1fd6, 0x8406, 0x1fd0, 0x8405, 0x1fca, 0x8403,
+  0x1fc4, 0x8402, 0x1fbe, 0x8400, 0x1fb8, 0x83ff, 0x1fb2, 0x83fd,
+  0x1fac, 0x83fb, 0x1fa6, 0x83fa, 0x1f9f, 0x83f8, 0x1f99, 0x83f7,
+  0x1f93, 0x83f5, 0x1f8d, 0x83f4, 0x1f87, 0x83f2, 0x1f81, 0x83f1,
+  0x1f7b, 0x83ef, 0x1f75, 0x83ee, 0x1f6f, 0x83ec, 0x1f69, 0x83ea,
+  0x1f63, 0x83e9, 0x1f5d, 0x83e7, 0x1f56, 0x83e6, 0x1f50, 0x83e4,
+  0x1f4a, 0x83e3, 0x1f44, 0x83e1, 0x1f3e, 0x83e0, 0x1f38, 0x83de,
+  0x1f32, 0x83dd, 0x1f2c, 0x83db, 0x1f26, 0x83da, 0x1f20, 0x83d8,
+  0x1f19, 0x83d7, 0x1f13, 0x83d5, 0x1f0d, 0x83d3, 0x1f07, 0x83d2,
+  0x1f01, 0x83d0, 0x1efb, 0x83cf, 0x1ef5, 0x83cd, 0x1eef, 0x83cc,
+  0x1ee9, 0x83ca, 0x1ee3, 0x83c9, 0x1edd, 0x83c7, 0x1ed6, 0x83c6,
+  0x1ed0, 0x83c4, 0x1eca, 0x83c3, 0x1ec4, 0x83c1, 0x1ebe, 0x83c0,
+  0x1eb8, 0x83be, 0x1eb2, 0x83bd, 0x1eac, 0x83bb, 0x1ea6, 0x83ba,
+  0x1ea0, 0x83b8, 0x1e99, 0x83b7, 0x1e93, 0x83b5, 0x1e8d, 0x83b4,
+  0x1e87, 0x83b2, 0x1e81, 0x83b1, 0x1e7b, 0x83af, 0x1e75, 0x83ae,
+  0x1e6f, 0x83ac, 0x1e69, 0x83ab, 0x1e62, 0x83a9, 0x1e5c, 0x83a8,
+  0x1e56, 0x83a6, 0x1e50, 0x83a5, 0x1e4a, 0x83a3, 0x1e44, 0x83a2,
+  0x1e3e, 0x83a0, 0x1e38, 0x839f, 0x1e32, 0x839d, 0x1e2c, 0x839c,
+  0x1e25, 0x839a, 0x1e1f, 0x8399, 0x1e19, 0x8397, 0x1e13, 0x8396,
+  0x1e0d, 0x8394, 0x1e07, 0x8393, 0x1e01, 0x8392, 0x1dfb, 0x8390,
+  0x1df5, 0x838f, 0x1dee, 0x838d, 0x1de8, 0x838c, 0x1de2, 0x838a,
+  0x1ddc, 0x8389, 0x1dd6, 0x8387, 0x1dd0, 0x8386, 0x1dca, 0x8384,
+  0x1dc4, 0x8383, 0x1dbe, 0x8381, 0x1db7, 0x8380, 0x1db1, 0x837e,
+  0x1dab, 0x837d, 0x1da5, 0x837c, 0x1d9f, 0x837a, 0x1d99, 0x8379,
+  0x1d93, 0x8377, 0x1d8d, 0x8376, 0x1d87, 0x8374, 0x1d80, 0x8373,
+  0x1d7a, 0x8371, 0x1d74, 0x8370, 0x1d6e, 0x836f, 0x1d68, 0x836d,
+  0x1d62, 0x836c, 0x1d5c, 0x836a, 0x1d56, 0x8369, 0x1d50, 0x8367,
+  0x1d49, 0x8366, 0x1d43, 0x8364, 0x1d3d, 0x8363, 0x1d37, 0x8362,
+  0x1d31, 0x8360, 0x1d2b, 0x835f, 0x1d25, 0x835d, 0x1d1f, 0x835c,
+  0x1d18, 0x835a, 0x1d12, 0x8359, 0x1d0c, 0x8358, 0x1d06, 0x8356,
+  0x1d00, 0x8355, 0x1cfa, 0x8353, 0x1cf4, 0x8352, 0x1cee, 0x8350,
+  0x1ce8, 0x834f, 0x1ce1, 0x834e, 0x1cdb, 0x834c, 0x1cd5, 0x834b,
+  0x1ccf, 0x8349, 0x1cc9, 0x8348, 0x1cc3, 0x8347, 0x1cbd, 0x8345,
+  0x1cb7, 0x8344, 0x1cb0, 0x8342, 0x1caa, 0x8341, 0x1ca4, 0x833f,
+  0x1c9e, 0x833e, 0x1c98, 0x833d, 0x1c92, 0x833b, 0x1c8c, 0x833a,
+  0x1c86, 0x8338, 0x1c7f, 0x8337, 0x1c79, 0x8336, 0x1c73, 0x8334,
+  0x1c6d, 0x8333, 0x1c67, 0x8331, 0x1c61, 0x8330, 0x1c5b, 0x832f,
+  0x1c55, 0x832d, 0x1c4e, 0x832c, 0x1c48, 0x832b, 0x1c42, 0x8329,
+  0x1c3c, 0x8328, 0x1c36, 0x8326, 0x1c30, 0x8325, 0x1c2a, 0x8324,
+  0x1c24, 0x8322, 0x1c1d, 0x8321, 0x1c17, 0x831f, 0x1c11, 0x831e,
+  0x1c0b, 0x831d, 0x1c05, 0x831b, 0x1bff, 0x831a, 0x1bf9, 0x8319,
+  0x1bf2, 0x8317, 0x1bec, 0x8316, 0x1be6, 0x8314, 0x1be0, 0x8313,
+  0x1bda, 0x8312, 0x1bd4, 0x8310, 0x1bce, 0x830f, 0x1bc8, 0x830e,
+  0x1bc1, 0x830c, 0x1bbb, 0x830b, 0x1bb5, 0x830a, 0x1baf, 0x8308,
+  0x1ba9, 0x8307, 0x1ba3, 0x8305, 0x1b9d, 0x8304, 0x1b96, 0x8303,
+  0x1b90, 0x8301, 0x1b8a, 0x8300, 0x1b84, 0x82ff, 0x1b7e, 0x82fd,
+  0x1b78, 0x82fc, 0x1b72, 0x82fb, 0x1b6c, 0x82f9, 0x1b65, 0x82f8,
+  0x1b5f, 0x82f7, 0x1b59, 0x82f5, 0x1b53, 0x82f4, 0x1b4d, 0x82f3,
+  0x1b47, 0x82f1, 0x1b41, 0x82f0, 0x1b3a, 0x82ef, 0x1b34, 0x82ed,
+  0x1b2e, 0x82ec, 0x1b28, 0x82eb, 0x1b22, 0x82e9, 0x1b1c, 0x82e8,
+  0x1b16, 0x82e7, 0x1b0f, 0x82e5, 0x1b09, 0x82e4, 0x1b03, 0x82e3,
+  0x1afd, 0x82e1, 0x1af7, 0x82e0, 0x1af1, 0x82df, 0x1aeb, 0x82dd,
+  0x1ae4, 0x82dc, 0x1ade, 0x82db, 0x1ad8, 0x82d9, 0x1ad2, 0x82d8,
+  0x1acc, 0x82d7, 0x1ac6, 0x82d5, 0x1ac0, 0x82d4, 0x1ab9, 0x82d3,
+  0x1ab3, 0x82d1, 0x1aad, 0x82d0, 0x1aa7, 0x82cf, 0x1aa1, 0x82ce,
+  0x1a9b, 0x82cc, 0x1a95, 0x82cb, 0x1a8e, 0x82ca, 0x1a88, 0x82c8,
+  0x1a82, 0x82c7, 0x1a7c, 0x82c6, 0x1a76, 0x82c4, 0x1a70, 0x82c3,
+  0x1a6a, 0x82c2, 0x1a63, 0x82c1, 0x1a5d, 0x82bf, 0x1a57, 0x82be,
+  0x1a51, 0x82bd, 0x1a4b, 0x82bb, 0x1a45, 0x82ba, 0x1a3e, 0x82b9,
+  0x1a38, 0x82b7, 0x1a32, 0x82b6, 0x1a2c, 0x82b5, 0x1a26, 0x82b4,
+  0x1a20, 0x82b2, 0x1a1a, 0x82b1, 0x1a13, 0x82b0, 0x1a0d, 0x82ae,
+  0x1a07, 0x82ad, 0x1a01, 0x82ac, 0x19fb, 0x82ab, 0x19f5, 0x82a9,
+  0x19ef, 0x82a8, 0x19e8, 0x82a7, 0x19e2, 0x82a6, 0x19dc, 0x82a4,
+  0x19d6, 0x82a3, 0x19d0, 0x82a2, 0x19ca, 0x82a0, 0x19c3, 0x829f,
+  0x19bd, 0x829e, 0x19b7, 0x829d, 0x19b1, 0x829b, 0x19ab, 0x829a,
+  0x19a5, 0x8299, 0x199f, 0x8298, 0x1998, 0x8296, 0x1992, 0x8295,
+  0x198c, 0x8294, 0x1986, 0x8293, 0x1980, 0x8291, 0x197a, 0x8290,
+  0x1973, 0x828f, 0x196d, 0x828e, 0x1967, 0x828c, 0x1961, 0x828b,
+  0x195b, 0x828a, 0x1955, 0x8289, 0x194e, 0x8287, 0x1948, 0x8286,
+  0x1942, 0x8285, 0x193c, 0x8284, 0x1936, 0x8282, 0x1930, 0x8281,
+  0x192a, 0x8280, 0x1923, 0x827f, 0x191d, 0x827e, 0x1917, 0x827c,
+  0x1911, 0x827b, 0x190b, 0x827a, 0x1905, 0x8279, 0x18fe, 0x8277,
+  0x18f8, 0x8276, 0x18f2, 0x8275, 0x18ec, 0x8274, 0x18e6, 0x8272,
+  0x18e0, 0x8271, 0x18d9, 0x8270, 0x18d3, 0x826f, 0x18cd, 0x826e,
+  0x18c7, 0x826c, 0x18c1, 0x826b, 0x18bb, 0x826a, 0x18b4, 0x8269,
+  0x18ae, 0x8268, 0x18a8, 0x8266, 0x18a2, 0x8265, 0x189c, 0x8264,
+  0x1896, 0x8263, 0x188f, 0x8261, 0x1889, 0x8260, 0x1883, 0x825f,
+  0x187d, 0x825e, 0x1877, 0x825d, 0x1871, 0x825b, 0x186a, 0x825a,
+  0x1864, 0x8259, 0x185e, 0x8258, 0x1858, 0x8257, 0x1852, 0x8255,
+  0x184c, 0x8254, 0x1845, 0x8253, 0x183f, 0x8252, 0x1839, 0x8251,
+  0x1833, 0x8250, 0x182d, 0x824e, 0x1827, 0x824d, 0x1820, 0x824c,
+  0x181a, 0x824b, 0x1814, 0x824a, 0x180e, 0x8248, 0x1808, 0x8247,
+  0x1802, 0x8246, 0x17fb, 0x8245, 0x17f5, 0x8244, 0x17ef, 0x8243,
+  0x17e9, 0x8241, 0x17e3, 0x8240, 0x17dd, 0x823f, 0x17d6, 0x823e,
+  0x17d0, 0x823d, 0x17ca, 0x823b, 0x17c4, 0x823a, 0x17be, 0x8239,
+  0x17b7, 0x8238, 0x17b1, 0x8237, 0x17ab, 0x8236, 0x17a5, 0x8234,
+  0x179f, 0x8233, 0x1799, 0x8232, 0x1792, 0x8231, 0x178c, 0x8230,
+  0x1786, 0x822f, 0x1780, 0x822e, 0x177a, 0x822c, 0x1774, 0x822b,
+  0x176d, 0x822a, 0x1767, 0x8229, 0x1761, 0x8228, 0x175b, 0x8227,
+  0x1755, 0x8226, 0x174e, 0x8224, 0x1748, 0x8223, 0x1742, 0x8222,
+  0x173c, 0x8221, 0x1736, 0x8220, 0x1730, 0x821f, 0x1729, 0x821e,
+  0x1723, 0x821c, 0x171d, 0x821b, 0x1717, 0x821a, 0x1711, 0x8219,
+  0x170a, 0x8218, 0x1704, 0x8217, 0x16fe, 0x8216, 0x16f8, 0x8214,
+  0x16f2, 0x8213, 0x16ec, 0x8212, 0x16e5, 0x8211, 0x16df, 0x8210,
+  0x16d9, 0x820f, 0x16d3, 0x820e, 0x16cd, 0x820d, 0x16c6, 0x820b,
+  0x16c0, 0x820a, 0x16ba, 0x8209, 0x16b4, 0x8208, 0x16ae, 0x8207,
+  0x16a8, 0x8206, 0x16a1, 0x8205, 0x169b, 0x8204, 0x1695, 0x8203,
+  0x168f, 0x8201, 0x1689, 0x8200, 0x1682, 0x81ff, 0x167c, 0x81fe,
+  0x1676, 0x81fd, 0x1670, 0x81fc, 0x166a, 0x81fb, 0x1664, 0x81fa,
+  0x165d, 0x81f9, 0x1657, 0x81f8, 0x1651, 0x81f6, 0x164b, 0x81f5,
+  0x1645, 0x81f4, 0x163e, 0x81f3, 0x1638, 0x81f2, 0x1632, 0x81f1,
+  0x162c, 0x81f0, 0x1626, 0x81ef, 0x161f, 0x81ee, 0x1619, 0x81ed,
+  0x1613, 0x81ec, 0x160d, 0x81ea, 0x1607, 0x81e9, 0x1601, 0x81e8,
+  0x15fa, 0x81e7, 0x15f4, 0x81e6, 0x15ee, 0x81e5, 0x15e8, 0x81e4,
+  0x15e2, 0x81e3, 0x15db, 0x81e2, 0x15d5, 0x81e1, 0x15cf, 0x81e0,
+  0x15c9, 0x81df, 0x15c3, 0x81de, 0x15bc, 0x81dc, 0x15b6, 0x81db,
+  0x15b0, 0x81da, 0x15aa, 0x81d9, 0x15a4, 0x81d8, 0x159d, 0x81d7,
+  0x1597, 0x81d6, 0x1591, 0x81d5, 0x158b, 0x81d4, 0x1585, 0x81d3,
+  0x157f, 0x81d2, 0x1578, 0x81d1, 0x1572, 0x81d0, 0x156c, 0x81cf,
+  0x1566, 0x81ce, 0x1560, 0x81cd, 0x1559, 0x81cc, 0x1553, 0x81cb,
+  0x154d, 0x81c9, 0x1547, 0x81c8, 0x1541, 0x81c7, 0x153a, 0x81c6,
+  0x1534, 0x81c5, 0x152e, 0x81c4, 0x1528, 0x81c3, 0x1522, 0x81c2,
+  0x151b, 0x81c1, 0x1515, 0x81c0, 0x150f, 0x81bf, 0x1509, 0x81be,
+  0x1503, 0x81bd, 0x14fc, 0x81bc, 0x14f6, 0x81bb, 0x14f0, 0x81ba,
+  0x14ea, 0x81b9, 0x14e4, 0x81b8, 0x14dd, 0x81b7, 0x14d7, 0x81b6,
+  0x14d1, 0x81b5, 0x14cb, 0x81b4, 0x14c5, 0x81b3, 0x14be, 0x81b2,
+  0x14b8, 0x81b1, 0x14b2, 0x81b0, 0x14ac, 0x81af, 0x14a6, 0x81ae,
+  0x149f, 0x81ad, 0x1499, 0x81ac, 0x1493, 0x81ab, 0x148d, 0x81aa,
+  0x1487, 0x81a9, 0x1480, 0x81a8, 0x147a, 0x81a7, 0x1474, 0x81a6,
+  0x146e, 0x81a5, 0x1468, 0x81a4, 0x1461, 0x81a3, 0x145b, 0x81a2,
+  0x1455, 0x81a1, 0x144f, 0x81a0, 0x1449, 0x819f, 0x1442, 0x819e,
+  0x143c, 0x819d, 0x1436, 0x819c, 0x1430, 0x819b, 0x142a, 0x819a,
+  0x1423, 0x8199, 0x141d, 0x8198, 0x1417, 0x8197, 0x1411, 0x8196,
+  0x140b, 0x8195, 0x1404, 0x8194, 0x13fe, 0x8193, 0x13f8, 0x8192,
+  0x13f2, 0x8191, 0x13eb, 0x8190, 0x13e5, 0x818f, 0x13df, 0x818e,
+  0x13d9, 0x818d, 0x13d3, 0x818c, 0x13cc, 0x818b, 0x13c6, 0x818a,
+  0x13c0, 0x8189, 0x13ba, 0x8188, 0x13b4, 0x8187, 0x13ad, 0x8186,
+  0x13a7, 0x8185, 0x13a1, 0x8184, 0x139b, 0x8183, 0x1395, 0x8182,
+  0x138e, 0x8181, 0x1388, 0x8180, 0x1382, 0x817f, 0x137c, 0x817e,
+  0x1376, 0x817d, 0x136f, 0x817c, 0x1369, 0x817c, 0x1363, 0x817b,
+  0x135d, 0x817a, 0x1356, 0x8179, 0x1350, 0x8178, 0x134a, 0x8177,
+  0x1344, 0x8176, 0x133e, 0x8175, 0x1337, 0x8174, 0x1331, 0x8173,
+  0x132b, 0x8172, 0x1325, 0x8171, 0x131f, 0x8170, 0x1318, 0x816f,
+  0x1312, 0x816e, 0x130c, 0x816d, 0x1306, 0x816c, 0x12ff, 0x816c,
+  0x12f9, 0x816b, 0x12f3, 0x816a, 0x12ed, 0x8169, 0x12e7, 0x8168,
+  0x12e0, 0x8167, 0x12da, 0x8166, 0x12d4, 0x8165, 0x12ce, 0x8164,
+  0x12c8, 0x8163, 0x12c1, 0x8162, 0x12bb, 0x8161, 0x12b5, 0x8160,
+  0x12af, 0x815f, 0x12a8, 0x815f, 0x12a2, 0x815e, 0x129c, 0x815d,
+  0x1296, 0x815c, 0x1290, 0x815b, 0x1289, 0x815a, 0x1283, 0x8159,
+  0x127d, 0x8158, 0x1277, 0x8157, 0x1271, 0x8156, 0x126a, 0x8155,
+  0x1264, 0x8155, 0x125e, 0x8154, 0x1258, 0x8153, 0x1251, 0x8152,
+  0x124b, 0x8151, 0x1245, 0x8150, 0x123f, 0x814f, 0x1239, 0x814e,
+  0x1232, 0x814d, 0x122c, 0x814c, 0x1226, 0x814c, 0x1220, 0x814b,
+  0x1219, 0x814a, 0x1213, 0x8149, 0x120d, 0x8148, 0x1207, 0x8147,
+  0x1201, 0x8146, 0x11fa, 0x8145, 0x11f4, 0x8145, 0x11ee, 0x8144,
+  0x11e8, 0x8143, 0x11e1, 0x8142, 0x11db, 0x8141, 0x11d5, 0x8140,
+  0x11cf, 0x813f, 0x11c9, 0x813e, 0x11c2, 0x813d, 0x11bc, 0x813d,
+  0x11b6, 0x813c, 0x11b0, 0x813b, 0x11a9, 0x813a, 0x11a3, 0x8139,
+  0x119d, 0x8138, 0x1197, 0x8137, 0x1191, 0x8137, 0x118a, 0x8136,
+  0x1184, 0x8135, 0x117e, 0x8134, 0x1178, 0x8133, 0x1171, 0x8132,
+  0x116b, 0x8131, 0x1165, 0x8131, 0x115f, 0x8130, 0x1159, 0x812f,
+  0x1152, 0x812e, 0x114c, 0x812d, 0x1146, 0x812c, 0x1140, 0x812b,
+  0x1139, 0x812b, 0x1133, 0x812a, 0x112d, 0x8129, 0x1127, 0x8128,
+  0x1121, 0x8127, 0x111a, 0x8126, 0x1114, 0x8126, 0x110e, 0x8125,
+  0x1108, 0x8124, 0x1101, 0x8123, 0x10fb, 0x8122, 0x10f5, 0x8121,
+  0x10ef, 0x8121, 0x10e8, 0x8120, 0x10e2, 0x811f, 0x10dc, 0x811e,
+  0x10d6, 0x811d, 0x10d0, 0x811c, 0x10c9, 0x811c, 0x10c3, 0x811b,
+  0x10bd, 0x811a, 0x10b7, 0x8119, 0x10b0, 0x8118, 0x10aa, 0x8117,
+  0x10a4, 0x8117, 0x109e, 0x8116, 0x1098, 0x8115, 0x1091, 0x8114,
+  0x108b, 0x8113, 0x1085, 0x8113, 0x107f, 0x8112, 0x1078, 0x8111,
+  0x1072, 0x8110, 0x106c, 0x810f, 0x1066, 0x810f, 0x105f, 0x810e,
+  0x1059, 0x810d, 0x1053, 0x810c, 0x104d, 0x810b, 0x1047, 0x810b,
+  0x1040, 0x810a, 0x103a, 0x8109, 0x1034, 0x8108, 0x102e, 0x8107,
+  0x1027, 0x8107, 0x1021, 0x8106, 0x101b, 0x8105, 0x1015, 0x8104,
+  0x100e, 0x8103, 0x1008, 0x8103, 0x1002, 0x8102, 0xffc, 0x8101,
+  0xff5, 0x8100, 0xfef, 0x80ff, 0xfe9, 0x80ff, 0xfe3, 0x80fe,
+  0xfdd, 0x80fd, 0xfd6, 0x80fc, 0xfd0, 0x80fc, 0xfca, 0x80fb,
+  0xfc4, 0x80fa, 0xfbd, 0x80f9, 0xfb7, 0x80f8, 0xfb1, 0x80f8,
+  0xfab, 0x80f7, 0xfa4, 0x80f6, 0xf9e, 0x80f5, 0xf98, 0x80f5,
+  0xf92, 0x80f4, 0xf8b, 0x80f3, 0xf85, 0x80f2, 0xf7f, 0x80f2,
+  0xf79, 0x80f1, 0xf73, 0x80f0, 0xf6c, 0x80ef, 0xf66, 0x80ef,
+  0xf60, 0x80ee, 0xf5a, 0x80ed, 0xf53, 0x80ec, 0xf4d, 0x80ec,
+  0xf47, 0x80eb, 0xf41, 0x80ea, 0xf3a, 0x80e9, 0xf34, 0x80e9,
+  0xf2e, 0x80e8, 0xf28, 0x80e7, 0xf21, 0x80e6, 0xf1b, 0x80e6,
+  0xf15, 0x80e5, 0xf0f, 0x80e4, 0xf08, 0x80e3, 0xf02, 0x80e3,
+  0xefc, 0x80e2, 0xef6, 0x80e1, 0xef0, 0x80e0, 0xee9, 0x80e0,
+  0xee3, 0x80df, 0xedd, 0x80de, 0xed7, 0x80dd, 0xed0, 0x80dd,
+  0xeca, 0x80dc, 0xec4, 0x80db, 0xebe, 0x80db, 0xeb7, 0x80da,
+  0xeb1, 0x80d9, 0xeab, 0x80d8, 0xea5, 0x80d8, 0xe9e, 0x80d7,
+  0xe98, 0x80d6, 0xe92, 0x80d6, 0xe8c, 0x80d5, 0xe85, 0x80d4,
+  0xe7f, 0x80d3, 0xe79, 0x80d3, 0xe73, 0x80d2, 0xe6c, 0x80d1,
+  0xe66, 0x80d1, 0xe60, 0x80d0, 0xe5a, 0x80cf, 0xe53, 0x80ce,
+  0xe4d, 0x80ce, 0xe47, 0x80cd, 0xe41, 0x80cc, 0xe3a, 0x80cc,
+  0xe34, 0x80cb, 0xe2e, 0x80ca, 0xe28, 0x80ca, 0xe22, 0x80c9,
+  0xe1b, 0x80c8, 0xe15, 0x80c7, 0xe0f, 0x80c7, 0xe09, 0x80c6,
+  0xe02, 0x80c5, 0xdfc, 0x80c5, 0xdf6, 0x80c4, 0xdf0, 0x80c3,
+  0xde9, 0x80c3, 0xde3, 0x80c2, 0xddd, 0x80c1, 0xdd7, 0x80c1,
+  0xdd0, 0x80c0, 0xdca, 0x80bf, 0xdc4, 0x80bf, 0xdbe, 0x80be,
+  0xdb7, 0x80bd, 0xdb1, 0x80bd, 0xdab, 0x80bc, 0xda5, 0x80bb,
+  0xd9e, 0x80bb, 0xd98, 0x80ba, 0xd92, 0x80b9, 0xd8c, 0x80b9,
+  0xd85, 0x80b8, 0xd7f, 0x80b7, 0xd79, 0x80b7, 0xd73, 0x80b6,
+  0xd6c, 0x80b5, 0xd66, 0x80b5, 0xd60, 0x80b4, 0xd5a, 0x80b3,
+  0xd53, 0x80b3, 0xd4d, 0x80b2, 0xd47, 0x80b1, 0xd41, 0x80b1,
+  0xd3a, 0x80b0, 0xd34, 0x80af, 0xd2e, 0x80af, 0xd28, 0x80ae,
+  0xd21, 0x80ad, 0xd1b, 0x80ad, 0xd15, 0x80ac, 0xd0f, 0x80ab,
+  0xd08, 0x80ab, 0xd02, 0x80aa, 0xcfc, 0x80aa, 0xcf6, 0x80a9,
+  0xcef, 0x80a8, 0xce9, 0x80a8, 0xce3, 0x80a7, 0xcdd, 0x80a6,
+  0xcd6, 0x80a6, 0xcd0, 0x80a5, 0xcca, 0x80a5, 0xcc4, 0x80a4,
+  0xcbd, 0x80a3, 0xcb7, 0x80a3, 0xcb1, 0x80a2, 0xcab, 0x80a1,
+  0xca4, 0x80a1, 0xc9e, 0x80a0, 0xc98, 0x80a0, 0xc92, 0x809f,
+  0xc8b, 0x809e, 0xc85, 0x809e, 0xc7f, 0x809d, 0xc79, 0x809c,
+  0xc72, 0x809c, 0xc6c, 0x809b, 0xc66, 0x809b, 0xc60, 0x809a,
+  0xc59, 0x8099, 0xc53, 0x8099, 0xc4d, 0x8098, 0xc47, 0x8098,
+  0xc40, 0x8097, 0xc3a, 0x8096, 0xc34, 0x8096, 0xc2e, 0x8095,
+  0xc27, 0x8095, 0xc21, 0x8094, 0xc1b, 0x8093, 0xc14, 0x8093,
+  0xc0e, 0x8092, 0xc08, 0x8092, 0xc02, 0x8091, 0xbfb, 0x8090,
+  0xbf5, 0x8090, 0xbef, 0x808f, 0xbe9, 0x808f, 0xbe2, 0x808e,
+  0xbdc, 0x808e, 0xbd6, 0x808d, 0xbd0, 0x808c, 0xbc9, 0x808c,
+  0xbc3, 0x808b, 0xbbd, 0x808b, 0xbb7, 0x808a, 0xbb0, 0x8089,
+  0xbaa, 0x8089, 0xba4, 0x8088, 0xb9e, 0x8088, 0xb97, 0x8087,
+  0xb91, 0x8087, 0xb8b, 0x8086, 0xb85, 0x8085, 0xb7e, 0x8085,
+  0xb78, 0x8084, 0xb72, 0x8084, 0xb6c, 0x8083, 0xb65, 0x8083,
+  0xb5f, 0x8082, 0xb59, 0x8082, 0xb53, 0x8081, 0xb4c, 0x8080,
+  0xb46, 0x8080, 0xb40, 0x807f, 0xb3a, 0x807f, 0xb33, 0x807e,
+  0xb2d, 0x807e, 0xb27, 0x807d, 0xb20, 0x807d, 0xb1a, 0x807c,
+  0xb14, 0x807b, 0xb0e, 0x807b, 0xb07, 0x807a, 0xb01, 0x807a,
+  0xafb, 0x8079, 0xaf5, 0x8079, 0xaee, 0x8078, 0xae8, 0x8078,
+  0xae2, 0x8077, 0xadc, 0x8077, 0xad5, 0x8076, 0xacf, 0x8076,
+  0xac9, 0x8075, 0xac3, 0x8075, 0xabc, 0x8074, 0xab6, 0x8073,
+  0xab0, 0x8073, 0xaaa, 0x8072, 0xaa3, 0x8072, 0xa9d, 0x8071,
+  0xa97, 0x8071, 0xa90, 0x8070, 0xa8a, 0x8070, 0xa84, 0x806f,
+  0xa7e, 0x806f, 0xa77, 0x806e, 0xa71, 0x806e, 0xa6b, 0x806d,
+  0xa65, 0x806d, 0xa5e, 0x806c, 0xa58, 0x806c, 0xa52, 0x806b,
+  0xa4c, 0x806b, 0xa45, 0x806a, 0xa3f, 0x806a, 0xa39, 0x8069,
+  0xa33, 0x8069, 0xa2c, 0x8068, 0xa26, 0x8068, 0xa20, 0x8067,
+  0xa19, 0x8067, 0xa13, 0x8066, 0xa0d, 0x8066, 0xa07, 0x8065,
+  0xa00, 0x8065, 0x9fa, 0x8064, 0x9f4, 0x8064, 0x9ee, 0x8063,
+  0x9e7, 0x8063, 0x9e1, 0x8062, 0x9db, 0x8062, 0x9d5, 0x8061,
+  0x9ce, 0x8061, 0x9c8, 0x8060, 0x9c2, 0x8060, 0x9bc, 0x805f,
+  0x9b5, 0x805f, 0x9af, 0x805e, 0x9a9, 0x805e, 0x9a2, 0x805d,
+  0x99c, 0x805d, 0x996, 0x805d, 0x990, 0x805c, 0x989, 0x805c,
+  0x983, 0x805b, 0x97d, 0x805b, 0x977, 0x805a, 0x970, 0x805a,
+  0x96a, 0x8059, 0x964, 0x8059, 0x95e, 0x8058, 0x957, 0x8058,
+  0x951, 0x8057, 0x94b, 0x8057, 0x944, 0x8057, 0x93e, 0x8056,
+  0x938, 0x8056, 0x932, 0x8055, 0x92b, 0x8055, 0x925, 0x8054,
+  0x91f, 0x8054, 0x919, 0x8053, 0x912, 0x8053, 0x90c, 0x8052,
+  0x906, 0x8052, 0x900, 0x8052, 0x8f9, 0x8051, 0x8f3, 0x8051,
+  0x8ed, 0x8050, 0x8e6, 0x8050, 0x8e0, 0x804f, 0x8da, 0x804f,
+  0x8d4, 0x804f, 0x8cd, 0x804e, 0x8c7, 0x804e, 0x8c1, 0x804d,
+  0x8bb, 0x804d, 0x8b4, 0x804c, 0x8ae, 0x804c, 0x8a8, 0x804c,
+  0x8a2, 0x804b, 0x89b, 0x804b, 0x895, 0x804a, 0x88f, 0x804a,
+  0x888, 0x8049, 0x882, 0x8049, 0x87c, 0x8049, 0x876, 0x8048,
+  0x86f, 0x8048, 0x869, 0x8047, 0x863, 0x8047, 0x85d, 0x8047,
+  0x856, 0x8046, 0x850, 0x8046, 0x84a, 0x8045, 0x843, 0x8045,
+  0x83d, 0x8044, 0x837, 0x8044, 0x831, 0x8044, 0x82a, 0x8043,
+  0x824, 0x8043, 0x81e, 0x8042, 0x818, 0x8042, 0x811, 0x8042,
+  0x80b, 0x8041, 0x805, 0x8041, 0x7fe, 0x8040, 0x7f8, 0x8040,
+  0x7f2, 0x8040, 0x7ec, 0x803f, 0x7e5, 0x803f, 0x7df, 0x803f,
+  0x7d9, 0x803e, 0x7d3, 0x803e, 0x7cc, 0x803d, 0x7c6, 0x803d,
+  0x7c0, 0x803d, 0x7ba, 0x803c, 0x7b3, 0x803c, 0x7ad, 0x803b,
+  0x7a7, 0x803b, 0x7a0, 0x803b, 0x79a, 0x803a, 0x794, 0x803a,
+  0x78e, 0x803a, 0x787, 0x8039, 0x781, 0x8039, 0x77b, 0x8039,
+  0x775, 0x8038, 0x76e, 0x8038, 0x768, 0x8037, 0x762, 0x8037,
+  0x75b, 0x8037, 0x755, 0x8036, 0x74f, 0x8036, 0x749, 0x8036,
+  0x742, 0x8035, 0x73c, 0x8035, 0x736, 0x8035, 0x730, 0x8034,
+  0x729, 0x8034, 0x723, 0x8033, 0x71d, 0x8033, 0x716, 0x8033,
+  0x710, 0x8032, 0x70a, 0x8032, 0x704, 0x8032, 0x6fd, 0x8031,
+  0x6f7, 0x8031, 0x6f1, 0x8031, 0x6ea, 0x8030, 0x6e4, 0x8030,
+  0x6de, 0x8030, 0x6d8, 0x802f, 0x6d1, 0x802f, 0x6cb, 0x802f,
+  0x6c5, 0x802e, 0x6bf, 0x802e, 0x6b8, 0x802e, 0x6b2, 0x802d,
+  0x6ac, 0x802d, 0x6a5, 0x802d, 0x69f, 0x802c, 0x699, 0x802c,
+  0x693, 0x802c, 0x68c, 0x802b, 0x686, 0x802b, 0x680, 0x802b,
+  0x67a, 0x802a, 0x673, 0x802a, 0x66d, 0x802a, 0x667, 0x802a,
+  0x660, 0x8029, 0x65a, 0x8029, 0x654, 0x8029, 0x64e, 0x8028,
+  0x647, 0x8028, 0x641, 0x8028, 0x63b, 0x8027, 0x635, 0x8027,
+  0x62e, 0x8027, 0x628, 0x8026, 0x622, 0x8026, 0x61b, 0x8026,
+  0x615, 0x8026, 0x60f, 0x8025, 0x609, 0x8025, 0x602, 0x8025,
+  0x5fc, 0x8024, 0x5f6, 0x8024, 0x5ef, 0x8024, 0x5e9, 0x8023,
+  0x5e3, 0x8023, 0x5dd, 0x8023, 0x5d6, 0x8023, 0x5d0, 0x8022,
+  0x5ca, 0x8022, 0x5c4, 0x8022, 0x5bd, 0x8021, 0x5b7, 0x8021,
+  0x5b1, 0x8021, 0x5aa, 0x8021, 0x5a4, 0x8020, 0x59e, 0x8020,
+  0x598, 0x8020, 0x591, 0x8020, 0x58b, 0x801f, 0x585, 0x801f,
+  0x57f, 0x801f, 0x578, 0x801e, 0x572, 0x801e, 0x56c, 0x801e,
+  0x565, 0x801e, 0x55f, 0x801d, 0x559, 0x801d, 0x553, 0x801d,
+  0x54c, 0x801d, 0x546, 0x801c, 0x540, 0x801c, 0x539, 0x801c,
+  0x533, 0x801c, 0x52d, 0x801b, 0x527, 0x801b, 0x520, 0x801b,
+  0x51a, 0x801b, 0x514, 0x801a, 0x50d, 0x801a, 0x507, 0x801a,
+  0x501, 0x801a, 0x4fb, 0x8019, 0x4f4, 0x8019, 0x4ee, 0x8019,
+  0x4e8, 0x8019, 0x4e2, 0x8018, 0x4db, 0x8018, 0x4d5, 0x8018,
+  0x4cf, 0x8018, 0x4c8, 0x8017, 0x4c2, 0x8017, 0x4bc, 0x8017,
+  0x4b6, 0x8017, 0x4af, 0x8016, 0x4a9, 0x8016, 0x4a3, 0x8016,
+  0x49c, 0x8016, 0x496, 0x8016, 0x490, 0x8015, 0x48a, 0x8015,
+  0x483, 0x8015, 0x47d, 0x8015, 0x477, 0x8014, 0x471, 0x8014,
+  0x46a, 0x8014, 0x464, 0x8014, 0x45e, 0x8014, 0x457, 0x8013,
+  0x451, 0x8013, 0x44b, 0x8013, 0x445, 0x8013, 0x43e, 0x8013,
+  0x438, 0x8012, 0x432, 0x8012, 0x42b, 0x8012, 0x425, 0x8012,
+  0x41f, 0x8012, 0x419, 0x8011, 0x412, 0x8011, 0x40c, 0x8011,
+  0x406, 0x8011, 0x3ff, 0x8011, 0x3f9, 0x8010, 0x3f3, 0x8010,
+  0x3ed, 0x8010, 0x3e6, 0x8010, 0x3e0, 0x8010, 0x3da, 0x800f,
+  0x3d4, 0x800f, 0x3cd, 0x800f, 0x3c7, 0x800f, 0x3c1, 0x800f,
+  0x3ba, 0x800e, 0x3b4, 0x800e, 0x3ae, 0x800e, 0x3a8, 0x800e,
+  0x3a1, 0x800e, 0x39b, 0x800e, 0x395, 0x800d, 0x38e, 0x800d,
+  0x388, 0x800d, 0x382, 0x800d, 0x37c, 0x800d, 0x375, 0x800c,
+  0x36f, 0x800c, 0x369, 0x800c, 0x362, 0x800c, 0x35c, 0x800c,
+  0x356, 0x800c, 0x350, 0x800b, 0x349, 0x800b, 0x343, 0x800b,
+  0x33d, 0x800b, 0x337, 0x800b, 0x330, 0x800b, 0x32a, 0x800b,
+  0x324, 0x800a, 0x31d, 0x800a, 0x317, 0x800a, 0x311, 0x800a,
+  0x30b, 0x800a, 0x304, 0x800a, 0x2fe, 0x8009, 0x2f8, 0x8009,
+  0x2f1, 0x8009, 0x2eb, 0x8009, 0x2e5, 0x8009, 0x2df, 0x8009,
+  0x2d8, 0x8009, 0x2d2, 0x8008, 0x2cc, 0x8008, 0x2c5, 0x8008,
+  0x2bf, 0x8008, 0x2b9, 0x8008, 0x2b3, 0x8008, 0x2ac, 0x8008,
+  0x2a6, 0x8008, 0x2a0, 0x8007, 0x299, 0x8007, 0x293, 0x8007,
+  0x28d, 0x8007, 0x287, 0x8007, 0x280, 0x8007, 0x27a, 0x8007,
+  0x274, 0x8007, 0x26d, 0x8006, 0x267, 0x8006, 0x261, 0x8006,
+  0x25b, 0x8006, 0x254, 0x8006, 0x24e, 0x8006, 0x248, 0x8006,
+  0x242, 0x8006, 0x23b, 0x8005, 0x235, 0x8005, 0x22f, 0x8005,
+  0x228, 0x8005, 0x222, 0x8005, 0x21c, 0x8005, 0x216, 0x8005,
+  0x20f, 0x8005, 0x209, 0x8005, 0x203, 0x8005, 0x1fc, 0x8004,
+  0x1f6, 0x8004, 0x1f0, 0x8004, 0x1ea, 0x8004, 0x1e3, 0x8004,
+  0x1dd, 0x8004, 0x1d7, 0x8004, 0x1d0, 0x8004, 0x1ca, 0x8004,
+  0x1c4, 0x8004, 0x1be, 0x8004, 0x1b7, 0x8003, 0x1b1, 0x8003,
+  0x1ab, 0x8003, 0x1a4, 0x8003, 0x19e, 0x8003, 0x198, 0x8003,
+  0x192, 0x8003, 0x18b, 0x8003, 0x185, 0x8003, 0x17f, 0x8003,
+  0x178, 0x8003, 0x172, 0x8003, 0x16c, 0x8003, 0x166, 0x8002,
+  0x15f, 0x8002, 0x159, 0x8002, 0x153, 0x8002, 0x14d, 0x8002,
+  0x146, 0x8002, 0x140, 0x8002, 0x13a, 0x8002, 0x133, 0x8002,
+  0x12d, 0x8002, 0x127, 0x8002, 0x121, 0x8002, 0x11a, 0x8002,
+  0x114, 0x8002, 0x10e, 0x8002, 0x107, 0x8002, 0x101, 0x8002,
+  0xfb, 0x8001, 0xf5, 0x8001, 0xee, 0x8001, 0xe8, 0x8001,
+  0xe2, 0x8001, 0xdb, 0x8001, 0xd5, 0x8001, 0xcf, 0x8001,
+  0xc9, 0x8001, 0xc2, 0x8001, 0xbc, 0x8001, 0xb6, 0x8001,
+  0xaf, 0x8001, 0xa9, 0x8001, 0xa3, 0x8001, 0x9d, 0x8001,
+  0x96, 0x8001, 0x90, 0x8001, 0x8a, 0x8001, 0x83, 0x8001,
+  0x7d, 0x8001, 0x77, 0x8001, 0x71, 0x8001, 0x6a, 0x8001,
+  0x64, 0x8001, 0x5e, 0x8001, 0x57, 0x8001, 0x51, 0x8001,
+  0x4b, 0x8001, 0x45, 0x8001, 0x3e, 0x8001, 0x38, 0x8001,
+  0x32, 0x8001, 0x2b, 0x8001, 0x25, 0x8001, 0x1f, 0x8001,
+  0x19, 0x8001, 0x12, 0x8001, 0xc, 0x8001, 0x6, 0x8001,
+};
+
+
+/**    
+* \par    
+* cosFactor tables are generated using the formula : <pre> cos_factors[n] = 2 * cos((2n+1)*pi/(4*N)) </pre>    
+* \par    
+* C command to generate the table    
+* <pre>    
+* for(i = 0; i< N; i++)    
+* {    
+*   cos_factors[i]= 2 * cos((2*i+1)*c/2);    
+* } </pre>    
+* \par    
+* where <code>N</code> is the number of factors to generate and <code>c</code> is <code>pi/(2*N)</code>    
+* \par    
+* Then converted to q15 format by multiplying with 2^31 and saturated if required.    
+    
+*/
+
+static const q15_t ALIGN4 cos_factorsQ15_128[128] = {
+  0x7fff, 0x7ffa, 0x7ff0, 0x7fe1, 0x7fce, 0x7fb5, 0x7f97, 0x7f75,
+  0x7f4d, 0x7f21, 0x7ef0, 0x7eba, 0x7e7f, 0x7e3f, 0x7dfa, 0x7db0,
+  0x7d62, 0x7d0f, 0x7cb7, 0x7c5a, 0x7bf8, 0x7b92, 0x7b26, 0x7ab6,
+  0x7a42, 0x79c8, 0x794a, 0x78c7, 0x7840, 0x77b4, 0x7723, 0x768e,
+  0x75f4, 0x7555, 0x74b2, 0x740b, 0x735f, 0x72af, 0x71fa, 0x7141,
+  0x7083, 0x6fc1, 0x6efb, 0x6e30, 0x6d62, 0x6c8f, 0x6bb8, 0x6adc,
+  0x69fd, 0x6919, 0x6832, 0x6746, 0x6657, 0x6563, 0x646c, 0x6371,
+  0x6271, 0x616f, 0x6068, 0x5f5e, 0x5e50, 0x5d3e, 0x5c29, 0x5b10,
+  0x59f3, 0x58d4, 0x57b0, 0x568a, 0x5560, 0x5433, 0x5302, 0x51ce,
+  0x5097, 0x4f5e, 0x4e21, 0x4ce1, 0x4b9e, 0x4a58, 0x490f, 0x47c3,
+  0x4675, 0x4524, 0x43d0, 0x427a, 0x4121, 0x3fc5, 0x3e68, 0x3d07,
+  0x3ba5, 0x3a40, 0x38d8, 0x376f, 0x3604, 0x3496, 0x3326, 0x31b5,
+  0x3041, 0x2ecc, 0x2d55, 0x2bdc, 0x2a61, 0x28e5, 0x2767, 0x25e8,
+  0x2467, 0x22e5, 0x2161, 0x1fdc, 0x1e56, 0x1ccf, 0x1b47, 0x19bd,
+  0x1833, 0x16a8, 0x151b, 0x138e, 0x1201, 0x1072, 0xee3, 0xd53,
+  0xbc3, 0xa33, 0x8a2, 0x710, 0x57f, 0x3ed, 0x25b, 0xc9
+};
+
+static const q15_t ALIGN4 cos_factorsQ15_512[512] = {
+  0x7fff, 0x7fff, 0x7fff, 0x7ffe, 0x7ffc, 0x7ffb, 0x7ff9, 0x7ff7,
+  0x7ff4, 0x7ff2, 0x7fee, 0x7feb, 0x7fe7, 0x7fe3, 0x7fdf, 0x7fda,
+  0x7fd6, 0x7fd0, 0x7fcb, 0x7fc5, 0x7fbf, 0x7fb8, 0x7fb1, 0x7faa,
+  0x7fa3, 0x7f9b, 0x7f93, 0x7f8b, 0x7f82, 0x7f79, 0x7f70, 0x7f67,
+  0x7f5d, 0x7f53, 0x7f48, 0x7f3d, 0x7f32, 0x7f27, 0x7f1b, 0x7f0f,
+  0x7f03, 0x7ef6, 0x7ee9, 0x7edc, 0x7ecf, 0x7ec1, 0x7eb3, 0x7ea4,
+  0x7e95, 0x7e86, 0x7e77, 0x7e67, 0x7e57, 0x7e47, 0x7e37, 0x7e26,
+  0x7e14, 0x7e03, 0x7df1, 0x7ddf, 0x7dcd, 0x7dba, 0x7da7, 0x7d94,
+  0x7d80, 0x7d6c, 0x7d58, 0x7d43, 0x7d2f, 0x7d19, 0x7d04, 0x7cee,
+  0x7cd8, 0x7cc2, 0x7cab, 0x7c94, 0x7c7d, 0x7c66, 0x7c4e, 0x7c36,
+  0x7c1d, 0x7c05, 0x7beb, 0x7bd2, 0x7bb9, 0x7b9f, 0x7b84, 0x7b6a,
+  0x7b4f, 0x7b34, 0x7b19, 0x7afd, 0x7ae1, 0x7ac5, 0x7aa8, 0x7a8b,
+  0x7a6e, 0x7a50, 0x7a33, 0x7a15, 0x79f6, 0x79d8, 0x79b9, 0x7999,
+  0x797a, 0x795a, 0x793a, 0x7919, 0x78f9, 0x78d8, 0x78b6, 0x7895,
+  0x7873, 0x7851, 0x782e, 0x780c, 0x77e9, 0x77c5, 0x77a2, 0x777e,
+  0x775a, 0x7735, 0x7710, 0x76eb, 0x76c6, 0x76a0, 0x767b, 0x7654,
+  0x762e, 0x7607, 0x75e0, 0x75b9, 0x7591, 0x7569, 0x7541, 0x7519,
+  0x74f0, 0x74c7, 0x749e, 0x7474, 0x744a, 0x7420, 0x73f6, 0x73cb,
+  0x73a0, 0x7375, 0x7349, 0x731d, 0x72f1, 0x72c5, 0x7298, 0x726b,
+  0x723e, 0x7211, 0x71e3, 0x71b5, 0x7186, 0x7158, 0x7129, 0x70fa,
+  0x70cb, 0x709b, 0x706b, 0x703b, 0x700a, 0x6fda, 0x6fa9, 0x6f77,
+  0x6f46, 0x6f14, 0x6ee2, 0x6eaf, 0x6e7d, 0x6e4a, 0x6e17, 0x6de3,
+  0x6db0, 0x6d7c, 0x6d48, 0x6d13, 0x6cde, 0x6ca9, 0x6c74, 0x6c3f,
+  0x6c09, 0x6bd3, 0x6b9c, 0x6b66, 0x6b2f, 0x6af8, 0x6ac1, 0x6a89,
+  0x6a51, 0x6a19, 0x69e1, 0x69a8, 0x696f, 0x6936, 0x68fd, 0x68c3,
+  0x6889, 0x684f, 0x6815, 0x67da, 0x679f, 0x6764, 0x6729, 0x66ed,
+  0x66b1, 0x6675, 0x6639, 0x65fc, 0x65bf, 0x6582, 0x6545, 0x6507,
+  0x64c9, 0x648b, 0x644d, 0x640e, 0x63cf, 0x6390, 0x6351, 0x6311,
+  0x62d2, 0x6292, 0x6251, 0x6211, 0x61d0, 0x618f, 0x614e, 0x610d,
+  0x60cb, 0x6089, 0x6047, 0x6004, 0x5fc2, 0x5f7f, 0x5f3c, 0x5ef9,
+  0x5eb5, 0x5e71, 0x5e2d, 0x5de9, 0x5da5, 0x5d60, 0x5d1b, 0x5cd6,
+  0x5c91, 0x5c4b, 0x5c06, 0x5bc0, 0x5b79, 0x5b33, 0x5aec, 0x5aa5,
+  0x5a5e, 0x5a17, 0x59d0, 0x5988, 0x5940, 0x58f8, 0x58af, 0x5867,
+  0x581e, 0x57d5, 0x578c, 0x5742, 0x56f9, 0x56af, 0x5665, 0x561a,
+  0x55d0, 0x5585, 0x553a, 0x54ef, 0x54a4, 0x5458, 0x540d, 0x53c1,
+  0x5375, 0x5328, 0x52dc, 0x528f, 0x5242, 0x51f5, 0x51a8, 0x515a,
+  0x510c, 0x50bf, 0x5070, 0x5022, 0x4fd4, 0x4f85, 0x4f36, 0x4ee7,
+  0x4e98, 0x4e48, 0x4df9, 0x4da9, 0x4d59, 0x4d09, 0x4cb8, 0x4c68,
+  0x4c17, 0x4bc6, 0x4b75, 0x4b24, 0x4ad2, 0x4a81, 0x4a2f, 0x49dd,
+  0x498a, 0x4938, 0x48e6, 0x4893, 0x4840, 0x47ed, 0x479a, 0x4746,
+  0x46f3, 0x469f, 0x464b, 0x45f7, 0x45a3, 0x454e, 0x44fa, 0x44a5,
+  0x4450, 0x43fb, 0x43a5, 0x4350, 0x42fa, 0x42a5, 0x424f, 0x41f9,
+  0x41a2, 0x414c, 0x40f6, 0x409f, 0x4048, 0x3ff1, 0x3f9a, 0x3f43,
+  0x3eeb, 0x3e93, 0x3e3c, 0x3de4, 0x3d8c, 0x3d33, 0x3cdb, 0x3c83,
+  0x3c2a, 0x3bd1, 0x3b78, 0x3b1f, 0x3ac6, 0x3a6c, 0x3a13, 0x39b9,
+  0x395f, 0x3906, 0x38ab, 0x3851, 0x37f7, 0x379c, 0x3742, 0x36e7,
+  0x368c, 0x3631, 0x35d6, 0x357b, 0x351f, 0x34c4, 0x3468, 0x340c,
+  0x33b0, 0x3354, 0x32f8, 0x329c, 0x3240, 0x31e3, 0x3186, 0x312a,
+  0x30cd, 0x3070, 0x3013, 0x2fb5, 0x2f58, 0x2efb, 0x2e9d, 0x2e3f,
+  0x2de2, 0x2d84, 0x2d26, 0x2cc8, 0x2c69, 0x2c0b, 0x2bad, 0x2b4e,
+  0x2aef, 0x2a91, 0x2a32, 0x29d3, 0x2974, 0x2915, 0x28b5, 0x2856,
+  0x27f6, 0x2797, 0x2737, 0x26d8, 0x2678, 0x2618, 0x25b8, 0x2558,
+  0x24f7, 0x2497, 0x2437, 0x23d6, 0x2376, 0x2315, 0x22b4, 0x2254,
+  0x21f3, 0x2192, 0x2131, 0x20d0, 0x206e, 0x200d, 0x1fac, 0x1f4a,
+  0x1ee9, 0x1e87, 0x1e25, 0x1dc4, 0x1d62, 0x1d00, 0x1c9e, 0x1c3c,
+  0x1bda, 0x1b78, 0x1b16, 0x1ab3, 0x1a51, 0x19ef, 0x198c, 0x192a,
+  0x18c7, 0x1864, 0x1802, 0x179f, 0x173c, 0x16d9, 0x1676, 0x1613,
+  0x15b0, 0x154d, 0x14ea, 0x1487, 0x1423, 0x13c0, 0x135d, 0x12f9,
+  0x1296, 0x1232, 0x11cf, 0x116b, 0x1108, 0x10a4, 0x1040, 0xfdd,
+  0xf79, 0xf15, 0xeb1, 0xe4d, 0xde9, 0xd85, 0xd21, 0xcbd,
+  0xc59, 0xbf5, 0xb91, 0xb2d, 0xac9, 0xa65, 0xa00, 0x99c,
+  0x938, 0x8d4, 0x86f, 0x80b, 0x7a7, 0x742, 0x6de, 0x67a,
+  0x615, 0x5b1, 0x54c, 0x4e8, 0x483, 0x41f, 0x3ba, 0x356,
+  0x2f1, 0x28d, 0x228, 0x1c4, 0x15f, 0xfb, 0x96, 0x32,
+};
+
+static const q15_t ALIGN4 cos_factorsQ15_2048[2048] = {
+  0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,
+  0x7fff, 0x7fff, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffd, 0x7ffd,
+  0x7ffd, 0x7ffd, 0x7ffc, 0x7ffc, 0x7ffb, 0x7ffb, 0x7ffb, 0x7ffa,
+  0x7ffa, 0x7ff9, 0x7ff9, 0x7ff8, 0x7ff8, 0x7ff7, 0x7ff7, 0x7ff6,
+  0x7ff5, 0x7ff5, 0x7ff4, 0x7ff3, 0x7ff3, 0x7ff2, 0x7ff1, 0x7ff0,
+  0x7ff0, 0x7fef, 0x7fee, 0x7fed, 0x7fec, 0x7fec, 0x7feb, 0x7fea,
+  0x7fe9, 0x7fe8, 0x7fe7, 0x7fe6, 0x7fe5, 0x7fe4, 0x7fe3, 0x7fe2,
+  0x7fe1, 0x7fe0, 0x7fdf, 0x7fdd, 0x7fdc, 0x7fdb, 0x7fda, 0x7fd9,
+  0x7fd7, 0x7fd6, 0x7fd5, 0x7fd4, 0x7fd2, 0x7fd1, 0x7fd0, 0x7fce,
+  0x7fcd, 0x7fcb, 0x7fca, 0x7fc9, 0x7fc7, 0x7fc6, 0x7fc4, 0x7fc3,
+  0x7fc1, 0x7fc0, 0x7fbe, 0x7fbc, 0x7fbb, 0x7fb9, 0x7fb7, 0x7fb6,
+  0x7fb4, 0x7fb2, 0x7fb1, 0x7faf, 0x7fad, 0x7fab, 0x7fa9, 0x7fa8,
+  0x7fa6, 0x7fa4, 0x7fa2, 0x7fa0, 0x7f9e, 0x7f9c, 0x7f9a, 0x7f98,
+  0x7f96, 0x7f94, 0x7f92, 0x7f90, 0x7f8e, 0x7f8c, 0x7f8a, 0x7f88,
+  0x7f86, 0x7f83, 0x7f81, 0x7f7f, 0x7f7d, 0x7f7b, 0x7f78, 0x7f76,
+  0x7f74, 0x7f71, 0x7f6f, 0x7f6d, 0x7f6a, 0x7f68, 0x7f65, 0x7f63,
+  0x7f60, 0x7f5e, 0x7f5b, 0x7f59, 0x7f56, 0x7f54, 0x7f51, 0x7f4f,
+  0x7f4c, 0x7f49, 0x7f47, 0x7f44, 0x7f41, 0x7f3f, 0x7f3c, 0x7f39,
+  0x7f36, 0x7f34, 0x7f31, 0x7f2e, 0x7f2b, 0x7f28, 0x7f25, 0x7f23,
+  0x7f20, 0x7f1d, 0x7f1a, 0x7f17, 0x7f14, 0x7f11, 0x7f0e, 0x7f0b,
+  0x7f08, 0x7f04, 0x7f01, 0x7efe, 0x7efb, 0x7ef8, 0x7ef5, 0x7ef1,
+  0x7eee, 0x7eeb, 0x7ee8, 0x7ee4, 0x7ee1, 0x7ede, 0x7eda, 0x7ed7,
+  0x7ed4, 0x7ed0, 0x7ecd, 0x7ec9, 0x7ec6, 0x7ec3, 0x7ebf, 0x7ebb,
+  0x7eb8, 0x7eb4, 0x7eb1, 0x7ead, 0x7eaa, 0x7ea6, 0x7ea2, 0x7e9f,
+  0x7e9b, 0x7e97, 0x7e94, 0x7e90, 0x7e8c, 0x7e88, 0x7e84, 0x7e81,
+  0x7e7d, 0x7e79, 0x7e75, 0x7e71, 0x7e6d, 0x7e69, 0x7e65, 0x7e61,
+  0x7e5d, 0x7e59, 0x7e55, 0x7e51, 0x7e4d, 0x7e49, 0x7e45, 0x7e41,
+  0x7e3d, 0x7e39, 0x7e34, 0x7e30, 0x7e2c, 0x7e28, 0x7e24, 0x7e1f,
+  0x7e1b, 0x7e17, 0x7e12, 0x7e0e, 0x7e0a, 0x7e05, 0x7e01, 0x7dfc,
+  0x7df8, 0x7df3, 0x7def, 0x7dea, 0x7de6, 0x7de1, 0x7ddd, 0x7dd8,
+  0x7dd4, 0x7dcf, 0x7dca, 0x7dc6, 0x7dc1, 0x7dbc, 0x7db8, 0x7db3,
+  0x7dae, 0x7da9, 0x7da5, 0x7da0, 0x7d9b, 0x7d96, 0x7d91, 0x7d8c,
+  0x7d87, 0x7d82, 0x7d7e, 0x7d79, 0x7d74, 0x7d6f, 0x7d6a, 0x7d65,
+  0x7d60, 0x7d5a, 0x7d55, 0x7d50, 0x7d4b, 0x7d46, 0x7d41, 0x7d3c,
+  0x7d36, 0x7d31, 0x7d2c, 0x7d27, 0x7d21, 0x7d1c, 0x7d17, 0x7d11,
+  0x7d0c, 0x7d07, 0x7d01, 0x7cfc, 0x7cf6, 0x7cf1, 0x7cec, 0x7ce6,
+  0x7ce1, 0x7cdb, 0x7cd5, 0x7cd0, 0x7cca, 0x7cc5, 0x7cbf, 0x7cb9,
+  0x7cb4, 0x7cae, 0x7ca8, 0x7ca3, 0x7c9d, 0x7c97, 0x7c91, 0x7c8c,
+  0x7c86, 0x7c80, 0x7c7a, 0x7c74, 0x7c6e, 0x7c69, 0x7c63, 0x7c5d,
+  0x7c57, 0x7c51, 0x7c4b, 0x7c45, 0x7c3f, 0x7c39, 0x7c33, 0x7c2d,
+  0x7c26, 0x7c20, 0x7c1a, 0x7c14, 0x7c0e, 0x7c08, 0x7c01, 0x7bfb,
+  0x7bf5, 0x7bef, 0x7be8, 0x7be2, 0x7bdc, 0x7bd5, 0x7bcf, 0x7bc9,
+  0x7bc2, 0x7bbc, 0x7bb5, 0x7baf, 0x7ba8, 0x7ba2, 0x7b9b, 0x7b95,
+  0x7b8e, 0x7b88, 0x7b81, 0x7b7a, 0x7b74, 0x7b6d, 0x7b67, 0x7b60,
+  0x7b59, 0x7b52, 0x7b4c, 0x7b45, 0x7b3e, 0x7b37, 0x7b31, 0x7b2a,
+  0x7b23, 0x7b1c, 0x7b15, 0x7b0e, 0x7b07, 0x7b00, 0x7af9, 0x7af2,
+  0x7aeb, 0x7ae4, 0x7add, 0x7ad6, 0x7acf, 0x7ac8, 0x7ac1, 0x7aba,
+  0x7ab3, 0x7aac, 0x7aa4, 0x7a9d, 0x7a96, 0x7a8f, 0x7a87, 0x7a80,
+  0x7a79, 0x7a72, 0x7a6a, 0x7a63, 0x7a5c, 0x7a54, 0x7a4d, 0x7a45,
+  0x7a3e, 0x7a36, 0x7a2f, 0x7a27, 0x7a20, 0x7a18, 0x7a11, 0x7a09,
+  0x7a02, 0x79fa, 0x79f2, 0x79eb, 0x79e3, 0x79db, 0x79d4, 0x79cc,
+  0x79c4, 0x79bc, 0x79b5, 0x79ad, 0x79a5, 0x799d, 0x7995, 0x798e,
+  0x7986, 0x797e, 0x7976, 0x796e, 0x7966, 0x795e, 0x7956, 0x794e,
+  0x7946, 0x793e, 0x7936, 0x792e, 0x7926, 0x791e, 0x7915, 0x790d,
+  0x7905, 0x78fd, 0x78f5, 0x78ec, 0x78e4, 0x78dc, 0x78d4, 0x78cb,
+  0x78c3, 0x78bb, 0x78b2, 0x78aa, 0x78a2, 0x7899, 0x7891, 0x7888,
+  0x7880, 0x7877, 0x786f, 0x7866, 0x785e, 0x7855, 0x784d, 0x7844,
+  0x783b, 0x7833, 0x782a, 0x7821, 0x7819, 0x7810, 0x7807, 0x77ff,
+  0x77f6, 0x77ed, 0x77e4, 0x77db, 0x77d3, 0x77ca, 0x77c1, 0x77b8,
+  0x77af, 0x77a6, 0x779d, 0x7794, 0x778b, 0x7782, 0x7779, 0x7770,
+  0x7767, 0x775e, 0x7755, 0x774c, 0x7743, 0x773a, 0x7731, 0x7727,
+  0x771e, 0x7715, 0x770c, 0x7703, 0x76f9, 0x76f0, 0x76e7, 0x76dd,
+  0x76d4, 0x76cb, 0x76c1, 0x76b8, 0x76af, 0x76a5, 0x769c, 0x7692,
+  0x7689, 0x767f, 0x7676, 0x766c, 0x7663, 0x7659, 0x7650, 0x7646,
+  0x763c, 0x7633, 0x7629, 0x761f, 0x7616, 0x760c, 0x7602, 0x75f9,
+  0x75ef, 0x75e5, 0x75db, 0x75d1, 0x75c8, 0x75be, 0x75b4, 0x75aa,
+  0x75a0, 0x7596, 0x758c, 0x7582, 0x7578, 0x756e, 0x7564, 0x755a,
+  0x7550, 0x7546, 0x753c, 0x7532, 0x7528, 0x751e, 0x7514, 0x7509,
+  0x74ff, 0x74f5, 0x74eb, 0x74e1, 0x74d6, 0x74cc, 0x74c2, 0x74b7,
+  0x74ad, 0x74a3, 0x7498, 0x748e, 0x7484, 0x7479, 0x746f, 0x7464,
+  0x745a, 0x744f, 0x7445, 0x743a, 0x7430, 0x7425, 0x741b, 0x7410,
+  0x7406, 0x73fb, 0x73f0, 0x73e6, 0x73db, 0x73d0, 0x73c6, 0x73bb,
+  0x73b0, 0x73a5, 0x739b, 0x7390, 0x7385, 0x737a, 0x736f, 0x7364,
+  0x7359, 0x734f, 0x7344, 0x7339, 0x732e, 0x7323, 0x7318, 0x730d,
+  0x7302, 0x72f7, 0x72ec, 0x72e1, 0x72d5, 0x72ca, 0x72bf, 0x72b4,
+  0x72a9, 0x729e, 0x7293, 0x7287, 0x727c, 0x7271, 0x7266, 0x725a,
+  0x724f, 0x7244, 0x7238, 0x722d, 0x7222, 0x7216, 0x720b, 0x71ff,
+  0x71f4, 0x71e9, 0x71dd, 0x71d2, 0x71c6, 0x71bb, 0x71af, 0x71a3,
+  0x7198, 0x718c, 0x7181, 0x7175, 0x7169, 0x715e, 0x7152, 0x7146,
+  0x713b, 0x712f, 0x7123, 0x7117, 0x710c, 0x7100, 0x70f4, 0x70e8,
+  0x70dc, 0x70d1, 0x70c5, 0x70b9, 0x70ad, 0x70a1, 0x7095, 0x7089,
+  0x707d, 0x7071, 0x7065, 0x7059, 0x704d, 0x7041, 0x7035, 0x7029,
+  0x701d, 0x7010, 0x7004, 0x6ff8, 0x6fec, 0x6fe0, 0x6fd3, 0x6fc7,
+  0x6fbb, 0x6faf, 0x6fa2, 0x6f96, 0x6f8a, 0x6f7d, 0x6f71, 0x6f65,
+  0x6f58, 0x6f4c, 0x6f3f, 0x6f33, 0x6f27, 0x6f1a, 0x6f0e, 0x6f01,
+  0x6ef5, 0x6ee8, 0x6edc, 0x6ecf, 0x6ec2, 0x6eb6, 0x6ea9, 0x6e9c,
+  0x6e90, 0x6e83, 0x6e76, 0x6e6a, 0x6e5d, 0x6e50, 0x6e44, 0x6e37,
+  0x6e2a, 0x6e1d, 0x6e10, 0x6e04, 0x6df7, 0x6dea, 0x6ddd, 0x6dd0,
+  0x6dc3, 0x6db6, 0x6da9, 0x6d9c, 0x6d8f, 0x6d82, 0x6d75, 0x6d68,
+  0x6d5b, 0x6d4e, 0x6d41, 0x6d34, 0x6d27, 0x6d1a, 0x6d0c, 0x6cff,
+  0x6cf2, 0x6ce5, 0x6cd8, 0x6cca, 0x6cbd, 0x6cb0, 0x6ca3, 0x6c95,
+  0x6c88, 0x6c7b, 0x6c6d, 0x6c60, 0x6c53, 0x6c45, 0x6c38, 0x6c2a,
+  0x6c1d, 0x6c0f, 0x6c02, 0x6bf5, 0x6be7, 0x6bd9, 0x6bcc, 0x6bbe,
+  0x6bb1, 0x6ba3, 0x6b96, 0x6b88, 0x6b7a, 0x6b6d, 0x6b5f, 0x6b51,
+  0x6b44, 0x6b36, 0x6b28, 0x6b1a, 0x6b0d, 0x6aff, 0x6af1, 0x6ae3,
+  0x6ad5, 0x6ac8, 0x6aba, 0x6aac, 0x6a9e, 0x6a90, 0x6a82, 0x6a74,
+  0x6a66, 0x6a58, 0x6a4a, 0x6a3c, 0x6a2e, 0x6a20, 0x6a12, 0x6a04,
+  0x69f6, 0x69e8, 0x69da, 0x69cb, 0x69bd, 0x69af, 0x69a1, 0x6993,
+  0x6985, 0x6976, 0x6968, 0x695a, 0x694b, 0x693d, 0x692f, 0x6921,
+  0x6912, 0x6904, 0x68f5, 0x68e7, 0x68d9, 0x68ca, 0x68bc, 0x68ad,
+  0x689f, 0x6890, 0x6882, 0x6873, 0x6865, 0x6856, 0x6848, 0x6839,
+  0x682b, 0x681c, 0x680d, 0x67ff, 0x67f0, 0x67e1, 0x67d3, 0x67c4,
+  0x67b5, 0x67a6, 0x6798, 0x6789, 0x677a, 0x676b, 0x675d, 0x674e,
+  0x673f, 0x6730, 0x6721, 0x6712, 0x6703, 0x66f4, 0x66e5, 0x66d6,
+  0x66c8, 0x66b9, 0x66aa, 0x669b, 0x668b, 0x667c, 0x666d, 0x665e,
+  0x664f, 0x6640, 0x6631, 0x6622, 0x6613, 0x6603, 0x65f4, 0x65e5,
+  0x65d6, 0x65c7, 0x65b7, 0x65a8, 0x6599, 0x658a, 0x657a, 0x656b,
+  0x655c, 0x654c, 0x653d, 0x652d, 0x651e, 0x650f, 0x64ff, 0x64f0,
+  0x64e0, 0x64d1, 0x64c1, 0x64b2, 0x64a2, 0x6493, 0x6483, 0x6474,
+  0x6464, 0x6454, 0x6445, 0x6435, 0x6426, 0x6416, 0x6406, 0x63f7,
+  0x63e7, 0x63d7, 0x63c7, 0x63b8, 0x63a8, 0x6398, 0x6388, 0x6378,
+  0x6369, 0x6359, 0x6349, 0x6339, 0x6329, 0x6319, 0x6309, 0x62f9,
+  0x62ea, 0x62da, 0x62ca, 0x62ba, 0x62aa, 0x629a, 0x628a, 0x627a,
+  0x6269, 0x6259, 0x6249, 0x6239, 0x6229, 0x6219, 0x6209, 0x61f9,
+  0x61e8, 0x61d8, 0x61c8, 0x61b8, 0x61a8, 0x6197, 0x6187, 0x6177,
+  0x6166, 0x6156, 0x6146, 0x6135, 0x6125, 0x6115, 0x6104, 0x60f4,
+  0x60e4, 0x60d3, 0x60c3, 0x60b2, 0x60a2, 0x6091, 0x6081, 0x6070,
+  0x6060, 0x604f, 0x603f, 0x602e, 0x601d, 0x600d, 0x5ffc, 0x5fec,
+  0x5fdb, 0x5fca, 0x5fba, 0x5fa9, 0x5f98, 0x5f87, 0x5f77, 0x5f66,
+  0x5f55, 0x5f44, 0x5f34, 0x5f23, 0x5f12, 0x5f01, 0x5ef0, 0x5edf,
+  0x5ecf, 0x5ebe, 0x5ead, 0x5e9c, 0x5e8b, 0x5e7a, 0x5e69, 0x5e58,
+  0x5e47, 0x5e36, 0x5e25, 0x5e14, 0x5e03, 0x5df2, 0x5de1, 0x5dd0,
+  0x5dbf, 0x5dad, 0x5d9c, 0x5d8b, 0x5d7a, 0x5d69, 0x5d58, 0x5d46,
+  0x5d35, 0x5d24, 0x5d13, 0x5d01, 0x5cf0, 0x5cdf, 0x5cce, 0x5cbc,
+  0x5cab, 0x5c9a, 0x5c88, 0x5c77, 0x5c66, 0x5c54, 0x5c43, 0x5c31,
+  0x5c20, 0x5c0e, 0x5bfd, 0x5beb, 0x5bda, 0x5bc8, 0x5bb7, 0x5ba5,
+  0x5b94, 0x5b82, 0x5b71, 0x5b5f, 0x5b4d, 0x5b3c, 0x5b2a, 0x5b19,
+  0x5b07, 0x5af5, 0x5ae4, 0x5ad2, 0x5ac0, 0x5aae, 0x5a9d, 0x5a8b,
+  0x5a79, 0x5a67, 0x5a56, 0x5a44, 0x5a32, 0x5a20, 0x5a0e, 0x59fc,
+  0x59ea, 0x59d9, 0x59c7, 0x59b5, 0x59a3, 0x5991, 0x597f, 0x596d,
+  0x595b, 0x5949, 0x5937, 0x5925, 0x5913, 0x5901, 0x58ef, 0x58dd,
+  0x58cb, 0x58b8, 0x58a6, 0x5894, 0x5882, 0x5870, 0x585e, 0x584b,
+  0x5839, 0x5827, 0x5815, 0x5803, 0x57f0, 0x57de, 0x57cc, 0x57b9,
+  0x57a7, 0x5795, 0x5783, 0x5770, 0x575e, 0x574b, 0x5739, 0x5727,
+  0x5714, 0x5702, 0x56ef, 0x56dd, 0x56ca, 0x56b8, 0x56a5, 0x5693,
+  0x5680, 0x566e, 0x565b, 0x5649, 0x5636, 0x5624, 0x5611, 0x55fe,
+  0x55ec, 0x55d9, 0x55c7, 0x55b4, 0x55a1, 0x558f, 0x557c, 0x5569,
+  0x5556, 0x5544, 0x5531, 0x551e, 0x550b, 0x54f9, 0x54e6, 0x54d3,
+  0x54c0, 0x54ad, 0x549a, 0x5488, 0x5475, 0x5462, 0x544f, 0x543c,
+  0x5429, 0x5416, 0x5403, 0x53f0, 0x53dd, 0x53ca, 0x53b7, 0x53a4,
+  0x5391, 0x537e, 0x536b, 0x5358, 0x5345, 0x5332, 0x531f, 0x530c,
+  0x52f8, 0x52e5, 0x52d2, 0x52bf, 0x52ac, 0x5299, 0x5285, 0x5272,
+  0x525f, 0x524c, 0x5238, 0x5225, 0x5212, 0x51ff, 0x51eb, 0x51d8,
+  0x51c5, 0x51b1, 0x519e, 0x518b, 0x5177, 0x5164, 0x5150, 0x513d,
+  0x512a, 0x5116, 0x5103, 0x50ef, 0x50dc, 0x50c8, 0x50b5, 0x50a1,
+  0x508e, 0x507a, 0x5067, 0x5053, 0x503f, 0x502c, 0x5018, 0x5005,
+  0x4ff1, 0x4fdd, 0x4fca, 0x4fb6, 0x4fa2, 0x4f8f, 0x4f7b, 0x4f67,
+  0x4f54, 0x4f40, 0x4f2c, 0x4f18, 0x4f05, 0x4ef1, 0x4edd, 0x4ec9,
+  0x4eb6, 0x4ea2, 0x4e8e, 0x4e7a, 0x4e66, 0x4e52, 0x4e3e, 0x4e2a,
+  0x4e17, 0x4e03, 0x4def, 0x4ddb, 0x4dc7, 0x4db3, 0x4d9f, 0x4d8b,
+  0x4d77, 0x4d63, 0x4d4f, 0x4d3b, 0x4d27, 0x4d13, 0x4cff, 0x4ceb,
+  0x4cd6, 0x4cc2, 0x4cae, 0x4c9a, 0x4c86, 0x4c72, 0x4c5e, 0x4c49,
+  0x4c35, 0x4c21, 0x4c0d, 0x4bf9, 0x4be4, 0x4bd0, 0x4bbc, 0x4ba8,
+  0x4b93, 0x4b7f, 0x4b6b, 0x4b56, 0x4b42, 0x4b2e, 0x4b19, 0x4b05,
+  0x4af1, 0x4adc, 0x4ac8, 0x4ab4, 0x4a9f, 0x4a8b, 0x4a76, 0x4a62,
+  0x4a4d, 0x4a39, 0x4a24, 0x4a10, 0x49fb, 0x49e7, 0x49d2, 0x49be,
+  0x49a9, 0x4995, 0x4980, 0x496c, 0x4957, 0x4942, 0x492e, 0x4919,
+  0x4905, 0x48f0, 0x48db, 0x48c7, 0x48b2, 0x489d, 0x4888, 0x4874,
+  0x485f, 0x484a, 0x4836, 0x4821, 0x480c, 0x47f7, 0x47e2, 0x47ce,
+  0x47b9, 0x47a4, 0x478f, 0x477a, 0x4765, 0x4751, 0x473c, 0x4727,
+  0x4712, 0x46fd, 0x46e8, 0x46d3, 0x46be, 0x46a9, 0x4694, 0x467f,
+  0x466a, 0x4655, 0x4640, 0x462b, 0x4616, 0x4601, 0x45ec, 0x45d7,
+  0x45c2, 0x45ad, 0x4598, 0x4583, 0x456e, 0x4559, 0x4544, 0x452e,
+  0x4519, 0x4504, 0x44ef, 0x44da, 0x44c5, 0x44af, 0x449a, 0x4485,
+  0x4470, 0x445a, 0x4445, 0x4430, 0x441b, 0x4405, 0x43f0, 0x43db,
+  0x43c5, 0x43b0, 0x439b, 0x4385, 0x4370, 0x435b, 0x4345, 0x4330,
+  0x431b, 0x4305, 0x42f0, 0x42da, 0x42c5, 0x42af, 0x429a, 0x4284,
+  0x426f, 0x425a, 0x4244, 0x422f, 0x4219, 0x4203, 0x41ee, 0x41d8,
+  0x41c3, 0x41ad, 0x4198, 0x4182, 0x416d, 0x4157, 0x4141, 0x412c,
+  0x4116, 0x4100, 0x40eb, 0x40d5, 0x40bf, 0x40aa, 0x4094, 0x407e,
+  0x4069, 0x4053, 0x403d, 0x4027, 0x4012, 0x3ffc, 0x3fe6, 0x3fd0,
+  0x3fbb, 0x3fa5, 0x3f8f, 0x3f79, 0x3f63, 0x3f4d, 0x3f38, 0x3f22,
+  0x3f0c, 0x3ef6, 0x3ee0, 0x3eca, 0x3eb4, 0x3e9e, 0x3e88, 0x3e73,
+  0x3e5d, 0x3e47, 0x3e31, 0x3e1b, 0x3e05, 0x3def, 0x3dd9, 0x3dc3,
+  0x3dad, 0x3d97, 0x3d81, 0x3d6b, 0x3d55, 0x3d3e, 0x3d28, 0x3d12,
+  0x3cfc, 0x3ce6, 0x3cd0, 0x3cba, 0x3ca4, 0x3c8e, 0x3c77, 0x3c61,
+  0x3c4b, 0x3c35, 0x3c1f, 0x3c09, 0x3bf2, 0x3bdc, 0x3bc6, 0x3bb0,
+  0x3b99, 0x3b83, 0x3b6d, 0x3b57, 0x3b40, 0x3b2a, 0x3b14, 0x3afe,
+  0x3ae7, 0x3ad1, 0x3abb, 0x3aa4, 0x3a8e, 0x3a78, 0x3a61, 0x3a4b,
+  0x3a34, 0x3a1e, 0x3a08, 0x39f1, 0x39db, 0x39c4, 0x39ae, 0x3998,
+  0x3981, 0x396b, 0x3954, 0x393e, 0x3927, 0x3911, 0x38fa, 0x38e4,
+  0x38cd, 0x38b7, 0x38a0, 0x388a, 0x3873, 0x385d, 0x3846, 0x382f,
+  0x3819, 0x3802, 0x37ec, 0x37d5, 0x37be, 0x37a8, 0x3791, 0x377a,
+  0x3764, 0x374d, 0x3736, 0x3720, 0x3709, 0x36f2, 0x36dc, 0x36c5,
+  0x36ae, 0x3698, 0x3681, 0x366a, 0x3653, 0x363d, 0x3626, 0x360f,
+  0x35f8, 0x35e1, 0x35cb, 0x35b4, 0x359d, 0x3586, 0x356f, 0x3558,
+  0x3542, 0x352b, 0x3514, 0x34fd, 0x34e6, 0x34cf, 0x34b8, 0x34a1,
+  0x348b, 0x3474, 0x345d, 0x3446, 0x342f, 0x3418, 0x3401, 0x33ea,
+  0x33d3, 0x33bc, 0x33a5, 0x338e, 0x3377, 0x3360, 0x3349, 0x3332,
+  0x331b, 0x3304, 0x32ed, 0x32d6, 0x32bf, 0x32a8, 0x3290, 0x3279,
+  0x3262, 0x324b, 0x3234, 0x321d, 0x3206, 0x31ef, 0x31d8, 0x31c0,
+  0x31a9, 0x3192, 0x317b, 0x3164, 0x314c, 0x3135, 0x311e, 0x3107,
+  0x30f0, 0x30d8, 0x30c1, 0x30aa, 0x3093, 0x307b, 0x3064, 0x304d,
+  0x3036, 0x301e, 0x3007, 0x2ff0, 0x2fd8, 0x2fc1, 0x2faa, 0x2f92,
+  0x2f7b, 0x2f64, 0x2f4c, 0x2f35, 0x2f1e, 0x2f06, 0x2eef, 0x2ed8,
+  0x2ec0, 0x2ea9, 0x2e91, 0x2e7a, 0x2e63, 0x2e4b, 0x2e34, 0x2e1c,
+  0x2e05, 0x2ded, 0x2dd6, 0x2dbe, 0x2da7, 0x2d8f, 0x2d78, 0x2d60,
+  0x2d49, 0x2d31, 0x2d1a, 0x2d02, 0x2ceb, 0x2cd3, 0x2cbc, 0x2ca4,
+  0x2c8d, 0x2c75, 0x2c5e, 0x2c46, 0x2c2e, 0x2c17, 0x2bff, 0x2be8,
+  0x2bd0, 0x2bb8, 0x2ba1, 0x2b89, 0x2b71, 0x2b5a, 0x2b42, 0x2b2b,
+  0x2b13, 0x2afb, 0x2ae4, 0x2acc, 0x2ab4, 0x2a9c, 0x2a85, 0x2a6d,
+  0x2a55, 0x2a3e, 0x2a26, 0x2a0e, 0x29f6, 0x29df, 0x29c7, 0x29af,
+  0x2997, 0x2980, 0x2968, 0x2950, 0x2938, 0x2920, 0x2909, 0x28f1,
+  0x28d9, 0x28c1, 0x28a9, 0x2892, 0x287a, 0x2862, 0x284a, 0x2832,
+  0x281a, 0x2802, 0x27eb, 0x27d3, 0x27bb, 0x27a3, 0x278b, 0x2773,
+  0x275b, 0x2743, 0x272b, 0x2713, 0x26fb, 0x26e4, 0x26cc, 0x26b4,
+  0x269c, 0x2684, 0x266c, 0x2654, 0x263c, 0x2624, 0x260c, 0x25f4,
+  0x25dc, 0x25c4, 0x25ac, 0x2594, 0x257c, 0x2564, 0x254c, 0x2534,
+  0x251c, 0x2503, 0x24eb, 0x24d3, 0x24bb, 0x24a3, 0x248b, 0x2473,
+  0x245b, 0x2443, 0x242b, 0x2413, 0x23fa, 0x23e2, 0x23ca, 0x23b2,
+  0x239a, 0x2382, 0x236a, 0x2352, 0x2339, 0x2321, 0x2309, 0x22f1,
+  0x22d9, 0x22c0, 0x22a8, 0x2290, 0x2278, 0x2260, 0x2247, 0x222f,
+  0x2217, 0x21ff, 0x21e7, 0x21ce, 0x21b6, 0x219e, 0x2186, 0x216d,
+  0x2155, 0x213d, 0x2125, 0x210c, 0x20f4, 0x20dc, 0x20c3, 0x20ab,
+  0x2093, 0x207a, 0x2062, 0x204a, 0x2032, 0x2019, 0x2001, 0x1fe9,
+  0x1fd0, 0x1fb8, 0x1f9f, 0x1f87, 0x1f6f, 0x1f56, 0x1f3e, 0x1f26,
+  0x1f0d, 0x1ef5, 0x1edd, 0x1ec4, 0x1eac, 0x1e93, 0x1e7b, 0x1e62,
+  0x1e4a, 0x1e32, 0x1e19, 0x1e01, 0x1de8, 0x1dd0, 0x1db7, 0x1d9f,
+  0x1d87, 0x1d6e, 0x1d56, 0x1d3d, 0x1d25, 0x1d0c, 0x1cf4, 0x1cdb,
+  0x1cc3, 0x1caa, 0x1c92, 0x1c79, 0x1c61, 0x1c48, 0x1c30, 0x1c17,
+  0x1bff, 0x1be6, 0x1bce, 0x1bb5, 0x1b9d, 0x1b84, 0x1b6c, 0x1b53,
+  0x1b3a, 0x1b22, 0x1b09, 0x1af1, 0x1ad8, 0x1ac0, 0x1aa7, 0x1a8e,
+  0x1a76, 0x1a5d, 0x1a45, 0x1a2c, 0x1a13, 0x19fb, 0x19e2, 0x19ca,
+  0x19b1, 0x1998, 0x1980, 0x1967, 0x194e, 0x1936, 0x191d, 0x1905,
+  0x18ec, 0x18d3, 0x18bb, 0x18a2, 0x1889, 0x1871, 0x1858, 0x183f,
+  0x1827, 0x180e, 0x17f5, 0x17dd, 0x17c4, 0x17ab, 0x1792, 0x177a,
+  0x1761, 0x1748, 0x1730, 0x1717, 0x16fe, 0x16e5, 0x16cd, 0x16b4,
+  0x169b, 0x1682, 0x166a, 0x1651, 0x1638, 0x161f, 0x1607, 0x15ee,
+  0x15d5, 0x15bc, 0x15a4, 0x158b, 0x1572, 0x1559, 0x1541, 0x1528,
+  0x150f, 0x14f6, 0x14dd, 0x14c5, 0x14ac, 0x1493, 0x147a, 0x1461,
+  0x1449, 0x1430, 0x1417, 0x13fe, 0x13e5, 0x13cc, 0x13b4, 0x139b,
+  0x1382, 0x1369, 0x1350, 0x1337, 0x131f, 0x1306, 0x12ed, 0x12d4,
+  0x12bb, 0x12a2, 0x1289, 0x1271, 0x1258, 0x123f, 0x1226, 0x120d,
+  0x11f4, 0x11db, 0x11c2, 0x11a9, 0x1191, 0x1178, 0x115f, 0x1146,
+  0x112d, 0x1114, 0x10fb, 0x10e2, 0x10c9, 0x10b0, 0x1098, 0x107f,
+  0x1066, 0x104d, 0x1034, 0x101b, 0x1002, 0xfe9, 0xfd0, 0xfb7,
+  0xf9e, 0xf85, 0xf6c, 0xf53, 0xf3a, 0xf21, 0xf08, 0xef0,
+  0xed7, 0xebe, 0xea5, 0xe8c, 0xe73, 0xe5a, 0xe41, 0xe28,
+  0xe0f, 0xdf6, 0xddd, 0xdc4, 0xdab, 0xd92, 0xd79, 0xd60,
+  0xd47, 0xd2e, 0xd15, 0xcfc, 0xce3, 0xcca, 0xcb1, 0xc98,
+  0xc7f, 0xc66, 0xc4d, 0xc34, 0xc1b, 0xc02, 0xbe9, 0xbd0,
+  0xbb7, 0xb9e, 0xb85, 0xb6c, 0xb53, 0xb3a, 0xb20, 0xb07,
+  0xaee, 0xad5, 0xabc, 0xaa3, 0xa8a, 0xa71, 0xa58, 0xa3f,
+  0xa26, 0xa0d, 0x9f4, 0x9db, 0x9c2, 0x9a9, 0x990, 0x977,
+  0x95e, 0x944, 0x92b, 0x912, 0x8f9, 0x8e0, 0x8c7, 0x8ae,
+  0x895, 0x87c, 0x863, 0x84a, 0x831, 0x818, 0x7fe, 0x7e5,
+  0x7cc, 0x7b3, 0x79a, 0x781, 0x768, 0x74f, 0x736, 0x71d,
+  0x704, 0x6ea, 0x6d1, 0x6b8, 0x69f, 0x686, 0x66d, 0x654,
+  0x63b, 0x622, 0x609, 0x5ef, 0x5d6, 0x5bd, 0x5a4, 0x58b,
+  0x572, 0x559, 0x540, 0x527, 0x50d, 0x4f4, 0x4db, 0x4c2,
+  0x4a9, 0x490, 0x477, 0x45e, 0x445, 0x42b, 0x412, 0x3f9,
+  0x3e0, 0x3c7, 0x3ae, 0x395, 0x37c, 0x362, 0x349, 0x330,
+  0x317, 0x2fe, 0x2e5, 0x2cc, 0x2b3, 0x299, 0x280, 0x267,
+  0x24e, 0x235, 0x21c, 0x203, 0x1ea, 0x1d0, 0x1b7, 0x19e,
+  0x185, 0x16c, 0x153, 0x13a, 0x121, 0x107, 0xee, 0xd5,
+  0xbc, 0xa3, 0x8a, 0x71, 0x57, 0x3e, 0x25, 0xc,
+
+};
+
+static const q15_t ALIGN4 cos_factorsQ15_8192[8192] = {
+  0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,
+  0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,
+  0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,
+  0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,
+  0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,
+  0x7fff, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe,
+  0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe,
+  0x7ffe, 0x7ffe, 0x7ffd, 0x7ffd, 0x7ffd, 0x7ffd, 0x7ffd, 0x7ffd,
+  0x7ffd, 0x7ffd, 0x7ffd, 0x7ffd, 0x7ffd, 0x7ffd, 0x7ffd, 0x7ffc,
+  0x7ffc, 0x7ffc, 0x7ffc, 0x7ffc, 0x7ffc, 0x7ffc, 0x7ffc, 0x7ffc,
+  0x7ffc, 0x7ffb, 0x7ffb, 0x7ffb, 0x7ffb, 0x7ffb, 0x7ffb, 0x7ffb,
+  0x7ffb, 0x7ffb, 0x7ffb, 0x7ffa, 0x7ffa, 0x7ffa, 0x7ffa, 0x7ffa,
+  0x7ffa, 0x7ffa, 0x7ffa, 0x7ffa, 0x7ff9, 0x7ff9, 0x7ff9, 0x7ff9,
+  0x7ff9, 0x7ff9, 0x7ff9, 0x7ff9, 0x7ff8, 0x7ff8, 0x7ff8, 0x7ff8,
+  0x7ff8, 0x7ff8, 0x7ff8, 0x7ff7, 0x7ff7, 0x7ff7, 0x7ff7, 0x7ff7,
+  0x7ff7, 0x7ff7, 0x7ff6, 0x7ff6, 0x7ff6, 0x7ff6, 0x7ff6, 0x7ff6,
+  0x7ff6, 0x7ff5, 0x7ff5, 0x7ff5, 0x7ff5, 0x7ff5, 0x7ff5, 0x7ff4,
+  0x7ff4, 0x7ff4, 0x7ff4, 0x7ff4, 0x7ff4, 0x7ff3, 0x7ff3, 0x7ff3,
+  0x7ff3, 0x7ff3, 0x7ff3, 0x7ff2, 0x7ff2, 0x7ff2, 0x7ff2, 0x7ff2,
+  0x7ff1, 0x7ff1, 0x7ff1, 0x7ff1, 0x7ff1, 0x7ff1, 0x7ff0, 0x7ff0,
+  0x7ff0, 0x7ff0, 0x7ff0, 0x7fef, 0x7fef, 0x7fef, 0x7fef, 0x7fef,
+  0x7fee, 0x7fee, 0x7fee, 0x7fee, 0x7fee, 0x7fed, 0x7fed, 0x7fed,
+  0x7fed, 0x7fed, 0x7fec, 0x7fec, 0x7fec, 0x7fec, 0x7feb, 0x7feb,
+  0x7feb, 0x7feb, 0x7feb, 0x7fea, 0x7fea, 0x7fea, 0x7fea, 0x7fe9,
+  0x7fe9, 0x7fe9, 0x7fe9, 0x7fe8, 0x7fe8, 0x7fe8, 0x7fe8, 0x7fe8,
+  0x7fe7, 0x7fe7, 0x7fe7, 0x7fe7, 0x7fe6, 0x7fe6, 0x7fe6, 0x7fe6,
+  0x7fe5, 0x7fe5, 0x7fe5, 0x7fe5, 0x7fe4, 0x7fe4, 0x7fe4, 0x7fe4,
+  0x7fe3, 0x7fe3, 0x7fe3, 0x7fe2, 0x7fe2, 0x7fe2, 0x7fe2, 0x7fe1,
+  0x7fe1, 0x7fe1, 0x7fe1, 0x7fe0, 0x7fe0, 0x7fe0, 0x7fdf, 0x7fdf,
+  0x7fdf, 0x7fdf, 0x7fde, 0x7fde, 0x7fde, 0x7fde, 0x7fdd, 0x7fdd,
+  0x7fdd, 0x7fdc, 0x7fdc, 0x7fdc, 0x7fdb, 0x7fdb, 0x7fdb, 0x7fdb,
+  0x7fda, 0x7fda, 0x7fda, 0x7fd9, 0x7fd9, 0x7fd9, 0x7fd8, 0x7fd8,
+  0x7fd8, 0x7fd8, 0x7fd7, 0x7fd7, 0x7fd7, 0x7fd6, 0x7fd6, 0x7fd6,
+  0x7fd5, 0x7fd5, 0x7fd5, 0x7fd4, 0x7fd4, 0x7fd4, 0x7fd3, 0x7fd3,
+  0x7fd3, 0x7fd2, 0x7fd2, 0x7fd2, 0x7fd1, 0x7fd1, 0x7fd1, 0x7fd0,
+  0x7fd0, 0x7fd0, 0x7fcf, 0x7fcf, 0x7fcf, 0x7fce, 0x7fce, 0x7fce,
+  0x7fcd, 0x7fcd, 0x7fcd, 0x7fcc, 0x7fcc, 0x7fcc, 0x7fcb, 0x7fcb,
+  0x7fcb, 0x7fca, 0x7fca, 0x7fc9, 0x7fc9, 0x7fc9, 0x7fc8, 0x7fc8,
+  0x7fc8, 0x7fc7, 0x7fc7, 0x7fc7, 0x7fc6, 0x7fc6, 0x7fc5, 0x7fc5,
+  0x7fc5, 0x7fc4, 0x7fc4, 0x7fc4, 0x7fc3, 0x7fc3, 0x7fc2, 0x7fc2,
+  0x7fc2, 0x7fc1, 0x7fc1, 0x7fc0, 0x7fc0, 0x7fc0, 0x7fbf, 0x7fbf,
+  0x7fbf, 0x7fbe, 0x7fbe, 0x7fbd, 0x7fbd, 0x7fbd, 0x7fbc, 0x7fbc,
+  0x7fbb, 0x7fbb, 0x7fbb, 0x7fba, 0x7fba, 0x7fb9, 0x7fb9, 0x7fb8,
+  0x7fb8, 0x7fb8, 0x7fb7, 0x7fb7, 0x7fb6, 0x7fb6, 0x7fb6, 0x7fb5,
+  0x7fb5, 0x7fb4, 0x7fb4, 0x7fb3, 0x7fb3, 0x7fb3, 0x7fb2, 0x7fb2,
+  0x7fb1, 0x7fb1, 0x7fb0, 0x7fb0, 0x7faf, 0x7faf, 0x7faf, 0x7fae,
+  0x7fae, 0x7fad, 0x7fad, 0x7fac, 0x7fac, 0x7fac, 0x7fab, 0x7fab,
+  0x7faa, 0x7faa, 0x7fa9, 0x7fa9, 0x7fa8, 0x7fa8, 0x7fa7, 0x7fa7,
+  0x7fa6, 0x7fa6, 0x7fa6, 0x7fa5, 0x7fa5, 0x7fa4, 0x7fa4, 0x7fa3,
+  0x7fa3, 0x7fa2, 0x7fa2, 0x7fa1, 0x7fa1, 0x7fa0, 0x7fa0, 0x7f9f,
+  0x7f9f, 0x7f9e, 0x7f9e, 0x7f9d, 0x7f9d, 0x7f9c, 0x7f9c, 0x7f9c,
+  0x7f9b, 0x7f9b, 0x7f9a, 0x7f9a, 0x7f99, 0x7f99, 0x7f98, 0x7f98,
+  0x7f97, 0x7f97, 0x7f96, 0x7f96, 0x7f95, 0x7f95, 0x7f94, 0x7f94,
+  0x7f93, 0x7f92, 0x7f92, 0x7f91, 0x7f91, 0x7f90, 0x7f90, 0x7f8f,
+  0x7f8f, 0x7f8e, 0x7f8e, 0x7f8d, 0x7f8d, 0x7f8c, 0x7f8c, 0x7f8b,
+  0x7f8b, 0x7f8a, 0x7f8a, 0x7f89, 0x7f89, 0x7f88, 0x7f87, 0x7f87,
+  0x7f86, 0x7f86, 0x7f85, 0x7f85, 0x7f84, 0x7f84, 0x7f83, 0x7f83,
+  0x7f82, 0x7f81, 0x7f81, 0x7f80, 0x7f80, 0x7f7f, 0x7f7f, 0x7f7e,
+  0x7f7e, 0x7f7d, 0x7f7c, 0x7f7c, 0x7f7b, 0x7f7b, 0x7f7a, 0x7f7a,
+  0x7f79, 0x7f79, 0x7f78, 0x7f77, 0x7f77, 0x7f76, 0x7f76, 0x7f75,
+  0x7f75, 0x7f74, 0x7f73, 0x7f73, 0x7f72, 0x7f72, 0x7f71, 0x7f70,
+  0x7f70, 0x7f6f, 0x7f6f, 0x7f6e, 0x7f6d, 0x7f6d, 0x7f6c, 0x7f6c,
+  0x7f6b, 0x7f6b, 0x7f6a, 0x7f69, 0x7f69, 0x7f68, 0x7f68, 0x7f67,
+  0x7f66, 0x7f66, 0x7f65, 0x7f64, 0x7f64, 0x7f63, 0x7f63, 0x7f62,
+  0x7f61, 0x7f61, 0x7f60, 0x7f60, 0x7f5f, 0x7f5e, 0x7f5e, 0x7f5d,
+  0x7f5c, 0x7f5c, 0x7f5b, 0x7f5b, 0x7f5a, 0x7f59, 0x7f59, 0x7f58,
+  0x7f57, 0x7f57, 0x7f56, 0x7f55, 0x7f55, 0x7f54, 0x7f54, 0x7f53,
+  0x7f52, 0x7f52, 0x7f51, 0x7f50, 0x7f50, 0x7f4f, 0x7f4e, 0x7f4e,
+  0x7f4d, 0x7f4c, 0x7f4c, 0x7f4b, 0x7f4a, 0x7f4a, 0x7f49, 0x7f48,
+  0x7f48, 0x7f47, 0x7f46, 0x7f46, 0x7f45, 0x7f44, 0x7f44, 0x7f43,
+  0x7f42, 0x7f42, 0x7f41, 0x7f40, 0x7f40, 0x7f3f, 0x7f3e, 0x7f3e,
+  0x7f3d, 0x7f3c, 0x7f3c, 0x7f3b, 0x7f3a, 0x7f3a, 0x7f39, 0x7f38,
+  0x7f37, 0x7f37, 0x7f36, 0x7f35, 0x7f35, 0x7f34, 0x7f33, 0x7f33,
+  0x7f32, 0x7f31, 0x7f31, 0x7f30, 0x7f2f, 0x7f2e, 0x7f2e, 0x7f2d,
+  0x7f2c, 0x7f2c, 0x7f2b, 0x7f2a, 0x7f29, 0x7f29, 0x7f28, 0x7f27,
+  0x7f27, 0x7f26, 0x7f25, 0x7f24, 0x7f24, 0x7f23, 0x7f22, 0x7f21,
+  0x7f21, 0x7f20, 0x7f1f, 0x7f1f, 0x7f1e, 0x7f1d, 0x7f1c, 0x7f1c,
+  0x7f1b, 0x7f1a, 0x7f19, 0x7f19, 0x7f18, 0x7f17, 0x7f16, 0x7f16,
+  0x7f15, 0x7f14, 0x7f13, 0x7f13, 0x7f12, 0x7f11, 0x7f10, 0x7f10,
+  0x7f0f, 0x7f0e, 0x7f0d, 0x7f0d, 0x7f0c, 0x7f0b, 0x7f0a, 0x7f09,
+  0x7f09, 0x7f08, 0x7f07, 0x7f06, 0x7f06, 0x7f05, 0x7f04, 0x7f03,
+  0x7f02, 0x7f02, 0x7f01, 0x7f00, 0x7eff, 0x7eff, 0x7efe, 0x7efd,
+  0x7efc, 0x7efb, 0x7efb, 0x7efa, 0x7ef9, 0x7ef8, 0x7ef7, 0x7ef7,
+  0x7ef6, 0x7ef5, 0x7ef4, 0x7ef3, 0x7ef3, 0x7ef2, 0x7ef1, 0x7ef0,
+  0x7eef, 0x7eef, 0x7eee, 0x7eed, 0x7eec, 0x7eeb, 0x7eeb, 0x7eea,
+  0x7ee9, 0x7ee8, 0x7ee7, 0x7ee6, 0x7ee6, 0x7ee5, 0x7ee4, 0x7ee3,
+  0x7ee2, 0x7ee2, 0x7ee1, 0x7ee0, 0x7edf, 0x7ede, 0x7edd, 0x7edd,
+  0x7edc, 0x7edb, 0x7eda, 0x7ed9, 0x7ed8, 0x7ed8, 0x7ed7, 0x7ed6,
+  0x7ed5, 0x7ed4, 0x7ed3, 0x7ed2, 0x7ed2, 0x7ed1, 0x7ed0, 0x7ecf,
+  0x7ece, 0x7ecd, 0x7ecc, 0x7ecc, 0x7ecb, 0x7eca, 0x7ec9, 0x7ec8,
+  0x7ec7, 0x7ec6, 0x7ec6, 0x7ec5, 0x7ec4, 0x7ec3, 0x7ec2, 0x7ec1,
+  0x7ec0, 0x7ebf, 0x7ebf, 0x7ebe, 0x7ebd, 0x7ebc, 0x7ebb, 0x7eba,
+  0x7eb9, 0x7eb8, 0x7eb8, 0x7eb7, 0x7eb6, 0x7eb5, 0x7eb4, 0x7eb3,
+  0x7eb2, 0x7eb1, 0x7eb0, 0x7eaf, 0x7eaf, 0x7eae, 0x7ead, 0x7eac,
+  0x7eab, 0x7eaa, 0x7ea9, 0x7ea8, 0x7ea7, 0x7ea6, 0x7ea6, 0x7ea5,
+  0x7ea4, 0x7ea3, 0x7ea2, 0x7ea1, 0x7ea0, 0x7e9f, 0x7e9e, 0x7e9d,
+  0x7e9c, 0x7e9b, 0x7e9b, 0x7e9a, 0x7e99, 0x7e98, 0x7e97, 0x7e96,
+  0x7e95, 0x7e94, 0x7e93, 0x7e92, 0x7e91, 0x7e90, 0x7e8f, 0x7e8e,
+  0x7e8d, 0x7e8d, 0x7e8c, 0x7e8b, 0x7e8a, 0x7e89, 0x7e88, 0x7e87,
+  0x7e86, 0x7e85, 0x7e84, 0x7e83, 0x7e82, 0x7e81, 0x7e80, 0x7e7f,
+  0x7e7e, 0x7e7d, 0x7e7c, 0x7e7b, 0x7e7a, 0x7e79, 0x7e78, 0x7e77,
+  0x7e77, 0x7e76, 0x7e75, 0x7e74, 0x7e73, 0x7e72, 0x7e71, 0x7e70,
+  0x7e6f, 0x7e6e, 0x7e6d, 0x7e6c, 0x7e6b, 0x7e6a, 0x7e69, 0x7e68,
+  0x7e67, 0x7e66, 0x7e65, 0x7e64, 0x7e63, 0x7e62, 0x7e61, 0x7e60,
+  0x7e5f, 0x7e5e, 0x7e5d, 0x7e5c, 0x7e5b, 0x7e5a, 0x7e59, 0x7e58,
+  0x7e57, 0x7e56, 0x7e55, 0x7e54, 0x7e53, 0x7e52, 0x7e51, 0x7e50,
+  0x7e4f, 0x7e4e, 0x7e4d, 0x7e4c, 0x7e4b, 0x7e4a, 0x7e49, 0x7e48,
+  0x7e47, 0x7e46, 0x7e45, 0x7e43, 0x7e42, 0x7e41, 0x7e40, 0x7e3f,
+  0x7e3e, 0x7e3d, 0x7e3c, 0x7e3b, 0x7e3a, 0x7e39, 0x7e38, 0x7e37,
+  0x7e36, 0x7e35, 0x7e34, 0x7e33, 0x7e32, 0x7e31, 0x7e30, 0x7e2f,
+  0x7e2e, 0x7e2d, 0x7e2b, 0x7e2a, 0x7e29, 0x7e28, 0x7e27, 0x7e26,
+  0x7e25, 0x7e24, 0x7e23, 0x7e22, 0x7e21, 0x7e20, 0x7e1f, 0x7e1e,
+  0x7e1d, 0x7e1b, 0x7e1a, 0x7e19, 0x7e18, 0x7e17, 0x7e16, 0x7e15,
+  0x7e14, 0x7e13, 0x7e12, 0x7e11, 0x7e10, 0x7e0e, 0x7e0d, 0x7e0c,
+  0x7e0b, 0x7e0a, 0x7e09, 0x7e08, 0x7e07, 0x7e06, 0x7e05, 0x7e04,
+  0x7e02, 0x7e01, 0x7e00, 0x7dff, 0x7dfe, 0x7dfd, 0x7dfc, 0x7dfb,
+  0x7dfa, 0x7df8, 0x7df7, 0x7df6, 0x7df5, 0x7df4, 0x7df3, 0x7df2,
+  0x7df1, 0x7def, 0x7dee, 0x7ded, 0x7dec, 0x7deb, 0x7dea, 0x7de9,
+  0x7de8, 0x7de6, 0x7de5, 0x7de4, 0x7de3, 0x7de2, 0x7de1, 0x7de0,
+  0x7dde, 0x7ddd, 0x7ddc, 0x7ddb, 0x7dda, 0x7dd9, 0x7dd8, 0x7dd6,
+  0x7dd5, 0x7dd4, 0x7dd3, 0x7dd2, 0x7dd1, 0x7dd0, 0x7dce, 0x7dcd,
+  0x7dcc, 0x7dcb, 0x7dca, 0x7dc9, 0x7dc7, 0x7dc6, 0x7dc5, 0x7dc4,
+  0x7dc3, 0x7dc2, 0x7dc0, 0x7dbf, 0x7dbe, 0x7dbd, 0x7dbc, 0x7dbb,
+  0x7db9, 0x7db8, 0x7db7, 0x7db6, 0x7db5, 0x7db3, 0x7db2, 0x7db1,
+  0x7db0, 0x7daf, 0x7dae, 0x7dac, 0x7dab, 0x7daa, 0x7da9, 0x7da8,
+  0x7da6, 0x7da5, 0x7da4, 0x7da3, 0x7da2, 0x7da0, 0x7d9f, 0x7d9e,
+  0x7d9d, 0x7d9c, 0x7d9a, 0x7d99, 0x7d98, 0x7d97, 0x7d95, 0x7d94,
+  0x7d93, 0x7d92, 0x7d91, 0x7d8f, 0x7d8e, 0x7d8d, 0x7d8c, 0x7d8a,
+  0x7d89, 0x7d88, 0x7d87, 0x7d86, 0x7d84, 0x7d83, 0x7d82, 0x7d81,
+  0x7d7f, 0x7d7e, 0x7d7d, 0x7d7c, 0x7d7a, 0x7d79, 0x7d78, 0x7d77,
+  0x7d75, 0x7d74, 0x7d73, 0x7d72, 0x7d70, 0x7d6f, 0x7d6e, 0x7d6d,
+  0x7d6b, 0x7d6a, 0x7d69, 0x7d68, 0x7d66, 0x7d65, 0x7d64, 0x7d63,
+  0x7d61, 0x7d60, 0x7d5f, 0x7d5e, 0x7d5c, 0x7d5b, 0x7d5a, 0x7d59,
+  0x7d57, 0x7d56, 0x7d55, 0x7d53, 0x7d52, 0x7d51, 0x7d50, 0x7d4e,
+  0x7d4d, 0x7d4c, 0x7d4a, 0x7d49, 0x7d48, 0x7d47, 0x7d45, 0x7d44,
+  0x7d43, 0x7d41, 0x7d40, 0x7d3f, 0x7d3e, 0x7d3c, 0x7d3b, 0x7d3a,
+  0x7d38, 0x7d37, 0x7d36, 0x7d34, 0x7d33, 0x7d32, 0x7d31, 0x7d2f,
+  0x7d2e, 0x7d2d, 0x7d2b, 0x7d2a, 0x7d29, 0x7d27, 0x7d26, 0x7d25,
+  0x7d23, 0x7d22, 0x7d21, 0x7d1f, 0x7d1e, 0x7d1d, 0x7d1b, 0x7d1a,
+  0x7d19, 0x7d17, 0x7d16, 0x7d15, 0x7d13, 0x7d12, 0x7d11, 0x7d0f,
+  0x7d0e, 0x7d0d, 0x7d0b, 0x7d0a, 0x7d09, 0x7d07, 0x7d06, 0x7d05,
+  0x7d03, 0x7d02, 0x7d01, 0x7cff, 0x7cfe, 0x7cfd, 0x7cfb, 0x7cfa,
+  0x7cf9, 0x7cf7, 0x7cf6, 0x7cf4, 0x7cf3, 0x7cf2, 0x7cf0, 0x7cef,
+  0x7cee, 0x7cec, 0x7ceb, 0x7ce9, 0x7ce8, 0x7ce7, 0x7ce5, 0x7ce4,
+  0x7ce3, 0x7ce1, 0x7ce0, 0x7cde, 0x7cdd, 0x7cdc, 0x7cda, 0x7cd9,
+  0x7cd8, 0x7cd6, 0x7cd5, 0x7cd3, 0x7cd2, 0x7cd1, 0x7ccf, 0x7cce,
+  0x7ccc, 0x7ccb, 0x7cca, 0x7cc8, 0x7cc7, 0x7cc5, 0x7cc4, 0x7cc3,
+  0x7cc1, 0x7cc0, 0x7cbe, 0x7cbd, 0x7cbc, 0x7cba, 0x7cb9, 0x7cb7,
+  0x7cb6, 0x7cb5, 0x7cb3, 0x7cb2, 0x7cb0, 0x7caf, 0x7cad, 0x7cac,
+  0x7cab, 0x7ca9, 0x7ca8, 0x7ca6, 0x7ca5, 0x7ca3, 0x7ca2, 0x7ca1,
+  0x7c9f, 0x7c9e, 0x7c9c, 0x7c9b, 0x7c99, 0x7c98, 0x7c97, 0x7c95,
+  0x7c94, 0x7c92, 0x7c91, 0x7c8f, 0x7c8e, 0x7c8c, 0x7c8b, 0x7c8a,
+  0x7c88, 0x7c87, 0x7c85, 0x7c84, 0x7c82, 0x7c81, 0x7c7f, 0x7c7e,
+  0x7c7c, 0x7c7b, 0x7c79, 0x7c78, 0x7c77, 0x7c75, 0x7c74, 0x7c72,
+  0x7c71, 0x7c6f, 0x7c6e, 0x7c6c, 0x7c6b, 0x7c69, 0x7c68, 0x7c66,
+  0x7c65, 0x7c63, 0x7c62, 0x7c60, 0x7c5f, 0x7c5d, 0x7c5c, 0x7c5a,
+  0x7c59, 0x7c58, 0x7c56, 0x7c55, 0x7c53, 0x7c52, 0x7c50, 0x7c4f,
+  0x7c4d, 0x7c4c, 0x7c4a, 0x7c49, 0x7c47, 0x7c46, 0x7c44, 0x7c43,
+  0x7c41, 0x7c3f, 0x7c3e, 0x7c3c, 0x7c3b, 0x7c39, 0x7c38, 0x7c36,
+  0x7c35, 0x7c33, 0x7c32, 0x7c30, 0x7c2f, 0x7c2d, 0x7c2c, 0x7c2a,
+  0x7c29, 0x7c27, 0x7c26, 0x7c24, 0x7c23, 0x7c21, 0x7c20, 0x7c1e,
+  0x7c1c, 0x7c1b, 0x7c19, 0x7c18, 0x7c16, 0x7c15, 0x7c13, 0x7c12,
+  0x7c10, 0x7c0f, 0x7c0d, 0x7c0b, 0x7c0a, 0x7c08, 0x7c07, 0x7c05,
+  0x7c04, 0x7c02, 0x7c01, 0x7bff, 0x7bfd, 0x7bfc, 0x7bfa, 0x7bf9,
+  0x7bf7, 0x7bf6, 0x7bf4, 0x7bf3, 0x7bf1, 0x7bef, 0x7bee, 0x7bec,
+  0x7beb, 0x7be9, 0x7be8, 0x7be6, 0x7be4, 0x7be3, 0x7be1, 0x7be0,
+  0x7bde, 0x7bdc, 0x7bdb, 0x7bd9, 0x7bd8, 0x7bd6, 0x7bd5, 0x7bd3,
+  0x7bd1, 0x7bd0, 0x7bce, 0x7bcd, 0x7bcb, 0x7bc9, 0x7bc8, 0x7bc6,
+  0x7bc5, 0x7bc3, 0x7bc1, 0x7bc0, 0x7bbe, 0x7bbd, 0x7bbb, 0x7bb9,
+  0x7bb8, 0x7bb6, 0x7bb5, 0x7bb3, 0x7bb1, 0x7bb0, 0x7bae, 0x7bac,
+  0x7bab, 0x7ba9, 0x7ba8, 0x7ba6, 0x7ba4, 0x7ba3, 0x7ba1, 0x7b9f,
+  0x7b9e, 0x7b9c, 0x7b9b, 0x7b99, 0x7b97, 0x7b96, 0x7b94, 0x7b92,
+  0x7b91, 0x7b8f, 0x7b8d, 0x7b8c, 0x7b8a, 0x7b89, 0x7b87, 0x7b85,
+  0x7b84, 0x7b82, 0x7b80, 0x7b7f, 0x7b7d, 0x7b7b, 0x7b7a, 0x7b78,
+  0x7b76, 0x7b75, 0x7b73, 0x7b71, 0x7b70, 0x7b6e, 0x7b6c, 0x7b6b,
+  0x7b69, 0x7b67, 0x7b66, 0x7b64, 0x7b62, 0x7b61, 0x7b5f, 0x7b5d,
+  0x7b5c, 0x7b5a, 0x7b58, 0x7b57, 0x7b55, 0x7b53, 0x7b52, 0x7b50,
+  0x7b4e, 0x7b4d, 0x7b4b, 0x7b49, 0x7b47, 0x7b46, 0x7b44, 0x7b42,
+  0x7b41, 0x7b3f, 0x7b3d, 0x7b3c, 0x7b3a, 0x7b38, 0x7b37, 0x7b35,
+  0x7b33, 0x7b31, 0x7b30, 0x7b2e, 0x7b2c, 0x7b2b, 0x7b29, 0x7b27,
+  0x7b25, 0x7b24, 0x7b22, 0x7b20, 0x7b1f, 0x7b1d, 0x7b1b, 0x7b19,
+  0x7b18, 0x7b16, 0x7b14, 0x7b13, 0x7b11, 0x7b0f, 0x7b0d, 0x7b0c,
+  0x7b0a, 0x7b08, 0x7b06, 0x7b05, 0x7b03, 0x7b01, 0x7aff, 0x7afe,
+  0x7afc, 0x7afa, 0x7af8, 0x7af7, 0x7af5, 0x7af3, 0x7af2, 0x7af0,
+  0x7aee, 0x7aec, 0x7aeb, 0x7ae9, 0x7ae7, 0x7ae5, 0x7ae3, 0x7ae2,
+  0x7ae0, 0x7ade, 0x7adc, 0x7adb, 0x7ad9, 0x7ad7, 0x7ad5, 0x7ad4,
+  0x7ad2, 0x7ad0, 0x7ace, 0x7acd, 0x7acb, 0x7ac9, 0x7ac7, 0x7ac5,
+  0x7ac4, 0x7ac2, 0x7ac0, 0x7abe, 0x7abd, 0x7abb, 0x7ab9, 0x7ab7,
+  0x7ab5, 0x7ab4, 0x7ab2, 0x7ab0, 0x7aae, 0x7aac, 0x7aab, 0x7aa9,
+  0x7aa7, 0x7aa5, 0x7aa3, 0x7aa2, 0x7aa0, 0x7a9e, 0x7a9c, 0x7a9a,
+  0x7a99, 0x7a97, 0x7a95, 0x7a93, 0x7a91, 0x7a90, 0x7a8e, 0x7a8c,
+  0x7a8a, 0x7a88, 0x7a87, 0x7a85, 0x7a83, 0x7a81, 0x7a7f, 0x7a7d,
+  0x7a7c, 0x7a7a, 0x7a78, 0x7a76, 0x7a74, 0x7a72, 0x7a71, 0x7a6f,
+  0x7a6d, 0x7a6b, 0x7a69, 0x7a67, 0x7a66, 0x7a64, 0x7a62, 0x7a60,
+  0x7a5e, 0x7a5c, 0x7a5b, 0x7a59, 0x7a57, 0x7a55, 0x7a53, 0x7a51,
+  0x7a4f, 0x7a4e, 0x7a4c, 0x7a4a, 0x7a48, 0x7a46, 0x7a44, 0x7a42,
+  0x7a41, 0x7a3f, 0x7a3d, 0x7a3b, 0x7a39, 0x7a37, 0x7a35, 0x7a34,
+  0x7a32, 0x7a30, 0x7a2e, 0x7a2c, 0x7a2a, 0x7a28, 0x7a26, 0x7a25,
+  0x7a23, 0x7a21, 0x7a1f, 0x7a1d, 0x7a1b, 0x7a19, 0x7a17, 0x7a16,
+  0x7a14, 0x7a12, 0x7a10, 0x7a0e, 0x7a0c, 0x7a0a, 0x7a08, 0x7a06,
+  0x7a04, 0x7a03, 0x7a01, 0x79ff, 0x79fd, 0x79fb, 0x79f9, 0x79f7,
+  0x79f5, 0x79f3, 0x79f1, 0x79f0, 0x79ee, 0x79ec, 0x79ea, 0x79e8,
+  0x79e6, 0x79e4, 0x79e2, 0x79e0, 0x79de, 0x79dc, 0x79da, 0x79d9,
+  0x79d7, 0x79d5, 0x79d3, 0x79d1, 0x79cf, 0x79cd, 0x79cb, 0x79c9,
+  0x79c7, 0x79c5, 0x79c3, 0x79c1, 0x79bf, 0x79bd, 0x79bc, 0x79ba,
+  0x79b8, 0x79b6, 0x79b4, 0x79b2, 0x79b0, 0x79ae, 0x79ac, 0x79aa,
+  0x79a8, 0x79a6, 0x79a4, 0x79a2, 0x79a0, 0x799e, 0x799c, 0x799a,
+  0x7998, 0x7996, 0x7994, 0x7992, 0x7991, 0x798f, 0x798d, 0x798b,
+  0x7989, 0x7987, 0x7985, 0x7983, 0x7981, 0x797f, 0x797d, 0x797b,
+  0x7979, 0x7977, 0x7975, 0x7973, 0x7971, 0x796f, 0x796d, 0x796b,
+  0x7969, 0x7967, 0x7965, 0x7963, 0x7961, 0x795f, 0x795d, 0x795b,
+  0x7959, 0x7957, 0x7955, 0x7953, 0x7951, 0x794f, 0x794d, 0x794b,
+  0x7949, 0x7947, 0x7945, 0x7943, 0x7941, 0x793f, 0x793d, 0x793b,
+  0x7939, 0x7937, 0x7935, 0x7933, 0x7931, 0x792f, 0x792d, 0x792b,
+  0x7929, 0x7927, 0x7925, 0x7923, 0x7921, 0x791f, 0x791d, 0x791a,
+  0x7918, 0x7916, 0x7914, 0x7912, 0x7910, 0x790e, 0x790c, 0x790a,
+  0x7908, 0x7906, 0x7904, 0x7902, 0x7900, 0x78fe, 0x78fc, 0x78fa,
+  0x78f8, 0x78f6, 0x78f4, 0x78f2, 0x78f0, 0x78ed, 0x78eb, 0x78e9,
+  0x78e7, 0x78e5, 0x78e3, 0x78e1, 0x78df, 0x78dd, 0x78db, 0x78d9,
+  0x78d7, 0x78d5, 0x78d3, 0x78d1, 0x78ce, 0x78cc, 0x78ca, 0x78c8,
+  0x78c6, 0x78c4, 0x78c2, 0x78c0, 0x78be, 0x78bc, 0x78ba, 0x78b8,
+  0x78b5, 0x78b3, 0x78b1, 0x78af, 0x78ad, 0x78ab, 0x78a9, 0x78a7,
+  0x78a5, 0x78a3, 0x78a0, 0x789e, 0x789c, 0x789a, 0x7898, 0x7896,
+  0x7894, 0x7892, 0x7890, 0x788e, 0x788b, 0x7889, 0x7887, 0x7885,
+  0x7883, 0x7881, 0x787f, 0x787d, 0x787a, 0x7878, 0x7876, 0x7874,
+  0x7872, 0x7870, 0x786e, 0x786c, 0x7869, 0x7867, 0x7865, 0x7863,
+  0x7861, 0x785f, 0x785d, 0x785b, 0x7858, 0x7856, 0x7854, 0x7852,
+  0x7850, 0x784e, 0x784c, 0x7849, 0x7847, 0x7845, 0x7843, 0x7841,
+  0x783f, 0x783c, 0x783a, 0x7838, 0x7836, 0x7834, 0x7832, 0x7830,
+  0x782d, 0x782b, 0x7829, 0x7827, 0x7825, 0x7823, 0x7820, 0x781e,
+  0x781c, 0x781a, 0x7818, 0x7816, 0x7813, 0x7811, 0x780f, 0x780d,
+  0x780b, 0x7808, 0x7806, 0x7804, 0x7802, 0x7800, 0x77fe, 0x77fb,
+  0x77f9, 0x77f7, 0x77f5, 0x77f3, 0x77f0, 0x77ee, 0x77ec, 0x77ea,
+  0x77e8, 0x77e5, 0x77e3, 0x77e1, 0x77df, 0x77dd, 0x77da, 0x77d8,
+  0x77d6, 0x77d4, 0x77d2, 0x77cf, 0x77cd, 0x77cb, 0x77c9, 0x77c6,
+  0x77c4, 0x77c2, 0x77c0, 0x77be, 0x77bb, 0x77b9, 0x77b7, 0x77b5,
+  0x77b2, 0x77b0, 0x77ae, 0x77ac, 0x77aa, 0x77a7, 0x77a5, 0x77a3,
+  0x77a1, 0x779e, 0x779c, 0x779a, 0x7798, 0x7795, 0x7793, 0x7791,
+  0x778f, 0x778c, 0x778a, 0x7788, 0x7786, 0x7783, 0x7781, 0x777f,
+  0x777d, 0x777a, 0x7778, 0x7776, 0x7774, 0x7771, 0x776f, 0x776d,
+  0x776b, 0x7768, 0x7766, 0x7764, 0x7762, 0x775f, 0x775d, 0x775b,
+  0x7759, 0x7756, 0x7754, 0x7752, 0x774f, 0x774d, 0x774b, 0x7749,
+  0x7746, 0x7744, 0x7742, 0x773f, 0x773d, 0x773b, 0x7739, 0x7736,
+  0x7734, 0x7732, 0x772f, 0x772d, 0x772b, 0x7729, 0x7726, 0x7724,
+  0x7722, 0x771f, 0x771d, 0x771b, 0x7719, 0x7716, 0x7714, 0x7712,
+  0x770f, 0x770d, 0x770b, 0x7708, 0x7706, 0x7704, 0x7701, 0x76ff,
+  0x76fd, 0x76fa, 0x76f8, 0x76f6, 0x76f4, 0x76f1, 0x76ef, 0x76ed,
+  0x76ea, 0x76e8, 0x76e6, 0x76e3, 0x76e1, 0x76df, 0x76dc, 0x76da,
+  0x76d8, 0x76d5, 0x76d3, 0x76d1, 0x76ce, 0x76cc, 0x76ca, 0x76c7,
+  0x76c5, 0x76c3, 0x76c0, 0x76be, 0x76bc, 0x76b9, 0x76b7, 0x76b4,
+  0x76b2, 0x76b0, 0x76ad, 0x76ab, 0x76a9, 0x76a6, 0x76a4, 0x76a2,
+  0x769f, 0x769d, 0x769b, 0x7698, 0x7696, 0x7693, 0x7691, 0x768f,
+  0x768c, 0x768a, 0x7688, 0x7685, 0x7683, 0x7681, 0x767e, 0x767c,
+  0x7679, 0x7677, 0x7675, 0x7672, 0x7670, 0x766d, 0x766b, 0x7669,
+  0x7666, 0x7664, 0x7662, 0x765f, 0x765d, 0x765a, 0x7658, 0x7656,
+  0x7653, 0x7651, 0x764e, 0x764c, 0x764a, 0x7647, 0x7645, 0x7642,
+  0x7640, 0x763e, 0x763b, 0x7639, 0x7636, 0x7634, 0x7632, 0x762f,
+  0x762d, 0x762a, 0x7628, 0x7625, 0x7623, 0x7621, 0x761e, 0x761c,
+  0x7619, 0x7617, 0x7615, 0x7612, 0x7610, 0x760d, 0x760b, 0x7608,
+  0x7606, 0x7604, 0x7601, 0x75ff, 0x75fc, 0x75fa, 0x75f7, 0x75f5,
+  0x75f2, 0x75f0, 0x75ee, 0x75eb, 0x75e9, 0x75e6, 0x75e4, 0x75e1,
+  0x75df, 0x75dc, 0x75da, 0x75d8, 0x75d5, 0x75d3, 0x75d0, 0x75ce,
+  0x75cb, 0x75c9, 0x75c6, 0x75c4, 0x75c1, 0x75bf, 0x75bc, 0x75ba,
+  0x75b8, 0x75b5, 0x75b3, 0x75b0, 0x75ae, 0x75ab, 0x75a9, 0x75a6,
+  0x75a4, 0x75a1, 0x759f, 0x759c, 0x759a, 0x7597, 0x7595, 0x7592,
+  0x7590, 0x758d, 0x758b, 0x7588, 0x7586, 0x7584, 0x7581, 0x757f,
+  0x757c, 0x757a, 0x7577, 0x7575, 0x7572, 0x7570, 0x756d, 0x756b,
+  0x7568, 0x7566, 0x7563, 0x7561, 0x755e, 0x755c, 0x7559, 0x7556,
+  0x7554, 0x7551, 0x754f, 0x754c, 0x754a, 0x7547, 0x7545, 0x7542,
+  0x7540, 0x753d, 0x753b, 0x7538, 0x7536, 0x7533, 0x7531, 0x752e,
+  0x752c, 0x7529, 0x7527, 0x7524, 0x7522, 0x751f, 0x751c, 0x751a,
+  0x7517, 0x7515, 0x7512, 0x7510, 0x750d, 0x750b, 0x7508, 0x7506,
+  0x7503, 0x7501, 0x74fe, 0x74fb, 0x74f9, 0x74f6, 0x74f4, 0x74f1,
+  0x74ef, 0x74ec, 0x74ea, 0x74e7, 0x74e4, 0x74e2, 0x74df, 0x74dd,
+  0x74da, 0x74d8, 0x74d5, 0x74d2, 0x74d0, 0x74cd, 0x74cb, 0x74c8,
+  0x74c6, 0x74c3, 0x74c0, 0x74be, 0x74bb, 0x74b9, 0x74b6, 0x74b4,
+  0x74b1, 0x74ae, 0x74ac, 0x74a9, 0x74a7, 0x74a4, 0x74a1, 0x749f,
+  0x749c, 0x749a, 0x7497, 0x7495, 0x7492, 0x748f, 0x748d, 0x748a,
+  0x7488, 0x7485, 0x7482, 0x7480, 0x747d, 0x747b, 0x7478, 0x7475,
+  0x7473, 0x7470, 0x746d, 0x746b, 0x7468, 0x7466, 0x7463, 0x7460,
+  0x745e, 0x745b, 0x7459, 0x7456, 0x7453, 0x7451, 0x744e, 0x744b,
+  0x7449, 0x7446, 0x7444, 0x7441, 0x743e, 0x743c, 0x7439, 0x7436,
+  0x7434, 0x7431, 0x742f, 0x742c, 0x7429, 0x7427, 0x7424, 0x7421,
+  0x741f, 0x741c, 0x7419, 0x7417, 0x7414, 0x7411, 0x740f, 0x740c,
+  0x740a, 0x7407, 0x7404, 0x7402, 0x73ff, 0x73fc, 0x73fa, 0x73f7,
+  0x73f4, 0x73f2, 0x73ef, 0x73ec, 0x73ea, 0x73e7, 0x73e4, 0x73e2,
+  0x73df, 0x73dc, 0x73da, 0x73d7, 0x73d4, 0x73d2, 0x73cf, 0x73cc,
+  0x73ca, 0x73c7, 0x73c4, 0x73c1, 0x73bf, 0x73bc, 0x73b9, 0x73b7,
+  0x73b4, 0x73b1, 0x73af, 0x73ac, 0x73a9, 0x73a7, 0x73a4, 0x73a1,
+  0x739f, 0x739c, 0x7399, 0x7396, 0x7394, 0x7391, 0x738e, 0x738c,
+  0x7389, 0x7386, 0x7384, 0x7381, 0x737e, 0x737b, 0x7379, 0x7376,
+  0x7373, 0x7371, 0x736e, 0x736b, 0x7368, 0x7366, 0x7363, 0x7360,
+  0x735e, 0x735b, 0x7358, 0x7355, 0x7353, 0x7350, 0x734d, 0x734a,
+  0x7348, 0x7345, 0x7342, 0x7340, 0x733d, 0x733a, 0x7337, 0x7335,
+  0x7332, 0x732f, 0x732c, 0x732a, 0x7327, 0x7324, 0x7321, 0x731f,
+  0x731c, 0x7319, 0x7316, 0x7314, 0x7311, 0x730e, 0x730b, 0x7309,
+  0x7306, 0x7303, 0x7300, 0x72fe, 0x72fb, 0x72f8, 0x72f5, 0x72f3,
+  0x72f0, 0x72ed, 0x72ea, 0x72e8, 0x72e5, 0x72e2, 0x72df, 0x72dc,
+  0x72da, 0x72d7, 0x72d4, 0x72d1, 0x72cf, 0x72cc, 0x72c9, 0x72c6,
+  0x72c3, 0x72c1, 0x72be, 0x72bb, 0x72b8, 0x72b5, 0x72b3, 0x72b0,
+  0x72ad, 0x72aa, 0x72a8, 0x72a5, 0x72a2, 0x729f, 0x729c, 0x729a,
+  0x7297, 0x7294, 0x7291, 0x728e, 0x728c, 0x7289, 0x7286, 0x7283,
+  0x7280, 0x727e, 0x727b, 0x7278, 0x7275, 0x7272, 0x726f, 0x726d,
+  0x726a, 0x7267, 0x7264, 0x7261, 0x725f, 0x725c, 0x7259, 0x7256,
+  0x7253, 0x7250, 0x724e, 0x724b, 0x7248, 0x7245, 0x7242, 0x723f,
+  0x723d, 0x723a, 0x7237, 0x7234, 0x7231, 0x722e, 0x722c, 0x7229,
+  0x7226, 0x7223, 0x7220, 0x721d, 0x721b, 0x7218, 0x7215, 0x7212,
+  0x720f, 0x720c, 0x7209, 0x7207, 0x7204, 0x7201, 0x71fe, 0x71fb,
+  0x71f8, 0x71f5, 0x71f3, 0x71f0, 0x71ed, 0x71ea, 0x71e7, 0x71e4,
+  0x71e1, 0x71df, 0x71dc, 0x71d9, 0x71d6, 0x71d3, 0x71d0, 0x71cd,
+  0x71ca, 0x71c8, 0x71c5, 0x71c2, 0x71bf, 0x71bc, 0x71b9, 0x71b6,
+  0x71b3, 0x71b0, 0x71ae, 0x71ab, 0x71a8, 0x71a5, 0x71a2, 0x719f,
+  0x719c, 0x7199, 0x7196, 0x7194, 0x7191, 0x718e, 0x718b, 0x7188,
+  0x7185, 0x7182, 0x717f, 0x717c, 0x7179, 0x7177, 0x7174, 0x7171,
+  0x716e, 0x716b, 0x7168, 0x7165, 0x7162, 0x715f, 0x715c, 0x7159,
+  0x7156, 0x7154, 0x7151, 0x714e, 0x714b, 0x7148, 0x7145, 0x7142,
+  0x713f, 0x713c, 0x7139, 0x7136, 0x7133, 0x7130, 0x712d, 0x712b,
+  0x7128, 0x7125, 0x7122, 0x711f, 0x711c, 0x7119, 0x7116, 0x7113,
+  0x7110, 0x710d, 0x710a, 0x7107, 0x7104, 0x7101, 0x70fe, 0x70fb,
+  0x70f8, 0x70f6, 0x70f3, 0x70f0, 0x70ed, 0x70ea, 0x70e7, 0x70e4,
+  0x70e1, 0x70de, 0x70db, 0x70d8, 0x70d5, 0x70d2, 0x70cf, 0x70cc,
+  0x70c9, 0x70c6, 0x70c3, 0x70c0, 0x70bd, 0x70ba, 0x70b7, 0x70b4,
+  0x70b1, 0x70ae, 0x70ab, 0x70a8, 0x70a5, 0x70a2, 0x709f, 0x709c,
+  0x7099, 0x7096, 0x7093, 0x7090, 0x708d, 0x708a, 0x7087, 0x7084,
+  0x7081, 0x707e, 0x707b, 0x7078, 0x7075, 0x7072, 0x706f, 0x706c,
+  0x7069, 0x7066, 0x7063, 0x7060, 0x705d, 0x705a, 0x7057, 0x7054,
+  0x7051, 0x704e, 0x704b, 0x7048, 0x7045, 0x7042, 0x703f, 0x703c,
+  0x7039, 0x7036, 0x7033, 0x7030, 0x702d, 0x702a, 0x7027, 0x7024,
+  0x7021, 0x701e, 0x701b, 0x7018, 0x7015, 0x7012, 0x700f, 0x700c,
+  0x7009, 0x7006, 0x7003, 0x7000, 0x6ffd, 0x6ffa, 0x6ff7, 0x6ff3,
+  0x6ff0, 0x6fed, 0x6fea, 0x6fe7, 0x6fe4, 0x6fe1, 0x6fde, 0x6fdb,
+  0x6fd8, 0x6fd5, 0x6fd2, 0x6fcf, 0x6fcc, 0x6fc9, 0x6fc6, 0x6fc3,
+  0x6fc0, 0x6fbc, 0x6fb9, 0x6fb6, 0x6fb3, 0x6fb0, 0x6fad, 0x6faa,
+  0x6fa7, 0x6fa4, 0x6fa1, 0x6f9e, 0x6f9b, 0x6f98, 0x6f95, 0x6f91,
+  0x6f8e, 0x6f8b, 0x6f88, 0x6f85, 0x6f82, 0x6f7f, 0x6f7c, 0x6f79,
+  0x6f76, 0x6f73, 0x6f70, 0x6f6c, 0x6f69, 0x6f66, 0x6f63, 0x6f60,
+  0x6f5d, 0x6f5a, 0x6f57, 0x6f54, 0x6f51, 0x6f4d, 0x6f4a, 0x6f47,
+  0x6f44, 0x6f41, 0x6f3e, 0x6f3b, 0x6f38, 0x6f35, 0x6f31, 0x6f2e,
+  0x6f2b, 0x6f28, 0x6f25, 0x6f22, 0x6f1f, 0x6f1c, 0x6f19, 0x6f15,
+  0x6f12, 0x6f0f, 0x6f0c, 0x6f09, 0x6f06, 0x6f03, 0x6f00, 0x6efc,
+  0x6ef9, 0x6ef6, 0x6ef3, 0x6ef0, 0x6eed, 0x6eea, 0x6ee7, 0x6ee3,
+  0x6ee0, 0x6edd, 0x6eda, 0x6ed7, 0x6ed4, 0x6ed1, 0x6ecd, 0x6eca,
+  0x6ec7, 0x6ec4, 0x6ec1, 0x6ebe, 0x6eba, 0x6eb7, 0x6eb4, 0x6eb1,
+  0x6eae, 0x6eab, 0x6ea8, 0x6ea4, 0x6ea1, 0x6e9e, 0x6e9b, 0x6e98,
+  0x6e95, 0x6e91, 0x6e8e, 0x6e8b, 0x6e88, 0x6e85, 0x6e82, 0x6e7e,
+  0x6e7b, 0x6e78, 0x6e75, 0x6e72, 0x6e6f, 0x6e6b, 0x6e68, 0x6e65,
+  0x6e62, 0x6e5f, 0x6e5b, 0x6e58, 0x6e55, 0x6e52, 0x6e4f, 0x6e4c,
+  0x6e48, 0x6e45, 0x6e42, 0x6e3f, 0x6e3c, 0x6e38, 0x6e35, 0x6e32,
+  0x6e2f, 0x6e2c, 0x6e28, 0x6e25, 0x6e22, 0x6e1f, 0x6e1c, 0x6e18,
+  0x6e15, 0x6e12, 0x6e0f, 0x6e0c, 0x6e08, 0x6e05, 0x6e02, 0x6dff,
+  0x6dfb, 0x6df8, 0x6df5, 0x6df2, 0x6def, 0x6deb, 0x6de8, 0x6de5,
+  0x6de2, 0x6ddf, 0x6ddb, 0x6dd8, 0x6dd5, 0x6dd2, 0x6dce, 0x6dcb,
+  0x6dc8, 0x6dc5, 0x6dc1, 0x6dbe, 0x6dbb, 0x6db8, 0x6db5, 0x6db1,
+  0x6dae, 0x6dab, 0x6da8, 0x6da4, 0x6da1, 0x6d9e, 0x6d9b, 0x6d97,
+  0x6d94, 0x6d91, 0x6d8e, 0x6d8a, 0x6d87, 0x6d84, 0x6d81, 0x6d7d,
+  0x6d7a, 0x6d77, 0x6d74, 0x6d70, 0x6d6d, 0x6d6a, 0x6d67, 0x6d63,
+  0x6d60, 0x6d5d, 0x6d59, 0x6d56, 0x6d53, 0x6d50, 0x6d4c, 0x6d49,
+  0x6d46, 0x6d43, 0x6d3f, 0x6d3c, 0x6d39, 0x6d36, 0x6d32, 0x6d2f,
+  0x6d2c, 0x6d28, 0x6d25, 0x6d22, 0x6d1f, 0x6d1b, 0x6d18, 0x6d15,
+  0x6d11, 0x6d0e, 0x6d0b, 0x6d08, 0x6d04, 0x6d01, 0x6cfe, 0x6cfa,
+  0x6cf7, 0x6cf4, 0x6cf0, 0x6ced, 0x6cea, 0x6ce7, 0x6ce3, 0x6ce0,
+  0x6cdd, 0x6cd9, 0x6cd6, 0x6cd3, 0x6ccf, 0x6ccc, 0x6cc9, 0x6cc5,
+  0x6cc2, 0x6cbf, 0x6cbc, 0x6cb8, 0x6cb5, 0x6cb2, 0x6cae, 0x6cab,
+  0x6ca8, 0x6ca4, 0x6ca1, 0x6c9e, 0x6c9a, 0x6c97, 0x6c94, 0x6c90,
+  0x6c8d, 0x6c8a, 0x6c86, 0x6c83, 0x6c80, 0x6c7c, 0x6c79, 0x6c76,
+  0x6c72, 0x6c6f, 0x6c6c, 0x6c68, 0x6c65, 0x6c62, 0x6c5e, 0x6c5b,
+  0x6c58, 0x6c54, 0x6c51, 0x6c4e, 0x6c4a, 0x6c47, 0x6c44, 0x6c40,
+  0x6c3d, 0x6c39, 0x6c36, 0x6c33, 0x6c2f, 0x6c2c, 0x6c29, 0x6c25,
+  0x6c22, 0x6c1f, 0x6c1b, 0x6c18, 0x6c15, 0x6c11, 0x6c0e, 0x6c0a,
+  0x6c07, 0x6c04, 0x6c00, 0x6bfd, 0x6bfa, 0x6bf6, 0x6bf3, 0x6bef,
+  0x6bec, 0x6be9, 0x6be5, 0x6be2, 0x6bdf, 0x6bdb, 0x6bd8, 0x6bd4,
+  0x6bd1, 0x6bce, 0x6bca, 0x6bc7, 0x6bc3, 0x6bc0, 0x6bbd, 0x6bb9,
+  0x6bb6, 0x6bb2, 0x6baf, 0x6bac, 0x6ba8, 0x6ba5, 0x6ba1, 0x6b9e,
+  0x6b9b, 0x6b97, 0x6b94, 0x6b90, 0x6b8d, 0x6b8a, 0x6b86, 0x6b83,
+  0x6b7f, 0x6b7c, 0x6b79, 0x6b75, 0x6b72, 0x6b6e, 0x6b6b, 0x6b68,
+  0x6b64, 0x6b61, 0x6b5d, 0x6b5a, 0x6b56, 0x6b53, 0x6b50, 0x6b4c,
+  0x6b49, 0x6b45, 0x6b42, 0x6b3e, 0x6b3b, 0x6b38, 0x6b34, 0x6b31,
+  0x6b2d, 0x6b2a, 0x6b26, 0x6b23, 0x6b20, 0x6b1c, 0x6b19, 0x6b15,
+  0x6b12, 0x6b0e, 0x6b0b, 0x6b07, 0x6b04, 0x6b01, 0x6afd, 0x6afa,
+  0x6af6, 0x6af3, 0x6aef, 0x6aec, 0x6ae8, 0x6ae5, 0x6ae1, 0x6ade,
+  0x6adb, 0x6ad7, 0x6ad4, 0x6ad0, 0x6acd, 0x6ac9, 0x6ac6, 0x6ac2,
+  0x6abf, 0x6abb, 0x6ab8, 0x6ab4, 0x6ab1, 0x6aae, 0x6aaa, 0x6aa7,
+  0x6aa3, 0x6aa0, 0x6a9c, 0x6a99, 0x6a95, 0x6a92, 0x6a8e, 0x6a8b,
+  0x6a87, 0x6a84, 0x6a80, 0x6a7d, 0x6a79, 0x6a76, 0x6a72, 0x6a6f,
+  0x6a6b, 0x6a68, 0x6a64, 0x6a61, 0x6a5d, 0x6a5a, 0x6a56, 0x6a53,
+  0x6a4f, 0x6a4c, 0x6a48, 0x6a45, 0x6a41, 0x6a3e, 0x6a3a, 0x6a37,
+  0x6a33, 0x6a30, 0x6a2c, 0x6a29, 0x6a25, 0x6a22, 0x6a1e, 0x6a1b,
+  0x6a17, 0x6a14, 0x6a10, 0x6a0d, 0x6a09, 0x6a06, 0x6a02, 0x69ff,
+  0x69fb, 0x69f8, 0x69f4, 0x69f1, 0x69ed, 0x69e9, 0x69e6, 0x69e2,
+  0x69df, 0x69db, 0x69d8, 0x69d4, 0x69d1, 0x69cd, 0x69ca, 0x69c6,
+  0x69c3, 0x69bf, 0x69bc, 0x69b8, 0x69b4, 0x69b1, 0x69ad, 0x69aa,
+  0x69a6, 0x69a3, 0x699f, 0x699c, 0x6998, 0x6995, 0x6991, 0x698d,
+  0x698a, 0x6986, 0x6983, 0x697f, 0x697c, 0x6978, 0x6975, 0x6971,
+  0x696d, 0x696a, 0x6966, 0x6963, 0x695f, 0x695c, 0x6958, 0x6954,
+  0x6951, 0x694d, 0x694a, 0x6946, 0x6943, 0x693f, 0x693b, 0x6938,
+  0x6934, 0x6931, 0x692d, 0x692a, 0x6926, 0x6922, 0x691f, 0x691b,
+  0x6918, 0x6914, 0x6910, 0x690d, 0x6909, 0x6906, 0x6902, 0x68fe,
+  0x68fb, 0x68f7, 0x68f4, 0x68f0, 0x68ec, 0x68e9, 0x68e5, 0x68e2,
+  0x68de, 0x68da, 0x68d7, 0x68d3, 0x68d0, 0x68cc, 0x68c8, 0x68c5,
+  0x68c1, 0x68be, 0x68ba, 0x68b6, 0x68b3, 0x68af, 0x68ac, 0x68a8,
+  0x68a4, 0x68a1, 0x689d, 0x6899, 0x6896, 0x6892, 0x688f, 0x688b,
+  0x6887, 0x6884, 0x6880, 0x687c, 0x6879, 0x6875, 0x6872, 0x686e,
+  0x686a, 0x6867, 0x6863, 0x685f, 0x685c, 0x6858, 0x6854, 0x6851,
+  0x684d, 0x684a, 0x6846, 0x6842, 0x683f, 0x683b, 0x6837, 0x6834,
+  0x6830, 0x682c, 0x6829, 0x6825, 0x6821, 0x681e, 0x681a, 0x6816,
+  0x6813, 0x680f, 0x680b, 0x6808, 0x6804, 0x6800, 0x67fd, 0x67f9,
+  0x67f5, 0x67f2, 0x67ee, 0x67ea, 0x67e7, 0x67e3, 0x67df, 0x67dc,
+  0x67d8, 0x67d4, 0x67d1, 0x67cd, 0x67c9, 0x67c6, 0x67c2, 0x67be,
+  0x67bb, 0x67b7, 0x67b3, 0x67b0, 0x67ac, 0x67a8, 0x67a5, 0x67a1,
+  0x679d, 0x679a, 0x6796, 0x6792, 0x678e, 0x678b, 0x6787, 0x6783,
+  0x6780, 0x677c, 0x6778, 0x6775, 0x6771, 0x676d, 0x6769, 0x6766,
+  0x6762, 0x675e, 0x675b, 0x6757, 0x6753, 0x6750, 0x674c, 0x6748,
+  0x6744, 0x6741, 0x673d, 0x6739, 0x6736, 0x6732, 0x672e, 0x672a,
+  0x6727, 0x6723, 0x671f, 0x671c, 0x6718, 0x6714, 0x6710, 0x670d,
+  0x6709, 0x6705, 0x6701, 0x66fe, 0x66fa, 0x66f6, 0x66f3, 0x66ef,
+  0x66eb, 0x66e7, 0x66e4, 0x66e0, 0x66dc, 0x66d8, 0x66d5, 0x66d1,
+  0x66cd, 0x66c9, 0x66c6, 0x66c2, 0x66be, 0x66ba, 0x66b7, 0x66b3,
+  0x66af, 0x66ab, 0x66a8, 0x66a4, 0x66a0, 0x669c, 0x6699, 0x6695,
+  0x6691, 0x668d, 0x668a, 0x6686, 0x6682, 0x667e, 0x667b, 0x6677,
+  0x6673, 0x666f, 0x666b, 0x6668, 0x6664, 0x6660, 0x665c, 0x6659,
+  0x6655, 0x6651, 0x664d, 0x664a, 0x6646, 0x6642, 0x663e, 0x663a,
+  0x6637, 0x6633, 0x662f, 0x662b, 0x6627, 0x6624, 0x6620, 0x661c,
+  0x6618, 0x6615, 0x6611, 0x660d, 0x6609, 0x6605, 0x6602, 0x65fe,
+  0x65fa, 0x65f6, 0x65f2, 0x65ef, 0x65eb, 0x65e7, 0x65e3, 0x65df,
+  0x65dc, 0x65d8, 0x65d4, 0x65d0, 0x65cc, 0x65c9, 0x65c5, 0x65c1,
+  0x65bd, 0x65b9, 0x65b5, 0x65b2, 0x65ae, 0x65aa, 0x65a6, 0x65a2,
+  0x659f, 0x659b, 0x6597, 0x6593, 0x658f, 0x658b, 0x6588, 0x6584,
+  0x6580, 0x657c, 0x6578, 0x6574, 0x6571, 0x656d, 0x6569, 0x6565,
+  0x6561, 0x655d, 0x655a, 0x6556, 0x6552, 0x654e, 0x654a, 0x6546,
+  0x6543, 0x653f, 0x653b, 0x6537, 0x6533, 0x652f, 0x652c, 0x6528,
+  0x6524, 0x6520, 0x651c, 0x6518, 0x6514, 0x6511, 0x650d, 0x6509,
+  0x6505, 0x6501, 0x64fd, 0x64f9, 0x64f6, 0x64f2, 0x64ee, 0x64ea,
+  0x64e6, 0x64e2, 0x64de, 0x64db, 0x64d7, 0x64d3, 0x64cf, 0x64cb,
+  0x64c7, 0x64c3, 0x64bf, 0x64bc, 0x64b8, 0x64b4, 0x64b0, 0x64ac,
+  0x64a8, 0x64a4, 0x64a0, 0x649c, 0x6499, 0x6495, 0x6491, 0x648d,
+  0x6489, 0x6485, 0x6481, 0x647d, 0x6479, 0x6476, 0x6472, 0x646e,
+  0x646a, 0x6466, 0x6462, 0x645e, 0x645a, 0x6456, 0x6453, 0x644f,
+  0x644b, 0x6447, 0x6443, 0x643f, 0x643b, 0x6437, 0x6433, 0x642f,
+  0x642b, 0x6428, 0x6424, 0x6420, 0x641c, 0x6418, 0x6414, 0x6410,
+  0x640c, 0x6408, 0x6404, 0x6400, 0x63fc, 0x63f9, 0x63f5, 0x63f1,
+  0x63ed, 0x63e9, 0x63e5, 0x63e1, 0x63dd, 0x63d9, 0x63d5, 0x63d1,
+  0x63cd, 0x63c9, 0x63c5, 0x63c1, 0x63be, 0x63ba, 0x63b6, 0x63b2,
+  0x63ae, 0x63aa, 0x63a6, 0x63a2, 0x639e, 0x639a, 0x6396, 0x6392,
+  0x638e, 0x638a, 0x6386, 0x6382, 0x637e, 0x637a, 0x6377, 0x6373,
+  0x636f, 0x636b, 0x6367, 0x6363, 0x635f, 0x635b, 0x6357, 0x6353,
+  0x634f, 0x634b, 0x6347, 0x6343, 0x633f, 0x633b, 0x6337, 0x6333,
+  0x632f, 0x632b, 0x6327, 0x6323, 0x631f, 0x631b, 0x6317, 0x6313,
+  0x630f, 0x630b, 0x6307, 0x6303, 0x62ff, 0x62fb, 0x62f7, 0x62f3,
+  0x62f0, 0x62ec, 0x62e8, 0x62e4, 0x62e0, 0x62dc, 0x62d8, 0x62d4,
+  0x62d0, 0x62cc, 0x62c8, 0x62c4, 0x62c0, 0x62bc, 0x62b8, 0x62b4,
+  0x62b0, 0x62ac, 0x62a8, 0x62a4, 0x62a0, 0x629c, 0x6298, 0x6294,
+  0x6290, 0x628c, 0x6288, 0x6284, 0x6280, 0x627c, 0x6278, 0x6273,
+  0x626f, 0x626b, 0x6267, 0x6263, 0x625f, 0x625b, 0x6257, 0x6253,
+  0x624f, 0x624b, 0x6247, 0x6243, 0x623f, 0x623b, 0x6237, 0x6233,
+  0x622f, 0x622b, 0x6227, 0x6223, 0x621f, 0x621b, 0x6217, 0x6213,
+  0x620f, 0x620b, 0x6207, 0x6203, 0x61ff, 0x61fb, 0x61f7, 0x61f3,
+  0x61ee, 0x61ea, 0x61e6, 0x61e2, 0x61de, 0x61da, 0x61d6, 0x61d2,
+  0x61ce, 0x61ca, 0x61c6, 0x61c2, 0x61be, 0x61ba, 0x61b6, 0x61b2,
+  0x61ae, 0x61aa, 0x61a6, 0x61a1, 0x619d, 0x6199, 0x6195, 0x6191,
+  0x618d, 0x6189, 0x6185, 0x6181, 0x617d, 0x6179, 0x6175, 0x6171,
+  0x616d, 0x6168, 0x6164, 0x6160, 0x615c, 0x6158, 0x6154, 0x6150,
+  0x614c, 0x6148, 0x6144, 0x6140, 0x613c, 0x6137, 0x6133, 0x612f,
+  0x612b, 0x6127, 0x6123, 0x611f, 0x611b, 0x6117, 0x6113, 0x610f,
+  0x610a, 0x6106, 0x6102, 0x60fe, 0x60fa, 0x60f6, 0x60f2, 0x60ee,
+  0x60ea, 0x60e6, 0x60e1, 0x60dd, 0x60d9, 0x60d5, 0x60d1, 0x60cd,
+  0x60c9, 0x60c5, 0x60c1, 0x60bc, 0x60b8, 0x60b4, 0x60b0, 0x60ac,
+  0x60a8, 0x60a4, 0x60a0, 0x609c, 0x6097, 0x6093, 0x608f, 0x608b,
+  0x6087, 0x6083, 0x607f, 0x607b, 0x6076, 0x6072, 0x606e, 0x606a,
+  0x6066, 0x6062, 0x605e, 0x6059, 0x6055, 0x6051, 0x604d, 0x6049,
+  0x6045, 0x6041, 0x603c, 0x6038, 0x6034, 0x6030, 0x602c, 0x6028,
+  0x6024, 0x601f, 0x601b, 0x6017, 0x6013, 0x600f, 0x600b, 0x6007,
+  0x6002, 0x5ffe, 0x5ffa, 0x5ff6, 0x5ff2, 0x5fee, 0x5fe9, 0x5fe5,
+  0x5fe1, 0x5fdd, 0x5fd9, 0x5fd5, 0x5fd0, 0x5fcc, 0x5fc8, 0x5fc4,
+  0x5fc0, 0x5fbc, 0x5fb7, 0x5fb3, 0x5faf, 0x5fab, 0x5fa7, 0x5fa3,
+  0x5f9e, 0x5f9a, 0x5f96, 0x5f92, 0x5f8e, 0x5f8a, 0x5f85, 0x5f81,
+  0x5f7d, 0x5f79, 0x5f75, 0x5f70, 0x5f6c, 0x5f68, 0x5f64, 0x5f60,
+  0x5f5b, 0x5f57, 0x5f53, 0x5f4f, 0x5f4b, 0x5f46, 0x5f42, 0x5f3e,
+  0x5f3a, 0x5f36, 0x5f31, 0x5f2d, 0x5f29, 0x5f25, 0x5f21, 0x5f1c,
+  0x5f18, 0x5f14, 0x5f10, 0x5f0c, 0x5f07, 0x5f03, 0x5eff, 0x5efb,
+  0x5ef7, 0x5ef2, 0x5eee, 0x5eea, 0x5ee6, 0x5ee2, 0x5edd, 0x5ed9,
+  0x5ed5, 0x5ed1, 0x5ecc, 0x5ec8, 0x5ec4, 0x5ec0, 0x5ebc, 0x5eb7,
+  0x5eb3, 0x5eaf, 0x5eab, 0x5ea6, 0x5ea2, 0x5e9e, 0x5e9a, 0x5e95,
+  0x5e91, 0x5e8d, 0x5e89, 0x5e85, 0x5e80, 0x5e7c, 0x5e78, 0x5e74,
+  0x5e6f, 0x5e6b, 0x5e67, 0x5e63, 0x5e5e, 0x5e5a, 0x5e56, 0x5e52,
+  0x5e4d, 0x5e49, 0x5e45, 0x5e41, 0x5e3c, 0x5e38, 0x5e34, 0x5e30,
+  0x5e2b, 0x5e27, 0x5e23, 0x5e1f, 0x5e1a, 0x5e16, 0x5e12, 0x5e0e,
+  0x5e09, 0x5e05, 0x5e01, 0x5dfd, 0x5df8, 0x5df4, 0x5df0, 0x5deb,
+  0x5de7, 0x5de3, 0x5ddf, 0x5dda, 0x5dd6, 0x5dd2, 0x5dce, 0x5dc9,
+  0x5dc5, 0x5dc1, 0x5dbc, 0x5db8, 0x5db4, 0x5db0, 0x5dab, 0x5da7,
+  0x5da3, 0x5d9e, 0x5d9a, 0x5d96, 0x5d92, 0x5d8d, 0x5d89, 0x5d85,
+  0x5d80, 0x5d7c, 0x5d78, 0x5d74, 0x5d6f, 0x5d6b, 0x5d67, 0x5d62,
+  0x5d5e, 0x5d5a, 0x5d55, 0x5d51, 0x5d4d, 0x5d49, 0x5d44, 0x5d40,
+  0x5d3c, 0x5d37, 0x5d33, 0x5d2f, 0x5d2a, 0x5d26, 0x5d22, 0x5d1e,
+  0x5d19, 0x5d15, 0x5d11, 0x5d0c, 0x5d08, 0x5d04, 0x5cff, 0x5cfb,
+  0x5cf7, 0x5cf2, 0x5cee, 0x5cea, 0x5ce5, 0x5ce1, 0x5cdd, 0x5cd8,
+  0x5cd4, 0x5cd0, 0x5ccb, 0x5cc7, 0x5cc3, 0x5cbe, 0x5cba, 0x5cb6,
+  0x5cb1, 0x5cad, 0x5ca9, 0x5ca4, 0x5ca0, 0x5c9c, 0x5c97, 0x5c93,
+  0x5c8f, 0x5c8a, 0x5c86, 0x5c82, 0x5c7d, 0x5c79, 0x5c75, 0x5c70,
+  0x5c6c, 0x5c68, 0x5c63, 0x5c5f, 0x5c5b, 0x5c56, 0x5c52, 0x5c4e,
+  0x5c49, 0x5c45, 0x5c41, 0x5c3c, 0x5c38, 0x5c33, 0x5c2f, 0x5c2b,
+  0x5c26, 0x5c22, 0x5c1e, 0x5c19, 0x5c15, 0x5c11, 0x5c0c, 0x5c08,
+  0x5c03, 0x5bff, 0x5bfb, 0x5bf6, 0x5bf2, 0x5bee, 0x5be9, 0x5be5,
+  0x5be0, 0x5bdc, 0x5bd8, 0x5bd3, 0x5bcf, 0x5bcb, 0x5bc6, 0x5bc2,
+  0x5bbd, 0x5bb9, 0x5bb5, 0x5bb0, 0x5bac, 0x5ba8, 0x5ba3, 0x5b9f,
+  0x5b9a, 0x5b96, 0x5b92, 0x5b8d, 0x5b89, 0x5b84, 0x5b80, 0x5b7c,
+  0x5b77, 0x5b73, 0x5b6e, 0x5b6a, 0x5b66, 0x5b61, 0x5b5d, 0x5b58,
+  0x5b54, 0x5b50, 0x5b4b, 0x5b47, 0x5b42, 0x5b3e, 0x5b3a, 0x5b35,
+  0x5b31, 0x5b2c, 0x5b28, 0x5b24, 0x5b1f, 0x5b1b, 0x5b16, 0x5b12,
+  0x5b0e, 0x5b09, 0x5b05, 0x5b00, 0x5afc, 0x5af7, 0x5af3, 0x5aef,
+  0x5aea, 0x5ae6, 0x5ae1, 0x5add, 0x5ad8, 0x5ad4, 0x5ad0, 0x5acb,
+  0x5ac7, 0x5ac2, 0x5abe, 0x5ab9, 0x5ab5, 0x5ab1, 0x5aac, 0x5aa8,
+  0x5aa3, 0x5a9f, 0x5a9a, 0x5a96, 0x5a92, 0x5a8d, 0x5a89, 0x5a84,
+  0x5a80, 0x5a7b, 0x5a77, 0x5a72, 0x5a6e, 0x5a6a, 0x5a65, 0x5a61,
+  0x5a5c, 0x5a58, 0x5a53, 0x5a4f, 0x5a4a, 0x5a46, 0x5a41, 0x5a3d,
+  0x5a39, 0x5a34, 0x5a30, 0x5a2b, 0x5a27, 0x5a22, 0x5a1e, 0x5a19,
+  0x5a15, 0x5a10, 0x5a0c, 0x5a07, 0x5a03, 0x59ff, 0x59fa, 0x59f6,
+  0x59f1, 0x59ed, 0x59e8, 0x59e4, 0x59df, 0x59db, 0x59d6, 0x59d2,
+  0x59cd, 0x59c9, 0x59c4, 0x59c0, 0x59bb, 0x59b7, 0x59b2, 0x59ae,
+  0x59a9, 0x59a5, 0x59a1, 0x599c, 0x5998, 0x5993, 0x598f, 0x598a,
+  0x5986, 0x5981, 0x597d, 0x5978, 0x5974, 0x596f, 0x596b, 0x5966,
+  0x5962, 0x595d, 0x5959, 0x5954, 0x5950, 0x594b, 0x5947, 0x5942,
+  0x593e, 0x5939, 0x5935, 0x5930, 0x592c, 0x5927, 0x5923, 0x591e,
+  0x591a, 0x5915, 0x5911, 0x590c, 0x5908, 0x5903, 0x58fe, 0x58fa,
+  0x58f5, 0x58f1, 0x58ec, 0x58e8, 0x58e3, 0x58df, 0x58da, 0x58d6,
+  0x58d1, 0x58cd, 0x58c8, 0x58c4, 0x58bf, 0x58bb, 0x58b6, 0x58b2,
+  0x58ad, 0x58a9, 0x58a4, 0x589f, 0x589b, 0x5896, 0x5892, 0x588d,
+  0x5889, 0x5884, 0x5880, 0x587b, 0x5877, 0x5872, 0x586e, 0x5869,
+  0x5864, 0x5860, 0x585b, 0x5857, 0x5852, 0x584e, 0x5849, 0x5845,
+  0x5840, 0x583c, 0x5837, 0x5832, 0x582e, 0x5829, 0x5825, 0x5820,
+  0x581c, 0x5817, 0x5813, 0x580e, 0x5809, 0x5805, 0x5800, 0x57fc,
+  0x57f7, 0x57f3, 0x57ee, 0x57e9, 0x57e5, 0x57e0, 0x57dc, 0x57d7,
+  0x57d3, 0x57ce, 0x57c9, 0x57c5, 0x57c0, 0x57bc, 0x57b7, 0x57b3,
+  0x57ae, 0x57a9, 0x57a5, 0x57a0, 0x579c, 0x5797, 0x5793, 0x578e,
+  0x5789, 0x5785, 0x5780, 0x577c, 0x5777, 0x5772, 0x576e, 0x5769,
+  0x5765, 0x5760, 0x575c, 0x5757, 0x5752, 0x574e, 0x5749, 0x5745,
+  0x5740, 0x573b, 0x5737, 0x5732, 0x572e, 0x5729, 0x5724, 0x5720,
+  0x571b, 0x5717, 0x5712, 0x570d, 0x5709, 0x5704, 0x56ff, 0x56fb,
+  0x56f6, 0x56f2, 0x56ed, 0x56e8, 0x56e4, 0x56df, 0x56db, 0x56d6,
+  0x56d1, 0x56cd, 0x56c8, 0x56c4, 0x56bf, 0x56ba, 0x56b6, 0x56b1,
+  0x56ac, 0x56a8, 0x56a3, 0x569f, 0x569a, 0x5695, 0x5691, 0x568c,
+  0x5687, 0x5683, 0x567e, 0x5679, 0x5675, 0x5670, 0x566c, 0x5667,
+  0x5662, 0x565e, 0x5659, 0x5654, 0x5650, 0x564b, 0x5646, 0x5642,
+  0x563d, 0x5639, 0x5634, 0x562f, 0x562b, 0x5626, 0x5621, 0x561d,
+  0x5618, 0x5613, 0x560f, 0x560a, 0x5605, 0x5601, 0x55fc, 0x55f7,
+  0x55f3, 0x55ee, 0x55ea, 0x55e5, 0x55e0, 0x55dc, 0x55d7, 0x55d2,
+  0x55ce, 0x55c9, 0x55c4, 0x55c0, 0x55bb, 0x55b6, 0x55b2, 0x55ad,
+  0x55a8, 0x55a4, 0x559f, 0x559a, 0x5596, 0x5591, 0x558c, 0x5588,
+  0x5583, 0x557e, 0x5579, 0x5575, 0x5570, 0x556b, 0x5567, 0x5562,
+  0x555d, 0x5559, 0x5554, 0x554f, 0x554b, 0x5546, 0x5541, 0x553d,
+  0x5538, 0x5533, 0x552f, 0x552a, 0x5525, 0x5520, 0x551c, 0x5517,
+  0x5512, 0x550e, 0x5509, 0x5504, 0x5500, 0x54fb, 0x54f6, 0x54f2,
+  0x54ed, 0x54e8, 0x54e3, 0x54df, 0x54da, 0x54d5, 0x54d1, 0x54cc,
+  0x54c7, 0x54c2, 0x54be, 0x54b9, 0x54b4, 0x54b0, 0x54ab, 0x54a6,
+  0x54a2, 0x549d, 0x5498, 0x5493, 0x548f, 0x548a, 0x5485, 0x5480,
+  0x547c, 0x5477, 0x5472, 0x546e, 0x5469, 0x5464, 0x545f, 0x545b,
+  0x5456, 0x5451, 0x544d, 0x5448, 0x5443, 0x543e, 0x543a, 0x5435,
+  0x5430, 0x542b, 0x5427, 0x5422, 0x541d, 0x5418, 0x5414, 0x540f,
+  0x540a, 0x5406, 0x5401, 0x53fc, 0x53f7, 0x53f3, 0x53ee, 0x53e9,
+  0x53e4, 0x53e0, 0x53db, 0x53d6, 0x53d1, 0x53cd, 0x53c8, 0x53c3,
+  0x53be, 0x53ba, 0x53b5, 0x53b0, 0x53ab, 0x53a7, 0x53a2, 0x539d,
+  0x5398, 0x5394, 0x538f, 0x538a, 0x5385, 0x5380, 0x537c, 0x5377,
+  0x5372, 0x536d, 0x5369, 0x5364, 0x535f, 0x535a, 0x5356, 0x5351,
+  0x534c, 0x5347, 0x5343, 0x533e, 0x5339, 0x5334, 0x532f, 0x532b,
+  0x5326, 0x5321, 0x531c, 0x5318, 0x5313, 0x530e, 0x5309, 0x5304,
+  0x5300, 0x52fb, 0x52f6, 0x52f1, 0x52ec, 0x52e8, 0x52e3, 0x52de,
+  0x52d9, 0x52d5, 0x52d0, 0x52cb, 0x52c6, 0x52c1, 0x52bd, 0x52b8,
+  0x52b3, 0x52ae, 0x52a9, 0x52a5, 0x52a0, 0x529b, 0x5296, 0x5291,
+  0x528d, 0x5288, 0x5283, 0x527e, 0x5279, 0x5275, 0x5270, 0x526b,
+  0x5266, 0x5261, 0x525d, 0x5258, 0x5253, 0x524e, 0x5249, 0x5244,
+  0x5240, 0x523b, 0x5236, 0x5231, 0x522c, 0x5228, 0x5223, 0x521e,
+  0x5219, 0x5214, 0x520f, 0x520b, 0x5206, 0x5201, 0x51fc, 0x51f7,
+  0x51f3, 0x51ee, 0x51e9, 0x51e4, 0x51df, 0x51da, 0x51d6, 0x51d1,
+  0x51cc, 0x51c7, 0x51c2, 0x51bd, 0x51b9, 0x51b4, 0x51af, 0x51aa,
+  0x51a5, 0x51a0, 0x519c, 0x5197, 0x5192, 0x518d, 0x5188, 0x5183,
+  0x517e, 0x517a, 0x5175, 0x5170, 0x516b, 0x5166, 0x5161, 0x515d,
+  0x5158, 0x5153, 0x514e, 0x5149, 0x5144, 0x513f, 0x513b, 0x5136,
+  0x5131, 0x512c, 0x5127, 0x5122, 0x511d, 0x5119, 0x5114, 0x510f,
+  0x510a, 0x5105, 0x5100, 0x50fb, 0x50f7, 0x50f2, 0x50ed, 0x50e8,
+  0x50e3, 0x50de, 0x50d9, 0x50d4, 0x50d0, 0x50cb, 0x50c6, 0x50c1,
+  0x50bc, 0x50b7, 0x50b2, 0x50ad, 0x50a9, 0x50a4, 0x509f, 0x509a,
+  0x5095, 0x5090, 0x508b, 0x5086, 0x5082, 0x507d, 0x5078, 0x5073,
+  0x506e, 0x5069, 0x5064, 0x505f, 0x505a, 0x5056, 0x5051, 0x504c,
+  0x5047, 0x5042, 0x503d, 0x5038, 0x5033, 0x502e, 0x5029, 0x5025,
+  0x5020, 0x501b, 0x5016, 0x5011, 0x500c, 0x5007, 0x5002, 0x4ffd,
+  0x4ff8, 0x4ff4, 0x4fef, 0x4fea, 0x4fe5, 0x4fe0, 0x4fdb, 0x4fd6,
+  0x4fd1, 0x4fcc, 0x4fc7, 0x4fc2, 0x4fbe, 0x4fb9, 0x4fb4, 0x4faf,
+  0x4faa, 0x4fa5, 0x4fa0, 0x4f9b, 0x4f96, 0x4f91, 0x4f8c, 0x4f87,
+  0x4f82, 0x4f7e, 0x4f79, 0x4f74, 0x4f6f, 0x4f6a, 0x4f65, 0x4f60,
+  0x4f5b, 0x4f56, 0x4f51, 0x4f4c, 0x4f47, 0x4f42, 0x4f3d, 0x4f39,
+  0x4f34, 0x4f2f, 0x4f2a, 0x4f25, 0x4f20, 0x4f1b, 0x4f16, 0x4f11,
+  0x4f0c, 0x4f07, 0x4f02, 0x4efd, 0x4ef8, 0x4ef3, 0x4eee, 0x4ee9,
+  0x4ee5, 0x4ee0, 0x4edb, 0x4ed6, 0x4ed1, 0x4ecc, 0x4ec7, 0x4ec2,
+  0x4ebd, 0x4eb8, 0x4eb3, 0x4eae, 0x4ea9, 0x4ea4, 0x4e9f, 0x4e9a,
+  0x4e95, 0x4e90, 0x4e8b, 0x4e86, 0x4e81, 0x4e7c, 0x4e78, 0x4e73,
+  0x4e6e, 0x4e69, 0x4e64, 0x4e5f, 0x4e5a, 0x4e55, 0x4e50, 0x4e4b,
+  0x4e46, 0x4e41, 0x4e3c, 0x4e37, 0x4e32, 0x4e2d, 0x4e28, 0x4e23,
+  0x4e1e, 0x4e19, 0x4e14, 0x4e0f, 0x4e0a, 0x4e05, 0x4e00, 0x4dfb,
+  0x4df6, 0x4df1, 0x4dec, 0x4de7, 0x4de2, 0x4ddd, 0x4dd8, 0x4dd3,
+  0x4dce, 0x4dc9, 0x4dc4, 0x4dbf, 0x4dba, 0x4db5, 0x4db0, 0x4dab,
+  0x4da6, 0x4da1, 0x4d9c, 0x4d97, 0x4d92, 0x4d8d, 0x4d88, 0x4d83,
+  0x4d7e, 0x4d79, 0x4d74, 0x4d6f, 0x4d6a, 0x4d65, 0x4d60, 0x4d5b,
+  0x4d56, 0x4d51, 0x4d4c, 0x4d47, 0x4d42, 0x4d3d, 0x4d38, 0x4d33,
+  0x4d2e, 0x4d29, 0x4d24, 0x4d1f, 0x4d1a, 0x4d15, 0x4d10, 0x4d0b,
+  0x4d06, 0x4d01, 0x4cfc, 0x4cf7, 0x4cf2, 0x4ced, 0x4ce8, 0x4ce3,
+  0x4cde, 0x4cd9, 0x4cd4, 0x4ccf, 0x4cca, 0x4cc5, 0x4cc0, 0x4cbb,
+  0x4cb6, 0x4cb1, 0x4cac, 0x4ca7, 0x4ca2, 0x4c9d, 0x4c98, 0x4c93,
+  0x4c8e, 0x4c88, 0x4c83, 0x4c7e, 0x4c79, 0x4c74, 0x4c6f, 0x4c6a,
+  0x4c65, 0x4c60, 0x4c5b, 0x4c56, 0x4c51, 0x4c4c, 0x4c47, 0x4c42,
+  0x4c3d, 0x4c38, 0x4c33, 0x4c2e, 0x4c29, 0x4c24, 0x4c1f, 0x4c1a,
+  0x4c14, 0x4c0f, 0x4c0a, 0x4c05, 0x4c00, 0x4bfb, 0x4bf6, 0x4bf1,
+  0x4bec, 0x4be7, 0x4be2, 0x4bdd, 0x4bd8, 0x4bd3, 0x4bce, 0x4bc9,
+  0x4bc4, 0x4bbe, 0x4bb9, 0x4bb4, 0x4baf, 0x4baa, 0x4ba5, 0x4ba0,
+  0x4b9b, 0x4b96, 0x4b91, 0x4b8c, 0x4b87, 0x4b82, 0x4b7d, 0x4b77,
+  0x4b72, 0x4b6d, 0x4b68, 0x4b63, 0x4b5e, 0x4b59, 0x4b54, 0x4b4f,
+  0x4b4a, 0x4b45, 0x4b40, 0x4b3b, 0x4b35, 0x4b30, 0x4b2b, 0x4b26,
+  0x4b21, 0x4b1c, 0x4b17, 0x4b12, 0x4b0d, 0x4b08, 0x4b03, 0x4afd,
+  0x4af8, 0x4af3, 0x4aee, 0x4ae9, 0x4ae4, 0x4adf, 0x4ada, 0x4ad5,
+  0x4ad0, 0x4acb, 0x4ac5, 0x4ac0, 0x4abb, 0x4ab6, 0x4ab1, 0x4aac,
+  0x4aa7, 0x4aa2, 0x4a9d, 0x4a97, 0x4a92, 0x4a8d, 0x4a88, 0x4a83,
+  0x4a7e, 0x4a79, 0x4a74, 0x4a6f, 0x4a6a, 0x4a64, 0x4a5f, 0x4a5a,
+  0x4a55, 0x4a50, 0x4a4b, 0x4a46, 0x4a41, 0x4a3b, 0x4a36, 0x4a31,
+  0x4a2c, 0x4a27, 0x4a22, 0x4a1d, 0x4a18, 0x4a12, 0x4a0d, 0x4a08,
+  0x4a03, 0x49fe, 0x49f9, 0x49f4, 0x49ef, 0x49e9, 0x49e4, 0x49df,
+  0x49da, 0x49d5, 0x49d0, 0x49cb, 0x49c6, 0x49c0, 0x49bb, 0x49b6,
+  0x49b1, 0x49ac, 0x49a7, 0x49a2, 0x499c, 0x4997, 0x4992, 0x498d,
+  0x4988, 0x4983, 0x497e, 0x4978, 0x4973, 0x496e, 0x4969, 0x4964,
+  0x495f, 0x495a, 0x4954, 0x494f, 0x494a, 0x4945, 0x4940, 0x493b,
+  0x4936, 0x4930, 0x492b, 0x4926, 0x4921, 0x491c, 0x4917, 0x4911,
+  0x490c, 0x4907, 0x4902, 0x48fd, 0x48f8, 0x48f2, 0x48ed, 0x48e8,
+  0x48e3, 0x48de, 0x48d9, 0x48d3, 0x48ce, 0x48c9, 0x48c4, 0x48bf,
+  0x48ba, 0x48b4, 0x48af, 0x48aa, 0x48a5, 0x48a0, 0x489b, 0x4895,
+  0x4890, 0x488b, 0x4886, 0x4881, 0x487c, 0x4876, 0x4871, 0x486c,
+  0x4867, 0x4862, 0x485c, 0x4857, 0x4852, 0x484d, 0x4848, 0x4843,
+  0x483d, 0x4838, 0x4833, 0x482e, 0x4829, 0x4823, 0x481e, 0x4819,
+  0x4814, 0x480f, 0x4809, 0x4804, 0x47ff, 0x47fa, 0x47f5, 0x47ef,
+  0x47ea, 0x47e5, 0x47e0, 0x47db, 0x47d5, 0x47d0, 0x47cb, 0x47c6,
+  0x47c1, 0x47bb, 0x47b6, 0x47b1, 0x47ac, 0x47a7, 0x47a1, 0x479c,
+  0x4797, 0x4792, 0x478d, 0x4787, 0x4782, 0x477d, 0x4778, 0x4773,
+  0x476d, 0x4768, 0x4763, 0x475e, 0x4758, 0x4753, 0x474e, 0x4749,
+  0x4744, 0x473e, 0x4739, 0x4734, 0x472f, 0x4729, 0x4724, 0x471f,
+  0x471a, 0x4715, 0x470f, 0x470a, 0x4705, 0x4700, 0x46fa, 0x46f5,
+  0x46f0, 0x46eb, 0x46e6, 0x46e0, 0x46db, 0x46d6, 0x46d1, 0x46cb,
+  0x46c6, 0x46c1, 0x46bc, 0x46b6, 0x46b1, 0x46ac, 0x46a7, 0x46a1,
+  0x469c, 0x4697, 0x4692, 0x468d, 0x4687, 0x4682, 0x467d, 0x4678,
+  0x4672, 0x466d, 0x4668, 0x4663, 0x465d, 0x4658, 0x4653, 0x464e,
+  0x4648, 0x4643, 0x463e, 0x4639, 0x4633, 0x462e, 0x4629, 0x4624,
+  0x461e, 0x4619, 0x4614, 0x460e, 0x4609, 0x4604, 0x45ff, 0x45f9,
+  0x45f4, 0x45ef, 0x45ea, 0x45e4, 0x45df, 0x45da, 0x45d5, 0x45cf,
+  0x45ca, 0x45c5, 0x45c0, 0x45ba, 0x45b5, 0x45b0, 0x45aa, 0x45a5,
+  0x45a0, 0x459b, 0x4595, 0x4590, 0x458b, 0x4586, 0x4580, 0x457b,
+  0x4576, 0x4570, 0x456b, 0x4566, 0x4561, 0x455b, 0x4556, 0x4551,
+  0x454b, 0x4546, 0x4541, 0x453c, 0x4536, 0x4531, 0x452c, 0x4526,
+  0x4521, 0x451c, 0x4517, 0x4511, 0x450c, 0x4507, 0x4501, 0x44fc,
+  0x44f7, 0x44f2, 0x44ec, 0x44e7, 0x44e2, 0x44dc, 0x44d7, 0x44d2,
+  0x44cd, 0x44c7, 0x44c2, 0x44bd, 0x44b7, 0x44b2, 0x44ad, 0x44a7,
+  0x44a2, 0x449d, 0x4497, 0x4492, 0x448d, 0x4488, 0x4482, 0x447d,
+  0x4478, 0x4472, 0x446d, 0x4468, 0x4462, 0x445d, 0x4458, 0x4452,
+  0x444d, 0x4448, 0x4443, 0x443d, 0x4438, 0x4433, 0x442d, 0x4428,
+  0x4423, 0x441d, 0x4418, 0x4413, 0x440d, 0x4408, 0x4403, 0x43fd,
+  0x43f8, 0x43f3, 0x43ed, 0x43e8, 0x43e3, 0x43dd, 0x43d8, 0x43d3,
+  0x43cd, 0x43c8, 0x43c3, 0x43bd, 0x43b8, 0x43b3, 0x43ad, 0x43a8,
+  0x43a3, 0x439d, 0x4398, 0x4393, 0x438d, 0x4388, 0x4383, 0x437d,
+  0x4378, 0x4373, 0x436d, 0x4368, 0x4363, 0x435d, 0x4358, 0x4353,
+  0x434d, 0x4348, 0x4343, 0x433d, 0x4338, 0x4333, 0x432d, 0x4328,
+  0x4323, 0x431d, 0x4318, 0x4313, 0x430d, 0x4308, 0x4302, 0x42fd,
+  0x42f8, 0x42f2, 0x42ed, 0x42e8, 0x42e2, 0x42dd, 0x42d8, 0x42d2,
+  0x42cd, 0x42c8, 0x42c2, 0x42bd, 0x42b7, 0x42b2, 0x42ad, 0x42a7,
+  0x42a2, 0x429d, 0x4297, 0x4292, 0x428d, 0x4287, 0x4282, 0x427c,
+  0x4277, 0x4272, 0x426c, 0x4267, 0x4262, 0x425c, 0x4257, 0x4251,
+  0x424c, 0x4247, 0x4241, 0x423c, 0x4237, 0x4231, 0x422c, 0x4226,
+  0x4221, 0x421c, 0x4216, 0x4211, 0x420c, 0x4206, 0x4201, 0x41fb,
+  0x41f6, 0x41f1, 0x41eb, 0x41e6, 0x41e0, 0x41db, 0x41d6, 0x41d0,
+  0x41cb, 0x41c6, 0x41c0, 0x41bb, 0x41b5, 0x41b0, 0x41ab, 0x41a5,
+  0x41a0, 0x419a, 0x4195, 0x4190, 0x418a, 0x4185, 0x417f, 0x417a,
+  0x4175, 0x416f, 0x416a, 0x4164, 0x415f, 0x415a, 0x4154, 0x414f,
+  0x4149, 0x4144, 0x413f, 0x4139, 0x4134, 0x412e, 0x4129, 0x4124,
+  0x411e, 0x4119, 0x4113, 0x410e, 0x4108, 0x4103, 0x40fe, 0x40f8,
+  0x40f3, 0x40ed, 0x40e8, 0x40e3, 0x40dd, 0x40d8, 0x40d2, 0x40cd,
+  0x40c8, 0x40c2, 0x40bd, 0x40b7, 0x40b2, 0x40ac, 0x40a7, 0x40a2,
+  0x409c, 0x4097, 0x4091, 0x408c, 0x4086, 0x4081, 0x407c, 0x4076,
+  0x4071, 0x406b, 0x4066, 0x4060, 0x405b, 0x4056, 0x4050, 0x404b,
+  0x4045, 0x4040, 0x403a, 0x4035, 0x4030, 0x402a, 0x4025, 0x401f,
+  0x401a, 0x4014, 0x400f, 0x4009, 0x4004, 0x3fff, 0x3ff9, 0x3ff4,
+  0x3fee, 0x3fe9, 0x3fe3, 0x3fde, 0x3fd8, 0x3fd3, 0x3fce, 0x3fc8,
+  0x3fc3, 0x3fbd, 0x3fb8, 0x3fb2, 0x3fad, 0x3fa7, 0x3fa2, 0x3f9d,
+  0x3f97, 0x3f92, 0x3f8c, 0x3f87, 0x3f81, 0x3f7c, 0x3f76, 0x3f71,
+  0x3f6b, 0x3f66, 0x3f61, 0x3f5b, 0x3f56, 0x3f50, 0x3f4b, 0x3f45,
+  0x3f40, 0x3f3a, 0x3f35, 0x3f2f, 0x3f2a, 0x3f24, 0x3f1f, 0x3f1a,
+  0x3f14, 0x3f0f, 0x3f09, 0x3f04, 0x3efe, 0x3ef9, 0x3ef3, 0x3eee,
+  0x3ee8, 0x3ee3, 0x3edd, 0x3ed8, 0x3ed2, 0x3ecd, 0x3ec7, 0x3ec2,
+  0x3ebd, 0x3eb7, 0x3eb2, 0x3eac, 0x3ea7, 0x3ea1, 0x3e9c, 0x3e96,
+  0x3e91, 0x3e8b, 0x3e86, 0x3e80, 0x3e7b, 0x3e75, 0x3e70, 0x3e6a,
+  0x3e65, 0x3e5f, 0x3e5a, 0x3e54, 0x3e4f, 0x3e49, 0x3e44, 0x3e3e,
+  0x3e39, 0x3e33, 0x3e2e, 0x3e28, 0x3e23, 0x3e1d, 0x3e18, 0x3e12,
+  0x3e0d, 0x3e07, 0x3e02, 0x3dfc, 0x3df7, 0x3df1, 0x3dec, 0x3de6,
+  0x3de1, 0x3ddb, 0x3dd6, 0x3dd0, 0x3dcb, 0x3dc5, 0x3dc0, 0x3dba,
+  0x3db5, 0x3daf, 0x3daa, 0x3da4, 0x3d9f, 0x3d99, 0x3d94, 0x3d8e,
+  0x3d89, 0x3d83, 0x3d7e, 0x3d78, 0x3d73, 0x3d6d, 0x3d68, 0x3d62,
+  0x3d5d, 0x3d57, 0x3d52, 0x3d4c, 0x3d47, 0x3d41, 0x3d3c, 0x3d36,
+  0x3d31, 0x3d2b, 0x3d26, 0x3d20, 0x3d1b, 0x3d15, 0x3d10, 0x3d0a,
+  0x3d04, 0x3cff, 0x3cf9, 0x3cf4, 0x3cee, 0x3ce9, 0x3ce3, 0x3cde,
+  0x3cd8, 0x3cd3, 0x3ccd, 0x3cc8, 0x3cc2, 0x3cbd, 0x3cb7, 0x3cb2,
+  0x3cac, 0x3ca7, 0x3ca1, 0x3c9b, 0x3c96, 0x3c90, 0x3c8b, 0x3c85,
+  0x3c80, 0x3c7a, 0x3c75, 0x3c6f, 0x3c6a, 0x3c64, 0x3c5f, 0x3c59,
+  0x3c53, 0x3c4e, 0x3c48, 0x3c43, 0x3c3d, 0x3c38, 0x3c32, 0x3c2d,
+  0x3c27, 0x3c22, 0x3c1c, 0x3c16, 0x3c11, 0x3c0b, 0x3c06, 0x3c00,
+  0x3bfb, 0x3bf5, 0x3bf0, 0x3bea, 0x3be5, 0x3bdf, 0x3bd9, 0x3bd4,
+  0x3bce, 0x3bc9, 0x3bc3, 0x3bbe, 0x3bb8, 0x3bb3, 0x3bad, 0x3ba7,
+  0x3ba2, 0x3b9c, 0x3b97, 0x3b91, 0x3b8c, 0x3b86, 0x3b80, 0x3b7b,
+  0x3b75, 0x3b70, 0x3b6a, 0x3b65, 0x3b5f, 0x3b5a, 0x3b54, 0x3b4e,
+  0x3b49, 0x3b43, 0x3b3e, 0x3b38, 0x3b33, 0x3b2d, 0x3b27, 0x3b22,
+  0x3b1c, 0x3b17, 0x3b11, 0x3b0c, 0x3b06, 0x3b00, 0x3afb, 0x3af5,
+  0x3af0, 0x3aea, 0x3ae4, 0x3adf, 0x3ad9, 0x3ad4, 0x3ace, 0x3ac9,
+  0x3ac3, 0x3abd, 0x3ab8, 0x3ab2, 0x3aad, 0x3aa7, 0x3aa2, 0x3a9c,
+  0x3a96, 0x3a91, 0x3a8b, 0x3a86, 0x3a80, 0x3a7a, 0x3a75, 0x3a6f,
+  0x3a6a, 0x3a64, 0x3a5e, 0x3a59, 0x3a53, 0x3a4e, 0x3a48, 0x3a42,
+  0x3a3d, 0x3a37, 0x3a32, 0x3a2c, 0x3a26, 0x3a21, 0x3a1b, 0x3a16,
+  0x3a10, 0x3a0b, 0x3a05, 0x39ff, 0x39fa, 0x39f4, 0x39ee, 0x39e9,
+  0x39e3, 0x39de, 0x39d8, 0x39d2, 0x39cd, 0x39c7, 0x39c2, 0x39bc,
+  0x39b6, 0x39b1, 0x39ab, 0x39a6, 0x39a0, 0x399a, 0x3995, 0x398f,
+  0x398a, 0x3984, 0x397e, 0x3979, 0x3973, 0x396d, 0x3968, 0x3962,
+  0x395d, 0x3957, 0x3951, 0x394c, 0x3946, 0x3941, 0x393b, 0x3935,
+  0x3930, 0x392a, 0x3924, 0x391f, 0x3919, 0x3914, 0x390e, 0x3908,
+  0x3903, 0x38fd, 0x38f7, 0x38f2, 0x38ec, 0x38e7, 0x38e1, 0x38db,
+  0x38d6, 0x38d0, 0x38ca, 0x38c5, 0x38bf, 0x38ba, 0x38b4, 0x38ae,
+  0x38a9, 0x38a3, 0x389d, 0x3898, 0x3892, 0x388c, 0x3887, 0x3881,
+  0x387c, 0x3876, 0x3870, 0x386b, 0x3865, 0x385f, 0x385a, 0x3854,
+  0x384e, 0x3849, 0x3843, 0x383d, 0x3838, 0x3832, 0x382d, 0x3827,
+  0x3821, 0x381c, 0x3816, 0x3810, 0x380b, 0x3805, 0x37ff, 0x37fa,
+  0x37f4, 0x37ee, 0x37e9, 0x37e3, 0x37dd, 0x37d8, 0x37d2, 0x37cc,
+  0x37c7, 0x37c1, 0x37bc, 0x37b6, 0x37b0, 0x37ab, 0x37a5, 0x379f,
+  0x379a, 0x3794, 0x378e, 0x3789, 0x3783, 0x377d, 0x3778, 0x3772,
+  0x376c, 0x3767, 0x3761, 0x375b, 0x3756, 0x3750, 0x374a, 0x3745,
+  0x373f, 0x3739, 0x3734, 0x372e, 0x3728, 0x3723, 0x371d, 0x3717,
+  0x3712, 0x370c, 0x3706, 0x3701, 0x36fb, 0x36f5, 0x36f0, 0x36ea,
+  0x36e4, 0x36df, 0x36d9, 0x36d3, 0x36ce, 0x36c8, 0x36c2, 0x36bc,
+  0x36b7, 0x36b1, 0x36ab, 0x36a6, 0x36a0, 0x369a, 0x3695, 0x368f,
+  0x3689, 0x3684, 0x367e, 0x3678, 0x3673, 0x366d, 0x3667, 0x3662,
+  0x365c, 0x3656, 0x3650, 0x364b, 0x3645, 0x363f, 0x363a, 0x3634,
+  0x362e, 0x3629, 0x3623, 0x361d, 0x3618, 0x3612, 0x360c, 0x3606,
+  0x3601, 0x35fb, 0x35f5, 0x35f0, 0x35ea, 0x35e4, 0x35df, 0x35d9,
+  0x35d3, 0x35cd, 0x35c8, 0x35c2, 0x35bc, 0x35b7, 0x35b1, 0x35ab,
+  0x35a6, 0x35a0, 0x359a, 0x3594, 0x358f, 0x3589, 0x3583, 0x357e,
+  0x3578, 0x3572, 0x356c, 0x3567, 0x3561, 0x355b, 0x3556, 0x3550,
+  0x354a, 0x3544, 0x353f, 0x3539, 0x3533, 0x352e, 0x3528, 0x3522,
+  0x351c, 0x3517, 0x3511, 0x350b, 0x3506, 0x3500, 0x34fa, 0x34f4,
+  0x34ef, 0x34e9, 0x34e3, 0x34de, 0x34d8, 0x34d2, 0x34cc, 0x34c7,
+  0x34c1, 0x34bb, 0x34b6, 0x34b0, 0x34aa, 0x34a4, 0x349f, 0x3499,
+  0x3493, 0x348d, 0x3488, 0x3482, 0x347c, 0x3476, 0x3471, 0x346b,
+  0x3465, 0x3460, 0x345a, 0x3454, 0x344e, 0x3449, 0x3443, 0x343d,
+  0x3437, 0x3432, 0x342c, 0x3426, 0x3420, 0x341b, 0x3415, 0x340f,
+  0x340a, 0x3404, 0x33fe, 0x33f8, 0x33f3, 0x33ed, 0x33e7, 0x33e1,
+  0x33dc, 0x33d6, 0x33d0, 0x33ca, 0x33c5, 0x33bf, 0x33b9, 0x33b3,
+  0x33ae, 0x33a8, 0x33a2, 0x339c, 0x3397, 0x3391, 0x338b, 0x3385,
+  0x3380, 0x337a, 0x3374, 0x336e, 0x3369, 0x3363, 0x335d, 0x3357,
+  0x3352, 0x334c, 0x3346, 0x3340, 0x333b, 0x3335, 0x332f, 0x3329,
+  0x3324, 0x331e, 0x3318, 0x3312, 0x330c, 0x3307, 0x3301, 0x32fb,
+  0x32f5, 0x32f0, 0x32ea, 0x32e4, 0x32de, 0x32d9, 0x32d3, 0x32cd,
+  0x32c7, 0x32c2, 0x32bc, 0x32b6, 0x32b0, 0x32aa, 0x32a5, 0x329f,
+  0x3299, 0x3293, 0x328e, 0x3288, 0x3282, 0x327c, 0x3276, 0x3271,
+  0x326b, 0x3265, 0x325f, 0x325a, 0x3254, 0x324e, 0x3248, 0x3243,
+  0x323d, 0x3237, 0x3231, 0x322b, 0x3226, 0x3220, 0x321a, 0x3214,
+  0x320e, 0x3209, 0x3203, 0x31fd, 0x31f7, 0x31f2, 0x31ec, 0x31e6,
+  0x31e0, 0x31da, 0x31d5, 0x31cf, 0x31c9, 0x31c3, 0x31bd, 0x31b8,
+  0x31b2, 0x31ac, 0x31a6, 0x31a1, 0x319b, 0x3195, 0x318f, 0x3189,
+  0x3184, 0x317e, 0x3178, 0x3172, 0x316c, 0x3167, 0x3161, 0x315b,
+  0x3155, 0x314f, 0x314a, 0x3144, 0x313e, 0x3138, 0x3132, 0x312d,
+  0x3127, 0x3121, 0x311b, 0x3115, 0x3110, 0x310a, 0x3104, 0x30fe,
+  0x30f8, 0x30f3, 0x30ed, 0x30e7, 0x30e1, 0x30db, 0x30d6, 0x30d0,
+  0x30ca, 0x30c4, 0x30be, 0x30b8, 0x30b3, 0x30ad, 0x30a7, 0x30a1,
+  0x309b, 0x3096, 0x3090, 0x308a, 0x3084, 0x307e, 0x3079, 0x3073,
+  0x306d, 0x3067, 0x3061, 0x305b, 0x3056, 0x3050, 0x304a, 0x3044,
+  0x303e, 0x3039, 0x3033, 0x302d, 0x3027, 0x3021, 0x301b, 0x3016,
+  0x3010, 0x300a, 0x3004, 0x2ffe, 0x2ff8, 0x2ff3, 0x2fed, 0x2fe7,
+  0x2fe1, 0x2fdb, 0x2fd6, 0x2fd0, 0x2fca, 0x2fc4, 0x2fbe, 0x2fb8,
+  0x2fb3, 0x2fad, 0x2fa7, 0x2fa1, 0x2f9b, 0x2f95, 0x2f90, 0x2f8a,
+  0x2f84, 0x2f7e, 0x2f78, 0x2f72, 0x2f6d, 0x2f67, 0x2f61, 0x2f5b,
+  0x2f55, 0x2f4f, 0x2f4a, 0x2f44, 0x2f3e, 0x2f38, 0x2f32, 0x2f2c,
+  0x2f27, 0x2f21, 0x2f1b, 0x2f15, 0x2f0f, 0x2f09, 0x2f03, 0x2efe,
+  0x2ef8, 0x2ef2, 0x2eec, 0x2ee6, 0x2ee0, 0x2edb, 0x2ed5, 0x2ecf,
+  0x2ec9, 0x2ec3, 0x2ebd, 0x2eb7, 0x2eb2, 0x2eac, 0x2ea6, 0x2ea0,
+  0x2e9a, 0x2e94, 0x2e8e, 0x2e89, 0x2e83, 0x2e7d, 0x2e77, 0x2e71,
+  0x2e6b, 0x2e65, 0x2e60, 0x2e5a, 0x2e54, 0x2e4e, 0x2e48, 0x2e42,
+  0x2e3c, 0x2e37, 0x2e31, 0x2e2b, 0x2e25, 0x2e1f, 0x2e19, 0x2e13,
+  0x2e0e, 0x2e08, 0x2e02, 0x2dfc, 0x2df6, 0x2df0, 0x2dea, 0x2de5,
+  0x2ddf, 0x2dd9, 0x2dd3, 0x2dcd, 0x2dc7, 0x2dc1, 0x2dbb, 0x2db6,
+  0x2db0, 0x2daa, 0x2da4, 0x2d9e, 0x2d98, 0x2d92, 0x2d8d, 0x2d87,
+  0x2d81, 0x2d7b, 0x2d75, 0x2d6f, 0x2d69, 0x2d63, 0x2d5e, 0x2d58,
+  0x2d52, 0x2d4c, 0x2d46, 0x2d40, 0x2d3a, 0x2d34, 0x2d2f, 0x2d29,
+  0x2d23, 0x2d1d, 0x2d17, 0x2d11, 0x2d0b, 0x2d05, 0x2cff, 0x2cfa,
+  0x2cf4, 0x2cee, 0x2ce8, 0x2ce2, 0x2cdc, 0x2cd6, 0x2cd0, 0x2ccb,
+  0x2cc5, 0x2cbf, 0x2cb9, 0x2cb3, 0x2cad, 0x2ca7, 0x2ca1, 0x2c9b,
+  0x2c96, 0x2c90, 0x2c8a, 0x2c84, 0x2c7e, 0x2c78, 0x2c72, 0x2c6c,
+  0x2c66, 0x2c61, 0x2c5b, 0x2c55, 0x2c4f, 0x2c49, 0x2c43, 0x2c3d,
+  0x2c37, 0x2c31, 0x2c2b, 0x2c26, 0x2c20, 0x2c1a, 0x2c14, 0x2c0e,
+  0x2c08, 0x2c02, 0x2bfc, 0x2bf6, 0x2bf0, 0x2beb, 0x2be5, 0x2bdf,
+  0x2bd9, 0x2bd3, 0x2bcd, 0x2bc7, 0x2bc1, 0x2bbb, 0x2bb5, 0x2bb0,
+  0x2baa, 0x2ba4, 0x2b9e, 0x2b98, 0x2b92, 0x2b8c, 0x2b86, 0x2b80,
+  0x2b7a, 0x2b74, 0x2b6f, 0x2b69, 0x2b63, 0x2b5d, 0x2b57, 0x2b51,
+  0x2b4b, 0x2b45, 0x2b3f, 0x2b39, 0x2b33, 0x2b2d, 0x2b28, 0x2b22,
+  0x2b1c, 0x2b16, 0x2b10, 0x2b0a, 0x2b04, 0x2afe, 0x2af8, 0x2af2,
+  0x2aec, 0x2ae6, 0x2ae1, 0x2adb, 0x2ad5, 0x2acf, 0x2ac9, 0x2ac3,
+  0x2abd, 0x2ab7, 0x2ab1, 0x2aab, 0x2aa5, 0x2a9f, 0x2a99, 0x2a94,
+  0x2a8e, 0x2a88, 0x2a82, 0x2a7c, 0x2a76, 0x2a70, 0x2a6a, 0x2a64,
+  0x2a5e, 0x2a58, 0x2a52, 0x2a4c, 0x2a47, 0x2a41, 0x2a3b, 0x2a35,
+  0x2a2f, 0x2a29, 0x2a23, 0x2a1d, 0x2a17, 0x2a11, 0x2a0b, 0x2a05,
+  0x29ff, 0x29f9, 0x29f3, 0x29ee, 0x29e8, 0x29e2, 0x29dc, 0x29d6,
+  0x29d0, 0x29ca, 0x29c4, 0x29be, 0x29b8, 0x29b2, 0x29ac, 0x29a6,
+  0x29a0, 0x299a, 0x2994, 0x298e, 0x2989, 0x2983, 0x297d, 0x2977,
+  0x2971, 0x296b, 0x2965, 0x295f, 0x2959, 0x2953, 0x294d, 0x2947,
+  0x2941, 0x293b, 0x2935, 0x292f, 0x2929, 0x2923, 0x291d, 0x2918,
+  0x2912, 0x290c, 0x2906, 0x2900, 0x28fa, 0x28f4, 0x28ee, 0x28e8,
+  0x28e2, 0x28dc, 0x28d6, 0x28d0, 0x28ca, 0x28c4, 0x28be, 0x28b8,
+  0x28b2, 0x28ac, 0x28a6, 0x28a0, 0x289a, 0x2895, 0x288f, 0x2889,
+  0x2883, 0x287d, 0x2877, 0x2871, 0x286b, 0x2865, 0x285f, 0x2859,
+  0x2853, 0x284d, 0x2847, 0x2841, 0x283b, 0x2835, 0x282f, 0x2829,
+  0x2823, 0x281d, 0x2817, 0x2811, 0x280b, 0x2805, 0x27ff, 0x27f9,
+  0x27f3, 0x27ee, 0x27e8, 0x27e2, 0x27dc, 0x27d6, 0x27d0, 0x27ca,
+  0x27c4, 0x27be, 0x27b8, 0x27b2, 0x27ac, 0x27a6, 0x27a0, 0x279a,
+  0x2794, 0x278e, 0x2788, 0x2782, 0x277c, 0x2776, 0x2770, 0x276a,
+  0x2764, 0x275e, 0x2758, 0x2752, 0x274c, 0x2746, 0x2740, 0x273a,
+  0x2734, 0x272e, 0x2728, 0x2722, 0x271c, 0x2716, 0x2710, 0x270a,
+  0x2704, 0x26fe, 0x26f8, 0x26f2, 0x26ec, 0x26e7, 0x26e1, 0x26db,
+  0x26d5, 0x26cf, 0x26c9, 0x26c3, 0x26bd, 0x26b7, 0x26b1, 0x26ab,
+  0x26a5, 0x269f, 0x2699, 0x2693, 0x268d, 0x2687, 0x2681, 0x267b,
+  0x2675, 0x266f, 0x2669, 0x2663, 0x265d, 0x2657, 0x2651, 0x264b,
+  0x2645, 0x263f, 0x2639, 0x2633, 0x262d, 0x2627, 0x2621, 0x261b,
+  0x2615, 0x260f, 0x2609, 0x2603, 0x25fd, 0x25f7, 0x25f1, 0x25eb,
+  0x25e5, 0x25df, 0x25d9, 0x25d3, 0x25cd, 0x25c7, 0x25c1, 0x25bb,
+  0x25b5, 0x25af, 0x25a9, 0x25a3, 0x259d, 0x2597, 0x2591, 0x258b,
+  0x2585, 0x257f, 0x2579, 0x2573, 0x256d, 0x2567, 0x2561, 0x255b,
+  0x2555, 0x254f, 0x2549, 0x2543, 0x253d, 0x2537, 0x2531, 0x252b,
+  0x2525, 0x251f, 0x2519, 0x2513, 0x250c, 0x2506, 0x2500, 0x24fa,
+  0x24f4, 0x24ee, 0x24e8, 0x24e2, 0x24dc, 0x24d6, 0x24d0, 0x24ca,
+  0x24c4, 0x24be, 0x24b8, 0x24b2, 0x24ac, 0x24a6, 0x24a0, 0x249a,
+  0x2494, 0x248e, 0x2488, 0x2482, 0x247c, 0x2476, 0x2470, 0x246a,
+  0x2464, 0x245e, 0x2458, 0x2452, 0x244c, 0x2446, 0x2440, 0x243a,
+  0x2434, 0x242e, 0x2428, 0x2422, 0x241c, 0x2416, 0x2410, 0x240a,
+  0x2404, 0x23fd, 0x23f7, 0x23f1, 0x23eb, 0x23e5, 0x23df, 0x23d9,
+  0x23d3, 0x23cd, 0x23c7, 0x23c1, 0x23bb, 0x23b5, 0x23af, 0x23a9,
+  0x23a3, 0x239d, 0x2397, 0x2391, 0x238b, 0x2385, 0x237f, 0x2379,
+  0x2373, 0x236d, 0x2367, 0x2361, 0x235b, 0x2355, 0x234e, 0x2348,
+  0x2342, 0x233c, 0x2336, 0x2330, 0x232a, 0x2324, 0x231e, 0x2318,
+  0x2312, 0x230c, 0x2306, 0x2300, 0x22fa, 0x22f4, 0x22ee, 0x22e8,
+  0x22e2, 0x22dc, 0x22d6, 0x22d0, 0x22ca, 0x22c4, 0x22bd, 0x22b7,
+  0x22b1, 0x22ab, 0x22a5, 0x229f, 0x2299, 0x2293, 0x228d, 0x2287,
+  0x2281, 0x227b, 0x2275, 0x226f, 0x2269, 0x2263, 0x225d, 0x2257,
+  0x2251, 0x224a, 0x2244, 0x223e, 0x2238, 0x2232, 0x222c, 0x2226,
+  0x2220, 0x221a, 0x2214, 0x220e, 0x2208, 0x2202, 0x21fc, 0x21f6,
+  0x21f0, 0x21ea, 0x21e4, 0x21dd, 0x21d7, 0x21d1, 0x21cb, 0x21c5,
+  0x21bf, 0x21b9, 0x21b3, 0x21ad, 0x21a7, 0x21a1, 0x219b, 0x2195,
+  0x218f, 0x2189, 0x2183, 0x217c, 0x2176, 0x2170, 0x216a, 0x2164,
+  0x215e, 0x2158, 0x2152, 0x214c, 0x2146, 0x2140, 0x213a, 0x2134,
+  0x212e, 0x2128, 0x2121, 0x211b, 0x2115, 0x210f, 0x2109, 0x2103,
+  0x20fd, 0x20f7, 0x20f1, 0x20eb, 0x20e5, 0x20df, 0x20d9, 0x20d3,
+  0x20cc, 0x20c6, 0x20c0, 0x20ba, 0x20b4, 0x20ae, 0x20a8, 0x20a2,
+  0x209c, 0x2096, 0x2090, 0x208a, 0x2084, 0x207e, 0x2077, 0x2071,
+  0x206b, 0x2065, 0x205f, 0x2059, 0x2053, 0x204d, 0x2047, 0x2041,
+  0x203b, 0x2035, 0x202e, 0x2028, 0x2022, 0x201c, 0x2016, 0x2010,
+  0x200a, 0x2004, 0x1ffe, 0x1ff8, 0x1ff2, 0x1fec, 0x1fe5, 0x1fdf,
+  0x1fd9, 0x1fd3, 0x1fcd, 0x1fc7, 0x1fc1, 0x1fbb, 0x1fb5, 0x1faf,
+  0x1fa9, 0x1fa3, 0x1f9c, 0x1f96, 0x1f90, 0x1f8a, 0x1f84, 0x1f7e,
+  0x1f78, 0x1f72, 0x1f6c, 0x1f66, 0x1f60, 0x1f59, 0x1f53, 0x1f4d,
+  0x1f47, 0x1f41, 0x1f3b, 0x1f35, 0x1f2f, 0x1f29, 0x1f23, 0x1f1d,
+  0x1f16, 0x1f10, 0x1f0a, 0x1f04, 0x1efe, 0x1ef8, 0x1ef2, 0x1eec,
+  0x1ee6, 0x1ee0, 0x1ed9, 0x1ed3, 0x1ecd, 0x1ec7, 0x1ec1, 0x1ebb,
+  0x1eb5, 0x1eaf, 0x1ea9, 0x1ea3, 0x1e9c, 0x1e96, 0x1e90, 0x1e8a,
+  0x1e84, 0x1e7e, 0x1e78, 0x1e72, 0x1e6c, 0x1e66, 0x1e5f, 0x1e59,
+  0x1e53, 0x1e4d, 0x1e47, 0x1e41, 0x1e3b, 0x1e35, 0x1e2f, 0x1e29,
+  0x1e22, 0x1e1c, 0x1e16, 0x1e10, 0x1e0a, 0x1e04, 0x1dfe, 0x1df8,
+  0x1df2, 0x1deb, 0x1de5, 0x1ddf, 0x1dd9, 0x1dd3, 0x1dcd, 0x1dc7,
+  0x1dc1, 0x1dbb, 0x1db4, 0x1dae, 0x1da8, 0x1da2, 0x1d9c, 0x1d96,
+  0x1d90, 0x1d8a, 0x1d84, 0x1d7d, 0x1d77, 0x1d71, 0x1d6b, 0x1d65,
+  0x1d5f, 0x1d59, 0x1d53, 0x1d4c, 0x1d46, 0x1d40, 0x1d3a, 0x1d34,
+  0x1d2e, 0x1d28, 0x1d22, 0x1d1c, 0x1d15, 0x1d0f, 0x1d09, 0x1d03,
+  0x1cfd, 0x1cf7, 0x1cf1, 0x1ceb, 0x1ce4, 0x1cde, 0x1cd8, 0x1cd2,
+  0x1ccc, 0x1cc6, 0x1cc0, 0x1cba, 0x1cb3, 0x1cad, 0x1ca7, 0x1ca1,
+  0x1c9b, 0x1c95, 0x1c8f, 0x1c89, 0x1c83, 0x1c7c, 0x1c76, 0x1c70,
+  0x1c6a, 0x1c64, 0x1c5e, 0x1c58, 0x1c51, 0x1c4b, 0x1c45, 0x1c3f,
+  0x1c39, 0x1c33, 0x1c2d, 0x1c27, 0x1c20, 0x1c1a, 0x1c14, 0x1c0e,
+  0x1c08, 0x1c02, 0x1bfc, 0x1bf6, 0x1bef, 0x1be9, 0x1be3, 0x1bdd,
+  0x1bd7, 0x1bd1, 0x1bcb, 0x1bc4, 0x1bbe, 0x1bb8, 0x1bb2, 0x1bac,
+  0x1ba6, 0x1ba0, 0x1b9a, 0x1b93, 0x1b8d, 0x1b87, 0x1b81, 0x1b7b,
+  0x1b75, 0x1b6f, 0x1b68, 0x1b62, 0x1b5c, 0x1b56, 0x1b50, 0x1b4a,
+  0x1b44, 0x1b3d, 0x1b37, 0x1b31, 0x1b2b, 0x1b25, 0x1b1f, 0x1b19,
+  0x1b13, 0x1b0c, 0x1b06, 0x1b00, 0x1afa, 0x1af4, 0x1aee, 0x1ae8,
+  0x1ae1, 0x1adb, 0x1ad5, 0x1acf, 0x1ac9, 0x1ac3, 0x1abd, 0x1ab6,
+  0x1ab0, 0x1aaa, 0x1aa4, 0x1a9e, 0x1a98, 0x1a91, 0x1a8b, 0x1a85,
+  0x1a7f, 0x1a79, 0x1a73, 0x1a6d, 0x1a66, 0x1a60, 0x1a5a, 0x1a54,
+  0x1a4e, 0x1a48, 0x1a42, 0x1a3b, 0x1a35, 0x1a2f, 0x1a29, 0x1a23,
+  0x1a1d, 0x1a17, 0x1a10, 0x1a0a, 0x1a04, 0x19fe, 0x19f8, 0x19f2,
+  0x19eb, 0x19e5, 0x19df, 0x19d9, 0x19d3, 0x19cd, 0x19c7, 0x19c0,
+  0x19ba, 0x19b4, 0x19ae, 0x19a8, 0x19a2, 0x199b, 0x1995, 0x198f,
+  0x1989, 0x1983, 0x197d, 0x1977, 0x1970, 0x196a, 0x1964, 0x195e,
+  0x1958, 0x1952, 0x194b, 0x1945, 0x193f, 0x1939, 0x1933, 0x192d,
+  0x1926, 0x1920, 0x191a, 0x1914, 0x190e, 0x1908, 0x1901, 0x18fb,
+  0x18f5, 0x18ef, 0x18e9, 0x18e3, 0x18dc, 0x18d6, 0x18d0, 0x18ca,
+  0x18c4, 0x18be, 0x18b8, 0x18b1, 0x18ab, 0x18a5, 0x189f, 0x1899,
+  0x1893, 0x188c, 0x1886, 0x1880, 0x187a, 0x1874, 0x186e, 0x1867,
+  0x1861, 0x185b, 0x1855, 0x184f, 0x1848, 0x1842, 0x183c, 0x1836,
+  0x1830, 0x182a, 0x1823, 0x181d, 0x1817, 0x1811, 0x180b, 0x1805,
+  0x17fe, 0x17f8, 0x17f2, 0x17ec, 0x17e6, 0x17e0, 0x17d9, 0x17d3,
+  0x17cd, 0x17c7, 0x17c1, 0x17bb, 0x17b4, 0x17ae, 0x17a8, 0x17a2,
+  0x179c, 0x1795, 0x178f, 0x1789, 0x1783, 0x177d, 0x1777, 0x1770,
+  0x176a, 0x1764, 0x175e, 0x1758, 0x1752, 0x174b, 0x1745, 0x173f,
+  0x1739, 0x1733, 0x172c, 0x1726, 0x1720, 0x171a, 0x1714, 0x170e,
+  0x1707, 0x1701, 0x16fb, 0x16f5, 0x16ef, 0x16e8, 0x16e2, 0x16dc,
+  0x16d6, 0x16d0, 0x16ca, 0x16c3, 0x16bd, 0x16b7, 0x16b1, 0x16ab,
+  0x16a4, 0x169e, 0x1698, 0x1692, 0x168c, 0x1686, 0x167f, 0x1679,
+  0x1673, 0x166d, 0x1667, 0x1660, 0x165a, 0x1654, 0x164e, 0x1648,
+  0x1642, 0x163b, 0x1635, 0x162f, 0x1629, 0x1623, 0x161c, 0x1616,
+  0x1610, 0x160a, 0x1604, 0x15fd, 0x15f7, 0x15f1, 0x15eb, 0x15e5,
+  0x15de, 0x15d8, 0x15d2, 0x15cc, 0x15c6, 0x15c0, 0x15b9, 0x15b3,
+  0x15ad, 0x15a7, 0x15a1, 0x159a, 0x1594, 0x158e, 0x1588, 0x1582,
+  0x157b, 0x1575, 0x156f, 0x1569, 0x1563, 0x155c, 0x1556, 0x1550,
+  0x154a, 0x1544, 0x153d, 0x1537, 0x1531, 0x152b, 0x1525, 0x151e,
+  0x1518, 0x1512, 0x150c, 0x1506, 0x14ff, 0x14f9, 0x14f3, 0x14ed,
+  0x14e7, 0x14e0, 0x14da, 0x14d4, 0x14ce, 0x14c8, 0x14c1, 0x14bb,
+  0x14b5, 0x14af, 0x14a9, 0x14a2, 0x149c, 0x1496, 0x1490, 0x148a,
+  0x1483, 0x147d, 0x1477, 0x1471, 0x146b, 0x1464, 0x145e, 0x1458,
+  0x1452, 0x144c, 0x1445, 0x143f, 0x1439, 0x1433, 0x142d, 0x1426,
+  0x1420, 0x141a, 0x1414, 0x140e, 0x1407, 0x1401, 0x13fb, 0x13f5,
+  0x13ef, 0x13e8, 0x13e2, 0x13dc, 0x13d6, 0x13d0, 0x13c9, 0x13c3,
+  0x13bd, 0x13b7, 0x13b1, 0x13aa, 0x13a4, 0x139e, 0x1398, 0x1391,
+  0x138b, 0x1385, 0x137f, 0x1379, 0x1372, 0x136c, 0x1366, 0x1360,
+  0x135a, 0x1353, 0x134d, 0x1347, 0x1341, 0x133b, 0x1334, 0x132e,
+  0x1328, 0x1322, 0x131b, 0x1315, 0x130f, 0x1309, 0x1303, 0x12fc,
+  0x12f6, 0x12f0, 0x12ea, 0x12e4, 0x12dd, 0x12d7, 0x12d1, 0x12cb,
+  0x12c4, 0x12be, 0x12b8, 0x12b2, 0x12ac, 0x12a5, 0x129f, 0x1299,
+  0x1293, 0x128d, 0x1286, 0x1280, 0x127a, 0x1274, 0x126d, 0x1267,
+  0x1261, 0x125b, 0x1255, 0x124e, 0x1248, 0x1242, 0x123c, 0x1235,
+  0x122f, 0x1229, 0x1223, 0x121d, 0x1216, 0x1210, 0x120a, 0x1204,
+  0x11fd, 0x11f7, 0x11f1, 0x11eb, 0x11e5, 0x11de, 0x11d8, 0x11d2,
+  0x11cc, 0x11c5, 0x11bf, 0x11b9, 0x11b3, 0x11ad, 0x11a6, 0x11a0,
+  0x119a, 0x1194, 0x118d, 0x1187, 0x1181, 0x117b, 0x1175, 0x116e,
+  0x1168, 0x1162, 0x115c, 0x1155, 0x114f, 0x1149, 0x1143, 0x113d,
+  0x1136, 0x1130, 0x112a, 0x1124, 0x111d, 0x1117, 0x1111, 0x110b,
+  0x1105, 0x10fe, 0x10f8, 0x10f2, 0x10ec, 0x10e5, 0x10df, 0x10d9,
+  0x10d3, 0x10cc, 0x10c6, 0x10c0, 0x10ba, 0x10b4, 0x10ad, 0x10a7,
+  0x10a1, 0x109b, 0x1094, 0x108e, 0x1088, 0x1082, 0x107b, 0x1075,
+  0x106f, 0x1069, 0x1063, 0x105c, 0x1056, 0x1050, 0x104a, 0x1043,
+  0x103d, 0x1037, 0x1031, 0x102a, 0x1024, 0x101e, 0x1018, 0x1012,
+  0x100b, 0x1005, 0xfff, 0xff9, 0xff2, 0xfec, 0xfe6, 0xfe0,
+  0xfd9, 0xfd3, 0xfcd, 0xfc7, 0xfc0, 0xfba, 0xfb4, 0xfae,
+  0xfa8, 0xfa1, 0xf9b, 0xf95, 0xf8f, 0xf88, 0xf82, 0xf7c,
+  0xf76, 0xf6f, 0xf69, 0xf63, 0xf5d, 0xf56, 0xf50, 0xf4a,
+  0xf44, 0xf3e, 0xf37, 0xf31, 0xf2b, 0xf25, 0xf1e, 0xf18,
+  0xf12, 0xf0c, 0xf05, 0xeff, 0xef9, 0xef3, 0xeec, 0xee6,
+  0xee0, 0xeda, 0xed3, 0xecd, 0xec7, 0xec1, 0xeba, 0xeb4,
+  0xeae, 0xea8, 0xea1, 0xe9b, 0xe95, 0xe8f, 0xe89, 0xe82,
+  0xe7c, 0xe76, 0xe70, 0xe69, 0xe63, 0xe5d, 0xe57, 0xe50,
+  0xe4a, 0xe44, 0xe3e, 0xe37, 0xe31, 0xe2b, 0xe25, 0xe1e,
+  0xe18, 0xe12, 0xe0c, 0xe05, 0xdff, 0xdf9, 0xdf3, 0xdec,
+  0xde6, 0xde0, 0xdda, 0xdd3, 0xdcd, 0xdc7, 0xdc1, 0xdba,
+  0xdb4, 0xdae, 0xda8, 0xda1, 0xd9b, 0xd95, 0xd8f, 0xd88,
+  0xd82, 0xd7c, 0xd76, 0xd6f, 0xd69, 0xd63, 0xd5d, 0xd56,
+  0xd50, 0xd4a, 0xd44, 0xd3d, 0xd37, 0xd31, 0xd2b, 0xd24,
+  0xd1e, 0xd18, 0xd12, 0xd0b, 0xd05, 0xcff, 0xcf9, 0xcf2,
+  0xcec, 0xce6, 0xce0, 0xcd9, 0xcd3, 0xccd, 0xcc7, 0xcc0,
+  0xcba, 0xcb4, 0xcae, 0xca7, 0xca1, 0xc9b, 0xc95, 0xc8e,
+  0xc88, 0xc82, 0xc7c, 0xc75, 0xc6f, 0xc69, 0xc63, 0xc5c,
+  0xc56, 0xc50, 0xc4a, 0xc43, 0xc3d, 0xc37, 0xc31, 0xc2a,
+  0xc24, 0xc1e, 0xc18, 0xc11, 0xc0b, 0xc05, 0xbff, 0xbf8,
+  0xbf2, 0xbec, 0xbe6, 0xbdf, 0xbd9, 0xbd3, 0xbcd, 0xbc6,
+  0xbc0, 0xbba, 0xbb4, 0xbad, 0xba7, 0xba1, 0xb9b, 0xb94,
+  0xb8e, 0xb88, 0xb81, 0xb7b, 0xb75, 0xb6f, 0xb68, 0xb62,
+  0xb5c, 0xb56, 0xb4f, 0xb49, 0xb43, 0xb3d, 0xb36, 0xb30,
+  0xb2a, 0xb24, 0xb1d, 0xb17, 0xb11, 0xb0b, 0xb04, 0xafe,
+  0xaf8, 0xaf2, 0xaeb, 0xae5, 0xadf, 0xad8, 0xad2, 0xacc,
+  0xac6, 0xabf, 0xab9, 0xab3, 0xaad, 0xaa6, 0xaa0, 0xa9a,
+  0xa94, 0xa8d, 0xa87, 0xa81, 0xa7b, 0xa74, 0xa6e, 0xa68,
+  0xa62, 0xa5b, 0xa55, 0xa4f, 0xa48, 0xa42, 0xa3c, 0xa36,
+  0xa2f, 0xa29, 0xa23, 0xa1d, 0xa16, 0xa10, 0xa0a, 0xa04,
+  0x9fd, 0x9f7, 0x9f1, 0x9eb, 0x9e4, 0x9de, 0x9d8, 0x9d1,
+  0x9cb, 0x9c5, 0x9bf, 0x9b8, 0x9b2, 0x9ac, 0x9a6, 0x99f,
+  0x999, 0x993, 0x98d, 0x986, 0x980, 0x97a, 0x973, 0x96d,
+  0x967, 0x961, 0x95a, 0x954, 0x94e, 0x948, 0x941, 0x93b,
+  0x935, 0x92f, 0x928, 0x922, 0x91c, 0x915, 0x90f, 0x909,
+  0x903, 0x8fc, 0x8f6, 0x8f0, 0x8ea, 0x8e3, 0x8dd, 0x8d7,
+  0x8d1, 0x8ca, 0x8c4, 0x8be, 0x8b7, 0x8b1, 0x8ab, 0x8a5,
+  0x89e, 0x898, 0x892, 0x88c, 0x885, 0x87f, 0x879, 0x872,
+  0x86c, 0x866, 0x860, 0x859, 0x853, 0x84d, 0x847, 0x840,
+  0x83a, 0x834, 0x82e, 0x827, 0x821, 0x81b, 0x814, 0x80e,
+  0x808, 0x802, 0x7fb, 0x7f5, 0x7ef, 0x7e9, 0x7e2, 0x7dc,
+  0x7d6, 0x7cf, 0x7c9, 0x7c3, 0x7bd, 0x7b6, 0x7b0, 0x7aa,
+  0x7a4, 0x79d, 0x797, 0x791, 0x78a, 0x784, 0x77e, 0x778,
+  0x771, 0x76b, 0x765, 0x75f, 0x758, 0x752, 0x74c, 0x745,
+  0x73f, 0x739, 0x733, 0x72c, 0x726, 0x720, 0x71a, 0x713,
+  0x70d, 0x707, 0x700, 0x6fa, 0x6f4, 0x6ee, 0x6e7, 0x6e1,
+  0x6db, 0x6d5, 0x6ce, 0x6c8, 0x6c2, 0x6bb, 0x6b5, 0x6af,
+  0x6a9, 0x6a2, 0x69c, 0x696, 0x690, 0x689, 0x683, 0x67d,
+  0x676, 0x670, 0x66a, 0x664, 0x65d, 0x657, 0x651, 0x64a,
+  0x644, 0x63e, 0x638, 0x631, 0x62b, 0x625, 0x61f, 0x618,
+  0x612, 0x60c, 0x605, 0x5ff, 0x5f9, 0x5f3, 0x5ec, 0x5e6,
+  0x5e0, 0x5da, 0x5d3, 0x5cd, 0x5c7, 0x5c0, 0x5ba, 0x5b4,
+  0x5ae, 0x5a7, 0x5a1, 0x59b, 0x594, 0x58e, 0x588, 0x582,
+  0x57b, 0x575, 0x56f, 0x569, 0x562, 0x55c, 0x556, 0x54f,
+  0x549, 0x543, 0x53d, 0x536, 0x530, 0x52a, 0x523, 0x51d,
+  0x517, 0x511, 0x50a, 0x504, 0x4fe, 0x4f8, 0x4f1, 0x4eb,
+  0x4e5, 0x4de, 0x4d8, 0x4d2, 0x4cc, 0x4c5, 0x4bf, 0x4b9,
+  0x4b2, 0x4ac, 0x4a6, 0x4a0, 0x499, 0x493, 0x48d, 0x487,
+  0x480, 0x47a, 0x474, 0x46d, 0x467, 0x461, 0x45b, 0x454,
+  0x44e, 0x448, 0x441, 0x43b, 0x435, 0x42f, 0x428, 0x422,
+  0x41c, 0x415, 0x40f, 0x409, 0x403, 0x3fc, 0x3f6, 0x3f0,
+  0x3ea, 0x3e3, 0x3dd, 0x3d7, 0x3d0, 0x3ca, 0x3c4, 0x3be,
+  0x3b7, 0x3b1, 0x3ab, 0x3a4, 0x39e, 0x398, 0x392, 0x38b,
+  0x385, 0x37f, 0x378, 0x372, 0x36c, 0x366, 0x35f, 0x359,
+  0x353, 0x34c, 0x346, 0x340, 0x33a, 0x333, 0x32d, 0x327,
+  0x321, 0x31a, 0x314, 0x30e, 0x307, 0x301, 0x2fb, 0x2f5,
+  0x2ee, 0x2e8, 0x2e2, 0x2db, 0x2d5, 0x2cf, 0x2c9, 0x2c2,
+  0x2bc, 0x2b6, 0x2af, 0x2a9, 0x2a3, 0x29d, 0x296, 0x290,
+  0x28a, 0x283, 0x27d, 0x277, 0x271, 0x26a, 0x264, 0x25e,
+  0x258, 0x251, 0x24b, 0x245, 0x23e, 0x238, 0x232, 0x22c,
+  0x225, 0x21f, 0x219, 0x212, 0x20c, 0x206, 0x200, 0x1f9,
+  0x1f3, 0x1ed, 0x1e6, 0x1e0, 0x1da, 0x1d4, 0x1cd, 0x1c7,
+  0x1c1, 0x1ba, 0x1b4, 0x1ae, 0x1a8, 0x1a1, 0x19b, 0x195,
+  0x18e, 0x188, 0x182, 0x17c, 0x175, 0x16f, 0x169, 0x162,
+  0x15c, 0x156, 0x150, 0x149, 0x143, 0x13d, 0x137, 0x130,
+  0x12a, 0x124, 0x11d, 0x117, 0x111, 0x10b, 0x104, 0xfe,
+  0xf8, 0xf1, 0xeb, 0xe5, 0xdf, 0xd8, 0xd2, 0xcc,
+  0xc5, 0xbf, 0xb9, 0xb3, 0xac, 0xa6, 0xa0, 0x99,
+  0x93, 0x8d, 0x87, 0x80, 0x7a, 0x74, 0x6d, 0x67,
+  0x61, 0x5b, 0x54, 0x4e, 0x48, 0x41, 0x3b, 0x35,
+  0x2f, 0x28, 0x22, 0x1c, 0x15, 0xf, 0x9, 0x3,
+};
+
+/**    
+ * @brief  Initialization function for the Q15 DCT4/IDCT4.   
+ * @param[in,out] *S         points to an instance of Q15 DCT4/IDCT4 structure.   
+ * @param[in]     *S_RFFT    points to an instance of Q15 RFFT/RIFFT structure.   
+ * @param[in]     *S_CFFT    points to an instance of Q15 CFFT/CIFFT structure.   
+ * @param[in]     N          length of the DCT4.   
+ * @param[in]     Nby2       half of the length of the DCT4.   
+ * @param[in]     normalize  normalizing factor.   
+ * @return  	  arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.   
+ * \par Normalizing factor:    
+ * The normalizing factor is <code>sqrt(2/N)</code>, which depends on the size of transform <code>N</code>.    
+ * Normalizing factors in 1.15 format are mentioned in the table below for different DCT sizes:    
+ * \image html dct4NormalizingQ15Table.gif    
+ */
+
+arm_status arm_dct4_init_q15(
+  arm_dct4_instance_q15 * S,
+  arm_rfft_instance_q15 * S_RFFT,
+  arm_cfft_radix4_instance_q15 * S_CFFT,
+  uint16_t N,
+  uint16_t Nby2,
+  q15_t normalize)
+{
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+
+  /* Initializing the pointer array with the weight table base addresses of different lengths */
+  q15_t *twiddlePtr[4] = { (q15_t *) WeightsQ15_128, (q15_t *) WeightsQ15_512,
+    (q15_t *) WeightsQ15_2048, (q15_t *) WeightsQ15_8192
+  };
+
+  /* Initializing the pointer array with the cos factor table base addresses of different lengths */
+  q15_t *pCosFactor[4] =
+    { (q15_t *) cos_factorsQ15_128, (q15_t *) cos_factorsQ15_512,
+    (q15_t *) cos_factorsQ15_2048, (q15_t *) cos_factorsQ15_8192
+  };
+
+  /* Initialize the DCT4 length */
+  S->N = N;
+
+  /* Initialize the half of DCT4 length */
+  S->Nby2 = Nby2;
+
+  /* Initialize the DCT4 Normalizing factor */
+  S->normalize = normalize;
+
+  /* Initialize Real FFT Instance */
+  S->pRfft = S_RFFT;
+
+  /* Initialize Complex FFT Instance */
+  S->pCfft = S_CFFT;
+
+  switch (N)
+  {
+    /* Initialize the table modifier values */
+  case 8192u:
+    S->pTwiddle = twiddlePtr[3];
+    S->pCosFactor = pCosFactor[3];
+    break;
+  case 2048u:
+    S->pTwiddle = twiddlePtr[2];
+    S->pCosFactor = pCosFactor[2];
+    break;
+  case 512u:
+    S->pTwiddle = twiddlePtr[1];
+    S->pCosFactor = pCosFactor[1];
+    break;
+  case 128u:
+    S->pTwiddle = twiddlePtr[0];
+    S->pCosFactor = pCosFactor[0];
+    break;
+  default:
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+
+  /* Initialize the RFFT/RIFFT */
+  arm_rfft_init_q15(S->pRfft, S->N, 0u, 1u);
+
+  /* return the status of DCT4 Init function */
+  return (status);
+}
+
+/**    
+   * @} end of DCT4_IDCT4 group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,8364 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_dct4_init_q31.c    
+*    
+* Description:	Initialization function of DCT-4 & IDCT4 Q31    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup DCT4_IDCT4    
+ * @{    
+ */
+
+/*    
+* @brief  Weights Table    
+*/
+
+/**    
+* \par    
+* Weights tables are generated using the formula : <pre>weights[n] = e^(-j*n*pi/(2*N))</pre>    
+* \par    
+* C command to generate the table    
+* <pre>    
+* for(i = 0; i< N; i++)    
+* {    
+*   weights[2*i]= cos(i*c);    
+*   weights[(2*i)+1]= -sin(i * c);    
+* } </pre>    
+* \par    
+* where <code>N</code> is the Number of weights to be calculated and <code>c</code> is <code>pi/(2*N)</code>    
+* \par    
+* Convert the output to q31 format by multiplying with 2^31 and saturated if required.    
+* \par    
+* In the tables below the real and imaginary values are placed alternatively, hence the    
+* array length is <code>2*N</code>.    
+*/
+
+static const q31_t WeightsQ31_128[256] = {
+  0x7fffffff, 0x0, 0x7ffd885a, 0xfe6de2e0, 0x7ff62182, 0xfcdbd541, 0x7fe9cbc0,
+  0xfb49e6a3,
+  0x7fd8878e, 0xf9b82684, 0x7fc25596, 0xf826a462, 0x7fa736b4, 0xf6956fb7,
+  0x7f872bf3, 0xf50497fb,
+  0x7f62368f, 0xf3742ca2, 0x7f3857f6, 0xf1e43d1c, 0x7f0991c4, 0xf054d8d5,
+  0x7ed5e5c6, 0xeec60f31,
+  0x7e9d55fc, 0xed37ef91, 0x7e5fe493, 0xebaa894f, 0x7e1d93ea, 0xea1debbb,
+  0x7dd6668f, 0xe8922622,
+  0x7d8a5f40, 0xe70747c4, 0x7d3980ec, 0xe57d5fda, 0x7ce3ceb2, 0xe3f47d96,
+  0x7c894bde, 0xe26cb01b,
+  0x7c29fbee, 0xe0e60685, 0x7bc5e290, 0xdf608fe4, 0x7b5d039e, 0xdddc5b3b,
+  0x7aef6323, 0xdc597781,
+  0x7a7d055b, 0xdad7f3a2, 0x7a05eead, 0xd957de7a, 0x798a23b1, 0xd7d946d8,
+  0x7909a92d, 0xd65c3b7b,
+  0x78848414, 0xd4e0cb15, 0x77fab989, 0xd3670446, 0x776c4edb, 0xd1eef59e,
+  0x76d94989, 0xd078ad9e,
+  0x7641af3d, 0xcf043ab3, 0x75a585cf, 0xcd91ab39, 0x7504d345, 0xcc210d79,
+  0x745f9dd1, 0xcab26fa9,
+  0x73b5ebd1, 0xc945dfec, 0x7307c3d0, 0xc7db6c50, 0x72552c85, 0xc67322ce,
+  0x719e2cd2, 0xc50d1149,
+  0x70e2cbc6, 0xc3a94590, 0x7023109a, 0xc247cd5a, 0x6f5f02b2, 0xc0e8b648,
+  0x6e96a99d, 0xbf8c0de3,
+  0x6dca0d14, 0xbe31e19b, 0x6cf934fc, 0xbcda3ecb, 0x6c242960, 0xbb8532b0,
+  0x6b4af279, 0xba32ca71,
+  0x6a6d98a4, 0xb8e31319, 0x698c246c, 0xb796199b, 0x68a69e81, 0xb64beacd,
+  0x67bd0fbd, 0xb5049368,
+  0x66cf8120, 0xb3c0200c, 0x65ddfbd3, 0xb27e9d3c, 0x64e88926, 0xb140175b,
+  0x63ef3290, 0xb0049ab3,
+  0x62f201ac, 0xaecc336c, 0x61f1003f, 0xad96ed92, 0x60ec3830, 0xac64d510,
+  0x5fe3b38d, 0xab35f5b5,
+  0x5ed77c8a, 0xaa0a5b2e, 0x5dc79d7c, 0xa8e21106, 0x5cb420e0, 0xa7bd22ac,
+  0x5b9d1154, 0xa69b9b68,
+  0x5a82799a, 0xa57d8666, 0x59646498, 0xa462eeac, 0x5842dd54, 0xa34bdf20,
+  0x571deefa, 0xa2386284,
+  0x55f5a4d2, 0xa1288376, 0x54ca0a4b, 0xa01c4c73, 0x539b2af0, 0x9f13c7d0,
+  0x5269126e, 0x9e0effc1,
+  0x5133cc94, 0x9d0dfe54, 0x4ffb654d, 0x9c10cd70, 0x4ebfe8a5, 0x9b1776da,
+  0x4d8162c4, 0x9a22042d,
+  0x4c3fdff4, 0x99307ee0, 0x4afb6c98, 0x9842f043, 0x49b41533, 0x9759617f,
+  0x4869e665, 0x9673db94,
+  0x471cece7, 0x9592675c, 0x45cd358f, 0x94b50d87, 0x447acd50, 0x93dbd6a0,
+  0x4325c135, 0x9306cb04,
+  0x41ce1e65, 0x9235f2ec, 0x4073f21d, 0x91695663, 0x3f1749b8, 0x90a0fd4e,
+  0x3db832a6, 0x8fdcef66,
+  0x3c56ba70, 0x8f1d343a, 0x3af2eeb7, 0x8e61d32e, 0x398cdd32, 0x8daad37b,
+  0x382493b0, 0x8cf83c30,
+  0x36ba2014, 0x8c4a142f, 0x354d9057, 0x8ba0622f, 0x33def287, 0x8afb2cbb,
+  0x326e54c7, 0x8a5a7a31,
+  0x30fbc54d, 0x89be50c3, 0x2f875262, 0x8926b677, 0x2e110a62, 0x8893b125,
+  0x2c98fbba, 0x88054677,
+  0x2b1f34eb, 0x877b7bec, 0x29a3c485, 0x86f656d3, 0x2826b928, 0x8675dc4f,
+  0x26a82186, 0x85fa1153,
+  0x25280c5e, 0x8582faa5, 0x23a6887f, 0x85109cdd, 0x2223a4c5, 0x84a2fc62,
+  0x209f701c, 0x843a1d70,
+  0x1f19f97b, 0x83d60412, 0x1d934fe5, 0x8376b422, 0x1c0b826a, 0x831c314e,
+  0x1a82a026, 0x82c67f14,
+  0x18f8b83c, 0x8275a0c0, 0x176dd9de, 0x82299971, 0x15e21445, 0x81e26c16,
+  0x145576b1, 0x81a01b6d,
+  0x12c8106f, 0x8162aa04, 0x1139f0cf, 0x812a1a3a, 0xfab272b, 0x80f66e3c,
+  0xe1bc2e4, 0x80c7a80a,
+  0xc8bd35e, 0x809dc971, 0xafb6805, 0x8078d40d, 0x96a9049, 0x8058c94c,
+  0x7d95b9e, 0x803daa6a,
+  0x647d97c, 0x80277872, 0x4b6195d, 0x80163440, 0x3242abf, 0x8009de7e,
+  0x1921d20, 0x800277a6,
+};
+
+static const q31_t WeightsQ31_512[1024] = {
+  0x7fffffff, 0x0, 0x7fffd886, 0xff9b781d, 0x7fff6216, 0xff36f078, 0x7ffe9cb2,
+  0xfed2694f,
+  0x7ffd885a, 0xfe6de2e0, 0x7ffc250f, 0xfe095d69, 0x7ffa72d1, 0xfda4d929,
+  0x7ff871a2, 0xfd40565c,
+  0x7ff62182, 0xfcdbd541, 0x7ff38274, 0xfc775616, 0x7ff09478, 0xfc12d91a,
+  0x7fed5791, 0xfbae5e89,
+  0x7fe9cbc0, 0xfb49e6a3, 0x7fe5f108, 0xfae571a4, 0x7fe1c76b, 0xfa80ffcb,
+  0x7fdd4eec, 0xfa1c9157,
+  0x7fd8878e, 0xf9b82684, 0x7fd37153, 0xf953bf91, 0x7fce0c3e, 0xf8ef5cbb,
+  0x7fc85854, 0xf88afe42,
+  0x7fc25596, 0xf826a462, 0x7fbc040a, 0xf7c24f59, 0x7fb563b3, 0xf75dff66,
+  0x7fae7495, 0xf6f9b4c6,
+  0x7fa736b4, 0xf6956fb7, 0x7f9faa15, 0xf6313077, 0x7f97cebd, 0xf5ccf743,
+  0x7f8fa4b0, 0xf568c45b,
+  0x7f872bf3, 0xf50497fb, 0x7f7e648c, 0xf4a07261, 0x7f754e80, 0xf43c53cb,
+  0x7f6be9d4, 0xf3d83c77,
+  0x7f62368f, 0xf3742ca2, 0x7f5834b7, 0xf310248a, 0x7f4de451, 0xf2ac246e,
+  0x7f434563, 0xf2482c8a,
+  0x7f3857f6, 0xf1e43d1c, 0x7f2d1c0e, 0xf1805662, 0x7f2191b4, 0xf11c789a,
+  0x7f15b8ee, 0xf0b8a401,
+  0x7f0991c4, 0xf054d8d5, 0x7efd1c3c, 0xeff11753, 0x7ef05860, 0xef8d5fb8,
+  0x7ee34636, 0xef29b243,
+  0x7ed5e5c6, 0xeec60f31, 0x7ec8371a, 0xee6276bf, 0x7eba3a39, 0xedfee92b,
+  0x7eabef2c, 0xed9b66b2,
+  0x7e9d55fc, 0xed37ef91, 0x7e8e6eb2, 0xecd48407, 0x7e7f3957, 0xec71244f,
+  0x7e6fb5f4, 0xec0dd0a8,
+  0x7e5fe493, 0xebaa894f, 0x7e4fc53e, 0xeb474e81, 0x7e3f57ff, 0xeae4207a,
+  0x7e2e9cdf, 0xea80ff7a,
+  0x7e1d93ea, 0xea1debbb, 0x7e0c3d29, 0xe9bae57d, 0x7dfa98a8, 0xe957ecfb,
+  0x7de8a670, 0xe8f50273,
+  0x7dd6668f, 0xe8922622, 0x7dc3d90d, 0xe82f5844, 0x7db0fdf8, 0xe7cc9917,
+  0x7d9dd55a, 0xe769e8d8,
+  0x7d8a5f40, 0xe70747c4, 0x7d769bb5, 0xe6a4b616, 0x7d628ac6, 0xe642340d,
+  0x7d4e2c7f, 0xe5dfc1e5,
+  0x7d3980ec, 0xe57d5fda, 0x7d24881b, 0xe51b0e2a, 0x7d0f4218, 0xe4b8cd11,
+  0x7cf9aef0, 0xe4569ccb,
+  0x7ce3ceb2, 0xe3f47d96, 0x7ccda169, 0xe3926fad, 0x7cb72724, 0xe330734d,
+  0x7ca05ff1, 0xe2ce88b3,
+  0x7c894bde, 0xe26cb01b, 0x7c71eaf9, 0xe20ae9c1, 0x7c5a3d50, 0xe1a935e2,
+  0x7c4242f2, 0xe14794ba,
+  0x7c29fbee, 0xe0e60685, 0x7c116853, 0xe0848b7f, 0x7bf88830, 0xe02323e5,
+  0x7bdf5b94, 0xdfc1cff3,
+  0x7bc5e290, 0xdf608fe4, 0x7bac1d31, 0xdeff63f4, 0x7b920b89, 0xde9e4c60,
+  0x7b77ada8, 0xde3d4964,
+  0x7b5d039e, 0xdddc5b3b, 0x7b420d7a, 0xdd7b8220, 0x7b26cb4f, 0xdd1abe51,
+  0x7b0b3d2c, 0xdcba1008,
+  0x7aef6323, 0xdc597781, 0x7ad33d45, 0xdbf8f4f8, 0x7ab6cba4, 0xdb9888a8,
+  0x7a9a0e50, 0xdb3832cd,
+  0x7a7d055b, 0xdad7f3a2, 0x7a5fb0d8, 0xda77cb63, 0x7a4210d8, 0xda17ba4a,
+  0x7a24256f, 0xd9b7c094,
+  0x7a05eead, 0xd957de7a, 0x79e76ca7, 0xd8f81439, 0x79c89f6e, 0xd898620c,
+  0x79a98715, 0xd838c82d,
+  0x798a23b1, 0xd7d946d8, 0x796a7554, 0xd779de47, 0x794a7c12, 0xd71a8eb5,
+  0x792a37fe, 0xd6bb585e,
+  0x7909a92d, 0xd65c3b7b, 0x78e8cfb2, 0xd5fd3848, 0x78c7aba2, 0xd59e4eff,
+  0x78a63d11, 0xd53f7fda,
+  0x78848414, 0xd4e0cb15, 0x786280bf, 0xd48230e9, 0x78403329, 0xd423b191,
+  0x781d9b65, 0xd3c54d47,
+  0x77fab989, 0xd3670446, 0x77d78daa, 0xd308d6c7, 0x77b417df, 0xd2aac504,
+  0x7790583e, 0xd24ccf39,
+  0x776c4edb, 0xd1eef59e, 0x7747fbce, 0xd191386e, 0x77235f2d, 0xd13397e2,
+  0x76fe790e, 0xd0d61434,
+  0x76d94989, 0xd078ad9e, 0x76b3d0b4, 0xd01b6459, 0x768e0ea6, 0xcfbe389f,
+  0x76680376, 0xcf612aaa,
+  0x7641af3d, 0xcf043ab3, 0x761b1211, 0xcea768f2, 0x75f42c0b, 0xce4ab5a2,
+  0x75ccfd42, 0xcdee20fc,
+  0x75a585cf, 0xcd91ab39, 0x757dc5ca, 0xcd355491, 0x7555bd4c, 0xccd91d3d,
+  0x752d6c6c, 0xcc7d0578,
+  0x7504d345, 0xcc210d79, 0x74dbf1ef, 0xcbc53579, 0x74b2c884, 0xcb697db0,
+  0x7489571c, 0xcb0de658,
+  0x745f9dd1, 0xcab26fa9, 0x74359cbd, 0xca5719db, 0x740b53fb, 0xc9fbe527,
+  0x73e0c3a3, 0xc9a0d1c5,
+  0x73b5ebd1, 0xc945dfec, 0x738acc9e, 0xc8eb0fd6, 0x735f6626, 0xc89061ba,
+  0x7333b883, 0xc835d5d0,
+  0x7307c3d0, 0xc7db6c50, 0x72db8828, 0xc7812572, 0x72af05a7, 0xc727016d,
+  0x72823c67, 0xc6cd0079,
+  0x72552c85, 0xc67322ce, 0x7227d61c, 0xc61968a2, 0x71fa3949, 0xc5bfd22e,
+  0x71cc5626, 0xc5665fa9,
+  0x719e2cd2, 0xc50d1149, 0x716fbd68, 0xc4b3e746, 0x71410805, 0xc45ae1d7,
+  0x71120cc5, 0xc4020133,
+  0x70e2cbc6, 0xc3a94590, 0x70b34525, 0xc350af26, 0x708378ff, 0xc2f83e2a,
+  0x70536771, 0xc29ff2d4,
+  0x7023109a, 0xc247cd5a, 0x6ff27497, 0xc1efcdf3, 0x6fc19385, 0xc197f4d4,
+  0x6f906d84, 0xc1404233,
+  0x6f5f02b2, 0xc0e8b648, 0x6f2d532c, 0xc0915148, 0x6efb5f12, 0xc03a1368,
+  0x6ec92683, 0xbfe2fcdf,
+  0x6e96a99d, 0xbf8c0de3, 0x6e63e87f, 0xbf3546a8, 0x6e30e34a, 0xbedea765,
+  0x6dfd9a1c, 0xbe88304f,
+  0x6dca0d14, 0xbe31e19b, 0x6d963c54, 0xbddbbb7f, 0x6d6227fa, 0xbd85be30,
+  0x6d2dd027, 0xbd2fe9e2,
+  0x6cf934fc, 0xbcda3ecb, 0x6cc45698, 0xbc84bd1f, 0x6c8f351c, 0xbc2f6513,
+  0x6c59d0a9, 0xbbda36dd,
+  0x6c242960, 0xbb8532b0, 0x6bee3f62, 0xbb3058c0, 0x6bb812d1, 0xbadba943,
+  0x6b81a3cd, 0xba87246d,
+  0x6b4af279, 0xba32ca71, 0x6b13fef5, 0xb9de9b83, 0x6adcc964, 0xb98a97d8,
+  0x6aa551e9, 0xb936bfa4,
+  0x6a6d98a4, 0xb8e31319, 0x6a359db9, 0xb88f926d, 0x69fd614a, 0xb83c3dd1,
+  0x69c4e37a, 0xb7e9157a,
+  0x698c246c, 0xb796199b, 0x69532442, 0xb7434a67, 0x6919e320, 0xb6f0a812,
+  0x68e06129, 0xb69e32cd,
+  0x68a69e81, 0xb64beacd, 0x686c9b4b, 0xb5f9d043, 0x683257ab, 0xb5a7e362,
+  0x67f7d3c5, 0xb556245e,
+  0x67bd0fbd, 0xb5049368, 0x67820bb7, 0xb4b330b3, 0x6746c7d8, 0xb461fc70,
+  0x670b4444, 0xb410f6d3,
+  0x66cf8120, 0xb3c0200c, 0x66937e91, 0xb36f784f, 0x66573cbb, 0xb31effcc,
+  0x661abbc5, 0xb2ceb6b5,
+  0x65ddfbd3, 0xb27e9d3c, 0x65a0fd0b, 0xb22eb392, 0x6563bf92, 0xb1def9e9,
+  0x6526438f, 0xb18f7071,
+  0x64e88926, 0xb140175b, 0x64aa907f, 0xb0f0eeda, 0x646c59bf, 0xb0a1f71d,
+  0x642de50d, 0xb0533055,
+  0x63ef3290, 0xb0049ab3, 0x63b0426d, 0xafb63667, 0x637114cc, 0xaf6803a2,
+  0x6331a9d4, 0xaf1a0293,
+  0x62f201ac, 0xaecc336c, 0x62b21c7b, 0xae7e965b, 0x6271fa69, 0xae312b92,
+  0x62319b9d, 0xade3f33e,
+  0x61f1003f, 0xad96ed92, 0x61b02876, 0xad4a1aba, 0x616f146c, 0xacfd7ae8,
+  0x612dc447, 0xacb10e4b,
+  0x60ec3830, 0xac64d510, 0x60aa7050, 0xac18cf69, 0x60686ccf, 0xabccfd83,
+  0x60262dd6, 0xab815f8d,
+  0x5fe3b38d, 0xab35f5b5, 0x5fa0fe1f, 0xaaeac02c, 0x5f5e0db3, 0xaa9fbf1e,
+  0x5f1ae274, 0xaa54f2ba,
+  0x5ed77c8a, 0xaa0a5b2e, 0x5e93dc1f, 0xa9bff8a8, 0x5e50015d, 0xa975cb57,
+  0x5e0bec6e, 0xa92bd367,
+  0x5dc79d7c, 0xa8e21106, 0x5d8314b1, 0xa8988463, 0x5d3e5237, 0xa84f2daa,
+  0x5cf95638, 0xa8060d08,
+  0x5cb420e0, 0xa7bd22ac, 0x5c6eb258, 0xa7746ec0, 0x5c290acc, 0xa72bf174,
+  0x5be32a67, 0xa6e3aaf2,
+  0x5b9d1154, 0xa69b9b68, 0x5b56bfbd, 0xa653c303, 0x5b1035cf, 0xa60c21ee,
+  0x5ac973b5, 0xa5c4b855,
+  0x5a82799a, 0xa57d8666, 0x5a3b47ab, 0xa5368c4b, 0x59f3de12, 0xa4efca31,
+  0x59ac3cfd, 0xa4a94043,
+  0x59646498, 0xa462eeac, 0x591c550e, 0xa41cd599, 0x58d40e8c, 0xa3d6f534,
+  0x588b9140, 0xa3914da8,
+  0x5842dd54, 0xa34bdf20, 0x57f9f2f8, 0xa306a9c8, 0x57b0d256, 0xa2c1adc9,
+  0x57677b9d, 0xa27ceb4f,
+  0x571deefa, 0xa2386284, 0x56d42c99, 0xa1f41392, 0x568a34a9, 0xa1affea3,
+  0x56400758, 0xa16c23e1,
+  0x55f5a4d2, 0xa1288376, 0x55ab0d46, 0xa0e51d8c, 0x556040e2, 0xa0a1f24d,
+  0x55153fd4, 0xa05f01e1,
+  0x54ca0a4b, 0xa01c4c73, 0x547ea073, 0x9fd9d22a, 0x5433027d, 0x9f979331,
+  0x53e73097, 0x9f558fb0,
+  0x539b2af0, 0x9f13c7d0, 0x534ef1b5, 0x9ed23bb9, 0x53028518, 0x9e90eb94,
+  0x52b5e546, 0x9e4fd78a,
+  0x5269126e, 0x9e0effc1, 0x521c0cc2, 0x9dce6463, 0x51ced46e, 0x9d8e0597,
+  0x518169a5, 0x9d4de385,
+  0x5133cc94, 0x9d0dfe54, 0x50e5fd6d, 0x9cce562c, 0x5097fc5e, 0x9c8eeb34,
+  0x5049c999, 0x9c4fbd93,
+  0x4ffb654d, 0x9c10cd70, 0x4faccfab, 0x9bd21af3, 0x4f5e08e3, 0x9b93a641,
+  0x4f0f1126, 0x9b556f81,
+  0x4ebfe8a5, 0x9b1776da, 0x4e708f8f, 0x9ad9bc71, 0x4e210617, 0x9a9c406e,
+  0x4dd14c6e, 0x9a5f02f5,
+  0x4d8162c4, 0x9a22042d, 0x4d31494b, 0x99e5443b, 0x4ce10034, 0x99a8c345,
+  0x4c9087b1, 0x996c816f,
+  0x4c3fdff4, 0x99307ee0, 0x4bef092d, 0x98f4bbbc, 0x4b9e0390, 0x98b93828,
+  0x4b4ccf4d, 0x987df449,
+  0x4afb6c98, 0x9842f043, 0x4aa9dba2, 0x98082c3b, 0x4a581c9e, 0x97cda855,
+  0x4a062fbd, 0x979364b5,
+  0x49b41533, 0x9759617f, 0x4961cd33, 0x971f9ed7, 0x490f57ee, 0x96e61ce0,
+  0x48bcb599, 0x96acdbbe,
+  0x4869e665, 0x9673db94, 0x4816ea86, 0x963b1c86, 0x47c3c22f, 0x96029eb6,
+  0x47706d93, 0x95ca6247,
+  0x471cece7, 0x9592675c, 0x46c9405c, 0x955aae17, 0x46756828, 0x9523369c,
+  0x4621647d, 0x94ec010b,
+  0x45cd358f, 0x94b50d87, 0x4578db93, 0x947e5c33, 0x452456bd, 0x9447ed2f,
+  0x44cfa740, 0x9411c09e,
+  0x447acd50, 0x93dbd6a0, 0x4425c923, 0x93a62f57, 0x43d09aed, 0x9370cae4,
+  0x437b42e1, 0x933ba968,
+  0x4325c135, 0x9306cb04, 0x42d0161e, 0x92d22fd9, 0x427a41d0, 0x929dd806,
+  0x42244481, 0x9269c3ac,
+  0x41ce1e65, 0x9235f2ec, 0x4177cfb1, 0x920265e4, 0x4121589b, 0x91cf1cb6,
+  0x40cab958, 0x919c1781,
+  0x4073f21d, 0x91695663, 0x401d0321, 0x9136d97d, 0x3fc5ec98, 0x9104a0ee,
+  0x3f6eaeb8, 0x90d2acd4,
+  0x3f1749b8, 0x90a0fd4e, 0x3ebfbdcd, 0x906f927c, 0x3e680b2c, 0x903e6c7b,
+  0x3e10320d, 0x900d8b69,
+  0x3db832a6, 0x8fdcef66, 0x3d600d2c, 0x8fac988f, 0x3d07c1d6, 0x8f7c8701,
+  0x3caf50da, 0x8f4cbadb,
+  0x3c56ba70, 0x8f1d343a, 0x3bfdfecd, 0x8eedf33b, 0x3ba51e29, 0x8ebef7fb,
+  0x3b4c18ba, 0x8e904298,
+  0x3af2eeb7, 0x8e61d32e, 0x3a99a057, 0x8e33a9da, 0x3a402dd2, 0x8e05c6b7,
+  0x39e6975e, 0x8dd829e4,
+  0x398cdd32, 0x8daad37b, 0x3932ff87, 0x8d7dc399, 0x38d8fe93, 0x8d50fa59,
+  0x387eda8e, 0x8d2477d8,
+  0x382493b0, 0x8cf83c30, 0x37ca2a30, 0x8ccc477d, 0x376f9e46, 0x8ca099da,
+  0x3714f02a, 0x8c753362,
+  0x36ba2014, 0x8c4a142f, 0x365f2e3b, 0x8c1f3c5d, 0x36041ad9, 0x8bf4ac05,
+  0x35a8e625, 0x8bca6343,
+  0x354d9057, 0x8ba0622f, 0x34f219a8, 0x8b76a8e4, 0x34968250, 0x8b4d377c,
+  0x343aca87, 0x8b240e11,
+  0x33def287, 0x8afb2cbb, 0x3382fa88, 0x8ad29394, 0x3326e2c3, 0x8aaa42b4,
+  0x32caab6f, 0x8a823a36,
+  0x326e54c7, 0x8a5a7a31, 0x3211df04, 0x8a3302be, 0x31b54a5e, 0x8a0bd3f5,
+  0x3158970e, 0x89e4edef,
+  0x30fbc54d, 0x89be50c3, 0x309ed556, 0x8997fc8a, 0x3041c761, 0x8971f15a,
+  0x2fe49ba7, 0x894c2f4c,
+  0x2f875262, 0x8926b677, 0x2f29ebcc, 0x890186f2, 0x2ecc681e, 0x88dca0d3,
+  0x2e6ec792, 0x88b80432,
+  0x2e110a62, 0x8893b125, 0x2db330c7, 0x886fa7c2, 0x2d553afc, 0x884be821,
+  0x2cf72939, 0x88287256,
+  0x2c98fbba, 0x88054677, 0x2c3ab2b9, 0x87e2649b, 0x2bdc4e6f, 0x87bfccd7,
+  0x2b7dcf17, 0x879d7f41,
+  0x2b1f34eb, 0x877b7bec, 0x2ac08026, 0x8759c2ef, 0x2a61b101, 0x8738545e,
+  0x2a02c7b8, 0x8717304e,
+  0x29a3c485, 0x86f656d3, 0x2944a7a2, 0x86d5c802, 0x28e5714b, 0x86b583ee,
+  0x288621b9, 0x86958aac,
+  0x2826b928, 0x8675dc4f, 0x27c737d3, 0x865678eb, 0x27679df4, 0x86376092,
+  0x2707ebc7, 0x86189359,
+  0x26a82186, 0x85fa1153, 0x26483f6c, 0x85dbda91, 0x25e845b6, 0x85bdef28,
+  0x2588349d, 0x85a04f28,
+  0x25280c5e, 0x8582faa5, 0x24c7cd33, 0x8565f1b0, 0x24677758, 0x8549345c,
+  0x24070b08, 0x852cc2bb,
+  0x23a6887f, 0x85109cdd, 0x2345eff8, 0x84f4c2d4, 0x22e541af, 0x84d934b1,
+  0x22847de0, 0x84bdf286,
+  0x2223a4c5, 0x84a2fc62, 0x21c2b69c, 0x84885258, 0x2161b3a0, 0x846df477,
+  0x21009c0c, 0x8453e2cf,
+  0x209f701c, 0x843a1d70, 0x203e300d, 0x8420a46c, 0x1fdcdc1b, 0x840777d0,
+  0x1f7b7481, 0x83ee97ad,
+  0x1f19f97b, 0x83d60412, 0x1eb86b46, 0x83bdbd0e, 0x1e56ca1e, 0x83a5c2b0,
+  0x1df5163f, 0x838e1507,
+  0x1d934fe5, 0x8376b422, 0x1d31774d, 0x835fa00f, 0x1ccf8cb3, 0x8348d8dc,
+  0x1c6d9053, 0x83325e97,
+  0x1c0b826a, 0x831c314e, 0x1ba96335, 0x83065110, 0x1b4732ef, 0x82f0bde8,
+  0x1ae4f1d6, 0x82db77e5,
+  0x1a82a026, 0x82c67f14, 0x1a203e1b, 0x82b1d381, 0x19bdcbf3, 0x829d753a,
+  0x195b49ea, 0x8289644b,
+  0x18f8b83c, 0x8275a0c0, 0x18961728, 0x82622aa6, 0x183366e9, 0x824f0208,
+  0x17d0a7bc, 0x823c26f3,
+  0x176dd9de, 0x82299971, 0x170afd8d, 0x82175990, 0x16a81305, 0x82056758,
+  0x16451a83, 0x81f3c2d7,
+  0x15e21445, 0x81e26c16, 0x157f0086, 0x81d16321, 0x151bdf86, 0x81c0a801,
+  0x14b8b17f, 0x81b03ac2,
+  0x145576b1, 0x81a01b6d, 0x13f22f58, 0x81904a0c, 0x138edbb1, 0x8180c6a9,
+  0x132b7bf9, 0x8171914e,
+  0x12c8106f, 0x8162aa04, 0x1264994e, 0x815410d4, 0x120116d5, 0x8145c5c7,
+  0x119d8941, 0x8137c8e6,
+  0x1139f0cf, 0x812a1a3a, 0x10d64dbd, 0x811cb9ca, 0x1072a048, 0x810fa7a0,
+  0x100ee8ad, 0x8102e3c4,
+  0xfab272b, 0x80f66e3c, 0xf475bff, 0x80ea4712, 0xee38766, 0x80de6e4c,
+  0xe7fa99e, 0x80d2e3f2,
+  0xe1bc2e4, 0x80c7a80a, 0xdb7d376, 0x80bcba9d, 0xd53db92, 0x80b21baf,
+  0xcefdb76, 0x80a7cb49,
+  0xc8bd35e, 0x809dc971, 0xc27c389, 0x8094162c, 0xbc3ac35, 0x808ab180,
+  0xb5f8d9f, 0x80819b74,
+  0xafb6805, 0x8078d40d, 0xa973ba5, 0x80705b50, 0xa3308bd, 0x80683143,
+  0x9cecf89, 0x806055eb,
+  0x96a9049, 0x8058c94c, 0x9064b3a, 0x80518b6b, 0x8a2009a, 0x804a9c4d,
+  0x83db0a7, 0x8043fbf6,
+  0x7d95b9e, 0x803daa6a, 0x77501be, 0x8037a7ac, 0x710a345, 0x8031f3c2,
+  0x6ac406f, 0x802c8ead,
+  0x647d97c, 0x80277872, 0x5e36ea9, 0x8022b114, 0x57f0035, 0x801e3895,
+  0x51a8e5c, 0x801a0ef8,
+  0x4b6195d, 0x80163440, 0x451a177, 0x8012a86f, 0x3ed26e6, 0x800f6b88,
+  0x388a9ea, 0x800c7d8c,
+  0x3242abf, 0x8009de7e, 0x2bfa9a4, 0x80078e5e, 0x25b26d7, 0x80058d2f,
+  0x1f6a297, 0x8003daf1,
+  0x1921d20, 0x800277a6, 0x12d96b1, 0x8001634e, 0xc90f88, 0x80009dea,
+  0x6487e3, 0x8000277a,
+};
+
+static const q31_t WeightsQ31_2048[4096] = {
+  0x7fffffff, 0x0, 0x7ffffd88, 0xffe6de05, 0x7ffff621, 0xffcdbc0b, 0x7fffe9cb,
+  0xffb49a12,
+  0x7fffd886, 0xff9b781d, 0x7fffc251, 0xff82562c, 0x7fffa72c, 0xff69343f,
+  0x7fff8719, 0xff501258,
+  0x7fff6216, 0xff36f078, 0x7fff3824, 0xff1dcea0, 0x7fff0943, 0xff04acd0,
+  0x7ffed572, 0xfeeb8b0a,
+  0x7ffe9cb2, 0xfed2694f, 0x7ffe5f03, 0xfeb947a0, 0x7ffe1c65, 0xfea025fd,
+  0x7ffdd4d7, 0xfe870467,
+  0x7ffd885a, 0xfe6de2e0, 0x7ffd36ee, 0xfe54c169, 0x7ffce093, 0xfe3ba002,
+  0x7ffc8549, 0xfe227eac,
+  0x7ffc250f, 0xfe095d69, 0x7ffbbfe6, 0xfdf03c3a, 0x7ffb55ce, 0xfdd71b1e,
+  0x7ffae6c7, 0xfdbdfa18,
+  0x7ffa72d1, 0xfda4d929, 0x7ff9f9ec, 0xfd8bb850, 0x7ff97c18, 0xfd729790,
+  0x7ff8f954, 0xfd5976e9,
+  0x7ff871a2, 0xfd40565c, 0x7ff7e500, 0xfd2735ea, 0x7ff75370, 0xfd0e1594,
+  0x7ff6bcf0, 0xfcf4f55c,
+  0x7ff62182, 0xfcdbd541, 0x7ff58125, 0xfcc2b545, 0x7ff4dbd9, 0xfca9956a,
+  0x7ff4319d, 0xfc9075af,
+  0x7ff38274, 0xfc775616, 0x7ff2ce5b, 0xfc5e36a0, 0x7ff21553, 0xfc45174e,
+  0x7ff1575d, 0xfc2bf821,
+  0x7ff09478, 0xfc12d91a, 0x7fefcca4, 0xfbf9ba39, 0x7feeffe1, 0xfbe09b80,
+  0x7fee2e30, 0xfbc77cf0,
+  0x7fed5791, 0xfbae5e89, 0x7fec7c02, 0xfb95404d, 0x7feb9b85, 0xfb7c223d,
+  0x7feab61a, 0xfb630459,
+  0x7fe9cbc0, 0xfb49e6a3, 0x7fe8dc78, 0xfb30c91b, 0x7fe7e841, 0xfb17abc2,
+  0x7fe6ef1c, 0xfafe8e9b,
+  0x7fe5f108, 0xfae571a4, 0x7fe4ee06, 0xfacc54e0, 0x7fe3e616, 0xfab3384f,
+  0x7fe2d938, 0xfa9a1bf3,
+  0x7fe1c76b, 0xfa80ffcb, 0x7fe0b0b1, 0xfa67e3da, 0x7fdf9508, 0xfa4ec821,
+  0x7fde7471, 0xfa35ac9f,
+  0x7fdd4eec, 0xfa1c9157, 0x7fdc247a, 0xfa037648, 0x7fdaf519, 0xf9ea5b75,
+  0x7fd9c0ca, 0xf9d140de,
+  0x7fd8878e, 0xf9b82684, 0x7fd74964, 0xf99f0c68, 0x7fd6064c, 0xf985f28a,
+  0x7fd4be46, 0xf96cd8ed,
+  0x7fd37153, 0xf953bf91, 0x7fd21f72, 0xf93aa676, 0x7fd0c8a3, 0xf9218d9e,
+  0x7fcf6ce8, 0xf908750a,
+  0x7fce0c3e, 0xf8ef5cbb, 0x7fcca6a7, 0xf8d644b2, 0x7fcb3c23, 0xf8bd2cef,
+  0x7fc9ccb2, 0xf8a41574,
+  0x7fc85854, 0xf88afe42, 0x7fc6df08, 0xf871e759, 0x7fc560cf, 0xf858d0bb,
+  0x7fc3dda9, 0xf83fba68,
+  0x7fc25596, 0xf826a462, 0x7fc0c896, 0xf80d8ea9, 0x7fbf36aa, 0xf7f4793e,
+  0x7fbd9fd0, 0xf7db6423,
+  0x7fbc040a, 0xf7c24f59, 0x7fba6357, 0xf7a93ae0, 0x7fb8bdb8, 0xf79026b9,
+  0x7fb7132b, 0xf77712e5,
+  0x7fb563b3, 0xf75dff66, 0x7fb3af4e, 0xf744ec3b, 0x7fb1f5fc, 0xf72bd967,
+  0x7fb037bf, 0xf712c6ea,
+  0x7fae7495, 0xf6f9b4c6, 0x7facac7f, 0xf6e0a2fa, 0x7faadf7c, 0xf6c79188,
+  0x7fa90d8e, 0xf6ae8071,
+  0x7fa736b4, 0xf6956fb7, 0x7fa55aee, 0xf67c5f59, 0x7fa37a3c, 0xf6634f59,
+  0x7fa1949e, 0xf64a3fb8,
+  0x7f9faa15, 0xf6313077, 0x7f9dbaa0, 0xf6182196, 0x7f9bc640, 0xf5ff1318,
+  0x7f99ccf4, 0xf5e604fc,
+  0x7f97cebd, 0xf5ccf743, 0x7f95cb9a, 0xf5b3e9f0, 0x7f93c38c, 0xf59add02,
+  0x7f91b694, 0xf581d07b,
+  0x7f8fa4b0, 0xf568c45b, 0x7f8d8de1, 0xf54fb8a4, 0x7f8b7227, 0xf536ad56,
+  0x7f895182, 0xf51da273,
+  0x7f872bf3, 0xf50497fb, 0x7f850179, 0xf4eb8def, 0x7f82d214, 0xf4d28451,
+  0x7f809dc5, 0xf4b97b21,
+  0x7f7e648c, 0xf4a07261, 0x7f7c2668, 0xf4876a10, 0x7f79e35a, 0xf46e6231,
+  0x7f779b62, 0xf4555ac5,
+  0x7f754e80, 0xf43c53cb, 0x7f72fcb4, 0xf4234d45, 0x7f70a5fe, 0xf40a4735,
+  0x7f6e4a5e, 0xf3f1419a,
+  0x7f6be9d4, 0xf3d83c77, 0x7f698461, 0xf3bf37cb, 0x7f671a05, 0xf3a63398,
+  0x7f64aabf, 0xf38d2fe0,
+  0x7f62368f, 0xf3742ca2, 0x7f5fbd77, 0xf35b29e0, 0x7f5d3f75, 0xf342279b,
+  0x7f5abc8a, 0xf32925d3,
+  0x7f5834b7, 0xf310248a, 0x7f55a7fa, 0xf2f723c1, 0x7f531655, 0xf2de2379,
+  0x7f507fc7, 0xf2c523b2,
+  0x7f4de451, 0xf2ac246e, 0x7f4b43f2, 0xf29325ad, 0x7f489eaa, 0xf27a2771,
+  0x7f45f47b, 0xf26129ba,
+  0x7f434563, 0xf2482c8a, 0x7f409164, 0xf22f2fe1, 0x7f3dd87c, 0xf21633c0,
+  0x7f3b1aad, 0xf1fd3829,
+  0x7f3857f6, 0xf1e43d1c, 0x7f359057, 0xf1cb429a, 0x7f32c3d1, 0xf1b248a5,
+  0x7f2ff263, 0xf1994f3d,
+  0x7f2d1c0e, 0xf1805662, 0x7f2a40d2, 0xf1675e17, 0x7f2760af, 0xf14e665c,
+  0x7f247ba5, 0xf1356f32,
+  0x7f2191b4, 0xf11c789a, 0x7f1ea2dc, 0xf1038295, 0x7f1baf1e, 0xf0ea8d24,
+  0x7f18b679, 0xf0d19848,
+  0x7f15b8ee, 0xf0b8a401, 0x7f12b67c, 0xf09fb051, 0x7f0faf25, 0xf086bd39,
+  0x7f0ca2e7, 0xf06dcaba,
+  0x7f0991c4, 0xf054d8d5, 0x7f067bba, 0xf03be78a, 0x7f0360cb, 0xf022f6da,
+  0x7f0040f6, 0xf00a06c8,
+  0x7efd1c3c, 0xeff11753, 0x7ef9f29d, 0xefd8287c, 0x7ef6c418, 0xefbf3a45,
+  0x7ef390ae, 0xefa64cae,
+  0x7ef05860, 0xef8d5fb8, 0x7eed1b2c, 0xef747365, 0x7ee9d914, 0xef5b87b5,
+  0x7ee69217, 0xef429caa,
+  0x7ee34636, 0xef29b243, 0x7edff570, 0xef10c883, 0x7edc9fc6, 0xeef7df6a,
+  0x7ed94538, 0xeedef6f9,
+  0x7ed5e5c6, 0xeec60f31, 0x7ed28171, 0xeead2813, 0x7ecf1837, 0xee9441a0,
+  0x7ecbaa1a, 0xee7b5bd9,
+  0x7ec8371a, 0xee6276bf, 0x7ec4bf36, 0xee499253, 0x7ec14270, 0xee30ae96,
+  0x7ebdc0c6, 0xee17cb88,
+  0x7eba3a39, 0xedfee92b, 0x7eb6aeca, 0xede60780, 0x7eb31e78, 0xedcd2687,
+  0x7eaf8943, 0xedb44642,
+  0x7eabef2c, 0xed9b66b2, 0x7ea85033, 0xed8287d7, 0x7ea4ac58, 0xed69a9b3,
+  0x7ea1039b, 0xed50cc46,
+  0x7e9d55fc, 0xed37ef91, 0x7e99a37c, 0xed1f1396, 0x7e95ec1a, 0xed063856,
+  0x7e922fd6, 0xeced5dd0,
+  0x7e8e6eb2, 0xecd48407, 0x7e8aa8ac, 0xecbbaafb, 0x7e86ddc6, 0xeca2d2ad,
+  0x7e830dff, 0xec89fb1e,
+  0x7e7f3957, 0xec71244f, 0x7e7b5fce, 0xec584e41, 0x7e778166, 0xec3f78f6,
+  0x7e739e1d, 0xec26a46d,
+  0x7e6fb5f4, 0xec0dd0a8, 0x7e6bc8eb, 0xebf4fda8, 0x7e67d703, 0xebdc2b6e,
+  0x7e63e03b, 0xebc359fb,
+  0x7e5fe493, 0xebaa894f, 0x7e5be40c, 0xeb91b96c, 0x7e57dea7, 0xeb78ea52,
+  0x7e53d462, 0xeb601c04,
+  0x7e4fc53e, 0xeb474e81, 0x7e4bb13c, 0xeb2e81ca, 0x7e47985b, 0xeb15b5e1,
+  0x7e437a9c, 0xeafceac6,
+  0x7e3f57ff, 0xeae4207a, 0x7e3b3083, 0xeacb56ff, 0x7e37042a, 0xeab28e56,
+  0x7e32d2f4, 0xea99c67e,
+  0x7e2e9cdf, 0xea80ff7a, 0x7e2a61ed, 0xea683949, 0x7e26221f, 0xea4f73ee,
+  0x7e21dd73, 0xea36af69,
+  0x7e1d93ea, 0xea1debbb, 0x7e194584, 0xea0528e5, 0x7e14f242, 0xe9ec66e8,
+  0x7e109a24, 0xe9d3a5c5,
+  0x7e0c3d29, 0xe9bae57d, 0x7e07db52, 0xe9a22610, 0x7e0374a0, 0xe9896781,
+  0x7dff0911, 0xe970a9ce,
+  0x7dfa98a8, 0xe957ecfb, 0x7df62362, 0xe93f3107, 0x7df1a942, 0xe92675f4,
+  0x7ded2a47, 0xe90dbbc2,
+  0x7de8a670, 0xe8f50273, 0x7de41dc0, 0xe8dc4a07, 0x7ddf9034, 0xe8c39280,
+  0x7ddafdce, 0xe8aadbde,
+  0x7dd6668f, 0xe8922622, 0x7dd1ca75, 0xe879714d, 0x7dcd2981, 0xe860bd61,
+  0x7dc883b4, 0xe8480a5d,
+  0x7dc3d90d, 0xe82f5844, 0x7dbf298d, 0xe816a716, 0x7dba7534, 0xe7fdf6d4,
+  0x7db5bc02, 0xe7e5477f,
+  0x7db0fdf8, 0xe7cc9917, 0x7dac3b15, 0xe7b3eb9f, 0x7da77359, 0xe79b3f16,
+  0x7da2a6c6, 0xe782937e,
+  0x7d9dd55a, 0xe769e8d8, 0x7d98ff17, 0xe7513f25, 0x7d9423fc, 0xe7389665,
+  0x7d8f4409, 0xe71fee99,
+  0x7d8a5f40, 0xe70747c4, 0x7d85759f, 0xe6eea1e4, 0x7d808728, 0xe6d5fcfc,
+  0x7d7b93da, 0xe6bd590d,
+  0x7d769bb5, 0xe6a4b616, 0x7d719eba, 0xe68c141a, 0x7d6c9ce9, 0xe6737319,
+  0x7d679642, 0xe65ad315,
+  0x7d628ac6, 0xe642340d, 0x7d5d7a74, 0xe6299604, 0x7d58654d, 0xe610f8f9,
+  0x7d534b50, 0xe5f85cef,
+  0x7d4e2c7f, 0xe5dfc1e5, 0x7d4908d9, 0xe5c727dd, 0x7d43e05e, 0xe5ae8ed8,
+  0x7d3eb30f, 0xe595f6d7,
+  0x7d3980ec, 0xe57d5fda, 0x7d3449f5, 0xe564c9e3, 0x7d2f0e2b, 0xe54c34f3,
+  0x7d29cd8c, 0xe533a10a,
+  0x7d24881b, 0xe51b0e2a, 0x7d1f3dd6, 0xe5027c53, 0x7d19eebf, 0xe4e9eb87,
+  0x7d149ad5, 0xe4d15bc6,
+  0x7d0f4218, 0xe4b8cd11, 0x7d09e489, 0xe4a03f69, 0x7d048228, 0xe487b2d0,
+  0x7cff1af5, 0xe46f2745,
+  0x7cf9aef0, 0xe4569ccb, 0x7cf43e1a, 0xe43e1362, 0x7ceec873, 0xe4258b0a,
+  0x7ce94dfb, 0xe40d03c6,
+  0x7ce3ceb2, 0xe3f47d96, 0x7cde4a98, 0xe3dbf87a, 0x7cd8c1ae, 0xe3c37474,
+  0x7cd333f3, 0xe3aaf184,
+  0x7ccda169, 0xe3926fad, 0x7cc80a0f, 0xe379eeed, 0x7cc26de5, 0xe3616f48,
+  0x7cbcccec, 0xe348f0bd,
+  0x7cb72724, 0xe330734d, 0x7cb17c8d, 0xe317f6fa, 0x7cabcd28, 0xe2ff7bc3,
+  0x7ca618f3, 0xe2e701ac,
+  0x7ca05ff1, 0xe2ce88b3, 0x7c9aa221, 0xe2b610da, 0x7c94df83, 0xe29d9a23,
+  0x7c8f1817, 0xe285248d,
+  0x7c894bde, 0xe26cb01b, 0x7c837ad8, 0xe2543ccc, 0x7c7da505, 0xe23bcaa2,
+  0x7c77ca65, 0xe223599e,
+  0x7c71eaf9, 0xe20ae9c1, 0x7c6c06c0, 0xe1f27b0b, 0x7c661dbc, 0xe1da0d7e,
+  0x7c602fec, 0xe1c1a11b,
+  0x7c5a3d50, 0xe1a935e2, 0x7c5445e9, 0xe190cbd4, 0x7c4e49b7, 0xe17862f3,
+  0x7c4848ba, 0xe15ffb3f,
+  0x7c4242f2, 0xe14794ba, 0x7c3c3860, 0xe12f2f63, 0x7c362904, 0xe116cb3d,
+  0x7c3014de, 0xe0fe6848,
+  0x7c29fbee, 0xe0e60685, 0x7c23de35, 0xe0cda5f5, 0x7c1dbbb3, 0xe0b54698,
+  0x7c179467, 0xe09ce871,
+  0x7c116853, 0xe0848b7f, 0x7c0b3777, 0xe06c2fc4, 0x7c0501d2, 0xe053d541,
+  0x7bfec765, 0xe03b7bf6,
+  0x7bf88830, 0xe02323e5, 0x7bf24434, 0xe00acd0e, 0x7bebfb70, 0xdff27773,
+  0x7be5ade6, 0xdfda2314,
+  0x7bdf5b94, 0xdfc1cff3, 0x7bd9047c, 0xdfa97e0f, 0x7bd2a89e, 0xdf912d6b,
+  0x7bcc47fa, 0xdf78de07,
+  0x7bc5e290, 0xdf608fe4, 0x7bbf7860, 0xdf484302, 0x7bb9096b, 0xdf2ff764,
+  0x7bb295b0, 0xdf17ad0a,
+  0x7bac1d31, 0xdeff63f4, 0x7ba59fee, 0xdee71c24, 0x7b9f1de6, 0xdeced59b,
+  0x7b989719, 0xdeb69059,
+  0x7b920b89, 0xde9e4c60, 0x7b8b7b36, 0xde8609b1, 0x7b84e61f, 0xde6dc84b,
+  0x7b7e4c45, 0xde558831,
+  0x7b77ada8, 0xde3d4964, 0x7b710a49, 0xde250be3, 0x7b6a6227, 0xde0ccfb1,
+  0x7b63b543, 0xddf494ce,
+  0x7b5d039e, 0xdddc5b3b, 0x7b564d36, 0xddc422f8, 0x7b4f920e, 0xddabec08,
+  0x7b48d225, 0xdd93b66a,
+  0x7b420d7a, 0xdd7b8220, 0x7b3b4410, 0xdd634f2b, 0x7b3475e5, 0xdd4b1d8c,
+  0x7b2da2fa, 0xdd32ed43,
+  0x7b26cb4f, 0xdd1abe51, 0x7b1feee5, 0xdd0290b8, 0x7b190dbc, 0xdcea6478,
+  0x7b1227d3, 0xdcd23993,
+  0x7b0b3d2c, 0xdcba1008, 0x7b044dc7, 0xdca1e7da, 0x7afd59a4, 0xdc89c109,
+  0x7af660c2, 0xdc719b96,
+  0x7aef6323, 0xdc597781, 0x7ae860c7, 0xdc4154cd, 0x7ae159ae, 0xdc293379,
+  0x7ada4dd8, 0xdc111388,
+  0x7ad33d45, 0xdbf8f4f8, 0x7acc27f7, 0xdbe0d7cd, 0x7ac50dec, 0xdbc8bc06,
+  0x7abdef25, 0xdbb0a1a4,
+  0x7ab6cba4, 0xdb9888a8, 0x7aafa367, 0xdb807114, 0x7aa8766f, 0xdb685ae9,
+  0x7aa144bc, 0xdb504626,
+  0x7a9a0e50, 0xdb3832cd, 0x7a92d329, 0xdb2020e0, 0x7a8b9348, 0xdb08105e,
+  0x7a844eae, 0xdaf00149,
+  0x7a7d055b, 0xdad7f3a2, 0x7a75b74f, 0xdabfe76a, 0x7a6e648a, 0xdaa7dca1,
+  0x7a670d0d, 0xda8fd349,
+  0x7a5fb0d8, 0xda77cb63, 0x7a584feb, 0xda5fc4ef, 0x7a50ea47, 0xda47bfee,
+  0x7a497feb, 0xda2fbc61,
+  0x7a4210d8, 0xda17ba4a, 0x7a3a9d0f, 0xd9ffb9a9, 0x7a332490, 0xd9e7ba7f,
+  0x7a2ba75a, 0xd9cfbccd,
+  0x7a24256f, 0xd9b7c094, 0x7a1c9ece, 0xd99fc5d4, 0x7a151378, 0xd987cc90,
+  0x7a0d836d, 0xd96fd4c7,
+  0x7a05eead, 0xd957de7a, 0x79fe5539, 0xd93fe9ab, 0x79f6b711, 0xd927f65b,
+  0x79ef1436, 0xd910048a,
+  0x79e76ca7, 0xd8f81439, 0x79dfc064, 0xd8e0256a, 0x79d80f6f, 0xd8c8381d,
+  0x79d059c8, 0xd8b04c52,
+  0x79c89f6e, 0xd898620c, 0x79c0e062, 0xd880794b, 0x79b91ca4, 0xd868920f,
+  0x79b15435, 0xd850ac5a,
+  0x79a98715, 0xd838c82d, 0x79a1b545, 0xd820e589, 0x7999dec4, 0xd809046e,
+  0x79920392, 0xd7f124dd,
+  0x798a23b1, 0xd7d946d8, 0x79823f20, 0xd7c16a5f, 0x797a55e0, 0xd7a98f73,
+  0x797267f2, 0xd791b616,
+  0x796a7554, 0xd779de47, 0x79627e08, 0xd7620808, 0x795a820e, 0xd74a335b,
+  0x79528167, 0xd732603f,
+  0x794a7c12, 0xd71a8eb5, 0x79427210, 0xd702bec0, 0x793a6361, 0xd6eaf05f,
+  0x79325006, 0xd6d32393,
+  0x792a37fe, 0xd6bb585e, 0x79221b4b, 0xd6a38ec0, 0x7919f9ec, 0xd68bc6ba,
+  0x7911d3e2, 0xd674004e,
+  0x7909a92d, 0xd65c3b7b, 0x790179cd, 0xd6447844, 0x78f945c3, 0xd62cb6a8,
+  0x78f10d0f, 0xd614f6a9,
+  0x78e8cfb2, 0xd5fd3848, 0x78e08dab, 0xd5e57b85, 0x78d846fb, 0xd5cdc062,
+  0x78cffba3, 0xd5b606e0,
+  0x78c7aba2, 0xd59e4eff, 0x78bf56f9, 0xd58698c0, 0x78b6fda8, 0xd56ee424,
+  0x78ae9fb0, 0xd557312d,
+  0x78a63d11, 0xd53f7fda, 0x789dd5cb, 0xd527d02e, 0x789569df, 0xd5102228,
+  0x788cf94c, 0xd4f875ca,
+  0x78848414, 0xd4e0cb15, 0x787c0a36, 0xd4c92209, 0x78738bb3, 0xd4b17aa8,
+  0x786b088c, 0xd499d4f2,
+  0x786280bf, 0xd48230e9, 0x7859f44f, 0xd46a8e8d, 0x7851633b, 0xd452eddf,
+  0x7848cd83, 0xd43b4ee0,
+  0x78403329, 0xd423b191, 0x7837942b, 0xd40c15f3, 0x782ef08b, 0xd3f47c06,
+  0x78264849, 0xd3dce3cd,
+  0x781d9b65, 0xd3c54d47, 0x7814e9df, 0xd3adb876, 0x780c33b8, 0xd396255a,
+  0x780378f1, 0xd37e93f4,
+  0x77fab989, 0xd3670446, 0x77f1f581, 0xd34f764f, 0x77e92cd9, 0xd337ea12,
+  0x77e05f91, 0xd3205f8f,
+  0x77d78daa, 0xd308d6c7, 0x77ceb725, 0xd2f14fba, 0x77c5dc01, 0xd2d9ca6a,
+  0x77bcfc3f, 0xd2c246d8,
+  0x77b417df, 0xd2aac504, 0x77ab2ee2, 0xd29344f0, 0x77a24148, 0xd27bc69c,
+  0x77994f11, 0xd2644a0a,
+  0x7790583e, 0xd24ccf39, 0x77875cce, 0xd235562b, 0x777e5cc3, 0xd21ddee2,
+  0x7775581d, 0xd206695d,
+  0x776c4edb, 0xd1eef59e, 0x776340ff, 0xd1d783a6, 0x775a2e89, 0xd1c01375,
+  0x77511778, 0xd1a8a50d,
+  0x7747fbce, 0xd191386e, 0x773edb8b, 0xd179cd99, 0x7735b6af, 0xd1626490,
+  0x772c8d3a, 0xd14afd52,
+  0x77235f2d, 0xd13397e2, 0x771a2c88, 0xd11c343f, 0x7710f54c, 0xd104d26b,
+  0x7707b979, 0xd0ed7267,
+  0x76fe790e, 0xd0d61434, 0x76f5340e, 0xd0beb7d2, 0x76ebea77, 0xd0a75d42,
+  0x76e29c4b, 0xd0900486,
+  0x76d94989, 0xd078ad9e, 0x76cff232, 0xd061588b, 0x76c69647, 0xd04a054e,
+  0x76bd35c7, 0xd032b3e7,
+  0x76b3d0b4, 0xd01b6459, 0x76aa670d, 0xd00416a3, 0x76a0f8d2, 0xcfeccac7,
+  0x76978605, 0xcfd580c6,
+  0x768e0ea6, 0xcfbe389f, 0x768492b4, 0xcfa6f255, 0x767b1231, 0xcf8fade9,
+  0x76718d1c, 0xcf786b5a,
+  0x76680376, 0xcf612aaa, 0x765e7540, 0xcf49ebda, 0x7654e279, 0xcf32aeeb,
+  0x764b4b23, 0xcf1b73de,
+  0x7641af3d, 0xcf043ab3, 0x76380ec8, 0xceed036b, 0x762e69c4, 0xced5ce08,
+  0x7624c031, 0xcebe9a8a,
+  0x761b1211, 0xcea768f2, 0x76115f63, 0xce903942, 0x7607a828, 0xce790b79,
+  0x75fdec60, 0xce61df99,
+  0x75f42c0b, 0xce4ab5a2, 0x75ea672a, 0xce338d97, 0x75e09dbd, 0xce1c6777,
+  0x75d6cfc5, 0xce054343,
+  0x75ccfd42, 0xcdee20fc, 0x75c32634, 0xcdd700a4, 0x75b94a9c, 0xcdbfe23a,
+  0x75af6a7b, 0xcda8c5c1,
+  0x75a585cf, 0xcd91ab39, 0x759b9c9b, 0xcd7a92a2, 0x7591aedd, 0xcd637bfe,
+  0x7587bc98, 0xcd4c674d,
+  0x757dc5ca, 0xcd355491, 0x7573ca75, 0xcd1e43ca, 0x7569ca99, 0xcd0734f9,
+  0x755fc635, 0xccf0281f,
+  0x7555bd4c, 0xccd91d3d, 0x754bafdc, 0xccc21455, 0x75419de7, 0xccab0d65,
+  0x7537876c, 0xcc940871,
+  0x752d6c6c, 0xcc7d0578, 0x75234ce8, 0xcc66047b, 0x751928e0, 0xcc4f057c,
+  0x750f0054, 0xcc38087b,
+  0x7504d345, 0xcc210d79, 0x74faa1b3, 0xcc0a1477, 0x74f06b9e, 0xcbf31d75,
+  0x74e63108, 0xcbdc2876,
+  0x74dbf1ef, 0xcbc53579, 0x74d1ae55, 0xcbae447f, 0x74c7663a, 0xcb97558a,
+  0x74bd199f, 0xcb80689a,
+  0x74b2c884, 0xcb697db0, 0x74a872e8, 0xcb5294ce, 0x749e18cd, 0xcb3badf3,
+  0x7493ba34, 0xcb24c921,
+  0x7489571c, 0xcb0de658, 0x747eef85, 0xcaf7059a, 0x74748371, 0xcae026e8,
+  0x746a12df, 0xcac94a42,
+  0x745f9dd1, 0xcab26fa9, 0x74552446, 0xca9b971e, 0x744aa63f, 0xca84c0a3,
+  0x744023bc, 0xca6dec37,
+  0x74359cbd, 0xca5719db, 0x742b1144, 0xca404992, 0x74208150, 0xca297b5a,
+  0x7415ece2, 0xca12af37,
+  0x740b53fb, 0xc9fbe527, 0x7400b69a, 0xc9e51d2d, 0x73f614c0, 0xc9ce5748,
+  0x73eb6e6e, 0xc9b7937a,
+  0x73e0c3a3, 0xc9a0d1c5, 0x73d61461, 0xc98a1227, 0x73cb60a8, 0xc97354a4,
+  0x73c0a878, 0xc95c993a,
+  0x73b5ebd1, 0xc945dfec, 0x73ab2ab4, 0xc92f28ba, 0x73a06522, 0xc91873a5,
+  0x73959b1b, 0xc901c0ae,
+  0x738acc9e, 0xc8eb0fd6, 0x737ff9ae, 0xc8d4611d, 0x73752249, 0xc8bdb485,
+  0x736a4671, 0xc8a70a0e,
+  0x735f6626, 0xc89061ba, 0x73548168, 0xc879bb89, 0x73499838, 0xc863177b,
+  0x733eaa96, 0xc84c7593,
+  0x7333b883, 0xc835d5d0, 0x7328c1ff, 0xc81f3834, 0x731dc70a, 0xc8089cbf,
+  0x7312c7a5, 0xc7f20373,
+  0x7307c3d0, 0xc7db6c50, 0x72fcbb8c, 0xc7c4d757, 0x72f1aed9, 0xc7ae4489,
+  0x72e69db7, 0xc797b3e7,
+  0x72db8828, 0xc7812572, 0x72d06e2b, 0xc76a992a, 0x72c54fc1, 0xc7540f11,
+  0x72ba2cea, 0xc73d8727,
+  0x72af05a7, 0xc727016d, 0x72a3d9f7, 0xc7107de4, 0x7298a9dd, 0xc6f9fc8d,
+  0x728d7557, 0xc6e37d69,
+  0x72823c67, 0xc6cd0079, 0x7276ff0d, 0xc6b685bd, 0x726bbd48, 0xc6a00d37,
+  0x7260771b, 0xc68996e7,
+  0x72552c85, 0xc67322ce, 0x7249dd86, 0xc65cb0ed, 0x723e8a20, 0xc6464144,
+  0x72333251, 0xc62fd3d6,
+  0x7227d61c, 0xc61968a2, 0x721c7580, 0xc602ffaa, 0x7211107e, 0xc5ec98ee,
+  0x7205a716, 0xc5d6346f,
+  0x71fa3949, 0xc5bfd22e, 0x71eec716, 0xc5a9722c, 0x71e35080, 0xc593146a,
+  0x71d7d585, 0xc57cb8e9,
+  0x71cc5626, 0xc5665fa9, 0x71c0d265, 0xc55008ab, 0x71b54a41, 0xc539b3f1,
+  0x71a9bdba, 0xc523617a,
+  0x719e2cd2, 0xc50d1149, 0x71929789, 0xc4f6c35d, 0x7186fdde, 0xc4e077b8,
+  0x717b5fd3, 0xc4ca2e5b,
+  0x716fbd68, 0xc4b3e746, 0x7164169d, 0xc49da27a, 0x71586b74, 0xc4875ff9,
+  0x714cbbeb, 0xc4711fc2,
+  0x71410805, 0xc45ae1d7, 0x71354fc0, 0xc444a639, 0x7129931f, 0xc42e6ce8,
+  0x711dd220, 0xc41835e6,
+  0x71120cc5, 0xc4020133, 0x7106430e, 0xc3ebced0, 0x70fa74fc, 0xc3d59ebe,
+  0x70eea28e, 0xc3bf70fd,
+  0x70e2cbc6, 0xc3a94590, 0x70d6f0a4, 0xc3931c76, 0x70cb1128, 0xc37cf5b0,
+  0x70bf2d53, 0xc366d140,
+  0x70b34525, 0xc350af26, 0x70a7589f, 0xc33a8f62, 0x709b67c0, 0xc32471f7,
+  0x708f728b, 0xc30e56e4,
+  0x708378ff, 0xc2f83e2a, 0x70777b1c, 0xc2e227cb, 0x706b78e3, 0xc2cc13c7,
+  0x705f7255, 0xc2b6021f,
+  0x70536771, 0xc29ff2d4, 0x70475839, 0xc289e5e7, 0x703b44ad, 0xc273db58,
+  0x702f2ccd, 0xc25dd329,
+  0x7023109a, 0xc247cd5a, 0x7016f014, 0xc231c9ec, 0x700acb3c, 0xc21bc8e1,
+  0x6ffea212, 0xc205ca38,
+  0x6ff27497, 0xc1efcdf3, 0x6fe642ca, 0xc1d9d412, 0x6fda0cae, 0xc1c3dc97,
+  0x6fcdd241, 0xc1ade781,
+  0x6fc19385, 0xc197f4d4, 0x6fb5507a, 0xc182048d, 0x6fa90921, 0xc16c16b0,
+  0x6f9cbd79, 0xc1562b3d,
+  0x6f906d84, 0xc1404233, 0x6f841942, 0xc12a5b95, 0x6f77c0b3, 0xc1147764,
+  0x6f6b63d8, 0xc0fe959f,
+  0x6f5f02b2, 0xc0e8b648, 0x6f529d40, 0xc0d2d960, 0x6f463383, 0xc0bcfee7,
+  0x6f39c57d, 0xc0a726df,
+  0x6f2d532c, 0xc0915148, 0x6f20dc92, 0xc07b7e23, 0x6f1461b0, 0xc065ad70,
+  0x6f07e285, 0xc04fdf32,
+  0x6efb5f12, 0xc03a1368, 0x6eeed758, 0xc0244a14, 0x6ee24b57, 0xc00e8336,
+  0x6ed5bb10, 0xbff8bece,
+  0x6ec92683, 0xbfe2fcdf, 0x6ebc8db0, 0xbfcd3d69, 0x6eaff099, 0xbfb7806c,
+  0x6ea34f3d, 0xbfa1c5ea,
+  0x6e96a99d, 0xbf8c0de3, 0x6e89ffb9, 0xbf765858, 0x6e7d5193, 0xbf60a54a,
+  0x6e709f2a, 0xbf4af4ba,
+  0x6e63e87f, 0xbf3546a8, 0x6e572d93, 0xbf1f9b16, 0x6e4a6e66, 0xbf09f205,
+  0x6e3daaf8, 0xbef44b74,
+  0x6e30e34a, 0xbedea765, 0x6e24175c, 0xbec905d9, 0x6e174730, 0xbeb366d1,
+  0x6e0a72c5, 0xbe9dca4e,
+  0x6dfd9a1c, 0xbe88304f, 0x6df0bd35, 0xbe7298d7, 0x6de3dc11, 0xbe5d03e6,
+  0x6dd6f6b1, 0xbe47717c,
+  0x6dca0d14, 0xbe31e19b, 0x6dbd1f3c, 0xbe1c5444, 0x6db02d29, 0xbe06c977,
+  0x6da336dc, 0xbdf14135,
+  0x6d963c54, 0xbddbbb7f, 0x6d893d93, 0xbdc63856, 0x6d7c3a98, 0xbdb0b7bb,
+  0x6d6f3365, 0xbd9b39ad,
+  0x6d6227fa, 0xbd85be30, 0x6d551858, 0xbd704542, 0x6d48047e, 0xbd5acee5,
+  0x6d3aec6e, 0xbd455b1a,
+  0x6d2dd027, 0xbd2fe9e2, 0x6d20afac, 0xbd1a7b3d, 0x6d138afb, 0xbd050f2c,
+  0x6d066215, 0xbcefa5b0,
+  0x6cf934fc, 0xbcda3ecb, 0x6cec03af, 0xbcc4da7b, 0x6cdece2f, 0xbcaf78c4,
+  0x6cd1947c, 0xbc9a19a5,
+  0x6cc45698, 0xbc84bd1f, 0x6cb71482, 0xbc6f6333, 0x6ca9ce3b, 0xbc5a0be2,
+  0x6c9c83c3, 0xbc44b72c,
+  0x6c8f351c, 0xbc2f6513, 0x6c81e245, 0xbc1a1598, 0x6c748b3f, 0xbc04c8ba,
+  0x6c67300b, 0xbbef7e7c,
+  0x6c59d0a9, 0xbbda36dd, 0x6c4c6d1a, 0xbbc4f1df, 0x6c3f055d, 0xbbafaf82,
+  0x6c319975, 0xbb9a6fc7,
+  0x6c242960, 0xbb8532b0, 0x6c16b521, 0xbb6ff83c, 0x6c093cb6, 0xbb5ac06d,
+  0x6bfbc021, 0xbb458b43,
+  0x6bee3f62, 0xbb3058c0, 0x6be0ba7b, 0xbb1b28e4, 0x6bd3316a, 0xbb05fbb0,
+  0x6bc5a431, 0xbaf0d125,
+  0x6bb812d1, 0xbadba943, 0x6baa7d49, 0xbac6840c, 0x6b9ce39b, 0xbab16180,
+  0x6b8f45c7, 0xba9c41a0,
+  0x6b81a3cd, 0xba87246d, 0x6b73fdae, 0xba7209e7, 0x6b66536b, 0xba5cf210,
+  0x6b58a503, 0xba47dce8,
+  0x6b4af279, 0xba32ca71, 0x6b3d3bcb, 0xba1dbaaa, 0x6b2f80fb, 0xba08ad95,
+  0x6b21c208, 0xb9f3a332,
+  0x6b13fef5, 0xb9de9b83, 0x6b0637c1, 0xb9c99688, 0x6af86c6c, 0xb9b49442,
+  0x6aea9cf8, 0xb99f94b2,
+  0x6adcc964, 0xb98a97d8, 0x6acef1b2, 0xb9759db6, 0x6ac115e2, 0xb960a64c,
+  0x6ab335f4, 0xb94bb19b,
+  0x6aa551e9, 0xb936bfa4, 0x6a9769c1, 0xb921d067, 0x6a897d7d, 0xb90ce3e6,
+  0x6a7b8d1e, 0xb8f7fa21,
+  0x6a6d98a4, 0xb8e31319, 0x6a5fa010, 0xb8ce2ecf, 0x6a51a361, 0xb8b94d44,
+  0x6a43a29a, 0xb8a46e78,
+  0x6a359db9, 0xb88f926d, 0x6a2794c1, 0xb87ab922, 0x6a1987b0, 0xb865e299,
+  0x6a0b7689, 0xb8510ed4,
+  0x69fd614a, 0xb83c3dd1, 0x69ef47f6, 0xb8276f93, 0x69e12a8c, 0xb812a41a,
+  0x69d3090e, 0xb7fddb67,
+  0x69c4e37a, 0xb7e9157a, 0x69b6b9d3, 0xb7d45255, 0x69a88c19, 0xb7bf91f8,
+  0x699a5a4c, 0xb7aad465,
+  0x698c246c, 0xb796199b, 0x697dea7b, 0xb781619c, 0x696fac78, 0xb76cac69,
+  0x69616a65, 0xb757fa01,
+  0x69532442, 0xb7434a67, 0x6944da10, 0xb72e9d9b, 0x69368bce, 0xb719f39e,
+  0x6928397e, 0xb7054c6f,
+  0x6919e320, 0xb6f0a812, 0x690b88b5, 0xb6dc0685, 0x68fd2a3d, 0xb6c767ca,
+  0x68eec7b9, 0xb6b2cbe2,
+  0x68e06129, 0xb69e32cd, 0x68d1f68f, 0xb6899c8d, 0x68c387e9, 0xb6750921,
+  0x68b5153a, 0xb660788c,
+  0x68a69e81, 0xb64beacd, 0x689823bf, 0xb6375fe5, 0x6889a4f6, 0xb622d7d6,
+  0x687b2224, 0xb60e529f,
+  0x686c9b4b, 0xb5f9d043, 0x685e106c, 0xb5e550c1, 0x684f8186, 0xb5d0d41a,
+  0x6840ee9b, 0xb5bc5a50,
+  0x683257ab, 0xb5a7e362, 0x6823bcb7, 0xb5936f53, 0x68151dbe, 0xb57efe22,
+  0x68067ac3, 0xb56a8fd0,
+  0x67f7d3c5, 0xb556245e, 0x67e928c5, 0xb541bbcd, 0x67da79c3, 0xb52d561e,
+  0x67cbc6c0, 0xb518f351,
+  0x67bd0fbd, 0xb5049368, 0x67ae54ba, 0xb4f03663, 0x679f95b7, 0xb4dbdc42,
+  0x6790d2b6, 0xb4c78507,
+  0x67820bb7, 0xb4b330b3, 0x677340ba, 0xb49edf45, 0x676471c0, 0xb48a90c0,
+  0x67559eca, 0xb4764523,
+  0x6746c7d8, 0xb461fc70, 0x6737ecea, 0xb44db6a8, 0x67290e02, 0xb43973ca,
+  0x671a2b20, 0xb42533d8,
+  0x670b4444, 0xb410f6d3, 0x66fc596f, 0xb3fcbcbb, 0x66ed6aa1, 0xb3e88592,
+  0x66de77dc, 0xb3d45157,
+  0x66cf8120, 0xb3c0200c, 0x66c0866d, 0xb3abf1b2, 0x66b187c3, 0xb397c649,
+  0x66a28524, 0xb3839dd3,
+  0x66937e91, 0xb36f784f, 0x66847408, 0xb35b55bf, 0x6675658c, 0xb3473623,
+  0x6666531d, 0xb333197c,
+  0x66573cbb, 0xb31effcc, 0x66482267, 0xb30ae912, 0x66390422, 0xb2f6d550,
+  0x6629e1ec, 0xb2e2c486,
+  0x661abbc5, 0xb2ceb6b5, 0x660b91af, 0xb2baabde, 0x65fc63a9, 0xb2a6a402,
+  0x65ed31b5, 0xb2929f21,
+  0x65ddfbd3, 0xb27e9d3c, 0x65cec204, 0xb26a9e54, 0x65bf8447, 0xb256a26a,
+  0x65b0429f, 0xb242a97e,
+  0x65a0fd0b, 0xb22eb392, 0x6591b38c, 0xb21ac0a6, 0x65826622, 0xb206d0ba,
+  0x657314cf, 0xb1f2e3d0,
+  0x6563bf92, 0xb1def9e9, 0x6554666d, 0xb1cb1304, 0x6545095f, 0xb1b72f23,
+  0x6535a86b, 0xb1a34e47,
+  0x6526438f, 0xb18f7071, 0x6516dacd, 0xb17b95a0, 0x65076e25, 0xb167bdd7,
+  0x64f7fd98, 0xb153e915,
+  0x64e88926, 0xb140175b, 0x64d910d1, 0xb12c48ab, 0x64c99498, 0xb1187d05,
+  0x64ba147d, 0xb104b46a,
+  0x64aa907f, 0xb0f0eeda, 0x649b08a0, 0xb0dd2c56, 0x648b7ce0, 0xb0c96ce0,
+  0x647bed3f, 0xb0b5b077,
+  0x646c59bf, 0xb0a1f71d, 0x645cc260, 0xb08e40d2, 0x644d2722, 0xb07a8d97,
+  0x643d8806, 0xb066dd6d,
+  0x642de50d, 0xb0533055, 0x641e3e38, 0xb03f864f, 0x640e9386, 0xb02bdf5c,
+  0x63fee4f8, 0xb0183b7d,
+  0x63ef3290, 0xb0049ab3, 0x63df7c4d, 0xaff0fcfe, 0x63cfc231, 0xafdd625f,
+  0x63c0043b, 0xafc9cad7,
+  0x63b0426d, 0xafb63667, 0x63a07cc7, 0xafa2a50f, 0x6390b34a, 0xaf8f16d1,
+  0x6380e5f6, 0xaf7b8bac,
+  0x637114cc, 0xaf6803a2, 0x63613fcd, 0xaf547eb3, 0x635166f9, 0xaf40fce1,
+  0x63418a50, 0xaf2d7e2b,
+  0x6331a9d4, 0xaf1a0293, 0x6321c585, 0xaf068a1a, 0x6311dd64, 0xaef314c0,
+  0x6301f171, 0xaedfa285,
+  0x62f201ac, 0xaecc336c, 0x62e20e17, 0xaeb8c774, 0x62d216b3, 0xaea55e9e,
+  0x62c21b7e, 0xae91f8eb,
+  0x62b21c7b, 0xae7e965b, 0x62a219aa, 0xae6b36f0, 0x6292130c, 0xae57daab,
+  0x628208a1, 0xae44818b,
+  0x6271fa69, 0xae312b92, 0x6261e866, 0xae1dd8c0, 0x6251d298, 0xae0a8916,
+  0x6241b8ff, 0xadf73c96,
+  0x62319b9d, 0xade3f33e, 0x62217a72, 0xadd0ad12, 0x6211557e, 0xadbd6a10,
+  0x62012cc2, 0xadaa2a3b,
+  0x61f1003f, 0xad96ed92, 0x61e0cff5, 0xad83b416, 0x61d09be5, 0xad707dc8,
+  0x61c06410, 0xad5d4aaa,
+  0x61b02876, 0xad4a1aba, 0x619fe918, 0xad36edfc, 0x618fa5f7, 0xad23c46e,
+  0x617f5f12, 0xad109e12,
+  0x616f146c, 0xacfd7ae8, 0x615ec603, 0xacea5af2, 0x614e73da, 0xacd73e30,
+  0x613e1df0, 0xacc424a3,
+  0x612dc447, 0xacb10e4b, 0x611d66de, 0xac9dfb29, 0x610d05b7, 0xac8aeb3e,
+  0x60fca0d2, 0xac77de8b,
+  0x60ec3830, 0xac64d510, 0x60dbcbd1, 0xac51cecf, 0x60cb5bb7, 0xac3ecbc7,
+  0x60bae7e1, 0xac2bcbfa,
+  0x60aa7050, 0xac18cf69, 0x6099f505, 0xac05d613, 0x60897601, 0xabf2dffb,
+  0x6078f344, 0xabdfed1f,
+  0x60686ccf, 0xabccfd83, 0x6057e2a2, 0xabba1125, 0x604754bf, 0xaba72807,
+  0x6036c325, 0xab944229,
+  0x60262dd6, 0xab815f8d, 0x601594d1, 0xab6e8032, 0x6004f819, 0xab5ba41a,
+  0x5ff457ad, 0xab48cb46,
+  0x5fe3b38d, 0xab35f5b5, 0x5fd30bbc, 0xab23236a, 0x5fc26038, 0xab105464,
+  0x5fb1b104, 0xaafd88a4,
+  0x5fa0fe1f, 0xaaeac02c, 0x5f90478a, 0xaad7fafb, 0x5f7f8d46, 0xaac53912,
+  0x5f6ecf53, 0xaab27a73,
+  0x5f5e0db3, 0xaa9fbf1e, 0x5f4d4865, 0xaa8d0713, 0x5f3c7f6b, 0xaa7a5253,
+  0x5f2bb2c5, 0xaa67a0e0,
+  0x5f1ae274, 0xaa54f2ba, 0x5f0a0e77, 0xaa4247e1, 0x5ef936d1, 0xaa2fa056,
+  0x5ee85b82, 0xaa1cfc1a,
+  0x5ed77c8a, 0xaa0a5b2e, 0x5ec699e9, 0xa9f7bd92, 0x5eb5b3a2, 0xa9e52347,
+  0x5ea4c9b3, 0xa9d28c4e,
+  0x5e93dc1f, 0xa9bff8a8, 0x5e82eae5, 0xa9ad6855, 0x5e71f606, 0xa99adb56,
+  0x5e60fd84, 0xa98851ac,
+  0x5e50015d, 0xa975cb57, 0x5e3f0194, 0xa9634858, 0x5e2dfe29, 0xa950c8b0,
+  0x5e1cf71c, 0xa93e4c5f,
+  0x5e0bec6e, 0xa92bd367, 0x5dfade20, 0xa9195dc7, 0x5de9cc33, 0xa906eb82,
+  0x5dd8b6a7, 0xa8f47c97,
+  0x5dc79d7c, 0xa8e21106, 0x5db680b4, 0xa8cfa8d2, 0x5da5604f, 0xa8bd43fa,
+  0x5d943c4e, 0xa8aae280,
+  0x5d8314b1, 0xa8988463, 0x5d71e979, 0xa88629a5, 0x5d60baa7, 0xa873d246,
+  0x5d4f883b, 0xa8617e48,
+  0x5d3e5237, 0xa84f2daa, 0x5d2d189a, 0xa83ce06e, 0x5d1bdb65, 0xa82a9693,
+  0x5d0a9a9a, 0xa818501c,
+  0x5cf95638, 0xa8060d08, 0x5ce80e41, 0xa7f3cd59, 0x5cd6c2b5, 0xa7e1910f,
+  0x5cc57394, 0xa7cf582a,
+  0x5cb420e0, 0xa7bd22ac, 0x5ca2ca99, 0xa7aaf094, 0x5c9170bf, 0xa798c1e5,
+  0x5c801354, 0xa786969e,
+  0x5c6eb258, 0xa7746ec0, 0x5c5d4dcc, 0xa7624a4d, 0x5c4be5b0, 0xa7502943,
+  0x5c3a7a05, 0xa73e0ba5,
+  0x5c290acc, 0xa72bf174, 0x5c179806, 0xa719daae, 0x5c0621b2, 0xa707c757,
+  0x5bf4a7d2, 0xa6f5b76d,
+  0x5be32a67, 0xa6e3aaf2, 0x5bd1a971, 0xa6d1a1e7, 0x5bc024f0, 0xa6bf9c4b,
+  0x5bae9ce7, 0xa6ad9a21,
+  0x5b9d1154, 0xa69b9b68, 0x5b8b8239, 0xa689a022, 0x5b79ef96, 0xa677a84e,
+  0x5b68596d, 0xa665b3ee,
+  0x5b56bfbd, 0xa653c303, 0x5b452288, 0xa641d58c, 0x5b3381ce, 0xa62feb8b,
+  0x5b21dd90, 0xa61e0501,
+  0x5b1035cf, 0xa60c21ee, 0x5afe8a8b, 0xa5fa4252, 0x5aecdbc5, 0xa5e8662f,
+  0x5adb297d, 0xa5d68d85,
+  0x5ac973b5, 0xa5c4b855, 0x5ab7ba6c, 0xa5b2e6a0, 0x5aa5fda5, 0xa5a11866,
+  0x5a943d5e, 0xa58f4da8,
+  0x5a82799a, 0xa57d8666, 0x5a70b258, 0xa56bc2a2, 0x5a5ee79a, 0xa55a025b,
+  0x5a4d1960, 0xa5484594,
+  0x5a3b47ab, 0xa5368c4b, 0x5a29727b, 0xa524d683, 0x5a1799d1, 0xa513243b,
+  0x5a05bdae, 0xa5017575,
+  0x59f3de12, 0xa4efca31, 0x59e1faff, 0xa4de2270, 0x59d01475, 0xa4cc7e32,
+  0x59be2a74, 0xa4badd78,
+  0x59ac3cfd, 0xa4a94043, 0x599a4c12, 0xa497a693, 0x598857b2, 0xa486106a,
+  0x59765fde, 0xa4747dc7,
+  0x59646498, 0xa462eeac, 0x595265df, 0xa4516319, 0x594063b5, 0xa43fdb10,
+  0x592e5e19, 0xa42e568f,
+  0x591c550e, 0xa41cd599, 0x590a4893, 0xa40b582e, 0x58f838a9, 0xa3f9de4e,
+  0x58e62552, 0xa3e867fa,
+  0x58d40e8c, 0xa3d6f534, 0x58c1f45b, 0xa3c585fb, 0x58afd6bd, 0xa3b41a50,
+  0x589db5b3, 0xa3a2b234,
+  0x588b9140, 0xa3914da8, 0x58796962, 0xa37fecac, 0x58673e1b, 0xa36e8f41,
+  0x58550f6c, 0xa35d3567,
+  0x5842dd54, 0xa34bdf20, 0x5830a7d6, 0xa33a8c6c, 0x581e6ef1, 0xa3293d4b,
+  0x580c32a7, 0xa317f1bf,
+  0x57f9f2f8, 0xa306a9c8, 0x57e7afe4, 0xa2f56566, 0x57d5696d, 0xa2e4249b,
+  0x57c31f92, 0xa2d2e766,
+  0x57b0d256, 0xa2c1adc9, 0x579e81b8, 0xa2b077c5, 0x578c2dba, 0xa29f4559,
+  0x5779d65b, 0xa28e1687,
+  0x57677b9d, 0xa27ceb4f, 0x57551d80, 0xa26bc3b2, 0x5742bc06, 0xa25a9fb1,
+  0x5730572e, 0xa2497f4c,
+  0x571deefa, 0xa2386284, 0x570b8369, 0xa2274959, 0x56f9147e, 0xa21633cd,
+  0x56e6a239, 0xa20521e0,
+  0x56d42c99, 0xa1f41392, 0x56c1b3a1, 0xa1e308e4, 0x56af3750, 0xa1d201d7,
+  0x569cb7a8, 0xa1c0fe6c,
+  0x568a34a9, 0xa1affea3, 0x5677ae54, 0xa19f027c, 0x566524aa, 0xa18e09fa,
+  0x565297ab, 0xa17d151b,
+  0x56400758, 0xa16c23e1, 0x562d73b2, 0xa15b364d, 0x561adcb9, 0xa14a4c5e,
+  0x5608426e, 0xa1396617,
+  0x55f5a4d2, 0xa1288376, 0x55e303e6, 0xa117a47e, 0x55d05faa, 0xa106c92f,
+  0x55bdb81f, 0xa0f5f189,
+  0x55ab0d46, 0xa0e51d8c, 0x55985f20, 0xa0d44d3b, 0x5585adad, 0xa0c38095,
+  0x5572f8ed, 0xa0b2b79b,
+  0x556040e2, 0xa0a1f24d, 0x554d858d, 0xa09130ad, 0x553ac6ee, 0xa08072ba,
+  0x55280505, 0xa06fb876,
+  0x55153fd4, 0xa05f01e1, 0x5502775c, 0xa04e4efc, 0x54efab9c, 0xa03d9fc8,
+  0x54dcdc96, 0xa02cf444,
+  0x54ca0a4b, 0xa01c4c73, 0x54b734ba, 0xa00ba853, 0x54a45be6, 0x9ffb07e7,
+  0x54917fce, 0x9fea6b2f,
+  0x547ea073, 0x9fd9d22a, 0x546bbdd7, 0x9fc93cdb, 0x5458d7f9, 0x9fb8ab41,
+  0x5445eedb, 0x9fa81d5e,
+  0x5433027d, 0x9f979331, 0x542012e1, 0x9f870cbc, 0x540d2005, 0x9f7689ff,
+  0x53fa29ed, 0x9f660afb,
+  0x53e73097, 0x9f558fb0, 0x53d43406, 0x9f45181f, 0x53c13439, 0x9f34a449,
+  0x53ae3131, 0x9f24342f,
+  0x539b2af0, 0x9f13c7d0, 0x53882175, 0x9f035f2e, 0x537514c2, 0x9ef2fa49,
+  0x536204d7, 0x9ee29922,
+  0x534ef1b5, 0x9ed23bb9, 0x533bdb5d, 0x9ec1e210, 0x5328c1d0, 0x9eb18c26,
+  0x5315a50e, 0x9ea139fd,
+  0x53028518, 0x9e90eb94, 0x52ef61ee, 0x9e80a0ee, 0x52dc3b92, 0x9e705a09,
+  0x52c91204, 0x9e6016e8,
+  0x52b5e546, 0x9e4fd78a, 0x52a2b556, 0x9e3f9bf0, 0x528f8238, 0x9e2f641b,
+  0x527c4bea, 0x9e1f300b,
+  0x5269126e, 0x9e0effc1, 0x5255d5c5, 0x9dfed33e, 0x524295f0, 0x9deeaa82,
+  0x522f52ee, 0x9dde858e,
+  0x521c0cc2, 0x9dce6463, 0x5208c36a, 0x9dbe4701, 0x51f576ea, 0x9dae2d68,
+  0x51e22740, 0x9d9e179a,
+  0x51ced46e, 0x9d8e0597, 0x51bb7e75, 0x9d7df75f, 0x51a82555, 0x9d6decf4,
+  0x5194c910, 0x9d5de656,
+  0x518169a5, 0x9d4de385, 0x516e0715, 0x9d3de482, 0x515aa162, 0x9d2de94d,
+  0x5147388c, 0x9d1df1e9,
+  0x5133cc94, 0x9d0dfe54, 0x51205d7b, 0x9cfe0e8f, 0x510ceb40, 0x9cee229c,
+  0x50f975e6, 0x9cde3a7b,
+  0x50e5fd6d, 0x9cce562c, 0x50d281d5, 0x9cbe75b0, 0x50bf031f, 0x9cae9907,
+  0x50ab814d, 0x9c9ec033,
+  0x5097fc5e, 0x9c8eeb34, 0x50847454, 0x9c7f1a0a, 0x5070e92f, 0x9c6f4cb6,
+  0x505d5af1, 0x9c5f8339,
+  0x5049c999, 0x9c4fbd93, 0x50363529, 0x9c3ffbc5, 0x50229da1, 0x9c303dcf,
+  0x500f0302, 0x9c2083b3,
+  0x4ffb654d, 0x9c10cd70, 0x4fe7c483, 0x9c011b08, 0x4fd420a4, 0x9bf16c7a,
+  0x4fc079b1, 0x9be1c1c8,
+  0x4faccfab, 0x9bd21af3, 0x4f992293, 0x9bc277fa, 0x4f857269, 0x9bb2d8de,
+  0x4f71bf2e, 0x9ba33da0,
+  0x4f5e08e3, 0x9b93a641, 0x4f4a4f89, 0x9b8412c1, 0x4f369320, 0x9b748320,
+  0x4f22d3aa, 0x9b64f760,
+  0x4f0f1126, 0x9b556f81, 0x4efb4b96, 0x9b45eb83, 0x4ee782fb, 0x9b366b68,
+  0x4ed3b755, 0x9b26ef2f,
+  0x4ebfe8a5, 0x9b1776da, 0x4eac16eb, 0x9b080268, 0x4e984229, 0x9af891db,
+  0x4e846a60, 0x9ae92533,
+  0x4e708f8f, 0x9ad9bc71, 0x4e5cb1b9, 0x9aca5795, 0x4e48d0dd, 0x9abaf6a1,
+  0x4e34ecfc, 0x9aab9993,
+  0x4e210617, 0x9a9c406e, 0x4e0d1c30, 0x9a8ceb31, 0x4df92f46, 0x9a7d99de,
+  0x4de53f5a, 0x9a6e4c74,
+  0x4dd14c6e, 0x9a5f02f5, 0x4dbd5682, 0x9a4fbd61, 0x4da95d96, 0x9a407bb9,
+  0x4d9561ac, 0x9a313dfc,
+  0x4d8162c4, 0x9a22042d, 0x4d6d60df, 0x9a12ce4b, 0x4d595bfe, 0x9a039c57,
+  0x4d455422, 0x99f46e51,
+  0x4d31494b, 0x99e5443b, 0x4d1d3b7a, 0x99d61e14, 0x4d092ab0, 0x99c6fbde,
+  0x4cf516ee, 0x99b7dd99,
+  0x4ce10034, 0x99a8c345, 0x4ccce684, 0x9999ace3, 0x4cb8c9dd, 0x998a9a74,
+  0x4ca4aa41, 0x997b8bf8,
+  0x4c9087b1, 0x996c816f, 0x4c7c622d, 0x995d7adc, 0x4c6839b7, 0x994e783d,
+  0x4c540e4e, 0x993f7993,
+  0x4c3fdff4, 0x99307ee0, 0x4c2baea9, 0x99218824, 0x4c177a6e, 0x9912955f,
+  0x4c034345, 0x9903a691,
+  0x4bef092d, 0x98f4bbbc, 0x4bdacc28, 0x98e5d4e0, 0x4bc68c36, 0x98d6f1fe,
+  0x4bb24958, 0x98c81316,
+  0x4b9e0390, 0x98b93828, 0x4b89badd, 0x98aa6136, 0x4b756f40, 0x989b8e40,
+  0x4b6120bb, 0x988cbf46,
+  0x4b4ccf4d, 0x987df449, 0x4b387af9, 0x986f2d4a, 0x4b2423be, 0x98606a49,
+  0x4b0fc99d, 0x9851ab46,
+  0x4afb6c98, 0x9842f043, 0x4ae70caf, 0x98343940, 0x4ad2a9e2, 0x9825863d,
+  0x4abe4433, 0x9816d73b,
+  0x4aa9dba2, 0x98082c3b, 0x4a957030, 0x97f9853d, 0x4a8101de, 0x97eae242,
+  0x4a6c90ad, 0x97dc4349,
+  0x4a581c9e, 0x97cda855, 0x4a43a5b0, 0x97bf1165, 0x4a2f2be6, 0x97b07e7a,
+  0x4a1aaf3f, 0x97a1ef94,
+  0x4a062fbd, 0x979364b5, 0x49f1ad61, 0x9784dddc, 0x49dd282a, 0x97765b0a,
+  0x49c8a01b, 0x9767dc41,
+  0x49b41533, 0x9759617f, 0x499f8774, 0x974aeac6, 0x498af6df, 0x973c7817,
+  0x49766373, 0x972e0971,
+  0x4961cd33, 0x971f9ed7, 0x494d341e, 0x97113847, 0x49389836, 0x9702d5c3,
+  0x4923f97b, 0x96f4774b,
+  0x490f57ee, 0x96e61ce0, 0x48fab391, 0x96d7c682, 0x48e60c62, 0x96c97432,
+  0x48d16265, 0x96bb25f0,
+  0x48bcb599, 0x96acdbbe, 0x48a805ff, 0x969e959b, 0x48935397, 0x96905388,
+  0x487e9e64, 0x96821585,
+  0x4869e665, 0x9673db94, 0x48552b9b, 0x9665a5b4, 0x48406e08, 0x965773e7,
+  0x482badab, 0x9649462d,
+  0x4816ea86, 0x963b1c86, 0x48022499, 0x962cf6f2, 0x47ed5be6, 0x961ed574,
+  0x47d8906d, 0x9610b80a,
+  0x47c3c22f, 0x96029eb6, 0x47aef12c, 0x95f48977, 0x479a1d67, 0x95e67850,
+  0x478546de, 0x95d86b3f,
+  0x47706d93, 0x95ca6247, 0x475b9188, 0x95bc5d66, 0x4746b2bc, 0x95ae5c9f,
+  0x4731d131, 0x95a05ff0,
+  0x471cece7, 0x9592675c, 0x470805df, 0x958472e2, 0x46f31c1a, 0x95768283,
+  0x46de2f99, 0x9568963f,
+  0x46c9405c, 0x955aae17, 0x46b44e65, 0x954cca0c, 0x469f59b4, 0x953eea1e,
+  0x468a624a, 0x95310e4e,
+  0x46756828, 0x9523369c, 0x46606b4e, 0x95156308, 0x464b6bbe, 0x95079394,
+  0x46366978, 0x94f9c83f,
+  0x4621647d, 0x94ec010b, 0x460c5cce, 0x94de3df8, 0x45f7526b, 0x94d07f05,
+  0x45e24556, 0x94c2c435,
+  0x45cd358f, 0x94b50d87, 0x45b82318, 0x94a75afd, 0x45a30df0, 0x9499ac95,
+  0x458df619, 0x948c0252,
+  0x4578db93, 0x947e5c33, 0x4563be60, 0x9470ba39, 0x454e9e80, 0x94631c65,
+  0x45397bf4, 0x945582b7,
+  0x452456bd, 0x9447ed2f, 0x450f2edb, 0x943a5bcf, 0x44fa0450, 0x942cce96,
+  0x44e4d71c, 0x941f4585,
+  0x44cfa740, 0x9411c09e, 0x44ba74bd, 0x94043fdf, 0x44a53f93, 0x93f6c34a,
+  0x449007c4, 0x93e94adf,
+  0x447acd50, 0x93dbd6a0, 0x44659039, 0x93ce668b, 0x4450507e, 0x93c0faa3,
+  0x443b0e21, 0x93b392e6,
+  0x4425c923, 0x93a62f57, 0x44108184, 0x9398cff5, 0x43fb3746, 0x938b74c1,
+  0x43e5ea68, 0x937e1dbb,
+  0x43d09aed, 0x9370cae4, 0x43bb48d4, 0x93637c3d, 0x43a5f41e, 0x935631c5,
+  0x43909ccd, 0x9348eb7e,
+  0x437b42e1, 0x933ba968, 0x4365e65b, 0x932e6b84, 0x4350873c, 0x932131d1,
+  0x433b2585, 0x9313fc51,
+  0x4325c135, 0x9306cb04, 0x43105a50, 0x92f99deb, 0x42faf0d4, 0x92ec7505,
+  0x42e584c3, 0x92df5054,
+  0x42d0161e, 0x92d22fd9, 0x42baa4e6, 0x92c51392, 0x42a5311b, 0x92b7fb82,
+  0x428fbabe, 0x92aae7a8,
+  0x427a41d0, 0x929dd806, 0x4264c653, 0x9290cc9b, 0x424f4845, 0x9283c568,
+  0x4239c7aa, 0x9276c26d,
+  0x42244481, 0x9269c3ac, 0x420ebecb, 0x925cc924, 0x41f93689, 0x924fd2d7,
+  0x41e3abbc, 0x9242e0c4,
+  0x41ce1e65, 0x9235f2ec, 0x41b88e84, 0x9229094f, 0x41a2fc1a, 0x921c23ef,
+  0x418d6729, 0x920f42cb,
+  0x4177cfb1, 0x920265e4, 0x416235b2, 0x91f58d3b, 0x414c992f, 0x91e8b8d0,
+  0x4136fa27, 0x91dbe8a4,
+  0x4121589b, 0x91cf1cb6, 0x410bb48c, 0x91c25508, 0x40f60dfb, 0x91b5919a,
+  0x40e064ea, 0x91a8d26d,
+  0x40cab958, 0x919c1781, 0x40b50b46, 0x918f60d6, 0x409f5ab6, 0x9182ae6d,
+  0x4089a7a8, 0x91760047,
+  0x4073f21d, 0x91695663, 0x405e3a16, 0x915cb0c3, 0x40487f94, 0x91500f67,
+  0x4032c297, 0x91437250,
+  0x401d0321, 0x9136d97d, 0x40074132, 0x912a44f0, 0x3ff17cca, 0x911db4a9,
+  0x3fdbb5ec, 0x911128a8,
+  0x3fc5ec98, 0x9104a0ee, 0x3fb020ce, 0x90f81d7b, 0x3f9a5290, 0x90eb9e50,
+  0x3f8481dd, 0x90df236e,
+  0x3f6eaeb8, 0x90d2acd4, 0x3f58d921, 0x90c63a83, 0x3f430119, 0x90b9cc7d,
+  0x3f2d26a0, 0x90ad62c0,
+  0x3f1749b8, 0x90a0fd4e, 0x3f016a61, 0x90949c28, 0x3eeb889c, 0x90883f4d,
+  0x3ed5a46b, 0x907be6be,
+  0x3ebfbdcd, 0x906f927c, 0x3ea9d4c3, 0x90634287, 0x3e93e950, 0x9056f6df,
+  0x3e7dfb73, 0x904aaf86,
+  0x3e680b2c, 0x903e6c7b, 0x3e52187f, 0x90322dbf, 0x3e3c2369, 0x9025f352,
+  0x3e262bee, 0x9019bd36,
+  0x3e10320d, 0x900d8b69, 0x3dfa35c8, 0x90015dee, 0x3de4371f, 0x8ff534c4,
+  0x3dce3614, 0x8fe90fec,
+  0x3db832a6, 0x8fdcef66, 0x3da22cd7, 0x8fd0d333, 0x3d8c24a8, 0x8fc4bb53,
+  0x3d761a19, 0x8fb8a7c7,
+  0x3d600d2c, 0x8fac988f, 0x3d49fde1, 0x8fa08dab, 0x3d33ec39, 0x8f94871d,
+  0x3d1dd835, 0x8f8884e4,
+  0x3d07c1d6, 0x8f7c8701, 0x3cf1a91c, 0x8f708d75, 0x3cdb8e09, 0x8f649840,
+  0x3cc5709e, 0x8f58a761,
+  0x3caf50da, 0x8f4cbadb, 0x3c992ec0, 0x8f40d2ad, 0x3c830a50, 0x8f34eed8,
+  0x3c6ce38a, 0x8f290f5c,
+  0x3c56ba70, 0x8f1d343a, 0x3c408f03, 0x8f115d72, 0x3c2a6142, 0x8f058b04,
+  0x3c143130, 0x8ef9bcf2,
+  0x3bfdfecd, 0x8eedf33b, 0x3be7ca1a, 0x8ee22de0, 0x3bd19318, 0x8ed66ce1,
+  0x3bbb59c7, 0x8ecab040,
+  0x3ba51e29, 0x8ebef7fb, 0x3b8ee03e, 0x8eb34415, 0x3b78a007, 0x8ea7948c,
+  0x3b625d86, 0x8e9be963,
+  0x3b4c18ba, 0x8e904298, 0x3b35d1a5, 0x8e84a02d, 0x3b1f8848, 0x8e790222,
+  0x3b093ca3, 0x8e6d6877,
+  0x3af2eeb7, 0x8e61d32e, 0x3adc9e86, 0x8e564246, 0x3ac64c0f, 0x8e4ab5bf,
+  0x3aaff755, 0x8e3f2d9b,
+  0x3a99a057, 0x8e33a9da, 0x3a834717, 0x8e282a7b, 0x3a6ceb96, 0x8e1caf80,
+  0x3a568dd4, 0x8e1138ea,
+  0x3a402dd2, 0x8e05c6b7, 0x3a29cb91, 0x8dfa58ea, 0x3a136712, 0x8deeef82,
+  0x39fd0056, 0x8de38a80,
+  0x39e6975e, 0x8dd829e4, 0x39d02c2a, 0x8dcccdaf, 0x39b9bebc, 0x8dc175e0,
+  0x39a34f13, 0x8db6227a,
+  0x398cdd32, 0x8daad37b, 0x39766919, 0x8d9f88e5, 0x395ff2c9, 0x8d9442b8,
+  0x39497a43, 0x8d8900f3,
+  0x3932ff87, 0x8d7dc399, 0x391c8297, 0x8d728aa9, 0x39060373, 0x8d675623,
+  0x38ef821c, 0x8d5c2609,
+  0x38d8fe93, 0x8d50fa59, 0x38c278d9, 0x8d45d316, 0x38abf0ef, 0x8d3ab03f,
+  0x389566d6, 0x8d2f91d5,
+  0x387eda8e, 0x8d2477d8, 0x38684c19, 0x8d196249, 0x3851bb77, 0x8d0e5127,
+  0x383b28a9, 0x8d034474,
+  0x382493b0, 0x8cf83c30, 0x380dfc8d, 0x8ced385b, 0x37f76341, 0x8ce238f6,
+  0x37e0c7cc, 0x8cd73e01,
+  0x37ca2a30, 0x8ccc477d, 0x37b38a6d, 0x8cc1556a, 0x379ce885, 0x8cb667c8,
+  0x37864477, 0x8cab7e98,
+  0x376f9e46, 0x8ca099da, 0x3758f5f2, 0x8c95b98f, 0x37424b7b, 0x8c8addb7,
+  0x372b9ee3, 0x8c800652,
+  0x3714f02a, 0x8c753362, 0x36fe3f52, 0x8c6a64e5, 0x36e78c5b, 0x8c5f9ade,
+  0x36d0d746, 0x8c54d54c,
+  0x36ba2014, 0x8c4a142f, 0x36a366c6, 0x8c3f5788, 0x368cab5c, 0x8c349f58,
+  0x3675edd9, 0x8c29eb9f,
+  0x365f2e3b, 0x8c1f3c5d, 0x36486c86, 0x8c149192, 0x3631a8b8, 0x8c09eb40,
+  0x361ae2d3, 0x8bff4966,
+  0x36041ad9, 0x8bf4ac05, 0x35ed50c9, 0x8bea131e, 0x35d684a6, 0x8bdf7eb0,
+  0x35bfb66e, 0x8bd4eebc,
+  0x35a8e625, 0x8bca6343, 0x359213c9, 0x8bbfdc44, 0x357b3f5d, 0x8bb559c1,
+  0x356468e2, 0x8baadbba,
+  0x354d9057, 0x8ba0622f, 0x3536b5be, 0x8b95ed21, 0x351fd918, 0x8b8b7c8f,
+  0x3508fa66, 0x8b81107b,
+  0x34f219a8, 0x8b76a8e4, 0x34db36df, 0x8b6c45cc, 0x34c4520d, 0x8b61e733,
+  0x34ad6b32, 0x8b578d18,
+  0x34968250, 0x8b4d377c, 0x347f9766, 0x8b42e661, 0x3468aa76, 0x8b3899c6,
+  0x3451bb81, 0x8b2e51ab,
+  0x343aca87, 0x8b240e11, 0x3423d78a, 0x8b19cef8, 0x340ce28b, 0x8b0f9462,
+  0x33f5eb89, 0x8b055e4d,
+  0x33def287, 0x8afb2cbb, 0x33c7f785, 0x8af0ffac, 0x33b0fa84, 0x8ae6d720,
+  0x3399fb85, 0x8adcb318,
+  0x3382fa88, 0x8ad29394, 0x336bf78f, 0x8ac87894, 0x3354f29b, 0x8abe6219,
+  0x333debab, 0x8ab45024,
+  0x3326e2c3, 0x8aaa42b4, 0x330fd7e1, 0x8aa039cb, 0x32f8cb07, 0x8a963567,
+  0x32e1bc36, 0x8a8c358b,
+  0x32caab6f, 0x8a823a36, 0x32b398b3, 0x8a784368, 0x329c8402, 0x8a6e5123,
+  0x32856d5e, 0x8a646365,
+  0x326e54c7, 0x8a5a7a31, 0x32573a3f, 0x8a509585, 0x32401dc6, 0x8a46b564,
+  0x3228ff5c, 0x8a3cd9cc,
+  0x3211df04, 0x8a3302be, 0x31fabcbd, 0x8a29303b, 0x31e39889, 0x8a1f6243,
+  0x31cc7269, 0x8a1598d6,
+  0x31b54a5e, 0x8a0bd3f5, 0x319e2067, 0x8a0213a0, 0x3186f487, 0x89f857d8,
+  0x316fc6be, 0x89eea09d,
+  0x3158970e, 0x89e4edef, 0x31416576, 0x89db3fcf, 0x312a31f8, 0x89d1963c,
+  0x3112fc95, 0x89c7f138,
+  0x30fbc54d, 0x89be50c3, 0x30e48c22, 0x89b4b4dd, 0x30cd5115, 0x89ab1d87,
+  0x30b61426, 0x89a18ac0,
+  0x309ed556, 0x8997fc8a, 0x308794a6, 0x898e72e4, 0x30705217, 0x8984edcf,
+  0x30590dab, 0x897b6d4c,
+  0x3041c761, 0x8971f15a, 0x302a7f3a, 0x896879fb, 0x30133539, 0x895f072e,
+  0x2ffbe95d, 0x895598f3,
+  0x2fe49ba7, 0x894c2f4c, 0x2fcd4c19, 0x8942ca39, 0x2fb5fab2, 0x893969b9,
+  0x2f9ea775, 0x89300dce,
+  0x2f875262, 0x8926b677, 0x2f6ffb7a, 0x891d63b5, 0x2f58a2be, 0x89141589,
+  0x2f41482e, 0x890acbf2,
+  0x2f29ebcc, 0x890186f2, 0x2f128d99, 0x88f84687, 0x2efb2d95, 0x88ef0ab4,
+  0x2ee3cbc1, 0x88e5d378,
+  0x2ecc681e, 0x88dca0d3, 0x2eb502ae, 0x88d372c6, 0x2e9d9b70, 0x88ca4951,
+  0x2e863267, 0x88c12475,
+  0x2e6ec792, 0x88b80432, 0x2e575af3, 0x88aee888, 0x2e3fec8b, 0x88a5d177,
+  0x2e287c5a, 0x889cbf01,
+  0x2e110a62, 0x8893b125, 0x2df996a3, 0x888aa7e3, 0x2de2211e, 0x8881a33d,
+  0x2dcaa9d5, 0x8878a332,
+  0x2db330c7, 0x886fa7c2, 0x2d9bb5f6, 0x8866b0ef, 0x2d843964, 0x885dbeb8,
+  0x2d6cbb10, 0x8854d11e,
+  0x2d553afc, 0x884be821, 0x2d3db928, 0x884303c1, 0x2d263596, 0x883a23ff,
+  0x2d0eb046, 0x883148db,
+  0x2cf72939, 0x88287256, 0x2cdfa071, 0x881fa06f, 0x2cc815ee, 0x8816d327,
+  0x2cb089b1, 0x880e0a7f,
+  0x2c98fbba, 0x88054677, 0x2c816c0c, 0x87fc870f, 0x2c69daa6, 0x87f3cc48,
+  0x2c52478a, 0x87eb1621,
+  0x2c3ab2b9, 0x87e2649b, 0x2c231c33, 0x87d9b7b7, 0x2c0b83fa, 0x87d10f75,
+  0x2bf3ea0d, 0x87c86bd5,
+  0x2bdc4e6f, 0x87bfccd7, 0x2bc4b120, 0x87b7327d, 0x2bad1221, 0x87ae9cc5,
+  0x2b957173, 0x87a60bb1,
+  0x2b7dcf17, 0x879d7f41, 0x2b662b0e, 0x8794f774, 0x2b4e8558, 0x878c744d,
+  0x2b36ddf7, 0x8783f5ca,
+  0x2b1f34eb, 0x877b7bec, 0x2b078a36, 0x877306b4, 0x2aefddd8, 0x876a9621,
+  0x2ad82fd2, 0x87622a35,
+  0x2ac08026, 0x8759c2ef, 0x2aa8ced3, 0x87516050, 0x2a911bdc, 0x87490258,
+  0x2a796740, 0x8740a907,
+  0x2a61b101, 0x8738545e, 0x2a49f920, 0x8730045d, 0x2a323f9e, 0x8727b905,
+  0x2a1a847b, 0x871f7255,
+  0x2a02c7b8, 0x8717304e, 0x29eb0957, 0x870ef2f1, 0x29d34958, 0x8706ba3d,
+  0x29bb87bc, 0x86fe8633,
+  0x29a3c485, 0x86f656d3, 0x298bffb2, 0x86ee2c1e, 0x29743946, 0x86e60614,
+  0x295c7140, 0x86dde4b5,
+  0x2944a7a2, 0x86d5c802, 0x292cdc6d, 0x86cdaffa, 0x29150fa1, 0x86c59c9f,
+  0x28fd4140, 0x86bd8df0,
+  0x28e5714b, 0x86b583ee, 0x28cd9fc1, 0x86ad7e99, 0x28b5cca5, 0x86a57df2,
+  0x289df7f8, 0x869d81f8,
+  0x288621b9, 0x86958aac, 0x286e49ea, 0x868d980e, 0x2856708d, 0x8685aa20,
+  0x283e95a1, 0x867dc0e0,
+  0x2826b928, 0x8675dc4f, 0x280edb23, 0x866dfc6e, 0x27f6fb92, 0x8666213c,
+  0x27df1a77, 0x865e4abb,
+  0x27c737d3, 0x865678eb, 0x27af53a6, 0x864eabcb, 0x27976df1, 0x8646e35c,
+  0x277f86b5, 0x863f1f9e,
+  0x27679df4, 0x86376092, 0x274fb3ae, 0x862fa638, 0x2737c7e3, 0x8627f091,
+  0x271fda96, 0x86203f9c,
+  0x2707ebc7, 0x86189359, 0x26effb76, 0x8610ebca, 0x26d809a5, 0x860948ef,
+  0x26c01655, 0x8601aac7,
+  0x26a82186, 0x85fa1153, 0x26902b39, 0x85f27c93, 0x26783370, 0x85eaec88,
+  0x26603a2c, 0x85e36132,
+  0x26483f6c, 0x85dbda91, 0x26304333, 0x85d458a6, 0x26184581, 0x85ccdb70,
+  0x26004657, 0x85c562f1,
+  0x25e845b6, 0x85bdef28, 0x25d0439f, 0x85b68015, 0x25b84012, 0x85af15b9,
+  0x25a03b11, 0x85a7b015,
+  0x2588349d, 0x85a04f28, 0x25702cb7, 0x8598f2f3, 0x2558235f, 0x85919b76,
+  0x25401896, 0x858a48b1,
+  0x25280c5e, 0x8582faa5, 0x250ffeb7, 0x857bb152, 0x24f7efa2, 0x85746cb8,
+  0x24dfdf20, 0x856d2cd7,
+  0x24c7cd33, 0x8565f1b0, 0x24afb9da, 0x855ebb44, 0x2497a517, 0x85578991,
+  0x247f8eec, 0x85505c99,
+  0x24677758, 0x8549345c, 0x244f5e5c, 0x854210db, 0x243743fa, 0x853af214,
+  0x241f2833, 0x8533d809,
+  0x24070b08, 0x852cc2bb, 0x23eeec78, 0x8525b228, 0x23d6cc87, 0x851ea652,
+  0x23beab33, 0x85179f39,
+  0x23a6887f, 0x85109cdd, 0x238e646a, 0x85099f3e, 0x23763ef7, 0x8502a65c,
+  0x235e1826, 0x84fbb239,
+  0x2345eff8, 0x84f4c2d4, 0x232dc66d, 0x84edd82d, 0x23159b88, 0x84e6f244,
+  0x22fd6f48, 0x84e0111b,
+  0x22e541af, 0x84d934b1, 0x22cd12bd, 0x84d25d06, 0x22b4e274, 0x84cb8a1b,
+  0x229cb0d5, 0x84c4bbf0,
+  0x22847de0, 0x84bdf286, 0x226c4996, 0x84b72ddb, 0x225413f8, 0x84b06df2,
+  0x223bdd08, 0x84a9b2ca,
+  0x2223a4c5, 0x84a2fc62, 0x220b6b32, 0x849c4abd, 0x21f3304f, 0x84959dd9,
+  0x21daf41d, 0x848ef5b7,
+  0x21c2b69c, 0x84885258, 0x21aa77cf, 0x8481b3bb, 0x219237b5, 0x847b19e1,
+  0x2179f64f, 0x847484ca,
+  0x2161b3a0, 0x846df477, 0x21496fa7, 0x846768e7, 0x21312a65, 0x8460e21a,
+  0x2118e3dc, 0x845a6012,
+  0x21009c0c, 0x8453e2cf, 0x20e852f6, 0x844d6a50, 0x20d0089c, 0x8446f695,
+  0x20b7bcfe, 0x844087a0,
+  0x209f701c, 0x843a1d70, 0x208721f9, 0x8433b806, 0x206ed295, 0x842d5762,
+  0x205681f1, 0x8426fb84,
+  0x203e300d, 0x8420a46c, 0x2025dcec, 0x841a521a, 0x200d888d, 0x84140490,
+  0x1ff532f2, 0x840dbbcc,
+  0x1fdcdc1b, 0x840777d0, 0x1fc4840a, 0x8401389b, 0x1fac2abf, 0x83fafe2e,
+  0x1f93d03c, 0x83f4c889,
+  0x1f7b7481, 0x83ee97ad, 0x1f63178f, 0x83e86b99, 0x1f4ab968, 0x83e2444d,
+  0x1f325a0b, 0x83dc21cb,
+  0x1f19f97b, 0x83d60412, 0x1f0197b8, 0x83cfeb22, 0x1ee934c3, 0x83c9d6fc,
+  0x1ed0d09d, 0x83c3c7a0,
+  0x1eb86b46, 0x83bdbd0e, 0x1ea004c1, 0x83b7b746, 0x1e879d0d, 0x83b1b649,
+  0x1e6f342c, 0x83abba17,
+  0x1e56ca1e, 0x83a5c2b0, 0x1e3e5ee5, 0x839fd014, 0x1e25f282, 0x8399e244,
+  0x1e0d84f5, 0x8393f940,
+  0x1df5163f, 0x838e1507, 0x1ddca662, 0x8388359b, 0x1dc4355e, 0x83825afb,
+  0x1dabc334, 0x837c8528,
+  0x1d934fe5, 0x8376b422, 0x1d7adb73, 0x8370e7e9, 0x1d6265dd, 0x836b207d,
+  0x1d49ef26, 0x83655ddf,
+  0x1d31774d, 0x835fa00f, 0x1d18fe54, 0x8359e70d, 0x1d00843d, 0x835432d8,
+  0x1ce80906, 0x834e8373,
+  0x1ccf8cb3, 0x8348d8dc, 0x1cb70f43, 0x83433314, 0x1c9e90b8, 0x833d921b,
+  0x1c861113, 0x8337f5f1,
+  0x1c6d9053, 0x83325e97, 0x1c550e7c, 0x832ccc0d, 0x1c3c8b8c, 0x83273e52,
+  0x1c240786, 0x8321b568,
+  0x1c0b826a, 0x831c314e, 0x1bf2fc3a, 0x8316b205, 0x1bda74f6, 0x8311378d,
+  0x1bc1ec9e, 0x830bc1e6,
+  0x1ba96335, 0x83065110, 0x1b90d8bb, 0x8300e50b, 0x1b784d30, 0x82fb7dd8,
+  0x1b5fc097, 0x82f61b77,
+  0x1b4732ef, 0x82f0bde8, 0x1b2ea43a, 0x82eb652b, 0x1b161479, 0x82e61141,
+  0x1afd83ad, 0x82e0c22a,
+  0x1ae4f1d6, 0x82db77e5, 0x1acc5ef6, 0x82d63274, 0x1ab3cb0d, 0x82d0f1d5,
+  0x1a9b361d, 0x82cbb60b,
+  0x1a82a026, 0x82c67f14, 0x1a6a0929, 0x82c14cf1, 0x1a517128, 0x82bc1fa2,
+  0x1a38d823, 0x82b6f727,
+  0x1a203e1b, 0x82b1d381, 0x1a07a311, 0x82acb4b0, 0x19ef0707, 0x82a79ab3,
+  0x19d669fc, 0x82a2858c,
+  0x19bdcbf3, 0x829d753a, 0x19a52ceb, 0x829869be, 0x198c8ce7, 0x82936317,
+  0x1973ebe6, 0x828e6146,
+  0x195b49ea, 0x8289644b, 0x1942a6f3, 0x82846c26, 0x192a0304, 0x827f78d8,
+  0x19115e1c, 0x827a8a61,
+  0x18f8b83c, 0x8275a0c0, 0x18e01167, 0x8270bbf7, 0x18c7699b, 0x826bdc04,
+  0x18aec0db, 0x826700e9,
+  0x18961728, 0x82622aa6, 0x187d6c82, 0x825d593a, 0x1864c0ea, 0x82588ca7,
+  0x184c1461, 0x8253c4eb,
+  0x183366e9, 0x824f0208, 0x181ab881, 0x824a43fe, 0x1802092c, 0x82458acc,
+  0x17e958ea, 0x8240d673,
+  0x17d0a7bc, 0x823c26f3, 0x17b7f5a3, 0x82377c4c, 0x179f429f, 0x8232d67f,
+  0x17868eb3, 0x822e358b,
+  0x176dd9de, 0x82299971, 0x17552422, 0x82250232, 0x173c6d80, 0x82206fcc,
+  0x1723b5f9, 0x821be240,
+  0x170afd8d, 0x82175990, 0x16f2443e, 0x8212d5b9, 0x16d98a0c, 0x820e56be,
+  0x16c0cef9, 0x8209dc9e,
+  0x16a81305, 0x82056758, 0x168f5632, 0x8200f6ef, 0x1676987f, 0x81fc8b60,
+  0x165dd9f0, 0x81f824ae,
+  0x16451a83, 0x81f3c2d7, 0x162c5a3b, 0x81ef65dc, 0x16139918, 0x81eb0dbe,
+  0x15fad71b, 0x81e6ba7c,
+  0x15e21445, 0x81e26c16, 0x15c95097, 0x81de228d, 0x15b08c12, 0x81d9dde1,
+  0x1597c6b7, 0x81d59e13,
+  0x157f0086, 0x81d16321, 0x15663982, 0x81cd2d0c, 0x154d71aa, 0x81c8fbd6,
+  0x1534a901, 0x81c4cf7d,
+  0x151bdf86, 0x81c0a801, 0x1503153a, 0x81bc8564, 0x14ea4a1f, 0x81b867a5,
+  0x14d17e36, 0x81b44ec4,
+  0x14b8b17f, 0x81b03ac2, 0x149fe3fc, 0x81ac2b9e, 0x148715ae, 0x81a82159,
+  0x146e4694, 0x81a41bf4,
+  0x145576b1, 0x81a01b6d, 0x143ca605, 0x819c1fc5, 0x1423d492, 0x819828fd,
+  0x140b0258, 0x81943715,
+  0x13f22f58, 0x81904a0c, 0x13d95b93, 0x818c61e3, 0x13c0870a, 0x81887e9a,
+  0x13a7b1bf, 0x8184a032,
+  0x138edbb1, 0x8180c6a9, 0x137604e2, 0x817cf201, 0x135d2d53, 0x8179223a,
+  0x13445505, 0x81755754,
+  0x132b7bf9, 0x8171914e, 0x1312a230, 0x816dd02a, 0x12f9c7aa, 0x816a13e6,
+  0x12e0ec6a, 0x81665c84,
+  0x12c8106f, 0x8162aa04, 0x12af33ba, 0x815efc65, 0x1296564d, 0x815b53a8,
+  0x127d7829, 0x8157afcd,
+  0x1264994e, 0x815410d4, 0x124bb9be, 0x815076bd, 0x1232d979, 0x814ce188,
+  0x1219f880, 0x81495136,
+  0x120116d5, 0x8145c5c7, 0x11e83478, 0x81423f3a, 0x11cf516a, 0x813ebd90,
+  0x11b66dad, 0x813b40ca,
+  0x119d8941, 0x8137c8e6, 0x1184a427, 0x813455e6, 0x116bbe60, 0x8130e7c9,
+  0x1152d7ed, 0x812d7e8f,
+  0x1139f0cf, 0x812a1a3a, 0x11210907, 0x8126bac8, 0x11082096, 0x8123603a,
+  0x10ef377d, 0x81200a90,
+  0x10d64dbd, 0x811cb9ca, 0x10bd6356, 0x81196de9, 0x10a4784b, 0x811626ec,
+  0x108b8c9b, 0x8112e4d4,
+  0x1072a048, 0x810fa7a0, 0x1059b352, 0x810c6f52, 0x1040c5bb, 0x81093be8,
+  0x1027d784, 0x81060d63,
+  0x100ee8ad, 0x8102e3c4, 0xff5f938, 0x80ffbf0a, 0xfdd0926, 0x80fc9f35,
+  0xfc41876, 0x80f98446,
+  0xfab272b, 0x80f66e3c, 0xf923546, 0x80f35d19, 0xf7942c7, 0x80f050db,
+  0xf604faf, 0x80ed4984,
+  0xf475bff, 0x80ea4712, 0xf2e67b8, 0x80e74987, 0xf1572dc, 0x80e450e2,
+  0xefc7d6b, 0x80e15d24,
+  0xee38766, 0x80de6e4c, 0xeca90ce, 0x80db845b, 0xeb199a4, 0x80d89f51,
+  0xe98a1e9, 0x80d5bf2e,
+  0xe7fa99e, 0x80d2e3f2, 0xe66b0c3, 0x80d00d9d, 0xe4db75b, 0x80cd3c2f,
+  0xe34bd66, 0x80ca6fa9,
+  0xe1bc2e4, 0x80c7a80a, 0xe02c7d7, 0x80c4e553, 0xde9cc40, 0x80c22784,
+  0xdd0d01f, 0x80bf6e9c,
+  0xdb7d376, 0x80bcba9d, 0xd9ed646, 0x80ba0b85, 0xd85d88f, 0x80b76156,
+  0xd6cda53, 0x80b4bc0e,
+  0xd53db92, 0x80b21baf, 0xd3adc4e, 0x80af8039, 0xd21dc87, 0x80ace9ab,
+  0xd08dc3f, 0x80aa5806,
+  0xcefdb76, 0x80a7cb49, 0xcd6da2d, 0x80a54376, 0xcbdd865, 0x80a2c08b,
+  0xca4d620, 0x80a04289,
+  0xc8bd35e, 0x809dc971, 0xc72d020, 0x809b5541, 0xc59cc68, 0x8098e5fb,
+  0xc40c835, 0x80967b9f,
+  0xc27c389, 0x8094162c, 0xc0ebe66, 0x8091b5a2, 0xbf5b8cb, 0x808f5a02,
+  0xbdcb2bb, 0x808d034c,
+  0xbc3ac35, 0x808ab180, 0xbaaa53b, 0x8088649e, 0xb919dcf, 0x80861ca6,
+  0xb7895f0, 0x8083d998,
+  0xb5f8d9f, 0x80819b74, 0xb4684df, 0x807f623b, 0xb2d7baf, 0x807d2dec,
+  0xb147211, 0x807afe87,
+  0xafb6805, 0x8078d40d, 0xae25d8d, 0x8076ae7e, 0xac952aa, 0x80748dd9,
+  0xab0475c, 0x8072721f,
+  0xa973ba5, 0x80705b50, 0xa7e2f85, 0x806e496c, 0xa6522fe, 0x806c3c74,
+  0xa4c1610, 0x806a3466,
+  0xa3308bd, 0x80683143, 0xa19fb04, 0x8066330c, 0xa00ece8, 0x806439c0,
+  0x9e7de6a, 0x80624560,
+  0x9cecf89, 0x806055eb, 0x9b5c048, 0x805e6b62, 0x99cb0a7, 0x805c85c4,
+  0x983a0a7, 0x805aa512,
+  0x96a9049, 0x8058c94c, 0x9517f8f, 0x8056f272, 0x9386e78, 0x80552084,
+  0x91f5d06, 0x80535381,
+  0x9064b3a, 0x80518b6b, 0x8ed3916, 0x804fc841, 0x8d42699, 0x804e0a04,
+  0x8bb13c5, 0x804c50b2,
+  0x8a2009a, 0x804a9c4d, 0x888ed1b, 0x8048ecd5, 0x86fd947, 0x80474248,
+  0x856c520, 0x80459ca9,
+  0x83db0a7, 0x8043fbf6, 0x8249bdd, 0x80426030, 0x80b86c2, 0x8040c956,
+  0x7f27157, 0x803f376a,
+  0x7d95b9e, 0x803daa6a, 0x7c04598, 0x803c2257, 0x7a72f45, 0x803a9f31,
+  0x78e18a7, 0x803920f8,
+  0x77501be, 0x8037a7ac, 0x75bea8c, 0x8036334e, 0x742d311, 0x8034c3dd,
+  0x729bb4e, 0x80335959,
+  0x710a345, 0x8031f3c2, 0x6f78af6, 0x80309318, 0x6de7262, 0x802f375d,
+  0x6c5598a, 0x802de08e,
+  0x6ac406f, 0x802c8ead, 0x6932713, 0x802b41ba, 0x67a0d76, 0x8029f9b4,
+  0x660f398, 0x8028b69c,
+  0x647d97c, 0x80277872, 0x62ebf22, 0x80263f36, 0x615a48b, 0x80250ae7,
+  0x5fc89b8, 0x8023db86,
+  0x5e36ea9, 0x8022b114, 0x5ca5361, 0x80218b8f, 0x5b137df, 0x80206af8,
+  0x5981c26, 0x801f4f4f,
+  0x57f0035, 0x801e3895, 0x565e40d, 0x801d26c8, 0x54cc7b1, 0x801c19ea,
+  0x533ab20, 0x801b11fa,
+  0x51a8e5c, 0x801a0ef8, 0x5017165, 0x801910e4, 0x4e8543e, 0x801817bf,
+  0x4cf36e5, 0x80172388,
+  0x4b6195d, 0x80163440, 0x49cfba7, 0x801549e6, 0x483ddc3, 0x8014647b,
+  0x46abfb3, 0x801383fe,
+  0x451a177, 0x8012a86f, 0x4388310, 0x8011d1d0, 0x41f6480, 0x8011001f,
+  0x40645c7, 0x8010335c,
+  0x3ed26e6, 0x800f6b88, 0x3d407df, 0x800ea8a3, 0x3bae8b2, 0x800deaad,
+  0x3a1c960, 0x800d31a5,
+  0x388a9ea, 0x800c7d8c, 0x36f8a51, 0x800bce63, 0x3566a96, 0x800b2427,
+  0x33d4abb, 0x800a7edb,
+  0x3242abf, 0x8009de7e, 0x30b0aa4, 0x80094310, 0x2f1ea6c, 0x8008ac90,
+  0x2d8ca16, 0x80081b00,
+  0x2bfa9a4, 0x80078e5e, 0x2a68917, 0x800706ac, 0x28d6870, 0x800683e8,
+  0x27447b0, 0x80060614,
+  0x25b26d7, 0x80058d2f, 0x24205e8, 0x80051939, 0x228e4e2, 0x8004aa32,
+  0x20fc3c6, 0x8004401a,
+  0x1f6a297, 0x8003daf1, 0x1dd8154, 0x80037ab7, 0x1c45ffe, 0x80031f6d,
+  0x1ab3e97, 0x8002c912,
+  0x1921d20, 0x800277a6, 0x178fb99, 0x80022b29, 0x15fda03, 0x8001e39b,
+  0x146b860, 0x8001a0fd,
+  0x12d96b1, 0x8001634e, 0x11474f6, 0x80012a8e, 0xfb5330, 0x8000f6bd,
+  0xe23160, 0x8000c7dc,
+  0xc90f88, 0x80009dea, 0xafeda8, 0x800078e7, 0x96cbc1, 0x800058d4, 0x7da9d4,
+  0x80003daf,
+  0x6487e3, 0x8000277a, 0x4b65ee, 0x80001635, 0x3243f5, 0x800009df, 0x1921fb,
+  0x80000278,
+};
+
+static const q31_t WeightsQ31_8192[16384] = {
+  0x7fffffff, 0x0, 0x7fffffd9, 0xfff9b781, 0x7fffff62, 0xfff36f02, 0x7ffffe9d,
+    0xffed2684,
+  0x7ffffd88, 0xffe6de05, 0x7ffffc25, 0xffe09586, 0x7ffffa73, 0xffda4d08,
+    0x7ffff872, 0xffd40489,
+  0x7ffff621, 0xffcdbc0b, 0x7ffff382, 0xffc7738c, 0x7ffff094, 0xffc12b0e,
+    0x7fffed57, 0xffbae290,
+  0x7fffe9cb, 0xffb49a12, 0x7fffe5f0, 0xffae5195, 0x7fffe1c6, 0xffa80917,
+    0x7fffdd4d, 0xffa1c09a,
+  0x7fffd886, 0xff9b781d, 0x7fffd36f, 0xff952fa0, 0x7fffce09, 0xff8ee724,
+    0x7fffc854, 0xff889ea7,
+  0x7fffc251, 0xff82562c, 0x7fffbbfe, 0xff7c0db0, 0x7fffb55c, 0xff75c535,
+    0x7fffae6c, 0xff6f7cba,
+  0x7fffa72c, 0xff69343f, 0x7fff9f9e, 0xff62ebc5, 0x7fff97c1, 0xff5ca34b,
+    0x7fff8f94, 0xff565ad1,
+  0x7fff8719, 0xff501258, 0x7fff7e4f, 0xff49c9df, 0x7fff7536, 0xff438167,
+    0x7fff6bcd, 0xff3d38ef,
+  0x7fff6216, 0xff36f078, 0x7fff5810, 0xff30a801, 0x7fff4dbb, 0xff2a5f8b,
+    0x7fff4317, 0xff241715,
+  0x7fff3824, 0xff1dcea0, 0x7fff2ce2, 0xff17862b, 0x7fff2151, 0xff113db7,
+    0x7fff1572, 0xff0af543,
+  0x7fff0943, 0xff04acd0, 0x7ffefcc5, 0xfefe645e, 0x7ffeeff8, 0xfef81bec,
+    0x7ffee2dd, 0xfef1d37b,
+  0x7ffed572, 0xfeeb8b0a, 0x7ffec7b9, 0xfee5429a, 0x7ffeb9b0, 0xfedefa2b,
+    0x7ffeab59, 0xfed8b1bd,
+  0x7ffe9cb2, 0xfed2694f, 0x7ffe8dbd, 0xfecc20e2, 0x7ffe7e79, 0xfec5d876,
+    0x7ffe6ee5, 0xfebf900a,
+  0x7ffe5f03, 0xfeb947a0, 0x7ffe4ed2, 0xfeb2ff36, 0x7ffe3e52, 0xfeacb6cc,
+    0x7ffe2d83, 0xfea66e64,
+  0x7ffe1c65, 0xfea025fd, 0x7ffe0af8, 0xfe99dd96, 0x7ffdf93c, 0xfe939530,
+    0x7ffde731, 0xfe8d4ccb,
+  0x7ffdd4d7, 0xfe870467, 0x7ffdc22e, 0xfe80bc04, 0x7ffdaf37, 0xfe7a73a2,
+    0x7ffd9bf0, 0xfe742b41,
+  0x7ffd885a, 0xfe6de2e0, 0x7ffd7476, 0xfe679a81, 0x7ffd6042, 0xfe615223,
+    0x7ffd4bc0, 0xfe5b09c5,
+  0x7ffd36ee, 0xfe54c169, 0x7ffd21ce, 0xfe4e790d, 0x7ffd0c5f, 0xfe4830b3,
+    0x7ffcf6a0, 0xfe41e85a,
+  0x7ffce093, 0xfe3ba002, 0x7ffcca37, 0xfe3557ab, 0x7ffcb38c, 0xfe2f0f55,
+    0x7ffc9c92, 0xfe28c700,
+  0x7ffc8549, 0xfe227eac, 0x7ffc6db1, 0xfe1c365a, 0x7ffc55ca, 0xfe15ee09,
+    0x7ffc3d94, 0xfe0fa5b8,
+  0x7ffc250f, 0xfe095d69, 0x7ffc0c3b, 0xfe03151c, 0x7ffbf319, 0xfdfccccf,
+    0x7ffbd9a7, 0xfdf68484,
+  0x7ffbbfe6, 0xfdf03c3a, 0x7ffba5d7, 0xfde9f3f1, 0x7ffb8b78, 0xfde3aba9,
+    0x7ffb70cb, 0xfddd6363,
+  0x7ffb55ce, 0xfdd71b1e, 0x7ffb3a83, 0xfdd0d2db, 0x7ffb1ee9, 0xfdca8a99,
+    0x7ffb0300, 0xfdc44258,
+  0x7ffae6c7, 0xfdbdfa18, 0x7ffaca40, 0xfdb7b1da, 0x7ffaad6a, 0xfdb1699e,
+    0x7ffa9045, 0xfdab2162,
+  0x7ffa72d1, 0xfda4d929, 0x7ffa550e, 0xfd9e90f0, 0x7ffa36fc, 0xfd9848b9,
+    0x7ffa189c, 0xfd920084,
+  0x7ff9f9ec, 0xfd8bb850, 0x7ff9daed, 0xfd85701e, 0x7ff9bba0, 0xfd7f27ed,
+    0x7ff99c03, 0xfd78dfbd,
+  0x7ff97c18, 0xfd729790, 0x7ff95bdd, 0xfd6c4f64, 0x7ff93b54, 0xfd660739,
+    0x7ff91a7b, 0xfd5fbf10,
+  0x7ff8f954, 0xfd5976e9, 0x7ff8d7de, 0xfd532ec3, 0x7ff8b619, 0xfd4ce69f,
+    0x7ff89405, 0xfd469e7c,
+  0x7ff871a2, 0xfd40565c, 0x7ff84ef0, 0xfd3a0e3d, 0x7ff82bef, 0xfd33c61f,
+    0x7ff8089f, 0xfd2d7e04,
+  0x7ff7e500, 0xfd2735ea, 0x7ff7c113, 0xfd20edd2, 0x7ff79cd6, 0xfd1aa5bc,
+    0x7ff7784a, 0xfd145da7,
+  0x7ff75370, 0xfd0e1594, 0x7ff72e46, 0xfd07cd83, 0x7ff708ce, 0xfd018574,
+    0x7ff6e307, 0xfcfb3d67,
+  0x7ff6bcf0, 0xfcf4f55c, 0x7ff6968b, 0xfceead52, 0x7ff66fd7, 0xfce8654b,
+    0x7ff648d4, 0xfce21d45,
+  0x7ff62182, 0xfcdbd541, 0x7ff5f9e1, 0xfcd58d3f, 0x7ff5d1f1, 0xfccf453f,
+    0x7ff5a9b2, 0xfcc8fd41,
+  0x7ff58125, 0xfcc2b545, 0x7ff55848, 0xfcbc6d4c, 0x7ff52f1d, 0xfcb62554,
+    0x7ff505a2, 0xfcafdd5e,
+  0x7ff4dbd9, 0xfca9956a, 0x7ff4b1c0, 0xfca34d78, 0x7ff48759, 0xfc9d0588,
+    0x7ff45ca3, 0xfc96bd9b,
+  0x7ff4319d, 0xfc9075af, 0x7ff40649, 0xfc8a2dc6, 0x7ff3daa6, 0xfc83e5de,
+    0x7ff3aeb4, 0xfc7d9df9,
+  0x7ff38274, 0xfc775616, 0x7ff355e4, 0xfc710e36, 0x7ff32905, 0xfc6ac657,
+    0x7ff2fbd7, 0xfc647e7b,
+  0x7ff2ce5b, 0xfc5e36a0, 0x7ff2a08f, 0xfc57eec9, 0x7ff27275, 0xfc51a6f3,
+    0x7ff2440b, 0xfc4b5f20,
+  0x7ff21553, 0xfc45174e, 0x7ff1e64c, 0xfc3ecf80, 0x7ff1b6f6, 0xfc3887b3,
+    0x7ff18751, 0xfc323fe9,
+  0x7ff1575d, 0xfc2bf821, 0x7ff1271a, 0xfc25b05c, 0x7ff0f688, 0xfc1f6899,
+    0x7ff0c5a7, 0xfc1920d8,
+  0x7ff09478, 0xfc12d91a, 0x7ff062f9, 0xfc0c915e, 0x7ff0312c, 0xfc0649a5,
+    0x7fefff0f, 0xfc0001ee,
+  0x7fefcca4, 0xfbf9ba39, 0x7fef99ea, 0xfbf37287, 0x7fef66e1, 0xfbed2ad8,
+    0x7fef3388, 0xfbe6e32b,
+  0x7feeffe1, 0xfbe09b80, 0x7feecbec, 0xfbda53d8, 0x7fee97a7, 0xfbd40c33,
+    0x7fee6313, 0xfbcdc490,
+  0x7fee2e30, 0xfbc77cf0, 0x7fedf8ff, 0xfbc13552, 0x7fedc37e, 0xfbbaedb7,
+    0x7fed8daf, 0xfbb4a61f,
+  0x7fed5791, 0xfbae5e89, 0x7fed2123, 0xfba816f6, 0x7fecea67, 0xfba1cf66,
+    0x7fecb35c, 0xfb9b87d8,
+  0x7fec7c02, 0xfb95404d, 0x7fec4459, 0xfb8ef8c5, 0x7fec0c62, 0xfb88b13f,
+    0x7febd41b, 0xfb8269bd,
+  0x7feb9b85, 0xfb7c223d, 0x7feb62a1, 0xfb75dac0, 0x7feb296d, 0xfb6f9345,
+    0x7feaefeb, 0xfb694bce,
+  0x7feab61a, 0xfb630459, 0x7fea7bfa, 0xfb5cbce7, 0x7fea418b, 0xfb567578,
+    0x7fea06cd, 0xfb502e0c,
+  0x7fe9cbc0, 0xfb49e6a3, 0x7fe99064, 0xfb439f3c, 0x7fe954ba, 0xfb3d57d9,
+    0x7fe918c0, 0xfb371078,
+  0x7fe8dc78, 0xfb30c91b, 0x7fe89fe0, 0xfb2a81c0, 0x7fe862fa, 0xfb243a69,
+    0x7fe825c5, 0xfb1df314,
+  0x7fe7e841, 0xfb17abc2, 0x7fe7aa6e, 0xfb116474, 0x7fe76c4c, 0xfb0b1d28,
+    0x7fe72ddb, 0xfb04d5e0,
+  0x7fe6ef1c, 0xfafe8e9b, 0x7fe6b00d, 0xfaf84758, 0x7fe670b0, 0xfaf20019,
+    0x7fe63103, 0xfaebb8dd,
+  0x7fe5f108, 0xfae571a4, 0x7fe5b0be, 0xfadf2a6e, 0x7fe57025, 0xfad8e33c,
+    0x7fe52f3d, 0xfad29c0c,
+  0x7fe4ee06, 0xfacc54e0, 0x7fe4ac81, 0xfac60db7, 0x7fe46aac, 0xfabfc691,
+    0x7fe42889, 0xfab97f6e,
+  0x7fe3e616, 0xfab3384f, 0x7fe3a355, 0xfaacf133, 0x7fe36045, 0xfaa6aa1a,
+    0x7fe31ce6, 0xfaa06305,
+  0x7fe2d938, 0xfa9a1bf3, 0x7fe2953b, 0xfa93d4e4, 0x7fe250ef, 0xfa8d8dd8,
+    0x7fe20c55, 0xfa8746d0,
+  0x7fe1c76b, 0xfa80ffcb, 0x7fe18233, 0xfa7ab8ca, 0x7fe13cac, 0xfa7471cc,
+    0x7fe0f6d6, 0xfa6e2ad1,
+  0x7fe0b0b1, 0xfa67e3da, 0x7fe06a3d, 0xfa619ce7, 0x7fe0237a, 0xfa5b55f7,
+    0x7fdfdc69, 0xfa550f0a,
+  0x7fdf9508, 0xfa4ec821, 0x7fdf4d59, 0xfa48813b, 0x7fdf055a, 0xfa423a59,
+    0x7fdebd0d, 0xfa3bf37a,
+  0x7fde7471, 0xfa35ac9f, 0x7fde2b86, 0xfa2f65c8, 0x7fdde24d, 0xfa291ef4,
+    0x7fdd98c4, 0xfa22d823,
+  0x7fdd4eec, 0xfa1c9157, 0x7fdd04c6, 0xfa164a8e, 0x7fdcba51, 0xfa1003c8,
+    0x7fdc6f8d, 0xfa09bd06,
+  0x7fdc247a, 0xfa037648, 0x7fdbd918, 0xf9fd2f8e, 0x7fdb8d67, 0xf9f6e8d7,
+    0x7fdb4167, 0xf9f0a224,
+  0x7fdaf519, 0xf9ea5b75, 0x7fdaa87c, 0xf9e414ca, 0x7fda5b8f, 0xf9ddce22,
+    0x7fda0e54, 0xf9d7877e,
+  0x7fd9c0ca, 0xf9d140de, 0x7fd972f2, 0xf9cafa42, 0x7fd924ca, 0xf9c4b3a9,
+    0x7fd8d653, 0xf9be6d15,
+  0x7fd8878e, 0xf9b82684, 0x7fd8387a, 0xf9b1dff7, 0x7fd7e917, 0xf9ab996e,
+    0x7fd79965, 0xf9a552e9,
+  0x7fd74964, 0xf99f0c68, 0x7fd6f914, 0xf998c5ea, 0x7fd6a875, 0xf9927f71,
+    0x7fd65788, 0xf98c38fc,
+  0x7fd6064c, 0xf985f28a, 0x7fd5b4c1, 0xf97fac1d, 0x7fd562e7, 0xf97965b4,
+    0x7fd510be, 0xf9731f4e,
+  0x7fd4be46, 0xf96cd8ed, 0x7fd46b80, 0xf9669290, 0x7fd4186a, 0xf9604c37,
+    0x7fd3c506, 0xf95a05e2,
+  0x7fd37153, 0xf953bf91, 0x7fd31d51, 0xf94d7944, 0x7fd2c900, 0xf94732fb,
+    0x7fd27460, 0xf940ecb7,
+  0x7fd21f72, 0xf93aa676, 0x7fd1ca35, 0xf934603a, 0x7fd174a8, 0xf92e1a02,
+    0x7fd11ecd, 0xf927d3ce,
+  0x7fd0c8a3, 0xf9218d9e, 0x7fd0722b, 0xf91b4773, 0x7fd01b63, 0xf915014c,
+    0x7fcfc44d, 0xf90ebb29,
+  0x7fcf6ce8, 0xf908750a, 0x7fcf1533, 0xf9022ef0, 0x7fcebd31, 0xf8fbe8da,
+    0x7fce64df, 0xf8f5a2c9,
+  0x7fce0c3e, 0xf8ef5cbb, 0x7fcdb34f, 0xf8e916b2, 0x7fcd5a11, 0xf8e2d0ae,
+    0x7fcd0083, 0xf8dc8aae,
+  0x7fcca6a7, 0xf8d644b2, 0x7fcc4c7d, 0xf8cffebb, 0x7fcbf203, 0xf8c9b8c8,
+    0x7fcb973b, 0xf8c372d9,
+  0x7fcb3c23, 0xf8bd2cef, 0x7fcae0bd, 0xf8b6e70a, 0x7fca8508, 0xf8b0a129,
+    0x7fca2905, 0xf8aa5b4c,
+  0x7fc9ccb2, 0xf8a41574, 0x7fc97011, 0xf89dcfa1, 0x7fc91320, 0xf89789d2,
+    0x7fc8b5e1, 0xf8914407,
+  0x7fc85854, 0xf88afe42, 0x7fc7fa77, 0xf884b880, 0x7fc79c4b, 0xf87e72c4,
+    0x7fc73dd1, 0xf8782d0c,
+  0x7fc6df08, 0xf871e759, 0x7fc67ff0, 0xf86ba1aa, 0x7fc62089, 0xf8655c00,
+    0x7fc5c0d3, 0xf85f165b,
+  0x7fc560cf, 0xf858d0bb, 0x7fc5007c, 0xf8528b1f, 0x7fc49fda, 0xf84c4588,
+    0x7fc43ee9, 0xf845fff5,
+  0x7fc3dda9, 0xf83fba68, 0x7fc37c1b, 0xf83974df, 0x7fc31a3d, 0xf8332f5b,
+    0x7fc2b811, 0xf82ce9dc,
+  0x7fc25596, 0xf826a462, 0x7fc1f2cc, 0xf8205eec, 0x7fc18fb4, 0xf81a197b,
+    0x7fc12c4d, 0xf813d410,
+  0x7fc0c896, 0xf80d8ea9, 0x7fc06491, 0xf8074947, 0x7fc0003e, 0xf80103ea,
+    0x7fbf9b9b, 0xf7fabe92,
+  0x7fbf36aa, 0xf7f4793e, 0x7fbed16a, 0xf7ee33f0, 0x7fbe6bdb, 0xf7e7eea7,
+    0x7fbe05fd, 0xf7e1a963,
+  0x7fbd9fd0, 0xf7db6423, 0x7fbd3955, 0xf7d51ee9, 0x7fbcd28b, 0xf7ced9b4,
+    0x7fbc6b72, 0xf7c89484,
+  0x7fbc040a, 0xf7c24f59, 0x7fbb9c53, 0xf7bc0a33, 0x7fbb344e, 0xf7b5c512,
+    0x7fbacbfa, 0xf7af7ff6,
+  0x7fba6357, 0xf7a93ae0, 0x7fb9fa65, 0xf7a2f5ce, 0x7fb99125, 0xf79cb0c2,
+    0x7fb92796, 0xf7966bbb,
+  0x7fb8bdb8, 0xf79026b9, 0x7fb8538b, 0xf789e1bc, 0x7fb7e90f, 0xf7839cc4,
+    0x7fb77e45, 0xf77d57d2,
+  0x7fb7132b, 0xf77712e5, 0x7fb6a7c3, 0xf770cdfd, 0x7fb63c0d, 0xf76a891b,
+    0x7fb5d007, 0xf764443d,
+  0x7fb563b3, 0xf75dff66, 0x7fb4f710, 0xf757ba93, 0x7fb48a1e, 0xf75175c6,
+    0x7fb41cdd, 0xf74b30fe,
+  0x7fb3af4e, 0xf744ec3b, 0x7fb34170, 0xf73ea77e, 0x7fb2d343, 0xf73862c6,
+    0x7fb264c7, 0xf7321e14,
+  0x7fb1f5fc, 0xf72bd967, 0x7fb186e3, 0xf72594c0, 0x7fb1177b, 0xf71f501e,
+    0x7fb0a7c4, 0xf7190b81,
+  0x7fb037bf, 0xf712c6ea, 0x7fafc76a, 0xf70c8259, 0x7faf56c7, 0xf7063dcd,
+    0x7faee5d5, 0xf6fff946,
+  0x7fae7495, 0xf6f9b4c6, 0x7fae0305, 0xf6f3704a, 0x7fad9127, 0xf6ed2bd4,
+    0x7fad1efa, 0xf6e6e764,
+  0x7facac7f, 0xf6e0a2fa, 0x7fac39b4, 0xf6da5e95, 0x7fabc69b, 0xf6d41a36,
+    0x7fab5333, 0xf6cdd5dc,
+  0x7faadf7c, 0xf6c79188, 0x7faa6b77, 0xf6c14d3a, 0x7fa9f723, 0xf6bb08f1,
+    0x7fa98280, 0xf6b4c4ae,
+  0x7fa90d8e, 0xf6ae8071, 0x7fa8984e, 0xf6a83c3a, 0x7fa822bf, 0xf6a1f808,
+    0x7fa7ace1, 0xf69bb3dd,
+  0x7fa736b4, 0xf6956fb7, 0x7fa6c039, 0xf68f2b96, 0x7fa6496e, 0xf688e77c,
+    0x7fa5d256, 0xf682a367,
+  0x7fa55aee, 0xf67c5f59, 0x7fa4e338, 0xf6761b50, 0x7fa46b32, 0xf66fd74d,
+    0x7fa3f2df, 0xf6699350,
+  0x7fa37a3c, 0xf6634f59, 0x7fa3014b, 0xf65d0b68, 0x7fa2880b, 0xf656c77c,
+    0x7fa20e7c, 0xf6508397,
+  0x7fa1949e, 0xf64a3fb8, 0x7fa11a72, 0xf643fbdf, 0x7fa09ff7, 0xf63db80b,
+    0x7fa0252e, 0xf637743e,
+  0x7f9faa15, 0xf6313077, 0x7f9f2eae, 0xf62aecb5, 0x7f9eb2f8, 0xf624a8fa,
+    0x7f9e36f4, 0xf61e6545,
+  0x7f9dbaa0, 0xf6182196, 0x7f9d3dfe, 0xf611dded, 0x7f9cc10d, 0xf60b9a4b,
+    0x7f9c43ce, 0xf60556ae,
+  0x7f9bc640, 0xf5ff1318, 0x7f9b4863, 0xf5f8cf87, 0x7f9aca37, 0xf5f28bfd,
+    0x7f9a4bbd, 0xf5ec4879,
+  0x7f99ccf4, 0xf5e604fc, 0x7f994ddc, 0xf5dfc184, 0x7f98ce76, 0xf5d97e13,
+    0x7f984ec1, 0xf5d33aa8,
+  0x7f97cebd, 0xf5ccf743, 0x7f974e6a, 0xf5c6b3e5, 0x7f96cdc9, 0xf5c0708d,
+    0x7f964cd9, 0xf5ba2d3b,
+  0x7f95cb9a, 0xf5b3e9f0, 0x7f954a0d, 0xf5ada6ab, 0x7f94c831, 0xf5a7636c,
+    0x7f944606, 0xf5a12034,
+  0x7f93c38c, 0xf59add02, 0x7f9340c4, 0xf59499d6, 0x7f92bdad, 0xf58e56b1,
+    0x7f923a48, 0xf5881393,
+  0x7f91b694, 0xf581d07b, 0x7f913291, 0xf57b8d69, 0x7f90ae3f, 0xf5754a5e,
+    0x7f90299f, 0xf56f0759,
+  0x7f8fa4b0, 0xf568c45b, 0x7f8f1f72, 0xf5628163, 0x7f8e99e6, 0xf55c3e72,
+    0x7f8e140a, 0xf555fb88,
+  0x7f8d8de1, 0xf54fb8a4, 0x7f8d0768, 0xf54975c6, 0x7f8c80a1, 0xf54332ef,
+    0x7f8bf98b, 0xf53cf01f,
+  0x7f8b7227, 0xf536ad56, 0x7f8aea74, 0xf5306a93, 0x7f8a6272, 0xf52a27d7,
+    0x7f89da21, 0xf523e521,
+  0x7f895182, 0xf51da273, 0x7f88c894, 0xf5175fca, 0x7f883f58, 0xf5111d29,
+    0x7f87b5cd, 0xf50ada8f,
+  0x7f872bf3, 0xf50497fb, 0x7f86a1ca, 0xf4fe556e, 0x7f861753, 0xf4f812e7,
+    0x7f858c8d, 0xf4f1d068,
+  0x7f850179, 0xf4eb8def, 0x7f847616, 0xf4e54b7d, 0x7f83ea64, 0xf4df0912,
+    0x7f835e64, 0xf4d8c6ae,
+  0x7f82d214, 0xf4d28451, 0x7f824577, 0xf4cc41fb, 0x7f81b88a, 0xf4c5ffab,
+    0x7f812b4f, 0xf4bfbd63,
+  0x7f809dc5, 0xf4b97b21, 0x7f800fed, 0xf4b338e7, 0x7f7f81c6, 0xf4acf6b3,
+    0x7f7ef350, 0xf4a6b486,
+  0x7f7e648c, 0xf4a07261, 0x7f7dd579, 0xf49a3042, 0x7f7d4617, 0xf493ee2b,
+    0x7f7cb667, 0xf48dac1a,
+  0x7f7c2668, 0xf4876a10, 0x7f7b961b, 0xf481280e, 0x7f7b057e, 0xf47ae613,
+    0x7f7a7494, 0xf474a41f,
+  0x7f79e35a, 0xf46e6231, 0x7f7951d2, 0xf468204b, 0x7f78bffb, 0xf461de6d,
+    0x7f782dd6, 0xf45b9c95,
+  0x7f779b62, 0xf4555ac5, 0x7f77089f, 0xf44f18fb, 0x7f76758e, 0xf448d739,
+    0x7f75e22e, 0xf442957e,
+  0x7f754e80, 0xf43c53cb, 0x7f74ba83, 0xf436121e, 0x7f742637, 0xf42fd079,
+    0x7f73919d, 0xf4298edc,
+  0x7f72fcb4, 0xf4234d45, 0x7f72677c, 0xf41d0bb6, 0x7f71d1f6, 0xf416ca2e,
+    0x7f713c21, 0xf41088ae,
+  0x7f70a5fe, 0xf40a4735, 0x7f700f8c, 0xf40405c3, 0x7f6f78cb, 0xf3fdc459,
+    0x7f6ee1bc, 0xf3f782f6,
+  0x7f6e4a5e, 0xf3f1419a, 0x7f6db2b1, 0xf3eb0046, 0x7f6d1ab6, 0xf3e4bef9,
+    0x7f6c826d, 0xf3de7db4,
+  0x7f6be9d4, 0xf3d83c77, 0x7f6b50ed, 0xf3d1fb40, 0x7f6ab7b8, 0xf3cbba12,
+    0x7f6a1e34, 0xf3c578eb,
+  0x7f698461, 0xf3bf37cb, 0x7f68ea40, 0xf3b8f6b3, 0x7f684fd0, 0xf3b2b5a3,
+    0x7f67b512, 0xf3ac749a,
+  0x7f671a05, 0xf3a63398, 0x7f667ea9, 0xf39ff29f, 0x7f65e2ff, 0xf399b1ad,
+    0x7f654706, 0xf39370c2,
+  0x7f64aabf, 0xf38d2fe0, 0x7f640e29, 0xf386ef05, 0x7f637144, 0xf380ae31,
+    0x7f62d411, 0xf37a6d66,
+  0x7f62368f, 0xf3742ca2, 0x7f6198bf, 0xf36debe6, 0x7f60faa0, 0xf367ab31,
+    0x7f605c33, 0xf3616a85,
+  0x7f5fbd77, 0xf35b29e0, 0x7f5f1e6c, 0xf354e943, 0x7f5e7f13, 0xf34ea8ae,
+    0x7f5ddf6b, 0xf3486820,
+  0x7f5d3f75, 0xf342279b, 0x7f5c9f30, 0xf33be71d, 0x7f5bfe9d, 0xf335a6a7,
+    0x7f5b5dbb, 0xf32f6639,
+  0x7f5abc8a, 0xf32925d3, 0x7f5a1b0b, 0xf322e575, 0x7f59793e, 0xf31ca51f,
+    0x7f58d721, 0xf31664d1,
+  0x7f5834b7, 0xf310248a, 0x7f5791fd, 0xf309e44c, 0x7f56eef5, 0xf303a416,
+    0x7f564b9f, 0xf2fd63e8,
+  0x7f55a7fa, 0xf2f723c1, 0x7f550407, 0xf2f0e3a3, 0x7f545fc5, 0xf2eaa38d,
+    0x7f53bb34, 0xf2e4637f,
+  0x7f531655, 0xf2de2379, 0x7f527127, 0xf2d7e37b, 0x7f51cbab, 0xf2d1a385,
+    0x7f5125e0, 0xf2cb6398,
+  0x7f507fc7, 0xf2c523b2, 0x7f4fd95f, 0xf2bee3d5, 0x7f4f32a9, 0xf2b8a400,
+    0x7f4e8ba4, 0xf2b26433,
+  0x7f4de451, 0xf2ac246e, 0x7f4d3caf, 0xf2a5e4b1, 0x7f4c94be, 0xf29fa4fd,
+    0x7f4bec7f, 0xf2996551,
+  0x7f4b43f2, 0xf29325ad, 0x7f4a9b16, 0xf28ce612, 0x7f49f1eb, 0xf286a67e,
+    0x7f494872, 0xf28066f4,
+  0x7f489eaa, 0xf27a2771, 0x7f47f494, 0xf273e7f7, 0x7f474a30, 0xf26da885,
+    0x7f469f7d, 0xf267691b,
+  0x7f45f47b, 0xf26129ba, 0x7f45492b, 0xf25aea61, 0x7f449d8c, 0xf254ab11,
+    0x7f43f19f, 0xf24e6bc9,
+  0x7f434563, 0xf2482c8a, 0x7f4298d9, 0xf241ed53, 0x7f41ec01, 0xf23bae24,
+    0x7f413ed9, 0xf2356efe,
+  0x7f409164, 0xf22f2fe1, 0x7f3fe3a0, 0xf228f0cc, 0x7f3f358d, 0xf222b1c0,
+    0x7f3e872c, 0xf21c72bc,
+  0x7f3dd87c, 0xf21633c0, 0x7f3d297e, 0xf20ff4ce, 0x7f3c7a31, 0xf209b5e4,
+    0x7f3bca96, 0xf2037702,
+  0x7f3b1aad, 0xf1fd3829, 0x7f3a6a75, 0xf1f6f959, 0x7f39b9ee, 0xf1f0ba91,
+    0x7f390919, 0xf1ea7bd2,
+  0x7f3857f6, 0xf1e43d1c, 0x7f37a684, 0xf1ddfe6f, 0x7f36f4c3, 0xf1d7bfca,
+    0x7f3642b4, 0xf1d1812e,
+  0x7f359057, 0xf1cb429a, 0x7f34ddab, 0xf1c50410, 0x7f342ab1, 0xf1bec58e,
+    0x7f337768, 0xf1b88715,
+  0x7f32c3d1, 0xf1b248a5, 0x7f320feb, 0xf1ac0a3e, 0x7f315bb7, 0xf1a5cbdf,
+    0x7f30a734, 0xf19f8d89,
+  0x7f2ff263, 0xf1994f3d, 0x7f2f3d44, 0xf19310f9, 0x7f2e87d6, 0xf18cd2be,
+    0x7f2dd219, 0xf186948c,
+  0x7f2d1c0e, 0xf1805662, 0x7f2c65b5, 0xf17a1842, 0x7f2baf0d, 0xf173da2b,
+    0x7f2af817, 0xf16d9c1d,
+  0x7f2a40d2, 0xf1675e17, 0x7f29893f, 0xf161201b, 0x7f28d15d, 0xf15ae228,
+    0x7f28192d, 0xf154a43d,
+  0x7f2760af, 0xf14e665c, 0x7f26a7e2, 0xf1482884, 0x7f25eec7, 0xf141eab5,
+    0x7f25355d, 0xf13bacef,
+  0x7f247ba5, 0xf1356f32, 0x7f23c19e, 0xf12f317e, 0x7f230749, 0xf128f3d4,
+    0x7f224ca6, 0xf122b632,
+  0x7f2191b4, 0xf11c789a, 0x7f20d674, 0xf1163b0b, 0x7f201ae5, 0xf10ffd85,
+    0x7f1f5f08, 0xf109c009,
+  0x7f1ea2dc, 0xf1038295, 0x7f1de662, 0xf0fd452b, 0x7f1d299a, 0xf0f707ca,
+    0x7f1c6c83, 0xf0f0ca72,
+  0x7f1baf1e, 0xf0ea8d24, 0x7f1af16a, 0xf0e44fdf, 0x7f1a3368, 0xf0de12a3,
+    0x7f197518, 0xf0d7d571,
+  0x7f18b679, 0xf0d19848, 0x7f17f78c, 0xf0cb5b28, 0x7f173850, 0xf0c51e12,
+    0x7f1678c6, 0xf0bee105,
+  0x7f15b8ee, 0xf0b8a401, 0x7f14f8c7, 0xf0b26707, 0x7f143852, 0xf0ac2a16,
+    0x7f13778e, 0xf0a5ed2f,
+  0x7f12b67c, 0xf09fb051, 0x7f11f51c, 0xf099737d, 0x7f11336d, 0xf09336b2,
+    0x7f107170, 0xf08cf9f1,
+  0x7f0faf25, 0xf086bd39, 0x7f0eec8b, 0xf080808b, 0x7f0e29a3, 0xf07a43e7,
+    0x7f0d666c, 0xf074074c,
+  0x7f0ca2e7, 0xf06dcaba, 0x7f0bdf14, 0xf0678e32, 0x7f0b1af2, 0xf06151b4,
+    0x7f0a5682, 0xf05b1540,
+  0x7f0991c4, 0xf054d8d5, 0x7f08ccb7, 0xf04e9c73, 0x7f08075c, 0xf048601c,
+    0x7f0741b2, 0xf04223ce,
+  0x7f067bba, 0xf03be78a, 0x7f05b574, 0xf035ab4f, 0x7f04eedf, 0xf02f6f1f,
+    0x7f0427fc, 0xf02932f8,
+  0x7f0360cb, 0xf022f6da, 0x7f02994b, 0xf01cbac7, 0x7f01d17d, 0xf0167ebd,
+    0x7f010961, 0xf01042be,
+  0x7f0040f6, 0xf00a06c8, 0x7eff783d, 0xf003cadc, 0x7efeaf36, 0xeffd8ef9,
+    0x7efde5e0, 0xeff75321,
+  0x7efd1c3c, 0xeff11753, 0x7efc524a, 0xefeadb8e, 0x7efb8809, 0xefe49fd3,
+    0x7efabd7a, 0xefde6423,
+  0x7ef9f29d, 0xefd8287c, 0x7ef92771, 0xefd1ecdf, 0x7ef85bf7, 0xefcbb14c,
+    0x7ef7902f, 0xefc575c3,
+  0x7ef6c418, 0xefbf3a45, 0x7ef5f7b3, 0xefb8fed0, 0x7ef52b00, 0xefb2c365,
+    0x7ef45dfe, 0xefac8804,
+  0x7ef390ae, 0xefa64cae, 0x7ef2c310, 0xefa01161, 0x7ef1f524, 0xef99d61f,
+    0x7ef126e9, 0xef939ae6,
+  0x7ef05860, 0xef8d5fb8, 0x7eef8988, 0xef872494, 0x7eeeba62, 0xef80e97a,
+    0x7eedeaee, 0xef7aae6b,
+  0x7eed1b2c, 0xef747365, 0x7eec4b1b, 0xef6e386a, 0x7eeb7abc, 0xef67fd79,
+    0x7eeaaa0f, 0xef61c292,
+  0x7ee9d914, 0xef5b87b5, 0x7ee907ca, 0xef554ce3, 0x7ee83632, 0xef4f121b,
+    0x7ee7644c, 0xef48d75d,
+  0x7ee69217, 0xef429caa, 0x7ee5bf94, 0xef3c6201, 0x7ee4ecc3, 0xef362762,
+    0x7ee419a3, 0xef2feccd,
+  0x7ee34636, 0xef29b243, 0x7ee2727a, 0xef2377c4, 0x7ee19e6f, 0xef1d3d4e,
+    0x7ee0ca17, 0xef1702e4,
+  0x7edff570, 0xef10c883, 0x7edf207b, 0xef0a8e2d, 0x7ede4b38, 0xef0453e2,
+    0x7edd75a6, 0xeefe19a1,
+  0x7edc9fc6, 0xeef7df6a, 0x7edbc998, 0xeef1a53e, 0x7edaf31c, 0xeeeb6b1c,
+    0x7eda1c51, 0xeee53105,
+  0x7ed94538, 0xeedef6f9, 0x7ed86dd1, 0xeed8bcf7, 0x7ed7961c, 0xeed28300,
+    0x7ed6be18, 0xeecc4913,
+  0x7ed5e5c6, 0xeec60f31, 0x7ed50d26, 0xeebfd55a, 0x7ed43438, 0xeeb99b8d,
+    0x7ed35afb, 0xeeb361cb,
+  0x7ed28171, 0xeead2813, 0x7ed1a798, 0xeea6ee66, 0x7ed0cd70, 0xeea0b4c4,
+    0x7ecff2fb, 0xee9a7b2d,
+  0x7ecf1837, 0xee9441a0, 0x7ece3d25, 0xee8e081e, 0x7ecd61c5, 0xee87cea7,
+    0x7ecc8617, 0xee81953b,
+  0x7ecbaa1a, 0xee7b5bd9, 0x7ecacdd0, 0xee752283, 0x7ec9f137, 0xee6ee937,
+    0x7ec9144f, 0xee68aff6,
+  0x7ec8371a, 0xee6276bf, 0x7ec75996, 0xee5c3d94, 0x7ec67bc5, 0xee560473,
+    0x7ec59da5, 0xee4fcb5e,
+  0x7ec4bf36, 0xee499253, 0x7ec3e07a, 0xee435953, 0x7ec3016f, 0xee3d205e,
+    0x7ec22217, 0xee36e775,
+  0x7ec14270, 0xee30ae96, 0x7ec0627a, 0xee2a75c2, 0x7ebf8237, 0xee243cf9,
+    0x7ebea1a6, 0xee1e043b,
+  0x7ebdc0c6, 0xee17cb88, 0x7ebcdf98, 0xee1192e0, 0x7ebbfe1c, 0xee0b5a43,
+    0x7ebb1c52, 0xee0521b2,
+  0x7eba3a39, 0xedfee92b, 0x7eb957d2, 0xedf8b0b0, 0x7eb8751e, 0xedf2783f,
+    0x7eb7921b, 0xedec3fda,
+  0x7eb6aeca, 0xede60780, 0x7eb5cb2a, 0xeddfcf31, 0x7eb4e73d, 0xedd996ed,
+    0x7eb40301, 0xedd35eb5,
+  0x7eb31e78, 0xedcd2687, 0x7eb239a0, 0xedc6ee65, 0x7eb1547a, 0xedc0b64e,
+    0x7eb06f05, 0xedba7e43,
+  0x7eaf8943, 0xedb44642, 0x7eaea333, 0xedae0e4d, 0x7eadbcd4, 0xeda7d664,
+    0x7eacd627, 0xeda19e85,
+  0x7eabef2c, 0xed9b66b2, 0x7eab07e3, 0xed952eea, 0x7eaa204c, 0xed8ef72e,
+    0x7ea93867, 0xed88bf7d,
+  0x7ea85033, 0xed8287d7, 0x7ea767b2, 0xed7c503d, 0x7ea67ee2, 0xed7618ae,
+    0x7ea595c4, 0xed6fe12b,
+  0x7ea4ac58, 0xed69a9b3, 0x7ea3c29e, 0xed637246, 0x7ea2d896, 0xed5d3ae5,
+    0x7ea1ee3f, 0xed570390,
+  0x7ea1039b, 0xed50cc46, 0x7ea018a8, 0xed4a9507, 0x7e9f2d68, 0xed445dd5,
+    0x7e9e41d9, 0xed3e26ad,
+  0x7e9d55fc, 0xed37ef91, 0x7e9c69d1, 0xed31b881, 0x7e9b7d58, 0xed2b817d,
+    0x7e9a9091, 0xed254a84,
+  0x7e99a37c, 0xed1f1396, 0x7e98b618, 0xed18dcb5, 0x7e97c867, 0xed12a5df,
+    0x7e96da67, 0xed0c6f14,
+  0x7e95ec1a, 0xed063856, 0x7e94fd7e, 0xed0001a3, 0x7e940e94, 0xecf9cafb,
+    0x7e931f5c, 0xecf39460,
+  0x7e922fd6, 0xeced5dd0, 0x7e914002, 0xece7274c, 0x7e904fe0, 0xece0f0d4,
+    0x7e8f5f70, 0xecdaba67,
+  0x7e8e6eb2, 0xecd48407, 0x7e8d7da6, 0xecce4db2, 0x7e8c8c4b, 0xecc81769,
+    0x7e8b9aa3, 0xecc1e12c,
+  0x7e8aa8ac, 0xecbbaafb, 0x7e89b668, 0xecb574d5, 0x7e88c3d5, 0xecaf3ebc,
+    0x7e87d0f5, 0xeca908ae,
+  0x7e86ddc6, 0xeca2d2ad, 0x7e85ea49, 0xec9c9cb7, 0x7e84f67e, 0xec9666cd,
+    0x7e840265, 0xec9030f0,
+  0x7e830dff, 0xec89fb1e, 0x7e82194a, 0xec83c558, 0x7e812447, 0xec7d8f9e,
+    0x7e802ef6, 0xec7759f1,
+  0x7e7f3957, 0xec71244f, 0x7e7e436a, 0xec6aeeba, 0x7e7d4d2f, 0xec64b930,
+    0x7e7c56a5, 0xec5e83b3,
+  0x7e7b5fce, 0xec584e41, 0x7e7a68a9, 0xec5218dc, 0x7e797136, 0xec4be383,
+    0x7e787975, 0xec45ae36,
+  0x7e778166, 0xec3f78f6, 0x7e768908, 0xec3943c1, 0x7e75905d, 0xec330e99,
+    0x7e749764, 0xec2cd97d,
+  0x7e739e1d, 0xec26a46d, 0x7e72a488, 0xec206f69, 0x7e71aaa4, 0xec1a3a72,
+    0x7e70b073, 0xec140587,
+  0x7e6fb5f4, 0xec0dd0a8, 0x7e6ebb27, 0xec079bd6, 0x7e6dc00c, 0xec01670f,
+    0x7e6cc4a2, 0xebfb3256,
+  0x7e6bc8eb, 0xebf4fda8, 0x7e6acce6, 0xebeec907, 0x7e69d093, 0xebe89472,
+    0x7e68d3f2, 0xebe25fea,
+  0x7e67d703, 0xebdc2b6e, 0x7e66d9c6, 0xebd5f6fe, 0x7e65dc3b, 0xebcfc29b,
+    0x7e64de62, 0xebc98e45,
+  0x7e63e03b, 0xebc359fb, 0x7e62e1c6, 0xebbd25bd, 0x7e61e303, 0xebb6f18c,
+    0x7e60e3f2, 0xebb0bd67,
+  0x7e5fe493, 0xebaa894f, 0x7e5ee4e6, 0xeba45543, 0x7e5de4ec, 0xeb9e2144,
+    0x7e5ce4a3, 0xeb97ed52,
+  0x7e5be40c, 0xeb91b96c, 0x7e5ae328, 0xeb8b8593, 0x7e59e1f5, 0xeb8551c6,
+    0x7e58e075, 0xeb7f1e06,
+  0x7e57dea7, 0xeb78ea52, 0x7e56dc8a, 0xeb72b6ac, 0x7e55da20, 0xeb6c8312,
+    0x7e54d768, 0xeb664f84,
+  0x7e53d462, 0xeb601c04, 0x7e52d10e, 0xeb59e890, 0x7e51cd6c, 0xeb53b529,
+    0x7e50c97c, 0xeb4d81ce,
+  0x7e4fc53e, 0xeb474e81, 0x7e4ec0b2, 0xeb411b40, 0x7e4dbbd9, 0xeb3ae80c,
+    0x7e4cb6b1, 0xeb34b4e4,
+  0x7e4bb13c, 0xeb2e81ca, 0x7e4aab78, 0xeb284ebc, 0x7e49a567, 0xeb221bbb,
+    0x7e489f08, 0xeb1be8c8,
+  0x7e47985b, 0xeb15b5e1, 0x7e469160, 0xeb0f8307, 0x7e458a17, 0xeb095039,
+    0x7e448281, 0xeb031d79,
+  0x7e437a9c, 0xeafceac6, 0x7e427269, 0xeaf6b81f, 0x7e4169e9, 0xeaf08586,
+    0x7e40611b, 0xeaea52fa,
+  0x7e3f57ff, 0xeae4207a, 0x7e3e4e95, 0xeaddee08, 0x7e3d44dd, 0xead7bba3,
+    0x7e3c3ad7, 0xead1894b,
+  0x7e3b3083, 0xeacb56ff, 0x7e3a25e2, 0xeac524c1, 0x7e391af3, 0xeabef290,
+    0x7e380fb5, 0xeab8c06c,
+  0x7e37042a, 0xeab28e56, 0x7e35f851, 0xeaac5c4c, 0x7e34ec2b, 0xeaa62a4f,
+    0x7e33dfb6, 0xea9ff860,
+  0x7e32d2f4, 0xea99c67e, 0x7e31c5e3, 0xea9394a9, 0x7e30b885, 0xea8d62e1,
+    0x7e2faad9, 0xea873127,
+  0x7e2e9cdf, 0xea80ff7a, 0x7e2d8e97, 0xea7acdda, 0x7e2c8002, 0xea749c47,
+    0x7e2b711f, 0xea6e6ac2,
+  0x7e2a61ed, 0xea683949, 0x7e29526e, 0xea6207df, 0x7e2842a2, 0xea5bd681,
+    0x7e273287, 0xea55a531,
+  0x7e26221f, 0xea4f73ee, 0x7e251168, 0xea4942b9, 0x7e240064, 0xea431191,
+    0x7e22ef12, 0xea3ce077,
+  0x7e21dd73, 0xea36af69, 0x7e20cb85, 0xea307e6a, 0x7e1fb94a, 0xea2a4d78,
+    0x7e1ea6c1, 0xea241c93,
+  0x7e1d93ea, 0xea1debbb, 0x7e1c80c5, 0xea17baf2, 0x7e1b6d53, 0xea118a35,
+    0x7e1a5992, 0xea0b5987,
+  0x7e194584, 0xea0528e5, 0x7e183128, 0xe9fef852, 0x7e171c7f, 0xe9f8c7cc,
+    0x7e160787, 0xe9f29753,
+  0x7e14f242, 0xe9ec66e8, 0x7e13dcaf, 0xe9e6368b, 0x7e12c6ce, 0xe9e0063c,
+    0x7e11b0a0, 0xe9d9d5fa,
+  0x7e109a24, 0xe9d3a5c5, 0x7e0f835a, 0xe9cd759f, 0x7e0e6c42, 0xe9c74586,
+    0x7e0d54dc, 0xe9c1157a,
+  0x7e0c3d29, 0xe9bae57d, 0x7e0b2528, 0xe9b4b58d, 0x7e0a0cd9, 0xe9ae85ab,
+    0x7e08f43d, 0xe9a855d7,
+  0x7e07db52, 0xe9a22610, 0x7e06c21a, 0xe99bf658, 0x7e05a894, 0xe995c6ad,
+    0x7e048ec1, 0xe98f9710,
+  0x7e0374a0, 0xe9896781, 0x7e025a31, 0xe98337ff, 0x7e013f74, 0xe97d088c,
+    0x7e00246a, 0xe976d926,
+  0x7dff0911, 0xe970a9ce, 0x7dfded6c, 0xe96a7a85, 0x7dfcd178, 0xe9644b49,
+    0x7dfbb537, 0xe95e1c1b,
+  0x7dfa98a8, 0xe957ecfb, 0x7df97bcb, 0xe951bde9, 0x7df85ea0, 0xe94b8ee5,
+    0x7df74128, 0xe9455fef,
+  0x7df62362, 0xe93f3107, 0x7df5054f, 0xe939022d, 0x7df3e6ee, 0xe932d361,
+    0x7df2c83f, 0xe92ca4a4,
+  0x7df1a942, 0xe92675f4, 0x7df089f8, 0xe9204752, 0x7def6a60, 0xe91a18bf,
+    0x7dee4a7a, 0xe913ea39,
+  0x7ded2a47, 0xe90dbbc2, 0x7dec09c6, 0xe9078d59, 0x7deae8f7, 0xe9015efe,
+    0x7de9c7da, 0xe8fb30b1,
+  0x7de8a670, 0xe8f50273, 0x7de784b9, 0xe8eed443, 0x7de662b3, 0xe8e8a621,
+    0x7de54060, 0xe8e2780d,
+  0x7de41dc0, 0xe8dc4a07, 0x7de2fad1, 0xe8d61c10, 0x7de1d795, 0xe8cfee27,
+    0x7de0b40b, 0xe8c9c04c,
+  0x7ddf9034, 0xe8c39280, 0x7dde6c0f, 0xe8bd64c2, 0x7ddd479d, 0xe8b73712,
+    0x7ddc22dc, 0xe8b10971,
+  0x7ddafdce, 0xe8aadbde, 0x7dd9d873, 0xe8a4ae59, 0x7dd8b2ca, 0xe89e80e3,
+    0x7dd78cd3, 0xe898537b,
+  0x7dd6668f, 0xe8922622, 0x7dd53ffc, 0xe88bf8d7, 0x7dd4191d, 0xe885cb9a,
+    0x7dd2f1f0, 0xe87f9e6c,
+  0x7dd1ca75, 0xe879714d, 0x7dd0a2ac, 0xe873443c, 0x7dcf7a96, 0xe86d173a,
+    0x7dce5232, 0xe866ea46,
+  0x7dcd2981, 0xe860bd61, 0x7dcc0082, 0xe85a908a, 0x7dcad736, 0xe85463c2,
+    0x7dc9ad9c, 0xe84e3708,
+  0x7dc883b4, 0xe8480a5d, 0x7dc7597f, 0xe841ddc1, 0x7dc62efc, 0xe83bb133,
+    0x7dc5042b, 0xe83584b4,
+  0x7dc3d90d, 0xe82f5844, 0x7dc2ada2, 0xe8292be3, 0x7dc181e8, 0xe822ff90,
+    0x7dc055e2, 0xe81cd34b,
+  0x7dbf298d, 0xe816a716, 0x7dbdfceb, 0xe8107aef, 0x7dbccffc, 0xe80a4ed7,
+    0x7dbba2bf, 0xe80422ce,
+  0x7dba7534, 0xe7fdf6d4, 0x7db9475c, 0xe7f7cae8, 0x7db81936, 0xe7f19f0c,
+    0x7db6eac3, 0xe7eb733e,
+  0x7db5bc02, 0xe7e5477f, 0x7db48cf4, 0xe7df1bcf, 0x7db35d98, 0xe7d8f02d,
+    0x7db22def, 0xe7d2c49b,
+  0x7db0fdf8, 0xe7cc9917, 0x7dafcdb3, 0xe7c66da3, 0x7dae9d21, 0xe7c0423d,
+    0x7dad6c42, 0xe7ba16e7,
+  0x7dac3b15, 0xe7b3eb9f, 0x7dab099a, 0xe7adc066, 0x7da9d7d2, 0xe7a7953d,
+    0x7da8a5bc, 0xe7a16a22,
+  0x7da77359, 0xe79b3f16, 0x7da640a9, 0xe795141a, 0x7da50dab, 0xe78ee92c,
+    0x7da3da5f, 0xe788be4e,
+  0x7da2a6c6, 0xe782937e, 0x7da172df, 0xe77c68be, 0x7da03eab, 0xe7763e0d,
+    0x7d9f0a29, 0xe770136b,
+  0x7d9dd55a, 0xe769e8d8, 0x7d9ca03e, 0xe763be55, 0x7d9b6ad3, 0xe75d93e0,
+    0x7d9a351c, 0xe757697b,
+  0x7d98ff17, 0xe7513f25, 0x7d97c8c4, 0xe74b14de, 0x7d969224, 0xe744eaa6,
+    0x7d955b37, 0xe73ec07e,
+  0x7d9423fc, 0xe7389665, 0x7d92ec73, 0xe7326c5b, 0x7d91b49e, 0xe72c4260,
+    0x7d907c7a, 0xe7261875,
+  0x7d8f4409, 0xe71fee99, 0x7d8e0b4b, 0xe719c4cd, 0x7d8cd240, 0xe7139b10,
+    0x7d8b98e6, 0xe70d7162,
+  0x7d8a5f40, 0xe70747c4, 0x7d89254c, 0xe7011e35, 0x7d87eb0a, 0xe6faf4b5,
+    0x7d86b07c, 0xe6f4cb45,
+  0x7d85759f, 0xe6eea1e4, 0x7d843a76, 0xe6e87893, 0x7d82fefe, 0xe6e24f51,
+    0x7d81c33a, 0xe6dc261f,
+  0x7d808728, 0xe6d5fcfc, 0x7d7f4ac8, 0xe6cfd3e9, 0x7d7e0e1c, 0xe6c9aae5,
+    0x7d7cd121, 0xe6c381f1,
+  0x7d7b93da, 0xe6bd590d, 0x7d7a5645, 0xe6b73038, 0x7d791862, 0xe6b10772,
+    0x7d77da32, 0xe6aadebc,
+  0x7d769bb5, 0xe6a4b616, 0x7d755cea, 0xe69e8d80, 0x7d741dd2, 0xe69864f9,
+    0x7d72de6d, 0xe6923c82,
+  0x7d719eba, 0xe68c141a, 0x7d705eba, 0xe685ebc2, 0x7d6f1e6c, 0xe67fc37a,
+    0x7d6dddd2, 0xe6799b42,
+  0x7d6c9ce9, 0xe6737319, 0x7d6b5bb4, 0xe66d4b01, 0x7d6a1a31, 0xe66722f7,
+    0x7d68d860, 0xe660fafe,
+  0x7d679642, 0xe65ad315, 0x7d6653d7, 0xe654ab3b, 0x7d65111f, 0xe64e8371,
+    0x7d63ce19, 0xe6485bb7,
+  0x7d628ac6, 0xe642340d, 0x7d614725, 0xe63c0c73, 0x7d600338, 0xe635e4e9,
+    0x7d5ebefc, 0xe62fbd6e,
+  0x7d5d7a74, 0xe6299604, 0x7d5c359e, 0xe6236ea9, 0x7d5af07b, 0xe61d475e,
+    0x7d59ab0a, 0xe6172024,
+  0x7d58654d, 0xe610f8f9, 0x7d571f41, 0xe60ad1de, 0x7d55d8e9, 0xe604aad4,
+    0x7d549243, 0xe5fe83d9,
+  0x7d534b50, 0xe5f85cef, 0x7d520410, 0xe5f23614, 0x7d50bc82, 0xe5ec0f4a,
+    0x7d4f74a7, 0xe5e5e88f,
+  0x7d4e2c7f, 0xe5dfc1e5, 0x7d4ce409, 0xe5d99b4b, 0x7d4b9b46, 0xe5d374c1,
+    0x7d4a5236, 0xe5cd4e47,
+  0x7d4908d9, 0xe5c727dd, 0x7d47bf2e, 0xe5c10184, 0x7d467536, 0xe5badb3a,
+    0x7d452af1, 0xe5b4b501,
+  0x7d43e05e, 0xe5ae8ed8, 0x7d42957e, 0xe5a868bf, 0x7d414a51, 0xe5a242b7,
+    0x7d3ffed7, 0xe59c1cbf,
+  0x7d3eb30f, 0xe595f6d7, 0x7d3d66fa, 0xe58fd0ff, 0x7d3c1a98, 0xe589ab38,
+    0x7d3acde9, 0xe5838581,
+  0x7d3980ec, 0xe57d5fda, 0x7d3833a2, 0xe5773a44, 0x7d36e60b, 0xe57114be,
+    0x7d359827, 0xe56aef49,
+  0x7d3449f5, 0xe564c9e3, 0x7d32fb76, 0xe55ea48f, 0x7d31acaa, 0xe5587f4a,
+    0x7d305d91, 0xe5525a17,
+  0x7d2f0e2b, 0xe54c34f3, 0x7d2dbe77, 0xe5460fe0, 0x7d2c6e76, 0xe53feade,
+    0x7d2b1e28, 0xe539c5ec,
+  0x7d29cd8c, 0xe533a10a, 0x7d287ca4, 0xe52d7c39, 0x7d272b6e, 0xe5275779,
+    0x7d25d9eb, 0xe52132c9,
+  0x7d24881b, 0xe51b0e2a, 0x7d2335fe, 0xe514e99b, 0x7d21e393, 0xe50ec51d,
+    0x7d2090db, 0xe508a0b0,
+  0x7d1f3dd6, 0xe5027c53, 0x7d1dea84, 0xe4fc5807, 0x7d1c96e5, 0xe4f633cc,
+    0x7d1b42f9, 0xe4f00fa1,
+  0x7d19eebf, 0xe4e9eb87, 0x7d189a38, 0xe4e3c77d, 0x7d174564, 0xe4dda385,
+    0x7d15f043, 0xe4d77f9d,
+  0x7d149ad5, 0xe4d15bc6, 0x7d134519, 0xe4cb37ff, 0x7d11ef11, 0xe4c5144a,
+    0x7d1098bb, 0xe4bef0a5,
+  0x7d0f4218, 0xe4b8cd11, 0x7d0deb28, 0xe4b2a98e, 0x7d0c93eb, 0xe4ac861b,
+    0x7d0b3c60, 0xe4a662ba,
+  0x7d09e489, 0xe4a03f69, 0x7d088c64, 0xe49a1c29, 0x7d0733f3, 0xe493f8fb,
+    0x7d05db34, 0xe48dd5dd,
+  0x7d048228, 0xe487b2d0, 0x7d0328cf, 0xe4818fd4, 0x7d01cf29, 0xe47b6ce9,
+    0x7d007535, 0xe4754a0e,
+  0x7cff1af5, 0xe46f2745, 0x7cfdc068, 0xe469048d, 0x7cfc658d, 0xe462e1e6,
+    0x7cfb0a65, 0xe45cbf50,
+  0x7cf9aef0, 0xe4569ccb, 0x7cf8532f, 0xe4507a57, 0x7cf6f720, 0xe44a57f4,
+    0x7cf59ac4, 0xe44435a2,
+  0x7cf43e1a, 0xe43e1362, 0x7cf2e124, 0xe437f132, 0x7cf183e1, 0xe431cf14,
+    0x7cf02651, 0xe42bad07,
+  0x7ceec873, 0xe4258b0a, 0x7ced6a49, 0xe41f6920, 0x7cec0bd1, 0xe4194746,
+    0x7ceaad0c, 0xe413257d,
+  0x7ce94dfb, 0xe40d03c6, 0x7ce7ee9c, 0xe406e220, 0x7ce68ef0, 0xe400c08b,
+    0x7ce52ef7, 0xe3fa9f08,
+  0x7ce3ceb2, 0xe3f47d96, 0x7ce26e1f, 0xe3ee5c35, 0x7ce10d3f, 0xe3e83ae5,
+    0x7cdfac12, 0xe3e219a7,
+  0x7cde4a98, 0xe3dbf87a, 0x7cdce8d1, 0xe3d5d75e, 0x7cdb86bd, 0xe3cfb654,
+    0x7cda245c, 0xe3c9955b,
+  0x7cd8c1ae, 0xe3c37474, 0x7cd75eb3, 0xe3bd539e, 0x7cd5fb6a, 0xe3b732d9,
+    0x7cd497d5, 0xe3b11226,
+  0x7cd333f3, 0xe3aaf184, 0x7cd1cfc4, 0xe3a4d0f4, 0x7cd06b48, 0xe39eb075,
+    0x7ccf067f, 0xe3989008,
+  0x7ccda169, 0xe3926fad, 0x7ccc3c06, 0xe38c4f63, 0x7ccad656, 0xe3862f2a,
+    0x7cc97059, 0xe3800f03,
+  0x7cc80a0f, 0xe379eeed, 0x7cc6a378, 0xe373ceea, 0x7cc53c94, 0xe36daef7,
+    0x7cc3d563, 0xe3678f17,
+  0x7cc26de5, 0xe3616f48, 0x7cc1061a, 0xe35b4f8b, 0x7cbf9e03, 0xe3552fdf,
+    0x7cbe359e, 0xe34f1045,
+  0x7cbcccec, 0xe348f0bd, 0x7cbb63ee, 0xe342d146, 0x7cb9faa2, 0xe33cb1e1,
+    0x7cb8910a, 0xe336928e,
+  0x7cb72724, 0xe330734d, 0x7cb5bcf2, 0xe32a541d, 0x7cb45272, 0xe3243500,
+    0x7cb2e7a6, 0xe31e15f4,
+  0x7cb17c8d, 0xe317f6fa, 0x7cb01127, 0xe311d811, 0x7caea574, 0xe30bb93b,
+    0x7cad3974, 0xe3059a76,
+  0x7cabcd28, 0xe2ff7bc3, 0x7caa608e, 0xe2f95d23, 0x7ca8f3a7, 0xe2f33e94,
+    0x7ca78674, 0xe2ed2017,
+  0x7ca618f3, 0xe2e701ac, 0x7ca4ab26, 0xe2e0e352, 0x7ca33d0c, 0xe2dac50b,
+    0x7ca1cea5, 0xe2d4a6d6,
+  0x7ca05ff1, 0xe2ce88b3, 0x7c9ef0f0, 0xe2c86aa2, 0x7c9d81a3, 0xe2c24ca2,
+    0x7c9c1208, 0xe2bc2eb5,
+  0x7c9aa221, 0xe2b610da, 0x7c9931ec, 0xe2aff311, 0x7c97c16b, 0xe2a9d55a,
+    0x7c96509d, 0xe2a3b7b5,
+  0x7c94df83, 0xe29d9a23, 0x7c936e1b, 0xe2977ca2, 0x7c91fc66, 0xe2915f34,
+    0x7c908a65, 0xe28b41d7,
+  0x7c8f1817, 0xe285248d, 0x7c8da57c, 0xe27f0755, 0x7c8c3294, 0xe278ea30,
+    0x7c8abf5f, 0xe272cd1c,
+  0x7c894bde, 0xe26cb01b, 0x7c87d810, 0xe266932c, 0x7c8663f4, 0xe260764f,
+    0x7c84ef8c, 0xe25a5984,
+  0x7c837ad8, 0xe2543ccc, 0x7c8205d6, 0xe24e2026, 0x7c809088, 0xe2480393,
+    0x7c7f1aed, 0xe241e711,
+  0x7c7da505, 0xe23bcaa2, 0x7c7c2ed0, 0xe235ae46, 0x7c7ab84e, 0xe22f91fc,
+    0x7c794180, 0xe22975c4,
+  0x7c77ca65, 0xe223599e, 0x7c7652fd, 0xe21d3d8b, 0x7c74db48, 0xe217218b,
+    0x7c736347, 0xe211059d,
+  0x7c71eaf9, 0xe20ae9c1, 0x7c70725e, 0xe204cdf8, 0x7c6ef976, 0xe1feb241,
+    0x7c6d8041, 0xe1f8969d,
+  0x7c6c06c0, 0xe1f27b0b, 0x7c6a8cf2, 0xe1ec5f8c, 0x7c6912d7, 0xe1e64420,
+    0x7c679870, 0xe1e028c6,
+  0x7c661dbc, 0xe1da0d7e, 0x7c64a2bb, 0xe1d3f24a, 0x7c63276d, 0xe1cdd727,
+    0x7c61abd3, 0xe1c7bc18,
+  0x7c602fec, 0xe1c1a11b, 0x7c5eb3b8, 0xe1bb8631, 0x7c5d3737, 0xe1b56b59,
+    0x7c5bba6a, 0xe1af5094,
+  0x7c5a3d50, 0xe1a935e2, 0x7c58bfe9, 0xe1a31b42, 0x7c574236, 0xe19d00b6,
+    0x7c55c436, 0xe196e63c,
+  0x7c5445e9, 0xe190cbd4, 0x7c52c74f, 0xe18ab180, 0x7c514869, 0xe184973e,
+    0x7c4fc936, 0xe17e7d0f,
+  0x7c4e49b7, 0xe17862f3, 0x7c4cc9ea, 0xe17248ea, 0x7c4b49d2, 0xe16c2ef4,
+    0x7c49c96c, 0xe1661510,
+  0x7c4848ba, 0xe15ffb3f, 0x7c46c7bb, 0xe159e182, 0x7c45466f, 0xe153c7d7,
+    0x7c43c4d7, 0xe14dae3f,
+  0x7c4242f2, 0xe14794ba, 0x7c40c0c1, 0xe1417b48, 0x7c3f3e42, 0xe13b61e9,
+    0x7c3dbb78, 0xe135489d,
+  0x7c3c3860, 0xe12f2f63, 0x7c3ab4fc, 0xe129163d, 0x7c39314b, 0xe122fd2a,
+    0x7c37ad4e, 0xe11ce42a,
+  0x7c362904, 0xe116cb3d, 0x7c34a46d, 0xe110b263, 0x7c331f8a, 0xe10a999c,
+    0x7c319a5a, 0xe10480e9,
+  0x7c3014de, 0xe0fe6848, 0x7c2e8f15, 0xe0f84fbb, 0x7c2d08ff, 0xe0f23740,
+    0x7c2b829d, 0xe0ec1ed9,
+  0x7c29fbee, 0xe0e60685, 0x7c2874f3, 0xe0dfee44, 0x7c26edab, 0xe0d9d616,
+    0x7c256616, 0xe0d3bdfc,
+  0x7c23de35, 0xe0cda5f5, 0x7c225607, 0xe0c78e01, 0x7c20cd8d, 0xe0c17620,
+    0x7c1f44c6, 0xe0bb5e53,
+  0x7c1dbbb3, 0xe0b54698, 0x7c1c3253, 0xe0af2ef2, 0x7c1aa8a6, 0xe0a9175e,
+    0x7c191ead, 0xe0a2ffde,
+  0x7c179467, 0xe09ce871, 0x7c1609d5, 0xe096d117, 0x7c147ef6, 0xe090b9d1,
+    0x7c12f3cb, 0xe08aa29f,
+  0x7c116853, 0xe0848b7f, 0x7c0fdc8f, 0xe07e7473, 0x7c0e507e, 0xe0785d7b,
+    0x7c0cc421, 0xe0724696,
+  0x7c0b3777, 0xe06c2fc4, 0x7c09aa80, 0xe0661906, 0x7c081d3d, 0xe060025c,
+    0x7c068fae, 0xe059ebc5,
+  0x7c0501d2, 0xe053d541, 0x7c0373a9, 0xe04dbed1, 0x7c01e534, 0xe047a875,
+    0x7c005673, 0xe041922c,
+  0x7bfec765, 0xe03b7bf6, 0x7bfd380a, 0xe03565d5, 0x7bfba863, 0xe02f4fc6,
+    0x7bfa1870, 0xe02939cc,
+  0x7bf88830, 0xe02323e5, 0x7bf6f7a4, 0xe01d0e12, 0x7bf566cb, 0xe016f852,
+    0x7bf3d5a6, 0xe010e2a7,
+  0x7bf24434, 0xe00acd0e, 0x7bf0b276, 0xe004b78a, 0x7bef206b, 0xdffea219,
+    0x7bed8e14, 0xdff88cbc,
+  0x7bebfb70, 0xdff27773, 0x7bea6880, 0xdfec623e, 0x7be8d544, 0xdfe64d1c,
+    0x7be741bb, 0xdfe0380e,
+  0x7be5ade6, 0xdfda2314, 0x7be419c4, 0xdfd40e2e, 0x7be28556, 0xdfcdf95c,
+    0x7be0f09b, 0xdfc7e49d,
+  0x7bdf5b94, 0xdfc1cff3, 0x7bddc641, 0xdfbbbb5c, 0x7bdc30a1, 0xdfb5a6d9,
+    0x7bda9ab5, 0xdfaf926a,
+  0x7bd9047c, 0xdfa97e0f, 0x7bd76df7, 0xdfa369c8, 0x7bd5d726, 0xdf9d5595,
+    0x7bd44008, 0xdf974176,
+  0x7bd2a89e, 0xdf912d6b, 0x7bd110e8, 0xdf8b1974, 0x7bcf78e5, 0xdf850591,
+    0x7bcde095, 0xdf7ef1c2,
+  0x7bcc47fa, 0xdf78de07, 0x7bcaaf12, 0xdf72ca60, 0x7bc915dd, 0xdf6cb6cd,
+    0x7bc77c5d, 0xdf66a34e,
+  0x7bc5e290, 0xdf608fe4, 0x7bc44876, 0xdf5a7c8d, 0x7bc2ae10, 0xdf54694b,
+    0x7bc1135e, 0xdf4e561c,
+  0x7bbf7860, 0xdf484302, 0x7bbddd15, 0xdf422ffd, 0x7bbc417e, 0xdf3c1d0b,
+    0x7bbaa59a, 0xdf360a2d,
+  0x7bb9096b, 0xdf2ff764, 0x7bb76cef, 0xdf29e4af, 0x7bb5d026, 0xdf23d20e,
+    0x7bb43311, 0xdf1dbf82,
+  0x7bb295b0, 0xdf17ad0a, 0x7bb0f803, 0xdf119aa6, 0x7baf5a09, 0xdf0b8856,
+    0x7badbbc3, 0xdf05761b,
+  0x7bac1d31, 0xdeff63f4, 0x7baa7e53, 0xdef951e2, 0x7ba8df28, 0xdef33fe3,
+    0x7ba73fb1, 0xdeed2dfa,
+  0x7ba59fee, 0xdee71c24, 0x7ba3ffde, 0xdee10a63, 0x7ba25f82, 0xdedaf8b7,
+    0x7ba0beda, 0xded4e71f,
+  0x7b9f1de6, 0xdeced59b, 0x7b9d7ca5, 0xdec8c42c, 0x7b9bdb18, 0xdec2b2d1,
+    0x7b9a393f, 0xdebca18b,
+  0x7b989719, 0xdeb69059, 0x7b96f4a8, 0xdeb07f3c, 0x7b9551ea, 0xdeaa6e34,
+    0x7b93aee0, 0xdea45d40,
+  0x7b920b89, 0xde9e4c60, 0x7b9067e7, 0xde983b95, 0x7b8ec3f8, 0xde922adf,
+    0x7b8d1fbd, 0xde8c1a3e,
+  0x7b8b7b36, 0xde8609b1, 0x7b89d662, 0xde7ff938, 0x7b883143, 0xde79e8d5,
+    0x7b868bd7, 0xde73d886,
+  0x7b84e61f, 0xde6dc84b, 0x7b83401b, 0xde67b826, 0x7b8199ca, 0xde61a815,
+    0x7b7ff32e, 0xde5b9819,
+  0x7b7e4c45, 0xde558831, 0x7b7ca510, 0xde4f785f, 0x7b7afd8f, 0xde4968a1,
+    0x7b7955c2, 0xde4358f8,
+  0x7b77ada8, 0xde3d4964, 0x7b760542, 0xde3739e4, 0x7b745c91, 0xde312a7a,
+    0x7b72b393, 0xde2b1b24,
+  0x7b710a49, 0xde250be3, 0x7b6f60b2, 0xde1efcb7, 0x7b6db6d0, 0xde18eda0,
+    0x7b6c0ca2, 0xde12de9e,
+  0x7b6a6227, 0xde0ccfb1, 0x7b68b760, 0xde06c0d9, 0x7b670c4d, 0xde00b216,
+    0x7b6560ee, 0xddfaa367,
+  0x7b63b543, 0xddf494ce, 0x7b62094c, 0xddee8649, 0x7b605d09, 0xdde877da,
+    0x7b5eb079, 0xdde26980,
+  0x7b5d039e, 0xdddc5b3b, 0x7b5b5676, 0xddd64d0a, 0x7b59a902, 0xddd03eef,
+    0x7b57fb42, 0xddca30e9,
+  0x7b564d36, 0xddc422f8, 0x7b549ede, 0xddbe151d, 0x7b52f03a, 0xddb80756,
+    0x7b51414a, 0xddb1f9a4,
+  0x7b4f920e, 0xddabec08, 0x7b4de286, 0xdda5de81, 0x7b4c32b1, 0xdd9fd10f,
+    0x7b4a8291, 0xdd99c3b2,
+  0x7b48d225, 0xdd93b66a, 0x7b47216c, 0xdd8da938, 0x7b457068, 0xdd879c1b,
+    0x7b43bf17, 0xdd818f13,
+  0x7b420d7a, 0xdd7b8220, 0x7b405b92, 0xdd757543, 0x7b3ea95d, 0xdd6f687b,
+    0x7b3cf6dc, 0xdd695bc9,
+  0x7b3b4410, 0xdd634f2b, 0x7b3990f7, 0xdd5d42a3, 0x7b37dd92, 0xdd573631,
+    0x7b3629e1, 0xdd5129d4,
+  0x7b3475e5, 0xdd4b1d8c, 0x7b32c19c, 0xdd451159, 0x7b310d07, 0xdd3f053c,
+    0x7b2f5826, 0xdd38f935,
+  0x7b2da2fa, 0xdd32ed43, 0x7b2bed81, 0xdd2ce166, 0x7b2a37bc, 0xdd26d59f,
+    0x7b2881ac, 0xdd20c9ed,
+  0x7b26cb4f, 0xdd1abe51, 0x7b2514a6, 0xdd14b2ca, 0x7b235db2, 0xdd0ea759,
+    0x7b21a671, 0xdd089bfe,
+  0x7b1feee5, 0xdd0290b8, 0x7b1e370d, 0xdcfc8588, 0x7b1c7ee8, 0xdcf67a6d,
+    0x7b1ac678, 0xdcf06f68,
+  0x7b190dbc, 0xdcea6478, 0x7b1754b3, 0xdce4599e, 0x7b159b5f, 0xdcde4eda,
+    0x7b13e1bf, 0xdcd8442b,
+  0x7b1227d3, 0xdcd23993, 0x7b106d9b, 0xdccc2f0f, 0x7b0eb318, 0xdcc624a2,
+    0x7b0cf848, 0xdcc01a4a,
+  0x7b0b3d2c, 0xdcba1008, 0x7b0981c5, 0xdcb405dc, 0x7b07c612, 0xdcadfbc5,
+    0x7b060a12, 0xdca7f1c5,
+  0x7b044dc7, 0xdca1e7da, 0x7b029130, 0xdc9bde05, 0x7b00d44d, 0xdc95d446,
+    0x7aff171e, 0xdc8fca9c,
+  0x7afd59a4, 0xdc89c109, 0x7afb9bdd, 0xdc83b78b, 0x7af9ddcb, 0xdc7dae23,
+    0x7af81f6c, 0xdc77a4d2,
+  0x7af660c2, 0xdc719b96, 0x7af4a1cc, 0xdc6b9270, 0x7af2e28b, 0xdc658960,
+    0x7af122fd, 0xdc5f8066,
+  0x7aef6323, 0xdc597781, 0x7aeda2fe, 0xdc536eb3, 0x7aebe28d, 0xdc4d65fb,
+    0x7aea21d0, 0xdc475d59,
+  0x7ae860c7, 0xdc4154cd, 0x7ae69f73, 0xdc3b4c57, 0x7ae4ddd2, 0xdc3543f7,
+    0x7ae31be6, 0xdc2f3bad,
+  0x7ae159ae, 0xdc293379, 0x7adf972a, 0xdc232b5c, 0x7addd45b, 0xdc1d2354,
+    0x7adc113f, 0xdc171b63,
+  0x7ada4dd8, 0xdc111388, 0x7ad88a25, 0xdc0b0bc2, 0x7ad6c626, 0xdc050414,
+    0x7ad501dc, 0xdbfefc7b,
+  0x7ad33d45, 0xdbf8f4f8, 0x7ad17863, 0xdbf2ed8c, 0x7acfb336, 0xdbece636,
+    0x7acdedbc, 0xdbe6def6,
+  0x7acc27f7, 0xdbe0d7cd, 0x7aca61e6, 0xdbdad0b9, 0x7ac89b89, 0xdbd4c9bc,
+    0x7ac6d4e0, 0xdbcec2d6,
+  0x7ac50dec, 0xdbc8bc06, 0x7ac346ac, 0xdbc2b54c, 0x7ac17f20, 0xdbbcaea8,
+    0x7abfb749, 0xdbb6a81b,
+  0x7abdef25, 0xdbb0a1a4, 0x7abc26b7, 0xdbaa9b43, 0x7aba5dfc, 0xdba494f9,
+    0x7ab894f6, 0xdb9e8ec6,
+  0x7ab6cba4, 0xdb9888a8, 0x7ab50206, 0xdb9282a2, 0x7ab3381d, 0xdb8c7cb1,
+    0x7ab16de7, 0xdb8676d8,
+  0x7aafa367, 0xdb807114, 0x7aadd89a, 0xdb7a6b68, 0x7aac0d82, 0xdb7465d1,
+    0x7aaa421e, 0xdb6e6052,
+  0x7aa8766f, 0xdb685ae9, 0x7aa6aa74, 0xdb625596, 0x7aa4de2d, 0xdb5c505a,
+    0x7aa3119a, 0xdb564b35,
+  0x7aa144bc, 0xdb504626, 0x7a9f7793, 0xdb4a412e, 0x7a9daa1d, 0xdb443c4c,
+    0x7a9bdc5c, 0xdb3e3781,
+  0x7a9a0e50, 0xdb3832cd, 0x7a983ff7, 0xdb322e30, 0x7a967153, 0xdb2c29a9,
+    0x7a94a264, 0xdb262539,
+  0x7a92d329, 0xdb2020e0, 0x7a9103a2, 0xdb1a1c9d, 0x7a8f33d0, 0xdb141871,
+    0x7a8d63b2, 0xdb0e145c,
+  0x7a8b9348, 0xdb08105e, 0x7a89c293, 0xdb020c77, 0x7a87f192, 0xdafc08a6,
+    0x7a862046, 0xdaf604ec,
+  0x7a844eae, 0xdaf00149, 0x7a827ccb, 0xdae9fdbd, 0x7a80aa9c, 0xdae3fa48,
+    0x7a7ed821, 0xdaddf6ea,
+  0x7a7d055b, 0xdad7f3a2, 0x7a7b3249, 0xdad1f072, 0x7a795eec, 0xdacbed58,
+    0x7a778b43, 0xdac5ea56,
+  0x7a75b74f, 0xdabfe76a, 0x7a73e30f, 0xdab9e495, 0x7a720e84, 0xdab3e1d8,
+    0x7a7039ad, 0xdaaddf31,
+  0x7a6e648a, 0xdaa7dca1, 0x7a6c8f1c, 0xdaa1da29, 0x7a6ab963, 0xda9bd7c7,
+    0x7a68e35e, 0xda95d57d,
+  0x7a670d0d, 0xda8fd349, 0x7a653671, 0xda89d12d, 0x7a635f8a, 0xda83cf28,
+    0x7a618857, 0xda7dcd3a,
+  0x7a5fb0d8, 0xda77cb63, 0x7a5dd90e, 0xda71c9a3, 0x7a5c00f9, 0xda6bc7fa,
+    0x7a5a2898, 0xda65c669,
+  0x7a584feb, 0xda5fc4ef, 0x7a5676f3, 0xda59c38c, 0x7a549db0, 0xda53c240,
+    0x7a52c421, 0xda4dc10b,
+  0x7a50ea47, 0xda47bfee, 0x7a4f1021, 0xda41bee8, 0x7a4d35b0, 0xda3bbdf9,
+    0x7a4b5af3, 0xda35bd22,
+  0x7a497feb, 0xda2fbc61, 0x7a47a498, 0xda29bbb9, 0x7a45c8f9, 0xda23bb27,
+    0x7a43ed0e, 0xda1dbaad,
+  0x7a4210d8, 0xda17ba4a, 0x7a403457, 0xda11b9ff, 0x7a3e578b, 0xda0bb9cb,
+    0x7a3c7a73, 0xda05b9ae,
+  0x7a3a9d0f, 0xd9ffb9a9, 0x7a38bf60, 0xd9f9b9bb, 0x7a36e166, 0xd9f3b9e5,
+    0x7a350321, 0xd9edba26,
+  0x7a332490, 0xd9e7ba7f, 0x7a3145b3, 0xd9e1baef, 0x7a2f668c, 0xd9dbbb77,
+    0x7a2d8719, 0xd9d5bc16,
+  0x7a2ba75a, 0xd9cfbccd, 0x7a29c750, 0xd9c9bd9b, 0x7a27e6fb, 0xd9c3be81,
+    0x7a26065b, 0xd9bdbf7e,
+  0x7a24256f, 0xd9b7c094, 0x7a224437, 0xd9b1c1c0, 0x7a2062b5, 0xd9abc305,
+    0x7a1e80e7, 0xd9a5c461,
+  0x7a1c9ece, 0xd99fc5d4, 0x7a1abc69, 0xd999c75f, 0x7a18d9b9, 0xd993c902,
+    0x7a16f6be, 0xd98dcabd,
+  0x7a151378, 0xd987cc90, 0x7a132fe6, 0xd981ce7a, 0x7a114c09, 0xd97bd07c,
+    0x7a0f67e0, 0xd975d295,
+  0x7a0d836d, 0xd96fd4c7, 0x7a0b9eae, 0xd969d710, 0x7a09b9a4, 0xd963d971,
+    0x7a07d44e, 0xd95ddbea,
+  0x7a05eead, 0xd957de7a, 0x7a0408c1, 0xd951e123, 0x7a02228a, 0xd94be3e3,
+    0x7a003c07, 0xd945e6bb,
+  0x79fe5539, 0xd93fe9ab, 0x79fc6e20, 0xd939ecb3, 0x79fa86bc, 0xd933efd3,
+    0x79f89f0c, 0xd92df30b,
+  0x79f6b711, 0xd927f65b, 0x79f4cecb, 0xd921f9c3, 0x79f2e63a, 0xd91bfd43,
+    0x79f0fd5d, 0xd91600da,
+  0x79ef1436, 0xd910048a, 0x79ed2ac3, 0xd90a0852, 0x79eb4105, 0xd9040c32,
+    0x79e956fb, 0xd8fe1029,
+  0x79e76ca7, 0xd8f81439, 0x79e58207, 0xd8f21861, 0x79e3971c, 0xd8ec1ca1,
+    0x79e1abe6, 0xd8e620fa,
+  0x79dfc064, 0xd8e0256a, 0x79ddd498, 0xd8da29f2, 0x79dbe880, 0xd8d42e93,
+    0x79d9fc1d, 0xd8ce334c,
+  0x79d80f6f, 0xd8c8381d, 0x79d62276, 0xd8c23d06, 0x79d43532, 0xd8bc4207,
+    0x79d247a2, 0xd8b64720,
+  0x79d059c8, 0xd8b04c52, 0x79ce6ba2, 0xd8aa519c, 0x79cc7d31, 0xd8a456ff,
+    0x79ca8e75, 0xd89e5c79,
+  0x79c89f6e, 0xd898620c, 0x79c6b01b, 0xd89267b7, 0x79c4c07e, 0xd88c6d7b,
+    0x79c2d095, 0xd8867356,
+  0x79c0e062, 0xd880794b, 0x79beefe3, 0xd87a7f57, 0x79bcff19, 0xd874857c,
+    0x79bb0e04, 0xd86e8bb9,
+  0x79b91ca4, 0xd868920f, 0x79b72af9, 0xd862987d, 0x79b53903, 0xd85c9f04,
+    0x79b346c2, 0xd856a5a3,
+  0x79b15435, 0xd850ac5a, 0x79af615e, 0xd84ab32a, 0x79ad6e3c, 0xd844ba13,
+    0x79ab7ace, 0xd83ec114,
+  0x79a98715, 0xd838c82d, 0x79a79312, 0xd832cf5f, 0x79a59ec3, 0xd82cd6aa,
+    0x79a3aa29, 0xd826de0d,
+  0x79a1b545, 0xd820e589, 0x799fc015, 0xd81aed1d, 0x799dca9a, 0xd814f4ca,
+    0x799bd4d4, 0xd80efc8f,
+  0x7999dec4, 0xd809046e, 0x7997e868, 0xd8030c64, 0x7995f1c1, 0xd7fd1474,
+    0x7993facf, 0xd7f71c9c,
+  0x79920392, 0xd7f124dd, 0x79900c0a, 0xd7eb2d37, 0x798e1438, 0xd7e535a9,
+    0x798c1c1a, 0xd7df3e34,
+  0x798a23b1, 0xd7d946d8, 0x79882afd, 0xd7d34f94, 0x798631ff, 0xd7cd586a,
+    0x798438b5, 0xd7c76158,
+  0x79823f20, 0xd7c16a5f, 0x79804541, 0xd7bb737f, 0x797e4b16, 0xd7b57cb7,
+    0x797c50a1, 0xd7af8609,
+  0x797a55e0, 0xd7a98f73, 0x79785ad5, 0xd7a398f6, 0x79765f7f, 0xd79da293,
+    0x797463de, 0xd797ac48,
+  0x797267f2, 0xd791b616, 0x79706bbb, 0xd78bbffc, 0x796e6f39, 0xd785c9fc,
+    0x796c726c, 0xd77fd415,
+  0x796a7554, 0xd779de47, 0x796877f1, 0xd773e892, 0x79667a44, 0xd76df2f6,
+    0x79647c4c, 0xd767fd72,
+  0x79627e08, 0xd7620808, 0x79607f7a, 0xd75c12b7, 0x795e80a1, 0xd7561d7f,
+    0x795c817d, 0xd7502860,
+  0x795a820e, 0xd74a335b, 0x79588255, 0xd7443e6e, 0x79568250, 0xd73e499a,
+    0x79548201, 0xd73854e0,
+  0x79528167, 0xd732603f, 0x79508082, 0xd72c6bb6, 0x794e7f52, 0xd7267748,
+    0x794c7dd7, 0xd72082f2,
+  0x794a7c12, 0xd71a8eb5, 0x79487a01, 0xd7149a92, 0x794677a6, 0xd70ea688,
+    0x79447500, 0xd708b297,
+  0x79427210, 0xd702bec0, 0x79406ed4, 0xd6fccb01, 0x793e6b4e, 0xd6f6d75d,
+    0x793c677d, 0xd6f0e3d1,
+  0x793a6361, 0xd6eaf05f, 0x79385efa, 0xd6e4fd06, 0x79365a49, 0xd6df09c6,
+    0x7934554d, 0xd6d916a0,
+  0x79325006, 0xd6d32393, 0x79304a74, 0xd6cd30a0, 0x792e4497, 0xd6c73dc6,
+    0x792c3e70, 0xd6c14b05,
+  0x792a37fe, 0xd6bb585e, 0x79283141, 0xd6b565d0, 0x79262a3a, 0xd6af735c,
+    0x792422e8, 0xd6a98101,
+  0x79221b4b, 0xd6a38ec0, 0x79201363, 0xd69d9c98, 0x791e0b31, 0xd697aa8a,
+    0x791c02b4, 0xd691b895,
+  0x7919f9ec, 0xd68bc6ba, 0x7917f0d9, 0xd685d4f9, 0x7915e77c, 0xd67fe351,
+    0x7913ddd4, 0xd679f1c2,
+  0x7911d3e2, 0xd674004e, 0x790fc9a4, 0xd66e0ef2, 0x790dbf1d, 0xd6681db1,
+    0x790bb44a, 0xd6622c89,
+  0x7909a92d, 0xd65c3b7b, 0x79079dc5, 0xd6564a87, 0x79059212, 0xd65059ac,
+    0x79038615, 0xd64a68eb,
+  0x790179cd, 0xd6447844, 0x78ff6d3b, 0xd63e87b6, 0x78fd605d, 0xd6389742,
+    0x78fb5336, 0xd632a6e8,
+  0x78f945c3, 0xd62cb6a8, 0x78f73806, 0xd626c681, 0x78f529fe, 0xd620d675,
+    0x78f31bac, 0xd61ae682,
+  0x78f10d0f, 0xd614f6a9, 0x78eefe28, 0xd60f06ea, 0x78eceef6, 0xd6091745,
+    0x78eadf79, 0xd60327b9,
+  0x78e8cfb2, 0xd5fd3848, 0x78e6bfa0, 0xd5f748f0, 0x78e4af44, 0xd5f159b3,
+    0x78e29e9d, 0xd5eb6a8f,
+  0x78e08dab, 0xd5e57b85, 0x78de7c6f, 0xd5df8c96, 0x78dc6ae8, 0xd5d99dc0,
+    0x78da5917, 0xd5d3af04,
+  0x78d846fb, 0xd5cdc062, 0x78d63495, 0xd5c7d1db, 0x78d421e4, 0xd5c1e36d,
+    0x78d20ee9, 0xd5bbf519,
+  0x78cffba3, 0xd5b606e0, 0x78cde812, 0xd5b018c0, 0x78cbd437, 0xd5aa2abb,
+    0x78c9c012, 0xd5a43cd0,
+  0x78c7aba2, 0xd59e4eff, 0x78c596e7, 0xd5986148, 0x78c381e2, 0xd59273ab,
+    0x78c16c93, 0xd58c8628,
+  0x78bf56f9, 0xd58698c0, 0x78bd4114, 0xd580ab72, 0x78bb2ae5, 0xd57abe3d,
+    0x78b9146c, 0xd574d124,
+  0x78b6fda8, 0xd56ee424, 0x78b4e69a, 0xd568f73f, 0x78b2cf41, 0xd5630a74,
+    0x78b0b79e, 0xd55d1dc3,
+  0x78ae9fb0, 0xd557312d, 0x78ac8778, 0xd55144b0, 0x78aa6ef5, 0xd54b584f,
+    0x78a85628, 0xd5456c07,
+  0x78a63d11, 0xd53f7fda, 0x78a423af, 0xd53993c7, 0x78a20a03, 0xd533a7cf,
+    0x789ff00c, 0xd52dbbf1,
+  0x789dd5cb, 0xd527d02e, 0x789bbb3f, 0xd521e484, 0x7899a06a, 0xd51bf8f6,
+    0x78978549, 0xd5160d82,
+  0x789569df, 0xd5102228, 0x78934e2a, 0xd50a36e9, 0x7891322a, 0xd5044bc4,
+    0x788f15e0, 0xd4fe60ba,
+  0x788cf94c, 0xd4f875ca, 0x788adc6e, 0xd4f28af5, 0x7888bf45, 0xd4eca03a,
+    0x7886a1d1, 0xd4e6b59a,
+  0x78848414, 0xd4e0cb15, 0x7882660c, 0xd4dae0aa, 0x788047ba, 0xd4d4f65a,
+    0x787e291d, 0xd4cf0c24,
+  0x787c0a36, 0xd4c92209, 0x7879eb05, 0xd4c33809, 0x7877cb89, 0xd4bd4e23,
+    0x7875abc3, 0xd4b76458,
+  0x78738bb3, 0xd4b17aa8, 0x78716b59, 0xd4ab9112, 0x786f4ab4, 0xd4a5a798,
+    0x786d29c5, 0xd49fbe37,
+  0x786b088c, 0xd499d4f2, 0x7868e708, 0xd493ebc8, 0x7866c53a, 0xd48e02b8,
+    0x7864a322, 0xd48819c3,
+  0x786280bf, 0xd48230e9, 0x78605e13, 0xd47c4829, 0x785e3b1c, 0xd4765f85,
+    0x785c17db, 0xd47076fb,
+  0x7859f44f, 0xd46a8e8d, 0x7857d079, 0xd464a639, 0x7855ac5a, 0xd45ebe00,
+    0x785387ef, 0xd458d5e2,
+  0x7851633b, 0xd452eddf, 0x784f3e3c, 0xd44d05f6, 0x784d18f4, 0xd4471e29,
+    0x784af361, 0xd4413677,
+  0x7848cd83, 0xd43b4ee0, 0x7846a75c, 0xd4356763, 0x784480ea, 0xd42f8002,
+    0x78425a2f, 0xd42998bc,
+  0x78403329, 0xd423b191, 0x783e0bd9, 0xd41dca81, 0x783be43e, 0xd417e38c,
+    0x7839bc5a, 0xd411fcb2,
+  0x7837942b, 0xd40c15f3, 0x78356bb2, 0xd4062f4f, 0x783342ef, 0xd40048c6,
+    0x783119e2, 0xd3fa6259,
+  0x782ef08b, 0xd3f47c06, 0x782cc6ea, 0xd3ee95cf, 0x782a9cfe, 0xd3e8afb3,
+    0x782872c8, 0xd3e2c9b2,
+  0x78264849, 0xd3dce3cd, 0x78241d7f, 0xd3d6fe03, 0x7821f26b, 0xd3d11853,
+    0x781fc70d, 0xd3cb32c0,
+  0x781d9b65, 0xd3c54d47, 0x781b6f72, 0xd3bf67ea, 0x78194336, 0xd3b982a8,
+    0x781716b0, 0xd3b39d81,
+  0x7814e9df, 0xd3adb876, 0x7812bcc4, 0xd3a7d385, 0x78108f60, 0xd3a1eeb1,
+    0x780e61b1, 0xd39c09f7,
+  0x780c33b8, 0xd396255a, 0x780a0575, 0xd39040d7, 0x7807d6e9, 0xd38a5c70,
+    0x7805a812, 0xd3847824,
+  0x780378f1, 0xd37e93f4, 0x78014986, 0xd378afdf, 0x77ff19d1, 0xd372cbe6,
+    0x77fce9d2, 0xd36ce808,
+  0x77fab989, 0xd3670446, 0x77f888f6, 0xd361209f, 0x77f65819, 0xd35b3d13,
+    0x77f426f2, 0xd35559a4,
+  0x77f1f581, 0xd34f764f, 0x77efc3c5, 0xd3499317, 0x77ed91c0, 0xd343affa,
+    0x77eb5f71, 0xd33dccf8,
+  0x77e92cd9, 0xd337ea12, 0x77e6f9f6, 0xd3320748, 0x77e4c6c9, 0xd32c2499,
+    0x77e29352, 0xd3264206,
+  0x77e05f91, 0xd3205f8f, 0x77de2b86, 0xd31a7d33, 0x77dbf732, 0xd3149af3,
+    0x77d9c293, 0xd30eb8cf,
+  0x77d78daa, 0xd308d6c7, 0x77d55878, 0xd302f4da, 0x77d322fc, 0xd2fd1309,
+    0x77d0ed35, 0xd2f73154,
+  0x77ceb725, 0xd2f14fba, 0x77cc80cb, 0xd2eb6e3c, 0x77ca4a27, 0xd2e58cdb,
+    0x77c81339, 0xd2dfab95,
+  0x77c5dc01, 0xd2d9ca6a, 0x77c3a47f, 0xd2d3e95c, 0x77c16cb4, 0xd2ce0869,
+    0x77bf349f, 0xd2c82793,
+  0x77bcfc3f, 0xd2c246d8, 0x77bac396, 0xd2bc6639, 0x77b88aa3, 0xd2b685b6,
+    0x77b65166, 0xd2b0a54f,
+  0x77b417df, 0xd2aac504, 0x77b1de0f, 0xd2a4e4d5, 0x77afa3f5, 0xd29f04c2,
+    0x77ad6990, 0xd29924cb,
+  0x77ab2ee2, 0xd29344f0, 0x77a8f3ea, 0xd28d6531, 0x77a6b8a9, 0xd287858e,
+    0x77a47d1d, 0xd281a607,
+  0x77a24148, 0xd27bc69c, 0x77a00529, 0xd275e74d, 0x779dc8c0, 0xd270081b,
+    0x779b8c0e, 0xd26a2904,
+  0x77994f11, 0xd2644a0a, 0x779711cb, 0xd25e6b2b, 0x7794d43b, 0xd2588c69,
+    0x77929661, 0xd252adc3,
+  0x7790583e, 0xd24ccf39, 0x778e19d0, 0xd246f0cb, 0x778bdb19, 0xd241127a,
+    0x77899c19, 0xd23b3444,
+  0x77875cce, 0xd235562b, 0x77851d3a, 0xd22f782f, 0x7782dd5c, 0xd2299a4e,
+    0x77809d35, 0xd223bc8a,
+  0x777e5cc3, 0xd21ddee2, 0x777c1c08, 0xd2180156, 0x7779db03, 0xd21223e7,
+    0x777799b5, 0xd20c4694,
+  0x7775581d, 0xd206695d, 0x7773163b, 0xd2008c43, 0x7770d40f, 0xd1faaf45,
+    0x776e919a, 0xd1f4d263,
+  0x776c4edb, 0xd1eef59e, 0x776a0bd3, 0xd1e918f5, 0x7767c880, 0xd1e33c69,
+    0x776584e5, 0xd1dd5ff9,
+  0x776340ff, 0xd1d783a6, 0x7760fcd0, 0xd1d1a76f, 0x775eb857, 0xd1cbcb54,
+    0x775c7395, 0xd1c5ef56,
+  0x775a2e89, 0xd1c01375, 0x7757e933, 0xd1ba37b0, 0x7755a394, 0xd1b45c08,
+    0x77535dab, 0xd1ae807c,
+  0x77511778, 0xd1a8a50d, 0x774ed0fc, 0xd1a2c9ba, 0x774c8a36, 0xd19cee84,
+    0x774a4327, 0xd197136b,
+  0x7747fbce, 0xd191386e, 0x7745b42c, 0xd18b5d8e, 0x77436c40, 0xd18582ca,
+    0x7741240a, 0xd17fa823,
+  0x773edb8b, 0xd179cd99, 0x773c92c2, 0xd173f32c, 0x773a49b0, 0xd16e18db,
+    0x77380054, 0xd1683ea7,
+  0x7735b6af, 0xd1626490, 0x77336cc0, 0xd15c8a95, 0x77312287, 0xd156b0b7,
+    0x772ed805, 0xd150d6f6,
+  0x772c8d3a, 0xd14afd52, 0x772a4225, 0xd14523cb, 0x7727f6c6, 0xd13f4a60,
+    0x7725ab1f, 0xd1397113,
+  0x77235f2d, 0xd13397e2, 0x772112f2, 0xd12dbece, 0x771ec66e, 0xd127e5d7,
+    0x771c79a0, 0xd1220cfc,
+  0x771a2c88, 0xd11c343f, 0x7717df27, 0xd1165b9f, 0x7715917d, 0xd110831b,
+    0x77134389, 0xd10aaab5,
+  0x7710f54c, 0xd104d26b, 0x770ea6c5, 0xd0fefa3f, 0x770c57f5, 0xd0f9222f,
+    0x770a08dc, 0xd0f34a3d,
+  0x7707b979, 0xd0ed7267, 0x770569cc, 0xd0e79aaf, 0x770319d6, 0xd0e1c313,
+    0x7700c997, 0xd0dbeb95,
+  0x76fe790e, 0xd0d61434, 0x76fc283c, 0xd0d03cf0, 0x76f9d721, 0xd0ca65c9,
+    0x76f785bc, 0xd0c48ebf,
+  0x76f5340e, 0xd0beb7d2, 0x76f2e216, 0xd0b8e102, 0x76f08fd5, 0xd0b30a50,
+    0x76ee3d4b, 0xd0ad33ba,
+  0x76ebea77, 0xd0a75d42, 0x76e9975a, 0xd0a186e7, 0x76e743f4, 0xd09bb0aa,
+    0x76e4f044, 0xd095da89,
+  0x76e29c4b, 0xd0900486, 0x76e04808, 0xd08a2ea0, 0x76ddf37c, 0xd08458d7,
+    0x76db9ea7, 0xd07e832c,
+  0x76d94989, 0xd078ad9e, 0x76d6f421, 0xd072d82d, 0x76d49e70, 0xd06d02da,
+    0x76d24876, 0xd0672da3,
+  0x76cff232, 0xd061588b, 0x76cd9ba5, 0xd05b838f, 0x76cb44cf, 0xd055aeb1,
+    0x76c8edb0, 0xd04fd9f1,
+  0x76c69647, 0xd04a054e, 0x76c43e95, 0xd04430c8, 0x76c1e699, 0xd03e5c60,
+    0x76bf8e55, 0xd0388815,
+  0x76bd35c7, 0xd032b3e7, 0x76badcf0, 0xd02cdfd8, 0x76b883d0, 0xd0270be5,
+    0x76b62a66, 0xd0213810,
+  0x76b3d0b4, 0xd01b6459, 0x76b176b8, 0xd01590bf, 0x76af1c72, 0xd00fbd43,
+    0x76acc1e4, 0xd009e9e4,
+  0x76aa670d, 0xd00416a3, 0x76a80bec, 0xcffe4380, 0x76a5b082, 0xcff8707a,
+    0x76a354cf, 0xcff29d92,
+  0x76a0f8d2, 0xcfeccac7, 0x769e9c8d, 0xcfe6f81a, 0x769c3ffe, 0xcfe1258b,
+    0x7699e326, 0xcfdb531a,
+  0x76978605, 0xcfd580c6, 0x7695289b, 0xcfcfae8f, 0x7692cae8, 0xcfc9dc77,
+    0x76906ceb, 0xcfc40a7c,
+  0x768e0ea6, 0xcfbe389f, 0x768bb017, 0xcfb866e0, 0x7689513f, 0xcfb2953f,
+    0x7686f21e, 0xcfacc3bb,
+  0x768492b4, 0xcfa6f255, 0x76823301, 0xcfa1210d, 0x767fd304, 0xcf9b4fe3,
+    0x767d72bf, 0xcf957ed7,
+  0x767b1231, 0xcf8fade9, 0x7678b159, 0xcf89dd18, 0x76765038, 0xcf840c65,
+    0x7673eecf, 0xcf7e3bd1,
+  0x76718d1c, 0xcf786b5a, 0x766f2b20, 0xcf729b01, 0x766cc8db, 0xcf6ccac6,
+    0x766a664d, 0xcf66faa9,
+  0x76680376, 0xcf612aaa, 0x7665a056, 0xcf5b5ac9, 0x76633ced, 0xcf558b06,
+    0x7660d93b, 0xcf4fbb61,
+  0x765e7540, 0xcf49ebda, 0x765c10fc, 0xcf441c71, 0x7659ac6f, 0xcf3e4d26,
+    0x76574798, 0xcf387dfa,
+  0x7654e279, 0xcf32aeeb, 0x76527d11, 0xcf2cdffa, 0x76501760, 0xcf271128,
+    0x764db166, 0xcf214274,
+  0x764b4b23, 0xcf1b73de, 0x7648e497, 0xcf15a566, 0x76467dc2, 0xcf0fd70c,
+    0x764416a4, 0xcf0a08d0,
+  0x7641af3d, 0xcf043ab3, 0x763f478d, 0xcefe6cb3, 0x763cdf94, 0xcef89ed2,
+    0x763a7752, 0xcef2d110,
+  0x76380ec8, 0xceed036b, 0x7635a5f4, 0xcee735e5, 0x76333cd8, 0xcee1687d,
+    0x7630d372, 0xcedb9b33,
+  0x762e69c4, 0xced5ce08, 0x762bffcd, 0xced000fb, 0x7629958c, 0xceca340c,
+    0x76272b03, 0xcec4673c,
+  0x7624c031, 0xcebe9a8a, 0x76225517, 0xceb8cdf7, 0x761fe9b3, 0xceb30181,
+    0x761d7e06, 0xcead352b,
+  0x761b1211, 0xcea768f2, 0x7618a5d3, 0xcea19cd8, 0x7616394c, 0xce9bd0dd,
+    0x7613cc7c, 0xce960500,
+  0x76115f63, 0xce903942, 0x760ef201, 0xce8a6da2, 0x760c8457, 0xce84a220,
+    0x760a1664, 0xce7ed6bd,
+  0x7607a828, 0xce790b79, 0x760539a3, 0xce734053, 0x7602cad5, 0xce6d754c,
+    0x76005bbf, 0xce67aa63,
+  0x75fdec60, 0xce61df99, 0x75fb7cb8, 0xce5c14ed, 0x75f90cc7, 0xce564a60,
+    0x75f69c8d, 0xce507ff2,
+  0x75f42c0b, 0xce4ab5a2, 0x75f1bb40, 0xce44eb71, 0x75ef4a2c, 0xce3f215f,
+    0x75ecd8cf, 0xce39576c,
+  0x75ea672a, 0xce338d97, 0x75e7f53c, 0xce2dc3e1, 0x75e58305, 0xce27fa49,
+    0x75e31086, 0xce2230d0,
+  0x75e09dbd, 0xce1c6777, 0x75de2aac, 0xce169e3b, 0x75dbb753, 0xce10d51f,
+    0x75d943b0, 0xce0b0c21,
+  0x75d6cfc5, 0xce054343, 0x75d45b92, 0xcdff7a83, 0x75d1e715, 0xcdf9b1e2,
+    0x75cf7250, 0xcdf3e95f,
+  0x75ccfd42, 0xcdee20fc, 0x75ca87ec, 0xcde858b8, 0x75c8124d, 0xcde29092,
+    0x75c59c65, 0xcddcc88b,
+  0x75c32634, 0xcdd700a4, 0x75c0afbb, 0xcdd138db, 0x75be38fa, 0xcdcb7131,
+    0x75bbc1ef, 0xcdc5a9a6,
+  0x75b94a9c, 0xcdbfe23a, 0x75b6d301, 0xcdba1aee, 0x75b45b1d, 0xcdb453c0,
+    0x75b1e2f0, 0xcdae8cb1,
+  0x75af6a7b, 0xcda8c5c1, 0x75acf1bd, 0xcda2fef0, 0x75aa78b6, 0xcd9d383f,
+    0x75a7ff67, 0xcd9771ac,
+  0x75a585cf, 0xcd91ab39, 0x75a30bef, 0xcd8be4e4, 0x75a091c6, 0xcd861eaf,
+    0x759e1755, 0xcd805899,
+  0x759b9c9b, 0xcd7a92a2, 0x75992198, 0xcd74ccca, 0x7596a64d, 0xcd6f0711,
+    0x75942ab9, 0xcd694178,
+  0x7591aedd, 0xcd637bfe, 0x758f32b9, 0xcd5db6a3, 0x758cb64c, 0xcd57f167,
+    0x758a3996, 0xcd522c4a,
+  0x7587bc98, 0xcd4c674d, 0x75853f51, 0xcd46a26f, 0x7582c1c2, 0xcd40ddb0,
+    0x758043ea, 0xcd3b1911,
+  0x757dc5ca, 0xcd355491, 0x757b4762, 0xcd2f9030, 0x7578c8b0, 0xcd29cbee,
+    0x757649b7, 0xcd2407cc,
+  0x7573ca75, 0xcd1e43ca, 0x75714aea, 0xcd187fe6, 0x756ecb18, 0xcd12bc22,
+    0x756c4afc, 0xcd0cf87e,
+  0x7569ca99, 0xcd0734f9, 0x756749ec, 0xcd017193, 0x7564c8f8, 0xccfbae4d,
+    0x756247bb, 0xccf5eb26,
+  0x755fc635, 0xccf0281f, 0x755d4467, 0xccea6538, 0x755ac251, 0xcce4a26f,
+    0x75583ff3, 0xccdedfc7,
+  0x7555bd4c, 0xccd91d3d, 0x75533a5c, 0xccd35ad4, 0x7550b725, 0xcccd988a,
+    0x754e33a4, 0xccc7d65f,
+  0x754bafdc, 0xccc21455, 0x75492bcb, 0xccbc5269, 0x7546a772, 0xccb6909e,
+    0x754422d0, 0xccb0cef2,
+  0x75419de7, 0xccab0d65, 0x753f18b4, 0xcca54bf9, 0x753c933a, 0xcc9f8aac,
+    0x753a0d77, 0xcc99c97e,
+  0x7537876c, 0xcc940871, 0x75350118, 0xcc8e4783, 0x75327a7d, 0xcc8886b5,
+    0x752ff399, 0xcc82c607,
+  0x752d6c6c, 0xcc7d0578, 0x752ae4f8, 0xcc774509, 0x75285d3b, 0xcc7184ba,
+    0x7525d536, 0xcc6bc48b,
+  0x75234ce8, 0xcc66047b, 0x7520c453, 0xcc60448c, 0x751e3b75, 0xcc5a84bc,
+    0x751bb24f, 0xcc54c50c,
+  0x751928e0, 0xcc4f057c, 0x75169f2a, 0xcc49460c, 0x7514152b, 0xcc4386bc,
+    0x75118ae4, 0xcc3dc78b,
+  0x750f0054, 0xcc38087b, 0x750c757d, 0xcc32498a, 0x7509ea5d, 0xcc2c8aba,
+    0x75075ef5, 0xcc26cc09,
+  0x7504d345, 0xcc210d79, 0x7502474d, 0xcc1b4f08, 0x74ffbb0d, 0xcc1590b8,
+    0x74fd2e84, 0xcc0fd287,
+  0x74faa1b3, 0xcc0a1477, 0x74f8149a, 0xcc045686, 0x74f58739, 0xcbfe98b6,
+    0x74f2f990, 0xcbf8db05,
+  0x74f06b9e, 0xcbf31d75, 0x74eddd65, 0xcbed6005, 0x74eb4ee3, 0xcbe7a2b5,
+    0x74e8c01a, 0xcbe1e585,
+  0x74e63108, 0xcbdc2876, 0x74e3a1ae, 0xcbd66b86, 0x74e1120c, 0xcbd0aeb7,
+    0x74de8221, 0xcbcaf208,
+  0x74dbf1ef, 0xcbc53579, 0x74d96175, 0xcbbf790a, 0x74d6d0b2, 0xcbb9bcbb,
+    0x74d43fa8, 0xcbb4008d,
+  0x74d1ae55, 0xcbae447f, 0x74cf1cbb, 0xcba88891, 0x74cc8ad8, 0xcba2ccc4,
+    0x74c9f8ad, 0xcb9d1117,
+  0x74c7663a, 0xcb97558a, 0x74c4d380, 0xcb919a1d, 0x74c2407d, 0xcb8bded1,
+    0x74bfad32, 0xcb8623a5,
+  0x74bd199f, 0xcb80689a, 0x74ba85c4, 0xcb7aadaf, 0x74b7f1a1, 0xcb74f2e4,
+    0x74b55d36, 0xcb6f383a,
+  0x74b2c884, 0xcb697db0, 0x74b03389, 0xcb63c347, 0x74ad9e46, 0xcb5e08fe,
+    0x74ab08bb, 0xcb584ed6,
+  0x74a872e8, 0xcb5294ce, 0x74a5dccd, 0xcb4cdae6, 0x74a3466b, 0xcb47211f,
+    0x74a0afc0, 0xcb416779,
+  0x749e18cd, 0xcb3badf3, 0x749b8193, 0xcb35f48d, 0x7498ea11, 0xcb303b49,
+    0x74965246, 0xcb2a8224,
+  0x7493ba34, 0xcb24c921, 0x749121da, 0xcb1f103e, 0x748e8938, 0xcb19577b,
+    0x748bf04d, 0xcb139ed9,
+  0x7489571c, 0xcb0de658, 0x7486bda2, 0xcb082df8, 0x748423e0, 0xcb0275b8,
+    0x748189d7, 0xcafcbd99,
+  0x747eef85, 0xcaf7059a, 0x747c54ec, 0xcaf14dbd, 0x7479ba0b, 0xcaeb9600,
+    0x74771ee2, 0xcae5de64,
+  0x74748371, 0xcae026e8, 0x7471e7b8, 0xcada6f8d, 0x746f4bb8, 0xcad4b853,
+    0x746caf70, 0xcacf013a,
+  0x746a12df, 0xcac94a42, 0x74677608, 0xcac3936b, 0x7464d8e8, 0xcabddcb4,
+    0x74623b80, 0xcab8261e,
+  0x745f9dd1, 0xcab26fa9, 0x745cffda, 0xcaacb955, 0x745a619b, 0xcaa70322,
+    0x7457c314, 0xcaa14d10,
+  0x74552446, 0xca9b971e, 0x74528530, 0xca95e14e, 0x744fe5d2, 0xca902b9f,
+    0x744d462c, 0xca8a7610,
+  0x744aa63f, 0xca84c0a3, 0x7448060a, 0xca7f0b56, 0x7445658d, 0xca79562b,
+    0x7442c4c8, 0xca73a120,
+  0x744023bc, 0xca6dec37, 0x743d8268, 0xca68376e, 0x743ae0cc, 0xca6282c7,
+    0x74383ee9, 0xca5cce40,
+  0x74359cbd, 0xca5719db, 0x7432fa4b, 0xca516597, 0x74305790, 0xca4bb174,
+    0x742db48e, 0xca45fd72,
+  0x742b1144, 0xca404992, 0x74286db3, 0xca3a95d2, 0x7425c9da, 0xca34e234,
+    0x742325b9, 0xca2f2eb6,
+  0x74208150, 0xca297b5a, 0x741ddca0, 0xca23c820, 0x741b37a9, 0xca1e1506,
+    0x74189269, 0xca18620e,
+  0x7415ece2, 0xca12af37, 0x74134714, 0xca0cfc81, 0x7410a0fe, 0xca0749ec,
+    0x740dfaa0, 0xca019779,
+  0x740b53fb, 0xc9fbe527, 0x7408ad0e, 0xc9f632f6, 0x740605d9, 0xc9f080e7,
+    0x74035e5d, 0xc9eacef9,
+  0x7400b69a, 0xc9e51d2d, 0x73fe0e8f, 0xc9df6b81, 0x73fb663c, 0xc9d9b9f7,
+    0x73f8bda2, 0xc9d4088f,
+  0x73f614c0, 0xc9ce5748, 0x73f36b97, 0xc9c8a622, 0x73f0c226, 0xc9c2f51e,
+    0x73ee186e, 0xc9bd443c,
+  0x73eb6e6e, 0xc9b7937a, 0x73e8c426, 0xc9b1e2db, 0x73e61997, 0xc9ac325d,
+    0x73e36ec1, 0xc9a68200,
+  0x73e0c3a3, 0xc9a0d1c5, 0x73de183e, 0xc99b21ab, 0x73db6c91, 0xc99571b3,
+    0x73d8c09d, 0xc98fc1dc,
+  0x73d61461, 0xc98a1227, 0x73d367de, 0xc9846294, 0x73d0bb13, 0xc97eb322,
+    0x73ce0e01, 0xc97903d2,
+  0x73cb60a8, 0xc97354a4, 0x73c8b307, 0xc96da597, 0x73c6051f, 0xc967f6ac,
+    0x73c356ef, 0xc96247e2,
+  0x73c0a878, 0xc95c993a, 0x73bdf9b9, 0xc956eab4, 0x73bb4ab3, 0xc9513c50,
+    0x73b89b66, 0xc94b8e0d,
+  0x73b5ebd1, 0xc945dfec, 0x73b33bf5, 0xc94031ed, 0x73b08bd1, 0xc93a8410,
+    0x73addb67, 0xc934d654,
+  0x73ab2ab4, 0xc92f28ba, 0x73a879bb, 0xc9297b42, 0x73a5c87a, 0xc923cdec,
+    0x73a316f2, 0xc91e20b8,
+  0x73a06522, 0xc91873a5, 0x739db30b, 0xc912c6b5, 0x739b00ad, 0xc90d19e6,
+    0x73984e07, 0xc9076d39,
+  0x73959b1b, 0xc901c0ae, 0x7392e7e6, 0xc8fc1445, 0x7390346b, 0xc8f667fe,
+    0x738d80a8, 0xc8f0bbd9,
+  0x738acc9e, 0xc8eb0fd6, 0x7388184d, 0xc8e563f5, 0x738563b5, 0xc8dfb836,
+    0x7382aed5, 0xc8da0c99,
+  0x737ff9ae, 0xc8d4611d, 0x737d4440, 0xc8ceb5c4, 0x737a8e8a, 0xc8c90a8d,
+    0x7377d88d, 0xc8c35f78,
+  0x73752249, 0xc8bdb485, 0x73726bbe, 0xc8b809b4, 0x736fb4ec, 0xc8b25f06,
+    0x736cfdd2, 0xc8acb479,
+  0x736a4671, 0xc8a70a0e, 0x73678ec9, 0xc8a15fc6, 0x7364d6da, 0xc89bb5a0,
+    0x73621ea4, 0xc8960b9c,
+  0x735f6626, 0xc89061ba, 0x735cad61, 0xc88ab7fa, 0x7359f456, 0xc8850e5d,
+    0x73573b03, 0xc87f64e2,
+  0x73548168, 0xc879bb89, 0x7351c787, 0xc8741252, 0x734f0d5f, 0xc86e693d,
+    0x734c52ef, 0xc868c04b,
+  0x73499838, 0xc863177b, 0x7346dd3a, 0xc85d6ece, 0x734421f6, 0xc857c642,
+    0x7341666a, 0xc8521dd9,
+  0x733eaa96, 0xc84c7593, 0x733bee7c, 0xc846cd6e, 0x7339321b, 0xc841256d,
+    0x73367572, 0xc83b7d8d,
+  0x7333b883, 0xc835d5d0, 0x7330fb4d, 0xc8302e35, 0x732e3dcf, 0xc82a86bd,
+    0x732b800a, 0xc824df67,
+  0x7328c1ff, 0xc81f3834, 0x732603ac, 0xc8199123, 0x73234512, 0xc813ea35,
+    0x73208632, 0xc80e4369,
+  0x731dc70a, 0xc8089cbf, 0x731b079b, 0xc802f638, 0x731847e5, 0xc7fd4fd4,
+    0x731587e8, 0xc7f7a992,
+  0x7312c7a5, 0xc7f20373, 0x7310071a, 0xc7ec5d76, 0x730d4648, 0xc7e6b79c,
+    0x730a8530, 0xc7e111e5,
+  0x7307c3d0, 0xc7db6c50, 0x73050229, 0xc7d5c6de, 0x7302403c, 0xc7d0218e,
+    0x72ff7e07, 0xc7ca7c61,
+  0x72fcbb8c, 0xc7c4d757, 0x72f9f8c9, 0xc7bf3270, 0x72f735c0, 0xc7b98dab,
+    0x72f47270, 0xc7b3e909,
+  0x72f1aed9, 0xc7ae4489, 0x72eeeafb, 0xc7a8a02c, 0x72ec26d6, 0xc7a2fbf3,
+    0x72e9626a, 0xc79d57db,
+  0x72e69db7, 0xc797b3e7, 0x72e3d8be, 0xc7921015, 0x72e1137d, 0xc78c6c67,
+    0x72de4df6, 0xc786c8db,
+  0x72db8828, 0xc7812572, 0x72d8c213, 0xc77b822b, 0x72d5fbb7, 0xc775df08,
+    0x72d33514, 0xc7703c08,
+  0x72d06e2b, 0xc76a992a, 0x72cda6fb, 0xc764f66f, 0x72cadf83, 0xc75f53d7,
+    0x72c817c6, 0xc759b163,
+  0x72c54fc1, 0xc7540f11, 0x72c28775, 0xc74e6ce2, 0x72bfbee3, 0xc748cad6,
+    0x72bcf60a, 0xc74328ed,
+  0x72ba2cea, 0xc73d8727, 0x72b76383, 0xc737e584, 0x72b499d6, 0xc7324404,
+    0x72b1cfe1, 0xc72ca2a7,
+  0x72af05a7, 0xc727016d, 0x72ac3b25, 0xc7216056, 0x72a9705c, 0xc71bbf62,
+    0x72a6a54d, 0xc7161e92,
+  0x72a3d9f7, 0xc7107de4, 0x72a10e5b, 0xc70add5a, 0x729e4277, 0xc7053cf2,
+    0x729b764d, 0xc6ff9cae,
+  0x7298a9dd, 0xc6f9fc8d, 0x7295dd25, 0xc6f45c8f, 0x72931027, 0xc6eebcb5,
+    0x729042e3, 0xc6e91cfd,
+  0x728d7557, 0xc6e37d69, 0x728aa785, 0xc6ddddf8, 0x7287d96c, 0xc6d83eab,
+    0x72850b0d, 0xc6d29f80,
+  0x72823c67, 0xc6cd0079, 0x727f6d7a, 0xc6c76195, 0x727c9e47, 0xc6c1c2d4,
+    0x7279cecd, 0xc6bc2437,
+  0x7276ff0d, 0xc6b685bd, 0x72742f05, 0xc6b0e767, 0x72715eb8, 0xc6ab4933,
+    0x726e8e23, 0xc6a5ab23,
+  0x726bbd48, 0xc6a00d37, 0x7268ec27, 0xc69a6f6e, 0x72661abf, 0xc694d1c8,
+    0x72634910, 0xc68f3446,
+  0x7260771b, 0xc68996e7, 0x725da4df, 0xc683f9ab, 0x725ad25d, 0xc67e5c93,
+    0x7257ff94, 0xc678bf9f,
+  0x72552c85, 0xc67322ce, 0x7252592f, 0xc66d8620, 0x724f8593, 0xc667e996,
+    0x724cb1b0, 0xc6624d30,
+  0x7249dd86, 0xc65cb0ed, 0x72470916, 0xc65714cd, 0x72443460, 0xc65178d1,
+    0x72415f63, 0xc64bdcf9,
+  0x723e8a20, 0xc6464144, 0x723bb496, 0xc640a5b3, 0x7238dec5, 0xc63b0a46,
+    0x723608af, 0xc6356efc,
+  0x72333251, 0xc62fd3d6, 0x72305bae, 0xc62a38d4, 0x722d84c4, 0xc6249df5,
+    0x722aad93, 0xc61f033a,
+  0x7227d61c, 0xc61968a2, 0x7224fe5f, 0xc613ce2f, 0x7222265b, 0xc60e33df,
+    0x721f4e11, 0xc60899b2,
+  0x721c7580, 0xc602ffaa, 0x72199ca9, 0xc5fd65c5, 0x7216c38c, 0xc5f7cc04,
+    0x7213ea28, 0xc5f23267,
+  0x7211107e, 0xc5ec98ee, 0x720e368d, 0xc5e6ff98, 0x720b5c57, 0xc5e16667,
+    0x720881d9, 0xc5dbcd59,
+  0x7205a716, 0xc5d6346f, 0x7202cc0c, 0xc5d09ba9, 0x71fff0bc, 0xc5cb0307,
+    0x71fd1525, 0xc5c56a89,
+  0x71fa3949, 0xc5bfd22e, 0x71f75d25, 0xc5ba39f8, 0x71f480bc, 0xc5b4a1e5,
+    0x71f1a40c, 0xc5af09f7,
+  0x71eec716, 0xc5a9722c, 0x71ebe9da, 0xc5a3da86, 0x71e90c57, 0xc59e4303,
+    0x71e62e8f, 0xc598aba5,
+  0x71e35080, 0xc593146a, 0x71e0722a, 0xc58d7d54, 0x71dd938f, 0xc587e661,
+    0x71dab4ad, 0xc5824f93,
+  0x71d7d585, 0xc57cb8e9, 0x71d4f617, 0xc5772263, 0x71d21662, 0xc5718c00,
+    0x71cf3667, 0xc56bf5c2,
+  0x71cc5626, 0xc5665fa9, 0x71c9759f, 0xc560c9b3, 0x71c694d2, 0xc55b33e2,
+    0x71c3b3bf, 0xc5559e34,
+  0x71c0d265, 0xc55008ab, 0x71bdf0c5, 0xc54a7346, 0x71bb0edf, 0xc544de05,
+    0x71b82cb3, 0xc53f48e9,
+  0x71b54a41, 0xc539b3f1, 0x71b26788, 0xc5341f1d, 0x71af848a, 0xc52e8a6d,
+    0x71aca145, 0xc528f5e1,
+  0x71a9bdba, 0xc523617a, 0x71a6d9e9, 0xc51dcd37, 0x71a3f5d2, 0xc5183919,
+    0x71a11175, 0xc512a51f,
+  0x719e2cd2, 0xc50d1149, 0x719b47e9, 0xc5077d97, 0x719862b9, 0xc501ea0a,
+    0x71957d44, 0xc4fc56a2,
+  0x71929789, 0xc4f6c35d, 0x718fb187, 0xc4f1303d, 0x718ccb3f, 0xc4eb9d42,
+    0x7189e4b2, 0xc4e60a6b,
+  0x7186fdde, 0xc4e077b8, 0x718416c4, 0xc4dae52a, 0x71812f65, 0xc4d552c1,
+    0x717e47bf, 0xc4cfc07c,
+  0x717b5fd3, 0xc4ca2e5b, 0x717877a1, 0xc4c49c5f, 0x71758f29, 0xc4bf0a87,
+    0x7172a66c, 0xc4b978d4,
+  0x716fbd68, 0xc4b3e746, 0x716cd41e, 0xc4ae55dc, 0x7169ea8f, 0xc4a8c497,
+    0x716700b9, 0xc4a33376,
+  0x7164169d, 0xc49da27a, 0x71612c3c, 0xc49811a3, 0x715e4194, 0xc49280f0,
+    0x715b56a7, 0xc48cf062,
+  0x71586b74, 0xc4875ff9, 0x71557ffa, 0xc481cfb4, 0x7152943b, 0xc47c3f94,
+    0x714fa836, 0xc476af98,
+  0x714cbbeb, 0xc4711fc2, 0x7149cf5a, 0xc46b9010, 0x7146e284, 0xc4660083,
+    0x7143f567, 0xc460711b,
+  0x71410805, 0xc45ae1d7, 0x713e1a5c, 0xc45552b8, 0x713b2c6e, 0xc44fc3be,
+    0x71383e3a, 0xc44a34e9,
+  0x71354fc0, 0xc444a639, 0x71326101, 0xc43f17ad, 0x712f71fb, 0xc4398947,
+    0x712c82b0, 0xc433fb05,
+  0x7129931f, 0xc42e6ce8, 0x7126a348, 0xc428def0, 0x7123b32b, 0xc423511d,
+    0x7120c2c8, 0xc41dc36f,
+  0x711dd220, 0xc41835e6, 0x711ae132, 0xc412a882, 0x7117effe, 0xc40d1b42,
+    0x7114fe84, 0xc4078e28,
+  0x71120cc5, 0xc4020133, 0x710f1ac0, 0xc3fc7462, 0x710c2875, 0xc3f6e7b7,
+    0x710935e4, 0xc3f15b31,
+  0x7106430e, 0xc3ebced0, 0x71034ff2, 0xc3e64294, 0x71005c90, 0xc3e0b67d,
+    0x70fd68e9, 0xc3db2a8b,
+  0x70fa74fc, 0xc3d59ebe, 0x70f780c9, 0xc3d01316, 0x70f48c50, 0xc3ca8793,
+    0x70f19792, 0xc3c4fc36,
+  0x70eea28e, 0xc3bf70fd, 0x70ebad45, 0xc3b9e5ea, 0x70e8b7b5, 0xc3b45afc,
+    0x70e5c1e1, 0xc3aed034,
+  0x70e2cbc6, 0xc3a94590, 0x70dfd566, 0xc3a3bb12, 0x70dcdec0, 0xc39e30b8,
+    0x70d9e7d5, 0xc398a685,
+  0x70d6f0a4, 0xc3931c76, 0x70d3f92d, 0xc38d928d, 0x70d10171, 0xc38808c9,
+    0x70ce096f, 0xc3827f2a,
+  0x70cb1128, 0xc37cf5b0, 0x70c8189b, 0xc3776c5c, 0x70c51fc8, 0xc371e32d,
+    0x70c226b0, 0xc36c5a24,
+  0x70bf2d53, 0xc366d140, 0x70bc33b0, 0xc3614881, 0x70b939c7, 0xc35bbfe8,
+    0x70b63f99, 0xc3563774,
+  0x70b34525, 0xc350af26, 0x70b04a6b, 0xc34b26fc, 0x70ad4f6d, 0xc3459ef9,
+    0x70aa5428, 0xc340171b,
+  0x70a7589f, 0xc33a8f62, 0x70a45ccf, 0xc33507cf, 0x70a160ba, 0xc32f8061,
+    0x709e6460, 0xc329f919,
+  0x709b67c0, 0xc32471f7, 0x70986adb, 0xc31eeaf9, 0x70956db1, 0xc3196422,
+    0x70927041, 0xc313dd70,
+  0x708f728b, 0xc30e56e4, 0x708c7490, 0xc308d07d, 0x70897650, 0xc3034a3c,
+    0x708677ca, 0xc2fdc420,
+  0x708378ff, 0xc2f83e2a, 0x708079ee, 0xc2f2b85a, 0x707d7a98, 0xc2ed32af,
+    0x707a7afd, 0xc2e7ad2a,
+  0x70777b1c, 0xc2e227cb, 0x70747af6, 0xc2dca291, 0x70717a8a, 0xc2d71d7e,
+    0x706e79d9, 0xc2d1988f,
+  0x706b78e3, 0xc2cc13c7, 0x706877a7, 0xc2c68f24, 0x70657626, 0xc2c10aa7,
+    0x70627460, 0xc2bb8650,
+  0x705f7255, 0xc2b6021f, 0x705c7004, 0xc2b07e14, 0x70596d6d, 0xc2aafa2e,
+    0x70566a92, 0xc2a5766e,
+  0x70536771, 0xc29ff2d4, 0x7050640b, 0xc29a6f60, 0x704d6060, 0xc294ec12,
+    0x704a5c6f, 0xc28f68e9,
+  0x70475839, 0xc289e5e7, 0x704453be, 0xc284630a, 0x70414efd, 0xc27ee054,
+    0x703e49f8, 0xc2795dc3,
+  0x703b44ad, 0xc273db58, 0x70383f1d, 0xc26e5913, 0x70353947, 0xc268d6f5,
+    0x7032332d, 0xc26354fc,
+  0x702f2ccd, 0xc25dd329, 0x702c2628, 0xc258517c, 0x70291f3e, 0xc252cff5,
+    0x7026180e, 0xc24d4e95,
+  0x7023109a, 0xc247cd5a, 0x702008e0, 0xc2424c46, 0x701d00e1, 0xc23ccb57,
+    0x7019f89d, 0xc2374a8f,
+  0x7016f014, 0xc231c9ec, 0x7013e746, 0xc22c4970, 0x7010de32, 0xc226c91a,
+    0x700dd4da, 0xc22148ea,
+  0x700acb3c, 0xc21bc8e1, 0x7007c159, 0xc21648fd, 0x7004b731, 0xc210c940,
+    0x7001acc4, 0xc20b49a9,
+  0x6ffea212, 0xc205ca38, 0x6ffb971b, 0xc2004aed, 0x6ff88bde, 0xc1facbc9,
+    0x6ff5805d, 0xc1f54cca,
+  0x6ff27497, 0xc1efcdf3, 0x6fef688b, 0xc1ea4f41, 0x6fec5c3b, 0xc1e4d0b6,
+    0x6fe94fa5, 0xc1df5251,
+  0x6fe642ca, 0xc1d9d412, 0x6fe335ab, 0xc1d455f9, 0x6fe02846, 0xc1ced807,
+    0x6fdd1a9c, 0xc1c95a3c,
+  0x6fda0cae, 0xc1c3dc97, 0x6fd6fe7a, 0xc1be5f18, 0x6fd3f001, 0xc1b8e1bf,
+    0x6fd0e144, 0xc1b3648d,
+  0x6fcdd241, 0xc1ade781, 0x6fcac2fa, 0xc1a86a9c, 0x6fc7b36d, 0xc1a2edde,
+    0x6fc4a39c, 0xc19d7145,
+  0x6fc19385, 0xc197f4d4, 0x6fbe832a, 0xc1927888, 0x6fbb728a, 0xc18cfc63,
+    0x6fb861a4, 0xc1878065,
+  0x6fb5507a, 0xc182048d, 0x6fb23f0b, 0xc17c88dc, 0x6faf2d57, 0xc1770d52,
+    0x6fac1b5f, 0xc17191ee,
+  0x6fa90921, 0xc16c16b0, 0x6fa5f69e, 0xc1669b99, 0x6fa2e3d7, 0xc16120a9,
+    0x6f9fd0cb, 0xc15ba5df,
+  0x6f9cbd79, 0xc1562b3d, 0x6f99a9e3, 0xc150b0c0, 0x6f969608, 0xc14b366b,
+    0x6f9381e9, 0xc145bc3c,
+  0x6f906d84, 0xc1404233, 0x6f8d58db, 0xc13ac852, 0x6f8a43ed, 0xc1354e97,
+    0x6f872eba, 0xc12fd503,
+  0x6f841942, 0xc12a5b95, 0x6f810386, 0xc124e24f, 0x6f7ded84, 0xc11f692f,
+    0x6f7ad73e, 0xc119f036,
+  0x6f77c0b3, 0xc1147764, 0x6f74a9e4, 0xc10efeb8, 0x6f7192cf, 0xc1098634,
+    0x6f6e7b76, 0xc1040dd6,
+  0x6f6b63d8, 0xc0fe959f, 0x6f684bf6, 0xc0f91d8f, 0x6f6533ce, 0xc0f3a5a6,
+    0x6f621b62, 0xc0ee2de3,
+  0x6f5f02b2, 0xc0e8b648, 0x6f5be9bc, 0xc0e33ed4, 0x6f58d082, 0xc0ddc786,
+    0x6f55b703, 0xc0d8505f,
+  0x6f529d40, 0xc0d2d960, 0x6f4f8338, 0xc0cd6287, 0x6f4c68eb, 0xc0c7ebd6,
+    0x6f494e5a, 0xc0c2754b,
+  0x6f463383, 0xc0bcfee7, 0x6f431869, 0xc0b788ab, 0x6f3ffd09, 0xc0b21295,
+    0x6f3ce165, 0xc0ac9ca6,
+  0x6f39c57d, 0xc0a726df, 0x6f36a94f, 0xc0a1b13e, 0x6f338cde, 0xc09c3bc5,
+    0x6f307027, 0xc096c673,
+  0x6f2d532c, 0xc0915148, 0x6f2a35ed, 0xc08bdc44, 0x6f271868, 0xc0866767,
+    0x6f23faa0, 0xc080f2b1,
+  0x6f20dc92, 0xc07b7e23, 0x6f1dbe41, 0xc07609bb, 0x6f1a9faa, 0xc070957b,
+    0x6f1780cf, 0xc06b2162,
+  0x6f1461b0, 0xc065ad70, 0x6f11424c, 0xc06039a6, 0x6f0e22a3, 0xc05ac603,
+    0x6f0b02b6, 0xc0555287,
+  0x6f07e285, 0xc04fdf32, 0x6f04c20f, 0xc04a6c05, 0x6f01a155, 0xc044f8fe,
+    0x6efe8056, 0xc03f8620,
+  0x6efb5f12, 0xc03a1368, 0x6ef83d8a, 0xc034a0d8, 0x6ef51bbe, 0xc02f2e6f,
+    0x6ef1f9ad, 0xc029bc2e,
+  0x6eeed758, 0xc0244a14, 0x6eebb4bf, 0xc01ed821, 0x6ee891e1, 0xc0196656,
+    0x6ee56ebe, 0xc013f4b2,
+  0x6ee24b57, 0xc00e8336, 0x6edf27ac, 0xc00911e1, 0x6edc03bc, 0xc003a0b3,
+    0x6ed8df88, 0xbffe2fad,
+  0x6ed5bb10, 0xbff8bece, 0x6ed29653, 0xbff34e17, 0x6ecf7152, 0xbfeddd88,
+    0x6ecc4c0d, 0xbfe86d20,
+  0x6ec92683, 0xbfe2fcdf, 0x6ec600b5, 0xbfdd8cc6, 0x6ec2daa2, 0xbfd81cd5,
+    0x6ebfb44b, 0xbfd2ad0b,
+  0x6ebc8db0, 0xbfcd3d69, 0x6eb966d1, 0xbfc7cdee, 0x6eb63fad, 0xbfc25e9b,
+    0x6eb31845, 0xbfbcef70,
+  0x6eaff099, 0xbfb7806c, 0x6eacc8a8, 0xbfb21190, 0x6ea9a073, 0xbfaca2dc,
+    0x6ea677fa, 0xbfa7344f,
+  0x6ea34f3d, 0xbfa1c5ea, 0x6ea0263b, 0xbf9c57ac, 0x6e9cfcf5, 0xbf96e997,
+    0x6e99d36b, 0xbf917ba9,
+  0x6e96a99d, 0xbf8c0de3, 0x6e937f8a, 0xbf86a044, 0x6e905534, 0xbf8132ce,
+    0x6e8d2a99, 0xbf7bc57f,
+  0x6e89ffb9, 0xbf765858, 0x6e86d496, 0xbf70eb59, 0x6e83a92f, 0xbf6b7e81,
+    0x6e807d83, 0xbf6611d2,
+  0x6e7d5193, 0xbf60a54a, 0x6e7a255f, 0xbf5b38ea, 0x6e76f8e7, 0xbf55ccb2,
+    0x6e73cc2b, 0xbf5060a2,
+  0x6e709f2a, 0xbf4af4ba, 0x6e6d71e6, 0xbf4588fa, 0x6e6a445d, 0xbf401d61,
+    0x6e671690, 0xbf3ab1f1,
+  0x6e63e87f, 0xbf3546a8, 0x6e60ba2a, 0xbf2fdb88, 0x6e5d8b91, 0xbf2a708f,
+    0x6e5a5cb4, 0xbf2505bf,
+  0x6e572d93, 0xbf1f9b16, 0x6e53fe2e, 0xbf1a3096, 0x6e50ce84, 0xbf14c63d,
+    0x6e4d9e97, 0xbf0f5c0d,
+  0x6e4a6e66, 0xbf09f205, 0x6e473df0, 0xbf048824, 0x6e440d37, 0xbeff1e6c,
+    0x6e40dc39, 0xbef9b4dc,
+  0x6e3daaf8, 0xbef44b74, 0x6e3a7972, 0xbeeee234, 0x6e3747a9, 0xbee9791c,
+    0x6e34159b, 0xbee4102d,
+  0x6e30e34a, 0xbedea765, 0x6e2db0b4, 0xbed93ec6, 0x6e2a7ddb, 0xbed3d64f,
+    0x6e274abe, 0xbece6e00,
+  0x6e24175c, 0xbec905d9, 0x6e20e3b7, 0xbec39ddb, 0x6e1dafce, 0xbebe3605,
+    0x6e1a7ba1, 0xbeb8ce57,
+  0x6e174730, 0xbeb366d1, 0x6e14127b, 0xbeadff74, 0x6e10dd82, 0xbea8983f,
+    0x6e0da845, 0xbea33132,
+  0x6e0a72c5, 0xbe9dca4e, 0x6e073d00, 0xbe986391, 0x6e0406f8, 0xbe92fcfe,
+    0x6e00d0ac, 0xbe8d9692,
+  0x6dfd9a1c, 0xbe88304f, 0x6dfa6348, 0xbe82ca35, 0x6df72c30, 0xbe7d6442,
+    0x6df3f4d4, 0xbe77fe78,
+  0x6df0bd35, 0xbe7298d7, 0x6ded8552, 0xbe6d335e, 0x6dea4d2b, 0xbe67ce0d,
+    0x6de714c0, 0xbe6268e5,
+  0x6de3dc11, 0xbe5d03e6, 0x6de0a31f, 0xbe579f0f, 0x6ddd69e9, 0xbe523a60,
+    0x6dda306f, 0xbe4cd5da,
+  0x6dd6f6b1, 0xbe47717c, 0x6dd3bcaf, 0xbe420d47, 0x6dd0826a, 0xbe3ca93b,
+    0x6dcd47e1, 0xbe374557,
+  0x6dca0d14, 0xbe31e19b, 0x6dc6d204, 0xbe2c7e09, 0x6dc396b0, 0xbe271a9f,
+    0x6dc05b18, 0xbe21b75d,
+  0x6dbd1f3c, 0xbe1c5444, 0x6db9e31d, 0xbe16f154, 0x6db6a6ba, 0xbe118e8c,
+    0x6db36a14, 0xbe0c2bed,
+  0x6db02d29, 0xbe06c977, 0x6daceffb, 0xbe01672a, 0x6da9b28a, 0xbdfc0505,
+    0x6da674d5, 0xbdf6a309,
+  0x6da336dc, 0xbdf14135, 0x6d9ff89f, 0xbdebdf8b, 0x6d9cba1f, 0xbde67e09,
+    0x6d997b5b, 0xbde11cb0,
+  0x6d963c54, 0xbddbbb7f, 0x6d92fd09, 0xbdd65a78, 0x6d8fbd7a, 0xbdd0f999,
+    0x6d8c7da8, 0xbdcb98e3,
+  0x6d893d93, 0xbdc63856, 0x6d85fd39, 0xbdc0d7f2, 0x6d82bc9d, 0xbdbb77b7,
+    0x6d7f7bbc, 0xbdb617a4,
+  0x6d7c3a98, 0xbdb0b7bb, 0x6d78f931, 0xbdab57fa, 0x6d75b786, 0xbda5f862,
+    0x6d727597, 0xbda098f3,
+  0x6d6f3365, 0xbd9b39ad, 0x6d6bf0f0, 0xbd95da91, 0x6d68ae37, 0xbd907b9d,
+    0x6d656b3a, 0xbd8b1cd2,
+  0x6d6227fa, 0xbd85be30, 0x6d5ee477, 0xbd805fb7, 0x6d5ba0b0, 0xbd7b0167,
+    0x6d585ca6, 0xbd75a340,
+  0x6d551858, 0xbd704542, 0x6d51d3c6, 0xbd6ae76d, 0x6d4e8ef2, 0xbd6589c1,
+    0x6d4b49da, 0xbd602c3f,
+  0x6d48047e, 0xbd5acee5, 0x6d44bedf, 0xbd5571b5, 0x6d4178fd, 0xbd5014ad,
+    0x6d3e32d7, 0xbd4ab7cf,
+  0x6d3aec6e, 0xbd455b1a, 0x6d37a5c1, 0xbd3ffe8e, 0x6d345ed1, 0xbd3aa22c,
+    0x6d31179e, 0xbd3545f2,
+  0x6d2dd027, 0xbd2fe9e2, 0x6d2a886e, 0xbd2a8dfb, 0x6d274070, 0xbd25323d,
+    0x6d23f830, 0xbd1fd6a8,
+  0x6d20afac, 0xbd1a7b3d, 0x6d1d66e4, 0xbd151ffb, 0x6d1a1dda, 0xbd0fc4e2,
+    0x6d16d48c, 0xbd0a69f2,
+  0x6d138afb, 0xbd050f2c, 0x6d104126, 0xbcffb48f, 0x6d0cf70f, 0xbcfa5a1b,
+    0x6d09acb4, 0xbcf4ffd1,
+  0x6d066215, 0xbcefa5b0, 0x6d031734, 0xbcea4bb9, 0x6cffcc0f, 0xbce4f1eb,
+    0x6cfc80a7, 0xbcdf9846,
+  0x6cf934fc, 0xbcda3ecb, 0x6cf5e90d, 0xbcd4e579, 0x6cf29cdc, 0xbccf8c50,
+    0x6cef5067, 0xbcca3351,
+  0x6cec03af, 0xbcc4da7b, 0x6ce8b6b4, 0xbcbf81cf, 0x6ce56975, 0xbcba294d,
+    0x6ce21bf4, 0xbcb4d0f4,
+  0x6cdece2f, 0xbcaf78c4, 0x6cdb8027, 0xbcaa20be, 0x6cd831dc, 0xbca4c8e1,
+    0x6cd4e34e, 0xbc9f712e,
+  0x6cd1947c, 0xbc9a19a5, 0x6cce4568, 0xbc94c245, 0x6ccaf610, 0xbc8f6b0f,
+    0x6cc7a676, 0xbc8a1402,
+  0x6cc45698, 0xbc84bd1f, 0x6cc10677, 0xbc7f6665, 0x6cbdb613, 0xbc7a0fd6,
+    0x6cba656c, 0xbc74b96f,
+  0x6cb71482, 0xbc6f6333, 0x6cb3c355, 0xbc6a0d20, 0x6cb071e4, 0xbc64b737,
+    0x6cad2031, 0xbc5f6177,
+  0x6ca9ce3b, 0xbc5a0be2, 0x6ca67c01, 0xbc54b676, 0x6ca32985, 0xbc4f6134,
+    0x6c9fd6c6, 0xbc4a0c1b,
+  0x6c9c83c3, 0xbc44b72c, 0x6c99307e, 0xbc3f6267, 0x6c95dcf6, 0xbc3a0dcc,
+    0x6c92892a, 0xbc34b95b,
+  0x6c8f351c, 0xbc2f6513, 0x6c8be0cb, 0xbc2a10f6, 0x6c888c36, 0xbc24bd02,
+    0x6c85375f, 0xbc1f6938,
+  0x6c81e245, 0xbc1a1598, 0x6c7e8ce8, 0xbc14c221, 0x6c7b3748, 0xbc0f6ed5,
+    0x6c77e165, 0xbc0a1bb3,
+  0x6c748b3f, 0xbc04c8ba, 0x6c7134d7, 0xbbff75ec, 0x6c6dde2b, 0xbbfa2347,
+    0x6c6a873d, 0xbbf4d0cc,
+  0x6c67300b, 0xbbef7e7c, 0x6c63d897, 0xbbea2c55, 0x6c6080e0, 0xbbe4da58,
+    0x6c5d28e6, 0xbbdf8885,
+  0x6c59d0a9, 0xbbda36dd, 0x6c56782a, 0xbbd4e55e, 0x6c531f67, 0xbbcf940a,
+    0x6c4fc662, 0xbbca42df,
+  0x6c4c6d1a, 0xbbc4f1df, 0x6c49138f, 0xbbbfa108, 0x6c45b9c1, 0xbbba505c,
+    0x6c425fb1, 0xbbb4ffda,
+  0x6c3f055d, 0xbbafaf82, 0x6c3baac7, 0xbbaa5f54, 0x6c384fef, 0xbba50f50,
+    0x6c34f4d3, 0xbb9fbf77,
+  0x6c319975, 0xbb9a6fc7, 0x6c2e3dd4, 0xbb952042, 0x6c2ae1f0, 0xbb8fd0e7,
+    0x6c2785ca, 0xbb8a81b6,
+  0x6c242960, 0xbb8532b0, 0x6c20ccb4, 0xbb7fe3d3, 0x6c1d6fc6, 0xbb7a9521,
+    0x6c1a1295, 0xbb754699,
+  0x6c16b521, 0xbb6ff83c, 0x6c13576a, 0xbb6aaa09, 0x6c0ff971, 0xbb655c00,
+    0x6c0c9b35, 0xbb600e21,
+  0x6c093cb6, 0xbb5ac06d, 0x6c05ddf5, 0xbb5572e3, 0x6c027ef1, 0xbb502583,
+    0x6bff1faa, 0xbb4ad84e,
+  0x6bfbc021, 0xbb458b43, 0x6bf86055, 0xbb403e63, 0x6bf50047, 0xbb3af1ad,
+    0x6bf19ff6, 0xbb35a521,
+  0x6bee3f62, 0xbb3058c0, 0x6beade8c, 0xbb2b0c8a, 0x6be77d74, 0xbb25c07d,
+    0x6be41c18, 0xbb20749c,
+  0x6be0ba7b, 0xbb1b28e4, 0x6bdd589a, 0xbb15dd57, 0x6bd9f677, 0xbb1091f5,
+    0x6bd69412, 0xbb0b46bd,
+  0x6bd3316a, 0xbb05fbb0, 0x6bcfce80, 0xbb00b0ce, 0x6bcc6b53, 0xbafb6615,
+    0x6bc907e3, 0xbaf61b88,
+  0x6bc5a431, 0xbaf0d125, 0x6bc2403d, 0xbaeb86ed, 0x6bbedc06, 0xbae63cdf,
+    0x6bbb778d, 0xbae0f2fc,
+  0x6bb812d1, 0xbadba943, 0x6bb4add3, 0xbad65fb5, 0x6bb14892, 0xbad11652,
+    0x6bade30f, 0xbacbcd1a,
+  0x6baa7d49, 0xbac6840c, 0x6ba71741, 0xbac13b29, 0x6ba3b0f7, 0xbabbf270,
+    0x6ba04a6a, 0xbab6a9e3,
+  0x6b9ce39b, 0xbab16180, 0x6b997c8a, 0xbaac1948, 0x6b961536, 0xbaa6d13a,
+    0x6b92ada0, 0xbaa18958,
+  0x6b8f45c7, 0xba9c41a0, 0x6b8bddac, 0xba96fa13, 0x6b88754f, 0xba91b2b1,
+    0x6b850caf, 0xba8c6b79,
+  0x6b81a3cd, 0xba87246d, 0x6b7e3aa9, 0xba81dd8b, 0x6b7ad142, 0xba7c96d4,
+    0x6b776799, 0xba775048,
+  0x6b73fdae, 0xba7209e7, 0x6b709381, 0xba6cc3b1, 0x6b6d2911, 0xba677da6,
+    0x6b69be5f, 0xba6237c5,
+  0x6b66536b, 0xba5cf210, 0x6b62e834, 0xba57ac86, 0x6b5f7cbc, 0xba526726,
+    0x6b5c1101, 0xba4d21f2,
+  0x6b58a503, 0xba47dce8, 0x6b5538c4, 0xba42980a, 0x6b51cc42, 0xba3d5356,
+    0x6b4e5f7f, 0xba380ece,
+  0x6b4af279, 0xba32ca71, 0x6b478530, 0xba2d863e, 0x6b4417a6, 0xba284237,
+    0x6b40a9d9, 0xba22fe5b,
+  0x6b3d3bcb, 0xba1dbaaa, 0x6b39cd7a, 0xba187724, 0x6b365ee7, 0xba1333c9,
+    0x6b32f012, 0xba0df099,
+  0x6b2f80fb, 0xba08ad95, 0x6b2c11a1, 0xba036abb, 0x6b28a206, 0xb9fe280d,
+    0x6b253228, 0xb9f8e58a,
+  0x6b21c208, 0xb9f3a332, 0x6b1e51a7, 0xb9ee6106, 0x6b1ae103, 0xb9e91f04,
+    0x6b17701d, 0xb9e3dd2e,
+  0x6b13fef5, 0xb9de9b83, 0x6b108d8b, 0xb9d95a03, 0x6b0d1bdf, 0xb9d418af,
+    0x6b09a9f1, 0xb9ced786,
+  0x6b0637c1, 0xb9c99688, 0x6b02c54f, 0xb9c455b6, 0x6aff529a, 0xb9bf150e,
+    0x6afbdfa4, 0xb9b9d493,
+  0x6af86c6c, 0xb9b49442, 0x6af4f8f2, 0xb9af541d, 0x6af18536, 0xb9aa1423,
+    0x6aee1138, 0xb9a4d455,
+  0x6aea9cf8, 0xb99f94b2, 0x6ae72876, 0xb99a553a, 0x6ae3b3b2, 0xb99515ee,
+    0x6ae03eac, 0xb98fd6cd,
+  0x6adcc964, 0xb98a97d8, 0x6ad953db, 0xb985590e, 0x6ad5de0f, 0xb9801a70,
+    0x6ad26802, 0xb97adbfd,
+  0x6acef1b2, 0xb9759db6, 0x6acb7b21, 0xb9705f9a, 0x6ac8044e, 0xb96b21aa,
+    0x6ac48d39, 0xb965e3e5,
+  0x6ac115e2, 0xb960a64c, 0x6abd9e49, 0xb95b68de, 0x6aba266e, 0xb9562b9c,
+    0x6ab6ae52, 0xb950ee86,
+  0x6ab335f4, 0xb94bb19b, 0x6aafbd54, 0xb94674dc, 0x6aac4472, 0xb9413848,
+    0x6aa8cb4e, 0xb93bfbe0,
+  0x6aa551e9, 0xb936bfa4, 0x6aa1d841, 0xb9318393, 0x6a9e5e58, 0xb92c47ae,
+    0x6a9ae42e, 0xb9270bf5,
+  0x6a9769c1, 0xb921d067, 0x6a93ef13, 0xb91c9505, 0x6a907423, 0xb91759cf,
+    0x6a8cf8f1, 0xb9121ec5,
+  0x6a897d7d, 0xb90ce3e6, 0x6a8601c8, 0xb907a933, 0x6a8285d1, 0xb9026eac,
+    0x6a7f0999, 0xb8fd3451,
+  0x6a7b8d1e, 0xb8f7fa21, 0x6a781062, 0xb8f2c01d, 0x6a749365, 0xb8ed8646,
+    0x6a711625, 0xb8e84c99,
+  0x6a6d98a4, 0xb8e31319, 0x6a6a1ae2, 0xb8ddd9c5, 0x6a669cdd, 0xb8d8a09d,
+    0x6a631e97, 0xb8d367a0,
+  0x6a5fa010, 0xb8ce2ecf, 0x6a5c2147, 0xb8c8f62b, 0x6a58a23c, 0xb8c3bdb2,
+    0x6a5522ef, 0xb8be8565,
+  0x6a51a361, 0xb8b94d44, 0x6a4e2392, 0xb8b4154f, 0x6a4aa381, 0xb8aedd86,
+    0x6a47232e, 0xb8a9a5e9,
+  0x6a43a29a, 0xb8a46e78, 0x6a4021c4, 0xb89f3733, 0x6a3ca0ad, 0xb89a001a,
+    0x6a391f54, 0xb894c92d,
+  0x6a359db9, 0xb88f926d, 0x6a321bdd, 0xb88a5bd8, 0x6a2e99c0, 0xb885256f,
+    0x6a2b1761, 0xb87fef33,
+  0x6a2794c1, 0xb87ab922, 0x6a2411df, 0xb875833e, 0x6a208ebb, 0xb8704d85,
+    0x6a1d0b57, 0xb86b17f9,
+  0x6a1987b0, 0xb865e299, 0x6a1603c8, 0xb860ad66, 0x6a127f9f, 0xb85b785e,
+    0x6a0efb35, 0xb8564383,
+  0x6a0b7689, 0xb8510ed4, 0x6a07f19b, 0xb84bda51, 0x6a046c6c, 0xb846a5fa,
+    0x6a00e6fc, 0xb84171cf,
+  0x69fd614a, 0xb83c3dd1, 0x69f9db57, 0xb83709ff, 0x69f65523, 0xb831d659,
+    0x69f2cead, 0xb82ca2e0,
+  0x69ef47f6, 0xb8276f93, 0x69ebc0fe, 0xb8223c72, 0x69e839c4, 0xb81d097e,
+    0x69e4b249, 0xb817d6b6,
+  0x69e12a8c, 0xb812a41a, 0x69dda28f, 0xb80d71aa, 0x69da1a50, 0xb8083f67,
+    0x69d691cf, 0xb8030d51,
+  0x69d3090e, 0xb7fddb67, 0x69cf800b, 0xb7f8a9a9, 0x69cbf6c7, 0xb7f37818,
+    0x69c86d41, 0xb7ee46b3,
+  0x69c4e37a, 0xb7e9157a, 0x69c15973, 0xb7e3e46e, 0x69bdcf29, 0xb7deb38f,
+    0x69ba449f, 0xb7d982dc,
+  0x69b6b9d3, 0xb7d45255, 0x69b32ec7, 0xb7cf21fb, 0x69afa378, 0xb7c9f1ce,
+    0x69ac17e9, 0xb7c4c1cd,
+  0x69a88c19, 0xb7bf91f8, 0x69a50007, 0xb7ba6251, 0x69a173b5, 0xb7b532d6,
+    0x699de721, 0xb7b00387,
+  0x699a5a4c, 0xb7aad465, 0x6996cd35, 0xb7a5a570, 0x69933fde, 0xb7a076a7,
+    0x698fb246, 0xb79b480b,
+  0x698c246c, 0xb796199b, 0x69889651, 0xb790eb58, 0x698507f6, 0xb78bbd42,
+    0x69817959, 0xb7868f59,
+  0x697dea7b, 0xb781619c, 0x697a5b5c, 0xb77c340c, 0x6976cbfc, 0xb77706a9,
+    0x69733c5b, 0xb771d972,
+  0x696fac78, 0xb76cac69, 0x696c1c55, 0xb7677f8c, 0x69688bf1, 0xb76252db,
+    0x6964fb4c, 0xb75d2658,
+  0x69616a65, 0xb757fa01, 0x695dd93e, 0xb752cdd8, 0x695a47d6, 0xb74da1db,
+    0x6956b62d, 0xb748760b,
+  0x69532442, 0xb7434a67, 0x694f9217, 0xb73e1ef1, 0x694bffab, 0xb738f3a7,
+    0x69486cfe, 0xb733c88b,
+  0x6944da10, 0xb72e9d9b, 0x694146e1, 0xb72972d8, 0x693db371, 0xb7244842,
+    0x693a1fc0, 0xb71f1dd9,
+  0x69368bce, 0xb719f39e, 0x6932f79b, 0xb714c98e, 0x692f6328, 0xb70f9fac,
+    0x692bce73, 0xb70a75f7,
+  0x6928397e, 0xb7054c6f, 0x6924a448, 0xb7002314, 0x69210ed1, 0xb6faf9e6,
+    0x691d7919, 0xb6f5d0e5,
+  0x6919e320, 0xb6f0a812, 0x69164ce7, 0xb6eb7f6b, 0x6912b66c, 0xb6e656f1,
+    0x690f1fb1, 0xb6e12ea4,
+  0x690b88b5, 0xb6dc0685, 0x6907f178, 0xb6d6de92, 0x690459fb, 0xb6d1b6cd,
+    0x6900c23c, 0xb6cc8f35,
+  0x68fd2a3d, 0xb6c767ca, 0x68f991fd, 0xb6c2408c, 0x68f5f97d, 0xb6bd197c,
+    0x68f260bb, 0xb6b7f298,
+  0x68eec7b9, 0xb6b2cbe2, 0x68eb2e76, 0xb6ada559, 0x68e794f3, 0xb6a87efd,
+    0x68e3fb2e, 0xb6a358ce,
+  0x68e06129, 0xb69e32cd, 0x68dcc6e4, 0xb6990cf9, 0x68d92c5d, 0xb693e752,
+    0x68d59196, 0xb68ec1d9,
+  0x68d1f68f, 0xb6899c8d, 0x68ce5b46, 0xb684776e, 0x68cabfbd, 0xb67f527c,
+    0x68c723f3, 0xb67a2db8,
+  0x68c387e9, 0xb6750921, 0x68bfeb9e, 0xb66fe4b8, 0x68bc4f13, 0xb66ac07c,
+    0x68b8b247, 0xb6659c6d,
+  0x68b5153a, 0xb660788c, 0x68b177ed, 0xb65b54d8, 0x68adda5f, 0xb6563151,
+    0x68aa3c90, 0xb6510df8,
+  0x68a69e81, 0xb64beacd, 0x68a30031, 0xb646c7ce, 0x689f61a1, 0xb641a4fe,
+    0x689bc2d1, 0xb63c825b,
+  0x689823bf, 0xb6375fe5, 0x6894846e, 0xb6323d9d, 0x6890e4dc, 0xb62d1b82,
+    0x688d4509, 0xb627f995,
+  0x6889a4f6, 0xb622d7d6, 0x688604a2, 0xb61db644, 0x6882640e, 0xb61894df,
+    0x687ec339, 0xb61373a9,
+  0x687b2224, 0xb60e529f, 0x687780ce, 0xb60931c4, 0x6873df38, 0xb6041116,
+    0x68703d62, 0xb5fef095,
+  0x686c9b4b, 0xb5f9d043, 0x6868f8f4, 0xb5f4b01e, 0x6865565c, 0xb5ef9026,
+    0x6861b384, 0xb5ea705d,
+  0x685e106c, 0xb5e550c1, 0x685a6d13, 0xb5e03153, 0x6856c979, 0xb5db1212,
+    0x685325a0, 0xb5d5f2ff,
+  0x684f8186, 0xb5d0d41a, 0x684bdd2c, 0xb5cbb563, 0x68483891, 0xb5c696da,
+    0x684493b6, 0xb5c1787e,
+  0x6840ee9b, 0xb5bc5a50, 0x683d493f, 0xb5b73c50, 0x6839a3a4, 0xb5b21e7e,
+    0x6835fdc7, 0xb5ad00d9,
+  0x683257ab, 0xb5a7e362, 0x682eb14e, 0xb5a2c61a, 0x682b0ab1, 0xb59da8ff,
+    0x682763d4, 0xb5988c12,
+  0x6823bcb7, 0xb5936f53, 0x68201559, 0xb58e52c2, 0x681c6dbb, 0xb589365e,
+    0x6818c5dd, 0xb5841a29,
+  0x68151dbe, 0xb57efe22, 0x68117560, 0xb579e248, 0x680dccc1, 0xb574c69d,
+    0x680a23e2, 0xb56fab1f,
+  0x68067ac3, 0xb56a8fd0, 0x6802d164, 0xb56574ae, 0x67ff27c4, 0xb56059bb,
+    0x67fb7de5, 0xb55b3ef5,
+  0x67f7d3c5, 0xb556245e, 0x67f42965, 0xb55109f5, 0x67f07ec5, 0xb54befba,
+    0x67ecd3e5, 0xb546d5ac,
+  0x67e928c5, 0xb541bbcd, 0x67e57d64, 0xb53ca21c, 0x67e1d1c4, 0xb5378899,
+    0x67de25e3, 0xb5326f45,
+  0x67da79c3, 0xb52d561e, 0x67d6cd62, 0xb5283d26, 0x67d320c1, 0xb523245b,
+    0x67cf73e1, 0xb51e0bbf,
+  0x67cbc6c0, 0xb518f351, 0x67c8195f, 0xb513db12, 0x67c46bbe, 0xb50ec300,
+    0x67c0bddd, 0xb509ab1d,
+  0x67bd0fbd, 0xb5049368, 0x67b9615c, 0xb4ff7be1, 0x67b5b2bb, 0xb4fa6489,
+    0x67b203da, 0xb4f54d5f,
+  0x67ae54ba, 0xb4f03663, 0x67aaa559, 0xb4eb1f95, 0x67a6f5b8, 0xb4e608f6,
+    0x67a345d8, 0xb4e0f285,
+  0x679f95b7, 0xb4dbdc42, 0x679be557, 0xb4d6c62e, 0x679834b6, 0xb4d1b048,
+    0x679483d6, 0xb4cc9a90,
+  0x6790d2b6, 0xb4c78507, 0x678d2156, 0xb4c26fad, 0x67896fb6, 0xb4bd5a80,
+    0x6785bdd6, 0xb4b84582,
+  0x67820bb7, 0xb4b330b3, 0x677e5957, 0xb4ae1c12, 0x677aa6b8, 0xb4a9079f,
+    0x6776f3d9, 0xb4a3f35b,
+  0x677340ba, 0xb49edf45, 0x676f8d5b, 0xb499cb5e, 0x676bd9bd, 0xb494b7a6,
+    0x676825de, 0xb48fa41c,
+  0x676471c0, 0xb48a90c0, 0x6760bd62, 0xb4857d93, 0x675d08c4, 0xb4806a95,
+    0x675953e7, 0xb47b57c5,
+  0x67559eca, 0xb4764523, 0x6751e96d, 0xb47132b1, 0x674e33d0, 0xb46c206d,
+    0x674a7df4, 0xb4670e57,
+  0x6746c7d8, 0xb461fc70, 0x6743117c, 0xb45ceab8, 0x673f5ae0, 0xb457d92f,
+    0x673ba405, 0xb452c7d4,
+  0x6737ecea, 0xb44db6a8, 0x67343590, 0xb448a5aa, 0x67307df5, 0xb44394db,
+    0x672cc61c, 0xb43e843b,
+  0x67290e02, 0xb43973ca, 0x672555a9, 0xb4346387, 0x67219d10, 0xb42f5373,
+    0x671de438, 0xb42a438e,
+  0x671a2b20, 0xb42533d8, 0x671671c8, 0xb4202451, 0x6712b831, 0xb41b14f8,
+    0x670efe5a, 0xb41605ce,
+  0x670b4444, 0xb410f6d3, 0x670789ee, 0xb40be807, 0x6703cf58, 0xb406d969,
+    0x67001483, 0xb401cafb,
+  0x66fc596f, 0xb3fcbcbb, 0x66f89e1b, 0xb3f7aeaa, 0x66f4e287, 0xb3f2a0c9,
+    0x66f126b4, 0xb3ed9316,
+  0x66ed6aa1, 0xb3e88592, 0x66e9ae4f, 0xb3e3783d, 0x66e5f1be, 0xb3de6b17,
+    0x66e234ed, 0xb3d95e1f,
+  0x66de77dc, 0xb3d45157, 0x66daba8c, 0xb3cf44be, 0x66d6fcfd, 0xb3ca3854,
+    0x66d33f2e, 0xb3c52c19,
+  0x66cf8120, 0xb3c0200c, 0x66cbc2d2, 0xb3bb142f, 0x66c80445, 0xb3b60881,
+    0x66c44579, 0xb3b0fd02,
+  0x66c0866d, 0xb3abf1b2, 0x66bcc721, 0xb3a6e691, 0x66b90797, 0xb3a1dba0,
+    0x66b547cd, 0xb39cd0dd,
+  0x66b187c3, 0xb397c649, 0x66adc77b, 0xb392bbe5, 0x66aa06f3, 0xb38db1b0,
+    0x66a6462b, 0xb388a7aa,
+  0x66a28524, 0xb3839dd3, 0x669ec3de, 0xb37e942b, 0x669b0259, 0xb3798ab2,
+    0x66974095, 0xb3748169,
+  0x66937e91, 0xb36f784f, 0x668fbc4e, 0xb36a6f64, 0x668bf9cb, 0xb36566a8,
+    0x66883709, 0xb3605e1c,
+  0x66847408, 0xb35b55bf, 0x6680b0c8, 0xb3564d91, 0x667ced49, 0xb3514592,
+    0x6679298a, 0xb34c3dc3,
+  0x6675658c, 0xb3473623, 0x6671a14f, 0xb3422eb2, 0x666ddcd3, 0xb33d2771,
+    0x666a1818, 0xb338205f,
+  0x6666531d, 0xb333197c, 0x66628de4, 0xb32e12c9, 0x665ec86b, 0xb3290c45,
+    0x665b02b3, 0xb32405f1,
+  0x66573cbb, 0xb31effcc, 0x66537685, 0xb319f9d6, 0x664fb010, 0xb314f410,
+    0x664be95b, 0xb30fee79,
+  0x66482267, 0xb30ae912, 0x66445b35, 0xb305e3da, 0x664093c3, 0xb300ded2,
+    0x663ccc12, 0xb2fbd9f9,
+  0x66390422, 0xb2f6d550, 0x66353bf3, 0xb2f1d0d6, 0x66317385, 0xb2eccc8c,
+    0x662daad8, 0xb2e7c871,
+  0x6629e1ec, 0xb2e2c486, 0x662618c1, 0xb2ddc0ca, 0x66224f56, 0xb2d8bd3e,
+    0x661e85ad, 0xb2d3b9e2,
+  0x661abbc5, 0xb2ceb6b5, 0x6616f19e, 0xb2c9b3b8, 0x66132738, 0xb2c4b0ea,
+    0x660f5c93, 0xb2bfae4c,
+  0x660b91af, 0xb2baabde, 0x6607c68c, 0xb2b5a99f, 0x6603fb2a, 0xb2b0a790,
+    0x66002f89, 0xb2aba5b1,
+  0x65fc63a9, 0xb2a6a402, 0x65f8978b, 0xb2a1a282, 0x65f4cb2d, 0xb29ca132,
+    0x65f0fe91, 0xb297a011,
+  0x65ed31b5, 0xb2929f21, 0x65e9649b, 0xb28d9e60, 0x65e59742, 0xb2889dcf,
+    0x65e1c9aa, 0xb2839d6d,
+  0x65ddfbd3, 0xb27e9d3c, 0x65da2dbd, 0xb2799d3a, 0x65d65f69, 0xb2749d68,
+    0x65d290d6, 0xb26f9dc6,
+  0x65cec204, 0xb26a9e54, 0x65caf2f3, 0xb2659f12, 0x65c723a3, 0xb2609fff,
+    0x65c35415, 0xb25ba11d,
+  0x65bf8447, 0xb256a26a, 0x65bbb43b, 0xb251a3e7, 0x65b7e3f1, 0xb24ca594,
+    0x65b41367, 0xb247a771,
+  0x65b0429f, 0xb242a97e, 0x65ac7198, 0xb23dabbb, 0x65a8a052, 0xb238ae28,
+    0x65a4cece, 0xb233b0c5,
+  0x65a0fd0b, 0xb22eb392, 0x659d2b09, 0xb229b68f, 0x659958c9, 0xb224b9bc,
+    0x6595864a, 0xb21fbd19,
+  0x6591b38c, 0xb21ac0a6, 0x658de08f, 0xb215c463, 0x658a0d54, 0xb210c850,
+    0x658639db, 0xb20bcc6d,
+  0x65826622, 0xb206d0ba, 0x657e922b, 0xb201d537, 0x657abdf6, 0xb1fcd9e5,
+    0x6576e982, 0xb1f7dec2,
+  0x657314cf, 0xb1f2e3d0, 0x656f3fde, 0xb1ede90e, 0x656b6aae, 0xb1e8ee7c,
+    0x6567953f, 0xb1e3f41a,
+  0x6563bf92, 0xb1def9e9, 0x655fe9a7, 0xb1d9ffe7, 0x655c137d, 0xb1d50616,
+    0x65583d14, 0xb1d00c75,
+  0x6554666d, 0xb1cb1304, 0x65508f87, 0xb1c619c3, 0x654cb863, 0xb1c120b3,
+    0x6548e101, 0xb1bc27d3,
+  0x6545095f, 0xb1b72f23, 0x65413180, 0xb1b236a4, 0x653d5962, 0xb1ad3e55,
+    0x65398105, 0xb1a84636,
+  0x6535a86b, 0xb1a34e47, 0x6531cf91, 0xb19e5689, 0x652df679, 0xb1995efb,
+    0x652a1d23, 0xb194679e,
+  0x6526438f, 0xb18f7071, 0x652269bc, 0xb18a7974, 0x651e8faa, 0xb18582a8,
+    0x651ab55b, 0xb1808c0c,
+  0x6516dacd, 0xb17b95a0, 0x65130000, 0xb1769f65, 0x650f24f5, 0xb171a95b,
+    0x650b49ac, 0xb16cb380,
+  0x65076e25, 0xb167bdd7, 0x6503925f, 0xb162c85d, 0x64ffb65b, 0xb15dd315,
+    0x64fbda18, 0xb158ddfd,
+  0x64f7fd98, 0xb153e915, 0x64f420d9, 0xb14ef45e, 0x64f043dc, 0xb149ffd7,
+    0x64ec66a0, 0xb1450b81,
+  0x64e88926, 0xb140175b, 0x64e4ab6e, 0xb13b2367, 0x64e0cd78, 0xb1362fa2,
+    0x64dcef44, 0xb1313c0e,
+  0x64d910d1, 0xb12c48ab, 0x64d53220, 0xb1275579, 0x64d15331, 0xb1226277,
+    0x64cd7404, 0xb11d6fa6,
+  0x64c99498, 0xb1187d05, 0x64c5b4ef, 0xb1138a95, 0x64c1d507, 0xb10e9856,
+    0x64bdf4e1, 0xb109a648,
+  0x64ba147d, 0xb104b46a, 0x64b633da, 0xb0ffc2bd, 0x64b252fa, 0xb0fad140,
+    0x64ae71dc, 0xb0f5dff5,
+  0x64aa907f, 0xb0f0eeda, 0x64a6aee4, 0xb0ebfdf0, 0x64a2cd0c, 0xb0e70d37,
+    0x649eeaf5, 0xb0e21cae,
+  0x649b08a0, 0xb0dd2c56, 0x6497260d, 0xb0d83c2f, 0x6493433c, 0xb0d34c39,
+    0x648f602d, 0xb0ce5c74,
+  0x648b7ce0, 0xb0c96ce0, 0x64879955, 0xb0c47d7c, 0x6483b58c, 0xb0bf8e4a,
+    0x647fd185, 0xb0ba9f48,
+  0x647bed3f, 0xb0b5b077, 0x647808bc, 0xb0b0c1d7, 0x647423fb, 0xb0abd368,
+    0x64703efc, 0xb0a6e52a,
+  0x646c59bf, 0xb0a1f71d, 0x64687444, 0xb09d0941, 0x64648e8c, 0xb0981b96,
+    0x6460a895, 0xb0932e1b,
+  0x645cc260, 0xb08e40d2, 0x6458dbed, 0xb08953ba, 0x6454f53d, 0xb08466d3,
+    0x64510e4e, 0xb07f7a1c,
+  0x644d2722, 0xb07a8d97, 0x64493fb8, 0xb075a143, 0x64455810, 0xb070b520,
+    0x6441702a, 0xb06bc92e,
+  0x643d8806, 0xb066dd6d, 0x64399fa5, 0xb061f1de, 0x6435b706, 0xb05d067f,
+    0x6431ce28, 0xb0581b51,
+  0x642de50d, 0xb0533055, 0x6429fbb5, 0xb04e458a, 0x6426121e, 0xb0495af0,
+    0x6422284a, 0xb0447087,
+  0x641e3e38, 0xb03f864f, 0x641a53e8, 0xb03a9c49, 0x6416695a, 0xb035b273,
+    0x64127e8f, 0xb030c8cf,
+  0x640e9386, 0xb02bdf5c, 0x640aa83f, 0xb026f61b, 0x6406bcba, 0xb0220d0a,
+    0x6402d0f8, 0xb01d242b,
+  0x63fee4f8, 0xb0183b7d, 0x63faf8bb, 0xb0135301, 0x63f70c3f, 0xb00e6ab5,
+    0x63f31f86, 0xb009829c,
+  0x63ef3290, 0xb0049ab3, 0x63eb455c, 0xafffb2fc, 0x63e757ea, 0xaffacb76,
+    0x63e36a3a, 0xaff5e421,
+  0x63df7c4d, 0xaff0fcfe, 0x63db8e22, 0xafec160c, 0x63d79fba, 0xafe72f4c,
+    0x63d3b114, 0xafe248bd,
+  0x63cfc231, 0xafdd625f, 0x63cbd310, 0xafd87c33, 0x63c7e3b1, 0xafd39638,
+    0x63c3f415, 0xafceb06f,
+  0x63c0043b, 0xafc9cad7, 0x63bc1424, 0xafc4e571, 0x63b823cf, 0xafc0003c,
+    0x63b4333d, 0xafbb1b39,
+  0x63b0426d, 0xafb63667, 0x63ac5160, 0xafb151c7, 0x63a86015, 0xafac6d58,
+    0x63a46e8d, 0xafa7891b,
+  0x63a07cc7, 0xafa2a50f, 0x639c8ac4, 0xaf9dc135, 0x63989884, 0xaf98dd8d,
+    0x6394a606, 0xaf93fa16,
+  0x6390b34a, 0xaf8f16d1, 0x638cc051, 0xaf8a33bd, 0x6388cd1b, 0xaf8550db,
+    0x6384d9a7, 0xaf806e2b,
+  0x6380e5f6, 0xaf7b8bac, 0x637cf208, 0xaf76a95f, 0x6378fddc, 0xaf71c743,
+    0x63750973, 0xaf6ce55a,
+  0x637114cc, 0xaf6803a2, 0x636d1fe9, 0xaf63221c, 0x63692ac7, 0xaf5e40c7,
+    0x63653569, 0xaf595fa4,
+  0x63613fcd, 0xaf547eb3, 0x635d49f4, 0xaf4f9df4, 0x635953dd, 0xaf4abd66,
+    0x63555d8a, 0xaf45dd0b,
+  0x635166f9, 0xaf40fce1, 0x634d702b, 0xaf3c1ce9, 0x6349791f, 0xaf373d22,
+    0x634581d6, 0xaf325d8e,
+  0x63418a50, 0xaf2d7e2b, 0x633d928d, 0xaf289efa, 0x63399a8d, 0xaf23bffb,
+    0x6335a24f, 0xaf1ee12e,
+  0x6331a9d4, 0xaf1a0293, 0x632db11c, 0xaf15242a, 0x6329b827, 0xaf1045f3,
+    0x6325bef5, 0xaf0b67ed,
+  0x6321c585, 0xaf068a1a, 0x631dcbd9, 0xaf01ac78, 0x6319d1ef, 0xaefccf09,
+    0x6315d7c8, 0xaef7f1cb,
+  0x6311dd64, 0xaef314c0, 0x630de2c3, 0xaeee37e6, 0x6309e7e4, 0xaee95b3f,
+    0x6305ecc9, 0xaee47ec9,
+  0x6301f171, 0xaedfa285, 0x62fdf5db, 0xaedac674, 0x62f9fa09, 0xaed5ea95,
+    0x62f5fdf9, 0xaed10ee7,
+  0x62f201ac, 0xaecc336c, 0x62ee0523, 0xaec75823, 0x62ea085c, 0xaec27d0c,
+    0x62e60b58, 0xaebda227,
+  0x62e20e17, 0xaeb8c774, 0x62de109a, 0xaeb3ecf3, 0x62da12df, 0xaeaf12a4,
+    0x62d614e7, 0xaeaa3888,
+  0x62d216b3, 0xaea55e9e, 0x62ce1841, 0xaea084e6, 0x62ca1992, 0xae9bab60,
+    0x62c61aa7, 0xae96d20c,
+  0x62c21b7e, 0xae91f8eb, 0x62be1c19, 0xae8d1ffb, 0x62ba1c77, 0xae88473e,
+    0x62b61c98, 0xae836eb4,
+  0x62b21c7b, 0xae7e965b, 0x62ae1c23, 0xae79be35, 0x62aa1b8d, 0xae74e641,
+    0x62a61aba, 0xae700e80,
+  0x62a219aa, 0xae6b36f0, 0x629e185e, 0xae665f93, 0x629a16d5, 0xae618869,
+    0x6296150f, 0xae5cb171,
+  0x6292130c, 0xae57daab, 0x628e10cc, 0xae530417, 0x628a0e50, 0xae4e2db6,
+    0x62860b97, 0xae495787,
+  0x628208a1, 0xae44818b, 0x627e056e, 0xae3fabc1, 0x627a01fe, 0xae3ad629,
+    0x6275fe52, 0xae3600c4,
+  0x6271fa69, 0xae312b92, 0x626df643, 0xae2c5691, 0x6269f1e1, 0xae2781c4,
+    0x6265ed42, 0xae22ad29,
+  0x6261e866, 0xae1dd8c0, 0x625de34e, 0xae19048a, 0x6259ddf8, 0xae143086,
+    0x6255d866, 0xae0f5cb5,
+  0x6251d298, 0xae0a8916, 0x624dcc8d, 0xae05b5aa, 0x6249c645, 0xae00e271,
+    0x6245bfc0, 0xadfc0f6a,
+  0x6241b8ff, 0xadf73c96, 0x623db202, 0xadf269f4, 0x6239aac7, 0xaded9785,
+    0x6235a351, 0xade8c548,
+  0x62319b9d, 0xade3f33e, 0x622d93ad, 0xaddf2167, 0x62298b81, 0xadda4fc3,
+    0x62258317, 0xadd57e51,
+  0x62217a72, 0xadd0ad12, 0x621d7190, 0xadcbdc05, 0x62196871, 0xadc70b2c,
+    0x62155f16, 0xadc23a85,
+  0x6211557e, 0xadbd6a10, 0x620d4baa, 0xadb899cf, 0x62094199, 0xadb3c9c0,
+    0x6205374c, 0xadaef9e4,
+  0x62012cc2, 0xadaa2a3b, 0x61fd21fc, 0xada55ac4, 0x61f916f9, 0xada08b80,
+    0x61f50bba, 0xad9bbc70,
+  0x61f1003f, 0xad96ed92, 0x61ecf487, 0xad921ee6, 0x61e8e893, 0xad8d506e,
+    0x61e4dc62, 0xad888229,
+  0x61e0cff5, 0xad83b416, 0x61dcc34c, 0xad7ee636, 0x61d8b666, 0xad7a1889,
+    0x61d4a944, 0xad754b0f,
+  0x61d09be5, 0xad707dc8, 0x61cc8e4b, 0xad6bb0b4, 0x61c88074, 0xad66e3d3,
+    0x61c47260, 0xad621725,
+  0x61c06410, 0xad5d4aaa, 0x61bc5584, 0xad587e61, 0x61b846bc, 0xad53b24c,
+    0x61b437b7, 0xad4ee66a,
+  0x61b02876, 0xad4a1aba, 0x61ac18f9, 0xad454f3e, 0x61a80940, 0xad4083f5,
+    0x61a3f94a, 0xad3bb8df,
+  0x619fe918, 0xad36edfc, 0x619bd8aa, 0xad32234b, 0x6197c800, 0xad2d58ce,
+    0x6193b719, 0xad288e85,
+  0x618fa5f7, 0xad23c46e, 0x618b9498, 0xad1efa8a, 0x618782fd, 0xad1a30d9,
+    0x61837126, 0xad15675c,
+  0x617f5f12, 0xad109e12, 0x617b4cc3, 0xad0bd4fb, 0x61773a37, 0xad070c17,
+    0x61732770, 0xad024366,
+  0x616f146c, 0xacfd7ae8, 0x616b012c, 0xacf8b29e, 0x6166edb0, 0xacf3ea87,
+    0x6162d9f8, 0xacef22a3,
+  0x615ec603, 0xacea5af2, 0x615ab1d3, 0xace59375, 0x61569d67, 0xace0cc2b,
+    0x615288be, 0xacdc0514,
+  0x614e73da, 0xacd73e30, 0x614a5eba, 0xacd27780, 0x6146495d, 0xaccdb103,
+    0x614233c5, 0xacc8eab9,
+  0x613e1df0, 0xacc424a3, 0x613a07e0, 0xacbf5ec0, 0x6135f193, 0xacba9910,
+    0x6131db0b, 0xacb5d394,
+  0x612dc447, 0xacb10e4b, 0x6129ad46, 0xacac4935, 0x6125960a, 0xaca78453,
+    0x61217e92, 0xaca2bfa4,
+  0x611d66de, 0xac9dfb29, 0x61194eee, 0xac9936e1, 0x611536c2, 0xac9472cd,
+    0x61111e5b, 0xac8faeec,
+  0x610d05b7, 0xac8aeb3e, 0x6108ecd8, 0xac8627c4, 0x6104d3bc, 0xac81647e,
+    0x6100ba65, 0xac7ca16b,
+  0x60fca0d2, 0xac77de8b, 0x60f88703, 0xac731bdf, 0x60f46cf9, 0xac6e5967,
+    0x60f052b2, 0xac699722,
+  0x60ec3830, 0xac64d510, 0x60e81d72, 0xac601333, 0x60e40278, 0xac5b5189,
+    0x60dfe743, 0xac569012,
+  0x60dbcbd1, 0xac51cecf, 0x60d7b024, 0xac4d0dc0, 0x60d3943b, 0xac484ce4,
+    0x60cf7817, 0xac438c3c,
+  0x60cb5bb7, 0xac3ecbc7, 0x60c73f1b, 0xac3a0b87, 0x60c32243, 0xac354b7a,
+    0x60bf0530, 0xac308ba0,
+  0x60bae7e1, 0xac2bcbfa, 0x60b6ca56, 0xac270c88, 0x60b2ac8f, 0xac224d4a,
+    0x60ae8e8d, 0xac1d8e40,
+  0x60aa7050, 0xac18cf69, 0x60a651d7, 0xac1410c6, 0x60a23322, 0xac0f5256,
+    0x609e1431, 0xac0a941b,
+  0x6099f505, 0xac05d613, 0x6095d59d, 0xac01183f, 0x6091b5fa, 0xabfc5a9f,
+    0x608d961b, 0xabf79d33,
+  0x60897601, 0xabf2dffb, 0x608555ab, 0xabee22f6, 0x60813519, 0xabe96625,
+    0x607d144c, 0xabe4a988,
+  0x6078f344, 0xabdfed1f, 0x6074d200, 0xabdb30ea, 0x6070b080, 0xabd674e9,
+    0x606c8ec5, 0xabd1b91c,
+  0x60686ccf, 0xabccfd83, 0x60644a9d, 0xabc8421d, 0x6060282f, 0xabc386ec,
+    0x605c0587, 0xabbecbee,
+  0x6057e2a2, 0xabba1125, 0x6053bf82, 0xabb5568f, 0x604f9c27, 0xabb09c2e,
+    0x604b7891, 0xababe200,
+  0x604754bf, 0xaba72807, 0x604330b1, 0xaba26e41, 0x603f0c69, 0xab9db4b0,
+    0x603ae7e5, 0xab98fb52,
+  0x6036c325, 0xab944229, 0x60329e2a, 0xab8f8934, 0x602e78f4, 0xab8ad073,
+    0x602a5383, 0xab8617e6,
+  0x60262dd6, 0xab815f8d, 0x602207ee, 0xab7ca768, 0x601de1ca, 0xab77ef77,
+    0x6019bb6b, 0xab7337bb,
+  0x601594d1, 0xab6e8032, 0x60116dfc, 0xab69c8de, 0x600d46ec, 0xab6511be,
+    0x60091fa0, 0xab605ad2,
+  0x6004f819, 0xab5ba41a, 0x6000d057, 0xab56ed97, 0x5ffca859, 0xab523748,
+    0x5ff88021, 0xab4d812d,
+  0x5ff457ad, 0xab48cb46, 0x5ff02efe, 0xab441593, 0x5fec0613, 0xab3f6015,
+    0x5fe7dcee, 0xab3aaacb,
+  0x5fe3b38d, 0xab35f5b5, 0x5fdf89f2, 0xab3140d4, 0x5fdb601b, 0xab2c8c27,
+    0x5fd73609, 0xab27d7ae,
+  0x5fd30bbc, 0xab23236a, 0x5fcee133, 0xab1e6f5a, 0x5fcab670, 0xab19bb7e,
+    0x5fc68b72, 0xab1507d7,
+  0x5fc26038, 0xab105464, 0x5fbe34c4, 0xab0ba125, 0x5fba0914, 0xab06ee1b,
+    0x5fb5dd29, 0xab023b46,
+  0x5fb1b104, 0xaafd88a4, 0x5fad84a3, 0xaaf8d637, 0x5fa95807, 0xaaf423ff,
+    0x5fa52b31, 0xaaef71fb,
+  0x5fa0fe1f, 0xaaeac02c, 0x5f9cd0d2, 0xaae60e91, 0x5f98a34a, 0xaae15d2a,
+    0x5f947588, 0xaadcabf8,
+  0x5f90478a, 0xaad7fafb, 0x5f8c1951, 0xaad34a32, 0x5f87eade, 0xaace999d,
+    0x5f83bc2f, 0xaac9e93e,
+  0x5f7f8d46, 0xaac53912, 0x5f7b5e22, 0xaac0891c, 0x5f772ec2, 0xaabbd959,
+    0x5f72ff28, 0xaab729cc,
+  0x5f6ecf53, 0xaab27a73, 0x5f6a9f44, 0xaaadcb4f, 0x5f666ef9, 0xaaa91c5f,
+    0x5f623e73, 0xaaa46da4,
+  0x5f5e0db3, 0xaa9fbf1e, 0x5f59dcb8, 0xaa9b10cc, 0x5f55ab82, 0xaa9662af,
+    0x5f517a11, 0xaa91b4c7,
+  0x5f4d4865, 0xaa8d0713, 0x5f49167f, 0xaa885994, 0x5f44e45e, 0xaa83ac4a,
+    0x5f40b202, 0xaa7eff34,
+  0x5f3c7f6b, 0xaa7a5253, 0x5f384c9a, 0xaa75a5a8, 0x5f34198e, 0xaa70f930,
+    0x5f2fe647, 0xaa6c4cee,
+  0x5f2bb2c5, 0xaa67a0e0, 0x5f277f09, 0xaa62f507, 0x5f234b12, 0xaa5e4963,
+    0x5f1f16e0, 0xaa599df4,
+  0x5f1ae274, 0xaa54f2ba, 0x5f16adcc, 0xaa5047b4, 0x5f1278eb, 0xaa4b9ce3,
+    0x5f0e43ce, 0xaa46f248,
+  0x5f0a0e77, 0xaa4247e1, 0x5f05d8e6, 0xaa3d9daf, 0x5f01a31a, 0xaa38f3b1,
+    0x5efd6d13, 0xaa3449e9,
+  0x5ef936d1, 0xaa2fa056, 0x5ef50055, 0xaa2af6f7, 0x5ef0c99f, 0xaa264dce,
+    0x5eec92ae, 0xaa21a4d9,
+  0x5ee85b82, 0xaa1cfc1a, 0x5ee4241c, 0xaa18538f, 0x5edfec7b, 0xaa13ab3a,
+    0x5edbb49f, 0xaa0f0319,
+  0x5ed77c8a, 0xaa0a5b2e, 0x5ed34439, 0xaa05b377, 0x5ecf0baf, 0xaa010bf6,
+    0x5ecad2e9, 0xa9fc64a9,
+  0x5ec699e9, 0xa9f7bd92, 0x5ec260af, 0xa9f316b0, 0x5ebe273b, 0xa9ee7002,
+    0x5eb9ed8b, 0xa9e9c98a,
+  0x5eb5b3a2, 0xa9e52347, 0x5eb1797e, 0xa9e07d39, 0x5ead3f1f, 0xa9dbd761,
+    0x5ea90487, 0xa9d731bd,
+  0x5ea4c9b3, 0xa9d28c4e, 0x5ea08ea6, 0xa9cde715, 0x5e9c535e, 0xa9c94211,
+    0x5e9817dc, 0xa9c49d42,
+  0x5e93dc1f, 0xa9bff8a8, 0x5e8fa028, 0xa9bb5444, 0x5e8b63f7, 0xa9b6b014,
+    0x5e87278b, 0xa9b20c1a,
+  0x5e82eae5, 0xa9ad6855, 0x5e7eae05, 0xa9a8c4c5, 0x5e7a70ea, 0xa9a4216b,
+    0x5e763395, 0xa99f7e46,
+  0x5e71f606, 0xa99adb56, 0x5e6db83d, 0xa996389b, 0x5e697a39, 0xa9919616,
+    0x5e653bfc, 0xa98cf3c6,
+  0x5e60fd84, 0xa98851ac, 0x5e5cbed1, 0xa983afc6, 0x5e587fe5, 0xa97f0e16,
+    0x5e5440be, 0xa97a6c9c,
+  0x5e50015d, 0xa975cb57, 0x5e4bc1c2, 0xa9712a47, 0x5e4781ed, 0xa96c896c,
+    0x5e4341de, 0xa967e8c7,
+  0x5e3f0194, 0xa9634858, 0x5e3ac110, 0xa95ea81d, 0x5e368053, 0xa95a0819,
+    0x5e323f5b, 0xa9556849,
+  0x5e2dfe29, 0xa950c8b0, 0x5e29bcbd, 0xa94c294b, 0x5e257b17, 0xa9478a1c,
+    0x5e213936, 0xa942eb23,
+  0x5e1cf71c, 0xa93e4c5f, 0x5e18b4c8, 0xa939add1, 0x5e147239, 0xa9350f78,
+    0x5e102f71, 0xa9307155,
+  0x5e0bec6e, 0xa92bd367, 0x5e07a932, 0xa92735af, 0x5e0365bb, 0xa922982c,
+    0x5dff220b, 0xa91dfadf,
+  0x5dfade20, 0xa9195dc7, 0x5df699fc, 0xa914c0e6, 0x5df2559e, 0xa9102439,
+    0x5dee1105, 0xa90b87c3,
+  0x5de9cc33, 0xa906eb82, 0x5de58727, 0xa9024f76, 0x5de141e1, 0xa8fdb3a1,
+    0x5ddcfc61, 0xa8f91801,
+  0x5dd8b6a7, 0xa8f47c97, 0x5dd470b3, 0xa8efe162, 0x5dd02a85, 0xa8eb4663,
+    0x5dcbe41d, 0xa8e6ab9a,
+  0x5dc79d7c, 0xa8e21106, 0x5dc356a1, 0xa8dd76a9, 0x5dbf0f8c, 0xa8d8dc81,
+    0x5dbac83d, 0xa8d4428f,
+  0x5db680b4, 0xa8cfa8d2, 0x5db238f1, 0xa8cb0f4b, 0x5dadf0f5, 0xa8c675fb,
+    0x5da9a8bf, 0xa8c1dce0,
+  0x5da5604f, 0xa8bd43fa, 0x5da117a5, 0xa8b8ab4b, 0x5d9ccec2, 0xa8b412d1,
+    0x5d9885a5, 0xa8af7a8e,
+  0x5d943c4e, 0xa8aae280, 0x5d8ff2bd, 0xa8a64aa8, 0x5d8ba8f3, 0xa8a1b306,
+    0x5d875eef, 0xa89d1b99,
+  0x5d8314b1, 0xa8988463, 0x5d7eca39, 0xa893ed63, 0x5d7a7f88, 0xa88f5698,
+    0x5d76349d, 0xa88ac004,
+  0x5d71e979, 0xa88629a5, 0x5d6d9e1b, 0xa881937c, 0x5d695283, 0xa87cfd8a,
+    0x5d6506b2, 0xa87867cd,
+  0x5d60baa7, 0xa873d246, 0x5d5c6e62, 0xa86f3cf6, 0x5d5821e4, 0xa86aa7db,
+    0x5d53d52d, 0xa86612f6,
+  0x5d4f883b, 0xa8617e48, 0x5d4b3b10, 0xa85ce9cf, 0x5d46edac, 0xa858558d,
+    0x5d42a00e, 0xa853c180,
+  0x5d3e5237, 0xa84f2daa, 0x5d3a0426, 0xa84a9a0a, 0x5d35b5db, 0xa84606a0,
+    0x5d316757, 0xa841736c,
+  0x5d2d189a, 0xa83ce06e, 0x5d28c9a3, 0xa8384da6, 0x5d247a72, 0xa833bb14,
+    0x5d202b09, 0xa82f28b9,
+  0x5d1bdb65, 0xa82a9693, 0x5d178b89, 0xa82604a4, 0x5d133b72, 0xa82172eb,
+    0x5d0eeb23, 0xa81ce169,
+  0x5d0a9a9a, 0xa818501c, 0x5d0649d7, 0xa813bf06, 0x5d01f8dc, 0xa80f2e26,
+    0x5cfda7a7, 0xa80a9d7c,
+  0x5cf95638, 0xa8060d08, 0x5cf50490, 0xa8017ccb, 0x5cf0b2af, 0xa7fcecc4,
+    0x5cec6095, 0xa7f85cf3,
+  0x5ce80e41, 0xa7f3cd59, 0x5ce3bbb4, 0xa7ef3df5, 0x5cdf68ed, 0xa7eaaec7,
+    0x5cdb15ed, 0xa7e61fd0,
+  0x5cd6c2b5, 0xa7e1910f, 0x5cd26f42, 0xa7dd0284, 0x5cce1b97, 0xa7d8742f,
+    0x5cc9c7b2, 0xa7d3e611,
+  0x5cc57394, 0xa7cf582a, 0x5cc11f3d, 0xa7caca79, 0x5cbccaac, 0xa7c63cfe,
+    0x5cb875e3, 0xa7c1afb9,
+  0x5cb420e0, 0xa7bd22ac, 0x5cafcba4, 0xa7b895d4, 0x5cab762f, 0xa7b40933,
+    0x5ca72080, 0xa7af7cc8,
+  0x5ca2ca99, 0xa7aaf094, 0x5c9e7478, 0xa7a66497, 0x5c9a1e1e, 0xa7a1d8d0,
+    0x5c95c78b, 0xa79d4d3f,
+  0x5c9170bf, 0xa798c1e5, 0x5c8d19ba, 0xa79436c1, 0x5c88c27c, 0xa78fabd4,
+    0x5c846b05, 0xa78b211e,
+  0x5c801354, 0xa786969e, 0x5c7bbb6b, 0xa7820c55, 0x5c776348, 0xa77d8242,
+    0x5c730aed, 0xa778f866,
+  0x5c6eb258, 0xa7746ec0, 0x5c6a598b, 0xa76fe551, 0x5c660084, 0xa76b5c19,
+    0x5c61a745, 0xa766d317,
+  0x5c5d4dcc, 0xa7624a4d, 0x5c58f41a, 0xa75dc1b8, 0x5c549a30, 0xa759395b,
+    0x5c50400d, 0xa754b134,
+  0x5c4be5b0, 0xa7502943, 0x5c478b1b, 0xa74ba18a, 0x5c43304d, 0xa7471a07,
+    0x5c3ed545, 0xa74292bb,
+  0x5c3a7a05, 0xa73e0ba5, 0x5c361e8c, 0xa73984c7, 0x5c31c2db, 0xa734fe1f,
+    0x5c2d66f0, 0xa73077ae,
+  0x5c290acc, 0xa72bf174, 0x5c24ae70, 0xa7276b70, 0x5c2051db, 0xa722e5a3,
+    0x5c1bf50d, 0xa71e600d,
+  0x5c179806, 0xa719daae, 0x5c133ac6, 0xa7155586, 0x5c0edd4e, 0xa710d095,
+    0x5c0a7f9c, 0xa70c4bda,
+  0x5c0621b2, 0xa707c757, 0x5c01c38f, 0xa703430a, 0x5bfd6534, 0xa6febef4,
+    0x5bf906a0, 0xa6fa3b15,
+  0x5bf4a7d2, 0xa6f5b76d, 0x5bf048cd, 0xa6f133fc, 0x5bebe98e, 0xa6ecb0c2,
+    0x5be78a17, 0xa6e82dbe,
+  0x5be32a67, 0xa6e3aaf2, 0x5bdeca7f, 0xa6df285d, 0x5bda6a5d, 0xa6daa5fe,
+    0x5bd60a03, 0xa6d623d7,
+  0x5bd1a971, 0xa6d1a1e7, 0x5bcd48a6, 0xa6cd202d, 0x5bc8e7a2, 0xa6c89eab,
+    0x5bc48666, 0xa6c41d60,
+  0x5bc024f0, 0xa6bf9c4b, 0x5bbbc343, 0xa6bb1b6e, 0x5bb7615d, 0xa6b69ac8,
+    0x5bb2ff3e, 0xa6b21a59,
+  0x5bae9ce7, 0xa6ad9a21, 0x5baa3a57, 0xa6a91a20, 0x5ba5d78e, 0xa6a49a56,
+    0x5ba1748d, 0xa6a01ac4,
+  0x5b9d1154, 0xa69b9b68, 0x5b98ade2, 0xa6971c44, 0x5b944a37, 0xa6929d57,
+    0x5b8fe654, 0xa68e1ea1,
+  0x5b8b8239, 0xa689a022, 0x5b871de5, 0xa68521da, 0x5b82b958, 0xa680a3ca,
+    0x5b7e5493, 0xa67c25f0,
+  0x5b79ef96, 0xa677a84e, 0x5b758a60, 0xa6732ae3, 0x5b7124f2, 0xa66eadb0,
+    0x5b6cbf4c, 0xa66a30b3,
+  0x5b68596d, 0xa665b3ee, 0x5b63f355, 0xa6613760, 0x5b5f8d06, 0xa65cbb0a,
+    0x5b5b267e, 0xa6583eeb,
+  0x5b56bfbd, 0xa653c303, 0x5b5258c4, 0xa64f4752, 0x5b4df193, 0xa64acbd9,
+    0x5b498a2a, 0xa6465097,
+  0x5b452288, 0xa641d58c, 0x5b40baae, 0xa63d5ab9, 0x5b3c529c, 0xa638e01d,
+    0x5b37ea51, 0xa63465b9,
+  0x5b3381ce, 0xa62feb8b, 0x5b2f1913, 0xa62b7196, 0x5b2ab020, 0xa626f7d7,
+    0x5b2646f4, 0xa6227e50,
+  0x5b21dd90, 0xa61e0501, 0x5b1d73f4, 0xa6198be9, 0x5b190a20, 0xa6151308,
+    0x5b14a014, 0xa6109a5f,
+  0x5b1035cf, 0xa60c21ee, 0x5b0bcb52, 0xa607a9b4, 0x5b07609d, 0xa60331b1,
+    0x5b02f5b0, 0xa5feb9e6,
+  0x5afe8a8b, 0xa5fa4252, 0x5afa1f2e, 0xa5f5caf6, 0x5af5b398, 0xa5f153d2,
+    0x5af147ca, 0xa5ecdce5,
+  0x5aecdbc5, 0xa5e8662f, 0x5ae86f87, 0xa5e3efb1, 0x5ae40311, 0xa5df796b,
+    0x5adf9663, 0xa5db035c,
+  0x5adb297d, 0xa5d68d85, 0x5ad6bc5f, 0xa5d217e6, 0x5ad24f09, 0xa5cda27e,
+    0x5acde17b, 0xa5c92d4e,
+  0x5ac973b5, 0xa5c4b855, 0x5ac505b7, 0xa5c04395, 0x5ac09781, 0xa5bbcf0b,
+    0x5abc2912, 0xa5b75aba,
+  0x5ab7ba6c, 0xa5b2e6a0, 0x5ab34b8e, 0xa5ae72be, 0x5aaedc78, 0xa5a9ff14,
+    0x5aaa6d2b, 0xa5a58ba1,
+  0x5aa5fda5, 0xa5a11866, 0x5aa18de7, 0xa59ca563, 0x5a9d1df1, 0xa5983297,
+    0x5a98adc4, 0xa593c004,
+  0x5a943d5e, 0xa58f4da8, 0x5a8fccc1, 0xa58adb84, 0x5a8b5bec, 0xa5866997,
+    0x5a86eadf, 0xa581f7e3,
+  0x5a82799a, 0xa57d8666, 0x5a7e081d, 0xa5791521, 0x5a799669, 0xa574a414,
+    0x5a75247c, 0xa570333f,
+  0x5a70b258, 0xa56bc2a2, 0x5a6c3ffc, 0xa567523c, 0x5a67cd69, 0xa562e20f,
+    0x5a635a9d, 0xa55e7219,
+  0x5a5ee79a, 0xa55a025b, 0x5a5a745f, 0xa55592d5, 0x5a5600ec, 0xa5512388,
+    0x5a518d42, 0xa54cb472,
+  0x5a4d1960, 0xa5484594, 0x5a48a546, 0xa543d6ee, 0x5a4430f5, 0xa53f687f,
+    0x5a3fbc6b, 0xa53afa49,
+  0x5a3b47ab, 0xa5368c4b, 0x5a36d2b2, 0xa5321e85, 0x5a325d82, 0xa52db0f7,
+    0x5a2de81a, 0xa52943a1,
+  0x5a29727b, 0xa524d683, 0x5a24fca4, 0xa520699d, 0x5a208695, 0xa51bfcef,
+    0x5a1c104f, 0xa5179079,
+  0x5a1799d1, 0xa513243b, 0x5a13231b, 0xa50eb836, 0x5a0eac2e, 0xa50a4c68,
+    0x5a0a350a, 0xa505e0d2,
+  0x5a05bdae, 0xa5017575, 0x5a01461a, 0xa4fd0a50, 0x59fcce4f, 0xa4f89f63,
+    0x59f8564c, 0xa4f434ae,
+  0x59f3de12, 0xa4efca31, 0x59ef65a1, 0xa4eb5fec, 0x59eaecf8, 0xa4e6f5e0,
+    0x59e67417, 0xa4e28c0c,
+  0x59e1faff, 0xa4de2270, 0x59dd81b0, 0xa4d9b90c, 0x59d90829, 0xa4d54fe0,
+    0x59d48e6a, 0xa4d0e6ed,
+  0x59d01475, 0xa4cc7e32, 0x59cb9a47, 0xa4c815af, 0x59c71fe3, 0xa4c3ad64,
+    0x59c2a547, 0xa4bf4552,
+  0x59be2a74, 0xa4badd78, 0x59b9af69, 0xa4b675d6, 0x59b53427, 0xa4b20e6d,
+    0x59b0b8ae, 0xa4ada73c,
+  0x59ac3cfd, 0xa4a94043, 0x59a7c115, 0xa4a4d982, 0x59a344f6, 0xa4a072fa,
+    0x599ec8a0, 0xa49c0cab,
+  0x599a4c12, 0xa497a693, 0x5995cf4d, 0xa49340b4, 0x59915250, 0xa48edb0e,
+    0x598cd51d, 0xa48a75a0,
+  0x598857b2, 0xa486106a, 0x5983da10, 0xa481ab6d, 0x597f5c36, 0xa47d46a8,
+    0x597ade26, 0xa478e21b,
+  0x59765fde, 0xa4747dc7, 0x5971e15f, 0xa47019ac, 0x596d62a9, 0xa46bb5c9,
+    0x5968e3bc, 0xa467521e,
+  0x59646498, 0xa462eeac, 0x595fe53c, 0xa45e8b73, 0x595b65aa, 0xa45a2872,
+    0x5956e5e0, 0xa455c5a9,
+  0x595265df, 0xa4516319, 0x594de5a7, 0xa44d00c2, 0x59496538, 0xa4489ea3,
+    0x5944e492, 0xa4443cbd,
+  0x594063b5, 0xa43fdb10, 0x593be2a0, 0xa43b799a, 0x59376155, 0xa437185e,
+    0x5932dfd3, 0xa432b75a,
+  0x592e5e19, 0xa42e568f, 0x5929dc29, 0xa429f5fd, 0x59255a02, 0xa42595a3,
+    0x5920d7a3, 0xa4213581,
+  0x591c550e, 0xa41cd599, 0x5917d242, 0xa41875e9, 0x59134f3e, 0xa4141672,
+    0x590ecc04, 0xa40fb733,
+  0x590a4893, 0xa40b582e, 0x5905c4eb, 0xa406f960, 0x5901410c, 0xa4029acc,
+    0x58fcbcf6, 0xa3fe3c71,
+  0x58f838a9, 0xa3f9de4e, 0x58f3b426, 0xa3f58064, 0x58ef2f6b, 0xa3f122b2,
+    0x58eaaa7a, 0xa3ecc53a,
+  0x58e62552, 0xa3e867fa, 0x58e19ff3, 0xa3e40af3, 0x58dd1a5d, 0xa3dfae25,
+    0x58d89490, 0xa3db5190,
+  0x58d40e8c, 0xa3d6f534, 0x58cf8852, 0xa3d29910, 0x58cb01e1, 0xa3ce3d25,
+    0x58c67b39, 0xa3c9e174,
+  0x58c1f45b, 0xa3c585fb, 0x58bd6d45, 0xa3c12abb, 0x58b8e5f9, 0xa3bccfb3,
+    0x58b45e76, 0xa3b874e5,
+  0x58afd6bd, 0xa3b41a50, 0x58ab4ecc, 0xa3afbff3, 0x58a6c6a5, 0xa3ab65d0,
+    0x58a23e48, 0xa3a70be6,
+  0x589db5b3, 0xa3a2b234, 0x58992ce9, 0xa39e58bb, 0x5894a3e7, 0xa399ff7c,
+    0x58901aaf, 0xa395a675,
+  0x588b9140, 0xa3914da8, 0x5887079a, 0xa38cf513, 0x58827dbe, 0xa3889cb8,
+    0x587df3ab, 0xa3844495,
+  0x58796962, 0xa37fecac, 0x5874dee2, 0xa37b94fb, 0x5870542c, 0xa3773d84,
+    0x586bc93f, 0xa372e646,
+  0x58673e1b, 0xa36e8f41, 0x5862b2c1, 0xa36a3875, 0x585e2730, 0xa365e1e2,
+    0x58599b69, 0xa3618b88,
+  0x58550f6c, 0xa35d3567, 0x58508338, 0xa358df80, 0x584bf6cd, 0xa35489d1,
+    0x58476a2c, 0xa350345c,
+  0x5842dd54, 0xa34bdf20, 0x583e5047, 0xa3478a1d, 0x5839c302, 0xa3433554,
+    0x58353587, 0xa33ee0c3,
+  0x5830a7d6, 0xa33a8c6c, 0x582c19ef, 0xa336384e, 0x58278bd1, 0xa331e469,
+    0x5822fd7c, 0xa32d90be,
+  0x581e6ef1, 0xa3293d4b, 0x5819e030, 0xa324ea13, 0x58155139, 0xa3209713,
+    0x5810c20b, 0xa31c444c,
+  0x580c32a7, 0xa317f1bf, 0x5807a30d, 0xa3139f6b, 0x5803133c, 0xa30f4d51,
+    0x57fe8335, 0xa30afb70,
+  0x57f9f2f8, 0xa306a9c8, 0x57f56284, 0xa3025859, 0x57f0d1da, 0xa2fe0724,
+    0x57ec40fa, 0xa2f9b629,
+  0x57e7afe4, 0xa2f56566, 0x57e31e97, 0xa2f114dd, 0x57de8d15, 0xa2ecc48e,
+    0x57d9fb5c, 0xa2e87477,
+  0x57d5696d, 0xa2e4249b, 0x57d0d747, 0xa2dfd4f7, 0x57cc44ec, 0xa2db858e,
+    0x57c7b25a, 0xa2d7365d,
+  0x57c31f92, 0xa2d2e766, 0x57be8c94, 0xa2ce98a9, 0x57b9f960, 0xa2ca4a25,
+    0x57b565f6, 0xa2c5fbda,
+  0x57b0d256, 0xa2c1adc9, 0x57ac3e80, 0xa2bd5ff2, 0x57a7aa73, 0xa2b91254,
+    0x57a31631, 0xa2b4c4f0,
+  0x579e81b8, 0xa2b077c5, 0x5799ed0a, 0xa2ac2ad3, 0x57955825, 0xa2a7de1c,
+    0x5790c30a, 0xa2a3919e,
+  0x578c2dba, 0xa29f4559, 0x57879833, 0xa29af94e, 0x57830276, 0xa296ad7d,
+    0x577e6c84, 0xa29261e5,
+  0x5779d65b, 0xa28e1687, 0x57753ffc, 0xa289cb63, 0x5770a968, 0xa2858078,
+    0x576c129d, 0xa28135c7,
+  0x57677b9d, 0xa27ceb4f, 0x5762e467, 0xa278a111, 0x575e4cfa, 0xa274570d,
+    0x5759b558, 0xa2700d43,
+  0x57551d80, 0xa26bc3b2, 0x57508572, 0xa2677a5b, 0x574bed2f, 0xa263313e,
+    0x574754b5, 0xa25ee85b,
+  0x5742bc06, 0xa25a9fb1, 0x573e2320, 0xa2565741, 0x57398a05, 0xa2520f0b,
+    0x5734f0b5, 0xa24dc70f,
+  0x5730572e, 0xa2497f4c, 0x572bbd71, 0xa24537c3, 0x5727237f, 0xa240f074,
+    0x57228957, 0xa23ca95f,
+  0x571deefa, 0xa2386284, 0x57195466, 0xa2341be3, 0x5714b99d, 0xa22fd57b,
+    0x57101e9e, 0xa22b8f4d,
+  0x570b8369, 0xa2274959, 0x5706e7ff, 0xa223039f, 0x57024c5f, 0xa21ebe1f,
+    0x56fdb08a, 0xa21a78d9,
+  0x56f9147e, 0xa21633cd, 0x56f4783d, 0xa211eefb, 0x56efdbc7, 0xa20daa62,
+    0x56eb3f1a, 0xa2096604,
+  0x56e6a239, 0xa20521e0, 0x56e20521, 0xa200ddf5, 0x56dd67d4, 0xa1fc9a45,
+    0x56d8ca51, 0xa1f856ce,
+  0x56d42c99, 0xa1f41392, 0x56cf8eab, 0xa1efd08f, 0x56caf088, 0xa1eb8dc7,
+    0x56c6522f, 0xa1e74b38,
+  0x56c1b3a1, 0xa1e308e4, 0x56bd14dd, 0xa1dec6ca, 0x56b875e4, 0xa1da84e9,
+    0x56b3d6b5, 0xa1d64343,
+  0x56af3750, 0xa1d201d7, 0x56aa97b7, 0xa1cdc0a5, 0x56a5f7e7, 0xa1c97fad,
+    0x56a157e3, 0xa1c53ef0,
+  0x569cb7a8, 0xa1c0fe6c, 0x56981739, 0xa1bcbe22, 0x56937694, 0xa1b87e13,
+    0x568ed5b9, 0xa1b43e3e,
+  0x568a34a9, 0xa1affea3, 0x56859364, 0xa1abbf42, 0x5680f1ea, 0xa1a7801b,
+    0x567c503a, 0xa1a3412f,
+  0x5677ae54, 0xa19f027c, 0x56730c3a, 0xa19ac404, 0x566e69ea, 0xa19685c7,
+    0x5669c765, 0xa19247c3,
+  0x566524aa, 0xa18e09fa, 0x566081ba, 0xa189cc6b, 0x565bde95, 0xa1858f16,
+    0x56573b3b, 0xa18151fb,
+  0x565297ab, 0xa17d151b, 0x564df3e6, 0xa178d875, 0x56494fec, 0xa1749c09,
+    0x5644abbc, 0xa1705fd8,
+  0x56400758, 0xa16c23e1, 0x563b62be, 0xa167e824, 0x5636bdef, 0xa163aca2,
+    0x563218eb, 0xa15f715a,
+  0x562d73b2, 0xa15b364d, 0x5628ce43, 0xa156fb79, 0x5624289f, 0xa152c0e1,
+    0x561f82c7, 0xa14e8682,
+  0x561adcb9, 0xa14a4c5e, 0x56163676, 0xa1461275, 0x56118ffe, 0xa141d8c5,
+    0x560ce950, 0xa13d9f51,
+  0x5608426e, 0xa1396617, 0x56039b57, 0xa1352d17, 0x55fef40a, 0xa130f451,
+    0x55fa4c89, 0xa12cbbc7,
+  0x55f5a4d2, 0xa1288376, 0x55f0fce7, 0xa1244b61, 0x55ec54c6, 0xa1201385,
+    0x55e7ac71, 0xa11bdbe4,
+  0x55e303e6, 0xa117a47e, 0x55de5b27, 0xa1136d52, 0x55d9b232, 0xa10f3661,
+    0x55d50909, 0xa10affab,
+  0x55d05faa, 0xa106c92f, 0x55cbb617, 0xa10292ed, 0x55c70c4f, 0xa0fe5ce6,
+    0x55c26251, 0xa0fa271a,
+  0x55bdb81f, 0xa0f5f189, 0x55b90db8, 0xa0f1bc32, 0x55b4631d, 0xa0ed8715,
+    0x55afb84c, 0xa0e95234,
+  0x55ab0d46, 0xa0e51d8c, 0x55a6620c, 0xa0e0e920, 0x55a1b69d, 0xa0dcb4ee,
+    0x559d0af9, 0xa0d880f7,
+  0x55985f20, 0xa0d44d3b, 0x5593b312, 0xa0d019b9, 0x558f06d0, 0xa0cbe672,
+    0x558a5a58, 0xa0c7b366,
+  0x5585adad, 0xa0c38095, 0x558100cc, 0xa0bf4dfe, 0x557c53b6, 0xa0bb1ba2,
+    0x5577a66c, 0xa0b6e981,
+  0x5572f8ed, 0xa0b2b79b, 0x556e4b39, 0xa0ae85ef, 0x55699d51, 0xa0aa547e,
+    0x5564ef34, 0xa0a62348,
+  0x556040e2, 0xa0a1f24d, 0x555b925c, 0xa09dc18d, 0x5556e3a1, 0xa0999107,
+    0x555234b1, 0xa09560bc,
+  0x554d858d, 0xa09130ad, 0x5548d634, 0xa08d00d8, 0x554426a7, 0xa088d13e,
+    0x553f76e4, 0xa084a1de,
+  0x553ac6ee, 0xa08072ba, 0x553616c2, 0xa07c43d1, 0x55316663, 0xa0781522,
+    0x552cb5ce, 0xa073e6af,
+  0x55280505, 0xa06fb876, 0x55235408, 0xa06b8a78, 0x551ea2d6, 0xa0675cb6,
+    0x5519f16f, 0xa0632f2e,
+  0x55153fd4, 0xa05f01e1, 0x55108e05, 0xa05ad4cf, 0x550bdc01, 0xa056a7f9,
+    0x550729c9, 0xa0527b5d,
+  0x5502775c, 0xa04e4efc, 0x54fdc4ba, 0xa04a22d7, 0x54f911e5, 0xa045f6ec,
+    0x54f45edb, 0xa041cb3c,
+  0x54efab9c, 0xa03d9fc8, 0x54eaf829, 0xa039748e, 0x54e64482, 0xa0354990,
+    0x54e190a6, 0xa0311ecd,
+  0x54dcdc96, 0xa02cf444, 0x54d82852, 0xa028c9f7, 0x54d373d9, 0xa0249fe5,
+    0x54cebf2c, 0xa020760e,
+  0x54ca0a4b, 0xa01c4c73, 0x54c55535, 0xa0182312, 0x54c09feb, 0xa013f9ed,
+    0x54bbea6d, 0xa00fd102,
+  0x54b734ba, 0xa00ba853, 0x54b27ed3, 0xa0077fdf, 0x54adc8b8, 0xa00357a7,
+    0x54a91269, 0x9fff2fa9,
+  0x54a45be6, 0x9ffb07e7, 0x549fa52e, 0x9ff6e060, 0x549aee42, 0x9ff2b914,
+    0x54963722, 0x9fee9204,
+  0x54917fce, 0x9fea6b2f, 0x548cc845, 0x9fe64495, 0x54881089, 0x9fe21e36,
+    0x54835898, 0x9fddf812,
+  0x547ea073, 0x9fd9d22a, 0x5479e81a, 0x9fd5ac7d, 0x54752f8d, 0x9fd1870c,
+    0x547076cc, 0x9fcd61d6,
+  0x546bbdd7, 0x9fc93cdb, 0x546704ae, 0x9fc5181b, 0x54624b50, 0x9fc0f397,
+    0x545d91bf, 0x9fbccf4f,
+  0x5458d7f9, 0x9fb8ab41, 0x54541e00, 0x9fb4876f, 0x544f63d2, 0x9fb063d9,
+    0x544aa971, 0x9fac407e,
+  0x5445eedb, 0x9fa81d5e, 0x54413412, 0x9fa3fa79, 0x543c7914, 0x9f9fd7d1,
+    0x5437bde3, 0x9f9bb563,
+  0x5433027d, 0x9f979331, 0x542e46e4, 0x9f93713b, 0x54298b17, 0x9f8f4f80,
+    0x5424cf16, 0x9f8b2e00,
+  0x542012e1, 0x9f870cbc, 0x541b5678, 0x9f82ebb4, 0x541699db, 0x9f7ecae7,
+    0x5411dd0a, 0x9f7aaa55,
+  0x540d2005, 0x9f7689ff, 0x540862cd, 0x9f7269e5, 0x5403a561, 0x9f6e4a06,
+    0x53fee7c1, 0x9f6a2a63,
+  0x53fa29ed, 0x9f660afb, 0x53f56be5, 0x9f61ebcf, 0x53f0adaa, 0x9f5dccde,
+    0x53ebef3a, 0x9f59ae29,
+  0x53e73097, 0x9f558fb0, 0x53e271c0, 0x9f517173, 0x53ddb2b6, 0x9f4d5371,
+    0x53d8f378, 0x9f4935aa,
+  0x53d43406, 0x9f45181f, 0x53cf7460, 0x9f40fad0, 0x53cab486, 0x9f3cddbd,
+    0x53c5f479, 0x9f38c0e5,
+  0x53c13439, 0x9f34a449, 0x53bc73c4, 0x9f3087e9, 0x53b7b31c, 0x9f2c6bc5,
+    0x53b2f240, 0x9f284fdc,
+  0x53ae3131, 0x9f24342f, 0x53a96fee, 0x9f2018bd, 0x53a4ae77, 0x9f1bfd88,
+    0x539feccd, 0x9f17e28e,
+  0x539b2af0, 0x9f13c7d0, 0x539668de, 0x9f0fad4e, 0x5391a699, 0x9f0b9307,
+    0x538ce421, 0x9f0778fd,
+  0x53882175, 0x9f035f2e, 0x53835e95, 0x9eff459b, 0x537e9b82, 0x9efb2c44,
+    0x5379d83c, 0x9ef71328,
+  0x537514c2, 0x9ef2fa49, 0x53705114, 0x9eeee1a5, 0x536b8d33, 0x9eeac93e,
+    0x5366c91f, 0x9ee6b112,
+  0x536204d7, 0x9ee29922, 0x535d405c, 0x9ede816e, 0x53587bad, 0x9eda69f6,
+    0x5353b6cb, 0x9ed652ba,
+  0x534ef1b5, 0x9ed23bb9, 0x534a2c6c, 0x9ece24f5, 0x534566f0, 0x9eca0e6d,
+    0x5340a140, 0x9ec5f820,
+  0x533bdb5d, 0x9ec1e210, 0x53371547, 0x9ebdcc3b, 0x53324efd, 0x9eb9b6a3,
+    0x532d8880, 0x9eb5a146,
+  0x5328c1d0, 0x9eb18c26, 0x5323faec, 0x9ead7742, 0x531f33d5, 0x9ea96299,
+    0x531a6c8b, 0x9ea54e2d,
+  0x5315a50e, 0x9ea139fd, 0x5310dd5d, 0x9e9d2608, 0x530c1579, 0x9e991250,
+    0x53074d62, 0x9e94fed4,
+  0x53028518, 0x9e90eb94, 0x52fdbc9a, 0x9e8cd890, 0x52f8f3e9, 0x9e88c5c9,
+    0x52f42b05, 0x9e84b33d,
+  0x52ef61ee, 0x9e80a0ee, 0x52ea98a4, 0x9e7c8eda, 0x52e5cf27, 0x9e787d03,
+    0x52e10576, 0x9e746b68,
+  0x52dc3b92, 0x9e705a09, 0x52d7717b, 0x9e6c48e7, 0x52d2a732, 0x9e683800,
+    0x52cddcb5, 0x9e642756,
+  0x52c91204, 0x9e6016e8, 0x52c44721, 0x9e5c06b6, 0x52bf7c0b, 0x9e57f6c0,
+    0x52bab0c2, 0x9e53e707,
+  0x52b5e546, 0x9e4fd78a, 0x52b11996, 0x9e4bc849, 0x52ac4db4, 0x9e47b944,
+    0x52a7819f, 0x9e43aa7c,
+  0x52a2b556, 0x9e3f9bf0, 0x529de8db, 0x9e3b8da0, 0x52991c2d, 0x9e377f8c,
+    0x52944f4c, 0x9e3371b5,
+  0x528f8238, 0x9e2f641b, 0x528ab4f1, 0x9e2b56bc, 0x5285e777, 0x9e27499a,
+    0x528119ca, 0x9e233cb4,
+  0x527c4bea, 0x9e1f300b, 0x52777dd7, 0x9e1b239e, 0x5272af92, 0x9e17176d,
+    0x526de11a, 0x9e130b79,
+  0x5269126e, 0x9e0effc1, 0x52644390, 0x9e0af446, 0x525f7480, 0x9e06e907,
+    0x525aa53c, 0x9e02de04,
+  0x5255d5c5, 0x9dfed33e, 0x5251061c, 0x9dfac8b4, 0x524c3640, 0x9df6be67,
+    0x52476631, 0x9df2b456,
+  0x524295f0, 0x9deeaa82, 0x523dc57b, 0x9deaa0ea, 0x5238f4d4, 0x9de6978f,
+    0x523423fb, 0x9de28e70,
+  0x522f52ee, 0x9dde858e, 0x522a81af, 0x9dda7ce9, 0x5225b03d, 0x9dd6747f,
+    0x5220de99, 0x9dd26c53,
+  0x521c0cc2, 0x9dce6463, 0x52173ab8, 0x9dca5caf, 0x5212687b, 0x9dc65539,
+    0x520d960c, 0x9dc24dfe,
+  0x5208c36a, 0x9dbe4701, 0x5203f096, 0x9dba4040, 0x51ff1d8f, 0x9db639bb,
+    0x51fa4a56, 0x9db23373,
+  0x51f576ea, 0x9dae2d68, 0x51f0a34b, 0x9daa279a, 0x51ebcf7a, 0x9da62208,
+    0x51e6fb76, 0x9da21cb2,
+  0x51e22740, 0x9d9e179a, 0x51dd52d7, 0x9d9a12be, 0x51d87e3c, 0x9d960e1f,
+    0x51d3a96f, 0x9d9209bd,
+  0x51ced46e, 0x9d8e0597, 0x51c9ff3c, 0x9d8a01ae, 0x51c529d7, 0x9d85fe02,
+    0x51c0543f, 0x9d81fa92,
+  0x51bb7e75, 0x9d7df75f, 0x51b6a879, 0x9d79f469, 0x51b1d24a, 0x9d75f1b0,
+    0x51acfbe9, 0x9d71ef34,
+  0x51a82555, 0x9d6decf4, 0x51a34e8f, 0x9d69eaf1, 0x519e7797, 0x9d65e92b,
+    0x5199a06d, 0x9d61e7a2,
+  0x5194c910, 0x9d5de656, 0x518ff180, 0x9d59e546, 0x518b19bf, 0x9d55e473,
+    0x518641cb, 0x9d51e3dd,
+  0x518169a5, 0x9d4de385, 0x517c914c, 0x9d49e368, 0x5177b8c2, 0x9d45e389,
+    0x5172e005, 0x9d41e3e7,
+  0x516e0715, 0x9d3de482, 0x51692df4, 0x9d39e559, 0x516454a0, 0x9d35e66e,
+    0x515f7b1a, 0x9d31e7bf,
+  0x515aa162, 0x9d2de94d, 0x5155c778, 0x9d29eb19, 0x5150ed5c, 0x9d25ed21,
+    0x514c130d, 0x9d21ef66,
+  0x5147388c, 0x9d1df1e9, 0x51425dd9, 0x9d19f4a8, 0x513d82f4, 0x9d15f7a4,
+    0x5138a7dd, 0x9d11fadd,
+  0x5133cc94, 0x9d0dfe54, 0x512ef119, 0x9d0a0207, 0x512a156b, 0x9d0605f7,
+    0x5125398c, 0x9d020a25,
+  0x51205d7b, 0x9cfe0e8f, 0x511b8137, 0x9cfa1337, 0x5116a4c1, 0x9cf6181c,
+    0x5111c81a, 0x9cf21d3d,
+  0x510ceb40, 0x9cee229c, 0x51080e35, 0x9cea2838, 0x510330f7, 0x9ce62e11,
+    0x50fe5388, 0x9ce23427,
+  0x50f975e6, 0x9cde3a7b, 0x50f49813, 0x9cda410b, 0x50efba0d, 0x9cd647d9,
+    0x50eadbd6, 0x9cd24ee4,
+  0x50e5fd6d, 0x9cce562c, 0x50e11ed2, 0x9cca5db1, 0x50dc4005, 0x9cc66573,
+    0x50d76106, 0x9cc26d73,
+  0x50d281d5, 0x9cbe75b0, 0x50cda272, 0x9cba7e2a, 0x50c8c2de, 0x9cb686e1,
+    0x50c3e317, 0x9cb28fd5,
+  0x50bf031f, 0x9cae9907, 0x50ba22f5, 0x9caaa276, 0x50b5429a, 0x9ca6ac23,
+    0x50b0620c, 0x9ca2b60c,
+  0x50ab814d, 0x9c9ec033, 0x50a6a05c, 0x9c9aca97, 0x50a1bf39, 0x9c96d539,
+    0x509cdde4, 0x9c92e017,
+  0x5097fc5e, 0x9c8eeb34, 0x50931aa6, 0x9c8af68d, 0x508e38bd, 0x9c870224,
+    0x508956a1, 0x9c830df8,
+  0x50847454, 0x9c7f1a0a, 0x507f91d5, 0x9c7b2659, 0x507aaf25, 0x9c7732e5,
+    0x5075cc43, 0x9c733faf,
+  0x5070e92f, 0x9c6f4cb6, 0x506c05ea, 0x9c6b59fa, 0x50672273, 0x9c67677c,
+    0x50623ecb, 0x9c63753c,
+  0x505d5af1, 0x9c5f8339, 0x505876e5, 0x9c5b9173, 0x505392a8, 0x9c579feb,
+    0x504eae39, 0x9c53aea0,
+  0x5049c999, 0x9c4fbd93, 0x5044e4c7, 0x9c4bccc3, 0x503fffc4, 0x9c47dc31,
+    0x503b1a8f, 0x9c43ebdc,
+  0x50363529, 0x9c3ffbc5, 0x50314f91, 0x9c3c0beb, 0x502c69c8, 0x9c381c4f,
+    0x502783cd, 0x9c342cf0,
+  0x50229da1, 0x9c303dcf, 0x501db743, 0x9c2c4eec, 0x5018d0b4, 0x9c286046,
+    0x5013e9f4, 0x9c2471de,
+  0x500f0302, 0x9c2083b3, 0x500a1bdf, 0x9c1c95c6, 0x5005348a, 0x9c18a816,
+    0x50004d04, 0x9c14baa4,
+  0x4ffb654d, 0x9c10cd70, 0x4ff67d64, 0x9c0ce07a, 0x4ff1954b, 0x9c08f3c1,
+    0x4fecacff, 0x9c050745,
+  0x4fe7c483, 0x9c011b08, 0x4fe2dbd5, 0x9bfd2f08, 0x4fddf2f6, 0x9bf94346,
+    0x4fd909e5, 0x9bf557c1,
+  0x4fd420a4, 0x9bf16c7a, 0x4fcf3731, 0x9bed8171, 0x4fca4d8d, 0x9be996a6,
+    0x4fc563b7, 0x9be5ac18,
+  0x4fc079b1, 0x9be1c1c8, 0x4fbb8f79, 0x9bddd7b6, 0x4fb6a510, 0x9bd9ede2,
+    0x4fb1ba76, 0x9bd6044b,
+  0x4faccfab, 0x9bd21af3, 0x4fa7e4af, 0x9bce31d8, 0x4fa2f981, 0x9bca48fa,
+    0x4f9e0e22, 0x9bc6605b,
+  0x4f992293, 0x9bc277fa, 0x4f9436d2, 0x9bbe8fd6, 0x4f8f4ae0, 0x9bbaa7f0,
+    0x4f8a5ebd, 0x9bb6c048,
+  0x4f857269, 0x9bb2d8de, 0x4f8085e4, 0x9baef1b2, 0x4f7b992d, 0x9bab0ac3,
+    0x4f76ac46, 0x9ba72413,
+  0x4f71bf2e, 0x9ba33da0, 0x4f6cd1e5, 0x9b9f576b, 0x4f67e46a, 0x9b9b7174,
+    0x4f62f6bf, 0x9b978bbc,
+  0x4f5e08e3, 0x9b93a641, 0x4f591ad6, 0x9b8fc104, 0x4f542c98, 0x9b8bdc05,
+    0x4f4f3e29, 0x9b87f744,
+  0x4f4a4f89, 0x9b8412c1, 0x4f4560b8, 0x9b802e7b, 0x4f4071b6, 0x9b7c4a74,
+    0x4f3b8284, 0x9b7866ab,
+  0x4f369320, 0x9b748320, 0x4f31a38c, 0x9b709fd3, 0x4f2cb3c7, 0x9b6cbcc4,
+    0x4f27c3d1, 0x9b68d9f3,
+  0x4f22d3aa, 0x9b64f760, 0x4f1de352, 0x9b61150b, 0x4f18f2c9, 0x9b5d32f4,
+    0x4f140210, 0x9b59511c,
+  0x4f0f1126, 0x9b556f81, 0x4f0a200b, 0x9b518e24, 0x4f052ec0, 0x9b4dad06,
+    0x4f003d43, 0x9b49cc26,
+  0x4efb4b96, 0x9b45eb83, 0x4ef659b8, 0x9b420b1f, 0x4ef167aa, 0x9b3e2af9,
+    0x4eec756b, 0x9b3a4b11,
+  0x4ee782fb, 0x9b366b68, 0x4ee2905a, 0x9b328bfc, 0x4edd9d89, 0x9b2eaccf,
+    0x4ed8aa87, 0x9b2acde0,
+  0x4ed3b755, 0x9b26ef2f, 0x4ecec3f2, 0x9b2310bc, 0x4ec9d05e, 0x9b1f3288,
+    0x4ec4dc99, 0x9b1b5492,
+  0x4ebfe8a5, 0x9b1776da, 0x4ebaf47f, 0x9b139960, 0x4eb60029, 0x9b0fbc24,
+    0x4eb10ba2, 0x9b0bdf27,
+  0x4eac16eb, 0x9b080268, 0x4ea72203, 0x9b0425e8, 0x4ea22ceb, 0x9b0049a5,
+    0x4e9d37a3, 0x9afc6da1,
+  0x4e984229, 0x9af891db, 0x4e934c80, 0x9af4b654, 0x4e8e56a5, 0x9af0db0b,
+    0x4e89609b, 0x9aed0000,
+  0x4e846a60, 0x9ae92533, 0x4e7f73f4, 0x9ae54aa5, 0x4e7a7d58, 0x9ae17056,
+    0x4e75868c, 0x9add9644,
+  0x4e708f8f, 0x9ad9bc71, 0x4e6b9862, 0x9ad5e2dd, 0x4e66a105, 0x9ad20987,
+    0x4e61a977, 0x9ace306f,
+  0x4e5cb1b9, 0x9aca5795, 0x4e57b9ca, 0x9ac67efb, 0x4e52c1ab, 0x9ac2a69e,
+    0x4e4dc95c, 0x9abece80,
+  0x4e48d0dd, 0x9abaf6a1, 0x4e43d82d, 0x9ab71eff, 0x4e3edf4d, 0x9ab3479d,
+    0x4e39e63d, 0x9aaf7079,
+  0x4e34ecfc, 0x9aab9993, 0x4e2ff38b, 0x9aa7c2ec, 0x4e2af9ea, 0x9aa3ec83,
+    0x4e260019, 0x9aa01659,
+  0x4e210617, 0x9a9c406e, 0x4e1c0be6, 0x9a986ac1, 0x4e171184, 0x9a949552,
+    0x4e1216f2, 0x9a90c022,
+  0x4e0d1c30, 0x9a8ceb31, 0x4e08213e, 0x9a89167e, 0x4e03261b, 0x9a85420a,
+    0x4dfe2ac9, 0x9a816dd5,
+  0x4df92f46, 0x9a7d99de, 0x4df43393, 0x9a79c625, 0x4def37b0, 0x9a75f2ac,
+    0x4dea3b9d, 0x9a721f71,
+  0x4de53f5a, 0x9a6e4c74, 0x4de042e7, 0x9a6a79b6, 0x4ddb4644, 0x9a66a737,
+    0x4dd64971, 0x9a62d4f7,
+  0x4dd14c6e, 0x9a5f02f5, 0x4dcc4f3b, 0x9a5b3132, 0x4dc751d8, 0x9a575fae,
+    0x4dc25445, 0x9a538e68,
+  0x4dbd5682, 0x9a4fbd61, 0x4db8588f, 0x9a4bec99, 0x4db35a6c, 0x9a481c0f,
+    0x4dae5c19, 0x9a444bc5,
+  0x4da95d96, 0x9a407bb9, 0x4da45ee3, 0x9a3cabeb, 0x4d9f6001, 0x9a38dc5d,
+    0x4d9a60ee, 0x9a350d0d,
+  0x4d9561ac, 0x9a313dfc, 0x4d90623a, 0x9a2d6f2a, 0x4d8b6298, 0x9a29a097,
+    0x4d8662c6, 0x9a25d243,
+  0x4d8162c4, 0x9a22042d, 0x4d7c6293, 0x9a1e3656, 0x4d776231, 0x9a1a68be,
+    0x4d7261a0, 0x9a169b65,
+  0x4d6d60df, 0x9a12ce4b, 0x4d685fef, 0x9a0f016f, 0x4d635ece, 0x9a0b34d3,
+    0x4d5e5d7e, 0x9a076875,
+  0x4d595bfe, 0x9a039c57, 0x4d545a4f, 0x99ffd077, 0x4d4f5870, 0x99fc04d6,
+    0x4d4a5661, 0x99f83974,
+  0x4d455422, 0x99f46e51, 0x4d4051b4, 0x99f0a36d, 0x4d3b4f16, 0x99ecd8c8,
+    0x4d364c48, 0x99e90e62,
+  0x4d31494b, 0x99e5443b, 0x4d2c461e, 0x99e17a53, 0x4d2742c2, 0x99ddb0aa,
+    0x4d223f36, 0x99d9e73f,
+  0x4d1d3b7a, 0x99d61e14, 0x4d18378f, 0x99d25528, 0x4d133374, 0x99ce8c7b,
+    0x4d0e2f2a, 0x99cac40d,
+  0x4d092ab0, 0x99c6fbde, 0x4d042607, 0x99c333ee, 0x4cff212e, 0x99bf6c3d,
+    0x4cfa1c26, 0x99bba4cb,
+  0x4cf516ee, 0x99b7dd99, 0x4cf01187, 0x99b416a5, 0x4ceb0bf0, 0x99b04ff0,
+    0x4ce6062a, 0x99ac897b,
+  0x4ce10034, 0x99a8c345, 0x4cdbfa0f, 0x99a4fd4d, 0x4cd6f3bb, 0x99a13795,
+    0x4cd1ed37, 0x999d721c,
+  0x4ccce684, 0x9999ace3, 0x4cc7dfa1, 0x9995e7e8, 0x4cc2d88f, 0x9992232d,
+    0x4cbdd14e, 0x998e5eb1,
+  0x4cb8c9dd, 0x998a9a74, 0x4cb3c23d, 0x9986d676, 0x4caeba6e, 0x998312b7,
+    0x4ca9b26f, 0x997f4f38,
+  0x4ca4aa41, 0x997b8bf8, 0x4c9fa1e4, 0x9977c8f7, 0x4c9a9958, 0x99740635,
+    0x4c95909c, 0x997043b2,
+  0x4c9087b1, 0x996c816f, 0x4c8b7e97, 0x9968bf6b, 0x4c86754e, 0x9964fda7,
+    0x4c816bd5, 0x99613c22,
+  0x4c7c622d, 0x995d7adc, 0x4c775856, 0x9959b9d5, 0x4c724e50, 0x9955f90d,
+    0x4c6d441b, 0x99523885,
+  0x4c6839b7, 0x994e783d, 0x4c632f23, 0x994ab833, 0x4c5e2460, 0x9946f869,
+    0x4c59196f, 0x994338df,
+  0x4c540e4e, 0x993f7993, 0x4c4f02fe, 0x993bba87, 0x4c49f77f, 0x9937fbbb,
+    0x4c44ebd1, 0x99343d2e,
+  0x4c3fdff4, 0x99307ee0, 0x4c3ad3e7, 0x992cc0d2, 0x4c35c7ac, 0x99290303,
+    0x4c30bb42, 0x99254574,
+  0x4c2baea9, 0x99218824, 0x4c26a1e1, 0x991dcb13, 0x4c2194e9, 0x991a0e42,
+    0x4c1c87c3, 0x991651b1,
+  0x4c177a6e, 0x9912955f, 0x4c126cea, 0x990ed94c, 0x4c0d5f37, 0x990b1d79,
+    0x4c085156, 0x990761e5,
+  0x4c034345, 0x9903a691, 0x4bfe3505, 0x98ffeb7d, 0x4bf92697, 0x98fc30a8,
+    0x4bf417f9, 0x98f87612,
+  0x4bef092d, 0x98f4bbbc, 0x4be9fa32, 0x98f101a6, 0x4be4eb08, 0x98ed47cf,
+    0x4bdfdbaf, 0x98e98e38,
+  0x4bdacc28, 0x98e5d4e0, 0x4bd5bc72, 0x98e21bc8, 0x4bd0ac8d, 0x98de62f0,
+    0x4bcb9c79, 0x98daaa57,
+  0x4bc68c36, 0x98d6f1fe, 0x4bc17bc5, 0x98d339e4, 0x4bbc6b25, 0x98cf820b,
+    0x4bb75a56, 0x98cbca70,
+  0x4bb24958, 0x98c81316, 0x4bad382c, 0x98c45bfb, 0x4ba826d1, 0x98c0a520,
+    0x4ba31548, 0x98bcee84,
+  0x4b9e0390, 0x98b93828, 0x4b98f1a9, 0x98b5820c, 0x4b93df93, 0x98b1cc30,
+    0x4b8ecd4f, 0x98ae1693,
+  0x4b89badd, 0x98aa6136, 0x4b84a83b, 0x98a6ac19, 0x4b7f956b, 0x98a2f73c,
+    0x4b7a826d, 0x989f429e,
+  0x4b756f40, 0x989b8e40, 0x4b705be4, 0x9897da22, 0x4b6b485a, 0x98942643,
+    0x4b6634a2, 0x989072a5,
+  0x4b6120bb, 0x988cbf46, 0x4b5c0ca5, 0x98890c27, 0x4b56f861, 0x98855948,
+    0x4b51e3ee, 0x9881a6a9,
+  0x4b4ccf4d, 0x987df449, 0x4b47ba7e, 0x987a422a, 0x4b42a580, 0x9876904a,
+    0x4b3d9053, 0x9872deaa,
+  0x4b387af9, 0x986f2d4a, 0x4b336570, 0x986b7c2a, 0x4b2e4fb8, 0x9867cb4a,
+    0x4b2939d2, 0x98641aa9,
+  0x4b2423be, 0x98606a49, 0x4b1f0d7b, 0x985cba28, 0x4b19f70a, 0x98590a48,
+    0x4b14e06b, 0x98555aa7,
+  0x4b0fc99d, 0x9851ab46, 0x4b0ab2a1, 0x984dfc26, 0x4b059b77, 0x984a4d45,
+    0x4b00841f, 0x98469ea4,
+  0x4afb6c98, 0x9842f043, 0x4af654e3, 0x983f4223, 0x4af13d00, 0x983b9442,
+    0x4aec24ee, 0x9837e6a1,
+  0x4ae70caf, 0x98343940, 0x4ae1f441, 0x98308c1f, 0x4adcdba5, 0x982cdf3f,
+    0x4ad7c2da, 0x9829329e,
+  0x4ad2a9e2, 0x9825863d, 0x4acd90bb, 0x9821da1d, 0x4ac87767, 0x981e2e3c,
+    0x4ac35de4, 0x981a829c,
+  0x4abe4433, 0x9816d73b, 0x4ab92a54, 0x98132c1b, 0x4ab41046, 0x980f813b,
+    0x4aaef60b, 0x980bd69b,
+  0x4aa9dba2, 0x98082c3b, 0x4aa4c10b, 0x9804821b, 0x4a9fa645, 0x9800d83c,
+    0x4a9a8b52, 0x97fd2e9c,
+  0x4a957030, 0x97f9853d, 0x4a9054e1, 0x97f5dc1e, 0x4a8b3963, 0x97f2333f,
+    0x4a861db8, 0x97ee8aa0,
+  0x4a8101de, 0x97eae242, 0x4a7be5d7, 0x97e73a23, 0x4a76c9a2, 0x97e39245,
+    0x4a71ad3e, 0x97dfeaa7,
+  0x4a6c90ad, 0x97dc4349, 0x4a6773ee, 0x97d89c2c, 0x4a625701, 0x97d4f54f,
+    0x4a5d39e6, 0x97d14eb2,
+  0x4a581c9e, 0x97cda855, 0x4a52ff27, 0x97ca0239, 0x4a4de182, 0x97c65c5c,
+    0x4a48c3b0, 0x97c2b6c1,
+  0x4a43a5b0, 0x97bf1165, 0x4a3e8782, 0x97bb6c4a, 0x4a396926, 0x97b7c76f,
+    0x4a344a9d, 0x97b422d4,
+  0x4a2f2be6, 0x97b07e7a, 0x4a2a0d01, 0x97acda60, 0x4a24edee, 0x97a93687,
+    0x4a1fcead, 0x97a592ed,
+  0x4a1aaf3f, 0x97a1ef94, 0x4a158fa3, 0x979e4c7c, 0x4a106fda, 0x979aa9a4,
+    0x4a0b4fe2, 0x9797070c,
+  0x4a062fbd, 0x979364b5, 0x4a010f6b, 0x978fc29e, 0x49fbeeea, 0x978c20c8,
+    0x49f6ce3c, 0x97887f32,
+  0x49f1ad61, 0x9784dddc, 0x49ec8c57, 0x97813cc7, 0x49e76b21, 0x977d9bf2,
+    0x49e249bc, 0x9779fb5e,
+  0x49dd282a, 0x97765b0a, 0x49d8066b, 0x9772baf7, 0x49d2e47e, 0x976f1b24,
+    0x49cdc263, 0x976b7b92,
+  0x49c8a01b, 0x9767dc41, 0x49c37da5, 0x97643d2f, 0x49be5b02, 0x97609e5f,
+    0x49b93832, 0x975cffcf,
+  0x49b41533, 0x9759617f, 0x49aef208, 0x9755c370, 0x49a9ceaf, 0x975225a1,
+    0x49a4ab28, 0x974e8813,
+  0x499f8774, 0x974aeac6, 0x499a6393, 0x97474db9, 0x49953f84, 0x9743b0ed,
+    0x49901b48, 0x97401462,
+  0x498af6df, 0x973c7817, 0x4985d248, 0x9738dc0d, 0x4980ad84, 0x97354043,
+    0x497b8892, 0x9731a4ba,
+  0x49766373, 0x972e0971, 0x49713e27, 0x972a6e6a, 0x496c18ae, 0x9726d3a3,
+    0x4966f307, 0x9723391c,
+  0x4961cd33, 0x971f9ed7, 0x495ca732, 0x971c04d2, 0x49578103, 0x97186b0d,
+    0x49525aa7, 0x9714d18a,
+  0x494d341e, 0x97113847, 0x49480d68, 0x970d9f45, 0x4942e684, 0x970a0683,
+    0x493dbf74, 0x97066e03,
+  0x49389836, 0x9702d5c3, 0x493370cb, 0x96ff3dc4, 0x492e4933, 0x96fba605,
+    0x4929216e, 0x96f80e88,
+  0x4923f97b, 0x96f4774b, 0x491ed15c, 0x96f0e04f, 0x4919a90f, 0x96ed4994,
+    0x49148095, 0x96e9b319,
+  0x490f57ee, 0x96e61ce0, 0x490a2f1b, 0x96e286e7, 0x4905061a, 0x96def12f,
+    0x48ffdcec, 0x96db5bb8,
+  0x48fab391, 0x96d7c682, 0x48f58a09, 0x96d4318d, 0x48f06054, 0x96d09cd8,
+    0x48eb3672, 0x96cd0865,
+  0x48e60c62, 0x96c97432, 0x48e0e227, 0x96c5e040, 0x48dbb7be, 0x96c24c8f,
+    0x48d68d28, 0x96beb91f,
+  0x48d16265, 0x96bb25f0, 0x48cc3775, 0x96b79302, 0x48c70c59, 0x96b40055,
+    0x48c1e10f, 0x96b06de9,
+  0x48bcb599, 0x96acdbbe, 0x48b789f5, 0x96a949d3, 0x48b25e25, 0x96a5b82a,
+    0x48ad3228, 0x96a226c2,
+  0x48a805ff, 0x969e959b, 0x48a2d9a8, 0x969b04b4, 0x489dad25, 0x9697740f,
+    0x48988074, 0x9693e3ab,
+  0x48935397, 0x96905388, 0x488e268e, 0x968cc3a5, 0x4888f957, 0x96893404,
+    0x4883cbf4, 0x9685a4a4,
+  0x487e9e64, 0x96821585, 0x487970a7, 0x967e86a7, 0x487442be, 0x967af80a,
+    0x486f14a8, 0x967769af,
+  0x4869e665, 0x9673db94, 0x4864b7f5, 0x96704dba, 0x485f8959, 0x966cc022,
+    0x485a5a90, 0x966932cb,
+  0x48552b9b, 0x9665a5b4, 0x484ffc79, 0x966218df, 0x484acd2a, 0x965e8c4b,
+    0x48459daf, 0x965afff9,
+  0x48406e08, 0x965773e7, 0x483b3e33, 0x9653e817, 0x48360e32, 0x96505c88,
+    0x4830de05, 0x964cd139,
+  0x482badab, 0x9649462d, 0x48267d24, 0x9645bb61, 0x48214c71, 0x964230d7,
+    0x481c1b92, 0x963ea68d,
+  0x4816ea86, 0x963b1c86, 0x4811b94d, 0x963792bf, 0x480c87e8, 0x96340939,
+    0x48075657, 0x96307ff5,
+  0x48022499, 0x962cf6f2, 0x47fcf2af, 0x96296e31, 0x47f7c099, 0x9625e5b0,
+    0x47f28e56, 0x96225d71,
+  0x47ed5be6, 0x961ed574, 0x47e8294a, 0x961b4db7, 0x47e2f682, 0x9617c63c,
+    0x47ddc38e, 0x96143f02,
+  0x47d8906d, 0x9610b80a, 0x47d35d20, 0x960d3153, 0x47ce29a7, 0x9609aadd,
+    0x47c8f601, 0x960624a9,
+  0x47c3c22f, 0x96029eb6, 0x47be8e31, 0x95ff1904, 0x47b95a06, 0x95fb9394,
+    0x47b425af, 0x95f80e65,
+  0x47aef12c, 0x95f48977, 0x47a9bc7d, 0x95f104cb, 0x47a487a2, 0x95ed8061,
+    0x479f529a, 0x95e9fc38,
+  0x479a1d67, 0x95e67850, 0x4794e807, 0x95e2f4a9, 0x478fb27b, 0x95df7145,
+    0x478a7cc2, 0x95dbee21,
+  0x478546de, 0x95d86b3f, 0x478010cd, 0x95d4e89f, 0x477ada91, 0x95d16640,
+    0x4775a428, 0x95cde423,
+  0x47706d93, 0x95ca6247, 0x476b36d3, 0x95c6e0ac, 0x4765ffe6, 0x95c35f53,
+    0x4760c8cd, 0x95bfde3c,
+  0x475b9188, 0x95bc5d66, 0x47565a17, 0x95b8dcd2, 0x4751227a, 0x95b55c7f,
+    0x474beab1, 0x95b1dc6e,
+  0x4746b2bc, 0x95ae5c9f, 0x47417a9b, 0x95aadd11, 0x473c424e, 0x95a75dc4,
+    0x473709d5, 0x95a3deb9,
+  0x4731d131, 0x95a05ff0, 0x472c9860, 0x959ce169, 0x47275f63, 0x95996323,
+    0x4722263b, 0x9595e51e,
+  0x471cece7, 0x9592675c, 0x4717b367, 0x958ee9db, 0x471279ba, 0x958b6c9b,
+    0x470d3fe3, 0x9587ef9e,
+  0x470805df, 0x958472e2, 0x4702cbaf, 0x9580f667, 0x46fd9154, 0x957d7a2f,
+    0x46f856cd, 0x9579fe38,
+  0x46f31c1a, 0x95768283, 0x46ede13b, 0x9573070f, 0x46e8a631, 0x956f8bdd,
+    0x46e36afb, 0x956c10ed,
+  0x46de2f99, 0x9568963f, 0x46d8f40b, 0x95651bd2, 0x46d3b852, 0x9561a1a8,
+    0x46ce7c6d, 0x955e27bf,
+  0x46c9405c, 0x955aae17, 0x46c40420, 0x955734b2, 0x46bec7b8, 0x9553bb8e,
+    0x46b98b24, 0x955042ac,
+  0x46b44e65, 0x954cca0c, 0x46af117a, 0x954951ae, 0x46a9d464, 0x9545d992,
+    0x46a49722, 0x954261b7,
+  0x469f59b4, 0x953eea1e, 0x469a1c1b, 0x953b72c7, 0x4694de56, 0x9537fbb2,
+    0x468fa066, 0x953484df,
+  0x468a624a, 0x95310e4e, 0x46852403, 0x952d97fe, 0x467fe590, 0x952a21f1,
+    0x467aa6f2, 0x9526ac25,
+  0x46756828, 0x9523369c, 0x46702933, 0x951fc154, 0x466aea12, 0x951c4c4e,
+    0x4665aac6, 0x9518d78a,
+  0x46606b4e, 0x95156308, 0x465b2bab, 0x9511eec8, 0x4655ebdd, 0x950e7aca,
+    0x4650abe3, 0x950b070e,
+  0x464b6bbe, 0x95079394, 0x46462b6d, 0x9504205c, 0x4640eaf2, 0x9500ad66,
+    0x463baa4a, 0x94fd3ab1,
+  0x46366978, 0x94f9c83f, 0x4631287a, 0x94f6560f, 0x462be751, 0x94f2e421,
+    0x4626a5fd, 0x94ef7275,
+  0x4621647d, 0x94ec010b, 0x461c22d2, 0x94e88fe3, 0x4616e0fc, 0x94e51efd,
+    0x46119efa, 0x94e1ae59,
+  0x460c5cce, 0x94de3df8, 0x46071a76, 0x94dacdd8, 0x4601d7f3, 0x94d75dfa,
+    0x45fc9545, 0x94d3ee5f,
+  0x45f7526b, 0x94d07f05, 0x45f20f67, 0x94cd0fee, 0x45eccc37, 0x94c9a119,
+    0x45e788dc, 0x94c63286,
+  0x45e24556, 0x94c2c435, 0x45dd01a5, 0x94bf5627, 0x45d7bdc9, 0x94bbe85a,
+    0x45d279c2, 0x94b87ad0,
+  0x45cd358f, 0x94b50d87, 0x45c7f132, 0x94b1a081, 0x45c2acaa, 0x94ae33be,
+    0x45bd67f6, 0x94aac73c,
+  0x45b82318, 0x94a75afd, 0x45b2de0e, 0x94a3eeff, 0x45ad98da, 0x94a08344,
+    0x45a8537a, 0x949d17cc,
+  0x45a30df0, 0x9499ac95, 0x459dc83b, 0x949641a1, 0x4598825a, 0x9492d6ef,
+    0x45933c4f, 0x948f6c7f,
+  0x458df619, 0x948c0252, 0x4588afb8, 0x94889867, 0x4583692c, 0x94852ebe,
+    0x457e2275, 0x9481c557,
+  0x4578db93, 0x947e5c33, 0x45739487, 0x947af351, 0x456e4d4f, 0x94778ab1,
+    0x456905ed, 0x94742254,
+  0x4563be60, 0x9470ba39, 0x455e76a8, 0x946d5260, 0x45592ec6, 0x9469eaca,
+    0x4553e6b8, 0x94668376,
+  0x454e9e80, 0x94631c65, 0x4549561d, 0x945fb596, 0x45440d90, 0x945c4f09,
+    0x453ec4d7, 0x9458e8bf,
+  0x45397bf4, 0x945582b7, 0x453432e6, 0x94521cf1, 0x452ee9ae, 0x944eb76e,
+    0x4529a04b, 0x944b522d,
+  0x452456bd, 0x9447ed2f, 0x451f0d04, 0x94448873, 0x4519c321, 0x944123fa,
+    0x45147913, 0x943dbfc3,
+  0x450f2edb, 0x943a5bcf, 0x4509e478, 0x9436f81d, 0x450499eb, 0x943394ad,
+    0x44ff4f32, 0x94303180,
+  0x44fa0450, 0x942cce96, 0x44f4b943, 0x94296bee, 0x44ef6e0b, 0x94260989,
+    0x44ea22a9, 0x9422a766,
+  0x44e4d71c, 0x941f4585, 0x44df8b64, 0x941be3e8, 0x44da3f83, 0x9418828c,
+    0x44d4f376, 0x94152174,
+  0x44cfa740, 0x9411c09e, 0x44ca5adf, 0x940e600a, 0x44c50e53, 0x940affb9,
+    0x44bfc19d, 0x94079fab,
+  0x44ba74bd, 0x94043fdf, 0x44b527b2, 0x9400e056, 0x44afda7d, 0x93fd810f,
+    0x44aa8d1d, 0x93fa220b,
+  0x44a53f93, 0x93f6c34a, 0x449ff1df, 0x93f364cb, 0x449aa400, 0x93f0068f,
+    0x449555f7, 0x93eca896,
+  0x449007c4, 0x93e94adf, 0x448ab967, 0x93e5ed6b, 0x44856adf, 0x93e2903a,
+    0x44801c2d, 0x93df334c,
+  0x447acd50, 0x93dbd6a0, 0x44757e4a, 0x93d87a36, 0x44702f19, 0x93d51e10,
+    0x446adfbe, 0x93d1c22c,
+  0x44659039, 0x93ce668b, 0x44604089, 0x93cb0b2d, 0x445af0b0, 0x93c7b011,
+    0x4455a0ac, 0x93c45539,
+  0x4450507e, 0x93c0faa3, 0x444b0026, 0x93bda04f, 0x4445afa4, 0x93ba463f,
+    0x44405ef8, 0x93b6ec71,
+  0x443b0e21, 0x93b392e6, 0x4435bd21, 0x93b0399e, 0x44306bf6, 0x93ace099,
+    0x442b1aa2, 0x93a987d6,
+  0x4425c923, 0x93a62f57, 0x4420777b, 0x93a2d71a, 0x441b25a8, 0x939f7f20,
+    0x4415d3ab, 0x939c2769,
+  0x44108184, 0x9398cff5, 0x440b2f34, 0x939578c3, 0x4405dcb9, 0x939221d5,
+    0x44008a14, 0x938ecb29,
+  0x43fb3746, 0x938b74c1, 0x43f5e44d, 0x93881e9b, 0x43f0912b, 0x9384c8b8,
+    0x43eb3ddf, 0x93817318,
+  0x43e5ea68, 0x937e1dbb, 0x43e096c8, 0x937ac8a1, 0x43db42fe, 0x937773ca,
+    0x43d5ef0a, 0x93741f35,
+  0x43d09aed, 0x9370cae4, 0x43cb46a5, 0x936d76d6, 0x43c5f234, 0x936a230a,
+    0x43c09d99, 0x9366cf82,
+  0x43bb48d4, 0x93637c3d, 0x43b5f3e5, 0x9360293a, 0x43b09ecc, 0x935cd67b,
+    0x43ab498a, 0x935983ff,
+  0x43a5f41e, 0x935631c5, 0x43a09e89, 0x9352dfcf, 0x439b48c9, 0x934f8e1c,
+    0x4395f2e0, 0x934c3cab,
+  0x43909ccd, 0x9348eb7e, 0x438b4691, 0x93459a94, 0x4385f02a, 0x934249ed,
+    0x4380999b, 0x933ef989,
+  0x437b42e1, 0x933ba968, 0x4375ebfe, 0x9338598a, 0x437094f1, 0x933509f0,
+    0x436b3dbb, 0x9331ba98,
+  0x4365e65b, 0x932e6b84, 0x43608ed2, 0x932b1cb2, 0x435b371f, 0x9327ce24,
+    0x4355df42, 0x93247fd9,
+  0x4350873c, 0x932131d1, 0x434b2f0c, 0x931de40c, 0x4345d6b3, 0x931a968b,
+    0x43407e31, 0x9317494c,
+  0x433b2585, 0x9313fc51, 0x4335ccaf, 0x9310af99, 0x433073b0, 0x930d6324,
+    0x432b1a87, 0x930a16f3,
+  0x4325c135, 0x9306cb04, 0x432067ba, 0x93037f59, 0x431b0e15, 0x930033f1,
+    0x4315b447, 0x92fce8cc,
+  0x43105a50, 0x92f99deb, 0x430b002f, 0x92f6534c, 0x4305a5e5, 0x92f308f1,
+    0x43004b71, 0x92efbeda,
+  0x42faf0d4, 0x92ec7505, 0x42f5960e, 0x92e92b74, 0x42f03b1e, 0x92e5e226,
+    0x42eae005, 0x92e2991c,
+  0x42e584c3, 0x92df5054, 0x42e02958, 0x92dc07d0, 0x42dacdc3, 0x92d8bf90,
+    0x42d57205, 0x92d57792,
+  0x42d0161e, 0x92d22fd9, 0x42caba0e, 0x92cee862, 0x42c55dd4, 0x92cba12f,
+    0x42c00172, 0x92c85a3f,
+  0x42baa4e6, 0x92c51392, 0x42b54831, 0x92c1cd29, 0x42afeb53, 0x92be8703,
+    0x42aa8e4b, 0x92bb4121,
+  0x42a5311b, 0x92b7fb82, 0x429fd3c1, 0x92b4b626, 0x429a763f, 0x92b1710e,
+    0x42951893, 0x92ae2c3a,
+  0x428fbabe, 0x92aae7a8, 0x428a5cc0, 0x92a7a35a, 0x4284fe99, 0x92a45f50,
+    0x427fa049, 0x92a11b89,
+  0x427a41d0, 0x929dd806, 0x4274e32e, 0x929a94c6, 0x426f8463, 0x929751c9,
+    0x426a256f, 0x92940f10,
+  0x4264c653, 0x9290cc9b, 0x425f670d, 0x928d8a69, 0x425a079e, 0x928a487a,
+    0x4254a806, 0x928706cf,
+  0x424f4845, 0x9283c568, 0x4249e85c, 0x92808444, 0x42448849, 0x927d4363,
+    0x423f280e, 0x927a02c7,
+  0x4239c7aa, 0x9276c26d, 0x4234671d, 0x92738258, 0x422f0667, 0x92704286,
+    0x4229a588, 0x926d02f7,
+  0x42244481, 0x9269c3ac, 0x421ee350, 0x926684a5, 0x421981f7, 0x926345e1,
+    0x42142075, 0x92600761,
+  0x420ebecb, 0x925cc924, 0x42095cf7, 0x92598b2b, 0x4203fafb, 0x92564d76,
+    0x41fe98d6, 0x92531005,
+  0x41f93689, 0x924fd2d7, 0x41f3d413, 0x924c95ec, 0x41ee7174, 0x92495946,
+    0x41e90eac, 0x92461ce3,
+  0x41e3abbc, 0x9242e0c4, 0x41de48a3, 0x923fa4e8, 0x41d8e561, 0x923c6950,
+    0x41d381f7, 0x92392dfc,
+  0x41ce1e65, 0x9235f2ec, 0x41c8baa9, 0x9232b81f, 0x41c356c5, 0x922f7d96,
+    0x41bdf2b9, 0x922c4351,
+  0x41b88e84, 0x9229094f, 0x41b32a26, 0x9225cf91, 0x41adc5a0, 0x92229617,
+    0x41a860f1, 0x921f5ce1,
+  0x41a2fc1a, 0x921c23ef, 0x419d971b, 0x9218eb40, 0x419831f3, 0x9215b2d5,
+    0x4192cca2, 0x92127aae,
+  0x418d6729, 0x920f42cb, 0x41880188, 0x920c0b2c, 0x41829bbe, 0x9208d3d0,
+    0x417d35cb, 0x92059cb8,
+  0x4177cfb1, 0x920265e4, 0x4172696e, 0x91ff2f54, 0x416d0302, 0x91fbf908,
+    0x41679c6f, 0x91f8c300,
+  0x416235b2, 0x91f58d3b, 0x415ccece, 0x91f257bb, 0x415767c1, 0x91ef227e,
+    0x4152008c, 0x91ebed85,
+  0x414c992f, 0x91e8b8d0, 0x414731a9, 0x91e5845f, 0x4141c9fb, 0x91e25032,
+    0x413c6225, 0x91df1c49,
+  0x4136fa27, 0x91dbe8a4, 0x41319200, 0x91d8b542, 0x412c29b1, 0x91d58225,
+    0x4126c13a, 0x91d24f4c,
+  0x4121589b, 0x91cf1cb6, 0x411befd3, 0x91cbea65, 0x411686e4, 0x91c8b857,
+    0x41111dcc, 0x91c5868e,
+  0x410bb48c, 0x91c25508, 0x41064b24, 0x91bf23c7, 0x4100e194, 0x91bbf2c9,
+    0x40fb77dc, 0x91b8c210,
+  0x40f60dfb, 0x91b5919a, 0x40f0a3f3, 0x91b26169, 0x40eb39c3, 0x91af317c,
+    0x40e5cf6a, 0x91ac01d2,
+  0x40e064ea, 0x91a8d26d, 0x40dafa41, 0x91a5a34c, 0x40d58f71, 0x91a2746f,
+    0x40d02478, 0x919f45d6,
+  0x40cab958, 0x919c1781, 0x40c54e0f, 0x9198e970, 0x40bfe29f, 0x9195bba3,
+    0x40ba7706, 0x91928e1a,
+  0x40b50b46, 0x918f60d6, 0x40af9f5e, 0x918c33d5, 0x40aa334e, 0x91890719,
+    0x40a4c716, 0x9185daa1,
+  0x409f5ab6, 0x9182ae6d, 0x4099ee2e, 0x917f827d, 0x4094817f, 0x917c56d1,
+    0x408f14a7, 0x91792b6a,
+  0x4089a7a8, 0x91760047, 0x40843a81, 0x9172d567, 0x407ecd32, 0x916faacc,
+    0x40795fbc, 0x916c8076,
+  0x4073f21d, 0x91695663, 0x406e8457, 0x91662c95, 0x40691669, 0x9163030b,
+    0x4063a854, 0x915fd9c5,
+  0x405e3a16, 0x915cb0c3, 0x4058cbb1, 0x91598806, 0x40535d24, 0x91565f8d,
+    0x404dee70, 0x91533758,
+  0x40487f94, 0x91500f67, 0x40431090, 0x914ce7bb, 0x403da165, 0x9149c053,
+    0x40383212, 0x9146992f,
+  0x4032c297, 0x91437250, 0x402d52f5, 0x91404bb5, 0x4027e32b, 0x913d255e,
+    0x4022733a, 0x9139ff4b,
+  0x401d0321, 0x9136d97d, 0x401792e0, 0x9133b3f3, 0x40122278, 0x91308eae,
+    0x400cb1e9, 0x912d69ad,
+  0x40074132, 0x912a44f0, 0x4001d053, 0x91272078, 0x3ffc5f4d, 0x9123fc44,
+    0x3ff6ee1f, 0x9120d854,
+  0x3ff17cca, 0x911db4a9, 0x3fec0b4e, 0x911a9142, 0x3fe699aa, 0x91176e1f,
+    0x3fe127df, 0x91144b41,
+  0x3fdbb5ec, 0x911128a8, 0x3fd643d2, 0x910e0653, 0x3fd0d191, 0x910ae442,
+    0x3fcb5f28, 0x9107c276,
+  0x3fc5ec98, 0x9104a0ee, 0x3fc079e0, 0x91017faa, 0x3fbb0702, 0x90fe5eab,
+    0x3fb593fb, 0x90fb3df1,
+  0x3fb020ce, 0x90f81d7b, 0x3faaad79, 0x90f4fd4a, 0x3fa539fd, 0x90f1dd5d,
+    0x3f9fc65a, 0x90eebdb4,
+  0x3f9a5290, 0x90eb9e50, 0x3f94de9e, 0x90e87f31, 0x3f8f6a85, 0x90e56056,
+    0x3f89f645, 0x90e241bf,
+  0x3f8481dd, 0x90df236e, 0x3f7f0d4f, 0x90dc0560, 0x3f799899, 0x90d8e798,
+    0x3f7423bc, 0x90d5ca13,
+  0x3f6eaeb8, 0x90d2acd4, 0x3f69398d, 0x90cf8fd9, 0x3f63c43b, 0x90cc7322,
+    0x3f5e4ec2, 0x90c956b1,
+  0x3f58d921, 0x90c63a83, 0x3f53635a, 0x90c31e9b, 0x3f4ded6b, 0x90c002f7,
+    0x3f487755, 0x90bce797,
+  0x3f430119, 0x90b9cc7d, 0x3f3d8ab5, 0x90b6b1a6, 0x3f38142a, 0x90b39715,
+    0x3f329d79, 0x90b07cc8,
+  0x3f2d26a0, 0x90ad62c0, 0x3f27afa1, 0x90aa48fd, 0x3f22387a, 0x90a72f7e,
+    0x3f1cc12c, 0x90a41644,
+  0x3f1749b8, 0x90a0fd4e, 0x3f11d21d, 0x909de49e, 0x3f0c5a5a, 0x909acc32,
+    0x3f06e271, 0x9097b40a,
+  0x3f016a61, 0x90949c28, 0x3efbf22a, 0x9091848a, 0x3ef679cc, 0x908e6d31,
+    0x3ef10148, 0x908b561c,
+  0x3eeb889c, 0x90883f4d, 0x3ee60fca, 0x908528c2, 0x3ee096d1, 0x9082127c,
+    0x3edb1db1, 0x907efc7a,
+  0x3ed5a46b, 0x907be6be, 0x3ed02afd, 0x9078d146, 0x3ecab169, 0x9075bc13,
+    0x3ec537ae, 0x9072a725,
+  0x3ebfbdcd, 0x906f927c, 0x3eba43c4, 0x906c7e17, 0x3eb4c995, 0x906969f8,
+    0x3eaf4f40, 0x9066561d,
+  0x3ea9d4c3, 0x90634287, 0x3ea45a21, 0x90602f35, 0x3e9edf57, 0x905d1c29,
+    0x3e996467, 0x905a0962,
+  0x3e93e950, 0x9056f6df, 0x3e8e6e12, 0x9053e4a1, 0x3e88f2ae, 0x9050d2a9,
+    0x3e837724, 0x904dc0f5,
+  0x3e7dfb73, 0x904aaf86, 0x3e787f9b, 0x90479e5c, 0x3e73039d, 0x90448d76,
+    0x3e6d8778, 0x90417cd6,
+  0x3e680b2c, 0x903e6c7b, 0x3e628ebb, 0x903b5c64, 0x3e5d1222, 0x90384c93,
+    0x3e579564, 0x90353d06,
+  0x3e52187f, 0x90322dbf, 0x3e4c9b73, 0x902f1ebc, 0x3e471e41, 0x902c0fff,
+    0x3e41a0e8, 0x90290186,
+  0x3e3c2369, 0x9025f352, 0x3e36a5c4, 0x9022e564, 0x3e3127f9, 0x901fd7ba,
+    0x3e2baa07, 0x901cca55,
+  0x3e262bee, 0x9019bd36, 0x3e20adaf, 0x9016b05b, 0x3e1b2f4a, 0x9013a3c5,
+    0x3e15b0bf, 0x90109775,
+  0x3e10320d, 0x900d8b69, 0x3e0ab336, 0x900a7fa3, 0x3e053437, 0x90077422,
+    0x3dffb513, 0x900468e5,
+  0x3dfa35c8, 0x90015dee, 0x3df4b657, 0x8ffe533c, 0x3def36c0, 0x8ffb48cf,
+    0x3de9b703, 0x8ff83ea7,
+  0x3de4371f, 0x8ff534c4, 0x3ddeb716, 0x8ff22b26, 0x3dd936e6, 0x8fef21ce,
+    0x3dd3b690, 0x8fec18ba,
+  0x3dce3614, 0x8fe90fec, 0x3dc8b571, 0x8fe60763, 0x3dc334a9, 0x8fe2ff1f,
+    0x3dbdb3ba, 0x8fdff720,
+  0x3db832a6, 0x8fdcef66, 0x3db2b16b, 0x8fd9e7f2, 0x3dad300b, 0x8fd6e0c2,
+    0x3da7ae84, 0x8fd3d9d8,
+  0x3da22cd7, 0x8fd0d333, 0x3d9cab04, 0x8fcdccd3, 0x3d97290b, 0x8fcac6b9,
+    0x3d91a6ed, 0x8fc7c0e3,
+  0x3d8c24a8, 0x8fc4bb53, 0x3d86a23d, 0x8fc1b608, 0x3d811fac, 0x8fbeb103,
+    0x3d7b9cf6, 0x8fbbac42,
+  0x3d761a19, 0x8fb8a7c7, 0x3d709717, 0x8fb5a391, 0x3d6b13ee, 0x8fb29fa0,
+    0x3d6590a0, 0x8faf9bf5,
+  0x3d600d2c, 0x8fac988f, 0x3d5a8992, 0x8fa9956e, 0x3d5505d2, 0x8fa69293,
+    0x3d4f81ec, 0x8fa38ffc,
+  0x3d49fde1, 0x8fa08dab, 0x3d4479b0, 0x8f9d8ba0, 0x3d3ef559, 0x8f9a89da,
+    0x3d3970dc, 0x8f978859,
+  0x3d33ec39, 0x8f94871d, 0x3d2e6771, 0x8f918627, 0x3d28e282, 0x8f8e8576,
+    0x3d235d6f, 0x8f8b850a,
+  0x3d1dd835, 0x8f8884e4, 0x3d1852d6, 0x8f858503, 0x3d12cd51, 0x8f828568,
+    0x3d0d47a6, 0x8f7f8612,
+  0x3d07c1d6, 0x8f7c8701, 0x3d023be0, 0x8f798836, 0x3cfcb5c4, 0x8f7689b0,
+    0x3cf72f83, 0x8f738b70,
+  0x3cf1a91c, 0x8f708d75, 0x3cec2290, 0x8f6d8fbf, 0x3ce69bde, 0x8f6a924f,
+    0x3ce11507, 0x8f679525,
+  0x3cdb8e09, 0x8f649840, 0x3cd606e7, 0x8f619ba0, 0x3cd07f9f, 0x8f5e9f46,
+    0x3ccaf831, 0x8f5ba331,
+  0x3cc5709e, 0x8f58a761, 0x3cbfe8e5, 0x8f55abd8, 0x3cba6107, 0x8f52b093,
+    0x3cb4d904, 0x8f4fb595,
+  0x3caf50da, 0x8f4cbadb, 0x3ca9c88c, 0x8f49c067, 0x3ca44018, 0x8f46c639,
+    0x3c9eb77f, 0x8f43cc50,
+  0x3c992ec0, 0x8f40d2ad, 0x3c93a5dc, 0x8f3dd950, 0x3c8e1cd3, 0x8f3ae038,
+    0x3c8893a4, 0x8f37e765,
+  0x3c830a50, 0x8f34eed8, 0x3c7d80d6, 0x8f31f691, 0x3c77f737, 0x8f2efe8f,
+    0x3c726d73, 0x8f2c06d3,
+  0x3c6ce38a, 0x8f290f5c, 0x3c67597b, 0x8f26182b, 0x3c61cf48, 0x8f232140,
+    0x3c5c44ee, 0x8f202a9a,
+  0x3c56ba70, 0x8f1d343a, 0x3c512fcc, 0x8f1a3e1f, 0x3c4ba504, 0x8f17484b,
+    0x3c461a16, 0x8f1452bb,
+  0x3c408f03, 0x8f115d72, 0x3c3b03ca, 0x8f0e686e, 0x3c35786d, 0x8f0b73b0,
+    0x3c2fecea, 0x8f087f37,
+  0x3c2a6142, 0x8f058b04, 0x3c24d575, 0x8f029717, 0x3c1f4983, 0x8effa370,
+    0x3c19bd6c, 0x8efcb00e,
+  0x3c143130, 0x8ef9bcf2, 0x3c0ea4cf, 0x8ef6ca1c, 0x3c091849, 0x8ef3d78b,
+    0x3c038b9e, 0x8ef0e540,
+  0x3bfdfecd, 0x8eedf33b, 0x3bf871d8, 0x8eeb017c, 0x3bf2e4be, 0x8ee81002,
+    0x3bed577e, 0x8ee51ece,
+  0x3be7ca1a, 0x8ee22de0, 0x3be23c91, 0x8edf3d38, 0x3bdcaee3, 0x8edc4cd5,
+    0x3bd72110, 0x8ed95cb8,
+  0x3bd19318, 0x8ed66ce1, 0x3bcc04fb, 0x8ed37d50, 0x3bc676b9, 0x8ed08e05,
+    0x3bc0e853, 0x8ecd9eff,
+  0x3bbb59c7, 0x8ecab040, 0x3bb5cb17, 0x8ec7c1c6, 0x3bb03c42, 0x8ec4d392,
+    0x3baaad48, 0x8ec1e5a4,
+  0x3ba51e29, 0x8ebef7fb, 0x3b9f8ee5, 0x8ebc0a99, 0x3b99ff7d, 0x8eb91d7c,
+    0x3b946ff0, 0x8eb630a6,
+  0x3b8ee03e, 0x8eb34415, 0x3b895068, 0x8eb057ca, 0x3b83c06c, 0x8ead6bc5,
+    0x3b7e304c, 0x8eaa8006,
+  0x3b78a007, 0x8ea7948c, 0x3b730f9e, 0x8ea4a959, 0x3b6d7f10, 0x8ea1be6c,
+    0x3b67ee5d, 0x8e9ed3c4,
+  0x3b625d86, 0x8e9be963, 0x3b5ccc8a, 0x8e98ff47, 0x3b573b69, 0x8e961571,
+    0x3b51aa24, 0x8e932be2,
+  0x3b4c18ba, 0x8e904298, 0x3b46872c, 0x8e8d5994, 0x3b40f579, 0x8e8a70d7,
+    0x3b3b63a1, 0x8e87885f,
+  0x3b35d1a5, 0x8e84a02d, 0x3b303f84, 0x8e81b841, 0x3b2aad3f, 0x8e7ed09b,
+    0x3b251ad6, 0x8e7be93c,
+  0x3b1f8848, 0x8e790222, 0x3b19f595, 0x8e761b4e, 0x3b1462be, 0x8e7334c1,
+    0x3b0ecfc3, 0x8e704e79,
+  0x3b093ca3, 0x8e6d6877, 0x3b03a95e, 0x8e6a82bc, 0x3afe15f6, 0x8e679d47,
+    0x3af88269, 0x8e64b817,
+  0x3af2eeb7, 0x8e61d32e, 0x3aed5ae1, 0x8e5eee8b, 0x3ae7c6e7, 0x8e5c0a2e,
+    0x3ae232c9, 0x8e592617,
+  0x3adc9e86, 0x8e564246, 0x3ad70a1f, 0x8e535ebb, 0x3ad17593, 0x8e507b76,
+    0x3acbe0e3, 0x8e4d9878,
+  0x3ac64c0f, 0x8e4ab5bf, 0x3ac0b717, 0x8e47d34d, 0x3abb21fb, 0x8e44f121,
+    0x3ab58cba, 0x8e420f3b,
+  0x3aaff755, 0x8e3f2d9b, 0x3aaa61cc, 0x8e3c4c41, 0x3aa4cc1e, 0x8e396b2e,
+    0x3a9f364d, 0x8e368a61,
+  0x3a99a057, 0x8e33a9da, 0x3a940a3e, 0x8e30c999, 0x3a8e7400, 0x8e2de99e,
+    0x3a88dd9d, 0x8e2b09e9,
+  0x3a834717, 0x8e282a7b, 0x3a7db06d, 0x8e254b53, 0x3a78199f, 0x8e226c71,
+    0x3a7282ac, 0x8e1f8dd6,
+  0x3a6ceb96, 0x8e1caf80, 0x3a67545b, 0x8e19d171, 0x3a61bcfd, 0x8e16f3a9,
+    0x3a5c257a, 0x8e141626,
+  0x3a568dd4, 0x8e1138ea, 0x3a50f609, 0x8e0e5bf4, 0x3a4b5e1b, 0x8e0b7f44,
+    0x3a45c608, 0x8e08a2db,
+  0x3a402dd2, 0x8e05c6b7, 0x3a3a9577, 0x8e02eadb, 0x3a34fcf9, 0x8e000f44,
+    0x3a2f6457, 0x8dfd33f4,
+  0x3a29cb91, 0x8dfa58ea, 0x3a2432a7, 0x8df77e27, 0x3a1e9999, 0x8df4a3a9,
+    0x3a190068, 0x8df1c973,
+  0x3a136712, 0x8deeef82, 0x3a0dcd99, 0x8dec15d8, 0x3a0833fc, 0x8de93c74,
+    0x3a029a3b, 0x8de66357,
+  0x39fd0056, 0x8de38a80, 0x39f7664e, 0x8de0b1ef, 0x39f1cc21, 0x8dddd9a5,
+    0x39ec31d1, 0x8ddb01a1,
+  0x39e6975e, 0x8dd829e4, 0x39e0fcc6, 0x8dd5526d, 0x39db620b, 0x8dd27b3c,
+    0x39d5c72c, 0x8dcfa452,
+  0x39d02c2a, 0x8dcccdaf, 0x39ca9104, 0x8dc9f751, 0x39c4f5ba, 0x8dc7213b,
+    0x39bf5a4d, 0x8dc44b6a,
+  0x39b9bebc, 0x8dc175e0, 0x39b42307, 0x8dbea09d, 0x39ae872f, 0x8dbbcba0,
+    0x39a8eb33, 0x8db8f6ea,
+  0x39a34f13, 0x8db6227a, 0x399db2d0, 0x8db34e50, 0x3998166a, 0x8db07a6d,
+    0x399279e0, 0x8dada6d1,
+  0x398cdd32, 0x8daad37b, 0x39874061, 0x8da8006c, 0x3981a36d, 0x8da52da3,
+    0x397c0655, 0x8da25b21,
+  0x39766919, 0x8d9f88e5, 0x3970cbba, 0x8d9cb6f0, 0x396b2e38, 0x8d99e541,
+    0x39659092, 0x8d9713d9,
+  0x395ff2c9, 0x8d9442b8, 0x395a54dd, 0x8d9171dd, 0x3954b6cd, 0x8d8ea148,
+    0x394f1899, 0x8d8bd0fb,
+  0x39497a43, 0x8d8900f3, 0x3943dbc9, 0x8d863133, 0x393e3d2c, 0x8d8361b9,
+    0x39389e6b, 0x8d809286,
+  0x3932ff87, 0x8d7dc399, 0x392d6080, 0x8d7af4f3, 0x3927c155, 0x8d782694,
+    0x39222208, 0x8d75587b,
+  0x391c8297, 0x8d728aa9, 0x3916e303, 0x8d6fbd1d, 0x3911434b, 0x8d6cefd9,
+    0x390ba371, 0x8d6a22db,
+  0x39060373, 0x8d675623, 0x39006352, 0x8d6489b3, 0x38fac30e, 0x8d61bd89,
+    0x38f522a6, 0x8d5ef1a5,
+  0x38ef821c, 0x8d5c2609, 0x38e9e16e, 0x8d595ab3, 0x38e4409e, 0x8d568fa4,
+    0x38de9faa, 0x8d53c4db,
+  0x38d8fe93, 0x8d50fa59, 0x38d35d59, 0x8d4e301f, 0x38cdbbfc, 0x8d4b662a,
+    0x38c81a7c, 0x8d489c7d,
+  0x38c278d9, 0x8d45d316, 0x38bcd713, 0x8d4309f6, 0x38b7352a, 0x8d40411d,
+    0x38b1931e, 0x8d3d788b,
+  0x38abf0ef, 0x8d3ab03f, 0x38a64e9d, 0x8d37e83a, 0x38a0ac29, 0x8d35207d,
+    0x389b0991, 0x8d325905,
+  0x389566d6, 0x8d2f91d5, 0x388fc3f8, 0x8d2ccaec, 0x388a20f8, 0x8d2a0449,
+    0x38847dd5, 0x8d273ded,
+  0x387eda8e, 0x8d2477d8, 0x38793725, 0x8d21b20a, 0x38739399, 0x8d1eec83,
+    0x386defeb, 0x8d1c2742,
+  0x38684c19, 0x8d196249, 0x3862a825, 0x8d169d96, 0x385d040d, 0x8d13d92a,
+    0x38575fd4, 0x8d111505,
+  0x3851bb77, 0x8d0e5127, 0x384c16f7, 0x8d0b8d90, 0x38467255, 0x8d08ca40,
+    0x3840cd90, 0x8d060737,
+  0x383b28a9, 0x8d034474, 0x3835839f, 0x8d0081f9, 0x382fde72, 0x8cfdbfc4,
+    0x382a3922, 0x8cfafdd7,
+  0x382493b0, 0x8cf83c30, 0x381eee1b, 0x8cf57ad0, 0x38194864, 0x8cf2b9b8,
+    0x3813a28a, 0x8ceff8e6,
+  0x380dfc8d, 0x8ced385b, 0x3808566e, 0x8cea7818, 0x3802b02c, 0x8ce7b81b,
+    0x37fd09c8, 0x8ce4f865,
+  0x37f76341, 0x8ce238f6, 0x37f1bc97, 0x8cdf79ce, 0x37ec15cb, 0x8cdcbaee,
+    0x37e66edd, 0x8cd9fc54,
+  0x37e0c7cc, 0x8cd73e01, 0x37db2099, 0x8cd47ff6, 0x37d57943, 0x8cd1c231,
+    0x37cfd1cb, 0x8ccf04b3,
+  0x37ca2a30, 0x8ccc477d, 0x37c48273, 0x8cc98a8e, 0x37beda93, 0x8cc6cde5,
+    0x37b93292, 0x8cc41184,
+  0x37b38a6d, 0x8cc1556a, 0x37ade227, 0x8cbe9996, 0x37a839be, 0x8cbbde0a,
+    0x37a29132, 0x8cb922c6,
+  0x379ce885, 0x8cb667c8, 0x37973fb5, 0x8cb3ad11, 0x379196c3, 0x8cb0f2a1,
+    0x378bedae, 0x8cae3879,
+  0x37864477, 0x8cab7e98, 0x37809b1e, 0x8ca8c4fd, 0x377af1a3, 0x8ca60baa,
+    0x37754806, 0x8ca3529f,
+  0x376f9e46, 0x8ca099da, 0x3769f464, 0x8c9de15c, 0x37644a60, 0x8c9b2926,
+    0x375ea03a, 0x8c987137,
+  0x3758f5f2, 0x8c95b98f, 0x37534b87, 0x8c93022e, 0x374da0fa, 0x8c904b14,
+    0x3747f64c, 0x8c8d9442,
+  0x37424b7b, 0x8c8addb7, 0x373ca088, 0x8c882773, 0x3736f573, 0x8c857176,
+    0x37314a3c, 0x8c82bbc0,
+  0x372b9ee3, 0x8c800652, 0x3725f367, 0x8c7d512b, 0x372047ca, 0x8c7a9c4b,
+    0x371a9c0b, 0x8c77e7b3,
+  0x3714f02a, 0x8c753362, 0x370f4427, 0x8c727f58, 0x37099802, 0x8c6fcb95,
+    0x3703ebbb, 0x8c6d181a,
+  0x36fe3f52, 0x8c6a64e5, 0x36f892c7, 0x8c67b1f9, 0x36f2e61a, 0x8c64ff53,
+    0x36ed394b, 0x8c624cf5,
+  0x36e78c5b, 0x8c5f9ade, 0x36e1df48, 0x8c5ce90e, 0x36dc3214, 0x8c5a3786,
+    0x36d684be, 0x8c578645,
+  0x36d0d746, 0x8c54d54c, 0x36cb29ac, 0x8c522499, 0x36c57bf0, 0x8c4f742f,
+    0x36bfce13, 0x8c4cc40b,
+  0x36ba2014, 0x8c4a142f, 0x36b471f3, 0x8c47649a, 0x36aec3b0, 0x8c44b54d,
+    0x36a9154c, 0x8c420647,
+  0x36a366c6, 0x8c3f5788, 0x369db81e, 0x8c3ca911, 0x36980954, 0x8c39fae1,
+    0x36925a69, 0x8c374cf9,
+  0x368cab5c, 0x8c349f58, 0x3686fc2e, 0x8c31f1ff, 0x36814cde, 0x8c2f44ed,
+    0x367b9d6c, 0x8c2c9822,
+  0x3675edd9, 0x8c29eb9f, 0x36703e24, 0x8c273f63, 0x366a8e4d, 0x8c24936f,
+    0x3664de55, 0x8c21e7c2,
+  0x365f2e3b, 0x8c1f3c5d, 0x36597e00, 0x8c1c913f, 0x3653cda3, 0x8c19e669,
+    0x364e1d25, 0x8c173bda,
+  0x36486c86, 0x8c149192, 0x3642bbc4, 0x8c11e792, 0x363d0ae2, 0x8c0f3dda,
+    0x363759de, 0x8c0c9469,
+  0x3631a8b8, 0x8c09eb40, 0x362bf771, 0x8c07425e, 0x36264609, 0x8c0499c4,
+    0x3620947f, 0x8c01f171,
+  0x361ae2d3, 0x8bff4966, 0x36153107, 0x8bfca1a3, 0x360f7f19, 0x8bf9fa27,
+    0x3609cd0a, 0x8bf752f2,
+  0x36041ad9, 0x8bf4ac05, 0x35fe6887, 0x8bf20560, 0x35f8b614, 0x8bef5f02,
+    0x35f3037f, 0x8becb8ec,
+  0x35ed50c9, 0x8bea131e, 0x35e79df2, 0x8be76d97, 0x35e1eafa, 0x8be4c857,
+    0x35dc37e0, 0x8be22360,
+  0x35d684a6, 0x8bdf7eb0, 0x35d0d14a, 0x8bdcda47, 0x35cb1dcc, 0x8bda3626,
+    0x35c56a2e, 0x8bd7924d,
+  0x35bfb66e, 0x8bd4eebc, 0x35ba028e, 0x8bd24b72, 0x35b44e8c, 0x8bcfa870,
+    0x35ae9a69, 0x8bcd05b5,
+  0x35a8e625, 0x8bca6343, 0x35a331c0, 0x8bc7c117, 0x359d7d39, 0x8bc51f34,
+    0x3597c892, 0x8bc27d98,
+  0x359213c9, 0x8bbfdc44, 0x358c5ee0, 0x8bbd3b38, 0x3586a9d5, 0x8bba9a73,
+    0x3580f4aa, 0x8bb7f9f6,
+  0x357b3f5d, 0x8bb559c1, 0x357589f0, 0x8bb2b9d4, 0x356fd461, 0x8bb01a2e,
+    0x356a1eb2, 0x8bad7ad0,
+  0x356468e2, 0x8baadbba, 0x355eb2f0, 0x8ba83cec, 0x3558fcde, 0x8ba59e65,
+    0x355346ab, 0x8ba30026,
+  0x354d9057, 0x8ba0622f, 0x3547d9e2, 0x8b9dc480, 0x3542234c, 0x8b9b2718,
+    0x353c6c95, 0x8b9889f8,
+  0x3536b5be, 0x8b95ed21, 0x3530fec6, 0x8b935090, 0x352b47ad, 0x8b90b448,
+    0x35259073, 0x8b8e1848,
+  0x351fd918, 0x8b8b7c8f, 0x351a219c, 0x8b88e11e, 0x35146a00, 0x8b8645f5,
+    0x350eb243, 0x8b83ab14,
+  0x3508fa66, 0x8b81107b, 0x35034267, 0x8b7e7629, 0x34fd8a48, 0x8b7bdc20,
+    0x34f7d208, 0x8b79425e,
+  0x34f219a8, 0x8b76a8e4, 0x34ec6127, 0x8b740fb3, 0x34e6a885, 0x8b7176c8,
+    0x34e0efc2, 0x8b6ede26,
+  0x34db36df, 0x8b6c45cc, 0x34d57ddc, 0x8b69adba, 0x34cfc4b7, 0x8b6715ef,
+    0x34ca0b73, 0x8b647e6d,
+  0x34c4520d, 0x8b61e733, 0x34be9887, 0x8b5f5040, 0x34b8dee1, 0x8b5cb995,
+    0x34b3251a, 0x8b5a2333,
+  0x34ad6b32, 0x8b578d18, 0x34a7b12a, 0x8b54f745, 0x34a1f702, 0x8b5261ba,
+    0x349c3cb9, 0x8b4fcc77,
+  0x34968250, 0x8b4d377c, 0x3490c7c6, 0x8b4aa2ca, 0x348b0d1c, 0x8b480e5f,
+    0x34855251, 0x8b457a3c,
+  0x347f9766, 0x8b42e661, 0x3479dc5b, 0x8b4052ce, 0x3474212f, 0x8b3dbf83,
+    0x346e65e3, 0x8b3b2c80,
+  0x3468aa76, 0x8b3899c6, 0x3462eee9, 0x8b360753, 0x345d333c, 0x8b337528,
+    0x3457776f, 0x8b30e345,
+  0x3451bb81, 0x8b2e51ab, 0x344bff73, 0x8b2bc058, 0x34464345, 0x8b292f4e,
+    0x344086f6, 0x8b269e8b,
+  0x343aca87, 0x8b240e11, 0x34350df8, 0x8b217ddf, 0x342f5149, 0x8b1eedf4,
+    0x3429947a, 0x8b1c5e52,
+  0x3423d78a, 0x8b19cef8, 0x341e1a7b, 0x8b173fe6, 0x34185d4b, 0x8b14b11d,
+    0x34129ffb, 0x8b12229b,
+  0x340ce28b, 0x8b0f9462, 0x340724fb, 0x8b0d0670, 0x3401674a, 0x8b0a78c7,
+    0x33fba97a, 0x8b07eb66,
+  0x33f5eb89, 0x8b055e4d, 0x33f02d79, 0x8b02d17c, 0x33ea6f48, 0x8b0044f3,
+    0x33e4b0f8, 0x8afdb8b3,
+  0x33def287, 0x8afb2cbb, 0x33d933f7, 0x8af8a10b, 0x33d37546, 0x8af615a3,
+    0x33cdb676, 0x8af38a83,
+  0x33c7f785, 0x8af0ffac, 0x33c23875, 0x8aee751c, 0x33bc7944, 0x8aebead5,
+    0x33b6b9f4, 0x8ae960d6,
+  0x33b0fa84, 0x8ae6d720, 0x33ab3af4, 0x8ae44db1, 0x33a57b44, 0x8ae1c48b,
+    0x339fbb74, 0x8adf3bad,
+  0x3399fb85, 0x8adcb318, 0x33943b75, 0x8ada2aca, 0x338e7b46, 0x8ad7a2c5,
+    0x3388baf7, 0x8ad51b08,
+  0x3382fa88, 0x8ad29394, 0x337d39f9, 0x8ad00c67, 0x3377794b, 0x8acd8583,
+    0x3371b87d, 0x8acafee8,
+  0x336bf78f, 0x8ac87894, 0x33663682, 0x8ac5f289, 0x33607554, 0x8ac36cc6,
+    0x335ab407, 0x8ac0e74c,
+  0x3354f29b, 0x8abe6219, 0x334f310e, 0x8abbdd30, 0x33496f62, 0x8ab9588e,
+    0x3343ad97, 0x8ab6d435,
+  0x333debab, 0x8ab45024, 0x333829a1, 0x8ab1cc5c, 0x33326776, 0x8aaf48db,
+    0x332ca52c, 0x8aacc5a4,
+  0x3326e2c3, 0x8aaa42b4, 0x33212039, 0x8aa7c00d, 0x331b5d91, 0x8aa53daf,
+    0x33159ac8, 0x8aa2bb99,
+  0x330fd7e1, 0x8aa039cb, 0x330a14da, 0x8a9db845, 0x330451b3, 0x8a9b3708,
+    0x32fe8e6d, 0x8a98b614,
+  0x32f8cb07, 0x8a963567, 0x32f30782, 0x8a93b504, 0x32ed43de, 0x8a9134e8,
+    0x32e7801a, 0x8a8eb516,
+  0x32e1bc36, 0x8a8c358b, 0x32dbf834, 0x8a89b649, 0x32d63412, 0x8a873750,
+    0x32d06fd0, 0x8a84b89e,
+  0x32caab6f, 0x8a823a36, 0x32c4e6ef, 0x8a7fbc16, 0x32bf2250, 0x8a7d3e3e,
+    0x32b95d91, 0x8a7ac0af,
+  0x32b398b3, 0x8a784368, 0x32add3b6, 0x8a75c66a, 0x32a80e99, 0x8a7349b4,
+    0x32a2495d, 0x8a70cd47,
+  0x329c8402, 0x8a6e5123, 0x3296be88, 0x8a6bd547, 0x3290f8ef, 0x8a6959b3,
+    0x328b3336, 0x8a66de68,
+  0x32856d5e, 0x8a646365, 0x327fa767, 0x8a61e8ab, 0x3279e151, 0x8a5f6e3a,
+    0x32741b1c, 0x8a5cf411,
+  0x326e54c7, 0x8a5a7a31, 0x32688e54, 0x8a580099, 0x3262c7c1, 0x8a55874a,
+    0x325d0110, 0x8a530e43,
+  0x32573a3f, 0x8a509585, 0x3251734f, 0x8a4e1d10, 0x324bac40, 0x8a4ba4e3,
+    0x3245e512, 0x8a492cff,
+  0x32401dc6, 0x8a46b564, 0x323a565a, 0x8a443e11, 0x32348ecf, 0x8a41c706,
+    0x322ec725, 0x8a3f5045,
+  0x3228ff5c, 0x8a3cd9cc, 0x32233775, 0x8a3a639b, 0x321d6f6e, 0x8a37edb3,
+    0x3217a748, 0x8a357814,
+  0x3211df04, 0x8a3302be, 0x320c16a1, 0x8a308db0, 0x32064e1e, 0x8a2e18eb,
+    0x3200857d, 0x8a2ba46e,
+  0x31fabcbd, 0x8a29303b, 0x31f4f3df, 0x8a26bc50, 0x31ef2ae1, 0x8a2448ad,
+    0x31e961c5, 0x8a21d554,
+  0x31e39889, 0x8a1f6243, 0x31ddcf30, 0x8a1cef7a, 0x31d805b7, 0x8a1a7cfb,
+    0x31d23c1f, 0x8a180ac4,
+  0x31cc7269, 0x8a1598d6, 0x31c6a894, 0x8a132731, 0x31c0dea1, 0x8a10b5d4,
+    0x31bb148f, 0x8a0e44c0,
+  0x31b54a5e, 0x8a0bd3f5, 0x31af800e, 0x8a096373, 0x31a9b5a0, 0x8a06f339,
+    0x31a3eb13, 0x8a048348,
+  0x319e2067, 0x8a0213a0, 0x3198559d, 0x89ffa441, 0x31928ab4, 0x89fd352b,
+    0x318cbfad, 0x89fac65d,
+  0x3186f487, 0x89f857d8, 0x31812943, 0x89f5e99c, 0x317b5de0, 0x89f37ba9,
+    0x3175925e, 0x89f10dff,
+  0x316fc6be, 0x89eea09d, 0x3169fb00, 0x89ec3384, 0x31642f23, 0x89e9c6b4,
+    0x315e6328, 0x89e75a2d,
+  0x3158970e, 0x89e4edef, 0x3152cad5, 0x89e281fa, 0x314cfe7f, 0x89e0164d,
+    0x31473209, 0x89ddaae9,
+  0x31416576, 0x89db3fcf, 0x313b98c4, 0x89d8d4fd, 0x3135cbf4, 0x89d66a74,
+    0x312fff05, 0x89d40033,
+  0x312a31f8, 0x89d1963c, 0x312464cd, 0x89cf2c8e, 0x311e9783, 0x89ccc328,
+    0x3118ca1b, 0x89ca5a0c,
+  0x3112fc95, 0x89c7f138, 0x310d2ef0, 0x89c588ae, 0x3107612e, 0x89c3206c,
+    0x3101934d, 0x89c0b873,
+  0x30fbc54d, 0x89be50c3, 0x30f5f730, 0x89bbe95c, 0x30f028f4, 0x89b9823e,
+    0x30ea5a9a, 0x89b71b69,
+  0x30e48c22, 0x89b4b4dd, 0x30debd8c, 0x89b24e9a, 0x30d8eed8, 0x89afe8a0,
+    0x30d32006, 0x89ad82ef,
+  0x30cd5115, 0x89ab1d87, 0x30c78206, 0x89a8b868, 0x30c1b2da, 0x89a65391,
+    0x30bbe38f, 0x89a3ef04,
+  0x30b61426, 0x89a18ac0, 0x30b0449f, 0x899f26c5, 0x30aa74fa, 0x899cc313,
+    0x30a4a537, 0x899a5faa,
+  0x309ed556, 0x8997fc8a, 0x30990557, 0x899599b3, 0x3093353a, 0x89933725,
+    0x308d64ff, 0x8990d4e0,
+  0x308794a6, 0x898e72e4, 0x3081c42f, 0x898c1131, 0x307bf39b, 0x8989afc8,
+    0x307622e8, 0x89874ea7,
+  0x30705217, 0x8984edcf, 0x306a8129, 0x89828d41, 0x3064b01d, 0x89802cfc,
+    0x305edef3, 0x897dccff,
+  0x30590dab, 0x897b6d4c, 0x30533c45, 0x89790de2, 0x304d6ac1, 0x8976aec1,
+    0x30479920, 0x89744fe9,
+  0x3041c761, 0x8971f15a, 0x303bf584, 0x896f9315, 0x30362389, 0x896d3518,
+    0x30305171, 0x896ad765,
+  0x302a7f3a, 0x896879fb, 0x3024ace6, 0x89661cda, 0x301eda75, 0x8963c002,
+    0x301907e6, 0x89616373,
+  0x30133539, 0x895f072e, 0x300d626e, 0x895cab31, 0x30078f86, 0x895a4f7e,
+    0x3001bc80, 0x8957f414,
+  0x2ffbe95d, 0x895598f3, 0x2ff6161c, 0x89533e1c, 0x2ff042bd, 0x8950e38e,
+    0x2fea6f41, 0x894e8948,
+  0x2fe49ba7, 0x894c2f4c, 0x2fdec7f0, 0x8949d59a, 0x2fd8f41b, 0x89477c30,
+    0x2fd32028, 0x89452310,
+  0x2fcd4c19, 0x8942ca39, 0x2fc777eb, 0x894071ab, 0x2fc1a3a0, 0x893e1967,
+    0x2fbbcf38, 0x893bc16b,
+  0x2fb5fab2, 0x893969b9, 0x2fb0260f, 0x89371250, 0x2faa514f, 0x8934bb31,
+    0x2fa47c71, 0x8932645b,
+  0x2f9ea775, 0x89300dce, 0x2f98d25d, 0x892db78a, 0x2f92fd26, 0x892b6190,
+    0x2f8d27d3, 0x89290bdf,
+  0x2f875262, 0x8926b677, 0x2f817cd4, 0x89246159, 0x2f7ba729, 0x89220c84,
+    0x2f75d160, 0x891fb7f8,
+  0x2f6ffb7a, 0x891d63b5, 0x2f6a2577, 0x891b0fbc, 0x2f644f56, 0x8918bc0c,
+    0x2f5e7919, 0x891668a6,
+  0x2f58a2be, 0x89141589, 0x2f52cc46, 0x8911c2b5, 0x2f4cf5b0, 0x890f702b,
+    0x2f471efe, 0x890d1dea,
+  0x2f41482e, 0x890acbf2, 0x2f3b7141, 0x89087a44, 0x2f359a37, 0x890628df,
+    0x2f2fc310, 0x8903d7c4,
+  0x2f29ebcc, 0x890186f2, 0x2f24146b, 0x88ff3669, 0x2f1e3ced, 0x88fce62a,
+    0x2f186551, 0x88fa9634,
+  0x2f128d99, 0x88f84687, 0x2f0cb5c3, 0x88f5f724, 0x2f06ddd1, 0x88f3a80b,
+    0x2f0105c1, 0x88f1593b,
+  0x2efb2d95, 0x88ef0ab4, 0x2ef5554b, 0x88ecbc77, 0x2eef7ce5, 0x88ea6e83,
+    0x2ee9a461, 0x88e820d9,
+  0x2ee3cbc1, 0x88e5d378, 0x2eddf304, 0x88e38660, 0x2ed81a29, 0x88e13992,
+    0x2ed24132, 0x88deed0e,
+  0x2ecc681e, 0x88dca0d3, 0x2ec68eed, 0x88da54e1, 0x2ec0b5a0, 0x88d8093a,
+    0x2ebadc35, 0x88d5bddb,
+  0x2eb502ae, 0x88d372c6, 0x2eaf290a, 0x88d127fb, 0x2ea94f49, 0x88cedd79,
+    0x2ea3756b, 0x88cc9340,
+  0x2e9d9b70, 0x88ca4951, 0x2e97c159, 0x88c7ffac, 0x2e91e725, 0x88c5b650,
+    0x2e8c0cd4, 0x88c36d3e,
+  0x2e863267, 0x88c12475, 0x2e8057dd, 0x88bedbf6, 0x2e7a7d36, 0x88bc93c0,
+    0x2e74a272, 0x88ba4bd4,
+  0x2e6ec792, 0x88b80432, 0x2e68ec95, 0x88b5bcd9, 0x2e63117c, 0x88b375ca,
+    0x2e5d3646, 0x88b12f04,
+  0x2e575af3, 0x88aee888, 0x2e517f84, 0x88aca255, 0x2e4ba3f8, 0x88aa5c6c,
+    0x2e45c850, 0x88a816cd,
+  0x2e3fec8b, 0x88a5d177, 0x2e3a10aa, 0x88a38c6b, 0x2e3434ac, 0x88a147a9,
+    0x2e2e5891, 0x889f0330,
+  0x2e287c5a, 0x889cbf01, 0x2e22a007, 0x889a7b1b, 0x2e1cc397, 0x88983780,
+    0x2e16e70b, 0x8895f42d,
+  0x2e110a62, 0x8893b125, 0x2e0b2d9d, 0x88916e66, 0x2e0550bb, 0x888f2bf1,
+    0x2dff73bd, 0x888ce9c5,
+  0x2df996a3, 0x888aa7e3, 0x2df3b96c, 0x8888664b, 0x2deddc19, 0x888624fd,
+    0x2de7feaa, 0x8883e3f8,
+  0x2de2211e, 0x8881a33d, 0x2ddc4376, 0x887f62cb, 0x2dd665b2, 0x887d22a4,
+    0x2dd087d1, 0x887ae2c6,
+  0x2dcaa9d5, 0x8878a332, 0x2dc4cbbc, 0x887663e7, 0x2dbeed86, 0x887424e7,
+    0x2db90f35, 0x8871e630,
+  0x2db330c7, 0x886fa7c2, 0x2dad523d, 0x886d699f, 0x2da77397, 0x886b2bc5,
+    0x2da194d5, 0x8868ee35,
+  0x2d9bb5f6, 0x8866b0ef, 0x2d95d6fc, 0x886473f2, 0x2d8ff7e5, 0x88623740,
+    0x2d8a18b3, 0x885ffad7,
+  0x2d843964, 0x885dbeb8, 0x2d7e59f9, 0x885b82e3, 0x2d787a72, 0x88594757,
+    0x2d729acf, 0x88570c16,
+  0x2d6cbb10, 0x8854d11e, 0x2d66db35, 0x88529670, 0x2d60fb3e, 0x88505c0b,
+    0x2d5b1b2b, 0x884e21f1,
+  0x2d553afc, 0x884be821, 0x2d4f5ab1, 0x8849ae9a, 0x2d497a4a, 0x8847755d,
+    0x2d4399c7, 0x88453c6a,
+  0x2d3db928, 0x884303c1, 0x2d37d86d, 0x8840cb61, 0x2d31f797, 0x883e934c,
+    0x2d2c16a4, 0x883c5b81,
+  0x2d263596, 0x883a23ff, 0x2d20546b, 0x8837ecc7, 0x2d1a7325, 0x8835b5d9,
+    0x2d1491c4, 0x88337f35,
+  0x2d0eb046, 0x883148db, 0x2d08ceac, 0x882f12cb, 0x2d02ecf7, 0x882cdd04,
+    0x2cfd0b26, 0x882aa788,
+  0x2cf72939, 0x88287256, 0x2cf14731, 0x88263d6d, 0x2ceb650d, 0x882408ce,
+    0x2ce582cd, 0x8821d47a,
+  0x2cdfa071, 0x881fa06f, 0x2cd9bdfa, 0x881d6cae, 0x2cd3db67, 0x881b3937,
+    0x2ccdf8b8, 0x8819060a,
+  0x2cc815ee, 0x8816d327, 0x2cc23308, 0x8814a08f, 0x2cbc5006, 0x88126e40,
+    0x2cb66ce9, 0x88103c3b,
+  0x2cb089b1, 0x880e0a7f, 0x2caaa65c, 0x880bd90e, 0x2ca4c2ed, 0x8809a7e7,
+    0x2c9edf61, 0x8807770a,
+  0x2c98fbba, 0x88054677, 0x2c9317f8, 0x8803162e, 0x2c8d341a, 0x8800e62f,
+    0x2c875021, 0x87feb67a,
+  0x2c816c0c, 0x87fc870f, 0x2c7b87dc, 0x87fa57ee, 0x2c75a390, 0x87f82917,
+    0x2c6fbf29, 0x87f5fa8b,
+  0x2c69daa6, 0x87f3cc48, 0x2c63f609, 0x87f19e4f, 0x2c5e114f, 0x87ef70a0,
+    0x2c582c7b, 0x87ed433c,
+  0x2c52478a, 0x87eb1621, 0x2c4c627f, 0x87e8e950, 0x2c467d58, 0x87e6bcca,
+    0x2c409816, 0x87e4908e,
+  0x2c3ab2b9, 0x87e2649b, 0x2c34cd40, 0x87e038f3, 0x2c2ee7ad, 0x87de0d95,
+    0x2c2901fd, 0x87dbe281,
+  0x2c231c33, 0x87d9b7b7, 0x2c1d364e, 0x87d78d38, 0x2c17504d, 0x87d56302,
+    0x2c116a31, 0x87d33916,
+  0x2c0b83fa, 0x87d10f75, 0x2c059da7, 0x87cee61e, 0x2bffb73a, 0x87ccbd11,
+    0x2bf9d0b1, 0x87ca944e,
+  0x2bf3ea0d, 0x87c86bd5, 0x2bee034e, 0x87c643a6, 0x2be81c74, 0x87c41bc2,
+    0x2be2357f, 0x87c1f427,
+  0x2bdc4e6f, 0x87bfccd7, 0x2bd66744, 0x87bda5d1, 0x2bd07ffe, 0x87bb7f16,
+    0x2bca989d, 0x87b958a4,
+  0x2bc4b120, 0x87b7327d, 0x2bbec989, 0x87b50c9f, 0x2bb8e1d7, 0x87b2e70c,
+    0x2bb2fa0a, 0x87b0c1c4,
+  0x2bad1221, 0x87ae9cc5, 0x2ba72a1e, 0x87ac7811, 0x2ba14200, 0x87aa53a6,
+    0x2b9b59c7, 0x87a82f87,
+  0x2b957173, 0x87a60bb1, 0x2b8f8905, 0x87a3e825, 0x2b89a07b, 0x87a1c4e4,
+    0x2b83b7d7, 0x879fa1ed,
+  0x2b7dcf17, 0x879d7f41, 0x2b77e63d, 0x879b5cde, 0x2b71fd48, 0x87993ac6,
+    0x2b6c1438, 0x879718f8,
+  0x2b662b0e, 0x8794f774, 0x2b6041c9, 0x8792d63b, 0x2b5a5868, 0x8790b54c,
+    0x2b546eee, 0x878e94a7,
+  0x2b4e8558, 0x878c744d, 0x2b489ba8, 0x878a543d, 0x2b42b1dd, 0x87883477,
+    0x2b3cc7f7, 0x878614fb,
+  0x2b36ddf7, 0x8783f5ca, 0x2b30f3dc, 0x8781d6e3, 0x2b2b09a6, 0x877fb846,
+    0x2b251f56, 0x877d99f4,
+  0x2b1f34eb, 0x877b7bec, 0x2b194a66, 0x87795e2f, 0x2b135fc6, 0x877740bb,
+    0x2b0d750b, 0x87752392,
+  0x2b078a36, 0x877306b4, 0x2b019f46, 0x8770ea20, 0x2afbb43c, 0x876ecdd6,
+    0x2af5c917, 0x876cb1d6,
+  0x2aefddd8, 0x876a9621, 0x2ae9f27e, 0x87687ab7, 0x2ae4070a, 0x87665f96,
+    0x2ade1b7c, 0x876444c1,
+  0x2ad82fd2, 0x87622a35, 0x2ad2440f, 0x87600ff4, 0x2acc5831, 0x875df5fd,
+    0x2ac66c39, 0x875bdc51,
+  0x2ac08026, 0x8759c2ef, 0x2aba93f9, 0x8757a9d8, 0x2ab4a7b1, 0x8755910b,
+    0x2aaebb50, 0x87537888,
+  0x2aa8ced3, 0x87516050, 0x2aa2e23d, 0x874f4862, 0x2a9cf58c, 0x874d30bf,
+    0x2a9708c1, 0x874b1966,
+  0x2a911bdc, 0x87490258, 0x2a8b2edc, 0x8746eb94, 0x2a8541c3, 0x8744d51b,
+    0x2a7f548e, 0x8742beec,
+  0x2a796740, 0x8740a907, 0x2a7379d8, 0x873e936d, 0x2a6d8c55, 0x873c7e1e,
+    0x2a679eb8, 0x873a6919,
+  0x2a61b101, 0x8738545e, 0x2a5bc330, 0x87363fee, 0x2a55d545, 0x87342bc9,
+    0x2a4fe740, 0x873217ee,
+  0x2a49f920, 0x8730045d, 0x2a440ae7, 0x872df117, 0x2a3e1c93, 0x872bde1c,
+    0x2a382e25, 0x8729cb6b,
+  0x2a323f9e, 0x8727b905, 0x2a2c50fc, 0x8725a6e9, 0x2a266240, 0x87239518,
+    0x2a20736a, 0x87218391,
+  0x2a1a847b, 0x871f7255, 0x2a149571, 0x871d6163, 0x2a0ea64d, 0x871b50bc,
+    0x2a08b710, 0x87194060,
+  0x2a02c7b8, 0x8717304e, 0x29fcd847, 0x87152087, 0x29f6e8bb, 0x8713110a,
+    0x29f0f916, 0x871101d8,
+  0x29eb0957, 0x870ef2f1, 0x29e5197e, 0x870ce454, 0x29df298b, 0x870ad602,
+    0x29d9397f, 0x8708c7fa,
+  0x29d34958, 0x8706ba3d, 0x29cd5918, 0x8704acca, 0x29c768be, 0x87029fa3,
+    0x29c1784a, 0x870092c5,
+  0x29bb87bc, 0x86fe8633, 0x29b59715, 0x86fc79eb, 0x29afa654, 0x86fa6dee,
+    0x29a9b579, 0x86f8623b,
+  0x29a3c485, 0x86f656d3, 0x299dd377, 0x86f44bb6, 0x2997e24f, 0x86f240e3,
+    0x2991f10e, 0x86f0365c,
+  0x298bffb2, 0x86ee2c1e, 0x29860e3e, 0x86ec222c, 0x29801caf, 0x86ea1884,
+    0x297a2b07, 0x86e80f27,
+  0x29743946, 0x86e60614, 0x296e476b, 0x86e3fd4c, 0x29685576, 0x86e1f4cf,
+    0x29626368, 0x86dfec9d,
+  0x295c7140, 0x86dde4b5, 0x29567eff, 0x86dbdd18, 0x29508ca4, 0x86d9d5c6,
+    0x294a9a30, 0x86d7cebf,
+  0x2944a7a2, 0x86d5c802, 0x293eb4fb, 0x86d3c190, 0x2938c23a, 0x86d1bb69,
+    0x2932cf60, 0x86cfb58c,
+  0x292cdc6d, 0x86cdaffa, 0x2926e960, 0x86cbaab3, 0x2920f63a, 0x86c9a5b7,
+    0x291b02fa, 0x86c7a106,
+  0x29150fa1, 0x86c59c9f, 0x290f1c2f, 0x86c39883, 0x290928a3, 0x86c194b2,
+    0x290334ff, 0x86bf912c,
+  0x28fd4140, 0x86bd8df0, 0x28f74d69, 0x86bb8b00, 0x28f15978, 0x86b9885a,
+    0x28eb656e, 0x86b785ff,
+  0x28e5714b, 0x86b583ee, 0x28df7d0e, 0x86b38229, 0x28d988b8, 0x86b180ae,
+    0x28d3944a, 0x86af7f7e,
+  0x28cd9fc1, 0x86ad7e99, 0x28c7ab20, 0x86ab7dff, 0x28c1b666, 0x86a97db0,
+    0x28bbc192, 0x86a77dab,
+  0x28b5cca5, 0x86a57df2, 0x28afd7a0, 0x86a37e83, 0x28a9e281, 0x86a17f5f,
+    0x28a3ed49, 0x869f8086,
+  0x289df7f8, 0x869d81f8, 0x2898028e, 0x869b83b4, 0x28920d0a, 0x869985bc,
+    0x288c176e, 0x8697880f,
+  0x288621b9, 0x86958aac, 0x28802beb, 0x86938d94, 0x287a3604, 0x869190c7,
+    0x28744004, 0x868f9445,
+  0x286e49ea, 0x868d980e, 0x286853b8, 0x868b9c22, 0x28625d6d, 0x8689a081,
+    0x285c670a, 0x8687a52b,
+  0x2856708d, 0x8685aa20, 0x285079f7, 0x8683af5f, 0x284a8349, 0x8681b4ea,
+    0x28448c81, 0x867fbabf,
+  0x283e95a1, 0x867dc0e0, 0x28389ea8, 0x867bc74b, 0x2832a796, 0x8679ce01,
+    0x282cb06c, 0x8677d503,
+  0x2826b928, 0x8675dc4f, 0x2820c1cc, 0x8673e3e6, 0x281aca57, 0x8671ebc8,
+    0x2814d2c9, 0x866ff3f6,
+  0x280edb23, 0x866dfc6e, 0x2808e364, 0x866c0531, 0x2802eb8c, 0x866a0e3f,
+    0x27fcf39c, 0x86681798,
+  0x27f6fb92, 0x8666213c, 0x27f10371, 0x86642b2c, 0x27eb0b36, 0x86623566,
+    0x27e512e3, 0x86603feb,
+  0x27df1a77, 0x865e4abb, 0x27d921f3, 0x865c55d7, 0x27d32956, 0x865a613d,
+    0x27cd30a1, 0x86586cee,
+  0x27c737d3, 0x865678eb, 0x27c13eec, 0x86548532, 0x27bb45ed, 0x865291c4,
+    0x27b54cd6, 0x86509ea2,
+  0x27af53a6, 0x864eabcb, 0x27a95a5d, 0x864cb93e, 0x27a360fc, 0x864ac6fd,
+    0x279d6783, 0x8648d507,
+  0x27976df1, 0x8646e35c, 0x27917447, 0x8644f1fc, 0x278b7a84, 0x864300e7,
+    0x278580a9, 0x8641101d,
+  0x277f86b5, 0x863f1f9e, 0x27798caa, 0x863d2f6b, 0x27739285, 0x863b3f82,
+    0x276d9849, 0x86394fe5,
+  0x27679df4, 0x86376092, 0x2761a387, 0x8635718b, 0x275ba901, 0x863382cf,
+    0x2755ae64, 0x8631945e,
+  0x274fb3ae, 0x862fa638, 0x2749b8e0, 0x862db85e, 0x2743bdf9, 0x862bcace,
+    0x273dc2fa, 0x8629dd8a,
+  0x2737c7e3, 0x8627f091, 0x2731ccb4, 0x862603e3, 0x272bd16d, 0x86241780,
+    0x2725d60e, 0x86222b68,
+  0x271fda96, 0x86203f9c, 0x2719df06, 0x861e541a, 0x2713e35f, 0x861c68e4,
+    0x270de79f, 0x861a7df9,
+  0x2707ebc7, 0x86189359, 0x2701efd7, 0x8616a905, 0x26fbf3ce, 0x8614befb,
+    0x26f5f7ae, 0x8612d53d,
+  0x26effb76, 0x8610ebca, 0x26e9ff26, 0x860f02a3, 0x26e402bd, 0x860d19c6,
+    0x26de063d, 0x860b3135,
+  0x26d809a5, 0x860948ef, 0x26d20cf5, 0x860760f4, 0x26cc102d, 0x86057944,
+    0x26c6134d, 0x860391e0,
+  0x26c01655, 0x8601aac7, 0x26ba1945, 0x85ffc3f9, 0x26b41c1d, 0x85fddd76,
+    0x26ae1edd, 0x85fbf73f,
+  0x26a82186, 0x85fa1153, 0x26a22416, 0x85f82bb2, 0x269c268f, 0x85f6465c,
+    0x269628f0, 0x85f46152,
+  0x26902b39, 0x85f27c93, 0x268a2d6b, 0x85f09820, 0x26842f84, 0x85eeb3f7,
+    0x267e3186, 0x85ecd01a,
+  0x26783370, 0x85eaec88, 0x26723543, 0x85e90942, 0x266c36fe, 0x85e72647,
+    0x266638a1, 0x85e54397,
+  0x26603a2c, 0x85e36132, 0x265a3b9f, 0x85e17f19, 0x26543cfb, 0x85df9d4b,
+    0x264e3e40, 0x85ddbbc9,
+  0x26483f6c, 0x85dbda91, 0x26424082, 0x85d9f9a5, 0x263c417f, 0x85d81905,
+    0x26364265, 0x85d638b0,
+  0x26304333, 0x85d458a6, 0x262a43ea, 0x85d278e7, 0x26244489, 0x85d09974,
+    0x261e4511, 0x85ceba4d,
+  0x26184581, 0x85ccdb70, 0x261245da, 0x85cafcdf, 0x260c461b, 0x85c91e9a,
+    0x26064645, 0x85c740a0,
+  0x26004657, 0x85c562f1, 0x25fa4652, 0x85c3858d, 0x25f44635, 0x85c1a875,
+    0x25ee4601, 0x85bfcba9,
+  0x25e845b6, 0x85bdef28, 0x25e24553, 0x85bc12f2, 0x25dc44d9, 0x85ba3707,
+    0x25d64447, 0x85b85b68,
+  0x25d0439f, 0x85b68015, 0x25ca42de, 0x85b4a50d, 0x25c44207, 0x85b2ca50,
+    0x25be4118, 0x85b0efdf,
+  0x25b84012, 0x85af15b9, 0x25b23ef5, 0x85ad3bdf, 0x25ac3dc0, 0x85ab6250,
+    0x25a63c74, 0x85a9890d,
+  0x25a03b11, 0x85a7b015, 0x259a3997, 0x85a5d768, 0x25943806, 0x85a3ff07,
+    0x258e365d, 0x85a226f2,
+  0x2588349d, 0x85a04f28, 0x258232c6, 0x859e77a9, 0x257c30d8, 0x859ca076,
+    0x25762ed3, 0x859ac98f,
+  0x25702cb7, 0x8598f2f3, 0x256a2a83, 0x85971ca2, 0x25642839, 0x8595469d,
+    0x255e25d7, 0x859370e4,
+  0x2558235f, 0x85919b76, 0x255220cf, 0x858fc653, 0x254c1e28, 0x858df17c,
+    0x25461b6b, 0x858c1cf1,
+  0x25401896, 0x858a48b1, 0x253a15aa, 0x858874bd, 0x253412a8, 0x8586a114,
+    0x252e0f8e, 0x8584cdb7,
+  0x25280c5e, 0x8582faa5, 0x25220916, 0x858127df, 0x251c05b8, 0x857f5564,
+    0x25160243, 0x857d8335,
+  0x250ffeb7, 0x857bb152, 0x2509fb14, 0x8579dfba, 0x2503f75a, 0x85780e6e,
+    0x24fdf389, 0x85763d6d,
+  0x24f7efa2, 0x85746cb8, 0x24f1eba4, 0x85729c4e, 0x24ebe78f, 0x8570cc30,
+    0x24e5e363, 0x856efc5e,
+  0x24dfdf20, 0x856d2cd7, 0x24d9dac7, 0x856b5d9c, 0x24d3d657, 0x85698ead,
+    0x24cdd1d0, 0x8567c009,
+  0x24c7cd33, 0x8565f1b0, 0x24c1c87f, 0x856423a4, 0x24bbc3b4, 0x856255e3,
+    0x24b5bed2, 0x8560886d,
+  0x24afb9da, 0x855ebb44, 0x24a9b4cb, 0x855cee66, 0x24a3afa6, 0x855b21d3,
+    0x249daa6a, 0x8559558c,
+  0x2497a517, 0x85578991, 0x24919fae, 0x8555bde2, 0x248b9a2f, 0x8553f27e,
+    0x24859498, 0x85522766,
+  0x247f8eec, 0x85505c99, 0x24798928, 0x854e9219, 0x2473834f, 0x854cc7e3,
+    0x246d7d5e, 0x854afdfa,
+  0x24677758, 0x8549345c, 0x2461713a, 0x85476b0a, 0x245b6b07, 0x8545a204,
+    0x245564bd, 0x8543d949,
+  0x244f5e5c, 0x854210db, 0x244957e5, 0x854048b7, 0x24435158, 0x853e80e0,
+    0x243d4ab4, 0x853cb954,
+  0x243743fa, 0x853af214, 0x24313d2a, 0x85392b20, 0x242b3644, 0x85376477,
+    0x24252f47, 0x85359e1a,
+  0x241f2833, 0x8533d809, 0x2419210a, 0x85321244, 0x241319ca, 0x85304cca,
+    0x240d1274, 0x852e879d,
+  0x24070b08, 0x852cc2bb, 0x24010385, 0x852afe24, 0x23fafbec, 0x852939da,
+    0x23f4f43e, 0x852775db,
+  0x23eeec78, 0x8525b228, 0x23e8e49d, 0x8523eec1, 0x23e2dcac, 0x85222ba5,
+    0x23dcd4a4, 0x852068d6,
+  0x23d6cc87, 0x851ea652, 0x23d0c453, 0x851ce41a, 0x23cabc09, 0x851b222e,
+    0x23c4b3a9, 0x8519608d,
+  0x23beab33, 0x85179f39, 0x23b8a2a7, 0x8515de30, 0x23b29a05, 0x85141d73,
+    0x23ac914d, 0x85125d02,
+  0x23a6887f, 0x85109cdd, 0x23a07f9a, 0x850edd03, 0x239a76a0, 0x850d1d75,
+    0x23946d90, 0x850b5e34,
+  0x238e646a, 0x85099f3e, 0x23885b2e, 0x8507e094, 0x238251dd, 0x85062235,
+    0x237c4875, 0x85046423,
+  0x23763ef7, 0x8502a65c, 0x23703564, 0x8500e8e2, 0x236a2bba, 0x84ff2bb3,
+    0x236421fb, 0x84fd6ed0,
+  0x235e1826, 0x84fbb239, 0x23580e3b, 0x84f9f5ee, 0x2352043b, 0x84f839ee,
+    0x234bfa24, 0x84f67e3b,
+  0x2345eff8, 0x84f4c2d4, 0x233fe5b6, 0x84f307b8, 0x2339db5e, 0x84f14ce8,
+    0x2333d0f1, 0x84ef9265,
+  0x232dc66d, 0x84edd82d, 0x2327bbd5, 0x84ec1e41, 0x2321b126, 0x84ea64a1,
+    0x231ba662, 0x84e8ab4d,
+  0x23159b88, 0x84e6f244, 0x230f9098, 0x84e53988, 0x23098593, 0x84e38118,
+    0x23037a78, 0x84e1c8f3,
+  0x22fd6f48, 0x84e0111b, 0x22f76402, 0x84de598f, 0x22f158a7, 0x84dca24e,
+    0x22eb4d36, 0x84daeb5a,
+  0x22e541af, 0x84d934b1, 0x22df3613, 0x84d77e54, 0x22d92a61, 0x84d5c844,
+    0x22d31e9a, 0x84d4127f,
+  0x22cd12bd, 0x84d25d06, 0x22c706cb, 0x84d0a7da, 0x22c0fac4, 0x84cef2f9,
+    0x22baeea7, 0x84cd3e64,
+  0x22b4e274, 0x84cb8a1b, 0x22aed62c, 0x84c9d61f, 0x22a8c9cf, 0x84c8226e,
+    0x22a2bd5d, 0x84c66f09,
+  0x229cb0d5, 0x84c4bbf0, 0x2296a437, 0x84c30924, 0x22909785, 0x84c156a3,
+    0x228a8abd, 0x84bfa46e,
+  0x22847de0, 0x84bdf286, 0x227e70ed, 0x84bc40e9, 0x227863e5, 0x84ba8f98,
+    0x227256c8, 0x84b8de94,
+  0x226c4996, 0x84b72ddb, 0x22663c4e, 0x84b57d6f, 0x22602ef1, 0x84b3cd4f,
+    0x225a217f, 0x84b21d7a,
+  0x225413f8, 0x84b06df2, 0x224e065c, 0x84aebeb6, 0x2247f8aa, 0x84ad0fc6,
+    0x2241eae3, 0x84ab6122,
+  0x223bdd08, 0x84a9b2ca, 0x2235cf17, 0x84a804be, 0x222fc111, 0x84a656fe,
+    0x2229b2f6, 0x84a4a98a,
+  0x2223a4c5, 0x84a2fc62, 0x221d9680, 0x84a14f87, 0x22178826, 0x849fa2f7,
+    0x221179b7, 0x849df6b4,
+  0x220b6b32, 0x849c4abd, 0x22055c99, 0x849a9f12, 0x21ff4dea, 0x8498f3b3,
+    0x21f93f27, 0x849748a0,
+  0x21f3304f, 0x84959dd9, 0x21ed2162, 0x8493f35e, 0x21e71260, 0x84924930,
+    0x21e10349, 0x84909f4e,
+  0x21daf41d, 0x848ef5b7, 0x21d4e4dc, 0x848d4c6d, 0x21ced586, 0x848ba36f,
+    0x21c8c61c, 0x8489fabe,
+  0x21c2b69c, 0x84885258, 0x21bca708, 0x8486aa3e, 0x21b6975f, 0x84850271,
+    0x21b087a1, 0x84835af0,
+  0x21aa77cf, 0x8481b3bb, 0x21a467e7, 0x84800cd2, 0x219e57eb, 0x847e6636,
+    0x219847da, 0x847cbfe5,
+  0x219237b5, 0x847b19e1, 0x218c277a, 0x84797429, 0x2186172b, 0x8477cebd,
+    0x218006c8, 0x8476299e,
+  0x2179f64f, 0x847484ca, 0x2173e5c2, 0x8472e043, 0x216dd521, 0x84713c08,
+    0x2167c46b, 0x846f9819,
+  0x2161b3a0, 0x846df477, 0x215ba2c0, 0x846c5120, 0x215591cc, 0x846aae16,
+    0x214f80c4, 0x84690b58,
+  0x21496fa7, 0x846768e7, 0x21435e75, 0x8465c6c1, 0x213d4d2f, 0x846424e8,
+    0x21373bd4, 0x8462835b,
+  0x21312a65, 0x8460e21a, 0x212b18e1, 0x845f4126, 0x21250749, 0x845da07e,
+    0x211ef59d, 0x845c0022,
+  0x2118e3dc, 0x845a6012, 0x2112d206, 0x8458c04f, 0x210cc01d, 0x845720d8,
+    0x2106ae1e, 0x845581ad,
+  0x21009c0c, 0x8453e2cf, 0x20fa89e5, 0x8452443d, 0x20f477aa, 0x8450a5f7,
+    0x20ee655a, 0x844f07fd,
+  0x20e852f6, 0x844d6a50, 0x20e2407e, 0x844bccef, 0x20dc2df2, 0x844a2fda,
+    0x20d61b51, 0x84489311,
+  0x20d0089c, 0x8446f695, 0x20c9f5d3, 0x84455a66, 0x20c3e2f5, 0x8443be82,
+    0x20bdd003, 0x844222eb,
+  0x20b7bcfe, 0x844087a0, 0x20b1a9e4, 0x843eeca2, 0x20ab96b5, 0x843d51f0,
+    0x20a58373, 0x843bb78a,
+  0x209f701c, 0x843a1d70, 0x20995cb2, 0x843883a3, 0x20934933, 0x8436ea23,
+    0x208d35a0, 0x843550ee,
+  0x208721f9, 0x8433b806, 0x20810e3e, 0x84321f6b, 0x207afa6f, 0x8430871b,
+    0x2074e68c, 0x842eef18,
+  0x206ed295, 0x842d5762, 0x2068be8a, 0x842bbff8, 0x2062aa6b, 0x842a28da,
+    0x205c9638, 0x84289209,
+  0x205681f1, 0x8426fb84, 0x20506d96, 0x8425654b, 0x204a5927, 0x8423cf5f,
+    0x204444a4, 0x842239bf,
+  0x203e300d, 0x8420a46c, 0x20381b63, 0x841f0f65, 0x203206a4, 0x841d7aaa,
+    0x202bf1d2, 0x841be63c,
+  0x2025dcec, 0x841a521a, 0x201fc7f2, 0x8418be45, 0x2019b2e4, 0x84172abc,
+    0x20139dc2, 0x84159780,
+  0x200d888d, 0x84140490, 0x20077344, 0x841271ec, 0x20015de7, 0x8410df95,
+    0x1ffb4876, 0x840f4d8a,
+  0x1ff532f2, 0x840dbbcc, 0x1fef1d59, 0x840c2a5a, 0x1fe907ae, 0x840a9935,
+    0x1fe2f1ee, 0x8409085c,
+  0x1fdcdc1b, 0x840777d0, 0x1fd6c634, 0x8405e790, 0x1fd0b03a, 0x8404579d,
+    0x1fca9a2b, 0x8402c7f6,
+  0x1fc4840a, 0x8401389b, 0x1fbe6dd4, 0x83ffa98d, 0x1fb8578b, 0x83fe1acc,
+    0x1fb2412f, 0x83fc8c57,
+  0x1fac2abf, 0x83fafe2e, 0x1fa6143b, 0x83f97052, 0x1f9ffda4, 0x83f7e2c3,
+    0x1f99e6fa, 0x83f65580,
+  0x1f93d03c, 0x83f4c889, 0x1f8db96a, 0x83f33bdf, 0x1f87a285, 0x83f1af82,
+    0x1f818b8d, 0x83f02371,
+  0x1f7b7481, 0x83ee97ad, 0x1f755d61, 0x83ed0c35, 0x1f6f462f, 0x83eb810a,
+    0x1f692ee9, 0x83e9f62b,
+  0x1f63178f, 0x83e86b99, 0x1f5d0022, 0x83e6e153, 0x1f56e8a2, 0x83e5575a,
+    0x1f50d10e, 0x83e3cdad,
+  0x1f4ab968, 0x83e2444d, 0x1f44a1ad, 0x83e0bb3a, 0x1f3e89e0, 0x83df3273,
+    0x1f3871ff, 0x83dda9f9,
+  0x1f325a0b, 0x83dc21cb, 0x1f2c4204, 0x83da99ea, 0x1f2629ea, 0x83d91255,
+    0x1f2011bc, 0x83d78b0d,
+  0x1f19f97b, 0x83d60412, 0x1f13e127, 0x83d47d63, 0x1f0dc8c0, 0x83d2f701,
+    0x1f07b045, 0x83d170eb,
+  0x1f0197b8, 0x83cfeb22, 0x1efb7f17, 0x83ce65a6, 0x1ef56664, 0x83cce076,
+    0x1eef4d9d, 0x83cb5b93,
+  0x1ee934c3, 0x83c9d6fc, 0x1ee31bd6, 0x83c852b2, 0x1edd02d6, 0x83c6ceb5,
+    0x1ed6e9c3, 0x83c54b04,
+  0x1ed0d09d, 0x83c3c7a0, 0x1ecab763, 0x83c24488, 0x1ec49e17, 0x83c0c1be,
+    0x1ebe84b8, 0x83bf3f3f,
+  0x1eb86b46, 0x83bdbd0e, 0x1eb251c1, 0x83bc3b29, 0x1eac3829, 0x83bab991,
+    0x1ea61e7e, 0x83b93845,
+  0x1ea004c1, 0x83b7b746, 0x1e99eaf0, 0x83b63694, 0x1e93d10c, 0x83b4b62e,
+    0x1e8db716, 0x83b33616,
+  0x1e879d0d, 0x83b1b649, 0x1e8182f1, 0x83b036ca, 0x1e7b68c2, 0x83aeb797,
+    0x1e754e80, 0x83ad38b1,
+  0x1e6f342c, 0x83abba17, 0x1e6919c4, 0x83aa3bca, 0x1e62ff4a, 0x83a8bdca,
+    0x1e5ce4be, 0x83a74017,
+  0x1e56ca1e, 0x83a5c2b0, 0x1e50af6c, 0x83a44596, 0x1e4a94a7, 0x83a2c8c9,
+    0x1e4479cf, 0x83a14c48,
+  0x1e3e5ee5, 0x839fd014, 0x1e3843e8, 0x839e542d, 0x1e3228d9, 0x839cd893,
+    0x1e2c0db6, 0x839b5d45,
+  0x1e25f282, 0x8399e244, 0x1e1fd73a, 0x83986790, 0x1e19bbe0, 0x8396ed29,
+    0x1e13a074, 0x8395730e,
+  0x1e0d84f5, 0x8393f940, 0x1e076963, 0x83927fbf, 0x1e014dbf, 0x8391068a,
+    0x1dfb3208, 0x838f8da2,
+  0x1df5163f, 0x838e1507, 0x1deefa63, 0x838c9cb9, 0x1de8de75, 0x838b24b8,
+    0x1de2c275, 0x8389ad03,
+  0x1ddca662, 0x8388359b, 0x1dd68a3c, 0x8386be80, 0x1dd06e04, 0x838547b2,
+    0x1dca51ba, 0x8383d130,
+  0x1dc4355e, 0x83825afb, 0x1dbe18ef, 0x8380e513, 0x1db7fc6d, 0x837f6f78,
+    0x1db1dfda, 0x837dfa2a,
+  0x1dabc334, 0x837c8528, 0x1da5a67c, 0x837b1074, 0x1d9f89b1, 0x83799c0c,
+    0x1d996cd4, 0x837827f0,
+  0x1d934fe5, 0x8376b422, 0x1d8d32e4, 0x837540a1, 0x1d8715d0, 0x8373cd6c,
+    0x1d80f8ab, 0x83725a84,
+  0x1d7adb73, 0x8370e7e9, 0x1d74be29, 0x836f759b, 0x1d6ea0cc, 0x836e039a,
+    0x1d68835e, 0x836c91e5,
+  0x1d6265dd, 0x836b207d, 0x1d5c484b, 0x8369af63, 0x1d562aa6, 0x83683e95,
+    0x1d500cef, 0x8366ce14,
+  0x1d49ef26, 0x83655ddf, 0x1d43d14b, 0x8363edf8, 0x1d3db35e, 0x83627e5d,
+    0x1d37955e, 0x83610f10,
+  0x1d31774d, 0x835fa00f, 0x1d2b592a, 0x835e315b, 0x1d253af5, 0x835cc2f4,
+    0x1d1f1cae, 0x835b54da,
+  0x1d18fe54, 0x8359e70d, 0x1d12dfe9, 0x8358798c, 0x1d0cc16c, 0x83570c59,
+    0x1d06a2dd, 0x83559f72,
+  0x1d00843d, 0x835432d8, 0x1cfa658a, 0x8352c68c, 0x1cf446c5, 0x83515a8c,
+    0x1cee27ef, 0x834feed9,
+  0x1ce80906, 0x834e8373, 0x1ce1ea0c, 0x834d185a, 0x1cdbcb00, 0x834bad8e,
+    0x1cd5abe3, 0x834a430e,
+  0x1ccf8cb3, 0x8348d8dc, 0x1cc96d72, 0x83476ef6, 0x1cc34e1f, 0x8346055e,
+    0x1cbd2eba, 0x83449c12,
+  0x1cb70f43, 0x83433314, 0x1cb0efbb, 0x8341ca62, 0x1caad021, 0x834061fd,
+    0x1ca4b075, 0x833ef9e6,
+  0x1c9e90b8, 0x833d921b, 0x1c9870e9, 0x833c2a9d, 0x1c925109, 0x833ac36c,
+    0x1c8c3116, 0x83395c88,
+  0x1c861113, 0x8337f5f1, 0x1c7ff0fd, 0x83368fa7, 0x1c79d0d6, 0x833529aa,
+    0x1c73b09d, 0x8333c3fa,
+  0x1c6d9053, 0x83325e97, 0x1c676ff8, 0x8330f981, 0x1c614f8b, 0x832f94b8,
+    0x1c5b2f0c, 0x832e303c,
+  0x1c550e7c, 0x832ccc0d, 0x1c4eedda, 0x832b682b, 0x1c48cd27, 0x832a0496,
+    0x1c42ac62, 0x8328a14d,
+  0x1c3c8b8c, 0x83273e52, 0x1c366aa5, 0x8325dba4, 0x1c3049ac, 0x83247943,
+    0x1c2a28a2, 0x8323172f,
+  0x1c240786, 0x8321b568, 0x1c1de659, 0x832053ee, 0x1c17c51b, 0x831ef2c1,
+    0x1c11a3cb, 0x831d91e1,
+  0x1c0b826a, 0x831c314e, 0x1c0560f8, 0x831ad109, 0x1bff3f75, 0x83197110,
+    0x1bf91de0, 0x83181164,
+  0x1bf2fc3a, 0x8316b205, 0x1becda83, 0x831552f4, 0x1be6b8ba, 0x8313f42f,
+    0x1be096e0, 0x831295b7,
+  0x1bda74f6, 0x8311378d, 0x1bd452f9, 0x830fd9af, 0x1bce30ec, 0x830e7c1f,
+    0x1bc80ece, 0x830d1edc,
+  0x1bc1ec9e, 0x830bc1e6, 0x1bbbca5e, 0x830a653c, 0x1bb5a80c, 0x830908e0,
+    0x1baf85a9, 0x8307acd1,
+  0x1ba96335, 0x83065110, 0x1ba340b0, 0x8304f59b, 0x1b9d1e1a, 0x83039a73,
+    0x1b96fb73, 0x83023f98,
+  0x1b90d8bb, 0x8300e50b, 0x1b8ab5f2, 0x82ff8acb, 0x1b849317, 0x82fe30d7,
+    0x1b7e702c, 0x82fcd731,
+  0x1b784d30, 0x82fb7dd8, 0x1b722a23, 0x82fa24cc, 0x1b6c0705, 0x82f8cc0d,
+    0x1b65e3d7, 0x82f7739c,
+  0x1b5fc097, 0x82f61b77, 0x1b599d46, 0x82f4c3a0, 0x1b5379e5, 0x82f36c15,
+    0x1b4d5672, 0x82f214d8,
+  0x1b4732ef, 0x82f0bde8, 0x1b410f5b, 0x82ef6745, 0x1b3aebb6, 0x82ee10ef,
+    0x1b34c801, 0x82ecbae7,
+  0x1b2ea43a, 0x82eb652b, 0x1b288063, 0x82ea0fbd, 0x1b225c7b, 0x82e8ba9c,
+    0x1b1c3883, 0x82e765c8,
+  0x1b161479, 0x82e61141, 0x1b0ff05f, 0x82e4bd07, 0x1b09cc34, 0x82e3691b,
+    0x1b03a7f9, 0x82e2157c,
+  0x1afd83ad, 0x82e0c22a, 0x1af75f50, 0x82df6f25, 0x1af13ae3, 0x82de1c6d,
+    0x1aeb1665, 0x82dcca02,
+  0x1ae4f1d6, 0x82db77e5, 0x1adecd37, 0x82da2615, 0x1ad8a887, 0x82d8d492,
+    0x1ad283c7, 0x82d7835c,
+  0x1acc5ef6, 0x82d63274, 0x1ac63a14, 0x82d4e1d8, 0x1ac01522, 0x82d3918a,
+    0x1ab9f020, 0x82d24189,
+  0x1ab3cb0d, 0x82d0f1d5, 0x1aada5e9, 0x82cfa26f, 0x1aa780b6, 0x82ce5356,
+    0x1aa15b71, 0x82cd048a,
+  0x1a9b361d, 0x82cbb60b, 0x1a9510b7, 0x82ca67d9, 0x1a8eeb42, 0x82c919f5,
+    0x1a88c5bc, 0x82c7cc5e,
+  0x1a82a026, 0x82c67f14, 0x1a7c7a7f, 0x82c53217, 0x1a7654c8, 0x82c3e568,
+    0x1a702f01, 0x82c29906,
+  0x1a6a0929, 0x82c14cf1, 0x1a63e341, 0x82c00129, 0x1a5dbd49, 0x82beb5af,
+    0x1a579741, 0x82bd6a82,
+  0x1a517128, 0x82bc1fa2, 0x1a4b4aff, 0x82bad50f, 0x1a4524c6, 0x82b98aca,
+    0x1a3efe7c, 0x82b840d2,
+  0x1a38d823, 0x82b6f727, 0x1a32b1b9, 0x82b5adca, 0x1a2c8b3f, 0x82b464ba,
+    0x1a2664b5, 0x82b31bf7,
+  0x1a203e1b, 0x82b1d381, 0x1a1a1771, 0x82b08b59, 0x1a13f0b6, 0x82af437e,
+    0x1a0dc9ec, 0x82adfbf0,
+  0x1a07a311, 0x82acb4b0, 0x1a017c27, 0x82ab6dbd, 0x19fb552c, 0x82aa2717,
+    0x19f52e22, 0x82a8e0bf,
+  0x19ef0707, 0x82a79ab3, 0x19e8dfdc, 0x82a654f6, 0x19e2b8a2, 0x82a50f85,
+    0x19dc9157, 0x82a3ca62,
+  0x19d669fc, 0x82a2858c, 0x19d04292, 0x82a14104, 0x19ca1b17, 0x829ffcc8,
+    0x19c3f38d, 0x829eb8db,
+  0x19bdcbf3, 0x829d753a, 0x19b7a449, 0x829c31e7, 0x19b17c8f, 0x829aeee1,
+    0x19ab54c5, 0x8299ac29,
+  0x19a52ceb, 0x829869be, 0x199f0502, 0x829727a0, 0x1998dd09, 0x8295e5cf,
+    0x1992b4ff, 0x8294a44c,
+  0x198c8ce7, 0x82936317, 0x198664be, 0x8292222e, 0x19803c86, 0x8290e194,
+    0x197a143e, 0x828fa146,
+  0x1973ebe6, 0x828e6146, 0x196dc37e, 0x828d2193, 0x19679b07, 0x828be22e,
+    0x19617280, 0x828aa316,
+  0x195b49ea, 0x8289644b, 0x19552144, 0x828825ce, 0x194ef88e, 0x8286e79e,
+    0x1948cfc8, 0x8285a9bb,
+  0x1942a6f3, 0x82846c26, 0x193c7e0f, 0x82832edf, 0x1936551b, 0x8281f1e4,
+    0x19302c17, 0x8280b538,
+  0x192a0304, 0x827f78d8, 0x1923d9e1, 0x827e3cc6, 0x191db0af, 0x827d0102,
+    0x1917876d, 0x827bc58a,
+  0x19115e1c, 0x827a8a61, 0x190b34bb, 0x82794f84, 0x19050b4b, 0x827814f6,
+    0x18fee1cb, 0x8276dab4,
+  0x18f8b83c, 0x8275a0c0, 0x18f28e9e, 0x8274671a, 0x18ec64f0, 0x82732dc0,
+    0x18e63b33, 0x8271f4b5,
+  0x18e01167, 0x8270bbf7, 0x18d9e78b, 0x826f8386, 0x18d3bda0, 0x826e4b62,
+    0x18cd93a5, 0x826d138d,
+  0x18c7699b, 0x826bdc04, 0x18c13f82, 0x826aa4c9, 0x18bb155a, 0x82696ddc,
+    0x18b4eb22, 0x8268373c,
+  0x18aec0db, 0x826700e9, 0x18a89685, 0x8265cae4, 0x18a26c20, 0x8264952d,
+    0x189c41ab, 0x82635fc2,
+  0x18961728, 0x82622aa6, 0x188fec95, 0x8260f5d7, 0x1889c1f3, 0x825fc155,
+    0x18839742, 0x825e8d21,
+  0x187d6c82, 0x825d593a, 0x187741b2, 0x825c25a1, 0x187116d4, 0x825af255,
+    0x186aebe6, 0x8259bf57,
+  0x1864c0ea, 0x82588ca7, 0x185e95de, 0x82575a44, 0x18586ac3, 0x8256282e,
+    0x18523f9a, 0x8254f666,
+  0x184c1461, 0x8253c4eb, 0x1845e919, 0x825293be, 0x183fbdc3, 0x825162df,
+    0x1839925d, 0x8250324d,
+  0x183366e9, 0x824f0208, 0x182d3b65, 0x824dd211, 0x18270fd3, 0x824ca268,
+    0x1820e431, 0x824b730c,
+  0x181ab881, 0x824a43fe, 0x18148cc2, 0x8249153d, 0x180e60f4, 0x8247e6ca,
+    0x18083518, 0x8246b8a4,
+  0x1802092c, 0x82458acc, 0x17fbdd32, 0x82445d41, 0x17f5b129, 0x82433004,
+    0x17ef8511, 0x82420315,
+  0x17e958ea, 0x8240d673, 0x17e32cb5, 0x823faa1e, 0x17dd0070, 0x823e7e18,
+    0x17d6d41d, 0x823d525e,
+  0x17d0a7bc, 0x823c26f3, 0x17ca7b4c, 0x823afbd5, 0x17c44ecd, 0x8239d104,
+    0x17be223f, 0x8238a681,
+  0x17b7f5a3, 0x82377c4c, 0x17b1c8f8, 0x82365264, 0x17ab9c3e, 0x823528ca,
+    0x17a56f76, 0x8233ff7e,
+  0x179f429f, 0x8232d67f, 0x179915ba, 0x8231adce, 0x1792e8c6, 0x8230856a,
+    0x178cbbc4, 0x822f5d54,
+  0x17868eb3, 0x822e358b, 0x17806194, 0x822d0e10, 0x177a3466, 0x822be6e3,
+    0x17740729, 0x822ac004,
+  0x176dd9de, 0x82299971, 0x1767ac85, 0x8228732d, 0x17617f1d, 0x82274d36,
+    0x175b51a7, 0x8226278d,
+  0x17552422, 0x82250232, 0x174ef68f, 0x8223dd24, 0x1748c8ee, 0x8222b863,
+    0x17429b3e, 0x822193f1,
+  0x173c6d80, 0x82206fcc, 0x17363fb4, 0x821f4bf5, 0x173011d9, 0x821e286b,
+    0x1729e3f0, 0x821d052f,
+  0x1723b5f9, 0x821be240, 0x171d87f3, 0x821abfa0, 0x171759df, 0x82199d4d,
+    0x17112bbd, 0x82187b47,
+  0x170afd8d, 0x82175990, 0x1704cf4f, 0x82163826, 0x16fea102, 0x82151709,
+    0x16f872a7, 0x8213f63a,
+  0x16f2443e, 0x8212d5b9, 0x16ec15c7, 0x8211b586, 0x16e5e741, 0x821095a0,
+    0x16dfb8ae, 0x820f7608,
+  0x16d98a0c, 0x820e56be, 0x16d35b5c, 0x820d37c1, 0x16cd2c9f, 0x820c1912,
+    0x16c6fdd3, 0x820afab1,
+  0x16c0cef9, 0x8209dc9e, 0x16baa011, 0x8208bed8, 0x16b4711b, 0x8207a160,
+    0x16ae4217, 0x82068435,
+  0x16a81305, 0x82056758, 0x16a1e3e5, 0x82044ac9, 0x169bb4b7, 0x82032e88,
+    0x1695857b, 0x82021294,
+  0x168f5632, 0x8200f6ef, 0x168926da, 0x81ffdb96, 0x1682f774, 0x81fec08c,
+    0x167cc801, 0x81fda5cf,
+  0x1676987f, 0x81fc8b60, 0x167068f0, 0x81fb713f, 0x166a3953, 0x81fa576c,
+    0x166409a8, 0x81f93de6,
+  0x165dd9f0, 0x81f824ae, 0x1657aa29, 0x81f70bc3, 0x16517a55, 0x81f5f327,
+    0x164b4a73, 0x81f4dad8,
+  0x16451a83, 0x81f3c2d7, 0x163eea86, 0x81f2ab24, 0x1638ba7a, 0x81f193be,
+    0x16328a61, 0x81f07ca6,
+  0x162c5a3b, 0x81ef65dc, 0x16262a06, 0x81ee4f60, 0x161ff9c4, 0x81ed3932,
+    0x1619c975, 0x81ec2351,
+  0x16139918, 0x81eb0dbe, 0x160d68ad, 0x81e9f879, 0x16073834, 0x81e8e381,
+    0x160107ae, 0x81e7ced8,
+  0x15fad71b, 0x81e6ba7c, 0x15f4a679, 0x81e5a66e, 0x15ee75cb, 0x81e492ad,
+    0x15e8450e, 0x81e37f3b,
+  0x15e21445, 0x81e26c16, 0x15dbe36d, 0x81e1593f, 0x15d5b288, 0x81e046b6,
+    0x15cf8196, 0x81df347b,
+  0x15c95097, 0x81de228d, 0x15c31f89, 0x81dd10ee, 0x15bcee6f, 0x81dbff9c,
+    0x15b6bd47, 0x81daee98,
+  0x15b08c12, 0x81d9dde1, 0x15aa5acf, 0x81d8cd79, 0x15a4297f, 0x81d7bd5e,
+    0x159df821, 0x81d6ad92,
+  0x1597c6b7, 0x81d59e13, 0x1591953e, 0x81d48ee1, 0x158b63b9, 0x81d37ffe,
+    0x15853226, 0x81d27169,
+  0x157f0086, 0x81d16321, 0x1578ced9, 0x81d05527, 0x15729d1f, 0x81cf477b,
+    0x156c6b57, 0x81ce3a1d,
+  0x15663982, 0x81cd2d0c, 0x156007a0, 0x81cc204a, 0x1559d5b1, 0x81cb13d5,
+    0x1553a3b4, 0x81ca07af,
+  0x154d71aa, 0x81c8fbd6, 0x15473f94, 0x81c7f04b, 0x15410d70, 0x81c6e50d,
+    0x153adb3f, 0x81c5da1e,
+  0x1534a901, 0x81c4cf7d, 0x152e76b5, 0x81c3c529, 0x1528445d, 0x81c2bb23,
+    0x152211f8, 0x81c1b16b,
+  0x151bdf86, 0x81c0a801, 0x1515ad06, 0x81bf9ee5, 0x150f7a7a, 0x81be9617,
+    0x150947e1, 0x81bd8d97,
+  0x1503153a, 0x81bc8564, 0x14fce287, 0x81bb7d7f, 0x14f6afc7, 0x81ba75e9,
+    0x14f07cf9, 0x81b96ea0,
+  0x14ea4a1f, 0x81b867a5, 0x14e41738, 0x81b760f8, 0x14dde445, 0x81b65a99,
+    0x14d7b144, 0x81b55488,
+  0x14d17e36, 0x81b44ec4, 0x14cb4b1c, 0x81b3494f, 0x14c517f4, 0x81b24427,
+    0x14bee4c0, 0x81b13f4e,
+  0x14b8b17f, 0x81b03ac2, 0x14b27e32, 0x81af3684, 0x14ac4ad7, 0x81ae3294,
+    0x14a61770, 0x81ad2ef2,
+  0x149fe3fc, 0x81ac2b9e, 0x1499b07c, 0x81ab2898, 0x14937cee, 0x81aa25e0,
+    0x148d4954, 0x81a92376,
+  0x148715ae, 0x81a82159, 0x1480e1fa, 0x81a71f8b, 0x147aae3a, 0x81a61e0b,
+    0x14747a6d, 0x81a51cd8,
+  0x146e4694, 0x81a41bf4, 0x146812ae, 0x81a31b5d, 0x1461debc, 0x81a21b14,
+    0x145baabd, 0x81a11b1a,
+  0x145576b1, 0x81a01b6d, 0x144f4299, 0x819f1c0e, 0x14490e74, 0x819e1cfd,
+    0x1442da43, 0x819d1e3a,
+  0x143ca605, 0x819c1fc5, 0x143671bb, 0x819b219e, 0x14303d65, 0x819a23c5,
+    0x142a0902, 0x8199263a,
+  0x1423d492, 0x819828fd, 0x141da016, 0x81972c0e, 0x14176b8e, 0x81962f6d,
+    0x141136f9, 0x8195331a,
+  0x140b0258, 0x81943715, 0x1404cdaa, 0x81933b5e, 0x13fe98f1, 0x81923ff4,
+    0x13f8642a, 0x819144d9,
+  0x13f22f58, 0x81904a0c, 0x13ebfa79, 0x818f4f8d, 0x13e5c58e, 0x818e555c,
+    0x13df9097, 0x818d5b78,
+  0x13d95b93, 0x818c61e3, 0x13d32683, 0x818b689c, 0x13ccf167, 0x818a6fa3,
+    0x13c6bc3f, 0x818976f8,
+  0x13c0870a, 0x81887e9a, 0x13ba51ca, 0x8187868b, 0x13b41c7d, 0x81868eca,
+    0x13ade724, 0x81859757,
+  0x13a7b1bf, 0x8184a032, 0x13a17c4d, 0x8183a95b, 0x139b46d0, 0x8182b2d1,
+    0x13951146, 0x8181bc96,
+  0x138edbb1, 0x8180c6a9, 0x1388a60f, 0x817fd10a, 0x13827062, 0x817edbb9,
+    0x137c3aa8, 0x817de6b6,
+  0x137604e2, 0x817cf201, 0x136fcf10, 0x817bfd9b, 0x13699933, 0x817b0982,
+    0x13636349, 0x817a15b7,
+  0x135d2d53, 0x8179223a, 0x1356f752, 0x81782f0b, 0x1350c144, 0x81773c2b,
+    0x134a8b2b, 0x81764998,
+  0x13445505, 0x81755754, 0x133e1ed4, 0x8174655d, 0x1337e897, 0x817373b5,
+    0x1331b24e, 0x8172825a,
+  0x132b7bf9, 0x8171914e, 0x13254599, 0x8170a090, 0x131f0f2c, 0x816fb020,
+    0x1318d8b4, 0x816ebffe,
+  0x1312a230, 0x816dd02a, 0x130c6ba0, 0x816ce0a4, 0x13063505, 0x816bf16c,
+    0x12fffe5d, 0x816b0282,
+  0x12f9c7aa, 0x816a13e6, 0x12f390ec, 0x81692599, 0x12ed5a21, 0x81683799,
+    0x12e7234b, 0x816749e8,
+  0x12e0ec6a, 0x81665c84, 0x12dab57c, 0x81656f6f, 0x12d47e83, 0x816482a8,
+    0x12ce477f, 0x8163962f,
+  0x12c8106f, 0x8162aa04, 0x12c1d953, 0x8161be27, 0x12bba22b, 0x8160d298,
+    0x12b56af9, 0x815fe758,
+  0x12af33ba, 0x815efc65, 0x12a8fc70, 0x815e11c1, 0x12a2c51b, 0x815d276a,
+    0x129c8dba, 0x815c3d62,
+  0x1296564d, 0x815b53a8, 0x12901ed5, 0x815a6a3c, 0x1289e752, 0x8159811e,
+    0x1283afc3, 0x8158984e,
+  0x127d7829, 0x8157afcd, 0x12774083, 0x8156c799, 0x127108d2, 0x8155dfb4,
+    0x126ad116, 0x8154f81d,
+  0x1264994e, 0x815410d4, 0x125e617b, 0x815329d9, 0x1258299c, 0x8152432c,
+    0x1251f1b3, 0x81515ccd,
+  0x124bb9be, 0x815076bd, 0x124581bd, 0x814f90fb, 0x123f49b2, 0x814eab86,
+    0x1239119b, 0x814dc660,
+  0x1232d979, 0x814ce188, 0x122ca14b, 0x814bfcff, 0x12266913, 0x814b18c3,
+    0x122030cf, 0x814a34d6,
+  0x1219f880, 0x81495136, 0x1213c026, 0x81486de5, 0x120d87c1, 0x81478ae2,
+    0x12074f50, 0x8146a82e,
+  0x120116d5, 0x8145c5c7, 0x11fade4e, 0x8144e3ae, 0x11f4a5bd, 0x814401e4,
+    0x11ee6d20, 0x81432068,
+  0x11e83478, 0x81423f3a, 0x11e1fbc5, 0x81415e5a, 0x11dbc307, 0x81407dc9,
+    0x11d58a3e, 0x813f9d86,
+  0x11cf516a, 0x813ebd90, 0x11c9188b, 0x813ddde9, 0x11c2dfa2, 0x813cfe91,
+    0x11bca6ad, 0x813c1f86,
+  0x11b66dad, 0x813b40ca, 0x11b034a2, 0x813a625b, 0x11a9fb8d, 0x8139843b,
+    0x11a3c26c, 0x8138a66a,
+  0x119d8941, 0x8137c8e6, 0x1197500a, 0x8136ebb1, 0x119116c9, 0x81360ec9,
+    0x118add7d, 0x81353230,
+  0x1184a427, 0x813455e6, 0x117e6ac5, 0x813379e9, 0x11783159, 0x81329e3b,
+    0x1171f7e2, 0x8131c2db,
+  0x116bbe60, 0x8130e7c9, 0x116584d3, 0x81300d05, 0x115f4b3c, 0x812f3290,
+    0x1159119a, 0x812e5868,
+  0x1152d7ed, 0x812d7e8f, 0x114c9e35, 0x812ca505, 0x11466473, 0x812bcbc8,
+    0x11402aa6, 0x812af2da,
+  0x1139f0cf, 0x812a1a3a, 0x1133b6ed, 0x812941e8, 0x112d7d00, 0x812869e4,
+    0x11274309, 0x8127922f,
+  0x11210907, 0x8126bac8, 0x111acefb, 0x8125e3af, 0x111494e4, 0x81250ce4,
+    0x110e5ac2, 0x81243668,
+  0x11082096, 0x8123603a, 0x1101e65f, 0x81228a5a, 0x10fbac1e, 0x8121b4c8,
+    0x10f571d3, 0x8120df85,
+  0x10ef377d, 0x81200a90, 0x10e8fd1c, 0x811f35e9, 0x10e2c2b2, 0x811e6191,
+    0x10dc883c, 0x811d8d86,
+  0x10d64dbd, 0x811cb9ca, 0x10d01333, 0x811be65d, 0x10c9d89e, 0x811b133d,
+    0x10c39dff, 0x811a406c,
+  0x10bd6356, 0x81196de9, 0x10b728a3, 0x81189bb4, 0x10b0ede5, 0x8117c9ce,
+    0x10aab31d, 0x8116f836,
+  0x10a4784b, 0x811626ec, 0x109e3d6e, 0x811555f1, 0x10980287, 0x81148544,
+    0x1091c796, 0x8113b4e5,
+  0x108b8c9b, 0x8112e4d4, 0x10855195, 0x81121512, 0x107f1686, 0x8111459e,
+    0x1078db6c, 0x81107678,
+  0x1072a048, 0x810fa7a0, 0x106c651a, 0x810ed917, 0x106629e1, 0x810e0adc,
+    0x105fee9f, 0x810d3cf0,
+  0x1059b352, 0x810c6f52, 0x105377fc, 0x810ba202, 0x104d3c9b, 0x810ad500,
+    0x10470130, 0x810a084d,
+  0x1040c5bb, 0x81093be8, 0x103a8a3d, 0x81086fd1, 0x10344eb4, 0x8107a409,
+    0x102e1321, 0x8106d88f,
+  0x1027d784, 0x81060d63, 0x10219bdd, 0x81054286, 0x101b602d, 0x810477f7,
+    0x10152472, 0x8103adb6,
+  0x100ee8ad, 0x8102e3c4, 0x1008acdf, 0x81021a20, 0x10027107, 0x810150ca,
+    0xffc3524, 0x810087c3,
+  0xff5f938, 0x80ffbf0a, 0xfefbd42, 0x80fef69f, 0xfe98143, 0x80fe2e83,
+    0xfe34539, 0x80fd66b5,
+  0xfdd0926, 0x80fc9f35, 0xfd6cd08, 0x80fbd804, 0xfd090e1, 0x80fb1121,
+    0xfca54b1, 0x80fa4a8c,
+  0xfc41876, 0x80f98446, 0xfbddc32, 0x80f8be4e, 0xfb79fe4, 0x80f7f8a4,
+    0xfb1638d, 0x80f73349,
+  0xfab272b, 0x80f66e3c, 0xfa4eac0, 0x80f5a97e, 0xf9eae4c, 0x80f4e50e,
+    0xf9871ce, 0x80f420ec,
+  0xf923546, 0x80f35d19, 0xf8bf8b4, 0x80f29994, 0xf85bc19, 0x80f1d65d,
+    0xf7f7f75, 0x80f11375,
+  0xf7942c7, 0x80f050db, 0xf73060f, 0x80ef8e90, 0xf6cc94e, 0x80eecc93,
+    0xf668c83, 0x80ee0ae4,
+  0xf604faf, 0x80ed4984, 0xf5a12d1, 0x80ec8872, 0xf53d5ea, 0x80ebc7ae,
+    0xf4d98f9, 0x80eb0739,
+  0xf475bff, 0x80ea4712, 0xf411efb, 0x80e9873a, 0xf3ae1ee, 0x80e8c7b0,
+    0xf34a4d8, 0x80e80874,
+  0xf2e67b8, 0x80e74987, 0xf282a8f, 0x80e68ae8, 0xf21ed5d, 0x80e5cc98,
+    0xf1bb021, 0x80e50e96,
+  0xf1572dc, 0x80e450e2, 0xf0f358e, 0x80e3937d, 0xf08f836, 0x80e2d666,
+    0xf02bad5, 0x80e2199e,
+  0xefc7d6b, 0x80e15d24, 0xef63ff7, 0x80e0a0f8, 0xef0027b, 0x80dfe51b,
+    0xee9c4f5, 0x80df298c,
+  0xee38766, 0x80de6e4c, 0xedd49ce, 0x80ddb35a, 0xed70c2c, 0x80dcf8b7,
+    0xed0ce82, 0x80dc3e62,
+  0xeca90ce, 0x80db845b, 0xec45311, 0x80dacaa3, 0xebe154b, 0x80da1139,
+    0xeb7d77c, 0x80d9581e,
+  0xeb199a4, 0x80d89f51, 0xeab5bc3, 0x80d7e6d3, 0xea51dd8, 0x80d72ea3,
+    0xe9edfe5, 0x80d676c1,
+  0xe98a1e9, 0x80d5bf2e, 0xe9263e3, 0x80d507e9, 0xe8c25d5, 0x80d450f3,
+    0xe85e7be, 0x80d39a4b,
+  0xe7fa99e, 0x80d2e3f2, 0xe796b74, 0x80d22de7, 0xe732d42, 0x80d1782a,
+    0xe6cef07, 0x80d0c2bc,
+  0xe66b0c3, 0x80d00d9d, 0xe607277, 0x80cf58cc, 0xe5a3421, 0x80cea449,
+    0xe53f5c2, 0x80cdf015,
+  0xe4db75b, 0x80cd3c2f, 0xe4778eb, 0x80cc8898, 0xe413a72, 0x80cbd54f,
+    0xe3afbf0, 0x80cb2255,
+  0xe34bd66, 0x80ca6fa9, 0xe2e7ed2, 0x80c9bd4c, 0xe284036, 0x80c90b3d,
+    0xe220191, 0x80c8597c,
+  0xe1bc2e4, 0x80c7a80a, 0xe15842e, 0x80c6f6e7, 0xe0f456f, 0x80c64612,
+    0xe0906a7, 0x80c5958b,
+  0xe02c7d7, 0x80c4e553, 0xdfc88fe, 0x80c4356a, 0xdf64a1c, 0x80c385cf,
+    0xdf00b32, 0x80c2d682,
+  0xde9cc40, 0x80c22784, 0xde38d44, 0x80c178d4, 0xddd4e40, 0x80c0ca73,
+    0xdd70f34, 0x80c01c60,
+  0xdd0d01f, 0x80bf6e9c, 0xdca9102, 0x80bec127, 0xdc451dc, 0x80be13ff,
+    0xdbe12ad, 0x80bd6727,
+  0xdb7d376, 0x80bcba9d, 0xdb19437, 0x80bc0e61, 0xdab54ef, 0x80bb6274,
+    0xda5159f, 0x80bab6d5,
+  0xd9ed646, 0x80ba0b85, 0xd9896e5, 0x80b96083, 0xd92577b, 0x80b8b5d0,
+    0xd8c1809, 0x80b80b6c,
+  0xd85d88f, 0x80b76156, 0xd7f990c, 0x80b6b78e, 0xd795982, 0x80b60e15,
+    0xd7319ee, 0x80b564ea,
+  0xd6cda53, 0x80b4bc0e, 0xd669aaf, 0x80b41381, 0xd605b03, 0x80b36b42,
+    0xd5a1b4f, 0x80b2c351,
+  0xd53db92, 0x80b21baf, 0xd4d9bcd, 0x80b1745c, 0xd475c00, 0x80b0cd57,
+    0xd411c2b, 0x80b026a1,
+  0xd3adc4e, 0x80af8039, 0xd349c68, 0x80aeda20, 0xd2e5c7b, 0x80ae3455,
+    0xd281c85, 0x80ad8ed9,
+  0xd21dc87, 0x80ace9ab, 0xd1b9c81, 0x80ac44cc, 0xd155c73, 0x80aba03b,
+    0xd0f1c5d, 0x80aafbf9,
+  0xd08dc3f, 0x80aa5806, 0xd029c18, 0x80a9b461, 0xcfc5bea, 0x80a9110b,
+    0xcf61bb4, 0x80a86e03,
+  0xcefdb76, 0x80a7cb49, 0xce99b2f, 0x80a728df, 0xce35ae1, 0x80a686c2,
+    0xcdd1a8b, 0x80a5e4f5,
+  0xcd6da2d, 0x80a54376, 0xcd099c7, 0x80a4a245, 0xcca5959, 0x80a40163,
+    0xcc418e3, 0x80a360d0,
+  0xcbdd865, 0x80a2c08b, 0xcb797e0, 0x80a22095, 0xcb15752, 0x80a180ed,
+    0xcab16bd, 0x80a0e194,
+  0xca4d620, 0x80a04289, 0xc9e957b, 0x809fa3cd, 0xc9854cf, 0x809f0560,
+    0xc92141a, 0x809e6741,
+  0xc8bd35e, 0x809dc971, 0xc85929a, 0x809d2bef, 0xc7f51cf, 0x809c8ebc,
+    0xc7910fb, 0x809bf1d7,
+  0xc72d020, 0x809b5541, 0xc6c8f3e, 0x809ab8fa, 0xc664e53, 0x809a1d01,
+    0xc600d61, 0x80998157,
+  0xc59cc68, 0x8098e5fb, 0xc538b66, 0x80984aee, 0xc4d4a5d, 0x8097b030,
+    0xc47094d, 0x809715c0,
+  0xc40c835, 0x80967b9f, 0xc3a8715, 0x8095e1cc, 0xc3445ee, 0x80954848,
+    0xc2e04c0, 0x8094af13,
+  0xc27c389, 0x8094162c, 0xc21824c, 0x80937d93, 0xc1b4107, 0x8092e54a,
+    0xc14ffba, 0x80924d4f,
+  0xc0ebe66, 0x8091b5a2, 0xc087d0a, 0x80911e44, 0xc023ba7, 0x80908735,
+    0xbfbfa3d, 0x808ff074,
+  0xbf5b8cb, 0x808f5a02, 0xbef7752, 0x808ec3df, 0xbe935d2, 0x808e2e0a,
+    0xbe2f44a, 0x808d9884,
+  0xbdcb2bb, 0x808d034c, 0xbd67124, 0x808c6e63, 0xbd02f87, 0x808bd9c9,
+    0xbc9ede2, 0x808b457d,
+  0xbc3ac35, 0x808ab180, 0xbbd6a82, 0x808a1dd2, 0xbb728c7, 0x80898a72,
+    0xbb0e705, 0x8088f761,
+  0xbaaa53b, 0x8088649e, 0xba4636b, 0x8087d22a, 0xb9e2193, 0x80874005,
+    0xb97dfb5, 0x8086ae2e,
+  0xb919dcf, 0x80861ca6, 0xb8b5be1, 0x80858b6c, 0xb8519ed, 0x8084fa82,
+    0xb7ed7f2, 0x808469e5,
+  0xb7895f0, 0x8083d998, 0xb7253e6, 0x80834999, 0xb6c11d5, 0x8082b9e9,
+    0xb65cfbe, 0x80822a87,
+  0xb5f8d9f, 0x80819b74, 0xb594b7a, 0x80810cb0, 0xb53094d, 0x80807e3a,
+    0xb4cc719, 0x807ff013,
+  0xb4684df, 0x807f623b, 0xb40429d, 0x807ed4b1, 0xb3a0055, 0x807e4776,
+    0xb33be05, 0x807dba89,
+  0xb2d7baf, 0x807d2dec, 0xb273952, 0x807ca19c, 0xb20f6ee, 0x807c159c,
+    0xb1ab483, 0x807b89ea,
+  0xb147211, 0x807afe87, 0xb0e2f98, 0x807a7373, 0xb07ed19, 0x8079e8ad,
+    0xb01aa92, 0x80795e36,
+  0xafb6805, 0x8078d40d, 0xaf52571, 0x80784a33, 0xaeee2d7, 0x8077c0a8,
+    0xae8a036, 0x8077376c,
+  0xae25d8d, 0x8076ae7e, 0xadc1adf, 0x807625df, 0xad5d829, 0x80759d8e,
+    0xacf956d, 0x8075158c,
+  0xac952aa, 0x80748dd9, 0xac30fe1, 0x80740675, 0xabccd11, 0x80737f5f,
+    0xab68a3a, 0x8072f898,
+  0xab0475c, 0x8072721f, 0xaaa0478, 0x8071ebf6, 0xaa3c18e, 0x8071661a,
+    0xa9d7e9d, 0x8070e08e,
+  0xa973ba5, 0x80705b50, 0xa90f8a7, 0x806fd661, 0xa8ab5a2, 0x806f51c1,
+    0xa847297, 0x806ecd6f,
+  0xa7e2f85, 0x806e496c, 0xa77ec6d, 0x806dc5b8, 0xa71a94f, 0x806d4253,
+    0xa6b662a, 0x806cbf3c,
+  0xa6522fe, 0x806c3c74, 0xa5edfcc, 0x806bb9fa, 0xa589c94, 0x806b37cf,
+    0xa525955, 0x806ab5f3,
+  0xa4c1610, 0x806a3466, 0xa45d2c5, 0x8069b327, 0xa3f8f73, 0x80693237,
+    0xa394c1b, 0x8068b196,
+  0xa3308bd, 0x80683143, 0xa2cc558, 0x8067b13f, 0xa2681ed, 0x8067318a,
+    0xa203e7c, 0x8066b224,
+  0xa19fb04, 0x8066330c, 0xa13b787, 0x8065b443, 0xa0d7403, 0x806535c9,
+    0xa073079, 0x8064b79d,
+  0xa00ece8, 0x806439c0, 0x9faa952, 0x8063bc32, 0x9f465b5, 0x80633ef3,
+    0x9ee2213, 0x8062c202,
+  0x9e7de6a, 0x80624560, 0x9e19abb, 0x8061c90c, 0x9db5706, 0x80614d08,
+    0x9d5134b, 0x8060d152,
+  0x9cecf89, 0x806055eb, 0x9c88bc2, 0x805fdad2, 0x9c247f5, 0x805f6009,
+    0x9bc0421, 0x805ee58e,
+  0x9b5c048, 0x805e6b62, 0x9af7c69, 0x805df184, 0x9a93884, 0x805d77f5,
+    0x9a2f498, 0x805cfeb5,
+  0x99cb0a7, 0x805c85c4, 0x9966cb0, 0x805c0d21, 0x99028b3, 0x805b94ce,
+    0x989e4b0, 0x805b1cc8,
+  0x983a0a7, 0x805aa512, 0x97d5c99, 0x805a2daa, 0x9771884, 0x8059b692,
+    0x970d46a, 0x80593fc7,
+  0x96a9049, 0x8058c94c, 0x9644c23, 0x8058531f, 0x95e07f8, 0x8057dd41,
+    0x957c3c6, 0x805767b2,
+  0x9517f8f, 0x8056f272, 0x94b3b52, 0x80567d80, 0x944f70f, 0x805608dd,
+    0x93eb2c6, 0x80559489,
+  0x9386e78, 0x80552084, 0x9322a24, 0x8054accd, 0x92be5ca, 0x80543965,
+    0x925a16b, 0x8053c64c,
+  0x91f5d06, 0x80535381, 0x919189c, 0x8052e106, 0x912d42c, 0x80526ed9,
+    0x90c8fb6, 0x8051fcfb,
+  0x9064b3a, 0x80518b6b, 0x90006ba, 0x80511a2b, 0x8f9c233, 0x8050a939,
+    0x8f37da7, 0x80503896,
+  0x8ed3916, 0x804fc841, 0x8e6f47f, 0x804f583c, 0x8e0afe2, 0x804ee885,
+    0x8da6b40, 0x804e791d,
+  0x8d42699, 0x804e0a04, 0x8cde1ec, 0x804d9b39, 0x8c79d3a, 0x804d2cbd,
+    0x8c15882, 0x804cbe90,
+  0x8bb13c5, 0x804c50b2, 0x8b4cf02, 0x804be323, 0x8ae8a3a, 0x804b75e2,
+    0x8a8456d, 0x804b08f0,
+  0x8a2009a, 0x804a9c4d, 0x89bbbc3, 0x804a2ff9, 0x89576e5, 0x8049c3f3,
+    0x88f3203, 0x8049583d,
+  0x888ed1b, 0x8048ecd5, 0x882a82e, 0x804881bb, 0x87c633c, 0x804816f1,
+    0x8761e44, 0x8047ac75,
+  0x86fd947, 0x80474248, 0x8699445, 0x8046d86a, 0x8634f3e, 0x80466edb,
+    0x85d0a32, 0x8046059b,
+  0x856c520, 0x80459ca9, 0x850800a, 0x80453406, 0x84a3aee, 0x8044cbb2,
+    0x843f5cd, 0x804463ad,
+  0x83db0a7, 0x8043fbf6, 0x8376b7c, 0x8043948e, 0x831264c, 0x80432d75,
+    0x82ae117, 0x8042c6ab,
+  0x8249bdd, 0x80426030, 0x81e569d, 0x8041fa03, 0x8181159, 0x80419425,
+    0x811cc10, 0x80412e96,
+  0x80b86c2, 0x8040c956, 0x805416e, 0x80406465, 0x7fefc16, 0x803fffc2,
+    0x7f8b6b9, 0x803f9b6f,
+  0x7f27157, 0x803f376a, 0x7ec2bf0, 0x803ed3b3, 0x7e5e685, 0x803e704c,
+    0x7dfa114, 0x803e0d34,
+  0x7d95b9e, 0x803daa6a, 0x7d31624, 0x803d47ef, 0x7ccd0a5, 0x803ce5c3,
+    0x7c68b21, 0x803c83e5,
+  0x7c04598, 0x803c2257, 0x7ba000b, 0x803bc117, 0x7b3ba78, 0x803b6026,
+    0x7ad74e1, 0x803aff84,
+  0x7a72f45, 0x803a9f31, 0x7a0e9a5, 0x803a3f2d, 0x79aa400, 0x8039df77,
+    0x7945e56, 0x80398010,
+  0x78e18a7, 0x803920f8, 0x787d2f4, 0x8038c22f, 0x7818d3c, 0x803863b5,
+    0x77b4780, 0x80380589,
+  0x77501be, 0x8037a7ac, 0x76ebbf9, 0x80374a1f, 0x768762e, 0x8036ece0,
+    0x762305f, 0x80368fef,
+  0x75bea8c, 0x8036334e, 0x755a4b4, 0x8035d6fb, 0x74f5ed7, 0x80357af8,
+    0x74918f6, 0x80351f43,
+  0x742d311, 0x8034c3dd, 0x73c8d27, 0x803468c5, 0x7364738, 0x80340dfd,
+    0x7300145, 0x8033b383,
+  0x729bb4e, 0x80335959, 0x7237552, 0x8032ff7d, 0x71d2f52, 0x8032a5ef,
+    0x716e94e, 0x80324cb1,
+  0x710a345, 0x8031f3c2, 0x70a5d37, 0x80319b21, 0x7041726, 0x803142cf,
+    0x6fdd110, 0x8030eacd,
+  0x6f78af6, 0x80309318, 0x6f144d7, 0x80303bb3, 0x6eafeb4, 0x802fe49d,
+    0x6e4b88d, 0x802f8dd5,
+  0x6de7262, 0x802f375d, 0x6d82c32, 0x802ee133, 0x6d1e5fe, 0x802e8b58,
+    0x6cb9fc6, 0x802e35cb,
+  0x6c5598a, 0x802de08e, 0x6bf1349, 0x802d8ba0, 0x6b8cd05, 0x802d3700,
+    0x6b286bc, 0x802ce2af,
+  0x6ac406f, 0x802c8ead, 0x6a5fa1e, 0x802c3afa, 0x69fb3c9, 0x802be796,
+    0x6996d70, 0x802b9480,
+  0x6932713, 0x802b41ba, 0x68ce0b2, 0x802aef42, 0x6869a4c, 0x802a9d19,
+    0x68053e3, 0x802a4b3f,
+  0x67a0d76, 0x8029f9b4, 0x673c704, 0x8029a878, 0x66d808f, 0x8029578b,
+    0x6673a16, 0x802906ec,
+  0x660f398, 0x8028b69c, 0x65aad17, 0x8028669b, 0x6546692, 0x802816e9,
+    0x64e2009, 0x8027c786,
+  0x647d97c, 0x80277872, 0x64192eb, 0x802729ad, 0x63b4c57, 0x8026db36,
+    0x63505be, 0x80268d0e,
+  0x62ebf22, 0x80263f36, 0x6287882, 0x8025f1ac, 0x62231de, 0x8025a471,
+    0x61beb36, 0x80255784,
+  0x615a48b, 0x80250ae7, 0x60f5ddc, 0x8024be99, 0x6091729, 0x80247299,
+    0x602d072, 0x802426e8,
+  0x5fc89b8, 0x8023db86, 0x5f642fa, 0x80239073, 0x5effc38, 0x802345af,
+    0x5e9b572, 0x8022fb3a,
+  0x5e36ea9, 0x8022b114, 0x5dd27dd, 0x8022673c, 0x5d6e10c, 0x80221db3,
+    0x5d09a38, 0x8021d47a,
+  0x5ca5361, 0x80218b8f, 0x5c40c86, 0x802142f3, 0x5bdc5a7, 0x8020faa6,
+    0x5b77ec5, 0x8020b2a7,
+  0x5b137df, 0x80206af8, 0x5aaf0f6, 0x80202397, 0x5a4aa09, 0x801fdc86,
+    0x59e6319, 0x801f95c3,
+  0x5981c26, 0x801f4f4f, 0x591d52f, 0x801f092a, 0x58b8e34, 0x801ec354,
+    0x5854736, 0x801e7dcd,
+  0x57f0035, 0x801e3895, 0x578b930, 0x801df3ab, 0x5727228, 0x801daf11,
+    0x56c2b1c, 0x801d6ac5,
+  0x565e40d, 0x801d26c8, 0x55f9cfb, 0x801ce31a, 0x55955e6, 0x801c9fbb,
+    0x5530ecd, 0x801c5cab,
+  0x54cc7b1, 0x801c19ea, 0x5468092, 0x801bd777, 0x540396f, 0x801b9554,
+    0x539f249, 0x801b537f,
+  0x533ab20, 0x801b11fa, 0x52d63f4, 0x801ad0c3, 0x5271cc4, 0x801a8fdb,
+    0x520d592, 0x801a4f42,
+  0x51a8e5c, 0x801a0ef8, 0x5144723, 0x8019cefd, 0x50dffe7, 0x80198f50,
+    0x507b8a8, 0x80194ff3,
+  0x5017165, 0x801910e4, 0x4fb2a20, 0x8018d225, 0x4f4e2d8, 0x801893b4,
+    0x4ee9b8c, 0x80185592,
+  0x4e8543e, 0x801817bf, 0x4e20cec, 0x8017da3b, 0x4dbc597, 0x80179d06,
+    0x4d57e40, 0x80176020,
+  0x4cf36e5, 0x80172388, 0x4c8ef88, 0x8016e740, 0x4c2a827, 0x8016ab46,
+    0x4bc60c4, 0x80166f9c,
+  0x4b6195d, 0x80163440, 0x4afd1f4, 0x8015f933, 0x4a98a88, 0x8015be75,
+    0x4a34319, 0x80158406,
+  0x49cfba7, 0x801549e6, 0x496b432, 0x80151015, 0x4906cbb, 0x8014d693,
+    0x48a2540, 0x80149d5f,
+  0x483ddc3, 0x8014647b, 0x47d9643, 0x80142be5, 0x4774ec1, 0x8013f39e,
+    0x471073b, 0x8013bba7,
+  0x46abfb3, 0x801383fe, 0x4647828, 0x80134ca4, 0x45e309a, 0x80131599,
+    0x457e90a, 0x8012dedd,
+  0x451a177, 0x8012a86f, 0x44b59e1, 0x80127251, 0x4451249, 0x80123c82,
+    0x43ecaae, 0x80120701,
+  0x4388310, 0x8011d1d0, 0x4323b70, 0x80119ced, 0x42bf3cd, 0x80116859,
+    0x425ac28, 0x80113414,
+  0x41f6480, 0x8011001f, 0x4191cd5, 0x8010cc78, 0x412d528, 0x8010991f,
+    0x40c8d79, 0x80106616,
+  0x40645c7, 0x8010335c, 0x3fffe12, 0x801000f1, 0x3f9b65b, 0x800fced4,
+    0x3f36ea2, 0x800f9d07,
+  0x3ed26e6, 0x800f6b88, 0x3e6df28, 0x800f3a59, 0x3e09767, 0x800f0978,
+    0x3da4fa4, 0x800ed8e6,
+  0x3d407df, 0x800ea8a3, 0x3cdc017, 0x800e78af, 0x3c7784d, 0x800e490a,
+    0x3c13080, 0x800e19b4,
+  0x3bae8b2, 0x800deaad, 0x3b4a0e0, 0x800dbbf5, 0x3ae590d, 0x800d8d8b,
+    0x3a81137, 0x800d5f71,
+  0x3a1c960, 0x800d31a5, 0x39b8185, 0x800d0429, 0x39539a9, 0x800cd6fb,
+    0x38ef1ca, 0x800caa1c,
+  0x388a9ea, 0x800c7d8c, 0x3826207, 0x800c514c, 0x37c1a22, 0x800c255a,
+    0x375d23a, 0x800bf9b7,
+  0x36f8a51, 0x800bce63, 0x3694265, 0x800ba35d, 0x362fa78, 0x800b78a7,
+    0x35cb288, 0x800b4e40,
+  0x3566a96, 0x800b2427, 0x35022a2, 0x800afa5e, 0x349daac, 0x800ad0e3,
+    0x34392b4, 0x800aa7b8,
+  0x33d4abb, 0x800a7edb, 0x33702bf, 0x800a564e, 0x330bac1, 0x800a2e0f,
+    0x32a72c1, 0x800a061f,
+  0x3242abf, 0x8009de7e, 0x31de2bb, 0x8009b72c, 0x3179ab5, 0x80099029,
+    0x31152ae, 0x80096975,
+  0x30b0aa4, 0x80094310, 0x304c299, 0x80091cf9, 0x2fe7a8c, 0x8008f732,
+    0x2f8327d, 0x8008d1ba,
+  0x2f1ea6c, 0x8008ac90, 0x2eba259, 0x800887b6, 0x2e55a44, 0x8008632a,
+    0x2df122e, 0x80083eed,
+  0x2d8ca16, 0x80081b00, 0x2d281fc, 0x8007f761, 0x2cc39e1, 0x8007d411,
+    0x2c5f1c3, 0x8007b110,
+  0x2bfa9a4, 0x80078e5e, 0x2b96184, 0x80076bfb, 0x2b31961, 0x800749e7,
+    0x2acd13d, 0x80072822,
+  0x2a68917, 0x800706ac, 0x2a040f0, 0x8006e585, 0x299f8c7, 0x8006c4ac,
+    0x293b09c, 0x8006a423,
+  0x28d6870, 0x800683e8, 0x2872043, 0x800663fd, 0x280d813, 0x80064460,
+    0x27a8fe2, 0x80062513,
+  0x27447b0, 0x80060614, 0x26dff7c, 0x8005e764, 0x267b747, 0x8005c904,
+    0x2616f10, 0x8005aaf2,
+  0x25b26d7, 0x80058d2f, 0x254de9e, 0x80056fbb, 0x24e9662, 0x80055296,
+    0x2484e26, 0x800535c0,
+  0x24205e8, 0x80051939, 0x23bbda8, 0x8004fd00, 0x2357567, 0x8004e117,
+    0x22f2d25, 0x8004c57d,
+  0x228e4e2, 0x8004aa32, 0x2229c9d, 0x80048f35, 0x21c5457, 0x80047488,
+    0x2160c0f, 0x80045a29,
+  0x20fc3c6, 0x8004401a, 0x2097b7c, 0x80042659, 0x2033331, 0x80040ce7,
+    0x1fceae4, 0x8003f3c5,
+  0x1f6a297, 0x8003daf1, 0x1f05a48, 0x8003c26c, 0x1ea11f7, 0x8003aa36,
+    0x1e3c9a6, 0x8003924f,
+  0x1dd8154, 0x80037ab7, 0x1d73900, 0x8003636e, 0x1d0f0ab, 0x80034c74,
+    0x1caa855, 0x800335c9,
+  0x1c45ffe, 0x80031f6d, 0x1be17a6, 0x80030960, 0x1b7cf4d, 0x8002f3a1,
+    0x1b186f3, 0x8002de32,
+  0x1ab3e97, 0x8002c912, 0x1a4f63b, 0x8002b440, 0x19eaddd, 0x80029fbe,
+    0x198657f, 0x80028b8a,
+  0x1921d20, 0x800277a6, 0x18bd4bf, 0x80026410, 0x1858c5e, 0x800250c9,
+    0x17f43fc, 0x80023dd2,
+  0x178fb99, 0x80022b29, 0x172b335, 0x800218cf, 0x16c6ad0, 0x800206c4,
+    0x166226a, 0x8001f508,
+  0x15fda03, 0x8001e39b, 0x159919c, 0x8001d27d, 0x1534934, 0x8001c1ae,
+    0x14d00ca, 0x8001b12e,
+  0x146b860, 0x8001a0fd, 0x1406ff6, 0x8001911b, 0x13a278a, 0x80018187,
+    0x133df1e, 0x80017243,
+  0x12d96b1, 0x8001634e, 0x1274e43, 0x800154a7, 0x12105d5, 0x80014650,
+    0x11abd66, 0x80013847,
+  0x11474f6, 0x80012a8e, 0x10e2c85, 0x80011d23, 0x107e414, 0x80011008,
+    0x1019ba2, 0x8001033b,
+  0xfb5330, 0x8000f6bd, 0xf50abd, 0x8000ea8e, 0xeec249, 0x8000deaf, 0xe879d5,
+    0x8000d31e,
+  0xe23160, 0x8000c7dc, 0xdbe8eb, 0x8000bce9, 0xd5a075, 0x8000b245, 0xcf57ff,
+    0x8000a7f0,
+  0xc90f88, 0x80009dea, 0xc2c711, 0x80009433, 0xbc7e99, 0x80008aca, 0xb63621,
+    0x800081b1,
+  0xafeda8, 0x800078e7, 0xa9a52f, 0x8000706c, 0xa35cb5, 0x8000683f, 0x9d143b,
+    0x80006062,
+  0x96cbc1, 0x800058d4, 0x908346, 0x80005194, 0x8a3acb, 0x80004aa4, 0x83f250,
+    0x80004402,
+  0x7da9d4, 0x80003daf, 0x776159, 0x800037ac, 0x7118dc, 0x800031f7, 0x6ad060,
+    0x80002c91,
+  0x6487e3, 0x8000277a, 0x5e3f66, 0x800022b3, 0x57f6e9, 0x80001e3a, 0x51ae6b,
+    0x80001a10,
+  0x4b65ee, 0x80001635, 0x451d70, 0x800012a9, 0x3ed4f2, 0x80000f6c, 0x388c74,
+    0x80000c7e,
+  0x3243f5, 0x800009df, 0x2bfb77, 0x8000078e, 0x25b2f8, 0x8000058d, 0x1f6a7a,
+    0x800003db,
+  0x1921fb, 0x80000278, 0x12d97c, 0x80000163, 0xc90fe, 0x8000009e, 0x6487f,
+    0x80000027,
+
+};
+
+/**    
+* \par    
+* cosFactor tables are generated using the formula : <pre>cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))</pre>    
+* \par    
+* C command to generate the table    
+* <pre>    
+* for(i = 0; i< N; i++)    
+* {    
+*   cos_factors[i]= 2 * cos((2*i+1)*c/2);    
+* } </pre>    
+* \par    
+* where <code>N</code> is the number of factors to generate and <code>c</code> is <code>pi/(2*N)</code>    
+* \par    
+* Then converted to q31 format by multiplying with 2^31 and saturated if required.    
+*/
+
+
+static const q31_t cos_factorsQ31_128[128] = {
+  0x7fff6216, 0x7ffa72d1, 0x7ff09478, 0x7fe1c76b, 0x7fce0c3e, 0x7fb563b3,
+  0x7f97cebd, 0x7f754e80,
+  0x7f4de451, 0x7f2191b4, 0x7ef05860, 0x7eba3a39, 0x7e7f3957, 0x7e3f57ff,
+  0x7dfa98a8, 0x7db0fdf8,
+  0x7d628ac6, 0x7d0f4218, 0x7cb72724, 0x7c5a3d50, 0x7bf88830, 0x7b920b89,
+  0x7b26cb4f, 0x7ab6cba4,
+  0x7a4210d8, 0x79c89f6e, 0x794a7c12, 0x78c7aba2, 0x78403329, 0x77b417df,
+  0x77235f2d, 0x768e0ea6,
+  0x75f42c0b, 0x7555bd4c, 0x74b2c884, 0x740b53fb, 0x735f6626, 0x72af05a7,
+  0x71fa3949, 0x71410805,
+  0x708378ff, 0x6fc19385, 0x6efb5f12, 0x6e30e34a, 0x6d6227fa, 0x6c8f351c,
+  0x6bb812d1, 0x6adcc964,
+  0x69fd614a, 0x6919e320, 0x683257ab, 0x6746c7d8, 0x66573cbb, 0x6563bf92,
+  0x646c59bf, 0x637114cc,
+  0x6271fa69, 0x616f146c, 0x60686ccf, 0x5f5e0db3, 0x5e50015d, 0x5d3e5237,
+  0x5c290acc, 0x5b1035cf,
+  0x59f3de12, 0x58d40e8c, 0x57b0d256, 0x568a34a9, 0x556040e2, 0x5433027d,
+  0x53028518, 0x51ced46e,
+  0x5097fc5e, 0x4f5e08e3, 0x4e210617, 0x4ce10034, 0x4b9e0390, 0x4a581c9e,
+  0x490f57ee, 0x47c3c22f,
+  0x46756828, 0x452456bd, 0x43d09aed, 0x427a41d0, 0x4121589b, 0x3fc5ec98,
+  0x3e680b2c, 0x3d07c1d6,
+  0x3ba51e29, 0x3a402dd2, 0x38d8fe93, 0x376f9e46, 0x36041ad9, 0x34968250,
+  0x3326e2c3, 0x31b54a5e,
+  0x3041c761, 0x2ecc681e, 0x2d553afc, 0x2bdc4e6f, 0x2a61b101, 0x28e5714b,
+  0x27679df4, 0x25e845b6,
+  0x24677758, 0x22e541af, 0x2161b3a0, 0x1fdcdc1b, 0x1e56ca1e, 0x1ccf8cb3,
+  0x1b4732ef, 0x19bdcbf3,
+  0x183366e9, 0x16a81305, 0x151bdf86, 0x138edbb1, 0x120116d5, 0x1072a048,
+  0xee38766, 0xd53db92,
+  0xbc3ac35, 0xa3308bd, 0x8a2009a, 0x710a345, 0x57f0035, 0x3ed26e6, 0x25b26d7,
+  0xc90f88,
+};
+
+static const q31_t cos_factorsQ31_512[512] = {
+  0x7ffff621, 0x7fffa72c, 0x7fff0943, 0x7ffe1c65, 0x7ffce093, 0x7ffb55ce,
+  0x7ff97c18, 0x7ff75370,
+  0x7ff4dbd9, 0x7ff21553, 0x7feeffe1, 0x7feb9b85, 0x7fe7e841, 0x7fe3e616,
+  0x7fdf9508, 0x7fdaf519,
+  0x7fd6064c, 0x7fd0c8a3, 0x7fcb3c23, 0x7fc560cf, 0x7fbf36aa, 0x7fb8bdb8,
+  0x7fb1f5fc, 0x7faadf7c,
+  0x7fa37a3c, 0x7f9bc640, 0x7f93c38c, 0x7f8b7227, 0x7f82d214, 0x7f79e35a,
+  0x7f70a5fe, 0x7f671a05,
+  0x7f5d3f75, 0x7f531655, 0x7f489eaa, 0x7f3dd87c, 0x7f32c3d1, 0x7f2760af,
+  0x7f1baf1e, 0x7f0faf25,
+  0x7f0360cb, 0x7ef6c418, 0x7ee9d914, 0x7edc9fc6, 0x7ecf1837, 0x7ec14270,
+  0x7eb31e78, 0x7ea4ac58,
+  0x7e95ec1a, 0x7e86ddc6, 0x7e778166, 0x7e67d703, 0x7e57dea7, 0x7e47985b,
+  0x7e37042a, 0x7e26221f,
+  0x7e14f242, 0x7e0374a0, 0x7df1a942, 0x7ddf9034, 0x7dcd2981, 0x7dba7534,
+  0x7da77359, 0x7d9423fc,
+  0x7d808728, 0x7d6c9ce9, 0x7d58654d, 0x7d43e05e, 0x7d2f0e2b, 0x7d19eebf,
+  0x7d048228, 0x7ceec873,
+  0x7cd8c1ae, 0x7cc26de5, 0x7cabcd28, 0x7c94df83, 0x7c7da505, 0x7c661dbc,
+  0x7c4e49b7, 0x7c362904,
+  0x7c1dbbb3, 0x7c0501d2, 0x7bebfb70, 0x7bd2a89e, 0x7bb9096b, 0x7b9f1de6,
+  0x7b84e61f, 0x7b6a6227,
+  0x7b4f920e, 0x7b3475e5, 0x7b190dbc, 0x7afd59a4, 0x7ae159ae, 0x7ac50dec,
+  0x7aa8766f, 0x7a8b9348,
+  0x7a6e648a, 0x7a50ea47, 0x7a332490, 0x7a151378, 0x79f6b711, 0x79d80f6f,
+  0x79b91ca4, 0x7999dec4,
+  0x797a55e0, 0x795a820e, 0x793a6361, 0x7919f9ec, 0x78f945c3, 0x78d846fb,
+  0x78b6fda8, 0x789569df,
+  0x78738bb3, 0x7851633b, 0x782ef08b, 0x780c33b8, 0x77e92cd9, 0x77c5dc01,
+  0x77a24148, 0x777e5cc3,
+  0x775a2e89, 0x7735b6af, 0x7710f54c, 0x76ebea77, 0x76c69647, 0x76a0f8d2,
+  0x767b1231, 0x7654e279,
+  0x762e69c4, 0x7607a828, 0x75e09dbd, 0x75b94a9c, 0x7591aedd, 0x7569ca99,
+  0x75419de7, 0x751928e0,
+  0x74f06b9e, 0x74c7663a, 0x749e18cd, 0x74748371, 0x744aa63f, 0x74208150,
+  0x73f614c0, 0x73cb60a8,
+  0x73a06522, 0x73752249, 0x73499838, 0x731dc70a, 0x72f1aed9, 0x72c54fc1,
+  0x7298a9dd, 0x726bbd48,
+  0x723e8a20, 0x7211107e, 0x71e35080, 0x71b54a41, 0x7186fdde, 0x71586b74,
+  0x7129931f, 0x70fa74fc,
+  0x70cb1128, 0x709b67c0, 0x706b78e3, 0x703b44ad, 0x700acb3c, 0x6fda0cae,
+  0x6fa90921, 0x6f77c0b3,
+  0x6f463383, 0x6f1461b0, 0x6ee24b57, 0x6eaff099, 0x6e7d5193, 0x6e4a6e66,
+  0x6e174730, 0x6de3dc11,
+  0x6db02d29, 0x6d7c3a98, 0x6d48047e, 0x6d138afb, 0x6cdece2f, 0x6ca9ce3b,
+  0x6c748b3f, 0x6c3f055d,
+  0x6c093cb6, 0x6bd3316a, 0x6b9ce39b, 0x6b66536b, 0x6b2f80fb, 0x6af86c6c,
+  0x6ac115e2, 0x6a897d7d,
+  0x6a51a361, 0x6a1987b0, 0x69e12a8c, 0x69a88c19, 0x696fac78, 0x69368bce,
+  0x68fd2a3d, 0x68c387e9,
+  0x6889a4f6, 0x684f8186, 0x68151dbe, 0x67da79c3, 0x679f95b7, 0x676471c0,
+  0x67290e02, 0x66ed6aa1,
+  0x66b187c3, 0x6675658c, 0x66390422, 0x65fc63a9, 0x65bf8447, 0x65826622,
+  0x6545095f, 0x65076e25,
+  0x64c99498, 0x648b7ce0, 0x644d2722, 0x640e9386, 0x63cfc231, 0x6390b34a,
+  0x635166f9, 0x6311dd64,
+  0x62d216b3, 0x6292130c, 0x6251d298, 0x6211557e, 0x61d09be5, 0x618fa5f7,
+  0x614e73da, 0x610d05b7,
+  0x60cb5bb7, 0x60897601, 0x604754bf, 0x6004f819, 0x5fc26038, 0x5f7f8d46,
+  0x5f3c7f6b, 0x5ef936d1,
+  0x5eb5b3a2, 0x5e71f606, 0x5e2dfe29, 0x5de9cc33, 0x5da5604f, 0x5d60baa7,
+  0x5d1bdb65, 0x5cd6c2b5,
+  0x5c9170bf, 0x5c4be5b0, 0x5c0621b2, 0x5bc024f0, 0x5b79ef96, 0x5b3381ce,
+  0x5aecdbc5, 0x5aa5fda5,
+  0x5a5ee79a, 0x5a1799d1, 0x59d01475, 0x598857b2, 0x594063b5, 0x58f838a9,
+  0x58afd6bd, 0x58673e1b,
+  0x581e6ef1, 0x57d5696d, 0x578c2dba, 0x5742bc06, 0x56f9147e, 0x56af3750,
+  0x566524aa, 0x561adcb9,
+  0x55d05faa, 0x5585adad, 0x553ac6ee, 0x54efab9c, 0x54a45be6, 0x5458d7f9,
+  0x540d2005, 0x53c13439,
+  0x537514c2, 0x5328c1d0, 0x52dc3b92, 0x528f8238, 0x524295f0, 0x51f576ea,
+  0x51a82555, 0x515aa162,
+  0x510ceb40, 0x50bf031f, 0x5070e92f, 0x50229da1, 0x4fd420a4, 0x4f857269,
+  0x4f369320, 0x4ee782fb,
+  0x4e984229, 0x4e48d0dd, 0x4df92f46, 0x4da95d96, 0x4d595bfe, 0x4d092ab0,
+  0x4cb8c9dd, 0x4c6839b7,
+  0x4c177a6e, 0x4bc68c36, 0x4b756f40, 0x4b2423be, 0x4ad2a9e2, 0x4a8101de,
+  0x4a2f2be6, 0x49dd282a,
+  0x498af6df, 0x49389836, 0x48e60c62, 0x48935397, 0x48406e08, 0x47ed5be6,
+  0x479a1d67, 0x4746b2bc,
+  0x46f31c1a, 0x469f59b4, 0x464b6bbe, 0x45f7526b, 0x45a30df0, 0x454e9e80,
+  0x44fa0450, 0x44a53f93,
+  0x4450507e, 0x43fb3746, 0x43a5f41e, 0x4350873c, 0x42faf0d4, 0x42a5311b,
+  0x424f4845, 0x41f93689,
+  0x41a2fc1a, 0x414c992f, 0x40f60dfb, 0x409f5ab6, 0x40487f94, 0x3ff17cca,
+  0x3f9a5290, 0x3f430119,
+  0x3eeb889c, 0x3e93e950, 0x3e3c2369, 0x3de4371f, 0x3d8c24a8, 0x3d33ec39,
+  0x3cdb8e09, 0x3c830a50,
+  0x3c2a6142, 0x3bd19318, 0x3b78a007, 0x3b1f8848, 0x3ac64c0f, 0x3a6ceb96,
+  0x3a136712, 0x39b9bebc,
+  0x395ff2c9, 0x39060373, 0x38abf0ef, 0x3851bb77, 0x37f76341, 0x379ce885,
+  0x37424b7b, 0x36e78c5b,
+  0x368cab5c, 0x3631a8b8, 0x35d684a6, 0x357b3f5d, 0x351fd918, 0x34c4520d,
+  0x3468aa76, 0x340ce28b,
+  0x33b0fa84, 0x3354f29b, 0x32f8cb07, 0x329c8402, 0x32401dc6, 0x31e39889,
+  0x3186f487, 0x312a31f8,
+  0x30cd5115, 0x30705217, 0x30133539, 0x2fb5fab2, 0x2f58a2be, 0x2efb2d95,
+  0x2e9d9b70, 0x2e3fec8b,
+  0x2de2211e, 0x2d843964, 0x2d263596, 0x2cc815ee, 0x2c69daa6, 0x2c0b83fa,
+  0x2bad1221, 0x2b4e8558,
+  0x2aefddd8, 0x2a911bdc, 0x2a323f9e, 0x29d34958, 0x29743946, 0x29150fa1,
+  0x28b5cca5, 0x2856708d,
+  0x27f6fb92, 0x27976df1, 0x2737c7e3, 0x26d809a5, 0x26783370, 0x26184581,
+  0x25b84012, 0x2558235f,
+  0x24f7efa2, 0x2497a517, 0x243743fa, 0x23d6cc87, 0x23763ef7, 0x23159b88,
+  0x22b4e274, 0x225413f8,
+  0x21f3304f, 0x219237b5, 0x21312a65, 0x20d0089c, 0x206ed295, 0x200d888d,
+  0x1fac2abf, 0x1f4ab968,
+  0x1ee934c3, 0x1e879d0d, 0x1e25f282, 0x1dc4355e, 0x1d6265dd, 0x1d00843d,
+  0x1c9e90b8, 0x1c3c8b8c,
+  0x1bda74f6, 0x1b784d30, 0x1b161479, 0x1ab3cb0d, 0x1a517128, 0x19ef0707,
+  0x198c8ce7, 0x192a0304,
+  0x18c7699b, 0x1864c0ea, 0x1802092c, 0x179f429f, 0x173c6d80, 0x16d98a0c,
+  0x1676987f, 0x16139918,
+  0x15b08c12, 0x154d71aa, 0x14ea4a1f, 0x148715ae, 0x1423d492, 0x13c0870a,
+  0x135d2d53, 0x12f9c7aa,
+  0x1296564d, 0x1232d979, 0x11cf516a, 0x116bbe60, 0x11082096, 0x10a4784b,
+  0x1040c5bb, 0xfdd0926,
+  0xf7942c7, 0xf1572dc, 0xeb199a4, 0xe4db75b, 0xde9cc40, 0xd85d88f, 0xd21dc87,
+  0xcbdd865,
+  0xc59cc68, 0xbf5b8cb, 0xb919dcf, 0xb2d7baf, 0xac952aa, 0xa6522fe, 0xa00ece8,
+  0x99cb0a7,
+  0x9386e78, 0x8d42699, 0x86fd947, 0x80b86c2, 0x7a72f45, 0x742d311, 0x6de7262,
+  0x67a0d76,
+  0x615a48b, 0x5b137df, 0x54cc7b1, 0x4e8543e, 0x483ddc3, 0x41f6480, 0x3bae8b2,
+  0x3566a96,
+  0x2f1ea6c, 0x28d6870, 0x228e4e2, 0x1c45ffe, 0x15fda03, 0xfb5330, 0x96cbc1,
+  0x3243f5,
+};
+
+static const q31_t cos_factorsQ31_2048[2048] = {
+  0x7fffff62, 0x7ffffa73, 0x7ffff094, 0x7fffe1c6, 0x7fffce09, 0x7fffb55c,
+  0x7fff97c1, 0x7fff7536,
+  0x7fff4dbb, 0x7fff2151, 0x7ffeeff8, 0x7ffeb9b0, 0x7ffe7e79, 0x7ffe3e52,
+  0x7ffdf93c, 0x7ffdaf37,
+  0x7ffd6042, 0x7ffd0c5f, 0x7ffcb38c, 0x7ffc55ca, 0x7ffbf319, 0x7ffb8b78,
+  0x7ffb1ee9, 0x7ffaad6a,
+  0x7ffa36fc, 0x7ff9bba0, 0x7ff93b54, 0x7ff8b619, 0x7ff82bef, 0x7ff79cd6,
+  0x7ff708ce, 0x7ff66fd7,
+  0x7ff5d1f1, 0x7ff52f1d, 0x7ff48759, 0x7ff3daa6, 0x7ff32905, 0x7ff27275,
+  0x7ff1b6f6, 0x7ff0f688,
+  0x7ff0312c, 0x7fef66e1, 0x7fee97a7, 0x7fedc37e, 0x7fecea67, 0x7fec0c62,
+  0x7feb296d, 0x7fea418b,
+  0x7fe954ba, 0x7fe862fa, 0x7fe76c4c, 0x7fe670b0, 0x7fe57025, 0x7fe46aac,
+  0x7fe36045, 0x7fe250ef,
+  0x7fe13cac, 0x7fe0237a, 0x7fdf055a, 0x7fdde24d, 0x7fdcba51, 0x7fdb8d67,
+  0x7fda5b8f, 0x7fd924ca,
+  0x7fd7e917, 0x7fd6a875, 0x7fd562e7, 0x7fd4186a, 0x7fd2c900, 0x7fd174a8,
+  0x7fd01b63, 0x7fcebd31,
+  0x7fcd5a11, 0x7fcbf203, 0x7fca8508, 0x7fc91320, 0x7fc79c4b, 0x7fc62089,
+  0x7fc49fda, 0x7fc31a3d,
+  0x7fc18fb4, 0x7fc0003e, 0x7fbe6bdb, 0x7fbcd28b, 0x7fbb344e, 0x7fb99125,
+  0x7fb7e90f, 0x7fb63c0d,
+  0x7fb48a1e, 0x7fb2d343, 0x7fb1177b, 0x7faf56c7, 0x7fad9127, 0x7fabc69b,
+  0x7fa9f723, 0x7fa822bf,
+  0x7fa6496e, 0x7fa46b32, 0x7fa2880b, 0x7fa09ff7, 0x7f9eb2f8, 0x7f9cc10d,
+  0x7f9aca37, 0x7f98ce76,
+  0x7f96cdc9, 0x7f94c831, 0x7f92bdad, 0x7f90ae3f, 0x7f8e99e6, 0x7f8c80a1,
+  0x7f8a6272, 0x7f883f58,
+  0x7f861753, 0x7f83ea64, 0x7f81b88a, 0x7f7f81c6, 0x7f7d4617, 0x7f7b057e,
+  0x7f78bffb, 0x7f76758e,
+  0x7f742637, 0x7f71d1f6, 0x7f6f78cb, 0x7f6d1ab6, 0x7f6ab7b8, 0x7f684fd0,
+  0x7f65e2ff, 0x7f637144,
+  0x7f60faa0, 0x7f5e7f13, 0x7f5bfe9d, 0x7f59793e, 0x7f56eef5, 0x7f545fc5,
+  0x7f51cbab, 0x7f4f32a9,
+  0x7f4c94be, 0x7f49f1eb, 0x7f474a30, 0x7f449d8c, 0x7f41ec01, 0x7f3f358d,
+  0x7f3c7a31, 0x7f39b9ee,
+  0x7f36f4c3, 0x7f342ab1, 0x7f315bb7, 0x7f2e87d6, 0x7f2baf0d, 0x7f28d15d,
+  0x7f25eec7, 0x7f230749,
+  0x7f201ae5, 0x7f1d299a, 0x7f1a3368, 0x7f173850, 0x7f143852, 0x7f11336d,
+  0x7f0e29a3, 0x7f0b1af2,
+  0x7f08075c, 0x7f04eedf, 0x7f01d17d, 0x7efeaf36, 0x7efb8809, 0x7ef85bf7,
+  0x7ef52b00, 0x7ef1f524,
+  0x7eeeba62, 0x7eeb7abc, 0x7ee83632, 0x7ee4ecc3, 0x7ee19e6f, 0x7ede4b38,
+  0x7edaf31c, 0x7ed7961c,
+  0x7ed43438, 0x7ed0cd70, 0x7ecd61c5, 0x7ec9f137, 0x7ec67bc5, 0x7ec3016f,
+  0x7ebf8237, 0x7ebbfe1c,
+  0x7eb8751e, 0x7eb4e73d, 0x7eb1547a, 0x7eadbcd4, 0x7eaa204c, 0x7ea67ee2,
+  0x7ea2d896, 0x7e9f2d68,
+  0x7e9b7d58, 0x7e97c867, 0x7e940e94, 0x7e904fe0, 0x7e8c8c4b, 0x7e88c3d5,
+  0x7e84f67e, 0x7e812447,
+  0x7e7d4d2f, 0x7e797136, 0x7e75905d, 0x7e71aaa4, 0x7e6dc00c, 0x7e69d093,
+  0x7e65dc3b, 0x7e61e303,
+  0x7e5de4ec, 0x7e59e1f5, 0x7e55da20, 0x7e51cd6c, 0x7e4dbbd9, 0x7e49a567,
+  0x7e458a17, 0x7e4169e9,
+  0x7e3d44dd, 0x7e391af3, 0x7e34ec2b, 0x7e30b885, 0x7e2c8002, 0x7e2842a2,
+  0x7e240064, 0x7e1fb94a,
+  0x7e1b6d53, 0x7e171c7f, 0x7e12c6ce, 0x7e0e6c42, 0x7e0a0cd9, 0x7e05a894,
+  0x7e013f74, 0x7dfcd178,
+  0x7df85ea0, 0x7df3e6ee, 0x7def6a60, 0x7deae8f7, 0x7de662b3, 0x7de1d795,
+  0x7ddd479d, 0x7dd8b2ca,
+  0x7dd4191d, 0x7dcf7a96, 0x7dcad736, 0x7dc62efc, 0x7dc181e8, 0x7dbccffc,
+  0x7db81936, 0x7db35d98,
+  0x7dae9d21, 0x7da9d7d2, 0x7da50dab, 0x7da03eab, 0x7d9b6ad3, 0x7d969224,
+  0x7d91b49e, 0x7d8cd240,
+  0x7d87eb0a, 0x7d82fefe, 0x7d7e0e1c, 0x7d791862, 0x7d741dd2, 0x7d6f1e6c,
+  0x7d6a1a31, 0x7d65111f,
+  0x7d600338, 0x7d5af07b, 0x7d55d8e9, 0x7d50bc82, 0x7d4b9b46, 0x7d467536,
+  0x7d414a51, 0x7d3c1a98,
+  0x7d36e60b, 0x7d31acaa, 0x7d2c6e76, 0x7d272b6e, 0x7d21e393, 0x7d1c96e5,
+  0x7d174564, 0x7d11ef11,
+  0x7d0c93eb, 0x7d0733f3, 0x7d01cf29, 0x7cfc658d, 0x7cf6f720, 0x7cf183e1,
+  0x7cec0bd1, 0x7ce68ef0,
+  0x7ce10d3f, 0x7cdb86bd, 0x7cd5fb6a, 0x7cd06b48, 0x7ccad656, 0x7cc53c94,
+  0x7cbf9e03, 0x7cb9faa2,
+  0x7cb45272, 0x7caea574, 0x7ca8f3a7, 0x7ca33d0c, 0x7c9d81a3, 0x7c97c16b,
+  0x7c91fc66, 0x7c8c3294,
+  0x7c8663f4, 0x7c809088, 0x7c7ab84e, 0x7c74db48, 0x7c6ef976, 0x7c6912d7,
+  0x7c63276d, 0x7c5d3737,
+  0x7c574236, 0x7c514869, 0x7c4b49d2, 0x7c45466f, 0x7c3f3e42, 0x7c39314b,
+  0x7c331f8a, 0x7c2d08ff,
+  0x7c26edab, 0x7c20cd8d, 0x7c1aa8a6, 0x7c147ef6, 0x7c0e507e, 0x7c081d3d,
+  0x7c01e534, 0x7bfba863,
+  0x7bf566cb, 0x7bef206b, 0x7be8d544, 0x7be28556, 0x7bdc30a1, 0x7bd5d726,
+  0x7bcf78e5, 0x7bc915dd,
+  0x7bc2ae10, 0x7bbc417e, 0x7bb5d026, 0x7baf5a09, 0x7ba8df28, 0x7ba25f82,
+  0x7b9bdb18, 0x7b9551ea,
+  0x7b8ec3f8, 0x7b883143, 0x7b8199ca, 0x7b7afd8f, 0x7b745c91, 0x7b6db6d0,
+  0x7b670c4d, 0x7b605d09,
+  0x7b59a902, 0x7b52f03a, 0x7b4c32b1, 0x7b457068, 0x7b3ea95d, 0x7b37dd92,
+  0x7b310d07, 0x7b2a37bc,
+  0x7b235db2, 0x7b1c7ee8, 0x7b159b5f, 0x7b0eb318, 0x7b07c612, 0x7b00d44d,
+  0x7af9ddcb, 0x7af2e28b,
+  0x7aebe28d, 0x7ae4ddd2, 0x7addd45b, 0x7ad6c626, 0x7acfb336, 0x7ac89b89,
+  0x7ac17f20, 0x7aba5dfc,
+  0x7ab3381d, 0x7aac0d82, 0x7aa4de2d, 0x7a9daa1d, 0x7a967153, 0x7a8f33d0,
+  0x7a87f192, 0x7a80aa9c,
+  0x7a795eec, 0x7a720e84, 0x7a6ab963, 0x7a635f8a, 0x7a5c00f9, 0x7a549db0,
+  0x7a4d35b0, 0x7a45c8f9,
+  0x7a3e578b, 0x7a36e166, 0x7a2f668c, 0x7a27e6fb, 0x7a2062b5, 0x7a18d9b9,
+  0x7a114c09, 0x7a09b9a4,
+  0x7a02228a, 0x79fa86bc, 0x79f2e63a, 0x79eb4105, 0x79e3971c, 0x79dbe880,
+  0x79d43532, 0x79cc7d31,
+  0x79c4c07e, 0x79bcff19, 0x79b53903, 0x79ad6e3c, 0x79a59ec3, 0x799dca9a,
+  0x7995f1c1, 0x798e1438,
+  0x798631ff, 0x797e4b16, 0x79765f7f, 0x796e6f39, 0x79667a44, 0x795e80a1,
+  0x79568250, 0x794e7f52,
+  0x794677a6, 0x793e6b4e, 0x79365a49, 0x792e4497, 0x79262a3a, 0x791e0b31,
+  0x7915e77c, 0x790dbf1d,
+  0x79059212, 0x78fd605d, 0x78f529fe, 0x78eceef6, 0x78e4af44, 0x78dc6ae8,
+  0x78d421e4, 0x78cbd437,
+  0x78c381e2, 0x78bb2ae5, 0x78b2cf41, 0x78aa6ef5, 0x78a20a03, 0x7899a06a,
+  0x7891322a, 0x7888bf45,
+  0x788047ba, 0x7877cb89, 0x786f4ab4, 0x7866c53a, 0x785e3b1c, 0x7855ac5a,
+  0x784d18f4, 0x784480ea,
+  0x783be43e, 0x783342ef, 0x782a9cfe, 0x7821f26b, 0x78194336, 0x78108f60,
+  0x7807d6e9, 0x77ff19d1,
+  0x77f65819, 0x77ed91c0, 0x77e4c6c9, 0x77dbf732, 0x77d322fc, 0x77ca4a27,
+  0x77c16cb4, 0x77b88aa3,
+  0x77afa3f5, 0x77a6b8a9, 0x779dc8c0, 0x7794d43b, 0x778bdb19, 0x7782dd5c,
+  0x7779db03, 0x7770d40f,
+  0x7767c880, 0x775eb857, 0x7755a394, 0x774c8a36, 0x77436c40, 0x773a49b0,
+  0x77312287, 0x7727f6c6,
+  0x771ec66e, 0x7715917d, 0x770c57f5, 0x770319d6, 0x76f9d721, 0x76f08fd5,
+  0x76e743f4, 0x76ddf37c,
+  0x76d49e70, 0x76cb44cf, 0x76c1e699, 0x76b883d0, 0x76af1c72, 0x76a5b082,
+  0x769c3ffe, 0x7692cae8,
+  0x7689513f, 0x767fd304, 0x76765038, 0x766cc8db, 0x76633ced, 0x7659ac6f,
+  0x76501760, 0x76467dc2,
+  0x763cdf94, 0x76333cd8, 0x7629958c, 0x761fe9b3, 0x7616394c, 0x760c8457,
+  0x7602cad5, 0x75f90cc7,
+  0x75ef4a2c, 0x75e58305, 0x75dbb753, 0x75d1e715, 0x75c8124d, 0x75be38fa,
+  0x75b45b1d, 0x75aa78b6,
+  0x75a091c6, 0x7596a64d, 0x758cb64c, 0x7582c1c2, 0x7578c8b0, 0x756ecb18,
+  0x7564c8f8, 0x755ac251,
+  0x7550b725, 0x7546a772, 0x753c933a, 0x75327a7d, 0x75285d3b, 0x751e3b75,
+  0x7514152b, 0x7509ea5d,
+  0x74ffbb0d, 0x74f58739, 0x74eb4ee3, 0x74e1120c, 0x74d6d0b2, 0x74cc8ad8,
+  0x74c2407d, 0x74b7f1a1,
+  0x74ad9e46, 0x74a3466b, 0x7498ea11, 0x748e8938, 0x748423e0, 0x7479ba0b,
+  0x746f4bb8, 0x7464d8e8,
+  0x745a619b, 0x744fe5d2, 0x7445658d, 0x743ae0cc, 0x74305790, 0x7425c9da,
+  0x741b37a9, 0x7410a0fe,
+  0x740605d9, 0x73fb663c, 0x73f0c226, 0x73e61997, 0x73db6c91, 0x73d0bb13,
+  0x73c6051f, 0x73bb4ab3,
+  0x73b08bd1, 0x73a5c87a, 0x739b00ad, 0x7390346b, 0x738563b5, 0x737a8e8a,
+  0x736fb4ec, 0x7364d6da,
+  0x7359f456, 0x734f0d5f, 0x734421f6, 0x7339321b, 0x732e3dcf, 0x73234512,
+  0x731847e5, 0x730d4648,
+  0x7302403c, 0x72f735c0, 0x72ec26d6, 0x72e1137d, 0x72d5fbb7, 0x72cadf83,
+  0x72bfbee3, 0x72b499d6,
+  0x72a9705c, 0x729e4277, 0x72931027, 0x7287d96c, 0x727c9e47, 0x72715eb8,
+  0x72661abf, 0x725ad25d,
+  0x724f8593, 0x72443460, 0x7238dec5, 0x722d84c4, 0x7222265b, 0x7216c38c,
+  0x720b5c57, 0x71fff0bc,
+  0x71f480bc, 0x71e90c57, 0x71dd938f, 0x71d21662, 0x71c694d2, 0x71bb0edf,
+  0x71af848a, 0x71a3f5d2,
+  0x719862b9, 0x718ccb3f, 0x71812f65, 0x71758f29, 0x7169ea8f, 0x715e4194,
+  0x7152943b, 0x7146e284,
+  0x713b2c6e, 0x712f71fb, 0x7123b32b, 0x7117effe, 0x710c2875, 0x71005c90,
+  0x70f48c50, 0x70e8b7b5,
+  0x70dcdec0, 0x70d10171, 0x70c51fc8, 0x70b939c7, 0x70ad4f6d, 0x70a160ba,
+  0x70956db1, 0x70897650,
+  0x707d7a98, 0x70717a8a, 0x70657626, 0x70596d6d, 0x704d6060, 0x70414efd,
+  0x70353947, 0x70291f3e,
+  0x701d00e1, 0x7010de32, 0x7004b731, 0x6ff88bde, 0x6fec5c3b, 0x6fe02846,
+  0x6fd3f001, 0x6fc7b36d,
+  0x6fbb728a, 0x6faf2d57, 0x6fa2e3d7, 0x6f969608, 0x6f8a43ed, 0x6f7ded84,
+  0x6f7192cf, 0x6f6533ce,
+  0x6f58d082, 0x6f4c68eb, 0x6f3ffd09, 0x6f338cde, 0x6f271868, 0x6f1a9faa,
+  0x6f0e22a3, 0x6f01a155,
+  0x6ef51bbe, 0x6ee891e1, 0x6edc03bc, 0x6ecf7152, 0x6ec2daa2, 0x6eb63fad,
+  0x6ea9a073, 0x6e9cfcf5,
+  0x6e905534, 0x6e83a92f, 0x6e76f8e7, 0x6e6a445d, 0x6e5d8b91, 0x6e50ce84,
+  0x6e440d37, 0x6e3747a9,
+  0x6e2a7ddb, 0x6e1dafce, 0x6e10dd82, 0x6e0406f8, 0x6df72c30, 0x6dea4d2b,
+  0x6ddd69e9, 0x6dd0826a,
+  0x6dc396b0, 0x6db6a6ba, 0x6da9b28a, 0x6d9cba1f, 0x6d8fbd7a, 0x6d82bc9d,
+  0x6d75b786, 0x6d68ae37,
+  0x6d5ba0b0, 0x6d4e8ef2, 0x6d4178fd, 0x6d345ed1, 0x6d274070, 0x6d1a1dda,
+  0x6d0cf70f, 0x6cffcc0f,
+  0x6cf29cdc, 0x6ce56975, 0x6cd831dc, 0x6ccaf610, 0x6cbdb613, 0x6cb071e4,
+  0x6ca32985, 0x6c95dcf6,
+  0x6c888c36, 0x6c7b3748, 0x6c6dde2b, 0x6c6080e0, 0x6c531f67, 0x6c45b9c1,
+  0x6c384fef, 0x6c2ae1f0,
+  0x6c1d6fc6, 0x6c0ff971, 0x6c027ef1, 0x6bf50047, 0x6be77d74, 0x6bd9f677,
+  0x6bcc6b53, 0x6bbedc06,
+  0x6bb14892, 0x6ba3b0f7, 0x6b961536, 0x6b88754f, 0x6b7ad142, 0x6b6d2911,
+  0x6b5f7cbc, 0x6b51cc42,
+  0x6b4417a6, 0x6b365ee7, 0x6b28a206, 0x6b1ae103, 0x6b0d1bdf, 0x6aff529a,
+  0x6af18536, 0x6ae3b3b2,
+  0x6ad5de0f, 0x6ac8044e, 0x6aba266e, 0x6aac4472, 0x6a9e5e58, 0x6a907423,
+  0x6a8285d1, 0x6a749365,
+  0x6a669cdd, 0x6a58a23c, 0x6a4aa381, 0x6a3ca0ad, 0x6a2e99c0, 0x6a208ebb,
+  0x6a127f9f, 0x6a046c6c,
+  0x69f65523, 0x69e839c4, 0x69da1a50, 0x69cbf6c7, 0x69bdcf29, 0x69afa378,
+  0x69a173b5, 0x69933fde,
+  0x698507f6, 0x6976cbfc, 0x69688bf1, 0x695a47d6, 0x694bffab, 0x693db371,
+  0x692f6328, 0x69210ed1,
+  0x6912b66c, 0x690459fb, 0x68f5f97d, 0x68e794f3, 0x68d92c5d, 0x68cabfbd,
+  0x68bc4f13, 0x68adda5f,
+  0x689f61a1, 0x6890e4dc, 0x6882640e, 0x6873df38, 0x6865565c, 0x6856c979,
+  0x68483891, 0x6839a3a4,
+  0x682b0ab1, 0x681c6dbb, 0x680dccc1, 0x67ff27c4, 0x67f07ec5, 0x67e1d1c4,
+  0x67d320c1, 0x67c46bbe,
+  0x67b5b2bb, 0x67a6f5b8, 0x679834b6, 0x67896fb6, 0x677aa6b8, 0x676bd9bd,
+  0x675d08c4, 0x674e33d0,
+  0x673f5ae0, 0x67307df5, 0x67219d10, 0x6712b831, 0x6703cf58, 0x66f4e287,
+  0x66e5f1be, 0x66d6fcfd,
+  0x66c80445, 0x66b90797, 0x66aa06f3, 0x669b0259, 0x668bf9cb, 0x667ced49,
+  0x666ddcd3, 0x665ec86b,
+  0x664fb010, 0x664093c3, 0x66317385, 0x66224f56, 0x66132738, 0x6603fb2a,
+  0x65f4cb2d, 0x65e59742,
+  0x65d65f69, 0x65c723a3, 0x65b7e3f1, 0x65a8a052, 0x659958c9, 0x658a0d54,
+  0x657abdf6, 0x656b6aae,
+  0x655c137d, 0x654cb863, 0x653d5962, 0x652df679, 0x651e8faa, 0x650f24f5,
+  0x64ffb65b, 0x64f043dc,
+  0x64e0cd78, 0x64d15331, 0x64c1d507, 0x64b252fa, 0x64a2cd0c, 0x6493433c,
+  0x6483b58c, 0x647423fb,
+  0x64648e8c, 0x6454f53d, 0x64455810, 0x6435b706, 0x6426121e, 0x6416695a,
+  0x6406bcba, 0x63f70c3f,
+  0x63e757ea, 0x63d79fba, 0x63c7e3b1, 0x63b823cf, 0x63a86015, 0x63989884,
+  0x6388cd1b, 0x6378fddc,
+  0x63692ac7, 0x635953dd, 0x6349791f, 0x63399a8d, 0x6329b827, 0x6319d1ef,
+  0x6309e7e4, 0x62f9fa09,
+  0x62ea085c, 0x62da12df, 0x62ca1992, 0x62ba1c77, 0x62aa1b8d, 0x629a16d5,
+  0x628a0e50, 0x627a01fe,
+  0x6269f1e1, 0x6259ddf8, 0x6249c645, 0x6239aac7, 0x62298b81, 0x62196871,
+  0x62094199, 0x61f916f9,
+  0x61e8e893, 0x61d8b666, 0x61c88074, 0x61b846bc, 0x61a80940, 0x6197c800,
+  0x618782fd, 0x61773a37,
+  0x6166edb0, 0x61569d67, 0x6146495d, 0x6135f193, 0x6125960a, 0x611536c2,
+  0x6104d3bc, 0x60f46cf9,
+  0x60e40278, 0x60d3943b, 0x60c32243, 0x60b2ac8f, 0x60a23322, 0x6091b5fa,
+  0x60813519, 0x6070b080,
+  0x6060282f, 0x604f9c27, 0x603f0c69, 0x602e78f4, 0x601de1ca, 0x600d46ec,
+  0x5ffca859, 0x5fec0613,
+  0x5fdb601b, 0x5fcab670, 0x5fba0914, 0x5fa95807, 0x5f98a34a, 0x5f87eade,
+  0x5f772ec2, 0x5f666ef9,
+  0x5f55ab82, 0x5f44e45e, 0x5f34198e, 0x5f234b12, 0x5f1278eb, 0x5f01a31a,
+  0x5ef0c99f, 0x5edfec7b,
+  0x5ecf0baf, 0x5ebe273b, 0x5ead3f1f, 0x5e9c535e, 0x5e8b63f7, 0x5e7a70ea,
+  0x5e697a39, 0x5e587fe5,
+  0x5e4781ed, 0x5e368053, 0x5e257b17, 0x5e147239, 0x5e0365bb, 0x5df2559e,
+  0x5de141e1, 0x5dd02a85,
+  0x5dbf0f8c, 0x5dadf0f5, 0x5d9ccec2, 0x5d8ba8f3, 0x5d7a7f88, 0x5d695283,
+  0x5d5821e4, 0x5d46edac,
+  0x5d35b5db, 0x5d247a72, 0x5d133b72, 0x5d01f8dc, 0x5cf0b2af, 0x5cdf68ed,
+  0x5cce1b97, 0x5cbccaac,
+  0x5cab762f, 0x5c9a1e1e, 0x5c88c27c, 0x5c776348, 0x5c660084, 0x5c549a30,
+  0x5c43304d, 0x5c31c2db,
+  0x5c2051db, 0x5c0edd4e, 0x5bfd6534, 0x5bebe98e, 0x5bda6a5d, 0x5bc8e7a2,
+  0x5bb7615d, 0x5ba5d78e,
+  0x5b944a37, 0x5b82b958, 0x5b7124f2, 0x5b5f8d06, 0x5b4df193, 0x5b3c529c,
+  0x5b2ab020, 0x5b190a20,
+  0x5b07609d, 0x5af5b398, 0x5ae40311, 0x5ad24f09, 0x5ac09781, 0x5aaedc78,
+  0x5a9d1df1, 0x5a8b5bec,
+  0x5a799669, 0x5a67cd69, 0x5a5600ec, 0x5a4430f5, 0x5a325d82, 0x5a208695,
+  0x5a0eac2e, 0x59fcce4f,
+  0x59eaecf8, 0x59d90829, 0x59c71fe3, 0x59b53427, 0x59a344f6, 0x59915250,
+  0x597f5c36, 0x596d62a9,
+  0x595b65aa, 0x59496538, 0x59376155, 0x59255a02, 0x59134f3e, 0x5901410c,
+  0x58ef2f6b, 0x58dd1a5d,
+  0x58cb01e1, 0x58b8e5f9, 0x58a6c6a5, 0x5894a3e7, 0x58827dbe, 0x5870542c,
+  0x585e2730, 0x584bf6cd,
+  0x5839c302, 0x58278bd1, 0x58155139, 0x5803133c, 0x57f0d1da, 0x57de8d15,
+  0x57cc44ec, 0x57b9f960,
+  0x57a7aa73, 0x57955825, 0x57830276, 0x5770a968, 0x575e4cfa, 0x574bed2f,
+  0x57398a05, 0x5727237f,
+  0x5714b99d, 0x57024c5f, 0x56efdbc7, 0x56dd67d4, 0x56caf088, 0x56b875e4,
+  0x56a5f7e7, 0x56937694,
+  0x5680f1ea, 0x566e69ea, 0x565bde95, 0x56494fec, 0x5636bdef, 0x5624289f,
+  0x56118ffe, 0x55fef40a,
+  0x55ec54c6, 0x55d9b232, 0x55c70c4f, 0x55b4631d, 0x55a1b69d, 0x558f06d0,
+  0x557c53b6, 0x55699d51,
+  0x5556e3a1, 0x554426a7, 0x55316663, 0x551ea2d6, 0x550bdc01, 0x54f911e5,
+  0x54e64482, 0x54d373d9,
+  0x54c09feb, 0x54adc8b8, 0x549aee42, 0x54881089, 0x54752f8d, 0x54624b50,
+  0x544f63d2, 0x543c7914,
+  0x54298b17, 0x541699db, 0x5403a561, 0x53f0adaa, 0x53ddb2b6, 0x53cab486,
+  0x53b7b31c, 0x53a4ae77,
+  0x5391a699, 0x537e9b82, 0x536b8d33, 0x53587bad, 0x534566f0, 0x53324efd,
+  0x531f33d5, 0x530c1579,
+  0x52f8f3e9, 0x52e5cf27, 0x52d2a732, 0x52bf7c0b, 0x52ac4db4, 0x52991c2d,
+  0x5285e777, 0x5272af92,
+  0x525f7480, 0x524c3640, 0x5238f4d4, 0x5225b03d, 0x5212687b, 0x51ff1d8f,
+  0x51ebcf7a, 0x51d87e3c,
+  0x51c529d7, 0x51b1d24a, 0x519e7797, 0x518b19bf, 0x5177b8c2, 0x516454a0,
+  0x5150ed5c, 0x513d82f4,
+  0x512a156b, 0x5116a4c1, 0x510330f7, 0x50efba0d, 0x50dc4005, 0x50c8c2de,
+  0x50b5429a, 0x50a1bf39,
+  0x508e38bd, 0x507aaf25, 0x50672273, 0x505392a8, 0x503fffc4, 0x502c69c8,
+  0x5018d0b4, 0x5005348a,
+  0x4ff1954b, 0x4fddf2f6, 0x4fca4d8d, 0x4fb6a510, 0x4fa2f981, 0x4f8f4ae0,
+  0x4f7b992d, 0x4f67e46a,
+  0x4f542c98, 0x4f4071b6, 0x4f2cb3c7, 0x4f18f2c9, 0x4f052ec0, 0x4ef167aa,
+  0x4edd9d89, 0x4ec9d05e,
+  0x4eb60029, 0x4ea22ceb, 0x4e8e56a5, 0x4e7a7d58, 0x4e66a105, 0x4e52c1ab,
+  0x4e3edf4d, 0x4e2af9ea,
+  0x4e171184, 0x4e03261b, 0x4def37b0, 0x4ddb4644, 0x4dc751d8, 0x4db35a6c,
+  0x4d9f6001, 0x4d8b6298,
+  0x4d776231, 0x4d635ece, 0x4d4f5870, 0x4d3b4f16, 0x4d2742c2, 0x4d133374,
+  0x4cff212e, 0x4ceb0bf0,
+  0x4cd6f3bb, 0x4cc2d88f, 0x4caeba6e, 0x4c9a9958, 0x4c86754e, 0x4c724e50,
+  0x4c5e2460, 0x4c49f77f,
+  0x4c35c7ac, 0x4c2194e9, 0x4c0d5f37, 0x4bf92697, 0x4be4eb08, 0x4bd0ac8d,
+  0x4bbc6b25, 0x4ba826d1,
+  0x4b93df93, 0x4b7f956b, 0x4b6b485a, 0x4b56f861, 0x4b42a580, 0x4b2e4fb8,
+  0x4b19f70a, 0x4b059b77,
+  0x4af13d00, 0x4adcdba5, 0x4ac87767, 0x4ab41046, 0x4a9fa645, 0x4a8b3963,
+  0x4a76c9a2, 0x4a625701,
+  0x4a4de182, 0x4a396926, 0x4a24edee, 0x4a106fda, 0x49fbeeea, 0x49e76b21,
+  0x49d2e47e, 0x49be5b02,
+  0x49a9ceaf, 0x49953f84, 0x4980ad84, 0x496c18ae, 0x49578103, 0x4942e684,
+  0x492e4933, 0x4919a90f,
+  0x4905061a, 0x48f06054, 0x48dbb7be, 0x48c70c59, 0x48b25e25, 0x489dad25,
+  0x4888f957, 0x487442be,
+  0x485f8959, 0x484acd2a, 0x48360e32, 0x48214c71, 0x480c87e8, 0x47f7c099,
+  0x47e2f682, 0x47ce29a7,
+  0x47b95a06, 0x47a487a2, 0x478fb27b, 0x477ada91, 0x4765ffe6, 0x4751227a,
+  0x473c424e, 0x47275f63,
+  0x471279ba, 0x46fd9154, 0x46e8a631, 0x46d3b852, 0x46bec7b8, 0x46a9d464,
+  0x4694de56, 0x467fe590,
+  0x466aea12, 0x4655ebdd, 0x4640eaf2, 0x462be751, 0x4616e0fc, 0x4601d7f3,
+  0x45eccc37, 0x45d7bdc9,
+  0x45c2acaa, 0x45ad98da, 0x4598825a, 0x4583692c, 0x456e4d4f, 0x45592ec6,
+  0x45440d90, 0x452ee9ae,
+  0x4519c321, 0x450499eb, 0x44ef6e0b, 0x44da3f83, 0x44c50e53, 0x44afda7d,
+  0x449aa400, 0x44856adf,
+  0x44702f19, 0x445af0b0, 0x4445afa4, 0x44306bf6, 0x441b25a8, 0x4405dcb9,
+  0x43f0912b, 0x43db42fe,
+  0x43c5f234, 0x43b09ecc, 0x439b48c9, 0x4385f02a, 0x437094f1, 0x435b371f,
+  0x4345d6b3, 0x433073b0,
+  0x431b0e15, 0x4305a5e5, 0x42f03b1e, 0x42dacdc3, 0x42c55dd4, 0x42afeb53,
+  0x429a763f, 0x4284fe99,
+  0x426f8463, 0x425a079e, 0x42448849, 0x422f0667, 0x421981f7, 0x4203fafb,
+  0x41ee7174, 0x41d8e561,
+  0x41c356c5, 0x41adc5a0, 0x419831f3, 0x41829bbe, 0x416d0302, 0x415767c1,
+  0x4141c9fb, 0x412c29b1,
+  0x411686e4, 0x4100e194, 0x40eb39c3, 0x40d58f71, 0x40bfe29f, 0x40aa334e,
+  0x4094817f, 0x407ecd32,
+  0x40691669, 0x40535d24, 0x403da165, 0x4027e32b, 0x40122278, 0x3ffc5f4d,
+  0x3fe699aa, 0x3fd0d191,
+  0x3fbb0702, 0x3fa539fd, 0x3f8f6a85, 0x3f799899, 0x3f63c43b, 0x3f4ded6b,
+  0x3f38142a, 0x3f22387a,
+  0x3f0c5a5a, 0x3ef679cc, 0x3ee096d1, 0x3ecab169, 0x3eb4c995, 0x3e9edf57,
+  0x3e88f2ae, 0x3e73039d,
+  0x3e5d1222, 0x3e471e41, 0x3e3127f9, 0x3e1b2f4a, 0x3e053437, 0x3def36c0,
+  0x3dd936e6, 0x3dc334a9,
+  0x3dad300b, 0x3d97290b, 0x3d811fac, 0x3d6b13ee, 0x3d5505d2, 0x3d3ef559,
+  0x3d28e282, 0x3d12cd51,
+  0x3cfcb5c4, 0x3ce69bde, 0x3cd07f9f, 0x3cba6107, 0x3ca44018, 0x3c8e1cd3,
+  0x3c77f737, 0x3c61cf48,
+  0x3c4ba504, 0x3c35786d, 0x3c1f4983, 0x3c091849, 0x3bf2e4be, 0x3bdcaee3,
+  0x3bc676b9, 0x3bb03c42,
+  0x3b99ff7d, 0x3b83c06c, 0x3b6d7f10, 0x3b573b69, 0x3b40f579, 0x3b2aad3f,
+  0x3b1462be, 0x3afe15f6,
+  0x3ae7c6e7, 0x3ad17593, 0x3abb21fb, 0x3aa4cc1e, 0x3a8e7400, 0x3a78199f,
+  0x3a61bcfd, 0x3a4b5e1b,
+  0x3a34fcf9, 0x3a1e9999, 0x3a0833fc, 0x39f1cc21, 0x39db620b, 0x39c4f5ba,
+  0x39ae872f, 0x3998166a,
+  0x3981a36d, 0x396b2e38, 0x3954b6cd, 0x393e3d2c, 0x3927c155, 0x3911434b,
+  0x38fac30e, 0x38e4409e,
+  0x38cdbbfc, 0x38b7352a, 0x38a0ac29, 0x388a20f8, 0x38739399, 0x385d040d,
+  0x38467255, 0x382fde72,
+  0x38194864, 0x3802b02c, 0x37ec15cb, 0x37d57943, 0x37beda93, 0x37a839be,
+  0x379196c3, 0x377af1a3,
+  0x37644a60, 0x374da0fa, 0x3736f573, 0x372047ca, 0x37099802, 0x36f2e61a,
+  0x36dc3214, 0x36c57bf0,
+  0x36aec3b0, 0x36980954, 0x36814cde, 0x366a8e4d, 0x3653cda3, 0x363d0ae2,
+  0x36264609, 0x360f7f19,
+  0x35f8b614, 0x35e1eafa, 0x35cb1dcc, 0x35b44e8c, 0x359d7d39, 0x3586a9d5,
+  0x356fd461, 0x3558fcde,
+  0x3542234c, 0x352b47ad, 0x35146a00, 0x34fd8a48, 0x34e6a885, 0x34cfc4b7,
+  0x34b8dee1, 0x34a1f702,
+  0x348b0d1c, 0x3474212f, 0x345d333c, 0x34464345, 0x342f5149, 0x34185d4b,
+  0x3401674a, 0x33ea6f48,
+  0x33d37546, 0x33bc7944, 0x33a57b44, 0x338e7b46, 0x3377794b, 0x33607554,
+  0x33496f62, 0x33326776,
+  0x331b5d91, 0x330451b3, 0x32ed43de, 0x32d63412, 0x32bf2250, 0x32a80e99,
+  0x3290f8ef, 0x3279e151,
+  0x3262c7c1, 0x324bac40, 0x32348ecf, 0x321d6f6e, 0x32064e1e, 0x31ef2ae1,
+  0x31d805b7, 0x31c0dea1,
+  0x31a9b5a0, 0x31928ab4, 0x317b5de0, 0x31642f23, 0x314cfe7f, 0x3135cbf4,
+  0x311e9783, 0x3107612e,
+  0x30f028f4, 0x30d8eed8, 0x30c1b2da, 0x30aa74fa, 0x3093353a, 0x307bf39b,
+  0x3064b01d, 0x304d6ac1,
+  0x30362389, 0x301eda75, 0x30078f86, 0x2ff042bd, 0x2fd8f41b, 0x2fc1a3a0,
+  0x2faa514f, 0x2f92fd26,
+  0x2f7ba729, 0x2f644f56, 0x2f4cf5b0, 0x2f359a37, 0x2f1e3ced, 0x2f06ddd1,
+  0x2eef7ce5, 0x2ed81a29,
+  0x2ec0b5a0, 0x2ea94f49, 0x2e91e725, 0x2e7a7d36, 0x2e63117c, 0x2e4ba3f8,
+  0x2e3434ac, 0x2e1cc397,
+  0x2e0550bb, 0x2deddc19, 0x2dd665b2, 0x2dbeed86, 0x2da77397, 0x2d8ff7e5,
+  0x2d787a72, 0x2d60fb3e,
+  0x2d497a4a, 0x2d31f797, 0x2d1a7325, 0x2d02ecf7, 0x2ceb650d, 0x2cd3db67,
+  0x2cbc5006, 0x2ca4c2ed,
+  0x2c8d341a, 0x2c75a390, 0x2c5e114f, 0x2c467d58, 0x2c2ee7ad, 0x2c17504d,
+  0x2bffb73a, 0x2be81c74,
+  0x2bd07ffe, 0x2bb8e1d7, 0x2ba14200, 0x2b89a07b, 0x2b71fd48, 0x2b5a5868,
+  0x2b42b1dd, 0x2b2b09a6,
+  0x2b135fc6, 0x2afbb43c, 0x2ae4070a, 0x2acc5831, 0x2ab4a7b1, 0x2a9cf58c,
+  0x2a8541c3, 0x2a6d8c55,
+  0x2a55d545, 0x2a3e1c93, 0x2a266240, 0x2a0ea64d, 0x29f6e8bb, 0x29df298b,
+  0x29c768be, 0x29afa654,
+  0x2997e24f, 0x29801caf, 0x29685576, 0x29508ca4, 0x2938c23a, 0x2920f63a,
+  0x290928a3, 0x28f15978,
+  0x28d988b8, 0x28c1b666, 0x28a9e281, 0x28920d0a, 0x287a3604, 0x28625d6d,
+  0x284a8349, 0x2832a796,
+  0x281aca57, 0x2802eb8c, 0x27eb0b36, 0x27d32956, 0x27bb45ed, 0x27a360fc,
+  0x278b7a84, 0x27739285,
+  0x275ba901, 0x2743bdf9, 0x272bd16d, 0x2713e35f, 0x26fbf3ce, 0x26e402bd,
+  0x26cc102d, 0x26b41c1d,
+  0x269c268f, 0x26842f84, 0x266c36fe, 0x26543cfb, 0x263c417f, 0x26244489,
+  0x260c461b, 0x25f44635,
+  0x25dc44d9, 0x25c44207, 0x25ac3dc0, 0x25943806, 0x257c30d8, 0x25642839,
+  0x254c1e28, 0x253412a8,
+  0x251c05b8, 0x2503f75a, 0x24ebe78f, 0x24d3d657, 0x24bbc3b4, 0x24a3afa6,
+  0x248b9a2f, 0x2473834f,
+  0x245b6b07, 0x24435158, 0x242b3644, 0x241319ca, 0x23fafbec, 0x23e2dcac,
+  0x23cabc09, 0x23b29a05,
+  0x239a76a0, 0x238251dd, 0x236a2bba, 0x2352043b, 0x2339db5e, 0x2321b126,
+  0x23098593, 0x22f158a7,
+  0x22d92a61, 0x22c0fac4, 0x22a8c9cf, 0x22909785, 0x227863e5, 0x22602ef1,
+  0x2247f8aa, 0x222fc111,
+  0x22178826, 0x21ff4dea, 0x21e71260, 0x21ced586, 0x21b6975f, 0x219e57eb,
+  0x2186172b, 0x216dd521,
+  0x215591cc, 0x213d4d2f, 0x21250749, 0x210cc01d, 0x20f477aa, 0x20dc2df2,
+  0x20c3e2f5, 0x20ab96b5,
+  0x20934933, 0x207afa6f, 0x2062aa6b, 0x204a5927, 0x203206a4, 0x2019b2e4,
+  0x20015de7, 0x1fe907ae,
+  0x1fd0b03a, 0x1fb8578b, 0x1f9ffda4, 0x1f87a285, 0x1f6f462f, 0x1f56e8a2,
+  0x1f3e89e0, 0x1f2629ea,
+  0x1f0dc8c0, 0x1ef56664, 0x1edd02d6, 0x1ec49e17, 0x1eac3829, 0x1e93d10c,
+  0x1e7b68c2, 0x1e62ff4a,
+  0x1e4a94a7, 0x1e3228d9, 0x1e19bbe0, 0x1e014dbf, 0x1de8de75, 0x1dd06e04,
+  0x1db7fc6d, 0x1d9f89b1,
+  0x1d8715d0, 0x1d6ea0cc, 0x1d562aa6, 0x1d3db35e, 0x1d253af5, 0x1d0cc16c,
+  0x1cf446c5, 0x1cdbcb00,
+  0x1cc34e1f, 0x1caad021, 0x1c925109, 0x1c79d0d6, 0x1c614f8b, 0x1c48cd27,
+  0x1c3049ac, 0x1c17c51b,
+  0x1bff3f75, 0x1be6b8ba, 0x1bce30ec, 0x1bb5a80c, 0x1b9d1e1a, 0x1b849317,
+  0x1b6c0705, 0x1b5379e5,
+  0x1b3aebb6, 0x1b225c7b, 0x1b09cc34, 0x1af13ae3, 0x1ad8a887, 0x1ac01522,
+  0x1aa780b6, 0x1a8eeb42,
+  0x1a7654c8, 0x1a5dbd49, 0x1a4524c6, 0x1a2c8b3f, 0x1a13f0b6, 0x19fb552c,
+  0x19e2b8a2, 0x19ca1b17,
+  0x19b17c8f, 0x1998dd09, 0x19803c86, 0x19679b07, 0x194ef88e, 0x1936551b,
+  0x191db0af, 0x19050b4b,
+  0x18ec64f0, 0x18d3bda0, 0x18bb155a, 0x18a26c20, 0x1889c1f3, 0x187116d4,
+  0x18586ac3, 0x183fbdc3,
+  0x18270fd3, 0x180e60f4, 0x17f5b129, 0x17dd0070, 0x17c44ecd, 0x17ab9c3e,
+  0x1792e8c6, 0x177a3466,
+  0x17617f1d, 0x1748c8ee, 0x173011d9, 0x171759df, 0x16fea102, 0x16e5e741,
+  0x16cd2c9f, 0x16b4711b,
+  0x169bb4b7, 0x1682f774, 0x166a3953, 0x16517a55, 0x1638ba7a, 0x161ff9c4,
+  0x16073834, 0x15ee75cb,
+  0x15d5b288, 0x15bcee6f, 0x15a4297f, 0x158b63b9, 0x15729d1f, 0x1559d5b1,
+  0x15410d70, 0x1528445d,
+  0x150f7a7a, 0x14f6afc7, 0x14dde445, 0x14c517f4, 0x14ac4ad7, 0x14937cee,
+  0x147aae3a, 0x1461debc,
+  0x14490e74, 0x14303d65, 0x14176b8e, 0x13fe98f1, 0x13e5c58e, 0x13ccf167,
+  0x13b41c7d, 0x139b46d0,
+  0x13827062, 0x13699933, 0x1350c144, 0x1337e897, 0x131f0f2c, 0x13063505,
+  0x12ed5a21, 0x12d47e83,
+  0x12bba22b, 0x12a2c51b, 0x1289e752, 0x127108d2, 0x1258299c, 0x123f49b2,
+  0x12266913, 0x120d87c1,
+  0x11f4a5bd, 0x11dbc307, 0x11c2dfa2, 0x11a9fb8d, 0x119116c9, 0x11783159,
+  0x115f4b3c, 0x11466473,
+  0x112d7d00, 0x111494e4, 0x10fbac1e, 0x10e2c2b2, 0x10c9d89e, 0x10b0ede5,
+  0x10980287, 0x107f1686,
+  0x106629e1, 0x104d3c9b, 0x10344eb4, 0x101b602d, 0x10027107, 0xfe98143,
+  0xfd090e1, 0xfb79fe4,
+  0xf9eae4c, 0xf85bc19, 0xf6cc94e, 0xf53d5ea, 0xf3ae1ee, 0xf21ed5d, 0xf08f836,
+  0xef0027b,
+  0xed70c2c, 0xebe154b, 0xea51dd8, 0xe8c25d5, 0xe732d42, 0xe5a3421, 0xe413a72,
+  0xe284036,
+  0xe0f456f, 0xdf64a1c, 0xddd4e40, 0xdc451dc, 0xdab54ef, 0xd92577b, 0xd795982,
+  0xd605b03,
+  0xd475c00, 0xd2e5c7b, 0xd155c73, 0xcfc5bea, 0xce35ae1, 0xcca5959, 0xcb15752,
+  0xc9854cf,
+  0xc7f51cf, 0xc664e53, 0xc4d4a5d, 0xc3445ee, 0xc1b4107, 0xc023ba7, 0xbe935d2,
+  0xbd02f87,
+  0xbb728c7, 0xb9e2193, 0xb8519ed, 0xb6c11d5, 0xb53094d, 0xb3a0055, 0xb20f6ee,
+  0xb07ed19,
+  0xaeee2d7, 0xad5d829, 0xabccd11, 0xaa3c18e, 0xa8ab5a2, 0xa71a94f, 0xa589c94,
+  0xa3f8f73,
+  0xa2681ed, 0xa0d7403, 0x9f465b5, 0x9db5706, 0x9c247f5, 0x9a93884, 0x99028b3,
+  0x9771884,
+  0x95e07f8, 0x944f70f, 0x92be5ca, 0x912d42c, 0x8f9c233, 0x8e0afe2, 0x8c79d3a,
+  0x8ae8a3a,
+  0x89576e5, 0x87c633c, 0x8634f3e, 0x84a3aee, 0x831264c, 0x8181159, 0x7fefc16,
+  0x7e5e685,
+  0x7ccd0a5, 0x7b3ba78, 0x79aa400, 0x7818d3c, 0x768762e, 0x74f5ed7, 0x7364738,
+  0x71d2f52,
+  0x7041726, 0x6eafeb4, 0x6d1e5fe, 0x6b8cd05, 0x69fb3c9, 0x6869a4c, 0x66d808f,
+  0x6546692,
+  0x63b4c57, 0x62231de, 0x6091729, 0x5effc38, 0x5d6e10c, 0x5bdc5a7, 0x5a4aa09,
+  0x58b8e34,
+  0x5727228, 0x55955e6, 0x540396f, 0x5271cc4, 0x50dffe7, 0x4f4e2d8, 0x4dbc597,
+  0x4c2a827,
+  0x4a98a88, 0x4906cbb, 0x4774ec1, 0x45e309a, 0x4451249, 0x42bf3cd, 0x412d528,
+  0x3f9b65b,
+  0x3e09767, 0x3c7784d, 0x3ae590d, 0x39539a9, 0x37c1a22, 0x362fa78, 0x349daac,
+  0x330bac1,
+  0x3179ab5, 0x2fe7a8c, 0x2e55a44, 0x2cc39e1, 0x2b31961, 0x299f8c7, 0x280d813,
+  0x267b747,
+  0x24e9662, 0x2357567, 0x21c5457, 0x2033331, 0x1ea11f7, 0x1d0f0ab, 0x1b7cf4d,
+  0x19eaddd,
+  0x1858c5e, 0x16c6ad0, 0x1534934, 0x13a278a, 0x12105d5, 0x107e414, 0xeec249,
+  0xd5a075,
+  0xbc7e99, 0xa35cb5, 0x8a3acb, 0x7118dc, 0x57f6e9, 0x3ed4f2, 0x25b2f8,
+  0xc90fe,
+
+};
+
+static const q31_t cos_factorsQ31_8192[8192] = {
+  0x7ffffff6, 0x7fffffa7, 0x7fffff09, 0x7ffffe1c, 0x7ffffce1, 0x7ffffb56,
+    0x7ffff97c, 0x7ffff753,
+  0x7ffff4dc, 0x7ffff215, 0x7fffef00, 0x7fffeb9b, 0x7fffe7e8, 0x7fffe3e5,
+    0x7fffdf94, 0x7fffdaf3,
+  0x7fffd604, 0x7fffd0c6, 0x7fffcb39, 0x7fffc55c, 0x7fffbf31, 0x7fffb8b7,
+    0x7fffb1ee, 0x7fffaad6,
+  0x7fffa36f, 0x7fff9bb9, 0x7fff93b4, 0x7fff8b61, 0x7fff82be, 0x7fff79cc,
+    0x7fff708b, 0x7fff66fc,
+  0x7fff5d1d, 0x7fff52ef, 0x7fff4873, 0x7fff3da8, 0x7fff328d, 0x7fff2724,
+    0x7fff1b6b, 0x7fff0f64,
+  0x7fff030e, 0x7ffef669, 0x7ffee975, 0x7ffedc31, 0x7ffece9f, 0x7ffec0be,
+    0x7ffeb28e, 0x7ffea40f,
+  0x7ffe9542, 0x7ffe8625, 0x7ffe76b9, 0x7ffe66fe, 0x7ffe56f5, 0x7ffe469c,
+    0x7ffe35f4, 0x7ffe24fe,
+  0x7ffe13b8, 0x7ffe0224, 0x7ffdf040, 0x7ffdde0e, 0x7ffdcb8d, 0x7ffdb8bc,
+    0x7ffda59d, 0x7ffd922f,
+  0x7ffd7e72, 0x7ffd6a66, 0x7ffd560b, 0x7ffd4161, 0x7ffd2c68, 0x7ffd1720,
+    0x7ffd0189, 0x7ffceba4,
+  0x7ffcd56f, 0x7ffcbeeb, 0x7ffca819, 0x7ffc90f7, 0x7ffc7987, 0x7ffc61c7,
+    0x7ffc49b9, 0x7ffc315b,
+  0x7ffc18af, 0x7ffbffb4, 0x7ffbe66a, 0x7ffbccd0, 0x7ffbb2e8, 0x7ffb98b1,
+    0x7ffb7e2b, 0x7ffb6356,
+  0x7ffb4833, 0x7ffb2cc0, 0x7ffb10fe, 0x7ffaf4ed, 0x7ffad88e, 0x7ffabbdf,
+    0x7ffa9ee2, 0x7ffa8195,
+  0x7ffa63fa, 0x7ffa460f, 0x7ffa27d6, 0x7ffa094e, 0x7ff9ea76, 0x7ff9cb50,
+    0x7ff9abdb, 0x7ff98c17,
+  0x7ff96c04, 0x7ff94ba2, 0x7ff92af1, 0x7ff909f2, 0x7ff8e8a3, 0x7ff8c705,
+    0x7ff8a519, 0x7ff882dd,
+  0x7ff86053, 0x7ff83d79, 0x7ff81a51, 0x7ff7f6da, 0x7ff7d313, 0x7ff7aefe,
+    0x7ff78a9a, 0x7ff765e7,
+  0x7ff740e5, 0x7ff71b94, 0x7ff6f5f4, 0x7ff6d005, 0x7ff6a9c8, 0x7ff6833b,
+    0x7ff65c5f, 0x7ff63535,
+  0x7ff60dbb, 0x7ff5e5f3, 0x7ff5bddc, 0x7ff59576, 0x7ff56cc0, 0x7ff543bc,
+    0x7ff51a69, 0x7ff4f0c7,
+  0x7ff4c6d6, 0x7ff49c96, 0x7ff47208, 0x7ff4472a, 0x7ff41bfd, 0x7ff3f082,
+    0x7ff3c4b7, 0x7ff3989e,
+  0x7ff36c36, 0x7ff33f7e, 0x7ff31278, 0x7ff2e523, 0x7ff2b77f, 0x7ff2898c,
+    0x7ff25b4a, 0x7ff22cb9,
+  0x7ff1fdd9, 0x7ff1ceab, 0x7ff19f2d, 0x7ff16f61, 0x7ff13f45, 0x7ff10edb,
+    0x7ff0de22, 0x7ff0ad19,
+  0x7ff07bc2, 0x7ff04a1c, 0x7ff01827, 0x7fefe5e4, 0x7fefb351, 0x7fef806f,
+    0x7fef4d3e, 0x7fef19bf,
+  0x7feee5f0, 0x7feeb1d3, 0x7fee7d67, 0x7fee48ac, 0x7fee13a1, 0x7fedde48,
+    0x7feda8a0, 0x7fed72aa,
+  0x7fed3c64, 0x7fed05cf, 0x7fecceec, 0x7fec97b9, 0x7fec6038, 0x7fec2867,
+    0x7febf048, 0x7febb7da,
+  0x7feb7f1d, 0x7feb4611, 0x7feb0cb6, 0x7fead30c, 0x7fea9914, 0x7fea5ecc,
+    0x7fea2436, 0x7fe9e950,
+  0x7fe9ae1c, 0x7fe97299, 0x7fe936c7, 0x7fe8faa6, 0x7fe8be36, 0x7fe88177,
+    0x7fe84469, 0x7fe8070d,
+  0x7fe7c961, 0x7fe78b67, 0x7fe74d1e, 0x7fe70e85, 0x7fe6cf9e, 0x7fe69068,
+    0x7fe650e3, 0x7fe61110,
+  0x7fe5d0ed, 0x7fe5907b, 0x7fe54fbb, 0x7fe50eac, 0x7fe4cd4d, 0x7fe48ba0,
+    0x7fe449a4, 0x7fe40759,
+  0x7fe3c4bf, 0x7fe381d7, 0x7fe33e9f, 0x7fe2fb19, 0x7fe2b743, 0x7fe2731f,
+    0x7fe22eac, 0x7fe1e9ea,
+  0x7fe1a4d9, 0x7fe15f79, 0x7fe119cb, 0x7fe0d3cd, 0x7fe08d81, 0x7fe046e5,
+    0x7fdffffb, 0x7fdfb8c2,
+  0x7fdf713a, 0x7fdf2963, 0x7fdee13e, 0x7fde98c9, 0x7fde5006, 0x7fde06f3,
+    0x7fddbd92, 0x7fdd73e2,
+  0x7fdd29e3, 0x7fdcdf95, 0x7fdc94f9, 0x7fdc4a0d, 0x7fdbfed3, 0x7fdbb349,
+    0x7fdb6771, 0x7fdb1b4a,
+  0x7fdaced4, 0x7fda820f, 0x7fda34fc, 0x7fd9e799, 0x7fd999e8, 0x7fd94be8,
+    0x7fd8fd98, 0x7fd8aefa,
+  0x7fd8600e, 0x7fd810d2, 0x7fd7c147, 0x7fd7716e, 0x7fd72146, 0x7fd6d0cf,
+    0x7fd68009, 0x7fd62ef4,
+  0x7fd5dd90, 0x7fd58bdd, 0x7fd539dc, 0x7fd4e78c, 0x7fd494ed, 0x7fd441ff,
+    0x7fd3eec2, 0x7fd39b36,
+  0x7fd3475c, 0x7fd2f332, 0x7fd29eba, 0x7fd249f3, 0x7fd1f4dd, 0x7fd19f78,
+    0x7fd149c5, 0x7fd0f3c2,
+  0x7fd09d71, 0x7fd046d1, 0x7fcfefe2, 0x7fcf98a4, 0x7fcf4117, 0x7fcee93c,
+    0x7fce9112, 0x7fce3898,
+  0x7fcddfd0, 0x7fcd86b9, 0x7fcd2d54, 0x7fccd39f, 0x7fcc799c, 0x7fcc1f4a,
+    0x7fcbc4a9, 0x7fcb69b9,
+  0x7fcb0e7a, 0x7fcab2ed, 0x7fca5710, 0x7fc9fae5, 0x7fc99e6b, 0x7fc941a2,
+    0x7fc8e48b, 0x7fc88724,
+  0x7fc8296f, 0x7fc7cb6b, 0x7fc76d18, 0x7fc70e76, 0x7fc6af86, 0x7fc65046,
+    0x7fc5f0b8, 0x7fc590db,
+  0x7fc530af, 0x7fc4d035, 0x7fc46f6b, 0x7fc40e53, 0x7fc3acec, 0x7fc34b36,
+    0x7fc2e931, 0x7fc286de,
+  0x7fc2243b, 0x7fc1c14a, 0x7fc15e0a, 0x7fc0fa7b, 0x7fc0969e, 0x7fc03271,
+    0x7fbfcdf6, 0x7fbf692c,
+  0x7fbf0414, 0x7fbe9eac, 0x7fbe38f6, 0x7fbdd2f0, 0x7fbd6c9c, 0x7fbd05fa,
+    0x7fbc9f08, 0x7fbc37c8,
+  0x7fbbd039, 0x7fbb685b, 0x7fbb002e, 0x7fba97b2, 0x7fba2ee8, 0x7fb9c5cf,
+    0x7fb95c67, 0x7fb8f2b0,
+  0x7fb888ab, 0x7fb81e57, 0x7fb7b3b4, 0x7fb748c2, 0x7fb6dd81, 0x7fb671f2,
+    0x7fb60614, 0x7fb599e7,
+  0x7fb52d6b, 0x7fb4c0a1, 0x7fb45387, 0x7fb3e61f, 0x7fb37869, 0x7fb30a63,
+    0x7fb29c0f, 0x7fb22d6c,
+  0x7fb1be7a, 0x7fb14f39, 0x7fb0dfaa, 0x7fb06fcb, 0x7fafff9e, 0x7faf8f23,
+    0x7faf1e58, 0x7faead3f,
+  0x7fae3bd7, 0x7fadca20, 0x7fad581b, 0x7face5c6, 0x7fac7323, 0x7fac0031,
+    0x7fab8cf1, 0x7fab1962,
+  0x7faaa584, 0x7faa3157, 0x7fa9bcdb, 0x7fa94811, 0x7fa8d2f8, 0x7fa85d90,
+    0x7fa7e7d9, 0x7fa771d4,
+  0x7fa6fb80, 0x7fa684dd, 0x7fa60dec, 0x7fa596ac, 0x7fa51f1d, 0x7fa4a73f,
+    0x7fa42f12, 0x7fa3b697,
+  0x7fa33dcd, 0x7fa2c4b5, 0x7fa24b4d, 0x7fa1d197, 0x7fa15792, 0x7fa0dd3f,
+    0x7fa0629c, 0x7f9fe7ab,
+  0x7f9f6c6b, 0x7f9ef0dd, 0x7f9e7500, 0x7f9df8d4, 0x7f9d7c59, 0x7f9cff90,
+    0x7f9c8278, 0x7f9c0511,
+  0x7f9b875b, 0x7f9b0957, 0x7f9a8b04, 0x7f9a0c62, 0x7f998d72, 0x7f990e33,
+    0x7f988ea5, 0x7f980ec8,
+  0x7f978e9d, 0x7f970e23, 0x7f968d5b, 0x7f960c43, 0x7f958add, 0x7f950929,
+    0x7f948725, 0x7f9404d3,
+  0x7f938232, 0x7f92ff43, 0x7f927c04, 0x7f91f878, 0x7f91749c, 0x7f90f072,
+    0x7f906bf9, 0x7f8fe731,
+  0x7f8f621b, 0x7f8edcb6, 0x7f8e5702, 0x7f8dd0ff, 0x7f8d4aae, 0x7f8cc40f,
+    0x7f8c3d20, 0x7f8bb5e3,
+  0x7f8b2e57, 0x7f8aa67d, 0x7f8a1e54, 0x7f8995dc, 0x7f890d15, 0x7f888400,
+    0x7f87fa9c, 0x7f8770ea,
+  0x7f86e6e9, 0x7f865c99, 0x7f85d1fa, 0x7f85470d, 0x7f84bbd1, 0x7f843047,
+    0x7f83a46e, 0x7f831846,
+  0x7f828bcf, 0x7f81ff0a, 0x7f8171f6, 0x7f80e494, 0x7f8056e3, 0x7f7fc8e3,
+    0x7f7f3a95, 0x7f7eabf8,
+  0x7f7e1d0c, 0x7f7d8dd2, 0x7f7cfe49, 0x7f7c6e71, 0x7f7bde4b, 0x7f7b4dd6,
+    0x7f7abd13, 0x7f7a2c01,
+  0x7f799aa0, 0x7f7908f0, 0x7f7876f2, 0x7f77e4a6, 0x7f77520a, 0x7f76bf21,
+    0x7f762be8, 0x7f759861,
+  0x7f75048b, 0x7f747067, 0x7f73dbf4, 0x7f734732, 0x7f72b222, 0x7f721cc3,
+    0x7f718715, 0x7f70f119,
+  0x7f705ace, 0x7f6fc435, 0x7f6f2d4d, 0x7f6e9617, 0x7f6dfe91, 0x7f6d66be,
+    0x7f6cce9b, 0x7f6c362a,
+  0x7f6b9d6b, 0x7f6b045d, 0x7f6a6b00, 0x7f69d154, 0x7f69375a, 0x7f689d12,
+    0x7f68027b, 0x7f676795,
+  0x7f66cc61, 0x7f6630de, 0x7f65950c, 0x7f64f8ec, 0x7f645c7d, 0x7f63bfc0,
+    0x7f6322b4, 0x7f62855a,
+  0x7f61e7b1, 0x7f6149b9, 0x7f60ab73, 0x7f600cdf, 0x7f5f6dfb, 0x7f5ecec9,
+    0x7f5e2f49, 0x7f5d8f7a,
+  0x7f5cef5c, 0x7f5c4ef0, 0x7f5bae36, 0x7f5b0d2c, 0x7f5a6bd5, 0x7f59ca2e,
+    0x7f592839, 0x7f5885f6,
+  0x7f57e364, 0x7f574083, 0x7f569d54, 0x7f55f9d6, 0x7f55560a, 0x7f54b1ef,
+    0x7f540d86, 0x7f5368ce,
+  0x7f52c3c8, 0x7f521e73, 0x7f5178cf, 0x7f50d2dd, 0x7f502c9d, 0x7f4f860e,
+    0x7f4edf30, 0x7f4e3804,
+  0x7f4d9089, 0x7f4ce8c0, 0x7f4c40a8, 0x7f4b9842, 0x7f4aef8d, 0x7f4a468a,
+    0x7f499d38, 0x7f48f398,
+  0x7f4849a9, 0x7f479f6c, 0x7f46f4e0, 0x7f464a06, 0x7f459edd, 0x7f44f365,
+    0x7f44479f, 0x7f439b8b,
+  0x7f42ef28, 0x7f424277, 0x7f419577, 0x7f40e828, 0x7f403a8b, 0x7f3f8ca0,
+    0x7f3ede66, 0x7f3e2fde,
+  0x7f3d8107, 0x7f3cd1e2, 0x7f3c226e, 0x7f3b72ab, 0x7f3ac29b, 0x7f3a123b,
+    0x7f39618e, 0x7f38b091,
+  0x7f37ff47, 0x7f374dad, 0x7f369bc6, 0x7f35e990, 0x7f35370b, 0x7f348438,
+    0x7f33d116, 0x7f331da6,
+  0x7f3269e8, 0x7f31b5db, 0x7f31017f, 0x7f304cd6, 0x7f2f97dd, 0x7f2ee296,
+    0x7f2e2d01, 0x7f2d771e,
+  0x7f2cc0eb, 0x7f2c0a6b, 0x7f2b539c, 0x7f2a9c7e, 0x7f29e512, 0x7f292d58,
+    0x7f28754f, 0x7f27bcf8,
+  0x7f270452, 0x7f264b5e, 0x7f25921c, 0x7f24d88b, 0x7f241eab, 0x7f23647e,
+    0x7f22aa01, 0x7f21ef37,
+  0x7f21341e, 0x7f2078b6, 0x7f1fbd00, 0x7f1f00fc, 0x7f1e44a9, 0x7f1d8808,
+    0x7f1ccb18, 0x7f1c0dda,
+  0x7f1b504e, 0x7f1a9273, 0x7f19d44a, 0x7f1915d2, 0x7f18570c, 0x7f1797f8,
+    0x7f16d895, 0x7f1618e4,
+  0x7f1558e4, 0x7f149896, 0x7f13d7fa, 0x7f13170f, 0x7f1255d6, 0x7f11944f,
+    0x7f10d279, 0x7f101054,
+  0x7f0f4de2, 0x7f0e8b21, 0x7f0dc811, 0x7f0d04b3, 0x7f0c4107, 0x7f0b7d0d,
+    0x7f0ab8c4, 0x7f09f42d,
+  0x7f092f47, 0x7f086a13, 0x7f07a491, 0x7f06dec0, 0x7f0618a1, 0x7f055233,
+    0x7f048b78, 0x7f03c46d,
+  0x7f02fd15, 0x7f02356e, 0x7f016d79, 0x7f00a535, 0x7effdca4, 0x7eff13c3,
+    0x7efe4a95, 0x7efd8118,
+  0x7efcb74d, 0x7efbed33, 0x7efb22cb, 0x7efa5815, 0x7ef98d11, 0x7ef8c1be,
+    0x7ef7f61d, 0x7ef72a2d,
+  0x7ef65def, 0x7ef59163, 0x7ef4c489, 0x7ef3f760, 0x7ef329e9, 0x7ef25c24,
+    0x7ef18e10, 0x7ef0bfae,
+  0x7eeff0fe, 0x7eef21ff, 0x7eee52b2, 0x7eed8317, 0x7eecb32d, 0x7eebe2f6,
+    0x7eeb1270, 0x7eea419b,
+  0x7ee97079, 0x7ee89f08, 0x7ee7cd49, 0x7ee6fb3b, 0x7ee628df, 0x7ee55635,
+    0x7ee4833d, 0x7ee3aff6,
+  0x7ee2dc61, 0x7ee2087e, 0x7ee1344d, 0x7ee05fcd, 0x7edf8aff, 0x7edeb5e3,
+    0x7edde079, 0x7edd0ac0,
+  0x7edc34b9, 0x7edb5e64, 0x7eda87c0, 0x7ed9b0ce, 0x7ed8d98e, 0x7ed80200,
+    0x7ed72a24, 0x7ed651f9,
+  0x7ed57980, 0x7ed4a0b9, 0x7ed3c7a3, 0x7ed2ee40, 0x7ed2148e, 0x7ed13a8e,
+    0x7ed0603f, 0x7ecf85a3,
+  0x7eceaab8, 0x7ecdcf7f, 0x7eccf3f8, 0x7ecc1822, 0x7ecb3bff, 0x7eca5f8d,
+    0x7ec982cd, 0x7ec8a5bf,
+  0x7ec7c862, 0x7ec6eab7, 0x7ec60cbe, 0x7ec52e77, 0x7ec44fe2, 0x7ec370fe,
+    0x7ec291cd, 0x7ec1b24d,
+  0x7ec0d27f, 0x7ebff263, 0x7ebf11f8, 0x7ebe313f, 0x7ebd5039, 0x7ebc6ee4,
+    0x7ebb8d40, 0x7ebaab4f,
+  0x7eb9c910, 0x7eb8e682, 0x7eb803a6, 0x7eb7207c, 0x7eb63d04, 0x7eb5593d,
+    0x7eb47529, 0x7eb390c6,
+  0x7eb2ac15, 0x7eb1c716, 0x7eb0e1c9, 0x7eaffc2e, 0x7eaf1645, 0x7eae300d,
+    0x7ead4987, 0x7eac62b3,
+  0x7eab7b91, 0x7eaa9421, 0x7ea9ac63, 0x7ea8c457, 0x7ea7dbfc, 0x7ea6f353,
+    0x7ea60a5d, 0x7ea52118,
+  0x7ea43785, 0x7ea34da4, 0x7ea26374, 0x7ea178f7, 0x7ea08e2b, 0x7e9fa312,
+    0x7e9eb7aa, 0x7e9dcbf4,
+  0x7e9cdff0, 0x7e9bf39e, 0x7e9b06fe, 0x7e9a1a10, 0x7e992cd4, 0x7e983f49,
+    0x7e975171, 0x7e96634a,
+  0x7e9574d6, 0x7e948613, 0x7e939702, 0x7e92a7a3, 0x7e91b7f6, 0x7e90c7fb,
+    0x7e8fd7b2, 0x7e8ee71b,
+  0x7e8df636, 0x7e8d0502, 0x7e8c1381, 0x7e8b21b1, 0x7e8a2f94, 0x7e893d28,
+    0x7e884a6f, 0x7e875767,
+  0x7e866411, 0x7e85706d, 0x7e847c7c, 0x7e83883c, 0x7e8293ae, 0x7e819ed2,
+    0x7e80a9a8, 0x7e7fb430,
+  0x7e7ebe6a, 0x7e7dc856, 0x7e7cd1f4, 0x7e7bdb44, 0x7e7ae446, 0x7e79ecf9,
+    0x7e78f55f, 0x7e77fd77,
+  0x7e770541, 0x7e760cbd, 0x7e7513ea, 0x7e741aca, 0x7e73215c, 0x7e7227a0,
+    0x7e712d96, 0x7e70333d,
+  0x7e6f3897, 0x7e6e3da3, 0x7e6d4261, 0x7e6c46d1, 0x7e6b4af2, 0x7e6a4ec6,
+    0x7e69524c, 0x7e685584,
+  0x7e67586e, 0x7e665b0a, 0x7e655d58, 0x7e645f58, 0x7e63610a, 0x7e62626e,
+    0x7e616384, 0x7e60644c,
+  0x7e5f64c7, 0x7e5e64f3, 0x7e5d64d1, 0x7e5c6461, 0x7e5b63a4, 0x7e5a6298,
+    0x7e59613f, 0x7e585f97,
+  0x7e575da2, 0x7e565b5f, 0x7e5558ce, 0x7e5455ef, 0x7e5352c1, 0x7e524f46,
+    0x7e514b7e, 0x7e504767,
+  0x7e4f4302, 0x7e4e3e4f, 0x7e4d394f, 0x7e4c3400, 0x7e4b2e64, 0x7e4a287a,
+    0x7e492241, 0x7e481bbb,
+  0x7e4714e7, 0x7e460dc5, 0x7e450656, 0x7e43fe98, 0x7e42f68c, 0x7e41ee33,
+    0x7e40e58c, 0x7e3fdc97,
+  0x7e3ed353, 0x7e3dc9c3, 0x7e3cbfe4, 0x7e3bb5b7, 0x7e3aab3c, 0x7e39a074,
+    0x7e38955e, 0x7e3789fa,
+  0x7e367e48, 0x7e357248, 0x7e3465fa, 0x7e33595e, 0x7e324c75, 0x7e313f3e,
+    0x7e3031b9, 0x7e2f23e6,
+  0x7e2e15c5, 0x7e2d0756, 0x7e2bf89a, 0x7e2ae990, 0x7e29da38, 0x7e28ca92,
+    0x7e27ba9e, 0x7e26aa5d,
+  0x7e2599cd, 0x7e2488f0, 0x7e2377c5, 0x7e22664c, 0x7e215486, 0x7e204271,
+    0x7e1f300f, 0x7e1e1d5f,
+  0x7e1d0a61, 0x7e1bf716, 0x7e1ae37c, 0x7e19cf95, 0x7e18bb60, 0x7e17a6dd,
+    0x7e16920d, 0x7e157cee,
+  0x7e146782, 0x7e1351c9, 0x7e123bc1, 0x7e11256c, 0x7e100ec8, 0x7e0ef7d7,
+    0x7e0de099, 0x7e0cc90c,
+  0x7e0bb132, 0x7e0a990a, 0x7e098095, 0x7e0867d1, 0x7e074ec0, 0x7e063561,
+    0x7e051bb4, 0x7e0401ba,
+  0x7e02e772, 0x7e01ccdc, 0x7e00b1f9, 0x7dff96c7, 0x7dfe7b48, 0x7dfd5f7b,
+    0x7dfc4361, 0x7dfb26f9,
+  0x7dfa0a43, 0x7df8ed3f, 0x7df7cfee, 0x7df6b24f, 0x7df59462, 0x7df47628,
+    0x7df357a0, 0x7df238ca,
+  0x7df119a7, 0x7deffa35, 0x7deeda77, 0x7dedba6a, 0x7dec9a10, 0x7deb7968,
+    0x7dea5872, 0x7de9372f,
+  0x7de8159e, 0x7de6f3c0, 0x7de5d193, 0x7de4af1a, 0x7de38c52, 0x7de2693d,
+    0x7de145da, 0x7de02229,
+  0x7ddefe2b, 0x7dddd9e0, 0x7ddcb546, 0x7ddb905f, 0x7dda6b2a, 0x7dd945a8,
+    0x7dd81fd8, 0x7dd6f9ba,
+  0x7dd5d34f, 0x7dd4ac96, 0x7dd38590, 0x7dd25e3c, 0x7dd1369a, 0x7dd00eab,
+    0x7dcee66e, 0x7dcdbde3,
+  0x7dcc950b, 0x7dcb6be6, 0x7dca4272, 0x7dc918b1, 0x7dc7eea3, 0x7dc6c447,
+    0x7dc5999d, 0x7dc46ea6,
+  0x7dc34361, 0x7dc217cf, 0x7dc0ebef, 0x7dbfbfc1, 0x7dbe9346, 0x7dbd667d,
+    0x7dbc3967, 0x7dbb0c03,
+  0x7db9de52, 0x7db8b053, 0x7db78207, 0x7db6536d, 0x7db52485, 0x7db3f550,
+    0x7db2c5cd, 0x7db195fd,
+  0x7db065df, 0x7daf3574, 0x7dae04bb, 0x7dacd3b5, 0x7daba261, 0x7daa70c0,
+    0x7da93ed1, 0x7da80c95,
+  0x7da6da0b, 0x7da5a733, 0x7da4740e, 0x7da3409c, 0x7da20cdc, 0x7da0d8cf,
+    0x7d9fa474, 0x7d9e6fcb,
+  0x7d9d3ad6, 0x7d9c0592, 0x7d9ad001, 0x7d999a23, 0x7d9863f7, 0x7d972d7e,
+    0x7d95f6b7, 0x7d94bfa3,
+  0x7d938841, 0x7d925092, 0x7d911896, 0x7d8fe04c, 0x7d8ea7b4, 0x7d8d6ecf,
+    0x7d8c359d, 0x7d8afc1d,
+  0x7d89c250, 0x7d888835, 0x7d874dcd, 0x7d861317, 0x7d84d814, 0x7d839cc4,
+    0x7d826126, 0x7d81253a,
+  0x7d7fe902, 0x7d7eac7c, 0x7d7d6fa8, 0x7d7c3287, 0x7d7af519, 0x7d79b75d,
+    0x7d787954, 0x7d773afd,
+  0x7d75fc59, 0x7d74bd68, 0x7d737e29, 0x7d723e9d, 0x7d70fec4, 0x7d6fbe9d,
+    0x7d6e7e29, 0x7d6d3d67,
+  0x7d6bfc58, 0x7d6abafc, 0x7d697952, 0x7d68375b, 0x7d66f517, 0x7d65b285,
+    0x7d646fa6, 0x7d632c79,
+  0x7d61e8ff, 0x7d60a538, 0x7d5f6124, 0x7d5e1cc2, 0x7d5cd813, 0x7d5b9316,
+    0x7d5a4dcc, 0x7d590835,
+  0x7d57c251, 0x7d567c1f, 0x7d5535a0, 0x7d53eed3, 0x7d52a7ba, 0x7d516053,
+    0x7d50189e, 0x7d4ed09d,
+  0x7d4d884e, 0x7d4c3fb1, 0x7d4af6c8, 0x7d49ad91, 0x7d48640d, 0x7d471a3c,
+    0x7d45d01d, 0x7d4485b1,
+  0x7d433af8, 0x7d41eff1, 0x7d40a49e, 0x7d3f58fd, 0x7d3e0d0e, 0x7d3cc0d3,
+    0x7d3b744a, 0x7d3a2774,
+  0x7d38da51, 0x7d378ce0, 0x7d363f23, 0x7d34f118, 0x7d33a2bf, 0x7d32541a,
+    0x7d310527, 0x7d2fb5e7,
+  0x7d2e665a, 0x7d2d1680, 0x7d2bc659, 0x7d2a75e4, 0x7d292522, 0x7d27d413,
+    0x7d2682b6, 0x7d25310d,
+  0x7d23df16, 0x7d228cd2, 0x7d213a41, 0x7d1fe762, 0x7d1e9437, 0x7d1d40be,
+    0x7d1becf8, 0x7d1a98e5,
+  0x7d194485, 0x7d17efd8, 0x7d169add, 0x7d154595, 0x7d13f001, 0x7d129a1f,
+    0x7d1143ef, 0x7d0fed73,
+  0x7d0e96aa, 0x7d0d3f93, 0x7d0be82f, 0x7d0a907e, 0x7d093880, 0x7d07e035,
+    0x7d06879d, 0x7d052eb8,
+  0x7d03d585, 0x7d027c05, 0x7d012239, 0x7cffc81f, 0x7cfe6db8, 0x7cfd1304,
+    0x7cfbb803, 0x7cfa5cb4,
+  0x7cf90119, 0x7cf7a531, 0x7cf648fb, 0x7cf4ec79, 0x7cf38fa9, 0x7cf2328c,
+    0x7cf0d522, 0x7cef776b,
+  0x7cee1967, 0x7cecbb16, 0x7ceb5c78, 0x7ce9fd8d, 0x7ce89e55, 0x7ce73ed0,
+    0x7ce5defd, 0x7ce47ede,
+  0x7ce31e72, 0x7ce1bdb8, 0x7ce05cb2, 0x7cdefb5e, 0x7cdd99be, 0x7cdc37d0,
+    0x7cdad596, 0x7cd9730e,
+  0x7cd8103a, 0x7cd6ad18, 0x7cd549aa, 0x7cd3e5ee, 0x7cd281e5, 0x7cd11d90,
+    0x7ccfb8ed, 0x7cce53fe,
+  0x7ccceec1, 0x7ccb8937, 0x7cca2361, 0x7cc8bd3d, 0x7cc756cd, 0x7cc5f010,
+    0x7cc48905, 0x7cc321ae,
+  0x7cc1ba09, 0x7cc05218, 0x7cbee9da, 0x7cbd814f, 0x7cbc1877, 0x7cbaaf51,
+    0x7cb945df, 0x7cb7dc20,
+  0x7cb67215, 0x7cb507bc, 0x7cb39d16, 0x7cb23223, 0x7cb0c6e4, 0x7caf5b57,
+    0x7cadef7e, 0x7cac8358,
+  0x7cab16e4, 0x7ca9aa24, 0x7ca83d17, 0x7ca6cfbd, 0x7ca56216, 0x7ca3f423,
+    0x7ca285e2, 0x7ca11755,
+  0x7c9fa87a, 0x7c9e3953, 0x7c9cc9df, 0x7c9b5a1e, 0x7c99ea10, 0x7c9879b6,
+    0x7c97090e, 0x7c95981a,
+  0x7c9426d8, 0x7c92b54a, 0x7c91436f, 0x7c8fd148, 0x7c8e5ed3, 0x7c8cec12,
+    0x7c8b7903, 0x7c8a05a8,
+  0x7c889200, 0x7c871e0c, 0x7c85a9ca, 0x7c84353c, 0x7c82c060, 0x7c814b39,
+    0x7c7fd5c4, 0x7c7e6002,
+  0x7c7ce9f4, 0x7c7b7399, 0x7c79fcf1, 0x7c7885fc, 0x7c770eba, 0x7c75972c,
+    0x7c741f51, 0x7c72a729,
+  0x7c712eb5, 0x7c6fb5f3, 0x7c6e3ce5, 0x7c6cc38a, 0x7c6b49e3, 0x7c69cfee,
+    0x7c6855ad, 0x7c66db1f,
+  0x7c656045, 0x7c63e51e, 0x7c6269aa, 0x7c60ede9, 0x7c5f71db, 0x7c5df581,
+    0x7c5c78da, 0x7c5afbe6,
+  0x7c597ea6, 0x7c580119, 0x7c56833f, 0x7c550519, 0x7c5386a6, 0x7c5207e6,
+    0x7c5088d9, 0x7c4f0980,
+  0x7c4d89da, 0x7c4c09e8, 0x7c4a89a8, 0x7c49091c, 0x7c478844, 0x7c46071f,
+    0x7c4485ad, 0x7c4303ee,
+  0x7c4181e3, 0x7c3fff8b, 0x7c3e7ce7, 0x7c3cf9f5, 0x7c3b76b8, 0x7c39f32d,
+    0x7c386f56, 0x7c36eb33,
+  0x7c3566c2, 0x7c33e205, 0x7c325cfc, 0x7c30d7a6, 0x7c2f5203, 0x7c2dcc14,
+    0x7c2c45d8, 0x7c2abf4f,
+  0x7c29387a, 0x7c27b158, 0x7c2629ea, 0x7c24a22f, 0x7c231a28, 0x7c2191d4,
+    0x7c200933, 0x7c1e8046,
+  0x7c1cf70c, 0x7c1b6d86, 0x7c19e3b3, 0x7c185994, 0x7c16cf28, 0x7c15446f,
+    0x7c13b96a, 0x7c122e19,
+  0x7c10a27b, 0x7c0f1690, 0x7c0d8a59, 0x7c0bfdd5, 0x7c0a7105, 0x7c08e3e8,
+    0x7c07567f, 0x7c05c8c9,
+  0x7c043ac7, 0x7c02ac78, 0x7c011ddd, 0x7bff8ef5, 0x7bfdffc1, 0x7bfc7041,
+    0x7bfae073, 0x7bf9505a,
+  0x7bf7bff4, 0x7bf62f41, 0x7bf49e42, 0x7bf30cf6, 0x7bf17b5e, 0x7befe97a,
+    0x7bee5749, 0x7becc4cc,
+  0x7beb3202, 0x7be99eec, 0x7be80b89, 0x7be677da, 0x7be4e3df, 0x7be34f97,
+    0x7be1bb02, 0x7be02621,
+  0x7bde90f4, 0x7bdcfb7b, 0x7bdb65b5, 0x7bd9cfa2, 0x7bd83944, 0x7bd6a298,
+    0x7bd50ba1, 0x7bd3745d,
+  0x7bd1dccc, 0x7bd044f0, 0x7bceacc7, 0x7bcd1451, 0x7bcb7b8f, 0x7bc9e281,
+    0x7bc84927, 0x7bc6af80,
+  0x7bc5158c, 0x7bc37b4d, 0x7bc1e0c1, 0x7bc045e9, 0x7bbeaac4, 0x7bbd0f53,
+    0x7bbb7396, 0x7bb9d78c,
+  0x7bb83b36, 0x7bb69e94, 0x7bb501a5, 0x7bb3646a, 0x7bb1c6e3, 0x7bb02910,
+    0x7bae8af0, 0x7bacec84,
+  0x7bab4dcc, 0x7ba9aec7, 0x7ba80f76, 0x7ba66fd9, 0x7ba4cfef, 0x7ba32fba,
+    0x7ba18f38, 0x7b9fee69,
+  0x7b9e4d4f, 0x7b9cabe8, 0x7b9b0a35, 0x7b996836, 0x7b97c5ea, 0x7b962352,
+    0x7b94806e, 0x7b92dd3e,
+  0x7b9139c2, 0x7b8f95f9, 0x7b8df1e4, 0x7b8c4d83, 0x7b8aa8d6, 0x7b8903dc,
+    0x7b875e96, 0x7b85b904,
+  0x7b841326, 0x7b826cfc, 0x7b80c686, 0x7b7f1fc3, 0x7b7d78b4, 0x7b7bd159,
+    0x7b7a29b2, 0x7b7881be,
+  0x7b76d97f, 0x7b7530f3, 0x7b73881b, 0x7b71def7, 0x7b703587, 0x7b6e8bcb,
+    0x7b6ce1c2, 0x7b6b376e,
+  0x7b698ccd, 0x7b67e1e0, 0x7b6636a7, 0x7b648b22, 0x7b62df51, 0x7b613334,
+    0x7b5f86ca, 0x7b5dda15,
+  0x7b5c2d13, 0x7b5a7fc6, 0x7b58d22c, 0x7b572446, 0x7b557614, 0x7b53c796,
+    0x7b5218cc, 0x7b5069b6,
+  0x7b4eba53, 0x7b4d0aa5, 0x7b4b5aab, 0x7b49aa64, 0x7b47f9d2, 0x7b4648f3,
+    0x7b4497c9, 0x7b42e652,
+  0x7b413490, 0x7b3f8281, 0x7b3dd026, 0x7b3c1d80, 0x7b3a6a8d, 0x7b38b74e,
+    0x7b3703c3, 0x7b354fed,
+  0x7b339bca, 0x7b31e75b, 0x7b3032a0, 0x7b2e7d9a, 0x7b2cc847, 0x7b2b12a8,
+    0x7b295cbe, 0x7b27a687,
+  0x7b25f004, 0x7b243936, 0x7b22821b, 0x7b20cab5, 0x7b1f1302, 0x7b1d5b04,
+    0x7b1ba2b9, 0x7b19ea23,
+  0x7b183141, 0x7b167813, 0x7b14be99, 0x7b1304d3, 0x7b114ac1, 0x7b0f9063,
+    0x7b0dd5b9, 0x7b0c1ac4,
+  0x7b0a5f82, 0x7b08a3f5, 0x7b06e81b, 0x7b052bf6, 0x7b036f85, 0x7b01b2c8,
+    0x7afff5bf, 0x7afe386a,
+  0x7afc7aca, 0x7afabcdd, 0x7af8fea5, 0x7af74021, 0x7af58151, 0x7af3c235,
+    0x7af202cd, 0x7af0431a,
+  0x7aee831a, 0x7aecc2cf, 0x7aeb0238, 0x7ae94155, 0x7ae78026, 0x7ae5beac,
+    0x7ae3fce6, 0x7ae23ad4,
+  0x7ae07876, 0x7adeb5cc, 0x7adcf2d6, 0x7adb2f95, 0x7ad96c08, 0x7ad7a82f,
+    0x7ad5e40a, 0x7ad41f9a,
+  0x7ad25ade, 0x7ad095d6, 0x7aced082, 0x7acd0ae3, 0x7acb44f8, 0x7ac97ec1,
+    0x7ac7b83e, 0x7ac5f170,
+  0x7ac42a55, 0x7ac262ef, 0x7ac09b3e, 0x7abed341, 0x7abd0af7, 0x7abb4263,
+    0x7ab97982, 0x7ab7b056,
+  0x7ab5e6de, 0x7ab41d1b, 0x7ab2530b, 0x7ab088b0, 0x7aaebe0a, 0x7aacf318,
+    0x7aab27da, 0x7aa95c50,
+  0x7aa7907b, 0x7aa5c45a, 0x7aa3f7ed, 0x7aa22b35, 0x7aa05e31, 0x7a9e90e1,
+    0x7a9cc346, 0x7a9af55f,
+  0x7a99272d, 0x7a9758af, 0x7a9589e5, 0x7a93bad0, 0x7a91eb6f, 0x7a901bc2,
+    0x7a8e4bca, 0x7a8c7b87,
+  0x7a8aaaf7, 0x7a88da1c, 0x7a8708f6, 0x7a853784, 0x7a8365c6, 0x7a8193bd,
+    0x7a7fc168, 0x7a7deec8,
+  0x7a7c1bdc, 0x7a7a48a4, 0x7a787521, 0x7a76a153, 0x7a74cd38, 0x7a72f8d3,
+    0x7a712422, 0x7a6f4f25,
+  0x7a6d79dd, 0x7a6ba449, 0x7a69ce6a, 0x7a67f83f, 0x7a6621c9, 0x7a644b07,
+    0x7a6273fa, 0x7a609ca1,
+  0x7a5ec4fc, 0x7a5ced0d, 0x7a5b14d1, 0x7a593c4b, 0x7a576379, 0x7a558a5b,
+    0x7a53b0f2, 0x7a51d73d,
+  0x7a4ffd3d, 0x7a4e22f2, 0x7a4c485b, 0x7a4a6d78, 0x7a48924b, 0x7a46b6d1,
+    0x7a44db0d, 0x7a42fefd,
+  0x7a4122a1, 0x7a3f45fa, 0x7a3d6908, 0x7a3b8bca, 0x7a39ae41, 0x7a37d06d,
+    0x7a35f24d, 0x7a3413e2,
+  0x7a32352b, 0x7a305629, 0x7a2e76dc, 0x7a2c9743, 0x7a2ab75f, 0x7a28d72f,
+    0x7a26f6b4, 0x7a2515ee,
+  0x7a2334dd, 0x7a215380, 0x7a1f71d7, 0x7a1d8fe4, 0x7a1bada5, 0x7a19cb1b,
+    0x7a17e845, 0x7a160524,
+  0x7a1421b8, 0x7a123e01, 0x7a1059fe, 0x7a0e75b0, 0x7a0c9117, 0x7a0aac32,
+    0x7a08c702, 0x7a06e187,
+  0x7a04fbc1, 0x7a0315af, 0x7a012f52, 0x79ff48aa, 0x79fd61b6, 0x79fb7a77,
+    0x79f992ed, 0x79f7ab18,
+  0x79f5c2f8, 0x79f3da8c, 0x79f1f1d5, 0x79f008d3, 0x79ee1f86, 0x79ec35ed,
+    0x79ea4c09, 0x79e861da,
+  0x79e67760, 0x79e48c9b, 0x79e2a18a, 0x79e0b62e, 0x79deca87, 0x79dcde95,
+    0x79daf258, 0x79d905d0,
+  0x79d718fc, 0x79d52bdd, 0x79d33e73, 0x79d150be, 0x79cf62be, 0x79cd7473,
+    0x79cb85dc, 0x79c996fb,
+  0x79c7a7ce, 0x79c5b856, 0x79c3c893, 0x79c1d885, 0x79bfe82c, 0x79bdf788,
+    0x79bc0698, 0x79ba155e,
+  0x79b823d8, 0x79b63207, 0x79b43fec, 0x79b24d85, 0x79b05ad3, 0x79ae67d6,
+    0x79ac748e, 0x79aa80fb,
+  0x79a88d1d, 0x79a698f4, 0x79a4a480, 0x79a2afc1, 0x79a0bab6, 0x799ec561,
+    0x799ccfc1, 0x799ad9d5,
+  0x7998e39f, 0x7996ed1e, 0x7994f651, 0x7992ff3a, 0x799107d8, 0x798f102a,
+    0x798d1832, 0x798b1fef,
+  0x79892761, 0x79872e87, 0x79853563, 0x79833bf4, 0x7981423a, 0x797f4835,
+    0x797d4de5, 0x797b534a,
+  0x79795864, 0x79775d33, 0x797561b8, 0x797365f1, 0x797169df, 0x796f6d83,
+    0x796d70dc, 0x796b73e9,
+  0x796976ac, 0x79677924, 0x79657b51, 0x79637d33, 0x79617eca, 0x795f8017,
+    0x795d8118, 0x795b81cf,
+  0x7959823b, 0x7957825c, 0x79558232, 0x795381bd, 0x795180fe, 0x794f7ff3,
+    0x794d7e9e, 0x794b7cfe,
+  0x79497b13, 0x794778dd, 0x7945765d, 0x79437391, 0x7941707b, 0x793f6d1a,
+    0x793d696f, 0x793b6578,
+  0x79396137, 0x79375cab, 0x793557d4, 0x793352b2, 0x79314d46, 0x792f478f,
+    0x792d418d, 0x792b3b40,
+  0x792934a9, 0x79272dc7, 0x7925269a, 0x79231f22, 0x79211760, 0x791f0f53,
+    0x791d06fb, 0x791afe59,
+  0x7918f56c, 0x7916ec34, 0x7914e2b2, 0x7912d8e4, 0x7910cecc, 0x790ec46a,
+    0x790cb9bd, 0x790aaec5,
+  0x7908a382, 0x790697f5, 0x79048c1d, 0x79027ffa, 0x7900738d, 0x78fe66d5,
+    0x78fc59d3, 0x78fa4c86,
+  0x78f83eee, 0x78f6310c, 0x78f422df, 0x78f21467, 0x78f005a5, 0x78edf698,
+    0x78ebe741, 0x78e9d79f,
+  0x78e7c7b2, 0x78e5b77b, 0x78e3a6f9, 0x78e1962d, 0x78df8516, 0x78dd73b5,
+    0x78db6209, 0x78d95012,
+  0x78d73dd1, 0x78d52b46, 0x78d31870, 0x78d1054f, 0x78cef1e4, 0x78ccde2e,
+    0x78caca2e, 0x78c8b5e3,
+  0x78c6a14e, 0x78c48c6e, 0x78c27744, 0x78c061cf, 0x78be4c10, 0x78bc3606,
+    0x78ba1fb2, 0x78b80913,
+  0x78b5f22a, 0x78b3daf7, 0x78b1c379, 0x78afabb0, 0x78ad939d, 0x78ab7b40,
+    0x78a96298, 0x78a749a6,
+  0x78a53069, 0x78a316e2, 0x78a0fd11, 0x789ee2f5, 0x789cc88f, 0x789aadde,
+    0x789892e3, 0x7896779d,
+  0x78945c0d, 0x78924033, 0x7890240e, 0x788e07a0, 0x788beae6, 0x7889cde2,
+    0x7887b094, 0x788592fc,
+  0x78837519, 0x788156ec, 0x787f3875, 0x787d19b3, 0x787afaa7, 0x7878db50,
+    0x7876bbb0, 0x78749bc5,
+  0x78727b8f, 0x78705b10, 0x786e3a46, 0x786c1932, 0x7869f7d3, 0x7867d62a,
+    0x7865b437, 0x786391fa,
+  0x78616f72, 0x785f4ca1, 0x785d2984, 0x785b061e, 0x7858e26e, 0x7856be73,
+    0x78549a2e, 0x7852759e,
+  0x785050c5, 0x784e2ba1, 0x784c0633, 0x7849e07b, 0x7847ba79, 0x7845942c,
+    0x78436d96, 0x784146b5,
+  0x783f1f8a, 0x783cf815, 0x783ad055, 0x7838a84c, 0x78367ff8, 0x7834575a,
+    0x78322e72, 0x78300540,
+  0x782ddbc4, 0x782bb1fd, 0x782987ed, 0x78275d92, 0x782532ed, 0x782307fe,
+    0x7820dcc5, 0x781eb142,
+  0x781c8575, 0x781a595d, 0x78182cfc, 0x78160051, 0x7813d35b, 0x7811a61b,
+    0x780f7892, 0x780d4abe,
+  0x780b1ca0, 0x7808ee38, 0x7806bf86, 0x7804908a, 0x78026145, 0x780031b5,
+    0x77fe01db, 0x77fbd1b6,
+  0x77f9a148, 0x77f77090, 0x77f53f8e, 0x77f30e42, 0x77f0dcac, 0x77eeaacc,
+    0x77ec78a2, 0x77ea462e,
+  0x77e81370, 0x77e5e068, 0x77e3ad17, 0x77e1797b, 0x77df4595, 0x77dd1165,
+    0x77dadcec, 0x77d8a828,
+  0x77d6731a, 0x77d43dc3, 0x77d20822, 0x77cfd236, 0x77cd9c01, 0x77cb6582,
+    0x77c92eb9, 0x77c6f7a6,
+  0x77c4c04a, 0x77c288a3, 0x77c050b2, 0x77be1878, 0x77bbdff4, 0x77b9a726,
+    0x77b76e0e, 0x77b534ac,
+  0x77b2fb00, 0x77b0c10b, 0x77ae86cc, 0x77ac4c43, 0x77aa1170, 0x77a7d653,
+    0x77a59aec, 0x77a35f3c,
+  0x77a12342, 0x779ee6fe, 0x779caa70, 0x779a6d99, 0x77983077, 0x7795f30c,
+    0x7793b557, 0x77917759,
+  0x778f3910, 0x778cfa7e, 0x778abba2, 0x77887c7d, 0x77863d0d, 0x7783fd54,
+    0x7781bd52, 0x777f7d05,
+  0x777d3c6f, 0x777afb8f, 0x7778ba65, 0x777678f2, 0x77743735, 0x7771f52e,
+    0x776fb2de, 0x776d7044,
+  0x776b2d60, 0x7768ea33, 0x7766a6bc, 0x776462fb, 0x77621ef1, 0x775fda9d,
+    0x775d95ff, 0x775b5118,
+  0x77590be7, 0x7756c66c, 0x775480a8, 0x77523a9b, 0x774ff443, 0x774dada2,
+    0x774b66b8, 0x77491f84,
+  0x7746d806, 0x7744903f, 0x7742482e, 0x773fffd4, 0x773db730, 0x773b6e42,
+    0x7739250b, 0x7736db8b,
+  0x773491c0, 0x773247ad, 0x772ffd50, 0x772db2a9, 0x772b67b9, 0x77291c7f,
+    0x7726d0fc, 0x7724852f,
+  0x77223919, 0x771fecb9, 0x771da010, 0x771b531d, 0x771905e1, 0x7716b85b,
+    0x77146a8c, 0x77121c74,
+  0x770fce12, 0x770d7f66, 0x770b3072, 0x7708e133, 0x770691ab, 0x770441da,
+    0x7701f1c0, 0x76ffa15c,
+  0x76fd50ae, 0x76faffb8, 0x76f8ae78, 0x76f65cee, 0x76f40b1b, 0x76f1b8ff,
+    0x76ef6699, 0x76ed13ea,
+  0x76eac0f2, 0x76e86db0, 0x76e61a25, 0x76e3c650, 0x76e17233, 0x76df1dcb,
+    0x76dcc91b, 0x76da7421,
+  0x76d81ede, 0x76d5c952, 0x76d3737c, 0x76d11d5d, 0x76cec6f5, 0x76cc7043,
+    0x76ca1948, 0x76c7c204,
+  0x76c56a77, 0x76c312a0, 0x76c0ba80, 0x76be6217, 0x76bc0965, 0x76b9b069,
+    0x76b75724, 0x76b4fd96,
+  0x76b2a3bf, 0x76b0499e, 0x76adef34, 0x76ab9481, 0x76a93985, 0x76a6de40,
+    0x76a482b1, 0x76a226da,
+  0x769fcab9, 0x769d6e4f, 0x769b119b, 0x7698b49f, 0x76965759, 0x7693f9ca,
+    0x76919bf3, 0x768f3dd2,
+  0x768cdf67, 0x768a80b4, 0x768821b8, 0x7685c272, 0x768362e4, 0x7681030c,
+    0x767ea2eb, 0x767c4281,
+  0x7679e1ce, 0x767780d2, 0x76751f8d, 0x7672bdfe, 0x76705c27, 0x766dfa07,
+    0x766b979d, 0x766934eb,
+  0x7666d1ef, 0x76646eab, 0x76620b1d, 0x765fa747, 0x765d4327, 0x765adebe,
+    0x76587a0d, 0x76561512,
+  0x7653afce, 0x76514a42, 0x764ee46c, 0x764c7e4d, 0x764a17e6, 0x7647b135,
+    0x76454a3c, 0x7642e2f9,
+  0x76407b6e, 0x763e139a, 0x763bab7c, 0x76394316, 0x7636da67, 0x7634716f,
+    0x7632082e, 0x762f9ea4,
+  0x762d34d1, 0x762acab6, 0x76286051, 0x7625f5a3, 0x76238aad, 0x76211f6e,
+    0x761eb3e6, 0x761c4815,
+  0x7619dbfb, 0x76176f98, 0x761502ed, 0x761295f9, 0x761028bb, 0x760dbb35,
+    0x760b4d67, 0x7608df4f,
+  0x760670ee, 0x76040245, 0x76019353, 0x75ff2418, 0x75fcb495, 0x75fa44c8,
+    0x75f7d4b3, 0x75f56455,
+  0x75f2f3ae, 0x75f082bf, 0x75ee1187, 0x75eba006, 0x75e92e3c, 0x75e6bc2a,
+    0x75e449ce, 0x75e1d72b,
+  0x75df643e, 0x75dcf109, 0x75da7d8b, 0x75d809c4, 0x75d595b4, 0x75d3215c,
+    0x75d0acbc, 0x75ce37d2,
+  0x75cbc2a0, 0x75c94d25, 0x75c6d762, 0x75c46156, 0x75c1eb01, 0x75bf7464,
+    0x75bcfd7e, 0x75ba864f,
+  0x75b80ed8, 0x75b59718, 0x75b31f0f, 0x75b0a6be, 0x75ae2e25, 0x75abb542,
+    0x75a93c18, 0x75a6c2a4,
+  0x75a448e8, 0x75a1cee4, 0x759f5496, 0x759cda01, 0x759a5f22, 0x7597e3fc,
+    0x7595688c, 0x7592ecd4,
+  0x759070d4, 0x758df48b, 0x758b77fa, 0x7588fb20, 0x75867dfd, 0x75840093,
+    0x758182df, 0x757f04e3,
+  0x757c869f, 0x757a0812, 0x7577893d, 0x75750a1f, 0x75728ab9, 0x75700b0a,
+    0x756d8b13, 0x756b0ad3,
+  0x75688a4b, 0x7566097b, 0x75638862, 0x75610701, 0x755e8557, 0x755c0365,
+    0x7559812b, 0x7556fea8,
+  0x75547bdd, 0x7551f8c9, 0x754f756e, 0x754cf1c9, 0x754a6ddd, 0x7547e9a8,
+    0x7545652a, 0x7542e065,
+  0x75405b57, 0x753dd600, 0x753b5061, 0x7538ca7b, 0x7536444b, 0x7533bdd4,
+    0x75313714, 0x752eb00c,
+  0x752c28bb, 0x7529a122, 0x75271941, 0x75249118, 0x752208a7, 0x751f7fed,
+    0x751cf6eb, 0x751a6da0,
+  0x7517e40e, 0x75155a33, 0x7512d010, 0x751045a5, 0x750dbaf2, 0x750b2ff6,
+    0x7508a4b2, 0x75061926,
+  0x75038d52, 0x75010136, 0x74fe74d1, 0x74fbe825, 0x74f95b30, 0x74f6cdf3,
+    0x74f4406d, 0x74f1b2a0,
+  0x74ef248b, 0x74ec962d, 0x74ea0787, 0x74e7789a, 0x74e4e964, 0x74e259e6,
+    0x74dfca20, 0x74dd3a11,
+  0x74daa9bb, 0x74d8191d, 0x74d58836, 0x74d2f708, 0x74d06591, 0x74cdd3d2,
+    0x74cb41cc, 0x74c8af7d,
+  0x74c61ce6, 0x74c38a07, 0x74c0f6e0, 0x74be6372, 0x74bbcfbb, 0x74b93bbc,
+    0x74b6a775, 0x74b412e6,
+  0x74b17e0f, 0x74aee8f0, 0x74ac5389, 0x74a9bddb, 0x74a727e4, 0x74a491a5,
+    0x74a1fb1e, 0x749f6450,
+  0x749ccd39, 0x749a35db, 0x74979e34, 0x74950646, 0x74926e10, 0x748fd592,
+    0x748d3ccb, 0x748aa3be,
+  0x74880a68, 0x748570ca, 0x7482d6e4, 0x74803cb7, 0x747da242, 0x747b0784,
+    0x74786c7f, 0x7475d132,
+  0x7473359e, 0x747099c1, 0x746dfd9d, 0x746b6131, 0x7468c47c, 0x74662781,
+    0x74638a3d, 0x7460ecb2,
+  0x745e4ede, 0x745bb0c3, 0x74591261, 0x745673b6, 0x7453d4c4, 0x7451358a,
+    0x744e9608, 0x744bf63e,
+  0x7449562d, 0x7446b5d4, 0x74441533, 0x7441744b, 0x743ed31b, 0x743c31a3,
+    0x74398fe3, 0x7436eddc,
+  0x74344b8d, 0x7431a8f6, 0x742f0618, 0x742c62f2, 0x7429bf84, 0x74271bcf,
+    0x742477d2, 0x7421d38e,
+  0x741f2f01, 0x741c8a2d, 0x7419e512, 0x74173faf, 0x74149a04, 0x7411f412,
+    0x740f4dd8, 0x740ca756,
+  0x740a008d, 0x7407597d, 0x7404b224, 0x74020a85, 0x73ff629d, 0x73fcba6e,
+    0x73fa11f8, 0x73f7693a,
+  0x73f4c034, 0x73f216e7, 0x73ef6d53, 0x73ecc377, 0x73ea1953, 0x73e76ee8,
+    0x73e4c435, 0x73e2193b,
+  0x73df6df9, 0x73dcc270, 0x73da16a0, 0x73d76a88, 0x73d4be28, 0x73d21182,
+    0x73cf6493, 0x73ccb75d,
+  0x73ca09e0, 0x73c75c1c, 0x73c4ae10, 0x73c1ffbc, 0x73bf5121, 0x73bca23f,
+    0x73b9f315, 0x73b743a4,
+  0x73b493ec, 0x73b1e3ec, 0x73af33a5, 0x73ac8316, 0x73a9d240, 0x73a72123,
+    0x73a46fbf, 0x73a1be13,
+  0x739f0c20, 0x739c59e5, 0x7399a763, 0x7396f49a, 0x73944189, 0x73918e32,
+    0x738eda93, 0x738c26ac,
+  0x7389727f, 0x7386be0a, 0x7384094e, 0x7381544a, 0x737e9f00, 0x737be96e,
+    0x73793395, 0x73767d74,
+  0x7373c70d, 0x7371105e, 0x736e5968, 0x736ba22b, 0x7368eaa6, 0x736632db,
+    0x73637ac8, 0x7360c26e,
+  0x735e09cd, 0x735b50e4, 0x735897b5, 0x7355de3e, 0x73532481, 0x73506a7c,
+    0x734db030, 0x734af59d,
+  0x73483ac2, 0x73457fa1, 0x7342c438, 0x73400889, 0x733d4c92, 0x733a9054,
+    0x7337d3d0, 0x73351704,
+  0x733259f1, 0x732f9c97, 0x732cdef6, 0x732a210d, 0x732762de, 0x7324a468,
+    0x7321e5ab, 0x731f26a7,
+  0x731c675b, 0x7319a7c9, 0x7316e7f0, 0x731427cf, 0x73116768, 0x730ea6ba,
+    0x730be5c5, 0x73092489,
+  0x73066306, 0x7303a13b, 0x7300df2a, 0x72fe1cd2, 0x72fb5a34, 0x72f8974e,
+    0x72f5d421, 0x72f310ad,
+  0x72f04cf3, 0x72ed88f1, 0x72eac4a9, 0x72e8001a, 0x72e53b44, 0x72e27627,
+    0x72dfb0c3, 0x72dceb18,
+  0x72da2526, 0x72d75eee, 0x72d4986f, 0x72d1d1a9, 0x72cf0a9c, 0x72cc4348,
+    0x72c97bad, 0x72c6b3cc,
+  0x72c3eba4, 0x72c12335, 0x72be5a7f, 0x72bb9183, 0x72b8c83f, 0x72b5feb5,
+    0x72b334e4, 0x72b06acd,
+  0x72ada06f, 0x72aad5c9, 0x72a80ade, 0x72a53fab, 0x72a27432, 0x729fa872,
+    0x729cdc6b, 0x729a101e,
+  0x7297438a, 0x729476af, 0x7291a98e, 0x728edc26, 0x728c0e77, 0x72894082,
+    0x72867245, 0x7283a3c3,
+  0x7280d4f9, 0x727e05e9, 0x727b3693, 0x727866f6, 0x72759712, 0x7272c6e7,
+    0x726ff676, 0x726d25bf,
+  0x726a54c1, 0x7267837c, 0x7264b1f0, 0x7261e01e, 0x725f0e06, 0x725c3ba7,
+    0x72596901, 0x72569615,
+  0x7253c2e3, 0x7250ef6a, 0x724e1baa, 0x724b47a4, 0x72487357, 0x72459ec4,
+    0x7242c9ea, 0x723ff4ca,
+  0x723d1f63, 0x723a49b6, 0x723773c3, 0x72349d89, 0x7231c708, 0x722ef041,
+    0x722c1934, 0x722941e0,
+  0x72266a46, 0x72239266, 0x7220ba3f, 0x721de1d1, 0x721b091d, 0x72183023,
+    0x721556e3, 0x72127d5c,
+  0x720fa38e, 0x720cc97b, 0x7209ef21, 0x72071480, 0x7204399a, 0x72015e6d,
+    0x71fe82f9, 0x71fba740,
+  0x71f8cb40, 0x71f5eefa, 0x71f3126d, 0x71f0359a, 0x71ed5881, 0x71ea7b22,
+    0x71e79d7c, 0x71e4bf90,
+  0x71e1e15e, 0x71df02e5, 0x71dc2427, 0x71d94522, 0x71d665d6, 0x71d38645,
+    0x71d0a66d, 0x71cdc650,
+  0x71cae5ec, 0x71c80542, 0x71c52451, 0x71c2431b, 0x71bf619e, 0x71bc7fdb,
+    0x71b99dd2, 0x71b6bb83,
+  0x71b3d8ed, 0x71b0f612, 0x71ae12f0, 0x71ab2f89, 0x71a84bdb, 0x71a567e7,
+    0x71a283ad, 0x719f9f2c,
+  0x719cba66, 0x7199d55a, 0x7196f008, 0x71940a6f, 0x71912490, 0x718e3e6c,
+    0x718b5801, 0x71887151,
+  0x71858a5a, 0x7182a31d, 0x717fbb9a, 0x717cd3d2, 0x7179ebc3, 0x7177036e,
+    0x71741ad3, 0x717131f3,
+  0x716e48cc, 0x716b5f5f, 0x716875ad, 0x71658bb4, 0x7162a175, 0x715fb6f1,
+    0x715ccc26, 0x7159e116,
+  0x7156f5c0, 0x71540a24, 0x71511e42, 0x714e321a, 0x714b45ac, 0x714858f8,
+    0x71456bfe, 0x71427ebf,
+  0x713f9139, 0x713ca36e, 0x7139b55d, 0x7136c706, 0x7133d869, 0x7130e987,
+    0x712dfa5e, 0x712b0af0,
+  0x71281b3c, 0x71252b42, 0x71223b02, 0x711f4a7d, 0x711c59b2, 0x711968a1,
+    0x7116774a, 0x711385ad,
+  0x711093cb, 0x710da1a3, 0x710aaf35, 0x7107bc82, 0x7104c989, 0x7101d64a,
+    0x70fee2c5, 0x70fbeefb,
+  0x70f8faeb, 0x70f60695, 0x70f311fa, 0x70f01d19, 0x70ed27f2, 0x70ea3286,
+    0x70e73cd4, 0x70e446dc,
+  0x70e1509f, 0x70de5a1c, 0x70db6353, 0x70d86c45, 0x70d574f1, 0x70d27d58,
+    0x70cf8579, 0x70cc8d54,
+  0x70c994ea, 0x70c69c3a, 0x70c3a345, 0x70c0aa0a, 0x70bdb08a, 0x70bab6c4,
+    0x70b7bcb8, 0x70b4c267,
+  0x70b1c7d1, 0x70aeccf5, 0x70abd1d3, 0x70a8d66c, 0x70a5dac0, 0x70a2dece,
+    0x709fe296, 0x709ce619,
+  0x7099e957, 0x7096ec4f, 0x7093ef01, 0x7090f16e, 0x708df396, 0x708af579,
+    0x7087f715, 0x7084f86d,
+  0x7081f97f, 0x707efa4c, 0x707bfad3, 0x7078fb15, 0x7075fb11, 0x7072fac9,
+    0x706ffa3a, 0x706cf967,
+  0x7069f84e, 0x7066f6f0, 0x7063f54c, 0x7060f363, 0x705df135, 0x705aeec1,
+    0x7057ec08, 0x7054e90a,
+  0x7051e5c7, 0x704ee23e, 0x704bde70, 0x7048da5d, 0x7045d604, 0x7042d166,
+    0x703fcc83, 0x703cc75b,
+  0x7039c1ed, 0x7036bc3b, 0x7033b643, 0x7030b005, 0x702da983, 0x702aa2bb,
+    0x70279baf, 0x7024945d,
+  0x70218cc6, 0x701e84e9, 0x701b7cc8, 0x70187461, 0x70156bb5, 0x701262c4,
+    0x700f598e, 0x700c5013,
+  0x70094653, 0x70063c4e, 0x70033203, 0x70002774, 0x6ffd1c9f, 0x6ffa1185,
+    0x6ff70626, 0x6ff3fa82,
+  0x6ff0ee99, 0x6fede26b, 0x6fead5f8, 0x6fe7c940, 0x6fe4bc43, 0x6fe1af01,
+    0x6fdea17a, 0x6fdb93ae,
+  0x6fd8859d, 0x6fd57746, 0x6fd268ab, 0x6fcf59cb, 0x6fcc4aa6, 0x6fc93b3c,
+    0x6fc62b8d, 0x6fc31b99,
+  0x6fc00b60, 0x6fbcfae2, 0x6fb9ea20, 0x6fb6d918, 0x6fb3c7cb, 0x6fb0b63a,
+    0x6fada464, 0x6faa9248,
+  0x6fa77fe8, 0x6fa46d43, 0x6fa15a59, 0x6f9e472b, 0x6f9b33b7, 0x6f981fff,
+    0x6f950c01, 0x6f91f7bf,
+  0x6f8ee338, 0x6f8bce6c, 0x6f88b95c, 0x6f85a407, 0x6f828e6c, 0x6f7f788d,
+    0x6f7c626a, 0x6f794c01,
+  0x6f763554, 0x6f731e62, 0x6f70072b, 0x6f6cefb0, 0x6f69d7f0, 0x6f66bfeb,
+    0x6f63a7a1, 0x6f608f13,
+  0x6f5d7640, 0x6f5a5d28, 0x6f5743cb, 0x6f542a2a, 0x6f511044, 0x6f4df61a,
+    0x6f4adbab, 0x6f47c0f7,
+  0x6f44a5ff, 0x6f418ac2, 0x6f3e6f40, 0x6f3b537a, 0x6f38376f, 0x6f351b1f,
+    0x6f31fe8b, 0x6f2ee1b2,
+  0x6f2bc495, 0x6f28a733, 0x6f25898d, 0x6f226ba2, 0x6f1f4d72, 0x6f1c2efe,
+    0x6f191045, 0x6f15f148,
+  0x6f12d206, 0x6f0fb280, 0x6f0c92b6, 0x6f0972a6, 0x6f065253, 0x6f0331ba,
+    0x6f0010de, 0x6efcefbd,
+  0x6ef9ce57, 0x6ef6acad, 0x6ef38abe, 0x6ef0688b, 0x6eed4614, 0x6eea2358,
+    0x6ee70058, 0x6ee3dd13,
+  0x6ee0b98a, 0x6edd95bd, 0x6eda71ab, 0x6ed74d55, 0x6ed428ba, 0x6ed103db,
+    0x6ecddeb8, 0x6ecab950,
+  0x6ec793a4, 0x6ec46db4, 0x6ec1477f, 0x6ebe2106, 0x6ebafa49, 0x6eb7d347,
+    0x6eb4ac02, 0x6eb18477,
+  0x6eae5ca9, 0x6eab3496, 0x6ea80c3f, 0x6ea4e3a4, 0x6ea1bac4, 0x6e9e91a1,
+    0x6e9b6839, 0x6e983e8d,
+  0x6e95149c, 0x6e91ea67, 0x6e8ebfef, 0x6e8b9532, 0x6e886a30, 0x6e853eeb,
+    0x6e821361, 0x6e7ee794,
+  0x6e7bbb82, 0x6e788f2c, 0x6e756291, 0x6e7235b3, 0x6e6f0890, 0x6e6bdb2a,
+    0x6e68ad7f, 0x6e657f90,
+  0x6e62515d, 0x6e5f22e6, 0x6e5bf42b, 0x6e58c52c, 0x6e5595e9, 0x6e526662,
+    0x6e4f3696, 0x6e4c0687,
+  0x6e48d633, 0x6e45a59c, 0x6e4274c1, 0x6e3f43a1, 0x6e3c123e, 0x6e38e096,
+    0x6e35aeab, 0x6e327c7b,
+  0x6e2f4a08, 0x6e2c1750, 0x6e28e455, 0x6e25b115, 0x6e227d92, 0x6e1f49cb,
+    0x6e1c15c0, 0x6e18e171,
+  0x6e15acde, 0x6e127807, 0x6e0f42ec, 0x6e0c0d8e, 0x6e08d7eb, 0x6e05a205,
+    0x6e026bda, 0x6dff356c,
+  0x6dfbfeba, 0x6df8c7c4, 0x6df5908b, 0x6df2590d, 0x6def214c, 0x6debe947,
+    0x6de8b0fe, 0x6de57871,
+  0x6de23fa0, 0x6ddf068c, 0x6ddbcd34, 0x6dd89398, 0x6dd559b9, 0x6dd21f95,
+    0x6dcee52e, 0x6dcbaa83,
+  0x6dc86f95, 0x6dc53462, 0x6dc1f8ec, 0x6dbebd33, 0x6dbb8135, 0x6db844f4,
+    0x6db5086f, 0x6db1cba7,
+  0x6dae8e9b, 0x6dab514b, 0x6da813b8, 0x6da4d5e1, 0x6da197c6, 0x6d9e5968,
+    0x6d9b1ac6, 0x6d97dbe0,
+  0x6d949cb7, 0x6d915d4a, 0x6d8e1d9a, 0x6d8adda6, 0x6d879d6e, 0x6d845cf3,
+    0x6d811c35, 0x6d7ddb33,
+  0x6d7a99ed, 0x6d775864, 0x6d741697, 0x6d70d487, 0x6d6d9233, 0x6d6a4f9c,
+    0x6d670cc1, 0x6d63c9a3,
+  0x6d608641, 0x6d5d429c, 0x6d59feb3, 0x6d56ba87, 0x6d537617, 0x6d503164,
+    0x6d4cec6e, 0x6d49a734,
+  0x6d4661b7, 0x6d431bf6, 0x6d3fd5f2, 0x6d3c8fab, 0x6d394920, 0x6d360252,
+    0x6d32bb40, 0x6d2f73eb,
+  0x6d2c2c53, 0x6d28e477, 0x6d259c58, 0x6d2253f6, 0x6d1f0b50, 0x6d1bc267,
+    0x6d18793b, 0x6d152fcc,
+  0x6d11e619, 0x6d0e9c23, 0x6d0b51e9, 0x6d08076d, 0x6d04bcad, 0x6d0171aa,
+    0x6cfe2663, 0x6cfadada,
+  0x6cf78f0d, 0x6cf442fd, 0x6cf0f6aa, 0x6cedaa13, 0x6cea5d3a, 0x6ce7101d,
+    0x6ce3c2bd, 0x6ce0751a,
+  0x6cdd2733, 0x6cd9d90a, 0x6cd68a9d, 0x6cd33bed, 0x6ccfecfa, 0x6ccc9dc4,
+    0x6cc94e4b, 0x6cc5fe8f,
+  0x6cc2ae90, 0x6cbf5e4d, 0x6cbc0dc8, 0x6cb8bcff, 0x6cb56bf4, 0x6cb21aa5,
+    0x6caec913, 0x6cab773e,
+  0x6ca82527, 0x6ca4d2cc, 0x6ca1802e, 0x6c9e2d4d, 0x6c9ada29, 0x6c9786c2,
+    0x6c943318, 0x6c90df2c,
+  0x6c8d8afc, 0x6c8a3689, 0x6c86e1d3, 0x6c838cdb, 0x6c80379f, 0x6c7ce220,
+    0x6c798c5f, 0x6c76365b,
+  0x6c72e013, 0x6c6f8989, 0x6c6c32bc, 0x6c68dbac, 0x6c658459, 0x6c622cc4,
+    0x6c5ed4eb, 0x6c5b7cd0,
+  0x6c582472, 0x6c54cbd1, 0x6c5172ed, 0x6c4e19c6, 0x6c4ac05d, 0x6c4766b0,
+    0x6c440cc1, 0x6c40b28f,
+  0x6c3d581b, 0x6c39fd63, 0x6c36a269, 0x6c33472c, 0x6c2febad, 0x6c2c8fea,
+    0x6c2933e5, 0x6c25d79d,
+  0x6c227b13, 0x6c1f1e45, 0x6c1bc136, 0x6c1863e3, 0x6c15064e, 0x6c11a876,
+    0x6c0e4a5b, 0x6c0aebfe,
+  0x6c078d5e, 0x6c042e7b, 0x6c00cf56, 0x6bfd6fee, 0x6bfa1044, 0x6bf6b056,
+    0x6bf35027, 0x6befefb5,
+  0x6bec8f00, 0x6be92e08, 0x6be5ccce, 0x6be26b52, 0x6bdf0993, 0x6bdba791,
+    0x6bd8454d, 0x6bd4e2c6,
+  0x6bd17ffd, 0x6bce1cf1, 0x6bcab9a3, 0x6bc75613, 0x6bc3f23f, 0x6bc08e2a,
+    0x6bbd29d2, 0x6bb9c537,
+  0x6bb6605a, 0x6bb2fb3b, 0x6baf95d9, 0x6bac3034, 0x6ba8ca4e, 0x6ba56425,
+    0x6ba1fdb9, 0x6b9e970b,
+  0x6b9b301b, 0x6b97c8e8, 0x6b946173, 0x6b90f9bc, 0x6b8d91c2, 0x6b8a2986,
+    0x6b86c107, 0x6b835846,
+  0x6b7fef43, 0x6b7c85fe, 0x6b791c76, 0x6b75b2ac, 0x6b7248a0, 0x6b6ede51,
+    0x6b6b73c0, 0x6b6808ed,
+  0x6b649dd8, 0x6b613280, 0x6b5dc6e6, 0x6b5a5b0a, 0x6b56eeec, 0x6b53828b,
+    0x6b5015e9, 0x6b4ca904,
+  0x6b493bdd, 0x6b45ce73, 0x6b4260c8, 0x6b3ef2da, 0x6b3b84ab, 0x6b381639,
+    0x6b34a785, 0x6b31388e,
+  0x6b2dc956, 0x6b2a59dc, 0x6b26ea1f, 0x6b237a21, 0x6b2009e0, 0x6b1c995d,
+    0x6b192898, 0x6b15b791,
+  0x6b124648, 0x6b0ed4bd, 0x6b0b62f0, 0x6b07f0e1, 0x6b047e90, 0x6b010bfd,
+    0x6afd9928, 0x6afa2610,
+  0x6af6b2b7, 0x6af33f1c, 0x6aefcb3f, 0x6aec5720, 0x6ae8e2bf, 0x6ae56e1c,
+    0x6ae1f937, 0x6ade8410,
+  0x6adb0ea8, 0x6ad798fd, 0x6ad42311, 0x6ad0ace2, 0x6acd3672, 0x6ac9bfc0,
+    0x6ac648cb, 0x6ac2d195,
+  0x6abf5a1e, 0x6abbe264, 0x6ab86a68, 0x6ab4f22b, 0x6ab179ac, 0x6aae00eb,
+    0x6aaa87e8, 0x6aa70ea4,
+  0x6aa3951d, 0x6aa01b55, 0x6a9ca14b, 0x6a992700, 0x6a95ac72, 0x6a9231a3,
+    0x6a8eb692, 0x6a8b3b3f,
+  0x6a87bfab, 0x6a8443d5, 0x6a80c7bd, 0x6a7d4b64, 0x6a79cec8, 0x6a7651ec,
+    0x6a72d4cd, 0x6a6f576d,
+  0x6a6bd9cb, 0x6a685be8, 0x6a64ddc2, 0x6a615f5c, 0x6a5de0b3, 0x6a5a61c9,
+    0x6a56e29e, 0x6a536331,
+  0x6a4fe382, 0x6a4c6391, 0x6a48e360, 0x6a4562ec, 0x6a41e237, 0x6a3e6140,
+    0x6a3ae008, 0x6a375e8f,
+  0x6a33dcd4, 0x6a305ad7, 0x6a2cd899, 0x6a295619, 0x6a25d358, 0x6a225055,
+    0x6a1ecd11, 0x6a1b498c,
+  0x6a17c5c5, 0x6a1441bc, 0x6a10bd72, 0x6a0d38e7, 0x6a09b41a, 0x6a062f0c,
+    0x6a02a9bc, 0x69ff242b,
+  0x69fb9e59, 0x69f81845, 0x69f491f0, 0x69f10b5a, 0x69ed8482, 0x69e9fd69,
+    0x69e6760f, 0x69e2ee73,
+  0x69df6696, 0x69dbde77, 0x69d85618, 0x69d4cd77, 0x69d14494, 0x69cdbb71,
+    0x69ca320c, 0x69c6a866,
+  0x69c31e7f, 0x69bf9456, 0x69bc09ec, 0x69b87f41, 0x69b4f455, 0x69b16928,
+    0x69adddb9, 0x69aa5209,
+  0x69a6c618, 0x69a339e6, 0x699fad73, 0x699c20be, 0x699893c9, 0x69950692,
+    0x6991791a, 0x698deb61,
+  0x698a5d67, 0x6986cf2c, 0x698340af, 0x697fb1f2, 0x697c22f3, 0x697893b4,
+    0x69750433, 0x69717472,
+  0x696de46f, 0x696a542b, 0x6966c3a6, 0x696332e1, 0x695fa1da, 0x695c1092,
+    0x69587f09, 0x6954ed40,
+  0x69515b35, 0x694dc8e9, 0x694a365c, 0x6946a38f, 0x69431080, 0x693f7d31,
+    0x693be9a0, 0x693855cf,
+  0x6934c1bd, 0x69312d6a, 0x692d98d6, 0x692a0401, 0x69266eeb, 0x6922d995,
+    0x691f43fd, 0x691bae25,
+  0x6918180c, 0x691481b2, 0x6910eb17, 0x690d543b, 0x6909bd1f, 0x690625c2,
+    0x69028e24, 0x68fef645,
+  0x68fb5e25, 0x68f7c5c5, 0x68f42d24, 0x68f09442, 0x68ecfb20, 0x68e961bd,
+    0x68e5c819, 0x68e22e34,
+  0x68de940f, 0x68daf9a9, 0x68d75f02, 0x68d3c41b, 0x68d028f2, 0x68cc8d8a,
+    0x68c8f1e0, 0x68c555f6,
+  0x68c1b9cc, 0x68be1d61, 0x68ba80b5, 0x68b6e3c8, 0x68b3469b, 0x68afa92e,
+    0x68ac0b7f, 0x68a86d91,
+  0x68a4cf61, 0x68a130f1, 0x689d9241, 0x6899f350, 0x6896541f, 0x6892b4ad,
+    0x688f14fa, 0x688b7507,
+  0x6887d4d4, 0x68843460, 0x688093ab, 0x687cf2b6, 0x68795181, 0x6875b00b,
+    0x68720e55, 0x686e6c5e,
+  0x686aca27, 0x686727b0, 0x686384f8, 0x685fe200, 0x685c3ec7, 0x68589b4e,
+    0x6854f795, 0x6851539b,
+  0x684daf61, 0x684a0ae6, 0x6846662c, 0x6842c131, 0x683f1bf5, 0x683b7679,
+    0x6837d0bd, 0x68342ac1,
+  0x68308485, 0x682cde08, 0x6829374b, 0x6825904d, 0x6821e910, 0x681e4192,
+    0x681a99d4, 0x6816f1d6,
+  0x68134997, 0x680fa118, 0x680bf85a, 0x68084f5a, 0x6804a61b, 0x6800fc9c,
+    0x67fd52dc, 0x67f9a8dd,
+  0x67f5fe9d, 0x67f2541d, 0x67eea95d, 0x67eafe5d, 0x67e7531c, 0x67e3a79c,
+    0x67dffbdc, 0x67dc4fdb,
+  0x67d8a39a, 0x67d4f71a, 0x67d14a59, 0x67cd9d58, 0x67c9f017, 0x67c64297,
+    0x67c294d6, 0x67bee6d5,
+  0x67bb3894, 0x67b78a13, 0x67b3db53, 0x67b02c52, 0x67ac7d11, 0x67a8cd91,
+    0x67a51dd0, 0x67a16dcf,
+  0x679dbd8f, 0x679a0d0f, 0x67965c4e, 0x6792ab4e, 0x678efa0e, 0x678b488e,
+    0x678796ce, 0x6783e4cf,
+  0x6780328f, 0x677c8010, 0x6778cd50, 0x67751a51, 0x67716713, 0x676db394,
+    0x6769ffd5, 0x67664bd7,
+  0x67629799, 0x675ee31b, 0x675b2e5e, 0x67577960, 0x6753c423, 0x67500ea7,
+    0x674c58ea, 0x6748a2ee,
+  0x6744ecb2, 0x67413636, 0x673d7f7b, 0x6739c880, 0x67361145, 0x673259ca,
+    0x672ea210, 0x672aea17,
+  0x672731dd, 0x67237964, 0x671fc0ac, 0x671c07b4, 0x67184e7c, 0x67149504,
+    0x6710db4d, 0x670d2157,
+  0x67096721, 0x6705acab, 0x6701f1f6, 0x66fe3701, 0x66fa7bcd, 0x66f6c059,
+    0x66f304a6, 0x66ef48b3,
+  0x66eb8c80, 0x66e7d00f, 0x66e4135d, 0x66e0566c, 0x66dc993c, 0x66d8dbcd,
+    0x66d51e1d, 0x66d1602f,
+  0x66cda201, 0x66c9e393, 0x66c624e7, 0x66c265fa, 0x66bea6cf, 0x66bae764,
+    0x66b727ba, 0x66b367d0,
+  0x66afa7a7, 0x66abe73f, 0x66a82697, 0x66a465b0, 0x66a0a489, 0x669ce324,
+    0x6699217f, 0x66955f9b,
+  0x66919d77, 0x668ddb14, 0x668a1872, 0x66865591, 0x66829270, 0x667ecf11,
+    0x667b0b72, 0x66774793,
+  0x66738376, 0x666fbf19, 0x666bfa7d, 0x666835a2, 0x66647088, 0x6660ab2f,
+    0x665ce596, 0x66591fbf,
+  0x665559a8, 0x66519352, 0x664dccbd, 0x664a05e9, 0x66463ed6, 0x66427784,
+    0x663eaff2, 0x663ae822,
+  0x66372012, 0x663357c4, 0x662f8f36, 0x662bc66a, 0x6627fd5e, 0x66243413,
+    0x66206a8a, 0x661ca0c1,
+  0x6618d6b9, 0x66150c73, 0x661141ed, 0x660d7729, 0x6609ac25, 0x6605e0e3,
+    0x66021561, 0x65fe49a1,
+  0x65fa7da2, 0x65f6b164, 0x65f2e4e7, 0x65ef182b, 0x65eb4b30, 0x65e77df6,
+    0x65e3b07e, 0x65dfe2c6,
+  0x65dc14d0, 0x65d8469b, 0x65d47827, 0x65d0a975, 0x65ccda83, 0x65c90b53,
+    0x65c53be4, 0x65c16c36,
+  0x65bd9c49, 0x65b9cc1e, 0x65b5fbb4, 0x65b22b0b, 0x65ae5a23, 0x65aa88fd,
+    0x65a6b798, 0x65a2e5f4,
+  0x659f1412, 0x659b41f1, 0x65976f91, 0x65939cf3, 0x658fca15, 0x658bf6fa,
+    0x6588239f, 0x65845006,
+  0x65807c2f, 0x657ca818, 0x6578d3c4, 0x6574ff30, 0x65712a5e, 0x656d554d,
+    0x65697ffe, 0x6565aa71,
+  0x6561d4a4, 0x655dfe99, 0x655a2850, 0x655651c8, 0x65527b02, 0x654ea3fd,
+    0x654accba, 0x6546f538,
+  0x65431d77, 0x653f4579, 0x653b6d3b, 0x653794c0, 0x6533bc06, 0x652fe30d,
+    0x652c09d6, 0x65283061,
+  0x652456ad, 0x65207cbb, 0x651ca28a, 0x6518c81b, 0x6514ed6e, 0x65111283,
+    0x650d3759, 0x65095bf0,
+  0x6505804a, 0x6501a465, 0x64fdc841, 0x64f9ebe0, 0x64f60f40, 0x64f23262,
+    0x64ee5546, 0x64ea77eb,
+  0x64e69a52, 0x64e2bc7b, 0x64dede66, 0x64db0012, 0x64d72180, 0x64d342b0,
+    0x64cf63a2, 0x64cb8456,
+  0x64c7a4cb, 0x64c3c502, 0x64bfe4fc, 0x64bc04b6, 0x64b82433, 0x64b44372,
+    0x64b06273, 0x64ac8135,
+  0x64a89fba, 0x64a4be00, 0x64a0dc08, 0x649cf9d2, 0x6499175e, 0x649534ac,
+    0x649151bc, 0x648d6e8e,
+  0x64898b22, 0x6485a778, 0x6481c390, 0x647ddf6a, 0x6479fb06, 0x64761664,
+    0x64723184, 0x646e4c66,
+  0x646a670a, 0x64668170, 0x64629b98, 0x645eb582, 0x645acf2e, 0x6456e89d,
+    0x645301cd, 0x644f1ac0,
+  0x644b3375, 0x64474bec, 0x64436425, 0x643f7c20, 0x643b93dd, 0x6437ab5d,
+    0x6433c29f, 0x642fd9a3,
+  0x642bf069, 0x642806f1, 0x64241d3c, 0x64203348, 0x641c4917, 0x64185ea9,
+    0x641473fc, 0x64108912,
+  0x640c9dea, 0x6408b284, 0x6404c6e1, 0x6400db00, 0x63fceee1, 0x63f90285,
+    0x63f515eb, 0x63f12913,
+  0x63ed3bfd, 0x63e94eaa, 0x63e5611a, 0x63e1734b, 0x63dd853f, 0x63d996f6,
+    0x63d5a86f, 0x63d1b9aa,
+  0x63cdcaa8, 0x63c9db68, 0x63c5ebeb, 0x63c1fc30, 0x63be0c37, 0x63ba1c01,
+    0x63b62b8e, 0x63b23add,
+  0x63ae49ee, 0x63aa58c2, 0x63a66759, 0x63a275b2, 0x639e83cd, 0x639a91ac,
+    0x63969f4c, 0x6392acaf,
+  0x638eb9d5, 0x638ac6be, 0x6386d369, 0x6382dfd6, 0x637eec07, 0x637af7fa,
+    0x637703af, 0x63730f27,
+  0x636f1a62, 0x636b2560, 0x63673020, 0x63633aa3, 0x635f44e8, 0x635b4ef0,
+    0x635758bb, 0x63536249,
+  0x634f6b99, 0x634b74ad, 0x63477d82, 0x6343861b, 0x633f8e76, 0x633b9695,
+    0x63379e76, 0x6333a619,
+  0x632fad80, 0x632bb4a9, 0x6327bb96, 0x6323c245, 0x631fc8b7, 0x631bceeb,
+    0x6317d4e3, 0x6313da9e,
+  0x630fe01b, 0x630be55b, 0x6307ea5e, 0x6303ef25, 0x62fff3ae, 0x62fbf7fa,
+    0x62f7fc08, 0x62f3ffda,
+  0x62f0036f, 0x62ec06c7, 0x62e809e2, 0x62e40cbf, 0x62e00f60, 0x62dc11c4,
+    0x62d813eb, 0x62d415d4,
+  0x62d01781, 0x62cc18f1, 0x62c81a24, 0x62c41b1a, 0x62c01bd3, 0x62bc1c4f,
+    0x62b81c8f, 0x62b41c91,
+  0x62b01c57, 0x62ac1bdf, 0x62a81b2b, 0x62a41a3a, 0x62a0190c, 0x629c17a1,
+    0x629815fa, 0x62941415,
+  0x629011f4, 0x628c0f96, 0x62880cfb, 0x62840a23, 0x6280070f, 0x627c03be,
+    0x62780030, 0x6273fc65,
+  0x626ff85e, 0x626bf41a, 0x6267ef99, 0x6263eadc, 0x625fe5e1, 0x625be0ab,
+    0x6257db37, 0x6253d587,
+  0x624fcf9a, 0x624bc970, 0x6247c30a, 0x6243bc68, 0x623fb588, 0x623bae6c,
+    0x6237a714, 0x62339f7e,
+  0x622f97ad, 0x622b8f9e, 0x62278754, 0x62237ecc, 0x621f7608, 0x621b6d08,
+    0x621763cb, 0x62135a51,
+  0x620f509b, 0x620b46a9, 0x62073c7a, 0x6203320e, 0x61ff2766, 0x61fb1c82,
+    0x61f71161, 0x61f30604,
+  0x61eefa6b, 0x61eaee95, 0x61e6e282, 0x61e2d633, 0x61dec9a8, 0x61dabce0,
+    0x61d6afdd, 0x61d2a29c,
+  0x61ce9520, 0x61ca8767, 0x61c67971, 0x61c26b40, 0x61be5cd2, 0x61ba4e28,
+    0x61b63f41, 0x61b2301e,
+  0x61ae20bf, 0x61aa1124, 0x61a6014d, 0x61a1f139, 0x619de0e9, 0x6199d05d,
+    0x6195bf94, 0x6191ae90,
+  0x618d9d4f, 0x61898bd2, 0x61857a19, 0x61816824, 0x617d55f2, 0x61794385,
+    0x617530db, 0x61711df5,
+  0x616d0ad3, 0x6168f775, 0x6164e3db, 0x6160d005, 0x615cbbf3, 0x6158a7a4,
+    0x6154931a, 0x61507e54,
+  0x614c6951, 0x61485413, 0x61443e98, 0x614028e2, 0x613c12f0, 0x6137fcc1,
+    0x6133e657, 0x612fcfb0,
+  0x612bb8ce, 0x6127a1b0, 0x61238a56, 0x611f72c0, 0x611b5aee, 0x611742e0,
+    0x61132a96, 0x610f1210,
+  0x610af94f, 0x6106e051, 0x6102c718, 0x60feada3, 0x60fa93f2, 0x60f67a05,
+    0x60f25fdd, 0x60ee4579,
+  0x60ea2ad8, 0x60e60ffd, 0x60e1f4e5, 0x60ddd991, 0x60d9be02, 0x60d5a237,
+    0x60d18631, 0x60cd69ee,
+  0x60c94d70, 0x60c530b6, 0x60c113c1, 0x60bcf690, 0x60b8d923, 0x60b4bb7a,
+    0x60b09d96, 0x60ac7f76,
+  0x60a8611b, 0x60a44284, 0x60a023b1, 0x609c04a3, 0x6097e559, 0x6093c5d3,
+    0x608fa612, 0x608b8616,
+  0x608765dd, 0x6083456a, 0x607f24ba, 0x607b03d0, 0x6076e2a9, 0x6072c148,
+    0x606e9faa, 0x606a7dd2,
+  0x60665bbd, 0x6062396e, 0x605e16e2, 0x6059f41c, 0x6055d11a, 0x6051addc,
+    0x604d8a63, 0x604966af,
+  0x604542bf, 0x60411e94, 0x603cfa2e, 0x6038d58c, 0x6034b0af, 0x60308b97,
+    0x602c6643, 0x602840b4,
+  0x60241ae9, 0x601ff4e3, 0x601bcea2, 0x6017a826, 0x6013816e, 0x600f5a7b,
+    0x600b334d, 0x60070be4,
+  0x6002e43f, 0x5ffebc5f, 0x5ffa9444, 0x5ff66bee, 0x5ff2435d, 0x5fee1a90,
+    0x5fe9f188, 0x5fe5c845,
+  0x5fe19ec7, 0x5fdd750e, 0x5fd94b19, 0x5fd520ea, 0x5fd0f67f, 0x5fcccbd9,
+    0x5fc8a0f8, 0x5fc475dc,
+  0x5fc04a85, 0x5fbc1ef3, 0x5fb7f326, 0x5fb3c71e, 0x5faf9adb, 0x5fab6e5d,
+    0x5fa741a3, 0x5fa314af,
+  0x5f9ee780, 0x5f9aba16, 0x5f968c70, 0x5f925e90, 0x5f8e3075, 0x5f8a021f,
+    0x5f85d38e, 0x5f81a4c2,
+  0x5f7d75bb, 0x5f794679, 0x5f7516fd, 0x5f70e745, 0x5f6cb753, 0x5f688726,
+    0x5f6456be, 0x5f60261b,
+  0x5f5bf53d, 0x5f57c424, 0x5f5392d1, 0x5f4f6143, 0x5f4b2f7a, 0x5f46fd76,
+    0x5f42cb37, 0x5f3e98be,
+  0x5f3a660a, 0x5f36331b, 0x5f31fff1, 0x5f2dcc8d, 0x5f2998ee, 0x5f256515,
+    0x5f213100, 0x5f1cfcb1,
+  0x5f18c827, 0x5f149363, 0x5f105e64, 0x5f0c292a, 0x5f07f3b6, 0x5f03be07,
+    0x5eff881d, 0x5efb51f9,
+  0x5ef71b9b, 0x5ef2e501, 0x5eeeae2d, 0x5eea771f, 0x5ee63fd6, 0x5ee20853,
+    0x5eddd094, 0x5ed9989c,
+  0x5ed56069, 0x5ed127fb, 0x5eccef53, 0x5ec8b671, 0x5ec47d54, 0x5ec043fc,
+    0x5ebc0a6a, 0x5eb7d09e,
+  0x5eb39697, 0x5eaf5c56, 0x5eab21da, 0x5ea6e724, 0x5ea2ac34, 0x5e9e7109,
+    0x5e9a35a4, 0x5e95fa05,
+  0x5e91be2b, 0x5e8d8217, 0x5e8945c8, 0x5e85093f, 0x5e80cc7c, 0x5e7c8f7f,
+    0x5e785247, 0x5e7414d5,
+  0x5e6fd729, 0x5e6b9943, 0x5e675b22, 0x5e631cc7, 0x5e5ede32, 0x5e5a9f62,
+    0x5e566059, 0x5e522115,
+  0x5e4de197, 0x5e49a1df, 0x5e4561ed, 0x5e4121c0, 0x5e3ce15a, 0x5e38a0b9,
+    0x5e345fde, 0x5e301ec9,
+  0x5e2bdd7a, 0x5e279bf1, 0x5e235a2e, 0x5e1f1830, 0x5e1ad5f9, 0x5e169388,
+    0x5e1250dc, 0x5e0e0df7,
+  0x5e09cad7, 0x5e05877e, 0x5e0143ea, 0x5dfd001d, 0x5df8bc15, 0x5df477d4,
+    0x5df03359, 0x5debeea3,
+  0x5de7a9b4, 0x5de3648b, 0x5ddf1f28, 0x5ddad98b, 0x5dd693b4, 0x5dd24da3,
+    0x5dce0759, 0x5dc9c0d4,
+  0x5dc57a16, 0x5dc1331d, 0x5dbcebeb, 0x5db8a480, 0x5db45cda, 0x5db014fa,
+    0x5dabcce1, 0x5da7848e,
+  0x5da33c01, 0x5d9ef33b, 0x5d9aaa3a, 0x5d966100, 0x5d92178d, 0x5d8dcddf,
+    0x5d8983f8, 0x5d8539d7,
+  0x5d80ef7c, 0x5d7ca4e8, 0x5d785a1a, 0x5d740f12, 0x5d6fc3d1, 0x5d6b7856,
+    0x5d672ca2, 0x5d62e0b4,
+  0x5d5e948c, 0x5d5a482a, 0x5d55fb90, 0x5d51aebb, 0x5d4d61ad, 0x5d491465,
+    0x5d44c6e4, 0x5d40792a,
+  0x5d3c2b35, 0x5d37dd08, 0x5d338ea0, 0x5d2f4000, 0x5d2af125, 0x5d26a212,
+    0x5d2252c5, 0x5d1e033e,
+  0x5d19b37e, 0x5d156385, 0x5d111352, 0x5d0cc2e5, 0x5d087240, 0x5d042161,
+    0x5cffd048, 0x5cfb7ef7,
+  0x5cf72d6b, 0x5cf2dba7, 0x5cee89a9, 0x5cea3772, 0x5ce5e501, 0x5ce19258,
+    0x5cdd3f75, 0x5cd8ec58,
+  0x5cd49903, 0x5cd04574, 0x5ccbf1ab, 0x5cc79daa, 0x5cc3496f, 0x5cbef4fc,
+    0x5cbaa04f, 0x5cb64b68,
+  0x5cb1f649, 0x5cada0f0, 0x5ca94b5e, 0x5ca4f594, 0x5ca09f8f, 0x5c9c4952,
+    0x5c97f2dc, 0x5c939c2c,
+  0x5c8f4544, 0x5c8aee22, 0x5c8696c7, 0x5c823f34, 0x5c7de767, 0x5c798f61,
+    0x5c753722, 0x5c70deaa,
+  0x5c6c85f9, 0x5c682d0f, 0x5c63d3eb, 0x5c5f7a8f, 0x5c5b20fa, 0x5c56c72c,
+    0x5c526d25, 0x5c4e12e5,
+  0x5c49b86d, 0x5c455dbb, 0x5c4102d0, 0x5c3ca7ad, 0x5c384c50, 0x5c33f0bb,
+    0x5c2f94ec, 0x5c2b38e5,
+  0x5c26dca5, 0x5c22802c, 0x5c1e237b, 0x5c19c690, 0x5c15696d, 0x5c110c11,
+    0x5c0cae7c, 0x5c0850ae,
+  0x5c03f2a8, 0x5bff9469, 0x5bfb35f1, 0x5bf6d740, 0x5bf27857, 0x5bee1935,
+    0x5be9b9da, 0x5be55a46,
+  0x5be0fa7a, 0x5bdc9a75, 0x5bd83a37, 0x5bd3d9c1, 0x5bcf7912, 0x5bcb182b,
+    0x5bc6b70b, 0x5bc255b2,
+  0x5bbdf421, 0x5bb99257, 0x5bb53054, 0x5bb0ce19, 0x5bac6ba6, 0x5ba808f9,
+    0x5ba3a615, 0x5b9f42f7,
+  0x5b9adfa2, 0x5b967c13, 0x5b92184d, 0x5b8db44d, 0x5b895016, 0x5b84eba6,
+    0x5b8086fd, 0x5b7c221c,
+  0x5b77bd02, 0x5b7357b0, 0x5b6ef226, 0x5b6a8c63, 0x5b662668, 0x5b61c035,
+    0x5b5d59c9, 0x5b58f324,
+  0x5b548c48, 0x5b502533, 0x5b4bbde6, 0x5b475660, 0x5b42eea2, 0x5b3e86ac,
+    0x5b3a1e7e, 0x5b35b617,
+  0x5b314d78, 0x5b2ce4a1, 0x5b287b91, 0x5b241249, 0x5b1fa8c9, 0x5b1b3f11,
+    0x5b16d521, 0x5b126af8,
+  0x5b0e0098, 0x5b0995ff, 0x5b052b2e, 0x5b00c025, 0x5afc54e3, 0x5af7e96a,
+    0x5af37db8, 0x5aef11cf,
+  0x5aeaa5ad, 0x5ae63953, 0x5ae1ccc1, 0x5add5ff7, 0x5ad8f2f5, 0x5ad485bb,
+    0x5ad01849, 0x5acbaa9f,
+  0x5ac73cbd, 0x5ac2cea3, 0x5abe6050, 0x5ab9f1c6, 0x5ab58304, 0x5ab1140a,
+    0x5aaca4d8, 0x5aa8356f,
+  0x5aa3c5cd, 0x5a9f55f3, 0x5a9ae5e2, 0x5a967598, 0x5a920517, 0x5a8d945d,
+    0x5a89236c, 0x5a84b243,
+  0x5a8040e3, 0x5a7bcf4a, 0x5a775d7a, 0x5a72eb71, 0x5a6e7931, 0x5a6a06ba,
+    0x5a65940a, 0x5a612123,
+  0x5a5cae04, 0x5a583aad, 0x5a53c71e, 0x5a4f5358, 0x5a4adf5a, 0x5a466b24,
+    0x5a41f6b7, 0x5a3d8212,
+  0x5a390d35, 0x5a349821, 0x5a3022d5, 0x5a2bad51, 0x5a273796, 0x5a22c1a3,
+    0x5a1e4b79, 0x5a19d517,
+  0x5a155e7d, 0x5a10e7ac, 0x5a0c70a3, 0x5a07f963, 0x5a0381eb, 0x59ff0a3c,
+    0x59fa9255, 0x59f61a36,
+  0x59f1a1e0, 0x59ed2953, 0x59e8b08e, 0x59e43792, 0x59dfbe5e, 0x59db44f3,
+    0x59d6cb50, 0x59d25176,
+  0x59cdd765, 0x59c95d1c, 0x59c4e29c, 0x59c067e4, 0x59bbecf5, 0x59b771cf,
+    0x59b2f671, 0x59ae7add,
+  0x59a9ff10, 0x59a5830d, 0x59a106d2, 0x599c8a60, 0x59980db6, 0x599390d5,
+    0x598f13bd, 0x598a966e,
+  0x598618e8, 0x59819b2a, 0x597d1d35, 0x59789f09, 0x597420a6, 0x596fa20b,
+    0x596b233a, 0x5966a431,
+  0x596224f1, 0x595da57a, 0x595925cc, 0x5954a5e6, 0x595025ca, 0x594ba576,
+    0x594724ec, 0x5942a42a,
+  0x593e2331, 0x5939a202, 0x5935209b, 0x59309efd, 0x592c1d28, 0x59279b1c,
+    0x592318d9, 0x591e9660,
+  0x591a13af, 0x591590c7, 0x59110da8, 0x590c8a53, 0x590806c6, 0x59038302,
+    0x58feff08, 0x58fa7ad7,
+  0x58f5f66e, 0x58f171cf, 0x58ececf9, 0x58e867ed, 0x58e3e2a9, 0x58df5d2e,
+    0x58dad77d, 0x58d65195,
+  0x58d1cb76, 0x58cd4520, 0x58c8be94, 0x58c437d1, 0x58bfb0d7, 0x58bb29a6,
+    0x58b6a23e, 0x58b21aa0,
+  0x58ad92cb, 0x58a90ac0, 0x58a4827d, 0x589ffa04, 0x589b7155, 0x5896e86f,
+    0x58925f52, 0x588dd5fe,
+  0x58894c74, 0x5884c2b3, 0x588038bb, 0x587bae8d, 0x58772429, 0x5872998e,
+    0x586e0ebc, 0x586983b4,
+  0x5864f875, 0x58606d00, 0x585be154, 0x58575571, 0x5852c958, 0x584e3d09,
+    0x5849b083, 0x584523c7,
+  0x584096d4, 0x583c09ab, 0x58377c4c, 0x5832eeb6, 0x582e60e9, 0x5829d2e6,
+    0x582544ad, 0x5820b63e,
+  0x581c2798, 0x581798bb, 0x581309a9, 0x580e7a60, 0x5809eae1, 0x58055b2b,
+    0x5800cb3f, 0x57fc3b1d,
+  0x57f7aac5, 0x57f31a36, 0x57ee8971, 0x57e9f876, 0x57e56744, 0x57e0d5dd,
+    0x57dc443f, 0x57d7b26b,
+  0x57d32061, 0x57ce8e20, 0x57c9fbaa, 0x57c568fd, 0x57c0d61a, 0x57bc4301,
+    0x57b7afb2, 0x57b31c2d,
+  0x57ae8872, 0x57a9f480, 0x57a56059, 0x57a0cbfb, 0x579c3768, 0x5797a29e,
+    0x57930d9e, 0x578e7869,
+  0x5789e2fd, 0x57854d5b, 0x5780b784, 0x577c2176, 0x57778b32, 0x5772f4b9,
+    0x576e5e09, 0x5769c724,
+  0x57653009, 0x576098b7, 0x575c0130, 0x57576973, 0x5752d180, 0x574e3957,
+    0x5749a0f9, 0x57450864,
+  0x57406f9a, 0x573bd69a, 0x57373d64, 0x5732a3f8, 0x572e0a56, 0x5729707f,
+    0x5724d672, 0x57203c2f,
+  0x571ba1b7, 0x57170708, 0x57126c24, 0x570dd10a, 0x570935bb, 0x57049a36,
+    0x56fffe7b, 0x56fb628b,
+  0x56f6c664, 0x56f22a09, 0x56ed8d77, 0x56e8f0b0, 0x56e453b4, 0x56dfb681,
+    0x56db1919, 0x56d67b7c,
+  0x56d1dda9, 0x56cd3fa1, 0x56c8a162, 0x56c402ef, 0x56bf6446, 0x56bac567,
+    0x56b62653, 0x56b18709,
+  0x56ace78a, 0x56a847d6, 0x56a3a7ec, 0x569f07cc, 0x569a6777, 0x5695c6ed,
+    0x5691262d, 0x568c8538,
+  0x5687e40e, 0x568342ae, 0x567ea118, 0x5679ff4e, 0x56755d4e, 0x5670bb19,
+    0x566c18ae, 0x5667760e,
+  0x5662d339, 0x565e302e, 0x56598cee, 0x5654e979, 0x565045cf, 0x564ba1f0,
+    0x5646fddb, 0x56425991,
+  0x563db512, 0x5639105d, 0x56346b74, 0x562fc655, 0x562b2101, 0x56267b78,
+    0x5621d5ba, 0x561d2fc6,
+  0x5618899e, 0x5613e340, 0x560f3cae, 0x560a95e6, 0x5605eee9, 0x560147b7,
+    0x55fca050, 0x55f7f8b4,
+  0x55f350e3, 0x55eea8dd, 0x55ea00a2, 0x55e55832, 0x55e0af8d, 0x55dc06b3,
+    0x55d75da4, 0x55d2b460,
+  0x55ce0ae7, 0x55c96139, 0x55c4b757, 0x55c00d3f, 0x55bb62f3, 0x55b6b871,
+    0x55b20dbb, 0x55ad62d0,
+  0x55a8b7b0, 0x55a40c5b, 0x559f60d1, 0x559ab513, 0x55960920, 0x55915cf8,
+    0x558cb09b, 0x55880409,
+  0x55835743, 0x557eaa48, 0x5579fd18, 0x55754fb3, 0x5570a21a, 0x556bf44c,
+    0x55674649, 0x55629812,
+  0x555de9a6, 0x55593b05, 0x55548c30, 0x554fdd26, 0x554b2de7, 0x55467e74,
+    0x5541cecc, 0x553d1ef0,
+  0x55386edf, 0x5533be99, 0x552f0e1f, 0x552a5d70, 0x5525ac8d, 0x5520fb75,
+    0x551c4a29, 0x551798a8,
+  0x5512e6f3, 0x550e3509, 0x550982eb, 0x5504d099, 0x55001e12, 0x54fb6b56,
+    0x54f6b866, 0x54f20542,
+  0x54ed51e9, 0x54e89e5c, 0x54e3ea9a, 0x54df36a5, 0x54da827a, 0x54d5ce1c,
+    0x54d11989, 0x54cc64c2,
+  0x54c7afc6, 0x54c2fa96, 0x54be4532, 0x54b98f9a, 0x54b4d9cd, 0x54b023cc,
+    0x54ab6d97, 0x54a6b72e,
+  0x54a20090, 0x549d49bf, 0x549892b9, 0x5493db7f, 0x548f2410, 0x548a6c6e,
+    0x5485b497, 0x5480fc8c,
+  0x547c444d, 0x54778bda, 0x5472d333, 0x546e1a58, 0x54696149, 0x5464a805,
+    0x545fee8e, 0x545b34e3,
+  0x54567b03, 0x5451c0f0, 0x544d06a8, 0x54484c2d, 0x5443917d, 0x543ed699,
+    0x543a1b82, 0x54356037,
+  0x5430a4b7, 0x542be904, 0x54272d1d, 0x54227102, 0x541db4b3, 0x5418f830,
+    0x54143b79, 0x540f7e8e,
+  0x540ac170, 0x5406041d, 0x54014697, 0x53fc88dd, 0x53f7caef, 0x53f30cce,
+    0x53ee4e78, 0x53e98fef,
+  0x53e4d132, 0x53e01242, 0x53db531d, 0x53d693c5, 0x53d1d439, 0x53cd147a,
+    0x53c85486, 0x53c3945f,
+  0x53bed405, 0x53ba1377, 0x53b552b5, 0x53b091bf, 0x53abd096, 0x53a70f39,
+    0x53a24da9, 0x539d8be5,
+  0x5398c9ed, 0x539407c2, 0x538f4564, 0x538a82d1, 0x5385c00c, 0x5380fd12,
+    0x537c39e6, 0x53777685,
+  0x5372b2f2, 0x536def2a, 0x53692b30, 0x53646701, 0x535fa2a0, 0x535ade0b,
+    0x53561942, 0x53515447,
+  0x534c8f17, 0x5347c9b5, 0x5343041f, 0x533e3e55, 0x53397859, 0x5334b229,
+    0x532febc5, 0x532b252f,
+  0x53265e65, 0x53219767, 0x531cd037, 0x531808d3, 0x5313413c, 0x530e7972,
+    0x5309b174, 0x5304e943,
+  0x530020df, 0x52fb5848, 0x52f68f7e, 0x52f1c680, 0x52ecfd4f, 0x52e833ec,
+    0x52e36a55, 0x52dea08a,
+  0x52d9d68d, 0x52d50c5d, 0x52d041f9, 0x52cb7763, 0x52c6ac99, 0x52c1e19d,
+    0x52bd166d, 0x52b84b0a,
+  0x52b37f74, 0x52aeb3ac, 0x52a9e7b0, 0x52a51b81, 0x52a04f1f, 0x529b828a,
+    0x5296b5c3, 0x5291e8c8,
+  0x528d1b9b, 0x52884e3a, 0x528380a7, 0x527eb2e0, 0x5279e4e7, 0x527516bb,
+    0x5270485c, 0x526b79ca,
+  0x5266ab06, 0x5261dc0e, 0x525d0ce4, 0x52583d87, 0x52536df7, 0x524e9e34,
+    0x5249ce3f, 0x5244fe17,
+  0x52402dbc, 0x523b5d2e, 0x52368c6e, 0x5231bb7b, 0x522cea55, 0x522818fc,
+    0x52234771, 0x521e75b3,
+  0x5219a3c3, 0x5214d1a0, 0x520fff4a, 0x520b2cc2, 0x52065a07, 0x52018719,
+    0x51fcb3f9, 0x51f7e0a6,
+  0x51f30d21, 0x51ee3969, 0x51e9657e, 0x51e49162, 0x51dfbd12, 0x51dae890,
+    0x51d613dc, 0x51d13ef5,
+  0x51cc69db, 0x51c79490, 0x51c2bf11, 0x51bde960, 0x51b9137d, 0x51b43d68,
+    0x51af6720, 0x51aa90a5,
+  0x51a5b9f9, 0x51a0e31a, 0x519c0c08, 0x519734c4, 0x51925d4e, 0x518d85a6,
+    0x5188adcb, 0x5183d5be,
+  0x517efd7f, 0x517a250d, 0x51754c69, 0x51707393, 0x516b9a8b, 0x5166c150,
+    0x5161e7e4, 0x515d0e45,
+  0x51583473, 0x51535a70, 0x514e803b, 0x5149a5d3, 0x5144cb39, 0x513ff06d,
+    0x513b156f, 0x51363a3f,
+  0x51315edd, 0x512c8348, 0x5127a782, 0x5122cb8a, 0x511def5f, 0x51191302,
+    0x51143674, 0x510f59b3,
+  0x510a7cc1, 0x51059f9c, 0x5100c246, 0x50fbe4bd, 0x50f70703, 0x50f22916,
+    0x50ed4af8, 0x50e86ca8,
+  0x50e38e25, 0x50deaf71, 0x50d9d08b, 0x50d4f173, 0x50d0122a, 0x50cb32ae,
+    0x50c65301, 0x50c17322,
+  0x50bc9311, 0x50b7b2ce, 0x50b2d259, 0x50adf1b3, 0x50a910db, 0x50a42fd1,
+    0x509f4e95, 0x509a6d28,
+  0x50958b88, 0x5090a9b8, 0x508bc7b5, 0x5086e581, 0x5082031b, 0x507d2083,
+    0x50783dba, 0x50735abf,
+  0x506e7793, 0x50699435, 0x5064b0a5, 0x505fcce4, 0x505ae8f1, 0x505604cd,
+    0x50512077, 0x504c3bef,
+  0x50475736, 0x5042724c, 0x503d8d30, 0x5038a7e2, 0x5033c263, 0x502edcb2,
+    0x5029f6d1, 0x502510bd,
+  0x50202a78, 0x501b4402, 0x50165d5a, 0x50117681, 0x500c8f77, 0x5007a83b,
+    0x5002c0cd, 0x4ffdd92f,
+  0x4ff8f15f, 0x4ff4095e, 0x4fef212b, 0x4fea38c7, 0x4fe55032, 0x4fe0676c,
+    0x4fdb7e74, 0x4fd6954b,
+  0x4fd1abf0, 0x4fccc265, 0x4fc7d8a8, 0x4fc2eeba, 0x4fbe049b, 0x4fb91a4b,
+    0x4fb42fc9, 0x4faf4517,
+  0x4faa5a33, 0x4fa56f1e, 0x4fa083d8, 0x4f9b9861, 0x4f96acb8, 0x4f91c0df,
+    0x4f8cd4d4, 0x4f87e899,
+  0x4f82fc2c, 0x4f7e0f8f, 0x4f7922c0, 0x4f7435c0, 0x4f6f488f, 0x4f6a5b2e,
+    0x4f656d9b, 0x4f607fd7,
+  0x4f5b91e3, 0x4f56a3bd, 0x4f51b566, 0x4f4cc6df, 0x4f47d827, 0x4f42e93d,
+    0x4f3dfa23, 0x4f390ad8,
+  0x4f341b5c, 0x4f2f2baf, 0x4f2a3bd2, 0x4f254bc3, 0x4f205b84, 0x4f1b6b14,
+    0x4f167a73, 0x4f1189a1,
+  0x4f0c989f, 0x4f07a76b, 0x4f02b608, 0x4efdc473, 0x4ef8d2ad, 0x4ef3e0b7,
+    0x4eeeee90, 0x4ee9fc39,
+  0x4ee509b1, 0x4ee016f8, 0x4edb240e, 0x4ed630f4, 0x4ed13da9, 0x4ecc4a2e,
+    0x4ec75682, 0x4ec262a5,
+  0x4ebd6e98, 0x4eb87a5a, 0x4eb385ec, 0x4eae914d, 0x4ea99c7d, 0x4ea4a77d,
+    0x4e9fb24d, 0x4e9abcec,
+  0x4e95c75b, 0x4e90d199, 0x4e8bdba6, 0x4e86e583, 0x4e81ef30, 0x4e7cf8ac,
+    0x4e7801f8, 0x4e730b14,
+  0x4e6e13ff, 0x4e691cba, 0x4e642544, 0x4e5f2d9e, 0x4e5a35c7, 0x4e553dc1,
+    0x4e50458a, 0x4e4b4d22,
+  0x4e46548b, 0x4e415bc3, 0x4e3c62cb, 0x4e3769a2, 0x4e32704a, 0x4e2d76c1,
+    0x4e287d08, 0x4e23831e,
+  0x4e1e8905, 0x4e198ebb, 0x4e149441, 0x4e0f9997, 0x4e0a9ebd, 0x4e05a3b2,
+    0x4e00a878, 0x4dfbad0d,
+  0x4df6b173, 0x4df1b5a8, 0x4decb9ad, 0x4de7bd82, 0x4de2c127, 0x4dddc49c,
+    0x4dd8c7e1, 0x4dd3caf6,
+  0x4dcecdda, 0x4dc9d08f, 0x4dc4d314, 0x4dbfd569, 0x4dbad78e, 0x4db5d983,
+    0x4db0db48, 0x4dabdcdd,
+  0x4da6de43, 0x4da1df78, 0x4d9ce07d, 0x4d97e153, 0x4d92e1f9, 0x4d8de26f,
+    0x4d88e2b5, 0x4d83e2cb,
+  0x4d7ee2b1, 0x4d79e268, 0x4d74e1ef, 0x4d6fe146, 0x4d6ae06d, 0x4d65df64,
+    0x4d60de2c, 0x4d5bdcc4,
+  0x4d56db2d, 0x4d51d965, 0x4d4cd76e, 0x4d47d547, 0x4d42d2f1, 0x4d3dd06b,
+    0x4d38cdb5, 0x4d33cad0,
+  0x4d2ec7bb, 0x4d29c476, 0x4d24c102, 0x4d1fbd5e, 0x4d1ab98b, 0x4d15b588,
+    0x4d10b155, 0x4d0bacf3,
+  0x4d06a862, 0x4d01a3a0, 0x4cfc9eb0, 0x4cf79990, 0x4cf29440, 0x4ced8ec1,
+    0x4ce88913, 0x4ce38335,
+  0x4cde7d28, 0x4cd976eb, 0x4cd4707f, 0x4ccf69e3, 0x4cca6318, 0x4cc55c1e,
+    0x4cc054f4, 0x4cbb4d9b,
+  0x4cb64613, 0x4cb13e5b, 0x4cac3674, 0x4ca72e5e, 0x4ca22619, 0x4c9d1da4,
+    0x4c981500, 0x4c930c2d,
+  0x4c8e032a, 0x4c88f9f8, 0x4c83f097, 0x4c7ee707, 0x4c79dd48, 0x4c74d359,
+    0x4c6fc93b, 0x4c6abeef,
+  0x4c65b473, 0x4c60a9c8, 0x4c5b9eed, 0x4c5693e4, 0x4c5188ac, 0x4c4c7d44,
+    0x4c4771ae, 0x4c4265e8,
+  0x4c3d59f3, 0x4c384dd0, 0x4c33417d, 0x4c2e34fb, 0x4c29284b, 0x4c241b6b,
+    0x4c1f0e5c, 0x4c1a011f,
+  0x4c14f3b2, 0x4c0fe617, 0x4c0ad84c, 0x4c05ca53, 0x4c00bc2b, 0x4bfbadd4,
+    0x4bf69f4e, 0x4bf19099,
+  0x4bec81b5, 0x4be772a3, 0x4be26362, 0x4bdd53f2, 0x4bd84453, 0x4bd33485,
+    0x4bce2488, 0x4bc9145d,
+  0x4bc40403, 0x4bbef37b, 0x4bb9e2c3, 0x4bb4d1dd, 0x4bafc0c8, 0x4baaaf85,
+    0x4ba59e12, 0x4ba08c72,
+  0x4b9b7aa2, 0x4b9668a4, 0x4b915677, 0x4b8c441c, 0x4b873192, 0x4b821ed9,
+    0x4b7d0bf2, 0x4b77f8dc,
+  0x4b72e598, 0x4b6dd225, 0x4b68be84, 0x4b63aab4, 0x4b5e96b6, 0x4b598289,
+    0x4b546e2d, 0x4b4f59a4,
+  0x4b4a44eb, 0x4b453005, 0x4b401aef, 0x4b3b05ac, 0x4b35f03a, 0x4b30da9a,
+    0x4b2bc4cb, 0x4b26aece,
+  0x4b2198a2, 0x4b1c8248, 0x4b176bc0, 0x4b12550a, 0x4b0d3e25, 0x4b082712,
+    0x4b030fd1, 0x4afdf861,
+  0x4af8e0c3, 0x4af3c8f7, 0x4aeeb0fd, 0x4ae998d4, 0x4ae4807d, 0x4adf67f8,
+    0x4ada4f45, 0x4ad53664,
+  0x4ad01d54, 0x4acb0417, 0x4ac5eaab, 0x4ac0d111, 0x4abbb749, 0x4ab69d53,
+    0x4ab1832f, 0x4aac68dc,
+  0x4aa74e5c, 0x4aa233ae, 0x4a9d18d1, 0x4a97fdc7, 0x4a92e28e, 0x4a8dc728,
+    0x4a88ab93, 0x4a838fd1,
+  0x4a7e73e0, 0x4a7957c2, 0x4a743b76, 0x4a6f1efc, 0x4a6a0253, 0x4a64e57d,
+    0x4a5fc879, 0x4a5aab48,
+  0x4a558de8, 0x4a50705a, 0x4a4b529f, 0x4a4634b6, 0x4a41169f, 0x4a3bf85a,
+    0x4a36d9e7, 0x4a31bb47,
+  0x4a2c9c79, 0x4a277d7d, 0x4a225e53, 0x4a1d3efc, 0x4a181f77, 0x4a12ffc4,
+    0x4a0ddfe4, 0x4a08bfd5,
+  0x4a039f9a, 0x49fe7f30, 0x49f95e99, 0x49f43dd4, 0x49ef1ce2, 0x49e9fbc2,
+    0x49e4da74, 0x49dfb8f9,
+  0x49da9750, 0x49d5757a, 0x49d05376, 0x49cb3145, 0x49c60ee6, 0x49c0ec59,
+    0x49bbc9a0, 0x49b6a6b8,
+  0x49b183a3, 0x49ac6061, 0x49a73cf1, 0x49a21954, 0x499cf589, 0x4997d191,
+    0x4992ad6c, 0x498d8919,
+  0x49886499, 0x49833fec, 0x497e1b11, 0x4978f609, 0x4973d0d3, 0x496eab70,
+    0x496985e0, 0x49646023,
+  0x495f3a38, 0x495a1420, 0x4954eddb, 0x494fc768, 0x494aa0c9, 0x494579fc,
+    0x49405302, 0x493b2bdb,
+  0x49360486, 0x4930dd05, 0x492bb556, 0x49268d7a, 0x49216571, 0x491c3d3b,
+    0x491714d8, 0x4911ec47,
+  0x490cc38a, 0x49079aa0, 0x49027188, 0x48fd4844, 0x48f81ed2, 0x48f2f534,
+    0x48edcb68, 0x48e8a170,
+  0x48e3774a, 0x48de4cf8, 0x48d92278, 0x48d3f7cc, 0x48ceccf3, 0x48c9a1ed,
+    0x48c476b9, 0x48bf4b59,
+  0x48ba1fcd, 0x48b4f413, 0x48afc82c, 0x48aa9c19, 0x48a56fd9, 0x48a0436c,
+    0x489b16d2, 0x4895ea0b,
+  0x4890bd18, 0x488b8ff8, 0x488662ab, 0x48813531, 0x487c078b, 0x4876d9b8,
+    0x4871abb8, 0x486c7d8c,
+  0x48674f33, 0x486220ad, 0x485cf1fa, 0x4857c31b, 0x48529410, 0x484d64d7,
+    0x48483572, 0x484305e1,
+  0x483dd623, 0x4838a638, 0x48337621, 0x482e45dd, 0x4829156d, 0x4823e4d0,
+    0x481eb407, 0x48198311,
+  0x481451ef, 0x480f20a0, 0x4809ef25, 0x4804bd7e, 0x47ff8baa, 0x47fa59a9,
+    0x47f5277d, 0x47eff523,
+  0x47eac29e, 0x47e58fec, 0x47e05d0e, 0x47db2a03, 0x47d5f6cc, 0x47d0c369,
+    0x47cb8fd9, 0x47c65c1d,
+  0x47c12835, 0x47bbf421, 0x47b6bfe0, 0x47b18b74, 0x47ac56da, 0x47a72215,
+    0x47a1ed24, 0x479cb806,
+  0x479782bc, 0x47924d46, 0x478d17a4, 0x4787e1d6, 0x4782abdb, 0x477d75b5,
+    0x47783f62, 0x477308e3,
+  0x476dd239, 0x47689b62, 0x4763645f, 0x475e2d30, 0x4758f5d5, 0x4753be4e,
+    0x474e869b, 0x47494ebc,
+  0x474416b1, 0x473ede7a, 0x4739a617, 0x47346d89, 0x472f34ce, 0x4729fbe7,
+    0x4724c2d5, 0x471f8996,
+  0x471a502c, 0x47151696, 0x470fdcd4, 0x470aa2e6, 0x470568cd, 0x47002e87,
+    0x46faf416, 0x46f5b979,
+  0x46f07eb0, 0x46eb43bc, 0x46e6089b, 0x46e0cd4f, 0x46db91d8, 0x46d65634,
+    0x46d11a65, 0x46cbde6a,
+  0x46c6a244, 0x46c165f1, 0x46bc2974, 0x46b6ecca, 0x46b1aff5, 0x46ac72f4,
+    0x46a735c8, 0x46a1f870,
+  0x469cbaed, 0x46977d3e, 0x46923f63, 0x468d015d, 0x4687c32c, 0x468284cf,
+    0x467d4646, 0x46780792,
+  0x4672c8b3, 0x466d89a8, 0x46684a71, 0x46630b0f, 0x465dcb82, 0x46588bc9,
+    0x46534be5, 0x464e0bd6,
+  0x4648cb9b, 0x46438b35, 0x463e4aa3, 0x463909e7, 0x4633c8fe, 0x462e87eb,
+    0x462946ac, 0x46240542,
+  0x461ec3ad, 0x461981ec, 0x46144001, 0x460efde9, 0x4609bba7, 0x4604793a,
+    0x45ff36a1, 0x45f9f3dd,
+  0x45f4b0ee, 0x45ef6dd4, 0x45ea2a8f, 0x45e4e71f, 0x45dfa383, 0x45da5fbc,
+    0x45d51bcb, 0x45cfd7ae,
+  0x45ca9366, 0x45c54ef3, 0x45c00a55, 0x45bac58c, 0x45b58098, 0x45b03b79,
+    0x45aaf630, 0x45a5b0bb,
+  0x45a06b1b, 0x459b2550, 0x4595df5a, 0x45909939, 0x458b52ee, 0x45860c77,
+    0x4580c5d6, 0x457b7f0a,
+  0x45763813, 0x4570f0f1, 0x456ba9a4, 0x4566622c, 0x45611a8a, 0x455bd2bc,
+    0x45568ac4, 0x455142a2,
+  0x454bfa54, 0x4546b1dc, 0x45416939, 0x453c206b, 0x4536d773, 0x45318e4f,
+    0x452c4502, 0x4526fb89,
+  0x4521b1e6, 0x451c6818, 0x45171e20, 0x4511d3fd, 0x450c89af, 0x45073f37,
+    0x4501f494, 0x44fca9c6,
+  0x44f75ecf, 0x44f213ac, 0x44ecc85f, 0x44e77ce7, 0x44e23145, 0x44dce579,
+    0x44d79982, 0x44d24d60,
+  0x44cd0114, 0x44c7b49e, 0x44c267fd, 0x44bd1b32, 0x44b7ce3c, 0x44b2811c,
+    0x44ad33d2, 0x44a7e65d,
+  0x44a298be, 0x449d4af5, 0x4497fd01, 0x4492aee3, 0x448d609b, 0x44881228,
+    0x4482c38b, 0x447d74c4,
+  0x447825d2, 0x4472d6b7, 0x446d8771, 0x44683801, 0x4462e866, 0x445d98a2,
+    0x445848b3, 0x4452f89b,
+  0x444da858, 0x444857ea, 0x44430753, 0x443db692, 0x443865a7, 0x44331491,
+    0x442dc351, 0x442871e8,
+  0x44232054, 0x441dce96, 0x44187caf, 0x44132a9d, 0x440dd861, 0x440885fc,
+    0x4403336c, 0x43fde0b2,
+  0x43f88dcf, 0x43f33ac1, 0x43ede78a, 0x43e89429, 0x43e3409d, 0x43ddece8,
+    0x43d8990a, 0x43d34501,
+  0x43cdf0ce, 0x43c89c72, 0x43c347eb, 0x43bdf33b, 0x43b89e62, 0x43b3495e,
+    0x43adf431, 0x43a89ed9,
+  0x43a34959, 0x439df3ae, 0x43989dda, 0x439347dc, 0x438df1b4, 0x43889b63,
+    0x438344e8, 0x437dee43,
+  0x43789775, 0x4373407d, 0x436de95b, 0x43689210, 0x43633a9c, 0x435de2fd,
+    0x43588b36, 0x43533344,
+  0x434ddb29, 0x434882e5, 0x43432a77, 0x433dd1e0, 0x4338791f, 0x43332035,
+    0x432dc721, 0x43286de4,
+  0x4323147d, 0x431dbaed, 0x43186133, 0x43130751, 0x430dad44, 0x4308530f,
+    0x4302f8b0, 0x42fd9e28,
+  0x42f84376, 0x42f2e89b, 0x42ed8d97, 0x42e83269, 0x42e2d713, 0x42dd7b93,
+    0x42d81fe9, 0x42d2c417,
+  0x42cd681b, 0x42c80bf6, 0x42c2afa8, 0x42bd5331, 0x42b7f690, 0x42b299c7,
+    0x42ad3cd4, 0x42a7dfb8,
+  0x42a28273, 0x429d2505, 0x4297c76e, 0x429269ae, 0x428d0bc4, 0x4287adb2,
+    0x42824f76, 0x427cf112,
+  0x42779285, 0x427233ce, 0x426cd4ef, 0x426775e6, 0x426216b5, 0x425cb75a,
+    0x425757d7, 0x4251f82b,
+  0x424c9856, 0x42473858, 0x4241d831, 0x423c77e1, 0x42371769, 0x4231b6c7,
+    0x422c55fd, 0x4226f50a,
+  0x422193ee, 0x421c32a9, 0x4216d13c, 0x42116fa5, 0x420c0de6, 0x4206abfe,
+    0x420149ee, 0x41fbe7b5,
+  0x41f68553, 0x41f122c8, 0x41ebc015, 0x41e65d39, 0x41e0fa35, 0x41db9707,
+    0x41d633b1, 0x41d0d033,
+  0x41cb6c8c, 0x41c608bc, 0x41c0a4c4, 0x41bb40a3, 0x41b5dc5a, 0x41b077e8,
+    0x41ab134e, 0x41a5ae8b,
+  0x41a049a0, 0x419ae48c, 0x41957f4f, 0x419019eb, 0x418ab45d, 0x41854ea8,
+    0x417fe8ca, 0x417a82c3,
+  0x41751c94, 0x416fb63d, 0x416a4fbd, 0x4164e916, 0x415f8245, 0x415a1b4d,
+    0x4154b42c, 0x414f4ce2,
+  0x4149e571, 0x41447dd7, 0x413f1615, 0x4139ae2b, 0x41344618, 0x412edddd,
+    0x4129757b, 0x41240cef,
+  0x411ea43c, 0x41193b61, 0x4113d25d, 0x410e6931, 0x4108ffdd, 0x41039661,
+    0x40fe2cbd, 0x40f8c2f1,
+  0x40f358fc, 0x40edeee0, 0x40e8849b, 0x40e31a2f, 0x40ddaf9b, 0x40d844de,
+    0x40d2d9f9, 0x40cd6eed,
+  0x40c803b8, 0x40c2985c, 0x40bd2cd8, 0x40b7c12b, 0x40b25557, 0x40ace95b,
+    0x40a77d37, 0x40a210eb,
+  0x409ca477, 0x409737dc, 0x4091cb18, 0x408c5e2d, 0x4086f11a, 0x408183df,
+    0x407c167c, 0x4076a8f1,
+  0x40713b3f, 0x406bcd65, 0x40665f63, 0x4060f13a, 0x405b82e9, 0x40561470,
+    0x4050a5cf, 0x404b3707,
+  0x4045c817, 0x404058ff, 0x403ae9c0, 0x40357a59, 0x40300acb, 0x402a9b15,
+    0x40252b37, 0x401fbb32,
+  0x401a4b05, 0x4014dab1, 0x400f6a35, 0x4009f992, 0x400488c7, 0x3fff17d5,
+    0x3ff9a6bb, 0x3ff4357a,
+  0x3feec411, 0x3fe95281, 0x3fe3e0c9, 0x3fde6eeb, 0x3fd8fce4, 0x3fd38ab6,
+    0x3fce1861, 0x3fc8a5e5,
+  0x3fc33341, 0x3fbdc076, 0x3fb84d83, 0x3fb2da6a, 0x3fad6729, 0x3fa7f3c0,
+    0x3fa28031, 0x3f9d0c7a,
+  0x3f97989c, 0x3f922496, 0x3f8cb06a, 0x3f873c16, 0x3f81c79b, 0x3f7c52f9,
+    0x3f76de30, 0x3f71693f,
+  0x3f6bf428, 0x3f667ee9, 0x3f610983, 0x3f5b93f6, 0x3f561e42, 0x3f50a867,
+    0x3f4b3265, 0x3f45bc3c,
+  0x3f4045ec, 0x3f3acf75, 0x3f3558d7, 0x3f2fe211, 0x3f2a6b25, 0x3f24f412,
+    0x3f1f7cd8, 0x3f1a0577,
+  0x3f148def, 0x3f0f1640, 0x3f099e6b, 0x3f04266e, 0x3efeae4a, 0x3ef93600,
+    0x3ef3bd8f, 0x3eee44f7,
+  0x3ee8cc38, 0x3ee35352, 0x3eddda46, 0x3ed86113, 0x3ed2e7b9, 0x3ecd6e38,
+    0x3ec7f491, 0x3ec27ac2,
+  0x3ebd00cd, 0x3eb786b2, 0x3eb20c6f, 0x3eac9206, 0x3ea71777, 0x3ea19cc1,
+    0x3e9c21e4, 0x3e96a6e0,
+  0x3e912bb6, 0x3e8bb065, 0x3e8634ee, 0x3e80b950, 0x3e7b3d8c, 0x3e75c1a1,
+    0x3e70458f, 0x3e6ac957,
+  0x3e654cf8, 0x3e5fd073, 0x3e5a53c8, 0x3e54d6f6, 0x3e4f59fe, 0x3e49dcdf,
+    0x3e445f99, 0x3e3ee22e,
+  0x3e39649c, 0x3e33e6e3, 0x3e2e6904, 0x3e28eaff, 0x3e236cd4, 0x3e1dee82,
+    0x3e18700a, 0x3e12f16b,
+  0x3e0d72a6, 0x3e07f3bb, 0x3e0274aa, 0x3dfcf572, 0x3df77615, 0x3df1f691,
+    0x3dec76e6, 0x3de6f716,
+  0x3de1771f, 0x3ddbf703, 0x3dd676c0, 0x3dd0f656, 0x3dcb75c7, 0x3dc5f512,
+    0x3dc07436, 0x3dbaf335,
+  0x3db5720d, 0x3daff0c0, 0x3daa6f4c, 0x3da4edb2, 0x3d9f6bf2, 0x3d99ea0d,
+    0x3d946801, 0x3d8ee5cf,
+  0x3d896377, 0x3d83e0f9, 0x3d7e5e56, 0x3d78db8c, 0x3d73589d, 0x3d6dd587,
+    0x3d68524c, 0x3d62ceeb,
+  0x3d5d4b64, 0x3d57c7b7, 0x3d5243e4, 0x3d4cbfeb, 0x3d473bcd, 0x3d41b789,
+    0x3d3c331f, 0x3d36ae8f,
+  0x3d3129da, 0x3d2ba4fe, 0x3d261ffd, 0x3d209ad7, 0x3d1b158a, 0x3d159018,
+    0x3d100a80, 0x3d0a84c3,
+  0x3d04fee0, 0x3cff78d7, 0x3cf9f2a9, 0x3cf46c55, 0x3ceee5db, 0x3ce95f3c,
+    0x3ce3d877, 0x3cde518d,
+  0x3cd8ca7d, 0x3cd34347, 0x3ccdbbed, 0x3cc8346c, 0x3cc2acc6, 0x3cbd24fb,
+    0x3cb79d0a, 0x3cb214f4,
+  0x3cac8cb8, 0x3ca70457, 0x3ca17bd0, 0x3c9bf324, 0x3c966a53, 0x3c90e15c,
+    0x3c8b5840, 0x3c85cefe,
+  0x3c804598, 0x3c7abc0c, 0x3c75325a, 0x3c6fa883, 0x3c6a1e87, 0x3c649466,
+    0x3c5f0a20, 0x3c597fb4,
+  0x3c53f523, 0x3c4e6a6d, 0x3c48df91, 0x3c435491, 0x3c3dc96b, 0x3c383e20,
+    0x3c32b2b0, 0x3c2d271b,
+  0x3c279b61, 0x3c220f81, 0x3c1c837d, 0x3c16f753, 0x3c116b04, 0x3c0bde91,
+    0x3c0651f8, 0x3c00c53a,
+  0x3bfb3857, 0x3bf5ab50, 0x3bf01e23, 0x3bea90d1, 0x3be5035a, 0x3bdf75bf,
+    0x3bd9e7fe, 0x3bd45a19,
+  0x3bcecc0e, 0x3bc93ddf, 0x3bc3af8b, 0x3bbe2112, 0x3bb89274, 0x3bb303b1,
+    0x3bad74c9, 0x3ba7e5bd,
+  0x3ba2568c, 0x3b9cc736, 0x3b9737bb, 0x3b91a81c, 0x3b8c1857, 0x3b86886e,
+    0x3b80f861, 0x3b7b682e,
+  0x3b75d7d7, 0x3b70475c, 0x3b6ab6bb, 0x3b6525f6, 0x3b5f950c, 0x3b5a03fe,
+    0x3b5472cb, 0x3b4ee173,
+  0x3b494ff7, 0x3b43be57, 0x3b3e2c91, 0x3b389aa8, 0x3b330899, 0x3b2d7666,
+    0x3b27e40f, 0x3b225193,
+  0x3b1cbef3, 0x3b172c2e, 0x3b119945, 0x3b0c0637, 0x3b067305, 0x3b00dfaf,
+    0x3afb4c34, 0x3af5b894,
+  0x3af024d1, 0x3aea90e9, 0x3ae4fcdc, 0x3adf68ac, 0x3ad9d457, 0x3ad43fdd,
+    0x3aceab40, 0x3ac9167e,
+  0x3ac38198, 0x3abdec8d, 0x3ab8575f, 0x3ab2c20c, 0x3aad2c95, 0x3aa796fa,
+    0x3aa2013a, 0x3a9c6b57,
+  0x3a96d54f, 0x3a913f23, 0x3a8ba8d3, 0x3a86125f, 0x3a807bc7, 0x3a7ae50a,
+    0x3a754e2a, 0x3a6fb726,
+  0x3a6a1ffd, 0x3a6488b1, 0x3a5ef140, 0x3a5959ab, 0x3a53c1f3, 0x3a4e2a16,
+    0x3a489216, 0x3a42f9f2,
+  0x3a3d61a9, 0x3a37c93d, 0x3a3230ad, 0x3a2c97f9, 0x3a26ff21, 0x3a216625,
+    0x3a1bcd05, 0x3a1633c1,
+  0x3a109a5a, 0x3a0b00cf, 0x3a056720, 0x39ffcd4d, 0x39fa3356, 0x39f4993c,
+    0x39eefefe, 0x39e9649c,
+  0x39e3ca17, 0x39de2f6d, 0x39d894a0, 0x39d2f9b0, 0x39cd5e9b, 0x39c7c363,
+    0x39c22808, 0x39bc8c89,
+  0x39b6f0e6, 0x39b1551f, 0x39abb935, 0x39a61d28, 0x39a080f6, 0x399ae4a2,
+    0x39954829, 0x398fab8e,
+  0x398a0ece, 0x398471ec, 0x397ed4e5, 0x397937bc, 0x39739a6e, 0x396dfcfe,
+    0x39685f6a, 0x3962c1b2,
+  0x395d23d7, 0x395785d9, 0x3951e7b8, 0x394c4973, 0x3946ab0a, 0x39410c7f,
+    0x393b6dd0, 0x3935cefd,
+  0x39303008, 0x392a90ef, 0x3924f1b3, 0x391f5254, 0x3919b2d1, 0x3914132b,
+    0x390e7362, 0x3908d376,
+  0x39033367, 0x38fd9334, 0x38f7f2de, 0x38f25266, 0x38ecb1ca, 0x38e7110a,
+    0x38e17028, 0x38dbcf23,
+  0x38d62dfb, 0x38d08caf, 0x38caeb41, 0x38c549af, 0x38bfa7fb, 0x38ba0623,
+    0x38b46429, 0x38aec20b,
+  0x38a91fcb, 0x38a37d67, 0x389ddae1, 0x38983838, 0x3892956c, 0x388cf27d,
+    0x38874f6b, 0x3881ac36,
+  0x387c08de, 0x38766564, 0x3870c1c6, 0x386b1e06, 0x38657a23, 0x385fd61d,
+    0x385a31f5, 0x38548daa,
+  0x384ee93b, 0x384944ab, 0x38439ff7, 0x383dfb21, 0x38385628, 0x3832b10d,
+    0x382d0bce, 0x3827666d,
+  0x3821c0ea, 0x381c1b44, 0x3816757b, 0x3810cf90, 0x380b2982, 0x38058351,
+    0x37ffdcfe, 0x37fa3688,
+  0x37f48ff0, 0x37eee936, 0x37e94259, 0x37e39b59, 0x37ddf437, 0x37d84cf2,
+    0x37d2a58b, 0x37ccfe02,
+  0x37c75656, 0x37c1ae87, 0x37bc0697, 0x37b65e84, 0x37b0b64e, 0x37ab0df6,
+    0x37a5657c, 0x379fbce0,
+  0x379a1421, 0x37946b40, 0x378ec23d, 0x37891917, 0x37836fcf, 0x377dc665,
+    0x37781cd9, 0x3772732a,
+  0x376cc959, 0x37671f66, 0x37617551, 0x375bcb1a, 0x375620c1, 0x37507645,
+    0x374acba7, 0x374520e7,
+  0x373f7606, 0x3739cb02, 0x37341fdc, 0x372e7493, 0x3728c929, 0x37231d9d,
+    0x371d71ef, 0x3717c61f,
+  0x37121a2d, 0x370c6e19, 0x3706c1e2, 0x3701158a, 0x36fb6910, 0x36f5bc75,
+    0x36f00fb7, 0x36ea62d7,
+  0x36e4b5d6, 0x36df08b2, 0x36d95b6d, 0x36d3ae06, 0x36ce007d, 0x36c852d2,
+    0x36c2a506, 0x36bcf718,
+  0x36b74908, 0x36b19ad6, 0x36abec82, 0x36a63e0d, 0x36a08f76, 0x369ae0bd,
+    0x369531e3, 0x368f82e7,
+  0x3689d3c9, 0x3684248a, 0x367e7529, 0x3678c5a7, 0x36731602, 0x366d663d,
+    0x3667b655, 0x3662064c,
+  0x365c5622, 0x3656a5d6, 0x3650f569, 0x364b44da, 0x36459429, 0x363fe357,
+    0x363a3264, 0x3634814f,
+  0x362ed019, 0x36291ec1, 0x36236d48, 0x361dbbad, 0x361809f1, 0x36125814,
+    0x360ca615, 0x3606f3f5,
+  0x360141b4, 0x35fb8f52, 0x35f5dcce, 0x35f02a28, 0x35ea7762, 0x35e4c47a,
+    0x35df1171, 0x35d95e47,
+  0x35d3aafc, 0x35cdf78f, 0x35c84401, 0x35c29052, 0x35bcdc82, 0x35b72891,
+    0x35b1747e, 0x35abc04b,
+  0x35a60bf6, 0x35a05781, 0x359aa2ea, 0x3594ee32, 0x358f3959, 0x3589845f,
+    0x3583cf44, 0x357e1a08,
+  0x357864ab, 0x3572af2d, 0x356cf98e, 0x356743ce, 0x35618ded, 0x355bd7eb,
+    0x355621c9, 0x35506b85,
+  0x354ab520, 0x3544fe9b, 0x353f47f5, 0x3539912e, 0x3533da46, 0x352e233d,
+    0x35286c14, 0x3522b4c9,
+  0x351cfd5e, 0x351745d2, 0x35118e26, 0x350bd658, 0x35061e6a, 0x3500665c,
+    0x34faae2c, 0x34f4f5dc,
+  0x34ef3d6b, 0x34e984da, 0x34e3cc28, 0x34de1355, 0x34d85a62, 0x34d2a14e,
+    0x34cce819, 0x34c72ec4,
+  0x34c1754e, 0x34bbbbb8, 0x34b60202, 0x34b0482a, 0x34aa8e33, 0x34a4d41a,
+    0x349f19e2, 0x34995f88,
+  0x3493a50f, 0x348dea75, 0x34882fba, 0x348274e0, 0x347cb9e4, 0x3476fec9,
+    0x3471438d, 0x346b8830,
+  0x3465ccb4, 0x34601117, 0x345a5559, 0x3454997c, 0x344edd7e, 0x34492160,
+    0x34436521, 0x343da8c3,
+  0x3437ec44, 0x34322fa5, 0x342c72e6, 0x3426b606, 0x3420f907, 0x341b3be7,
+    0x34157ea7, 0x340fc147,
+  0x340a03c7, 0x34044626, 0x33fe8866, 0x33f8ca86, 0x33f30c85, 0x33ed4e65,
+    0x33e79024, 0x33e1d1c4,
+  0x33dc1343, 0x33d654a2, 0x33d095e2, 0x33cad701, 0x33c51801, 0x33bf58e1,
+    0x33b999a0, 0x33b3da40,
+  0x33ae1ac0, 0x33a85b20, 0x33a29b60, 0x339cdb81, 0x33971b81, 0x33915b62,
+    0x338b9b22, 0x3385dac4,
+  0x33801a45, 0x337a59a6, 0x337498e8, 0x336ed80a, 0x3369170c, 0x336355ef,
+    0x335d94b2, 0x3357d355,
+  0x335211d8, 0x334c503c, 0x33468e80, 0x3340cca5, 0x333b0aaa, 0x3335488f,
+    0x332f8655, 0x3329c3fb,
+  0x33240182, 0x331e3ee9, 0x33187c31, 0x3312b959, 0x330cf661, 0x3307334a,
+    0x33017014, 0x32fbacbe,
+  0x32f5e948, 0x32f025b4, 0x32ea61ff, 0x32e49e2c, 0x32deda39, 0x32d91626,
+    0x32d351f5, 0x32cd8da4,
+  0x32c7c933, 0x32c204a3, 0x32bc3ff4, 0x32b67b26, 0x32b0b638, 0x32aaf12b,
+    0x32a52bff, 0x329f66b4,
+  0x3299a149, 0x3293dbbf, 0x328e1616, 0x3288504e, 0x32828a67, 0x327cc460,
+    0x3276fe3a, 0x327137f6,
+  0x326b7192, 0x3265ab0f, 0x325fe46c, 0x325a1dab, 0x325456cb, 0x324e8fcc,
+    0x3248c8ad, 0x32430170,
+  0x323d3a14, 0x32377298, 0x3231aafe, 0x322be345, 0x32261b6c, 0x32205375,
+    0x321a8b5f, 0x3214c32a,
+  0x320efad6, 0x32093263, 0x320369d2, 0x31fda121, 0x31f7d852, 0x31f20f64,
+    0x31ec4657, 0x31e67d2b,
+  0x31e0b3e0, 0x31daea77, 0x31d520ef, 0x31cf5748, 0x31c98d83, 0x31c3c39e,
+    0x31bdf99b, 0x31b82f7a,
+  0x31b2653a, 0x31ac9adb, 0x31a6d05d, 0x31a105c1, 0x319b3b06, 0x3195702d,
+    0x318fa535, 0x3189da1e,
+  0x31840ee9, 0x317e4395, 0x31787823, 0x3172ac92, 0x316ce0e3, 0x31671515,
+    0x31614929, 0x315b7d1e,
+  0x3155b0f5, 0x314fe4ae, 0x314a1848, 0x31444bc3, 0x313e7f21, 0x3138b260,
+    0x3132e580, 0x312d1882,
+  0x31274b66, 0x31217e2c, 0x311bb0d3, 0x3115e35c, 0x311015c6, 0x310a4813,
+    0x31047a41, 0x30feac51,
+  0x30f8de42, 0x30f31016, 0x30ed41cb, 0x30e77362, 0x30e1a4db, 0x30dbd636,
+    0x30d60772, 0x30d03891,
+  0x30ca6991, 0x30c49a74, 0x30becb38, 0x30b8fbde, 0x30b32c66, 0x30ad5cd0,
+    0x30a78d1c, 0x30a1bd4a,
+  0x309bed5a, 0x30961d4c, 0x30904d20, 0x308a7cd6, 0x3084ac6e, 0x307edbe9,
+    0x30790b45, 0x30733a83,
+  0x306d69a4, 0x306798a7, 0x3061c78b, 0x305bf652, 0x305624fb, 0x30505387,
+    0x304a81f4, 0x3044b044,
+  0x303ede76, 0x30390c8a, 0x30333a80, 0x302d6859, 0x30279614, 0x3021c3b1,
+    0x301bf131, 0x30161e93,
+  0x30104bd7, 0x300a78fe, 0x3004a607, 0x2ffed2f2, 0x2ff8ffc0, 0x2ff32c70,
+    0x2fed5902, 0x2fe78577,
+  0x2fe1b1cf, 0x2fdbde09, 0x2fd60a25, 0x2fd03624, 0x2fca6206, 0x2fc48dc9,
+    0x2fbeb970, 0x2fb8e4f9,
+  0x2fb31064, 0x2fad3bb3, 0x2fa766e3, 0x2fa191f7, 0x2f9bbced, 0x2f95e7c5,
+    0x2f901280, 0x2f8a3d1e,
+  0x2f84679f, 0x2f7e9202, 0x2f78bc48, 0x2f72e671, 0x2f6d107c, 0x2f673a6a,
+    0x2f61643b, 0x2f5b8def,
+  0x2f55b785, 0x2f4fe0ff, 0x2f4a0a5b, 0x2f44339a, 0x2f3e5cbb, 0x2f3885c0,
+    0x2f32aea8, 0x2f2cd772,
+  0x2f27001f, 0x2f2128af, 0x2f1b5122, 0x2f157979, 0x2f0fa1b2, 0x2f09c9ce,
+    0x2f03f1cd, 0x2efe19ae,
+  0x2ef84173, 0x2ef2691b, 0x2eec90a7, 0x2ee6b815, 0x2ee0df66, 0x2edb069a,
+    0x2ed52db1, 0x2ecf54ac,
+  0x2ec97b89, 0x2ec3a24a, 0x2ebdc8ee, 0x2eb7ef75, 0x2eb215df, 0x2eac3c2d,
+    0x2ea6625d, 0x2ea08871,
+  0x2e9aae68, 0x2e94d443, 0x2e8efa00, 0x2e891fa1, 0x2e834525, 0x2e7d6a8d,
+    0x2e778fd8, 0x2e71b506,
+  0x2e6bda17, 0x2e65ff0c, 0x2e6023e5, 0x2e5a48a0, 0x2e546d3f, 0x2e4e91c2,
+    0x2e48b628, 0x2e42da71,
+  0x2e3cfe9e, 0x2e3722ae, 0x2e3146a2, 0x2e2b6a79, 0x2e258e34, 0x2e1fb1d3,
+    0x2e19d554, 0x2e13f8ba,
+  0x2e0e1c03, 0x2e083f30, 0x2e026240, 0x2dfc8534, 0x2df6a80b, 0x2df0cac6,
+    0x2deaed65, 0x2de50fe8,
+  0x2ddf324e, 0x2dd95498, 0x2dd376c5, 0x2dcd98d7, 0x2dc7bacc, 0x2dc1dca4,
+    0x2dbbfe61, 0x2db62001,
+  0x2db04186, 0x2daa62ee, 0x2da4843a, 0x2d9ea569, 0x2d98c67d, 0x2d92e774,
+    0x2d8d084f, 0x2d87290f,
+  0x2d8149b2, 0x2d7b6a39, 0x2d758aa4, 0x2d6faaf3, 0x2d69cb26, 0x2d63eb3d,
+    0x2d5e0b38, 0x2d582b17,
+  0x2d524ada, 0x2d4c6a81, 0x2d468a0c, 0x2d40a97b, 0x2d3ac8ce, 0x2d34e805,
+    0x2d2f0721, 0x2d292620,
+  0x2d234504, 0x2d1d63cc, 0x2d178278, 0x2d11a108, 0x2d0bbf7d, 0x2d05ddd5,
+    0x2cfffc12, 0x2cfa1a33,
+  0x2cf43839, 0x2cee5622, 0x2ce873f0, 0x2ce291a2, 0x2cdcaf39, 0x2cd6ccb4,
+    0x2cd0ea13, 0x2ccb0756,
+  0x2cc5247e, 0x2cbf418b, 0x2cb95e7b, 0x2cb37b51, 0x2cad980a, 0x2ca7b4a8,
+    0x2ca1d12a, 0x2c9bed91,
+  0x2c9609dd, 0x2c90260d, 0x2c8a4221, 0x2c845e1a, 0x2c7e79f7, 0x2c7895b9,
+    0x2c72b160, 0x2c6ccceb,
+  0x2c66e85b, 0x2c6103af, 0x2c5b1ee8, 0x2c553a06, 0x2c4f5508, 0x2c496fef,
+    0x2c438abb, 0x2c3da56b,
+  0x2c37c000, 0x2c31da7a, 0x2c2bf4d8, 0x2c260f1c, 0x2c202944, 0x2c1a4351,
+    0x2c145d42, 0x2c0e7719,
+  0x2c0890d4, 0x2c02aa74, 0x2bfcc3f9, 0x2bf6dd63, 0x2bf0f6b1, 0x2beb0fe5,
+    0x2be528fd, 0x2bdf41fb,
+  0x2bd95add, 0x2bd373a4, 0x2bcd8c51, 0x2bc7a4e2, 0x2bc1bd58, 0x2bbbd5b3,
+    0x2bb5edf4, 0x2bb00619,
+  0x2baa1e23, 0x2ba43613, 0x2b9e4de7, 0x2b9865a1, 0x2b927d3f, 0x2b8c94c3,
+    0x2b86ac2c, 0x2b80c37a,
+  0x2b7adaae, 0x2b74f1c6, 0x2b6f08c4, 0x2b691fa6, 0x2b63366f, 0x2b5d4d1c,
+    0x2b5763ae, 0x2b517a26,
+  0x2b4b9083, 0x2b45a6c6, 0x2b3fbced, 0x2b39d2fa, 0x2b33e8ed, 0x2b2dfec5,
+    0x2b281482, 0x2b222a24,
+  0x2b1c3fac, 0x2b165519, 0x2b106a6c, 0x2b0a7fa4, 0x2b0494c2, 0x2afea9c5,
+    0x2af8bead, 0x2af2d37b,
+  0x2aece82f, 0x2ae6fcc8, 0x2ae11146, 0x2adb25aa, 0x2ad539f4, 0x2acf4e23,
+    0x2ac96238, 0x2ac37633,
+  0x2abd8a13, 0x2ab79dd8, 0x2ab1b184, 0x2aabc515, 0x2aa5d88b, 0x2a9febe8,
+    0x2a99ff2a, 0x2a941252,
+  0x2a8e255f, 0x2a883853, 0x2a824b2c, 0x2a7c5deb, 0x2a76708f, 0x2a70831a,
+    0x2a6a958a, 0x2a64a7e0,
+  0x2a5eba1c, 0x2a58cc3e, 0x2a52de46, 0x2a4cf033, 0x2a470207, 0x2a4113c0,
+    0x2a3b2560, 0x2a3536e5,
+  0x2a2f4850, 0x2a2959a1, 0x2a236ad9, 0x2a1d7bf6, 0x2a178cf9, 0x2a119de2,
+    0x2a0baeb2, 0x2a05bf67,
+  0x29ffd003, 0x29f9e084, 0x29f3f0ec, 0x29ee013a, 0x29e8116e, 0x29e22188,
+    0x29dc3188, 0x29d6416f,
+  0x29d0513b, 0x29ca60ee, 0x29c47087, 0x29be8007, 0x29b88f6c, 0x29b29eb8,
+    0x29acadea, 0x29a6bd02,
+  0x29a0cc01, 0x299adae6, 0x2994e9b1, 0x298ef863, 0x298906fb, 0x2983157a,
+    0x297d23df, 0x2977322a,
+  0x2971405b, 0x296b4e74, 0x29655c72, 0x295f6a57, 0x29597823, 0x295385d5,
+    0x294d936d, 0x2947a0ec,
+  0x2941ae52, 0x293bbb9e, 0x2935c8d1, 0x292fd5ea, 0x2929e2ea, 0x2923efd0,
+    0x291dfc9d, 0x29180951,
+  0x291215eb, 0x290c226c, 0x29062ed4, 0x29003b23, 0x28fa4758, 0x28f45374,
+    0x28ee5f76, 0x28e86b5f,
+  0x28e27730, 0x28dc82e6, 0x28d68e84, 0x28d09a09, 0x28caa574, 0x28c4b0c6,
+    0x28bebbff, 0x28b8c71f,
+  0x28b2d226, 0x28acdd13, 0x28a6e7e8, 0x28a0f2a3, 0x289afd46, 0x289507cf,
+    0x288f123f, 0x28891c97,
+  0x288326d5, 0x287d30fa, 0x28773b07, 0x287144fa, 0x286b4ed5, 0x28655896,
+    0x285f623f, 0x28596bce,
+  0x28537545, 0x284d7ea3, 0x284787e8, 0x28419114, 0x283b9a28, 0x2835a322,
+    0x282fac04, 0x2829b4cd,
+  0x2823bd7d, 0x281dc615, 0x2817ce93, 0x2811d6f9, 0x280bdf46, 0x2805e77b,
+    0x27ffef97, 0x27f9f79a,
+  0x27f3ff85, 0x27ee0756, 0x27e80f10, 0x27e216b0, 0x27dc1e38, 0x27d625a8,
+    0x27d02cff, 0x27ca343d,
+  0x27c43b63, 0x27be4270, 0x27b84965, 0x27b25041, 0x27ac5705, 0x27a65db0,
+    0x27a06443, 0x279a6abd,
+  0x2794711f, 0x278e7768, 0x27887d99, 0x278283b2, 0x277c89b3, 0x27768f9b,
+    0x2770956a, 0x276a9b21,
+  0x2764a0c0, 0x275ea647, 0x2758abb6, 0x2752b10c, 0x274cb64a, 0x2746bb6f,
+    0x2740c07d, 0x273ac572,
+  0x2734ca4f, 0x272ecf14, 0x2728d3c0, 0x2722d855, 0x271cdcd1, 0x2716e136,
+    0x2710e582, 0x270ae9b6,
+  0x2704edd2, 0x26fef1d5, 0x26f8f5c1, 0x26f2f995, 0x26ecfd51, 0x26e700f5,
+    0x26e10480, 0x26db07f4,
+  0x26d50b50, 0x26cf0e94, 0x26c911c0, 0x26c314d4, 0x26bd17d0, 0x26b71ab4,
+    0x26b11d80, 0x26ab2034,
+  0x26a522d1, 0x269f2556, 0x269927c3, 0x26932a18, 0x268d2c55, 0x26872e7b,
+    0x26813088, 0x267b327e,
+  0x2675345d, 0x266f3623, 0x266937d2, 0x26633969, 0x265d3ae9, 0x26573c50,
+    0x26513da1, 0x264b3ed9,
+  0x26453ffa, 0x263f4103, 0x263941f5, 0x263342cf, 0x262d4392, 0x2627443d,
+    0x262144d0, 0x261b454c,
+  0x261545b0, 0x260f45fd, 0x26094633, 0x26034651, 0x25fd4657, 0x25f74646,
+    0x25f1461e, 0x25eb45de,
+  0x25e54587, 0x25df4519, 0x25d94493, 0x25d343f6, 0x25cd4341, 0x25c74276,
+    0x25c14192, 0x25bb4098,
+  0x25b53f86, 0x25af3e5d, 0x25a93d1d, 0x25a33bc6, 0x259d3a57, 0x259738d1,
+    0x25913734, 0x258b3580,
+  0x258533b5, 0x257f31d2, 0x25792fd8, 0x25732dc8, 0x256d2ba0, 0x25672961,
+    0x2561270b, 0x255b249e,
+  0x2555221a, 0x254f1f7e, 0x25491ccc, 0x25431a03, 0x253d1723, 0x2537142c,
+    0x2531111e, 0x252b0df9,
+  0x25250abd, 0x251f076a, 0x25190400, 0x25130080, 0x250cfce8, 0x2506f93a,
+    0x2500f574, 0x24faf198,
+  0x24f4eda6, 0x24eee99c, 0x24e8e57c, 0x24e2e144, 0x24dcdcf6, 0x24d6d892,
+    0x24d0d416, 0x24cacf84,
+  0x24c4cadb, 0x24bec61c, 0x24b8c146, 0x24b2bc59, 0x24acb756, 0x24a6b23b,
+    0x24a0ad0b, 0x249aa7c4,
+  0x2494a266, 0x248e9cf1, 0x24889766, 0x248291c5, 0x247c8c0d, 0x2476863e,
+    0x24708059, 0x246a7a5e,
+  0x2464744c, 0x245e6e23, 0x245867e4, 0x2452618f, 0x244c5b24, 0x244654a1,
+    0x24404e09, 0x243a475a,
+  0x24344095, 0x242e39ba, 0x242832c8, 0x24222bc0, 0x241c24a1, 0x24161d6d,
+    0x24101622, 0x240a0ec1,
+  0x24040749, 0x23fdffbc, 0x23f7f818, 0x23f1f05e, 0x23ebe88e, 0x23e5e0a7,
+    0x23dfd8ab, 0x23d9d098,
+  0x23d3c86f, 0x23cdc031, 0x23c7b7dc, 0x23c1af71, 0x23bba6f0, 0x23b59e59,
+    0x23af95ac, 0x23a98ce8,
+  0x23a3840f, 0x239d7b20, 0x2397721b, 0x23916900, 0x238b5fcf, 0x23855688,
+    0x237f4d2b, 0x237943b9,
+  0x23733a30, 0x236d3092, 0x236726dd, 0x23611d13, 0x235b1333, 0x2355093e,
+    0x234eff32, 0x2348f511,
+  0x2342eada, 0x233ce08d, 0x2336d62a, 0x2330cbb2, 0x232ac124, 0x2324b680,
+    0x231eabc7, 0x2318a0f8,
+  0x23129613, 0x230c8b19, 0x23068009, 0x230074e3, 0x22fa69a8, 0x22f45e57,
+    0x22ee52f1, 0x22e84775,
+  0x22e23be4, 0x22dc303d, 0x22d62480, 0x22d018ae, 0x22ca0cc7, 0x22c400ca,
+    0x22bdf4b8, 0x22b7e890,
+  0x22b1dc53, 0x22abd001, 0x22a5c399, 0x229fb71b, 0x2299aa89, 0x22939de1,
+    0x228d9123, 0x22878451,
+  0x22817769, 0x227b6a6c, 0x22755d59, 0x226f5032, 0x226942f5, 0x226335a2,
+    0x225d283b, 0x22571abe,
+  0x22510d2d, 0x224aff86, 0x2244f1c9, 0x223ee3f8, 0x2238d612, 0x2232c816,
+    0x222cba06, 0x2226abe0,
+  0x22209da5, 0x221a8f56, 0x221480f1, 0x220e7277, 0x220863e8, 0x22025544,
+    0x21fc468b, 0x21f637be,
+  0x21f028db, 0x21ea19e3, 0x21e40ad7, 0x21ddfbb5, 0x21d7ec7f, 0x21d1dd34,
+    0x21cbcdd3, 0x21c5be5e,
+  0x21bfaed5, 0x21b99f36, 0x21b38f83, 0x21ad7fba, 0x21a76fdd, 0x21a15fec,
+    0x219b4fe5, 0x21953fca,
+  0x218f2f9a, 0x21891f55, 0x21830efc, 0x217cfe8e, 0x2176ee0b, 0x2170dd74,
+    0x216accc8, 0x2164bc08,
+  0x215eab33, 0x21589a49, 0x2152894b, 0x214c7838, 0x21466710, 0x214055d4,
+    0x213a4484, 0x2134331f,
+  0x212e21a6, 0x21281018, 0x2121fe76, 0x211becbf, 0x2115daf4, 0x210fc914,
+    0x2109b720, 0x2103a518,
+  0x20fd92fb, 0x20f780ca, 0x20f16e84, 0x20eb5c2b, 0x20e549bd, 0x20df373a,
+    0x20d924a4, 0x20d311f9,
+  0x20ccff3a, 0x20c6ec66, 0x20c0d97f, 0x20bac683, 0x20b4b373, 0x20aea04f,
+    0x20a88d17, 0x20a279ca,
+  0x209c666a, 0x209652f5, 0x20903f6c, 0x208a2bcf, 0x2084181e, 0x207e0459,
+    0x2077f080, 0x2071dc93,
+  0x206bc892, 0x2065b47d, 0x205fa054, 0x20598c17, 0x205377c6, 0x204d6361,
+    0x20474ee8, 0x20413a5b,
+  0x203b25bb, 0x20351106, 0x202efc3e, 0x2028e761, 0x2022d271, 0x201cbd6d,
+    0x2016a856, 0x2010932a,
+  0x200a7deb, 0x20046898, 0x1ffe5331, 0x1ff83db6, 0x1ff22828, 0x1fec1286,
+    0x1fe5fcd0, 0x1fdfe707,
+  0x1fd9d12a, 0x1fd3bb39, 0x1fcda535, 0x1fc78f1d, 0x1fc178f1, 0x1fbb62b2,
+    0x1fb54c60, 0x1faf35f9,
+  0x1fa91f80, 0x1fa308f2, 0x1f9cf252, 0x1f96db9d, 0x1f90c4d5, 0x1f8aadfa,
+    0x1f84970b, 0x1f7e8009,
+  0x1f7868f4, 0x1f7251ca, 0x1f6c3a8e, 0x1f66233e, 0x1f600bdb, 0x1f59f465,
+    0x1f53dcdb, 0x1f4dc53d,
+  0x1f47ad8d, 0x1f4195c9, 0x1f3b7df2, 0x1f356608, 0x1f2f4e0a, 0x1f2935f9,
+    0x1f231dd5, 0x1f1d059e,
+  0x1f16ed54, 0x1f10d4f6, 0x1f0abc85, 0x1f04a401, 0x1efe8b6a, 0x1ef872c0,
+    0x1ef25a03, 0x1eec4132,
+  0x1ee6284f, 0x1ee00f58, 0x1ed9f64f, 0x1ed3dd32, 0x1ecdc402, 0x1ec7aac0,
+    0x1ec1916a, 0x1ebb7802,
+  0x1eb55e86, 0x1eaf44f8, 0x1ea92b56, 0x1ea311a2, 0x1e9cf7db, 0x1e96de01,
+    0x1e90c414, 0x1e8aaa14,
+  0x1e849001, 0x1e7e75dc, 0x1e785ba3, 0x1e724158, 0x1e6c26fa, 0x1e660c8a,
+    0x1e5ff206, 0x1e59d770,
+  0x1e53bcc7, 0x1e4da20c, 0x1e47873d, 0x1e416c5d, 0x1e3b5169, 0x1e353663,
+    0x1e2f1b4a, 0x1e29001e,
+  0x1e22e4e0, 0x1e1cc990, 0x1e16ae2c, 0x1e1092b6, 0x1e0a772e, 0x1e045b93,
+    0x1dfe3fe6, 0x1df82426,
+  0x1df20853, 0x1debec6f, 0x1de5d077, 0x1ddfb46e, 0x1dd99851, 0x1dd37c23,
+    0x1dcd5fe2, 0x1dc7438e,
+  0x1dc12729, 0x1dbb0ab0, 0x1db4ee26, 0x1daed189, 0x1da8b4da, 0x1da29819,
+    0x1d9c7b45, 0x1d965e5f,
+  0x1d904167, 0x1d8a245c, 0x1d840740, 0x1d7dea11, 0x1d77ccd0, 0x1d71af7d,
+    0x1d6b9217, 0x1d6574a0,
+  0x1d5f5716, 0x1d59397a, 0x1d531bcc, 0x1d4cfe0d, 0x1d46e03a, 0x1d40c256,
+    0x1d3aa460, 0x1d348658,
+  0x1d2e683e, 0x1d284a12, 0x1d222bd3, 0x1d1c0d83, 0x1d15ef21, 0x1d0fd0ad,
+    0x1d09b227, 0x1d03938f,
+  0x1cfd74e5, 0x1cf7562a, 0x1cf1375c, 0x1ceb187d, 0x1ce4f98c, 0x1cdeda89,
+    0x1cd8bb74, 0x1cd29c4d,
+  0x1ccc7d15, 0x1cc65dca, 0x1cc03e6e, 0x1cba1f01, 0x1cb3ff81, 0x1caddff0,
+    0x1ca7c04d, 0x1ca1a099,
+  0x1c9b80d3, 0x1c9560fb, 0x1c8f4112, 0x1c892117, 0x1c83010a, 0x1c7ce0ec,
+    0x1c76c0bc, 0x1c70a07b,
+  0x1c6a8028, 0x1c645fc3, 0x1c5e3f4d, 0x1c581ec6, 0x1c51fe2d, 0x1c4bdd83,
+    0x1c45bcc7, 0x1c3f9bf9,
+  0x1c397b1b, 0x1c335a2b, 0x1c2d3929, 0x1c271816, 0x1c20f6f2, 0x1c1ad5bc,
+    0x1c14b475, 0x1c0e931d,
+  0x1c0871b4, 0x1c025039, 0x1bfc2ead, 0x1bf60d0f, 0x1befeb60, 0x1be9c9a1,
+    0x1be3a7cf, 0x1bdd85ed,
+  0x1bd763fa, 0x1bd141f5, 0x1bcb1fdf, 0x1bc4fdb8, 0x1bbedb80, 0x1bb8b937,
+    0x1bb296dc, 0x1bac7471,
+  0x1ba651f5, 0x1ba02f67, 0x1b9a0cc8, 0x1b93ea19, 0x1b8dc758, 0x1b87a487,
+    0x1b8181a4, 0x1b7b5eb0,
+  0x1b753bac, 0x1b6f1897, 0x1b68f570, 0x1b62d239, 0x1b5caef1, 0x1b568b98,
+    0x1b50682e, 0x1b4a44b3,
+  0x1b442127, 0x1b3dfd8b, 0x1b37d9de, 0x1b31b620, 0x1b2b9251, 0x1b256e71,
+    0x1b1f4a81, 0x1b192680,
+  0x1b13026e, 0x1b0cde4c, 0x1b06ba19, 0x1b0095d5, 0x1afa7180, 0x1af44d1b,
+    0x1aee28a6, 0x1ae8041f,
+  0x1ae1df88, 0x1adbbae1, 0x1ad59629, 0x1acf7160, 0x1ac94c87, 0x1ac3279d,
+    0x1abd02a3, 0x1ab6dd98,
+  0x1ab0b87d, 0x1aaa9352, 0x1aa46e16, 0x1a9e48c9, 0x1a98236c, 0x1a91fdff,
+    0x1a8bd881, 0x1a85b2f3,
+  0x1a7f8d54, 0x1a7967a6, 0x1a7341e6, 0x1a6d1c17, 0x1a66f637, 0x1a60d047,
+    0x1a5aaa47, 0x1a548436,
+  0x1a4e5e15, 0x1a4837e4, 0x1a4211a3, 0x1a3beb52, 0x1a35c4f0, 0x1a2f9e7e,
+    0x1a2977fc, 0x1a23516a,
+  0x1a1d2ac8, 0x1a170416, 0x1a10dd53, 0x1a0ab681, 0x1a048f9e, 0x19fe68ac,
+    0x19f841a9, 0x19f21a96,
+  0x19ebf374, 0x19e5cc41, 0x19dfa4fe, 0x19d97dac, 0x19d35649, 0x19cd2ed7,
+    0x19c70754, 0x19c0dfc2,
+  0x19bab820, 0x19b4906e, 0x19ae68ac, 0x19a840da, 0x19a218f9, 0x199bf107,
+    0x1995c906, 0x198fa0f5,
+  0x198978d4, 0x198350a4, 0x197d2864, 0x19770014, 0x1970d7b4, 0x196aaf45,
+    0x196486c6, 0x195e5e37,
+  0x19583599, 0x19520ceb, 0x194be42d, 0x1945bb60, 0x193f9283, 0x19396997,
+    0x1933409b, 0x192d178f,
+  0x1926ee74, 0x1920c54a, 0x191a9c10, 0x191472c6, 0x190e496d, 0x19082005,
+    0x1901f68d, 0x18fbcd06,
+  0x18f5a36f, 0x18ef79c9, 0x18e95014, 0x18e3264f, 0x18dcfc7b, 0x18d6d297,
+    0x18d0a8a4, 0x18ca7ea2,
+  0x18c45491, 0x18be2a70, 0x18b80040, 0x18b1d601, 0x18ababb2, 0x18a58154,
+    0x189f56e8, 0x18992c6b,
+  0x189301e0, 0x188cd746, 0x1886ac9c, 0x188081e4, 0x187a571c, 0x18742c45,
+    0x186e015f, 0x1867d66a,
+  0x1861ab66, 0x185b8053, 0x18555530, 0x184f29ff, 0x1848febf, 0x1842d370,
+    0x183ca812, 0x18367ca5,
+  0x18305129, 0x182a259e, 0x1823fa04, 0x181dce5b, 0x1817a2a4, 0x181176dd,
+    0x180b4b08, 0x18051f24,
+  0x17fef331, 0x17f8c72f, 0x17f29b1e, 0x17ec6eff, 0x17e642d1, 0x17e01694,
+    0x17d9ea49, 0x17d3bdee,
+  0x17cd9186, 0x17c7650e, 0x17c13888, 0x17bb0bf3, 0x17b4df4f, 0x17aeb29d,
+    0x17a885dc, 0x17a2590d,
+  0x179c2c2f, 0x1795ff42, 0x178fd247, 0x1789a53d, 0x17837825, 0x177d4afe,
+    0x17771dc9, 0x1770f086,
+  0x176ac333, 0x176495d3, 0x175e6864, 0x17583ae7, 0x17520d5b, 0x174bdfc1,
+    0x1745b218, 0x173f8461,
+  0x1739569c, 0x173328c8, 0x172cfae6, 0x1726ccf6, 0x17209ef8, 0x171a70eb,
+    0x171442d0, 0x170e14a7,
+  0x1707e670, 0x1701b82a, 0x16fb89d6, 0x16f55b74, 0x16ef2d04, 0x16e8fe86,
+    0x16e2cff9, 0x16dca15f,
+  0x16d672b6, 0x16d043ff, 0x16ca153a, 0x16c3e667, 0x16bdb787, 0x16b78898,
+    0x16b1599b, 0x16ab2a90,
+  0x16a4fb77, 0x169ecc50, 0x16989d1b, 0x16926dd8, 0x168c3e87, 0x16860f29,
+    0x167fdfbc, 0x1679b042,
+  0x167380ba, 0x166d5123, 0x1667217f, 0x1660f1ce, 0x165ac20e, 0x16549241,
+    0x164e6266, 0x1648327d,
+  0x16420286, 0x163bd282, 0x1635a270, 0x162f7250, 0x16294222, 0x162311e7,
+    0x161ce19e, 0x1616b148,
+  0x161080e4, 0x160a5072, 0x16041ff3, 0x15fdef66, 0x15f7becc, 0x15f18e24,
+    0x15eb5d6e, 0x15e52cab,
+  0x15defbdb, 0x15d8cafd, 0x15d29a11, 0x15cc6918, 0x15c63812, 0x15c006fe,
+    0x15b9d5dd, 0x15b3a4ae,
+  0x15ad7372, 0x15a74228, 0x15a110d2, 0x159adf6e, 0x1594adfc, 0x158e7c7d,
+    0x15884af1, 0x15821958,
+  0x157be7b1, 0x1575b5fe, 0x156f843c, 0x1569526e, 0x15632093, 0x155ceeaa,
+    0x1556bcb4, 0x15508ab1,
+  0x154a58a1, 0x15442683, 0x153df459, 0x1537c221, 0x15318fdd, 0x152b5d8b,
+    0x15252b2c, 0x151ef8c0,
+  0x1518c648, 0x151293c2, 0x150c612f, 0x15062e8f, 0x14fffbe2, 0x14f9c928,
+    0x14f39662, 0x14ed638e,
+  0x14e730ae, 0x14e0fdc0, 0x14dacac6, 0x14d497bf, 0x14ce64ab, 0x14c8318a,
+    0x14c1fe5c, 0x14bbcb22,
+  0x14b597da, 0x14af6486, 0x14a93125, 0x14a2fdb8, 0x149cca3e, 0x149696b7,
+    0x14906323, 0x148a2f82,
+  0x1483fbd5, 0x147dc81c, 0x14779455, 0x14716082, 0x146b2ca3, 0x1464f8b7,
+    0x145ec4be, 0x145890b9,
+  0x14525ca7, 0x144c2888, 0x1445f45d, 0x143fc026, 0x14398be2, 0x14335792,
+    0x142d2335, 0x1426eecb,
+  0x1420ba56, 0x141a85d3, 0x14145145, 0x140e1caa, 0x1407e803, 0x1401b34f,
+    0x13fb7e8f, 0x13f549c3,
+  0x13ef14ea, 0x13e8e005, 0x13e2ab14, 0x13dc7616, 0x13d6410d, 0x13d00bf7,
+    0x13c9d6d4, 0x13c3a1a6,
+  0x13bd6c6b, 0x13b73725, 0x13b101d2, 0x13aacc73, 0x13a49707, 0x139e6190,
+    0x13982c0d, 0x1391f67d,
+  0x138bc0e1, 0x13858b3a, 0x137f5586, 0x13791fc6, 0x1372e9fb, 0x136cb423,
+    0x13667e3f, 0x13604850,
+  0x135a1254, 0x1353dc4c, 0x134da639, 0x1347701a, 0x134139ee, 0x133b03b7,
+    0x1334cd74, 0x132e9725,
+  0x132860ca, 0x13222a64, 0x131bf3f2, 0x1315bd73, 0x130f86ea, 0x13095054,
+    0x130319b3, 0x12fce305,
+  0x12f6ac4d, 0x12f07588, 0x12ea3eb8, 0x12e407dc, 0x12ddd0f4, 0x12d79a01,
+    0x12d16303, 0x12cb2bf8,
+  0x12c4f4e2, 0x12bebdc1, 0x12b88693, 0x12b24f5b, 0x12ac1817, 0x12a5e0c7,
+    0x129fa96c, 0x12997205,
+  0x12933a93, 0x128d0315, 0x1286cb8c, 0x128093f7, 0x127a5c57, 0x127424ac,
+    0x126decf5, 0x1267b533,
+  0x12617d66, 0x125b458d, 0x12550da9, 0x124ed5ba, 0x12489dbf, 0x124265b9,
+    0x123c2da8, 0x1235f58b,
+  0x122fbd63, 0x12298530, 0x12234cf2, 0x121d14a9, 0x1216dc54, 0x1210a3f5,
+    0x120a6b8a, 0x12043314,
+  0x11fdfa93, 0x11f7c207, 0x11f18970, 0x11eb50cd, 0x11e51820, 0x11dedf68,
+    0x11d8a6a4, 0x11d26dd6,
+  0x11cc34fc, 0x11c5fc18, 0x11bfc329, 0x11b98a2e, 0x11b35129, 0x11ad1819,
+    0x11a6defe, 0x11a0a5d8,
+  0x119a6ca7, 0x1194336b, 0x118dfa25, 0x1187c0d3, 0x11818777, 0x117b4e10,
+    0x1175149e, 0x116edb22,
+  0x1168a19b, 0x11626809, 0x115c2e6c, 0x1155f4c4, 0x114fbb12, 0x11498156,
+    0x1143478e, 0x113d0dbc,
+  0x1136d3df, 0x113099f8, 0x112a6006, 0x11242609, 0x111dec02, 0x1117b1f0,
+    0x111177d4, 0x110b3dad,
+  0x1105037c, 0x10fec940, 0x10f88efa, 0x10f254a9, 0x10ec1a4e, 0x10e5dfe8,
+    0x10dfa578, 0x10d96afe,
+  0x10d33079, 0x10ccf5ea, 0x10c6bb50, 0x10c080ac, 0x10ba45fe, 0x10b40b45,
+    0x10add082, 0x10a795b5,
+  0x10a15ade, 0x109b1ffc, 0x1094e510, 0x108eaa1a, 0x10886f19, 0x1082340f,
+    0x107bf8fa, 0x1075bddb,
+  0x106f82b2, 0x1069477f, 0x10630c41, 0x105cd0fa, 0x105695a8, 0x10505a4d,
+    0x104a1ee7, 0x1043e377,
+  0x103da7fd, 0x10376c79, 0x103130ec, 0x102af554, 0x1024b9b2, 0x101e7e06,
+    0x10184251, 0x10120691,
+  0x100bcac7, 0x10058ef4, 0xfff5317, 0xff91730, 0xff2db3e, 0xfec9f44,
+    0xfe6633f, 0xfe02730,
+  0xfd9eb18, 0xfd3aef6, 0xfcd72ca, 0xfc73695, 0xfc0fa55, 0xfbabe0c, 0xfb481ba,
+    0xfae455d,
+  0xfa808f7, 0xfa1cc87, 0xf9b900e, 0xf95538b, 0xf8f16fe, 0xf88da68, 0xf829dc8,
+    0xf7c611f,
+  0xf76246c, 0xf6fe7af, 0xf69aae9, 0xf636e1a, 0xf5d3141, 0xf56f45e, 0xf50b773,
+    0xf4a7a7d,
+  0xf443d7e, 0xf3e0076, 0xf37c365, 0xf318649, 0xf2b4925, 0xf250bf7, 0xf1ecec0,
+    0xf189180,
+  0xf125436, 0xf0c16e3, 0xf05d987, 0xeff9c21, 0xef95eb2, 0xef3213a, 0xeece3b9,
+    0xee6a62f,
+  0xee0689b, 0xeda2afe, 0xed3ed58, 0xecdafa9, 0xec771f1, 0xec1342f, 0xebaf665,
+    0xeb4b891,
+  0xeae7ab4, 0xea83ccf, 0xea1fee0, 0xe9bc0e8, 0xe9582e7, 0xe8f44dd, 0xe8906cb,
+    0xe82c8af,
+  0xe7c8a8a, 0xe764c5c, 0xe700e26, 0xe69cfe6, 0xe63919e, 0xe5d534d, 0xe5714f3,
+    0xe50d690,
+  0xe4a9824, 0xe4459af, 0xe3e1b32, 0xe37dcac, 0xe319e1d, 0xe2b5f85, 0xe2520e5,
+    0xe1ee23c,
+  0xe18a38a, 0xe1264cf, 0xe0c260c, 0xe05e740, 0xdffa86b, 0xdf9698e, 0xdf32aa8,
+    0xdecebba,
+  0xde6acc3, 0xde06dc3, 0xdda2ebb, 0xdd3efab, 0xdcdb091, 0xdc77170, 0xdc13245,
+    0xdbaf313,
+  0xdb4b3d7, 0xdae7494, 0xda83548, 0xda1f5f3, 0xd9bb696, 0xd957731, 0xd8f37c3,
+    0xd88f84d,
+  0xd82b8cf, 0xd7c7948, 0xd7639b9, 0xd6ffa22, 0xd69ba82, 0xd637ada, 0xd5d3b2a,
+    0xd56fb71,
+  0xd50bbb1, 0xd4a7be8, 0xd443c17, 0xd3dfc3e, 0xd37bc5c, 0xd317c73, 0xd2b3c81,
+    0xd24fc87,
+  0xd1ebc85, 0xd187c7b, 0xd123c69, 0xd0bfc4f, 0xd05bc2d, 0xcff7c02, 0xcf93bd0,
+    0xcf2fb96,
+  0xcecbb53, 0xce67b09, 0xce03ab7, 0xcd9fa5d, 0xcd3b9fb, 0xccd7991, 0xcc7391f,
+    0xcc0f8a5,
+  0xcbab824, 0xcb4779a, 0xcae3709, 0xca7f670, 0xca1b5cf, 0xc9b7526, 0xc953475,
+    0xc8ef3bd,
+  0xc88b2fd, 0xc827235, 0xc7c3166, 0xc75f08f, 0xc6fafb0, 0xc696ec9, 0xc632ddb,
+    0xc5cece5,
+  0xc56abe8, 0xc506ae3, 0xc4a29d6, 0xc43e8c2, 0xc3da7a6, 0xc376683, 0xc312558,
+    0xc2ae425,
+  0xc24a2eb, 0xc1e61aa, 0xc182061, 0xc11df11, 0xc0b9db9, 0xc055c5a, 0xbff1af3,
+    0xbf8d985,
+  0xbf29810, 0xbec5693, 0xbe6150f, 0xbdfd383, 0xbd991f0, 0xbd35056, 0xbcd0eb5,
+    0xbc6cd0c,
+  0xbc08b5c, 0xbba49a5, 0xbb407e7, 0xbadc621, 0xba78454, 0xba14280, 0xb9b00a5,
+    0xb94bec2,
+  0xb8e7cd9, 0xb883ae8, 0xb81f8f0, 0xb7bb6f2, 0xb7574ec, 0xb6f32df, 0xb68f0cb,
+    0xb62aeaf,
+  0xb5c6c8d, 0xb562a64, 0xb4fe834, 0xb49a5fd, 0xb4363bf, 0xb3d217a, 0xb36df2e,
+    0xb309cdb,
+  0xb2a5a81, 0xb241820, 0xb1dd5b9, 0xb17934b, 0xb1150d5, 0xb0b0e59, 0xb04cbd6,
+    0xafe894d,
+  0xaf846bc, 0xaf20425, 0xaebc187, 0xae57ee2, 0xadf3c37, 0xad8f985, 0xad2b6cc,
+    0xacc740c,
+  0xac63146, 0xabfee79, 0xab9aba6, 0xab368cc, 0xaad25eb, 0xaa6e304, 0xaa0a016,
+    0xa9a5d22,
+  0xa941a27, 0xa8dd725, 0xa87941d, 0xa81510f, 0xa7b0dfa, 0xa74cadf, 0xa6e87bd,
+    0xa684495,
+  0xa620166, 0xa5bbe31, 0xa557af5, 0xa4f37b3, 0xa48f46b, 0xa42b11d, 0xa3c6dc8,
+    0xa362a6d,
+  0xa2fe70b, 0xa29a3a3, 0xa236035, 0xa1d1cc1, 0xa16d946, 0xa1095c6, 0xa0a523f,
+    0xa040eb1,
+  0x9fdcb1e, 0x9f78784, 0x9f143e5, 0x9eb003f, 0x9e4bc93, 0x9de78e1, 0x9d83529,
+    0x9d1f16b,
+  0x9cbada7, 0x9c569dc, 0x9bf260c, 0x9b8e236, 0x9b29e59, 0x9ac5a77, 0x9a6168f,
+    0x99fd2a0,
+  0x9998eac, 0x9934ab2, 0x98d06b2, 0x986c2ac, 0x9807ea1, 0x97a3a8f, 0x973f678,
+    0x96db25a,
+  0x9676e37, 0x9612a0e, 0x95ae5e0, 0x954a1ab, 0x94e5d71, 0x9481931, 0x941d4eb,
+    0x93b90a0,
+  0x9354c4f, 0x92f07f8, 0x928c39b, 0x9227f39, 0x91c3ad2, 0x915f664, 0x90fb1f1,
+    0x9096d79,
+  0x90328fb, 0x8fce477, 0x8f69fee, 0x8f05b5f, 0x8ea16cb, 0x8e3d231, 0x8dd8d92,
+    0x8d748ed,
+  0x8d10443, 0x8cabf93, 0x8c47ade, 0x8be3624, 0x8b7f164, 0x8b1ac9f, 0x8ab67d4,
+    0x8a52304,
+  0x89ede2f, 0x8989955, 0x8925475, 0x88c0f90, 0x885caa5, 0x87f85b5, 0x87940c1,
+    0x872fbc6,
+  0x86cb6c7, 0x86671c2, 0x8602cb9, 0x859e7aa, 0x853a296, 0x84d5d7d, 0x847185e,
+    0x840d33b,
+  0x83a8e12, 0x83448e5, 0x82e03b2, 0x827be7a, 0x821793e, 0x81b33fc, 0x814eeb5,
+    0x80ea969,
+  0x8086419, 0x8021ec3, 0x7fbd968, 0x7f59409, 0x7ef4ea4, 0x7e9093b, 0x7e2c3cd,
+    0x7dc7e5a,
+  0x7d638e2, 0x7cff365, 0x7c9ade4, 0x7c3685d, 0x7bd22d2, 0x7b6dd42, 0x7b097ad,
+    0x7aa5214,
+  0x7a40c76, 0x79dc6d3, 0x797812b, 0x7913b7f, 0x78af5ce, 0x784b019, 0x77e6a5e,
+    0x77824a0,
+  0x771dedc, 0x76b9914, 0x7655347, 0x75f0d76, 0x758c7a1, 0x75281c6, 0x74c3be7,
+    0x745f604,
+  0x73fb01c, 0x7396a30, 0x733243f, 0x72cde4a, 0x7269851, 0x7205253, 0x71a0c50,
+    0x713c64a,
+  0x70d803f, 0x7073a2f, 0x700f41b, 0x6faae03, 0x6f467e7, 0x6ee21c6, 0x6e7dba1,
+    0x6e19578,
+  0x6db4f4a, 0x6d50919, 0x6cec2e3, 0x6c87ca9, 0x6c2366a, 0x6bbf028, 0x6b5a9e1,
+    0x6af6396,
+  0x6a91d47, 0x6a2d6f4, 0x69c909d, 0x6964a42, 0x69003e3, 0x689bd80, 0x6837718,
+    0x67d30ad,
+  0x676ea3d, 0x670a3ca, 0x66a5d53, 0x66416d8, 0x65dd058, 0x65789d5, 0x651434e,
+    0x64afcc3,
+  0x644b634, 0x63e6fa2, 0x638290b, 0x631e271, 0x62b9bd3, 0x6255531, 0x61f0e8b,
+    0x618c7e1,
+  0x6128134, 0x60c3a83, 0x605f3ce, 0x5ffad15, 0x5f96659, 0x5f31f99, 0x5ecd8d6,
+    0x5e6920e,
+  0x5e04b43, 0x5da0475, 0x5d3bda3, 0x5cd76cd, 0x5c72ff4, 0x5c0e917, 0x5baa237,
+    0x5b45b53,
+  0x5ae146b, 0x5a7cd80, 0x5a18692, 0x59b3fa0, 0x594f8aa, 0x58eb1b2, 0x5886ab5,
+    0x58223b6,
+  0x57bdcb3, 0x57595ac, 0x56f4ea2, 0x5690795, 0x562c085, 0x55c7971, 0x556325a,
+    0x54feb3f,
+  0x549a422, 0x5435d01, 0x53d15dd, 0x536ceb5, 0x530878a, 0x52a405d, 0x523f92c,
+    0x51db1f7,
+  0x5176ac0, 0x5112385, 0x50adc48, 0x5049507, 0x4fe4dc3, 0x4f8067c, 0x4f1bf32,
+    0x4eb77e5,
+  0x4e53095, 0x4dee942, 0x4d8a1ec, 0x4d25a93, 0x4cc1337, 0x4c5cbd8, 0x4bf8476,
+    0x4b93d11,
+  0x4b2f5a9, 0x4acae3e, 0x4a666d1, 0x4a01f60, 0x499d7ed, 0x4939077, 0x48d48fe,
+    0x4870182,
+  0x480ba04, 0x47a7282, 0x4742afe, 0x46de377, 0x4679bee, 0x4615461, 0x45b0cd2,
+    0x454c541,
+  0x44e7dac, 0x4483615, 0x441ee7c, 0x43ba6df, 0x4355f40, 0x42f179f, 0x428cffb,
+    0x4228854,
+  0x41c40ab, 0x415f8ff, 0x40fb151, 0x40969a0, 0x40321ed, 0x3fcda37, 0x3f6927f,
+    0x3f04ac4,
+  0x3ea0307, 0x3e3bb48, 0x3dd7386, 0x3d72bc2, 0x3d0e3fb, 0x3ca9c32, 0x3c45467,
+    0x3be0c99,
+  0x3b7c4c9, 0x3b17cf7, 0x3ab3523, 0x3a4ed4c, 0x39ea573, 0x3985d97, 0x39215ba,
+    0x38bcdda,
+  0x38585f8, 0x37f3e14, 0x378f62e, 0x372ae46, 0x36c665b, 0x3661e6f, 0x35fd680,
+    0x3598e8f,
+  0x353469c, 0x34cfea8, 0x346b6b1, 0x3406eb8, 0x33a26bd, 0x333dec0, 0x32d96c1,
+    0x3274ec0,
+  0x32106bd, 0x31abeb9, 0x31476b2, 0x30e2ea9, 0x307e69f, 0x3019e93, 0x2fb5684,
+    0x2f50e74,
+  0x2eec663, 0x2e87e4f, 0x2e2363a, 0x2dbee22, 0x2d5a609, 0x2cf5def, 0x2c915d2,
+    0x2c2cdb4,
+  0x2bc8594, 0x2b63d73, 0x2aff54f, 0x2a9ad2a, 0x2a36504, 0x29d1cdc, 0x296d4b2,
+    0x2908c87,
+  0x28a445a, 0x283fc2b, 0x27db3fb, 0x2776bc9, 0x2712396, 0x26adb62, 0x264932b,
+    0x25e4af4,
+  0x25802bb, 0x251ba80, 0x24b7244, 0x2452a07, 0x23ee1c8, 0x2389988, 0x2325147,
+    0x22c0904,
+  0x225c0bf, 0x21f787a, 0x2193033, 0x212e7eb, 0x20c9fa1, 0x2065757, 0x2000f0b,
+    0x1f9c6be,
+  0x1f37e6f, 0x1ed3620, 0x1e6edcf, 0x1e0a57d, 0x1da5d2a, 0x1d414d6, 0x1cdcc80,
+    0x1c7842a,
+  0x1c13bd2, 0x1baf37a, 0x1b4ab20, 0x1ae62c5, 0x1a81a69, 0x1a1d20c, 0x19b89ae,
+    0x1954150,
+  0x18ef8f0, 0x188b08f, 0x182682d, 0x17c1fcb, 0x175d767, 0x16f8f03, 0x169469d,
+    0x162fe37,
+  0x15cb5d0, 0x1566d68, 0x15024ff, 0x149dc96, 0x143942b, 0x13d4bc0, 0x1370354,
+    0x130bae7,
+  0x12a727a, 0x1242a0c, 0x11de19d, 0x117992e, 0x11150be, 0x10b084d, 0x104bfdb,
+    0xfe7769,
+  0xf82ef6, 0xf1e683, 0xeb9e0f, 0xe5559b, 0xdf0d26, 0xd8c4b0, 0xd27c3a,
+    0xcc33c3,
+  0xc5eb4c, 0xbfa2d5, 0xb95a5d, 0xb311e4, 0xacc96b, 0xa680f2, 0xa03878,
+    0x99effe,
+  0x93a784, 0x8d5f09, 0x87168e, 0x80ce12, 0x7a8597, 0x743d1a, 0x6df49e,
+    0x67ac21,
+  0x6163a5, 0x5b1b27, 0x54d2aa, 0x4e8a2c, 0x4841af, 0x41f931, 0x3bb0b3,
+    0x356835,
+  0x2f1fb6, 0x28d738, 0x228eb9, 0x1c463b, 0x15fdbc, 0xfb53d, 0x96cbe, 0x3243f,
+
+};
+
+/**    
+ * @brief  Initialization function for the Q31 DCT4/IDCT4.   
+ * @param[in,out] *S         points to an instance of Q31 DCT4/IDCT4 structure.   
+ * @param[in]     *S_RFFT    points to an instance of Q31 RFFT/RIFFT structure   
+ * @param[in]     *S_CFFT    points to an instance of Q31 CFFT/CIFFT structure   
+ * @param[in]     N          length of the DCT4.   
+ * @param[in]     Nby2       half of the length of the DCT4.   
+ * @param[in]     normalize  normalizing factor.   
+ * @return		  arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.   
+ * \par Normalizing factor:    
+ * The normalizing factor is <code>sqrt(2/N)</code>, which depends on the size of transform <code>N</code>.    
+ * Normalizing factors in 1.31 format are mentioned in the table below for different DCT sizes:    
+ * \image html dct4NormalizingQ31Table.gif    
+ */
+
+arm_status arm_dct4_init_q31(
+  arm_dct4_instance_q31 * S,
+  arm_rfft_instance_q31 * S_RFFT,
+  arm_cfft_radix4_instance_q31 * S_CFFT,
+  uint16_t N,
+  uint16_t Nby2,
+  q31_t normalize)
+{
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+
+  /* Initializing the pointer array with the weight table base addresses of different lengths */
+  q31_t *twiddlePtr[4] = { (q31_t *) WeightsQ31_128, (q31_t *) WeightsQ31_512,
+    (q31_t *) WeightsQ31_2048, (q31_t *) WeightsQ31_8192
+  };
+
+  /* Initializing the pointer array with the cos factor table base addresses of different lengths */
+  q31_t *pCosFactor[4] =
+    { (q31_t *) cos_factorsQ31_128, (q31_t *) cos_factorsQ31_512,
+    (q31_t *) cos_factorsQ31_2048, (q31_t *) cos_factorsQ31_8192
+  };
+
+  /* Initialize the DCT4 length */
+  S->N = N;
+
+  /* Initialize the half of DCT4 length */
+  S->Nby2 = Nby2;
+
+  /* Initialize the DCT4 Normalizing factor */
+  S->normalize = normalize;
+
+  /* Initialize Real FFT Instance */
+  S->pRfft = S_RFFT;
+
+  /* Initialize Complex FFT Instance */
+  S->pCfft = S_CFFT;
+
+  switch (N)
+  {
+    /* Initialize the table modifier values */
+  case 8192u:
+    S->pTwiddle = twiddlePtr[3];
+    S->pCosFactor = pCosFactor[3];
+    break;
+  case 2048u:
+    S->pTwiddle = twiddlePtr[2];
+    S->pCosFactor = pCosFactor[2];
+    break;
+  case 512u:
+    S->pTwiddle = twiddlePtr[1];
+    S->pCosFactor = pCosFactor[1];
+    break;
+  case 128u:
+    S->pTwiddle = twiddlePtr[0];
+    S->pCosFactor = pCosFactor[0];
+    break;
+  default:
+    status = ARM_MATH_ARGUMENT_ERROR;
+  }
+
+  /* Initialize the RFFT/RIFFT Function */
+  arm_rfft_init_q31(S->pRfft,  S->N, 0, 1);
+
+  /* return the status of DCT4 Init function */
+  return (status);
+}
+
+/**    
+   * @} end of DCT4_IDCT4 group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,394 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_dct4_q15.c    
+*    
+* Description:	Processing function of DCT4 & IDCT4 Q15.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @addtogroup DCT4_IDCT4    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q15 DCT4/IDCT4.   
+ * @param[in]       *S             points to an instance of the Q15 DCT4 structure.   
+ * @param[in]       *pState        points to state buffer.   
+ * @param[in,out]   *pInlineBuffer points to the in-place input and output buffer.   
+ * @return none.   
+ *     
+ * \par Input an output formats:    
+ * Internally inputs are downscaled in the RFFT process function to avoid overflows.    
+ * Number of bits downscaled, depends on the size of the transform.    
+ * The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below:     
+ *    
+ * \image html dct4FormatsQ15Table.gif    
+ */
+
+void arm_dct4_q15(
+  const arm_dct4_instance_q15 * S,
+  q15_t * pState,
+  q15_t * pInlineBuffer)
+{
+  uint32_t i;                                    /* Loop counter */
+  q15_t *weights = S->pTwiddle;                  /* Pointer to the Weights table */
+  q15_t *cosFact = S->pCosFactor;                /* Pointer to the cos factors table */
+  q15_t *pS1, *pS2, *pbuff;                      /* Temporary pointers for input buffer and pState buffer */
+  q15_t in;                                      /* Temporary variable */
+
+
+  /* DCT4 computation involves DCT2 (which is calculated using RFFT)    
+   * along with some pre-processing and post-processing.    
+   * Computational procedure is explained as follows:    
+   * (a) Pre-processing involves multiplying input with cos factor,    
+   *     r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n))    
+   *              where,    
+   *                 r(n) -- output of preprocessing    
+   *                 u(n) -- input to preprocessing(actual Source buffer)    
+   * (b) Calculation of DCT2 using FFT is divided into three steps:    
+   *                  Step1: Re-ordering of even and odd elements of input.    
+   *                  Step2: Calculating FFT of the re-ordered input.    
+   *                  Step3: Taking the real part of the product of FFT output and weights.    
+   * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation:    
+   *                   Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *                        where,    
+   *                           Y4 -- DCT4 output,   Y2 -- DCT2 output    
+   * (d) Multiplying the output with the normalizing factor sqrt(2/N).    
+   */
+
+        /*-------- Pre-processing ------------*/
+  /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */
+  arm_mult_q15(pInlineBuffer, cosFact, pInlineBuffer, S->N);
+  arm_shift_q15(pInlineBuffer, 1, pInlineBuffer, S->N);
+
+  /* ----------------------------------------------------------------    
+   * Step1: Re-ordering of even and odd elements as    
+   *             pState[i] =  pInlineBuffer[2*i] and    
+   *             pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2    
+   ---------------------------------------------------------------------*/
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */
+  pS2 = pState + (S->N - 1u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */
+  i = (uint32_t) S->Nby2 >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  do
+  {
+    /* Re-ordering of even and odd elements */
+    /* pState[i] =  pInlineBuffer[2*i] */
+    *pS1++ = *pbuff++;
+    /* pState[N-i-1] = pInlineBuffer[2*i+1] */
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Initializing the loop counter to N/4 instead of N for loop unrolling */
+  i = (uint32_t) S->N >> 2u;
+
+  /* Processing with loop unrolling 4 times as N is always multiple of 4.    
+   * Compute 4 outputs at a time */
+  do
+  {
+    /* Writing the re-ordered output back to inplace input buffer */
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+  /* ---------------------------------------------------------    
+   *     Step2: Calculate RFFT for N-point input    
+   * ---------------------------------------------------------- */
+  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */
+  arm_rfft_q15(S->pRfft, pInlineBuffer, pState);
+
+ /*----------------------------------------------------------------------    
+  *  Step3: Multiply the FFT output with the weights.    
+  *----------------------------------------------------------------------*/
+  arm_cmplx_mult_cmplx_q15(pState, weights, pState, S->N);
+
+  /* The output of complex multiplication is in 3.13 format.    
+   * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */
+  arm_shift_q15(pState, 2, pState, S->N * 2);
+
+  /* ----------- Post-processing ---------- */
+  /* DCT-IV can be obtained from DCT-II by the equation,    
+   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *       Hence, Y4(0) = Y2(0)/2  */
+  /* Getting only real part from the output and Converting to DCT-IV */
+
+  /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */
+  i = ((uint32_t) S->N - 1u) >> 2u;
+
+  /* pbuff initialized to input buffer. */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */
+  in = *pS1++ >> 1u;
+  /* input buffer acts as inplace, so output values are stored in the input itself. */
+  *pbuff++ = in;
+
+  /* pState pointer is incremented twice as the real values are located alternatively in the array */
+  pS1++;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  do
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  i = ((uint32_t) S->N - 1u) % 0x4u;
+
+  while(i > 0u)
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+
+   /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/
+
+  /* Initializing the loop counter to N/4 instead of N for loop unrolling */
+  i = (uint32_t) S->N >> 2u;
+
+  /* pbuff initialized to the pInlineBuffer(now contains the output values) */
+  pbuff = pInlineBuffer;
+
+  /* Processing with loop unrolling 4 times as N is always multiple of 4.  Compute 4 outputs at a time */
+  do
+  {
+    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */
+    in = *pbuff;
+    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));
+
+    in = *pbuff;
+    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));
+
+    in = *pbuff;
+    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));
+
+    in = *pbuff;
+    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initializing the loop counter to N/2 */
+  i = (uint32_t) S->Nby2;
+
+  do
+  {
+    /* Re-ordering of even and odd elements */
+    /* pState[i] =  pInlineBuffer[2*i] */
+    *pS1++ = *pbuff++;
+    /* pState[N-i-1] = pInlineBuffer[2*i+1] */
+    *pS2-- = *pbuff++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Initializing the loop counter */
+  i = (uint32_t) S->N;
+
+  do
+  {
+    /* Writing the re-ordered output back to inplace input buffer */
+    *pbuff++ = *pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+  /* ---------------------------------------------------------    
+   *     Step2: Calculate RFFT for N-point input    
+   * ---------------------------------------------------------- */
+  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */
+  arm_rfft_q15(S->pRfft, pInlineBuffer, pState);
+
+ /*----------------------------------------------------------------------    
+  *  Step3: Multiply the FFT output with the weights.    
+  *----------------------------------------------------------------------*/
+  arm_cmplx_mult_cmplx_q15(pState, weights, pState, S->N);
+
+  /* The output of complex multiplication is in 3.13 format.    
+   * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */
+  arm_shift_q15(pState, 2, pState, S->N * 2);
+
+  /* ----------- Post-processing ---------- */
+  /* DCT-IV can be obtained from DCT-II by the equation,    
+   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *       Hence, Y4(0) = Y2(0)/2  */
+  /* Getting only real part from the output and Converting to DCT-IV */
+
+  /* Initializing the loop counter */
+  i = ((uint32_t) S->N - 1u);
+
+  /* pbuff initialized to input buffer. */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */
+  in = *pS1++ >> 1u;
+  /* input buffer acts as inplace, so output values are stored in the input itself. */
+  *pbuff++ = in;
+
+  /* pState pointer is incremented twice as the real values are located alternatively in the array */
+  pS1++;
+
+  do
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+   /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/
+
+  /* Initializing the loop counter */
+  i = (uint32_t) S->N;
+
+  /* pbuff initialized to the pInlineBuffer(now contains the output values) */
+  pbuff = pInlineBuffer;
+
+  do
+  {
+    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */
+    in = *pbuff;
+    *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15));
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+   * @} end of DCT4_IDCT4 group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,395 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_dct4_q31.c    
+*    
+* Description:	Processing function of DCT4 & IDCT4 Q31.    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**    
+ * @addtogroup DCT4_IDCT4    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the Q31 DCT4/IDCT4.   
+ * @param[in]       *S             points to an instance of the Q31 DCT4 structure.   
+ * @param[in]       *pState        points to state buffer.   
+ * @param[in,out]   *pInlineBuffer points to the in-place input and output buffer.   
+ * @return none.   
+ * \par Input an output formats:    
+ * Input samples need to be downscaled by 1 bit to avoid saturations in the Q31 DCT process,    
+ * as the conversion from DCT2 to DCT4 involves one subtraction.    
+ * Internally inputs are downscaled in the RFFT process function to avoid overflows.    
+ * Number of bits downscaled, depends on the size of the transform.    
+ * The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below:     
+ *    
+ * \image html dct4FormatsQ31Table.gif    
+ */
+
+void arm_dct4_q31(
+  const arm_dct4_instance_q31 * S,
+  q31_t * pState,
+  q31_t * pInlineBuffer)
+{
+  uint16_t i;                                    /* Loop counter */
+  q31_t *weights = S->pTwiddle;                  /* Pointer to the Weights table */
+  q31_t *cosFact = S->pCosFactor;                /* Pointer to the cos factors table */
+  q31_t *pS1, *pS2, *pbuff;                      /* Temporary pointers for input buffer and pState buffer */
+  q31_t in;                                      /* Temporary variable */
+
+
+  /* DCT4 computation involves DCT2 (which is calculated using RFFT)    
+   * along with some pre-processing and post-processing.    
+   * Computational procedure is explained as follows:    
+   * (a) Pre-processing involves multiplying input with cos factor,    
+   *     r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n))    
+   *              where,    
+   *                 r(n) -- output of preprocessing    
+   *                 u(n) -- input to preprocessing(actual Source buffer)    
+   * (b) Calculation of DCT2 using FFT is divided into three steps:    
+   *                  Step1: Re-ordering of even and odd elements of input.    
+   *                  Step2: Calculating FFT of the re-ordered input.    
+   *                  Step3: Taking the real part of the product of FFT output and weights.    
+   * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation:    
+   *                   Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *                        where,    
+   *                           Y4 -- DCT4 output,   Y2 -- DCT2 output    
+   * (d) Multiplying the output with the normalizing factor sqrt(2/N).    
+   */
+
+        /*-------- Pre-processing ------------*/
+  /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */
+  arm_mult_q31(pInlineBuffer, cosFact, pInlineBuffer, S->N);
+  arm_shift_q31(pInlineBuffer, 1, pInlineBuffer, S->N);
+
+  /* ----------------------------------------------------------------    
+   * Step1: Re-ordering of even and odd elements as    
+   *             pState[i] =  pInlineBuffer[2*i] and    
+   *             pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2    
+   ---------------------------------------------------------------------*/
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */
+  pS2 = pState + (S->N - 1u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */
+  i = S->Nby2 >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  do
+  {
+    /* Re-ordering of even and odd elements */
+    /* pState[i] =  pInlineBuffer[2*i] */
+    *pS1++ = *pbuff++;
+    /* pState[N-i-1] = pInlineBuffer[2*i+1] */
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    *pS1++ = *pbuff++;
+    *pS2-- = *pbuff++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Initializing the loop counter to N/4 instead of N for loop unrolling */
+  i = S->N >> 2u;
+
+  /* Processing with loop unrolling 4 times as N is always multiple of 4.    
+   * Compute 4 outputs at a time */
+  do
+  {
+    /* Writing the re-ordered output back to inplace input buffer */
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+    *pbuff++ = *pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+  /* ---------------------------------------------------------    
+   *     Step2: Calculate RFFT for N-point input    
+   * ---------------------------------------------------------- */
+  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */
+  arm_rfft_q31(S->pRfft, pInlineBuffer, pState);
+
+  /*----------------------------------------------------------------------    
+   *  Step3: Multiply the FFT output with the weights.    
+   *----------------------------------------------------------------------*/
+  arm_cmplx_mult_cmplx_q31(pState, weights, pState, S->N);
+
+  /* The output of complex multiplication is in 3.29 format.    
+   * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */
+  arm_shift_q31(pState, 2, pState, S->N * 2);
+
+  /* ----------- Post-processing ---------- */
+  /* DCT-IV can be obtained from DCT-II by the equation,    
+   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *       Hence, Y4(0) = Y2(0)/2  */
+  /* Getting only real part from the output and Converting to DCT-IV */
+
+  /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */
+  i = (S->N - 1u) >> 2u;
+
+  /* pbuff initialized to input buffer. */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */
+  in = *pS1++ >> 1u;
+  /* input buffer acts as inplace, so output values are stored in the input itself. */
+  *pbuff++ = in;
+
+  /* pState pointer is incremented twice as the real values are located alternatively in the array */
+  pS1++;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.    
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  do
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  i = (S->N - 1u) % 0x4u;
+
+  while(i > 0u)
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+
+        /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/
+
+  /* Initializing the loop counter to N/4 instead of N for loop unrolling */
+  i = S->N >> 2u;
+
+  /* pbuff initialized to the pInlineBuffer(now contains the output values) */
+  pbuff = pInlineBuffer;
+
+  /* Processing with loop unrolling 4 times as N is always multiple of 4.  Compute 4 outputs at a time */
+  do
+  {
+    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */
+    in = *pbuff;
+    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));
+
+    in = *pbuff;
+    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));
+
+    in = *pbuff;
+    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));
+
+    in = *pbuff;
+    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* Initializing the loop counter to N/2 */
+  i = S->Nby2;
+
+  do
+  {
+    /* Re-ordering of even and odd elements */
+    /* pState[i] =  pInlineBuffer[2*i] */
+    *pS1++ = *pbuff++;
+    /* pState[N-i-1] = pInlineBuffer[2*i+1] */
+    *pS2-- = *pbuff++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+  /* pbuff initialized to input buffer */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Initializing the loop counter */
+  i = S->N;
+
+  do
+  {
+    /* Writing the re-ordered output back to inplace input buffer */
+    *pbuff++ = *pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+
+  /* ---------------------------------------------------------    
+   *     Step2: Calculate RFFT for N-point input    
+   * ---------------------------------------------------------- */
+  /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */
+  arm_rfft_q31(S->pRfft, pInlineBuffer, pState);
+
+  /*----------------------------------------------------------------------    
+   *  Step3: Multiply the FFT output with the weights.    
+   *----------------------------------------------------------------------*/
+  arm_cmplx_mult_cmplx_q31(pState, weights, pState, S->N);
+
+  /* The output of complex multiplication is in 3.29 format.    
+   * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */
+  arm_shift_q31(pState, 2, pState, S->N * 2);
+
+  /* ----------- Post-processing ---------- */
+  /* DCT-IV can be obtained from DCT-II by the equation,    
+   *       Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0)    
+   *       Hence, Y4(0) = Y2(0)/2  */
+  /* Getting only real part from the output and Converting to DCT-IV */
+
+  /* pbuff initialized to input buffer. */
+  pbuff = pInlineBuffer;
+
+  /* pS1 initialized to pState */
+  pS1 = pState;
+
+  /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */
+  in = *pS1++ >> 1u;
+  /* input buffer acts as inplace, so output values are stored in the input itself. */
+  *pbuff++ = in;
+
+  /* pState pointer is incremented twice as the real values are located alternatively in the array */
+  pS1++;
+
+  /* Initializing the loop counter */
+  i = (S->N - 1u);
+
+  while(i > 0u)
+  {
+    /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */
+    /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */
+    in = *pS1++ - in;
+    *pbuff++ = in;
+    /* points to the next real value */
+    pS1++;
+
+    /* Decrement the loop counter */
+    i--;
+  }
+
+
+        /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/
+
+  /* Initializing the loop counter */
+  i = S->N;
+
+  /* pbuff initialized to the pInlineBuffer(now contains the output values) */
+  pbuff = pInlineBuffer;
+
+  do
+  {
+    /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */
+    in = *pbuff;
+    *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31));
+
+    /* Decrement the loop counter */
+    i--;
+  } while(i > 0u);
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+}
+
+/**    
+   * @} end of DCT4_IDCT4 group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,329 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_rfft_f32.c    
+*    
+* Description:	RFFT & RIFFT Floating point process function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+extern void arm_radix4_butterfly_f32(
+    float32_t * pSrc,
+    uint16_t fftLen,
+    float32_t * pCoef,
+    uint16_t twidCoefModifier);
+
+extern void arm_radix4_butterfly_inverse_f32(
+    float32_t * pSrc,
+    uint16_t fftLen,
+    float32_t * pCoef,
+    uint16_t twidCoefModifier,
+    float32_t onebyfftLen);
+
+extern void arm_bitreversal_f32(
+    float32_t * pSrc,
+    uint16_t fftSize,
+    uint16_t bitRevFactor,
+    uint16_t * pBitRevTab);
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/*--------------------------------------------------------------------    
+ *		Internal functions prototypes    
+ *--------------------------------------------------------------------*/
+
+void arm_split_rfft_f32(
+  float32_t * pSrc,
+  uint32_t fftLen,
+  float32_t * pATable,
+  float32_t * pBTable,
+  float32_t * pDst,
+  uint32_t modifier);
+void arm_split_rifft_f32(
+  float32_t * pSrc,
+  uint32_t fftLen,
+  float32_t * pATable,
+  float32_t * pBTable,
+  float32_t * pDst,
+  uint32_t modifier);
+
+/**    
+ * @addtogroup RealFFT    
+ * @{    
+ */
+
+/**    
+ * @brief Processing function for the floating-point RFFT/RIFFT.   
+ * @deprecated Do not use this function.  It has been superceded by \ref arm_rfft_fast_f32 and will be removed
+ * in the future.
+ * @param[in]  *S    points to an instance of the floating-point RFFT/RIFFT structure.   
+ * @param[in]  *pSrc points to the input buffer.   
+ * @param[out] *pDst points to the output buffer.   
+ * @return none.   
+ */
+
+void arm_rfft_f32(
+  const arm_rfft_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst)
+{
+  const arm_cfft_radix4_instance_f32 *S_CFFT = S->pCfft;
+
+
+  /* Calculation of Real IFFT of input */
+  if(S->ifftFlagR == 1u)
+  {
+    /*  Real IFFT core process */
+    arm_split_rifft_f32(pSrc, S->fftLenBy2, S->pTwiddleAReal,
+                        S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+
+
+    /* Complex radix-4 IFFT process */
+    arm_radix4_butterfly_inverse_f32(pDst, S_CFFT->fftLen,
+                                     S_CFFT->pTwiddle,
+                                     S_CFFT->twidCoefModifier,
+                                     S_CFFT->onebyfftLen);
+
+    /* Bit reversal process */
+    if(S->bitReverseFlagR == 1u)
+    {
+      arm_bitreversal_f32(pDst, S_CFFT->fftLen,
+                          S_CFFT->bitRevFactor, S_CFFT->pBitRevTable);
+    }
+  }
+  else
+  {
+
+    /* Calculation of RFFT of input */
+
+    /* Complex radix-4 FFT process */
+    arm_radix4_butterfly_f32(pSrc, S_CFFT->fftLen,
+                             S_CFFT->pTwiddle, S_CFFT->twidCoefModifier);
+
+    /* Bit reversal process */
+    if(S->bitReverseFlagR == 1u)
+    {
+      arm_bitreversal_f32(pSrc, S_CFFT->fftLen,
+                          S_CFFT->bitRevFactor, S_CFFT->pBitRevTable);
+    }
+
+
+    /*  Real FFT core process */
+    arm_split_rfft_f32(pSrc, S->fftLenBy2, S->pTwiddleAReal,
+                       S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+  }
+
+}
+
+/**    
+   * @} end of RealFFT group    
+   */
+
+/**    
+ * @brief  Core Real FFT process    
+ * @param[in]   *pSrc 				points to the input buffer.    
+ * @param[in]   fftLen  			length of FFT.    
+ * @param[in]   *pATable 			points to the twiddle Coef A buffer.    
+ * @param[in]   *pBTable 			points to the twiddle Coef B buffer.    
+ * @param[out]  *pDst 				points to the output buffer.    
+ * @param[in]   modifier 	        twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+ * @return none.    
+ */
+
+void arm_split_rfft_f32(
+  float32_t * pSrc,
+  uint32_t fftLen,
+  float32_t * pATable,
+  float32_t * pBTable,
+  float32_t * pDst,
+  uint32_t modifier)
+{
+  uint32_t i;                                    /* Loop Counter */
+  float32_t outR, outI;                          /* Temporary variables for output */
+  float32_t *pCoefA, *pCoefB;                    /* Temporary pointers for twiddle factors */
+  float32_t CoefA1, CoefA2, CoefB1;              /* Temporary variables for twiddle coefficients */
+  float32_t *pDst1 = &pDst[2], *pDst2 = &pDst[(4u * fftLen) - 1u];      /* temp pointers for output buffer */
+  float32_t *pSrc1 = &pSrc[2], *pSrc2 = &pSrc[(2u * fftLen) - 1u];      /* temp pointers for input buffer */
+
+  /* Init coefficient pointers */
+  pCoefA = &pATable[modifier * 2u];
+  pCoefB = &pBTable[modifier * 2u];
+
+  i = fftLen - 1u;
+
+  while(i > 0u)
+  {
+    /*    
+       outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]    
+       + pSrc[2 * n - 2 * i] * pBTable[2 * i] +    
+       pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);    
+     */
+
+    /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +    
+       pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -    
+       pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */
+
+    /* read pATable[2 * i] */
+    CoefA1 = *pCoefA++;
+    /* pATable[2 * i + 1] */
+    CoefA2 = *pCoefA;
+
+    /* pSrc[2 * i] * pATable[2 * i] */
+    outR = *pSrc1 * CoefA1;
+    /* pSrc[2 * i] * CoefA2 */
+    outI = *pSrc1++ * CoefA2;
+
+    /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */
+    outR -= (*pSrc1 + *pSrc2) * CoefA2;
+    /* pSrc[2 * i + 1] * CoefA1 */
+    outI += *pSrc1++ * CoefA1;
+
+    CoefB1 = *pCoefB;
+
+    /* pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */
+    outI -= *pSrc2-- * CoefB1;
+    /* pSrc[2 * fftLen - 2 * i] * CoefA2 */
+    outI -= *pSrc2 * CoefA2;
+
+    /* pSrc[2 * fftLen - 2 * i] * CoefB1 */
+    outR += *pSrc2-- * CoefB1;
+
+    /* write output */
+    *pDst1++ = outR;
+    *pDst1++ = outI;
+
+    /* write complex conjugate output */
+    *pDst2-- = -outI;
+    *pDst2-- = outR;
+
+    /* update coefficient pointer */
+    pCoefB = pCoefB + (modifier * 2u);
+    pCoefA = pCoefA + ((modifier * 2u) - 1u);
+
+    i--;
+
+  }
+
+  pDst[2u * fftLen] = pSrc[0] - pSrc[1];
+  pDst[(2u * fftLen) + 1u] = 0.0f;
+
+  pDst[0] = pSrc[0] + pSrc[1];
+  pDst[1] = 0.0f;
+
+}
+
+
+/**    
+ * @brief  Core Real IFFT process    
+ * @param[in]   *pSrc 				points to the input buffer.    
+ * @param[in]   fftLen  			length of FFT.   
+ * @param[in]   *pATable 			points to the twiddle Coef A buffer.   
+ * @param[in]   *pBTable 			points to the twiddle Coef B buffer.   
+ * @param[out]  *pDst 				points to the output buffer.   
+ * @param[in]   modifier 	        twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.    
+ * @return none.    
+ */
+
+void arm_split_rifft_f32(
+  float32_t * pSrc,
+  uint32_t fftLen,
+  float32_t * pATable,
+  float32_t * pBTable,
+  float32_t * pDst,
+  uint32_t modifier)
+{
+  float32_t outR, outI;                          /* Temporary variables for output */
+  float32_t *pCoefA, *pCoefB;                    /* Temporary pointers for twiddle factors */
+  float32_t CoefA1, CoefA2, CoefB1;              /* Temporary variables for twiddle coefficients */
+  float32_t *pSrc1 = &pSrc[0], *pSrc2 = &pSrc[(2u * fftLen) + 1u];
+
+  pCoefA = &pATable[0];
+  pCoefB = &pBTable[0];
+
+  while(fftLen > 0u)
+  {
+    /*    
+       outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +    
+       pIn[2 * n - 2 * i] * pBTable[2 * i] -    
+       pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);    
+
+       outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -    
+       pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -    
+       pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);    
+
+     */
+
+    CoefA1 = *pCoefA++;
+    CoefA2 = *pCoefA;
+
+    /* outR = (pSrc[2 * i] * CoefA1 */
+    outR = *pSrc1 * CoefA1;
+
+    /* - pSrc[2 * i] * CoefA2 */
+    outI = -(*pSrc1++) * CoefA2;
+
+    /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */
+    outR += (*pSrc1 + *pSrc2) * CoefA2;
+
+    /* pSrc[2 * i + 1] * CoefA1 */
+    outI += (*pSrc1++) * CoefA1;
+
+    CoefB1 = *pCoefB;
+
+    /* - pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */
+    outI -= *pSrc2-- * CoefB1;
+
+    /* pSrc[2 * fftLen - 2 * i] * CoefB1 */
+    outR += *pSrc2 * CoefB1;
+
+    /* pSrc[2 * fftLen - 2 * i] * CoefA2 */
+    outI += *pSrc2-- * CoefA2;
+
+    /* write output */
+    *pDst++ = outR;
+    *pDst++ = outI;
+
+    /* update coefficient pointer */
+    pCoefB = pCoefB + (modifier * 2u);
+    pCoefA = pCoefA + ((modifier * 2u) - 1u);
+
+    /* Decrement loop count */
+    fftLen--;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,353 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*
+* Project: 	    CMSIS DSP Library
+* Title:	    arm_rfft_f32.c
+*
+* Description:	RFFT & RIFFT Floating point process function
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+void stage_rfft_f32(
+  arm_rfft_fast_instance_f32 * S,
+  float32_t * p, float32_t * pOut)
+{
+   uint32_t  k;								   /* Loop Counter                     */
+   float32_t twR, twI;						   /* RFFT Twiddle coefficients        */
+   float32_t * pCoeff = S->pTwiddleRFFT;  /* Points to RFFT Twiddle factors   */
+   float32_t *pA = p;						   /* increasing pointer               */
+   float32_t *pB = p;						   /* decreasing pointer               */
+   float32_t xAR, xAI, xBR, xBI;				/* temporary variables              */
+   float32_t t1a, t1b;				         /* temporary variables              */
+   float32_t p0, p1, p2, p3;				   /* temporary variables              */
+
+
+   k = (S->Sint).fftLen - 1;					
+
+   /* Pack first and last sample of the frequency domain together */
+
+   xBR = pB[0];
+   xBI = pB[1];
+   xAR = pA[0];
+   xAI = pA[1];
+
+   twR = *pCoeff++ ;
+   twI = *pCoeff++ ;
+   
+   // U1 = XA(1) + XB(1); % It is real
+   t1a = xBR + xAR  ;
+   
+   // U2 = XB(1) - XA(1); % It is imaginary
+   t1b = xBI + xAI  ;
+
+   // real(tw * (xB - xA)) = twR * (xBR - xAR) - twI * (xBI - xAI);
+   // imag(tw * (xB - xA)) = twI * (xBR - xAR) + twR * (xBI - xAI);
+   *pOut++ = 0.5f * ( t1a + t1b );
+   *pOut++ = 0.5f * ( t1a - t1b );
+
+   // XA(1) = 1/2*( U1 - imag(U2) +  i*( U1 +imag(U2) ));
+   pB  = p + 2*k;
+   pA += 2;
+
+   do
+   {
+      /*
+         function X = my_split_rfft(X, ifftFlag)
+         % X is a series of real numbers
+         L  = length(X);
+         XC = X(1:2:end) +i*X(2:2:end);
+         XA = fft(XC);
+         XB = conj(XA([1 end:-1:2]));
+         TW = i*exp(-2*pi*i*[0:L/2-1]/L).';
+         for l = 2:L/2
+            XA(l) = 1/2 * (XA(l) + XB(l) + TW(l) * (XB(l) - XA(l)));
+         end
+         XA(1) = 1/2* (XA(1) + XB(1) + TW(1) * (XB(1) - XA(1))) + i*( 1/2*( XA(1) + XB(1) + i*( XA(1) - XB(1))));
+         X = XA;
+      */
+
+      xBI = pB[1];
+      xBR = pB[0];
+      xAR = pA[0];
+      xAI = pA[1];
+
+      twR = *pCoeff++;
+      twI = *pCoeff++;
+
+      t1a = xBR - xAR ;
+      t1b = xBI + xAI ;
+
+      // real(tw * (xB - xA)) = twR * (xBR - xAR) - twI * (xBI - xAI);
+      // imag(tw * (xB - xA)) = twI * (xBR - xAR) + twR * (xBI - xAI);
+      p0 = twR * t1a;
+      p1 = twI * t1a;
+      p2 = twR * t1b;
+      p3 = twI * t1b;
+
+      *pOut++ = 0.5f * (xAR + xBR + p0 + p3 ); //xAR
+      *pOut++ = 0.5f * (xAI - xBI + p1 - p2 ); //xAI
+
+      pA += 2;
+      pB -= 2;
+      k--;
+   } while(k > 0u);
+}
+
+/* Prepares data for inverse cfft */
+void merge_rfft_f32(
+arm_rfft_fast_instance_f32 * S,
+float32_t * p, float32_t * pOut)
+{
+   uint32_t  k;								/* Loop Counter                     */
+   float32_t twR, twI;						/* RFFT Twiddle coefficients        */
+   float32_t *pCoeff = S->pTwiddleRFFT;		/* Points to RFFT Twiddle factors   */
+   float32_t *pA = p;						/* increasing pointer               */
+   float32_t *pB = p;						/* decreasing pointer               */
+   float32_t xAR, xAI, xBR, xBI;			/* temporary variables              */
+   float32_t t1a, t1b, r, s, t, u;			/* temporary variables              */
+
+   k = (S->Sint).fftLen - 1;					
+
+   xAR = pA[0];
+   xAI = pA[1];
+
+   pCoeff += 2 ;
+
+   *pOut++ = 0.5f * ( xAR + xAI );
+   *pOut++ = 0.5f * ( xAR - xAI );
+
+   pB  =  p + 2*k ;
+   pA +=  2	   ;
+
+   while(k > 0u)
+   {
+      /* G is half of the frequency complex spectrum */
+      //for k = 2:N
+      //    Xk(k) = 1/2 * (G(k) + conj(G(N-k+2)) + Tw(k)*( G(k) - conj(G(N-k+2))));
+      xBI =   pB[1]    ;
+      xBR =   pB[0]    ;
+      xAR =  pA[0];
+      xAI =  pA[1];
+
+      twR = *pCoeff++;
+      twI = *pCoeff++;
+
+      t1a = xAR - xBR ;
+      t1b = xAI + xBI ;
+
+      r = twR * t1a;
+      s = twI * t1b;
+      t = twI * t1a;
+      u = twR * t1b;
+
+      // real(tw * (xA - xB)) = twR * (xAR - xBR) - twI * (xAI - xBI);
+      // imag(tw * (xA - xB)) = twI * (xAR - xBR) + twR * (xAI - xBI);
+      *pOut++ = 0.5f * (xAR + xBR - r - s ); //xAR
+      *pOut++ = 0.5f * (xAI - xBI + t - u ); //xAI
+
+      pA += 2;
+      pB -= 2;
+      k--;
+   }
+
+}
+
+/**
+* @ingroup groupTransforms
+*/
+
+/**
+ * @defgroup Fast Real FFT Functions
+ *
+ * \par
+ * The CMSIS DSP library includes specialized algorithms for computing the
+ * FFT of real data sequences.  The FFT is defined over complex data but
+ * in many applications the input is real.  Real FFT algorithms take advantage
+ * of the symmetry properties of the FFT and have a speed advantage over complex
+ * algorithms of the same length.
+ * \par
+ * The Fast RFFT algorith relays on the mixed radix CFFT that save processor usage.
+ * \par
+ * The real length N forward FFT of a sequence is computed using the steps shown below.
+ * \par
+ * \image html RFFT.gif "Real Fast Fourier Transform"
+ * \par
+ * The real sequence is initially treated as if it were complex to perform a CFFT.
+ * Later, a processing stage reshapes the data to obtain half of the frequency spectrum
+ * in complex format. Except the first complex number that contains the two real numbers
+ * X[0] and X[N/2] all the data is complex. In other words, the first complex sample
+ * contains two real values packed.
+ * \par
+ * The input for the inverse RFFT should keep the same format as the output of the 
+ * forward RFFT. A first processing stage pre-process the data to later perform an
+ * inverse CFFT.
+ * \par    
+ * \image html RIFFT.gif "Real Inverse Fast Fourier Transform"    
+ * \par    
+ * The algorithms for floating-point, Q15, and Q31 data are slightly different
+ * and we describe each algorithm in turn.
+ * \par Floating-point
+ * The main functions are <code>arm_rfft_fast_f32()</code>
+ * and <code>arm_rfft_fast_init_f32()</code>.  The older functions
+ * <code>arm_rfft_f32()</code> and <code>arm_rfft_init_f32()</code> have been
+ * deprecated but are still documented.
+ * \par
+ * The FFT of a real N-point sequence has even symmetry in the frequency
+ * domain.  The second half of the data equals the conjugate of the first half
+ * flipped in frequency:
+ * <pre>
+ *X[0] - real data
+ *X[1] - complex data
+ *X[2] - complex data
+ *... 
+ *X[fftLen/2-1] - complex data
+ *X[fftLen/2] - real data
+ *X[fftLen/2+1] - conjugate of X[fftLen/2-1]
+ *X[fftLen/2+2] - conjugate of X[fftLen/2-2]
+ *... 
+ *X[fftLen-1] - conjugate of X[1]
+ * </pre>
+ * Looking at the data, we see that we can uniquely represent the FFT using only
+ * <pre>
+ *N/2+1 samples:
+ *X[0] - real data
+ *X[1] - complex data
+ *X[2] - complex data
+ *... 
+ *X[fftLen/2-1] - complex data
+ *X[fftLen/2] - real data
+ * </pre>
+ * Looking more closely we see that the first and last samples are real valued.
+ * They can be packed together and we can thus represent the FFT of an N-point
+ * real sequence by N/2 complex values:
+ * <pre>
+ *X[0],X[N/2] - packed real data: X[0] + jX[N/2]
+ *X[1] - complex data
+ *X[2] - complex data
+ *... 
+ *X[fftLen/2-1] - complex data
+ * </pre>
+ * The real FFT functions pack the frequency domain data in this fashion.  The
+ * forward transform outputs the data in this form and the inverse transform
+ * expects input data in this form.  The function always performs the needed
+ * bitreversal so that the input and output data is always in normal order.  The 
+ * functions support lengths of [32, 64, 128, ..., 4096] samples.
+ * \par
+ * The forward and inverse real FFT functions apply the standard FFT scaling; no
+ * scaling on the forward transform and 1/fftLen scaling on the inverse
+ * transform.
+ * \par Q15 and Q31
+ * The real algorithms are defined in a similar manner and utilize N/2 complex
+ * transforms behind the scenes.  
+ * \par
+ * The complex transforms used internally include scaling to prevent fixed-point
+ * overflows.  The overall scaling equals 1/(fftLen/2).
+ * \par
+ * A separate instance structure must be defined for each transform used but 
+ * twiddle factor and bit reversal tables can be reused.
+ * \par
+ * There is also an associated initialization function for each data type. 
+ * The initialization function performs the following operations:
+ * - Sets the values of the internal structure fields.   
+ * - Initializes twiddle factor table and bit reversal table pointers.
+ * - Initializes the internal complex FFT data structure.
+ * \par   
+ * Use of the initialization function is optional.   
+ * However, if the initialization function is used, then the instance structure 
+ * cannot be placed into a const data section. To place an instance structure 
+ * into a const data section, the instance structure should be manually 
+ * initialized as follows:
+ * <pre>
+ *arm_rfft_instance_q31 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};    
+ *arm_rfft_instance_q15 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};    
+ * </pre>
+ * where <code>fftLenReal</code> is the length of the real transform;
+ * <code>fftLenBy2</code> length of  the internal complex transform.
+ * <code>ifftFlagR</code> Selects forward (=0) or inverse (=1) transform.
+ * <code>bitReverseFlagR</code> Selects bit reversed output (=0) or normal order
+ * output (=1).
+ * <code>twidCoefRModifier</code> stride modifier for the twiddle factor table.
+ * The value is based on the FFT length;
+ * <code>pTwiddleAReal</code>points to the A array of twiddle coefficients; 
+ * <code>pTwiddleBReal</code>points to the B array of twiddle coefficients;    
+ * <code>pCfft</code> points to the CFFT Instance structure. The CFFT structure
+ * must also be initialized.  Refer to arm_cfft_radix4_f32() for details regarding    
+ * static initialization of the complex FFT instance structure.    
+ */
+
+/**
+* @addtogroup RealFFT
+* @{
+*/
+
+/**
+* @brief Processing function for the floating-point real FFT.
+* @param[in]  *S              points to an arm_rfft_fast_instance_f32 structure.
+* @param[in]  *p              points to the input buffer.
+* @param[in]  *pOut           points to the output buffer.
+* @param[in]  ifftFlag        RFFT if flag is 0, RIFFT if flag is 1
+* @return none.
+*/
+
+void arm_rfft_fast_f32(
+arm_rfft_fast_instance_f32 * S,
+float32_t * p, float32_t * pOut,
+uint8_t ifftFlag)
+{
+   arm_cfft_instance_f32 * Sint = &(S->Sint);
+   Sint->fftLen = S->fftLenRFFT / 2;
+
+   /* Calculation of Real FFT */
+   if(ifftFlag)
+   {
+      /*  Real FFT compression */
+      merge_rfft_f32(S, p, pOut);
+
+      /* Complex radix-4 IFFT process */
+      arm_cfft_f32( Sint, pOut, ifftFlag, 1);
+   }
+   else
+   {
+      /* Calculation of RFFT of input */
+      arm_cfft_f32( Sint, p, ifftFlag, 1);
+   
+      /*  Real FFT extraction */
+      stage_rfft_f32(S, p, pOut);
+   }
+}
+
+/**    
+* @} end of RealFFT group    
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,143 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_cfft_init_f32.c   
+*    
+* Description:	Split Radix Decimation in Frequency CFFT Floating point processing function   
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**   
+ * @ingroup groupTransforms   
+ */
+
+/**   
+ * @addtogroup RealFFT   
+ * @{   
+ */
+
+/**   
+* @brief  Initialization function for the floating-point real FFT.  
+* @param[in,out] *S             points to an arm_rfft_fast_instance_f32 structure.
+* @param[in]     fftLen         length of the Real Sequence.  
+* @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLen</code> is not a supported value.  
+*   
+* \par Description:  
+* \par   
+* The parameter <code>fftLen</code>	Specifies length of RFFT/CIFFT process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096.   
+* \par   
+* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.   
+*/
+arm_status arm_rfft_fast_init_f32(
+  arm_rfft_fast_instance_f32 * S,
+  uint16_t fftLen)
+{
+  arm_cfft_instance_f32 * Sint;
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+  /*  Initialise the FFT length */
+  Sint = &(S->Sint);
+  Sint->fftLen = fftLen/2;
+  S->fftLenRFFT = fftLen;
+
+  /*  Initializations of structure parameters depending on the FFT length */
+  switch (Sint->fftLen)
+  {
+  case 2048u:
+    /*  Initializations of structure parameters for 2048 point FFT */
+    /*  Initialise the bit reversal table length */
+    Sint->bitRevLength = ARMBITREVINDEXTABLE2048_TABLE_LENGTH;
+    /*  Initialise the bit reversal table pointer */
+    Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable2048;
+    /*  Initialise the Twiddle coefficient pointers */
+		Sint->pTwiddle     = (float32_t *) twiddleCoef_2048;
+		S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_4096;
+    break;
+  case 1024u:
+    Sint->bitRevLength = ARMBITREVINDEXTABLE1024_TABLE_LENGTH;
+    Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable1024;
+		Sint->pTwiddle     = (float32_t *) twiddleCoef_1024;
+		S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_2048;
+    break;
+  case 512u:
+    Sint->bitRevLength = ARMBITREVINDEXTABLE_512_TABLE_LENGTH;
+    Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable512;
+		Sint->pTwiddle     = (float32_t *) twiddleCoef_512;
+		S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_1024;
+    break;
+  case 256u:
+    Sint->bitRevLength = ARMBITREVINDEXTABLE_256_TABLE_LENGTH;
+    Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable256;
+		Sint->pTwiddle     = (float32_t *) twiddleCoef_256;
+		S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_512;
+    break;
+  case 128u:
+    Sint->bitRevLength = ARMBITREVINDEXTABLE_128_TABLE_LENGTH;
+    Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable128;
+		Sint->pTwiddle     = (float32_t *) twiddleCoef_128;
+		S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_256;
+    break;
+  case 64u:
+    Sint->bitRevLength = ARMBITREVINDEXTABLE__64_TABLE_LENGTH;
+    Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable64;
+		Sint->pTwiddle     = (float32_t *) twiddleCoef_64;
+		S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_128;
+    break;
+  case 32u:
+    Sint->bitRevLength = ARMBITREVINDEXTABLE__32_TABLE_LENGTH;
+    Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable32;
+		Sint->pTwiddle     = (float32_t *) twiddleCoef_32;
+		S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_64;
+    break;
+  case 16u:
+    Sint->bitRevLength = ARMBITREVINDEXTABLE__16_TABLE_LENGTH;
+    Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable16;
+		Sint->pTwiddle     = (float32_t *) twiddleCoef_16;
+		S->pTwiddleRFFT    = (float32_t *) twiddleCoef_rfft_32;
+    break;
+  default:
+    /*  Reporting argument error if fftSize is not valid value */
+    status = ARM_MATH_ARGUMENT_ERROR;
+    break;
+  }
+
+  return (status);
+}
+
+/**   
+ * @} end of RealFFT group   
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,8376 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_rfft_init_f32.c    
+*    
+* Description:	RFFT & RIFFT Floating point initialisation function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+
+/**    
+ * @ingroup groupTransforms    
+ */
+
+/**    
+ * @addtogroup RealFFT    
+ * @{    
+ */
+
+/**    
+* \par    
+* Generation of realCoefA array:    
+* \par    
+* 	n = 4096    
+* <pre>for (i = 0; i < n; i++)    
+*  {    
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));    
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));    
+*  } </pre>    
+*/
+
+
+
+static const float32_t realCoefA[8192] = {
+  0.500000000000000f, -0.500000000000000f, 0.499616503715515f,
+    -0.499999850988388f,
+  0.499233007431030f, -0.499999403953552f, 0.498849511146545f,
+    -0.499998688697815f,
+  0.498466014862061f, -0.499997645616531f, 0.498082518577576f,
+    -0.499996334314346f,
+  0.497699022293091f, -0.499994695186615f, 0.497315555810928f,
+    -0.499992787837982f,
+  0.496932059526443f, -0.499990582466125f, 0.496548563241959f,
+    -0.499988079071045f,
+  0.496165096759796f, -0.499985307455063f, 0.495781600475311f,
+    -0.499982208013535f,
+  0.495398133993149f, -0.499978810548782f, 0.495014637708664f,
+    -0.499975144863129f,
+  0.494631171226501f, -0.499971181154251f, 0.494247704744339f,
+    -0.499966919422150f,
+  0.493864238262177f, -0.499962359666824f, 0.493480771780014f,
+    -0.499957501888275f,
+  0.493097305297852f, -0.499952346086502f, 0.492713838815689f,
+    -0.499946922063828f,
+  0.492330402135849f, -0.499941170215607f, 0.491946935653687f,
+    -0.499935150146484f,
+  0.491563498973846f, -0.499928832054138f, 0.491180062294006f,
+    -0.499922215938568f,
+  0.490796625614166f, -0.499915301799774f, 0.490413218736649f,
+    -0.499908089637756f,
+  0.490029782056808f, -0.499900579452515f, 0.489646375179291f,
+    -0.499892801046371f,
+  0.489262968301773f, -0.499884694814682f, 0.488879561424255f,
+    -0.499876320362091f,
+  0.488496154546738f, -0.499867647886276f, 0.488112777471542f,
+    -0.499858677387238f,
+  0.487729400396347f, -0.499849408864975f, 0.487346023321152f,
+    -0.499839842319489f,
+  0.486962646245956f, -0.499830007553101f, 0.486579269170761f,
+    -0.499819844961166f,
+  0.486195921897888f, -0.499809414148331f, 0.485812574625015f,
+    -0.499798685312271f,
+  0.485429257154465f, -0.499787658452988f, 0.485045909881592f,
+    -0.499776333570480f,
+  0.484662592411041f, -0.499764710664749f, 0.484279274940491f,
+    -0.499752789735794f,
+  0.483895987272263f, -0.499740600585938f, 0.483512699604034f,
+    -0.499728083610535f,
+  0.483129411935806f, -0.499715298414230f, 0.482746154069901f,
+    -0.499702215194702f,
+  0.482362866401672f, -0.499688833951950f, 0.481979638338089f,
+    -0.499675154685974f,
+  0.481596380472183f, -0.499661177396774f, 0.481213152408600f,
+    -0.499646931886673f,
+  0.480829954147339f, -0.499632388353348f, 0.480446726083755f,
+    -0.499617516994476f,
+  0.480063527822495f, -0.499602377414703f, 0.479680359363556f,
+    -0.499586939811707f,
+  0.479297190904617f, -0.499571204185486f, 0.478914022445679f,
+    -0.499555170536041f,
+  0.478530883789063f, -0.499538868665695f, 0.478147745132446f,
+    -0.499522238969803f,
+  0.477764606475830f, -0.499505341053009f, 0.477381497621536f,
+    -0.499488145112991f,
+  0.476998418569565f, -0.499470651149750f, 0.476615339517593f,
+    -0.499452859163284f,
+  0.476232260465622f, -0.499434769153595f, 0.475849211215973f,
+    -0.499416410923004f,
+  0.475466161966324f, -0.499397724866867f, 0.475083142518997f,
+    -0.499378770589828f,
+  0.474700123071671f, -0.499359518289566f, 0.474317133426666f,
+    -0.499339967966080f,
+  0.473934143781662f, -0.499320119619370f, 0.473551183938980f,
+    -0.499299973249435f,
+  0.473168224096298f, -0.499279528856277f, 0.472785294055939f,
+    -0.499258816242218f,
+  0.472402364015579f, -0.499237775802612f, 0.472019463777542f,
+    -0.499216467142105f,
+  0.471636593341827f, -0.499194860458374f, 0.471253722906113f,
+    -0.499172955751419f,
+  0.470870882272720f, -0.499150782823563f, 0.470488041639328f,
+    -0.499128282070160f,
+  0.470105201005936f, -0.499105513095856f, 0.469722419977188f,
+    -0.499082416296005f,
+  0.469339638948441f, -0.499059051275253f, 0.468956857919693f,
+    -0.499035388231277f,
+  0.468574106693268f, -0.499011427164078f, 0.468191385269165f,
+    -0.498987197875977f,
+  0.467808693647385f, -0.498962640762329f, 0.467426002025604f,
+    -0.498937815427780f,
+  0.467043310403824f, -0.498912662267685f, 0.466660678386688f,
+    -0.498887240886688f,
+  0.466278046369553f, -0.498861521482468f, 0.465895414352417f,
+    -0.498835533857346f,
+  0.465512841939926f, -0.498809218406677f, 0.465130269527435f,
+    -0.498782604932785f,
+  0.464747726917267f, -0.498755723237991f, 0.464365184307098f,
+    -0.498728543519974f,
+  0.463982671499252f, -0.498701065778732f, 0.463600188493729f,
+    -0.498673290014267f,
+  0.463217705488205f, -0.498645216226578f, 0.462835282087326f,
+    -0.498616874217987f,
+  0.462452858686447f, -0.498588204383850f, 0.462070435285568f,
+    -0.498559266328812f,
+  0.461688071489334f, -0.498530030250549f, 0.461305707693100f,
+    -0.498500496149063f,
+  0.460923373699188f, -0.498470664024353f, 0.460541069507599f,
+    -0.498440563678741f,
+  0.460158795118332f, -0.498410135507584f, 0.459776520729065f,
+    -0.498379439115524f,
+  0.459394276142120f, -0.498348444700241f, 0.459012061357498f,
+    -0.498317152261734f,
+  0.458629876375198f, -0.498285561800003f, 0.458247691392899f,
+    -0.498253703117371f,
+  0.457865566015244f, -0.498221516609192f, 0.457483440637589f,
+    -0.498189061880112f,
+  0.457101345062256f, -0.498156309127808f, 0.456719279289246f,
+    -0.498123258352280f,
+  0.456337243318558f, -0.498089909553528f, 0.455955207347870f,
+    -0.498056292533875f,
+  0.455573230981827f, -0.498022347688675f, 0.455191254615784f,
+    -0.497988134622574f,
+  0.454809308052063f, -0.497953623533249f, 0.454427421092987f,
+    -0.497918814420700f,
+  0.454045534133911f, -0.497883707284927f, 0.453663676977158f,
+    -0.497848302125931f,
+  0.453281819820404f, -0.497812628746033f, 0.452900022268295f,
+    -0.497776657342911f,
+  0.452518254518509f, -0.497740387916565f, 0.452136516571045f,
+    -0.497703820466995f,
+  0.451754778623581f, -0.497666954994202f, 0.451373100280762f,
+    -0.497629791498184f,
+  0.450991421937943f, -0.497592359781265f, 0.450609803199768f,
+    -0.497554630041122f,
+  0.450228184461594f, -0.497516602277756f, 0.449846625328064f,
+    -0.497478276491165f,
+  0.449465066194534f, -0.497439652681351f, 0.449083566665649f,
+    -0.497400760650635f,
+  0.448702067136765f, -0.497361570596695f, 0.448320597410202f,
+    -0.497322082519531f,
+  0.447939187288284f, -0.497282296419144f, 0.447557777166367f,
+    -0.497242212295532f,
+  0.447176426649094f, -0.497201830148697f, 0.446795076131821f,
+    -0.497161179780960f,
+  0.446413785219193f, -0.497120231389999f, 0.446032524108887f,
+    -0.497078984975815f,
+  0.445651292800903f, -0.497037440538406f, 0.445270061492920f,
+    -0.496995598077774f,
+  0.444888889789581f, -0.496953487396240f, 0.444507747888565f,
+    -0.496911078691483f,
+  0.444126635789871f, -0.496868371963501f, 0.443745553493500f,
+    -0.496825367212296f,
+  0.443364530801773f, -0.496782064437866f, 0.442983508110046f,
+    -0.496738493442535f,
+  0.442602545022964f, -0.496694594621658f, 0.442221581935883f,
+    -0.496650427579880f,
+  0.441840678453445f, -0.496605962514877f, 0.441459804773331f,
+    -0.496561229228973f,
+  0.441078960895538f, -0.496516168117523f, 0.440698176622391f,
+    -0.496470838785172f,
+  0.440317392349243f, -0.496425211429596f, 0.439936667680740f,
+    -0.496379286050797f,
+  0.439555943012238f, -0.496333062648773f, 0.439175277948380f,
+    -0.496286571025848f,
+  0.438794672489166f, -0.496239781379700f, 0.438414067029953f,
+    -0.496192663908005f,
+  0.438033521175385f, -0.496145308017731f, 0.437653005123138f,
+    -0.496097624301910f,
+  0.437272518873215f, -0.496049642562866f, 0.436892062425613f,
+    -0.496001392602921f,
+  0.436511665582657f, -0.495952844619751f, 0.436131268739700f,
+    -0.495903998613358f,
+  0.435750931501389f, -0.495854884386063f, 0.435370653867722f,
+    -0.495805442333221f,
+  0.434990376234055f, -0.495755732059479f, 0.434610158205032f,
+    -0.495705723762512f,
+  0.434229999780655f, -0.495655417442322f, 0.433849841356277f,
+    -0.495604842901230f,
+  0.433469742536545f, -0.495553970336914f, 0.433089673519135f,
+    -0.495502769947052f,
+  0.432709634304047f, -0.495451331138611f, 0.432329654693604f,
+    -0.495399564504623f,
+  0.431949704885483f, -0.495347499847412f, 0.431569814682007f,
+    -0.495295166969299f,
+  0.431189924478531f, -0.495242536067963f, 0.430810123682022f,
+    -0.495189607143402f,
+  0.430430322885513f, -0.495136409997940f, 0.430050581693649f,
+    -0.495082914829254f,
+  0.429670870304108f, -0.495029091835022f, 0.429291218519211f,
+    -0.494975030422211f,
+  0.428911596536636f, -0.494920641183853f, 0.428532034158707f,
+    -0.494865983724594f,
+  0.428152471780777f, -0.494810998439789f, 0.427772998809814f,
+    -0.494755744934082f,
+  0.427393525838852f, -0.494700223207474f, 0.427014142274857f,
+    -0.494644373655319f,
+  0.426634758710861f, -0.494588255882263f, 0.426255434751511f,
+    -0.494531840085983f,
+  0.425876170396805f, -0.494475126266479f, 0.425496935844421f,
+    -0.494418144226074f,
+  0.425117731094360f, -0.494360834360123f, 0.424738585948944f,
+    -0.494303256273270f,
+  0.424359470605850f, -0.494245409965515f, 0.423980414867401f,
+    -0.494187235832214f,
+  0.423601418733597f, -0.494128793478012f, 0.423222452402115f,
+    -0.494070053100586f,
+  0.422843515872955f, -0.494011014699936f, 0.422464638948441f,
+    -0.493951678276062f,
+  0.422085791826248f, -0.493892073631287f, 0.421707004308701f,
+    -0.493832170963287f,
+  0.421328276395798f, -0.493771970272064f, 0.420949578285217f,
+    -0.493711471557617f,
+  0.420570939779282f, -0.493650704622269f, 0.420192331075668f,
+    -0.493589639663696f,
+  0.419813781976700f, -0.493528276681900f, 0.419435262680054f,
+    -0.493466645479202f,
+  0.419056802988052f, -0.493404686450958f, 0.418678402900696f,
+    -0.493342459201813f,
+  0.418300032615662f, -0.493279963731766f, 0.417921721935272f,
+    -0.493217140436172f,
+  0.417543441057205f, -0.493154048919678f, 0.417165219783783f,
+    -0.493090659379959f,
+  0.416787058115005f, -0.493026971817017f, 0.416408926248550f,
+    -0.492963016033173f,
+  0.416030853986740f, -0.492898762226105f, 0.415652841329575f,
+    -0.492834210395813f,
+  0.415274858474731f, -0.492769360542297f, 0.414896935224533f,
+    -0.492704242467880f,
+  0.414519041776657f, -0.492638826370239f, 0.414141237735748f,
+    -0.492573112249374f,
+  0.413763463497162f, -0.492507129907608f, 0.413385748863220f,
+    -0.492440819740295f,
+  0.413008064031601f, -0.492374241352081f, 0.412630438804626f,
+    -0.492307394742966f,
+  0.412252873182297f, -0.492240220308304f, 0.411875367164612f,
+    -0.492172777652740f,
+  0.411497890949249f, -0.492105036973953f, 0.411120474338531f,
+    -0.492037028074265f,
+  0.410743117332459f, -0.491968721151352f, 0.410365819931030f,
+    -0.491900116205215f,
+  0.409988552331924f, -0.491831213235855f, 0.409611344337463f,
+    -0.491762012243271f,
+  0.409234195947647f, -0.491692543029785f, 0.408857107162476f,
+    -0.491622805595398f,
+  0.408480048179626f, -0.491552740335464f, 0.408103078603745f,
+    -0.491482406854630f,
+  0.407726138830185f, -0.491411775350571f, 0.407349258661270f,
+    -0.491340845823288f,
+  0.406972438097000f, -0.491269648075104f, 0.406595647335052f,
+    -0.491198152303696f,
+  0.406218945980072f, -0.491126358509064f, 0.405842274427414f,
+    -0.491054296493530f,
+  0.405465662479401f, -0.490981936454773f, 0.405089110136032f,
+    -0.490909278392792f,
+  0.404712617397308f, -0.490836352109909f, 0.404336184263229f,
+    -0.490763127803802f,
+  0.403959810733795f, -0.490689605474472f, 0.403583467006683f,
+    -0.490615785121918f,
+  0.403207212686539f, -0.490541696548462f, 0.402830988168716f,
+    -0.490467309951782f,
+  0.402454853057861f, -0.490392625331879f, 0.402078747749329f,
+    -0.490317672491074f,
+  0.401702702045441f, -0.490242421627045f, 0.401326715946198f,
+    -0.490166902542114f,
+  0.400950789451599f, -0.490091055631638f, 0.400574922561646f,
+    -0.490014940500259f,
+  0.400199115276337f, -0.489938557147980f, 0.399823367595673f,
+    -0.489861875772476f,
+  0.399447679519653f, -0.489784896373749f, 0.399072051048279f,
+    -0.489707618951797f,
+  0.398696482181549f, -0.489630073308945f, 0.398320972919464f,
+    -0.489552229642868f,
+  0.397945523262024f, -0.489474087953568f, 0.397570133209229f,
+    -0.489395678043365f,
+  0.397194802761078f, -0.489316970109940f, 0.396819531917572f,
+    -0.489237964153290f,
+  0.396444320678711f, -0.489158689975739f, 0.396069169044495f,
+    -0.489079117774963f,
+  0.395694077014923f, -0.488999247550964f, 0.395319044589996f,
+    -0.488919109106064f,
+  0.394944071769714f, -0.488838672637939f, 0.394569188356400f,
+    -0.488757967948914f,
+  0.394194334745407f, -0.488676935434341f, 0.393819570541382f,
+    -0.488595664501190f,
+  0.393444836139679f, -0.488514065742493f, 0.393070191144943f,
+    -0.488432198762894f,
+  0.392695605754852f, -0.488350033760071f, 0.392321079969406f,
+    -0.488267600536346f,
+  0.391946613788605f, -0.488184869289398f, 0.391572207212448f,
+    -0.488101840019226f,
+  0.391197860240936f, -0.488018542528152f, 0.390823602676392f,
+    -0.487934947013855f,
+  0.390449374914169f, -0.487851053476334f, 0.390075236558914f,
+    -0.487766891717911f,
+  0.389701157808304f, -0.487682431936264f, 0.389327138662338f,
+    -0.487597703933716f,
+  0.388953179121017f, -0.487512677907944f, 0.388579308986664f,
+    -0.487427353858948f,
+  0.388205498456955f, -0.487341761589050f, 0.387831717729568f,
+    -0.487255871295929f,
+  0.387458056211472f, -0.487169682979584f, 0.387084424495697f,
+    -0.487083226442337f,
+  0.386710882186890f, -0.486996471881866f, 0.386337369680405f,
+    -0.486909449100494f,
+  0.385963946580887f, -0.486822128295898f, 0.385590612888336f,
+    -0.486734509468079f,
+  0.385217308998108f, -0.486646622419357f, 0.384844094514847f,
+    -0.486558437347412f,
+  0.384470939636230f, -0.486469984054565f, 0.384097874164581f,
+    -0.486381232738495f,
+  0.383724838495255f, -0.486292183399200f, 0.383351892232895f,
+    -0.486202865839005f,
+  0.382979035377502f, -0.486113250255585f, 0.382606208324432f,
+    -0.486023366451263f,
+  0.382233470678329f, -0.485933154821396f, 0.381860792636871f,
+    -0.485842704772949f,
+  0.381488204002380f, -0.485751956701279f, 0.381115674972534f,
+    -0.485660910606384f,
+  0.380743205547333f, -0.485569566488266f, 0.380370795726776f,
+    -0.485477954149246f,
+  0.379998475313187f, -0.485386073589325f, 0.379626244306564f,
+    -0.485293895006180f,
+  0.379254043102264f, -0.485201418399811f, 0.378881961107254f,
+    -0.485108673572540f,
+  0.378509908914566f, -0.485015630722046f, 0.378137946128845f,
+    -0.484922289848328f,
+  0.377766042947769f, -0.484828680753708f, 0.377394229173660f,
+    -0.484734803438187f,
+  0.377022475004196f, -0.484640628099442f, 0.376650810241699f,
+    -0.484546154737473f,
+  0.376279205083847f, -0.484451413154602f, 0.375907659530640f,
+    -0.484356373548508f,
+  0.375536203384399f, -0.484261035919189f, 0.375164806842804f,
+    -0.484165430068970f,
+  0.374793499708176f, -0.484069555997849f, 0.374422252178192f,
+    -0.483973383903503f,
+  0.374051094055176f, -0.483876913785934f, 0.373679995536804f,
+    -0.483780175447464f,
+  0.373308986425400f, -0.483683139085770f, 0.372938036918640f,
+    -0.483585834503174f,
+  0.372567176818848f, -0.483488231897354f, 0.372196376323700f,
+    -0.483390361070633f,
+  0.371825665235519f, -0.483292192220688f, 0.371455013751984f,
+    -0.483193725347519f,
+  0.371084451675415f, -0.483094990253448f, 0.370713949203491f,
+    -0.482995986938477f,
+  0.370343536138535f, -0.482896685600281f, 0.369973212480545f,
+    -0.482797086238861f,
+  0.369602948427200f, -0.482697218656540f, 0.369232743978500f,
+    -0.482597053050995f,
+  0.368862658739090f, -0.482496619224548f, 0.368492603302002f,
+    -0.482395917177200f,
+  0.368122667074203f, -0.482294887304306f, 0.367752790451050f,
+    -0.482193619012833f,
+  0.367382973432541f, -0.482092022895813f, 0.367013275623322f,
+    -0.481990188360214f,
+  0.366643607616425f, -0.481888025999069f, 0.366274058818817f,
+    -0.481785595417023f,
+  0.365904569625854f, -0.481682896614075f, 0.365535169839859f,
+    -0.481579899787903f,
+  0.365165829658508f, -0.481476634740829f, 0.364796578884125f,
+    -0.481373071670532f,
+  0.364427417516708f, -0.481269240379334f, 0.364058345556259f,
+    -0.481165111064911f,
+  0.363689333200455f, -0.481060713529587f, 0.363320380449295f,
+    -0.480956017971039f,
+  0.362951546907425f, -0.480851024389267f, 0.362582772970200f,
+    -0.480745792388916f,
+  0.362214088439941f, -0.480640232563019f, 0.361845493316650f,
+    -0.480534434318542f,
+  0.361476957798004f, -0.480428308248520f, 0.361108511686325f,
+    -0.480321943759918f,
+  0.360740154981613f, -0.480215251445770f, 0.360371887683868f,
+    -0.480108320713043f,
+  0.360003679990768f, -0.480001062154770f, 0.359635561704636f,
+    -0.479893565177917f,
+  0.359267532825470f, -0.479785770177841f, 0.358899593353271f,
+    -0.479677677154541f,
+  0.358531713485718f, -0.479569315910339f, 0.358163923025131f,
+    -0.479460656642914f,
+  0.357796221971512f, -0.479351729154587f, 0.357428610324860f,
+    -0.479242533445358f,
+  0.357061088085175f, -0.479133039712906f, 0.356693625450134f,
+    -0.479023247957230f,
+  0.356326282024384f, -0.478913217782974f, 0.355958998203278f,
+    -0.478802859783173f,
+  0.355591803789139f, -0.478692263364792f, 0.355224698781967f,
+    -0.478581339120865f,
+  0.354857653379440f, -0.478470176458359f, 0.354490727186203f,
+    -0.478358715772629f,
+  0.354123860597610f, -0.478246957063675f, 0.353757113218308f,
+    -0.478134930133820f,
+  0.353390425443649f, -0.478022634983063f, 0.353023827075958f,
+    -0.477910041809082f,
+  0.352657318115234f, -0.477797180414200f, 0.352290898561478f,
+    -0.477684020996094f,
+  0.351924568414688f, -0.477570593357086f, 0.351558297872543f,
+    -0.477456867694855f,
+  0.351192146539688f, -0.477342873811722f, 0.350826084613800f,
+    -0.477228611707687f,
+  0.350460082292557f, -0.477114051580429f, 0.350094199180603f,
+    -0.476999223232269f,
+  0.349728375673294f, -0.476884096860886f, 0.349362671375275f,
+    -0.476768702268600f,
+  0.348997026681900f, -0.476653009653091f, 0.348631471395493f,
+    -0.476537048816681f,
+  0.348266035318375f, -0.476420819759369f, 0.347900658845901f,
+    -0.476304292678833f,
+  0.347535371780396f, -0.476187497377396f, 0.347170203924179f,
+    -0.476070433855057f,
+  0.346805095672607f, -0.475953072309494f, 0.346440106630325f,
+    -0.475835442543030f,
+  0.346075177192688f, -0.475717514753342f, 0.345710366964340f,
+    -0.475599318742752f,
+  0.345345616340637f, -0.475480824708939f, 0.344980984926224f,
+    -0.475362062454224f,
+  0.344616413116455f, -0.475243031978607f, 0.344251960515976f,
+    -0.475123733282089f,
+  0.343887597322464f, -0.475004136562347f, 0.343523323535919f,
+    -0.474884241819382f,
+  0.343159139156342f, -0.474764078855515f, 0.342795044183731f,
+    -0.474643647670746f,
+  0.342431038618088f, -0.474522948265076f, 0.342067122459412f,
+    -0.474401950836182f,
+  0.341703325510025f, -0.474280685186386f, 0.341339588165283f,
+    -0.474159121513367f,
+  0.340975970029831f, -0.474037289619446f, 0.340612411499023f,
+    -0.473915189504623f,
+  0.340248972177505f, -0.473792791366577f, 0.339885622262955f,
+    -0.473670125007629f,
+  0.339522391557693f, -0.473547190427780f, 0.339159220457077f,
+    -0.473423957824707f,
+  0.338796168565750f, -0.473300457000732f, 0.338433176279068f,
+    -0.473176687955856f,
+  0.338070303201675f, -0.473052620887756f, 0.337707549333572f,
+    -0.472928285598755f,
+  0.337344855070114f, -0.472803652286530f, 0.336982280015945f,
+    -0.472678780555725f,
+  0.336619764566422f, -0.472553610801697f, 0.336257368326187f,
+    -0.472428143024445f,
+  0.335895091295242f, -0.472302407026291f, 0.335532873868942f,
+    -0.472176402807236f,
+  0.335170775651932f, -0.472050130367279f, 0.334808766841888f,
+    -0.471923559904099f,
+  0.334446847438812f, -0.471796721220016f, 0.334085017442703f,
+    -0.471669614315033f,
+  0.333723306655884f, -0.471542209386826f, 0.333361685276031f,
+    -0.471414536237717f,
+  0.333000183105469f, -0.471286594867706f, 0.332638740539551f,
+    -0.471158385276794f,
+  0.332277417182922f, -0.471029877662659f, 0.331916213035584f,
+    -0.470901101827621f,
+  0.331555068492889f, -0.470772027969360f, 0.331194043159485f,
+    -0.470642685890198f,
+  0.330833107233047f, -0.470513075590134f, 0.330472290515900f,
+    -0.470383197069168f,
+  0.330111563205719f, -0.470253020524979f, 0.329750925302505f,
+    -0.470122605562210f,
+  0.329390406608582f, -0.469991862773895f, 0.329029977321625f,
+    -0.469860881567001f,
+  0.328669637441635f, -0.469729602336884f, 0.328309416770935f,
+    -0.469598054885864f,
+  0.327949285507202f, -0.469466239213943f, 0.327589273452759f,
+    -0.469334155321121f,
+  0.327229350805283f, -0.469201773405075f, 0.326869517564774f,
+    -0.469069123268127f,
+  0.326509803533554f, -0.468936175107956f, 0.326150178909302f,
+    -0.468802988529205f,
+  0.325790673494339f, -0.468669503927231f, 0.325431257486343f,
+    -0.468535751104355f,
+  0.325071930885315f, -0.468401730060577f, 0.324712723493576f,
+    -0.468267410993576f,
+  0.324353635311127f, -0.468132823705673f, 0.323994606733322f,
+    -0.467997968196869f,
+  0.323635727167130f, -0.467862844467163f, 0.323276937007904f,
+    -0.467727422714233f,
+  0.322918236255646f, -0.467591762542725f, 0.322559654712677f,
+    -0.467455804347992f,
+  0.322201162576675f, -0.467319577932358f, 0.321842789649963f,
+    -0.467183053493500f,
+  0.321484506130219f, -0.467046260833740f, 0.321126341819763f,
+    -0.466909229755402f,
+  0.320768296718597f, -0.466771900653839f, 0.320410341024399f,
+    -0.466634273529053f,
+  0.320052474737167f, -0.466496407985687f, 0.319694727659225f,
+    -0.466358244419098f,
+  0.319337099790573f, -0.466219812631607f, 0.318979561328888f,
+    -0.466081112623215f,
+  0.318622142076492f, -0.465942144393921f, 0.318264812231064f,
+    -0.465802878141403f,
+  0.317907601594925f, -0.465663343667984f, 0.317550510168076f,
+    -0.465523540973663f,
+  0.317193508148193f, -0.465383470058441f, 0.316836595535278f,
+    -0.465243130922318f,
+  0.316479831933975f, -0.465102523565292f, 0.316123157739639f,
+    -0.464961618185043f,
+  0.315766572952271f, -0.464820444583893f, 0.315410137176514f,
+    -0.464679002761841f,
+  0.315053790807724f, -0.464537292718887f, 0.314697533845901f,
+    -0.464395314455032f,
+  0.314341396093369f, -0.464253038167953f, 0.313985377550125f,
+    -0.464110493659973f,
+  0.313629478216171f, -0.463967710733414f, 0.313273668289185f,
+    -0.463824629783630f,
+  0.312917977571487f, -0.463681250810623f, 0.312562376260757f,
+    -0.463537633419037f,
+  0.312206923961639f, -0.463393747806549f, 0.311851561069489f,
+    -0.463249564170837f,
+  0.311496287584305f, -0.463105112314224f, 0.311141163110733f,
+    -0.462960392236710f,
+  0.310786128044128f, -0.462815403938293f, 0.310431212186813f,
+    -0.462670147418976f,
+  0.310076385736465f, -0.462524622678757f, 0.309721708297729f,
+    -0.462378799915314f,
+  0.309367120265961f, -0.462232738733292f, 0.309012651443481f,
+    -0.462086379528046f,
+  0.308658272027969f, -0.461939752101898f, 0.308304041624069f,
+    -0.461792886257172f,
+  0.307949900627136f, -0.461645722389221f, 0.307595878839493f,
+    -0.461498260498047f,
+  0.307241976261139f, -0.461350560188293f, 0.306888192892075f,
+    -0.461202591657639f,
+  0.306534498929977f, -0.461054325103760f, 0.306180924177170f,
+    -0.460905820131302f,
+  0.305827468633652f, -0.460757017135620f, 0.305474132299423f,
+    -0.460607945919037f,
+  0.305120915174484f, -0.460458606481552f, 0.304767817258835f,
+    -0.460309028625488f,
+  0.304414808750153f, -0.460159152746201f, 0.304061919450760f,
+    -0.460008978843689f,
+  0.303709149360657f, -0.459858566522598f, 0.303356528282166f,
+    -0.459707885980606f,
+  0.303003966808319f, -0.459556937217712f, 0.302651554346085f,
+    -0.459405690431595f,
+  0.302299261093140f, -0.459254205226898f, 0.301947087049484f,
+    -0.459102421998978f,
+  0.301595002412796f, -0.458950400352478f, 0.301243066787720f,
+    -0.458798080682755f,
+  0.300891220569611f, -0.458645492792130f, 0.300539493560791f,
+    -0.458492636680603f,
+  0.300187885761261f, -0.458339542150497f, 0.299836426973343f,
+    -0.458186149597168f,
+  0.299485057592392f, -0.458032488822937f, 0.299133807420731f,
+    -0.457878559827805f,
+  0.298782676458359f, -0.457724362611771f, 0.298431664705276f,
+    -0.457569897174835f,
+  0.298080772161484f, -0.457415163516998f, 0.297729998826981f,
+    -0.457260161638260f,
+  0.297379344701767f, -0.457104891538620f, 0.297028809785843f,
+    -0.456949323415756f,
+  0.296678394079208f, -0.456793516874313f, 0.296328097581863f,
+    -0.456637442111969f,
+  0.295977920293808f, -0.456481099128723f, 0.295627862215042f,
+    -0.456324487924576f,
+  0.295277923345566f, -0.456167578697205f, 0.294928103685379f,
+    -0.456010431051254f,
+  0.294578403234482f, -0.455853015184402f, 0.294228851795197f,
+    -0.455695331096649f,
+  0.293879389762878f, -0.455537378787994f, 0.293530046939850f,
+    -0.455379128456116f,
+  0.293180853128433f, -0.455220639705658f, 0.292831748723984f,
+    -0.455061882734299f,
+  0.292482793331146f, -0.454902857542038f, 0.292133957147598f,
+    -0.454743564128876f,
+  0.291785210371017f, -0.454584002494812f, 0.291436612606049f,
+    -0.454424172639847f,
+  0.291088134050369f, -0.454264044761658f, 0.290739774703979f,
+    -0.454103678464890f,
+  0.290391564369202f, -0.453943043947220f, 0.290043443441391f,
+    -0.453782171010971f,
+  0.289695471525192f, -0.453621000051498f, 0.289347589015961f,
+    -0.453459560871124f,
+  0.288999855518341f, -0.453297853469849f, 0.288652241230011f,
+    -0.453135877847672f,
+  0.288304775953293f, -0.452973634004593f, 0.287957400083542f,
+    -0.452811151742935f,
+  0.287610173225403f, -0.452648371458054f, 0.287263035774231f,
+    -0.452485352754593f,
+  0.286916047334671f, -0.452322036027908f, 0.286569178104401f,
+    -0.452158480882645f,
+  0.286222457885742f, -0.451994657516479f, 0.285875827074051f,
+    -0.451830536127090f,
+  0.285529345273972f, -0.451666176319122f, 0.285182982683182f,
+    -0.451501548290253f,
+  0.284836769104004f, -0.451336652040482f, 0.284490644931793f,
+    -0.451171487569809f,
+  0.284144669771194f, -0.451006084680557f, 0.283798813819885f,
+    -0.450840383768082f,
+  0.283453077077866f, -0.450674414634705f, 0.283107489347458f,
+    -0.450508207082748f,
+  0.282762020826340f, -0.450341701507568f, 0.282416671514511f,
+    -0.450174957513809f,
+  0.282071471214294f, -0.450007945299149f, 0.281726360321045f,
+    -0.449840664863586f,
+  0.281381398439407f, -0.449673116207123f, 0.281036585569382f,
+    -0.449505299329758f,
+  0.280691891908646f, -0.449337244033813f, 0.280347317457199f,
+    -0.449168890714645f,
+  0.280002862215042f, -0.449000298976898f, 0.279658555984497f,
+    -0.448831409215927f,
+  0.279314368963242f, -0.448662281036377f, 0.278970301151276f,
+    -0.448492884635925f,
+  0.278626382350922f, -0.448323249816895f, 0.278282582759857f,
+    -0.448153316974640f,
+  0.277938932180405f, -0.447983115911484f, 0.277595400810242f,
+    -0.447812676429749f,
+  0.277251988649368f, -0.447641968727112f, 0.276908725500107f,
+    -0.447470992803574f,
+  0.276565581560135f, -0.447299748659134f, 0.276222556829453f,
+    -0.447128236293793f,
+  0.275879681110382f, -0.446956485509872f, 0.275536954402924f,
+    -0.446784436702728f,
+  0.275194346904755f, -0.446612149477005f, 0.274851858615875f,
+    -0.446439594030380f,
+  0.274509519338608f, -0.446266770362854f, 0.274167299270630f,
+    -0.446093708276749f,
+  0.273825198411942f, -0.445920348167419f, 0.273483246564865f,
+    -0.445746749639511f,
+  0.273141443729401f, -0.445572882890701f, 0.272799760103226f,
+    -0.445398747920990f,
+  0.272458195686340f, -0.445224374532700f, 0.272116780281067f,
+    -0.445049703121185f,
+  0.271775513887405f, -0.444874793291092f, 0.271434366703033f,
+    -0.444699615240097f,
+  0.271093338727951f, -0.444524168968201f, 0.270752459764481f,
+    -0.444348484277725f,
+  0.270411729812622f, -0.444172531366348f, 0.270071119070053f,
+    -0.443996280431747f,
+  0.269730657339096f, -0.443819820880890f, 0.269390314817429f,
+    -0.443643063306808f,
+  0.269050091505051f, -0.443466067314148f, 0.268710047006607f,
+    -0.443288803100586f,
+  0.268370121717453f, -0.443111270666122f, 0.268030315637589f,
+    -0.442933470010757f,
+  0.267690658569336f, -0.442755430936813f, 0.267351150512695f,
+    -0.442577123641968f,
+  0.267011761665344f, -0.442398548126221f, 0.266672492027283f,
+    -0.442219734191895f,
+  0.266333401203156f, -0.442040622234344f, 0.265994429588318f,
+    -0.441861271858215f,
+  0.265655577182770f, -0.441681683063507f, 0.265316903591156f,
+    -0.441501796245575f,
+  0.264978319406509f, -0.441321671009064f, 0.264639914035797f,
+    -0.441141277551651f,
+  0.264301627874374f, -0.440960645675659f, 0.263963490724564f,
+    -0.440779715776443f,
+  0.263625472784042f, -0.440598547458649f, 0.263287603855133f,
+    -0.440417140722275f,
+  0.262949883937836f, -0.440235435962677f, 0.262612313032150f,
+    -0.440053492784500f,
+  0.262274861335754f, -0.439871311187744f, 0.261937558650970f,
+    -0.439688831567764f,
+  0.261600375175476f, -0.439506113529205f, 0.261263370513916f,
+    -0.439323127269745f,
+  0.260926485061646f, -0.439139902591705f, 0.260589718818665f,
+    -0.438956409692764f,
+  0.260253131389618f, -0.438772648572922f, 0.259916663169861f,
+    -0.438588619232178f,
+  0.259580343961716f, -0.438404351472855f, 0.259244143962860f,
+    -0.438219845294952f,
+  0.258908122777939f, -0.438035041093826f, 0.258572220802307f,
+    -0.437849998474121f,
+  0.258236467838287f, -0.437664687633514f, 0.257900834083557f,
+    -0.437479138374329f,
+  0.257565379142761f, -0.437293320894241f, 0.257230043411255f,
+    -0.437107264995575f,
+  0.256894856691360f, -0.436920911073685f, 0.256559818983078f,
+    -0.436734348535538f,
+  0.256224930286407f, -0.436547487974167f, 0.255890160799026f,
+    -0.436360388994217f,
+  0.255555540323257f, -0.436173021793365f, 0.255221068859100f,
+    -0.435985416173935f,
+  0.254886746406555f, -0.435797542333603f, 0.254552572965622f,
+    -0.435609430074692f,
+  0.254218548536301f, -0.435421019792557f, 0.253884643316269f,
+    -0.435232400894165f,
+  0.253550916910172f, -0.435043483972549f, 0.253217309713364f,
+    -0.434854328632355f,
+  0.252883851528168f, -0.434664934873581f, 0.252550542354584f,
+    -0.434475272893906f,
+  0.252217382192612f, -0.434285342693329f, 0.251884341239929f,
+    -0.434095174074173f,
+  0.251551479101181f, -0.433904737234116f, 0.251218736171722f,
+    -0.433714061975479f,
+  0.250886172056198f, -0.433523118495941f, 0.250553727149963f,
+    -0.433331936597824f,
+  0.250221431255341f, -0.433140486478806f, 0.249889299273491f,
+    -0.432948768138886f,
+  0.249557301402092f, -0.432756811380386f, 0.249225467443466f,
+    -0.432564586400986f,
+  0.248893767595291f, -0.432372123003006f, 0.248562216758728f,
+    -0.432179391384125f,
+  0.248230814933777f, -0.431986421346664f, 0.247899547219276f,
+    -0.431793183088303f,
+  0.247568443417549f, -0.431599706411362f, 0.247237488627434f,
+    -0.431405961513519f,
+  0.246906682848930f, -0.431211978197098f, 0.246576011180878f,
+    -0.431017726659775f,
+  0.246245503425598f, -0.430823236703873f, 0.245915144681931f,
+    -0.430628478527069f,
+  0.245584934949875f, -0.430433481931686f, 0.245254859328270f,
+    -0.430238217115402f,
+  0.244924947619438f, -0.430042684078217f, 0.244595184922218f,
+    -0.429846942424774f,
+  0.244265571236610f, -0.429650902748108f, 0.243936106562614f,
+    -0.429454624652863f,
+  0.243606805801392f, -0.429258108139038f, 0.243277639150620f,
+    -0.429061323404312f,
+  0.242948621511459f, -0.428864300251007f, 0.242619767785072f,
+    -0.428667008876801f,
+  0.242291063070297f, -0.428469479084015f, 0.241962507367134f,
+    -0.428271710872650f,
+  0.241634100675583f, -0.428073674440384f, 0.241305842995644f,
+    -0.427875369787216f,
+  0.240977749228477f, -0.427676826715469f, 0.240649804472923f,
+    -0.427478045225143f,
+  0.240322008728981f, -0.427278995513916f, 0.239994361996651f,
+    -0.427079707384110f,
+  0.239666879177094f, -0.426880151033401f, 0.239339530467987f,
+    -0.426680356264114f,
+  0.239012360572815f, -0.426480293273926f, 0.238685324788094f,
+    -0.426279991865158f,
+  0.238358452916145f, -0.426079452037811f, 0.238031730055809f,
+    -0.425878643989563f,
+  0.237705156207085f, -0.425677597522736f, 0.237378746271133f,
+    -0.425476282835007f,
+  0.237052485346794f, -0.425274729728699f, 0.236726388335228f,
+    -0.425072938203812f,
+  0.236400425434113f, -0.424870878458023f, 0.236074641346931f,
+    -0.424668580293655f,
+  0.235749006271362f, -0.424466013908386f, 0.235423520207405f,
+    -0.424263238906860f,
+  0.235098183155060f, -0.424060165882111f, 0.234773010015488f,
+    -0.423856884241104f,
+  0.234448000788689f, -0.423653304576874f, 0.234123140573502f,
+    -0.423449516296387f,
+  0.233798429369926f, -0.423245459794998f, 0.233473882079124f,
+    -0.423041164875031f,
+  0.233149498701096f, -0.422836631536484f, 0.232825264334679f,
+    -0.422631829977036f,
+  0.232501193881035f, -0.422426789999008f, 0.232177272439003f,
+    -0.422221481800079f,
+  0.231853514909744f, -0.422015935182571f, 0.231529906392097f,
+    -0.421810150146484f,
+  0.231206461787224f, -0.421604126691818f, 0.230883181095123f,
+    -0.421397835016251f,
+  0.230560049414635f, -0.421191304922104f, 0.230237081646919f,
+    -0.420984506607056f,
+  0.229914262890816f, -0.420777499675751f, 0.229591608047485f,
+    -0.420570224523544f,
+  0.229269117116928f, -0.420362681150436f, 0.228946775197983f,
+    -0.420154929161072f,
+  0.228624612092972f, -0.419946908950806f, 0.228302597999573f,
+    -0.419738620519638f,
+  0.227980732917786f, -0.419530123472214f, 0.227659046649933f,
+    -0.419321358203888f,
+  0.227337509393692f, -0.419112354516983f, 0.227016136050224f,
+    -0.418903112411499f,
+  0.226694911718369f, -0.418693602085114f, 0.226373866200447f,
+    -0.418483853340149f,
+  0.226052969694138f, -0.418273866176605f, 0.225732237100601f,
+    -0.418063640594482f,
+  0.225411668419838f, -0.417853146791458f, 0.225091263651848f,
+    -0.417642414569855f,
+  0.224771007895470f, -0.417431443929672f, 0.224450930953026f,
+    -0.417220205068588f,
+  0.224131003022194f, -0.417008757591248f, 0.223811239004135f,
+    -0.416797041893005f,
+  0.223491653800011f, -0.416585087776184f, 0.223172217607498f,
+    -0.416372895240784f,
+  0.222852945327759f, -0.416160434484482f, 0.222533836960793f,
+    -0.415947735309601f,
+  0.222214877605438f, -0.415734797716141f, 0.221896097064018f,
+    -0.415521621704102f,
+  0.221577480435371f, -0.415308207273483f, 0.221259027719498f,
+    -0.415094524621964f,
+  0.220940738916397f, -0.414880603551865f, 0.220622614026070f,
+    -0.414666473865509f,
+  0.220304638147354f, -0.414452046155930f, 0.219986841082573f,
+    -0.414237409830093f,
+  0.219669207930565f, -0.414022535085678f, 0.219351738691330f,
+    -0.413807392120361f,
+  0.219034433364868f, -0.413592010736465f, 0.218717306852341f,
+    -0.413376390933990f,
+  0.218400329351425f, -0.413160532712936f, 0.218083515763283f,
+    -0.412944436073303f,
+  0.217766880989075f, -0.412728071212769f, 0.217450410127640f,
+    -0.412511497735977f,
+  0.217134088277817f, -0.412294656038284f, 0.216817945241928f,
+    -0.412077575922012f,
+  0.216501981019974f, -0.411860257387161f, 0.216186165809631f,
+    -0.411642700433731f,
+  0.215870529413223f, -0.411424905061722f, 0.215555042028427f,
+    -0.411206841468811f,
+  0.215239733457565f, -0.410988569259644f, 0.214924603700638f,
+    -0.410770028829575f,
+  0.214609622955322f, -0.410551249980927f, 0.214294821023941f,
+    -0.410332232713699f,
+  0.213980183005333f, -0.410112977027893f, 0.213665723800659f,
+    -0.409893482923508f,
+  0.213351413607597f, -0.409673750400543f, 0.213037282228470f,
+    -0.409453779459000f,
+  0.212723329663277f, -0.409233570098877f, 0.212409526109695f,
+    -0.409013092517853f,
+  0.212095901370049f, -0.408792406320572f, 0.211782455444336f,
+    -0.408571451902390f,
+  0.211469158530235f, -0.408350288867950f, 0.211156040430069f,
+    -0.408128857612610f,
+  0.210843101143837f, -0.407907217741013f, 0.210530325770378f,
+    -0.407685309648514f,
+  0.210217714309692f, -0.407463163137436f, 0.209905281662941f,
+    -0.407240778207779f,
+  0.209593027830124f, -0.407018154859543f, 0.209280923008919f,
+    -0.406795293092728f,
+  0.208969011902809f, -0.406572192907333f, 0.208657249808311f,
+    -0.406348884105682f,
+  0.208345666527748f, -0.406125307083130f, 0.208034262061119f,
+    -0.405901491641998f,
+  0.207723021507263f, -0.405677437782288f, 0.207411959767342f,
+    -0.405453115701675f,
+  0.207101076841354f, -0.405228585004807f, 0.206790357828140f,
+    -0.405003815889359f,
+  0.206479802727699f, -0.404778808355331f, 0.206169426441193f,
+    -0.404553562402725f,
+  0.205859228968620f, -0.404328078031540f, 0.205549195408821f,
+    -0.404102355241776f,
+  0.205239340662956f, -0.403876423835754f, 0.204929664731026f,
+    -0.403650224208832f,
+  0.204620152711868f, -0.403423786163330f, 0.204310819506645f,
+    -0.403197109699249f,
+  0.204001650214195f, -0.402970194816589f, 0.203692659735680f,
+    -0.402743041515350f,
+  0.203383848071098f, -0.402515679597855f, 0.203075215220451f,
+    -0.402288049459457f,
+  0.202766746282578f, -0.402060180902481f, 0.202458456158638f,
+    -0.401832103729248f,
+  0.202150344848633f, -0.401603758335114f, 0.201842412352562f,
+    -0.401375204324722f,
+  0.201534643769264f, -0.401146411895752f, 0.201227053999901f,
+    -0.400917351245880f,
+  0.200919643044472f, -0.400688081979752f, 0.200612410902977f,
+    -0.400458574295044f,
+  0.200305357575417f, -0.400228828191757f, 0.199998468160629f,
+    -0.399998843669891f,
+  0.199691757559776f, -0.399768620729446f, 0.199385225772858f,
+    -0.399538189172745f,
+  0.199078872799873f, -0.399307489395142f, 0.198772698640823f,
+    -0.399076581001282f,
+  0.198466703295708f, -0.398845434188843f, 0.198160871863365f,
+    -0.398614019155502f,
+  0.197855234146118f, -0.398382395505905f, 0.197549775242805f,
+    -0.398150533437729f,
+  0.197244480252266f, -0.397918462753296f, 0.196939364075661f,
+    -0.397686123847961f,
+  0.196634441614151f, -0.397453576326370f, 0.196329683065414f,
+    -0.397220760583878f,
+  0.196025103330612f, -0.396987736225128f, 0.195720717310905f,
+    -0.396754473447800f,
+  0.195416495203972f, -0.396520972251892f, 0.195112451910973f,
+    -0.396287262439728f,
+  0.194808602333069f, -0.396053284406662f, 0.194504916667938f,
+    -0.395819097757339f,
+  0.194201424717903f, -0.395584672689438f, 0.193898096680641f,
+    -0.395350009202957f,
+  0.193594962358475f, -0.395115107297897f, 0.193292006850243f,
+    -0.394879996776581f,
+  0.192989215254784f, -0.394644618034363f, 0.192686617374420f,
+    -0.394409030675888f,
+  0.192384198307991f, -0.394173204898834f, 0.192081972956657f,
+    -0.393937170505524f,
+  0.191779911518097f, -0.393700867891312f, 0.191478043794632f,
+    -0.393464356660843f,
+  0.191176339983940f, -0.393227607011795f, 0.190874829888344f,
+    -0.392990618944168f,
+  0.190573498606682f, -0.392753422260284f, 0.190272361040115f,
+    -0.392515957355499f,
+  0.189971387386322f, -0.392278283834457f, 0.189670607447624f,
+    -0.392040401697159f,
+  0.189370006322861f, -0.391802251338959f, 0.189069598913193f,
+    -0.391563892364502f,
+  0.188769355416298f, -0.391325294971466f, 0.188469305634499f,
+    -0.391086459159851f,
+  0.188169434666634f, -0.390847414731979f, 0.187869757413864f,
+    -0.390608131885529f,
+  0.187570258975029f, -0.390368610620499f, 0.187270939350128f,
+    -0.390128880739212f,
+  0.186971798539162f, -0.389888882637024f, 0.186672851443291f,
+    -0.389648675918579f,
+  0.186374098062515f, -0.389408260583878f, 0.186075508594513f,
+    -0.389167606830597f,
+  0.185777112841606f, -0.388926714658737f, 0.185478910803795f,
+    -0.388685584068298f,
+  0.185180887579918f, -0.388444244861603f, 0.184883043169975f,
+    -0.388202667236328f,
+  0.184585392475128f, -0.387960851192474f, 0.184287920594215f,
+    -0.387718826532364f,
+  0.183990627527237f, -0.387476563453674f, 0.183693528175354f,
+    -0.387234061956406f,
+  0.183396622538567f, -0.386991351842880f, 0.183099895715714f,
+    -0.386748403310776f,
+  0.182803362607956f, -0.386505216360092f, 0.182507008314133f,
+    -0.386261820793152f,
+  0.182210832834244f, -0.386018186807632f, 0.181914865970612f,
+    -0.385774344205856f,
+  0.181619063019753f, -0.385530263185501f, 0.181323468685150f,
+    -0.385285943746567f,
+  0.181028053164482f, -0.385041415691376f, 0.180732816457748f,
+    -0.384796649217606f,
+  0.180437773466110f, -0.384551674127579f, 0.180142924189568f,
+    -0.384306460618973f,
+  0.179848253726959f, -0.384061008691788f, 0.179553776979446f,
+    -0.383815348148346f,
+  0.179259493947029f, -0.383569449186325f, 0.178965389728546f,
+    -0.383323341608047f,
+  0.178671479225159f, -0.383076995611191f, 0.178377762436867f,
+    -0.382830440998077f,
+  0.178084224462509f, -0.382583618164063f, 0.177790880203247f,
+    -0.382336616516113f,
+  0.177497729659081f, -0.382089376449585f, 0.177204772830009f,
+    -0.381841897964478f,
+  0.176911994814873f, -0.381594210863113f, 0.176619410514832f,
+    -0.381346285343170f,
+  0.176327019929886f, -0.381098151206970f, 0.176034808158875f,
+    -0.380849778652191f,
+  0.175742805004120f, -0.380601197481155f, 0.175450980663300f,
+    -0.380352377891541f,
+  0.175159350037575f, -0.380103349685669f, 0.174867913126946f,
+    -0.379854083061218f,
+  0.174576655030251f, -0.379604607820511f, 0.174285605549812f,
+    -0.379354894161224f,
+  0.173994734883308f, -0.379104942083359f, 0.173704057931900f,
+    -0.378854811191559f,
+  0.173413574695587f, -0.378604412078857f, 0.173123285174370f,
+    -0.378353834152222f,
+  0.172833189368248f, -0.378102988004684f, 0.172543287277222f,
+    -0.377851963043213f,
+  0.172253578901291f, -0.377600699663162f, 0.171964049339294f,
+    -0.377349197864532f,
+  0.171674728393555f, -0.377097487449646f, 0.171385586261749f,
+    -0.376845568418503f,
+  0.171096652746201f, -0.376593410968781f, 0.170807912945747f,
+    -0.376341015100479f,
+  0.170519351959229f, -0.376088410615921f, 0.170230999588966f,
+    -0.375835597515106f,
+  0.169942826032639f, -0.375582575798035f, 0.169654861092567f,
+    -0.375329315662384f,
+  0.169367074966431f, -0.375075817108154f, 0.169079497456551f,
+    -0.374822109937668f,
+  0.168792113661766f, -0.374568194150925f, 0.168504923582077f,
+    -0.374314039945602f,
+  0.168217927217484f, -0.374059677124023f, 0.167931124567986f,
+    -0.373805105686188f,
+  0.167644515633583f, -0.373550295829773f, 0.167358100414276f,
+    -0.373295277357101f,
+  0.167071878910065f, -0.373040050268173f, 0.166785866022110f,
+    -0.372784584760666f,
+  0.166500031948090f, -0.372528880834579f, 0.166214406490326f,
+    -0.372272998094559f,
+  0.165928974747658f, -0.372016876935959f, 0.165643751621246f,
+    -0.371760547161102f,
+  0.165358707308769f, -0.371503978967667f, 0.165073871612549f,
+    -0.371247202157974f,
+  0.164789214730263f, -0.370990216732025f, 0.164504766464233f,
+    -0.370732992887497f,
+  0.164220526814461f, -0.370475560426712f, 0.163936465978622f,
+    -0.370217919349670f,
+  0.163652613759041f, -0.369960039854050f, 0.163368955254555f,
+    -0.369701951742172f,
+  0.163085505366325f, -0.369443655014038f, 0.162802234292030f,
+    -0.369185149669647f,
+  0.162519171833992f, -0.368926405906677f, 0.162236317992210f,
+    -0.368667453527451f,
+  0.161953642964363f, -0.368408292531967f, 0.161671176552773f,
+    -0.368148893117905f,
+  0.161388918757439f, -0.367889285087585f, 0.161106839776039f,
+    -0.367629468441010f,
+  0.160824984312058f, -0.367369443178177f, 0.160543307662010f,
+    -0.367109179496765f,
+  0.160261839628220f, -0.366848707199097f, 0.159980565309525f,
+    -0.366588026285172f,
+  0.159699499607086f, -0.366327136754990f, 0.159418627619743f,
+    -0.366066008806229f,
+  0.159137964248657f, -0.365804702043533f, 0.158857494592667f,
+    -0.365543156862259f,
+  0.158577233552933f, -0.365281373262405f, 0.158297166228294f,
+    -0.365019410848618f,
+  0.158017292618752f, -0.364757210016251f, 0.157737627625465f,
+    -0.364494800567627f,
+  0.157458171248436f, -0.364232182502747f, 0.157178908586502f,
+    -0.363969355821610f,
+  0.156899839639664f, -0.363706320524216f, 0.156620979309082f,
+    -0.363443046808243f,
+  0.156342327594757f, -0.363179564476013f, 0.156063869595528f,
+    -0.362915903329849f,
+  0.155785620212555f, -0.362651973962784f, 0.155507579445839f,
+    -0.362387865781784f,
+  0.155229732394218f, -0.362123548984528f, 0.154952079057693f,
+    -0.361858993768692f,
+  0.154674649238586f, -0.361594229936600f, 0.154397398233414f,
+    -0.361329287290573f,
+  0.154120370745659f, -0.361064106225967f, 0.153843536973000f,
+    -0.360798716545105f,
+  0.153566911816597f, -0.360533088445663f, 0.153290495276451f,
+    -0.360267281532288f,
+  0.153014272451401f, -0.360001266002655f, 0.152738258242607f,
+    -0.359735012054443f,
+  0.152462437748909f, -0.359468549489975f, 0.152186840772629f,
+    -0.359201908111572f,
+  0.151911437511444f, -0.358935028314590f, 0.151636242866516f,
+    -0.358667939901352f,
+  0.151361241936684f, -0.358400642871857f, 0.151086464524269f,
+    -0.358133137226105f,
+  0.150811880826950f, -0.357865422964096f, 0.150537505745888f,
+    -0.357597470283508f,
+  0.150263324379921f, -0.357329338788986f, 0.149989366531372f,
+    -0.357060998678207f,
+  0.149715602397919f, -0.356792420148849f, 0.149442046880722f,
+    -0.356523662805557f,
+  0.149168699979782f, -0.356254696846008f, 0.148895561695099f,
+    -0.355985492467880f,
+  0.148622632026672f, -0.355716109275818f, 0.148349896073341f,
+    -0.355446487665176f,
+  0.148077383637428f, -0.355176687240601f, 0.147805064916611f,
+    -0.354906648397446f,
+  0.147532954812050f, -0.354636400938034f, 0.147261068224907f,
+    -0.354365974664688f,
+  0.146989375352860f, -0.354095309972763f, 0.146717891097069f,
+    -0.353824466466904f,
+  0.146446615457535f, -0.353553384542465f, 0.146175548434258f,
+    -0.353282123804092f,
+  0.145904675126076f, -0.353010624647141f, 0.145634025335312f,
+    -0.352738946676254f,
+  0.145363584160805f, -0.352467030286789f, 0.145093351602554f,
+    -0.352194935083389f,
+  0.144823327660561f, -0.351922631263733f, 0.144553512334824f,
+    -0.351650089025497f,
+  0.144283905625343f, -0.351377367973328f, 0.144014507532120f,
+    -0.351104438304901f,
+  0.143745318055153f, -0.350831300020218f, 0.143476337194443f,
+    -0.350557953119278f,
+  0.143207564949989f, -0.350284397602081f, 0.142939001321793f,
+    -0.350010633468628f,
+  0.142670661211014f, -0.349736660718918f, 0.142402514815331f,
+    -0.349462509155273f,
+  0.142134591937065f, -0.349188119173050f, 0.141866862773895f,
+    -0.348913550376892f,
+  0.141599357128143f, -0.348638743162155f, 0.141332060098648f,
+    -0.348363757133484f,
+  0.141064971685410f, -0.348088562488556f, 0.140798106789589f,
+    -0.347813159227371f,
+  0.140531435608864f, -0.347537547349930f, 0.140264987945557f,
+    -0.347261756658554f,
+  0.139998748898506f, -0.346985727548599f, 0.139732718467712f,
+    -0.346709519624710f,
+  0.139466896653175f, -0.346433073282242f, 0.139201298356056f,
+    -0.346156448125839f,
+  0.138935908675194f, -0.345879614353180f, 0.138670727610588f,
+    -0.345602601766586f,
+  0.138405755162239f, -0.345325350761414f, 0.138141006231308f,
+    -0.345047920942307f,
+  0.137876465916634f, -0.344770282506943f, 0.137612134218216f,
+    -0.344492435455322f,
+  0.137348011136055f, -0.344214379787445f, 0.137084111571312f,
+    -0.343936115503311f,
+  0.136820420622826f, -0.343657672405243f, 0.136556953191757f,
+    -0.343379020690918f,
+  0.136293679475784f, -0.343100160360336f, 0.136030644178391f,
+    -0.342821091413498f,
+  0.135767802596092f, -0.342541843652725f, 0.135505184531212f,
+    -0.342262357473373f,
+  0.135242775082588f, -0.341982692480087f, 0.134980589151382f,
+    -0.341702848672867f,
+  0.134718611836433f, -0.341422766447067f, 0.134456858038902f,
+    -0.341142505407333f,
+  0.134195312857628f, -0.340862035751343f, 0.133933976292610f,
+    -0.340581357479095f,
+  0.133672863245010f, -0.340300500392914f, 0.133411958813667f,
+    -0.340019434690475f,
+  0.133151277899742f, -0.339738160371780f, 0.132890805602074f,
+    -0.339456677436829f,
+  0.132630556821823f, -0.339175015687943f, 0.132370531558990f,
+    -0.338893145322800f,
+  0.132110700011253f, -0.338611096143723f, 0.131851106882095f,
+    -0.338328808546066f,
+  0.131591722369194f, -0.338046342134476f, 0.131332546472549f,
+    -0.337763696908951f,
+  0.131073594093323f, -0.337480813264847f, 0.130814850330353f,
+    -0.337197750806808f,
+  0.130556344985962f, -0.336914509534836f, 0.130298033356667f,
+    -0.336631029844284f,
+  0.130039945244789f, -0.336347371339798f, 0.129782080650330f,
+    -0.336063534021378f,
+  0.129524439573288f, -0.335779488086700f, 0.129267007112503f,
+    -0.335495233535767f,
+  0.129009798169136f, -0.335210770368576f, 0.128752797842026f,
+    -0.334926128387451f,
+  0.128496021032333f, -0.334641307592392f, 0.128239467740059f,
+    -0.334356248378754f,
+  0.127983123064041f, -0.334071010351181f, 0.127727001905441f,
+    -0.333785593509674f,
+  0.127471104264259f, -0.333499968051910f, 0.127215430140495f,
+    -0.333214133977890f,
+  0.126959964632988f, -0.332928121089935f, 0.126704722642899f,
+    -0.332641899585724f,
+  0.126449704170227f, -0.332355499267578f, 0.126194894313812f,
+    -0.332068890333176f,
+  0.125940307974815f, -0.331782072782516f, 0.125685945153236f,
+    -0.331495076417923f,
+  0.125431805849075f, -0.331207901239395f, 0.125177875161171f,
+    -0.330920487642288f,
+  0.124924175441265f, -0.330632925033569f, 0.124670691788197f,
+    -0.330345153808594f,
+  0.124417431652546f, -0.330057173967361f, 0.124164395034313f,
+    -0.329769015312195f,
+  0.123911574482918f, -0.329480648040771f, 0.123658977448940f,
+    -0.329192101955414f,
+  0.123406603932381f, -0.328903347253799f, 0.123154446482658f,
+    -0.328614413738251f,
+  0.122902512550354f, -0.328325271606445f, 0.122650802135468f,
+    -0.328035950660706f,
+  0.122399315237999f, -0.327746421098709f, 0.122148044407368f,
+    -0.327456712722778f,
+  0.121896997094154f, -0.327166795730591f, 0.121646173298359f,
+    -0.326876699924469f,
+  0.121395580470562f, -0.326586425304413f, 0.121145196259022f,
+    -0.326295942068100f,
+  0.120895043015480f, -0.326005280017853f, 0.120645113289356f,
+    -0.325714409351349f,
+  0.120395407080650f, -0.325423330068588f, 0.120145916938782f,
+    -0.325132101774216f,
+  0.119896657764912f, -0.324840664863586f, 0.119647622108459f,
+    -0.324549019336700f,
+  0.119398809969425f, -0.324257194995880f, 0.119150213897228f,
+    -0.323965191841125f,
+  0.118901848793030f, -0.323672980070114f, 0.118653707206249f,
+    -0.323380589485168f,
+  0.118405789136887f, -0.323088020086288f, 0.118158094584942f,
+    -0.322795242071152f,
+  0.117910631000996f, -0.322502255439758f, 0.117663383483887f,
+    -0.322209119796753f,
+  0.117416366934776f, -0.321915775537491f, 0.117169573903084f,
+    -0.321622252464294f,
+  0.116923004388809f, -0.321328520774841f, 0.116676658391953f,
+    -0.321034610271454f,
+  0.116430543363094f, -0.320740520954132f, 0.116184651851654f,
+    -0.320446223020554f,
+  0.115938983857632f, -0.320151746273041f, 0.115693546831608f,
+    -0.319857090711594f,
+  0.115448333323002f, -0.319562226533890f, 0.115203343331814f,
+    -0.319267183542252f,
+  0.114958584308624f, -0.318971961736679f, 0.114714048802853f,
+    -0.318676531314850f,
+  0.114469736814499f, -0.318380922079086f, 0.114225655794144f,
+    -0.318085134029388f,
+  0.113981798291206f, -0.317789167165756f, 0.113738171756268f,
+    -0.317492991685867f,
+  0.113494776189327f, -0.317196637392044f, 0.113251596689224f,
+    -0.316900104284287f,
+  0.113008655607700f, -0.316603392362595f, 0.112765938043594f,
+    -0.316306471824646f,
+  0.112523443996906f, -0.316009372472763f, 0.112281180918217f,
+    -0.315712094306946f,
+  0.112039148807526f, -0.315414607524872f, 0.111797347664833f,
+    -0.315116971731186f,
+  0.111555770039558f, -0.314819127321243f, 0.111314415931702f,
+    -0.314521104097366f,
+  0.111073300242424f, -0.314222872257233f, 0.110832408070564f,
+    -0.313924491405487f,
+  0.110591746866703f, -0.313625901937485f, 0.110351309180260f,
+    -0.313327133655548f,
+  0.110111102461815f, -0.313028186559677f, 0.109871134161949f,
+    -0.312729060649872f,
+  0.109631389379501f, -0.312429755926132f, 0.109391868114471f,
+    -0.312130242586136f,
+  0.109152585268021f, -0.311830550432205f, 0.108913525938988f,
+    -0.311530679464340f,
+  0.108674705028534f, -0.311230629682541f, 0.108436107635498f,
+    -0.310930401086807f,
+  0.108197741210461f, -0.310629993677139f, 0.107959605753422f,
+    -0.310329377651215f,
+  0.107721701264381f, -0.310028612613678f, 0.107484027743340f,
+    -0.309727638959885f,
+  0.107246585190296f, -0.309426486492157f, 0.107009373605251f,
+    -0.309125155210495f,
+  0.106772392988205f, -0.308823645114899f, 0.106535643339157f,
+    -0.308521956205368f,
+  0.106299124658108f, -0.308220088481903f, 0.106062836945057f,
+    -0.307918041944504f,
+  0.105826787650585f, -0.307615786790848f, 0.105590961873531f,
+    -0.307313382625580f,
+  0.105355374515057f, -0.307010769844055f, 0.105120018124580f,
+    -0.306708008050919f,
+  0.104884892702103f, -0.306405037641525f, 0.104649998247623f,
+    -0.306101888418198f,
+  0.104415334761143f, -0.305798590183258f, 0.104180909693241f,
+    -0.305495083332062f,
+  0.103946708142757f, -0.305191397666931f, 0.103712752461433f,
+    -0.304887533187866f,
+  0.103479020297527f, -0.304583519697189f, 0.103245526552200f,
+    -0.304279297590256f,
+  0.103012263774872f, -0.303974896669388f, 0.102779231965542f,
+    -0.303670316934586f,
+  0.102546438574791f, -0.303365558385849f, 0.102313876152039f,
+    -0.303060621023178f,
+  0.102081544697285f, -0.302755534648895f, 0.101849451661110f,
+    -0.302450239658356f,
+  0.101617597043514f, -0.302144765853882f, 0.101385973393917f,
+    -0.301839113235474f,
+  0.101154580712318f, -0.301533311605453f, 0.100923426449299f,
+    -0.301227301359177f,
+  0.100692503154278f, -0.300921112298965f, 0.100461818277836f,
+    -0.300614774227142f,
+  0.100231364369392f, -0.300308227539063f, 0.100001148879528f,
+    -0.300001531839371f,
+  0.099771171808243f, -0.299694657325745f, 0.099541425704956f,
+    -0.299387603998184f,
+  0.099311910569668f, -0.299080342054367f, 0.099082641303539f,
+    -0.298772931098938f,
+  0.098853603005409f, -0.298465341329575f, 0.098624803125858f,
+    -0.298157602548599f,
+  0.098396234214306f, -0.297849655151367f, 0.098167903721333f,
+    -0.297541528940201f,
+  0.097939811646938f, -0.297233253717422f, 0.097711957991123f,
+    -0.296924799680710f,
+  0.097484335303307f, -0.296616137027740f, 0.097256951034069f,
+    -0.296307325363159f,
+  0.097029805183411f, -0.295998334884644f, 0.096802897751331f,
+    -0.295689195394516f,
+  0.096576221287251f, -0.295379847288132f, 0.096349790692329f,
+    -0.295070350170136f,
+  0.096123591065407f, -0.294760644435883f, 0.095897629857063f,
+    -0.294450789690018f,
+  0.095671907067299f, -0.294140785932541f, 0.095446422696114f,
+    -0.293830573558807f,
+  0.095221176743507f, -0.293520182371140f, 0.094996169209480f,
+    -0.293209642171860f,
+  0.094771400094032f, -0.292898923158646f, 0.094546869397163f,
+    -0.292588025331497f,
+  0.094322577118874f, -0.292276978492737f, 0.094098523259163f,
+    -0.291965723037720f,
+  0.093874707818031f, -0.291654318571091f, 0.093651130795479f,
+    -0.291342735290527f,
+  0.093427792191505f, -0.291031002998352f, 0.093204692006111f,
+    -0.290719062089920f,
+  0.092981837689877f, -0.290406972169876f, 0.092759214341640f,
+    -0.290094703435898f,
+  0.092536836862564f, -0.289782285690308f, 0.092314697802067f,
+    -0.289469659328461f,
+  0.092092797160149f, -0.289156883955002f, 0.091871134936810f,
+    -0.288843959569931f,
+  0.091649711132050f, -0.288530826568604f, 0.091428533196449f,
+    -0.288217544555664f,
+  0.091207593679428f, -0.287904083728790f, 0.090986892580986f,
+    -0.287590473890305f,
+  0.090766437351704f, -0.287276685237885f, 0.090546220541000f,
+    -0.286962717771530f,
+  0.090326242148876f, -0.286648571491241f, 0.090106502175331f,
+    -0.286334276199341f,
+  0.089887008070946f, -0.286019802093506f, 0.089667752385139f,
+    -0.285705178976059f,
+  0.089448742568493f, -0.285390377044678f, 0.089229971170425f,
+    -0.285075396299362f,
+  0.089011445641518f, -0.284760266542435f, 0.088793158531189f,
+    -0.284444957971573f,
+  0.088575109839439f, -0.284129470586777f, 0.088357307016850f,
+    -0.283813834190369f,
+  0.088139742612839f, -0.283498018980026f, 0.087922424077988f,
+    -0.283182054758072f,
+  0.087705351412296f, -0.282865911722183f, 0.087488517165184f,
+    -0.282549589872360f,
+  0.087271921336651f, -0.282233119010925f, 0.087055571377277f,
+    -0.281916469335556f,
+  0.086839467287064f, -0.281599670648575f, 0.086623609066010f,
+    -0.281282693147659f,
+  0.086407989263535f, -0.280965566635132f, 0.086192607879639f,
+    -0.280648261308670f,
+  0.085977479815483f, -0.280330777168274f, 0.085762590169907f,
+    -0.280013144016266f,
+  0.085547938942909f, -0.279695361852646f, 0.085333541035652f,
+    -0.279377400875092f,
+  0.085119381546974f, -0.279059261083603f, 0.084905467927456f,
+    -0.278740972280502f,
+  0.084691800177097f, -0.278422504663467f, 0.084478378295898f,
+    -0.278103888034821f,
+  0.084265194833279f, -0.277785122394562f, 0.084052257239819f,
+    -0.277466177940369f,
+  0.083839565515518f, -0.277147054672241f, 0.083627119660378f,
+    -0.276827782392502f,
+  0.083414919674397f, -0.276508361101151f, 0.083202958106995f,
+    -0.276188760995865f,
+  0.082991249859333f, -0.275868982076645f, 0.082779780030251f,
+    -0.275549083948135f,
+  0.082568563520908f, -0.275228977203369f, 0.082357585430145f,
+    -0.274908751249313f,
+  0.082146860659122f, -0.274588316679001f, 0.081936374306679f,
+    -0.274267762899399f,
+  0.081726133823395f, -0.273947030305862f, 0.081516146659851f,
+    -0.273626148700714f,
+  0.081306397914886f, -0.273305088281631f, 0.081096902489662f,
+    -0.272983878850937f,
+  0.080887645483017f, -0.272662490606308f, 0.080678641796112f,
+    -0.272340953350067f,
+  0.080469883978367f, -0.272019267082214f, 0.080261372029781f,
+    -0.271697402000427f,
+  0.080053105950356f, -0.271375387907028f, 0.079845085740089f,
+    -0.271053224802017f,
+  0.079637311398983f, -0.270730882883072f, 0.079429790377617f,
+    -0.270408391952515f,
+  0.079222507774830f, -0.270085722208023f, 0.079015478491783f,
+    -0.269762933254242f,
+  0.078808702528477f, -0.269439965486526f, 0.078602164983749f,
+    -0.269116818904877f,
+  0.078395880758762f, -0.268793523311615f, 0.078189842402935f,
+    -0.268470078706741f,
+  0.077984049916267f, -0.268146485090256f, 0.077778510749340f,
+    -0.267822742462158f,
+  0.077573217451572f, -0.267498821020126f, 0.077368170022964f,
+    -0.267174720764160f,
+  0.077163375914097f, -0.266850501298904f, 0.076958827674389f,
+    -0.266526103019714f,
+  0.076754532754421f, -0.266201555728912f, 0.076550483703613f,
+    -0.265876859426498f,
+  0.076346680521965f, -0.265552014112473f, 0.076143130660057f,
+    -0.265226989984512f,
+  0.075939826667309f, -0.264901816844940f, 0.075736775994301f,
+    -0.264576494693756f,
+  0.075533971190453f, -0.264250993728638f, 0.075331419706345f,
+    -0.263925373554230f,
+  0.075129114091396f, -0.263599574565887f, 0.074927061796188f,
+    -0.263273626565933f,
+  0.074725262820721f, -0.262947499752045f, 0.074523709714413f,
+    -0.262621253728867f,
+  0.074322402477264f, -0.262294828891754f, 0.074121348559856f,
+    -0.261968284845352f,
+  0.073920547962189f, -0.261641561985016f, 0.073720000684261f,
+    -0.261314690113068f,
+  0.073519699275494f, -0.260987639427185f, 0.073319651186466f,
+    -0.260660469532013f,
+  0.073119848966599f, -0.260333120822906f, 0.072920300066471f,
+    -0.260005623102188f,
+  0.072721004486084f, -0.259678006172180f, 0.072521962225437f,
+    -0.259350210428238f,
+  0.072323165833950f, -0.259022265672684f, 0.072124622762203f,
+    -0.258694142103195f,
+  0.071926333010197f, -0.258365899324417f, 0.071728296577930f,
+    -0.258037507534027f,
+  0.071530513465405f, -0.257708936929703f, 0.071332976222038f,
+    -0.257380217313766f,
+  0.071135692298412f, -0.257051378488541f, 0.070938661694527f,
+    -0.256722360849380f,
+  0.070741884410381f, -0.256393194198608f, 0.070545360445976f,
+    -0.256063878536224f,
+  0.070349089801311f, -0.255734413862228f, 0.070153072476387f,
+    -0.255404800176620f,
+  0.069957308471203f, -0.255075037479401f, 0.069761790335178f,
+    -0.254745125770569f,
+  0.069566532969475f, -0.254415065050125f, 0.069371521472931f,
+    -0.254084855318069f,
+  0.069176770746708f, -0.253754496574402f, 0.068982265889645f,
+    -0.253423988819122f,
+  0.068788021802902f, -0.253093332052231f, 0.068594031035900f,
+    -0.252762526273727f,
+  0.068400286138058f, -0.252431541681290f, 0.068206802010536f,
+    -0.252100437879562f,
+  0.068013571202755f, -0.251769185066223f, 0.067820593714714f,
+    -0.251437783241272f,
+  0.067627869546413f, -0.251106232404709f, 0.067435398697853f,
+    -0.250774532556534f,
+  0.067243188619614f, -0.250442683696747f, 0.067051224410534f,
+    -0.250110685825348f,
+  0.066859520971775f, -0.249778553843498f, 0.066668070852757f,
+    -0.249446272850037f,
+  0.066476874053478f, -0.249113827943802f, 0.066285938024521f,
+    -0.248781248927116f,
+  0.066095255315304f, -0.248448520898819f, 0.065904818475246f,
+    -0.248115643858910f,
+  0.065714649856091f, -0.247782632708550f, 0.065524727106094f,
+    -0.247449472546577f,
+  0.065335065126419f, -0.247116148471832f, 0.065145656466484f,
+    -0.246782705187798f,
+  0.064956501126289f, -0.246449097990990f, 0.064767606556416f,
+    -0.246115356683731f,
+  0.064578965306282f, -0.245781451463699f, 0.064390584826469f,
+    -0.245447427034378f,
+  0.064202457666397f, -0.245113238692284f, 0.064014583826065f,
+    -0.244778916239738f,
+  0.063826970756054f, -0.244444444775581f, 0.063639611005783f,
+    -0.244109839200974f,
+  0.063452512025833f, -0.243775084614754f, 0.063265666365623f,
+    -0.243440181016922f,
+  0.063079081475735f, -0.243105143308640f, 0.062892749905586f,
+    -0.242769956588745f,
+  0.062706671655178f, -0.242434620857239f, 0.062520854175091f,
+    -0.242099151015282f,
+  0.062335297465324f, -0.241763532161713f, 0.062149997800589f,
+    -0.241427779197693f,
+  0.061964951455593f, -0.241091892123222f, 0.061780165880919f,
+    -0.240755841135979f,
+  0.061595637351274f, -0.240419670939446f, 0.061411365866661f,
+    -0.240083336830139f,
+  0.061227355152369f, -0.239746883511543f, 0.061043601483107f,
+    -0.239410281181335f,
+  0.060860104858875f, -0.239073529839516f, 0.060676865279675f,
+    -0.238736644387245f,
+  0.060493886470795f, -0.238399609923363f, 0.060311164706945f,
+    -0.238062441349030f,
+  0.060128703713417f, -0.237725138664246f, 0.059946499764919f,
+    -0.237387686967850f,
+  0.059764556586742f, -0.237050101161003f, 0.059582870453596f,
+    -0.236712381243706f,
+  0.059401445090771f, -0.236374512314796f, 0.059220276772976f,
+    -0.236036509275436f,
+  0.059039369225502f, -0.235698372125626f, 0.058858718723059f,
+    -0.235360085964203f,
+  0.058678328990936f, -0.235021665692329f, 0.058498200029135f,
+    -0.234683111310005f,
+  0.058318331837654f, -0.234344407916069f, 0.058138720691204f,
+    -0.234005570411682f,
+  0.057959370315075f, -0.233666598796844f, 0.057780280709267f,
+    -0.233327493071556f,
+  0.057601451873779f, -0.232988253235817f, 0.057422880083323f,
+    -0.232648864388466f,
+  0.057244572788477f, -0.232309341430664f, 0.057066522538662f,
+    -0.231969684362412f,
+  0.056888736784458f, -0.231629893183708f, 0.056711208075285f,
+    -0.231289967894554f,
+  0.056533940136433f, -0.230949893593788f, 0.056356932967901f,
+    -0.230609700083733f,
+  0.056180190294981f, -0.230269357562065f, 0.056003704667091f,
+    -0.229928880929947f,
+  0.055827483534813f, -0.229588270187378f, 0.055651523172855f,
+    -0.229247525334358f,
+  0.055475823581219f, -0.228906646370888f, 0.055300384759903f,
+    -0.228565633296967f,
+  0.055125206708908f, -0.228224486112595f, 0.054950293153524f,
+    -0.227883204817772f,
+  0.054775636643171f, -0.227541789412498f, 0.054601248353720f,
+    -0.227200239896774f,
+  0.054427117109299f, -0.226858556270599f, 0.054253250360489f,
+    -0.226516738533974f,
+  0.054079644382000f, -0.226174786686897f, 0.053906302899122f,
+    -0.225832715630531f,
+  0.053733222186565f, -0.225490495562553f, 0.053560405969620f,
+    -0.225148141384125f,
+  0.053387850522995f, -0.224805667996407f, 0.053215555846691f,
+    -0.224463045597076f,
+  0.053043525665998f, -0.224120303988457f, 0.052871759980917f,
+    -0.223777428269386f,
+  0.052700258791447f, -0.223434418439865f, 0.052529018372297f,
+    -0.223091274499893f,
+  0.052358038723469f, -0.222748011350632f, 0.052187327295542f,
+    -0.222404599189758f,
+  0.052016876637936f, -0.222061067819595f, 0.051846686750650f,
+    -0.221717402338982f,
+  0.051676765084267f, -0.221373617649078f, 0.051507104188204f,
+    -0.221029683947563f,
+  0.051337707787752f, -0.220685631036758f, 0.051168579608202f,
+    -0.220341444015503f,
+  0.050999708473682f, -0.219997137784958f, 0.050831105560064f,
+    -0.219652697443962f,
+  0.050662767142057f, -0.219308122992516f, 0.050494693219662f,
+    -0.218963414430618f,
+  0.050326880067587f, -0.218618586659431f, 0.050159335136414f,
+    -0.218273624777794f,
+  0.049992054700851f, -0.217928543686867f, 0.049825038760900f,
+    -0.217583328485489f,
+  0.049658283591270f, -0.217237979173660f, 0.049491796642542f,
+    -0.216892510652542f,
+  0.049325577914715f, -0.216546908020973f, 0.049159619957209f,
+    -0.216201186180115f,
+  0.048993926495314f, -0.215855330228806f, 0.048828501254320f,
+    -0.215509355068207f,
+  0.048663340508938f, -0.215163245797157f, 0.048498444259167f,
+    -0.214817002415657f,
+  0.048333816230297f, -0.214470639824867f, 0.048169452697039f,
+    -0.214124158024788f,
+  0.048005353659391f, -0.213777542114258f, 0.047841522842646f,
+    -0.213430806994438f,
+  0.047677956521511f, -0.213083937764168f, 0.047514654695988f,
+    -0.212736949324608f,
+  0.047351621091366f, -0.212389841675758f, 0.047188851982355f,
+    -0.212042599916458f,
+  0.047026351094246f, -0.211695238947868f, 0.046864114701748f,
+    -0.211347743868828f,
+  0.046702146530151f, -0.211000129580498f, 0.046540446579456f,
+    -0.210652396082878f,
+  0.046379011124372f, -0.210304543375969f, 0.046217843890190f,
+    -0.209956556558609f,
+  0.046056941151619f, -0.209608450531960f, 0.045896306633949f,
+    -0.209260210394859f,
+  0.045735940337181f, -0.208911851048470f, 0.045575842261314f,
+    -0.208563387393951f,
+  0.045416008681059f, -0.208214774727821f, 0.045256443321705f,
+    -0.207866057753563f,
+  0.045097146183252f, -0.207517206668854f, 0.044938117265701f,
+    -0.207168251276016f,
+  0.044779352843761f, -0.206819161772728f, 0.044620860368013f,
+    -0.206469938158989f,
+  0.044462632387877f, -0.206120610237122f, 0.044304672628641f,
+    -0.205771163105965f,
+  0.044146984815598f, -0.205421581864357f, 0.043989561498165f,
+    -0.205071896314621f,
+  0.043832406401634f, -0.204722076654434f, 0.043675523251295f,
+    -0.204372137784958f,
+  0.043518904596567f, -0.204022079706192f, 0.043362557888031f,
+    -0.203671902418137f,
+  0.043206475675106f, -0.203321605920792f, 0.043050665408373f,
+    -0.202971190214157f,
+  0.042895123362541f, -0.202620655298233f, 0.042739849537611f,
+    -0.202270001173019f,
+  0.042584843933582f, -0.201919227838516f, 0.042430106550455f,
+    -0.201568335294724f,
+  0.042275641113520f, -0.201217323541641f, 0.042121443897486f,
+    -0.200866192579269f,
+  0.041967518627644f, -0.200514942407608f, 0.041813857853413f,
+    -0.200163587927818f,
+  0.041660469025373f, -0.199812099337578f, 0.041507352143526f,
+    -0.199460506439209f,
+  0.041354499757290f, -0.199108779430389f, 0.041201923042536f,
+    -0.198756948113441f,
+  0.041049610823393f, -0.198404997587204f, 0.040897574275732f,
+    -0.198052927851677f,
+  0.040745802223682f, -0.197700738906860f, 0.040594302117825f,
+    -0.197348430752754f,
+  0.040443073958158f, -0.196996018290520f, 0.040292114019394f,
+    -0.196643486618996f,
+  0.040141426026821f, -0.196290835738182f, 0.039991009980440f,
+    -0.195938065648079f,
+  0.039840862154961f, -0.195585191249847f, 0.039690986275673f,
+    -0.195232197642326f,
+  0.039541378617287f, -0.194879084825516f, 0.039392042905092f,
+    -0.194525867700577f,
+  0.039242979139090f, -0.194172516465187f, 0.039094187319279f,
+    -0.193819075822830f,
+  0.038945667445660f, -0.193465501070023f, 0.038797415792942f,
+    -0.193111822009087f,
+  0.038649436086416f, -0.192758023738861f, 0.038501728326082f,
+    -0.192404121160507f,
+  0.038354292511940f, -0.192050099372864f, 0.038207128643990f,
+    -0.191695958375931f,
+  0.038060232996941f, -0.191341713070869f, 0.037913613021374f,
+    -0.190987363457680f,
+  0.037767261266708f, -0.190632879734039f, 0.037621185183525f,
+    -0.190278306603432f,
+  0.037475381046534f, -0.189923599362373f, 0.037329845130444f,
+    -0.189568802714348f,
+  0.037184584885836f, -0.189213871955872f, 0.037039596587420f,
+    -0.188858851790428f,
+  0.036894880235195f, -0.188503712415695f, 0.036750435829163f,
+    -0.188148453831673f,
+  0.036606263369322f, -0.187793090939522f, 0.036462362855673f,
+    -0.187437608838081f,
+  0.036318738013506f, -0.187082037329674f, 0.036175385117531f,
+    -0.186726331710815f,
+  0.036032304167747f, -0.186370536684990f, 0.035889495164156f,
+    -0.186014622449875f,
+  0.035746958106756f, -0.185658603906631f, 0.035604696720839f,
+    -0.185302466154099f,
+  0.035462711006403f, -0.184946224093437f, 0.035320993512869f,
+    -0.184589877724648f,
+  0.035179551690817f, -0.184233412146568f, 0.035038381814957f,
+    -0.183876842260361f,
+  0.034897487610579f, -0.183520168066025f, 0.034756865352392f,
+    -0.183163389563560f,
+  0.034616518765688f, -0.182806491851807f, 0.034476444125175f,
+    -0.182449504733086f,
+  0.034336645156145f, -0.182092398405075f, 0.034197118133307f,
+    -0.181735187768936f,
+  0.034057866781950f, -0.181377857923508f, 0.033918887376785f,
+    -0.181020438671112f,
+  0.033780183643103f, -0.180662900209427f, 0.033641755580902f,
+    -0.180305257439613f,
+  0.033503599464893f, -0.179947525262833f, 0.033365719020367f,
+    -0.179589673876762f,
+  0.033228114247322f, -0.179231703281403f, 0.033090781420469f,
+    -0.178873643279076f,
+  0.032953724265099f, -0.178515478968620f, 0.032816942781210f,
+    -0.178157210350037f,
+  0.032680433243513f, -0.177798837423325f, 0.032544203102589f,
+    -0.177440345287323f,
+  0.032408244907856f, -0.177081763744354f, 0.032272562384605f,
+    -0.176723077893257f,
+  0.032137155532837f, -0.176364272832870f, 0.032002024352551f,
+    -0.176005378365517f,
+  0.031867165118456f, -0.175646379590034f, 0.031732585281134f,
+    -0.175287276506424f,
+  0.031598277390003f, -0.174928069114685f, 0.031464248895645f,
+    -0.174568757414818f,
+  0.031330492347479f, -0.174209341406822f, 0.031197015196085f,
+    -0.173849821090698f,
+  0.031063811853528f, -0.173490211367607f, 0.030930884182453f,
+    -0.173130482435226f,
+  0.030798232182860f, -0.172770664095879f, 0.030665857717395f,
+    -0.172410741448402f,
+  0.030533758923411f, -0.172050714492798f, 0.030401935800910f,
+    -0.171690583229065f,
+  0.030270388349891f, -0.171330362558365f, 0.030139118432999f,
+    -0.170970037579536f,
+  0.030008124187589f, -0.170609608292580f, 0.029877405613661f,
+    -0.170249074697495f,
+  0.029746964573860f, -0.169888436794281f, 0.029616801068187f,
+    -0.169527709484100f,
+  0.029486913233995f, -0.169166877865791f, 0.029357301071286f,
+    -0.168805956840515f,
+  0.029227968305349f, -0.168444931507111f, 0.029098909348249f,
+    -0.168083801865578f,
+  0.028970129787922f, -0.167722567915916f, 0.028841627761722f,
+    -0.167361244559288f,
+  0.028713401407003f, -0.166999831795692f, 0.028585452586412f,
+    -0.166638299822807f,
+  0.028457781299949f, -0.166276678442955f, 0.028330387547612f,
+    -0.165914967656136f,
+  0.028203271329403f, -0.165553152561188f, 0.028076432645321f,
+    -0.165191248059273f,
+  0.027949871495366f, -0.164829224348068f, 0.027823587879539f,
+    -0.164467126131058f,
+  0.027697581797838f, -0.164104923605919f, 0.027571853250265f,
+    -0.163742616772652f,
+  0.027446404099464f, -0.163380220532417f, 0.027321230620146f,
+    -0.163017734885216f,
+  0.027196336537600f, -0.162655144929886f, 0.027071721851826f,
+    -0.162292465567589f,
+  0.026947384700179f, -0.161929681897163f, 0.026823325082660f,
+    -0.161566808819771f,
+  0.026699542999268f, -0.161203846335411f, 0.026576040312648f,
+    -0.160840779542923f,
+  0.026452817022800f, -0.160477623343468f, 0.026329871267080f,
+    -0.160114362835884f,
+  0.026207204908133f, -0.159751012921333f, 0.026084816083312f,
+    -0.159387573599815f,
+  0.025962706655264f, -0.159024044871330f, 0.025840876623988f,
+    -0.158660411834717f,
+  0.025719324126840f, -0.158296689391136f, 0.025598052889109f,
+    -0.157932877540588f,
+  0.025477059185505f, -0.157568961381912f, 0.025356344878674f,
+    -0.157204970717430f,
+  0.025235909968615f, -0.156840875744820f, 0.025115754455328f,
+    -0.156476691365242f,
+  0.024995878338814f, -0.156112402677536f, 0.024876279756427f,
+    -0.155748039484024f,
+  0.024756962433457f, -0.155383571982384f, 0.024637924507260f,
+    -0.155019029974937f,
+  0.024519165977836f, -0.154654383659363f, 0.024400688707829f,
+    -0.154289647936821f,
+  0.024282488971949f, -0.153924822807312f, 0.024164570495486f,
+    -0.153559908270836f,
+  0.024046931415796f, -0.153194904327393f, 0.023929571732879f,
+    -0.152829796075821f,
+  0.023812493309379f, -0.152464613318443f, 0.023695694282651f,
+    -0.152099341154099f,
+  0.023579176515341f, -0.151733979582787f, 0.023462938144803f,
+    -0.151368513703346f,
+  0.023346979171038f, -0.151002973318100f, 0.023231301456690f,
+    -0.150637343525887f,
+  0.023115905001760f, -0.150271624326706f, 0.023000787943602f,
+    -0.149905815720558f,
+  0.022885952144861f, -0.149539917707443f, 0.022771397605538f,
+    -0.149173930287361f,
+  0.022657122462988f, -0.148807853460312f, 0.022543128579855f,
+    -0.148441687226295f,
+  0.022429415956140f, -0.148075446486473f, 0.022315984591842f,
+    -0.147709101438522f,
+  0.022202832624316f, -0.147342681884766f, 0.022089963778853f,
+    -0.146976172924042f,
+  0.021977374330163f, -0.146609574556351f, 0.021865066140890f,
+    -0.146242901682854f,
+  0.021753041073680f, -0.145876124501228f, 0.021641295403242f,
+    -0.145509272813797f,
+  0.021529832854867f, -0.145142331719399f, 0.021418649703264f,
+    -0.144775316119194f,
+  0.021307749673724f, -0.144408211112022f, 0.021197130903602f,
+    -0.144041016697884f,
+  0.021086793392897f, -0.143673732876778f, 0.020976737141609f,
+    -0.143306359648705f,
+  0.020866964012384f, -0.142938911914825f, 0.020757472142577f,
+    -0.142571389675140f,
+  0.020648263394833f, -0.142203763127327f, 0.020539334043860f,
+    -0.141836062073708f,
+  0.020430689677596f, -0.141468286514282f, 0.020322324708104f,
+    -0.141100421547890f,
+  0.020214242860675f, -0.140732467174530f, 0.020106444135308f,
+    -0.140364438295364f,
+  0.019998926669359f, -0.139996320009232f, 0.019891692325473f,
+    -0.139628127217293f,
+  0.019784741103649f, -0.139259845018387f, 0.019678071141243f,
+    -0.138891488313675f,
+  0.019571684300900f, -0.138523042201996f, 0.019465578719974f,
+    -0.138154521584511f,
+  0.019359756261110f, -0.137785911560059f, 0.019254218786955f,
+    -0.137417227029800f,
+  0.019148962572217f, -0.137048453092575f, 0.019043987616897f,
+    -0.136679604649544f,
+  0.018939297646284f, -0.136310681700706f, 0.018834890797734f,
+    -0.135941669344902f,
+  0.018730765208602f, -0.135572582483292f, 0.018626924604177f,
+    -0.135203406214714f,
+  0.018523367121816f, -0.134834155440331f, 0.018420090898871f,
+    -0.134464830160141f,
+  0.018317099660635f, -0.134095430374146f, 0.018214391544461f,
+    -0.133725941181183f,
+  0.018111966550350f, -0.133356377482414f, 0.018009826540947f,
+    -0.132986739277840f,
+  0.017907967790961f, -0.132617011666298f, 0.017806394025683f,
+    -0.132247209548950f,
+  0.017705103382468f, -0.131877332925797f, 0.017604095861316f,
+    -0.131507381796837f,
+  0.017503373324871f, -0.131137356162071f, 0.017402933910489f,
+    -0.130767241120338f,
+  0.017302779480815f, -0.130397051572800f, 0.017202908173203f,
+    -0.130026802420616f,
+  0.017103319987655f, -0.129656463861465f, 0.017004016786814f,
+    -0.129286035895348f,
+  0.016904998570681f, -0.128915548324585f, 0.016806263476610f,
+    -0.128544986248016f,
+  0.016707813367248f, -0.128174334764481f, 0.016609646379948f,
+    -0.127803623676300f,
+  0.016511764377356f, -0.127432823181152f, 0.016414167359471f,
+    -0.127061963081360f,
+  0.016316853463650f, -0.126691013574600f, 0.016219824552536f,
+    -0.126320004463196f,
+  0.016123080626130f, -0.125948905944824f, 0.016026621684432f,
+    -0.125577747821808f,
+  0.015930447727442f, -0.125206500291824f, 0.015834558755159f,
+    -0.124835193157196f,
+  0.015738952904940f, -0.124463804066181f, 0.015643632039428f,
+    -0.124092340469360f,
+  0.015548598021269f, -0.123720809817314f, 0.015453847125173f,
+    -0.123349204659462f,
+  0.015359382145107f, -0.122977524995804f, 0.015265202149749f,
+    -0.122605770826340f,
+  0.015171307139099f, -0.122233949601650f, 0.015077698044479f,
+    -0.121862053871155f,
+  0.014984373003244f, -0.121490091085434f, 0.014891333878040f,
+    -0.121118053793907f,
+  0.014798580668867f, -0.120745941996574f, 0.014706112444401f,
+    -0.120373763144016f,
+  0.014613929204643f, -0.120001509785652f, 0.014522032812238f,
+    -0.119629189372063f,
+  0.014430420473218f, -0.119256794452667f, 0.014339094981551f,
+    -0.118884332478046f,
+  0.014248054474592f, -0.118511803448200f, 0.014157299883664f,
+    -0.118139199912548f,
+  0.014066831208766f, -0.117766529321671f, 0.013976648449898f,
+    -0.117393791675568f,
+  0.013886751607060f, -0.117020979523659f, 0.013797140680254f,
+    -0.116648100316525f,
+  0.013707815669477f, -0.116275154054165f, 0.013618776574731f,
+    -0.115902140736580f,
+  0.013530024327338f, -0.115529052913189f, 0.013441557064652f,
+    -0.115155905485153f,
+  0.013353376649320f, -0.114782683551311f, 0.013265483081341f,
+    -0.114409394562244f,
+  0.013177875429392f, -0.114036038517952f, 0.013090553693473f,
+    -0.113662622869015f,
+  0.013003518804908f, -0.113289132714272f, 0.012916770763695f,
+    -0.112915575504303f,
+  0.012830308638513f, -0.112541958689690f, 0.012744133360684f,
+    -0.112168267369270f,
+  0.012658244930208f, -0.111794516444206f, 0.012572642415762f,
+    -0.111420698463917f,
+  0.012487327679992f, -0.111046813428402f, 0.012402298860252f,
+    -0.110672861337662f,
+  0.012317557819188f, -0.110298842191696f, 0.012233102694154f,
+    -0.109924763441086f,
+  0.012148935347795f, -0.109550617635250f, 0.012065053917468f,
+    -0.109176412224770f,
+  0.011981460265815f, -0.108802139759064f, 0.011898153461516f,
+    -0.108427800238132f,
+  0.011815134435892f, -0.108053401112556f, 0.011732402257621f,
+    -0.107678934931755f,
+  0.011649956926703f, -0.107304409146309f, 0.011567799374461f,
+    -0.106929816305637f,
+  0.011485928669572f, -0.106555156409740f, 0.011404345743358f,
+    -0.106180444359779f,
+  0.011323049664497f, -0.105805665254593f, 0.011242041364312f,
+    -0.105430819094181f,
+  0.011161320842803f, -0.105055920779705f, 0.011080888099968f,
+    -0.104680955410004f,
+  0.011000742204487f, -0.104305922985077f, 0.010920885019004f,
+    -0.103930838406086f,
+  0.010841314680874f, -0.103555686771870f, 0.010762032121420f,
+    -0.103180475533009f,
+  0.010683037340641f, -0.102805204689503f, 0.010604331269860f,
+    -0.102429874241352f,
+  0.010525912046432f, -0.102054484188557f, 0.010447781533003f,
+    -0.101679034531116f,
+  0.010369938798249f, -0.101303517818451f, 0.010292383842170f,
+    -0.100927948951721f,
+  0.010215117596090f, -0.100552320480347f, 0.010138138197362f,
+    -0.100176624953747f,
+  0.010061448439956f, -0.099800877273083f, 0.009985045529902f,
+    -0.099425069987774f,
+  0.009908932261169f, -0.099049203097820f, 0.009833106771111f,
+    -0.098673284053802f,
+  0.009757569059730f, -0.098297297954559f, 0.009682320058346f,
+    -0.097921259701252f,
+  0.009607359766960f, -0.097545161843300f, 0.009532688185573f,
+    -0.097169004380703f,
+  0.009458304382861f, -0.096792794764042f, 0.009384209290147f,
+    -0.096416525542736f,
+  0.009310402907431f, -0.096040196716785f, 0.009236886166036f,
+    -0.095663815736771f,
+  0.009163657203317f, -0.095287375152111f, 0.009090716950595f,
+    -0.094910882413387f,
+  0.009018065407872f, -0.094534330070019f, 0.008945702575147f,
+    -0.094157725572586f,
+  0.008873629383743f, -0.093781061470509f, 0.008801844902337f,
+    -0.093404345214367f,
+  0.008730349130929f, -0.093027576804161f, 0.008659142069519f,
+    -0.092650748789310f,
+  0.008588224649429f, -0.092273868620396f, 0.008517595939338f,
+    -0.091896936297417f,
+  0.008447255939245f, -0.091519944369793f, 0.008377205580473f,
+    -0.091142900288105f,
+  0.008307444863021f, -0.090765804052353f, 0.008237972855568f,
+    -0.090388655662537f,
+  0.008168790489435f, -0.090011447668076f, 0.008099896833301f,
+    -0.089634194970131f,
+  0.008031292818487f, -0.089256882667542f, 0.007962978444993f,
+    -0.088879525661469f,
+  0.007894953712821f, -0.088502109050751f, 0.007827218621969f,
+    -0.088124647736549f,
+  0.007759772241116f, -0.087747126817703f, 0.007692615967244f,
+    -0.087369553744793f,
+  0.007625748869032f, -0.086991935968399f, 0.007559171877801f,
+    -0.086614266037941f,
+  0.007492884527892f, -0.086236543953419f, 0.007426886819303f,
+    -0.085858769714832f,
+  0.007361178752035f, -0.085480943322182f, 0.007295760791749f,
+    -0.085103072226048f,
+  0.007230632472783f, -0.084725148975849f, 0.007165793795139f,
+    -0.084347173571587f,
+  0.007101245224476f, -0.083969146013260f, 0.007036986760795f,
+    -0.083591073751450f,
+  0.006973018404096f, -0.083212949335575f, 0.006909339688718f,
+    -0.082834780216217f,
+  0.006845951545984f, -0.082456558942795f, 0.006782853044569f,
+    -0.082078292965889f,
+  0.006720044650137f, -0.081699974834919f, 0.006657526828349f,
+    -0.081321612000465f,
+  0.006595299113542f, -0.080943197011948f, 0.006533361505717f,
+    -0.080564737319946f,
+  0.006471714470536f, -0.080186225473881f, 0.006410357542336f,
+    -0.079807676374912f,
+  0.006349290721118f, -0.079429075121880f, 0.006288514938205f,
+    -0.079050421714783f,
+  0.006228029262275f, -0.078671731054783f, 0.006167833693326f,
+    -0.078292988240719f,
+  0.006107929162681f, -0.077914200723171f, 0.006048315204680f,
+    -0.077535368502140f,
+  0.005988991353661f, -0.077156484127045f, 0.005929958540946f,
+    -0.076777562499046f,
+  0.005871216300875f, -0.076398596167564f, 0.005812764633447f,
+    -0.076019577682018f,
+  0.005754603538662f, -0.075640521943569f, 0.005696733482182f,
+    -0.075261414051056f,
+  0.005639153998345f, -0.074882268905640f, 0.005581865552813f,
+    -0.074503071606159f,
+  0.005524867679924f, -0.074123837053776f, 0.005468160845339f,
+    -0.073744557797909f,
+  0.005411745049059f, -0.073365233838558f, 0.005355620291084f,
+    -0.072985872626305f,
+  0.005299786105752f, -0.072606459259987f, 0.005244242958724f,
+    -0.072227008640766f,
+  0.005188991315663f, -0.071847513318062f, 0.005134030245245f,
+    -0.071467980742455f,
+  0.005079360678792f, -0.071088403463364f, 0.005024982150644f,
+    -0.070708781480789f,
+  0.004970894660801f, -0.070329122245312f, 0.004917098674923f,
+    -0.069949418306351f,
+  0.004863593727350f, -0.069569669663906f, 0.004810380283743f,
+    -0.069189883768559f,
+  0.004757457878441f, -0.068810060620308f, 0.004704826977104f,
+    -0.068430192768574f,
+  0.004652487114072f, -0.068050287663937f, 0.004600439220667f,
+    -0.067670337855816f,
+  0.004548682365566f, -0.067290350794792f, 0.004497217014432f,
+    -0.066910326480865f,
+  0.004446043167263f, -0.066530264914036f, 0.004395160824060f,
+    -0.066150158643723f,
+  0.004344569984823f, -0.065770015120506f, 0.004294271115214f,
+    -0.065389834344387f,
+  0.004244263283908f, -0.065009608864784f, 0.004194547422230f,
+    -0.064629353582859f,
+  0.004145123064518f, -0.064249053597450f, 0.004095990676433f,
+    -0.063868723809719f,
+  0.004047149792314f, -0.063488349318504f, 0.003998600877821f,
+    -0.063107937574387f,
+  0.003950343467295f, -0.062727488577366f, 0.003902378026396f,
+    -0.062347009778023f,
+  0.003854704322293f, -0.061966486275196f, 0.003807322587818f,
+    -0.061585929244757f,
+  0.003760232590139f, -0.061205338686705f, 0.003713434794918f,
+    -0.060824707150459f,
+  0.003666928736493f, -0.060444042086601f, 0.003620714880526f,
+    -0.060063343495131f,
+  0.003574792761356f, -0.059682607650757f, 0.003529162844643f,
+    -0.059301838278770f,
+  0.003483824897557f, -0.058921031653881f, 0.003438779152930f,
+    -0.058540191501379f,
+  0.003394025377929f, -0.058159314095974f, 0.003349563805386f,
+    -0.057778406888247f,
+  0.003305394435301f, -0.057397462427616f, 0.003261517267674f,
+    -0.057016488164663f,
+  0.003217932302505f, -0.056635476648808f, 0.003174639539793f,
+    -0.056254431605339f,
+  0.003131638979539f, -0.055873356759548f, 0.003088930854574f,
+    -0.055492244660854f,
+  0.003046514932066f, -0.055111102759838f, 0.003004391444847f,
+    -0.054729927331209f,
+  0.002962560392916f, -0.054348722100258f, 0.002921021543443f,
+    -0.053967483341694f,
+  0.002879775362089f, -0.053586211055517f, 0.002838821383193f,
+    -0.053204908967018f,
+  0.002798160072416f, -0.052823577076197f, 0.002757790964097f,
+    -0.052442211657763f,
+  0.002717714523897f, -0.052060816437006f, 0.002677930751815f,
+    -0.051679391413927f,
+  0.002638439415023f, -0.051297932863235f, 0.002599240746349f,
+    -0.050916448235512f,
+  0.002560334512964f, -0.050534930080175f, 0.002521721180528f,
+    -0.050153385847807f,
+  0.002483400283381f, -0.049771808087826f, 0.002445372054353f,
+    -0.049390204250813f,
+  0.002407636726275f, -0.049008570611477f, 0.002370193833485f,
+    -0.048626907169819f,
+  0.002333043841645f, -0.048245213925838f, 0.002296186750755f,
+    -0.047863494604826f,
+  0.002259622327983f, -0.047481749206781f, 0.002223350573331f,
+    -0.047099970281124f,
+  0.002187371719629f, -0.046718169003725f, 0.002151685766876f,
+    -0.046336337924004f,
+  0.002116292715073f, -0.045954477041960f, 0.002081192564219f,
+    -0.045572593808174f,
+  0.002046385314316f, -0.045190680772066f, 0.002011870965362f,
+    -0.044808741658926f,
+  0.001977649517357f, -0.044426776468754f, 0.001943721086718f,
+    -0.044044785201550f,
+  0.001910085673444f, -0.043662767857313f, 0.001876743277535f,
+    -0.043280724436045f,
+  0.001843693898991f, -0.042898654937744f, 0.001810937537812f,
+    -0.042516563087702f,
+  0.001778474310413f, -0.042134445160627f, 0.001746304216795f,
+    -0.041752301156521f,
+  0.001714427140541f, -0.041370131075382f, 0.001682843198068f,
+    -0.040987938642502f,
+  0.001651552389376f, -0.040605723857880f, 0.001620554830879f,
+    -0.040223482996225f,
+  0.001589850406162f, -0.039841219782829f, 0.001559439115226f,
+    -0.039458930492401f,
+  0.001529321074486f, -0.039076622575521f, 0.001499496400356f,
+    -0.038694288581610f,
+  0.001469964860007f, -0.038311932235956f, 0.001440726569854f,
+    -0.037929553538561f,
+  0.001411781646311f, -0.037547148764133f, 0.001383129972965f,
+    -0.037164725363255f,
+  0.001354771666229f, -0.036782283335924f, 0.001326706726104f,
+    -0.036399815231562f,
+  0.001298935036175f, -0.036017324775457f, 0.001271456829272f,
+    -0.035634815692902f,
+  0.001244271872565f, -0.035252287983894f, 0.001217380515300f,
+    -0.034869734197855f,
+  0.001190782408230f, -0.034487165510654f, 0.001164477784187f,
+    -0.034104570746422f,
+  0.001138466643170f, -0.033721961081028f, 0.001112748985179f,
+    -0.033339329063892f,
+  0.001087324810214f, -0.032956674695015f, 0.001062194118276f,
+    -0.032574005424976f,
+  0.001037356909364f, -0.032191313803196f, 0.001012813183479f,
+    -0.031808607280254f,
+  0.000988563057035f, -0.031425878405571f, 0.000964606530033f,
+    -0.031043132767081f,
+  0.000940943544265f, -0.030660368502140f, 0.000917574157938f,
+    -0.030277585610747f,
+  0.000894498312846f, -0.029894785955548f, 0.000871716125403f,
+    -0.029511967673898f,
+  0.000849227537401f, -0.029129132628441f, 0.000827032607049f,
+    -0.028746278956532f,
+  0.000805131276138f, -0.028363410383463f, 0.000783523661084f,
+    -0.027980525046587f,
+  0.000762209703680f, -0.027597622945905f, 0.000741189462133f,
+    -0.027214704081416f,
+  0.000720462878235f, -0.026831768453121f, 0.000700030010194f,
+    -0.026448817923665f,
+  0.000679890916217f, -0.026065852493048f, 0.000660045538098f,
+    -0.025682870298624f,
+  0.000640493875835f, -0.025299875065684f, 0.000621235987637f,
+    -0.024916863068938f,
+  0.000602271873504f, -0.024533838033676f, 0.000583601591643f,
+    -0.024150796234608f,
+  0.000565225025639f, -0.023767741397023f, 0.000547142291907f,
+    -0.023384673520923f,
+  0.000529353390448f, -0.023001590743661f, 0.000511858321261f,
+    -0.022618494927883f,
+  0.000494657084346f, -0.022235386073589f, 0.000477749679703f,
+    -0.021852264180779f,
+  0.000461136136437f, -0.021469129249454f, 0.000444816454547f,
+    -0.021085981279612f,
+  0.000428790634032f, -0.020702820271254f, 0.000413058703998f,
+    -0.020319648087025f,
+  0.000397620693548f, -0.019936462864280f, 0.000382476573577f,
+    -0.019553268328309f,
+  0.000367626344087f, -0.019170060753822f, 0.000353070063284f,
+    -0.018786842003465f,
+  0.000338807702065f, -0.018403612077236f, 0.000324839289533f,
+    -0.018020370975137f,
+  0.000311164796585f, -0.017637118697166f, 0.000297784281429f,
+    -0.017253857105970f,
+  0.000284697714960f, -0.016870586201549f, 0.000271905126283f,
+    -0.016487304121256f,
+  0.000259406515397f, -0.016104012727737f, 0.000247201882303f,
+    -0.015720712020993f,
+  0.000235291256104f, -0.015337402001023f, 0.000223674607696f,
+    -0.014954082667828f,
+  0.000212351980736f, -0.014570754021406f, 0.000201323360670f,
+    -0.014187417924404f,
+  0.000190588747500f, -0.013804072514176f, 0.000180148170330f,
+    -0.013420719653368f,
+  0.000170001629158f, -0.013037359341979f, 0.000160149123985f,
+    -0.012653990648687f,
+  0.000150590654812f, -0.012270614504814f, 0.000141326236189f,
+    -0.011887230910361f,
+  0.000132355868118f, -0.011503840796649f, 0.000123679565149f,
+    -0.011120444163680f,
+  0.000115297327284f, -0.010737040080130f, 0.000107209154521f,
+    -0.010353630408645f,
+  0.000099415054137f, -0.009970214217901f, 0.000091915040684f,
+    -0.009586792439222f,
+  0.000084709099610f, -0.009203365072608f, 0.000077797252743f,
+    -0.008819932118058f,
+  0.000071179500083f, -0.008436493575573f, 0.000064855834353f,
+    -0.008053051307797f,
+  0.000058826273744f, -0.007669602986425f, 0.000053090810979f,
+    -0.007286150939763f,
+  0.000047649456974f, -0.006902694236487f, 0.000042502211727f,
+    -0.006519233807921f,
+  0.000037649078877f, -0.006135769188404f, 0.000033090062061f,
+    -0.005752300843596f,
+  0.000028825161280f, -0.005368829704821f, 0.000024854381991f,
+    -0.004985354840755f,
+  0.000021177724193f, -0.004601877182722f, 0.000017795191525f,
+    -0.004218397196382f,
+  0.000014706784896f, -0.003834914416075f, 0.000011912506125f,
+    -0.003451429307461f,
+  0.000009412358850f, -0.003067942336202f, 0.000007206342616f,
+    -0.002684453502297f,
+  0.000005294459243f, -0.002300963038579f, 0.000003676709639f,
+    -0.001917471294291f,
+  0.000002353095169f, -0.001533978385851f, 0.000001323616516f,
+    -0.001150484546088f,
+  0.000000588274133f, -0.000766990066040f, 0.000000147068562f,
+    -0.000383495149435f,
+  0.000000000000000f, -0.000000000000023f, 0.000000147068562f,
+    0.000383495149435f,
+  0.000000588274133f, 0.000766990066040f, 0.000001323616516f,
+    0.001150484546088f,
+  0.000002353095169f, 0.001533978385851f, 0.000003676709639f,
+    0.001917471294291f,
+  0.000005294459243f, 0.002300963038579f, 0.000007206342616f,
+    0.002684453502297f,
+  0.000009412358850f, 0.003067942336202f, 0.000011912506125f,
+    0.003451429307461f,
+  0.000014706784896f, 0.003834914416075f, 0.000017795191525f,
+    0.004218397196382f,
+  0.000021177724193f, 0.004601877182722f, 0.000024854381991f,
+    0.004985354840755f,
+  0.000028825161280f, 0.005368829704821f, 0.000033090062061f,
+    0.005752300843596f,
+  0.000037649078877f, 0.006135769188404f, 0.000042502211727f,
+    0.006519233807921f,
+  0.000047649456974f, 0.006902694236487f, 0.000053090810979f,
+    0.007286150939763f,
+  0.000058826273744f, 0.007669602986425f, 0.000064855834353f,
+    0.008053051307797f,
+  0.000071179500083f, 0.008436493575573f, 0.000077797252743f,
+    0.008819932118058f,
+  0.000084709099610f, 0.009203365072608f, 0.000091915040684f,
+    0.009586792439222f,
+  0.000099415054137f, 0.009970214217901f, 0.000107209154521f,
+    0.010353630408645f,
+  0.000115297327284f, 0.010737040080130f, 0.000123679565149f,
+    0.011120444163680f,
+  0.000132355868118f, 0.011503840796649f, 0.000141326236189f,
+    0.011887230910361f,
+  0.000150590654812f, 0.012270614504814f, 0.000160149123985f,
+    0.012653990648687f,
+  0.000170001629158f, 0.013037359341979f, 0.000180148170330f,
+    0.013420719653368f,
+  0.000190588747500f, 0.013804072514176f, 0.000201323360670f,
+    0.014187417924404f,
+  0.000212351980736f, 0.014570754021406f, 0.000223674607696f,
+    0.014954082667828f,
+  0.000235291256104f, 0.015337402001023f, 0.000247201882303f,
+    0.015720712020993f,
+  0.000259406515397f, 0.016104012727737f, 0.000271905126283f,
+    0.016487304121256f,
+  0.000284697714960f, 0.016870586201549f, 0.000297784281429f,
+    0.017253857105970f,
+  0.000311164796585f, 0.017637118697166f, 0.000324839289533f,
+    0.018020370975137f,
+  0.000338807702065f, 0.018403612077236f, 0.000353070063284f,
+    0.018786842003465f,
+  0.000367626344087f, 0.019170060753822f, 0.000382476573577f,
+    0.019553268328309f,
+  0.000397620693548f, 0.019936462864280f, 0.000413058703998f,
+    0.020319648087025f,
+  0.000428790634032f, 0.020702820271254f, 0.000444816454547f,
+    0.021085981279612f,
+  0.000461136136437f, 0.021469129249454f, 0.000477749679703f,
+    0.021852264180779f,
+  0.000494657084346f, 0.022235386073589f, 0.000511858321261f,
+    0.022618494927883f,
+  0.000529353390448f, 0.023001590743661f, 0.000547142291907f,
+    0.023384673520923f,
+  0.000565225025639f, 0.023767741397023f, 0.000583601591643f,
+    0.024150796234608f,
+  0.000602271873504f, 0.024533838033676f, 0.000621235987637f,
+    0.024916863068938f,
+  0.000640493875835f, 0.025299875065684f, 0.000660045538098f,
+    0.025682870298624f,
+  0.000679890916217f, 0.026065852493048f, 0.000700030010194f,
+    0.026448817923665f,
+  0.000720462878235f, 0.026831768453121f, 0.000741189462133f,
+    0.027214704081416f,
+  0.000762209703680f, 0.027597622945905f, 0.000783523661084f,
+    0.027980525046587f,
+  0.000805131276138f, 0.028363410383463f, 0.000827032607049f,
+    0.028746278956532f,
+  0.000849227537401f, 0.029129132628441f, 0.000871716125403f,
+    0.029511967673898f,
+  0.000894498312846f, 0.029894785955548f, 0.000917574157938f,
+    0.030277585610747f,
+  0.000940943544265f, 0.030660368502140f, 0.000964606530033f,
+    0.031043132767081f,
+  0.000988563057035f, 0.031425878405571f, 0.001012813183479f,
+    0.031808607280254f,
+  0.001037356909364f, 0.032191313803196f, 0.001062194118276f,
+    0.032574005424976f,
+  0.001087324810214f, 0.032956674695015f, 0.001112748985179f,
+    0.033339329063892f,
+  0.001138466643170f, 0.033721961081028f, 0.001164477784187f,
+    0.034104570746422f,
+  0.001190782408230f, 0.034487165510654f, 0.001217380515300f,
+    0.034869734197855f,
+  0.001244271872565f, 0.035252287983894f, 0.001271456829272f,
+    0.035634815692902f,
+  0.001298935036175f, 0.036017324775457f, 0.001326706726104f,
+    0.036399815231562f,
+  0.001354771666229f, 0.036782283335924f, 0.001383129972965f,
+    0.037164725363255f,
+  0.001411781646311f, 0.037547148764133f, 0.001440726569854f,
+    0.037929553538561f,
+  0.001469964860007f, 0.038311932235956f, 0.001499496400356f,
+    0.038694288581610f,
+  0.001529321074486f, 0.039076622575521f, 0.001559439115226f,
+    0.039458930492401f,
+  0.001589850406162f, 0.039841219782829f, 0.001620554830879f,
+    0.040223482996225f,
+  0.001651552389376f, 0.040605723857880f, 0.001682843198068f,
+    0.040987938642502f,
+  0.001714427140541f, 0.041370131075382f, 0.001746304216795f,
+    0.041752301156521f,
+  0.001778474310413f, 0.042134445160627f, 0.001810937537812f,
+    0.042516563087702f,
+  0.001843693898991f, 0.042898654937744f, 0.001876743277535f,
+    0.043280724436045f,
+  0.001910085673444f, 0.043662767857313f, 0.001943721086718f,
+    0.044044785201550f,
+  0.001977649517357f, 0.044426776468754f, 0.002011870965362f,
+    0.044808741658926f,
+  0.002046385314316f, 0.045190680772066f, 0.002081192564219f,
+    0.045572593808174f,
+  0.002116292715073f, 0.045954477041960f, 0.002151685766876f,
+    0.046336337924004f,
+  0.002187371719629f, 0.046718169003725f, 0.002223350573331f,
+    0.047099970281124f,
+  0.002259622327983f, 0.047481749206781f, 0.002296186750755f,
+    0.047863494604826f,
+  0.002333043841645f, 0.048245213925838f, 0.002370193833485f,
+    0.048626907169819f,
+  0.002407636726275f, 0.049008570611477f, 0.002445372054353f,
+    0.049390204250813f,
+  0.002483400283381f, 0.049771808087826f, 0.002521721180528f,
+    0.050153385847807f,
+  0.002560334512964f, 0.050534930080175f, 0.002599240746349f,
+    0.050916448235512f,
+  0.002638439415023f, 0.051297932863235f, 0.002677930751815f,
+    0.051679391413927f,
+  0.002717714523897f, 0.052060816437006f, 0.002757790964097f,
+    0.052442211657763f,
+  0.002798160072416f, 0.052823577076197f, 0.002838821383193f,
+    0.053204908967018f,
+  0.002879775362089f, 0.053586211055517f, 0.002921021543443f,
+    0.053967483341694f,
+  0.002962560392916f, 0.054348722100258f, 0.003004391444847f,
+    0.054729927331209f,
+  0.003046514932066f, 0.055111102759838f, 0.003088930854574f,
+    0.055492244660854f,
+  0.003131638979539f, 0.055873356759548f, 0.003174639539793f,
+    0.056254431605339f,
+  0.003217932302505f, 0.056635476648808f, 0.003261517267674f,
+    0.057016488164663f,
+  0.003305394435301f, 0.057397462427616f, 0.003349563805386f,
+    0.057778406888247f,
+  0.003394025377929f, 0.058159314095974f, 0.003438779152930f,
+    0.058540191501379f,
+  0.003483824897557f, 0.058921031653881f, 0.003529162844643f,
+    0.059301838278770f,
+  0.003574792761356f, 0.059682607650757f, 0.003620714880526f,
+    0.060063343495131f,
+  0.003666928736493f, 0.060444042086601f, 0.003713434794918f,
+    0.060824707150459f,
+  0.003760232590139f, 0.061205338686705f, 0.003807322587818f,
+    0.061585929244757f,
+  0.003854704322293f, 0.061966486275196f, 0.003902378026396f,
+    0.062347009778023f,
+  0.003950343467295f, 0.062727488577366f, 0.003998600877821f,
+    0.063107937574387f,
+  0.004047149792314f, 0.063488349318504f, 0.004095990676433f,
+    0.063868723809719f,
+  0.004145123064518f, 0.064249053597450f, 0.004194547422230f,
+    0.064629353582859f,
+  0.004244263283908f, 0.065009608864784f, 0.004294271115214f,
+    0.065389834344387f,
+  0.004344569984823f, 0.065770015120506f, 0.004395160824060f,
+    0.066150158643723f,
+  0.004446043167263f, 0.066530264914036f, 0.004497217014432f,
+    0.066910326480865f,
+  0.004548682365566f, 0.067290350794792f, 0.004600439220667f,
+    0.067670337855816f,
+  0.004652487114072f, 0.068050287663937f, 0.004704826977104f,
+    0.068430192768574f,
+  0.004757457878441f, 0.068810060620308f, 0.004810380283743f,
+    0.069189883768559f,
+  0.004863593727350f, 0.069569669663906f, 0.004917098674923f,
+    0.069949418306351f,
+  0.004970894660801f, 0.070329122245312f, 0.005024982150644f,
+    0.070708781480789f,
+  0.005079360678792f, 0.071088403463364f, 0.005134030245245f,
+    0.071467980742455f,
+  0.005188991315663f, 0.071847513318062f, 0.005244242958724f,
+    0.072227008640766f,
+  0.005299786105752f, 0.072606459259987f, 0.005355620291084f,
+    0.072985872626305f,
+  0.005411745049059f, 0.073365233838558f, 0.005468160845339f,
+    0.073744557797909f,
+  0.005524867679924f, 0.074123837053776f, 0.005581865552813f,
+    0.074503071606159f,
+  0.005639153998345f, 0.074882268905640f, 0.005696733482182f,
+    0.075261414051056f,
+  0.005754603538662f, 0.075640521943569f, 0.005812764633447f,
+    0.076019577682018f,
+  0.005871216300875f, 0.076398596167564f, 0.005929958540946f,
+    0.076777562499046f,
+  0.005988991353661f, 0.077156484127045f, 0.006048315204680f,
+    0.077535368502140f,
+  0.006107929162681f, 0.077914200723171f, 0.006167833693326f,
+    0.078292988240719f,
+  0.006228029262275f, 0.078671731054783f, 0.006288514938205f,
+    0.079050421714783f,
+  0.006349290721118f, 0.079429075121880f, 0.006410357542336f,
+    0.079807676374912f,
+  0.006471714470536f, 0.080186225473881f, 0.006533361505717f,
+    0.080564737319946f,
+  0.006595299113542f, 0.080943197011948f, 0.006657526828349f,
+    0.081321612000465f,
+  0.006720044650137f, 0.081699974834919f, 0.006782853044569f,
+    0.082078292965889f,
+  0.006845951545984f, 0.082456558942795f, 0.006909339688718f,
+    0.082834780216217f,
+  0.006973018404096f, 0.083212949335575f, 0.007036986760795f,
+    0.083591073751450f,
+  0.007101245224476f, 0.083969146013260f, 0.007165793795139f,
+    0.084347173571587f,
+  0.007230632472783f, 0.084725148975849f, 0.007295760791749f,
+    0.085103072226048f,
+  0.007361178752035f, 0.085480943322182f, 0.007426886819303f,
+    0.085858769714832f,
+  0.007492884527892f, 0.086236543953419f, 0.007559171877801f,
+    0.086614266037941f,
+  0.007625748869032f, 0.086991935968399f, 0.007692615967244f,
+    0.087369553744793f,
+  0.007759772241116f, 0.087747126817703f, 0.007827218621969f,
+    0.088124647736549f,
+  0.007894953712821f, 0.088502109050751f, 0.007962978444993f,
+    0.088879525661469f,
+  0.008031292818487f, 0.089256882667542f, 0.008099896833301f,
+    0.089634194970131f,
+  0.008168790489435f, 0.090011447668076f, 0.008237972855568f,
+    0.090388655662537f,
+  0.008307444863021f, 0.090765804052353f, 0.008377205580473f,
+    0.091142900288105f,
+  0.008447255939245f, 0.091519944369793f, 0.008517595939338f,
+    0.091896936297417f,
+  0.008588224649429f, 0.092273868620396f, 0.008659142069519f,
+    0.092650748789310f,
+  0.008730349130929f, 0.093027576804161f, 0.008801844902337f,
+    0.093404345214367f,
+  0.008873629383743f, 0.093781061470509f, 0.008945702575147f,
+    0.094157725572586f,
+  0.009018065407872f, 0.094534330070019f, 0.009090716950595f,
+    0.094910882413387f,
+  0.009163657203317f, 0.095287375152111f, 0.009236886166036f,
+    0.095663815736771f,
+  0.009310402907431f, 0.096040196716785f, 0.009384209290147f,
+    0.096416525542736f,
+  0.009458304382861f, 0.096792794764042f, 0.009532688185573f,
+    0.097169004380703f,
+  0.009607359766960f, 0.097545161843300f, 0.009682320058346f,
+    0.097921259701252f,
+  0.009757569059730f, 0.098297297954559f, 0.009833106771111f,
+    0.098673284053802f,
+  0.009908932261169f, 0.099049203097820f, 0.009985045529902f,
+    0.099425069987774f,
+  0.010061448439956f, 0.099800877273083f, 0.010138138197362f,
+    0.100176624953747f,
+  0.010215117596090f, 0.100552320480347f, 0.010292383842170f,
+    0.100927948951721f,
+  0.010369938798249f, 0.101303517818451f, 0.010447781533003f,
+    0.101679034531116f,
+  0.010525912046432f, 0.102054484188557f, 0.010604331269860f,
+    0.102429874241352f,
+  0.010683037340641f, 0.102805204689503f, 0.010762032121420f,
+    0.103180475533009f,
+  0.010841314680874f, 0.103555686771870f, 0.010920885019004f,
+    0.103930838406086f,
+  0.011000742204487f, 0.104305922985077f, 0.011080888099968f,
+    0.104680955410004f,
+  0.011161320842803f, 0.105055920779705f, 0.011242041364312f,
+    0.105430819094181f,
+  0.011323049664497f, 0.105805665254593f, 0.011404345743358f,
+    0.106180444359779f,
+  0.011485928669572f, 0.106555156409740f, 0.011567799374461f,
+    0.106929816305637f,
+  0.011649956926703f, 0.107304409146309f, 0.011732402257621f,
+    0.107678934931755f,
+  0.011815134435892f, 0.108053401112556f, 0.011898153461516f,
+    0.108427800238132f,
+  0.011981460265815f, 0.108802139759064f, 0.012065053917468f,
+    0.109176412224770f,
+  0.012148935347795f, 0.109550617635250f, 0.012233102694154f,
+    0.109924763441086f,
+  0.012317557819188f, 0.110298842191696f, 0.012402298860252f,
+    0.110672861337662f,
+  0.012487327679992f, 0.111046813428402f, 0.012572642415762f,
+    0.111420698463917f,
+  0.012658244930208f, 0.111794516444206f, 0.012744133360684f,
+    0.112168267369270f,
+  0.012830308638513f, 0.112541958689690f, 0.012916770763695f,
+    0.112915575504303f,
+  0.013003518804908f, 0.113289132714272f, 0.013090553693473f,
+    0.113662622869015f,
+  0.013177875429392f, 0.114036038517952f, 0.013265483081341f,
+    0.114409394562244f,
+  0.013353376649320f, 0.114782683551311f, 0.013441557064652f,
+    0.115155905485153f,
+  0.013530024327338f, 0.115529052913189f, 0.013618776574731f,
+    0.115902140736580f,
+  0.013707815669477f, 0.116275154054165f, 0.013797140680254f,
+    0.116648100316525f,
+  0.013886751607060f, 0.117020979523659f, 0.013976648449898f,
+    0.117393791675568f,
+  0.014066831208766f, 0.117766529321671f, 0.014157299883664f,
+    0.118139199912548f,
+  0.014248054474592f, 0.118511803448200f, 0.014339094981551f,
+    0.118884332478046f,
+  0.014430420473218f, 0.119256794452667f, 0.014522032812238f,
+    0.119629189372063f,
+  0.014613929204643f, 0.120001509785652f, 0.014706112444401f,
+    0.120373763144016f,
+  0.014798580668867f, 0.120745941996574f, 0.014891333878040f,
+    0.121118053793907f,
+  0.014984373003244f, 0.121490091085434f, 0.015077698044479f,
+    0.121862053871155f,
+  0.015171307139099f, 0.122233949601650f, 0.015265202149749f,
+    0.122605770826340f,
+  0.015359382145107f, 0.122977524995804f, 0.015453847125173f,
+    0.123349204659462f,
+  0.015548598021269f, 0.123720809817314f, 0.015643632039428f,
+    0.124092340469360f,
+  0.015738952904940f, 0.124463804066181f, 0.015834558755159f,
+    0.124835193157196f,
+  0.015930447727442f, 0.125206500291824f, 0.016026621684432f,
+    0.125577747821808f,
+  0.016123080626130f, 0.125948905944824f, 0.016219824552536f,
+    0.126320004463196f,
+  0.016316853463650f, 0.126691013574600f, 0.016414167359471f,
+    0.127061963081360f,
+  0.016511764377356f, 0.127432823181152f, 0.016609646379948f,
+    0.127803623676300f,
+  0.016707813367248f, 0.128174334764481f, 0.016806263476610f,
+    0.128544986248016f,
+  0.016904998570681f, 0.128915548324585f, 0.017004016786814f,
+    0.129286035895348f,
+  0.017103319987655f, 0.129656463861465f, 0.017202908173203f,
+    0.130026802420616f,
+  0.017302779480815f, 0.130397051572800f, 0.017402933910489f,
+    0.130767241120338f,
+  0.017503373324871f, 0.131137356162071f, 0.017604095861316f,
+    0.131507381796837f,
+  0.017705103382468f, 0.131877332925797f, 0.017806394025683f,
+    0.132247209548950f,
+  0.017907967790961f, 0.132617011666298f, 0.018009826540947f,
+    0.132986739277840f,
+  0.018111966550350f, 0.133356377482414f, 0.018214391544461f,
+    0.133725941181183f,
+  0.018317099660635f, 0.134095430374146f, 0.018420090898871f,
+    0.134464830160141f,
+  0.018523367121816f, 0.134834155440331f, 0.018626924604177f,
+    0.135203406214714f,
+  0.018730765208602f, 0.135572582483292f, 0.018834890797734f,
+    0.135941669344902f,
+  0.018939297646284f, 0.136310681700706f, 0.019043987616897f,
+    0.136679604649544f,
+  0.019148962572217f, 0.137048453092575f, 0.019254218786955f,
+    0.137417227029800f,
+  0.019359756261110f, 0.137785911560059f, 0.019465578719974f,
+    0.138154521584511f,
+  0.019571684300900f, 0.138523042201996f, 0.019678071141243f,
+    0.138891488313675f,
+  0.019784741103649f, 0.139259845018387f, 0.019891692325473f,
+    0.139628127217293f,
+  0.019998926669359f, 0.139996320009232f, 0.020106444135308f,
+    0.140364438295364f,
+  0.020214242860675f, 0.140732467174530f, 0.020322324708104f,
+    0.141100421547890f,
+  0.020430689677596f, 0.141468286514282f, 0.020539334043860f,
+    0.141836062073708f,
+  0.020648263394833f, 0.142203763127327f, 0.020757472142577f,
+    0.142571389675140f,
+  0.020866964012384f, 0.142938911914825f, 0.020976737141609f,
+    0.143306359648705f,
+  0.021086793392897f, 0.143673732876778f, 0.021197130903602f,
+    0.144041016697884f,
+  0.021307749673724f, 0.144408211112022f, 0.021418649703264f,
+    0.144775316119194f,
+  0.021529832854867f, 0.145142331719399f, 0.021641295403242f,
+    0.145509272813797f,
+  0.021753041073680f, 0.145876124501228f, 0.021865066140890f,
+    0.146242901682854f,
+  0.021977374330163f, 0.146609574556351f, 0.022089963778853f,
+    0.146976172924042f,
+  0.022202832624316f, 0.147342681884766f, 0.022315984591842f,
+    0.147709101438522f,
+  0.022429415956140f, 0.148075446486473f, 0.022543128579855f,
+    0.148441687226295f,
+  0.022657122462988f, 0.148807853460312f, 0.022771397605538f,
+    0.149173930287361f,
+  0.022885952144861f, 0.149539917707443f, 0.023000787943602f,
+    0.149905815720558f,
+  0.023115905001760f, 0.150271624326706f, 0.023231301456690f,
+    0.150637343525887f,
+  0.023346979171038f, 0.151002973318100f, 0.023462938144803f,
+    0.151368513703346f,
+  0.023579176515341f, 0.151733979582787f, 0.023695694282651f,
+    0.152099341154099f,
+  0.023812493309379f, 0.152464613318443f, 0.023929571732879f,
+    0.152829796075821f,
+  0.024046931415796f, 0.153194904327393f, 0.024164570495486f,
+    0.153559908270836f,
+  0.024282488971949f, 0.153924822807312f, 0.024400688707829f,
+    0.154289647936821f,
+  0.024519165977836f, 0.154654383659363f, 0.024637924507260f,
+    0.155019029974937f,
+  0.024756962433457f, 0.155383571982384f, 0.024876279756427f,
+    0.155748039484024f,
+  0.024995878338814f, 0.156112402677536f, 0.025115754455328f,
+    0.156476691365242f,
+  0.025235909968615f, 0.156840875744820f, 0.025356344878674f,
+    0.157204970717430f,
+  0.025477059185505f, 0.157568961381912f, 0.025598052889109f,
+    0.157932877540588f,
+  0.025719324126840f, 0.158296689391136f, 0.025840876623988f,
+    0.158660411834717f,
+  0.025962706655264f, 0.159024044871330f, 0.026084816083312f,
+    0.159387573599815f,
+  0.026207204908133f, 0.159751012921333f, 0.026329871267080f,
+    0.160114362835884f,
+  0.026452817022800f, 0.160477623343468f, 0.026576040312648f,
+    0.160840779542923f,
+  0.026699542999268f, 0.161203846335411f, 0.026823325082660f,
+    0.161566808819771f,
+  0.026947384700179f, 0.161929681897163f, 0.027071721851826f,
+    0.162292465567589f,
+  0.027196336537600f, 0.162655144929886f, 0.027321230620146f,
+    0.163017734885216f,
+  0.027446404099464f, 0.163380220532417f, 0.027571853250265f,
+    0.163742616772652f,
+  0.027697581797838f, 0.164104923605919f, 0.027823587879539f,
+    0.164467126131058f,
+  0.027949871495366f, 0.164829224348068f, 0.028076432645321f,
+    0.165191248059273f,
+  0.028203271329403f, 0.165553152561188f, 0.028330387547612f,
+    0.165914967656136f,
+  0.028457781299949f, 0.166276678442955f, 0.028585452586412f,
+    0.166638299822807f,
+  0.028713401407003f, 0.166999831795692f, 0.028841627761722f,
+    0.167361244559288f,
+  0.028970129787922f, 0.167722567915916f, 0.029098909348249f,
+    0.168083801865578f,
+  0.029227968305349f, 0.168444931507111f, 0.029357301071286f,
+    0.168805956840515f,
+  0.029486913233995f, 0.169166877865791f, 0.029616801068187f,
+    0.169527709484100f,
+  0.029746964573860f, 0.169888436794281f, 0.029877405613661f,
+    0.170249074697495f,
+  0.030008124187589f, 0.170609608292580f, 0.030139118432999f,
+    0.170970037579536f,
+  0.030270388349891f, 0.171330362558365f, 0.030401935800910f,
+    0.171690583229065f,
+  0.030533758923411f, 0.172050714492798f, 0.030665857717395f,
+    0.172410741448402f,
+  0.030798232182860f, 0.172770664095879f, 0.030930884182453f,
+    0.173130482435226f,
+  0.031063811853528f, 0.173490211367607f, 0.031197015196085f,
+    0.173849821090698f,
+  0.031330492347479f, 0.174209341406822f, 0.031464248895645f,
+    0.174568757414818f,
+  0.031598277390003f, 0.174928069114685f, 0.031732585281134f,
+    0.175287276506424f,
+  0.031867165118456f, 0.175646379590034f, 0.032002024352551f,
+    0.176005378365517f,
+  0.032137155532837f, 0.176364272832870f, 0.032272562384605f,
+    0.176723077893257f,
+  0.032408244907856f, 0.177081763744354f, 0.032544203102589f,
+    0.177440345287323f,
+  0.032680433243513f, 0.177798837423325f, 0.032816942781210f,
+    0.178157210350037f,
+  0.032953724265099f, 0.178515478968620f, 0.033090781420469f,
+    0.178873643279076f,
+  0.033228114247322f, 0.179231703281403f, 0.033365719020367f,
+    0.179589673876762f,
+  0.033503599464893f, 0.179947525262833f, 0.033641755580902f,
+    0.180305257439613f,
+  0.033780183643103f, 0.180662900209427f, 0.033918887376785f,
+    0.181020438671112f,
+  0.034057866781950f, 0.181377857923508f, 0.034197118133307f,
+    0.181735187768936f,
+  0.034336645156145f, 0.182092398405075f, 0.034476444125175f,
+    0.182449504733086f,
+  0.034616518765688f, 0.182806491851807f, 0.034756865352392f,
+    0.183163389563560f,
+  0.034897487610579f, 0.183520168066025f, 0.035038381814957f,
+    0.183876842260361f,
+  0.035179551690817f, 0.184233412146568f, 0.035320993512869f,
+    0.184589877724648f,
+  0.035462711006403f, 0.184946224093437f, 0.035604696720839f,
+    0.185302466154099f,
+  0.035746958106756f, 0.185658603906631f, 0.035889495164156f,
+    0.186014622449875f,
+  0.036032304167747f, 0.186370536684990f, 0.036175385117531f,
+    0.186726331710815f,
+  0.036318738013506f, 0.187082037329674f, 0.036462362855673f,
+    0.187437608838081f,
+  0.036606263369322f, 0.187793090939522f, 0.036750435829163f,
+    0.188148453831673f,
+  0.036894880235195f, 0.188503712415695f, 0.037039596587420f,
+    0.188858851790428f,
+  0.037184584885836f, 0.189213871955872f, 0.037329845130444f,
+    0.189568802714348f,
+  0.037475381046534f, 0.189923599362373f, 0.037621185183525f,
+    0.190278306603432f,
+  0.037767261266708f, 0.190632879734039f, 0.037913613021374f,
+    0.190987363457680f,
+  0.038060232996941f, 0.191341713070869f, 0.038207128643990f,
+    0.191695958375931f,
+  0.038354292511940f, 0.192050099372864f, 0.038501728326082f,
+    0.192404121160507f,
+  0.038649436086416f, 0.192758023738861f, 0.038797415792942f,
+    0.193111822009087f,
+  0.038945667445660f, 0.193465501070023f, 0.039094187319279f,
+    0.193819075822830f,
+  0.039242979139090f, 0.194172516465187f, 0.039392042905092f,
+    0.194525867700577f,
+  0.039541378617287f, 0.194879084825516f, 0.039690986275673f,
+    0.195232197642326f,
+  0.039840862154961f, 0.195585191249847f, 0.039991009980440f,
+    0.195938065648079f,
+  0.040141426026821f, 0.196290835738182f, 0.040292114019394f,
+    0.196643486618996f,
+  0.040443073958158f, 0.196996018290520f, 0.040594302117825f,
+    0.197348430752754f,
+  0.040745802223682f, 0.197700738906860f, 0.040897574275732f,
+    0.198052927851677f,
+  0.041049610823393f, 0.198404997587204f, 0.041201923042536f,
+    0.198756948113441f,
+  0.041354499757290f, 0.199108779430389f, 0.041507352143526f,
+    0.199460506439209f,
+  0.041660469025373f, 0.199812099337578f, 0.041813857853413f,
+    0.200163587927818f,
+  0.041967518627644f, 0.200514942407608f, 0.042121443897486f,
+    0.200866192579269f,
+  0.042275641113520f, 0.201217323541641f, 0.042430106550455f,
+    0.201568335294724f,
+  0.042584843933582f, 0.201919227838516f, 0.042739849537611f,
+    0.202270001173019f,
+  0.042895123362541f, 0.202620655298233f, 0.043050665408373f,
+    0.202971190214157f,
+  0.043206475675106f, 0.203321605920792f, 0.043362557888031f,
+    0.203671902418137f,
+  0.043518904596567f, 0.204022079706192f, 0.043675523251295f,
+    0.204372137784958f,
+  0.043832406401634f, 0.204722076654434f, 0.043989561498165f,
+    0.205071896314621f,
+  0.044146984815598f, 0.205421581864357f, 0.044304672628641f,
+    0.205771163105965f,
+  0.044462632387877f, 0.206120610237122f, 0.044620860368013f,
+    0.206469938158989f,
+  0.044779352843761f, 0.206819161772728f, 0.044938117265701f,
+    0.207168251276016f,
+  0.045097146183252f, 0.207517206668854f, 0.045256443321705f,
+    0.207866057753563f,
+  0.045416008681059f, 0.208214774727821f, 0.045575842261314f,
+    0.208563387393951f,
+  0.045735940337181f, 0.208911851048470f, 0.045896306633949f,
+    0.209260210394859f,
+  0.046056941151619f, 0.209608450531960f, 0.046217843890190f,
+    0.209956556558609f,
+  0.046379011124372f, 0.210304543375969f, 0.046540446579456f,
+    0.210652396082878f,
+  0.046702146530151f, 0.211000129580498f, 0.046864114701748f,
+    0.211347743868828f,
+  0.047026351094246f, 0.211695238947868f, 0.047188851982355f,
+    0.212042599916458f,
+  0.047351621091366f, 0.212389841675758f, 0.047514654695988f,
+    0.212736949324608f,
+  0.047677956521511f, 0.213083937764168f, 0.047841522842646f,
+    0.213430806994438f,
+  0.048005353659391f, 0.213777542114258f, 0.048169452697039f,
+    0.214124158024788f,
+  0.048333816230297f, 0.214470639824867f, 0.048498444259167f,
+    0.214817002415657f,
+  0.048663340508938f, 0.215163245797157f, 0.048828501254320f,
+    0.215509355068207f,
+  0.048993926495314f, 0.215855330228806f, 0.049159619957209f,
+    0.216201186180115f,
+  0.049325577914715f, 0.216546908020973f, 0.049491796642542f,
+    0.216892510652542f,
+  0.049658283591270f, 0.217237979173660f, 0.049825038760900f,
+    0.217583328485489f,
+  0.049992054700851f, 0.217928543686867f, 0.050159335136414f,
+    0.218273624777794f,
+  0.050326880067587f, 0.218618586659431f, 0.050494693219662f,
+    0.218963414430618f,
+  0.050662767142057f, 0.219308122992516f, 0.050831105560064f,
+    0.219652697443962f,
+  0.050999708473682f, 0.219997137784958f, 0.051168579608202f,
+    0.220341444015503f,
+  0.051337707787752f, 0.220685631036758f, 0.051507104188204f,
+    0.221029683947563f,
+  0.051676765084267f, 0.221373617649078f, 0.051846686750650f,
+    0.221717402338982f,
+  0.052016876637936f, 0.222061067819595f, 0.052187327295542f,
+    0.222404599189758f,
+  0.052358038723469f, 0.222748011350632f, 0.052529018372297f,
+    0.223091274499893f,
+  0.052700258791447f, 0.223434418439865f, 0.052871759980917f,
+    0.223777428269386f,
+  0.053043525665998f, 0.224120303988457f, 0.053215555846691f,
+    0.224463045597076f,
+  0.053387850522995f, 0.224805667996407f, 0.053560405969620f,
+    0.225148141384125f,
+  0.053733222186565f, 0.225490495562553f, 0.053906302899122f,
+    0.225832715630531f,
+  0.054079644382000f, 0.226174786686897f, 0.054253250360489f,
+    0.226516738533974f,
+  0.054427117109299f, 0.226858556270599f, 0.054601248353720f,
+    0.227200239896774f,
+  0.054775636643171f, 0.227541789412498f, 0.054950293153524f,
+    0.227883204817772f,
+  0.055125206708908f, 0.228224486112595f, 0.055300384759903f,
+    0.228565633296967f,
+  0.055475823581219f, 0.228906646370888f, 0.055651523172855f,
+    0.229247525334358f,
+  0.055827483534813f, 0.229588270187378f, 0.056003704667091f,
+    0.229928880929947f,
+  0.056180190294981f, 0.230269357562065f, 0.056356932967901f,
+    0.230609700083733f,
+  0.056533940136433f, 0.230949893593788f, 0.056711208075285f,
+    0.231289967894554f,
+  0.056888736784458f, 0.231629893183708f, 0.057066522538662f,
+    0.231969684362412f,
+  0.057244572788477f, 0.232309341430664f, 0.057422880083323f,
+    0.232648864388466f,
+  0.057601451873779f, 0.232988253235817f, 0.057780280709267f,
+    0.233327493071556f,
+  0.057959370315075f, 0.233666598796844f, 0.058138720691204f,
+    0.234005570411682f,
+  0.058318331837654f, 0.234344407916069f, 0.058498200029135f,
+    0.234683111310005f,
+  0.058678328990936f, 0.235021665692329f, 0.058858718723059f,
+    0.235360085964203f,
+  0.059039369225502f, 0.235698372125626f, 0.059220276772976f,
+    0.236036509275436f,
+  0.059401445090771f, 0.236374512314796f, 0.059582870453596f,
+    0.236712381243706f,
+  0.059764556586742f, 0.237050101161003f, 0.059946499764919f,
+    0.237387686967850f,
+  0.060128703713417f, 0.237725138664246f, 0.060311164706945f,
+    0.238062441349030f,
+  0.060493886470795f, 0.238399609923363f, 0.060676865279675f,
+    0.238736644387245f,
+  0.060860104858875f, 0.239073529839516f, 0.061043601483107f,
+    0.239410281181335f,
+  0.061227355152369f, 0.239746883511543f, 0.061411365866661f,
+    0.240083336830139f,
+  0.061595637351274f, 0.240419670939446f, 0.061780165880919f,
+    0.240755841135979f,
+  0.061964951455593f, 0.241091892123222f, 0.062149997800589f,
+    0.241427779197693f,
+  0.062335297465324f, 0.241763532161713f, 0.062520854175091f,
+    0.242099151015282f,
+  0.062706671655178f, 0.242434620857239f, 0.062892749905586f,
+    0.242769956588745f,
+  0.063079081475735f, 0.243105143308640f, 0.063265666365623f,
+    0.243440181016922f,
+  0.063452512025833f, 0.243775084614754f, 0.063639611005783f,
+    0.244109839200974f,
+  0.063826970756054f, 0.244444444775581f, 0.064014583826065f,
+    0.244778916239738f,
+  0.064202457666397f, 0.245113238692284f, 0.064390584826469f,
+    0.245447427034378f,
+  0.064578965306282f, 0.245781451463699f, 0.064767606556416f,
+    0.246115356683731f,
+  0.064956501126289f, 0.246449097990990f, 0.065145656466484f,
+    0.246782705187798f,
+  0.065335065126419f, 0.247116148471832f, 0.065524727106094f,
+    0.247449472546577f,
+  0.065714649856091f, 0.247782632708550f, 0.065904818475246f,
+    0.248115643858910f,
+  0.066095255315304f, 0.248448520898819f, 0.066285938024521f,
+    0.248781248927116f,
+  0.066476874053478f, 0.249113827943802f, 0.066668070852757f,
+    0.249446272850037f,
+  0.066859520971775f, 0.249778553843498f, 0.067051224410534f,
+    0.250110685825348f,
+  0.067243188619614f, 0.250442683696747f, 0.067435398697853f,
+    0.250774532556534f,
+  0.067627869546413f, 0.251106232404709f, 0.067820593714714f,
+    0.251437783241272f,
+  0.068013571202755f, 0.251769185066223f, 0.068206802010536f,
+    0.252100437879562f,
+  0.068400286138058f, 0.252431541681290f, 0.068594031035900f,
+    0.252762526273727f,
+  0.068788021802902f, 0.253093332052231f, 0.068982265889645f,
+    0.253423988819122f,
+  0.069176770746708f, 0.253754496574402f, 0.069371521472931f,
+    0.254084855318069f,
+  0.069566532969475f, 0.254415065050125f, 0.069761790335178f,
+    0.254745125770569f,
+  0.069957308471203f, 0.255075037479401f, 0.070153072476387f,
+    0.255404800176620f,
+  0.070349089801311f, 0.255734413862228f, 0.070545360445976f,
+    0.256063878536224f,
+  0.070741884410381f, 0.256393194198608f, 0.070938661694527f,
+    0.256722360849380f,
+  0.071135692298412f, 0.257051378488541f, 0.071332976222038f,
+    0.257380217313766f,
+  0.071530513465405f, 0.257708936929703f, 0.071728296577930f,
+    0.258037507534027f,
+  0.071926333010197f, 0.258365899324417f, 0.072124622762203f,
+    0.258694142103195f,
+  0.072323165833950f, 0.259022265672684f, 0.072521962225437f,
+    0.259350210428238f,
+  0.072721004486084f, 0.259678006172180f, 0.072920300066471f,
+    0.260005623102188f,
+  0.073119848966599f, 0.260333120822906f, 0.073319651186466f,
+    0.260660469532013f,
+  0.073519699275494f, 0.260987639427185f, 0.073720000684261f,
+    0.261314690113068f,
+  0.073920547962189f, 0.261641561985016f, 0.074121348559856f,
+    0.261968284845352f,
+  0.074322402477264f, 0.262294828891754f, 0.074523709714413f,
+    0.262621253728867f,
+  0.074725262820721f, 0.262947499752045f, 0.074927061796188f,
+    0.263273626565933f,
+  0.075129114091396f, 0.263599574565887f, 0.075331419706345f,
+    0.263925373554230f,
+  0.075533971190453f, 0.264250993728638f, 0.075736775994301f,
+    0.264576494693756f,
+  0.075939826667309f, 0.264901816844940f, 0.076143130660057f,
+    0.265226989984512f,
+  0.076346680521965f, 0.265552014112473f, 0.076550483703613f,
+    0.265876859426498f,
+  0.076754532754421f, 0.266201555728912f, 0.076958827674389f,
+    0.266526103019714f,
+  0.077163375914097f, 0.266850501298904f, 0.077368170022964f,
+    0.267174720764160f,
+  0.077573217451572f, 0.267498821020126f, 0.077778510749340f,
+    0.267822742462158f,
+  0.077984049916267f, 0.268146485090256f, 0.078189842402935f,
+    0.268470078706741f,
+  0.078395880758762f, 0.268793523311615f, 0.078602164983749f,
+    0.269116818904877f,
+  0.078808702528477f, 0.269439965486526f, 0.079015478491783f,
+    0.269762933254242f,
+  0.079222507774830f, 0.270085722208023f, 0.079429790377617f,
+    0.270408391952515f,
+  0.079637311398983f, 0.270730882883072f, 0.079845085740089f,
+    0.271053224802017f,
+  0.080053105950356f, 0.271375387907028f, 0.080261372029781f,
+    0.271697402000427f,
+  0.080469883978367f, 0.272019267082214f, 0.080678641796112f,
+    0.272340953350067f,
+  0.080887645483017f, 0.272662490606308f, 0.081096902489662f,
+    0.272983878850937f,
+  0.081306397914886f, 0.273305088281631f, 0.081516146659851f,
+    0.273626148700714f,
+  0.081726133823395f, 0.273947030305862f, 0.081936374306679f,
+    0.274267762899399f,
+  0.082146860659122f, 0.274588316679001f, 0.082357585430145f,
+    0.274908751249313f,
+  0.082568563520908f, 0.275228977203369f, 0.082779780030251f,
+    0.275549083948135f,
+  0.082991249859333f, 0.275868982076645f, 0.083202958106995f,
+    0.276188760995865f,
+  0.083414919674397f, 0.276508361101151f, 0.083627119660378f,
+    0.276827782392502f,
+  0.083839565515518f, 0.277147054672241f, 0.084052257239819f,
+    0.277466177940369f,
+  0.084265194833279f, 0.277785122394562f, 0.084478378295898f,
+    0.278103888034821f,
+  0.084691800177097f, 0.278422504663467f, 0.084905467927456f,
+    0.278740972280502f,
+  0.085119381546974f, 0.279059261083603f, 0.085333541035652f,
+    0.279377400875092f,
+  0.085547938942909f, 0.279695361852646f, 0.085762590169907f,
+    0.280013144016266f,
+  0.085977479815483f, 0.280330777168274f, 0.086192607879639f,
+    0.280648261308670f,
+  0.086407989263535f, 0.280965566635132f, 0.086623609066010f,
+    0.281282693147659f,
+  0.086839467287064f, 0.281599670648575f, 0.087055571377277f,
+    0.281916469335556f,
+  0.087271921336651f, 0.282233119010925f, 0.087488517165184f,
+    0.282549589872360f,
+  0.087705351412296f, 0.282865911722183f, 0.087922424077988f,
+    0.283182054758072f,
+  0.088139742612839f, 0.283498018980026f, 0.088357307016850f,
+    0.283813834190369f,
+  0.088575109839439f, 0.284129470586777f, 0.088793158531189f,
+    0.284444957971573f,
+  0.089011445641518f, 0.284760266542435f, 0.089229971170425f,
+    0.285075396299362f,
+  0.089448742568493f, 0.285390377044678f, 0.089667752385139f,
+    0.285705178976059f,
+  0.089887008070946f, 0.286019802093506f, 0.090106502175331f,
+    0.286334276199341f,
+  0.090326242148876f, 0.286648571491241f, 0.090546220541000f,
+    0.286962717771530f,
+  0.090766437351704f, 0.287276685237885f, 0.090986892580986f,
+    0.287590473890305f,
+  0.091207593679428f, 0.287904083728790f, 0.091428533196449f,
+    0.288217544555664f,
+  0.091649711132050f, 0.288530826568604f, 0.091871134936810f,
+    0.288843959569931f,
+  0.092092797160149f, 0.289156883955002f, 0.092314697802067f,
+    0.289469659328461f,
+  0.092536836862564f, 0.289782285690308f, 0.092759214341640f,
+    0.290094703435898f,
+  0.092981837689877f, 0.290406972169876f, 0.093204692006111f,
+    0.290719062089920f,
+  0.093427792191505f, 0.291031002998352f, 0.093651130795479f,
+    0.291342735290527f,
+  0.093874707818031f, 0.291654318571091f, 0.094098523259163f,
+    0.291965723037720f,
+  0.094322577118874f, 0.292276978492737f, 0.094546869397163f,
+    0.292588025331497f,
+  0.094771400094032f, 0.292898923158646f, 0.094996169209480f,
+    0.293209642171860f,
+  0.095221176743507f, 0.293520182371140f, 0.095446422696114f,
+    0.293830573558807f,
+  0.095671907067299f, 0.294140785932541f, 0.095897629857063f,
+    0.294450789690018f,
+  0.096123591065407f, 0.294760644435883f, 0.096349790692329f,
+    0.295070350170136f,
+  0.096576221287251f, 0.295379847288132f, 0.096802897751331f,
+    0.295689195394516f,
+  0.097029805183411f, 0.295998334884644f, 0.097256951034069f,
+    0.296307325363159f,
+  0.097484335303307f, 0.296616137027740f, 0.097711957991123f,
+    0.296924799680710f,
+  0.097939811646938f, 0.297233253717422f, 0.098167903721333f,
+    0.297541528940201f,
+  0.098396234214306f, 0.297849655151367f, 0.098624803125858f,
+    0.298157602548599f,
+  0.098853603005409f, 0.298465341329575f, 0.099082641303539f,
+    0.298772931098938f,
+  0.099311910569668f, 0.299080342054367f, 0.099541425704956f,
+    0.299387603998184f,
+  0.099771171808243f, 0.299694657325745f, 0.100001148879528f,
+    0.300001531839371f,
+  0.100231364369392f, 0.300308227539063f, 0.100461818277836f,
+    0.300614774227142f,
+  0.100692503154278f, 0.300921112298965f, 0.100923426449299f,
+    0.301227301359177f,
+  0.101154580712318f, 0.301533311605453f, 0.101385973393917f,
+    0.301839113235474f,
+  0.101617597043514f, 0.302144765853882f, 0.101849451661110f,
+    0.302450239658356f,
+  0.102081544697285f, 0.302755534648895f, 0.102313876152039f,
+    0.303060621023178f,
+  0.102546438574791f, 0.303365558385849f, 0.102779231965542f,
+    0.303670316934586f,
+  0.103012263774872f, 0.303974896669388f, 0.103245526552200f,
+    0.304279297590256f,
+  0.103479020297527f, 0.304583519697189f, 0.103712752461433f,
+    0.304887533187866f,
+  0.103946708142757f, 0.305191397666931f, 0.104180909693241f,
+    0.305495083332062f,
+  0.104415334761143f, 0.305798590183258f, 0.104649998247623f,
+    0.306101888418198f,
+  0.104884892702103f, 0.306405037641525f, 0.105120018124580f,
+    0.306708008050919f,
+  0.105355374515057f, 0.307010769844055f, 0.105590961873531f,
+    0.307313382625580f,
+  0.105826787650585f, 0.307615786790848f, 0.106062836945057f,
+    0.307918041944504f,
+  0.106299124658108f, 0.308220088481903f, 0.106535643339157f,
+    0.308521956205368f,
+  0.106772392988205f, 0.308823645114899f, 0.107009373605251f,
+    0.309125155210495f,
+  0.107246585190296f, 0.309426486492157f, 0.107484027743340f,
+    0.309727638959885f,
+  0.107721701264381f, 0.310028612613678f, 0.107959605753422f,
+    0.310329377651215f,
+  0.108197741210461f, 0.310629993677139f, 0.108436107635498f,
+    0.310930401086807f,
+  0.108674705028534f, 0.311230629682541f, 0.108913525938988f,
+    0.311530679464340f,
+  0.109152585268021f, 0.311830550432205f, 0.109391868114471f,
+    0.312130242586136f,
+  0.109631389379501f, 0.312429755926132f, 0.109871134161949f,
+    0.312729060649872f,
+  0.110111102461815f, 0.313028186559677f, 0.110351309180260f,
+    0.313327133655548f,
+  0.110591746866703f, 0.313625901937485f, 0.110832408070564f,
+    0.313924491405487f,
+  0.111073300242424f, 0.314222872257233f, 0.111314415931702f,
+    0.314521104097366f,
+  0.111555770039558f, 0.314819127321243f, 0.111797347664833f,
+    0.315116971731186f,
+  0.112039148807526f, 0.315414607524872f, 0.112281180918217f,
+    0.315712094306946f,
+  0.112523443996906f, 0.316009372472763f, 0.112765938043594f,
+    0.316306471824646f,
+  0.113008655607700f, 0.316603392362595f, 0.113251596689224f,
+    0.316900104284287f,
+  0.113494776189327f, 0.317196637392044f, 0.113738171756268f,
+    0.317492991685867f,
+  0.113981798291206f, 0.317789167165756f, 0.114225655794144f,
+    0.318085134029388f,
+  0.114469736814499f, 0.318380922079086f, 0.114714048802853f,
+    0.318676531314850f,
+  0.114958584308624f, 0.318971961736679f, 0.115203343331814f,
+    0.319267183542252f,
+  0.115448333323002f, 0.319562226533890f, 0.115693546831608f,
+    0.319857090711594f,
+  0.115938983857632f, 0.320151746273041f, 0.116184651851654f,
+    0.320446223020554f,
+  0.116430543363094f, 0.320740520954132f, 0.116676658391953f,
+    0.321034610271454f,
+  0.116923004388809f, 0.321328520774841f, 0.117169573903084f,
+    0.321622252464294f,
+  0.117416366934776f, 0.321915775537491f, 0.117663383483887f,
+    0.322209119796753f,
+  0.117910631000996f, 0.322502255439758f, 0.118158094584942f,
+    0.322795242071152f,
+  0.118405789136887f, 0.323088020086288f, 0.118653707206249f,
+    0.323380589485168f,
+  0.118901848793030f, 0.323672980070114f, 0.119150213897228f,
+    0.323965191841125f,
+  0.119398809969425f, 0.324257194995880f, 0.119647622108459f,
+    0.324549019336700f,
+  0.119896657764912f, 0.324840664863586f, 0.120145916938782f,
+    0.325132101774216f,
+  0.120395407080650f, 0.325423330068588f, 0.120645113289356f,
+    0.325714409351349f,
+  0.120895043015480f, 0.326005280017853f, 0.121145196259022f,
+    0.326295942068100f,
+  0.121395580470562f, 0.326586425304413f, 0.121646173298359f,
+    0.326876699924469f,
+  0.121896997094154f, 0.327166795730591f, 0.122148044407368f,
+    0.327456712722778f,
+  0.122399315237999f, 0.327746421098709f, 0.122650802135468f,
+    0.328035950660706f,
+  0.122902512550354f, 0.328325271606445f, 0.123154446482658f,
+    0.328614413738251f,
+  0.123406603932381f, 0.328903347253799f, 0.123658977448940f,
+    0.329192101955414f,
+  0.123911574482918f, 0.329480648040771f, 0.124164395034313f,
+    0.329769015312195f,
+  0.124417431652546f, 0.330057173967361f, 0.124670691788197f,
+    0.330345153808594f,
+  0.124924175441265f, 0.330632925033569f, 0.125177875161171f,
+    0.330920487642288f,
+  0.125431805849075f, 0.331207901239395f, 0.125685945153236f,
+    0.331495076417923f,
+  0.125940307974815f, 0.331782072782516f, 0.126194894313812f,
+    0.332068890333176f,
+  0.126449704170227f, 0.332355499267578f, 0.126704722642899f,
+    0.332641899585724f,
+  0.126959964632988f, 0.332928121089935f, 0.127215430140495f,
+    0.333214133977890f,
+  0.127471104264259f, 0.333499968051910f, 0.127727001905441f,
+    0.333785593509674f,
+  0.127983123064041f, 0.334071010351181f, 0.128239467740059f,
+    0.334356248378754f,
+  0.128496021032333f, 0.334641307592392f, 0.128752797842026f,
+    0.334926128387451f,
+  0.129009798169136f, 0.335210770368576f, 0.129267007112503f,
+    0.335495233535767f,
+  0.129524439573288f, 0.335779488086700f, 0.129782080650330f,
+    0.336063534021378f,
+  0.130039945244789f, 0.336347371339798f, 0.130298033356667f,
+    0.336631029844284f,
+  0.130556344985962f, 0.336914509534836f, 0.130814850330353f,
+    0.337197750806808f,
+  0.131073594093323f, 0.337480813264847f, 0.131332546472549f,
+    0.337763696908951f,
+  0.131591722369194f, 0.338046342134476f, 0.131851106882095f,
+    0.338328808546066f,
+  0.132110700011253f, 0.338611096143723f, 0.132370531558990f,
+    0.338893145322800f,
+  0.132630556821823f, 0.339175015687943f, 0.132890805602074f,
+    0.339456677436829f,
+  0.133151277899742f, 0.339738160371780f, 0.133411958813667f,
+    0.340019434690475f,
+  0.133672863245010f, 0.340300500392914f, 0.133933976292610f,
+    0.340581357479095f,
+  0.134195312857628f, 0.340862035751343f, 0.134456858038902f,
+    0.341142505407333f,
+  0.134718611836433f, 0.341422766447067f, 0.134980589151382f,
+    0.341702848672867f,
+  0.135242775082588f, 0.341982692480087f, 0.135505184531212f,
+    0.342262357473373f,
+  0.135767802596092f, 0.342541843652725f, 0.136030644178391f,
+    0.342821091413498f,
+  0.136293679475784f, 0.343100160360336f, 0.136556953191757f,
+    0.343379020690918f,
+  0.136820420622826f, 0.343657672405243f, 0.137084111571312f,
+    0.343936115503311f,
+  0.137348011136055f, 0.344214379787445f, 0.137612134218216f,
+    0.344492435455322f,
+  0.137876465916634f, 0.344770282506943f, 0.138141006231308f,
+    0.345047920942307f,
+  0.138405755162239f, 0.345325350761414f, 0.138670727610588f,
+    0.345602601766586f,
+  0.138935908675194f, 0.345879614353180f, 0.139201298356056f,
+    0.346156448125839f,
+  0.139466896653175f, 0.346433073282242f, 0.139732718467712f,
+    0.346709519624710f,
+  0.139998748898506f, 0.346985727548599f, 0.140264987945557f,
+    0.347261756658554f,
+  0.140531435608864f, 0.347537547349930f, 0.140798106789589f,
+    0.347813159227371f,
+  0.141064971685410f, 0.348088562488556f, 0.141332060098648f,
+    0.348363757133484f,
+  0.141599357128143f, 0.348638743162155f, 0.141866862773895f,
+    0.348913550376892f,
+  0.142134591937065f, 0.349188119173050f, 0.142402514815331f,
+    0.349462509155273f,
+  0.142670661211014f, 0.349736660718918f, 0.142939001321793f,
+    0.350010633468628f,
+  0.143207564949989f, 0.350284397602081f, 0.143476337194443f,
+    0.350557953119278f,
+  0.143745318055153f, 0.350831300020218f, 0.144014507532120f,
+    0.351104438304901f,
+  0.144283905625343f, 0.351377367973328f, 0.144553512334824f,
+    0.351650089025497f,
+  0.144823327660561f, 0.351922631263733f, 0.145093351602554f,
+    0.352194935083389f,
+  0.145363584160805f, 0.352467030286789f, 0.145634025335312f,
+    0.352738946676254f,
+  0.145904675126076f, 0.353010624647141f, 0.146175548434258f,
+    0.353282123804092f,
+  0.146446615457535f, 0.353553384542465f, 0.146717891097069f,
+    0.353824466466904f,
+  0.146989375352860f, 0.354095309972763f, 0.147261068224907f,
+    0.354365974664688f,
+  0.147532954812050f, 0.354636400938034f, 0.147805064916611f,
+    0.354906648397446f,
+  0.148077383637428f, 0.355176687240601f, 0.148349896073341f,
+    0.355446487665176f,
+  0.148622632026672f, 0.355716109275818f, 0.148895561695099f,
+    0.355985492467880f,
+  0.149168699979782f, 0.356254696846008f, 0.149442046880722f,
+    0.356523662805557f,
+  0.149715602397919f, 0.356792420148849f, 0.149989366531372f,
+    0.357060998678207f,
+  0.150263324379921f, 0.357329338788986f, 0.150537505745888f,
+    0.357597470283508f,
+  0.150811880826950f, 0.357865422964096f, 0.151086464524269f,
+    0.358133137226105f,
+  0.151361241936684f, 0.358400642871857f, 0.151636242866516f,
+    0.358667939901352f,
+  0.151911437511444f, 0.358935028314590f, 0.152186840772629f,
+    0.359201908111572f,
+  0.152462437748909f, 0.359468549489975f, 0.152738258242607f,
+    0.359735012054443f,
+  0.153014272451401f, 0.360001266002655f, 0.153290495276451f,
+    0.360267281532288f,
+  0.153566911816597f, 0.360533088445663f, 0.153843536973000f,
+    0.360798716545105f,
+  0.154120370745659f, 0.361064106225967f, 0.154397398233414f,
+    0.361329287290573f,
+  0.154674649238586f, 0.361594229936600f, 0.154952079057693f,
+    0.361858993768692f,
+  0.155229732394218f, 0.362123548984528f, 0.155507579445839f,
+    0.362387865781784f,
+  0.155785620212555f, 0.362651973962784f, 0.156063869595528f,
+    0.362915903329849f,
+  0.156342327594757f, 0.363179564476013f, 0.156620979309082f,
+    0.363443046808243f,
+  0.156899839639664f, 0.363706320524216f, 0.157178908586502f,
+    0.363969355821610f,
+  0.157458171248436f, 0.364232182502747f, 0.157737627625465f,
+    0.364494800567627f,
+  0.158017292618752f, 0.364757210016251f, 0.158297166228294f,
+    0.365019410848618f,
+  0.158577233552933f, 0.365281373262405f, 0.158857494592667f,
+    0.365543156862259f,
+  0.159137964248657f, 0.365804702043533f, 0.159418627619743f,
+    0.366066008806229f,
+  0.159699499607086f, 0.366327136754990f, 0.159980565309525f,
+    0.366588026285172f,
+  0.160261839628220f, 0.366848707199097f, 0.160543307662010f,
+    0.367109179496765f,
+  0.160824984312058f, 0.367369443178177f, 0.161106839776039f,
+    0.367629468441010f,
+  0.161388918757439f, 0.367889285087585f, 0.161671176552773f,
+    0.368148893117905f,
+  0.161953642964363f, 0.368408292531967f, 0.162236317992210f,
+    0.368667453527451f,
+  0.162519171833992f, 0.368926405906677f, 0.162802234292030f,
+    0.369185149669647f,
+  0.163085505366325f, 0.369443655014038f, 0.163368955254555f,
+    0.369701951742172f,
+  0.163652613759041f, 0.369960039854050f, 0.163936465978622f,
+    0.370217919349670f,
+  0.164220526814461f, 0.370475560426712f, 0.164504766464233f,
+    0.370732992887497f,
+  0.164789214730263f, 0.370990216732025f, 0.165073871612549f,
+    0.371247202157974f,
+  0.165358707308769f, 0.371503978967667f, 0.165643751621246f,
+    0.371760547161102f,
+  0.165928974747658f, 0.372016876935959f, 0.166214406490326f,
+    0.372272998094559f,
+  0.166500031948090f, 0.372528880834579f, 0.166785866022110f,
+    0.372784584760666f,
+  0.167071878910065f, 0.373040050268173f, 0.167358100414276f,
+    0.373295277357101f,
+  0.167644515633583f, 0.373550295829773f, 0.167931124567986f,
+    0.373805105686188f,
+  0.168217927217484f, 0.374059677124023f, 0.168504923582077f,
+    0.374314039945602f,
+  0.168792113661766f, 0.374568194150925f, 0.169079497456551f,
+    0.374822109937668f,
+  0.169367074966431f, 0.375075817108154f, 0.169654861092567f,
+    0.375329315662384f,
+  0.169942826032639f, 0.375582575798035f, 0.170230999588966f,
+    0.375835597515106f,
+  0.170519351959229f, 0.376088410615921f, 0.170807912945747f,
+    0.376341015100479f,
+  0.171096652746201f, 0.376593410968781f, 0.171385586261749f,
+    0.376845568418503f,
+  0.171674728393555f, 0.377097487449646f, 0.171964049339294f,
+    0.377349197864532f,
+  0.172253578901291f, 0.377600699663162f, 0.172543287277222f,
+    0.377851963043213f,
+  0.172833189368248f, 0.378102988004684f, 0.173123285174370f,
+    0.378353834152222f,
+  0.173413574695587f, 0.378604412078857f, 0.173704057931900f,
+    0.378854811191559f,
+  0.173994734883308f, 0.379104942083359f, 0.174285605549812f,
+    0.379354894161224f,
+  0.174576655030251f, 0.379604607820511f, 0.174867913126946f,
+    0.379854083061218f,
+  0.175159350037575f, 0.380103349685669f, 0.175450980663300f,
+    0.380352377891541f,
+  0.175742805004120f, 0.380601197481155f, 0.176034808158875f,
+    0.380849778652191f,
+  0.176327019929886f, 0.381098151206970f, 0.176619410514832f,
+    0.381346285343170f,
+  0.176911994814873f, 0.381594210863113f, 0.177204772830009f,
+    0.381841897964478f,
+  0.177497729659081f, 0.382089376449585f, 0.177790880203247f,
+    0.382336616516113f,
+  0.178084224462509f, 0.382583618164063f, 0.178377762436867f,
+    0.382830440998077f,
+  0.178671479225159f, 0.383076995611191f, 0.178965389728546f,
+    0.383323341608047f,
+  0.179259493947029f, 0.383569449186325f, 0.179553776979446f,
+    0.383815348148346f,
+  0.179848253726959f, 0.384061008691788f, 0.180142924189568f,
+    0.384306460618973f,
+  0.180437773466110f, 0.384551674127579f, 0.180732816457748f,
+    0.384796649217606f,
+  0.181028053164482f, 0.385041415691376f, 0.181323468685150f,
+    0.385285943746567f,
+  0.181619063019753f, 0.385530263185501f, 0.181914865970612f,
+    0.385774344205856f,
+  0.182210832834244f, 0.386018186807632f, 0.182507008314133f,
+    0.386261820793152f,
+  0.182803362607956f, 0.386505216360092f, 0.183099895715714f,
+    0.386748403310776f,
+  0.183396622538567f, 0.386991351842880f, 0.183693528175354f,
+    0.387234061956406f,
+  0.183990627527237f, 0.387476563453674f, 0.184287920594215f,
+    0.387718826532364f,
+  0.184585392475128f, 0.387960851192474f, 0.184883043169975f,
+    0.388202667236328f,
+  0.185180887579918f, 0.388444244861603f, 0.185478910803795f,
+    0.388685584068298f,
+  0.185777112841606f, 0.388926714658737f, 0.186075508594513f,
+    0.389167606830597f,
+  0.186374098062515f, 0.389408260583878f, 0.186672851443291f,
+    0.389648675918579f,
+  0.186971798539162f, 0.389888882637024f, 0.187270939350128f,
+    0.390128880739212f,
+  0.187570258975029f, 0.390368610620499f, 0.187869757413864f,
+    0.390608131885529f,
+  0.188169434666634f, 0.390847414731979f, 0.188469305634499f,
+    0.391086459159851f,
+  0.188769355416298f, 0.391325294971466f, 0.189069598913193f,
+    0.391563892364502f,
+  0.189370006322861f, 0.391802251338959f, 0.189670607447624f,
+    0.392040401697159f,
+  0.189971387386322f, 0.392278283834457f, 0.190272361040115f,
+    0.392515957355499f,
+  0.190573498606682f, 0.392753422260284f, 0.190874829888344f,
+    0.392990618944168f,
+  0.191176339983940f, 0.393227607011795f, 0.191478043794632f,
+    0.393464356660843f,
+  0.191779911518097f, 0.393700867891312f, 0.192081972956657f,
+    0.393937170505524f,
+  0.192384198307991f, 0.394173204898834f, 0.192686617374420f,
+    0.394409030675888f,
+  0.192989215254784f, 0.394644618034363f, 0.193292006850243f,
+    0.394879996776581f,
+  0.193594962358475f, 0.395115107297897f, 0.193898096680641f,
+    0.395350009202957f,
+  0.194201424717903f, 0.395584672689438f, 0.194504916667938f,
+    0.395819097757339f,
+  0.194808602333069f, 0.396053284406662f, 0.195112451910973f,
+    0.396287262439728f,
+  0.195416495203972f, 0.396520972251892f, 0.195720717310905f,
+    0.396754473447800f,
+  0.196025103330612f, 0.396987736225128f, 0.196329683065414f,
+    0.397220760583878f,
+  0.196634441614151f, 0.397453576326370f, 0.196939364075661f,
+    0.397686123847961f,
+  0.197244480252266f, 0.397918462753296f, 0.197549775242805f,
+    0.398150533437729f,
+  0.197855234146118f, 0.398382395505905f, 0.198160871863365f,
+    0.398614019155502f,
+  0.198466703295708f, 0.398845434188843f, 0.198772698640823f,
+    0.399076581001282f,
+  0.199078872799873f, 0.399307489395142f, 0.199385225772858f,
+    0.399538189172745f,
+  0.199691757559776f, 0.399768620729446f, 0.199998468160629f,
+    0.399998843669891f,
+  0.200305357575417f, 0.400228828191757f, 0.200612410902977f,
+    0.400458574295044f,
+  0.200919643044472f, 0.400688081979752f, 0.201227053999901f,
+    0.400917351245880f,
+  0.201534643769264f, 0.401146411895752f, 0.201842412352562f,
+    0.401375204324722f,
+  0.202150344848633f, 0.401603758335114f, 0.202458456158638f,
+    0.401832103729248f,
+  0.202766746282578f, 0.402060180902481f, 0.203075215220451f,
+    0.402288049459457f,
+  0.203383848071098f, 0.402515679597855f, 0.203692659735680f,
+    0.402743041515350f,
+  0.204001650214195f, 0.402970194816589f, 0.204310819506645f,
+    0.403197109699249f,
+  0.204620152711868f, 0.403423786163330f, 0.204929664731026f,
+    0.403650224208832f,
+  0.205239340662956f, 0.403876423835754f, 0.205549195408821f,
+    0.404102355241776f,
+  0.205859228968620f, 0.404328078031540f, 0.206169426441193f,
+    0.404553562402725f,
+  0.206479802727699f, 0.404778808355331f, 0.206790357828140f,
+    0.405003815889359f,
+  0.207101076841354f, 0.405228585004807f, 0.207411959767342f,
+    0.405453115701675f,
+  0.207723021507263f, 0.405677437782288f, 0.208034262061119f,
+    0.405901491641998f,
+  0.208345666527748f, 0.406125307083130f, 0.208657249808311f,
+    0.406348884105682f,
+  0.208969011902809f, 0.406572192907333f, 0.209280923008919f,
+    0.406795293092728f,
+  0.209593027830124f, 0.407018154859543f, 0.209905281662941f,
+    0.407240778207779f,
+  0.210217714309692f, 0.407463163137436f, 0.210530325770378f,
+    0.407685309648514f,
+  0.210843101143837f, 0.407907217741013f, 0.211156040430069f,
+    0.408128857612610f,
+  0.211469158530235f, 0.408350288867950f, 0.211782455444336f,
+    0.408571451902390f,
+  0.212095901370049f, 0.408792406320572f, 0.212409526109695f,
+    0.409013092517853f,
+  0.212723329663277f, 0.409233570098877f, 0.213037282228470f,
+    0.409453779459000f,
+  0.213351413607597f, 0.409673750400543f, 0.213665723800659f,
+    0.409893482923508f,
+  0.213980183005333f, 0.410112977027893f, 0.214294821023941f,
+    0.410332232713699f,
+  0.214609622955322f, 0.410551249980927f, 0.214924603700638f,
+    0.410770028829575f,
+  0.215239733457565f, 0.410988569259644f, 0.215555042028427f,
+    0.411206841468811f,
+  0.215870529413223f, 0.411424905061722f, 0.216186165809631f,
+    0.411642700433731f,
+  0.216501981019974f, 0.411860257387161f, 0.216817945241928f,
+    0.412077575922012f,
+  0.217134088277817f, 0.412294656038284f, 0.217450410127640f,
+    0.412511497735977f,
+  0.217766880989075f, 0.412728071212769f, 0.218083515763283f,
+    0.412944436073303f,
+  0.218400329351425f, 0.413160532712936f, 0.218717306852341f,
+    0.413376390933990f,
+  0.219034433364868f, 0.413592010736465f, 0.219351738691330f,
+    0.413807392120361f,
+  0.219669207930565f, 0.414022535085678f, 0.219986841082573f,
+    0.414237409830093f,
+  0.220304638147354f, 0.414452046155930f, 0.220622614026070f,
+    0.414666473865509f,
+  0.220940738916397f, 0.414880603551865f, 0.221259027719498f,
+    0.415094524621964f,
+  0.221577480435371f, 0.415308207273483f, 0.221896097064018f,
+    0.415521621704102f,
+  0.222214877605438f, 0.415734797716141f, 0.222533836960793f,
+    0.415947735309601f,
+  0.222852945327759f, 0.416160434484482f, 0.223172217607498f,
+    0.416372895240784f,
+  0.223491653800011f, 0.416585087776184f, 0.223811239004135f,
+    0.416797041893005f,
+  0.224131003022194f, 0.417008757591248f, 0.224450930953026f,
+    0.417220205068588f,
+  0.224771007895470f, 0.417431443929672f, 0.225091263651848f,
+    0.417642414569855f,
+  0.225411668419838f, 0.417853146791458f, 0.225732237100601f,
+    0.418063640594482f,
+  0.226052969694138f, 0.418273866176605f, 0.226373866200447f,
+    0.418483853340149f,
+  0.226694911718369f, 0.418693602085114f, 0.227016136050224f,
+    0.418903112411499f,
+  0.227337509393692f, 0.419112354516983f, 0.227659046649933f,
+    0.419321358203888f,
+  0.227980732917786f, 0.419530123472214f, 0.228302597999573f,
+    0.419738620519638f,
+  0.228624612092972f, 0.419946908950806f, 0.228946775197983f,
+    0.420154929161072f,
+  0.229269117116928f, 0.420362681150436f, 0.229591608047485f,
+    0.420570224523544f,
+  0.229914262890816f, 0.420777499675751f, 0.230237081646919f,
+    0.420984506607056f,
+  0.230560049414635f, 0.421191304922104f, 0.230883181095123f,
+    0.421397835016251f,
+  0.231206461787224f, 0.421604126691818f, 0.231529906392097f,
+    0.421810150146484f,
+  0.231853514909744f, 0.422015935182571f, 0.232177272439003f,
+    0.422221481800079f,
+  0.232501193881035f, 0.422426789999008f, 0.232825264334679f,
+    0.422631829977036f,
+  0.233149498701096f, 0.422836631536484f, 0.233473882079124f,
+    0.423041164875031f,
+  0.233798429369926f, 0.423245459794998f, 0.234123140573502f,
+    0.423449516296387f,
+  0.234448000788689f, 0.423653304576874f, 0.234773010015488f,
+    0.423856884241104f,
+  0.235098183155060f, 0.424060165882111f, 0.235423520207405f,
+    0.424263238906860f,
+  0.235749006271362f, 0.424466013908386f, 0.236074641346931f,
+    0.424668580293655f,
+  0.236400425434113f, 0.424870878458023f, 0.236726388335228f,
+    0.425072938203812f,
+  0.237052485346794f, 0.425274729728699f, 0.237378746271133f,
+    0.425476282835007f,
+  0.237705156207085f, 0.425677597522736f, 0.238031730055809f,
+    0.425878643989563f,
+  0.238358452916145f, 0.426079452037811f, 0.238685324788094f,
+    0.426279991865158f,
+  0.239012360572815f, 0.426480293273926f, 0.239339530467987f,
+    0.426680356264114f,
+  0.239666879177094f, 0.426880151033401f, 0.239994361996651f,
+    0.427079707384110f,
+  0.240322008728981f, 0.427278995513916f, 0.240649804472923f,
+    0.427478045225143f,
+  0.240977749228477f, 0.427676826715469f, 0.241305842995644f,
+    0.427875369787216f,
+  0.241634100675583f, 0.428073674440384f, 0.241962507367134f,
+    0.428271710872650f,
+  0.242291063070297f, 0.428469479084015f, 0.242619767785072f,
+    0.428667008876801f,
+  0.242948621511459f, 0.428864300251007f, 0.243277639150620f,
+    0.429061323404312f,
+  0.243606805801392f, 0.429258108139038f, 0.243936106562614f,
+    0.429454624652863f,
+  0.244265571236610f, 0.429650902748108f, 0.244595184922218f,
+    0.429846942424774f,
+  0.244924947619438f, 0.430042684078217f, 0.245254859328270f,
+    0.430238217115402f,
+  0.245584934949875f, 0.430433481931686f, 0.245915144681931f,
+    0.430628478527069f,
+  0.246245503425598f, 0.430823236703873f, 0.246576011180878f,
+    0.431017726659775f,
+  0.246906682848930f, 0.431211978197098f, 0.247237488627434f,
+    0.431405961513519f,
+  0.247568443417549f, 0.431599706411362f, 0.247899547219276f,
+    0.431793183088303f,
+  0.248230814933777f, 0.431986421346664f, 0.248562216758728f,
+    0.432179391384125f,
+  0.248893767595291f, 0.432372123003006f, 0.249225467443466f,
+    0.432564586400986f,
+  0.249557301402092f, 0.432756811380386f, 0.249889299273491f,
+    0.432948768138886f,
+  0.250221431255341f, 0.433140486478806f, 0.250553727149963f,
+    0.433331936597824f,
+  0.250886172056198f, 0.433523118495941f, 0.251218736171722f,
+    0.433714061975479f,
+  0.251551479101181f, 0.433904737234116f, 0.251884341239929f,
+    0.434095174074173f,
+  0.252217382192612f, 0.434285342693329f, 0.252550542354584f,
+    0.434475272893906f,
+  0.252883851528168f, 0.434664934873581f, 0.253217309713364f,
+    0.434854328632355f,
+  0.253550916910172f, 0.435043483972549f, 0.253884643316269f,
+    0.435232400894165f,
+  0.254218548536301f, 0.435421019792557f, 0.254552572965622f,
+    0.435609430074692f,
+  0.254886746406555f, 0.435797542333603f, 0.255221068859100f,
+    0.435985416173935f,
+  0.255555540323257f, 0.436173021793365f, 0.255890160799026f,
+    0.436360388994217f,
+  0.256224930286407f, 0.436547487974167f, 0.256559818983078f,
+    0.436734348535538f,
+  0.256894856691360f, 0.436920911073685f, 0.257230043411255f,
+    0.437107264995575f,
+  0.257565379142761f, 0.437293320894241f, 0.257900834083557f,
+    0.437479138374329f,
+  0.258236467838287f, 0.437664687633514f, 0.258572220802307f,
+    0.437849998474121f,
+  0.258908122777939f, 0.438035041093826f, 0.259244143962860f,
+    0.438219845294952f,
+  0.259580343961716f, 0.438404351472855f, 0.259916663169861f,
+    0.438588619232178f,
+  0.260253131389618f, 0.438772648572922f, 0.260589718818665f,
+    0.438956409692764f,
+  0.260926485061646f, 0.439139902591705f, 0.261263370513916f,
+    0.439323127269745f,
+  0.261600375175476f, 0.439506113529205f, 0.261937558650970f,
+    0.439688831567764f,
+  0.262274861335754f, 0.439871311187744f, 0.262612313032150f,
+    0.440053492784500f,
+  0.262949883937836f, 0.440235435962677f, 0.263287603855133f,
+    0.440417140722275f,
+  0.263625472784042f, 0.440598547458649f, 0.263963490724564f,
+    0.440779715776443f,
+  0.264301627874374f, 0.440960645675659f, 0.264639914035797f,
+    0.441141277551651f,
+  0.264978319406509f, 0.441321671009064f, 0.265316903591156f,
+    0.441501796245575f,
+  0.265655577182770f, 0.441681683063507f, 0.265994429588318f,
+    0.441861271858215f,
+  0.266333401203156f, 0.442040622234344f, 0.266672492027283f,
+    0.442219734191895f,
+  0.267011761665344f, 0.442398548126221f, 0.267351150512695f,
+    0.442577123641968f,
+  0.267690658569336f, 0.442755430936813f, 0.268030315637589f,
+    0.442933470010757f,
+  0.268370121717453f, 0.443111270666122f, 0.268710047006607f,
+    0.443288803100586f,
+  0.269050091505051f, 0.443466067314148f, 0.269390314817429f,
+    0.443643063306808f,
+  0.269730657339096f, 0.443819820880890f, 0.270071119070053f,
+    0.443996280431747f,
+  0.270411729812622f, 0.444172531366348f, 0.270752459764481f,
+    0.444348484277725f,
+  0.271093338727951f, 0.444524168968201f, 0.271434366703033f,
+    0.444699615240097f,
+  0.271775513887405f, 0.444874793291092f, 0.272116780281067f,
+    0.445049703121185f,
+  0.272458195686340f, 0.445224374532700f, 0.272799760103226f,
+    0.445398747920990f,
+  0.273141443729401f, 0.445572882890701f, 0.273483246564865f,
+    0.445746749639511f,
+  0.273825198411942f, 0.445920348167419f, 0.274167299270630f,
+    0.446093708276749f,
+  0.274509519338608f, 0.446266770362854f, 0.274851858615875f,
+    0.446439594030380f,
+  0.275194346904755f, 0.446612149477005f, 0.275536954402924f,
+    0.446784436702728f,
+  0.275879681110382f, 0.446956485509872f, 0.276222556829453f,
+    0.447128236293793f,
+  0.276565581560135f, 0.447299748659134f, 0.276908725500107f,
+    0.447470992803574f,
+  0.277251988649368f, 0.447641968727112f, 0.277595400810242f,
+    0.447812676429749f,
+  0.277938932180405f, 0.447983115911484f, 0.278282582759857f,
+    0.448153316974640f,
+  0.278626382350922f, 0.448323249816895f, 0.278970301151276f,
+    0.448492884635925f,
+  0.279314368963242f, 0.448662281036377f, 0.279658555984497f,
+    0.448831409215927f,
+  0.280002862215042f, 0.449000298976898f, 0.280347317457199f,
+    0.449168890714645f,
+  0.280691891908646f, 0.449337244033813f, 0.281036585569382f,
+    0.449505299329758f,
+  0.281381398439407f, 0.449673116207123f, 0.281726360321045f,
+    0.449840664863586f,
+  0.282071471214294f, 0.450007945299149f, 0.282416671514511f,
+    0.450174957513809f,
+  0.282762020826340f, 0.450341701507568f, 0.283107489347458f,
+    0.450508207082748f,
+  0.283453077077866f, 0.450674414634705f, 0.283798813819885f,
+    0.450840383768082f,
+  0.284144669771194f, 0.451006084680557f, 0.284490644931793f,
+    0.451171487569809f,
+  0.284836769104004f, 0.451336652040482f, 0.285182982683182f,
+    0.451501548290253f,
+  0.285529345273972f, 0.451666176319122f, 0.285875827074051f,
+    0.451830536127090f,
+  0.286222457885742f, 0.451994657516479f, 0.286569178104401f,
+    0.452158480882645f,
+  0.286916047334671f, 0.452322036027908f, 0.287263035774231f,
+    0.452485352754593f,
+  0.287610173225403f, 0.452648371458054f, 0.287957400083542f,
+    0.452811151742935f,
+  0.288304775953293f, 0.452973634004593f, 0.288652241230011f,
+    0.453135877847672f,
+  0.288999855518341f, 0.453297853469849f, 0.289347589015961f,
+    0.453459560871124f,
+  0.289695471525192f, 0.453621000051498f, 0.290043443441391f,
+    0.453782171010971f,
+  0.290391564369202f, 0.453943043947220f, 0.290739774703979f,
+    0.454103678464890f,
+  0.291088134050369f, 0.454264044761658f, 0.291436612606049f,
+    0.454424172639847f,
+  0.291785210371017f, 0.454584002494812f, 0.292133957147598f,
+    0.454743564128876f,
+  0.292482793331146f, 0.454902857542038f, 0.292831748723984f,
+    0.455061882734299f,
+  0.293180853128433f, 0.455220639705658f, 0.293530046939850f,
+    0.455379128456116f,
+  0.293879389762878f, 0.455537378787994f, 0.294228851795197f,
+    0.455695331096649f,
+  0.294578403234482f, 0.455853015184402f, 0.294928103685379f,
+    0.456010431051254f,
+  0.295277923345566f, 0.456167578697205f, 0.295627862215042f,
+    0.456324487924576f,
+  0.295977920293808f, 0.456481099128723f, 0.296328097581863f,
+    0.456637442111969f,
+  0.296678394079208f, 0.456793516874313f, 0.297028809785843f,
+    0.456949323415756f,
+  0.297379344701767f, 0.457104891538620f, 0.297729998826981f,
+    0.457260161638260f,
+  0.298080772161484f, 0.457415163516998f, 0.298431664705276f,
+    0.457569897174835f,
+  0.298782676458359f, 0.457724362611771f, 0.299133807420731f,
+    0.457878559827805f,
+  0.299485057592392f, 0.458032488822937f, 0.299836426973343f,
+    0.458186149597168f,
+  0.300187885761261f, 0.458339542150497f, 0.300539493560791f,
+    0.458492636680603f,
+  0.300891220569611f, 0.458645492792130f, 0.301243066787720f,
+    0.458798080682755f,
+  0.301595002412796f, 0.458950400352478f, 0.301947087049484f,
+    0.459102421998978f,
+  0.302299261093140f, 0.459254205226898f, 0.302651554346085f,
+    0.459405690431595f,
+  0.303003966808319f, 0.459556937217712f, 0.303356528282166f,
+    0.459707885980606f,
+  0.303709149360657f, 0.459858566522598f, 0.304061919450760f,
+    0.460008978843689f,
+  0.304414808750153f, 0.460159152746201f, 0.304767817258835f,
+    0.460309028625488f,
+  0.305120915174484f, 0.460458606481552f, 0.305474132299423f,
+    0.460607945919037f,
+  0.305827468633652f, 0.460757017135620f, 0.306180924177170f,
+    0.460905820131302f,
+  0.306534498929977f, 0.461054325103760f, 0.306888192892075f,
+    0.461202591657639f,
+  0.307241976261139f, 0.461350560188293f, 0.307595878839493f,
+    0.461498260498047f,
+  0.307949900627136f, 0.461645722389221f, 0.308304041624069f,
+    0.461792886257172f,
+  0.308658272027969f, 0.461939752101898f, 0.309012651443481f,
+    0.462086379528046f,
+  0.309367120265961f, 0.462232738733292f, 0.309721708297729f,
+    0.462378799915314f,
+  0.310076385736465f, 0.462524622678757f, 0.310431212186813f,
+    0.462670147418976f,
+  0.310786128044128f, 0.462815403938293f, 0.311141163110733f,
+    0.462960392236710f,
+  0.311496287584305f, 0.463105112314224f, 0.311851561069489f,
+    0.463249564170837f,
+  0.312206923961639f, 0.463393747806549f, 0.312562376260757f,
+    0.463537633419037f,
+  0.312917977571487f, 0.463681250810623f, 0.313273668289185f,
+    0.463824629783630f,
+  0.313629478216171f, 0.463967710733414f, 0.313985377550125f,
+    0.464110493659973f,
+  0.314341396093369f, 0.464253038167953f, 0.314697533845901f,
+    0.464395314455032f,
+  0.315053790807724f, 0.464537292718887f, 0.315410137176514f,
+    0.464679002761841f,
+  0.315766572952271f, 0.464820444583893f, 0.316123157739639f,
+    0.464961618185043f,
+  0.316479831933975f, 0.465102523565292f, 0.316836595535278f,
+    0.465243130922318f,
+  0.317193508148193f, 0.465383470058441f, 0.317550510168076f,
+    0.465523540973663f,
+  0.317907601594925f, 0.465663343667984f, 0.318264812231064f,
+    0.465802878141403f,
+  0.318622142076492f, 0.465942144393921f, 0.318979561328888f,
+    0.466081112623215f,
+  0.319337099790573f, 0.466219812631607f, 0.319694727659225f,
+    0.466358244419098f,
+  0.320052474737167f, 0.466496407985687f, 0.320410341024399f,
+    0.466634273529053f,
+  0.320768296718597f, 0.466771900653839f, 0.321126341819763f,
+    0.466909229755402f,
+  0.321484506130219f, 0.467046260833740f, 0.321842789649963f,
+    0.467183053493500f,
+  0.322201162576675f, 0.467319577932358f, 0.322559654712677f,
+    0.467455804347992f,
+  0.322918236255646f, 0.467591762542725f, 0.323276937007904f,
+    0.467727422714233f,
+  0.323635727167130f, 0.467862844467163f, 0.323994606733322f,
+    0.467997968196869f,
+  0.324353635311127f, 0.468132823705673f, 0.324712723493576f,
+    0.468267410993576f,
+  0.325071930885315f, 0.468401730060577f, 0.325431257486343f,
+    0.468535751104355f,
+  0.325790673494339f, 0.468669503927231f, 0.326150178909302f,
+    0.468802988529205f,
+  0.326509803533554f, 0.468936175107956f, 0.326869517564774f,
+    0.469069123268127f,
+  0.327229350805283f, 0.469201773405075f, 0.327589273452759f,
+    0.469334155321121f,
+  0.327949285507202f, 0.469466239213943f, 0.328309416770935f,
+    0.469598054885864f,
+  0.328669637441635f, 0.469729602336884f, 0.329029977321625f,
+    0.469860881567001f,
+  0.329390406608582f, 0.469991862773895f, 0.329750925302505f,
+    0.470122605562210f,
+  0.330111563205719f, 0.470253020524979f, 0.330472290515900f,
+    0.470383197069168f,
+  0.330833107233047f, 0.470513075590134f, 0.331194043159485f,
+    0.470642685890198f,
+  0.331555068492889f, 0.470772027969360f, 0.331916213035584f,
+    0.470901101827621f,
+  0.332277417182922f, 0.471029877662659f, 0.332638740539551f,
+    0.471158385276794f,
+  0.333000183105469f, 0.471286594867706f, 0.333361685276031f,
+    0.471414536237717f,
+  0.333723306655884f, 0.471542209386826f, 0.334085017442703f,
+    0.471669614315033f,
+  0.334446847438812f, 0.471796721220016f, 0.334808766841888f,
+    0.471923559904099f,
+  0.335170775651932f, 0.472050130367279f, 0.335532873868942f,
+    0.472176402807236f,
+  0.335895091295242f, 0.472302407026291f, 0.336257368326187f,
+    0.472428143024445f,
+  0.336619764566422f, 0.472553610801697f, 0.336982280015945f,
+    0.472678780555725f,
+  0.337344855070114f, 0.472803652286530f, 0.337707549333572f,
+    0.472928285598755f,
+  0.338070303201675f, 0.473052620887756f, 0.338433176279068f,
+    0.473176687955856f,
+  0.338796168565750f, 0.473300457000732f, 0.339159220457077f,
+    0.473423957824707f,
+  0.339522391557693f, 0.473547190427780f, 0.339885622262955f,
+    0.473670125007629f,
+  0.340248972177505f, 0.473792791366577f, 0.340612411499023f,
+    0.473915189504623f,
+  0.340975970029831f, 0.474037289619446f, 0.341339588165283f,
+    0.474159121513367f,
+  0.341703325510025f, 0.474280685186386f, 0.342067122459412f,
+    0.474401950836182f,
+  0.342431038618088f, 0.474522948265076f, 0.342795044183731f,
+    0.474643647670746f,
+  0.343159139156342f, 0.474764078855515f, 0.343523323535919f,
+    0.474884241819382f,
+  0.343887597322464f, 0.475004136562347f, 0.344251960515976f,
+    0.475123733282089f,
+  0.344616413116455f, 0.475243031978607f, 0.344980984926224f,
+    0.475362062454224f,
+  0.345345616340637f, 0.475480824708939f, 0.345710366964340f,
+    0.475599318742752f,
+  0.346075177192688f, 0.475717514753342f, 0.346440106630325f,
+    0.475835442543030f,
+  0.346805095672607f, 0.475953072309494f, 0.347170203924179f,
+    0.476070433855057f,
+  0.347535371780396f, 0.476187497377396f, 0.347900658845901f,
+    0.476304292678833f,
+  0.348266035318375f, 0.476420819759369f, 0.348631471395493f,
+    0.476537048816681f,
+  0.348997026681900f, 0.476653009653091f, 0.349362671375275f,
+    0.476768702268600f,
+  0.349728375673294f, 0.476884096860886f, 0.350094199180603f,
+    0.476999223232269f,
+  0.350460082292557f, 0.477114051580429f, 0.350826084613800f,
+    0.477228611707687f,
+  0.351192146539688f, 0.477342873811722f, 0.351558297872543f,
+    0.477456867694855f,
+  0.351924568414688f, 0.477570593357086f, 0.352290898561478f,
+    0.477684020996094f,
+  0.352657318115234f, 0.477797180414200f, 0.353023827075958f,
+    0.477910041809082f,
+  0.353390425443649f, 0.478022634983063f, 0.353757113218308f,
+    0.478134930133820f,
+  0.354123860597610f, 0.478246957063675f, 0.354490727186203f,
+    0.478358715772629f,
+  0.354857653379440f, 0.478470176458359f, 0.355224698781967f,
+    0.478581339120865f,
+  0.355591803789139f, 0.478692263364792f, 0.355958998203278f,
+    0.478802859783173f,
+  0.356326282024384f, 0.478913217782974f, 0.356693625450134f,
+    0.479023247957230f,
+  0.357061088085175f, 0.479133039712906f, 0.357428610324860f,
+    0.479242533445358f,
+  0.357796221971512f, 0.479351729154587f, 0.358163923025131f,
+    0.479460656642914f,
+  0.358531713485718f, 0.479569315910339f, 0.358899593353271f,
+    0.479677677154541f,
+  0.359267532825470f, 0.479785770177841f, 0.359635561704636f,
+    0.479893565177917f,
+  0.360003679990768f, 0.480001062154770f, 0.360371887683868f,
+    0.480108320713043f,
+  0.360740154981613f, 0.480215251445770f, 0.361108511686325f,
+    0.480321943759918f,
+  0.361476957798004f, 0.480428308248520f, 0.361845493316650f,
+    0.480534434318542f,
+  0.362214088439941f, 0.480640232563019f, 0.362582772970200f,
+    0.480745792388916f,
+  0.362951546907425f, 0.480851024389267f, 0.363320380449295f,
+    0.480956017971039f,
+  0.363689333200455f, 0.481060713529587f, 0.364058345556259f,
+    0.481165111064911f,
+  0.364427417516708f, 0.481269240379334f, 0.364796578884125f,
+    0.481373071670532f,
+  0.365165829658508f, 0.481476634740829f, 0.365535169839859f,
+    0.481579899787903f,
+  0.365904569625854f, 0.481682896614075f, 0.366274058818817f,
+    0.481785595417023f,
+  0.366643607616425f, 0.481888025999069f, 0.367013275623322f,
+    0.481990188360214f,
+  0.367382973432541f, 0.482092022895813f, 0.367752790451050f,
+    0.482193619012833f,
+  0.368122667074203f, 0.482294887304306f, 0.368492603302002f,
+    0.482395917177200f,
+  0.368862658739090f, 0.482496619224548f, 0.369232743978500f,
+    0.482597053050995f,
+  0.369602948427200f, 0.482697218656540f, 0.369973212480545f,
+    0.482797086238861f,
+  0.370343536138535f, 0.482896685600281f, 0.370713949203491f,
+    0.482995986938477f,
+  0.371084451675415f, 0.483094990253448f, 0.371455013751984f,
+    0.483193725347519f,
+  0.371825665235519f, 0.483292192220688f, 0.372196376323700f,
+    0.483390361070633f,
+  0.372567176818848f, 0.483488231897354f, 0.372938036918640f,
+    0.483585834503174f,
+  0.373308986425400f, 0.483683139085770f, 0.373679995536804f,
+    0.483780175447464f,
+  0.374051094055176f, 0.483876913785934f, 0.374422252178192f,
+    0.483973383903503f,
+  0.374793499708176f, 0.484069555997849f, 0.375164806842804f,
+    0.484165430068970f,
+  0.375536203384399f, 0.484261035919189f, 0.375907659530640f,
+    0.484356373548508f,
+  0.376279205083847f, 0.484451413154602f, 0.376650810241699f,
+    0.484546154737473f,
+  0.377022475004196f, 0.484640628099442f, 0.377394229173660f,
+    0.484734803438187f,
+  0.377766042947769f, 0.484828680753708f, 0.378137946128845f,
+    0.484922289848328f,
+  0.378509908914566f, 0.485015630722046f, 0.378881961107254f,
+    0.485108673572540f,
+  0.379254043102264f, 0.485201418399811f, 0.379626244306564f,
+    0.485293895006180f,
+  0.379998475313187f, 0.485386073589325f, 0.380370795726776f,
+    0.485477954149246f,
+  0.380743205547333f, 0.485569566488266f, 0.381115674972534f,
+    0.485660910606384f,
+  0.381488204002380f, 0.485751956701279f, 0.381860792636871f,
+    0.485842704772949f,
+  0.382233470678329f, 0.485933154821396f, 0.382606208324432f,
+    0.486023366451263f,
+  0.382979035377502f, 0.486113250255585f, 0.383351892232895f,
+    0.486202865839005f,
+  0.383724838495255f, 0.486292183399200f, 0.384097874164581f,
+    0.486381232738495f,
+  0.384470939636230f, 0.486469984054565f, 0.384844094514847f,
+    0.486558437347412f,
+  0.385217308998108f, 0.486646622419357f, 0.385590612888336f,
+    0.486734509468079f,
+  0.385963946580887f, 0.486822128295898f, 0.386337369680405f,
+    0.486909449100494f,
+  0.386710882186890f, 0.486996471881866f, 0.387084424495697f,
+    0.487083226442337f,
+  0.387458056211472f, 0.487169682979584f, 0.387831717729568f,
+    0.487255871295929f,
+  0.388205498456955f, 0.487341761589050f, 0.388579308986664f,
+    0.487427353858948f,
+  0.388953179121017f, 0.487512677907944f, 0.389327138662338f,
+    0.487597703933716f,
+  0.389701157808304f, 0.487682431936264f, 0.390075236558914f,
+    0.487766891717911f,
+  0.390449374914169f, 0.487851053476334f, 0.390823602676392f,
+    0.487934947013855f,
+  0.391197860240936f, 0.488018542528152f, 0.391572207212448f,
+    0.488101840019226f,
+  0.391946613788605f, 0.488184869289398f, 0.392321079969406f,
+    0.488267600536346f,
+  0.392695605754852f, 0.488350033760071f, 0.393070191144943f,
+    0.488432198762894f,
+  0.393444836139679f, 0.488514065742493f, 0.393819570541382f,
+    0.488595664501190f,
+  0.394194334745407f, 0.488676935434341f, 0.394569188356400f,
+    0.488757967948914f,
+  0.394944071769714f, 0.488838672637939f, 0.395319044589996f,
+    0.488919109106064f,
+  0.395694077014923f, 0.488999247550964f, 0.396069169044495f,
+    0.489079117774963f,
+  0.396444320678711f, 0.489158689975739f, 0.396819531917572f,
+    0.489237964153290f,
+  0.397194802761078f, 0.489316970109940f, 0.397570133209229f,
+    0.489395678043365f,
+  0.397945523262024f, 0.489474087953568f, 0.398320972919464f,
+    0.489552229642868f,
+  0.398696482181549f, 0.489630073308945f, 0.399072051048279f,
+    0.489707618951797f,
+  0.399447679519653f, 0.489784896373749f, 0.399823367595673f,
+    0.489861875772476f,
+  0.400199115276337f, 0.489938557147980f, 0.400574922561646f,
+    0.490014940500259f,
+  0.400950789451599f, 0.490091055631638f, 0.401326715946198f,
+    0.490166902542114f,
+  0.401702702045441f, 0.490242421627045f, 0.402078747749329f,
+    0.490317672491074f,
+  0.402454853057861f, 0.490392625331879f, 0.402830988168716f,
+    0.490467309951782f,
+  0.403207212686539f, 0.490541696548462f, 0.403583467006683f,
+    0.490615785121918f,
+  0.403959810733795f, 0.490689605474472f, 0.404336184263229f,
+    0.490763127803802f,
+  0.404712617397308f, 0.490836352109909f, 0.405089110136032f,
+    0.490909278392792f,
+  0.405465662479401f, 0.490981936454773f, 0.405842274427414f,
+    0.491054296493530f,
+  0.406218945980072f, 0.491126358509064f, 0.406595647335052f,
+    0.491198152303696f,
+  0.406972438097000f, 0.491269648075104f, 0.407349258661270f,
+    0.491340845823288f,
+  0.407726138830185f, 0.491411775350571f, 0.408103078603745f,
+    0.491482406854630f,
+  0.408480048179626f, 0.491552740335464f, 0.408857107162476f,
+    0.491622805595398f,
+  0.409234195947647f, 0.491692543029785f, 0.409611344337463f,
+    0.491762012243271f,
+  0.409988552331924f, 0.491831213235855f, 0.410365819931030f,
+    0.491900116205215f,
+  0.410743117332459f, 0.491968721151352f, 0.411120474338531f,
+    0.492037028074265f,
+  0.411497890949249f, 0.492105036973953f, 0.411875367164612f,
+    0.492172777652740f,
+  0.412252873182297f, 0.492240220308304f, 0.412630438804626f,
+    0.492307394742966f,
+  0.413008064031601f, 0.492374241352081f, 0.413385748863220f,
+    0.492440819740295f,
+  0.413763463497162f, 0.492507129907608f, 0.414141237735748f,
+    0.492573112249374f,
+  0.414519041776657f, 0.492638826370239f, 0.414896935224533f,
+    0.492704242467880f,
+  0.415274858474731f, 0.492769360542297f, 0.415652841329575f,
+    0.492834210395813f,
+  0.416030853986740f, 0.492898762226105f, 0.416408926248550f,
+    0.492963016033173f,
+  0.416787058115005f, 0.493026971817017f, 0.417165219783783f,
+    0.493090659379959f,
+  0.417543441057205f, 0.493154048919678f, 0.417921721935272f,
+    0.493217140436172f,
+  0.418300032615662f, 0.493279963731766f, 0.418678402900696f,
+    0.493342459201813f,
+  0.419056802988052f, 0.493404686450958f, 0.419435262680054f,
+    0.493466645479202f,
+  0.419813781976700f, 0.493528276681900f, 0.420192331075668f,
+    0.493589639663696f,
+  0.420570939779282f, 0.493650704622269f, 0.420949578285217f,
+    0.493711471557617f,
+  0.421328276395798f, 0.493771970272064f, 0.421707004308701f,
+    0.493832170963287f,
+  0.422085791826248f, 0.493892073631287f, 0.422464638948441f,
+    0.493951678276062f,
+  0.422843515872955f, 0.494011014699936f, 0.423222452402115f,
+    0.494070053100586f,
+  0.423601418733597f, 0.494128793478012f, 0.423980414867401f,
+    0.494187235832214f,
+  0.424359470605850f, 0.494245409965515f, 0.424738585948944f,
+    0.494303256273270f,
+  0.425117731094360f, 0.494360834360123f, 0.425496935844421f,
+    0.494418144226074f,
+  0.425876170396805f, 0.494475126266479f, 0.426255434751511f,
+    0.494531840085983f,
+  0.426634758710861f, 0.494588255882263f, 0.427014142274857f,
+    0.494644373655319f,
+  0.427393525838852f, 0.494700223207474f, 0.427772998809814f,
+    0.494755744934082f,
+  0.428152471780777f, 0.494810998439789f, 0.428532034158707f,
+    0.494865983724594f,
+  0.428911596536636f, 0.494920641183853f, 0.429291218519211f,
+    0.494975030422211f,
+  0.429670870304108f, 0.495029091835022f, 0.430050581693649f,
+    0.495082914829254f,
+  0.430430322885513f, 0.495136409997940f, 0.430810123682022f,
+    0.495189607143402f,
+  0.431189924478531f, 0.495242536067963f, 0.431569814682007f,
+    0.495295166969299f,
+  0.431949704885483f, 0.495347499847412f, 0.432329654693604f,
+    0.495399564504623f,
+  0.432709634304047f, 0.495451331138611f, 0.433089673519135f,
+    0.495502769947052f,
+  0.433469742536545f, 0.495553970336914f, 0.433849841356277f,
+    0.495604842901230f,
+  0.434229999780655f, 0.495655417442322f, 0.434610158205032f,
+    0.495705723762512f,
+  0.434990376234055f, 0.495755732059479f, 0.435370653867722f,
+    0.495805442333221f,
+  0.435750931501389f, 0.495854884386063f, 0.436131268739700f,
+    0.495903998613358f,
+  0.436511665582657f, 0.495952844619751f, 0.436892062425613f,
+    0.496001392602921f,
+  0.437272518873215f, 0.496049642562866f, 0.437653005123138f,
+    0.496097624301910f,
+  0.438033521175385f, 0.496145308017731f, 0.438414067029953f,
+    0.496192663908005f,
+  0.438794672489166f, 0.496239781379700f, 0.439175277948380f,
+    0.496286571025848f,
+  0.439555943012238f, 0.496333062648773f, 0.439936667680740f,
+    0.496379286050797f,
+  0.440317392349243f, 0.496425211429596f, 0.440698176622391f,
+    0.496470838785172f,
+  0.441078960895538f, 0.496516168117523f, 0.441459804773331f,
+    0.496561229228973f,
+  0.441840678453445f, 0.496605962514877f, 0.442221581935883f,
+    0.496650427579880f,
+  0.442602545022964f, 0.496694594621658f, 0.442983508110046f,
+    0.496738493442535f,
+  0.443364530801773f, 0.496782064437866f, 0.443745553493500f,
+    0.496825367212296f,
+  0.444126635789871f, 0.496868371963501f, 0.444507747888565f,
+    0.496911078691483f,
+  0.444888889789581f, 0.496953487396240f, 0.445270061492920f,
+    0.496995598077774f,
+  0.445651292800903f, 0.497037440538406f, 0.446032524108887f,
+    0.497078984975815f,
+  0.446413785219193f, 0.497120231389999f, 0.446795076131821f,
+    0.497161179780960f,
+  0.447176426649094f, 0.497201830148697f, 0.447557777166367f,
+    0.497242212295532f,
+  0.447939187288284f, 0.497282296419144f, 0.448320597410202f,
+    0.497322082519531f,
+  0.448702067136765f, 0.497361570596695f, 0.449083566665649f,
+    0.497400760650635f,
+  0.449465066194534f, 0.497439652681351f, 0.449846625328064f,
+    0.497478276491165f,
+  0.450228184461594f, 0.497516602277756f, 0.450609803199768f,
+    0.497554630041122f,
+  0.450991421937943f, 0.497592359781265f, 0.451373100280762f,
+    0.497629791498184f,
+  0.451754778623581f, 0.497666954994202f, 0.452136516571045f,
+    0.497703820466995f,
+  0.452518254518509f, 0.497740387916565f, 0.452900022268295f,
+    0.497776657342911f,
+  0.453281819820404f, 0.497812628746033f, 0.453663676977158f,
+    0.497848302125931f,
+  0.454045534133911f, 0.497883707284927f, 0.454427421092987f,
+    0.497918814420700f,
+  0.454809308052063f, 0.497953623533249f, 0.455191254615784f,
+    0.497988134622574f,
+  0.455573230981827f, 0.498022347688675f, 0.455955207347870f,
+    0.498056292533875f,
+  0.456337243318558f, 0.498089909553528f, 0.456719279289246f,
+    0.498123258352280f,
+  0.457101345062256f, 0.498156309127808f, 0.457483440637589f,
+    0.498189061880112f,
+  0.457865566015244f, 0.498221516609192f, 0.458247691392899f,
+    0.498253703117371f,
+  0.458629876375198f, 0.498285561800003f, 0.459012061357498f,
+    0.498317152261734f,
+  0.459394276142120f, 0.498348444700241f, 0.459776520729065f,
+    0.498379439115524f,
+  0.460158795118332f, 0.498410135507584f, 0.460541069507599f,
+    0.498440563678741f,
+  0.460923373699188f, 0.498470664024353f, 0.461305707693100f,
+    0.498500496149063f,
+  0.461688071489334f, 0.498530030250549f, 0.462070435285568f,
+    0.498559266328812f,
+  0.462452858686447f, 0.498588204383850f, 0.462835282087326f,
+    0.498616874217987f,
+  0.463217705488205f, 0.498645216226578f, 0.463600188493729f,
+    0.498673290014267f,
+  0.463982671499252f, 0.498701065778732f, 0.464365184307098f,
+    0.498728543519974f,
+  0.464747726917267f, 0.498755723237991f, 0.465130269527435f,
+    0.498782604932785f,
+  0.465512841939926f, 0.498809218406677f, 0.465895414352417f,
+    0.498835533857346f,
+  0.466278046369553f, 0.498861521482468f, 0.466660678386688f,
+    0.498887240886688f,
+  0.467043310403824f, 0.498912662267685f, 0.467426002025604f,
+    0.498937815427780f,
+  0.467808693647385f, 0.498962640762329f, 0.468191385269165f,
+    0.498987197875977f,
+  0.468574106693268f, 0.499011427164078f, 0.468956857919693f,
+    0.499035388231277f,
+  0.469339638948441f, 0.499059051275253f, 0.469722419977188f,
+    0.499082416296005f,
+  0.470105201005936f, 0.499105513095856f, 0.470488041639328f,
+    0.499128282070160f,
+  0.470870882272720f, 0.499150782823563f, 0.471253722906113f,
+    0.499172955751419f,
+  0.471636593341827f, 0.499194860458374f, 0.472019463777542f,
+    0.499216467142105f,
+  0.472402364015579f, 0.499237775802612f, 0.472785294055939f,
+    0.499258816242218f,
+  0.473168224096298f, 0.499279528856277f, 0.473551183938980f,
+    0.499299973249435f,
+  0.473934143781662f, 0.499320119619370f, 0.474317133426666f,
+    0.499339967966080f,
+  0.474700123071671f, 0.499359518289566f, 0.475083142518997f,
+    0.499378770589828f,
+  0.475466161966324f, 0.499397724866867f, 0.475849211215973f,
+    0.499416410923004f,
+  0.476232260465622f, 0.499434769153595f, 0.476615339517593f,
+    0.499452859163284f,
+  0.476998418569565f, 0.499470651149750f, 0.477381497621536f,
+    0.499488145112991f,
+  0.477764606475830f, 0.499505341053009f, 0.478147745132446f,
+    0.499522238969803f,
+  0.478530883789063f, 0.499538868665695f, 0.478914022445679f,
+    0.499555170536041f,
+  0.479297190904617f, 0.499571204185486f, 0.479680359363556f,
+    0.499586939811707f,
+  0.480063527822495f, 0.499602377414703f, 0.480446726083755f,
+    0.499617516994476f,
+  0.480829954147339f, 0.499632388353348f, 0.481213152408600f,
+    0.499646931886673f,
+  0.481596380472183f, 0.499661177396774f, 0.481979638338089f,
+    0.499675154685974f,
+  0.482362866401672f, 0.499688833951950f, 0.482746154069901f,
+    0.499702215194702f,
+  0.483129411935806f, 0.499715298414230f, 0.483512699604034f,
+    0.499728083610535f,
+  0.483895987272263f, 0.499740600585938f, 0.484279274940491f,
+    0.499752789735794f,
+  0.484662592411041f, 0.499764710664749f, 0.485045909881592f,
+    0.499776333570480f,
+  0.485429257154465f, 0.499787658452988f, 0.485812574625015f,
+    0.499798685312271f,
+  0.486195921897888f, 0.499809414148331f, 0.486579269170761f,
+    0.499819844961166f,
+  0.486962646245956f, 0.499830007553101f, 0.487346023321152f,
+    0.499839842319489f,
+  0.487729400396347f, 0.499849408864975f, 0.488112777471542f,
+    0.499858677387238f,
+  0.488496154546738f, 0.499867647886276f, 0.488879561424255f,
+    0.499876320362091f,
+  0.489262968301773f, 0.499884694814682f, 0.489646375179291f,
+    0.499892801046371f,
+  0.490029782056808f, 0.499900579452515f, 0.490413218736649f,
+    0.499908089637756f,
+  0.490796625614166f, 0.499915301799774f, 0.491180062294006f,
+    0.499922215938568f,
+  0.491563498973846f, 0.499928832054138f, 0.491946935653687f,
+    0.499935150146484f,
+  0.492330402135849f, 0.499941170215607f, 0.492713838815689f,
+    0.499946922063828f,
+  0.493097305297852f, 0.499952346086502f, 0.493480771780014f,
+    0.499957501888275f,
+  0.493864238262177f, 0.499962359666824f, 0.494247704744339f,
+    0.499966919422150f,
+  0.494631171226501f, 0.499971181154251f, 0.495014637708664f,
+    0.499975144863129f,
+  0.495398133993149f, 0.499978810548782f, 0.495781600475311f,
+    0.499982208013535f,
+  0.496165096759796f, 0.499985307455063f, 0.496548563241959f,
+    0.499988079071045f,
+  0.496932059526443f, 0.499990582466125f, 0.497315555810928f,
+    0.499992787837982f,
+  0.497699022293091f, 0.499994695186615f, 0.498082518577576f,
+    0.499996334314346f,
+  0.498466014862061f, 0.499997645616531f, 0.498849511146545f,
+    0.499998688697815f,
+  0.499233007431030f, 0.499999403953552f, 0.499616503715515f,
+    0.499999850988388f,
+};
+
+
+/**    
+* \par   
+* Generation of realCoefB array:    
+* \par   
+* n = 4096    
+* <pre>for (i = 0; i < n; i++)    
+* {    
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));    
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));    
+*  } </pre>    
+*    
+*/
+static const float32_t realCoefB[8192] = {
+  0.500000000000000f, 0.500000000000000f, 0.500383496284485f,
+    0.499999850988388f,
+  0.500766992568970f, 0.499999403953552f, 0.501150488853455f,
+    0.499998688697815f,
+  0.501533985137939f, 0.499997645616531f, 0.501917481422424f,
+    0.499996334314346f,
+  0.502300977706909f, 0.499994695186615f, 0.502684473991394f,
+    0.499992787837982f,
+  0.503067970275879f, 0.499990582466125f, 0.503451406955719f,
+    0.499988079071045f,
+  0.503834903240204f, 0.499985307455063f, 0.504218399524689f,
+    0.499982208013535f,
+  0.504601895809174f, 0.499978810548782f, 0.504985332489014f,
+    0.499975144863129f,
+  0.505368828773499f, 0.499971181154251f, 0.505752325057983f,
+    0.499966919422150f,
+  0.506135761737823f, 0.499962359666824f, 0.506519258022308f,
+    0.499957501888275f,
+  0.506902694702148f, 0.499952346086502f, 0.507286131381989f,
+    0.499946922063828f,
+  0.507669627666473f, 0.499941170215607f, 0.508053064346313f,
+    0.499935150146484f,
+  0.508436501026154f, 0.499928832054138f, 0.508819937705994f,
+    0.499922215938568f,
+  0.509203374385834f, 0.499915301799774f, 0.509586811065674f,
+    0.499908089637756f,
+  0.509970188140869f, 0.499900579452515f, 0.510353624820709f,
+    0.499892801046371f,
+  0.510737061500549f, 0.499884694814682f, 0.511120438575745f,
+    0.499876320362091f,
+  0.511503815650940f, 0.499867647886276f, 0.511887252330780f,
+    0.499858677387238f,
+  0.512270629405975f, 0.499849408864975f, 0.512654006481171f,
+    0.499839842319489f,
+  0.513037383556366f, 0.499830007553101f, 0.513420701026917f,
+    0.499819844961166f,
+  0.513804078102112f, 0.499809414148331f, 0.514187395572662f,
+    0.499798685312271f,
+  0.514570772647858f, 0.499787658452988f, 0.514954090118408f,
+    0.499776333570480f,
+  0.515337407588959f, 0.499764710664749f, 0.515720725059509f,
+    0.499752789735794f,
+  0.516103982925415f, 0.499740600585938f, 0.516487300395966f,
+    0.499728083610535f,
+  0.516870558261871f, 0.499715298414230f, 0.517253875732422f,
+    0.499702215194702f,
+  0.517637133598328f, 0.499688833951950f, 0.518020391464233f,
+    0.499675154685974f,
+  0.518403589725494f, 0.499661177396774f, 0.518786847591400f,
+    0.499646931886673f,
+  0.519170045852661f, 0.499632388353348f, 0.519553244113922f,
+    0.499617516994476f,
+  0.519936442375183f, 0.499602377414703f, 0.520319640636444f,
+    0.499586939811707f,
+  0.520702838897705f, 0.499571204185486f, 0.521085977554321f,
+    0.499555170536041f,
+  0.521469116210938f, 0.499538868665695f, 0.521852254867554f,
+    0.499522238969803f,
+  0.522235393524170f, 0.499505341053009f, 0.522618472576141f,
+    0.499488145112991f,
+  0.523001611232758f, 0.499470651149750f, 0.523384690284729f,
+    0.499452859163284f,
+  0.523767769336700f, 0.499434769153595f, 0.524150788784027f,
+    0.499416410923004f,
+  0.524533808231354f, 0.499397724866867f, 0.524916887283325f,
+    0.499378770589828f,
+  0.525299847126007f, 0.499359518289566f, 0.525682866573334f,
+    0.499339967966080f,
+  0.526065826416016f, 0.499320119619370f, 0.526448845863342f,
+    0.499299973249435f,
+  0.526831746101379f, 0.499279528856277f, 0.527214705944061f,
+    0.499258816242218f,
+  0.527597606182098f, 0.499237775802612f, 0.527980506420136f,
+    0.499216467142105f,
+  0.528363406658173f, 0.499194860458374f, 0.528746306896210f,
+    0.499172955751419f,
+  0.529129147529602f, 0.499150782823563f, 0.529511988162994f,
+    0.499128282070160f,
+  0.529894769191742f, 0.499105513095856f, 0.530277609825134f,
+    0.499082416296005f,
+  0.530660390853882f, 0.499059051275253f, 0.531043112277985f,
+    0.499035388231277f,
+  0.531425893306732f, 0.499011427164078f, 0.531808614730835f,
+    0.498987197875977f,
+  0.532191336154938f, 0.498962640762329f, 0.532573997974396f,
+    0.498937815427780f,
+  0.532956659793854f, 0.498912662267685f, 0.533339321613312f,
+    0.498887240886688f,
+  0.533721983432770f, 0.498861521482468f, 0.534104585647583f,
+    0.498835533857346f,
+  0.534487187862396f, 0.498809218406677f, 0.534869730472565f,
+    0.498782604932785f,
+  0.535252273082733f, 0.498755723237991f, 0.535634815692902f,
+    0.498728543519974f,
+  0.536017298698425f, 0.498701065778732f, 0.536399841308594f,
+    0.498673290014267f,
+  0.536782264709473f, 0.498645216226578f, 0.537164747714996f,
+    0.498616874217987f,
+  0.537547171115875f, 0.498588204383850f, 0.537929534912109f,
+    0.498559266328812f,
+  0.538311958312988f, 0.498530030250549f, 0.538694262504578f,
+    0.498500496149063f,
+  0.539076626300812f, 0.498470664024353f, 0.539458930492401f,
+    0.498440563678741f,
+  0.539841234683990f, 0.498410135507584f, 0.540223479270935f,
+    0.498379439115524f,
+  0.540605723857880f, 0.498348444700241f, 0.540987968444824f,
+    0.498317152261734f,
+  0.541370153427124f, 0.498285561800003f, 0.541752278804779f,
+    0.498253703117371f,
+  0.542134463787079f, 0.498221516609192f, 0.542516589164734f,
+    0.498189061880112f,
+  0.542898654937744f, 0.498156309127808f, 0.543280720710754f,
+    0.498123258352280f,
+  0.543662786483765f, 0.498089909553528f, 0.544044792652130f,
+    0.498056292533875f,
+  0.544426798820496f, 0.498022347688675f, 0.544808745384216f,
+    0.497988134622574f,
+  0.545190691947937f, 0.497953623533249f, 0.545572578907013f,
+    0.497918814420700f,
+  0.545954465866089f, 0.497883707284927f, 0.546336352825165f,
+    0.497848302125931f,
+  0.546718180179596f, 0.497812628746033f, 0.547099947929382f,
+    0.497776657342911f,
+  0.547481775283813f, 0.497740387916565f, 0.547863483428955f,
+    0.497703820466995f,
+  0.548245191574097f, 0.497666954994202f, 0.548626899719238f,
+    0.497629791498184f,
+  0.549008548259735f, 0.497592359781265f, 0.549390196800232f,
+    0.497554630041122f,
+  0.549771785736084f, 0.497516602277756f, 0.550153374671936f,
+    0.497478276491165f,
+  0.550534904003143f, 0.497439652681351f, 0.550916433334351f,
+    0.497400760650635f,
+  0.551297962665558f, 0.497361570596695f, 0.551679372787476f,
+    0.497322082519531f,
+  0.552060842514038f, 0.497282296419144f, 0.552442193031311f,
+    0.497242212295532f,
+  0.552823603153229f, 0.497201830148697f, 0.553204894065857f,
+    0.497161179780960f,
+  0.553586184978485f, 0.497120231389999f, 0.553967475891113f,
+    0.497078984975815f,
+  0.554348707199097f, 0.497037440538406f, 0.554729938507080f,
+    0.496995598077774f,
+  0.555111110210419f, 0.496953487396240f, 0.555492222309113f,
+    0.496911078691483f,
+  0.555873334407806f, 0.496868371963501f, 0.556254446506500f,
+    0.496825367212296f,
+  0.556635499000549f, 0.496782064437866f, 0.557016491889954f,
+    0.496738493442535f,
+  0.557397484779358f, 0.496694594621658f, 0.557778418064117f,
+    0.496650427579880f,
+  0.558159291744232f, 0.496605962514877f, 0.558540165424347f,
+    0.496561229228973f,
+  0.558921039104462f, 0.496516168117523f, 0.559301853179932f,
+    0.496470838785172f,
+  0.559682607650757f, 0.496425211429596f, 0.560063362121582f,
+    0.496379286050797f,
+  0.560444056987762f, 0.496333062648773f, 0.560824692249298f,
+    0.496286571025848f,
+  0.561205327510834f, 0.496239781379700f, 0.561585903167725f,
+    0.496192663908005f,
+  0.561966478824615f, 0.496145308017731f, 0.562346994876862f,
+    0.496097624301910f,
+  0.562727510929108f, 0.496049642562866f, 0.563107967376709f,
+    0.496001392602921f,
+  0.563488364219666f, 0.495952844619751f, 0.563868701457977f,
+    0.495903998613358f,
+  0.564249038696289f, 0.495854884386063f, 0.564629375934601f,
+    0.495805442333221f,
+  0.565009593963623f, 0.495755732059479f, 0.565389811992645f,
+    0.495705723762512f,
+  0.565770030021667f, 0.495655417442322f, 0.566150128841400f,
+    0.495604842901230f,
+  0.566530287265778f, 0.495553970336914f, 0.566910326480865f,
+    0.495502769947052f,
+  0.567290365695953f, 0.495451331138611f, 0.567670345306396f,
+    0.495399564504623f,
+  0.568050265312195f, 0.495347499847412f, 0.568430185317993f,
+    0.495295166969299f,
+  0.568810045719147f, 0.495242536067963f, 0.569189906120300f,
+    0.495189607143402f,
+  0.569569647312164f, 0.495136409997940f, 0.569949388504028f,
+    0.495082914829254f,
+  0.570329129695892f, 0.495029091835022f, 0.570708811283112f,
+    0.494975030422211f,
+  0.571088373661041f, 0.494920641183853f, 0.571467995643616f,
+    0.494865983724594f,
+  0.571847498416901f, 0.494810998439789f, 0.572227001190186f,
+    0.494755744934082f,
+  0.572606444358826f, 0.494700223207474f, 0.572985887527466f,
+    0.494644373655319f,
+  0.573365211486816f, 0.494588255882263f, 0.573744535446167f,
+    0.494531840085983f,
+  0.574123859405518f, 0.494475126266479f, 0.574503064155579f,
+    0.494418144226074f,
+  0.574882268905640f, 0.494360834360123f, 0.575261414051056f,
+    0.494303256273270f,
+  0.575640499591827f, 0.494245409965515f, 0.576019585132599f,
+    0.494187235832214f,
+  0.576398611068726f, 0.494128793478012f, 0.576777577400208f,
+    0.494070053100586f,
+  0.577156484127045f, 0.494011014699936f, 0.577535390853882f,
+    0.493951678276062f,
+  0.577914178371429f, 0.493892073631287f, 0.578292965888977f,
+    0.493832170963287f,
+  0.578671753406525f, 0.493771970272064f, 0.579050421714783f,
+    0.493711471557617f,
+  0.579429090023041f, 0.493650704622269f, 0.579807698726654f,
+    0.493589639663696f,
+  0.580186247825623f, 0.493528276681900f, 0.580564737319946f,
+    0.493466645479202f,
+  0.580943167209625f, 0.493404686450958f, 0.581321597099304f,
+    0.493342459201813f,
+  0.581699967384338f, 0.493279963731766f, 0.582078278064728f,
+    0.493217140436172f,
+  0.582456588745117f, 0.493154048919678f, 0.582834780216217f,
+    0.493090659379959f,
+  0.583212971687317f, 0.493026971817017f, 0.583591103553772f,
+    0.492963016033173f,
+  0.583969175815582f, 0.492898762226105f, 0.584347188472748f,
+    0.492834210395813f,
+  0.584725141525269f, 0.492769360542297f, 0.585103094577789f,
+    0.492704242467880f,
+  0.585480928421021f, 0.492638826370239f, 0.585858762264252f,
+    0.492573112249374f,
+  0.586236536502838f, 0.492507129907608f, 0.586614251136780f,
+    0.492440819740295f,
+  0.586991965770721f, 0.492374241352081f, 0.587369561195374f,
+    0.492307394742966f,
+  0.587747097015381f, 0.492240220308304f, 0.588124632835388f,
+    0.492172777652740f,
+  0.588502109050751f, 0.492105036973953f, 0.588879525661469f,
+    0.492037028074265f,
+  0.589256882667542f, 0.491968721151352f, 0.589634180068970f,
+    0.491900116205215f,
+  0.590011477470398f, 0.491831213235855f, 0.590388655662537f,
+    0.491762012243271f,
+  0.590765833854675f, 0.491692543029785f, 0.591142892837524f,
+    0.491622805595398f,
+  0.591519951820374f, 0.491552740335464f, 0.591896951198578f,
+    0.491482406854630f,
+  0.592273890972137f, 0.491411775350571f, 0.592650771141052f,
+    0.491340845823288f,
+  0.593027591705322f, 0.491269648075104f, 0.593404352664948f,
+    0.491198152303696f,
+  0.593781054019928f, 0.491126358509064f, 0.594157755374908f,
+    0.491054296493530f,
+  0.594534337520599f, 0.490981936454773f, 0.594910860061646f,
+    0.490909278392792f,
+  0.595287382602692f, 0.490836352109909f, 0.595663845539093f,
+    0.490763127803802f,
+  0.596040189266205f, 0.490689605474472f, 0.596416532993317f,
+    0.490615785121918f,
+  0.596792817115784f, 0.490541696548462f, 0.597168982028961f,
+    0.490467309951782f,
+  0.597545146942139f, 0.490392625331879f, 0.597921252250671f,
+    0.490317672491074f,
+  0.598297297954559f, 0.490242421627045f, 0.598673284053802f,
+    0.490166902542114f,
+  0.599049210548401f, 0.490091055631638f, 0.599425077438354f,
+    0.490014940500259f,
+  0.599800884723663f, 0.489938557147980f, 0.600176632404327f,
+    0.489861875772476f,
+  0.600552320480347f, 0.489784896373749f, 0.600927948951721f,
+    0.489707618951797f,
+  0.601303517818451f, 0.489630073308945f, 0.601679027080536f,
+    0.489552229642868f,
+  0.602054476737976f, 0.489474087953568f, 0.602429866790771f,
+    0.489395678043365f,
+  0.602805197238922f, 0.489316970109940f, 0.603180468082428f,
+    0.489237964153290f,
+  0.603555679321289f, 0.489158689975739f, 0.603930830955505f,
+    0.489079117774963f,
+  0.604305922985077f, 0.488999247550964f, 0.604680955410004f,
+    0.488919109106064f,
+  0.605055928230286f, 0.488838672637939f, 0.605430841445923f,
+    0.488757967948914f,
+  0.605805635452271f, 0.488676935434341f, 0.606180429458618f,
+    0.488595664501190f,
+  0.606555163860321f, 0.488514065742493f, 0.606929838657379f,
+    0.488432198762894f,
+  0.607304394245148f, 0.488350033760071f, 0.607678949832916f,
+    0.488267600536346f,
+  0.608053386211395f, 0.488184869289398f, 0.608427822589874f,
+    0.488101840019226f,
+  0.608802139759064f, 0.488018542528152f, 0.609176397323608f,
+    0.487934947013855f,
+  0.609550595283508f, 0.487851053476334f, 0.609924793243408f,
+    0.487766891717911f,
+  0.610298871994019f, 0.487682431936264f, 0.610672831535339f,
+    0.487597703933716f,
+  0.611046791076660f, 0.487512677907944f, 0.611420691013336f,
+    0.487427353858948f,
+  0.611794531345367f, 0.487341761589050f, 0.612168252468109f,
+    0.487255871295929f,
+  0.612541973590851f, 0.487169682979584f, 0.612915575504303f,
+    0.487083226442337f,
+  0.613289117813110f, 0.486996471881866f, 0.613662600517273f,
+    0.486909449100494f,
+  0.614036023616791f, 0.486822128295898f, 0.614409387111664f,
+    0.486734509468079f,
+  0.614782691001892f, 0.486646622419357f, 0.615155875682831f,
+    0.486558437347412f,
+  0.615529060363770f, 0.486469984054565f, 0.615902125835419f,
+    0.486381232738495f,
+  0.616275131702423f, 0.486292183399200f, 0.616648077964783f,
+    0.486202865839005f,
+  0.617020964622498f, 0.486113250255585f, 0.617393791675568f,
+    0.486023366451263f,
+  0.617766559123993f, 0.485933154821396f, 0.618139207363129f,
+    0.485842704772949f,
+  0.618511795997620f, 0.485751956701279f, 0.618884325027466f,
+    0.485660910606384f,
+  0.619256794452667f, 0.485569566488266f, 0.619629204273224f,
+    0.485477954149246f,
+  0.620001494884491f, 0.485386073589325f, 0.620373785495758f,
+    0.485293895006180f,
+  0.620745956897736f, 0.485201418399811f, 0.621118068695068f,
+    0.485108673572540f,
+  0.621490061283112f, 0.485015630722046f, 0.621862053871155f,
+    0.484922289848328f,
+  0.622233927249908f, 0.484828680753708f, 0.622605800628662f,
+    0.484734803438187f,
+  0.622977554798126f, 0.484640628099442f, 0.623349189758301f,
+    0.484546154737473f,
+  0.623720824718475f, 0.484451413154602f, 0.624092340469360f,
+    0.484356373548508f,
+  0.624463796615601f, 0.484261035919189f, 0.624835193157196f,
+    0.484165430068970f,
+  0.625206530094147f, 0.484069555997849f, 0.625577747821808f,
+    0.483973383903503f,
+  0.625948905944824f, 0.483876913785934f, 0.626320004463196f,
+    0.483780175447464f,
+  0.626691043376923f, 0.483683139085770f, 0.627061963081360f,
+    0.483585834503174f,
+  0.627432823181152f, 0.483488231897354f, 0.627803623676300f,
+    0.483390361070633f,
+  0.628174364566803f, 0.483292192220688f, 0.628544986248016f,
+    0.483193725347519f,
+  0.628915548324585f, 0.483094990253448f, 0.629286050796509f,
+    0.482995986938477f,
+  0.629656434059143f, 0.482896685600281f, 0.630026817321777f,
+    0.482797086238861f,
+  0.630397081375122f, 0.482697218656540f, 0.630767226219177f,
+    0.482597053050995f,
+  0.631137371063232f, 0.482496619224548f, 0.631507396697998f,
+    0.482395917177200f,
+  0.631877362728119f, 0.482294887304306f, 0.632247209548950f,
+    0.482193619012833f,
+  0.632616996765137f, 0.482092022895813f, 0.632986724376678f,
+    0.481990188360214f,
+  0.633356392383575f, 0.481888025999069f, 0.633725941181183f,
+    0.481785595417023f,
+  0.634095430374146f, 0.481682896614075f, 0.634464859962463f,
+    0.481579899787903f,
+  0.634834170341492f, 0.481476634740829f, 0.635203421115875f,
+    0.481373071670532f,
+  0.635572552680969f, 0.481269240379334f, 0.635941684246063f,
+    0.481165111064911f,
+  0.636310696601868f, 0.481060713529587f, 0.636679589748383f,
+    0.480956017971039f,
+  0.637048482894897f, 0.480851024389267f, 0.637417197227478f,
+    0.480745792388916f,
+  0.637785911560059f, 0.480640232563019f, 0.638154506683350f,
+    0.480534434318542f,
+  0.638523042201996f, 0.480428308248520f, 0.638891458511353f,
+    0.480321943759918f,
+  0.639259815216064f, 0.480215251445770f, 0.639628112316132f,
+    0.480108320713043f,
+  0.639996349811554f, 0.480001062154770f, 0.640364408493042f,
+    0.479893565177917f,
+  0.640732467174530f, 0.479785770177841f, 0.641100406646729f,
+    0.479677677154541f,
+  0.641468286514282f, 0.479569315910339f, 0.641836047172546f,
+    0.479460656642914f,
+  0.642203748226166f, 0.479351729154587f, 0.642571389675140f,
+    0.479242533445358f,
+  0.642938911914825f, 0.479133039712906f, 0.643306374549866f,
+    0.479023247957230f,
+  0.643673717975616f, 0.478913217782974f, 0.644041001796722f,
+    0.478802859783173f,
+  0.644408226013184f, 0.478692263364792f, 0.644775331020355f,
+    0.478581339120865f,
+  0.645142316818237f, 0.478470176458359f, 0.645509302616119f,
+    0.478358715772629f,
+  0.645876109600067f, 0.478246957063675f, 0.646242916584015f,
+    0.478134930133820f,
+  0.646609604358673f, 0.478022634983063f, 0.646976172924042f,
+    0.477910041809082f,
+  0.647342681884766f, 0.477797180414200f, 0.647709131240845f,
+    0.477684020996094f,
+  0.648075461387634f, 0.477570593357086f, 0.648441672325134f,
+    0.477456867694855f,
+  0.648807883262634f, 0.477342873811722f, 0.649173915386200f,
+    0.477228611707687f,
+  0.649539887905121f, 0.477114051580429f, 0.649905800819397f,
+    0.476999223232269f,
+  0.650271594524384f, 0.476884096860886f, 0.650637328624725f,
+    0.476768702268600f,
+  0.651003003120422f, 0.476653009653091f, 0.651368498802185f,
+    0.476537048816681f,
+  0.651733994483948f, 0.476420819759369f, 0.652099311351776f,
+    0.476304292678833f,
+  0.652464628219604f, 0.476187497377396f, 0.652829825878143f,
+    0.476070433855057f,
+  0.653194904327393f, 0.475953072309494f, 0.653559923171997f,
+    0.475835442543030f,
+  0.653924822807312f, 0.475717514753342f, 0.654289662837982f,
+    0.475599318742752f,
+  0.654654383659363f, 0.475480824708939f, 0.655019044876099f,
+    0.475362062454224f,
+  0.655383586883545f, 0.475243031978607f, 0.655748009681702f,
+    0.475123733282089f,
+  0.656112432479858f, 0.475004136562347f, 0.656476676464081f,
+    0.474884241819382f,
+  0.656840860843658f, 0.474764078855515f, 0.657204985618591f,
+    0.474643647670746f,
+  0.657568991184235f, 0.474522948265076f, 0.657932877540588f,
+    0.474401950836182f,
+  0.658296704292297f, 0.474280685186386f, 0.658660411834717f,
+    0.474159121513367f,
+  0.659024059772491f, 0.474037289619446f, 0.659387588500977f,
+    0.473915189504623f,
+  0.659750998020172f, 0.473792791366577f, 0.660114347934723f,
+    0.473670125007629f,
+  0.660477638244629f, 0.473547190427780f, 0.660840749740601f,
+    0.473423957824707f,
+  0.661203861236572f, 0.473300457000732f, 0.661566793918610f,
+    0.473176687955856f,
+  0.661929666996002f, 0.473052620887756f, 0.662292480468750f,
+    0.472928285598755f,
+  0.662655174732208f, 0.472803652286530f, 0.663017749786377f,
+    0.472678780555725f,
+  0.663380205631256f, 0.472553610801697f, 0.663742601871490f,
+    0.472428143024445f,
+  0.664104938507080f, 0.472302407026291f, 0.664467096328735f,
+    0.472176402807236f,
+  0.664829254150391f, 0.472050130367279f, 0.665191233158112f,
+    0.471923559904099f,
+  0.665553152561188f, 0.471796721220016f, 0.665914952754974f,
+    0.471669614315033f,
+  0.666276693344116f, 0.471542209386826f, 0.666638314723969f,
+    0.471414536237717f,
+  0.666999816894531f, 0.471286594867706f, 0.667361259460449f,
+    0.471158385276794f,
+  0.667722582817078f, 0.471029877662659f, 0.668083786964417f,
+    0.470901101827621f,
+  0.668444931507111f, 0.470772027969360f, 0.668805956840515f,
+    0.470642685890198f,
+  0.669166862964630f, 0.470513075590134f, 0.669527709484100f,
+    0.470383197069168f,
+  0.669888436794281f, 0.470253020524979f, 0.670249044895172f,
+    0.470122605562210f,
+  0.670609593391418f, 0.469991862773895f, 0.670970022678375f,
+    0.469860881567001f,
+  0.671330332756042f, 0.469729602336884f, 0.671690583229065f,
+    0.469598054885864f,
+  0.672050714492798f, 0.469466239213943f, 0.672410726547241f,
+    0.469334155321121f,
+  0.672770678997040f, 0.469201773405075f, 0.673130512237549f,
+    0.469069123268127f,
+  0.673490226268768f, 0.468936175107956f, 0.673849821090698f,
+    0.468802988529205f,
+  0.674209356307983f, 0.468669503927231f, 0.674568772315979f,
+    0.468535751104355f,
+  0.674928069114685f, 0.468401730060577f, 0.675287246704102f,
+    0.468267410993576f,
+  0.675646364688873f, 0.468132823705673f, 0.676005363464355f,
+    0.467997968196869f,
+  0.676364302635193f, 0.467862844467163f, 0.676723062992096f,
+    0.467727422714233f,
+  0.677081763744354f, 0.467591762542725f, 0.677440345287323f,
+    0.467455804347992f,
+  0.677798807621002f, 0.467319577932358f, 0.678157210350037f,
+    0.467183053493500f,
+  0.678515493869781f, 0.467046260833740f, 0.678873658180237f,
+    0.466909229755402f,
+  0.679231703281403f, 0.466771900653839f, 0.679589688777924f,
+    0.466634273529053f,
+  0.679947495460510f, 0.466496407985687f, 0.680305242538452f,
+    0.466358244419098f,
+  0.680662930011749f, 0.466219812631607f, 0.681020438671112f,
+    0.466081112623215f,
+  0.681377887725830f, 0.465942144393921f, 0.681735157966614f,
+    0.465802878141403f,
+  0.682092368602753f, 0.465663343667984f, 0.682449519634247f,
+    0.465523540973663f,
+  0.682806491851807f, 0.465383470058441f, 0.683163404464722f,
+    0.465243130922318f,
+  0.683520197868347f, 0.465102523565292f, 0.683876872062683f,
+    0.464961618185043f,
+  0.684233427047729f, 0.464820444583893f, 0.684589862823486f,
+    0.464679002761841f,
+  0.684946238994598f, 0.464537292718887f, 0.685302436351776f,
+    0.464395314455032f,
+  0.685658574104309f, 0.464253038167953f, 0.686014592647552f,
+    0.464110493659973f,
+  0.686370551586151f, 0.463967710733414f, 0.686726331710815f,
+    0.463824629783630f,
+  0.687082052230835f, 0.463681250810623f, 0.687437593936920f,
+    0.463537633419037f,
+  0.687793076038361f, 0.463393747806549f, 0.688148438930511f,
+    0.463249564170837f,
+  0.688503682613373f, 0.463105112314224f, 0.688858866691589f,
+    0.462960392236710f,
+  0.689213871955872f, 0.462815403938293f, 0.689568817615509f,
+    0.462670147418976f,
+  0.689923584461212f, 0.462524622678757f, 0.690278291702271f,
+    0.462378799915314f,
+  0.690632879734039f, 0.462232738733292f, 0.690987348556519f,
+    0.462086379528046f,
+  0.691341698169708f, 0.461939752101898f, 0.691695988178253f,
+    0.461792886257172f,
+  0.692050099372864f, 0.461645722389221f, 0.692404091358185f,
+    0.461498260498047f,
+  0.692758023738861f, 0.461350560188293f, 0.693111836910248f,
+    0.461202591657639f,
+  0.693465530872345f, 0.461054325103760f, 0.693819046020508f,
+    0.460905820131302f,
+  0.694172501564026f, 0.460757017135620f, 0.694525837898254f,
+    0.460607945919037f,
+  0.694879114627838f, 0.460458606481552f, 0.695232212543488f,
+    0.460309028625488f,
+  0.695585191249847f, 0.460159152746201f, 0.695938050746918f,
+    0.460008978843689f,
+  0.696290850639343f, 0.459858566522598f, 0.696643471717834f,
+    0.459707885980606f,
+  0.696996033191681f, 0.459556937217712f, 0.697348415851593f,
+    0.459405690431595f,
+  0.697700738906860f, 0.459254205226898f, 0.698052942752838f,
+    0.459102421998978f,
+  0.698404967784882f, 0.458950400352478f, 0.698756933212280f,
+    0.458798080682755f,
+  0.699108779430389f, 0.458645492792130f, 0.699460506439209f,
+    0.458492636680603f,
+  0.699812114238739f, 0.458339542150497f, 0.700163602828979f,
+    0.458186149597168f,
+  0.700514972209930f, 0.458032488822937f, 0.700866222381592f,
+    0.457878559827805f,
+  0.701217353343964f, 0.457724362611771f, 0.701568365097046f,
+    0.457569897174835f,
+  0.701919257640839f, 0.457415163516998f, 0.702270030975342f,
+    0.457260161638260f,
+  0.702620685100555f, 0.457104891538620f, 0.702971220016479f,
+    0.456949323415756f,
+  0.703321635723114f, 0.456793516874313f, 0.703671932220459f,
+    0.456637442111969f,
+  0.704022109508514f, 0.456481099128723f, 0.704372167587280f,
+    0.456324487924576f,
+  0.704722046852112f, 0.456167578697205f, 0.705071866512299f,
+    0.456010431051254f,
+  0.705421566963196f, 0.455853015184402f, 0.705771148204803f,
+    0.455695331096649f,
+  0.706120610237122f, 0.455537378787994f, 0.706469953060150f,
+    0.455379128456116f,
+  0.706819176673889f, 0.455220639705658f, 0.707168221473694f,
+    0.455061882734299f,
+  0.707517206668854f, 0.454902857542038f, 0.707866072654724f,
+    0.454743564128876f,
+  0.708214759826660f, 0.454584002494812f, 0.708563387393951f,
+    0.454424172639847f,
+  0.708911836147308f, 0.454264044761658f, 0.709260225296021f,
+    0.454103678464890f,
+  0.709608435630798f, 0.453943043947220f, 0.709956526756287f,
+    0.453782171010971f,
+  0.710304558277130f, 0.453621000051498f, 0.710652410984039f,
+    0.453459560871124f,
+  0.711000144481659f, 0.453297853469849f, 0.711347758769989f,
+    0.453135877847672f,
+  0.711695253849030f, 0.452973634004593f, 0.712042629718781f,
+    0.452811151742935f,
+  0.712389826774597f, 0.452648371458054f, 0.712736964225769f,
+    0.452485352754593f,
+  0.713083922863007f, 0.452322036027908f, 0.713430821895599f,
+    0.452158480882645f,
+  0.713777542114258f, 0.451994657516479f, 0.714124143123627f,
+    0.451830536127090f,
+  0.714470624923706f, 0.451666176319122f, 0.714816987514496f,
+    0.451501548290253f,
+  0.715163230895996f, 0.451336652040482f, 0.715509355068207f,
+    0.451171487569809f,
+  0.715855300426483f, 0.451006084680557f, 0.716201186180115f,
+    0.450840383768082f,
+  0.716546893119812f, 0.450674414634705f, 0.716892480850220f,
+    0.450508207082748f,
+  0.717238008975983f, 0.450341701507568f, 0.717583298683167f,
+    0.450174957513809f,
+  0.717928528785706f, 0.450007945299149f, 0.718273639678955f,
+    0.449840664863586f,
+  0.718618571758270f, 0.449673116207123f, 0.718963444232941f,
+    0.449505299329758f,
+  0.719308137893677f, 0.449337244033813f, 0.719652712345123f,
+    0.449168890714645f,
+  0.719997107982636f, 0.449000298976898f, 0.720341444015503f,
+    0.448831409215927f,
+  0.720685660839081f, 0.448662281036377f, 0.721029698848724f,
+    0.448492884635925f,
+  0.721373617649078f, 0.448323249816895f, 0.721717417240143f,
+    0.448153316974640f,
+  0.722061097621918f, 0.447983115911484f, 0.722404599189758f,
+    0.447812676429749f,
+  0.722747981548309f, 0.447641968727112f, 0.723091304302216f,
+    0.447470992803574f,
+  0.723434448242188f, 0.447299748659134f, 0.723777413368225f,
+    0.447128236293793f,
+  0.724120318889618f, 0.446956485509872f, 0.724463045597076f,
+    0.446784436702728f,
+  0.724805653095245f, 0.446612149477005f, 0.725148141384125f,
+    0.446439594030380f,
+  0.725490510463715f, 0.446266770362854f, 0.725832700729370f,
+    0.446093708276749f,
+  0.726174771785736f, 0.445920348167419f, 0.726516723632813f,
+    0.445746749639511f,
+  0.726858556270599f, 0.445572882890701f, 0.727200269699097f,
+    0.445398747920990f,
+  0.727541804313660f, 0.445224374532700f, 0.727883219718933f,
+    0.445049703121185f,
+  0.728224515914917f, 0.444874793291092f, 0.728565633296967f,
+    0.444699615240097f,
+  0.728906631469727f, 0.444524168968201f, 0.729247510433197f,
+    0.444348484277725f,
+  0.729588270187378f, 0.444172531366348f, 0.729928910732269f,
+    0.443996280431747f,
+  0.730269372463226f, 0.443819820880890f, 0.730609714984894f,
+    0.443643063306808f,
+  0.730949878692627f, 0.443466067314148f, 0.731289982795715f,
+    0.443288803100586f,
+  0.731629908084869f, 0.443111270666122f, 0.731969714164734f,
+    0.442933470010757f,
+  0.732309341430664f, 0.442755430936813f, 0.732648849487305f,
+    0.442577123641968f,
+  0.732988238334656f, 0.442398548126221f, 0.733327507972717f,
+    0.442219734191895f,
+  0.733666598796844f, 0.442040622234344f, 0.734005570411682f,
+    0.441861271858215f,
+  0.734344422817230f, 0.441681683063507f, 0.734683096408844f,
+    0.441501796245575f,
+  0.735021650791168f, 0.441321671009064f, 0.735360085964203f,
+    0.441141277551651f,
+  0.735698342323303f, 0.440960645675659f, 0.736036539077759f,
+    0.440779715776443f,
+  0.736374497413635f, 0.440598547458649f, 0.736712396144867f,
+    0.440417140722275f,
+  0.737050116062164f, 0.440235435962677f, 0.737387716770172f,
+    0.440053492784500f,
+  0.737725138664246f, 0.439871311187744f, 0.738062441349030f,
+    0.439688831567764f,
+  0.738399624824524f, 0.439506113529205f, 0.738736629486084f,
+    0.439323127269745f,
+  0.739073514938354f, 0.439139902591705f, 0.739410281181335f,
+    0.438956409692764f,
+  0.739746868610382f, 0.438772648572922f, 0.740083336830139f,
+    0.438588619232178f,
+  0.740419685840607f, 0.438404351472855f, 0.740755856037140f,
+    0.438219845294952f,
+  0.741091907024384f, 0.438035041093826f, 0.741427779197693f,
+    0.437849998474121f,
+  0.741763532161713f, 0.437664687633514f, 0.742099165916443f,
+    0.437479138374329f,
+  0.742434620857239f, 0.437293320894241f, 0.742769956588745f,
+    0.437107264995575f,
+  0.743105113506317f, 0.436920911073685f, 0.743440151214600f,
+    0.436734348535538f,
+  0.743775069713593f, 0.436547487974167f, 0.744109809398651f,
+    0.436360388994217f,
+  0.744444429874420f, 0.436173021793365f, 0.744778931140900f,
+    0.435985416173935f,
+  0.745113253593445f, 0.435797542333603f, 0.745447397232056f,
+    0.435609430074692f,
+  0.745781481266022f, 0.435421019792557f, 0.746115326881409f,
+    0.435232400894165f,
+  0.746449112892151f, 0.435043483972549f, 0.746782720088959f,
+    0.434854328632355f,
+  0.747116148471832f, 0.434664934873581f, 0.747449457645416f,
+    0.434475272893906f,
+  0.747782647609711f, 0.434285342693329f, 0.748115658760071f,
+    0.434095174074173f,
+  0.748448550701141f, 0.433904737234116f, 0.748781263828278f,
+    0.433714061975479f,
+  0.749113857746124f, 0.433523118495941f, 0.749446272850037f,
+    0.433331936597824f,
+  0.749778568744659f, 0.433140486478806f, 0.750110685825348f,
+    0.432948768138886f,
+  0.750442683696747f, 0.432756811380386f, 0.750774562358856f,
+    0.432564586400986f,
+  0.751106262207031f, 0.432372123003006f, 0.751437783241272f,
+    0.432179391384125f,
+  0.751769185066223f, 0.431986421346664f, 0.752100467681885f,
+    0.431793183088303f,
+  0.752431571483612f, 0.431599706411362f, 0.752762496471405f,
+    0.431405961513519f,
+  0.753093302249908f, 0.431211978197098f, 0.753423988819122f,
+    0.431017726659775f,
+  0.753754496574402f, 0.430823236703873f, 0.754084885120392f,
+    0.430628478527069f,
+  0.754415094852448f, 0.430433481931686f, 0.754745125770569f,
+    0.430238217115402f,
+  0.755075037479401f, 0.430042684078217f, 0.755404829978943f,
+    0.429846942424774f,
+  0.755734443664551f, 0.429650902748108f, 0.756063878536224f,
+    0.429454624652863f,
+  0.756393194198608f, 0.429258108139038f, 0.756722390651703f,
+    0.429061323404312f,
+  0.757051348686218f, 0.428864300251007f, 0.757380247116089f,
+    0.428667008876801f,
+  0.757708966732025f, 0.428469479084015f, 0.758037507534027f,
+    0.428271710872650f,
+  0.758365929126740f, 0.428073674440384f, 0.758694171905518f,
+    0.427875369787216f,
+  0.759022235870361f, 0.427676826715469f, 0.759350180625916f,
+    0.427478045225143f,
+  0.759678006172180f, 0.427278995513916f, 0.760005652904511f,
+    0.427079707384110f,
+  0.760333120822906f, 0.426880151033401f, 0.760660469532013f,
+    0.426680356264114f,
+  0.760987639427185f, 0.426480293273926f, 0.761314690113068f,
+    0.426279991865158f,
+  0.761641561985016f, 0.426079452037811f, 0.761968255043030f,
+    0.425878643989563f,
+  0.762294828891754f, 0.425677597522736f, 0.762621283531189f,
+    0.425476282835007f,
+  0.762947499752045f, 0.425274729728699f, 0.763273596763611f,
+    0.425072938203812f,
+  0.763599574565887f, 0.424870878458023f, 0.763925373554230f,
+    0.424668580293655f,
+  0.764250993728638f, 0.424466013908386f, 0.764576494693756f,
+    0.424263238906860f,
+  0.764901816844940f, 0.424060165882111f, 0.765226960182190f,
+    0.423856884241104f,
+  0.765551984310150f, 0.423653304576874f, 0.765876889228821f,
+    0.423449516296387f,
+  0.766201555728912f, 0.423245459794998f, 0.766526103019714f,
+    0.423041164875031f,
+  0.766850471496582f, 0.422836631536484f, 0.767174720764160f,
+    0.422631829977036f,
+  0.767498791217804f, 0.422426789999008f, 0.767822742462158f,
+    0.422221481800079f,
+  0.768146514892578f, 0.422015935182571f, 0.768470108509064f,
+    0.421810150146484f,
+  0.768793523311615f, 0.421604126691818f, 0.769116818904877f,
+    0.421397835016251f,
+  0.769439935684204f, 0.421191304922104f, 0.769762933254242f,
+    0.420984506607056f,
+  0.770085752010345f, 0.420777499675751f, 0.770408391952515f,
+    0.420570224523544f,
+  0.770730912685394f, 0.420362681150436f, 0.771053194999695f,
+    0.420154929161072f,
+  0.771375417709351f, 0.419946908950806f, 0.771697402000427f,
+    0.419738620519638f,
+  0.772019267082214f, 0.419530123472214f, 0.772340953350067f,
+    0.419321358203888f,
+  0.772662520408630f, 0.419112354516983f, 0.772983849048615f,
+    0.418903112411499f,
+  0.773305058479309f, 0.418693602085114f, 0.773626148700714f,
+    0.418483853340149f,
+  0.773947000503540f, 0.418273866176605f, 0.774267733097076f,
+    0.418063640594482f,
+  0.774588346481323f, 0.417853146791458f, 0.774908721446991f,
+    0.417642414569855f,
+  0.775228977203369f, 0.417431443929672f, 0.775549054145813f,
+    0.417220205068588f,
+  0.775869011878967f, 0.417008757591248f, 0.776188731193542f,
+    0.416797041893005f,
+  0.776508331298828f, 0.416585087776184f, 0.776827812194824f,
+    0.416372895240784f,
+  0.777147054672241f, 0.416160434484482f, 0.777466177940369f,
+    0.415947735309601f,
+  0.777785122394562f, 0.415734797716141f, 0.778103888034821f,
+    0.415521621704102f,
+  0.778422534465790f, 0.415308207273483f, 0.778741002082825f,
+    0.415094524621964f,
+  0.779059290885925f, 0.414880603551865f, 0.779377400875092f,
+    0.414666473865509f,
+  0.779695332050323f, 0.414452046155930f, 0.780013144016266f,
+    0.414237409830093f,
+  0.780330777168274f, 0.414022535085678f, 0.780648231506348f,
+    0.413807392120361f,
+  0.780965566635132f, 0.413592010736465f, 0.781282722949982f,
+    0.413376390933990f,
+  0.781599700450897f, 0.413160532712936f, 0.781916499137878f,
+    0.412944436073303f,
+  0.782233119010925f, 0.412728071212769f, 0.782549619674683f,
+    0.412511497735977f,
+  0.782865881919861f, 0.412294656038284f, 0.783182024955750f,
+    0.412077575922012f,
+  0.783498048782349f, 0.411860257387161f, 0.783813834190369f,
+    0.411642700433731f,
+  0.784129500389099f, 0.411424905061722f, 0.784444928169250f,
+    0.411206841468811f,
+  0.784760236740112f, 0.410988569259644f, 0.785075426101685f,
+    0.410770028829575f,
+  0.785390377044678f, 0.410551249980927f, 0.785705149173737f,
+    0.410332232713699f,
+  0.786019802093506f, 0.410112977027893f, 0.786334276199341f,
+    0.409893482923508f,
+  0.786648571491241f, 0.409673750400543f, 0.786962687969208f,
+    0.409453779459000f,
+  0.787276685237885f, 0.409233570098877f, 0.787590444087982f,
+    0.409013092517853f,
+  0.787904083728790f, 0.408792406320572f, 0.788217544555664f,
+    0.408571451902390f,
+  0.788530826568604f, 0.408350288867950f, 0.788843929767609f,
+    0.408128857612610f,
+  0.789156913757324f, 0.407907217741013f, 0.789469659328461f,
+    0.407685309648514f,
+  0.789782285690308f, 0.407463163137436f, 0.790094733238220f,
+    0.407240778207779f,
+  0.790407001972198f, 0.407018154859543f, 0.790719091892242f,
+    0.406795293092728f,
+  0.791031002998352f, 0.406572192907333f, 0.791342735290527f,
+    0.406348884105682f,
+  0.791654348373413f, 0.406125307083130f, 0.791965723037720f,
+    0.405901491641998f,
+  0.792276978492737f, 0.405677437782288f, 0.792588055133820f,
+    0.405453115701675f,
+  0.792898952960968f, 0.405228585004807f, 0.793209671974182f,
+    0.405003815889359f,
+  0.793520212173462f, 0.404778808355331f, 0.793830573558807f,
+    0.404553562402725f,
+  0.794140756130219f, 0.404328078031540f, 0.794450819492340f,
+    0.404102355241776f,
+  0.794760644435883f, 0.403876423835754f, 0.795070350170136f,
+    0.403650224208832f,
+  0.795379877090454f, 0.403423786163330f, 0.795689165592194f,
+    0.403197109699249f,
+  0.795998334884644f, 0.402970194816589f, 0.796307325363159f,
+    0.402743041515350f,
+  0.796616137027740f, 0.402515679597855f, 0.796924769878387f,
+    0.402288049459457f,
+  0.797233223915100f, 0.402060180902481f, 0.797541558742523f,
+    0.401832103729248f,
+  0.797849655151367f, 0.401603758335114f, 0.798157572746277f,
+    0.401375204324722f,
+  0.798465371131897f, 0.401146411895752f, 0.798772931098938f,
+    0.400917351245880f,
+  0.799080371856689f, 0.400688081979752f, 0.799387574195862f,
+    0.400458574295044f,
+  0.799694657325745f, 0.400228828191757f, 0.800001561641693f,
+    0.399998843669891f,
+  0.800308227539063f, 0.399768620729446f, 0.800614774227142f,
+    0.399538189172745f,
+  0.800921142101288f, 0.399307489395142f, 0.801227271556854f,
+    0.399076581001282f,
+  0.801533281803131f, 0.398845434188843f, 0.801839113235474f,
+    0.398614019155502f,
+  0.802144765853882f, 0.398382395505905f, 0.802450239658356f,
+    0.398150533437729f,
+  0.802755534648895f, 0.397918462753296f, 0.803060650825500f,
+    0.397686123847961f,
+  0.803365588188171f, 0.397453576326370f, 0.803670346736908f,
+    0.397220760583878f,
+  0.803974866867065f, 0.396987736225128f, 0.804279267787933f,
+    0.396754473447800f,
+  0.804583489894867f, 0.396520972251892f, 0.804887533187866f,
+    0.396287262439728f,
+  0.805191397666931f, 0.396053284406662f, 0.805495083332062f,
+    0.395819097757339f,
+  0.805798590183258f, 0.395584672689438f, 0.806101918220520f,
+    0.395350009202957f,
+  0.806405067443848f, 0.395115107297897f, 0.806707978248596f,
+    0.394879996776581f,
+  0.807010769844055f, 0.394644618034363f, 0.807313382625580f,
+    0.394409030675888f,
+  0.807615816593170f, 0.394173204898834f, 0.807918012142181f,
+    0.393937170505524f,
+  0.808220088481903f, 0.393700867891312f, 0.808521986007690f,
+    0.393464356660843f,
+  0.808823645114899f, 0.393227607011795f, 0.809125185012817f,
+    0.392990618944168f,
+  0.809426486492157f, 0.392753422260284f, 0.809727668762207f,
+    0.392515957355499f,
+  0.810028612613678f, 0.392278283834457f, 0.810329377651215f,
+    0.392040401697159f,
+  0.810629963874817f, 0.391802251338959f, 0.810930430889130f,
+    0.391563892364502f,
+  0.811230659484863f, 0.391325294971466f, 0.811530709266663f,
+    0.391086459159851f,
+  0.811830580234528f, 0.390847414731979f, 0.812130272388458f,
+    0.390608131885529f,
+  0.812429726123810f, 0.390368610620499f, 0.812729060649872f,
+    0.390128880739212f,
+  0.813028216362000f, 0.389888882637024f, 0.813327133655548f,
+    0.389648675918579f,
+  0.813625931739807f, 0.389408260583878f, 0.813924491405487f,
+    0.389167606830597f,
+  0.814222872257233f, 0.388926714658737f, 0.814521074295044f,
+    0.388685584068298f,
+  0.814819097518921f, 0.388444244861603f, 0.815116941928864f,
+    0.388202667236328f,
+  0.815414607524872f, 0.387960851192474f, 0.815712094306946f,
+    0.387718826532364f,
+  0.816009342670441f, 0.387476563453674f, 0.816306471824646f,
+    0.387234061956406f,
+  0.816603362560272f, 0.386991351842880f, 0.816900074481964f,
+    0.386748403310776f,
+  0.817196667194366f, 0.386505216360092f, 0.817493021488190f,
+    0.386261820793152f,
+  0.817789137363434f, 0.386018186807632f, 0.818085134029388f,
+    0.385774344205856f,
+  0.818380951881409f, 0.385530263185501f, 0.818676531314850f,
+    0.385285943746567f,
+  0.818971931934357f, 0.385041415691376f, 0.819267153739929f,
+    0.384796649217606f,
+  0.819562196731567f, 0.384551674127579f, 0.819857060909271f,
+    0.384306460618973f,
+  0.820151746273041f, 0.384061008691788f, 0.820446193218231f,
+    0.383815348148346f,
+  0.820740520954132f, 0.383569449186325f, 0.821034610271454f,
+    0.383323341608047f,
+  0.821328520774841f, 0.383076995611191f, 0.821622252464294f,
+    0.382830440998077f,
+  0.821915745735168f, 0.382583618164063f, 0.822209119796753f,
+    0.382336616516113f,
+  0.822502255439758f, 0.382089376449585f, 0.822795212268829f,
+    0.381841897964478f,
+  0.823087990283966f, 0.381594210863113f, 0.823380589485168f,
+    0.381346285343170f,
+  0.823673009872437f, 0.381098151206970f, 0.823965191841125f,
+    0.380849778652191f,
+  0.824257194995880f, 0.380601197481155f, 0.824549019336700f,
+    0.380352377891541f,
+  0.824840664863586f, 0.380103349685669f, 0.825132071971893f,
+    0.379854083061218f,
+  0.825423359870911f, 0.379604607820511f, 0.825714409351349f,
+    0.379354894161224f,
+  0.826005280017853f, 0.379104942083359f, 0.826295912265778f,
+    0.378854811191559f,
+  0.826586425304413f, 0.378604412078857f, 0.826876699924469f,
+    0.378353834152222f,
+  0.827166795730591f, 0.378102988004684f, 0.827456712722778f,
+    0.377851963043213f,
+  0.827746450901031f, 0.377600699663162f, 0.828035950660706f,
+    0.377349197864532f,
+  0.828325271606445f, 0.377097487449646f, 0.828614413738251f,
+    0.376845568418503f,
+  0.828903317451477f, 0.376593410968781f, 0.829192101955414f,
+    0.376341015100479f,
+  0.829480648040771f, 0.376088410615921f, 0.829769015312195f,
+    0.375835597515106f,
+  0.830057144165039f, 0.375582575798035f, 0.830345153808594f,
+    0.375329315662384f,
+  0.830632925033569f, 0.375075817108154f, 0.830920517444611f,
+    0.374822109937668f,
+  0.831207871437073f, 0.374568194150925f, 0.831495106220245f,
+    0.374314039945602f,
+  0.831782102584839f, 0.374059677124023f, 0.832068860530853f,
+    0.373805105686188f,
+  0.832355499267578f, 0.373550295829773f, 0.832641899585724f,
+    0.373295277357101f,
+  0.832928121089935f, 0.373040050268173f, 0.833214163780212f,
+    0.372784584760666f,
+  0.833499968051910f, 0.372528880834579f, 0.833785593509674f,
+    0.372272998094559f,
+  0.834071040153503f, 0.372016876935959f, 0.834356248378754f,
+    0.371760547161102f,
+  0.834641277790070f, 0.371503978967667f, 0.834926128387451f,
+    0.371247202157974f,
+  0.835210800170898f, 0.370990216732025f, 0.835495233535767f,
+    0.370732992887497f,
+  0.835779488086700f, 0.370475560426712f, 0.836063504219055f,
+    0.370217919349670f,
+  0.836347401142120f, 0.369960039854050f, 0.836631059646606f,
+    0.369701951742172f,
+  0.836914479732513f, 0.369443655014038f, 0.837197780609131f,
+    0.369185149669647f,
+  0.837480843067169f, 0.368926405906677f, 0.837763667106628f,
+    0.368667453527451f,
+  0.838046371936798f, 0.368408292531967f, 0.838328838348389f,
+    0.368148893117905f,
+  0.838611066341400f, 0.367889285087585f, 0.838893175125122f,
+    0.367629468441010f,
+  0.839175045490265f, 0.367369443178177f, 0.839456677436829f,
+    0.367109179496765f,
+  0.839738130569458f, 0.366848707199097f, 0.840019404888153f,
+    0.366588026285172f,
+  0.840300500392914f, 0.366327136754990f, 0.840581357479095f,
+    0.366066008806229f,
+  0.840862035751343f, 0.365804702043533f, 0.841142535209656f,
+    0.365543156862259f,
+  0.841422796249390f, 0.365281373262405f, 0.841702818870544f,
+    0.365019410848618f,
+  0.841982722282410f, 0.364757210016251f, 0.842262387275696f,
+    0.364494800567627f,
+  0.842541813850403f, 0.364232182502747f, 0.842821121215820f,
+    0.363969355821610f,
+  0.843100130558014f, 0.363706320524216f, 0.843379020690918f,
+    0.363443046808243f,
+  0.843657672405243f, 0.363179564476013f, 0.843936145305634f,
+    0.362915903329849f,
+  0.844214379787445f, 0.362651973962784f, 0.844492435455322f,
+    0.362387865781784f,
+  0.844770252704620f, 0.362123548984528f, 0.845047891139984f,
+    0.361858993768692f,
+  0.845325350761414f, 0.361594229936600f, 0.845602571964264f,
+    0.361329287290573f,
+  0.845879614353180f, 0.361064106225967f, 0.846156477928162f,
+    0.360798716545105f,
+  0.846433103084564f, 0.360533088445663f, 0.846709489822388f,
+    0.360267281532288f,
+  0.846985757350922f, 0.360001266002655f, 0.847261726856232f,
+    0.359735012054443f,
+  0.847537577152252f, 0.359468549489975f, 0.847813189029694f,
+    0.359201908111572f,
+  0.848088562488556f, 0.358935028314590f, 0.848363757133484f,
+    0.358667939901352f,
+  0.848638772964478f, 0.358400642871857f, 0.848913550376892f,
+    0.358133137226105f,
+  0.849188148975372f, 0.357865422964096f, 0.849462509155273f,
+    0.357597470283508f,
+  0.849736690521240f, 0.357329338788986f, 0.850010633468628f,
+    0.357060998678207f,
+  0.850284397602081f, 0.356792420148849f, 0.850557923316956f,
+    0.356523662805557f,
+  0.850831270217896f, 0.356254696846008f, 0.851104438304901f,
+    0.355985492467880f,
+  0.851377367973328f, 0.355716109275818f, 0.851650118827820f,
+    0.355446487665176f,
+  0.851922631263733f, 0.355176687240601f, 0.852194905281067f,
+    0.354906648397446f,
+  0.852467060089111f, 0.354636400938034f, 0.852738916873932f,
+    0.354365974664688f,
+  0.853010654449463f, 0.354095309972763f, 0.853282094001770f,
+    0.353824466466904f,
+  0.853553414344788f, 0.353553384542465f, 0.853824436664581f,
+    0.353282123804092f,
+  0.854095339775085f, 0.353010624647141f, 0.854365944862366f,
+    0.352738946676254f,
+  0.854636430740356f, 0.352467030286789f, 0.854906618595123f,
+    0.352194935083389f,
+  0.855176687240601f, 0.351922631263733f, 0.855446517467499f,
+    0.351650089025497f,
+  0.855716109275818f, 0.351377367973328f, 0.855985522270203f,
+    0.351104438304901f,
+  0.856254696846008f, 0.350831300020218f, 0.856523692607880f,
+    0.350557953119278f,
+  0.856792449951172f, 0.350284397602081f, 0.857060968875885f,
+    0.350010633468628f,
+  0.857329368591309f, 0.349736660718918f, 0.857597470283508f,
+    0.349462509155273f,
+  0.857865393161774f, 0.349188119173050f, 0.858133137226105f,
+    0.348913550376892f,
+  0.858400642871857f, 0.348638743162155f, 0.858667910099030f,
+    0.348363757133484f,
+  0.858934998512268f, 0.348088562488556f, 0.859201908111572f,
+    0.347813159227371f,
+  0.859468579292297f, 0.347537547349930f, 0.859735012054443f,
+    0.347261756658554f,
+  0.860001266002655f, 0.346985727548599f, 0.860267281532288f,
+    0.346709519624710f,
+  0.860533118247986f, 0.346433073282242f, 0.860798716545105f,
+    0.346156448125839f,
+  0.861064076423645f, 0.345879614353180f, 0.861329257488251f,
+    0.345602601766586f,
+  0.861594259738922f, 0.345325350761414f, 0.861859023571014f,
+    0.345047920942307f,
+  0.862123548984528f, 0.344770282506943f, 0.862387895584106f,
+    0.344492435455322f,
+  0.862652003765106f, 0.344214379787445f, 0.862915873527527f,
+    0.343936115503311f,
+  0.863179564476013f, 0.343657672405243f, 0.863443076610565f,
+    0.343379020690918f,
+  0.863706290721893f, 0.343100160360336f, 0.863969385623932f,
+    0.342821091413498f,
+  0.864232182502747f, 0.342541843652725f, 0.864494800567627f,
+    0.342262357473373f,
+  0.864757239818573f, 0.341982692480087f, 0.865019381046295f,
+    0.341702848672867f,
+  0.865281403064728f, 0.341422766447067f, 0.865543127059937f,
+    0.341142505407333f,
+  0.865804672241211f, 0.340862035751343f, 0.866066038608551f,
+    0.340581357479095f,
+  0.866327106952667f, 0.340300500392914f, 0.866588056087494f,
+    0.340019434690475f,
+  0.866848707199097f, 0.339738160371780f, 0.867109179496765f,
+    0.339456677436829f,
+  0.867369413375854f, 0.339175015687943f, 0.867629468441010f,
+    0.338893145322800f,
+  0.867889285087585f, 0.338611096143723f, 0.868148922920227f,
+    0.338328808546066f,
+  0.868408262729645f, 0.338046342134476f, 0.868667483329773f,
+    0.337763696908951f,
+  0.868926405906677f, 0.337480813264847f, 0.869185149669647f,
+    0.337197750806808f,
+  0.869443655014038f, 0.336914509534836f, 0.869701981544495f,
+    0.336631029844284f,
+  0.869960069656372f, 0.336347371339798f, 0.870217919349670f,
+    0.336063534021378f,
+  0.870475590229034f, 0.335779488086700f, 0.870733022689819f,
+    0.335495233535767f,
+  0.870990216732025f, 0.335210770368576f, 0.871247172355652f,
+    0.334926128387451f,
+  0.871503949165344f, 0.334641307592392f, 0.871760547161102f,
+    0.334356248378754f,
+  0.872016847133636f, 0.334071010351181f, 0.872272968292236f,
+    0.333785593509674f,
+  0.872528910636902f, 0.333499968051910f, 0.872784554958344f,
+    0.333214133977890f,
+  0.873040020465851f, 0.332928121089935f, 0.873295307159424f,
+    0.332641899585724f,
+  0.873550295829773f, 0.332355499267578f, 0.873805105686188f,
+    0.332068890333176f,
+  0.874059677124023f, 0.331782072782516f, 0.874314069747925f,
+    0.331495076417923f,
+  0.874568223953247f, 0.331207901239395f, 0.874822139739990f,
+    0.330920487642288f,
+  0.875075817108154f, 0.330632925033569f, 0.875329315662384f,
+    0.330345153808594f,
+  0.875582575798035f, 0.330057173967361f, 0.875835597515106f,
+    0.329769015312195f,
+  0.876088440418243f, 0.329480648040771f, 0.876341044902802f,
+    0.329192101955414f,
+  0.876593410968781f, 0.328903347253799f, 0.876845538616180f,
+    0.328614413738251f,
+  0.877097487449646f, 0.328325271606445f, 0.877349197864532f,
+    0.328035950660706f,
+  0.877600669860840f, 0.327746421098709f, 0.877851963043213f,
+    0.327456712722778f,
+  0.878103017807007f, 0.327166795730591f, 0.878353834152222f,
+    0.326876699924469f,
+  0.878604412078857f, 0.326586425304413f, 0.878854811191559f,
+    0.326295942068100f,
+  0.879104971885681f, 0.326005280017853f, 0.879354894161224f,
+    0.325714409351349f,
+  0.879604578018188f, 0.325423330068588f, 0.879854083061218f,
+    0.325132101774216f,
+  0.880103349685669f, 0.324840664863586f, 0.880352377891541f,
+    0.324549019336700f,
+  0.880601167678833f, 0.324257194995880f, 0.880849778652191f,
+    0.323965191841125f,
+  0.881098151206970f, 0.323672980070114f, 0.881346285343170f,
+    0.323380589485168f,
+  0.881594181060791f, 0.323088020086288f, 0.881841897964478f,
+    0.322795242071152f,
+  0.882089376449585f, 0.322502255439758f, 0.882336616516113f,
+    0.322209119796753f,
+  0.882583618164063f, 0.321915775537491f, 0.882830440998077f,
+    0.321622252464294f,
+  0.883076965808868f, 0.321328520774841f, 0.883323311805725f,
+    0.321034610271454f,
+  0.883569478988647f, 0.320740520954132f, 0.883815348148346f,
+    0.320446223020554f,
+  0.884061038494110f, 0.320151746273041f, 0.884306430816650f,
+    0.319857090711594f,
+  0.884551644325256f, 0.319562226533890f, 0.884796679019928f,
+    0.319267183542252f,
+  0.885041415691376f, 0.318971961736679f, 0.885285973548889f,
+    0.318676531314850f,
+  0.885530233383179f, 0.318380922079086f, 0.885774314403534f,
+    0.318085134029388f,
+  0.886018216609955f, 0.317789167165756f, 0.886261820793152f,
+    0.317492991685867f,
+  0.886505246162415f, 0.317196637392044f, 0.886748373508453f,
+    0.316900104284287f,
+  0.886991322040558f, 0.316603392362595f, 0.887234091758728f,
+    0.316306471824646f,
+  0.887476563453674f, 0.316009372472763f, 0.887718796730042f,
+    0.315712094306946f,
+  0.887960851192474f, 0.315414607524872f, 0.888202667236328f,
+    0.315116971731186f,
+  0.888444244861603f, 0.314819127321243f, 0.888685584068298f,
+    0.314521104097366f,
+  0.888926684856415f, 0.314222872257233f, 0.889167606830597f,
+    0.313924491405487f,
+  0.889408230781555f, 0.313625901937485f, 0.889648675918579f,
+    0.313327133655548f,
+  0.889888882637024f, 0.313028186559677f, 0.890128850936890f,
+    0.312729060649872f,
+  0.890368640422821f, 0.312429755926132f, 0.890608131885529f,
+    0.312130242586136f,
+  0.890847444534302f, 0.311830550432205f, 0.891086459159851f,
+    0.311530679464340f,
+  0.891325294971466f, 0.311230629682541f, 0.891563892364502f,
+    0.310930401086807f,
+  0.891802251338959f, 0.310629993677139f, 0.892040371894836f,
+    0.310329377651215f,
+  0.892278313636780f, 0.310028612613678f, 0.892515957355499f,
+    0.309727638959885f,
+  0.892753422260284f, 0.309426486492157f, 0.892990648746490f,
+    0.309125155210495f,
+  0.893227577209473f, 0.308823645114899f, 0.893464326858521f,
+    0.308521956205368f,
+  0.893700897693634f, 0.308220088481903f, 0.893937170505524f,
+    0.307918041944504f,
+  0.894173204898834f, 0.307615786790848f, 0.894409060478210f,
+    0.307313382625580f,
+  0.894644618034363f, 0.307010769844055f, 0.894879996776581f,
+    0.306708008050919f,
+  0.895115137100220f, 0.306405037641525f, 0.895349979400635f,
+    0.306101888418198f,
+  0.895584642887115f, 0.305798590183258f, 0.895819067955017f,
+    0.305495083332062f,
+  0.896053314208984f, 0.305191397666931f, 0.896287262439728f,
+    0.304887533187866f,
+  0.896520972251892f, 0.304583519697189f, 0.896754503250122f,
+    0.304279297590256f,
+  0.896987736225128f, 0.303974896669388f, 0.897220790386200f,
+    0.303670316934586f,
+  0.897453546524048f, 0.303365558385849f, 0.897686123847961f,
+    0.303060621023178f,
+  0.897918462753296f, 0.302755534648895f, 0.898150563240051f,
+    0.302450239658356f,
+  0.898382425308228f, 0.302144765853882f, 0.898614048957825f,
+    0.301839113235474f,
+  0.898845434188843f, 0.301533311605453f, 0.899076581001282f,
+    0.301227301359177f,
+  0.899307489395142f, 0.300921112298965f, 0.899538159370422f,
+    0.300614774227142f,
+  0.899768650531769f, 0.300308227539063f, 0.899998843669891f,
+    0.300001531839371f,
+  0.900228857994080f, 0.299694657325745f, 0.900458574295044f,
+    0.299387603998184f,
+  0.900688111782074f, 0.299080342054367f, 0.900917351245880f,
+    0.298772931098938f,
+  0.901146411895752f, 0.298465341329575f, 0.901375174522400f,
+    0.298157602548599f,
+  0.901603758335114f, 0.297849655151367f, 0.901832103729248f,
+    0.297541528940201f,
+  0.902060210704803f, 0.297233253717422f, 0.902288019657135f,
+    0.296924799680710f,
+  0.902515649795532f, 0.296616137027740f, 0.902743041515350f,
+    0.296307325363159f,
+  0.902970194816589f, 0.295998334884644f, 0.903197109699249f,
+    0.295689195394516f,
+  0.903423786163330f, 0.295379847288132f, 0.903650224208832f,
+    0.295070350170136f,
+  0.903876423835754f, 0.294760644435883f, 0.904102385044098f,
+    0.294450789690018f,
+  0.904328107833862f, 0.294140785932541f, 0.904553592205048f,
+    0.293830573558807f,
+  0.904778838157654f, 0.293520182371140f, 0.905003845691681f,
+    0.293209642171860f,
+  0.905228614807129f, 0.292898923158646f, 0.905453145503998f,
+    0.292588025331497f,
+  0.905677437782288f, 0.292276978492737f, 0.905901491641998f,
+    0.291965723037720f,
+  0.906125307083130f, 0.291654318571091f, 0.906348884105682f,
+    0.291342735290527f,
+  0.906572222709656f, 0.291031002998352f, 0.906795322895050f,
+    0.290719062089920f,
+  0.907018184661865f, 0.290406972169876f, 0.907240808010101f,
+    0.290094703435898f,
+  0.907463192939758f, 0.289782285690308f, 0.907685279846191f,
+    0.289469659328461f,
+  0.907907187938690f, 0.289156883955002f, 0.908128857612610f,
+    0.288843959569931f,
+  0.908350288867950f, 0.288530826568604f, 0.908571481704712f,
+    0.288217544555664f,
+  0.908792436122894f, 0.287904083728790f, 0.909013092517853f,
+    0.287590473890305f,
+  0.909233570098877f, 0.287276685237885f, 0.909453809261322f,
+    0.286962717771530f,
+  0.909673750400543f, 0.286648571491241f, 0.909893512725830f,
+    0.286334276199341f,
+  0.910112977027893f, 0.286019802093506f, 0.910332262516022f,
+    0.285705178976059f,
+  0.910551249980927f, 0.285390377044678f, 0.910769999027252f,
+    0.285075396299362f,
+  0.910988569259644f, 0.284760266542435f, 0.911206841468811f,
+    0.284444957971573f,
+  0.911424875259399f, 0.284129470586777f, 0.911642670631409f,
+    0.283813834190369f,
+  0.911860227584839f, 0.283498018980026f, 0.912077546119690f,
+    0.283182054758072f,
+  0.912294626235962f, 0.282865911722183f, 0.912511467933655f,
+    0.282549589872360f,
+  0.912728071212769f, 0.282233119010925f, 0.912944436073303f,
+    0.281916469335556f,
+  0.913160502910614f, 0.281599670648575f, 0.913376390933990f,
+    0.281282693147659f,
+  0.913592040538788f, 0.280965566635132f, 0.913807392120361f,
+    0.280648261308670f,
+  0.914022505283356f, 0.280330777168274f, 0.914237439632416f,
+    0.280013144016266f,
+  0.914452075958252f, 0.279695361852646f, 0.914666473865509f,
+    0.279377400875092f,
+  0.914880633354187f, 0.279059261083603f, 0.915094554424286f,
+    0.278740972280502f,
+  0.915308177471161f, 0.278422504663467f, 0.915521621704102f,
+    0.278103888034821f,
+  0.915734827518463f, 0.277785122394562f, 0.915947735309601f,
+    0.277466177940369f,
+  0.916160404682159f, 0.277147054672241f, 0.916372895240784f,
+    0.276827782392502f,
+  0.916585087776184f, 0.276508361101151f, 0.916797041893005f,
+    0.276188760995865f,
+  0.917008757591248f, 0.275868982076645f, 0.917220234870911f,
+    0.275549083948135f,
+  0.917431414127350f, 0.275228977203369f, 0.917642414569855f,
+    0.274908751249313f,
+  0.917853116989136f, 0.274588316679001f, 0.918063640594482f,
+    0.274267762899399f,
+  0.918273866176605f, 0.273947030305862f, 0.918483853340149f,
+    0.273626148700714f,
+  0.918693602085114f, 0.273305088281631f, 0.918903112411499f,
+    0.272983878850937f,
+  0.919112324714661f, 0.272662490606308f, 0.919321358203888f,
+    0.272340953350067f,
+  0.919530093669891f, 0.272019267082214f, 0.919738650321960f,
+    0.271697402000427f,
+  0.919946908950806f, 0.271375387907028f, 0.920154929161072f,
+    0.271053224802017f,
+  0.920362710952759f, 0.270730882883072f, 0.920570194721222f,
+    0.270408391952515f,
+  0.920777499675751f, 0.270085722208023f, 0.920984506607056f,
+    0.269762933254242f,
+  0.921191275119781f, 0.269439965486526f, 0.921397805213928f,
+    0.269116818904877f,
+  0.921604096889496f, 0.268793523311615f, 0.921810150146484f,
+    0.268470078706741f,
+  0.922015964984894f, 0.268146485090256f, 0.922221481800079f,
+    0.267822742462158f,
+  0.922426760196686f, 0.267498821020126f, 0.922631800174713f,
+    0.267174720764160f,
+  0.922836601734161f, 0.266850501298904f, 0.923041164875031f,
+    0.266526103019714f,
+  0.923245489597321f, 0.266201555728912f, 0.923449516296387f,
+    0.265876859426498f,
+  0.923653304576874f, 0.265552014112473f, 0.923856854438782f,
+    0.265226989984512f,
+  0.924060165882111f, 0.264901816844940f, 0.924263238906860f,
+    0.264576494693756f,
+  0.924466013908386f, 0.264250993728638f, 0.924668610095978f,
+    0.263925373554230f,
+  0.924870908260345f, 0.263599574565887f, 0.925072908401489f,
+    0.263273626565933f,
+  0.925274729728699f, 0.262947499752045f, 0.925476312637329f,
+    0.262621253728867f,
+  0.925677597522736f, 0.262294828891754f, 0.925878643989563f,
+    0.261968284845352f,
+  0.926079452037811f, 0.261641561985016f, 0.926280021667480f,
+    0.261314690113068f,
+  0.926480293273926f, 0.260987639427185f, 0.926680326461792f,
+    0.260660469532013f,
+  0.926880121231079f, 0.260333120822906f, 0.927079677581787f,
+    0.260005623102188f,
+  0.927278995513916f, 0.259678006172180f, 0.927478015422821f,
+    0.259350210428238f,
+  0.927676856517792f, 0.259022265672684f, 0.927875399589539f,
+    0.258694142103195f,
+  0.928073644638062f, 0.258365899324417f, 0.928271710872650f,
+    0.258037507534027f,
+  0.928469479084015f, 0.257708936929703f, 0.928667008876801f,
+    0.257380217313766f,
+  0.928864300251007f, 0.257051378488541f, 0.929061353206635f,
+    0.256722360849380f,
+  0.929258108139038f, 0.256393194198608f, 0.929454624652863f,
+    0.256063878536224f,
+  0.929650902748108f, 0.255734413862228f, 0.929846942424774f,
+    0.255404800176620f,
+  0.930042684078217f, 0.255075037479401f, 0.930238187313080f,
+    0.254745125770569f,
+  0.930433452129364f, 0.254415065050125f, 0.930628478527069f,
+    0.254084855318069f,
+  0.930823206901550f, 0.253754496574402f, 0.931017756462097f,
+    0.253423988819122f,
+  0.931211948394775f, 0.253093332052231f, 0.931405961513519f,
+    0.252762526273727f,
+  0.931599736213684f, 0.252431541681290f, 0.931793212890625f,
+    0.252100437879562f,
+  0.931986451148987f, 0.251769185066223f, 0.932179391384125f,
+    0.251437783241272f,
+  0.932372152805328f, 0.251106232404709f, 0.932564616203308f,
+    0.250774532556534f,
+  0.932756841182709f, 0.250442683696747f, 0.932948768138886f,
+    0.250110685825348f,
+  0.933140456676483f, 0.249778553843498f, 0.933331906795502f,
+    0.249446272850037f,
+  0.933523118495941f, 0.249113827943802f, 0.933714091777802f,
+    0.248781248927116f,
+  0.933904767036438f, 0.248448520898819f, 0.934095203876495f,
+    0.248115643858910f,
+  0.934285342693329f, 0.247782632708550f, 0.934475243091583f,
+    0.247449472546577f,
+  0.934664964675903f, 0.247116148471832f, 0.934854328632355f,
+    0.246782705187798f,
+  0.935043513774872f, 0.246449097990990f, 0.935232400894165f,
+    0.246115356683731f,
+  0.935421049594879f, 0.245781451463699f, 0.935609400272369f,
+    0.245447427034378f,
+  0.935797572135925f, 0.245113238692284f, 0.935985386371613f,
+    0.244778916239738f,
+  0.936173021793365f, 0.244444444775581f, 0.936360359191895f,
+    0.244109839200974f,
+  0.936547517776489f, 0.243775084614754f, 0.936734318733215f,
+    0.243440181016922f,
+  0.936920940876007f, 0.243105143308640f, 0.937107264995575f,
+    0.242769956588745f,
+  0.937293350696564f, 0.242434620857239f, 0.937479138374329f,
+    0.242099151015282f,
+  0.937664687633514f, 0.241763532161713f, 0.937849998474121f,
+    0.241427779197693f,
+  0.938035070896149f, 0.241091892123222f, 0.938219845294952f,
+    0.240755841135979f,
+  0.938404381275177f, 0.240419670939446f, 0.938588619232178f,
+    0.240083336830139f,
+  0.938772618770599f, 0.239746883511543f, 0.938956379890442f,
+    0.239410281181335f,
+  0.939139902591705f, 0.239073529839516f, 0.939323127269745f,
+    0.238736644387245f,
+  0.939506113529205f, 0.238399609923363f, 0.939688861370087f,
+    0.238062441349030f,
+  0.939871311187744f, 0.237725138664246f, 0.940053522586823f,
+    0.237387686967850f,
+  0.940235435962677f, 0.237050101161003f, 0.940417110919952f,
+    0.236712381243706f,
+  0.940598547458649f, 0.236374512314796f, 0.940779745578766f,
+    0.236036509275436f,
+  0.940960645675659f, 0.235698372125626f, 0.941141307353973f,
+    0.235360085964203f,
+  0.941321671009064f, 0.235021665692329f, 0.941501796245575f,
+    0.234683111310005f,
+  0.941681683063507f, 0.234344407916069f, 0.941861271858215f,
+    0.234005570411682f,
+  0.942040622234344f, 0.233666598796844f, 0.942219734191895f,
+    0.233327493071556f,
+  0.942398548126221f, 0.232988253235817f, 0.942577123641968f,
+    0.232648864388466f,
+  0.942755401134491f, 0.232309341430664f, 0.942933499813080f,
+    0.231969684362412f,
+  0.943111240863800f, 0.231629893183708f, 0.943288803100586f,
+    0.231289967894554f,
+  0.943466067314148f, 0.230949893593788f, 0.943643093109131f,
+    0.230609700083733f,
+  0.943819820880890f, 0.230269357562065f, 0.943996310234070f,
+    0.229928880929947f,
+  0.944172501564026f, 0.229588270187378f, 0.944348454475403f,
+    0.229247525334358f,
+  0.944524168968201f, 0.228906646370888f, 0.944699645042419f,
+    0.228565633296967f,
+  0.944874763488770f, 0.228224486112595f, 0.945049703121185f,
+    0.227883204817772f,
+  0.945224344730377f, 0.227541789412498f, 0.945398747920990f,
+    0.227200239896774f,
+  0.945572853088379f, 0.226858556270599f, 0.945746779441834f,
+    0.226516738533974f,
+  0.945920348167419f, 0.226174786686897f, 0.946093678474426f,
+    0.225832715630531f,
+  0.946266770362854f, 0.225490495562553f, 0.946439623832703f,
+    0.225148141384125f,
+  0.946612179279327f, 0.224805667996407f, 0.946784436702728f,
+    0.224463045597076f,
+  0.946956455707550f, 0.224120303988457f, 0.947128236293793f,
+    0.223777428269386f,
+  0.947299718856812f, 0.223434418439865f, 0.947470963001251f,
+    0.223091274499893f,
+  0.947641968727112f, 0.222748011350632f, 0.947812676429749f,
+    0.222404599189758f,
+  0.947983145713806f, 0.222061067819595f, 0.948153316974640f,
+    0.221717402338982f,
+  0.948323249816895f, 0.221373617649078f, 0.948492884635925f,
+    0.221029683947563f,
+  0.948662281036377f, 0.220685631036758f, 0.948831439018250f,
+    0.220341444015503f,
+  0.949000298976898f, 0.219997137784958f, 0.949168920516968f,
+    0.219652697443962f,
+  0.949337244033813f, 0.219308122992516f, 0.949505329132080f,
+    0.218963414430618f,
+  0.949673116207123f, 0.218618586659431f, 0.949840664863586f,
+    0.218273624777794f,
+  0.950007975101471f, 0.217928543686867f, 0.950174987316132f,
+    0.217583328485489f,
+  0.950341701507568f, 0.217237979173660f, 0.950508177280426f,
+    0.216892510652542f,
+  0.950674414634705f, 0.216546908020973f, 0.950840353965759f,
+    0.216201186180115f,
+  0.951006054878235f, 0.215855330228806f, 0.951171517372131f,
+    0.215509355068207f,
+  0.951336681842804f, 0.215163245797157f, 0.951501548290253f,
+    0.214817002415657f,
+  0.951666176319122f, 0.214470639824867f, 0.951830565929413f,
+    0.214124158024788f,
+  0.951994657516479f, 0.213777542114258f, 0.952158451080322f,
+    0.213430806994438f,
+  0.952322065830231f, 0.213083937764168f, 0.952485322952271f,
+    0.212736949324608f,
+  0.952648401260376f, 0.212389841675758f, 0.952811121940613f,
+    0.212042599916458f,
+  0.952973663806915f, 0.211695238947868f, 0.953135907649994f,
+    0.211347743868828f,
+  0.953297853469849f, 0.211000129580498f, 0.953459560871124f,
+    0.210652396082878f,
+  0.953620970249176f, 0.210304543375969f, 0.953782141208649f,
+    0.209956556558609f,
+  0.953943073749542f, 0.209608450531960f, 0.954103708267212f,
+    0.209260210394859f,
+  0.954264044761658f, 0.208911851048470f, 0.954424142837524f,
+    0.208563387393951f,
+  0.954584002494812f, 0.208214774727821f, 0.954743564128876f,
+    0.207866057753563f,
+  0.954902827739716f, 0.207517206668854f, 0.955061912536621f,
+    0.207168251276016f,
+  0.955220639705658f, 0.206819161772728f, 0.955379128456116f,
+    0.206469938158989f,
+  0.955537378787994f, 0.206120610237122f, 0.955695331096649f,
+    0.205771163105965f,
+  0.955853044986725f, 0.205421581864357f, 0.956010460853577f,
+    0.205071896314621f,
+  0.956167578697205f, 0.204722076654434f, 0.956324458122253f,
+    0.204372137784958f,
+  0.956481099128723f, 0.204022079706192f, 0.956637442111969f,
+    0.203671902418137f,
+  0.956793546676636f, 0.203321605920792f, 0.956949353218079f,
+    0.202971190214157f,
+  0.957104861736298f, 0.202620655298233f, 0.957260131835938f,
+    0.202270001173019f,
+  0.957415163516998f, 0.201919227838516f, 0.957569897174835f,
+    0.201568335294724f,
+  0.957724332809448f, 0.201217323541641f, 0.957878530025482f,
+    0.200866192579269f,
+  0.958032488822937f, 0.200514942407608f, 0.958186149597168f,
+    0.200163587927818f,
+  0.958339512348175f, 0.199812099337578f, 0.958492636680603f,
+    0.199460506439209f,
+  0.958645522594452f, 0.199108779430389f, 0.958798050880432f,
+    0.198756948113441f,
+  0.958950400352478f, 0.198404997587204f, 0.959102451801300f,
+    0.198052927851677f,
+  0.959254205226898f, 0.197700738906860f, 0.959405720233917f,
+    0.197348430752754f,
+  0.959556937217712f, 0.196996018290520f, 0.959707856178284f,
+    0.196643486618996f,
+  0.959858596324921f, 0.196290835738182f, 0.960008978843689f,
+    0.195938065648079f,
+  0.960159122943878f, 0.195585191249847f, 0.960309028625488f,
+    0.195232197642326f,
+  0.960458636283875f, 0.194879084825516f, 0.960607945919037f,
+    0.194525867700577f,
+  0.960757017135620f, 0.194172516465187f, 0.960905790328979f,
+    0.193819075822830f,
+  0.961054325103760f, 0.193465501070023f, 0.961202561855316f,
+    0.193111822009087f,
+  0.961350560188293f, 0.192758023738861f, 0.961498260498047f,
+    0.192404121160507f,
+  0.961645722389221f, 0.192050099372864f, 0.961792886257172f,
+    0.191695958375931f,
+  0.961939752101898f, 0.191341713070869f, 0.962086379528046f,
+    0.190987363457680f,
+  0.962232708930969f, 0.190632879734039f, 0.962378799915314f,
+    0.190278306603432f,
+  0.962524592876434f, 0.189923599362373f, 0.962670147418976f,
+    0.189568802714348f,
+  0.962815403938293f, 0.189213871955872f, 0.962960422039032f,
+    0.188858851790428f,
+  0.963105142116547f, 0.188503712415695f, 0.963249564170837f,
+    0.188148453831673f,
+  0.963393747806549f, 0.187793090939522f, 0.963537633419037f,
+    0.187437608838081f,
+  0.963681280612946f, 0.187082037329674f, 0.963824629783630f,
+    0.186726331710815f,
+  0.963967680931091f, 0.186370536684990f, 0.964110493659973f,
+    0.186014622449875f,
+  0.964253067970276f, 0.185658603906631f, 0.964395284652710f,
+    0.185302466154099f,
+  0.964537262916565f, 0.184946224093437f, 0.964679002761841f,
+    0.184589877724648f,
+  0.964820444583893f, 0.184233412146568f, 0.964961588382721f,
+    0.183876842260361f,
+  0.965102493762970f, 0.183520168066025f, 0.965243160724640f,
+    0.183163389563560f,
+  0.965383470058441f, 0.182806491851807f, 0.965523540973663f,
+    0.182449504733086f,
+  0.965663373470306f, 0.182092398405075f, 0.965802907943726f,
+    0.181735187768936f,
+  0.965942144393921f, 0.181377857923508f, 0.966081082820892f,
+    0.181020438671112f,
+  0.966219842433929f, 0.180662900209427f, 0.966358244419098f,
+    0.180305257439613f,
+  0.966496407985687f, 0.179947525262833f, 0.966634273529053f,
+    0.179589673876762f,
+  0.966771900653839f, 0.179231703281403f, 0.966909229755402f,
+    0.178873643279076f,
+  0.967046260833740f, 0.178515478968620f, 0.967183053493500f,
+    0.178157210350037f,
+  0.967319548130035f, 0.177798837423325f, 0.967455804347992f,
+    0.177440345287323f,
+  0.967591762542725f, 0.177081763744354f, 0.967727422714233f,
+    0.176723077893257f,
+  0.967862844467163f, 0.176364272832870f, 0.967997968196869f,
+    0.176005378365517f,
+  0.968132853507996f, 0.175646379590034f, 0.968267440795898f,
+    0.175287276506424f,
+  0.968401730060577f, 0.174928069114685f, 0.968535780906677f,
+    0.174568757414818f,
+  0.968669533729553f, 0.174209341406822f, 0.968802988529205f,
+    0.173849821090698f,
+  0.968936204910278f, 0.173490211367607f, 0.969069123268127f,
+    0.173130482435226f,
+  0.969201743602753f, 0.172770664095879f, 0.969334125518799f,
+    0.172410741448402f,
+  0.969466269016266f, 0.172050714492798f, 0.969598054885864f,
+    0.171690583229065f,
+  0.969729602336884f, 0.171330362558365f, 0.969860911369324f,
+    0.170970037579536f,
+  0.969991862773895f, 0.170609608292580f, 0.970122575759888f,
+    0.170249074697495f,
+  0.970253050327301f, 0.169888436794281f, 0.970383226871490f,
+    0.169527709484100f,
+  0.970513105392456f, 0.169166877865791f, 0.970642685890198f,
+    0.168805956840515f,
+  0.970772027969360f, 0.168444931507111f, 0.970901072025299f,
+    0.168083801865578f,
+  0.971029877662659f, 0.167722567915916f, 0.971158385276794f,
+    0.167361244559288f,
+  0.971286594867706f, 0.166999831795692f, 0.971414566040039f,
+    0.166638299822807f,
+  0.971542239189148f, 0.166276678442955f, 0.971669614315033f,
+    0.165914967656136f,
+  0.971796751022339f, 0.165553152561188f, 0.971923589706421f,
+    0.165191248059273f,
+  0.972050130367279f, 0.164829224348068f, 0.972176432609558f,
+    0.164467126131058f,
+  0.972302436828613f, 0.164104923605919f, 0.972428143024445f,
+    0.163742616772652f,
+  0.972553610801697f, 0.163380220532417f, 0.972678780555725f,
+    0.163017734885216f,
+  0.972803652286530f, 0.162655144929886f, 0.972928285598755f,
+    0.162292465567589f,
+  0.973052620887756f, 0.161929681897163f, 0.973176658153534f,
+    0.161566808819771f,
+  0.973300457000732f, 0.161203846335411f, 0.973423957824707f,
+    0.160840779542923f,
+  0.973547160625458f, 0.160477623343468f, 0.973670125007629f,
+    0.160114362835884f,
+  0.973792791366577f, 0.159751012921333f, 0.973915159702301f,
+    0.159387573599815f,
+  0.974037289619446f, 0.159024044871330f, 0.974159121513367f,
+    0.158660411834717f,
+  0.974280655384064f, 0.158296689391136f, 0.974401950836182f,
+    0.157932877540588f,
+  0.974522948265076f, 0.157568961381912f, 0.974643647670746f,
+    0.157204970717430f,
+  0.974764108657837f, 0.156840875744820f, 0.974884271621704f,
+    0.156476691365242f,
+  0.975004136562347f, 0.156112402677536f, 0.975123703479767f,
+    0.155748039484024f,
+  0.975243031978607f, 0.155383571982384f, 0.975362062454224f,
+    0.155019029974937f,
+  0.975480854511261f, 0.154654383659363f, 0.975599288940430f,
+    0.154289647936821f,
+  0.975717484951019f, 0.153924822807312f, 0.975835442543030f,
+    0.153559908270836f,
+  0.975953042507172f, 0.153194904327393f, 0.976070404052734f,
+    0.152829796075821f,
+  0.976187527179718f, 0.152464613318443f, 0.976304292678833f,
+    0.152099341154099f,
+  0.976420819759369f, 0.151733979582787f, 0.976537048816681f,
+    0.151368513703346f,
+  0.976653039455414f, 0.151002973318100f, 0.976768672466278f,
+    0.150637343525887f,
+  0.976884067058563f, 0.150271624326706f, 0.976999223232269f,
+    0.149905815720558f,
+  0.977114021778107f, 0.149539917707443f, 0.977228581905365f,
+    0.149173930287361f,
+  0.977342903614044f, 0.148807853460312f, 0.977456867694855f,
+    0.148441687226295f,
+  0.977570593357086f, 0.148075446486473f, 0.977684020996094f,
+    0.147709101438522f,
+  0.977797150611877f, 0.147342681884766f, 0.977910041809082f,
+    0.146976172924042f,
+  0.978022634983063f, 0.146609574556351f, 0.978134930133820f,
+    0.146242901682854f,
+  0.978246986865997f, 0.145876124501228f, 0.978358685970306f,
+    0.145509272813797f,
+  0.978470146656036f, 0.145142331719399f, 0.978581368923187f,
+    0.144775316119194f,
+  0.978692233562469f, 0.144408211112022f, 0.978802859783173f,
+    0.144041016697884f,
+  0.978913187980652f, 0.143673732876778f, 0.979023277759552f,
+    0.143306359648705f,
+  0.979133009910584f, 0.142938911914825f, 0.979242503643036f,
+    0.142571389675140f,
+  0.979351758956909f, 0.142203763127327f, 0.979460656642914f,
+    0.141836062073708f,
+  0.979569315910339f, 0.141468286514282f, 0.979677677154541f,
+    0.141100421547890f,
+  0.979785740375519f, 0.140732467174530f, 0.979893565177917f,
+    0.140364438295364f,
+  0.980001091957092f, 0.139996320009232f, 0.980108320713043f,
+    0.139628127217293f,
+  0.980215251445770f, 0.139259845018387f, 0.980321943759918f,
+    0.138891488313675f,
+  0.980428338050842f, 0.138523042201996f, 0.980534434318542f,
+    0.138154521584511f,
+  0.980640232563019f, 0.137785911560059f, 0.980745792388916f,
+    0.137417227029800f,
+  0.980851054191589f, 0.137048453092575f, 0.980956017971039f,
+    0.136679604649544f,
+  0.981060683727264f, 0.136310681700706f, 0.981165111064911f,
+    0.135941669344902f,
+  0.981269240379334f, 0.135572582483292f, 0.981373071670532f,
+    0.135203406214714f,
+  0.981476604938507f, 0.134834155440331f, 0.981579899787903f,
+    0.134464830160141f,
+  0.981682896614075f, 0.134095430374146f, 0.981785595417023f,
+    0.133725941181183f,
+  0.981888055801392f, 0.133356377482414f, 0.981990158557892f,
+    0.132986739277840f,
+  0.982092022895813f, 0.132617011666298f, 0.982193589210510f,
+    0.132247209548950f,
+  0.982294917106628f, 0.131877332925797f, 0.982395887374878f,
+    0.131507381796837f,
+  0.982496619224548f, 0.131137356162071f, 0.982597053050995f,
+    0.130767241120338f,
+  0.982697248458862f, 0.130397051572800f, 0.982797086238861f,
+    0.130026802420616f,
+  0.982896685600281f, 0.129656463861465f, 0.982995986938477f,
+    0.129286035895348f,
+  0.983094990253448f, 0.128915548324585f, 0.983193755149841f,
+    0.128544986248016f,
+  0.983292162418365f, 0.128174334764481f, 0.983390331268311f,
+    0.127803623676300f,
+  0.983488261699677f, 0.127432823181152f, 0.983585834503174f,
+    0.127061963081360f,
+  0.983683168888092f, 0.126691013574600f, 0.983780145645142f,
+    0.126320004463196f,
+  0.983876943588257f, 0.125948905944824f, 0.983973383903503f,
+    0.125577747821808f,
+  0.984069526195526f, 0.125206500291824f, 0.984165430068970f,
+    0.124835193157196f,
+  0.984261035919189f, 0.124463804066181f, 0.984356343746185f,
+    0.124092340469360f,
+  0.984451413154602f, 0.123720809817314f, 0.984546124935150f,
+    0.123349204659462f,
+  0.984640598297119f, 0.122977524995804f, 0.984734773635864f,
+    0.122605770826340f,
+  0.984828710556030f, 0.122233949601650f, 0.984922289848328f,
+    0.121862053871155f,
+  0.985015630722046f, 0.121490091085434f, 0.985108673572540f,
+    0.121118053793907f,
+  0.985201418399811f, 0.120745941996574f, 0.985293865203857f,
+    0.120373763144016f,
+  0.985386073589325f, 0.120001509785652f, 0.985477983951569f,
+    0.119629189372063f,
+  0.985569596290588f, 0.119256794452667f, 0.985660910606384f,
+    0.118884332478046f,
+  0.985751926898956f, 0.118511803448200f, 0.985842704772949f,
+    0.118139199912548f,
+  0.985933184623718f, 0.117766529321671f, 0.986023366451263f,
+    0.117393791675568f,
+  0.986113250255585f, 0.117020979523659f, 0.986202836036682f,
+    0.116648100316525f,
+  0.986292183399200f, 0.116275154054165f, 0.986381232738495f,
+    0.115902140736580f,
+  0.986469984054565f, 0.115529052913189f, 0.986558437347412f,
+    0.115155905485153f,
+  0.986646652221680f, 0.114782683551311f, 0.986734509468079f,
+    0.114409394562244f,
+  0.986822128295898f, 0.114036038517952f, 0.986909449100494f,
+    0.113662622869015f,
+  0.986996471881866f, 0.113289132714272f, 0.987083256244659f,
+    0.112915575504303f,
+  0.987169682979584f, 0.112541958689690f, 0.987255871295929f,
+    0.112168267369270f,
+  0.987341761589050f, 0.111794516444206f, 0.987427353858948f,
+    0.111420698463917f,
+  0.987512648105621f, 0.111046813428402f, 0.987597703933716f,
+    0.110672861337662f,
+  0.987682461738586f, 0.110298842191696f, 0.987766921520233f,
+    0.109924763441086f,
+  0.987851083278656f, 0.109550617635250f, 0.987934947013855f,
+    0.109176412224770f,
+  0.988018512725830f, 0.108802139759064f, 0.988101840019226f,
+    0.108427800238132f,
+  0.988184869289398f, 0.108053401112556f, 0.988267600536346f,
+    0.107678934931755f,
+  0.988350033760071f, 0.107304409146309f, 0.988432228565216f,
+    0.106929816305637f,
+  0.988514065742493f, 0.106555156409740f, 0.988595664501190f,
+    0.106180444359779f,
+  0.988676965236664f, 0.105805665254593f, 0.988757967948914f,
+    0.105430819094181f,
+  0.988838672637939f, 0.105055920779705f, 0.988919138908386f,
+    0.104680955410004f,
+  0.988999247550964f, 0.104305922985077f, 0.989079117774963f,
+    0.103930838406086f,
+  0.989158689975739f, 0.103555686771870f, 0.989237964153290f,
+    0.103180475533009f,
+  0.989316940307617f, 0.102805204689503f, 0.989395678043365f,
+    0.102429874241352f,
+  0.989474058151245f, 0.102054484188557f, 0.989552199840546f,
+    0.101679034531116f,
+  0.989630043506622f, 0.101303517818451f, 0.989707589149475f,
+    0.100927948951721f,
+  0.989784896373749f, 0.100552320480347f, 0.989861845970154f,
+    0.100176624953747f,
+  0.989938557147980f, 0.099800877273083f, 0.990014970302582f,
+    0.099425069987774f,
+  0.990091085433960f, 0.099049203097820f, 0.990166902542114f,
+    0.098673284053802f,
+  0.990242421627045f, 0.098297297954559f, 0.990317702293396f,
+    0.097921259701252f,
+  0.990392625331879f, 0.097545161843300f, 0.990467309951782f,
+    0.097169004380703f,
+  0.990541696548462f, 0.096792794764042f, 0.990615785121918f,
+    0.096416525542736f,
+  0.990689575672150f, 0.096040196716785f, 0.990763127803802f,
+    0.095663815736771f,
+  0.990836322307587f, 0.095287375152111f, 0.990909278392792f,
+    0.094910882413387f,
+  0.990981936454773f, 0.094534330070019f, 0.991054296493530f,
+    0.094157725572586f,
+  0.991126358509064f, 0.093781061470509f, 0.991198182106018f,
+    0.093404345214367f,
+  0.991269648075104f, 0.093027576804161f, 0.991340875625610f,
+    0.092650748789310f,
+  0.991411805152893f, 0.092273868620396f, 0.991482377052307f,
+    0.091896936297417f,
+  0.991552770137787f, 0.091519944369793f, 0.991622805595398f,
+    0.091142900288105f,
+  0.991692543029785f, 0.090765804052353f, 0.991762042045593f,
+    0.090388655662537f,
+  0.991831183433533f, 0.090011447668076f, 0.991900086402893f,
+    0.089634194970131f,
+  0.991968691349030f, 0.089256882667542f, 0.992036998271942f,
+    0.088879525661469f,
+  0.992105066776276f, 0.088502109050751f, 0.992172777652740f,
+    0.088124647736549f,
+  0.992240250110626f, 0.087747126817703f, 0.992307364940643f,
+    0.087369553744793f,
+  0.992374241352081f, 0.086991935968399f, 0.992440819740295f,
+    0.086614266037941f,
+  0.992507100105286f, 0.086236543953419f, 0.992573142051697f,
+    0.085858769714832f,
+  0.992638826370239f, 0.085480943322182f, 0.992704212665558f,
+    0.085103072226048f,
+  0.992769360542297f, 0.084725148975849f, 0.992834210395813f,
+    0.084347173571587f,
+  0.992898762226105f, 0.083969146013260f, 0.992963016033173f,
+    0.083591073751450f,
+  0.993026971817017f, 0.083212949335575f, 0.993090689182281f,
+    0.082834780216217f,
+  0.993154048919678f, 0.082456558942795f, 0.993217170238495f,
+    0.082078292965889f,
+  0.993279933929443f, 0.081699974834919f, 0.993342459201813f,
+    0.081321612000465f,
+  0.993404686450958f, 0.080943197011948f, 0.993466615676880f,
+    0.080564737319946f,
+  0.993528306484222f, 0.080186225473881f, 0.993589639663696f,
+    0.079807676374912f,
+  0.993650734424591f, 0.079429075121880f, 0.993711471557617f,
+    0.079050421714783f,
+  0.993771970272064f, 0.078671731054783f, 0.993832170963287f,
+    0.078292988240719f,
+  0.993892073631287f, 0.077914200723171f, 0.993951678276062f,
+    0.077535368502140f,
+  0.994010984897614f, 0.077156484127045f, 0.994070053100586f,
+    0.076777562499046f,
+  0.994128763675690f, 0.076398596167564f, 0.994187235832214f,
+    0.076019577682018f,
+  0.994245409965515f, 0.075640521943569f, 0.994303286075592f,
+    0.075261414051056f,
+  0.994360864162445f, 0.074882268905640f, 0.994418144226074f,
+    0.074503071606159f,
+  0.994475126266479f, 0.074123837053776f, 0.994531810283661f,
+    0.073744557797909f,
+  0.994588255882263f, 0.073365233838558f, 0.994644403457642f,
+    0.072985872626305f,
+  0.994700193405151f, 0.072606459259987f, 0.994755744934082f,
+    0.072227008640766f,
+  0.994810998439789f, 0.071847513318062f, 0.994865953922272f,
+    0.071467980742455f,
+  0.994920611381531f, 0.071088403463364f, 0.994975030422211f,
+    0.070708781480789f,
+  0.995029091835022f, 0.070329122245312f, 0.995082914829254f,
+    0.069949418306351f,
+  0.995136380195618f, 0.069569669663906f, 0.995189607143402f,
+    0.069189883768559f,
+  0.995242536067963f, 0.068810060620308f, 0.995295166969299f,
+    0.068430192768574f,
+  0.995347499847412f, 0.068050287663937f, 0.995399534702301f,
+    0.067670337855816f,
+  0.995451331138611f, 0.067290350794792f, 0.995502769947052f,
+    0.066910326480865f,
+  0.995553970336914f, 0.066530264914036f, 0.995604813098907f,
+    0.066150158643723f,
+  0.995655417442322f, 0.065770015120506f, 0.995705723762512f,
+    0.065389834344387f,
+  0.995755732059479f, 0.065009608864784f, 0.995805442333221f,
+    0.064629353582859f,
+  0.995854854583740f, 0.064249053597450f, 0.995904028415680f,
+    0.063868723809719f,
+  0.995952844619751f, 0.063488349318504f, 0.996001422405243f,
+    0.063107937574387f,
+  0.996049642562866f, 0.062727488577366f, 0.996097624301910f,
+    0.062347009778023f,
+  0.996145308017731f, 0.061966486275196f, 0.996192693710327f,
+    0.061585929244757f,
+  0.996239781379700f, 0.061205338686705f, 0.996286571025848f,
+    0.060824707150459f,
+  0.996333062648773f, 0.060444042086601f, 0.996379256248474f,
+    0.060063343495131f,
+  0.996425211429596f, 0.059682607650757f, 0.996470808982849f,
+    0.059301838278770f,
+  0.996516168117523f, 0.058921031653881f, 0.996561229228973f,
+    0.058540191501379f,
+  0.996605992317200f, 0.058159314095974f, 0.996650457382202f,
+    0.057778406888247f,
+  0.996694624423981f, 0.057397462427616f, 0.996738493442535f,
+    0.057016488164663f,
+  0.996782064437866f, 0.056635476648808f, 0.996825337409973f,
+    0.056254431605339f,
+  0.996868371963501f, 0.055873356759548f, 0.996911048889160f,
+    0.055492244660854f,
+  0.996953487396240f, 0.055111102759838f, 0.996995627880096f,
+    0.054729927331209f,
+  0.997037410736084f, 0.054348722100258f, 0.997078955173492f,
+    0.053967483341694f,
+  0.997120201587677f, 0.053586211055517f, 0.997161149978638f,
+    0.053204908967018f,
+  0.997201859951019f, 0.052823577076197f, 0.997242212295532f,
+    0.052442211657763f,
+  0.997282266616821f, 0.052060816437006f, 0.997322082519531f,
+    0.051679391413927f,
+  0.997361540794373f, 0.051297932863235f, 0.997400760650635f,
+    0.050916448235512f,
+  0.997439682483673f, 0.050534930080175f, 0.997478306293488f,
+    0.050153385847807f,
+  0.997516572475433f, 0.049771808087826f, 0.997554600238800f,
+    0.049390204250813f,
+  0.997592389583588f, 0.049008570611477f, 0.997629821300507f,
+    0.048626907169819f,
+  0.997666954994202f, 0.048245213925838f, 0.997703790664673f,
+    0.047863494604826f,
+  0.997740387916565f, 0.047481749206781f, 0.997776627540588f,
+    0.047099970281124f,
+  0.997812628746033f, 0.046718169003725f, 0.997848331928253f,
+    0.046336337924004f,
+  0.997883677482605f, 0.045954477041960f, 0.997918784618378f,
+    0.045572593808174f,
+  0.997953593730927f, 0.045190680772066f, 0.997988104820251f,
+    0.044808741658926f,
+  0.998022377490997f, 0.044426776468754f, 0.998056292533875f,
+    0.044044785201550f,
+  0.998089909553528f, 0.043662767857313f, 0.998123228549957f,
+    0.043280724436045f,
+  0.998156309127808f, 0.042898654937744f, 0.998189091682434f,
+    0.042516563087702f,
+  0.998221516609192f, 0.042134445160627f, 0.998253703117371f,
+    0.041752301156521f,
+  0.998285591602325f, 0.041370131075382f, 0.998317182064056f,
+    0.040987938642502f,
+  0.998348474502563f, 0.040605723857880f, 0.998379468917847f,
+    0.040223482996225f,
+  0.998410165309906f, 0.039841219782829f, 0.998440563678741f,
+    0.039458930492401f,
+  0.998470664024353f, 0.039076622575521f, 0.998500525951386f,
+    0.038694288581610f,
+  0.998530030250549f, 0.038311932235956f, 0.998559296131134f,
+    0.037929553538561f,
+  0.998588204383850f, 0.037547148764133f, 0.998616874217987f,
+    0.037164725363255f,
+  0.998645246028900f, 0.036782283335924f, 0.998673319816589f,
+    0.036399815231562f,
+  0.998701035976410f, 0.036017324775457f, 0.998728513717651f,
+    0.035634815692902f,
+  0.998755753040314f, 0.035252287983894f, 0.998782634735107f,
+    0.034869734197855f,
+  0.998809218406677f, 0.034487165510654f, 0.998835504055023f,
+    0.034104570746422f,
+  0.998861551284790f, 0.033721961081028f, 0.998887240886688f,
+    0.033339329063892f,
+  0.998912692070007f, 0.032956674695015f, 0.998937785625458f,
+    0.032574005424976f,
+  0.998962640762329f, 0.032191313803196f, 0.998987197875977f,
+    0.031808607280254f,
+  0.999011456966400f, 0.031425878405571f, 0.999035418033600f,
+    0.031043132767081f,
+  0.999059081077576f, 0.030660368502140f, 0.999082446098328f,
+    0.030277585610747f,
+  0.999105513095856f, 0.029894785955548f, 0.999128282070160f,
+    0.029511967673898f,
+  0.999150753021240f, 0.029129132628441f, 0.999172985553741f,
+    0.028746278956532f,
+  0.999194860458374f, 0.028363410383463f, 0.999216496944427f,
+    0.027980525046587f,
+  0.999237775802612f, 0.027597622945905f, 0.999258816242218f,
+    0.027214704081416f,
+  0.999279558658600f, 0.026831768453121f, 0.999299943447113f,
+    0.026448817923665f,
+  0.999320089817047f, 0.026065852493048f, 0.999339938163757f,
+    0.025682870298624f,
+  0.999359488487244f, 0.025299875065684f, 0.999378740787506f,
+    0.024916863068938f,
+  0.999397754669189f, 0.024533838033676f, 0.999416410923004f,
+    0.024150796234608f,
+  0.999434769153595f, 0.023767741397023f, 0.999452829360962f,
+    0.023384673520923f,
+  0.999470651149750f, 0.023001590743661f, 0.999488115310669f,
+    0.022618494927883f,
+  0.999505341053009f, 0.022235386073589f, 0.999522268772125f,
+    0.021852264180779f,
+  0.999538838863373f, 0.021469129249454f, 0.999555170536041f,
+    0.021085981279612f,
+  0.999571204185486f, 0.020702820271254f, 0.999586939811707f,
+    0.020319648087025f,
+  0.999602377414703f, 0.019936462864280f, 0.999617516994476f,
+    0.019553268328309f,
+  0.999632358551025f, 0.019170060753822f, 0.999646902084351f,
+    0.018786842003465f,
+  0.999661207199097f, 0.018403612077236f, 0.999675154685974f,
+    0.018020370975137f,
+  0.999688863754272f, 0.017637118697166f, 0.999702215194702f,
+    0.017253857105970f,
+  0.999715328216553f, 0.016870586201549f, 0.999728083610535f,
+    0.016487304121256f,
+  0.999740600585938f, 0.016104012727737f, 0.999752819538116f,
+    0.015720712020993f,
+  0.999764680862427f, 0.015337402001023f, 0.999776303768158f,
+    0.014954082667828f,
+  0.999787628650665f, 0.014570754021406f, 0.999798655509949f,
+    0.014187417924404f,
+  0.999809384346008f, 0.013804072514176f, 0.999819874763489f,
+    0.013420719653368f,
+  0.999830007553101f, 0.013037359341979f, 0.999839842319489f,
+    0.012653990648687f,
+  0.999849438667297f, 0.012270614504814f, 0.999858677387238f,
+    0.011887230910361f,
+  0.999867618083954f, 0.011503840796649f, 0.999876320362091f,
+    0.011120444163680f,
+  0.999884724617004f, 0.010737040080130f, 0.999892771244049f,
+    0.010353630408645f,
+  0.999900579452515f, 0.009970214217901f, 0.999908089637756f,
+    0.009586792439222f,
+  0.999915301799774f, 0.009203365072608f, 0.999922215938568f,
+    0.008819932118058f,
+  0.999928832054138f, 0.008436493575573f, 0.999935150146484f,
+    0.008053051307797f,
+  0.999941170215607f, 0.007669602986425f, 0.999946892261505f,
+    0.007286150939763f,
+  0.999952375888824f, 0.006902694236487f, 0.999957501888275f,
+    0.006519233807921f,
+  0.999962329864502f, 0.006135769188404f, 0.999966919422150f,
+    0.005752300843596f,
+  0.999971151351929f, 0.005368829704821f, 0.999975144863129f,
+    0.004985354840755f,
+  0.999978840351105f, 0.004601877182722f, 0.999982178211212f,
+    0.004218397196382f,
+  0.999985277652740f, 0.003834914416075f, 0.999988079071045f,
+    0.003451429307461f,
+  0.999990582466125f, 0.003067942336202f, 0.999992787837982f,
+    0.002684453502297f,
+  0.999994695186615f, 0.002300963038579f, 0.999996304512024f,
+    0.001917471294291f,
+  0.999997675418854f, 0.001533978385851f, 0.999998688697815f,
+    0.001150484546088f,
+  0.999999403953552f, 0.000766990066040f, 0.999999880790710f,
+    0.000383495149435f,
+  1.000000000000000f, 0.000000000000023f, 0.999999880790710f,
+    -0.000383495149435f,
+  0.999999403953552f, -0.000766990066040f, 0.999998688697815f,
+    -0.001150484546088f,
+  0.999997675418854f, -0.001533978385851f, 0.999996304512024f,
+    -0.001917471294291f,
+  0.999994695186615f, -0.002300963038579f, 0.999992787837982f,
+    -0.002684453502297f,
+  0.999990582466125f, -0.003067942336202f, 0.999988079071045f,
+    -0.003451429307461f,
+  0.999985277652740f, -0.003834914416075f, 0.999982178211212f,
+    -0.004218397196382f,
+  0.999978840351105f, -0.004601877182722f, 0.999975144863129f,
+    -0.004985354840755f,
+  0.999971151351929f, -0.005368829704821f, 0.999966919422150f,
+    -0.005752300843596f,
+  0.999962329864502f, -0.006135769188404f, 0.999957501888275f,
+    -0.006519233807921f,
+  0.999952375888824f, -0.006902694236487f, 0.999946892261505f,
+    -0.007286150939763f,
+  0.999941170215607f, -0.007669602986425f, 0.999935150146484f,
+    -0.008053051307797f,
+  0.999928832054138f, -0.008436493575573f, 0.999922215938568f,
+    -0.008819932118058f,
+  0.999915301799774f, -0.009203365072608f, 0.999908089637756f,
+    -0.009586792439222f,
+  0.999900579452515f, -0.009970214217901f, 0.999892771244049f,
+    -0.010353630408645f,
+  0.999884724617004f, -0.010737040080130f, 0.999876320362091f,
+    -0.011120444163680f,
+  0.999867618083954f, -0.011503840796649f, 0.999858677387238f,
+    -0.011887230910361f,
+  0.999849438667297f, -0.012270614504814f, 0.999839842319489f,
+    -0.012653990648687f,
+  0.999830007553101f, -0.013037359341979f, 0.999819874763489f,
+    -0.013420719653368f,
+  0.999809384346008f, -0.013804072514176f, 0.999798655509949f,
+    -0.014187417924404f,
+  0.999787628650665f, -0.014570754021406f, 0.999776303768158f,
+    -0.014954082667828f,
+  0.999764680862427f, -0.015337402001023f, 0.999752819538116f,
+    -0.015720712020993f,
+  0.999740600585938f, -0.016104012727737f, 0.999728083610535f,
+    -0.016487304121256f,
+  0.999715328216553f, -0.016870586201549f, 0.999702215194702f,
+    -0.017253857105970f,
+  0.999688863754272f, -0.017637118697166f, 0.999675154685974f,
+    -0.018020370975137f,
+  0.999661207199097f, -0.018403612077236f, 0.999646902084351f,
+    -0.018786842003465f,
+  0.999632358551025f, -0.019170060753822f, 0.999617516994476f,
+    -0.019553268328309f,
+  0.999602377414703f, -0.019936462864280f, 0.999586939811707f,
+    -0.020319648087025f,
+  0.999571204185486f, -0.020702820271254f, 0.999555170536041f,
+    -0.021085981279612f,
+  0.999538838863373f, -0.021469129249454f, 0.999522268772125f,
+    -0.021852264180779f,
+  0.999505341053009f, -0.022235386073589f, 0.999488115310669f,
+    -0.022618494927883f,
+  0.999470651149750f, -0.023001590743661f, 0.999452829360962f,
+    -0.023384673520923f,
+  0.999434769153595f, -0.023767741397023f, 0.999416410923004f,
+    -0.024150796234608f,
+  0.999397754669189f, -0.024533838033676f, 0.999378740787506f,
+    -0.024916863068938f,
+  0.999359488487244f, -0.025299875065684f, 0.999339938163757f,
+    -0.025682870298624f,
+  0.999320089817047f, -0.026065852493048f, 0.999299943447113f,
+    -0.026448817923665f,
+  0.999279558658600f, -0.026831768453121f, 0.999258816242218f,
+    -0.027214704081416f,
+  0.999237775802612f, -0.027597622945905f, 0.999216496944427f,
+    -0.027980525046587f,
+  0.999194860458374f, -0.028363410383463f, 0.999172985553741f,
+    -0.028746278956532f,
+  0.999150753021240f, -0.029129132628441f, 0.999128282070160f,
+    -0.029511967673898f,
+  0.999105513095856f, -0.029894785955548f, 0.999082446098328f,
+    -0.030277585610747f,
+  0.999059081077576f, -0.030660368502140f, 0.999035418033600f,
+    -0.031043132767081f,
+  0.999011456966400f, -0.031425878405571f, 0.998987197875977f,
+    -0.031808607280254f,
+  0.998962640762329f, -0.032191313803196f, 0.998937785625458f,
+    -0.032574005424976f,
+  0.998912692070007f, -0.032956674695015f, 0.998887240886688f,
+    -0.033339329063892f,
+  0.998861551284790f, -0.033721961081028f, 0.998835504055023f,
+    -0.034104570746422f,
+  0.998809218406677f, -0.034487165510654f, 0.998782634735107f,
+    -0.034869734197855f,
+  0.998755753040314f, -0.035252287983894f, 0.998728513717651f,
+    -0.035634815692902f,
+  0.998701035976410f, -0.036017324775457f, 0.998673319816589f,
+    -0.036399815231562f,
+  0.998645246028900f, -0.036782283335924f, 0.998616874217987f,
+    -0.037164725363255f,
+  0.998588204383850f, -0.037547148764133f, 0.998559296131134f,
+    -0.037929553538561f,
+  0.998530030250549f, -0.038311932235956f, 0.998500525951386f,
+    -0.038694288581610f,
+  0.998470664024353f, -0.039076622575521f, 0.998440563678741f,
+    -0.039458930492401f,
+  0.998410165309906f, -0.039841219782829f, 0.998379468917847f,
+    -0.040223482996225f,
+  0.998348474502563f, -0.040605723857880f, 0.998317182064056f,
+    -0.040987938642502f,
+  0.998285591602325f, -0.041370131075382f, 0.998253703117371f,
+    -0.041752301156521f,
+  0.998221516609192f, -0.042134445160627f, 0.998189091682434f,
+    -0.042516563087702f,
+  0.998156309127808f, -0.042898654937744f, 0.998123228549957f,
+    -0.043280724436045f,
+  0.998089909553528f, -0.043662767857313f, 0.998056292533875f,
+    -0.044044785201550f,
+  0.998022377490997f, -0.044426776468754f, 0.997988104820251f,
+    -0.044808741658926f,
+  0.997953593730927f, -0.045190680772066f, 0.997918784618378f,
+    -0.045572593808174f,
+  0.997883677482605f, -0.045954477041960f, 0.997848331928253f,
+    -0.046336337924004f,
+  0.997812628746033f, -0.046718169003725f, 0.997776627540588f,
+    -0.047099970281124f,
+  0.997740387916565f, -0.047481749206781f, 0.997703790664673f,
+    -0.047863494604826f,
+  0.997666954994202f, -0.048245213925838f, 0.997629821300507f,
+    -0.048626907169819f,
+  0.997592389583588f, -0.049008570611477f, 0.997554600238800f,
+    -0.049390204250813f,
+  0.997516572475433f, -0.049771808087826f, 0.997478306293488f,
+    -0.050153385847807f,
+  0.997439682483673f, -0.050534930080175f, 0.997400760650635f,
+    -0.050916448235512f,
+  0.997361540794373f, -0.051297932863235f, 0.997322082519531f,
+    -0.051679391413927f,
+  0.997282266616821f, -0.052060816437006f, 0.997242212295532f,
+    -0.052442211657763f,
+  0.997201859951019f, -0.052823577076197f, 0.997161149978638f,
+    -0.053204908967018f,
+  0.997120201587677f, -0.053586211055517f, 0.997078955173492f,
+    -0.053967483341694f,
+  0.997037410736084f, -0.054348722100258f, 0.996995627880096f,
+    -0.054729927331209f,
+  0.996953487396240f, -0.055111102759838f, 0.996911048889160f,
+    -0.055492244660854f,
+  0.996868371963501f, -0.055873356759548f, 0.996825337409973f,
+    -0.056254431605339f,
+  0.996782064437866f, -0.056635476648808f, 0.996738493442535f,
+    -0.057016488164663f,
+  0.996694624423981f, -0.057397462427616f, 0.996650457382202f,
+    -0.057778406888247f,
+  0.996605992317200f, -0.058159314095974f, 0.996561229228973f,
+    -0.058540191501379f,
+  0.996516168117523f, -0.058921031653881f, 0.996470808982849f,
+    -0.059301838278770f,
+  0.996425211429596f, -0.059682607650757f, 0.996379256248474f,
+    -0.060063343495131f,
+  0.996333062648773f, -0.060444042086601f, 0.996286571025848f,
+    -0.060824707150459f,
+  0.996239781379700f, -0.061205338686705f, 0.996192693710327f,
+    -0.061585929244757f,
+  0.996145308017731f, -0.061966486275196f, 0.996097624301910f,
+    -0.062347009778023f,
+  0.996049642562866f, -0.062727488577366f, 0.996001422405243f,
+    -0.063107937574387f,
+  0.995952844619751f, -0.063488349318504f, 0.995904028415680f,
+    -0.063868723809719f,
+  0.995854854583740f, -0.064249053597450f, 0.995805442333221f,
+    -0.064629353582859f,
+  0.995755732059479f, -0.065009608864784f, 0.995705723762512f,
+    -0.065389834344387f,
+  0.995655417442322f, -0.065770015120506f, 0.995604813098907f,
+    -0.066150158643723f,
+  0.995553970336914f, -0.066530264914036f, 0.995502769947052f,
+    -0.066910326480865f,
+  0.995451331138611f, -0.067290350794792f, 0.995399534702301f,
+    -0.067670337855816f,
+  0.995347499847412f, -0.068050287663937f, 0.995295166969299f,
+    -0.068430192768574f,
+  0.995242536067963f, -0.068810060620308f, 0.995189607143402f,
+    -0.069189883768559f,
+  0.995136380195618f, -0.069569669663906f, 0.995082914829254f,
+    -0.069949418306351f,
+  0.995029091835022f, -0.070329122245312f, 0.994975030422211f,
+    -0.070708781480789f,
+  0.994920611381531f, -0.071088403463364f, 0.994865953922272f,
+    -0.071467980742455f,
+  0.994810998439789f, -0.071847513318062f, 0.994755744934082f,
+    -0.072227008640766f,
+  0.994700193405151f, -0.072606459259987f, 0.994644403457642f,
+    -0.072985872626305f,
+  0.994588255882263f, -0.073365233838558f, 0.994531810283661f,
+    -0.073744557797909f,
+  0.994475126266479f, -0.074123837053776f, 0.994418144226074f,
+    -0.074503071606159f,
+  0.994360864162445f, -0.074882268905640f, 0.994303286075592f,
+    -0.075261414051056f,
+  0.994245409965515f, -0.075640521943569f, 0.994187235832214f,
+    -0.076019577682018f,
+  0.994128763675690f, -0.076398596167564f, 0.994070053100586f,
+    -0.076777562499046f,
+  0.994010984897614f, -0.077156484127045f, 0.993951678276062f,
+    -0.077535368502140f,
+  0.993892073631287f, -0.077914200723171f, 0.993832170963287f,
+    -0.078292988240719f,
+  0.993771970272064f, -0.078671731054783f, 0.993711471557617f,
+    -0.079050421714783f,
+  0.993650734424591f, -0.079429075121880f, 0.993589639663696f,
+    -0.079807676374912f,
+  0.993528306484222f, -0.080186225473881f, 0.993466615676880f,
+    -0.080564737319946f,
+  0.993404686450958f, -0.080943197011948f, 0.993342459201813f,
+    -0.081321612000465f,
+  0.993279933929443f, -0.081699974834919f, 0.993217170238495f,
+    -0.082078292965889f,
+  0.993154048919678f, -0.082456558942795f, 0.993090689182281f,
+    -0.082834780216217f,
+  0.993026971817017f, -0.083212949335575f, 0.992963016033173f,
+    -0.083591073751450f,
+  0.992898762226105f, -0.083969146013260f, 0.992834210395813f,
+    -0.084347173571587f,
+  0.992769360542297f, -0.084725148975849f, 0.992704212665558f,
+    -0.085103072226048f,
+  0.992638826370239f, -0.085480943322182f, 0.992573142051697f,
+    -0.085858769714832f,
+  0.992507100105286f, -0.086236543953419f, 0.992440819740295f,
+    -0.086614266037941f,
+  0.992374241352081f, -0.086991935968399f, 0.992307364940643f,
+    -0.087369553744793f,
+  0.992240250110626f, -0.087747126817703f, 0.992172777652740f,
+    -0.088124647736549f,
+  0.992105066776276f, -0.088502109050751f, 0.992036998271942f,
+    -0.088879525661469f,
+  0.991968691349030f, -0.089256882667542f, 0.991900086402893f,
+    -0.089634194970131f,
+  0.991831183433533f, -0.090011447668076f, 0.991762042045593f,
+    -0.090388655662537f,
+  0.991692543029785f, -0.090765804052353f, 0.991622805595398f,
+    -0.091142900288105f,
+  0.991552770137787f, -0.091519944369793f, 0.991482377052307f,
+    -0.091896936297417f,
+  0.991411805152893f, -0.092273868620396f, 0.991340875625610f,
+    -0.092650748789310f,
+  0.991269648075104f, -0.093027576804161f, 0.991198182106018f,
+    -0.093404345214367f,
+  0.991126358509064f, -0.093781061470509f, 0.991054296493530f,
+    -0.094157725572586f,
+  0.990981936454773f, -0.094534330070019f, 0.990909278392792f,
+    -0.094910882413387f,
+  0.990836322307587f, -0.095287375152111f, 0.990763127803802f,
+    -0.095663815736771f,
+  0.990689575672150f, -0.096040196716785f, 0.990615785121918f,
+    -0.096416525542736f,
+  0.990541696548462f, -0.096792794764042f, 0.990467309951782f,
+    -0.097169004380703f,
+  0.990392625331879f, -0.097545161843300f, 0.990317702293396f,
+    -0.097921259701252f,
+  0.990242421627045f, -0.098297297954559f, 0.990166902542114f,
+    -0.098673284053802f,
+  0.990091085433960f, -0.099049203097820f, 0.990014970302582f,
+    -0.099425069987774f,
+  0.989938557147980f, -0.099800877273083f, 0.989861845970154f,
+    -0.100176624953747f,
+  0.989784896373749f, -0.100552320480347f, 0.989707589149475f,
+    -0.100927948951721f,
+  0.989630043506622f, -0.101303517818451f, 0.989552199840546f,
+    -0.101679034531116f,
+  0.989474058151245f, -0.102054484188557f, 0.989395678043365f,
+    -0.102429874241352f,
+  0.989316940307617f, -0.102805204689503f, 0.989237964153290f,
+    -0.103180475533009f,
+  0.989158689975739f, -0.103555686771870f, 0.989079117774963f,
+    -0.103930838406086f,
+  0.988999247550964f, -0.104305922985077f, 0.988919138908386f,
+    -0.104680955410004f,
+  0.988838672637939f, -0.105055920779705f, 0.988757967948914f,
+    -0.105430819094181f,
+  0.988676965236664f, -0.105805665254593f, 0.988595664501190f,
+    -0.106180444359779f,
+  0.988514065742493f, -0.106555156409740f, 0.988432228565216f,
+    -0.106929816305637f,
+  0.988350033760071f, -0.107304409146309f, 0.988267600536346f,
+    -0.107678934931755f,
+  0.988184869289398f, -0.108053401112556f, 0.988101840019226f,
+    -0.108427800238132f,
+  0.988018512725830f, -0.108802139759064f, 0.987934947013855f,
+    -0.109176412224770f,
+  0.987851083278656f, -0.109550617635250f, 0.987766921520233f,
+    -0.109924763441086f,
+  0.987682461738586f, -0.110298842191696f, 0.987597703933716f,
+    -0.110672861337662f,
+  0.987512648105621f, -0.111046813428402f, 0.987427353858948f,
+    -0.111420698463917f,
+  0.987341761589050f, -0.111794516444206f, 0.987255871295929f,
+    -0.112168267369270f,
+  0.987169682979584f, -0.112541958689690f, 0.987083256244659f,
+    -0.112915575504303f,
+  0.986996471881866f, -0.113289132714272f, 0.986909449100494f,
+    -0.113662622869015f,
+  0.986822128295898f, -0.114036038517952f, 0.986734509468079f,
+    -0.114409394562244f,
+  0.986646652221680f, -0.114782683551311f, 0.986558437347412f,
+    -0.115155905485153f,
+  0.986469984054565f, -0.115529052913189f, 0.986381232738495f,
+    -0.115902140736580f,
+  0.986292183399200f, -0.116275154054165f, 0.986202836036682f,
+    -0.116648100316525f,
+  0.986113250255585f, -0.117020979523659f, 0.986023366451263f,
+    -0.117393791675568f,
+  0.985933184623718f, -0.117766529321671f, 0.985842704772949f,
+    -0.118139199912548f,
+  0.985751926898956f, -0.118511803448200f, 0.985660910606384f,
+    -0.118884332478046f,
+  0.985569596290588f, -0.119256794452667f, 0.985477983951569f,
+    -0.119629189372063f,
+  0.985386073589325f, -0.120001509785652f, 0.985293865203857f,
+    -0.120373763144016f,
+  0.985201418399811f, -0.120745941996574f, 0.985108673572540f,
+    -0.121118053793907f,
+  0.985015630722046f, -0.121490091085434f, 0.984922289848328f,
+    -0.121862053871155f,
+  0.984828710556030f, -0.122233949601650f, 0.984734773635864f,
+    -0.122605770826340f,
+  0.984640598297119f, -0.122977524995804f, 0.984546124935150f,
+    -0.123349204659462f,
+  0.984451413154602f, -0.123720809817314f, 0.984356343746185f,
+    -0.124092340469360f,
+  0.984261035919189f, -0.124463804066181f, 0.984165430068970f,
+    -0.124835193157196f,
+  0.984069526195526f, -0.125206500291824f, 0.983973383903503f,
+    -0.125577747821808f,
+  0.983876943588257f, -0.125948905944824f, 0.983780145645142f,
+    -0.126320004463196f,
+  0.983683168888092f, -0.126691013574600f, 0.983585834503174f,
+    -0.127061963081360f,
+  0.983488261699677f, -0.127432823181152f, 0.983390331268311f,
+    -0.127803623676300f,
+  0.983292162418365f, -0.128174334764481f, 0.983193755149841f,
+    -0.128544986248016f,
+  0.983094990253448f, -0.128915548324585f, 0.982995986938477f,
+    -0.129286035895348f,
+  0.982896685600281f, -0.129656463861465f, 0.982797086238861f,
+    -0.130026802420616f,
+  0.982697248458862f, -0.130397051572800f, 0.982597053050995f,
+    -0.130767241120338f,
+  0.982496619224548f, -0.131137356162071f, 0.982395887374878f,
+    -0.131507381796837f,
+  0.982294917106628f, -0.131877332925797f, 0.982193589210510f,
+    -0.132247209548950f,
+  0.982092022895813f, -0.132617011666298f, 0.981990158557892f,
+    -0.132986739277840f,
+  0.981888055801392f, -0.133356377482414f, 0.981785595417023f,
+    -0.133725941181183f,
+  0.981682896614075f, -0.134095430374146f, 0.981579899787903f,
+    -0.134464830160141f,
+  0.981476604938507f, -0.134834155440331f, 0.981373071670532f,
+    -0.135203406214714f,
+  0.981269240379334f, -0.135572582483292f, 0.981165111064911f,
+    -0.135941669344902f,
+  0.981060683727264f, -0.136310681700706f, 0.980956017971039f,
+    -0.136679604649544f,
+  0.980851054191589f, -0.137048453092575f, 0.980745792388916f,
+    -0.137417227029800f,
+  0.980640232563019f, -0.137785911560059f, 0.980534434318542f,
+    -0.138154521584511f,
+  0.980428338050842f, -0.138523042201996f, 0.980321943759918f,
+    -0.138891488313675f,
+  0.980215251445770f, -0.139259845018387f, 0.980108320713043f,
+    -0.139628127217293f,
+  0.980001091957092f, -0.139996320009232f, 0.979893565177917f,
+    -0.140364438295364f,
+  0.979785740375519f, -0.140732467174530f, 0.979677677154541f,
+    -0.141100421547890f,
+  0.979569315910339f, -0.141468286514282f, 0.979460656642914f,
+    -0.141836062073708f,
+  0.979351758956909f, -0.142203763127327f, 0.979242503643036f,
+    -0.142571389675140f,
+  0.979133009910584f, -0.142938911914825f, 0.979023277759552f,
+    -0.143306359648705f,
+  0.978913187980652f, -0.143673732876778f, 0.978802859783173f,
+    -0.144041016697884f,
+  0.978692233562469f, -0.144408211112022f, 0.978581368923187f,
+    -0.144775316119194f,
+  0.978470146656036f, -0.145142331719399f, 0.978358685970306f,
+    -0.145509272813797f,
+  0.978246986865997f, -0.145876124501228f, 0.978134930133820f,
+    -0.146242901682854f,
+  0.978022634983063f, -0.146609574556351f, 0.977910041809082f,
+    -0.146976172924042f,
+  0.977797150611877f, -0.147342681884766f, 0.977684020996094f,
+    -0.147709101438522f,
+  0.977570593357086f, -0.148075446486473f, 0.977456867694855f,
+    -0.148441687226295f,
+  0.977342903614044f, -0.148807853460312f, 0.977228581905365f,
+    -0.149173930287361f,
+  0.977114021778107f, -0.149539917707443f, 0.976999223232269f,
+    -0.149905815720558f,
+  0.976884067058563f, -0.150271624326706f, 0.976768672466278f,
+    -0.150637343525887f,
+  0.976653039455414f, -0.151002973318100f, 0.976537048816681f,
+    -0.151368513703346f,
+  0.976420819759369f, -0.151733979582787f, 0.976304292678833f,
+    -0.152099341154099f,
+  0.976187527179718f, -0.152464613318443f, 0.976070404052734f,
+    -0.152829796075821f,
+  0.975953042507172f, -0.153194904327393f, 0.975835442543030f,
+    -0.153559908270836f,
+  0.975717484951019f, -0.153924822807312f, 0.975599288940430f,
+    -0.154289647936821f,
+  0.975480854511261f, -0.154654383659363f, 0.975362062454224f,
+    -0.155019029974937f,
+  0.975243031978607f, -0.155383571982384f, 0.975123703479767f,
+    -0.155748039484024f,
+  0.975004136562347f, -0.156112402677536f, 0.974884271621704f,
+    -0.156476691365242f,
+  0.974764108657837f, -0.156840875744820f, 0.974643647670746f,
+    -0.157204970717430f,
+  0.974522948265076f, -0.157568961381912f, 0.974401950836182f,
+    -0.157932877540588f,
+  0.974280655384064f, -0.158296689391136f, 0.974159121513367f,
+    -0.158660411834717f,
+  0.974037289619446f, -0.159024044871330f, 0.973915159702301f,
+    -0.159387573599815f,
+  0.973792791366577f, -0.159751012921333f, 0.973670125007629f,
+    -0.160114362835884f,
+  0.973547160625458f, -0.160477623343468f, 0.973423957824707f,
+    -0.160840779542923f,
+  0.973300457000732f, -0.161203846335411f, 0.973176658153534f,
+    -0.161566808819771f,
+  0.973052620887756f, -0.161929681897163f, 0.972928285598755f,
+    -0.162292465567589f,
+  0.972803652286530f, -0.162655144929886f, 0.972678780555725f,
+    -0.163017734885216f,
+  0.972553610801697f, -0.163380220532417f, 0.972428143024445f,
+    -0.163742616772652f,
+  0.972302436828613f, -0.164104923605919f, 0.972176432609558f,
+    -0.164467126131058f,
+  0.972050130367279f, -0.164829224348068f, 0.971923589706421f,
+    -0.165191248059273f,
+  0.971796751022339f, -0.165553152561188f, 0.971669614315033f,
+    -0.165914967656136f,
+  0.971542239189148f, -0.166276678442955f, 0.971414566040039f,
+    -0.166638299822807f,
+  0.971286594867706f, -0.166999831795692f, 0.971158385276794f,
+    -0.167361244559288f,
+  0.971029877662659f, -0.167722567915916f, 0.970901072025299f,
+    -0.168083801865578f,
+  0.970772027969360f, -0.168444931507111f, 0.970642685890198f,
+    -0.168805956840515f,
+  0.970513105392456f, -0.169166877865791f, 0.970383226871490f,
+    -0.169527709484100f,
+  0.970253050327301f, -0.169888436794281f, 0.970122575759888f,
+    -0.170249074697495f,
+  0.969991862773895f, -0.170609608292580f, 0.969860911369324f,
+    -0.170970037579536f,
+  0.969729602336884f, -0.171330362558365f, 0.969598054885864f,
+    -0.171690583229065f,
+  0.969466269016266f, -0.172050714492798f, 0.969334125518799f,
+    -0.172410741448402f,
+  0.969201743602753f, -0.172770664095879f, 0.969069123268127f,
+    -0.173130482435226f,
+  0.968936204910278f, -0.173490211367607f, 0.968802988529205f,
+    -0.173849821090698f,
+  0.968669533729553f, -0.174209341406822f, 0.968535780906677f,
+    -0.174568757414818f,
+  0.968401730060577f, -0.174928069114685f, 0.968267440795898f,
+    -0.175287276506424f,
+  0.968132853507996f, -0.175646379590034f, 0.967997968196869f,
+    -0.176005378365517f,
+  0.967862844467163f, -0.176364272832870f, 0.967727422714233f,
+    -0.176723077893257f,
+  0.967591762542725f, -0.177081763744354f, 0.967455804347992f,
+    -0.177440345287323f,
+  0.967319548130035f, -0.177798837423325f, 0.967183053493500f,
+    -0.178157210350037f,
+  0.967046260833740f, -0.178515478968620f, 0.966909229755402f,
+    -0.178873643279076f,
+  0.966771900653839f, -0.179231703281403f, 0.966634273529053f,
+    -0.179589673876762f,
+  0.966496407985687f, -0.179947525262833f, 0.966358244419098f,
+    -0.180305257439613f,
+  0.966219842433929f, -0.180662900209427f, 0.966081082820892f,
+    -0.181020438671112f,
+  0.965942144393921f, -0.181377857923508f, 0.965802907943726f,
+    -0.181735187768936f,
+  0.965663373470306f, -0.182092398405075f, 0.965523540973663f,
+    -0.182449504733086f,
+  0.965383470058441f, -0.182806491851807f, 0.965243160724640f,
+    -0.183163389563560f,
+  0.965102493762970f, -0.183520168066025f, 0.964961588382721f,
+    -0.183876842260361f,
+  0.964820444583893f, -0.184233412146568f, 0.964679002761841f,
+    -0.184589877724648f,
+  0.964537262916565f, -0.184946224093437f, 0.964395284652710f,
+    -0.185302466154099f,
+  0.964253067970276f, -0.185658603906631f, 0.964110493659973f,
+    -0.186014622449875f,
+  0.963967680931091f, -0.186370536684990f, 0.963824629783630f,
+    -0.186726331710815f,
+  0.963681280612946f, -0.187082037329674f, 0.963537633419037f,
+    -0.187437608838081f,
+  0.963393747806549f, -0.187793090939522f, 0.963249564170837f,
+    -0.188148453831673f,
+  0.963105142116547f, -0.188503712415695f, 0.962960422039032f,
+    -0.188858851790428f,
+  0.962815403938293f, -0.189213871955872f, 0.962670147418976f,
+    -0.189568802714348f,
+  0.962524592876434f, -0.189923599362373f, 0.962378799915314f,
+    -0.190278306603432f,
+  0.962232708930969f, -0.190632879734039f, 0.962086379528046f,
+    -0.190987363457680f,
+  0.961939752101898f, -0.191341713070869f, 0.961792886257172f,
+    -0.191695958375931f,
+  0.961645722389221f, -0.192050099372864f, 0.961498260498047f,
+    -0.192404121160507f,
+  0.961350560188293f, -0.192758023738861f, 0.961202561855316f,
+    -0.193111822009087f,
+  0.961054325103760f, -0.193465501070023f, 0.960905790328979f,
+    -0.193819075822830f,
+  0.960757017135620f, -0.194172516465187f, 0.960607945919037f,
+    -0.194525867700577f,
+  0.960458636283875f, -0.194879084825516f, 0.960309028625488f,
+    -0.195232197642326f,
+  0.960159122943878f, -0.195585191249847f, 0.960008978843689f,
+    -0.195938065648079f,
+  0.959858596324921f, -0.196290835738182f, 0.959707856178284f,
+    -0.196643486618996f,
+  0.959556937217712f, -0.196996018290520f, 0.959405720233917f,
+    -0.197348430752754f,
+  0.959254205226898f, -0.197700738906860f, 0.959102451801300f,
+    -0.198052927851677f,
+  0.958950400352478f, -0.198404997587204f, 0.958798050880432f,
+    -0.198756948113441f,
+  0.958645522594452f, -0.199108779430389f, 0.958492636680603f,
+    -0.199460506439209f,
+  0.958339512348175f, -0.199812099337578f, 0.958186149597168f,
+    -0.200163587927818f,
+  0.958032488822937f, -0.200514942407608f, 0.957878530025482f,
+    -0.200866192579269f,
+  0.957724332809448f, -0.201217323541641f, 0.957569897174835f,
+    -0.201568335294724f,
+  0.957415163516998f, -0.201919227838516f, 0.957260131835938f,
+    -0.202270001173019f,
+  0.957104861736298f, -0.202620655298233f, 0.956949353218079f,
+    -0.202971190214157f,
+  0.956793546676636f, -0.203321605920792f, 0.956637442111969f,
+    -0.203671902418137f,
+  0.956481099128723f, -0.204022079706192f, 0.956324458122253f,
+    -0.204372137784958f,
+  0.956167578697205f, -0.204722076654434f, 0.956010460853577f,
+    -0.205071896314621f,
+  0.955853044986725f, -0.205421581864357f, 0.955695331096649f,
+    -0.205771163105965f,
+  0.955537378787994f, -0.206120610237122f, 0.955379128456116f,
+    -0.206469938158989f,
+  0.955220639705658f, -0.206819161772728f, 0.955061912536621f,
+    -0.207168251276016f,
+  0.954902827739716f, -0.207517206668854f, 0.954743564128876f,
+    -0.207866057753563f,
+  0.954584002494812f, -0.208214774727821f, 0.954424142837524f,
+    -0.208563387393951f,
+  0.954264044761658f, -0.208911851048470f, 0.954103708267212f,
+    -0.209260210394859f,
+  0.953943073749542f, -0.209608450531960f, 0.953782141208649f,
+    -0.209956556558609f,
+  0.953620970249176f, -0.210304543375969f, 0.953459560871124f,
+    -0.210652396082878f,
+  0.953297853469849f, -0.211000129580498f, 0.953135907649994f,
+    -0.211347743868828f,
+  0.952973663806915f, -0.211695238947868f, 0.952811121940613f,
+    -0.212042599916458f,
+  0.952648401260376f, -0.212389841675758f, 0.952485322952271f,
+    -0.212736949324608f,
+  0.952322065830231f, -0.213083937764168f, 0.952158451080322f,
+    -0.213430806994438f,
+  0.951994657516479f, -0.213777542114258f, 0.951830565929413f,
+    -0.214124158024788f,
+  0.951666176319122f, -0.214470639824867f, 0.951501548290253f,
+    -0.214817002415657f,
+  0.951336681842804f, -0.215163245797157f, 0.951171517372131f,
+    -0.215509355068207f,
+  0.951006054878235f, -0.215855330228806f, 0.950840353965759f,
+    -0.216201186180115f,
+  0.950674414634705f, -0.216546908020973f, 0.950508177280426f,
+    -0.216892510652542f,
+  0.950341701507568f, -0.217237979173660f, 0.950174987316132f,
+    -0.217583328485489f,
+  0.950007975101471f, -0.217928543686867f, 0.949840664863586f,
+    -0.218273624777794f,
+  0.949673116207123f, -0.218618586659431f, 0.949505329132080f,
+    -0.218963414430618f,
+  0.949337244033813f, -0.219308122992516f, 0.949168920516968f,
+    -0.219652697443962f,
+  0.949000298976898f, -0.219997137784958f, 0.948831439018250f,
+    -0.220341444015503f,
+  0.948662281036377f, -0.220685631036758f, 0.948492884635925f,
+    -0.221029683947563f,
+  0.948323249816895f, -0.221373617649078f, 0.948153316974640f,
+    -0.221717402338982f,
+  0.947983145713806f, -0.222061067819595f, 0.947812676429749f,
+    -0.222404599189758f,
+  0.947641968727112f, -0.222748011350632f, 0.947470963001251f,
+    -0.223091274499893f,
+  0.947299718856812f, -0.223434418439865f, 0.947128236293793f,
+    -0.223777428269386f,
+  0.946956455707550f, -0.224120303988457f, 0.946784436702728f,
+    -0.224463045597076f,
+  0.946612179279327f, -0.224805667996407f, 0.946439623832703f,
+    -0.225148141384125f,
+  0.946266770362854f, -0.225490495562553f, 0.946093678474426f,
+    -0.225832715630531f,
+  0.945920348167419f, -0.226174786686897f, 0.945746779441834f,
+    -0.226516738533974f,
+  0.945572853088379f, -0.226858556270599f, 0.945398747920990f,
+    -0.227200239896774f,
+  0.945224344730377f, -0.227541789412498f, 0.945049703121185f,
+    -0.227883204817772f,
+  0.944874763488770f, -0.228224486112595f, 0.944699645042419f,
+    -0.228565633296967f,
+  0.944524168968201f, -0.228906646370888f, 0.944348454475403f,
+    -0.229247525334358f,
+  0.944172501564026f, -0.229588270187378f, 0.943996310234070f,
+    -0.229928880929947f,
+  0.943819820880890f, -0.230269357562065f, 0.943643093109131f,
+    -0.230609700083733f,
+  0.943466067314148f, -0.230949893593788f, 0.943288803100586f,
+    -0.231289967894554f,
+  0.943111240863800f, -0.231629893183708f, 0.942933499813080f,
+    -0.231969684362412f,
+  0.942755401134491f, -0.232309341430664f, 0.942577123641968f,
+    -0.232648864388466f,
+  0.942398548126221f, -0.232988253235817f, 0.942219734191895f,
+    -0.233327493071556f,
+  0.942040622234344f, -0.233666598796844f, 0.941861271858215f,
+    -0.234005570411682f,
+  0.941681683063507f, -0.234344407916069f, 0.941501796245575f,
+    -0.234683111310005f,
+  0.941321671009064f, -0.235021665692329f, 0.941141307353973f,
+    -0.235360085964203f,
+  0.940960645675659f, -0.235698372125626f, 0.940779745578766f,
+    -0.236036509275436f,
+  0.940598547458649f, -0.236374512314796f, 0.940417110919952f,
+    -0.236712381243706f,
+  0.940235435962677f, -0.237050101161003f, 0.940053522586823f,
+    -0.237387686967850f,
+  0.939871311187744f, -0.237725138664246f, 0.939688861370087f,
+    -0.238062441349030f,
+  0.939506113529205f, -0.238399609923363f, 0.939323127269745f,
+    -0.238736644387245f,
+  0.939139902591705f, -0.239073529839516f, 0.938956379890442f,
+    -0.239410281181335f,
+  0.938772618770599f, -0.239746883511543f, 0.938588619232178f,
+    -0.240083336830139f,
+  0.938404381275177f, -0.240419670939446f, 0.938219845294952f,
+    -0.240755841135979f,
+  0.938035070896149f, -0.241091892123222f, 0.937849998474121f,
+    -0.241427779197693f,
+  0.937664687633514f, -0.241763532161713f, 0.937479138374329f,
+    -0.242099151015282f,
+  0.937293350696564f, -0.242434620857239f, 0.937107264995575f,
+    -0.242769956588745f,
+  0.936920940876007f, -0.243105143308640f, 0.936734318733215f,
+    -0.243440181016922f,
+  0.936547517776489f, -0.243775084614754f, 0.936360359191895f,
+    -0.244109839200974f,
+  0.936173021793365f, -0.244444444775581f, 0.935985386371613f,
+    -0.244778916239738f,
+  0.935797572135925f, -0.245113238692284f, 0.935609400272369f,
+    -0.245447427034378f,
+  0.935421049594879f, -0.245781451463699f, 0.935232400894165f,
+    -0.246115356683731f,
+  0.935043513774872f, -0.246449097990990f, 0.934854328632355f,
+    -0.246782705187798f,
+  0.934664964675903f, -0.247116148471832f, 0.934475243091583f,
+    -0.247449472546577f,
+  0.934285342693329f, -0.247782632708550f, 0.934095203876495f,
+    -0.248115643858910f,
+  0.933904767036438f, -0.248448520898819f, 0.933714091777802f,
+    -0.248781248927116f,
+  0.933523118495941f, -0.249113827943802f, 0.933331906795502f,
+    -0.249446272850037f,
+  0.933140456676483f, -0.249778553843498f, 0.932948768138886f,
+    -0.250110685825348f,
+  0.932756841182709f, -0.250442683696747f, 0.932564616203308f,
+    -0.250774532556534f,
+  0.932372152805328f, -0.251106232404709f, 0.932179391384125f,
+    -0.251437783241272f,
+  0.931986451148987f, -0.251769185066223f, 0.931793212890625f,
+    -0.252100437879562f,
+  0.931599736213684f, -0.252431541681290f, 0.931405961513519f,
+    -0.252762526273727f,
+  0.931211948394775f, -0.253093332052231f, 0.931017756462097f,
+    -0.253423988819122f,
+  0.930823206901550f, -0.253754496574402f, 0.930628478527069f,
+    -0.254084855318069f,
+  0.930433452129364f, -0.254415065050125f, 0.930238187313080f,
+    -0.254745125770569f,
+  0.930042684078217f, -0.255075037479401f, 0.929846942424774f,
+    -0.255404800176620f,
+  0.929650902748108f, -0.255734413862228f, 0.929454624652863f,
+    -0.256063878536224f,
+  0.929258108139038f, -0.256393194198608f, 0.929061353206635f,
+    -0.256722360849380f,
+  0.928864300251007f, -0.257051378488541f, 0.928667008876801f,
+    -0.257380217313766f,
+  0.928469479084015f, -0.257708936929703f, 0.928271710872650f,
+    -0.258037507534027f,
+  0.928073644638062f, -0.258365899324417f, 0.927875399589539f,
+    -0.258694142103195f,
+  0.927676856517792f, -0.259022265672684f, 0.927478015422821f,
+    -0.259350210428238f,
+  0.927278995513916f, -0.259678006172180f, 0.927079677581787f,
+    -0.260005623102188f,
+  0.926880121231079f, -0.260333120822906f, 0.926680326461792f,
+    -0.260660469532013f,
+  0.926480293273926f, -0.260987639427185f, 0.926280021667480f,
+    -0.261314690113068f,
+  0.926079452037811f, -0.261641561985016f, 0.925878643989563f,
+    -0.261968284845352f,
+  0.925677597522736f, -0.262294828891754f, 0.925476312637329f,
+    -0.262621253728867f,
+  0.925274729728699f, -0.262947499752045f, 0.925072908401489f,
+    -0.263273626565933f,
+  0.924870908260345f, -0.263599574565887f, 0.924668610095978f,
+    -0.263925373554230f,
+  0.924466013908386f, -0.264250993728638f, 0.924263238906860f,
+    -0.264576494693756f,
+  0.924060165882111f, -0.264901816844940f, 0.923856854438782f,
+    -0.265226989984512f,
+  0.923653304576874f, -0.265552014112473f, 0.923449516296387f,
+    -0.265876859426498f,
+  0.923245489597321f, -0.266201555728912f, 0.923041164875031f,
+    -0.266526103019714f,
+  0.922836601734161f, -0.266850501298904f, 0.922631800174713f,
+    -0.267174720764160f,
+  0.922426760196686f, -0.267498821020126f, 0.922221481800079f,
+    -0.267822742462158f,
+  0.922015964984894f, -0.268146485090256f, 0.921810150146484f,
+    -0.268470078706741f,
+  0.921604096889496f, -0.268793523311615f, 0.921397805213928f,
+    -0.269116818904877f,
+  0.921191275119781f, -0.269439965486526f, 0.920984506607056f,
+    -0.269762933254242f,
+  0.920777499675751f, -0.270085722208023f, 0.920570194721222f,
+    -0.270408391952515f,
+  0.920362710952759f, -0.270730882883072f, 0.920154929161072f,
+    -0.271053224802017f,
+  0.919946908950806f, -0.271375387907028f, 0.919738650321960f,
+    -0.271697402000427f,
+  0.919530093669891f, -0.272019267082214f, 0.919321358203888f,
+    -0.272340953350067f,
+  0.919112324714661f, -0.272662490606308f, 0.918903112411499f,
+    -0.272983878850937f,
+  0.918693602085114f, -0.273305088281631f, 0.918483853340149f,
+    -0.273626148700714f,
+  0.918273866176605f, -0.273947030305862f, 0.918063640594482f,
+    -0.274267762899399f,
+  0.917853116989136f, -0.274588316679001f, 0.917642414569855f,
+    -0.274908751249313f,
+  0.917431414127350f, -0.275228977203369f, 0.917220234870911f,
+    -0.275549083948135f,
+  0.917008757591248f, -0.275868982076645f, 0.916797041893005f,
+    -0.276188760995865f,
+  0.916585087776184f, -0.276508361101151f, 0.916372895240784f,
+    -0.276827782392502f,
+  0.916160404682159f, -0.277147054672241f, 0.915947735309601f,
+    -0.277466177940369f,
+  0.915734827518463f, -0.277785122394562f, 0.915521621704102f,
+    -0.278103888034821f,
+  0.915308177471161f, -0.278422504663467f, 0.915094554424286f,
+    -0.278740972280502f,
+  0.914880633354187f, -0.279059261083603f, 0.914666473865509f,
+    -0.279377400875092f,
+  0.914452075958252f, -0.279695361852646f, 0.914237439632416f,
+    -0.280013144016266f,
+  0.914022505283356f, -0.280330777168274f, 0.913807392120361f,
+    -0.280648261308670f,
+  0.913592040538788f, -0.280965566635132f, 0.913376390933990f,
+    -0.281282693147659f,
+  0.913160502910614f, -0.281599670648575f, 0.912944436073303f,
+    -0.281916469335556f,
+  0.912728071212769f, -0.282233119010925f, 0.912511467933655f,
+    -0.282549589872360f,
+  0.912294626235962f, -0.282865911722183f, 0.912077546119690f,
+    -0.283182054758072f,
+  0.911860227584839f, -0.283498018980026f, 0.911642670631409f,
+    -0.283813834190369f,
+  0.911424875259399f, -0.284129470586777f, 0.911206841468811f,
+    -0.284444957971573f,
+  0.910988569259644f, -0.284760266542435f, 0.910769999027252f,
+    -0.285075396299362f,
+  0.910551249980927f, -0.285390377044678f, 0.910332262516022f,
+    -0.285705178976059f,
+  0.910112977027893f, -0.286019802093506f, 0.909893512725830f,
+    -0.286334276199341f,
+  0.909673750400543f, -0.286648571491241f, 0.909453809261322f,
+    -0.286962717771530f,
+  0.909233570098877f, -0.287276685237885f, 0.909013092517853f,
+    -0.287590473890305f,
+  0.908792436122894f, -0.287904083728790f, 0.908571481704712f,
+    -0.288217544555664f,
+  0.908350288867950f, -0.288530826568604f, 0.908128857612610f,
+    -0.288843959569931f,
+  0.907907187938690f, -0.289156883955002f, 0.907685279846191f,
+    -0.289469659328461f,
+  0.907463192939758f, -0.289782285690308f, 0.907240808010101f,
+    -0.290094703435898f,
+  0.907018184661865f, -0.290406972169876f, 0.906795322895050f,
+    -0.290719062089920f,
+  0.906572222709656f, -0.291031002998352f, 0.906348884105682f,
+    -0.291342735290527f,
+  0.906125307083130f, -0.291654318571091f, 0.905901491641998f,
+    -0.291965723037720f,
+  0.905677437782288f, -0.292276978492737f, 0.905453145503998f,
+    -0.292588025331497f,
+  0.905228614807129f, -0.292898923158646f, 0.905003845691681f,
+    -0.293209642171860f,
+  0.904778838157654f, -0.293520182371140f, 0.904553592205048f,
+    -0.293830573558807f,
+  0.904328107833862f, -0.294140785932541f, 0.904102385044098f,
+    -0.294450789690018f,
+  0.903876423835754f, -0.294760644435883f, 0.903650224208832f,
+    -0.295070350170136f,
+  0.903423786163330f, -0.295379847288132f, 0.903197109699249f,
+    -0.295689195394516f,
+  0.902970194816589f, -0.295998334884644f, 0.902743041515350f,
+    -0.296307325363159f,
+  0.902515649795532f, -0.296616137027740f, 0.902288019657135f,
+    -0.296924799680710f,
+  0.902060210704803f, -0.297233253717422f, 0.901832103729248f,
+    -0.297541528940201f,
+  0.901603758335114f, -0.297849655151367f, 0.901375174522400f,
+    -0.298157602548599f,
+  0.901146411895752f, -0.298465341329575f, 0.900917351245880f,
+    -0.298772931098938f,
+  0.900688111782074f, -0.299080342054367f, 0.900458574295044f,
+    -0.299387603998184f,
+  0.900228857994080f, -0.299694657325745f, 0.899998843669891f,
+    -0.300001531839371f,
+  0.899768650531769f, -0.300308227539063f, 0.899538159370422f,
+    -0.300614774227142f,
+  0.899307489395142f, -0.300921112298965f, 0.899076581001282f,
+    -0.301227301359177f,
+  0.898845434188843f, -0.301533311605453f, 0.898614048957825f,
+    -0.301839113235474f,
+  0.898382425308228f, -0.302144765853882f, 0.898150563240051f,
+    -0.302450239658356f,
+  0.897918462753296f, -0.302755534648895f, 0.897686123847961f,
+    -0.303060621023178f,
+  0.897453546524048f, -0.303365558385849f, 0.897220790386200f,
+    -0.303670316934586f,
+  0.896987736225128f, -0.303974896669388f, 0.896754503250122f,
+    -0.304279297590256f,
+  0.896520972251892f, -0.304583519697189f, 0.896287262439728f,
+    -0.304887533187866f,
+  0.896053314208984f, -0.305191397666931f, 0.895819067955017f,
+    -0.305495083332062f,
+  0.895584642887115f, -0.305798590183258f, 0.895349979400635f,
+    -0.306101888418198f,
+  0.895115137100220f, -0.306405037641525f, 0.894879996776581f,
+    -0.306708008050919f,
+  0.894644618034363f, -0.307010769844055f, 0.894409060478210f,
+    -0.307313382625580f,
+  0.894173204898834f, -0.307615786790848f, 0.893937170505524f,
+    -0.307918041944504f,
+  0.893700897693634f, -0.308220088481903f, 0.893464326858521f,
+    -0.308521956205368f,
+  0.893227577209473f, -0.308823645114899f, 0.892990648746490f,
+    -0.309125155210495f,
+  0.892753422260284f, -0.309426486492157f, 0.892515957355499f,
+    -0.309727638959885f,
+  0.892278313636780f, -0.310028612613678f, 0.892040371894836f,
+    -0.310329377651215f,
+  0.891802251338959f, -0.310629993677139f, 0.891563892364502f,
+    -0.310930401086807f,
+  0.891325294971466f, -0.311230629682541f, 0.891086459159851f,
+    -0.311530679464340f,
+  0.890847444534302f, -0.311830550432205f, 0.890608131885529f,
+    -0.312130242586136f,
+  0.890368640422821f, -0.312429755926132f, 0.890128850936890f,
+    -0.312729060649872f,
+  0.889888882637024f, -0.313028186559677f, 0.889648675918579f,
+    -0.313327133655548f,
+  0.889408230781555f, -0.313625901937485f, 0.889167606830597f,
+    -0.313924491405487f,
+  0.888926684856415f, -0.314222872257233f, 0.888685584068298f,
+    -0.314521104097366f,
+  0.888444244861603f, -0.314819127321243f, 0.888202667236328f,
+    -0.315116971731186f,
+  0.887960851192474f, -0.315414607524872f, 0.887718796730042f,
+    -0.315712094306946f,
+  0.887476563453674f, -0.316009372472763f, 0.887234091758728f,
+    -0.316306471824646f,
+  0.886991322040558f, -0.316603392362595f, 0.886748373508453f,
+    -0.316900104284287f,
+  0.886505246162415f, -0.317196637392044f, 0.886261820793152f,
+    -0.317492991685867f,
+  0.886018216609955f, -0.317789167165756f, 0.885774314403534f,
+    -0.318085134029388f,
+  0.885530233383179f, -0.318380922079086f, 0.885285973548889f,
+    -0.318676531314850f,
+  0.885041415691376f, -0.318971961736679f, 0.884796679019928f,
+    -0.319267183542252f,
+  0.884551644325256f, -0.319562226533890f, 0.884306430816650f,
+    -0.319857090711594f,
+  0.884061038494110f, -0.320151746273041f, 0.883815348148346f,
+    -0.320446223020554f,
+  0.883569478988647f, -0.320740520954132f, 0.883323311805725f,
+    -0.321034610271454f,
+  0.883076965808868f, -0.321328520774841f, 0.882830440998077f,
+    -0.321622252464294f,
+  0.882583618164063f, -0.321915775537491f, 0.882336616516113f,
+    -0.322209119796753f,
+  0.882089376449585f, -0.322502255439758f, 0.881841897964478f,
+    -0.322795242071152f,
+  0.881594181060791f, -0.323088020086288f, 0.881346285343170f,
+    -0.323380589485168f,
+  0.881098151206970f, -0.323672980070114f, 0.880849778652191f,
+    -0.323965191841125f,
+  0.880601167678833f, -0.324257194995880f, 0.880352377891541f,
+    -0.324549019336700f,
+  0.880103349685669f, -0.324840664863586f, 0.879854083061218f,
+    -0.325132101774216f,
+  0.879604578018188f, -0.325423330068588f, 0.879354894161224f,
+    -0.325714409351349f,
+  0.879104971885681f, -0.326005280017853f, 0.878854811191559f,
+    -0.326295942068100f,
+  0.878604412078857f, -0.326586425304413f, 0.878353834152222f,
+    -0.326876699924469f,
+  0.878103017807007f, -0.327166795730591f, 0.877851963043213f,
+    -0.327456712722778f,
+  0.877600669860840f, -0.327746421098709f, 0.877349197864532f,
+    -0.328035950660706f,
+  0.877097487449646f, -0.328325271606445f, 0.876845538616180f,
+    -0.328614413738251f,
+  0.876593410968781f, -0.328903347253799f, 0.876341044902802f,
+    -0.329192101955414f,
+  0.876088440418243f, -0.329480648040771f, 0.875835597515106f,
+    -0.329769015312195f,
+  0.875582575798035f, -0.330057173967361f, 0.875329315662384f,
+    -0.330345153808594f,
+  0.875075817108154f, -0.330632925033569f, 0.874822139739990f,
+    -0.330920487642288f,
+  0.874568223953247f, -0.331207901239395f, 0.874314069747925f,
+    -0.331495076417923f,
+  0.874059677124023f, -0.331782072782516f, 0.873805105686188f,
+    -0.332068890333176f,
+  0.873550295829773f, -0.332355499267578f, 0.873295307159424f,
+    -0.332641899585724f,
+  0.873040020465851f, -0.332928121089935f, 0.872784554958344f,
+    -0.333214133977890f,
+  0.872528910636902f, -0.333499968051910f, 0.872272968292236f,
+    -0.333785593509674f,
+  0.872016847133636f, -0.334071010351181f, 0.871760547161102f,
+    -0.334356248378754f,
+  0.871503949165344f, -0.334641307592392f, 0.871247172355652f,
+    -0.334926128387451f,
+  0.870990216732025f, -0.335210770368576f, 0.870733022689819f,
+    -0.335495233535767f,
+  0.870475590229034f, -0.335779488086700f, 0.870217919349670f,
+    -0.336063534021378f,
+  0.869960069656372f, -0.336347371339798f, 0.869701981544495f,
+    -0.336631029844284f,
+  0.869443655014038f, -0.336914509534836f, 0.869185149669647f,
+    -0.337197750806808f,
+  0.868926405906677f, -0.337480813264847f, 0.868667483329773f,
+    -0.337763696908951f,
+  0.868408262729645f, -0.338046342134476f, 0.868148922920227f,
+    -0.338328808546066f,
+  0.867889285087585f, -0.338611096143723f, 0.867629468441010f,
+    -0.338893145322800f,
+  0.867369413375854f, -0.339175015687943f, 0.867109179496765f,
+    -0.339456677436829f,
+  0.866848707199097f, -0.339738160371780f, 0.866588056087494f,
+    -0.340019434690475f,
+  0.866327106952667f, -0.340300500392914f, 0.866066038608551f,
+    -0.340581357479095f,
+  0.865804672241211f, -0.340862035751343f, 0.865543127059937f,
+    -0.341142505407333f,
+  0.865281403064728f, -0.341422766447067f, 0.865019381046295f,
+    -0.341702848672867f,
+  0.864757239818573f, -0.341982692480087f, 0.864494800567627f,
+    -0.342262357473373f,
+  0.864232182502747f, -0.342541843652725f, 0.863969385623932f,
+    -0.342821091413498f,
+  0.863706290721893f, -0.343100160360336f, 0.863443076610565f,
+    -0.343379020690918f,
+  0.863179564476013f, -0.343657672405243f, 0.862915873527527f,
+    -0.343936115503311f,
+  0.862652003765106f, -0.344214379787445f, 0.862387895584106f,
+    -0.344492435455322f,
+  0.862123548984528f, -0.344770282506943f, 0.861859023571014f,
+    -0.345047920942307f,
+  0.861594259738922f, -0.345325350761414f, 0.861329257488251f,
+    -0.345602601766586f,
+  0.861064076423645f, -0.345879614353180f, 0.860798716545105f,
+    -0.346156448125839f,
+  0.860533118247986f, -0.346433073282242f, 0.860267281532288f,
+    -0.346709519624710f,
+  0.860001266002655f, -0.346985727548599f, 0.859735012054443f,
+    -0.347261756658554f,
+  0.859468579292297f, -0.347537547349930f, 0.859201908111572f,
+    -0.347813159227371f,
+  0.858934998512268f, -0.348088562488556f, 0.858667910099030f,
+    -0.348363757133484f,
+  0.858400642871857f, -0.348638743162155f, 0.858133137226105f,
+    -0.348913550376892f,
+  0.857865393161774f, -0.349188119173050f, 0.857597470283508f,
+    -0.349462509155273f,
+  0.857329368591309f, -0.349736660718918f, 0.857060968875885f,
+    -0.350010633468628f,
+  0.856792449951172f, -0.350284397602081f, 0.856523692607880f,
+    -0.350557953119278f,
+  0.856254696846008f, -0.350831300020218f, 0.855985522270203f,
+    -0.351104438304901f,
+  0.855716109275818f, -0.351377367973328f, 0.855446517467499f,
+    -0.351650089025497f,
+  0.855176687240601f, -0.351922631263733f, 0.854906618595123f,
+    -0.352194935083389f,
+  0.854636430740356f, -0.352467030286789f, 0.854365944862366f,
+    -0.352738946676254f,
+  0.854095339775085f, -0.353010624647141f, 0.853824436664581f,
+    -0.353282123804092f,
+  0.853553414344788f, -0.353553384542465f, 0.853282094001770f,
+    -0.353824466466904f,
+  0.853010654449463f, -0.354095309972763f, 0.852738916873932f,
+    -0.354365974664688f,
+  0.852467060089111f, -0.354636400938034f, 0.852194905281067f,
+    -0.354906648397446f,
+  0.851922631263733f, -0.355176687240601f, 0.851650118827820f,
+    -0.355446487665176f,
+  0.851377367973328f, -0.355716109275818f, 0.851104438304901f,
+    -0.355985492467880f,
+  0.850831270217896f, -0.356254696846008f, 0.850557923316956f,
+    -0.356523662805557f,
+  0.850284397602081f, -0.356792420148849f, 0.850010633468628f,
+    -0.357060998678207f,
+  0.849736690521240f, -0.357329338788986f, 0.849462509155273f,
+    -0.357597470283508f,
+  0.849188148975372f, -0.357865422964096f, 0.848913550376892f,
+    -0.358133137226105f,
+  0.848638772964478f, -0.358400642871857f, 0.848363757133484f,
+    -0.358667939901352f,
+  0.848088562488556f, -0.358935028314590f, 0.847813189029694f,
+    -0.359201908111572f,
+  0.847537577152252f, -0.359468549489975f, 0.847261726856232f,
+    -0.359735012054443f,
+  0.846985757350922f, -0.360001266002655f, 0.846709489822388f,
+    -0.360267281532288f,
+  0.846433103084564f, -0.360533088445663f, 0.846156477928162f,
+    -0.360798716545105f,
+  0.845879614353180f, -0.361064106225967f, 0.845602571964264f,
+    -0.361329287290573f,
+  0.845325350761414f, -0.361594229936600f, 0.845047891139984f,
+    -0.361858993768692f,
+  0.844770252704620f, -0.362123548984528f, 0.844492435455322f,
+    -0.362387865781784f,
+  0.844214379787445f, -0.362651973962784f, 0.843936145305634f,
+    -0.362915903329849f,
+  0.843657672405243f, -0.363179564476013f, 0.843379020690918f,
+    -0.363443046808243f,
+  0.843100130558014f, -0.363706320524216f, 0.842821121215820f,
+    -0.363969355821610f,
+  0.842541813850403f, -0.364232182502747f, 0.842262387275696f,
+    -0.364494800567627f,
+  0.841982722282410f, -0.364757210016251f, 0.841702818870544f,
+    -0.365019410848618f,
+  0.841422796249390f, -0.365281373262405f, 0.841142535209656f,
+    -0.365543156862259f,
+  0.840862035751343f, -0.365804702043533f, 0.840581357479095f,
+    -0.366066008806229f,
+  0.840300500392914f, -0.366327136754990f, 0.840019404888153f,
+    -0.366588026285172f,
+  0.839738130569458f, -0.366848707199097f, 0.839456677436829f,
+    -0.367109179496765f,
+  0.839175045490265f, -0.367369443178177f, 0.838893175125122f,
+    -0.367629468441010f,
+  0.838611066341400f, -0.367889285087585f, 0.838328838348389f,
+    -0.368148893117905f,
+  0.838046371936798f, -0.368408292531967f, 0.837763667106628f,
+    -0.368667453527451f,
+  0.837480843067169f, -0.368926405906677f, 0.837197780609131f,
+    -0.369185149669647f,
+  0.836914479732513f, -0.369443655014038f, 0.836631059646606f,
+    -0.369701951742172f,
+  0.836347401142120f, -0.369960039854050f, 0.836063504219055f,
+    -0.370217919349670f,
+  0.835779488086700f, -0.370475560426712f, 0.835495233535767f,
+    -0.370732992887497f,
+  0.835210800170898f, -0.370990216732025f, 0.834926128387451f,
+    -0.371247202157974f,
+  0.834641277790070f, -0.371503978967667f, 0.834356248378754f,
+    -0.371760547161102f,
+  0.834071040153503f, -0.372016876935959f, 0.833785593509674f,
+    -0.372272998094559f,
+  0.833499968051910f, -0.372528880834579f, 0.833214163780212f,
+    -0.372784584760666f,
+  0.832928121089935f, -0.373040050268173f, 0.832641899585724f,
+    -0.373295277357101f,
+  0.832355499267578f, -0.373550295829773f, 0.832068860530853f,
+    -0.373805105686188f,
+  0.831782102584839f, -0.374059677124023f, 0.831495106220245f,
+    -0.374314039945602f,
+  0.831207871437073f, -0.374568194150925f, 0.830920517444611f,
+    -0.374822109937668f,
+  0.830632925033569f, -0.375075817108154f, 0.830345153808594f,
+    -0.375329315662384f,
+  0.830057144165039f, -0.375582575798035f, 0.829769015312195f,
+    -0.375835597515106f,
+  0.829480648040771f, -0.376088410615921f, 0.829192101955414f,
+    -0.376341015100479f,
+  0.828903317451477f, -0.376593410968781f, 0.828614413738251f,
+    -0.376845568418503f,
+  0.828325271606445f, -0.377097487449646f, 0.828035950660706f,
+    -0.377349197864532f,
+  0.827746450901031f, -0.377600699663162f, 0.827456712722778f,
+    -0.377851963043213f,
+  0.827166795730591f, -0.378102988004684f, 0.826876699924469f,
+    -0.378353834152222f,
+  0.826586425304413f, -0.378604412078857f, 0.826295912265778f,
+    -0.378854811191559f,
+  0.826005280017853f, -0.379104942083359f, 0.825714409351349f,
+    -0.379354894161224f,
+  0.825423359870911f, -0.379604607820511f, 0.825132071971893f,
+    -0.379854083061218f,
+  0.824840664863586f, -0.380103349685669f, 0.824549019336700f,
+    -0.380352377891541f,
+  0.824257194995880f, -0.380601197481155f, 0.823965191841125f,
+    -0.380849778652191f,
+  0.823673009872437f, -0.381098151206970f, 0.823380589485168f,
+    -0.381346285343170f,
+  0.823087990283966f, -0.381594210863113f, 0.822795212268829f,
+    -0.381841897964478f,
+  0.822502255439758f, -0.382089376449585f, 0.822209119796753f,
+    -0.382336616516113f,
+  0.821915745735168f, -0.382583618164063f, 0.821622252464294f,
+    -0.382830440998077f,
+  0.821328520774841f, -0.383076995611191f, 0.821034610271454f,
+    -0.383323341608047f,
+  0.820740520954132f, -0.383569449186325f, 0.820446193218231f,
+    -0.383815348148346f,
+  0.820151746273041f, -0.384061008691788f, 0.819857060909271f,
+    -0.384306460618973f,
+  0.819562196731567f, -0.384551674127579f, 0.819267153739929f,
+    -0.384796649217606f,
+  0.818971931934357f, -0.385041415691376f, 0.818676531314850f,
+    -0.385285943746567f,
+  0.818380951881409f, -0.385530263185501f, 0.818085134029388f,
+    -0.385774344205856f,
+  0.817789137363434f, -0.386018186807632f, 0.817493021488190f,
+    -0.386261820793152f,
+  0.817196667194366f, -0.386505216360092f, 0.816900074481964f,
+    -0.386748403310776f,
+  0.816603362560272f, -0.386991351842880f, 0.816306471824646f,
+    -0.387234061956406f,
+  0.816009342670441f, -0.387476563453674f, 0.815712094306946f,
+    -0.387718826532364f,
+  0.815414607524872f, -0.387960851192474f, 0.815116941928864f,
+    -0.388202667236328f,
+  0.814819097518921f, -0.388444244861603f, 0.814521074295044f,
+    -0.388685584068298f,
+  0.814222872257233f, -0.388926714658737f, 0.813924491405487f,
+    -0.389167606830597f,
+  0.813625931739807f, -0.389408260583878f, 0.813327133655548f,
+    -0.389648675918579f,
+  0.813028216362000f, -0.389888882637024f, 0.812729060649872f,
+    -0.390128880739212f,
+  0.812429726123810f, -0.390368610620499f, 0.812130272388458f,
+    -0.390608131885529f,
+  0.811830580234528f, -0.390847414731979f, 0.811530709266663f,
+    -0.391086459159851f,
+  0.811230659484863f, -0.391325294971466f, 0.810930430889130f,
+    -0.391563892364502f,
+  0.810629963874817f, -0.391802251338959f, 0.810329377651215f,
+    -0.392040401697159f,
+  0.810028612613678f, -0.392278283834457f, 0.809727668762207f,
+    -0.392515957355499f,
+  0.809426486492157f, -0.392753422260284f, 0.809125185012817f,
+    -0.392990618944168f,
+  0.808823645114899f, -0.393227607011795f, 0.808521986007690f,
+    -0.393464356660843f,
+  0.808220088481903f, -0.393700867891312f, 0.807918012142181f,
+    -0.393937170505524f,
+  0.807615816593170f, -0.394173204898834f, 0.807313382625580f,
+    -0.394409030675888f,
+  0.807010769844055f, -0.394644618034363f, 0.806707978248596f,
+    -0.394879996776581f,
+  0.806405067443848f, -0.395115107297897f, 0.806101918220520f,
+    -0.395350009202957f,
+  0.805798590183258f, -0.395584672689438f, 0.805495083332062f,
+    -0.395819097757339f,
+  0.805191397666931f, -0.396053284406662f, 0.804887533187866f,
+    -0.396287262439728f,
+  0.804583489894867f, -0.396520972251892f, 0.804279267787933f,
+    -0.396754473447800f,
+  0.803974866867065f, -0.396987736225128f, 0.803670346736908f,
+    -0.397220760583878f,
+  0.803365588188171f, -0.397453576326370f, 0.803060650825500f,
+    -0.397686123847961f,
+  0.802755534648895f, -0.397918462753296f, 0.802450239658356f,
+    -0.398150533437729f,
+  0.802144765853882f, -0.398382395505905f, 0.801839113235474f,
+    -0.398614019155502f,
+  0.801533281803131f, -0.398845434188843f, 0.801227271556854f,
+    -0.399076581001282f,
+  0.800921142101288f, -0.399307489395142f, 0.800614774227142f,
+    -0.399538189172745f,
+  0.800308227539063f, -0.399768620729446f, 0.800001561641693f,
+    -0.399998843669891f,
+  0.799694657325745f, -0.400228828191757f, 0.799387574195862f,
+    -0.400458574295044f,
+  0.799080371856689f, -0.400688081979752f, 0.798772931098938f,
+    -0.400917351245880f,
+  0.798465371131897f, -0.401146411895752f, 0.798157572746277f,
+    -0.401375204324722f,
+  0.797849655151367f, -0.401603758335114f, 0.797541558742523f,
+    -0.401832103729248f,
+  0.797233223915100f, -0.402060180902481f, 0.796924769878387f,
+    -0.402288049459457f,
+  0.796616137027740f, -0.402515679597855f, 0.796307325363159f,
+    -0.402743041515350f,
+  0.795998334884644f, -0.402970194816589f, 0.795689165592194f,
+    -0.403197109699249f,
+  0.795379877090454f, -0.403423786163330f, 0.795070350170136f,
+    -0.403650224208832f,
+  0.794760644435883f, -0.403876423835754f, 0.794450819492340f,
+    -0.404102355241776f,
+  0.794140756130219f, -0.404328078031540f, 0.793830573558807f,
+    -0.404553562402725f,
+  0.793520212173462f, -0.404778808355331f, 0.793209671974182f,
+    -0.405003815889359f,
+  0.792898952960968f, -0.405228585004807f, 0.792588055133820f,
+    -0.405453115701675f,
+  0.792276978492737f, -0.405677437782288f, 0.791965723037720f,
+    -0.405901491641998f,
+  0.791654348373413f, -0.406125307083130f, 0.791342735290527f,
+    -0.406348884105682f,
+  0.791031002998352f, -0.406572192907333f, 0.790719091892242f,
+    -0.406795293092728f,
+  0.790407001972198f, -0.407018154859543f, 0.790094733238220f,
+    -0.407240778207779f,
+  0.789782285690308f, -0.407463163137436f, 0.789469659328461f,
+    -0.407685309648514f,
+  0.789156913757324f, -0.407907217741013f, 0.788843929767609f,
+    -0.408128857612610f,
+  0.788530826568604f, -0.408350288867950f, 0.788217544555664f,
+    -0.408571451902390f,
+  0.787904083728790f, -0.408792406320572f, 0.787590444087982f,
+    -0.409013092517853f,
+  0.787276685237885f, -0.409233570098877f, 0.786962687969208f,
+    -0.409453779459000f,
+  0.786648571491241f, -0.409673750400543f, 0.786334276199341f,
+    -0.409893482923508f,
+  0.786019802093506f, -0.410112977027893f, 0.785705149173737f,
+    -0.410332232713699f,
+  0.785390377044678f, -0.410551249980927f, 0.785075426101685f,
+    -0.410770028829575f,
+  0.784760236740112f, -0.410988569259644f, 0.784444928169250f,
+    -0.411206841468811f,
+  0.784129500389099f, -0.411424905061722f, 0.783813834190369f,
+    -0.411642700433731f,
+  0.783498048782349f, -0.411860257387161f, 0.783182024955750f,
+    -0.412077575922012f,
+  0.782865881919861f, -0.412294656038284f, 0.782549619674683f,
+    -0.412511497735977f,
+  0.782233119010925f, -0.412728071212769f, 0.781916499137878f,
+    -0.412944436073303f,
+  0.781599700450897f, -0.413160532712936f, 0.781282722949982f,
+    -0.413376390933990f,
+  0.780965566635132f, -0.413592010736465f, 0.780648231506348f,
+    -0.413807392120361f,
+  0.780330777168274f, -0.414022535085678f, 0.780013144016266f,
+    -0.414237409830093f,
+  0.779695332050323f, -0.414452046155930f, 0.779377400875092f,
+    -0.414666473865509f,
+  0.779059290885925f, -0.414880603551865f, 0.778741002082825f,
+    -0.415094524621964f,
+  0.778422534465790f, -0.415308207273483f, 0.778103888034821f,
+    -0.415521621704102f,
+  0.777785122394562f, -0.415734797716141f, 0.777466177940369f,
+    -0.415947735309601f,
+  0.777147054672241f, -0.416160434484482f, 0.776827812194824f,
+    -0.416372895240784f,
+  0.776508331298828f, -0.416585087776184f, 0.776188731193542f,
+    -0.416797041893005f,
+  0.775869011878967f, -0.417008757591248f, 0.775549054145813f,
+    -0.417220205068588f,
+  0.775228977203369f, -0.417431443929672f, 0.774908721446991f,
+    -0.417642414569855f,
+  0.774588346481323f, -0.417853146791458f, 0.774267733097076f,
+    -0.418063640594482f,
+  0.773947000503540f, -0.418273866176605f, 0.773626148700714f,
+    -0.418483853340149f,
+  0.773305058479309f, -0.418693602085114f, 0.772983849048615f,
+    -0.418903112411499f,
+  0.772662520408630f, -0.419112354516983f, 0.772340953350067f,
+    -0.419321358203888f,
+  0.772019267082214f, -0.419530123472214f, 0.771697402000427f,
+    -0.419738620519638f,
+  0.771375417709351f, -0.419946908950806f, 0.771053194999695f,
+    -0.420154929161072f,
+  0.770730912685394f, -0.420362681150436f, 0.770408391952515f,
+    -0.420570224523544f,
+  0.770085752010345f, -0.420777499675751f, 0.769762933254242f,
+    -0.420984506607056f,
+  0.769439935684204f, -0.421191304922104f, 0.769116818904877f,
+    -0.421397835016251f,
+  0.768793523311615f, -0.421604126691818f, 0.768470108509064f,
+    -0.421810150146484f,
+  0.768146514892578f, -0.422015935182571f, 0.767822742462158f,
+    -0.422221481800079f,
+  0.767498791217804f, -0.422426789999008f, 0.767174720764160f,
+    -0.422631829977036f,
+  0.766850471496582f, -0.422836631536484f, 0.766526103019714f,
+    -0.423041164875031f,
+  0.766201555728912f, -0.423245459794998f, 0.765876889228821f,
+    -0.423449516296387f,
+  0.765551984310150f, -0.423653304576874f, 0.765226960182190f,
+    -0.423856884241104f,
+  0.764901816844940f, -0.424060165882111f, 0.764576494693756f,
+    -0.424263238906860f,
+  0.764250993728638f, -0.424466013908386f, 0.763925373554230f,
+    -0.424668580293655f,
+  0.763599574565887f, -0.424870878458023f, 0.763273596763611f,
+    -0.425072938203812f,
+  0.762947499752045f, -0.425274729728699f, 0.762621283531189f,
+    -0.425476282835007f,
+  0.762294828891754f, -0.425677597522736f, 0.761968255043030f,
+    -0.425878643989563f,
+  0.761641561985016f, -0.426079452037811f, 0.761314690113068f,
+    -0.426279991865158f,
+  0.760987639427185f, -0.426480293273926f, 0.760660469532013f,
+    -0.426680356264114f,
+  0.760333120822906f, -0.426880151033401f, 0.760005652904511f,
+    -0.427079707384110f,
+  0.759678006172180f, -0.427278995513916f, 0.759350180625916f,
+    -0.427478045225143f,
+  0.759022235870361f, -0.427676826715469f, 0.758694171905518f,
+    -0.427875369787216f,
+  0.758365929126740f, -0.428073674440384f, 0.758037507534027f,
+    -0.428271710872650f,
+  0.757708966732025f, -0.428469479084015f, 0.757380247116089f,
+    -0.428667008876801f,
+  0.757051348686218f, -0.428864300251007f, 0.756722390651703f,
+    -0.429061323404312f,
+  0.756393194198608f, -0.429258108139038f, 0.756063878536224f,
+    -0.429454624652863f,
+  0.755734443664551f, -0.429650902748108f, 0.755404829978943f,
+    -0.429846942424774f,
+  0.755075037479401f, -0.430042684078217f, 0.754745125770569f,
+    -0.430238217115402f,
+  0.754415094852448f, -0.430433481931686f, 0.754084885120392f,
+    -0.430628478527069f,
+  0.753754496574402f, -0.430823236703873f, 0.753423988819122f,
+    -0.431017726659775f,
+  0.753093302249908f, -0.431211978197098f, 0.752762496471405f,
+    -0.431405961513519f,
+  0.752431571483612f, -0.431599706411362f, 0.752100467681885f,
+    -0.431793183088303f,
+  0.751769185066223f, -0.431986421346664f, 0.751437783241272f,
+    -0.432179391384125f,
+  0.751106262207031f, -0.432372123003006f, 0.750774562358856f,
+    -0.432564586400986f,
+  0.750442683696747f, -0.432756811380386f, 0.750110685825348f,
+    -0.432948768138886f,
+  0.749778568744659f, -0.433140486478806f, 0.749446272850037f,
+    -0.433331936597824f,
+  0.749113857746124f, -0.433523118495941f, 0.748781263828278f,
+    -0.433714061975479f,
+  0.748448550701141f, -0.433904737234116f, 0.748115658760071f,
+    -0.434095174074173f,
+  0.747782647609711f, -0.434285342693329f, 0.747449457645416f,
+    -0.434475272893906f,
+  0.747116148471832f, -0.434664934873581f, 0.746782720088959f,
+    -0.434854328632355f,
+  0.746449112892151f, -0.435043483972549f, 0.746115326881409f,
+    -0.435232400894165f,
+  0.745781481266022f, -0.435421019792557f, 0.745447397232056f,
+    -0.435609430074692f,
+  0.745113253593445f, -0.435797542333603f, 0.744778931140900f,
+    -0.435985416173935f,
+  0.744444429874420f, -0.436173021793365f, 0.744109809398651f,
+    -0.436360388994217f,
+  0.743775069713593f, -0.436547487974167f, 0.743440151214600f,
+    -0.436734348535538f,
+  0.743105113506317f, -0.436920911073685f, 0.742769956588745f,
+    -0.437107264995575f,
+  0.742434620857239f, -0.437293320894241f, 0.742099165916443f,
+    -0.437479138374329f,
+  0.741763532161713f, -0.437664687633514f, 0.741427779197693f,
+    -0.437849998474121f,
+  0.741091907024384f, -0.438035041093826f, 0.740755856037140f,
+    -0.438219845294952f,
+  0.740419685840607f, -0.438404351472855f, 0.740083336830139f,
+    -0.438588619232178f,
+  0.739746868610382f, -0.438772648572922f, 0.739410281181335f,
+    -0.438956409692764f,
+  0.739073514938354f, -0.439139902591705f, 0.738736629486084f,
+    -0.439323127269745f,
+  0.738399624824524f, -0.439506113529205f, 0.738062441349030f,
+    -0.439688831567764f,
+  0.737725138664246f, -0.439871311187744f, 0.737387716770172f,
+    -0.440053492784500f,
+  0.737050116062164f, -0.440235435962677f, 0.736712396144867f,
+    -0.440417140722275f,
+  0.736374497413635f, -0.440598547458649f, 0.736036539077759f,
+    -0.440779715776443f,
+  0.735698342323303f, -0.440960645675659f, 0.735360085964203f,
+    -0.441141277551651f,
+  0.735021650791168f, -0.441321671009064f, 0.734683096408844f,
+    -0.441501796245575f,
+  0.734344422817230f, -0.441681683063507f, 0.734005570411682f,
+    -0.441861271858215f,
+  0.733666598796844f, -0.442040622234344f, 0.733327507972717f,
+    -0.442219734191895f,
+  0.732988238334656f, -0.442398548126221f, 0.732648849487305f,
+    -0.442577123641968f,
+  0.732309341430664f, -0.442755430936813f, 0.731969714164734f,
+    -0.442933470010757f,
+  0.731629908084869f, -0.443111270666122f, 0.731289982795715f,
+    -0.443288803100586f,
+  0.730949878692627f, -0.443466067314148f, 0.730609714984894f,
+    -0.443643063306808f,
+  0.730269372463226f, -0.443819820880890f, 0.729928910732269f,
+    -0.443996280431747f,
+  0.729588270187378f, -0.444172531366348f, 0.729247510433197f,
+    -0.444348484277725f,
+  0.728906631469727f, -0.444524168968201f, 0.728565633296967f,
+    -0.444699615240097f,
+  0.728224515914917f, -0.444874793291092f, 0.727883219718933f,
+    -0.445049703121185f,
+  0.727541804313660f, -0.445224374532700f, 0.727200269699097f,
+    -0.445398747920990f,
+  0.726858556270599f, -0.445572882890701f, 0.726516723632813f,
+    -0.445746749639511f,
+  0.726174771785736f, -0.445920348167419f, 0.725832700729370f,
+    -0.446093708276749f,
+  0.725490510463715f, -0.446266770362854f, 0.725148141384125f,
+    -0.446439594030380f,
+  0.724805653095245f, -0.446612149477005f, 0.724463045597076f,
+    -0.446784436702728f,
+  0.724120318889618f, -0.446956485509872f, 0.723777413368225f,
+    -0.447128236293793f,
+  0.723434448242188f, -0.447299748659134f, 0.723091304302216f,
+    -0.447470992803574f,
+  0.722747981548309f, -0.447641968727112f, 0.722404599189758f,
+    -0.447812676429749f,
+  0.722061097621918f, -0.447983115911484f, 0.721717417240143f,
+    -0.448153316974640f,
+  0.721373617649078f, -0.448323249816895f, 0.721029698848724f,
+    -0.448492884635925f,
+  0.720685660839081f, -0.448662281036377f, 0.720341444015503f,
+    -0.448831409215927f,
+  0.719997107982636f, -0.449000298976898f, 0.719652712345123f,
+    -0.449168890714645f,
+  0.719308137893677f, -0.449337244033813f, 0.718963444232941f,
+    -0.449505299329758f,
+  0.718618571758270f, -0.449673116207123f, 0.718273639678955f,
+    -0.449840664863586f,
+  0.717928528785706f, -0.450007945299149f, 0.717583298683167f,
+    -0.450174957513809f,
+  0.717238008975983f, -0.450341701507568f, 0.716892480850220f,
+    -0.450508207082748f,
+  0.716546893119812f, -0.450674414634705f, 0.716201186180115f,
+    -0.450840383768082f,
+  0.715855300426483f, -0.451006084680557f, 0.715509355068207f,
+    -0.451171487569809f,
+  0.715163230895996f, -0.451336652040482f, 0.714816987514496f,
+    -0.451501548290253f,
+  0.714470624923706f, -0.451666176319122f, 0.714124143123627f,
+    -0.451830536127090f,
+  0.713777542114258f, -0.451994657516479f, 0.713430821895599f,
+    -0.452158480882645f,
+  0.713083922863007f, -0.452322036027908f, 0.712736964225769f,
+    -0.452485352754593f,
+  0.712389826774597f, -0.452648371458054f, 0.712042629718781f,
+    -0.452811151742935f,
+  0.711695253849030f, -0.452973634004593f, 0.711347758769989f,
+    -0.453135877847672f,
+  0.711000144481659f, -0.453297853469849f, 0.710652410984039f,
+    -0.453459560871124f,
+  0.710304558277130f, -0.453621000051498f, 0.709956526756287f,
+    -0.453782171010971f,
+  0.709608435630798f, -0.453943043947220f, 0.709260225296021f,
+    -0.454103678464890f,
+  0.708911836147308f, -0.454264044761658f, 0.708563387393951f,
+    -0.454424172639847f,
+  0.708214759826660f, -0.454584002494812f, 0.707866072654724f,
+    -0.454743564128876f,
+  0.707517206668854f, -0.454902857542038f, 0.707168221473694f,
+    -0.455061882734299f,
+  0.706819176673889f, -0.455220639705658f, 0.706469953060150f,
+    -0.455379128456116f,
+  0.706120610237122f, -0.455537378787994f, 0.705771148204803f,
+    -0.455695331096649f,
+  0.705421566963196f, -0.455853015184402f, 0.705071866512299f,
+    -0.456010431051254f,
+  0.704722046852112f, -0.456167578697205f, 0.704372167587280f,
+    -0.456324487924576f,
+  0.704022109508514f, -0.456481099128723f, 0.703671932220459f,
+    -0.456637442111969f,
+  0.703321635723114f, -0.456793516874313f, 0.702971220016479f,
+    -0.456949323415756f,
+  0.702620685100555f, -0.457104891538620f, 0.702270030975342f,
+    -0.457260161638260f,
+  0.701919257640839f, -0.457415163516998f, 0.701568365097046f,
+    -0.457569897174835f,
+  0.701217353343964f, -0.457724362611771f, 0.700866222381592f,
+    -0.457878559827805f,
+  0.700514972209930f, -0.458032488822937f, 0.700163602828979f,
+    -0.458186149597168f,
+  0.699812114238739f, -0.458339542150497f, 0.699460506439209f,
+    -0.458492636680603f,
+  0.699108779430389f, -0.458645492792130f, 0.698756933212280f,
+    -0.458798080682755f,
+  0.698404967784882f, -0.458950400352478f, 0.698052942752838f,
+    -0.459102421998978f,
+  0.697700738906860f, -0.459254205226898f, 0.697348415851593f,
+    -0.459405690431595f,
+  0.696996033191681f, -0.459556937217712f, 0.696643471717834f,
+    -0.459707885980606f,
+  0.696290850639343f, -0.459858566522598f, 0.695938050746918f,
+    -0.460008978843689f,
+  0.695585191249847f, -0.460159152746201f, 0.695232212543488f,
+    -0.460309028625488f,
+  0.694879114627838f, -0.460458606481552f, 0.694525837898254f,
+    -0.460607945919037f,
+  0.694172501564026f, -0.460757017135620f, 0.693819046020508f,
+    -0.460905820131302f,
+  0.693465530872345f, -0.461054325103760f, 0.693111836910248f,
+    -0.461202591657639f,
+  0.692758023738861f, -0.461350560188293f, 0.692404091358185f,
+    -0.461498260498047f,
+  0.692050099372864f, -0.461645722389221f, 0.691695988178253f,
+    -0.461792886257172f,
+  0.691341698169708f, -0.461939752101898f, 0.690987348556519f,
+    -0.462086379528046f,
+  0.690632879734039f, -0.462232738733292f, 0.690278291702271f,
+    -0.462378799915314f,
+  0.689923584461212f, -0.462524622678757f, 0.689568817615509f,
+    -0.462670147418976f,
+  0.689213871955872f, -0.462815403938293f, 0.688858866691589f,
+    -0.462960392236710f,
+  0.688503682613373f, -0.463105112314224f, 0.688148438930511f,
+    -0.463249564170837f,
+  0.687793076038361f, -0.463393747806549f, 0.687437593936920f,
+    -0.463537633419037f,
+  0.687082052230835f, -0.463681250810623f, 0.686726331710815f,
+    -0.463824629783630f,
+  0.686370551586151f, -0.463967710733414f, 0.686014592647552f,
+    -0.464110493659973f,
+  0.685658574104309f, -0.464253038167953f, 0.685302436351776f,
+    -0.464395314455032f,
+  0.684946238994598f, -0.464537292718887f, 0.684589862823486f,
+    -0.464679002761841f,
+  0.684233427047729f, -0.464820444583893f, 0.683876872062683f,
+    -0.464961618185043f,
+  0.683520197868347f, -0.465102523565292f, 0.683163404464722f,
+    -0.465243130922318f,
+  0.682806491851807f, -0.465383470058441f, 0.682449519634247f,
+    -0.465523540973663f,
+  0.682092368602753f, -0.465663343667984f, 0.681735157966614f,
+    -0.465802878141403f,
+  0.681377887725830f, -0.465942144393921f, 0.681020438671112f,
+    -0.466081112623215f,
+  0.680662930011749f, -0.466219812631607f, 0.680305242538452f,
+    -0.466358244419098f,
+  0.679947495460510f, -0.466496407985687f, 0.679589688777924f,
+    -0.466634273529053f,
+  0.679231703281403f, -0.466771900653839f, 0.678873658180237f,
+    -0.466909229755402f,
+  0.678515493869781f, -0.467046260833740f, 0.678157210350037f,
+    -0.467183053493500f,
+  0.677798807621002f, -0.467319577932358f, 0.677440345287323f,
+    -0.467455804347992f,
+  0.677081763744354f, -0.467591762542725f, 0.676723062992096f,
+    -0.467727422714233f,
+  0.676364302635193f, -0.467862844467163f, 0.676005363464355f,
+    -0.467997968196869f,
+  0.675646364688873f, -0.468132823705673f, 0.675287246704102f,
+    -0.468267410993576f,
+  0.674928069114685f, -0.468401730060577f, 0.674568772315979f,
+    -0.468535751104355f,
+  0.674209356307983f, -0.468669503927231f, 0.673849821090698f,
+    -0.468802988529205f,
+  0.673490226268768f, -0.468936175107956f, 0.673130512237549f,
+    -0.469069123268127f,
+  0.672770678997040f, -0.469201773405075f, 0.672410726547241f,
+    -0.469334155321121f,
+  0.672050714492798f, -0.469466239213943f, 0.671690583229065f,
+    -0.469598054885864f,
+  0.671330332756042f, -0.469729602336884f, 0.670970022678375f,
+    -0.469860881567001f,
+  0.670609593391418f, -0.469991862773895f, 0.670249044895172f,
+    -0.470122605562210f,
+  0.669888436794281f, -0.470253020524979f, 0.669527709484100f,
+    -0.470383197069168f,
+  0.669166862964630f, -0.470513075590134f, 0.668805956840515f,
+    -0.470642685890198f,
+  0.668444931507111f, -0.470772027969360f, 0.668083786964417f,
+    -0.470901101827621f,
+  0.667722582817078f, -0.471029877662659f, 0.667361259460449f,
+    -0.471158385276794f,
+  0.666999816894531f, -0.471286594867706f, 0.666638314723969f,
+    -0.471414536237717f,
+  0.666276693344116f, -0.471542209386826f, 0.665914952754974f,
+    -0.471669614315033f,
+  0.665553152561188f, -0.471796721220016f, 0.665191233158112f,
+    -0.471923559904099f,
+  0.664829254150391f, -0.472050130367279f, 0.664467096328735f,
+    -0.472176402807236f,
+  0.664104938507080f, -0.472302407026291f, 0.663742601871490f,
+    -0.472428143024445f,
+  0.663380205631256f, -0.472553610801697f, 0.663017749786377f,
+    -0.472678780555725f,
+  0.662655174732208f, -0.472803652286530f, 0.662292480468750f,
+    -0.472928285598755f,
+  0.661929666996002f, -0.473052620887756f, 0.661566793918610f,
+    -0.473176687955856f,
+  0.661203861236572f, -0.473300457000732f, 0.660840749740601f,
+    -0.473423957824707f,
+  0.660477638244629f, -0.473547190427780f, 0.660114347934723f,
+    -0.473670125007629f,
+  0.659750998020172f, -0.473792791366577f, 0.659387588500977f,
+    -0.473915189504623f,
+  0.659024059772491f, -0.474037289619446f, 0.658660411834717f,
+    -0.474159121513367f,
+  0.658296704292297f, -0.474280685186386f, 0.657932877540588f,
+    -0.474401950836182f,
+  0.657568991184235f, -0.474522948265076f, 0.657204985618591f,
+    -0.474643647670746f,
+  0.656840860843658f, -0.474764078855515f, 0.656476676464081f,
+    -0.474884241819382f,
+  0.656112432479858f, -0.475004136562347f, 0.655748009681702f,
+    -0.475123733282089f,
+  0.655383586883545f, -0.475243031978607f, 0.655019044876099f,
+    -0.475362062454224f,
+  0.654654383659363f, -0.475480824708939f, 0.654289662837982f,
+    -0.475599318742752f,
+  0.653924822807312f, -0.475717514753342f, 0.653559923171997f,
+    -0.475835442543030f,
+  0.653194904327393f, -0.475953072309494f, 0.652829825878143f,
+    -0.476070433855057f,
+  0.652464628219604f, -0.476187497377396f, 0.652099311351776f,
+    -0.476304292678833f,
+  0.651733994483948f, -0.476420819759369f, 0.651368498802185f,
+    -0.476537048816681f,
+  0.651003003120422f, -0.476653009653091f, 0.650637328624725f,
+    -0.476768702268600f,
+  0.650271594524384f, -0.476884096860886f, 0.649905800819397f,
+    -0.476999223232269f,
+  0.649539887905121f, -0.477114051580429f, 0.649173915386200f,
+    -0.477228611707687f,
+  0.648807883262634f, -0.477342873811722f, 0.648441672325134f,
+    -0.477456867694855f,
+  0.648075461387634f, -0.477570593357086f, 0.647709131240845f,
+    -0.477684020996094f,
+  0.647342681884766f, -0.477797180414200f, 0.646976172924042f,
+    -0.477910041809082f,
+  0.646609604358673f, -0.478022634983063f, 0.646242916584015f,
+    -0.478134930133820f,
+  0.645876109600067f, -0.478246957063675f, 0.645509302616119f,
+    -0.478358715772629f,
+  0.645142316818237f, -0.478470176458359f, 0.644775331020355f,
+    -0.478581339120865f,
+  0.644408226013184f, -0.478692263364792f, 0.644041001796722f,
+    -0.478802859783173f,
+  0.643673717975616f, -0.478913217782974f, 0.643306374549866f,
+    -0.479023247957230f,
+  0.642938911914825f, -0.479133039712906f, 0.642571389675140f,
+    -0.479242533445358f,
+  0.642203748226166f, -0.479351729154587f, 0.641836047172546f,
+    -0.479460656642914f,
+  0.641468286514282f, -0.479569315910339f, 0.641100406646729f,
+    -0.479677677154541f,
+  0.640732467174530f, -0.479785770177841f, 0.640364408493042f,
+    -0.479893565177917f,
+  0.639996349811554f, -0.480001062154770f, 0.639628112316132f,
+    -0.480108320713043f,
+  0.639259815216064f, -0.480215251445770f, 0.638891458511353f,
+    -0.480321943759918f,
+  0.638523042201996f, -0.480428308248520f, 0.638154506683350f,
+    -0.480534434318542f,
+  0.637785911560059f, -0.480640232563019f, 0.637417197227478f,
+    -0.480745792388916f,
+  0.637048482894897f, -0.480851024389267f, 0.636679589748383f,
+    -0.480956017971039f,
+  0.636310696601868f, -0.481060713529587f, 0.635941684246063f,
+    -0.481165111064911f,
+  0.635572552680969f, -0.481269240379334f, 0.635203421115875f,
+    -0.481373071670532f,
+  0.634834170341492f, -0.481476634740829f, 0.634464859962463f,
+    -0.481579899787903f,
+  0.634095430374146f, -0.481682896614075f, 0.633725941181183f,
+    -0.481785595417023f,
+  0.633356392383575f, -0.481888025999069f, 0.632986724376678f,
+    -0.481990188360214f,
+  0.632616996765137f, -0.482092022895813f, 0.632247209548950f,
+    -0.482193619012833f,
+  0.631877362728119f, -0.482294887304306f, 0.631507396697998f,
+    -0.482395917177200f,
+  0.631137371063232f, -0.482496619224548f, 0.630767226219177f,
+    -0.482597053050995f,
+  0.630397081375122f, -0.482697218656540f, 0.630026817321777f,
+    -0.482797086238861f,
+  0.629656434059143f, -0.482896685600281f, 0.629286050796509f,
+    -0.482995986938477f,
+  0.628915548324585f, -0.483094990253448f, 0.628544986248016f,
+    -0.483193725347519f,
+  0.628174364566803f, -0.483292192220688f, 0.627803623676300f,
+    -0.483390361070633f,
+  0.627432823181152f, -0.483488231897354f, 0.627061963081360f,
+    -0.483585834503174f,
+  0.626691043376923f, -0.483683139085770f, 0.626320004463196f,
+    -0.483780175447464f,
+  0.625948905944824f, -0.483876913785934f, 0.625577747821808f,
+    -0.483973383903503f,
+  0.625206530094147f, -0.484069555997849f, 0.624835193157196f,
+    -0.484165430068970f,
+  0.624463796615601f, -0.484261035919189f, 0.624092340469360f,
+    -0.484356373548508f,
+  0.623720824718475f, -0.484451413154602f, 0.623349189758301f,
+    -0.484546154737473f,
+  0.622977554798126f, -0.484640628099442f, 0.622605800628662f,
+    -0.484734803438187f,
+  0.622233927249908f, -0.484828680753708f, 0.621862053871155f,
+    -0.484922289848328f,
+  0.621490061283112f, -0.485015630722046f, 0.621118068695068f,
+    -0.485108673572540f,
+  0.620745956897736f, -0.485201418399811f, 0.620373785495758f,
+    -0.485293895006180f,
+  0.620001494884491f, -0.485386073589325f, 0.619629204273224f,
+    -0.485477954149246f,
+  0.619256794452667f, -0.485569566488266f, 0.618884325027466f,
+    -0.485660910606384f,
+  0.618511795997620f, -0.485751956701279f, 0.618139207363129f,
+    -0.485842704772949f,
+  0.617766559123993f, -0.485933154821396f, 0.617393791675568f,
+    -0.486023366451263f,
+  0.617020964622498f, -0.486113250255585f, 0.616648077964783f,
+    -0.486202865839005f,
+  0.616275131702423f, -0.486292183399200f, 0.615902125835419f,
+    -0.486381232738495f,
+  0.615529060363770f, -0.486469984054565f, 0.615155875682831f,
+    -0.486558437347412f,
+  0.614782691001892f, -0.486646622419357f, 0.614409387111664f,
+    -0.486734509468079f,
+  0.614036023616791f, -0.486822128295898f, 0.613662600517273f,
+    -0.486909449100494f,
+  0.613289117813110f, -0.486996471881866f, 0.612915575504303f,
+    -0.487083226442337f,
+  0.612541973590851f, -0.487169682979584f, 0.612168252468109f,
+    -0.487255871295929f,
+  0.611794531345367f, -0.487341761589050f, 0.611420691013336f,
+    -0.487427353858948f,
+  0.611046791076660f, -0.487512677907944f, 0.610672831535339f,
+    -0.487597703933716f,
+  0.610298871994019f, -0.487682431936264f, 0.609924793243408f,
+    -0.487766891717911f,
+  0.609550595283508f, -0.487851053476334f, 0.609176397323608f,
+    -0.487934947013855f,
+  0.608802139759064f, -0.488018542528152f, 0.608427822589874f,
+    -0.488101840019226f,
+  0.608053386211395f, -0.488184869289398f, 0.607678949832916f,
+    -0.488267600536346f,
+  0.607304394245148f, -0.488350033760071f, 0.606929838657379f,
+    -0.488432198762894f,
+  0.606555163860321f, -0.488514065742493f, 0.606180429458618f,
+    -0.488595664501190f,
+  0.605805635452271f, -0.488676935434341f, 0.605430841445923f,
+    -0.488757967948914f,
+  0.605055928230286f, -0.488838672637939f, 0.604680955410004f,
+    -0.488919109106064f,
+  0.604305922985077f, -0.488999247550964f, 0.603930830955505f,
+    -0.489079117774963f,
+  0.603555679321289f, -0.489158689975739f, 0.603180468082428f,
+    -0.489237964153290f,
+  0.602805197238922f, -0.489316970109940f, 0.602429866790771f,
+    -0.489395678043365f,
+  0.602054476737976f, -0.489474087953568f, 0.601679027080536f,
+    -0.489552229642868f,
+  0.601303517818451f, -0.489630073308945f, 0.600927948951721f,
+    -0.489707618951797f,
+  0.600552320480347f, -0.489784896373749f, 0.600176632404327f,
+    -0.489861875772476f,
+  0.599800884723663f, -0.489938557147980f, 0.599425077438354f,
+    -0.490014940500259f,
+  0.599049210548401f, -0.490091055631638f, 0.598673284053802f,
+    -0.490166902542114f,
+  0.598297297954559f, -0.490242421627045f, 0.597921252250671f,
+    -0.490317672491074f,
+  0.597545146942139f, -0.490392625331879f, 0.597168982028961f,
+    -0.490467309951782f,
+  0.596792817115784f, -0.490541696548462f, 0.596416532993317f,
+    -0.490615785121918f,
+  0.596040189266205f, -0.490689605474472f, 0.595663845539093f,
+    -0.490763127803802f,
+  0.595287382602692f, -0.490836352109909f, 0.594910860061646f,
+    -0.490909278392792f,
+  0.594534337520599f, -0.490981936454773f, 0.594157755374908f,
+    -0.491054296493530f,
+  0.593781054019928f, -0.491126358509064f, 0.593404352664948f,
+    -0.491198152303696f,
+  0.593027591705322f, -0.491269648075104f, 0.592650771141052f,
+    -0.491340845823288f,
+  0.592273890972137f, -0.491411775350571f, 0.591896951198578f,
+    -0.491482406854630f,
+  0.591519951820374f, -0.491552740335464f, 0.591142892837524f,
+    -0.491622805595398f,
+  0.590765833854675f, -0.491692543029785f, 0.590388655662537f,
+    -0.491762012243271f,
+  0.590011477470398f, -0.491831213235855f, 0.589634180068970f,
+    -0.491900116205215f,
+  0.589256882667542f, -0.491968721151352f, 0.588879525661469f,
+    -0.492037028074265f,
+  0.588502109050751f, -0.492105036973953f, 0.588124632835388f,
+    -0.492172777652740f,
+  0.587747097015381f, -0.492240220308304f, 0.587369561195374f,
+    -0.492307394742966f,
+  0.586991965770721f, -0.492374241352081f, 0.586614251136780f,
+    -0.492440819740295f,
+  0.586236536502838f, -0.492507129907608f, 0.585858762264252f,
+    -0.492573112249374f,
+  0.585480928421021f, -0.492638826370239f, 0.585103094577789f,
+    -0.492704242467880f,
+  0.584725141525269f, -0.492769360542297f, 0.584347188472748f,
+    -0.492834210395813f,
+  0.583969175815582f, -0.492898762226105f, 0.583591103553772f,
+    -0.492963016033173f,
+  0.583212971687317f, -0.493026971817017f, 0.582834780216217f,
+    -0.493090659379959f,
+  0.582456588745117f, -0.493154048919678f, 0.582078278064728f,
+    -0.493217140436172f,
+  0.581699967384338f, -0.493279963731766f, 0.581321597099304f,
+    -0.493342459201813f,
+  0.580943167209625f, -0.493404686450958f, 0.580564737319946f,
+    -0.493466645479202f,
+  0.580186247825623f, -0.493528276681900f, 0.579807698726654f,
+    -0.493589639663696f,
+  0.579429090023041f, -0.493650704622269f, 0.579050421714783f,
+    -0.493711471557617f,
+  0.578671753406525f, -0.493771970272064f, 0.578292965888977f,
+    -0.493832170963287f,
+  0.577914178371429f, -0.493892073631287f, 0.577535390853882f,
+    -0.493951678276062f,
+  0.577156484127045f, -0.494011014699936f, 0.576777577400208f,
+    -0.494070053100586f,
+  0.576398611068726f, -0.494128793478012f, 0.576019585132599f,
+    -0.494187235832214f,
+  0.575640499591827f, -0.494245409965515f, 0.575261414051056f,
+    -0.494303256273270f,
+  0.574882268905640f, -0.494360834360123f, 0.574503064155579f,
+    -0.494418144226074f,
+  0.574123859405518f, -0.494475126266479f, 0.573744535446167f,
+    -0.494531840085983f,
+  0.573365211486816f, -0.494588255882263f, 0.572985887527466f,
+    -0.494644373655319f,
+  0.572606444358826f, -0.494700223207474f, 0.572227001190186f,
+    -0.494755744934082f,
+  0.571847498416901f, -0.494810998439789f, 0.571467995643616f,
+    -0.494865983724594f,
+  0.571088373661041f, -0.494920641183853f, 0.570708811283112f,
+    -0.494975030422211f,
+  0.570329129695892f, -0.495029091835022f, 0.569949388504028f,
+    -0.495082914829254f,
+  0.569569647312164f, -0.495136409997940f, 0.569189906120300f,
+    -0.495189607143402f,
+  0.568810045719147f, -0.495242536067963f, 0.568430185317993f,
+    -0.495295166969299f,
+  0.568050265312195f, -0.495347499847412f, 0.567670345306396f,
+    -0.495399564504623f,
+  0.567290365695953f, -0.495451331138611f, 0.566910326480865f,
+    -0.495502769947052f,
+  0.566530287265778f, -0.495553970336914f, 0.566150128841400f,
+    -0.495604842901230f,
+  0.565770030021667f, -0.495655417442322f, 0.565389811992645f,
+    -0.495705723762512f,
+  0.565009593963623f, -0.495755732059479f, 0.564629375934601f,
+    -0.495805442333221f,
+  0.564249038696289f, -0.495854884386063f, 0.563868701457977f,
+    -0.495903998613358f,
+  0.563488364219666f, -0.495952844619751f, 0.563107967376709f,
+    -0.496001392602921f,
+  0.562727510929108f, -0.496049642562866f, 0.562346994876862f,
+    -0.496097624301910f,
+  0.561966478824615f, -0.496145308017731f, 0.561585903167725f,
+    -0.496192663908005f,
+  0.561205327510834f, -0.496239781379700f, 0.560824692249298f,
+    -0.496286571025848f,
+  0.560444056987762f, -0.496333062648773f, 0.560063362121582f,
+    -0.496379286050797f,
+  0.559682607650757f, -0.496425211429596f, 0.559301853179932f,
+    -0.496470838785172f,
+  0.558921039104462f, -0.496516168117523f, 0.558540165424347f,
+    -0.496561229228973f,
+  0.558159291744232f, -0.496605962514877f, 0.557778418064117f,
+    -0.496650427579880f,
+  0.557397484779358f, -0.496694594621658f, 0.557016491889954f,
+    -0.496738493442535f,
+  0.556635499000549f, -0.496782064437866f, 0.556254446506500f,
+    -0.496825367212296f,
+  0.555873334407806f, -0.496868371963501f, 0.555492222309113f,
+    -0.496911078691483f,
+  0.555111110210419f, -0.496953487396240f, 0.554729938507080f,
+    -0.496995598077774f,
+  0.554348707199097f, -0.497037440538406f, 0.553967475891113f,
+    -0.497078984975815f,
+  0.553586184978485f, -0.497120231389999f, 0.553204894065857f,
+    -0.497161179780960f,
+  0.552823603153229f, -0.497201830148697f, 0.552442193031311f,
+    -0.497242212295532f,
+  0.552060842514038f, -0.497282296419144f, 0.551679372787476f,
+    -0.497322082519531f,
+  0.551297962665558f, -0.497361570596695f, 0.550916433334351f,
+    -0.497400760650635f,
+  0.550534904003143f, -0.497439652681351f, 0.550153374671936f,
+    -0.497478276491165f,
+  0.549771785736084f, -0.497516602277756f, 0.549390196800232f,
+    -0.497554630041122f,
+  0.549008548259735f, -0.497592359781265f, 0.548626899719238f,
+    -0.497629791498184f,
+  0.548245191574097f, -0.497666954994202f, 0.547863483428955f,
+    -0.497703820466995f,
+  0.547481775283813f, -0.497740387916565f, 0.547099947929382f,
+    -0.497776657342911f,
+  0.546718180179596f, -0.497812628746033f, 0.546336352825165f,
+    -0.497848302125931f,
+  0.545954465866089f, -0.497883707284927f, 0.545572578907013f,
+    -0.497918814420700f,
+  0.545190691947937f, -0.497953623533249f, 0.544808745384216f,
+    -0.497988134622574f,
+  0.544426798820496f, -0.498022347688675f, 0.544044792652130f,
+    -0.498056292533875f,
+  0.543662786483765f, -0.498089909553528f, 0.543280720710754f,
+    -0.498123258352280f,
+  0.542898654937744f, -0.498156309127808f, 0.542516589164734f,
+    -0.498189061880112f,
+  0.542134463787079f, -0.498221516609192f, 0.541752278804779f,
+    -0.498253703117371f,
+  0.541370153427124f, -0.498285561800003f, 0.540987968444824f,
+    -0.498317152261734f,
+  0.540605723857880f, -0.498348444700241f, 0.540223479270935f,
+    -0.498379439115524f,
+  0.539841234683990f, -0.498410135507584f, 0.539458930492401f,
+    -0.498440563678741f,
+  0.539076626300812f, -0.498470664024353f, 0.538694262504578f,
+    -0.498500496149063f,
+  0.538311958312988f, -0.498530030250549f, 0.537929534912109f,
+    -0.498559266328812f,
+  0.537547171115875f, -0.498588204383850f, 0.537164747714996f,
+    -0.498616874217987f,
+  0.536782264709473f, -0.498645216226578f, 0.536399841308594f,
+    -0.498673290014267f,
+  0.536017298698425f, -0.498701065778732f, 0.535634815692902f,
+    -0.498728543519974f,
+  0.535252273082733f, -0.498755723237991f, 0.534869730472565f,
+    -0.498782604932785f,
+  0.534487187862396f, -0.498809218406677f, 0.534104585647583f,
+    -0.498835533857346f,
+  0.533721983432770f, -0.498861521482468f, 0.533339321613312f,
+    -0.498887240886688f,
+  0.532956659793854f, -0.498912662267685f, 0.532573997974396f,
+    -0.498937815427780f,
+  0.532191336154938f, -0.498962640762329f, 0.531808614730835f,
+    -0.498987197875977f,
+  0.531425893306732f, -0.499011427164078f, 0.531043112277985f,
+    -0.499035388231277f,
+  0.530660390853882f, -0.499059051275253f, 0.530277609825134f,
+    -0.499082416296005f,
+  0.529894769191742f, -0.499105513095856f, 0.529511988162994f,
+    -0.499128282070160f,
+  0.529129147529602f, -0.499150782823563f, 0.528746306896210f,
+    -0.499172955751419f,
+  0.528363406658173f, -0.499194860458374f, 0.527980506420136f,
+    -0.499216467142105f,
+  0.527597606182098f, -0.499237775802612f, 0.527214705944061f,
+    -0.499258816242218f,
+  0.526831746101379f, -0.499279528856277f, 0.526448845863342f,
+    -0.499299973249435f,
+  0.526065826416016f, -0.499320119619370f, 0.525682866573334f,
+    -0.499339967966080f,
+  0.525299847126007f, -0.499359518289566f, 0.524916887283325f,
+    -0.499378770589828f,
+  0.524533808231354f, -0.499397724866867f, 0.524150788784027f,
+    -0.499416410923004f,
+  0.523767769336700f, -0.499434769153595f, 0.523384690284729f,
+    -0.499452859163284f,
+  0.523001611232758f, -0.499470651149750f, 0.522618472576141f,
+    -0.499488145112991f,
+  0.522235393524170f, -0.499505341053009f, 0.521852254867554f,
+    -0.499522238969803f,
+  0.521469116210938f, -0.499538868665695f, 0.521085977554321f,
+    -0.499555170536041f,
+  0.520702838897705f, -0.499571204185486f, 0.520319640636444f,
+    -0.499586939811707f,
+  0.519936442375183f, -0.499602377414703f, 0.519553244113922f,
+    -0.499617516994476f,
+  0.519170045852661f, -0.499632388353348f, 0.518786847591400f,
+    -0.499646931886673f,
+  0.518403589725494f, -0.499661177396774f, 0.518020391464233f,
+    -0.499675154685974f,
+  0.517637133598328f, -0.499688833951950f, 0.517253875732422f,
+    -0.499702215194702f,
+  0.516870558261871f, -0.499715298414230f, 0.516487300395966f,
+    -0.499728083610535f,
+  0.516103982925415f, -0.499740600585938f, 0.515720725059509f,
+    -0.499752789735794f,
+  0.515337407588959f, -0.499764710664749f, 0.514954090118408f,
+    -0.499776333570480f,
+  0.514570772647858f, -0.499787658452988f, 0.514187395572662f,
+    -0.499798685312271f,
+  0.513804078102112f, -0.499809414148331f, 0.513420701026917f,
+    -0.499819844961166f,
+  0.513037383556366f, -0.499830007553101f, 0.512654006481171f,
+    -0.499839842319489f,
+  0.512270629405975f, -0.499849408864975f, 0.511887252330780f,
+    -0.499858677387238f,
+  0.511503815650940f, -0.499867647886276f, 0.511120438575745f,
+    -0.499876320362091f,
+  0.510737061500549f, -0.499884694814682f, 0.510353624820709f,
+    -0.499892801046371f,
+  0.509970188140869f, -0.499900579452515f, 0.509586811065674f,
+    -0.499908089637756f,
+  0.509203374385834f, -0.499915301799774f, 0.508819937705994f,
+    -0.499922215938568f,
+  0.508436501026154f, -0.499928832054138f, 0.508053064346313f,
+    -0.499935150146484f,
+  0.507669627666473f, -0.499941170215607f, 0.507286131381989f,
+    -0.499946922063828f,
+  0.506902694702148f, -0.499952346086502f, 0.506519258022308f,
+    -0.499957501888275f,
+  0.506135761737823f, -0.499962359666824f, 0.505752325057983f,
+    -0.499966919422150f,
+  0.505368828773499f, -0.499971181154251f, 0.504985332489014f,
+    -0.499975144863129f,
+  0.504601895809174f, -0.499978810548782f, 0.504218399524689f,
+    -0.499982208013535f,
+  0.503834903240204f, -0.499985307455063f, 0.503451406955719f,
+    -0.499988079071045f,
+  0.503067970275879f, -0.499990582466125f, 0.502684473991394f,
+    -0.499992787837982f,
+  0.502300977706909f, -0.499994695186615f, 0.501917481422424f,
+    -0.499996334314346f,
+  0.501533985137939f, -0.499997645616531f, 0.501150488853455f,
+    -0.499998688697815f,
+  0.500766992568970f, -0.499999403953552f, 0.500383496284485f,
+    -0.499999850988388f,
+};
+
+
+
+/**    
+* @brief  Initialization function for the floating-point RFFT/RIFFT.   
+* @deprecated Do not use this function.  It has been superceded by \ref arm_rfft_fast_init_f32 and will be removed
+* in the future.
+* @param[in,out] *S             points to an instance of the floating-point RFFT/RIFFT structure.   
+* @param[in,out] *S_CFFT        points to an instance of the floating-point CFFT/CIFFT structure.   
+* @param[in]     fftLenReal     length of the FFT.   
+* @param[in]     ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.   
+* @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.   
+* @return		The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.   
+*    
+* \par Description:   
+* \par   
+* The parameter <code>fftLenReal</code>	Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048.    
+* \par    
+* The parameter <code>ifftFlagR</code> controls whether a forward or inverse transform is computed.    
+* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.    
+* \par    
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.    
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.   
+* \par    
+* This function also initializes Twiddle factor table.     
+*/
+
+arm_status arm_rfft_init_f32(
+  arm_rfft_instance_f32 * S,
+  arm_cfft_radix4_instance_f32 * S_CFFT,
+  uint32_t fftLenReal,
+  uint32_t ifftFlagR,
+  uint32_t bitReverseFlag)
+{
+
+  /*  Initialise the default arm status */
+  arm_status status = ARM_MATH_SUCCESS;
+
+  /*  Initialize the Real FFT length */
+  S->fftLenReal = (uint16_t) fftLenReal;
+
+  /*  Initialize the Complex FFT length */
+  S->fftLenBy2 = (uint16_t) fftLenReal / 2u;
+
+  /*  Initialize the Twiddle coefficientA pointer */
+  S->pTwiddleAReal = (float32_t *) realCoefA;
+
+  /*  Initialize the Twiddle coefficientB pointer */
+  S->pTwiddleBReal = (float32_t *) realCoefB;
+
+  /*  Initialize the Flag for selection of RFFT or RIFFT */
+  S->ifftFlagR = (uint8_t) ifftFlagR;
+
+  /*  Initialize the Flag for calculation Bit reversal or not */
+  S->bitReverseFlagR = (uint8_t) bitReverseFlag;
+
+  /*  Initializations of structure parameters depending on the FFT length */
+  switch (S->fftLenReal)
+  {
+    /* Init table modifier value */
+  case 8192u:
+    S->twidCoefRModifier = 1u;
+    break;
+  case 2048u:
+    S->twidCoefRModifier = 4u;
+    break;
+  case 512u:
+    S->twidCoefRModifier = 16u;
+    break;
+  case 128u:
+    S->twidCoefRModifier = 64u;
+    break;
+  default:
+    /*  Reporting argument error if rfftSize is not valid value */
+    status = ARM_MATH_ARGUMENT_ERROR;
+    break;
+  }
+
+  /* Init Complex FFT Instance */
+  S->pCfft = S_CFFT;
+
+  if(S->ifftFlagR)
+  {
+    /* Initializes the CIFFT Module for fftLenreal/2 length */
+    arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 1u, 0u);
+  }
+  else
+  {
+    /* Initializes the CFFT Module for fftLenreal/2 length */
+    arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 0u, 0u);
+  }
+
+  /* return the status of RFFT Init function */
+  return (status);
+
+}
+
+  /**    
+   * @} end of RealFFT group    
+   */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,2235 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_rfft_init_q15.c    
+*    
+* Description:	RFFT & RIFFT Q15 initialisation function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+#include "arm_const_structs.h"
+
+/**    
+* @ingroup groupTransforms    
+*/
+
+/**    
+* @addtogroup RealFFT    
+* @{    
+*/
+
+
+
+/**    
+* \par    
+* Generation fixed-point realCoefAQ15 array in Q15 format:    
+* \par    
+* n = 4096    
+* <pre>for (i = 0; i < n; i++)    
+*  {    
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));    
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));    
+*  } </pre>    
+* \par    
+* Convert to fixed point Q15 format    
+*       round(pATable[i] * pow(2, 15))    
+*/
+static const q15_t ALIGN4 realCoefAQ15[8192] = {
+    0x4000, 0xc000, 0x3ff3, 0xc000, 0x3fe7, 0xc000, 0x3fda, 0xc000,
+    0x3fce, 0xc000, 0x3fc1, 0xc000, 0x3fb5, 0xc000, 0x3fa8, 0xc000,
+    0x3f9b, 0xc000, 0x3f8f, 0xc000, 0x3f82, 0xc000, 0x3f76, 0xc001,
+    0x3f69, 0xc001, 0x3f5d, 0xc001, 0x3f50, 0xc001, 0x3f44, 0xc001,
+    0x3f37, 0xc001, 0x3f2a, 0xc001, 0x3f1e, 0xc002, 0x3f11, 0xc002,
+    0x3f05, 0xc002, 0x3ef8, 0xc002, 0x3eec, 0xc002, 0x3edf, 0xc003,
+    0x3ed2, 0xc003, 0x3ec6, 0xc003, 0x3eb9, 0xc003, 0x3ead, 0xc004,
+    0x3ea0, 0xc004, 0x3e94, 0xc004, 0x3e87, 0xc004, 0x3e7a, 0xc005,
+    0x3e6e, 0xc005, 0x3e61, 0xc005, 0x3e55, 0xc006, 0x3e48, 0xc006,
+    0x3e3c, 0xc006, 0x3e2f, 0xc007, 0x3e23, 0xc007, 0x3e16, 0xc007,
+    0x3e09, 0xc008, 0x3dfd, 0xc008, 0x3df0, 0xc009, 0x3de4, 0xc009,
+    0x3dd7, 0xc009, 0x3dcb, 0xc00a, 0x3dbe, 0xc00a, 0x3db2, 0xc00b,
+    0x3da5, 0xc00b, 0x3d98, 0xc00c, 0x3d8c, 0xc00c, 0x3d7f, 0xc00d,
+    0x3d73, 0xc00d, 0x3d66, 0xc00e, 0x3d5a, 0xc00e, 0x3d4d, 0xc00f,
+    0x3d40, 0xc00f, 0x3d34, 0xc010, 0x3d27, 0xc010, 0x3d1b, 0xc011,
+    0x3d0e, 0xc011, 0x3d02, 0xc012, 0x3cf5, 0xc013, 0x3ce9, 0xc013,
+    0x3cdc, 0xc014, 0x3cd0, 0xc014, 0x3cc3, 0xc015, 0x3cb6, 0xc016,
+    0x3caa, 0xc016, 0x3c9d, 0xc017, 0x3c91, 0xc018, 0x3c84, 0xc018,
+    0x3c78, 0xc019, 0x3c6b, 0xc01a, 0x3c5f, 0xc01a, 0x3c52, 0xc01b,
+    0x3c45, 0xc01c, 0x3c39, 0xc01d, 0x3c2c, 0xc01d, 0x3c20, 0xc01e,
+    0x3c13, 0xc01f, 0x3c07, 0xc020, 0x3bfa, 0xc020, 0x3bee, 0xc021,
+    0x3be1, 0xc022, 0x3bd5, 0xc023, 0x3bc8, 0xc024, 0x3bbc, 0xc024,
+    0x3baf, 0xc025, 0x3ba2, 0xc026, 0x3b96, 0xc027, 0x3b89, 0xc028,
+    0x3b7d, 0xc029, 0x3b70, 0xc02a, 0x3b64, 0xc02b, 0x3b57, 0xc02b,
+    0x3b4b, 0xc02c, 0x3b3e, 0xc02d, 0x3b32, 0xc02e, 0x3b25, 0xc02f,
+    0x3b19, 0xc030, 0x3b0c, 0xc031, 0x3b00, 0xc032, 0x3af3, 0xc033,
+    0x3ae6, 0xc034, 0x3ada, 0xc035, 0x3acd, 0xc036, 0x3ac1, 0xc037,
+    0x3ab4, 0xc038, 0x3aa8, 0xc039, 0x3a9b, 0xc03a, 0x3a8f, 0xc03b,
+    0x3a82, 0xc03c, 0x3a76, 0xc03d, 0x3a69, 0xc03f, 0x3a5d, 0xc040,
+    0x3a50, 0xc041, 0x3a44, 0xc042, 0x3a37, 0xc043, 0x3a2b, 0xc044,
+    0x3a1e, 0xc045, 0x3a12, 0xc047, 0x3a05, 0xc048, 0x39f9, 0xc049,
+    0x39ec, 0xc04a, 0x39e0, 0xc04b, 0x39d3, 0xc04c, 0x39c7, 0xc04e,
+    0x39ba, 0xc04f, 0x39ae, 0xc050, 0x39a1, 0xc051, 0x3995, 0xc053,
+    0x3988, 0xc054, 0x397c, 0xc055, 0x396f, 0xc056, 0x3963, 0xc058,
+    0x3956, 0xc059, 0x394a, 0xc05a, 0x393d, 0xc05c, 0x3931, 0xc05d,
+    0x3924, 0xc05e, 0x3918, 0xc060, 0x390b, 0xc061, 0x38ff, 0xc062,
+    0x38f2, 0xc064, 0x38e6, 0xc065, 0x38d9, 0xc067, 0x38cd, 0xc068,
+    0x38c0, 0xc069, 0x38b4, 0xc06b, 0x38a7, 0xc06c, 0x389b, 0xc06e,
+    0x388e, 0xc06f, 0x3882, 0xc071, 0x3875, 0xc072, 0x3869, 0xc074,
+    0x385c, 0xc075, 0x3850, 0xc077, 0x3843, 0xc078, 0x3837, 0xc07a,
+    0x382a, 0xc07b, 0x381e, 0xc07d, 0x3811, 0xc07e, 0x3805, 0xc080,
+    0x37f9, 0xc081, 0x37ec, 0xc083, 0x37e0, 0xc085, 0x37d3, 0xc086,
+    0x37c7, 0xc088, 0x37ba, 0xc089, 0x37ae, 0xc08b, 0x37a1, 0xc08d,
+    0x3795, 0xc08e, 0x3788, 0xc090, 0x377c, 0xc092, 0x376f, 0xc093,
+    0x3763, 0xc095, 0x3757, 0xc097, 0x374a, 0xc098, 0x373e, 0xc09a,
+    0x3731, 0xc09c, 0x3725, 0xc09e, 0x3718, 0xc09f, 0x370c, 0xc0a1,
+    0x36ff, 0xc0a3, 0x36f3, 0xc0a5, 0x36e7, 0xc0a6, 0x36da, 0xc0a8,
+    0x36ce, 0xc0aa, 0x36c1, 0xc0ac, 0x36b5, 0xc0ae, 0x36a8, 0xc0af,
+    0x369c, 0xc0b1, 0x3690, 0xc0b3, 0x3683, 0xc0b5, 0x3677, 0xc0b7,
+    0x366a, 0xc0b9, 0x365e, 0xc0bb, 0x3651, 0xc0bd, 0x3645, 0xc0be,
+    0x3639, 0xc0c0, 0x362c, 0xc0c2, 0x3620, 0xc0c4, 0x3613, 0xc0c6,
+    0x3607, 0xc0c8, 0x35fa, 0xc0ca, 0x35ee, 0xc0cc, 0x35e2, 0xc0ce,
+    0x35d5, 0xc0d0, 0x35c9, 0xc0d2, 0x35bc, 0xc0d4, 0x35b0, 0xc0d6,
+    0x35a4, 0xc0d8, 0x3597, 0xc0da, 0x358b, 0xc0dc, 0x357e, 0xc0de,
+    0x3572, 0xc0e0, 0x3566, 0xc0e2, 0x3559, 0xc0e4, 0x354d, 0xc0e7,
+    0x3540, 0xc0e9, 0x3534, 0xc0eb, 0x3528, 0xc0ed, 0x351b, 0xc0ef,
+    0x350f, 0xc0f1, 0x3503, 0xc0f3, 0x34f6, 0xc0f6, 0x34ea, 0xc0f8,
+    0x34dd, 0xc0fa, 0x34d1, 0xc0fc, 0x34c5, 0xc0fe, 0x34b8, 0xc100,
+    0x34ac, 0xc103, 0x34a0, 0xc105, 0x3493, 0xc107, 0x3487, 0xc109,
+    0x347b, 0xc10c, 0x346e, 0xc10e, 0x3462, 0xc110, 0x3455, 0xc113,
+    0x3449, 0xc115, 0x343d, 0xc117, 0x3430, 0xc119, 0x3424, 0xc11c,
+    0x3418, 0xc11e, 0x340b, 0xc120, 0x33ff, 0xc123, 0x33f3, 0xc125,
+    0x33e6, 0xc128, 0x33da, 0xc12a, 0x33ce, 0xc12c, 0x33c1, 0xc12f,
+    0x33b5, 0xc131, 0x33a9, 0xc134, 0x339c, 0xc136, 0x3390, 0xc138,
+    0x3384, 0xc13b, 0x3377, 0xc13d, 0x336b, 0xc140, 0x335f, 0xc142,
+    0x3352, 0xc145, 0x3346, 0xc147, 0x333a, 0xc14a, 0x332d, 0xc14c,
+    0x3321, 0xc14f, 0x3315, 0xc151, 0x3308, 0xc154, 0x32fc, 0xc156,
+    0x32f0, 0xc159, 0x32e4, 0xc15b, 0x32d7, 0xc15e, 0x32cb, 0xc161,
+    0x32bf, 0xc163, 0x32b2, 0xc166, 0x32a6, 0xc168, 0x329a, 0xc16b,
+    0x328e, 0xc16e, 0x3281, 0xc170, 0x3275, 0xc173, 0x3269, 0xc176,
+    0x325c, 0xc178, 0x3250, 0xc17b, 0x3244, 0xc17e, 0x3238, 0xc180,
+    0x322b, 0xc183, 0x321f, 0xc186, 0x3213, 0xc189, 0x3207, 0xc18b,
+    0x31fa, 0xc18e, 0x31ee, 0xc191, 0x31e2, 0xc194, 0x31d5, 0xc196,
+    0x31c9, 0xc199, 0x31bd, 0xc19c, 0x31b1, 0xc19f, 0x31a4, 0xc1a2,
+    0x3198, 0xc1a4, 0x318c, 0xc1a7, 0x3180, 0xc1aa, 0x3174, 0xc1ad,
+    0x3167, 0xc1b0, 0x315b, 0xc1b3, 0x314f, 0xc1b6, 0x3143, 0xc1b8,
+    0x3136, 0xc1bb, 0x312a, 0xc1be, 0x311e, 0xc1c1, 0x3112, 0xc1c4,
+    0x3105, 0xc1c7, 0x30f9, 0xc1ca, 0x30ed, 0xc1cd, 0x30e1, 0xc1d0,
+    0x30d5, 0xc1d3, 0x30c8, 0xc1d6, 0x30bc, 0xc1d9, 0x30b0, 0xc1dc,
+    0x30a4, 0xc1df, 0x3098, 0xc1e2, 0x308b, 0xc1e5, 0x307f, 0xc1e8,
+    0x3073, 0xc1eb, 0x3067, 0xc1ee, 0x305b, 0xc1f1, 0x304e, 0xc1f4,
+    0x3042, 0xc1f7, 0x3036, 0xc1fa, 0x302a, 0xc1fd, 0x301e, 0xc201,
+    0x3012, 0xc204, 0x3005, 0xc207, 0x2ff9, 0xc20a, 0x2fed, 0xc20d,
+    0x2fe1, 0xc210, 0x2fd5, 0xc213, 0x2fc9, 0xc217, 0x2fbc, 0xc21a,
+    0x2fb0, 0xc21d, 0x2fa4, 0xc220, 0x2f98, 0xc223, 0x2f8c, 0xc227,
+    0x2f80, 0xc22a, 0x2f74, 0xc22d, 0x2f67, 0xc230, 0x2f5b, 0xc234,
+    0x2f4f, 0xc237, 0x2f43, 0xc23a, 0x2f37, 0xc23e, 0x2f2b, 0xc241,
+    0x2f1f, 0xc244, 0x2f13, 0xc247, 0x2f06, 0xc24b, 0x2efa, 0xc24e,
+    0x2eee, 0xc251, 0x2ee2, 0xc255, 0x2ed6, 0xc258, 0x2eca, 0xc25c,
+    0x2ebe, 0xc25f, 0x2eb2, 0xc262, 0x2ea6, 0xc266, 0x2e99, 0xc269,
+    0x2e8d, 0xc26d, 0x2e81, 0xc270, 0x2e75, 0xc273, 0x2e69, 0xc277,
+    0x2e5d, 0xc27a, 0x2e51, 0xc27e, 0x2e45, 0xc281, 0x2e39, 0xc285,
+    0x2e2d, 0xc288, 0x2e21, 0xc28c, 0x2e15, 0xc28f, 0x2e09, 0xc293,
+    0x2dfc, 0xc296, 0x2df0, 0xc29a, 0x2de4, 0xc29d, 0x2dd8, 0xc2a1,
+    0x2dcc, 0xc2a5, 0x2dc0, 0xc2a8, 0x2db4, 0xc2ac, 0x2da8, 0xc2af,
+    0x2d9c, 0xc2b3, 0x2d90, 0xc2b7, 0x2d84, 0xc2ba, 0x2d78, 0xc2be,
+    0x2d6c, 0xc2c1, 0x2d60, 0xc2c5, 0x2d54, 0xc2c9, 0x2d48, 0xc2cc,
+    0x2d3c, 0xc2d0, 0x2d30, 0xc2d4, 0x2d24, 0xc2d8, 0x2d18, 0xc2db,
+    0x2d0c, 0xc2df, 0x2d00, 0xc2e3, 0x2cf4, 0xc2e6, 0x2ce8, 0xc2ea,
+    0x2cdc, 0xc2ee, 0x2cd0, 0xc2f2, 0x2cc4, 0xc2f5, 0x2cb8, 0xc2f9,
+    0x2cac, 0xc2fd, 0x2ca0, 0xc301, 0x2c94, 0xc305, 0x2c88, 0xc308,
+    0x2c7c, 0xc30c, 0x2c70, 0xc310, 0x2c64, 0xc314, 0x2c58, 0xc318,
+    0x2c4c, 0xc31c, 0x2c40, 0xc320, 0x2c34, 0xc323, 0x2c28, 0xc327,
+    0x2c1c, 0xc32b, 0x2c10, 0xc32f, 0x2c05, 0xc333, 0x2bf9, 0xc337,
+    0x2bed, 0xc33b, 0x2be1, 0xc33f, 0x2bd5, 0xc343, 0x2bc9, 0xc347,
+    0x2bbd, 0xc34b, 0x2bb1, 0xc34f, 0x2ba5, 0xc353, 0x2b99, 0xc357,
+    0x2b8d, 0xc35b, 0x2b81, 0xc35f, 0x2b75, 0xc363, 0x2b6a, 0xc367,
+    0x2b5e, 0xc36b, 0x2b52, 0xc36f, 0x2b46, 0xc373, 0x2b3a, 0xc377,
+    0x2b2e, 0xc37b, 0x2b22, 0xc37f, 0x2b16, 0xc383, 0x2b0a, 0xc387,
+    0x2aff, 0xc38c, 0x2af3, 0xc390, 0x2ae7, 0xc394, 0x2adb, 0xc398,
+    0x2acf, 0xc39c, 0x2ac3, 0xc3a0, 0x2ab7, 0xc3a5, 0x2aac, 0xc3a9,
+    0x2aa0, 0xc3ad, 0x2a94, 0xc3b1, 0x2a88, 0xc3b5, 0x2a7c, 0xc3ba,
+    0x2a70, 0xc3be, 0x2a65, 0xc3c2, 0x2a59, 0xc3c6, 0x2a4d, 0xc3ca,
+    0x2a41, 0xc3cf, 0x2a35, 0xc3d3, 0x2a29, 0xc3d7, 0x2a1e, 0xc3dc,
+    0x2a12, 0xc3e0, 0x2a06, 0xc3e4, 0x29fa, 0xc3e9, 0x29ee, 0xc3ed,
+    0x29e3, 0xc3f1, 0x29d7, 0xc3f6, 0x29cb, 0xc3fa, 0x29bf, 0xc3fe,
+    0x29b4, 0xc403, 0x29a8, 0xc407, 0x299c, 0xc40b, 0x2990, 0xc410,
+    0x2984, 0xc414, 0x2979, 0xc419, 0x296d, 0xc41d, 0x2961, 0xc422,
+    0x2955, 0xc426, 0x294a, 0xc42a, 0x293e, 0xc42f, 0x2932, 0xc433,
+    0x2926, 0xc438, 0x291b, 0xc43c, 0x290f, 0xc441, 0x2903, 0xc445,
+    0x28f7, 0xc44a, 0x28ec, 0xc44e, 0x28e0, 0xc453, 0x28d4, 0xc457,
+    0x28c9, 0xc45c, 0x28bd, 0xc461, 0x28b1, 0xc465, 0x28a5, 0xc46a,
+    0x289a, 0xc46e, 0x288e, 0xc473, 0x2882, 0xc478, 0x2877, 0xc47c,
+    0x286b, 0xc481, 0x285f, 0xc485, 0x2854, 0xc48a, 0x2848, 0xc48f,
+    0x283c, 0xc493, 0x2831, 0xc498, 0x2825, 0xc49d, 0x2819, 0xc4a1,
+    0x280e, 0xc4a6, 0x2802, 0xc4ab, 0x27f6, 0xc4b0, 0x27eb, 0xc4b4,
+    0x27df, 0xc4b9, 0x27d3, 0xc4be, 0x27c8, 0xc4c2, 0x27bc, 0xc4c7,
+    0x27b1, 0xc4cc, 0x27a5, 0xc4d1, 0x2799, 0xc4d6, 0x278e, 0xc4da,
+    0x2782, 0xc4df, 0x2777, 0xc4e4, 0x276b, 0xc4e9, 0x275f, 0xc4ee,
+    0x2754, 0xc4f2, 0x2748, 0xc4f7, 0x273d, 0xc4fc, 0x2731, 0xc501,
+    0x2725, 0xc506, 0x271a, 0xc50b, 0x270e, 0xc510, 0x2703, 0xc515,
+    0x26f7, 0xc51a, 0x26ec, 0xc51e, 0x26e0, 0xc523, 0x26d4, 0xc528,
+    0x26c9, 0xc52d, 0x26bd, 0xc532, 0x26b2, 0xc537, 0x26a6, 0xc53c,
+    0x269b, 0xc541, 0x268f, 0xc546, 0x2684, 0xc54b, 0x2678, 0xc550,
+    0x266d, 0xc555, 0x2661, 0xc55a, 0x2656, 0xc55f, 0x264a, 0xc564,
+    0x263f, 0xc569, 0x2633, 0xc56e, 0x2628, 0xc573, 0x261c, 0xc578,
+    0x2611, 0xc57e, 0x2605, 0xc583, 0x25fa, 0xc588, 0x25ee, 0xc58d,
+    0x25e3, 0xc592, 0x25d7, 0xc597, 0x25cc, 0xc59c, 0x25c0, 0xc5a1,
+    0x25b5, 0xc5a7, 0x25a9, 0xc5ac, 0x259e, 0xc5b1, 0x2592, 0xc5b6,
+    0x2587, 0xc5bb, 0x257c, 0xc5c1, 0x2570, 0xc5c6, 0x2565, 0xc5cb,
+    0x2559, 0xc5d0, 0x254e, 0xc5d5, 0x2542, 0xc5db, 0x2537, 0xc5e0,
+    0x252c, 0xc5e5, 0x2520, 0xc5ea, 0x2515, 0xc5f0, 0x2509, 0xc5f5,
+    0x24fe, 0xc5fa, 0x24f3, 0xc600, 0x24e7, 0xc605, 0x24dc, 0xc60a,
+    0x24d0, 0xc610, 0x24c5, 0xc615, 0x24ba, 0xc61a, 0x24ae, 0xc620,
+    0x24a3, 0xc625, 0x2498, 0xc62a, 0x248c, 0xc630, 0x2481, 0xc635,
+    0x2476, 0xc63b, 0x246a, 0xc640, 0x245f, 0xc645, 0x2454, 0xc64b,
+    0x2448, 0xc650, 0x243d, 0xc656, 0x2432, 0xc65b, 0x2426, 0xc661,
+    0x241b, 0xc666, 0x2410, 0xc66c, 0x2404, 0xc671, 0x23f9, 0xc677,
+    0x23ee, 0xc67c, 0x23e2, 0xc682, 0x23d7, 0xc687, 0x23cc, 0xc68d,
+    0x23c1, 0xc692, 0x23b5, 0xc698, 0x23aa, 0xc69d, 0x239f, 0xc6a3,
+    0x2394, 0xc6a8, 0x2388, 0xc6ae, 0x237d, 0xc6b4, 0x2372, 0xc6b9,
+    0x2367, 0xc6bf, 0x235b, 0xc6c5, 0x2350, 0xc6ca, 0x2345, 0xc6d0,
+    0x233a, 0xc6d5, 0x232e, 0xc6db, 0x2323, 0xc6e1, 0x2318, 0xc6e6,
+    0x230d, 0xc6ec, 0x2301, 0xc6f2, 0x22f6, 0xc6f7, 0x22eb, 0xc6fd,
+    0x22e0, 0xc703, 0x22d5, 0xc709, 0x22ca, 0xc70e, 0x22be, 0xc714,
+    0x22b3, 0xc71a, 0x22a8, 0xc720, 0x229d, 0xc725, 0x2292, 0xc72b,
+    0x2287, 0xc731, 0x227b, 0xc737, 0x2270, 0xc73d, 0x2265, 0xc742,
+    0x225a, 0xc748, 0x224f, 0xc74e, 0x2244, 0xc754, 0x2239, 0xc75a,
+    0x222d, 0xc75f, 0x2222, 0xc765, 0x2217, 0xc76b, 0x220c, 0xc771,
+    0x2201, 0xc777, 0x21f6, 0xc77d, 0x21eb, 0xc783, 0x21e0, 0xc789,
+    0x21d5, 0xc78f, 0x21ca, 0xc795, 0x21be, 0xc79a, 0x21b3, 0xc7a0,
+    0x21a8, 0xc7a6, 0x219d, 0xc7ac, 0x2192, 0xc7b2, 0x2187, 0xc7b8,
+    0x217c, 0xc7be, 0x2171, 0xc7c4, 0x2166, 0xc7ca, 0x215b, 0xc7d0,
+    0x2150, 0xc7d6, 0x2145, 0xc7dc, 0x213a, 0xc7e2, 0x212f, 0xc7e8,
+    0x2124, 0xc7ee, 0x2119, 0xc7f5, 0x210e, 0xc7fb, 0x2103, 0xc801,
+    0x20f8, 0xc807, 0x20ed, 0xc80d, 0x20e2, 0xc813, 0x20d7, 0xc819,
+    0x20cc, 0xc81f, 0x20c1, 0xc825, 0x20b6, 0xc82b, 0x20ab, 0xc832,
+    0x20a0, 0xc838, 0x2095, 0xc83e, 0x208a, 0xc844, 0x207f, 0xc84a,
+    0x2074, 0xc850, 0x2069, 0xc857, 0x205e, 0xc85d, 0x2054, 0xc863,
+    0x2049, 0xc869, 0x203e, 0xc870, 0x2033, 0xc876, 0x2028, 0xc87c,
+    0x201d, 0xc882, 0x2012, 0xc889, 0x2007, 0xc88f, 0x1ffc, 0xc895,
+    0x1ff1, 0xc89b, 0x1fe7, 0xc8a2, 0x1fdc, 0xc8a8, 0x1fd1, 0xc8ae,
+    0x1fc6, 0xc8b5, 0x1fbb, 0xc8bb, 0x1fb0, 0xc8c1, 0x1fa5, 0xc8c8,
+    0x1f9b, 0xc8ce, 0x1f90, 0xc8d4, 0x1f85, 0xc8db, 0x1f7a, 0xc8e1,
+    0x1f6f, 0xc8e8, 0x1f65, 0xc8ee, 0x1f5a, 0xc8f4, 0x1f4f, 0xc8fb,
+    0x1f44, 0xc901, 0x1f39, 0xc908, 0x1f2f, 0xc90e, 0x1f24, 0xc915,
+    0x1f19, 0xc91b, 0x1f0e, 0xc921, 0x1f03, 0xc928, 0x1ef9, 0xc92e,
+    0x1eee, 0xc935, 0x1ee3, 0xc93b, 0x1ed8, 0xc942, 0x1ece, 0xc948,
+    0x1ec3, 0xc94f, 0x1eb8, 0xc955, 0x1ead, 0xc95c, 0x1ea3, 0xc963,
+    0x1e98, 0xc969, 0x1e8d, 0xc970, 0x1e83, 0xc976, 0x1e78, 0xc97d,
+    0x1e6d, 0xc983, 0x1e62, 0xc98a, 0x1e58, 0xc991, 0x1e4d, 0xc997,
+    0x1e42, 0xc99e, 0x1e38, 0xc9a4, 0x1e2d, 0xc9ab, 0x1e22, 0xc9b2,
+    0x1e18, 0xc9b8, 0x1e0d, 0xc9bf, 0x1e02, 0xc9c6, 0x1df8, 0xc9cc,
+    0x1ded, 0xc9d3, 0x1de2, 0xc9da, 0x1dd8, 0xc9e0, 0x1dcd, 0xc9e7,
+    0x1dc3, 0xc9ee, 0x1db8, 0xc9f5, 0x1dad, 0xc9fb, 0x1da3, 0xca02,
+    0x1d98, 0xca09, 0x1d8e, 0xca10, 0x1d83, 0xca16, 0x1d78, 0xca1d,
+    0x1d6e, 0xca24, 0x1d63, 0xca2b, 0x1d59, 0xca32, 0x1d4e, 0xca38,
+    0x1d44, 0xca3f, 0x1d39, 0xca46, 0x1d2e, 0xca4d, 0x1d24, 0xca54,
+    0x1d19, 0xca5b, 0x1d0f, 0xca61, 0x1d04, 0xca68, 0x1cfa, 0xca6f,
+    0x1cef, 0xca76, 0x1ce5, 0xca7d, 0x1cda, 0xca84, 0x1cd0, 0xca8b,
+    0x1cc5, 0xca92, 0x1cbb, 0xca99, 0x1cb0, 0xca9f, 0x1ca6, 0xcaa6,
+    0x1c9b, 0xcaad, 0x1c91, 0xcab4, 0x1c86, 0xcabb, 0x1c7c, 0xcac2,
+    0x1c72, 0xcac9, 0x1c67, 0xcad0, 0x1c5d, 0xcad7, 0x1c52, 0xcade,
+    0x1c48, 0xcae5, 0x1c3d, 0xcaec, 0x1c33, 0xcaf3, 0x1c29, 0xcafa,
+    0x1c1e, 0xcb01, 0x1c14, 0xcb08, 0x1c09, 0xcb0f, 0x1bff, 0xcb16,
+    0x1bf5, 0xcb1e, 0x1bea, 0xcb25, 0x1be0, 0xcb2c, 0x1bd5, 0xcb33,
+    0x1bcb, 0xcb3a, 0x1bc1, 0xcb41, 0x1bb6, 0xcb48, 0x1bac, 0xcb4f,
+    0x1ba2, 0xcb56, 0x1b97, 0xcb5e, 0x1b8d, 0xcb65, 0x1b83, 0xcb6c,
+    0x1b78, 0xcb73, 0x1b6e, 0xcb7a, 0x1b64, 0xcb81, 0x1b59, 0xcb89,
+    0x1b4f, 0xcb90, 0x1b45, 0xcb97, 0x1b3b, 0xcb9e, 0x1b30, 0xcba5,
+    0x1b26, 0xcbad, 0x1b1c, 0xcbb4, 0x1b11, 0xcbbb, 0x1b07, 0xcbc2,
+    0x1afd, 0xcbca, 0x1af3, 0xcbd1, 0x1ae8, 0xcbd8, 0x1ade, 0xcbe0,
+    0x1ad4, 0xcbe7, 0x1aca, 0xcbee, 0x1abf, 0xcbf5, 0x1ab5, 0xcbfd,
+    0x1aab, 0xcc04, 0x1aa1, 0xcc0b, 0x1a97, 0xcc13, 0x1a8c, 0xcc1a,
+    0x1a82, 0xcc21, 0x1a78, 0xcc29, 0x1a6e, 0xcc30, 0x1a64, 0xcc38,
+    0x1a5a, 0xcc3f, 0x1a4f, 0xcc46, 0x1a45, 0xcc4e, 0x1a3b, 0xcc55,
+    0x1a31, 0xcc5d, 0x1a27, 0xcc64, 0x1a1d, 0xcc6b, 0x1a13, 0xcc73,
+    0x1a08, 0xcc7a, 0x19fe, 0xcc82, 0x19f4, 0xcc89, 0x19ea, 0xcc91,
+    0x19e0, 0xcc98, 0x19d6, 0xcca0, 0x19cc, 0xcca7, 0x19c2, 0xccaf,
+    0x19b8, 0xccb6, 0x19ae, 0xccbe, 0x19a4, 0xccc5, 0x199a, 0xcccd,
+    0x198f, 0xccd4, 0x1985, 0xccdc, 0x197b, 0xcce3, 0x1971, 0xcceb,
+    0x1967, 0xccf3, 0x195d, 0xccfa, 0x1953, 0xcd02, 0x1949, 0xcd09,
+    0x193f, 0xcd11, 0x1935, 0xcd19, 0x192b, 0xcd20, 0x1921, 0xcd28,
+    0x1917, 0xcd30, 0x190d, 0xcd37, 0x1903, 0xcd3f, 0x18f9, 0xcd46,
+    0x18ef, 0xcd4e, 0x18e6, 0xcd56, 0x18dc, 0xcd5d, 0x18d2, 0xcd65,
+    0x18c8, 0xcd6d, 0x18be, 0xcd75, 0x18b4, 0xcd7c, 0x18aa, 0xcd84,
+    0x18a0, 0xcd8c, 0x1896, 0xcd93, 0x188c, 0xcd9b, 0x1882, 0xcda3,
+    0x1878, 0xcdab, 0x186f, 0xcdb2, 0x1865, 0xcdba, 0x185b, 0xcdc2,
+    0x1851, 0xcdca, 0x1847, 0xcdd2, 0x183d, 0xcdd9, 0x1833, 0xcde1,
+    0x182a, 0xcde9, 0x1820, 0xcdf1, 0x1816, 0xcdf9, 0x180c, 0xce01,
+    0x1802, 0xce08, 0x17f8, 0xce10, 0x17ef, 0xce18, 0x17e5, 0xce20,
+    0x17db, 0xce28, 0x17d1, 0xce30, 0x17c8, 0xce38, 0x17be, 0xce40,
+    0x17b4, 0xce47, 0x17aa, 0xce4f, 0x17a0, 0xce57, 0x1797, 0xce5f,
+    0x178d, 0xce67, 0x1783, 0xce6f, 0x177a, 0xce77, 0x1770, 0xce7f,
+    0x1766, 0xce87, 0x175c, 0xce8f, 0x1753, 0xce97, 0x1749, 0xce9f,
+    0x173f, 0xcea7, 0x1736, 0xceaf, 0x172c, 0xceb7, 0x1722, 0xcebf,
+    0x1719, 0xcec7, 0x170f, 0xcecf, 0x1705, 0xced7, 0x16fc, 0xcedf,
+    0x16f2, 0xcee7, 0x16e8, 0xceef, 0x16df, 0xcef7, 0x16d5, 0xceff,
+    0x16cb, 0xcf07, 0x16c2, 0xcf10, 0x16b8, 0xcf18, 0x16af, 0xcf20,
+    0x16a5, 0xcf28, 0x169b, 0xcf30, 0x1692, 0xcf38, 0x1688, 0xcf40,
+    0x167f, 0xcf48, 0x1675, 0xcf51, 0x166c, 0xcf59, 0x1662, 0xcf61,
+    0x1659, 0xcf69, 0x164f, 0xcf71, 0x1645, 0xcf79, 0x163c, 0xcf82,
+    0x1632, 0xcf8a, 0x1629, 0xcf92, 0x161f, 0xcf9a, 0x1616, 0xcfa3,
+    0x160c, 0xcfab, 0x1603, 0xcfb3, 0x15f9, 0xcfbb, 0x15f0, 0xcfc4,
+    0x15e6, 0xcfcc, 0x15dd, 0xcfd4, 0x15d4, 0xcfdc, 0x15ca, 0xcfe5,
+    0x15c1, 0xcfed, 0x15b7, 0xcff5, 0x15ae, 0xcffe, 0x15a4, 0xd006,
+    0x159b, 0xd00e, 0x1592, 0xd016, 0x1588, 0xd01f, 0x157f, 0xd027,
+    0x1575, 0xd030, 0x156c, 0xd038, 0x1563, 0xd040, 0x1559, 0xd049,
+    0x1550, 0xd051, 0x1547, 0xd059, 0x153d, 0xd062, 0x1534, 0xd06a,
+    0x152a, 0xd073, 0x1521, 0xd07b, 0x1518, 0xd083, 0x150e, 0xd08c,
+    0x1505, 0xd094, 0x14fc, 0xd09d, 0x14f3, 0xd0a5, 0x14e9, 0xd0ae,
+    0x14e0, 0xd0b6, 0x14d7, 0xd0bf, 0x14cd, 0xd0c7, 0x14c4, 0xd0d0,
+    0x14bb, 0xd0d8, 0x14b2, 0xd0e0, 0x14a8, 0xd0e9, 0x149f, 0xd0f2,
+    0x1496, 0xd0fa, 0x148d, 0xd103, 0x1483, 0xd10b, 0x147a, 0xd114,
+    0x1471, 0xd11c, 0x1468, 0xd125, 0x145f, 0xd12d, 0x1455, 0xd136,
+    0x144c, 0xd13e, 0x1443, 0xd147, 0x143a, 0xd150, 0x1431, 0xd158,
+    0x1428, 0xd161, 0x141e, 0xd169, 0x1415, 0xd172, 0x140c, 0xd17b,
+    0x1403, 0xd183, 0x13fa, 0xd18c, 0x13f1, 0xd195, 0x13e8, 0xd19d,
+    0x13df, 0xd1a6, 0x13d5, 0xd1af, 0x13cc, 0xd1b7, 0x13c3, 0xd1c0,
+    0x13ba, 0xd1c9, 0x13b1, 0xd1d1, 0x13a8, 0xd1da, 0x139f, 0xd1e3,
+    0x1396, 0xd1eb, 0x138d, 0xd1f4, 0x1384, 0xd1fd, 0x137b, 0xd206,
+    0x1372, 0xd20e, 0x1369, 0xd217, 0x1360, 0xd220, 0x1357, 0xd229,
+    0x134e, 0xd231, 0x1345, 0xd23a, 0x133c, 0xd243, 0x1333, 0xd24c,
+    0x132a, 0xd255, 0x1321, 0xd25d, 0x1318, 0xd266, 0x130f, 0xd26f,
+    0x1306, 0xd278, 0x12fd, 0xd281, 0x12f4, 0xd28a, 0x12eb, 0xd292,
+    0x12e2, 0xd29b, 0x12d9, 0xd2a4, 0x12d1, 0xd2ad, 0x12c8, 0xd2b6,
+    0x12bf, 0xd2bf, 0x12b6, 0xd2c8, 0x12ad, 0xd2d1, 0x12a4, 0xd2d9,
+    0x129b, 0xd2e2, 0x1292, 0xd2eb, 0x128a, 0xd2f4, 0x1281, 0xd2fd,
+    0x1278, 0xd306, 0x126f, 0xd30f, 0x1266, 0xd318, 0x125d, 0xd321,
+    0x1255, 0xd32a, 0x124c, 0xd333, 0x1243, 0xd33c, 0x123a, 0xd345,
+    0x1231, 0xd34e, 0x1229, 0xd357, 0x1220, 0xd360, 0x1217, 0xd369,
+    0x120e, 0xd372, 0x1206, 0xd37b, 0x11fd, 0xd384, 0x11f4, 0xd38d,
+    0x11eb, 0xd396, 0x11e3, 0xd39f, 0x11da, 0xd3a8, 0x11d1, 0xd3b1,
+    0x11c9, 0xd3ba, 0x11c0, 0xd3c3, 0x11b7, 0xd3cc, 0x11af, 0xd3d5,
+    0x11a6, 0xd3df, 0x119d, 0xd3e8, 0x1195, 0xd3f1, 0x118c, 0xd3fa,
+    0x1183, 0xd403, 0x117b, 0xd40c, 0x1172, 0xd415, 0x1169, 0xd41e,
+    0x1161, 0xd428, 0x1158, 0xd431, 0x1150, 0xd43a, 0x1147, 0xd443,
+    0x113e, 0xd44c, 0x1136, 0xd455, 0x112d, 0xd45f, 0x1125, 0xd468,
+    0x111c, 0xd471, 0x1114, 0xd47a, 0x110b, 0xd483, 0x1103, 0xd48d,
+    0x10fa, 0xd496, 0x10f2, 0xd49f, 0x10e9, 0xd4a8, 0x10e0, 0xd4b2,
+    0x10d8, 0xd4bb, 0x10d0, 0xd4c4, 0x10c7, 0xd4cd, 0x10bf, 0xd4d7,
+    0x10b6, 0xd4e0, 0x10ae, 0xd4e9, 0x10a5, 0xd4f3, 0x109d, 0xd4fc,
+    0x1094, 0xd505, 0x108c, 0xd50e, 0x1083, 0xd518, 0x107b, 0xd521,
+    0x1073, 0xd52a, 0x106a, 0xd534, 0x1062, 0xd53d, 0x1059, 0xd547,
+    0x1051, 0xd550, 0x1049, 0xd559, 0x1040, 0xd563, 0x1038, 0xd56c,
+    0x1030, 0xd575, 0x1027, 0xd57f, 0x101f, 0xd588, 0x1016, 0xd592,
+    0x100e, 0xd59b, 0x1006, 0xd5a4, 0xffe, 0xd5ae, 0xff5, 0xd5b7,
+    0xfed, 0xd5c1, 0xfe5, 0xd5ca, 0xfdc, 0xd5d4, 0xfd4, 0xd5dd,
+    0xfcc, 0xd5e6, 0xfc4, 0xd5f0, 0xfbb, 0xd5f9, 0xfb3, 0xd603,
+    0xfab, 0xd60c, 0xfa3, 0xd616, 0xf9a, 0xd61f, 0xf92, 0xd629,
+    0xf8a, 0xd632, 0xf82, 0xd63c, 0xf79, 0xd645, 0xf71, 0xd64f,
+    0xf69, 0xd659, 0xf61, 0xd662, 0xf59, 0xd66c, 0xf51, 0xd675,
+    0xf48, 0xd67f, 0xf40, 0xd688, 0xf38, 0xd692, 0xf30, 0xd69b,
+    0xf28, 0xd6a5, 0xf20, 0xd6af, 0xf18, 0xd6b8, 0xf10, 0xd6c2,
+    0xf07, 0xd6cb, 0xeff, 0xd6d5, 0xef7, 0xd6df, 0xeef, 0xd6e8,
+    0xee7, 0xd6f2, 0xedf, 0xd6fc, 0xed7, 0xd705, 0xecf, 0xd70f,
+    0xec7, 0xd719, 0xebf, 0xd722, 0xeb7, 0xd72c, 0xeaf, 0xd736,
+    0xea7, 0xd73f, 0xe9f, 0xd749, 0xe97, 0xd753, 0xe8f, 0xd75c,
+    0xe87, 0xd766, 0xe7f, 0xd770, 0xe77, 0xd77a, 0xe6f, 0xd783,
+    0xe67, 0xd78d, 0xe5f, 0xd797, 0xe57, 0xd7a0, 0xe4f, 0xd7aa,
+    0xe47, 0xd7b4, 0xe40, 0xd7be, 0xe38, 0xd7c8, 0xe30, 0xd7d1,
+    0xe28, 0xd7db, 0xe20, 0xd7e5, 0xe18, 0xd7ef, 0xe10, 0xd7f8,
+    0xe08, 0xd802, 0xe01, 0xd80c, 0xdf9, 0xd816, 0xdf1, 0xd820,
+    0xde9, 0xd82a, 0xde1, 0xd833, 0xdd9, 0xd83d, 0xdd2, 0xd847,
+    0xdca, 0xd851, 0xdc2, 0xd85b, 0xdba, 0xd865, 0xdb2, 0xd86f,
+    0xdab, 0xd878, 0xda3, 0xd882, 0xd9b, 0xd88c, 0xd93, 0xd896,
+    0xd8c, 0xd8a0, 0xd84, 0xd8aa, 0xd7c, 0xd8b4, 0xd75, 0xd8be,
+    0xd6d, 0xd8c8, 0xd65, 0xd8d2, 0xd5d, 0xd8dc, 0xd56, 0xd8e6,
+    0xd4e, 0xd8ef, 0xd46, 0xd8f9, 0xd3f, 0xd903, 0xd37, 0xd90d,
+    0xd30, 0xd917, 0xd28, 0xd921, 0xd20, 0xd92b, 0xd19, 0xd935,
+    0xd11, 0xd93f, 0xd09, 0xd949, 0xd02, 0xd953, 0xcfa, 0xd95d,
+    0xcf3, 0xd967, 0xceb, 0xd971, 0xce3, 0xd97b, 0xcdc, 0xd985,
+    0xcd4, 0xd98f, 0xccd, 0xd99a, 0xcc5, 0xd9a4, 0xcbe, 0xd9ae,
+    0xcb6, 0xd9b8, 0xcaf, 0xd9c2, 0xca7, 0xd9cc, 0xca0, 0xd9d6,
+    0xc98, 0xd9e0, 0xc91, 0xd9ea, 0xc89, 0xd9f4, 0xc82, 0xd9fe,
+    0xc7a, 0xda08, 0xc73, 0xda13, 0xc6b, 0xda1d, 0xc64, 0xda27,
+    0xc5d, 0xda31, 0xc55, 0xda3b, 0xc4e, 0xda45, 0xc46, 0xda4f,
+    0xc3f, 0xda5a, 0xc38, 0xda64, 0xc30, 0xda6e, 0xc29, 0xda78,
+    0xc21, 0xda82, 0xc1a, 0xda8c, 0xc13, 0xda97, 0xc0b, 0xdaa1,
+    0xc04, 0xdaab, 0xbfd, 0xdab5, 0xbf5, 0xdabf, 0xbee, 0xdaca,
+    0xbe7, 0xdad4, 0xbe0, 0xdade, 0xbd8, 0xdae8, 0xbd1, 0xdaf3,
+    0xbca, 0xdafd, 0xbc2, 0xdb07, 0xbbb, 0xdb11, 0xbb4, 0xdb1c,
+    0xbad, 0xdb26, 0xba5, 0xdb30, 0xb9e, 0xdb3b, 0xb97, 0xdb45,
+    0xb90, 0xdb4f, 0xb89, 0xdb59, 0xb81, 0xdb64, 0xb7a, 0xdb6e,
+    0xb73, 0xdb78, 0xb6c, 0xdb83, 0xb65, 0xdb8d, 0xb5e, 0xdb97,
+    0xb56, 0xdba2, 0xb4f, 0xdbac, 0xb48, 0xdbb6, 0xb41, 0xdbc1,
+    0xb3a, 0xdbcb, 0xb33, 0xdbd5, 0xb2c, 0xdbe0, 0xb25, 0xdbea,
+    0xb1e, 0xdbf5, 0xb16, 0xdbff, 0xb0f, 0xdc09, 0xb08, 0xdc14,
+    0xb01, 0xdc1e, 0xafa, 0xdc29, 0xaf3, 0xdc33, 0xaec, 0xdc3d,
+    0xae5, 0xdc48, 0xade, 0xdc52, 0xad7, 0xdc5d, 0xad0, 0xdc67,
+    0xac9, 0xdc72, 0xac2, 0xdc7c, 0xabb, 0xdc86, 0xab4, 0xdc91,
+    0xaad, 0xdc9b, 0xaa6, 0xdca6, 0xa9f, 0xdcb0, 0xa99, 0xdcbb,
+    0xa92, 0xdcc5, 0xa8b, 0xdcd0, 0xa84, 0xdcda, 0xa7d, 0xdce5,
+    0xa76, 0xdcef, 0xa6f, 0xdcfa, 0xa68, 0xdd04, 0xa61, 0xdd0f,
+    0xa5b, 0xdd19, 0xa54, 0xdd24, 0xa4d, 0xdd2e, 0xa46, 0xdd39,
+    0xa3f, 0xdd44, 0xa38, 0xdd4e, 0xa32, 0xdd59, 0xa2b, 0xdd63,
+    0xa24, 0xdd6e, 0xa1d, 0xdd78, 0xa16, 0xdd83, 0xa10, 0xdd8e,
+    0xa09, 0xdd98, 0xa02, 0xdda3, 0x9fb, 0xddad, 0x9f5, 0xddb8,
+    0x9ee, 0xddc3, 0x9e7, 0xddcd, 0x9e0, 0xddd8, 0x9da, 0xdde2,
+    0x9d3, 0xdded, 0x9cc, 0xddf8, 0x9c6, 0xde02, 0x9bf, 0xde0d,
+    0x9b8, 0xde18, 0x9b2, 0xde22, 0x9ab, 0xde2d, 0x9a4, 0xde38,
+    0x99e, 0xde42, 0x997, 0xde4d, 0x991, 0xde58, 0x98a, 0xde62,
+    0x983, 0xde6d, 0x97d, 0xde78, 0x976, 0xde83, 0x970, 0xde8d,
+    0x969, 0xde98, 0x963, 0xdea3, 0x95c, 0xdead, 0x955, 0xdeb8,
+    0x94f, 0xdec3, 0x948, 0xdece, 0x942, 0xded8, 0x93b, 0xdee3,
+    0x935, 0xdeee, 0x92e, 0xdef9, 0x928, 0xdf03, 0x921, 0xdf0e,
+    0x91b, 0xdf19, 0x915, 0xdf24, 0x90e, 0xdf2f, 0x908, 0xdf39,
+    0x901, 0xdf44, 0x8fb, 0xdf4f, 0x8f4, 0xdf5a, 0x8ee, 0xdf65,
+    0x8e8, 0xdf6f, 0x8e1, 0xdf7a, 0x8db, 0xdf85, 0x8d4, 0xdf90,
+    0x8ce, 0xdf9b, 0x8c8, 0xdfa5, 0x8c1, 0xdfb0, 0x8bb, 0xdfbb,
+    0x8b5, 0xdfc6, 0x8ae, 0xdfd1, 0x8a8, 0xdfdc, 0x8a2, 0xdfe7,
+    0x89b, 0xdff1, 0x895, 0xdffc, 0x88f, 0xe007, 0x889, 0xe012,
+    0x882, 0xe01d, 0x87c, 0xe028, 0x876, 0xe033, 0x870, 0xe03e,
+    0x869, 0xe049, 0x863, 0xe054, 0x85d, 0xe05e, 0x857, 0xe069,
+    0x850, 0xe074, 0x84a, 0xe07f, 0x844, 0xe08a, 0x83e, 0xe095,
+    0x838, 0xe0a0, 0x832, 0xe0ab, 0x82b, 0xe0b6, 0x825, 0xe0c1,
+    0x81f, 0xe0cc, 0x819, 0xe0d7, 0x813, 0xe0e2, 0x80d, 0xe0ed,
+    0x807, 0xe0f8, 0x801, 0xe103, 0x7fb, 0xe10e, 0x7f5, 0xe119,
+    0x7ee, 0xe124, 0x7e8, 0xe12f, 0x7e2, 0xe13a, 0x7dc, 0xe145,
+    0x7d6, 0xe150, 0x7d0, 0xe15b, 0x7ca, 0xe166, 0x7c4, 0xe171,
+    0x7be, 0xe17c, 0x7b8, 0xe187, 0x7b2, 0xe192, 0x7ac, 0xe19d,
+    0x7a6, 0xe1a8, 0x7a0, 0xe1b3, 0x79a, 0xe1be, 0x795, 0xe1ca,
+    0x78f, 0xe1d5, 0x789, 0xe1e0, 0x783, 0xe1eb, 0x77d, 0xe1f6,
+    0x777, 0xe201, 0x771, 0xe20c, 0x76b, 0xe217, 0x765, 0xe222,
+    0x75f, 0xe22d, 0x75a, 0xe239, 0x754, 0xe244, 0x74e, 0xe24f,
+    0x748, 0xe25a, 0x742, 0xe265, 0x73d, 0xe270, 0x737, 0xe27b,
+    0x731, 0xe287, 0x72b, 0xe292, 0x725, 0xe29d, 0x720, 0xe2a8,
+    0x71a, 0xe2b3, 0x714, 0xe2be, 0x70e, 0xe2ca, 0x709, 0xe2d5,
+    0x703, 0xe2e0, 0x6fd, 0xe2eb, 0x6f7, 0xe2f6, 0x6f2, 0xe301,
+    0x6ec, 0xe30d, 0x6e6, 0xe318, 0x6e1, 0xe323, 0x6db, 0xe32e,
+    0x6d5, 0xe33a, 0x6d0, 0xe345, 0x6ca, 0xe350, 0x6c5, 0xe35b,
+    0x6bf, 0xe367, 0x6b9, 0xe372, 0x6b4, 0xe37d, 0x6ae, 0xe388,
+    0x6a8, 0xe394, 0x6a3, 0xe39f, 0x69d, 0xe3aa, 0x698, 0xe3b5,
+    0x692, 0xe3c1, 0x68d, 0xe3cc, 0x687, 0xe3d7, 0x682, 0xe3e2,
+    0x67c, 0xe3ee, 0x677, 0xe3f9, 0x671, 0xe404, 0x66c, 0xe410,
+    0x666, 0xe41b, 0x661, 0xe426, 0x65b, 0xe432, 0x656, 0xe43d,
+    0x650, 0xe448, 0x64b, 0xe454, 0x645, 0xe45f, 0x640, 0xe46a,
+    0x63b, 0xe476, 0x635, 0xe481, 0x630, 0xe48c, 0x62a, 0xe498,
+    0x625, 0xe4a3, 0x620, 0xe4ae, 0x61a, 0xe4ba, 0x615, 0xe4c5,
+    0x610, 0xe4d0, 0x60a, 0xe4dc, 0x605, 0xe4e7, 0x600, 0xe4f3,
+    0x5fa, 0xe4fe, 0x5f5, 0xe509, 0x5f0, 0xe515, 0x5ea, 0xe520,
+    0x5e5, 0xe52c, 0x5e0, 0xe537, 0x5db, 0xe542, 0x5d5, 0xe54e,
+    0x5d0, 0xe559, 0x5cb, 0xe565, 0x5c6, 0xe570, 0x5c1, 0xe57c,
+    0x5bb, 0xe587, 0x5b6, 0xe592, 0x5b1, 0xe59e, 0x5ac, 0xe5a9,
+    0x5a7, 0xe5b5, 0x5a1, 0xe5c0, 0x59c, 0xe5cc, 0x597, 0xe5d7,
+    0x592, 0xe5e3, 0x58d, 0xe5ee, 0x588, 0xe5fa, 0x583, 0xe605,
+    0x57e, 0xe611, 0x578, 0xe61c, 0x573, 0xe628, 0x56e, 0xe633,
+    0x569, 0xe63f, 0x564, 0xe64a, 0x55f, 0xe656, 0x55a, 0xe661,
+    0x555, 0xe66d, 0x550, 0xe678, 0x54b, 0xe684, 0x546, 0xe68f,
+    0x541, 0xe69b, 0x53c, 0xe6a6, 0x537, 0xe6b2, 0x532, 0xe6bd,
+    0x52d, 0xe6c9, 0x528, 0xe6d4, 0x523, 0xe6e0, 0x51e, 0xe6ec,
+    0x51a, 0xe6f7, 0x515, 0xe703, 0x510, 0xe70e, 0x50b, 0xe71a,
+    0x506, 0xe725, 0x501, 0xe731, 0x4fc, 0xe73d, 0x4f7, 0xe748,
+    0x4f2, 0xe754, 0x4ee, 0xe75f, 0x4e9, 0xe76b, 0x4e4, 0xe777,
+    0x4df, 0xe782, 0x4da, 0xe78e, 0x4d6, 0xe799, 0x4d1, 0xe7a5,
+    0x4cc, 0xe7b1, 0x4c7, 0xe7bc, 0x4c2, 0xe7c8, 0x4be, 0xe7d3,
+    0x4b9, 0xe7df, 0x4b4, 0xe7eb, 0x4b0, 0xe7f6, 0x4ab, 0xe802,
+    0x4a6, 0xe80e, 0x4a1, 0xe819, 0x49d, 0xe825, 0x498, 0xe831,
+    0x493, 0xe83c, 0x48f, 0xe848, 0x48a, 0xe854, 0x485, 0xe85f,
+    0x481, 0xe86b, 0x47c, 0xe877, 0x478, 0xe882, 0x473, 0xe88e,
+    0x46e, 0xe89a, 0x46a, 0xe8a5, 0x465, 0xe8b1, 0x461, 0xe8bd,
+    0x45c, 0xe8c9, 0x457, 0xe8d4, 0x453, 0xe8e0, 0x44e, 0xe8ec,
+    0x44a, 0xe8f7, 0x445, 0xe903, 0x441, 0xe90f, 0x43c, 0xe91b,
+    0x438, 0xe926, 0x433, 0xe932, 0x42f, 0xe93e, 0x42a, 0xe94a,
+    0x426, 0xe955, 0x422, 0xe961, 0x41d, 0xe96d, 0x419, 0xe979,
+    0x414, 0xe984, 0x410, 0xe990, 0x40b, 0xe99c, 0x407, 0xe9a8,
+    0x403, 0xe9b4, 0x3fe, 0xe9bf, 0x3fa, 0xe9cb, 0x3f6, 0xe9d7,
+    0x3f1, 0xe9e3, 0x3ed, 0xe9ee, 0x3e9, 0xe9fa, 0x3e4, 0xea06,
+    0x3e0, 0xea12, 0x3dc, 0xea1e, 0x3d7, 0xea29, 0x3d3, 0xea35,
+    0x3cf, 0xea41, 0x3ca, 0xea4d, 0x3c6, 0xea59, 0x3c2, 0xea65,
+    0x3be, 0xea70, 0x3ba, 0xea7c, 0x3b5, 0xea88, 0x3b1, 0xea94,
+    0x3ad, 0xeaa0, 0x3a9, 0xeaac, 0x3a5, 0xeab7, 0x3a0, 0xeac3,
+    0x39c, 0xeacf, 0x398, 0xeadb, 0x394, 0xeae7, 0x390, 0xeaf3,
+    0x38c, 0xeaff, 0x387, 0xeb0a, 0x383, 0xeb16, 0x37f, 0xeb22,
+    0x37b, 0xeb2e, 0x377, 0xeb3a, 0x373, 0xeb46, 0x36f, 0xeb52,
+    0x36b, 0xeb5e, 0x367, 0xeb6a, 0x363, 0xeb75, 0x35f, 0xeb81,
+    0x35b, 0xeb8d, 0x357, 0xeb99, 0x353, 0xeba5, 0x34f, 0xebb1,
+    0x34b, 0xebbd, 0x347, 0xebc9, 0x343, 0xebd5, 0x33f, 0xebe1,
+    0x33b, 0xebed, 0x337, 0xebf9, 0x333, 0xec05, 0x32f, 0xec10,
+    0x32b, 0xec1c, 0x327, 0xec28, 0x323, 0xec34, 0x320, 0xec40,
+    0x31c, 0xec4c, 0x318, 0xec58, 0x314, 0xec64, 0x310, 0xec70,
+    0x30c, 0xec7c, 0x308, 0xec88, 0x305, 0xec94, 0x301, 0xeca0,
+    0x2fd, 0xecac, 0x2f9, 0xecb8, 0x2f5, 0xecc4, 0x2f2, 0xecd0,
+    0x2ee, 0xecdc, 0x2ea, 0xece8, 0x2e6, 0xecf4, 0x2e3, 0xed00,
+    0x2df, 0xed0c, 0x2db, 0xed18, 0x2d8, 0xed24, 0x2d4, 0xed30,
+    0x2d0, 0xed3c, 0x2cc, 0xed48, 0x2c9, 0xed54, 0x2c5, 0xed60,
+    0x2c1, 0xed6c, 0x2be, 0xed78, 0x2ba, 0xed84, 0x2b7, 0xed90,
+    0x2b3, 0xed9c, 0x2af, 0xeda8, 0x2ac, 0xedb4, 0x2a8, 0xedc0,
+    0x2a5, 0xedcc, 0x2a1, 0xedd8, 0x29d, 0xede4, 0x29a, 0xedf0,
+    0x296, 0xedfc, 0x293, 0xee09, 0x28f, 0xee15, 0x28c, 0xee21,
+    0x288, 0xee2d, 0x285, 0xee39, 0x281, 0xee45, 0x27e, 0xee51,
+    0x27a, 0xee5d, 0x277, 0xee69, 0x273, 0xee75, 0x270, 0xee81,
+    0x26d, 0xee8d, 0x269, 0xee99, 0x266, 0xeea6, 0x262, 0xeeb2,
+    0x25f, 0xeebe, 0x25c, 0xeeca, 0x258, 0xeed6, 0x255, 0xeee2,
+    0x251, 0xeeee, 0x24e, 0xeefa, 0x24b, 0xef06, 0x247, 0xef13,
+    0x244, 0xef1f, 0x241, 0xef2b, 0x23e, 0xef37, 0x23a, 0xef43,
+    0x237, 0xef4f, 0x234, 0xef5b, 0x230, 0xef67, 0x22d, 0xef74,
+    0x22a, 0xef80, 0x227, 0xef8c, 0x223, 0xef98, 0x220, 0xefa4,
+    0x21d, 0xefb0, 0x21a, 0xefbc, 0x217, 0xefc9, 0x213, 0xefd5,
+    0x210, 0xefe1, 0x20d, 0xefed, 0x20a, 0xeff9, 0x207, 0xf005,
+    0x204, 0xf012, 0x201, 0xf01e, 0x1fd, 0xf02a, 0x1fa, 0xf036,
+    0x1f7, 0xf042, 0x1f4, 0xf04e, 0x1f1, 0xf05b, 0x1ee, 0xf067,
+    0x1eb, 0xf073, 0x1e8, 0xf07f, 0x1e5, 0xf08b, 0x1e2, 0xf098,
+    0x1df, 0xf0a4, 0x1dc, 0xf0b0, 0x1d9, 0xf0bc, 0x1d6, 0xf0c8,
+    0x1d3, 0xf0d5, 0x1d0, 0xf0e1, 0x1cd, 0xf0ed, 0x1ca, 0xf0f9,
+    0x1c7, 0xf105, 0x1c4, 0xf112, 0x1c1, 0xf11e, 0x1be, 0xf12a,
+    0x1bb, 0xf136, 0x1b8, 0xf143, 0x1b6, 0xf14f, 0x1b3, 0xf15b,
+    0x1b0, 0xf167, 0x1ad, 0xf174, 0x1aa, 0xf180, 0x1a7, 0xf18c,
+    0x1a4, 0xf198, 0x1a2, 0xf1a4, 0x19f, 0xf1b1, 0x19c, 0xf1bd,
+    0x199, 0xf1c9, 0x196, 0xf1d5, 0x194, 0xf1e2, 0x191, 0xf1ee,
+    0x18e, 0xf1fa, 0x18b, 0xf207, 0x189, 0xf213, 0x186, 0xf21f,
+    0x183, 0xf22b, 0x180, 0xf238, 0x17e, 0xf244, 0x17b, 0xf250,
+    0x178, 0xf25c, 0x176, 0xf269, 0x173, 0xf275, 0x170, 0xf281,
+    0x16e, 0xf28e, 0x16b, 0xf29a, 0x168, 0xf2a6, 0x166, 0xf2b2,
+    0x163, 0xf2bf, 0x161, 0xf2cb, 0x15e, 0xf2d7, 0x15b, 0xf2e4,
+    0x159, 0xf2f0, 0x156, 0xf2fc, 0x154, 0xf308, 0x151, 0xf315,
+    0x14f, 0xf321, 0x14c, 0xf32d, 0x14a, 0xf33a, 0x147, 0xf346,
+    0x145, 0xf352, 0x142, 0xf35f, 0x140, 0xf36b, 0x13d, 0xf377,
+    0x13b, 0xf384, 0x138, 0xf390, 0x136, 0xf39c, 0x134, 0xf3a9,
+    0x131, 0xf3b5, 0x12f, 0xf3c1, 0x12c, 0xf3ce, 0x12a, 0xf3da,
+    0x128, 0xf3e6, 0x125, 0xf3f3, 0x123, 0xf3ff, 0x120, 0xf40b,
+    0x11e, 0xf418, 0x11c, 0xf424, 0x119, 0xf430, 0x117, 0xf43d,
+    0x115, 0xf449, 0x113, 0xf455, 0x110, 0xf462, 0x10e, 0xf46e,
+    0x10c, 0xf47b, 0x109, 0xf487, 0x107, 0xf493, 0x105, 0xf4a0,
+    0x103, 0xf4ac, 0x100, 0xf4b8, 0xfe, 0xf4c5, 0xfc, 0xf4d1,
+    0xfa, 0xf4dd, 0xf8, 0xf4ea, 0xf6, 0xf4f6, 0xf3, 0xf503,
+    0xf1, 0xf50f, 0xef, 0xf51b, 0xed, 0xf528, 0xeb, 0xf534,
+    0xe9, 0xf540, 0xe7, 0xf54d, 0xe4, 0xf559, 0xe2, 0xf566,
+    0xe0, 0xf572, 0xde, 0xf57e, 0xdc, 0xf58b, 0xda, 0xf597,
+    0xd8, 0xf5a4, 0xd6, 0xf5b0, 0xd4, 0xf5bc, 0xd2, 0xf5c9,
+    0xd0, 0xf5d5, 0xce, 0xf5e2, 0xcc, 0xf5ee, 0xca, 0xf5fa,
+    0xc8, 0xf607, 0xc6, 0xf613, 0xc4, 0xf620, 0xc2, 0xf62c,
+    0xc0, 0xf639, 0xbe, 0xf645, 0xbd, 0xf651, 0xbb, 0xf65e,
+    0xb9, 0xf66a, 0xb7, 0xf677, 0xb5, 0xf683, 0xb3, 0xf690,
+    0xb1, 0xf69c, 0xaf, 0xf6a8, 0xae, 0xf6b5, 0xac, 0xf6c1,
+    0xaa, 0xf6ce, 0xa8, 0xf6da, 0xa6, 0xf6e7, 0xa5, 0xf6f3,
+    0xa3, 0xf6ff, 0xa1, 0xf70c, 0x9f, 0xf718, 0x9e, 0xf725,
+    0x9c, 0xf731, 0x9a, 0xf73e, 0x98, 0xf74a, 0x97, 0xf757,
+    0x95, 0xf763, 0x93, 0xf76f, 0x92, 0xf77c, 0x90, 0xf788,
+    0x8e, 0xf795, 0x8d, 0xf7a1, 0x8b, 0xf7ae, 0x89, 0xf7ba,
+    0x88, 0xf7c7, 0x86, 0xf7d3, 0x85, 0xf7e0, 0x83, 0xf7ec,
+    0x81, 0xf7f9, 0x80, 0xf805, 0x7e, 0xf811, 0x7d, 0xf81e,
+    0x7b, 0xf82a, 0x7a, 0xf837, 0x78, 0xf843, 0x77, 0xf850,
+    0x75, 0xf85c, 0x74, 0xf869, 0x72, 0xf875, 0x71, 0xf882,
+    0x6f, 0xf88e, 0x6e, 0xf89b, 0x6c, 0xf8a7, 0x6b, 0xf8b4,
+    0x69, 0xf8c0, 0x68, 0xf8cd, 0x67, 0xf8d9, 0x65, 0xf8e6,
+    0x64, 0xf8f2, 0x62, 0xf8ff, 0x61, 0xf90b, 0x60, 0xf918,
+    0x5e, 0xf924, 0x5d, 0xf931, 0x5c, 0xf93d, 0x5a, 0xf94a,
+    0x59, 0xf956, 0x58, 0xf963, 0x56, 0xf96f, 0x55, 0xf97c,
+    0x54, 0xf988, 0x53, 0xf995, 0x51, 0xf9a1, 0x50, 0xf9ae,
+    0x4f, 0xf9ba, 0x4e, 0xf9c7, 0x4c, 0xf9d3, 0x4b, 0xf9e0,
+    0x4a, 0xf9ec, 0x49, 0xf9f9, 0x48, 0xfa05, 0x47, 0xfa12,
+    0x45, 0xfa1e, 0x44, 0xfa2b, 0x43, 0xfa37, 0x42, 0xfa44,
+    0x41, 0xfa50, 0x40, 0xfa5d, 0x3f, 0xfa69, 0x3d, 0xfa76,
+    0x3c, 0xfa82, 0x3b, 0xfa8f, 0x3a, 0xfa9b, 0x39, 0xfaa8,
+    0x38, 0xfab4, 0x37, 0xfac1, 0x36, 0xfacd, 0x35, 0xfada,
+    0x34, 0xfae6, 0x33, 0xfaf3, 0x32, 0xfb00, 0x31, 0xfb0c,
+    0x30, 0xfb19, 0x2f, 0xfb25, 0x2e, 0xfb32, 0x2d, 0xfb3e,
+    0x2c, 0xfb4b, 0x2b, 0xfb57, 0x2b, 0xfb64, 0x2a, 0xfb70,
+    0x29, 0xfb7d, 0x28, 0xfb89, 0x27, 0xfb96, 0x26, 0xfba2,
+    0x25, 0xfbaf, 0x24, 0xfbbc, 0x24, 0xfbc8, 0x23, 0xfbd5,
+    0x22, 0xfbe1, 0x21, 0xfbee, 0x20, 0xfbfa, 0x20, 0xfc07,
+    0x1f, 0xfc13, 0x1e, 0xfc20, 0x1d, 0xfc2c, 0x1d, 0xfc39,
+    0x1c, 0xfc45, 0x1b, 0xfc52, 0x1a, 0xfc5f, 0x1a, 0xfc6b,
+    0x19, 0xfc78, 0x18, 0xfc84, 0x18, 0xfc91, 0x17, 0xfc9d,
+    0x16, 0xfcaa, 0x16, 0xfcb6, 0x15, 0xfcc3, 0x14, 0xfcd0,
+    0x14, 0xfcdc, 0x13, 0xfce9, 0x13, 0xfcf5, 0x12, 0xfd02,
+    0x11, 0xfd0e, 0x11, 0xfd1b, 0x10, 0xfd27, 0x10, 0xfd34,
+    0xf, 0xfd40, 0xf, 0xfd4d, 0xe, 0xfd5a, 0xe, 0xfd66,
+    0xd, 0xfd73, 0xd, 0xfd7f, 0xc, 0xfd8c, 0xc, 0xfd98,
+    0xb, 0xfda5, 0xb, 0xfdb2, 0xa, 0xfdbe, 0xa, 0xfdcb,
+    0x9, 0xfdd7, 0x9, 0xfde4, 0x9, 0xfdf0, 0x8, 0xfdfd,
+    0x8, 0xfe09, 0x7, 0xfe16, 0x7, 0xfe23, 0x7, 0xfe2f,
+    0x6, 0xfe3c, 0x6, 0xfe48, 0x6, 0xfe55, 0x5, 0xfe61,
+    0x5, 0xfe6e, 0x5, 0xfe7a, 0x4, 0xfe87, 0x4, 0xfe94,
+    0x4, 0xfea0, 0x4, 0xfead, 0x3, 0xfeb9, 0x3, 0xfec6,
+    0x3, 0xfed2, 0x3, 0xfedf, 0x2, 0xfeec, 0x2, 0xfef8,
+    0x2, 0xff05, 0x2, 0xff11, 0x2, 0xff1e, 0x1, 0xff2a,
+    0x1, 0xff37, 0x1, 0xff44, 0x1, 0xff50, 0x1, 0xff5d,
+    0x1, 0xff69, 0x1, 0xff76, 0x0, 0xff82, 0x0, 0xff8f,
+    0x0, 0xff9b, 0x0, 0xffa8, 0x0, 0xffb5, 0x0, 0xffc1,
+    0x0, 0xffce, 0x0, 0xffda, 0x0, 0xffe7, 0x0, 0xfff3,
+    0x0, 0x0, 0x0, 0xd, 0x0, 0x19, 0x0, 0x26,
+    0x0, 0x32, 0x0, 0x3f, 0x0, 0x4b, 0x0, 0x58,
+    0x0, 0x65, 0x0, 0x71, 0x0, 0x7e, 0x1, 0x8a,
+    0x1, 0x97, 0x1, 0xa3, 0x1, 0xb0, 0x1, 0xbc,
+    0x1, 0xc9, 0x1, 0xd6, 0x2, 0xe2, 0x2, 0xef,
+    0x2, 0xfb, 0x2, 0x108, 0x2, 0x114, 0x3, 0x121,
+    0x3, 0x12e, 0x3, 0x13a, 0x3, 0x147, 0x4, 0x153,
+    0x4, 0x160, 0x4, 0x16c, 0x4, 0x179, 0x5, 0x186,
+    0x5, 0x192, 0x5, 0x19f, 0x6, 0x1ab, 0x6, 0x1b8,
+    0x6, 0x1c4, 0x7, 0x1d1, 0x7, 0x1dd, 0x7, 0x1ea,
+    0x8, 0x1f7, 0x8, 0x203, 0x9, 0x210, 0x9, 0x21c,
+    0x9, 0x229, 0xa, 0x235, 0xa, 0x242, 0xb, 0x24e,
+    0xb, 0x25b, 0xc, 0x268, 0xc, 0x274, 0xd, 0x281,
+    0xd, 0x28d, 0xe, 0x29a, 0xe, 0x2a6, 0xf, 0x2b3,
+    0xf, 0x2c0, 0x10, 0x2cc, 0x10, 0x2d9, 0x11, 0x2e5,
+    0x11, 0x2f2, 0x12, 0x2fe, 0x13, 0x30b, 0x13, 0x317,
+    0x14, 0x324, 0x14, 0x330, 0x15, 0x33d, 0x16, 0x34a,
+    0x16, 0x356, 0x17, 0x363, 0x18, 0x36f, 0x18, 0x37c,
+    0x19, 0x388, 0x1a, 0x395, 0x1a, 0x3a1, 0x1b, 0x3ae,
+    0x1c, 0x3bb, 0x1d, 0x3c7, 0x1d, 0x3d4, 0x1e, 0x3e0,
+    0x1f, 0x3ed, 0x20, 0x3f9, 0x20, 0x406, 0x21, 0x412,
+    0x22, 0x41f, 0x23, 0x42b, 0x24, 0x438, 0x24, 0x444,
+    0x25, 0x451, 0x26, 0x45e, 0x27, 0x46a, 0x28, 0x477,
+    0x29, 0x483, 0x2a, 0x490, 0x2b, 0x49c, 0x2b, 0x4a9,
+    0x2c, 0x4b5, 0x2d, 0x4c2, 0x2e, 0x4ce, 0x2f, 0x4db,
+    0x30, 0x4e7, 0x31, 0x4f4, 0x32, 0x500, 0x33, 0x50d,
+    0x34, 0x51a, 0x35, 0x526, 0x36, 0x533, 0x37, 0x53f,
+    0x38, 0x54c, 0x39, 0x558, 0x3a, 0x565, 0x3b, 0x571,
+    0x3c, 0x57e, 0x3d, 0x58a, 0x3f, 0x597, 0x40, 0x5a3,
+    0x41, 0x5b0, 0x42, 0x5bc, 0x43, 0x5c9, 0x44, 0x5d5,
+    0x45, 0x5e2, 0x47, 0x5ee, 0x48, 0x5fb, 0x49, 0x607,
+    0x4a, 0x614, 0x4b, 0x620, 0x4c, 0x62d, 0x4e, 0x639,
+    0x4f, 0x646, 0x50, 0x652, 0x51, 0x65f, 0x53, 0x66b,
+    0x54, 0x678, 0x55, 0x684, 0x56, 0x691, 0x58, 0x69d,
+    0x59, 0x6aa, 0x5a, 0x6b6, 0x5c, 0x6c3, 0x5d, 0x6cf,
+    0x5e, 0x6dc, 0x60, 0x6e8, 0x61, 0x6f5, 0x62, 0x701,
+    0x64, 0x70e, 0x65, 0x71a, 0x67, 0x727, 0x68, 0x733,
+    0x69, 0x740, 0x6b, 0x74c, 0x6c, 0x759, 0x6e, 0x765,
+    0x6f, 0x772, 0x71, 0x77e, 0x72, 0x78b, 0x74, 0x797,
+    0x75, 0x7a4, 0x77, 0x7b0, 0x78, 0x7bd, 0x7a, 0x7c9,
+    0x7b, 0x7d6, 0x7d, 0x7e2, 0x7e, 0x7ef, 0x80, 0x7fb,
+    0x81, 0x807, 0x83, 0x814, 0x85, 0x820, 0x86, 0x82d,
+    0x88, 0x839, 0x89, 0x846, 0x8b, 0x852, 0x8d, 0x85f,
+    0x8e, 0x86b, 0x90, 0x878, 0x92, 0x884, 0x93, 0x891,
+    0x95, 0x89d, 0x97, 0x8a9, 0x98, 0x8b6, 0x9a, 0x8c2,
+    0x9c, 0x8cf, 0x9e, 0x8db, 0x9f, 0x8e8, 0xa1, 0x8f4,
+    0xa3, 0x901, 0xa5, 0x90d, 0xa6, 0x919, 0xa8, 0x926,
+    0xaa, 0x932, 0xac, 0x93f, 0xae, 0x94b, 0xaf, 0x958,
+    0xb1, 0x964, 0xb3, 0x970, 0xb5, 0x97d, 0xb7, 0x989,
+    0xb9, 0x996, 0xbb, 0x9a2, 0xbd, 0x9af, 0xbe, 0x9bb,
+    0xc0, 0x9c7, 0xc2, 0x9d4, 0xc4, 0x9e0, 0xc6, 0x9ed,
+    0xc8, 0x9f9, 0xca, 0xa06, 0xcc, 0xa12, 0xce, 0xa1e,
+    0xd0, 0xa2b, 0xd2, 0xa37, 0xd4, 0xa44, 0xd6, 0xa50,
+    0xd8, 0xa5c, 0xda, 0xa69, 0xdc, 0xa75, 0xde, 0xa82,
+    0xe0, 0xa8e, 0xe2, 0xa9a, 0xe4, 0xaa7, 0xe7, 0xab3,
+    0xe9, 0xac0, 0xeb, 0xacc, 0xed, 0xad8, 0xef, 0xae5,
+    0xf1, 0xaf1, 0xf3, 0xafd, 0xf6, 0xb0a, 0xf8, 0xb16,
+    0xfa, 0xb23, 0xfc, 0xb2f, 0xfe, 0xb3b, 0x100, 0xb48,
+    0x103, 0xb54, 0x105, 0xb60, 0x107, 0xb6d, 0x109, 0xb79,
+    0x10c, 0xb85, 0x10e, 0xb92, 0x110, 0xb9e, 0x113, 0xbab,
+    0x115, 0xbb7, 0x117, 0xbc3, 0x119, 0xbd0, 0x11c, 0xbdc,
+    0x11e, 0xbe8, 0x120, 0xbf5, 0x123, 0xc01, 0x125, 0xc0d,
+    0x128, 0xc1a, 0x12a, 0xc26, 0x12c, 0xc32, 0x12f, 0xc3f,
+    0x131, 0xc4b, 0x134, 0xc57, 0x136, 0xc64, 0x138, 0xc70,
+    0x13b, 0xc7c, 0x13d, 0xc89, 0x140, 0xc95, 0x142, 0xca1,
+    0x145, 0xcae, 0x147, 0xcba, 0x14a, 0xcc6, 0x14c, 0xcd3,
+    0x14f, 0xcdf, 0x151, 0xceb, 0x154, 0xcf8, 0x156, 0xd04,
+    0x159, 0xd10, 0x15b, 0xd1c, 0x15e, 0xd29, 0x161, 0xd35,
+    0x163, 0xd41, 0x166, 0xd4e, 0x168, 0xd5a, 0x16b, 0xd66,
+    0x16e, 0xd72, 0x170, 0xd7f, 0x173, 0xd8b, 0x176, 0xd97,
+    0x178, 0xda4, 0x17b, 0xdb0, 0x17e, 0xdbc, 0x180, 0xdc8,
+    0x183, 0xdd5, 0x186, 0xde1, 0x189, 0xded, 0x18b, 0xdf9,
+    0x18e, 0xe06, 0x191, 0xe12, 0x194, 0xe1e, 0x196, 0xe2b,
+    0x199, 0xe37, 0x19c, 0xe43, 0x19f, 0xe4f, 0x1a2, 0xe5c,
+    0x1a4, 0xe68, 0x1a7, 0xe74, 0x1aa, 0xe80, 0x1ad, 0xe8c,
+    0x1b0, 0xe99, 0x1b3, 0xea5, 0x1b6, 0xeb1, 0x1b8, 0xebd,
+    0x1bb, 0xeca, 0x1be, 0xed6, 0x1c1, 0xee2, 0x1c4, 0xeee,
+    0x1c7, 0xefb, 0x1ca, 0xf07, 0x1cd, 0xf13, 0x1d0, 0xf1f,
+    0x1d3, 0xf2b, 0x1d6, 0xf38, 0x1d9, 0xf44, 0x1dc, 0xf50,
+    0x1df, 0xf5c, 0x1e2, 0xf68, 0x1e5, 0xf75, 0x1e8, 0xf81,
+    0x1eb, 0xf8d, 0x1ee, 0xf99, 0x1f1, 0xfa5, 0x1f4, 0xfb2,
+    0x1f7, 0xfbe, 0x1fa, 0xfca, 0x1fd, 0xfd6, 0x201, 0xfe2,
+    0x204, 0xfee, 0x207, 0xffb, 0x20a, 0x1007, 0x20d, 0x1013,
+    0x210, 0x101f, 0x213, 0x102b, 0x217, 0x1037, 0x21a, 0x1044,
+    0x21d, 0x1050, 0x220, 0x105c, 0x223, 0x1068, 0x227, 0x1074,
+    0x22a, 0x1080, 0x22d, 0x108c, 0x230, 0x1099, 0x234, 0x10a5,
+    0x237, 0x10b1, 0x23a, 0x10bd, 0x23e, 0x10c9, 0x241, 0x10d5,
+    0x244, 0x10e1, 0x247, 0x10ed, 0x24b, 0x10fa, 0x24e, 0x1106,
+    0x251, 0x1112, 0x255, 0x111e, 0x258, 0x112a, 0x25c, 0x1136,
+    0x25f, 0x1142, 0x262, 0x114e, 0x266, 0x115a, 0x269, 0x1167,
+    0x26d, 0x1173, 0x270, 0x117f, 0x273, 0x118b, 0x277, 0x1197,
+    0x27a, 0x11a3, 0x27e, 0x11af, 0x281, 0x11bb, 0x285, 0x11c7,
+    0x288, 0x11d3, 0x28c, 0x11df, 0x28f, 0x11eb, 0x293, 0x11f7,
+    0x296, 0x1204, 0x29a, 0x1210, 0x29d, 0x121c, 0x2a1, 0x1228,
+    0x2a5, 0x1234, 0x2a8, 0x1240, 0x2ac, 0x124c, 0x2af, 0x1258,
+    0x2b3, 0x1264, 0x2b7, 0x1270, 0x2ba, 0x127c, 0x2be, 0x1288,
+    0x2c1, 0x1294, 0x2c5, 0x12a0, 0x2c9, 0x12ac, 0x2cc, 0x12b8,
+    0x2d0, 0x12c4, 0x2d4, 0x12d0, 0x2d8, 0x12dc, 0x2db, 0x12e8,
+    0x2df, 0x12f4, 0x2e3, 0x1300, 0x2e6, 0x130c, 0x2ea, 0x1318,
+    0x2ee, 0x1324, 0x2f2, 0x1330, 0x2f5, 0x133c, 0x2f9, 0x1348,
+    0x2fd, 0x1354, 0x301, 0x1360, 0x305, 0x136c, 0x308, 0x1378,
+    0x30c, 0x1384, 0x310, 0x1390, 0x314, 0x139c, 0x318, 0x13a8,
+    0x31c, 0x13b4, 0x320, 0x13c0, 0x323, 0x13cc, 0x327, 0x13d8,
+    0x32b, 0x13e4, 0x32f, 0x13f0, 0x333, 0x13fb, 0x337, 0x1407,
+    0x33b, 0x1413, 0x33f, 0x141f, 0x343, 0x142b, 0x347, 0x1437,
+    0x34b, 0x1443, 0x34f, 0x144f, 0x353, 0x145b, 0x357, 0x1467,
+    0x35b, 0x1473, 0x35f, 0x147f, 0x363, 0x148b, 0x367, 0x1496,
+    0x36b, 0x14a2, 0x36f, 0x14ae, 0x373, 0x14ba, 0x377, 0x14c6,
+    0x37b, 0x14d2, 0x37f, 0x14de, 0x383, 0x14ea, 0x387, 0x14f6,
+    0x38c, 0x1501, 0x390, 0x150d, 0x394, 0x1519, 0x398, 0x1525,
+    0x39c, 0x1531, 0x3a0, 0x153d, 0x3a5, 0x1549, 0x3a9, 0x1554,
+    0x3ad, 0x1560, 0x3b1, 0x156c, 0x3b5, 0x1578, 0x3ba, 0x1584,
+    0x3be, 0x1590, 0x3c2, 0x159b, 0x3c6, 0x15a7, 0x3ca, 0x15b3,
+    0x3cf, 0x15bf, 0x3d3, 0x15cb, 0x3d7, 0x15d7, 0x3dc, 0x15e2,
+    0x3e0, 0x15ee, 0x3e4, 0x15fa, 0x3e9, 0x1606, 0x3ed, 0x1612,
+    0x3f1, 0x161d, 0x3f6, 0x1629, 0x3fa, 0x1635, 0x3fe, 0x1641,
+    0x403, 0x164c, 0x407, 0x1658, 0x40b, 0x1664, 0x410, 0x1670,
+    0x414, 0x167c, 0x419, 0x1687, 0x41d, 0x1693, 0x422, 0x169f,
+    0x426, 0x16ab, 0x42a, 0x16b6, 0x42f, 0x16c2, 0x433, 0x16ce,
+    0x438, 0x16da, 0x43c, 0x16e5, 0x441, 0x16f1, 0x445, 0x16fd,
+    0x44a, 0x1709, 0x44e, 0x1714, 0x453, 0x1720, 0x457, 0x172c,
+    0x45c, 0x1737, 0x461, 0x1743, 0x465, 0x174f, 0x46a, 0x175b,
+    0x46e, 0x1766, 0x473, 0x1772, 0x478, 0x177e, 0x47c, 0x1789,
+    0x481, 0x1795, 0x485, 0x17a1, 0x48a, 0x17ac, 0x48f, 0x17b8,
+    0x493, 0x17c4, 0x498, 0x17cf, 0x49d, 0x17db, 0x4a1, 0x17e7,
+    0x4a6, 0x17f2, 0x4ab, 0x17fe, 0x4b0, 0x180a, 0x4b4, 0x1815,
+    0x4b9, 0x1821, 0x4be, 0x182d, 0x4c2, 0x1838, 0x4c7, 0x1844,
+    0x4cc, 0x184f, 0x4d1, 0x185b, 0x4d6, 0x1867, 0x4da, 0x1872,
+    0x4df, 0x187e, 0x4e4, 0x1889, 0x4e9, 0x1895, 0x4ee, 0x18a1,
+    0x4f2, 0x18ac, 0x4f7, 0x18b8, 0x4fc, 0x18c3, 0x501, 0x18cf,
+    0x506, 0x18db, 0x50b, 0x18e6, 0x510, 0x18f2, 0x515, 0x18fd,
+    0x51a, 0x1909, 0x51e, 0x1914, 0x523, 0x1920, 0x528, 0x192c,
+    0x52d, 0x1937, 0x532, 0x1943, 0x537, 0x194e, 0x53c, 0x195a,
+    0x541, 0x1965, 0x546, 0x1971, 0x54b, 0x197c, 0x550, 0x1988,
+    0x555, 0x1993, 0x55a, 0x199f, 0x55f, 0x19aa, 0x564, 0x19b6,
+    0x569, 0x19c1, 0x56e, 0x19cd, 0x573, 0x19d8, 0x578, 0x19e4,
+    0x57e, 0x19ef, 0x583, 0x19fb, 0x588, 0x1a06, 0x58d, 0x1a12,
+    0x592, 0x1a1d, 0x597, 0x1a29, 0x59c, 0x1a34, 0x5a1, 0x1a40,
+    0x5a7, 0x1a4b, 0x5ac, 0x1a57, 0x5b1, 0x1a62, 0x5b6, 0x1a6e,
+    0x5bb, 0x1a79, 0x5c1, 0x1a84, 0x5c6, 0x1a90, 0x5cb, 0x1a9b,
+    0x5d0, 0x1aa7, 0x5d5, 0x1ab2, 0x5db, 0x1abe, 0x5e0, 0x1ac9,
+    0x5e5, 0x1ad4, 0x5ea, 0x1ae0, 0x5f0, 0x1aeb, 0x5f5, 0x1af7,
+    0x5fa, 0x1b02, 0x600, 0x1b0d, 0x605, 0x1b19, 0x60a, 0x1b24,
+    0x610, 0x1b30, 0x615, 0x1b3b, 0x61a, 0x1b46, 0x620, 0x1b52,
+    0x625, 0x1b5d, 0x62a, 0x1b68, 0x630, 0x1b74, 0x635, 0x1b7f,
+    0x63b, 0x1b8a, 0x640, 0x1b96, 0x645, 0x1ba1, 0x64b, 0x1bac,
+    0x650, 0x1bb8, 0x656, 0x1bc3, 0x65b, 0x1bce, 0x661, 0x1bda,
+    0x666, 0x1be5, 0x66c, 0x1bf0, 0x671, 0x1bfc, 0x677, 0x1c07,
+    0x67c, 0x1c12, 0x682, 0x1c1e, 0x687, 0x1c29, 0x68d, 0x1c34,
+    0x692, 0x1c3f, 0x698, 0x1c4b, 0x69d, 0x1c56, 0x6a3, 0x1c61,
+    0x6a8, 0x1c6c, 0x6ae, 0x1c78, 0x6b4, 0x1c83, 0x6b9, 0x1c8e,
+    0x6bf, 0x1c99, 0x6c5, 0x1ca5, 0x6ca, 0x1cb0, 0x6d0, 0x1cbb,
+    0x6d5, 0x1cc6, 0x6db, 0x1cd2, 0x6e1, 0x1cdd, 0x6e6, 0x1ce8,
+    0x6ec, 0x1cf3, 0x6f2, 0x1cff, 0x6f7, 0x1d0a, 0x6fd, 0x1d15,
+    0x703, 0x1d20, 0x709, 0x1d2b, 0x70e, 0x1d36, 0x714, 0x1d42,
+    0x71a, 0x1d4d, 0x720, 0x1d58, 0x725, 0x1d63, 0x72b, 0x1d6e,
+    0x731, 0x1d79, 0x737, 0x1d85, 0x73d, 0x1d90, 0x742, 0x1d9b,
+    0x748, 0x1da6, 0x74e, 0x1db1, 0x754, 0x1dbc, 0x75a, 0x1dc7,
+    0x75f, 0x1dd3, 0x765, 0x1dde, 0x76b, 0x1de9, 0x771, 0x1df4,
+    0x777, 0x1dff, 0x77d, 0x1e0a, 0x783, 0x1e15, 0x789, 0x1e20,
+    0x78f, 0x1e2b, 0x795, 0x1e36, 0x79a, 0x1e42, 0x7a0, 0x1e4d,
+    0x7a6, 0x1e58, 0x7ac, 0x1e63, 0x7b2, 0x1e6e, 0x7b8, 0x1e79,
+    0x7be, 0x1e84, 0x7c4, 0x1e8f, 0x7ca, 0x1e9a, 0x7d0, 0x1ea5,
+    0x7d6, 0x1eb0, 0x7dc, 0x1ebb, 0x7e2, 0x1ec6, 0x7e8, 0x1ed1,
+    0x7ee, 0x1edc, 0x7f5, 0x1ee7, 0x7fb, 0x1ef2, 0x801, 0x1efd,
+    0x807, 0x1f08, 0x80d, 0x1f13, 0x813, 0x1f1e, 0x819, 0x1f29,
+    0x81f, 0x1f34, 0x825, 0x1f3f, 0x82b, 0x1f4a, 0x832, 0x1f55,
+    0x838, 0x1f60, 0x83e, 0x1f6b, 0x844, 0x1f76, 0x84a, 0x1f81,
+    0x850, 0x1f8c, 0x857, 0x1f97, 0x85d, 0x1fa2, 0x863, 0x1fac,
+    0x869, 0x1fb7, 0x870, 0x1fc2, 0x876, 0x1fcd, 0x87c, 0x1fd8,
+    0x882, 0x1fe3, 0x889, 0x1fee, 0x88f, 0x1ff9, 0x895, 0x2004,
+    0x89b, 0x200f, 0x8a2, 0x2019, 0x8a8, 0x2024, 0x8ae, 0x202f,
+    0x8b5, 0x203a, 0x8bb, 0x2045, 0x8c1, 0x2050, 0x8c8, 0x205b,
+    0x8ce, 0x2065, 0x8d4, 0x2070, 0x8db, 0x207b, 0x8e1, 0x2086,
+    0x8e8, 0x2091, 0x8ee, 0x209b, 0x8f4, 0x20a6, 0x8fb, 0x20b1,
+    0x901, 0x20bc, 0x908, 0x20c7, 0x90e, 0x20d1, 0x915, 0x20dc,
+    0x91b, 0x20e7, 0x921, 0x20f2, 0x928, 0x20fd, 0x92e, 0x2107,
+    0x935, 0x2112, 0x93b, 0x211d, 0x942, 0x2128, 0x948, 0x2132,
+    0x94f, 0x213d, 0x955, 0x2148, 0x95c, 0x2153, 0x963, 0x215d,
+    0x969, 0x2168, 0x970, 0x2173, 0x976, 0x217d, 0x97d, 0x2188,
+    0x983, 0x2193, 0x98a, 0x219e, 0x991, 0x21a8, 0x997, 0x21b3,
+    0x99e, 0x21be, 0x9a4, 0x21c8, 0x9ab, 0x21d3, 0x9b2, 0x21de,
+    0x9b8, 0x21e8, 0x9bf, 0x21f3, 0x9c6, 0x21fe, 0x9cc, 0x2208,
+    0x9d3, 0x2213, 0x9da, 0x221e, 0x9e0, 0x2228, 0x9e7, 0x2233,
+    0x9ee, 0x223d, 0x9f5, 0x2248, 0x9fb, 0x2253, 0xa02, 0x225d,
+    0xa09, 0x2268, 0xa10, 0x2272, 0xa16, 0x227d, 0xa1d, 0x2288,
+    0xa24, 0x2292, 0xa2b, 0x229d, 0xa32, 0x22a7, 0xa38, 0x22b2,
+    0xa3f, 0x22bc, 0xa46, 0x22c7, 0xa4d, 0x22d2, 0xa54, 0x22dc,
+    0xa5b, 0x22e7, 0xa61, 0x22f1, 0xa68, 0x22fc, 0xa6f, 0x2306,
+    0xa76, 0x2311, 0xa7d, 0x231b, 0xa84, 0x2326, 0xa8b, 0x2330,
+    0xa92, 0x233b, 0xa99, 0x2345, 0xa9f, 0x2350, 0xaa6, 0x235a,
+    0xaad, 0x2365, 0xab4, 0x236f, 0xabb, 0x237a, 0xac2, 0x2384,
+    0xac9, 0x238e, 0xad0, 0x2399, 0xad7, 0x23a3, 0xade, 0x23ae,
+    0xae5, 0x23b8, 0xaec, 0x23c3, 0xaf3, 0x23cd, 0xafa, 0x23d7,
+    0xb01, 0x23e2, 0xb08, 0x23ec, 0xb0f, 0x23f7, 0xb16, 0x2401,
+    0xb1e, 0x240b, 0xb25, 0x2416, 0xb2c, 0x2420, 0xb33, 0x242b,
+    0xb3a, 0x2435, 0xb41, 0x243f, 0xb48, 0x244a, 0xb4f, 0x2454,
+    0xb56, 0x245e, 0xb5e, 0x2469, 0xb65, 0x2473, 0xb6c, 0x247d,
+    0xb73, 0x2488, 0xb7a, 0x2492, 0xb81, 0x249c, 0xb89, 0x24a7,
+    0xb90, 0x24b1, 0xb97, 0x24bb, 0xb9e, 0x24c5, 0xba5, 0x24d0,
+    0xbad, 0x24da, 0xbb4, 0x24e4, 0xbbb, 0x24ef, 0xbc2, 0x24f9,
+    0xbca, 0x2503, 0xbd1, 0x250d, 0xbd8, 0x2518, 0xbe0, 0x2522,
+    0xbe7, 0x252c, 0xbee, 0x2536, 0xbf5, 0x2541, 0xbfd, 0x254b,
+    0xc04, 0x2555, 0xc0b, 0x255f, 0xc13, 0x2569, 0xc1a, 0x2574,
+    0xc21, 0x257e, 0xc29, 0x2588, 0xc30, 0x2592, 0xc38, 0x259c,
+    0xc3f, 0x25a6, 0xc46, 0x25b1, 0xc4e, 0x25bb, 0xc55, 0x25c5,
+    0xc5d, 0x25cf, 0xc64, 0x25d9, 0xc6b, 0x25e3, 0xc73, 0x25ed,
+    0xc7a, 0x25f8, 0xc82, 0x2602, 0xc89, 0x260c, 0xc91, 0x2616,
+    0xc98, 0x2620, 0xca0, 0x262a, 0xca7, 0x2634, 0xcaf, 0x263e,
+    0xcb6, 0x2648, 0xcbe, 0x2652, 0xcc5, 0x265c, 0xccd, 0x2666,
+    0xcd4, 0x2671, 0xcdc, 0x267b, 0xce3, 0x2685, 0xceb, 0x268f,
+    0xcf3, 0x2699, 0xcfa, 0x26a3, 0xd02, 0x26ad, 0xd09, 0x26b7,
+    0xd11, 0x26c1, 0xd19, 0x26cb, 0xd20, 0x26d5, 0xd28, 0x26df,
+    0xd30, 0x26e9, 0xd37, 0x26f3, 0xd3f, 0x26fd, 0xd46, 0x2707,
+    0xd4e, 0x2711, 0xd56, 0x271a, 0xd5d, 0x2724, 0xd65, 0x272e,
+    0xd6d, 0x2738, 0xd75, 0x2742, 0xd7c, 0x274c, 0xd84, 0x2756,
+    0xd8c, 0x2760, 0xd93, 0x276a, 0xd9b, 0x2774, 0xda3, 0x277e,
+    0xdab, 0x2788, 0xdb2, 0x2791, 0xdba, 0x279b, 0xdc2, 0x27a5,
+    0xdca, 0x27af, 0xdd2, 0x27b9, 0xdd9, 0x27c3, 0xde1, 0x27cd,
+    0xde9, 0x27d6, 0xdf1, 0x27e0, 0xdf9, 0x27ea, 0xe01, 0x27f4,
+    0xe08, 0x27fe, 0xe10, 0x2808, 0xe18, 0x2811, 0xe20, 0x281b,
+    0xe28, 0x2825, 0xe30, 0x282f, 0xe38, 0x2838, 0xe40, 0x2842,
+    0xe47, 0x284c, 0xe4f, 0x2856, 0xe57, 0x2860, 0xe5f, 0x2869,
+    0xe67, 0x2873, 0xe6f, 0x287d, 0xe77, 0x2886, 0xe7f, 0x2890,
+    0xe87, 0x289a, 0xe8f, 0x28a4, 0xe97, 0x28ad, 0xe9f, 0x28b7,
+    0xea7, 0x28c1, 0xeaf, 0x28ca, 0xeb7, 0x28d4, 0xebf, 0x28de,
+    0xec7, 0x28e7, 0xecf, 0x28f1, 0xed7, 0x28fb, 0xedf, 0x2904,
+    0xee7, 0x290e, 0xeef, 0x2918, 0xef7, 0x2921, 0xeff, 0x292b,
+    0xf07, 0x2935, 0xf10, 0x293e, 0xf18, 0x2948, 0xf20, 0x2951,
+    0xf28, 0x295b, 0xf30, 0x2965, 0xf38, 0x296e, 0xf40, 0x2978,
+    0xf48, 0x2981, 0xf51, 0x298b, 0xf59, 0x2994, 0xf61, 0x299e,
+    0xf69, 0x29a7, 0xf71, 0x29b1, 0xf79, 0x29bb, 0xf82, 0x29c4,
+    0xf8a, 0x29ce, 0xf92, 0x29d7, 0xf9a, 0x29e1, 0xfa3, 0x29ea,
+    0xfab, 0x29f4, 0xfb3, 0x29fd, 0xfbb, 0x2a07, 0xfc4, 0x2a10,
+    0xfcc, 0x2a1a, 0xfd4, 0x2a23, 0xfdc, 0x2a2c, 0xfe5, 0x2a36,
+    0xfed, 0x2a3f, 0xff5, 0x2a49, 0xffe, 0x2a52, 0x1006, 0x2a5c,
+    0x100e, 0x2a65, 0x1016, 0x2a6e, 0x101f, 0x2a78, 0x1027, 0x2a81,
+    0x1030, 0x2a8b, 0x1038, 0x2a94, 0x1040, 0x2a9d, 0x1049, 0x2aa7,
+    0x1051, 0x2ab0, 0x1059, 0x2ab9, 0x1062, 0x2ac3, 0x106a, 0x2acc,
+    0x1073, 0x2ad6, 0x107b, 0x2adf, 0x1083, 0x2ae8, 0x108c, 0x2af2,
+    0x1094, 0x2afb, 0x109d, 0x2b04, 0x10a5, 0x2b0d, 0x10ae, 0x2b17,
+    0x10b6, 0x2b20, 0x10bf, 0x2b29, 0x10c7, 0x2b33, 0x10d0, 0x2b3c,
+    0x10d8, 0x2b45, 0x10e0, 0x2b4e, 0x10e9, 0x2b58, 0x10f2, 0x2b61,
+    0x10fa, 0x2b6a, 0x1103, 0x2b73, 0x110b, 0x2b7d, 0x1114, 0x2b86,
+    0x111c, 0x2b8f, 0x1125, 0x2b98, 0x112d, 0x2ba1, 0x1136, 0x2bab,
+    0x113e, 0x2bb4, 0x1147, 0x2bbd, 0x1150, 0x2bc6, 0x1158, 0x2bcf,
+    0x1161, 0x2bd8, 0x1169, 0x2be2, 0x1172, 0x2beb, 0x117b, 0x2bf4,
+    0x1183, 0x2bfd, 0x118c, 0x2c06, 0x1195, 0x2c0f, 0x119d, 0x2c18,
+    0x11a6, 0x2c21, 0x11af, 0x2c2b, 0x11b7, 0x2c34, 0x11c0, 0x2c3d,
+    0x11c9, 0x2c46, 0x11d1, 0x2c4f, 0x11da, 0x2c58, 0x11e3, 0x2c61,
+    0x11eb, 0x2c6a, 0x11f4, 0x2c73, 0x11fd, 0x2c7c, 0x1206, 0x2c85,
+    0x120e, 0x2c8e, 0x1217, 0x2c97, 0x1220, 0x2ca0, 0x1229, 0x2ca9,
+    0x1231, 0x2cb2, 0x123a, 0x2cbb, 0x1243, 0x2cc4, 0x124c, 0x2ccd,
+    0x1255, 0x2cd6, 0x125d, 0x2cdf, 0x1266, 0x2ce8, 0x126f, 0x2cf1,
+    0x1278, 0x2cfa, 0x1281, 0x2d03, 0x128a, 0x2d0c, 0x1292, 0x2d15,
+    0x129b, 0x2d1e, 0x12a4, 0x2d27, 0x12ad, 0x2d2f, 0x12b6, 0x2d38,
+    0x12bf, 0x2d41, 0x12c8, 0x2d4a, 0x12d1, 0x2d53, 0x12d9, 0x2d5c,
+    0x12e2, 0x2d65, 0x12eb, 0x2d6e, 0x12f4, 0x2d76, 0x12fd, 0x2d7f,
+    0x1306, 0x2d88, 0x130f, 0x2d91, 0x1318, 0x2d9a, 0x1321, 0x2da3,
+    0x132a, 0x2dab, 0x1333, 0x2db4, 0x133c, 0x2dbd, 0x1345, 0x2dc6,
+    0x134e, 0x2dcf, 0x1357, 0x2dd7, 0x1360, 0x2de0, 0x1369, 0x2de9,
+    0x1372, 0x2df2, 0x137b, 0x2dfa, 0x1384, 0x2e03, 0x138d, 0x2e0c,
+    0x1396, 0x2e15, 0x139f, 0x2e1d, 0x13a8, 0x2e26, 0x13b1, 0x2e2f,
+    0x13ba, 0x2e37, 0x13c3, 0x2e40, 0x13cc, 0x2e49, 0x13d5, 0x2e51,
+    0x13df, 0x2e5a, 0x13e8, 0x2e63, 0x13f1, 0x2e6b, 0x13fa, 0x2e74,
+    0x1403, 0x2e7d, 0x140c, 0x2e85, 0x1415, 0x2e8e, 0x141e, 0x2e97,
+    0x1428, 0x2e9f, 0x1431, 0x2ea8, 0x143a, 0x2eb0, 0x1443, 0x2eb9,
+    0x144c, 0x2ec2, 0x1455, 0x2eca, 0x145f, 0x2ed3, 0x1468, 0x2edb,
+    0x1471, 0x2ee4, 0x147a, 0x2eec, 0x1483, 0x2ef5, 0x148d, 0x2efd,
+    0x1496, 0x2f06, 0x149f, 0x2f0e, 0x14a8, 0x2f17, 0x14b2, 0x2f20,
+    0x14bb, 0x2f28, 0x14c4, 0x2f30, 0x14cd, 0x2f39, 0x14d7, 0x2f41,
+    0x14e0, 0x2f4a, 0x14e9, 0x2f52, 0x14f3, 0x2f5b, 0x14fc, 0x2f63,
+    0x1505, 0x2f6c, 0x150e, 0x2f74, 0x1518, 0x2f7d, 0x1521, 0x2f85,
+    0x152a, 0x2f8d, 0x1534, 0x2f96, 0x153d, 0x2f9e, 0x1547, 0x2fa7,
+    0x1550, 0x2faf, 0x1559, 0x2fb7, 0x1563, 0x2fc0, 0x156c, 0x2fc8,
+    0x1575, 0x2fd0, 0x157f, 0x2fd9, 0x1588, 0x2fe1, 0x1592, 0x2fea,
+    0x159b, 0x2ff2, 0x15a4, 0x2ffa, 0x15ae, 0x3002, 0x15b7, 0x300b,
+    0x15c1, 0x3013, 0x15ca, 0x301b, 0x15d4, 0x3024, 0x15dd, 0x302c,
+    0x15e6, 0x3034, 0x15f0, 0x303c, 0x15f9, 0x3045, 0x1603, 0x304d,
+    0x160c, 0x3055, 0x1616, 0x305d, 0x161f, 0x3066, 0x1629, 0x306e,
+    0x1632, 0x3076, 0x163c, 0x307e, 0x1645, 0x3087, 0x164f, 0x308f,
+    0x1659, 0x3097, 0x1662, 0x309f, 0x166c, 0x30a7, 0x1675, 0x30af,
+    0x167f, 0x30b8, 0x1688, 0x30c0, 0x1692, 0x30c8, 0x169b, 0x30d0,
+    0x16a5, 0x30d8, 0x16af, 0x30e0, 0x16b8, 0x30e8, 0x16c2, 0x30f0,
+    0x16cb, 0x30f9, 0x16d5, 0x3101, 0x16df, 0x3109, 0x16e8, 0x3111,
+    0x16f2, 0x3119, 0x16fc, 0x3121, 0x1705, 0x3129, 0x170f, 0x3131,
+    0x1719, 0x3139, 0x1722, 0x3141, 0x172c, 0x3149, 0x1736, 0x3151,
+    0x173f, 0x3159, 0x1749, 0x3161, 0x1753, 0x3169, 0x175c, 0x3171,
+    0x1766, 0x3179, 0x1770, 0x3181, 0x177a, 0x3189, 0x1783, 0x3191,
+    0x178d, 0x3199, 0x1797, 0x31a1, 0x17a0, 0x31a9, 0x17aa, 0x31b1,
+    0x17b4, 0x31b9, 0x17be, 0x31c0, 0x17c8, 0x31c8, 0x17d1, 0x31d0,
+    0x17db, 0x31d8, 0x17e5, 0x31e0, 0x17ef, 0x31e8, 0x17f8, 0x31f0,
+    0x1802, 0x31f8, 0x180c, 0x31ff, 0x1816, 0x3207, 0x1820, 0x320f,
+    0x182a, 0x3217, 0x1833, 0x321f, 0x183d, 0x3227, 0x1847, 0x322e,
+    0x1851, 0x3236, 0x185b, 0x323e, 0x1865, 0x3246, 0x186f, 0x324e,
+    0x1878, 0x3255, 0x1882, 0x325d, 0x188c, 0x3265, 0x1896, 0x326d,
+    0x18a0, 0x3274, 0x18aa, 0x327c, 0x18b4, 0x3284, 0x18be, 0x328b,
+    0x18c8, 0x3293, 0x18d2, 0x329b, 0x18dc, 0x32a3, 0x18e6, 0x32aa,
+    0x18ef, 0x32b2, 0x18f9, 0x32ba, 0x1903, 0x32c1, 0x190d, 0x32c9,
+    0x1917, 0x32d0, 0x1921, 0x32d8, 0x192b, 0x32e0, 0x1935, 0x32e7,
+    0x193f, 0x32ef, 0x1949, 0x32f7, 0x1953, 0x32fe, 0x195d, 0x3306,
+    0x1967, 0x330d, 0x1971, 0x3315, 0x197b, 0x331d, 0x1985, 0x3324,
+    0x198f, 0x332c, 0x199a, 0x3333, 0x19a4, 0x333b, 0x19ae, 0x3342,
+    0x19b8, 0x334a, 0x19c2, 0x3351, 0x19cc, 0x3359, 0x19d6, 0x3360,
+    0x19e0, 0x3368, 0x19ea, 0x336f, 0x19f4, 0x3377, 0x19fe, 0x337e,
+    0x1a08, 0x3386, 0x1a13, 0x338d, 0x1a1d, 0x3395, 0x1a27, 0x339c,
+    0x1a31, 0x33a3, 0x1a3b, 0x33ab, 0x1a45, 0x33b2, 0x1a4f, 0x33ba,
+    0x1a5a, 0x33c1, 0x1a64, 0x33c8, 0x1a6e, 0x33d0, 0x1a78, 0x33d7,
+    0x1a82, 0x33df, 0x1a8c, 0x33e6, 0x1a97, 0x33ed, 0x1aa1, 0x33f5,
+    0x1aab, 0x33fc, 0x1ab5, 0x3403, 0x1abf, 0x340b, 0x1aca, 0x3412,
+    0x1ad4, 0x3419, 0x1ade, 0x3420, 0x1ae8, 0x3428, 0x1af3, 0x342f,
+    0x1afd, 0x3436, 0x1b07, 0x343e, 0x1b11, 0x3445, 0x1b1c, 0x344c,
+    0x1b26, 0x3453, 0x1b30, 0x345b, 0x1b3b, 0x3462, 0x1b45, 0x3469,
+    0x1b4f, 0x3470, 0x1b59, 0x3477, 0x1b64, 0x347f, 0x1b6e, 0x3486,
+    0x1b78, 0x348d, 0x1b83, 0x3494, 0x1b8d, 0x349b, 0x1b97, 0x34a2,
+    0x1ba2, 0x34aa, 0x1bac, 0x34b1, 0x1bb6, 0x34b8, 0x1bc1, 0x34bf,
+    0x1bcb, 0x34c6, 0x1bd5, 0x34cd, 0x1be0, 0x34d4, 0x1bea, 0x34db,
+    0x1bf5, 0x34e2, 0x1bff, 0x34ea, 0x1c09, 0x34f1, 0x1c14, 0x34f8,
+    0x1c1e, 0x34ff, 0x1c29, 0x3506, 0x1c33, 0x350d, 0x1c3d, 0x3514,
+    0x1c48, 0x351b, 0x1c52, 0x3522, 0x1c5d, 0x3529, 0x1c67, 0x3530,
+    0x1c72, 0x3537, 0x1c7c, 0x353e, 0x1c86, 0x3545, 0x1c91, 0x354c,
+    0x1c9b, 0x3553, 0x1ca6, 0x355a, 0x1cb0, 0x3561, 0x1cbb, 0x3567,
+    0x1cc5, 0x356e, 0x1cd0, 0x3575, 0x1cda, 0x357c, 0x1ce5, 0x3583,
+    0x1cef, 0x358a, 0x1cfa, 0x3591, 0x1d04, 0x3598, 0x1d0f, 0x359f,
+    0x1d19, 0x35a5, 0x1d24, 0x35ac, 0x1d2e, 0x35b3, 0x1d39, 0x35ba,
+    0x1d44, 0x35c1, 0x1d4e, 0x35c8, 0x1d59, 0x35ce, 0x1d63, 0x35d5,
+    0x1d6e, 0x35dc, 0x1d78, 0x35e3, 0x1d83, 0x35ea, 0x1d8e, 0x35f0,
+    0x1d98, 0x35f7, 0x1da3, 0x35fe, 0x1dad, 0x3605, 0x1db8, 0x360b,
+    0x1dc3, 0x3612, 0x1dcd, 0x3619, 0x1dd8, 0x3620, 0x1de2, 0x3626,
+    0x1ded, 0x362d, 0x1df8, 0x3634, 0x1e02, 0x363a, 0x1e0d, 0x3641,
+    0x1e18, 0x3648, 0x1e22, 0x364e, 0x1e2d, 0x3655, 0x1e38, 0x365c,
+    0x1e42, 0x3662, 0x1e4d, 0x3669, 0x1e58, 0x366f, 0x1e62, 0x3676,
+    0x1e6d, 0x367d, 0x1e78, 0x3683, 0x1e83, 0x368a, 0x1e8d, 0x3690,
+    0x1e98, 0x3697, 0x1ea3, 0x369d, 0x1ead, 0x36a4, 0x1eb8, 0x36ab,
+    0x1ec3, 0x36b1, 0x1ece, 0x36b8, 0x1ed8, 0x36be, 0x1ee3, 0x36c5,
+    0x1eee, 0x36cb, 0x1ef9, 0x36d2, 0x1f03, 0x36d8, 0x1f0e, 0x36df,
+    0x1f19, 0x36e5, 0x1f24, 0x36eb, 0x1f2f, 0x36f2, 0x1f39, 0x36f8,
+    0x1f44, 0x36ff, 0x1f4f, 0x3705, 0x1f5a, 0x370c, 0x1f65, 0x3712,
+    0x1f6f, 0x3718, 0x1f7a, 0x371f, 0x1f85, 0x3725, 0x1f90, 0x372c,
+    0x1f9b, 0x3732, 0x1fa5, 0x3738, 0x1fb0, 0x373f, 0x1fbb, 0x3745,
+    0x1fc6, 0x374b, 0x1fd1, 0x3752, 0x1fdc, 0x3758, 0x1fe7, 0x375e,
+    0x1ff1, 0x3765, 0x1ffc, 0x376b, 0x2007, 0x3771, 0x2012, 0x3777,
+    0x201d, 0x377e, 0x2028, 0x3784, 0x2033, 0x378a, 0x203e, 0x3790,
+    0x2049, 0x3797, 0x2054, 0x379d, 0x205e, 0x37a3, 0x2069, 0x37a9,
+    0x2074, 0x37b0, 0x207f, 0x37b6, 0x208a, 0x37bc, 0x2095, 0x37c2,
+    0x20a0, 0x37c8, 0x20ab, 0x37ce, 0x20b6, 0x37d5, 0x20c1, 0x37db,
+    0x20cc, 0x37e1, 0x20d7, 0x37e7, 0x20e2, 0x37ed, 0x20ed, 0x37f3,
+    0x20f8, 0x37f9, 0x2103, 0x37ff, 0x210e, 0x3805, 0x2119, 0x380b,
+    0x2124, 0x3812, 0x212f, 0x3818, 0x213a, 0x381e, 0x2145, 0x3824,
+    0x2150, 0x382a, 0x215b, 0x3830, 0x2166, 0x3836, 0x2171, 0x383c,
+    0x217c, 0x3842, 0x2187, 0x3848, 0x2192, 0x384e, 0x219d, 0x3854,
+    0x21a8, 0x385a, 0x21b3, 0x3860, 0x21be, 0x3866, 0x21ca, 0x386b,
+    0x21d5, 0x3871, 0x21e0, 0x3877, 0x21eb, 0x387d, 0x21f6, 0x3883,
+    0x2201, 0x3889, 0x220c, 0x388f, 0x2217, 0x3895, 0x2222, 0x389b,
+    0x222d, 0x38a1, 0x2239, 0x38a6, 0x2244, 0x38ac, 0x224f, 0x38b2,
+    0x225a, 0x38b8, 0x2265, 0x38be, 0x2270, 0x38c3, 0x227b, 0x38c9,
+    0x2287, 0x38cf, 0x2292, 0x38d5, 0x229d, 0x38db, 0x22a8, 0x38e0,
+    0x22b3, 0x38e6, 0x22be, 0x38ec, 0x22ca, 0x38f2, 0x22d5, 0x38f7,
+    0x22e0, 0x38fd, 0x22eb, 0x3903, 0x22f6, 0x3909, 0x2301, 0x390e,
+    0x230d, 0x3914, 0x2318, 0x391a, 0x2323, 0x391f, 0x232e, 0x3925,
+    0x233a, 0x392b, 0x2345, 0x3930, 0x2350, 0x3936, 0x235b, 0x393b,
+    0x2367, 0x3941, 0x2372, 0x3947, 0x237d, 0x394c, 0x2388, 0x3952,
+    0x2394, 0x3958, 0x239f, 0x395d, 0x23aa, 0x3963, 0x23b5, 0x3968,
+    0x23c1, 0x396e, 0x23cc, 0x3973, 0x23d7, 0x3979, 0x23e2, 0x397e,
+    0x23ee, 0x3984, 0x23f9, 0x3989, 0x2404, 0x398f, 0x2410, 0x3994,
+    0x241b, 0x399a, 0x2426, 0x399f, 0x2432, 0x39a5, 0x243d, 0x39aa,
+    0x2448, 0x39b0, 0x2454, 0x39b5, 0x245f, 0x39bb, 0x246a, 0x39c0,
+    0x2476, 0x39c5, 0x2481, 0x39cb, 0x248c, 0x39d0, 0x2498, 0x39d6,
+    0x24a3, 0x39db, 0x24ae, 0x39e0, 0x24ba, 0x39e6, 0x24c5, 0x39eb,
+    0x24d0, 0x39f0, 0x24dc, 0x39f6, 0x24e7, 0x39fb, 0x24f3, 0x3a00,
+    0x24fe, 0x3a06, 0x2509, 0x3a0b, 0x2515, 0x3a10, 0x2520, 0x3a16,
+    0x252c, 0x3a1b, 0x2537, 0x3a20, 0x2542, 0x3a25, 0x254e, 0x3a2b,
+    0x2559, 0x3a30, 0x2565, 0x3a35, 0x2570, 0x3a3a, 0x257c, 0x3a3f,
+    0x2587, 0x3a45, 0x2592, 0x3a4a, 0x259e, 0x3a4f, 0x25a9, 0x3a54,
+    0x25b5, 0x3a59, 0x25c0, 0x3a5f, 0x25cc, 0x3a64, 0x25d7, 0x3a69,
+    0x25e3, 0x3a6e, 0x25ee, 0x3a73, 0x25fa, 0x3a78, 0x2605, 0x3a7d,
+    0x2611, 0x3a82, 0x261c, 0x3a88, 0x2628, 0x3a8d, 0x2633, 0x3a92,
+    0x263f, 0x3a97, 0x264a, 0x3a9c, 0x2656, 0x3aa1, 0x2661, 0x3aa6,
+    0x266d, 0x3aab, 0x2678, 0x3ab0, 0x2684, 0x3ab5, 0x268f, 0x3aba,
+    0x269b, 0x3abf, 0x26a6, 0x3ac4, 0x26b2, 0x3ac9, 0x26bd, 0x3ace,
+    0x26c9, 0x3ad3, 0x26d4, 0x3ad8, 0x26e0, 0x3add, 0x26ec, 0x3ae2,
+    0x26f7, 0x3ae6, 0x2703, 0x3aeb, 0x270e, 0x3af0, 0x271a, 0x3af5,
+    0x2725, 0x3afa, 0x2731, 0x3aff, 0x273d, 0x3b04, 0x2748, 0x3b09,
+    0x2754, 0x3b0e, 0x275f, 0x3b12, 0x276b, 0x3b17, 0x2777, 0x3b1c,
+    0x2782, 0x3b21, 0x278e, 0x3b26, 0x2799, 0x3b2a, 0x27a5, 0x3b2f,
+    0x27b1, 0x3b34, 0x27bc, 0x3b39, 0x27c8, 0x3b3e, 0x27d3, 0x3b42,
+    0x27df, 0x3b47, 0x27eb, 0x3b4c, 0x27f6, 0x3b50, 0x2802, 0x3b55,
+    0x280e, 0x3b5a, 0x2819, 0x3b5f, 0x2825, 0x3b63, 0x2831, 0x3b68,
+    0x283c, 0x3b6d, 0x2848, 0x3b71, 0x2854, 0x3b76, 0x285f, 0x3b7b,
+    0x286b, 0x3b7f, 0x2877, 0x3b84, 0x2882, 0x3b88, 0x288e, 0x3b8d,
+    0x289a, 0x3b92, 0x28a5, 0x3b96, 0x28b1, 0x3b9b, 0x28bd, 0x3b9f,
+    0x28c9, 0x3ba4, 0x28d4, 0x3ba9, 0x28e0, 0x3bad, 0x28ec, 0x3bb2,
+    0x28f7, 0x3bb6, 0x2903, 0x3bbb, 0x290f, 0x3bbf, 0x291b, 0x3bc4,
+    0x2926, 0x3bc8, 0x2932, 0x3bcd, 0x293e, 0x3bd1, 0x294a, 0x3bd6,
+    0x2955, 0x3bda, 0x2961, 0x3bde, 0x296d, 0x3be3, 0x2979, 0x3be7,
+    0x2984, 0x3bec, 0x2990, 0x3bf0, 0x299c, 0x3bf5, 0x29a8, 0x3bf9,
+    0x29b4, 0x3bfd, 0x29bf, 0x3c02, 0x29cb, 0x3c06, 0x29d7, 0x3c0a,
+    0x29e3, 0x3c0f, 0x29ee, 0x3c13, 0x29fa, 0x3c17, 0x2a06, 0x3c1c,
+    0x2a12, 0x3c20, 0x2a1e, 0x3c24, 0x2a29, 0x3c29, 0x2a35, 0x3c2d,
+    0x2a41, 0x3c31, 0x2a4d, 0x3c36, 0x2a59, 0x3c3a, 0x2a65, 0x3c3e,
+    0x2a70, 0x3c42, 0x2a7c, 0x3c46, 0x2a88, 0x3c4b, 0x2a94, 0x3c4f,
+    0x2aa0, 0x3c53, 0x2aac, 0x3c57, 0x2ab7, 0x3c5b, 0x2ac3, 0x3c60,
+    0x2acf, 0x3c64, 0x2adb, 0x3c68, 0x2ae7, 0x3c6c, 0x2af3, 0x3c70,
+    0x2aff, 0x3c74, 0x2b0a, 0x3c79, 0x2b16, 0x3c7d, 0x2b22, 0x3c81,
+    0x2b2e, 0x3c85, 0x2b3a, 0x3c89, 0x2b46, 0x3c8d, 0x2b52, 0x3c91,
+    0x2b5e, 0x3c95, 0x2b6a, 0x3c99, 0x2b75, 0x3c9d, 0x2b81, 0x3ca1,
+    0x2b8d, 0x3ca5, 0x2b99, 0x3ca9, 0x2ba5, 0x3cad, 0x2bb1, 0x3cb1,
+    0x2bbd, 0x3cb5, 0x2bc9, 0x3cb9, 0x2bd5, 0x3cbd, 0x2be1, 0x3cc1,
+    0x2bed, 0x3cc5, 0x2bf9, 0x3cc9, 0x2c05, 0x3ccd, 0x2c10, 0x3cd1,
+    0x2c1c, 0x3cd5, 0x2c28, 0x3cd9, 0x2c34, 0x3cdd, 0x2c40, 0x3ce0,
+    0x2c4c, 0x3ce4, 0x2c58, 0x3ce8, 0x2c64, 0x3cec, 0x2c70, 0x3cf0,
+    0x2c7c, 0x3cf4, 0x2c88, 0x3cf8, 0x2c94, 0x3cfb, 0x2ca0, 0x3cff,
+    0x2cac, 0x3d03, 0x2cb8, 0x3d07, 0x2cc4, 0x3d0b, 0x2cd0, 0x3d0e,
+    0x2cdc, 0x3d12, 0x2ce8, 0x3d16, 0x2cf4, 0x3d1a, 0x2d00, 0x3d1d,
+    0x2d0c, 0x3d21, 0x2d18, 0x3d25, 0x2d24, 0x3d28, 0x2d30, 0x3d2c,
+    0x2d3c, 0x3d30, 0x2d48, 0x3d34, 0x2d54, 0x3d37, 0x2d60, 0x3d3b,
+    0x2d6c, 0x3d3f, 0x2d78, 0x3d42, 0x2d84, 0x3d46, 0x2d90, 0x3d49,
+    0x2d9c, 0x3d4d, 0x2da8, 0x3d51, 0x2db4, 0x3d54, 0x2dc0, 0x3d58,
+    0x2dcc, 0x3d5b, 0x2dd8, 0x3d5f, 0x2de4, 0x3d63, 0x2df0, 0x3d66,
+    0x2dfc, 0x3d6a, 0x2e09, 0x3d6d, 0x2e15, 0x3d71, 0x2e21, 0x3d74,
+    0x2e2d, 0x3d78, 0x2e39, 0x3d7b, 0x2e45, 0x3d7f, 0x2e51, 0x3d82,
+    0x2e5d, 0x3d86, 0x2e69, 0x3d89, 0x2e75, 0x3d8d, 0x2e81, 0x3d90,
+    0x2e8d, 0x3d93, 0x2e99, 0x3d97, 0x2ea6, 0x3d9a, 0x2eb2, 0x3d9e,
+    0x2ebe, 0x3da1, 0x2eca, 0x3da4, 0x2ed6, 0x3da8, 0x2ee2, 0x3dab,
+    0x2eee, 0x3daf, 0x2efa, 0x3db2, 0x2f06, 0x3db5, 0x2f13, 0x3db9,
+    0x2f1f, 0x3dbc, 0x2f2b, 0x3dbf, 0x2f37, 0x3dc2, 0x2f43, 0x3dc6,
+    0x2f4f, 0x3dc9, 0x2f5b, 0x3dcc, 0x2f67, 0x3dd0, 0x2f74, 0x3dd3,
+    0x2f80, 0x3dd6, 0x2f8c, 0x3dd9, 0x2f98, 0x3ddd, 0x2fa4, 0x3de0,
+    0x2fb0, 0x3de3, 0x2fbc, 0x3de6, 0x2fc9, 0x3de9, 0x2fd5, 0x3ded,
+    0x2fe1, 0x3df0, 0x2fed, 0x3df3, 0x2ff9, 0x3df6, 0x3005, 0x3df9,
+    0x3012, 0x3dfc, 0x301e, 0x3dff, 0x302a, 0x3e03, 0x3036, 0x3e06,
+    0x3042, 0x3e09, 0x304e, 0x3e0c, 0x305b, 0x3e0f, 0x3067, 0x3e12,
+    0x3073, 0x3e15, 0x307f, 0x3e18, 0x308b, 0x3e1b, 0x3098, 0x3e1e,
+    0x30a4, 0x3e21, 0x30b0, 0x3e24, 0x30bc, 0x3e27, 0x30c8, 0x3e2a,
+    0x30d5, 0x3e2d, 0x30e1, 0x3e30, 0x30ed, 0x3e33, 0x30f9, 0x3e36,
+    0x3105, 0x3e39, 0x3112, 0x3e3c, 0x311e, 0x3e3f, 0x312a, 0x3e42,
+    0x3136, 0x3e45, 0x3143, 0x3e48, 0x314f, 0x3e4a, 0x315b, 0x3e4d,
+    0x3167, 0x3e50, 0x3174, 0x3e53, 0x3180, 0x3e56, 0x318c, 0x3e59,
+    0x3198, 0x3e5c, 0x31a4, 0x3e5e, 0x31b1, 0x3e61, 0x31bd, 0x3e64,
+    0x31c9, 0x3e67, 0x31d5, 0x3e6a, 0x31e2, 0x3e6c, 0x31ee, 0x3e6f,
+    0x31fa, 0x3e72, 0x3207, 0x3e75, 0x3213, 0x3e77, 0x321f, 0x3e7a,
+    0x322b, 0x3e7d, 0x3238, 0x3e80, 0x3244, 0x3e82, 0x3250, 0x3e85,
+    0x325c, 0x3e88, 0x3269, 0x3e8a, 0x3275, 0x3e8d, 0x3281, 0x3e90,
+    0x328e, 0x3e92, 0x329a, 0x3e95, 0x32a6, 0x3e98, 0x32b2, 0x3e9a,
+    0x32bf, 0x3e9d, 0x32cb, 0x3e9f, 0x32d7, 0x3ea2, 0x32e4, 0x3ea5,
+    0x32f0, 0x3ea7, 0x32fc, 0x3eaa, 0x3308, 0x3eac, 0x3315, 0x3eaf,
+    0x3321, 0x3eb1, 0x332d, 0x3eb4, 0x333a, 0x3eb6, 0x3346, 0x3eb9,
+    0x3352, 0x3ebb, 0x335f, 0x3ebe, 0x336b, 0x3ec0, 0x3377, 0x3ec3,
+    0x3384, 0x3ec5, 0x3390, 0x3ec8, 0x339c, 0x3eca, 0x33a9, 0x3ecc,
+    0x33b5, 0x3ecf, 0x33c1, 0x3ed1, 0x33ce, 0x3ed4, 0x33da, 0x3ed6,
+    0x33e6, 0x3ed8, 0x33f3, 0x3edb, 0x33ff, 0x3edd, 0x340b, 0x3ee0,
+    0x3418, 0x3ee2, 0x3424, 0x3ee4, 0x3430, 0x3ee7, 0x343d, 0x3ee9,
+    0x3449, 0x3eeb, 0x3455, 0x3eed, 0x3462, 0x3ef0, 0x346e, 0x3ef2,
+    0x347b, 0x3ef4, 0x3487, 0x3ef7, 0x3493, 0x3ef9, 0x34a0, 0x3efb,
+    0x34ac, 0x3efd, 0x34b8, 0x3f00, 0x34c5, 0x3f02, 0x34d1, 0x3f04,
+    0x34dd, 0x3f06, 0x34ea, 0x3f08, 0x34f6, 0x3f0a, 0x3503, 0x3f0d,
+    0x350f, 0x3f0f, 0x351b, 0x3f11, 0x3528, 0x3f13, 0x3534, 0x3f15,
+    0x3540, 0x3f17, 0x354d, 0x3f19, 0x3559, 0x3f1c, 0x3566, 0x3f1e,
+    0x3572, 0x3f20, 0x357e, 0x3f22, 0x358b, 0x3f24, 0x3597, 0x3f26,
+    0x35a4, 0x3f28, 0x35b0, 0x3f2a, 0x35bc, 0x3f2c, 0x35c9, 0x3f2e,
+    0x35d5, 0x3f30, 0x35e2, 0x3f32, 0x35ee, 0x3f34, 0x35fa, 0x3f36,
+    0x3607, 0x3f38, 0x3613, 0x3f3a, 0x3620, 0x3f3c, 0x362c, 0x3f3e,
+    0x3639, 0x3f40, 0x3645, 0x3f42, 0x3651, 0x3f43, 0x365e, 0x3f45,
+    0x366a, 0x3f47, 0x3677, 0x3f49, 0x3683, 0x3f4b, 0x3690, 0x3f4d,
+    0x369c, 0x3f4f, 0x36a8, 0x3f51, 0x36b5, 0x3f52, 0x36c1, 0x3f54,
+    0x36ce, 0x3f56, 0x36da, 0x3f58, 0x36e7, 0x3f5a, 0x36f3, 0x3f5b,
+    0x36ff, 0x3f5d, 0x370c, 0x3f5f, 0x3718, 0x3f61, 0x3725, 0x3f62,
+    0x3731, 0x3f64, 0x373e, 0x3f66, 0x374a, 0x3f68, 0x3757, 0x3f69,
+    0x3763, 0x3f6b, 0x376f, 0x3f6d, 0x377c, 0x3f6e, 0x3788, 0x3f70,
+    0x3795, 0x3f72, 0x37a1, 0x3f73, 0x37ae, 0x3f75, 0x37ba, 0x3f77,
+    0x37c7, 0x3f78, 0x37d3, 0x3f7a, 0x37e0, 0x3f7b, 0x37ec, 0x3f7d,
+    0x37f9, 0x3f7f, 0x3805, 0x3f80, 0x3811, 0x3f82, 0x381e, 0x3f83,
+    0x382a, 0x3f85, 0x3837, 0x3f86, 0x3843, 0x3f88, 0x3850, 0x3f89,
+    0x385c, 0x3f8b, 0x3869, 0x3f8c, 0x3875, 0x3f8e, 0x3882, 0x3f8f,
+    0x388e, 0x3f91, 0x389b, 0x3f92, 0x38a7, 0x3f94, 0x38b4, 0x3f95,
+    0x38c0, 0x3f97, 0x38cd, 0x3f98, 0x38d9, 0x3f99, 0x38e6, 0x3f9b,
+    0x38f2, 0x3f9c, 0x38ff, 0x3f9e, 0x390b, 0x3f9f, 0x3918, 0x3fa0,
+    0x3924, 0x3fa2, 0x3931, 0x3fa3, 0x393d, 0x3fa4, 0x394a, 0x3fa6,
+    0x3956, 0x3fa7, 0x3963, 0x3fa8, 0x396f, 0x3faa, 0x397c, 0x3fab,
+    0x3988, 0x3fac, 0x3995, 0x3fad, 0x39a1, 0x3faf, 0x39ae, 0x3fb0,
+    0x39ba, 0x3fb1, 0x39c7, 0x3fb2, 0x39d3, 0x3fb4, 0x39e0, 0x3fb5,
+    0x39ec, 0x3fb6, 0x39f9, 0x3fb7, 0x3a05, 0x3fb8, 0x3a12, 0x3fb9,
+    0x3a1e, 0x3fbb, 0x3a2b, 0x3fbc, 0x3a37, 0x3fbd, 0x3a44, 0x3fbe,
+    0x3a50, 0x3fbf, 0x3a5d, 0x3fc0, 0x3a69, 0x3fc1, 0x3a76, 0x3fc3,
+    0x3a82, 0x3fc4, 0x3a8f, 0x3fc5, 0x3a9b, 0x3fc6, 0x3aa8, 0x3fc7,
+    0x3ab4, 0x3fc8, 0x3ac1, 0x3fc9, 0x3acd, 0x3fca, 0x3ada, 0x3fcb,
+    0x3ae6, 0x3fcc, 0x3af3, 0x3fcd, 0x3b00, 0x3fce, 0x3b0c, 0x3fcf,
+    0x3b19, 0x3fd0, 0x3b25, 0x3fd1, 0x3b32, 0x3fd2, 0x3b3e, 0x3fd3,
+    0x3b4b, 0x3fd4, 0x3b57, 0x3fd5, 0x3b64, 0x3fd5, 0x3b70, 0x3fd6,
+    0x3b7d, 0x3fd7, 0x3b89, 0x3fd8, 0x3b96, 0x3fd9, 0x3ba2, 0x3fda,
+    0x3baf, 0x3fdb, 0x3bbc, 0x3fdc, 0x3bc8, 0x3fdc, 0x3bd5, 0x3fdd,
+    0x3be1, 0x3fde, 0x3bee, 0x3fdf, 0x3bfa, 0x3fe0, 0x3c07, 0x3fe0,
+    0x3c13, 0x3fe1, 0x3c20, 0x3fe2, 0x3c2c, 0x3fe3, 0x3c39, 0x3fe3,
+    0x3c45, 0x3fe4, 0x3c52, 0x3fe5, 0x3c5f, 0x3fe6, 0x3c6b, 0x3fe6,
+    0x3c78, 0x3fe7, 0x3c84, 0x3fe8, 0x3c91, 0x3fe8, 0x3c9d, 0x3fe9,
+    0x3caa, 0x3fea, 0x3cb6, 0x3fea, 0x3cc3, 0x3feb, 0x3cd0, 0x3fec,
+    0x3cdc, 0x3fec, 0x3ce9, 0x3fed, 0x3cf5, 0x3fed, 0x3d02, 0x3fee,
+    0x3d0e, 0x3fef, 0x3d1b, 0x3fef, 0x3d27, 0x3ff0, 0x3d34, 0x3ff0,
+    0x3d40, 0x3ff1, 0x3d4d, 0x3ff1, 0x3d5a, 0x3ff2, 0x3d66, 0x3ff2,
+    0x3d73, 0x3ff3, 0x3d7f, 0x3ff3, 0x3d8c, 0x3ff4, 0x3d98, 0x3ff4,
+    0x3da5, 0x3ff5, 0x3db2, 0x3ff5, 0x3dbe, 0x3ff6, 0x3dcb, 0x3ff6,
+    0x3dd7, 0x3ff7, 0x3de4, 0x3ff7, 0x3df0, 0x3ff7, 0x3dfd, 0x3ff8,
+    0x3e09, 0x3ff8, 0x3e16, 0x3ff9, 0x3e23, 0x3ff9, 0x3e2f, 0x3ff9,
+    0x3e3c, 0x3ffa, 0x3e48, 0x3ffa, 0x3e55, 0x3ffa, 0x3e61, 0x3ffb,
+    0x3e6e, 0x3ffb, 0x3e7a, 0x3ffb, 0x3e87, 0x3ffc, 0x3e94, 0x3ffc,
+    0x3ea0, 0x3ffc, 0x3ead, 0x3ffc, 0x3eb9, 0x3ffd, 0x3ec6, 0x3ffd,
+    0x3ed2, 0x3ffd, 0x3edf, 0x3ffd, 0x3eec, 0x3ffe, 0x3ef8, 0x3ffe,
+    0x3f05, 0x3ffe, 0x3f11, 0x3ffe, 0x3f1e, 0x3ffe, 0x3f2a, 0x3fff,
+    0x3f37, 0x3fff, 0x3f44, 0x3fff, 0x3f50, 0x3fff, 0x3f5d, 0x3fff,
+    0x3f69, 0x3fff, 0x3f76, 0x3fff, 0x3f82, 0x4000, 0x3f8f, 0x4000,
+    0x3f9b, 0x4000, 0x3fa8, 0x4000, 0x3fb5, 0x4000, 0x3fc1, 0x4000,
+    0x3fce, 0x4000, 0x3fda, 0x4000, 0x3fe7, 0x4000, 0x3ff3, 0x4000,
+};
+
+/**    
+* \par   
+* Generation of real_CoefB array:    
+* \par    
+* n = 4096    
+* <pre>for (i = 0; i < n; i++)    
+*  {    
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));    
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));    
+*  } </pre>   
+* \par    
+* Convert to fixed point Q15 format    
+*       round(pBTable[i] * pow(2, 15))    
+*    
+*/
+static const q15_t ALIGN4 realCoefBQ15[8192] = {
+    0x4000, 0x4000, 0x400d, 0x4000, 0x4019, 0x4000, 0x4026, 0x4000,
+    0x4032, 0x4000, 0x403f, 0x4000, 0x404b, 0x4000, 0x4058, 0x4000,
+    0x4065, 0x4000, 0x4071, 0x4000, 0x407e, 0x4000, 0x408a, 0x3fff,
+    0x4097, 0x3fff, 0x40a3, 0x3fff, 0x40b0, 0x3fff, 0x40bc, 0x3fff,
+    0x40c9, 0x3fff, 0x40d6, 0x3fff, 0x40e2, 0x3ffe, 0x40ef, 0x3ffe,
+    0x40fb, 0x3ffe, 0x4108, 0x3ffe, 0x4114, 0x3ffe, 0x4121, 0x3ffd,
+    0x412e, 0x3ffd, 0x413a, 0x3ffd, 0x4147, 0x3ffd, 0x4153, 0x3ffc,
+    0x4160, 0x3ffc, 0x416c, 0x3ffc, 0x4179, 0x3ffc, 0x4186, 0x3ffb,
+    0x4192, 0x3ffb, 0x419f, 0x3ffb, 0x41ab, 0x3ffa, 0x41b8, 0x3ffa,
+    0x41c4, 0x3ffa, 0x41d1, 0x3ff9, 0x41dd, 0x3ff9, 0x41ea, 0x3ff9,
+    0x41f7, 0x3ff8, 0x4203, 0x3ff8, 0x4210, 0x3ff7, 0x421c, 0x3ff7,
+    0x4229, 0x3ff7, 0x4235, 0x3ff6, 0x4242, 0x3ff6, 0x424e, 0x3ff5,
+    0x425b, 0x3ff5, 0x4268, 0x3ff4, 0x4274, 0x3ff4, 0x4281, 0x3ff3,
+    0x428d, 0x3ff3, 0x429a, 0x3ff2, 0x42a6, 0x3ff2, 0x42b3, 0x3ff1,
+    0x42c0, 0x3ff1, 0x42cc, 0x3ff0, 0x42d9, 0x3ff0, 0x42e5, 0x3fef,
+    0x42f2, 0x3fef, 0x42fe, 0x3fee, 0x430b, 0x3fed, 0x4317, 0x3fed,
+    0x4324, 0x3fec, 0x4330, 0x3fec, 0x433d, 0x3feb, 0x434a, 0x3fea,
+    0x4356, 0x3fea, 0x4363, 0x3fe9, 0x436f, 0x3fe8, 0x437c, 0x3fe8,
+    0x4388, 0x3fe7, 0x4395, 0x3fe6, 0x43a1, 0x3fe6, 0x43ae, 0x3fe5,
+    0x43bb, 0x3fe4, 0x43c7, 0x3fe3, 0x43d4, 0x3fe3, 0x43e0, 0x3fe2,
+    0x43ed, 0x3fe1, 0x43f9, 0x3fe0, 0x4406, 0x3fe0, 0x4412, 0x3fdf,
+    0x441f, 0x3fde, 0x442b, 0x3fdd, 0x4438, 0x3fdc, 0x4444, 0x3fdc,
+    0x4451, 0x3fdb, 0x445e, 0x3fda, 0x446a, 0x3fd9, 0x4477, 0x3fd8,
+    0x4483, 0x3fd7, 0x4490, 0x3fd6, 0x449c, 0x3fd5, 0x44a9, 0x3fd5,
+    0x44b5, 0x3fd4, 0x44c2, 0x3fd3, 0x44ce, 0x3fd2, 0x44db, 0x3fd1,
+    0x44e7, 0x3fd0, 0x44f4, 0x3fcf, 0x4500, 0x3fce, 0x450d, 0x3fcd,
+    0x451a, 0x3fcc, 0x4526, 0x3fcb, 0x4533, 0x3fca, 0x453f, 0x3fc9,
+    0x454c, 0x3fc8, 0x4558, 0x3fc7, 0x4565, 0x3fc6, 0x4571, 0x3fc5,
+    0x457e, 0x3fc4, 0x458a, 0x3fc3, 0x4597, 0x3fc1, 0x45a3, 0x3fc0,
+    0x45b0, 0x3fbf, 0x45bc, 0x3fbe, 0x45c9, 0x3fbd, 0x45d5, 0x3fbc,
+    0x45e2, 0x3fbb, 0x45ee, 0x3fb9, 0x45fb, 0x3fb8, 0x4607, 0x3fb7,
+    0x4614, 0x3fb6, 0x4620, 0x3fb5, 0x462d, 0x3fb4, 0x4639, 0x3fb2,
+    0x4646, 0x3fb1, 0x4652, 0x3fb0, 0x465f, 0x3faf, 0x466b, 0x3fad,
+    0x4678, 0x3fac, 0x4684, 0x3fab, 0x4691, 0x3faa, 0x469d, 0x3fa8,
+    0x46aa, 0x3fa7, 0x46b6, 0x3fa6, 0x46c3, 0x3fa4, 0x46cf, 0x3fa3,
+    0x46dc, 0x3fa2, 0x46e8, 0x3fa0, 0x46f5, 0x3f9f, 0x4701, 0x3f9e,
+    0x470e, 0x3f9c, 0x471a, 0x3f9b, 0x4727, 0x3f99, 0x4733, 0x3f98,
+    0x4740, 0x3f97, 0x474c, 0x3f95, 0x4759, 0x3f94, 0x4765, 0x3f92,
+    0x4772, 0x3f91, 0x477e, 0x3f8f, 0x478b, 0x3f8e, 0x4797, 0x3f8c,
+    0x47a4, 0x3f8b, 0x47b0, 0x3f89, 0x47bd, 0x3f88, 0x47c9, 0x3f86,
+    0x47d6, 0x3f85, 0x47e2, 0x3f83, 0x47ef, 0x3f82, 0x47fb, 0x3f80,
+    0x4807, 0x3f7f, 0x4814, 0x3f7d, 0x4820, 0x3f7b, 0x482d, 0x3f7a,
+    0x4839, 0x3f78, 0x4846, 0x3f77, 0x4852, 0x3f75, 0x485f, 0x3f73,
+    0x486b, 0x3f72, 0x4878, 0x3f70, 0x4884, 0x3f6e, 0x4891, 0x3f6d,
+    0x489d, 0x3f6b, 0x48a9, 0x3f69, 0x48b6, 0x3f68, 0x48c2, 0x3f66,
+    0x48cf, 0x3f64, 0x48db, 0x3f62, 0x48e8, 0x3f61, 0x48f4, 0x3f5f,
+    0x4901, 0x3f5d, 0x490d, 0x3f5b, 0x4919, 0x3f5a, 0x4926, 0x3f58,
+    0x4932, 0x3f56, 0x493f, 0x3f54, 0x494b, 0x3f52, 0x4958, 0x3f51,
+    0x4964, 0x3f4f, 0x4970, 0x3f4d, 0x497d, 0x3f4b, 0x4989, 0x3f49,
+    0x4996, 0x3f47, 0x49a2, 0x3f45, 0x49af, 0x3f43, 0x49bb, 0x3f42,
+    0x49c7, 0x3f40, 0x49d4, 0x3f3e, 0x49e0, 0x3f3c, 0x49ed, 0x3f3a,
+    0x49f9, 0x3f38, 0x4a06, 0x3f36, 0x4a12, 0x3f34, 0x4a1e, 0x3f32,
+    0x4a2b, 0x3f30, 0x4a37, 0x3f2e, 0x4a44, 0x3f2c, 0x4a50, 0x3f2a,
+    0x4a5c, 0x3f28, 0x4a69, 0x3f26, 0x4a75, 0x3f24, 0x4a82, 0x3f22,
+    0x4a8e, 0x3f20, 0x4a9a, 0x3f1e, 0x4aa7, 0x3f1c, 0x4ab3, 0x3f19,
+    0x4ac0, 0x3f17, 0x4acc, 0x3f15, 0x4ad8, 0x3f13, 0x4ae5, 0x3f11,
+    0x4af1, 0x3f0f, 0x4afd, 0x3f0d, 0x4b0a, 0x3f0a, 0x4b16, 0x3f08,
+    0x4b23, 0x3f06, 0x4b2f, 0x3f04, 0x4b3b, 0x3f02, 0x4b48, 0x3f00,
+    0x4b54, 0x3efd, 0x4b60, 0x3efb, 0x4b6d, 0x3ef9, 0x4b79, 0x3ef7,
+    0x4b85, 0x3ef4, 0x4b92, 0x3ef2, 0x4b9e, 0x3ef0, 0x4bab, 0x3eed,
+    0x4bb7, 0x3eeb, 0x4bc3, 0x3ee9, 0x4bd0, 0x3ee7, 0x4bdc, 0x3ee4,
+    0x4be8, 0x3ee2, 0x4bf5, 0x3ee0, 0x4c01, 0x3edd, 0x4c0d, 0x3edb,
+    0x4c1a, 0x3ed8, 0x4c26, 0x3ed6, 0x4c32, 0x3ed4, 0x4c3f, 0x3ed1,
+    0x4c4b, 0x3ecf, 0x4c57, 0x3ecc, 0x4c64, 0x3eca, 0x4c70, 0x3ec8,
+    0x4c7c, 0x3ec5, 0x4c89, 0x3ec3, 0x4c95, 0x3ec0, 0x4ca1, 0x3ebe,
+    0x4cae, 0x3ebb, 0x4cba, 0x3eb9, 0x4cc6, 0x3eb6, 0x4cd3, 0x3eb4,
+    0x4cdf, 0x3eb1, 0x4ceb, 0x3eaf, 0x4cf8, 0x3eac, 0x4d04, 0x3eaa,
+    0x4d10, 0x3ea7, 0x4d1c, 0x3ea5, 0x4d29, 0x3ea2, 0x4d35, 0x3e9f,
+    0x4d41, 0x3e9d, 0x4d4e, 0x3e9a, 0x4d5a, 0x3e98, 0x4d66, 0x3e95,
+    0x4d72, 0x3e92, 0x4d7f, 0x3e90, 0x4d8b, 0x3e8d, 0x4d97, 0x3e8a,
+    0x4da4, 0x3e88, 0x4db0, 0x3e85, 0x4dbc, 0x3e82, 0x4dc8, 0x3e80,
+    0x4dd5, 0x3e7d, 0x4de1, 0x3e7a, 0x4ded, 0x3e77, 0x4df9, 0x3e75,
+    0x4e06, 0x3e72, 0x4e12, 0x3e6f, 0x4e1e, 0x3e6c, 0x4e2b, 0x3e6a,
+    0x4e37, 0x3e67, 0x4e43, 0x3e64, 0x4e4f, 0x3e61, 0x4e5c, 0x3e5e,
+    0x4e68, 0x3e5c, 0x4e74, 0x3e59, 0x4e80, 0x3e56, 0x4e8c, 0x3e53,
+    0x4e99, 0x3e50, 0x4ea5, 0x3e4d, 0x4eb1, 0x3e4a, 0x4ebd, 0x3e48,
+    0x4eca, 0x3e45, 0x4ed6, 0x3e42, 0x4ee2, 0x3e3f, 0x4eee, 0x3e3c,
+    0x4efb, 0x3e39, 0x4f07, 0x3e36, 0x4f13, 0x3e33, 0x4f1f, 0x3e30,
+    0x4f2b, 0x3e2d, 0x4f38, 0x3e2a, 0x4f44, 0x3e27, 0x4f50, 0x3e24,
+    0x4f5c, 0x3e21, 0x4f68, 0x3e1e, 0x4f75, 0x3e1b, 0x4f81, 0x3e18,
+    0x4f8d, 0x3e15, 0x4f99, 0x3e12, 0x4fa5, 0x3e0f, 0x4fb2, 0x3e0c,
+    0x4fbe, 0x3e09, 0x4fca, 0x3e06, 0x4fd6, 0x3e03, 0x4fe2, 0x3dff,
+    0x4fee, 0x3dfc, 0x4ffb, 0x3df9, 0x5007, 0x3df6, 0x5013, 0x3df3,
+    0x501f, 0x3df0, 0x502b, 0x3ded, 0x5037, 0x3de9, 0x5044, 0x3de6,
+    0x5050, 0x3de3, 0x505c, 0x3de0, 0x5068, 0x3ddd, 0x5074, 0x3dd9,
+    0x5080, 0x3dd6, 0x508c, 0x3dd3, 0x5099, 0x3dd0, 0x50a5, 0x3dcc,
+    0x50b1, 0x3dc9, 0x50bd, 0x3dc6, 0x50c9, 0x3dc2, 0x50d5, 0x3dbf,
+    0x50e1, 0x3dbc, 0x50ed, 0x3db9, 0x50fa, 0x3db5, 0x5106, 0x3db2,
+    0x5112, 0x3daf, 0x511e, 0x3dab, 0x512a, 0x3da8, 0x5136, 0x3da4,
+    0x5142, 0x3da1, 0x514e, 0x3d9e, 0x515a, 0x3d9a, 0x5167, 0x3d97,
+    0x5173, 0x3d93, 0x517f, 0x3d90, 0x518b, 0x3d8d, 0x5197, 0x3d89,
+    0x51a3, 0x3d86, 0x51af, 0x3d82, 0x51bb, 0x3d7f, 0x51c7, 0x3d7b,
+    0x51d3, 0x3d78, 0x51df, 0x3d74, 0x51eb, 0x3d71, 0x51f7, 0x3d6d,
+    0x5204, 0x3d6a, 0x5210, 0x3d66, 0x521c, 0x3d63, 0x5228, 0x3d5f,
+    0x5234, 0x3d5b, 0x5240, 0x3d58, 0x524c, 0x3d54, 0x5258, 0x3d51,
+    0x5264, 0x3d4d, 0x5270, 0x3d49, 0x527c, 0x3d46, 0x5288, 0x3d42,
+    0x5294, 0x3d3f, 0x52a0, 0x3d3b, 0x52ac, 0x3d37, 0x52b8, 0x3d34,
+    0x52c4, 0x3d30, 0x52d0, 0x3d2c, 0x52dc, 0x3d28, 0x52e8, 0x3d25,
+    0x52f4, 0x3d21, 0x5300, 0x3d1d, 0x530c, 0x3d1a, 0x5318, 0x3d16,
+    0x5324, 0x3d12, 0x5330, 0x3d0e, 0x533c, 0x3d0b, 0x5348, 0x3d07,
+    0x5354, 0x3d03, 0x5360, 0x3cff, 0x536c, 0x3cfb, 0x5378, 0x3cf8,
+    0x5384, 0x3cf4, 0x5390, 0x3cf0, 0x539c, 0x3cec, 0x53a8, 0x3ce8,
+    0x53b4, 0x3ce4, 0x53c0, 0x3ce0, 0x53cc, 0x3cdd, 0x53d8, 0x3cd9,
+    0x53e4, 0x3cd5, 0x53f0, 0x3cd1, 0x53fb, 0x3ccd, 0x5407, 0x3cc9,
+    0x5413, 0x3cc5, 0x541f, 0x3cc1, 0x542b, 0x3cbd, 0x5437, 0x3cb9,
+    0x5443, 0x3cb5, 0x544f, 0x3cb1, 0x545b, 0x3cad, 0x5467, 0x3ca9,
+    0x5473, 0x3ca5, 0x547f, 0x3ca1, 0x548b, 0x3c9d, 0x5496, 0x3c99,
+    0x54a2, 0x3c95, 0x54ae, 0x3c91, 0x54ba, 0x3c8d, 0x54c6, 0x3c89,
+    0x54d2, 0x3c85, 0x54de, 0x3c81, 0x54ea, 0x3c7d, 0x54f6, 0x3c79,
+    0x5501, 0x3c74, 0x550d, 0x3c70, 0x5519, 0x3c6c, 0x5525, 0x3c68,
+    0x5531, 0x3c64, 0x553d, 0x3c60, 0x5549, 0x3c5b, 0x5554, 0x3c57,
+    0x5560, 0x3c53, 0x556c, 0x3c4f, 0x5578, 0x3c4b, 0x5584, 0x3c46,
+    0x5590, 0x3c42, 0x559b, 0x3c3e, 0x55a7, 0x3c3a, 0x55b3, 0x3c36,
+    0x55bf, 0x3c31, 0x55cb, 0x3c2d, 0x55d7, 0x3c29, 0x55e2, 0x3c24,
+    0x55ee, 0x3c20, 0x55fa, 0x3c1c, 0x5606, 0x3c17, 0x5612, 0x3c13,
+    0x561d, 0x3c0f, 0x5629, 0x3c0a, 0x5635, 0x3c06, 0x5641, 0x3c02,
+    0x564c, 0x3bfd, 0x5658, 0x3bf9, 0x5664, 0x3bf5, 0x5670, 0x3bf0,
+    0x567c, 0x3bec, 0x5687, 0x3be7, 0x5693, 0x3be3, 0x569f, 0x3bde,
+    0x56ab, 0x3bda, 0x56b6, 0x3bd6, 0x56c2, 0x3bd1, 0x56ce, 0x3bcd,
+    0x56da, 0x3bc8, 0x56e5, 0x3bc4, 0x56f1, 0x3bbf, 0x56fd, 0x3bbb,
+    0x5709, 0x3bb6, 0x5714, 0x3bb2, 0x5720, 0x3bad, 0x572c, 0x3ba9,
+    0x5737, 0x3ba4, 0x5743, 0x3b9f, 0x574f, 0x3b9b, 0x575b, 0x3b96,
+    0x5766, 0x3b92, 0x5772, 0x3b8d, 0x577e, 0x3b88, 0x5789, 0x3b84,
+    0x5795, 0x3b7f, 0x57a1, 0x3b7b, 0x57ac, 0x3b76, 0x57b8, 0x3b71,
+    0x57c4, 0x3b6d, 0x57cf, 0x3b68, 0x57db, 0x3b63, 0x57e7, 0x3b5f,
+    0x57f2, 0x3b5a, 0x57fe, 0x3b55, 0x580a, 0x3b50, 0x5815, 0x3b4c,
+    0x5821, 0x3b47, 0x582d, 0x3b42, 0x5838, 0x3b3e, 0x5844, 0x3b39,
+    0x584f, 0x3b34, 0x585b, 0x3b2f, 0x5867, 0x3b2a, 0x5872, 0x3b26,
+    0x587e, 0x3b21, 0x5889, 0x3b1c, 0x5895, 0x3b17, 0x58a1, 0x3b12,
+    0x58ac, 0x3b0e, 0x58b8, 0x3b09, 0x58c3, 0x3b04, 0x58cf, 0x3aff,
+    0x58db, 0x3afa, 0x58e6, 0x3af5, 0x58f2, 0x3af0, 0x58fd, 0x3aeb,
+    0x5909, 0x3ae6, 0x5914, 0x3ae2, 0x5920, 0x3add, 0x592c, 0x3ad8,
+    0x5937, 0x3ad3, 0x5943, 0x3ace, 0x594e, 0x3ac9, 0x595a, 0x3ac4,
+    0x5965, 0x3abf, 0x5971, 0x3aba, 0x597c, 0x3ab5, 0x5988, 0x3ab0,
+    0x5993, 0x3aab, 0x599f, 0x3aa6, 0x59aa, 0x3aa1, 0x59b6, 0x3a9c,
+    0x59c1, 0x3a97, 0x59cd, 0x3a92, 0x59d8, 0x3a8d, 0x59e4, 0x3a88,
+    0x59ef, 0x3a82, 0x59fb, 0x3a7d, 0x5a06, 0x3a78, 0x5a12, 0x3a73,
+    0x5a1d, 0x3a6e, 0x5a29, 0x3a69, 0x5a34, 0x3a64, 0x5a40, 0x3a5f,
+    0x5a4b, 0x3a59, 0x5a57, 0x3a54, 0x5a62, 0x3a4f, 0x5a6e, 0x3a4a,
+    0x5a79, 0x3a45, 0x5a84, 0x3a3f, 0x5a90, 0x3a3a, 0x5a9b, 0x3a35,
+    0x5aa7, 0x3a30, 0x5ab2, 0x3a2b, 0x5abe, 0x3a25, 0x5ac9, 0x3a20,
+    0x5ad4, 0x3a1b, 0x5ae0, 0x3a16, 0x5aeb, 0x3a10, 0x5af7, 0x3a0b,
+    0x5b02, 0x3a06, 0x5b0d, 0x3a00, 0x5b19, 0x39fb, 0x5b24, 0x39f6,
+    0x5b30, 0x39f0, 0x5b3b, 0x39eb, 0x5b46, 0x39e6, 0x5b52, 0x39e0,
+    0x5b5d, 0x39db, 0x5b68, 0x39d6, 0x5b74, 0x39d0, 0x5b7f, 0x39cb,
+    0x5b8a, 0x39c5, 0x5b96, 0x39c0, 0x5ba1, 0x39bb, 0x5bac, 0x39b5,
+    0x5bb8, 0x39b0, 0x5bc3, 0x39aa, 0x5bce, 0x39a5, 0x5bda, 0x399f,
+    0x5be5, 0x399a, 0x5bf0, 0x3994, 0x5bfc, 0x398f, 0x5c07, 0x3989,
+    0x5c12, 0x3984, 0x5c1e, 0x397e, 0x5c29, 0x3979, 0x5c34, 0x3973,
+    0x5c3f, 0x396e, 0x5c4b, 0x3968, 0x5c56, 0x3963, 0x5c61, 0x395d,
+    0x5c6c, 0x3958, 0x5c78, 0x3952, 0x5c83, 0x394c, 0x5c8e, 0x3947,
+    0x5c99, 0x3941, 0x5ca5, 0x393b, 0x5cb0, 0x3936, 0x5cbb, 0x3930,
+    0x5cc6, 0x392b, 0x5cd2, 0x3925, 0x5cdd, 0x391f, 0x5ce8, 0x391a,
+    0x5cf3, 0x3914, 0x5cff, 0x390e, 0x5d0a, 0x3909, 0x5d15, 0x3903,
+    0x5d20, 0x38fd, 0x5d2b, 0x38f7, 0x5d36, 0x38f2, 0x5d42, 0x38ec,
+    0x5d4d, 0x38e6, 0x5d58, 0x38e0, 0x5d63, 0x38db, 0x5d6e, 0x38d5,
+    0x5d79, 0x38cf, 0x5d85, 0x38c9, 0x5d90, 0x38c3, 0x5d9b, 0x38be,
+    0x5da6, 0x38b8, 0x5db1, 0x38b2, 0x5dbc, 0x38ac, 0x5dc7, 0x38a6,
+    0x5dd3, 0x38a1, 0x5dde, 0x389b, 0x5de9, 0x3895, 0x5df4, 0x388f,
+    0x5dff, 0x3889, 0x5e0a, 0x3883, 0x5e15, 0x387d, 0x5e20, 0x3877,
+    0x5e2b, 0x3871, 0x5e36, 0x386b, 0x5e42, 0x3866, 0x5e4d, 0x3860,
+    0x5e58, 0x385a, 0x5e63, 0x3854, 0x5e6e, 0x384e, 0x5e79, 0x3848,
+    0x5e84, 0x3842, 0x5e8f, 0x383c, 0x5e9a, 0x3836, 0x5ea5, 0x3830,
+    0x5eb0, 0x382a, 0x5ebb, 0x3824, 0x5ec6, 0x381e, 0x5ed1, 0x3818,
+    0x5edc, 0x3812, 0x5ee7, 0x380b, 0x5ef2, 0x3805, 0x5efd, 0x37ff,
+    0x5f08, 0x37f9, 0x5f13, 0x37f3, 0x5f1e, 0x37ed, 0x5f29, 0x37e7,
+    0x5f34, 0x37e1, 0x5f3f, 0x37db, 0x5f4a, 0x37d5, 0x5f55, 0x37ce,
+    0x5f60, 0x37c8, 0x5f6b, 0x37c2, 0x5f76, 0x37bc, 0x5f81, 0x37b6,
+    0x5f8c, 0x37b0, 0x5f97, 0x37a9, 0x5fa2, 0x37a3, 0x5fac, 0x379d,
+    0x5fb7, 0x3797, 0x5fc2, 0x3790, 0x5fcd, 0x378a, 0x5fd8, 0x3784,
+    0x5fe3, 0x377e, 0x5fee, 0x3777, 0x5ff9, 0x3771, 0x6004, 0x376b,
+    0x600f, 0x3765, 0x6019, 0x375e, 0x6024, 0x3758, 0x602f, 0x3752,
+    0x603a, 0x374b, 0x6045, 0x3745, 0x6050, 0x373f, 0x605b, 0x3738,
+    0x6065, 0x3732, 0x6070, 0x372c, 0x607b, 0x3725, 0x6086, 0x371f,
+    0x6091, 0x3718, 0x609b, 0x3712, 0x60a6, 0x370c, 0x60b1, 0x3705,
+    0x60bc, 0x36ff, 0x60c7, 0x36f8, 0x60d1, 0x36f2, 0x60dc, 0x36eb,
+    0x60e7, 0x36e5, 0x60f2, 0x36df, 0x60fd, 0x36d8, 0x6107, 0x36d2,
+    0x6112, 0x36cb, 0x611d, 0x36c5, 0x6128, 0x36be, 0x6132, 0x36b8,
+    0x613d, 0x36b1, 0x6148, 0x36ab, 0x6153, 0x36a4, 0x615d, 0x369d,
+    0x6168, 0x3697, 0x6173, 0x3690, 0x617d, 0x368a, 0x6188, 0x3683,
+    0x6193, 0x367d, 0x619e, 0x3676, 0x61a8, 0x366f, 0x61b3, 0x3669,
+    0x61be, 0x3662, 0x61c8, 0x365c, 0x61d3, 0x3655, 0x61de, 0x364e,
+    0x61e8, 0x3648, 0x61f3, 0x3641, 0x61fe, 0x363a, 0x6208, 0x3634,
+    0x6213, 0x362d, 0x621e, 0x3626, 0x6228, 0x3620, 0x6233, 0x3619,
+    0x623d, 0x3612, 0x6248, 0x360b, 0x6253, 0x3605, 0x625d, 0x35fe,
+    0x6268, 0x35f7, 0x6272, 0x35f0, 0x627d, 0x35ea, 0x6288, 0x35e3,
+    0x6292, 0x35dc, 0x629d, 0x35d5, 0x62a7, 0x35ce, 0x62b2, 0x35c8,
+    0x62bc, 0x35c1, 0x62c7, 0x35ba, 0x62d2, 0x35b3, 0x62dc, 0x35ac,
+    0x62e7, 0x35a5, 0x62f1, 0x359f, 0x62fc, 0x3598, 0x6306, 0x3591,
+    0x6311, 0x358a, 0x631b, 0x3583, 0x6326, 0x357c, 0x6330, 0x3575,
+    0x633b, 0x356e, 0x6345, 0x3567, 0x6350, 0x3561, 0x635a, 0x355a,
+    0x6365, 0x3553, 0x636f, 0x354c, 0x637a, 0x3545, 0x6384, 0x353e,
+    0x638e, 0x3537, 0x6399, 0x3530, 0x63a3, 0x3529, 0x63ae, 0x3522,
+    0x63b8, 0x351b, 0x63c3, 0x3514, 0x63cd, 0x350d, 0x63d7, 0x3506,
+    0x63e2, 0x34ff, 0x63ec, 0x34f8, 0x63f7, 0x34f1, 0x6401, 0x34ea,
+    0x640b, 0x34e2, 0x6416, 0x34db, 0x6420, 0x34d4, 0x642b, 0x34cd,
+    0x6435, 0x34c6, 0x643f, 0x34bf, 0x644a, 0x34b8, 0x6454, 0x34b1,
+    0x645e, 0x34aa, 0x6469, 0x34a2, 0x6473, 0x349b, 0x647d, 0x3494,
+    0x6488, 0x348d, 0x6492, 0x3486, 0x649c, 0x347f, 0x64a7, 0x3477,
+    0x64b1, 0x3470, 0x64bb, 0x3469, 0x64c5, 0x3462, 0x64d0, 0x345b,
+    0x64da, 0x3453, 0x64e4, 0x344c, 0x64ef, 0x3445, 0x64f9, 0x343e,
+    0x6503, 0x3436, 0x650d, 0x342f, 0x6518, 0x3428, 0x6522, 0x3420,
+    0x652c, 0x3419, 0x6536, 0x3412, 0x6541, 0x340b, 0x654b, 0x3403,
+    0x6555, 0x33fc, 0x655f, 0x33f5, 0x6569, 0x33ed, 0x6574, 0x33e6,
+    0x657e, 0x33df, 0x6588, 0x33d7, 0x6592, 0x33d0, 0x659c, 0x33c8,
+    0x65a6, 0x33c1, 0x65b1, 0x33ba, 0x65bb, 0x33b2, 0x65c5, 0x33ab,
+    0x65cf, 0x33a3, 0x65d9, 0x339c, 0x65e3, 0x3395, 0x65ed, 0x338d,
+    0x65f8, 0x3386, 0x6602, 0x337e, 0x660c, 0x3377, 0x6616, 0x336f,
+    0x6620, 0x3368, 0x662a, 0x3360, 0x6634, 0x3359, 0x663e, 0x3351,
+    0x6648, 0x334a, 0x6652, 0x3342, 0x665c, 0x333b, 0x6666, 0x3333,
+    0x6671, 0x332c, 0x667b, 0x3324, 0x6685, 0x331d, 0x668f, 0x3315,
+    0x6699, 0x330d, 0x66a3, 0x3306, 0x66ad, 0x32fe, 0x66b7, 0x32f7,
+    0x66c1, 0x32ef, 0x66cb, 0x32e7, 0x66d5, 0x32e0, 0x66df, 0x32d8,
+    0x66e9, 0x32d0, 0x66f3, 0x32c9, 0x66fd, 0x32c1, 0x6707, 0x32ba,
+    0x6711, 0x32b2, 0x671a, 0x32aa, 0x6724, 0x32a3, 0x672e, 0x329b,
+    0x6738, 0x3293, 0x6742, 0x328b, 0x674c, 0x3284, 0x6756, 0x327c,
+    0x6760, 0x3274, 0x676a, 0x326d, 0x6774, 0x3265, 0x677e, 0x325d,
+    0x6788, 0x3255, 0x6791, 0x324e, 0x679b, 0x3246, 0x67a5, 0x323e,
+    0x67af, 0x3236, 0x67b9, 0x322e, 0x67c3, 0x3227, 0x67cd, 0x321f,
+    0x67d6, 0x3217, 0x67e0, 0x320f, 0x67ea, 0x3207, 0x67f4, 0x31ff,
+    0x67fe, 0x31f8, 0x6808, 0x31f0, 0x6811, 0x31e8, 0x681b, 0x31e0,
+    0x6825, 0x31d8, 0x682f, 0x31d0, 0x6838, 0x31c8, 0x6842, 0x31c0,
+    0x684c, 0x31b9, 0x6856, 0x31b1, 0x6860, 0x31a9, 0x6869, 0x31a1,
+    0x6873, 0x3199, 0x687d, 0x3191, 0x6886, 0x3189, 0x6890, 0x3181,
+    0x689a, 0x3179, 0x68a4, 0x3171, 0x68ad, 0x3169, 0x68b7, 0x3161,
+    0x68c1, 0x3159, 0x68ca, 0x3151, 0x68d4, 0x3149, 0x68de, 0x3141,
+    0x68e7, 0x3139, 0x68f1, 0x3131, 0x68fb, 0x3129, 0x6904, 0x3121,
+    0x690e, 0x3119, 0x6918, 0x3111, 0x6921, 0x3109, 0x692b, 0x3101,
+    0x6935, 0x30f9, 0x693e, 0x30f0, 0x6948, 0x30e8, 0x6951, 0x30e0,
+    0x695b, 0x30d8, 0x6965, 0x30d0, 0x696e, 0x30c8, 0x6978, 0x30c0,
+    0x6981, 0x30b8, 0x698b, 0x30af, 0x6994, 0x30a7, 0x699e, 0x309f,
+    0x69a7, 0x3097, 0x69b1, 0x308f, 0x69bb, 0x3087, 0x69c4, 0x307e,
+    0x69ce, 0x3076, 0x69d7, 0x306e, 0x69e1, 0x3066, 0x69ea, 0x305d,
+    0x69f4, 0x3055, 0x69fd, 0x304d, 0x6a07, 0x3045, 0x6a10, 0x303c,
+    0x6a1a, 0x3034, 0x6a23, 0x302c, 0x6a2c, 0x3024, 0x6a36, 0x301b,
+    0x6a3f, 0x3013, 0x6a49, 0x300b, 0x6a52, 0x3002, 0x6a5c, 0x2ffa,
+    0x6a65, 0x2ff2, 0x6a6e, 0x2fea, 0x6a78, 0x2fe1, 0x6a81, 0x2fd9,
+    0x6a8b, 0x2fd0, 0x6a94, 0x2fc8, 0x6a9d, 0x2fc0, 0x6aa7, 0x2fb7,
+    0x6ab0, 0x2faf, 0x6ab9, 0x2fa7, 0x6ac3, 0x2f9e, 0x6acc, 0x2f96,
+    0x6ad6, 0x2f8d, 0x6adf, 0x2f85, 0x6ae8, 0x2f7d, 0x6af2, 0x2f74,
+    0x6afb, 0x2f6c, 0x6b04, 0x2f63, 0x6b0d, 0x2f5b, 0x6b17, 0x2f52,
+    0x6b20, 0x2f4a, 0x6b29, 0x2f41, 0x6b33, 0x2f39, 0x6b3c, 0x2f30,
+    0x6b45, 0x2f28, 0x6b4e, 0x2f20, 0x6b58, 0x2f17, 0x6b61, 0x2f0e,
+    0x6b6a, 0x2f06, 0x6b73, 0x2efd, 0x6b7d, 0x2ef5, 0x6b86, 0x2eec,
+    0x6b8f, 0x2ee4, 0x6b98, 0x2edb, 0x6ba1, 0x2ed3, 0x6bab, 0x2eca,
+    0x6bb4, 0x2ec2, 0x6bbd, 0x2eb9, 0x6bc6, 0x2eb0, 0x6bcf, 0x2ea8,
+    0x6bd8, 0x2e9f, 0x6be2, 0x2e97, 0x6beb, 0x2e8e, 0x6bf4, 0x2e85,
+    0x6bfd, 0x2e7d, 0x6c06, 0x2e74, 0x6c0f, 0x2e6b, 0x6c18, 0x2e63,
+    0x6c21, 0x2e5a, 0x6c2b, 0x2e51, 0x6c34, 0x2e49, 0x6c3d, 0x2e40,
+    0x6c46, 0x2e37, 0x6c4f, 0x2e2f, 0x6c58, 0x2e26, 0x6c61, 0x2e1d,
+    0x6c6a, 0x2e15, 0x6c73, 0x2e0c, 0x6c7c, 0x2e03, 0x6c85, 0x2dfa,
+    0x6c8e, 0x2df2, 0x6c97, 0x2de9, 0x6ca0, 0x2de0, 0x6ca9, 0x2dd7,
+    0x6cb2, 0x2dcf, 0x6cbb, 0x2dc6, 0x6cc4, 0x2dbd, 0x6ccd, 0x2db4,
+    0x6cd6, 0x2dab, 0x6cdf, 0x2da3, 0x6ce8, 0x2d9a, 0x6cf1, 0x2d91,
+    0x6cfa, 0x2d88, 0x6d03, 0x2d7f, 0x6d0c, 0x2d76, 0x6d15, 0x2d6e,
+    0x6d1e, 0x2d65, 0x6d27, 0x2d5c, 0x6d2f, 0x2d53, 0x6d38, 0x2d4a,
+    0x6d41, 0x2d41, 0x6d4a, 0x2d38, 0x6d53, 0x2d2f, 0x6d5c, 0x2d27,
+    0x6d65, 0x2d1e, 0x6d6e, 0x2d15, 0x6d76, 0x2d0c, 0x6d7f, 0x2d03,
+    0x6d88, 0x2cfa, 0x6d91, 0x2cf1, 0x6d9a, 0x2ce8, 0x6da3, 0x2cdf,
+    0x6dab, 0x2cd6, 0x6db4, 0x2ccd, 0x6dbd, 0x2cc4, 0x6dc6, 0x2cbb,
+    0x6dcf, 0x2cb2, 0x6dd7, 0x2ca9, 0x6de0, 0x2ca0, 0x6de9, 0x2c97,
+    0x6df2, 0x2c8e, 0x6dfa, 0x2c85, 0x6e03, 0x2c7c, 0x6e0c, 0x2c73,
+    0x6e15, 0x2c6a, 0x6e1d, 0x2c61, 0x6e26, 0x2c58, 0x6e2f, 0x2c4f,
+    0x6e37, 0x2c46, 0x6e40, 0x2c3d, 0x6e49, 0x2c34, 0x6e51, 0x2c2b,
+    0x6e5a, 0x2c21, 0x6e63, 0x2c18, 0x6e6b, 0x2c0f, 0x6e74, 0x2c06,
+    0x6e7d, 0x2bfd, 0x6e85, 0x2bf4, 0x6e8e, 0x2beb, 0x6e97, 0x2be2,
+    0x6e9f, 0x2bd8, 0x6ea8, 0x2bcf, 0x6eb0, 0x2bc6, 0x6eb9, 0x2bbd,
+    0x6ec2, 0x2bb4, 0x6eca, 0x2bab, 0x6ed3, 0x2ba1, 0x6edb, 0x2b98,
+    0x6ee4, 0x2b8f, 0x6eec, 0x2b86, 0x6ef5, 0x2b7d, 0x6efd, 0x2b73,
+    0x6f06, 0x2b6a, 0x6f0e, 0x2b61, 0x6f17, 0x2b58, 0x6f20, 0x2b4e,
+    0x6f28, 0x2b45, 0x6f30, 0x2b3c, 0x6f39, 0x2b33, 0x6f41, 0x2b29,
+    0x6f4a, 0x2b20, 0x6f52, 0x2b17, 0x6f5b, 0x2b0d, 0x6f63, 0x2b04,
+    0x6f6c, 0x2afb, 0x6f74, 0x2af2, 0x6f7d, 0x2ae8, 0x6f85, 0x2adf,
+    0x6f8d, 0x2ad6, 0x6f96, 0x2acc, 0x6f9e, 0x2ac3, 0x6fa7, 0x2ab9,
+    0x6faf, 0x2ab0, 0x6fb7, 0x2aa7, 0x6fc0, 0x2a9d, 0x6fc8, 0x2a94,
+    0x6fd0, 0x2a8b, 0x6fd9, 0x2a81, 0x6fe1, 0x2a78, 0x6fea, 0x2a6e,
+    0x6ff2, 0x2a65, 0x6ffa, 0x2a5c, 0x7002, 0x2a52, 0x700b, 0x2a49,
+    0x7013, 0x2a3f, 0x701b, 0x2a36, 0x7024, 0x2a2c, 0x702c, 0x2a23,
+    0x7034, 0x2a1a, 0x703c, 0x2a10, 0x7045, 0x2a07, 0x704d, 0x29fd,
+    0x7055, 0x29f4, 0x705d, 0x29ea, 0x7066, 0x29e1, 0x706e, 0x29d7,
+    0x7076, 0x29ce, 0x707e, 0x29c4, 0x7087, 0x29bb, 0x708f, 0x29b1,
+    0x7097, 0x29a7, 0x709f, 0x299e, 0x70a7, 0x2994, 0x70af, 0x298b,
+    0x70b8, 0x2981, 0x70c0, 0x2978, 0x70c8, 0x296e, 0x70d0, 0x2965,
+    0x70d8, 0x295b, 0x70e0, 0x2951, 0x70e8, 0x2948, 0x70f0, 0x293e,
+    0x70f9, 0x2935, 0x7101, 0x292b, 0x7109, 0x2921, 0x7111, 0x2918,
+    0x7119, 0x290e, 0x7121, 0x2904, 0x7129, 0x28fb, 0x7131, 0x28f1,
+    0x7139, 0x28e7, 0x7141, 0x28de, 0x7149, 0x28d4, 0x7151, 0x28ca,
+    0x7159, 0x28c1, 0x7161, 0x28b7, 0x7169, 0x28ad, 0x7171, 0x28a4,
+    0x7179, 0x289a, 0x7181, 0x2890, 0x7189, 0x2886, 0x7191, 0x287d,
+    0x7199, 0x2873, 0x71a1, 0x2869, 0x71a9, 0x2860, 0x71b1, 0x2856,
+    0x71b9, 0x284c, 0x71c0, 0x2842, 0x71c8, 0x2838, 0x71d0, 0x282f,
+    0x71d8, 0x2825, 0x71e0, 0x281b, 0x71e8, 0x2811, 0x71f0, 0x2808,
+    0x71f8, 0x27fe, 0x71ff, 0x27f4, 0x7207, 0x27ea, 0x720f, 0x27e0,
+    0x7217, 0x27d6, 0x721f, 0x27cd, 0x7227, 0x27c3, 0x722e, 0x27b9,
+    0x7236, 0x27af, 0x723e, 0x27a5, 0x7246, 0x279b, 0x724e, 0x2791,
+    0x7255, 0x2788, 0x725d, 0x277e, 0x7265, 0x2774, 0x726d, 0x276a,
+    0x7274, 0x2760, 0x727c, 0x2756, 0x7284, 0x274c, 0x728b, 0x2742,
+    0x7293, 0x2738, 0x729b, 0x272e, 0x72a3, 0x2724, 0x72aa, 0x271a,
+    0x72b2, 0x2711, 0x72ba, 0x2707, 0x72c1, 0x26fd, 0x72c9, 0x26f3,
+    0x72d0, 0x26e9, 0x72d8, 0x26df, 0x72e0, 0x26d5, 0x72e7, 0x26cb,
+    0x72ef, 0x26c1, 0x72f7, 0x26b7, 0x72fe, 0x26ad, 0x7306, 0x26a3,
+    0x730d, 0x2699, 0x7315, 0x268f, 0x731d, 0x2685, 0x7324, 0x267b,
+    0x732c, 0x2671, 0x7333, 0x2666, 0x733b, 0x265c, 0x7342, 0x2652,
+    0x734a, 0x2648, 0x7351, 0x263e, 0x7359, 0x2634, 0x7360, 0x262a,
+    0x7368, 0x2620, 0x736f, 0x2616, 0x7377, 0x260c, 0x737e, 0x2602,
+    0x7386, 0x25f8, 0x738d, 0x25ed, 0x7395, 0x25e3, 0x739c, 0x25d9,
+    0x73a3, 0x25cf, 0x73ab, 0x25c5, 0x73b2, 0x25bb, 0x73ba, 0x25b1,
+    0x73c1, 0x25a6, 0x73c8, 0x259c, 0x73d0, 0x2592, 0x73d7, 0x2588,
+    0x73df, 0x257e, 0x73e6, 0x2574, 0x73ed, 0x2569, 0x73f5, 0x255f,
+    0x73fc, 0x2555, 0x7403, 0x254b, 0x740b, 0x2541, 0x7412, 0x2536,
+    0x7419, 0x252c, 0x7420, 0x2522, 0x7428, 0x2518, 0x742f, 0x250d,
+    0x7436, 0x2503, 0x743e, 0x24f9, 0x7445, 0x24ef, 0x744c, 0x24e4,
+    0x7453, 0x24da, 0x745b, 0x24d0, 0x7462, 0x24c5, 0x7469, 0x24bb,
+    0x7470, 0x24b1, 0x7477, 0x24a7, 0x747f, 0x249c, 0x7486, 0x2492,
+    0x748d, 0x2488, 0x7494, 0x247d, 0x749b, 0x2473, 0x74a2, 0x2469,
+    0x74aa, 0x245e, 0x74b1, 0x2454, 0x74b8, 0x244a, 0x74bf, 0x243f,
+    0x74c6, 0x2435, 0x74cd, 0x242b, 0x74d4, 0x2420, 0x74db, 0x2416,
+    0x74e2, 0x240b, 0x74ea, 0x2401, 0x74f1, 0x23f7, 0x74f8, 0x23ec,
+    0x74ff, 0x23e2, 0x7506, 0x23d7, 0x750d, 0x23cd, 0x7514, 0x23c3,
+    0x751b, 0x23b8, 0x7522, 0x23ae, 0x7529, 0x23a3, 0x7530, 0x2399,
+    0x7537, 0x238e, 0x753e, 0x2384, 0x7545, 0x237a, 0x754c, 0x236f,
+    0x7553, 0x2365, 0x755a, 0x235a, 0x7561, 0x2350, 0x7567, 0x2345,
+    0x756e, 0x233b, 0x7575, 0x2330, 0x757c, 0x2326, 0x7583, 0x231b,
+    0x758a, 0x2311, 0x7591, 0x2306, 0x7598, 0x22fc, 0x759f, 0x22f1,
+    0x75a5, 0x22e7, 0x75ac, 0x22dc, 0x75b3, 0x22d2, 0x75ba, 0x22c7,
+    0x75c1, 0x22bc, 0x75c8, 0x22b2, 0x75ce, 0x22a7, 0x75d5, 0x229d,
+    0x75dc, 0x2292, 0x75e3, 0x2288, 0x75ea, 0x227d, 0x75f0, 0x2272,
+    0x75f7, 0x2268, 0x75fe, 0x225d, 0x7605, 0x2253, 0x760b, 0x2248,
+    0x7612, 0x223d, 0x7619, 0x2233, 0x7620, 0x2228, 0x7626, 0x221e,
+    0x762d, 0x2213, 0x7634, 0x2208, 0x763a, 0x21fe, 0x7641, 0x21f3,
+    0x7648, 0x21e8, 0x764e, 0x21de, 0x7655, 0x21d3, 0x765c, 0x21c8,
+    0x7662, 0x21be, 0x7669, 0x21b3, 0x766f, 0x21a8, 0x7676, 0x219e,
+    0x767d, 0x2193, 0x7683, 0x2188, 0x768a, 0x217d, 0x7690, 0x2173,
+    0x7697, 0x2168, 0x769d, 0x215d, 0x76a4, 0x2153, 0x76ab, 0x2148,
+    0x76b1, 0x213d, 0x76b8, 0x2132, 0x76be, 0x2128, 0x76c5, 0x211d,
+    0x76cb, 0x2112, 0x76d2, 0x2107, 0x76d8, 0x20fd, 0x76df, 0x20f2,
+    0x76e5, 0x20e7, 0x76eb, 0x20dc, 0x76f2, 0x20d1, 0x76f8, 0x20c7,
+    0x76ff, 0x20bc, 0x7705, 0x20b1, 0x770c, 0x20a6, 0x7712, 0x209b,
+    0x7718, 0x2091, 0x771f, 0x2086, 0x7725, 0x207b, 0x772c, 0x2070,
+    0x7732, 0x2065, 0x7738, 0x205b, 0x773f, 0x2050, 0x7745, 0x2045,
+    0x774b, 0x203a, 0x7752, 0x202f, 0x7758, 0x2024, 0x775e, 0x2019,
+    0x7765, 0x200f, 0x776b, 0x2004, 0x7771, 0x1ff9, 0x7777, 0x1fee,
+    0x777e, 0x1fe3, 0x7784, 0x1fd8, 0x778a, 0x1fcd, 0x7790, 0x1fc2,
+    0x7797, 0x1fb7, 0x779d, 0x1fac, 0x77a3, 0x1fa2, 0x77a9, 0x1f97,
+    0x77b0, 0x1f8c, 0x77b6, 0x1f81, 0x77bc, 0x1f76, 0x77c2, 0x1f6b,
+    0x77c8, 0x1f60, 0x77ce, 0x1f55, 0x77d5, 0x1f4a, 0x77db, 0x1f3f,
+    0x77e1, 0x1f34, 0x77e7, 0x1f29, 0x77ed, 0x1f1e, 0x77f3, 0x1f13,
+    0x77f9, 0x1f08, 0x77ff, 0x1efd, 0x7805, 0x1ef2, 0x780b, 0x1ee7,
+    0x7812, 0x1edc, 0x7818, 0x1ed1, 0x781e, 0x1ec6, 0x7824, 0x1ebb,
+    0x782a, 0x1eb0, 0x7830, 0x1ea5, 0x7836, 0x1e9a, 0x783c, 0x1e8f,
+    0x7842, 0x1e84, 0x7848, 0x1e79, 0x784e, 0x1e6e, 0x7854, 0x1e63,
+    0x785a, 0x1e58, 0x7860, 0x1e4d, 0x7866, 0x1e42, 0x786b, 0x1e36,
+    0x7871, 0x1e2b, 0x7877, 0x1e20, 0x787d, 0x1e15, 0x7883, 0x1e0a,
+    0x7889, 0x1dff, 0x788f, 0x1df4, 0x7895, 0x1de9, 0x789b, 0x1dde,
+    0x78a1, 0x1dd3, 0x78a6, 0x1dc7, 0x78ac, 0x1dbc, 0x78b2, 0x1db1,
+    0x78b8, 0x1da6, 0x78be, 0x1d9b, 0x78c3, 0x1d90, 0x78c9, 0x1d85,
+    0x78cf, 0x1d79, 0x78d5, 0x1d6e, 0x78db, 0x1d63, 0x78e0, 0x1d58,
+    0x78e6, 0x1d4d, 0x78ec, 0x1d42, 0x78f2, 0x1d36, 0x78f7, 0x1d2b,
+    0x78fd, 0x1d20, 0x7903, 0x1d15, 0x7909, 0x1d0a, 0x790e, 0x1cff,
+    0x7914, 0x1cf3, 0x791a, 0x1ce8, 0x791f, 0x1cdd, 0x7925, 0x1cd2,
+    0x792b, 0x1cc6, 0x7930, 0x1cbb, 0x7936, 0x1cb0, 0x793b, 0x1ca5,
+    0x7941, 0x1c99, 0x7947, 0x1c8e, 0x794c, 0x1c83, 0x7952, 0x1c78,
+    0x7958, 0x1c6c, 0x795d, 0x1c61, 0x7963, 0x1c56, 0x7968, 0x1c4b,
+    0x796e, 0x1c3f, 0x7973, 0x1c34, 0x7979, 0x1c29, 0x797e, 0x1c1e,
+    0x7984, 0x1c12, 0x7989, 0x1c07, 0x798f, 0x1bfc, 0x7994, 0x1bf0,
+    0x799a, 0x1be5, 0x799f, 0x1bda, 0x79a5, 0x1bce, 0x79aa, 0x1bc3,
+    0x79b0, 0x1bb8, 0x79b5, 0x1bac, 0x79bb, 0x1ba1, 0x79c0, 0x1b96,
+    0x79c5, 0x1b8a, 0x79cb, 0x1b7f, 0x79d0, 0x1b74, 0x79d6, 0x1b68,
+    0x79db, 0x1b5d, 0x79e0, 0x1b52, 0x79e6, 0x1b46, 0x79eb, 0x1b3b,
+    0x79f0, 0x1b30, 0x79f6, 0x1b24, 0x79fb, 0x1b19, 0x7a00, 0x1b0d,
+    0x7a06, 0x1b02, 0x7a0b, 0x1af7, 0x7a10, 0x1aeb, 0x7a16, 0x1ae0,
+    0x7a1b, 0x1ad4, 0x7a20, 0x1ac9, 0x7a25, 0x1abe, 0x7a2b, 0x1ab2,
+    0x7a30, 0x1aa7, 0x7a35, 0x1a9b, 0x7a3a, 0x1a90, 0x7a3f, 0x1a84,
+    0x7a45, 0x1a79, 0x7a4a, 0x1a6e, 0x7a4f, 0x1a62, 0x7a54, 0x1a57,
+    0x7a59, 0x1a4b, 0x7a5f, 0x1a40, 0x7a64, 0x1a34, 0x7a69, 0x1a29,
+    0x7a6e, 0x1a1d, 0x7a73, 0x1a12, 0x7a78, 0x1a06, 0x7a7d, 0x19fb,
+    0x7a82, 0x19ef, 0x7a88, 0x19e4, 0x7a8d, 0x19d8, 0x7a92, 0x19cd,
+    0x7a97, 0x19c1, 0x7a9c, 0x19b6, 0x7aa1, 0x19aa, 0x7aa6, 0x199f,
+    0x7aab, 0x1993, 0x7ab0, 0x1988, 0x7ab5, 0x197c, 0x7aba, 0x1971,
+    0x7abf, 0x1965, 0x7ac4, 0x195a, 0x7ac9, 0x194e, 0x7ace, 0x1943,
+    0x7ad3, 0x1937, 0x7ad8, 0x192c, 0x7add, 0x1920, 0x7ae2, 0x1914,
+    0x7ae6, 0x1909, 0x7aeb, 0x18fd, 0x7af0, 0x18f2, 0x7af5, 0x18e6,
+    0x7afa, 0x18db, 0x7aff, 0x18cf, 0x7b04, 0x18c3, 0x7b09, 0x18b8,
+    0x7b0e, 0x18ac, 0x7b12, 0x18a1, 0x7b17, 0x1895, 0x7b1c, 0x1889,
+    0x7b21, 0x187e, 0x7b26, 0x1872, 0x7b2a, 0x1867, 0x7b2f, 0x185b,
+    0x7b34, 0x184f, 0x7b39, 0x1844, 0x7b3e, 0x1838, 0x7b42, 0x182d,
+    0x7b47, 0x1821, 0x7b4c, 0x1815, 0x7b50, 0x180a, 0x7b55, 0x17fe,
+    0x7b5a, 0x17f2, 0x7b5f, 0x17e7, 0x7b63, 0x17db, 0x7b68, 0x17cf,
+    0x7b6d, 0x17c4, 0x7b71, 0x17b8, 0x7b76, 0x17ac, 0x7b7b, 0x17a1,
+    0x7b7f, 0x1795, 0x7b84, 0x1789, 0x7b88, 0x177e, 0x7b8d, 0x1772,
+    0x7b92, 0x1766, 0x7b96, 0x175b, 0x7b9b, 0x174f, 0x7b9f, 0x1743,
+    0x7ba4, 0x1737, 0x7ba9, 0x172c, 0x7bad, 0x1720, 0x7bb2, 0x1714,
+    0x7bb6, 0x1709, 0x7bbb, 0x16fd, 0x7bbf, 0x16f1, 0x7bc4, 0x16e5,
+    0x7bc8, 0x16da, 0x7bcd, 0x16ce, 0x7bd1, 0x16c2, 0x7bd6, 0x16b6,
+    0x7bda, 0x16ab, 0x7bde, 0x169f, 0x7be3, 0x1693, 0x7be7, 0x1687,
+    0x7bec, 0x167c, 0x7bf0, 0x1670, 0x7bf5, 0x1664, 0x7bf9, 0x1658,
+    0x7bfd, 0x164c, 0x7c02, 0x1641, 0x7c06, 0x1635, 0x7c0a, 0x1629,
+    0x7c0f, 0x161d, 0x7c13, 0x1612, 0x7c17, 0x1606, 0x7c1c, 0x15fa,
+    0x7c20, 0x15ee, 0x7c24, 0x15e2, 0x7c29, 0x15d7, 0x7c2d, 0x15cb,
+    0x7c31, 0x15bf, 0x7c36, 0x15b3, 0x7c3a, 0x15a7, 0x7c3e, 0x159b,
+    0x7c42, 0x1590, 0x7c46, 0x1584, 0x7c4b, 0x1578, 0x7c4f, 0x156c,
+    0x7c53, 0x1560, 0x7c57, 0x1554, 0x7c5b, 0x1549, 0x7c60, 0x153d,
+    0x7c64, 0x1531, 0x7c68, 0x1525, 0x7c6c, 0x1519, 0x7c70, 0x150d,
+    0x7c74, 0x1501, 0x7c79, 0x14f6, 0x7c7d, 0x14ea, 0x7c81, 0x14de,
+    0x7c85, 0x14d2, 0x7c89, 0x14c6, 0x7c8d, 0x14ba, 0x7c91, 0x14ae,
+    0x7c95, 0x14a2, 0x7c99, 0x1496, 0x7c9d, 0x148b, 0x7ca1, 0x147f,
+    0x7ca5, 0x1473, 0x7ca9, 0x1467, 0x7cad, 0x145b, 0x7cb1, 0x144f,
+    0x7cb5, 0x1443, 0x7cb9, 0x1437, 0x7cbd, 0x142b, 0x7cc1, 0x141f,
+    0x7cc5, 0x1413, 0x7cc9, 0x1407, 0x7ccd, 0x13fb, 0x7cd1, 0x13f0,
+    0x7cd5, 0x13e4, 0x7cd9, 0x13d8, 0x7cdd, 0x13cc, 0x7ce0, 0x13c0,
+    0x7ce4, 0x13b4, 0x7ce8, 0x13a8, 0x7cec, 0x139c, 0x7cf0, 0x1390,
+    0x7cf4, 0x1384, 0x7cf8, 0x1378, 0x7cfb, 0x136c, 0x7cff, 0x1360,
+    0x7d03, 0x1354, 0x7d07, 0x1348, 0x7d0b, 0x133c, 0x7d0e, 0x1330,
+    0x7d12, 0x1324, 0x7d16, 0x1318, 0x7d1a, 0x130c, 0x7d1d, 0x1300,
+    0x7d21, 0x12f4, 0x7d25, 0x12e8, 0x7d28, 0x12dc, 0x7d2c, 0x12d0,
+    0x7d30, 0x12c4, 0x7d34, 0x12b8, 0x7d37, 0x12ac, 0x7d3b, 0x12a0,
+    0x7d3f, 0x1294, 0x7d42, 0x1288, 0x7d46, 0x127c, 0x7d49, 0x1270,
+    0x7d4d, 0x1264, 0x7d51, 0x1258, 0x7d54, 0x124c, 0x7d58, 0x1240,
+    0x7d5b, 0x1234, 0x7d5f, 0x1228, 0x7d63, 0x121c, 0x7d66, 0x1210,
+    0x7d6a, 0x1204, 0x7d6d, 0x11f7, 0x7d71, 0x11eb, 0x7d74, 0x11df,
+    0x7d78, 0x11d3, 0x7d7b, 0x11c7, 0x7d7f, 0x11bb, 0x7d82, 0x11af,
+    0x7d86, 0x11a3, 0x7d89, 0x1197, 0x7d8d, 0x118b, 0x7d90, 0x117f,
+    0x7d93, 0x1173, 0x7d97, 0x1167, 0x7d9a, 0x115a, 0x7d9e, 0x114e,
+    0x7da1, 0x1142, 0x7da4, 0x1136, 0x7da8, 0x112a, 0x7dab, 0x111e,
+    0x7daf, 0x1112, 0x7db2, 0x1106, 0x7db5, 0x10fa, 0x7db9, 0x10ed,
+    0x7dbc, 0x10e1, 0x7dbf, 0x10d5, 0x7dc2, 0x10c9, 0x7dc6, 0x10bd,
+    0x7dc9, 0x10b1, 0x7dcc, 0x10a5, 0x7dd0, 0x1099, 0x7dd3, 0x108c,
+    0x7dd6, 0x1080, 0x7dd9, 0x1074, 0x7ddd, 0x1068, 0x7de0, 0x105c,
+    0x7de3, 0x1050, 0x7de6, 0x1044, 0x7de9, 0x1037, 0x7ded, 0x102b,
+    0x7df0, 0x101f, 0x7df3, 0x1013, 0x7df6, 0x1007, 0x7df9, 0xffb,
+    0x7dfc, 0xfee, 0x7dff, 0xfe2, 0x7e03, 0xfd6, 0x7e06, 0xfca,
+    0x7e09, 0xfbe, 0x7e0c, 0xfb2, 0x7e0f, 0xfa5, 0x7e12, 0xf99,
+    0x7e15, 0xf8d, 0x7e18, 0xf81, 0x7e1b, 0xf75, 0x7e1e, 0xf68,
+    0x7e21, 0xf5c, 0x7e24, 0xf50, 0x7e27, 0xf44, 0x7e2a, 0xf38,
+    0x7e2d, 0xf2b, 0x7e30, 0xf1f, 0x7e33, 0xf13, 0x7e36, 0xf07,
+    0x7e39, 0xefb, 0x7e3c, 0xeee, 0x7e3f, 0xee2, 0x7e42, 0xed6,
+    0x7e45, 0xeca, 0x7e48, 0xebd, 0x7e4a, 0xeb1, 0x7e4d, 0xea5,
+    0x7e50, 0xe99, 0x7e53, 0xe8c, 0x7e56, 0xe80, 0x7e59, 0xe74,
+    0x7e5c, 0xe68, 0x7e5e, 0xe5c, 0x7e61, 0xe4f, 0x7e64, 0xe43,
+    0x7e67, 0xe37, 0x7e6a, 0xe2b, 0x7e6c, 0xe1e, 0x7e6f, 0xe12,
+    0x7e72, 0xe06, 0x7e75, 0xdf9, 0x7e77, 0xded, 0x7e7a, 0xde1,
+    0x7e7d, 0xdd5, 0x7e80, 0xdc8, 0x7e82, 0xdbc, 0x7e85, 0xdb0,
+    0x7e88, 0xda4, 0x7e8a, 0xd97, 0x7e8d, 0xd8b, 0x7e90, 0xd7f,
+    0x7e92, 0xd72, 0x7e95, 0xd66, 0x7e98, 0xd5a, 0x7e9a, 0xd4e,
+    0x7e9d, 0xd41, 0x7e9f, 0xd35, 0x7ea2, 0xd29, 0x7ea5, 0xd1c,
+    0x7ea7, 0xd10, 0x7eaa, 0xd04, 0x7eac, 0xcf8, 0x7eaf, 0xceb,
+    0x7eb1, 0xcdf, 0x7eb4, 0xcd3, 0x7eb6, 0xcc6, 0x7eb9, 0xcba,
+    0x7ebb, 0xcae, 0x7ebe, 0xca1, 0x7ec0, 0xc95, 0x7ec3, 0xc89,
+    0x7ec5, 0xc7c, 0x7ec8, 0xc70, 0x7eca, 0xc64, 0x7ecc, 0xc57,
+    0x7ecf, 0xc4b, 0x7ed1, 0xc3f, 0x7ed4, 0xc32, 0x7ed6, 0xc26,
+    0x7ed8, 0xc1a, 0x7edb, 0xc0d, 0x7edd, 0xc01, 0x7ee0, 0xbf5,
+    0x7ee2, 0xbe8, 0x7ee4, 0xbdc, 0x7ee7, 0xbd0, 0x7ee9, 0xbc3,
+    0x7eeb, 0xbb7, 0x7eed, 0xbab, 0x7ef0, 0xb9e, 0x7ef2, 0xb92,
+    0x7ef4, 0xb85, 0x7ef7, 0xb79, 0x7ef9, 0xb6d, 0x7efb, 0xb60,
+    0x7efd, 0xb54, 0x7f00, 0xb48, 0x7f02, 0xb3b, 0x7f04, 0xb2f,
+    0x7f06, 0xb23, 0x7f08, 0xb16, 0x7f0a, 0xb0a, 0x7f0d, 0xafd,
+    0x7f0f, 0xaf1, 0x7f11, 0xae5, 0x7f13, 0xad8, 0x7f15, 0xacc,
+    0x7f17, 0xac0, 0x7f19, 0xab3, 0x7f1c, 0xaa7, 0x7f1e, 0xa9a,
+    0x7f20, 0xa8e, 0x7f22, 0xa82, 0x7f24, 0xa75, 0x7f26, 0xa69,
+    0x7f28, 0xa5c, 0x7f2a, 0xa50, 0x7f2c, 0xa44, 0x7f2e, 0xa37,
+    0x7f30, 0xa2b, 0x7f32, 0xa1e, 0x7f34, 0xa12, 0x7f36, 0xa06,
+    0x7f38, 0x9f9, 0x7f3a, 0x9ed, 0x7f3c, 0x9e0, 0x7f3e, 0x9d4,
+    0x7f40, 0x9c7, 0x7f42, 0x9bb, 0x7f43, 0x9af, 0x7f45, 0x9a2,
+    0x7f47, 0x996, 0x7f49, 0x989, 0x7f4b, 0x97d, 0x7f4d, 0x970,
+    0x7f4f, 0x964, 0x7f51, 0x958, 0x7f52, 0x94b, 0x7f54, 0x93f,
+    0x7f56, 0x932, 0x7f58, 0x926, 0x7f5a, 0x919, 0x7f5b, 0x90d,
+    0x7f5d, 0x901, 0x7f5f, 0x8f4, 0x7f61, 0x8e8, 0x7f62, 0x8db,
+    0x7f64, 0x8cf, 0x7f66, 0x8c2, 0x7f68, 0x8b6, 0x7f69, 0x8a9,
+    0x7f6b, 0x89d, 0x7f6d, 0x891, 0x7f6e, 0x884, 0x7f70, 0x878,
+    0x7f72, 0x86b, 0x7f73, 0x85f, 0x7f75, 0x852, 0x7f77, 0x846,
+    0x7f78, 0x839, 0x7f7a, 0x82d, 0x7f7b, 0x820, 0x7f7d, 0x814,
+    0x7f7f, 0x807, 0x7f80, 0x7fb, 0x7f82, 0x7ef, 0x7f83, 0x7e2,
+    0x7f85, 0x7d6, 0x7f86, 0x7c9, 0x7f88, 0x7bd, 0x7f89, 0x7b0,
+    0x7f8b, 0x7a4, 0x7f8c, 0x797, 0x7f8e, 0x78b, 0x7f8f, 0x77e,
+    0x7f91, 0x772, 0x7f92, 0x765, 0x7f94, 0x759, 0x7f95, 0x74c,
+    0x7f97, 0x740, 0x7f98, 0x733, 0x7f99, 0x727, 0x7f9b, 0x71a,
+    0x7f9c, 0x70e, 0x7f9e, 0x701, 0x7f9f, 0x6f5, 0x7fa0, 0x6e8,
+    0x7fa2, 0x6dc, 0x7fa3, 0x6cf, 0x7fa4, 0x6c3, 0x7fa6, 0x6b6,
+    0x7fa7, 0x6aa, 0x7fa8, 0x69d, 0x7faa, 0x691, 0x7fab, 0x684,
+    0x7fac, 0x678, 0x7fad, 0x66b, 0x7faf, 0x65f, 0x7fb0, 0x652,
+    0x7fb1, 0x646, 0x7fb2, 0x639, 0x7fb4, 0x62d, 0x7fb5, 0x620,
+    0x7fb6, 0x614, 0x7fb7, 0x607, 0x7fb8, 0x5fb, 0x7fb9, 0x5ee,
+    0x7fbb, 0x5e2, 0x7fbc, 0x5d5, 0x7fbd, 0x5c9, 0x7fbe, 0x5bc,
+    0x7fbf, 0x5b0, 0x7fc0, 0x5a3, 0x7fc1, 0x597, 0x7fc3, 0x58a,
+    0x7fc4, 0x57e, 0x7fc5, 0x571, 0x7fc6, 0x565, 0x7fc7, 0x558,
+    0x7fc8, 0x54c, 0x7fc9, 0x53f, 0x7fca, 0x533, 0x7fcb, 0x526,
+    0x7fcc, 0x51a, 0x7fcd, 0x50d, 0x7fce, 0x500, 0x7fcf, 0x4f4,
+    0x7fd0, 0x4e7, 0x7fd1, 0x4db, 0x7fd2, 0x4ce, 0x7fd3, 0x4c2,
+    0x7fd4, 0x4b5, 0x7fd5, 0x4a9, 0x7fd5, 0x49c, 0x7fd6, 0x490,
+    0x7fd7, 0x483, 0x7fd8, 0x477, 0x7fd9, 0x46a, 0x7fda, 0x45e,
+    0x7fdb, 0x451, 0x7fdc, 0x444, 0x7fdc, 0x438, 0x7fdd, 0x42b,
+    0x7fde, 0x41f, 0x7fdf, 0x412, 0x7fe0, 0x406, 0x7fe0, 0x3f9,
+    0x7fe1, 0x3ed, 0x7fe2, 0x3e0, 0x7fe3, 0x3d4, 0x7fe3, 0x3c7,
+    0x7fe4, 0x3bb, 0x7fe5, 0x3ae, 0x7fe6, 0x3a1, 0x7fe6, 0x395,
+    0x7fe7, 0x388, 0x7fe8, 0x37c, 0x7fe8, 0x36f, 0x7fe9, 0x363,
+    0x7fea, 0x356, 0x7fea, 0x34a, 0x7feb, 0x33d, 0x7fec, 0x330,
+    0x7fec, 0x324, 0x7fed, 0x317, 0x7fed, 0x30b, 0x7fee, 0x2fe,
+    0x7fef, 0x2f2, 0x7fef, 0x2e5, 0x7ff0, 0x2d9, 0x7ff0, 0x2cc,
+    0x7ff1, 0x2c0, 0x7ff1, 0x2b3, 0x7ff2, 0x2a6, 0x7ff2, 0x29a,
+    0x7ff3, 0x28d, 0x7ff3, 0x281, 0x7ff4, 0x274, 0x7ff4, 0x268,
+    0x7ff5, 0x25b, 0x7ff5, 0x24e, 0x7ff6, 0x242, 0x7ff6, 0x235,
+    0x7ff7, 0x229, 0x7ff7, 0x21c, 0x7ff7, 0x210, 0x7ff8, 0x203,
+    0x7ff8, 0x1f7, 0x7ff9, 0x1ea, 0x7ff9, 0x1dd, 0x7ff9, 0x1d1,
+    0x7ffa, 0x1c4, 0x7ffa, 0x1b8, 0x7ffa, 0x1ab, 0x7ffb, 0x19f,
+    0x7ffb, 0x192, 0x7ffb, 0x186, 0x7ffc, 0x179, 0x7ffc, 0x16c,
+    0x7ffc, 0x160, 0x7ffc, 0x153, 0x7ffd, 0x147, 0x7ffd, 0x13a,
+    0x7ffd, 0x12e, 0x7ffd, 0x121, 0x7ffe, 0x114, 0x7ffe, 0x108,
+    0x7ffe, 0xfb, 0x7ffe, 0xef, 0x7ffe, 0xe2, 0x7fff, 0xd6,
+    0x7fff, 0xc9, 0x7fff, 0xbc, 0x7fff, 0xb0, 0x7fff, 0xa3,
+    0x7fff, 0x97, 0x7fff, 0x8a, 0x7fff, 0x7e, 0x7fff, 0x71,
+    0x7fff, 0x65, 0x7fff, 0x58, 0x7fff, 0x4b, 0x7fff, 0x3f,
+    0x7fff, 0x32, 0x7fff, 0x26, 0x7fff, 0x19, 0x7fff, 0xd,
+    0x7fff, 0x0, 0x7fff, 0xfff3, 0x7fff, 0xffe7, 0x7fff, 0xffda,
+    0x7fff, 0xffce, 0x7fff, 0xffc1, 0x7fff, 0xffb5, 0x7fff, 0xffa8,
+    0x7fff, 0xff9b, 0x7fff, 0xff8f, 0x7fff, 0xff82, 0x7fff, 0xff76,
+    0x7fff, 0xff69, 0x7fff, 0xff5d, 0x7fff, 0xff50, 0x7fff, 0xff44,
+    0x7fff, 0xff37, 0x7fff, 0xff2a, 0x7ffe, 0xff1e, 0x7ffe, 0xff11,
+    0x7ffe, 0xff05, 0x7ffe, 0xfef8, 0x7ffe, 0xfeec, 0x7ffd, 0xfedf,
+    0x7ffd, 0xfed2, 0x7ffd, 0xfec6, 0x7ffd, 0xfeb9, 0x7ffc, 0xfead,
+    0x7ffc, 0xfea0, 0x7ffc, 0xfe94, 0x7ffc, 0xfe87, 0x7ffb, 0xfe7a,
+    0x7ffb, 0xfe6e, 0x7ffb, 0xfe61, 0x7ffa, 0xfe55, 0x7ffa, 0xfe48,
+    0x7ffa, 0xfe3c, 0x7ff9, 0xfe2f, 0x7ff9, 0xfe23, 0x7ff9, 0xfe16,
+    0x7ff8, 0xfe09, 0x7ff8, 0xfdfd, 0x7ff7, 0xfdf0, 0x7ff7, 0xfde4,
+    0x7ff7, 0xfdd7, 0x7ff6, 0xfdcb, 0x7ff6, 0xfdbe, 0x7ff5, 0xfdb2,
+    0x7ff5, 0xfda5, 0x7ff4, 0xfd98, 0x7ff4, 0xfd8c, 0x7ff3, 0xfd7f,
+    0x7ff3, 0xfd73, 0x7ff2, 0xfd66, 0x7ff2, 0xfd5a, 0x7ff1, 0xfd4d,
+    0x7ff1, 0xfd40, 0x7ff0, 0xfd34, 0x7ff0, 0xfd27, 0x7fef, 0xfd1b,
+    0x7fef, 0xfd0e, 0x7fee, 0xfd02, 0x7fed, 0xfcf5, 0x7fed, 0xfce9,
+    0x7fec, 0xfcdc, 0x7fec, 0xfcd0, 0x7feb, 0xfcc3, 0x7fea, 0xfcb6,
+    0x7fea, 0xfcaa, 0x7fe9, 0xfc9d, 0x7fe8, 0xfc91, 0x7fe8, 0xfc84,
+    0x7fe7, 0xfc78, 0x7fe6, 0xfc6b, 0x7fe6, 0xfc5f, 0x7fe5, 0xfc52,
+    0x7fe4, 0xfc45, 0x7fe3, 0xfc39, 0x7fe3, 0xfc2c, 0x7fe2, 0xfc20,
+    0x7fe1, 0xfc13, 0x7fe0, 0xfc07, 0x7fe0, 0xfbfa, 0x7fdf, 0xfbee,
+    0x7fde, 0xfbe1, 0x7fdd, 0xfbd5, 0x7fdc, 0xfbc8, 0x7fdc, 0xfbbc,
+    0x7fdb, 0xfbaf, 0x7fda, 0xfba2, 0x7fd9, 0xfb96, 0x7fd8, 0xfb89,
+    0x7fd7, 0xfb7d, 0x7fd6, 0xfb70, 0x7fd5, 0xfb64, 0x7fd5, 0xfb57,
+    0x7fd4, 0xfb4b, 0x7fd3, 0xfb3e, 0x7fd2, 0xfb32, 0x7fd1, 0xfb25,
+    0x7fd0, 0xfb19, 0x7fcf, 0xfb0c, 0x7fce, 0xfb00, 0x7fcd, 0xfaf3,
+    0x7fcc, 0xfae6, 0x7fcb, 0xfada, 0x7fca, 0xfacd, 0x7fc9, 0xfac1,
+    0x7fc8, 0xfab4, 0x7fc7, 0xfaa8, 0x7fc6, 0xfa9b, 0x7fc5, 0xfa8f,
+    0x7fc4, 0xfa82, 0x7fc3, 0xfa76, 0x7fc1, 0xfa69, 0x7fc0, 0xfa5d,
+    0x7fbf, 0xfa50, 0x7fbe, 0xfa44, 0x7fbd, 0xfa37, 0x7fbc, 0xfa2b,
+    0x7fbb, 0xfa1e, 0x7fb9, 0xfa12, 0x7fb8, 0xfa05, 0x7fb7, 0xf9f9,
+    0x7fb6, 0xf9ec, 0x7fb5, 0xf9e0, 0x7fb4, 0xf9d3, 0x7fb2, 0xf9c7,
+    0x7fb1, 0xf9ba, 0x7fb0, 0xf9ae, 0x7faf, 0xf9a1, 0x7fad, 0xf995,
+    0x7fac, 0xf988, 0x7fab, 0xf97c, 0x7faa, 0xf96f, 0x7fa8, 0xf963,
+    0x7fa7, 0xf956, 0x7fa6, 0xf94a, 0x7fa4, 0xf93d, 0x7fa3, 0xf931,
+    0x7fa2, 0xf924, 0x7fa0, 0xf918, 0x7f9f, 0xf90b, 0x7f9e, 0xf8ff,
+    0x7f9c, 0xf8f2, 0x7f9b, 0xf8e6, 0x7f99, 0xf8d9, 0x7f98, 0xf8cd,
+    0x7f97, 0xf8c0, 0x7f95, 0xf8b4, 0x7f94, 0xf8a7, 0x7f92, 0xf89b,
+    0x7f91, 0xf88e, 0x7f8f, 0xf882, 0x7f8e, 0xf875, 0x7f8c, 0xf869,
+    0x7f8b, 0xf85c, 0x7f89, 0xf850, 0x7f88, 0xf843, 0x7f86, 0xf837,
+    0x7f85, 0xf82a, 0x7f83, 0xf81e, 0x7f82, 0xf811, 0x7f80, 0xf805,
+    0x7f7f, 0xf7f9, 0x7f7d, 0xf7ec, 0x7f7b, 0xf7e0, 0x7f7a, 0xf7d3,
+    0x7f78, 0xf7c7, 0x7f77, 0xf7ba, 0x7f75, 0xf7ae, 0x7f73, 0xf7a1,
+    0x7f72, 0xf795, 0x7f70, 0xf788, 0x7f6e, 0xf77c, 0x7f6d, 0xf76f,
+    0x7f6b, 0xf763, 0x7f69, 0xf757, 0x7f68, 0xf74a, 0x7f66, 0xf73e,
+    0x7f64, 0xf731, 0x7f62, 0xf725, 0x7f61, 0xf718, 0x7f5f, 0xf70c,
+    0x7f5d, 0xf6ff, 0x7f5b, 0xf6f3, 0x7f5a, 0xf6e7, 0x7f58, 0xf6da,
+    0x7f56, 0xf6ce, 0x7f54, 0xf6c1, 0x7f52, 0xf6b5, 0x7f51, 0xf6a8,
+    0x7f4f, 0xf69c, 0x7f4d, 0xf690, 0x7f4b, 0xf683, 0x7f49, 0xf677,
+    0x7f47, 0xf66a, 0x7f45, 0xf65e, 0x7f43, 0xf651, 0x7f42, 0xf645,
+    0x7f40, 0xf639, 0x7f3e, 0xf62c, 0x7f3c, 0xf620, 0x7f3a, 0xf613,
+    0x7f38, 0xf607, 0x7f36, 0xf5fa, 0x7f34, 0xf5ee, 0x7f32, 0xf5e2,
+    0x7f30, 0xf5d5, 0x7f2e, 0xf5c9, 0x7f2c, 0xf5bc, 0x7f2a, 0xf5b0,
+    0x7f28, 0xf5a4, 0x7f26, 0xf597, 0x7f24, 0xf58b, 0x7f22, 0xf57e,
+    0x7f20, 0xf572, 0x7f1e, 0xf566, 0x7f1c, 0xf559, 0x7f19, 0xf54d,
+    0x7f17, 0xf540, 0x7f15, 0xf534, 0x7f13, 0xf528, 0x7f11, 0xf51b,
+    0x7f0f, 0xf50f, 0x7f0d, 0xf503, 0x7f0a, 0xf4f6, 0x7f08, 0xf4ea,
+    0x7f06, 0xf4dd, 0x7f04, 0xf4d1, 0x7f02, 0xf4c5, 0x7f00, 0xf4b8,
+    0x7efd, 0xf4ac, 0x7efb, 0xf4a0, 0x7ef9, 0xf493, 0x7ef7, 0xf487,
+    0x7ef4, 0xf47b, 0x7ef2, 0xf46e, 0x7ef0, 0xf462, 0x7eed, 0xf455,
+    0x7eeb, 0xf449, 0x7ee9, 0xf43d, 0x7ee7, 0xf430, 0x7ee4, 0xf424,
+    0x7ee2, 0xf418, 0x7ee0, 0xf40b, 0x7edd, 0xf3ff, 0x7edb, 0xf3f3,
+    0x7ed8, 0xf3e6, 0x7ed6, 0xf3da, 0x7ed4, 0xf3ce, 0x7ed1, 0xf3c1,
+    0x7ecf, 0xf3b5, 0x7ecc, 0xf3a9, 0x7eca, 0xf39c, 0x7ec8, 0xf390,
+    0x7ec5, 0xf384, 0x7ec3, 0xf377, 0x7ec0, 0xf36b, 0x7ebe, 0xf35f,
+    0x7ebb, 0xf352, 0x7eb9, 0xf346, 0x7eb6, 0xf33a, 0x7eb4, 0xf32d,
+    0x7eb1, 0xf321, 0x7eaf, 0xf315, 0x7eac, 0xf308, 0x7eaa, 0xf2fc,
+    0x7ea7, 0xf2f0, 0x7ea5, 0xf2e4, 0x7ea2, 0xf2d7, 0x7e9f, 0xf2cb,
+    0x7e9d, 0xf2bf, 0x7e9a, 0xf2b2, 0x7e98, 0xf2a6, 0x7e95, 0xf29a,
+    0x7e92, 0xf28e, 0x7e90, 0xf281, 0x7e8d, 0xf275, 0x7e8a, 0xf269,
+    0x7e88, 0xf25c, 0x7e85, 0xf250, 0x7e82, 0xf244, 0x7e80, 0xf238,
+    0x7e7d, 0xf22b, 0x7e7a, 0xf21f, 0x7e77, 0xf213, 0x7e75, 0xf207,
+    0x7e72, 0xf1fa, 0x7e6f, 0xf1ee, 0x7e6c, 0xf1e2, 0x7e6a, 0xf1d5,
+    0x7e67, 0xf1c9, 0x7e64, 0xf1bd, 0x7e61, 0xf1b1, 0x7e5e, 0xf1a4,
+    0x7e5c, 0xf198, 0x7e59, 0xf18c, 0x7e56, 0xf180, 0x7e53, 0xf174,
+    0x7e50, 0xf167, 0x7e4d, 0xf15b, 0x7e4a, 0xf14f, 0x7e48, 0xf143,
+    0x7e45, 0xf136, 0x7e42, 0xf12a, 0x7e3f, 0xf11e, 0x7e3c, 0xf112,
+    0x7e39, 0xf105, 0x7e36, 0xf0f9, 0x7e33, 0xf0ed, 0x7e30, 0xf0e1,
+    0x7e2d, 0xf0d5, 0x7e2a, 0xf0c8, 0x7e27, 0xf0bc, 0x7e24, 0xf0b0,
+    0x7e21, 0xf0a4, 0x7e1e, 0xf098, 0x7e1b, 0xf08b, 0x7e18, 0xf07f,
+    0x7e15, 0xf073, 0x7e12, 0xf067, 0x7e0f, 0xf05b, 0x7e0c, 0xf04e,
+    0x7e09, 0xf042, 0x7e06, 0xf036, 0x7e03, 0xf02a, 0x7dff, 0xf01e,
+    0x7dfc, 0xf012, 0x7df9, 0xf005, 0x7df6, 0xeff9, 0x7df3, 0xefed,
+    0x7df0, 0xefe1, 0x7ded, 0xefd5, 0x7de9, 0xefc9, 0x7de6, 0xefbc,
+    0x7de3, 0xefb0, 0x7de0, 0xefa4, 0x7ddd, 0xef98, 0x7dd9, 0xef8c,
+    0x7dd6, 0xef80, 0x7dd3, 0xef74, 0x7dd0, 0xef67, 0x7dcc, 0xef5b,
+    0x7dc9, 0xef4f, 0x7dc6, 0xef43, 0x7dc2, 0xef37, 0x7dbf, 0xef2b,
+    0x7dbc, 0xef1f, 0x7db9, 0xef13, 0x7db5, 0xef06, 0x7db2, 0xeefa,
+    0x7daf, 0xeeee, 0x7dab, 0xeee2, 0x7da8, 0xeed6, 0x7da4, 0xeeca,
+    0x7da1, 0xeebe, 0x7d9e, 0xeeb2, 0x7d9a, 0xeea6, 0x7d97, 0xee99,
+    0x7d93, 0xee8d, 0x7d90, 0xee81, 0x7d8d, 0xee75, 0x7d89, 0xee69,
+    0x7d86, 0xee5d, 0x7d82, 0xee51, 0x7d7f, 0xee45, 0x7d7b, 0xee39,
+    0x7d78, 0xee2d, 0x7d74, 0xee21, 0x7d71, 0xee15, 0x7d6d, 0xee09,
+    0x7d6a, 0xedfc, 0x7d66, 0xedf0, 0x7d63, 0xede4, 0x7d5f, 0xedd8,
+    0x7d5b, 0xedcc, 0x7d58, 0xedc0, 0x7d54, 0xedb4, 0x7d51, 0xeda8,
+    0x7d4d, 0xed9c, 0x7d49, 0xed90, 0x7d46, 0xed84, 0x7d42, 0xed78,
+    0x7d3f, 0xed6c, 0x7d3b, 0xed60, 0x7d37, 0xed54, 0x7d34, 0xed48,
+    0x7d30, 0xed3c, 0x7d2c, 0xed30, 0x7d28, 0xed24, 0x7d25, 0xed18,
+    0x7d21, 0xed0c, 0x7d1d, 0xed00, 0x7d1a, 0xecf4, 0x7d16, 0xece8,
+    0x7d12, 0xecdc, 0x7d0e, 0xecd0, 0x7d0b, 0xecc4, 0x7d07, 0xecb8,
+    0x7d03, 0xecac, 0x7cff, 0xeca0, 0x7cfb, 0xec94, 0x7cf8, 0xec88,
+    0x7cf4, 0xec7c, 0x7cf0, 0xec70, 0x7cec, 0xec64, 0x7ce8, 0xec58,
+    0x7ce4, 0xec4c, 0x7ce0, 0xec40, 0x7cdd, 0xec34, 0x7cd9, 0xec28,
+    0x7cd5, 0xec1c, 0x7cd1, 0xec10, 0x7ccd, 0xec05, 0x7cc9, 0xebf9,
+    0x7cc5, 0xebed, 0x7cc1, 0xebe1, 0x7cbd, 0xebd5, 0x7cb9, 0xebc9,
+    0x7cb5, 0xebbd, 0x7cb1, 0xebb1, 0x7cad, 0xeba5, 0x7ca9, 0xeb99,
+    0x7ca5, 0xeb8d, 0x7ca1, 0xeb81, 0x7c9d, 0xeb75, 0x7c99, 0xeb6a,
+    0x7c95, 0xeb5e, 0x7c91, 0xeb52, 0x7c8d, 0xeb46, 0x7c89, 0xeb3a,
+    0x7c85, 0xeb2e, 0x7c81, 0xeb22, 0x7c7d, 0xeb16, 0x7c79, 0xeb0a,
+    0x7c74, 0xeaff, 0x7c70, 0xeaf3, 0x7c6c, 0xeae7, 0x7c68, 0xeadb,
+    0x7c64, 0xeacf, 0x7c60, 0xeac3, 0x7c5b, 0xeab7, 0x7c57, 0xeaac,
+    0x7c53, 0xeaa0, 0x7c4f, 0xea94, 0x7c4b, 0xea88, 0x7c46, 0xea7c,
+    0x7c42, 0xea70, 0x7c3e, 0xea65, 0x7c3a, 0xea59, 0x7c36, 0xea4d,
+    0x7c31, 0xea41, 0x7c2d, 0xea35, 0x7c29, 0xea29, 0x7c24, 0xea1e,
+    0x7c20, 0xea12, 0x7c1c, 0xea06, 0x7c17, 0xe9fa, 0x7c13, 0xe9ee,
+    0x7c0f, 0xe9e3, 0x7c0a, 0xe9d7, 0x7c06, 0xe9cb, 0x7c02, 0xe9bf,
+    0x7bfd, 0xe9b4, 0x7bf9, 0xe9a8, 0x7bf5, 0xe99c, 0x7bf0, 0xe990,
+    0x7bec, 0xe984, 0x7be7, 0xe979, 0x7be3, 0xe96d, 0x7bde, 0xe961,
+    0x7bda, 0xe955, 0x7bd6, 0xe94a, 0x7bd1, 0xe93e, 0x7bcd, 0xe932,
+    0x7bc8, 0xe926, 0x7bc4, 0xe91b, 0x7bbf, 0xe90f, 0x7bbb, 0xe903,
+    0x7bb6, 0xe8f7, 0x7bb2, 0xe8ec, 0x7bad, 0xe8e0, 0x7ba9, 0xe8d4,
+    0x7ba4, 0xe8c9, 0x7b9f, 0xe8bd, 0x7b9b, 0xe8b1, 0x7b96, 0xe8a5,
+    0x7b92, 0xe89a, 0x7b8d, 0xe88e, 0x7b88, 0xe882, 0x7b84, 0xe877,
+    0x7b7f, 0xe86b, 0x7b7b, 0xe85f, 0x7b76, 0xe854, 0x7b71, 0xe848,
+    0x7b6d, 0xe83c, 0x7b68, 0xe831, 0x7b63, 0xe825, 0x7b5f, 0xe819,
+    0x7b5a, 0xe80e, 0x7b55, 0xe802, 0x7b50, 0xe7f6, 0x7b4c, 0xe7eb,
+    0x7b47, 0xe7df, 0x7b42, 0xe7d3, 0x7b3e, 0xe7c8, 0x7b39, 0xe7bc,
+    0x7b34, 0xe7b1, 0x7b2f, 0xe7a5, 0x7b2a, 0xe799, 0x7b26, 0xe78e,
+    0x7b21, 0xe782, 0x7b1c, 0xe777, 0x7b17, 0xe76b, 0x7b12, 0xe75f,
+    0x7b0e, 0xe754, 0x7b09, 0xe748, 0x7b04, 0xe73d, 0x7aff, 0xe731,
+    0x7afa, 0xe725, 0x7af5, 0xe71a, 0x7af0, 0xe70e, 0x7aeb, 0xe703,
+    0x7ae6, 0xe6f7, 0x7ae2, 0xe6ec, 0x7add, 0xe6e0, 0x7ad8, 0xe6d4,
+    0x7ad3, 0xe6c9, 0x7ace, 0xe6bd, 0x7ac9, 0xe6b2, 0x7ac4, 0xe6a6,
+    0x7abf, 0xe69b, 0x7aba, 0xe68f, 0x7ab5, 0xe684, 0x7ab0, 0xe678,
+    0x7aab, 0xe66d, 0x7aa6, 0xe661, 0x7aa1, 0xe656, 0x7a9c, 0xe64a,
+    0x7a97, 0xe63f, 0x7a92, 0xe633, 0x7a8d, 0xe628, 0x7a88, 0xe61c,
+    0x7a82, 0xe611, 0x7a7d, 0xe605, 0x7a78, 0xe5fa, 0x7a73, 0xe5ee,
+    0x7a6e, 0xe5e3, 0x7a69, 0xe5d7, 0x7a64, 0xe5cc, 0x7a5f, 0xe5c0,
+    0x7a59, 0xe5b5, 0x7a54, 0xe5a9, 0x7a4f, 0xe59e, 0x7a4a, 0xe592,
+    0x7a45, 0xe587, 0x7a3f, 0xe57c, 0x7a3a, 0xe570, 0x7a35, 0xe565,
+    0x7a30, 0xe559, 0x7a2b, 0xe54e, 0x7a25, 0xe542, 0x7a20, 0xe537,
+    0x7a1b, 0xe52c, 0x7a16, 0xe520, 0x7a10, 0xe515, 0x7a0b, 0xe509,
+    0x7a06, 0xe4fe, 0x7a00, 0xe4f3, 0x79fb, 0xe4e7, 0x79f6, 0xe4dc,
+    0x79f0, 0xe4d0, 0x79eb, 0xe4c5, 0x79e6, 0xe4ba, 0x79e0, 0xe4ae,
+    0x79db, 0xe4a3, 0x79d6, 0xe498, 0x79d0, 0xe48c, 0x79cb, 0xe481,
+    0x79c5, 0xe476, 0x79c0, 0xe46a, 0x79bb, 0xe45f, 0x79b5, 0xe454,
+    0x79b0, 0xe448, 0x79aa, 0xe43d, 0x79a5, 0xe432, 0x799f, 0xe426,
+    0x799a, 0xe41b, 0x7994, 0xe410, 0x798f, 0xe404, 0x7989, 0xe3f9,
+    0x7984, 0xe3ee, 0x797e, 0xe3e2, 0x7979, 0xe3d7, 0x7973, 0xe3cc,
+    0x796e, 0xe3c1, 0x7968, 0xe3b5, 0x7963, 0xe3aa, 0x795d, 0xe39f,
+    0x7958, 0xe394, 0x7952, 0xe388, 0x794c, 0xe37d, 0x7947, 0xe372,
+    0x7941, 0xe367, 0x793b, 0xe35b, 0x7936, 0xe350, 0x7930, 0xe345,
+    0x792b, 0xe33a, 0x7925, 0xe32e, 0x791f, 0xe323, 0x791a, 0xe318,
+    0x7914, 0xe30d, 0x790e, 0xe301, 0x7909, 0xe2f6, 0x7903, 0xe2eb,
+    0x78fd, 0xe2e0, 0x78f7, 0xe2d5, 0x78f2, 0xe2ca, 0x78ec, 0xe2be,
+    0x78e6, 0xe2b3, 0x78e0, 0xe2a8, 0x78db, 0xe29d, 0x78d5, 0xe292,
+    0x78cf, 0xe287, 0x78c9, 0xe27b, 0x78c3, 0xe270, 0x78be, 0xe265,
+    0x78b8, 0xe25a, 0x78b2, 0xe24f, 0x78ac, 0xe244, 0x78a6, 0xe239,
+    0x78a1, 0xe22d, 0x789b, 0xe222, 0x7895, 0xe217, 0x788f, 0xe20c,
+    0x7889, 0xe201, 0x7883, 0xe1f6, 0x787d, 0xe1eb, 0x7877, 0xe1e0,
+    0x7871, 0xe1d5, 0x786b, 0xe1ca, 0x7866, 0xe1be, 0x7860, 0xe1b3,
+    0x785a, 0xe1a8, 0x7854, 0xe19d, 0x784e, 0xe192, 0x7848, 0xe187,
+    0x7842, 0xe17c, 0x783c, 0xe171, 0x7836, 0xe166, 0x7830, 0xe15b,
+    0x782a, 0xe150, 0x7824, 0xe145, 0x781e, 0xe13a, 0x7818, 0xe12f,
+    0x7812, 0xe124, 0x780b, 0xe119, 0x7805, 0xe10e, 0x77ff, 0xe103,
+    0x77f9, 0xe0f8, 0x77f3, 0xe0ed, 0x77ed, 0xe0e2, 0x77e7, 0xe0d7,
+    0x77e1, 0xe0cc, 0x77db, 0xe0c1, 0x77d5, 0xe0b6, 0x77ce, 0xe0ab,
+    0x77c8, 0xe0a0, 0x77c2, 0xe095, 0x77bc, 0xe08a, 0x77b6, 0xe07f,
+    0x77b0, 0xe074, 0x77a9, 0xe069, 0x77a3, 0xe05e, 0x779d, 0xe054,
+    0x7797, 0xe049, 0x7790, 0xe03e, 0x778a, 0xe033, 0x7784, 0xe028,
+    0x777e, 0xe01d, 0x7777, 0xe012, 0x7771, 0xe007, 0x776b, 0xdffc,
+    0x7765, 0xdff1, 0x775e, 0xdfe7, 0x7758, 0xdfdc, 0x7752, 0xdfd1,
+    0x774b, 0xdfc6, 0x7745, 0xdfbb, 0x773f, 0xdfb0, 0x7738, 0xdfa5,
+    0x7732, 0xdf9b, 0x772c, 0xdf90, 0x7725, 0xdf85, 0x771f, 0xdf7a,
+    0x7718, 0xdf6f, 0x7712, 0xdf65, 0x770c, 0xdf5a, 0x7705, 0xdf4f,
+    0x76ff, 0xdf44, 0x76f8, 0xdf39, 0x76f2, 0xdf2f, 0x76eb, 0xdf24,
+    0x76e5, 0xdf19, 0x76df, 0xdf0e, 0x76d8, 0xdf03, 0x76d2, 0xdef9,
+    0x76cb, 0xdeee, 0x76c5, 0xdee3, 0x76be, 0xded8, 0x76b8, 0xdece,
+    0x76b1, 0xdec3, 0x76ab, 0xdeb8, 0x76a4, 0xdead, 0x769d, 0xdea3,
+    0x7697, 0xde98, 0x7690, 0xde8d, 0x768a, 0xde83, 0x7683, 0xde78,
+    0x767d, 0xde6d, 0x7676, 0xde62, 0x766f, 0xde58, 0x7669, 0xde4d,
+    0x7662, 0xde42, 0x765c, 0xde38, 0x7655, 0xde2d, 0x764e, 0xde22,
+    0x7648, 0xde18, 0x7641, 0xde0d, 0x763a, 0xde02, 0x7634, 0xddf8,
+    0x762d, 0xdded, 0x7626, 0xdde2, 0x7620, 0xddd8, 0x7619, 0xddcd,
+    0x7612, 0xddc3, 0x760b, 0xddb8, 0x7605, 0xddad, 0x75fe, 0xdda3,
+    0x75f7, 0xdd98, 0x75f0, 0xdd8e, 0x75ea, 0xdd83, 0x75e3, 0xdd78,
+    0x75dc, 0xdd6e, 0x75d5, 0xdd63, 0x75ce, 0xdd59, 0x75c8, 0xdd4e,
+    0x75c1, 0xdd44, 0x75ba, 0xdd39, 0x75b3, 0xdd2e, 0x75ac, 0xdd24,
+    0x75a5, 0xdd19, 0x759f, 0xdd0f, 0x7598, 0xdd04, 0x7591, 0xdcfa,
+    0x758a, 0xdcef, 0x7583, 0xdce5, 0x757c, 0xdcda, 0x7575, 0xdcd0,
+    0x756e, 0xdcc5, 0x7567, 0xdcbb, 0x7561, 0xdcb0, 0x755a, 0xdca6,
+    0x7553, 0xdc9b, 0x754c, 0xdc91, 0x7545, 0xdc86, 0x753e, 0xdc7c,
+    0x7537, 0xdc72, 0x7530, 0xdc67, 0x7529, 0xdc5d, 0x7522, 0xdc52,
+    0x751b, 0xdc48, 0x7514, 0xdc3d, 0x750d, 0xdc33, 0x7506, 0xdc29,
+    0x74ff, 0xdc1e, 0x74f8, 0xdc14, 0x74f1, 0xdc09, 0x74ea, 0xdbff,
+    0x74e2, 0xdbf5, 0x74db, 0xdbea, 0x74d4, 0xdbe0, 0x74cd, 0xdbd5,
+    0x74c6, 0xdbcb, 0x74bf, 0xdbc1, 0x74b8, 0xdbb6, 0x74b1, 0xdbac,
+    0x74aa, 0xdba2, 0x74a2, 0xdb97, 0x749b, 0xdb8d, 0x7494, 0xdb83,
+    0x748d, 0xdb78, 0x7486, 0xdb6e, 0x747f, 0xdb64, 0x7477, 0xdb59,
+    0x7470, 0xdb4f, 0x7469, 0xdb45, 0x7462, 0xdb3b, 0x745b, 0xdb30,
+    0x7453, 0xdb26, 0x744c, 0xdb1c, 0x7445, 0xdb11, 0x743e, 0xdb07,
+    0x7436, 0xdafd, 0x742f, 0xdaf3, 0x7428, 0xdae8, 0x7420, 0xdade,
+    0x7419, 0xdad4, 0x7412, 0xdaca, 0x740b, 0xdabf, 0x7403, 0xdab5,
+    0x73fc, 0xdaab, 0x73f5, 0xdaa1, 0x73ed, 0xda97, 0x73e6, 0xda8c,
+    0x73df, 0xda82, 0x73d7, 0xda78, 0x73d0, 0xda6e, 0x73c8, 0xda64,
+    0x73c1, 0xda5a, 0x73ba, 0xda4f, 0x73b2, 0xda45, 0x73ab, 0xda3b,
+    0x73a3, 0xda31, 0x739c, 0xda27, 0x7395, 0xda1d, 0x738d, 0xda13,
+    0x7386, 0xda08, 0x737e, 0xd9fe, 0x7377, 0xd9f4, 0x736f, 0xd9ea,
+    0x7368, 0xd9e0, 0x7360, 0xd9d6, 0x7359, 0xd9cc, 0x7351, 0xd9c2,
+    0x734a, 0xd9b8, 0x7342, 0xd9ae, 0x733b, 0xd9a4, 0x7333, 0xd99a,
+    0x732c, 0xd98f, 0x7324, 0xd985, 0x731d, 0xd97b, 0x7315, 0xd971,
+    0x730d, 0xd967, 0x7306, 0xd95d, 0x72fe, 0xd953, 0x72f7, 0xd949,
+    0x72ef, 0xd93f, 0x72e7, 0xd935, 0x72e0, 0xd92b, 0x72d8, 0xd921,
+    0x72d0, 0xd917, 0x72c9, 0xd90d, 0x72c1, 0xd903, 0x72ba, 0xd8f9,
+    0x72b2, 0xd8ef, 0x72aa, 0xd8e6, 0x72a3, 0xd8dc, 0x729b, 0xd8d2,
+    0x7293, 0xd8c8, 0x728b, 0xd8be, 0x7284, 0xd8b4, 0x727c, 0xd8aa,
+    0x7274, 0xd8a0, 0x726d, 0xd896, 0x7265, 0xd88c, 0x725d, 0xd882,
+    0x7255, 0xd878, 0x724e, 0xd86f, 0x7246, 0xd865, 0x723e, 0xd85b,
+    0x7236, 0xd851, 0x722e, 0xd847, 0x7227, 0xd83d, 0x721f, 0xd833,
+    0x7217, 0xd82a, 0x720f, 0xd820, 0x7207, 0xd816, 0x71ff, 0xd80c,
+    0x71f8, 0xd802, 0x71f0, 0xd7f8, 0x71e8, 0xd7ef, 0x71e0, 0xd7e5,
+    0x71d8, 0xd7db, 0x71d0, 0xd7d1, 0x71c8, 0xd7c8, 0x71c0, 0xd7be,
+    0x71b9, 0xd7b4, 0x71b1, 0xd7aa, 0x71a9, 0xd7a0, 0x71a1, 0xd797,
+    0x7199, 0xd78d, 0x7191, 0xd783, 0x7189, 0xd77a, 0x7181, 0xd770,
+    0x7179, 0xd766, 0x7171, 0xd75c, 0x7169, 0xd753, 0x7161, 0xd749,
+    0x7159, 0xd73f, 0x7151, 0xd736, 0x7149, 0xd72c, 0x7141, 0xd722,
+    0x7139, 0xd719, 0x7131, 0xd70f, 0x7129, 0xd705, 0x7121, 0xd6fc,
+    0x7119, 0xd6f2, 0x7111, 0xd6e8, 0x7109, 0xd6df, 0x7101, 0xd6d5,
+    0x70f9, 0xd6cb, 0x70f0, 0xd6c2, 0x70e8, 0xd6b8, 0x70e0, 0xd6af,
+    0x70d8, 0xd6a5, 0x70d0, 0xd69b, 0x70c8, 0xd692, 0x70c0, 0xd688,
+    0x70b8, 0xd67f, 0x70af, 0xd675, 0x70a7, 0xd66c, 0x709f, 0xd662,
+    0x7097, 0xd659, 0x708f, 0xd64f, 0x7087, 0xd645, 0x707e, 0xd63c,
+    0x7076, 0xd632, 0x706e, 0xd629, 0x7066, 0xd61f, 0x705d, 0xd616,
+    0x7055, 0xd60c, 0x704d, 0xd603, 0x7045, 0xd5f9, 0x703c, 0xd5f0,
+    0x7034, 0xd5e6, 0x702c, 0xd5dd, 0x7024, 0xd5d4, 0x701b, 0xd5ca,
+    0x7013, 0xd5c1, 0x700b, 0xd5b7, 0x7002, 0xd5ae, 0x6ffa, 0xd5a4,
+    0x6ff2, 0xd59b, 0x6fea, 0xd592, 0x6fe1, 0xd588, 0x6fd9, 0xd57f,
+    0x6fd0, 0xd575, 0x6fc8, 0xd56c, 0x6fc0, 0xd563, 0x6fb7, 0xd559,
+    0x6faf, 0xd550, 0x6fa7, 0xd547, 0x6f9e, 0xd53d, 0x6f96, 0xd534,
+    0x6f8d, 0xd52a, 0x6f85, 0xd521, 0x6f7d, 0xd518, 0x6f74, 0xd50e,
+    0x6f6c, 0xd505, 0x6f63, 0xd4fc, 0x6f5b, 0xd4f3, 0x6f52, 0xd4e9,
+    0x6f4a, 0xd4e0, 0x6f41, 0xd4d7, 0x6f39, 0xd4cd, 0x6f30, 0xd4c4,
+    0x6f28, 0xd4bb, 0x6f20, 0xd4b2, 0x6f17, 0xd4a8, 0x6f0e, 0xd49f,
+    0x6f06, 0xd496, 0x6efd, 0xd48d, 0x6ef5, 0xd483, 0x6eec, 0xd47a,
+    0x6ee4, 0xd471, 0x6edb, 0xd468, 0x6ed3, 0xd45f, 0x6eca, 0xd455,
+    0x6ec2, 0xd44c, 0x6eb9, 0xd443, 0x6eb0, 0xd43a, 0x6ea8, 0xd431,
+    0x6e9f, 0xd428, 0x6e97, 0xd41e, 0x6e8e, 0xd415, 0x6e85, 0xd40c,
+    0x6e7d, 0xd403, 0x6e74, 0xd3fa, 0x6e6b, 0xd3f1, 0x6e63, 0xd3e8,
+    0x6e5a, 0xd3df, 0x6e51, 0xd3d5, 0x6e49, 0xd3cc, 0x6e40, 0xd3c3,
+    0x6e37, 0xd3ba, 0x6e2f, 0xd3b1, 0x6e26, 0xd3a8, 0x6e1d, 0xd39f,
+    0x6e15, 0xd396, 0x6e0c, 0xd38d, 0x6e03, 0xd384, 0x6dfa, 0xd37b,
+    0x6df2, 0xd372, 0x6de9, 0xd369, 0x6de0, 0xd360, 0x6dd7, 0xd357,
+    0x6dcf, 0xd34e, 0x6dc6, 0xd345, 0x6dbd, 0xd33c, 0x6db4, 0xd333,
+    0x6dab, 0xd32a, 0x6da3, 0xd321, 0x6d9a, 0xd318, 0x6d91, 0xd30f,
+    0x6d88, 0xd306, 0x6d7f, 0xd2fd, 0x6d76, 0xd2f4, 0x6d6e, 0xd2eb,
+    0x6d65, 0xd2e2, 0x6d5c, 0xd2d9, 0x6d53, 0xd2d1, 0x6d4a, 0xd2c8,
+    0x6d41, 0xd2bf, 0x6d38, 0xd2b6, 0x6d2f, 0xd2ad, 0x6d27, 0xd2a4,
+    0x6d1e, 0xd29b, 0x6d15, 0xd292, 0x6d0c, 0xd28a, 0x6d03, 0xd281,
+    0x6cfa, 0xd278, 0x6cf1, 0xd26f, 0x6ce8, 0xd266, 0x6cdf, 0xd25d,
+    0x6cd6, 0xd255, 0x6ccd, 0xd24c, 0x6cc4, 0xd243, 0x6cbb, 0xd23a,
+    0x6cb2, 0xd231, 0x6ca9, 0xd229, 0x6ca0, 0xd220, 0x6c97, 0xd217,
+    0x6c8e, 0xd20e, 0x6c85, 0xd206, 0x6c7c, 0xd1fd, 0x6c73, 0xd1f4,
+    0x6c6a, 0xd1eb, 0x6c61, 0xd1e3, 0x6c58, 0xd1da, 0x6c4f, 0xd1d1,
+    0x6c46, 0xd1c9, 0x6c3d, 0xd1c0, 0x6c34, 0xd1b7, 0x6c2b, 0xd1af,
+    0x6c21, 0xd1a6, 0x6c18, 0xd19d, 0x6c0f, 0xd195, 0x6c06, 0xd18c,
+    0x6bfd, 0xd183, 0x6bf4, 0xd17b, 0x6beb, 0xd172, 0x6be2, 0xd169,
+    0x6bd8, 0xd161, 0x6bcf, 0xd158, 0x6bc6, 0xd150, 0x6bbd, 0xd147,
+    0x6bb4, 0xd13e, 0x6bab, 0xd136, 0x6ba1, 0xd12d, 0x6b98, 0xd125,
+    0x6b8f, 0xd11c, 0x6b86, 0xd114, 0x6b7d, 0xd10b, 0x6b73, 0xd103,
+    0x6b6a, 0xd0fa, 0x6b61, 0xd0f2, 0x6b58, 0xd0e9, 0x6b4e, 0xd0e0,
+    0x6b45, 0xd0d8, 0x6b3c, 0xd0d0, 0x6b33, 0xd0c7, 0x6b29, 0xd0bf,
+    0x6b20, 0xd0b6, 0x6b17, 0xd0ae, 0x6b0d, 0xd0a5, 0x6b04, 0xd09d,
+    0x6afb, 0xd094, 0x6af2, 0xd08c, 0x6ae8, 0xd083, 0x6adf, 0xd07b,
+    0x6ad6, 0xd073, 0x6acc, 0xd06a, 0x6ac3, 0xd062, 0x6ab9, 0xd059,
+    0x6ab0, 0xd051, 0x6aa7, 0xd049, 0x6a9d, 0xd040, 0x6a94, 0xd038,
+    0x6a8b, 0xd030, 0x6a81, 0xd027, 0x6a78, 0xd01f, 0x6a6e, 0xd016,
+    0x6a65, 0xd00e, 0x6a5c, 0xd006, 0x6a52, 0xcffe, 0x6a49, 0xcff5,
+    0x6a3f, 0xcfed, 0x6a36, 0xcfe5, 0x6a2c, 0xcfdc, 0x6a23, 0xcfd4,
+    0x6a1a, 0xcfcc, 0x6a10, 0xcfc4, 0x6a07, 0xcfbb, 0x69fd, 0xcfb3,
+    0x69f4, 0xcfab, 0x69ea, 0xcfa3, 0x69e1, 0xcf9a, 0x69d7, 0xcf92,
+    0x69ce, 0xcf8a, 0x69c4, 0xcf82, 0x69bb, 0xcf79, 0x69b1, 0xcf71,
+    0x69a7, 0xcf69, 0x699e, 0xcf61, 0x6994, 0xcf59, 0x698b, 0xcf51,
+    0x6981, 0xcf48, 0x6978, 0xcf40, 0x696e, 0xcf38, 0x6965, 0xcf30,
+    0x695b, 0xcf28, 0x6951, 0xcf20, 0x6948, 0xcf18, 0x693e, 0xcf10,
+    0x6935, 0xcf07, 0x692b, 0xceff, 0x6921, 0xcef7, 0x6918, 0xceef,
+    0x690e, 0xcee7, 0x6904, 0xcedf, 0x68fb, 0xced7, 0x68f1, 0xcecf,
+    0x68e7, 0xcec7, 0x68de, 0xcebf, 0x68d4, 0xceb7, 0x68ca, 0xceaf,
+    0x68c1, 0xcea7, 0x68b7, 0xce9f, 0x68ad, 0xce97, 0x68a4, 0xce8f,
+    0x689a, 0xce87, 0x6890, 0xce7f, 0x6886, 0xce77, 0x687d, 0xce6f,
+    0x6873, 0xce67, 0x6869, 0xce5f, 0x6860, 0xce57, 0x6856, 0xce4f,
+    0x684c, 0xce47, 0x6842, 0xce40, 0x6838, 0xce38, 0x682f, 0xce30,
+    0x6825, 0xce28, 0x681b, 0xce20, 0x6811, 0xce18, 0x6808, 0xce10,
+    0x67fe, 0xce08, 0x67f4, 0xce01, 0x67ea, 0xcdf9, 0x67e0, 0xcdf1,
+    0x67d6, 0xcde9, 0x67cd, 0xcde1, 0x67c3, 0xcdd9, 0x67b9, 0xcdd2,
+    0x67af, 0xcdca, 0x67a5, 0xcdc2, 0x679b, 0xcdba, 0x6791, 0xcdb2,
+    0x6788, 0xcdab, 0x677e, 0xcda3, 0x6774, 0xcd9b, 0x676a, 0xcd93,
+    0x6760, 0xcd8c, 0x6756, 0xcd84, 0x674c, 0xcd7c, 0x6742, 0xcd75,
+    0x6738, 0xcd6d, 0x672e, 0xcd65, 0x6724, 0xcd5d, 0x671a, 0xcd56,
+    0x6711, 0xcd4e, 0x6707, 0xcd46, 0x66fd, 0xcd3f, 0x66f3, 0xcd37,
+    0x66e9, 0xcd30, 0x66df, 0xcd28, 0x66d5, 0xcd20, 0x66cb, 0xcd19,
+    0x66c1, 0xcd11, 0x66b7, 0xcd09, 0x66ad, 0xcd02, 0x66a3, 0xccfa,
+    0x6699, 0xccf3, 0x668f, 0xcceb, 0x6685, 0xcce3, 0x667b, 0xccdc,
+    0x6671, 0xccd4, 0x6666, 0xcccd, 0x665c, 0xccc5, 0x6652, 0xccbe,
+    0x6648, 0xccb6, 0x663e, 0xccaf, 0x6634, 0xcca7, 0x662a, 0xcca0,
+    0x6620, 0xcc98, 0x6616, 0xcc91, 0x660c, 0xcc89, 0x6602, 0xcc82,
+    0x65f8, 0xcc7a, 0x65ed, 0xcc73, 0x65e3, 0xcc6b, 0x65d9, 0xcc64,
+    0x65cf, 0xcc5d, 0x65c5, 0xcc55, 0x65bb, 0xcc4e, 0x65b1, 0xcc46,
+    0x65a6, 0xcc3f, 0x659c, 0xcc38, 0x6592, 0xcc30, 0x6588, 0xcc29,
+    0x657e, 0xcc21, 0x6574, 0xcc1a, 0x6569, 0xcc13, 0x655f, 0xcc0b,
+    0x6555, 0xcc04, 0x654b, 0xcbfd, 0x6541, 0xcbf5, 0x6536, 0xcbee,
+    0x652c, 0xcbe7, 0x6522, 0xcbe0, 0x6518, 0xcbd8, 0x650d, 0xcbd1,
+    0x6503, 0xcbca, 0x64f9, 0xcbc2, 0x64ef, 0xcbbb, 0x64e4, 0xcbb4,
+    0x64da, 0xcbad, 0x64d0, 0xcba5, 0x64c5, 0xcb9e, 0x64bb, 0xcb97,
+    0x64b1, 0xcb90, 0x64a7, 0xcb89, 0x649c, 0xcb81, 0x6492, 0xcb7a,
+    0x6488, 0xcb73, 0x647d, 0xcb6c, 0x6473, 0xcb65, 0x6469, 0xcb5e,
+    0x645e, 0xcb56, 0x6454, 0xcb4f, 0x644a, 0xcb48, 0x643f, 0xcb41,
+    0x6435, 0xcb3a, 0x642b, 0xcb33, 0x6420, 0xcb2c, 0x6416, 0xcb25,
+    0x640b, 0xcb1e, 0x6401, 0xcb16, 0x63f7, 0xcb0f, 0x63ec, 0xcb08,
+    0x63e2, 0xcb01, 0x63d7, 0xcafa, 0x63cd, 0xcaf3, 0x63c3, 0xcaec,
+    0x63b8, 0xcae5, 0x63ae, 0xcade, 0x63a3, 0xcad7, 0x6399, 0xcad0,
+    0x638e, 0xcac9, 0x6384, 0xcac2, 0x637a, 0xcabb, 0x636f, 0xcab4,
+    0x6365, 0xcaad, 0x635a, 0xcaa6, 0x6350, 0xca9f, 0x6345, 0xca99,
+    0x633b, 0xca92, 0x6330, 0xca8b, 0x6326, 0xca84, 0x631b, 0xca7d,
+    0x6311, 0xca76, 0x6306, 0xca6f, 0x62fc, 0xca68, 0x62f1, 0xca61,
+    0x62e7, 0xca5b, 0x62dc, 0xca54, 0x62d2, 0xca4d, 0x62c7, 0xca46,
+    0x62bc, 0xca3f, 0x62b2, 0xca38, 0x62a7, 0xca32, 0x629d, 0xca2b,
+    0x6292, 0xca24, 0x6288, 0xca1d, 0x627d, 0xca16, 0x6272, 0xca10,
+    0x6268, 0xca09, 0x625d, 0xca02, 0x6253, 0xc9fb, 0x6248, 0xc9f5,
+    0x623d, 0xc9ee, 0x6233, 0xc9e7, 0x6228, 0xc9e0, 0x621e, 0xc9da,
+    0x6213, 0xc9d3, 0x6208, 0xc9cc, 0x61fe, 0xc9c6, 0x61f3, 0xc9bf,
+    0x61e8, 0xc9b8, 0x61de, 0xc9b2, 0x61d3, 0xc9ab, 0x61c8, 0xc9a4,
+    0x61be, 0xc99e, 0x61b3, 0xc997, 0x61a8, 0xc991, 0x619e, 0xc98a,
+    0x6193, 0xc983, 0x6188, 0xc97d, 0x617d, 0xc976, 0x6173, 0xc970,
+    0x6168, 0xc969, 0x615d, 0xc963, 0x6153, 0xc95c, 0x6148, 0xc955,
+    0x613d, 0xc94f, 0x6132, 0xc948, 0x6128, 0xc942, 0x611d, 0xc93b,
+    0x6112, 0xc935, 0x6107, 0xc92e, 0x60fd, 0xc928, 0x60f2, 0xc921,
+    0x60e7, 0xc91b, 0x60dc, 0xc915, 0x60d1, 0xc90e, 0x60c7, 0xc908,
+    0x60bc, 0xc901, 0x60b1, 0xc8fb, 0x60a6, 0xc8f4, 0x609b, 0xc8ee,
+    0x6091, 0xc8e8, 0x6086, 0xc8e1, 0x607b, 0xc8db, 0x6070, 0xc8d4,
+    0x6065, 0xc8ce, 0x605b, 0xc8c8, 0x6050, 0xc8c1, 0x6045, 0xc8bb,
+    0x603a, 0xc8b5, 0x602f, 0xc8ae, 0x6024, 0xc8a8, 0x6019, 0xc8a2,
+    0x600f, 0xc89b, 0x6004, 0xc895, 0x5ff9, 0xc88f, 0x5fee, 0xc889,
+    0x5fe3, 0xc882, 0x5fd8, 0xc87c, 0x5fcd, 0xc876, 0x5fc2, 0xc870,
+    0x5fb7, 0xc869, 0x5fac, 0xc863, 0x5fa2, 0xc85d, 0x5f97, 0xc857,
+    0x5f8c, 0xc850, 0x5f81, 0xc84a, 0x5f76, 0xc844, 0x5f6b, 0xc83e,
+    0x5f60, 0xc838, 0x5f55, 0xc832, 0x5f4a, 0xc82b, 0x5f3f, 0xc825,
+    0x5f34, 0xc81f, 0x5f29, 0xc819, 0x5f1e, 0xc813, 0x5f13, 0xc80d,
+    0x5f08, 0xc807, 0x5efd, 0xc801, 0x5ef2, 0xc7fb, 0x5ee7, 0xc7f5,
+    0x5edc, 0xc7ee, 0x5ed1, 0xc7e8, 0x5ec6, 0xc7e2, 0x5ebb, 0xc7dc,
+    0x5eb0, 0xc7d6, 0x5ea5, 0xc7d0, 0x5e9a, 0xc7ca, 0x5e8f, 0xc7c4,
+    0x5e84, 0xc7be, 0x5e79, 0xc7b8, 0x5e6e, 0xc7b2, 0x5e63, 0xc7ac,
+    0x5e58, 0xc7a6, 0x5e4d, 0xc7a0, 0x5e42, 0xc79a, 0x5e36, 0xc795,
+    0x5e2b, 0xc78f, 0x5e20, 0xc789, 0x5e15, 0xc783, 0x5e0a, 0xc77d,
+    0x5dff, 0xc777, 0x5df4, 0xc771, 0x5de9, 0xc76b, 0x5dde, 0xc765,
+    0x5dd3, 0xc75f, 0x5dc7, 0xc75a, 0x5dbc, 0xc754, 0x5db1, 0xc74e,
+    0x5da6, 0xc748, 0x5d9b, 0xc742, 0x5d90, 0xc73d, 0x5d85, 0xc737,
+    0x5d79, 0xc731, 0x5d6e, 0xc72b, 0x5d63, 0xc725, 0x5d58, 0xc720,
+    0x5d4d, 0xc71a, 0x5d42, 0xc714, 0x5d36, 0xc70e, 0x5d2b, 0xc709,
+    0x5d20, 0xc703, 0x5d15, 0xc6fd, 0x5d0a, 0xc6f7, 0x5cff, 0xc6f2,
+    0x5cf3, 0xc6ec, 0x5ce8, 0xc6e6, 0x5cdd, 0xc6e1, 0x5cd2, 0xc6db,
+    0x5cc6, 0xc6d5, 0x5cbb, 0xc6d0, 0x5cb0, 0xc6ca, 0x5ca5, 0xc6c5,
+    0x5c99, 0xc6bf, 0x5c8e, 0xc6b9, 0x5c83, 0xc6b4, 0x5c78, 0xc6ae,
+    0x5c6c, 0xc6a8, 0x5c61, 0xc6a3, 0x5c56, 0xc69d, 0x5c4b, 0xc698,
+    0x5c3f, 0xc692, 0x5c34, 0xc68d, 0x5c29, 0xc687, 0x5c1e, 0xc682,
+    0x5c12, 0xc67c, 0x5c07, 0xc677, 0x5bfc, 0xc671, 0x5bf0, 0xc66c,
+    0x5be5, 0xc666, 0x5bda, 0xc661, 0x5bce, 0xc65b, 0x5bc3, 0xc656,
+    0x5bb8, 0xc650, 0x5bac, 0xc64b, 0x5ba1, 0xc645, 0x5b96, 0xc640,
+    0x5b8a, 0xc63b, 0x5b7f, 0xc635, 0x5b74, 0xc630, 0x5b68, 0xc62a,
+    0x5b5d, 0xc625, 0x5b52, 0xc620, 0x5b46, 0xc61a, 0x5b3b, 0xc615,
+    0x5b30, 0xc610, 0x5b24, 0xc60a, 0x5b19, 0xc605, 0x5b0d, 0xc600,
+    0x5b02, 0xc5fa, 0x5af7, 0xc5f5, 0x5aeb, 0xc5f0, 0x5ae0, 0xc5ea,
+    0x5ad4, 0xc5e5, 0x5ac9, 0xc5e0, 0x5abe, 0xc5db, 0x5ab2, 0xc5d5,
+    0x5aa7, 0xc5d0, 0x5a9b, 0xc5cb, 0x5a90, 0xc5c6, 0x5a84, 0xc5c1,
+    0x5a79, 0xc5bb, 0x5a6e, 0xc5b6, 0x5a62, 0xc5b1, 0x5a57, 0xc5ac,
+    0x5a4b, 0xc5a7, 0x5a40, 0xc5a1, 0x5a34, 0xc59c, 0x5a29, 0xc597,
+    0x5a1d, 0xc592, 0x5a12, 0xc58d, 0x5a06, 0xc588, 0x59fb, 0xc583,
+    0x59ef, 0xc57e, 0x59e4, 0xc578, 0x59d8, 0xc573, 0x59cd, 0xc56e,
+    0x59c1, 0xc569, 0x59b6, 0xc564, 0x59aa, 0xc55f, 0x599f, 0xc55a,
+    0x5993, 0xc555, 0x5988, 0xc550, 0x597c, 0xc54b, 0x5971, 0xc546,
+    0x5965, 0xc541, 0x595a, 0xc53c, 0x594e, 0xc537, 0x5943, 0xc532,
+    0x5937, 0xc52d, 0x592c, 0xc528, 0x5920, 0xc523, 0x5914, 0xc51e,
+    0x5909, 0xc51a, 0x58fd, 0xc515, 0x58f2, 0xc510, 0x58e6, 0xc50b,
+    0x58db, 0xc506, 0x58cf, 0xc501, 0x58c3, 0xc4fc, 0x58b8, 0xc4f7,
+    0x58ac, 0xc4f2, 0x58a1, 0xc4ee, 0x5895, 0xc4e9, 0x5889, 0xc4e4,
+    0x587e, 0xc4df, 0x5872, 0xc4da, 0x5867, 0xc4d6, 0x585b, 0xc4d1,
+    0x584f, 0xc4cc, 0x5844, 0xc4c7, 0x5838, 0xc4c2, 0x582d, 0xc4be,
+    0x5821, 0xc4b9, 0x5815, 0xc4b4, 0x580a, 0xc4b0, 0x57fe, 0xc4ab,
+    0x57f2, 0xc4a6, 0x57e7, 0xc4a1, 0x57db, 0xc49d, 0x57cf, 0xc498,
+    0x57c4, 0xc493, 0x57b8, 0xc48f, 0x57ac, 0xc48a, 0x57a1, 0xc485,
+    0x5795, 0xc481, 0x5789, 0xc47c, 0x577e, 0xc478, 0x5772, 0xc473,
+    0x5766, 0xc46e, 0x575b, 0xc46a, 0x574f, 0xc465, 0x5743, 0xc461,
+    0x5737, 0xc45c, 0x572c, 0xc457, 0x5720, 0xc453, 0x5714, 0xc44e,
+    0x5709, 0xc44a, 0x56fd, 0xc445, 0x56f1, 0xc441, 0x56e5, 0xc43c,
+    0x56da, 0xc438, 0x56ce, 0xc433, 0x56c2, 0xc42f, 0x56b6, 0xc42a,
+    0x56ab, 0xc426, 0x569f, 0xc422, 0x5693, 0xc41d, 0x5687, 0xc419,
+    0x567c, 0xc414, 0x5670, 0xc410, 0x5664, 0xc40b, 0x5658, 0xc407,
+    0x564c, 0xc403, 0x5641, 0xc3fe, 0x5635, 0xc3fa, 0x5629, 0xc3f6,
+    0x561d, 0xc3f1, 0x5612, 0xc3ed, 0x5606, 0xc3e9, 0x55fa, 0xc3e4,
+    0x55ee, 0xc3e0, 0x55e2, 0xc3dc, 0x55d7, 0xc3d7, 0x55cb, 0xc3d3,
+    0x55bf, 0xc3cf, 0x55b3, 0xc3ca, 0x55a7, 0xc3c6, 0x559b, 0xc3c2,
+    0x5590, 0xc3be, 0x5584, 0xc3ba, 0x5578, 0xc3b5, 0x556c, 0xc3b1,
+    0x5560, 0xc3ad, 0x5554, 0xc3a9, 0x5549, 0xc3a5, 0x553d, 0xc3a0,
+    0x5531, 0xc39c, 0x5525, 0xc398, 0x5519, 0xc394, 0x550d, 0xc390,
+    0x5501, 0xc38c, 0x54f6, 0xc387, 0x54ea, 0xc383, 0x54de, 0xc37f,
+    0x54d2, 0xc37b, 0x54c6, 0xc377, 0x54ba, 0xc373, 0x54ae, 0xc36f,
+    0x54a2, 0xc36b, 0x5496, 0xc367, 0x548b, 0xc363, 0x547f, 0xc35f,
+    0x5473, 0xc35b, 0x5467, 0xc357, 0x545b, 0xc353, 0x544f, 0xc34f,
+    0x5443, 0xc34b, 0x5437, 0xc347, 0x542b, 0xc343, 0x541f, 0xc33f,
+    0x5413, 0xc33b, 0x5407, 0xc337, 0x53fb, 0xc333, 0x53f0, 0xc32f,
+    0x53e4, 0xc32b, 0x53d8, 0xc327, 0x53cc, 0xc323, 0x53c0, 0xc320,
+    0x53b4, 0xc31c, 0x53a8, 0xc318, 0x539c, 0xc314, 0x5390, 0xc310,
+    0x5384, 0xc30c, 0x5378, 0xc308, 0x536c, 0xc305, 0x5360, 0xc301,
+    0x5354, 0xc2fd, 0x5348, 0xc2f9, 0x533c, 0xc2f5, 0x5330, 0xc2f2,
+    0x5324, 0xc2ee, 0x5318, 0xc2ea, 0x530c, 0xc2e6, 0x5300, 0xc2e3,
+    0x52f4, 0xc2df, 0x52e8, 0xc2db, 0x52dc, 0xc2d8, 0x52d0, 0xc2d4,
+    0x52c4, 0xc2d0, 0x52b8, 0xc2cc, 0x52ac, 0xc2c9, 0x52a0, 0xc2c5,
+    0x5294, 0xc2c1, 0x5288, 0xc2be, 0x527c, 0xc2ba, 0x5270, 0xc2b7,
+    0x5264, 0xc2b3, 0x5258, 0xc2af, 0x524c, 0xc2ac, 0x5240, 0xc2a8,
+    0x5234, 0xc2a5, 0x5228, 0xc2a1, 0x521c, 0xc29d, 0x5210, 0xc29a,
+    0x5204, 0xc296, 0x51f7, 0xc293, 0x51eb, 0xc28f, 0x51df, 0xc28c,
+    0x51d3, 0xc288, 0x51c7, 0xc285, 0x51bb, 0xc281, 0x51af, 0xc27e,
+    0x51a3, 0xc27a, 0x5197, 0xc277, 0x518b, 0xc273, 0x517f, 0xc270,
+    0x5173, 0xc26d, 0x5167, 0xc269, 0x515a, 0xc266, 0x514e, 0xc262,
+    0x5142, 0xc25f, 0x5136, 0xc25c, 0x512a, 0xc258, 0x511e, 0xc255,
+    0x5112, 0xc251, 0x5106, 0xc24e, 0x50fa, 0xc24b, 0x50ed, 0xc247,
+    0x50e1, 0xc244, 0x50d5, 0xc241, 0x50c9, 0xc23e, 0x50bd, 0xc23a,
+    0x50b1, 0xc237, 0x50a5, 0xc234, 0x5099, 0xc230, 0x508c, 0xc22d,
+    0x5080, 0xc22a, 0x5074, 0xc227, 0x5068, 0xc223, 0x505c, 0xc220,
+    0x5050, 0xc21d, 0x5044, 0xc21a, 0x5037, 0xc217, 0x502b, 0xc213,
+    0x501f, 0xc210, 0x5013, 0xc20d, 0x5007, 0xc20a, 0x4ffb, 0xc207,
+    0x4fee, 0xc204, 0x4fe2, 0xc201, 0x4fd6, 0xc1fd, 0x4fca, 0xc1fa,
+    0x4fbe, 0xc1f7, 0x4fb2, 0xc1f4, 0x4fa5, 0xc1f1, 0x4f99, 0xc1ee,
+    0x4f8d, 0xc1eb, 0x4f81, 0xc1e8, 0x4f75, 0xc1e5, 0x4f68, 0xc1e2,
+    0x4f5c, 0xc1df, 0x4f50, 0xc1dc, 0x4f44, 0xc1d9, 0x4f38, 0xc1d6,
+    0x4f2b, 0xc1d3, 0x4f1f, 0xc1d0, 0x4f13, 0xc1cd, 0x4f07, 0xc1ca,
+    0x4efb, 0xc1c7, 0x4eee, 0xc1c4, 0x4ee2, 0xc1c1, 0x4ed6, 0xc1be,
+    0x4eca, 0xc1bb, 0x4ebd, 0xc1b8, 0x4eb1, 0xc1b6, 0x4ea5, 0xc1b3,
+    0x4e99, 0xc1b0, 0x4e8c, 0xc1ad, 0x4e80, 0xc1aa, 0x4e74, 0xc1a7,
+    0x4e68, 0xc1a4, 0x4e5c, 0xc1a2, 0x4e4f, 0xc19f, 0x4e43, 0xc19c,
+    0x4e37, 0xc199, 0x4e2b, 0xc196, 0x4e1e, 0xc194, 0x4e12, 0xc191,
+    0x4e06, 0xc18e, 0x4df9, 0xc18b, 0x4ded, 0xc189, 0x4de1, 0xc186,
+    0x4dd5, 0xc183, 0x4dc8, 0xc180, 0x4dbc, 0xc17e, 0x4db0, 0xc17b,
+    0x4da4, 0xc178, 0x4d97, 0xc176, 0x4d8b, 0xc173, 0x4d7f, 0xc170,
+    0x4d72, 0xc16e, 0x4d66, 0xc16b, 0x4d5a, 0xc168, 0x4d4e, 0xc166,
+    0x4d41, 0xc163, 0x4d35, 0xc161, 0x4d29, 0xc15e, 0x4d1c, 0xc15b,
+    0x4d10, 0xc159, 0x4d04, 0xc156, 0x4cf8, 0xc154, 0x4ceb, 0xc151,
+    0x4cdf, 0xc14f, 0x4cd3, 0xc14c, 0x4cc6, 0xc14a, 0x4cba, 0xc147,
+    0x4cae, 0xc145, 0x4ca1, 0xc142, 0x4c95, 0xc140, 0x4c89, 0xc13d,
+    0x4c7c, 0xc13b, 0x4c70, 0xc138, 0x4c64, 0xc136, 0x4c57, 0xc134,
+    0x4c4b, 0xc131, 0x4c3f, 0xc12f, 0x4c32, 0xc12c, 0x4c26, 0xc12a,
+    0x4c1a, 0xc128, 0x4c0d, 0xc125, 0x4c01, 0xc123, 0x4bf5, 0xc120,
+    0x4be8, 0xc11e, 0x4bdc, 0xc11c, 0x4bd0, 0xc119, 0x4bc3, 0xc117,
+    0x4bb7, 0xc115, 0x4bab, 0xc113, 0x4b9e, 0xc110, 0x4b92, 0xc10e,
+    0x4b85, 0xc10c, 0x4b79, 0xc109, 0x4b6d, 0xc107, 0x4b60, 0xc105,
+    0x4b54, 0xc103, 0x4b48, 0xc100, 0x4b3b, 0xc0fe, 0x4b2f, 0xc0fc,
+    0x4b23, 0xc0fa, 0x4b16, 0xc0f8, 0x4b0a, 0xc0f6, 0x4afd, 0xc0f3,
+    0x4af1, 0xc0f1, 0x4ae5, 0xc0ef, 0x4ad8, 0xc0ed, 0x4acc, 0xc0eb,
+    0x4ac0, 0xc0e9, 0x4ab3, 0xc0e7, 0x4aa7, 0xc0e4, 0x4a9a, 0xc0e2,
+    0x4a8e, 0xc0e0, 0x4a82, 0xc0de, 0x4a75, 0xc0dc, 0x4a69, 0xc0da,
+    0x4a5c, 0xc0d8, 0x4a50, 0xc0d6, 0x4a44, 0xc0d4, 0x4a37, 0xc0d2,
+    0x4a2b, 0xc0d0, 0x4a1e, 0xc0ce, 0x4a12, 0xc0cc, 0x4a06, 0xc0ca,
+    0x49f9, 0xc0c8, 0x49ed, 0xc0c6, 0x49e0, 0xc0c4, 0x49d4, 0xc0c2,
+    0x49c7, 0xc0c0, 0x49bb, 0xc0be, 0x49af, 0xc0bd, 0x49a2, 0xc0bb,
+    0x4996, 0xc0b9, 0x4989, 0xc0b7, 0x497d, 0xc0b5, 0x4970, 0xc0b3,
+    0x4964, 0xc0b1, 0x4958, 0xc0af, 0x494b, 0xc0ae, 0x493f, 0xc0ac,
+    0x4932, 0xc0aa, 0x4926, 0xc0a8, 0x4919, 0xc0a6, 0x490d, 0xc0a5,
+    0x4901, 0xc0a3, 0x48f4, 0xc0a1, 0x48e8, 0xc09f, 0x48db, 0xc09e,
+    0x48cf, 0xc09c, 0x48c2, 0xc09a, 0x48b6, 0xc098, 0x48a9, 0xc097,
+    0x489d, 0xc095, 0x4891, 0xc093, 0x4884, 0xc092, 0x4878, 0xc090,
+    0x486b, 0xc08e, 0x485f, 0xc08d, 0x4852, 0xc08b, 0x4846, 0xc089,
+    0x4839, 0xc088, 0x482d, 0xc086, 0x4820, 0xc085, 0x4814, 0xc083,
+    0x4807, 0xc081, 0x47fb, 0xc080, 0x47ef, 0xc07e, 0x47e2, 0xc07d,
+    0x47d6, 0xc07b, 0x47c9, 0xc07a, 0x47bd, 0xc078, 0x47b0, 0xc077,
+    0x47a4, 0xc075, 0x4797, 0xc074, 0x478b, 0xc072, 0x477e, 0xc071,
+    0x4772, 0xc06f, 0x4765, 0xc06e, 0x4759, 0xc06c, 0x474c, 0xc06b,
+    0x4740, 0xc069, 0x4733, 0xc068, 0x4727, 0xc067, 0x471a, 0xc065,
+    0x470e, 0xc064, 0x4701, 0xc062, 0x46f5, 0xc061, 0x46e8, 0xc060,
+    0x46dc, 0xc05e, 0x46cf, 0xc05d, 0x46c3, 0xc05c, 0x46b6, 0xc05a,
+    0x46aa, 0xc059, 0x469d, 0xc058, 0x4691, 0xc056, 0x4684, 0xc055,
+    0x4678, 0xc054, 0x466b, 0xc053, 0x465f, 0xc051, 0x4652, 0xc050,
+    0x4646, 0xc04f, 0x4639, 0xc04e, 0x462d, 0xc04c, 0x4620, 0xc04b,
+    0x4614, 0xc04a, 0x4607, 0xc049, 0x45fb, 0xc048, 0x45ee, 0xc047,
+    0x45e2, 0xc045, 0x45d5, 0xc044, 0x45c9, 0xc043, 0x45bc, 0xc042,
+    0x45b0, 0xc041, 0x45a3, 0xc040, 0x4597, 0xc03f, 0x458a, 0xc03d,
+    0x457e, 0xc03c, 0x4571, 0xc03b, 0x4565, 0xc03a, 0x4558, 0xc039,
+    0x454c, 0xc038, 0x453f, 0xc037, 0x4533, 0xc036, 0x4526, 0xc035,
+    0x451a, 0xc034, 0x450d, 0xc033, 0x4500, 0xc032, 0x44f4, 0xc031,
+    0x44e7, 0xc030, 0x44db, 0xc02f, 0x44ce, 0xc02e, 0x44c2, 0xc02d,
+    0x44b5, 0xc02c, 0x44a9, 0xc02b, 0x449c, 0xc02b, 0x4490, 0xc02a,
+    0x4483, 0xc029, 0x4477, 0xc028, 0x446a, 0xc027, 0x445e, 0xc026,
+    0x4451, 0xc025, 0x4444, 0xc024, 0x4438, 0xc024, 0x442b, 0xc023,
+    0x441f, 0xc022, 0x4412, 0xc021, 0x4406, 0xc020, 0x43f9, 0xc020,
+    0x43ed, 0xc01f, 0x43e0, 0xc01e, 0x43d4, 0xc01d, 0x43c7, 0xc01d,
+    0x43bb, 0xc01c, 0x43ae, 0xc01b, 0x43a1, 0xc01a, 0x4395, 0xc01a,
+    0x4388, 0xc019, 0x437c, 0xc018, 0x436f, 0xc018, 0x4363, 0xc017,
+    0x4356, 0xc016, 0x434a, 0xc016, 0x433d, 0xc015, 0x4330, 0xc014,
+    0x4324, 0xc014, 0x4317, 0xc013, 0x430b, 0xc013, 0x42fe, 0xc012,
+    0x42f2, 0xc011, 0x42e5, 0xc011, 0x42d9, 0xc010, 0x42cc, 0xc010,
+    0x42c0, 0xc00f, 0x42b3, 0xc00f, 0x42a6, 0xc00e, 0x429a, 0xc00e,
+    0x428d, 0xc00d, 0x4281, 0xc00d, 0x4274, 0xc00c, 0x4268, 0xc00c,
+    0x425b, 0xc00b, 0x424e, 0xc00b, 0x4242, 0xc00a, 0x4235, 0xc00a,
+    0x4229, 0xc009, 0x421c, 0xc009, 0x4210, 0xc009, 0x4203, 0xc008,
+    0x41f7, 0xc008, 0x41ea, 0xc007, 0x41dd, 0xc007, 0x41d1, 0xc007,
+    0x41c4, 0xc006, 0x41b8, 0xc006, 0x41ab, 0xc006, 0x419f, 0xc005,
+    0x4192, 0xc005, 0x4186, 0xc005, 0x4179, 0xc004, 0x416c, 0xc004,
+    0x4160, 0xc004, 0x4153, 0xc004, 0x4147, 0xc003, 0x413a, 0xc003,
+    0x412e, 0xc003, 0x4121, 0xc003, 0x4114, 0xc002, 0x4108, 0xc002,
+    0x40fb, 0xc002, 0x40ef, 0xc002, 0x40e2, 0xc002, 0x40d6, 0xc001,
+    0x40c9, 0xc001, 0x40bc, 0xc001, 0x40b0, 0xc001, 0x40a3, 0xc001,
+    0x4097, 0xc001, 0x408a, 0xc001, 0x407e, 0xc000, 0x4071, 0xc000,
+    0x4065, 0xc000, 0x4058, 0xc000, 0x404b, 0xc000, 0x403f, 0xc000,
+    0x4032, 0xc000, 0x4026, 0xc000, 0x4019, 0xc000, 0x400d, 0xc000,
+};
+
+/**    
+* @brief  Initialization function for the Q15 RFFT/RIFFT.   
+* @param[in, out] *S             points to an instance of the Q15 RFFT/RIFFT structure.   
+* @param[in]      fftLenReal     length of the FFT.   
+* @param[in]      ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.   
+* @param[in]      bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.   
+* @return		The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.   
+*    
+* \par Description:   
+* \par   
+* The parameter <code>fftLenReal</code>	Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192.    
+* \par    
+* The parameter <code>ifftFlagR</code> controls whether a forward or inverse transform is computed.    
+* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.    
+* \par    
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.    
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.   
+* \par    
+* This function also initializes Twiddle factor table.     
+*/
+arm_status arm_rfft_init_q15(
+    arm_rfft_instance_q15 * S,
+    uint32_t fftLenReal,
+    uint32_t ifftFlagR,
+    uint32_t bitReverseFlag)
+{
+    /*  Initialise the default arm status */
+    arm_status status = ARM_MATH_SUCCESS;
+
+    /*  Initialize the Real FFT length */
+    S->fftLenReal = (uint16_t) fftLenReal;
+
+    /*  Initialize the Twiddle coefficientA pointer */
+    S->pTwiddleAReal = (q15_t *) realCoefAQ15;
+
+    /*  Initialize the Twiddle coefficientB pointer */
+    S->pTwiddleBReal = (q15_t *) realCoefBQ15;
+
+    /*  Initialize the Flag for selection of RFFT or RIFFT */
+    S->ifftFlagR = (uint8_t) ifftFlagR;
+
+    /*  Initialize the Flag for calculation Bit reversal or not */
+    S->bitReverseFlagR = (uint8_t) bitReverseFlag;
+
+    /*  Initialization of coef modifier depending on the FFT length */
+    switch (S->fftLenReal)
+    {
+    case 8192u:
+        S->twidCoefRModifier = 1u;
+        S->pCfft = &arm_cfft_sR_q15_len4096;
+        break;
+    case 4096u:
+        S->twidCoefRModifier = 2u;
+        S->pCfft = &arm_cfft_sR_q15_len2048;
+        break;
+    case 2048u:
+        S->twidCoefRModifier = 4u;
+        S->pCfft = &arm_cfft_sR_q15_len1024;
+        break;
+    case 1024u:
+        S->twidCoefRModifier = 8u;
+        S->pCfft = &arm_cfft_sR_q15_len512;
+        break;
+    case 512u:
+        S->twidCoefRModifier = 16u;
+        S->pCfft = &arm_cfft_sR_q15_len256;
+        break;
+    case 256u:
+        S->twidCoefRModifier = 32u;
+        S->pCfft = &arm_cfft_sR_q15_len128;
+        break;
+    case 128u:
+        S->twidCoefRModifier = 64u;
+        S->pCfft = &arm_cfft_sR_q15_len64;
+        break;
+    case 64u:
+        S->twidCoefRModifier = 128u;
+        S->pCfft = &arm_cfft_sR_q15_len32;
+        break;
+    case 32u:
+        S->twidCoefRModifier = 256u;
+        S->pCfft = &arm_cfft_sR_q15_len16;
+        break;
+    default:
+        /*  Reporting argument error if rfftSize is not valid value */
+        status = ARM_MATH_ARGUMENT_ERROR;
+        break;
+    }
+
+    /* return the status of RFFT Init function */
+    return (status);
+}
+
+/**    
+* @} end of RealFFT group    
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,4285 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_rfft_init_q31.c    
+*    
+* Description:	RFFT & RIFFT Q31 initialisation function    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.  
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+#include "arm_const_structs.h"
+
+/**    
+* @ingroup groupTransforms    
+*/
+
+/**    
+* @addtogroup RealFFT    
+* @{    
+*/
+
+/**    
+* \par    
+* Generation fixed-point realCoefAQ31 array in Q31 format:    
+* \par    
+* n = 4096    
+* <pre>for (i = 0; i < n; i++)    
+* {    
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));    
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));    
+* }</pre>    
+* \par    
+* Convert to fixed point Q31 format    
+*     round(pATable[i] * pow(2, 31))    
+*/
+
+
+static const q31_t realCoefAQ31[8192] = {
+    0x40000000, 0xc0000000, 0x3ff36f02, 0xc000013c,
+    0x3fe6de05, 0xc00004ef, 0x3fda4d09, 0xc0000b1a,
+    0x3fcdbc0f, 0xc00013bd, 0x3fc12b16, 0xc0001ed8,
+    0x3fb49a1f, 0xc0002c6a, 0x3fa8092c, 0xc0003c74,
+    0x3f9b783c, 0xc0004ef5, 0x3f8ee750, 0xc00063ee,
+    0x3f825668, 0xc0007b5f, 0x3f75c585, 0xc0009547,
+    0x3f6934a8, 0xc000b1a7, 0x3f5ca3d0, 0xc000d07e,
+    0x3f5012fe, 0xc000f1ce, 0x3f438234, 0xc0011594,
+    0x3f36f170, 0xc0013bd3, 0x3f2a60b4, 0xc0016489,
+    0x3f1dd001, 0xc0018fb6, 0x3f113f56, 0xc001bd5c,
+    0x3f04aeb5, 0xc001ed78, 0x3ef81e1d, 0xc002200d,
+    0x3eeb8d8f, 0xc0025519, 0x3edefd0c, 0xc0028c9c,
+    0x3ed26c94, 0xc002c697, 0x3ec5dc28, 0xc003030a,
+    0x3eb94bc8, 0xc00341f4, 0x3eacbb74, 0xc0038356,
+    0x3ea02b2e, 0xc003c72f, 0x3e939af5, 0xc0040d80,
+    0x3e870aca, 0xc0045648, 0x3e7a7aae, 0xc004a188,
+    0x3e6deaa1, 0xc004ef3f, 0x3e615aa3, 0xc0053f6e,
+    0x3e54cab5, 0xc0059214, 0x3e483ad8, 0xc005e731,
+    0x3e3bab0b, 0xc0063ec6, 0x3e2f1b50, 0xc00698d3,
+    0x3e228ba7, 0xc006f556, 0x3e15fc11, 0xc0075452,
+    0x3e096c8d, 0xc007b5c4, 0x3dfcdd1d, 0xc00819ae,
+    0x3df04dc0, 0xc008800f, 0x3de3be78, 0xc008e8e8,
+    0x3dd72f45, 0xc0095438, 0x3dcaa027, 0xc009c1ff,
+    0x3dbe111e, 0xc00a323d, 0x3db1822c, 0xc00aa4f3,
+    0x3da4f351, 0xc00b1a20, 0x3d98648d, 0xc00b91c4,
+    0x3d8bd5e1, 0xc00c0be0, 0x3d7f474d, 0xc00c8872,
+    0x3d72b8d2, 0xc00d077c, 0x3d662a70, 0xc00d88fd,
+    0x3d599c28, 0xc00e0cf5, 0x3d4d0df9, 0xc00e9364,
+    0x3d407fe6, 0xc00f1c4a, 0x3d33f1ed, 0xc00fa7a8,
+    0x3d276410, 0xc010357c, 0x3d1ad650, 0xc010c5c7,
+    0x3d0e48ab, 0xc011588a, 0x3d01bb24, 0xc011edc3,
+    0x3cf52dbb, 0xc0128574, 0x3ce8a06f, 0xc0131f9b,
+    0x3cdc1342, 0xc013bc39, 0x3ccf8634, 0xc0145b4e,
+    0x3cc2f945, 0xc014fcda, 0x3cb66c77, 0xc015a0dd,
+    0x3ca9dfc8, 0xc0164757, 0x3c9d533b, 0xc016f047,
+    0x3c90c6cf, 0xc0179bae, 0x3c843a85, 0xc018498c,
+    0x3c77ae5e, 0xc018f9e1, 0x3c6b2259, 0xc019acac,
+    0x3c5e9678, 0xc01a61ee, 0x3c520aba, 0xc01b19a7,
+    0x3c457f21, 0xc01bd3d6, 0x3c38f3ac, 0xc01c907c,
+    0x3c2c685d, 0xc01d4f99, 0x3c1fdd34, 0xc01e112b,
+    0x3c135231, 0xc01ed535, 0x3c06c754, 0xc01f9bb5,
+    0x3bfa3c9f, 0xc02064ab, 0x3bedb212, 0xc0213018,
+    0x3be127ac, 0xc021fdfb, 0x3bd49d70, 0xc022ce54,
+    0x3bc8135c, 0xc023a124, 0x3bbb8973, 0xc024766a,
+    0x3baeffb3, 0xc0254e27, 0x3ba2761e, 0xc0262859,
+    0x3b95ecb4, 0xc0270502, 0x3b896375, 0xc027e421,
+    0x3b7cda63, 0xc028c5b6, 0x3b70517d, 0xc029a9c1,
+    0x3b63c8c4, 0xc02a9042, 0x3b574039, 0xc02b7939,
+    0x3b4ab7db, 0xc02c64a6, 0x3b3e2fac, 0xc02d5289,
+    0x3b31a7ac, 0xc02e42e2, 0x3b251fdc, 0xc02f35b1,
+    0x3b18983b, 0xc0302af5, 0x3b0c10cb, 0xc03122b0,
+    0x3aff898c, 0xc0321ce0, 0x3af3027e, 0xc0331986,
+    0x3ae67ba2, 0xc03418a2, 0x3ad9f4f8, 0xc0351a33,
+    0x3acd6e81, 0xc0361e3a, 0x3ac0e83d, 0xc03724b6,
+    0x3ab4622d, 0xc0382da8, 0x3aa7dc52, 0xc0393910,
+    0x3a9b56ab, 0xc03a46ed, 0x3a8ed139, 0xc03b573f,
+    0x3a824bfd, 0xc03c6a07, 0x3a75c6f8, 0xc03d7f44,
+    0x3a694229, 0xc03e96f6, 0x3a5cbd91, 0xc03fb11d,
+    0x3a503930, 0xc040cdba, 0x3a43b508, 0xc041eccc,
+    0x3a373119, 0xc0430e53, 0x3a2aad62, 0xc044324f,
+    0x3a1e29e5, 0xc04558c0, 0x3a11a6a3, 0xc04681a6,
+    0x3a05239a, 0xc047ad01, 0x39f8a0cd, 0xc048dad1,
+    0x39ec1e3b, 0xc04a0b16, 0x39df9be6, 0xc04b3dcf,
+    0x39d319cc, 0xc04c72fe, 0x39c697f0, 0xc04daaa1,
+    0x39ba1651, 0xc04ee4b8, 0x39ad94f0, 0xc0502145,
+    0x39a113cd, 0xc0516045, 0x399492ea, 0xc052a1bb,
+    0x39881245, 0xc053e5a5, 0x397b91e1, 0xc0552c03,
+    0x396f11bc, 0xc05674d6, 0x396291d9, 0xc057c01d,
+    0x39561237, 0xc0590dd8, 0x394992d7, 0xc05a5e07,
+    0x393d13b8, 0xc05bb0ab, 0x393094dd, 0xc05d05c3,
+    0x39241645, 0xc05e5d4e, 0x391797f0, 0xc05fb74e,
+    0x390b19e0, 0xc06113c2, 0x38fe9c15, 0xc06272aa,
+    0x38f21e8e, 0xc063d405, 0x38e5a14d, 0xc06537d4,
+    0x38d92452, 0xc0669e18, 0x38cca79e, 0xc06806ce,
+    0x38c02b31, 0xc06971f9, 0x38b3af0c, 0xc06adf97,
+    0x38a7332e, 0xc06c4fa8, 0x389ab799, 0xc06dc22e,
+    0x388e3c4d, 0xc06f3726, 0x3881c14b, 0xc070ae92,
+    0x38754692, 0xc0722871, 0x3868cc24, 0xc073a4c3,
+    0x385c5201, 0xc0752389, 0x384fd829, 0xc076a4c2,
+    0x38435e9d, 0xc078286e, 0x3836e55d, 0xc079ae8c,
+    0x382a6c6a, 0xc07b371e, 0x381df3c5, 0xc07cc223,
+    0x38117b6d, 0xc07e4f9b, 0x38050364, 0xc07fdf85,
+    0x37f88ba9, 0xc08171e2, 0x37ec143e, 0xc08306b2,
+    0x37df9d22, 0xc0849df4, 0x37d32657, 0xc08637a9,
+    0x37c6afdc, 0xc087d3d0, 0x37ba39b3, 0xc089726a,
+    0x37adc3db, 0xc08b1376, 0x37a14e55, 0xc08cb6f5,
+    0x3794d922, 0xc08e5ce5, 0x37886442, 0xc0900548,
+    0x377befb5, 0xc091b01d, 0x376f7b7d, 0xc0935d64,
+    0x37630799, 0xc0950d1d, 0x3756940a, 0xc096bf48,
+    0x374a20d0, 0xc09873e4, 0x373daded, 0xc09a2af3,
+    0x37313b60, 0xc09be473, 0x3724c92a, 0xc09da065,
+    0x3718574b, 0xc09f5ec8, 0x370be5c4, 0xc0a11f9d,
+    0x36ff7496, 0xc0a2e2e3, 0x36f303c0, 0xc0a4a89b,
+    0x36e69344, 0xc0a670c4, 0x36da2321, 0xc0a83b5e,
+    0x36cdb359, 0xc0aa086a, 0x36c143ec, 0xc0abd7e6,
+    0x36b4d4d9, 0xc0ada9d4, 0x36a86623, 0xc0af7e33,
+    0x369bf7c9, 0xc0b15502, 0x368f89cb, 0xc0b32e42,
+    0x36831c2b, 0xc0b509f3, 0x3676aee8, 0xc0b6e815,
+    0x366a4203, 0xc0b8c8a7, 0x365dd57d, 0xc0baabaa,
+    0x36516956, 0xc0bc911d, 0x3644fd8f, 0xc0be7901,
+    0x36389228, 0xc0c06355, 0x362c2721, 0xc0c25019,
+    0x361fbc7b, 0xc0c43f4d, 0x36135237, 0xc0c630f2,
+    0x3606e854, 0xc0c82506, 0x35fa7ed4, 0xc0ca1b8a,
+    0x35ee15b7, 0xc0cc147f, 0x35e1acfd, 0xc0ce0fe3,
+    0x35d544a7, 0xc0d00db6, 0x35c8dcb6, 0xc0d20dfa,
+    0x35bc7529, 0xc0d410ad, 0x35b00e02, 0xc0d615cf,
+    0x35a3a740, 0xc0d81d61, 0x359740e5, 0xc0da2762,
+    0x358adaf0, 0xc0dc33d2, 0x357e7563, 0xc0de42b2,
+    0x3572103d, 0xc0e05401, 0x3565ab80, 0xc0e267be,
+    0x3559472b, 0xc0e47deb, 0x354ce33f, 0xc0e69686,
+    0x35407fbd, 0xc0e8b190, 0x35341ca5, 0xc0eacf09,
+    0x3527b9f7, 0xc0eceef1, 0x351b57b5, 0xc0ef1147,
+    0x350ef5de, 0xc0f1360b, 0x35029473, 0xc0f35d3e,
+    0x34f63374, 0xc0f586df, 0x34e9d2e3, 0xc0f7b2ee,
+    0x34dd72be, 0xc0f9e16b, 0x34d11308, 0xc0fc1257,
+    0x34c4b3c0, 0xc0fe45b0, 0x34b854e7, 0xc1007b77,
+    0x34abf67e, 0xc102b3ac, 0x349f9884, 0xc104ee4f,
+    0x34933afa, 0xc1072b5f, 0x3486dde1, 0xc1096add,
+    0x347a8139, 0xc10bacc8, 0x346e2504, 0xc10df120,
+    0x3461c940, 0xc11037e6, 0x34556def, 0xc1128119,
+    0x34491311, 0xc114ccb9, 0x343cb8a7, 0xc1171ac6,
+    0x34305eb0, 0xc1196b3f, 0x3424052f, 0xc11bbe26,
+    0x3417ac22, 0xc11e1379, 0x340b538b, 0xc1206b39,
+    0x33fefb6a, 0xc122c566, 0x33f2a3bf, 0xc12521ff,
+    0x33e64c8c, 0xc1278104, 0x33d9f5cf, 0xc129e276,
+    0x33cd9f8b, 0xc12c4653, 0x33c149bf, 0xc12eac9d,
+    0x33b4f46c, 0xc1311553, 0x33a89f92, 0xc1338075,
+    0x339c4b32, 0xc135ee02, 0x338ff74d, 0xc1385dfb,
+    0x3383a3e2, 0xc13ad060, 0x337750f2, 0xc13d4530,
+    0x336afe7e, 0xc13fbc6c, 0x335eac86, 0xc1423613,
+    0x33525b0b, 0xc144b225, 0x33460a0d, 0xc14730a3,
+    0x3339b98d, 0xc149b18b, 0x332d698a, 0xc14c34df,
+    0x33211a07, 0xc14eba9d, 0x3314cb02, 0xc15142c6,
+    0x33087c7d, 0xc153cd5a, 0x32fc2e77, 0xc1565a58,
+    0x32efe0f2, 0xc158e9c1, 0x32e393ef, 0xc15b7b94,
+    0x32d7476c, 0xc15e0fd1, 0x32cafb6b, 0xc160a678,
+    0x32beafed, 0xc1633f8a, 0x32b264f2, 0xc165db05,
+    0x32a61a7a, 0xc16878eb, 0x3299d085, 0xc16b193a,
+    0x328d8715, 0xc16dbbf3, 0x32813e2a, 0xc1706115,
+    0x3274f5c3, 0xc17308a1, 0x3268ade3, 0xc175b296,
+    0x325c6688, 0xc1785ef4, 0x32501fb5, 0xc17b0dbb,
+    0x3243d968, 0xc17dbeec, 0x323793a3, 0xc1807285,
+    0x322b4e66, 0xc1832888, 0x321f09b1, 0xc185e0f3,
+    0x3212c585, 0xc1889bc6, 0x320681e3, 0xc18b5903,
+    0x31fa3ecb, 0xc18e18a7, 0x31edfc3d, 0xc190dab4,
+    0x31e1ba3a, 0xc1939f29, 0x31d578c2, 0xc1966606,
+    0x31c937d6, 0xc1992f4c, 0x31bcf777, 0xc19bfaf9,
+    0x31b0b7a4, 0xc19ec90d, 0x31a4785e, 0xc1a1998a,
+    0x319839a6, 0xc1a46c6e, 0x318bfb7d, 0xc1a741b9,
+    0x317fbde2, 0xc1aa196c, 0x317380d6, 0xc1acf386,
+    0x31674459, 0xc1afd007, 0x315b086d, 0xc1b2aef0,
+    0x314ecd11, 0xc1b5903f, 0x31429247, 0xc1b873f5,
+    0x3136580d, 0xc1bb5a11, 0x312a1e66, 0xc1be4294,
+    0x311de551, 0xc1c12d7e, 0x3111accf, 0xc1c41ace,
+    0x310574e0, 0xc1c70a84, 0x30f93d86, 0xc1c9fca0,
+    0x30ed06bf, 0xc1ccf122, 0x30e0d08d, 0xc1cfe80a,
+    0x30d49af1, 0xc1d2e158, 0x30c865ea, 0xc1d5dd0c,
+    0x30bc317a, 0xc1d8db25, 0x30affda0, 0xc1dbdba3,
+    0x30a3ca5d, 0xc1dede87, 0x309797b2, 0xc1e1e3d0,
+    0x308b659f, 0xc1e4eb7e, 0x307f3424, 0xc1e7f591,
+    0x30730342, 0xc1eb0209, 0x3066d2fa, 0xc1ee10e5,
+    0x305aa34c, 0xc1f12227, 0x304e7438, 0xc1f435cc,
+    0x304245c0, 0xc1f74bd6, 0x303617e2, 0xc1fa6445,
+    0x3029eaa1, 0xc1fd7f17, 0x301dbdfb, 0xc2009c4e,
+    0x301191f3, 0xc203bbe8, 0x30056687, 0xc206dde6,
+    0x2ff93bba, 0xc20a0248, 0x2fed118a, 0xc20d290d,
+    0x2fe0e7f9, 0xc2105236, 0x2fd4bf08, 0xc2137dc2,
+    0x2fc896b5, 0xc216abb1, 0x2fbc6f03, 0xc219dc03,
+    0x2fb047f2, 0xc21d0eb8, 0x2fa42181, 0xc22043d0,
+    0x2f97fbb2, 0xc2237b4b, 0x2f8bd685, 0xc226b528,
+    0x2f7fb1fa, 0xc229f167, 0x2f738e12, 0xc22d3009,
+    0x2f676ace, 0xc230710d, 0x2f5b482d, 0xc233b473,
+    0x2f4f2630, 0xc236fa3b, 0x2f4304d8, 0xc23a4265,
+    0x2f36e426, 0xc23d8cf1, 0x2f2ac419, 0xc240d9de,
+    0x2f1ea4b2, 0xc244292c, 0x2f1285f2, 0xc2477adc,
+    0x2f0667d9, 0xc24aceed, 0x2efa4a67, 0xc24e255e,
+    0x2eee2d9d, 0xc2517e31, 0x2ee2117c, 0xc254d965,
+    0x2ed5f604, 0xc25836f9, 0x2ec9db35, 0xc25b96ee,
+    0x2ebdc110, 0xc25ef943, 0x2eb1a796, 0xc2625df8,
+    0x2ea58ec6, 0xc265c50e, 0x2e9976a1, 0xc2692e83,
+    0x2e8d5f29, 0xc26c9a58, 0x2e81485c, 0xc270088e,
+    0x2e75323c, 0xc2737922, 0x2e691cc9, 0xc276ec16,
+    0x2e5d0804, 0xc27a616a, 0x2e50f3ed, 0xc27dd91c,
+    0x2e44e084, 0xc281532e, 0x2e38cdcb, 0xc284cf9f,
+    0x2e2cbbc1, 0xc2884e6e, 0x2e20aa67, 0xc28bcf9c,
+    0x2e1499bd, 0xc28f5329, 0x2e0889c4, 0xc292d914,
+    0x2dfc7a7c, 0xc296615d, 0x2df06be6, 0xc299ec05,
+    0x2de45e03, 0xc29d790a, 0x2dd850d2, 0xc2a1086d,
+    0x2dcc4454, 0xc2a49a2e, 0x2dc0388a, 0xc2a82e4d,
+    0x2db42d74, 0xc2abc4c9, 0x2da82313, 0xc2af5da2,
+    0x2d9c1967, 0xc2b2f8d8, 0x2d901070, 0xc2b6966c,
+    0x2d84082f, 0xc2ba365c, 0x2d7800a5, 0xc2bdd8a9,
+    0x2d6bf9d1, 0xc2c17d52, 0x2d5ff3b5, 0xc2c52459,
+    0x2d53ee51, 0xc2c8cdbb, 0x2d47e9a5, 0xc2cc7979,
+    0x2d3be5b1, 0xc2d02794, 0x2d2fe277, 0xc2d3d80a,
+    0x2d23dff7, 0xc2d78add, 0x2d17de31, 0xc2db400a,
+    0x2d0bdd25, 0xc2def794, 0x2cffdcd4, 0xc2e2b178,
+    0x2cf3dd3f, 0xc2e66db8, 0x2ce7de66, 0xc2ea2c53,
+    0x2cdbe04a, 0xc2eded49, 0x2ccfe2ea, 0xc2f1b099,
+    0x2cc3e648, 0xc2f57644, 0x2cb7ea63, 0xc2f93e4a,
+    0x2cabef3d, 0xc2fd08a9, 0x2c9ff4d6, 0xc300d563,
+    0x2c93fb2e, 0xc304a477, 0x2c880245, 0xc30875e5,
+    0x2c7c0a1d, 0xc30c49ad, 0x2c7012b5, 0xc3101fce,
+    0x2c641c0e, 0xc313f848, 0x2c582629, 0xc317d31c,
+    0x2c4c3106, 0xc31bb049, 0x2c403ca5, 0xc31f8fcf,
+    0x2c344908, 0xc32371ae, 0x2c28562d, 0xc32755e5,
+    0x2c1c6417, 0xc32b3c75, 0x2c1072c4, 0xc32f255e,
+    0x2c048237, 0xc333109e, 0x2bf8926f, 0xc336fe37,
+    0x2beca36c, 0xc33aee27, 0x2be0b52f, 0xc33ee070,
+    0x2bd4c7ba, 0xc342d510, 0x2bc8db0b, 0xc346cc07,
+    0x2bbcef23, 0xc34ac556, 0x2bb10404, 0xc34ec0fc,
+    0x2ba519ad, 0xc352bef9, 0x2b99301f, 0xc356bf4d,
+    0x2b8d475b, 0xc35ac1f7, 0x2b815f60, 0xc35ec6f8,
+    0x2b75782f, 0xc362ce50, 0x2b6991ca, 0xc366d7fd,
+    0x2b5dac2f, 0xc36ae401, 0x2b51c760, 0xc36ef25b,
+    0x2b45e35d, 0xc373030a, 0x2b3a0027, 0xc377160f,
+    0x2b2e1dbe, 0xc37b2b6a, 0x2b223c22, 0xc37f4319,
+    0x2b165b54, 0xc3835d1e, 0x2b0a7b54, 0xc3877978,
+    0x2afe9c24, 0xc38b9827, 0x2af2bdc3, 0xc38fb92a,
+    0x2ae6e031, 0xc393dc82, 0x2adb0370, 0xc398022f,
+    0x2acf277f, 0xc39c2a2f, 0x2ac34c60, 0xc3a05484,
+    0x2ab77212, 0xc3a4812c, 0x2aab9896, 0xc3a8b028,
+    0x2a9fbfed, 0xc3ace178, 0x2a93e817, 0xc3b1151b,
+    0x2a881114, 0xc3b54b11, 0x2a7c3ae5, 0xc3b9835a,
+    0x2a70658a, 0xc3bdbdf6, 0x2a649105, 0xc3c1fae5,
+    0x2a58bd54, 0xc3c63a26, 0x2a4cea79, 0xc3ca7bba,
+    0x2a411874, 0xc3cebfa0, 0x2a354746, 0xc3d305d8,
+    0x2a2976ef, 0xc3d74e62, 0x2a1da770, 0xc3db993e,
+    0x2a11d8c8, 0xc3dfe66c, 0x2a060af9, 0xc3e435ea,
+    0x29fa3e03, 0xc3e887bb, 0x29ee71e6, 0xc3ecdbdc,
+    0x29e2a6a3, 0xc3f1324e, 0x29d6dc3b, 0xc3f58b10,
+    0x29cb12ad, 0xc3f9e624, 0x29bf49fa, 0xc3fe4388,
+    0x29b38223, 0xc402a33c, 0x29a7bb28, 0xc4070540,
+    0x299bf509, 0xc40b6994, 0x29902fc7, 0xc40fd037,
+    0x29846b63, 0xc414392b, 0x2978a7dd, 0xc418a46d,
+    0x296ce535, 0xc41d11ff, 0x2961236c, 0xc42181e0,
+    0x29556282, 0xc425f410, 0x2949a278, 0xc42a688f,
+    0x293de34e, 0xc42edf5c, 0x29322505, 0xc4335877,
+    0x2926679c, 0xc437d3e1, 0x291aab16, 0xc43c5199,
+    0x290eef71, 0xc440d19e, 0x290334af, 0xc44553f2,
+    0x28f77acf, 0xc449d892, 0x28ebc1d3, 0xc44e5f80,
+    0x28e009ba, 0xc452e8bc, 0x28d45286, 0xc4577444,
+    0x28c89c37, 0xc45c0219, 0x28bce6cd, 0xc460923b,
+    0x28b13248, 0xc46524a9, 0x28a57ea9, 0xc469b963,
+    0x2899cbf1, 0xc46e5069, 0x288e1a20, 0xc472e9bc,
+    0x28826936, 0xc477855a, 0x2876b934, 0xc47c2344,
+    0x286b0a1a, 0xc480c379, 0x285f5be9, 0xc48565f9,
+    0x2853aea1, 0xc48a0ac4, 0x28480243, 0xc48eb1db,
+    0x283c56cf, 0xc4935b3c, 0x2830ac45, 0xc49806e7,
+    0x282502a7, 0xc49cb4dd, 0x281959f4, 0xc4a1651c,
+    0x280db22d, 0xc4a617a6, 0x28020b52, 0xc4aacc7a,
+    0x27f66564, 0xc4af8397, 0x27eac063, 0xc4b43cfd,
+    0x27df1c50, 0xc4b8f8ad, 0x27d3792b, 0xc4bdb6a6,
+    0x27c7d6f4, 0xc4c276e8, 0x27bc35ad, 0xc4c73972,
+    0x27b09555, 0xc4cbfe45, 0x27a4f5ed, 0xc4d0c560,
+    0x27995776, 0xc4d58ec3, 0x278db9ef, 0xc4da5a6f,
+    0x27821d59, 0xc4df2862, 0x277681b6, 0xc4e3f89c,
+    0x276ae704, 0xc4e8cb1e, 0x275f4d45, 0xc4ed9fe7,
+    0x2753b479, 0xc4f276f7, 0x27481ca1, 0xc4f7504e,
+    0x273c85bc, 0xc4fc2bec, 0x2730efcc, 0xc50109d0,
+    0x27255ad1, 0xc505e9fb, 0x2719c6cb, 0xc50acc6b,
+    0x270e33bb, 0xc50fb121, 0x2702a1a1, 0xc514981d,
+    0x26f7107e, 0xc519815f, 0x26eb8052, 0xc51e6ce6,
+    0x26dff11d, 0xc5235ab2, 0x26d462e1, 0xc5284ac3,
+    0x26c8d59c, 0xc52d3d18, 0x26bd4951, 0xc53231b3,
+    0x26b1bdff, 0xc5372891, 0x26a633a6, 0xc53c21b4,
+    0x269aaa48, 0xc5411d1b, 0x268f21e5, 0xc5461ac6,
+    0x26839a7c, 0xc54b1ab4, 0x26781410, 0xc5501ce5,
+    0x266c8e9f, 0xc555215a, 0x26610a2a, 0xc55a2812,
+    0x265586b3, 0xc55f310d, 0x264a0438, 0xc5643c4a,
+    0x263e82bc, 0xc56949ca, 0x2633023e, 0xc56e598c,
+    0x262782be, 0xc5736b90, 0x261c043d, 0xc5787fd6,
+    0x261086bc, 0xc57d965d, 0x26050a3b, 0xc582af26,
+    0x25f98ebb, 0xc587ca31, 0x25ee143b, 0xc58ce77c,
+    0x25e29abc, 0xc5920708, 0x25d72240, 0xc59728d5,
+    0x25cbaac5, 0xc59c4ce3, 0x25c0344d, 0xc5a17330,
+    0x25b4bed8, 0xc5a69bbe, 0x25a94a67, 0xc5abc68c,
+    0x259dd6f9, 0xc5b0f399, 0x25926490, 0xc5b622e6,
+    0x2586f32c, 0xc5bb5472, 0x257b82cd, 0xc5c0883d,
+    0x25701374, 0xc5c5be47, 0x2564a521, 0xc5caf690,
+    0x255937d5, 0xc5d03118, 0x254dcb8f, 0xc5d56ddd,
+    0x25426051, 0xc5daace1, 0x2536f61b, 0xc5dfee22,
+    0x252b8cee, 0xc5e531a1, 0x252024c9, 0xc5ea775e,
+    0x2514bdad, 0xc5efbf58, 0x2509579b, 0xc5f5098f,
+    0x24fdf294, 0xc5fa5603, 0x24f28e96, 0xc5ffa4b3,
+    0x24e72ba4, 0xc604f5a0, 0x24dbc9bd, 0xc60a48c9,
+    0x24d068e2, 0xc60f9e2e, 0x24c50914, 0xc614f5cf,
+    0x24b9aa52, 0xc61a4fac, 0x24ae4c9d, 0xc61fabc4,
+    0x24a2eff6, 0xc6250a18, 0x2497945d, 0xc62a6aa6,
+    0x248c39d3, 0xc62fcd6f, 0x2480e057, 0xc6353273,
+    0x247587eb, 0xc63a99b1, 0x246a308f, 0xc6400329,
+    0x245eda43, 0xc6456edb, 0x24538507, 0xc64adcc7,
+    0x244830dd, 0xc6504ced, 0x243cddc4, 0xc655bf4c,
+    0x24318bbe, 0xc65b33e4, 0x24263ac9, 0xc660aab5,
+    0x241aeae8, 0xc66623be, 0x240f9c1a, 0xc66b9f01,
+    0x24044e60, 0xc6711c7b, 0x23f901ba, 0xc6769c2e,
+    0x23edb628, 0xc67c1e18, 0x23e26bac, 0xc681a23a,
+    0x23d72245, 0xc6872894, 0x23cbd9f4, 0xc68cb124,
+    0x23c092b9, 0xc6923bec, 0x23b54c95, 0xc697c8eb,
+    0x23aa0788, 0xc69d5820, 0x239ec393, 0xc6a2e98b,
+    0x239380b6, 0xc6a87d2d, 0x23883ef2, 0xc6ae1304,
+    0x237cfe47, 0xc6b3ab12, 0x2371beb5, 0xc6b94554,
+    0x2366803c, 0xc6bee1cd, 0x235b42df, 0xc6c4807a,
+    0x2350069b, 0xc6ca215c, 0x2344cb73, 0xc6cfc472,
+    0x23399167, 0xc6d569be, 0x232e5876, 0xc6db113d,
+    0x232320a2, 0xc6e0baf0, 0x2317e9eb, 0xc6e666d7,
+    0x230cb451, 0xc6ec14f2, 0x23017fd5, 0xc6f1c540,
+    0x22f64c77, 0xc6f777c1, 0x22eb1a37, 0xc6fd2c75,
+    0x22dfe917, 0xc702e35c, 0x22d4b916, 0xc7089c75,
+    0x22c98a35, 0xc70e57c0, 0x22be5c74, 0xc714153e,
+    0x22b32fd4, 0xc719d4ed, 0x22a80456, 0xc71f96ce,
+    0x229cd9f8, 0xc7255ae0, 0x2291b0bd, 0xc72b2123,
+    0x228688a4, 0xc730e997, 0x227b61af, 0xc736b43c,
+    0x22703bdc, 0xc73c8111, 0x2265172e, 0xc7425016,
+    0x2259f3a3, 0xc748214c, 0x224ed13d, 0xc74df4b1,
+    0x2243affc, 0xc753ca46, 0x22388fe1, 0xc759a20a,
+    0x222d70eb, 0xc75f7bfe, 0x2222531c, 0xc7655820,
+    0x22173674, 0xc76b3671, 0x220c1af3, 0xc77116f0,
+    0x22010099, 0xc776f99d, 0x21f5e768, 0xc77cde79,
+    0x21eacf5f, 0xc782c582, 0x21dfb87f, 0xc788aeb9,
+    0x21d4a2c8, 0xc78e9a1d, 0x21c98e3b, 0xc79487ae,
+    0x21be7ad8, 0xc79a776c, 0x21b368a0, 0xc7a06957,
+    0x21a85793, 0xc7a65d6e, 0x219d47b1, 0xc7ac53b1,
+    0x219238fb, 0xc7b24c20, 0x21872b72, 0xc7b846ba,
+    0x217c1f15, 0xc7be4381, 0x217113e5, 0xc7c44272,
+    0x216609e3, 0xc7ca438f, 0x215b0110, 0xc7d046d6,
+    0x214ff96a, 0xc7d64c47, 0x2144f2f3, 0xc7dc53e3,
+    0x2139edac, 0xc7e25daa, 0x212ee995, 0xc7e8699a,
+    0x2123e6ad, 0xc7ee77b3, 0x2118e4f6, 0xc7f487f6,
+    0x210de470, 0xc7fa9a62, 0x2102e51c, 0xc800aef7,
+    0x20f7e6f9, 0xc806c5b5, 0x20ecea09, 0xc80cde9b,
+    0x20e1ee4b, 0xc812f9a9, 0x20d6f3c1, 0xc81916df,
+    0x20cbfa6a, 0xc81f363d, 0x20c10247, 0xc82557c3,
+    0x20b60b58, 0xc82b7b70, 0x20ab159e, 0xc831a143,
+    0x20a0211a, 0xc837c93e, 0x20952dcb, 0xc83df35f,
+    0x208a3bb2, 0xc8441fa6, 0x207f4acf, 0xc84a4e14,
+    0x20745b24, 0xc8507ea7, 0x20696cb0, 0xc856b160,
+    0x205e7f74, 0xc85ce63e, 0x2053936f, 0xc8631d42,
+    0x2048a8a4, 0xc869566a, 0x203dbf11, 0xc86f91b7,
+    0x2032d6b8, 0xc875cf28, 0x2027ef99, 0xc87c0ebd,
+    0x201d09b4, 0xc8825077, 0x2012250a, 0xc8889454,
+    0x2007419b, 0xc88eda54, 0x1ffc5f67, 0xc8952278,
+    0x1ff17e70, 0xc89b6cbf, 0x1fe69eb4, 0xc8a1b928,
+    0x1fdbc036, 0xc8a807b4, 0x1fd0e2f5, 0xc8ae5862,
+    0x1fc606f1, 0xc8b4ab32, 0x1fbb2c2c, 0xc8bb0023,
+    0x1fb052a5, 0xc8c15736, 0x1fa57a5d, 0xc8c7b06b,
+    0x1f9aa354, 0xc8ce0bc0, 0x1f8fcd8b, 0xc8d46936,
+    0x1f84f902, 0xc8dac8cd, 0x1f7a25ba, 0xc8e12a84,
+    0x1f6f53b3, 0xc8e78e5b, 0x1f6482ed, 0xc8edf452,
+    0x1f59b369, 0xc8f45c68, 0x1f4ee527, 0xc8fac69e,
+    0x1f441828, 0xc90132f2, 0x1f394c6b, 0xc907a166,
+    0x1f2e81f3, 0xc90e11f7, 0x1f23b8be, 0xc91484a8,
+    0x1f18f0ce, 0xc91af976, 0x1f0e2a22, 0xc9217062,
+    0x1f0364bc, 0xc927e96b, 0x1ef8a09b, 0xc92e6492,
+    0x1eedddc0, 0xc934e1d6, 0x1ee31c2b, 0xc93b6137,
+    0x1ed85bdd, 0xc941e2b4, 0x1ecd9cd7, 0xc948664d,
+    0x1ec2df18, 0xc94eec03, 0x1eb822a1, 0xc95573d4,
+    0x1ead6773, 0xc95bfdc1, 0x1ea2ad8d, 0xc96289c9,
+    0x1e97f4f1, 0xc96917ec, 0x1e8d3d9e, 0xc96fa82a,
+    0x1e828796, 0xc9763a83, 0x1e77d2d8, 0xc97ccef5,
+    0x1e6d1f65, 0xc9836582, 0x1e626d3e, 0xc989fe29,
+    0x1e57bc62, 0xc99098e9, 0x1e4d0cd2, 0xc99735c2,
+    0x1e425e8f, 0xc99dd4b4, 0x1e37b199, 0xc9a475bf,
+    0x1e2d05f1, 0xc9ab18e3, 0x1e225b96, 0xc9b1be1e,
+    0x1e17b28a, 0xc9b86572, 0x1e0d0acc, 0xc9bf0edd,
+    0x1e02645d, 0xc9c5ba60, 0x1df7bf3e, 0xc9cc67fa,
+    0x1ded1b6e, 0xc9d317ab, 0x1de278ef, 0xc9d9c973,
+    0x1dd7d7c1, 0xc9e07d51, 0x1dcd37e4, 0xc9e73346,
+    0x1dc29958, 0xc9edeb50, 0x1db7fc1e, 0xc9f4a570,
+    0x1dad6036, 0xc9fb61a5, 0x1da2c5a2, 0xca021fef,
+    0x1d982c60, 0xca08e04f, 0x1d8d9472, 0xca0fa2c3,
+    0x1d82fdd8, 0xca16674b, 0x1d786892, 0xca1d2de7,
+    0x1d6dd4a2, 0xca23f698, 0x1d634206, 0xca2ac15b,
+    0x1d58b0c0, 0xca318e32, 0x1d4e20d0, 0xca385d1d,
+    0x1d439236, 0xca3f2e19, 0x1d3904f4, 0xca460129,
+    0x1d2e7908, 0xca4cd64b, 0x1d23ee74, 0xca53ad7e,
+    0x1d196538, 0xca5a86c4, 0x1d0edd55, 0xca61621b,
+    0x1d0456ca, 0xca683f83, 0x1cf9d199, 0xca6f1efc,
+    0x1cef4dc2, 0xca760086, 0x1ce4cb44, 0xca7ce420,
+    0x1cda4a21, 0xca83c9ca, 0x1ccfca59, 0xca8ab184,
+    0x1cc54bec, 0xca919b4e, 0x1cbacedb, 0xca988727,
+    0x1cb05326, 0xca9f750f, 0x1ca5d8cd, 0xcaa66506,
+    0x1c9b5fd2, 0xcaad570c, 0x1c90e834, 0xcab44b1f,
+    0x1c8671f3, 0xcabb4141, 0x1c7bfd11, 0xcac23971,
+    0x1c71898d, 0xcac933ae, 0x1c671768, 0xcad02ff8,
+    0x1c5ca6a2, 0xcad72e4f, 0x1c52373c, 0xcade2eb3,
+    0x1c47c936, 0xcae53123, 0x1c3d5c91, 0xcaec35a0,
+    0x1c32f14d, 0xcaf33c28, 0x1c28876a, 0xcafa44bc,
+    0x1c1e1ee9, 0xcb014f5b, 0x1c13b7c9, 0xcb085c05,
+    0x1c09520d, 0xcb0f6aba, 0x1bfeedb3, 0xcb167b79,
+    0x1bf48abd, 0xcb1d8e43, 0x1bea292b, 0xcb24a316,
+    0x1bdfc8fc, 0xcb2bb9f4, 0x1bd56a32, 0xcb32d2da,
+    0x1bcb0cce, 0xcb39edca, 0x1bc0b0ce, 0xcb410ac3,
+    0x1bb65634, 0xcb4829c4, 0x1babfd01, 0xcb4f4acd,
+    0x1ba1a534, 0xcb566ddf, 0x1b974ece, 0xcb5d92f8,
+    0x1b8cf9cf, 0xcb64ba19, 0x1b82a638, 0xcb6be341,
+    0x1b785409, 0xcb730e70, 0x1b6e0342, 0xcb7a3ba5,
+    0x1b63b3e5, 0xcb816ae1, 0x1b5965f1, 0xcb889c23,
+    0x1b4f1967, 0xcb8fcf6b, 0x1b44ce46, 0xcb9704b9,
+    0x1b3a8491, 0xcb9e3c0b, 0x1b303c46, 0xcba57563,
+    0x1b25f566, 0xcbacb0bf, 0x1b1baff2, 0xcbb3ee20,
+    0x1b116beb, 0xcbbb2d85, 0x1b072950, 0xcbc26eee,
+    0x1afce821, 0xcbc9b25a, 0x1af2a860, 0xcbd0f7ca,
+    0x1ae86a0d, 0xcbd83f3d, 0x1ade2d28, 0xcbdf88b3,
+    0x1ad3f1b1, 0xcbe6d42b, 0x1ac9b7a9, 0xcbee21a5,
+    0x1abf7f11, 0xcbf57121, 0x1ab547e8, 0xcbfcc29f,
+    0x1aab122f, 0xcc04161e, 0x1aa0dde7, 0xcc0b6b9e,
+    0x1a96ab0f, 0xcc12c31f, 0x1a8c79a9, 0xcc1a1ca0,
+    0x1a8249b4, 0xcc217822, 0x1a781b31, 0xcc28d5a3,
+    0x1a6dee21, 0xcc303524, 0x1a63c284, 0xcc3796a5,
+    0x1a599859, 0xcc3efa25, 0x1a4f6fa3, 0xcc465fa3,
+    0x1a454860, 0xcc4dc720, 0x1a3b2292, 0xcc55309b,
+    0x1a30fe38, 0xcc5c9c14, 0x1a26db54, 0xcc64098b,
+    0x1a1cb9e5, 0xcc6b78ff, 0x1a1299ec, 0xcc72ea70,
+    0x1a087b69, 0xcc7a5dde, 0x19fe5e5e, 0xcc81d349,
+    0x19f442c9, 0xcc894aaf, 0x19ea28ac, 0xcc90c412,
+    0x19e01006, 0xcc983f70, 0x19d5f8d9, 0xcc9fbcca,
+    0x19cbe325, 0xcca73c1e, 0x19c1cee9, 0xccaebd6e,
+    0x19b7bc27, 0xccb640b8, 0x19adaadf, 0xccbdc5fc,
+    0x19a39b11, 0xccc54d3a, 0x19998cbe, 0xccccd671,
+    0x198f7fe6, 0xccd461a2, 0x19857489, 0xccdbeecc,
+    0x197b6aa8, 0xcce37def, 0x19716243, 0xcceb0f0a,
+    0x19675b5a, 0xccf2a21d, 0x195d55ef, 0xccfa3729,
+    0x19535201, 0xcd01ce2b, 0x19494f90, 0xcd096725,
+    0x193f4e9e, 0xcd110216, 0x19354f2a, 0xcd189efe,
+    0x192b5135, 0xcd203ddc, 0x192154bf, 0xcd27deb0,
+    0x191759c9, 0xcd2f817b, 0x190d6053, 0xcd37263a,
+    0x1903685d, 0xcd3eccef, 0x18f971e8, 0xcd467599,
+    0x18ef7cf4, 0xcd4e2037, 0x18e58982, 0xcd55ccca,
+    0x18db9792, 0xcd5d7b50, 0x18d1a724, 0xcd652bcb,
+    0x18c7b838, 0xcd6cde39, 0x18bdcad0, 0xcd74929a,
+    0x18b3deeb, 0xcd7c48ee, 0x18a9f48a, 0xcd840134,
+    0x18a00bae, 0xcd8bbb6d, 0x18962456, 0xcd937798,
+    0x188c3e83, 0xcd9b35b4, 0x18825a35, 0xcda2f5c2,
+    0x1878776d, 0xcdaab7c0, 0x186e962b, 0xcdb27bb0,
+    0x1864b670, 0xcdba4190, 0x185ad83c, 0xcdc20960,
+    0x1850fb8e, 0xcdc9d320, 0x18472069, 0xcdd19ed0,
+    0x183d46cc, 0xcdd96c6f, 0x18336eb7, 0xcde13bfd,
+    0x1829982b, 0xcde90d79, 0x181fc328, 0xcdf0e0e4,
+    0x1815efae, 0xcdf8b63d, 0x180c1dbf, 0xce008d84,
+    0x18024d59, 0xce0866b8, 0x17f87e7f, 0xce1041d9,
+    0x17eeb130, 0xce181ee8, 0x17e4e56c, 0xce1ffde2,
+    0x17db1b34, 0xce27dec9, 0x17d15288, 0xce2fc19c,
+    0x17c78b68, 0xce37a65b, 0x17bdc5d6, 0xce3f8d05,
+    0x17b401d1, 0xce47759a, 0x17aa3f5a, 0xce4f6019,
+    0x17a07e70, 0xce574c84, 0x1796bf16, 0xce5f3ad8,
+    0x178d014a, 0xce672b16, 0x1783450d, 0xce6f1d3d,
+    0x17798a60, 0xce77114e, 0x176fd143, 0xce7f0748,
+    0x176619b6, 0xce86ff2a, 0x175c63ba, 0xce8ef8f4,
+    0x1752af4f, 0xce96f4a7, 0x1748fc75, 0xce9ef241,
+    0x173f4b2e, 0xcea6f1c2, 0x17359b78, 0xceaef32b,
+    0x172bed55, 0xceb6f67a, 0x172240c5, 0xcebefbb0,
+    0x171895c9, 0xcec702cb, 0x170eec60, 0xcecf0bcd,
+    0x1705448b, 0xced716b4, 0x16fb9e4b, 0xcedf2380,
+    0x16f1f99f, 0xcee73231, 0x16e85689, 0xceef42c7,
+    0x16deb508, 0xcef75541, 0x16d5151d, 0xceff699f,
+    0x16cb76c9, 0xcf077fe1, 0x16c1da0b, 0xcf0f9805,
+    0x16b83ee4, 0xcf17b20d, 0x16aea555, 0xcf1fcdf8,
+    0x16a50d5d, 0xcf27ebc5, 0x169b76fe, 0xcf300b74,
+    0x1691e237, 0xcf382d05, 0x16884f09, 0xcf405077,
+    0x167ebd74, 0xcf4875ca, 0x16752d79, 0xcf509cfe,
+    0x166b9f18, 0xcf58c613, 0x16621251, 0xcf60f108,
+    0x16588725, 0xcf691ddd, 0x164efd94, 0xcf714c91,
+    0x1645759f, 0xcf797d24, 0x163bef46, 0xcf81af97,
+    0x16326a88, 0xcf89e3e8, 0x1628e767, 0xcf921a17,
+    0x161f65e4, 0xcf9a5225, 0x1615e5fd, 0xcfa28c10,
+    0x160c67b4, 0xcfaac7d8, 0x1602eb0a, 0xcfb3057d,
+    0x15f96ffd, 0xcfbb4500, 0x15eff690, 0xcfc3865e,
+    0x15e67ec1, 0xcfcbc999, 0x15dd0892, 0xcfd40eaf,
+    0x15d39403, 0xcfdc55a1, 0x15ca2115, 0xcfe49e6d,
+    0x15c0afc6, 0xcfece915, 0x15b74019, 0xcff53597,
+    0x15add20d, 0xcffd83f4, 0x15a465a3, 0xd005d42a,
+    0x159afadb, 0xd00e2639, 0x159191b5, 0xd0167a22,
+    0x15882a32, 0xd01ecfe4, 0x157ec452, 0xd027277e,
+    0x15756016, 0xd02f80f1, 0x156bfd7d, 0xd037dc3b,
+    0x15629c89, 0xd040395d, 0x15593d3a, 0xd0489856,
+    0x154fdf8f, 0xd050f926, 0x15468389, 0xd0595bcd,
+    0x153d292a, 0xd061c04a, 0x1533d070, 0xd06a269d,
+    0x152a795d, 0xd0728ec6, 0x152123f0, 0xd07af8c4,
+    0x1517d02b, 0xd0836497, 0x150e7e0d, 0xd08bd23f,
+    0x15052d97, 0xd09441bb, 0x14fbdec9, 0xd09cb30b,
+    0x14f291a4, 0xd0a5262f, 0x14e94627, 0xd0ad9b26,
+    0x14dffc54, 0xd0b611f1, 0x14d6b42b, 0xd0be8a8d,
+    0x14cd6dab, 0xd0c704fd, 0x14c428d6, 0xd0cf813e,
+    0x14bae5ab, 0xd0d7ff51, 0x14b1a42c, 0xd0e07f36,
+    0x14a86458, 0xd0e900ec, 0x149f2630, 0xd0f18472,
+    0x1495e9b3, 0xd0fa09c9, 0x148caee4, 0xd10290f0,
+    0x148375c1, 0xd10b19e7, 0x147a3e4b, 0xd113a4ad,
+    0x14710883, 0xd11c3142, 0x1467d469, 0xd124bfa6,
+    0x145ea1fd, 0xd12d4fd9, 0x14557140, 0xd135e1d9,
+    0x144c4232, 0xd13e75a8, 0x144314d3, 0xd1470b44,
+    0x1439e923, 0xd14fa2ad, 0x1430bf24, 0xd1583be2,
+    0x142796d5, 0xd160d6e5, 0x141e7037, 0xd16973b3,
+    0x14154b4a, 0xd172124d, 0x140c280e, 0xd17ab2b3,
+    0x14030684, 0xd18354e4, 0x13f9e6ad, 0xd18bf8e0,
+    0x13f0c887, 0xd1949ea6, 0x13e7ac15, 0xd19d4636,
+    0x13de9156, 0xd1a5ef90, 0x13d5784a, 0xd1ae9ab4,
+    0x13cc60f2, 0xd1b747a0, 0x13c34b4f, 0xd1bff656,
+    0x13ba3760, 0xd1c8a6d4, 0x13b12526, 0xd1d1591a,
+    0x13a814a2, 0xd1da0d28, 0x139f05d3, 0xd1e2c2fd,
+    0x1395f8ba, 0xd1eb7a9a, 0x138ced57, 0xd1f433fd,
+    0x1383e3ab, 0xd1fcef27, 0x137adbb6, 0xd205ac17,
+    0x1371d579, 0xd20e6acc, 0x1368d0f3, 0xd2172b48,
+    0x135fce26, 0xd21fed88, 0x1356cd11, 0xd228b18d,
+    0x134dcdb4, 0xd2317756, 0x1344d011, 0xd23a3ee4,
+    0x133bd427, 0xd2430835, 0x1332d9f7, 0xd24bd34a,
+    0x1329e181, 0xd254a021, 0x1320eac6, 0xd25d6ebc,
+    0x1317f5c6, 0xd2663f19, 0x130f0280, 0xd26f1138,
+    0x130610f7, 0xd277e518, 0x12fd2129, 0xd280babb,
+    0x12f43318, 0xd289921e, 0x12eb46c3, 0xd2926b41,
+    0x12e25c2b, 0xd29b4626, 0x12d97350, 0xd2a422ca,
+    0x12d08c33, 0xd2ad012e, 0x12c7a6d4, 0xd2b5e151,
+    0x12bec333, 0xd2bec333, 0x12b5e151, 0xd2c7a6d4,
+    0x12ad012e, 0xd2d08c33, 0x12a422ca, 0xd2d97350,
+    0x129b4626, 0xd2e25c2b, 0x12926b41, 0xd2eb46c3,
+    0x1289921e, 0xd2f43318, 0x1280babb, 0xd2fd2129,
+    0x1277e518, 0xd30610f7, 0x126f1138, 0xd30f0280,
+    0x12663f19, 0xd317f5c6, 0x125d6ebc, 0xd320eac6,
+    0x1254a021, 0xd329e181, 0x124bd34a, 0xd332d9f7,
+    0x12430835, 0xd33bd427, 0x123a3ee4, 0xd344d011,
+    0x12317756, 0xd34dcdb4, 0x1228b18d, 0xd356cd11,
+    0x121fed88, 0xd35fce26, 0x12172b48, 0xd368d0f3,
+    0x120e6acc, 0xd371d579, 0x1205ac17, 0xd37adbb6,
+    0x11fcef27, 0xd383e3ab, 0x11f433fd, 0xd38ced57,
+    0x11eb7a9a, 0xd395f8ba, 0x11e2c2fd, 0xd39f05d3,
+    0x11da0d28, 0xd3a814a2, 0x11d1591a, 0xd3b12526,
+    0x11c8a6d4, 0xd3ba3760, 0x11bff656, 0xd3c34b4f,
+    0x11b747a0, 0xd3cc60f2, 0x11ae9ab4, 0xd3d5784a,
+    0x11a5ef90, 0xd3de9156, 0x119d4636, 0xd3e7ac15,
+    0x11949ea6, 0xd3f0c887, 0x118bf8e0, 0xd3f9e6ad,
+    0x118354e4, 0xd4030684, 0x117ab2b3, 0xd40c280e,
+    0x1172124d, 0xd4154b4a, 0x116973b3, 0xd41e7037,
+    0x1160d6e5, 0xd42796d5, 0x11583be2, 0xd430bf24,
+    0x114fa2ad, 0xd439e923, 0x11470b44, 0xd44314d3,
+    0x113e75a8, 0xd44c4232, 0x1135e1d9, 0xd4557140,
+    0x112d4fd9, 0xd45ea1fd, 0x1124bfa6, 0xd467d469,
+    0x111c3142, 0xd4710883, 0x1113a4ad, 0xd47a3e4b,
+    0x110b19e7, 0xd48375c1, 0x110290f0, 0xd48caee4,
+    0x10fa09c9, 0xd495e9b3, 0x10f18472, 0xd49f2630,
+    0x10e900ec, 0xd4a86458, 0x10e07f36, 0xd4b1a42c,
+    0x10d7ff51, 0xd4bae5ab, 0x10cf813e, 0xd4c428d6,
+    0x10c704fd, 0xd4cd6dab, 0x10be8a8d, 0xd4d6b42b,
+    0x10b611f1, 0xd4dffc54, 0x10ad9b26, 0xd4e94627,
+    0x10a5262f, 0xd4f291a4, 0x109cb30b, 0xd4fbdec9,
+    0x109441bb, 0xd5052d97, 0x108bd23f, 0xd50e7e0d,
+    0x10836497, 0xd517d02b, 0x107af8c4, 0xd52123f0,
+    0x10728ec6, 0xd52a795d, 0x106a269d, 0xd533d070,
+    0x1061c04a, 0xd53d292a, 0x10595bcd, 0xd5468389,
+    0x1050f926, 0xd54fdf8f, 0x10489856, 0xd5593d3a,
+    0x1040395d, 0xd5629c89, 0x1037dc3b, 0xd56bfd7d,
+    0x102f80f1, 0xd5756016, 0x1027277e, 0xd57ec452,
+    0x101ecfe4, 0xd5882a32, 0x10167a22, 0xd59191b5,
+    0x100e2639, 0xd59afadb, 0x1005d42a, 0xd5a465a3,
+    0xffd83f4, 0xd5add20d, 0xff53597, 0xd5b74019,
+    0xfece915, 0xd5c0afc6, 0xfe49e6d, 0xd5ca2115,
+    0xfdc55a1, 0xd5d39403, 0xfd40eaf, 0xd5dd0892,
+    0xfcbc999, 0xd5e67ec1, 0xfc3865e, 0xd5eff690,
+    0xfbb4500, 0xd5f96ffd, 0xfb3057d, 0xd602eb0a,
+    0xfaac7d8, 0xd60c67b4, 0xfa28c10, 0xd615e5fd,
+    0xf9a5225, 0xd61f65e4, 0xf921a17, 0xd628e767,
+    0xf89e3e8, 0xd6326a88, 0xf81af97, 0xd63bef46,
+    0xf797d24, 0xd645759f, 0xf714c91, 0xd64efd94,
+    0xf691ddd, 0xd6588725, 0xf60f108, 0xd6621251,
+    0xf58c613, 0xd66b9f18, 0xf509cfe, 0xd6752d79,
+    0xf4875ca, 0xd67ebd74, 0xf405077, 0xd6884f09,
+    0xf382d05, 0xd691e237, 0xf300b74, 0xd69b76fe,
+    0xf27ebc5, 0xd6a50d5d, 0xf1fcdf8, 0xd6aea555,
+    0xf17b20d, 0xd6b83ee4, 0xf0f9805, 0xd6c1da0b,
+    0xf077fe1, 0xd6cb76c9, 0xeff699f, 0xd6d5151d,
+    0xef75541, 0xd6deb508, 0xeef42c7, 0xd6e85689,
+    0xee73231, 0xd6f1f99f, 0xedf2380, 0xd6fb9e4b,
+    0xed716b4, 0xd705448b, 0xecf0bcd, 0xd70eec60,
+    0xec702cb, 0xd71895c9, 0xebefbb0, 0xd72240c5,
+    0xeb6f67a, 0xd72bed55, 0xeaef32b, 0xd7359b78,
+    0xea6f1c2, 0xd73f4b2e, 0xe9ef241, 0xd748fc75,
+    0xe96f4a7, 0xd752af4f, 0xe8ef8f4, 0xd75c63ba,
+    0xe86ff2a, 0xd76619b6, 0xe7f0748, 0xd76fd143,
+    0xe77114e, 0xd7798a60, 0xe6f1d3d, 0xd783450d,
+    0xe672b16, 0xd78d014a, 0xe5f3ad8, 0xd796bf16,
+    0xe574c84, 0xd7a07e70, 0xe4f6019, 0xd7aa3f5a,
+    0xe47759a, 0xd7b401d1, 0xe3f8d05, 0xd7bdc5d6,
+    0xe37a65b, 0xd7c78b68, 0xe2fc19c, 0xd7d15288,
+    0xe27dec9, 0xd7db1b34, 0xe1ffde2, 0xd7e4e56c,
+    0xe181ee8, 0xd7eeb130, 0xe1041d9, 0xd7f87e7f,
+    0xe0866b8, 0xd8024d59, 0xe008d84, 0xd80c1dbf,
+    0xdf8b63d, 0xd815efae, 0xdf0e0e4, 0xd81fc328,
+    0xde90d79, 0xd829982b, 0xde13bfd, 0xd8336eb7,
+    0xdd96c6f, 0xd83d46cc, 0xdd19ed0, 0xd8472069,
+    0xdc9d320, 0xd850fb8e, 0xdc20960, 0xd85ad83c,
+    0xdba4190, 0xd864b670, 0xdb27bb0, 0xd86e962b,
+    0xdaab7c0, 0xd878776d, 0xda2f5c2, 0xd8825a35,
+    0xd9b35b4, 0xd88c3e83, 0xd937798, 0xd8962456,
+    0xd8bbb6d, 0xd8a00bae, 0xd840134, 0xd8a9f48a,
+    0xd7c48ee, 0xd8b3deeb, 0xd74929a, 0xd8bdcad0,
+    0xd6cde39, 0xd8c7b838, 0xd652bcb, 0xd8d1a724,
+    0xd5d7b50, 0xd8db9792, 0xd55ccca, 0xd8e58982,
+    0xd4e2037, 0xd8ef7cf4, 0xd467599, 0xd8f971e8,
+    0xd3eccef, 0xd903685d, 0xd37263a, 0xd90d6053,
+    0xd2f817b, 0xd91759c9, 0xd27deb0, 0xd92154bf,
+    0xd203ddc, 0xd92b5135, 0xd189efe, 0xd9354f2a,
+    0xd110216, 0xd93f4e9e, 0xd096725, 0xd9494f90,
+    0xd01ce2b, 0xd9535201, 0xcfa3729, 0xd95d55ef,
+    0xcf2a21d, 0xd9675b5a, 0xceb0f0a, 0xd9716243,
+    0xce37def, 0xd97b6aa8, 0xcdbeecc, 0xd9857489,
+    0xcd461a2, 0xd98f7fe6, 0xcccd671, 0xd9998cbe,
+    0xcc54d3a, 0xd9a39b11, 0xcbdc5fc, 0xd9adaadf,
+    0xcb640b8, 0xd9b7bc27, 0xcaebd6e, 0xd9c1cee9,
+    0xca73c1e, 0xd9cbe325, 0xc9fbcca, 0xd9d5f8d9,
+    0xc983f70, 0xd9e01006, 0xc90c412, 0xd9ea28ac,
+    0xc894aaf, 0xd9f442c9, 0xc81d349, 0xd9fe5e5e,
+    0xc7a5dde, 0xda087b69, 0xc72ea70, 0xda1299ec,
+    0xc6b78ff, 0xda1cb9e5, 0xc64098b, 0xda26db54,
+    0xc5c9c14, 0xda30fe38, 0xc55309b, 0xda3b2292,
+    0xc4dc720, 0xda454860, 0xc465fa3, 0xda4f6fa3,
+    0xc3efa25, 0xda599859, 0xc3796a5, 0xda63c284,
+    0xc303524, 0xda6dee21, 0xc28d5a3, 0xda781b31,
+    0xc217822, 0xda8249b4, 0xc1a1ca0, 0xda8c79a9,
+    0xc12c31f, 0xda96ab0f, 0xc0b6b9e, 0xdaa0dde7,
+    0xc04161e, 0xdaab122f, 0xbfcc29f, 0xdab547e8,
+    0xbf57121, 0xdabf7f11, 0xbee21a5, 0xdac9b7a9,
+    0xbe6d42b, 0xdad3f1b1, 0xbdf88b3, 0xdade2d28,
+    0xbd83f3d, 0xdae86a0d, 0xbd0f7ca, 0xdaf2a860,
+    0xbc9b25a, 0xdafce821, 0xbc26eee, 0xdb072950,
+    0xbbb2d85, 0xdb116beb, 0xbb3ee20, 0xdb1baff2,
+    0xbacb0bf, 0xdb25f566, 0xba57563, 0xdb303c46,
+    0xb9e3c0b, 0xdb3a8491, 0xb9704b9, 0xdb44ce46,
+    0xb8fcf6b, 0xdb4f1967, 0xb889c23, 0xdb5965f1,
+    0xb816ae1, 0xdb63b3e5, 0xb7a3ba5, 0xdb6e0342,
+    0xb730e70, 0xdb785409, 0xb6be341, 0xdb82a638,
+    0xb64ba19, 0xdb8cf9cf, 0xb5d92f8, 0xdb974ece,
+    0xb566ddf, 0xdba1a534, 0xb4f4acd, 0xdbabfd01,
+    0xb4829c4, 0xdbb65634, 0xb410ac3, 0xdbc0b0ce,
+    0xb39edca, 0xdbcb0cce, 0xb32d2da, 0xdbd56a32,
+    0xb2bb9f4, 0xdbdfc8fc, 0xb24a316, 0xdbea292b,
+    0xb1d8e43, 0xdbf48abd, 0xb167b79, 0xdbfeedb3,
+    0xb0f6aba, 0xdc09520d, 0xb085c05, 0xdc13b7c9,
+    0xb014f5b, 0xdc1e1ee9, 0xafa44bc, 0xdc28876a,
+    0xaf33c28, 0xdc32f14d, 0xaec35a0, 0xdc3d5c91,
+    0xae53123, 0xdc47c936, 0xade2eb3, 0xdc52373c,
+    0xad72e4f, 0xdc5ca6a2, 0xad02ff8, 0xdc671768,
+    0xac933ae, 0xdc71898d, 0xac23971, 0xdc7bfd11,
+    0xabb4141, 0xdc8671f3, 0xab44b1f, 0xdc90e834,
+    0xaad570c, 0xdc9b5fd2, 0xaa66506, 0xdca5d8cd,
+    0xa9f750f, 0xdcb05326, 0xa988727, 0xdcbacedb,
+    0xa919b4e, 0xdcc54bec, 0xa8ab184, 0xdccfca59,
+    0xa83c9ca, 0xdcda4a21, 0xa7ce420, 0xdce4cb44,
+    0xa760086, 0xdcef4dc2, 0xa6f1efc, 0xdcf9d199,
+    0xa683f83, 0xdd0456ca, 0xa61621b, 0xdd0edd55,
+    0xa5a86c4, 0xdd196538, 0xa53ad7e, 0xdd23ee74,
+    0xa4cd64b, 0xdd2e7908, 0xa460129, 0xdd3904f4,
+    0xa3f2e19, 0xdd439236, 0xa385d1d, 0xdd4e20d0,
+    0xa318e32, 0xdd58b0c0, 0xa2ac15b, 0xdd634206,
+    0xa23f698, 0xdd6dd4a2, 0xa1d2de7, 0xdd786892,
+    0xa16674b, 0xdd82fdd8, 0xa0fa2c3, 0xdd8d9472,
+    0xa08e04f, 0xdd982c60, 0xa021fef, 0xdda2c5a2,
+    0x9fb61a5, 0xddad6036, 0x9f4a570, 0xddb7fc1e,
+    0x9edeb50, 0xddc29958, 0x9e73346, 0xddcd37e4,
+    0x9e07d51, 0xddd7d7c1, 0x9d9c973, 0xdde278ef,
+    0x9d317ab, 0xdded1b6e, 0x9cc67fa, 0xddf7bf3e,
+    0x9c5ba60, 0xde02645d, 0x9bf0edd, 0xde0d0acc,
+    0x9b86572, 0xde17b28a, 0x9b1be1e, 0xde225b96,
+    0x9ab18e3, 0xde2d05f1, 0x9a475bf, 0xde37b199,
+    0x99dd4b4, 0xde425e8f, 0x99735c2, 0xde4d0cd2,
+    0x99098e9, 0xde57bc62, 0x989fe29, 0xde626d3e,
+    0x9836582, 0xde6d1f65, 0x97ccef5, 0xde77d2d8,
+    0x9763a83, 0xde828796, 0x96fa82a, 0xde8d3d9e,
+    0x96917ec, 0xde97f4f1, 0x96289c9, 0xdea2ad8d,
+    0x95bfdc1, 0xdead6773, 0x95573d4, 0xdeb822a1,
+    0x94eec03, 0xdec2df18, 0x948664d, 0xdecd9cd7,
+    0x941e2b4, 0xded85bdd, 0x93b6137, 0xdee31c2b,
+    0x934e1d6, 0xdeedddc0, 0x92e6492, 0xdef8a09b,
+    0x927e96b, 0xdf0364bc, 0x9217062, 0xdf0e2a22,
+    0x91af976, 0xdf18f0ce, 0x91484a8, 0xdf23b8be,
+    0x90e11f7, 0xdf2e81f3, 0x907a166, 0xdf394c6b,
+    0x90132f2, 0xdf441828, 0x8fac69e, 0xdf4ee527,
+    0x8f45c68, 0xdf59b369, 0x8edf452, 0xdf6482ed,
+    0x8e78e5b, 0xdf6f53b3, 0x8e12a84, 0xdf7a25ba,
+    0x8dac8cd, 0xdf84f902, 0x8d46936, 0xdf8fcd8b,
+    0x8ce0bc0, 0xdf9aa354, 0x8c7b06b, 0xdfa57a5d,
+    0x8c15736, 0xdfb052a5, 0x8bb0023, 0xdfbb2c2c,
+    0x8b4ab32, 0xdfc606f1, 0x8ae5862, 0xdfd0e2f5,
+    0x8a807b4, 0xdfdbc036, 0x8a1b928, 0xdfe69eb4,
+    0x89b6cbf, 0xdff17e70, 0x8952278, 0xdffc5f67,
+    0x88eda54, 0xe007419b, 0x8889454, 0xe012250a,
+    0x8825077, 0xe01d09b4, 0x87c0ebd, 0xe027ef99,
+    0x875cf28, 0xe032d6b8, 0x86f91b7, 0xe03dbf11,
+    0x869566a, 0xe048a8a4, 0x8631d42, 0xe053936f,
+    0x85ce63e, 0xe05e7f74, 0x856b160, 0xe0696cb0,
+    0x8507ea7, 0xe0745b24, 0x84a4e14, 0xe07f4acf,
+    0x8441fa6, 0xe08a3bb2, 0x83df35f, 0xe0952dcb,
+    0x837c93e, 0xe0a0211a, 0x831a143, 0xe0ab159e,
+    0x82b7b70, 0xe0b60b58, 0x82557c3, 0xe0c10247,
+    0x81f363d, 0xe0cbfa6a, 0x81916df, 0xe0d6f3c1,
+    0x812f9a9, 0xe0e1ee4b, 0x80cde9b, 0xe0ecea09,
+    0x806c5b5, 0xe0f7e6f9, 0x800aef7, 0xe102e51c,
+    0x7fa9a62, 0xe10de470, 0x7f487f6, 0xe118e4f6,
+    0x7ee77b3, 0xe123e6ad, 0x7e8699a, 0xe12ee995,
+    0x7e25daa, 0xe139edac, 0x7dc53e3, 0xe144f2f3,
+    0x7d64c47, 0xe14ff96a, 0x7d046d6, 0xe15b0110,
+    0x7ca438f, 0xe16609e3, 0x7c44272, 0xe17113e5,
+    0x7be4381, 0xe17c1f15, 0x7b846ba, 0xe1872b72,
+    0x7b24c20, 0xe19238fb, 0x7ac53b1, 0xe19d47b1,
+    0x7a65d6e, 0xe1a85793, 0x7a06957, 0xe1b368a0,
+    0x79a776c, 0xe1be7ad8, 0x79487ae, 0xe1c98e3b,
+    0x78e9a1d, 0xe1d4a2c8, 0x788aeb9, 0xe1dfb87f,
+    0x782c582, 0xe1eacf5f, 0x77cde79, 0xe1f5e768,
+    0x776f99d, 0xe2010099, 0x77116f0, 0xe20c1af3,
+    0x76b3671, 0xe2173674, 0x7655820, 0xe222531c,
+    0x75f7bfe, 0xe22d70eb, 0x759a20a, 0xe2388fe1,
+    0x753ca46, 0xe243affc, 0x74df4b1, 0xe24ed13d,
+    0x748214c, 0xe259f3a3, 0x7425016, 0xe265172e,
+    0x73c8111, 0xe2703bdc, 0x736b43c, 0xe27b61af,
+    0x730e997, 0xe28688a4, 0x72b2123, 0xe291b0bd,
+    0x7255ae0, 0xe29cd9f8, 0x71f96ce, 0xe2a80456,
+    0x719d4ed, 0xe2b32fd4, 0x714153e, 0xe2be5c74,
+    0x70e57c0, 0xe2c98a35, 0x7089c75, 0xe2d4b916,
+    0x702e35c, 0xe2dfe917, 0x6fd2c75, 0xe2eb1a37,
+    0x6f777c1, 0xe2f64c77, 0x6f1c540, 0xe3017fd5,
+    0x6ec14f2, 0xe30cb451, 0x6e666d7, 0xe317e9eb,
+    0x6e0baf0, 0xe32320a2, 0x6db113d, 0xe32e5876,
+    0x6d569be, 0xe3399167, 0x6cfc472, 0xe344cb73,
+    0x6ca215c, 0xe350069b, 0x6c4807a, 0xe35b42df,
+    0x6bee1cd, 0xe366803c, 0x6b94554, 0xe371beb5,
+    0x6b3ab12, 0xe37cfe47, 0x6ae1304, 0xe3883ef2,
+    0x6a87d2d, 0xe39380b6, 0x6a2e98b, 0xe39ec393,
+    0x69d5820, 0xe3aa0788, 0x697c8eb, 0xe3b54c95,
+    0x6923bec, 0xe3c092b9, 0x68cb124, 0xe3cbd9f4,
+    0x6872894, 0xe3d72245, 0x681a23a, 0xe3e26bac,
+    0x67c1e18, 0xe3edb628, 0x6769c2e, 0xe3f901ba,
+    0x6711c7b, 0xe4044e60, 0x66b9f01, 0xe40f9c1a,
+    0x66623be, 0xe41aeae8, 0x660aab5, 0xe4263ac9,
+    0x65b33e4, 0xe4318bbe, 0x655bf4c, 0xe43cddc4,
+    0x6504ced, 0xe44830dd, 0x64adcc7, 0xe4538507,
+    0x6456edb, 0xe45eda43, 0x6400329, 0xe46a308f,
+    0x63a99b1, 0xe47587eb, 0x6353273, 0xe480e057,
+    0x62fcd6f, 0xe48c39d3, 0x62a6aa6, 0xe497945d,
+    0x6250a18, 0xe4a2eff6, 0x61fabc4, 0xe4ae4c9d,
+    0x61a4fac, 0xe4b9aa52, 0x614f5cf, 0xe4c50914,
+    0x60f9e2e, 0xe4d068e2, 0x60a48c9, 0xe4dbc9bd,
+    0x604f5a0, 0xe4e72ba4, 0x5ffa4b3, 0xe4f28e96,
+    0x5fa5603, 0xe4fdf294, 0x5f5098f, 0xe509579b,
+    0x5efbf58, 0xe514bdad, 0x5ea775e, 0xe52024c9,
+    0x5e531a1, 0xe52b8cee, 0x5dfee22, 0xe536f61b,
+    0x5daace1, 0xe5426051, 0x5d56ddd, 0xe54dcb8f,
+    0x5d03118, 0xe55937d5, 0x5caf690, 0xe564a521,
+    0x5c5be47, 0xe5701374, 0x5c0883d, 0xe57b82cd,
+    0x5bb5472, 0xe586f32c, 0x5b622e6, 0xe5926490,
+    0x5b0f399, 0xe59dd6f9, 0x5abc68c, 0xe5a94a67,
+    0x5a69bbe, 0xe5b4bed8, 0x5a17330, 0xe5c0344d,
+    0x59c4ce3, 0xe5cbaac5, 0x59728d5, 0xe5d72240,
+    0x5920708, 0xe5e29abc, 0x58ce77c, 0xe5ee143b,
+    0x587ca31, 0xe5f98ebb, 0x582af26, 0xe6050a3b,
+    0x57d965d, 0xe61086bc, 0x5787fd6, 0xe61c043d,
+    0x5736b90, 0xe62782be, 0x56e598c, 0xe633023e,
+    0x56949ca, 0xe63e82bc, 0x5643c4a, 0xe64a0438,
+    0x55f310d, 0xe65586b3, 0x55a2812, 0xe6610a2a,
+    0x555215a, 0xe66c8e9f, 0x5501ce5, 0xe6781410,
+    0x54b1ab4, 0xe6839a7c, 0x5461ac6, 0xe68f21e5,
+    0x5411d1b, 0xe69aaa48, 0x53c21b4, 0xe6a633a6,
+    0x5372891, 0xe6b1bdff, 0x53231b3, 0xe6bd4951,
+    0x52d3d18, 0xe6c8d59c, 0x5284ac3, 0xe6d462e1,
+    0x5235ab2, 0xe6dff11d, 0x51e6ce6, 0xe6eb8052,
+    0x519815f, 0xe6f7107e, 0x514981d, 0xe702a1a1,
+    0x50fb121, 0xe70e33bb, 0x50acc6b, 0xe719c6cb,
+    0x505e9fb, 0xe7255ad1, 0x50109d0, 0xe730efcc,
+    0x4fc2bec, 0xe73c85bc, 0x4f7504e, 0xe7481ca1,
+    0x4f276f7, 0xe753b479, 0x4ed9fe7, 0xe75f4d45,
+    0x4e8cb1e, 0xe76ae704, 0x4e3f89c, 0xe77681b6,
+    0x4df2862, 0xe7821d59, 0x4da5a6f, 0xe78db9ef,
+    0x4d58ec3, 0xe7995776, 0x4d0c560, 0xe7a4f5ed,
+    0x4cbfe45, 0xe7b09555, 0x4c73972, 0xe7bc35ad,
+    0x4c276e8, 0xe7c7d6f4, 0x4bdb6a6, 0xe7d3792b,
+    0x4b8f8ad, 0xe7df1c50, 0x4b43cfd, 0xe7eac063,
+    0x4af8397, 0xe7f66564, 0x4aacc7a, 0xe8020b52,
+    0x4a617a6, 0xe80db22d, 0x4a1651c, 0xe81959f4,
+    0x49cb4dd, 0xe82502a7, 0x49806e7, 0xe830ac45,
+    0x4935b3c, 0xe83c56cf, 0x48eb1db, 0xe8480243,
+    0x48a0ac4, 0xe853aea1, 0x48565f9, 0xe85f5be9,
+    0x480c379, 0xe86b0a1a, 0x47c2344, 0xe876b934,
+    0x477855a, 0xe8826936, 0x472e9bc, 0xe88e1a20,
+    0x46e5069, 0xe899cbf1, 0x469b963, 0xe8a57ea9,
+    0x46524a9, 0xe8b13248, 0x460923b, 0xe8bce6cd,
+    0x45c0219, 0xe8c89c37, 0x4577444, 0xe8d45286,
+    0x452e8bc, 0xe8e009ba, 0x44e5f80, 0xe8ebc1d3,
+    0x449d892, 0xe8f77acf, 0x44553f2, 0xe90334af,
+    0x440d19e, 0xe90eef71, 0x43c5199, 0xe91aab16,
+    0x437d3e1, 0xe926679c, 0x4335877, 0xe9322505,
+    0x42edf5c, 0xe93de34e, 0x42a688f, 0xe949a278,
+    0x425f410, 0xe9556282, 0x42181e0, 0xe961236c,
+    0x41d11ff, 0xe96ce535, 0x418a46d, 0xe978a7dd,
+    0x414392b, 0xe9846b63, 0x40fd037, 0xe9902fc7,
+    0x40b6994, 0xe99bf509, 0x4070540, 0xe9a7bb28,
+    0x402a33c, 0xe9b38223, 0x3fe4388, 0xe9bf49fa,
+    0x3f9e624, 0xe9cb12ad, 0x3f58b10, 0xe9d6dc3b,
+    0x3f1324e, 0xe9e2a6a3, 0x3ecdbdc, 0xe9ee71e6,
+    0x3e887bb, 0xe9fa3e03, 0x3e435ea, 0xea060af9,
+    0x3dfe66c, 0xea11d8c8, 0x3db993e, 0xea1da770,
+    0x3d74e62, 0xea2976ef, 0x3d305d8, 0xea354746,
+    0x3cebfa0, 0xea411874, 0x3ca7bba, 0xea4cea79,
+    0x3c63a26, 0xea58bd54, 0x3c1fae5, 0xea649105,
+    0x3bdbdf6, 0xea70658a, 0x3b9835a, 0xea7c3ae5,
+    0x3b54b11, 0xea881114, 0x3b1151b, 0xea93e817,
+    0x3ace178, 0xea9fbfed, 0x3a8b028, 0xeaab9896,
+    0x3a4812c, 0xeab77212, 0x3a05484, 0xeac34c60,
+    0x39c2a2f, 0xeacf277f, 0x398022f, 0xeadb0370,
+    0x393dc82, 0xeae6e031, 0x38fb92a, 0xeaf2bdc3,
+    0x38b9827, 0xeafe9c24, 0x3877978, 0xeb0a7b54,
+    0x3835d1e, 0xeb165b54, 0x37f4319, 0xeb223c22,
+    0x37b2b6a, 0xeb2e1dbe, 0x377160f, 0xeb3a0027,
+    0x373030a, 0xeb45e35d, 0x36ef25b, 0xeb51c760,
+    0x36ae401, 0xeb5dac2f, 0x366d7fd, 0xeb6991ca,
+    0x362ce50, 0xeb75782f, 0x35ec6f8, 0xeb815f60,
+    0x35ac1f7, 0xeb8d475b, 0x356bf4d, 0xeb99301f,
+    0x352bef9, 0xeba519ad, 0x34ec0fc, 0xebb10404,
+    0x34ac556, 0xebbcef23, 0x346cc07, 0xebc8db0b,
+    0x342d510, 0xebd4c7ba, 0x33ee070, 0xebe0b52f,
+    0x33aee27, 0xebeca36c, 0x336fe37, 0xebf8926f,
+    0x333109e, 0xec048237, 0x32f255e, 0xec1072c4,
+    0x32b3c75, 0xec1c6417, 0x32755e5, 0xec28562d,
+    0x32371ae, 0xec344908, 0x31f8fcf, 0xec403ca5,
+    0x31bb049, 0xec4c3106, 0x317d31c, 0xec582629,
+    0x313f848, 0xec641c0e, 0x3101fce, 0xec7012b5,
+    0x30c49ad, 0xec7c0a1d, 0x30875e5, 0xec880245,
+    0x304a477, 0xec93fb2e, 0x300d563, 0xec9ff4d6,
+    0x2fd08a9, 0xecabef3d, 0x2f93e4a, 0xecb7ea63,
+    0x2f57644, 0xecc3e648, 0x2f1b099, 0xeccfe2ea,
+    0x2eded49, 0xecdbe04a, 0x2ea2c53, 0xece7de66,
+    0x2e66db8, 0xecf3dd3f, 0x2e2b178, 0xecffdcd4,
+    0x2def794, 0xed0bdd25, 0x2db400a, 0xed17de31,
+    0x2d78add, 0xed23dff7, 0x2d3d80a, 0xed2fe277,
+    0x2d02794, 0xed3be5b1, 0x2cc7979, 0xed47e9a5,
+    0x2c8cdbb, 0xed53ee51, 0x2c52459, 0xed5ff3b5,
+    0x2c17d52, 0xed6bf9d1, 0x2bdd8a9, 0xed7800a5,
+    0x2ba365c, 0xed84082f, 0x2b6966c, 0xed901070,
+    0x2b2f8d8, 0xed9c1967, 0x2af5da2, 0xeda82313,
+    0x2abc4c9, 0xedb42d74, 0x2a82e4d, 0xedc0388a,
+    0x2a49a2e, 0xedcc4454, 0x2a1086d, 0xedd850d2,
+    0x29d790a, 0xede45e03, 0x299ec05, 0xedf06be6,
+    0x296615d, 0xedfc7a7c, 0x292d914, 0xee0889c4,
+    0x28f5329, 0xee1499bd, 0x28bcf9c, 0xee20aa67,
+    0x2884e6e, 0xee2cbbc1, 0x284cf9f, 0xee38cdcb,
+    0x281532e, 0xee44e084, 0x27dd91c, 0xee50f3ed,
+    0x27a616a, 0xee5d0804, 0x276ec16, 0xee691cc9,
+    0x2737922, 0xee75323c, 0x270088e, 0xee81485c,
+    0x26c9a58, 0xee8d5f29, 0x2692e83, 0xee9976a1,
+    0x265c50e, 0xeea58ec6, 0x2625df8, 0xeeb1a796,
+    0x25ef943, 0xeebdc110, 0x25b96ee, 0xeec9db35,
+    0x25836f9, 0xeed5f604, 0x254d965, 0xeee2117c,
+    0x2517e31, 0xeeee2d9d, 0x24e255e, 0xeefa4a67,
+    0x24aceed, 0xef0667d9, 0x2477adc, 0xef1285f2,
+    0x244292c, 0xef1ea4b2, 0x240d9de, 0xef2ac419,
+    0x23d8cf1, 0xef36e426, 0x23a4265, 0xef4304d8,
+    0x236fa3b, 0xef4f2630, 0x233b473, 0xef5b482d,
+    0x230710d, 0xef676ace, 0x22d3009, 0xef738e12,
+    0x229f167, 0xef7fb1fa, 0x226b528, 0xef8bd685,
+    0x2237b4b, 0xef97fbb2, 0x22043d0, 0xefa42181,
+    0x21d0eb8, 0xefb047f2, 0x219dc03, 0xefbc6f03,
+    0x216abb1, 0xefc896b5, 0x2137dc2, 0xefd4bf08,
+    0x2105236, 0xefe0e7f9, 0x20d290d, 0xefed118a,
+    0x20a0248, 0xeff93bba, 0x206dde6, 0xf0056687,
+    0x203bbe8, 0xf01191f3, 0x2009c4e, 0xf01dbdfb,
+    0x1fd7f17, 0xf029eaa1, 0x1fa6445, 0xf03617e2,
+    0x1f74bd6, 0xf04245c0, 0x1f435cc, 0xf04e7438,
+    0x1f12227, 0xf05aa34c, 0x1ee10e5, 0xf066d2fa,
+    0x1eb0209, 0xf0730342, 0x1e7f591, 0xf07f3424,
+    0x1e4eb7e, 0xf08b659f, 0x1e1e3d0, 0xf09797b2,
+    0x1dede87, 0xf0a3ca5d, 0x1dbdba3, 0xf0affda0,
+    0x1d8db25, 0xf0bc317a, 0x1d5dd0c, 0xf0c865ea,
+    0x1d2e158, 0xf0d49af1, 0x1cfe80a, 0xf0e0d08d,
+    0x1ccf122, 0xf0ed06bf, 0x1c9fca0, 0xf0f93d86,
+    0x1c70a84, 0xf10574e0, 0x1c41ace, 0xf111accf,
+    0x1c12d7e, 0xf11de551, 0x1be4294, 0xf12a1e66,
+    0x1bb5a11, 0xf136580d, 0x1b873f5, 0xf1429247,
+    0x1b5903f, 0xf14ecd11, 0x1b2aef0, 0xf15b086d,
+    0x1afd007, 0xf1674459, 0x1acf386, 0xf17380d6,
+    0x1aa196c, 0xf17fbde2, 0x1a741b9, 0xf18bfb7d,
+    0x1a46c6e, 0xf19839a6, 0x1a1998a, 0xf1a4785e,
+    0x19ec90d, 0xf1b0b7a4, 0x19bfaf9, 0xf1bcf777,
+    0x1992f4c, 0xf1c937d6, 0x1966606, 0xf1d578c2,
+    0x1939f29, 0xf1e1ba3a, 0x190dab4, 0xf1edfc3d,
+    0x18e18a7, 0xf1fa3ecb, 0x18b5903, 0xf20681e3,
+    0x1889bc6, 0xf212c585, 0x185e0f3, 0xf21f09b1,
+    0x1832888, 0xf22b4e66, 0x1807285, 0xf23793a3,
+    0x17dbeec, 0xf243d968, 0x17b0dbb, 0xf2501fb5,
+    0x1785ef4, 0xf25c6688, 0x175b296, 0xf268ade3,
+    0x17308a1, 0xf274f5c3, 0x1706115, 0xf2813e2a,
+    0x16dbbf3, 0xf28d8715, 0x16b193a, 0xf299d085,
+    0x16878eb, 0xf2a61a7a, 0x165db05, 0xf2b264f2,
+    0x1633f8a, 0xf2beafed, 0x160a678, 0xf2cafb6b,
+    0x15e0fd1, 0xf2d7476c, 0x15b7b94, 0xf2e393ef,
+    0x158e9c1, 0xf2efe0f2, 0x1565a58, 0xf2fc2e77,
+    0x153cd5a, 0xf3087c7d, 0x15142c6, 0xf314cb02,
+    0x14eba9d, 0xf3211a07, 0x14c34df, 0xf32d698a,
+    0x149b18b, 0xf339b98d, 0x14730a3, 0xf3460a0d,
+    0x144b225, 0xf3525b0b, 0x1423613, 0xf35eac86,
+    0x13fbc6c, 0xf36afe7e, 0x13d4530, 0xf37750f2,
+    0x13ad060, 0xf383a3e2, 0x1385dfb, 0xf38ff74d,
+    0x135ee02, 0xf39c4b32, 0x1338075, 0xf3a89f92,
+    0x1311553, 0xf3b4f46c, 0x12eac9d, 0xf3c149bf,
+    0x12c4653, 0xf3cd9f8b, 0x129e276, 0xf3d9f5cf,
+    0x1278104, 0xf3e64c8c, 0x12521ff, 0xf3f2a3bf,
+    0x122c566, 0xf3fefb6a, 0x1206b39, 0xf40b538b,
+    0x11e1379, 0xf417ac22, 0x11bbe26, 0xf424052f,
+    0x1196b3f, 0xf4305eb0, 0x1171ac6, 0xf43cb8a7,
+    0x114ccb9, 0xf4491311, 0x1128119, 0xf4556def,
+    0x11037e6, 0xf461c940, 0x10df120, 0xf46e2504,
+    0x10bacc8, 0xf47a8139, 0x1096add, 0xf486dde1,
+    0x1072b5f, 0xf4933afa, 0x104ee4f, 0xf49f9884,
+    0x102b3ac, 0xf4abf67e, 0x1007b77, 0xf4b854e7,
+    0xfe45b0, 0xf4c4b3c0, 0xfc1257, 0xf4d11308,
+    0xf9e16b, 0xf4dd72be, 0xf7b2ee, 0xf4e9d2e3,
+    0xf586df, 0xf4f63374, 0xf35d3e, 0xf5029473,
+    0xf1360b, 0xf50ef5de, 0xef1147, 0xf51b57b5,
+    0xeceef1, 0xf527b9f7, 0xeacf09, 0xf5341ca5,
+    0xe8b190, 0xf5407fbd, 0xe69686, 0xf54ce33f,
+    0xe47deb, 0xf559472b, 0xe267be, 0xf565ab80,
+    0xe05401, 0xf572103d, 0xde42b2, 0xf57e7563,
+    0xdc33d2, 0xf58adaf0, 0xda2762, 0xf59740e5,
+    0xd81d61, 0xf5a3a740, 0xd615cf, 0xf5b00e02,
+    0xd410ad, 0xf5bc7529, 0xd20dfa, 0xf5c8dcb6,
+    0xd00db6, 0xf5d544a7, 0xce0fe3, 0xf5e1acfd,
+    0xcc147f, 0xf5ee15b7, 0xca1b8a, 0xf5fa7ed4,
+    0xc82506, 0xf606e854, 0xc630f2, 0xf6135237,
+    0xc43f4d, 0xf61fbc7b, 0xc25019, 0xf62c2721,
+    0xc06355, 0xf6389228, 0xbe7901, 0xf644fd8f,
+    0xbc911d, 0xf6516956, 0xbaabaa, 0xf65dd57d,
+    0xb8c8a7, 0xf66a4203, 0xb6e815, 0xf676aee8,
+    0xb509f3, 0xf6831c2b, 0xb32e42, 0xf68f89cb,
+    0xb15502, 0xf69bf7c9, 0xaf7e33, 0xf6a86623,
+    0xada9d4, 0xf6b4d4d9, 0xabd7e6, 0xf6c143ec,
+    0xaa086a, 0xf6cdb359, 0xa83b5e, 0xf6da2321,
+    0xa670c4, 0xf6e69344, 0xa4a89b, 0xf6f303c0,
+    0xa2e2e3, 0xf6ff7496, 0xa11f9d, 0xf70be5c4,
+    0x9f5ec8, 0xf718574b, 0x9da065, 0xf724c92a,
+    0x9be473, 0xf7313b60, 0x9a2af3, 0xf73daded,
+    0x9873e4, 0xf74a20d0, 0x96bf48, 0xf756940a,
+    0x950d1d, 0xf7630799, 0x935d64, 0xf76f7b7d,
+    0x91b01d, 0xf77befb5, 0x900548, 0xf7886442,
+    0x8e5ce5, 0xf794d922, 0x8cb6f5, 0xf7a14e55,
+    0x8b1376, 0xf7adc3db, 0x89726a, 0xf7ba39b3,
+    0x87d3d0, 0xf7c6afdc, 0x8637a9, 0xf7d32657,
+    0x849df4, 0xf7df9d22, 0x8306b2, 0xf7ec143e,
+    0x8171e2, 0xf7f88ba9, 0x7fdf85, 0xf8050364,
+    0x7e4f9b, 0xf8117b6d, 0x7cc223, 0xf81df3c5,
+    0x7b371e, 0xf82a6c6a, 0x79ae8c, 0xf836e55d,
+    0x78286e, 0xf8435e9d, 0x76a4c2, 0xf84fd829,
+    0x752389, 0xf85c5201, 0x73a4c3, 0xf868cc24,
+    0x722871, 0xf8754692, 0x70ae92, 0xf881c14b,
+    0x6f3726, 0xf88e3c4d, 0x6dc22e, 0xf89ab799,
+    0x6c4fa8, 0xf8a7332e, 0x6adf97, 0xf8b3af0c,
+    0x6971f9, 0xf8c02b31, 0x6806ce, 0xf8cca79e,
+    0x669e18, 0xf8d92452, 0x6537d4, 0xf8e5a14d,
+    0x63d405, 0xf8f21e8e, 0x6272aa, 0xf8fe9c15,
+    0x6113c2, 0xf90b19e0, 0x5fb74e, 0xf91797f0,
+    0x5e5d4e, 0xf9241645, 0x5d05c3, 0xf93094dd,
+    0x5bb0ab, 0xf93d13b8, 0x5a5e07, 0xf94992d7,
+    0x590dd8, 0xf9561237, 0x57c01d, 0xf96291d9,
+    0x5674d6, 0xf96f11bc, 0x552c03, 0xf97b91e1,
+    0x53e5a5, 0xf9881245, 0x52a1bb, 0xf99492ea,
+    0x516045, 0xf9a113cd, 0x502145, 0xf9ad94f0,
+    0x4ee4b8, 0xf9ba1651, 0x4daaa1, 0xf9c697f0,
+    0x4c72fe, 0xf9d319cc, 0x4b3dcf, 0xf9df9be6,
+    0x4a0b16, 0xf9ec1e3b, 0x48dad1, 0xf9f8a0cd,
+    0x47ad01, 0xfa05239a, 0x4681a6, 0xfa11a6a3,
+    0x4558c0, 0xfa1e29e5, 0x44324f, 0xfa2aad62,
+    0x430e53, 0xfa373119, 0x41eccc, 0xfa43b508,
+    0x40cdba, 0xfa503930, 0x3fb11d, 0xfa5cbd91,
+    0x3e96f6, 0xfa694229, 0x3d7f44, 0xfa75c6f8,
+    0x3c6a07, 0xfa824bfd, 0x3b573f, 0xfa8ed139,
+    0x3a46ed, 0xfa9b56ab, 0x393910, 0xfaa7dc52,
+    0x382da8, 0xfab4622d, 0x3724b6, 0xfac0e83d,
+    0x361e3a, 0xfacd6e81, 0x351a33, 0xfad9f4f8,
+    0x3418a2, 0xfae67ba2, 0x331986, 0xfaf3027e,
+    0x321ce0, 0xfaff898c, 0x3122b0, 0xfb0c10cb,
+    0x302af5, 0xfb18983b, 0x2f35b1, 0xfb251fdc,
+    0x2e42e2, 0xfb31a7ac, 0x2d5289, 0xfb3e2fac,
+    0x2c64a6, 0xfb4ab7db, 0x2b7939, 0xfb574039,
+    0x2a9042, 0xfb63c8c4, 0x29a9c1, 0xfb70517d,
+    0x28c5b6, 0xfb7cda63, 0x27e421, 0xfb896375,
+    0x270502, 0xfb95ecb4, 0x262859, 0xfba2761e,
+    0x254e27, 0xfbaeffb3, 0x24766a, 0xfbbb8973,
+    0x23a124, 0xfbc8135c, 0x22ce54, 0xfbd49d70,
+    0x21fdfb, 0xfbe127ac, 0x213018, 0xfbedb212,
+    0x2064ab, 0xfbfa3c9f, 0x1f9bb5, 0xfc06c754,
+    0x1ed535, 0xfc135231, 0x1e112b, 0xfc1fdd34,
+    0x1d4f99, 0xfc2c685d, 0x1c907c, 0xfc38f3ac,
+    0x1bd3d6, 0xfc457f21, 0x1b19a7, 0xfc520aba,
+    0x1a61ee, 0xfc5e9678, 0x19acac, 0xfc6b2259,
+    0x18f9e1, 0xfc77ae5e, 0x18498c, 0xfc843a85,
+    0x179bae, 0xfc90c6cf, 0x16f047, 0xfc9d533b,
+    0x164757, 0xfca9dfc8, 0x15a0dd, 0xfcb66c77,
+    0x14fcda, 0xfcc2f945, 0x145b4e, 0xfccf8634,
+    0x13bc39, 0xfcdc1342, 0x131f9b, 0xfce8a06f,
+    0x128574, 0xfcf52dbb, 0x11edc3, 0xfd01bb24,
+    0x11588a, 0xfd0e48ab, 0x10c5c7, 0xfd1ad650,
+    0x10357c, 0xfd276410, 0xfa7a8, 0xfd33f1ed,
+    0xf1c4a, 0xfd407fe6, 0xe9364, 0xfd4d0df9,
+    0xe0cf5, 0xfd599c28, 0xd88fd, 0xfd662a70,
+    0xd077c, 0xfd72b8d2, 0xc8872, 0xfd7f474d,
+    0xc0be0, 0xfd8bd5e1, 0xb91c4, 0xfd98648d,
+    0xb1a20, 0xfda4f351, 0xaa4f3, 0xfdb1822c,
+    0xa323d, 0xfdbe111e, 0x9c1ff, 0xfdcaa027,
+    0x95438, 0xfdd72f45, 0x8e8e8, 0xfde3be78,
+    0x8800f, 0xfdf04dc0, 0x819ae, 0xfdfcdd1d,
+    0x7b5c4, 0xfe096c8d, 0x75452, 0xfe15fc11,
+    0x6f556, 0xfe228ba7, 0x698d3, 0xfe2f1b50,
+    0x63ec6, 0xfe3bab0b, 0x5e731, 0xfe483ad8,
+    0x59214, 0xfe54cab5, 0x53f6e, 0xfe615aa3,
+    0x4ef3f, 0xfe6deaa1, 0x4a188, 0xfe7a7aae,
+    0x45648, 0xfe870aca, 0x40d80, 0xfe939af5,
+    0x3c72f, 0xfea02b2e, 0x38356, 0xfeacbb74,
+    0x341f4, 0xfeb94bc8, 0x3030a, 0xfec5dc28,
+    0x2c697, 0xfed26c94, 0x28c9c, 0xfedefd0c,
+    0x25519, 0xfeeb8d8f, 0x2200d, 0xfef81e1d,
+    0x1ed78, 0xff04aeb5, 0x1bd5c, 0xff113f56,
+    0x18fb6, 0xff1dd001, 0x16489, 0xff2a60b4,
+    0x13bd3, 0xff36f170, 0x11594, 0xff438234,
+    0xf1ce, 0xff5012fe, 0xd07e, 0xff5ca3d0,
+    0xb1a7, 0xff6934a8, 0x9547, 0xff75c585,
+    0x7b5f, 0xff825668, 0x63ee, 0xff8ee750,
+    0x4ef5, 0xff9b783c, 0x3c74, 0xffa8092c,
+    0x2c6a, 0xffb49a1f, 0x1ed8, 0xffc12b16,
+    0x13bd, 0xffcdbc0f, 0xb1a, 0xffda4d09,
+    0x4ef, 0xffe6de05, 0x13c, 0xfff36f02,
+    0x0, 0x0, 0x13c, 0xc90fe,
+    0x4ef, 0x1921fb, 0xb1a, 0x25b2f7,
+    0x13bd, 0x3243f1, 0x1ed8, 0x3ed4ea,
+    0x2c6a, 0x4b65e1, 0x3c74, 0x57f6d4,
+    0x4ef5, 0x6487c4, 0x63ee, 0x7118b0,
+    0x7b5f, 0x7da998, 0x9547, 0x8a3a7b,
+    0xb1a7, 0x96cb58, 0xd07e, 0xa35c30,
+    0xf1ce, 0xafed02, 0x11594, 0xbc7dcc,
+    0x13bd3, 0xc90e90, 0x16489, 0xd59f4c,
+    0x18fb6, 0xe22fff, 0x1bd5c, 0xeec0aa,
+    0x1ed78, 0xfb514b, 0x2200d, 0x107e1e3,
+    0x25519, 0x1147271, 0x28c9c, 0x12102f4,
+    0x2c697, 0x12d936c, 0x3030a, 0x13a23d8,
+    0x341f4, 0x146b438, 0x38356, 0x153448c,
+    0x3c72f, 0x15fd4d2, 0x40d80, 0x16c650b,
+    0x45648, 0x178f536, 0x4a188, 0x1858552,
+    0x4ef3f, 0x192155f, 0x53f6e, 0x19ea55d,
+    0x59214, 0x1ab354b, 0x5e731, 0x1b7c528,
+    0x63ec6, 0x1c454f5, 0x698d3, 0x1d0e4b0,
+    0x6f556, 0x1dd7459, 0x75452, 0x1ea03ef,
+    0x7b5c4, 0x1f69373, 0x819ae, 0x20322e3,
+    0x8800f, 0x20fb240, 0x8e8e8, 0x21c4188,
+    0x95438, 0x228d0bb, 0x9c1ff, 0x2355fd9,
+    0xa323d, 0x241eee2, 0xaa4f3, 0x24e7dd4,
+    0xb1a20, 0x25b0caf, 0xb91c4, 0x2679b73,
+    0xc0be0, 0x2742a1f, 0xc8872, 0x280b8b3,
+    0xd077c, 0x28d472e, 0xd88fd, 0x299d590,
+    0xe0cf5, 0x2a663d8, 0xe9364, 0x2b2f207,
+    0xf1c4a, 0x2bf801a, 0xfa7a8, 0x2cc0e13,
+    0x10357c, 0x2d89bf0, 0x10c5c7, 0x2e529b0,
+    0x11588a, 0x2f1b755, 0x11edc3, 0x2fe44dc,
+    0x128574, 0x30ad245, 0x131f9b, 0x3175f91,
+    0x13bc39, 0x323ecbe, 0x145b4e, 0x33079cc,
+    0x14fcda, 0x33d06bb, 0x15a0dd, 0x3499389,
+    0x164757, 0x3562038, 0x16f047, 0x362acc5,
+    0x179bae, 0x36f3931, 0x18498c, 0x37bc57b,
+    0x18f9e1, 0x38851a2, 0x19acac, 0x394dda7,
+    0x1a61ee, 0x3a16988, 0x1b19a7, 0x3adf546,
+    0x1bd3d6, 0x3ba80df, 0x1c907c, 0x3c70c54,
+    0x1d4f99, 0x3d397a3, 0x1e112b, 0x3e022cc,
+    0x1ed535, 0x3ecadcf, 0x1f9bb5, 0x3f938ac,
+    0x2064ab, 0x405c361, 0x213018, 0x4124dee,
+    0x21fdfb, 0x41ed854, 0x22ce54, 0x42b6290,
+    0x23a124, 0x437eca4, 0x24766a, 0x444768d,
+    0x254e27, 0x451004d, 0x262859, 0x45d89e2,
+    0x270502, 0x46a134c, 0x27e421, 0x4769c8b,
+    0x28c5b6, 0x483259d, 0x29a9c1, 0x48fae83,
+    0x2a9042, 0x49c373c, 0x2b7939, 0x4a8bfc7,
+    0x2c64a6, 0x4b54825, 0x2d5289, 0x4c1d054,
+    0x2e42e2, 0x4ce5854, 0x2f35b1, 0x4dae024,
+    0x302af5, 0x4e767c5, 0x3122b0, 0x4f3ef35,
+    0x321ce0, 0x5007674, 0x331986, 0x50cfd82,
+    0x3418a2, 0x519845e, 0x351a33, 0x5260b08,
+    0x361e3a, 0x532917f, 0x3724b6, 0x53f17c3,
+    0x382da8, 0x54b9dd3, 0x393910, 0x55823ae,
+    0x3a46ed, 0x564a955, 0x3b573f, 0x5712ec7,
+    0x3c6a07, 0x57db403, 0x3d7f44, 0x58a3908,
+    0x3e96f6, 0x596bdd7, 0x3fb11d, 0x5a3426f,
+    0x40cdba, 0x5afc6d0, 0x41eccc, 0x5bc4af8,
+    0x430e53, 0x5c8cee7, 0x44324f, 0x5d5529e,
+    0x4558c0, 0x5e1d61b, 0x4681a6, 0x5ee595d,
+    0x47ad01, 0x5fadc66, 0x48dad1, 0x6075f33,
+    0x4a0b16, 0x613e1c5, 0x4b3dcf, 0x620641a,
+    0x4c72fe, 0x62ce634, 0x4daaa1, 0x6396810,
+    0x4ee4b8, 0x645e9af, 0x502145, 0x6526b10,
+    0x516045, 0x65eec33, 0x52a1bb, 0x66b6d16,
+    0x53e5a5, 0x677edbb, 0x552c03, 0x6846e1f,
+    0x5674d6, 0x690ee44, 0x57c01d, 0x69d6e27,
+    0x590dd8, 0x6a9edc9, 0x5a5e07, 0x6b66d29,
+    0x5bb0ab, 0x6c2ec48, 0x5d05c3, 0x6cf6b23,
+    0x5e5d4e, 0x6dbe9bb, 0x5fb74e, 0x6e86810,
+    0x6113c2, 0x6f4e620, 0x6272aa, 0x70163eb,
+    0x63d405, 0x70de172, 0x6537d4, 0x71a5eb3,
+    0x669e18, 0x726dbae, 0x6806ce, 0x7335862,
+    0x6971f9, 0x73fd4cf, 0x6adf97, 0x74c50f4,
+    0x6c4fa8, 0x758ccd2, 0x6dc22e, 0x7654867,
+    0x6f3726, 0x771c3b3, 0x70ae92, 0x77e3eb5,
+    0x722871, 0x78ab96e, 0x73a4c3, 0x79733dc,
+    0x752389, 0x7a3adff, 0x76a4c2, 0x7b027d7,
+    0x78286e, 0x7bca163, 0x79ae8c, 0x7c91aa3,
+    0x7b371e, 0x7d59396, 0x7cc223, 0x7e20c3b,
+    0x7e4f9b, 0x7ee8493, 0x7fdf85, 0x7fafc9c,
+    0x8171e2, 0x8077457, 0x8306b2, 0x813ebc2,
+    0x849df4, 0x82062de, 0x8637a9, 0x82cd9a9,
+    0x87d3d0, 0x8395024, 0x89726a, 0x845c64d,
+    0x8b1376, 0x8523c25, 0x8cb6f5, 0x85eb1ab,
+    0x8e5ce5, 0x86b26de, 0x900548, 0x8779bbe,
+    0x91b01d, 0x884104b, 0x935d64, 0x8908483,
+    0x950d1d, 0x89cf867, 0x96bf48, 0x8a96bf6,
+    0x9873e4, 0x8b5df30, 0x9a2af3, 0x8c25213,
+    0x9be473, 0x8cec4a0, 0x9da065, 0x8db36d6,
+    0x9f5ec8, 0x8e7a8b5, 0xa11f9d, 0x8f41a3c,
+    0xa2e2e3, 0x9008b6a, 0xa4a89b, 0x90cfc40,
+    0xa670c4, 0x9196cbc, 0xa83b5e, 0x925dcdf,
+    0xaa086a, 0x9324ca7, 0xabd7e6, 0x93ebc14,
+    0xada9d4, 0x94b2b27, 0xaf7e33, 0x95799dd,
+    0xb15502, 0x9640837, 0xb32e42, 0x9707635,
+    0xb509f3, 0x97ce3d5, 0xb6e815, 0x9895118,
+    0xb8c8a7, 0x995bdfd, 0xbaabaa, 0x9a22a83,
+    0xbc911d, 0x9ae96aa, 0xbe7901, 0x9bb0271,
+    0xc06355, 0x9c76dd8, 0xc25019, 0x9d3d8df,
+    0xc43f4d, 0x9e04385, 0xc630f2, 0x9ecadc9,
+    0xc82506, 0x9f917ac, 0xca1b8a, 0xa05812c,
+    0xcc147f, 0xa11ea49, 0xce0fe3, 0xa1e5303,
+    0xd00db6, 0xa2abb59, 0xd20dfa, 0xa37234a,
+    0xd410ad, 0xa438ad7, 0xd615cf, 0xa4ff1fe,
+    0xd81d61, 0xa5c58c0, 0xda2762, 0xa68bf1b,
+    0xdc33d2, 0xa752510, 0xde42b2, 0xa818a9d,
+    0xe05401, 0xa8defc3, 0xe267be, 0xa9a5480,
+    0xe47deb, 0xaa6b8d5, 0xe69686, 0xab31cc1,
+    0xe8b190, 0xabf8043, 0xeacf09, 0xacbe35b,
+    0xeceef1, 0xad84609, 0xef1147, 0xae4a84b,
+    0xf1360b, 0xaf10a22, 0xf35d3e, 0xafd6b8d,
+    0xf586df, 0xb09cc8c, 0xf7b2ee, 0xb162d1d,
+    0xf9e16b, 0xb228d42, 0xfc1257, 0xb2eecf8,
+    0xfe45b0, 0xb3b4c40, 0x1007b77, 0xb47ab19,
+    0x102b3ac, 0xb540982, 0x104ee4f, 0xb60677c,
+    0x1072b5f, 0xb6cc506, 0x1096add, 0xb79221f,
+    0x10bacc8, 0xb857ec7, 0x10df120, 0xb91dafc,
+    0x11037e6, 0xb9e36c0, 0x1128119, 0xbaa9211,
+    0x114ccb9, 0xbb6ecef, 0x1171ac6, 0xbc34759,
+    0x1196b3f, 0xbcfa150, 0x11bbe26, 0xbdbfad1,
+    0x11e1379, 0xbe853de, 0x1206b39, 0xbf4ac75,
+    0x122c566, 0xc010496, 0x12521ff, 0xc0d5c41,
+    0x1278104, 0xc19b374, 0x129e276, 0xc260a31,
+    0x12c4653, 0xc326075, 0x12eac9d, 0xc3eb641,
+    0x1311553, 0xc4b0b94, 0x1338075, 0xc57606e,
+    0x135ee02, 0xc63b4ce, 0x1385dfb, 0xc7008b3,
+    0x13ad060, 0xc7c5c1e, 0x13d4530, 0xc88af0e,
+    0x13fbc6c, 0xc950182, 0x1423613, 0xca1537a,
+    0x144b225, 0xcada4f5, 0x14730a3, 0xcb9f5f3,
+    0x149b18b, 0xcc64673, 0x14c34df, 0xcd29676,
+    0x14eba9d, 0xcdee5f9, 0x15142c6, 0xceb34fe,
+    0x153cd5a, 0xcf78383, 0x1565a58, 0xd03d189,
+    0x158e9c1, 0xd101f0e, 0x15b7b94, 0xd1c6c11,
+    0x15e0fd1, 0xd28b894, 0x160a678, 0xd350495,
+    0x1633f8a, 0xd415013, 0x165db05, 0xd4d9b0e,
+    0x16878eb, 0xd59e586, 0x16b193a, 0xd662f7b,
+    0x16dbbf3, 0xd7278eb, 0x1706115, 0xd7ec1d6,
+    0x17308a1, 0xd8b0a3d, 0x175b296, 0xd97521d,
+    0x1785ef4, 0xda39978, 0x17b0dbb, 0xdafe04b,
+    0x17dbeec, 0xdbc2698, 0x1807285, 0xdc86c5d,
+    0x1832888, 0xdd4b19a, 0x185e0f3, 0xde0f64f,
+    0x1889bc6, 0xded3a7b, 0x18b5903, 0xdf97e1d,
+    0x18e18a7, 0xe05c135, 0x190dab4, 0xe1203c3,
+    0x1939f29, 0xe1e45c6, 0x1966606, 0xe2a873e,
+    0x1992f4c, 0xe36c82a, 0x19bfaf9, 0xe430889,
+    0x19ec90d, 0xe4f485c, 0x1a1998a, 0xe5b87a2,
+    0x1a46c6e, 0xe67c65a, 0x1a741b9, 0xe740483,
+    0x1aa196c, 0xe80421e, 0x1acf386, 0xe8c7f2a,
+    0x1afd007, 0xe98bba7, 0x1b2aef0, 0xea4f793,
+    0x1b5903f, 0xeb132ef, 0x1b873f5, 0xebd6db9,
+    0x1bb5a11, 0xec9a7f3, 0x1be4294, 0xed5e19a,
+    0x1c12d7e, 0xee21aaf, 0x1c41ace, 0xeee5331,
+    0x1c70a84, 0xefa8b20, 0x1c9fca0, 0xf06c27a,
+    0x1ccf122, 0xf12f941, 0x1cfe80a, 0xf1f2f73,
+    0x1d2e158, 0xf2b650f, 0x1d5dd0c, 0xf379a16,
+    0x1d8db25, 0xf43ce86, 0x1dbdba3, 0xf500260,
+    0x1dede87, 0xf5c35a3, 0x1e1e3d0, 0xf68684e,
+    0x1e4eb7e, 0xf749a61, 0x1e7f591, 0xf80cbdc,
+    0x1eb0209, 0xf8cfcbe, 0x1ee10e5, 0xf992d06,
+    0x1f12227, 0xfa55cb4, 0x1f435cc, 0xfb18bc8,
+    0x1f74bd6, 0xfbdba40, 0x1fa6445, 0xfc9e81e,
+    0x1fd7f17, 0xfd6155f, 0x2009c4e, 0xfe24205,
+    0x203bbe8, 0xfee6e0d, 0x206dde6, 0xffa9979,
+    0x20a0248, 0x1006c446, 0x20d290d, 0x1012ee76,
+    0x2105236, 0x101f1807, 0x2137dc2, 0x102b40f8,
+    0x216abb1, 0x1037694b, 0x219dc03, 0x104390fd,
+    0x21d0eb8, 0x104fb80e, 0x22043d0, 0x105bde7f,
+    0x2237b4b, 0x1068044e, 0x226b528, 0x1074297b,
+    0x229f167, 0x10804e06, 0x22d3009, 0x108c71ee,
+    0x230710d, 0x10989532, 0x233b473, 0x10a4b7d3,
+    0x236fa3b, 0x10b0d9d0, 0x23a4265, 0x10bcfb28,
+    0x23d8cf1, 0x10c91bda, 0x240d9de, 0x10d53be7,
+    0x244292c, 0x10e15b4e, 0x2477adc, 0x10ed7a0e,
+    0x24aceed, 0x10f99827, 0x24e255e, 0x1105b599,
+    0x2517e31, 0x1111d263, 0x254d965, 0x111dee84,
+    0x25836f9, 0x112a09fc, 0x25b96ee, 0x113624cb,
+    0x25ef943, 0x11423ef0, 0x2625df8, 0x114e586a,
+    0x265c50e, 0x115a713a, 0x2692e83, 0x1166895f,
+    0x26c9a58, 0x1172a0d7, 0x270088e, 0x117eb7a4,
+    0x2737922, 0x118acdc4, 0x276ec16, 0x1196e337,
+    0x27a616a, 0x11a2f7fc, 0x27dd91c, 0x11af0c13,
+    0x281532e, 0x11bb1f7c, 0x284cf9f, 0x11c73235,
+    0x2884e6e, 0x11d3443f, 0x28bcf9c, 0x11df5599,
+    0x28f5329, 0x11eb6643, 0x292d914, 0x11f7763c,
+    0x296615d, 0x12038584, 0x299ec05, 0x120f941a,
+    0x29d790a, 0x121ba1fd, 0x2a1086d, 0x1227af2e,
+    0x2a49a2e, 0x1233bbac, 0x2a82e4d, 0x123fc776,
+    0x2abc4c9, 0x124bd28c, 0x2af5da2, 0x1257dced,
+    0x2b2f8d8, 0x1263e699, 0x2b6966c, 0x126fef90,
+    0x2ba365c, 0x127bf7d1, 0x2bdd8a9, 0x1287ff5b,
+    0x2c17d52, 0x1294062f, 0x2c52459, 0x12a00c4b,
+    0x2c8cdbb, 0x12ac11af, 0x2cc7979, 0x12b8165b,
+    0x2d02794, 0x12c41a4f, 0x2d3d80a, 0x12d01d89,
+    0x2d78add, 0x12dc2009, 0x2db400a, 0x12e821cf,
+    0x2def794, 0x12f422db, 0x2e2b178, 0x1300232c,
+    0x2e66db8, 0x130c22c1, 0x2ea2c53, 0x1318219a,
+    0x2eded49, 0x13241fb6, 0x2f1b099, 0x13301d16,
+    0x2f57644, 0x133c19b8, 0x2f93e4a, 0x1348159d,
+    0x2fd08a9, 0x135410c3, 0x300d563, 0x13600b2a,
+    0x304a477, 0x136c04d2, 0x30875e5, 0x1377fdbb,
+    0x30c49ad, 0x1383f5e3, 0x3101fce, 0x138fed4b,
+    0x313f848, 0x139be3f2, 0x317d31c, 0x13a7d9d7,
+    0x31bb049, 0x13b3cefa, 0x31f8fcf, 0x13bfc35b,
+    0x32371ae, 0x13cbb6f8, 0x32755e5, 0x13d7a9d3,
+    0x32b3c75, 0x13e39be9, 0x32f255e, 0x13ef8d3c,
+    0x333109e, 0x13fb7dc9, 0x336fe37, 0x14076d91,
+    0x33aee27, 0x14135c94, 0x33ee070, 0x141f4ad1,
+    0x342d510, 0x142b3846, 0x346cc07, 0x143724f5,
+    0x34ac556, 0x144310dd, 0x34ec0fc, 0x144efbfc,
+    0x352bef9, 0x145ae653, 0x356bf4d, 0x1466cfe1,
+    0x35ac1f7, 0x1472b8a5, 0x35ec6f8, 0x147ea0a0,
+    0x362ce50, 0x148a87d1, 0x366d7fd, 0x14966e36,
+    0x36ae401, 0x14a253d1, 0x36ef25b, 0x14ae38a0,
+    0x373030a, 0x14ba1ca3, 0x377160f, 0x14c5ffd9,
+    0x37b2b6a, 0x14d1e242, 0x37f4319, 0x14ddc3de,
+    0x3835d1e, 0x14e9a4ac, 0x3877978, 0x14f584ac,
+    0x38b9827, 0x150163dc, 0x38fb92a, 0x150d423d,
+    0x393dc82, 0x15191fcf, 0x398022f, 0x1524fc90,
+    0x39c2a2f, 0x1530d881, 0x3a05484, 0x153cb3a0,
+    0x3a4812c, 0x15488dee, 0x3a8b028, 0x1554676a,
+    0x3ace178, 0x15604013, 0x3b1151b, 0x156c17e9,
+    0x3b54b11, 0x1577eeec, 0x3b9835a, 0x1583c51b,
+    0x3bdbdf6, 0x158f9a76, 0x3c1fae5, 0x159b6efb,
+    0x3c63a26, 0x15a742ac, 0x3ca7bba, 0x15b31587,
+    0x3cebfa0, 0x15bee78c, 0x3d305d8, 0x15cab8ba,
+    0x3d74e62, 0x15d68911, 0x3db993e, 0x15e25890,
+    0x3dfe66c, 0x15ee2738, 0x3e435ea, 0x15f9f507,
+    0x3e887bb, 0x1605c1fd, 0x3ecdbdc, 0x16118e1a,
+    0x3f1324e, 0x161d595d, 0x3f58b10, 0x162923c5,
+    0x3f9e624, 0x1634ed53, 0x3fe4388, 0x1640b606,
+    0x402a33c, 0x164c7ddd, 0x4070540, 0x165844d8,
+    0x40b6994, 0x16640af7, 0x40fd037, 0x166fd039,
+    0x414392b, 0x167b949d, 0x418a46d, 0x16875823,
+    0x41d11ff, 0x16931acb, 0x42181e0, 0x169edc94,
+    0x425f410, 0x16aa9d7e, 0x42a688f, 0x16b65d88,
+    0x42edf5c, 0x16c21cb2, 0x4335877, 0x16cddafb,
+    0x437d3e1, 0x16d99864, 0x43c5199, 0x16e554ea,
+    0x440d19e, 0x16f1108f, 0x44553f2, 0x16fccb51,
+    0x449d892, 0x17088531, 0x44e5f80, 0x17143e2d,
+    0x452e8bc, 0x171ff646, 0x4577444, 0x172bad7a,
+    0x45c0219, 0x173763c9, 0x460923b, 0x17431933,
+    0x46524a9, 0x174ecdb8, 0x469b963, 0x175a8157,
+    0x46e5069, 0x1766340f, 0x472e9bc, 0x1771e5e0,
+    0x477855a, 0x177d96ca, 0x47c2344, 0x178946cc,
+    0x480c379, 0x1794f5e6, 0x48565f9, 0x17a0a417,
+    0x48a0ac4, 0x17ac515f, 0x48eb1db, 0x17b7fdbd,
+    0x4935b3c, 0x17c3a931, 0x49806e7, 0x17cf53bb,
+    0x49cb4dd, 0x17dafd59, 0x4a1651c, 0x17e6a60c,
+    0x4a617a6, 0x17f24dd3, 0x4aacc7a, 0x17fdf4ae,
+    0x4af8397, 0x18099a9c, 0x4b43cfd, 0x18153f9d,
+    0x4b8f8ad, 0x1820e3b0, 0x4bdb6a6, 0x182c86d5,
+    0x4c276e8, 0x1838290c, 0x4c73972, 0x1843ca53,
+    0x4cbfe45, 0x184f6aab, 0x4d0c560, 0x185b0a13,
+    0x4d58ec3, 0x1866a88a, 0x4da5a6f, 0x18724611,
+    0x4df2862, 0x187de2a7, 0x4e3f89c, 0x18897e4a,
+    0x4e8cb1e, 0x189518fc, 0x4ed9fe7, 0x18a0b2bb,
+    0x4f276f7, 0x18ac4b87, 0x4f7504e, 0x18b7e35f,
+    0x4fc2bec, 0x18c37a44, 0x50109d0, 0x18cf1034,
+    0x505e9fb, 0x18daa52f, 0x50acc6b, 0x18e63935,
+    0x50fb121, 0x18f1cc45, 0x514981d, 0x18fd5e5f,
+    0x519815f, 0x1908ef82, 0x51e6ce6, 0x19147fae,
+    0x5235ab2, 0x19200ee3, 0x5284ac3, 0x192b9d1f,
+    0x52d3d18, 0x19372a64, 0x53231b3, 0x1942b6af,
+    0x5372891, 0x194e4201, 0x53c21b4, 0x1959cc5a,
+    0x5411d1b, 0x196555b8, 0x5461ac6, 0x1970de1b,
+    0x54b1ab4, 0x197c6584, 0x5501ce5, 0x1987ebf0,
+    0x555215a, 0x19937161, 0x55a2812, 0x199ef5d6,
+    0x55f310d, 0x19aa794d, 0x5643c4a, 0x19b5fbc8,
+    0x56949ca, 0x19c17d44, 0x56e598c, 0x19ccfdc2,
+    0x5736b90, 0x19d87d42, 0x5787fd6, 0x19e3fbc3,
+    0x57d965d, 0x19ef7944, 0x582af26, 0x19faf5c5,
+    0x587ca31, 0x1a067145, 0x58ce77c, 0x1a11ebc5,
+    0x5920708, 0x1a1d6544, 0x59728d5, 0x1a28ddc0,
+    0x59c4ce3, 0x1a34553b, 0x5a17330, 0x1a3fcbb3,
+    0x5a69bbe, 0x1a4b4128, 0x5abc68c, 0x1a56b599,
+    0x5b0f399, 0x1a622907, 0x5b622e6, 0x1a6d9b70,
+    0x5bb5472, 0x1a790cd4, 0x5c0883d, 0x1a847d33,
+    0x5c5be47, 0x1a8fec8c, 0x5caf690, 0x1a9b5adf,
+    0x5d03118, 0x1aa6c82b, 0x5d56ddd, 0x1ab23471,
+    0x5daace1, 0x1abd9faf, 0x5dfee22, 0x1ac909e5,
+    0x5e531a1, 0x1ad47312, 0x5ea775e, 0x1adfdb37,
+    0x5efbf58, 0x1aeb4253, 0x5f5098f, 0x1af6a865,
+    0x5fa5603, 0x1b020d6c, 0x5ffa4b3, 0x1b0d716a,
+    0x604f5a0, 0x1b18d45c, 0x60a48c9, 0x1b243643,
+    0x60f9e2e, 0x1b2f971e, 0x614f5cf, 0x1b3af6ec,
+    0x61a4fac, 0x1b4655ae, 0x61fabc4, 0x1b51b363,
+    0x6250a18, 0x1b5d100a, 0x62a6aa6, 0x1b686ba3,
+    0x62fcd6f, 0x1b73c62d, 0x6353273, 0x1b7f1fa9,
+    0x63a99b1, 0x1b8a7815, 0x6400329, 0x1b95cf71,
+    0x6456edb, 0x1ba125bd, 0x64adcc7, 0x1bac7af9,
+    0x6504ced, 0x1bb7cf23, 0x655bf4c, 0x1bc3223c,
+    0x65b33e4, 0x1bce7442, 0x660aab5, 0x1bd9c537,
+    0x66623be, 0x1be51518, 0x66b9f01, 0x1bf063e6,
+    0x6711c7b, 0x1bfbb1a0, 0x6769c2e, 0x1c06fe46,
+    0x67c1e18, 0x1c1249d8, 0x681a23a, 0x1c1d9454,
+    0x6872894, 0x1c28ddbb, 0x68cb124, 0x1c34260c,
+    0x6923bec, 0x1c3f6d47, 0x697c8eb, 0x1c4ab36b,
+    0x69d5820, 0x1c55f878, 0x6a2e98b, 0x1c613c6d,
+    0x6a87d2d, 0x1c6c7f4a, 0x6ae1304, 0x1c77c10e,
+    0x6b3ab12, 0x1c8301b9, 0x6b94554, 0x1c8e414b,
+    0x6bee1cd, 0x1c997fc4, 0x6c4807a, 0x1ca4bd21,
+    0x6ca215c, 0x1caff965, 0x6cfc472, 0x1cbb348d,
+    0x6d569be, 0x1cc66e99, 0x6db113d, 0x1cd1a78a,
+    0x6e0baf0, 0x1cdcdf5e, 0x6e666d7, 0x1ce81615,
+    0x6ec14f2, 0x1cf34baf, 0x6f1c540, 0x1cfe802b,
+    0x6f777c1, 0x1d09b389, 0x6fd2c75, 0x1d14e5c9,
+    0x702e35c, 0x1d2016e9, 0x7089c75, 0x1d2b46ea,
+    0x70e57c0, 0x1d3675cb, 0x714153e, 0x1d41a38c,
+    0x719d4ed, 0x1d4cd02c, 0x71f96ce, 0x1d57fbaa,
+    0x7255ae0, 0x1d632608, 0x72b2123, 0x1d6e4f43,
+    0x730e997, 0x1d79775c, 0x736b43c, 0x1d849e51,
+    0x73c8111, 0x1d8fc424, 0x7425016, 0x1d9ae8d2,
+    0x748214c, 0x1da60c5d, 0x74df4b1, 0x1db12ec3,
+    0x753ca46, 0x1dbc5004, 0x759a20a, 0x1dc7701f,
+    0x75f7bfe, 0x1dd28f15, 0x7655820, 0x1dddace4,
+    0x76b3671, 0x1de8c98c, 0x77116f0, 0x1df3e50d,
+    0x776f99d, 0x1dfeff67, 0x77cde79, 0x1e0a1898,
+    0x782c582, 0x1e1530a1, 0x788aeb9, 0x1e204781,
+    0x78e9a1d, 0x1e2b5d38, 0x79487ae, 0x1e3671c5,
+    0x79a776c, 0x1e418528, 0x7a06957, 0x1e4c9760,
+    0x7a65d6e, 0x1e57a86d, 0x7ac53b1, 0x1e62b84f,
+    0x7b24c20, 0x1e6dc705, 0x7b846ba, 0x1e78d48e,
+    0x7be4381, 0x1e83e0eb, 0x7c44272, 0x1e8eec1b,
+    0x7ca438f, 0x1e99f61d, 0x7d046d6, 0x1ea4fef0,
+    0x7d64c47, 0x1eb00696, 0x7dc53e3, 0x1ebb0d0d,
+    0x7e25daa, 0x1ec61254, 0x7e8699a, 0x1ed1166b,
+    0x7ee77b3, 0x1edc1953, 0x7f487f6, 0x1ee71b0a,
+    0x7fa9a62, 0x1ef21b90, 0x800aef7, 0x1efd1ae4,
+    0x806c5b5, 0x1f081907, 0x80cde9b, 0x1f1315f7,
+    0x812f9a9, 0x1f1e11b5, 0x81916df, 0x1f290c3f,
+    0x81f363d, 0x1f340596, 0x82557c3, 0x1f3efdb9,
+    0x82b7b70, 0x1f49f4a8, 0x831a143, 0x1f54ea62,
+    0x837c93e, 0x1f5fdee6, 0x83df35f, 0x1f6ad235,
+    0x8441fa6, 0x1f75c44e, 0x84a4e14, 0x1f80b531,
+    0x8507ea7, 0x1f8ba4dc, 0x856b160, 0x1f969350,
+    0x85ce63e, 0x1fa1808c, 0x8631d42, 0x1fac6c91,
+    0x869566a, 0x1fb7575c, 0x86f91b7, 0x1fc240ef,
+    0x875cf28, 0x1fcd2948, 0x87c0ebd, 0x1fd81067,
+    0x8825077, 0x1fe2f64c, 0x8889454, 0x1feddaf6,
+    0x88eda54, 0x1ff8be65, 0x8952278, 0x2003a099,
+    0x89b6cbf, 0x200e8190, 0x8a1b928, 0x2019614c,
+    0x8a807b4, 0x20243fca, 0x8ae5862, 0x202f1d0b,
+    0x8b4ab32, 0x2039f90f, 0x8bb0023, 0x2044d3d4,
+    0x8c15736, 0x204fad5b, 0x8c7b06b, 0x205a85a3,
+    0x8ce0bc0, 0x20655cac, 0x8d46936, 0x20703275,
+    0x8dac8cd, 0x207b06fe, 0x8e12a84, 0x2085da46,
+    0x8e78e5b, 0x2090ac4d, 0x8edf452, 0x209b7d13,
+    0x8f45c68, 0x20a64c97, 0x8fac69e, 0x20b11ad9,
+    0x90132f2, 0x20bbe7d8, 0x907a166, 0x20c6b395,
+    0x90e11f7, 0x20d17e0d, 0x91484a8, 0x20dc4742,
+    0x91af976, 0x20e70f32, 0x9217062, 0x20f1d5de,
+    0x927e96b, 0x20fc9b44, 0x92e6492, 0x21075f65,
+    0x934e1d6, 0x21122240, 0x93b6137, 0x211ce3d5,
+    0x941e2b4, 0x2127a423, 0x948664d, 0x21326329,
+    0x94eec03, 0x213d20e8, 0x95573d4, 0x2147dd5f,
+    0x95bfdc1, 0x2152988d, 0x96289c9, 0x215d5273,
+    0x96917ec, 0x21680b0f, 0x96fa82a, 0x2172c262,
+    0x9763a83, 0x217d786a, 0x97ccef5, 0x21882d28,
+    0x9836582, 0x2192e09b, 0x989fe29, 0x219d92c2,
+    0x99098e9, 0x21a8439e, 0x99735c2, 0x21b2f32e,
+    0x99dd4b4, 0x21bda171, 0x9a475bf, 0x21c84e67,
+    0x9ab18e3, 0x21d2fa0f, 0x9b1be1e, 0x21dda46a,
+    0x9b86572, 0x21e84d76, 0x9bf0edd, 0x21f2f534,
+    0x9c5ba60, 0x21fd9ba3, 0x9cc67fa, 0x220840c2,
+    0x9d317ab, 0x2212e492, 0x9d9c973, 0x221d8711,
+    0x9e07d51, 0x2228283f, 0x9e73346, 0x2232c81c,
+    0x9edeb50, 0x223d66a8, 0x9f4a570, 0x224803e2,
+    0x9fb61a5, 0x22529fca, 0xa021fef, 0x225d3a5e,
+    0xa08e04f, 0x2267d3a0, 0xa0fa2c3, 0x22726b8e,
+    0xa16674b, 0x227d0228, 0xa1d2de7, 0x2287976e,
+    0xa23f698, 0x22922b5e, 0xa2ac15b, 0x229cbdfa,
+    0xa318e32, 0x22a74f40, 0xa385d1d, 0x22b1df30,
+    0xa3f2e19, 0x22bc6dca, 0xa460129, 0x22c6fb0c,
+    0xa4cd64b, 0x22d186f8, 0xa53ad7e, 0x22dc118c,
+    0xa5a86c4, 0x22e69ac8, 0xa61621b, 0x22f122ab,
+    0xa683f83, 0x22fba936, 0xa6f1efc, 0x23062e67,
+    0xa760086, 0x2310b23e, 0xa7ce420, 0x231b34bc,
+    0xa83c9ca, 0x2325b5df, 0xa8ab184, 0x233035a7,
+    0xa919b4e, 0x233ab414, 0xa988727, 0x23453125,
+    0xa9f750f, 0x234facda, 0xaa66506, 0x235a2733,
+    0xaad570c, 0x2364a02e, 0xab44b1f, 0x236f17cc,
+    0xabb4141, 0x23798e0d, 0xac23971, 0x238402ef,
+    0xac933ae, 0x238e7673, 0xad02ff8, 0x2398e898,
+    0xad72e4f, 0x23a3595e, 0xade2eb3, 0x23adc8c4,
+    0xae53123, 0x23b836ca, 0xaec35a0, 0x23c2a36f,
+    0xaf33c28, 0x23cd0eb3, 0xafa44bc, 0x23d77896,
+    0xb014f5b, 0x23e1e117, 0xb085c05, 0x23ec4837,
+    0xb0f6aba, 0x23f6adf3, 0xb167b79, 0x2401124d,
+    0xb1d8e43, 0x240b7543, 0xb24a316, 0x2415d6d5,
+    0xb2bb9f4, 0x24203704, 0xb32d2da, 0x242a95ce,
+    0xb39edca, 0x2434f332, 0xb410ac3, 0x243f4f32,
+    0xb4829c4, 0x2449a9cc, 0xb4f4acd, 0x245402ff,
+    0xb566ddf, 0x245e5acc, 0xb5d92f8, 0x2468b132,
+    0xb64ba19, 0x24730631, 0xb6be341, 0x247d59c8,
+    0xb730e70, 0x2487abf7, 0xb7a3ba5, 0x2491fcbe,
+    0xb816ae1, 0x249c4c1b, 0xb889c23, 0x24a69a0f,
+    0xb8fcf6b, 0x24b0e699, 0xb9704b9, 0x24bb31ba,
+    0xb9e3c0b, 0x24c57b6f, 0xba57563, 0x24cfc3ba,
+    0xbacb0bf, 0x24da0a9a, 0xbb3ee20, 0x24e4500e,
+    0xbbb2d85, 0x24ee9415, 0xbc26eee, 0x24f8d6b0,
+    0xbc9b25a, 0x250317df, 0xbd0f7ca, 0x250d57a0,
+    0xbd83f3d, 0x251795f3, 0xbdf88b3, 0x2521d2d8,
+    0xbe6d42b, 0x252c0e4f, 0xbee21a5, 0x25364857,
+    0xbf57121, 0x254080ef, 0xbfcc29f, 0x254ab818,
+    0xc04161e, 0x2554edd1, 0xc0b6b9e, 0x255f2219,
+    0xc12c31f, 0x256954f1, 0xc1a1ca0, 0x25738657,
+    0xc217822, 0x257db64c, 0xc28d5a3, 0x2587e4cf,
+    0xc303524, 0x259211df, 0xc3796a5, 0x259c3d7c,
+    0xc3efa25, 0x25a667a7, 0xc465fa3, 0x25b0905d,
+    0xc4dc720, 0x25bab7a0, 0xc55309b, 0x25c4dd6e,
+    0xc5c9c14, 0x25cf01c8, 0xc64098b, 0x25d924ac,
+    0xc6b78ff, 0x25e3461b, 0xc72ea70, 0x25ed6614,
+    0xc7a5dde, 0x25f78497, 0xc81d349, 0x2601a1a2,
+    0xc894aaf, 0x260bbd37, 0xc90c412, 0x2615d754,
+    0xc983f70, 0x261feffa, 0xc9fbcca, 0x262a0727,
+    0xca73c1e, 0x26341cdb, 0xcaebd6e, 0x263e3117,
+    0xcb640b8, 0x264843d9, 0xcbdc5fc, 0x26525521,
+    0xcc54d3a, 0x265c64ef, 0xcccd671, 0x26667342,
+    0xcd461a2, 0x2670801a, 0xcdbeecc, 0x267a8b77,
+    0xce37def, 0x26849558, 0xceb0f0a, 0x268e9dbd,
+    0xcf2a21d, 0x2698a4a6, 0xcfa3729, 0x26a2aa11,
+    0xd01ce2b, 0x26acadff, 0xd096725, 0x26b6b070,
+    0xd110216, 0x26c0b162, 0xd189efe, 0x26cab0d6,
+    0xd203ddc, 0x26d4aecb, 0xd27deb0, 0x26deab41,
+    0xd2f817b, 0x26e8a637, 0xd37263a, 0x26f29fad,
+    0xd3eccef, 0x26fc97a3, 0xd467599, 0x27068e18,
+    0xd4e2037, 0x2710830c, 0xd55ccca, 0x271a767e,
+    0xd5d7b50, 0x2724686e, 0xd652bcb, 0x272e58dc,
+    0xd6cde39, 0x273847c8, 0xd74929a, 0x27423530,
+    0xd7c48ee, 0x274c2115, 0xd840134, 0x27560b76,
+    0xd8bbb6d, 0x275ff452, 0xd937798, 0x2769dbaa,
+    0xd9b35b4, 0x2773c17d, 0xda2f5c2, 0x277da5cb,
+    0xdaab7c0, 0x27878893, 0xdb27bb0, 0x279169d5,
+    0xdba4190, 0x279b4990, 0xdc20960, 0x27a527c4,
+    0xdc9d320, 0x27af0472, 0xdd19ed0, 0x27b8df97,
+    0xdd96c6f, 0x27c2b934, 0xde13bfd, 0x27cc9149,
+    0xde90d79, 0x27d667d5, 0xdf0e0e4, 0x27e03cd8,
+    0xdf8b63d, 0x27ea1052, 0xe008d84, 0x27f3e241,
+    0xe0866b8, 0x27fdb2a7, 0xe1041d9, 0x28078181,
+    0xe181ee8, 0x28114ed0, 0xe1ffde2, 0x281b1a94,
+    0xe27dec9, 0x2824e4cc, 0xe2fc19c, 0x282ead78,
+    0xe37a65b, 0x28387498, 0xe3f8d05, 0x28423a2a,
+    0xe47759a, 0x284bfe2f, 0xe4f6019, 0x2855c0a6,
+    0xe574c84, 0x285f8190, 0xe5f3ad8, 0x286940ea,
+    0xe672b16, 0x2872feb6, 0xe6f1d3d, 0x287cbaf3,
+    0xe77114e, 0x288675a0, 0xe7f0748, 0x28902ebd,
+    0xe86ff2a, 0x2899e64a, 0xe8ef8f4, 0x28a39c46,
+    0xe96f4a7, 0x28ad50b1, 0xe9ef241, 0x28b7038b,
+    0xea6f1c2, 0x28c0b4d2, 0xeaef32b, 0x28ca6488,
+    0xeb6f67a, 0x28d412ab, 0xebefbb0, 0x28ddbf3b,
+    0xec702cb, 0x28e76a37, 0xecf0bcd, 0x28f113a0,
+    0xed716b4, 0x28fabb75, 0xedf2380, 0x290461b5,
+    0xee73231, 0x290e0661, 0xeef42c7, 0x2917a977,
+    0xef75541, 0x29214af8, 0xeff699f, 0x292aeae3,
+    0xf077fe1, 0x29348937, 0xf0f9805, 0x293e25f5,
+    0xf17b20d, 0x2947c11c, 0xf1fcdf8, 0x29515aab,
+    0xf27ebc5, 0x295af2a3, 0xf300b74, 0x29648902,
+    0xf382d05, 0x296e1dc9, 0xf405077, 0x2977b0f7,
+    0xf4875ca, 0x2981428c, 0xf509cfe, 0x298ad287,
+    0xf58c613, 0x299460e8, 0xf60f108, 0x299dedaf,
+    0xf691ddd, 0x29a778db, 0xf714c91, 0x29b1026c,
+    0xf797d24, 0x29ba8a61, 0xf81af97, 0x29c410ba,
+    0xf89e3e8, 0x29cd9578, 0xf921a17, 0x29d71899,
+    0xf9a5225, 0x29e09a1c, 0xfa28c10, 0x29ea1a03,
+    0xfaac7d8, 0x29f3984c, 0xfb3057d, 0x29fd14f6,
+    0xfbb4500, 0x2a069003, 0xfc3865e, 0x2a100970,
+    0xfcbc999, 0x2a19813f, 0xfd40eaf, 0x2a22f76e,
+    0xfdc55a1, 0x2a2c6bfd, 0xfe49e6d, 0x2a35deeb,
+    0xfece915, 0x2a3f503a, 0xff53597, 0x2a48bfe7,
+    0xffd83f4, 0x2a522df3, 0x1005d42a, 0x2a5b9a5d,
+    0x100e2639, 0x2a650525, 0x10167a22, 0x2a6e6e4b,
+    0x101ecfe4, 0x2a77d5ce, 0x1027277e, 0x2a813bae,
+    0x102f80f1, 0x2a8a9fea, 0x1037dc3b, 0x2a940283,
+    0x1040395d, 0x2a9d6377, 0x10489856, 0x2aa6c2c6,
+    0x1050f926, 0x2ab02071, 0x10595bcd, 0x2ab97c77,
+    0x1061c04a, 0x2ac2d6d6, 0x106a269d, 0x2acc2f90,
+    0x10728ec6, 0x2ad586a3, 0x107af8c4, 0x2adedc10,
+    0x10836497, 0x2ae82fd5, 0x108bd23f, 0x2af181f3,
+    0x109441bb, 0x2afad269, 0x109cb30b, 0x2b042137,
+    0x10a5262f, 0x2b0d6e5c, 0x10ad9b26, 0x2b16b9d9,
+    0x10b611f1, 0x2b2003ac, 0x10be8a8d, 0x2b294bd5,
+    0x10c704fd, 0x2b329255, 0x10cf813e, 0x2b3bd72a,
+    0x10d7ff51, 0x2b451a55, 0x10e07f36, 0x2b4e5bd4,
+    0x10e900ec, 0x2b579ba8, 0x10f18472, 0x2b60d9d0,
+    0x10fa09c9, 0x2b6a164d, 0x110290f0, 0x2b73511c,
+    0x110b19e7, 0x2b7c8a3f, 0x1113a4ad, 0x2b85c1b5,
+    0x111c3142, 0x2b8ef77d, 0x1124bfa6, 0x2b982b97,
+    0x112d4fd9, 0x2ba15e03, 0x1135e1d9, 0x2baa8ec0,
+    0x113e75a8, 0x2bb3bdce, 0x11470b44, 0x2bbceb2d,
+    0x114fa2ad, 0x2bc616dd, 0x11583be2, 0x2bcf40dc,
+    0x1160d6e5, 0x2bd8692b, 0x116973b3, 0x2be18fc9,
+    0x1172124d, 0x2beab4b6, 0x117ab2b3, 0x2bf3d7f2,
+    0x118354e4, 0x2bfcf97c, 0x118bf8e0, 0x2c061953,
+    0x11949ea6, 0x2c0f3779, 0x119d4636, 0x2c1853eb,
+    0x11a5ef90, 0x2c216eaa, 0x11ae9ab4, 0x2c2a87b6,
+    0x11b747a0, 0x2c339f0e, 0x11bff656, 0x2c3cb4b1,
+    0x11c8a6d4, 0x2c45c8a0, 0x11d1591a, 0x2c4edada,
+    0x11da0d28, 0x2c57eb5e, 0x11e2c2fd, 0x2c60fa2d,
+    0x11eb7a9a, 0x2c6a0746, 0x11f433fd, 0x2c7312a9,
+    0x11fcef27, 0x2c7c1c55, 0x1205ac17, 0x2c85244a,
+    0x120e6acc, 0x2c8e2a87, 0x12172b48, 0x2c972f0d,
+    0x121fed88, 0x2ca031da, 0x1228b18d, 0x2ca932ef,
+    0x12317756, 0x2cb2324c, 0x123a3ee4, 0x2cbb2fef,
+    0x12430835, 0x2cc42bd9, 0x124bd34a, 0x2ccd2609,
+    0x1254a021, 0x2cd61e7f, 0x125d6ebc, 0x2cdf153a,
+    0x12663f19, 0x2ce80a3a, 0x126f1138, 0x2cf0fd80,
+    0x1277e518, 0x2cf9ef09, 0x1280babb, 0x2d02ded7,
+    0x1289921e, 0x2d0bcce8, 0x12926b41, 0x2d14b93d,
+    0x129b4626, 0x2d1da3d5, 0x12a422ca, 0x2d268cb0,
+    0x12ad012e, 0x2d2f73cd, 0x12b5e151, 0x2d38592c,
+    0x12bec333, 0x2d413ccd, 0x12c7a6d4, 0x2d4a1eaf,
+    0x12d08c33, 0x2d52fed2, 0x12d97350, 0x2d5bdd36,
+    0x12e25c2b, 0x2d64b9da, 0x12eb46c3, 0x2d6d94bf,
+    0x12f43318, 0x2d766de2, 0x12fd2129, 0x2d7f4545,
+    0x130610f7, 0x2d881ae8, 0x130f0280, 0x2d90eec8,
+    0x1317f5c6, 0x2d99c0e7, 0x1320eac6, 0x2da29144,
+    0x1329e181, 0x2dab5fdf, 0x1332d9f7, 0x2db42cb6,
+    0x133bd427, 0x2dbcf7cb, 0x1344d011, 0x2dc5c11c,
+    0x134dcdb4, 0x2dce88aa, 0x1356cd11, 0x2dd74e73,
+    0x135fce26, 0x2de01278, 0x1368d0f3, 0x2de8d4b8,
+    0x1371d579, 0x2df19534, 0x137adbb6, 0x2dfa53e9,
+    0x1383e3ab, 0x2e0310d9, 0x138ced57, 0x2e0bcc03,
+    0x1395f8ba, 0x2e148566, 0x139f05d3, 0x2e1d3d03,
+    0x13a814a2, 0x2e25f2d8, 0x13b12526, 0x2e2ea6e6,
+    0x13ba3760, 0x2e37592c, 0x13c34b4f, 0x2e4009aa,
+    0x13cc60f2, 0x2e48b860, 0x13d5784a, 0x2e51654c,
+    0x13de9156, 0x2e5a1070, 0x13e7ac15, 0x2e62b9ca,
+    0x13f0c887, 0x2e6b615a, 0x13f9e6ad, 0x2e740720,
+    0x14030684, 0x2e7cab1c, 0x140c280e, 0x2e854d4d,
+    0x14154b4a, 0x2e8dedb3, 0x141e7037, 0x2e968c4d,
+    0x142796d5, 0x2e9f291b, 0x1430bf24, 0x2ea7c41e,
+    0x1439e923, 0x2eb05d53, 0x144314d3, 0x2eb8f4bc,
+    0x144c4232, 0x2ec18a58, 0x14557140, 0x2eca1e27,
+    0x145ea1fd, 0x2ed2b027, 0x1467d469, 0x2edb405a,
+    0x14710883, 0x2ee3cebe, 0x147a3e4b, 0x2eec5b53,
+    0x148375c1, 0x2ef4e619, 0x148caee4, 0x2efd6f10,
+    0x1495e9b3, 0x2f05f637, 0x149f2630, 0x2f0e7b8e,
+    0x14a86458, 0x2f16ff14, 0x14b1a42c, 0x2f1f80ca,
+    0x14bae5ab, 0x2f2800af, 0x14c428d6, 0x2f307ec2,
+    0x14cd6dab, 0x2f38fb03, 0x14d6b42b, 0x2f417573,
+    0x14dffc54, 0x2f49ee0f, 0x14e94627, 0x2f5264da,
+    0x14f291a4, 0x2f5ad9d1, 0x14fbdec9, 0x2f634cf5,
+    0x15052d97, 0x2f6bbe45, 0x150e7e0d, 0x2f742dc1,
+    0x1517d02b, 0x2f7c9b69, 0x152123f0, 0x2f85073c,
+    0x152a795d, 0x2f8d713a, 0x1533d070, 0x2f95d963,
+    0x153d292a, 0x2f9e3fb6, 0x15468389, 0x2fa6a433,
+    0x154fdf8f, 0x2faf06da, 0x15593d3a, 0x2fb767aa,
+    0x15629c89, 0x2fbfc6a3, 0x156bfd7d, 0x2fc823c5,
+    0x15756016, 0x2fd07f0f, 0x157ec452, 0x2fd8d882,
+    0x15882a32, 0x2fe1301c, 0x159191b5, 0x2fe985de,
+    0x159afadb, 0x2ff1d9c7, 0x15a465a3, 0x2ffa2bd6,
+    0x15add20d, 0x30027c0c, 0x15b74019, 0x300aca69,
+    0x15c0afc6, 0x301316eb, 0x15ca2115, 0x301b6193,
+    0x15d39403, 0x3023aa5f, 0x15dd0892, 0x302bf151,
+    0x15e67ec1, 0x30343667, 0x15eff690, 0x303c79a2,
+    0x15f96ffd, 0x3044bb00, 0x1602eb0a, 0x304cfa83,
+    0x160c67b4, 0x30553828, 0x1615e5fd, 0x305d73f0,
+    0x161f65e4, 0x3065addb, 0x1628e767, 0x306de5e9,
+    0x16326a88, 0x30761c18, 0x163bef46, 0x307e5069,
+    0x1645759f, 0x308682dc, 0x164efd94, 0x308eb36f,
+    0x16588725, 0x3096e223, 0x16621251, 0x309f0ef8,
+    0x166b9f18, 0x30a739ed, 0x16752d79, 0x30af6302,
+    0x167ebd74, 0x30b78a36, 0x16884f09, 0x30bfaf89,
+    0x1691e237, 0x30c7d2fb, 0x169b76fe, 0x30cff48c,
+    0x16a50d5d, 0x30d8143b, 0x16aea555, 0x30e03208,
+    0x16b83ee4, 0x30e84df3, 0x16c1da0b, 0x30f067fb,
+    0x16cb76c9, 0x30f8801f, 0x16d5151d, 0x31009661,
+    0x16deb508, 0x3108aabf, 0x16e85689, 0x3110bd39,
+    0x16f1f99f, 0x3118cdcf, 0x16fb9e4b, 0x3120dc80,
+    0x1705448b, 0x3128e94c, 0x170eec60, 0x3130f433,
+    0x171895c9, 0x3138fd35, 0x172240c5, 0x31410450,
+    0x172bed55, 0x31490986, 0x17359b78, 0x31510cd5,
+    0x173f4b2e, 0x31590e3e, 0x1748fc75, 0x31610dbf,
+    0x1752af4f, 0x31690b59, 0x175c63ba, 0x3171070c,
+    0x176619b6, 0x317900d6, 0x176fd143, 0x3180f8b8,
+    0x17798a60, 0x3188eeb2, 0x1783450d, 0x3190e2c3,
+    0x178d014a, 0x3198d4ea, 0x1796bf16, 0x31a0c528,
+    0x17a07e70, 0x31a8b37c, 0x17aa3f5a, 0x31b09fe7,
+    0x17b401d1, 0x31b88a66, 0x17bdc5d6, 0x31c072fb,
+    0x17c78b68, 0x31c859a5, 0x17d15288, 0x31d03e64,
+    0x17db1b34, 0x31d82137, 0x17e4e56c, 0x31e0021e,
+    0x17eeb130, 0x31e7e118, 0x17f87e7f, 0x31efbe27,
+    0x18024d59, 0x31f79948, 0x180c1dbf, 0x31ff727c,
+    0x1815efae, 0x320749c3, 0x181fc328, 0x320f1f1c,
+    0x1829982b, 0x3216f287, 0x18336eb7, 0x321ec403,
+    0x183d46cc, 0x32269391, 0x18472069, 0x322e6130,
+    0x1850fb8e, 0x32362ce0, 0x185ad83c, 0x323df6a0,
+    0x1864b670, 0x3245be70, 0x186e962b, 0x324d8450,
+    0x1878776d, 0x32554840, 0x18825a35, 0x325d0a3e,
+    0x188c3e83, 0x3264ca4c, 0x18962456, 0x326c8868,
+    0x18a00bae, 0x32744493, 0x18a9f48a, 0x327bfecc,
+    0x18b3deeb, 0x3283b712, 0x18bdcad0, 0x328b6d66,
+    0x18c7b838, 0x329321c7, 0x18d1a724, 0x329ad435,
+    0x18db9792, 0x32a284b0, 0x18e58982, 0x32aa3336,
+    0x18ef7cf4, 0x32b1dfc9, 0x18f971e8, 0x32b98a67,
+    0x1903685d, 0x32c13311, 0x190d6053, 0x32c8d9c6,
+    0x191759c9, 0x32d07e85, 0x192154bf, 0x32d82150,
+    0x192b5135, 0x32dfc224, 0x19354f2a, 0x32e76102,
+    0x193f4e9e, 0x32eefdea, 0x19494f90, 0x32f698db,
+    0x19535201, 0x32fe31d5, 0x195d55ef, 0x3305c8d7,
+    0x19675b5a, 0x330d5de3, 0x19716243, 0x3314f0f6,
+    0x197b6aa8, 0x331c8211, 0x19857489, 0x33241134,
+    0x198f7fe6, 0x332b9e5e, 0x19998cbe, 0x3333298f,
+    0x19a39b11, 0x333ab2c6, 0x19adaadf, 0x33423a04,
+    0x19b7bc27, 0x3349bf48, 0x19c1cee9, 0x33514292,
+    0x19cbe325, 0x3358c3e2, 0x19d5f8d9, 0x33604336,
+    0x19e01006, 0x3367c090, 0x19ea28ac, 0x336f3bee,
+    0x19f442c9, 0x3376b551, 0x19fe5e5e, 0x337e2cb7,
+    0x1a087b69, 0x3385a222, 0x1a1299ec, 0x338d1590,
+    0x1a1cb9e5, 0x33948701, 0x1a26db54, 0x339bf675,
+    0x1a30fe38, 0x33a363ec, 0x1a3b2292, 0x33aacf65,
+    0x1a454860, 0x33b238e0, 0x1a4f6fa3, 0x33b9a05d,
+    0x1a599859, 0x33c105db, 0x1a63c284, 0x33c8695b,
+    0x1a6dee21, 0x33cfcadc, 0x1a781b31, 0x33d72a5d,
+    0x1a8249b4, 0x33de87de, 0x1a8c79a9, 0x33e5e360,
+    0x1a96ab0f, 0x33ed3ce1, 0x1aa0dde7, 0x33f49462,
+    0x1aab122f, 0x33fbe9e2, 0x1ab547e8, 0x34033d61,
+    0x1abf7f11, 0x340a8edf, 0x1ac9b7a9, 0x3411de5b,
+    0x1ad3f1b1, 0x34192bd5, 0x1ade2d28, 0x3420774d,
+    0x1ae86a0d, 0x3427c0c3, 0x1af2a860, 0x342f0836,
+    0x1afce821, 0x34364da6, 0x1b072950, 0x343d9112,
+    0x1b116beb, 0x3444d27b, 0x1b1baff2, 0x344c11e0,
+    0x1b25f566, 0x34534f41, 0x1b303c46, 0x345a8a9d,
+    0x1b3a8491, 0x3461c3f5, 0x1b44ce46, 0x3468fb47,
+    0x1b4f1967, 0x34703095, 0x1b5965f1, 0x347763dd,
+    0x1b63b3e5, 0x347e951f, 0x1b6e0342, 0x3485c45b,
+    0x1b785409, 0x348cf190, 0x1b82a638, 0x34941cbf,
+    0x1b8cf9cf, 0x349b45e7, 0x1b974ece, 0x34a26d08,
+    0x1ba1a534, 0x34a99221, 0x1babfd01, 0x34b0b533,
+    0x1bb65634, 0x34b7d63c, 0x1bc0b0ce, 0x34bef53d,
+    0x1bcb0cce, 0x34c61236, 0x1bd56a32, 0x34cd2d26,
+    0x1bdfc8fc, 0x34d4460c, 0x1bea292b, 0x34db5cea,
+    0x1bf48abd, 0x34e271bd, 0x1bfeedb3, 0x34e98487,
+    0x1c09520d, 0x34f09546, 0x1c13b7c9, 0x34f7a3fb,
+    0x1c1e1ee9, 0x34feb0a5, 0x1c28876a, 0x3505bb44,
+    0x1c32f14d, 0x350cc3d8, 0x1c3d5c91, 0x3513ca60,
+    0x1c47c936, 0x351acedd, 0x1c52373c, 0x3521d14d,
+    0x1c5ca6a2, 0x3528d1b1, 0x1c671768, 0x352fd008,
+    0x1c71898d, 0x3536cc52, 0x1c7bfd11, 0x353dc68f,
+    0x1c8671f3, 0x3544bebf, 0x1c90e834, 0x354bb4e1,
+    0x1c9b5fd2, 0x3552a8f4, 0x1ca5d8cd, 0x35599afa,
+    0x1cb05326, 0x35608af1, 0x1cbacedb, 0x356778d9,
+    0x1cc54bec, 0x356e64b2, 0x1ccfca59, 0x35754e7c,
+    0x1cda4a21, 0x357c3636, 0x1ce4cb44, 0x35831be0,
+    0x1cef4dc2, 0x3589ff7a, 0x1cf9d199, 0x3590e104,
+    0x1d0456ca, 0x3597c07d, 0x1d0edd55, 0x359e9de5,
+    0x1d196538, 0x35a5793c, 0x1d23ee74, 0x35ac5282,
+    0x1d2e7908, 0x35b329b5, 0x1d3904f4, 0x35b9fed7,
+    0x1d439236, 0x35c0d1e7, 0x1d4e20d0, 0x35c7a2e3,
+    0x1d58b0c0, 0x35ce71ce, 0x1d634206, 0x35d53ea5,
+    0x1d6dd4a2, 0x35dc0968, 0x1d786892, 0x35e2d219,
+    0x1d82fdd8, 0x35e998b5, 0x1d8d9472, 0x35f05d3d,
+    0x1d982c60, 0x35f71fb1, 0x1da2c5a2, 0x35fde011,
+    0x1dad6036, 0x36049e5b, 0x1db7fc1e, 0x360b5a90,
+    0x1dc29958, 0x361214b0, 0x1dcd37e4, 0x3618ccba,
+    0x1dd7d7c1, 0x361f82af, 0x1de278ef, 0x3626368d,
+    0x1ded1b6e, 0x362ce855, 0x1df7bf3e, 0x36339806,
+    0x1e02645d, 0x363a45a0, 0x1e0d0acc, 0x3640f123,
+    0x1e17b28a, 0x36479a8e, 0x1e225b96, 0x364e41e2,
+    0x1e2d05f1, 0x3654e71d, 0x1e37b199, 0x365b8a41,
+    0x1e425e8f, 0x36622b4c, 0x1e4d0cd2, 0x3668ca3e,
+    0x1e57bc62, 0x366f6717, 0x1e626d3e, 0x367601d7,
+    0x1e6d1f65, 0x367c9a7e, 0x1e77d2d8, 0x3683310b,
+    0x1e828796, 0x3689c57d, 0x1e8d3d9e, 0x369057d6,
+    0x1e97f4f1, 0x3696e814, 0x1ea2ad8d, 0x369d7637,
+    0x1ead6773, 0x36a4023f, 0x1eb822a1, 0x36aa8c2c,
+    0x1ec2df18, 0x36b113fd, 0x1ecd9cd7, 0x36b799b3,
+    0x1ed85bdd, 0x36be1d4c, 0x1ee31c2b, 0x36c49ec9,
+    0x1eedddc0, 0x36cb1e2a, 0x1ef8a09b, 0x36d19b6e,
+    0x1f0364bc, 0x36d81695, 0x1f0e2a22, 0x36de8f9e,
+    0x1f18f0ce, 0x36e5068a, 0x1f23b8be, 0x36eb7b58,
+    0x1f2e81f3, 0x36f1ee09, 0x1f394c6b, 0x36f85e9a,
+    0x1f441828, 0x36fecd0e, 0x1f4ee527, 0x37053962,
+    0x1f59b369, 0x370ba398, 0x1f6482ed, 0x37120bae,
+    0x1f6f53b3, 0x371871a5, 0x1f7a25ba, 0x371ed57c,
+    0x1f84f902, 0x37253733, 0x1f8fcd8b, 0x372b96ca,
+    0x1f9aa354, 0x3731f440, 0x1fa57a5d, 0x37384f95,
+    0x1fb052a5, 0x373ea8ca, 0x1fbb2c2c, 0x3744ffdd,
+    0x1fc606f1, 0x374b54ce, 0x1fd0e2f5, 0x3751a79e,
+    0x1fdbc036, 0x3757f84c, 0x1fe69eb4, 0x375e46d8,
+    0x1ff17e70, 0x37649341, 0x1ffc5f67, 0x376add88,
+    0x2007419b, 0x377125ac, 0x2012250a, 0x37776bac,
+    0x201d09b4, 0x377daf89, 0x2027ef99, 0x3783f143,
+    0x2032d6b8, 0x378a30d8, 0x203dbf11, 0x37906e49,
+    0x2048a8a4, 0x3796a996, 0x2053936f, 0x379ce2be,
+    0x205e7f74, 0x37a319c2, 0x20696cb0, 0x37a94ea0,
+    0x20745b24, 0x37af8159, 0x207f4acf, 0x37b5b1ec,
+    0x208a3bb2, 0x37bbe05a, 0x20952dcb, 0x37c20ca1,
+    0x20a0211a, 0x37c836c2, 0x20ab159e, 0x37ce5ebd,
+    0x20b60b58, 0x37d48490, 0x20c10247, 0x37daa83d,
+    0x20cbfa6a, 0x37e0c9c3, 0x20d6f3c1, 0x37e6e921,
+    0x20e1ee4b, 0x37ed0657, 0x20ecea09, 0x37f32165,
+    0x20f7e6f9, 0x37f93a4b, 0x2102e51c, 0x37ff5109,
+    0x210de470, 0x3805659e, 0x2118e4f6, 0x380b780a,
+    0x2123e6ad, 0x3811884d, 0x212ee995, 0x38179666,
+    0x2139edac, 0x381da256, 0x2144f2f3, 0x3823ac1d,
+    0x214ff96a, 0x3829b3b9, 0x215b0110, 0x382fb92a,
+    0x216609e3, 0x3835bc71, 0x217113e5, 0x383bbd8e,
+    0x217c1f15, 0x3841bc7f, 0x21872b72, 0x3847b946,
+    0x219238fb, 0x384db3e0, 0x219d47b1, 0x3853ac4f,
+    0x21a85793, 0x3859a292, 0x21b368a0, 0x385f96a9,
+    0x21be7ad8, 0x38658894, 0x21c98e3b, 0x386b7852,
+    0x21d4a2c8, 0x387165e3, 0x21dfb87f, 0x38775147,
+    0x21eacf5f, 0x387d3a7e, 0x21f5e768, 0x38832187,
+    0x22010099, 0x38890663, 0x220c1af3, 0x388ee910,
+    0x22173674, 0x3894c98f, 0x2222531c, 0x389aa7e0,
+    0x222d70eb, 0x38a08402, 0x22388fe1, 0x38a65df6,
+    0x2243affc, 0x38ac35ba, 0x224ed13d, 0x38b20b4f,
+    0x2259f3a3, 0x38b7deb4, 0x2265172e, 0x38bdafea,
+    0x22703bdc, 0x38c37eef, 0x227b61af, 0x38c94bc4,
+    0x228688a4, 0x38cf1669, 0x2291b0bd, 0x38d4dedd,
+    0x229cd9f8, 0x38daa520, 0x22a80456, 0x38e06932,
+    0x22b32fd4, 0x38e62b13, 0x22be5c74, 0x38ebeac2,
+    0x22c98a35, 0x38f1a840, 0x22d4b916, 0x38f7638b,
+    0x22dfe917, 0x38fd1ca4, 0x22eb1a37, 0x3902d38b,
+    0x22f64c77, 0x3908883f, 0x23017fd5, 0x390e3ac0,
+    0x230cb451, 0x3913eb0e, 0x2317e9eb, 0x39199929,
+    0x232320a2, 0x391f4510, 0x232e5876, 0x3924eec3,
+    0x23399167, 0x392a9642, 0x2344cb73, 0x39303b8e,
+    0x2350069b, 0x3935dea4, 0x235b42df, 0x393b7f86,
+    0x2366803c, 0x39411e33, 0x2371beb5, 0x3946baac,
+    0x237cfe47, 0x394c54ee, 0x23883ef2, 0x3951ecfc,
+    0x239380b6, 0x395782d3, 0x239ec393, 0x395d1675,
+    0x23aa0788, 0x3962a7e0, 0x23b54c95, 0x39683715,
+    0x23c092b9, 0x396dc414, 0x23cbd9f4, 0x39734edc,
+    0x23d72245, 0x3978d76c, 0x23e26bac, 0x397e5dc6,
+    0x23edb628, 0x3983e1e8, 0x23f901ba, 0x398963d2,
+    0x24044e60, 0x398ee385, 0x240f9c1a, 0x399460ff,
+    0x241aeae8, 0x3999dc42, 0x24263ac9, 0x399f554b,
+    0x24318bbe, 0x39a4cc1c, 0x243cddc4, 0x39aa40b4,
+    0x244830dd, 0x39afb313, 0x24538507, 0x39b52339,
+    0x245eda43, 0x39ba9125, 0x246a308f, 0x39bffcd7,
+    0x247587eb, 0x39c5664f, 0x2480e057, 0x39cacd8d,
+    0x248c39d3, 0x39d03291, 0x2497945d, 0x39d5955a,
+    0x24a2eff6, 0x39daf5e8, 0x24ae4c9d, 0x39e0543c,
+    0x24b9aa52, 0x39e5b054, 0x24c50914, 0x39eb0a31,
+    0x24d068e2, 0x39f061d2, 0x24dbc9bd, 0x39f5b737,
+    0x24e72ba4, 0x39fb0a60, 0x24f28e96, 0x3a005b4d,
+    0x24fdf294, 0x3a05a9fd, 0x2509579b, 0x3a0af671,
+    0x2514bdad, 0x3a1040a8, 0x252024c9, 0x3a1588a2,
+    0x252b8cee, 0x3a1ace5f, 0x2536f61b, 0x3a2011de,
+    0x25426051, 0x3a25531f, 0x254dcb8f, 0x3a2a9223,
+    0x255937d5, 0x3a2fcee8, 0x2564a521, 0x3a350970,
+    0x25701374, 0x3a3a41b9, 0x257b82cd, 0x3a3f77c3,
+    0x2586f32c, 0x3a44ab8e, 0x25926490, 0x3a49dd1a,
+    0x259dd6f9, 0x3a4f0c67, 0x25a94a67, 0x3a543974,
+    0x25b4bed8, 0x3a596442, 0x25c0344d, 0x3a5e8cd0,
+    0x25cbaac5, 0x3a63b31d, 0x25d72240, 0x3a68d72b,
+    0x25e29abc, 0x3a6df8f8, 0x25ee143b, 0x3a731884,
+    0x25f98ebb, 0x3a7835cf, 0x26050a3b, 0x3a7d50da,
+    0x261086bc, 0x3a8269a3, 0x261c043d, 0x3a87802a,
+    0x262782be, 0x3a8c9470, 0x2633023e, 0x3a91a674,
+    0x263e82bc, 0x3a96b636, 0x264a0438, 0x3a9bc3b6,
+    0x265586b3, 0x3aa0cef3, 0x26610a2a, 0x3aa5d7ee,
+    0x266c8e9f, 0x3aaadea6, 0x26781410, 0x3aafe31b,
+    0x26839a7c, 0x3ab4e54c, 0x268f21e5, 0x3ab9e53a,
+    0x269aaa48, 0x3abee2e5, 0x26a633a6, 0x3ac3de4c,
+    0x26b1bdff, 0x3ac8d76f, 0x26bd4951, 0x3acdce4d,
+    0x26c8d59c, 0x3ad2c2e8, 0x26d462e1, 0x3ad7b53d,
+    0x26dff11d, 0x3adca54e, 0x26eb8052, 0x3ae1931a,
+    0x26f7107e, 0x3ae67ea1, 0x2702a1a1, 0x3aeb67e3,
+    0x270e33bb, 0x3af04edf, 0x2719c6cb, 0x3af53395,
+    0x27255ad1, 0x3afa1605, 0x2730efcc, 0x3afef630,
+    0x273c85bc, 0x3b03d414, 0x27481ca1, 0x3b08afb2,
+    0x2753b479, 0x3b0d8909, 0x275f4d45, 0x3b126019,
+    0x276ae704, 0x3b1734e2, 0x277681b6, 0x3b1c0764,
+    0x27821d59, 0x3b20d79e, 0x278db9ef, 0x3b25a591,
+    0x27995776, 0x3b2a713d, 0x27a4f5ed, 0x3b2f3aa0,
+    0x27b09555, 0x3b3401bb, 0x27bc35ad, 0x3b38c68e,
+    0x27c7d6f4, 0x3b3d8918, 0x27d3792b, 0x3b42495a,
+    0x27df1c50, 0x3b470753, 0x27eac063, 0x3b4bc303,
+    0x27f66564, 0x3b507c69, 0x28020b52, 0x3b553386,
+    0x280db22d, 0x3b59e85a, 0x281959f4, 0x3b5e9ae4,
+    0x282502a7, 0x3b634b23, 0x2830ac45, 0x3b67f919,
+    0x283c56cf, 0x3b6ca4c4, 0x28480243, 0x3b714e25,
+    0x2853aea1, 0x3b75f53c, 0x285f5be9, 0x3b7a9a07,
+    0x286b0a1a, 0x3b7f3c87, 0x2876b934, 0x3b83dcbc,
+    0x28826936, 0x3b887aa6, 0x288e1a20, 0x3b8d1644,
+    0x2899cbf1, 0x3b91af97, 0x28a57ea9, 0x3b96469d,
+    0x28b13248, 0x3b9adb57, 0x28bce6cd, 0x3b9f6dc5,
+    0x28c89c37, 0x3ba3fde7, 0x28d45286, 0x3ba88bbc,
+    0x28e009ba, 0x3bad1744, 0x28ebc1d3, 0x3bb1a080,
+    0x28f77acf, 0x3bb6276e, 0x290334af, 0x3bbaac0e,
+    0x290eef71, 0x3bbf2e62, 0x291aab16, 0x3bc3ae67,
+    0x2926679c, 0x3bc82c1f, 0x29322505, 0x3bcca789,
+    0x293de34e, 0x3bd120a4, 0x2949a278, 0x3bd59771,
+    0x29556282, 0x3bda0bf0, 0x2961236c, 0x3bde7e20,
+    0x296ce535, 0x3be2ee01, 0x2978a7dd, 0x3be75b93,
+    0x29846b63, 0x3bebc6d5, 0x29902fc7, 0x3bf02fc9,
+    0x299bf509, 0x3bf4966c, 0x29a7bb28, 0x3bf8fac0,
+    0x29b38223, 0x3bfd5cc4, 0x29bf49fa, 0x3c01bc78,
+    0x29cb12ad, 0x3c0619dc, 0x29d6dc3b, 0x3c0a74f0,
+    0x29e2a6a3, 0x3c0ecdb2, 0x29ee71e6, 0x3c132424,
+    0x29fa3e03, 0x3c177845, 0x2a060af9, 0x3c1bca16,
+    0x2a11d8c8, 0x3c201994, 0x2a1da770, 0x3c2466c2,
+    0x2a2976ef, 0x3c28b19e, 0x2a354746, 0x3c2cfa28,
+    0x2a411874, 0x3c314060, 0x2a4cea79, 0x3c358446,
+    0x2a58bd54, 0x3c39c5da, 0x2a649105, 0x3c3e051b,
+    0x2a70658a, 0x3c42420a, 0x2a7c3ae5, 0x3c467ca6,
+    0x2a881114, 0x3c4ab4ef, 0x2a93e817, 0x3c4eeae5,
+    0x2a9fbfed, 0x3c531e88, 0x2aab9896, 0x3c574fd8,
+    0x2ab77212, 0x3c5b7ed4, 0x2ac34c60, 0x3c5fab7c,
+    0x2acf277f, 0x3c63d5d1, 0x2adb0370, 0x3c67fdd1,
+    0x2ae6e031, 0x3c6c237e, 0x2af2bdc3, 0x3c7046d6,
+    0x2afe9c24, 0x3c7467d9, 0x2b0a7b54, 0x3c788688,
+    0x2b165b54, 0x3c7ca2e2, 0x2b223c22, 0x3c80bce7,
+    0x2b2e1dbe, 0x3c84d496, 0x2b3a0027, 0x3c88e9f1,
+    0x2b45e35d, 0x3c8cfcf6, 0x2b51c760, 0x3c910da5,
+    0x2b5dac2f, 0x3c951bff, 0x2b6991ca, 0x3c992803,
+    0x2b75782f, 0x3c9d31b0, 0x2b815f60, 0x3ca13908,
+    0x2b8d475b, 0x3ca53e09, 0x2b99301f, 0x3ca940b3,
+    0x2ba519ad, 0x3cad4107, 0x2bb10404, 0x3cb13f04,
+    0x2bbcef23, 0x3cb53aaa, 0x2bc8db0b, 0x3cb933f9,
+    0x2bd4c7ba, 0x3cbd2af0, 0x2be0b52f, 0x3cc11f90,
+    0x2beca36c, 0x3cc511d9, 0x2bf8926f, 0x3cc901c9,
+    0x2c048237, 0x3cccef62, 0x2c1072c4, 0x3cd0daa2,
+    0x2c1c6417, 0x3cd4c38b, 0x2c28562d, 0x3cd8aa1b,
+    0x2c344908, 0x3cdc8e52, 0x2c403ca5, 0x3ce07031,
+    0x2c4c3106, 0x3ce44fb7, 0x2c582629, 0x3ce82ce4,
+    0x2c641c0e, 0x3cec07b8, 0x2c7012b5, 0x3cefe032,
+    0x2c7c0a1d, 0x3cf3b653, 0x2c880245, 0x3cf78a1b,
+    0x2c93fb2e, 0x3cfb5b89, 0x2c9ff4d6, 0x3cff2a9d,
+    0x2cabef3d, 0x3d02f757, 0x2cb7ea63, 0x3d06c1b6,
+    0x2cc3e648, 0x3d0a89bc, 0x2ccfe2ea, 0x3d0e4f67,
+    0x2cdbe04a, 0x3d1212b7, 0x2ce7de66, 0x3d15d3ad,
+    0x2cf3dd3f, 0x3d199248, 0x2cffdcd4, 0x3d1d4e88,
+    0x2d0bdd25, 0x3d21086c, 0x2d17de31, 0x3d24bff6,
+    0x2d23dff7, 0x3d287523, 0x2d2fe277, 0x3d2c27f6,
+    0x2d3be5b1, 0x3d2fd86c, 0x2d47e9a5, 0x3d338687,
+    0x2d53ee51, 0x3d373245, 0x2d5ff3b5, 0x3d3adba7,
+    0x2d6bf9d1, 0x3d3e82ae, 0x2d7800a5, 0x3d422757,
+    0x2d84082f, 0x3d45c9a4, 0x2d901070, 0x3d496994,
+    0x2d9c1967, 0x3d4d0728, 0x2da82313, 0x3d50a25e,
+    0x2db42d74, 0x3d543b37, 0x2dc0388a, 0x3d57d1b3,
+    0x2dcc4454, 0x3d5b65d2, 0x2dd850d2, 0x3d5ef793,
+    0x2de45e03, 0x3d6286f6, 0x2df06be6, 0x3d6613fb,
+    0x2dfc7a7c, 0x3d699ea3, 0x2e0889c4, 0x3d6d26ec,
+    0x2e1499bd, 0x3d70acd7, 0x2e20aa67, 0x3d743064,
+    0x2e2cbbc1, 0x3d77b192, 0x2e38cdcb, 0x3d7b3061,
+    0x2e44e084, 0x3d7eacd2, 0x2e50f3ed, 0x3d8226e4,
+    0x2e5d0804, 0x3d859e96, 0x2e691cc9, 0x3d8913ea,
+    0x2e75323c, 0x3d8c86de, 0x2e81485c, 0x3d8ff772,
+    0x2e8d5f29, 0x3d9365a8, 0x2e9976a1, 0x3d96d17d,
+    0x2ea58ec6, 0x3d9a3af2, 0x2eb1a796, 0x3d9da208,
+    0x2ebdc110, 0x3da106bd, 0x2ec9db35, 0x3da46912,
+    0x2ed5f604, 0x3da7c907, 0x2ee2117c, 0x3dab269b,
+    0x2eee2d9d, 0x3dae81cf, 0x2efa4a67, 0x3db1daa2,
+    0x2f0667d9, 0x3db53113, 0x2f1285f2, 0x3db88524,
+    0x2f1ea4b2, 0x3dbbd6d4, 0x2f2ac419, 0x3dbf2622,
+    0x2f36e426, 0x3dc2730f, 0x2f4304d8, 0x3dc5bd9b,
+    0x2f4f2630, 0x3dc905c5, 0x2f5b482d, 0x3dcc4b8d,
+    0x2f676ace, 0x3dcf8ef3, 0x2f738e12, 0x3dd2cff7,
+    0x2f7fb1fa, 0x3dd60e99, 0x2f8bd685, 0x3dd94ad8,
+    0x2f97fbb2, 0x3ddc84b5, 0x2fa42181, 0x3ddfbc30,
+    0x2fb047f2, 0x3de2f148, 0x2fbc6f03, 0x3de623fd,
+    0x2fc896b5, 0x3de9544f, 0x2fd4bf08, 0x3dec823e,
+    0x2fe0e7f9, 0x3defadca, 0x2fed118a, 0x3df2d6f3,
+    0x2ff93bba, 0x3df5fdb8, 0x30056687, 0x3df9221a,
+    0x301191f3, 0x3dfc4418, 0x301dbdfb, 0x3dff63b2,
+    0x3029eaa1, 0x3e0280e9, 0x303617e2, 0x3e059bbb,
+    0x304245c0, 0x3e08b42a, 0x304e7438, 0x3e0bca34,
+    0x305aa34c, 0x3e0eddd9, 0x3066d2fa, 0x3e11ef1b,
+    0x30730342, 0x3e14fdf7, 0x307f3424, 0x3e180a6f,
+    0x308b659f, 0x3e1b1482, 0x309797b2, 0x3e1e1c30,
+    0x30a3ca5d, 0x3e212179, 0x30affda0, 0x3e24245d,
+    0x30bc317a, 0x3e2724db, 0x30c865ea, 0x3e2a22f4,
+    0x30d49af1, 0x3e2d1ea8, 0x30e0d08d, 0x3e3017f6,
+    0x30ed06bf, 0x3e330ede, 0x30f93d86, 0x3e360360,
+    0x310574e0, 0x3e38f57c, 0x3111accf, 0x3e3be532,
+    0x311de551, 0x3e3ed282, 0x312a1e66, 0x3e41bd6c,
+    0x3136580d, 0x3e44a5ef, 0x31429247, 0x3e478c0b,
+    0x314ecd11, 0x3e4a6fc1, 0x315b086d, 0x3e4d5110,
+    0x31674459, 0x3e502ff9, 0x317380d6, 0x3e530c7a,
+    0x317fbde2, 0x3e55e694, 0x318bfb7d, 0x3e58be47,
+    0x319839a6, 0x3e5b9392, 0x31a4785e, 0x3e5e6676,
+    0x31b0b7a4, 0x3e6136f3, 0x31bcf777, 0x3e640507,
+    0x31c937d6, 0x3e66d0b4, 0x31d578c2, 0x3e6999fa,
+    0x31e1ba3a, 0x3e6c60d7, 0x31edfc3d, 0x3e6f254c,
+    0x31fa3ecb, 0x3e71e759, 0x320681e3, 0x3e74a6fd,
+    0x3212c585, 0x3e77643a, 0x321f09b1, 0x3e7a1f0d,
+    0x322b4e66, 0x3e7cd778, 0x323793a3, 0x3e7f8d7b,
+    0x3243d968, 0x3e824114, 0x32501fb5, 0x3e84f245,
+    0x325c6688, 0x3e87a10c, 0x3268ade3, 0x3e8a4d6a,
+    0x3274f5c3, 0x3e8cf75f, 0x32813e2a, 0x3e8f9eeb,
+    0x328d8715, 0x3e92440d, 0x3299d085, 0x3e94e6c6,
+    0x32a61a7a, 0x3e978715, 0x32b264f2, 0x3e9a24fb,
+    0x32beafed, 0x3e9cc076, 0x32cafb6b, 0x3e9f5988,
+    0x32d7476c, 0x3ea1f02f, 0x32e393ef, 0x3ea4846c,
+    0x32efe0f2, 0x3ea7163f, 0x32fc2e77, 0x3ea9a5a8,
+    0x33087c7d, 0x3eac32a6, 0x3314cb02, 0x3eaebd3a,
+    0x33211a07, 0x3eb14563, 0x332d698a, 0x3eb3cb21,
+    0x3339b98d, 0x3eb64e75, 0x33460a0d, 0x3eb8cf5d,
+    0x33525b0b, 0x3ebb4ddb, 0x335eac86, 0x3ebdc9ed,
+    0x336afe7e, 0x3ec04394, 0x337750f2, 0x3ec2bad0,
+    0x3383a3e2, 0x3ec52fa0, 0x338ff74d, 0x3ec7a205,
+    0x339c4b32, 0x3eca11fe, 0x33a89f92, 0x3ecc7f8b,
+    0x33b4f46c, 0x3eceeaad, 0x33c149bf, 0x3ed15363,
+    0x33cd9f8b, 0x3ed3b9ad, 0x33d9f5cf, 0x3ed61d8a,
+    0x33e64c8c, 0x3ed87efc, 0x33f2a3bf, 0x3edade01,
+    0x33fefb6a, 0x3edd3a9a, 0x340b538b, 0x3edf94c7,
+    0x3417ac22, 0x3ee1ec87, 0x3424052f, 0x3ee441da,
+    0x34305eb0, 0x3ee694c1, 0x343cb8a7, 0x3ee8e53a,
+    0x34491311, 0x3eeb3347, 0x34556def, 0x3eed7ee7,
+    0x3461c940, 0x3eefc81a, 0x346e2504, 0x3ef20ee0,
+    0x347a8139, 0x3ef45338, 0x3486dde1, 0x3ef69523,
+    0x34933afa, 0x3ef8d4a1, 0x349f9884, 0x3efb11b1,
+    0x34abf67e, 0x3efd4c54, 0x34b854e7, 0x3eff8489,
+    0x34c4b3c0, 0x3f01ba50, 0x34d11308, 0x3f03eda9,
+    0x34dd72be, 0x3f061e95, 0x34e9d2e3, 0x3f084d12,
+    0x34f63374, 0x3f0a7921, 0x35029473, 0x3f0ca2c2,
+    0x350ef5de, 0x3f0ec9f5, 0x351b57b5, 0x3f10eeb9,
+    0x3527b9f7, 0x3f13110f, 0x35341ca5, 0x3f1530f7,
+    0x35407fbd, 0x3f174e70, 0x354ce33f, 0x3f19697a,
+    0x3559472b, 0x3f1b8215, 0x3565ab80, 0x3f1d9842,
+    0x3572103d, 0x3f1fabff, 0x357e7563, 0x3f21bd4e,
+    0x358adaf0, 0x3f23cc2e, 0x359740e5, 0x3f25d89e,
+    0x35a3a740, 0x3f27e29f, 0x35b00e02, 0x3f29ea31,
+    0x35bc7529, 0x3f2bef53, 0x35c8dcb6, 0x3f2df206,
+    0x35d544a7, 0x3f2ff24a, 0x35e1acfd, 0x3f31f01d,
+    0x35ee15b7, 0x3f33eb81, 0x35fa7ed4, 0x3f35e476,
+    0x3606e854, 0x3f37dafa, 0x36135237, 0x3f39cf0e,
+    0x361fbc7b, 0x3f3bc0b3, 0x362c2721, 0x3f3dafe7,
+    0x36389228, 0x3f3f9cab, 0x3644fd8f, 0x3f4186ff,
+    0x36516956, 0x3f436ee3, 0x365dd57d, 0x3f455456,
+    0x366a4203, 0x3f473759, 0x3676aee8, 0x3f4917eb,
+    0x36831c2b, 0x3f4af60d, 0x368f89cb, 0x3f4cd1be,
+    0x369bf7c9, 0x3f4eaafe, 0x36a86623, 0x3f5081cd,
+    0x36b4d4d9, 0x3f52562c, 0x36c143ec, 0x3f54281a,
+    0x36cdb359, 0x3f55f796, 0x36da2321, 0x3f57c4a2,
+    0x36e69344, 0x3f598f3c, 0x36f303c0, 0x3f5b5765,
+    0x36ff7496, 0x3f5d1d1d, 0x370be5c4, 0x3f5ee063,
+    0x3718574b, 0x3f60a138, 0x3724c92a, 0x3f625f9b,
+    0x37313b60, 0x3f641b8d, 0x373daded, 0x3f65d50d,
+    0x374a20d0, 0x3f678c1c, 0x3756940a, 0x3f6940b8,
+    0x37630799, 0x3f6af2e3, 0x376f7b7d, 0x3f6ca29c,
+    0x377befb5, 0x3f6e4fe3, 0x37886442, 0x3f6ffab8,
+    0x3794d922, 0x3f71a31b, 0x37a14e55, 0x3f73490b,
+    0x37adc3db, 0x3f74ec8a, 0x37ba39b3, 0x3f768d96,
+    0x37c6afdc, 0x3f782c30, 0x37d32657, 0x3f79c857,
+    0x37df9d22, 0x3f7b620c, 0x37ec143e, 0x3f7cf94e,
+    0x37f88ba9, 0x3f7e8e1e, 0x38050364, 0x3f80207b,
+    0x38117b6d, 0x3f81b065, 0x381df3c5, 0x3f833ddd,
+    0x382a6c6a, 0x3f84c8e2, 0x3836e55d, 0x3f865174,
+    0x38435e9d, 0x3f87d792, 0x384fd829, 0x3f895b3e,
+    0x385c5201, 0x3f8adc77, 0x3868cc24, 0x3f8c5b3d,
+    0x38754692, 0x3f8dd78f, 0x3881c14b, 0x3f8f516e,
+    0x388e3c4d, 0x3f90c8da, 0x389ab799, 0x3f923dd2,
+    0x38a7332e, 0x3f93b058, 0x38b3af0c, 0x3f952069,
+    0x38c02b31, 0x3f968e07, 0x38cca79e, 0x3f97f932,
+    0x38d92452, 0x3f9961e8, 0x38e5a14d, 0x3f9ac82c,
+    0x38f21e8e, 0x3f9c2bfb, 0x38fe9c15, 0x3f9d8d56,
+    0x390b19e0, 0x3f9eec3e, 0x391797f0, 0x3fa048b2,
+    0x39241645, 0x3fa1a2b2, 0x393094dd, 0x3fa2fa3d,
+    0x393d13b8, 0x3fa44f55, 0x394992d7, 0x3fa5a1f9,
+    0x39561237, 0x3fa6f228, 0x396291d9, 0x3fa83fe3,
+    0x396f11bc, 0x3fa98b2a, 0x397b91e1, 0x3faad3fd,
+    0x39881245, 0x3fac1a5b, 0x399492ea, 0x3fad5e45,
+    0x39a113cd, 0x3fae9fbb, 0x39ad94f0, 0x3fafdebb,
+    0x39ba1651, 0x3fb11b48, 0x39c697f0, 0x3fb2555f,
+    0x39d319cc, 0x3fb38d02, 0x39df9be6, 0x3fb4c231,
+    0x39ec1e3b, 0x3fb5f4ea, 0x39f8a0cd, 0x3fb7252f,
+    0x3a05239a, 0x3fb852ff, 0x3a11a6a3, 0x3fb97e5a,
+    0x3a1e29e5, 0x3fbaa740, 0x3a2aad62, 0x3fbbcdb1,
+    0x3a373119, 0x3fbcf1ad, 0x3a43b508, 0x3fbe1334,
+    0x3a503930, 0x3fbf3246, 0x3a5cbd91, 0x3fc04ee3,
+    0x3a694229, 0x3fc1690a, 0x3a75c6f8, 0x3fc280bc,
+    0x3a824bfd, 0x3fc395f9, 0x3a8ed139, 0x3fc4a8c1,
+    0x3a9b56ab, 0x3fc5b913, 0x3aa7dc52, 0x3fc6c6f0,
+    0x3ab4622d, 0x3fc7d258, 0x3ac0e83d, 0x3fc8db4a,
+    0x3acd6e81, 0x3fc9e1c6, 0x3ad9f4f8, 0x3fcae5cd,
+    0x3ae67ba2, 0x3fcbe75e, 0x3af3027e, 0x3fcce67a,
+    0x3aff898c, 0x3fcde320, 0x3b0c10cb, 0x3fcedd50,
+    0x3b18983b, 0x3fcfd50b, 0x3b251fdc, 0x3fd0ca4f,
+    0x3b31a7ac, 0x3fd1bd1e, 0x3b3e2fac, 0x3fd2ad77,
+    0x3b4ab7db, 0x3fd39b5a, 0x3b574039, 0x3fd486c7,
+    0x3b63c8c4, 0x3fd56fbe, 0x3b70517d, 0x3fd6563f,
+    0x3b7cda63, 0x3fd73a4a, 0x3b896375, 0x3fd81bdf,
+    0x3b95ecb4, 0x3fd8fafe, 0x3ba2761e, 0x3fd9d7a7,
+    0x3baeffb3, 0x3fdab1d9, 0x3bbb8973, 0x3fdb8996,
+    0x3bc8135c, 0x3fdc5edc, 0x3bd49d70, 0x3fdd31ac,
+    0x3be127ac, 0x3fde0205, 0x3bedb212, 0x3fdecfe8,
+    0x3bfa3c9f, 0x3fdf9b55, 0x3c06c754, 0x3fe0644b,
+    0x3c135231, 0x3fe12acb, 0x3c1fdd34, 0x3fe1eed5,
+    0x3c2c685d, 0x3fe2b067, 0x3c38f3ac, 0x3fe36f84,
+    0x3c457f21, 0x3fe42c2a, 0x3c520aba, 0x3fe4e659,
+    0x3c5e9678, 0x3fe59e12, 0x3c6b2259, 0x3fe65354,
+    0x3c77ae5e, 0x3fe7061f, 0x3c843a85, 0x3fe7b674,
+    0x3c90c6cf, 0x3fe86452, 0x3c9d533b, 0x3fe90fb9,
+    0x3ca9dfc8, 0x3fe9b8a9, 0x3cb66c77, 0x3fea5f23,
+    0x3cc2f945, 0x3feb0326, 0x3ccf8634, 0x3feba4b2,
+    0x3cdc1342, 0x3fec43c7, 0x3ce8a06f, 0x3fece065,
+    0x3cf52dbb, 0x3fed7a8c, 0x3d01bb24, 0x3fee123d,
+    0x3d0e48ab, 0x3feea776, 0x3d1ad650, 0x3fef3a39,
+    0x3d276410, 0x3fefca84, 0x3d33f1ed, 0x3ff05858,
+    0x3d407fe6, 0x3ff0e3b6, 0x3d4d0df9, 0x3ff16c9c,
+    0x3d599c28, 0x3ff1f30b, 0x3d662a70, 0x3ff27703,
+    0x3d72b8d2, 0x3ff2f884, 0x3d7f474d, 0x3ff3778e,
+    0x3d8bd5e1, 0x3ff3f420, 0x3d98648d, 0x3ff46e3c,
+    0x3da4f351, 0x3ff4e5e0, 0x3db1822c, 0x3ff55b0d,
+    0x3dbe111e, 0x3ff5cdc3, 0x3dcaa027, 0x3ff63e01,
+    0x3dd72f45, 0x3ff6abc8, 0x3de3be78, 0x3ff71718,
+    0x3df04dc0, 0x3ff77ff1, 0x3dfcdd1d, 0x3ff7e652,
+    0x3e096c8d, 0x3ff84a3c, 0x3e15fc11, 0x3ff8abae,
+    0x3e228ba7, 0x3ff90aaa, 0x3e2f1b50, 0x3ff9672d,
+    0x3e3bab0b, 0x3ff9c13a, 0x3e483ad8, 0x3ffa18cf,
+    0x3e54cab5, 0x3ffa6dec, 0x3e615aa3, 0x3ffac092,
+    0x3e6deaa1, 0x3ffb10c1, 0x3e7a7aae, 0x3ffb5e78,
+    0x3e870aca, 0x3ffba9b8, 0x3e939af5, 0x3ffbf280,
+    0x3ea02b2e, 0x3ffc38d1, 0x3eacbb74, 0x3ffc7caa,
+    0x3eb94bc8, 0x3ffcbe0c, 0x3ec5dc28, 0x3ffcfcf6,
+    0x3ed26c94, 0x3ffd3969, 0x3edefd0c, 0x3ffd7364,
+    0x3eeb8d8f, 0x3ffdaae7, 0x3ef81e1d, 0x3ffddff3,
+    0x3f04aeb5, 0x3ffe1288, 0x3f113f56, 0x3ffe42a4,
+    0x3f1dd001, 0x3ffe704a, 0x3f2a60b4, 0x3ffe9b77,
+    0x3f36f170, 0x3ffec42d, 0x3f438234, 0x3ffeea6c,
+    0x3f5012fe, 0x3fff0e32, 0x3f5ca3d0, 0x3fff2f82,
+    0x3f6934a8, 0x3fff4e59, 0x3f75c585, 0x3fff6ab9,
+    0x3f825668, 0x3fff84a1, 0x3f8ee750, 0x3fff9c12,
+    0x3f9b783c, 0x3fffb10b, 0x3fa8092c, 0x3fffc38c,
+    0x3fb49a1f, 0x3fffd396, 0x3fc12b16, 0x3fffe128,
+    0x3fcdbc0f, 0x3fffec43, 0x3fda4d09, 0x3ffff4e6,
+    0x3fe6de05, 0x3ffffb11, 0x3ff36f02, 0x3ffffec4,
+};
+
+
+/**    
+* \par   
+* Generation of realCoefBQ31 array:    
+* \par    
+*  n = 4096        
+* <pre>for (i = 0; i < n; i++)    
+* {    
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));    
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));    
+* } </pre>    
+* \par    
+* Convert to fixed point Q31 format    
+*     round(pBTable[i] * pow(2, 31))    
+*    
+*/
+
+static const q31_t realCoefBQ31[8192] = {
+    0x40000000, 0x40000000, 0x400c90fe, 0x3ffffec4,
+    0x401921fb, 0x3ffffb11, 0x4025b2f7, 0x3ffff4e6,
+    0x403243f1, 0x3fffec43, 0x403ed4ea, 0x3fffe128,
+    0x404b65e1, 0x3fffd396, 0x4057f6d4, 0x3fffc38c,
+    0x406487c4, 0x3fffb10b, 0x407118b0, 0x3fff9c12,
+    0x407da998, 0x3fff84a1, 0x408a3a7b, 0x3fff6ab9,
+    0x4096cb58, 0x3fff4e59, 0x40a35c30, 0x3fff2f82,
+    0x40afed02, 0x3fff0e32, 0x40bc7dcc, 0x3ffeea6c,
+    0x40c90e90, 0x3ffec42d, 0x40d59f4c, 0x3ffe9b77,
+    0x40e22fff, 0x3ffe704a, 0x40eec0aa, 0x3ffe42a4,
+    0x40fb514b, 0x3ffe1288, 0x4107e1e3, 0x3ffddff3,
+    0x41147271, 0x3ffdaae7, 0x412102f4, 0x3ffd7364,
+    0x412d936c, 0x3ffd3969, 0x413a23d8, 0x3ffcfcf6,
+    0x4146b438, 0x3ffcbe0c, 0x4153448c, 0x3ffc7caa,
+    0x415fd4d2, 0x3ffc38d1, 0x416c650b, 0x3ffbf280,
+    0x4178f536, 0x3ffba9b8, 0x41858552, 0x3ffb5e78,
+    0x4192155f, 0x3ffb10c1, 0x419ea55d, 0x3ffac092,
+    0x41ab354b, 0x3ffa6dec, 0x41b7c528, 0x3ffa18cf,
+    0x41c454f5, 0x3ff9c13a, 0x41d0e4b0, 0x3ff9672d,
+    0x41dd7459, 0x3ff90aaa, 0x41ea03ef, 0x3ff8abae,
+    0x41f69373, 0x3ff84a3c, 0x420322e3, 0x3ff7e652,
+    0x420fb240, 0x3ff77ff1, 0x421c4188, 0x3ff71718,
+    0x4228d0bb, 0x3ff6abc8, 0x42355fd9, 0x3ff63e01,
+    0x4241eee2, 0x3ff5cdc3, 0x424e7dd4, 0x3ff55b0d,
+    0x425b0caf, 0x3ff4e5e0, 0x42679b73, 0x3ff46e3c,
+    0x42742a1f, 0x3ff3f420, 0x4280b8b3, 0x3ff3778e,
+    0x428d472e, 0x3ff2f884, 0x4299d590, 0x3ff27703,
+    0x42a663d8, 0x3ff1f30b, 0x42b2f207, 0x3ff16c9c,
+    0x42bf801a, 0x3ff0e3b6, 0x42cc0e13, 0x3ff05858,
+    0x42d89bf0, 0x3fefca84, 0x42e529b0, 0x3fef3a39,
+    0x42f1b755, 0x3feea776, 0x42fe44dc, 0x3fee123d,
+    0x430ad245, 0x3fed7a8c, 0x43175f91, 0x3fece065,
+    0x4323ecbe, 0x3fec43c7, 0x433079cc, 0x3feba4b2,
+    0x433d06bb, 0x3feb0326, 0x43499389, 0x3fea5f23,
+    0x43562038, 0x3fe9b8a9, 0x4362acc5, 0x3fe90fb9,
+    0x436f3931, 0x3fe86452, 0x437bc57b, 0x3fe7b674,
+    0x438851a2, 0x3fe7061f, 0x4394dda7, 0x3fe65354,
+    0x43a16988, 0x3fe59e12, 0x43adf546, 0x3fe4e659,
+    0x43ba80df, 0x3fe42c2a, 0x43c70c54, 0x3fe36f84,
+    0x43d397a3, 0x3fe2b067, 0x43e022cc, 0x3fe1eed5,
+    0x43ecadcf, 0x3fe12acb, 0x43f938ac, 0x3fe0644b,
+    0x4405c361, 0x3fdf9b55, 0x44124dee, 0x3fdecfe8,
+    0x441ed854, 0x3fde0205, 0x442b6290, 0x3fdd31ac,
+    0x4437eca4, 0x3fdc5edc, 0x4444768d, 0x3fdb8996,
+    0x4451004d, 0x3fdab1d9, 0x445d89e2, 0x3fd9d7a7,
+    0x446a134c, 0x3fd8fafe, 0x44769c8b, 0x3fd81bdf,
+    0x4483259d, 0x3fd73a4a, 0x448fae83, 0x3fd6563f,
+    0x449c373c, 0x3fd56fbe, 0x44a8bfc7, 0x3fd486c7,
+    0x44b54825, 0x3fd39b5a, 0x44c1d054, 0x3fd2ad77,
+    0x44ce5854, 0x3fd1bd1e, 0x44dae024, 0x3fd0ca4f,
+    0x44e767c5, 0x3fcfd50b, 0x44f3ef35, 0x3fcedd50,
+    0x45007674, 0x3fcde320, 0x450cfd82, 0x3fcce67a,
+    0x4519845e, 0x3fcbe75e, 0x45260b08, 0x3fcae5cd,
+    0x4532917f, 0x3fc9e1c6, 0x453f17c3, 0x3fc8db4a,
+    0x454b9dd3, 0x3fc7d258, 0x455823ae, 0x3fc6c6f0,
+    0x4564a955, 0x3fc5b913, 0x45712ec7, 0x3fc4a8c1,
+    0x457db403, 0x3fc395f9, 0x458a3908, 0x3fc280bc,
+    0x4596bdd7, 0x3fc1690a, 0x45a3426f, 0x3fc04ee3,
+    0x45afc6d0, 0x3fbf3246, 0x45bc4af8, 0x3fbe1334,
+    0x45c8cee7, 0x3fbcf1ad, 0x45d5529e, 0x3fbbcdb1,
+    0x45e1d61b, 0x3fbaa740, 0x45ee595d, 0x3fb97e5a,
+    0x45fadc66, 0x3fb852ff, 0x46075f33, 0x3fb7252f,
+    0x4613e1c5, 0x3fb5f4ea, 0x4620641a, 0x3fb4c231,
+    0x462ce634, 0x3fb38d02, 0x46396810, 0x3fb2555f,
+    0x4645e9af, 0x3fb11b48, 0x46526b10, 0x3fafdebb,
+    0x465eec33, 0x3fae9fbb, 0x466b6d16, 0x3fad5e45,
+    0x4677edbb, 0x3fac1a5b, 0x46846e1f, 0x3faad3fd,
+    0x4690ee44, 0x3fa98b2a, 0x469d6e27, 0x3fa83fe3,
+    0x46a9edc9, 0x3fa6f228, 0x46b66d29, 0x3fa5a1f9,
+    0x46c2ec48, 0x3fa44f55, 0x46cf6b23, 0x3fa2fa3d,
+    0x46dbe9bb, 0x3fa1a2b2, 0x46e86810, 0x3fa048b2,
+    0x46f4e620, 0x3f9eec3e, 0x470163eb, 0x3f9d8d56,
+    0x470de172, 0x3f9c2bfb, 0x471a5eb3, 0x3f9ac82c,
+    0x4726dbae, 0x3f9961e8, 0x47335862, 0x3f97f932,
+    0x473fd4cf, 0x3f968e07, 0x474c50f4, 0x3f952069,
+    0x4758ccd2, 0x3f93b058, 0x47654867, 0x3f923dd2,
+    0x4771c3b3, 0x3f90c8da, 0x477e3eb5, 0x3f8f516e,
+    0x478ab96e, 0x3f8dd78f, 0x479733dc, 0x3f8c5b3d,
+    0x47a3adff, 0x3f8adc77, 0x47b027d7, 0x3f895b3e,
+    0x47bca163, 0x3f87d792, 0x47c91aa3, 0x3f865174,
+    0x47d59396, 0x3f84c8e2, 0x47e20c3b, 0x3f833ddd,
+    0x47ee8493, 0x3f81b065, 0x47fafc9c, 0x3f80207b,
+    0x48077457, 0x3f7e8e1e, 0x4813ebc2, 0x3f7cf94e,
+    0x482062de, 0x3f7b620c, 0x482cd9a9, 0x3f79c857,
+    0x48395024, 0x3f782c30, 0x4845c64d, 0x3f768d96,
+    0x48523c25, 0x3f74ec8a, 0x485eb1ab, 0x3f73490b,
+    0x486b26de, 0x3f71a31b, 0x48779bbe, 0x3f6ffab8,
+    0x4884104b, 0x3f6e4fe3, 0x48908483, 0x3f6ca29c,
+    0x489cf867, 0x3f6af2e3, 0x48a96bf6, 0x3f6940b8,
+    0x48b5df30, 0x3f678c1c, 0x48c25213, 0x3f65d50d,
+    0x48cec4a0, 0x3f641b8d, 0x48db36d6, 0x3f625f9b,
+    0x48e7a8b5, 0x3f60a138, 0x48f41a3c, 0x3f5ee063,
+    0x49008b6a, 0x3f5d1d1d, 0x490cfc40, 0x3f5b5765,
+    0x49196cbc, 0x3f598f3c, 0x4925dcdf, 0x3f57c4a2,
+    0x49324ca7, 0x3f55f796, 0x493ebc14, 0x3f54281a,
+    0x494b2b27, 0x3f52562c, 0x495799dd, 0x3f5081cd,
+    0x49640837, 0x3f4eaafe, 0x49707635, 0x3f4cd1be,
+    0x497ce3d5, 0x3f4af60d, 0x49895118, 0x3f4917eb,
+    0x4995bdfd, 0x3f473759, 0x49a22a83, 0x3f455456,
+    0x49ae96aa, 0x3f436ee3, 0x49bb0271, 0x3f4186ff,
+    0x49c76dd8, 0x3f3f9cab, 0x49d3d8df, 0x3f3dafe7,
+    0x49e04385, 0x3f3bc0b3, 0x49ecadc9, 0x3f39cf0e,
+    0x49f917ac, 0x3f37dafa, 0x4a05812c, 0x3f35e476,
+    0x4a11ea49, 0x3f33eb81, 0x4a1e5303, 0x3f31f01d,
+    0x4a2abb59, 0x3f2ff24a, 0x4a37234a, 0x3f2df206,
+    0x4a438ad7, 0x3f2bef53, 0x4a4ff1fe, 0x3f29ea31,
+    0x4a5c58c0, 0x3f27e29f, 0x4a68bf1b, 0x3f25d89e,
+    0x4a752510, 0x3f23cc2e, 0x4a818a9d, 0x3f21bd4e,
+    0x4a8defc3, 0x3f1fabff, 0x4a9a5480, 0x3f1d9842,
+    0x4aa6b8d5, 0x3f1b8215, 0x4ab31cc1, 0x3f19697a,
+    0x4abf8043, 0x3f174e70, 0x4acbe35b, 0x3f1530f7,
+    0x4ad84609, 0x3f13110f, 0x4ae4a84b, 0x3f10eeb9,
+    0x4af10a22, 0x3f0ec9f5, 0x4afd6b8d, 0x3f0ca2c2,
+    0x4b09cc8c, 0x3f0a7921, 0x4b162d1d, 0x3f084d12,
+    0x4b228d42, 0x3f061e95, 0x4b2eecf8, 0x3f03eda9,
+    0x4b3b4c40, 0x3f01ba50, 0x4b47ab19, 0x3eff8489,
+    0x4b540982, 0x3efd4c54, 0x4b60677c, 0x3efb11b1,
+    0x4b6cc506, 0x3ef8d4a1, 0x4b79221f, 0x3ef69523,
+    0x4b857ec7, 0x3ef45338, 0x4b91dafc, 0x3ef20ee0,
+    0x4b9e36c0, 0x3eefc81a, 0x4baa9211, 0x3eed7ee7,
+    0x4bb6ecef, 0x3eeb3347, 0x4bc34759, 0x3ee8e53a,
+    0x4bcfa150, 0x3ee694c1, 0x4bdbfad1, 0x3ee441da,
+    0x4be853de, 0x3ee1ec87, 0x4bf4ac75, 0x3edf94c7,
+    0x4c010496, 0x3edd3a9a, 0x4c0d5c41, 0x3edade01,
+    0x4c19b374, 0x3ed87efc, 0x4c260a31, 0x3ed61d8a,
+    0x4c326075, 0x3ed3b9ad, 0x4c3eb641, 0x3ed15363,
+    0x4c4b0b94, 0x3eceeaad, 0x4c57606e, 0x3ecc7f8b,
+    0x4c63b4ce, 0x3eca11fe, 0x4c7008b3, 0x3ec7a205,
+    0x4c7c5c1e, 0x3ec52fa0, 0x4c88af0e, 0x3ec2bad0,
+    0x4c950182, 0x3ec04394, 0x4ca1537a, 0x3ebdc9ed,
+    0x4cada4f5, 0x3ebb4ddb, 0x4cb9f5f3, 0x3eb8cf5d,
+    0x4cc64673, 0x3eb64e75, 0x4cd29676, 0x3eb3cb21,
+    0x4cdee5f9, 0x3eb14563, 0x4ceb34fe, 0x3eaebd3a,
+    0x4cf78383, 0x3eac32a6, 0x4d03d189, 0x3ea9a5a8,
+    0x4d101f0e, 0x3ea7163f, 0x4d1c6c11, 0x3ea4846c,
+    0x4d28b894, 0x3ea1f02f, 0x4d350495, 0x3e9f5988,
+    0x4d415013, 0x3e9cc076, 0x4d4d9b0e, 0x3e9a24fb,
+    0x4d59e586, 0x3e978715, 0x4d662f7b, 0x3e94e6c6,
+    0x4d7278eb, 0x3e92440d, 0x4d7ec1d6, 0x3e8f9eeb,
+    0x4d8b0a3d, 0x3e8cf75f, 0x4d97521d, 0x3e8a4d6a,
+    0x4da39978, 0x3e87a10c, 0x4dafe04b, 0x3e84f245,
+    0x4dbc2698, 0x3e824114, 0x4dc86c5d, 0x3e7f8d7b,
+    0x4dd4b19a, 0x3e7cd778, 0x4de0f64f, 0x3e7a1f0d,
+    0x4ded3a7b, 0x3e77643a, 0x4df97e1d, 0x3e74a6fd,
+    0x4e05c135, 0x3e71e759, 0x4e1203c3, 0x3e6f254c,
+    0x4e1e45c6, 0x3e6c60d7, 0x4e2a873e, 0x3e6999fa,
+    0x4e36c82a, 0x3e66d0b4, 0x4e430889, 0x3e640507,
+    0x4e4f485c, 0x3e6136f3, 0x4e5b87a2, 0x3e5e6676,
+    0x4e67c65a, 0x3e5b9392, 0x4e740483, 0x3e58be47,
+    0x4e80421e, 0x3e55e694, 0x4e8c7f2a, 0x3e530c7a,
+    0x4e98bba7, 0x3e502ff9, 0x4ea4f793, 0x3e4d5110,
+    0x4eb132ef, 0x3e4a6fc1, 0x4ebd6db9, 0x3e478c0b,
+    0x4ec9a7f3, 0x3e44a5ef, 0x4ed5e19a, 0x3e41bd6c,
+    0x4ee21aaf, 0x3e3ed282, 0x4eee5331, 0x3e3be532,
+    0x4efa8b20, 0x3e38f57c, 0x4f06c27a, 0x3e360360,
+    0x4f12f941, 0x3e330ede, 0x4f1f2f73, 0x3e3017f6,
+    0x4f2b650f, 0x3e2d1ea8, 0x4f379a16, 0x3e2a22f4,
+    0x4f43ce86, 0x3e2724db, 0x4f500260, 0x3e24245d,
+    0x4f5c35a3, 0x3e212179, 0x4f68684e, 0x3e1e1c30,
+    0x4f749a61, 0x3e1b1482, 0x4f80cbdc, 0x3e180a6f,
+    0x4f8cfcbe, 0x3e14fdf7, 0x4f992d06, 0x3e11ef1b,
+    0x4fa55cb4, 0x3e0eddd9, 0x4fb18bc8, 0x3e0bca34,
+    0x4fbdba40, 0x3e08b42a, 0x4fc9e81e, 0x3e059bbb,
+    0x4fd6155f, 0x3e0280e9, 0x4fe24205, 0x3dff63b2,
+    0x4fee6e0d, 0x3dfc4418, 0x4ffa9979, 0x3df9221a,
+    0x5006c446, 0x3df5fdb8, 0x5012ee76, 0x3df2d6f3,
+    0x501f1807, 0x3defadca, 0x502b40f8, 0x3dec823e,
+    0x5037694b, 0x3de9544f, 0x504390fd, 0x3de623fd,
+    0x504fb80e, 0x3de2f148, 0x505bde7f, 0x3ddfbc30,
+    0x5068044e, 0x3ddc84b5, 0x5074297b, 0x3dd94ad8,
+    0x50804e06, 0x3dd60e99, 0x508c71ee, 0x3dd2cff7,
+    0x50989532, 0x3dcf8ef3, 0x50a4b7d3, 0x3dcc4b8d,
+    0x50b0d9d0, 0x3dc905c5, 0x50bcfb28, 0x3dc5bd9b,
+    0x50c91bda, 0x3dc2730f, 0x50d53be7, 0x3dbf2622,
+    0x50e15b4e, 0x3dbbd6d4, 0x50ed7a0e, 0x3db88524,
+    0x50f99827, 0x3db53113, 0x5105b599, 0x3db1daa2,
+    0x5111d263, 0x3dae81cf, 0x511dee84, 0x3dab269b,
+    0x512a09fc, 0x3da7c907, 0x513624cb, 0x3da46912,
+    0x51423ef0, 0x3da106bd, 0x514e586a, 0x3d9da208,
+    0x515a713a, 0x3d9a3af2, 0x5166895f, 0x3d96d17d,
+    0x5172a0d7, 0x3d9365a8, 0x517eb7a4, 0x3d8ff772,
+    0x518acdc4, 0x3d8c86de, 0x5196e337, 0x3d8913ea,
+    0x51a2f7fc, 0x3d859e96, 0x51af0c13, 0x3d8226e4,
+    0x51bb1f7c, 0x3d7eacd2, 0x51c73235, 0x3d7b3061,
+    0x51d3443f, 0x3d77b192, 0x51df5599, 0x3d743064,
+    0x51eb6643, 0x3d70acd7, 0x51f7763c, 0x3d6d26ec,
+    0x52038584, 0x3d699ea3, 0x520f941a, 0x3d6613fb,
+    0x521ba1fd, 0x3d6286f6, 0x5227af2e, 0x3d5ef793,
+    0x5233bbac, 0x3d5b65d2, 0x523fc776, 0x3d57d1b3,
+    0x524bd28c, 0x3d543b37, 0x5257dced, 0x3d50a25e,
+    0x5263e699, 0x3d4d0728, 0x526fef90, 0x3d496994,
+    0x527bf7d1, 0x3d45c9a4, 0x5287ff5b, 0x3d422757,
+    0x5294062f, 0x3d3e82ae, 0x52a00c4b, 0x3d3adba7,
+    0x52ac11af, 0x3d373245, 0x52b8165b, 0x3d338687,
+    0x52c41a4f, 0x3d2fd86c, 0x52d01d89, 0x3d2c27f6,
+    0x52dc2009, 0x3d287523, 0x52e821cf, 0x3d24bff6,
+    0x52f422db, 0x3d21086c, 0x5300232c, 0x3d1d4e88,
+    0x530c22c1, 0x3d199248, 0x5318219a, 0x3d15d3ad,
+    0x53241fb6, 0x3d1212b7, 0x53301d16, 0x3d0e4f67,
+    0x533c19b8, 0x3d0a89bc, 0x5348159d, 0x3d06c1b6,
+    0x535410c3, 0x3d02f757, 0x53600b2a, 0x3cff2a9d,
+    0x536c04d2, 0x3cfb5b89, 0x5377fdbb, 0x3cf78a1b,
+    0x5383f5e3, 0x3cf3b653, 0x538fed4b, 0x3cefe032,
+    0x539be3f2, 0x3cec07b8, 0x53a7d9d7, 0x3ce82ce4,
+    0x53b3cefa, 0x3ce44fb7, 0x53bfc35b, 0x3ce07031,
+    0x53cbb6f8, 0x3cdc8e52, 0x53d7a9d3, 0x3cd8aa1b,
+    0x53e39be9, 0x3cd4c38b, 0x53ef8d3c, 0x3cd0daa2,
+    0x53fb7dc9, 0x3cccef62, 0x54076d91, 0x3cc901c9,
+    0x54135c94, 0x3cc511d9, 0x541f4ad1, 0x3cc11f90,
+    0x542b3846, 0x3cbd2af0, 0x543724f5, 0x3cb933f9,
+    0x544310dd, 0x3cb53aaa, 0x544efbfc, 0x3cb13f04,
+    0x545ae653, 0x3cad4107, 0x5466cfe1, 0x3ca940b3,
+    0x5472b8a5, 0x3ca53e09, 0x547ea0a0, 0x3ca13908,
+    0x548a87d1, 0x3c9d31b0, 0x54966e36, 0x3c992803,
+    0x54a253d1, 0x3c951bff, 0x54ae38a0, 0x3c910da5,
+    0x54ba1ca3, 0x3c8cfcf6, 0x54c5ffd9, 0x3c88e9f1,
+    0x54d1e242, 0x3c84d496, 0x54ddc3de, 0x3c80bce7,
+    0x54e9a4ac, 0x3c7ca2e2, 0x54f584ac, 0x3c788688,
+    0x550163dc, 0x3c7467d9, 0x550d423d, 0x3c7046d6,
+    0x55191fcf, 0x3c6c237e, 0x5524fc90, 0x3c67fdd1,
+    0x5530d881, 0x3c63d5d1, 0x553cb3a0, 0x3c5fab7c,
+    0x55488dee, 0x3c5b7ed4, 0x5554676a, 0x3c574fd8,
+    0x55604013, 0x3c531e88, 0x556c17e9, 0x3c4eeae5,
+    0x5577eeec, 0x3c4ab4ef, 0x5583c51b, 0x3c467ca6,
+    0x558f9a76, 0x3c42420a, 0x559b6efb, 0x3c3e051b,
+    0x55a742ac, 0x3c39c5da, 0x55b31587, 0x3c358446,
+    0x55bee78c, 0x3c314060, 0x55cab8ba, 0x3c2cfa28,
+    0x55d68911, 0x3c28b19e, 0x55e25890, 0x3c2466c2,
+    0x55ee2738, 0x3c201994, 0x55f9f507, 0x3c1bca16,
+    0x5605c1fd, 0x3c177845, 0x56118e1a, 0x3c132424,
+    0x561d595d, 0x3c0ecdb2, 0x562923c5, 0x3c0a74f0,
+    0x5634ed53, 0x3c0619dc, 0x5640b606, 0x3c01bc78,
+    0x564c7ddd, 0x3bfd5cc4, 0x565844d8, 0x3bf8fac0,
+    0x56640af7, 0x3bf4966c, 0x566fd039, 0x3bf02fc9,
+    0x567b949d, 0x3bebc6d5, 0x56875823, 0x3be75b93,
+    0x56931acb, 0x3be2ee01, 0x569edc94, 0x3bde7e20,
+    0x56aa9d7e, 0x3bda0bf0, 0x56b65d88, 0x3bd59771,
+    0x56c21cb2, 0x3bd120a4, 0x56cddafb, 0x3bcca789,
+    0x56d99864, 0x3bc82c1f, 0x56e554ea, 0x3bc3ae67,
+    0x56f1108f, 0x3bbf2e62, 0x56fccb51, 0x3bbaac0e,
+    0x57088531, 0x3bb6276e, 0x57143e2d, 0x3bb1a080,
+    0x571ff646, 0x3bad1744, 0x572bad7a, 0x3ba88bbc,
+    0x573763c9, 0x3ba3fde7, 0x57431933, 0x3b9f6dc5,
+    0x574ecdb8, 0x3b9adb57, 0x575a8157, 0x3b96469d,
+    0x5766340f, 0x3b91af97, 0x5771e5e0, 0x3b8d1644,
+    0x577d96ca, 0x3b887aa6, 0x578946cc, 0x3b83dcbc,
+    0x5794f5e6, 0x3b7f3c87, 0x57a0a417, 0x3b7a9a07,
+    0x57ac515f, 0x3b75f53c, 0x57b7fdbd, 0x3b714e25,
+    0x57c3a931, 0x3b6ca4c4, 0x57cf53bb, 0x3b67f919,
+    0x57dafd59, 0x3b634b23, 0x57e6a60c, 0x3b5e9ae4,
+    0x57f24dd3, 0x3b59e85a, 0x57fdf4ae, 0x3b553386,
+    0x58099a9c, 0x3b507c69, 0x58153f9d, 0x3b4bc303,
+    0x5820e3b0, 0x3b470753, 0x582c86d5, 0x3b42495a,
+    0x5838290c, 0x3b3d8918, 0x5843ca53, 0x3b38c68e,
+    0x584f6aab, 0x3b3401bb, 0x585b0a13, 0x3b2f3aa0,
+    0x5866a88a, 0x3b2a713d, 0x58724611, 0x3b25a591,
+    0x587de2a7, 0x3b20d79e, 0x58897e4a, 0x3b1c0764,
+    0x589518fc, 0x3b1734e2, 0x58a0b2bb, 0x3b126019,
+    0x58ac4b87, 0x3b0d8909, 0x58b7e35f, 0x3b08afb2,
+    0x58c37a44, 0x3b03d414, 0x58cf1034, 0x3afef630,
+    0x58daa52f, 0x3afa1605, 0x58e63935, 0x3af53395,
+    0x58f1cc45, 0x3af04edf, 0x58fd5e5f, 0x3aeb67e3,
+    0x5908ef82, 0x3ae67ea1, 0x59147fae, 0x3ae1931a,
+    0x59200ee3, 0x3adca54e, 0x592b9d1f, 0x3ad7b53d,
+    0x59372a64, 0x3ad2c2e8, 0x5942b6af, 0x3acdce4d,
+    0x594e4201, 0x3ac8d76f, 0x5959cc5a, 0x3ac3de4c,
+    0x596555b8, 0x3abee2e5, 0x5970de1b, 0x3ab9e53a,
+    0x597c6584, 0x3ab4e54c, 0x5987ebf0, 0x3aafe31b,
+    0x59937161, 0x3aaadea6, 0x599ef5d6, 0x3aa5d7ee,
+    0x59aa794d, 0x3aa0cef3, 0x59b5fbc8, 0x3a9bc3b6,
+    0x59c17d44, 0x3a96b636, 0x59ccfdc2, 0x3a91a674,
+    0x59d87d42, 0x3a8c9470, 0x59e3fbc3, 0x3a87802a,
+    0x59ef7944, 0x3a8269a3, 0x59faf5c5, 0x3a7d50da,
+    0x5a067145, 0x3a7835cf, 0x5a11ebc5, 0x3a731884,
+    0x5a1d6544, 0x3a6df8f8, 0x5a28ddc0, 0x3a68d72b,
+    0x5a34553b, 0x3a63b31d, 0x5a3fcbb3, 0x3a5e8cd0,
+    0x5a4b4128, 0x3a596442, 0x5a56b599, 0x3a543974,
+    0x5a622907, 0x3a4f0c67, 0x5a6d9b70, 0x3a49dd1a,
+    0x5a790cd4, 0x3a44ab8e, 0x5a847d33, 0x3a3f77c3,
+    0x5a8fec8c, 0x3a3a41b9, 0x5a9b5adf, 0x3a350970,
+    0x5aa6c82b, 0x3a2fcee8, 0x5ab23471, 0x3a2a9223,
+    0x5abd9faf, 0x3a25531f, 0x5ac909e5, 0x3a2011de,
+    0x5ad47312, 0x3a1ace5f, 0x5adfdb37, 0x3a1588a2,
+    0x5aeb4253, 0x3a1040a8, 0x5af6a865, 0x3a0af671,
+    0x5b020d6c, 0x3a05a9fd, 0x5b0d716a, 0x3a005b4d,
+    0x5b18d45c, 0x39fb0a60, 0x5b243643, 0x39f5b737,
+    0x5b2f971e, 0x39f061d2, 0x5b3af6ec, 0x39eb0a31,
+    0x5b4655ae, 0x39e5b054, 0x5b51b363, 0x39e0543c,
+    0x5b5d100a, 0x39daf5e8, 0x5b686ba3, 0x39d5955a,
+    0x5b73c62d, 0x39d03291, 0x5b7f1fa9, 0x39cacd8d,
+    0x5b8a7815, 0x39c5664f, 0x5b95cf71, 0x39bffcd7,
+    0x5ba125bd, 0x39ba9125, 0x5bac7af9, 0x39b52339,
+    0x5bb7cf23, 0x39afb313, 0x5bc3223c, 0x39aa40b4,
+    0x5bce7442, 0x39a4cc1c, 0x5bd9c537, 0x399f554b,
+    0x5be51518, 0x3999dc42, 0x5bf063e6, 0x399460ff,
+    0x5bfbb1a0, 0x398ee385, 0x5c06fe46, 0x398963d2,
+    0x5c1249d8, 0x3983e1e8, 0x5c1d9454, 0x397e5dc6,
+    0x5c28ddbb, 0x3978d76c, 0x5c34260c, 0x39734edc,
+    0x5c3f6d47, 0x396dc414, 0x5c4ab36b, 0x39683715,
+    0x5c55f878, 0x3962a7e0, 0x5c613c6d, 0x395d1675,
+    0x5c6c7f4a, 0x395782d3, 0x5c77c10e, 0x3951ecfc,
+    0x5c8301b9, 0x394c54ee, 0x5c8e414b, 0x3946baac,
+    0x5c997fc4, 0x39411e33, 0x5ca4bd21, 0x393b7f86,
+    0x5caff965, 0x3935dea4, 0x5cbb348d, 0x39303b8e,
+    0x5cc66e99, 0x392a9642, 0x5cd1a78a, 0x3924eec3,
+    0x5cdcdf5e, 0x391f4510, 0x5ce81615, 0x39199929,
+    0x5cf34baf, 0x3913eb0e, 0x5cfe802b, 0x390e3ac0,
+    0x5d09b389, 0x3908883f, 0x5d14e5c9, 0x3902d38b,
+    0x5d2016e9, 0x38fd1ca4, 0x5d2b46ea, 0x38f7638b,
+    0x5d3675cb, 0x38f1a840, 0x5d41a38c, 0x38ebeac2,
+    0x5d4cd02c, 0x38e62b13, 0x5d57fbaa, 0x38e06932,
+    0x5d632608, 0x38daa520, 0x5d6e4f43, 0x38d4dedd,
+    0x5d79775c, 0x38cf1669, 0x5d849e51, 0x38c94bc4,
+    0x5d8fc424, 0x38c37eef, 0x5d9ae8d2, 0x38bdafea,
+    0x5da60c5d, 0x38b7deb4, 0x5db12ec3, 0x38b20b4f,
+    0x5dbc5004, 0x38ac35ba, 0x5dc7701f, 0x38a65df6,
+    0x5dd28f15, 0x38a08402, 0x5dddace4, 0x389aa7e0,
+    0x5de8c98c, 0x3894c98f, 0x5df3e50d, 0x388ee910,
+    0x5dfeff67, 0x38890663, 0x5e0a1898, 0x38832187,
+    0x5e1530a1, 0x387d3a7e, 0x5e204781, 0x38775147,
+    0x5e2b5d38, 0x387165e3, 0x5e3671c5, 0x386b7852,
+    0x5e418528, 0x38658894, 0x5e4c9760, 0x385f96a9,
+    0x5e57a86d, 0x3859a292, 0x5e62b84f, 0x3853ac4f,
+    0x5e6dc705, 0x384db3e0, 0x5e78d48e, 0x3847b946,
+    0x5e83e0eb, 0x3841bc7f, 0x5e8eec1b, 0x383bbd8e,
+    0x5e99f61d, 0x3835bc71, 0x5ea4fef0, 0x382fb92a,
+    0x5eb00696, 0x3829b3b9, 0x5ebb0d0d, 0x3823ac1d,
+    0x5ec61254, 0x381da256, 0x5ed1166b, 0x38179666,
+    0x5edc1953, 0x3811884d, 0x5ee71b0a, 0x380b780a,
+    0x5ef21b90, 0x3805659e, 0x5efd1ae4, 0x37ff5109,
+    0x5f081907, 0x37f93a4b, 0x5f1315f7, 0x37f32165,
+    0x5f1e11b5, 0x37ed0657, 0x5f290c3f, 0x37e6e921,
+    0x5f340596, 0x37e0c9c3, 0x5f3efdb9, 0x37daa83d,
+    0x5f49f4a8, 0x37d48490, 0x5f54ea62, 0x37ce5ebd,
+    0x5f5fdee6, 0x37c836c2, 0x5f6ad235, 0x37c20ca1,
+    0x5f75c44e, 0x37bbe05a, 0x5f80b531, 0x37b5b1ec,
+    0x5f8ba4dc, 0x37af8159, 0x5f969350, 0x37a94ea0,
+    0x5fa1808c, 0x37a319c2, 0x5fac6c91, 0x379ce2be,
+    0x5fb7575c, 0x3796a996, 0x5fc240ef, 0x37906e49,
+    0x5fcd2948, 0x378a30d8, 0x5fd81067, 0x3783f143,
+    0x5fe2f64c, 0x377daf89, 0x5feddaf6, 0x37776bac,
+    0x5ff8be65, 0x377125ac, 0x6003a099, 0x376add88,
+    0x600e8190, 0x37649341, 0x6019614c, 0x375e46d8,
+    0x60243fca, 0x3757f84c, 0x602f1d0b, 0x3751a79e,
+    0x6039f90f, 0x374b54ce, 0x6044d3d4, 0x3744ffdd,
+    0x604fad5b, 0x373ea8ca, 0x605a85a3, 0x37384f95,
+    0x60655cac, 0x3731f440, 0x60703275, 0x372b96ca,
+    0x607b06fe, 0x37253733, 0x6085da46, 0x371ed57c,
+    0x6090ac4d, 0x371871a5, 0x609b7d13, 0x37120bae,
+    0x60a64c97, 0x370ba398, 0x60b11ad9, 0x37053962,
+    0x60bbe7d8, 0x36fecd0e, 0x60c6b395, 0x36f85e9a,
+    0x60d17e0d, 0x36f1ee09, 0x60dc4742, 0x36eb7b58,
+    0x60e70f32, 0x36e5068a, 0x60f1d5de, 0x36de8f9e,
+    0x60fc9b44, 0x36d81695, 0x61075f65, 0x36d19b6e,
+    0x61122240, 0x36cb1e2a, 0x611ce3d5, 0x36c49ec9,
+    0x6127a423, 0x36be1d4c, 0x61326329, 0x36b799b3,
+    0x613d20e8, 0x36b113fd, 0x6147dd5f, 0x36aa8c2c,
+    0x6152988d, 0x36a4023f, 0x615d5273, 0x369d7637,
+    0x61680b0f, 0x3696e814, 0x6172c262, 0x369057d6,
+    0x617d786a, 0x3689c57d, 0x61882d28, 0x3683310b,
+    0x6192e09b, 0x367c9a7e, 0x619d92c2, 0x367601d7,
+    0x61a8439e, 0x366f6717, 0x61b2f32e, 0x3668ca3e,
+    0x61bda171, 0x36622b4c, 0x61c84e67, 0x365b8a41,
+    0x61d2fa0f, 0x3654e71d, 0x61dda46a, 0x364e41e2,
+    0x61e84d76, 0x36479a8e, 0x61f2f534, 0x3640f123,
+    0x61fd9ba3, 0x363a45a0, 0x620840c2, 0x36339806,
+    0x6212e492, 0x362ce855, 0x621d8711, 0x3626368d,
+    0x6228283f, 0x361f82af, 0x6232c81c, 0x3618ccba,
+    0x623d66a8, 0x361214b0, 0x624803e2, 0x360b5a90,
+    0x62529fca, 0x36049e5b, 0x625d3a5e, 0x35fde011,
+    0x6267d3a0, 0x35f71fb1, 0x62726b8e, 0x35f05d3d,
+    0x627d0228, 0x35e998b5, 0x6287976e, 0x35e2d219,
+    0x62922b5e, 0x35dc0968, 0x629cbdfa, 0x35d53ea5,
+    0x62a74f40, 0x35ce71ce, 0x62b1df30, 0x35c7a2e3,
+    0x62bc6dca, 0x35c0d1e7, 0x62c6fb0c, 0x35b9fed7,
+    0x62d186f8, 0x35b329b5, 0x62dc118c, 0x35ac5282,
+    0x62e69ac8, 0x35a5793c, 0x62f122ab, 0x359e9de5,
+    0x62fba936, 0x3597c07d, 0x63062e67, 0x3590e104,
+    0x6310b23e, 0x3589ff7a, 0x631b34bc, 0x35831be0,
+    0x6325b5df, 0x357c3636, 0x633035a7, 0x35754e7c,
+    0x633ab414, 0x356e64b2, 0x63453125, 0x356778d9,
+    0x634facda, 0x35608af1, 0x635a2733, 0x35599afa,
+    0x6364a02e, 0x3552a8f4, 0x636f17cc, 0x354bb4e1,
+    0x63798e0d, 0x3544bebf, 0x638402ef, 0x353dc68f,
+    0x638e7673, 0x3536cc52, 0x6398e898, 0x352fd008,
+    0x63a3595e, 0x3528d1b1, 0x63adc8c4, 0x3521d14d,
+    0x63b836ca, 0x351acedd, 0x63c2a36f, 0x3513ca60,
+    0x63cd0eb3, 0x350cc3d8, 0x63d77896, 0x3505bb44,
+    0x63e1e117, 0x34feb0a5, 0x63ec4837, 0x34f7a3fb,
+    0x63f6adf3, 0x34f09546, 0x6401124d, 0x34e98487,
+    0x640b7543, 0x34e271bd, 0x6415d6d5, 0x34db5cea,
+    0x64203704, 0x34d4460c, 0x642a95ce, 0x34cd2d26,
+    0x6434f332, 0x34c61236, 0x643f4f32, 0x34bef53d,
+    0x6449a9cc, 0x34b7d63c, 0x645402ff, 0x34b0b533,
+    0x645e5acc, 0x34a99221, 0x6468b132, 0x34a26d08,
+    0x64730631, 0x349b45e7, 0x647d59c8, 0x34941cbf,
+    0x6487abf7, 0x348cf190, 0x6491fcbe, 0x3485c45b,
+    0x649c4c1b, 0x347e951f, 0x64a69a0f, 0x347763dd,
+    0x64b0e699, 0x34703095, 0x64bb31ba, 0x3468fb47,
+    0x64c57b6f, 0x3461c3f5, 0x64cfc3ba, 0x345a8a9d,
+    0x64da0a9a, 0x34534f41, 0x64e4500e, 0x344c11e0,
+    0x64ee9415, 0x3444d27b, 0x64f8d6b0, 0x343d9112,
+    0x650317df, 0x34364da6, 0x650d57a0, 0x342f0836,
+    0x651795f3, 0x3427c0c3, 0x6521d2d8, 0x3420774d,
+    0x652c0e4f, 0x34192bd5, 0x65364857, 0x3411de5b,
+    0x654080ef, 0x340a8edf, 0x654ab818, 0x34033d61,
+    0x6554edd1, 0x33fbe9e2, 0x655f2219, 0x33f49462,
+    0x656954f1, 0x33ed3ce1, 0x65738657, 0x33e5e360,
+    0x657db64c, 0x33de87de, 0x6587e4cf, 0x33d72a5d,
+    0x659211df, 0x33cfcadc, 0x659c3d7c, 0x33c8695b,
+    0x65a667a7, 0x33c105db, 0x65b0905d, 0x33b9a05d,
+    0x65bab7a0, 0x33b238e0, 0x65c4dd6e, 0x33aacf65,
+    0x65cf01c8, 0x33a363ec, 0x65d924ac, 0x339bf675,
+    0x65e3461b, 0x33948701, 0x65ed6614, 0x338d1590,
+    0x65f78497, 0x3385a222, 0x6601a1a2, 0x337e2cb7,
+    0x660bbd37, 0x3376b551, 0x6615d754, 0x336f3bee,
+    0x661feffa, 0x3367c090, 0x662a0727, 0x33604336,
+    0x66341cdb, 0x3358c3e2, 0x663e3117, 0x33514292,
+    0x664843d9, 0x3349bf48, 0x66525521, 0x33423a04,
+    0x665c64ef, 0x333ab2c6, 0x66667342, 0x3333298f,
+    0x6670801a, 0x332b9e5e, 0x667a8b77, 0x33241134,
+    0x66849558, 0x331c8211, 0x668e9dbd, 0x3314f0f6,
+    0x6698a4a6, 0x330d5de3, 0x66a2aa11, 0x3305c8d7,
+    0x66acadff, 0x32fe31d5, 0x66b6b070, 0x32f698db,
+    0x66c0b162, 0x32eefdea, 0x66cab0d6, 0x32e76102,
+    0x66d4aecb, 0x32dfc224, 0x66deab41, 0x32d82150,
+    0x66e8a637, 0x32d07e85, 0x66f29fad, 0x32c8d9c6,
+    0x66fc97a3, 0x32c13311, 0x67068e18, 0x32b98a67,
+    0x6710830c, 0x32b1dfc9, 0x671a767e, 0x32aa3336,
+    0x6724686e, 0x32a284b0, 0x672e58dc, 0x329ad435,
+    0x673847c8, 0x329321c7, 0x67423530, 0x328b6d66,
+    0x674c2115, 0x3283b712, 0x67560b76, 0x327bfecc,
+    0x675ff452, 0x32744493, 0x6769dbaa, 0x326c8868,
+    0x6773c17d, 0x3264ca4c, 0x677da5cb, 0x325d0a3e,
+    0x67878893, 0x32554840, 0x679169d5, 0x324d8450,
+    0x679b4990, 0x3245be70, 0x67a527c4, 0x323df6a0,
+    0x67af0472, 0x32362ce0, 0x67b8df97, 0x322e6130,
+    0x67c2b934, 0x32269391, 0x67cc9149, 0x321ec403,
+    0x67d667d5, 0x3216f287, 0x67e03cd8, 0x320f1f1c,
+    0x67ea1052, 0x320749c3, 0x67f3e241, 0x31ff727c,
+    0x67fdb2a7, 0x31f79948, 0x68078181, 0x31efbe27,
+    0x68114ed0, 0x31e7e118, 0x681b1a94, 0x31e0021e,
+    0x6824e4cc, 0x31d82137, 0x682ead78, 0x31d03e64,
+    0x68387498, 0x31c859a5, 0x68423a2a, 0x31c072fb,
+    0x684bfe2f, 0x31b88a66, 0x6855c0a6, 0x31b09fe7,
+    0x685f8190, 0x31a8b37c, 0x686940ea, 0x31a0c528,
+    0x6872feb6, 0x3198d4ea, 0x687cbaf3, 0x3190e2c3,
+    0x688675a0, 0x3188eeb2, 0x68902ebd, 0x3180f8b8,
+    0x6899e64a, 0x317900d6, 0x68a39c46, 0x3171070c,
+    0x68ad50b1, 0x31690b59, 0x68b7038b, 0x31610dbf,
+    0x68c0b4d2, 0x31590e3e, 0x68ca6488, 0x31510cd5,
+    0x68d412ab, 0x31490986, 0x68ddbf3b, 0x31410450,
+    0x68e76a37, 0x3138fd35, 0x68f113a0, 0x3130f433,
+    0x68fabb75, 0x3128e94c, 0x690461b5, 0x3120dc80,
+    0x690e0661, 0x3118cdcf, 0x6917a977, 0x3110bd39,
+    0x69214af8, 0x3108aabf, 0x692aeae3, 0x31009661,
+    0x69348937, 0x30f8801f, 0x693e25f5, 0x30f067fb,
+    0x6947c11c, 0x30e84df3, 0x69515aab, 0x30e03208,
+    0x695af2a3, 0x30d8143b, 0x69648902, 0x30cff48c,
+    0x696e1dc9, 0x30c7d2fb, 0x6977b0f7, 0x30bfaf89,
+    0x6981428c, 0x30b78a36, 0x698ad287, 0x30af6302,
+    0x699460e8, 0x30a739ed, 0x699dedaf, 0x309f0ef8,
+    0x69a778db, 0x3096e223, 0x69b1026c, 0x308eb36f,
+    0x69ba8a61, 0x308682dc, 0x69c410ba, 0x307e5069,
+    0x69cd9578, 0x30761c18, 0x69d71899, 0x306de5e9,
+    0x69e09a1c, 0x3065addb, 0x69ea1a03, 0x305d73f0,
+    0x69f3984c, 0x30553828, 0x69fd14f6, 0x304cfa83,
+    0x6a069003, 0x3044bb00, 0x6a100970, 0x303c79a2,
+    0x6a19813f, 0x30343667, 0x6a22f76e, 0x302bf151,
+    0x6a2c6bfd, 0x3023aa5f, 0x6a35deeb, 0x301b6193,
+    0x6a3f503a, 0x301316eb, 0x6a48bfe7, 0x300aca69,
+    0x6a522df3, 0x30027c0c, 0x6a5b9a5d, 0x2ffa2bd6,
+    0x6a650525, 0x2ff1d9c7, 0x6a6e6e4b, 0x2fe985de,
+    0x6a77d5ce, 0x2fe1301c, 0x6a813bae, 0x2fd8d882,
+    0x6a8a9fea, 0x2fd07f0f, 0x6a940283, 0x2fc823c5,
+    0x6a9d6377, 0x2fbfc6a3, 0x6aa6c2c6, 0x2fb767aa,
+    0x6ab02071, 0x2faf06da, 0x6ab97c77, 0x2fa6a433,
+    0x6ac2d6d6, 0x2f9e3fb6, 0x6acc2f90, 0x2f95d963,
+    0x6ad586a3, 0x2f8d713a, 0x6adedc10, 0x2f85073c,
+    0x6ae82fd5, 0x2f7c9b69, 0x6af181f3, 0x2f742dc1,
+    0x6afad269, 0x2f6bbe45, 0x6b042137, 0x2f634cf5,
+    0x6b0d6e5c, 0x2f5ad9d1, 0x6b16b9d9, 0x2f5264da,
+    0x6b2003ac, 0x2f49ee0f, 0x6b294bd5, 0x2f417573,
+    0x6b329255, 0x2f38fb03, 0x6b3bd72a, 0x2f307ec2,
+    0x6b451a55, 0x2f2800af, 0x6b4e5bd4, 0x2f1f80ca,
+    0x6b579ba8, 0x2f16ff14, 0x6b60d9d0, 0x2f0e7b8e,
+    0x6b6a164d, 0x2f05f637, 0x6b73511c, 0x2efd6f10,
+    0x6b7c8a3f, 0x2ef4e619, 0x6b85c1b5, 0x2eec5b53,
+    0x6b8ef77d, 0x2ee3cebe, 0x6b982b97, 0x2edb405a,
+    0x6ba15e03, 0x2ed2b027, 0x6baa8ec0, 0x2eca1e27,
+    0x6bb3bdce, 0x2ec18a58, 0x6bbceb2d, 0x2eb8f4bc,
+    0x6bc616dd, 0x2eb05d53, 0x6bcf40dc, 0x2ea7c41e,
+    0x6bd8692b, 0x2e9f291b, 0x6be18fc9, 0x2e968c4d,
+    0x6beab4b6, 0x2e8dedb3, 0x6bf3d7f2, 0x2e854d4d,
+    0x6bfcf97c, 0x2e7cab1c, 0x6c061953, 0x2e740720,
+    0x6c0f3779, 0x2e6b615a, 0x6c1853eb, 0x2e62b9ca,
+    0x6c216eaa, 0x2e5a1070, 0x6c2a87b6, 0x2e51654c,
+    0x6c339f0e, 0x2e48b860, 0x6c3cb4b1, 0x2e4009aa,
+    0x6c45c8a0, 0x2e37592c, 0x6c4edada, 0x2e2ea6e6,
+    0x6c57eb5e, 0x2e25f2d8, 0x6c60fa2d, 0x2e1d3d03,
+    0x6c6a0746, 0x2e148566, 0x6c7312a9, 0x2e0bcc03,
+    0x6c7c1c55, 0x2e0310d9, 0x6c85244a, 0x2dfa53e9,
+    0x6c8e2a87, 0x2df19534, 0x6c972f0d, 0x2de8d4b8,
+    0x6ca031da, 0x2de01278, 0x6ca932ef, 0x2dd74e73,
+    0x6cb2324c, 0x2dce88aa, 0x6cbb2fef, 0x2dc5c11c,
+    0x6cc42bd9, 0x2dbcf7cb, 0x6ccd2609, 0x2db42cb6,
+    0x6cd61e7f, 0x2dab5fdf, 0x6cdf153a, 0x2da29144,
+    0x6ce80a3a, 0x2d99c0e7, 0x6cf0fd80, 0x2d90eec8,
+    0x6cf9ef09, 0x2d881ae8, 0x6d02ded7, 0x2d7f4545,
+    0x6d0bcce8, 0x2d766de2, 0x6d14b93d, 0x2d6d94bf,
+    0x6d1da3d5, 0x2d64b9da, 0x6d268cb0, 0x2d5bdd36,
+    0x6d2f73cd, 0x2d52fed2, 0x6d38592c, 0x2d4a1eaf,
+    0x6d413ccd, 0x2d413ccd, 0x6d4a1eaf, 0x2d38592c,
+    0x6d52fed2, 0x2d2f73cd, 0x6d5bdd36, 0x2d268cb0,
+    0x6d64b9da, 0x2d1da3d5, 0x6d6d94bf, 0x2d14b93d,
+    0x6d766de2, 0x2d0bcce8, 0x6d7f4545, 0x2d02ded7,
+    0x6d881ae8, 0x2cf9ef09, 0x6d90eec8, 0x2cf0fd80,
+    0x6d99c0e7, 0x2ce80a3a, 0x6da29144, 0x2cdf153a,
+    0x6dab5fdf, 0x2cd61e7f, 0x6db42cb6, 0x2ccd2609,
+    0x6dbcf7cb, 0x2cc42bd9, 0x6dc5c11c, 0x2cbb2fef,
+    0x6dce88aa, 0x2cb2324c, 0x6dd74e73, 0x2ca932ef,
+    0x6de01278, 0x2ca031da, 0x6de8d4b8, 0x2c972f0d,
+    0x6df19534, 0x2c8e2a87, 0x6dfa53e9, 0x2c85244a,
+    0x6e0310d9, 0x2c7c1c55, 0x6e0bcc03, 0x2c7312a9,
+    0x6e148566, 0x2c6a0746, 0x6e1d3d03, 0x2c60fa2d,
+    0x6e25f2d8, 0x2c57eb5e, 0x6e2ea6e6, 0x2c4edada,
+    0x6e37592c, 0x2c45c8a0, 0x6e4009aa, 0x2c3cb4b1,
+    0x6e48b860, 0x2c339f0e, 0x6e51654c, 0x2c2a87b6,
+    0x6e5a1070, 0x2c216eaa, 0x6e62b9ca, 0x2c1853eb,
+    0x6e6b615a, 0x2c0f3779, 0x6e740720, 0x2c061953,
+    0x6e7cab1c, 0x2bfcf97c, 0x6e854d4d, 0x2bf3d7f2,
+    0x6e8dedb3, 0x2beab4b6, 0x6e968c4d, 0x2be18fc9,
+    0x6e9f291b, 0x2bd8692b, 0x6ea7c41e, 0x2bcf40dc,
+    0x6eb05d53, 0x2bc616dd, 0x6eb8f4bc, 0x2bbceb2d,
+    0x6ec18a58, 0x2bb3bdce, 0x6eca1e27, 0x2baa8ec0,
+    0x6ed2b027, 0x2ba15e03, 0x6edb405a, 0x2b982b97,
+    0x6ee3cebe, 0x2b8ef77d, 0x6eec5b53, 0x2b85c1b5,
+    0x6ef4e619, 0x2b7c8a3f, 0x6efd6f10, 0x2b73511c,
+    0x6f05f637, 0x2b6a164d, 0x6f0e7b8e, 0x2b60d9d0,
+    0x6f16ff14, 0x2b579ba8, 0x6f1f80ca, 0x2b4e5bd4,
+    0x6f2800af, 0x2b451a55, 0x6f307ec2, 0x2b3bd72a,
+    0x6f38fb03, 0x2b329255, 0x6f417573, 0x2b294bd5,
+    0x6f49ee0f, 0x2b2003ac, 0x6f5264da, 0x2b16b9d9,
+    0x6f5ad9d1, 0x2b0d6e5c, 0x6f634cf5, 0x2b042137,
+    0x6f6bbe45, 0x2afad269, 0x6f742dc1, 0x2af181f3,
+    0x6f7c9b69, 0x2ae82fd5, 0x6f85073c, 0x2adedc10,
+    0x6f8d713a, 0x2ad586a3, 0x6f95d963, 0x2acc2f90,
+    0x6f9e3fb6, 0x2ac2d6d6, 0x6fa6a433, 0x2ab97c77,
+    0x6faf06da, 0x2ab02071, 0x6fb767aa, 0x2aa6c2c6,
+    0x6fbfc6a3, 0x2a9d6377, 0x6fc823c5, 0x2a940283,
+    0x6fd07f0f, 0x2a8a9fea, 0x6fd8d882, 0x2a813bae,
+    0x6fe1301c, 0x2a77d5ce, 0x6fe985de, 0x2a6e6e4b,
+    0x6ff1d9c7, 0x2a650525, 0x6ffa2bd6, 0x2a5b9a5d,
+    0x70027c0c, 0x2a522df3, 0x700aca69, 0x2a48bfe7,
+    0x701316eb, 0x2a3f503a, 0x701b6193, 0x2a35deeb,
+    0x7023aa5f, 0x2a2c6bfd, 0x702bf151, 0x2a22f76e,
+    0x70343667, 0x2a19813f, 0x703c79a2, 0x2a100970,
+    0x7044bb00, 0x2a069003, 0x704cfa83, 0x29fd14f6,
+    0x70553828, 0x29f3984c, 0x705d73f0, 0x29ea1a03,
+    0x7065addb, 0x29e09a1c, 0x706de5e9, 0x29d71899,
+    0x70761c18, 0x29cd9578, 0x707e5069, 0x29c410ba,
+    0x708682dc, 0x29ba8a61, 0x708eb36f, 0x29b1026c,
+    0x7096e223, 0x29a778db, 0x709f0ef8, 0x299dedaf,
+    0x70a739ed, 0x299460e8, 0x70af6302, 0x298ad287,
+    0x70b78a36, 0x2981428c, 0x70bfaf89, 0x2977b0f7,
+    0x70c7d2fb, 0x296e1dc9, 0x70cff48c, 0x29648902,
+    0x70d8143b, 0x295af2a3, 0x70e03208, 0x29515aab,
+    0x70e84df3, 0x2947c11c, 0x70f067fb, 0x293e25f5,
+    0x70f8801f, 0x29348937, 0x71009661, 0x292aeae3,
+    0x7108aabf, 0x29214af8, 0x7110bd39, 0x2917a977,
+    0x7118cdcf, 0x290e0661, 0x7120dc80, 0x290461b5,
+    0x7128e94c, 0x28fabb75, 0x7130f433, 0x28f113a0,
+    0x7138fd35, 0x28e76a37, 0x71410450, 0x28ddbf3b,
+    0x71490986, 0x28d412ab, 0x71510cd5, 0x28ca6488,
+    0x71590e3e, 0x28c0b4d2, 0x71610dbf, 0x28b7038b,
+    0x71690b59, 0x28ad50b1, 0x7171070c, 0x28a39c46,
+    0x717900d6, 0x2899e64a, 0x7180f8b8, 0x28902ebd,
+    0x7188eeb2, 0x288675a0, 0x7190e2c3, 0x287cbaf3,
+    0x7198d4ea, 0x2872feb6, 0x71a0c528, 0x286940ea,
+    0x71a8b37c, 0x285f8190, 0x71b09fe7, 0x2855c0a6,
+    0x71b88a66, 0x284bfe2f, 0x71c072fb, 0x28423a2a,
+    0x71c859a5, 0x28387498, 0x71d03e64, 0x282ead78,
+    0x71d82137, 0x2824e4cc, 0x71e0021e, 0x281b1a94,
+    0x71e7e118, 0x28114ed0, 0x71efbe27, 0x28078181,
+    0x71f79948, 0x27fdb2a7, 0x71ff727c, 0x27f3e241,
+    0x720749c3, 0x27ea1052, 0x720f1f1c, 0x27e03cd8,
+    0x7216f287, 0x27d667d5, 0x721ec403, 0x27cc9149,
+    0x72269391, 0x27c2b934, 0x722e6130, 0x27b8df97,
+    0x72362ce0, 0x27af0472, 0x723df6a0, 0x27a527c4,
+    0x7245be70, 0x279b4990, 0x724d8450, 0x279169d5,
+    0x72554840, 0x27878893, 0x725d0a3e, 0x277da5cb,
+    0x7264ca4c, 0x2773c17d, 0x726c8868, 0x2769dbaa,
+    0x72744493, 0x275ff452, 0x727bfecc, 0x27560b76,
+    0x7283b712, 0x274c2115, 0x728b6d66, 0x27423530,
+    0x729321c7, 0x273847c8, 0x729ad435, 0x272e58dc,
+    0x72a284b0, 0x2724686e, 0x72aa3336, 0x271a767e,
+    0x72b1dfc9, 0x2710830c, 0x72b98a67, 0x27068e18,
+    0x72c13311, 0x26fc97a3, 0x72c8d9c6, 0x26f29fad,
+    0x72d07e85, 0x26e8a637, 0x72d82150, 0x26deab41,
+    0x72dfc224, 0x26d4aecb, 0x72e76102, 0x26cab0d6,
+    0x72eefdea, 0x26c0b162, 0x72f698db, 0x26b6b070,
+    0x72fe31d5, 0x26acadff, 0x7305c8d7, 0x26a2aa11,
+    0x730d5de3, 0x2698a4a6, 0x7314f0f6, 0x268e9dbd,
+    0x731c8211, 0x26849558, 0x73241134, 0x267a8b77,
+    0x732b9e5e, 0x2670801a, 0x7333298f, 0x26667342,
+    0x733ab2c6, 0x265c64ef, 0x73423a04, 0x26525521,
+    0x7349bf48, 0x264843d9, 0x73514292, 0x263e3117,
+    0x7358c3e2, 0x26341cdb, 0x73604336, 0x262a0727,
+    0x7367c090, 0x261feffa, 0x736f3bee, 0x2615d754,
+    0x7376b551, 0x260bbd37, 0x737e2cb7, 0x2601a1a2,
+    0x7385a222, 0x25f78497, 0x738d1590, 0x25ed6614,
+    0x73948701, 0x25e3461b, 0x739bf675, 0x25d924ac,
+    0x73a363ec, 0x25cf01c8, 0x73aacf65, 0x25c4dd6e,
+    0x73b238e0, 0x25bab7a0, 0x73b9a05d, 0x25b0905d,
+    0x73c105db, 0x25a667a7, 0x73c8695b, 0x259c3d7c,
+    0x73cfcadc, 0x259211df, 0x73d72a5d, 0x2587e4cf,
+    0x73de87de, 0x257db64c, 0x73e5e360, 0x25738657,
+    0x73ed3ce1, 0x256954f1, 0x73f49462, 0x255f2219,
+    0x73fbe9e2, 0x2554edd1, 0x74033d61, 0x254ab818,
+    0x740a8edf, 0x254080ef, 0x7411de5b, 0x25364857,
+    0x74192bd5, 0x252c0e4f, 0x7420774d, 0x2521d2d8,
+    0x7427c0c3, 0x251795f3, 0x742f0836, 0x250d57a0,
+    0x74364da6, 0x250317df, 0x743d9112, 0x24f8d6b0,
+    0x7444d27b, 0x24ee9415, 0x744c11e0, 0x24e4500e,
+    0x74534f41, 0x24da0a9a, 0x745a8a9d, 0x24cfc3ba,
+    0x7461c3f5, 0x24c57b6f, 0x7468fb47, 0x24bb31ba,
+    0x74703095, 0x24b0e699, 0x747763dd, 0x24a69a0f,
+    0x747e951f, 0x249c4c1b, 0x7485c45b, 0x2491fcbe,
+    0x748cf190, 0x2487abf7, 0x74941cbf, 0x247d59c8,
+    0x749b45e7, 0x24730631, 0x74a26d08, 0x2468b132,
+    0x74a99221, 0x245e5acc, 0x74b0b533, 0x245402ff,
+    0x74b7d63c, 0x2449a9cc, 0x74bef53d, 0x243f4f32,
+    0x74c61236, 0x2434f332, 0x74cd2d26, 0x242a95ce,
+    0x74d4460c, 0x24203704, 0x74db5cea, 0x2415d6d5,
+    0x74e271bd, 0x240b7543, 0x74e98487, 0x2401124d,
+    0x74f09546, 0x23f6adf3, 0x74f7a3fb, 0x23ec4837,
+    0x74feb0a5, 0x23e1e117, 0x7505bb44, 0x23d77896,
+    0x750cc3d8, 0x23cd0eb3, 0x7513ca60, 0x23c2a36f,
+    0x751acedd, 0x23b836ca, 0x7521d14d, 0x23adc8c4,
+    0x7528d1b1, 0x23a3595e, 0x752fd008, 0x2398e898,
+    0x7536cc52, 0x238e7673, 0x753dc68f, 0x238402ef,
+    0x7544bebf, 0x23798e0d, 0x754bb4e1, 0x236f17cc,
+    0x7552a8f4, 0x2364a02e, 0x75599afa, 0x235a2733,
+    0x75608af1, 0x234facda, 0x756778d9, 0x23453125,
+    0x756e64b2, 0x233ab414, 0x75754e7c, 0x233035a7,
+    0x757c3636, 0x2325b5df, 0x75831be0, 0x231b34bc,
+    0x7589ff7a, 0x2310b23e, 0x7590e104, 0x23062e67,
+    0x7597c07d, 0x22fba936, 0x759e9de5, 0x22f122ab,
+    0x75a5793c, 0x22e69ac8, 0x75ac5282, 0x22dc118c,
+    0x75b329b5, 0x22d186f8, 0x75b9fed7, 0x22c6fb0c,
+    0x75c0d1e7, 0x22bc6dca, 0x75c7a2e3, 0x22b1df30,
+    0x75ce71ce, 0x22a74f40, 0x75d53ea5, 0x229cbdfa,
+    0x75dc0968, 0x22922b5e, 0x75e2d219, 0x2287976e,
+    0x75e998b5, 0x227d0228, 0x75f05d3d, 0x22726b8e,
+    0x75f71fb1, 0x2267d3a0, 0x75fde011, 0x225d3a5e,
+    0x76049e5b, 0x22529fca, 0x760b5a90, 0x224803e2,
+    0x761214b0, 0x223d66a8, 0x7618ccba, 0x2232c81c,
+    0x761f82af, 0x2228283f, 0x7626368d, 0x221d8711,
+    0x762ce855, 0x2212e492, 0x76339806, 0x220840c2,
+    0x763a45a0, 0x21fd9ba3, 0x7640f123, 0x21f2f534,
+    0x76479a8e, 0x21e84d76, 0x764e41e2, 0x21dda46a,
+    0x7654e71d, 0x21d2fa0f, 0x765b8a41, 0x21c84e67,
+    0x76622b4c, 0x21bda171, 0x7668ca3e, 0x21b2f32e,
+    0x766f6717, 0x21a8439e, 0x767601d7, 0x219d92c2,
+    0x767c9a7e, 0x2192e09b, 0x7683310b, 0x21882d28,
+    0x7689c57d, 0x217d786a, 0x769057d6, 0x2172c262,
+    0x7696e814, 0x21680b0f, 0x769d7637, 0x215d5273,
+    0x76a4023f, 0x2152988d, 0x76aa8c2c, 0x2147dd5f,
+    0x76b113fd, 0x213d20e8, 0x76b799b3, 0x21326329,
+    0x76be1d4c, 0x2127a423, 0x76c49ec9, 0x211ce3d5,
+    0x76cb1e2a, 0x21122240, 0x76d19b6e, 0x21075f65,
+    0x76d81695, 0x20fc9b44, 0x76de8f9e, 0x20f1d5de,
+    0x76e5068a, 0x20e70f32, 0x76eb7b58, 0x20dc4742,
+    0x76f1ee09, 0x20d17e0d, 0x76f85e9a, 0x20c6b395,
+    0x76fecd0e, 0x20bbe7d8, 0x77053962, 0x20b11ad9,
+    0x770ba398, 0x20a64c97, 0x77120bae, 0x209b7d13,
+    0x771871a5, 0x2090ac4d, 0x771ed57c, 0x2085da46,
+    0x77253733, 0x207b06fe, 0x772b96ca, 0x20703275,
+    0x7731f440, 0x20655cac, 0x77384f95, 0x205a85a3,
+    0x773ea8ca, 0x204fad5b, 0x7744ffdd, 0x2044d3d4,
+    0x774b54ce, 0x2039f90f, 0x7751a79e, 0x202f1d0b,
+    0x7757f84c, 0x20243fca, 0x775e46d8, 0x2019614c,
+    0x77649341, 0x200e8190, 0x776add88, 0x2003a099,
+    0x777125ac, 0x1ff8be65, 0x77776bac, 0x1feddaf6,
+    0x777daf89, 0x1fe2f64c, 0x7783f143, 0x1fd81067,
+    0x778a30d8, 0x1fcd2948, 0x77906e49, 0x1fc240ef,
+    0x7796a996, 0x1fb7575c, 0x779ce2be, 0x1fac6c91,
+    0x77a319c2, 0x1fa1808c, 0x77a94ea0, 0x1f969350,
+    0x77af8159, 0x1f8ba4dc, 0x77b5b1ec, 0x1f80b531,
+    0x77bbe05a, 0x1f75c44e, 0x77c20ca1, 0x1f6ad235,
+    0x77c836c2, 0x1f5fdee6, 0x77ce5ebd, 0x1f54ea62,
+    0x77d48490, 0x1f49f4a8, 0x77daa83d, 0x1f3efdb9,
+    0x77e0c9c3, 0x1f340596, 0x77e6e921, 0x1f290c3f,
+    0x77ed0657, 0x1f1e11b5, 0x77f32165, 0x1f1315f7,
+    0x77f93a4b, 0x1f081907, 0x77ff5109, 0x1efd1ae4,
+    0x7805659e, 0x1ef21b90, 0x780b780a, 0x1ee71b0a,
+    0x7811884d, 0x1edc1953, 0x78179666, 0x1ed1166b,
+    0x781da256, 0x1ec61254, 0x7823ac1d, 0x1ebb0d0d,
+    0x7829b3b9, 0x1eb00696, 0x782fb92a, 0x1ea4fef0,
+    0x7835bc71, 0x1e99f61d, 0x783bbd8e, 0x1e8eec1b,
+    0x7841bc7f, 0x1e83e0eb, 0x7847b946, 0x1e78d48e,
+    0x784db3e0, 0x1e6dc705, 0x7853ac4f, 0x1e62b84f,
+    0x7859a292, 0x1e57a86d, 0x785f96a9, 0x1e4c9760,
+    0x78658894, 0x1e418528, 0x786b7852, 0x1e3671c5,
+    0x787165e3, 0x1e2b5d38, 0x78775147, 0x1e204781,
+    0x787d3a7e, 0x1e1530a1, 0x78832187, 0x1e0a1898,
+    0x78890663, 0x1dfeff67, 0x788ee910, 0x1df3e50d,
+    0x7894c98f, 0x1de8c98c, 0x789aa7e0, 0x1dddace4,
+    0x78a08402, 0x1dd28f15, 0x78a65df6, 0x1dc7701f,
+    0x78ac35ba, 0x1dbc5004, 0x78b20b4f, 0x1db12ec3,
+    0x78b7deb4, 0x1da60c5d, 0x78bdafea, 0x1d9ae8d2,
+    0x78c37eef, 0x1d8fc424, 0x78c94bc4, 0x1d849e51,
+    0x78cf1669, 0x1d79775c, 0x78d4dedd, 0x1d6e4f43,
+    0x78daa520, 0x1d632608, 0x78e06932, 0x1d57fbaa,
+    0x78e62b13, 0x1d4cd02c, 0x78ebeac2, 0x1d41a38c,
+    0x78f1a840, 0x1d3675cb, 0x78f7638b, 0x1d2b46ea,
+    0x78fd1ca4, 0x1d2016e9, 0x7902d38b, 0x1d14e5c9,
+    0x7908883f, 0x1d09b389, 0x790e3ac0, 0x1cfe802b,
+    0x7913eb0e, 0x1cf34baf, 0x79199929, 0x1ce81615,
+    0x791f4510, 0x1cdcdf5e, 0x7924eec3, 0x1cd1a78a,
+    0x792a9642, 0x1cc66e99, 0x79303b8e, 0x1cbb348d,
+    0x7935dea4, 0x1caff965, 0x793b7f86, 0x1ca4bd21,
+    0x79411e33, 0x1c997fc4, 0x7946baac, 0x1c8e414b,
+    0x794c54ee, 0x1c8301b9, 0x7951ecfc, 0x1c77c10e,
+    0x795782d3, 0x1c6c7f4a, 0x795d1675, 0x1c613c6d,
+    0x7962a7e0, 0x1c55f878, 0x79683715, 0x1c4ab36b,
+    0x796dc414, 0x1c3f6d47, 0x79734edc, 0x1c34260c,
+    0x7978d76c, 0x1c28ddbb, 0x797e5dc6, 0x1c1d9454,
+    0x7983e1e8, 0x1c1249d8, 0x798963d2, 0x1c06fe46,
+    0x798ee385, 0x1bfbb1a0, 0x799460ff, 0x1bf063e6,
+    0x7999dc42, 0x1be51518, 0x799f554b, 0x1bd9c537,
+    0x79a4cc1c, 0x1bce7442, 0x79aa40b4, 0x1bc3223c,
+    0x79afb313, 0x1bb7cf23, 0x79b52339, 0x1bac7af9,
+    0x79ba9125, 0x1ba125bd, 0x79bffcd7, 0x1b95cf71,
+    0x79c5664f, 0x1b8a7815, 0x79cacd8d, 0x1b7f1fa9,
+    0x79d03291, 0x1b73c62d, 0x79d5955a, 0x1b686ba3,
+    0x79daf5e8, 0x1b5d100a, 0x79e0543c, 0x1b51b363,
+    0x79e5b054, 0x1b4655ae, 0x79eb0a31, 0x1b3af6ec,
+    0x79f061d2, 0x1b2f971e, 0x79f5b737, 0x1b243643,
+    0x79fb0a60, 0x1b18d45c, 0x7a005b4d, 0x1b0d716a,
+    0x7a05a9fd, 0x1b020d6c, 0x7a0af671, 0x1af6a865,
+    0x7a1040a8, 0x1aeb4253, 0x7a1588a2, 0x1adfdb37,
+    0x7a1ace5f, 0x1ad47312, 0x7a2011de, 0x1ac909e5,
+    0x7a25531f, 0x1abd9faf, 0x7a2a9223, 0x1ab23471,
+    0x7a2fcee8, 0x1aa6c82b, 0x7a350970, 0x1a9b5adf,
+    0x7a3a41b9, 0x1a8fec8c, 0x7a3f77c3, 0x1a847d33,
+    0x7a44ab8e, 0x1a790cd4, 0x7a49dd1a, 0x1a6d9b70,
+    0x7a4f0c67, 0x1a622907, 0x7a543974, 0x1a56b599,
+    0x7a596442, 0x1a4b4128, 0x7a5e8cd0, 0x1a3fcbb3,
+    0x7a63b31d, 0x1a34553b, 0x7a68d72b, 0x1a28ddc0,
+    0x7a6df8f8, 0x1a1d6544, 0x7a731884, 0x1a11ebc5,
+    0x7a7835cf, 0x1a067145, 0x7a7d50da, 0x19faf5c5,
+    0x7a8269a3, 0x19ef7944, 0x7a87802a, 0x19e3fbc3,
+    0x7a8c9470, 0x19d87d42, 0x7a91a674, 0x19ccfdc2,
+    0x7a96b636, 0x19c17d44, 0x7a9bc3b6, 0x19b5fbc8,
+    0x7aa0cef3, 0x19aa794d, 0x7aa5d7ee, 0x199ef5d6,
+    0x7aaadea6, 0x19937161, 0x7aafe31b, 0x1987ebf0,
+    0x7ab4e54c, 0x197c6584, 0x7ab9e53a, 0x1970de1b,
+    0x7abee2e5, 0x196555b8, 0x7ac3de4c, 0x1959cc5a,
+    0x7ac8d76f, 0x194e4201, 0x7acdce4d, 0x1942b6af,
+    0x7ad2c2e8, 0x19372a64, 0x7ad7b53d, 0x192b9d1f,
+    0x7adca54e, 0x19200ee3, 0x7ae1931a, 0x19147fae,
+    0x7ae67ea1, 0x1908ef82, 0x7aeb67e3, 0x18fd5e5f,
+    0x7af04edf, 0x18f1cc45, 0x7af53395, 0x18e63935,
+    0x7afa1605, 0x18daa52f, 0x7afef630, 0x18cf1034,
+    0x7b03d414, 0x18c37a44, 0x7b08afb2, 0x18b7e35f,
+    0x7b0d8909, 0x18ac4b87, 0x7b126019, 0x18a0b2bb,
+    0x7b1734e2, 0x189518fc, 0x7b1c0764, 0x18897e4a,
+    0x7b20d79e, 0x187de2a7, 0x7b25a591, 0x18724611,
+    0x7b2a713d, 0x1866a88a, 0x7b2f3aa0, 0x185b0a13,
+    0x7b3401bb, 0x184f6aab, 0x7b38c68e, 0x1843ca53,
+    0x7b3d8918, 0x1838290c, 0x7b42495a, 0x182c86d5,
+    0x7b470753, 0x1820e3b0, 0x7b4bc303, 0x18153f9d,
+    0x7b507c69, 0x18099a9c, 0x7b553386, 0x17fdf4ae,
+    0x7b59e85a, 0x17f24dd3, 0x7b5e9ae4, 0x17e6a60c,
+    0x7b634b23, 0x17dafd59, 0x7b67f919, 0x17cf53bb,
+    0x7b6ca4c4, 0x17c3a931, 0x7b714e25, 0x17b7fdbd,
+    0x7b75f53c, 0x17ac515f, 0x7b7a9a07, 0x17a0a417,
+    0x7b7f3c87, 0x1794f5e6, 0x7b83dcbc, 0x178946cc,
+    0x7b887aa6, 0x177d96ca, 0x7b8d1644, 0x1771e5e0,
+    0x7b91af97, 0x1766340f, 0x7b96469d, 0x175a8157,
+    0x7b9adb57, 0x174ecdb8, 0x7b9f6dc5, 0x17431933,
+    0x7ba3fde7, 0x173763c9, 0x7ba88bbc, 0x172bad7a,
+    0x7bad1744, 0x171ff646, 0x7bb1a080, 0x17143e2d,
+    0x7bb6276e, 0x17088531, 0x7bbaac0e, 0x16fccb51,
+    0x7bbf2e62, 0x16f1108f, 0x7bc3ae67, 0x16e554ea,
+    0x7bc82c1f, 0x16d99864, 0x7bcca789, 0x16cddafb,
+    0x7bd120a4, 0x16c21cb2, 0x7bd59771, 0x16b65d88,
+    0x7bda0bf0, 0x16aa9d7e, 0x7bde7e20, 0x169edc94,
+    0x7be2ee01, 0x16931acb, 0x7be75b93, 0x16875823,
+    0x7bebc6d5, 0x167b949d, 0x7bf02fc9, 0x166fd039,
+    0x7bf4966c, 0x16640af7, 0x7bf8fac0, 0x165844d8,
+    0x7bfd5cc4, 0x164c7ddd, 0x7c01bc78, 0x1640b606,
+    0x7c0619dc, 0x1634ed53, 0x7c0a74f0, 0x162923c5,
+    0x7c0ecdb2, 0x161d595d, 0x7c132424, 0x16118e1a,
+    0x7c177845, 0x1605c1fd, 0x7c1bca16, 0x15f9f507,
+    0x7c201994, 0x15ee2738, 0x7c2466c2, 0x15e25890,
+    0x7c28b19e, 0x15d68911, 0x7c2cfa28, 0x15cab8ba,
+    0x7c314060, 0x15bee78c, 0x7c358446, 0x15b31587,
+    0x7c39c5da, 0x15a742ac, 0x7c3e051b, 0x159b6efb,
+    0x7c42420a, 0x158f9a76, 0x7c467ca6, 0x1583c51b,
+    0x7c4ab4ef, 0x1577eeec, 0x7c4eeae5, 0x156c17e9,
+    0x7c531e88, 0x15604013, 0x7c574fd8, 0x1554676a,
+    0x7c5b7ed4, 0x15488dee, 0x7c5fab7c, 0x153cb3a0,
+    0x7c63d5d1, 0x1530d881, 0x7c67fdd1, 0x1524fc90,
+    0x7c6c237e, 0x15191fcf, 0x7c7046d6, 0x150d423d,
+    0x7c7467d9, 0x150163dc, 0x7c788688, 0x14f584ac,
+    0x7c7ca2e2, 0x14e9a4ac, 0x7c80bce7, 0x14ddc3de,
+    0x7c84d496, 0x14d1e242, 0x7c88e9f1, 0x14c5ffd9,
+    0x7c8cfcf6, 0x14ba1ca3, 0x7c910da5, 0x14ae38a0,
+    0x7c951bff, 0x14a253d1, 0x7c992803, 0x14966e36,
+    0x7c9d31b0, 0x148a87d1, 0x7ca13908, 0x147ea0a0,
+    0x7ca53e09, 0x1472b8a5, 0x7ca940b3, 0x1466cfe1,
+    0x7cad4107, 0x145ae653, 0x7cb13f04, 0x144efbfc,
+    0x7cb53aaa, 0x144310dd, 0x7cb933f9, 0x143724f5,
+    0x7cbd2af0, 0x142b3846, 0x7cc11f90, 0x141f4ad1,
+    0x7cc511d9, 0x14135c94, 0x7cc901c9, 0x14076d91,
+    0x7cccef62, 0x13fb7dc9, 0x7cd0daa2, 0x13ef8d3c,
+    0x7cd4c38b, 0x13e39be9, 0x7cd8aa1b, 0x13d7a9d3,
+    0x7cdc8e52, 0x13cbb6f8, 0x7ce07031, 0x13bfc35b,
+    0x7ce44fb7, 0x13b3cefa, 0x7ce82ce4, 0x13a7d9d7,
+    0x7cec07b8, 0x139be3f2, 0x7cefe032, 0x138fed4b,
+    0x7cf3b653, 0x1383f5e3, 0x7cf78a1b, 0x1377fdbb,
+    0x7cfb5b89, 0x136c04d2, 0x7cff2a9d, 0x13600b2a,
+    0x7d02f757, 0x135410c3, 0x7d06c1b6, 0x1348159d,
+    0x7d0a89bc, 0x133c19b8, 0x7d0e4f67, 0x13301d16,
+    0x7d1212b7, 0x13241fb6, 0x7d15d3ad, 0x1318219a,
+    0x7d199248, 0x130c22c1, 0x7d1d4e88, 0x1300232c,
+    0x7d21086c, 0x12f422db, 0x7d24bff6, 0x12e821cf,
+    0x7d287523, 0x12dc2009, 0x7d2c27f6, 0x12d01d89,
+    0x7d2fd86c, 0x12c41a4f, 0x7d338687, 0x12b8165b,
+    0x7d373245, 0x12ac11af, 0x7d3adba7, 0x12a00c4b,
+    0x7d3e82ae, 0x1294062f, 0x7d422757, 0x1287ff5b,
+    0x7d45c9a4, 0x127bf7d1, 0x7d496994, 0x126fef90,
+    0x7d4d0728, 0x1263e699, 0x7d50a25e, 0x1257dced,
+    0x7d543b37, 0x124bd28c, 0x7d57d1b3, 0x123fc776,
+    0x7d5b65d2, 0x1233bbac, 0x7d5ef793, 0x1227af2e,
+    0x7d6286f6, 0x121ba1fd, 0x7d6613fb, 0x120f941a,
+    0x7d699ea3, 0x12038584, 0x7d6d26ec, 0x11f7763c,
+    0x7d70acd7, 0x11eb6643, 0x7d743064, 0x11df5599,
+    0x7d77b192, 0x11d3443f, 0x7d7b3061, 0x11c73235,
+    0x7d7eacd2, 0x11bb1f7c, 0x7d8226e4, 0x11af0c13,
+    0x7d859e96, 0x11a2f7fc, 0x7d8913ea, 0x1196e337,
+    0x7d8c86de, 0x118acdc4, 0x7d8ff772, 0x117eb7a4,
+    0x7d9365a8, 0x1172a0d7, 0x7d96d17d, 0x1166895f,
+    0x7d9a3af2, 0x115a713a, 0x7d9da208, 0x114e586a,
+    0x7da106bd, 0x11423ef0, 0x7da46912, 0x113624cb,
+    0x7da7c907, 0x112a09fc, 0x7dab269b, 0x111dee84,
+    0x7dae81cf, 0x1111d263, 0x7db1daa2, 0x1105b599,
+    0x7db53113, 0x10f99827, 0x7db88524, 0x10ed7a0e,
+    0x7dbbd6d4, 0x10e15b4e, 0x7dbf2622, 0x10d53be7,
+    0x7dc2730f, 0x10c91bda, 0x7dc5bd9b, 0x10bcfb28,
+    0x7dc905c5, 0x10b0d9d0, 0x7dcc4b8d, 0x10a4b7d3,
+    0x7dcf8ef3, 0x10989532, 0x7dd2cff7, 0x108c71ee,
+    0x7dd60e99, 0x10804e06, 0x7dd94ad8, 0x1074297b,
+    0x7ddc84b5, 0x1068044e, 0x7ddfbc30, 0x105bde7f,
+    0x7de2f148, 0x104fb80e, 0x7de623fd, 0x104390fd,
+    0x7de9544f, 0x1037694b, 0x7dec823e, 0x102b40f8,
+    0x7defadca, 0x101f1807, 0x7df2d6f3, 0x1012ee76,
+    0x7df5fdb8, 0x1006c446, 0x7df9221a, 0xffa9979,
+    0x7dfc4418, 0xfee6e0d, 0x7dff63b2, 0xfe24205,
+    0x7e0280e9, 0xfd6155f, 0x7e059bbb, 0xfc9e81e,
+    0x7e08b42a, 0xfbdba40, 0x7e0bca34, 0xfb18bc8,
+    0x7e0eddd9, 0xfa55cb4, 0x7e11ef1b, 0xf992d06,
+    0x7e14fdf7, 0xf8cfcbe, 0x7e180a6f, 0xf80cbdc,
+    0x7e1b1482, 0xf749a61, 0x7e1e1c30, 0xf68684e,
+    0x7e212179, 0xf5c35a3, 0x7e24245d, 0xf500260,
+    0x7e2724db, 0xf43ce86, 0x7e2a22f4, 0xf379a16,
+    0x7e2d1ea8, 0xf2b650f, 0x7e3017f6, 0xf1f2f73,
+    0x7e330ede, 0xf12f941, 0x7e360360, 0xf06c27a,
+    0x7e38f57c, 0xefa8b20, 0x7e3be532, 0xeee5331,
+    0x7e3ed282, 0xee21aaf, 0x7e41bd6c, 0xed5e19a,
+    0x7e44a5ef, 0xec9a7f3, 0x7e478c0b, 0xebd6db9,
+    0x7e4a6fc1, 0xeb132ef, 0x7e4d5110, 0xea4f793,
+    0x7e502ff9, 0xe98bba7, 0x7e530c7a, 0xe8c7f2a,
+    0x7e55e694, 0xe80421e, 0x7e58be47, 0xe740483,
+    0x7e5b9392, 0xe67c65a, 0x7e5e6676, 0xe5b87a2,
+    0x7e6136f3, 0xe4f485c, 0x7e640507, 0xe430889,
+    0x7e66d0b4, 0xe36c82a, 0x7e6999fa, 0xe2a873e,
+    0x7e6c60d7, 0xe1e45c6, 0x7e6f254c, 0xe1203c3,
+    0x7e71e759, 0xe05c135, 0x7e74a6fd, 0xdf97e1d,
+    0x7e77643a, 0xded3a7b, 0x7e7a1f0d, 0xde0f64f,
+    0x7e7cd778, 0xdd4b19a, 0x7e7f8d7b, 0xdc86c5d,
+    0x7e824114, 0xdbc2698, 0x7e84f245, 0xdafe04b,
+    0x7e87a10c, 0xda39978, 0x7e8a4d6a, 0xd97521d,
+    0x7e8cf75f, 0xd8b0a3d, 0x7e8f9eeb, 0xd7ec1d6,
+    0x7e92440d, 0xd7278eb, 0x7e94e6c6, 0xd662f7b,
+    0x7e978715, 0xd59e586, 0x7e9a24fb, 0xd4d9b0e,
+    0x7e9cc076, 0xd415013, 0x7e9f5988, 0xd350495,
+    0x7ea1f02f, 0xd28b894, 0x7ea4846c, 0xd1c6c11,
+    0x7ea7163f, 0xd101f0e, 0x7ea9a5a8, 0xd03d189,
+    0x7eac32a6, 0xcf78383, 0x7eaebd3a, 0xceb34fe,
+    0x7eb14563, 0xcdee5f9, 0x7eb3cb21, 0xcd29676,
+    0x7eb64e75, 0xcc64673, 0x7eb8cf5d, 0xcb9f5f3,
+    0x7ebb4ddb, 0xcada4f5, 0x7ebdc9ed, 0xca1537a,
+    0x7ec04394, 0xc950182, 0x7ec2bad0, 0xc88af0e,
+    0x7ec52fa0, 0xc7c5c1e, 0x7ec7a205, 0xc7008b3,
+    0x7eca11fe, 0xc63b4ce, 0x7ecc7f8b, 0xc57606e,
+    0x7eceeaad, 0xc4b0b94, 0x7ed15363, 0xc3eb641,
+    0x7ed3b9ad, 0xc326075, 0x7ed61d8a, 0xc260a31,
+    0x7ed87efc, 0xc19b374, 0x7edade01, 0xc0d5c41,
+    0x7edd3a9a, 0xc010496, 0x7edf94c7, 0xbf4ac75,
+    0x7ee1ec87, 0xbe853de, 0x7ee441da, 0xbdbfad1,
+    0x7ee694c1, 0xbcfa150, 0x7ee8e53a, 0xbc34759,
+    0x7eeb3347, 0xbb6ecef, 0x7eed7ee7, 0xbaa9211,
+    0x7eefc81a, 0xb9e36c0, 0x7ef20ee0, 0xb91dafc,
+    0x7ef45338, 0xb857ec7, 0x7ef69523, 0xb79221f,
+    0x7ef8d4a1, 0xb6cc506, 0x7efb11b1, 0xb60677c,
+    0x7efd4c54, 0xb540982, 0x7eff8489, 0xb47ab19,
+    0x7f01ba50, 0xb3b4c40, 0x7f03eda9, 0xb2eecf8,
+    0x7f061e95, 0xb228d42, 0x7f084d12, 0xb162d1d,
+    0x7f0a7921, 0xb09cc8c, 0x7f0ca2c2, 0xafd6b8d,
+    0x7f0ec9f5, 0xaf10a22, 0x7f10eeb9, 0xae4a84b,
+    0x7f13110f, 0xad84609, 0x7f1530f7, 0xacbe35b,
+    0x7f174e70, 0xabf8043, 0x7f19697a, 0xab31cc1,
+    0x7f1b8215, 0xaa6b8d5, 0x7f1d9842, 0xa9a5480,
+    0x7f1fabff, 0xa8defc3, 0x7f21bd4e, 0xa818a9d,
+    0x7f23cc2e, 0xa752510, 0x7f25d89e, 0xa68bf1b,
+    0x7f27e29f, 0xa5c58c0, 0x7f29ea31, 0xa4ff1fe,
+    0x7f2bef53, 0xa438ad7, 0x7f2df206, 0xa37234a,
+    0x7f2ff24a, 0xa2abb59, 0x7f31f01d, 0xa1e5303,
+    0x7f33eb81, 0xa11ea49, 0x7f35e476, 0xa05812c,
+    0x7f37dafa, 0x9f917ac, 0x7f39cf0e, 0x9ecadc9,
+    0x7f3bc0b3, 0x9e04385, 0x7f3dafe7, 0x9d3d8df,
+    0x7f3f9cab, 0x9c76dd8, 0x7f4186ff, 0x9bb0271,
+    0x7f436ee3, 0x9ae96aa, 0x7f455456, 0x9a22a83,
+    0x7f473759, 0x995bdfd, 0x7f4917eb, 0x9895118,
+    0x7f4af60d, 0x97ce3d5, 0x7f4cd1be, 0x9707635,
+    0x7f4eaafe, 0x9640837, 0x7f5081cd, 0x95799dd,
+    0x7f52562c, 0x94b2b27, 0x7f54281a, 0x93ebc14,
+    0x7f55f796, 0x9324ca7, 0x7f57c4a2, 0x925dcdf,
+    0x7f598f3c, 0x9196cbc, 0x7f5b5765, 0x90cfc40,
+    0x7f5d1d1d, 0x9008b6a, 0x7f5ee063, 0x8f41a3c,
+    0x7f60a138, 0x8e7a8b5, 0x7f625f9b, 0x8db36d6,
+    0x7f641b8d, 0x8cec4a0, 0x7f65d50d, 0x8c25213,
+    0x7f678c1c, 0x8b5df30, 0x7f6940b8, 0x8a96bf6,
+    0x7f6af2e3, 0x89cf867, 0x7f6ca29c, 0x8908483,
+    0x7f6e4fe3, 0x884104b, 0x7f6ffab8, 0x8779bbe,
+    0x7f71a31b, 0x86b26de, 0x7f73490b, 0x85eb1ab,
+    0x7f74ec8a, 0x8523c25, 0x7f768d96, 0x845c64d,
+    0x7f782c30, 0x8395024, 0x7f79c857, 0x82cd9a9,
+    0x7f7b620c, 0x82062de, 0x7f7cf94e, 0x813ebc2,
+    0x7f7e8e1e, 0x8077457, 0x7f80207b, 0x7fafc9c,
+    0x7f81b065, 0x7ee8493, 0x7f833ddd, 0x7e20c3b,
+    0x7f84c8e2, 0x7d59396, 0x7f865174, 0x7c91aa3,
+    0x7f87d792, 0x7bca163, 0x7f895b3e, 0x7b027d7,
+    0x7f8adc77, 0x7a3adff, 0x7f8c5b3d, 0x79733dc,
+    0x7f8dd78f, 0x78ab96e, 0x7f8f516e, 0x77e3eb5,
+    0x7f90c8da, 0x771c3b3, 0x7f923dd2, 0x7654867,
+    0x7f93b058, 0x758ccd2, 0x7f952069, 0x74c50f4,
+    0x7f968e07, 0x73fd4cf, 0x7f97f932, 0x7335862,
+    0x7f9961e8, 0x726dbae, 0x7f9ac82c, 0x71a5eb3,
+    0x7f9c2bfb, 0x70de172, 0x7f9d8d56, 0x70163eb,
+    0x7f9eec3e, 0x6f4e620, 0x7fa048b2, 0x6e86810,
+    0x7fa1a2b2, 0x6dbe9bb, 0x7fa2fa3d, 0x6cf6b23,
+    0x7fa44f55, 0x6c2ec48, 0x7fa5a1f9, 0x6b66d29,
+    0x7fa6f228, 0x6a9edc9, 0x7fa83fe3, 0x69d6e27,
+    0x7fa98b2a, 0x690ee44, 0x7faad3fd, 0x6846e1f,
+    0x7fac1a5b, 0x677edbb, 0x7fad5e45, 0x66b6d16,
+    0x7fae9fbb, 0x65eec33, 0x7fafdebb, 0x6526b10,
+    0x7fb11b48, 0x645e9af, 0x7fb2555f, 0x6396810,
+    0x7fb38d02, 0x62ce634, 0x7fb4c231, 0x620641a,
+    0x7fb5f4ea, 0x613e1c5, 0x7fb7252f, 0x6075f33,
+    0x7fb852ff, 0x5fadc66, 0x7fb97e5a, 0x5ee595d,
+    0x7fbaa740, 0x5e1d61b, 0x7fbbcdb1, 0x5d5529e,
+    0x7fbcf1ad, 0x5c8cee7, 0x7fbe1334, 0x5bc4af8,
+    0x7fbf3246, 0x5afc6d0, 0x7fc04ee3, 0x5a3426f,
+    0x7fc1690a, 0x596bdd7, 0x7fc280bc, 0x58a3908,
+    0x7fc395f9, 0x57db403, 0x7fc4a8c1, 0x5712ec7,
+    0x7fc5b913, 0x564a955, 0x7fc6c6f0, 0x55823ae,
+    0x7fc7d258, 0x54b9dd3, 0x7fc8db4a, 0x53f17c3,
+    0x7fc9e1c6, 0x532917f, 0x7fcae5cd, 0x5260b08,
+    0x7fcbe75e, 0x519845e, 0x7fcce67a, 0x50cfd82,
+    0x7fcde320, 0x5007674, 0x7fcedd50, 0x4f3ef35,
+    0x7fcfd50b, 0x4e767c5, 0x7fd0ca4f, 0x4dae024,
+    0x7fd1bd1e, 0x4ce5854, 0x7fd2ad77, 0x4c1d054,
+    0x7fd39b5a, 0x4b54825, 0x7fd486c7, 0x4a8bfc7,
+    0x7fd56fbe, 0x49c373c, 0x7fd6563f, 0x48fae83,
+    0x7fd73a4a, 0x483259d, 0x7fd81bdf, 0x4769c8b,
+    0x7fd8fafe, 0x46a134c, 0x7fd9d7a7, 0x45d89e2,
+    0x7fdab1d9, 0x451004d, 0x7fdb8996, 0x444768d,
+    0x7fdc5edc, 0x437eca4, 0x7fdd31ac, 0x42b6290,
+    0x7fde0205, 0x41ed854, 0x7fdecfe8, 0x4124dee,
+    0x7fdf9b55, 0x405c361, 0x7fe0644b, 0x3f938ac,
+    0x7fe12acb, 0x3ecadcf, 0x7fe1eed5, 0x3e022cc,
+    0x7fe2b067, 0x3d397a3, 0x7fe36f84, 0x3c70c54,
+    0x7fe42c2a, 0x3ba80df, 0x7fe4e659, 0x3adf546,
+    0x7fe59e12, 0x3a16988, 0x7fe65354, 0x394dda7,
+    0x7fe7061f, 0x38851a2, 0x7fe7b674, 0x37bc57b,
+    0x7fe86452, 0x36f3931, 0x7fe90fb9, 0x362acc5,
+    0x7fe9b8a9, 0x3562038, 0x7fea5f23, 0x3499389,
+    0x7feb0326, 0x33d06bb, 0x7feba4b2, 0x33079cc,
+    0x7fec43c7, 0x323ecbe, 0x7fece065, 0x3175f91,
+    0x7fed7a8c, 0x30ad245, 0x7fee123d, 0x2fe44dc,
+    0x7feea776, 0x2f1b755, 0x7fef3a39, 0x2e529b0,
+    0x7fefca84, 0x2d89bf0, 0x7ff05858, 0x2cc0e13,
+    0x7ff0e3b6, 0x2bf801a, 0x7ff16c9c, 0x2b2f207,
+    0x7ff1f30b, 0x2a663d8, 0x7ff27703, 0x299d590,
+    0x7ff2f884, 0x28d472e, 0x7ff3778e, 0x280b8b3,
+    0x7ff3f420, 0x2742a1f, 0x7ff46e3c, 0x2679b73,
+    0x7ff4e5e0, 0x25b0caf, 0x7ff55b0d, 0x24e7dd4,
+    0x7ff5cdc3, 0x241eee2, 0x7ff63e01, 0x2355fd9,
+    0x7ff6abc8, 0x228d0bb, 0x7ff71718, 0x21c4188,
+    0x7ff77ff1, 0x20fb240, 0x7ff7e652, 0x20322e3,
+    0x7ff84a3c, 0x1f69373, 0x7ff8abae, 0x1ea03ef,
+    0x7ff90aaa, 0x1dd7459, 0x7ff9672d, 0x1d0e4b0,
+    0x7ff9c13a, 0x1c454f5, 0x7ffa18cf, 0x1b7c528,
+    0x7ffa6dec, 0x1ab354b, 0x7ffac092, 0x19ea55d,
+    0x7ffb10c1, 0x192155f, 0x7ffb5e78, 0x1858552,
+    0x7ffba9b8, 0x178f536, 0x7ffbf280, 0x16c650b,
+    0x7ffc38d1, 0x15fd4d2, 0x7ffc7caa, 0x153448c,
+    0x7ffcbe0c, 0x146b438, 0x7ffcfcf6, 0x13a23d8,
+    0x7ffd3969, 0x12d936c, 0x7ffd7364, 0x12102f4,
+    0x7ffdaae7, 0x1147271, 0x7ffddff3, 0x107e1e3,
+    0x7ffe1288, 0xfb514b, 0x7ffe42a4, 0xeec0aa,
+    0x7ffe704a, 0xe22fff, 0x7ffe9b77, 0xd59f4c,
+    0x7ffec42d, 0xc90e90, 0x7ffeea6c, 0xbc7dcc,
+    0x7fff0e32, 0xafed02, 0x7fff2f82, 0xa35c30,
+    0x7fff4e59, 0x96cb58, 0x7fff6ab9, 0x8a3a7b,
+    0x7fff84a1, 0x7da998, 0x7fff9c12, 0x7118b0,
+    0x7fffb10b, 0x6487c4, 0x7fffc38c, 0x57f6d4,
+    0x7fffd396, 0x4b65e1, 0x7fffe128, 0x3ed4ea,
+    0x7fffec43, 0x3243f1, 0x7ffff4e6, 0x25b2f7,
+    0x7ffffb11, 0x1921fb, 0x7ffffec4, 0xc90fe,
+    0x7fffffff, 0x0, 0x7ffffec4, 0xfff36f02,
+    0x7ffffb11, 0xffe6de05, 0x7ffff4e6, 0xffda4d09,
+    0x7fffec43, 0xffcdbc0f, 0x7fffe128, 0xffc12b16,
+    0x7fffd396, 0xffb49a1f, 0x7fffc38c, 0xffa8092c,
+    0x7fffb10b, 0xff9b783c, 0x7fff9c12, 0xff8ee750,
+    0x7fff84a1, 0xff825668, 0x7fff6ab9, 0xff75c585,
+    0x7fff4e59, 0xff6934a8, 0x7fff2f82, 0xff5ca3d0,
+    0x7fff0e32, 0xff5012fe, 0x7ffeea6c, 0xff438234,
+    0x7ffec42d, 0xff36f170, 0x7ffe9b77, 0xff2a60b4,
+    0x7ffe704a, 0xff1dd001, 0x7ffe42a4, 0xff113f56,
+    0x7ffe1288, 0xff04aeb5, 0x7ffddff3, 0xfef81e1d,
+    0x7ffdaae7, 0xfeeb8d8f, 0x7ffd7364, 0xfedefd0c,
+    0x7ffd3969, 0xfed26c94, 0x7ffcfcf6, 0xfec5dc28,
+    0x7ffcbe0c, 0xfeb94bc8, 0x7ffc7caa, 0xfeacbb74,
+    0x7ffc38d1, 0xfea02b2e, 0x7ffbf280, 0xfe939af5,
+    0x7ffba9b8, 0xfe870aca, 0x7ffb5e78, 0xfe7a7aae,
+    0x7ffb10c1, 0xfe6deaa1, 0x7ffac092, 0xfe615aa3,
+    0x7ffa6dec, 0xfe54cab5, 0x7ffa18cf, 0xfe483ad8,
+    0x7ff9c13a, 0xfe3bab0b, 0x7ff9672d, 0xfe2f1b50,
+    0x7ff90aaa, 0xfe228ba7, 0x7ff8abae, 0xfe15fc11,
+    0x7ff84a3c, 0xfe096c8d, 0x7ff7e652, 0xfdfcdd1d,
+    0x7ff77ff1, 0xfdf04dc0, 0x7ff71718, 0xfde3be78,
+    0x7ff6abc8, 0xfdd72f45, 0x7ff63e01, 0xfdcaa027,
+    0x7ff5cdc3, 0xfdbe111e, 0x7ff55b0d, 0xfdb1822c,
+    0x7ff4e5e0, 0xfda4f351, 0x7ff46e3c, 0xfd98648d,
+    0x7ff3f420, 0xfd8bd5e1, 0x7ff3778e, 0xfd7f474d,
+    0x7ff2f884, 0xfd72b8d2, 0x7ff27703, 0xfd662a70,
+    0x7ff1f30b, 0xfd599c28, 0x7ff16c9c, 0xfd4d0df9,
+    0x7ff0e3b6, 0xfd407fe6, 0x7ff05858, 0xfd33f1ed,
+    0x7fefca84, 0xfd276410, 0x7fef3a39, 0xfd1ad650,
+    0x7feea776, 0xfd0e48ab, 0x7fee123d, 0xfd01bb24,
+    0x7fed7a8c, 0xfcf52dbb, 0x7fece065, 0xfce8a06f,
+    0x7fec43c7, 0xfcdc1342, 0x7feba4b2, 0xfccf8634,
+    0x7feb0326, 0xfcc2f945, 0x7fea5f23, 0xfcb66c77,
+    0x7fe9b8a9, 0xfca9dfc8, 0x7fe90fb9, 0xfc9d533b,
+    0x7fe86452, 0xfc90c6cf, 0x7fe7b674, 0xfc843a85,
+    0x7fe7061f, 0xfc77ae5e, 0x7fe65354, 0xfc6b2259,
+    0x7fe59e12, 0xfc5e9678, 0x7fe4e659, 0xfc520aba,
+    0x7fe42c2a, 0xfc457f21, 0x7fe36f84, 0xfc38f3ac,
+    0x7fe2b067, 0xfc2c685d, 0x7fe1eed5, 0xfc1fdd34,
+    0x7fe12acb, 0xfc135231, 0x7fe0644b, 0xfc06c754,
+    0x7fdf9b55, 0xfbfa3c9f, 0x7fdecfe8, 0xfbedb212,
+    0x7fde0205, 0xfbe127ac, 0x7fdd31ac, 0xfbd49d70,
+    0x7fdc5edc, 0xfbc8135c, 0x7fdb8996, 0xfbbb8973,
+    0x7fdab1d9, 0xfbaeffb3, 0x7fd9d7a7, 0xfba2761e,
+    0x7fd8fafe, 0xfb95ecb4, 0x7fd81bdf, 0xfb896375,
+    0x7fd73a4a, 0xfb7cda63, 0x7fd6563f, 0xfb70517d,
+    0x7fd56fbe, 0xfb63c8c4, 0x7fd486c7, 0xfb574039,
+    0x7fd39b5a, 0xfb4ab7db, 0x7fd2ad77, 0xfb3e2fac,
+    0x7fd1bd1e, 0xfb31a7ac, 0x7fd0ca4f, 0xfb251fdc,
+    0x7fcfd50b, 0xfb18983b, 0x7fcedd50, 0xfb0c10cb,
+    0x7fcde320, 0xfaff898c, 0x7fcce67a, 0xfaf3027e,
+    0x7fcbe75e, 0xfae67ba2, 0x7fcae5cd, 0xfad9f4f8,
+    0x7fc9e1c6, 0xfacd6e81, 0x7fc8db4a, 0xfac0e83d,
+    0x7fc7d258, 0xfab4622d, 0x7fc6c6f0, 0xfaa7dc52,
+    0x7fc5b913, 0xfa9b56ab, 0x7fc4a8c1, 0xfa8ed139,
+    0x7fc395f9, 0xfa824bfd, 0x7fc280bc, 0xfa75c6f8,
+    0x7fc1690a, 0xfa694229, 0x7fc04ee3, 0xfa5cbd91,
+    0x7fbf3246, 0xfa503930, 0x7fbe1334, 0xfa43b508,
+    0x7fbcf1ad, 0xfa373119, 0x7fbbcdb1, 0xfa2aad62,
+    0x7fbaa740, 0xfa1e29e5, 0x7fb97e5a, 0xfa11a6a3,
+    0x7fb852ff, 0xfa05239a, 0x7fb7252f, 0xf9f8a0cd,
+    0x7fb5f4ea, 0xf9ec1e3b, 0x7fb4c231, 0xf9df9be6,
+    0x7fb38d02, 0xf9d319cc, 0x7fb2555f, 0xf9c697f0,
+    0x7fb11b48, 0xf9ba1651, 0x7fafdebb, 0xf9ad94f0,
+    0x7fae9fbb, 0xf9a113cd, 0x7fad5e45, 0xf99492ea,
+    0x7fac1a5b, 0xf9881245, 0x7faad3fd, 0xf97b91e1,
+    0x7fa98b2a, 0xf96f11bc, 0x7fa83fe3, 0xf96291d9,
+    0x7fa6f228, 0xf9561237, 0x7fa5a1f9, 0xf94992d7,
+    0x7fa44f55, 0xf93d13b8, 0x7fa2fa3d, 0xf93094dd,
+    0x7fa1a2b2, 0xf9241645, 0x7fa048b2, 0xf91797f0,
+    0x7f9eec3e, 0xf90b19e0, 0x7f9d8d56, 0xf8fe9c15,
+    0x7f9c2bfb, 0xf8f21e8e, 0x7f9ac82c, 0xf8e5a14d,
+    0x7f9961e8, 0xf8d92452, 0x7f97f932, 0xf8cca79e,
+    0x7f968e07, 0xf8c02b31, 0x7f952069, 0xf8b3af0c,
+    0x7f93b058, 0xf8a7332e, 0x7f923dd2, 0xf89ab799,
+    0x7f90c8da, 0xf88e3c4d, 0x7f8f516e, 0xf881c14b,
+    0x7f8dd78f, 0xf8754692, 0x7f8c5b3d, 0xf868cc24,
+    0x7f8adc77, 0xf85c5201, 0x7f895b3e, 0xf84fd829,
+    0x7f87d792, 0xf8435e9d, 0x7f865174, 0xf836e55d,
+    0x7f84c8e2, 0xf82a6c6a, 0x7f833ddd, 0xf81df3c5,
+    0x7f81b065, 0xf8117b6d, 0x7f80207b, 0xf8050364,
+    0x7f7e8e1e, 0xf7f88ba9, 0x7f7cf94e, 0xf7ec143e,
+    0x7f7b620c, 0xf7df9d22, 0x7f79c857, 0xf7d32657,
+    0x7f782c30, 0xf7c6afdc, 0x7f768d96, 0xf7ba39b3,
+    0x7f74ec8a, 0xf7adc3db, 0x7f73490b, 0xf7a14e55,
+    0x7f71a31b, 0xf794d922, 0x7f6ffab8, 0xf7886442,
+    0x7f6e4fe3, 0xf77befb5, 0x7f6ca29c, 0xf76f7b7d,
+    0x7f6af2e3, 0xf7630799, 0x7f6940b8, 0xf756940a,
+    0x7f678c1c, 0xf74a20d0, 0x7f65d50d, 0xf73daded,
+    0x7f641b8d, 0xf7313b60, 0x7f625f9b, 0xf724c92a,
+    0x7f60a138, 0xf718574b, 0x7f5ee063, 0xf70be5c4,
+    0x7f5d1d1d, 0xf6ff7496, 0x7f5b5765, 0xf6f303c0,
+    0x7f598f3c, 0xf6e69344, 0x7f57c4a2, 0xf6da2321,
+    0x7f55f796, 0xf6cdb359, 0x7f54281a, 0xf6c143ec,
+    0x7f52562c, 0xf6b4d4d9, 0x7f5081cd, 0xf6a86623,
+    0x7f4eaafe, 0xf69bf7c9, 0x7f4cd1be, 0xf68f89cb,
+    0x7f4af60d, 0xf6831c2b, 0x7f4917eb, 0xf676aee8,
+    0x7f473759, 0xf66a4203, 0x7f455456, 0xf65dd57d,
+    0x7f436ee3, 0xf6516956, 0x7f4186ff, 0xf644fd8f,
+    0x7f3f9cab, 0xf6389228, 0x7f3dafe7, 0xf62c2721,
+    0x7f3bc0b3, 0xf61fbc7b, 0x7f39cf0e, 0xf6135237,
+    0x7f37dafa, 0xf606e854, 0x7f35e476, 0xf5fa7ed4,
+    0x7f33eb81, 0xf5ee15b7, 0x7f31f01d, 0xf5e1acfd,
+    0x7f2ff24a, 0xf5d544a7, 0x7f2df206, 0xf5c8dcb6,
+    0x7f2bef53, 0xf5bc7529, 0x7f29ea31, 0xf5b00e02,
+    0x7f27e29f, 0xf5a3a740, 0x7f25d89e, 0xf59740e5,
+    0x7f23cc2e, 0xf58adaf0, 0x7f21bd4e, 0xf57e7563,
+    0x7f1fabff, 0xf572103d, 0x7f1d9842, 0xf565ab80,
+    0x7f1b8215, 0xf559472b, 0x7f19697a, 0xf54ce33f,
+    0x7f174e70, 0xf5407fbd, 0x7f1530f7, 0xf5341ca5,
+    0x7f13110f, 0xf527b9f7, 0x7f10eeb9, 0xf51b57b5,
+    0x7f0ec9f5, 0xf50ef5de, 0x7f0ca2c2, 0xf5029473,
+    0x7f0a7921, 0xf4f63374, 0x7f084d12, 0xf4e9d2e3,
+    0x7f061e95, 0xf4dd72be, 0x7f03eda9, 0xf4d11308,
+    0x7f01ba50, 0xf4c4b3c0, 0x7eff8489, 0xf4b854e7,
+    0x7efd4c54, 0xf4abf67e, 0x7efb11b1, 0xf49f9884,
+    0x7ef8d4a1, 0xf4933afa, 0x7ef69523, 0xf486dde1,
+    0x7ef45338, 0xf47a8139, 0x7ef20ee0, 0xf46e2504,
+    0x7eefc81a, 0xf461c940, 0x7eed7ee7, 0xf4556def,
+    0x7eeb3347, 0xf4491311, 0x7ee8e53a, 0xf43cb8a7,
+    0x7ee694c1, 0xf4305eb0, 0x7ee441da, 0xf424052f,
+    0x7ee1ec87, 0xf417ac22, 0x7edf94c7, 0xf40b538b,
+    0x7edd3a9a, 0xf3fefb6a, 0x7edade01, 0xf3f2a3bf,
+    0x7ed87efc, 0xf3e64c8c, 0x7ed61d8a, 0xf3d9f5cf,
+    0x7ed3b9ad, 0xf3cd9f8b, 0x7ed15363, 0xf3c149bf,
+    0x7eceeaad, 0xf3b4f46c, 0x7ecc7f8b, 0xf3a89f92,
+    0x7eca11fe, 0xf39c4b32, 0x7ec7a205, 0xf38ff74d,
+    0x7ec52fa0, 0xf383a3e2, 0x7ec2bad0, 0xf37750f2,
+    0x7ec04394, 0xf36afe7e, 0x7ebdc9ed, 0xf35eac86,
+    0x7ebb4ddb, 0xf3525b0b, 0x7eb8cf5d, 0xf3460a0d,
+    0x7eb64e75, 0xf339b98d, 0x7eb3cb21, 0xf32d698a,
+    0x7eb14563, 0xf3211a07, 0x7eaebd3a, 0xf314cb02,
+    0x7eac32a6, 0xf3087c7d, 0x7ea9a5a8, 0xf2fc2e77,
+    0x7ea7163f, 0xf2efe0f2, 0x7ea4846c, 0xf2e393ef,
+    0x7ea1f02f, 0xf2d7476c, 0x7e9f5988, 0xf2cafb6b,
+    0x7e9cc076, 0xf2beafed, 0x7e9a24fb, 0xf2b264f2,
+    0x7e978715, 0xf2a61a7a, 0x7e94e6c6, 0xf299d085,
+    0x7e92440d, 0xf28d8715, 0x7e8f9eeb, 0xf2813e2a,
+    0x7e8cf75f, 0xf274f5c3, 0x7e8a4d6a, 0xf268ade3,
+    0x7e87a10c, 0xf25c6688, 0x7e84f245, 0xf2501fb5,
+    0x7e824114, 0xf243d968, 0x7e7f8d7b, 0xf23793a3,
+    0x7e7cd778, 0xf22b4e66, 0x7e7a1f0d, 0xf21f09b1,
+    0x7e77643a, 0xf212c585, 0x7e74a6fd, 0xf20681e3,
+    0x7e71e759, 0xf1fa3ecb, 0x7e6f254c, 0xf1edfc3d,
+    0x7e6c60d7, 0xf1e1ba3a, 0x7e6999fa, 0xf1d578c2,
+    0x7e66d0b4, 0xf1c937d6, 0x7e640507, 0xf1bcf777,
+    0x7e6136f3, 0xf1b0b7a4, 0x7e5e6676, 0xf1a4785e,
+    0x7e5b9392, 0xf19839a6, 0x7e58be47, 0xf18bfb7d,
+    0x7e55e694, 0xf17fbde2, 0x7e530c7a, 0xf17380d6,
+    0x7e502ff9, 0xf1674459, 0x7e4d5110, 0xf15b086d,
+    0x7e4a6fc1, 0xf14ecd11, 0x7e478c0b, 0xf1429247,
+    0x7e44a5ef, 0xf136580d, 0x7e41bd6c, 0xf12a1e66,
+    0x7e3ed282, 0xf11de551, 0x7e3be532, 0xf111accf,
+    0x7e38f57c, 0xf10574e0, 0x7e360360, 0xf0f93d86,
+    0x7e330ede, 0xf0ed06bf, 0x7e3017f6, 0xf0e0d08d,
+    0x7e2d1ea8, 0xf0d49af1, 0x7e2a22f4, 0xf0c865ea,
+    0x7e2724db, 0xf0bc317a, 0x7e24245d, 0xf0affda0,
+    0x7e212179, 0xf0a3ca5d, 0x7e1e1c30, 0xf09797b2,
+    0x7e1b1482, 0xf08b659f, 0x7e180a6f, 0xf07f3424,
+    0x7e14fdf7, 0xf0730342, 0x7e11ef1b, 0xf066d2fa,
+    0x7e0eddd9, 0xf05aa34c, 0x7e0bca34, 0xf04e7438,
+    0x7e08b42a, 0xf04245c0, 0x7e059bbb, 0xf03617e2,
+    0x7e0280e9, 0xf029eaa1, 0x7dff63b2, 0xf01dbdfb,
+    0x7dfc4418, 0xf01191f3, 0x7df9221a, 0xf0056687,
+    0x7df5fdb8, 0xeff93bba, 0x7df2d6f3, 0xefed118a,
+    0x7defadca, 0xefe0e7f9, 0x7dec823e, 0xefd4bf08,
+    0x7de9544f, 0xefc896b5, 0x7de623fd, 0xefbc6f03,
+    0x7de2f148, 0xefb047f2, 0x7ddfbc30, 0xefa42181,
+    0x7ddc84b5, 0xef97fbb2, 0x7dd94ad8, 0xef8bd685,
+    0x7dd60e99, 0xef7fb1fa, 0x7dd2cff7, 0xef738e12,
+    0x7dcf8ef3, 0xef676ace, 0x7dcc4b8d, 0xef5b482d,
+    0x7dc905c5, 0xef4f2630, 0x7dc5bd9b, 0xef4304d8,
+    0x7dc2730f, 0xef36e426, 0x7dbf2622, 0xef2ac419,
+    0x7dbbd6d4, 0xef1ea4b2, 0x7db88524, 0xef1285f2,
+    0x7db53113, 0xef0667d9, 0x7db1daa2, 0xeefa4a67,
+    0x7dae81cf, 0xeeee2d9d, 0x7dab269b, 0xeee2117c,
+    0x7da7c907, 0xeed5f604, 0x7da46912, 0xeec9db35,
+    0x7da106bd, 0xeebdc110, 0x7d9da208, 0xeeb1a796,
+    0x7d9a3af2, 0xeea58ec6, 0x7d96d17d, 0xee9976a1,
+    0x7d9365a8, 0xee8d5f29, 0x7d8ff772, 0xee81485c,
+    0x7d8c86de, 0xee75323c, 0x7d8913ea, 0xee691cc9,
+    0x7d859e96, 0xee5d0804, 0x7d8226e4, 0xee50f3ed,
+    0x7d7eacd2, 0xee44e084, 0x7d7b3061, 0xee38cdcb,
+    0x7d77b192, 0xee2cbbc1, 0x7d743064, 0xee20aa67,
+    0x7d70acd7, 0xee1499bd, 0x7d6d26ec, 0xee0889c4,
+    0x7d699ea3, 0xedfc7a7c, 0x7d6613fb, 0xedf06be6,
+    0x7d6286f6, 0xede45e03, 0x7d5ef793, 0xedd850d2,
+    0x7d5b65d2, 0xedcc4454, 0x7d57d1b3, 0xedc0388a,
+    0x7d543b37, 0xedb42d74, 0x7d50a25e, 0xeda82313,
+    0x7d4d0728, 0xed9c1967, 0x7d496994, 0xed901070,
+    0x7d45c9a4, 0xed84082f, 0x7d422757, 0xed7800a5,
+    0x7d3e82ae, 0xed6bf9d1, 0x7d3adba7, 0xed5ff3b5,
+    0x7d373245, 0xed53ee51, 0x7d338687, 0xed47e9a5,
+    0x7d2fd86c, 0xed3be5b1, 0x7d2c27f6, 0xed2fe277,
+    0x7d287523, 0xed23dff7, 0x7d24bff6, 0xed17de31,
+    0x7d21086c, 0xed0bdd25, 0x7d1d4e88, 0xecffdcd4,
+    0x7d199248, 0xecf3dd3f, 0x7d15d3ad, 0xece7de66,
+    0x7d1212b7, 0xecdbe04a, 0x7d0e4f67, 0xeccfe2ea,
+    0x7d0a89bc, 0xecc3e648, 0x7d06c1b6, 0xecb7ea63,
+    0x7d02f757, 0xecabef3d, 0x7cff2a9d, 0xec9ff4d6,
+    0x7cfb5b89, 0xec93fb2e, 0x7cf78a1b, 0xec880245,
+    0x7cf3b653, 0xec7c0a1d, 0x7cefe032, 0xec7012b5,
+    0x7cec07b8, 0xec641c0e, 0x7ce82ce4, 0xec582629,
+    0x7ce44fb7, 0xec4c3106, 0x7ce07031, 0xec403ca5,
+    0x7cdc8e52, 0xec344908, 0x7cd8aa1b, 0xec28562d,
+    0x7cd4c38b, 0xec1c6417, 0x7cd0daa2, 0xec1072c4,
+    0x7cccef62, 0xec048237, 0x7cc901c9, 0xebf8926f,
+    0x7cc511d9, 0xebeca36c, 0x7cc11f90, 0xebe0b52f,
+    0x7cbd2af0, 0xebd4c7ba, 0x7cb933f9, 0xebc8db0b,
+    0x7cb53aaa, 0xebbcef23, 0x7cb13f04, 0xebb10404,
+    0x7cad4107, 0xeba519ad, 0x7ca940b3, 0xeb99301f,
+    0x7ca53e09, 0xeb8d475b, 0x7ca13908, 0xeb815f60,
+    0x7c9d31b0, 0xeb75782f, 0x7c992803, 0xeb6991ca,
+    0x7c951bff, 0xeb5dac2f, 0x7c910da5, 0xeb51c760,
+    0x7c8cfcf6, 0xeb45e35d, 0x7c88e9f1, 0xeb3a0027,
+    0x7c84d496, 0xeb2e1dbe, 0x7c80bce7, 0xeb223c22,
+    0x7c7ca2e2, 0xeb165b54, 0x7c788688, 0xeb0a7b54,
+    0x7c7467d9, 0xeafe9c24, 0x7c7046d6, 0xeaf2bdc3,
+    0x7c6c237e, 0xeae6e031, 0x7c67fdd1, 0xeadb0370,
+    0x7c63d5d1, 0xeacf277f, 0x7c5fab7c, 0xeac34c60,
+    0x7c5b7ed4, 0xeab77212, 0x7c574fd8, 0xeaab9896,
+    0x7c531e88, 0xea9fbfed, 0x7c4eeae5, 0xea93e817,
+    0x7c4ab4ef, 0xea881114, 0x7c467ca6, 0xea7c3ae5,
+    0x7c42420a, 0xea70658a, 0x7c3e051b, 0xea649105,
+    0x7c39c5da, 0xea58bd54, 0x7c358446, 0xea4cea79,
+    0x7c314060, 0xea411874, 0x7c2cfa28, 0xea354746,
+    0x7c28b19e, 0xea2976ef, 0x7c2466c2, 0xea1da770,
+    0x7c201994, 0xea11d8c8, 0x7c1bca16, 0xea060af9,
+    0x7c177845, 0xe9fa3e03, 0x7c132424, 0xe9ee71e6,
+    0x7c0ecdb2, 0xe9e2a6a3, 0x7c0a74f0, 0xe9d6dc3b,
+    0x7c0619dc, 0xe9cb12ad, 0x7c01bc78, 0xe9bf49fa,
+    0x7bfd5cc4, 0xe9b38223, 0x7bf8fac0, 0xe9a7bb28,
+    0x7bf4966c, 0xe99bf509, 0x7bf02fc9, 0xe9902fc7,
+    0x7bebc6d5, 0xe9846b63, 0x7be75b93, 0xe978a7dd,
+    0x7be2ee01, 0xe96ce535, 0x7bde7e20, 0xe961236c,
+    0x7bda0bf0, 0xe9556282, 0x7bd59771, 0xe949a278,
+    0x7bd120a4, 0xe93de34e, 0x7bcca789, 0xe9322505,
+    0x7bc82c1f, 0xe926679c, 0x7bc3ae67, 0xe91aab16,
+    0x7bbf2e62, 0xe90eef71, 0x7bbaac0e, 0xe90334af,
+    0x7bb6276e, 0xe8f77acf, 0x7bb1a080, 0xe8ebc1d3,
+    0x7bad1744, 0xe8e009ba, 0x7ba88bbc, 0xe8d45286,
+    0x7ba3fde7, 0xe8c89c37, 0x7b9f6dc5, 0xe8bce6cd,
+    0x7b9adb57, 0xe8b13248, 0x7b96469d, 0xe8a57ea9,
+    0x7b91af97, 0xe899cbf1, 0x7b8d1644, 0xe88e1a20,
+    0x7b887aa6, 0xe8826936, 0x7b83dcbc, 0xe876b934,
+    0x7b7f3c87, 0xe86b0a1a, 0x7b7a9a07, 0xe85f5be9,
+    0x7b75f53c, 0xe853aea1, 0x7b714e25, 0xe8480243,
+    0x7b6ca4c4, 0xe83c56cf, 0x7b67f919, 0xe830ac45,
+    0x7b634b23, 0xe82502a7, 0x7b5e9ae4, 0xe81959f4,
+    0x7b59e85a, 0xe80db22d, 0x7b553386, 0xe8020b52,
+    0x7b507c69, 0xe7f66564, 0x7b4bc303, 0xe7eac063,
+    0x7b470753, 0xe7df1c50, 0x7b42495a, 0xe7d3792b,
+    0x7b3d8918, 0xe7c7d6f4, 0x7b38c68e, 0xe7bc35ad,
+    0x7b3401bb, 0xe7b09555, 0x7b2f3aa0, 0xe7a4f5ed,
+    0x7b2a713d, 0xe7995776, 0x7b25a591, 0xe78db9ef,
+    0x7b20d79e, 0xe7821d59, 0x7b1c0764, 0xe77681b6,
+    0x7b1734e2, 0xe76ae704, 0x7b126019, 0xe75f4d45,
+    0x7b0d8909, 0xe753b479, 0x7b08afb2, 0xe7481ca1,
+    0x7b03d414, 0xe73c85bc, 0x7afef630, 0xe730efcc,
+    0x7afa1605, 0xe7255ad1, 0x7af53395, 0xe719c6cb,
+    0x7af04edf, 0xe70e33bb, 0x7aeb67e3, 0xe702a1a1,
+    0x7ae67ea1, 0xe6f7107e, 0x7ae1931a, 0xe6eb8052,
+    0x7adca54e, 0xe6dff11d, 0x7ad7b53d, 0xe6d462e1,
+    0x7ad2c2e8, 0xe6c8d59c, 0x7acdce4d, 0xe6bd4951,
+    0x7ac8d76f, 0xe6b1bdff, 0x7ac3de4c, 0xe6a633a6,
+    0x7abee2e5, 0xe69aaa48, 0x7ab9e53a, 0xe68f21e5,
+    0x7ab4e54c, 0xe6839a7c, 0x7aafe31b, 0xe6781410,
+    0x7aaadea6, 0xe66c8e9f, 0x7aa5d7ee, 0xe6610a2a,
+    0x7aa0cef3, 0xe65586b3, 0x7a9bc3b6, 0xe64a0438,
+    0x7a96b636, 0xe63e82bc, 0x7a91a674, 0xe633023e,
+    0x7a8c9470, 0xe62782be, 0x7a87802a, 0xe61c043d,
+    0x7a8269a3, 0xe61086bc, 0x7a7d50da, 0xe6050a3b,
+    0x7a7835cf, 0xe5f98ebb, 0x7a731884, 0xe5ee143b,
+    0x7a6df8f8, 0xe5e29abc, 0x7a68d72b, 0xe5d72240,
+    0x7a63b31d, 0xe5cbaac5, 0x7a5e8cd0, 0xe5c0344d,
+    0x7a596442, 0xe5b4bed8, 0x7a543974, 0xe5a94a67,
+    0x7a4f0c67, 0xe59dd6f9, 0x7a49dd1a, 0xe5926490,
+    0x7a44ab8e, 0xe586f32c, 0x7a3f77c3, 0xe57b82cd,
+    0x7a3a41b9, 0xe5701374, 0x7a350970, 0xe564a521,
+    0x7a2fcee8, 0xe55937d5, 0x7a2a9223, 0xe54dcb8f,
+    0x7a25531f, 0xe5426051, 0x7a2011de, 0xe536f61b,
+    0x7a1ace5f, 0xe52b8cee, 0x7a1588a2, 0xe52024c9,
+    0x7a1040a8, 0xe514bdad, 0x7a0af671, 0xe509579b,
+    0x7a05a9fd, 0xe4fdf294, 0x7a005b4d, 0xe4f28e96,
+    0x79fb0a60, 0xe4e72ba4, 0x79f5b737, 0xe4dbc9bd,
+    0x79f061d2, 0xe4d068e2, 0x79eb0a31, 0xe4c50914,
+    0x79e5b054, 0xe4b9aa52, 0x79e0543c, 0xe4ae4c9d,
+    0x79daf5e8, 0xe4a2eff6, 0x79d5955a, 0xe497945d,
+    0x79d03291, 0xe48c39d3, 0x79cacd8d, 0xe480e057,
+    0x79c5664f, 0xe47587eb, 0x79bffcd7, 0xe46a308f,
+    0x79ba9125, 0xe45eda43, 0x79b52339, 0xe4538507,
+    0x79afb313, 0xe44830dd, 0x79aa40b4, 0xe43cddc4,
+    0x79a4cc1c, 0xe4318bbe, 0x799f554b, 0xe4263ac9,
+    0x7999dc42, 0xe41aeae8, 0x799460ff, 0xe40f9c1a,
+    0x798ee385, 0xe4044e60, 0x798963d2, 0xe3f901ba,
+    0x7983e1e8, 0xe3edb628, 0x797e5dc6, 0xe3e26bac,
+    0x7978d76c, 0xe3d72245, 0x79734edc, 0xe3cbd9f4,
+    0x796dc414, 0xe3c092b9, 0x79683715, 0xe3b54c95,
+    0x7962a7e0, 0xe3aa0788, 0x795d1675, 0xe39ec393,
+    0x795782d3, 0xe39380b6, 0x7951ecfc, 0xe3883ef2,
+    0x794c54ee, 0xe37cfe47, 0x7946baac, 0xe371beb5,
+    0x79411e33, 0xe366803c, 0x793b7f86, 0xe35b42df,
+    0x7935dea4, 0xe350069b, 0x79303b8e, 0xe344cb73,
+    0x792a9642, 0xe3399167, 0x7924eec3, 0xe32e5876,
+    0x791f4510, 0xe32320a2, 0x79199929, 0xe317e9eb,
+    0x7913eb0e, 0xe30cb451, 0x790e3ac0, 0xe3017fd5,
+    0x7908883f, 0xe2f64c77, 0x7902d38b, 0xe2eb1a37,
+    0x78fd1ca4, 0xe2dfe917, 0x78f7638b, 0xe2d4b916,
+    0x78f1a840, 0xe2c98a35, 0x78ebeac2, 0xe2be5c74,
+    0x78e62b13, 0xe2b32fd4, 0x78e06932, 0xe2a80456,
+    0x78daa520, 0xe29cd9f8, 0x78d4dedd, 0xe291b0bd,
+    0x78cf1669, 0xe28688a4, 0x78c94bc4, 0xe27b61af,
+    0x78c37eef, 0xe2703bdc, 0x78bdafea, 0xe265172e,
+    0x78b7deb4, 0xe259f3a3, 0x78b20b4f, 0xe24ed13d,
+    0x78ac35ba, 0xe243affc, 0x78a65df6, 0xe2388fe1,
+    0x78a08402, 0xe22d70eb, 0x789aa7e0, 0xe222531c,
+    0x7894c98f, 0xe2173674, 0x788ee910, 0xe20c1af3,
+    0x78890663, 0xe2010099, 0x78832187, 0xe1f5e768,
+    0x787d3a7e, 0xe1eacf5f, 0x78775147, 0xe1dfb87f,
+    0x787165e3, 0xe1d4a2c8, 0x786b7852, 0xe1c98e3b,
+    0x78658894, 0xe1be7ad8, 0x785f96a9, 0xe1b368a0,
+    0x7859a292, 0xe1a85793, 0x7853ac4f, 0xe19d47b1,
+    0x784db3e0, 0xe19238fb, 0x7847b946, 0xe1872b72,
+    0x7841bc7f, 0xe17c1f15, 0x783bbd8e, 0xe17113e5,
+    0x7835bc71, 0xe16609e3, 0x782fb92a, 0xe15b0110,
+    0x7829b3b9, 0xe14ff96a, 0x7823ac1d, 0xe144f2f3,
+    0x781da256, 0xe139edac, 0x78179666, 0xe12ee995,
+    0x7811884d, 0xe123e6ad, 0x780b780a, 0xe118e4f6,
+    0x7805659e, 0xe10de470, 0x77ff5109, 0xe102e51c,
+    0x77f93a4b, 0xe0f7e6f9, 0x77f32165, 0xe0ecea09,
+    0x77ed0657, 0xe0e1ee4b, 0x77e6e921, 0xe0d6f3c1,
+    0x77e0c9c3, 0xe0cbfa6a, 0x77daa83d, 0xe0c10247,
+    0x77d48490, 0xe0b60b58, 0x77ce5ebd, 0xe0ab159e,
+    0x77c836c2, 0xe0a0211a, 0x77c20ca1, 0xe0952dcb,
+    0x77bbe05a, 0xe08a3bb2, 0x77b5b1ec, 0xe07f4acf,
+    0x77af8159, 0xe0745b24, 0x77a94ea0, 0xe0696cb0,
+    0x77a319c2, 0xe05e7f74, 0x779ce2be, 0xe053936f,
+    0x7796a996, 0xe048a8a4, 0x77906e49, 0xe03dbf11,
+    0x778a30d8, 0xe032d6b8, 0x7783f143, 0xe027ef99,
+    0x777daf89, 0xe01d09b4, 0x77776bac, 0xe012250a,
+    0x777125ac, 0xe007419b, 0x776add88, 0xdffc5f67,
+    0x77649341, 0xdff17e70, 0x775e46d8, 0xdfe69eb4,
+    0x7757f84c, 0xdfdbc036, 0x7751a79e, 0xdfd0e2f5,
+    0x774b54ce, 0xdfc606f1, 0x7744ffdd, 0xdfbb2c2c,
+    0x773ea8ca, 0xdfb052a5, 0x77384f95, 0xdfa57a5d,
+    0x7731f440, 0xdf9aa354, 0x772b96ca, 0xdf8fcd8b,
+    0x77253733, 0xdf84f902, 0x771ed57c, 0xdf7a25ba,
+    0x771871a5, 0xdf6f53b3, 0x77120bae, 0xdf6482ed,
+    0x770ba398, 0xdf59b369, 0x77053962, 0xdf4ee527,
+    0x76fecd0e, 0xdf441828, 0x76f85e9a, 0xdf394c6b,
+    0x76f1ee09, 0xdf2e81f3, 0x76eb7b58, 0xdf23b8be,
+    0x76e5068a, 0xdf18f0ce, 0x76de8f9e, 0xdf0e2a22,
+    0x76d81695, 0xdf0364bc, 0x76d19b6e, 0xdef8a09b,
+    0x76cb1e2a, 0xdeedddc0, 0x76c49ec9, 0xdee31c2b,
+    0x76be1d4c, 0xded85bdd, 0x76b799b3, 0xdecd9cd7,
+    0x76b113fd, 0xdec2df18, 0x76aa8c2c, 0xdeb822a1,
+    0x76a4023f, 0xdead6773, 0x769d7637, 0xdea2ad8d,
+    0x7696e814, 0xde97f4f1, 0x769057d6, 0xde8d3d9e,
+    0x7689c57d, 0xde828796, 0x7683310b, 0xde77d2d8,
+    0x767c9a7e, 0xde6d1f65, 0x767601d7, 0xde626d3e,
+    0x766f6717, 0xde57bc62, 0x7668ca3e, 0xde4d0cd2,
+    0x76622b4c, 0xde425e8f, 0x765b8a41, 0xde37b199,
+    0x7654e71d, 0xde2d05f1, 0x764e41e2, 0xde225b96,
+    0x76479a8e, 0xde17b28a, 0x7640f123, 0xde0d0acc,
+    0x763a45a0, 0xde02645d, 0x76339806, 0xddf7bf3e,
+    0x762ce855, 0xdded1b6e, 0x7626368d, 0xdde278ef,
+    0x761f82af, 0xddd7d7c1, 0x7618ccba, 0xddcd37e4,
+    0x761214b0, 0xddc29958, 0x760b5a90, 0xddb7fc1e,
+    0x76049e5b, 0xddad6036, 0x75fde011, 0xdda2c5a2,
+    0x75f71fb1, 0xdd982c60, 0x75f05d3d, 0xdd8d9472,
+    0x75e998b5, 0xdd82fdd8, 0x75e2d219, 0xdd786892,
+    0x75dc0968, 0xdd6dd4a2, 0x75d53ea5, 0xdd634206,
+    0x75ce71ce, 0xdd58b0c0, 0x75c7a2e3, 0xdd4e20d0,
+    0x75c0d1e7, 0xdd439236, 0x75b9fed7, 0xdd3904f4,
+    0x75b329b5, 0xdd2e7908, 0x75ac5282, 0xdd23ee74,
+    0x75a5793c, 0xdd196538, 0x759e9de5, 0xdd0edd55,
+    0x7597c07d, 0xdd0456ca, 0x7590e104, 0xdcf9d199,
+    0x7589ff7a, 0xdcef4dc2, 0x75831be0, 0xdce4cb44,
+    0x757c3636, 0xdcda4a21, 0x75754e7c, 0xdccfca59,
+    0x756e64b2, 0xdcc54bec, 0x756778d9, 0xdcbacedb,
+    0x75608af1, 0xdcb05326, 0x75599afa, 0xdca5d8cd,
+    0x7552a8f4, 0xdc9b5fd2, 0x754bb4e1, 0xdc90e834,
+    0x7544bebf, 0xdc8671f3, 0x753dc68f, 0xdc7bfd11,
+    0x7536cc52, 0xdc71898d, 0x752fd008, 0xdc671768,
+    0x7528d1b1, 0xdc5ca6a2, 0x7521d14d, 0xdc52373c,
+    0x751acedd, 0xdc47c936, 0x7513ca60, 0xdc3d5c91,
+    0x750cc3d8, 0xdc32f14d, 0x7505bb44, 0xdc28876a,
+    0x74feb0a5, 0xdc1e1ee9, 0x74f7a3fb, 0xdc13b7c9,
+    0x74f09546, 0xdc09520d, 0x74e98487, 0xdbfeedb3,
+    0x74e271bd, 0xdbf48abd, 0x74db5cea, 0xdbea292b,
+    0x74d4460c, 0xdbdfc8fc, 0x74cd2d26, 0xdbd56a32,
+    0x74c61236, 0xdbcb0cce, 0x74bef53d, 0xdbc0b0ce,
+    0x74b7d63c, 0xdbb65634, 0x74b0b533, 0xdbabfd01,
+    0x74a99221, 0xdba1a534, 0x74a26d08, 0xdb974ece,
+    0x749b45e7, 0xdb8cf9cf, 0x74941cbf, 0xdb82a638,
+    0x748cf190, 0xdb785409, 0x7485c45b, 0xdb6e0342,
+    0x747e951f, 0xdb63b3e5, 0x747763dd, 0xdb5965f1,
+    0x74703095, 0xdb4f1967, 0x7468fb47, 0xdb44ce46,
+    0x7461c3f5, 0xdb3a8491, 0x745a8a9d, 0xdb303c46,
+    0x74534f41, 0xdb25f566, 0x744c11e0, 0xdb1baff2,
+    0x7444d27b, 0xdb116beb, 0x743d9112, 0xdb072950,
+    0x74364da6, 0xdafce821, 0x742f0836, 0xdaf2a860,
+    0x7427c0c3, 0xdae86a0d, 0x7420774d, 0xdade2d28,
+    0x74192bd5, 0xdad3f1b1, 0x7411de5b, 0xdac9b7a9,
+    0x740a8edf, 0xdabf7f11, 0x74033d61, 0xdab547e8,
+    0x73fbe9e2, 0xdaab122f, 0x73f49462, 0xdaa0dde7,
+    0x73ed3ce1, 0xda96ab0f, 0x73e5e360, 0xda8c79a9,
+    0x73de87de, 0xda8249b4, 0x73d72a5d, 0xda781b31,
+    0x73cfcadc, 0xda6dee21, 0x73c8695b, 0xda63c284,
+    0x73c105db, 0xda599859, 0x73b9a05d, 0xda4f6fa3,
+    0x73b238e0, 0xda454860, 0x73aacf65, 0xda3b2292,
+    0x73a363ec, 0xda30fe38, 0x739bf675, 0xda26db54,
+    0x73948701, 0xda1cb9e5, 0x738d1590, 0xda1299ec,
+    0x7385a222, 0xda087b69, 0x737e2cb7, 0xd9fe5e5e,
+    0x7376b551, 0xd9f442c9, 0x736f3bee, 0xd9ea28ac,
+    0x7367c090, 0xd9e01006, 0x73604336, 0xd9d5f8d9,
+    0x7358c3e2, 0xd9cbe325, 0x73514292, 0xd9c1cee9,
+    0x7349bf48, 0xd9b7bc27, 0x73423a04, 0xd9adaadf,
+    0x733ab2c6, 0xd9a39b11, 0x7333298f, 0xd9998cbe,
+    0x732b9e5e, 0xd98f7fe6, 0x73241134, 0xd9857489,
+    0x731c8211, 0xd97b6aa8, 0x7314f0f6, 0xd9716243,
+    0x730d5de3, 0xd9675b5a, 0x7305c8d7, 0xd95d55ef,
+    0x72fe31d5, 0xd9535201, 0x72f698db, 0xd9494f90,
+    0x72eefdea, 0xd93f4e9e, 0x72e76102, 0xd9354f2a,
+    0x72dfc224, 0xd92b5135, 0x72d82150, 0xd92154bf,
+    0x72d07e85, 0xd91759c9, 0x72c8d9c6, 0xd90d6053,
+    0x72c13311, 0xd903685d, 0x72b98a67, 0xd8f971e8,
+    0x72b1dfc9, 0xd8ef7cf4, 0x72aa3336, 0xd8e58982,
+    0x72a284b0, 0xd8db9792, 0x729ad435, 0xd8d1a724,
+    0x729321c7, 0xd8c7b838, 0x728b6d66, 0xd8bdcad0,
+    0x7283b712, 0xd8b3deeb, 0x727bfecc, 0xd8a9f48a,
+    0x72744493, 0xd8a00bae, 0x726c8868, 0xd8962456,
+    0x7264ca4c, 0xd88c3e83, 0x725d0a3e, 0xd8825a35,
+    0x72554840, 0xd878776d, 0x724d8450, 0xd86e962b,
+    0x7245be70, 0xd864b670, 0x723df6a0, 0xd85ad83c,
+    0x72362ce0, 0xd850fb8e, 0x722e6130, 0xd8472069,
+    0x72269391, 0xd83d46cc, 0x721ec403, 0xd8336eb7,
+    0x7216f287, 0xd829982b, 0x720f1f1c, 0xd81fc328,
+    0x720749c3, 0xd815efae, 0x71ff727c, 0xd80c1dbf,
+    0x71f79948, 0xd8024d59, 0x71efbe27, 0xd7f87e7f,
+    0x71e7e118, 0xd7eeb130, 0x71e0021e, 0xd7e4e56c,
+    0x71d82137, 0xd7db1b34, 0x71d03e64, 0xd7d15288,
+    0x71c859a5, 0xd7c78b68, 0x71c072fb, 0xd7bdc5d6,
+    0x71b88a66, 0xd7b401d1, 0x71b09fe7, 0xd7aa3f5a,
+    0x71a8b37c, 0xd7a07e70, 0x71a0c528, 0xd796bf16,
+    0x7198d4ea, 0xd78d014a, 0x7190e2c3, 0xd783450d,
+    0x7188eeb2, 0xd7798a60, 0x7180f8b8, 0xd76fd143,
+    0x717900d6, 0xd76619b6, 0x7171070c, 0xd75c63ba,
+    0x71690b59, 0xd752af4f, 0x71610dbf, 0xd748fc75,
+    0x71590e3e, 0xd73f4b2e, 0x71510cd5, 0xd7359b78,
+    0x71490986, 0xd72bed55, 0x71410450, 0xd72240c5,
+    0x7138fd35, 0xd71895c9, 0x7130f433, 0xd70eec60,
+    0x7128e94c, 0xd705448b, 0x7120dc80, 0xd6fb9e4b,
+    0x7118cdcf, 0xd6f1f99f, 0x7110bd39, 0xd6e85689,
+    0x7108aabf, 0xd6deb508, 0x71009661, 0xd6d5151d,
+    0x70f8801f, 0xd6cb76c9, 0x70f067fb, 0xd6c1da0b,
+    0x70e84df3, 0xd6b83ee4, 0x70e03208, 0xd6aea555,
+    0x70d8143b, 0xd6a50d5d, 0x70cff48c, 0xd69b76fe,
+    0x70c7d2fb, 0xd691e237, 0x70bfaf89, 0xd6884f09,
+    0x70b78a36, 0xd67ebd74, 0x70af6302, 0xd6752d79,
+    0x70a739ed, 0xd66b9f18, 0x709f0ef8, 0xd6621251,
+    0x7096e223, 0xd6588725, 0x708eb36f, 0xd64efd94,
+    0x708682dc, 0xd645759f, 0x707e5069, 0xd63bef46,
+    0x70761c18, 0xd6326a88, 0x706de5e9, 0xd628e767,
+    0x7065addb, 0xd61f65e4, 0x705d73f0, 0xd615e5fd,
+    0x70553828, 0xd60c67b4, 0x704cfa83, 0xd602eb0a,
+    0x7044bb00, 0xd5f96ffd, 0x703c79a2, 0xd5eff690,
+    0x70343667, 0xd5e67ec1, 0x702bf151, 0xd5dd0892,
+    0x7023aa5f, 0xd5d39403, 0x701b6193, 0xd5ca2115,
+    0x701316eb, 0xd5c0afc6, 0x700aca69, 0xd5b74019,
+    0x70027c0c, 0xd5add20d, 0x6ffa2bd6, 0xd5a465a3,
+    0x6ff1d9c7, 0xd59afadb, 0x6fe985de, 0xd59191b5,
+    0x6fe1301c, 0xd5882a32, 0x6fd8d882, 0xd57ec452,
+    0x6fd07f0f, 0xd5756016, 0x6fc823c5, 0xd56bfd7d,
+    0x6fbfc6a3, 0xd5629c89, 0x6fb767aa, 0xd5593d3a,
+    0x6faf06da, 0xd54fdf8f, 0x6fa6a433, 0xd5468389,
+    0x6f9e3fb6, 0xd53d292a, 0x6f95d963, 0xd533d070,
+    0x6f8d713a, 0xd52a795d, 0x6f85073c, 0xd52123f0,
+    0x6f7c9b69, 0xd517d02b, 0x6f742dc1, 0xd50e7e0d,
+    0x6f6bbe45, 0xd5052d97, 0x6f634cf5, 0xd4fbdec9,
+    0x6f5ad9d1, 0xd4f291a4, 0x6f5264da, 0xd4e94627,
+    0x6f49ee0f, 0xd4dffc54, 0x6f417573, 0xd4d6b42b,
+    0x6f38fb03, 0xd4cd6dab, 0x6f307ec2, 0xd4c428d6,
+    0x6f2800af, 0xd4bae5ab, 0x6f1f80ca, 0xd4b1a42c,
+    0x6f16ff14, 0xd4a86458, 0x6f0e7b8e, 0xd49f2630,
+    0x6f05f637, 0xd495e9b3, 0x6efd6f10, 0xd48caee4,
+    0x6ef4e619, 0xd48375c1, 0x6eec5b53, 0xd47a3e4b,
+    0x6ee3cebe, 0xd4710883, 0x6edb405a, 0xd467d469,
+    0x6ed2b027, 0xd45ea1fd, 0x6eca1e27, 0xd4557140,
+    0x6ec18a58, 0xd44c4232, 0x6eb8f4bc, 0xd44314d3,
+    0x6eb05d53, 0xd439e923, 0x6ea7c41e, 0xd430bf24,
+    0x6e9f291b, 0xd42796d5, 0x6e968c4d, 0xd41e7037,
+    0x6e8dedb3, 0xd4154b4a, 0x6e854d4d, 0xd40c280e,
+    0x6e7cab1c, 0xd4030684, 0x6e740720, 0xd3f9e6ad,
+    0x6e6b615a, 0xd3f0c887, 0x6e62b9ca, 0xd3e7ac15,
+    0x6e5a1070, 0xd3de9156, 0x6e51654c, 0xd3d5784a,
+    0x6e48b860, 0xd3cc60f2, 0x6e4009aa, 0xd3c34b4f,
+    0x6e37592c, 0xd3ba3760, 0x6e2ea6e6, 0xd3b12526,
+    0x6e25f2d8, 0xd3a814a2, 0x6e1d3d03, 0xd39f05d3,
+    0x6e148566, 0xd395f8ba, 0x6e0bcc03, 0xd38ced57,
+    0x6e0310d9, 0xd383e3ab, 0x6dfa53e9, 0xd37adbb6,
+    0x6df19534, 0xd371d579, 0x6de8d4b8, 0xd368d0f3,
+    0x6de01278, 0xd35fce26, 0x6dd74e73, 0xd356cd11,
+    0x6dce88aa, 0xd34dcdb4, 0x6dc5c11c, 0xd344d011,
+    0x6dbcf7cb, 0xd33bd427, 0x6db42cb6, 0xd332d9f7,
+    0x6dab5fdf, 0xd329e181, 0x6da29144, 0xd320eac6,
+    0x6d99c0e7, 0xd317f5c6, 0x6d90eec8, 0xd30f0280,
+    0x6d881ae8, 0xd30610f7, 0x6d7f4545, 0xd2fd2129,
+    0x6d766de2, 0xd2f43318, 0x6d6d94bf, 0xd2eb46c3,
+    0x6d64b9da, 0xd2e25c2b, 0x6d5bdd36, 0xd2d97350,
+    0x6d52fed2, 0xd2d08c33, 0x6d4a1eaf, 0xd2c7a6d4,
+    0x6d413ccd, 0xd2bec333, 0x6d38592c, 0xd2b5e151,
+    0x6d2f73cd, 0xd2ad012e, 0x6d268cb0, 0xd2a422ca,
+    0x6d1da3d5, 0xd29b4626, 0x6d14b93d, 0xd2926b41,
+    0x6d0bcce8, 0xd289921e, 0x6d02ded7, 0xd280babb,
+    0x6cf9ef09, 0xd277e518, 0x6cf0fd80, 0xd26f1138,
+    0x6ce80a3a, 0xd2663f19, 0x6cdf153a, 0xd25d6ebc,
+    0x6cd61e7f, 0xd254a021, 0x6ccd2609, 0xd24bd34a,
+    0x6cc42bd9, 0xd2430835, 0x6cbb2fef, 0xd23a3ee4,
+    0x6cb2324c, 0xd2317756, 0x6ca932ef, 0xd228b18d,
+    0x6ca031da, 0xd21fed88, 0x6c972f0d, 0xd2172b48,
+    0x6c8e2a87, 0xd20e6acc, 0x6c85244a, 0xd205ac17,
+    0x6c7c1c55, 0xd1fcef27, 0x6c7312a9, 0xd1f433fd,
+    0x6c6a0746, 0xd1eb7a9a, 0x6c60fa2d, 0xd1e2c2fd,
+    0x6c57eb5e, 0xd1da0d28, 0x6c4edada, 0xd1d1591a,
+    0x6c45c8a0, 0xd1c8a6d4, 0x6c3cb4b1, 0xd1bff656,
+    0x6c339f0e, 0xd1b747a0, 0x6c2a87b6, 0xd1ae9ab4,
+    0x6c216eaa, 0xd1a5ef90, 0x6c1853eb, 0xd19d4636,
+    0x6c0f3779, 0xd1949ea6, 0x6c061953, 0xd18bf8e0,
+    0x6bfcf97c, 0xd18354e4, 0x6bf3d7f2, 0xd17ab2b3,
+    0x6beab4b6, 0xd172124d, 0x6be18fc9, 0xd16973b3,
+    0x6bd8692b, 0xd160d6e5, 0x6bcf40dc, 0xd1583be2,
+    0x6bc616dd, 0xd14fa2ad, 0x6bbceb2d, 0xd1470b44,
+    0x6bb3bdce, 0xd13e75a8, 0x6baa8ec0, 0xd135e1d9,
+    0x6ba15e03, 0xd12d4fd9, 0x6b982b97, 0xd124bfa6,
+    0x6b8ef77d, 0xd11c3142, 0x6b85c1b5, 0xd113a4ad,
+    0x6b7c8a3f, 0xd10b19e7, 0x6b73511c, 0xd10290f0,
+    0x6b6a164d, 0xd0fa09c9, 0x6b60d9d0, 0xd0f18472,
+    0x6b579ba8, 0xd0e900ec, 0x6b4e5bd4, 0xd0e07f36,
+    0x6b451a55, 0xd0d7ff51, 0x6b3bd72a, 0xd0cf813e,
+    0x6b329255, 0xd0c704fd, 0x6b294bd5, 0xd0be8a8d,
+    0x6b2003ac, 0xd0b611f1, 0x6b16b9d9, 0xd0ad9b26,
+    0x6b0d6e5c, 0xd0a5262f, 0x6b042137, 0xd09cb30b,
+    0x6afad269, 0xd09441bb, 0x6af181f3, 0xd08bd23f,
+    0x6ae82fd5, 0xd0836497, 0x6adedc10, 0xd07af8c4,
+    0x6ad586a3, 0xd0728ec6, 0x6acc2f90, 0xd06a269d,
+    0x6ac2d6d6, 0xd061c04a, 0x6ab97c77, 0xd0595bcd,
+    0x6ab02071, 0xd050f926, 0x6aa6c2c6, 0xd0489856,
+    0x6a9d6377, 0xd040395d, 0x6a940283, 0xd037dc3b,
+    0x6a8a9fea, 0xd02f80f1, 0x6a813bae, 0xd027277e,
+    0x6a77d5ce, 0xd01ecfe4, 0x6a6e6e4b, 0xd0167a22,
+    0x6a650525, 0xd00e2639, 0x6a5b9a5d, 0xd005d42a,
+    0x6a522df3, 0xcffd83f4, 0x6a48bfe7, 0xcff53597,
+    0x6a3f503a, 0xcfece915, 0x6a35deeb, 0xcfe49e6d,
+    0x6a2c6bfd, 0xcfdc55a1, 0x6a22f76e, 0xcfd40eaf,
+    0x6a19813f, 0xcfcbc999, 0x6a100970, 0xcfc3865e,
+    0x6a069003, 0xcfbb4500, 0x69fd14f6, 0xcfb3057d,
+    0x69f3984c, 0xcfaac7d8, 0x69ea1a03, 0xcfa28c10,
+    0x69e09a1c, 0xcf9a5225, 0x69d71899, 0xcf921a17,
+    0x69cd9578, 0xcf89e3e8, 0x69c410ba, 0xcf81af97,
+    0x69ba8a61, 0xcf797d24, 0x69b1026c, 0xcf714c91,
+    0x69a778db, 0xcf691ddd, 0x699dedaf, 0xcf60f108,
+    0x699460e8, 0xcf58c613, 0x698ad287, 0xcf509cfe,
+    0x6981428c, 0xcf4875ca, 0x6977b0f7, 0xcf405077,
+    0x696e1dc9, 0xcf382d05, 0x69648902, 0xcf300b74,
+    0x695af2a3, 0xcf27ebc5, 0x69515aab, 0xcf1fcdf8,
+    0x6947c11c, 0xcf17b20d, 0x693e25f5, 0xcf0f9805,
+    0x69348937, 0xcf077fe1, 0x692aeae3, 0xceff699f,
+    0x69214af8, 0xcef75541, 0x6917a977, 0xceef42c7,
+    0x690e0661, 0xcee73231, 0x690461b5, 0xcedf2380,
+    0x68fabb75, 0xced716b4, 0x68f113a0, 0xcecf0bcd,
+    0x68e76a37, 0xcec702cb, 0x68ddbf3b, 0xcebefbb0,
+    0x68d412ab, 0xceb6f67a, 0x68ca6488, 0xceaef32b,
+    0x68c0b4d2, 0xcea6f1c2, 0x68b7038b, 0xce9ef241,
+    0x68ad50b1, 0xce96f4a7, 0x68a39c46, 0xce8ef8f4,
+    0x6899e64a, 0xce86ff2a, 0x68902ebd, 0xce7f0748,
+    0x688675a0, 0xce77114e, 0x687cbaf3, 0xce6f1d3d,
+    0x6872feb6, 0xce672b16, 0x686940ea, 0xce5f3ad8,
+    0x685f8190, 0xce574c84, 0x6855c0a6, 0xce4f6019,
+    0x684bfe2f, 0xce47759a, 0x68423a2a, 0xce3f8d05,
+    0x68387498, 0xce37a65b, 0x682ead78, 0xce2fc19c,
+    0x6824e4cc, 0xce27dec9, 0x681b1a94, 0xce1ffde2,
+    0x68114ed0, 0xce181ee8, 0x68078181, 0xce1041d9,
+    0x67fdb2a7, 0xce0866b8, 0x67f3e241, 0xce008d84,
+    0x67ea1052, 0xcdf8b63d, 0x67e03cd8, 0xcdf0e0e4,
+    0x67d667d5, 0xcde90d79, 0x67cc9149, 0xcde13bfd,
+    0x67c2b934, 0xcdd96c6f, 0x67b8df97, 0xcdd19ed0,
+    0x67af0472, 0xcdc9d320, 0x67a527c4, 0xcdc20960,
+    0x679b4990, 0xcdba4190, 0x679169d5, 0xcdb27bb0,
+    0x67878893, 0xcdaab7c0, 0x677da5cb, 0xcda2f5c2,
+    0x6773c17d, 0xcd9b35b4, 0x6769dbaa, 0xcd937798,
+    0x675ff452, 0xcd8bbb6d, 0x67560b76, 0xcd840134,
+    0x674c2115, 0xcd7c48ee, 0x67423530, 0xcd74929a,
+    0x673847c8, 0xcd6cde39, 0x672e58dc, 0xcd652bcb,
+    0x6724686e, 0xcd5d7b50, 0x671a767e, 0xcd55ccca,
+    0x6710830c, 0xcd4e2037, 0x67068e18, 0xcd467599,
+    0x66fc97a3, 0xcd3eccef, 0x66f29fad, 0xcd37263a,
+    0x66e8a637, 0xcd2f817b, 0x66deab41, 0xcd27deb0,
+    0x66d4aecb, 0xcd203ddc, 0x66cab0d6, 0xcd189efe,
+    0x66c0b162, 0xcd110216, 0x66b6b070, 0xcd096725,
+    0x66acadff, 0xcd01ce2b, 0x66a2aa11, 0xccfa3729,
+    0x6698a4a6, 0xccf2a21d, 0x668e9dbd, 0xcceb0f0a,
+    0x66849558, 0xcce37def, 0x667a8b77, 0xccdbeecc,
+    0x6670801a, 0xccd461a2, 0x66667342, 0xccccd671,
+    0x665c64ef, 0xccc54d3a, 0x66525521, 0xccbdc5fc,
+    0x664843d9, 0xccb640b8, 0x663e3117, 0xccaebd6e,
+    0x66341cdb, 0xcca73c1e, 0x662a0727, 0xcc9fbcca,
+    0x661feffa, 0xcc983f70, 0x6615d754, 0xcc90c412,
+    0x660bbd37, 0xcc894aaf, 0x6601a1a2, 0xcc81d349,
+    0x65f78497, 0xcc7a5dde, 0x65ed6614, 0xcc72ea70,
+    0x65e3461b, 0xcc6b78ff, 0x65d924ac, 0xcc64098b,
+    0x65cf01c8, 0xcc5c9c14, 0x65c4dd6e, 0xcc55309b,
+    0x65bab7a0, 0xcc4dc720, 0x65b0905d, 0xcc465fa3,
+    0x65a667a7, 0xcc3efa25, 0x659c3d7c, 0xcc3796a5,
+    0x659211df, 0xcc303524, 0x6587e4cf, 0xcc28d5a3,
+    0x657db64c, 0xcc217822, 0x65738657, 0xcc1a1ca0,
+    0x656954f1, 0xcc12c31f, 0x655f2219, 0xcc0b6b9e,
+    0x6554edd1, 0xcc04161e, 0x654ab818, 0xcbfcc29f,
+    0x654080ef, 0xcbf57121, 0x65364857, 0xcbee21a5,
+    0x652c0e4f, 0xcbe6d42b, 0x6521d2d8, 0xcbdf88b3,
+    0x651795f3, 0xcbd83f3d, 0x650d57a0, 0xcbd0f7ca,
+    0x650317df, 0xcbc9b25a, 0x64f8d6b0, 0xcbc26eee,
+    0x64ee9415, 0xcbbb2d85, 0x64e4500e, 0xcbb3ee20,
+    0x64da0a9a, 0xcbacb0bf, 0x64cfc3ba, 0xcba57563,
+    0x64c57b6f, 0xcb9e3c0b, 0x64bb31ba, 0xcb9704b9,
+    0x64b0e699, 0xcb8fcf6b, 0x64a69a0f, 0xcb889c23,
+    0x649c4c1b, 0xcb816ae1, 0x6491fcbe, 0xcb7a3ba5,
+    0x6487abf7, 0xcb730e70, 0x647d59c8, 0xcb6be341,
+    0x64730631, 0xcb64ba19, 0x6468b132, 0xcb5d92f8,
+    0x645e5acc, 0xcb566ddf, 0x645402ff, 0xcb4f4acd,
+    0x6449a9cc, 0xcb4829c4, 0x643f4f32, 0xcb410ac3,
+    0x6434f332, 0xcb39edca, 0x642a95ce, 0xcb32d2da,
+    0x64203704, 0xcb2bb9f4, 0x6415d6d5, 0xcb24a316,
+    0x640b7543, 0xcb1d8e43, 0x6401124d, 0xcb167b79,
+    0x63f6adf3, 0xcb0f6aba, 0x63ec4837, 0xcb085c05,
+    0x63e1e117, 0xcb014f5b, 0x63d77896, 0xcafa44bc,
+    0x63cd0eb3, 0xcaf33c28, 0x63c2a36f, 0xcaec35a0,
+    0x63b836ca, 0xcae53123, 0x63adc8c4, 0xcade2eb3,
+    0x63a3595e, 0xcad72e4f, 0x6398e898, 0xcad02ff8,
+    0x638e7673, 0xcac933ae, 0x638402ef, 0xcac23971,
+    0x63798e0d, 0xcabb4141, 0x636f17cc, 0xcab44b1f,
+    0x6364a02e, 0xcaad570c, 0x635a2733, 0xcaa66506,
+    0x634facda, 0xca9f750f, 0x63453125, 0xca988727,
+    0x633ab414, 0xca919b4e, 0x633035a7, 0xca8ab184,
+    0x6325b5df, 0xca83c9ca, 0x631b34bc, 0xca7ce420,
+    0x6310b23e, 0xca760086, 0x63062e67, 0xca6f1efc,
+    0x62fba936, 0xca683f83, 0x62f122ab, 0xca61621b,
+    0x62e69ac8, 0xca5a86c4, 0x62dc118c, 0xca53ad7e,
+    0x62d186f8, 0xca4cd64b, 0x62c6fb0c, 0xca460129,
+    0x62bc6dca, 0xca3f2e19, 0x62b1df30, 0xca385d1d,
+    0x62a74f40, 0xca318e32, 0x629cbdfa, 0xca2ac15b,
+    0x62922b5e, 0xca23f698, 0x6287976e, 0xca1d2de7,
+    0x627d0228, 0xca16674b, 0x62726b8e, 0xca0fa2c3,
+    0x6267d3a0, 0xca08e04f, 0x625d3a5e, 0xca021fef,
+    0x62529fca, 0xc9fb61a5, 0x624803e2, 0xc9f4a570,
+    0x623d66a8, 0xc9edeb50, 0x6232c81c, 0xc9e73346,
+    0x6228283f, 0xc9e07d51, 0x621d8711, 0xc9d9c973,
+    0x6212e492, 0xc9d317ab, 0x620840c2, 0xc9cc67fa,
+    0x61fd9ba3, 0xc9c5ba60, 0x61f2f534, 0xc9bf0edd,
+    0x61e84d76, 0xc9b86572, 0x61dda46a, 0xc9b1be1e,
+    0x61d2fa0f, 0xc9ab18e3, 0x61c84e67, 0xc9a475bf,
+    0x61bda171, 0xc99dd4b4, 0x61b2f32e, 0xc99735c2,
+    0x61a8439e, 0xc99098e9, 0x619d92c2, 0xc989fe29,
+    0x6192e09b, 0xc9836582, 0x61882d28, 0xc97ccef5,
+    0x617d786a, 0xc9763a83, 0x6172c262, 0xc96fa82a,
+    0x61680b0f, 0xc96917ec, 0x615d5273, 0xc96289c9,
+    0x6152988d, 0xc95bfdc1, 0x6147dd5f, 0xc95573d4,
+    0x613d20e8, 0xc94eec03, 0x61326329, 0xc948664d,
+    0x6127a423, 0xc941e2b4, 0x611ce3d5, 0xc93b6137,
+    0x61122240, 0xc934e1d6, 0x61075f65, 0xc92e6492,
+    0x60fc9b44, 0xc927e96b, 0x60f1d5de, 0xc9217062,
+    0x60e70f32, 0xc91af976, 0x60dc4742, 0xc91484a8,
+    0x60d17e0d, 0xc90e11f7, 0x60c6b395, 0xc907a166,
+    0x60bbe7d8, 0xc90132f2, 0x60b11ad9, 0xc8fac69e,
+    0x60a64c97, 0xc8f45c68, 0x609b7d13, 0xc8edf452,
+    0x6090ac4d, 0xc8e78e5b, 0x6085da46, 0xc8e12a84,
+    0x607b06fe, 0xc8dac8cd, 0x60703275, 0xc8d46936,
+    0x60655cac, 0xc8ce0bc0, 0x605a85a3, 0xc8c7b06b,
+    0x604fad5b, 0xc8c15736, 0x6044d3d4, 0xc8bb0023,
+    0x6039f90f, 0xc8b4ab32, 0x602f1d0b, 0xc8ae5862,
+    0x60243fca, 0xc8a807b4, 0x6019614c, 0xc8a1b928,
+    0x600e8190, 0xc89b6cbf, 0x6003a099, 0xc8952278,
+    0x5ff8be65, 0xc88eda54, 0x5feddaf6, 0xc8889454,
+    0x5fe2f64c, 0xc8825077, 0x5fd81067, 0xc87c0ebd,
+    0x5fcd2948, 0xc875cf28, 0x5fc240ef, 0xc86f91b7,
+    0x5fb7575c, 0xc869566a, 0x5fac6c91, 0xc8631d42,
+    0x5fa1808c, 0xc85ce63e, 0x5f969350, 0xc856b160,
+    0x5f8ba4dc, 0xc8507ea7, 0x5f80b531, 0xc84a4e14,
+    0x5f75c44e, 0xc8441fa6, 0x5f6ad235, 0xc83df35f,
+    0x5f5fdee6, 0xc837c93e, 0x5f54ea62, 0xc831a143,
+    0x5f49f4a8, 0xc82b7b70, 0x5f3efdb9, 0xc82557c3,
+    0x5f340596, 0xc81f363d, 0x5f290c3f, 0xc81916df,
+    0x5f1e11b5, 0xc812f9a9, 0x5f1315f7, 0xc80cde9b,
+    0x5f081907, 0xc806c5b5, 0x5efd1ae4, 0xc800aef7,
+    0x5ef21b90, 0xc7fa9a62, 0x5ee71b0a, 0xc7f487f6,
+    0x5edc1953, 0xc7ee77b3, 0x5ed1166b, 0xc7e8699a,
+    0x5ec61254, 0xc7e25daa, 0x5ebb0d0d, 0xc7dc53e3,
+    0x5eb00696, 0xc7d64c47, 0x5ea4fef0, 0xc7d046d6,
+    0x5e99f61d, 0xc7ca438f, 0x5e8eec1b, 0xc7c44272,
+    0x5e83e0eb, 0xc7be4381, 0x5e78d48e, 0xc7b846ba,
+    0x5e6dc705, 0xc7b24c20, 0x5e62b84f, 0xc7ac53b1,
+    0x5e57a86d, 0xc7a65d6e, 0x5e4c9760, 0xc7a06957,
+    0x5e418528, 0xc79a776c, 0x5e3671c5, 0xc79487ae,
+    0x5e2b5d38, 0xc78e9a1d, 0x5e204781, 0xc788aeb9,
+    0x5e1530a1, 0xc782c582, 0x5e0a1898, 0xc77cde79,
+    0x5dfeff67, 0xc776f99d, 0x5df3e50d, 0xc77116f0,
+    0x5de8c98c, 0xc76b3671, 0x5dddace4, 0xc7655820,
+    0x5dd28f15, 0xc75f7bfe, 0x5dc7701f, 0xc759a20a,
+    0x5dbc5004, 0xc753ca46, 0x5db12ec3, 0xc74df4b1,
+    0x5da60c5d, 0xc748214c, 0x5d9ae8d2, 0xc7425016,
+    0x5d8fc424, 0xc73c8111, 0x5d849e51, 0xc736b43c,
+    0x5d79775c, 0xc730e997, 0x5d6e4f43, 0xc72b2123,
+    0x5d632608, 0xc7255ae0, 0x5d57fbaa, 0xc71f96ce,
+    0x5d4cd02c, 0xc719d4ed, 0x5d41a38c, 0xc714153e,
+    0x5d3675cb, 0xc70e57c0, 0x5d2b46ea, 0xc7089c75,
+    0x5d2016e9, 0xc702e35c, 0x5d14e5c9, 0xc6fd2c75,
+    0x5d09b389, 0xc6f777c1, 0x5cfe802b, 0xc6f1c540,
+    0x5cf34baf, 0xc6ec14f2, 0x5ce81615, 0xc6e666d7,
+    0x5cdcdf5e, 0xc6e0baf0, 0x5cd1a78a, 0xc6db113d,
+    0x5cc66e99, 0xc6d569be, 0x5cbb348d, 0xc6cfc472,
+    0x5caff965, 0xc6ca215c, 0x5ca4bd21, 0xc6c4807a,
+    0x5c997fc4, 0xc6bee1cd, 0x5c8e414b, 0xc6b94554,
+    0x5c8301b9, 0xc6b3ab12, 0x5c77c10e, 0xc6ae1304,
+    0x5c6c7f4a, 0xc6a87d2d, 0x5c613c6d, 0xc6a2e98b,
+    0x5c55f878, 0xc69d5820, 0x5c4ab36b, 0xc697c8eb,
+    0x5c3f6d47, 0xc6923bec, 0x5c34260c, 0xc68cb124,
+    0x5c28ddbb, 0xc6872894, 0x5c1d9454, 0xc681a23a,
+    0x5c1249d8, 0xc67c1e18, 0x5c06fe46, 0xc6769c2e,
+    0x5bfbb1a0, 0xc6711c7b, 0x5bf063e6, 0xc66b9f01,
+    0x5be51518, 0xc66623be, 0x5bd9c537, 0xc660aab5,
+    0x5bce7442, 0xc65b33e4, 0x5bc3223c, 0xc655bf4c,
+    0x5bb7cf23, 0xc6504ced, 0x5bac7af9, 0xc64adcc7,
+    0x5ba125bd, 0xc6456edb, 0x5b95cf71, 0xc6400329,
+    0x5b8a7815, 0xc63a99b1, 0x5b7f1fa9, 0xc6353273,
+    0x5b73c62d, 0xc62fcd6f, 0x5b686ba3, 0xc62a6aa6,
+    0x5b5d100a, 0xc6250a18, 0x5b51b363, 0xc61fabc4,
+    0x5b4655ae, 0xc61a4fac, 0x5b3af6ec, 0xc614f5cf,
+    0x5b2f971e, 0xc60f9e2e, 0x5b243643, 0xc60a48c9,
+    0x5b18d45c, 0xc604f5a0, 0x5b0d716a, 0xc5ffa4b3,
+    0x5b020d6c, 0xc5fa5603, 0x5af6a865, 0xc5f5098f,
+    0x5aeb4253, 0xc5efbf58, 0x5adfdb37, 0xc5ea775e,
+    0x5ad47312, 0xc5e531a1, 0x5ac909e5, 0xc5dfee22,
+    0x5abd9faf, 0xc5daace1, 0x5ab23471, 0xc5d56ddd,
+    0x5aa6c82b, 0xc5d03118, 0x5a9b5adf, 0xc5caf690,
+    0x5a8fec8c, 0xc5c5be47, 0x5a847d33, 0xc5c0883d,
+    0x5a790cd4, 0xc5bb5472, 0x5a6d9b70, 0xc5b622e6,
+    0x5a622907, 0xc5b0f399, 0x5a56b599, 0xc5abc68c,
+    0x5a4b4128, 0xc5a69bbe, 0x5a3fcbb3, 0xc5a17330,
+    0x5a34553b, 0xc59c4ce3, 0x5a28ddc0, 0xc59728d5,
+    0x5a1d6544, 0xc5920708, 0x5a11ebc5, 0xc58ce77c,
+    0x5a067145, 0xc587ca31, 0x59faf5c5, 0xc582af26,
+    0x59ef7944, 0xc57d965d, 0x59e3fbc3, 0xc5787fd6,
+    0x59d87d42, 0xc5736b90, 0x59ccfdc2, 0xc56e598c,
+    0x59c17d44, 0xc56949ca, 0x59b5fbc8, 0xc5643c4a,
+    0x59aa794d, 0xc55f310d, 0x599ef5d6, 0xc55a2812,
+    0x59937161, 0xc555215a, 0x5987ebf0, 0xc5501ce5,
+    0x597c6584, 0xc54b1ab4, 0x5970de1b, 0xc5461ac6,
+    0x596555b8, 0xc5411d1b, 0x5959cc5a, 0xc53c21b4,
+    0x594e4201, 0xc5372891, 0x5942b6af, 0xc53231b3,
+    0x59372a64, 0xc52d3d18, 0x592b9d1f, 0xc5284ac3,
+    0x59200ee3, 0xc5235ab2, 0x59147fae, 0xc51e6ce6,
+    0x5908ef82, 0xc519815f, 0x58fd5e5f, 0xc514981d,
+    0x58f1cc45, 0xc50fb121, 0x58e63935, 0xc50acc6b,
+    0x58daa52f, 0xc505e9fb, 0x58cf1034, 0xc50109d0,
+    0x58c37a44, 0xc4fc2bec, 0x58b7e35f, 0xc4f7504e,
+    0x58ac4b87, 0xc4f276f7, 0x58a0b2bb, 0xc4ed9fe7,
+    0x589518fc, 0xc4e8cb1e, 0x58897e4a, 0xc4e3f89c,
+    0x587de2a7, 0xc4df2862, 0x58724611, 0xc4da5a6f,
+    0x5866a88a, 0xc4d58ec3, 0x585b0a13, 0xc4d0c560,
+    0x584f6aab, 0xc4cbfe45, 0x5843ca53, 0xc4c73972,
+    0x5838290c, 0xc4c276e8, 0x582c86d5, 0xc4bdb6a6,
+    0x5820e3b0, 0xc4b8f8ad, 0x58153f9d, 0xc4b43cfd,
+    0x58099a9c, 0xc4af8397, 0x57fdf4ae, 0xc4aacc7a,
+    0x57f24dd3, 0xc4a617a6, 0x57e6a60c, 0xc4a1651c,
+    0x57dafd59, 0xc49cb4dd, 0x57cf53bb, 0xc49806e7,
+    0x57c3a931, 0xc4935b3c, 0x57b7fdbd, 0xc48eb1db,
+    0x57ac515f, 0xc48a0ac4, 0x57a0a417, 0xc48565f9,
+    0x5794f5e6, 0xc480c379, 0x578946cc, 0xc47c2344,
+    0x577d96ca, 0xc477855a, 0x5771e5e0, 0xc472e9bc,
+    0x5766340f, 0xc46e5069, 0x575a8157, 0xc469b963,
+    0x574ecdb8, 0xc46524a9, 0x57431933, 0xc460923b,
+    0x573763c9, 0xc45c0219, 0x572bad7a, 0xc4577444,
+    0x571ff646, 0xc452e8bc, 0x57143e2d, 0xc44e5f80,
+    0x57088531, 0xc449d892, 0x56fccb51, 0xc44553f2,
+    0x56f1108f, 0xc440d19e, 0x56e554ea, 0xc43c5199,
+    0x56d99864, 0xc437d3e1, 0x56cddafb, 0xc4335877,
+    0x56c21cb2, 0xc42edf5c, 0x56b65d88, 0xc42a688f,
+    0x56aa9d7e, 0xc425f410, 0x569edc94, 0xc42181e0,
+    0x56931acb, 0xc41d11ff, 0x56875823, 0xc418a46d,
+    0x567b949d, 0xc414392b, 0x566fd039, 0xc40fd037,
+    0x56640af7, 0xc40b6994, 0x565844d8, 0xc4070540,
+    0x564c7ddd, 0xc402a33c, 0x5640b606, 0xc3fe4388,
+    0x5634ed53, 0xc3f9e624, 0x562923c5, 0xc3f58b10,
+    0x561d595d, 0xc3f1324e, 0x56118e1a, 0xc3ecdbdc,
+    0x5605c1fd, 0xc3e887bb, 0x55f9f507, 0xc3e435ea,
+    0x55ee2738, 0xc3dfe66c, 0x55e25890, 0xc3db993e,
+    0x55d68911, 0xc3d74e62, 0x55cab8ba, 0xc3d305d8,
+    0x55bee78c, 0xc3cebfa0, 0x55b31587, 0xc3ca7bba,
+    0x55a742ac, 0xc3c63a26, 0x559b6efb, 0xc3c1fae5,
+    0x558f9a76, 0xc3bdbdf6, 0x5583c51b, 0xc3b9835a,
+    0x5577eeec, 0xc3b54b11, 0x556c17e9, 0xc3b1151b,
+    0x55604013, 0xc3ace178, 0x5554676a, 0xc3a8b028,
+    0x55488dee, 0xc3a4812c, 0x553cb3a0, 0xc3a05484,
+    0x5530d881, 0xc39c2a2f, 0x5524fc90, 0xc398022f,
+    0x55191fcf, 0xc393dc82, 0x550d423d, 0xc38fb92a,
+    0x550163dc, 0xc38b9827, 0x54f584ac, 0xc3877978,
+    0x54e9a4ac, 0xc3835d1e, 0x54ddc3de, 0xc37f4319,
+    0x54d1e242, 0xc37b2b6a, 0x54c5ffd9, 0xc377160f,
+    0x54ba1ca3, 0xc373030a, 0x54ae38a0, 0xc36ef25b,
+    0x54a253d1, 0xc36ae401, 0x54966e36, 0xc366d7fd,
+    0x548a87d1, 0xc362ce50, 0x547ea0a0, 0xc35ec6f8,
+    0x5472b8a5, 0xc35ac1f7, 0x5466cfe1, 0xc356bf4d,
+    0x545ae653, 0xc352bef9, 0x544efbfc, 0xc34ec0fc,
+    0x544310dd, 0xc34ac556, 0x543724f5, 0xc346cc07,
+    0x542b3846, 0xc342d510, 0x541f4ad1, 0xc33ee070,
+    0x54135c94, 0xc33aee27, 0x54076d91, 0xc336fe37,
+    0x53fb7dc9, 0xc333109e, 0x53ef8d3c, 0xc32f255e,
+    0x53e39be9, 0xc32b3c75, 0x53d7a9d3, 0xc32755e5,
+    0x53cbb6f8, 0xc32371ae, 0x53bfc35b, 0xc31f8fcf,
+    0x53b3cefa, 0xc31bb049, 0x53a7d9d7, 0xc317d31c,
+    0x539be3f2, 0xc313f848, 0x538fed4b, 0xc3101fce,
+    0x5383f5e3, 0xc30c49ad, 0x5377fdbb, 0xc30875e5,
+    0x536c04d2, 0xc304a477, 0x53600b2a, 0xc300d563,
+    0x535410c3, 0xc2fd08a9, 0x5348159d, 0xc2f93e4a,
+    0x533c19b8, 0xc2f57644, 0x53301d16, 0xc2f1b099,
+    0x53241fb6, 0xc2eded49, 0x5318219a, 0xc2ea2c53,
+    0x530c22c1, 0xc2e66db8, 0x5300232c, 0xc2e2b178,
+    0x52f422db, 0xc2def794, 0x52e821cf, 0xc2db400a,
+    0x52dc2009, 0xc2d78add, 0x52d01d89, 0xc2d3d80a,
+    0x52c41a4f, 0xc2d02794, 0x52b8165b, 0xc2cc7979,
+    0x52ac11af, 0xc2c8cdbb, 0x52a00c4b, 0xc2c52459,
+    0x5294062f, 0xc2c17d52, 0x5287ff5b, 0xc2bdd8a9,
+    0x527bf7d1, 0xc2ba365c, 0x526fef90, 0xc2b6966c,
+    0x5263e699, 0xc2b2f8d8, 0x5257dced, 0xc2af5da2,
+    0x524bd28c, 0xc2abc4c9, 0x523fc776, 0xc2a82e4d,
+    0x5233bbac, 0xc2a49a2e, 0x5227af2e, 0xc2a1086d,
+    0x521ba1fd, 0xc29d790a, 0x520f941a, 0xc299ec05,
+    0x52038584, 0xc296615d, 0x51f7763c, 0xc292d914,
+    0x51eb6643, 0xc28f5329, 0x51df5599, 0xc28bcf9c,
+    0x51d3443f, 0xc2884e6e, 0x51c73235, 0xc284cf9f,
+    0x51bb1f7c, 0xc281532e, 0x51af0c13, 0xc27dd91c,
+    0x51a2f7fc, 0xc27a616a, 0x5196e337, 0xc276ec16,
+    0x518acdc4, 0xc2737922, 0x517eb7a4, 0xc270088e,
+    0x5172a0d7, 0xc26c9a58, 0x5166895f, 0xc2692e83,
+    0x515a713a, 0xc265c50e, 0x514e586a, 0xc2625df8,
+    0x51423ef0, 0xc25ef943, 0x513624cb, 0xc25b96ee,
+    0x512a09fc, 0xc25836f9, 0x511dee84, 0xc254d965,
+    0x5111d263, 0xc2517e31, 0x5105b599, 0xc24e255e,
+    0x50f99827, 0xc24aceed, 0x50ed7a0e, 0xc2477adc,
+    0x50e15b4e, 0xc244292c, 0x50d53be7, 0xc240d9de,
+    0x50c91bda, 0xc23d8cf1, 0x50bcfb28, 0xc23a4265,
+    0x50b0d9d0, 0xc236fa3b, 0x50a4b7d3, 0xc233b473,
+    0x50989532, 0xc230710d, 0x508c71ee, 0xc22d3009,
+    0x50804e06, 0xc229f167, 0x5074297b, 0xc226b528,
+    0x5068044e, 0xc2237b4b, 0x505bde7f, 0xc22043d0,
+    0x504fb80e, 0xc21d0eb8, 0x504390fd, 0xc219dc03,
+    0x5037694b, 0xc216abb1, 0x502b40f8, 0xc2137dc2,
+    0x501f1807, 0xc2105236, 0x5012ee76, 0xc20d290d,
+    0x5006c446, 0xc20a0248, 0x4ffa9979, 0xc206dde6,
+    0x4fee6e0d, 0xc203bbe8, 0x4fe24205, 0xc2009c4e,
+    0x4fd6155f, 0xc1fd7f17, 0x4fc9e81e, 0xc1fa6445,
+    0x4fbdba40, 0xc1f74bd6, 0x4fb18bc8, 0xc1f435cc,
+    0x4fa55cb4, 0xc1f12227, 0x4f992d06, 0xc1ee10e5,
+    0x4f8cfcbe, 0xc1eb0209, 0x4f80cbdc, 0xc1e7f591,
+    0x4f749a61, 0xc1e4eb7e, 0x4f68684e, 0xc1e1e3d0,
+    0x4f5c35a3, 0xc1dede87, 0x4f500260, 0xc1dbdba3,
+    0x4f43ce86, 0xc1d8db25, 0x4f379a16, 0xc1d5dd0c,
+    0x4f2b650f, 0xc1d2e158, 0x4f1f2f73, 0xc1cfe80a,
+    0x4f12f941, 0xc1ccf122, 0x4f06c27a, 0xc1c9fca0,
+    0x4efa8b20, 0xc1c70a84, 0x4eee5331, 0xc1c41ace,
+    0x4ee21aaf, 0xc1c12d7e, 0x4ed5e19a, 0xc1be4294,
+    0x4ec9a7f3, 0xc1bb5a11, 0x4ebd6db9, 0xc1b873f5,
+    0x4eb132ef, 0xc1b5903f, 0x4ea4f793, 0xc1b2aef0,
+    0x4e98bba7, 0xc1afd007, 0x4e8c7f2a, 0xc1acf386,
+    0x4e80421e, 0xc1aa196c, 0x4e740483, 0xc1a741b9,
+    0x4e67c65a, 0xc1a46c6e, 0x4e5b87a2, 0xc1a1998a,
+    0x4e4f485c, 0xc19ec90d, 0x4e430889, 0xc19bfaf9,
+    0x4e36c82a, 0xc1992f4c, 0x4e2a873e, 0xc1966606,
+    0x4e1e45c6, 0xc1939f29, 0x4e1203c3, 0xc190dab4,
+    0x4e05c135, 0xc18e18a7, 0x4df97e1d, 0xc18b5903,
+    0x4ded3a7b, 0xc1889bc6, 0x4de0f64f, 0xc185e0f3,
+    0x4dd4b19a, 0xc1832888, 0x4dc86c5d, 0xc1807285,
+    0x4dbc2698, 0xc17dbeec, 0x4dafe04b, 0xc17b0dbb,
+    0x4da39978, 0xc1785ef4, 0x4d97521d, 0xc175b296,
+    0x4d8b0a3d, 0xc17308a1, 0x4d7ec1d6, 0xc1706115,
+    0x4d7278eb, 0xc16dbbf3, 0x4d662f7b, 0xc16b193a,
+    0x4d59e586, 0xc16878eb, 0x4d4d9b0e, 0xc165db05,
+    0x4d415013, 0xc1633f8a, 0x4d350495, 0xc160a678,
+    0x4d28b894, 0xc15e0fd1, 0x4d1c6c11, 0xc15b7b94,
+    0x4d101f0e, 0xc158e9c1, 0x4d03d189, 0xc1565a58,
+    0x4cf78383, 0xc153cd5a, 0x4ceb34fe, 0xc15142c6,
+    0x4cdee5f9, 0xc14eba9d, 0x4cd29676, 0xc14c34df,
+    0x4cc64673, 0xc149b18b, 0x4cb9f5f3, 0xc14730a3,
+    0x4cada4f5, 0xc144b225, 0x4ca1537a, 0xc1423613,
+    0x4c950182, 0xc13fbc6c, 0x4c88af0e, 0xc13d4530,
+    0x4c7c5c1e, 0xc13ad060, 0x4c7008b3, 0xc1385dfb,
+    0x4c63b4ce, 0xc135ee02, 0x4c57606e, 0xc1338075,
+    0x4c4b0b94, 0xc1311553, 0x4c3eb641, 0xc12eac9d,
+    0x4c326075, 0xc12c4653, 0x4c260a31, 0xc129e276,
+    0x4c19b374, 0xc1278104, 0x4c0d5c41, 0xc12521ff,
+    0x4c010496, 0xc122c566, 0x4bf4ac75, 0xc1206b39,
+    0x4be853de, 0xc11e1379, 0x4bdbfad1, 0xc11bbe26,
+    0x4bcfa150, 0xc1196b3f, 0x4bc34759, 0xc1171ac6,
+    0x4bb6ecef, 0xc114ccb9, 0x4baa9211, 0xc1128119,
+    0x4b9e36c0, 0xc11037e6, 0x4b91dafc, 0xc10df120,
+    0x4b857ec7, 0xc10bacc8, 0x4b79221f, 0xc1096add,
+    0x4b6cc506, 0xc1072b5f, 0x4b60677c, 0xc104ee4f,
+    0x4b540982, 0xc102b3ac, 0x4b47ab19, 0xc1007b77,
+    0x4b3b4c40, 0xc0fe45b0, 0x4b2eecf8, 0xc0fc1257,
+    0x4b228d42, 0xc0f9e16b, 0x4b162d1d, 0xc0f7b2ee,
+    0x4b09cc8c, 0xc0f586df, 0x4afd6b8d, 0xc0f35d3e,
+    0x4af10a22, 0xc0f1360b, 0x4ae4a84b, 0xc0ef1147,
+    0x4ad84609, 0xc0eceef1, 0x4acbe35b, 0xc0eacf09,
+    0x4abf8043, 0xc0e8b190, 0x4ab31cc1, 0xc0e69686,
+    0x4aa6b8d5, 0xc0e47deb, 0x4a9a5480, 0xc0e267be,
+    0x4a8defc3, 0xc0e05401, 0x4a818a9d, 0xc0de42b2,
+    0x4a752510, 0xc0dc33d2, 0x4a68bf1b, 0xc0da2762,
+    0x4a5c58c0, 0xc0d81d61, 0x4a4ff1fe, 0xc0d615cf,
+    0x4a438ad7, 0xc0d410ad, 0x4a37234a, 0xc0d20dfa,
+    0x4a2abb59, 0xc0d00db6, 0x4a1e5303, 0xc0ce0fe3,
+    0x4a11ea49, 0xc0cc147f, 0x4a05812c, 0xc0ca1b8a,
+    0x49f917ac, 0xc0c82506, 0x49ecadc9, 0xc0c630f2,
+    0x49e04385, 0xc0c43f4d, 0x49d3d8df, 0xc0c25019,
+    0x49c76dd8, 0xc0c06355, 0x49bb0271, 0xc0be7901,
+    0x49ae96aa, 0xc0bc911d, 0x49a22a83, 0xc0baabaa,
+    0x4995bdfd, 0xc0b8c8a7, 0x49895118, 0xc0b6e815,
+    0x497ce3d5, 0xc0b509f3, 0x49707635, 0xc0b32e42,
+    0x49640837, 0xc0b15502, 0x495799dd, 0xc0af7e33,
+    0x494b2b27, 0xc0ada9d4, 0x493ebc14, 0xc0abd7e6,
+    0x49324ca7, 0xc0aa086a, 0x4925dcdf, 0xc0a83b5e,
+    0x49196cbc, 0xc0a670c4, 0x490cfc40, 0xc0a4a89b,
+    0x49008b6a, 0xc0a2e2e3, 0x48f41a3c, 0xc0a11f9d,
+    0x48e7a8b5, 0xc09f5ec8, 0x48db36d6, 0xc09da065,
+    0x48cec4a0, 0xc09be473, 0x48c25213, 0xc09a2af3,
+    0x48b5df30, 0xc09873e4, 0x48a96bf6, 0xc096bf48,
+    0x489cf867, 0xc0950d1d, 0x48908483, 0xc0935d64,
+    0x4884104b, 0xc091b01d, 0x48779bbe, 0xc0900548,
+    0x486b26de, 0xc08e5ce5, 0x485eb1ab, 0xc08cb6f5,
+    0x48523c25, 0xc08b1376, 0x4845c64d, 0xc089726a,
+    0x48395024, 0xc087d3d0, 0x482cd9a9, 0xc08637a9,
+    0x482062de, 0xc0849df4, 0x4813ebc2, 0xc08306b2,
+    0x48077457, 0xc08171e2, 0x47fafc9c, 0xc07fdf85,
+    0x47ee8493, 0xc07e4f9b, 0x47e20c3b, 0xc07cc223,
+    0x47d59396, 0xc07b371e, 0x47c91aa3, 0xc079ae8c,
+    0x47bca163, 0xc078286e, 0x47b027d7, 0xc076a4c2,
+    0x47a3adff, 0xc0752389, 0x479733dc, 0xc073a4c3,
+    0x478ab96e, 0xc0722871, 0x477e3eb5, 0xc070ae92,
+    0x4771c3b3, 0xc06f3726, 0x47654867, 0xc06dc22e,
+    0x4758ccd2, 0xc06c4fa8, 0x474c50f4, 0xc06adf97,
+    0x473fd4cf, 0xc06971f9, 0x47335862, 0xc06806ce,
+    0x4726dbae, 0xc0669e18, 0x471a5eb3, 0xc06537d4,
+    0x470de172, 0xc063d405, 0x470163eb, 0xc06272aa,
+    0x46f4e620, 0xc06113c2, 0x46e86810, 0xc05fb74e,
+    0x46dbe9bb, 0xc05e5d4e, 0x46cf6b23, 0xc05d05c3,
+    0x46c2ec48, 0xc05bb0ab, 0x46b66d29, 0xc05a5e07,
+    0x46a9edc9, 0xc0590dd8, 0x469d6e27, 0xc057c01d,
+    0x4690ee44, 0xc05674d6, 0x46846e1f, 0xc0552c03,
+    0x4677edbb, 0xc053e5a5, 0x466b6d16, 0xc052a1bb,
+    0x465eec33, 0xc0516045, 0x46526b10, 0xc0502145,
+    0x4645e9af, 0xc04ee4b8, 0x46396810, 0xc04daaa1,
+    0x462ce634, 0xc04c72fe, 0x4620641a, 0xc04b3dcf,
+    0x4613e1c5, 0xc04a0b16, 0x46075f33, 0xc048dad1,
+    0x45fadc66, 0xc047ad01, 0x45ee595d, 0xc04681a6,
+    0x45e1d61b, 0xc04558c0, 0x45d5529e, 0xc044324f,
+    0x45c8cee7, 0xc0430e53, 0x45bc4af8, 0xc041eccc,
+    0x45afc6d0, 0xc040cdba, 0x45a3426f, 0xc03fb11d,
+    0x4596bdd7, 0xc03e96f6, 0x458a3908, 0xc03d7f44,
+    0x457db403, 0xc03c6a07, 0x45712ec7, 0xc03b573f,
+    0x4564a955, 0xc03a46ed, 0x455823ae, 0xc0393910,
+    0x454b9dd3, 0xc0382da8, 0x453f17c3, 0xc03724b6,
+    0x4532917f, 0xc0361e3a, 0x45260b08, 0xc0351a33,
+    0x4519845e, 0xc03418a2, 0x450cfd82, 0xc0331986,
+    0x45007674, 0xc0321ce0, 0x44f3ef35, 0xc03122b0,
+    0x44e767c5, 0xc0302af5, 0x44dae024, 0xc02f35b1,
+    0x44ce5854, 0xc02e42e2, 0x44c1d054, 0xc02d5289,
+    0x44b54825, 0xc02c64a6, 0x44a8bfc7, 0xc02b7939,
+    0x449c373c, 0xc02a9042, 0x448fae83, 0xc029a9c1,
+    0x4483259d, 0xc028c5b6, 0x44769c8b, 0xc027e421,
+    0x446a134c, 0xc0270502, 0x445d89e2, 0xc0262859,
+    0x4451004d, 0xc0254e27, 0x4444768d, 0xc024766a,
+    0x4437eca4, 0xc023a124, 0x442b6290, 0xc022ce54,
+    0x441ed854, 0xc021fdfb, 0x44124dee, 0xc0213018,
+    0x4405c361, 0xc02064ab, 0x43f938ac, 0xc01f9bb5,
+    0x43ecadcf, 0xc01ed535, 0x43e022cc, 0xc01e112b,
+    0x43d397a3, 0xc01d4f99, 0x43c70c54, 0xc01c907c,
+    0x43ba80df, 0xc01bd3d6, 0x43adf546, 0xc01b19a7,
+    0x43a16988, 0xc01a61ee, 0x4394dda7, 0xc019acac,
+    0x438851a2, 0xc018f9e1, 0x437bc57b, 0xc018498c,
+    0x436f3931, 0xc0179bae, 0x4362acc5, 0xc016f047,
+    0x43562038, 0xc0164757, 0x43499389, 0xc015a0dd,
+    0x433d06bb, 0xc014fcda, 0x433079cc, 0xc0145b4e,
+    0x4323ecbe, 0xc013bc39, 0x43175f91, 0xc0131f9b,
+    0x430ad245, 0xc0128574, 0x42fe44dc, 0xc011edc3,
+    0x42f1b755, 0xc011588a, 0x42e529b0, 0xc010c5c7,
+    0x42d89bf0, 0xc010357c, 0x42cc0e13, 0xc00fa7a8,
+    0x42bf801a, 0xc00f1c4a, 0x42b2f207, 0xc00e9364,
+    0x42a663d8, 0xc00e0cf5, 0x4299d590, 0xc00d88fd,
+    0x428d472e, 0xc00d077c, 0x4280b8b3, 0xc00c8872,
+    0x42742a1f, 0xc00c0be0, 0x42679b73, 0xc00b91c4,
+    0x425b0caf, 0xc00b1a20, 0x424e7dd4, 0xc00aa4f3,
+    0x4241eee2, 0xc00a323d, 0x42355fd9, 0xc009c1ff,
+    0x4228d0bb, 0xc0095438, 0x421c4188, 0xc008e8e8,
+    0x420fb240, 0xc008800f, 0x420322e3, 0xc00819ae,
+    0x41f69373, 0xc007b5c4, 0x41ea03ef, 0xc0075452,
+    0x41dd7459, 0xc006f556, 0x41d0e4b0, 0xc00698d3,
+    0x41c454f5, 0xc0063ec6, 0x41b7c528, 0xc005e731,
+    0x41ab354b, 0xc0059214, 0x419ea55d, 0xc0053f6e,
+    0x4192155f, 0xc004ef3f, 0x41858552, 0xc004a188,
+    0x4178f536, 0xc0045648, 0x416c650b, 0xc0040d80,
+    0x415fd4d2, 0xc003c72f, 0x4153448c, 0xc0038356,
+    0x4146b438, 0xc00341f4, 0x413a23d8, 0xc003030a,
+    0x412d936c, 0xc002c697, 0x412102f4, 0xc0028c9c,
+    0x41147271, 0xc0025519, 0x4107e1e3, 0xc002200d,
+    0x40fb514b, 0xc001ed78, 0x40eec0aa, 0xc001bd5c,
+    0x40e22fff, 0xc0018fb6, 0x40d59f4c, 0xc0016489,
+    0x40c90e90, 0xc0013bd3, 0x40bc7dcc, 0xc0011594,
+    0x40afed02, 0xc000f1ce, 0x40a35c30, 0xc000d07e,
+    0x4096cb58, 0xc000b1a7, 0x408a3a7b, 0xc0009547,
+    0x407da998, 0xc0007b5f, 0x407118b0, 0xc00063ee,
+    0x406487c4, 0xc0004ef5, 0x4057f6d4, 0xc0003c74,
+    0x404b65e1, 0xc0002c6a, 0x403ed4ea, 0xc0001ed8,
+    0x403243f1, 0xc00013bd, 0x4025b2f7, 0xc0000b1a,
+    0x401921fb, 0xc00004ef, 0x400c90fe, 0xc000013c,
+};
+
+/**    
+* @brief  Initialization function for the Q31 RFFT/RIFFT.   
+* @param[in, out] *S             points to an instance of the Q31 RFFT/RIFFT structure.   
+* @param[in]      fftLenReal     length of the FFT.   
+* @param[in]      ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.   
+* @param[in]      bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.   
+* @return		The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.   
+*    
+* \par Description:   
+* \par   
+* The parameter <code>fftLenReal</code>	Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192.    
+* \par    
+* The parameter <code>ifftFlagR</code> controls whether a forward or inverse transform is computed.    
+* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.    
+* \par    
+* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.    
+* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.   
+* \par    7
+* This function also initializes Twiddle factor table.    
+*/
+
+arm_status arm_rfft_init_q31(
+    arm_rfft_instance_q31 * S,
+    uint32_t fftLenReal,
+    uint32_t ifftFlagR,
+    uint32_t bitReverseFlag)
+{
+    /*  Initialise the default arm status */
+    arm_status status = ARM_MATH_SUCCESS;
+
+    /*  Initialize the Real FFT length */
+    S->fftLenReal = (uint16_t) fftLenReal;
+
+    /*  Initialize the Twiddle coefficientA pointer */
+    S->pTwiddleAReal = (q31_t *) realCoefAQ31;
+
+    /*  Initialize the Twiddle coefficientB pointer */
+    S->pTwiddleBReal = (q31_t *) realCoefBQ31;
+
+    /*  Initialize the Flag for selection of RFFT or RIFFT */
+    S->ifftFlagR = (uint8_t) ifftFlagR;
+
+    /*  Initialize the Flag for calculation Bit reversal or not */
+    S->bitReverseFlagR = (uint8_t) bitReverseFlag;
+
+    /*  Initialization of coef modifier depending on the FFT length */
+    switch (S->fftLenReal)
+    {
+    case 8192u:
+        S->twidCoefRModifier = 1u;
+        S->pCfft = &arm_cfft_sR_q31_len4096;
+        break;
+    case 4096u:
+        S->twidCoefRModifier = 2u;
+        S->pCfft = &arm_cfft_sR_q31_len2048;
+        break;
+    case 2048u:
+        S->twidCoefRModifier = 4u;
+        S->pCfft = &arm_cfft_sR_q31_len1024;
+        break;
+    case 1024u:
+        S->twidCoefRModifier = 8u;
+        S->pCfft = &arm_cfft_sR_q31_len512;
+        break;
+    case 512u:
+        S->twidCoefRModifier = 16u;
+        S->pCfft = &arm_cfft_sR_q31_len256;
+        break;
+    case 256u:
+        S->twidCoefRModifier = 32u;
+        S->pCfft = &arm_cfft_sR_q31_len128;
+        break;
+    case 128u:
+        S->twidCoefRModifier = 64u;
+        S->pCfft = &arm_cfft_sR_q31_len64;
+        break;
+    case 64u:
+        S->twidCoefRModifier = 128u;
+        S->pCfft = &arm_cfft_sR_q31_len32;
+        break;
+    case 32u:
+        S->twidCoefRModifier = 256u;
+        S->pCfft = &arm_cfft_sR_q31_len16;
+        break;
+    default:
+        /*  Reporting argument error if rfftSize is not valid value */
+        status = ARM_MATH_ARGUMENT_ERROR;
+        break;
+    }
+
+    /* return the status of RFFT Init function */
+    return (status);
+}
+
+/**    
+* @} end of RealFFT group    
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,439 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_rfft_q15.c    
+*    
+* Description:	RFFT & RIFFT Q15 process function    
+*    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.     
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/*--------------------------------------------------------------------    
+*		Internal functions prototypes    
+--------------------------------------------------------------------*/
+
+void arm_split_rfft_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    q15_t * pATable,
+    q15_t * pBTable,
+    q15_t * pDst,
+    uint32_t modifier);
+
+void arm_split_rifft_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    q15_t * pATable,
+    q15_t * pBTable,
+    q15_t * pDst,
+    uint32_t modifier);
+
+/**    
+* @addtogroup RealFFT    
+* @{    
+*/
+
+/**    
+* @brief Processing function for the Q15 RFFT/RIFFT.   
+* @param[in]  *S    points to an instance of the Q15 RFFT/RIFFT structure.   
+* @param[in]  *pSrc points to the input buffer.   
+* @param[out] *pDst points to the output buffer.   
+* @return none.   
+*    
+* \par Input an output formats:   
+* \par    
+* Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.    
+* Hence the output format is different for different RFFT sizes.    
+* The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:   
+* \par    
+* \image html RFFTQ15.gif "Input and Output Formats for Q15 RFFT"    
+* \par    
+* \image html RIFFTQ15.gif "Input and Output Formats for Q15 RIFFT"    
+*/
+
+void arm_rfft_q15(
+    const arm_rfft_instance_q15 * S,
+    q15_t * pSrc,
+    q15_t * pDst)
+{
+    const arm_cfft_instance_q15 *S_CFFT = S->pCfft;
+    uint32_t i;
+    uint32_t L2 = S->fftLenReal >> 1;
+
+    /* Calculation of RIFFT of input */
+    if(S->ifftFlagR == 1u)
+    {
+        /*  Real IFFT core process */
+        arm_split_rifft_q15(pSrc, L2, S->pTwiddleAReal,
+                            S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+        
+        /* Complex IFFT process */
+        arm_cfft_q15(S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR);
+        
+        for(i=0;i<S->fftLenReal;i++)
+        {
+            pDst[i] = pDst[i] << 1;
+        }
+    }
+    else
+    {
+        /* Calculation of RFFT of input */
+        
+        /* Complex FFT process */
+        arm_cfft_q15(S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR);
+
+        /*  Real FFT core process */
+        arm_split_rfft_q15(pSrc, L2, S->pTwiddleAReal,
+                            S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+    }
+}
+
+/**    
+* @} end of RealFFT group    
+*/
+
+/**    
+* @brief  Core Real FFT process    
+* @param  *pSrc 				points to the input buffer.   
+* @param  fftLen  				length of FFT.   
+* @param  *pATable 			points to the A twiddle Coef buffer.    
+* @param  *pBTable 			points to the B twiddle Coef buffer.   
+* @param  *pDst 				points to the output buffer.   
+* @param  modifier 	        twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+* @return none.    
+* The function implements a Real FFT    
+*/
+
+void arm_split_rfft_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    q15_t * pATable,
+    q15_t * pBTable,
+    q15_t * pDst,
+    uint32_t modifier)
+{
+    uint32_t i;                                    /* Loop Counter */
+    q31_t outR, outI;                              /* Temporary variables for output */
+    q15_t *pCoefA, *pCoefB;                        /* Temporary pointers for twiddle factors */
+    q15_t *pSrc1, *pSrc2;
+#ifndef ARM_MATH_CM0_FAMILY
+    q15_t *pD1, *pD2;
+#endif
+
+    //  pSrc[2u * fftLen] = pSrc[0]; 
+    //  pSrc[(2u * fftLen) + 1u] = pSrc[1]; 
+
+    pCoefA = &pATable[modifier * 2u];
+    pCoefB = &pBTable[modifier * 2u];
+
+    pSrc1 = &pSrc[2];
+    pSrc2 = &pSrc[(2u * fftLen) - 2u];
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+    i = 1u;
+    pD1 = pDst + 2;
+    pD2 = pDst + (4u * fftLen) - 2;
+
+    for(i = fftLen - 1; i > 0; i--)
+    {
+        /*    
+        outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]    
+        + pSrc[2 * n - 2 * i] * pBTable[2 * i] +    
+        pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);    
+        */
+
+        /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +    
+        pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */
+
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        /* pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] */
+        outR = __SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA));
+
+#else
+
+        /* -(pSrc[2 * i + 1] * pATable[2 * i + 1] - pSrc[2 * i] * pATable[2 * i]) */
+        outR = -(__SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA)));
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /* pSrc[2 * n - 2 * i] * pBTable[2 * i] +    
+        pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */
+        outR = __SMLAD(*__SIMD32(pSrc2), *__SIMD32(pCoefB), outR) >> 16u;
+
+        /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        outI = __SMUSDX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB));
+
+#else
+
+        outI = __SMUSDX(*__SIMD32(pCoefB), *__SIMD32(pSrc2)--);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /* (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] */
+        outI = __SMLADX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), outI);
+
+        /* write output */
+        *pD1++ = (q15_t) outR;
+        *pD1++ = outI >> 16u;
+
+        /* write complex conjugate output */
+        pD2[0] = (q15_t) outR;
+        pD2[1] = -(outI >> 16u);
+        pD2 -= 2;
+
+        /* update coefficient pointer */
+        pCoefB = pCoefB + (2u * modifier);
+        pCoefA = pCoefA + (2u * modifier);
+    }
+
+    pDst[2u * fftLen] = (pSrc[0] - pSrc[1]) >> 1;
+    pDst[(2u * fftLen) + 1u] = 0;
+
+    pDst[0] = (pSrc[0] + pSrc[1]) >> 1;
+    pDst[1] = 0;
+
+#else
+
+    /* Run the below code for Cortex-M0 */
+    i = 1u;
+
+    while(i < fftLen)
+    {
+        /*    
+        outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]    
+        + pSrc[2 * n - 2 * i] * pBTable[2 * i] +    
+        pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);    
+        */
+
+        outR = *pSrc1 * *pCoefA;
+        outR = outR - (*(pSrc1 + 1) * *(pCoefA + 1));
+        outR = outR + (*pSrc2 * *pCoefB);
+        outR = (outR + (*(pSrc2 + 1) * *(pCoefB + 1))) >> 16;
+
+
+        /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +    
+        pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);   
+        */
+
+        outI = *pSrc2 * *(pCoefB + 1);
+        outI = outI - (*(pSrc2 + 1) * *pCoefB);
+        outI = outI + (*(pSrc1 + 1) * *pCoefA);
+        outI = outI + (*pSrc1 * *(pCoefA + 1));
+
+        /* update input pointers */
+        pSrc1 += 2u;
+        pSrc2 -= 2u;
+
+        /* write output */
+        pDst[2u * i] = (q15_t) outR;
+        pDst[(2u * i) + 1u] = outI >> 16u;
+
+        /* write complex conjugate output */
+        pDst[(4u * fftLen) - (2u * i)] = (q15_t) outR;
+        pDst[((4u * fftLen) - (2u * i)) + 1u] = -(outI >> 16u);
+
+        /* update coefficient pointer */
+        pCoefB = pCoefB + (2u * modifier);
+        pCoefA = pCoefA + (2u * modifier);
+
+        i++;
+    }
+
+    pDst[2u * fftLen] = (pSrc[0] - pSrc[1]) >> 1;
+    pDst[(2u * fftLen) + 1u] = 0;
+
+    pDst[0] = (pSrc[0] + pSrc[1]) >> 1;
+    pDst[1] = 0;
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+}
+
+
+/**    
+* @brief  Core Real IFFT process    
+* @param[in]   *pSrc 				points to the input buffer.    
+* @param[in]   fftLen  		    length of FFT.   
+* @param[in]   *pATable 			points to the twiddle Coef A buffer.   
+* @param[in]   *pBTable 			points to the twiddle Coef B buffer.    
+* @param[out]  *pDst 				points to the output buffer.   
+* @param[in]   modifier 	        twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+* @return none.    
+* The function implements a Real IFFT    
+*/
+void arm_split_rifft_q15(
+    q15_t * pSrc,
+    uint32_t fftLen,
+    q15_t * pATable,
+    q15_t * pBTable,
+    q15_t * pDst,
+    uint32_t modifier)
+{
+    uint32_t i;                                    /* Loop Counter */
+    q31_t outR, outI;                              /* Temporary variables for output */
+    q15_t *pCoefA, *pCoefB;                        /* Temporary pointers for twiddle factors */
+    q15_t *pSrc1, *pSrc2;
+    q15_t *pDst1 = &pDst[0];
+
+    pCoefA = &pATable[0];
+    pCoefB = &pBTable[0];
+
+    pSrc1 = &pSrc[0];
+    pSrc2 = &pSrc[2u * fftLen];
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+    /* Run the below code for Cortex-M4 and Cortex-M3 */
+    i = fftLen;
+
+    while(i > 0u)
+    {
+        /*    
+        outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +    
+        pIn[2 * n - 2 * i] * pBTable[2 * i] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);    
+
+        outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -    
+        pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);    
+        */
+
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        /* pIn[2 * n - 2 * i] * pBTable[2 * i] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */
+        outR = __SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB));
+
+#else
+
+        /* -(-pIn[2 * n - 2 * i] * pBTable[2 * i] +  
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1])) */
+        outR = -(__SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB)));
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /* pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +    
+        pIn[2 * n - 2 * i] * pBTable[2 * i] */
+        outR = __SMLAD(*__SIMD32(pSrc1), *__SIMD32(pCoefA), outR) >> 16u;
+
+        /*    
+        -pIn[2 * n - 2 * i] * pBTable[2 * i + 1] +    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
+        outI = __SMUADX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB));
+
+        /* pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        outI = __SMLSDX(*__SIMD32(pCoefA), *__SIMD32(pSrc1)++, -outI);
+
+#else
+
+        outI = __SMLSDX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), -outI);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+        /* write output */
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+        *__SIMD32(pDst1)++ = __PKHBT(outR, (outI >> 16u), 16);
+
+#else
+
+        *__SIMD32(pDst1)++ = __PKHBT((outI >> 16u), outR, 16);
+
+#endif /*      #ifndef ARM_MATH_BIG_ENDIAN     */
+
+        /* update coefficient pointer */
+        pCoefB = pCoefB + (2u * modifier);
+        pCoefA = pCoefA + (2u * modifier);
+
+        i--;
+    }
+#else
+    /* Run the below code for Cortex-M0 */
+    i = fftLen;
+
+    while(i > 0u)
+    {
+        /*    
+        outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +    
+        pIn[2 * n - 2 * i] * pBTable[2 * i] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);    
+        */
+
+        outR = *pSrc2 * *pCoefB;
+        outR = outR - (*(pSrc2 + 1) * *(pCoefB + 1));
+        outR = outR + (*pSrc1 * *pCoefA);
+        outR = (outR + (*(pSrc1 + 1) * *(pCoefA + 1))) >> 16;
+
+        /*   
+        outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -   
+        pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -   
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);   
+        */
+
+        outI = *(pSrc1 + 1) * *pCoefA;
+        outI = outI - (*pSrc1 * *(pCoefA + 1));
+        outI = outI - (*pSrc2 * *(pCoefB + 1));
+        outI = outI - (*(pSrc2 + 1) * *(pCoefB));
+
+        /* update input pointers */
+        pSrc1 += 2u;
+        pSrc2 -= 2u;
+
+        /* write output */
+        *pDst1++ = (q15_t) outR;
+        *pDst1++ = (q15_t) (outI >> 16);
+
+        /* update coefficient pointer */
+        pCoefB = pCoefB + (2u * modifier);
+        pCoefA = pCoefA + (2u * modifier);
+
+        i--;
+    }
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,296 @@
+/* ----------------------------------------------------------------------    
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
+*    
+* $Date:        19. March 2015 
+* $Revision: 	V.1.4.5  
+*    
+* Project: 	    CMSIS DSP Library    
+* Title:	    arm_rfft_q31.c    
+*    
+* Description:	RFFT & RIFFT Q31 process function    
+*    
+*    
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Redistribution and use in source and binary forms, with or without 
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the 
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.    
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/*--------------------------------------------------------------------    
+*		Internal functions prototypes    
+--------------------------------------------------------------------*/
+
+void arm_split_rfft_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    q31_t * pATable,
+    q31_t * pBTable,
+    q31_t * pDst,
+    uint32_t modifier);
+
+void arm_split_rifft_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    q31_t * pATable,
+    q31_t * pBTable,
+    q31_t * pDst,
+    uint32_t modifier);
+
+/**    
+* @addtogroup RealFFT    
+* @{    
+*/
+
+/**    
+* @brief Processing function for the Q31 RFFT/RIFFT.   
+* @param[in]  *S    points to an instance of the Q31 RFFT/RIFFT structure.   
+* @param[in]  *pSrc points to the input buffer.   
+* @param[out] *pDst points to the output buffer.   
+* @return none.   
+*    
+* \par Input an output formats:   
+* \par    
+* Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.   
+* Hence the output format is different for different RFFT sizes.    
+* The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:   
+* \par    
+* \image html RFFTQ31.gif "Input and Output Formats for Q31 RFFT"    
+*    
+* \par    
+* \image html RIFFTQ31.gif "Input and Output Formats for Q31 RIFFT"    
+*/
+void arm_rfft_q31(
+    const arm_rfft_instance_q31 * S,
+    q31_t * pSrc,
+    q31_t * pDst)
+{
+    const arm_cfft_instance_q31 *S_CFFT = S->pCfft;
+    uint32_t i;
+    uint32_t L2 = S->fftLenReal >> 1;
+
+    /* Calculation of RIFFT of input */
+    if(S->ifftFlagR == 1u)
+    {
+        /*  Real IFFT core process */
+        arm_split_rifft_q31(pSrc, L2, S->pTwiddleAReal,
+                            S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+        
+        /* Complex IFFT process */
+        arm_cfft_q31(S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR);
+        
+        for(i=0;i<S->fftLenReal;i++)
+        {
+            pDst[i] = pDst[i] << 1;
+        }
+    }
+    else
+    {
+        /* Calculation of RFFT of input */
+        
+        /* Complex FFT process */
+        arm_cfft_q31(S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR);
+
+        /*  Real FFT core process */
+        arm_split_rfft_q31(pSrc, L2, S->pTwiddleAReal,
+                            S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+    }
+}
+
+/**    
+* @} end of RealFFT group    
+*/
+
+/**    
+* @brief  Core Real FFT process    
+* @param[in]   *pSrc 				points to the input buffer.    
+* @param[in]   fftLen  			    length of FFT.   
+* @param[in]   *pATable 			points to the twiddle Coef A buffer.    
+* @param[in]   *pBTable 			points to the twiddle Coef B buffer.    
+* @param[out]  *pDst 				points to the output buffer.    
+* @param[in]   modifier 	        twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+* @return none.    
+*/
+void arm_split_rfft_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    q31_t * pATable,
+    q31_t * pBTable,
+    q31_t * pDst,
+    uint32_t modifier)
+{
+    uint32_t i;                                    /* Loop Counter */
+    q31_t outR, outI;                              /* Temporary variables for output */
+    q31_t *pCoefA, *pCoefB;                        /* Temporary pointers for twiddle factors */
+    q31_t CoefA1, CoefA2, CoefB1;                  /* Temporary variables for twiddle coefficients */
+    q31_t *pOut1 = &pDst[2], *pOut2 = &pDst[(4u * fftLen) - 1u];
+    q31_t *pIn1 = &pSrc[2], *pIn2 = &pSrc[(2u * fftLen) - 1u];
+
+    /* Init coefficient pointers */
+    pCoefA = &pATable[modifier * 2u];
+    pCoefB = &pBTable[modifier * 2u];
+
+    i = fftLen - 1u;
+
+    while(i > 0u)
+    {
+        /*    
+        outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]    
+        + pSrc[2 * n - 2 * i] * pBTable[2 * i] +    
+        pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);    
+        */
+
+        /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +    
+        pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */
+
+        CoefA1 = *pCoefA++;
+        CoefA2 = *pCoefA;
+
+        /* outR = (pSrc[2 * i] * pATable[2 * i] */    
+        mult_32x32_keep32_R(outR, *pIn1, CoefA1);
+
+        /* outI = pIn[2 * i] * pATable[2 * i + 1] */
+        mult_32x32_keep32_R(outI, *pIn1++, CoefA2);
+
+        /* - pSrc[2 * i + 1] * pATable[2 * i + 1] */
+        multSub_32x32_keep32_R(outR, *pIn1, CoefA2);
+
+        /* (pIn[2 * i + 1] * pATable[2 * i] */
+        multAcc_32x32_keep32_R(outI, *pIn1++, CoefA1);
+
+        /* pSrc[2 * n - 2 * i] * pBTable[2 * i]  */
+        multSub_32x32_keep32_R(outR, *pIn2, CoefA2);
+        CoefB1 = *pCoefB;
+
+        /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */
+        multSub_32x32_keep32_R(outI, *pIn2--, CoefB1);
+
+        /* pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */
+        multAcc_32x32_keep32_R(outR, *pIn2, CoefB1);
+
+        /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
+        multSub_32x32_keep32_R(outI, *pIn2--, CoefA2);
+
+        /* write output */
+        *pOut1++ = outR;
+        *pOut1++ = outI;
+
+        /* write complex conjugate output */
+        *pOut2-- = -outI;
+        *pOut2-- = outR;
+
+        /* update coefficient pointer */
+        pCoefB = pCoefB + (modifier * 2u);
+        pCoefA = pCoefA + ((modifier * 2u) - 1u);
+
+        i--;
+    }
+    pDst[2u * fftLen] = (pSrc[0] - pSrc[1]) >> 1;
+    pDst[(2u * fftLen) + 1u] = 0;
+
+    pDst[0] = (pSrc[0] + pSrc[1]) >> 1;
+    pDst[1] = 0;
+}
+
+/**    
+* @brief  Core Real IFFT process    
+* @param[in]   *pSrc 				points to the input buffer.   
+* @param[in]   fftLen  			    length of FFT.    
+* @param[in]   *pATable 			points to the twiddle Coef A buffer.   
+* @param[in]   *pBTable 			points to the twiddle Coef B buffer.    
+* @param[out]  *pDst 				points to the output buffer.   
+* @param[in]   modifier 	        twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.   
+* @return none.    
+*/
+void arm_split_rifft_q31(
+    q31_t * pSrc,
+    uint32_t fftLen,
+    q31_t * pATable,
+    q31_t * pBTable,
+    q31_t * pDst,
+    uint32_t modifier)
+{
+    q31_t outR, outI;                              /* Temporary variables for output */
+    q31_t *pCoefA, *pCoefB;                        /* Temporary pointers for twiddle factors */
+    q31_t CoefA1, CoefA2, CoefB1;                  /* Temporary variables for twiddle coefficients */
+    q31_t *pIn1 = &pSrc[0], *pIn2 = &pSrc[(2u * fftLen) + 1u];
+
+    pCoefA = &pATable[0];
+    pCoefB = &pBTable[0];
+
+    while(fftLen > 0u)
+    {
+        /*    
+        outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +    
+        pIn[2 * n - 2 * i] * pBTable[2 * i] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);    
+
+        outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -    
+        pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -    
+        pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);   
+        */
+        CoefA1 = *pCoefA++;
+        CoefA2 = *pCoefA;
+
+        /* outR = (pIn[2 * i] * pATable[2 * i] */
+        mult_32x32_keep32_R(outR, *pIn1, CoefA1);
+
+        /* - pIn[2 * i] * pATable[2 * i + 1] */
+        mult_32x32_keep32_R(outI, *pIn1++, -CoefA2);
+        
+        /* pIn[2 * i + 1] * pATable[2 * i + 1] */
+        multAcc_32x32_keep32_R(outR, *pIn1, CoefA2);
+
+        /* pIn[2 * i + 1] * pATable[2 * i] */
+        multAcc_32x32_keep32_R(outI, *pIn1++, CoefA1);
+
+        /* pIn[2 * n - 2 * i] * pBTable[2 * i] */
+        multAcc_32x32_keep32_R(outR, *pIn2, CoefA2);
+        CoefB1 = *pCoefB;
+
+        /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */
+        multSub_32x32_keep32_R(outI, *pIn2--, CoefB1);
+
+        /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */
+        multAcc_32x32_keep32_R(outR, *pIn2, CoefB1);
+
+        /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
+        multAcc_32x32_keep32_R(outI, *pIn2--, CoefA2);
+
+        /* write output */
+        *pDst++ = outR;
+        *pDst++ = outI;
+
+        /* update coefficient pointer */
+        pCoefB = pCoefB + (modifier * 2u);
+        pCoefA = pCoefA + ((modifier * 2u) - 1u);
+
+        /* Decrement loop count */
+        fftLen--;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,11073 @@
+/**
+  ******************************************************************************
+  * @file    stm32f103xb.h
+  * @author  MCD Application Team
+  * @version V4.1.0
+  * @date    29-April-2016
+  * @brief   CMSIS Cortex-M3 Device Peripheral Access Layer Header File. 
+  *          This file contains all the peripheral register's definitions, bits 
+  *          definitions and memory mapping for STM32F1xx devices.            
+  *            
+  *          This file contains:
+  *           - Data structures and the address mapping for all peripherals
+  *           - Peripheral's registers declarations and bits definition
+  *           - Macros to access peripheral’s registers hardware
+  *  
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+
+/** @addtogroup CMSIS
+  * @{
+  */
+
+/** @addtogroup stm32f103xb
+  * @{
+  */
+    
+#ifndef __STM32F103xB_H
+#define __STM32F103xB_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif 
+
+/** @addtogroup Configuration_section_for_CMSIS
+  * @{
+  */
+/**
+  * @brief Configuration of the Cortex-M3 Processor and Core Peripherals 
+ */
+ #define __MPU_PRESENT             0      /*!< Other STM32 devices does not provide an MPU  */
+#define __CM3_REV                 0x0200  /*!< Core Revision r2p0                           */
+#define __NVIC_PRIO_BITS          4       /*!< STM32 uses 4 Bits for the Priority Levels    */
+#define __Vendor_SysTickConfig    0       /*!< Set to 1 if different SysTick Config is used */
+
+/**
+  * @}
+  */
+
+/** @addtogroup Peripheral_interrupt_number_definition
+  * @{
+  */
+
+/**
+ * @brief STM32F10x Interrupt Number Definition, according to the selected device 
+ *        in @ref Library_configuration_section 
+ */
+
+ /*!< Interrupt Number Definition */
+typedef enum
+{
+/******  Cortex-M3 Processor Exceptions Numbers ***************************************************/
+  NonMaskableInt_IRQn         = -14,    /*!< 2 Non Maskable Interrupt                             */
+  HardFault_IRQn              = -13,    /*!< 3 Cortex-M3 Hard Fault Interrupt                     */
+  MemoryManagement_IRQn       = -12,    /*!< 4 Cortex-M3 Memory Management Interrupt              */
+  BusFault_IRQn               = -11,    /*!< 5 Cortex-M3 Bus Fault Interrupt                      */
+  UsageFault_IRQn             = -10,    /*!< 6 Cortex-M3 Usage Fault Interrupt                    */
+  SVCall_IRQn                 = -5,     /*!< 11 Cortex-M3 SV Call Interrupt                       */
+  DebugMonitor_IRQn           = -4,     /*!< 12 Cortex-M3 Debug Monitor Interrupt                 */
+  PendSV_IRQn                 = -2,     /*!< 14 Cortex-M3 Pend SV Interrupt                       */
+  SysTick_IRQn                = -1,     /*!< 15 Cortex-M3 System Tick Interrupt                   */
+
+/******  STM32 specific Interrupt Numbers *********************************************************/
+  WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt                            */
+  PVD_IRQn                    = 1,      /*!< PVD through EXTI Line detection Interrupt            */
+  TAMPER_IRQn                 = 2,      /*!< Tamper Interrupt                                     */
+  RTC_IRQn                    = 3,      /*!< RTC global Interrupt                                 */
+  FLASH_IRQn                  = 4,      /*!< FLASH global Interrupt                               */
+  RCC_IRQn                    = 5,      /*!< RCC global Interrupt                                 */
+  EXTI0_IRQn                  = 6,      /*!< EXTI Line0 Interrupt                                 */
+  EXTI1_IRQn                  = 7,      /*!< EXTI Line1 Interrupt                                 */
+  EXTI2_IRQn                  = 8,      /*!< EXTI Line2 Interrupt                                 */
+  EXTI3_IRQn                  = 9,      /*!< EXTI Line3 Interrupt                                 */
+  EXTI4_IRQn                  = 10,     /*!< EXTI Line4 Interrupt                                 */
+  DMA1_Channel1_IRQn          = 11,     /*!< DMA1 Channel 1 global Interrupt                      */
+  DMA1_Channel2_IRQn          = 12,     /*!< DMA1 Channel 2 global Interrupt                      */
+  DMA1_Channel3_IRQn          = 13,     /*!< DMA1 Channel 3 global Interrupt                      */
+  DMA1_Channel4_IRQn          = 14,     /*!< DMA1 Channel 4 global Interrupt                      */
+  DMA1_Channel5_IRQn          = 15,     /*!< DMA1 Channel 5 global Interrupt                      */
+  DMA1_Channel6_IRQn          = 16,     /*!< DMA1 Channel 6 global Interrupt                      */
+  DMA1_Channel7_IRQn          = 17,     /*!< DMA1 Channel 7 global Interrupt                      */
+  ADC1_2_IRQn                 = 18,     /*!< ADC1 and ADC2 global Interrupt                       */
+  USB_HP_CAN1_TX_IRQn         = 19,     /*!< USB Device High Priority or CAN1 TX Interrupts       */
+  USB_LP_CAN1_RX0_IRQn        = 20,     /*!< USB Device Low Priority or CAN1 RX0 Interrupts       */
+  CAN1_RX1_IRQn               = 21,     /*!< CAN1 RX1 Interrupt                                   */
+  CAN1_SCE_IRQn               = 22,     /*!< CAN1 SCE Interrupt                                   */
+  EXTI9_5_IRQn                = 23,     /*!< External Line[9:5] Interrupts                        */
+  TIM1_BRK_IRQn               = 24,     /*!< TIM1 Break Interrupt                                 */
+  TIM1_UP_IRQn                = 25,     /*!< TIM1 Update Interrupt                                */
+  TIM1_TRG_COM_IRQn           = 26,     /*!< TIM1 Trigger and Commutation Interrupt               */
+  TIM1_CC_IRQn                = 27,     /*!< TIM1 Capture Compare Interrupt                       */
+  TIM2_IRQn                   = 28,     /*!< TIM2 global Interrupt                                */
+  TIM3_IRQn                   = 29,     /*!< TIM3 global Interrupt                                */
+  TIM4_IRQn                   = 30,     /*!< TIM4 global Interrupt                                */
+  I2C1_EV_IRQn                = 31,     /*!< I2C1 Event Interrupt                                 */
+  I2C1_ER_IRQn                = 32,     /*!< I2C1 Error Interrupt                                 */
+  I2C2_EV_IRQn                = 33,     /*!< I2C2 Event Interrupt                                 */
+  I2C2_ER_IRQn                = 34,     /*!< I2C2 Error Interrupt                                 */
+  SPI1_IRQn                   = 35,     /*!< SPI1 global Interrupt                                */
+  SPI2_IRQn                   = 36,     /*!< SPI2 global Interrupt                                */
+  USART1_IRQn                 = 37,     /*!< USART1 global Interrupt                              */
+  USART2_IRQn                 = 38,     /*!< USART2 global Interrupt                              */
+  USART3_IRQn                 = 39,     /*!< USART3 global Interrupt                              */
+  EXTI15_10_IRQn              = 40,     /*!< External Line[15:10] Interrupts                      */
+  RTC_Alarm_IRQn              = 41,     /*!< RTC Alarm through EXTI Line Interrupt                */
+  USBWakeUp_IRQn              = 42,     /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */
+} IRQn_Type;
+
+
+/**
+  * @}
+  */
+
+#include "core_cm3.h"
+#include "system_stm32f1xx.h"
+#include <stdint.h>
+
+/** @addtogroup Peripheral_registers_structures
+  * @{
+  */   
+
+/** 
+  * @brief Analog to Digital Converter  
+  */
+
+typedef struct
+{
+  __IO uint32_t SR;
+  __IO uint32_t CR1;
+  __IO uint32_t CR2;
+  __IO uint32_t SMPR1;
+  __IO uint32_t SMPR2;
+  __IO uint32_t JOFR1;
+  __IO uint32_t JOFR2;
+  __IO uint32_t JOFR3;
+  __IO uint32_t JOFR4;
+  __IO uint32_t HTR;
+  __IO uint32_t LTR;
+  __IO uint32_t SQR1;
+  __IO uint32_t SQR2;
+  __IO uint32_t SQR3;
+  __IO uint32_t JSQR;
+  __IO uint32_t JDR1;
+  __IO uint32_t JDR2;
+  __IO uint32_t JDR3;
+  __IO uint32_t JDR4;
+  __IO uint32_t DR;
+} ADC_TypeDef;
+
+typedef struct
+{
+  __IO uint32_t SR;               /*!< ADC status register,    used for ADC multimode (bits common to several ADC instances). Address offset: ADC1 base address         */
+  __IO uint32_t CR1;              /*!< ADC control register 1, used for ADC multimode (bits common to several ADC instances). Address offset: ADC1 base address + 0x04  */
+  __IO uint32_t CR2;              /*!< ADC control register 2, used for ADC multimode (bits common to several ADC instances). Address offset: ADC1 base address + 0x08  */
+  uint32_t  RESERVED[16];
+  __IO uint32_t DR;               /*!< ADC data register,      used for ADC multimode (bits common to several ADC instances). Address offset: ADC1 base address + 0x4C  */
+} ADC_Common_TypeDef;
+
+/** 
+  * @brief Backup Registers  
+  */
+
+typedef struct
+{
+  uint32_t  RESERVED0;
+  __IO uint32_t DR1;
+  __IO uint32_t DR2;
+  __IO uint32_t DR3;
+  __IO uint32_t DR4;
+  __IO uint32_t DR5;
+  __IO uint32_t DR6;
+  __IO uint32_t DR7;
+  __IO uint32_t DR8;
+  __IO uint32_t DR9;
+  __IO uint32_t DR10;
+  __IO uint32_t RTCCR;
+  __IO uint32_t CR;
+  __IO uint32_t CSR;
+} BKP_TypeDef;
+  
+/** 
+  * @brief Controller Area Network TxMailBox 
+  */
+
+typedef struct
+{
+  __IO uint32_t TIR;
+  __IO uint32_t TDTR;
+  __IO uint32_t TDLR;
+  __IO uint32_t TDHR;
+} CAN_TxMailBox_TypeDef;
+
+/** 
+  * @brief Controller Area Network FIFOMailBox 
+  */
+  
+typedef struct
+{
+  __IO uint32_t RIR;
+  __IO uint32_t RDTR;
+  __IO uint32_t RDLR;
+  __IO uint32_t RDHR;
+} CAN_FIFOMailBox_TypeDef;
+
+/** 
+  * @brief Controller Area Network FilterRegister 
+  */
+  
+typedef struct
+{
+  __IO uint32_t FR1;
+  __IO uint32_t FR2;
+} CAN_FilterRegister_TypeDef;
+
+/** 
+  * @brief Controller Area Network 
+  */
+  
+typedef struct
+{
+  __IO uint32_t MCR;
+  __IO uint32_t MSR;
+  __IO uint32_t TSR;
+  __IO uint32_t RF0R;
+  __IO uint32_t RF1R;
+  __IO uint32_t IER;
+  __IO uint32_t ESR;
+  __IO uint32_t BTR;
+  uint32_t  RESERVED0[88];
+  CAN_TxMailBox_TypeDef sTxMailBox[3];
+  CAN_FIFOMailBox_TypeDef sFIFOMailBox[2];
+  uint32_t  RESERVED1[12];
+  __IO uint32_t FMR;
+  __IO uint32_t FM1R;
+  uint32_t  RESERVED2;
+  __IO uint32_t FS1R;
+  uint32_t  RESERVED3;
+  __IO uint32_t FFA1R;
+  uint32_t  RESERVED4;
+  __IO uint32_t FA1R;
+  uint32_t  RESERVED5[8];
+  CAN_FilterRegister_TypeDef sFilterRegister[14];
+} CAN_TypeDef;
+
+/** 
+  * @brief CRC calculation unit 
+  */
+
+typedef struct
+{
+  __IO uint32_t DR;           /*!< CRC Data register,                           Address offset: 0x00 */
+  __IO uint8_t  IDR;          /*!< CRC Independent data register,               Address offset: 0x04 */
+  uint8_t       RESERVED0;    /*!< Reserved,                                    Address offset: 0x05 */
+  uint16_t      RESERVED1;    /*!< Reserved,                                    Address offset: 0x06 */  
+  __IO uint32_t CR;           /*!< CRC Control register,                        Address offset: 0x08 */ 
+} CRC_TypeDef;
+
+
+/** 
+  * @brief Debug MCU
+  */
+
+typedef struct
+{
+  __IO uint32_t IDCODE;
+  __IO uint32_t CR;
+}DBGMCU_TypeDef;
+
+/** 
+  * @brief DMA Controller
+  */
+
+typedef struct
+{
+  __IO uint32_t CCR;
+  __IO uint32_t CNDTR;
+  __IO uint32_t CPAR;
+  __IO uint32_t CMAR;
+} DMA_Channel_TypeDef;
+
+typedef struct
+{
+  __IO uint32_t ISR;
+  __IO uint32_t IFCR;
+} DMA_TypeDef;
+
+
+
+/** 
+  * @brief External Interrupt/Event Controller
+  */
+
+typedef struct
+{
+  __IO uint32_t IMR;
+  __IO uint32_t EMR;
+  __IO uint32_t RTSR;
+  __IO uint32_t FTSR;
+  __IO uint32_t SWIER;
+  __IO uint32_t PR;
+} EXTI_TypeDef;
+
+/** 
+  * @brief FLASH Registers
+  */
+
+typedef struct
+{
+  __IO uint32_t ACR;
+  __IO uint32_t KEYR;
+  __IO uint32_t OPTKEYR;
+  __IO uint32_t SR;
+  __IO uint32_t CR;
+  __IO uint32_t AR;
+  __IO uint32_t RESERVED;
+  __IO uint32_t OBR;
+  __IO uint32_t WRPR;
+} FLASH_TypeDef;
+
+/** 
+  * @brief Option Bytes Registers
+  */
+  
+typedef struct
+{
+  __IO uint16_t RDP;
+  __IO uint16_t USER;
+  __IO uint16_t Data0;
+  __IO uint16_t Data1;
+  __IO uint16_t WRP0;
+  __IO uint16_t WRP1;
+  __IO uint16_t WRP2;
+  __IO uint16_t WRP3;
+} OB_TypeDef;
+
+/** 
+  * @brief General Purpose I/O
+  */
+
+typedef struct
+{
+  __IO uint32_t CRL;
+  __IO uint32_t CRH;
+  __IO uint32_t IDR;
+  __IO uint32_t ODR;
+  __IO uint32_t BSRR;
+  __IO uint32_t BRR;
+  __IO uint32_t LCKR;
+} GPIO_TypeDef;
+
+/** 
+  * @brief Alternate Function I/O
+  */
+
+typedef struct
+{
+  __IO uint32_t EVCR;
+  __IO uint32_t MAPR;
+  __IO uint32_t EXTICR[4];
+  uint32_t RESERVED0;
+  __IO uint32_t MAPR2;  
+} AFIO_TypeDef;
+/** 
+  * @brief Inter Integrated Circuit Interface
+  */
+
+typedef struct
+{
+  __IO uint32_t CR1;
+  __IO uint32_t CR2;
+  __IO uint32_t OAR1;
+  __IO uint32_t OAR2;
+  __IO uint32_t DR;
+  __IO uint32_t SR1;
+  __IO uint32_t SR2;
+  __IO uint32_t CCR;
+  __IO uint32_t TRISE;
+} I2C_TypeDef;
+
+/** 
+  * @brief Independent WATCHDOG
+  */
+
+typedef struct
+{
+  __IO uint32_t KR;           /*!< Key register,                                Address offset: 0x00 */
+  __IO uint32_t PR;           /*!< Prescaler register,                          Address offset: 0x04 */
+  __IO uint32_t RLR;          /*!< Reload register,                             Address offset: 0x08 */
+  __IO uint32_t SR;           /*!< Status register,                             Address offset: 0x0C */
+} IWDG_TypeDef;
+
+/** 
+  * @brief Power Control
+  */
+
+typedef struct
+{
+  __IO uint32_t CR;
+  __IO uint32_t CSR;
+} PWR_TypeDef;
+
+/** 
+  * @brief Reset and Clock Control
+  */
+
+typedef struct
+{
+  __IO uint32_t CR;
+  __IO uint32_t CFGR;
+  __IO uint32_t CIR;
+  __IO uint32_t APB2RSTR;
+  __IO uint32_t APB1RSTR;
+  __IO uint32_t AHBENR;
+  __IO uint32_t APB2ENR;
+  __IO uint32_t APB1ENR;
+  __IO uint32_t BDCR;
+  __IO uint32_t CSR;
+
+
+} RCC_TypeDef;
+
+/** 
+  * @brief Real-Time Clock
+  */
+
+typedef struct
+{
+  __IO uint32_t CRH;
+  __IO uint32_t CRL;
+  __IO uint32_t PRLH;
+  __IO uint32_t PRLL;
+  __IO uint32_t DIVH;
+  __IO uint32_t DIVL;
+  __IO uint32_t CNTH;
+  __IO uint32_t CNTL;
+  __IO uint32_t ALRH;
+  __IO uint32_t ALRL;
+} RTC_TypeDef;
+
+/** 
+  * @brief SD host Interface
+  */
+
+typedef struct
+{
+  __IO uint32_t POWER;
+  __IO uint32_t CLKCR;
+  __IO uint32_t ARG;
+  __IO uint32_t CMD;
+  __I uint32_t RESPCMD;
+  __I uint32_t RESP1;
+  __I uint32_t RESP2;
+  __I uint32_t RESP3;
+  __I uint32_t RESP4;
+  __IO uint32_t DTIMER;
+  __IO uint32_t DLEN;
+  __IO uint32_t DCTRL;
+  __I uint32_t DCOUNT;
+  __I uint32_t STA;
+  __IO uint32_t ICR;
+  __IO uint32_t MASK;
+  uint32_t  RESERVED0[2];
+  __I uint32_t FIFOCNT;
+  uint32_t  RESERVED1[13];
+  __IO uint32_t FIFO;
+} SDIO_TypeDef;
+
+/** 
+  * @brief Serial Peripheral Interface
+  */
+
+typedef struct
+{
+  __IO uint32_t CR1;
+  __IO uint32_t CR2;
+  __IO uint32_t SR;
+  __IO uint32_t DR;
+  __IO uint32_t CRCPR;
+  __IO uint32_t RXCRCR;
+  __IO uint32_t TXCRCR;
+  __IO uint32_t I2SCFGR;
+} SPI_TypeDef;
+
+/**
+  * @brief TIM Timers
+  */
+typedef struct
+{
+  __IO uint32_t CR1;             /*!< TIM control register 1,                      Address offset: 0x00 */
+  __IO uint32_t CR2;             /*!< TIM control register 2,                      Address offset: 0x04 */
+  __IO uint32_t SMCR;            /*!< TIM slave Mode Control register,             Address offset: 0x08 */
+  __IO uint32_t DIER;            /*!< TIM DMA/interrupt enable register,           Address offset: 0x0C */
+  __IO uint32_t SR;              /*!< TIM status register,                         Address offset: 0x10 */
+  __IO uint32_t EGR;             /*!< TIM event generation register,               Address offset: 0x14 */
+  __IO uint32_t CCMR1;           /*!< TIM  capture/compare mode register 1,        Address offset: 0x18 */
+  __IO uint32_t CCMR2;           /*!< TIM  capture/compare mode register 2,        Address offset: 0x1C */
+  __IO uint32_t CCER;            /*!< TIM capture/compare enable register,         Address offset: 0x20 */
+  __IO uint32_t CNT;             /*!< TIM counter register,                        Address offset: 0x24 */
+  __IO uint32_t PSC;             /*!< TIM prescaler register,                      Address offset: 0x28 */
+  __IO uint32_t ARR;             /*!< TIM auto-reload register,                    Address offset: 0x2C */
+  __IO uint32_t RCR;             /*!< TIM  repetition counter register,            Address offset: 0x30 */
+  __IO uint32_t CCR1;            /*!< TIM capture/compare register 1,              Address offset: 0x34 */
+  __IO uint32_t CCR2;            /*!< TIM capture/compare register 2,              Address offset: 0x38 */
+  __IO uint32_t CCR3;            /*!< TIM capture/compare register 3,              Address offset: 0x3C */
+  __IO uint32_t CCR4;            /*!< TIM capture/compare register 4,              Address offset: 0x40 */
+  __IO uint32_t BDTR;            /*!< TIM break and dead-time register,            Address offset: 0x44 */
+  __IO uint32_t DCR;             /*!< TIM DMA control register,                    Address offset: 0x48 */
+  __IO uint32_t DMAR;            /*!< TIM DMA address for full transfer register,  Address offset: 0x4C */
+  __IO uint32_t OR;              /*!< TIM option register,                         Address offset: 0x50 */
+}TIM_TypeDef;
+
+
+/** 
+  * @brief Universal Synchronous Asynchronous Receiver Transmitter
+  */
+ 
+typedef struct
+{
+  __IO uint32_t SR;         /*!< USART Status register,                   Address offset: 0x00 */
+  __IO uint32_t DR;         /*!< USART Data register,                     Address offset: 0x04 */
+  __IO uint32_t BRR;        /*!< USART Baud rate register,                Address offset: 0x08 */
+  __IO uint32_t CR1;        /*!< USART Control register 1,                Address offset: 0x0C */
+  __IO uint32_t CR2;        /*!< USART Control register 2,                Address offset: 0x10 */
+  __IO uint32_t CR3;        /*!< USART Control register 3,                Address offset: 0x14 */
+  __IO uint32_t GTPR;       /*!< USART Guard time and prescaler register, Address offset: 0x18 */
+} USART_TypeDef;
+
+/** 
+  * @brief Universal Serial Bus Full Speed Device
+  */
+  
+typedef struct
+{
+  __IO uint16_t EP0R;                 /*!< USB Endpoint 0 register,                   Address offset: 0x00 */ 
+  __IO uint16_t RESERVED0;            /*!< Reserved */     
+  __IO uint16_t EP1R;                 /*!< USB Endpoint 1 register,                   Address offset: 0x04 */
+  __IO uint16_t RESERVED1;            /*!< Reserved */       
+  __IO uint16_t EP2R;                 /*!< USB Endpoint 2 register,                   Address offset: 0x08 */
+  __IO uint16_t RESERVED2;            /*!< Reserved */       
+  __IO uint16_t EP3R;                 /*!< USB Endpoint 3 register,                   Address offset: 0x0C */ 
+  __IO uint16_t RESERVED3;            /*!< Reserved */       
+  __IO uint16_t EP4R;                 /*!< USB Endpoint 4 register,                   Address offset: 0x10 */
+  __IO uint16_t RESERVED4;            /*!< Reserved */       
+  __IO uint16_t EP5R;                 /*!< USB Endpoint 5 register,                   Address offset: 0x14 */
+  __IO uint16_t RESERVED5;            /*!< Reserved */       
+  __IO uint16_t EP6R;                 /*!< USB Endpoint 6 register,                   Address offset: 0x18 */
+  __IO uint16_t RESERVED6;            /*!< Reserved */       
+  __IO uint16_t EP7R;                 /*!< USB Endpoint 7 register,                   Address offset: 0x1C */
+  __IO uint16_t RESERVED7[17];        /*!< Reserved */     
+  __IO uint16_t CNTR;                 /*!< Control register,                          Address offset: 0x40 */
+  __IO uint16_t RESERVED8;            /*!< Reserved */       
+  __IO uint16_t ISTR;                 /*!< Interrupt status register,                 Address offset: 0x44 */
+  __IO uint16_t RESERVED9;            /*!< Reserved */       
+  __IO uint16_t FNR;                  /*!< Frame number register,                     Address offset: 0x48 */
+  __IO uint16_t RESERVEDA;            /*!< Reserved */       
+  __IO uint16_t DADDR;                /*!< Device address register,                   Address offset: 0x4C */
+  __IO uint16_t RESERVEDB;            /*!< Reserved */       
+  __IO uint16_t BTABLE;               /*!< Buffer Table address register,             Address offset: 0x50 */
+  __IO uint16_t RESERVEDC;            /*!< Reserved */       
+} USB_TypeDef;
+
+
+/** 
+  * @brief Window WATCHDOG
+  */
+
+typedef struct
+{
+  __IO uint32_t CR;   /*!< WWDG Control register,       Address offset: 0x00 */
+  __IO uint32_t CFR;  /*!< WWDG Configuration register, Address offset: 0x04 */
+  __IO uint32_t SR;   /*!< WWDG Status register,        Address offset: 0x08 */
+} WWDG_TypeDef;
+
+/**
+  * @}
+  */
+  
+/** @addtogroup Peripheral_memory_map
+  * @{
+  */
+
+
+#define FLASH_BASE            ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */
+#define FLASH_BANK1_END       ((uint32_t)0x0801FFFF) /*!< FLASH END address of bank1 */
+#define SRAM_BASE             ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */
+#define PERIPH_BASE           ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */
+
+#define SRAM_BB_BASE          ((uint32_t)0x22000000) /*!< SRAM base address in the bit-band region */
+#define PERIPH_BB_BASE        ((uint32_t)0x42000000) /*!< Peripheral base address in the bit-band region */
+
+
+/*!< Peripheral memory map */
+#define APB1PERIPH_BASE       PERIPH_BASE
+#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
+#define AHBPERIPH_BASE        (PERIPH_BASE + 0x20000)
+
+#define TIM2_BASE             (APB1PERIPH_BASE + 0x0000)
+#define TIM3_BASE             (APB1PERIPH_BASE + 0x0400)
+#define TIM4_BASE             (APB1PERIPH_BASE + 0x0800)
+#define RTC_BASE              (APB1PERIPH_BASE + 0x2800)
+#define WWDG_BASE             (APB1PERIPH_BASE + 0x2C00)
+#define IWDG_BASE             (APB1PERIPH_BASE + 0x3000)
+#define SPI2_BASE             (APB1PERIPH_BASE + 0x3800)
+#define USART2_BASE           (APB1PERIPH_BASE + 0x4400)
+#define USART3_BASE           (APB1PERIPH_BASE + 0x4800)
+#define I2C1_BASE             (APB1PERIPH_BASE + 0x5400)
+#define I2C2_BASE             (APB1PERIPH_BASE + 0x5800)
+#define CAN1_BASE             (APB1PERIPH_BASE + 0x6400)
+#define BKP_BASE              (APB1PERIPH_BASE + 0x6C00)
+#define PWR_BASE              (APB1PERIPH_BASE + 0x7000)
+#define AFIO_BASE             (APB2PERIPH_BASE + 0x0000)
+#define EXTI_BASE             (APB2PERIPH_BASE + 0x0400)
+#define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)
+#define GPIOB_BASE            (APB2PERIPH_BASE + 0x0C00)
+#define GPIOC_BASE            (APB2PERIPH_BASE + 0x1000)
+#define GPIOD_BASE            (APB2PERIPH_BASE + 0x1400)
+#define GPIOE_BASE            (APB2PERIPH_BASE + 0x1800)
+#define ADC1_BASE             (APB2PERIPH_BASE + 0x2400)
+#define ADC2_BASE             (APB2PERIPH_BASE + 0x2800)
+#define TIM1_BASE             (APB2PERIPH_BASE + 0x2C00)
+#define SPI1_BASE             (APB2PERIPH_BASE + 0x3000)
+#define USART1_BASE           (APB2PERIPH_BASE + 0x3800)
+
+#define SDIO_BASE             (PERIPH_BASE + 0x18000)
+
+#define DMA1_BASE             (AHBPERIPH_BASE + 0x0000)
+#define DMA1_Channel1_BASE    (AHBPERIPH_BASE + 0x0008)
+#define DMA1_Channel2_BASE    (AHBPERIPH_BASE + 0x001C)
+#define DMA1_Channel3_BASE    (AHBPERIPH_BASE + 0x0030)
+#define DMA1_Channel4_BASE    (AHBPERIPH_BASE + 0x0044)
+#define DMA1_Channel5_BASE    (AHBPERIPH_BASE + 0x0058)
+#define DMA1_Channel6_BASE    (AHBPERIPH_BASE + 0x006C)
+#define DMA1_Channel7_BASE    (AHBPERIPH_BASE + 0x0080)
+#define RCC_BASE              (AHBPERIPH_BASE + 0x1000)
+#define CRC_BASE              (AHBPERIPH_BASE + 0x3000)
+
+#define FLASH_R_BASE          (AHBPERIPH_BASE + 0x2000) /*!< Flash registers base address */
+#define FLASHSIZE_BASE        ((uint32_t)0x1FFFF7E0)    /*!< FLASH Size register base address */
+#define UID_BASE              ((uint32_t)0x1FFFF7E8)    /*!< Unique device ID register base address */
+#define OB_BASE               ((uint32_t)0x1FFFF800)    /*!< Flash Option Bytes base address */
+
+
+
+#define DBGMCU_BASE          ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */
+
+/* USB device FS */
+#define USB_BASE              (APB1PERIPH_BASE + 0x00005C00) /*!< USB_IP Peripheral Registers base address */
+#define USB_PMAADDR           (APB1PERIPH_BASE + 0x00006000) /*!< USB_IP Packet Memory Area base address */
+
+
+/**
+  * @}
+  */
+  
+/** @addtogroup Peripheral_declaration
+  * @{
+  */  
+
+#define TIM2                ((TIM_TypeDef *) TIM2_BASE)
+#define TIM3                ((TIM_TypeDef *) TIM3_BASE)
+#define TIM4                ((TIM_TypeDef *) TIM4_BASE)
+#define RTC                 ((RTC_TypeDef *) RTC_BASE)
+#define WWDG                ((WWDG_TypeDef *) WWDG_BASE)
+#define IWDG                ((IWDG_TypeDef *) IWDG_BASE)
+#define SPI2                ((SPI_TypeDef *) SPI2_BASE)
+#define USART2              ((USART_TypeDef *) USART2_BASE)
+#define USART3              ((USART_TypeDef *) USART3_BASE)
+#define I2C1                ((I2C_TypeDef *) I2C1_BASE)
+#define I2C2                ((I2C_TypeDef *) I2C2_BASE)
+#define USB                 ((USB_TypeDef *) USB_BASE)
+#define CAN1                ((CAN_TypeDef *) CAN1_BASE)
+#define BKP                 ((BKP_TypeDef *) BKP_BASE)
+#define PWR                 ((PWR_TypeDef *) PWR_BASE)
+#define AFIO                ((AFIO_TypeDef *) AFIO_BASE)
+#define EXTI                ((EXTI_TypeDef *) EXTI_BASE)
+#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
+#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
+#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
+#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
+#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
+#define ADC1                ((ADC_TypeDef *) ADC1_BASE)
+#define ADC2                ((ADC_TypeDef *) ADC2_BASE)
+#define ADC12_COMMON        ((ADC_Common_TypeDef *) ADC1_BASE)
+#define TIM1                ((TIM_TypeDef *) TIM1_BASE)
+#define SPI1                ((SPI_TypeDef *) SPI1_BASE)
+#define USART1              ((USART_TypeDef *) USART1_BASE)
+#define SDIO                ((SDIO_TypeDef *) SDIO_BASE)
+#define DMA1                ((DMA_TypeDef *) DMA1_BASE)
+#define DMA1_Channel1       ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE)
+#define DMA1_Channel2       ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE)
+#define DMA1_Channel3       ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE)
+#define DMA1_Channel4       ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE)
+#define DMA1_Channel5       ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE)
+#define DMA1_Channel6       ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE)
+#define DMA1_Channel7       ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE)
+#define RCC                 ((RCC_TypeDef *) RCC_BASE)
+#define CRC                 ((CRC_TypeDef *) CRC_BASE)
+#define FLASH               ((FLASH_TypeDef *) FLASH_R_BASE)
+#define OB                  ((OB_TypeDef *) OB_BASE)
+#define DBGMCU              ((DBGMCU_TypeDef *) DBGMCU_BASE)
+
+
+/**
+  * @}
+  */
+
+/** @addtogroup Exported_constants
+  * @{
+  */
+  
+  /** @addtogroup Peripheral_Registers_Bits_Definition
+  * @{
+  */
+    
+/******************************************************************************/
+/*                         Peripheral Registers_Bits_Definition               */
+/******************************************************************************/
+
+/******************************************************************************/
+/*                                                                            */
+/*                       CRC calculation unit (CRC)                           */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for CRC_DR register  *********************/
+#define CRC_DR_DR_Pos                       (0U)                               
+#define CRC_DR_DR_Msk                       (0xFFFFFFFFU << CRC_DR_DR_Pos)     /*!< 0xFFFFFFFF */
+#define CRC_DR_DR                           CRC_DR_DR_Msk                      /*!< Data register bits */
+
+/*******************  Bit definition for CRC_IDR register  ********************/
+#define CRC_IDR_IDR_Pos                     (0U)                               
+#define CRC_IDR_IDR_Msk                     (0xFFU << CRC_IDR_IDR_Pos)         /*!< 0x000000FF */
+#define CRC_IDR_IDR                         CRC_IDR_IDR_Msk                    /*!< General-purpose 8-bit data register bits */
+
+/********************  Bit definition for CRC_CR register  ********************/
+#define CRC_CR_RESET_Pos                    (0U)                               
+#define CRC_CR_RESET_Msk                    (0x1U << CRC_CR_RESET_Pos)         /*!< 0x00000001 */
+#define CRC_CR_RESET                        CRC_CR_RESET_Msk                   /*!< RESET bit */
+
+/******************************************************************************/
+/*                                                                            */
+/*                             Power Control                                  */
+/*                                                                            */
+/******************************************************************************/
+
+/********************  Bit definition for PWR_CR register  ********************/
+#define PWR_CR_LPDS_Pos                     (0U)                               
+#define PWR_CR_LPDS_Msk                     (0x1U << PWR_CR_LPDS_Pos)          /*!< 0x00000001 */
+#define PWR_CR_LPDS                         PWR_CR_LPDS_Msk                    /*!< Low-Power Deepsleep */
+#define PWR_CR_PDDS_Pos                     (1U)                               
+#define PWR_CR_PDDS_Msk                     (0x1U << PWR_CR_PDDS_Pos)          /*!< 0x00000002 */
+#define PWR_CR_PDDS                         PWR_CR_PDDS_Msk                    /*!< Power Down Deepsleep */
+#define PWR_CR_CWUF_Pos                     (2U)                               
+#define PWR_CR_CWUF_Msk                     (0x1U << PWR_CR_CWUF_Pos)          /*!< 0x00000004 */
+#define PWR_CR_CWUF                         PWR_CR_CWUF_Msk                    /*!< Clear Wakeup Flag */
+#define PWR_CR_CSBF_Pos                     (3U)                               
+#define PWR_CR_CSBF_Msk                     (0x1U << PWR_CR_CSBF_Pos)          /*!< 0x00000008 */
+#define PWR_CR_CSBF                         PWR_CR_CSBF_Msk                    /*!< Clear Standby Flag */
+#define PWR_CR_PVDE_Pos                     (4U)                               
+#define PWR_CR_PVDE_Msk                     (0x1U << PWR_CR_PVDE_Pos)          /*!< 0x00000010 */
+#define PWR_CR_PVDE                         PWR_CR_PVDE_Msk                    /*!< Power Voltage Detector Enable */
+
+#define PWR_CR_PLS_Pos                      (5U)                               
+#define PWR_CR_PLS_Msk                      (0x7U << PWR_CR_PLS_Pos)           /*!< 0x000000E0 */
+#define PWR_CR_PLS                          PWR_CR_PLS_Msk                     /*!< PLS[2:0] bits (PVD Level Selection) */
+#define PWR_CR_PLS_0                        (0x1U << PWR_CR_PLS_Pos)           /*!< 0x00000020 */
+#define PWR_CR_PLS_1                        (0x2U << PWR_CR_PLS_Pos)           /*!< 0x00000040 */
+#define PWR_CR_PLS_2                        (0x4U << PWR_CR_PLS_Pos)           /*!< 0x00000080 */
+
+/*!< PVD level configuration */
+#define PWR_CR_PLS_2V2                      ((uint32_t)0x00000000)             /*!< PVD level 2.2V */
+#define PWR_CR_PLS_2V3                      ((uint32_t)0x00000020)             /*!< PVD level 2.3V */
+#define PWR_CR_PLS_2V4                      ((uint32_t)0x00000040)             /*!< PVD level 2.4V */
+#define PWR_CR_PLS_2V5                      ((uint32_t)0x00000060)             /*!< PVD level 2.5V */
+#define PWR_CR_PLS_2V6                      ((uint32_t)0x00000080)             /*!< PVD level 2.6V */
+#define PWR_CR_PLS_2V7                      ((uint32_t)0x000000A0)             /*!< PVD level 2.7V */
+#define PWR_CR_PLS_2V8                      ((uint32_t)0x000000C0)             /*!< PVD level 2.8V */
+#define PWR_CR_PLS_2V9                      ((uint32_t)0x000000E0)             /*!< PVD level 2.9V */
+
+#define PWR_CR_DBP_Pos                      (8U)                               
+#define PWR_CR_DBP_Msk                      (0x1U << PWR_CR_DBP_Pos)           /*!< 0x00000100 */
+#define PWR_CR_DBP                          PWR_CR_DBP_Msk                     /*!< Disable Backup Domain write protection */
+
+
+/*******************  Bit definition for PWR_CSR register  ********************/
+#define PWR_CSR_WUF_Pos                     (0U)                               
+#define PWR_CSR_WUF_Msk                     (0x1U << PWR_CSR_WUF_Pos)          /*!< 0x00000001 */
+#define PWR_CSR_WUF                         PWR_CSR_WUF_Msk                    /*!< Wakeup Flag */
+#define PWR_CSR_SBF_Pos                     (1U)                               
+#define PWR_CSR_SBF_Msk                     (0x1U << PWR_CSR_SBF_Pos)          /*!< 0x00000002 */
+#define PWR_CSR_SBF                         PWR_CSR_SBF_Msk                    /*!< Standby Flag */
+#define PWR_CSR_PVDO_Pos                    (2U)                               
+#define PWR_CSR_PVDO_Msk                    (0x1U << PWR_CSR_PVDO_Pos)         /*!< 0x00000004 */
+#define PWR_CSR_PVDO                        PWR_CSR_PVDO_Msk                   /*!< PVD Output */
+#define PWR_CSR_EWUP_Pos                    (8U)                               
+#define PWR_CSR_EWUP_Msk                    (0x1U << PWR_CSR_EWUP_Pos)         /*!< 0x00000100 */
+#define PWR_CSR_EWUP                        PWR_CSR_EWUP_Msk                   /*!< Enable WKUP pin */
+
+/******************************************************************************/
+/*                                                                            */
+/*                            Backup registers                                */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for BKP_DR1 register  ********************/
+#define BKP_DR1_D_Pos                       (0U)                               
+#define BKP_DR1_D_Msk                       (0xFFFFU << BKP_DR1_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR1_D                           BKP_DR1_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR2 register  ********************/
+#define BKP_DR2_D_Pos                       (0U)                               
+#define BKP_DR2_D_Msk                       (0xFFFFU << BKP_DR2_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR2_D                           BKP_DR2_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR3 register  ********************/
+#define BKP_DR3_D_Pos                       (0U)                               
+#define BKP_DR3_D_Msk                       (0xFFFFU << BKP_DR3_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR3_D                           BKP_DR3_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR4 register  ********************/
+#define BKP_DR4_D_Pos                       (0U)                               
+#define BKP_DR4_D_Msk                       (0xFFFFU << BKP_DR4_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR4_D                           BKP_DR4_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR5 register  ********************/
+#define BKP_DR5_D_Pos                       (0U)                               
+#define BKP_DR5_D_Msk                       (0xFFFFU << BKP_DR5_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR5_D                           BKP_DR5_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR6 register  ********************/
+#define BKP_DR6_D_Pos                       (0U)                               
+#define BKP_DR6_D_Msk                       (0xFFFFU << BKP_DR6_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR6_D                           BKP_DR6_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR7 register  ********************/
+#define BKP_DR7_D_Pos                       (0U)                               
+#define BKP_DR7_D_Msk                       (0xFFFFU << BKP_DR7_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR7_D                           BKP_DR7_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR8 register  ********************/
+#define BKP_DR8_D_Pos                       (0U)                               
+#define BKP_DR8_D_Msk                       (0xFFFFU << BKP_DR8_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR8_D                           BKP_DR8_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR9 register  ********************/
+#define BKP_DR9_D_Pos                       (0U)                               
+#define BKP_DR9_D_Msk                       (0xFFFFU << BKP_DR9_D_Pos)         /*!< 0x0000FFFF */
+#define BKP_DR9_D                           BKP_DR9_D_Msk                      /*!< Backup data */
+
+/*******************  Bit definition for BKP_DR10 register  *******************/
+#define BKP_DR10_D_Pos                      (0U)                               
+#define BKP_DR10_D_Msk                      (0xFFFFU << BKP_DR10_D_Pos)        /*!< 0x0000FFFF */
+#define BKP_DR10_D                          BKP_DR10_D_Msk                     /*!< Backup data */
+
+#define RTC_BKP_NUMBER 10
+
+/******************  Bit definition for BKP_RTCCR register  *******************/
+#define BKP_RTCCR_CAL_Pos                   (0U)                               
+#define BKP_RTCCR_CAL_Msk                   (0x7FU << BKP_RTCCR_CAL_Pos)       /*!< 0x0000007F */
+#define BKP_RTCCR_CAL                       BKP_RTCCR_CAL_Msk                  /*!< Calibration value */
+#define BKP_RTCCR_CCO_Pos                   (7U)                               
+#define BKP_RTCCR_CCO_Msk                   (0x1U << BKP_RTCCR_CCO_Pos)        /*!< 0x00000080 */
+#define BKP_RTCCR_CCO                       BKP_RTCCR_CCO_Msk                  /*!< Calibration Clock Output */
+#define BKP_RTCCR_ASOE_Pos                  (8U)                               
+#define BKP_RTCCR_ASOE_Msk                  (0x1U << BKP_RTCCR_ASOE_Pos)       /*!< 0x00000100 */
+#define BKP_RTCCR_ASOE                      BKP_RTCCR_ASOE_Msk                 /*!< Alarm or Second Output Enable */
+#define BKP_RTCCR_ASOS_Pos                  (9U)                               
+#define BKP_RTCCR_ASOS_Msk                  (0x1U << BKP_RTCCR_ASOS_Pos)       /*!< 0x00000200 */
+#define BKP_RTCCR_ASOS                      BKP_RTCCR_ASOS_Msk                 /*!< Alarm or Second Output Selection */
+
+/********************  Bit definition for BKP_CR register  ********************/
+#define BKP_CR_TPE_Pos                      (0U)                               
+#define BKP_CR_TPE_Msk                      (0x1U << BKP_CR_TPE_Pos)           /*!< 0x00000001 */
+#define BKP_CR_TPE                          BKP_CR_TPE_Msk                     /*!< TAMPER pin enable */
+#define BKP_CR_TPAL_Pos                     (1U)                               
+#define BKP_CR_TPAL_Msk                     (0x1U << BKP_CR_TPAL_Pos)          /*!< 0x00000002 */
+#define BKP_CR_TPAL                         BKP_CR_TPAL_Msk                    /*!< TAMPER pin active level */
+
+/*******************  Bit definition for BKP_CSR register  ********************/
+#define BKP_CSR_CTE_Pos                     (0U)                               
+#define BKP_CSR_CTE_Msk                     (0x1U << BKP_CSR_CTE_Pos)          /*!< 0x00000001 */
+#define BKP_CSR_CTE                         BKP_CSR_CTE_Msk                    /*!< Clear Tamper event */
+#define BKP_CSR_CTI_Pos                     (1U)                               
+#define BKP_CSR_CTI_Msk                     (0x1U << BKP_CSR_CTI_Pos)          /*!< 0x00000002 */
+#define BKP_CSR_CTI                         BKP_CSR_CTI_Msk                    /*!< Clear Tamper Interrupt */
+#define BKP_CSR_TPIE_Pos                    (2U)                               
+#define BKP_CSR_TPIE_Msk                    (0x1U << BKP_CSR_TPIE_Pos)         /*!< 0x00000004 */
+#define BKP_CSR_TPIE                        BKP_CSR_TPIE_Msk                   /*!< TAMPER Pin interrupt enable */
+#define BKP_CSR_TEF_Pos                     (8U)                               
+#define BKP_CSR_TEF_Msk                     (0x1U << BKP_CSR_TEF_Pos)          /*!< 0x00000100 */
+#define BKP_CSR_TEF                         BKP_CSR_TEF_Msk                    /*!< Tamper Event Flag */
+#define BKP_CSR_TIF_Pos                     (9U)                               
+#define BKP_CSR_TIF_Msk                     (0x1U << BKP_CSR_TIF_Pos)          /*!< 0x00000200 */
+#define BKP_CSR_TIF                         BKP_CSR_TIF_Msk                    /*!< Tamper Interrupt Flag */
+
+/******************************************************************************/
+/*                                                                            */
+/*                         Reset and Clock Control                            */
+/*                                                                            */
+/******************************************************************************/
+
+/********************  Bit definition for RCC_CR register  ********************/
+#define RCC_CR_HSION_Pos                     (0U)                              
+#define RCC_CR_HSION_Msk                     (0x1U << RCC_CR_HSION_Pos)        /*!< 0x00000001 */
+#define RCC_CR_HSION                         RCC_CR_HSION_Msk                  /*!< Internal High Speed clock enable */
+#define RCC_CR_HSIRDY_Pos                    (1U)                              
+#define RCC_CR_HSIRDY_Msk                    (0x1U << RCC_CR_HSIRDY_Pos)       /*!< 0x00000002 */
+#define RCC_CR_HSIRDY                        RCC_CR_HSIRDY_Msk                 /*!< Internal High Speed clock ready flag */
+#define RCC_CR_HSITRIM_Pos                   (3U)                              
+#define RCC_CR_HSITRIM_Msk                   (0x1FU << RCC_CR_HSITRIM_Pos)     /*!< 0x000000F8 */
+#define RCC_CR_HSITRIM                       RCC_CR_HSITRIM_Msk                /*!< Internal High Speed clock trimming */
+#define RCC_CR_HSICAL_Pos                    (8U)                              
+#define RCC_CR_HSICAL_Msk                    (0xFFU << RCC_CR_HSICAL_Pos)      /*!< 0x0000FF00 */
+#define RCC_CR_HSICAL                        RCC_CR_HSICAL_Msk                 /*!< Internal High Speed clock Calibration */
+#define RCC_CR_HSEON_Pos                     (16U)                             
+#define RCC_CR_HSEON_Msk                     (0x1U << RCC_CR_HSEON_Pos)        /*!< 0x00010000 */
+#define RCC_CR_HSEON                         RCC_CR_HSEON_Msk                  /*!< External High Speed clock enable */
+#define RCC_CR_HSERDY_Pos                    (17U)                             
+#define RCC_CR_HSERDY_Msk                    (0x1U << RCC_CR_HSERDY_Pos)       /*!< 0x00020000 */
+#define RCC_CR_HSERDY                        RCC_CR_HSERDY_Msk                 /*!< External High Speed clock ready flag */
+#define RCC_CR_HSEBYP_Pos                    (18U)                             
+#define RCC_CR_HSEBYP_Msk                    (0x1U << RCC_CR_HSEBYP_Pos)       /*!< 0x00040000 */
+#define RCC_CR_HSEBYP                        RCC_CR_HSEBYP_Msk                 /*!< External High Speed clock Bypass */
+#define RCC_CR_CSSON_Pos                     (19U)                             
+#define RCC_CR_CSSON_Msk                     (0x1U << RCC_CR_CSSON_Pos)        /*!< 0x00080000 */
+#define RCC_CR_CSSON                         RCC_CR_CSSON_Msk                  /*!< Clock Security System enable */
+#define RCC_CR_PLLON_Pos                     (24U)                             
+#define RCC_CR_PLLON_Msk                     (0x1U << RCC_CR_PLLON_Pos)        /*!< 0x01000000 */
+#define RCC_CR_PLLON                         RCC_CR_PLLON_Msk                  /*!< PLL enable */
+#define RCC_CR_PLLRDY_Pos                    (25U)                             
+#define RCC_CR_PLLRDY_Msk                    (0x1U << RCC_CR_PLLRDY_Pos)       /*!< 0x02000000 */
+#define RCC_CR_PLLRDY                        RCC_CR_PLLRDY_Msk                 /*!< PLL clock ready flag */
+
+
+/*******************  Bit definition for RCC_CFGR register  *******************/
+/*!< SW configuration */
+#define RCC_CFGR_SW_Pos                      (0U)                              
+#define RCC_CFGR_SW_Msk                      (0x3U << RCC_CFGR_SW_Pos)         /*!< 0x00000003 */
+#define RCC_CFGR_SW                          RCC_CFGR_SW_Msk                   /*!< SW[1:0] bits (System clock Switch) */
+#define RCC_CFGR_SW_0                        (0x1U << RCC_CFGR_SW_Pos)         /*!< 0x00000001 */
+#define RCC_CFGR_SW_1                        (0x2U << RCC_CFGR_SW_Pos)         /*!< 0x00000002 */
+
+#define RCC_CFGR_SW_HSI                      ((uint32_t)0x00000000)            /*!< HSI selected as system clock */
+#define RCC_CFGR_SW_HSE                      ((uint32_t)0x00000001)            /*!< HSE selected as system clock */
+#define RCC_CFGR_SW_PLL                      ((uint32_t)0x00000002)            /*!< PLL selected as system clock */
+
+/*!< SWS configuration */
+#define RCC_CFGR_SWS_Pos                     (2U)                              
+#define RCC_CFGR_SWS_Msk                     (0x3U << RCC_CFGR_SWS_Pos)        /*!< 0x0000000C */
+#define RCC_CFGR_SWS                         RCC_CFGR_SWS_Msk                  /*!< SWS[1:0] bits (System Clock Switch Status) */
+#define RCC_CFGR_SWS_0                       (0x1U << RCC_CFGR_SWS_Pos)        /*!< 0x00000004 */
+#define RCC_CFGR_SWS_1                       (0x2U << RCC_CFGR_SWS_Pos)        /*!< 0x00000008 */
+
+#define RCC_CFGR_SWS_HSI                     ((uint32_t)0x00000000)            /*!< HSI oscillator used as system clock */
+#define RCC_CFGR_SWS_HSE                     ((uint32_t)0x00000004)            /*!< HSE oscillator used as system clock */
+#define RCC_CFGR_SWS_PLL                     ((uint32_t)0x00000008)            /*!< PLL used as system clock */
+
+/*!< HPRE configuration */
+#define RCC_CFGR_HPRE_Pos                    (4U)                              
+#define RCC_CFGR_HPRE_Msk                    (0xFU << RCC_CFGR_HPRE_Pos)       /*!< 0x000000F0 */
+#define RCC_CFGR_HPRE                        RCC_CFGR_HPRE_Msk                 /*!< HPRE[3:0] bits (AHB prescaler) */
+#define RCC_CFGR_HPRE_0                      (0x1U << RCC_CFGR_HPRE_Pos)       /*!< 0x00000010 */
+#define RCC_CFGR_HPRE_1                      (0x2U << RCC_CFGR_HPRE_Pos)       /*!< 0x00000020 */
+#define RCC_CFGR_HPRE_2                      (0x4U << RCC_CFGR_HPRE_Pos)       /*!< 0x00000040 */
+#define RCC_CFGR_HPRE_3                      (0x8U << RCC_CFGR_HPRE_Pos)       /*!< 0x00000080 */
+
+#define RCC_CFGR_HPRE_DIV1                   ((uint32_t)0x00000000)            /*!< SYSCLK not divided */
+#define RCC_CFGR_HPRE_DIV2                   ((uint32_t)0x00000080)            /*!< SYSCLK divided by 2 */
+#define RCC_CFGR_HPRE_DIV4                   ((uint32_t)0x00000090)            /*!< SYSCLK divided by 4 */
+#define RCC_CFGR_HPRE_DIV8                   ((uint32_t)0x000000A0)            /*!< SYSCLK divided by 8 */
+#define RCC_CFGR_HPRE_DIV16                  ((uint32_t)0x000000B0)            /*!< SYSCLK divided by 16 */
+#define RCC_CFGR_HPRE_DIV64                  ((uint32_t)0x000000C0)            /*!< SYSCLK divided by 64 */
+#define RCC_CFGR_HPRE_DIV128                 ((uint32_t)0x000000D0)            /*!< SYSCLK divided by 128 */
+#define RCC_CFGR_HPRE_DIV256                 ((uint32_t)0x000000E0)            /*!< SYSCLK divided by 256 */
+#define RCC_CFGR_HPRE_DIV512                 ((uint32_t)0x000000F0)            /*!< SYSCLK divided by 512 */
+
+/*!< PPRE1 configuration */
+#define RCC_CFGR_PPRE1_Pos                   (8U)                              
+#define RCC_CFGR_PPRE1_Msk                   (0x7U << RCC_CFGR_PPRE1_Pos)      /*!< 0x00000700 */
+#define RCC_CFGR_PPRE1                       RCC_CFGR_PPRE1_Msk                /*!< PRE1[2:0] bits (APB1 prescaler) */
+#define RCC_CFGR_PPRE1_0                     (0x1U << RCC_CFGR_PPRE1_Pos)      /*!< 0x00000100 */
+#define RCC_CFGR_PPRE1_1                     (0x2U << RCC_CFGR_PPRE1_Pos)      /*!< 0x00000200 */
+#define RCC_CFGR_PPRE1_2                     (0x4U << RCC_CFGR_PPRE1_Pos)      /*!< 0x00000400 */
+
+#define RCC_CFGR_PPRE1_DIV1                  ((uint32_t)0x00000000)            /*!< HCLK not divided */
+#define RCC_CFGR_PPRE1_DIV2                  ((uint32_t)0x00000400)            /*!< HCLK divided by 2 */
+#define RCC_CFGR_PPRE1_DIV4                  ((uint32_t)0x00000500)            /*!< HCLK divided by 4 */
+#define RCC_CFGR_PPRE1_DIV8                  ((uint32_t)0x00000600)            /*!< HCLK divided by 8 */
+#define RCC_CFGR_PPRE1_DIV16                 ((uint32_t)0x00000700)            /*!< HCLK divided by 16 */
+
+/*!< PPRE2 configuration */
+#define RCC_CFGR_PPRE2_Pos                   (11U)                             
+#define RCC_CFGR_PPRE2_Msk                   (0x7U << RCC_CFGR_PPRE2_Pos)      /*!< 0x00003800 */
+#define RCC_CFGR_PPRE2                       RCC_CFGR_PPRE2_Msk                /*!< PRE2[2:0] bits (APB2 prescaler) */
+#define RCC_CFGR_PPRE2_0                     (0x1U << RCC_CFGR_PPRE2_Pos)      /*!< 0x00000800 */
+#define RCC_CFGR_PPRE2_1                     (0x2U << RCC_CFGR_PPRE2_Pos)      /*!< 0x00001000 */
+#define RCC_CFGR_PPRE2_2                     (0x4U << RCC_CFGR_PPRE2_Pos)      /*!< 0x00002000 */
+
+#define RCC_CFGR_PPRE2_DIV1                  ((uint32_t)0x00000000)            /*!< HCLK not divided */
+#define RCC_CFGR_PPRE2_DIV2                  ((uint32_t)0x00002000)            /*!< HCLK divided by 2 */
+#define RCC_CFGR_PPRE2_DIV4                  ((uint32_t)0x00002800)            /*!< HCLK divided by 4 */
+#define RCC_CFGR_PPRE2_DIV8                  ((uint32_t)0x00003000)            /*!< HCLK divided by 8 */
+#define RCC_CFGR_PPRE2_DIV16                 ((uint32_t)0x00003800)            /*!< HCLK divided by 16 */
+
+/*!< ADCPPRE configuration */
+#define RCC_CFGR_ADCPRE_Pos                  (14U)                             
+#define RCC_CFGR_ADCPRE_Msk                  (0x3U << RCC_CFGR_ADCPRE_Pos)     /*!< 0x0000C000 */
+#define RCC_CFGR_ADCPRE                      RCC_CFGR_ADCPRE_Msk               /*!< ADCPRE[1:0] bits (ADC prescaler) */
+#define RCC_CFGR_ADCPRE_0                    (0x1U << RCC_CFGR_ADCPRE_Pos)     /*!< 0x00004000 */
+#define RCC_CFGR_ADCPRE_1                    (0x2U << RCC_CFGR_ADCPRE_Pos)     /*!< 0x00008000 */
+
+#define RCC_CFGR_ADCPRE_DIV2                 ((uint32_t)0x00000000)            /*!< PCLK2 divided by 2 */
+#define RCC_CFGR_ADCPRE_DIV4                 ((uint32_t)0x00004000)            /*!< PCLK2 divided by 4 */
+#define RCC_CFGR_ADCPRE_DIV6                 ((uint32_t)0x00008000)            /*!< PCLK2 divided by 6 */
+#define RCC_CFGR_ADCPRE_DIV8                 ((uint32_t)0x0000C000)            /*!< PCLK2 divided by 8 */
+
+#define RCC_CFGR_PLLSRC_Pos                  (16U)                             
+#define RCC_CFGR_PLLSRC_Msk                  (0x1U << RCC_CFGR_PLLSRC_Pos)     /*!< 0x00010000 */
+#define RCC_CFGR_PLLSRC                      RCC_CFGR_PLLSRC_Msk               /*!< PLL entry clock source */
+
+#define RCC_CFGR_PLLXTPRE_Pos                (17U)                             
+#define RCC_CFGR_PLLXTPRE_Msk                (0x1U << RCC_CFGR_PLLXTPRE_Pos)   /*!< 0x00020000 */
+#define RCC_CFGR_PLLXTPRE                    RCC_CFGR_PLLXTPRE_Msk             /*!< HSE divider for PLL entry */
+
+/*!< PLLMUL configuration */
+#define RCC_CFGR_PLLMULL_Pos                 (18U)                             
+#define RCC_CFGR_PLLMULL_Msk                 (0xFU << RCC_CFGR_PLLMULL_Pos)    /*!< 0x003C0000 */
+#define RCC_CFGR_PLLMULL                     RCC_CFGR_PLLMULL_Msk              /*!< PLLMUL[3:0] bits (PLL multiplication factor) */
+#define RCC_CFGR_PLLMULL_0                   (0x1U << RCC_CFGR_PLLMULL_Pos)    /*!< 0x00040000 */
+#define RCC_CFGR_PLLMULL_1                   (0x2U << RCC_CFGR_PLLMULL_Pos)    /*!< 0x00080000 */
+#define RCC_CFGR_PLLMULL_2                   (0x4U << RCC_CFGR_PLLMULL_Pos)    /*!< 0x00100000 */
+#define RCC_CFGR_PLLMULL_3                   (0x8U << RCC_CFGR_PLLMULL_Pos)    /*!< 0x00200000 */
+
+#define RCC_CFGR_PLLXTPRE_HSE                ((uint32_t)0x00000000)            /*!< HSE clock not divided for PLL entry */
+#define RCC_CFGR_PLLXTPRE_HSE_DIV2           ((uint32_t)0x00020000)            /*!< HSE clock divided by 2 for PLL entry */
+
+#define RCC_CFGR_PLLMULL2                    ((uint32_t)0x00000000)            /*!< PLL input clock*2 */
+#define RCC_CFGR_PLLMULL3_Pos                (18U)                             
+#define RCC_CFGR_PLLMULL3_Msk                (0x1U << RCC_CFGR_PLLMULL3_Pos)   /*!< 0x00040000 */
+#define RCC_CFGR_PLLMULL3                    RCC_CFGR_PLLMULL3_Msk             /*!< PLL input clock*3 */
+#define RCC_CFGR_PLLMULL4_Pos                (19U)                             
+#define RCC_CFGR_PLLMULL4_Msk                (0x1U << RCC_CFGR_PLLMULL4_Pos)   /*!< 0x00080000 */
+#define RCC_CFGR_PLLMULL4                    RCC_CFGR_PLLMULL4_Msk             /*!< PLL input clock*4 */
+#define RCC_CFGR_PLLMULL5_Pos                (18U)                             
+#define RCC_CFGR_PLLMULL5_Msk                (0x3U << RCC_CFGR_PLLMULL5_Pos)   /*!< 0x000C0000 */
+#define RCC_CFGR_PLLMULL5                    RCC_CFGR_PLLMULL5_Msk             /*!< PLL input clock*5 */
+#define RCC_CFGR_PLLMULL6_Pos                (20U)                             
+#define RCC_CFGR_PLLMULL6_Msk                (0x1U << RCC_CFGR_PLLMULL6_Pos)   /*!< 0x00100000 */
+#define RCC_CFGR_PLLMULL6                    RCC_CFGR_PLLMULL6_Msk             /*!< PLL input clock*6 */
+#define RCC_CFGR_PLLMULL7_Pos                (18U)                             
+#define RCC_CFGR_PLLMULL7_Msk                (0x5U << RCC_CFGR_PLLMULL7_Pos)   /*!< 0x00140000 */
+#define RCC_CFGR_PLLMULL7                    RCC_CFGR_PLLMULL7_Msk             /*!< PLL input clock*7 */
+#define RCC_CFGR_PLLMULL8_Pos                (19U)                             
+#define RCC_CFGR_PLLMULL8_Msk                (0x3U << RCC_CFGR_PLLMULL8_Pos)   /*!< 0x00180000 */
+#define RCC_CFGR_PLLMULL8                    RCC_CFGR_PLLMULL8_Msk             /*!< PLL input clock*8 */
+#define RCC_CFGR_PLLMULL9_Pos                (18U)                             
+#define RCC_CFGR_PLLMULL9_Msk                (0x7U << RCC_CFGR_PLLMULL9_Pos)   /*!< 0x001C0000 */
+#define RCC_CFGR_PLLMULL9                    RCC_CFGR_PLLMULL9_Msk             /*!< PLL input clock*9 */
+#define RCC_CFGR_PLLMULL10_Pos               (21U)                             
+#define RCC_CFGR_PLLMULL10_Msk               (0x1U << RCC_CFGR_PLLMULL10_Pos)  /*!< 0x00200000 */
+#define RCC_CFGR_PLLMULL10                   RCC_CFGR_PLLMULL10_Msk            /*!< PLL input clock10 */
+#define RCC_CFGR_PLLMULL11_Pos               (18U)                             
+#define RCC_CFGR_PLLMULL11_Msk               (0x9U << RCC_CFGR_PLLMULL11_Pos)  /*!< 0x00240000 */
+#define RCC_CFGR_PLLMULL11                   RCC_CFGR_PLLMULL11_Msk            /*!< PLL input clock*11 */
+#define RCC_CFGR_PLLMULL12_Pos               (19U)                             
+#define RCC_CFGR_PLLMULL12_Msk               (0x5U << RCC_CFGR_PLLMULL12_Pos)  /*!< 0x00280000 */
+#define RCC_CFGR_PLLMULL12                   RCC_CFGR_PLLMULL12_Msk            /*!< PLL input clock*12 */
+#define RCC_CFGR_PLLMULL13_Pos               (18U)                             
+#define RCC_CFGR_PLLMULL13_Msk               (0xBU << RCC_CFGR_PLLMULL13_Pos)  /*!< 0x002C0000 */
+#define RCC_CFGR_PLLMULL13                   RCC_CFGR_PLLMULL13_Msk            /*!< PLL input clock*13 */
+#define RCC_CFGR_PLLMULL14_Pos               (20U)                             
+#define RCC_CFGR_PLLMULL14_Msk               (0x3U << RCC_CFGR_PLLMULL14_Pos)  /*!< 0x00300000 */
+#define RCC_CFGR_PLLMULL14                   RCC_CFGR_PLLMULL14_Msk            /*!< PLL input clock*14 */
+#define RCC_CFGR_PLLMULL15_Pos               (18U)                             
+#define RCC_CFGR_PLLMULL15_Msk               (0xDU << RCC_CFGR_PLLMULL15_Pos)  /*!< 0x00340000 */
+#define RCC_CFGR_PLLMULL15                   RCC_CFGR_PLLMULL15_Msk            /*!< PLL input clock*15 */
+#define RCC_CFGR_PLLMULL16_Pos               (19U)                             
+#define RCC_CFGR_PLLMULL16_Msk               (0x7U << RCC_CFGR_PLLMULL16_Pos)  /*!< 0x00380000 */
+#define RCC_CFGR_PLLMULL16                   RCC_CFGR_PLLMULL16_Msk            /*!< PLL input clock*16 */
+#define RCC_CFGR_USBPRE_Pos                  (22U)                             
+#define RCC_CFGR_USBPRE_Msk                  (0x1U << RCC_CFGR_USBPRE_Pos)     /*!< 0x00400000 */
+#define RCC_CFGR_USBPRE                      RCC_CFGR_USBPRE_Msk               /*!< USB Device prescaler */
+
+/*!< MCO configuration */
+#define RCC_CFGR_MCO_Pos                     (24U)                             
+#define RCC_CFGR_MCO_Msk                     (0x7U << RCC_CFGR_MCO_Pos)        /*!< 0x07000000 */
+#define RCC_CFGR_MCO                         RCC_CFGR_MCO_Msk                  /*!< MCO[2:0] bits (Microcontroller Clock Output) */
+#define RCC_CFGR_MCO_0                       (0x1U << RCC_CFGR_MCO_Pos)        /*!< 0x01000000 */
+#define RCC_CFGR_MCO_1                       (0x2U << RCC_CFGR_MCO_Pos)        /*!< 0x02000000 */
+#define RCC_CFGR_MCO_2                       (0x4U << RCC_CFGR_MCO_Pos)        /*!< 0x04000000 */
+
+#define RCC_CFGR_MCO_NOCLOCK                 ((uint32_t)0x00000000)            /*!< No clock */
+#define RCC_CFGR_MCO_SYSCLK                  ((uint32_t)0x04000000)            /*!< System clock selected as MCO source */
+#define RCC_CFGR_MCO_HSI                     ((uint32_t)0x05000000)            /*!< HSI clock selected as MCO source */
+#define RCC_CFGR_MCO_HSE                     ((uint32_t)0x06000000)            /*!< HSE clock selected as MCO source  */
+#define RCC_CFGR_MCO_PLLCLK_DIV2             ((uint32_t)0x07000000)            /*!< PLL clock divided by 2 selected as MCO source */
+
+ /* Reference defines */
+ #define RCC_CFGR_MCOSEL                      RCC_CFGR_MCO
+ #define RCC_CFGR_MCOSEL_0                    RCC_CFGR_MCO_0
+ #define RCC_CFGR_MCOSEL_1                    RCC_CFGR_MCO_1
+ #define RCC_CFGR_MCOSEL_2                    RCC_CFGR_MCO_2
+ #define RCC_CFGR_MCOSEL_NOCLOCK              RCC_CFGR_MCO_NOCLOCK
+ #define RCC_CFGR_MCOSEL_SYSCLK               RCC_CFGR_MCO_SYSCLK
+ #define RCC_CFGR_MCOSEL_HSI                  RCC_CFGR_MCO_HSI
+ #define RCC_CFGR_MCOSEL_HSE                  RCC_CFGR_MCO_HSE
+ #define RCC_CFGR_MCOSEL_PLL_DIV2             RCC_CFGR_MCO_PLLCLK_DIV2
+
+/*!<******************  Bit definition for RCC_CIR register  ********************/
+#define RCC_CIR_LSIRDYF_Pos                  (0U)                              
+#define RCC_CIR_LSIRDYF_Msk                  (0x1U << RCC_CIR_LSIRDYF_Pos)     /*!< 0x00000001 */
+#define RCC_CIR_LSIRDYF                      RCC_CIR_LSIRDYF_Msk               /*!< LSI Ready Interrupt flag */
+#define RCC_CIR_LSERDYF_Pos                  (1U)                              
+#define RCC_CIR_LSERDYF_Msk                  (0x1U << RCC_CIR_LSERDYF_Pos)     /*!< 0x00000002 */
+#define RCC_CIR_LSERDYF                      RCC_CIR_LSERDYF_Msk               /*!< LSE Ready Interrupt flag */
+#define RCC_CIR_HSIRDYF_Pos                  (2U)                              
+#define RCC_CIR_HSIRDYF_Msk                  (0x1U << RCC_CIR_HSIRDYF_Pos)     /*!< 0x00000004 */
+#define RCC_CIR_HSIRDYF                      RCC_CIR_HSIRDYF_Msk               /*!< HSI Ready Interrupt flag */
+#define RCC_CIR_HSERDYF_Pos                  (3U)                              
+#define RCC_CIR_HSERDYF_Msk                  (0x1U << RCC_CIR_HSERDYF_Pos)     /*!< 0x00000008 */
+#define RCC_CIR_HSERDYF                      RCC_CIR_HSERDYF_Msk               /*!< HSE Ready Interrupt flag */
+#define RCC_CIR_PLLRDYF_Pos                  (4U)                              
+#define RCC_CIR_PLLRDYF_Msk                  (0x1U << RCC_CIR_PLLRDYF_Pos)     /*!< 0x00000010 */
+#define RCC_CIR_PLLRDYF                      RCC_CIR_PLLRDYF_Msk               /*!< PLL Ready Interrupt flag */
+#define RCC_CIR_CSSF_Pos                     (7U)                              
+#define RCC_CIR_CSSF_Msk                     (0x1U << RCC_CIR_CSSF_Pos)        /*!< 0x00000080 */
+#define RCC_CIR_CSSF                         RCC_CIR_CSSF_Msk                  /*!< Clock Security System Interrupt flag */
+#define RCC_CIR_LSIRDYIE_Pos                 (8U)                              
+#define RCC_CIR_LSIRDYIE_Msk                 (0x1U << RCC_CIR_LSIRDYIE_Pos)    /*!< 0x00000100 */
+#define RCC_CIR_LSIRDYIE                     RCC_CIR_LSIRDYIE_Msk              /*!< LSI Ready Interrupt Enable */
+#define RCC_CIR_LSERDYIE_Pos                 (9U)                              
+#define RCC_CIR_LSERDYIE_Msk                 (0x1U << RCC_CIR_LSERDYIE_Pos)    /*!< 0x00000200 */
+#define RCC_CIR_LSERDYIE                     RCC_CIR_LSERDYIE_Msk              /*!< LSE Ready Interrupt Enable */
+#define RCC_CIR_HSIRDYIE_Pos                 (10U)                             
+#define RCC_CIR_HSIRDYIE_Msk                 (0x1U << RCC_CIR_HSIRDYIE_Pos)    /*!< 0x00000400 */
+#define RCC_CIR_HSIRDYIE                     RCC_CIR_HSIRDYIE_Msk              /*!< HSI Ready Interrupt Enable */
+#define RCC_CIR_HSERDYIE_Pos                 (11U)                             
+#define RCC_CIR_HSERDYIE_Msk                 (0x1U << RCC_CIR_HSERDYIE_Pos)    /*!< 0x00000800 */
+#define RCC_CIR_HSERDYIE                     RCC_CIR_HSERDYIE_Msk              /*!< HSE Ready Interrupt Enable */
+#define RCC_CIR_PLLRDYIE_Pos                 (12U)                             
+#define RCC_CIR_PLLRDYIE_Msk                 (0x1U << RCC_CIR_PLLRDYIE_Pos)    /*!< 0x00001000 */
+#define RCC_CIR_PLLRDYIE                     RCC_CIR_PLLRDYIE_Msk              /*!< PLL Ready Interrupt Enable */
+#define RCC_CIR_LSIRDYC_Pos                  (16U)                             
+#define RCC_CIR_LSIRDYC_Msk                  (0x1U << RCC_CIR_LSIRDYC_Pos)     /*!< 0x00010000 */
+#define RCC_CIR_LSIRDYC                      RCC_CIR_LSIRDYC_Msk               /*!< LSI Ready Interrupt Clear */
+#define RCC_CIR_LSERDYC_Pos                  (17U)                             
+#define RCC_CIR_LSERDYC_Msk                  (0x1U << RCC_CIR_LSERDYC_Pos)     /*!< 0x00020000 */
+#define RCC_CIR_LSERDYC                      RCC_CIR_LSERDYC_Msk               /*!< LSE Ready Interrupt Clear */
+#define RCC_CIR_HSIRDYC_Pos                  (18U)                             
+#define RCC_CIR_HSIRDYC_Msk                  (0x1U << RCC_CIR_HSIRDYC_Pos)     /*!< 0x00040000 */
+#define RCC_CIR_HSIRDYC                      RCC_CIR_HSIRDYC_Msk               /*!< HSI Ready Interrupt Clear */
+#define RCC_CIR_HSERDYC_Pos                  (19U)                             
+#define RCC_CIR_HSERDYC_Msk                  (0x1U << RCC_CIR_HSERDYC_Pos)     /*!< 0x00080000 */
+#define RCC_CIR_HSERDYC                      RCC_CIR_HSERDYC_Msk               /*!< HSE Ready Interrupt Clear */
+#define RCC_CIR_PLLRDYC_Pos                  (20U)                             
+#define RCC_CIR_PLLRDYC_Msk                  (0x1U << RCC_CIR_PLLRDYC_Pos)     /*!< 0x00100000 */
+#define RCC_CIR_PLLRDYC                      RCC_CIR_PLLRDYC_Msk               /*!< PLL Ready Interrupt Clear */
+#define RCC_CIR_CSSC_Pos                     (23U)                             
+#define RCC_CIR_CSSC_Msk                     (0x1U << RCC_CIR_CSSC_Pos)        /*!< 0x00800000 */
+#define RCC_CIR_CSSC                         RCC_CIR_CSSC_Msk                  /*!< Clock Security System Interrupt Clear */
+
+
+/*****************  Bit definition for RCC_APB2RSTR register  *****************/
+#define RCC_APB2RSTR_AFIORST_Pos             (0U)                              
+#define RCC_APB2RSTR_AFIORST_Msk             (0x1U << RCC_APB2RSTR_AFIORST_Pos) /*!< 0x00000001 */
+#define RCC_APB2RSTR_AFIORST                 RCC_APB2RSTR_AFIORST_Msk          /*!< Alternate Function I/O reset */
+#define RCC_APB2RSTR_IOPARST_Pos             (2U)                              
+#define RCC_APB2RSTR_IOPARST_Msk             (0x1U << RCC_APB2RSTR_IOPARST_Pos) /*!< 0x00000004 */
+#define RCC_APB2RSTR_IOPARST                 RCC_APB2RSTR_IOPARST_Msk          /*!< I/O port A reset */
+#define RCC_APB2RSTR_IOPBRST_Pos             (3U)                              
+#define RCC_APB2RSTR_IOPBRST_Msk             (0x1U << RCC_APB2RSTR_IOPBRST_Pos) /*!< 0x00000008 */
+#define RCC_APB2RSTR_IOPBRST                 RCC_APB2RSTR_IOPBRST_Msk          /*!< I/O port B reset */
+#define RCC_APB2RSTR_IOPCRST_Pos             (4U)                              
+#define RCC_APB2RSTR_IOPCRST_Msk             (0x1U << RCC_APB2RSTR_IOPCRST_Pos) /*!< 0x00000010 */
+#define RCC_APB2RSTR_IOPCRST                 RCC_APB2RSTR_IOPCRST_Msk          /*!< I/O port C reset */
+#define RCC_APB2RSTR_IOPDRST_Pos             (5U)                              
+#define RCC_APB2RSTR_IOPDRST_Msk             (0x1U << RCC_APB2RSTR_IOPDRST_Pos) /*!< 0x00000020 */
+#define RCC_APB2RSTR_IOPDRST                 RCC_APB2RSTR_IOPDRST_Msk          /*!< I/O port D reset */
+#define RCC_APB2RSTR_ADC1RST_Pos             (9U)                              
+#define RCC_APB2RSTR_ADC1RST_Msk             (0x1U << RCC_APB2RSTR_ADC1RST_Pos) /*!< 0x00000200 */
+#define RCC_APB2RSTR_ADC1RST                 RCC_APB2RSTR_ADC1RST_Msk          /*!< ADC 1 interface reset */
+
+#define RCC_APB2RSTR_ADC2RST_Pos             (10U)                             
+#define RCC_APB2RSTR_ADC2RST_Msk             (0x1U << RCC_APB2RSTR_ADC2RST_Pos) /*!< 0x00000400 */
+#define RCC_APB2RSTR_ADC2RST                 RCC_APB2RSTR_ADC2RST_Msk          /*!< ADC 2 interface reset */
+
+#define RCC_APB2RSTR_TIM1RST_Pos             (11U)                             
+#define RCC_APB2RSTR_TIM1RST_Msk             (0x1U << RCC_APB2RSTR_TIM1RST_Pos) /*!< 0x00000800 */
+#define RCC_APB2RSTR_TIM1RST                 RCC_APB2RSTR_TIM1RST_Msk          /*!< TIM1 Timer reset */
+#define RCC_APB2RSTR_SPI1RST_Pos             (12U)                             
+#define RCC_APB2RSTR_SPI1RST_Msk             (0x1U << RCC_APB2RSTR_SPI1RST_Pos) /*!< 0x00001000 */
+#define RCC_APB2RSTR_SPI1RST                 RCC_APB2RSTR_SPI1RST_Msk          /*!< SPI 1 reset */
+#define RCC_APB2RSTR_USART1RST_Pos           (14U)                             
+#define RCC_APB2RSTR_USART1RST_Msk           (0x1U << RCC_APB2RSTR_USART1RST_Pos) /*!< 0x00004000 */
+#define RCC_APB2RSTR_USART1RST               RCC_APB2RSTR_USART1RST_Msk        /*!< USART1 reset */
+
+
+#define RCC_APB2RSTR_IOPERST_Pos             (6U)                              
+#define RCC_APB2RSTR_IOPERST_Msk             (0x1U << RCC_APB2RSTR_IOPERST_Pos) /*!< 0x00000040 */
+#define RCC_APB2RSTR_IOPERST                 RCC_APB2RSTR_IOPERST_Msk          /*!< I/O port E reset */
+
+
+
+
+/*****************  Bit definition for RCC_APB1RSTR register  *****************/
+#define RCC_APB1RSTR_TIM2RST_Pos             (0U)                              
+#define RCC_APB1RSTR_TIM2RST_Msk             (0x1U << RCC_APB1RSTR_TIM2RST_Pos) /*!< 0x00000001 */
+#define RCC_APB1RSTR_TIM2RST                 RCC_APB1RSTR_TIM2RST_Msk          /*!< Timer 2 reset */
+#define RCC_APB1RSTR_TIM3RST_Pos             (1U)                              
+#define RCC_APB1RSTR_TIM3RST_Msk             (0x1U << RCC_APB1RSTR_TIM3RST_Pos) /*!< 0x00000002 */
+#define RCC_APB1RSTR_TIM3RST                 RCC_APB1RSTR_TIM3RST_Msk          /*!< Timer 3 reset */
+#define RCC_APB1RSTR_WWDGRST_Pos             (11U)                             
+#define RCC_APB1RSTR_WWDGRST_Msk             (0x1U << RCC_APB1RSTR_WWDGRST_Pos) /*!< 0x00000800 */
+#define RCC_APB1RSTR_WWDGRST                 RCC_APB1RSTR_WWDGRST_Msk          /*!< Window Watchdog reset */
+#define RCC_APB1RSTR_USART2RST_Pos           (17U)                             
+#define RCC_APB1RSTR_USART2RST_Msk           (0x1U << RCC_APB1RSTR_USART2RST_Pos) /*!< 0x00020000 */
+#define RCC_APB1RSTR_USART2RST               RCC_APB1RSTR_USART2RST_Msk        /*!< USART 2 reset */
+#define RCC_APB1RSTR_I2C1RST_Pos             (21U)                             
+#define RCC_APB1RSTR_I2C1RST_Msk             (0x1U << RCC_APB1RSTR_I2C1RST_Pos) /*!< 0x00200000 */
+#define RCC_APB1RSTR_I2C1RST                 RCC_APB1RSTR_I2C1RST_Msk          /*!< I2C 1 reset */
+
+#define RCC_APB1RSTR_CAN1RST_Pos             (25U)                             
+#define RCC_APB1RSTR_CAN1RST_Msk             (0x1U << RCC_APB1RSTR_CAN1RST_Pos) /*!< 0x02000000 */
+#define RCC_APB1RSTR_CAN1RST                 RCC_APB1RSTR_CAN1RST_Msk          /*!< CAN1 reset */
+
+#define RCC_APB1RSTR_BKPRST_Pos              (27U)                             
+#define RCC_APB1RSTR_BKPRST_Msk              (0x1U << RCC_APB1RSTR_BKPRST_Pos) /*!< 0x08000000 */
+#define RCC_APB1RSTR_BKPRST                  RCC_APB1RSTR_BKPRST_Msk           /*!< Backup interface reset */
+#define RCC_APB1RSTR_PWRRST_Pos              (28U)                             
+#define RCC_APB1RSTR_PWRRST_Msk              (0x1U << RCC_APB1RSTR_PWRRST_Pos) /*!< 0x10000000 */
+#define RCC_APB1RSTR_PWRRST                  RCC_APB1RSTR_PWRRST_Msk           /*!< Power interface reset */
+
+#define RCC_APB1RSTR_TIM4RST_Pos             (2U)                              
+#define RCC_APB1RSTR_TIM4RST_Msk             (0x1U << RCC_APB1RSTR_TIM4RST_Pos) /*!< 0x00000004 */
+#define RCC_APB1RSTR_TIM4RST                 RCC_APB1RSTR_TIM4RST_Msk          /*!< Timer 4 reset */
+#define RCC_APB1RSTR_SPI2RST_Pos             (14U)                             
+#define RCC_APB1RSTR_SPI2RST_Msk             (0x1U << RCC_APB1RSTR_SPI2RST_Pos) /*!< 0x00004000 */
+#define RCC_APB1RSTR_SPI2RST                 RCC_APB1RSTR_SPI2RST_Msk          /*!< SPI 2 reset */
+#define RCC_APB1RSTR_USART3RST_Pos           (18U)                             
+#define RCC_APB1RSTR_USART3RST_Msk           (0x1U << RCC_APB1RSTR_USART3RST_Pos) /*!< 0x00040000 */
+#define RCC_APB1RSTR_USART3RST               RCC_APB1RSTR_USART3RST_Msk        /*!< USART 3 reset */
+#define RCC_APB1RSTR_I2C2RST_Pos             (22U)                             
+#define RCC_APB1RSTR_I2C2RST_Msk             (0x1U << RCC_APB1RSTR_I2C2RST_Pos) /*!< 0x00400000 */
+#define RCC_APB1RSTR_I2C2RST                 RCC_APB1RSTR_I2C2RST_Msk          /*!< I2C 2 reset */
+
+#define RCC_APB1RSTR_USBRST_Pos              (23U)                             
+#define RCC_APB1RSTR_USBRST_Msk              (0x1U << RCC_APB1RSTR_USBRST_Pos) /*!< 0x00800000 */
+#define RCC_APB1RSTR_USBRST                  RCC_APB1RSTR_USBRST_Msk           /*!< USB Device reset */
+
+
+
+
+
+
+/******************  Bit definition for RCC_AHBENR register  ******************/
+#define RCC_AHBENR_DMA1EN_Pos                (0U)                              
+#define RCC_AHBENR_DMA1EN_Msk                (0x1U << RCC_AHBENR_DMA1EN_Pos)   /*!< 0x00000001 */
+#define RCC_AHBENR_DMA1EN                    RCC_AHBENR_DMA1EN_Msk             /*!< DMA1 clock enable */
+#define RCC_AHBENR_SRAMEN_Pos                (2U)                              
+#define RCC_AHBENR_SRAMEN_Msk                (0x1U << RCC_AHBENR_SRAMEN_Pos)   /*!< 0x00000004 */
+#define RCC_AHBENR_SRAMEN                    RCC_AHBENR_SRAMEN_Msk             /*!< SRAM interface clock enable */
+#define RCC_AHBENR_FLITFEN_Pos               (4U)                              
+#define RCC_AHBENR_FLITFEN_Msk               (0x1U << RCC_AHBENR_FLITFEN_Pos)  /*!< 0x00000010 */
+#define RCC_AHBENR_FLITFEN                   RCC_AHBENR_FLITFEN_Msk            /*!< FLITF clock enable */
+#define RCC_AHBENR_CRCEN_Pos                 (6U)                              
+#define RCC_AHBENR_CRCEN_Msk                 (0x1U << RCC_AHBENR_CRCEN_Pos)    /*!< 0x00000040 */
+#define RCC_AHBENR_CRCEN                     RCC_AHBENR_CRCEN_Msk              /*!< CRC clock enable */
+
+
+
+
+/******************  Bit definition for RCC_APB2ENR register  *****************/
+#define RCC_APB2ENR_AFIOEN_Pos               (0U)                              
+#define RCC_APB2ENR_AFIOEN_Msk               (0x1U << RCC_APB2ENR_AFIOEN_Pos)  /*!< 0x00000001 */
+#define RCC_APB2ENR_AFIOEN                   RCC_APB2ENR_AFIOEN_Msk            /*!< Alternate Function I/O clock enable */
+#define RCC_APB2ENR_IOPAEN_Pos               (2U)                              
+#define RCC_APB2ENR_IOPAEN_Msk               (0x1U << RCC_APB2ENR_IOPAEN_Pos)  /*!< 0x00000004 */
+#define RCC_APB2ENR_IOPAEN                   RCC_APB2ENR_IOPAEN_Msk            /*!< I/O port A clock enable */
+#define RCC_APB2ENR_IOPBEN_Pos               (3U)                              
+#define RCC_APB2ENR_IOPBEN_Msk               (0x1U << RCC_APB2ENR_IOPBEN_Pos)  /*!< 0x00000008 */
+#define RCC_APB2ENR_IOPBEN                   RCC_APB2ENR_IOPBEN_Msk            /*!< I/O port B clock enable */
+#define RCC_APB2ENR_IOPCEN_Pos               (4U)                              
+#define RCC_APB2ENR_IOPCEN_Msk               (0x1U << RCC_APB2ENR_IOPCEN_Pos)  /*!< 0x00000010 */
+#define RCC_APB2ENR_IOPCEN                   RCC_APB2ENR_IOPCEN_Msk            /*!< I/O port C clock enable */
+#define RCC_APB2ENR_IOPDEN_Pos               (5U)                              
+#define RCC_APB2ENR_IOPDEN_Msk               (0x1U << RCC_APB2ENR_IOPDEN_Pos)  /*!< 0x00000020 */
+#define RCC_APB2ENR_IOPDEN                   RCC_APB2ENR_IOPDEN_Msk            /*!< I/O port D clock enable */
+#define RCC_APB2ENR_ADC1EN_Pos               (9U)                              
+#define RCC_APB2ENR_ADC1EN_Msk               (0x1U << RCC_APB2ENR_ADC1EN_Pos)  /*!< 0x00000200 */
+#define RCC_APB2ENR_ADC1EN                   RCC_APB2ENR_ADC1EN_Msk            /*!< ADC 1 interface clock enable */
+
+#define RCC_APB2ENR_ADC2EN_Pos               (10U)                             
+#define RCC_APB2ENR_ADC2EN_Msk               (0x1U << RCC_APB2ENR_ADC2EN_Pos)  /*!< 0x00000400 */
+#define RCC_APB2ENR_ADC2EN                   RCC_APB2ENR_ADC2EN_Msk            /*!< ADC 2 interface clock enable */
+
+#define RCC_APB2ENR_TIM1EN_Pos               (11U)                             
+#define RCC_APB2ENR_TIM1EN_Msk               (0x1U << RCC_APB2ENR_TIM1EN_Pos)  /*!< 0x00000800 */
+#define RCC_APB2ENR_TIM1EN                   RCC_APB2ENR_TIM1EN_Msk            /*!< TIM1 Timer clock enable */
+#define RCC_APB2ENR_SPI1EN_Pos               (12U)                             
+#define RCC_APB2ENR_SPI1EN_Msk               (0x1U << RCC_APB2ENR_SPI1EN_Pos)  /*!< 0x00001000 */
+#define RCC_APB2ENR_SPI1EN                   RCC_APB2ENR_SPI1EN_Msk            /*!< SPI 1 clock enable */
+#define RCC_APB2ENR_USART1EN_Pos             (14U)                             
+#define RCC_APB2ENR_USART1EN_Msk             (0x1U << RCC_APB2ENR_USART1EN_Pos) /*!< 0x00004000 */
+#define RCC_APB2ENR_USART1EN                 RCC_APB2ENR_USART1EN_Msk          /*!< USART1 clock enable */
+
+
+#define RCC_APB2ENR_IOPEEN_Pos               (6U)                              
+#define RCC_APB2ENR_IOPEEN_Msk               (0x1U << RCC_APB2ENR_IOPEEN_Pos)  /*!< 0x00000040 */
+#define RCC_APB2ENR_IOPEEN                   RCC_APB2ENR_IOPEEN_Msk            /*!< I/O port E clock enable */
+
+
+
+
+/*****************  Bit definition for RCC_APB1ENR register  ******************/
+#define RCC_APB1ENR_TIM2EN_Pos               (0U)                              
+#define RCC_APB1ENR_TIM2EN_Msk               (0x1U << RCC_APB1ENR_TIM2EN_Pos)  /*!< 0x00000001 */
+#define RCC_APB1ENR_TIM2EN                   RCC_APB1ENR_TIM2EN_Msk            /*!< Timer 2 clock enabled*/
+#define RCC_APB1ENR_TIM3EN_Pos               (1U)                              
+#define RCC_APB1ENR_TIM3EN_Msk               (0x1U << RCC_APB1ENR_TIM3EN_Pos)  /*!< 0x00000002 */
+#define RCC_APB1ENR_TIM3EN                   RCC_APB1ENR_TIM3EN_Msk            /*!< Timer 3 clock enable */
+#define RCC_APB1ENR_WWDGEN_Pos               (11U)                             
+#define RCC_APB1ENR_WWDGEN_Msk               (0x1U << RCC_APB1ENR_WWDGEN_Pos)  /*!< 0x00000800 */
+#define RCC_APB1ENR_WWDGEN                   RCC_APB1ENR_WWDGEN_Msk            /*!< Window Watchdog clock enable */
+#define RCC_APB1ENR_USART2EN_Pos             (17U)                             
+#define RCC_APB1ENR_USART2EN_Msk             (0x1U << RCC_APB1ENR_USART2EN_Pos) /*!< 0x00020000 */
+#define RCC_APB1ENR_USART2EN                 RCC_APB1ENR_USART2EN_Msk          /*!< USART 2 clock enable */
+#define RCC_APB1ENR_I2C1EN_Pos               (21U)                             
+#define RCC_APB1ENR_I2C1EN_Msk               (0x1U << RCC_APB1ENR_I2C1EN_Pos)  /*!< 0x00200000 */
+#define RCC_APB1ENR_I2C1EN                   RCC_APB1ENR_I2C1EN_Msk            /*!< I2C 1 clock enable */
+
+#define RCC_APB1ENR_CAN1EN_Pos               (25U)                             
+#define RCC_APB1ENR_CAN1EN_Msk               (0x1U << RCC_APB1ENR_CAN1EN_Pos)  /*!< 0x02000000 */
+#define RCC_APB1ENR_CAN1EN                   RCC_APB1ENR_CAN1EN_Msk            /*!< CAN1 clock enable */
+
+#define RCC_APB1ENR_BKPEN_Pos                (27U)                             
+#define RCC_APB1ENR_BKPEN_Msk                (0x1U << RCC_APB1ENR_BKPEN_Pos)   /*!< 0x08000000 */
+#define RCC_APB1ENR_BKPEN                    RCC_APB1ENR_BKPEN_Msk             /*!< Backup interface clock enable */
+#define RCC_APB1ENR_PWREN_Pos                (28U)                             
+#define RCC_APB1ENR_PWREN_Msk                (0x1U << RCC_APB1ENR_PWREN_Pos)   /*!< 0x10000000 */
+#define RCC_APB1ENR_PWREN                    RCC_APB1ENR_PWREN_Msk             /*!< Power interface clock enable */
+
+#define RCC_APB1ENR_TIM4EN_Pos               (2U)                              
+#define RCC_APB1ENR_TIM4EN_Msk               (0x1U << RCC_APB1ENR_TIM4EN_Pos)  /*!< 0x00000004 */
+#define RCC_APB1ENR_TIM4EN                   RCC_APB1ENR_TIM4EN_Msk            /*!< Timer 4 clock enable */
+#define RCC_APB1ENR_SPI2EN_Pos               (14U)                             
+#define RCC_APB1ENR_SPI2EN_Msk               (0x1U << RCC_APB1ENR_SPI2EN_Pos)  /*!< 0x00004000 */
+#define RCC_APB1ENR_SPI2EN                   RCC_APB1ENR_SPI2EN_Msk            /*!< SPI 2 clock enable */
+#define RCC_APB1ENR_USART3EN_Pos             (18U)                             
+#define RCC_APB1ENR_USART3EN_Msk             (0x1U << RCC_APB1ENR_USART3EN_Pos) /*!< 0x00040000 */
+#define RCC_APB1ENR_USART3EN                 RCC_APB1ENR_USART3EN_Msk          /*!< USART 3 clock enable */
+#define RCC_APB1ENR_I2C2EN_Pos               (22U)                             
+#define RCC_APB1ENR_I2C2EN_Msk               (0x1U << RCC_APB1ENR_I2C2EN_Pos)  /*!< 0x00400000 */
+#define RCC_APB1ENR_I2C2EN                   RCC_APB1ENR_I2C2EN_Msk            /*!< I2C 2 clock enable */
+
+#define RCC_APB1ENR_USBEN_Pos                (23U)                             
+#define RCC_APB1ENR_USBEN_Msk                (0x1U << RCC_APB1ENR_USBEN_Pos)   /*!< 0x00800000 */
+#define RCC_APB1ENR_USBEN                    RCC_APB1ENR_USBEN_Msk             /*!< USB Device clock enable */
+
+
+
+
+
+
+/*******************  Bit definition for RCC_BDCR register  *******************/
+#define RCC_BDCR_LSEON_Pos                   (0U)                              
+#define RCC_BDCR_LSEON_Msk                   (0x1U << RCC_BDCR_LSEON_Pos)      /*!< 0x00000001 */
+#define RCC_BDCR_LSEON                       RCC_BDCR_LSEON_Msk                /*!< External Low Speed oscillator enable */
+#define RCC_BDCR_LSERDY_Pos                  (1U)                              
+#define RCC_BDCR_LSERDY_Msk                  (0x1U << RCC_BDCR_LSERDY_Pos)     /*!< 0x00000002 */
+#define RCC_BDCR_LSERDY                      RCC_BDCR_LSERDY_Msk               /*!< External Low Speed oscillator Ready */
+#define RCC_BDCR_LSEBYP_Pos                  (2U)                              
+#define RCC_BDCR_LSEBYP_Msk                  (0x1U << RCC_BDCR_LSEBYP_Pos)     /*!< 0x00000004 */
+#define RCC_BDCR_LSEBYP                      RCC_BDCR_LSEBYP_Msk               /*!< External Low Speed oscillator Bypass */
+
+#define RCC_BDCR_RTCSEL_Pos                  (8U)                              
+#define RCC_BDCR_RTCSEL_Msk                  (0x3U << RCC_BDCR_RTCSEL_Pos)     /*!< 0x00000300 */
+#define RCC_BDCR_RTCSEL                      RCC_BDCR_RTCSEL_Msk               /*!< RTCSEL[1:0] bits (RTC clock source selection) */
+#define RCC_BDCR_RTCSEL_0                    (0x1U << RCC_BDCR_RTCSEL_Pos)     /*!< 0x00000100 */
+#define RCC_BDCR_RTCSEL_1                    (0x2U << RCC_BDCR_RTCSEL_Pos)     /*!< 0x00000200 */
+
+/*!< RTC congiguration */
+#define RCC_BDCR_RTCSEL_NOCLOCK              ((uint32_t)0x00000000)            /*!< No clock */
+#define RCC_BDCR_RTCSEL_LSE                  ((uint32_t)0x00000100)            /*!< LSE oscillator clock used as RTC clock */
+#define RCC_BDCR_RTCSEL_LSI                  ((uint32_t)0x00000200)            /*!< LSI oscillator clock used as RTC clock */
+#define RCC_BDCR_RTCSEL_HSE                  ((uint32_t)0x00000300)            /*!< HSE oscillator clock divided by 128 used as RTC clock */
+
+#define RCC_BDCR_RTCEN_Pos                   (15U)                             
+#define RCC_BDCR_RTCEN_Msk                   (0x1U << RCC_BDCR_RTCEN_Pos)      /*!< 0x00008000 */
+#define RCC_BDCR_RTCEN                       RCC_BDCR_RTCEN_Msk                /*!< RTC clock enable */
+#define RCC_BDCR_BDRST_Pos                   (16U)                             
+#define RCC_BDCR_BDRST_Msk                   (0x1U << RCC_BDCR_BDRST_Pos)      /*!< 0x00010000 */
+#define RCC_BDCR_BDRST                       RCC_BDCR_BDRST_Msk                /*!< Backup domain software reset  */
+
+/*******************  Bit definition for RCC_CSR register  ********************/  
+#define RCC_CSR_LSION_Pos                    (0U)                              
+#define RCC_CSR_LSION_Msk                    (0x1U << RCC_CSR_LSION_Pos)       /*!< 0x00000001 */
+#define RCC_CSR_LSION                        RCC_CSR_LSION_Msk                 /*!< Internal Low Speed oscillator enable */
+#define RCC_CSR_LSIRDY_Pos                   (1U)                              
+#define RCC_CSR_LSIRDY_Msk                   (0x1U << RCC_CSR_LSIRDY_Pos)      /*!< 0x00000002 */
+#define RCC_CSR_LSIRDY                       RCC_CSR_LSIRDY_Msk                /*!< Internal Low Speed oscillator Ready */
+#define RCC_CSR_RMVF_Pos                     (24U)                             
+#define RCC_CSR_RMVF_Msk                     (0x1U << RCC_CSR_RMVF_Pos)        /*!< 0x01000000 */
+#define RCC_CSR_RMVF                         RCC_CSR_RMVF_Msk                  /*!< Remove reset flag */
+#define RCC_CSR_PINRSTF_Pos                  (26U)                             
+#define RCC_CSR_PINRSTF_Msk                  (0x1U << RCC_CSR_PINRSTF_Pos)     /*!< 0x04000000 */
+#define RCC_CSR_PINRSTF                      RCC_CSR_PINRSTF_Msk               /*!< PIN reset flag */
+#define RCC_CSR_PORRSTF_Pos                  (27U)                             
+#define RCC_CSR_PORRSTF_Msk                  (0x1U << RCC_CSR_PORRSTF_Pos)     /*!< 0x08000000 */
+#define RCC_CSR_PORRSTF                      RCC_CSR_PORRSTF_Msk               /*!< POR/PDR reset flag */
+#define RCC_CSR_SFTRSTF_Pos                  (28U)                             
+#define RCC_CSR_SFTRSTF_Msk                  (0x1U << RCC_CSR_SFTRSTF_Pos)     /*!< 0x10000000 */
+#define RCC_CSR_SFTRSTF                      RCC_CSR_SFTRSTF_Msk               /*!< Software Reset flag */
+#define RCC_CSR_IWDGRSTF_Pos                 (29U)                             
+#define RCC_CSR_IWDGRSTF_Msk                 (0x1U << RCC_CSR_IWDGRSTF_Pos)    /*!< 0x20000000 */
+#define RCC_CSR_IWDGRSTF                     RCC_CSR_IWDGRSTF_Msk              /*!< Independent Watchdog reset flag */
+#define RCC_CSR_WWDGRSTF_Pos                 (30U)                             
+#define RCC_CSR_WWDGRSTF_Msk                 (0x1U << RCC_CSR_WWDGRSTF_Pos)    /*!< 0x40000000 */
+#define RCC_CSR_WWDGRSTF                     RCC_CSR_WWDGRSTF_Msk              /*!< Window watchdog reset flag */
+#define RCC_CSR_LPWRRSTF_Pos                 (31U)                             
+#define RCC_CSR_LPWRRSTF_Msk                 (0x1U << RCC_CSR_LPWRRSTF_Pos)    /*!< 0x80000000 */
+#define RCC_CSR_LPWRRSTF                     RCC_CSR_LPWRRSTF_Msk              /*!< Low-Power reset flag */
+
+
+ 
+/******************************************************************************/
+/*                                                                            */
+/*                General Purpose and Alternate Function I/O                  */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for GPIO_CRL register  *******************/
+#define GPIO_CRL_MODE_Pos                    (0U)                              
+#define GPIO_CRL_MODE_Msk                    (0x33333333U << GPIO_CRL_MODE_Pos) /*!< 0x33333333 */
+#define GPIO_CRL_MODE                        GPIO_CRL_MODE_Msk                 /*!< Port x mode bits */
+
+#define GPIO_CRL_MODE0_Pos                   (0U)                              
+#define GPIO_CRL_MODE0_Msk                   (0x3U << GPIO_CRL_MODE0_Pos)      /*!< 0x00000003 */
+#define GPIO_CRL_MODE0                       GPIO_CRL_MODE0_Msk                /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */
+#define GPIO_CRL_MODE0_0                     (0x1U << GPIO_CRL_MODE0_Pos)      /*!< 0x00000001 */
+#define GPIO_CRL_MODE0_1                     (0x2U << GPIO_CRL_MODE0_Pos)      /*!< 0x00000002 */
+
+#define GPIO_CRL_MODE1_Pos                   (4U)                              
+#define GPIO_CRL_MODE1_Msk                   (0x3U << GPIO_CRL_MODE1_Pos)      /*!< 0x00000030 */
+#define GPIO_CRL_MODE1                       GPIO_CRL_MODE1_Msk                /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */
+#define GPIO_CRL_MODE1_0                     (0x1U << GPIO_CRL_MODE1_Pos)      /*!< 0x00000010 */
+#define GPIO_CRL_MODE1_1                     (0x2U << GPIO_CRL_MODE1_Pos)      /*!< 0x00000020 */
+
+#define GPIO_CRL_MODE2_Pos                   (8U)                              
+#define GPIO_CRL_MODE2_Msk                   (0x3U << GPIO_CRL_MODE2_Pos)      /*!< 0x00000300 */
+#define GPIO_CRL_MODE2                       GPIO_CRL_MODE2_Msk                /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */
+#define GPIO_CRL_MODE2_0                     (0x1U << GPIO_CRL_MODE2_Pos)      /*!< 0x00000100 */
+#define GPIO_CRL_MODE2_1                     (0x2U << GPIO_CRL_MODE2_Pos)      /*!< 0x00000200 */
+
+#define GPIO_CRL_MODE3_Pos                   (12U)                             
+#define GPIO_CRL_MODE3_Msk                   (0x3U << GPIO_CRL_MODE3_Pos)      /*!< 0x00003000 */
+#define GPIO_CRL_MODE3                       GPIO_CRL_MODE3_Msk                /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */
+#define GPIO_CRL_MODE3_0                     (0x1U << GPIO_CRL_MODE3_Pos)      /*!< 0x00001000 */
+#define GPIO_CRL_MODE3_1                     (0x2U << GPIO_CRL_MODE3_Pos)      /*!< 0x00002000 */
+
+#define GPIO_CRL_MODE4_Pos                   (16U)                             
+#define GPIO_CRL_MODE4_Msk                   (0x3U << GPIO_CRL_MODE4_Pos)      /*!< 0x00030000 */
+#define GPIO_CRL_MODE4                       GPIO_CRL_MODE4_Msk                /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */
+#define GPIO_CRL_MODE4_0                     (0x1U << GPIO_CRL_MODE4_Pos)      /*!< 0x00010000 */
+#define GPIO_CRL_MODE4_1                     (0x2U << GPIO_CRL_MODE4_Pos)      /*!< 0x00020000 */
+
+#define GPIO_CRL_MODE5_Pos                   (20U)                             
+#define GPIO_CRL_MODE5_Msk                   (0x3U << GPIO_CRL_MODE5_Pos)      /*!< 0x00300000 */
+#define GPIO_CRL_MODE5                       GPIO_CRL_MODE5_Msk                /*!< MODE5[1:0] bits (Port x mode bits, pin 5) */
+#define GPIO_CRL_MODE5_0                     (0x1U << GPIO_CRL_MODE5_Pos)      /*!< 0x00100000 */
+#define GPIO_CRL_MODE5_1                     (0x2U << GPIO_CRL_MODE5_Pos)      /*!< 0x00200000 */
+
+#define GPIO_CRL_MODE6_Pos                   (24U)                             
+#define GPIO_CRL_MODE6_Msk                   (0x3U << GPIO_CRL_MODE6_Pos)      /*!< 0x03000000 */
+#define GPIO_CRL_MODE6                       GPIO_CRL_MODE6_Msk                /*!< MODE6[1:0] bits (Port x mode bits, pin 6) */
+#define GPIO_CRL_MODE6_0                     (0x1U << GPIO_CRL_MODE6_Pos)      /*!< 0x01000000 */
+#define GPIO_CRL_MODE6_1                     (0x2U << GPIO_CRL_MODE6_Pos)      /*!< 0x02000000 */
+
+#define GPIO_CRL_MODE7_Pos                   (28U)                             
+#define GPIO_CRL_MODE7_Msk                   (0x3U << GPIO_CRL_MODE7_Pos)      /*!< 0x30000000 */
+#define GPIO_CRL_MODE7                       GPIO_CRL_MODE7_Msk                /*!< MODE7[1:0] bits (Port x mode bits, pin 7) */
+#define GPIO_CRL_MODE7_0                     (0x1U << GPIO_CRL_MODE7_Pos)      /*!< 0x10000000 */
+#define GPIO_CRL_MODE7_1                     (0x2U << GPIO_CRL_MODE7_Pos)      /*!< 0x20000000 */
+
+#define GPIO_CRL_CNF_Pos                     (2U)                              
+#define GPIO_CRL_CNF_Msk                     (0x33333333U << GPIO_CRL_CNF_Pos) /*!< 0xCCCCCCCC */
+#define GPIO_CRL_CNF                         GPIO_CRL_CNF_Msk                  /*!< Port x configuration bits */
+
+#define GPIO_CRL_CNF0_Pos                    (2U)                              
+#define GPIO_CRL_CNF0_Msk                    (0x3U << GPIO_CRL_CNF0_Pos)       /*!< 0x0000000C */
+#define GPIO_CRL_CNF0                        GPIO_CRL_CNF0_Msk                 /*!< CNF0[1:0] bits (Port x configuration bits, pin 0) */
+#define GPIO_CRL_CNF0_0                      (0x1U << GPIO_CRL_CNF0_Pos)       /*!< 0x00000004 */
+#define GPIO_CRL_CNF0_1                      (0x2U << GPIO_CRL_CNF0_Pos)       /*!< 0x00000008 */
+
+#define GPIO_CRL_CNF1_Pos                    (6U)                              
+#define GPIO_CRL_CNF1_Msk                    (0x3U << GPIO_CRL_CNF1_Pos)       /*!< 0x000000C0 */
+#define GPIO_CRL_CNF1                        GPIO_CRL_CNF1_Msk                 /*!< CNF1[1:0] bits (Port x configuration bits, pin 1) */
+#define GPIO_CRL_CNF1_0                      (0x1U << GPIO_CRL_CNF1_Pos)       /*!< 0x00000040 */
+#define GPIO_CRL_CNF1_1                      (0x2U << GPIO_CRL_CNF1_Pos)       /*!< 0x00000080 */
+
+#define GPIO_CRL_CNF2_Pos                    (10U)                             
+#define GPIO_CRL_CNF2_Msk                    (0x3U << GPIO_CRL_CNF2_Pos)       /*!< 0x00000C00 */
+#define GPIO_CRL_CNF2                        GPIO_CRL_CNF2_Msk                 /*!< CNF2[1:0] bits (Port x configuration bits, pin 2) */
+#define GPIO_CRL_CNF2_0                      (0x1U << GPIO_CRL_CNF2_Pos)       /*!< 0x00000400 */
+#define GPIO_CRL_CNF2_1                      (0x2U << GPIO_CRL_CNF2_Pos)       /*!< 0x00000800 */
+
+#define GPIO_CRL_CNF3_Pos                    (14U)                             
+#define GPIO_CRL_CNF3_Msk                    (0x3U << GPIO_CRL_CNF3_Pos)       /*!< 0x0000C000 */
+#define GPIO_CRL_CNF3                        GPIO_CRL_CNF3_Msk                 /*!< CNF3[1:0] bits (Port x configuration bits, pin 3) */
+#define GPIO_CRL_CNF3_0                      (0x1U << GPIO_CRL_CNF3_Pos)       /*!< 0x00004000 */
+#define GPIO_CRL_CNF3_1                      (0x2U << GPIO_CRL_CNF3_Pos)       /*!< 0x00008000 */
+
+#define GPIO_CRL_CNF4_Pos                    (18U)                             
+#define GPIO_CRL_CNF4_Msk                    (0x3U << GPIO_CRL_CNF4_Pos)       /*!< 0x000C0000 */
+#define GPIO_CRL_CNF4                        GPIO_CRL_CNF4_Msk                 /*!< CNF4[1:0] bits (Port x configuration bits, pin 4) */
+#define GPIO_CRL_CNF4_0                      (0x1U << GPIO_CRL_CNF4_Pos)       /*!< 0x00040000 */
+#define GPIO_CRL_CNF4_1                      (0x2U << GPIO_CRL_CNF4_Pos)       /*!< 0x00080000 */
+
+#define GPIO_CRL_CNF5_Pos                    (22U)                             
+#define GPIO_CRL_CNF5_Msk                    (0x3U << GPIO_CRL_CNF5_Pos)       /*!< 0x00C00000 */
+#define GPIO_CRL_CNF5                        GPIO_CRL_CNF5_Msk                 /*!< CNF5[1:0] bits (Port x configuration bits, pin 5) */
+#define GPIO_CRL_CNF5_0                      (0x1U << GPIO_CRL_CNF5_Pos)       /*!< 0x00400000 */
+#define GPIO_CRL_CNF5_1                      (0x2U << GPIO_CRL_CNF5_Pos)       /*!< 0x00800000 */
+
+#define GPIO_CRL_CNF6_Pos                    (26U)                             
+#define GPIO_CRL_CNF6_Msk                    (0x3U << GPIO_CRL_CNF6_Pos)       /*!< 0x0C000000 */
+#define GPIO_CRL_CNF6                        GPIO_CRL_CNF6_Msk                 /*!< CNF6[1:0] bits (Port x configuration bits, pin 6) */
+#define GPIO_CRL_CNF6_0                      (0x1U << GPIO_CRL_CNF6_Pos)       /*!< 0x04000000 */
+#define GPIO_CRL_CNF6_1                      (0x2U << GPIO_CRL_CNF6_Pos)       /*!< 0x08000000 */
+
+#define GPIO_CRL_CNF7_Pos                    (30U)                             
+#define GPIO_CRL_CNF7_Msk                    (0x3U << GPIO_CRL_CNF7_Pos)       /*!< 0xC0000000 */
+#define GPIO_CRL_CNF7                        GPIO_CRL_CNF7_Msk                 /*!< CNF7[1:0] bits (Port x configuration bits, pin 7) */
+#define GPIO_CRL_CNF7_0                      (0x1U << GPIO_CRL_CNF7_Pos)       /*!< 0x40000000 */
+#define GPIO_CRL_CNF7_1                      (0x2U << GPIO_CRL_CNF7_Pos)       /*!< 0x80000000 */
+
+/*******************  Bit definition for GPIO_CRH register  *******************/
+#define GPIO_CRH_MODE_Pos                    (0U)                              
+#define GPIO_CRH_MODE_Msk                    (0x33333333U << GPIO_CRH_MODE_Pos) /*!< 0x33333333 */
+#define GPIO_CRH_MODE                        GPIO_CRH_MODE_Msk                 /*!< Port x mode bits */
+
+#define GPIO_CRH_MODE8_Pos                   (0U)                              
+#define GPIO_CRH_MODE8_Msk                   (0x3U << GPIO_CRH_MODE8_Pos)      /*!< 0x00000003 */
+#define GPIO_CRH_MODE8                       GPIO_CRH_MODE8_Msk                /*!< MODE8[1:0] bits (Port x mode bits, pin 8) */
+#define GPIO_CRH_MODE8_0                     (0x1U << GPIO_CRH_MODE8_Pos)      /*!< 0x00000001 */
+#define GPIO_CRH_MODE8_1                     (0x2U << GPIO_CRH_MODE8_Pos)      /*!< 0x00000002 */
+
+#define GPIO_CRH_MODE9_Pos                   (4U)                              
+#define GPIO_CRH_MODE9_Msk                   (0x3U << GPIO_CRH_MODE9_Pos)      /*!< 0x00000030 */
+#define GPIO_CRH_MODE9                       GPIO_CRH_MODE9_Msk                /*!< MODE9[1:0] bits (Port x mode bits, pin 9) */
+#define GPIO_CRH_MODE9_0                     (0x1U << GPIO_CRH_MODE9_Pos)      /*!< 0x00000010 */
+#define GPIO_CRH_MODE9_1                     (0x2U << GPIO_CRH_MODE9_Pos)      /*!< 0x00000020 */
+
+#define GPIO_CRH_MODE10_Pos                  (8U)                              
+#define GPIO_CRH_MODE10_Msk                  (0x3U << GPIO_CRH_MODE10_Pos)     /*!< 0x00000300 */
+#define GPIO_CRH_MODE10                      GPIO_CRH_MODE10_Msk               /*!< MODE10[1:0] bits (Port x mode bits, pin 10) */
+#define GPIO_CRH_MODE10_0                    (0x1U << GPIO_CRH_MODE10_Pos)     /*!< 0x00000100 */
+#define GPIO_CRH_MODE10_1                    (0x2U << GPIO_CRH_MODE10_Pos)     /*!< 0x00000200 */
+
+#define GPIO_CRH_MODE11_Pos                  (12U)                             
+#define GPIO_CRH_MODE11_Msk                  (0x3U << GPIO_CRH_MODE11_Pos)     /*!< 0x00003000 */
+#define GPIO_CRH_MODE11                      GPIO_CRH_MODE11_Msk               /*!< MODE11[1:0] bits (Port x mode bits, pin 11) */
+#define GPIO_CRH_MODE11_0                    (0x1U << GPIO_CRH_MODE11_Pos)     /*!< 0x00001000 */
+#define GPIO_CRH_MODE11_1                    (0x2U << GPIO_CRH_MODE11_Pos)     /*!< 0x00002000 */
+
+#define GPIO_CRH_MODE12_Pos                  (16U)                             
+#define GPIO_CRH_MODE12_Msk                  (0x3U << GPIO_CRH_MODE12_Pos)     /*!< 0x00030000 */
+#define GPIO_CRH_MODE12                      GPIO_CRH_MODE12_Msk               /*!< MODE12[1:0] bits (Port x mode bits, pin 12) */
+#define GPIO_CRH_MODE12_0                    (0x1U << GPIO_CRH_MODE12_Pos)     /*!< 0x00010000 */
+#define GPIO_CRH_MODE12_1                    (0x2U << GPIO_CRH_MODE12_Pos)     /*!< 0x00020000 */
+
+#define GPIO_CRH_MODE13_Pos                  (20U)                             
+#define GPIO_CRH_MODE13_Msk                  (0x3U << GPIO_CRH_MODE13_Pos)     /*!< 0x00300000 */
+#define GPIO_CRH_MODE13                      GPIO_CRH_MODE13_Msk               /*!< MODE13[1:0] bits (Port x mode bits, pin 13) */
+#define GPIO_CRH_MODE13_0                    (0x1U << GPIO_CRH_MODE13_Pos)     /*!< 0x00100000 */
+#define GPIO_CRH_MODE13_1                    (0x2U << GPIO_CRH_MODE13_Pos)     /*!< 0x00200000 */
+
+#define GPIO_CRH_MODE14_Pos                  (24U)                             
+#define GPIO_CRH_MODE14_Msk                  (0x3U << GPIO_CRH_MODE14_Pos)     /*!< 0x03000000 */
+#define GPIO_CRH_MODE14                      GPIO_CRH_MODE14_Msk               /*!< MODE14[1:0] bits (Port x mode bits, pin 14) */
+#define GPIO_CRH_MODE14_0                    (0x1U << GPIO_CRH_MODE14_Pos)     /*!< 0x01000000 */
+#define GPIO_CRH_MODE14_1                    (0x2U << GPIO_CRH_MODE14_Pos)     /*!< 0x02000000 */
+
+#define GPIO_CRH_MODE15_Pos                  (28U)                             
+#define GPIO_CRH_MODE15_Msk                  (0x3U << GPIO_CRH_MODE15_Pos)     /*!< 0x30000000 */
+#define GPIO_CRH_MODE15                      GPIO_CRH_MODE15_Msk               /*!< MODE15[1:0] bits (Port x mode bits, pin 15) */
+#define GPIO_CRH_MODE15_0                    (0x1U << GPIO_CRH_MODE15_Pos)     /*!< 0x10000000 */
+#define GPIO_CRH_MODE15_1                    (0x2U << GPIO_CRH_MODE15_Pos)     /*!< 0x20000000 */
+
+#define GPIO_CRH_CNF_Pos                     (2U)                              
+#define GPIO_CRH_CNF_Msk                     (0x33333333U << GPIO_CRH_CNF_Pos) /*!< 0xCCCCCCCC */
+#define GPIO_CRH_CNF                         GPIO_CRH_CNF_Msk                  /*!< Port x configuration bits */
+
+#define GPIO_CRH_CNF8_Pos                    (2U)                              
+#define GPIO_CRH_CNF8_Msk                    (0x3U << GPIO_CRH_CNF8_Pos)       /*!< 0x0000000C */
+#define GPIO_CRH_CNF8                        GPIO_CRH_CNF8_Msk                 /*!< CNF8[1:0] bits (Port x configuration bits, pin 8) */
+#define GPIO_CRH_CNF8_0                      (0x1U << GPIO_CRH_CNF8_Pos)       /*!< 0x00000004 */
+#define GPIO_CRH_CNF8_1                      (0x2U << GPIO_CRH_CNF8_Pos)       /*!< 0x00000008 */
+
+#define GPIO_CRH_CNF9_Pos                    (6U)                              
+#define GPIO_CRH_CNF9_Msk                    (0x3U << GPIO_CRH_CNF9_Pos)       /*!< 0x000000C0 */
+#define GPIO_CRH_CNF9                        GPIO_CRH_CNF9_Msk                 /*!< CNF9[1:0] bits (Port x configuration bits, pin 9) */
+#define GPIO_CRH_CNF9_0                      (0x1U << GPIO_CRH_CNF9_Pos)       /*!< 0x00000040 */
+#define GPIO_CRH_CNF9_1                      (0x2U << GPIO_CRH_CNF9_Pos)       /*!< 0x00000080 */
+
+#define GPIO_CRH_CNF10_Pos                   (10U)                             
+#define GPIO_CRH_CNF10_Msk                   (0x3U << GPIO_CRH_CNF10_Pos)      /*!< 0x00000C00 */
+#define GPIO_CRH_CNF10                       GPIO_CRH_CNF10_Msk                /*!< CNF10[1:0] bits (Port x configuration bits, pin 10) */
+#define GPIO_CRH_CNF10_0                     (0x1U << GPIO_CRH_CNF10_Pos)      /*!< 0x00000400 */
+#define GPIO_CRH_CNF10_1                     (0x2U << GPIO_CRH_CNF10_Pos)      /*!< 0x00000800 */
+
+#define GPIO_CRH_CNF11_Pos                   (14U)                             
+#define GPIO_CRH_CNF11_Msk                   (0x3U << GPIO_CRH_CNF11_Pos)      /*!< 0x0000C000 */
+#define GPIO_CRH_CNF11                       GPIO_CRH_CNF11_Msk                /*!< CNF11[1:0] bits (Port x configuration bits, pin 11) */
+#define GPIO_CRH_CNF11_0                     (0x1U << GPIO_CRH_CNF11_Pos)      /*!< 0x00004000 */
+#define GPIO_CRH_CNF11_1                     (0x2U << GPIO_CRH_CNF11_Pos)      /*!< 0x00008000 */
+
+#define GPIO_CRH_CNF12_Pos                   (18U)                             
+#define GPIO_CRH_CNF12_Msk                   (0x3U << GPIO_CRH_CNF12_Pos)      /*!< 0x000C0000 */
+#define GPIO_CRH_CNF12                       GPIO_CRH_CNF12_Msk                /*!< CNF12[1:0] bits (Port x configuration bits, pin 12) */
+#define GPIO_CRH_CNF12_0                     (0x1U << GPIO_CRH_CNF12_Pos)      /*!< 0x00040000 */
+#define GPIO_CRH_CNF12_1                     (0x2U << GPIO_CRH_CNF12_Pos)      /*!< 0x00080000 */
+
+#define GPIO_CRH_CNF13_Pos                   (22U)                             
+#define GPIO_CRH_CNF13_Msk                   (0x3U << GPIO_CRH_CNF13_Pos)      /*!< 0x00C00000 */
+#define GPIO_CRH_CNF13                       GPIO_CRH_CNF13_Msk                /*!< CNF13[1:0] bits (Port x configuration bits, pin 13) */
+#define GPIO_CRH_CNF13_0                     (0x1U << GPIO_CRH_CNF13_Pos)      /*!< 0x00400000 */
+#define GPIO_CRH_CNF13_1                     (0x2U << GPIO_CRH_CNF13_Pos)      /*!< 0x00800000 */
+
+#define GPIO_CRH_CNF14_Pos                   (26U)                             
+#define GPIO_CRH_CNF14_Msk                   (0x3U << GPIO_CRH_CNF14_Pos)      /*!< 0x0C000000 */
+#define GPIO_CRH_CNF14                       GPIO_CRH_CNF14_Msk                /*!< CNF14[1:0] bits (Port x configuration bits, pin 14) */
+#define GPIO_CRH_CNF14_0                     (0x1U << GPIO_CRH_CNF14_Pos)      /*!< 0x04000000 */
+#define GPIO_CRH_CNF14_1                     (0x2U << GPIO_CRH_CNF14_Pos)      /*!< 0x08000000 */
+
+#define GPIO_CRH_CNF15_Pos                   (30U)                             
+#define GPIO_CRH_CNF15_Msk                   (0x3U << GPIO_CRH_CNF15_Pos)      /*!< 0xC0000000 */
+#define GPIO_CRH_CNF15                       GPIO_CRH_CNF15_Msk                /*!< CNF15[1:0] bits (Port x configuration bits, pin 15) */
+#define GPIO_CRH_CNF15_0                     (0x1U << GPIO_CRH_CNF15_Pos)      /*!< 0x40000000 */
+#define GPIO_CRH_CNF15_1                     (0x2U << GPIO_CRH_CNF15_Pos)      /*!< 0x80000000 */
+
+/*!<******************  Bit definition for GPIO_IDR register  *******************/
+#define GPIO_IDR_IDR0_Pos                    (0U)                              
+#define GPIO_IDR_IDR0_Msk                    (0x1U << GPIO_IDR_IDR0_Pos)       /*!< 0x00000001 */
+#define GPIO_IDR_IDR0                        GPIO_IDR_IDR0_Msk                 /*!< Port input data, bit 0 */
+#define GPIO_IDR_IDR1_Pos                    (1U)                              
+#define GPIO_IDR_IDR1_Msk                    (0x1U << GPIO_IDR_IDR1_Pos)       /*!< 0x00000002 */
+#define GPIO_IDR_IDR1                        GPIO_IDR_IDR1_Msk                 /*!< Port input data, bit 1 */
+#define GPIO_IDR_IDR2_Pos                    (2U)                              
+#define GPIO_IDR_IDR2_Msk                    (0x1U << GPIO_IDR_IDR2_Pos)       /*!< 0x00000004 */
+#define GPIO_IDR_IDR2                        GPIO_IDR_IDR2_Msk                 /*!< Port input data, bit 2 */
+#define GPIO_IDR_IDR3_Pos                    (3U)                              
+#define GPIO_IDR_IDR3_Msk                    (0x1U << GPIO_IDR_IDR3_Pos)       /*!< 0x00000008 */
+#define GPIO_IDR_IDR3                        GPIO_IDR_IDR3_Msk                 /*!< Port input data, bit 3 */
+#define GPIO_IDR_IDR4_Pos                    (4U)                              
+#define GPIO_IDR_IDR4_Msk                    (0x1U << GPIO_IDR_IDR4_Pos)       /*!< 0x00000010 */
+#define GPIO_IDR_IDR4                        GPIO_IDR_IDR4_Msk                 /*!< Port input data, bit 4 */
+#define GPIO_IDR_IDR5_Pos                    (5U)                              
+#define GPIO_IDR_IDR5_Msk                    (0x1U << GPIO_IDR_IDR5_Pos)       /*!< 0x00000020 */
+#define GPIO_IDR_IDR5                        GPIO_IDR_IDR5_Msk                 /*!< Port input data, bit 5 */
+#define GPIO_IDR_IDR6_Pos                    (6U)                              
+#define GPIO_IDR_IDR6_Msk                    (0x1U << GPIO_IDR_IDR6_Pos)       /*!< 0x00000040 */
+#define GPIO_IDR_IDR6                        GPIO_IDR_IDR6_Msk                 /*!< Port input data, bit 6 */
+#define GPIO_IDR_IDR7_Pos                    (7U)                              
+#define GPIO_IDR_IDR7_Msk                    (0x1U << GPIO_IDR_IDR7_Pos)       /*!< 0x00000080 */
+#define GPIO_IDR_IDR7                        GPIO_IDR_IDR7_Msk                 /*!< Port input data, bit 7 */
+#define GPIO_IDR_IDR8_Pos                    (8U)                              
+#define GPIO_IDR_IDR8_Msk                    (0x1U << GPIO_IDR_IDR8_Pos)       /*!< 0x00000100 */
+#define GPIO_IDR_IDR8                        GPIO_IDR_IDR8_Msk                 /*!< Port input data, bit 8 */
+#define GPIO_IDR_IDR9_Pos                    (9U)                              
+#define GPIO_IDR_IDR9_Msk                    (0x1U << GPIO_IDR_IDR9_Pos)       /*!< 0x00000200 */
+#define GPIO_IDR_IDR9                        GPIO_IDR_IDR9_Msk                 /*!< Port input data, bit 9 */
+#define GPIO_IDR_IDR10_Pos                   (10U)                             
+#define GPIO_IDR_IDR10_Msk                   (0x1U << GPIO_IDR_IDR10_Pos)      /*!< 0x00000400 */
+#define GPIO_IDR_IDR10                       GPIO_IDR_IDR10_Msk                /*!< Port input data, bit 10 */
+#define GPIO_IDR_IDR11_Pos                   (11U)                             
+#define GPIO_IDR_IDR11_Msk                   (0x1U << GPIO_IDR_IDR11_Pos)      /*!< 0x00000800 */
+#define GPIO_IDR_IDR11                       GPIO_IDR_IDR11_Msk                /*!< Port input data, bit 11 */
+#define GPIO_IDR_IDR12_Pos                   (12U)                             
+#define GPIO_IDR_IDR12_Msk                   (0x1U << GPIO_IDR_IDR12_Pos)      /*!< 0x00001000 */
+#define GPIO_IDR_IDR12                       GPIO_IDR_IDR12_Msk                /*!< Port input data, bit 12 */
+#define GPIO_IDR_IDR13_Pos                   (13U)                             
+#define GPIO_IDR_IDR13_Msk                   (0x1U << GPIO_IDR_IDR13_Pos)      /*!< 0x00002000 */
+#define GPIO_IDR_IDR13                       GPIO_IDR_IDR13_Msk                /*!< Port input data, bit 13 */
+#define GPIO_IDR_IDR14_Pos                   (14U)                             
+#define GPIO_IDR_IDR14_Msk                   (0x1U << GPIO_IDR_IDR14_Pos)      /*!< 0x00004000 */
+#define GPIO_IDR_IDR14                       GPIO_IDR_IDR14_Msk                /*!< Port input data, bit 14 */
+#define GPIO_IDR_IDR15_Pos                   (15U)                             
+#define GPIO_IDR_IDR15_Msk                   (0x1U << GPIO_IDR_IDR15_Pos)      /*!< 0x00008000 */
+#define GPIO_IDR_IDR15                       GPIO_IDR_IDR15_Msk                /*!< Port input data, bit 15 */
+
+/*******************  Bit definition for GPIO_ODR register  *******************/
+#define GPIO_ODR_ODR0_Pos                    (0U)                              
+#define GPIO_ODR_ODR0_Msk                    (0x1U << GPIO_ODR_ODR0_Pos)       /*!< 0x00000001 */
+#define GPIO_ODR_ODR0                        GPIO_ODR_ODR0_Msk                 /*!< Port output data, bit 0 */
+#define GPIO_ODR_ODR1_Pos                    (1U)                              
+#define GPIO_ODR_ODR1_Msk                    (0x1U << GPIO_ODR_ODR1_Pos)       /*!< 0x00000002 */
+#define GPIO_ODR_ODR1                        GPIO_ODR_ODR1_Msk                 /*!< Port output data, bit 1 */
+#define GPIO_ODR_ODR2_Pos                    (2U)                              
+#define GPIO_ODR_ODR2_Msk                    (0x1U << GPIO_ODR_ODR2_Pos)       /*!< 0x00000004 */
+#define GPIO_ODR_ODR2                        GPIO_ODR_ODR2_Msk                 /*!< Port output data, bit 2 */
+#define GPIO_ODR_ODR3_Pos                    (3U)                              
+#define GPIO_ODR_ODR3_Msk                    (0x1U << GPIO_ODR_ODR3_Pos)       /*!< 0x00000008 */
+#define GPIO_ODR_ODR3                        GPIO_ODR_ODR3_Msk                 /*!< Port output data, bit 3 */
+#define GPIO_ODR_ODR4_Pos                    (4U)                              
+#define GPIO_ODR_ODR4_Msk                    (0x1U << GPIO_ODR_ODR4_Pos)       /*!< 0x00000010 */
+#define GPIO_ODR_ODR4                        GPIO_ODR_ODR4_Msk                 /*!< Port output data, bit 4 */
+#define GPIO_ODR_ODR5_Pos                    (5U)                              
+#define GPIO_ODR_ODR5_Msk                    (0x1U << GPIO_ODR_ODR5_Pos)       /*!< 0x00000020 */
+#define GPIO_ODR_ODR5                        GPIO_ODR_ODR5_Msk                 /*!< Port output data, bit 5 */
+#define GPIO_ODR_ODR6_Pos                    (6U)                              
+#define GPIO_ODR_ODR6_Msk                    (0x1U << GPIO_ODR_ODR6_Pos)       /*!< 0x00000040 */
+#define GPIO_ODR_ODR6                        GPIO_ODR_ODR6_Msk                 /*!< Port output data, bit 6 */
+#define GPIO_ODR_ODR7_Pos                    (7U)                              
+#define GPIO_ODR_ODR7_Msk                    (0x1U << GPIO_ODR_ODR7_Pos)       /*!< 0x00000080 */
+#define GPIO_ODR_ODR7                        GPIO_ODR_ODR7_Msk                 /*!< Port output data, bit 7 */
+#define GPIO_ODR_ODR8_Pos                    (8U)                              
+#define GPIO_ODR_ODR8_Msk                    (0x1U << GPIO_ODR_ODR8_Pos)       /*!< 0x00000100 */
+#define GPIO_ODR_ODR8                        GPIO_ODR_ODR8_Msk                 /*!< Port output data, bit 8 */
+#define GPIO_ODR_ODR9_Pos                    (9U)                              
+#define GPIO_ODR_ODR9_Msk                    (0x1U << GPIO_ODR_ODR9_Pos)       /*!< 0x00000200 */
+#define GPIO_ODR_ODR9                        GPIO_ODR_ODR9_Msk                 /*!< Port output data, bit 9 */
+#define GPIO_ODR_ODR10_Pos                   (10U)                             
+#define GPIO_ODR_ODR10_Msk                   (0x1U << GPIO_ODR_ODR10_Pos)      /*!< 0x00000400 */
+#define GPIO_ODR_ODR10                       GPIO_ODR_ODR10_Msk                /*!< Port output data, bit 10 */
+#define GPIO_ODR_ODR11_Pos                   (11U)                             
+#define GPIO_ODR_ODR11_Msk                   (0x1U << GPIO_ODR_ODR11_Pos)      /*!< 0x00000800 */
+#define GPIO_ODR_ODR11                       GPIO_ODR_ODR11_Msk                /*!< Port output data, bit 11 */
+#define GPIO_ODR_ODR12_Pos                   (12U)                             
+#define GPIO_ODR_ODR12_Msk                   (0x1U << GPIO_ODR_ODR12_Pos)      /*!< 0x00001000 */
+#define GPIO_ODR_ODR12                       GPIO_ODR_ODR12_Msk                /*!< Port output data, bit 12 */
+#define GPIO_ODR_ODR13_Pos                   (13U)                             
+#define GPIO_ODR_ODR13_Msk                   (0x1U << GPIO_ODR_ODR13_Pos)      /*!< 0x00002000 */
+#define GPIO_ODR_ODR13                       GPIO_ODR_ODR13_Msk                /*!< Port output data, bit 13 */
+#define GPIO_ODR_ODR14_Pos                   (14U)                             
+#define GPIO_ODR_ODR14_Msk                   (0x1U << GPIO_ODR_ODR14_Pos)      /*!< 0x00004000 */
+#define GPIO_ODR_ODR14                       GPIO_ODR_ODR14_Msk                /*!< Port output data, bit 14 */
+#define GPIO_ODR_ODR15_Pos                   (15U)                             
+#define GPIO_ODR_ODR15_Msk                   (0x1U << GPIO_ODR_ODR15_Pos)      /*!< 0x00008000 */
+#define GPIO_ODR_ODR15                       GPIO_ODR_ODR15_Msk                /*!< Port output data, bit 15 */
+
+/******************  Bit definition for GPIO_BSRR register  *******************/
+#define GPIO_BSRR_BS0_Pos                    (0U)                              
+#define GPIO_BSRR_BS0_Msk                    (0x1U << GPIO_BSRR_BS0_Pos)       /*!< 0x00000001 */
+#define GPIO_BSRR_BS0                        GPIO_BSRR_BS0_Msk                 /*!< Port x Set bit 0 */
+#define GPIO_BSRR_BS1_Pos                    (1U)                              
+#define GPIO_BSRR_BS1_Msk                    (0x1U << GPIO_BSRR_BS1_Pos)       /*!< 0x00000002 */
+#define GPIO_BSRR_BS1                        GPIO_BSRR_BS1_Msk                 /*!< Port x Set bit 1 */
+#define GPIO_BSRR_BS2_Pos                    (2U)                              
+#define GPIO_BSRR_BS2_Msk                    (0x1U << GPIO_BSRR_BS2_Pos)       /*!< 0x00000004 */
+#define GPIO_BSRR_BS2                        GPIO_BSRR_BS2_Msk                 /*!< Port x Set bit 2 */
+#define GPIO_BSRR_BS3_Pos                    (3U)                              
+#define GPIO_BSRR_BS3_Msk                    (0x1U << GPIO_BSRR_BS3_Pos)       /*!< 0x00000008 */
+#define GPIO_BSRR_BS3                        GPIO_BSRR_BS3_Msk                 /*!< Port x Set bit 3 */
+#define GPIO_BSRR_BS4_Pos                    (4U)                              
+#define GPIO_BSRR_BS4_Msk                    (0x1U << GPIO_BSRR_BS4_Pos)       /*!< 0x00000010 */
+#define GPIO_BSRR_BS4                        GPIO_BSRR_BS4_Msk                 /*!< Port x Set bit 4 */
+#define GPIO_BSRR_BS5_Pos                    (5U)                              
+#define GPIO_BSRR_BS5_Msk                    (0x1U << GPIO_BSRR_BS5_Pos)       /*!< 0x00000020 */
+#define GPIO_BSRR_BS5                        GPIO_BSRR_BS5_Msk                 /*!< Port x Set bit 5 */
+#define GPIO_BSRR_BS6_Pos                    (6U)                              
+#define GPIO_BSRR_BS6_Msk                    (0x1U << GPIO_BSRR_BS6_Pos)       /*!< 0x00000040 */
+#define GPIO_BSRR_BS6                        GPIO_BSRR_BS6_Msk                 /*!< Port x Set bit 6 */
+#define GPIO_BSRR_BS7_Pos                    (7U)                              
+#define GPIO_BSRR_BS7_Msk                    (0x1U << GPIO_BSRR_BS7_Pos)       /*!< 0x00000080 */
+#define GPIO_BSRR_BS7                        GPIO_BSRR_BS7_Msk                 /*!< Port x Set bit 7 */
+#define GPIO_BSRR_BS8_Pos                    (8U)                              
+#define GPIO_BSRR_BS8_Msk                    (0x1U << GPIO_BSRR_BS8_Pos)       /*!< 0x00000100 */
+#define GPIO_BSRR_BS8                        GPIO_BSRR_BS8_Msk                 /*!< Port x Set bit 8 */
+#define GPIO_BSRR_BS9_Pos                    (9U)                              
+#define GPIO_BSRR_BS9_Msk                    (0x1U << GPIO_BSRR_BS9_Pos)       /*!< 0x00000200 */
+#define GPIO_BSRR_BS9                        GPIO_BSRR_BS9_Msk                 /*!< Port x Set bit 9 */
+#define GPIO_BSRR_BS10_Pos                   (10U)                             
+#define GPIO_BSRR_BS10_Msk                   (0x1U << GPIO_BSRR_BS10_Pos)      /*!< 0x00000400 */
+#define GPIO_BSRR_BS10                       GPIO_BSRR_BS10_Msk                /*!< Port x Set bit 10 */
+#define GPIO_BSRR_BS11_Pos                   (11U)                             
+#define GPIO_BSRR_BS11_Msk                   (0x1U << GPIO_BSRR_BS11_Pos)      /*!< 0x00000800 */
+#define GPIO_BSRR_BS11                       GPIO_BSRR_BS11_Msk                /*!< Port x Set bit 11 */
+#define GPIO_BSRR_BS12_Pos                   (12U)                             
+#define GPIO_BSRR_BS12_Msk                   (0x1U << GPIO_BSRR_BS12_Pos)      /*!< 0x00001000 */
+#define GPIO_BSRR_BS12                       GPIO_BSRR_BS12_Msk                /*!< Port x Set bit 12 */
+#define GPIO_BSRR_BS13_Pos                   (13U)                             
+#define GPIO_BSRR_BS13_Msk                   (0x1U << GPIO_BSRR_BS13_Pos)      /*!< 0x00002000 */
+#define GPIO_BSRR_BS13                       GPIO_BSRR_BS13_Msk                /*!< Port x Set bit 13 */
+#define GPIO_BSRR_BS14_Pos                   (14U)                             
+#define GPIO_BSRR_BS14_Msk                   (0x1U << GPIO_BSRR_BS14_Pos)      /*!< 0x00004000 */
+#define GPIO_BSRR_BS14                       GPIO_BSRR_BS14_Msk                /*!< Port x Set bit 14 */
+#define GPIO_BSRR_BS15_Pos                   (15U)                             
+#define GPIO_BSRR_BS15_Msk                   (0x1U << GPIO_BSRR_BS15_Pos)      /*!< 0x00008000 */
+#define GPIO_BSRR_BS15                       GPIO_BSRR_BS15_Msk                /*!< Port x Set bit 15 */
+
+#define GPIO_BSRR_BR0_Pos                    (16U)                             
+#define GPIO_BSRR_BR0_Msk                    (0x1U << GPIO_BSRR_BR0_Pos)       /*!< 0x00010000 */
+#define GPIO_BSRR_BR0                        GPIO_BSRR_BR0_Msk                 /*!< Port x Reset bit 0 */
+#define GPIO_BSRR_BR1_Pos                    (17U)                             
+#define GPIO_BSRR_BR1_Msk                    (0x1U << GPIO_BSRR_BR1_Pos)       /*!< 0x00020000 */
+#define GPIO_BSRR_BR1                        GPIO_BSRR_BR1_Msk                 /*!< Port x Reset bit 1 */
+#define GPIO_BSRR_BR2_Pos                    (18U)                             
+#define GPIO_BSRR_BR2_Msk                    (0x1U << GPIO_BSRR_BR2_Pos)       /*!< 0x00040000 */
+#define GPIO_BSRR_BR2                        GPIO_BSRR_BR2_Msk                 /*!< Port x Reset bit 2 */
+#define GPIO_BSRR_BR3_Pos                    (19U)                             
+#define GPIO_BSRR_BR3_Msk                    (0x1U << GPIO_BSRR_BR3_Pos)       /*!< 0x00080000 */
+#define GPIO_BSRR_BR3                        GPIO_BSRR_BR3_Msk                 /*!< Port x Reset bit 3 */
+#define GPIO_BSRR_BR4_Pos                    (20U)                             
+#define GPIO_BSRR_BR4_Msk                    (0x1U << GPIO_BSRR_BR4_Pos)       /*!< 0x00100000 */
+#define GPIO_BSRR_BR4                        GPIO_BSRR_BR4_Msk                 /*!< Port x Reset bit 4 */
+#define GPIO_BSRR_BR5_Pos                    (21U)                             
+#define GPIO_BSRR_BR5_Msk                    (0x1U << GPIO_BSRR_BR5_Pos)       /*!< 0x00200000 */
+#define GPIO_BSRR_BR5                        GPIO_BSRR_BR5_Msk                 /*!< Port x Reset bit 5 */
+#define GPIO_BSRR_BR6_Pos                    (22U)                             
+#define GPIO_BSRR_BR6_Msk                    (0x1U << GPIO_BSRR_BR6_Pos)       /*!< 0x00400000 */
+#define GPIO_BSRR_BR6                        GPIO_BSRR_BR6_Msk                 /*!< Port x Reset bit 6 */
+#define GPIO_BSRR_BR7_Pos                    (23U)                             
+#define GPIO_BSRR_BR7_Msk                    (0x1U << GPIO_BSRR_BR7_Pos)       /*!< 0x00800000 */
+#define GPIO_BSRR_BR7                        GPIO_BSRR_BR7_Msk                 /*!< Port x Reset bit 7 */
+#define GPIO_BSRR_BR8_Pos                    (24U)                             
+#define GPIO_BSRR_BR8_Msk                    (0x1U << GPIO_BSRR_BR8_Pos)       /*!< 0x01000000 */
+#define GPIO_BSRR_BR8                        GPIO_BSRR_BR8_Msk                 /*!< Port x Reset bit 8 */
+#define GPIO_BSRR_BR9_Pos                    (25U)                             
+#define GPIO_BSRR_BR9_Msk                    (0x1U << GPIO_BSRR_BR9_Pos)       /*!< 0x02000000 */
+#define GPIO_BSRR_BR9                        GPIO_BSRR_BR9_Msk                 /*!< Port x Reset bit 9 */
+#define GPIO_BSRR_BR10_Pos                   (26U)                             
+#define GPIO_BSRR_BR10_Msk                   (0x1U << GPIO_BSRR_BR10_Pos)      /*!< 0x04000000 */
+#define GPIO_BSRR_BR10                       GPIO_BSRR_BR10_Msk                /*!< Port x Reset bit 10 */
+#define GPIO_BSRR_BR11_Pos                   (27U)                             
+#define GPIO_BSRR_BR11_Msk                   (0x1U << GPIO_BSRR_BR11_Pos)      /*!< 0x08000000 */
+#define GPIO_BSRR_BR11                       GPIO_BSRR_BR11_Msk                /*!< Port x Reset bit 11 */
+#define GPIO_BSRR_BR12_Pos                   (28U)                             
+#define GPIO_BSRR_BR12_Msk                   (0x1U << GPIO_BSRR_BR12_Pos)      /*!< 0x10000000 */
+#define GPIO_BSRR_BR12                       GPIO_BSRR_BR12_Msk                /*!< Port x Reset bit 12 */
+#define GPIO_BSRR_BR13_Pos                   (29U)                             
+#define GPIO_BSRR_BR13_Msk                   (0x1U << GPIO_BSRR_BR13_Pos)      /*!< 0x20000000 */
+#define GPIO_BSRR_BR13                       GPIO_BSRR_BR13_Msk                /*!< Port x Reset bit 13 */
+#define GPIO_BSRR_BR14_Pos                   (30U)                             
+#define GPIO_BSRR_BR14_Msk                   (0x1U << GPIO_BSRR_BR14_Pos)      /*!< 0x40000000 */
+#define GPIO_BSRR_BR14                       GPIO_BSRR_BR14_Msk                /*!< Port x Reset bit 14 */
+#define GPIO_BSRR_BR15_Pos                   (31U)                             
+#define GPIO_BSRR_BR15_Msk                   (0x1U << GPIO_BSRR_BR15_Pos)      /*!< 0x80000000 */
+#define GPIO_BSRR_BR15                       GPIO_BSRR_BR15_Msk                /*!< Port x Reset bit 15 */
+
+/*******************  Bit definition for GPIO_BRR register  *******************/
+#define GPIO_BRR_BR0_Pos                     (0U)                              
+#define GPIO_BRR_BR0_Msk                     (0x1U << GPIO_BRR_BR0_Pos)        /*!< 0x00000001 */
+#define GPIO_BRR_BR0                         GPIO_BRR_BR0_Msk                  /*!< Port x Reset bit 0 */
+#define GPIO_BRR_BR1_Pos                     (1U)                              
+#define GPIO_BRR_BR1_Msk                     (0x1U << GPIO_BRR_BR1_Pos)        /*!< 0x00000002 */
+#define GPIO_BRR_BR1                         GPIO_BRR_BR1_Msk                  /*!< Port x Reset bit 1 */
+#define GPIO_BRR_BR2_Pos                     (2U)                              
+#define GPIO_BRR_BR2_Msk                     (0x1U << GPIO_BRR_BR2_Pos)        /*!< 0x00000004 */
+#define GPIO_BRR_BR2                         GPIO_BRR_BR2_Msk                  /*!< Port x Reset bit 2 */
+#define GPIO_BRR_BR3_Pos                     (3U)                              
+#define GPIO_BRR_BR3_Msk                     (0x1U << GPIO_BRR_BR3_Pos)        /*!< 0x00000008 */
+#define GPIO_BRR_BR3                         GPIO_BRR_BR3_Msk                  /*!< Port x Reset bit 3 */
+#define GPIO_BRR_BR4_Pos                     (4U)                              
+#define GPIO_BRR_BR4_Msk                     (0x1U << GPIO_BRR_BR4_Pos)        /*!< 0x00000010 */
+#define GPIO_BRR_BR4                         GPIO_BRR_BR4_Msk                  /*!< Port x Reset bit 4 */
+#define GPIO_BRR_BR5_Pos                     (5U)                              
+#define GPIO_BRR_BR5_Msk                     (0x1U << GPIO_BRR_BR5_Pos)        /*!< 0x00000020 */
+#define GPIO_BRR_BR5                         GPIO_BRR_BR5_Msk                  /*!< Port x Reset bit 5 */
+#define GPIO_BRR_BR6_Pos                     (6U)                              
+#define GPIO_BRR_BR6_Msk                     (0x1U << GPIO_BRR_BR6_Pos)        /*!< 0x00000040 */
+#define GPIO_BRR_BR6                         GPIO_BRR_BR6_Msk                  /*!< Port x Reset bit 6 */
+#define GPIO_BRR_BR7_Pos                     (7U)                              
+#define GPIO_BRR_BR7_Msk                     (0x1U << GPIO_BRR_BR7_Pos)        /*!< 0x00000080 */
+#define GPIO_BRR_BR7                         GPIO_BRR_BR7_Msk                  /*!< Port x Reset bit 7 */
+#define GPIO_BRR_BR8_Pos                     (8U)                              
+#define GPIO_BRR_BR8_Msk                     (0x1U << GPIO_BRR_BR8_Pos)        /*!< 0x00000100 */
+#define GPIO_BRR_BR8                         GPIO_BRR_BR8_Msk                  /*!< Port x Reset bit 8 */
+#define GPIO_BRR_BR9_Pos                     (9U)                              
+#define GPIO_BRR_BR9_Msk                     (0x1U << GPIO_BRR_BR9_Pos)        /*!< 0x00000200 */
+#define GPIO_BRR_BR9                         GPIO_BRR_BR9_Msk                  /*!< Port x Reset bit 9 */
+#define GPIO_BRR_BR10_Pos                    (10U)                             
+#define GPIO_BRR_BR10_Msk                    (0x1U << GPIO_BRR_BR10_Pos)       /*!< 0x00000400 */
+#define GPIO_BRR_BR10                        GPIO_BRR_BR10_Msk                 /*!< Port x Reset bit 10 */
+#define GPIO_BRR_BR11_Pos                    (11U)                             
+#define GPIO_BRR_BR11_Msk                    (0x1U << GPIO_BRR_BR11_Pos)       /*!< 0x00000800 */
+#define GPIO_BRR_BR11                        GPIO_BRR_BR11_Msk                 /*!< Port x Reset bit 11 */
+#define GPIO_BRR_BR12_Pos                    (12U)                             
+#define GPIO_BRR_BR12_Msk                    (0x1U << GPIO_BRR_BR12_Pos)       /*!< 0x00001000 */
+#define GPIO_BRR_BR12                        GPIO_BRR_BR12_Msk                 /*!< Port x Reset bit 12 */
+#define GPIO_BRR_BR13_Pos                    (13U)                             
+#define GPIO_BRR_BR13_Msk                    (0x1U << GPIO_BRR_BR13_Pos)       /*!< 0x00002000 */
+#define GPIO_BRR_BR13                        GPIO_BRR_BR13_Msk                 /*!< Port x Reset bit 13 */
+#define GPIO_BRR_BR14_Pos                    (14U)                             
+#define GPIO_BRR_BR14_Msk                    (0x1U << GPIO_BRR_BR14_Pos)       /*!< 0x00004000 */
+#define GPIO_BRR_BR14                        GPIO_BRR_BR14_Msk                 /*!< Port x Reset bit 14 */
+#define GPIO_BRR_BR15_Pos                    (15U)                             
+#define GPIO_BRR_BR15_Msk                    (0x1U << GPIO_BRR_BR15_Pos)       /*!< 0x00008000 */
+#define GPIO_BRR_BR15                        GPIO_BRR_BR15_Msk                 /*!< Port x Reset bit 15 */
+
+/******************  Bit definition for GPIO_LCKR register  *******************/
+#define GPIO_LCKR_LCK0_Pos                   (0U)                              
+#define GPIO_LCKR_LCK0_Msk                   (0x1U << GPIO_LCKR_LCK0_Pos)      /*!< 0x00000001 */
+#define GPIO_LCKR_LCK0                       GPIO_LCKR_LCK0_Msk                /*!< Port x Lock bit 0 */
+#define GPIO_LCKR_LCK1_Pos                   (1U)                              
+#define GPIO_LCKR_LCK1_Msk                   (0x1U << GPIO_LCKR_LCK1_Pos)      /*!< 0x00000002 */
+#define GPIO_LCKR_LCK1                       GPIO_LCKR_LCK1_Msk                /*!< Port x Lock bit 1 */
+#define GPIO_LCKR_LCK2_Pos                   (2U)                              
+#define GPIO_LCKR_LCK2_Msk                   (0x1U << GPIO_LCKR_LCK2_Pos)      /*!< 0x00000004 */
+#define GPIO_LCKR_LCK2                       GPIO_LCKR_LCK2_Msk                /*!< Port x Lock bit 2 */
+#define GPIO_LCKR_LCK3_Pos                   (3U)                              
+#define GPIO_LCKR_LCK3_Msk                   (0x1U << GPIO_LCKR_LCK3_Pos)      /*!< 0x00000008 */
+#define GPIO_LCKR_LCK3                       GPIO_LCKR_LCK3_Msk                /*!< Port x Lock bit 3 */
+#define GPIO_LCKR_LCK4_Pos                   (4U)                              
+#define GPIO_LCKR_LCK4_Msk                   (0x1U << GPIO_LCKR_LCK4_Pos)      /*!< 0x00000010 */
+#define GPIO_LCKR_LCK4                       GPIO_LCKR_LCK4_Msk                /*!< Port x Lock bit 4 */
+#define GPIO_LCKR_LCK5_Pos                   (5U)                              
+#define GPIO_LCKR_LCK5_Msk                   (0x1U << GPIO_LCKR_LCK5_Pos)      /*!< 0x00000020 */
+#define GPIO_LCKR_LCK5                       GPIO_LCKR_LCK5_Msk                /*!< Port x Lock bit 5 */
+#define GPIO_LCKR_LCK6_Pos                   (6U)                              
+#define GPIO_LCKR_LCK6_Msk                   (0x1U << GPIO_LCKR_LCK6_Pos)      /*!< 0x00000040 */
+#define GPIO_LCKR_LCK6                       GPIO_LCKR_LCK6_Msk                /*!< Port x Lock bit 6 */
+#define GPIO_LCKR_LCK7_Pos                   (7U)                              
+#define GPIO_LCKR_LCK7_Msk                   (0x1U << GPIO_LCKR_LCK7_Pos)      /*!< 0x00000080 */
+#define GPIO_LCKR_LCK7                       GPIO_LCKR_LCK7_Msk                /*!< Port x Lock bit 7 */
+#define GPIO_LCKR_LCK8_Pos                   (8U)                              
+#define GPIO_LCKR_LCK8_Msk                   (0x1U << GPIO_LCKR_LCK8_Pos)      /*!< 0x00000100 */
+#define GPIO_LCKR_LCK8                       GPIO_LCKR_LCK8_Msk                /*!< Port x Lock bit 8 */
+#define GPIO_LCKR_LCK9_Pos                   (9U)                              
+#define GPIO_LCKR_LCK9_Msk                   (0x1U << GPIO_LCKR_LCK9_Pos)      /*!< 0x00000200 */
+#define GPIO_LCKR_LCK9                       GPIO_LCKR_LCK9_Msk                /*!< Port x Lock bit 9 */
+#define GPIO_LCKR_LCK10_Pos                  (10U)                             
+#define GPIO_LCKR_LCK10_Msk                  (0x1U << GPIO_LCKR_LCK10_Pos)     /*!< 0x00000400 */
+#define GPIO_LCKR_LCK10                      GPIO_LCKR_LCK10_Msk               /*!< Port x Lock bit 10 */
+#define GPIO_LCKR_LCK11_Pos                  (11U)                             
+#define GPIO_LCKR_LCK11_Msk                  (0x1U << GPIO_LCKR_LCK11_Pos)     /*!< 0x00000800 */
+#define GPIO_LCKR_LCK11                      GPIO_LCKR_LCK11_Msk               /*!< Port x Lock bit 11 */
+#define GPIO_LCKR_LCK12_Pos                  (12U)                             
+#define GPIO_LCKR_LCK12_Msk                  (0x1U << GPIO_LCKR_LCK12_Pos)     /*!< 0x00001000 */
+#define GPIO_LCKR_LCK12                      GPIO_LCKR_LCK12_Msk               /*!< Port x Lock bit 12 */
+#define GPIO_LCKR_LCK13_Pos                  (13U)                             
+#define GPIO_LCKR_LCK13_Msk                  (0x1U << GPIO_LCKR_LCK13_Pos)     /*!< 0x00002000 */
+#define GPIO_LCKR_LCK13                      GPIO_LCKR_LCK13_Msk               /*!< Port x Lock bit 13 */
+#define GPIO_LCKR_LCK14_Pos                  (14U)                             
+#define GPIO_LCKR_LCK14_Msk                  (0x1U << GPIO_LCKR_LCK14_Pos)     /*!< 0x00004000 */
+#define GPIO_LCKR_LCK14                      GPIO_LCKR_LCK14_Msk               /*!< Port x Lock bit 14 */
+#define GPIO_LCKR_LCK15_Pos                  (15U)                             
+#define GPIO_LCKR_LCK15_Msk                  (0x1U << GPIO_LCKR_LCK15_Pos)     /*!< 0x00008000 */
+#define GPIO_LCKR_LCK15                      GPIO_LCKR_LCK15_Msk               /*!< Port x Lock bit 15 */
+#define GPIO_LCKR_LCKK_Pos                   (16U)                             
+#define GPIO_LCKR_LCKK_Msk                   (0x1U << GPIO_LCKR_LCKK_Pos)      /*!< 0x00010000 */
+#define GPIO_LCKR_LCKK                       GPIO_LCKR_LCKK_Msk                /*!< Lock key */
+
+/*----------------------------------------------------------------------------*/
+
+/******************  Bit definition for AFIO_EVCR register  *******************/
+#define AFIO_EVCR_PIN_Pos                    (0U)                              
+#define AFIO_EVCR_PIN_Msk                    (0xFU << AFIO_EVCR_PIN_Pos)       /*!< 0x0000000F */
+#define AFIO_EVCR_PIN                        AFIO_EVCR_PIN_Msk                 /*!< PIN[3:0] bits (Pin selection) */
+#define AFIO_EVCR_PIN_0                      (0x1U << AFIO_EVCR_PIN_Pos)       /*!< 0x00000001 */
+#define AFIO_EVCR_PIN_1                      (0x2U << AFIO_EVCR_PIN_Pos)       /*!< 0x00000002 */
+#define AFIO_EVCR_PIN_2                      (0x4U << AFIO_EVCR_PIN_Pos)       /*!< 0x00000004 */
+#define AFIO_EVCR_PIN_3                      (0x8U << AFIO_EVCR_PIN_Pos)       /*!< 0x00000008 */
+
+/*!< PIN configuration */
+#define AFIO_EVCR_PIN_PX0                    ((uint32_t)0x00000000)            /*!< Pin 0 selected */
+#define AFIO_EVCR_PIN_PX1_Pos                (0U)                              
+#define AFIO_EVCR_PIN_PX1_Msk                (0x1U << AFIO_EVCR_PIN_PX1_Pos)   /*!< 0x00000001 */
+#define AFIO_EVCR_PIN_PX1                    AFIO_EVCR_PIN_PX1_Msk             /*!< Pin 1 selected */
+#define AFIO_EVCR_PIN_PX2_Pos                (1U)                              
+#define AFIO_EVCR_PIN_PX2_Msk                (0x1U << AFIO_EVCR_PIN_PX2_Pos)   /*!< 0x00000002 */
+#define AFIO_EVCR_PIN_PX2                    AFIO_EVCR_PIN_PX2_Msk             /*!< Pin 2 selected */
+#define AFIO_EVCR_PIN_PX3_Pos                (0U)                              
+#define AFIO_EVCR_PIN_PX3_Msk                (0x3U << AFIO_EVCR_PIN_PX3_Pos)   /*!< 0x00000003 */
+#define AFIO_EVCR_PIN_PX3                    AFIO_EVCR_PIN_PX3_Msk             /*!< Pin 3 selected */
+#define AFIO_EVCR_PIN_PX4_Pos                (2U)                              
+#define AFIO_EVCR_PIN_PX4_Msk                (0x1U << AFIO_EVCR_PIN_PX4_Pos)   /*!< 0x00000004 */
+#define AFIO_EVCR_PIN_PX4                    AFIO_EVCR_PIN_PX4_Msk             /*!< Pin 4 selected */
+#define AFIO_EVCR_PIN_PX5_Pos                (0U)                              
+#define AFIO_EVCR_PIN_PX5_Msk                (0x5U << AFIO_EVCR_PIN_PX5_Pos)   /*!< 0x00000005 */
+#define AFIO_EVCR_PIN_PX5                    AFIO_EVCR_PIN_PX5_Msk             /*!< Pin 5 selected */
+#define AFIO_EVCR_PIN_PX6_Pos                (1U)                              
+#define AFIO_EVCR_PIN_PX6_Msk                (0x3U << AFIO_EVCR_PIN_PX6_Pos)   /*!< 0x00000006 */
+#define AFIO_EVCR_PIN_PX6                    AFIO_EVCR_PIN_PX6_Msk             /*!< Pin 6 selected */
+#define AFIO_EVCR_PIN_PX7_Pos                (0U)                              
+#define AFIO_EVCR_PIN_PX7_Msk                (0x7U << AFIO_EVCR_PIN_PX7_Pos)   /*!< 0x00000007 */
+#define AFIO_EVCR_PIN_PX7                    AFIO_EVCR_PIN_PX7_Msk             /*!< Pin 7 selected */
+#define AFIO_EVCR_PIN_PX8_Pos                (3U)                              
+#define AFIO_EVCR_PIN_PX8_Msk                (0x1U << AFIO_EVCR_PIN_PX8_Pos)   /*!< 0x00000008 */
+#define AFIO_EVCR_PIN_PX8                    AFIO_EVCR_PIN_PX8_Msk             /*!< Pin 8 selected */
+#define AFIO_EVCR_PIN_PX9_Pos                (0U)                              
+#define AFIO_EVCR_PIN_PX9_Msk                (0x9U << AFIO_EVCR_PIN_PX9_Pos)   /*!< 0x00000009 */
+#define AFIO_EVCR_PIN_PX9                    AFIO_EVCR_PIN_PX9_Msk             /*!< Pin 9 selected */
+#define AFIO_EVCR_PIN_PX10_Pos               (1U)                              
+#define AFIO_EVCR_PIN_PX10_Msk               (0x5U << AFIO_EVCR_PIN_PX10_Pos)  /*!< 0x0000000A */
+#define AFIO_EVCR_PIN_PX10                   AFIO_EVCR_PIN_PX10_Msk            /*!< Pin 10 selected */
+#define AFIO_EVCR_PIN_PX11_Pos               (0U)                              
+#define AFIO_EVCR_PIN_PX11_Msk               (0xBU << AFIO_EVCR_PIN_PX11_Pos)  /*!< 0x0000000B */
+#define AFIO_EVCR_PIN_PX11                   AFIO_EVCR_PIN_PX11_Msk            /*!< Pin 11 selected */
+#define AFIO_EVCR_PIN_PX12_Pos               (2U)                              
+#define AFIO_EVCR_PIN_PX12_Msk               (0x3U << AFIO_EVCR_PIN_PX12_Pos)  /*!< 0x0000000C */
+#define AFIO_EVCR_PIN_PX12                   AFIO_EVCR_PIN_PX12_Msk            /*!< Pin 12 selected */
+#define AFIO_EVCR_PIN_PX13_Pos               (0U)                              
+#define AFIO_EVCR_PIN_PX13_Msk               (0xDU << AFIO_EVCR_PIN_PX13_Pos)  /*!< 0x0000000D */
+#define AFIO_EVCR_PIN_PX13                   AFIO_EVCR_PIN_PX13_Msk            /*!< Pin 13 selected */
+#define AFIO_EVCR_PIN_PX14_Pos               (1U)                              
+#define AFIO_EVCR_PIN_PX14_Msk               (0x7U << AFIO_EVCR_PIN_PX14_Pos)  /*!< 0x0000000E */
+#define AFIO_EVCR_PIN_PX14                   AFIO_EVCR_PIN_PX14_Msk            /*!< Pin 14 selected */
+#define AFIO_EVCR_PIN_PX15_Pos               (0U)                              
+#define AFIO_EVCR_PIN_PX15_Msk               (0xFU << AFIO_EVCR_PIN_PX15_Pos)  /*!< 0x0000000F */
+#define AFIO_EVCR_PIN_PX15                   AFIO_EVCR_PIN_PX15_Msk            /*!< Pin 15 selected */
+
+#define AFIO_EVCR_PORT_Pos                   (4U)                              
+#define AFIO_EVCR_PORT_Msk                   (0x7U << AFIO_EVCR_PORT_Pos)      /*!< 0x00000070 */
+#define AFIO_EVCR_PORT                       AFIO_EVCR_PORT_Msk                /*!< PORT[2:0] bits (Port selection) */
+#define AFIO_EVCR_PORT_0                     (0x1U << AFIO_EVCR_PORT_Pos)      /*!< 0x00000010 */
+#define AFIO_EVCR_PORT_1                     (0x2U << AFIO_EVCR_PORT_Pos)      /*!< 0x00000020 */
+#define AFIO_EVCR_PORT_2                     (0x4U << AFIO_EVCR_PORT_Pos)      /*!< 0x00000040 */
+
+/*!< PORT configuration */
+#define AFIO_EVCR_PORT_PA                    ((uint32_t)0x00000000)            /*!< Port A selected */
+#define AFIO_EVCR_PORT_PB_Pos                (4U)                              
+#define AFIO_EVCR_PORT_PB_Msk                (0x1U << AFIO_EVCR_PORT_PB_Pos)   /*!< 0x00000010 */
+#define AFIO_EVCR_PORT_PB                    AFIO_EVCR_PORT_PB_Msk             /*!< Port B selected */
+#define AFIO_EVCR_PORT_PC_Pos                (5U)                              
+#define AFIO_EVCR_PORT_PC_Msk                (0x1U << AFIO_EVCR_PORT_PC_Pos)   /*!< 0x00000020 */
+#define AFIO_EVCR_PORT_PC                    AFIO_EVCR_PORT_PC_Msk             /*!< Port C selected */
+#define AFIO_EVCR_PORT_PD_Pos                (4U)                              
+#define AFIO_EVCR_PORT_PD_Msk                (0x3U << AFIO_EVCR_PORT_PD_Pos)   /*!< 0x00000030 */
+#define AFIO_EVCR_PORT_PD                    AFIO_EVCR_PORT_PD_Msk             /*!< Port D selected */
+#define AFIO_EVCR_PORT_PE_Pos                (6U)                              
+#define AFIO_EVCR_PORT_PE_Msk                (0x1U << AFIO_EVCR_PORT_PE_Pos)   /*!< 0x00000040 */
+#define AFIO_EVCR_PORT_PE                    AFIO_EVCR_PORT_PE_Msk             /*!< Port E selected */
+
+#define AFIO_EVCR_EVOE_Pos                   (7U)                              
+#define AFIO_EVCR_EVOE_Msk                   (0x1U << AFIO_EVCR_EVOE_Pos)      /*!< 0x00000080 */
+#define AFIO_EVCR_EVOE                       AFIO_EVCR_EVOE_Msk                /*!< Event Output Enable */
+
+/******************  Bit definition for AFIO_MAPR register  *******************/
+#define AFIO_MAPR_SPI1_REMAP_Pos             (0U)                              
+#define AFIO_MAPR_SPI1_REMAP_Msk             (0x1U << AFIO_MAPR_SPI1_REMAP_Pos) /*!< 0x00000001 */
+#define AFIO_MAPR_SPI1_REMAP                 AFIO_MAPR_SPI1_REMAP_Msk          /*!< SPI1 remapping */
+#define AFIO_MAPR_I2C1_REMAP_Pos             (1U)                              
+#define AFIO_MAPR_I2C1_REMAP_Msk             (0x1U << AFIO_MAPR_I2C1_REMAP_Pos) /*!< 0x00000002 */
+#define AFIO_MAPR_I2C1_REMAP                 AFIO_MAPR_I2C1_REMAP_Msk          /*!< I2C1 remapping */
+#define AFIO_MAPR_USART1_REMAP_Pos           (2U)                              
+#define AFIO_MAPR_USART1_REMAP_Msk           (0x1U << AFIO_MAPR_USART1_REMAP_Pos) /*!< 0x00000004 */
+#define AFIO_MAPR_USART1_REMAP               AFIO_MAPR_USART1_REMAP_Msk        /*!< USART1 remapping */
+#define AFIO_MAPR_USART2_REMAP_Pos           (3U)                              
+#define AFIO_MAPR_USART2_REMAP_Msk           (0x1U << AFIO_MAPR_USART2_REMAP_Pos) /*!< 0x00000008 */
+#define AFIO_MAPR_USART2_REMAP               AFIO_MAPR_USART2_REMAP_Msk        /*!< USART2 remapping */
+
+#define AFIO_MAPR_USART3_REMAP_Pos           (4U)                              
+#define AFIO_MAPR_USART3_REMAP_Msk           (0x3U << AFIO_MAPR_USART3_REMAP_Pos) /*!< 0x00000030 */
+#define AFIO_MAPR_USART3_REMAP               AFIO_MAPR_USART3_REMAP_Msk        /*!< USART3_REMAP[1:0] bits (USART3 remapping) */
+#define AFIO_MAPR_USART3_REMAP_0             (0x1U << AFIO_MAPR_USART3_REMAP_Pos) /*!< 0x00000010 */
+#define AFIO_MAPR_USART3_REMAP_1             (0x2U << AFIO_MAPR_USART3_REMAP_Pos) /*!< 0x00000020 */
+
+/* USART3_REMAP configuration */
+#define AFIO_MAPR_USART3_REMAP_NOREMAP       ((uint32_t)0x00000000)            /*!< No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */
+#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Pos (4U)                           
+#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Msk (0x1U << AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Pos) /*!< 0x00000010 */
+#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP  AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Msk /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */
+#define AFIO_MAPR_USART3_REMAP_FULLREMAP_Pos (4U)                              
+#define AFIO_MAPR_USART3_REMAP_FULLREMAP_Msk (0x3U << AFIO_MAPR_USART3_REMAP_FULLREMAP_Pos) /*!< 0x00000030 */
+#define AFIO_MAPR_USART3_REMAP_FULLREMAP     AFIO_MAPR_USART3_REMAP_FULLREMAP_Msk /*!< Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */
+
+#define AFIO_MAPR_TIM1_REMAP_Pos             (6U)                              
+#define AFIO_MAPR_TIM1_REMAP_Msk             (0x3U << AFIO_MAPR_TIM1_REMAP_Pos) /*!< 0x000000C0 */
+#define AFIO_MAPR_TIM1_REMAP                 AFIO_MAPR_TIM1_REMAP_Msk          /*!< TIM1_REMAP[1:0] bits (TIM1 remapping) */
+#define AFIO_MAPR_TIM1_REMAP_0               (0x1U << AFIO_MAPR_TIM1_REMAP_Pos) /*!< 0x00000040 */
+#define AFIO_MAPR_TIM1_REMAP_1               (0x2U << AFIO_MAPR_TIM1_REMAP_Pos) /*!< 0x00000080 */
+
+/*!< TIM1_REMAP configuration */
+#define AFIO_MAPR_TIM1_REMAP_NOREMAP         ((uint32_t)0x00000000)            /*!< No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */
+#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP_Pos (6U)                             
+#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP_Msk (0x1U << AFIO_MAPR_TIM1_REMAP_PARTIALREMAP_Pos) /*!< 0x00000040 */
+#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP    AFIO_MAPR_TIM1_REMAP_PARTIALREMAP_Msk /*!< Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */
+#define AFIO_MAPR_TIM1_REMAP_FULLREMAP_Pos   (6U)                              
+#define AFIO_MAPR_TIM1_REMAP_FULLREMAP_Msk   (0x3U << AFIO_MAPR_TIM1_REMAP_FULLREMAP_Pos) /*!< 0x000000C0 */
+#define AFIO_MAPR_TIM1_REMAP_FULLREMAP       AFIO_MAPR_TIM1_REMAP_FULLREMAP_Msk /*!< Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */
+
+#define AFIO_MAPR_TIM2_REMAP_Pos             (8U)                              
+#define AFIO_MAPR_TIM2_REMAP_Msk             (0x3U << AFIO_MAPR_TIM2_REMAP_Pos) /*!< 0x00000300 */
+#define AFIO_MAPR_TIM2_REMAP                 AFIO_MAPR_TIM2_REMAP_Msk          /*!< TIM2_REMAP[1:0] bits (TIM2 remapping) */
+#define AFIO_MAPR_TIM2_REMAP_0               (0x1U << AFIO_MAPR_TIM2_REMAP_Pos) /*!< 0x00000100 */
+#define AFIO_MAPR_TIM2_REMAP_1               (0x2U << AFIO_MAPR_TIM2_REMAP_Pos) /*!< 0x00000200 */
+
+/*!< TIM2_REMAP configuration */
+#define AFIO_MAPR_TIM2_REMAP_NOREMAP         ((uint32_t)0x00000000)            /*!< No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */
+#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Pos (8U)                            
+#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Msk (0x1U << AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Pos) /*!< 0x00000100 */
+#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1   AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Msk /*!< Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */
+#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Pos (9U)                            
+#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Msk (0x1U << AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Pos) /*!< 0x00000200 */
+#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2   AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Msk /*!< Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */
+#define AFIO_MAPR_TIM2_REMAP_FULLREMAP_Pos   (8U)                              
+#define AFIO_MAPR_TIM2_REMAP_FULLREMAP_Msk   (0x3U << AFIO_MAPR_TIM2_REMAP_FULLREMAP_Pos) /*!< 0x00000300 */
+#define AFIO_MAPR_TIM2_REMAP_FULLREMAP       AFIO_MAPR_TIM2_REMAP_FULLREMAP_Msk /*!< Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */
+
+#define AFIO_MAPR_TIM3_REMAP_Pos             (10U)                             
+#define AFIO_MAPR_TIM3_REMAP_Msk             (0x3U << AFIO_MAPR_TIM3_REMAP_Pos) /*!< 0x00000C00 */
+#define AFIO_MAPR_TIM3_REMAP                 AFIO_MAPR_TIM3_REMAP_Msk          /*!< TIM3_REMAP[1:0] bits (TIM3 remapping) */
+#define AFIO_MAPR_TIM3_REMAP_0               (0x1U << AFIO_MAPR_TIM3_REMAP_Pos) /*!< 0x00000400 */
+#define AFIO_MAPR_TIM3_REMAP_1               (0x2U << AFIO_MAPR_TIM3_REMAP_Pos) /*!< 0x00000800 */
+
+/*!< TIM3_REMAP configuration */
+#define AFIO_MAPR_TIM3_REMAP_NOREMAP         ((uint32_t)0x00000000)            /*!< No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */
+#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Pos (11U)                            
+#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Msk (0x1U << AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Pos) /*!< 0x00000800 */
+#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP    AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Msk /*!< Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */
+#define AFIO_MAPR_TIM3_REMAP_FULLREMAP_Pos   (10U)                             
+#define AFIO_MAPR_TIM3_REMAP_FULLREMAP_Msk   (0x3U << AFIO_MAPR_TIM3_REMAP_FULLREMAP_Pos) /*!< 0x00000C00 */
+#define AFIO_MAPR_TIM3_REMAP_FULLREMAP       AFIO_MAPR_TIM3_REMAP_FULLREMAP_Msk /*!< Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */
+
+#define AFIO_MAPR_TIM4_REMAP_Pos             (12U)                             
+#define AFIO_MAPR_TIM4_REMAP_Msk             (0x1U << AFIO_MAPR_TIM4_REMAP_Pos) /*!< 0x00001000 */
+#define AFIO_MAPR_TIM4_REMAP                 AFIO_MAPR_TIM4_REMAP_Msk          /*!< TIM4_REMAP bit (TIM4 remapping) */
+
+#define AFIO_MAPR_CAN_REMAP_Pos              (13U)                             
+#define AFIO_MAPR_CAN_REMAP_Msk              (0x3U << AFIO_MAPR_CAN_REMAP_Pos) /*!< 0x00006000 */
+#define AFIO_MAPR_CAN_REMAP                  AFIO_MAPR_CAN_REMAP_Msk           /*!< CAN_REMAP[1:0] bits (CAN Alternate function remapping) */
+#define AFIO_MAPR_CAN_REMAP_0                (0x1U << AFIO_MAPR_CAN_REMAP_Pos) /*!< 0x00002000 */
+#define AFIO_MAPR_CAN_REMAP_1                (0x2U << AFIO_MAPR_CAN_REMAP_Pos) /*!< 0x00004000 */
+
+/*!< CAN_REMAP configuration */
+#define AFIO_MAPR_CAN_REMAP_REMAP1           ((uint32_t)0x00000000)            /*!< CANRX mapped to PA11, CANTX mapped to PA12 */
+#define AFIO_MAPR_CAN_REMAP_REMAP2_Pos       (14U)                             
+#define AFIO_MAPR_CAN_REMAP_REMAP2_Msk       (0x1U << AFIO_MAPR_CAN_REMAP_REMAP2_Pos) /*!< 0x00004000 */
+#define AFIO_MAPR_CAN_REMAP_REMAP2           AFIO_MAPR_CAN_REMAP_REMAP2_Msk    /*!< CANRX mapped to PB8, CANTX mapped to PB9 */
+#define AFIO_MAPR_CAN_REMAP_REMAP3_Pos       (13U)                             
+#define AFIO_MAPR_CAN_REMAP_REMAP3_Msk       (0x3U << AFIO_MAPR_CAN_REMAP_REMAP3_Pos) /*!< 0x00006000 */
+#define AFIO_MAPR_CAN_REMAP_REMAP3           AFIO_MAPR_CAN_REMAP_REMAP3_Msk    /*!< CANRX mapped to PD0, CANTX mapped to PD1 */
+
+#define AFIO_MAPR_PD01_REMAP_Pos             (15U)                             
+#define AFIO_MAPR_PD01_REMAP_Msk             (0x1U << AFIO_MAPR_PD01_REMAP_Pos) /*!< 0x00008000 */
+#define AFIO_MAPR_PD01_REMAP                 AFIO_MAPR_PD01_REMAP_Msk          /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */
+
+/*!< SWJ_CFG configuration */
+#define AFIO_MAPR_SWJ_CFG_Pos                (24U)                             
+#define AFIO_MAPR_SWJ_CFG_Msk                (0x7U << AFIO_MAPR_SWJ_CFG_Pos)   /*!< 0x07000000 */
+#define AFIO_MAPR_SWJ_CFG                    AFIO_MAPR_SWJ_CFG_Msk             /*!< SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */
+#define AFIO_MAPR_SWJ_CFG_0                  (0x1U << AFIO_MAPR_SWJ_CFG_Pos)   /*!< 0x01000000 */
+#define AFIO_MAPR_SWJ_CFG_1                  (0x2U << AFIO_MAPR_SWJ_CFG_Pos)   /*!< 0x02000000 */
+#define AFIO_MAPR_SWJ_CFG_2                  (0x4U << AFIO_MAPR_SWJ_CFG_Pos)   /*!< 0x04000000 */
+
+#define AFIO_MAPR_SWJ_CFG_RESET              ((uint32_t)0x00000000)            /*!< Full SWJ (JTAG-DP + SW-DP) : Reset State */
+#define AFIO_MAPR_SWJ_CFG_NOJNTRST_Pos       (24U)                             
+#define AFIO_MAPR_SWJ_CFG_NOJNTRST_Msk       (0x1U << AFIO_MAPR_SWJ_CFG_NOJNTRST_Pos) /*!< 0x01000000 */
+#define AFIO_MAPR_SWJ_CFG_NOJNTRST           AFIO_MAPR_SWJ_CFG_NOJNTRST_Msk    /*!< Full SWJ (JTAG-DP + SW-DP) but without JNTRST */
+#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE_Pos    (25U)                             
+#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE_Msk    (0x1U << AFIO_MAPR_SWJ_CFG_JTAGDISABLE_Pos) /*!< 0x02000000 */
+#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE        AFIO_MAPR_SWJ_CFG_JTAGDISABLE_Msk /*!< JTAG-DP Disabled and SW-DP Enabled */
+#define AFIO_MAPR_SWJ_CFG_DISABLE_Pos        (26U)                             
+#define AFIO_MAPR_SWJ_CFG_DISABLE_Msk        (0x1U << AFIO_MAPR_SWJ_CFG_DISABLE_Pos) /*!< 0x04000000 */
+#define AFIO_MAPR_SWJ_CFG_DISABLE            AFIO_MAPR_SWJ_CFG_DISABLE_Msk     /*!< JTAG-DP Disabled and SW-DP Disabled */
+
+
+/*****************  Bit definition for AFIO_EXTICR1 register  *****************/
+#define AFIO_EXTICR1_EXTI0_Pos               (0U)                              
+#define AFIO_EXTICR1_EXTI0_Msk               (0xFU << AFIO_EXTICR1_EXTI0_Pos)  /*!< 0x0000000F */
+#define AFIO_EXTICR1_EXTI0                   AFIO_EXTICR1_EXTI0_Msk            /*!< EXTI 0 configuration */
+#define AFIO_EXTICR1_EXTI1_Pos               (4U)                              
+#define AFIO_EXTICR1_EXTI1_Msk               (0xFU << AFIO_EXTICR1_EXTI1_Pos)  /*!< 0x000000F0 */
+#define AFIO_EXTICR1_EXTI1                   AFIO_EXTICR1_EXTI1_Msk            /*!< EXTI 1 configuration */
+#define AFIO_EXTICR1_EXTI2_Pos               (8U)                              
+#define AFIO_EXTICR1_EXTI2_Msk               (0xFU << AFIO_EXTICR1_EXTI2_Pos)  /*!< 0x00000F00 */
+#define AFIO_EXTICR1_EXTI2                   AFIO_EXTICR1_EXTI2_Msk            /*!< EXTI 2 configuration */
+#define AFIO_EXTICR1_EXTI3_Pos               (12U)                             
+#define AFIO_EXTICR1_EXTI3_Msk               (0xFU << AFIO_EXTICR1_EXTI3_Pos)  /*!< 0x0000F000 */
+#define AFIO_EXTICR1_EXTI3                   AFIO_EXTICR1_EXTI3_Msk            /*!< EXTI 3 configuration */
+
+/*!< EXTI0 configuration */
+#define AFIO_EXTICR1_EXTI0_PA                ((uint32_t)0x00000000)            /*!< PA[0] pin */
+#define AFIO_EXTICR1_EXTI0_PB_Pos            (0U)                              
+#define AFIO_EXTICR1_EXTI0_PB_Msk            (0x1U << AFIO_EXTICR1_EXTI0_PB_Pos) /*!< 0x00000001 */
+#define AFIO_EXTICR1_EXTI0_PB                AFIO_EXTICR1_EXTI0_PB_Msk         /*!< PB[0] pin */
+#define AFIO_EXTICR1_EXTI0_PC_Pos            (1U)                              
+#define AFIO_EXTICR1_EXTI0_PC_Msk            (0x1U << AFIO_EXTICR1_EXTI0_PC_Pos) /*!< 0x00000002 */
+#define AFIO_EXTICR1_EXTI0_PC                AFIO_EXTICR1_EXTI0_PC_Msk         /*!< PC[0] pin */
+#define AFIO_EXTICR1_EXTI0_PD_Pos            (0U)                              
+#define AFIO_EXTICR1_EXTI0_PD_Msk            (0x3U << AFIO_EXTICR1_EXTI0_PD_Pos) /*!< 0x00000003 */
+#define AFIO_EXTICR1_EXTI0_PD                AFIO_EXTICR1_EXTI0_PD_Msk         /*!< PD[0] pin */
+#define AFIO_EXTICR1_EXTI0_PE_Pos            (2U)                              
+#define AFIO_EXTICR1_EXTI0_PE_Msk            (0x1U << AFIO_EXTICR1_EXTI0_PE_Pos) /*!< 0x00000004 */
+#define AFIO_EXTICR1_EXTI0_PE                AFIO_EXTICR1_EXTI0_PE_Msk         /*!< PE[0] pin */
+#define AFIO_EXTICR1_EXTI0_PF_Pos            (0U)                              
+#define AFIO_EXTICR1_EXTI0_PF_Msk            (0x5U << AFIO_EXTICR1_EXTI0_PF_Pos) /*!< 0x00000005 */
+#define AFIO_EXTICR1_EXTI0_PF                AFIO_EXTICR1_EXTI0_PF_Msk         /*!< PF[0] pin */
+#define AFIO_EXTICR1_EXTI0_PG_Pos            (1U)                              
+#define AFIO_EXTICR1_EXTI0_PG_Msk            (0x3U << AFIO_EXTICR1_EXTI0_PG_Pos) /*!< 0x00000006 */
+#define AFIO_EXTICR1_EXTI0_PG                AFIO_EXTICR1_EXTI0_PG_Msk         /*!< PG[0] pin */
+
+/*!< EXTI1 configuration */
+#define AFIO_EXTICR1_EXTI1_PA                ((uint32_t)0x00000000)            /*!< PA[1] pin */
+#define AFIO_EXTICR1_EXTI1_PB_Pos            (4U)                              
+#define AFIO_EXTICR1_EXTI1_PB_Msk            (0x1U << AFIO_EXTICR1_EXTI1_PB_Pos) /*!< 0x00000010 */
+#define AFIO_EXTICR1_EXTI1_PB                AFIO_EXTICR1_EXTI1_PB_Msk         /*!< PB[1] pin */
+#define AFIO_EXTICR1_EXTI1_PC_Pos            (5U)                              
+#define AFIO_EXTICR1_EXTI1_PC_Msk            (0x1U << AFIO_EXTICR1_EXTI1_PC_Pos) /*!< 0x00000020 */
+#define AFIO_EXTICR1_EXTI1_PC                AFIO_EXTICR1_EXTI1_PC_Msk         /*!< PC[1] pin */
+#define AFIO_EXTICR1_EXTI1_PD_Pos            (4U)                              
+#define AFIO_EXTICR1_EXTI1_PD_Msk            (0x3U << AFIO_EXTICR1_EXTI1_PD_Pos) /*!< 0x00000030 */
+#define AFIO_EXTICR1_EXTI1_PD                AFIO_EXTICR1_EXTI1_PD_Msk         /*!< PD[1] pin */
+#define AFIO_EXTICR1_EXTI1_PE_Pos            (6U)                              
+#define AFIO_EXTICR1_EXTI1_PE_Msk            (0x1U << AFIO_EXTICR1_EXTI1_PE_Pos) /*!< 0x00000040 */
+#define AFIO_EXTICR1_EXTI1_PE                AFIO_EXTICR1_EXTI1_PE_Msk         /*!< PE[1] pin */
+#define AFIO_EXTICR1_EXTI1_PF_Pos            (4U)                              
+#define AFIO_EXTICR1_EXTI1_PF_Msk            (0x5U << AFIO_EXTICR1_EXTI1_PF_Pos) /*!< 0x00000050 */
+#define AFIO_EXTICR1_EXTI1_PF                AFIO_EXTICR1_EXTI1_PF_Msk         /*!< PF[1] pin */
+#define AFIO_EXTICR1_EXTI1_PG_Pos            (5U)                              
+#define AFIO_EXTICR1_EXTI1_PG_Msk            (0x3U << AFIO_EXTICR1_EXTI1_PG_Pos) /*!< 0x00000060 */
+#define AFIO_EXTICR1_EXTI1_PG                AFIO_EXTICR1_EXTI1_PG_Msk         /*!< PG[1] pin */
+
+/*!< EXTI2 configuration */  
+#define AFIO_EXTICR1_EXTI2_PA                ((uint32_t)0x00000000)            /*!< PA[2] pin */
+#define AFIO_EXTICR1_EXTI2_PB_Pos            (8U)                              
+#define AFIO_EXTICR1_EXTI2_PB_Msk            (0x1U << AFIO_EXTICR1_EXTI2_PB_Pos) /*!< 0x00000100 */
+#define AFIO_EXTICR1_EXTI2_PB                AFIO_EXTICR1_EXTI2_PB_Msk         /*!< PB[2] pin */
+#define AFIO_EXTICR1_EXTI2_PC_Pos            (9U)                              
+#define AFIO_EXTICR1_EXTI2_PC_Msk            (0x1U << AFIO_EXTICR1_EXTI2_PC_Pos) /*!< 0x00000200 */
+#define AFIO_EXTICR1_EXTI2_PC                AFIO_EXTICR1_EXTI2_PC_Msk         /*!< PC[2] pin */
+#define AFIO_EXTICR1_EXTI2_PD_Pos            (8U)                              
+#define AFIO_EXTICR1_EXTI2_PD_Msk            (0x3U << AFIO_EXTICR1_EXTI2_PD_Pos) /*!< 0x00000300 */
+#define AFIO_EXTICR1_EXTI2_PD                AFIO_EXTICR1_EXTI2_PD_Msk         /*!< PD[2] pin */
+#define AFIO_EXTICR1_EXTI2_PE_Pos            (10U)                             
+#define AFIO_EXTICR1_EXTI2_PE_Msk            (0x1U << AFIO_EXTICR1_EXTI2_PE_Pos) /*!< 0x00000400 */
+#define AFIO_EXTICR1_EXTI2_PE                AFIO_EXTICR1_EXTI2_PE_Msk         /*!< PE[2] pin */
+#define AFIO_EXTICR1_EXTI2_PF_Pos            (8U)                              
+#define AFIO_EXTICR1_EXTI2_PF_Msk            (0x5U << AFIO_EXTICR1_EXTI2_PF_Pos) /*!< 0x00000500 */
+#define AFIO_EXTICR1_EXTI2_PF                AFIO_EXTICR1_EXTI2_PF_Msk         /*!< PF[2] pin */
+#define AFIO_EXTICR1_EXTI2_PG_Pos            (9U)                              
+#define AFIO_EXTICR1_EXTI2_PG_Msk            (0x3U << AFIO_EXTICR1_EXTI2_PG_Pos) /*!< 0x00000600 */
+#define AFIO_EXTICR1_EXTI2_PG                AFIO_EXTICR1_EXTI2_PG_Msk         /*!< PG[2] pin */
+
+/*!< EXTI3 configuration */
+#define AFIO_EXTICR1_EXTI3_PA                ((uint32_t)0x00000000)            /*!< PA[3] pin */
+#define AFIO_EXTICR1_EXTI3_PB_Pos            (12U)                             
+#define AFIO_EXTICR1_EXTI3_PB_Msk            (0x1U << AFIO_EXTICR1_EXTI3_PB_Pos) /*!< 0x00001000 */
+#define AFIO_EXTICR1_EXTI3_PB                AFIO_EXTICR1_EXTI3_PB_Msk         /*!< PB[3] pin */
+#define AFIO_EXTICR1_EXTI3_PC_Pos            (13U)                             
+#define AFIO_EXTICR1_EXTI3_PC_Msk            (0x1U << AFIO_EXTICR1_EXTI3_PC_Pos) /*!< 0x00002000 */
+#define AFIO_EXTICR1_EXTI3_PC                AFIO_EXTICR1_EXTI3_PC_Msk         /*!< PC[3] pin */
+#define AFIO_EXTICR1_EXTI3_PD_Pos            (12U)                             
+#define AFIO_EXTICR1_EXTI3_PD_Msk            (0x3U << AFIO_EXTICR1_EXTI3_PD_Pos) /*!< 0x00003000 */
+#define AFIO_EXTICR1_EXTI3_PD                AFIO_EXTICR1_EXTI3_PD_Msk         /*!< PD[3] pin */
+#define AFIO_EXTICR1_EXTI3_PE_Pos            (14U)                             
+#define AFIO_EXTICR1_EXTI3_PE_Msk            (0x1U << AFIO_EXTICR1_EXTI3_PE_Pos) /*!< 0x00004000 */
+#define AFIO_EXTICR1_EXTI3_PE                AFIO_EXTICR1_EXTI3_PE_Msk         /*!< PE[3] pin */
+#define AFIO_EXTICR1_EXTI3_PF_Pos            (12U)                             
+#define AFIO_EXTICR1_EXTI3_PF_Msk            (0x5U << AFIO_EXTICR1_EXTI3_PF_Pos) /*!< 0x00005000 */
+#define AFIO_EXTICR1_EXTI3_PF                AFIO_EXTICR1_EXTI3_PF_Msk         /*!< PF[3] pin */
+#define AFIO_EXTICR1_EXTI3_PG_Pos            (13U)                             
+#define AFIO_EXTICR1_EXTI3_PG_Msk            (0x3U << AFIO_EXTICR1_EXTI3_PG_Pos) /*!< 0x00006000 */
+#define AFIO_EXTICR1_EXTI3_PG                AFIO_EXTICR1_EXTI3_PG_Msk         /*!< PG[3] pin */
+
+/*****************  Bit definition for AFIO_EXTICR2 register  *****************/
+#define AFIO_EXTICR2_EXTI4_Pos               (0U)                              
+#define AFIO_EXTICR2_EXTI4_Msk               (0xFU << AFIO_EXTICR2_EXTI4_Pos)  /*!< 0x0000000F */
+#define AFIO_EXTICR2_EXTI4                   AFIO_EXTICR2_EXTI4_Msk            /*!< EXTI 4 configuration */
+#define AFIO_EXTICR2_EXTI5_Pos               (4U)                              
+#define AFIO_EXTICR2_EXTI5_Msk               (0xFU << AFIO_EXTICR2_EXTI5_Pos)  /*!< 0x000000F0 */
+#define AFIO_EXTICR2_EXTI5                   AFIO_EXTICR2_EXTI5_Msk            /*!< EXTI 5 configuration */
+#define AFIO_EXTICR2_EXTI6_Pos               (8U)                              
+#define AFIO_EXTICR2_EXTI6_Msk               (0xFU << AFIO_EXTICR2_EXTI6_Pos)  /*!< 0x00000F00 */
+#define AFIO_EXTICR2_EXTI6                   AFIO_EXTICR2_EXTI6_Msk            /*!< EXTI 6 configuration */
+#define AFIO_EXTICR2_EXTI7_Pos               (12U)                             
+#define AFIO_EXTICR2_EXTI7_Msk               (0xFU << AFIO_EXTICR2_EXTI7_Pos)  /*!< 0x0000F000 */
+#define AFIO_EXTICR2_EXTI7                   AFIO_EXTICR2_EXTI7_Msk            /*!< EXTI 7 configuration */
+
+/*!< EXTI4 configuration */
+#define AFIO_EXTICR2_EXTI4_PA                ((uint32_t)0x00000000)            /*!< PA[4] pin */
+#define AFIO_EXTICR2_EXTI4_PB_Pos            (0U)                              
+#define AFIO_EXTICR2_EXTI4_PB_Msk            (0x1U << AFIO_EXTICR2_EXTI4_PB_Pos) /*!< 0x00000001 */
+#define AFIO_EXTICR2_EXTI4_PB                AFIO_EXTICR2_EXTI4_PB_Msk         /*!< PB[4] pin */
+#define AFIO_EXTICR2_EXTI4_PC_Pos            (1U)                              
+#define AFIO_EXTICR2_EXTI4_PC_Msk            (0x1U << AFIO_EXTICR2_EXTI4_PC_Pos) /*!< 0x00000002 */
+#define AFIO_EXTICR2_EXTI4_PC                AFIO_EXTICR2_EXTI4_PC_Msk         /*!< PC[4] pin */
+#define AFIO_EXTICR2_EXTI4_PD_Pos            (0U)                              
+#define AFIO_EXTICR2_EXTI4_PD_Msk            (0x3U << AFIO_EXTICR2_EXTI4_PD_Pos) /*!< 0x00000003 */
+#define AFIO_EXTICR2_EXTI4_PD                AFIO_EXTICR2_EXTI4_PD_Msk         /*!< PD[4] pin */
+#define AFIO_EXTICR2_EXTI4_PE_Pos            (2U)                              
+#define AFIO_EXTICR2_EXTI4_PE_Msk            (0x1U << AFIO_EXTICR2_EXTI4_PE_Pos) /*!< 0x00000004 */
+#define AFIO_EXTICR2_EXTI4_PE                AFIO_EXTICR2_EXTI4_PE_Msk         /*!< PE[4] pin */
+#define AFIO_EXTICR2_EXTI4_PF_Pos            (0U)                              
+#define AFIO_EXTICR2_EXTI4_PF_Msk            (0x5U << AFIO_EXTICR2_EXTI4_PF_Pos) /*!< 0x00000005 */
+#define AFIO_EXTICR2_EXTI4_PF                AFIO_EXTICR2_EXTI4_PF_Msk         /*!< PF[4] pin */
+#define AFIO_EXTICR2_EXTI4_PG_Pos            (1U)                              
+#define AFIO_EXTICR2_EXTI4_PG_Msk            (0x3U << AFIO_EXTICR2_EXTI4_PG_Pos) /*!< 0x00000006 */
+#define AFIO_EXTICR2_EXTI4_PG                AFIO_EXTICR2_EXTI4_PG_Msk         /*!< PG[4] pin */
+
+/* EXTI5 configuration */
+#define AFIO_EXTICR2_EXTI5_PA                ((uint32_t)0x00000000)            /*!< PA[5] pin */
+#define AFIO_EXTICR2_EXTI5_PB_Pos            (4U)                              
+#define AFIO_EXTICR2_EXTI5_PB_Msk            (0x1U << AFIO_EXTICR2_EXTI5_PB_Pos) /*!< 0x00000010 */
+#define AFIO_EXTICR2_EXTI5_PB                AFIO_EXTICR2_EXTI5_PB_Msk         /*!< PB[5] pin */
+#define AFIO_EXTICR2_EXTI5_PC_Pos            (5U)                              
+#define AFIO_EXTICR2_EXTI5_PC_Msk            (0x1U << AFIO_EXTICR2_EXTI5_PC_Pos) /*!< 0x00000020 */
+#define AFIO_EXTICR2_EXTI5_PC                AFIO_EXTICR2_EXTI5_PC_Msk         /*!< PC[5] pin */
+#define AFIO_EXTICR2_EXTI5_PD_Pos            (4U)                              
+#define AFIO_EXTICR2_EXTI5_PD_Msk            (0x3U << AFIO_EXTICR2_EXTI5_PD_Pos) /*!< 0x00000030 */
+#define AFIO_EXTICR2_EXTI5_PD                AFIO_EXTICR2_EXTI5_PD_Msk         /*!< PD[5] pin */
+#define AFIO_EXTICR2_EXTI5_PE_Pos            (6U)                              
+#define AFIO_EXTICR2_EXTI5_PE_Msk            (0x1U << AFIO_EXTICR2_EXTI5_PE_Pos) /*!< 0x00000040 */
+#define AFIO_EXTICR2_EXTI5_PE                AFIO_EXTICR2_EXTI5_PE_Msk         /*!< PE[5] pin */
+#define AFIO_EXTICR2_EXTI5_PF_Pos            (4U)                              
+#define AFIO_EXTICR2_EXTI5_PF_Msk            (0x5U << AFIO_EXTICR2_EXTI5_PF_Pos) /*!< 0x00000050 */
+#define AFIO_EXTICR2_EXTI5_PF                AFIO_EXTICR2_EXTI5_PF_Msk         /*!< PF[5] pin */
+#define AFIO_EXTICR2_EXTI5_PG_Pos            (5U)                              
+#define AFIO_EXTICR2_EXTI5_PG_Msk            (0x3U << AFIO_EXTICR2_EXTI5_PG_Pos) /*!< 0x00000060 */
+#define AFIO_EXTICR2_EXTI5_PG                AFIO_EXTICR2_EXTI5_PG_Msk         /*!< PG[5] pin */
+
+/*!< EXTI6 configuration */  
+#define AFIO_EXTICR2_EXTI6_PA                ((uint32_t)0x00000000)            /*!< PA[6] pin */
+#define AFIO_EXTICR2_EXTI6_PB_Pos            (8U)                              
+#define AFIO_EXTICR2_EXTI6_PB_Msk            (0x1U << AFIO_EXTICR2_EXTI6_PB_Pos) /*!< 0x00000100 */
+#define AFIO_EXTICR2_EXTI6_PB                AFIO_EXTICR2_EXTI6_PB_Msk         /*!< PB[6] pin */
+#define AFIO_EXTICR2_EXTI6_PC_Pos            (9U)                              
+#define AFIO_EXTICR2_EXTI6_PC_Msk            (0x1U << AFIO_EXTICR2_EXTI6_PC_Pos) /*!< 0x00000200 */
+#define AFIO_EXTICR2_EXTI6_PC                AFIO_EXTICR2_EXTI6_PC_Msk         /*!< PC[6] pin */
+#define AFIO_EXTICR2_EXTI6_PD_Pos            (8U)                              
+#define AFIO_EXTICR2_EXTI6_PD_Msk            (0x3U << AFIO_EXTICR2_EXTI6_PD_Pos) /*!< 0x00000300 */
+#define AFIO_EXTICR2_EXTI6_PD                AFIO_EXTICR2_EXTI6_PD_Msk         /*!< PD[6] pin */
+#define AFIO_EXTICR2_EXTI6_PE_Pos            (10U)                             
+#define AFIO_EXTICR2_EXTI6_PE_Msk            (0x1U << AFIO_EXTICR2_EXTI6_PE_Pos) /*!< 0x00000400 */
+#define AFIO_EXTICR2_EXTI6_PE                AFIO_EXTICR2_EXTI6_PE_Msk         /*!< PE[6] pin */
+#define AFIO_EXTICR2_EXTI6_PF_Pos            (8U)                              
+#define AFIO_EXTICR2_EXTI6_PF_Msk            (0x5U << AFIO_EXTICR2_EXTI6_PF_Pos) /*!< 0x00000500 */
+#define AFIO_EXTICR2_EXTI6_PF                AFIO_EXTICR2_EXTI6_PF_Msk         /*!< PF[6] pin */
+#define AFIO_EXTICR2_EXTI6_PG_Pos            (9U)                              
+#define AFIO_EXTICR2_EXTI6_PG_Msk            (0x3U << AFIO_EXTICR2_EXTI6_PG_Pos) /*!< 0x00000600 */
+#define AFIO_EXTICR2_EXTI6_PG                AFIO_EXTICR2_EXTI6_PG_Msk         /*!< PG[6] pin */
+
+/*!< EXTI7 configuration */
+#define AFIO_EXTICR2_EXTI7_PA                ((uint32_t)0x00000000)            /*!< PA[7] pin */
+#define AFIO_EXTICR2_EXTI7_PB_Pos            (12U)                             
+#define AFIO_EXTICR2_EXTI7_PB_Msk            (0x1U << AFIO_EXTICR2_EXTI7_PB_Pos) /*!< 0x00001000 */
+#define AFIO_EXTICR2_EXTI7_PB                AFIO_EXTICR2_EXTI7_PB_Msk         /*!< PB[7] pin */
+#define AFIO_EXTICR2_EXTI7_PC_Pos            (13U)                             
+#define AFIO_EXTICR2_EXTI7_PC_Msk            (0x1U << AFIO_EXTICR2_EXTI7_PC_Pos) /*!< 0x00002000 */
+#define AFIO_EXTICR2_EXTI7_PC                AFIO_EXTICR2_EXTI7_PC_Msk         /*!< PC[7] pin */
+#define AFIO_EXTICR2_EXTI7_PD_Pos            (12U)                             
+#define AFIO_EXTICR2_EXTI7_PD_Msk            (0x3U << AFIO_EXTICR2_EXTI7_PD_Pos) /*!< 0x00003000 */
+#define AFIO_EXTICR2_EXTI7_PD                AFIO_EXTICR2_EXTI7_PD_Msk         /*!< PD[7] pin */
+#define AFIO_EXTICR2_EXTI7_PE_Pos            (14U)                             
+#define AFIO_EXTICR2_EXTI7_PE_Msk            (0x1U << AFIO_EXTICR2_EXTI7_PE_Pos) /*!< 0x00004000 */
+#define AFIO_EXTICR2_EXTI7_PE                AFIO_EXTICR2_EXTI7_PE_Msk         /*!< PE[7] pin */
+#define AFIO_EXTICR2_EXTI7_PF_Pos            (12U)                             
+#define AFIO_EXTICR2_EXTI7_PF_Msk            (0x5U << AFIO_EXTICR2_EXTI7_PF_Pos) /*!< 0x00005000 */
+#define AFIO_EXTICR2_EXTI7_PF                AFIO_EXTICR2_EXTI7_PF_Msk         /*!< PF[7] pin */
+#define AFIO_EXTICR2_EXTI7_PG_Pos            (13U)                             
+#define AFIO_EXTICR2_EXTI7_PG_Msk            (0x3U << AFIO_EXTICR2_EXTI7_PG_Pos) /*!< 0x00006000 */
+#define AFIO_EXTICR2_EXTI7_PG                AFIO_EXTICR2_EXTI7_PG_Msk         /*!< PG[7] pin */
+
+/*****************  Bit definition for AFIO_EXTICR3 register  *****************/
+#define AFIO_EXTICR3_EXTI8_Pos               (0U)                              
+#define AFIO_EXTICR3_EXTI8_Msk               (0xFU << AFIO_EXTICR3_EXTI8_Pos)  /*!< 0x0000000F */
+#define AFIO_EXTICR3_EXTI8                   AFIO_EXTICR3_EXTI8_Msk            /*!< EXTI 8 configuration */
+#define AFIO_EXTICR3_EXTI9_Pos               (4U)                              
+#define AFIO_EXTICR3_EXTI9_Msk               (0xFU << AFIO_EXTICR3_EXTI9_Pos)  /*!< 0x000000F0 */
+#define AFIO_EXTICR3_EXTI9                   AFIO_EXTICR3_EXTI9_Msk            /*!< EXTI 9 configuration */
+#define AFIO_EXTICR3_EXTI10_Pos              (8U)                              
+#define AFIO_EXTICR3_EXTI10_Msk              (0xFU << AFIO_EXTICR3_EXTI10_Pos) /*!< 0x00000F00 */
+#define AFIO_EXTICR3_EXTI10                  AFIO_EXTICR3_EXTI10_Msk           /*!< EXTI 10 configuration */
+#define AFIO_EXTICR3_EXTI11_Pos              (12U)                             
+#define AFIO_EXTICR3_EXTI11_Msk              (0xFU << AFIO_EXTICR3_EXTI11_Pos) /*!< 0x0000F000 */
+#define AFIO_EXTICR3_EXTI11                  AFIO_EXTICR3_EXTI11_Msk           /*!< EXTI 11 configuration */
+
+/*!< EXTI8 configuration */
+#define AFIO_EXTICR3_EXTI8_PA                ((uint32_t)0x00000000)            /*!< PA[8] pin */
+#define AFIO_EXTICR3_EXTI8_PB_Pos            (0U)                              
+#define AFIO_EXTICR3_EXTI8_PB_Msk            (0x1U << AFIO_EXTICR3_EXTI8_PB_Pos) /*!< 0x00000001 */
+#define AFIO_EXTICR3_EXTI8_PB                AFIO_EXTICR3_EXTI8_PB_Msk         /*!< PB[8] pin */
+#define AFIO_EXTICR3_EXTI8_PC_Pos            (1U)                              
+#define AFIO_EXTICR3_EXTI8_PC_Msk            (0x1U << AFIO_EXTICR3_EXTI8_PC_Pos) /*!< 0x00000002 */
+#define AFIO_EXTICR3_EXTI8_PC                AFIO_EXTICR3_EXTI8_PC_Msk         /*!< PC[8] pin */
+#define AFIO_EXTICR3_EXTI8_PD_Pos            (0U)                              
+#define AFIO_EXTICR3_EXTI8_PD_Msk            (0x3U << AFIO_EXTICR3_EXTI8_PD_Pos) /*!< 0x00000003 */
+#define AFIO_EXTICR3_EXTI8_PD                AFIO_EXTICR3_EXTI8_PD_Msk         /*!< PD[8] pin */
+#define AFIO_EXTICR3_EXTI8_PE_Pos            (2U)                              
+#define AFIO_EXTICR3_EXTI8_PE_Msk            (0x1U << AFIO_EXTICR3_EXTI8_PE_Pos) /*!< 0x00000004 */
+#define AFIO_EXTICR3_EXTI8_PE                AFIO_EXTICR3_EXTI8_PE_Msk         /*!< PE[8] pin */
+#define AFIO_EXTICR3_EXTI8_PF_Pos            (0U)                              
+#define AFIO_EXTICR3_EXTI8_PF_Msk            (0x5U << AFIO_EXTICR3_EXTI8_PF_Pos) /*!< 0x00000005 */
+#define AFIO_EXTICR3_EXTI8_PF                AFIO_EXTICR3_EXTI8_PF_Msk         /*!< PF[8] pin */
+#define AFIO_EXTICR3_EXTI8_PG_Pos            (1U)                              
+#define AFIO_EXTICR3_EXTI8_PG_Msk            (0x3U << AFIO_EXTICR3_EXTI8_PG_Pos) /*!< 0x00000006 */
+#define AFIO_EXTICR3_EXTI8_PG                AFIO_EXTICR3_EXTI8_PG_Msk         /*!< PG[8] pin */
+
+/*!< EXTI9 configuration */
+#define AFIO_EXTICR3_EXTI9_PA                ((uint32_t)0x00000000)            /*!< PA[9] pin */
+#define AFIO_EXTICR3_EXTI9_PB_Pos            (4U)                              
+#define AFIO_EXTICR3_EXTI9_PB_Msk            (0x1U << AFIO_EXTICR3_EXTI9_PB_Pos) /*!< 0x00000010 */
+#define AFIO_EXTICR3_EXTI9_PB                AFIO_EXTICR3_EXTI9_PB_Msk         /*!< PB[9] pin */
+#define AFIO_EXTICR3_EXTI9_PC_Pos            (5U)                              
+#define AFIO_EXTICR3_EXTI9_PC_Msk            (0x1U << AFIO_EXTICR3_EXTI9_PC_Pos) /*!< 0x00000020 */
+#define AFIO_EXTICR3_EXTI9_PC                AFIO_EXTICR3_EXTI9_PC_Msk         /*!< PC[9] pin */
+#define AFIO_EXTICR3_EXTI9_PD_Pos            (4U)                              
+#define AFIO_EXTICR3_EXTI9_PD_Msk            (0x3U << AFIO_EXTICR3_EXTI9_PD_Pos) /*!< 0x00000030 */
+#define AFIO_EXTICR3_EXTI9_PD                AFIO_EXTICR3_EXTI9_PD_Msk         /*!< PD[9] pin */
+#define AFIO_EXTICR3_EXTI9_PE_Pos            (6U)                              
+#define AFIO_EXTICR3_EXTI9_PE_Msk            (0x1U << AFIO_EXTICR3_EXTI9_PE_Pos) /*!< 0x00000040 */
+#define AFIO_EXTICR3_EXTI9_PE                AFIO_EXTICR3_EXTI9_PE_Msk         /*!< PE[9] pin */
+#define AFIO_EXTICR3_EXTI9_PF_Pos            (4U)                              
+#define AFIO_EXTICR3_EXTI9_PF_Msk            (0x5U << AFIO_EXTICR3_EXTI9_PF_Pos) /*!< 0x00000050 */
+#define AFIO_EXTICR3_EXTI9_PF                AFIO_EXTICR3_EXTI9_PF_Msk         /*!< PF[9] pin */
+#define AFIO_EXTICR3_EXTI9_PG_Pos            (5U)                              
+#define AFIO_EXTICR3_EXTI9_PG_Msk            (0x3U << AFIO_EXTICR3_EXTI9_PG_Pos) /*!< 0x00000060 */
+#define AFIO_EXTICR3_EXTI9_PG                AFIO_EXTICR3_EXTI9_PG_Msk         /*!< PG[9] pin */
+
+/*!< EXTI10 configuration */  
+#define AFIO_EXTICR3_EXTI10_PA               ((uint32_t)0x00000000)            /*!< PA[10] pin */
+#define AFIO_EXTICR3_EXTI10_PB_Pos           (8U)                              
+#define AFIO_EXTICR3_EXTI10_PB_Msk           (0x1U << AFIO_EXTICR3_EXTI10_PB_Pos) /*!< 0x00000100 */
+#define AFIO_EXTICR3_EXTI10_PB               AFIO_EXTICR3_EXTI10_PB_Msk        /*!< PB[10] pin */
+#define AFIO_EXTICR3_EXTI10_PC_Pos           (9U)                              
+#define AFIO_EXTICR3_EXTI10_PC_Msk           (0x1U << AFIO_EXTICR3_EXTI10_PC_Pos) /*!< 0x00000200 */
+#define AFIO_EXTICR3_EXTI10_PC               AFIO_EXTICR3_EXTI10_PC_Msk        /*!< PC[10] pin */
+#define AFIO_EXTICR3_EXTI10_PD_Pos           (8U)                              
+#define AFIO_EXTICR3_EXTI10_PD_Msk           (0x3U << AFIO_EXTICR3_EXTI10_PD_Pos) /*!< 0x00000300 */
+#define AFIO_EXTICR3_EXTI10_PD               AFIO_EXTICR3_EXTI10_PD_Msk        /*!< PD[10] pin */
+#define AFIO_EXTICR3_EXTI10_PE_Pos           (10U)                             
+#define AFIO_EXTICR3_EXTI10_PE_Msk           (0x1U << AFIO_EXTICR3_EXTI10_PE_Pos) /*!< 0x00000400 */
+#define AFIO_EXTICR3_EXTI10_PE               AFIO_EXTICR3_EXTI10_PE_Msk        /*!< PE[10] pin */
+#define AFIO_EXTICR3_EXTI10_PF_Pos           (8U)                              
+#define AFIO_EXTICR3_EXTI10_PF_Msk           (0x5U << AFIO_EXTICR3_EXTI10_PF_Pos) /*!< 0x00000500 */
+#define AFIO_EXTICR3_EXTI10_PF               AFIO_EXTICR3_EXTI10_PF_Msk        /*!< PF[10] pin */
+#define AFIO_EXTICR3_EXTI10_PG_Pos           (9U)                              
+#define AFIO_EXTICR3_EXTI10_PG_Msk           (0x3U << AFIO_EXTICR3_EXTI10_PG_Pos) /*!< 0x00000600 */
+#define AFIO_EXTICR3_EXTI10_PG               AFIO_EXTICR3_EXTI10_PG_Msk        /*!< PG[10] pin */
+
+/*!< EXTI11 configuration */
+#define AFIO_EXTICR3_EXTI11_PA               ((uint32_t)0x00000000)            /*!< PA[11] pin */
+#define AFIO_EXTICR3_EXTI11_PB_Pos           (12U)                             
+#define AFIO_EXTICR3_EXTI11_PB_Msk           (0x1U << AFIO_EXTICR3_EXTI11_PB_Pos) /*!< 0x00001000 */
+#define AFIO_EXTICR3_EXTI11_PB               AFIO_EXTICR3_EXTI11_PB_Msk        /*!< PB[11] pin */
+#define AFIO_EXTICR3_EXTI11_PC_Pos           (13U)                             
+#define AFIO_EXTICR3_EXTI11_PC_Msk           (0x1U << AFIO_EXTICR3_EXTI11_PC_Pos) /*!< 0x00002000 */
+#define AFIO_EXTICR3_EXTI11_PC               AFIO_EXTICR3_EXTI11_PC_Msk        /*!< PC[11] pin */
+#define AFIO_EXTICR3_EXTI11_PD_Pos           (12U)                             
+#define AFIO_EXTICR3_EXTI11_PD_Msk           (0x3U << AFIO_EXTICR3_EXTI11_PD_Pos) /*!< 0x00003000 */
+#define AFIO_EXTICR3_EXTI11_PD               AFIO_EXTICR3_EXTI11_PD_Msk        /*!< PD[11] pin */
+#define AFIO_EXTICR3_EXTI11_PE_Pos           (14U)                             
+#define AFIO_EXTICR3_EXTI11_PE_Msk           (0x1U << AFIO_EXTICR3_EXTI11_PE_Pos) /*!< 0x00004000 */
+#define AFIO_EXTICR3_EXTI11_PE               AFIO_EXTICR3_EXTI11_PE_Msk        /*!< PE[11] pin */
+#define AFIO_EXTICR3_EXTI11_PF_Pos           (12U)                             
+#define AFIO_EXTICR3_EXTI11_PF_Msk           (0x5U << AFIO_EXTICR3_EXTI11_PF_Pos) /*!< 0x00005000 */
+#define AFIO_EXTICR3_EXTI11_PF               AFIO_EXTICR3_EXTI11_PF_Msk        /*!< PF[11] pin */
+#define AFIO_EXTICR3_EXTI11_PG_Pos           (13U)                             
+#define AFIO_EXTICR3_EXTI11_PG_Msk           (0x3U << AFIO_EXTICR3_EXTI11_PG_Pos) /*!< 0x00006000 */
+#define AFIO_EXTICR3_EXTI11_PG               AFIO_EXTICR3_EXTI11_PG_Msk        /*!< PG[11] pin */
+
+/*****************  Bit definition for AFIO_EXTICR4 register  *****************/
+#define AFIO_EXTICR4_EXTI12_Pos              (0U)                              
+#define AFIO_EXTICR4_EXTI12_Msk              (0xFU << AFIO_EXTICR4_EXTI12_Pos) /*!< 0x0000000F */
+#define AFIO_EXTICR4_EXTI12                  AFIO_EXTICR4_EXTI12_Msk           /*!< EXTI 12 configuration */
+#define AFIO_EXTICR4_EXTI13_Pos              (4U)                              
+#define AFIO_EXTICR4_EXTI13_Msk              (0xFU << AFIO_EXTICR4_EXTI13_Pos) /*!< 0x000000F0 */
+#define AFIO_EXTICR4_EXTI13                  AFIO_EXTICR4_EXTI13_Msk           /*!< EXTI 13 configuration */
+#define AFIO_EXTICR4_EXTI14_Pos              (8U)                              
+#define AFIO_EXTICR4_EXTI14_Msk              (0xFU << AFIO_EXTICR4_EXTI14_Pos) /*!< 0x00000F00 */
+#define AFIO_EXTICR4_EXTI14                  AFIO_EXTICR4_EXTI14_Msk           /*!< EXTI 14 configuration */
+#define AFIO_EXTICR4_EXTI15_Pos              (12U)                             
+#define AFIO_EXTICR4_EXTI15_Msk              (0xFU << AFIO_EXTICR4_EXTI15_Pos) /*!< 0x0000F000 */
+#define AFIO_EXTICR4_EXTI15                  AFIO_EXTICR4_EXTI15_Msk           /*!< EXTI 15 configuration */
+
+/* EXTI12 configuration */
+#define AFIO_EXTICR4_EXTI12_PA               ((uint32_t)0x00000000)            /*!< PA[12] pin */
+#define AFIO_EXTICR4_EXTI12_PB_Pos           (0U)                              
+#define AFIO_EXTICR4_EXTI12_PB_Msk           (0x1U << AFIO_EXTICR4_EXTI12_PB_Pos) /*!< 0x00000001 */
+#define AFIO_EXTICR4_EXTI12_PB               AFIO_EXTICR4_EXTI12_PB_Msk        /*!< PB[12] pin */
+#define AFIO_EXTICR4_EXTI12_PC_Pos           (1U)                              
+#define AFIO_EXTICR4_EXTI12_PC_Msk           (0x1U << AFIO_EXTICR4_EXTI12_PC_Pos) /*!< 0x00000002 */
+#define AFIO_EXTICR4_EXTI12_PC               AFIO_EXTICR4_EXTI12_PC_Msk        /*!< PC[12] pin */
+#define AFIO_EXTICR4_EXTI12_PD_Pos           (0U)                              
+#define AFIO_EXTICR4_EXTI12_PD_Msk           (0x3U << AFIO_EXTICR4_EXTI12_PD_Pos) /*!< 0x00000003 */
+#define AFIO_EXTICR4_EXTI12_PD               AFIO_EXTICR4_EXTI12_PD_Msk        /*!< PD[12] pin */
+#define AFIO_EXTICR4_EXTI12_PE_Pos           (2U)                              
+#define AFIO_EXTICR4_EXTI12_PE_Msk           (0x1U << AFIO_EXTICR4_EXTI12_PE_Pos) /*!< 0x00000004 */
+#define AFIO_EXTICR4_EXTI12_PE               AFIO_EXTICR4_EXTI12_PE_Msk        /*!< PE[12] pin */
+#define AFIO_EXTICR4_EXTI12_PF_Pos           (0U)                              
+#define AFIO_EXTICR4_EXTI12_PF_Msk           (0x5U << AFIO_EXTICR4_EXTI12_PF_Pos) /*!< 0x00000005 */
+#define AFIO_EXTICR4_EXTI12_PF               AFIO_EXTICR4_EXTI12_PF_Msk        /*!< PF[12] pin */
+#define AFIO_EXTICR4_EXTI12_PG_Pos           (1U)                              
+#define AFIO_EXTICR4_EXTI12_PG_Msk           (0x3U << AFIO_EXTICR4_EXTI12_PG_Pos) /*!< 0x00000006 */
+#define AFIO_EXTICR4_EXTI12_PG               AFIO_EXTICR4_EXTI12_PG_Msk        /*!< PG[12] pin */
+
+/* EXTI13 configuration */
+#define AFIO_EXTICR4_EXTI13_PA               ((uint32_t)0x00000000)            /*!< PA[13] pin */
+#define AFIO_EXTICR4_EXTI13_PB_Pos           (4U)                              
+#define AFIO_EXTICR4_EXTI13_PB_Msk           (0x1U << AFIO_EXTICR4_EXTI13_PB_Pos) /*!< 0x00000010 */
+#define AFIO_EXTICR4_EXTI13_PB               AFIO_EXTICR4_EXTI13_PB_Msk        /*!< PB[13] pin */
+#define AFIO_EXTICR4_EXTI13_PC_Pos           (5U)                              
+#define AFIO_EXTICR4_EXTI13_PC_Msk           (0x1U << AFIO_EXTICR4_EXTI13_PC_Pos) /*!< 0x00000020 */
+#define AFIO_EXTICR4_EXTI13_PC               AFIO_EXTICR4_EXTI13_PC_Msk        /*!< PC[13] pin */
+#define AFIO_EXTICR4_EXTI13_PD_Pos           (4U)                              
+#define AFIO_EXTICR4_EXTI13_PD_Msk           (0x3U << AFIO_EXTICR4_EXTI13_PD_Pos) /*!< 0x00000030 */
+#define AFIO_EXTICR4_EXTI13_PD               AFIO_EXTICR4_EXTI13_PD_Msk        /*!< PD[13] pin */
+#define AFIO_EXTICR4_EXTI13_PE_Pos           (6U)                              
+#define AFIO_EXTICR4_EXTI13_PE_Msk           (0x1U << AFIO_EXTICR4_EXTI13_PE_Pos) /*!< 0x00000040 */
+#define AFIO_EXTICR4_EXTI13_PE               AFIO_EXTICR4_EXTI13_PE_Msk        /*!< PE[13] pin */
+#define AFIO_EXTICR4_EXTI13_PF_Pos           (4U)                              
+#define AFIO_EXTICR4_EXTI13_PF_Msk           (0x5U << AFIO_EXTICR4_EXTI13_PF_Pos) /*!< 0x00000050 */
+#define AFIO_EXTICR4_EXTI13_PF               AFIO_EXTICR4_EXTI13_PF_Msk        /*!< PF[13] pin */
+#define AFIO_EXTICR4_EXTI13_PG_Pos           (5U)                              
+#define AFIO_EXTICR4_EXTI13_PG_Msk           (0x3U << AFIO_EXTICR4_EXTI13_PG_Pos) /*!< 0x00000060 */
+#define AFIO_EXTICR4_EXTI13_PG               AFIO_EXTICR4_EXTI13_PG_Msk        /*!< PG[13] pin */
+
+/*!< EXTI14 configuration */  
+#define AFIO_EXTICR4_EXTI14_PA               ((uint32_t)0x00000000)            /*!< PA[14] pin */
+#define AFIO_EXTICR4_EXTI14_PB_Pos           (8U)                              
+#define AFIO_EXTICR4_EXTI14_PB_Msk           (0x1U << AFIO_EXTICR4_EXTI14_PB_Pos) /*!< 0x00000100 */
+#define AFIO_EXTICR4_EXTI14_PB               AFIO_EXTICR4_EXTI14_PB_Msk        /*!< PB[14] pin */
+#define AFIO_EXTICR4_EXTI14_PC_Pos           (9U)                              
+#define AFIO_EXTICR4_EXTI14_PC_Msk           (0x1U << AFIO_EXTICR4_EXTI14_PC_Pos) /*!< 0x00000200 */
+#define AFIO_EXTICR4_EXTI14_PC               AFIO_EXTICR4_EXTI14_PC_Msk        /*!< PC[14] pin */
+#define AFIO_EXTICR4_EXTI14_PD_Pos           (8U)                              
+#define AFIO_EXTICR4_EXTI14_PD_Msk           (0x3U << AFIO_EXTICR4_EXTI14_PD_Pos) /*!< 0x00000300 */
+#define AFIO_EXTICR4_EXTI14_PD               AFIO_EXTICR4_EXTI14_PD_Msk        /*!< PD[14] pin */
+#define AFIO_EXTICR4_EXTI14_PE_Pos           (10U)                             
+#define AFIO_EXTICR4_EXTI14_PE_Msk           (0x1U << AFIO_EXTICR4_EXTI14_PE_Pos) /*!< 0x00000400 */
+#define AFIO_EXTICR4_EXTI14_PE               AFIO_EXTICR4_EXTI14_PE_Msk        /*!< PE[14] pin */
+#define AFIO_EXTICR4_EXTI14_PF_Pos           (8U)                              
+#define AFIO_EXTICR4_EXTI14_PF_Msk           (0x5U << AFIO_EXTICR4_EXTI14_PF_Pos) /*!< 0x00000500 */
+#define AFIO_EXTICR4_EXTI14_PF               AFIO_EXTICR4_EXTI14_PF_Msk        /*!< PF[14] pin */
+#define AFIO_EXTICR4_EXTI14_PG_Pos           (9U)                              
+#define AFIO_EXTICR4_EXTI14_PG_Msk           (0x3U << AFIO_EXTICR4_EXTI14_PG_Pos) /*!< 0x00000600 */
+#define AFIO_EXTICR4_EXTI14_PG               AFIO_EXTICR4_EXTI14_PG_Msk        /*!< PG[14] pin */
+
+/*!< EXTI15 configuration */
+#define AFIO_EXTICR4_EXTI15_PA               ((uint32_t)0x00000000)            /*!< PA[15] pin */
+#define AFIO_EXTICR4_EXTI15_PB_Pos           (12U)                             
+#define AFIO_EXTICR4_EXTI15_PB_Msk           (0x1U << AFIO_EXTICR4_EXTI15_PB_Pos) /*!< 0x00001000 */
+#define AFIO_EXTICR4_EXTI15_PB               AFIO_EXTICR4_EXTI15_PB_Msk        /*!< PB[15] pin */
+#define AFIO_EXTICR4_EXTI15_PC_Pos           (13U)                             
+#define AFIO_EXTICR4_EXTI15_PC_Msk           (0x1U << AFIO_EXTICR4_EXTI15_PC_Pos) /*!< 0x00002000 */
+#define AFIO_EXTICR4_EXTI15_PC               AFIO_EXTICR4_EXTI15_PC_Msk        /*!< PC[15] pin */
+#define AFIO_EXTICR4_EXTI15_PD_Pos           (12U)                             
+#define AFIO_EXTICR4_EXTI15_PD_Msk           (0x3U << AFIO_EXTICR4_EXTI15_PD_Pos) /*!< 0x00003000 */
+#define AFIO_EXTICR4_EXTI15_PD               AFIO_EXTICR4_EXTI15_PD_Msk        /*!< PD[15] pin */
+#define AFIO_EXTICR4_EXTI15_PE_Pos           (14U)                             
+#define AFIO_EXTICR4_EXTI15_PE_Msk           (0x1U << AFIO_EXTICR4_EXTI15_PE_Pos) /*!< 0x00004000 */
+#define AFIO_EXTICR4_EXTI15_PE               AFIO_EXTICR4_EXTI15_PE_Msk        /*!< PE[15] pin */
+#define AFIO_EXTICR4_EXTI15_PF_Pos           (12U)                             
+#define AFIO_EXTICR4_EXTI15_PF_Msk           (0x5U << AFIO_EXTICR4_EXTI15_PF_Pos) /*!< 0x00005000 */
+#define AFIO_EXTICR4_EXTI15_PF               AFIO_EXTICR4_EXTI15_PF_Msk        /*!< PF[15] pin */
+#define AFIO_EXTICR4_EXTI15_PG_Pos           (13U)                             
+#define AFIO_EXTICR4_EXTI15_PG_Msk           (0x3U << AFIO_EXTICR4_EXTI15_PG_Pos) /*!< 0x00006000 */
+#define AFIO_EXTICR4_EXTI15_PG               AFIO_EXTICR4_EXTI15_PG_Msk        /*!< PG[15] pin */
+
+/******************  Bit definition for AFIO_MAPR2 register  ******************/
+
+
+
+/******************************************************************************/
+/*                                                                            */
+/*                               SystemTick                                   */
+/*                                                                            */
+/******************************************************************************/
+
+/*****************  Bit definition for SysTick_CTRL register  *****************/
+#define SysTick_CTRL_ENABLE                 ((uint32_t)0x00000001)             /*!< Counter enable */
+#define SysTick_CTRL_TICKINT                ((uint32_t)0x00000002)             /*!< Counting down to 0 pends the SysTick handler */
+#define SysTick_CTRL_CLKSOURCE              ((uint32_t)0x00000004)             /*!< Clock source */
+#define SysTick_CTRL_COUNTFLAG              ((uint32_t)0x00010000)             /*!< Count Flag */
+
+/*****************  Bit definition for SysTick_LOAD register  *****************/
+#define SysTick_LOAD_RELOAD                 ((uint32_t)0x00FFFFFF)             /*!< Value to load into the SysTick Current Value Register when the counter reaches 0 */
+
+/*****************  Bit definition for SysTick_VAL register  ******************/
+#define SysTick_VAL_CURRENT                 ((uint32_t)0x00FFFFFF)             /*!< Current value at the time the register is accessed */
+
+/*****************  Bit definition for SysTick_CALIB register  ****************/
+#define SysTick_CALIB_TENMS                 ((uint32_t)0x00FFFFFF)             /*!< Reload value to use for 10ms timing */
+#define SysTick_CALIB_SKEW                  ((uint32_t)0x40000000)             /*!< Calibration value is not exactly 10 ms */
+#define SysTick_CALIB_NOREF                 ((uint32_t)0x80000000)             /*!< The reference clock is not provided */
+
+/******************************************************************************/
+/*                                                                            */
+/*                  Nested Vectored Interrupt Controller                      */
+/*                                                                            */
+/******************************************************************************/
+
+/******************  Bit definition for NVIC_ISER register  *******************/
+#define NVIC_ISER_SETENA_Pos                (0U)                               
+#define NVIC_ISER_SETENA_Msk                (0xFFFFFFFFU << NVIC_ISER_SETENA_Pos) /*!< 0xFFFFFFFF */
+#define NVIC_ISER_SETENA                    NVIC_ISER_SETENA_Msk               /*!< Interrupt set enable bits */
+#define NVIC_ISER_SETENA_0                  (0x00000001U << NVIC_ISER_SETENA_Pos) /*!< 0x00000001 */
+#define NVIC_ISER_SETENA_1                  (0x00000002U << NVIC_ISER_SETENA_Pos) /*!< 0x00000002 */
+#define NVIC_ISER_SETENA_2                  (0x00000004U << NVIC_ISER_SETENA_Pos) /*!< 0x00000004 */
+#define NVIC_ISER_SETENA_3                  (0x00000008U << NVIC_ISER_SETENA_Pos) /*!< 0x00000008 */
+#define NVIC_ISER_SETENA_4                  (0x00000010U << NVIC_ISER_SETENA_Pos) /*!< 0x00000010 */
+#define NVIC_ISER_SETENA_5                  (0x00000020U << NVIC_ISER_SETENA_Pos) /*!< 0x00000020 */
+#define NVIC_ISER_SETENA_6                  (0x00000040U << NVIC_ISER_SETENA_Pos) /*!< 0x00000040 */
+#define NVIC_ISER_SETENA_7                  (0x00000080U << NVIC_ISER_SETENA_Pos) /*!< 0x00000080 */
+#define NVIC_ISER_SETENA_8                  (0x00000100U << NVIC_ISER_SETENA_Pos) /*!< 0x00000100 */
+#define NVIC_ISER_SETENA_9                  (0x00000200U << NVIC_ISER_SETENA_Pos) /*!< 0x00000200 */
+#define NVIC_ISER_SETENA_10                 (0x00000400U << NVIC_ISER_SETENA_Pos) /*!< 0x00000400 */
+#define NVIC_ISER_SETENA_11                 (0x00000800U << NVIC_ISER_SETENA_Pos) /*!< 0x00000800 */
+#define NVIC_ISER_SETENA_12                 (0x00001000U << NVIC_ISER_SETENA_Pos) /*!< 0x00001000 */
+#define NVIC_ISER_SETENA_13                 (0x00002000U << NVIC_ISER_SETENA_Pos) /*!< 0x00002000 */
+#define NVIC_ISER_SETENA_14                 (0x00004000U << NVIC_ISER_SETENA_Pos) /*!< 0x00004000 */
+#define NVIC_ISER_SETENA_15                 (0x00008000U << NVIC_ISER_SETENA_Pos) /*!< 0x00008000 */
+#define NVIC_ISER_SETENA_16                 (0x00010000U << NVIC_ISER_SETENA_Pos) /*!< 0x00010000 */
+#define NVIC_ISER_SETENA_17                 (0x00020000U << NVIC_ISER_SETENA_Pos) /*!< 0x00020000 */
+#define NVIC_ISER_SETENA_18                 (0x00040000U << NVIC_ISER_SETENA_Pos) /*!< 0x00040000 */
+#define NVIC_ISER_SETENA_19                 (0x00080000U << NVIC_ISER_SETENA_Pos) /*!< 0x00080000 */
+#define NVIC_ISER_SETENA_20                 (0x00100000U << NVIC_ISER_SETENA_Pos) /*!< 0x00100000 */
+#define NVIC_ISER_SETENA_21                 (0x00200000U << NVIC_ISER_SETENA_Pos) /*!< 0x00200000 */
+#define NVIC_ISER_SETENA_22                 (0x00400000U << NVIC_ISER_SETENA_Pos) /*!< 0x00400000 */
+#define NVIC_ISER_SETENA_23                 (0x00800000U << NVIC_ISER_SETENA_Pos) /*!< 0x00800000 */
+#define NVIC_ISER_SETENA_24                 (0x01000000U << NVIC_ISER_SETENA_Pos) /*!< 0x01000000 */
+#define NVIC_ISER_SETENA_25                 (0x02000000U << NVIC_ISER_SETENA_Pos) /*!< 0x02000000 */
+#define NVIC_ISER_SETENA_26                 (0x04000000U << NVIC_ISER_SETENA_Pos) /*!< 0x04000000 */
+#define NVIC_ISER_SETENA_27                 (0x08000000U << NVIC_ISER_SETENA_Pos) /*!< 0x08000000 */
+#define NVIC_ISER_SETENA_28                 (0x10000000U << NVIC_ISER_SETENA_Pos) /*!< 0x10000000 */
+#define NVIC_ISER_SETENA_29                 (0x20000000U << NVIC_ISER_SETENA_Pos) /*!< 0x20000000 */
+#define NVIC_ISER_SETENA_30                 (0x40000000U << NVIC_ISER_SETENA_Pos) /*!< 0x40000000 */
+#define NVIC_ISER_SETENA_31                 (0x80000000U << NVIC_ISER_SETENA_Pos) /*!< 0x80000000 */
+
+/******************  Bit definition for NVIC_ICER register  *******************/
+#define NVIC_ICER_CLRENA_Pos                (0U)                               
+#define NVIC_ICER_CLRENA_Msk                (0xFFFFFFFFU << NVIC_ICER_CLRENA_Pos) /*!< 0xFFFFFFFF */
+#define NVIC_ICER_CLRENA                    NVIC_ICER_CLRENA_Msk               /*!< Interrupt clear-enable bits */
+#define NVIC_ICER_CLRENA_0                  (0x00000001U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000001 */
+#define NVIC_ICER_CLRENA_1                  (0x00000002U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000002 */
+#define NVIC_ICER_CLRENA_2                  (0x00000004U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000004 */
+#define NVIC_ICER_CLRENA_3                  (0x00000008U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000008 */
+#define NVIC_ICER_CLRENA_4                  (0x00000010U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000010 */
+#define NVIC_ICER_CLRENA_5                  (0x00000020U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000020 */
+#define NVIC_ICER_CLRENA_6                  (0x00000040U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000040 */
+#define NVIC_ICER_CLRENA_7                  (0x00000080U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000080 */
+#define NVIC_ICER_CLRENA_8                  (0x00000100U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000100 */
+#define NVIC_ICER_CLRENA_9                  (0x00000200U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000200 */
+#define NVIC_ICER_CLRENA_10                 (0x00000400U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000400 */
+#define NVIC_ICER_CLRENA_11                 (0x00000800U << NVIC_ICER_CLRENA_Pos) /*!< 0x00000800 */
+#define NVIC_ICER_CLRENA_12                 (0x00001000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00001000 */
+#define NVIC_ICER_CLRENA_13                 (0x00002000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00002000 */
+#define NVIC_ICER_CLRENA_14                 (0x00004000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00004000 */
+#define NVIC_ICER_CLRENA_15                 (0x00008000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00008000 */
+#define NVIC_ICER_CLRENA_16                 (0x00010000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00010000 */
+#define NVIC_ICER_CLRENA_17                 (0x00020000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00020000 */
+#define NVIC_ICER_CLRENA_18                 (0x00040000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00040000 */
+#define NVIC_ICER_CLRENA_19                 (0x00080000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00080000 */
+#define NVIC_ICER_CLRENA_20                 (0x00100000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00100000 */
+#define NVIC_ICER_CLRENA_21                 (0x00200000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00200000 */
+#define NVIC_ICER_CLRENA_22                 (0x00400000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00400000 */
+#define NVIC_ICER_CLRENA_23                 (0x00800000U << NVIC_ICER_CLRENA_Pos) /*!< 0x00800000 */
+#define NVIC_ICER_CLRENA_24                 (0x01000000U << NVIC_ICER_CLRENA_Pos) /*!< 0x01000000 */
+#define NVIC_ICER_CLRENA_25                 (0x02000000U << NVIC_ICER_CLRENA_Pos) /*!< 0x02000000 */
+#define NVIC_ICER_CLRENA_26                 (0x04000000U << NVIC_ICER_CLRENA_Pos) /*!< 0x04000000 */
+#define NVIC_ICER_CLRENA_27                 (0x08000000U << NVIC_ICER_CLRENA_Pos) /*!< 0x08000000 */
+#define NVIC_ICER_CLRENA_28                 (0x10000000U << NVIC_ICER_CLRENA_Pos) /*!< 0x10000000 */
+#define NVIC_ICER_CLRENA_29                 (0x20000000U << NVIC_ICER_CLRENA_Pos) /*!< 0x20000000 */
+#define NVIC_ICER_CLRENA_30                 (0x40000000U << NVIC_ICER_CLRENA_Pos) /*!< 0x40000000 */
+#define NVIC_ICER_CLRENA_31                 (0x80000000U << NVIC_ICER_CLRENA_Pos) /*!< 0x80000000 */
+
+/******************  Bit definition for NVIC_ISPR register  *******************/
+#define NVIC_ISPR_SETPEND_Pos               (0U)                               
+#define NVIC_ISPR_SETPEND_Msk               (0xFFFFFFFFU << NVIC_ISPR_SETPEND_Pos) /*!< 0xFFFFFFFF */
+#define NVIC_ISPR_SETPEND                   NVIC_ISPR_SETPEND_Msk              /*!< Interrupt set-pending bits */
+#define NVIC_ISPR_SETPEND_0                 (0x00000001U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000001 */
+#define NVIC_ISPR_SETPEND_1                 (0x00000002U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000002 */
+#define NVIC_ISPR_SETPEND_2                 (0x00000004U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000004 */
+#define NVIC_ISPR_SETPEND_3                 (0x00000008U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000008 */
+#define NVIC_ISPR_SETPEND_4                 (0x00000010U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000010 */
+#define NVIC_ISPR_SETPEND_5                 (0x00000020U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000020 */
+#define NVIC_ISPR_SETPEND_6                 (0x00000040U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000040 */
+#define NVIC_ISPR_SETPEND_7                 (0x00000080U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000080 */
+#define NVIC_ISPR_SETPEND_8                 (0x00000100U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000100 */
+#define NVIC_ISPR_SETPEND_9                 (0x00000200U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000200 */
+#define NVIC_ISPR_SETPEND_10                (0x00000400U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000400 */
+#define NVIC_ISPR_SETPEND_11                (0x00000800U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00000800 */
+#define NVIC_ISPR_SETPEND_12                (0x00001000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00001000 */
+#define NVIC_ISPR_SETPEND_13                (0x00002000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00002000 */
+#define NVIC_ISPR_SETPEND_14                (0x00004000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00004000 */
+#define NVIC_ISPR_SETPEND_15                (0x00008000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00008000 */
+#define NVIC_ISPR_SETPEND_16                (0x00010000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00010000 */
+#define NVIC_ISPR_SETPEND_17                (0x00020000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00020000 */
+#define NVIC_ISPR_SETPEND_18                (0x00040000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00040000 */
+#define NVIC_ISPR_SETPEND_19                (0x00080000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00080000 */
+#define NVIC_ISPR_SETPEND_20                (0x00100000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00100000 */
+#define NVIC_ISPR_SETPEND_21                (0x00200000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00200000 */
+#define NVIC_ISPR_SETPEND_22                (0x00400000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00400000 */
+#define NVIC_ISPR_SETPEND_23                (0x00800000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x00800000 */
+#define NVIC_ISPR_SETPEND_24                (0x01000000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x01000000 */
+#define NVIC_ISPR_SETPEND_25                (0x02000000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x02000000 */
+#define NVIC_ISPR_SETPEND_26                (0x04000000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x04000000 */
+#define NVIC_ISPR_SETPEND_27                (0x08000000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x08000000 */
+#define NVIC_ISPR_SETPEND_28                (0x10000000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x10000000 */
+#define NVIC_ISPR_SETPEND_29                (0x20000000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x20000000 */
+#define NVIC_ISPR_SETPEND_30                (0x40000000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x40000000 */
+#define NVIC_ISPR_SETPEND_31                (0x80000000U << NVIC_ISPR_SETPEND_Pos) /*!< 0x80000000 */
+
+/******************  Bit definition for NVIC_ICPR register  *******************/
+#define NVIC_ICPR_CLRPEND_Pos               (0U)                               
+#define NVIC_ICPR_CLRPEND_Msk               (0xFFFFFFFFU << NVIC_ICPR_CLRPEND_Pos) /*!< 0xFFFFFFFF */
+#define NVIC_ICPR_CLRPEND                   NVIC_ICPR_CLRPEND_Msk              /*!< Interrupt clear-pending bits */
+#define NVIC_ICPR_CLRPEND_0                 (0x00000001U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000001 */
+#define NVIC_ICPR_CLRPEND_1                 (0x00000002U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000002 */
+#define NVIC_ICPR_CLRPEND_2                 (0x00000004U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000004 */
+#define NVIC_ICPR_CLRPEND_3                 (0x00000008U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000008 */
+#define NVIC_ICPR_CLRPEND_4                 (0x00000010U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000010 */
+#define NVIC_ICPR_CLRPEND_5                 (0x00000020U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000020 */
+#define NVIC_ICPR_CLRPEND_6                 (0x00000040U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000040 */
+#define NVIC_ICPR_CLRPEND_7                 (0x00000080U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000080 */
+#define NVIC_ICPR_CLRPEND_8                 (0x00000100U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000100 */
+#define NVIC_ICPR_CLRPEND_9                 (0x00000200U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000200 */
+#define NVIC_ICPR_CLRPEND_10                (0x00000400U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000400 */
+#define NVIC_ICPR_CLRPEND_11                (0x00000800U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00000800 */
+#define NVIC_ICPR_CLRPEND_12                (0x00001000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00001000 */
+#define NVIC_ICPR_CLRPEND_13                (0x00002000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00002000 */
+#define NVIC_ICPR_CLRPEND_14                (0x00004000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00004000 */
+#define NVIC_ICPR_CLRPEND_15                (0x00008000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00008000 */
+#define NVIC_ICPR_CLRPEND_16                (0x00010000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00010000 */
+#define NVIC_ICPR_CLRPEND_17                (0x00020000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00020000 */
+#define NVIC_ICPR_CLRPEND_18                (0x00040000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00040000 */
+#define NVIC_ICPR_CLRPEND_19                (0x00080000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00080000 */
+#define NVIC_ICPR_CLRPEND_20                (0x00100000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00100000 */
+#define NVIC_ICPR_CLRPEND_21                (0x00200000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00200000 */
+#define NVIC_ICPR_CLRPEND_22                (0x00400000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00400000 */
+#define NVIC_ICPR_CLRPEND_23                (0x00800000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x00800000 */
+#define NVIC_ICPR_CLRPEND_24                (0x01000000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x01000000 */
+#define NVIC_ICPR_CLRPEND_25                (0x02000000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x02000000 */
+#define NVIC_ICPR_CLRPEND_26                (0x04000000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x04000000 */
+#define NVIC_ICPR_CLRPEND_27                (0x08000000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x08000000 */
+#define NVIC_ICPR_CLRPEND_28                (0x10000000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x10000000 */
+#define NVIC_ICPR_CLRPEND_29                (0x20000000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x20000000 */
+#define NVIC_ICPR_CLRPEND_30                (0x40000000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x40000000 */
+#define NVIC_ICPR_CLRPEND_31                (0x80000000U << NVIC_ICPR_CLRPEND_Pos) /*!< 0x80000000 */
+
+/******************  Bit definition for NVIC_IABR register  *******************/
+#define NVIC_IABR_ACTIVE_Pos                (0U)                               
+#define NVIC_IABR_ACTIVE_Msk                (0xFFFFFFFFU << NVIC_IABR_ACTIVE_Pos) /*!< 0xFFFFFFFF */
+#define NVIC_IABR_ACTIVE                    NVIC_IABR_ACTIVE_Msk               /*!< Interrupt active flags */
+#define NVIC_IABR_ACTIVE_0                  (0x00000001U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000001 */
+#define NVIC_IABR_ACTIVE_1                  (0x00000002U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000002 */
+#define NVIC_IABR_ACTIVE_2                  (0x00000004U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000004 */
+#define NVIC_IABR_ACTIVE_3                  (0x00000008U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000008 */
+#define NVIC_IABR_ACTIVE_4                  (0x00000010U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000010 */
+#define NVIC_IABR_ACTIVE_5                  (0x00000020U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000020 */
+#define NVIC_IABR_ACTIVE_6                  (0x00000040U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000040 */
+#define NVIC_IABR_ACTIVE_7                  (0x00000080U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000080 */
+#define NVIC_IABR_ACTIVE_8                  (0x00000100U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000100 */
+#define NVIC_IABR_ACTIVE_9                  (0x00000200U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000200 */
+#define NVIC_IABR_ACTIVE_10                 (0x00000400U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000400 */
+#define NVIC_IABR_ACTIVE_11                 (0x00000800U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00000800 */
+#define NVIC_IABR_ACTIVE_12                 (0x00001000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00001000 */
+#define NVIC_IABR_ACTIVE_13                 (0x00002000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00002000 */
+#define NVIC_IABR_ACTIVE_14                 (0x00004000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00004000 */
+#define NVIC_IABR_ACTIVE_15                 (0x00008000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00008000 */
+#define NVIC_IABR_ACTIVE_16                 (0x00010000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00010000 */
+#define NVIC_IABR_ACTIVE_17                 (0x00020000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00020000 */
+#define NVIC_IABR_ACTIVE_18                 (0x00040000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00040000 */
+#define NVIC_IABR_ACTIVE_19                 (0x00080000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00080000 */
+#define NVIC_IABR_ACTIVE_20                 (0x00100000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00100000 */
+#define NVIC_IABR_ACTIVE_21                 (0x00200000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00200000 */
+#define NVIC_IABR_ACTIVE_22                 (0x00400000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00400000 */
+#define NVIC_IABR_ACTIVE_23                 (0x00800000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x00800000 */
+#define NVIC_IABR_ACTIVE_24                 (0x01000000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x01000000 */
+#define NVIC_IABR_ACTIVE_25                 (0x02000000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x02000000 */
+#define NVIC_IABR_ACTIVE_26                 (0x04000000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x04000000 */
+#define NVIC_IABR_ACTIVE_27                 (0x08000000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x08000000 */
+#define NVIC_IABR_ACTIVE_28                 (0x10000000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x10000000 */
+#define NVIC_IABR_ACTIVE_29                 (0x20000000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x20000000 */
+#define NVIC_IABR_ACTIVE_30                 (0x40000000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x40000000 */
+#define NVIC_IABR_ACTIVE_31                 (0x80000000U << NVIC_IABR_ACTIVE_Pos) /*!< 0x80000000 */
+
+/******************  Bit definition for NVIC_PRI0 register  *******************/
+#define NVIC_IPR0_PRI_0                     ((uint32_t)0x000000FF)             /*!< Priority of interrupt 0 */
+#define NVIC_IPR0_PRI_1                     ((uint32_t)0x0000FF00)             /*!< Priority of interrupt 1 */
+#define NVIC_IPR0_PRI_2                     ((uint32_t)0x00FF0000)             /*!< Priority of interrupt 2 */
+#define NVIC_IPR0_PRI_3                     ((uint32_t)0xFF000000)             /*!< Priority of interrupt 3 */
+
+/******************  Bit definition for NVIC_PRI1 register  *******************/
+#define NVIC_IPR1_PRI_4                     ((uint32_t)0x000000FF)             /*!< Priority of interrupt 4 */
+#define NVIC_IPR1_PRI_5                     ((uint32_t)0x0000FF00)             /*!< Priority of interrupt 5 */
+#define NVIC_IPR1_PRI_6                     ((uint32_t)0x00FF0000)             /*!< Priority of interrupt 6 */
+#define NVIC_IPR1_PRI_7                     ((uint32_t)0xFF000000)             /*!< Priority of interrupt 7 */
+
+/******************  Bit definition for NVIC_PRI2 register  *******************/
+#define NVIC_IPR2_PRI_8                     ((uint32_t)0x000000FF)             /*!< Priority of interrupt 8 */
+#define NVIC_IPR2_PRI_9                     ((uint32_t)0x0000FF00)             /*!< Priority of interrupt 9 */
+#define NVIC_IPR2_PRI_10                    ((uint32_t)0x00FF0000)             /*!< Priority of interrupt 10 */
+#define NVIC_IPR2_PRI_11                    ((uint32_t)0xFF000000)             /*!< Priority of interrupt 11 */
+
+/******************  Bit definition for NVIC_PRI3 register  *******************/
+#define NVIC_IPR3_PRI_12                    ((uint32_t)0x000000FF)             /*!< Priority of interrupt 12 */
+#define NVIC_IPR3_PRI_13                    ((uint32_t)0x0000FF00)             /*!< Priority of interrupt 13 */
+#define NVIC_IPR3_PRI_14                    ((uint32_t)0x00FF0000)             /*!< Priority of interrupt 14 */
+#define NVIC_IPR3_PRI_15                    ((uint32_t)0xFF000000)             /*!< Priority of interrupt 15 */
+
+/******************  Bit definition for NVIC_PRI4 register  *******************/
+#define NVIC_IPR4_PRI_16                    ((uint32_t)0x000000FF)             /*!< Priority of interrupt 16 */
+#define NVIC_IPR4_PRI_17                    ((uint32_t)0x0000FF00)             /*!< Priority of interrupt 17 */
+#define NVIC_IPR4_PRI_18                    ((uint32_t)0x00FF0000)             /*!< Priority of interrupt 18 */
+#define NVIC_IPR4_PRI_19                    ((uint32_t)0xFF000000)             /*!< Priority of interrupt 19 */
+
+/******************  Bit definition for NVIC_PRI5 register  *******************/
+#define NVIC_IPR5_PRI_20                    ((uint32_t)0x000000FF)             /*!< Priority of interrupt 20 */
+#define NVIC_IPR5_PRI_21                    ((uint32_t)0x0000FF00)             /*!< Priority of interrupt 21 */
+#define NVIC_IPR5_PRI_22                    ((uint32_t)0x00FF0000)             /*!< Priority of interrupt 22 */
+#define NVIC_IPR5_PRI_23                    ((uint32_t)0xFF000000)             /*!< Priority of interrupt 23 */
+
+/******************  Bit definition for NVIC_PRI6 register  *******************/
+#define NVIC_IPR6_PRI_24                    ((uint32_t)0x000000FF)             /*!< Priority of interrupt 24 */
+#define NVIC_IPR6_PRI_25                    ((uint32_t)0x0000FF00)             /*!< Priority of interrupt 25 */
+#define NVIC_IPR6_PRI_26                    ((uint32_t)0x00FF0000)             /*!< Priority of interrupt 26 */
+#define NVIC_IPR6_PRI_27                    ((uint32_t)0xFF000000)             /*!< Priority of interrupt 27 */
+
+/******************  Bit definition for NVIC_PRI7 register  *******************/
+#define NVIC_IPR7_PRI_28                    ((uint32_t)0x000000FF)             /*!< Priority of interrupt 28 */
+#define NVIC_IPR7_PRI_29                    ((uint32_t)0x0000FF00)             /*!< Priority of interrupt 29 */
+#define NVIC_IPR7_PRI_30                    ((uint32_t)0x00FF0000)             /*!< Priority of interrupt 30 */
+#define NVIC_IPR7_PRI_31                    ((uint32_t)0xFF000000)             /*!< Priority of interrupt 31 */
+
+/******************  Bit definition for SCB_CPUID register  *******************/
+#define SCB_CPUID_REVISION                  ((uint32_t)0x0000000F)             /*!< Implementation defined revision number */
+#define SCB_CPUID_PARTNO                    ((uint32_t)0x0000FFF0)             /*!< Number of processor within family */
+#define SCB_CPUID_Constant                  ((uint32_t)0x000F0000)             /*!< Reads as 0x0F */
+#define SCB_CPUID_VARIANT                   ((uint32_t)0x00F00000)             /*!< Implementation defined variant number */
+#define SCB_CPUID_IMPLEMENTER               ((uint32_t)0xFF000000)             /*!< Implementer code. ARM is 0x41 */
+
+/*******************  Bit definition for SCB_ICSR register  *******************/
+#define SCB_ICSR_VECTACTIVE                 ((uint32_t)0x000001FF)             /*!< Active ISR number field */
+#define SCB_ICSR_RETTOBASE                  ((uint32_t)0x00000800)             /*!< All active exceptions minus the IPSR_current_exception yields the empty set */
+#define SCB_ICSR_VECTPENDING                ((uint32_t)0x003FF000)             /*!< Pending ISR number field */
+#define SCB_ICSR_ISRPENDING                 ((uint32_t)0x00400000)             /*!< Interrupt pending flag */
+#define SCB_ICSR_ISRPREEMPT                 ((uint32_t)0x00800000)             /*!< It indicates that a pending interrupt becomes active in the next running cycle */
+#define SCB_ICSR_PENDSTCLR                  ((uint32_t)0x02000000)             /*!< Clear pending SysTick bit */
+#define SCB_ICSR_PENDSTSET                  ((uint32_t)0x04000000)             /*!< Set pending SysTick bit */
+#define SCB_ICSR_PENDSVCLR                  ((uint32_t)0x08000000)             /*!< Clear pending pendSV bit */
+#define SCB_ICSR_PENDSVSET                  ((uint32_t)0x10000000)             /*!< Set pending pendSV bit */
+#define SCB_ICSR_NMIPENDSET                 ((uint32_t)0x80000000)             /*!< Set pending NMI bit */
+
+/*******************  Bit definition for SCB_VTOR register  *******************/
+#define SCB_VTOR_TBLOFF                     ((uint32_t)0x1FFFFF80)             /*!< Vector table base offset field */
+#define SCB_VTOR_TBLBASE                    ((uint32_t)0x20000000)             /*!< Table base in code(0) or RAM(1) */
+
+/*!<*****************  Bit definition for SCB_AIRCR register  *******************/
+#define SCB_AIRCR_VECTRESET                 ((uint32_t)0x00000001)             /*!< System Reset bit */
+#define SCB_AIRCR_VECTCLRACTIVE             ((uint32_t)0x00000002)             /*!< Clear active vector bit */
+#define SCB_AIRCR_SYSRESETREQ               ((uint32_t)0x00000004)             /*!< Requests chip control logic to generate a reset */
+
+#define SCB_AIRCR_PRIGROUP                  ((uint32_t)0x00000700)             /*!< PRIGROUP[2:0] bits (Priority group) */
+#define SCB_AIRCR_PRIGROUP_0                ((uint32_t)0x00000100)             /*!< Bit 0 */
+#define SCB_AIRCR_PRIGROUP_1                ((uint32_t)0x00000200)             /*!< Bit 1 */
+#define SCB_AIRCR_PRIGROUP_2                ((uint32_t)0x00000400)             /*!< Bit 2  */
+
+/* prority group configuration */
+#define SCB_AIRCR_PRIGROUP0                 ((uint32_t)0x00000000)             /*!< Priority group=0 (7 bits of pre-emption priority, 1 bit of subpriority) */
+#define SCB_AIRCR_PRIGROUP1                 ((uint32_t)0x00000100)             /*!< Priority group=1 (6 bits of pre-emption priority, 2 bits of subpriority) */
+#define SCB_AIRCR_PRIGROUP2                 ((uint32_t)0x00000200)             /*!< Priority group=2 (5 bits of pre-emption priority, 3 bits of subpriority) */
+#define SCB_AIRCR_PRIGROUP3                 ((uint32_t)0x00000300)             /*!< Priority group=3 (4 bits of pre-emption priority, 4 bits of subpriority) */
+#define SCB_AIRCR_PRIGROUP4                 ((uint32_t)0x00000400)             /*!< Priority group=4 (3 bits of pre-emption priority, 5 bits of subpriority) */
+#define SCB_AIRCR_PRIGROUP5                 ((uint32_t)0x00000500)             /*!< Priority group=5 (2 bits of pre-emption priority, 6 bits of subpriority) */
+#define SCB_AIRCR_PRIGROUP6                 ((uint32_t)0x00000600)             /*!< Priority group=6 (1 bit of pre-emption priority, 7 bits of subpriority) */
+#define SCB_AIRCR_PRIGROUP7                 ((uint32_t)0x00000700)             /*!< Priority group=7 (no pre-emption priority, 8 bits of subpriority) */
+
+#define SCB_AIRCR_ENDIANESS                 ((uint32_t)0x00008000)             /*!< Data endianness bit */
+#define SCB_AIRCR_VECTKEY                   ((uint32_t)0xFFFF0000)             /*!< Register key (VECTKEY) - Reads as 0xFA05 (VECTKEYSTAT) */
+
+/*******************  Bit definition for SCB_SCR register  ********************/
+#define SCB_SCR_SLEEPONEXIT                 ((uint32_t)0x00000002)             /*!< Sleep on exit bit */
+#define SCB_SCR_SLEEPDEEP                   ((uint32_t)0x00000004)             /*!< Sleep deep bit */
+#define SCB_SCR_SEVONPEND                   ((uint32_t)0x00000010)             /*!< Wake up from WFE */
+
+/********************  Bit definition for SCB_CCR register  *******************/
+#define SCB_CCR_NONBASETHRDENA              ((uint32_t)0x00000001)             /*!< Thread mode can be entered from any level in Handler mode by controlled return value */
+#define SCB_CCR_USERSETMPEND                ((uint32_t)0x00000002)             /*!< Enables user code to write the Software Trigger Interrupt register to trigger (pend) a Main exception */
+#define SCB_CCR_UNALIGN_TRP                 ((uint32_t)0x00000008)             /*!< Trap for unaligned access */
+#define SCB_CCR_DIV_0_TRP                   ((uint32_t)0x00000010)             /*!< Trap on Divide by 0 */
+#define SCB_CCR_BFHFNMIGN                   ((uint32_t)0x00000100)             /*!< Handlers running at priority -1 and -2 */
+#define SCB_CCR_STKALIGN                    ((uint32_t)0x00000200)             /*!< On exception entry, the SP used prior to the exception is adjusted to be 8-byte aligned */
+
+/*******************  Bit definition for SCB_SHPR register ********************/
+#define SCB_SHPR_PRI_N_Pos                  (0U)                               
+#define SCB_SHPR_PRI_N_Msk                  (0xFFU << SCB_SHPR_PRI_N_Pos)      /*!< 0x000000FF */
+#define SCB_SHPR_PRI_N                      SCB_SHPR_PRI_N_Msk                 /*!< Priority of system handler 4,8, and 12. Mem Manage, reserved and Debug Monitor */
+#define SCB_SHPR_PRI_N1_Pos                 (8U)                               
+#define SCB_SHPR_PRI_N1_Msk                 (0xFFU << SCB_SHPR_PRI_N1_Pos)     /*!< 0x0000FF00 */
+#define SCB_SHPR_PRI_N1                     SCB_SHPR_PRI_N1_Msk                /*!< Priority of system handler 5,9, and 13. Bus Fault, reserved and reserved */
+#define SCB_SHPR_PRI_N2_Pos                 (16U)                              
+#define SCB_SHPR_PRI_N2_Msk                 (0xFFU << SCB_SHPR_PRI_N2_Pos)     /*!< 0x00FF0000 */
+#define SCB_SHPR_PRI_N2                     SCB_SHPR_PRI_N2_Msk                /*!< Priority of system handler 6,10, and 14. Usage Fault, reserved and PendSV */
+#define SCB_SHPR_PRI_N3_Pos                 (24U)                              
+#define SCB_SHPR_PRI_N3_Msk                 (0xFFU << SCB_SHPR_PRI_N3_Pos)     /*!< 0xFF000000 */
+#define SCB_SHPR_PRI_N3                     SCB_SHPR_PRI_N3_Msk                /*!< Priority of system handler 7,11, and 15. Reserved, SVCall and SysTick */
+
+/******************  Bit definition for SCB_SHCSR register  *******************/
+#define SCB_SHCSR_MEMFAULTACT               ((uint32_t)0x00000001)             /*!< MemManage is active */
+#define SCB_SHCSR_BUSFAULTACT               ((uint32_t)0x00000002)             /*!< BusFault is active */
+#define SCB_SHCSR_USGFAULTACT               ((uint32_t)0x00000008)             /*!< UsageFault is active */
+#define SCB_SHCSR_SVCALLACT                 ((uint32_t)0x00000080)             /*!< SVCall is active */
+#define SCB_SHCSR_MONITORACT                ((uint32_t)0x00000100)             /*!< Monitor is active */
+#define SCB_SHCSR_PENDSVACT                 ((uint32_t)0x00000400)             /*!< PendSV is active */
+#define SCB_SHCSR_SYSTICKACT                ((uint32_t)0x00000800)             /*!< SysTick is active */
+#define SCB_SHCSR_USGFAULTPENDED            ((uint32_t)0x00001000)             /*!< Usage Fault is pended */
+#define SCB_SHCSR_MEMFAULTPENDED            ((uint32_t)0x00002000)             /*!< MemManage is pended */
+#define SCB_SHCSR_BUSFAULTPENDED            ((uint32_t)0x00004000)             /*!< Bus Fault is pended */
+#define SCB_SHCSR_SVCALLPENDED              ((uint32_t)0x00008000)             /*!< SVCall is pended */
+#define SCB_SHCSR_MEMFAULTENA               ((uint32_t)0x00010000)             /*!< MemManage enable */
+#define SCB_SHCSR_BUSFAULTENA               ((uint32_t)0x00020000)             /*!< Bus Fault enable */
+#define SCB_SHCSR_USGFAULTENA               ((uint32_t)0x00040000)             /*!< UsageFault enable */
+
+/*******************  Bit definition for SCB_CFSR register  *******************/
+/*!< MFSR */
+#define SCB_CFSR_IACCVIOL_Pos               (0U)                               
+#define SCB_CFSR_IACCVIOL_Msk               (0x1U << SCB_CFSR_IACCVIOL_Pos)    /*!< 0x00000001 */
+#define SCB_CFSR_IACCVIOL                   SCB_CFSR_IACCVIOL_Msk              /*!< Instruction access violation */
+#define SCB_CFSR_DACCVIOL_Pos               (1U)                               
+#define SCB_CFSR_DACCVIOL_Msk               (0x1U << SCB_CFSR_DACCVIOL_Pos)    /*!< 0x00000002 */
+#define SCB_CFSR_DACCVIOL                   SCB_CFSR_DACCVIOL_Msk              /*!< Data access violation */
+#define SCB_CFSR_MUNSTKERR_Pos              (3U)                               
+#define SCB_CFSR_MUNSTKERR_Msk              (0x1U << SCB_CFSR_MUNSTKERR_Pos)   /*!< 0x00000008 */
+#define SCB_CFSR_MUNSTKERR                  SCB_CFSR_MUNSTKERR_Msk             /*!< Unstacking error */
+#define SCB_CFSR_MSTKERR_Pos                (4U)                               
+#define SCB_CFSR_MSTKERR_Msk                (0x1U << SCB_CFSR_MSTKERR_Pos)     /*!< 0x00000010 */
+#define SCB_CFSR_MSTKERR                    SCB_CFSR_MSTKERR_Msk               /*!< Stacking error */
+#define SCB_CFSR_MMARVALID_Pos              (7U)                               
+#define SCB_CFSR_MMARVALID_Msk              (0x1U << SCB_CFSR_MMARVALID_Pos)   /*!< 0x00000080 */
+#define SCB_CFSR_MMARVALID                  SCB_CFSR_MMARVALID_Msk             /*!< Memory Manage Address Register address valid flag */
+/*!< BFSR */
+#define SCB_CFSR_IBUSERR_Pos                (8U)                               
+#define SCB_CFSR_IBUSERR_Msk                (0x1U << SCB_CFSR_IBUSERR_Pos)     /*!< 0x00000100 */
+#define SCB_CFSR_IBUSERR                    SCB_CFSR_IBUSERR_Msk               /*!< Instruction bus error flag */
+#define SCB_CFSR_PRECISERR_Pos              (9U)                               
+#define SCB_CFSR_PRECISERR_Msk              (0x1U << SCB_CFSR_PRECISERR_Pos)   /*!< 0x00000200 */
+#define SCB_CFSR_PRECISERR                  SCB_CFSR_PRECISERR_Msk             /*!< Precise data bus error */
+#define SCB_CFSR_IMPRECISERR_Pos            (10U)                              
+#define SCB_CFSR_IMPRECISERR_Msk            (0x1U << SCB_CFSR_IMPRECISERR_Pos) /*!< 0x00000400 */
+#define SCB_CFSR_IMPRECISERR                SCB_CFSR_IMPRECISERR_Msk           /*!< Imprecise data bus error */
+#define SCB_CFSR_UNSTKERR_Pos               (11U)                              
+#define SCB_CFSR_UNSTKERR_Msk               (0x1U << SCB_CFSR_UNSTKERR_Pos)    /*!< 0x00000800 */
+#define SCB_CFSR_UNSTKERR                   SCB_CFSR_UNSTKERR_Msk              /*!< Unstacking error */
+#define SCB_CFSR_STKERR_Pos                 (12U)                              
+#define SCB_CFSR_STKERR_Msk                 (0x1U << SCB_CFSR_STKERR_Pos)      /*!< 0x00001000 */
+#define SCB_CFSR_STKERR                     SCB_CFSR_STKERR_Msk                /*!< Stacking error */
+#define SCB_CFSR_BFARVALID_Pos              (15U)                              
+#define SCB_CFSR_BFARVALID_Msk              (0x1U << SCB_CFSR_BFARVALID_Pos)   /*!< 0x00008000 */
+#define SCB_CFSR_BFARVALID                  SCB_CFSR_BFARVALID_Msk             /*!< Bus Fault Address Register address valid flag */
+/*!< UFSR */
+#define SCB_CFSR_UNDEFINSTR_Pos             (16U)                              
+#define SCB_CFSR_UNDEFINSTR_Msk             (0x1U << SCB_CFSR_UNDEFINSTR_Pos)  /*!< 0x00010000 */
+#define SCB_CFSR_UNDEFINSTR                 SCB_CFSR_UNDEFINSTR_Msk            /*!< The processor attempt to execute an undefined instruction */
+#define SCB_CFSR_INVSTATE_Pos               (17U)                              
+#define SCB_CFSR_INVSTATE_Msk               (0x1U << SCB_CFSR_INVSTATE_Pos)    /*!< 0x00020000 */
+#define SCB_CFSR_INVSTATE                   SCB_CFSR_INVSTATE_Msk              /*!< Invalid combination of EPSR and instruction */
+#define SCB_CFSR_INVPC_Pos                  (18U)                              
+#define SCB_CFSR_INVPC_Msk                  (0x1U << SCB_CFSR_INVPC_Pos)       /*!< 0x00040000 */
+#define SCB_CFSR_INVPC                      SCB_CFSR_INVPC_Msk                 /*!< Attempt to load EXC_RETURN into pc illegally */
+#define SCB_CFSR_NOCP_Pos                   (19U)                              
+#define SCB_CFSR_NOCP_Msk                   (0x1U << SCB_CFSR_NOCP_Pos)        /*!< 0x00080000 */
+#define SCB_CFSR_NOCP                       SCB_CFSR_NOCP_Msk                  /*!< Attempt to use a coprocessor instruction */
+#define SCB_CFSR_UNALIGNED_Pos              (24U)                              
+#define SCB_CFSR_UNALIGNED_Msk              (0x1U << SCB_CFSR_UNALIGNED_Pos)   /*!< 0x01000000 */
+#define SCB_CFSR_UNALIGNED                  SCB_CFSR_UNALIGNED_Msk             /*!< Fault occurs when there is an attempt to make an unaligned memory access */
+#define SCB_CFSR_DIVBYZERO_Pos              (25U)                              
+#define SCB_CFSR_DIVBYZERO_Msk              (0x1U << SCB_CFSR_DIVBYZERO_Pos)   /*!< 0x02000000 */
+#define SCB_CFSR_DIVBYZERO                  SCB_CFSR_DIVBYZERO_Msk             /*!< Fault occurs when SDIV or DIV instruction is used with a divisor of 0 */
+
+/*******************  Bit definition for SCB_HFSR register  *******************/
+#define SCB_HFSR_VECTTBL                    ((uint32_t)0x00000002)             /*!< Fault occurs because of vector table read on exception processing */
+#define SCB_HFSR_FORCED                     ((uint32_t)0x40000000)             /*!< Hard Fault activated when a configurable Fault was received and cannot activate */
+#define SCB_HFSR_DEBUGEVT                   ((uint32_t)0x80000000)             /*!< Fault related to debug */
+
+/*******************  Bit definition for SCB_DFSR register  *******************/
+#define SCB_DFSR_HALTED                     ((uint32_t)0x00000001)             /*!< Halt request flag */
+#define SCB_DFSR_BKPT                       ((uint32_t)0x00000002)             /*!< BKPT flag */
+#define SCB_DFSR_DWTTRAP                    ((uint32_t)0x00000004)             /*!< Data Watchpoint and Trace (DWT) flag */
+#define SCB_DFSR_VCATCH                     ((uint32_t)0x00000008)             /*!< Vector catch flag */
+#define SCB_DFSR_EXTERNAL                   ((uint32_t)0x00000010)             /*!< External debug request flag */
+
+/*******************  Bit definition for SCB_MMFAR register  ******************/
+#define SCB_MMFAR_ADDRESS_Pos               (0U)                               
+#define SCB_MMFAR_ADDRESS_Msk               (0xFFFFFFFFU << SCB_MMFAR_ADDRESS_Pos) /*!< 0xFFFFFFFF */
+#define SCB_MMFAR_ADDRESS                   SCB_MMFAR_ADDRESS_Msk              /*!< Mem Manage fault address field */
+
+/*******************  Bit definition for SCB_BFAR register  *******************/
+#define SCB_BFAR_ADDRESS_Pos                (0U)                               
+#define SCB_BFAR_ADDRESS_Msk                (0xFFFFFFFFU << SCB_BFAR_ADDRESS_Pos) /*!< 0xFFFFFFFF */
+#define SCB_BFAR_ADDRESS                    SCB_BFAR_ADDRESS_Msk               /*!< Bus fault address field */
+
+/*******************  Bit definition for SCB_afsr register  *******************/
+#define SCB_AFSR_IMPDEF_Pos                 (0U)                               
+#define SCB_AFSR_IMPDEF_Msk                 (0xFFFFFFFFU << SCB_AFSR_IMPDEF_Pos) /*!< 0xFFFFFFFF */
+#define SCB_AFSR_IMPDEF                     SCB_AFSR_IMPDEF_Msk                /*!< Implementation defined */
+
+/******************************************************************************/
+/*                                                                            */
+/*                    External Interrupt/Event Controller                     */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for EXTI_IMR register  *******************/
+#define EXTI_IMR_MR0_Pos                    (0U)                               
+#define EXTI_IMR_MR0_Msk                    (0x1U << EXTI_IMR_MR0_Pos)         /*!< 0x00000001 */
+#define EXTI_IMR_MR0                        EXTI_IMR_MR0_Msk                   /*!< Interrupt Mask on line 0 */
+#define EXTI_IMR_MR1_Pos                    (1U)                               
+#define EXTI_IMR_MR1_Msk                    (0x1U << EXTI_IMR_MR1_Pos)         /*!< 0x00000002 */
+#define EXTI_IMR_MR1                        EXTI_IMR_MR1_Msk                   /*!< Interrupt Mask on line 1 */
+#define EXTI_IMR_MR2_Pos                    (2U)                               
+#define EXTI_IMR_MR2_Msk                    (0x1U << EXTI_IMR_MR2_Pos)         /*!< 0x00000004 */
+#define EXTI_IMR_MR2                        EXTI_IMR_MR2_Msk                   /*!< Interrupt Mask on line 2 */
+#define EXTI_IMR_MR3_Pos                    (3U)                               
+#define EXTI_IMR_MR3_Msk                    (0x1U << EXTI_IMR_MR3_Pos)         /*!< 0x00000008 */
+#define EXTI_IMR_MR3                        EXTI_IMR_MR3_Msk                   /*!< Interrupt Mask on line 3 */
+#define EXTI_IMR_MR4_Pos                    (4U)                               
+#define EXTI_IMR_MR4_Msk                    (0x1U << EXTI_IMR_MR4_Pos)         /*!< 0x00000010 */
+#define EXTI_IMR_MR4                        EXTI_IMR_MR4_Msk                   /*!< Interrupt Mask on line 4 */
+#define EXTI_IMR_MR5_Pos                    (5U)                               
+#define EXTI_IMR_MR5_Msk                    (0x1U << EXTI_IMR_MR5_Pos)         /*!< 0x00000020 */
+#define EXTI_IMR_MR5                        EXTI_IMR_MR5_Msk                   /*!< Interrupt Mask on line 5 */
+#define EXTI_IMR_MR6_Pos                    (6U)                               
+#define EXTI_IMR_MR6_Msk                    (0x1U << EXTI_IMR_MR6_Pos)         /*!< 0x00000040 */
+#define EXTI_IMR_MR6                        EXTI_IMR_MR6_Msk                   /*!< Interrupt Mask on line 6 */
+#define EXTI_IMR_MR7_Pos                    (7U)                               
+#define EXTI_IMR_MR7_Msk                    (0x1U << EXTI_IMR_MR7_Pos)         /*!< 0x00000080 */
+#define EXTI_IMR_MR7                        EXTI_IMR_MR7_Msk                   /*!< Interrupt Mask on line 7 */
+#define EXTI_IMR_MR8_Pos                    (8U)                               
+#define EXTI_IMR_MR8_Msk                    (0x1U << EXTI_IMR_MR8_Pos)         /*!< 0x00000100 */
+#define EXTI_IMR_MR8                        EXTI_IMR_MR8_Msk                   /*!< Interrupt Mask on line 8 */
+#define EXTI_IMR_MR9_Pos                    (9U)                               
+#define EXTI_IMR_MR9_Msk                    (0x1U << EXTI_IMR_MR9_Pos)         /*!< 0x00000200 */
+#define EXTI_IMR_MR9                        EXTI_IMR_MR9_Msk                   /*!< Interrupt Mask on line 9 */
+#define EXTI_IMR_MR10_Pos                   (10U)                              
+#define EXTI_IMR_MR10_Msk                   (0x1U << EXTI_IMR_MR10_Pos)        /*!< 0x00000400 */
+#define EXTI_IMR_MR10                       EXTI_IMR_MR10_Msk                  /*!< Interrupt Mask on line 10 */
+#define EXTI_IMR_MR11_Pos                   (11U)                              
+#define EXTI_IMR_MR11_Msk                   (0x1U << EXTI_IMR_MR11_Pos)        /*!< 0x00000800 */
+#define EXTI_IMR_MR11                       EXTI_IMR_MR11_Msk                  /*!< Interrupt Mask on line 11 */
+#define EXTI_IMR_MR12_Pos                   (12U)                              
+#define EXTI_IMR_MR12_Msk                   (0x1U << EXTI_IMR_MR12_Pos)        /*!< 0x00001000 */
+#define EXTI_IMR_MR12                       EXTI_IMR_MR12_Msk                  /*!< Interrupt Mask on line 12 */
+#define EXTI_IMR_MR13_Pos                   (13U)                              
+#define EXTI_IMR_MR13_Msk                   (0x1U << EXTI_IMR_MR13_Pos)        /*!< 0x00002000 */
+#define EXTI_IMR_MR13                       EXTI_IMR_MR13_Msk                  /*!< Interrupt Mask on line 13 */
+#define EXTI_IMR_MR14_Pos                   (14U)                              
+#define EXTI_IMR_MR14_Msk                   (0x1U << EXTI_IMR_MR14_Pos)        /*!< 0x00004000 */
+#define EXTI_IMR_MR14                       EXTI_IMR_MR14_Msk                  /*!< Interrupt Mask on line 14 */
+#define EXTI_IMR_MR15_Pos                   (15U)                              
+#define EXTI_IMR_MR15_Msk                   (0x1U << EXTI_IMR_MR15_Pos)        /*!< 0x00008000 */
+#define EXTI_IMR_MR15                       EXTI_IMR_MR15_Msk                  /*!< Interrupt Mask on line 15 */
+#define EXTI_IMR_MR16_Pos                   (16U)                              
+#define EXTI_IMR_MR16_Msk                   (0x1U << EXTI_IMR_MR16_Pos)        /*!< 0x00010000 */
+#define EXTI_IMR_MR16                       EXTI_IMR_MR16_Msk                  /*!< Interrupt Mask on line 16 */
+#define EXTI_IMR_MR17_Pos                   (17U)                              
+#define EXTI_IMR_MR17_Msk                   (0x1U << EXTI_IMR_MR17_Pos)        /*!< 0x00020000 */
+#define EXTI_IMR_MR17                       EXTI_IMR_MR17_Msk                  /*!< Interrupt Mask on line 17 */
+#define EXTI_IMR_MR18_Pos                   (18U)                              
+#define EXTI_IMR_MR18_Msk                   (0x1U << EXTI_IMR_MR18_Pos)        /*!< 0x00040000 */
+#define EXTI_IMR_MR18                       EXTI_IMR_MR18_Msk                  /*!< Interrupt Mask on line 18 */
+#define EXTI_IMR_MR19_Pos                   (19U)                              
+#define EXTI_IMR_MR19_Msk                   (0x1U << EXTI_IMR_MR19_Pos)        /*!< 0x00080000 */
+#define EXTI_IMR_MR19                       EXTI_IMR_MR19_Msk                  /*!< Interrupt Mask on line 19 */
+
+/* References Defines */
+#define  EXTI_IMR_IM0 EXTI_IMR_MR0
+#define  EXTI_IMR_IM1 EXTI_IMR_MR1
+#define  EXTI_IMR_IM2 EXTI_IMR_MR2
+#define  EXTI_IMR_IM3 EXTI_IMR_MR3
+#define  EXTI_IMR_IM4 EXTI_IMR_MR4
+#define  EXTI_IMR_IM5 EXTI_IMR_MR5
+#define  EXTI_IMR_IM6 EXTI_IMR_MR6
+#define  EXTI_IMR_IM7 EXTI_IMR_MR7
+#define  EXTI_IMR_IM8 EXTI_IMR_MR8
+#define  EXTI_IMR_IM9 EXTI_IMR_MR9
+#define  EXTI_IMR_IM10 EXTI_IMR_MR10
+#define  EXTI_IMR_IM11 EXTI_IMR_MR11
+#define  EXTI_IMR_IM12 EXTI_IMR_MR12
+#define  EXTI_IMR_IM13 EXTI_IMR_MR13
+#define  EXTI_IMR_IM14 EXTI_IMR_MR14
+#define  EXTI_IMR_IM15 EXTI_IMR_MR15
+#define  EXTI_IMR_IM16 EXTI_IMR_MR16
+#define  EXTI_IMR_IM17 EXTI_IMR_MR17
+#define  EXTI_IMR_IM18 EXTI_IMR_MR18
+#define  EXTI_IMR_IM19 EXTI_IMR_MR19
+
+/*******************  Bit definition for EXTI_EMR register  *******************/
+#define EXTI_EMR_MR0_Pos                    (0U)                               
+#define EXTI_EMR_MR0_Msk                    (0x1U << EXTI_EMR_MR0_Pos)         /*!< 0x00000001 */
+#define EXTI_EMR_MR0                        EXTI_EMR_MR0_Msk                   /*!< Event Mask on line 0 */
+#define EXTI_EMR_MR1_Pos                    (1U)                               
+#define EXTI_EMR_MR1_Msk                    (0x1U << EXTI_EMR_MR1_Pos)         /*!< 0x00000002 */
+#define EXTI_EMR_MR1                        EXTI_EMR_MR1_Msk                   /*!< Event Mask on line 1 */
+#define EXTI_EMR_MR2_Pos                    (2U)                               
+#define EXTI_EMR_MR2_Msk                    (0x1U << EXTI_EMR_MR2_Pos)         /*!< 0x00000004 */
+#define EXTI_EMR_MR2                        EXTI_EMR_MR2_Msk                   /*!< Event Mask on line 2 */
+#define EXTI_EMR_MR3_Pos                    (3U)                               
+#define EXTI_EMR_MR3_Msk                    (0x1U << EXTI_EMR_MR3_Pos)         /*!< 0x00000008 */
+#define EXTI_EMR_MR3                        EXTI_EMR_MR3_Msk                   /*!< Event Mask on line 3 */
+#define EXTI_EMR_MR4_Pos                    (4U)                               
+#define EXTI_EMR_MR4_Msk                    (0x1U << EXTI_EMR_MR4_Pos)         /*!< 0x00000010 */
+#define EXTI_EMR_MR4                        EXTI_EMR_MR4_Msk                   /*!< Event Mask on line 4 */
+#define EXTI_EMR_MR5_Pos                    (5U)                               
+#define EXTI_EMR_MR5_Msk                    (0x1U << EXTI_EMR_MR5_Pos)         /*!< 0x00000020 */
+#define EXTI_EMR_MR5                        EXTI_EMR_MR5_Msk                   /*!< Event Mask on line 5 */
+#define EXTI_EMR_MR6_Pos                    (6U)                               
+#define EXTI_EMR_MR6_Msk                    (0x1U << EXTI_EMR_MR6_Pos)         /*!< 0x00000040 */
+#define EXTI_EMR_MR6                        EXTI_EMR_MR6_Msk                   /*!< Event Mask on line 6 */
+#define EXTI_EMR_MR7_Pos                    (7U)                               
+#define EXTI_EMR_MR7_Msk                    (0x1U << EXTI_EMR_MR7_Pos)         /*!< 0x00000080 */
+#define EXTI_EMR_MR7                        EXTI_EMR_MR7_Msk                   /*!< Event Mask on line 7 */
+#define EXTI_EMR_MR8_Pos                    (8U)                               
+#define EXTI_EMR_MR8_Msk                    (0x1U << EXTI_EMR_MR8_Pos)         /*!< 0x00000100 */
+#define EXTI_EMR_MR8                        EXTI_EMR_MR8_Msk                   /*!< Event Mask on line 8 */
+#define EXTI_EMR_MR9_Pos                    (9U)                               
+#define EXTI_EMR_MR9_Msk                    (0x1U << EXTI_EMR_MR9_Pos)         /*!< 0x00000200 */
+#define EXTI_EMR_MR9                        EXTI_EMR_MR9_Msk                   /*!< Event Mask on line 9 */
+#define EXTI_EMR_MR10_Pos                   (10U)                              
+#define EXTI_EMR_MR10_Msk                   (0x1U << EXTI_EMR_MR10_Pos)        /*!< 0x00000400 */
+#define EXTI_EMR_MR10                       EXTI_EMR_MR10_Msk                  /*!< Event Mask on line 10 */
+#define EXTI_EMR_MR11_Pos                   (11U)                              
+#define EXTI_EMR_MR11_Msk                   (0x1U << EXTI_EMR_MR11_Pos)        /*!< 0x00000800 */
+#define EXTI_EMR_MR11                       EXTI_EMR_MR11_Msk                  /*!< Event Mask on line 11 */
+#define EXTI_EMR_MR12_Pos                   (12U)                              
+#define EXTI_EMR_MR12_Msk                   (0x1U << EXTI_EMR_MR12_Pos)        /*!< 0x00001000 */
+#define EXTI_EMR_MR12                       EXTI_EMR_MR12_Msk                  /*!< Event Mask on line 12 */
+#define EXTI_EMR_MR13_Pos                   (13U)                              
+#define EXTI_EMR_MR13_Msk                   (0x1U << EXTI_EMR_MR13_Pos)        /*!< 0x00002000 */
+#define EXTI_EMR_MR13                       EXTI_EMR_MR13_Msk                  /*!< Event Mask on line 13 */
+#define EXTI_EMR_MR14_Pos                   (14U)                              
+#define EXTI_EMR_MR14_Msk                   (0x1U << EXTI_EMR_MR14_Pos)        /*!< 0x00004000 */
+#define EXTI_EMR_MR14                       EXTI_EMR_MR14_Msk                  /*!< Event Mask on line 14 */
+#define EXTI_EMR_MR15_Pos                   (15U)                              
+#define EXTI_EMR_MR15_Msk                   (0x1U << EXTI_EMR_MR15_Pos)        /*!< 0x00008000 */
+#define EXTI_EMR_MR15                       EXTI_EMR_MR15_Msk                  /*!< Event Mask on line 15 */
+#define EXTI_EMR_MR16_Pos                   (16U)                              
+#define EXTI_EMR_MR16_Msk                   (0x1U << EXTI_EMR_MR16_Pos)        /*!< 0x00010000 */
+#define EXTI_EMR_MR16                       EXTI_EMR_MR16_Msk                  /*!< Event Mask on line 16 */
+#define EXTI_EMR_MR17_Pos                   (17U)                              
+#define EXTI_EMR_MR17_Msk                   (0x1U << EXTI_EMR_MR17_Pos)        /*!< 0x00020000 */
+#define EXTI_EMR_MR17                       EXTI_EMR_MR17_Msk                  /*!< Event Mask on line 17 */
+#define EXTI_EMR_MR18_Pos                   (18U)                              
+#define EXTI_EMR_MR18_Msk                   (0x1U << EXTI_EMR_MR18_Pos)        /*!< 0x00040000 */
+#define EXTI_EMR_MR18                       EXTI_EMR_MR18_Msk                  /*!< Event Mask on line 18 */
+#define EXTI_EMR_MR19_Pos                   (19U)                              
+#define EXTI_EMR_MR19_Msk                   (0x1U << EXTI_EMR_MR19_Pos)        /*!< 0x00080000 */
+#define EXTI_EMR_MR19                       EXTI_EMR_MR19_Msk                  /*!< Event Mask on line 19 */
+
+/* References Defines */
+#define  EXTI_EMR_EM0 EXTI_EMR_MR0
+#define  EXTI_EMR_EM1 EXTI_EMR_MR1
+#define  EXTI_EMR_EM2 EXTI_EMR_MR2
+#define  EXTI_EMR_EM3 EXTI_EMR_MR3
+#define  EXTI_EMR_EM4 EXTI_EMR_MR4
+#define  EXTI_EMR_EM5 EXTI_EMR_MR5
+#define  EXTI_EMR_EM6 EXTI_EMR_MR6
+#define  EXTI_EMR_EM7 EXTI_EMR_MR7
+#define  EXTI_EMR_EM8 EXTI_EMR_MR8
+#define  EXTI_EMR_EM9 EXTI_EMR_MR9
+#define  EXTI_EMR_EM10 EXTI_EMR_MR10
+#define  EXTI_EMR_EM11 EXTI_EMR_MR11
+#define  EXTI_EMR_EM12 EXTI_EMR_MR12
+#define  EXTI_EMR_EM13 EXTI_EMR_MR13
+#define  EXTI_EMR_EM14 EXTI_EMR_MR14
+#define  EXTI_EMR_EM15 EXTI_EMR_MR15
+#define  EXTI_EMR_EM16 EXTI_EMR_MR16
+#define  EXTI_EMR_EM17 EXTI_EMR_MR17
+#define  EXTI_EMR_EM18 EXTI_EMR_MR18
+#define  EXTI_EMR_EM19 EXTI_EMR_MR19
+
+/******************  Bit definition for EXTI_RTSR register  *******************/
+#define EXTI_RTSR_TR0_Pos                   (0U)                               
+#define EXTI_RTSR_TR0_Msk                   (0x1U << EXTI_RTSR_TR0_Pos)        /*!< 0x00000001 */
+#define EXTI_RTSR_TR0                       EXTI_RTSR_TR0_Msk                  /*!< Rising trigger event configuration bit of line 0 */
+#define EXTI_RTSR_TR1_Pos                   (1U)                               
+#define EXTI_RTSR_TR1_Msk                   (0x1U << EXTI_RTSR_TR1_Pos)        /*!< 0x00000002 */
+#define EXTI_RTSR_TR1                       EXTI_RTSR_TR1_Msk                  /*!< Rising trigger event configuration bit of line 1 */
+#define EXTI_RTSR_TR2_Pos                   (2U)                               
+#define EXTI_RTSR_TR2_Msk                   (0x1U << EXTI_RTSR_TR2_Pos)        /*!< 0x00000004 */
+#define EXTI_RTSR_TR2                       EXTI_RTSR_TR2_Msk                  /*!< Rising trigger event configuration bit of line 2 */
+#define EXTI_RTSR_TR3_Pos                   (3U)                               
+#define EXTI_RTSR_TR3_Msk                   (0x1U << EXTI_RTSR_TR3_Pos)        /*!< 0x00000008 */
+#define EXTI_RTSR_TR3                       EXTI_RTSR_TR3_Msk                  /*!< Rising trigger event configuration bit of line 3 */
+#define EXTI_RTSR_TR4_Pos                   (4U)                               
+#define EXTI_RTSR_TR4_Msk                   (0x1U << EXTI_RTSR_TR4_Pos)        /*!< 0x00000010 */
+#define EXTI_RTSR_TR4                       EXTI_RTSR_TR4_Msk                  /*!< Rising trigger event configuration bit of line 4 */
+#define EXTI_RTSR_TR5_Pos                   (5U)                               
+#define EXTI_RTSR_TR5_Msk                   (0x1U << EXTI_RTSR_TR5_Pos)        /*!< 0x00000020 */
+#define EXTI_RTSR_TR5                       EXTI_RTSR_TR5_Msk                  /*!< Rising trigger event configuration bit of line 5 */
+#define EXTI_RTSR_TR6_Pos                   (6U)                               
+#define EXTI_RTSR_TR6_Msk                   (0x1U << EXTI_RTSR_TR6_Pos)        /*!< 0x00000040 */
+#define EXTI_RTSR_TR6                       EXTI_RTSR_TR6_Msk                  /*!< Rising trigger event configuration bit of line 6 */
+#define EXTI_RTSR_TR7_Pos                   (7U)                               
+#define EXTI_RTSR_TR7_Msk                   (0x1U << EXTI_RTSR_TR7_Pos)        /*!< 0x00000080 */
+#define EXTI_RTSR_TR7                       EXTI_RTSR_TR7_Msk                  /*!< Rising trigger event configuration bit of line 7 */
+#define EXTI_RTSR_TR8_Pos                   (8U)                               
+#define EXTI_RTSR_TR8_Msk                   (0x1U << EXTI_RTSR_TR8_Pos)        /*!< 0x00000100 */
+#define EXTI_RTSR_TR8                       EXTI_RTSR_TR8_Msk                  /*!< Rising trigger event configuration bit of line 8 */
+#define EXTI_RTSR_TR9_Pos                   (9U)                               
+#define EXTI_RTSR_TR9_Msk                   (0x1U << EXTI_RTSR_TR9_Pos)        /*!< 0x00000200 */
+#define EXTI_RTSR_TR9                       EXTI_RTSR_TR9_Msk                  /*!< Rising trigger event configuration bit of line 9 */
+#define EXTI_RTSR_TR10_Pos                  (10U)                              
+#define EXTI_RTSR_TR10_Msk                  (0x1U << EXTI_RTSR_TR10_Pos)       /*!< 0x00000400 */
+#define EXTI_RTSR_TR10                      EXTI_RTSR_TR10_Msk                 /*!< Rising trigger event configuration bit of line 10 */
+#define EXTI_RTSR_TR11_Pos                  (11U)                              
+#define EXTI_RTSR_TR11_Msk                  (0x1U << EXTI_RTSR_TR11_Pos)       /*!< 0x00000800 */
+#define EXTI_RTSR_TR11                      EXTI_RTSR_TR11_Msk                 /*!< Rising trigger event configuration bit of line 11 */
+#define EXTI_RTSR_TR12_Pos                  (12U)                              
+#define EXTI_RTSR_TR12_Msk                  (0x1U << EXTI_RTSR_TR12_Pos)       /*!< 0x00001000 */
+#define EXTI_RTSR_TR12                      EXTI_RTSR_TR12_Msk                 /*!< Rising trigger event configuration bit of line 12 */
+#define EXTI_RTSR_TR13_Pos                  (13U)                              
+#define EXTI_RTSR_TR13_Msk                  (0x1U << EXTI_RTSR_TR13_Pos)       /*!< 0x00002000 */
+#define EXTI_RTSR_TR13                      EXTI_RTSR_TR13_Msk                 /*!< Rising trigger event configuration bit of line 13 */
+#define EXTI_RTSR_TR14_Pos                  (14U)                              
+#define EXTI_RTSR_TR14_Msk                  (0x1U << EXTI_RTSR_TR14_Pos)       /*!< 0x00004000 */
+#define EXTI_RTSR_TR14                      EXTI_RTSR_TR14_Msk                 /*!< Rising trigger event configuration bit of line 14 */
+#define EXTI_RTSR_TR15_Pos                  (15U)                              
+#define EXTI_RTSR_TR15_Msk                  (0x1U << EXTI_RTSR_TR15_Pos)       /*!< 0x00008000 */
+#define EXTI_RTSR_TR15                      EXTI_RTSR_TR15_Msk                 /*!< Rising trigger event configuration bit of line 15 */
+#define EXTI_RTSR_TR16_Pos                  (16U)                              
+#define EXTI_RTSR_TR16_Msk                  (0x1U << EXTI_RTSR_TR16_Pos)       /*!< 0x00010000 */
+#define EXTI_RTSR_TR16                      EXTI_RTSR_TR16_Msk                 /*!< Rising trigger event configuration bit of line 16 */
+#define EXTI_RTSR_TR17_Pos                  (17U)                              
+#define EXTI_RTSR_TR17_Msk                  (0x1U << EXTI_RTSR_TR17_Pos)       /*!< 0x00020000 */
+#define EXTI_RTSR_TR17                      EXTI_RTSR_TR17_Msk                 /*!< Rising trigger event configuration bit of line 17 */
+#define EXTI_RTSR_TR18_Pos                  (18U)                              
+#define EXTI_RTSR_TR18_Msk                  (0x1U << EXTI_RTSR_TR18_Pos)       /*!< 0x00040000 */
+#define EXTI_RTSR_TR18                      EXTI_RTSR_TR18_Msk                 /*!< Rising trigger event configuration bit of line 18 */
+#define EXTI_RTSR_TR19_Pos                  (19U)                              
+#define EXTI_RTSR_TR19_Msk                  (0x1U << EXTI_RTSR_TR19_Pos)       /*!< 0x00080000 */
+#define EXTI_RTSR_TR19                      EXTI_RTSR_TR19_Msk                 /*!< Rising trigger event configuration bit of line 19 */
+
+/* References Defines */
+#define  EXTI_RTSR_RT0 EXTI_RTSR_TR0
+#define  EXTI_RTSR_RT1 EXTI_RTSR_TR1
+#define  EXTI_RTSR_RT2 EXTI_RTSR_TR2
+#define  EXTI_RTSR_RT3 EXTI_RTSR_TR3
+#define  EXTI_RTSR_RT4 EXTI_RTSR_TR4
+#define  EXTI_RTSR_RT5 EXTI_RTSR_TR5
+#define  EXTI_RTSR_RT6 EXTI_RTSR_TR6
+#define  EXTI_RTSR_RT7 EXTI_RTSR_TR7
+#define  EXTI_RTSR_RT8 EXTI_RTSR_TR8
+#define  EXTI_RTSR_RT9 EXTI_RTSR_TR9
+#define  EXTI_RTSR_RT10 EXTI_RTSR_TR10
+#define  EXTI_RTSR_RT11 EXTI_RTSR_TR11
+#define  EXTI_RTSR_RT12 EXTI_RTSR_TR12
+#define  EXTI_RTSR_RT13 EXTI_RTSR_TR13
+#define  EXTI_RTSR_RT14 EXTI_RTSR_TR14
+#define  EXTI_RTSR_RT15 EXTI_RTSR_TR15
+#define  EXTI_RTSR_RT16 EXTI_RTSR_TR16
+#define  EXTI_RTSR_RT17 EXTI_RTSR_TR17
+#define  EXTI_RTSR_RT18 EXTI_RTSR_TR18
+#define  EXTI_RTSR_RT19 EXTI_RTSR_TR19
+
+/******************  Bit definition for EXTI_FTSR register  *******************/
+#define EXTI_FTSR_TR0_Pos                   (0U)                               
+#define EXTI_FTSR_TR0_Msk                   (0x1U << EXTI_FTSR_TR0_Pos)        /*!< 0x00000001 */
+#define EXTI_FTSR_TR0                       EXTI_FTSR_TR0_Msk                  /*!< Falling trigger event configuration bit of line 0 */
+#define EXTI_FTSR_TR1_Pos                   (1U)                               
+#define EXTI_FTSR_TR1_Msk                   (0x1U << EXTI_FTSR_TR1_Pos)        /*!< 0x00000002 */
+#define EXTI_FTSR_TR1                       EXTI_FTSR_TR1_Msk                  /*!< Falling trigger event configuration bit of line 1 */
+#define EXTI_FTSR_TR2_Pos                   (2U)                               
+#define EXTI_FTSR_TR2_Msk                   (0x1U << EXTI_FTSR_TR2_Pos)        /*!< 0x00000004 */
+#define EXTI_FTSR_TR2                       EXTI_FTSR_TR2_Msk                  /*!< Falling trigger event configuration bit of line 2 */
+#define EXTI_FTSR_TR3_Pos                   (3U)                               
+#define EXTI_FTSR_TR3_Msk                   (0x1U << EXTI_FTSR_TR3_Pos)        /*!< 0x00000008 */
+#define EXTI_FTSR_TR3                       EXTI_FTSR_TR3_Msk                  /*!< Falling trigger event configuration bit of line 3 */
+#define EXTI_FTSR_TR4_Pos                   (4U)                               
+#define EXTI_FTSR_TR4_Msk                   (0x1U << EXTI_FTSR_TR4_Pos)        /*!< 0x00000010 */
+#define EXTI_FTSR_TR4                       EXTI_FTSR_TR4_Msk                  /*!< Falling trigger event configuration bit of line 4 */
+#define EXTI_FTSR_TR5_Pos                   (5U)                               
+#define EXTI_FTSR_TR5_Msk                   (0x1U << EXTI_FTSR_TR5_Pos)        /*!< 0x00000020 */
+#define EXTI_FTSR_TR5                       EXTI_FTSR_TR5_Msk                  /*!< Falling trigger event configuration bit of line 5 */
+#define EXTI_FTSR_TR6_Pos                   (6U)                               
+#define EXTI_FTSR_TR6_Msk                   (0x1U << EXTI_FTSR_TR6_Pos)        /*!< 0x00000040 */
+#define EXTI_FTSR_TR6                       EXTI_FTSR_TR6_Msk                  /*!< Falling trigger event configuration bit of line 6 */
+#define EXTI_FTSR_TR7_Pos                   (7U)                               
+#define EXTI_FTSR_TR7_Msk                   (0x1U << EXTI_FTSR_TR7_Pos)        /*!< 0x00000080 */
+#define EXTI_FTSR_TR7                       EXTI_FTSR_TR7_Msk                  /*!< Falling trigger event configuration bit of line 7 */
+#define EXTI_FTSR_TR8_Pos                   (8U)                               
+#define EXTI_FTSR_TR8_Msk                   (0x1U << EXTI_FTSR_TR8_Pos)        /*!< 0x00000100 */
+#define EXTI_FTSR_TR8                       EXTI_FTSR_TR8_Msk                  /*!< Falling trigger event configuration bit of line 8 */
+#define EXTI_FTSR_TR9_Pos                   (9U)                               
+#define EXTI_FTSR_TR9_Msk                   (0x1U << EXTI_FTSR_TR9_Pos)        /*!< 0x00000200 */
+#define EXTI_FTSR_TR9                       EXTI_FTSR_TR9_Msk                  /*!< Falling trigger event configuration bit of line 9 */
+#define EXTI_FTSR_TR10_Pos                  (10U)                              
+#define EXTI_FTSR_TR10_Msk                  (0x1U << EXTI_FTSR_TR10_Pos)       /*!< 0x00000400 */
+#define EXTI_FTSR_TR10                      EXTI_FTSR_TR10_Msk                 /*!< Falling trigger event configuration bit of line 10 */
+#define EXTI_FTSR_TR11_Pos                  (11U)                              
+#define EXTI_FTSR_TR11_Msk                  (0x1U << EXTI_FTSR_TR11_Pos)       /*!< 0x00000800 */
+#define EXTI_FTSR_TR11                      EXTI_FTSR_TR11_Msk                 /*!< Falling trigger event configuration bit of line 11 */
+#define EXTI_FTSR_TR12_Pos                  (12U)                              
+#define EXTI_FTSR_TR12_Msk                  (0x1U << EXTI_FTSR_TR12_Pos)       /*!< 0x00001000 */
+#define EXTI_FTSR_TR12                      EXTI_FTSR_TR12_Msk                 /*!< Falling trigger event configuration bit of line 12 */
+#define EXTI_FTSR_TR13_Pos                  (13U)                              
+#define EXTI_FTSR_TR13_Msk                  (0x1U << EXTI_FTSR_TR13_Pos)       /*!< 0x00002000 */
+#define EXTI_FTSR_TR13                      EXTI_FTSR_TR13_Msk                 /*!< Falling trigger event configuration bit of line 13 */
+#define EXTI_FTSR_TR14_Pos                  (14U)                              
+#define EXTI_FTSR_TR14_Msk                  (0x1U << EXTI_FTSR_TR14_Pos)       /*!< 0x00004000 */
+#define EXTI_FTSR_TR14                      EXTI_FTSR_TR14_Msk                 /*!< Falling trigger event configuration bit of line 14 */
+#define EXTI_FTSR_TR15_Pos                  (15U)                              
+#define EXTI_FTSR_TR15_Msk                  (0x1U << EXTI_FTSR_TR15_Pos)       /*!< 0x00008000 */
+#define EXTI_FTSR_TR15                      EXTI_FTSR_TR15_Msk                 /*!< Falling trigger event configuration bit of line 15 */
+#define EXTI_FTSR_TR16_Pos                  (16U)                              
+#define EXTI_FTSR_TR16_Msk                  (0x1U << EXTI_FTSR_TR16_Pos)       /*!< 0x00010000 */
+#define EXTI_FTSR_TR16                      EXTI_FTSR_TR16_Msk                 /*!< Falling trigger event configuration bit of line 16 */
+#define EXTI_FTSR_TR17_Pos                  (17U)                              
+#define EXTI_FTSR_TR17_Msk                  (0x1U << EXTI_FTSR_TR17_Pos)       /*!< 0x00020000 */
+#define EXTI_FTSR_TR17                      EXTI_FTSR_TR17_Msk                 /*!< Falling trigger event configuration bit of line 17 */
+#define EXTI_FTSR_TR18_Pos                  (18U)                              
+#define EXTI_FTSR_TR18_Msk                  (0x1U << EXTI_FTSR_TR18_Pos)       /*!< 0x00040000 */
+#define EXTI_FTSR_TR18                      EXTI_FTSR_TR18_Msk                 /*!< Falling trigger event configuration bit of line 18 */
+#define EXTI_FTSR_TR19_Pos                  (19U)                              
+#define EXTI_FTSR_TR19_Msk                  (0x1U << EXTI_FTSR_TR19_Pos)       /*!< 0x00080000 */
+#define EXTI_FTSR_TR19                      EXTI_FTSR_TR19_Msk                 /*!< Falling trigger event configuration bit of line 19 */
+
+/* References Defines */
+#define  EXTI_FTSR_FT0 EXTI_FTSR_TR0
+#define  EXTI_FTSR_FT1 EXTI_FTSR_TR1
+#define  EXTI_FTSR_FT2 EXTI_FTSR_TR2
+#define  EXTI_FTSR_FT3 EXTI_FTSR_TR3
+#define  EXTI_FTSR_FT4 EXTI_FTSR_TR4
+#define  EXTI_FTSR_FT5 EXTI_FTSR_TR5
+#define  EXTI_FTSR_FT6 EXTI_FTSR_TR6
+#define  EXTI_FTSR_FT7 EXTI_FTSR_TR7
+#define  EXTI_FTSR_FT8 EXTI_FTSR_TR8
+#define  EXTI_FTSR_FT9 EXTI_FTSR_TR9
+#define  EXTI_FTSR_FT10 EXTI_FTSR_TR10
+#define  EXTI_FTSR_FT11 EXTI_FTSR_TR11
+#define  EXTI_FTSR_FT12 EXTI_FTSR_TR12
+#define  EXTI_FTSR_FT13 EXTI_FTSR_TR13
+#define  EXTI_FTSR_FT14 EXTI_FTSR_TR14
+#define  EXTI_FTSR_FT15 EXTI_FTSR_TR15
+#define  EXTI_FTSR_FT16 EXTI_FTSR_TR16
+#define  EXTI_FTSR_FT17 EXTI_FTSR_TR17
+#define  EXTI_FTSR_FT18 EXTI_FTSR_TR18
+#define  EXTI_FTSR_FT19 EXTI_FTSR_TR19
+
+/******************  Bit definition for EXTI_SWIER register  ******************/
+#define EXTI_SWIER_SWIER0_Pos               (0U)                               
+#define EXTI_SWIER_SWIER0_Msk               (0x1U << EXTI_SWIER_SWIER0_Pos)    /*!< 0x00000001 */
+#define EXTI_SWIER_SWIER0                   EXTI_SWIER_SWIER0_Msk              /*!< Software Interrupt on line 0 */
+#define EXTI_SWIER_SWIER1_Pos               (1U)                               
+#define EXTI_SWIER_SWIER1_Msk               (0x1U << EXTI_SWIER_SWIER1_Pos)    /*!< 0x00000002 */
+#define EXTI_SWIER_SWIER1                   EXTI_SWIER_SWIER1_Msk              /*!< Software Interrupt on line 1 */
+#define EXTI_SWIER_SWIER2_Pos               (2U)                               
+#define EXTI_SWIER_SWIER2_Msk               (0x1U << EXTI_SWIER_SWIER2_Pos)    /*!< 0x00000004 */
+#define EXTI_SWIER_SWIER2                   EXTI_SWIER_SWIER2_Msk              /*!< Software Interrupt on line 2 */
+#define EXTI_SWIER_SWIER3_Pos               (3U)                               
+#define EXTI_SWIER_SWIER3_Msk               (0x1U << EXTI_SWIER_SWIER3_Pos)    /*!< 0x00000008 */
+#define EXTI_SWIER_SWIER3                   EXTI_SWIER_SWIER3_Msk              /*!< Software Interrupt on line 3 */
+#define EXTI_SWIER_SWIER4_Pos               (4U)                               
+#define EXTI_SWIER_SWIER4_Msk               (0x1U << EXTI_SWIER_SWIER4_Pos)    /*!< 0x00000010 */
+#define EXTI_SWIER_SWIER4                   EXTI_SWIER_SWIER4_Msk              /*!< Software Interrupt on line 4 */
+#define EXTI_SWIER_SWIER5_Pos               (5U)                               
+#define EXTI_SWIER_SWIER5_Msk               (0x1U << EXTI_SWIER_SWIER5_Pos)    /*!< 0x00000020 */
+#define EXTI_SWIER_SWIER5                   EXTI_SWIER_SWIER5_Msk              /*!< Software Interrupt on line 5 */
+#define EXTI_SWIER_SWIER6_Pos               (6U)                               
+#define EXTI_SWIER_SWIER6_Msk               (0x1U << EXTI_SWIER_SWIER6_Pos)    /*!< 0x00000040 */
+#define EXTI_SWIER_SWIER6                   EXTI_SWIER_SWIER6_Msk              /*!< Software Interrupt on line 6 */
+#define EXTI_SWIER_SWIER7_Pos               (7U)                               
+#define EXTI_SWIER_SWIER7_Msk               (0x1U << EXTI_SWIER_SWIER7_Pos)    /*!< 0x00000080 */
+#define EXTI_SWIER_SWIER7                   EXTI_SWIER_SWIER7_Msk              /*!< Software Interrupt on line 7 */
+#define EXTI_SWIER_SWIER8_Pos               (8U)                               
+#define EXTI_SWIER_SWIER8_Msk               (0x1U << EXTI_SWIER_SWIER8_Pos)    /*!< 0x00000100 */
+#define EXTI_SWIER_SWIER8                   EXTI_SWIER_SWIER8_Msk              /*!< Software Interrupt on line 8 */
+#define EXTI_SWIER_SWIER9_Pos               (9U)                               
+#define EXTI_SWIER_SWIER9_Msk               (0x1U << EXTI_SWIER_SWIER9_Pos)    /*!< 0x00000200 */
+#define EXTI_SWIER_SWIER9                   EXTI_SWIER_SWIER9_Msk              /*!< Software Interrupt on line 9 */
+#define EXTI_SWIER_SWIER10_Pos              (10U)                              
+#define EXTI_SWIER_SWIER10_Msk              (0x1U << EXTI_SWIER_SWIER10_Pos)   /*!< 0x00000400 */
+#define EXTI_SWIER_SWIER10                  EXTI_SWIER_SWIER10_Msk             /*!< Software Interrupt on line 10 */
+#define EXTI_SWIER_SWIER11_Pos              (11U)                              
+#define EXTI_SWIER_SWIER11_Msk              (0x1U << EXTI_SWIER_SWIER11_Pos)   /*!< 0x00000800 */
+#define EXTI_SWIER_SWIER11                  EXTI_SWIER_SWIER11_Msk             /*!< Software Interrupt on line 11 */
+#define EXTI_SWIER_SWIER12_Pos              (12U)                              
+#define EXTI_SWIER_SWIER12_Msk              (0x1U << EXTI_SWIER_SWIER12_Pos)   /*!< 0x00001000 */
+#define EXTI_SWIER_SWIER12                  EXTI_SWIER_SWIER12_Msk             /*!< Software Interrupt on line 12 */
+#define EXTI_SWIER_SWIER13_Pos              (13U)                              
+#define EXTI_SWIER_SWIER13_Msk              (0x1U << EXTI_SWIER_SWIER13_Pos)   /*!< 0x00002000 */
+#define EXTI_SWIER_SWIER13                  EXTI_SWIER_SWIER13_Msk             /*!< Software Interrupt on line 13 */
+#define EXTI_SWIER_SWIER14_Pos              (14U)                              
+#define EXTI_SWIER_SWIER14_Msk              (0x1U << EXTI_SWIER_SWIER14_Pos)   /*!< 0x00004000 */
+#define EXTI_SWIER_SWIER14                  EXTI_SWIER_SWIER14_Msk             /*!< Software Interrupt on line 14 */
+#define EXTI_SWIER_SWIER15_Pos              (15U)                              
+#define EXTI_SWIER_SWIER15_Msk              (0x1U << EXTI_SWIER_SWIER15_Pos)   /*!< 0x00008000 */
+#define EXTI_SWIER_SWIER15                  EXTI_SWIER_SWIER15_Msk             /*!< Software Interrupt on line 15 */
+#define EXTI_SWIER_SWIER16_Pos              (16U)                              
+#define EXTI_SWIER_SWIER16_Msk              (0x1U << EXTI_SWIER_SWIER16_Pos)   /*!< 0x00010000 */
+#define EXTI_SWIER_SWIER16                  EXTI_SWIER_SWIER16_Msk             /*!< Software Interrupt on line 16 */
+#define EXTI_SWIER_SWIER17_Pos              (17U)                              
+#define EXTI_SWIER_SWIER17_Msk              (0x1U << EXTI_SWIER_SWIER17_Pos)   /*!< 0x00020000 */
+#define EXTI_SWIER_SWIER17                  EXTI_SWIER_SWIER17_Msk             /*!< Software Interrupt on line 17 */
+#define EXTI_SWIER_SWIER18_Pos              (18U)                              
+#define EXTI_SWIER_SWIER18_Msk              (0x1U << EXTI_SWIER_SWIER18_Pos)   /*!< 0x00040000 */
+#define EXTI_SWIER_SWIER18                  EXTI_SWIER_SWIER18_Msk             /*!< Software Interrupt on line 18 */
+#define EXTI_SWIER_SWIER19_Pos              (19U)                              
+#define EXTI_SWIER_SWIER19_Msk              (0x1U << EXTI_SWIER_SWIER19_Pos)   /*!< 0x00080000 */
+#define EXTI_SWIER_SWIER19                  EXTI_SWIER_SWIER19_Msk             /*!< Software Interrupt on line 19 */
+
+/* References Defines */
+#define  EXTI_SWIER_SWI0 EXTI_SWIER_SWIER0
+#define  EXTI_SWIER_SWI1 EXTI_SWIER_SWIER1
+#define  EXTI_SWIER_SWI2 EXTI_SWIER_SWIER2
+#define  EXTI_SWIER_SWI3 EXTI_SWIER_SWIER3
+#define  EXTI_SWIER_SWI4 EXTI_SWIER_SWIER4
+#define  EXTI_SWIER_SWI5 EXTI_SWIER_SWIER5
+#define  EXTI_SWIER_SWI6 EXTI_SWIER_SWIER6
+#define  EXTI_SWIER_SWI7 EXTI_SWIER_SWIER7
+#define  EXTI_SWIER_SWI8 EXTI_SWIER_SWIER8
+#define  EXTI_SWIER_SWI9 EXTI_SWIER_SWIER9
+#define  EXTI_SWIER_SWI10 EXTI_SWIER_SWIER10
+#define  EXTI_SWIER_SWI11 EXTI_SWIER_SWIER11
+#define  EXTI_SWIER_SWI12 EXTI_SWIER_SWIER12
+#define  EXTI_SWIER_SWI13 EXTI_SWIER_SWIER13
+#define  EXTI_SWIER_SWI14 EXTI_SWIER_SWIER14
+#define  EXTI_SWIER_SWI15 EXTI_SWIER_SWIER15
+#define  EXTI_SWIER_SWI16 EXTI_SWIER_SWIER16
+#define  EXTI_SWIER_SWI17 EXTI_SWIER_SWIER17
+#define  EXTI_SWIER_SWI18 EXTI_SWIER_SWIER18
+#define  EXTI_SWIER_SWI19 EXTI_SWIER_SWIER19
+
+/*******************  Bit definition for EXTI_PR register  ********************/
+#define EXTI_PR_PR0_Pos                     (0U)                               
+#define EXTI_PR_PR0_Msk                     (0x1U << EXTI_PR_PR0_Pos)          /*!< 0x00000001 */
+#define EXTI_PR_PR0                         EXTI_PR_PR0_Msk                    /*!< Pending bit for line 0 */
+#define EXTI_PR_PR1_Pos                     (1U)                               
+#define EXTI_PR_PR1_Msk                     (0x1U << EXTI_PR_PR1_Pos)          /*!< 0x00000002 */
+#define EXTI_PR_PR1                         EXTI_PR_PR1_Msk                    /*!< Pending bit for line 1 */
+#define EXTI_PR_PR2_Pos                     (2U)                               
+#define EXTI_PR_PR2_Msk                     (0x1U << EXTI_PR_PR2_Pos)          /*!< 0x00000004 */
+#define EXTI_PR_PR2                         EXTI_PR_PR2_Msk                    /*!< Pending bit for line 2 */
+#define EXTI_PR_PR3_Pos                     (3U)                               
+#define EXTI_PR_PR3_Msk                     (0x1U << EXTI_PR_PR3_Pos)          /*!< 0x00000008 */
+#define EXTI_PR_PR3                         EXTI_PR_PR3_Msk                    /*!< Pending bit for line 3 */
+#define EXTI_PR_PR4_Pos                     (4U)                               
+#define EXTI_PR_PR4_Msk                     (0x1U << EXTI_PR_PR4_Pos)          /*!< 0x00000010 */
+#define EXTI_PR_PR4                         EXTI_PR_PR4_Msk                    /*!< Pending bit for line 4 */
+#define EXTI_PR_PR5_Pos                     (5U)                               
+#define EXTI_PR_PR5_Msk                     (0x1U << EXTI_PR_PR5_Pos)          /*!< 0x00000020 */
+#define EXTI_PR_PR5                         EXTI_PR_PR5_Msk                    /*!< Pending bit for line 5 */
+#define EXTI_PR_PR6_Pos                     (6U)                               
+#define EXTI_PR_PR6_Msk                     (0x1U << EXTI_PR_PR6_Pos)          /*!< 0x00000040 */
+#define EXTI_PR_PR6                         EXTI_PR_PR6_Msk                    /*!< Pending bit for line 6 */
+#define EXTI_PR_PR7_Pos                     (7U)                               
+#define EXTI_PR_PR7_Msk                     (0x1U << EXTI_PR_PR7_Pos)          /*!< 0x00000080 */
+#define EXTI_PR_PR7                         EXTI_PR_PR7_Msk                    /*!< Pending bit for line 7 */
+#define EXTI_PR_PR8_Pos                     (8U)                               
+#define EXTI_PR_PR8_Msk                     (0x1U << EXTI_PR_PR8_Pos)          /*!< 0x00000100 */
+#define EXTI_PR_PR8                         EXTI_PR_PR8_Msk                    /*!< Pending bit for line 8 */
+#define EXTI_PR_PR9_Pos                     (9U)                               
+#define EXTI_PR_PR9_Msk                     (0x1U << EXTI_PR_PR9_Pos)          /*!< 0x00000200 */
+#define EXTI_PR_PR9                         EXTI_PR_PR9_Msk                    /*!< Pending bit for line 9 */
+#define EXTI_PR_PR10_Pos                    (10U)                              
+#define EXTI_PR_PR10_Msk                    (0x1U << EXTI_PR_PR10_Pos)         /*!< 0x00000400 */
+#define EXTI_PR_PR10                        EXTI_PR_PR10_Msk                   /*!< Pending bit for line 10 */
+#define EXTI_PR_PR11_Pos                    (11U)                              
+#define EXTI_PR_PR11_Msk                    (0x1U << EXTI_PR_PR11_Pos)         /*!< 0x00000800 */
+#define EXTI_PR_PR11                        EXTI_PR_PR11_Msk                   /*!< Pending bit for line 11 */
+#define EXTI_PR_PR12_Pos                    (12U)                              
+#define EXTI_PR_PR12_Msk                    (0x1U << EXTI_PR_PR12_Pos)         /*!< 0x00001000 */
+#define EXTI_PR_PR12                        EXTI_PR_PR12_Msk                   /*!< Pending bit for line 12 */
+#define EXTI_PR_PR13_Pos                    (13U)                              
+#define EXTI_PR_PR13_Msk                    (0x1U << EXTI_PR_PR13_Pos)         /*!< 0x00002000 */
+#define EXTI_PR_PR13                        EXTI_PR_PR13_Msk                   /*!< Pending bit for line 13 */
+#define EXTI_PR_PR14_Pos                    (14U)                              
+#define EXTI_PR_PR14_Msk                    (0x1U << EXTI_PR_PR14_Pos)         /*!< 0x00004000 */
+#define EXTI_PR_PR14                        EXTI_PR_PR14_Msk                   /*!< Pending bit for line 14 */
+#define EXTI_PR_PR15_Pos                    (15U)                              
+#define EXTI_PR_PR15_Msk                    (0x1U << EXTI_PR_PR15_Pos)         /*!< 0x00008000 */
+#define EXTI_PR_PR15                        EXTI_PR_PR15_Msk                   /*!< Pending bit for line 15 */
+#define EXTI_PR_PR16_Pos                    (16U)                              
+#define EXTI_PR_PR16_Msk                    (0x1U << EXTI_PR_PR16_Pos)         /*!< 0x00010000 */
+#define EXTI_PR_PR16                        EXTI_PR_PR16_Msk                   /*!< Pending bit for line 16 */
+#define EXTI_PR_PR17_Pos                    (17U)                              
+#define EXTI_PR_PR17_Msk                    (0x1U << EXTI_PR_PR17_Pos)         /*!< 0x00020000 */
+#define EXTI_PR_PR17                        EXTI_PR_PR17_Msk                   /*!< Pending bit for line 17 */
+#define EXTI_PR_PR18_Pos                    (18U)                              
+#define EXTI_PR_PR18_Msk                    (0x1U << EXTI_PR_PR18_Pos)         /*!< 0x00040000 */
+#define EXTI_PR_PR18                        EXTI_PR_PR18_Msk                   /*!< Pending bit for line 18 */
+#define EXTI_PR_PR19_Pos                    (19U)                              
+#define EXTI_PR_PR19_Msk                    (0x1U << EXTI_PR_PR19_Pos)         /*!< 0x00080000 */
+#define EXTI_PR_PR19                        EXTI_PR_PR19_Msk                   /*!< Pending bit for line 19 */
+
+/* References Defines */
+#define  EXTI_PR_PIF0 EXTI_PR_PR0
+#define  EXTI_PR_PIF1 EXTI_PR_PR1
+#define  EXTI_PR_PIF2 EXTI_PR_PR2
+#define  EXTI_PR_PIF3 EXTI_PR_PR3
+#define  EXTI_PR_PIF4 EXTI_PR_PR4
+#define  EXTI_PR_PIF5 EXTI_PR_PR5
+#define  EXTI_PR_PIF6 EXTI_PR_PR6
+#define  EXTI_PR_PIF7 EXTI_PR_PR7
+#define  EXTI_PR_PIF8 EXTI_PR_PR8
+#define  EXTI_PR_PIF9 EXTI_PR_PR9
+#define  EXTI_PR_PIF10 EXTI_PR_PR10
+#define  EXTI_PR_PIF11 EXTI_PR_PR11
+#define  EXTI_PR_PIF12 EXTI_PR_PR12
+#define  EXTI_PR_PIF13 EXTI_PR_PR13
+#define  EXTI_PR_PIF14 EXTI_PR_PR14
+#define  EXTI_PR_PIF15 EXTI_PR_PR15
+#define  EXTI_PR_PIF16 EXTI_PR_PR16
+#define  EXTI_PR_PIF17 EXTI_PR_PR17
+#define  EXTI_PR_PIF18 EXTI_PR_PR18
+#define  EXTI_PR_PIF19 EXTI_PR_PR19
+
+/******************************************************************************/
+/*                                                                            */
+/*                             DMA Controller                                 */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for DMA_ISR register  ********************/
+#define DMA_ISR_GIF1_Pos                    (0U)                               
+#define DMA_ISR_GIF1_Msk                    (0x1U << DMA_ISR_GIF1_Pos)         /*!< 0x00000001 */
+#define DMA_ISR_GIF1                        DMA_ISR_GIF1_Msk                   /*!< Channel 1 Global interrupt flag */
+#define DMA_ISR_TCIF1_Pos                   (1U)                               
+#define DMA_ISR_TCIF1_Msk                   (0x1U << DMA_ISR_TCIF1_Pos)        /*!< 0x00000002 */
+#define DMA_ISR_TCIF1                       DMA_ISR_TCIF1_Msk                  /*!< Channel 1 Transfer Complete flag */
+#define DMA_ISR_HTIF1_Pos                   (2U)                               
+#define DMA_ISR_HTIF1_Msk                   (0x1U << DMA_ISR_HTIF1_Pos)        /*!< 0x00000004 */
+#define DMA_ISR_HTIF1                       DMA_ISR_HTIF1_Msk                  /*!< Channel 1 Half Transfer flag */
+#define DMA_ISR_TEIF1_Pos                   (3U)                               
+#define DMA_ISR_TEIF1_Msk                   (0x1U << DMA_ISR_TEIF1_Pos)        /*!< 0x00000008 */
+#define DMA_ISR_TEIF1                       DMA_ISR_TEIF1_Msk                  /*!< Channel 1 Transfer Error flag */
+#define DMA_ISR_GIF2_Pos                    (4U)                               
+#define DMA_ISR_GIF2_Msk                    (0x1U << DMA_ISR_GIF2_Pos)         /*!< 0x00000010 */
+#define DMA_ISR_GIF2                        DMA_ISR_GIF2_Msk                   /*!< Channel 2 Global interrupt flag */
+#define DMA_ISR_TCIF2_Pos                   (5U)                               
+#define DMA_ISR_TCIF2_Msk                   (0x1U << DMA_ISR_TCIF2_Pos)        /*!< 0x00000020 */
+#define DMA_ISR_TCIF2                       DMA_ISR_TCIF2_Msk                  /*!< Channel 2 Transfer Complete flag */
+#define DMA_ISR_HTIF2_Pos                   (6U)                               
+#define DMA_ISR_HTIF2_Msk                   (0x1U << DMA_ISR_HTIF2_Pos)        /*!< 0x00000040 */
+#define DMA_ISR_HTIF2                       DMA_ISR_HTIF2_Msk                  /*!< Channel 2 Half Transfer flag */
+#define DMA_ISR_TEIF2_Pos                   (7U)                               
+#define DMA_ISR_TEIF2_Msk                   (0x1U << DMA_ISR_TEIF2_Pos)        /*!< 0x00000080 */
+#define DMA_ISR_TEIF2                       DMA_ISR_TEIF2_Msk                  /*!< Channel 2 Transfer Error flag */
+#define DMA_ISR_GIF3_Pos                    (8U)                               
+#define DMA_ISR_GIF3_Msk                    (0x1U << DMA_ISR_GIF3_Pos)         /*!< 0x00000100 */
+#define DMA_ISR_GIF3                        DMA_ISR_GIF3_Msk                   /*!< Channel 3 Global interrupt flag */
+#define DMA_ISR_TCIF3_Pos                   (9U)                               
+#define DMA_ISR_TCIF3_Msk                   (0x1U << DMA_ISR_TCIF3_Pos)        /*!< 0x00000200 */
+#define DMA_ISR_TCIF3                       DMA_ISR_TCIF3_Msk                  /*!< Channel 3 Transfer Complete flag */
+#define DMA_ISR_HTIF3_Pos                   (10U)                              
+#define DMA_ISR_HTIF3_Msk                   (0x1U << DMA_ISR_HTIF3_Pos)        /*!< 0x00000400 */
+#define DMA_ISR_HTIF3                       DMA_ISR_HTIF3_Msk                  /*!< Channel 3 Half Transfer flag */
+#define DMA_ISR_TEIF3_Pos                   (11U)                              
+#define DMA_ISR_TEIF3_Msk                   (0x1U << DMA_ISR_TEIF3_Pos)        /*!< 0x00000800 */
+#define DMA_ISR_TEIF3                       DMA_ISR_TEIF3_Msk                  /*!< Channel 3 Transfer Error flag */
+#define DMA_ISR_GIF4_Pos                    (12U)                              
+#define DMA_ISR_GIF4_Msk                    (0x1U << DMA_ISR_GIF4_Pos)         /*!< 0x00001000 */
+#define DMA_ISR_GIF4                        DMA_ISR_GIF4_Msk                   /*!< Channel 4 Global interrupt flag */
+#define DMA_ISR_TCIF4_Pos                   (13U)                              
+#define DMA_ISR_TCIF4_Msk                   (0x1U << DMA_ISR_TCIF4_Pos)        /*!< 0x00002000 */
+#define DMA_ISR_TCIF4                       DMA_ISR_TCIF4_Msk                  /*!< Channel 4 Transfer Complete flag */
+#define DMA_ISR_HTIF4_Pos                   (14U)                              
+#define DMA_ISR_HTIF4_Msk                   (0x1U << DMA_ISR_HTIF4_Pos)        /*!< 0x00004000 */
+#define DMA_ISR_HTIF4                       DMA_ISR_HTIF4_Msk                  /*!< Channel 4 Half Transfer flag */
+#define DMA_ISR_TEIF4_Pos                   (15U)                              
+#define DMA_ISR_TEIF4_Msk                   (0x1U << DMA_ISR_TEIF4_Pos)        /*!< 0x00008000 */
+#define DMA_ISR_TEIF4                       DMA_ISR_TEIF4_Msk                  /*!< Channel 4 Transfer Error flag */
+#define DMA_ISR_GIF5_Pos                    (16U)                              
+#define DMA_ISR_GIF5_Msk                    (0x1U << DMA_ISR_GIF5_Pos)         /*!< 0x00010000 */
+#define DMA_ISR_GIF5                        DMA_ISR_GIF5_Msk                   /*!< Channel 5 Global interrupt flag */
+#define DMA_ISR_TCIF5_Pos                   (17U)                              
+#define DMA_ISR_TCIF5_Msk                   (0x1U << DMA_ISR_TCIF5_Pos)        /*!< 0x00020000 */
+#define DMA_ISR_TCIF5                       DMA_ISR_TCIF5_Msk                  /*!< Channel 5 Transfer Complete flag */
+#define DMA_ISR_HTIF5_Pos                   (18U)                              
+#define DMA_ISR_HTIF5_Msk                   (0x1U << DMA_ISR_HTIF5_Pos)        /*!< 0x00040000 */
+#define DMA_ISR_HTIF5                       DMA_ISR_HTIF5_Msk                  /*!< Channel 5 Half Transfer flag */
+#define DMA_ISR_TEIF5_Pos                   (19U)                              
+#define DMA_ISR_TEIF5_Msk                   (0x1U << DMA_ISR_TEIF5_Pos)        /*!< 0x00080000 */
+#define DMA_ISR_TEIF5                       DMA_ISR_TEIF5_Msk                  /*!< Channel 5 Transfer Error flag */
+#define DMA_ISR_GIF6_Pos                    (20U)                              
+#define DMA_ISR_GIF6_Msk                    (0x1U << DMA_ISR_GIF6_Pos)         /*!< 0x00100000 */
+#define DMA_ISR_GIF6                        DMA_ISR_GIF6_Msk                   /*!< Channel 6 Global interrupt flag */
+#define DMA_ISR_TCIF6_Pos                   (21U)                              
+#define DMA_ISR_TCIF6_Msk                   (0x1U << DMA_ISR_TCIF6_Pos)        /*!< 0x00200000 */
+#define DMA_ISR_TCIF6                       DMA_ISR_TCIF6_Msk                  /*!< Channel 6 Transfer Complete flag */
+#define DMA_ISR_HTIF6_Pos                   (22U)                              
+#define DMA_ISR_HTIF6_Msk                   (0x1U << DMA_ISR_HTIF6_Pos)        /*!< 0x00400000 */
+#define DMA_ISR_HTIF6                       DMA_ISR_HTIF6_Msk                  /*!< Channel 6 Half Transfer flag */
+#define DMA_ISR_TEIF6_Pos                   (23U)                              
+#define DMA_ISR_TEIF6_Msk                   (0x1U << DMA_ISR_TEIF6_Pos)        /*!< 0x00800000 */
+#define DMA_ISR_TEIF6                       DMA_ISR_TEIF6_Msk                  /*!< Channel 6 Transfer Error flag */
+#define DMA_ISR_GIF7_Pos                    (24U)                              
+#define DMA_ISR_GIF7_Msk                    (0x1U << DMA_ISR_GIF7_Pos)         /*!< 0x01000000 */
+#define DMA_ISR_GIF7                        DMA_ISR_GIF7_Msk                   /*!< Channel 7 Global interrupt flag */
+#define DMA_ISR_TCIF7_Pos                   (25U)                              
+#define DMA_ISR_TCIF7_Msk                   (0x1U << DMA_ISR_TCIF7_Pos)        /*!< 0x02000000 */
+#define DMA_ISR_TCIF7                       DMA_ISR_TCIF7_Msk                  /*!< Channel 7 Transfer Complete flag */
+#define DMA_ISR_HTIF7_Pos                   (26U)                              
+#define DMA_ISR_HTIF7_Msk                   (0x1U << DMA_ISR_HTIF7_Pos)        /*!< 0x04000000 */
+#define DMA_ISR_HTIF7                       DMA_ISR_HTIF7_Msk                  /*!< Channel 7 Half Transfer flag */
+#define DMA_ISR_TEIF7_Pos                   (27U)                              
+#define DMA_ISR_TEIF7_Msk                   (0x1U << DMA_ISR_TEIF7_Pos)        /*!< 0x08000000 */
+#define DMA_ISR_TEIF7                       DMA_ISR_TEIF7_Msk                  /*!< Channel 7 Transfer Error flag */
+
+/*******************  Bit definition for DMA_IFCR register  *******************/
+#define DMA_IFCR_CGIF1_Pos                  (0U)                               
+#define DMA_IFCR_CGIF1_Msk                  (0x1U << DMA_IFCR_CGIF1_Pos)       /*!< 0x00000001 */
+#define DMA_IFCR_CGIF1                      DMA_IFCR_CGIF1_Msk                 /*!< Channel 1 Global interrupt clear */
+#define DMA_IFCR_CTCIF1_Pos                 (1U)                               
+#define DMA_IFCR_CTCIF1_Msk                 (0x1U << DMA_IFCR_CTCIF1_Pos)      /*!< 0x00000002 */
+#define DMA_IFCR_CTCIF1                     DMA_IFCR_CTCIF1_Msk                /*!< Channel 1 Transfer Complete clear */
+#define DMA_IFCR_CHTIF1_Pos                 (2U)                               
+#define DMA_IFCR_CHTIF1_Msk                 (0x1U << DMA_IFCR_CHTIF1_Pos)      /*!< 0x00000004 */
+#define DMA_IFCR_CHTIF1                     DMA_IFCR_CHTIF1_Msk                /*!< Channel 1 Half Transfer clear */
+#define DMA_IFCR_CTEIF1_Pos                 (3U)                               
+#define DMA_IFCR_CTEIF1_Msk                 (0x1U << DMA_IFCR_CTEIF1_Pos)      /*!< 0x00000008 */
+#define DMA_IFCR_CTEIF1                     DMA_IFCR_CTEIF1_Msk                /*!< Channel 1 Transfer Error clear */
+#define DMA_IFCR_CGIF2_Pos                  (4U)                               
+#define DMA_IFCR_CGIF2_Msk                  (0x1U << DMA_IFCR_CGIF2_Pos)       /*!< 0x00000010 */
+#define DMA_IFCR_CGIF2                      DMA_IFCR_CGIF2_Msk                 /*!< Channel 2 Global interrupt clear */
+#define DMA_IFCR_CTCIF2_Pos                 (5U)                               
+#define DMA_IFCR_CTCIF2_Msk                 (0x1U << DMA_IFCR_CTCIF2_Pos)      /*!< 0x00000020 */
+#define DMA_IFCR_CTCIF2                     DMA_IFCR_CTCIF2_Msk                /*!< Channel 2 Transfer Complete clear */
+#define DMA_IFCR_CHTIF2_Pos                 (6U)                               
+#define DMA_IFCR_CHTIF2_Msk                 (0x1U << DMA_IFCR_CHTIF2_Pos)      /*!< 0x00000040 */
+#define DMA_IFCR_CHTIF2                     DMA_IFCR_CHTIF2_Msk                /*!< Channel 2 Half Transfer clear */
+#define DMA_IFCR_CTEIF2_Pos                 (7U)                               
+#define DMA_IFCR_CTEIF2_Msk                 (0x1U << DMA_IFCR_CTEIF2_Pos)      /*!< 0x00000080 */
+#define DMA_IFCR_CTEIF2                     DMA_IFCR_CTEIF2_Msk                /*!< Channel 2 Transfer Error clear */
+#define DMA_IFCR_CGIF3_Pos                  (8U)                               
+#define DMA_IFCR_CGIF3_Msk                  (0x1U << DMA_IFCR_CGIF3_Pos)       /*!< 0x00000100 */
+#define DMA_IFCR_CGIF3                      DMA_IFCR_CGIF3_Msk                 /*!< Channel 3 Global interrupt clear */
+#define DMA_IFCR_CTCIF3_Pos                 (9U)                               
+#define DMA_IFCR_CTCIF3_Msk                 (0x1U << DMA_IFCR_CTCIF3_Pos)      /*!< 0x00000200 */
+#define DMA_IFCR_CTCIF3                     DMA_IFCR_CTCIF3_Msk                /*!< Channel 3 Transfer Complete clear */
+#define DMA_IFCR_CHTIF3_Pos                 (10U)                              
+#define DMA_IFCR_CHTIF3_Msk                 (0x1U << DMA_IFCR_CHTIF3_Pos)      /*!< 0x00000400 */
+#define DMA_IFCR_CHTIF3                     DMA_IFCR_CHTIF3_Msk                /*!< Channel 3 Half Transfer clear */
+#define DMA_IFCR_CTEIF3_Pos                 (11U)                              
+#define DMA_IFCR_CTEIF3_Msk                 (0x1U << DMA_IFCR_CTEIF3_Pos)      /*!< 0x00000800 */
+#define DMA_IFCR_CTEIF3                     DMA_IFCR_CTEIF3_Msk                /*!< Channel 3 Transfer Error clear */
+#define DMA_IFCR_CGIF4_Pos                  (12U)                              
+#define DMA_IFCR_CGIF4_Msk                  (0x1U << DMA_IFCR_CGIF4_Pos)       /*!< 0x00001000 */
+#define DMA_IFCR_CGIF4                      DMA_IFCR_CGIF4_Msk                 /*!< Channel 4 Global interrupt clear */
+#define DMA_IFCR_CTCIF4_Pos                 (13U)                              
+#define DMA_IFCR_CTCIF4_Msk                 (0x1U << DMA_IFCR_CTCIF4_Pos)      /*!< 0x00002000 */
+#define DMA_IFCR_CTCIF4                     DMA_IFCR_CTCIF4_Msk                /*!< Channel 4 Transfer Complete clear */
+#define DMA_IFCR_CHTIF4_Pos                 (14U)                              
+#define DMA_IFCR_CHTIF4_Msk                 (0x1U << DMA_IFCR_CHTIF4_Pos)      /*!< 0x00004000 */
+#define DMA_IFCR_CHTIF4                     DMA_IFCR_CHTIF4_Msk                /*!< Channel 4 Half Transfer clear */
+#define DMA_IFCR_CTEIF4_Pos                 (15U)                              
+#define DMA_IFCR_CTEIF4_Msk                 (0x1U << DMA_IFCR_CTEIF4_Pos)      /*!< 0x00008000 */
+#define DMA_IFCR_CTEIF4                     DMA_IFCR_CTEIF4_Msk                /*!< Channel 4 Transfer Error clear */
+#define DMA_IFCR_CGIF5_Pos                  (16U)                              
+#define DMA_IFCR_CGIF5_Msk                  (0x1U << DMA_IFCR_CGIF5_Pos)       /*!< 0x00010000 */
+#define DMA_IFCR_CGIF5                      DMA_IFCR_CGIF5_Msk                 /*!< Channel 5 Global interrupt clear */
+#define DMA_IFCR_CTCIF5_Pos                 (17U)                              
+#define DMA_IFCR_CTCIF5_Msk                 (0x1U << DMA_IFCR_CTCIF5_Pos)      /*!< 0x00020000 */
+#define DMA_IFCR_CTCIF5                     DMA_IFCR_CTCIF5_Msk                /*!< Channel 5 Transfer Complete clear */
+#define DMA_IFCR_CHTIF5_Pos                 (18U)                              
+#define DMA_IFCR_CHTIF5_Msk                 (0x1U << DMA_IFCR_CHTIF5_Pos)      /*!< 0x00040000 */
+#define DMA_IFCR_CHTIF5                     DMA_IFCR_CHTIF5_Msk                /*!< Channel 5 Half Transfer clear */
+#define DMA_IFCR_CTEIF5_Pos                 (19U)                              
+#define DMA_IFCR_CTEIF5_Msk                 (0x1U << DMA_IFCR_CTEIF5_Pos)      /*!< 0x00080000 */
+#define DMA_IFCR_CTEIF5                     DMA_IFCR_CTEIF5_Msk                /*!< Channel 5 Transfer Error clear */
+#define DMA_IFCR_CGIF6_Pos                  (20U)                              
+#define DMA_IFCR_CGIF6_Msk                  (0x1U << DMA_IFCR_CGIF6_Pos)       /*!< 0x00100000 */
+#define DMA_IFCR_CGIF6                      DMA_IFCR_CGIF6_Msk                 /*!< Channel 6 Global interrupt clear */
+#define DMA_IFCR_CTCIF6_Pos                 (21U)                              
+#define DMA_IFCR_CTCIF6_Msk                 (0x1U << DMA_IFCR_CTCIF6_Pos)      /*!< 0x00200000 */
+#define DMA_IFCR_CTCIF6                     DMA_IFCR_CTCIF6_Msk                /*!< Channel 6 Transfer Complete clear */
+#define DMA_IFCR_CHTIF6_Pos                 (22U)                              
+#define DMA_IFCR_CHTIF6_Msk                 (0x1U << DMA_IFCR_CHTIF6_Pos)      /*!< 0x00400000 */
+#define DMA_IFCR_CHTIF6                     DMA_IFCR_CHTIF6_Msk                /*!< Channel 6 Half Transfer clear */
+#define DMA_IFCR_CTEIF6_Pos                 (23U)                              
+#define DMA_IFCR_CTEIF6_Msk                 (0x1U << DMA_IFCR_CTEIF6_Pos)      /*!< 0x00800000 */
+#define DMA_IFCR_CTEIF6                     DMA_IFCR_CTEIF6_Msk                /*!< Channel 6 Transfer Error clear */
+#define DMA_IFCR_CGIF7_Pos                  (24U)                              
+#define DMA_IFCR_CGIF7_Msk                  (0x1U << DMA_IFCR_CGIF7_Pos)       /*!< 0x01000000 */
+#define DMA_IFCR_CGIF7                      DMA_IFCR_CGIF7_Msk                 /*!< Channel 7 Global interrupt clear */
+#define DMA_IFCR_CTCIF7_Pos                 (25U)                              
+#define DMA_IFCR_CTCIF7_Msk                 (0x1U << DMA_IFCR_CTCIF7_Pos)      /*!< 0x02000000 */
+#define DMA_IFCR_CTCIF7                     DMA_IFCR_CTCIF7_Msk                /*!< Channel 7 Transfer Complete clear */
+#define DMA_IFCR_CHTIF7_Pos                 (26U)                              
+#define DMA_IFCR_CHTIF7_Msk                 (0x1U << DMA_IFCR_CHTIF7_Pos)      /*!< 0x04000000 */
+#define DMA_IFCR_CHTIF7                     DMA_IFCR_CHTIF7_Msk                /*!< Channel 7 Half Transfer clear */
+#define DMA_IFCR_CTEIF7_Pos                 (27U)                              
+#define DMA_IFCR_CTEIF7_Msk                 (0x1U << DMA_IFCR_CTEIF7_Pos)      /*!< 0x08000000 */
+#define DMA_IFCR_CTEIF7                     DMA_IFCR_CTEIF7_Msk                /*!< Channel 7 Transfer Error clear */
+
+/*******************  Bit definition for DMA_CCR register   *******************/
+#define DMA_CCR_EN_Pos                      (0U)                               
+#define DMA_CCR_EN_Msk                      (0x1U << DMA_CCR_EN_Pos)           /*!< 0x00000001 */
+#define DMA_CCR_EN                          DMA_CCR_EN_Msk                     /*!< Channel enable */
+#define DMA_CCR_TCIE_Pos                    (1U)                               
+#define DMA_CCR_TCIE_Msk                    (0x1U << DMA_CCR_TCIE_Pos)         /*!< 0x00000002 */
+#define DMA_CCR_TCIE                        DMA_CCR_TCIE_Msk                   /*!< Transfer complete interrupt enable */
+#define DMA_CCR_HTIE_Pos                    (2U)                               
+#define DMA_CCR_HTIE_Msk                    (0x1U << DMA_CCR_HTIE_Pos)         /*!< 0x00000004 */
+#define DMA_CCR_HTIE                        DMA_CCR_HTIE_Msk                   /*!< Half Transfer interrupt enable */
+#define DMA_CCR_TEIE_Pos                    (3U)                               
+#define DMA_CCR_TEIE_Msk                    (0x1U << DMA_CCR_TEIE_Pos)         /*!< 0x00000008 */
+#define DMA_CCR_TEIE                        DMA_CCR_TEIE_Msk                   /*!< Transfer error interrupt enable */
+#define DMA_CCR_DIR_Pos                     (4U)                               
+#define DMA_CCR_DIR_Msk                     (0x1U << DMA_CCR_DIR_Pos)          /*!< 0x00000010 */
+#define DMA_CCR_DIR                         DMA_CCR_DIR_Msk                    /*!< Data transfer direction */
+#define DMA_CCR_CIRC_Pos                    (5U)                               
+#define DMA_CCR_CIRC_Msk                    (0x1U << DMA_CCR_CIRC_Pos)         /*!< 0x00000020 */
+#define DMA_CCR_CIRC                        DMA_CCR_CIRC_Msk                   /*!< Circular mode */
+#define DMA_CCR_PINC_Pos                    (6U)                               
+#define DMA_CCR_PINC_Msk                    (0x1U << DMA_CCR_PINC_Pos)         /*!< 0x00000040 */
+#define DMA_CCR_PINC                        DMA_CCR_PINC_Msk                   /*!< Peripheral increment mode */
+#define DMA_CCR_MINC_Pos                    (7U)                               
+#define DMA_CCR_MINC_Msk                    (0x1U << DMA_CCR_MINC_Pos)         /*!< 0x00000080 */
+#define DMA_CCR_MINC                        DMA_CCR_MINC_Msk                   /*!< Memory increment mode */
+
+#define DMA_CCR_PSIZE_Pos                   (8U)                               
+#define DMA_CCR_PSIZE_Msk                   (0x3U << DMA_CCR_PSIZE_Pos)        /*!< 0x00000300 */
+#define DMA_CCR_PSIZE                       DMA_CCR_PSIZE_Msk                  /*!< PSIZE[1:0] bits (Peripheral size) */
+#define DMA_CCR_PSIZE_0                     (0x1U << DMA_CCR_PSIZE_Pos)        /*!< 0x00000100 */
+#define DMA_CCR_PSIZE_1                     (0x2U << DMA_CCR_PSIZE_Pos)        /*!< 0x00000200 */
+
+#define DMA_CCR_MSIZE_Pos                   (10U)                              
+#define DMA_CCR_MSIZE_Msk                   (0x3U << DMA_CCR_MSIZE_Pos)        /*!< 0x00000C00 */
+#define DMA_CCR_MSIZE                       DMA_CCR_MSIZE_Msk                  /*!< MSIZE[1:0] bits (Memory size) */
+#define DMA_CCR_MSIZE_0                     (0x1U << DMA_CCR_MSIZE_Pos)        /*!< 0x00000400 */
+#define DMA_CCR_MSIZE_1                     (0x2U << DMA_CCR_MSIZE_Pos)        /*!< 0x00000800 */
+
+#define DMA_CCR_PL_Pos                      (12U)                              
+#define DMA_CCR_PL_Msk                      (0x3U << DMA_CCR_PL_Pos)           /*!< 0x00003000 */
+#define DMA_CCR_PL                          DMA_CCR_PL_Msk                     /*!< PL[1:0] bits(Channel Priority level) */
+#define DMA_CCR_PL_0                        (0x1U << DMA_CCR_PL_Pos)           /*!< 0x00001000 */
+#define DMA_CCR_PL_1                        (0x2U << DMA_CCR_PL_Pos)           /*!< 0x00002000 */
+
+#define DMA_CCR_MEM2MEM_Pos                 (14U)                              
+#define DMA_CCR_MEM2MEM_Msk                 (0x1U << DMA_CCR_MEM2MEM_Pos)      /*!< 0x00004000 */
+#define DMA_CCR_MEM2MEM                     DMA_CCR_MEM2MEM_Msk                /*!< Memory to memory mode */
+
+/******************  Bit definition for DMA_CNDTR  register  ******************/
+#define DMA_CNDTR_NDT_Pos                   (0U)                               
+#define DMA_CNDTR_NDT_Msk                   (0xFFFFU << DMA_CNDTR_NDT_Pos)     /*!< 0x0000FFFF */
+#define DMA_CNDTR_NDT                       DMA_CNDTR_NDT_Msk                  /*!< Number of data to Transfer */
+
+/******************  Bit definition for DMA_CPAR  register  *******************/
+#define DMA_CPAR_PA_Pos                     (0U)                               
+#define DMA_CPAR_PA_Msk                     (0xFFFFFFFFU << DMA_CPAR_PA_Pos)   /*!< 0xFFFFFFFF */
+#define DMA_CPAR_PA                         DMA_CPAR_PA_Msk                    /*!< Peripheral Address */
+
+/******************  Bit definition for DMA_CMAR  register  *******************/
+#define DMA_CMAR_MA_Pos                     (0U)                               
+#define DMA_CMAR_MA_Msk                     (0xFFFFFFFFU << DMA_CMAR_MA_Pos)   /*!< 0xFFFFFFFF */
+#define DMA_CMAR_MA                         DMA_CMAR_MA_Msk                    /*!< Memory Address */
+
+/******************************************************************************/
+/*                                                                            */
+/*                      Analog to Digital Converter (ADC)                     */
+/*                                                                            */
+/******************************************************************************/
+
+/*
+ * @brief Specific device feature definitions (not present on all devices in the STM32F1 family)
+ */
+#define ADC_MULTIMODE_SUPPORT                          /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */
+
+/********************  Bit definition for ADC_SR register  ********************/
+#define ADC_SR_AWD_Pos                      (0U)                               
+#define ADC_SR_AWD_Msk                      (0x1U << ADC_SR_AWD_Pos)           /*!< 0x00000001 */
+#define ADC_SR_AWD                          ADC_SR_AWD_Msk                     /*!< ADC analog watchdog 1 flag */
+#define ADC_SR_EOS_Pos                      (1U)                               
+#define ADC_SR_EOS_Msk                      (0x1U << ADC_SR_EOS_Pos)           /*!< 0x00000002 */
+#define ADC_SR_EOS                          ADC_SR_EOS_Msk                     /*!< ADC group regular end of sequence conversions flag */
+#define ADC_SR_JEOS_Pos                     (2U)                               
+#define ADC_SR_JEOS_Msk                     (0x1U << ADC_SR_JEOS_Pos)          /*!< 0x00000004 */
+#define ADC_SR_JEOS                         ADC_SR_JEOS_Msk                    /*!< ADC group injected end of sequence conversions flag */
+#define ADC_SR_JSTRT_Pos                    (3U)                               
+#define ADC_SR_JSTRT_Msk                    (0x1U << ADC_SR_JSTRT_Pos)         /*!< 0x00000008 */
+#define ADC_SR_JSTRT                        ADC_SR_JSTRT_Msk                   /*!< ADC group injected conversion start flag */
+#define ADC_SR_STRT_Pos                     (4U)                               
+#define ADC_SR_STRT_Msk                     (0x1U << ADC_SR_STRT_Pos)          /*!< 0x00000010 */
+#define ADC_SR_STRT                         ADC_SR_STRT_Msk                    /*!< ADC group regular conversion start flag */
+
+/* Legacy defines */
+#define  ADC_SR_EOC                          (ADC_SR_EOS)
+#define  ADC_SR_JEOC                         (ADC_SR_JEOS)
+
+/*******************  Bit definition for ADC_CR1 register  ********************/
+#define ADC_CR1_AWDCH_Pos                   (0U)                               
+#define ADC_CR1_AWDCH_Msk                   (0x1FU << ADC_CR1_AWDCH_Pos)       /*!< 0x0000001F */
+#define ADC_CR1_AWDCH                       ADC_CR1_AWDCH_Msk                  /*!< ADC analog watchdog 1 monitored channel selection */
+#define ADC_CR1_AWDCH_0                     (0x01U << ADC_CR1_AWDCH_Pos)       /*!< 0x00000001 */
+#define ADC_CR1_AWDCH_1                     (0x02U << ADC_CR1_AWDCH_Pos)       /*!< 0x00000002 */
+#define ADC_CR1_AWDCH_2                     (0x04U << ADC_CR1_AWDCH_Pos)       /*!< 0x00000004 */
+#define ADC_CR1_AWDCH_3                     (0x08U << ADC_CR1_AWDCH_Pos)       /*!< 0x00000008 */
+#define ADC_CR1_AWDCH_4                     (0x10U << ADC_CR1_AWDCH_Pos)       /*!< 0x00000010 */
+
+#define ADC_CR1_EOSIE_Pos                   (5U)                               
+#define ADC_CR1_EOSIE_Msk                   (0x1U << ADC_CR1_EOSIE_Pos)        /*!< 0x00000020 */
+#define ADC_CR1_EOSIE                       ADC_CR1_EOSIE_Msk                  /*!< ADC group regular end of sequence conversions interrupt */
+#define ADC_CR1_AWDIE_Pos                   (6U)                               
+#define ADC_CR1_AWDIE_Msk                   (0x1U << ADC_CR1_AWDIE_Pos)        /*!< 0x00000040 */
+#define ADC_CR1_AWDIE                       ADC_CR1_AWDIE_Msk                  /*!< ADC analog watchdog 1 interrupt */
+#define ADC_CR1_JEOSIE_Pos                  (7U)                               
+#define ADC_CR1_JEOSIE_Msk                  (0x1U << ADC_CR1_JEOSIE_Pos)       /*!< 0x00000080 */
+#define ADC_CR1_JEOSIE                      ADC_CR1_JEOSIE_Msk                 /*!< ADC group injected end of sequence conversions interrupt */
+#define ADC_CR1_SCAN_Pos                    (8U)                               
+#define ADC_CR1_SCAN_Msk                    (0x1U << ADC_CR1_SCAN_Pos)         /*!< 0x00000100 */
+#define ADC_CR1_SCAN                        ADC_CR1_SCAN_Msk                   /*!< ADC scan mode */
+#define ADC_CR1_AWDSGL_Pos                  (9U)                               
+#define ADC_CR1_AWDSGL_Msk                  (0x1U << ADC_CR1_AWDSGL_Pos)       /*!< 0x00000200 */
+#define ADC_CR1_AWDSGL                      ADC_CR1_AWDSGL_Msk                 /*!< ADC analog watchdog 1 monitoring a single channel or all channels */
+#define ADC_CR1_JAUTO_Pos                   (10U)                              
+#define ADC_CR1_JAUTO_Msk                   (0x1U << ADC_CR1_JAUTO_Pos)        /*!< 0x00000400 */
+#define ADC_CR1_JAUTO                       ADC_CR1_JAUTO_Msk                  /*!< ADC group injected automatic trigger mode */
+#define ADC_CR1_DISCEN_Pos                  (11U)                              
+#define ADC_CR1_DISCEN_Msk                  (0x1U << ADC_CR1_DISCEN_Pos)       /*!< 0x00000800 */
+#define ADC_CR1_DISCEN                      ADC_CR1_DISCEN_Msk                 /*!< ADC group regular sequencer discontinuous mode */
+#define ADC_CR1_JDISCEN_Pos                 (12U)                              
+#define ADC_CR1_JDISCEN_Msk                 (0x1U << ADC_CR1_JDISCEN_Pos)      /*!< 0x00001000 */
+#define ADC_CR1_JDISCEN                     ADC_CR1_JDISCEN_Msk                /*!< ADC group injected sequencer discontinuous mode */
+
+#define ADC_CR1_DISCNUM_Pos                 (13U)                              
+#define ADC_CR1_DISCNUM_Msk                 (0x7U << ADC_CR1_DISCNUM_Pos)      /*!< 0x0000E000 */
+#define ADC_CR1_DISCNUM                     ADC_CR1_DISCNUM_Msk                /*!< ADC group regular sequencer discontinuous number of ranks */
+#define ADC_CR1_DISCNUM_0                   (0x1U << ADC_CR1_DISCNUM_Pos)      /*!< 0x00002000 */
+#define ADC_CR1_DISCNUM_1                   (0x2U << ADC_CR1_DISCNUM_Pos)      /*!< 0x00004000 */
+#define ADC_CR1_DISCNUM_2                   (0x4U << ADC_CR1_DISCNUM_Pos)      /*!< 0x00008000 */
+
+#define ADC_CR1_DUALMOD_Pos                 (16U)                              
+#define ADC_CR1_DUALMOD_Msk                 (0xFU << ADC_CR1_DUALMOD_Pos)      /*!< 0x000F0000 */
+#define ADC_CR1_DUALMOD                     ADC_CR1_DUALMOD_Msk                /*!< ADC multimode mode selection */
+#define ADC_CR1_DUALMOD_0                   (0x1U << ADC_CR1_DUALMOD_Pos)      /*!< 0x00010000 */
+#define ADC_CR1_DUALMOD_1                   (0x2U << ADC_CR1_DUALMOD_Pos)      /*!< 0x00020000 */
+#define ADC_CR1_DUALMOD_2                   (0x4U << ADC_CR1_DUALMOD_Pos)      /*!< 0x00040000 */
+#define ADC_CR1_DUALMOD_3                   (0x8U << ADC_CR1_DUALMOD_Pos)      /*!< 0x00080000 */
+
+#define ADC_CR1_JAWDEN_Pos                  (22U)                              
+#define ADC_CR1_JAWDEN_Msk                  (0x1U << ADC_CR1_JAWDEN_Pos)       /*!< 0x00400000 */
+#define ADC_CR1_JAWDEN                      ADC_CR1_JAWDEN_Msk                 /*!< ADC analog watchdog 1 enable on scope ADC group injected */
+#define ADC_CR1_AWDEN_Pos                   (23U)                              
+#define ADC_CR1_AWDEN_Msk                   (0x1U << ADC_CR1_AWDEN_Pos)        /*!< 0x00800000 */
+#define ADC_CR1_AWDEN                       ADC_CR1_AWDEN_Msk                  /*!< ADC analog watchdog 1 enable on scope ADC group regular */
+
+/* Legacy defines */
+#define  ADC_CR1_EOCIE                       (ADC_CR1_EOSIE)
+#define  ADC_CR1_JEOCIE                      (ADC_CR1_JEOSIE)
+
+/*******************  Bit definition for ADC_CR2 register  ********************/
+#define ADC_CR2_ADON_Pos                    (0U)                               
+#define ADC_CR2_ADON_Msk                    (0x1U << ADC_CR2_ADON_Pos)         /*!< 0x00000001 */
+#define ADC_CR2_ADON                        ADC_CR2_ADON_Msk                   /*!< ADC enable */
+#define ADC_CR2_CONT_Pos                    (1U)                               
+#define ADC_CR2_CONT_Msk                    (0x1U << ADC_CR2_CONT_Pos)         /*!< 0x00000002 */
+#define ADC_CR2_CONT                        ADC_CR2_CONT_Msk                   /*!< ADC group regular continuous conversion mode */
+#define ADC_CR2_CAL_Pos                     (2U)                               
+#define ADC_CR2_CAL_Msk                     (0x1U << ADC_CR2_CAL_Pos)          /*!< 0x00000004 */
+#define ADC_CR2_CAL                         ADC_CR2_CAL_Msk                    /*!< ADC calibration start */
+#define ADC_CR2_RSTCAL_Pos                  (3U)                               
+#define ADC_CR2_RSTCAL_Msk                  (0x1U << ADC_CR2_RSTCAL_Pos)       /*!< 0x00000008 */
+#define ADC_CR2_RSTCAL                      ADC_CR2_RSTCAL_Msk                 /*!< ADC calibration reset */
+#define ADC_CR2_DMA_Pos                     (8U)                               
+#define ADC_CR2_DMA_Msk                     (0x1U << ADC_CR2_DMA_Pos)          /*!< 0x00000100 */
+#define ADC_CR2_DMA                         ADC_CR2_DMA_Msk                    /*!< ADC DMA transfer enable */
+#define ADC_CR2_ALIGN_Pos                   (11U)                              
+#define ADC_CR2_ALIGN_Msk                   (0x1U << ADC_CR2_ALIGN_Pos)        /*!< 0x00000800 */
+#define ADC_CR2_ALIGN                       ADC_CR2_ALIGN_Msk                  /*!< ADC data alignement */
+
+#define ADC_CR2_JEXTSEL_Pos                 (12U)                              
+#define ADC_CR2_JEXTSEL_Msk                 (0x7U << ADC_CR2_JEXTSEL_Pos)      /*!< 0x00007000 */
+#define ADC_CR2_JEXTSEL                     ADC_CR2_JEXTSEL_Msk                /*!< ADC group injected external trigger source */
+#define ADC_CR2_JEXTSEL_0                   (0x1U << ADC_CR2_JEXTSEL_Pos)      /*!< 0x00001000 */
+#define ADC_CR2_JEXTSEL_1                   (0x2U << ADC_CR2_JEXTSEL_Pos)      /*!< 0x00002000 */
+#define ADC_CR2_JEXTSEL_2                   (0x4U << ADC_CR2_JEXTSEL_Pos)      /*!< 0x00004000 */
+
+#define ADC_CR2_JEXTTRIG_Pos                (15U)                              
+#define ADC_CR2_JEXTTRIG_Msk                (0x1U << ADC_CR2_JEXTTRIG_Pos)     /*!< 0x00008000 */
+#define ADC_CR2_JEXTTRIG                    ADC_CR2_JEXTTRIG_Msk               /*!< ADC group injected external trigger enable */
+
+#define ADC_CR2_EXTSEL_Pos                  (17U)                              
+#define ADC_CR2_EXTSEL_Msk                  (0x7U << ADC_CR2_EXTSEL_Pos)       /*!< 0x000E0000 */
+#define ADC_CR2_EXTSEL                      ADC_CR2_EXTSEL_Msk                 /*!< ADC group regular external trigger source */
+#define ADC_CR2_EXTSEL_0                    (0x1U << ADC_CR2_EXTSEL_Pos)       /*!< 0x00020000 */
+#define ADC_CR2_EXTSEL_1                    (0x2U << ADC_CR2_EXTSEL_Pos)       /*!< 0x00040000 */
+#define ADC_CR2_EXTSEL_2                    (0x4U << ADC_CR2_EXTSEL_Pos)       /*!< 0x00080000 */
+
+#define ADC_CR2_EXTTRIG_Pos                 (20U)                              
+#define ADC_CR2_EXTTRIG_Msk                 (0x1U << ADC_CR2_EXTTRIG_Pos)      /*!< 0x00100000 */
+#define ADC_CR2_EXTTRIG                     ADC_CR2_EXTTRIG_Msk                /*!< ADC group regular external trigger enable */
+#define ADC_CR2_JSWSTART_Pos                (21U)                              
+#define ADC_CR2_JSWSTART_Msk                (0x1U << ADC_CR2_JSWSTART_Pos)     /*!< 0x00200000 */
+#define ADC_CR2_JSWSTART                    ADC_CR2_JSWSTART_Msk               /*!< ADC group injected conversion start */
+#define ADC_CR2_SWSTART_Pos                 (22U)                              
+#define ADC_CR2_SWSTART_Msk                 (0x1U << ADC_CR2_SWSTART_Pos)      /*!< 0x00400000 */
+#define ADC_CR2_SWSTART                     ADC_CR2_SWSTART_Msk                /*!< ADC group regular conversion start */
+#define ADC_CR2_TSVREFE_Pos                 (23U)                              
+#define ADC_CR2_TSVREFE_Msk                 (0x1U << ADC_CR2_TSVREFE_Pos)      /*!< 0x00800000 */
+#define ADC_CR2_TSVREFE                     ADC_CR2_TSVREFE_Msk                /*!< ADC internal path to VrefInt and temperature sensor enable */
+
+/******************  Bit definition for ADC_SMPR1 register  *******************/
+#define ADC_SMPR1_SMP10_Pos                 (0U)                               
+#define ADC_SMPR1_SMP10_Msk                 (0x7U << ADC_SMPR1_SMP10_Pos)      /*!< 0x00000007 */
+#define ADC_SMPR1_SMP10                     ADC_SMPR1_SMP10_Msk                /*!< ADC channel 10 sampling time selection  */
+#define ADC_SMPR1_SMP10_0                   (0x1U << ADC_SMPR1_SMP10_Pos)      /*!< 0x00000001 */
+#define ADC_SMPR1_SMP10_1                   (0x2U << ADC_SMPR1_SMP10_Pos)      /*!< 0x00000002 */
+#define ADC_SMPR1_SMP10_2                   (0x4U << ADC_SMPR1_SMP10_Pos)      /*!< 0x00000004 */
+
+#define ADC_SMPR1_SMP11_Pos                 (3U)                               
+#define ADC_SMPR1_SMP11_Msk                 (0x7U << ADC_SMPR1_SMP11_Pos)      /*!< 0x00000038 */
+#define ADC_SMPR1_SMP11                     ADC_SMPR1_SMP11_Msk                /*!< ADC channel 11 sampling time selection  */
+#define ADC_SMPR1_SMP11_0                   (0x1U << ADC_SMPR1_SMP11_Pos)      /*!< 0x00000008 */
+#define ADC_SMPR1_SMP11_1                   (0x2U << ADC_SMPR1_SMP11_Pos)      /*!< 0x00000010 */
+#define ADC_SMPR1_SMP11_2                   (0x4U << ADC_SMPR1_SMP11_Pos)      /*!< 0x00000020 */
+
+#define ADC_SMPR1_SMP12_Pos                 (6U)                               
+#define ADC_SMPR1_SMP12_Msk                 (0x7U << ADC_SMPR1_SMP12_Pos)      /*!< 0x000001C0 */
+#define ADC_SMPR1_SMP12                     ADC_SMPR1_SMP12_Msk                /*!< ADC channel 12 sampling time selection  */
+#define ADC_SMPR1_SMP12_0                   (0x1U << ADC_SMPR1_SMP12_Pos)      /*!< 0x00000040 */
+#define ADC_SMPR1_SMP12_1                   (0x2U << ADC_SMPR1_SMP12_Pos)      /*!< 0x00000080 */
+#define ADC_SMPR1_SMP12_2                   (0x4U << ADC_SMPR1_SMP12_Pos)      /*!< 0x00000100 */
+
+#define ADC_SMPR1_SMP13_Pos                 (9U)                               
+#define ADC_SMPR1_SMP13_Msk                 (0x7U << ADC_SMPR1_SMP13_Pos)      /*!< 0x00000E00 */
+#define ADC_SMPR1_SMP13                     ADC_SMPR1_SMP13_Msk                /*!< ADC channel 13 sampling time selection  */
+#define ADC_SMPR1_SMP13_0                   (0x1U << ADC_SMPR1_SMP13_Pos)      /*!< 0x00000200 */
+#define ADC_SMPR1_SMP13_1                   (0x2U << ADC_SMPR1_SMP13_Pos)      /*!< 0x00000400 */
+#define ADC_SMPR1_SMP13_2                   (0x4U << ADC_SMPR1_SMP13_Pos)      /*!< 0x00000800 */
+
+#define ADC_SMPR1_SMP14_Pos                 (12U)                              
+#define ADC_SMPR1_SMP14_Msk                 (0x7U << ADC_SMPR1_SMP14_Pos)      /*!< 0x00007000 */
+#define ADC_SMPR1_SMP14                     ADC_SMPR1_SMP14_Msk                /*!< ADC channel 14 sampling time selection  */
+#define ADC_SMPR1_SMP14_0                   (0x1U << ADC_SMPR1_SMP14_Pos)      /*!< 0x00001000 */
+#define ADC_SMPR1_SMP14_1                   (0x2U << ADC_SMPR1_SMP14_Pos)      /*!< 0x00002000 */
+#define ADC_SMPR1_SMP14_2                   (0x4U << ADC_SMPR1_SMP14_Pos)      /*!< 0x00004000 */
+
+#define ADC_SMPR1_SMP15_Pos                 (15U)                              
+#define ADC_SMPR1_SMP15_Msk                 (0x7U << ADC_SMPR1_SMP15_Pos)      /*!< 0x00038000 */
+#define ADC_SMPR1_SMP15                     ADC_SMPR1_SMP15_Msk                /*!< ADC channel 15 sampling time selection  */
+#define ADC_SMPR1_SMP15_0                   (0x1U << ADC_SMPR1_SMP15_Pos)      /*!< 0x00008000 */
+#define ADC_SMPR1_SMP15_1                   (0x2U << ADC_SMPR1_SMP15_Pos)      /*!< 0x00010000 */
+#define ADC_SMPR1_SMP15_2                   (0x4U << ADC_SMPR1_SMP15_Pos)      /*!< 0x00020000 */
+
+#define ADC_SMPR1_SMP16_Pos                 (18U)                              
+#define ADC_SMPR1_SMP16_Msk                 (0x7U << ADC_SMPR1_SMP16_Pos)      /*!< 0x001C0000 */
+#define ADC_SMPR1_SMP16                     ADC_SMPR1_SMP16_Msk                /*!< ADC channel 16 sampling time selection  */
+#define ADC_SMPR1_SMP16_0                   (0x1U << ADC_SMPR1_SMP16_Pos)      /*!< 0x00040000 */
+#define ADC_SMPR1_SMP16_1                   (0x2U << ADC_SMPR1_SMP16_Pos)      /*!< 0x00080000 */
+#define ADC_SMPR1_SMP16_2                   (0x4U << ADC_SMPR1_SMP16_Pos)      /*!< 0x00100000 */
+
+#define ADC_SMPR1_SMP17_Pos                 (21U)                              
+#define ADC_SMPR1_SMP17_Msk                 (0x7U << ADC_SMPR1_SMP17_Pos)      /*!< 0x00E00000 */
+#define ADC_SMPR1_SMP17                     ADC_SMPR1_SMP17_Msk                /*!< ADC channel 17 sampling time selection  */
+#define ADC_SMPR1_SMP17_0                   (0x1U << ADC_SMPR1_SMP17_Pos)      /*!< 0x00200000 */
+#define ADC_SMPR1_SMP17_1                   (0x2U << ADC_SMPR1_SMP17_Pos)      /*!< 0x00400000 */
+#define ADC_SMPR1_SMP17_2                   (0x4U << ADC_SMPR1_SMP17_Pos)      /*!< 0x00800000 */
+
+/******************  Bit definition for ADC_SMPR2 register  *******************/
+#define ADC_SMPR2_SMP0_Pos                  (0U)                               
+#define ADC_SMPR2_SMP0_Msk                  (0x7U << ADC_SMPR2_SMP0_Pos)       /*!< 0x00000007 */
+#define ADC_SMPR2_SMP0                      ADC_SMPR2_SMP0_Msk                 /*!< ADC channel 0 sampling time selection  */
+#define ADC_SMPR2_SMP0_0                    (0x1U << ADC_SMPR2_SMP0_Pos)       /*!< 0x00000001 */
+#define ADC_SMPR2_SMP0_1                    (0x2U << ADC_SMPR2_SMP0_Pos)       /*!< 0x00000002 */
+#define ADC_SMPR2_SMP0_2                    (0x4U << ADC_SMPR2_SMP0_Pos)       /*!< 0x00000004 */
+
+#define ADC_SMPR2_SMP1_Pos                  (3U)                               
+#define ADC_SMPR2_SMP1_Msk                  (0x7U << ADC_SMPR2_SMP1_Pos)       /*!< 0x00000038 */
+#define ADC_SMPR2_SMP1                      ADC_SMPR2_SMP1_Msk                 /*!< ADC channel 1 sampling time selection  */
+#define ADC_SMPR2_SMP1_0                    (0x1U << ADC_SMPR2_SMP1_Pos)       /*!< 0x00000008 */
+#define ADC_SMPR2_SMP1_1                    (0x2U << ADC_SMPR2_SMP1_Pos)       /*!< 0x00000010 */
+#define ADC_SMPR2_SMP1_2                    (0x4U << ADC_SMPR2_SMP1_Pos)       /*!< 0x00000020 */
+
+#define ADC_SMPR2_SMP2_Pos                  (6U)                               
+#define ADC_SMPR2_SMP2_Msk                  (0x7U << ADC_SMPR2_SMP2_Pos)       /*!< 0x000001C0 */
+#define ADC_SMPR2_SMP2                      ADC_SMPR2_SMP2_Msk                 /*!< ADC channel 2 sampling time selection  */
+#define ADC_SMPR2_SMP2_0                    (0x1U << ADC_SMPR2_SMP2_Pos)       /*!< 0x00000040 */
+#define ADC_SMPR2_SMP2_1                    (0x2U << ADC_SMPR2_SMP2_Pos)       /*!< 0x00000080 */
+#define ADC_SMPR2_SMP2_2                    (0x4U << ADC_SMPR2_SMP2_Pos)       /*!< 0x00000100 */
+
+#define ADC_SMPR2_SMP3_Pos                  (9U)                               
+#define ADC_SMPR2_SMP3_Msk                  (0x7U << ADC_SMPR2_SMP3_Pos)       /*!< 0x00000E00 */
+#define ADC_SMPR2_SMP3                      ADC_SMPR2_SMP3_Msk                 /*!< ADC channel 3 sampling time selection  */
+#define ADC_SMPR2_SMP3_0                    (0x1U << ADC_SMPR2_SMP3_Pos)       /*!< 0x00000200 */
+#define ADC_SMPR2_SMP3_1                    (0x2U << ADC_SMPR2_SMP3_Pos)       /*!< 0x00000400 */
+#define ADC_SMPR2_SMP3_2                    (0x4U << ADC_SMPR2_SMP3_Pos)       /*!< 0x00000800 */
+
+#define ADC_SMPR2_SMP4_Pos                  (12U)                              
+#define ADC_SMPR2_SMP4_Msk                  (0x7U << ADC_SMPR2_SMP4_Pos)       /*!< 0x00007000 */
+#define ADC_SMPR2_SMP4                      ADC_SMPR2_SMP4_Msk                 /*!< ADC channel 4 sampling time selection  */
+#define ADC_SMPR2_SMP4_0                    (0x1U << ADC_SMPR2_SMP4_Pos)       /*!< 0x00001000 */
+#define ADC_SMPR2_SMP4_1                    (0x2U << ADC_SMPR2_SMP4_Pos)       /*!< 0x00002000 */
+#define ADC_SMPR2_SMP4_2                    (0x4U << ADC_SMPR2_SMP4_Pos)       /*!< 0x00004000 */
+
+#define ADC_SMPR2_SMP5_Pos                  (15U)                              
+#define ADC_SMPR2_SMP5_Msk                  (0x7U << ADC_SMPR2_SMP5_Pos)       /*!< 0x00038000 */
+#define ADC_SMPR2_SMP5                      ADC_SMPR2_SMP5_Msk                 /*!< ADC channel 5 sampling time selection  */
+#define ADC_SMPR2_SMP5_0                    (0x1U << ADC_SMPR2_SMP5_Pos)       /*!< 0x00008000 */
+#define ADC_SMPR2_SMP5_1                    (0x2U << ADC_SMPR2_SMP5_Pos)       /*!< 0x00010000 */
+#define ADC_SMPR2_SMP5_2                    (0x4U << ADC_SMPR2_SMP5_Pos)       /*!< 0x00020000 */
+
+#define ADC_SMPR2_SMP6_Pos                  (18U)                              
+#define ADC_SMPR2_SMP6_Msk                  (0x7U << ADC_SMPR2_SMP6_Pos)       /*!< 0x001C0000 */
+#define ADC_SMPR2_SMP6                      ADC_SMPR2_SMP6_Msk                 /*!< ADC channel 6 sampling time selection  */
+#define ADC_SMPR2_SMP6_0                    (0x1U << ADC_SMPR2_SMP6_Pos)       /*!< 0x00040000 */
+#define ADC_SMPR2_SMP6_1                    (0x2U << ADC_SMPR2_SMP6_Pos)       /*!< 0x00080000 */
+#define ADC_SMPR2_SMP6_2                    (0x4U << ADC_SMPR2_SMP6_Pos)       /*!< 0x00100000 */
+
+#define ADC_SMPR2_SMP7_Pos                  (21U)                              
+#define ADC_SMPR2_SMP7_Msk                  (0x7U << ADC_SMPR2_SMP7_Pos)       /*!< 0x00E00000 */
+#define ADC_SMPR2_SMP7                      ADC_SMPR2_SMP7_Msk                 /*!< ADC channel 7 sampling time selection  */
+#define ADC_SMPR2_SMP7_0                    (0x1U << ADC_SMPR2_SMP7_Pos)       /*!< 0x00200000 */
+#define ADC_SMPR2_SMP7_1                    (0x2U << ADC_SMPR2_SMP7_Pos)       /*!< 0x00400000 */
+#define ADC_SMPR2_SMP7_2                    (0x4U << ADC_SMPR2_SMP7_Pos)       /*!< 0x00800000 */
+
+#define ADC_SMPR2_SMP8_Pos                  (24U)                              
+#define ADC_SMPR2_SMP8_Msk                  (0x7U << ADC_SMPR2_SMP8_Pos)       /*!< 0x07000000 */
+#define ADC_SMPR2_SMP8                      ADC_SMPR2_SMP8_Msk                 /*!< ADC channel 8 sampling time selection  */
+#define ADC_SMPR2_SMP8_0                    (0x1U << ADC_SMPR2_SMP8_Pos)       /*!< 0x01000000 */
+#define ADC_SMPR2_SMP8_1                    (0x2U << ADC_SMPR2_SMP8_Pos)       /*!< 0x02000000 */
+#define ADC_SMPR2_SMP8_2                    (0x4U << ADC_SMPR2_SMP8_Pos)       /*!< 0x04000000 */
+
+#define ADC_SMPR2_SMP9_Pos                  (27U)                              
+#define ADC_SMPR2_SMP9_Msk                  (0x7U << ADC_SMPR2_SMP9_Pos)       /*!< 0x38000000 */
+#define ADC_SMPR2_SMP9                      ADC_SMPR2_SMP9_Msk                 /*!< ADC channel 9 sampling time selection  */
+#define ADC_SMPR2_SMP9_0                    (0x1U << ADC_SMPR2_SMP9_Pos)       /*!< 0x08000000 */
+#define ADC_SMPR2_SMP9_1                    (0x2U << ADC_SMPR2_SMP9_Pos)       /*!< 0x10000000 */
+#define ADC_SMPR2_SMP9_2                    (0x4U << ADC_SMPR2_SMP9_Pos)       /*!< 0x20000000 */
+
+/******************  Bit definition for ADC_JOFR1 register  *******************/
+#define ADC_JOFR1_JOFFSET1_Pos              (0U)                               
+#define ADC_JOFR1_JOFFSET1_Msk              (0xFFFU << ADC_JOFR1_JOFFSET1_Pos) /*!< 0x00000FFF */
+#define ADC_JOFR1_JOFFSET1                  ADC_JOFR1_JOFFSET1_Msk             /*!< ADC group injected sequencer rank 1 offset value */
+
+/******************  Bit definition for ADC_JOFR2 register  *******************/
+#define ADC_JOFR2_JOFFSET2_Pos              (0U)                               
+#define ADC_JOFR2_JOFFSET2_Msk              (0xFFFU << ADC_JOFR2_JOFFSET2_Pos) /*!< 0x00000FFF */
+#define ADC_JOFR2_JOFFSET2                  ADC_JOFR2_JOFFSET2_Msk             /*!< ADC group injected sequencer rank 2 offset value */
+
+/******************  Bit definition for ADC_JOFR3 register  *******************/
+#define ADC_JOFR3_JOFFSET3_Pos              (0U)                               
+#define ADC_JOFR3_JOFFSET3_Msk              (0xFFFU << ADC_JOFR3_JOFFSET3_Pos) /*!< 0x00000FFF */
+#define ADC_JOFR3_JOFFSET3                  ADC_JOFR3_JOFFSET3_Msk             /*!< ADC group injected sequencer rank 3 offset value */
+
+/******************  Bit definition for ADC_JOFR4 register  *******************/
+#define ADC_JOFR4_JOFFSET4_Pos              (0U)                               
+#define ADC_JOFR4_JOFFSET4_Msk              (0xFFFU << ADC_JOFR4_JOFFSET4_Pos) /*!< 0x00000FFF */
+#define ADC_JOFR4_JOFFSET4                  ADC_JOFR4_JOFFSET4_Msk             /*!< ADC group injected sequencer rank 4 offset value */
+
+/*******************  Bit definition for ADC_HTR register  ********************/
+#define ADC_HTR_HT_Pos                      (0U)                               
+#define ADC_HTR_HT_Msk                      (0xFFFU << ADC_HTR_HT_Pos)         /*!< 0x00000FFF */
+#define ADC_HTR_HT                          ADC_HTR_HT_Msk                     /*!< ADC analog watchdog 1 threshold high */
+
+/*******************  Bit definition for ADC_LTR register  ********************/
+#define ADC_LTR_LT_Pos                      (0U)                               
+#define ADC_LTR_LT_Msk                      (0xFFFU << ADC_LTR_LT_Pos)         /*!< 0x00000FFF */
+#define ADC_LTR_LT                          ADC_LTR_LT_Msk                     /*!< ADC analog watchdog 1 threshold low */
+
+/*******************  Bit definition for ADC_SQR1 register  *******************/
+#define ADC_SQR1_SQ13_Pos                   (0U)                               
+#define ADC_SQR1_SQ13_Msk                   (0x1FU << ADC_SQR1_SQ13_Pos)       /*!< 0x0000001F */
+#define ADC_SQR1_SQ13                       ADC_SQR1_SQ13_Msk                  /*!< ADC group regular sequencer rank 13 */
+#define ADC_SQR1_SQ13_0                     (0x01U << ADC_SQR1_SQ13_Pos)       /*!< 0x00000001 */
+#define ADC_SQR1_SQ13_1                     (0x02U << ADC_SQR1_SQ13_Pos)       /*!< 0x00000002 */
+#define ADC_SQR1_SQ13_2                     (0x04U << ADC_SQR1_SQ13_Pos)       /*!< 0x00000004 */
+#define ADC_SQR1_SQ13_3                     (0x08U << ADC_SQR1_SQ13_Pos)       /*!< 0x00000008 */
+#define ADC_SQR1_SQ13_4                     (0x10U << ADC_SQR1_SQ13_Pos)       /*!< 0x00000010 */
+
+#define ADC_SQR1_SQ14_Pos                   (5U)                               
+#define ADC_SQR1_SQ14_Msk                   (0x1FU << ADC_SQR1_SQ14_Pos)       /*!< 0x000003E0 */
+#define ADC_SQR1_SQ14                       ADC_SQR1_SQ14_Msk                  /*!< ADC group regular sequencer rank 14 */
+#define ADC_SQR1_SQ14_0                     (0x01U << ADC_SQR1_SQ14_Pos)       /*!< 0x00000020 */
+#define ADC_SQR1_SQ14_1                     (0x02U << ADC_SQR1_SQ14_Pos)       /*!< 0x00000040 */
+#define ADC_SQR1_SQ14_2                     (0x04U << ADC_SQR1_SQ14_Pos)       /*!< 0x00000080 */
+#define ADC_SQR1_SQ14_3                     (0x08U << ADC_SQR1_SQ14_Pos)       /*!< 0x00000100 */
+#define ADC_SQR1_SQ14_4                     (0x10U << ADC_SQR1_SQ14_Pos)       /*!< 0x00000200 */
+
+#define ADC_SQR1_SQ15_Pos                   (10U)                              
+#define ADC_SQR1_SQ15_Msk                   (0x1FU << ADC_SQR1_SQ15_Pos)       /*!< 0x00007C00 */
+#define ADC_SQR1_SQ15                       ADC_SQR1_SQ15_Msk                  /*!< ADC group regular sequencer rank 15 */
+#define ADC_SQR1_SQ15_0                     (0x01U << ADC_SQR1_SQ15_Pos)       /*!< 0x00000400 */
+#define ADC_SQR1_SQ15_1                     (0x02U << ADC_SQR1_SQ15_Pos)       /*!< 0x00000800 */
+#define ADC_SQR1_SQ15_2                     (0x04U << ADC_SQR1_SQ15_Pos)       /*!< 0x00001000 */
+#define ADC_SQR1_SQ15_3                     (0x08U << ADC_SQR1_SQ15_Pos)       /*!< 0x00002000 */
+#define ADC_SQR1_SQ15_4                     (0x10U << ADC_SQR1_SQ15_Pos)       /*!< 0x00004000 */
+
+#define ADC_SQR1_SQ16_Pos                   (15U)                              
+#define ADC_SQR1_SQ16_Msk                   (0x1FU << ADC_SQR1_SQ16_Pos)       /*!< 0x000F8000 */
+#define ADC_SQR1_SQ16                       ADC_SQR1_SQ16_Msk                  /*!< ADC group regular sequencer rank 16 */
+#define ADC_SQR1_SQ16_0                     (0x01U << ADC_SQR1_SQ16_Pos)       /*!< 0x00008000 */
+#define ADC_SQR1_SQ16_1                     (0x02U << ADC_SQR1_SQ16_Pos)       /*!< 0x00010000 */
+#define ADC_SQR1_SQ16_2                     (0x04U << ADC_SQR1_SQ16_Pos)       /*!< 0x00020000 */
+#define ADC_SQR1_SQ16_3                     (0x08U << ADC_SQR1_SQ16_Pos)       /*!< 0x00040000 */
+#define ADC_SQR1_SQ16_4                     (0x10U << ADC_SQR1_SQ16_Pos)       /*!< 0x00080000 */
+
+#define ADC_SQR1_L_Pos                      (20U)                              
+#define ADC_SQR1_L_Msk                      (0xFU << ADC_SQR1_L_Pos)           /*!< 0x00F00000 */
+#define ADC_SQR1_L                          ADC_SQR1_L_Msk                     /*!< ADC group regular sequencer scan length */
+#define ADC_SQR1_L_0                        (0x1U << ADC_SQR1_L_Pos)           /*!< 0x00100000 */
+#define ADC_SQR1_L_1                        (0x2U << ADC_SQR1_L_Pos)           /*!< 0x00200000 */
+#define ADC_SQR1_L_2                        (0x4U << ADC_SQR1_L_Pos)           /*!< 0x00400000 */
+#define ADC_SQR1_L_3                        (0x8U << ADC_SQR1_L_Pos)           /*!< 0x00800000 */
+
+/*******************  Bit definition for ADC_SQR2 register  *******************/
+#define ADC_SQR2_SQ7_Pos                    (0U)                               
+#define ADC_SQR2_SQ7_Msk                    (0x1FU << ADC_SQR2_SQ7_Pos)        /*!< 0x0000001F */
+#define ADC_SQR2_SQ7                        ADC_SQR2_SQ7_Msk                   /*!< ADC group regular sequencer rank 7 */
+#define ADC_SQR2_SQ7_0                      (0x01U << ADC_SQR2_SQ7_Pos)        /*!< 0x00000001 */
+#define ADC_SQR2_SQ7_1                      (0x02U << ADC_SQR2_SQ7_Pos)        /*!< 0x00000002 */
+#define ADC_SQR2_SQ7_2                      (0x04U << ADC_SQR2_SQ7_Pos)        /*!< 0x00000004 */
+#define ADC_SQR2_SQ7_3                      (0x08U << ADC_SQR2_SQ7_Pos)        /*!< 0x00000008 */
+#define ADC_SQR2_SQ7_4                      (0x10U << ADC_SQR2_SQ7_Pos)        /*!< 0x00000010 */
+
+#define ADC_SQR2_SQ8_Pos                    (5U)                               
+#define ADC_SQR2_SQ8_Msk                    (0x1FU << ADC_SQR2_SQ8_Pos)        /*!< 0x000003E0 */
+#define ADC_SQR2_SQ8                        ADC_SQR2_SQ8_Msk                   /*!< ADC group regular sequencer rank 8 */
+#define ADC_SQR2_SQ8_0                      (0x01U << ADC_SQR2_SQ8_Pos)        /*!< 0x00000020 */
+#define ADC_SQR2_SQ8_1                      (0x02U << ADC_SQR2_SQ8_Pos)        /*!< 0x00000040 */
+#define ADC_SQR2_SQ8_2                      (0x04U << ADC_SQR2_SQ8_Pos)        /*!< 0x00000080 */
+#define ADC_SQR2_SQ8_3                      (0x08U << ADC_SQR2_SQ8_Pos)        /*!< 0x00000100 */
+#define ADC_SQR2_SQ8_4                      (0x10U << ADC_SQR2_SQ8_Pos)        /*!< 0x00000200 */
+
+#define ADC_SQR2_SQ9_Pos                    (10U)                              
+#define ADC_SQR2_SQ9_Msk                    (0x1FU << ADC_SQR2_SQ9_Pos)        /*!< 0x00007C00 */
+#define ADC_SQR2_SQ9                        ADC_SQR2_SQ9_Msk                   /*!< ADC group regular sequencer rank 9 */
+#define ADC_SQR2_SQ9_0                      (0x01U << ADC_SQR2_SQ9_Pos)        /*!< 0x00000400 */
+#define ADC_SQR2_SQ9_1                      (0x02U << ADC_SQR2_SQ9_Pos)        /*!< 0x00000800 */
+#define ADC_SQR2_SQ9_2                      (0x04U << ADC_SQR2_SQ9_Pos)        /*!< 0x00001000 */
+#define ADC_SQR2_SQ9_3                      (0x08U << ADC_SQR2_SQ9_Pos)        /*!< 0x00002000 */
+#define ADC_SQR2_SQ9_4                      (0x10U << ADC_SQR2_SQ9_Pos)        /*!< 0x00004000 */
+
+#define ADC_SQR2_SQ10_Pos                   (15U)                              
+#define ADC_SQR2_SQ10_Msk                   (0x1FU << ADC_SQR2_SQ10_Pos)       /*!< 0x000F8000 */
+#define ADC_SQR2_SQ10                       ADC_SQR2_SQ10_Msk                  /*!< ADC group regular sequencer rank 10 */
+#define ADC_SQR2_SQ10_0                     (0x01U << ADC_SQR2_SQ10_Pos)       /*!< 0x00008000 */
+#define ADC_SQR2_SQ10_1                     (0x02U << ADC_SQR2_SQ10_Pos)       /*!< 0x00010000 */
+#define ADC_SQR2_SQ10_2                     (0x04U << ADC_SQR2_SQ10_Pos)       /*!< 0x00020000 */
+#define ADC_SQR2_SQ10_3                     (0x08U << ADC_SQR2_SQ10_Pos)       /*!< 0x00040000 */
+#define ADC_SQR2_SQ10_4                     (0x10U << ADC_SQR2_SQ10_Pos)       /*!< 0x00080000 */
+
+#define ADC_SQR2_SQ11_Pos                   (20U)                              
+#define ADC_SQR2_SQ11_Msk                   (0x1FU << ADC_SQR2_SQ11_Pos)       /*!< 0x01F00000 */
+#define ADC_SQR2_SQ11                       ADC_SQR2_SQ11_Msk                  /*!< ADC group regular sequencer rank 1 */
+#define ADC_SQR2_SQ11_0                     (0x01U << ADC_SQR2_SQ11_Pos)       /*!< 0x00100000 */
+#define ADC_SQR2_SQ11_1                     (0x02U << ADC_SQR2_SQ11_Pos)       /*!< 0x00200000 */
+#define ADC_SQR2_SQ11_2                     (0x04U << ADC_SQR2_SQ11_Pos)       /*!< 0x00400000 */
+#define ADC_SQR2_SQ11_3                     (0x08U << ADC_SQR2_SQ11_Pos)       /*!< 0x00800000 */
+#define ADC_SQR2_SQ11_4                     (0x10U << ADC_SQR2_SQ11_Pos)       /*!< 0x01000000 */
+
+#define ADC_SQR2_SQ12_Pos                   (25U)                              
+#define ADC_SQR2_SQ12_Msk                   (0x1FU << ADC_SQR2_SQ12_Pos)       /*!< 0x3E000000 */
+#define ADC_SQR2_SQ12                       ADC_SQR2_SQ12_Msk                  /*!< ADC group regular sequencer rank 12 */
+#define ADC_SQR2_SQ12_0                     (0x01U << ADC_SQR2_SQ12_Pos)       /*!< 0x02000000 */
+#define ADC_SQR2_SQ12_1                     (0x02U << ADC_SQR2_SQ12_Pos)       /*!< 0x04000000 */
+#define ADC_SQR2_SQ12_2                     (0x04U << ADC_SQR2_SQ12_Pos)       /*!< 0x08000000 */
+#define ADC_SQR2_SQ12_3                     (0x08U << ADC_SQR2_SQ12_Pos)       /*!< 0x10000000 */
+#define ADC_SQR2_SQ12_4                     (0x10U << ADC_SQR2_SQ12_Pos)       /*!< 0x20000000 */
+
+/*******************  Bit definition for ADC_SQR3 register  *******************/
+#define ADC_SQR3_SQ1_Pos                    (0U)                               
+#define ADC_SQR3_SQ1_Msk                    (0x1FU << ADC_SQR3_SQ1_Pos)        /*!< 0x0000001F */
+#define ADC_SQR3_SQ1                        ADC_SQR3_SQ1_Msk                   /*!< ADC group regular sequencer rank 1 */
+#define ADC_SQR3_SQ1_0                      (0x01U << ADC_SQR3_SQ1_Pos)        /*!< 0x00000001 */
+#define ADC_SQR3_SQ1_1                      (0x02U << ADC_SQR3_SQ1_Pos)        /*!< 0x00000002 */
+#define ADC_SQR3_SQ1_2                      (0x04U << ADC_SQR3_SQ1_Pos)        /*!< 0x00000004 */
+#define ADC_SQR3_SQ1_3                      (0x08U << ADC_SQR3_SQ1_Pos)        /*!< 0x00000008 */
+#define ADC_SQR3_SQ1_4                      (0x10U << ADC_SQR3_SQ1_Pos)        /*!< 0x00000010 */
+
+#define ADC_SQR3_SQ2_Pos                    (5U)                               
+#define ADC_SQR3_SQ2_Msk                    (0x1FU << ADC_SQR3_SQ2_Pos)        /*!< 0x000003E0 */
+#define ADC_SQR3_SQ2                        ADC_SQR3_SQ2_Msk                   /*!< ADC group regular sequencer rank 2 */
+#define ADC_SQR3_SQ2_0                      (0x01U << ADC_SQR3_SQ2_Pos)        /*!< 0x00000020 */
+#define ADC_SQR3_SQ2_1                      (0x02U << ADC_SQR3_SQ2_Pos)        /*!< 0x00000040 */
+#define ADC_SQR3_SQ2_2                      (0x04U << ADC_SQR3_SQ2_Pos)        /*!< 0x00000080 */
+#define ADC_SQR3_SQ2_3                      (0x08U << ADC_SQR3_SQ2_Pos)        /*!< 0x00000100 */
+#define ADC_SQR3_SQ2_4                      (0x10U << ADC_SQR3_SQ2_Pos)        /*!< 0x00000200 */
+
+#define ADC_SQR3_SQ3_Pos                    (10U)                              
+#define ADC_SQR3_SQ3_Msk                    (0x1FU << ADC_SQR3_SQ3_Pos)        /*!< 0x00007C00 */
+#define ADC_SQR3_SQ3                        ADC_SQR3_SQ3_Msk                   /*!< ADC group regular sequencer rank 3 */
+#define ADC_SQR3_SQ3_0                      (0x01U << ADC_SQR3_SQ3_Pos)        /*!< 0x00000400 */
+#define ADC_SQR3_SQ3_1                      (0x02U << ADC_SQR3_SQ3_Pos)        /*!< 0x00000800 */
+#define ADC_SQR3_SQ3_2                      (0x04U << ADC_SQR3_SQ3_Pos)        /*!< 0x00001000 */
+#define ADC_SQR3_SQ3_3                      (0x08U << ADC_SQR3_SQ3_Pos)        /*!< 0x00002000 */
+#define ADC_SQR3_SQ3_4                      (0x10U << ADC_SQR3_SQ3_Pos)        /*!< 0x00004000 */
+
+#define ADC_SQR3_SQ4_Pos                    (15U)                              
+#define ADC_SQR3_SQ4_Msk                    (0x1FU << ADC_SQR3_SQ4_Pos)        /*!< 0x000F8000 */
+#define ADC_SQR3_SQ4                        ADC_SQR3_SQ4_Msk                   /*!< ADC group regular sequencer rank 4 */
+#define ADC_SQR3_SQ4_0                      (0x01U << ADC_SQR3_SQ4_Pos)        /*!< 0x00008000 */
+#define ADC_SQR3_SQ4_1                      (0x02U << ADC_SQR3_SQ4_Pos)        /*!< 0x00010000 */
+#define ADC_SQR3_SQ4_2                      (0x04U << ADC_SQR3_SQ4_Pos)        /*!< 0x00020000 */
+#define ADC_SQR3_SQ4_3                      (0x08U << ADC_SQR3_SQ4_Pos)        /*!< 0x00040000 */
+#define ADC_SQR3_SQ4_4                      (0x10U << ADC_SQR3_SQ4_Pos)        /*!< 0x00080000 */
+
+#define ADC_SQR3_SQ5_Pos                    (20U)                              
+#define ADC_SQR3_SQ5_Msk                    (0x1FU << ADC_SQR3_SQ5_Pos)        /*!< 0x01F00000 */
+#define ADC_SQR3_SQ5                        ADC_SQR3_SQ5_Msk                   /*!< ADC group regular sequencer rank 5 */
+#define ADC_SQR3_SQ5_0                      (0x01U << ADC_SQR3_SQ5_Pos)        /*!< 0x00100000 */
+#define ADC_SQR3_SQ5_1                      (0x02U << ADC_SQR3_SQ5_Pos)        /*!< 0x00200000 */
+#define ADC_SQR3_SQ5_2                      (0x04U << ADC_SQR3_SQ5_Pos)        /*!< 0x00400000 */
+#define ADC_SQR3_SQ5_3                      (0x08U << ADC_SQR3_SQ5_Pos)        /*!< 0x00800000 */
+#define ADC_SQR3_SQ5_4                      (0x10U << ADC_SQR3_SQ5_Pos)        /*!< 0x01000000 */
+
+#define ADC_SQR3_SQ6_Pos                    (25U)                              
+#define ADC_SQR3_SQ6_Msk                    (0x1FU << ADC_SQR3_SQ6_Pos)        /*!< 0x3E000000 */
+#define ADC_SQR3_SQ6                        ADC_SQR3_SQ6_Msk                   /*!< ADC group regular sequencer rank 6 */
+#define ADC_SQR3_SQ6_0                      (0x01U << ADC_SQR3_SQ6_Pos)        /*!< 0x02000000 */
+#define ADC_SQR3_SQ6_1                      (0x02U << ADC_SQR3_SQ6_Pos)        /*!< 0x04000000 */
+#define ADC_SQR3_SQ6_2                      (0x04U << ADC_SQR3_SQ6_Pos)        /*!< 0x08000000 */
+#define ADC_SQR3_SQ6_3                      (0x08U << ADC_SQR3_SQ6_Pos)        /*!< 0x10000000 */
+#define ADC_SQR3_SQ6_4                      (0x10U << ADC_SQR3_SQ6_Pos)        /*!< 0x20000000 */
+
+/*******************  Bit definition for ADC_JSQR register  *******************/
+#define ADC_JSQR_JSQ1_Pos                   (0U)                               
+#define ADC_JSQR_JSQ1_Msk                   (0x1FU << ADC_JSQR_JSQ1_Pos)       /*!< 0x0000001F */
+#define ADC_JSQR_JSQ1                       ADC_JSQR_JSQ1_Msk                  /*!< ADC group injected sequencer rank 1 */
+#define ADC_JSQR_JSQ1_0                     (0x01U << ADC_JSQR_JSQ1_Pos)       /*!< 0x00000001 */
+#define ADC_JSQR_JSQ1_1                     (0x02U << ADC_JSQR_JSQ1_Pos)       /*!< 0x00000002 */
+#define ADC_JSQR_JSQ1_2                     (0x04U << ADC_JSQR_JSQ1_Pos)       /*!< 0x00000004 */
+#define ADC_JSQR_JSQ1_3                     (0x08U << ADC_JSQR_JSQ1_Pos)       /*!< 0x00000008 */
+#define ADC_JSQR_JSQ1_4                     (0x10U << ADC_JSQR_JSQ1_Pos)       /*!< 0x00000010 */
+
+#define ADC_JSQR_JSQ2_Pos                   (5U)                               
+#define ADC_JSQR_JSQ2_Msk                   (0x1FU << ADC_JSQR_JSQ2_Pos)       /*!< 0x000003E0 */
+#define ADC_JSQR_JSQ2                       ADC_JSQR_JSQ2_Msk                  /*!< ADC group injected sequencer rank 2 */
+#define ADC_JSQR_JSQ2_0                     (0x01U << ADC_JSQR_JSQ2_Pos)       /*!< 0x00000020 */
+#define ADC_JSQR_JSQ2_1                     (0x02U << ADC_JSQR_JSQ2_Pos)       /*!< 0x00000040 */
+#define ADC_JSQR_JSQ2_2                     (0x04U << ADC_JSQR_JSQ2_Pos)       /*!< 0x00000080 */
+#define ADC_JSQR_JSQ2_3                     (0x08U << ADC_JSQR_JSQ2_Pos)       /*!< 0x00000100 */
+#define ADC_JSQR_JSQ2_4                     (0x10U << ADC_JSQR_JSQ2_Pos)       /*!< 0x00000200 */
+
+#define ADC_JSQR_JSQ3_Pos                   (10U)                              
+#define ADC_JSQR_JSQ3_Msk                   (0x1FU << ADC_JSQR_JSQ3_Pos)       /*!< 0x00007C00 */
+#define ADC_JSQR_JSQ3                       ADC_JSQR_JSQ3_Msk                  /*!< ADC group injected sequencer rank 3 */
+#define ADC_JSQR_JSQ3_0                     (0x01U << ADC_JSQR_JSQ3_Pos)       /*!< 0x00000400 */
+#define ADC_JSQR_JSQ3_1                     (0x02U << ADC_JSQR_JSQ3_Pos)       /*!< 0x00000800 */
+#define ADC_JSQR_JSQ3_2                     (0x04U << ADC_JSQR_JSQ3_Pos)       /*!< 0x00001000 */
+#define ADC_JSQR_JSQ3_3                     (0x08U << ADC_JSQR_JSQ3_Pos)       /*!< 0x00002000 */
+#define ADC_JSQR_JSQ3_4                     (0x10U << ADC_JSQR_JSQ3_Pos)       /*!< 0x00004000 */
+
+#define ADC_JSQR_JSQ4_Pos                   (15U)                              
+#define ADC_JSQR_JSQ4_Msk                   (0x1FU << ADC_JSQR_JSQ4_Pos)       /*!< 0x000F8000 */
+#define ADC_JSQR_JSQ4                       ADC_JSQR_JSQ4_Msk                  /*!< ADC group injected sequencer rank 4 */
+#define ADC_JSQR_JSQ4_0                     (0x01U << ADC_JSQR_JSQ4_Pos)       /*!< 0x00008000 */
+#define ADC_JSQR_JSQ4_1                     (0x02U << ADC_JSQR_JSQ4_Pos)       /*!< 0x00010000 */
+#define ADC_JSQR_JSQ4_2                     (0x04U << ADC_JSQR_JSQ4_Pos)       /*!< 0x00020000 */
+#define ADC_JSQR_JSQ4_3                     (0x08U << ADC_JSQR_JSQ4_Pos)       /*!< 0x00040000 */
+#define ADC_JSQR_JSQ4_4                     (0x10U << ADC_JSQR_JSQ4_Pos)       /*!< 0x00080000 */
+
+#define ADC_JSQR_JL_Pos                     (20U)                              
+#define ADC_JSQR_JL_Msk                     (0x3U << ADC_JSQR_JL_Pos)          /*!< 0x00300000 */
+#define ADC_JSQR_JL                         ADC_JSQR_JL_Msk                    /*!< ADC group injected sequencer scan length */
+#define ADC_JSQR_JL_0                       (0x1U << ADC_JSQR_JL_Pos)          /*!< 0x00100000 */
+#define ADC_JSQR_JL_1                       (0x2U << ADC_JSQR_JL_Pos)          /*!< 0x00200000 */
+
+/*******************  Bit definition for ADC_JDR1 register  *******************/
+#define ADC_JDR1_JDATA_Pos                  (0U)                               
+#define ADC_JDR1_JDATA_Msk                  (0xFFFFU << ADC_JDR1_JDATA_Pos)    /*!< 0x0000FFFF */
+#define ADC_JDR1_JDATA                      ADC_JDR1_JDATA_Msk                 /*!< ADC group injected sequencer rank 1 conversion data */
+
+/*******************  Bit definition for ADC_JDR2 register  *******************/
+#define ADC_JDR2_JDATA_Pos                  (0U)                               
+#define ADC_JDR2_JDATA_Msk                  (0xFFFFU << ADC_JDR2_JDATA_Pos)    /*!< 0x0000FFFF */
+#define ADC_JDR2_JDATA                      ADC_JDR2_JDATA_Msk                 /*!< ADC group injected sequencer rank 2 conversion data */
+
+/*******************  Bit definition for ADC_JDR3 register  *******************/
+#define ADC_JDR3_JDATA_Pos                  (0U)                               
+#define ADC_JDR3_JDATA_Msk                  (0xFFFFU << ADC_JDR3_JDATA_Pos)    /*!< 0x0000FFFF */
+#define ADC_JDR3_JDATA                      ADC_JDR3_JDATA_Msk                 /*!< ADC group injected sequencer rank 3 conversion data */
+
+/*******************  Bit definition for ADC_JDR4 register  *******************/
+#define ADC_JDR4_JDATA_Pos                  (0U)                               
+#define ADC_JDR4_JDATA_Msk                  (0xFFFFU << ADC_JDR4_JDATA_Pos)    /*!< 0x0000FFFF */
+#define ADC_JDR4_JDATA                      ADC_JDR4_JDATA_Msk                 /*!< ADC group injected sequencer rank 4 conversion data */
+
+/********************  Bit definition for ADC_DR register  ********************/
+#define ADC_DR_DATA_Pos                     (0U)                               
+#define ADC_DR_DATA_Msk                     (0xFFFFU << ADC_DR_DATA_Pos)       /*!< 0x0000FFFF */
+#define ADC_DR_DATA                         ADC_DR_DATA_Msk                    /*!< ADC group regular conversion data */
+#define ADC_DR_ADC2DATA_Pos                 (16U)                              
+#define ADC_DR_ADC2DATA_Msk                 (0xFFFFU << ADC_DR_ADC2DATA_Pos)   /*!< 0xFFFF0000 */
+#define ADC_DR_ADC2DATA                     ADC_DR_ADC2DATA_Msk                /*!< ADC group regular conversion data for ADC slave, in multimode */
+
+
+/*****************************************************************************/
+/*                                                                           */
+/*                               Timers (TIM)                                */
+/*                                                                           */
+/*****************************************************************************/
+/*******************  Bit definition for TIM_CR1 register  *******************/
+#define TIM_CR1_CEN_Pos                     (0U)                               
+#define TIM_CR1_CEN_Msk                     (0x1U << TIM_CR1_CEN_Pos)          /*!< 0x00000001 */
+#define TIM_CR1_CEN                         TIM_CR1_CEN_Msk                    /*!<Counter enable */
+#define TIM_CR1_UDIS_Pos                    (1U)                               
+#define TIM_CR1_UDIS_Msk                    (0x1U << TIM_CR1_UDIS_Pos)         /*!< 0x00000002 */
+#define TIM_CR1_UDIS                        TIM_CR1_UDIS_Msk                   /*!<Update disable */
+#define TIM_CR1_URS_Pos                     (2U)                               
+#define TIM_CR1_URS_Msk                     (0x1U << TIM_CR1_URS_Pos)          /*!< 0x00000004 */
+#define TIM_CR1_URS                         TIM_CR1_URS_Msk                    /*!<Update request source */
+#define TIM_CR1_OPM_Pos                     (3U)                               
+#define TIM_CR1_OPM_Msk                     (0x1U << TIM_CR1_OPM_Pos)          /*!< 0x00000008 */
+#define TIM_CR1_OPM                         TIM_CR1_OPM_Msk                    /*!<One pulse mode */
+#define TIM_CR1_DIR_Pos                     (4U)                               
+#define TIM_CR1_DIR_Msk                     (0x1U << TIM_CR1_DIR_Pos)          /*!< 0x00000010 */
+#define TIM_CR1_DIR                         TIM_CR1_DIR_Msk                    /*!<Direction */
+
+#define TIM_CR1_CMS_Pos                     (5U)                               
+#define TIM_CR1_CMS_Msk                     (0x3U << TIM_CR1_CMS_Pos)          /*!< 0x00000060 */
+#define TIM_CR1_CMS                         TIM_CR1_CMS_Msk                    /*!<CMS[1:0] bits (Center-aligned mode selection) */
+#define TIM_CR1_CMS_0                       (0x1U << TIM_CR1_CMS_Pos)          /*!< 0x00000020 */
+#define TIM_CR1_CMS_1                       (0x2U << TIM_CR1_CMS_Pos)          /*!< 0x00000040 */
+
+#define TIM_CR1_ARPE_Pos                    (7U)                               
+#define TIM_CR1_ARPE_Msk                    (0x1U << TIM_CR1_ARPE_Pos)         /*!< 0x00000080 */
+#define TIM_CR1_ARPE                        TIM_CR1_ARPE_Msk                   /*!<Auto-reload preload enable */
+
+#define TIM_CR1_CKD_Pos                     (8U)                               
+#define TIM_CR1_CKD_Msk                     (0x3U << TIM_CR1_CKD_Pos)          /*!< 0x00000300 */
+#define TIM_CR1_CKD                         TIM_CR1_CKD_Msk                    /*!<CKD[1:0] bits (clock division) */
+#define TIM_CR1_CKD_0                       (0x1U << TIM_CR1_CKD_Pos)          /*!< 0x00000100 */
+#define TIM_CR1_CKD_1                       (0x2U << TIM_CR1_CKD_Pos)          /*!< 0x00000200 */
+
+/*******************  Bit definition for TIM_CR2 register  *******************/
+#define TIM_CR2_CCPC_Pos                    (0U)                               
+#define TIM_CR2_CCPC_Msk                    (0x1U << TIM_CR2_CCPC_Pos)         /*!< 0x00000001 */
+#define TIM_CR2_CCPC                        TIM_CR2_CCPC_Msk                   /*!<Capture/Compare Preloaded Control */
+#define TIM_CR2_CCUS_Pos                    (2U)                               
+#define TIM_CR2_CCUS_Msk                    (0x1U << TIM_CR2_CCUS_Pos)         /*!< 0x00000004 */
+#define TIM_CR2_CCUS                        TIM_CR2_CCUS_Msk                   /*!<Capture/Compare Control Update Selection */
+#define TIM_CR2_CCDS_Pos                    (3U)                               
+#define TIM_CR2_CCDS_Msk                    (0x1U << TIM_CR2_CCDS_Pos)         /*!< 0x00000008 */
+#define TIM_CR2_CCDS                        TIM_CR2_CCDS_Msk                   /*!<Capture/Compare DMA Selection */
+
+#define TIM_CR2_MMS_Pos                     (4U)                               
+#define TIM_CR2_MMS_Msk                     (0x7U << TIM_CR2_MMS_Pos)          /*!< 0x00000070 */
+#define TIM_CR2_MMS                         TIM_CR2_MMS_Msk                    /*!<MMS[2:0] bits (Master Mode Selection) */
+#define TIM_CR2_MMS_0                       (0x1U << TIM_CR2_MMS_Pos)          /*!< 0x00000010 */
+#define TIM_CR2_MMS_1                       (0x2U << TIM_CR2_MMS_Pos)          /*!< 0x00000020 */
+#define TIM_CR2_MMS_2                       (0x4U << TIM_CR2_MMS_Pos)          /*!< 0x00000040 */
+
+#define TIM_CR2_TI1S_Pos                    (7U)                               
+#define TIM_CR2_TI1S_Msk                    (0x1U << TIM_CR2_TI1S_Pos)         /*!< 0x00000080 */
+#define TIM_CR2_TI1S                        TIM_CR2_TI1S_Msk                   /*!<TI1 Selection */
+#define TIM_CR2_OIS1_Pos                    (8U)                               
+#define TIM_CR2_OIS1_Msk                    (0x1U << TIM_CR2_OIS1_Pos)         /*!< 0x00000100 */
+#define TIM_CR2_OIS1                        TIM_CR2_OIS1_Msk                   /*!<Output Idle state 1 (OC1 output) */
+#define TIM_CR2_OIS1N_Pos                   (9U)                               
+#define TIM_CR2_OIS1N_Msk                   (0x1U << TIM_CR2_OIS1N_Pos)        /*!< 0x00000200 */
+#define TIM_CR2_OIS1N                       TIM_CR2_OIS1N_Msk                  /*!<Output Idle state 1 (OC1N output) */
+#define TIM_CR2_OIS2_Pos                    (10U)                              
+#define TIM_CR2_OIS2_Msk                    (0x1U << TIM_CR2_OIS2_Pos)         /*!< 0x00000400 */
+#define TIM_CR2_OIS2                        TIM_CR2_OIS2_Msk                   /*!<Output Idle state 2 (OC2 output) */
+#define TIM_CR2_OIS2N_Pos                   (11U)                              
+#define TIM_CR2_OIS2N_Msk                   (0x1U << TIM_CR2_OIS2N_Pos)        /*!< 0x00000800 */
+#define TIM_CR2_OIS2N                       TIM_CR2_OIS2N_Msk                  /*!<Output Idle state 2 (OC2N output) */
+#define TIM_CR2_OIS3_Pos                    (12U)                              
+#define TIM_CR2_OIS3_Msk                    (0x1U << TIM_CR2_OIS3_Pos)         /*!< 0x00001000 */
+#define TIM_CR2_OIS3                        TIM_CR2_OIS3_Msk                   /*!<Output Idle state 3 (OC3 output) */
+#define TIM_CR2_OIS3N_Pos                   (13U)                              
+#define TIM_CR2_OIS3N_Msk                   (0x1U << TIM_CR2_OIS3N_Pos)        /*!< 0x00002000 */
+#define TIM_CR2_OIS3N                       TIM_CR2_OIS3N_Msk                  /*!<Output Idle state 3 (OC3N output) */
+#define TIM_CR2_OIS4_Pos                    (14U)                              
+#define TIM_CR2_OIS4_Msk                    (0x1U << TIM_CR2_OIS4_Pos)         /*!< 0x00004000 */
+#define TIM_CR2_OIS4                        TIM_CR2_OIS4_Msk                   /*!<Output Idle state 4 (OC4 output) */
+
+/*******************  Bit definition for TIM_SMCR register  ******************/
+#define TIM_SMCR_SMS_Pos                    (0U)                               
+#define TIM_SMCR_SMS_Msk                    (0x7U << TIM_SMCR_SMS_Pos)         /*!< 0x00000007 */
+#define TIM_SMCR_SMS                        TIM_SMCR_SMS_Msk                   /*!<SMS[2:0] bits (Slave mode selection) */
+#define TIM_SMCR_SMS_0                      (0x1U << TIM_SMCR_SMS_Pos)         /*!< 0x00000001 */
+#define TIM_SMCR_SMS_1                      (0x2U << TIM_SMCR_SMS_Pos)         /*!< 0x00000002 */
+#define TIM_SMCR_SMS_2                      (0x4U << TIM_SMCR_SMS_Pos)         /*!< 0x00000004 */
+
+#define TIM_SMCR_OCCS_Pos                   (3U)                               
+#define TIM_SMCR_OCCS_Msk                   (0x1U << TIM_SMCR_OCCS_Pos)        /*!< 0x00000008 */
+#define TIM_SMCR_OCCS                       TIM_SMCR_OCCS_Msk                  /*!< OCREF clear selection */
+
+#define TIM_SMCR_TS_Pos                     (4U)                               
+#define TIM_SMCR_TS_Msk                     (0x7U << TIM_SMCR_TS_Pos)          /*!< 0x00000070 */
+#define TIM_SMCR_TS                         TIM_SMCR_TS_Msk                    /*!<TS[2:0] bits (Trigger selection) */
+#define TIM_SMCR_TS_0                       (0x1U << TIM_SMCR_TS_Pos)          /*!< 0x00000010 */
+#define TIM_SMCR_TS_1                       (0x2U << TIM_SMCR_TS_Pos)          /*!< 0x00000020 */
+#define TIM_SMCR_TS_2                       (0x4U << TIM_SMCR_TS_Pos)          /*!< 0x00000040 */
+
+#define TIM_SMCR_MSM_Pos                    (7U)                               
+#define TIM_SMCR_MSM_Msk                    (0x1U << TIM_SMCR_MSM_Pos)         /*!< 0x00000080 */
+#define TIM_SMCR_MSM                        TIM_SMCR_MSM_Msk                   /*!<Master/slave mode */
+
+#define TIM_SMCR_ETF_Pos                    (8U)                               
+#define TIM_SMCR_ETF_Msk                    (0xFU << TIM_SMCR_ETF_Pos)         /*!< 0x00000F00 */
+#define TIM_SMCR_ETF                        TIM_SMCR_ETF_Msk                   /*!<ETF[3:0] bits (External trigger filter) */
+#define TIM_SMCR_ETF_0                      (0x1U << TIM_SMCR_ETF_Pos)         /*!< 0x00000100 */
+#define TIM_SMCR_ETF_1                      (0x2U << TIM_SMCR_ETF_Pos)         /*!< 0x00000200 */
+#define TIM_SMCR_ETF_2                      (0x4U << TIM_SMCR_ETF_Pos)         /*!< 0x00000400 */
+#define TIM_SMCR_ETF_3                      (0x8U << TIM_SMCR_ETF_Pos)         /*!< 0x00000800 */
+
+#define TIM_SMCR_ETPS_Pos                   (12U)                              
+#define TIM_SMCR_ETPS_Msk                   (0x3U << TIM_SMCR_ETPS_Pos)        /*!< 0x00003000 */
+#define TIM_SMCR_ETPS                       TIM_SMCR_ETPS_Msk                  /*!<ETPS[1:0] bits (External trigger prescaler) */
+#define TIM_SMCR_ETPS_0                     (0x1U << TIM_SMCR_ETPS_Pos)        /*!< 0x00001000 */
+#define TIM_SMCR_ETPS_1                     (0x2U << TIM_SMCR_ETPS_Pos)        /*!< 0x00002000 */
+
+#define TIM_SMCR_ECE_Pos                    (14U)                              
+#define TIM_SMCR_ECE_Msk                    (0x1U << TIM_SMCR_ECE_Pos)         /*!< 0x00004000 */
+#define TIM_SMCR_ECE                        TIM_SMCR_ECE_Msk                   /*!<External clock enable */
+#define TIM_SMCR_ETP_Pos                    (15U)                              
+#define TIM_SMCR_ETP_Msk                    (0x1U << TIM_SMCR_ETP_Pos)         /*!< 0x00008000 */
+#define TIM_SMCR_ETP                        TIM_SMCR_ETP_Msk                   /*!<External trigger polarity */
+
+/*******************  Bit definition for TIM_DIER register  ******************/
+#define TIM_DIER_UIE_Pos                    (0U)                               
+#define TIM_DIER_UIE_Msk                    (0x1U << TIM_DIER_UIE_Pos)         /*!< 0x00000001 */
+#define TIM_DIER_UIE                        TIM_DIER_UIE_Msk                   /*!<Update interrupt enable */
+#define TIM_DIER_CC1IE_Pos                  (1U)                               
+#define TIM_DIER_CC1IE_Msk                  (0x1U << TIM_DIER_CC1IE_Pos)       /*!< 0x00000002 */
+#define TIM_DIER_CC1IE                      TIM_DIER_CC1IE_Msk                 /*!<Capture/Compare 1 interrupt enable */
+#define TIM_DIER_CC2IE_Pos                  (2U)                               
+#define TIM_DIER_CC2IE_Msk                  (0x1U << TIM_DIER_CC2IE_Pos)       /*!< 0x00000004 */
+#define TIM_DIER_CC2IE                      TIM_DIER_CC2IE_Msk                 /*!<Capture/Compare 2 interrupt enable */
+#define TIM_DIER_CC3IE_Pos                  (3U)                               
+#define TIM_DIER_CC3IE_Msk                  (0x1U << TIM_DIER_CC3IE_Pos)       /*!< 0x00000008 */
+#define TIM_DIER_CC3IE                      TIM_DIER_CC3IE_Msk                 /*!<Capture/Compare 3 interrupt enable */
+#define TIM_DIER_CC4IE_Pos                  (4U)                               
+#define TIM_DIER_CC4IE_Msk                  (0x1U << TIM_DIER_CC4IE_Pos)       /*!< 0x00000010 */
+#define TIM_DIER_CC4IE                      TIM_DIER_CC4IE_Msk                 /*!<Capture/Compare 4 interrupt enable */
+#define TIM_DIER_COMIE_Pos                  (5U)                               
+#define TIM_DIER_COMIE_Msk                  (0x1U << TIM_DIER_COMIE_Pos)       /*!< 0x00000020 */
+#define TIM_DIER_COMIE                      TIM_DIER_COMIE_Msk                 /*!<COM interrupt enable */
+#define TIM_DIER_TIE_Pos                    (6U)                               
+#define TIM_DIER_TIE_Msk                    (0x1U << TIM_DIER_TIE_Pos)         /*!< 0x00000040 */
+#define TIM_DIER_TIE                        TIM_DIER_TIE_Msk                   /*!<Trigger interrupt enable */
+#define TIM_DIER_BIE_Pos                    (7U)                               
+#define TIM_DIER_BIE_Msk                    (0x1U << TIM_DIER_BIE_Pos)         /*!< 0x00000080 */
+#define TIM_DIER_BIE                        TIM_DIER_BIE_Msk                   /*!<Break interrupt enable */
+#define TIM_DIER_UDE_Pos                    (8U)                               
+#define TIM_DIER_UDE_Msk                    (0x1U << TIM_DIER_UDE_Pos)         /*!< 0x00000100 */
+#define TIM_DIER_UDE                        TIM_DIER_UDE_Msk                   /*!<Update DMA request enable */
+#define TIM_DIER_CC1DE_Pos                  (9U)                               
+#define TIM_DIER_CC1DE_Msk                  (0x1U << TIM_DIER_CC1DE_Pos)       /*!< 0x00000200 */
+#define TIM_DIER_CC1DE                      TIM_DIER_CC1DE_Msk                 /*!<Capture/Compare 1 DMA request enable */
+#define TIM_DIER_CC2DE_Pos                  (10U)                              
+#define TIM_DIER_CC2DE_Msk                  (0x1U << TIM_DIER_CC2DE_Pos)       /*!< 0x00000400 */
+#define TIM_DIER_CC2DE                      TIM_DIER_CC2DE_Msk                 /*!<Capture/Compare 2 DMA request enable */
+#define TIM_DIER_CC3DE_Pos                  (11U)                              
+#define TIM_DIER_CC3DE_Msk                  (0x1U << TIM_DIER_CC3DE_Pos)       /*!< 0x00000800 */
+#define TIM_DIER_CC3DE                      TIM_DIER_CC3DE_Msk                 /*!<Capture/Compare 3 DMA request enable */
+#define TIM_DIER_CC4DE_Pos                  (12U)                              
+#define TIM_DIER_CC4DE_Msk                  (0x1U << TIM_DIER_CC4DE_Pos)       /*!< 0x00001000 */
+#define TIM_DIER_CC4DE                      TIM_DIER_CC4DE_Msk                 /*!<Capture/Compare 4 DMA request enable */
+#define TIM_DIER_COMDE_Pos                  (13U)                              
+#define TIM_DIER_COMDE_Msk                  (0x1U << TIM_DIER_COMDE_Pos)       /*!< 0x00002000 */
+#define TIM_DIER_COMDE                      TIM_DIER_COMDE_Msk                 /*!<COM DMA request enable */
+#define TIM_DIER_TDE_Pos                    (14U)                              
+#define TIM_DIER_TDE_Msk                    (0x1U << TIM_DIER_TDE_Pos)         /*!< 0x00004000 */
+#define TIM_DIER_TDE                        TIM_DIER_TDE_Msk                   /*!<Trigger DMA request enable */
+
+/********************  Bit definition for TIM_SR register  *******************/
+#define TIM_SR_UIF_Pos                      (0U)                               
+#define TIM_SR_UIF_Msk                      (0x1U << TIM_SR_UIF_Pos)           /*!< 0x00000001 */
+#define TIM_SR_UIF                          TIM_SR_UIF_Msk                     /*!<Update interrupt Flag */
+#define TIM_SR_CC1IF_Pos                    (1U)                               
+#define TIM_SR_CC1IF_Msk                    (0x1U << TIM_SR_CC1IF_Pos)         /*!< 0x00000002 */
+#define TIM_SR_CC1IF                        TIM_SR_CC1IF_Msk                   /*!<Capture/Compare 1 interrupt Flag */
+#define TIM_SR_CC2IF_Pos                    (2U)                               
+#define TIM_SR_CC2IF_Msk                    (0x1U << TIM_SR_CC2IF_Pos)         /*!< 0x00000004 */
+#define TIM_SR_CC2IF                        TIM_SR_CC2IF_Msk                   /*!<Capture/Compare 2 interrupt Flag */
+#define TIM_SR_CC3IF_Pos                    (3U)                               
+#define TIM_SR_CC3IF_Msk                    (0x1U << TIM_SR_CC3IF_Pos)         /*!< 0x00000008 */
+#define TIM_SR_CC3IF                        TIM_SR_CC3IF_Msk                   /*!<Capture/Compare 3 interrupt Flag */
+#define TIM_SR_CC4IF_Pos                    (4U)                               
+#define TIM_SR_CC4IF_Msk                    (0x1U << TIM_SR_CC4IF_Pos)         /*!< 0x00000010 */
+#define TIM_SR_CC4IF                        TIM_SR_CC4IF_Msk                   /*!<Capture/Compare 4 interrupt Flag */
+#define TIM_SR_COMIF_Pos                    (5U)                               
+#define TIM_SR_COMIF_Msk                    (0x1U << TIM_SR_COMIF_Pos)         /*!< 0x00000020 */
+#define TIM_SR_COMIF                        TIM_SR_COMIF_Msk                   /*!<COM interrupt Flag */
+#define TIM_SR_TIF_Pos                      (6U)                               
+#define TIM_SR_TIF_Msk                      (0x1U << TIM_SR_TIF_Pos)           /*!< 0x00000040 */
+#define TIM_SR_TIF                          TIM_SR_TIF_Msk                     /*!<Trigger interrupt Flag */
+#define TIM_SR_BIF_Pos                      (7U)                               
+#define TIM_SR_BIF_Msk                      (0x1U << TIM_SR_BIF_Pos)           /*!< 0x00000080 */
+#define TIM_SR_BIF                          TIM_SR_BIF_Msk                     /*!<Break interrupt Flag */
+#define TIM_SR_CC1OF_Pos                    (9U)                               
+#define TIM_SR_CC1OF_Msk                    (0x1U << TIM_SR_CC1OF_Pos)         /*!< 0x00000200 */
+#define TIM_SR_CC1OF                        TIM_SR_CC1OF_Msk                   /*!<Capture/Compare 1 Overcapture Flag */
+#define TIM_SR_CC2OF_Pos                    (10U)                              
+#define TIM_SR_CC2OF_Msk                    (0x1U << TIM_SR_CC2OF_Pos)         /*!< 0x00000400 */
+#define TIM_SR_CC2OF                        TIM_SR_CC2OF_Msk                   /*!<Capture/Compare 2 Overcapture Flag */
+#define TIM_SR_CC3OF_Pos                    (11U)                              
+#define TIM_SR_CC3OF_Msk                    (0x1U << TIM_SR_CC3OF_Pos)         /*!< 0x00000800 */
+#define TIM_SR_CC3OF                        TIM_SR_CC3OF_Msk                   /*!<Capture/Compare 3 Overcapture Flag */
+#define TIM_SR_CC4OF_Pos                    (12U)                              
+#define TIM_SR_CC4OF_Msk                    (0x1U << TIM_SR_CC4OF_Pos)         /*!< 0x00001000 */
+#define TIM_SR_CC4OF                        TIM_SR_CC4OF_Msk                   /*!<Capture/Compare 4 Overcapture Flag */
+
+/*******************  Bit definition for TIM_EGR register  *******************/
+#define TIM_EGR_UG_Pos                      (0U)                               
+#define TIM_EGR_UG_Msk                      (0x1U << TIM_EGR_UG_Pos)           /*!< 0x00000001 */
+#define TIM_EGR_UG                          TIM_EGR_UG_Msk                     /*!<Update Generation */
+#define TIM_EGR_CC1G_Pos                    (1U)                               
+#define TIM_EGR_CC1G_Msk                    (0x1U << TIM_EGR_CC1G_Pos)         /*!< 0x00000002 */
+#define TIM_EGR_CC1G                        TIM_EGR_CC1G_Msk                   /*!<Capture/Compare 1 Generation */
+#define TIM_EGR_CC2G_Pos                    (2U)                               
+#define TIM_EGR_CC2G_Msk                    (0x1U << TIM_EGR_CC2G_Pos)         /*!< 0x00000004 */
+#define TIM_EGR_CC2G                        TIM_EGR_CC2G_Msk                   /*!<Capture/Compare 2 Generation */
+#define TIM_EGR_CC3G_Pos                    (3U)                               
+#define TIM_EGR_CC3G_Msk                    (0x1U << TIM_EGR_CC3G_Pos)         /*!< 0x00000008 */
+#define TIM_EGR_CC3G                        TIM_EGR_CC3G_Msk                   /*!<Capture/Compare 3 Generation */
+#define TIM_EGR_CC4G_Pos                    (4U)                               
+#define TIM_EGR_CC4G_Msk                    (0x1U << TIM_EGR_CC4G_Pos)         /*!< 0x00000010 */
+#define TIM_EGR_CC4G                        TIM_EGR_CC4G_Msk                   /*!<Capture/Compare 4 Generation */
+#define TIM_EGR_COMG_Pos                    (5U)                               
+#define TIM_EGR_COMG_Msk                    (0x1U << TIM_EGR_COMG_Pos)         /*!< 0x00000020 */
+#define TIM_EGR_COMG                        TIM_EGR_COMG_Msk                   /*!<Capture/Compare Control Update Generation */
+#define TIM_EGR_TG_Pos                      (6U)                               
+#define TIM_EGR_TG_Msk                      (0x1U << TIM_EGR_TG_Pos)           /*!< 0x00000040 */
+#define TIM_EGR_TG                          TIM_EGR_TG_Msk                     /*!<Trigger Generation */
+#define TIM_EGR_BG_Pos                      (7U)                               
+#define TIM_EGR_BG_Msk                      (0x1U << TIM_EGR_BG_Pos)           /*!< 0x00000080 */
+#define TIM_EGR_BG                          TIM_EGR_BG_Msk                     /*!<Break Generation */
+
+/******************  Bit definition for TIM_CCMR1 register  ******************/
+#define TIM_CCMR1_CC1S_Pos                  (0U)                               
+#define TIM_CCMR1_CC1S_Msk                  (0x3U << TIM_CCMR1_CC1S_Pos)       /*!< 0x00000003 */
+#define TIM_CCMR1_CC1S                      TIM_CCMR1_CC1S_Msk                 /*!<CC1S[1:0] bits (Capture/Compare 1 Selection) */
+#define TIM_CCMR1_CC1S_0                    (0x1U << TIM_CCMR1_CC1S_Pos)       /*!< 0x00000001 */
+#define TIM_CCMR1_CC1S_1                    (0x2U << TIM_CCMR1_CC1S_Pos)       /*!< 0x00000002 */
+
+#define TIM_CCMR1_OC1FE_Pos                 (2U)                               
+#define TIM_CCMR1_OC1FE_Msk                 (0x1U << TIM_CCMR1_OC1FE_Pos)      /*!< 0x00000004 */
+#define TIM_CCMR1_OC1FE                     TIM_CCMR1_OC1FE_Msk                /*!<Output Compare 1 Fast enable */
+#define TIM_CCMR1_OC1PE_Pos                 (3U)                               
+#define TIM_CCMR1_OC1PE_Msk                 (0x1U << TIM_CCMR1_OC1PE_Pos)      /*!< 0x00000008 */
+#define TIM_CCMR1_OC1PE                     TIM_CCMR1_OC1PE_Msk                /*!<Output Compare 1 Preload enable */
+
+#define TIM_CCMR1_OC1M_Pos                  (4U)                               
+#define TIM_CCMR1_OC1M_Msk                  (0x7U << TIM_CCMR1_OC1M_Pos)       /*!< 0x00000070 */
+#define TIM_CCMR1_OC1M                      TIM_CCMR1_OC1M_Msk                 /*!<OC1M[2:0] bits (Output Compare 1 Mode) */
+#define TIM_CCMR1_OC1M_0                    (0x1U << TIM_CCMR1_OC1M_Pos)       /*!< 0x00000010 */
+#define TIM_CCMR1_OC1M_1                    (0x2U << TIM_CCMR1_OC1M_Pos)       /*!< 0x00000020 */
+#define TIM_CCMR1_OC1M_2                    (0x4U << TIM_CCMR1_OC1M_Pos)       /*!< 0x00000040 */
+
+#define TIM_CCMR1_OC1CE_Pos                 (7U)                               
+#define TIM_CCMR1_OC1CE_Msk                 (0x1U << TIM_CCMR1_OC1CE_Pos)      /*!< 0x00000080 */
+#define TIM_CCMR1_OC1CE                     TIM_CCMR1_OC1CE_Msk                /*!<Output Compare 1Clear Enable */
+
+#define TIM_CCMR1_CC2S_Pos                  (8U)                               
+#define TIM_CCMR1_CC2S_Msk                  (0x3U << TIM_CCMR1_CC2S_Pos)       /*!< 0x00000300 */
+#define TIM_CCMR1_CC2S                      TIM_CCMR1_CC2S_Msk                 /*!<CC2S[1:0] bits (Capture/Compare 2 Selection) */
+#define TIM_CCMR1_CC2S_0                    (0x1U << TIM_CCMR1_CC2S_Pos)       /*!< 0x00000100 */
+#define TIM_CCMR1_CC2S_1                    (0x2U << TIM_CCMR1_CC2S_Pos)       /*!< 0x00000200 */
+
+#define TIM_CCMR1_OC2FE_Pos                 (10U)                              
+#define TIM_CCMR1_OC2FE_Msk                 (0x1U << TIM_CCMR1_OC2FE_Pos)      /*!< 0x00000400 */
+#define TIM_CCMR1_OC2FE                     TIM_CCMR1_OC2FE_Msk                /*!<Output Compare 2 Fast enable */
+#define TIM_CCMR1_OC2PE_Pos                 (11U)                              
+#define TIM_CCMR1_OC2PE_Msk                 (0x1U << TIM_CCMR1_OC2PE_Pos)      /*!< 0x00000800 */
+#define TIM_CCMR1_OC2PE                     TIM_CCMR1_OC2PE_Msk                /*!<Output Compare 2 Preload enable */
+
+#define TIM_CCMR1_OC2M_Pos                  (12U)                              
+#define TIM_CCMR1_OC2M_Msk                  (0x7U << TIM_CCMR1_OC2M_Pos)       /*!< 0x00007000 */
+#define TIM_CCMR1_OC2M                      TIM_CCMR1_OC2M_Msk                 /*!<OC2M[2:0] bits (Output Compare 2 Mode) */
+#define TIM_CCMR1_OC2M_0                    (0x1U << TIM_CCMR1_OC2M_Pos)       /*!< 0x00001000 */
+#define TIM_CCMR1_OC2M_1                    (0x2U << TIM_CCMR1_OC2M_Pos)       /*!< 0x00002000 */
+#define TIM_CCMR1_OC2M_2                    (0x4U << TIM_CCMR1_OC2M_Pos)       /*!< 0x00004000 */
+
+#define TIM_CCMR1_OC2CE_Pos                 (15U)                              
+#define TIM_CCMR1_OC2CE_Msk                 (0x1U << TIM_CCMR1_OC2CE_Pos)      /*!< 0x00008000 */
+#define TIM_CCMR1_OC2CE                     TIM_CCMR1_OC2CE_Msk                /*!<Output Compare 2 Clear Enable */
+
+/*---------------------------------------------------------------------------*/
+
+#define TIM_CCMR1_IC1PSC_Pos                (2U)                               
+#define TIM_CCMR1_IC1PSC_Msk                (0x3U << TIM_CCMR1_IC1PSC_Pos)     /*!< 0x0000000C */
+#define TIM_CCMR1_IC1PSC                    TIM_CCMR1_IC1PSC_Msk               /*!<IC1PSC[1:0] bits (Input Capture 1 Prescaler) */
+#define TIM_CCMR1_IC1PSC_0                  (0x1U << TIM_CCMR1_IC1PSC_Pos)     /*!< 0x00000004 */
+#define TIM_CCMR1_IC1PSC_1                  (0x2U << TIM_CCMR1_IC1PSC_Pos)     /*!< 0x00000008 */
+
+#define TIM_CCMR1_IC1F_Pos                  (4U)                               
+#define TIM_CCMR1_IC1F_Msk                  (0xFU << TIM_CCMR1_IC1F_Pos)       /*!< 0x000000F0 */
+#define TIM_CCMR1_IC1F                      TIM_CCMR1_IC1F_Msk                 /*!<IC1F[3:0] bits (Input Capture 1 Filter) */
+#define TIM_CCMR1_IC1F_0                    (0x1U << TIM_CCMR1_IC1F_Pos)       /*!< 0x00000010 */
+#define TIM_CCMR1_IC1F_1                    (0x2U << TIM_CCMR1_IC1F_Pos)       /*!< 0x00000020 */
+#define TIM_CCMR1_IC1F_2                    (0x4U << TIM_CCMR1_IC1F_Pos)       /*!< 0x00000040 */
+#define TIM_CCMR1_IC1F_3                    (0x8U << TIM_CCMR1_IC1F_Pos)       /*!< 0x00000080 */
+
+#define TIM_CCMR1_IC2PSC_Pos                (10U)                              
+#define TIM_CCMR1_IC2PSC_Msk                (0x3U << TIM_CCMR1_IC2PSC_Pos)     /*!< 0x00000C00 */
+#define TIM_CCMR1_IC2PSC                    TIM_CCMR1_IC2PSC_Msk               /*!<IC2PSC[1:0] bits (Input Capture 2 Prescaler) */
+#define TIM_CCMR1_IC2PSC_0                  (0x1U << TIM_CCMR1_IC2PSC_Pos)     /*!< 0x00000400 */
+#define TIM_CCMR1_IC2PSC_1                  (0x2U << TIM_CCMR1_IC2PSC_Pos)     /*!< 0x00000800 */
+
+#define TIM_CCMR1_IC2F_Pos                  (12U)                              
+#define TIM_CCMR1_IC2F_Msk                  (0xFU << TIM_CCMR1_IC2F_Pos)       /*!< 0x0000F000 */
+#define TIM_CCMR1_IC2F                      TIM_CCMR1_IC2F_Msk                 /*!<IC2F[3:0] bits (Input Capture 2 Filter) */
+#define TIM_CCMR1_IC2F_0                    (0x1U << TIM_CCMR1_IC2F_Pos)       /*!< 0x00001000 */
+#define TIM_CCMR1_IC2F_1                    (0x2U << TIM_CCMR1_IC2F_Pos)       /*!< 0x00002000 */
+#define TIM_CCMR1_IC2F_2                    (0x4U << TIM_CCMR1_IC2F_Pos)       /*!< 0x00004000 */
+#define TIM_CCMR1_IC2F_3                    (0x8U << TIM_CCMR1_IC2F_Pos)       /*!< 0x00008000 */
+
+/******************  Bit definition for TIM_CCMR2 register  ******************/
+#define TIM_CCMR2_CC3S_Pos                  (0U)                               
+#define TIM_CCMR2_CC3S_Msk                  (0x3U << TIM_CCMR2_CC3S_Pos)       /*!< 0x00000003 */
+#define TIM_CCMR2_CC3S                      TIM_CCMR2_CC3S_Msk                 /*!<CC3S[1:0] bits (Capture/Compare 3 Selection) */
+#define TIM_CCMR2_CC3S_0                    (0x1U << TIM_CCMR2_CC3S_Pos)       /*!< 0x00000001 */
+#define TIM_CCMR2_CC3S_1                    (0x2U << TIM_CCMR2_CC3S_Pos)       /*!< 0x00000002 */
+
+#define TIM_CCMR2_OC3FE_Pos                 (2U)                               
+#define TIM_CCMR2_OC3FE_Msk                 (0x1U << TIM_CCMR2_OC3FE_Pos)      /*!< 0x00000004 */
+#define TIM_CCMR2_OC3FE                     TIM_CCMR2_OC3FE_Msk                /*!<Output Compare 3 Fast enable */
+#define TIM_CCMR2_OC3PE_Pos                 (3U)                               
+#define TIM_CCMR2_OC3PE_Msk                 (0x1U << TIM_CCMR2_OC3PE_Pos)      /*!< 0x00000008 */
+#define TIM_CCMR2_OC3PE                     TIM_CCMR2_OC3PE_Msk                /*!<Output Compare 3 Preload enable */
+
+#define TIM_CCMR2_OC3M_Pos                  (4U)                               
+#define TIM_CCMR2_OC3M_Msk                  (0x7U << TIM_CCMR2_OC3M_Pos)       /*!< 0x00000070 */
+#define TIM_CCMR2_OC3M                      TIM_CCMR2_OC3M_Msk                 /*!<OC3M[2:0] bits (Output Compare 3 Mode) */
+#define TIM_CCMR2_OC3M_0                    (0x1U << TIM_CCMR2_OC3M_Pos)       /*!< 0x00000010 */
+#define TIM_CCMR2_OC3M_1                    (0x2U << TIM_CCMR2_OC3M_Pos)       /*!< 0x00000020 */
+#define TIM_CCMR2_OC3M_2                    (0x4U << TIM_CCMR2_OC3M_Pos)       /*!< 0x00000040 */
+
+#define TIM_CCMR2_OC3CE_Pos                 (7U)                               
+#define TIM_CCMR2_OC3CE_Msk                 (0x1U << TIM_CCMR2_OC3CE_Pos)      /*!< 0x00000080 */
+#define TIM_CCMR2_OC3CE                     TIM_CCMR2_OC3CE_Msk                /*!<Output Compare 3 Clear Enable */
+
+#define TIM_CCMR2_CC4S_Pos                  (8U)                               
+#define TIM_CCMR2_CC4S_Msk                  (0x3U << TIM_CCMR2_CC4S_Pos)       /*!< 0x00000300 */
+#define TIM_CCMR2_CC4S                      TIM_CCMR2_CC4S_Msk                 /*!<CC4S[1:0] bits (Capture/Compare 4 Selection) */
+#define TIM_CCMR2_CC4S_0                    (0x1U << TIM_CCMR2_CC4S_Pos)       /*!< 0x00000100 */
+#define TIM_CCMR2_CC4S_1                    (0x2U << TIM_CCMR2_CC4S_Pos)       /*!< 0x00000200 */
+
+#define TIM_CCMR2_OC4FE_Pos                 (10U)                              
+#define TIM_CCMR2_OC4FE_Msk                 (0x1U << TIM_CCMR2_OC4FE_Pos)      /*!< 0x00000400 */
+#define TIM_CCMR2_OC4FE                     TIM_CCMR2_OC4FE_Msk                /*!<Output Compare 4 Fast enable */
+#define TIM_CCMR2_OC4PE_Pos                 (11U)                              
+#define TIM_CCMR2_OC4PE_Msk                 (0x1U << TIM_CCMR2_OC4PE_Pos)      /*!< 0x00000800 */
+#define TIM_CCMR2_OC4PE                     TIM_CCMR2_OC4PE_Msk                /*!<Output Compare 4 Preload enable */
+
+#define TIM_CCMR2_OC4M_Pos                  (12U)                              
+#define TIM_CCMR2_OC4M_Msk                  (0x7U << TIM_CCMR2_OC4M_Pos)       /*!< 0x00007000 */
+#define TIM_CCMR2_OC4M                      TIM_CCMR2_OC4M_Msk                 /*!<OC4M[2:0] bits (Output Compare 4 Mode) */
+#define TIM_CCMR2_OC4M_0                    (0x1U << TIM_CCMR2_OC4M_Pos)       /*!< 0x00001000 */
+#define TIM_CCMR2_OC4M_1                    (0x2U << TIM_CCMR2_OC4M_Pos)       /*!< 0x00002000 */
+#define TIM_CCMR2_OC4M_2                    (0x4U << TIM_CCMR2_OC4M_Pos)       /*!< 0x00004000 */
+
+#define TIM_CCMR2_OC4CE_Pos                 (15U)                              
+#define TIM_CCMR2_OC4CE_Msk                 (0x1U << TIM_CCMR2_OC4CE_Pos)      /*!< 0x00008000 */
+#define TIM_CCMR2_OC4CE                     TIM_CCMR2_OC4CE_Msk                /*!<Output Compare 4 Clear Enable */
+
+/*---------------------------------------------------------------------------*/
+
+#define TIM_CCMR2_IC3PSC_Pos                (2U)                               
+#define TIM_CCMR2_IC3PSC_Msk                (0x3U << TIM_CCMR2_IC3PSC_Pos)     /*!< 0x0000000C */
+#define TIM_CCMR2_IC3PSC                    TIM_CCMR2_IC3PSC_Msk               /*!<IC3PSC[1:0] bits (Input Capture 3 Prescaler) */
+#define TIM_CCMR2_IC3PSC_0                  (0x1U << TIM_CCMR2_IC3PSC_Pos)     /*!< 0x00000004 */
+#define TIM_CCMR2_IC3PSC_1                  (0x2U << TIM_CCMR2_IC3PSC_Pos)     /*!< 0x00000008 */
+
+#define TIM_CCMR2_IC3F_Pos                  (4U)                               
+#define TIM_CCMR2_IC3F_Msk                  (0xFU << TIM_CCMR2_IC3F_Pos)       /*!< 0x000000F0 */
+#define TIM_CCMR2_IC3F                      TIM_CCMR2_IC3F_Msk                 /*!<IC3F[3:0] bits (Input Capture 3 Filter) */
+#define TIM_CCMR2_IC3F_0                    (0x1U << TIM_CCMR2_IC3F_Pos)       /*!< 0x00000010 */
+#define TIM_CCMR2_IC3F_1                    (0x2U << TIM_CCMR2_IC3F_Pos)       /*!< 0x00000020 */
+#define TIM_CCMR2_IC3F_2                    (0x4U << TIM_CCMR2_IC3F_Pos)       /*!< 0x00000040 */
+#define TIM_CCMR2_IC3F_3                    (0x8U << TIM_CCMR2_IC3F_Pos)       /*!< 0x00000080 */
+
+#define TIM_CCMR2_IC4PSC_Pos                (10U)                              
+#define TIM_CCMR2_IC4PSC_Msk                (0x3U << TIM_CCMR2_IC4PSC_Pos)     /*!< 0x00000C00 */
+#define TIM_CCMR2_IC4PSC                    TIM_CCMR2_IC4PSC_Msk               /*!<IC4PSC[1:0] bits (Input Capture 4 Prescaler) */
+#define TIM_CCMR2_IC4PSC_0                  (0x1U << TIM_CCMR2_IC4PSC_Pos)     /*!< 0x00000400 */
+#define TIM_CCMR2_IC4PSC_1                  (0x2U << TIM_CCMR2_IC4PSC_Pos)     /*!< 0x00000800 */
+
+#define TIM_CCMR2_IC4F_Pos                  (12U)                              
+#define TIM_CCMR2_IC4F_Msk                  (0xFU << TIM_CCMR2_IC4F_Pos)       /*!< 0x0000F000 */
+#define TIM_CCMR2_IC4F                      TIM_CCMR2_IC4F_Msk                 /*!<IC4F[3:0] bits (Input Capture 4 Filter) */
+#define TIM_CCMR2_IC4F_0                    (0x1U << TIM_CCMR2_IC4F_Pos)       /*!< 0x00001000 */
+#define TIM_CCMR2_IC4F_1                    (0x2U << TIM_CCMR2_IC4F_Pos)       /*!< 0x00002000 */
+#define TIM_CCMR2_IC4F_2                    (0x4U << TIM_CCMR2_IC4F_Pos)       /*!< 0x00004000 */
+#define TIM_CCMR2_IC4F_3                    (0x8U << TIM_CCMR2_IC4F_Pos)       /*!< 0x00008000 */
+
+/*******************  Bit definition for TIM_CCER register  ******************/
+#define TIM_CCER_CC1E_Pos                   (0U)                               
+#define TIM_CCER_CC1E_Msk                   (0x1U << TIM_CCER_CC1E_Pos)        /*!< 0x00000001 */
+#define TIM_CCER_CC1E                       TIM_CCER_CC1E_Msk                  /*!<Capture/Compare 1 output enable */
+#define TIM_CCER_CC1P_Pos                   (1U)                               
+#define TIM_CCER_CC1P_Msk                   (0x1U << TIM_CCER_CC1P_Pos)        /*!< 0x00000002 */
+#define TIM_CCER_CC1P                       TIM_CCER_CC1P_Msk                  /*!<Capture/Compare 1 output Polarity */
+#define TIM_CCER_CC1NE_Pos                  (2U)                               
+#define TIM_CCER_CC1NE_Msk                  (0x1U << TIM_CCER_CC1NE_Pos)       /*!< 0x00000004 */
+#define TIM_CCER_CC1NE                      TIM_CCER_CC1NE_Msk                 /*!<Capture/Compare 1 Complementary output enable */
+#define TIM_CCER_CC1NP_Pos                  (3U)                               
+#define TIM_CCER_CC1NP_Msk                  (0x1U << TIM_CCER_CC1NP_Pos)       /*!< 0x00000008 */
+#define TIM_CCER_CC1NP                      TIM_CCER_CC1NP_Msk                 /*!<Capture/Compare 1 Complementary output Polarity */
+#define TIM_CCER_CC2E_Pos                   (4U)                               
+#define TIM_CCER_CC2E_Msk                   (0x1U << TIM_CCER_CC2E_Pos)        /*!< 0x00000010 */
+#define TIM_CCER_CC2E                       TIM_CCER_CC2E_Msk                  /*!<Capture/Compare 2 output enable */
+#define TIM_CCER_CC2P_Pos                   (5U)                               
+#define TIM_CCER_CC2P_Msk                   (0x1U << TIM_CCER_CC2P_Pos)        /*!< 0x00000020 */
+#define TIM_CCER_CC2P                       TIM_CCER_CC2P_Msk                  /*!<Capture/Compare 2 output Polarity */
+#define TIM_CCER_CC2NE_Pos                  (6U)                               
+#define TIM_CCER_CC2NE_Msk                  (0x1U << TIM_CCER_CC2NE_Pos)       /*!< 0x00000040 */
+#define TIM_CCER_CC2NE                      TIM_CCER_CC2NE_Msk                 /*!<Capture/Compare 2 Complementary output enable */
+#define TIM_CCER_CC2NP_Pos                  (7U)                               
+#define TIM_CCER_CC2NP_Msk                  (0x1U << TIM_CCER_CC2NP_Pos)       /*!< 0x00000080 */
+#define TIM_CCER_CC2NP                      TIM_CCER_CC2NP_Msk                 /*!<Capture/Compare 2 Complementary output Polarity */
+#define TIM_CCER_CC3E_Pos                   (8U)                               
+#define TIM_CCER_CC3E_Msk                   (0x1U << TIM_CCER_CC3E_Pos)        /*!< 0x00000100 */
+#define TIM_CCER_CC3E                       TIM_CCER_CC3E_Msk                  /*!<Capture/Compare 3 output enable */
+#define TIM_CCER_CC3P_Pos                   (9U)                               
+#define TIM_CCER_CC3P_Msk                   (0x1U << TIM_CCER_CC3P_Pos)        /*!< 0x00000200 */
+#define TIM_CCER_CC3P                       TIM_CCER_CC3P_Msk                  /*!<Capture/Compare 3 output Polarity */
+#define TIM_CCER_CC3NE_Pos                  (10U)                              
+#define TIM_CCER_CC3NE_Msk                  (0x1U << TIM_CCER_CC3NE_Pos)       /*!< 0x00000400 */
+#define TIM_CCER_CC3NE                      TIM_CCER_CC3NE_Msk                 /*!<Capture/Compare 3 Complementary output enable */
+#define TIM_CCER_CC3NP_Pos                  (11U)                              
+#define TIM_CCER_CC3NP_Msk                  (0x1U << TIM_CCER_CC3NP_Pos)       /*!< 0x00000800 */
+#define TIM_CCER_CC3NP                      TIM_CCER_CC3NP_Msk                 /*!<Capture/Compare 3 Complementary output Polarity */
+#define TIM_CCER_CC4E_Pos                   (12U)                              
+#define TIM_CCER_CC4E_Msk                   (0x1U << TIM_CCER_CC4E_Pos)        /*!< 0x00001000 */
+#define TIM_CCER_CC4E                       TIM_CCER_CC4E_Msk                  /*!<Capture/Compare 4 output enable */
+#define TIM_CCER_CC4P_Pos                   (13U)                              
+#define TIM_CCER_CC4P_Msk                   (0x1U << TIM_CCER_CC4P_Pos)        /*!< 0x00002000 */
+#define TIM_CCER_CC4P                       TIM_CCER_CC4P_Msk                  /*!<Capture/Compare 4 output Polarity */
+#define TIM_CCER_CC4NP_Pos                  (15U)                              
+#define TIM_CCER_CC4NP_Msk                  (0x1U << TIM_CCER_CC4NP_Pos)       /*!< 0x00008000 */
+#define TIM_CCER_CC4NP                      TIM_CCER_CC4NP_Msk                 /*!<Capture/Compare 4 Complementary output Polarity */
+
+/*******************  Bit definition for TIM_CNT register  *******************/
+#define TIM_CNT_CNT_Pos                     (0U)                               
+#define TIM_CNT_CNT_Msk                     (0xFFFFFFFFU << TIM_CNT_CNT_Pos)   /*!< 0xFFFFFFFF */
+#define TIM_CNT_CNT                         TIM_CNT_CNT_Msk                    /*!<Counter Value */
+
+/*******************  Bit definition for TIM_PSC register  *******************/
+#define TIM_PSC_PSC_Pos                     (0U)                               
+#define TIM_PSC_PSC_Msk                     (0xFFFFU << TIM_PSC_PSC_Pos)       /*!< 0x0000FFFF */
+#define TIM_PSC_PSC                         TIM_PSC_PSC_Msk                    /*!<Prescaler Value */
+
+/*******************  Bit definition for TIM_ARR register  *******************/
+#define TIM_ARR_ARR_Pos                     (0U)                               
+#define TIM_ARR_ARR_Msk                     (0xFFFFFFFFU << TIM_ARR_ARR_Pos)   /*!< 0xFFFFFFFF */
+#define TIM_ARR_ARR                         TIM_ARR_ARR_Msk                    /*!<actual auto-reload Value */
+
+/*******************  Bit definition for TIM_RCR register  *******************/
+#define TIM_RCR_REP_Pos                     (0U)                               
+#define TIM_RCR_REP_Msk                     (0xFFU << TIM_RCR_REP_Pos)         /*!< 0x000000FF */
+#define TIM_RCR_REP                         TIM_RCR_REP_Msk                    /*!<Repetition Counter Value */
+
+/*******************  Bit definition for TIM_CCR1 register  ******************/
+#define TIM_CCR1_CCR1_Pos                   (0U)                               
+#define TIM_CCR1_CCR1_Msk                   (0xFFFFU << TIM_CCR1_CCR1_Pos)     /*!< 0x0000FFFF */
+#define TIM_CCR1_CCR1                       TIM_CCR1_CCR1_Msk                  /*!<Capture/Compare 1 Value */
+
+/*******************  Bit definition for TIM_CCR2 register  ******************/
+#define TIM_CCR2_CCR2_Pos                   (0U)                               
+#define TIM_CCR2_CCR2_Msk                   (0xFFFFU << TIM_CCR2_CCR2_Pos)     /*!< 0x0000FFFF */
+#define TIM_CCR2_CCR2                       TIM_CCR2_CCR2_Msk                  /*!<Capture/Compare 2 Value */
+
+/*******************  Bit definition for TIM_CCR3 register  ******************/
+#define TIM_CCR3_CCR3_Pos                   (0U)                               
+#define TIM_CCR3_CCR3_Msk                   (0xFFFFU << TIM_CCR3_CCR3_Pos)     /*!< 0x0000FFFF */
+#define TIM_CCR3_CCR3                       TIM_CCR3_CCR3_Msk                  /*!<Capture/Compare 3 Value */
+
+/*******************  Bit definition for TIM_CCR4 register  ******************/
+#define TIM_CCR4_CCR4_Pos                   (0U)                               
+#define TIM_CCR4_CCR4_Msk                   (0xFFFFU << TIM_CCR4_CCR4_Pos)     /*!< 0x0000FFFF */
+#define TIM_CCR4_CCR4                       TIM_CCR4_CCR4_Msk                  /*!<Capture/Compare 4 Value */
+
+/*******************  Bit definition for TIM_BDTR register  ******************/
+#define TIM_BDTR_DTG_Pos                    (0U)                               
+#define TIM_BDTR_DTG_Msk                    (0xFFU << TIM_BDTR_DTG_Pos)        /*!< 0x000000FF */
+#define TIM_BDTR_DTG                        TIM_BDTR_DTG_Msk                   /*!<DTG[0:7] bits (Dead-Time Generator set-up) */
+#define TIM_BDTR_DTG_0                      (0x01U << TIM_BDTR_DTG_Pos)        /*!< 0x00000001 */
+#define TIM_BDTR_DTG_1                      (0x02U << TIM_BDTR_DTG_Pos)        /*!< 0x00000002 */
+#define TIM_BDTR_DTG_2                      (0x04U << TIM_BDTR_DTG_Pos)        /*!< 0x00000004 */
+#define TIM_BDTR_DTG_3                      (0x08U << TIM_BDTR_DTG_Pos)        /*!< 0x00000008 */
+#define TIM_BDTR_DTG_4                      (0x10U << TIM_BDTR_DTG_Pos)        /*!< 0x00000010 */
+#define TIM_BDTR_DTG_5                      (0x20U << TIM_BDTR_DTG_Pos)        /*!< 0x00000020 */
+#define TIM_BDTR_DTG_6                      (0x40U << TIM_BDTR_DTG_Pos)        /*!< 0x00000040 */
+#define TIM_BDTR_DTG_7                      (0x80U << TIM_BDTR_DTG_Pos)        /*!< 0x00000080 */
+
+#define TIM_BDTR_LOCK_Pos                   (8U)                               
+#define TIM_BDTR_LOCK_Msk                   (0x3U << TIM_BDTR_LOCK_Pos)        /*!< 0x00000300 */
+#define TIM_BDTR_LOCK                       TIM_BDTR_LOCK_Msk                  /*!<LOCK[1:0] bits (Lock Configuration) */
+#define TIM_BDTR_LOCK_0                     (0x1U << TIM_BDTR_LOCK_Pos)        /*!< 0x00000100 */
+#define TIM_BDTR_LOCK_1                     (0x2U << TIM_BDTR_LOCK_Pos)        /*!< 0x00000200 */
+
+#define TIM_BDTR_OSSI_Pos                   (10U)                              
+#define TIM_BDTR_OSSI_Msk                   (0x1U << TIM_BDTR_OSSI_Pos)        /*!< 0x00000400 */
+#define TIM_BDTR_OSSI                       TIM_BDTR_OSSI_Msk                  /*!<Off-State Selection for Idle mode */
+#define TIM_BDTR_OSSR_Pos                   (11U)                              
+#define TIM_BDTR_OSSR_Msk                   (0x1U << TIM_BDTR_OSSR_Pos)        /*!< 0x00000800 */
+#define TIM_BDTR_OSSR                       TIM_BDTR_OSSR_Msk                  /*!<Off-State Selection for Run mode */
+#define TIM_BDTR_BKE_Pos                    (12U)                              
+#define TIM_BDTR_BKE_Msk                    (0x1U << TIM_BDTR_BKE_Pos)         /*!< 0x00001000 */
+#define TIM_BDTR_BKE                        TIM_BDTR_BKE_Msk                   /*!<Break enable */
+#define TIM_BDTR_BKP_Pos                    (13U)                              
+#define TIM_BDTR_BKP_Msk                    (0x1U << TIM_BDTR_BKP_Pos)         /*!< 0x00002000 */
+#define TIM_BDTR_BKP                        TIM_BDTR_BKP_Msk                   /*!<Break Polarity */
+#define TIM_BDTR_AOE_Pos                    (14U)                              
+#define TIM_BDTR_AOE_Msk                    (0x1U << TIM_BDTR_AOE_Pos)         /*!< 0x00004000 */
+#define TIM_BDTR_AOE                        TIM_BDTR_AOE_Msk                   /*!<Automatic Output enable */
+#define TIM_BDTR_MOE_Pos                    (15U)                              
+#define TIM_BDTR_MOE_Msk                    (0x1U << TIM_BDTR_MOE_Pos)         /*!< 0x00008000 */
+#define TIM_BDTR_MOE                        TIM_BDTR_MOE_Msk                   /*!<Main Output enable */
+
+/*******************  Bit definition for TIM_DCR register  *******************/
+#define TIM_DCR_DBA_Pos                     (0U)                               
+#define TIM_DCR_DBA_Msk                     (0x1FU << TIM_DCR_DBA_Pos)         /*!< 0x0000001F */
+#define TIM_DCR_DBA                         TIM_DCR_DBA_Msk                    /*!<DBA[4:0] bits (DMA Base Address) */
+#define TIM_DCR_DBA_0                       (0x01U << TIM_DCR_DBA_Pos)         /*!< 0x00000001 */
+#define TIM_DCR_DBA_1                       (0x02U << TIM_DCR_DBA_Pos)         /*!< 0x00000002 */
+#define TIM_DCR_DBA_2                       (0x04U << TIM_DCR_DBA_Pos)         /*!< 0x00000004 */
+#define TIM_DCR_DBA_3                       (0x08U << TIM_DCR_DBA_Pos)         /*!< 0x00000008 */
+#define TIM_DCR_DBA_4                       (0x10U << TIM_DCR_DBA_Pos)         /*!< 0x00000010 */
+
+#define TIM_DCR_DBL_Pos                     (8U)                               
+#define TIM_DCR_DBL_Msk                     (0x1FU << TIM_DCR_DBL_Pos)         /*!< 0x00001F00 */
+#define TIM_DCR_DBL                         TIM_DCR_DBL_Msk                    /*!<DBL[4:0] bits (DMA Burst Length) */
+#define TIM_DCR_DBL_0                       (0x01U << TIM_DCR_DBL_Pos)         /*!< 0x00000100 */
+#define TIM_DCR_DBL_1                       (0x02U << TIM_DCR_DBL_Pos)         /*!< 0x00000200 */
+#define TIM_DCR_DBL_2                       (0x04U << TIM_DCR_DBL_Pos)         /*!< 0x00000400 */
+#define TIM_DCR_DBL_3                       (0x08U << TIM_DCR_DBL_Pos)         /*!< 0x00000800 */
+#define TIM_DCR_DBL_4                       (0x10U << TIM_DCR_DBL_Pos)         /*!< 0x00001000 */
+
+/*******************  Bit definition for TIM_DMAR register  ******************/
+#define TIM_DMAR_DMAB_Pos                   (0U)                               
+#define TIM_DMAR_DMAB_Msk                   (0xFFFFU << TIM_DMAR_DMAB_Pos)     /*!< 0x0000FFFF */
+#define TIM_DMAR_DMAB                       TIM_DMAR_DMAB_Msk                  /*!<DMA register for burst accesses */
+
+/*******************  Bit definition for TIM_OR register  ********************/
+
+/******************************************************************************/
+/*                                                                            */
+/*                             Real-Time Clock                                */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for RTC_CRH register  ********************/
+#define RTC_CRH_SECIE_Pos                   (0U)                               
+#define RTC_CRH_SECIE_Msk                   (0x1U << RTC_CRH_SECIE_Pos)        /*!< 0x00000001 */
+#define RTC_CRH_SECIE                       RTC_CRH_SECIE_Msk                  /*!< Second Interrupt Enable */
+#define RTC_CRH_ALRIE_Pos                   (1U)                               
+#define RTC_CRH_ALRIE_Msk                   (0x1U << RTC_CRH_ALRIE_Pos)        /*!< 0x00000002 */
+#define RTC_CRH_ALRIE                       RTC_CRH_ALRIE_Msk                  /*!< Alarm Interrupt Enable */
+#define RTC_CRH_OWIE_Pos                    (2U)                               
+#define RTC_CRH_OWIE_Msk                    (0x1U << RTC_CRH_OWIE_Pos)         /*!< 0x00000004 */
+#define RTC_CRH_OWIE                        RTC_CRH_OWIE_Msk                   /*!< OverfloW Interrupt Enable */
+
+/*******************  Bit definition for RTC_CRL register  ********************/
+#define RTC_CRL_SECF_Pos                    (0U)                               
+#define RTC_CRL_SECF_Msk                    (0x1U << RTC_CRL_SECF_Pos)         /*!< 0x00000001 */
+#define RTC_CRL_SECF                        RTC_CRL_SECF_Msk                   /*!< Second Flag */
+#define RTC_CRL_ALRF_Pos                    (1U)                               
+#define RTC_CRL_ALRF_Msk                    (0x1U << RTC_CRL_ALRF_Pos)         /*!< 0x00000002 */
+#define RTC_CRL_ALRF                        RTC_CRL_ALRF_Msk                   /*!< Alarm Flag */
+#define RTC_CRL_OWF_Pos                     (2U)                               
+#define RTC_CRL_OWF_Msk                     (0x1U << RTC_CRL_OWF_Pos)          /*!< 0x00000004 */
+#define RTC_CRL_OWF                         RTC_CRL_OWF_Msk                    /*!< OverfloW Flag */
+#define RTC_CRL_RSF_Pos                     (3U)                               
+#define RTC_CRL_RSF_Msk                     (0x1U << RTC_CRL_RSF_Pos)          /*!< 0x00000008 */
+#define RTC_CRL_RSF                         RTC_CRL_RSF_Msk                    /*!< Registers Synchronized Flag */
+#define RTC_CRL_CNF_Pos                     (4U)                               
+#define RTC_CRL_CNF_Msk                     (0x1U << RTC_CRL_CNF_Pos)          /*!< 0x00000010 */
+#define RTC_CRL_CNF                         RTC_CRL_CNF_Msk                    /*!< Configuration Flag */
+#define RTC_CRL_RTOFF_Pos                   (5U)                               
+#define RTC_CRL_RTOFF_Msk                   (0x1U << RTC_CRL_RTOFF_Pos)        /*!< 0x00000020 */
+#define RTC_CRL_RTOFF                       RTC_CRL_RTOFF_Msk                  /*!< RTC operation OFF */
+
+/*******************  Bit definition for RTC_PRLH register  *******************/
+#define RTC_PRLH_PRL_Pos                    (0U)                               
+#define RTC_PRLH_PRL_Msk                    (0xFU << RTC_PRLH_PRL_Pos)         /*!< 0x0000000F */
+#define RTC_PRLH_PRL                        RTC_PRLH_PRL_Msk                   /*!< RTC Prescaler Reload Value High */
+
+/*******************  Bit definition for RTC_PRLL register  *******************/
+#define RTC_PRLL_PRL_Pos                    (0U)                               
+#define RTC_PRLL_PRL_Msk                    (0xFFFFU << RTC_PRLL_PRL_Pos)      /*!< 0x0000FFFF */
+#define RTC_PRLL_PRL                        RTC_PRLL_PRL_Msk                   /*!< RTC Prescaler Reload Value Low */
+
+/*******************  Bit definition for RTC_DIVH register  *******************/
+#define RTC_DIVH_RTC_DIV_Pos                (0U)                               
+#define RTC_DIVH_RTC_DIV_Msk                (0xFU << RTC_DIVH_RTC_DIV_Pos)     /*!< 0x0000000F */
+#define RTC_DIVH_RTC_DIV                    RTC_DIVH_RTC_DIV_Msk               /*!< RTC Clock Divider High */
+
+/*******************  Bit definition for RTC_DIVL register  *******************/
+#define RTC_DIVL_RTC_DIV_Pos                (0U)                               
+#define RTC_DIVL_RTC_DIV_Msk                (0xFFFFU << RTC_DIVL_RTC_DIV_Pos)  /*!< 0x0000FFFF */
+#define RTC_DIVL_RTC_DIV                    RTC_DIVL_RTC_DIV_Msk               /*!< RTC Clock Divider Low */
+
+/*******************  Bit definition for RTC_CNTH register  *******************/
+#define RTC_CNTH_RTC_CNT_Pos                (0U)                               
+#define RTC_CNTH_RTC_CNT_Msk                (0xFFFFU << RTC_CNTH_RTC_CNT_Pos)  /*!< 0x0000FFFF */
+#define RTC_CNTH_RTC_CNT                    RTC_CNTH_RTC_CNT_Msk               /*!< RTC Counter High */
+
+/*******************  Bit definition for RTC_CNTL register  *******************/
+#define RTC_CNTL_RTC_CNT_Pos                (0U)                               
+#define RTC_CNTL_RTC_CNT_Msk                (0xFFFFU << RTC_CNTL_RTC_CNT_Pos)  /*!< 0x0000FFFF */
+#define RTC_CNTL_RTC_CNT                    RTC_CNTL_RTC_CNT_Msk               /*!< RTC Counter Low */
+
+/*******************  Bit definition for RTC_ALRH register  *******************/
+#define RTC_ALRH_RTC_ALR_Pos                (0U)                               
+#define RTC_ALRH_RTC_ALR_Msk                (0xFFFFU << RTC_ALRH_RTC_ALR_Pos)  /*!< 0x0000FFFF */
+#define RTC_ALRH_RTC_ALR                    RTC_ALRH_RTC_ALR_Msk               /*!< RTC Alarm High */
+
+/*******************  Bit definition for RTC_ALRL register  *******************/
+#define RTC_ALRL_RTC_ALR_Pos                (0U)                               
+#define RTC_ALRL_RTC_ALR_Msk                (0xFFFFU << RTC_ALRL_RTC_ALR_Pos)  /*!< 0x0000FFFF */
+#define RTC_ALRL_RTC_ALR                    RTC_ALRL_RTC_ALR_Msk               /*!< RTC Alarm Low */
+
+/******************************************************************************/
+/*                                                                            */
+/*                        Independent WATCHDOG (IWDG)                         */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for IWDG_KR register  ********************/
+#define IWDG_KR_KEY_Pos                     (0U)                               
+#define IWDG_KR_KEY_Msk                     (0xFFFFU << IWDG_KR_KEY_Pos)       /*!< 0x0000FFFF */
+#define IWDG_KR_KEY                         IWDG_KR_KEY_Msk                    /*!< Key value (write only, read 0000h) */
+
+/*******************  Bit definition for IWDG_PR register  ********************/
+#define IWDG_PR_PR_Pos                      (0U)                               
+#define IWDG_PR_PR_Msk                      (0x7U << IWDG_PR_PR_Pos)           /*!< 0x00000007 */
+#define IWDG_PR_PR                          IWDG_PR_PR_Msk                     /*!< PR[2:0] (Prescaler divider) */
+#define IWDG_PR_PR_0                        (0x1U << IWDG_PR_PR_Pos)           /*!< 0x00000001 */
+#define IWDG_PR_PR_1                        (0x2U << IWDG_PR_PR_Pos)           /*!< 0x00000002 */
+#define IWDG_PR_PR_2                        (0x4U << IWDG_PR_PR_Pos)           /*!< 0x00000004 */
+
+/*******************  Bit definition for IWDG_RLR register  *******************/
+#define IWDG_RLR_RL_Pos                     (0U)                               
+#define IWDG_RLR_RL_Msk                     (0xFFFU << IWDG_RLR_RL_Pos)        /*!< 0x00000FFF */
+#define IWDG_RLR_RL                         IWDG_RLR_RL_Msk                    /*!< Watchdog counter reload value */
+
+/*******************  Bit definition for IWDG_SR register  ********************/
+#define IWDG_SR_PVU_Pos                     (0U)                               
+#define IWDG_SR_PVU_Msk                     (0x1U << IWDG_SR_PVU_Pos)          /*!< 0x00000001 */
+#define IWDG_SR_PVU                         IWDG_SR_PVU_Msk                    /*!< Watchdog prescaler value update */
+#define IWDG_SR_RVU_Pos                     (1U)                               
+#define IWDG_SR_RVU_Msk                     (0x1U << IWDG_SR_RVU_Pos)          /*!< 0x00000002 */
+#define IWDG_SR_RVU                         IWDG_SR_RVU_Msk                    /*!< Watchdog counter reload value update */
+
+/******************************************************************************/
+/*                                                                            */
+/*                         Window WATCHDOG (WWDG)                             */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for WWDG_CR register  ********************/
+#define WWDG_CR_T_Pos                       (0U)                               
+#define WWDG_CR_T_Msk                       (0x7FU << WWDG_CR_T_Pos)           /*!< 0x0000007F */
+#define WWDG_CR_T                           WWDG_CR_T_Msk                      /*!< T[6:0] bits (7-Bit counter (MSB to LSB)) */
+#define WWDG_CR_T_0                         (0x01U << WWDG_CR_T_Pos)           /*!< 0x00000001 */
+#define WWDG_CR_T_1                         (0x02U << WWDG_CR_T_Pos)           /*!< 0x00000002 */
+#define WWDG_CR_T_2                         (0x04U << WWDG_CR_T_Pos)           /*!< 0x00000004 */
+#define WWDG_CR_T_3                         (0x08U << WWDG_CR_T_Pos)           /*!< 0x00000008 */
+#define WWDG_CR_T_4                         (0x10U << WWDG_CR_T_Pos)           /*!< 0x00000010 */
+#define WWDG_CR_T_5                         (0x20U << WWDG_CR_T_Pos)           /*!< 0x00000020 */
+#define WWDG_CR_T_6                         (0x40U << WWDG_CR_T_Pos)           /*!< 0x00000040 */
+
+/* Legacy defines */
+#define  WWDG_CR_T0 WWDG_CR_T_0
+#define  WWDG_CR_T1 WWDG_CR_T_1
+#define  WWDG_CR_T2 WWDG_CR_T_2
+#define  WWDG_CR_T3 WWDG_CR_T_3
+#define  WWDG_CR_T4 WWDG_CR_T_4
+#define  WWDG_CR_T5 WWDG_CR_T_5
+#define  WWDG_CR_T6 WWDG_CR_T_6
+
+#define WWDG_CR_WDGA_Pos                    (7U)                               
+#define WWDG_CR_WDGA_Msk                    (0x1U << WWDG_CR_WDGA_Pos)         /*!< 0x00000080 */
+#define WWDG_CR_WDGA                        WWDG_CR_WDGA_Msk                   /*!< Activation bit */
+
+/*******************  Bit definition for WWDG_CFR register  *******************/
+#define WWDG_CFR_W_Pos                      (0U)                               
+#define WWDG_CFR_W_Msk                      (0x7FU << WWDG_CFR_W_Pos)          /*!< 0x0000007F */
+#define WWDG_CFR_W                          WWDG_CFR_W_Msk                     /*!< W[6:0] bits (7-bit window value) */
+#define WWDG_CFR_W_0                        (0x01U << WWDG_CFR_W_Pos)          /*!< 0x00000001 */
+#define WWDG_CFR_W_1                        (0x02U << WWDG_CFR_W_Pos)          /*!< 0x00000002 */
+#define WWDG_CFR_W_2                        (0x04U << WWDG_CFR_W_Pos)          /*!< 0x00000004 */
+#define WWDG_CFR_W_3                        (0x08U << WWDG_CFR_W_Pos)          /*!< 0x00000008 */
+#define WWDG_CFR_W_4                        (0x10U << WWDG_CFR_W_Pos)          /*!< 0x00000010 */
+#define WWDG_CFR_W_5                        (0x20U << WWDG_CFR_W_Pos)          /*!< 0x00000020 */
+#define WWDG_CFR_W_6                        (0x40U << WWDG_CFR_W_Pos)          /*!< 0x00000040 */
+
+/* Legacy defines */
+#define  WWDG_CFR_W0 WWDG_CFR_W_0
+#define  WWDG_CFR_W1 WWDG_CFR_W_1
+#define  WWDG_CFR_W2 WWDG_CFR_W_2
+#define  WWDG_CFR_W3 WWDG_CFR_W_3
+#define  WWDG_CFR_W4 WWDG_CFR_W_4
+#define  WWDG_CFR_W5 WWDG_CFR_W_5
+#define  WWDG_CFR_W6 WWDG_CFR_W_6
+
+#define WWDG_CFR_WDGTB_Pos                  (7U)                               
+#define WWDG_CFR_WDGTB_Msk                  (0x3U << WWDG_CFR_WDGTB_Pos)       /*!< 0x00000180 */
+#define WWDG_CFR_WDGTB                      WWDG_CFR_WDGTB_Msk                 /*!< WDGTB[1:0] bits (Timer Base) */
+#define WWDG_CFR_WDGTB_0                    (0x1U << WWDG_CFR_WDGTB_Pos)       /*!< 0x00000080 */
+#define WWDG_CFR_WDGTB_1                    (0x2U << WWDG_CFR_WDGTB_Pos)       /*!< 0x00000100 */
+
+/* Legacy defines */
+#define  WWDG_CFR_WDGTB0 WWDG_CFR_WDGTB_0
+#define  WWDG_CFR_WDGTB1 WWDG_CFR_WDGTB_1
+
+#define WWDG_CFR_EWI_Pos                    (9U)                               
+#define WWDG_CFR_EWI_Msk                    (0x1U << WWDG_CFR_EWI_Pos)         /*!< 0x00000200 */
+#define WWDG_CFR_EWI                        WWDG_CFR_EWI_Msk                   /*!< Early Wakeup Interrupt */
+
+/*******************  Bit definition for WWDG_SR register  ********************/
+#define WWDG_SR_EWIF_Pos                    (0U)                               
+#define WWDG_SR_EWIF_Msk                    (0x1U << WWDG_SR_EWIF_Pos)         /*!< 0x00000001 */
+#define WWDG_SR_EWIF                        WWDG_SR_EWIF_Msk                   /*!< Early Wakeup Interrupt Flag */
+
+
+/******************************************************************************/
+/*                                                                            */
+/*                          SD host Interface                                 */
+/*                                                                            */
+/******************************************************************************/
+
+/******************  Bit definition for SDIO_POWER register  ******************/
+#define SDIO_POWER_PWRCTRL_Pos              (0U)                               
+#define SDIO_POWER_PWRCTRL_Msk              (0x3U << SDIO_POWER_PWRCTRL_Pos)   /*!< 0x00000003 */
+#define SDIO_POWER_PWRCTRL                  SDIO_POWER_PWRCTRL_Msk             /*!< PWRCTRL[1:0] bits (Power supply control bits) */
+#define SDIO_POWER_PWRCTRL_0                (0x1U << SDIO_POWER_PWRCTRL_Pos)   /*!< 0x01 */
+#define SDIO_POWER_PWRCTRL_1                (0x2U << SDIO_POWER_PWRCTRL_Pos)   /*!< 0x02 */
+
+/******************  Bit definition for SDIO_CLKCR register  ******************/
+#define SDIO_CLKCR_CLKDIV_Pos               (0U)                               
+#define SDIO_CLKCR_CLKDIV_Msk               (0xFFU << SDIO_CLKCR_CLKDIV_Pos)   /*!< 0x000000FF */
+#define SDIO_CLKCR_CLKDIV                   SDIO_CLKCR_CLKDIV_Msk              /*!< Clock divide factor */
+#define SDIO_CLKCR_CLKEN_Pos                (8U)                               
+#define SDIO_CLKCR_CLKEN_Msk                (0x1U << SDIO_CLKCR_CLKEN_Pos)     /*!< 0x00000100 */
+#define SDIO_CLKCR_CLKEN                    SDIO_CLKCR_CLKEN_Msk               /*!< Clock enable bit */
+#define SDIO_CLKCR_PWRSAV_Pos               (9U)                               
+#define SDIO_CLKCR_PWRSAV_Msk               (0x1U << SDIO_CLKCR_PWRSAV_Pos)    /*!< 0x00000200 */
+#define SDIO_CLKCR_PWRSAV                   SDIO_CLKCR_PWRSAV_Msk              /*!< Power saving configuration bit */
+#define SDIO_CLKCR_BYPASS_Pos               (10U)                              
+#define SDIO_CLKCR_BYPASS_Msk               (0x1U << SDIO_CLKCR_BYPASS_Pos)    /*!< 0x00000400 */
+#define SDIO_CLKCR_BYPASS                   SDIO_CLKCR_BYPASS_Msk              /*!< Clock divider bypass enable bit */
+
+#define SDIO_CLKCR_WIDBUS_Pos               (11U)                              
+#define SDIO_CLKCR_WIDBUS_Msk               (0x3U << SDIO_CLKCR_WIDBUS_Pos)    /*!< 0x00001800 */
+#define SDIO_CLKCR_WIDBUS                   SDIO_CLKCR_WIDBUS_Msk              /*!< WIDBUS[1:0] bits (Wide bus mode enable bit) */
+#define SDIO_CLKCR_WIDBUS_0                 (0x1U << SDIO_CLKCR_WIDBUS_Pos)    /*!< 0x0800 */
+#define SDIO_CLKCR_WIDBUS_1                 (0x2U << SDIO_CLKCR_WIDBUS_Pos)    /*!< 0x1000 */
+
+#define SDIO_CLKCR_NEGEDGE_Pos              (13U)                              
+#define SDIO_CLKCR_NEGEDGE_Msk              (0x1U << SDIO_CLKCR_NEGEDGE_Pos)   /*!< 0x00002000 */
+#define SDIO_CLKCR_NEGEDGE                  SDIO_CLKCR_NEGEDGE_Msk             /*!< SDIO_CK dephasing selection bit */
+#define SDIO_CLKCR_HWFC_EN_Pos              (14U)                              
+#define SDIO_CLKCR_HWFC_EN_Msk              (0x1U << SDIO_CLKCR_HWFC_EN_Pos)   /*!< 0x00004000 */
+#define SDIO_CLKCR_HWFC_EN                  SDIO_CLKCR_HWFC_EN_Msk             /*!< HW Flow Control enable */
+
+/*******************  Bit definition for SDIO_ARG register  *******************/
+#define SDIO_ARG_CMDARG_Pos                 (0U)                               
+#define SDIO_ARG_CMDARG_Msk                 (0xFFFFFFFFU << SDIO_ARG_CMDARG_Pos) /*!< 0xFFFFFFFF */
+#define SDIO_ARG_CMDARG                     SDIO_ARG_CMDARG_Msk                /*!< Command argument */
+
+/*******************  Bit definition for SDIO_CMD register  *******************/
+#define SDIO_CMD_CMDINDEX_Pos               (0U)                               
+#define SDIO_CMD_CMDINDEX_Msk               (0x3FU << SDIO_CMD_CMDINDEX_Pos)   /*!< 0x0000003F */
+#define SDIO_CMD_CMDINDEX                   SDIO_CMD_CMDINDEX_Msk              /*!< Command Index */
+
+#define SDIO_CMD_WAITRESP_Pos               (6U)                               
+#define SDIO_CMD_WAITRESP_Msk               (0x3U << SDIO_CMD_WAITRESP_Pos)    /*!< 0x000000C0 */
+#define SDIO_CMD_WAITRESP                   SDIO_CMD_WAITRESP_Msk              /*!< WAITRESP[1:0] bits (Wait for response bits) */
+#define SDIO_CMD_WAITRESP_0                 (0x1U << SDIO_CMD_WAITRESP_Pos)    /*!< 0x0040 */
+#define SDIO_CMD_WAITRESP_1                 (0x2U << SDIO_CMD_WAITRESP_Pos)    /*!< 0x0080 */
+
+#define SDIO_CMD_WAITINT_Pos                (8U)                               
+#define SDIO_CMD_WAITINT_Msk                (0x1U << SDIO_CMD_WAITINT_Pos)     /*!< 0x00000100 */
+#define SDIO_CMD_WAITINT                    SDIO_CMD_WAITINT_Msk               /*!< CPSM Waits for Interrupt Request */
+#define SDIO_CMD_WAITPEND_Pos               (9U)                               
+#define SDIO_CMD_WAITPEND_Msk               (0x1U << SDIO_CMD_WAITPEND_Pos)    /*!< 0x00000200 */
+#define SDIO_CMD_WAITPEND                   SDIO_CMD_WAITPEND_Msk              /*!< CPSM Waits for ends of data transfer (CmdPend internal signal) */
+#define SDIO_CMD_CPSMEN_Pos                 (10U)                              
+#define SDIO_CMD_CPSMEN_Msk                 (0x1U << SDIO_CMD_CPSMEN_Pos)      /*!< 0x00000400 */
+#define SDIO_CMD_CPSMEN                     SDIO_CMD_CPSMEN_Msk                /*!< Command path state machine (CPSM) Enable bit */
+#define SDIO_CMD_SDIOSUSPEND_Pos            (11U)                              
+#define SDIO_CMD_SDIOSUSPEND_Msk            (0x1U << SDIO_CMD_SDIOSUSPEND_Pos) /*!< 0x00000800 */
+#define SDIO_CMD_SDIOSUSPEND                SDIO_CMD_SDIOSUSPEND_Msk           /*!< SD I/O suspend command */
+#define SDIO_CMD_ENCMDCOMPL_Pos             (12U)                              
+#define SDIO_CMD_ENCMDCOMPL_Msk             (0x1U << SDIO_CMD_ENCMDCOMPL_Pos)  /*!< 0x00001000 */
+#define SDIO_CMD_ENCMDCOMPL                 SDIO_CMD_ENCMDCOMPL_Msk            /*!< Enable CMD completion */
+#define SDIO_CMD_NIEN_Pos                   (13U)                              
+#define SDIO_CMD_NIEN_Msk                   (0x1U << SDIO_CMD_NIEN_Pos)        /*!< 0x00002000 */
+#define SDIO_CMD_NIEN                       SDIO_CMD_NIEN_Msk                  /*!< Not Interrupt Enable */
+#define SDIO_CMD_CEATACMD_Pos               (14U)                              
+#define SDIO_CMD_CEATACMD_Msk               (0x1U << SDIO_CMD_CEATACMD_Pos)    /*!< 0x00004000 */
+#define SDIO_CMD_CEATACMD                   SDIO_CMD_CEATACMD_Msk              /*!< CE-ATA command */
+
+/*****************  Bit definition for SDIO_RESPCMD register  *****************/
+#define SDIO_RESPCMD_RESPCMD_Pos            (0U)                               
+#define SDIO_RESPCMD_RESPCMD_Msk            (0x3FU << SDIO_RESPCMD_RESPCMD_Pos) /*!< 0x0000003F */
+#define SDIO_RESPCMD_RESPCMD                SDIO_RESPCMD_RESPCMD_Msk           /*!< Response command index */
+
+/******************  Bit definition for SDIO_RESP0 register  ******************/
+#define SDIO_RESP0_CARDSTATUS0_Pos          (0U)                               
+#define SDIO_RESP0_CARDSTATUS0_Msk          (0xFFFFFFFFU << SDIO_RESP0_CARDSTATUS0_Pos) /*!< 0xFFFFFFFF */
+#define SDIO_RESP0_CARDSTATUS0              SDIO_RESP0_CARDSTATUS0_Msk         /*!< Card Status */
+
+/******************  Bit definition for SDIO_RESP1 register  ******************/
+#define SDIO_RESP1_CARDSTATUS1_Pos          (0U)                               
+#define SDIO_RESP1_CARDSTATUS1_Msk          (0xFFFFFFFFU << SDIO_RESP1_CARDSTATUS1_Pos) /*!< 0xFFFFFFFF */
+#define SDIO_RESP1_CARDSTATUS1              SDIO_RESP1_CARDSTATUS1_Msk         /*!< Card Status */
+
+/******************  Bit definition for SDIO_RESP2 register  ******************/
+#define SDIO_RESP2_CARDSTATUS2_Pos          (0U)                               
+#define SDIO_RESP2_CARDSTATUS2_Msk          (0xFFFFFFFFU << SDIO_RESP2_CARDSTATUS2_Pos) /*!< 0xFFFFFFFF */
+#define SDIO_RESP2_CARDSTATUS2              SDIO_RESP2_CARDSTATUS2_Msk         /*!< Card Status */
+
+/******************  Bit definition for SDIO_RESP3 register  ******************/
+#define SDIO_RESP3_CARDSTATUS3_Pos          (0U)                               
+#define SDIO_RESP3_CARDSTATUS3_Msk          (0xFFFFFFFFU << SDIO_RESP3_CARDSTATUS3_Pos) /*!< 0xFFFFFFFF */
+#define SDIO_RESP3_CARDSTATUS3              SDIO_RESP3_CARDSTATUS3_Msk         /*!< Card Status */
+
+/******************  Bit definition for SDIO_RESP4 register  ******************/
+#define SDIO_RESP4_CARDSTATUS4_Pos          (0U)                               
+#define SDIO_RESP4_CARDSTATUS4_Msk          (0xFFFFFFFFU << SDIO_RESP4_CARDSTATUS4_Pos) /*!< 0xFFFFFFFF */
+#define SDIO_RESP4_CARDSTATUS4              SDIO_RESP4_CARDSTATUS4_Msk         /*!< Card Status */
+
+/******************  Bit definition for SDIO_DTIMER register  *****************/
+#define SDIO_DTIMER_DATATIME_Pos            (0U)                               
+#define SDIO_DTIMER_DATATIME_Msk            (0xFFFFFFFFU << SDIO_DTIMER_DATATIME_Pos) /*!< 0xFFFFFFFF */
+#define SDIO_DTIMER_DATATIME                SDIO_DTIMER_DATATIME_Msk           /*!< Data timeout period. */
+
+/******************  Bit definition for SDIO_DLEN register  *******************/
+#define SDIO_DLEN_DATALENGTH_Pos            (0U)                               
+#define SDIO_DLEN_DATALENGTH_Msk            (0x1FFFFFFU << SDIO_DLEN_DATALENGTH_Pos) /*!< 0x01FFFFFF */
+#define SDIO_DLEN_DATALENGTH                SDIO_DLEN_DATALENGTH_Msk           /*!< Data length value */
+
+/******************  Bit definition for SDIO_DCTRL register  ******************/
+#define SDIO_DCTRL_DTEN_Pos                 (0U)                               
+#define SDIO_DCTRL_DTEN_Msk                 (0x1U << SDIO_DCTRL_DTEN_Pos)      /*!< 0x00000001 */
+#define SDIO_DCTRL_DTEN                     SDIO_DCTRL_DTEN_Msk                /*!< Data transfer enabled bit */
+#define SDIO_DCTRL_DTDIR_Pos                (1U)                               
+#define SDIO_DCTRL_DTDIR_Msk                (0x1U << SDIO_DCTRL_DTDIR_Pos)     /*!< 0x00000002 */
+#define SDIO_DCTRL_DTDIR                    SDIO_DCTRL_DTDIR_Msk               /*!< Data transfer direction selection */
+#define SDIO_DCTRL_DTMODE_Pos               (2U)                               
+#define SDIO_DCTRL_DTMODE_Msk               (0x1U << SDIO_DCTRL_DTMODE_Pos)    /*!< 0x00000004 */
+#define SDIO_DCTRL_DTMODE                   SDIO_DCTRL_DTMODE_Msk              /*!< Data transfer mode selection */
+#define SDIO_DCTRL_DMAEN_Pos                (3U)                               
+#define SDIO_DCTRL_DMAEN_Msk                (0x1U << SDIO_DCTRL_DMAEN_Pos)     /*!< 0x00000008 */
+#define SDIO_DCTRL_DMAEN                    SDIO_DCTRL_DMAEN_Msk               /*!< DMA enabled bit */
+
+#define SDIO_DCTRL_DBLOCKSIZE_Pos           (4U)                               
+#define SDIO_DCTRL_DBLOCKSIZE_Msk           (0xFU << SDIO_DCTRL_DBLOCKSIZE_Pos) /*!< 0x000000F0 */
+#define SDIO_DCTRL_DBLOCKSIZE               SDIO_DCTRL_DBLOCKSIZE_Msk          /*!< DBLOCKSIZE[3:0] bits (Data block size) */
+#define SDIO_DCTRL_DBLOCKSIZE_0             (0x1U << SDIO_DCTRL_DBLOCKSIZE_Pos) /*!< 0x0010 */
+#define SDIO_DCTRL_DBLOCKSIZE_1             (0x2U << SDIO_DCTRL_DBLOCKSIZE_Pos) /*!< 0x0020 */
+#define SDIO_DCTRL_DBLOCKSIZE_2             (0x4U << SDIO_DCTRL_DBLOCKSIZE_Pos) /*!< 0x0040 */
+#define SDIO_DCTRL_DBLOCKSIZE_3             (0x8U << SDIO_DCTRL_DBLOCKSIZE_Pos) /*!< 0x0080 */
+
+#define SDIO_DCTRL_RWSTART_Pos              (8U)                               
+#define SDIO_DCTRL_RWSTART_Msk              (0x1U << SDIO_DCTRL_RWSTART_Pos)   /*!< 0x00000100 */
+#define SDIO_DCTRL_RWSTART                  SDIO_DCTRL_RWSTART_Msk             /*!< Read wait start */
+#define SDIO_DCTRL_RWSTOP_Pos               (9U)                               
+#define SDIO_DCTRL_RWSTOP_Msk               (0x1U << SDIO_DCTRL_RWSTOP_Pos)    /*!< 0x00000200 */
+#define SDIO_DCTRL_RWSTOP                   SDIO_DCTRL_RWSTOP_Msk              /*!< Read wait stop */
+#define SDIO_DCTRL_RWMOD_Pos                (10U)                              
+#define SDIO_DCTRL_RWMOD_Msk                (0x1U << SDIO_DCTRL_RWMOD_Pos)     /*!< 0x00000400 */
+#define SDIO_DCTRL_RWMOD                    SDIO_DCTRL_RWMOD_Msk               /*!< Read wait mode */
+#define SDIO_DCTRL_SDIOEN_Pos               (11U)                              
+#define SDIO_DCTRL_SDIOEN_Msk               (0x1U << SDIO_DCTRL_SDIOEN_Pos)    /*!< 0x00000800 */
+#define SDIO_DCTRL_SDIOEN                   SDIO_DCTRL_SDIOEN_Msk              /*!< SD I/O enable functions */
+
+/******************  Bit definition for SDIO_DCOUNT register  *****************/
+#define SDIO_DCOUNT_DATACOUNT_Pos           (0U)                               
+#define SDIO_DCOUNT_DATACOUNT_Msk           (0x1FFFFFFU << SDIO_DCOUNT_DATACOUNT_Pos) /*!< 0x01FFFFFF */
+#define SDIO_DCOUNT_DATACOUNT               SDIO_DCOUNT_DATACOUNT_Msk          /*!< Data count value */
+
+/******************  Bit definition for SDIO_STA register  ********************/
+#define SDIO_STA_CCRCFAIL_Pos               (0U)                               
+#define SDIO_STA_CCRCFAIL_Msk               (0x1U << SDIO_STA_CCRCFAIL_Pos)    /*!< 0x00000001 */
+#define SDIO_STA_CCRCFAIL                   SDIO_STA_CCRCFAIL_Msk              /*!< Command response received (CRC check failed) */
+#define SDIO_STA_DCRCFAIL_Pos               (1U)                               
+#define SDIO_STA_DCRCFAIL_Msk               (0x1U << SDIO_STA_DCRCFAIL_Pos)    /*!< 0x00000002 */
+#define SDIO_STA_DCRCFAIL                   SDIO_STA_DCRCFAIL_Msk              /*!< Data block sent/received (CRC check failed) */
+#define SDIO_STA_CTIMEOUT_Pos               (2U)                               
+#define SDIO_STA_CTIMEOUT_Msk               (0x1U << SDIO_STA_CTIMEOUT_Pos)    /*!< 0x00000004 */
+#define SDIO_STA_CTIMEOUT                   SDIO_STA_CTIMEOUT_Msk              /*!< Command response timeout */
+#define SDIO_STA_DTIMEOUT_Pos               (3U)                               
+#define SDIO_STA_DTIMEOUT_Msk               (0x1U << SDIO_STA_DTIMEOUT_Pos)    /*!< 0x00000008 */
+#define SDIO_STA_DTIMEOUT                   SDIO_STA_DTIMEOUT_Msk              /*!< Data timeout */
+#define SDIO_STA_TXUNDERR_Pos               (4U)                               
+#define SDIO_STA_TXUNDERR_Msk               (0x1U << SDIO_STA_TXUNDERR_Pos)    /*!< 0x00000010 */
+#define SDIO_STA_TXUNDERR                   SDIO_STA_TXUNDERR_Msk              /*!< Transmit FIFO underrun error */
+#define SDIO_STA_RXOVERR_Pos                (5U)                               
+#define SDIO_STA_RXOVERR_Msk                (0x1U << SDIO_STA_RXOVERR_Pos)     /*!< 0x00000020 */
+#define SDIO_STA_RXOVERR                    SDIO_STA_RXOVERR_Msk               /*!< Received FIFO overrun error */
+#define SDIO_STA_CMDREND_Pos                (6U)                               
+#define SDIO_STA_CMDREND_Msk                (0x1U << SDIO_STA_CMDREND_Pos)     /*!< 0x00000040 */
+#define SDIO_STA_CMDREND                    SDIO_STA_CMDREND_Msk               /*!< Command response received (CRC check passed) */
+#define SDIO_STA_CMDSENT_Pos                (7U)                               
+#define SDIO_STA_CMDSENT_Msk                (0x1U << SDIO_STA_CMDSENT_Pos)     /*!< 0x00000080 */
+#define SDIO_STA_CMDSENT                    SDIO_STA_CMDSENT_Msk               /*!< Command sent (no response required) */
+#define SDIO_STA_DATAEND_Pos                (8U)                               
+#define SDIO_STA_DATAEND_Msk                (0x1U << SDIO_STA_DATAEND_Pos)     /*!< 0x00000100 */
+#define SDIO_STA_DATAEND                    SDIO_STA_DATAEND_Msk               /*!< Data end (data counter, SDIDCOUNT, is zero) */
+#define SDIO_STA_STBITERR_Pos               (9U)                               
+#define SDIO_STA_STBITERR_Msk               (0x1U << SDIO_STA_STBITERR_Pos)    /*!< 0x00000200 */
+#define SDIO_STA_STBITERR                   SDIO_STA_STBITERR_Msk              /*!< Start bit not detected on all data signals in wide bus mode */
+#define SDIO_STA_DBCKEND_Pos                (10U)                              
+#define SDIO_STA_DBCKEND_Msk                (0x1U << SDIO_STA_DBCKEND_Pos)     /*!< 0x00000400 */
+#define SDIO_STA_DBCKEND                    SDIO_STA_DBCKEND_Msk               /*!< Data block sent/received (CRC check passed) */
+#define SDIO_STA_CMDACT_Pos                 (11U)                              
+#define SDIO_STA_CMDACT_Msk                 (0x1U << SDIO_STA_CMDACT_Pos)      /*!< 0x00000800 */
+#define SDIO_STA_CMDACT                     SDIO_STA_CMDACT_Msk                /*!< Command transfer in progress */
+#define SDIO_STA_TXACT_Pos                  (12U)                              
+#define SDIO_STA_TXACT_Msk                  (0x1U << SDIO_STA_TXACT_Pos)       /*!< 0x00001000 */
+#define SDIO_STA_TXACT                      SDIO_STA_TXACT_Msk                 /*!< Data transmit in progress */
+#define SDIO_STA_RXACT_Pos                  (13U)                              
+#define SDIO_STA_RXACT_Msk                  (0x1U << SDIO_STA_RXACT_Pos)       /*!< 0x00002000 */
+#define SDIO_STA_RXACT                      SDIO_STA_RXACT_Msk                 /*!< Data receive in progress */
+#define SDIO_STA_TXFIFOHE_Pos               (14U)                              
+#define SDIO_STA_TXFIFOHE_Msk               (0x1U << SDIO_STA_TXFIFOHE_Pos)    /*!< 0x00004000 */
+#define SDIO_STA_TXFIFOHE                   SDIO_STA_TXFIFOHE_Msk              /*!< Transmit FIFO Half Empty: at least 8 words can be written into the FIFO */
+#define SDIO_STA_RXFIFOHF_Pos               (15U)                              
+#define SDIO_STA_RXFIFOHF_Msk               (0x1U << SDIO_STA_RXFIFOHF_Pos)    /*!< 0x00008000 */
+#define SDIO_STA_RXFIFOHF                   SDIO_STA_RXFIFOHF_Msk              /*!< Receive FIFO Half Full: there are at least 8 words in the FIFO */
+#define SDIO_STA_TXFIFOF_Pos                (16U)                              
+#define SDIO_STA_TXFIFOF_Msk                (0x1U << SDIO_STA_TXFIFOF_Pos)     /*!< 0x00010000 */
+#define SDIO_STA_TXFIFOF                    SDIO_STA_TXFIFOF_Msk               /*!< Transmit FIFO full */
+#define SDIO_STA_RXFIFOF_Pos                (17U)                              
+#define SDIO_STA_RXFIFOF_Msk                (0x1U << SDIO_STA_RXFIFOF_Pos)     /*!< 0x00020000 */
+#define SDIO_STA_RXFIFOF                    SDIO_STA_RXFIFOF_Msk               /*!< Receive FIFO full */
+#define SDIO_STA_TXFIFOE_Pos                (18U)                              
+#define SDIO_STA_TXFIFOE_Msk                (0x1U << SDIO_STA_TXFIFOE_Pos)     /*!< 0x00040000 */
+#define SDIO_STA_TXFIFOE                    SDIO_STA_TXFIFOE_Msk               /*!< Transmit FIFO empty */
+#define SDIO_STA_RXFIFOE_Pos                (19U)                              
+#define SDIO_STA_RXFIFOE_Msk                (0x1U << SDIO_STA_RXFIFOE_Pos)     /*!< 0x00080000 */
+#define SDIO_STA_RXFIFOE                    SDIO_STA_RXFIFOE_Msk               /*!< Receive FIFO empty */
+#define SDIO_STA_TXDAVL_Pos                 (20U)                              
+#define SDIO_STA_TXDAVL_Msk                 (0x1U << SDIO_STA_TXDAVL_Pos)      /*!< 0x00100000 */
+#define SDIO_STA_TXDAVL                     SDIO_STA_TXDAVL_Msk                /*!< Data available in transmit FIFO */
+#define SDIO_STA_RXDAVL_Pos                 (21U)                              
+#define SDIO_STA_RXDAVL_Msk                 (0x1U << SDIO_STA_RXDAVL_Pos)      /*!< 0x00200000 */
+#define SDIO_STA_RXDAVL                     SDIO_STA_RXDAVL_Msk                /*!< Data available in receive FIFO */
+#define SDIO_STA_SDIOIT_Pos                 (22U)                              
+#define SDIO_STA_SDIOIT_Msk                 (0x1U << SDIO_STA_SDIOIT_Pos)      /*!< 0x00400000 */
+#define SDIO_STA_SDIOIT                     SDIO_STA_SDIOIT_Msk                /*!< SDIO interrupt received */
+#define SDIO_STA_CEATAEND_Pos               (23U)                              
+#define SDIO_STA_CEATAEND_Msk               (0x1U << SDIO_STA_CEATAEND_Pos)    /*!< 0x00800000 */
+#define SDIO_STA_CEATAEND                   SDIO_STA_CEATAEND_Msk              /*!< CE-ATA command completion signal received for CMD61 */
+
+/*******************  Bit definition for SDIO_ICR register  *******************/
+#define SDIO_ICR_CCRCFAILC_Pos              (0U)                               
+#define SDIO_ICR_CCRCFAILC_Msk              (0x1U << SDIO_ICR_CCRCFAILC_Pos)   /*!< 0x00000001 */
+#define SDIO_ICR_CCRCFAILC                  SDIO_ICR_CCRCFAILC_Msk             /*!< CCRCFAIL flag clear bit */
+#define SDIO_ICR_DCRCFAILC_Pos              (1U)                               
+#define SDIO_ICR_DCRCFAILC_Msk              (0x1U << SDIO_ICR_DCRCFAILC_Pos)   /*!< 0x00000002 */
+#define SDIO_ICR_DCRCFAILC                  SDIO_ICR_DCRCFAILC_Msk             /*!< DCRCFAIL flag clear bit */
+#define SDIO_ICR_CTIMEOUTC_Pos              (2U)                               
+#define SDIO_ICR_CTIMEOUTC_Msk              (0x1U << SDIO_ICR_CTIMEOUTC_Pos)   /*!< 0x00000004 */
+#define SDIO_ICR_CTIMEOUTC                  SDIO_ICR_CTIMEOUTC_Msk             /*!< CTIMEOUT flag clear bit */
+#define SDIO_ICR_DTIMEOUTC_Pos              (3U)                               
+#define SDIO_ICR_DTIMEOUTC_Msk              (0x1U << SDIO_ICR_DTIMEOUTC_Pos)   /*!< 0x00000008 */
+#define SDIO_ICR_DTIMEOUTC                  SDIO_ICR_DTIMEOUTC_Msk             /*!< DTIMEOUT flag clear bit */
+#define SDIO_ICR_TXUNDERRC_Pos              (4U)                               
+#define SDIO_ICR_TXUNDERRC_Msk              (0x1U << SDIO_ICR_TXUNDERRC_Pos)   /*!< 0x00000010 */
+#define SDIO_ICR_TXUNDERRC                  SDIO_ICR_TXUNDERRC_Msk             /*!< TXUNDERR flag clear bit */
+#define SDIO_ICR_RXOVERRC_Pos               (5U)                               
+#define SDIO_ICR_RXOVERRC_Msk               (0x1U << SDIO_ICR_RXOVERRC_Pos)    /*!< 0x00000020 */
+#define SDIO_ICR_RXOVERRC                   SDIO_ICR_RXOVERRC_Msk              /*!< RXOVERR flag clear bit */
+#define SDIO_ICR_CMDRENDC_Pos               (6U)                               
+#define SDIO_ICR_CMDRENDC_Msk               (0x1U << SDIO_ICR_CMDRENDC_Pos)    /*!< 0x00000040 */
+#define SDIO_ICR_CMDRENDC                   SDIO_ICR_CMDRENDC_Msk              /*!< CMDREND flag clear bit */
+#define SDIO_ICR_CMDSENTC_Pos               (7U)                               
+#define SDIO_ICR_CMDSENTC_Msk               (0x1U << SDIO_ICR_CMDSENTC_Pos)    /*!< 0x00000080 */
+#define SDIO_ICR_CMDSENTC                   SDIO_ICR_CMDSENTC_Msk              /*!< CMDSENT flag clear bit */
+#define SDIO_ICR_DATAENDC_Pos               (8U)                               
+#define SDIO_ICR_DATAENDC_Msk               (0x1U << SDIO_ICR_DATAENDC_Pos)    /*!< 0x00000100 */
+#define SDIO_ICR_DATAENDC                   SDIO_ICR_DATAENDC_Msk              /*!< DATAEND flag clear bit */
+#define SDIO_ICR_STBITERRC_Pos              (9U)                               
+#define SDIO_ICR_STBITERRC_Msk              (0x1U << SDIO_ICR_STBITERRC_Pos)   /*!< 0x00000200 */
+#define SDIO_ICR_STBITERRC                  SDIO_ICR_STBITERRC_Msk             /*!< STBITERR flag clear bit */
+#define SDIO_ICR_DBCKENDC_Pos               (10U)                              
+#define SDIO_ICR_DBCKENDC_Msk               (0x1U << SDIO_ICR_DBCKENDC_Pos)    /*!< 0x00000400 */
+#define SDIO_ICR_DBCKENDC                   SDIO_ICR_DBCKENDC_Msk              /*!< DBCKEND flag clear bit */
+#define SDIO_ICR_SDIOITC_Pos                (22U)                              
+#define SDIO_ICR_SDIOITC_Msk                (0x1U << SDIO_ICR_SDIOITC_Pos)     /*!< 0x00400000 */
+#define SDIO_ICR_SDIOITC                    SDIO_ICR_SDIOITC_Msk               /*!< SDIOIT flag clear bit */
+#define SDIO_ICR_CEATAENDC_Pos              (23U)                              
+#define SDIO_ICR_CEATAENDC_Msk              (0x1U << SDIO_ICR_CEATAENDC_Pos)   /*!< 0x00800000 */
+#define SDIO_ICR_CEATAENDC                  SDIO_ICR_CEATAENDC_Msk             /*!< CEATAEND flag clear bit */
+
+/******************  Bit definition for SDIO_MASK register  *******************/
+#define SDIO_MASK_CCRCFAILIE_Pos            (0U)                               
+#define SDIO_MASK_CCRCFAILIE_Msk            (0x1U << SDIO_MASK_CCRCFAILIE_Pos) /*!< 0x00000001 */
+#define SDIO_MASK_CCRCFAILIE                SDIO_MASK_CCRCFAILIE_Msk           /*!< Command CRC Fail Interrupt Enable */
+#define SDIO_MASK_DCRCFAILIE_Pos            (1U)                               
+#define SDIO_MASK_DCRCFAILIE_Msk            (0x1U << SDIO_MASK_DCRCFAILIE_Pos) /*!< 0x00000002 */
+#define SDIO_MASK_DCRCFAILIE                SDIO_MASK_DCRCFAILIE_Msk           /*!< Data CRC Fail Interrupt Enable */
+#define SDIO_MASK_CTIMEOUTIE_Pos            (2U)                               
+#define SDIO_MASK_CTIMEOUTIE_Msk            (0x1U << SDIO_MASK_CTIMEOUTIE_Pos) /*!< 0x00000004 */
+#define SDIO_MASK_CTIMEOUTIE                SDIO_MASK_CTIMEOUTIE_Msk           /*!< Command TimeOut Interrupt Enable */
+#define SDIO_MASK_DTIMEOUTIE_Pos            (3U)                               
+#define SDIO_MASK_DTIMEOUTIE_Msk            (0x1U << SDIO_MASK_DTIMEOUTIE_Pos) /*!< 0x00000008 */
+#define SDIO_MASK_DTIMEOUTIE                SDIO_MASK_DTIMEOUTIE_Msk           /*!< Data TimeOut Interrupt Enable */
+#define SDIO_MASK_TXUNDERRIE_Pos            (4U)                               
+#define SDIO_MASK_TXUNDERRIE_Msk            (0x1U << SDIO_MASK_TXUNDERRIE_Pos) /*!< 0x00000010 */
+#define SDIO_MASK_TXUNDERRIE                SDIO_MASK_TXUNDERRIE_Msk           /*!< Tx FIFO UnderRun Error Interrupt Enable */
+#define SDIO_MASK_RXOVERRIE_Pos             (5U)                               
+#define SDIO_MASK_RXOVERRIE_Msk             (0x1U << SDIO_MASK_RXOVERRIE_Pos)  /*!< 0x00000020 */
+#define SDIO_MASK_RXOVERRIE                 SDIO_MASK_RXOVERRIE_Msk            /*!< Rx FIFO OverRun Error Interrupt Enable */
+#define SDIO_MASK_CMDRENDIE_Pos             (6U)                               
+#define SDIO_MASK_CMDRENDIE_Msk             (0x1U << SDIO_MASK_CMDRENDIE_Pos)  /*!< 0x00000040 */
+#define SDIO_MASK_CMDRENDIE                 SDIO_MASK_CMDRENDIE_Msk            /*!< Command Response Received Interrupt Enable */
+#define SDIO_MASK_CMDSENTIE_Pos             (7U)                               
+#define SDIO_MASK_CMDSENTIE_Msk             (0x1U << SDIO_MASK_CMDSENTIE_Pos)  /*!< 0x00000080 */
+#define SDIO_MASK_CMDSENTIE                 SDIO_MASK_CMDSENTIE_Msk            /*!< Command Sent Interrupt Enable */
+#define SDIO_MASK_DATAENDIE_Pos             (8U)                               
+#define SDIO_MASK_DATAENDIE_Msk             (0x1U << SDIO_MASK_DATAENDIE_Pos)  /*!< 0x00000100 */
+#define SDIO_MASK_DATAENDIE                 SDIO_MASK_DATAENDIE_Msk            /*!< Data End Interrupt Enable */
+#define SDIO_MASK_STBITERRIE_Pos            (9U)                               
+#define SDIO_MASK_STBITERRIE_Msk            (0x1U << SDIO_MASK_STBITERRIE_Pos) /*!< 0x00000200 */
+#define SDIO_MASK_STBITERRIE                SDIO_MASK_STBITERRIE_Msk           /*!< Start Bit Error Interrupt Enable */
+#define SDIO_MASK_DBCKENDIE_Pos             (10U)                              
+#define SDIO_MASK_DBCKENDIE_Msk             (0x1U << SDIO_MASK_DBCKENDIE_Pos)  /*!< 0x00000400 */
+#define SDIO_MASK_DBCKENDIE                 SDIO_MASK_DBCKENDIE_Msk            /*!< Data Block End Interrupt Enable */
+#define SDIO_MASK_CMDACTIE_Pos              (11U)                              
+#define SDIO_MASK_CMDACTIE_Msk              (0x1U << SDIO_MASK_CMDACTIE_Pos)   /*!< 0x00000800 */
+#define SDIO_MASK_CMDACTIE                  SDIO_MASK_CMDACTIE_Msk             /*!< Command Acting Interrupt Enable */
+#define SDIO_MASK_TXACTIE_Pos               (12U)                              
+#define SDIO_MASK_TXACTIE_Msk               (0x1U << SDIO_MASK_TXACTIE_Pos)    /*!< 0x00001000 */
+#define SDIO_MASK_TXACTIE                   SDIO_MASK_TXACTIE_Msk              /*!< Data Transmit Acting Interrupt Enable */
+#define SDIO_MASK_RXACTIE_Pos               (13U)                              
+#define SDIO_MASK_RXACTIE_Msk               (0x1U << SDIO_MASK_RXACTIE_Pos)    /*!< 0x00002000 */
+#define SDIO_MASK_RXACTIE                   SDIO_MASK_RXACTIE_Msk              /*!< Data receive acting interrupt enabled */
+#define SDIO_MASK_TXFIFOHEIE_Pos            (14U)                              
+#define SDIO_MASK_TXFIFOHEIE_Msk            (0x1U << SDIO_MASK_TXFIFOHEIE_Pos) /*!< 0x00004000 */
+#define SDIO_MASK_TXFIFOHEIE                SDIO_MASK_TXFIFOHEIE_Msk           /*!< Tx FIFO Half Empty interrupt Enable */
+#define SDIO_MASK_RXFIFOHFIE_Pos            (15U)                              
+#define SDIO_MASK_RXFIFOHFIE_Msk            (0x1U << SDIO_MASK_RXFIFOHFIE_Pos) /*!< 0x00008000 */
+#define SDIO_MASK_RXFIFOHFIE                SDIO_MASK_RXFIFOHFIE_Msk           /*!< Rx FIFO Half Full interrupt Enable */
+#define SDIO_MASK_TXFIFOFIE_Pos             (16U)                              
+#define SDIO_MASK_TXFIFOFIE_Msk             (0x1U << SDIO_MASK_TXFIFOFIE_Pos)  /*!< 0x00010000 */
+#define SDIO_MASK_TXFIFOFIE                 SDIO_MASK_TXFIFOFIE_Msk            /*!< Tx FIFO Full interrupt Enable */
+#define SDIO_MASK_RXFIFOFIE_Pos             (17U)                              
+#define SDIO_MASK_RXFIFOFIE_Msk             (0x1U << SDIO_MASK_RXFIFOFIE_Pos)  /*!< 0x00020000 */
+#define SDIO_MASK_RXFIFOFIE                 SDIO_MASK_RXFIFOFIE_Msk            /*!< Rx FIFO Full interrupt Enable */
+#define SDIO_MASK_TXFIFOEIE_Pos             (18U)                              
+#define SDIO_MASK_TXFIFOEIE_Msk             (0x1U << SDIO_MASK_TXFIFOEIE_Pos)  /*!< 0x00040000 */
+#define SDIO_MASK_TXFIFOEIE                 SDIO_MASK_TXFIFOEIE_Msk            /*!< Tx FIFO Empty interrupt Enable */
+#define SDIO_MASK_RXFIFOEIE_Pos             (19U)                              
+#define SDIO_MASK_RXFIFOEIE_Msk             (0x1U << SDIO_MASK_RXFIFOEIE_Pos)  /*!< 0x00080000 */
+#define SDIO_MASK_RXFIFOEIE                 SDIO_MASK_RXFIFOEIE_Msk            /*!< Rx FIFO Empty interrupt Enable */
+#define SDIO_MASK_TXDAVLIE_Pos              (20U)                              
+#define SDIO_MASK_TXDAVLIE_Msk              (0x1U << SDIO_MASK_TXDAVLIE_Pos)   /*!< 0x00100000 */
+#define SDIO_MASK_TXDAVLIE                  SDIO_MASK_TXDAVLIE_Msk             /*!< Data available in Tx FIFO interrupt Enable */
+#define SDIO_MASK_RXDAVLIE_Pos              (21U)                              
+#define SDIO_MASK_RXDAVLIE_Msk              (0x1U << SDIO_MASK_RXDAVLIE_Pos)   /*!< 0x00200000 */
+#define SDIO_MASK_RXDAVLIE                  SDIO_MASK_RXDAVLIE_Msk             /*!< Data available in Rx FIFO interrupt Enable */
+#define SDIO_MASK_SDIOITIE_Pos              (22U)                              
+#define SDIO_MASK_SDIOITIE_Msk              (0x1U << SDIO_MASK_SDIOITIE_Pos)   /*!< 0x00400000 */
+#define SDIO_MASK_SDIOITIE                  SDIO_MASK_SDIOITIE_Msk             /*!< SDIO Mode Interrupt Received interrupt Enable */
+#define SDIO_MASK_CEATAENDIE_Pos            (23U)                              
+#define SDIO_MASK_CEATAENDIE_Msk            (0x1U << SDIO_MASK_CEATAENDIE_Pos) /*!< 0x00800000 */
+#define SDIO_MASK_CEATAENDIE                SDIO_MASK_CEATAENDIE_Msk           /*!< CE-ATA command completion signal received Interrupt Enable */
+
+/*****************  Bit definition for SDIO_FIFOCNT register  *****************/
+#define SDIO_FIFOCNT_FIFOCOUNT_Pos          (0U)                               
+#define SDIO_FIFOCNT_FIFOCOUNT_Msk          (0xFFFFFFU << SDIO_FIFOCNT_FIFOCOUNT_Pos) /*!< 0x00FFFFFF */
+#define SDIO_FIFOCNT_FIFOCOUNT              SDIO_FIFOCNT_FIFOCOUNT_Msk         /*!< Remaining number of words to be written to or read from the FIFO */
+
+/******************  Bit definition for SDIO_FIFO register  *******************/
+#define SDIO_FIFO_FIFODATA_Pos              (0U)                               
+#define SDIO_FIFO_FIFODATA_Msk              (0xFFFFFFFFU << SDIO_FIFO_FIFODATA_Pos) /*!< 0xFFFFFFFF */
+#define SDIO_FIFO_FIFODATA                  SDIO_FIFO_FIFODATA_Msk             /*!< Receive and transmit FIFO data */
+
+/******************************************************************************/
+/*                                                                            */
+/*                                   USB Device FS                            */
+/*                                                                            */
+/******************************************************************************/
+
+/*!< Endpoint-specific registers */
+#define  USB_EP0R                            USB_BASE                      /*!< Endpoint 0 register address */
+#define  USB_EP1R                            (USB_BASE + 0x00000004)       /*!< Endpoint 1 register address */
+#define  USB_EP2R                            (USB_BASE + 0x00000008)       /*!< Endpoint 2 register address */
+#define  USB_EP3R                            (USB_BASE + 0x0000000C)       /*!< Endpoint 3 register address */
+#define  USB_EP4R                            (USB_BASE + 0x00000010)       /*!< Endpoint 4 register address */
+#define  USB_EP5R                            (USB_BASE + 0x00000014)       /*!< Endpoint 5 register address */
+#define  USB_EP6R                            (USB_BASE + 0x00000018)       /*!< Endpoint 6 register address */
+#define  USB_EP7R                            (USB_BASE + 0x0000001C)       /*!< Endpoint 7 register address */
+
+/* bit positions */ 
+#define USB_EP_CTR_RX_Pos                       (15U)                          
+#define USB_EP_CTR_RX_Msk                       (0x1U << USB_EP_CTR_RX_Pos)    /*!< 0x00008000 */
+#define USB_EP_CTR_RX                           USB_EP_CTR_RX_Msk              /*!< EndPoint Correct TRansfer RX */
+#define USB_EP_DTOG_RX_Pos                      (14U)                          
+#define USB_EP_DTOG_RX_Msk                      (0x1U << USB_EP_DTOG_RX_Pos)   /*!< 0x00004000 */
+#define USB_EP_DTOG_RX                          USB_EP_DTOG_RX_Msk             /*!< EndPoint Data TOGGLE RX */
+#define USB_EPRX_STAT_Pos                       (12U)                          
+#define USB_EPRX_STAT_Msk                       (0x3U << USB_EPRX_STAT_Pos)    /*!< 0x00003000 */
+#define USB_EPRX_STAT                           USB_EPRX_STAT_Msk              /*!< EndPoint RX STATus bit field */
+#define USB_EP_SETUP_Pos                        (11U)                          
+#define USB_EP_SETUP_Msk                        (0x1U << USB_EP_SETUP_Pos)     /*!< 0x00000800 */
+#define USB_EP_SETUP                            USB_EP_SETUP_Msk               /*!< EndPoint SETUP */
+#define USB_EP_T_FIELD_Pos                      (9U)                           
+#define USB_EP_T_FIELD_Msk                      (0x3U << USB_EP_T_FIELD_Pos)   /*!< 0x00000600 */
+#define USB_EP_T_FIELD                          USB_EP_T_FIELD_Msk             /*!< EndPoint TYPE */
+#define USB_EP_KIND_Pos                         (8U)                           
+#define USB_EP_KIND_Msk                         (0x1U << USB_EP_KIND_Pos)      /*!< 0x00000100 */
+#define USB_EP_KIND                             USB_EP_KIND_Msk                /*!< EndPoint KIND */
+#define USB_EP_CTR_TX_Pos                       (7U)                           
+#define USB_EP_CTR_TX_Msk                       (0x1U << USB_EP_CTR_TX_Pos)    /*!< 0x00000080 */
+#define USB_EP_CTR_TX                           USB_EP_CTR_TX_Msk              /*!< EndPoint Correct TRansfer TX */
+#define USB_EP_DTOG_TX_Pos                      (6U)                           
+#define USB_EP_DTOG_TX_Msk                      (0x1U << USB_EP_DTOG_TX_Pos)   /*!< 0x00000040 */
+#define USB_EP_DTOG_TX                          USB_EP_DTOG_TX_Msk             /*!< EndPoint Data TOGGLE TX */
+#define USB_EPTX_STAT_Pos                       (4U)                           
+#define USB_EPTX_STAT_Msk                       (0x3U << USB_EPTX_STAT_Pos)    /*!< 0x00000030 */
+#define USB_EPTX_STAT                           USB_EPTX_STAT_Msk              /*!< EndPoint TX STATus bit field */
+#define USB_EPADDR_FIELD_Pos                    (0U)                           
+#define USB_EPADDR_FIELD_Msk                    (0xFU << USB_EPADDR_FIELD_Pos) /*!< 0x0000000F */
+#define USB_EPADDR_FIELD                        USB_EPADDR_FIELD_Msk           /*!< EndPoint ADDRess FIELD */
+
+/* EndPoint REGister MASK (no toggle fields) */
+#define  USB_EPREG_MASK                      (USB_EP_CTR_RX|USB_EP_SETUP|USB_EP_T_FIELD|USB_EP_KIND|USB_EP_CTR_TX|USB_EPADDR_FIELD)
+                                                                           /*!< EP_TYPE[1:0] EndPoint TYPE */
+#define USB_EP_TYPE_MASK_Pos                    (9U)                           
+#define USB_EP_TYPE_MASK_Msk                    (0x3U << USB_EP_TYPE_MASK_Pos) /*!< 0x00000600 */
+#define USB_EP_TYPE_MASK                        USB_EP_TYPE_MASK_Msk           /*!< EndPoint TYPE Mask */
+#define USB_EP_BULK                             ((uint32_t)0x00000000)         /*!< EndPoint BULK */
+#define USB_EP_CONTROL                          ((uint32_t)0x00000200)         /*!< EndPoint CONTROL */
+#define USB_EP_ISOCHRONOUS                      ((uint32_t)0x00000400)         /*!< EndPoint ISOCHRONOUS */
+#define USB_EP_INTERRUPT                        ((uint32_t)0x00000600)         /*!< EndPoint INTERRUPT */
+#define  USB_EP_T_MASK                       (~USB_EP_T_FIELD & USB_EPREG_MASK)
+                                                                 
+#define  USB_EPKIND_MASK                     (~USB_EP_KIND & USB_EPREG_MASK)  /*!< EP_KIND EndPoint KIND */
+                                                                           /*!< STAT_TX[1:0] STATus for TX transfer */
+#define USB_EP_TX_DIS                           ((uint32_t)0x00000000)         /*!< EndPoint TX DISabled */
+#define USB_EP_TX_STALL                         ((uint32_t)0x00000010)         /*!< EndPoint TX STALLed */
+#define USB_EP_TX_NAK                           ((uint32_t)0x00000020)         /*!< EndPoint TX NAKed */
+#define USB_EP_TX_VALID                         ((uint32_t)0x00000030)         /*!< EndPoint TX VALID */
+#define USB_EPTX_DTOG1                          ((uint32_t)0x00000010)         /*!< EndPoint TX Data TOGgle bit1 */
+#define USB_EPTX_DTOG2                          ((uint32_t)0x00000020)         /*!< EndPoint TX Data TOGgle bit2 */
+#define  USB_EPTX_DTOGMASK  (USB_EPTX_STAT|USB_EPREG_MASK)
+                                                                           /*!< STAT_RX[1:0] STATus for RX transfer */
+#define USB_EP_RX_DIS                           ((uint32_t)0x00000000)         /*!< EndPoint RX DISabled */
+#define USB_EP_RX_STALL                         ((uint32_t)0x00001000)         /*!< EndPoint RX STALLed */
+#define USB_EP_RX_NAK                           ((uint32_t)0x00002000)         /*!< EndPoint RX NAKed */
+#define USB_EP_RX_VALID                         ((uint32_t)0x00003000)         /*!< EndPoint RX VALID */
+#define USB_EPRX_DTOG1                          ((uint32_t)0x00001000)         /*!< EndPoint RX Data TOGgle bit1 */
+#define USB_EPRX_DTOG2                          ((uint32_t)0x00002000)         /*!< EndPoint RX Data TOGgle bit1 */
+#define  USB_EPRX_DTOGMASK  (USB_EPRX_STAT|USB_EPREG_MASK)
+
+/*******************  Bit definition for USB_EP0R register  *******************/
+#define USB_EP0R_EA_Pos                         (0U)                           
+#define USB_EP0R_EA_Msk                         (0xFU << USB_EP0R_EA_Pos)      /*!< 0x0000000F */
+#define USB_EP0R_EA                             USB_EP0R_EA_Msk                /*!< Endpoint Address */
+
+#define USB_EP0R_STAT_TX_Pos                    (4U)                           
+#define USB_EP0R_STAT_TX_Msk                    (0x3U << USB_EP0R_STAT_TX_Pos) /*!< 0x00000030 */
+#define USB_EP0R_STAT_TX                        USB_EP0R_STAT_TX_Msk           /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */
+#define USB_EP0R_STAT_TX_0                      (0x1U << USB_EP0R_STAT_TX_Pos) /*!< 0x00000010 */
+#define USB_EP0R_STAT_TX_1                      (0x2U << USB_EP0R_STAT_TX_Pos) /*!< 0x00000020 */
+
+#define USB_EP0R_DTOG_TX_Pos                    (6U)                           
+#define USB_EP0R_DTOG_TX_Msk                    (0x1U << USB_EP0R_DTOG_TX_Pos) /*!< 0x00000040 */
+#define USB_EP0R_DTOG_TX                        USB_EP0R_DTOG_TX_Msk           /*!< Data Toggle, for transmission transfers */
+#define USB_EP0R_CTR_TX_Pos                     (7U)                           
+#define USB_EP0R_CTR_TX_Msk                     (0x1U << USB_EP0R_CTR_TX_Pos)  /*!< 0x00000080 */
+#define USB_EP0R_CTR_TX                         USB_EP0R_CTR_TX_Msk            /*!< Correct Transfer for transmission */
+#define USB_EP0R_EP_KIND_Pos                    (8U)                           
+#define USB_EP0R_EP_KIND_Msk                    (0x1U << USB_EP0R_EP_KIND_Pos) /*!< 0x00000100 */
+#define USB_EP0R_EP_KIND                        USB_EP0R_EP_KIND_Msk           /*!< Endpoint Kind */
+                                                                           
+#define USB_EP0R_EP_TYPE_Pos                    (9U)                           
+#define USB_EP0R_EP_TYPE_Msk                    (0x3U << USB_EP0R_EP_TYPE_Pos) /*!< 0x00000600 */
+#define USB_EP0R_EP_TYPE                        USB_EP0R_EP_TYPE_Msk           /*!< EP_TYPE[1:0] bits (Endpoint type) */
+#define USB_EP0R_EP_TYPE_0                      (0x1U << USB_EP0R_EP_TYPE_Pos) /*!< 0x00000200 */
+#define USB_EP0R_EP_TYPE_1                      (0x2U << USB_EP0R_EP_TYPE_Pos) /*!< 0x00000400 */
+
+#define USB_EP0R_SETUP_Pos                      (11U)                          
+#define USB_EP0R_SETUP_Msk                      (0x1U << USB_EP0R_SETUP_Pos)   /*!< 0x00000800 */
+#define USB_EP0R_SETUP                          USB_EP0R_SETUP_Msk             /*!< Setup transaction completed */
+
+#define USB_EP0R_STAT_RX_Pos                    (12U)                          
+#define USB_EP0R_STAT_RX_Msk                    (0x3U << USB_EP0R_STAT_RX_Pos) /*!< 0x00003000 */
+#define USB_EP0R_STAT_RX                        USB_EP0R_STAT_RX_Msk           /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */
+#define USB_EP0R_STAT_RX_0                      (0x1U << USB_EP0R_STAT_RX_Pos) /*!< 0x00001000 */
+#define USB_EP0R_STAT_RX_1                      (0x2U << USB_EP0R_STAT_RX_Pos) /*!< 0x00002000 */
+
+#define USB_EP0R_DTOG_RX_Pos                    (14U)                          
+#define USB_EP0R_DTOG_RX_Msk                    (0x1U << USB_EP0R_DTOG_RX_Pos) /*!< 0x00004000 */
+#define USB_EP0R_DTOG_RX                        USB_EP0R_DTOG_RX_Msk           /*!< Data Toggle, for reception transfers */
+#define USB_EP0R_CTR_RX_Pos                     (15U)                          
+#define USB_EP0R_CTR_RX_Msk                     (0x1U << USB_EP0R_CTR_RX_Pos)  /*!< 0x00008000 */
+#define USB_EP0R_CTR_RX                         USB_EP0R_CTR_RX_Msk            /*!< Correct Transfer for reception */
+
+/*******************  Bit definition for USB_EP1R register  *******************/
+#define USB_EP1R_EA_Pos                         (0U)                           
+#define USB_EP1R_EA_Msk                         (0xFU << USB_EP1R_EA_Pos)      /*!< 0x0000000F */
+#define USB_EP1R_EA                             USB_EP1R_EA_Msk                /*!< Endpoint Address */
+                                                                          
+#define USB_EP1R_STAT_TX_Pos                    (4U)                           
+#define USB_EP1R_STAT_TX_Msk                    (0x3U << USB_EP1R_STAT_TX_Pos) /*!< 0x00000030 */
+#define USB_EP1R_STAT_TX                        USB_EP1R_STAT_TX_Msk           /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */
+#define USB_EP1R_STAT_TX_0                      (0x1U << USB_EP1R_STAT_TX_Pos) /*!< 0x00000010 */
+#define USB_EP1R_STAT_TX_1                      (0x2U << USB_EP1R_STAT_TX_Pos) /*!< 0x00000020 */
+
+#define USB_EP1R_DTOG_TX_Pos                    (6U)                           
+#define USB_EP1R_DTOG_TX_Msk                    (0x1U << USB_EP1R_DTOG_TX_Pos) /*!< 0x00000040 */
+#define USB_EP1R_DTOG_TX                        USB_EP1R_DTOG_TX_Msk           /*!< Data Toggle, for transmission transfers */
+#define USB_EP1R_CTR_TX_Pos                     (7U)                           
+#define USB_EP1R_CTR_TX_Msk                     (0x1U << USB_EP1R_CTR_TX_Pos)  /*!< 0x00000080 */
+#define USB_EP1R_CTR_TX                         USB_EP1R_CTR_TX_Msk            /*!< Correct Transfer for transmission */
+#define USB_EP1R_EP_KIND_Pos                    (8U)                           
+#define USB_EP1R_EP_KIND_Msk                    (0x1U << USB_EP1R_EP_KIND_Pos) /*!< 0x00000100 */
+#define USB_EP1R_EP_KIND                        USB_EP1R_EP_KIND_Msk           /*!< Endpoint Kind */
+
+#define USB_EP1R_EP_TYPE_Pos                    (9U)                           
+#define USB_EP1R_EP_TYPE_Msk                    (0x3U << USB_EP1R_EP_TYPE_Pos) /*!< 0x00000600 */
+#define USB_EP1R_EP_TYPE                        USB_EP1R_EP_TYPE_Msk           /*!< EP_TYPE[1:0] bits (Endpoint type) */
+#define USB_EP1R_EP_TYPE_0                      (0x1U << USB_EP1R_EP_TYPE_Pos) /*!< 0x00000200 */
+#define USB_EP1R_EP_TYPE_1                      (0x2U << USB_EP1R_EP_TYPE_Pos) /*!< 0x00000400 */
+
+#define USB_EP1R_SETUP_Pos                      (11U)                          
+#define USB_EP1R_SETUP_Msk                      (0x1U << USB_EP1R_SETUP_Pos)   /*!< 0x00000800 */
+#define USB_EP1R_SETUP                          USB_EP1R_SETUP_Msk             /*!< Setup transaction completed */
+                                                                           
+#define USB_EP1R_STAT_RX_Pos                    (12U)                          
+#define USB_EP1R_STAT_RX_Msk                    (0x3U << USB_EP1R_STAT_RX_Pos) /*!< 0x00003000 */
+#define USB_EP1R_STAT_RX                        USB_EP1R_STAT_RX_Msk           /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */
+#define USB_EP1R_STAT_RX_0                      (0x1U << USB_EP1R_STAT_RX_Pos) /*!< 0x00001000 */
+#define USB_EP1R_STAT_RX_1                      (0x2U << USB_EP1R_STAT_RX_Pos) /*!< 0x00002000 */
+
+#define USB_EP1R_DTOG_RX_Pos                    (14U)                          
+#define USB_EP1R_DTOG_RX_Msk                    (0x1U << USB_EP1R_DTOG_RX_Pos) /*!< 0x00004000 */
+#define USB_EP1R_DTOG_RX                        USB_EP1R_DTOG_RX_Msk           /*!< Data Toggle, for reception transfers */
+#define USB_EP1R_CTR_RX_Pos                     (15U)                          
+#define USB_EP1R_CTR_RX_Msk                     (0x1U << USB_EP1R_CTR_RX_Pos)  /*!< 0x00008000 */
+#define USB_EP1R_CTR_RX                         USB_EP1R_CTR_RX_Msk            /*!< Correct Transfer for reception */
+
+/*******************  Bit definition for USB_EP2R register  *******************/
+#define USB_EP2R_EA_Pos                         (0U)                           
+#define USB_EP2R_EA_Msk                         (0xFU << USB_EP2R_EA_Pos)      /*!< 0x0000000F */
+#define USB_EP2R_EA                             USB_EP2R_EA_Msk                /*!< Endpoint Address */
+
+#define USB_EP2R_STAT_TX_Pos                    (4U)                           
+#define USB_EP2R_STAT_TX_Msk                    (0x3U << USB_EP2R_STAT_TX_Pos) /*!< 0x00000030 */
+#define USB_EP2R_STAT_TX                        USB_EP2R_STAT_TX_Msk           /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */
+#define USB_EP2R_STAT_TX_0                      (0x1U << USB_EP2R_STAT_TX_Pos) /*!< 0x00000010 */
+#define USB_EP2R_STAT_TX_1                      (0x2U << USB_EP2R_STAT_TX_Pos) /*!< 0x00000020 */
+
+#define USB_EP2R_DTOG_TX_Pos                    (6U)                           
+#define USB_EP2R_DTOG_TX_Msk                    (0x1U << USB_EP2R_DTOG_TX_Pos) /*!< 0x00000040 */
+#define USB_EP2R_DTOG_TX                        USB_EP2R_DTOG_TX_Msk           /*!< Data Toggle, for transmission transfers */
+#define USB_EP2R_CTR_TX_Pos                     (7U)                           
+#define USB_EP2R_CTR_TX_Msk                     (0x1U << USB_EP2R_CTR_TX_Pos)  /*!< 0x00000080 */
+#define USB_EP2R_CTR_TX                         USB_EP2R_CTR_TX_Msk            /*!< Correct Transfer for transmission */
+#define USB_EP2R_EP_KIND_Pos                    (8U)                           
+#define USB_EP2R_EP_KIND_Msk                    (0x1U << USB_EP2R_EP_KIND_Pos) /*!< 0x00000100 */
+#define USB_EP2R_EP_KIND                        USB_EP2R_EP_KIND_Msk           /*!< Endpoint Kind */
+
+#define USB_EP2R_EP_TYPE_Pos                    (9U)                           
+#define USB_EP2R_EP_TYPE_Msk                    (0x3U << USB_EP2R_EP_TYPE_Pos) /*!< 0x00000600 */
+#define USB_EP2R_EP_TYPE                        USB_EP2R_EP_TYPE_Msk           /*!< EP_TYPE[1:0] bits (Endpoint type) */
+#define USB_EP2R_EP_TYPE_0                      (0x1U << USB_EP2R_EP_TYPE_Pos) /*!< 0x00000200 */
+#define USB_EP2R_EP_TYPE_1                      (0x2U << USB_EP2R_EP_TYPE_Pos) /*!< 0x00000400 */
+
+#define USB_EP2R_SETUP_Pos                      (11U)                          
+#define USB_EP2R_SETUP_Msk                      (0x1U << USB_EP2R_SETUP_Pos)   /*!< 0x00000800 */
+#define USB_EP2R_SETUP                          USB_EP2R_SETUP_Msk             /*!< Setup transaction completed */
+
+#define USB_EP2R_STAT_RX_Pos                    (12U)                          
+#define USB_EP2R_STAT_RX_Msk                    (0x3U << USB_EP2R_STAT_RX_Pos) /*!< 0x00003000 */
+#define USB_EP2R_STAT_RX                        USB_EP2R_STAT_RX_Msk           /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */
+#define USB_EP2R_STAT_RX_0                      (0x1U << USB_EP2R_STAT_RX_Pos) /*!< 0x00001000 */
+#define USB_EP2R_STAT_RX_1                      (0x2U << USB_EP2R_STAT_RX_Pos) /*!< 0x00002000 */
+
+#define USB_EP2R_DTOG_RX_Pos                    (14U)                          
+#define USB_EP2R_DTOG_RX_Msk                    (0x1U << USB_EP2R_DTOG_RX_Pos) /*!< 0x00004000 */
+#define USB_EP2R_DTOG_RX                        USB_EP2R_DTOG_RX_Msk           /*!< Data Toggle, for reception transfers */
+#define USB_EP2R_CTR_RX_Pos                     (15U)                          
+#define USB_EP2R_CTR_RX_Msk                     (0x1U << USB_EP2R_CTR_RX_Pos)  /*!< 0x00008000 */
+#define USB_EP2R_CTR_RX                         USB_EP2R_CTR_RX_Msk            /*!< Correct Transfer for reception */
+
+/*******************  Bit definition for USB_EP3R register  *******************/
+#define USB_EP3R_EA_Pos                         (0U)                           
+#define USB_EP3R_EA_Msk                         (0xFU << USB_EP3R_EA_Pos)      /*!< 0x0000000F */
+#define USB_EP3R_EA                             USB_EP3R_EA_Msk                /*!< Endpoint Address */
+
+#define USB_EP3R_STAT_TX_Pos                    (4U)                           
+#define USB_EP3R_STAT_TX_Msk                    (0x3U << USB_EP3R_STAT_TX_Pos) /*!< 0x00000030 */
+#define USB_EP3R_STAT_TX                        USB_EP3R_STAT_TX_Msk           /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */
+#define USB_EP3R_STAT_TX_0                      (0x1U << USB_EP3R_STAT_TX_Pos) /*!< 0x00000010 */
+#define USB_EP3R_STAT_TX_1                      (0x2U << USB_EP3R_STAT_TX_Pos) /*!< 0x00000020 */
+
+#define USB_EP3R_DTOG_TX_Pos                    (6U)                           
+#define USB_EP3R_DTOG_TX_Msk                    (0x1U << USB_EP3R_DTOG_TX_Pos) /*!< 0x00000040 */
+#define USB_EP3R_DTOG_TX                        USB_EP3R_DTOG_TX_Msk           /*!< Data Toggle, for transmission transfers */
+#define USB_EP3R_CTR_TX_Pos                     (7U)                           
+#define USB_EP3R_CTR_TX_Msk                     (0x1U << USB_EP3R_CTR_TX_Pos)  /*!< 0x00000080 */
+#define USB_EP3R_CTR_TX                         USB_EP3R_CTR_TX_Msk            /*!< Correct Transfer for transmission */
+#define USB_EP3R_EP_KIND_Pos                    (8U)                           
+#define USB_EP3R_EP_KIND_Msk                    (0x1U << USB_EP3R_EP_KIND_Pos) /*!< 0x00000100 */
+#define USB_EP3R_EP_KIND                        USB_EP3R_EP_KIND_Msk           /*!< Endpoint Kind */
+
+#define USB_EP3R_EP_TYPE_Pos                    (9U)                           
+#define USB_EP3R_EP_TYPE_Msk                    (0x3U << USB_EP3R_EP_TYPE_Pos) /*!< 0x00000600 */
+#define USB_EP3R_EP_TYPE                        USB_EP3R_EP_TYPE_Msk           /*!< EP_TYPE[1:0] bits (Endpoint type) */
+#define USB_EP3R_EP_TYPE_0                      (0x1U << USB_EP3R_EP_TYPE_Pos) /*!< 0x00000200 */
+#define USB_EP3R_EP_TYPE_1                      (0x2U << USB_EP3R_EP_TYPE_Pos) /*!< 0x00000400 */
+
+#define USB_EP3R_SETUP_Pos                      (11U)                          
+#define USB_EP3R_SETUP_Msk                      (0x1U << USB_EP3R_SETUP_Pos)   /*!< 0x00000800 */
+#define USB_EP3R_SETUP                          USB_EP3R_SETUP_Msk             /*!< Setup transaction completed */
+
+#define USB_EP3R_STAT_RX_Pos                    (12U)                          
+#define USB_EP3R_STAT_RX_Msk                    (0x3U << USB_EP3R_STAT_RX_Pos) /*!< 0x00003000 */
+#define USB_EP3R_STAT_RX                        USB_EP3R_STAT_RX_Msk           /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */
+#define USB_EP3R_STAT_RX_0                      (0x1U << USB_EP3R_STAT_RX_Pos) /*!< 0x00001000 */
+#define USB_EP3R_STAT_RX_1                      (0x2U << USB_EP3R_STAT_RX_Pos) /*!< 0x00002000 */
+
+#define USB_EP3R_DTOG_RX_Pos                    (14U)                          
+#define USB_EP3R_DTOG_RX_Msk                    (0x1U << USB_EP3R_DTOG_RX_Pos) /*!< 0x00004000 */
+#define USB_EP3R_DTOG_RX                        USB_EP3R_DTOG_RX_Msk           /*!< Data Toggle, for reception transfers */
+#define USB_EP3R_CTR_RX_Pos                     (15U)                          
+#define USB_EP3R_CTR_RX_Msk                     (0x1U << USB_EP3R_CTR_RX_Pos)  /*!< 0x00008000 */
+#define USB_EP3R_CTR_RX                         USB_EP3R_CTR_RX_Msk            /*!< Correct Transfer for reception */
+
+/*******************  Bit definition for USB_EP4R register  *******************/
+#define USB_EP4R_EA_Pos                         (0U)                           
+#define USB_EP4R_EA_Msk                         (0xFU << USB_EP4R_EA_Pos)      /*!< 0x0000000F */
+#define USB_EP4R_EA                             USB_EP4R_EA_Msk                /*!< Endpoint Address */
+
+#define USB_EP4R_STAT_TX_Pos                    (4U)                           
+#define USB_EP4R_STAT_TX_Msk                    (0x3U << USB_EP4R_STAT_TX_Pos) /*!< 0x00000030 */
+#define USB_EP4R_STAT_TX                        USB_EP4R_STAT_TX_Msk           /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */
+#define USB_EP4R_STAT_TX_0                      (0x1U << USB_EP4R_STAT_TX_Pos) /*!< 0x00000010 */
+#define USB_EP4R_STAT_TX_1                      (0x2U << USB_EP4R_STAT_TX_Pos) /*!< 0x00000020 */
+
+#define USB_EP4R_DTOG_TX_Pos                    (6U)                           
+#define USB_EP4R_DTOG_TX_Msk                    (0x1U << USB_EP4R_DTOG_TX_Pos) /*!< 0x00000040 */
+#define USB_EP4R_DTOG_TX                        USB_EP4R_DTOG_TX_Msk           /*!< Data Toggle, for transmission transfers */
+#define USB_EP4R_CTR_TX_Pos                     (7U)                           
+#define USB_EP4R_CTR_TX_Msk                     (0x1U << USB_EP4R_CTR_TX_Pos)  /*!< 0x00000080 */
+#define USB_EP4R_CTR_TX                         USB_EP4R_CTR_TX_Msk            /*!< Correct Transfer for transmission */
+#define USB_EP4R_EP_KIND_Pos                    (8U)                           
+#define USB_EP4R_EP_KIND_Msk                    (0x1U << USB_EP4R_EP_KIND_Pos) /*!< 0x00000100 */
+#define USB_EP4R_EP_KIND                        USB_EP4R_EP_KIND_Msk           /*!< Endpoint Kind */
+
+#define USB_EP4R_EP_TYPE_Pos                    (9U)                           
+#define USB_EP4R_EP_TYPE_Msk                    (0x3U << USB_EP4R_EP_TYPE_Pos) /*!< 0x00000600 */
+#define USB_EP4R_EP_TYPE                        USB_EP4R_EP_TYPE_Msk           /*!< EP_TYPE[1:0] bits (Endpoint type) */
+#define USB_EP4R_EP_TYPE_0                      (0x1U << USB_EP4R_EP_TYPE_Pos) /*!< 0x00000200 */
+#define USB_EP4R_EP_TYPE_1                      (0x2U << USB_EP4R_EP_TYPE_Pos) /*!< 0x00000400 */
+
+#define USB_EP4R_SETUP_Pos                      (11U)                          
+#define USB_EP4R_SETUP_Msk                      (0x1U << USB_EP4R_SETUP_Pos)   /*!< 0x00000800 */
+#define USB_EP4R_SETUP                          USB_EP4R_SETUP_Msk             /*!< Setup transaction completed */
+
+#define USB_EP4R_STAT_RX_Pos                    (12U)                          
+#define USB_EP4R_STAT_RX_Msk                    (0x3U << USB_EP4R_STAT_RX_Pos) /*!< 0x00003000 */
+#define USB_EP4R_STAT_RX                        USB_EP4R_STAT_RX_Msk           /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */
+#define USB_EP4R_STAT_RX_0                      (0x1U << USB_EP4R_STAT_RX_Pos) /*!< 0x00001000 */
+#define USB_EP4R_STAT_RX_1                      (0x2U << USB_EP4R_STAT_RX_Pos) /*!< 0x00002000 */
+
+#define USB_EP4R_DTOG_RX_Pos                    (14U)                          
+#define USB_EP4R_DTOG_RX_Msk                    (0x1U << USB_EP4R_DTOG_RX_Pos) /*!< 0x00004000 */
+#define USB_EP4R_DTOG_RX                        USB_EP4R_DTOG_RX_Msk           /*!< Data Toggle, for reception transfers */
+#define USB_EP4R_CTR_RX_Pos                     (15U)                          
+#define USB_EP4R_CTR_RX_Msk                     (0x1U << USB_EP4R_CTR_RX_Pos)  /*!< 0x00008000 */
+#define USB_EP4R_CTR_RX                         USB_EP4R_CTR_RX_Msk            /*!< Correct Transfer for reception */
+
+/*******************  Bit definition for USB_EP5R register  *******************/
+#define USB_EP5R_EA_Pos                         (0U)                           
+#define USB_EP5R_EA_Msk                         (0xFU << USB_EP5R_EA_Pos)      /*!< 0x0000000F */
+#define USB_EP5R_EA                             USB_EP5R_EA_Msk                /*!< Endpoint Address */
+
+#define USB_EP5R_STAT_TX_Pos                    (4U)                           
+#define USB_EP5R_STAT_TX_Msk                    (0x3U << USB_EP5R_STAT_TX_Pos) /*!< 0x00000030 */
+#define USB_EP5R_STAT_TX                        USB_EP5R_STAT_TX_Msk           /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */
+#define USB_EP5R_STAT_TX_0                      (0x1U << USB_EP5R_STAT_TX_Pos) /*!< 0x00000010 */
+#define USB_EP5R_STAT_TX_1                      (0x2U << USB_EP5R_STAT_TX_Pos) /*!< 0x00000020 */
+
+#define USB_EP5R_DTOG_TX_Pos                    (6U)                           
+#define USB_EP5R_DTOG_TX_Msk                    (0x1U << USB_EP5R_DTOG_TX_Pos) /*!< 0x00000040 */
+#define USB_EP5R_DTOG_TX                        USB_EP5R_DTOG_TX_Msk           /*!< Data Toggle, for transmission transfers */
+#define USB_EP5R_CTR_TX_Pos                     (7U)                           
+#define USB_EP5R_CTR_TX_Msk                     (0x1U << USB_EP5R_CTR_TX_Pos)  /*!< 0x00000080 */
+#define USB_EP5R_CTR_TX                         USB_EP5R_CTR_TX_Msk            /*!< Correct Transfer for transmission */
+#define USB_EP5R_EP_KIND_Pos                    (8U)                           
+#define USB_EP5R_EP_KIND_Msk                    (0x1U << USB_EP5R_EP_KIND_Pos) /*!< 0x00000100 */
+#define USB_EP5R_EP_KIND                        USB_EP5R_EP_KIND_Msk           /*!< Endpoint Kind */
+
+#define USB_EP5R_EP_TYPE_Pos                    (9U)                           
+#define USB_EP5R_EP_TYPE_Msk                    (0x3U << USB_EP5R_EP_TYPE_Pos) /*!< 0x00000600 */
+#define USB_EP5R_EP_TYPE                        USB_EP5R_EP_TYPE_Msk           /*!< EP_TYPE[1:0] bits (Endpoint type) */
+#define USB_EP5R_EP_TYPE_0                      (0x1U << USB_EP5R_EP_TYPE_Pos) /*!< 0x00000200 */
+#define USB_EP5R_EP_TYPE_1                      (0x2U << USB_EP5R_EP_TYPE_Pos) /*!< 0x00000400 */
+
+#define USB_EP5R_SETUP_Pos                      (11U)                          
+#define USB_EP5R_SETUP_Msk                      (0x1U << USB_EP5R_SETUP_Pos)   /*!< 0x00000800 */
+#define USB_EP5R_SETUP                          USB_EP5R_SETUP_Msk             /*!< Setup transaction completed */
+
+#define USB_EP5R_STAT_RX_Pos                    (12U)                          
+#define USB_EP5R_STAT_RX_Msk                    (0x3U << USB_EP5R_STAT_RX_Pos) /*!< 0x00003000 */
+#define USB_EP5R_STAT_RX                        USB_EP5R_STAT_RX_Msk           /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */
+#define USB_EP5R_STAT_RX_0                      (0x1U << USB_EP5R_STAT_RX_Pos) /*!< 0x00001000 */
+#define USB_EP5R_STAT_RX_1                      (0x2U << USB_EP5R_STAT_RX_Pos) /*!< 0x00002000 */
+
+#define USB_EP5R_DTOG_RX_Pos                    (14U)                          
+#define USB_EP5R_DTOG_RX_Msk                    (0x1U << USB_EP5R_DTOG_RX_Pos) /*!< 0x00004000 */
+#define USB_EP5R_DTOG_RX                        USB_EP5R_DTOG_RX_Msk           /*!< Data Toggle, for reception transfers */
+#define USB_EP5R_CTR_RX_Pos                     (15U)                          
+#define USB_EP5R_CTR_RX_Msk                     (0x1U << USB_EP5R_CTR_RX_Pos)  /*!< 0x00008000 */
+#define USB_EP5R_CTR_RX                         USB_EP5R_CTR_RX_Msk            /*!< Correct Transfer for reception */
+
+/*******************  Bit definition for USB_EP6R register  *******************/
+#define USB_EP6R_EA_Pos                         (0U)                           
+#define USB_EP6R_EA_Msk                         (0xFU << USB_EP6R_EA_Pos)      /*!< 0x0000000F */
+#define USB_EP6R_EA                             USB_EP6R_EA_Msk                /*!< Endpoint Address */
+
+#define USB_EP6R_STAT_TX_Pos                    (4U)                           
+#define USB_EP6R_STAT_TX_Msk                    (0x3U << USB_EP6R_STAT_TX_Pos) /*!< 0x00000030 */
+#define USB_EP6R_STAT_TX                        USB_EP6R_STAT_TX_Msk           /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */
+#define USB_EP6R_STAT_TX_0                      (0x1U << USB_EP6R_STAT_TX_Pos) /*!< 0x00000010 */
+#define USB_EP6R_STAT_TX_1                      (0x2U << USB_EP6R_STAT_TX_Pos) /*!< 0x00000020 */
+
+#define USB_EP6R_DTOG_TX_Pos                    (6U)                           
+#define USB_EP6R_DTOG_TX_Msk                    (0x1U << USB_EP6R_DTOG_TX_Pos) /*!< 0x00000040 */
+#define USB_EP6R_DTOG_TX                        USB_EP6R_DTOG_TX_Msk           /*!< Data Toggle, for transmission transfers */
+#define USB_EP6R_CTR_TX_Pos                     (7U)                           
+#define USB_EP6R_CTR_TX_Msk                     (0x1U << USB_EP6R_CTR_TX_Pos)  /*!< 0x00000080 */
+#define USB_EP6R_CTR_TX                         USB_EP6R_CTR_TX_Msk            /*!< Correct Transfer for transmission */
+#define USB_EP6R_EP_KIND_Pos                    (8U)                           
+#define USB_EP6R_EP_KIND_Msk                    (0x1U << USB_EP6R_EP_KIND_Pos) /*!< 0x00000100 */
+#define USB_EP6R_EP_KIND                        USB_EP6R_EP_KIND_Msk           /*!< Endpoint Kind */
+
+#define USB_EP6R_EP_TYPE_Pos                    (9U)                           
+#define USB_EP6R_EP_TYPE_Msk                    (0x3U << USB_EP6R_EP_TYPE_Pos) /*!< 0x00000600 */
+#define USB_EP6R_EP_TYPE                        USB_EP6R_EP_TYPE_Msk           /*!< EP_TYPE[1:0] bits (Endpoint type) */
+#define USB_EP6R_EP_TYPE_0                      (0x1U << USB_EP6R_EP_TYPE_Pos) /*!< 0x00000200 */
+#define USB_EP6R_EP_TYPE_1                      (0x2U << USB_EP6R_EP_TYPE_Pos) /*!< 0x00000400 */
+
+#define USB_EP6R_SETUP_Pos                      (11U)                          
+#define USB_EP6R_SETUP_Msk                      (0x1U << USB_EP6R_SETUP_Pos)   /*!< 0x00000800 */
+#define USB_EP6R_SETUP                          USB_EP6R_SETUP_Msk             /*!< Setup transaction completed */
+
+#define USB_EP6R_STAT_RX_Pos                    (12U)                          
+#define USB_EP6R_STAT_RX_Msk                    (0x3U << USB_EP6R_STAT_RX_Pos) /*!< 0x00003000 */
+#define USB_EP6R_STAT_RX                        USB_EP6R_STAT_RX_Msk           /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */
+#define USB_EP6R_STAT_RX_0                      (0x1U << USB_EP6R_STAT_RX_Pos) /*!< 0x00001000 */
+#define USB_EP6R_STAT_RX_1                      (0x2U << USB_EP6R_STAT_RX_Pos) /*!< 0x00002000 */
+
+#define USB_EP6R_DTOG_RX_Pos                    (14U)                          
+#define USB_EP6R_DTOG_RX_Msk                    (0x1U << USB_EP6R_DTOG_RX_Pos) /*!< 0x00004000 */
+#define USB_EP6R_DTOG_RX                        USB_EP6R_DTOG_RX_Msk           /*!< Data Toggle, for reception transfers */
+#define USB_EP6R_CTR_RX_Pos                     (15U)                          
+#define USB_EP6R_CTR_RX_Msk                     (0x1U << USB_EP6R_CTR_RX_Pos)  /*!< 0x00008000 */
+#define USB_EP6R_CTR_RX                         USB_EP6R_CTR_RX_Msk            /*!< Correct Transfer for reception */
+
+/*******************  Bit definition for USB_EP7R register  *******************/
+#define USB_EP7R_EA_Pos                         (0U)                           
+#define USB_EP7R_EA_Msk                         (0xFU << USB_EP7R_EA_Pos)      /*!< 0x0000000F */
+#define USB_EP7R_EA                             USB_EP7R_EA_Msk                /*!< Endpoint Address */
+
+#define USB_EP7R_STAT_TX_Pos                    (4U)                           
+#define USB_EP7R_STAT_TX_Msk                    (0x3U << USB_EP7R_STAT_TX_Pos) /*!< 0x00000030 */
+#define USB_EP7R_STAT_TX                        USB_EP7R_STAT_TX_Msk           /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */
+#define USB_EP7R_STAT_TX_0                      (0x1U << USB_EP7R_STAT_TX_Pos) /*!< 0x00000010 */
+#define USB_EP7R_STAT_TX_1                      (0x2U << USB_EP7R_STAT_TX_Pos) /*!< 0x00000020 */
+
+#define USB_EP7R_DTOG_TX_Pos                    (6U)                           
+#define USB_EP7R_DTOG_TX_Msk                    (0x1U << USB_EP7R_DTOG_TX_Pos) /*!< 0x00000040 */
+#define USB_EP7R_DTOG_TX                        USB_EP7R_DTOG_TX_Msk           /*!< Data Toggle, for transmission transfers */
+#define USB_EP7R_CTR_TX_Pos                     (7U)                           
+#define USB_EP7R_CTR_TX_Msk                     (0x1U << USB_EP7R_CTR_TX_Pos)  /*!< 0x00000080 */
+#define USB_EP7R_CTR_TX                         USB_EP7R_CTR_TX_Msk            /*!< Correct Transfer for transmission */
+#define USB_EP7R_EP_KIND_Pos                    (8U)                           
+#define USB_EP7R_EP_KIND_Msk                    (0x1U << USB_EP7R_EP_KIND_Pos) /*!< 0x00000100 */
+#define USB_EP7R_EP_KIND                        USB_EP7R_EP_KIND_Msk           /*!< Endpoint Kind */
+
+#define USB_EP7R_EP_TYPE_Pos                    (9U)                           
+#define USB_EP7R_EP_TYPE_Msk                    (0x3U << USB_EP7R_EP_TYPE_Pos) /*!< 0x00000600 */
+#define USB_EP7R_EP_TYPE                        USB_EP7R_EP_TYPE_Msk           /*!< EP_TYPE[1:0] bits (Endpoint type) */
+#define USB_EP7R_EP_TYPE_0                      (0x1U << USB_EP7R_EP_TYPE_Pos) /*!< 0x00000200 */
+#define USB_EP7R_EP_TYPE_1                      (0x2U << USB_EP7R_EP_TYPE_Pos) /*!< 0x00000400 */
+
+#define USB_EP7R_SETUP_Pos                      (11U)                          
+#define USB_EP7R_SETUP_Msk                      (0x1U << USB_EP7R_SETUP_Pos)   /*!< 0x00000800 */
+#define USB_EP7R_SETUP                          USB_EP7R_SETUP_Msk             /*!< Setup transaction completed */
+
+#define USB_EP7R_STAT_RX_Pos                    (12U)                          
+#define USB_EP7R_STAT_RX_Msk                    (0x3U << USB_EP7R_STAT_RX_Pos) /*!< 0x00003000 */
+#define USB_EP7R_STAT_RX                        USB_EP7R_STAT_RX_Msk           /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */
+#define USB_EP7R_STAT_RX_0                      (0x1U << USB_EP7R_STAT_RX_Pos) /*!< 0x00001000 */
+#define USB_EP7R_STAT_RX_1                      (0x2U << USB_EP7R_STAT_RX_Pos) /*!< 0x00002000 */
+
+#define USB_EP7R_DTOG_RX_Pos                    (14U)                          
+#define USB_EP7R_DTOG_RX_Msk                    (0x1U << USB_EP7R_DTOG_RX_Pos) /*!< 0x00004000 */
+#define USB_EP7R_DTOG_RX                        USB_EP7R_DTOG_RX_Msk           /*!< Data Toggle, for reception transfers */
+#define USB_EP7R_CTR_RX_Pos                     (15U)                          
+#define USB_EP7R_CTR_RX_Msk                     (0x1U << USB_EP7R_CTR_RX_Pos)  /*!< 0x00008000 */
+#define USB_EP7R_CTR_RX                         USB_EP7R_CTR_RX_Msk            /*!< Correct Transfer for reception */
+
+/*!< Common registers */
+/*******************  Bit definition for USB_CNTR register  *******************/
+#define USB_CNTR_FRES_Pos                       (0U)                           
+#define USB_CNTR_FRES_Msk                       (0x1U << USB_CNTR_FRES_Pos)    /*!< 0x00000001 */
+#define USB_CNTR_FRES                           USB_CNTR_FRES_Msk              /*!< Force USB Reset */
+#define USB_CNTR_PDWN_Pos                       (1U)                           
+#define USB_CNTR_PDWN_Msk                       (0x1U << USB_CNTR_PDWN_Pos)    /*!< 0x00000002 */
+#define USB_CNTR_PDWN                           USB_CNTR_PDWN_Msk              /*!< Power down */
+#define USB_CNTR_LP_MODE_Pos                    (2U)                           
+#define USB_CNTR_LP_MODE_Msk                    (0x1U << USB_CNTR_LP_MODE_Pos) /*!< 0x00000004 */
+#define USB_CNTR_LP_MODE                        USB_CNTR_LP_MODE_Msk           /*!< Low-power mode */
+#define USB_CNTR_FSUSP_Pos                      (3U)                           
+#define USB_CNTR_FSUSP_Msk                      (0x1U << USB_CNTR_FSUSP_Pos)   /*!< 0x00000008 */
+#define USB_CNTR_FSUSP                          USB_CNTR_FSUSP_Msk             /*!< Force suspend */
+#define USB_CNTR_RESUME_Pos                     (4U)                           
+#define USB_CNTR_RESUME_Msk                     (0x1U << USB_CNTR_RESUME_Pos)  /*!< 0x00000010 */
+#define USB_CNTR_RESUME                         USB_CNTR_RESUME_Msk            /*!< Resume request */
+#define USB_CNTR_ESOFM_Pos                      (8U)                           
+#define USB_CNTR_ESOFM_Msk                      (0x1U << USB_CNTR_ESOFM_Pos)   /*!< 0x00000100 */
+#define USB_CNTR_ESOFM                          USB_CNTR_ESOFM_Msk             /*!< Expected Start Of Frame Interrupt Mask */
+#define USB_CNTR_SOFM_Pos                       (9U)                           
+#define USB_CNTR_SOFM_Msk                       (0x1U << USB_CNTR_SOFM_Pos)    /*!< 0x00000200 */
+#define USB_CNTR_SOFM                           USB_CNTR_SOFM_Msk              /*!< Start Of Frame Interrupt Mask */
+#define USB_CNTR_RESETM_Pos                     (10U)                          
+#define USB_CNTR_RESETM_Msk                     (0x1U << USB_CNTR_RESETM_Pos)  /*!< 0x00000400 */
+#define USB_CNTR_RESETM                         USB_CNTR_RESETM_Msk            /*!< RESET Interrupt Mask */
+#define USB_CNTR_SUSPM_Pos                      (11U)                          
+#define USB_CNTR_SUSPM_Msk                      (0x1U << USB_CNTR_SUSPM_Pos)   /*!< 0x00000800 */
+#define USB_CNTR_SUSPM                          USB_CNTR_SUSPM_Msk             /*!< Suspend mode Interrupt Mask */
+#define USB_CNTR_WKUPM_Pos                      (12U)                          
+#define USB_CNTR_WKUPM_Msk                      (0x1U << USB_CNTR_WKUPM_Pos)   /*!< 0x00001000 */
+#define USB_CNTR_WKUPM                          USB_CNTR_WKUPM_Msk             /*!< Wakeup Interrupt Mask */
+#define USB_CNTR_ERRM_Pos                       (13U)                          
+#define USB_CNTR_ERRM_Msk                       (0x1U << USB_CNTR_ERRM_Pos)    /*!< 0x00002000 */
+#define USB_CNTR_ERRM                           USB_CNTR_ERRM_Msk              /*!< Error Interrupt Mask */
+#define USB_CNTR_PMAOVRM_Pos                    (14U)                          
+#define USB_CNTR_PMAOVRM_Msk                    (0x1U << USB_CNTR_PMAOVRM_Pos) /*!< 0x00004000 */
+#define USB_CNTR_PMAOVRM                        USB_CNTR_PMAOVRM_Msk           /*!< Packet Memory Area Over / Underrun Interrupt Mask */
+#define USB_CNTR_CTRM_Pos                       (15U)                          
+#define USB_CNTR_CTRM_Msk                       (0x1U << USB_CNTR_CTRM_Pos)    /*!< 0x00008000 */
+#define USB_CNTR_CTRM                           USB_CNTR_CTRM_Msk              /*!< Correct Transfer Interrupt Mask */
+
+/*******************  Bit definition for USB_ISTR register  *******************/
+#define USB_ISTR_EP_ID_Pos                      (0U)                           
+#define USB_ISTR_EP_ID_Msk                      (0xFU << USB_ISTR_EP_ID_Pos)   /*!< 0x0000000F */
+#define USB_ISTR_EP_ID                          USB_ISTR_EP_ID_Msk             /*!< Endpoint Identifier */
+#define USB_ISTR_DIR_Pos                        (4U)                           
+#define USB_ISTR_DIR_Msk                        (0x1U << USB_ISTR_DIR_Pos)     /*!< 0x00000010 */
+#define USB_ISTR_DIR                            USB_ISTR_DIR_Msk               /*!< Direction of transaction */
+#define USB_ISTR_ESOF_Pos                       (8U)                           
+#define USB_ISTR_ESOF_Msk                       (0x1U << USB_ISTR_ESOF_Pos)    /*!< 0x00000100 */
+#define USB_ISTR_ESOF                           USB_ISTR_ESOF_Msk              /*!< Expected Start Of Frame */
+#define USB_ISTR_SOF_Pos                        (9U)                           
+#define USB_ISTR_SOF_Msk                        (0x1U << USB_ISTR_SOF_Pos)     /*!< 0x00000200 */
+#define USB_ISTR_SOF                            USB_ISTR_SOF_Msk               /*!< Start Of Frame */
+#define USB_ISTR_RESET_Pos                      (10U)                          
+#define USB_ISTR_RESET_Msk                      (0x1U << USB_ISTR_RESET_Pos)   /*!< 0x00000400 */
+#define USB_ISTR_RESET                          USB_ISTR_RESET_Msk             /*!< USB RESET request */
+#define USB_ISTR_SUSP_Pos                       (11U)                          
+#define USB_ISTR_SUSP_Msk                       (0x1U << USB_ISTR_SUSP_Pos)    /*!< 0x00000800 */
+#define USB_ISTR_SUSP                           USB_ISTR_SUSP_Msk              /*!< Suspend mode request */
+#define USB_ISTR_WKUP_Pos                       (12U)                          
+#define USB_ISTR_WKUP_Msk                       (0x1U << USB_ISTR_WKUP_Pos)    /*!< 0x00001000 */
+#define USB_ISTR_WKUP                           USB_ISTR_WKUP_Msk              /*!< Wake up */
+#define USB_ISTR_ERR_Pos                        (13U)                          
+#define USB_ISTR_ERR_Msk                        (0x1U << USB_ISTR_ERR_Pos)     /*!< 0x00002000 */
+#define USB_ISTR_ERR                            USB_ISTR_ERR_Msk               /*!< Error */
+#define USB_ISTR_PMAOVR_Pos                     (14U)                          
+#define USB_ISTR_PMAOVR_Msk                     (0x1U << USB_ISTR_PMAOVR_Pos)  /*!< 0x00004000 */
+#define USB_ISTR_PMAOVR                         USB_ISTR_PMAOVR_Msk            /*!< Packet Memory Area Over / Underrun */
+#define USB_ISTR_CTR_Pos                        (15U)                          
+#define USB_ISTR_CTR_Msk                        (0x1U << USB_ISTR_CTR_Pos)     /*!< 0x00008000 */
+#define USB_ISTR_CTR                            USB_ISTR_CTR_Msk               /*!< Correct Transfer */
+
+/*******************  Bit definition for USB_FNR register  ********************/
+#define USB_FNR_FN_Pos                          (0U)                           
+#define USB_FNR_FN_Msk                          (0x7FFU << USB_FNR_FN_Pos)     /*!< 0x000007FF */
+#define USB_FNR_FN                              USB_FNR_FN_Msk                 /*!< Frame Number */
+#define USB_FNR_LSOF_Pos                        (11U)                          
+#define USB_FNR_LSOF_Msk                        (0x3U << USB_FNR_LSOF_Pos)     /*!< 0x00001800 */
+#define USB_FNR_LSOF                            USB_FNR_LSOF_Msk               /*!< Lost SOF */
+#define USB_FNR_LCK_Pos                         (13U)                          
+#define USB_FNR_LCK_Msk                         (0x1U << USB_FNR_LCK_Pos)      /*!< 0x00002000 */
+#define USB_FNR_LCK                             USB_FNR_LCK_Msk                /*!< Locked */
+#define USB_FNR_RXDM_Pos                        (14U)                          
+#define USB_FNR_RXDM_Msk                        (0x1U << USB_FNR_RXDM_Pos)     /*!< 0x00004000 */
+#define USB_FNR_RXDM                            USB_FNR_RXDM_Msk               /*!< Receive Data - Line Status */
+#define USB_FNR_RXDP_Pos                        (15U)                          
+#define USB_FNR_RXDP_Msk                        (0x1U << USB_FNR_RXDP_Pos)     /*!< 0x00008000 */
+#define USB_FNR_RXDP                            USB_FNR_RXDP_Msk               /*!< Receive Data + Line Status */
+
+/******************  Bit definition for USB_DADDR register  *******************/
+#define USB_DADDR_ADD_Pos                       (0U)                           
+#define USB_DADDR_ADD_Msk                       (0x7FU << USB_DADDR_ADD_Pos)   /*!< 0x0000007F */
+#define USB_DADDR_ADD                           USB_DADDR_ADD_Msk              /*!< ADD[6:0] bits (Device Address) */
+#define USB_DADDR_ADD0_Pos                      (0U)                           
+#define USB_DADDR_ADD0_Msk                      (0x1U << USB_DADDR_ADD0_Pos)   /*!< 0x00000001 */
+#define USB_DADDR_ADD0                          USB_DADDR_ADD0_Msk             /*!< Bit 0 */
+#define USB_DADDR_ADD1_Pos                      (1U)                           
+#define USB_DADDR_ADD1_Msk                      (0x1U << USB_DADDR_ADD1_Pos)   /*!< 0x00000002 */
+#define USB_DADDR_ADD1                          USB_DADDR_ADD1_Msk             /*!< Bit 1 */
+#define USB_DADDR_ADD2_Pos                      (2U)                           
+#define USB_DADDR_ADD2_Msk                      (0x1U << USB_DADDR_ADD2_Pos)   /*!< 0x00000004 */
+#define USB_DADDR_ADD2                          USB_DADDR_ADD2_Msk             /*!< Bit 2 */
+#define USB_DADDR_ADD3_Pos                      (3U)                           
+#define USB_DADDR_ADD3_Msk                      (0x1U << USB_DADDR_ADD3_Pos)   /*!< 0x00000008 */
+#define USB_DADDR_ADD3                          USB_DADDR_ADD3_Msk             /*!< Bit 3 */
+#define USB_DADDR_ADD4_Pos                      (4U)                           
+#define USB_DADDR_ADD4_Msk                      (0x1U << USB_DADDR_ADD4_Pos)   /*!< 0x00000010 */
+#define USB_DADDR_ADD4                          USB_DADDR_ADD4_Msk             /*!< Bit 4 */
+#define USB_DADDR_ADD5_Pos                      (5U)                           
+#define USB_DADDR_ADD5_Msk                      (0x1U << USB_DADDR_ADD5_Pos)   /*!< 0x00000020 */
+#define USB_DADDR_ADD5                          USB_DADDR_ADD5_Msk             /*!< Bit 5 */
+#define USB_DADDR_ADD6_Pos                      (6U)                           
+#define USB_DADDR_ADD6_Msk                      (0x1U << USB_DADDR_ADD6_Pos)   /*!< 0x00000040 */
+#define USB_DADDR_ADD6                          USB_DADDR_ADD6_Msk             /*!< Bit 6 */
+
+#define USB_DADDR_EF_Pos                        (7U)                           
+#define USB_DADDR_EF_Msk                        (0x1U << USB_DADDR_EF_Pos)     /*!< 0x00000080 */
+#define USB_DADDR_EF                            USB_DADDR_EF_Msk               /*!< Enable Function */
+
+/******************  Bit definition for USB_BTABLE register  ******************/    
+#define USB_BTABLE_BTABLE_Pos                   (3U)                           
+#define USB_BTABLE_BTABLE_Msk                   (0x1FFFU << USB_BTABLE_BTABLE_Pos) /*!< 0x0000FFF8 */
+#define USB_BTABLE_BTABLE                       USB_BTABLE_BTABLE_Msk          /*!< Buffer Table */
+
+/*!< Buffer descriptor table */
+/*****************  Bit definition for USB_ADDR0_TX register  *****************/
+#define USB_ADDR0_TX_ADDR0_TX_Pos               (1U)                           
+#define USB_ADDR0_TX_ADDR0_TX_Msk               (0x7FFFU << USB_ADDR0_TX_ADDR0_TX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR0_TX_ADDR0_TX                   USB_ADDR0_TX_ADDR0_TX_Msk      /*!< Transmission Buffer Address 0 */
+
+/*****************  Bit definition for USB_ADDR1_TX register  *****************/
+#define USB_ADDR1_TX_ADDR1_TX_Pos               (1U)                           
+#define USB_ADDR1_TX_ADDR1_TX_Msk               (0x7FFFU << USB_ADDR1_TX_ADDR1_TX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR1_TX_ADDR1_TX                   USB_ADDR1_TX_ADDR1_TX_Msk      /*!< Transmission Buffer Address 1 */
+
+/*****************  Bit definition for USB_ADDR2_TX register  *****************/
+#define USB_ADDR2_TX_ADDR2_TX_Pos               (1U)                           
+#define USB_ADDR2_TX_ADDR2_TX_Msk               (0x7FFFU << USB_ADDR2_TX_ADDR2_TX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR2_TX_ADDR2_TX                   USB_ADDR2_TX_ADDR2_TX_Msk      /*!< Transmission Buffer Address 2 */
+
+/*****************  Bit definition for USB_ADDR3_TX register  *****************/
+#define USB_ADDR3_TX_ADDR3_TX_Pos               (1U)                           
+#define USB_ADDR3_TX_ADDR3_TX_Msk               (0x7FFFU << USB_ADDR3_TX_ADDR3_TX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR3_TX_ADDR3_TX                   USB_ADDR3_TX_ADDR3_TX_Msk      /*!< Transmission Buffer Address 3 */
+
+/*****************  Bit definition for USB_ADDR4_TX register  *****************/
+#define USB_ADDR4_TX_ADDR4_TX_Pos               (1U)                           
+#define USB_ADDR4_TX_ADDR4_TX_Msk               (0x7FFFU << USB_ADDR4_TX_ADDR4_TX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR4_TX_ADDR4_TX                   USB_ADDR4_TX_ADDR4_TX_Msk      /*!< Transmission Buffer Address 4 */
+
+/*****************  Bit definition for USB_ADDR5_TX register  *****************/
+#define USB_ADDR5_TX_ADDR5_TX_Pos               (1U)                           
+#define USB_ADDR5_TX_ADDR5_TX_Msk               (0x7FFFU << USB_ADDR5_TX_ADDR5_TX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR5_TX_ADDR5_TX                   USB_ADDR5_TX_ADDR5_TX_Msk      /*!< Transmission Buffer Address 5 */
+
+/*****************  Bit definition for USB_ADDR6_TX register  *****************/
+#define USB_ADDR6_TX_ADDR6_TX_Pos               (1U)                           
+#define USB_ADDR6_TX_ADDR6_TX_Msk               (0x7FFFU << USB_ADDR6_TX_ADDR6_TX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR6_TX_ADDR6_TX                   USB_ADDR6_TX_ADDR6_TX_Msk      /*!< Transmission Buffer Address 6 */
+
+/*****************  Bit definition for USB_ADDR7_TX register  *****************/
+#define USB_ADDR7_TX_ADDR7_TX_Pos               (1U)                           
+#define USB_ADDR7_TX_ADDR7_TX_Msk               (0x7FFFU << USB_ADDR7_TX_ADDR7_TX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR7_TX_ADDR7_TX                   USB_ADDR7_TX_ADDR7_TX_Msk      /*!< Transmission Buffer Address 7 */
+
+/*----------------------------------------------------------------------------*/
+
+/*****************  Bit definition for USB_COUNT0_TX register  ****************/
+#define USB_COUNT0_TX_COUNT0_TX_Pos             (0U)                           
+#define USB_COUNT0_TX_COUNT0_TX_Msk             (0x3FFU << USB_COUNT0_TX_COUNT0_TX_Pos) /*!< 0x000003FF */
+#define USB_COUNT0_TX_COUNT0_TX                 USB_COUNT0_TX_COUNT0_TX_Msk    /*!< Transmission Byte Count 0 */
+
+/*****************  Bit definition for USB_COUNT1_TX register  ****************/
+#define USB_COUNT1_TX_COUNT1_TX_Pos             (0U)                           
+#define USB_COUNT1_TX_COUNT1_TX_Msk             (0x3FFU << USB_COUNT1_TX_COUNT1_TX_Pos) /*!< 0x000003FF */
+#define USB_COUNT1_TX_COUNT1_TX                 USB_COUNT1_TX_COUNT1_TX_Msk    /*!< Transmission Byte Count 1 */
+
+/*****************  Bit definition for USB_COUNT2_TX register  ****************/
+#define USB_COUNT2_TX_COUNT2_TX_Pos             (0U)                           
+#define USB_COUNT2_TX_COUNT2_TX_Msk             (0x3FFU << USB_COUNT2_TX_COUNT2_TX_Pos) /*!< 0x000003FF */
+#define USB_COUNT2_TX_COUNT2_TX                 USB_COUNT2_TX_COUNT2_TX_Msk    /*!< Transmission Byte Count 2 */
+
+/*****************  Bit definition for USB_COUNT3_TX register  ****************/
+#define USB_COUNT3_TX_COUNT3_TX_Pos             (0U)                           
+#define USB_COUNT3_TX_COUNT3_TX_Msk             (0x3FFU << USB_COUNT3_TX_COUNT3_TX_Pos) /*!< 0x000003FF */
+#define USB_COUNT3_TX_COUNT3_TX                 USB_COUNT3_TX_COUNT3_TX_Msk    /*!< Transmission Byte Count 3 */
+
+/*****************  Bit definition for USB_COUNT4_TX register  ****************/
+#define USB_COUNT4_TX_COUNT4_TX_Pos             (0U)                           
+#define USB_COUNT4_TX_COUNT4_TX_Msk             (0x3FFU << USB_COUNT4_TX_COUNT4_TX_Pos) /*!< 0x000003FF */
+#define USB_COUNT4_TX_COUNT4_TX                 USB_COUNT4_TX_COUNT4_TX_Msk    /*!< Transmission Byte Count 4 */
+
+/*****************  Bit definition for USB_COUNT5_TX register  ****************/
+#define USB_COUNT5_TX_COUNT5_TX_Pos             (0U)                           
+#define USB_COUNT5_TX_COUNT5_TX_Msk             (0x3FFU << USB_COUNT5_TX_COUNT5_TX_Pos) /*!< 0x000003FF */
+#define USB_COUNT5_TX_COUNT5_TX                 USB_COUNT5_TX_COUNT5_TX_Msk    /*!< Transmission Byte Count 5 */
+
+/*****************  Bit definition for USB_COUNT6_TX register  ****************/
+#define USB_COUNT6_TX_COUNT6_TX_Pos             (0U)                           
+#define USB_COUNT6_TX_COUNT6_TX_Msk             (0x3FFU << USB_COUNT6_TX_COUNT6_TX_Pos) /*!< 0x000003FF */
+#define USB_COUNT6_TX_COUNT6_TX                 USB_COUNT6_TX_COUNT6_TX_Msk    /*!< Transmission Byte Count 6 */
+
+/*****************  Bit definition for USB_COUNT7_TX register  ****************/
+#define USB_COUNT7_TX_COUNT7_TX_Pos             (0U)                           
+#define USB_COUNT7_TX_COUNT7_TX_Msk             (0x3FFU << USB_COUNT7_TX_COUNT7_TX_Pos) /*!< 0x000003FF */
+#define USB_COUNT7_TX_COUNT7_TX                 USB_COUNT7_TX_COUNT7_TX_Msk    /*!< Transmission Byte Count 7 */
+
+/*----------------------------------------------------------------------------*/
+
+/****************  Bit definition for USB_COUNT0_TX_0 register  ***************/
+#define USB_COUNT0_TX_0_COUNT0_TX_0             ((uint32_t)0x000003FF)         /*!< Transmission Byte Count 0 (low) */
+
+/****************  Bit definition for USB_COUNT0_TX_1 register  ***************/
+#define USB_COUNT0_TX_1_COUNT0_TX_1             ((uint32_t)0x03FF0000)         /*!< Transmission Byte Count 0 (high) */
+
+/****************  Bit definition for USB_COUNT1_TX_0 register  ***************/
+#define USB_COUNT1_TX_0_COUNT1_TX_0             ((uint32_t)0x000003FF)         /*!< Transmission Byte Count 1 (low) */
+
+/****************  Bit definition for USB_COUNT1_TX_1 register  ***************/
+#define USB_COUNT1_TX_1_COUNT1_TX_1             ((uint32_t)0x03FF0000)         /*!< Transmission Byte Count 1 (high) */
+
+/****************  Bit definition for USB_COUNT2_TX_0 register  ***************/
+#define USB_COUNT2_TX_0_COUNT2_TX_0             ((uint32_t)0x000003FF)         /*!< Transmission Byte Count 2 (low) */
+
+/****************  Bit definition for USB_COUNT2_TX_1 register  ***************/
+#define USB_COUNT2_TX_1_COUNT2_TX_1             ((uint32_t)0x03FF0000)         /*!< Transmission Byte Count 2 (high) */
+
+/****************  Bit definition for USB_COUNT3_TX_0 register  ***************/
+#define USB_COUNT3_TX_0_COUNT3_TX_0             ((uint32_t)0x000003FF)         /*!< Transmission Byte Count 3 (low) */
+
+/****************  Bit definition for USB_COUNT3_TX_1 register  ***************/
+#define USB_COUNT3_TX_1_COUNT3_TX_1             ((uint32_t)0x03FF0000)         /*!< Transmission Byte Count 3 (high) */
+
+/****************  Bit definition for USB_COUNT4_TX_0 register  ***************/
+#define USB_COUNT4_TX_0_COUNT4_TX_0             ((uint32_t)0x000003FF)         /*!< Transmission Byte Count 4 (low) */
+
+/****************  Bit definition for USB_COUNT4_TX_1 register  ***************/
+#define USB_COUNT4_TX_1_COUNT4_TX_1             ((uint32_t)0x03FF0000)         /*!< Transmission Byte Count 4 (high) */
+
+/****************  Bit definition for USB_COUNT5_TX_0 register  ***************/
+#define USB_COUNT5_TX_0_COUNT5_TX_0             ((uint32_t)0x000003FF)         /*!< Transmission Byte Count 5 (low) */
+
+/****************  Bit definition for USB_COUNT5_TX_1 register  ***************/
+#define USB_COUNT5_TX_1_COUNT5_TX_1             ((uint32_t)0x03FF0000)         /*!< Transmission Byte Count 5 (high) */
+
+/****************  Bit definition for USB_COUNT6_TX_0 register  ***************/
+#define USB_COUNT6_TX_0_COUNT6_TX_0             ((uint32_t)0x000003FF)         /*!< Transmission Byte Count 6 (low) */
+
+/****************  Bit definition for USB_COUNT6_TX_1 register  ***************/
+#define USB_COUNT6_TX_1_COUNT6_TX_1             ((uint32_t)0x03FF0000)         /*!< Transmission Byte Count 6 (high) */
+
+/****************  Bit definition for USB_COUNT7_TX_0 register  ***************/
+#define USB_COUNT7_TX_0_COUNT7_TX_0             ((uint32_t)0x000003FF)         /*!< Transmission Byte Count 7 (low) */
+
+/****************  Bit definition for USB_COUNT7_TX_1 register  ***************/
+#define USB_COUNT7_TX_1_COUNT7_TX_1             ((uint32_t)0x03FF0000)         /*!< Transmission Byte Count 7 (high) */
+
+/*----------------------------------------------------------------------------*/
+
+/*****************  Bit definition for USB_ADDR0_RX register  *****************/
+#define USB_ADDR0_RX_ADDR0_RX_Pos               (1U)                           
+#define USB_ADDR0_RX_ADDR0_RX_Msk               (0x7FFFU << USB_ADDR0_RX_ADDR0_RX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR0_RX_ADDR0_RX                   USB_ADDR0_RX_ADDR0_RX_Msk      /*!< Reception Buffer Address 0 */
+
+/*****************  Bit definition for USB_ADDR1_RX register  *****************/
+#define USB_ADDR1_RX_ADDR1_RX_Pos               (1U)                           
+#define USB_ADDR1_RX_ADDR1_RX_Msk               (0x7FFFU << USB_ADDR1_RX_ADDR1_RX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR1_RX_ADDR1_RX                   USB_ADDR1_RX_ADDR1_RX_Msk      /*!< Reception Buffer Address 1 */
+
+/*****************  Bit definition for USB_ADDR2_RX register  *****************/
+#define USB_ADDR2_RX_ADDR2_RX_Pos               (1U)                           
+#define USB_ADDR2_RX_ADDR2_RX_Msk               (0x7FFFU << USB_ADDR2_RX_ADDR2_RX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR2_RX_ADDR2_RX                   USB_ADDR2_RX_ADDR2_RX_Msk      /*!< Reception Buffer Address 2 */
+
+/*****************  Bit definition for USB_ADDR3_RX register  *****************/
+#define USB_ADDR3_RX_ADDR3_RX_Pos               (1U)                           
+#define USB_ADDR3_RX_ADDR3_RX_Msk               (0x7FFFU << USB_ADDR3_RX_ADDR3_RX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR3_RX_ADDR3_RX                   USB_ADDR3_RX_ADDR3_RX_Msk      /*!< Reception Buffer Address 3 */
+
+/*****************  Bit definition for USB_ADDR4_RX register  *****************/
+#define USB_ADDR4_RX_ADDR4_RX_Pos               (1U)                           
+#define USB_ADDR4_RX_ADDR4_RX_Msk               (0x7FFFU << USB_ADDR4_RX_ADDR4_RX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR4_RX_ADDR4_RX                   USB_ADDR4_RX_ADDR4_RX_Msk      /*!< Reception Buffer Address 4 */
+
+/*****************  Bit definition for USB_ADDR5_RX register  *****************/
+#define USB_ADDR5_RX_ADDR5_RX_Pos               (1U)                           
+#define USB_ADDR5_RX_ADDR5_RX_Msk               (0x7FFFU << USB_ADDR5_RX_ADDR5_RX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR5_RX_ADDR5_RX                   USB_ADDR5_RX_ADDR5_RX_Msk      /*!< Reception Buffer Address 5 */
+
+/*****************  Bit definition for USB_ADDR6_RX register  *****************/
+#define USB_ADDR6_RX_ADDR6_RX_Pos               (1U)                           
+#define USB_ADDR6_RX_ADDR6_RX_Msk               (0x7FFFU << USB_ADDR6_RX_ADDR6_RX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR6_RX_ADDR6_RX                   USB_ADDR6_RX_ADDR6_RX_Msk      /*!< Reception Buffer Address 6 */
+
+/*****************  Bit definition for USB_ADDR7_RX register  *****************/
+#define USB_ADDR7_RX_ADDR7_RX_Pos               (1U)                           
+#define USB_ADDR7_RX_ADDR7_RX_Msk               (0x7FFFU << USB_ADDR7_RX_ADDR7_RX_Pos) /*!< 0x0000FFFE */
+#define USB_ADDR7_RX_ADDR7_RX                   USB_ADDR7_RX_ADDR7_RX_Msk      /*!< Reception Buffer Address 7 */
+
+/*----------------------------------------------------------------------------*/
+
+/*****************  Bit definition for USB_COUNT0_RX register  ****************/
+#define USB_COUNT0_RX_COUNT0_RX_Pos             (0U)                           
+#define USB_COUNT0_RX_COUNT0_RX_Msk             (0x3FFU << USB_COUNT0_RX_COUNT0_RX_Pos) /*!< 0x000003FF */
+#define USB_COUNT0_RX_COUNT0_RX                 USB_COUNT0_RX_COUNT0_RX_Msk    /*!< Reception Byte Count */
+
+#define USB_COUNT0_RX_NUM_BLOCK_Pos             (10U)                          
+#define USB_COUNT0_RX_NUM_BLOCK_Msk             (0x1FU << USB_COUNT0_RX_NUM_BLOCK_Pos) /*!< 0x00007C00 */
+#define USB_COUNT0_RX_NUM_BLOCK                 USB_COUNT0_RX_NUM_BLOCK_Msk    /*!< NUM_BLOCK[4:0] bits (Number of blocks) */
+#define USB_COUNT0_RX_NUM_BLOCK_0               (0x01U << USB_COUNT0_RX_NUM_BLOCK_Pos) /*!< 0x00000400 */
+#define USB_COUNT0_RX_NUM_BLOCK_1               (0x02U << USB_COUNT0_RX_NUM_BLOCK_Pos) /*!< 0x00000800 */
+#define USB_COUNT0_RX_NUM_BLOCK_2               (0x04U << USB_COUNT0_RX_NUM_BLOCK_Pos) /*!< 0x00001000 */
+#define USB_COUNT0_RX_NUM_BLOCK_3               (0x08U << USB_COUNT0_RX_NUM_BLOCK_Pos) /*!< 0x00002000 */
+#define USB_COUNT0_RX_NUM_BLOCK_4               (0x10U << USB_COUNT0_RX_NUM_BLOCK_Pos) /*!< 0x00004000 */
+
+#define USB_COUNT0_RX_BLSIZE_Pos                (15U)                          
+#define USB_COUNT0_RX_BLSIZE_Msk                (0x1U << USB_COUNT0_RX_BLSIZE_Pos) /*!< 0x00008000 */
+#define USB_COUNT0_RX_BLSIZE                    USB_COUNT0_RX_BLSIZE_Msk       /*!< BLock SIZE */
+
+/*****************  Bit definition for USB_COUNT1_RX register  ****************/
+#define USB_COUNT1_RX_COUNT1_RX_Pos             (0U)                           
+#define USB_COUNT1_RX_COUNT1_RX_Msk             (0x3FFU << USB_COUNT1_RX_COUNT1_RX_Pos) /*!< 0x000003FF */
+#define USB_COUNT1_RX_COUNT1_RX                 USB_COUNT1_RX_COUNT1_RX_Msk    /*!< Reception Byte Count */
+
+#define USB_COUNT1_RX_NUM_BLOCK_Pos             (10U)                          
+#define USB_COUNT1_RX_NUM_BLOCK_Msk             (0x1FU << USB_COUNT1_RX_NUM_BLOCK_Pos) /*!< 0x00007C00 */
+#define USB_COUNT1_RX_NUM_BLOCK                 USB_COUNT1_RX_NUM_BLOCK_Msk    /*!< NUM_BLOCK[4:0] bits (Number of blocks) */
+#define USB_COUNT1_RX_NUM_BLOCK_0               (0x01U << USB_COUNT1_RX_NUM_BLOCK_Pos) /*!< 0x00000400 */
+#define USB_COUNT1_RX_NUM_BLOCK_1               (0x02U << USB_COUNT1_RX_NUM_BLOCK_Pos) /*!< 0x00000800 */
+#define USB_COUNT1_RX_NUM_BLOCK_2               (0x04U << USB_COUNT1_RX_NUM_BLOCK_Pos) /*!< 0x00001000 */
+#define USB_COUNT1_RX_NUM_BLOCK_3               (0x08U << USB_COUNT1_RX_NUM_BLOCK_Pos) /*!< 0x00002000 */
+#define USB_COUNT1_RX_NUM_BLOCK_4               (0x10U << USB_COUNT1_RX_NUM_BLOCK_Pos) /*!< 0x00004000 */
+
+#define USB_COUNT1_RX_BLSIZE_Pos                (15U)                          
+#define USB_COUNT1_RX_BLSIZE_Msk                (0x1U << USB_COUNT1_RX_BLSIZE_Pos) /*!< 0x00008000 */
+#define USB_COUNT1_RX_BLSIZE                    USB_COUNT1_RX_BLSIZE_Msk       /*!< BLock SIZE */
+
+/*****************  Bit definition for USB_COUNT2_RX register  ****************/
+#define USB_COUNT2_RX_COUNT2_RX_Pos             (0U)                           
+#define USB_COUNT2_RX_COUNT2_RX_Msk             (0x3FFU << USB_COUNT2_RX_COUNT2_RX_Pos) /*!< 0x000003FF */
+#define USB_COUNT2_RX_COUNT2_RX                 USB_COUNT2_RX_COUNT2_RX_Msk    /*!< Reception Byte Count */
+
+#define USB_COUNT2_RX_NUM_BLOCK_Pos             (10U)                          
+#define USB_COUNT2_RX_NUM_BLOCK_Msk             (0x1FU << USB_COUNT2_RX_NUM_BLOCK_Pos) /*!< 0x00007C00 */
+#define USB_COUNT2_RX_NUM_BLOCK                 USB_COUNT2_RX_NUM_BLOCK_Msk    /*!< NUM_BLOCK[4:0] bits (Number of blocks) */
+#define USB_COUNT2_RX_NUM_BLOCK_0               (0x01U << USB_COUNT2_RX_NUM_BLOCK_Pos) /*!< 0x00000400 */
+#define USB_COUNT2_RX_NUM_BLOCK_1               (0x02U << USB_COUNT2_RX_NUM_BLOCK_Pos) /*!< 0x00000800 */
+#define USB_COUNT2_RX_NUM_BLOCK_2               (0x04U << USB_COUNT2_RX_NUM_BLOCK_Pos) /*!< 0x00001000 */
+#define USB_COUNT2_RX_NUM_BLOCK_3               (0x08U << USB_COUNT2_RX_NUM_BLOCK_Pos) /*!< 0x00002000 */
+#define USB_COUNT2_RX_NUM_BLOCK_4               (0x10U << USB_COUNT2_RX_NUM_BLOCK_Pos) /*!< 0x00004000 */
+
+#define USB_COUNT2_RX_BLSIZE_Pos                (15U)                          
+#define USB_COUNT2_RX_BLSIZE_Msk                (0x1U << USB_COUNT2_RX_BLSIZE_Pos) /*!< 0x00008000 */
+#define USB_COUNT2_RX_BLSIZE                    USB_COUNT2_RX_BLSIZE_Msk       /*!< BLock SIZE */
+
+/*****************  Bit definition for USB_COUNT3_RX register  ****************/
+#define USB_COUNT3_RX_COUNT3_RX_Pos             (0U)                           
+#define USB_COUNT3_RX_COUNT3_RX_Msk             (0x3FFU << USB_COUNT3_RX_COUNT3_RX_Pos) /*!< 0x000003FF */
+#define USB_COUNT3_RX_COUNT3_RX                 USB_COUNT3_RX_COUNT3_RX_Msk    /*!< Reception Byte Count */
+
+#define USB_COUNT3_RX_NUM_BLOCK_Pos             (10U)                          
+#define USB_COUNT3_RX_NUM_BLOCK_Msk             (0x1FU << USB_COUNT3_RX_NUM_BLOCK_Pos) /*!< 0x00007C00 */
+#define USB_COUNT3_RX_NUM_BLOCK                 USB_COUNT3_RX_NUM_BLOCK_Msk    /*!< NUM_BLOCK[4:0] bits (Number of blocks) */
+#define USB_COUNT3_RX_NUM_BLOCK_0               (0x01U << USB_COUNT3_RX_NUM_BLOCK_Pos) /*!< 0x00000400 */
+#define USB_COUNT3_RX_NUM_BLOCK_1               (0x02U << USB_COUNT3_RX_NUM_BLOCK_Pos) /*!< 0x00000800 */
+#define USB_COUNT3_RX_NUM_BLOCK_2               (0x04U << USB_COUNT3_RX_NUM_BLOCK_Pos) /*!< 0x00001000 */
+#define USB_COUNT3_RX_NUM_BLOCK_3               (0x08U << USB_COUNT3_RX_NUM_BLOCK_Pos) /*!< 0x00002000 */
+#define USB_COUNT3_RX_NUM_BLOCK_4               (0x10U << USB_COUNT3_RX_NUM_BLOCK_Pos) /*!< 0x00004000 */
+
+#define USB_COUNT3_RX_BLSIZE_Pos                (15U)                          
+#define USB_COUNT3_RX_BLSIZE_Msk                (0x1U << USB_COUNT3_RX_BLSIZE_Pos) /*!< 0x00008000 */
+#define USB_COUNT3_RX_BLSIZE                    USB_COUNT3_RX_BLSIZE_Msk       /*!< BLock SIZE */
+
+/*****************  Bit definition for USB_COUNT4_RX register  ****************/
+#define USB_COUNT4_RX_COUNT4_RX_Pos             (0U)                           
+#define USB_COUNT4_RX_COUNT4_RX_Msk             (0x3FFU << USB_COUNT4_RX_COUNT4_RX_Pos) /*!< 0x000003FF */
+#define USB_COUNT4_RX_COUNT4_RX                 USB_COUNT4_RX_COUNT4_RX_Msk    /*!< Reception Byte Count */
+
+#define USB_COUNT4_RX_NUM_BLOCK_Pos             (10U)                          
+#define USB_COUNT4_RX_NUM_BLOCK_Msk             (0x1FU << USB_COUNT4_RX_NUM_BLOCK_Pos) /*!< 0x00007C00 */
+#define USB_COUNT4_RX_NUM_BLOCK                 USB_COUNT4_RX_NUM_BLOCK_Msk    /*!< NUM_BLOCK[4:0] bits (Number of blocks) */
+#define USB_COUNT4_RX_NUM_BLOCK_0               (0x01U << USB_COUNT4_RX_NUM_BLOCK_Pos) /*!< 0x00000400 */
+#define USB_COUNT4_RX_NUM_BLOCK_1               (0x02U << USB_COUNT4_RX_NUM_BLOCK_Pos) /*!< 0x00000800 */
+#define USB_COUNT4_RX_NUM_BLOCK_2               (0x04U << USB_COUNT4_RX_NUM_BLOCK_Pos) /*!< 0x00001000 */
+#define USB_COUNT4_RX_NUM_BLOCK_3               (0x08U << USB_COUNT4_RX_NUM_BLOCK_Pos) /*!< 0x00002000 */
+#define USB_COUNT4_RX_NUM_BLOCK_4               (0x10U << USB_COUNT4_RX_NUM_BLOCK_Pos) /*!< 0x00004000 */
+
+#define USB_COUNT4_RX_BLSIZE_Pos                (15U)                          
+#define USB_COUNT4_RX_BLSIZE_Msk                (0x1U << USB_COUNT4_RX_BLSIZE_Pos) /*!< 0x00008000 */
+#define USB_COUNT4_RX_BLSIZE                    USB_COUNT4_RX_BLSIZE_Msk       /*!< BLock SIZE */
+
+/*****************  Bit definition for USB_COUNT5_RX register  ****************/
+#define USB_COUNT5_RX_COUNT5_RX_Pos             (0U)                           
+#define USB_COUNT5_RX_COUNT5_RX_Msk             (0x3FFU << USB_COUNT5_RX_COUNT5_RX_Pos) /*!< 0x000003FF */
+#define USB_COUNT5_RX_COUNT5_RX                 USB_COUNT5_RX_COUNT5_RX_Msk    /*!< Reception Byte Count */
+
+#define USB_COUNT5_RX_NUM_BLOCK_Pos             (10U)                          
+#define USB_COUNT5_RX_NUM_BLOCK_Msk             (0x1FU << USB_COUNT5_RX_NUM_BLOCK_Pos) /*!< 0x00007C00 */
+#define USB_COUNT5_RX_NUM_BLOCK                 USB_COUNT5_RX_NUM_BLOCK_Msk    /*!< NUM_BLOCK[4:0] bits (Number of blocks) */
+#define USB_COUNT5_RX_NUM_BLOCK_0               (0x01U << USB_COUNT5_RX_NUM_BLOCK_Pos) /*!< 0x00000400 */
+#define USB_COUNT5_RX_NUM_BLOCK_1               (0x02U << USB_COUNT5_RX_NUM_BLOCK_Pos) /*!< 0x00000800 */
+#define USB_COUNT5_RX_NUM_BLOCK_2               (0x04U << USB_COUNT5_RX_NUM_BLOCK_Pos) /*!< 0x00001000 */
+#define USB_COUNT5_RX_NUM_BLOCK_3               (0x08U << USB_COUNT5_RX_NUM_BLOCK_Pos) /*!< 0x00002000 */
+#define USB_COUNT5_RX_NUM_BLOCK_4               (0x10U << USB_COUNT5_RX_NUM_BLOCK_Pos) /*!< 0x00004000 */
+
+#define USB_COUNT5_RX_BLSIZE_Pos                (15U)                          
+#define USB_COUNT5_RX_BLSIZE_Msk                (0x1U << USB_COUNT5_RX_BLSIZE_Pos) /*!< 0x00008000 */
+#define USB_COUNT5_RX_BLSIZE                    USB_COUNT5_RX_BLSIZE_Msk       /*!< BLock SIZE */
+
+/*****************  Bit definition for USB_COUNT6_RX register  ****************/
+#define USB_COUNT6_RX_COUNT6_RX_Pos             (0U)                           
+#define USB_COUNT6_RX_COUNT6_RX_Msk             (0x3FFU << USB_COUNT6_RX_COUNT6_RX_Pos) /*!< 0x000003FF */
+#define USB_COUNT6_RX_COUNT6_RX                 USB_COUNT6_RX_COUNT6_RX_Msk    /*!< Reception Byte Count */
+
+#define USB_COUNT6_RX_NUM_BLOCK_Pos             (10U)                          
+#define USB_COUNT6_RX_NUM_BLOCK_Msk             (0x1FU << USB_COUNT6_RX_NUM_BLOCK_Pos) /*!< 0x00007C00 */
+#define USB_COUNT6_RX_NUM_BLOCK                 USB_COUNT6_RX_NUM_BLOCK_Msk    /*!< NUM_BLOCK[4:0] bits (Number of blocks) */
+#define USB_COUNT6_RX_NUM_BLOCK_0               (0x01U << USB_COUNT6_RX_NUM_BLOCK_Pos) /*!< 0x00000400 */
+#define USB_COUNT6_RX_NUM_BLOCK_1               (0x02U << USB_COUNT6_RX_NUM_BLOCK_Pos) /*!< 0x00000800 */
+#define USB_COUNT6_RX_NUM_BLOCK_2               (0x04U << USB_COUNT6_RX_NUM_BLOCK_Pos) /*!< 0x00001000 */
+#define USB_COUNT6_RX_NUM_BLOCK_3               (0x08U << USB_COUNT6_RX_NUM_BLOCK_Pos) /*!< 0x00002000 */
+#define USB_COUNT6_RX_NUM_BLOCK_4               (0x10U << USB_COUNT6_RX_NUM_BLOCK_Pos) /*!< 0x00004000 */
+
+#define USB_COUNT6_RX_BLSIZE_Pos                (15U)                          
+#define USB_COUNT6_RX_BLSIZE_Msk                (0x1U << USB_COUNT6_RX_BLSIZE_Pos) /*!< 0x00008000 */
+#define USB_COUNT6_RX_BLSIZE                    USB_COUNT6_RX_BLSIZE_Msk       /*!< BLock SIZE */
+
+/*****************  Bit definition for USB_COUNT7_RX register  ****************/
+#define USB_COUNT7_RX_COUNT7_RX_Pos             (0U)                           
+#define USB_COUNT7_RX_COUNT7_RX_Msk             (0x3FFU << USB_COUNT7_RX_COUNT7_RX_Pos) /*!< 0x000003FF */
+#define USB_COUNT7_RX_COUNT7_RX                 USB_COUNT7_RX_COUNT7_RX_Msk    /*!< Reception Byte Count */
+
+#define USB_COUNT7_RX_NUM_BLOCK_Pos             (10U)                          
+#define USB_COUNT7_RX_NUM_BLOCK_Msk             (0x1FU << USB_COUNT7_RX_NUM_BLOCK_Pos) /*!< 0x00007C00 */
+#define USB_COUNT7_RX_NUM_BLOCK                 USB_COUNT7_RX_NUM_BLOCK_Msk    /*!< NUM_BLOCK[4:0] bits (Number of blocks) */
+#define USB_COUNT7_RX_NUM_BLOCK_0               (0x01U << USB_COUNT7_RX_NUM_BLOCK_Pos) /*!< 0x00000400 */
+#define USB_COUNT7_RX_NUM_BLOCK_1               (0x02U << USB_COUNT7_RX_NUM_BLOCK_Pos) /*!< 0x00000800 */
+#define USB_COUNT7_RX_NUM_BLOCK_2               (0x04U << USB_COUNT7_RX_NUM_BLOCK_Pos) /*!< 0x00001000 */
+#define USB_COUNT7_RX_NUM_BLOCK_3               (0x08U << USB_COUNT7_RX_NUM_BLOCK_Pos) /*!< 0x00002000 */
+#define USB_COUNT7_RX_NUM_BLOCK_4               (0x10U << USB_COUNT7_RX_NUM_BLOCK_Pos) /*!< 0x00004000 */
+
+#define USB_COUNT7_RX_BLSIZE_Pos                (15U)                          
+#define USB_COUNT7_RX_BLSIZE_Msk                (0x1U << USB_COUNT7_RX_BLSIZE_Pos) /*!< 0x00008000 */
+#define USB_COUNT7_RX_BLSIZE                    USB_COUNT7_RX_BLSIZE_Msk       /*!< BLock SIZE */
+
+/*----------------------------------------------------------------------------*/
+
+/****************  Bit definition for USB_COUNT0_RX_0 register  ***************/
+#define USB_COUNT0_RX_0_COUNT0_RX_0             ((uint32_t)0x000003FF)         /*!< Reception Byte Count (low) */
+
+#define USB_COUNT0_RX_0_NUM_BLOCK_0             ((uint32_t)0x00007C00)         /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */
+#define USB_COUNT0_RX_0_NUM_BLOCK_0_0           ((uint32_t)0x00000400)         /*!< Bit 0 */
+#define USB_COUNT0_RX_0_NUM_BLOCK_0_1           ((uint32_t)0x00000800)         /*!< Bit 1 */
+#define USB_COUNT0_RX_0_NUM_BLOCK_0_2           ((uint32_t)0x00001000)         /*!< Bit 2 */
+#define USB_COUNT0_RX_0_NUM_BLOCK_0_3           ((uint32_t)0x00002000)         /*!< Bit 3 */
+#define USB_COUNT0_RX_0_NUM_BLOCK_0_4           ((uint32_t)0x00004000)         /*!< Bit 4 */
+
+#define USB_COUNT0_RX_0_BLSIZE_0                ((uint32_t)0x00008000)         /*!< BLock SIZE (low) */
+
+/****************  Bit definition for USB_COUNT0_RX_1 register  ***************/
+#define USB_COUNT0_RX_1_COUNT0_RX_1             ((uint32_t)0x03FF0000)         /*!< Reception Byte Count (high) */
+
+#define USB_COUNT0_RX_1_NUM_BLOCK_1             ((uint32_t)0x7C000000)         /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */
+#define USB_COUNT0_RX_1_NUM_BLOCK_1_0           ((uint32_t)0x04000000)         /*!< Bit 1 */
+#define USB_COUNT0_RX_1_NUM_BLOCK_1_1           ((uint32_t)0x08000000)         /*!< Bit 1 */
+#define USB_COUNT0_RX_1_NUM_BLOCK_1_2           ((uint32_t)0x10000000)         /*!< Bit 2 */
+#define USB_COUNT0_RX_1_NUM_BLOCK_1_3           ((uint32_t)0x20000000)         /*!< Bit 3 */
+#define USB_COUNT0_RX_1_NUM_BLOCK_1_4           ((uint32_t)0x40000000)         /*!< Bit 4 */
+
+#define USB_COUNT0_RX_1_BLSIZE_1                ((uint32_t)0x80000000)         /*!< BLock SIZE (high) */
+
+/****************  Bit definition for USB_COUNT1_RX_0 register  ***************/
+#define USB_COUNT1_RX_0_COUNT1_RX_0             ((uint32_t)0x000003FF)         /*!< Reception Byte Count (low) */
+
+#define USB_COUNT1_RX_0_NUM_BLOCK_0             ((uint32_t)0x00007C00)         /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */
+#define USB_COUNT1_RX_0_NUM_BLOCK_0_0           ((uint32_t)0x00000400)         /*!< Bit 0 */
+#define USB_COUNT1_RX_0_NUM_BLOCK_0_1           ((uint32_t)0x00000800)         /*!< Bit 1 */
+#define USB_COUNT1_RX_0_NUM_BLOCK_0_2           ((uint32_t)0x00001000)         /*!< Bit 2 */
+#define USB_COUNT1_RX_0_NUM_BLOCK_0_3           ((uint32_t)0x00002000)         /*!< Bit 3 */
+#define USB_COUNT1_RX_0_NUM_BLOCK_0_4           ((uint32_t)0x00004000)         /*!< Bit 4 */
+
+#define USB_COUNT1_RX_0_BLSIZE_0                ((uint32_t)0x00008000)         /*!< BLock SIZE (low) */
+
+/****************  Bit definition for USB_COUNT1_RX_1 register  ***************/
+#define USB_COUNT1_RX_1_COUNT1_RX_1             ((uint32_t)0x03FF0000)         /*!< Reception Byte Count (high) */
+
+#define USB_COUNT1_RX_1_NUM_BLOCK_1             ((uint32_t)0x7C000000)         /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */
+#define USB_COUNT1_RX_1_NUM_BLOCK_1_0           ((uint32_t)0x04000000)         /*!< Bit 0 */
+#define USB_COUNT1_RX_1_NUM_BLOCK_1_1           ((uint32_t)0x08000000)         /*!< Bit 1 */
+#define USB_COUNT1_RX_1_NUM_BLOCK_1_2           ((uint32_t)0x10000000)         /*!< Bit 2 */
+#define USB_COUNT1_RX_1_NUM_BLOCK_1_3           ((uint32_t)0x20000000)         /*!< Bit 3 */
+#define USB_COUNT1_RX_1_NUM_BLOCK_1_4           ((uint32_t)0x40000000)         /*!< Bit 4 */
+
+#define USB_COUNT1_RX_1_BLSIZE_1                ((uint32_t)0x80000000)         /*!< BLock SIZE (high) */
+
+/****************  Bit definition for USB_COUNT2_RX_0 register  ***************/
+#define USB_COUNT2_RX_0_COUNT2_RX_0             ((uint32_t)0x000003FF)         /*!< Reception Byte Count (low) */
+
+#define USB_COUNT2_RX_0_NUM_BLOCK_0             ((uint32_t)0x00007C00)         /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */
+#define USB_COUNT2_RX_0_NUM_BLOCK_0_0           ((uint32_t)0x00000400)         /*!< Bit 0 */
+#define USB_COUNT2_RX_0_NUM_BLOCK_0_1           ((uint32_t)0x00000800)         /*!< Bit 1 */
+#define USB_COUNT2_RX_0_NUM_BLOCK_0_2           ((uint32_t)0x00001000)         /*!< Bit 2 */
+#define USB_COUNT2_RX_0_NUM_BLOCK_0_3           ((uint32_t)0x00002000)         /*!< Bit 3 */
+#define USB_COUNT2_RX_0_NUM_BLOCK_0_4           ((uint32_t)0x00004000)         /*!< Bit 4 */
+
+#define USB_COUNT2_RX_0_BLSIZE_0                ((uint32_t)0x00008000)         /*!< BLock SIZE (low) */
+
+/****************  Bit definition for USB_COUNT2_RX_1 register  ***************/
+#define USB_COUNT2_RX_1_COUNT2_RX_1             ((uint32_t)0x03FF0000)         /*!< Reception Byte Count (high) */
+
+#define USB_COUNT2_RX_1_NUM_BLOCK_1             ((uint32_t)0x7C000000)         /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */
+#define USB_COUNT2_RX_1_NUM_BLOCK_1_0           ((uint32_t)0x04000000)         /*!< Bit 0 */
+#define USB_COUNT2_RX_1_NUM_BLOCK_1_1           ((uint32_t)0x08000000)         /*!< Bit 1 */
+#define USB_COUNT2_RX_1_NUM_BLOCK_1_2           ((uint32_t)0x10000000)         /*!< Bit 2 */
+#define USB_COUNT2_RX_1_NUM_BLOCK_1_3           ((uint32_t)0x20000000)         /*!< Bit 3 */
+#define USB_COUNT2_RX_1_NUM_BLOCK_1_4           ((uint32_t)0x40000000)         /*!< Bit 4 */
+
+#define USB_COUNT2_RX_1_BLSIZE_1                ((uint32_t)0x80000000)         /*!< BLock SIZE (high) */
+
+/****************  Bit definition for USB_COUNT3_RX_0 register  ***************/
+#define USB_COUNT3_RX_0_COUNT3_RX_0             ((uint32_t)0x000003FF)         /*!< Reception Byte Count (low) */
+
+#define USB_COUNT3_RX_0_NUM_BLOCK_0             ((uint32_t)0x00007C00)         /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */
+#define USB_COUNT3_RX_0_NUM_BLOCK_0_0           ((uint32_t)0x00000400)         /*!< Bit 0 */
+#define USB_COUNT3_RX_0_NUM_BLOCK_0_1           ((uint32_t)0x00000800)         /*!< Bit 1 */
+#define USB_COUNT3_RX_0_NUM_BLOCK_0_2           ((uint32_t)0x00001000)         /*!< Bit 2 */
+#define USB_COUNT3_RX_0_NUM_BLOCK_0_3           ((uint32_t)0x00002000)         /*!< Bit 3 */
+#define USB_COUNT3_RX_0_NUM_BLOCK_0_4           ((uint32_t)0x00004000)         /*!< Bit 4 */
+
+#define USB_COUNT3_RX_0_BLSIZE_0                ((uint32_t)0x00008000)         /*!< BLock SIZE (low) */
+
+/****************  Bit definition for USB_COUNT3_RX_1 register  ***************/
+#define USB_COUNT3_RX_1_COUNT3_RX_1             ((uint32_t)0x03FF0000)         /*!< Reception Byte Count (high) */
+
+#define USB_COUNT3_RX_1_NUM_BLOCK_1             ((uint32_t)0x7C000000)         /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */
+#define USB_COUNT3_RX_1_NUM_BLOCK_1_0           ((uint32_t)0x04000000)         /*!< Bit 0 */
+#define USB_COUNT3_RX_1_NUM_BLOCK_1_1           ((uint32_t)0x08000000)         /*!< Bit 1 */
+#define USB_COUNT3_RX_1_NUM_BLOCK_1_2           ((uint32_t)0x10000000)         /*!< Bit 2 */
+#define USB_COUNT3_RX_1_NUM_BLOCK_1_3           ((uint32_t)0x20000000)         /*!< Bit 3 */
+#define USB_COUNT3_RX_1_NUM_BLOCK_1_4           ((uint32_t)0x40000000)         /*!< Bit 4 */
+
+#define USB_COUNT3_RX_1_BLSIZE_1                ((uint32_t)0x80000000)         /*!< BLock SIZE (high) */
+
+/****************  Bit definition for USB_COUNT4_RX_0 register  ***************/
+#define USB_COUNT4_RX_0_COUNT4_RX_0             ((uint32_t)0x000003FF)         /*!< Reception Byte Count (low) */
+
+#define USB_COUNT4_RX_0_NUM_BLOCK_0             ((uint32_t)0x00007C00)         /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */
+#define USB_COUNT4_RX_0_NUM_BLOCK_0_0           ((uint32_t)0x00000400)         /*!< Bit 0 */
+#define USB_COUNT4_RX_0_NUM_BLOCK_0_1           ((uint32_t)0x00000800)         /*!< Bit 1 */
+#define USB_COUNT4_RX_0_NUM_BLOCK_0_2           ((uint32_t)0x00001000)         /*!< Bit 2 */
+#define USB_COUNT4_RX_0_NUM_BLOCK_0_3           ((uint32_t)0x00002000)         /*!< Bit 3 */
+#define USB_COUNT4_RX_0_NUM_BLOCK_0_4           ((uint32_t)0x00004000)         /*!< Bit 4 */
+
+#define USB_COUNT4_RX_0_BLSIZE_0                ((uint32_t)0x00008000)         /*!< BLock SIZE (low) */
+
+/****************  Bit definition for USB_COUNT4_RX_1 register  ***************/
+#define USB_COUNT4_RX_1_COUNT4_RX_1             ((uint32_t)0x03FF0000)         /*!< Reception Byte Count (high) */
+
+#define USB_COUNT4_RX_1_NUM_BLOCK_1             ((uint32_t)0x7C000000)         /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */
+#define USB_COUNT4_RX_1_NUM_BLOCK_1_0           ((uint32_t)0x04000000)         /*!< Bit 0 */
+#define USB_COUNT4_RX_1_NUM_BLOCK_1_1           ((uint32_t)0x08000000)         /*!< Bit 1 */
+#define USB_COUNT4_RX_1_NUM_BLOCK_1_2           ((uint32_t)0x10000000)         /*!< Bit 2 */
+#define USB_COUNT4_RX_1_NUM_BLOCK_1_3           ((uint32_t)0x20000000)         /*!< Bit 3 */
+#define USB_COUNT4_RX_1_NUM_BLOCK_1_4           ((uint32_t)0x40000000)         /*!< Bit 4 */
+
+#define USB_COUNT4_RX_1_BLSIZE_1                ((uint32_t)0x80000000)         /*!< BLock SIZE (high) */
+
+/****************  Bit definition for USB_COUNT5_RX_0 register  ***************/
+#define USB_COUNT5_RX_0_COUNT5_RX_0             ((uint32_t)0x000003FF)         /*!< Reception Byte Count (low) */
+
+#define USB_COUNT5_RX_0_NUM_BLOCK_0             ((uint32_t)0x00007C00)         /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */
+#define USB_COUNT5_RX_0_NUM_BLOCK_0_0           ((uint32_t)0x00000400)         /*!< Bit 0 */
+#define USB_COUNT5_RX_0_NUM_BLOCK_0_1           ((uint32_t)0x00000800)         /*!< Bit 1 */
+#define USB_COUNT5_RX_0_NUM_BLOCK_0_2           ((uint32_t)0x00001000)         /*!< Bit 2 */
+#define USB_COUNT5_RX_0_NUM_BLOCK_0_3           ((uint32_t)0x00002000)         /*!< Bit 3 */
+#define USB_COUNT5_RX_0_NUM_BLOCK_0_4           ((uint32_t)0x00004000)         /*!< Bit 4 */
+
+#define USB_COUNT5_RX_0_BLSIZE_0                ((uint32_t)0x00008000)         /*!< BLock SIZE (low) */
+
+/****************  Bit definition for USB_COUNT5_RX_1 register  ***************/
+#define USB_COUNT5_RX_1_COUNT5_RX_1             ((uint32_t)0x03FF0000)         /*!< Reception Byte Count (high) */
+
+#define USB_COUNT5_RX_1_NUM_BLOCK_1             ((uint32_t)0x7C000000)         /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */
+#define USB_COUNT5_RX_1_NUM_BLOCK_1_0           ((uint32_t)0x04000000)         /*!< Bit 0 */
+#define USB_COUNT5_RX_1_NUM_BLOCK_1_1           ((uint32_t)0x08000000)         /*!< Bit 1 */
+#define USB_COUNT5_RX_1_NUM_BLOCK_1_2           ((uint32_t)0x10000000)         /*!< Bit 2 */
+#define USB_COUNT5_RX_1_NUM_BLOCK_1_3           ((uint32_t)0x20000000)         /*!< Bit 3 */
+#define USB_COUNT5_RX_1_NUM_BLOCK_1_4           ((uint32_t)0x40000000)         /*!< Bit 4 */
+
+#define USB_COUNT5_RX_1_BLSIZE_1                ((uint32_t)0x80000000)         /*!< BLock SIZE (high) */
+
+/***************  Bit definition for USB_COUNT6_RX_0  register  ***************/
+#define USB_COUNT6_RX_0_COUNT6_RX_0             ((uint32_t)0x000003FF)         /*!< Reception Byte Count (low) */
+
+#define USB_COUNT6_RX_0_NUM_BLOCK_0             ((uint32_t)0x00007C00)         /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */
+#define USB_COUNT6_RX_0_NUM_BLOCK_0_0           ((uint32_t)0x00000400)         /*!< Bit 0 */
+#define USB_COUNT6_RX_0_NUM_BLOCK_0_1           ((uint32_t)0x00000800)         /*!< Bit 1 */
+#define USB_COUNT6_RX_0_NUM_BLOCK_0_2           ((uint32_t)0x00001000)         /*!< Bit 2 */
+#define USB_COUNT6_RX_0_NUM_BLOCK_0_3           ((uint32_t)0x00002000)         /*!< Bit 3 */
+#define USB_COUNT6_RX_0_NUM_BLOCK_0_4           ((uint32_t)0x00004000)         /*!< Bit 4 */
+
+#define USB_COUNT6_RX_0_BLSIZE_0                ((uint32_t)0x00008000)         /*!< BLock SIZE (low) */
+
+/****************  Bit definition for USB_COUNT6_RX_1 register  ***************/
+#define USB_COUNT6_RX_1_COUNT6_RX_1             ((uint32_t)0x03FF0000)         /*!< Reception Byte Count (high) */
+
+#define USB_COUNT6_RX_1_NUM_BLOCK_1             ((uint32_t)0x7C000000)         /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */
+#define USB_COUNT6_RX_1_NUM_BLOCK_1_0           ((uint32_t)0x04000000)         /*!< Bit 0 */
+#define USB_COUNT6_RX_1_NUM_BLOCK_1_1           ((uint32_t)0x08000000)         /*!< Bit 1 */
+#define USB_COUNT6_RX_1_NUM_BLOCK_1_2           ((uint32_t)0x10000000)         /*!< Bit 2 */
+#define USB_COUNT6_RX_1_NUM_BLOCK_1_3           ((uint32_t)0x20000000)         /*!< Bit 3 */
+#define USB_COUNT6_RX_1_NUM_BLOCK_1_4           ((uint32_t)0x40000000)         /*!< Bit 4 */
+
+#define USB_COUNT6_RX_1_BLSIZE_1                ((uint32_t)0x80000000)         /*!< BLock SIZE (high) */
+
+/***************  Bit definition for USB_COUNT7_RX_0 register  ****************/
+#define USB_COUNT7_RX_0_COUNT7_RX_0             ((uint32_t)0x000003FF)         /*!< Reception Byte Count (low) */
+
+#define USB_COUNT7_RX_0_NUM_BLOCK_0             ((uint32_t)0x00007C00)         /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */
+#define USB_COUNT7_RX_0_NUM_BLOCK_0_0           ((uint32_t)0x00000400)         /*!< Bit 0 */
+#define USB_COUNT7_RX_0_NUM_BLOCK_0_1           ((uint32_t)0x00000800)         /*!< Bit 1 */
+#define USB_COUNT7_RX_0_NUM_BLOCK_0_2           ((uint32_t)0x00001000)         /*!< Bit 2 */
+#define USB_COUNT7_RX_0_NUM_BLOCK_0_3           ((uint32_t)0x00002000)         /*!< Bit 3 */
+#define USB_COUNT7_RX_0_NUM_BLOCK_0_4           ((uint32_t)0x00004000)         /*!< Bit 4 */
+
+#define USB_COUNT7_RX_0_BLSIZE_0                ((uint32_t)0x00008000)         /*!< BLock SIZE (low) */
+
+/***************  Bit definition for USB_COUNT7_RX_1 register  ****************/
+#define USB_COUNT7_RX_1_COUNT7_RX_1             ((uint32_t)0x03FF0000)         /*!< Reception Byte Count (high) */
+
+#define USB_COUNT7_RX_1_NUM_BLOCK_1             ((uint32_t)0x7C000000)         /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */
+#define USB_COUNT7_RX_1_NUM_BLOCK_1_0           ((uint32_t)0x04000000)         /*!< Bit 0 */
+#define USB_COUNT7_RX_1_NUM_BLOCK_1_1           ((uint32_t)0x08000000)         /*!< Bit 1 */
+#define USB_COUNT7_RX_1_NUM_BLOCK_1_2           ((uint32_t)0x10000000)         /*!< Bit 2 */
+#define USB_COUNT7_RX_1_NUM_BLOCK_1_3           ((uint32_t)0x20000000)         /*!< Bit 3 */
+#define USB_COUNT7_RX_1_NUM_BLOCK_1_4           ((uint32_t)0x40000000)         /*!< Bit 4 */
+
+#define USB_COUNT7_RX_1_BLSIZE_1                ((uint32_t)0x80000000)         /*!< BLock SIZE (high) */
+
+/******************************************************************************/
+/*                                                                            */
+/*                         Controller Area Network                            */
+/*                                                                            */
+/******************************************************************************/
+
+/*!< CAN control and status registers */
+/*******************  Bit definition for CAN_MCR register  ********************/
+#define CAN_MCR_INRQ_Pos                     (0U)                              
+#define CAN_MCR_INRQ_Msk                     (0x1U << CAN_MCR_INRQ_Pos)        /*!< 0x00000001 */
+#define CAN_MCR_INRQ                         CAN_MCR_INRQ_Msk                  /*!< Initialization Request */
+#define CAN_MCR_SLEEP_Pos                    (1U)                              
+#define CAN_MCR_SLEEP_Msk                    (0x1U << CAN_MCR_SLEEP_Pos)       /*!< 0x00000002 */
+#define CAN_MCR_SLEEP                        CAN_MCR_SLEEP_Msk                 /*!< Sleep Mode Request */
+#define CAN_MCR_TXFP_Pos                     (2U)                              
+#define CAN_MCR_TXFP_Msk                     (0x1U << CAN_MCR_TXFP_Pos)        /*!< 0x00000004 */
+#define CAN_MCR_TXFP                         CAN_MCR_TXFP_Msk                  /*!< Transmit FIFO Priority */
+#define CAN_MCR_RFLM_Pos                     (3U)                              
+#define CAN_MCR_RFLM_Msk                     (0x1U << CAN_MCR_RFLM_Pos)        /*!< 0x00000008 */
+#define CAN_MCR_RFLM                         CAN_MCR_RFLM_Msk                  /*!< Receive FIFO Locked Mode */
+#define CAN_MCR_NART_Pos                     (4U)                              
+#define CAN_MCR_NART_Msk                     (0x1U << CAN_MCR_NART_Pos)        /*!< 0x00000010 */
+#define CAN_MCR_NART                         CAN_MCR_NART_Msk                  /*!< No Automatic Retransmission */
+#define CAN_MCR_AWUM_Pos                     (5U)                              
+#define CAN_MCR_AWUM_Msk                     (0x1U << CAN_MCR_AWUM_Pos)        /*!< 0x00000020 */
+#define CAN_MCR_AWUM                         CAN_MCR_AWUM_Msk                  /*!< Automatic Wakeup Mode */
+#define CAN_MCR_ABOM_Pos                     (6U)                              
+#define CAN_MCR_ABOM_Msk                     (0x1U << CAN_MCR_ABOM_Pos)        /*!< 0x00000040 */
+#define CAN_MCR_ABOM                         CAN_MCR_ABOM_Msk                  /*!< Automatic Bus-Off Management */
+#define CAN_MCR_TTCM_Pos                     (7U)                              
+#define CAN_MCR_TTCM_Msk                     (0x1U << CAN_MCR_TTCM_Pos)        /*!< 0x00000080 */
+#define CAN_MCR_TTCM                         CAN_MCR_TTCM_Msk                  /*!< Time Triggered Communication Mode */
+#define CAN_MCR_RESET_Pos                    (15U)                             
+#define CAN_MCR_RESET_Msk                    (0x1U << CAN_MCR_RESET_Pos)       /*!< 0x00008000 */
+#define CAN_MCR_RESET                        CAN_MCR_RESET_Msk                 /*!< CAN software master reset */
+#define CAN_MCR_DBF_Pos                      (16U)                             
+#define CAN_MCR_DBF_Msk                      (0x1U << CAN_MCR_DBF_Pos)         /*!< 0x00010000 */
+#define CAN_MCR_DBF                          CAN_MCR_DBF_Msk                   /*!< CAN Debug freeze */
+
+/*******************  Bit definition for CAN_MSR register  ********************/
+#define CAN_MSR_INAK_Pos                     (0U)                              
+#define CAN_MSR_INAK_Msk                     (0x1U << CAN_MSR_INAK_Pos)        /*!< 0x00000001 */
+#define CAN_MSR_INAK                         CAN_MSR_INAK_Msk                  /*!< Initialization Acknowledge */
+#define CAN_MSR_SLAK_Pos                     (1U)                              
+#define CAN_MSR_SLAK_Msk                     (0x1U << CAN_MSR_SLAK_Pos)        /*!< 0x00000002 */
+#define CAN_MSR_SLAK                         CAN_MSR_SLAK_Msk                  /*!< Sleep Acknowledge */
+#define CAN_MSR_ERRI_Pos                     (2U)                              
+#define CAN_MSR_ERRI_Msk                     (0x1U << CAN_MSR_ERRI_Pos)        /*!< 0x00000004 */
+#define CAN_MSR_ERRI                         CAN_MSR_ERRI_Msk                  /*!< Error Interrupt */
+#define CAN_MSR_WKUI_Pos                     (3U)                              
+#define CAN_MSR_WKUI_Msk                     (0x1U << CAN_MSR_WKUI_Pos)        /*!< 0x00000008 */
+#define CAN_MSR_WKUI                         CAN_MSR_WKUI_Msk                  /*!< Wakeup Interrupt */
+#define CAN_MSR_SLAKI_Pos                    (4U)                              
+#define CAN_MSR_SLAKI_Msk                    (0x1U << CAN_MSR_SLAKI_Pos)       /*!< 0x00000010 */
+#define CAN_MSR_SLAKI                        CAN_MSR_SLAKI_Msk                 /*!< Sleep Acknowledge Interrupt */
+#define CAN_MSR_TXM_Pos                      (8U)                              
+#define CAN_MSR_TXM_Msk                      (0x1U << CAN_MSR_TXM_Pos)         /*!< 0x00000100 */
+#define CAN_MSR_TXM                          CAN_MSR_TXM_Msk                   /*!< Transmit Mode */
+#define CAN_MSR_RXM_Pos                      (9U)                              
+#define CAN_MSR_RXM_Msk                      (0x1U << CAN_MSR_RXM_Pos)         /*!< 0x00000200 */
+#define CAN_MSR_RXM                          CAN_MSR_RXM_Msk                   /*!< Receive Mode */
+#define CAN_MSR_SAMP_Pos                     (10U)                             
+#define CAN_MSR_SAMP_Msk                     (0x1U << CAN_MSR_SAMP_Pos)        /*!< 0x00000400 */
+#define CAN_MSR_SAMP                         CAN_MSR_SAMP_Msk                  /*!< Last Sample Point */
+#define CAN_MSR_RX_Pos                       (11U)                             
+#define CAN_MSR_RX_Msk                       (0x1U << CAN_MSR_RX_Pos)          /*!< 0x00000800 */
+#define CAN_MSR_RX                           CAN_MSR_RX_Msk                    /*!< CAN Rx Signal */
+
+/*******************  Bit definition for CAN_TSR register  ********************/
+#define CAN_TSR_RQCP0_Pos                    (0U)                              
+#define CAN_TSR_RQCP0_Msk                    (0x1U << CAN_TSR_RQCP0_Pos)       /*!< 0x00000001 */
+#define CAN_TSR_RQCP0                        CAN_TSR_RQCP0_Msk                 /*!< Request Completed Mailbox0 */
+#define CAN_TSR_TXOK0_Pos                    (1U)                              
+#define CAN_TSR_TXOK0_Msk                    (0x1U << CAN_TSR_TXOK0_Pos)       /*!< 0x00000002 */
+#define CAN_TSR_TXOK0                        CAN_TSR_TXOK0_Msk                 /*!< Transmission OK of Mailbox0 */
+#define CAN_TSR_ALST0_Pos                    (2U)                              
+#define CAN_TSR_ALST0_Msk                    (0x1U << CAN_TSR_ALST0_Pos)       /*!< 0x00000004 */
+#define CAN_TSR_ALST0                        CAN_TSR_ALST0_Msk                 /*!< Arbitration Lost for Mailbox0 */
+#define CAN_TSR_TERR0_Pos                    (3U)                              
+#define CAN_TSR_TERR0_Msk                    (0x1U << CAN_TSR_TERR0_Pos)       /*!< 0x00000008 */
+#define CAN_TSR_TERR0                        CAN_TSR_TERR0_Msk                 /*!< Transmission Error of Mailbox0 */
+#define CAN_TSR_ABRQ0_Pos                    (7U)                              
+#define CAN_TSR_ABRQ0_Msk                    (0x1U << CAN_TSR_ABRQ0_Pos)       /*!< 0x00000080 */
+#define CAN_TSR_ABRQ0                        CAN_TSR_ABRQ0_Msk                 /*!< Abort Request for Mailbox0 */
+#define CAN_TSR_RQCP1_Pos                    (8U)                              
+#define CAN_TSR_RQCP1_Msk                    (0x1U << CAN_TSR_RQCP1_Pos)       /*!< 0x00000100 */
+#define CAN_TSR_RQCP1                        CAN_TSR_RQCP1_Msk                 /*!< Request Completed Mailbox1 */
+#define CAN_TSR_TXOK1_Pos                    (9U)                              
+#define CAN_TSR_TXOK1_Msk                    (0x1U << CAN_TSR_TXOK1_Pos)       /*!< 0x00000200 */
+#define CAN_TSR_TXOK1                        CAN_TSR_TXOK1_Msk                 /*!< Transmission OK of Mailbox1 */
+#define CAN_TSR_ALST1_Pos                    (10U)                             
+#define CAN_TSR_ALST1_Msk                    (0x1U << CAN_TSR_ALST1_Pos)       /*!< 0x00000400 */
+#define CAN_TSR_ALST1                        CAN_TSR_ALST1_Msk                 /*!< Arbitration Lost for Mailbox1 */
+#define CAN_TSR_TERR1_Pos                    (11U)                             
+#define CAN_TSR_TERR1_Msk                    (0x1U << CAN_TSR_TERR1_Pos)       /*!< 0x00000800 */
+#define CAN_TSR_TERR1                        CAN_TSR_TERR1_Msk                 /*!< Transmission Error of Mailbox1 */
+#define CAN_TSR_ABRQ1_Pos                    (15U)                             
+#define CAN_TSR_ABRQ1_Msk                    (0x1U << CAN_TSR_ABRQ1_Pos)       /*!< 0x00008000 */
+#define CAN_TSR_ABRQ1                        CAN_TSR_ABRQ1_Msk                 /*!< Abort Request for Mailbox 1 */
+#define CAN_TSR_RQCP2_Pos                    (16U)                             
+#define CAN_TSR_RQCP2_Msk                    (0x1U << CAN_TSR_RQCP2_Pos)       /*!< 0x00010000 */
+#define CAN_TSR_RQCP2                        CAN_TSR_RQCP2_Msk                 /*!< Request Completed Mailbox2 */
+#define CAN_TSR_TXOK2_Pos                    (17U)                             
+#define CAN_TSR_TXOK2_Msk                    (0x1U << CAN_TSR_TXOK2_Pos)       /*!< 0x00020000 */
+#define CAN_TSR_TXOK2                        CAN_TSR_TXOK2_Msk                 /*!< Transmission OK of Mailbox 2 */
+#define CAN_TSR_ALST2_Pos                    (18U)                             
+#define CAN_TSR_ALST2_Msk                    (0x1U << CAN_TSR_ALST2_Pos)       /*!< 0x00040000 */
+#define CAN_TSR_ALST2                        CAN_TSR_ALST2_Msk                 /*!< Arbitration Lost for mailbox 2 */
+#define CAN_TSR_TERR2_Pos                    (19U)                             
+#define CAN_TSR_TERR2_Msk                    (0x1U << CAN_TSR_TERR2_Pos)       /*!< 0x00080000 */
+#define CAN_TSR_TERR2                        CAN_TSR_TERR2_Msk                 /*!< Transmission Error of Mailbox 2 */
+#define CAN_TSR_ABRQ2_Pos                    (23U)                             
+#define CAN_TSR_ABRQ2_Msk                    (0x1U << CAN_TSR_ABRQ2_Pos)       /*!< 0x00800000 */
+#define CAN_TSR_ABRQ2                        CAN_TSR_ABRQ2_Msk                 /*!< Abort Request for Mailbox 2 */
+#define CAN_TSR_CODE_Pos                     (24U)                             
+#define CAN_TSR_CODE_Msk                     (0x3U << CAN_TSR_CODE_Pos)        /*!< 0x03000000 */
+#define CAN_TSR_CODE                         CAN_TSR_CODE_Msk                  /*!< Mailbox Code */
+
+#define CAN_TSR_TME_Pos                      (26U)                             
+#define CAN_TSR_TME_Msk                      (0x7U << CAN_TSR_TME_Pos)         /*!< 0x1C000000 */
+#define CAN_TSR_TME                          CAN_TSR_TME_Msk                   /*!< TME[2:0] bits */
+#define CAN_TSR_TME0_Pos                     (26U)                             
+#define CAN_TSR_TME0_Msk                     (0x1U << CAN_TSR_TME0_Pos)        /*!< 0x04000000 */
+#define CAN_TSR_TME0                         CAN_TSR_TME0_Msk                  /*!< Transmit Mailbox 0 Empty */
+#define CAN_TSR_TME1_Pos                     (27U)                             
+#define CAN_TSR_TME1_Msk                     (0x1U << CAN_TSR_TME1_Pos)        /*!< 0x08000000 */
+#define CAN_TSR_TME1                         CAN_TSR_TME1_Msk                  /*!< Transmit Mailbox 1 Empty */
+#define CAN_TSR_TME2_Pos                     (28U)                             
+#define CAN_TSR_TME2_Msk                     (0x1U << CAN_TSR_TME2_Pos)        /*!< 0x10000000 */
+#define CAN_TSR_TME2                         CAN_TSR_TME2_Msk                  /*!< Transmit Mailbox 2 Empty */
+
+#define CAN_TSR_LOW_Pos                      (29U)                             
+#define CAN_TSR_LOW_Msk                      (0x7U << CAN_TSR_LOW_Pos)         /*!< 0xE0000000 */
+#define CAN_TSR_LOW                          CAN_TSR_LOW_Msk                   /*!< LOW[2:0] bits */
+#define CAN_TSR_LOW0_Pos                     (29U)                             
+#define CAN_TSR_LOW0_Msk                     (0x1U << CAN_TSR_LOW0_Pos)        /*!< 0x20000000 */
+#define CAN_TSR_LOW0                         CAN_TSR_LOW0_Msk                  /*!< Lowest Priority Flag for Mailbox 0 */
+#define CAN_TSR_LOW1_Pos                     (30U)                             
+#define CAN_TSR_LOW1_Msk                     (0x1U << CAN_TSR_LOW1_Pos)        /*!< 0x40000000 */
+#define CAN_TSR_LOW1                         CAN_TSR_LOW1_Msk                  /*!< Lowest Priority Flag for Mailbox 1 */
+#define CAN_TSR_LOW2_Pos                     (31U)                             
+#define CAN_TSR_LOW2_Msk                     (0x1U << CAN_TSR_LOW2_Pos)        /*!< 0x80000000 */
+#define CAN_TSR_LOW2                         CAN_TSR_LOW2_Msk                  /*!< Lowest Priority Flag for Mailbox 2 */
+
+/*******************  Bit definition for CAN_RF0R register  *******************/
+#define CAN_RF0R_FMP0_Pos                    (0U)                              
+#define CAN_RF0R_FMP0_Msk                    (0x3U << CAN_RF0R_FMP0_Pos)       /*!< 0x00000003 */
+#define CAN_RF0R_FMP0                        CAN_RF0R_FMP0_Msk                 /*!< FIFO 0 Message Pending */
+#define CAN_RF0R_FULL0_Pos                   (3U)                              
+#define CAN_RF0R_FULL0_Msk                   (0x1U << CAN_RF0R_FULL0_Pos)      /*!< 0x00000008 */
+#define CAN_RF0R_FULL0                       CAN_RF0R_FULL0_Msk                /*!< FIFO 0 Full */
+#define CAN_RF0R_FOVR0_Pos                   (4U)                              
+#define CAN_RF0R_FOVR0_Msk                   (0x1U << CAN_RF0R_FOVR0_Pos)      /*!< 0x00000010 */
+#define CAN_RF0R_FOVR0                       CAN_RF0R_FOVR0_Msk                /*!< FIFO 0 Overrun */
+#define CAN_RF0R_RFOM0_Pos                   (5U)                              
+#define CAN_RF0R_RFOM0_Msk                   (0x1U << CAN_RF0R_RFOM0_Pos)      /*!< 0x00000020 */
+#define CAN_RF0R_RFOM0                       CAN_RF0R_RFOM0_Msk                /*!< Release FIFO 0 Output Mailbox */
+
+/*******************  Bit definition for CAN_RF1R register  *******************/
+#define CAN_RF1R_FMP1_Pos                    (0U)                              
+#define CAN_RF1R_FMP1_Msk                    (0x3U << CAN_RF1R_FMP1_Pos)       /*!< 0x00000003 */
+#define CAN_RF1R_FMP1                        CAN_RF1R_FMP1_Msk                 /*!< FIFO 1 Message Pending */
+#define CAN_RF1R_FULL1_Pos                   (3U)                              
+#define CAN_RF1R_FULL1_Msk                   (0x1U << CAN_RF1R_FULL1_Pos)      /*!< 0x00000008 */
+#define CAN_RF1R_FULL1                       CAN_RF1R_FULL1_Msk                /*!< FIFO 1 Full */
+#define CAN_RF1R_FOVR1_Pos                   (4U)                              
+#define CAN_RF1R_FOVR1_Msk                   (0x1U << CAN_RF1R_FOVR1_Pos)      /*!< 0x00000010 */
+#define CAN_RF1R_FOVR1                       CAN_RF1R_FOVR1_Msk                /*!< FIFO 1 Overrun */
+#define CAN_RF1R_RFOM1_Pos                   (5U)                              
+#define CAN_RF1R_RFOM1_Msk                   (0x1U << CAN_RF1R_RFOM1_Pos)      /*!< 0x00000020 */
+#define CAN_RF1R_RFOM1                       CAN_RF1R_RFOM1_Msk                /*!< Release FIFO 1 Output Mailbox */
+
+/********************  Bit definition for CAN_IER register  *******************/
+#define CAN_IER_TMEIE_Pos                    (0U)                              
+#define CAN_IER_TMEIE_Msk                    (0x1U << CAN_IER_TMEIE_Pos)       /*!< 0x00000001 */
+#define CAN_IER_TMEIE                        CAN_IER_TMEIE_Msk                 /*!< Transmit Mailbox Empty Interrupt Enable */
+#define CAN_IER_FMPIE0_Pos                   (1U)                              
+#define CAN_IER_FMPIE0_Msk                   (0x1U << CAN_IER_FMPIE0_Pos)      /*!< 0x00000002 */
+#define CAN_IER_FMPIE0                       CAN_IER_FMPIE0_Msk                /*!< FIFO Message Pending Interrupt Enable */
+#define CAN_IER_FFIE0_Pos                    (2U)                              
+#define CAN_IER_FFIE0_Msk                    (0x1U << CAN_IER_FFIE0_Pos)       /*!< 0x00000004 */
+#define CAN_IER_FFIE0                        CAN_IER_FFIE0_Msk                 /*!< FIFO Full Interrupt Enable */
+#define CAN_IER_FOVIE0_Pos                   (3U)                              
+#define CAN_IER_FOVIE0_Msk                   (0x1U << CAN_IER_FOVIE0_Pos)      /*!< 0x00000008 */
+#define CAN_IER_FOVIE0                       CAN_IER_FOVIE0_Msk                /*!< FIFO Overrun Interrupt Enable */
+#define CAN_IER_FMPIE1_Pos                   (4U)                              
+#define CAN_IER_FMPIE1_Msk                   (0x1U << CAN_IER_FMPIE1_Pos)      /*!< 0x00000010 */
+#define CAN_IER_FMPIE1                       CAN_IER_FMPIE1_Msk                /*!< FIFO Message Pending Interrupt Enable */
+#define CAN_IER_FFIE1_Pos                    (5U)                              
+#define CAN_IER_FFIE1_Msk                    (0x1U << CAN_IER_FFIE1_Pos)       /*!< 0x00000020 */
+#define CAN_IER_FFIE1                        CAN_IER_FFIE1_Msk                 /*!< FIFO Full Interrupt Enable */
+#define CAN_IER_FOVIE1_Pos                   (6U)                              
+#define CAN_IER_FOVIE1_Msk                   (0x1U << CAN_IER_FOVIE1_Pos)      /*!< 0x00000040 */
+#define CAN_IER_FOVIE1                       CAN_IER_FOVIE1_Msk                /*!< FIFO Overrun Interrupt Enable */
+#define CAN_IER_EWGIE_Pos                    (8U)                              
+#define CAN_IER_EWGIE_Msk                    (0x1U << CAN_IER_EWGIE_Pos)       /*!< 0x00000100 */
+#define CAN_IER_EWGIE                        CAN_IER_EWGIE_Msk                 /*!< Error Warning Interrupt Enable */
+#define CAN_IER_EPVIE_Pos                    (9U)                              
+#define CAN_IER_EPVIE_Msk                    (0x1U << CAN_IER_EPVIE_Pos)       /*!< 0x00000200 */
+#define CAN_IER_EPVIE                        CAN_IER_EPVIE_Msk                 /*!< Error Passive Interrupt Enable */
+#define CAN_IER_BOFIE_Pos                    (10U)                             
+#define CAN_IER_BOFIE_Msk                    (0x1U << CAN_IER_BOFIE_Pos)       /*!< 0x00000400 */
+#define CAN_IER_BOFIE                        CAN_IER_BOFIE_Msk                 /*!< Bus-Off Interrupt Enable */
+#define CAN_IER_LECIE_Pos                    (11U)                             
+#define CAN_IER_LECIE_Msk                    (0x1U << CAN_IER_LECIE_Pos)       /*!< 0x00000800 */
+#define CAN_IER_LECIE                        CAN_IER_LECIE_Msk                 /*!< Last Error Code Interrupt Enable */
+#define CAN_IER_ERRIE_Pos                    (15U)                             
+#define CAN_IER_ERRIE_Msk                    (0x1U << CAN_IER_ERRIE_Pos)       /*!< 0x00008000 */
+#define CAN_IER_ERRIE                        CAN_IER_ERRIE_Msk                 /*!< Error Interrupt Enable */
+#define CAN_IER_WKUIE_Pos                    (16U)                             
+#define CAN_IER_WKUIE_Msk                    (0x1U << CAN_IER_WKUIE_Pos)       /*!< 0x00010000 */
+#define CAN_IER_WKUIE                        CAN_IER_WKUIE_Msk                 /*!< Wakeup Interrupt Enable */
+#define CAN_IER_SLKIE_Pos                    (17U)                             
+#define CAN_IER_SLKIE_Msk                    (0x1U << CAN_IER_SLKIE_Pos)       /*!< 0x00020000 */
+#define CAN_IER_SLKIE                        CAN_IER_SLKIE_Msk                 /*!< Sleep Interrupt Enable */
+
+/********************  Bit definition for CAN_ESR register  *******************/
+#define CAN_ESR_EWGF_Pos                     (0U)                              
+#define CAN_ESR_EWGF_Msk                     (0x1U << CAN_ESR_EWGF_Pos)        /*!< 0x00000001 */
+#define CAN_ESR_EWGF                         CAN_ESR_EWGF_Msk                  /*!< Error Warning Flag */
+#define CAN_ESR_EPVF_Pos                     (1U)                              
+#define CAN_ESR_EPVF_Msk                     (0x1U << CAN_ESR_EPVF_Pos)        /*!< 0x00000002 */
+#define CAN_ESR_EPVF                         CAN_ESR_EPVF_Msk                  /*!< Error Passive Flag */
+#define CAN_ESR_BOFF_Pos                     (2U)                              
+#define CAN_ESR_BOFF_Msk                     (0x1U << CAN_ESR_BOFF_Pos)        /*!< 0x00000004 */
+#define CAN_ESR_BOFF                         CAN_ESR_BOFF_Msk                  /*!< Bus-Off Flag */
+
+#define CAN_ESR_LEC_Pos                      (4U)                              
+#define CAN_ESR_LEC_Msk                      (0x7U << CAN_ESR_LEC_Pos)         /*!< 0x00000070 */
+#define CAN_ESR_LEC                          CAN_ESR_LEC_Msk                   /*!< LEC[2:0] bits (Last Error Code) */
+#define CAN_ESR_LEC_0                        (0x1U << CAN_ESR_LEC_Pos)         /*!< 0x00000010 */
+#define CAN_ESR_LEC_1                        (0x2U << CAN_ESR_LEC_Pos)         /*!< 0x00000020 */
+#define CAN_ESR_LEC_2                        (0x4U << CAN_ESR_LEC_Pos)         /*!< 0x00000040 */
+
+#define CAN_ESR_TEC_Pos                      (16U)                             
+#define CAN_ESR_TEC_Msk                      (0xFFU << CAN_ESR_TEC_Pos)        /*!< 0x00FF0000 */
+#define CAN_ESR_TEC                          CAN_ESR_TEC_Msk                   /*!< Least significant byte of the 9-bit Transmit Error Counter */
+#define CAN_ESR_REC_Pos                      (24U)                             
+#define CAN_ESR_REC_Msk                      (0xFFU << CAN_ESR_REC_Pos)        /*!< 0xFF000000 */
+#define CAN_ESR_REC                          CAN_ESR_REC_Msk                   /*!< Receive Error Counter */
+
+/*******************  Bit definition for CAN_BTR register  ********************/
+#define CAN_BTR_BRP_Pos                      (0U)                              
+#define CAN_BTR_BRP_Msk                      (0x3FFU << CAN_BTR_BRP_Pos)       /*!< 0x000003FF */
+#define CAN_BTR_BRP                          CAN_BTR_BRP_Msk                   /*!<Baud Rate Prescaler */
+#define CAN_BTR_TS1_Pos                      (16U)                             
+#define CAN_BTR_TS1_Msk                      (0xFU << CAN_BTR_TS1_Pos)         /*!< 0x000F0000 */
+#define CAN_BTR_TS1                          CAN_BTR_TS1_Msk                   /*!<Time Segment 1 */
+#define CAN_BTR_TS1_0                        (0x1U << CAN_BTR_TS1_Pos)         /*!< 0x00010000 */
+#define CAN_BTR_TS1_1                        (0x2U << CAN_BTR_TS1_Pos)         /*!< 0x00020000 */
+#define CAN_BTR_TS1_2                        (0x4U << CAN_BTR_TS1_Pos)         /*!< 0x00040000 */
+#define CAN_BTR_TS1_3                        (0x8U << CAN_BTR_TS1_Pos)         /*!< 0x00080000 */
+#define CAN_BTR_TS2_Pos                      (20U)                             
+#define CAN_BTR_TS2_Msk                      (0x7U << CAN_BTR_TS2_Pos)         /*!< 0x00700000 */
+#define CAN_BTR_TS2                          CAN_BTR_TS2_Msk                   /*!<Time Segment 2 */
+#define CAN_BTR_TS2_0                        (0x1U << CAN_BTR_TS2_Pos)         /*!< 0x00100000 */
+#define CAN_BTR_TS2_1                        (0x2U << CAN_BTR_TS2_Pos)         /*!< 0x00200000 */
+#define CAN_BTR_TS2_2                        (0x4U << CAN_BTR_TS2_Pos)         /*!< 0x00400000 */
+#define CAN_BTR_SJW_Pos                      (24U)                             
+#define CAN_BTR_SJW_Msk                      (0x3U << CAN_BTR_SJW_Pos)         /*!< 0x03000000 */
+#define CAN_BTR_SJW                          CAN_BTR_SJW_Msk                   /*!<Resynchronization Jump Width */
+#define CAN_BTR_SJW_0                        (0x1U << CAN_BTR_SJW_Pos)         /*!< 0x01000000 */
+#define CAN_BTR_SJW_1                        (0x2U << CAN_BTR_SJW_Pos)         /*!< 0x02000000 */
+#define CAN_BTR_LBKM_Pos                     (30U)                             
+#define CAN_BTR_LBKM_Msk                     (0x1U << CAN_BTR_LBKM_Pos)        /*!< 0x40000000 */
+#define CAN_BTR_LBKM                         CAN_BTR_LBKM_Msk                  /*!<Loop Back Mode (Debug) */
+#define CAN_BTR_SILM_Pos                     (31U)                             
+#define CAN_BTR_SILM_Msk                     (0x1U << CAN_BTR_SILM_Pos)        /*!< 0x80000000 */
+#define CAN_BTR_SILM                         CAN_BTR_SILM_Msk                  /*!<Silent Mode */
+
+/*!< Mailbox registers */
+/******************  Bit definition for CAN_TI0R register  ********************/
+#define CAN_TI0R_TXRQ_Pos                    (0U)                              
+#define CAN_TI0R_TXRQ_Msk                    (0x1U << CAN_TI0R_TXRQ_Pos)       /*!< 0x00000001 */
+#define CAN_TI0R_TXRQ                        CAN_TI0R_TXRQ_Msk                 /*!< Transmit Mailbox Request */
+#define CAN_TI0R_RTR_Pos                     (1U)                              
+#define CAN_TI0R_RTR_Msk                     (0x1U << CAN_TI0R_RTR_Pos)        /*!< 0x00000002 */
+#define CAN_TI0R_RTR                         CAN_TI0R_RTR_Msk                  /*!< Remote Transmission Request */
+#define CAN_TI0R_IDE_Pos                     (2U)                              
+#define CAN_TI0R_IDE_Msk                     (0x1U << CAN_TI0R_IDE_Pos)        /*!< 0x00000004 */
+#define CAN_TI0R_IDE                         CAN_TI0R_IDE_Msk                  /*!< Identifier Extension */
+#define CAN_TI0R_EXID_Pos                    (3U)                              
+#define CAN_TI0R_EXID_Msk                    (0x3FFFFU << CAN_TI0R_EXID_Pos)   /*!< 0x001FFFF8 */
+#define CAN_TI0R_EXID                        CAN_TI0R_EXID_Msk                 /*!< Extended Identifier */
+#define CAN_TI0R_STID_Pos                    (21U)                             
+#define CAN_TI0R_STID_Msk                    (0x7FFU << CAN_TI0R_STID_Pos)     /*!< 0xFFE00000 */
+#define CAN_TI0R_STID                        CAN_TI0R_STID_Msk                 /*!< Standard Identifier or Extended Identifier */
+
+/******************  Bit definition for CAN_TDT0R register  *******************/
+#define CAN_TDT0R_DLC_Pos                    (0U)                              
+#define CAN_TDT0R_DLC_Msk                    (0xFU << CAN_TDT0R_DLC_Pos)       /*!< 0x0000000F */
+#define CAN_TDT0R_DLC                        CAN_TDT0R_DLC_Msk                 /*!< Data Length Code */
+#define CAN_TDT0R_TGT_Pos                    (8U)                              
+#define CAN_TDT0R_TGT_Msk                    (0x1U << CAN_TDT0R_TGT_Pos)       /*!< 0x00000100 */
+#define CAN_TDT0R_TGT                        CAN_TDT0R_TGT_Msk                 /*!< Transmit Global Time */
+#define CAN_TDT0R_TIME_Pos                   (16U)                             
+#define CAN_TDT0R_TIME_Msk                   (0xFFFFU << CAN_TDT0R_TIME_Pos)   /*!< 0xFFFF0000 */
+#define CAN_TDT0R_TIME                       CAN_TDT0R_TIME_Msk                /*!< Message Time Stamp */
+
+/******************  Bit definition for CAN_TDL0R register  *******************/
+#define CAN_TDL0R_DATA0_Pos                  (0U)                              
+#define CAN_TDL0R_DATA0_Msk                  (0xFFU << CAN_TDL0R_DATA0_Pos)    /*!< 0x000000FF */
+#define CAN_TDL0R_DATA0                      CAN_TDL0R_DATA0_Msk               /*!< Data byte 0 */
+#define CAN_TDL0R_DATA1_Pos                  (8U)                              
+#define CAN_TDL0R_DATA1_Msk                  (0xFFU << CAN_TDL0R_DATA1_Pos)    /*!< 0x0000FF00 */
+#define CAN_TDL0R_DATA1                      CAN_TDL0R_DATA1_Msk               /*!< Data byte 1 */
+#define CAN_TDL0R_DATA2_Pos                  (16U)                             
+#define CAN_TDL0R_DATA2_Msk                  (0xFFU << CAN_TDL0R_DATA2_Pos)    /*!< 0x00FF0000 */
+#define CAN_TDL0R_DATA2                      CAN_TDL0R_DATA2_Msk               /*!< Data byte 2 */
+#define CAN_TDL0R_DATA3_Pos                  (24U)                             
+#define CAN_TDL0R_DATA3_Msk                  (0xFFU << CAN_TDL0R_DATA3_Pos)    /*!< 0xFF000000 */
+#define CAN_TDL0R_DATA3                      CAN_TDL0R_DATA3_Msk               /*!< Data byte 3 */
+
+/******************  Bit definition for CAN_TDH0R register  *******************/
+#define CAN_TDH0R_DATA4_Pos                  (0U)                              
+#define CAN_TDH0R_DATA4_Msk                  (0xFFU << CAN_TDH0R_DATA4_Pos)    /*!< 0x000000FF */
+#define CAN_TDH0R_DATA4                      CAN_TDH0R_DATA4_Msk               /*!< Data byte 4 */
+#define CAN_TDH0R_DATA5_Pos                  (8U)                              
+#define CAN_TDH0R_DATA5_Msk                  (0xFFU << CAN_TDH0R_DATA5_Pos)    /*!< 0x0000FF00 */
+#define CAN_TDH0R_DATA5                      CAN_TDH0R_DATA5_Msk               /*!< Data byte 5 */
+#define CAN_TDH0R_DATA6_Pos                  (16U)                             
+#define CAN_TDH0R_DATA6_Msk                  (0xFFU << CAN_TDH0R_DATA6_Pos)    /*!< 0x00FF0000 */
+#define CAN_TDH0R_DATA6                      CAN_TDH0R_DATA6_Msk               /*!< Data byte 6 */
+#define CAN_TDH0R_DATA7_Pos                  (24U)                             
+#define CAN_TDH0R_DATA7_Msk                  (0xFFU << CAN_TDH0R_DATA7_Pos)    /*!< 0xFF000000 */
+#define CAN_TDH0R_DATA7                      CAN_TDH0R_DATA7_Msk               /*!< Data byte 7 */
+
+/*******************  Bit definition for CAN_TI1R register  *******************/
+#define CAN_TI1R_TXRQ_Pos                    (0U)                              
+#define CAN_TI1R_TXRQ_Msk                    (0x1U << CAN_TI1R_TXRQ_Pos)       /*!< 0x00000001 */
+#define CAN_TI1R_TXRQ                        CAN_TI1R_TXRQ_Msk                 /*!< Transmit Mailbox Request */
+#define CAN_TI1R_RTR_Pos                     (1U)                              
+#define CAN_TI1R_RTR_Msk                     (0x1U << CAN_TI1R_RTR_Pos)        /*!< 0x00000002 */
+#define CAN_TI1R_RTR                         CAN_TI1R_RTR_Msk                  /*!< Remote Transmission Request */
+#define CAN_TI1R_IDE_Pos                     (2U)                              
+#define CAN_TI1R_IDE_Msk                     (0x1U << CAN_TI1R_IDE_Pos)        /*!< 0x00000004 */
+#define CAN_TI1R_IDE                         CAN_TI1R_IDE_Msk                  /*!< Identifier Extension */
+#define CAN_TI1R_EXID_Pos                    (3U)                              
+#define CAN_TI1R_EXID_Msk                    (0x3FFFFU << CAN_TI1R_EXID_Pos)   /*!< 0x001FFFF8 */
+#define CAN_TI1R_EXID                        CAN_TI1R_EXID_Msk                 /*!< Extended Identifier */
+#define CAN_TI1R_STID_Pos                    (21U)                             
+#define CAN_TI1R_STID_Msk                    (0x7FFU << CAN_TI1R_STID_Pos)     /*!< 0xFFE00000 */
+#define CAN_TI1R_STID                        CAN_TI1R_STID_Msk                 /*!< Standard Identifier or Extended Identifier */
+
+/*******************  Bit definition for CAN_TDT1R register  ******************/
+#define CAN_TDT1R_DLC_Pos                    (0U)                              
+#define CAN_TDT1R_DLC_Msk                    (0xFU << CAN_TDT1R_DLC_Pos)       /*!< 0x0000000F */
+#define CAN_TDT1R_DLC                        CAN_TDT1R_DLC_Msk                 /*!< Data Length Code */
+#define CAN_TDT1R_TGT_Pos                    (8U)                              
+#define CAN_TDT1R_TGT_Msk                    (0x1U << CAN_TDT1R_TGT_Pos)       /*!< 0x00000100 */
+#define CAN_TDT1R_TGT                        CAN_TDT1R_TGT_Msk                 /*!< Transmit Global Time */
+#define CAN_TDT1R_TIME_Pos                   (16U)                             
+#define CAN_TDT1R_TIME_Msk                   (0xFFFFU << CAN_TDT1R_TIME_Pos)   /*!< 0xFFFF0000 */
+#define CAN_TDT1R_TIME                       CAN_TDT1R_TIME_Msk                /*!< Message Time Stamp */
+
+/*******************  Bit definition for CAN_TDL1R register  ******************/
+#define CAN_TDL1R_DATA0_Pos                  (0U)                              
+#define CAN_TDL1R_DATA0_Msk                  (0xFFU << CAN_TDL1R_DATA0_Pos)    /*!< 0x000000FF */
+#define CAN_TDL1R_DATA0                      CAN_TDL1R_DATA0_Msk               /*!< Data byte 0 */
+#define CAN_TDL1R_DATA1_Pos                  (8U)                              
+#define CAN_TDL1R_DATA1_Msk                  (0xFFU << CAN_TDL1R_DATA1_Pos)    /*!< 0x0000FF00 */
+#define CAN_TDL1R_DATA1                      CAN_TDL1R_DATA1_Msk               /*!< Data byte 1 */
+#define CAN_TDL1R_DATA2_Pos                  (16U)                             
+#define CAN_TDL1R_DATA2_Msk                  (0xFFU << CAN_TDL1R_DATA2_Pos)    /*!< 0x00FF0000 */
+#define CAN_TDL1R_DATA2                      CAN_TDL1R_DATA2_Msk               /*!< Data byte 2 */
+#define CAN_TDL1R_DATA3_Pos                  (24U)                             
+#define CAN_TDL1R_DATA3_Msk                  (0xFFU << CAN_TDL1R_DATA3_Pos)    /*!< 0xFF000000 */
+#define CAN_TDL1R_DATA3                      CAN_TDL1R_DATA3_Msk               /*!< Data byte 3 */
+
+/*******************  Bit definition for CAN_TDH1R register  ******************/
+#define CAN_TDH1R_DATA4_Pos                  (0U)                              
+#define CAN_TDH1R_DATA4_Msk                  (0xFFU << CAN_TDH1R_DATA4_Pos)    /*!< 0x000000FF */
+#define CAN_TDH1R_DATA4                      CAN_TDH1R_DATA4_Msk               /*!< Data byte 4 */
+#define CAN_TDH1R_DATA5_Pos                  (8U)                              
+#define CAN_TDH1R_DATA5_Msk                  (0xFFU << CAN_TDH1R_DATA5_Pos)    /*!< 0x0000FF00 */
+#define CAN_TDH1R_DATA5                      CAN_TDH1R_DATA5_Msk               /*!< Data byte 5 */
+#define CAN_TDH1R_DATA6_Pos                  (16U)                             
+#define CAN_TDH1R_DATA6_Msk                  (0xFFU << CAN_TDH1R_DATA6_Pos)    /*!< 0x00FF0000 */
+#define CAN_TDH1R_DATA6                      CAN_TDH1R_DATA6_Msk               /*!< Data byte 6 */
+#define CAN_TDH1R_DATA7_Pos                  (24U)                             
+#define CAN_TDH1R_DATA7_Msk                  (0xFFU << CAN_TDH1R_DATA7_Pos)    /*!< 0xFF000000 */
+#define CAN_TDH1R_DATA7                      CAN_TDH1R_DATA7_Msk               /*!< Data byte 7 */
+
+/*******************  Bit definition for CAN_TI2R register  *******************/
+#define CAN_TI2R_TXRQ_Pos                    (0U)                              
+#define CAN_TI2R_TXRQ_Msk                    (0x1U << CAN_TI2R_TXRQ_Pos)       /*!< 0x00000001 */
+#define CAN_TI2R_TXRQ                        CAN_TI2R_TXRQ_Msk                 /*!< Transmit Mailbox Request */
+#define CAN_TI2R_RTR_Pos                     (1U)                              
+#define CAN_TI2R_RTR_Msk                     (0x1U << CAN_TI2R_RTR_Pos)        /*!< 0x00000002 */
+#define CAN_TI2R_RTR                         CAN_TI2R_RTR_Msk                  /*!< Remote Transmission Request */
+#define CAN_TI2R_IDE_Pos                     (2U)                              
+#define CAN_TI2R_IDE_Msk                     (0x1U << CAN_TI2R_IDE_Pos)        /*!< 0x00000004 */
+#define CAN_TI2R_IDE                         CAN_TI2R_IDE_Msk                  /*!< Identifier Extension */
+#define CAN_TI2R_EXID_Pos                    (3U)                              
+#define CAN_TI2R_EXID_Msk                    (0x3FFFFU << CAN_TI2R_EXID_Pos)   /*!< 0x001FFFF8 */
+#define CAN_TI2R_EXID                        CAN_TI2R_EXID_Msk                 /*!< Extended identifier */
+#define CAN_TI2R_STID_Pos                    (21U)                             
+#define CAN_TI2R_STID_Msk                    (0x7FFU << CAN_TI2R_STID_Pos)     /*!< 0xFFE00000 */
+#define CAN_TI2R_STID                        CAN_TI2R_STID_Msk                 /*!< Standard Identifier or Extended Identifier */
+
+/*******************  Bit definition for CAN_TDT2R register  ******************/  
+#define CAN_TDT2R_DLC_Pos                    (0U)                              
+#define CAN_TDT2R_DLC_Msk                    (0xFU << CAN_TDT2R_DLC_Pos)       /*!< 0x0000000F */
+#define CAN_TDT2R_DLC                        CAN_TDT2R_DLC_Msk                 /*!< Data Length Code */
+#define CAN_TDT2R_TGT_Pos                    (8U)                              
+#define CAN_TDT2R_TGT_Msk                    (0x1U << CAN_TDT2R_TGT_Pos)       /*!< 0x00000100 */
+#define CAN_TDT2R_TGT                        CAN_TDT2R_TGT_Msk                 /*!< Transmit Global Time */
+#define CAN_TDT2R_TIME_Pos                   (16U)                             
+#define CAN_TDT2R_TIME_Msk                   (0xFFFFU << CAN_TDT2R_TIME_Pos)   /*!< 0xFFFF0000 */
+#define CAN_TDT2R_TIME                       CAN_TDT2R_TIME_Msk                /*!< Message Time Stamp */
+
+/*******************  Bit definition for CAN_TDL2R register  ******************/
+#define CAN_TDL2R_DATA0_Pos                  (0U)                              
+#define CAN_TDL2R_DATA0_Msk                  (0xFFU << CAN_TDL2R_DATA0_Pos)    /*!< 0x000000FF */
+#define CAN_TDL2R_DATA0                      CAN_TDL2R_DATA0_Msk               /*!< Data byte 0 */
+#define CAN_TDL2R_DATA1_Pos                  (8U)                              
+#define CAN_TDL2R_DATA1_Msk                  (0xFFU << CAN_TDL2R_DATA1_Pos)    /*!< 0x0000FF00 */
+#define CAN_TDL2R_DATA1                      CAN_TDL2R_DATA1_Msk               /*!< Data byte 1 */
+#define CAN_TDL2R_DATA2_Pos                  (16U)                             
+#define CAN_TDL2R_DATA2_Msk                  (0xFFU << CAN_TDL2R_DATA2_Pos)    /*!< 0x00FF0000 */
+#define CAN_TDL2R_DATA2                      CAN_TDL2R_DATA2_Msk               /*!< Data byte 2 */
+#define CAN_TDL2R_DATA3_Pos                  (24U)                             
+#define CAN_TDL2R_DATA3_Msk                  (0xFFU << CAN_TDL2R_DATA3_Pos)    /*!< 0xFF000000 */
+#define CAN_TDL2R_DATA3                      CAN_TDL2R_DATA3_Msk               /*!< Data byte 3 */
+
+/*******************  Bit definition for CAN_TDH2R register  ******************/
+#define CAN_TDH2R_DATA4_Pos                  (0U)                              
+#define CAN_TDH2R_DATA4_Msk                  (0xFFU << CAN_TDH2R_DATA4_Pos)    /*!< 0x000000FF */
+#define CAN_TDH2R_DATA4                      CAN_TDH2R_DATA4_Msk               /*!< Data byte 4 */
+#define CAN_TDH2R_DATA5_Pos                  (8U)                              
+#define CAN_TDH2R_DATA5_Msk                  (0xFFU << CAN_TDH2R_DATA5_Pos)    /*!< 0x0000FF00 */
+#define CAN_TDH2R_DATA5                      CAN_TDH2R_DATA5_Msk               /*!< Data byte 5 */
+#define CAN_TDH2R_DATA6_Pos                  (16U)                             
+#define CAN_TDH2R_DATA6_Msk                  (0xFFU << CAN_TDH2R_DATA6_Pos)    /*!< 0x00FF0000 */
+#define CAN_TDH2R_DATA6                      CAN_TDH2R_DATA6_Msk               /*!< Data byte 6 */
+#define CAN_TDH2R_DATA7_Pos                  (24U)                             
+#define CAN_TDH2R_DATA7_Msk                  (0xFFU << CAN_TDH2R_DATA7_Pos)    /*!< 0xFF000000 */
+#define CAN_TDH2R_DATA7                      CAN_TDH2R_DATA7_Msk               /*!< Data byte 7 */
+
+/*******************  Bit definition for CAN_RI0R register  *******************/
+#define CAN_RI0R_RTR_Pos                     (1U)                              
+#define CAN_RI0R_RTR_Msk                     (0x1U << CAN_RI0R_RTR_Pos)        /*!< 0x00000002 */
+#define CAN_RI0R_RTR                         CAN_RI0R_RTR_Msk                  /*!< Remote Transmission Request */
+#define CAN_RI0R_IDE_Pos                     (2U)                              
+#define CAN_RI0R_IDE_Msk                     (0x1U << CAN_RI0R_IDE_Pos)        /*!< 0x00000004 */
+#define CAN_RI0R_IDE                         CAN_RI0R_IDE_Msk                  /*!< Identifier Extension */
+#define CAN_RI0R_EXID_Pos                    (3U)                              
+#define CAN_RI0R_EXID_Msk                    (0x3FFFFU << CAN_RI0R_EXID_Pos)   /*!< 0x001FFFF8 */
+#define CAN_RI0R_EXID                        CAN_RI0R_EXID_Msk                 /*!< Extended Identifier */
+#define CAN_RI0R_STID_Pos                    (21U)                             
+#define CAN_RI0R_STID_Msk                    (0x7FFU << CAN_RI0R_STID_Pos)     /*!< 0xFFE00000 */
+#define CAN_RI0R_STID                        CAN_RI0R_STID_Msk                 /*!< Standard Identifier or Extended Identifier */
+
+/*******************  Bit definition for CAN_RDT0R register  ******************/
+#define CAN_RDT0R_DLC_Pos                    (0U)                              
+#define CAN_RDT0R_DLC_Msk                    (0xFU << CAN_RDT0R_DLC_Pos)       /*!< 0x0000000F */
+#define CAN_RDT0R_DLC                        CAN_RDT0R_DLC_Msk                 /*!< Data Length Code */
+#define CAN_RDT0R_FMI_Pos                    (8U)                              
+#define CAN_RDT0R_FMI_Msk                    (0xFFU << CAN_RDT0R_FMI_Pos)      /*!< 0x0000FF00 */
+#define CAN_RDT0R_FMI                        CAN_RDT0R_FMI_Msk                 /*!< Filter Match Index */
+#define CAN_RDT0R_TIME_Pos                   (16U)                             
+#define CAN_RDT0R_TIME_Msk                   (0xFFFFU << CAN_RDT0R_TIME_Pos)   /*!< 0xFFFF0000 */
+#define CAN_RDT0R_TIME                       CAN_RDT0R_TIME_Msk                /*!< Message Time Stamp */
+
+/*******************  Bit definition for CAN_RDL0R register  ******************/
+#define CAN_RDL0R_DATA0_Pos                  (0U)                              
+#define CAN_RDL0R_DATA0_Msk                  (0xFFU << CAN_RDL0R_DATA0_Pos)    /*!< 0x000000FF */
+#define CAN_RDL0R_DATA0                      CAN_RDL0R_DATA0_Msk               /*!< Data byte 0 */
+#define CAN_RDL0R_DATA1_Pos                  (8U)                              
+#define CAN_RDL0R_DATA1_Msk                  (0xFFU << CAN_RDL0R_DATA1_Pos)    /*!< 0x0000FF00 */
+#define CAN_RDL0R_DATA1                      CAN_RDL0R_DATA1_Msk               /*!< Data byte 1 */
+#define CAN_RDL0R_DATA2_Pos                  (16U)                             
+#define CAN_RDL0R_DATA2_Msk                  (0xFFU << CAN_RDL0R_DATA2_Pos)    /*!< 0x00FF0000 */
+#define CAN_RDL0R_DATA2                      CAN_RDL0R_DATA2_Msk               /*!< Data byte 2 */
+#define CAN_RDL0R_DATA3_Pos                  (24U)                             
+#define CAN_RDL0R_DATA3_Msk                  (0xFFU << CAN_RDL0R_DATA3_Pos)    /*!< 0xFF000000 */
+#define CAN_RDL0R_DATA3                      CAN_RDL0R_DATA3_Msk               /*!< Data byte 3 */
+
+/*******************  Bit definition for CAN_RDH0R register  ******************/
+#define CAN_RDH0R_DATA4_Pos                  (0U)                              
+#define CAN_RDH0R_DATA4_Msk                  (0xFFU << CAN_RDH0R_DATA4_Pos)    /*!< 0x000000FF */
+#define CAN_RDH0R_DATA4                      CAN_RDH0R_DATA4_Msk               /*!< Data byte 4 */
+#define CAN_RDH0R_DATA5_Pos                  (8U)                              
+#define CAN_RDH0R_DATA5_Msk                  (0xFFU << CAN_RDH0R_DATA5_Pos)    /*!< 0x0000FF00 */
+#define CAN_RDH0R_DATA5                      CAN_RDH0R_DATA5_Msk               /*!< Data byte 5 */
+#define CAN_RDH0R_DATA6_Pos                  (16U)                             
+#define CAN_RDH0R_DATA6_Msk                  (0xFFU << CAN_RDH0R_DATA6_Pos)    /*!< 0x00FF0000 */
+#define CAN_RDH0R_DATA6                      CAN_RDH0R_DATA6_Msk               /*!< Data byte 6 */
+#define CAN_RDH0R_DATA7_Pos                  (24U)                             
+#define CAN_RDH0R_DATA7_Msk                  (0xFFU << CAN_RDH0R_DATA7_Pos)    /*!< 0xFF000000 */
+#define CAN_RDH0R_DATA7                      CAN_RDH0R_DATA7_Msk               /*!< Data byte 7 */
+
+/*******************  Bit definition for CAN_RI1R register  *******************/
+#define CAN_RI1R_RTR_Pos                     (1U)                              
+#define CAN_RI1R_RTR_Msk                     (0x1U << CAN_RI1R_RTR_Pos)        /*!< 0x00000002 */
+#define CAN_RI1R_RTR                         CAN_RI1R_RTR_Msk                  /*!< Remote Transmission Request */
+#define CAN_RI1R_IDE_Pos                     (2U)                              
+#define CAN_RI1R_IDE_Msk                     (0x1U << CAN_RI1R_IDE_Pos)        /*!< 0x00000004 */
+#define CAN_RI1R_IDE                         CAN_RI1R_IDE_Msk                  /*!< Identifier Extension */
+#define CAN_RI1R_EXID_Pos                    (3U)                              
+#define CAN_RI1R_EXID_Msk                    (0x3FFFFU << CAN_RI1R_EXID_Pos)   /*!< 0x001FFFF8 */
+#define CAN_RI1R_EXID                        CAN_RI1R_EXID_Msk                 /*!< Extended identifier */
+#define CAN_RI1R_STID_Pos                    (21U)                             
+#define CAN_RI1R_STID_Msk                    (0x7FFU << CAN_RI1R_STID_Pos)     /*!< 0xFFE00000 */
+#define CAN_RI1R_STID                        CAN_RI1R_STID_Msk                 /*!< Standard Identifier or Extended Identifier */
+
+/*******************  Bit definition for CAN_RDT1R register  ******************/
+#define CAN_RDT1R_DLC_Pos                    (0U)                              
+#define CAN_RDT1R_DLC_Msk                    (0xFU << CAN_RDT1R_DLC_Pos)       /*!< 0x0000000F */
+#define CAN_RDT1R_DLC                        CAN_RDT1R_DLC_Msk                 /*!< Data Length Code */
+#define CAN_RDT1R_FMI_Pos                    (8U)                              
+#define CAN_RDT1R_FMI_Msk                    (0xFFU << CAN_RDT1R_FMI_Pos)      /*!< 0x0000FF00 */
+#define CAN_RDT1R_FMI                        CAN_RDT1R_FMI_Msk                 /*!< Filter Match Index */
+#define CAN_RDT1R_TIME_Pos                   (16U)                             
+#define CAN_RDT1R_TIME_Msk                   (0xFFFFU << CAN_RDT1R_TIME_Pos)   /*!< 0xFFFF0000 */
+#define CAN_RDT1R_TIME                       CAN_RDT1R_TIME_Msk                /*!< Message Time Stamp */
+
+/*******************  Bit definition for CAN_RDL1R register  ******************/
+#define CAN_RDL1R_DATA0_Pos                  (0U)                              
+#define CAN_RDL1R_DATA0_Msk                  (0xFFU << CAN_RDL1R_DATA0_Pos)    /*!< 0x000000FF */
+#define CAN_RDL1R_DATA0                      CAN_RDL1R_DATA0_Msk               /*!< Data byte 0 */
+#define CAN_RDL1R_DATA1_Pos                  (8U)                              
+#define CAN_RDL1R_DATA1_Msk                  (0xFFU << CAN_RDL1R_DATA1_Pos)    /*!< 0x0000FF00 */
+#define CAN_RDL1R_DATA1                      CAN_RDL1R_DATA1_Msk               /*!< Data byte 1 */
+#define CAN_RDL1R_DATA2_Pos                  (16U)                             
+#define CAN_RDL1R_DATA2_Msk                  (0xFFU << CAN_RDL1R_DATA2_Pos)    /*!< 0x00FF0000 */
+#define CAN_RDL1R_DATA2                      CAN_RDL1R_DATA2_Msk               /*!< Data byte 2 */
+#define CAN_RDL1R_DATA3_Pos                  (24U)                             
+#define CAN_RDL1R_DATA3_Msk                  (0xFFU << CAN_RDL1R_DATA3_Pos)    /*!< 0xFF000000 */
+#define CAN_RDL1R_DATA3                      CAN_RDL1R_DATA3_Msk               /*!< Data byte 3 */
+
+/*******************  Bit definition for CAN_RDH1R register  ******************/
+#define CAN_RDH1R_DATA4_Pos                  (0U)                              
+#define CAN_RDH1R_DATA4_Msk                  (0xFFU << CAN_RDH1R_DATA4_Pos)    /*!< 0x000000FF */
+#define CAN_RDH1R_DATA4                      CAN_RDH1R_DATA4_Msk               /*!< Data byte 4 */
+#define CAN_RDH1R_DATA5_Pos                  (8U)                              
+#define CAN_RDH1R_DATA5_Msk                  (0xFFU << CAN_RDH1R_DATA5_Pos)    /*!< 0x0000FF00 */
+#define CAN_RDH1R_DATA5                      CAN_RDH1R_DATA5_Msk               /*!< Data byte 5 */
+#define CAN_RDH1R_DATA6_Pos                  (16U)                             
+#define CAN_RDH1R_DATA6_Msk                  (0xFFU << CAN_RDH1R_DATA6_Pos)    /*!< 0x00FF0000 */
+#define CAN_RDH1R_DATA6                      CAN_RDH1R_DATA6_Msk               /*!< Data byte 6 */
+#define CAN_RDH1R_DATA7_Pos                  (24U)                             
+#define CAN_RDH1R_DATA7_Msk                  (0xFFU << CAN_RDH1R_DATA7_Pos)    /*!< 0xFF000000 */
+#define CAN_RDH1R_DATA7                      CAN_RDH1R_DATA7_Msk               /*!< Data byte 7 */
+
+/*!< CAN filter registers */
+/*******************  Bit definition for CAN_FMR register  ********************/
+#define CAN_FMR_FINIT_Pos                    (0U)                              
+#define CAN_FMR_FINIT_Msk                    (0x1U << CAN_FMR_FINIT_Pos)       /*!< 0x00000001 */
+#define CAN_FMR_FINIT                        CAN_FMR_FINIT_Msk                 /*!< Filter Init Mode */
+#define CAN_FMR_CAN2SB_Pos                   (8U)                              
+#define CAN_FMR_CAN2SB_Msk                   (0x3FU << CAN_FMR_CAN2SB_Pos)     /*!< 0x00003F00 */
+#define CAN_FMR_CAN2SB                       CAN_FMR_CAN2SB_Msk                /*!< CAN2 start bank */
+
+/*******************  Bit definition for CAN_FM1R register  *******************/
+#define CAN_FM1R_FBM_Pos                     (0U)                              
+#define CAN_FM1R_FBM_Msk                     (0x3FFFU << CAN_FM1R_FBM_Pos)     /*!< 0x00003FFF */
+#define CAN_FM1R_FBM                         CAN_FM1R_FBM_Msk                  /*!< Filter Mode */
+#define CAN_FM1R_FBM0_Pos                    (0U)                              
+#define CAN_FM1R_FBM0_Msk                    (0x1U << CAN_FM1R_FBM0_Pos)       /*!< 0x00000001 */
+#define CAN_FM1R_FBM0                        CAN_FM1R_FBM0_Msk                 /*!< Filter Init Mode for filter 0 */
+#define CAN_FM1R_FBM1_Pos                    (1U)                              
+#define CAN_FM1R_FBM1_Msk                    (0x1U << CAN_FM1R_FBM1_Pos)       /*!< 0x00000002 */
+#define CAN_FM1R_FBM1                        CAN_FM1R_FBM1_Msk                 /*!< Filter Init Mode for filter 1 */
+#define CAN_FM1R_FBM2_Pos                    (2U)                              
+#define CAN_FM1R_FBM2_Msk                    (0x1U << CAN_FM1R_FBM2_Pos)       /*!< 0x00000004 */
+#define CAN_FM1R_FBM2                        CAN_FM1R_FBM2_Msk                 /*!< Filter Init Mode for filter 2 */
+#define CAN_FM1R_FBM3_Pos                    (3U)                              
+#define CAN_FM1R_FBM3_Msk                    (0x1U << CAN_FM1R_FBM3_Pos)       /*!< 0x00000008 */
+#define CAN_FM1R_FBM3                        CAN_FM1R_FBM3_Msk                 /*!< Filter Init Mode for filter 3 */
+#define CAN_FM1R_FBM4_Pos                    (4U)                              
+#define CAN_FM1R_FBM4_Msk                    (0x1U << CAN_FM1R_FBM4_Pos)       /*!< 0x00000010 */
+#define CAN_FM1R_FBM4                        CAN_FM1R_FBM4_Msk                 /*!< Filter Init Mode for filter 4 */
+#define CAN_FM1R_FBM5_Pos                    (5U)                              
+#define CAN_FM1R_FBM5_Msk                    (0x1U << CAN_FM1R_FBM5_Pos)       /*!< 0x00000020 */
+#define CAN_FM1R_FBM5                        CAN_FM1R_FBM5_Msk                 /*!< Filter Init Mode for filter 5 */
+#define CAN_FM1R_FBM6_Pos                    (6U)                              
+#define CAN_FM1R_FBM6_Msk                    (0x1U << CAN_FM1R_FBM6_Pos)       /*!< 0x00000040 */
+#define CAN_FM1R_FBM6                        CAN_FM1R_FBM6_Msk                 /*!< Filter Init Mode for filter 6 */
+#define CAN_FM1R_FBM7_Pos                    (7U)                              
+#define CAN_FM1R_FBM7_Msk                    (0x1U << CAN_FM1R_FBM7_Pos)       /*!< 0x00000080 */
+#define CAN_FM1R_FBM7                        CAN_FM1R_FBM7_Msk                 /*!< Filter Init Mode for filter 7 */
+#define CAN_FM1R_FBM8_Pos                    (8U)                              
+#define CAN_FM1R_FBM8_Msk                    (0x1U << CAN_FM1R_FBM8_Pos)       /*!< 0x00000100 */
+#define CAN_FM1R_FBM8                        CAN_FM1R_FBM8_Msk                 /*!< Filter Init Mode for filter 8 */
+#define CAN_FM1R_FBM9_Pos                    (9U)                              
+#define CAN_FM1R_FBM9_Msk                    (0x1U << CAN_FM1R_FBM9_Pos)       /*!< 0x00000200 */
+#define CAN_FM1R_FBM9                        CAN_FM1R_FBM9_Msk                 /*!< Filter Init Mode for filter 9 */
+#define CAN_FM1R_FBM10_Pos                   (10U)                             
+#define CAN_FM1R_FBM10_Msk                   (0x1U << CAN_FM1R_FBM10_Pos)      /*!< 0x00000400 */
+#define CAN_FM1R_FBM10                       CAN_FM1R_FBM10_Msk                /*!< Filter Init Mode for filter 10 */
+#define CAN_FM1R_FBM11_Pos                   (11U)                             
+#define CAN_FM1R_FBM11_Msk                   (0x1U << CAN_FM1R_FBM11_Pos)      /*!< 0x00000800 */
+#define CAN_FM1R_FBM11                       CAN_FM1R_FBM11_Msk                /*!< Filter Init Mode for filter 11 */
+#define CAN_FM1R_FBM12_Pos                   (12U)                             
+#define CAN_FM1R_FBM12_Msk                   (0x1U << CAN_FM1R_FBM12_Pos)      /*!< 0x00001000 */
+#define CAN_FM1R_FBM12                       CAN_FM1R_FBM12_Msk                /*!< Filter Init Mode for filter 12 */
+#define CAN_FM1R_FBM13_Pos                   (13U)                             
+#define CAN_FM1R_FBM13_Msk                   (0x1U << CAN_FM1R_FBM13_Pos)      /*!< 0x00002000 */
+#define CAN_FM1R_FBM13                       CAN_FM1R_FBM13_Msk                /*!< Filter Init Mode for filter 13 */
+
+/*******************  Bit definition for CAN_FS1R register  *******************/
+#define CAN_FS1R_FSC_Pos                     (0U)                              
+#define CAN_FS1R_FSC_Msk                     (0x3FFFU << CAN_FS1R_FSC_Pos)     /*!< 0x00003FFF */
+#define CAN_FS1R_FSC                         CAN_FS1R_FSC_Msk                  /*!< Filter Scale Configuration */
+#define CAN_FS1R_FSC0_Pos                    (0U)                              
+#define CAN_FS1R_FSC0_Msk                    (0x1U << CAN_FS1R_FSC0_Pos)       /*!< 0x00000001 */
+#define CAN_FS1R_FSC0                        CAN_FS1R_FSC0_Msk                 /*!< Filter Scale Configuration for filter 0 */
+#define CAN_FS1R_FSC1_Pos                    (1U)                              
+#define CAN_FS1R_FSC1_Msk                    (0x1U << CAN_FS1R_FSC1_Pos)       /*!< 0x00000002 */
+#define CAN_FS1R_FSC1                        CAN_FS1R_FSC1_Msk                 /*!< Filter Scale Configuration for filter 1 */
+#define CAN_FS1R_FSC2_Pos                    (2U)                              
+#define CAN_FS1R_FSC2_Msk                    (0x1U << CAN_FS1R_FSC2_Pos)       /*!< 0x00000004 */
+#define CAN_FS1R_FSC2                        CAN_FS1R_FSC2_Msk                 /*!< Filter Scale Configuration for filter 2 */
+#define CAN_FS1R_FSC3_Pos                    (3U)                              
+#define CAN_FS1R_FSC3_Msk                    (0x1U << CAN_FS1R_FSC3_Pos)       /*!< 0x00000008 */
+#define CAN_FS1R_FSC3                        CAN_FS1R_FSC3_Msk                 /*!< Filter Scale Configuration for filter 3 */
+#define CAN_FS1R_FSC4_Pos                    (4U)                              
+#define CAN_FS1R_FSC4_Msk                    (0x1U << CAN_FS1R_FSC4_Pos)       /*!< 0x00000010 */
+#define CAN_FS1R_FSC4                        CAN_FS1R_FSC4_Msk                 /*!< Filter Scale Configuration for filter 4 */
+#define CAN_FS1R_FSC5_Pos                    (5U)                              
+#define CAN_FS1R_FSC5_Msk                    (0x1U << CAN_FS1R_FSC5_Pos)       /*!< 0x00000020 */
+#define CAN_FS1R_FSC5                        CAN_FS1R_FSC5_Msk                 /*!< Filter Scale Configuration for filter 5 */
+#define CAN_FS1R_FSC6_Pos                    (6U)                              
+#define CAN_FS1R_FSC6_Msk                    (0x1U << CAN_FS1R_FSC6_Pos)       /*!< 0x00000040 */
+#define CAN_FS1R_FSC6                        CAN_FS1R_FSC6_Msk                 /*!< Filter Scale Configuration for filter 6 */
+#define CAN_FS1R_FSC7_Pos                    (7U)                              
+#define CAN_FS1R_FSC7_Msk                    (0x1U << CAN_FS1R_FSC7_Pos)       /*!< 0x00000080 */
+#define CAN_FS1R_FSC7                        CAN_FS1R_FSC7_Msk                 /*!< Filter Scale Configuration for filter 7 */
+#define CAN_FS1R_FSC8_Pos                    (8U)                              
+#define CAN_FS1R_FSC8_Msk                    (0x1U << CAN_FS1R_FSC8_Pos)       /*!< 0x00000100 */
+#define CAN_FS1R_FSC8                        CAN_FS1R_FSC8_Msk                 /*!< Filter Scale Configuration for filter 8 */
+#define CAN_FS1R_FSC9_Pos                    (9U)                              
+#define CAN_FS1R_FSC9_Msk                    (0x1U << CAN_FS1R_FSC9_Pos)       /*!< 0x00000200 */
+#define CAN_FS1R_FSC9                        CAN_FS1R_FSC9_Msk                 /*!< Filter Scale Configuration for filter 9 */
+#define CAN_FS1R_FSC10_Pos                   (10U)                             
+#define CAN_FS1R_FSC10_Msk                   (0x1U << CAN_FS1R_FSC10_Pos)      /*!< 0x00000400 */
+#define CAN_FS1R_FSC10                       CAN_FS1R_FSC10_Msk                /*!< Filter Scale Configuration for filter 10 */
+#define CAN_FS1R_FSC11_Pos                   (11U)                             
+#define CAN_FS1R_FSC11_Msk                   (0x1U << CAN_FS1R_FSC11_Pos)      /*!< 0x00000800 */
+#define CAN_FS1R_FSC11                       CAN_FS1R_FSC11_Msk                /*!< Filter Scale Configuration for filter 11 */
+#define CAN_FS1R_FSC12_Pos                   (12U)                             
+#define CAN_FS1R_FSC12_Msk                   (0x1U << CAN_FS1R_FSC12_Pos)      /*!< 0x00001000 */
+#define CAN_FS1R_FSC12                       CAN_FS1R_FSC12_Msk                /*!< Filter Scale Configuration for filter 12 */
+#define CAN_FS1R_FSC13_Pos                   (13U)                             
+#define CAN_FS1R_FSC13_Msk                   (0x1U << CAN_FS1R_FSC13_Pos)      /*!< 0x00002000 */
+#define CAN_FS1R_FSC13                       CAN_FS1R_FSC13_Msk                /*!< Filter Scale Configuration for filter 13 */
+
+/******************  Bit definition for CAN_FFA1R register  *******************/
+#define CAN_FFA1R_FFA_Pos                    (0U)                              
+#define CAN_FFA1R_FFA_Msk                    (0x3FFFU << CAN_FFA1R_FFA_Pos)    /*!< 0x00003FFF */
+#define CAN_FFA1R_FFA                        CAN_FFA1R_FFA_Msk                 /*!< Filter FIFO Assignment */
+#define CAN_FFA1R_FFA0_Pos                   (0U)                              
+#define CAN_FFA1R_FFA0_Msk                   (0x1U << CAN_FFA1R_FFA0_Pos)      /*!< 0x00000001 */
+#define CAN_FFA1R_FFA0                       CAN_FFA1R_FFA0_Msk                /*!< Filter FIFO Assignment for filter 0 */
+#define CAN_FFA1R_FFA1_Pos                   (1U)                              
+#define CAN_FFA1R_FFA1_Msk                   (0x1U << CAN_FFA1R_FFA1_Pos)      /*!< 0x00000002 */
+#define CAN_FFA1R_FFA1                       CAN_FFA1R_FFA1_Msk                /*!< Filter FIFO Assignment for filter 1 */
+#define CAN_FFA1R_FFA2_Pos                   (2U)                              
+#define CAN_FFA1R_FFA2_Msk                   (0x1U << CAN_FFA1R_FFA2_Pos)      /*!< 0x00000004 */
+#define CAN_FFA1R_FFA2                       CAN_FFA1R_FFA2_Msk                /*!< Filter FIFO Assignment for filter 2 */
+#define CAN_FFA1R_FFA3_Pos                   (3U)                              
+#define CAN_FFA1R_FFA3_Msk                   (0x1U << CAN_FFA1R_FFA3_Pos)      /*!< 0x00000008 */
+#define CAN_FFA1R_FFA3                       CAN_FFA1R_FFA3_Msk                /*!< Filter FIFO Assignment for filter 3 */
+#define CAN_FFA1R_FFA4_Pos                   (4U)                              
+#define CAN_FFA1R_FFA4_Msk                   (0x1U << CAN_FFA1R_FFA4_Pos)      /*!< 0x00000010 */
+#define CAN_FFA1R_FFA4                       CAN_FFA1R_FFA4_Msk                /*!< Filter FIFO Assignment for filter 4 */
+#define CAN_FFA1R_FFA5_Pos                   (5U)                              
+#define CAN_FFA1R_FFA5_Msk                   (0x1U << CAN_FFA1R_FFA5_Pos)      /*!< 0x00000020 */
+#define CAN_FFA1R_FFA5                       CAN_FFA1R_FFA5_Msk                /*!< Filter FIFO Assignment for filter 5 */
+#define CAN_FFA1R_FFA6_Pos                   (6U)                              
+#define CAN_FFA1R_FFA6_Msk                   (0x1U << CAN_FFA1R_FFA6_Pos)      /*!< 0x00000040 */
+#define CAN_FFA1R_FFA6                       CAN_FFA1R_FFA6_Msk                /*!< Filter FIFO Assignment for filter 6 */
+#define CAN_FFA1R_FFA7_Pos                   (7U)                              
+#define CAN_FFA1R_FFA7_Msk                   (0x1U << CAN_FFA1R_FFA7_Pos)      /*!< 0x00000080 */
+#define CAN_FFA1R_FFA7                       CAN_FFA1R_FFA7_Msk                /*!< Filter FIFO Assignment for filter 7 */
+#define CAN_FFA1R_FFA8_Pos                   (8U)                              
+#define CAN_FFA1R_FFA8_Msk                   (0x1U << CAN_FFA1R_FFA8_Pos)      /*!< 0x00000100 */
+#define CAN_FFA1R_FFA8                       CAN_FFA1R_FFA8_Msk                /*!< Filter FIFO Assignment for filter 8 */
+#define CAN_FFA1R_FFA9_Pos                   (9U)                              
+#define CAN_FFA1R_FFA9_Msk                   (0x1U << CAN_FFA1R_FFA9_Pos)      /*!< 0x00000200 */
+#define CAN_FFA1R_FFA9                       CAN_FFA1R_FFA9_Msk                /*!< Filter FIFO Assignment for filter 9 */
+#define CAN_FFA1R_FFA10_Pos                  (10U)                             
+#define CAN_FFA1R_FFA10_Msk                  (0x1U << CAN_FFA1R_FFA10_Pos)     /*!< 0x00000400 */
+#define CAN_FFA1R_FFA10                      CAN_FFA1R_FFA10_Msk               /*!< Filter FIFO Assignment for filter 10 */
+#define CAN_FFA1R_FFA11_Pos                  (11U)                             
+#define CAN_FFA1R_FFA11_Msk                  (0x1U << CAN_FFA1R_FFA11_Pos)     /*!< 0x00000800 */
+#define CAN_FFA1R_FFA11                      CAN_FFA1R_FFA11_Msk               /*!< Filter FIFO Assignment for filter 11 */
+#define CAN_FFA1R_FFA12_Pos                  (12U)                             
+#define CAN_FFA1R_FFA12_Msk                  (0x1U << CAN_FFA1R_FFA12_Pos)     /*!< 0x00001000 */
+#define CAN_FFA1R_FFA12                      CAN_FFA1R_FFA12_Msk               /*!< Filter FIFO Assignment for filter 12 */
+#define CAN_FFA1R_FFA13_Pos                  (13U)                             
+#define CAN_FFA1R_FFA13_Msk                  (0x1U << CAN_FFA1R_FFA13_Pos)     /*!< 0x00002000 */
+#define CAN_FFA1R_FFA13                      CAN_FFA1R_FFA13_Msk               /*!< Filter FIFO Assignment for filter 13 */
+
+/*******************  Bit definition for CAN_FA1R register  *******************/
+#define CAN_FA1R_FACT_Pos                    (0U)                              
+#define CAN_FA1R_FACT_Msk                    (0x3FFFU << CAN_FA1R_FACT_Pos)    /*!< 0x00003FFF */
+#define CAN_FA1R_FACT                        CAN_FA1R_FACT_Msk                 /*!< Filter Active */
+#define CAN_FA1R_FACT0_Pos                   (0U)                              
+#define CAN_FA1R_FACT0_Msk                   (0x1U << CAN_FA1R_FACT0_Pos)      /*!< 0x00000001 */
+#define CAN_FA1R_FACT0                       CAN_FA1R_FACT0_Msk                /*!< Filter 0 Active */
+#define CAN_FA1R_FACT1_Pos                   (1U)                              
+#define CAN_FA1R_FACT1_Msk                   (0x1U << CAN_FA1R_FACT1_Pos)      /*!< 0x00000002 */
+#define CAN_FA1R_FACT1                       CAN_FA1R_FACT1_Msk                /*!< Filter 1 Active */
+#define CAN_FA1R_FACT2_Pos                   (2U)                              
+#define CAN_FA1R_FACT2_Msk                   (0x1U << CAN_FA1R_FACT2_Pos)      /*!< 0x00000004 */
+#define CAN_FA1R_FACT2                       CAN_FA1R_FACT2_Msk                /*!< Filter 2 Active */
+#define CAN_FA1R_FACT3_Pos                   (3U)                              
+#define CAN_FA1R_FACT3_Msk                   (0x1U << CAN_FA1R_FACT3_Pos)      /*!< 0x00000008 */
+#define CAN_FA1R_FACT3                       CAN_FA1R_FACT3_Msk                /*!< Filter 3 Active */
+#define CAN_FA1R_FACT4_Pos                   (4U)                              
+#define CAN_FA1R_FACT4_Msk                   (0x1U << CAN_FA1R_FACT4_Pos)      /*!< 0x00000010 */
+#define CAN_FA1R_FACT4                       CAN_FA1R_FACT4_Msk                /*!< Filter 4 Active */
+#define CAN_FA1R_FACT5_Pos                   (5U)                              
+#define CAN_FA1R_FACT5_Msk                   (0x1U << CAN_FA1R_FACT5_Pos)      /*!< 0x00000020 */
+#define CAN_FA1R_FACT5                       CAN_FA1R_FACT5_Msk                /*!< Filter 5 Active */
+#define CAN_FA1R_FACT6_Pos                   (6U)                              
+#define CAN_FA1R_FACT6_Msk                   (0x1U << CAN_FA1R_FACT6_Pos)      /*!< 0x00000040 */
+#define CAN_FA1R_FACT6                       CAN_FA1R_FACT6_Msk                /*!< Filter 6 Active */
+#define CAN_FA1R_FACT7_Pos                   (7U)                              
+#define CAN_FA1R_FACT7_Msk                   (0x1U << CAN_FA1R_FACT7_Pos)      /*!< 0x00000080 */
+#define CAN_FA1R_FACT7                       CAN_FA1R_FACT7_Msk                /*!< Filter 7 Active */
+#define CAN_FA1R_FACT8_Pos                   (8U)                              
+#define CAN_FA1R_FACT8_Msk                   (0x1U << CAN_FA1R_FACT8_Pos)      /*!< 0x00000100 */
+#define CAN_FA1R_FACT8                       CAN_FA1R_FACT8_Msk                /*!< Filter 8 Active */
+#define CAN_FA1R_FACT9_Pos                   (9U)                              
+#define CAN_FA1R_FACT9_Msk                   (0x1U << CAN_FA1R_FACT9_Pos)      /*!< 0x00000200 */
+#define CAN_FA1R_FACT9                       CAN_FA1R_FACT9_Msk                /*!< Filter 9 Active */
+#define CAN_FA1R_FACT10_Pos                  (10U)                             
+#define CAN_FA1R_FACT10_Msk                  (0x1U << CAN_FA1R_FACT10_Pos)     /*!< 0x00000400 */
+#define CAN_FA1R_FACT10                      CAN_FA1R_FACT10_Msk               /*!< Filter 10 Active */
+#define CAN_FA1R_FACT11_Pos                  (11U)                             
+#define CAN_FA1R_FACT11_Msk                  (0x1U << CAN_FA1R_FACT11_Pos)     /*!< 0x00000800 */
+#define CAN_FA1R_FACT11                      CAN_FA1R_FACT11_Msk               /*!< Filter 11 Active */
+#define CAN_FA1R_FACT12_Pos                  (12U)                             
+#define CAN_FA1R_FACT12_Msk                  (0x1U << CAN_FA1R_FACT12_Pos)     /*!< 0x00001000 */
+#define CAN_FA1R_FACT12                      CAN_FA1R_FACT12_Msk               /*!< Filter 12 Active */
+#define CAN_FA1R_FACT13_Pos                  (13U)                             
+#define CAN_FA1R_FACT13_Msk                  (0x1U << CAN_FA1R_FACT13_Pos)     /*!< 0x00002000 */
+#define CAN_FA1R_FACT13                      CAN_FA1R_FACT13_Msk               /*!< Filter 13 Active */
+
+/*******************  Bit definition for CAN_F0R1 register  *******************/
+#define CAN_F0R1_FB0_Pos                     (0U)                              
+#define CAN_F0R1_FB0_Msk                     (0x1U << CAN_F0R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F0R1_FB0                         CAN_F0R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F0R1_FB1_Pos                     (1U)                              
+#define CAN_F0R1_FB1_Msk                     (0x1U << CAN_F0R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F0R1_FB1                         CAN_F0R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F0R1_FB2_Pos                     (2U)                              
+#define CAN_F0R1_FB2_Msk                     (0x1U << CAN_F0R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F0R1_FB2                         CAN_F0R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F0R1_FB3_Pos                     (3U)                              
+#define CAN_F0R1_FB3_Msk                     (0x1U << CAN_F0R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F0R1_FB3                         CAN_F0R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F0R1_FB4_Pos                     (4U)                              
+#define CAN_F0R1_FB4_Msk                     (0x1U << CAN_F0R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F0R1_FB4                         CAN_F0R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F0R1_FB5_Pos                     (5U)                              
+#define CAN_F0R1_FB5_Msk                     (0x1U << CAN_F0R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F0R1_FB5                         CAN_F0R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F0R1_FB6_Pos                     (6U)                              
+#define CAN_F0R1_FB6_Msk                     (0x1U << CAN_F0R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F0R1_FB6                         CAN_F0R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F0R1_FB7_Pos                     (7U)                              
+#define CAN_F0R1_FB7_Msk                     (0x1U << CAN_F0R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F0R1_FB7                         CAN_F0R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F0R1_FB8_Pos                     (8U)                              
+#define CAN_F0R1_FB8_Msk                     (0x1U << CAN_F0R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F0R1_FB8                         CAN_F0R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F0R1_FB9_Pos                     (9U)                              
+#define CAN_F0R1_FB9_Msk                     (0x1U << CAN_F0R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F0R1_FB9                         CAN_F0R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F0R1_FB10_Pos                    (10U)                             
+#define CAN_F0R1_FB10_Msk                    (0x1U << CAN_F0R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F0R1_FB10                        CAN_F0R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F0R1_FB11_Pos                    (11U)                             
+#define CAN_F0R1_FB11_Msk                    (0x1U << CAN_F0R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F0R1_FB11                        CAN_F0R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F0R1_FB12_Pos                    (12U)                             
+#define CAN_F0R1_FB12_Msk                    (0x1U << CAN_F0R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F0R1_FB12                        CAN_F0R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F0R1_FB13_Pos                    (13U)                             
+#define CAN_F0R1_FB13_Msk                    (0x1U << CAN_F0R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F0R1_FB13                        CAN_F0R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F0R1_FB14_Pos                    (14U)                             
+#define CAN_F0R1_FB14_Msk                    (0x1U << CAN_F0R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F0R1_FB14                        CAN_F0R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F0R1_FB15_Pos                    (15U)                             
+#define CAN_F0R1_FB15_Msk                    (0x1U << CAN_F0R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F0R1_FB15                        CAN_F0R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F0R1_FB16_Pos                    (16U)                             
+#define CAN_F0R1_FB16_Msk                    (0x1U << CAN_F0R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F0R1_FB16                        CAN_F0R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F0R1_FB17_Pos                    (17U)                             
+#define CAN_F0R1_FB17_Msk                    (0x1U << CAN_F0R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F0R1_FB17                        CAN_F0R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F0R1_FB18_Pos                    (18U)                             
+#define CAN_F0R1_FB18_Msk                    (0x1U << CAN_F0R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F0R1_FB18                        CAN_F0R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F0R1_FB19_Pos                    (19U)                             
+#define CAN_F0R1_FB19_Msk                    (0x1U << CAN_F0R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F0R1_FB19                        CAN_F0R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F0R1_FB20_Pos                    (20U)                             
+#define CAN_F0R1_FB20_Msk                    (0x1U << CAN_F0R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F0R1_FB20                        CAN_F0R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F0R1_FB21_Pos                    (21U)                             
+#define CAN_F0R1_FB21_Msk                    (0x1U << CAN_F0R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F0R1_FB21                        CAN_F0R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F0R1_FB22_Pos                    (22U)                             
+#define CAN_F0R1_FB22_Msk                    (0x1U << CAN_F0R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F0R1_FB22                        CAN_F0R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F0R1_FB23_Pos                    (23U)                             
+#define CAN_F0R1_FB23_Msk                    (0x1U << CAN_F0R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F0R1_FB23                        CAN_F0R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F0R1_FB24_Pos                    (24U)                             
+#define CAN_F0R1_FB24_Msk                    (0x1U << CAN_F0R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F0R1_FB24                        CAN_F0R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F0R1_FB25_Pos                    (25U)                             
+#define CAN_F0R1_FB25_Msk                    (0x1U << CAN_F0R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F0R1_FB25                        CAN_F0R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F0R1_FB26_Pos                    (26U)                             
+#define CAN_F0R1_FB26_Msk                    (0x1U << CAN_F0R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F0R1_FB26                        CAN_F0R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F0R1_FB27_Pos                    (27U)                             
+#define CAN_F0R1_FB27_Msk                    (0x1U << CAN_F0R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F0R1_FB27                        CAN_F0R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F0R1_FB28_Pos                    (28U)                             
+#define CAN_F0R1_FB28_Msk                    (0x1U << CAN_F0R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F0R1_FB28                        CAN_F0R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F0R1_FB29_Pos                    (29U)                             
+#define CAN_F0R1_FB29_Msk                    (0x1U << CAN_F0R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F0R1_FB29                        CAN_F0R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F0R1_FB30_Pos                    (30U)                             
+#define CAN_F0R1_FB30_Msk                    (0x1U << CAN_F0R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F0R1_FB30                        CAN_F0R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F0R1_FB31_Pos                    (31U)                             
+#define CAN_F0R1_FB31_Msk                    (0x1U << CAN_F0R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F0R1_FB31                        CAN_F0R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F1R1 register  *******************/
+#define CAN_F1R1_FB0_Pos                     (0U)                              
+#define CAN_F1R1_FB0_Msk                     (0x1U << CAN_F1R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F1R1_FB0                         CAN_F1R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F1R1_FB1_Pos                     (1U)                              
+#define CAN_F1R1_FB1_Msk                     (0x1U << CAN_F1R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F1R1_FB1                         CAN_F1R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F1R1_FB2_Pos                     (2U)                              
+#define CAN_F1R1_FB2_Msk                     (0x1U << CAN_F1R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F1R1_FB2                         CAN_F1R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F1R1_FB3_Pos                     (3U)                              
+#define CAN_F1R1_FB3_Msk                     (0x1U << CAN_F1R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F1R1_FB3                         CAN_F1R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F1R1_FB4_Pos                     (4U)                              
+#define CAN_F1R1_FB4_Msk                     (0x1U << CAN_F1R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F1R1_FB4                         CAN_F1R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F1R1_FB5_Pos                     (5U)                              
+#define CAN_F1R1_FB5_Msk                     (0x1U << CAN_F1R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F1R1_FB5                         CAN_F1R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F1R1_FB6_Pos                     (6U)                              
+#define CAN_F1R1_FB6_Msk                     (0x1U << CAN_F1R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F1R1_FB6                         CAN_F1R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F1R1_FB7_Pos                     (7U)                              
+#define CAN_F1R1_FB7_Msk                     (0x1U << CAN_F1R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F1R1_FB7                         CAN_F1R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F1R1_FB8_Pos                     (8U)                              
+#define CAN_F1R1_FB8_Msk                     (0x1U << CAN_F1R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F1R1_FB8                         CAN_F1R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F1R1_FB9_Pos                     (9U)                              
+#define CAN_F1R1_FB9_Msk                     (0x1U << CAN_F1R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F1R1_FB9                         CAN_F1R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F1R1_FB10_Pos                    (10U)                             
+#define CAN_F1R1_FB10_Msk                    (0x1U << CAN_F1R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F1R1_FB10                        CAN_F1R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F1R1_FB11_Pos                    (11U)                             
+#define CAN_F1R1_FB11_Msk                    (0x1U << CAN_F1R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F1R1_FB11                        CAN_F1R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F1R1_FB12_Pos                    (12U)                             
+#define CAN_F1R1_FB12_Msk                    (0x1U << CAN_F1R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F1R1_FB12                        CAN_F1R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F1R1_FB13_Pos                    (13U)                             
+#define CAN_F1R1_FB13_Msk                    (0x1U << CAN_F1R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F1R1_FB13                        CAN_F1R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F1R1_FB14_Pos                    (14U)                             
+#define CAN_F1R1_FB14_Msk                    (0x1U << CAN_F1R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F1R1_FB14                        CAN_F1R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F1R1_FB15_Pos                    (15U)                             
+#define CAN_F1R1_FB15_Msk                    (0x1U << CAN_F1R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F1R1_FB15                        CAN_F1R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F1R1_FB16_Pos                    (16U)                             
+#define CAN_F1R1_FB16_Msk                    (0x1U << CAN_F1R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F1R1_FB16                        CAN_F1R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F1R1_FB17_Pos                    (17U)                             
+#define CAN_F1R1_FB17_Msk                    (0x1U << CAN_F1R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F1R1_FB17                        CAN_F1R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F1R1_FB18_Pos                    (18U)                             
+#define CAN_F1R1_FB18_Msk                    (0x1U << CAN_F1R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F1R1_FB18                        CAN_F1R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F1R1_FB19_Pos                    (19U)                             
+#define CAN_F1R1_FB19_Msk                    (0x1U << CAN_F1R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F1R1_FB19                        CAN_F1R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F1R1_FB20_Pos                    (20U)                             
+#define CAN_F1R1_FB20_Msk                    (0x1U << CAN_F1R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F1R1_FB20                        CAN_F1R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F1R1_FB21_Pos                    (21U)                             
+#define CAN_F1R1_FB21_Msk                    (0x1U << CAN_F1R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F1R1_FB21                        CAN_F1R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F1R1_FB22_Pos                    (22U)                             
+#define CAN_F1R1_FB22_Msk                    (0x1U << CAN_F1R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F1R1_FB22                        CAN_F1R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F1R1_FB23_Pos                    (23U)                             
+#define CAN_F1R1_FB23_Msk                    (0x1U << CAN_F1R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F1R1_FB23                        CAN_F1R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F1R1_FB24_Pos                    (24U)                             
+#define CAN_F1R1_FB24_Msk                    (0x1U << CAN_F1R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F1R1_FB24                        CAN_F1R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F1R1_FB25_Pos                    (25U)                             
+#define CAN_F1R1_FB25_Msk                    (0x1U << CAN_F1R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F1R1_FB25                        CAN_F1R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F1R1_FB26_Pos                    (26U)                             
+#define CAN_F1R1_FB26_Msk                    (0x1U << CAN_F1R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F1R1_FB26                        CAN_F1R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F1R1_FB27_Pos                    (27U)                             
+#define CAN_F1R1_FB27_Msk                    (0x1U << CAN_F1R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F1R1_FB27                        CAN_F1R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F1R1_FB28_Pos                    (28U)                             
+#define CAN_F1R1_FB28_Msk                    (0x1U << CAN_F1R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F1R1_FB28                        CAN_F1R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F1R1_FB29_Pos                    (29U)                             
+#define CAN_F1R1_FB29_Msk                    (0x1U << CAN_F1R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F1R1_FB29                        CAN_F1R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F1R1_FB30_Pos                    (30U)                             
+#define CAN_F1R1_FB30_Msk                    (0x1U << CAN_F1R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F1R1_FB30                        CAN_F1R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F1R1_FB31_Pos                    (31U)                             
+#define CAN_F1R1_FB31_Msk                    (0x1U << CAN_F1R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F1R1_FB31                        CAN_F1R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F2R1 register  *******************/
+#define CAN_F2R1_FB0_Pos                     (0U)                              
+#define CAN_F2R1_FB0_Msk                     (0x1U << CAN_F2R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F2R1_FB0                         CAN_F2R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F2R1_FB1_Pos                     (1U)                              
+#define CAN_F2R1_FB1_Msk                     (0x1U << CAN_F2R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F2R1_FB1                         CAN_F2R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F2R1_FB2_Pos                     (2U)                              
+#define CAN_F2R1_FB2_Msk                     (0x1U << CAN_F2R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F2R1_FB2                         CAN_F2R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F2R1_FB3_Pos                     (3U)                              
+#define CAN_F2R1_FB3_Msk                     (0x1U << CAN_F2R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F2R1_FB3                         CAN_F2R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F2R1_FB4_Pos                     (4U)                              
+#define CAN_F2R1_FB4_Msk                     (0x1U << CAN_F2R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F2R1_FB4                         CAN_F2R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F2R1_FB5_Pos                     (5U)                              
+#define CAN_F2R1_FB5_Msk                     (0x1U << CAN_F2R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F2R1_FB5                         CAN_F2R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F2R1_FB6_Pos                     (6U)                              
+#define CAN_F2R1_FB6_Msk                     (0x1U << CAN_F2R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F2R1_FB6                         CAN_F2R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F2R1_FB7_Pos                     (7U)                              
+#define CAN_F2R1_FB7_Msk                     (0x1U << CAN_F2R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F2R1_FB7                         CAN_F2R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F2R1_FB8_Pos                     (8U)                              
+#define CAN_F2R1_FB8_Msk                     (0x1U << CAN_F2R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F2R1_FB8                         CAN_F2R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F2R1_FB9_Pos                     (9U)                              
+#define CAN_F2R1_FB9_Msk                     (0x1U << CAN_F2R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F2R1_FB9                         CAN_F2R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F2R1_FB10_Pos                    (10U)                             
+#define CAN_F2R1_FB10_Msk                    (0x1U << CAN_F2R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F2R1_FB10                        CAN_F2R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F2R1_FB11_Pos                    (11U)                             
+#define CAN_F2R1_FB11_Msk                    (0x1U << CAN_F2R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F2R1_FB11                        CAN_F2R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F2R1_FB12_Pos                    (12U)                             
+#define CAN_F2R1_FB12_Msk                    (0x1U << CAN_F2R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F2R1_FB12                        CAN_F2R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F2R1_FB13_Pos                    (13U)                             
+#define CAN_F2R1_FB13_Msk                    (0x1U << CAN_F2R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F2R1_FB13                        CAN_F2R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F2R1_FB14_Pos                    (14U)                             
+#define CAN_F2R1_FB14_Msk                    (0x1U << CAN_F2R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F2R1_FB14                        CAN_F2R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F2R1_FB15_Pos                    (15U)                             
+#define CAN_F2R1_FB15_Msk                    (0x1U << CAN_F2R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F2R1_FB15                        CAN_F2R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F2R1_FB16_Pos                    (16U)                             
+#define CAN_F2R1_FB16_Msk                    (0x1U << CAN_F2R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F2R1_FB16                        CAN_F2R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F2R1_FB17_Pos                    (17U)                             
+#define CAN_F2R1_FB17_Msk                    (0x1U << CAN_F2R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F2R1_FB17                        CAN_F2R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F2R1_FB18_Pos                    (18U)                             
+#define CAN_F2R1_FB18_Msk                    (0x1U << CAN_F2R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F2R1_FB18                        CAN_F2R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F2R1_FB19_Pos                    (19U)                             
+#define CAN_F2R1_FB19_Msk                    (0x1U << CAN_F2R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F2R1_FB19                        CAN_F2R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F2R1_FB20_Pos                    (20U)                             
+#define CAN_F2R1_FB20_Msk                    (0x1U << CAN_F2R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F2R1_FB20                        CAN_F2R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F2R1_FB21_Pos                    (21U)                             
+#define CAN_F2R1_FB21_Msk                    (0x1U << CAN_F2R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F2R1_FB21                        CAN_F2R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F2R1_FB22_Pos                    (22U)                             
+#define CAN_F2R1_FB22_Msk                    (0x1U << CAN_F2R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F2R1_FB22                        CAN_F2R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F2R1_FB23_Pos                    (23U)                             
+#define CAN_F2R1_FB23_Msk                    (0x1U << CAN_F2R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F2R1_FB23                        CAN_F2R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F2R1_FB24_Pos                    (24U)                             
+#define CAN_F2R1_FB24_Msk                    (0x1U << CAN_F2R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F2R1_FB24                        CAN_F2R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F2R1_FB25_Pos                    (25U)                             
+#define CAN_F2R1_FB25_Msk                    (0x1U << CAN_F2R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F2R1_FB25                        CAN_F2R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F2R1_FB26_Pos                    (26U)                             
+#define CAN_F2R1_FB26_Msk                    (0x1U << CAN_F2R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F2R1_FB26                        CAN_F2R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F2R1_FB27_Pos                    (27U)                             
+#define CAN_F2R1_FB27_Msk                    (0x1U << CAN_F2R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F2R1_FB27                        CAN_F2R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F2R1_FB28_Pos                    (28U)                             
+#define CAN_F2R1_FB28_Msk                    (0x1U << CAN_F2R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F2R1_FB28                        CAN_F2R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F2R1_FB29_Pos                    (29U)                             
+#define CAN_F2R1_FB29_Msk                    (0x1U << CAN_F2R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F2R1_FB29                        CAN_F2R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F2R1_FB30_Pos                    (30U)                             
+#define CAN_F2R1_FB30_Msk                    (0x1U << CAN_F2R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F2R1_FB30                        CAN_F2R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F2R1_FB31_Pos                    (31U)                             
+#define CAN_F2R1_FB31_Msk                    (0x1U << CAN_F2R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F2R1_FB31                        CAN_F2R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F3R1 register  *******************/
+#define CAN_F3R1_FB0_Pos                     (0U)                              
+#define CAN_F3R1_FB0_Msk                     (0x1U << CAN_F3R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F3R1_FB0                         CAN_F3R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F3R1_FB1_Pos                     (1U)                              
+#define CAN_F3R1_FB1_Msk                     (0x1U << CAN_F3R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F3R1_FB1                         CAN_F3R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F3R1_FB2_Pos                     (2U)                              
+#define CAN_F3R1_FB2_Msk                     (0x1U << CAN_F3R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F3R1_FB2                         CAN_F3R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F3R1_FB3_Pos                     (3U)                              
+#define CAN_F3R1_FB3_Msk                     (0x1U << CAN_F3R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F3R1_FB3                         CAN_F3R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F3R1_FB4_Pos                     (4U)                              
+#define CAN_F3R1_FB4_Msk                     (0x1U << CAN_F3R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F3R1_FB4                         CAN_F3R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F3R1_FB5_Pos                     (5U)                              
+#define CAN_F3R1_FB5_Msk                     (0x1U << CAN_F3R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F3R1_FB5                         CAN_F3R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F3R1_FB6_Pos                     (6U)                              
+#define CAN_F3R1_FB6_Msk                     (0x1U << CAN_F3R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F3R1_FB6                         CAN_F3R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F3R1_FB7_Pos                     (7U)                              
+#define CAN_F3R1_FB7_Msk                     (0x1U << CAN_F3R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F3R1_FB7                         CAN_F3R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F3R1_FB8_Pos                     (8U)                              
+#define CAN_F3R1_FB8_Msk                     (0x1U << CAN_F3R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F3R1_FB8                         CAN_F3R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F3R1_FB9_Pos                     (9U)                              
+#define CAN_F3R1_FB9_Msk                     (0x1U << CAN_F3R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F3R1_FB9                         CAN_F3R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F3R1_FB10_Pos                    (10U)                             
+#define CAN_F3R1_FB10_Msk                    (0x1U << CAN_F3R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F3R1_FB10                        CAN_F3R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F3R1_FB11_Pos                    (11U)                             
+#define CAN_F3R1_FB11_Msk                    (0x1U << CAN_F3R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F3R1_FB11                        CAN_F3R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F3R1_FB12_Pos                    (12U)                             
+#define CAN_F3R1_FB12_Msk                    (0x1U << CAN_F3R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F3R1_FB12                        CAN_F3R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F3R1_FB13_Pos                    (13U)                             
+#define CAN_F3R1_FB13_Msk                    (0x1U << CAN_F3R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F3R1_FB13                        CAN_F3R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F3R1_FB14_Pos                    (14U)                             
+#define CAN_F3R1_FB14_Msk                    (0x1U << CAN_F3R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F3R1_FB14                        CAN_F3R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F3R1_FB15_Pos                    (15U)                             
+#define CAN_F3R1_FB15_Msk                    (0x1U << CAN_F3R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F3R1_FB15                        CAN_F3R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F3R1_FB16_Pos                    (16U)                             
+#define CAN_F3R1_FB16_Msk                    (0x1U << CAN_F3R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F3R1_FB16                        CAN_F3R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F3R1_FB17_Pos                    (17U)                             
+#define CAN_F3R1_FB17_Msk                    (0x1U << CAN_F3R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F3R1_FB17                        CAN_F3R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F3R1_FB18_Pos                    (18U)                             
+#define CAN_F3R1_FB18_Msk                    (0x1U << CAN_F3R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F3R1_FB18                        CAN_F3R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F3R1_FB19_Pos                    (19U)                             
+#define CAN_F3R1_FB19_Msk                    (0x1U << CAN_F3R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F3R1_FB19                        CAN_F3R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F3R1_FB20_Pos                    (20U)                             
+#define CAN_F3R1_FB20_Msk                    (0x1U << CAN_F3R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F3R1_FB20                        CAN_F3R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F3R1_FB21_Pos                    (21U)                             
+#define CAN_F3R1_FB21_Msk                    (0x1U << CAN_F3R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F3R1_FB21                        CAN_F3R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F3R1_FB22_Pos                    (22U)                             
+#define CAN_F3R1_FB22_Msk                    (0x1U << CAN_F3R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F3R1_FB22                        CAN_F3R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F3R1_FB23_Pos                    (23U)                             
+#define CAN_F3R1_FB23_Msk                    (0x1U << CAN_F3R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F3R1_FB23                        CAN_F3R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F3R1_FB24_Pos                    (24U)                             
+#define CAN_F3R1_FB24_Msk                    (0x1U << CAN_F3R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F3R1_FB24                        CAN_F3R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F3R1_FB25_Pos                    (25U)                             
+#define CAN_F3R1_FB25_Msk                    (0x1U << CAN_F3R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F3R1_FB25                        CAN_F3R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F3R1_FB26_Pos                    (26U)                             
+#define CAN_F3R1_FB26_Msk                    (0x1U << CAN_F3R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F3R1_FB26                        CAN_F3R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F3R1_FB27_Pos                    (27U)                             
+#define CAN_F3R1_FB27_Msk                    (0x1U << CAN_F3R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F3R1_FB27                        CAN_F3R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F3R1_FB28_Pos                    (28U)                             
+#define CAN_F3R1_FB28_Msk                    (0x1U << CAN_F3R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F3R1_FB28                        CAN_F3R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F3R1_FB29_Pos                    (29U)                             
+#define CAN_F3R1_FB29_Msk                    (0x1U << CAN_F3R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F3R1_FB29                        CAN_F3R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F3R1_FB30_Pos                    (30U)                             
+#define CAN_F3R1_FB30_Msk                    (0x1U << CAN_F3R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F3R1_FB30                        CAN_F3R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F3R1_FB31_Pos                    (31U)                             
+#define CAN_F3R1_FB31_Msk                    (0x1U << CAN_F3R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F3R1_FB31                        CAN_F3R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F4R1 register  *******************/
+#define CAN_F4R1_FB0_Pos                     (0U)                              
+#define CAN_F4R1_FB0_Msk                     (0x1U << CAN_F4R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F4R1_FB0                         CAN_F4R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F4R1_FB1_Pos                     (1U)                              
+#define CAN_F4R1_FB1_Msk                     (0x1U << CAN_F4R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F4R1_FB1                         CAN_F4R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F4R1_FB2_Pos                     (2U)                              
+#define CAN_F4R1_FB2_Msk                     (0x1U << CAN_F4R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F4R1_FB2                         CAN_F4R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F4R1_FB3_Pos                     (3U)                              
+#define CAN_F4R1_FB3_Msk                     (0x1U << CAN_F4R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F4R1_FB3                         CAN_F4R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F4R1_FB4_Pos                     (4U)                              
+#define CAN_F4R1_FB4_Msk                     (0x1U << CAN_F4R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F4R1_FB4                         CAN_F4R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F4R1_FB5_Pos                     (5U)                              
+#define CAN_F4R1_FB5_Msk                     (0x1U << CAN_F4R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F4R1_FB5                         CAN_F4R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F4R1_FB6_Pos                     (6U)                              
+#define CAN_F4R1_FB6_Msk                     (0x1U << CAN_F4R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F4R1_FB6                         CAN_F4R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F4R1_FB7_Pos                     (7U)                              
+#define CAN_F4R1_FB7_Msk                     (0x1U << CAN_F4R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F4R1_FB7                         CAN_F4R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F4R1_FB8_Pos                     (8U)                              
+#define CAN_F4R1_FB8_Msk                     (0x1U << CAN_F4R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F4R1_FB8                         CAN_F4R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F4R1_FB9_Pos                     (9U)                              
+#define CAN_F4R1_FB9_Msk                     (0x1U << CAN_F4R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F4R1_FB9                         CAN_F4R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F4R1_FB10_Pos                    (10U)                             
+#define CAN_F4R1_FB10_Msk                    (0x1U << CAN_F4R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F4R1_FB10                        CAN_F4R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F4R1_FB11_Pos                    (11U)                             
+#define CAN_F4R1_FB11_Msk                    (0x1U << CAN_F4R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F4R1_FB11                        CAN_F4R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F4R1_FB12_Pos                    (12U)                             
+#define CAN_F4R1_FB12_Msk                    (0x1U << CAN_F4R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F4R1_FB12                        CAN_F4R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F4R1_FB13_Pos                    (13U)                             
+#define CAN_F4R1_FB13_Msk                    (0x1U << CAN_F4R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F4R1_FB13                        CAN_F4R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F4R1_FB14_Pos                    (14U)                             
+#define CAN_F4R1_FB14_Msk                    (0x1U << CAN_F4R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F4R1_FB14                        CAN_F4R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F4R1_FB15_Pos                    (15U)                             
+#define CAN_F4R1_FB15_Msk                    (0x1U << CAN_F4R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F4R1_FB15                        CAN_F4R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F4R1_FB16_Pos                    (16U)                             
+#define CAN_F4R1_FB16_Msk                    (0x1U << CAN_F4R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F4R1_FB16                        CAN_F4R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F4R1_FB17_Pos                    (17U)                             
+#define CAN_F4R1_FB17_Msk                    (0x1U << CAN_F4R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F4R1_FB17                        CAN_F4R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F4R1_FB18_Pos                    (18U)                             
+#define CAN_F4R1_FB18_Msk                    (0x1U << CAN_F4R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F4R1_FB18                        CAN_F4R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F4R1_FB19_Pos                    (19U)                             
+#define CAN_F4R1_FB19_Msk                    (0x1U << CAN_F4R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F4R1_FB19                        CAN_F4R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F4R1_FB20_Pos                    (20U)                             
+#define CAN_F4R1_FB20_Msk                    (0x1U << CAN_F4R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F4R1_FB20                        CAN_F4R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F4R1_FB21_Pos                    (21U)                             
+#define CAN_F4R1_FB21_Msk                    (0x1U << CAN_F4R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F4R1_FB21                        CAN_F4R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F4R1_FB22_Pos                    (22U)                             
+#define CAN_F4R1_FB22_Msk                    (0x1U << CAN_F4R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F4R1_FB22                        CAN_F4R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F4R1_FB23_Pos                    (23U)                             
+#define CAN_F4R1_FB23_Msk                    (0x1U << CAN_F4R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F4R1_FB23                        CAN_F4R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F4R1_FB24_Pos                    (24U)                             
+#define CAN_F4R1_FB24_Msk                    (0x1U << CAN_F4R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F4R1_FB24                        CAN_F4R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F4R1_FB25_Pos                    (25U)                             
+#define CAN_F4R1_FB25_Msk                    (0x1U << CAN_F4R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F4R1_FB25                        CAN_F4R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F4R1_FB26_Pos                    (26U)                             
+#define CAN_F4R1_FB26_Msk                    (0x1U << CAN_F4R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F4R1_FB26                        CAN_F4R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F4R1_FB27_Pos                    (27U)                             
+#define CAN_F4R1_FB27_Msk                    (0x1U << CAN_F4R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F4R1_FB27                        CAN_F4R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F4R1_FB28_Pos                    (28U)                             
+#define CAN_F4R1_FB28_Msk                    (0x1U << CAN_F4R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F4R1_FB28                        CAN_F4R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F4R1_FB29_Pos                    (29U)                             
+#define CAN_F4R1_FB29_Msk                    (0x1U << CAN_F4R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F4R1_FB29                        CAN_F4R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F4R1_FB30_Pos                    (30U)                             
+#define CAN_F4R1_FB30_Msk                    (0x1U << CAN_F4R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F4R1_FB30                        CAN_F4R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F4R1_FB31_Pos                    (31U)                             
+#define CAN_F4R1_FB31_Msk                    (0x1U << CAN_F4R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F4R1_FB31                        CAN_F4R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F5R1 register  *******************/
+#define CAN_F5R1_FB0_Pos                     (0U)                              
+#define CAN_F5R1_FB0_Msk                     (0x1U << CAN_F5R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F5R1_FB0                         CAN_F5R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F5R1_FB1_Pos                     (1U)                              
+#define CAN_F5R1_FB1_Msk                     (0x1U << CAN_F5R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F5R1_FB1                         CAN_F5R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F5R1_FB2_Pos                     (2U)                              
+#define CAN_F5R1_FB2_Msk                     (0x1U << CAN_F5R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F5R1_FB2                         CAN_F5R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F5R1_FB3_Pos                     (3U)                              
+#define CAN_F5R1_FB3_Msk                     (0x1U << CAN_F5R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F5R1_FB3                         CAN_F5R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F5R1_FB4_Pos                     (4U)                              
+#define CAN_F5R1_FB4_Msk                     (0x1U << CAN_F5R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F5R1_FB4                         CAN_F5R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F5R1_FB5_Pos                     (5U)                              
+#define CAN_F5R1_FB5_Msk                     (0x1U << CAN_F5R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F5R1_FB5                         CAN_F5R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F5R1_FB6_Pos                     (6U)                              
+#define CAN_F5R1_FB6_Msk                     (0x1U << CAN_F5R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F5R1_FB6                         CAN_F5R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F5R1_FB7_Pos                     (7U)                              
+#define CAN_F5R1_FB7_Msk                     (0x1U << CAN_F5R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F5R1_FB7                         CAN_F5R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F5R1_FB8_Pos                     (8U)                              
+#define CAN_F5R1_FB8_Msk                     (0x1U << CAN_F5R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F5R1_FB8                         CAN_F5R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F5R1_FB9_Pos                     (9U)                              
+#define CAN_F5R1_FB9_Msk                     (0x1U << CAN_F5R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F5R1_FB9                         CAN_F5R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F5R1_FB10_Pos                    (10U)                             
+#define CAN_F5R1_FB10_Msk                    (0x1U << CAN_F5R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F5R1_FB10                        CAN_F5R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F5R1_FB11_Pos                    (11U)                             
+#define CAN_F5R1_FB11_Msk                    (0x1U << CAN_F5R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F5R1_FB11                        CAN_F5R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F5R1_FB12_Pos                    (12U)                             
+#define CAN_F5R1_FB12_Msk                    (0x1U << CAN_F5R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F5R1_FB12                        CAN_F5R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F5R1_FB13_Pos                    (13U)                             
+#define CAN_F5R1_FB13_Msk                    (0x1U << CAN_F5R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F5R1_FB13                        CAN_F5R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F5R1_FB14_Pos                    (14U)                             
+#define CAN_F5R1_FB14_Msk                    (0x1U << CAN_F5R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F5R1_FB14                        CAN_F5R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F5R1_FB15_Pos                    (15U)                             
+#define CAN_F5R1_FB15_Msk                    (0x1U << CAN_F5R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F5R1_FB15                        CAN_F5R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F5R1_FB16_Pos                    (16U)                             
+#define CAN_F5R1_FB16_Msk                    (0x1U << CAN_F5R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F5R1_FB16                        CAN_F5R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F5R1_FB17_Pos                    (17U)                             
+#define CAN_F5R1_FB17_Msk                    (0x1U << CAN_F5R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F5R1_FB17                        CAN_F5R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F5R1_FB18_Pos                    (18U)                             
+#define CAN_F5R1_FB18_Msk                    (0x1U << CAN_F5R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F5R1_FB18                        CAN_F5R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F5R1_FB19_Pos                    (19U)                             
+#define CAN_F5R1_FB19_Msk                    (0x1U << CAN_F5R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F5R1_FB19                        CAN_F5R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F5R1_FB20_Pos                    (20U)                             
+#define CAN_F5R1_FB20_Msk                    (0x1U << CAN_F5R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F5R1_FB20                        CAN_F5R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F5R1_FB21_Pos                    (21U)                             
+#define CAN_F5R1_FB21_Msk                    (0x1U << CAN_F5R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F5R1_FB21                        CAN_F5R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F5R1_FB22_Pos                    (22U)                             
+#define CAN_F5R1_FB22_Msk                    (0x1U << CAN_F5R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F5R1_FB22                        CAN_F5R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F5R1_FB23_Pos                    (23U)                             
+#define CAN_F5R1_FB23_Msk                    (0x1U << CAN_F5R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F5R1_FB23                        CAN_F5R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F5R1_FB24_Pos                    (24U)                             
+#define CAN_F5R1_FB24_Msk                    (0x1U << CAN_F5R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F5R1_FB24                        CAN_F5R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F5R1_FB25_Pos                    (25U)                             
+#define CAN_F5R1_FB25_Msk                    (0x1U << CAN_F5R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F5R1_FB25                        CAN_F5R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F5R1_FB26_Pos                    (26U)                             
+#define CAN_F5R1_FB26_Msk                    (0x1U << CAN_F5R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F5R1_FB26                        CAN_F5R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F5R1_FB27_Pos                    (27U)                             
+#define CAN_F5R1_FB27_Msk                    (0x1U << CAN_F5R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F5R1_FB27                        CAN_F5R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F5R1_FB28_Pos                    (28U)                             
+#define CAN_F5R1_FB28_Msk                    (0x1U << CAN_F5R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F5R1_FB28                        CAN_F5R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F5R1_FB29_Pos                    (29U)                             
+#define CAN_F5R1_FB29_Msk                    (0x1U << CAN_F5R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F5R1_FB29                        CAN_F5R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F5R1_FB30_Pos                    (30U)                             
+#define CAN_F5R1_FB30_Msk                    (0x1U << CAN_F5R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F5R1_FB30                        CAN_F5R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F5R1_FB31_Pos                    (31U)                             
+#define CAN_F5R1_FB31_Msk                    (0x1U << CAN_F5R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F5R1_FB31                        CAN_F5R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F6R1 register  *******************/
+#define CAN_F6R1_FB0_Pos                     (0U)                              
+#define CAN_F6R1_FB0_Msk                     (0x1U << CAN_F6R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F6R1_FB0                         CAN_F6R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F6R1_FB1_Pos                     (1U)                              
+#define CAN_F6R1_FB1_Msk                     (0x1U << CAN_F6R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F6R1_FB1                         CAN_F6R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F6R1_FB2_Pos                     (2U)                              
+#define CAN_F6R1_FB2_Msk                     (0x1U << CAN_F6R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F6R1_FB2                         CAN_F6R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F6R1_FB3_Pos                     (3U)                              
+#define CAN_F6R1_FB3_Msk                     (0x1U << CAN_F6R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F6R1_FB3                         CAN_F6R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F6R1_FB4_Pos                     (4U)                              
+#define CAN_F6R1_FB4_Msk                     (0x1U << CAN_F6R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F6R1_FB4                         CAN_F6R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F6R1_FB5_Pos                     (5U)                              
+#define CAN_F6R1_FB5_Msk                     (0x1U << CAN_F6R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F6R1_FB5                         CAN_F6R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F6R1_FB6_Pos                     (6U)                              
+#define CAN_F6R1_FB6_Msk                     (0x1U << CAN_F6R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F6R1_FB6                         CAN_F6R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F6R1_FB7_Pos                     (7U)                              
+#define CAN_F6R1_FB7_Msk                     (0x1U << CAN_F6R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F6R1_FB7                         CAN_F6R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F6R1_FB8_Pos                     (8U)                              
+#define CAN_F6R1_FB8_Msk                     (0x1U << CAN_F6R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F6R1_FB8                         CAN_F6R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F6R1_FB9_Pos                     (9U)                              
+#define CAN_F6R1_FB9_Msk                     (0x1U << CAN_F6R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F6R1_FB9                         CAN_F6R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F6R1_FB10_Pos                    (10U)                             
+#define CAN_F6R1_FB10_Msk                    (0x1U << CAN_F6R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F6R1_FB10                        CAN_F6R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F6R1_FB11_Pos                    (11U)                             
+#define CAN_F6R1_FB11_Msk                    (0x1U << CAN_F6R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F6R1_FB11                        CAN_F6R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F6R1_FB12_Pos                    (12U)                             
+#define CAN_F6R1_FB12_Msk                    (0x1U << CAN_F6R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F6R1_FB12                        CAN_F6R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F6R1_FB13_Pos                    (13U)                             
+#define CAN_F6R1_FB13_Msk                    (0x1U << CAN_F6R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F6R1_FB13                        CAN_F6R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F6R1_FB14_Pos                    (14U)                             
+#define CAN_F6R1_FB14_Msk                    (0x1U << CAN_F6R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F6R1_FB14                        CAN_F6R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F6R1_FB15_Pos                    (15U)                             
+#define CAN_F6R1_FB15_Msk                    (0x1U << CAN_F6R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F6R1_FB15                        CAN_F6R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F6R1_FB16_Pos                    (16U)                             
+#define CAN_F6R1_FB16_Msk                    (0x1U << CAN_F6R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F6R1_FB16                        CAN_F6R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F6R1_FB17_Pos                    (17U)                             
+#define CAN_F6R1_FB17_Msk                    (0x1U << CAN_F6R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F6R1_FB17                        CAN_F6R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F6R1_FB18_Pos                    (18U)                             
+#define CAN_F6R1_FB18_Msk                    (0x1U << CAN_F6R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F6R1_FB18                        CAN_F6R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F6R1_FB19_Pos                    (19U)                             
+#define CAN_F6R1_FB19_Msk                    (0x1U << CAN_F6R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F6R1_FB19                        CAN_F6R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F6R1_FB20_Pos                    (20U)                             
+#define CAN_F6R1_FB20_Msk                    (0x1U << CAN_F6R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F6R1_FB20                        CAN_F6R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F6R1_FB21_Pos                    (21U)                             
+#define CAN_F6R1_FB21_Msk                    (0x1U << CAN_F6R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F6R1_FB21                        CAN_F6R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F6R1_FB22_Pos                    (22U)                             
+#define CAN_F6R1_FB22_Msk                    (0x1U << CAN_F6R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F6R1_FB22                        CAN_F6R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F6R1_FB23_Pos                    (23U)                             
+#define CAN_F6R1_FB23_Msk                    (0x1U << CAN_F6R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F6R1_FB23                        CAN_F6R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F6R1_FB24_Pos                    (24U)                             
+#define CAN_F6R1_FB24_Msk                    (0x1U << CAN_F6R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F6R1_FB24                        CAN_F6R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F6R1_FB25_Pos                    (25U)                             
+#define CAN_F6R1_FB25_Msk                    (0x1U << CAN_F6R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F6R1_FB25                        CAN_F6R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F6R1_FB26_Pos                    (26U)                             
+#define CAN_F6R1_FB26_Msk                    (0x1U << CAN_F6R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F6R1_FB26                        CAN_F6R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F6R1_FB27_Pos                    (27U)                             
+#define CAN_F6R1_FB27_Msk                    (0x1U << CAN_F6R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F6R1_FB27                        CAN_F6R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F6R1_FB28_Pos                    (28U)                             
+#define CAN_F6R1_FB28_Msk                    (0x1U << CAN_F6R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F6R1_FB28                        CAN_F6R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F6R1_FB29_Pos                    (29U)                             
+#define CAN_F6R1_FB29_Msk                    (0x1U << CAN_F6R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F6R1_FB29                        CAN_F6R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F6R1_FB30_Pos                    (30U)                             
+#define CAN_F6R1_FB30_Msk                    (0x1U << CAN_F6R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F6R1_FB30                        CAN_F6R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F6R1_FB31_Pos                    (31U)                             
+#define CAN_F6R1_FB31_Msk                    (0x1U << CAN_F6R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F6R1_FB31                        CAN_F6R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F7R1 register  *******************/
+#define CAN_F7R1_FB0_Pos                     (0U)                              
+#define CAN_F7R1_FB0_Msk                     (0x1U << CAN_F7R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F7R1_FB0                         CAN_F7R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F7R1_FB1_Pos                     (1U)                              
+#define CAN_F7R1_FB1_Msk                     (0x1U << CAN_F7R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F7R1_FB1                         CAN_F7R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F7R1_FB2_Pos                     (2U)                              
+#define CAN_F7R1_FB2_Msk                     (0x1U << CAN_F7R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F7R1_FB2                         CAN_F7R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F7R1_FB3_Pos                     (3U)                              
+#define CAN_F7R1_FB3_Msk                     (0x1U << CAN_F7R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F7R1_FB3                         CAN_F7R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F7R1_FB4_Pos                     (4U)                              
+#define CAN_F7R1_FB4_Msk                     (0x1U << CAN_F7R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F7R1_FB4                         CAN_F7R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F7R1_FB5_Pos                     (5U)                              
+#define CAN_F7R1_FB5_Msk                     (0x1U << CAN_F7R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F7R1_FB5                         CAN_F7R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F7R1_FB6_Pos                     (6U)                              
+#define CAN_F7R1_FB6_Msk                     (0x1U << CAN_F7R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F7R1_FB6                         CAN_F7R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F7R1_FB7_Pos                     (7U)                              
+#define CAN_F7R1_FB7_Msk                     (0x1U << CAN_F7R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F7R1_FB7                         CAN_F7R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F7R1_FB8_Pos                     (8U)                              
+#define CAN_F7R1_FB8_Msk                     (0x1U << CAN_F7R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F7R1_FB8                         CAN_F7R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F7R1_FB9_Pos                     (9U)                              
+#define CAN_F7R1_FB9_Msk                     (0x1U << CAN_F7R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F7R1_FB9                         CAN_F7R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F7R1_FB10_Pos                    (10U)                             
+#define CAN_F7R1_FB10_Msk                    (0x1U << CAN_F7R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F7R1_FB10                        CAN_F7R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F7R1_FB11_Pos                    (11U)                             
+#define CAN_F7R1_FB11_Msk                    (0x1U << CAN_F7R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F7R1_FB11                        CAN_F7R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F7R1_FB12_Pos                    (12U)                             
+#define CAN_F7R1_FB12_Msk                    (0x1U << CAN_F7R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F7R1_FB12                        CAN_F7R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F7R1_FB13_Pos                    (13U)                             
+#define CAN_F7R1_FB13_Msk                    (0x1U << CAN_F7R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F7R1_FB13                        CAN_F7R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F7R1_FB14_Pos                    (14U)                             
+#define CAN_F7R1_FB14_Msk                    (0x1U << CAN_F7R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F7R1_FB14                        CAN_F7R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F7R1_FB15_Pos                    (15U)                             
+#define CAN_F7R1_FB15_Msk                    (0x1U << CAN_F7R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F7R1_FB15                        CAN_F7R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F7R1_FB16_Pos                    (16U)                             
+#define CAN_F7R1_FB16_Msk                    (0x1U << CAN_F7R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F7R1_FB16                        CAN_F7R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F7R1_FB17_Pos                    (17U)                             
+#define CAN_F7R1_FB17_Msk                    (0x1U << CAN_F7R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F7R1_FB17                        CAN_F7R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F7R1_FB18_Pos                    (18U)                             
+#define CAN_F7R1_FB18_Msk                    (0x1U << CAN_F7R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F7R1_FB18                        CAN_F7R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F7R1_FB19_Pos                    (19U)                             
+#define CAN_F7R1_FB19_Msk                    (0x1U << CAN_F7R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F7R1_FB19                        CAN_F7R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F7R1_FB20_Pos                    (20U)                             
+#define CAN_F7R1_FB20_Msk                    (0x1U << CAN_F7R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F7R1_FB20                        CAN_F7R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F7R1_FB21_Pos                    (21U)                             
+#define CAN_F7R1_FB21_Msk                    (0x1U << CAN_F7R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F7R1_FB21                        CAN_F7R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F7R1_FB22_Pos                    (22U)                             
+#define CAN_F7R1_FB22_Msk                    (0x1U << CAN_F7R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F7R1_FB22                        CAN_F7R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F7R1_FB23_Pos                    (23U)                             
+#define CAN_F7R1_FB23_Msk                    (0x1U << CAN_F7R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F7R1_FB23                        CAN_F7R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F7R1_FB24_Pos                    (24U)                             
+#define CAN_F7R1_FB24_Msk                    (0x1U << CAN_F7R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F7R1_FB24                        CAN_F7R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F7R1_FB25_Pos                    (25U)                             
+#define CAN_F7R1_FB25_Msk                    (0x1U << CAN_F7R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F7R1_FB25                        CAN_F7R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F7R1_FB26_Pos                    (26U)                             
+#define CAN_F7R1_FB26_Msk                    (0x1U << CAN_F7R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F7R1_FB26                        CAN_F7R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F7R1_FB27_Pos                    (27U)                             
+#define CAN_F7R1_FB27_Msk                    (0x1U << CAN_F7R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F7R1_FB27                        CAN_F7R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F7R1_FB28_Pos                    (28U)                             
+#define CAN_F7R1_FB28_Msk                    (0x1U << CAN_F7R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F7R1_FB28                        CAN_F7R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F7R1_FB29_Pos                    (29U)                             
+#define CAN_F7R1_FB29_Msk                    (0x1U << CAN_F7R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F7R1_FB29                        CAN_F7R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F7R1_FB30_Pos                    (30U)                             
+#define CAN_F7R1_FB30_Msk                    (0x1U << CAN_F7R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F7R1_FB30                        CAN_F7R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F7R1_FB31_Pos                    (31U)                             
+#define CAN_F7R1_FB31_Msk                    (0x1U << CAN_F7R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F7R1_FB31                        CAN_F7R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F8R1 register  *******************/
+#define CAN_F8R1_FB0_Pos                     (0U)                              
+#define CAN_F8R1_FB0_Msk                     (0x1U << CAN_F8R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F8R1_FB0                         CAN_F8R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F8R1_FB1_Pos                     (1U)                              
+#define CAN_F8R1_FB1_Msk                     (0x1U << CAN_F8R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F8R1_FB1                         CAN_F8R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F8R1_FB2_Pos                     (2U)                              
+#define CAN_F8R1_FB2_Msk                     (0x1U << CAN_F8R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F8R1_FB2                         CAN_F8R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F8R1_FB3_Pos                     (3U)                              
+#define CAN_F8R1_FB3_Msk                     (0x1U << CAN_F8R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F8R1_FB3                         CAN_F8R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F8R1_FB4_Pos                     (4U)                              
+#define CAN_F8R1_FB4_Msk                     (0x1U << CAN_F8R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F8R1_FB4                         CAN_F8R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F8R1_FB5_Pos                     (5U)                              
+#define CAN_F8R1_FB5_Msk                     (0x1U << CAN_F8R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F8R1_FB5                         CAN_F8R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F8R1_FB6_Pos                     (6U)                              
+#define CAN_F8R1_FB6_Msk                     (0x1U << CAN_F8R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F8R1_FB6                         CAN_F8R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F8R1_FB7_Pos                     (7U)                              
+#define CAN_F8R1_FB7_Msk                     (0x1U << CAN_F8R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F8R1_FB7                         CAN_F8R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F8R1_FB8_Pos                     (8U)                              
+#define CAN_F8R1_FB8_Msk                     (0x1U << CAN_F8R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F8R1_FB8                         CAN_F8R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F8R1_FB9_Pos                     (9U)                              
+#define CAN_F8R1_FB9_Msk                     (0x1U << CAN_F8R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F8R1_FB9                         CAN_F8R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F8R1_FB10_Pos                    (10U)                             
+#define CAN_F8R1_FB10_Msk                    (0x1U << CAN_F8R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F8R1_FB10                        CAN_F8R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F8R1_FB11_Pos                    (11U)                             
+#define CAN_F8R1_FB11_Msk                    (0x1U << CAN_F8R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F8R1_FB11                        CAN_F8R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F8R1_FB12_Pos                    (12U)                             
+#define CAN_F8R1_FB12_Msk                    (0x1U << CAN_F8R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F8R1_FB12                        CAN_F8R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F8R1_FB13_Pos                    (13U)                             
+#define CAN_F8R1_FB13_Msk                    (0x1U << CAN_F8R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F8R1_FB13                        CAN_F8R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F8R1_FB14_Pos                    (14U)                             
+#define CAN_F8R1_FB14_Msk                    (0x1U << CAN_F8R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F8R1_FB14                        CAN_F8R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F8R1_FB15_Pos                    (15U)                             
+#define CAN_F8R1_FB15_Msk                    (0x1U << CAN_F8R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F8R1_FB15                        CAN_F8R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F8R1_FB16_Pos                    (16U)                             
+#define CAN_F8R1_FB16_Msk                    (0x1U << CAN_F8R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F8R1_FB16                        CAN_F8R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F8R1_FB17_Pos                    (17U)                             
+#define CAN_F8R1_FB17_Msk                    (0x1U << CAN_F8R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F8R1_FB17                        CAN_F8R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F8R1_FB18_Pos                    (18U)                             
+#define CAN_F8R1_FB18_Msk                    (0x1U << CAN_F8R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F8R1_FB18                        CAN_F8R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F8R1_FB19_Pos                    (19U)                             
+#define CAN_F8R1_FB19_Msk                    (0x1U << CAN_F8R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F8R1_FB19                        CAN_F8R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F8R1_FB20_Pos                    (20U)                             
+#define CAN_F8R1_FB20_Msk                    (0x1U << CAN_F8R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F8R1_FB20                        CAN_F8R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F8R1_FB21_Pos                    (21U)                             
+#define CAN_F8R1_FB21_Msk                    (0x1U << CAN_F8R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F8R1_FB21                        CAN_F8R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F8R1_FB22_Pos                    (22U)                             
+#define CAN_F8R1_FB22_Msk                    (0x1U << CAN_F8R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F8R1_FB22                        CAN_F8R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F8R1_FB23_Pos                    (23U)                             
+#define CAN_F8R1_FB23_Msk                    (0x1U << CAN_F8R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F8R1_FB23                        CAN_F8R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F8R1_FB24_Pos                    (24U)                             
+#define CAN_F8R1_FB24_Msk                    (0x1U << CAN_F8R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F8R1_FB24                        CAN_F8R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F8R1_FB25_Pos                    (25U)                             
+#define CAN_F8R1_FB25_Msk                    (0x1U << CAN_F8R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F8R1_FB25                        CAN_F8R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F8R1_FB26_Pos                    (26U)                             
+#define CAN_F8R1_FB26_Msk                    (0x1U << CAN_F8R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F8R1_FB26                        CAN_F8R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F8R1_FB27_Pos                    (27U)                             
+#define CAN_F8R1_FB27_Msk                    (0x1U << CAN_F8R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F8R1_FB27                        CAN_F8R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F8R1_FB28_Pos                    (28U)                             
+#define CAN_F8R1_FB28_Msk                    (0x1U << CAN_F8R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F8R1_FB28                        CAN_F8R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F8R1_FB29_Pos                    (29U)                             
+#define CAN_F8R1_FB29_Msk                    (0x1U << CAN_F8R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F8R1_FB29                        CAN_F8R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F8R1_FB30_Pos                    (30U)                             
+#define CAN_F8R1_FB30_Msk                    (0x1U << CAN_F8R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F8R1_FB30                        CAN_F8R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F8R1_FB31_Pos                    (31U)                             
+#define CAN_F8R1_FB31_Msk                    (0x1U << CAN_F8R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F8R1_FB31                        CAN_F8R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F9R1 register  *******************/
+#define CAN_F9R1_FB0_Pos                     (0U)                              
+#define CAN_F9R1_FB0_Msk                     (0x1U << CAN_F9R1_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F9R1_FB0                         CAN_F9R1_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F9R1_FB1_Pos                     (1U)                              
+#define CAN_F9R1_FB1_Msk                     (0x1U << CAN_F9R1_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F9R1_FB1                         CAN_F9R1_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F9R1_FB2_Pos                     (2U)                              
+#define CAN_F9R1_FB2_Msk                     (0x1U << CAN_F9R1_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F9R1_FB2                         CAN_F9R1_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F9R1_FB3_Pos                     (3U)                              
+#define CAN_F9R1_FB3_Msk                     (0x1U << CAN_F9R1_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F9R1_FB3                         CAN_F9R1_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F9R1_FB4_Pos                     (4U)                              
+#define CAN_F9R1_FB4_Msk                     (0x1U << CAN_F9R1_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F9R1_FB4                         CAN_F9R1_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F9R1_FB5_Pos                     (5U)                              
+#define CAN_F9R1_FB5_Msk                     (0x1U << CAN_F9R1_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F9R1_FB5                         CAN_F9R1_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F9R1_FB6_Pos                     (6U)                              
+#define CAN_F9R1_FB6_Msk                     (0x1U << CAN_F9R1_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F9R1_FB6                         CAN_F9R1_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F9R1_FB7_Pos                     (7U)                              
+#define CAN_F9R1_FB7_Msk                     (0x1U << CAN_F9R1_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F9R1_FB7                         CAN_F9R1_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F9R1_FB8_Pos                     (8U)                              
+#define CAN_F9R1_FB8_Msk                     (0x1U << CAN_F9R1_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F9R1_FB8                         CAN_F9R1_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F9R1_FB9_Pos                     (9U)                              
+#define CAN_F9R1_FB9_Msk                     (0x1U << CAN_F9R1_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F9R1_FB9                         CAN_F9R1_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F9R1_FB10_Pos                    (10U)                             
+#define CAN_F9R1_FB10_Msk                    (0x1U << CAN_F9R1_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F9R1_FB10                        CAN_F9R1_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F9R1_FB11_Pos                    (11U)                             
+#define CAN_F9R1_FB11_Msk                    (0x1U << CAN_F9R1_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F9R1_FB11                        CAN_F9R1_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F9R1_FB12_Pos                    (12U)                             
+#define CAN_F9R1_FB12_Msk                    (0x1U << CAN_F9R1_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F9R1_FB12                        CAN_F9R1_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F9R1_FB13_Pos                    (13U)                             
+#define CAN_F9R1_FB13_Msk                    (0x1U << CAN_F9R1_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F9R1_FB13                        CAN_F9R1_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F9R1_FB14_Pos                    (14U)                             
+#define CAN_F9R1_FB14_Msk                    (0x1U << CAN_F9R1_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F9R1_FB14                        CAN_F9R1_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F9R1_FB15_Pos                    (15U)                             
+#define CAN_F9R1_FB15_Msk                    (0x1U << CAN_F9R1_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F9R1_FB15                        CAN_F9R1_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F9R1_FB16_Pos                    (16U)                             
+#define CAN_F9R1_FB16_Msk                    (0x1U << CAN_F9R1_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F9R1_FB16                        CAN_F9R1_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F9R1_FB17_Pos                    (17U)                             
+#define CAN_F9R1_FB17_Msk                    (0x1U << CAN_F9R1_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F9R1_FB17                        CAN_F9R1_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F9R1_FB18_Pos                    (18U)                             
+#define CAN_F9R1_FB18_Msk                    (0x1U << CAN_F9R1_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F9R1_FB18                        CAN_F9R1_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F9R1_FB19_Pos                    (19U)                             
+#define CAN_F9R1_FB19_Msk                    (0x1U << CAN_F9R1_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F9R1_FB19                        CAN_F9R1_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F9R1_FB20_Pos                    (20U)                             
+#define CAN_F9R1_FB20_Msk                    (0x1U << CAN_F9R1_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F9R1_FB20                        CAN_F9R1_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F9R1_FB21_Pos                    (21U)                             
+#define CAN_F9R1_FB21_Msk                    (0x1U << CAN_F9R1_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F9R1_FB21                        CAN_F9R1_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F9R1_FB22_Pos                    (22U)                             
+#define CAN_F9R1_FB22_Msk                    (0x1U << CAN_F9R1_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F9R1_FB22                        CAN_F9R1_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F9R1_FB23_Pos                    (23U)                             
+#define CAN_F9R1_FB23_Msk                    (0x1U << CAN_F9R1_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F9R1_FB23                        CAN_F9R1_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F9R1_FB24_Pos                    (24U)                             
+#define CAN_F9R1_FB24_Msk                    (0x1U << CAN_F9R1_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F9R1_FB24                        CAN_F9R1_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F9R1_FB25_Pos                    (25U)                             
+#define CAN_F9R1_FB25_Msk                    (0x1U << CAN_F9R1_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F9R1_FB25                        CAN_F9R1_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F9R1_FB26_Pos                    (26U)                             
+#define CAN_F9R1_FB26_Msk                    (0x1U << CAN_F9R1_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F9R1_FB26                        CAN_F9R1_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F9R1_FB27_Pos                    (27U)                             
+#define CAN_F9R1_FB27_Msk                    (0x1U << CAN_F9R1_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F9R1_FB27                        CAN_F9R1_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F9R1_FB28_Pos                    (28U)                             
+#define CAN_F9R1_FB28_Msk                    (0x1U << CAN_F9R1_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F9R1_FB28                        CAN_F9R1_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F9R1_FB29_Pos                    (29U)                             
+#define CAN_F9R1_FB29_Msk                    (0x1U << CAN_F9R1_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F9R1_FB29                        CAN_F9R1_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F9R1_FB30_Pos                    (30U)                             
+#define CAN_F9R1_FB30_Msk                    (0x1U << CAN_F9R1_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F9R1_FB30                        CAN_F9R1_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F9R1_FB31_Pos                    (31U)                             
+#define CAN_F9R1_FB31_Msk                    (0x1U << CAN_F9R1_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F9R1_FB31                        CAN_F9R1_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F10R1 register  ******************/
+#define CAN_F10R1_FB0_Pos                    (0U)                              
+#define CAN_F10R1_FB0_Msk                    (0x1U << CAN_F10R1_FB0_Pos)       /*!< 0x00000001 */
+#define CAN_F10R1_FB0                        CAN_F10R1_FB0_Msk                 /*!< Filter bit 0 */
+#define CAN_F10R1_FB1_Pos                    (1U)                              
+#define CAN_F10R1_FB1_Msk                    (0x1U << CAN_F10R1_FB1_Pos)       /*!< 0x00000002 */
+#define CAN_F10R1_FB1                        CAN_F10R1_FB1_Msk                 /*!< Filter bit 1 */
+#define CAN_F10R1_FB2_Pos                    (2U)                              
+#define CAN_F10R1_FB2_Msk                    (0x1U << CAN_F10R1_FB2_Pos)       /*!< 0x00000004 */
+#define CAN_F10R1_FB2                        CAN_F10R1_FB2_Msk                 /*!< Filter bit 2 */
+#define CAN_F10R1_FB3_Pos                    (3U)                              
+#define CAN_F10R1_FB3_Msk                    (0x1U << CAN_F10R1_FB3_Pos)       /*!< 0x00000008 */
+#define CAN_F10R1_FB3                        CAN_F10R1_FB3_Msk                 /*!< Filter bit 3 */
+#define CAN_F10R1_FB4_Pos                    (4U)                              
+#define CAN_F10R1_FB4_Msk                    (0x1U << CAN_F10R1_FB4_Pos)       /*!< 0x00000010 */
+#define CAN_F10R1_FB4                        CAN_F10R1_FB4_Msk                 /*!< Filter bit 4 */
+#define CAN_F10R1_FB5_Pos                    (5U)                              
+#define CAN_F10R1_FB5_Msk                    (0x1U << CAN_F10R1_FB5_Pos)       /*!< 0x00000020 */
+#define CAN_F10R1_FB5                        CAN_F10R1_FB5_Msk                 /*!< Filter bit 5 */
+#define CAN_F10R1_FB6_Pos                    (6U)                              
+#define CAN_F10R1_FB6_Msk                    (0x1U << CAN_F10R1_FB6_Pos)       /*!< 0x00000040 */
+#define CAN_F10R1_FB6                        CAN_F10R1_FB6_Msk                 /*!< Filter bit 6 */
+#define CAN_F10R1_FB7_Pos                    (7U)                              
+#define CAN_F10R1_FB7_Msk                    (0x1U << CAN_F10R1_FB7_Pos)       /*!< 0x00000080 */
+#define CAN_F10R1_FB7                        CAN_F10R1_FB7_Msk                 /*!< Filter bit 7 */
+#define CAN_F10R1_FB8_Pos                    (8U)                              
+#define CAN_F10R1_FB8_Msk                    (0x1U << CAN_F10R1_FB8_Pos)       /*!< 0x00000100 */
+#define CAN_F10R1_FB8                        CAN_F10R1_FB8_Msk                 /*!< Filter bit 8 */
+#define CAN_F10R1_FB9_Pos                    (9U)                              
+#define CAN_F10R1_FB9_Msk                    (0x1U << CAN_F10R1_FB9_Pos)       /*!< 0x00000200 */
+#define CAN_F10R1_FB9                        CAN_F10R1_FB9_Msk                 /*!< Filter bit 9 */
+#define CAN_F10R1_FB10_Pos                   (10U)                             
+#define CAN_F10R1_FB10_Msk                   (0x1U << CAN_F10R1_FB10_Pos)      /*!< 0x00000400 */
+#define CAN_F10R1_FB10                       CAN_F10R1_FB10_Msk                /*!< Filter bit 10 */
+#define CAN_F10R1_FB11_Pos                   (11U)                             
+#define CAN_F10R1_FB11_Msk                   (0x1U << CAN_F10R1_FB11_Pos)      /*!< 0x00000800 */
+#define CAN_F10R1_FB11                       CAN_F10R1_FB11_Msk                /*!< Filter bit 11 */
+#define CAN_F10R1_FB12_Pos                   (12U)                             
+#define CAN_F10R1_FB12_Msk                   (0x1U << CAN_F10R1_FB12_Pos)      /*!< 0x00001000 */
+#define CAN_F10R1_FB12                       CAN_F10R1_FB12_Msk                /*!< Filter bit 12 */
+#define CAN_F10R1_FB13_Pos                   (13U)                             
+#define CAN_F10R1_FB13_Msk                   (0x1U << CAN_F10R1_FB13_Pos)      /*!< 0x00002000 */
+#define CAN_F10R1_FB13                       CAN_F10R1_FB13_Msk                /*!< Filter bit 13 */
+#define CAN_F10R1_FB14_Pos                   (14U)                             
+#define CAN_F10R1_FB14_Msk                   (0x1U << CAN_F10R1_FB14_Pos)      /*!< 0x00004000 */
+#define CAN_F10R1_FB14                       CAN_F10R1_FB14_Msk                /*!< Filter bit 14 */
+#define CAN_F10R1_FB15_Pos                   (15U)                             
+#define CAN_F10R1_FB15_Msk                   (0x1U << CAN_F10R1_FB15_Pos)      /*!< 0x00008000 */
+#define CAN_F10R1_FB15                       CAN_F10R1_FB15_Msk                /*!< Filter bit 15 */
+#define CAN_F10R1_FB16_Pos                   (16U)                             
+#define CAN_F10R1_FB16_Msk                   (0x1U << CAN_F10R1_FB16_Pos)      /*!< 0x00010000 */
+#define CAN_F10R1_FB16                       CAN_F10R1_FB16_Msk                /*!< Filter bit 16 */
+#define CAN_F10R1_FB17_Pos                   (17U)                             
+#define CAN_F10R1_FB17_Msk                   (0x1U << CAN_F10R1_FB17_Pos)      /*!< 0x00020000 */
+#define CAN_F10R1_FB17                       CAN_F10R1_FB17_Msk                /*!< Filter bit 17 */
+#define CAN_F10R1_FB18_Pos                   (18U)                             
+#define CAN_F10R1_FB18_Msk                   (0x1U << CAN_F10R1_FB18_Pos)      /*!< 0x00040000 */
+#define CAN_F10R1_FB18                       CAN_F10R1_FB18_Msk                /*!< Filter bit 18 */
+#define CAN_F10R1_FB19_Pos                   (19U)                             
+#define CAN_F10R1_FB19_Msk                   (0x1U << CAN_F10R1_FB19_Pos)      /*!< 0x00080000 */
+#define CAN_F10R1_FB19                       CAN_F10R1_FB19_Msk                /*!< Filter bit 19 */
+#define CAN_F10R1_FB20_Pos                   (20U)                             
+#define CAN_F10R1_FB20_Msk                   (0x1U << CAN_F10R1_FB20_Pos)      /*!< 0x00100000 */
+#define CAN_F10R1_FB20                       CAN_F10R1_FB20_Msk                /*!< Filter bit 20 */
+#define CAN_F10R1_FB21_Pos                   (21U)                             
+#define CAN_F10R1_FB21_Msk                   (0x1U << CAN_F10R1_FB21_Pos)      /*!< 0x00200000 */
+#define CAN_F10R1_FB21                       CAN_F10R1_FB21_Msk                /*!< Filter bit 21 */
+#define CAN_F10R1_FB22_Pos                   (22U)                             
+#define CAN_F10R1_FB22_Msk                   (0x1U << CAN_F10R1_FB22_Pos)      /*!< 0x00400000 */
+#define CAN_F10R1_FB22                       CAN_F10R1_FB22_Msk                /*!< Filter bit 22 */
+#define CAN_F10R1_FB23_Pos                   (23U)                             
+#define CAN_F10R1_FB23_Msk                   (0x1U << CAN_F10R1_FB23_Pos)      /*!< 0x00800000 */
+#define CAN_F10R1_FB23                       CAN_F10R1_FB23_Msk                /*!< Filter bit 23 */
+#define CAN_F10R1_FB24_Pos                   (24U)                             
+#define CAN_F10R1_FB24_Msk                   (0x1U << CAN_F10R1_FB24_Pos)      /*!< 0x01000000 */
+#define CAN_F10R1_FB24                       CAN_F10R1_FB24_Msk                /*!< Filter bit 24 */
+#define CAN_F10R1_FB25_Pos                   (25U)                             
+#define CAN_F10R1_FB25_Msk                   (0x1U << CAN_F10R1_FB25_Pos)      /*!< 0x02000000 */
+#define CAN_F10R1_FB25                       CAN_F10R1_FB25_Msk                /*!< Filter bit 25 */
+#define CAN_F10R1_FB26_Pos                   (26U)                             
+#define CAN_F10R1_FB26_Msk                   (0x1U << CAN_F10R1_FB26_Pos)      /*!< 0x04000000 */
+#define CAN_F10R1_FB26                       CAN_F10R1_FB26_Msk                /*!< Filter bit 26 */
+#define CAN_F10R1_FB27_Pos                   (27U)                             
+#define CAN_F10R1_FB27_Msk                   (0x1U << CAN_F10R1_FB27_Pos)      /*!< 0x08000000 */
+#define CAN_F10R1_FB27                       CAN_F10R1_FB27_Msk                /*!< Filter bit 27 */
+#define CAN_F10R1_FB28_Pos                   (28U)                             
+#define CAN_F10R1_FB28_Msk                   (0x1U << CAN_F10R1_FB28_Pos)      /*!< 0x10000000 */
+#define CAN_F10R1_FB28                       CAN_F10R1_FB28_Msk                /*!< Filter bit 28 */
+#define CAN_F10R1_FB29_Pos                   (29U)                             
+#define CAN_F10R1_FB29_Msk                   (0x1U << CAN_F10R1_FB29_Pos)      /*!< 0x20000000 */
+#define CAN_F10R1_FB29                       CAN_F10R1_FB29_Msk                /*!< Filter bit 29 */
+#define CAN_F10R1_FB30_Pos                   (30U)                             
+#define CAN_F10R1_FB30_Msk                   (0x1U << CAN_F10R1_FB30_Pos)      /*!< 0x40000000 */
+#define CAN_F10R1_FB30                       CAN_F10R1_FB30_Msk                /*!< Filter bit 30 */
+#define CAN_F10R1_FB31_Pos                   (31U)                             
+#define CAN_F10R1_FB31_Msk                   (0x1U << CAN_F10R1_FB31_Pos)      /*!< 0x80000000 */
+#define CAN_F10R1_FB31                       CAN_F10R1_FB31_Msk                /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F11R1 register  ******************/
+#define CAN_F11R1_FB0_Pos                    (0U)                              
+#define CAN_F11R1_FB0_Msk                    (0x1U << CAN_F11R1_FB0_Pos)       /*!< 0x00000001 */
+#define CAN_F11R1_FB0                        CAN_F11R1_FB0_Msk                 /*!< Filter bit 0 */
+#define CAN_F11R1_FB1_Pos                    (1U)                              
+#define CAN_F11R1_FB1_Msk                    (0x1U << CAN_F11R1_FB1_Pos)       /*!< 0x00000002 */
+#define CAN_F11R1_FB1                        CAN_F11R1_FB1_Msk                 /*!< Filter bit 1 */
+#define CAN_F11R1_FB2_Pos                    (2U)                              
+#define CAN_F11R1_FB2_Msk                    (0x1U << CAN_F11R1_FB2_Pos)       /*!< 0x00000004 */
+#define CAN_F11R1_FB2                        CAN_F11R1_FB2_Msk                 /*!< Filter bit 2 */
+#define CAN_F11R1_FB3_Pos                    (3U)                              
+#define CAN_F11R1_FB3_Msk                    (0x1U << CAN_F11R1_FB3_Pos)       /*!< 0x00000008 */
+#define CAN_F11R1_FB3                        CAN_F11R1_FB3_Msk                 /*!< Filter bit 3 */
+#define CAN_F11R1_FB4_Pos                    (4U)                              
+#define CAN_F11R1_FB4_Msk                    (0x1U << CAN_F11R1_FB4_Pos)       /*!< 0x00000010 */
+#define CAN_F11R1_FB4                        CAN_F11R1_FB4_Msk                 /*!< Filter bit 4 */
+#define CAN_F11R1_FB5_Pos                    (5U)                              
+#define CAN_F11R1_FB5_Msk                    (0x1U << CAN_F11R1_FB5_Pos)       /*!< 0x00000020 */
+#define CAN_F11R1_FB5                        CAN_F11R1_FB5_Msk                 /*!< Filter bit 5 */
+#define CAN_F11R1_FB6_Pos                    (6U)                              
+#define CAN_F11R1_FB6_Msk                    (0x1U << CAN_F11R1_FB6_Pos)       /*!< 0x00000040 */
+#define CAN_F11R1_FB6                        CAN_F11R1_FB6_Msk                 /*!< Filter bit 6 */
+#define CAN_F11R1_FB7_Pos                    (7U)                              
+#define CAN_F11R1_FB7_Msk                    (0x1U << CAN_F11R1_FB7_Pos)       /*!< 0x00000080 */
+#define CAN_F11R1_FB7                        CAN_F11R1_FB7_Msk                 /*!< Filter bit 7 */
+#define CAN_F11R1_FB8_Pos                    (8U)                              
+#define CAN_F11R1_FB8_Msk                    (0x1U << CAN_F11R1_FB8_Pos)       /*!< 0x00000100 */
+#define CAN_F11R1_FB8                        CAN_F11R1_FB8_Msk                 /*!< Filter bit 8 */
+#define CAN_F11R1_FB9_Pos                    (9U)                              
+#define CAN_F11R1_FB9_Msk                    (0x1U << CAN_F11R1_FB9_Pos)       /*!< 0x00000200 */
+#define CAN_F11R1_FB9                        CAN_F11R1_FB9_Msk                 /*!< Filter bit 9 */
+#define CAN_F11R1_FB10_Pos                   (10U)                             
+#define CAN_F11R1_FB10_Msk                   (0x1U << CAN_F11R1_FB10_Pos)      /*!< 0x00000400 */
+#define CAN_F11R1_FB10                       CAN_F11R1_FB10_Msk                /*!< Filter bit 10 */
+#define CAN_F11R1_FB11_Pos                   (11U)                             
+#define CAN_F11R1_FB11_Msk                   (0x1U << CAN_F11R1_FB11_Pos)      /*!< 0x00000800 */
+#define CAN_F11R1_FB11                       CAN_F11R1_FB11_Msk                /*!< Filter bit 11 */
+#define CAN_F11R1_FB12_Pos                   (12U)                             
+#define CAN_F11R1_FB12_Msk                   (0x1U << CAN_F11R1_FB12_Pos)      /*!< 0x00001000 */
+#define CAN_F11R1_FB12                       CAN_F11R1_FB12_Msk                /*!< Filter bit 12 */
+#define CAN_F11R1_FB13_Pos                   (13U)                             
+#define CAN_F11R1_FB13_Msk                   (0x1U << CAN_F11R1_FB13_Pos)      /*!< 0x00002000 */
+#define CAN_F11R1_FB13                       CAN_F11R1_FB13_Msk                /*!< Filter bit 13 */
+#define CAN_F11R1_FB14_Pos                   (14U)                             
+#define CAN_F11R1_FB14_Msk                   (0x1U << CAN_F11R1_FB14_Pos)      /*!< 0x00004000 */
+#define CAN_F11R1_FB14                       CAN_F11R1_FB14_Msk                /*!< Filter bit 14 */
+#define CAN_F11R1_FB15_Pos                   (15U)                             
+#define CAN_F11R1_FB15_Msk                   (0x1U << CAN_F11R1_FB15_Pos)      /*!< 0x00008000 */
+#define CAN_F11R1_FB15                       CAN_F11R1_FB15_Msk                /*!< Filter bit 15 */
+#define CAN_F11R1_FB16_Pos                   (16U)                             
+#define CAN_F11R1_FB16_Msk                   (0x1U << CAN_F11R1_FB16_Pos)      /*!< 0x00010000 */
+#define CAN_F11R1_FB16                       CAN_F11R1_FB16_Msk                /*!< Filter bit 16 */
+#define CAN_F11R1_FB17_Pos                   (17U)                             
+#define CAN_F11R1_FB17_Msk                   (0x1U << CAN_F11R1_FB17_Pos)      /*!< 0x00020000 */
+#define CAN_F11R1_FB17                       CAN_F11R1_FB17_Msk                /*!< Filter bit 17 */
+#define CAN_F11R1_FB18_Pos                   (18U)                             
+#define CAN_F11R1_FB18_Msk                   (0x1U << CAN_F11R1_FB18_Pos)      /*!< 0x00040000 */
+#define CAN_F11R1_FB18                       CAN_F11R1_FB18_Msk                /*!< Filter bit 18 */
+#define CAN_F11R1_FB19_Pos                   (19U)                             
+#define CAN_F11R1_FB19_Msk                   (0x1U << CAN_F11R1_FB19_Pos)      /*!< 0x00080000 */
+#define CAN_F11R1_FB19                       CAN_F11R1_FB19_Msk                /*!< Filter bit 19 */
+#define CAN_F11R1_FB20_Pos                   (20U)                             
+#define CAN_F11R1_FB20_Msk                   (0x1U << CAN_F11R1_FB20_Pos)      /*!< 0x00100000 */
+#define CAN_F11R1_FB20                       CAN_F11R1_FB20_Msk                /*!< Filter bit 20 */
+#define CAN_F11R1_FB21_Pos                   (21U)                             
+#define CAN_F11R1_FB21_Msk                   (0x1U << CAN_F11R1_FB21_Pos)      /*!< 0x00200000 */
+#define CAN_F11R1_FB21                       CAN_F11R1_FB21_Msk                /*!< Filter bit 21 */
+#define CAN_F11R1_FB22_Pos                   (22U)                             
+#define CAN_F11R1_FB22_Msk                   (0x1U << CAN_F11R1_FB22_Pos)      /*!< 0x00400000 */
+#define CAN_F11R1_FB22                       CAN_F11R1_FB22_Msk                /*!< Filter bit 22 */
+#define CAN_F11R1_FB23_Pos                   (23U)                             
+#define CAN_F11R1_FB23_Msk                   (0x1U << CAN_F11R1_FB23_Pos)      /*!< 0x00800000 */
+#define CAN_F11R1_FB23                       CAN_F11R1_FB23_Msk                /*!< Filter bit 23 */
+#define CAN_F11R1_FB24_Pos                   (24U)                             
+#define CAN_F11R1_FB24_Msk                   (0x1U << CAN_F11R1_FB24_Pos)      /*!< 0x01000000 */
+#define CAN_F11R1_FB24                       CAN_F11R1_FB24_Msk                /*!< Filter bit 24 */
+#define CAN_F11R1_FB25_Pos                   (25U)                             
+#define CAN_F11R1_FB25_Msk                   (0x1U << CAN_F11R1_FB25_Pos)      /*!< 0x02000000 */
+#define CAN_F11R1_FB25                       CAN_F11R1_FB25_Msk                /*!< Filter bit 25 */
+#define CAN_F11R1_FB26_Pos                   (26U)                             
+#define CAN_F11R1_FB26_Msk                   (0x1U << CAN_F11R1_FB26_Pos)      /*!< 0x04000000 */
+#define CAN_F11R1_FB26                       CAN_F11R1_FB26_Msk                /*!< Filter bit 26 */
+#define CAN_F11R1_FB27_Pos                   (27U)                             
+#define CAN_F11R1_FB27_Msk                   (0x1U << CAN_F11R1_FB27_Pos)      /*!< 0x08000000 */
+#define CAN_F11R1_FB27                       CAN_F11R1_FB27_Msk                /*!< Filter bit 27 */
+#define CAN_F11R1_FB28_Pos                   (28U)                             
+#define CAN_F11R1_FB28_Msk                   (0x1U << CAN_F11R1_FB28_Pos)      /*!< 0x10000000 */
+#define CAN_F11R1_FB28                       CAN_F11R1_FB28_Msk                /*!< Filter bit 28 */
+#define CAN_F11R1_FB29_Pos                   (29U)                             
+#define CAN_F11R1_FB29_Msk                   (0x1U << CAN_F11R1_FB29_Pos)      /*!< 0x20000000 */
+#define CAN_F11R1_FB29                       CAN_F11R1_FB29_Msk                /*!< Filter bit 29 */
+#define CAN_F11R1_FB30_Pos                   (30U)                             
+#define CAN_F11R1_FB30_Msk                   (0x1U << CAN_F11R1_FB30_Pos)      /*!< 0x40000000 */
+#define CAN_F11R1_FB30                       CAN_F11R1_FB30_Msk                /*!< Filter bit 30 */
+#define CAN_F11R1_FB31_Pos                   (31U)                             
+#define CAN_F11R1_FB31_Msk                   (0x1U << CAN_F11R1_FB31_Pos)      /*!< 0x80000000 */
+#define CAN_F11R1_FB31                       CAN_F11R1_FB31_Msk                /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F12R1 register  ******************/
+#define CAN_F12R1_FB0_Pos                    (0U)                              
+#define CAN_F12R1_FB0_Msk                    (0x1U << CAN_F12R1_FB0_Pos)       /*!< 0x00000001 */
+#define CAN_F12R1_FB0                        CAN_F12R1_FB0_Msk                 /*!< Filter bit 0 */
+#define CAN_F12R1_FB1_Pos                    (1U)                              
+#define CAN_F12R1_FB1_Msk                    (0x1U << CAN_F12R1_FB1_Pos)       /*!< 0x00000002 */
+#define CAN_F12R1_FB1                        CAN_F12R1_FB1_Msk                 /*!< Filter bit 1 */
+#define CAN_F12R1_FB2_Pos                    (2U)                              
+#define CAN_F12R1_FB2_Msk                    (0x1U << CAN_F12R1_FB2_Pos)       /*!< 0x00000004 */
+#define CAN_F12R1_FB2                        CAN_F12R1_FB2_Msk                 /*!< Filter bit 2 */
+#define CAN_F12R1_FB3_Pos                    (3U)                              
+#define CAN_F12R1_FB3_Msk                    (0x1U << CAN_F12R1_FB3_Pos)       /*!< 0x00000008 */
+#define CAN_F12R1_FB3                        CAN_F12R1_FB3_Msk                 /*!< Filter bit 3 */
+#define CAN_F12R1_FB4_Pos                    (4U)                              
+#define CAN_F12R1_FB4_Msk                    (0x1U << CAN_F12R1_FB4_Pos)       /*!< 0x00000010 */
+#define CAN_F12R1_FB4                        CAN_F12R1_FB4_Msk                 /*!< Filter bit 4 */
+#define CAN_F12R1_FB5_Pos                    (5U)                              
+#define CAN_F12R1_FB5_Msk                    (0x1U << CAN_F12R1_FB5_Pos)       /*!< 0x00000020 */
+#define CAN_F12R1_FB5                        CAN_F12R1_FB5_Msk                 /*!< Filter bit 5 */
+#define CAN_F12R1_FB6_Pos                    (6U)                              
+#define CAN_F12R1_FB6_Msk                    (0x1U << CAN_F12R1_FB6_Pos)       /*!< 0x00000040 */
+#define CAN_F12R1_FB6                        CAN_F12R1_FB6_Msk                 /*!< Filter bit 6 */
+#define CAN_F12R1_FB7_Pos                    (7U)                              
+#define CAN_F12R1_FB7_Msk                    (0x1U << CAN_F12R1_FB7_Pos)       /*!< 0x00000080 */
+#define CAN_F12R1_FB7                        CAN_F12R1_FB7_Msk                 /*!< Filter bit 7 */
+#define CAN_F12R1_FB8_Pos                    (8U)                              
+#define CAN_F12R1_FB8_Msk                    (0x1U << CAN_F12R1_FB8_Pos)       /*!< 0x00000100 */
+#define CAN_F12R1_FB8                        CAN_F12R1_FB8_Msk                 /*!< Filter bit 8 */
+#define CAN_F12R1_FB9_Pos                    (9U)                              
+#define CAN_F12R1_FB9_Msk                    (0x1U << CAN_F12R1_FB9_Pos)       /*!< 0x00000200 */
+#define CAN_F12R1_FB9                        CAN_F12R1_FB9_Msk                 /*!< Filter bit 9 */
+#define CAN_F12R1_FB10_Pos                   (10U)                             
+#define CAN_F12R1_FB10_Msk                   (0x1U << CAN_F12R1_FB10_Pos)      /*!< 0x00000400 */
+#define CAN_F12R1_FB10                       CAN_F12R1_FB10_Msk                /*!< Filter bit 10 */
+#define CAN_F12R1_FB11_Pos                   (11U)                             
+#define CAN_F12R1_FB11_Msk                   (0x1U << CAN_F12R1_FB11_Pos)      /*!< 0x00000800 */
+#define CAN_F12R1_FB11                       CAN_F12R1_FB11_Msk                /*!< Filter bit 11 */
+#define CAN_F12R1_FB12_Pos                   (12U)                             
+#define CAN_F12R1_FB12_Msk                   (0x1U << CAN_F12R1_FB12_Pos)      /*!< 0x00001000 */
+#define CAN_F12R1_FB12                       CAN_F12R1_FB12_Msk                /*!< Filter bit 12 */
+#define CAN_F12R1_FB13_Pos                   (13U)                             
+#define CAN_F12R1_FB13_Msk                   (0x1U << CAN_F12R1_FB13_Pos)      /*!< 0x00002000 */
+#define CAN_F12R1_FB13                       CAN_F12R1_FB13_Msk                /*!< Filter bit 13 */
+#define CAN_F12R1_FB14_Pos                   (14U)                             
+#define CAN_F12R1_FB14_Msk                   (0x1U << CAN_F12R1_FB14_Pos)      /*!< 0x00004000 */
+#define CAN_F12R1_FB14                       CAN_F12R1_FB14_Msk                /*!< Filter bit 14 */
+#define CAN_F12R1_FB15_Pos                   (15U)                             
+#define CAN_F12R1_FB15_Msk                   (0x1U << CAN_F12R1_FB15_Pos)      /*!< 0x00008000 */
+#define CAN_F12R1_FB15                       CAN_F12R1_FB15_Msk                /*!< Filter bit 15 */
+#define CAN_F12R1_FB16_Pos                   (16U)                             
+#define CAN_F12R1_FB16_Msk                   (0x1U << CAN_F12R1_FB16_Pos)      /*!< 0x00010000 */
+#define CAN_F12R1_FB16                       CAN_F12R1_FB16_Msk                /*!< Filter bit 16 */
+#define CAN_F12R1_FB17_Pos                   (17U)                             
+#define CAN_F12R1_FB17_Msk                   (0x1U << CAN_F12R1_FB17_Pos)      /*!< 0x00020000 */
+#define CAN_F12R1_FB17                       CAN_F12R1_FB17_Msk                /*!< Filter bit 17 */
+#define CAN_F12R1_FB18_Pos                   (18U)                             
+#define CAN_F12R1_FB18_Msk                   (0x1U << CAN_F12R1_FB18_Pos)      /*!< 0x00040000 */
+#define CAN_F12R1_FB18                       CAN_F12R1_FB18_Msk                /*!< Filter bit 18 */
+#define CAN_F12R1_FB19_Pos                   (19U)                             
+#define CAN_F12R1_FB19_Msk                   (0x1U << CAN_F12R1_FB19_Pos)      /*!< 0x00080000 */
+#define CAN_F12R1_FB19                       CAN_F12R1_FB19_Msk                /*!< Filter bit 19 */
+#define CAN_F12R1_FB20_Pos                   (20U)                             
+#define CAN_F12R1_FB20_Msk                   (0x1U << CAN_F12R1_FB20_Pos)      /*!< 0x00100000 */
+#define CAN_F12R1_FB20                       CAN_F12R1_FB20_Msk                /*!< Filter bit 20 */
+#define CAN_F12R1_FB21_Pos                   (21U)                             
+#define CAN_F12R1_FB21_Msk                   (0x1U << CAN_F12R1_FB21_Pos)      /*!< 0x00200000 */
+#define CAN_F12R1_FB21                       CAN_F12R1_FB21_Msk                /*!< Filter bit 21 */
+#define CAN_F12R1_FB22_Pos                   (22U)                             
+#define CAN_F12R1_FB22_Msk                   (0x1U << CAN_F12R1_FB22_Pos)      /*!< 0x00400000 */
+#define CAN_F12R1_FB22                       CAN_F12R1_FB22_Msk                /*!< Filter bit 22 */
+#define CAN_F12R1_FB23_Pos                   (23U)                             
+#define CAN_F12R1_FB23_Msk                   (0x1U << CAN_F12R1_FB23_Pos)      /*!< 0x00800000 */
+#define CAN_F12R1_FB23                       CAN_F12R1_FB23_Msk                /*!< Filter bit 23 */
+#define CAN_F12R1_FB24_Pos                   (24U)                             
+#define CAN_F12R1_FB24_Msk                   (0x1U << CAN_F12R1_FB24_Pos)      /*!< 0x01000000 */
+#define CAN_F12R1_FB24                       CAN_F12R1_FB24_Msk                /*!< Filter bit 24 */
+#define CAN_F12R1_FB25_Pos                   (25U)                             
+#define CAN_F12R1_FB25_Msk                   (0x1U << CAN_F12R1_FB25_Pos)      /*!< 0x02000000 */
+#define CAN_F12R1_FB25                       CAN_F12R1_FB25_Msk                /*!< Filter bit 25 */
+#define CAN_F12R1_FB26_Pos                   (26U)                             
+#define CAN_F12R1_FB26_Msk                   (0x1U << CAN_F12R1_FB26_Pos)      /*!< 0x04000000 */
+#define CAN_F12R1_FB26                       CAN_F12R1_FB26_Msk                /*!< Filter bit 26 */
+#define CAN_F12R1_FB27_Pos                   (27U)                             
+#define CAN_F12R1_FB27_Msk                   (0x1U << CAN_F12R1_FB27_Pos)      /*!< 0x08000000 */
+#define CAN_F12R1_FB27                       CAN_F12R1_FB27_Msk                /*!< Filter bit 27 */
+#define CAN_F12R1_FB28_Pos                   (28U)                             
+#define CAN_F12R1_FB28_Msk                   (0x1U << CAN_F12R1_FB28_Pos)      /*!< 0x10000000 */
+#define CAN_F12R1_FB28                       CAN_F12R1_FB28_Msk                /*!< Filter bit 28 */
+#define CAN_F12R1_FB29_Pos                   (29U)                             
+#define CAN_F12R1_FB29_Msk                   (0x1U << CAN_F12R1_FB29_Pos)      /*!< 0x20000000 */
+#define CAN_F12R1_FB29                       CAN_F12R1_FB29_Msk                /*!< Filter bit 29 */
+#define CAN_F12R1_FB30_Pos                   (30U)                             
+#define CAN_F12R1_FB30_Msk                   (0x1U << CAN_F12R1_FB30_Pos)      /*!< 0x40000000 */
+#define CAN_F12R1_FB30                       CAN_F12R1_FB30_Msk                /*!< Filter bit 30 */
+#define CAN_F12R1_FB31_Pos                   (31U)                             
+#define CAN_F12R1_FB31_Msk                   (0x1U << CAN_F12R1_FB31_Pos)      /*!< 0x80000000 */
+#define CAN_F12R1_FB31                       CAN_F12R1_FB31_Msk                /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F13R1 register  ******************/
+#define CAN_F13R1_FB0_Pos                    (0U)                              
+#define CAN_F13R1_FB0_Msk                    (0x1U << CAN_F13R1_FB0_Pos)       /*!< 0x00000001 */
+#define CAN_F13R1_FB0                        CAN_F13R1_FB0_Msk                 /*!< Filter bit 0 */
+#define CAN_F13R1_FB1_Pos                    (1U)                              
+#define CAN_F13R1_FB1_Msk                    (0x1U << CAN_F13R1_FB1_Pos)       /*!< 0x00000002 */
+#define CAN_F13R1_FB1                        CAN_F13R1_FB1_Msk                 /*!< Filter bit 1 */
+#define CAN_F13R1_FB2_Pos                    (2U)                              
+#define CAN_F13R1_FB2_Msk                    (0x1U << CAN_F13R1_FB2_Pos)       /*!< 0x00000004 */
+#define CAN_F13R1_FB2                        CAN_F13R1_FB2_Msk                 /*!< Filter bit 2 */
+#define CAN_F13R1_FB3_Pos                    (3U)                              
+#define CAN_F13R1_FB3_Msk                    (0x1U << CAN_F13R1_FB3_Pos)       /*!< 0x00000008 */
+#define CAN_F13R1_FB3                        CAN_F13R1_FB3_Msk                 /*!< Filter bit 3 */
+#define CAN_F13R1_FB4_Pos                    (4U)                              
+#define CAN_F13R1_FB4_Msk                    (0x1U << CAN_F13R1_FB4_Pos)       /*!< 0x00000010 */
+#define CAN_F13R1_FB4                        CAN_F13R1_FB4_Msk                 /*!< Filter bit 4 */
+#define CAN_F13R1_FB5_Pos                    (5U)                              
+#define CAN_F13R1_FB5_Msk                    (0x1U << CAN_F13R1_FB5_Pos)       /*!< 0x00000020 */
+#define CAN_F13R1_FB5                        CAN_F13R1_FB5_Msk                 /*!< Filter bit 5 */
+#define CAN_F13R1_FB6_Pos                    (6U)                              
+#define CAN_F13R1_FB6_Msk                    (0x1U << CAN_F13R1_FB6_Pos)       /*!< 0x00000040 */
+#define CAN_F13R1_FB6                        CAN_F13R1_FB6_Msk                 /*!< Filter bit 6 */
+#define CAN_F13R1_FB7_Pos                    (7U)                              
+#define CAN_F13R1_FB7_Msk                    (0x1U << CAN_F13R1_FB7_Pos)       /*!< 0x00000080 */
+#define CAN_F13R1_FB7                        CAN_F13R1_FB7_Msk                 /*!< Filter bit 7 */
+#define CAN_F13R1_FB8_Pos                    (8U)                              
+#define CAN_F13R1_FB8_Msk                    (0x1U << CAN_F13R1_FB8_Pos)       /*!< 0x00000100 */
+#define CAN_F13R1_FB8                        CAN_F13R1_FB8_Msk                 /*!< Filter bit 8 */
+#define CAN_F13R1_FB9_Pos                    (9U)                              
+#define CAN_F13R1_FB9_Msk                    (0x1U << CAN_F13R1_FB9_Pos)       /*!< 0x00000200 */
+#define CAN_F13R1_FB9                        CAN_F13R1_FB9_Msk                 /*!< Filter bit 9 */
+#define CAN_F13R1_FB10_Pos                   (10U)                             
+#define CAN_F13R1_FB10_Msk                   (0x1U << CAN_F13R1_FB10_Pos)      /*!< 0x00000400 */
+#define CAN_F13R1_FB10                       CAN_F13R1_FB10_Msk                /*!< Filter bit 10 */
+#define CAN_F13R1_FB11_Pos                   (11U)                             
+#define CAN_F13R1_FB11_Msk                   (0x1U << CAN_F13R1_FB11_Pos)      /*!< 0x00000800 */
+#define CAN_F13R1_FB11                       CAN_F13R1_FB11_Msk                /*!< Filter bit 11 */
+#define CAN_F13R1_FB12_Pos                   (12U)                             
+#define CAN_F13R1_FB12_Msk                   (0x1U << CAN_F13R1_FB12_Pos)      /*!< 0x00001000 */
+#define CAN_F13R1_FB12                       CAN_F13R1_FB12_Msk                /*!< Filter bit 12 */
+#define CAN_F13R1_FB13_Pos                   (13U)                             
+#define CAN_F13R1_FB13_Msk                   (0x1U << CAN_F13R1_FB13_Pos)      /*!< 0x00002000 */
+#define CAN_F13R1_FB13                       CAN_F13R1_FB13_Msk                /*!< Filter bit 13 */
+#define CAN_F13R1_FB14_Pos                   (14U)                             
+#define CAN_F13R1_FB14_Msk                   (0x1U << CAN_F13R1_FB14_Pos)      /*!< 0x00004000 */
+#define CAN_F13R1_FB14                       CAN_F13R1_FB14_Msk                /*!< Filter bit 14 */
+#define CAN_F13R1_FB15_Pos                   (15U)                             
+#define CAN_F13R1_FB15_Msk                   (0x1U << CAN_F13R1_FB15_Pos)      /*!< 0x00008000 */
+#define CAN_F13R1_FB15                       CAN_F13R1_FB15_Msk                /*!< Filter bit 15 */
+#define CAN_F13R1_FB16_Pos                   (16U)                             
+#define CAN_F13R1_FB16_Msk                   (0x1U << CAN_F13R1_FB16_Pos)      /*!< 0x00010000 */
+#define CAN_F13R1_FB16                       CAN_F13R1_FB16_Msk                /*!< Filter bit 16 */
+#define CAN_F13R1_FB17_Pos                   (17U)                             
+#define CAN_F13R1_FB17_Msk                   (0x1U << CAN_F13R1_FB17_Pos)      /*!< 0x00020000 */
+#define CAN_F13R1_FB17                       CAN_F13R1_FB17_Msk                /*!< Filter bit 17 */
+#define CAN_F13R1_FB18_Pos                   (18U)                             
+#define CAN_F13R1_FB18_Msk                   (0x1U << CAN_F13R1_FB18_Pos)      /*!< 0x00040000 */
+#define CAN_F13R1_FB18                       CAN_F13R1_FB18_Msk                /*!< Filter bit 18 */
+#define CAN_F13R1_FB19_Pos                   (19U)                             
+#define CAN_F13R1_FB19_Msk                   (0x1U << CAN_F13R1_FB19_Pos)      /*!< 0x00080000 */
+#define CAN_F13R1_FB19                       CAN_F13R1_FB19_Msk                /*!< Filter bit 19 */
+#define CAN_F13R1_FB20_Pos                   (20U)                             
+#define CAN_F13R1_FB20_Msk                   (0x1U << CAN_F13R1_FB20_Pos)      /*!< 0x00100000 */
+#define CAN_F13R1_FB20                       CAN_F13R1_FB20_Msk                /*!< Filter bit 20 */
+#define CAN_F13R1_FB21_Pos                   (21U)                             
+#define CAN_F13R1_FB21_Msk                   (0x1U << CAN_F13R1_FB21_Pos)      /*!< 0x00200000 */
+#define CAN_F13R1_FB21                       CAN_F13R1_FB21_Msk                /*!< Filter bit 21 */
+#define CAN_F13R1_FB22_Pos                   (22U)                             
+#define CAN_F13R1_FB22_Msk                   (0x1U << CAN_F13R1_FB22_Pos)      /*!< 0x00400000 */
+#define CAN_F13R1_FB22                       CAN_F13R1_FB22_Msk                /*!< Filter bit 22 */
+#define CAN_F13R1_FB23_Pos                   (23U)                             
+#define CAN_F13R1_FB23_Msk                   (0x1U << CAN_F13R1_FB23_Pos)      /*!< 0x00800000 */
+#define CAN_F13R1_FB23                       CAN_F13R1_FB23_Msk                /*!< Filter bit 23 */
+#define CAN_F13R1_FB24_Pos                   (24U)                             
+#define CAN_F13R1_FB24_Msk                   (0x1U << CAN_F13R1_FB24_Pos)      /*!< 0x01000000 */
+#define CAN_F13R1_FB24                       CAN_F13R1_FB24_Msk                /*!< Filter bit 24 */
+#define CAN_F13R1_FB25_Pos                   (25U)                             
+#define CAN_F13R1_FB25_Msk                   (0x1U << CAN_F13R1_FB25_Pos)      /*!< 0x02000000 */
+#define CAN_F13R1_FB25                       CAN_F13R1_FB25_Msk                /*!< Filter bit 25 */
+#define CAN_F13R1_FB26_Pos                   (26U)                             
+#define CAN_F13R1_FB26_Msk                   (0x1U << CAN_F13R1_FB26_Pos)      /*!< 0x04000000 */
+#define CAN_F13R1_FB26                       CAN_F13R1_FB26_Msk                /*!< Filter bit 26 */
+#define CAN_F13R1_FB27_Pos                   (27U)                             
+#define CAN_F13R1_FB27_Msk                   (0x1U << CAN_F13R1_FB27_Pos)      /*!< 0x08000000 */
+#define CAN_F13R1_FB27                       CAN_F13R1_FB27_Msk                /*!< Filter bit 27 */
+#define CAN_F13R1_FB28_Pos                   (28U)                             
+#define CAN_F13R1_FB28_Msk                   (0x1U << CAN_F13R1_FB28_Pos)      /*!< 0x10000000 */
+#define CAN_F13R1_FB28                       CAN_F13R1_FB28_Msk                /*!< Filter bit 28 */
+#define CAN_F13R1_FB29_Pos                   (29U)                             
+#define CAN_F13R1_FB29_Msk                   (0x1U << CAN_F13R1_FB29_Pos)      /*!< 0x20000000 */
+#define CAN_F13R1_FB29                       CAN_F13R1_FB29_Msk                /*!< Filter bit 29 */
+#define CAN_F13R1_FB30_Pos                   (30U)                             
+#define CAN_F13R1_FB30_Msk                   (0x1U << CAN_F13R1_FB30_Pos)      /*!< 0x40000000 */
+#define CAN_F13R1_FB30                       CAN_F13R1_FB30_Msk                /*!< Filter bit 30 */
+#define CAN_F13R1_FB31_Pos                   (31U)                             
+#define CAN_F13R1_FB31_Msk                   (0x1U << CAN_F13R1_FB31_Pos)      /*!< 0x80000000 */
+#define CAN_F13R1_FB31                       CAN_F13R1_FB31_Msk                /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F0R2 register  *******************/
+#define CAN_F0R2_FB0_Pos                     (0U)                              
+#define CAN_F0R2_FB0_Msk                     (0x1U << CAN_F0R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F0R2_FB0                         CAN_F0R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F0R2_FB1_Pos                     (1U)                              
+#define CAN_F0R2_FB1_Msk                     (0x1U << CAN_F0R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F0R2_FB1                         CAN_F0R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F0R2_FB2_Pos                     (2U)                              
+#define CAN_F0R2_FB2_Msk                     (0x1U << CAN_F0R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F0R2_FB2                         CAN_F0R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F0R2_FB3_Pos                     (3U)                              
+#define CAN_F0R2_FB3_Msk                     (0x1U << CAN_F0R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F0R2_FB3                         CAN_F0R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F0R2_FB4_Pos                     (4U)                              
+#define CAN_F0R2_FB4_Msk                     (0x1U << CAN_F0R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F0R2_FB4                         CAN_F0R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F0R2_FB5_Pos                     (5U)                              
+#define CAN_F0R2_FB5_Msk                     (0x1U << CAN_F0R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F0R2_FB5                         CAN_F0R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F0R2_FB6_Pos                     (6U)                              
+#define CAN_F0R2_FB6_Msk                     (0x1U << CAN_F0R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F0R2_FB6                         CAN_F0R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F0R2_FB7_Pos                     (7U)                              
+#define CAN_F0R2_FB7_Msk                     (0x1U << CAN_F0R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F0R2_FB7                         CAN_F0R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F0R2_FB8_Pos                     (8U)                              
+#define CAN_F0R2_FB8_Msk                     (0x1U << CAN_F0R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F0R2_FB8                         CAN_F0R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F0R2_FB9_Pos                     (9U)                              
+#define CAN_F0R2_FB9_Msk                     (0x1U << CAN_F0R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F0R2_FB9                         CAN_F0R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F0R2_FB10_Pos                    (10U)                             
+#define CAN_F0R2_FB10_Msk                    (0x1U << CAN_F0R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F0R2_FB10                        CAN_F0R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F0R2_FB11_Pos                    (11U)                             
+#define CAN_F0R2_FB11_Msk                    (0x1U << CAN_F0R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F0R2_FB11                        CAN_F0R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F0R2_FB12_Pos                    (12U)                             
+#define CAN_F0R2_FB12_Msk                    (0x1U << CAN_F0R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F0R2_FB12                        CAN_F0R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F0R2_FB13_Pos                    (13U)                             
+#define CAN_F0R2_FB13_Msk                    (0x1U << CAN_F0R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F0R2_FB13                        CAN_F0R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F0R2_FB14_Pos                    (14U)                             
+#define CAN_F0R2_FB14_Msk                    (0x1U << CAN_F0R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F0R2_FB14                        CAN_F0R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F0R2_FB15_Pos                    (15U)                             
+#define CAN_F0R2_FB15_Msk                    (0x1U << CAN_F0R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F0R2_FB15                        CAN_F0R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F0R2_FB16_Pos                    (16U)                             
+#define CAN_F0R2_FB16_Msk                    (0x1U << CAN_F0R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F0R2_FB16                        CAN_F0R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F0R2_FB17_Pos                    (17U)                             
+#define CAN_F0R2_FB17_Msk                    (0x1U << CAN_F0R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F0R2_FB17                        CAN_F0R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F0R2_FB18_Pos                    (18U)                             
+#define CAN_F0R2_FB18_Msk                    (0x1U << CAN_F0R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F0R2_FB18                        CAN_F0R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F0R2_FB19_Pos                    (19U)                             
+#define CAN_F0R2_FB19_Msk                    (0x1U << CAN_F0R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F0R2_FB19                        CAN_F0R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F0R2_FB20_Pos                    (20U)                             
+#define CAN_F0R2_FB20_Msk                    (0x1U << CAN_F0R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F0R2_FB20                        CAN_F0R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F0R2_FB21_Pos                    (21U)                             
+#define CAN_F0R2_FB21_Msk                    (0x1U << CAN_F0R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F0R2_FB21                        CAN_F0R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F0R2_FB22_Pos                    (22U)                             
+#define CAN_F0R2_FB22_Msk                    (0x1U << CAN_F0R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F0R2_FB22                        CAN_F0R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F0R2_FB23_Pos                    (23U)                             
+#define CAN_F0R2_FB23_Msk                    (0x1U << CAN_F0R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F0R2_FB23                        CAN_F0R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F0R2_FB24_Pos                    (24U)                             
+#define CAN_F0R2_FB24_Msk                    (0x1U << CAN_F0R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F0R2_FB24                        CAN_F0R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F0R2_FB25_Pos                    (25U)                             
+#define CAN_F0R2_FB25_Msk                    (0x1U << CAN_F0R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F0R2_FB25                        CAN_F0R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F0R2_FB26_Pos                    (26U)                             
+#define CAN_F0R2_FB26_Msk                    (0x1U << CAN_F0R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F0R2_FB26                        CAN_F0R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F0R2_FB27_Pos                    (27U)                             
+#define CAN_F0R2_FB27_Msk                    (0x1U << CAN_F0R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F0R2_FB27                        CAN_F0R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F0R2_FB28_Pos                    (28U)                             
+#define CAN_F0R2_FB28_Msk                    (0x1U << CAN_F0R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F0R2_FB28                        CAN_F0R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F0R2_FB29_Pos                    (29U)                             
+#define CAN_F0R2_FB29_Msk                    (0x1U << CAN_F0R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F0R2_FB29                        CAN_F0R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F0R2_FB30_Pos                    (30U)                             
+#define CAN_F0R2_FB30_Msk                    (0x1U << CAN_F0R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F0R2_FB30                        CAN_F0R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F0R2_FB31_Pos                    (31U)                             
+#define CAN_F0R2_FB31_Msk                    (0x1U << CAN_F0R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F0R2_FB31                        CAN_F0R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F1R2 register  *******************/
+#define CAN_F1R2_FB0_Pos                     (0U)                              
+#define CAN_F1R2_FB0_Msk                     (0x1U << CAN_F1R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F1R2_FB0                         CAN_F1R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F1R2_FB1_Pos                     (1U)                              
+#define CAN_F1R2_FB1_Msk                     (0x1U << CAN_F1R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F1R2_FB1                         CAN_F1R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F1R2_FB2_Pos                     (2U)                              
+#define CAN_F1R2_FB2_Msk                     (0x1U << CAN_F1R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F1R2_FB2                         CAN_F1R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F1R2_FB3_Pos                     (3U)                              
+#define CAN_F1R2_FB3_Msk                     (0x1U << CAN_F1R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F1R2_FB3                         CAN_F1R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F1R2_FB4_Pos                     (4U)                              
+#define CAN_F1R2_FB4_Msk                     (0x1U << CAN_F1R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F1R2_FB4                         CAN_F1R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F1R2_FB5_Pos                     (5U)                              
+#define CAN_F1R2_FB5_Msk                     (0x1U << CAN_F1R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F1R2_FB5                         CAN_F1R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F1R2_FB6_Pos                     (6U)                              
+#define CAN_F1R2_FB6_Msk                     (0x1U << CAN_F1R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F1R2_FB6                         CAN_F1R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F1R2_FB7_Pos                     (7U)                              
+#define CAN_F1R2_FB7_Msk                     (0x1U << CAN_F1R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F1R2_FB7                         CAN_F1R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F1R2_FB8_Pos                     (8U)                              
+#define CAN_F1R2_FB8_Msk                     (0x1U << CAN_F1R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F1R2_FB8                         CAN_F1R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F1R2_FB9_Pos                     (9U)                              
+#define CAN_F1R2_FB9_Msk                     (0x1U << CAN_F1R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F1R2_FB9                         CAN_F1R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F1R2_FB10_Pos                    (10U)                             
+#define CAN_F1R2_FB10_Msk                    (0x1U << CAN_F1R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F1R2_FB10                        CAN_F1R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F1R2_FB11_Pos                    (11U)                             
+#define CAN_F1R2_FB11_Msk                    (0x1U << CAN_F1R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F1R2_FB11                        CAN_F1R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F1R2_FB12_Pos                    (12U)                             
+#define CAN_F1R2_FB12_Msk                    (0x1U << CAN_F1R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F1R2_FB12                        CAN_F1R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F1R2_FB13_Pos                    (13U)                             
+#define CAN_F1R2_FB13_Msk                    (0x1U << CAN_F1R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F1R2_FB13                        CAN_F1R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F1R2_FB14_Pos                    (14U)                             
+#define CAN_F1R2_FB14_Msk                    (0x1U << CAN_F1R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F1R2_FB14                        CAN_F1R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F1R2_FB15_Pos                    (15U)                             
+#define CAN_F1R2_FB15_Msk                    (0x1U << CAN_F1R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F1R2_FB15                        CAN_F1R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F1R2_FB16_Pos                    (16U)                             
+#define CAN_F1R2_FB16_Msk                    (0x1U << CAN_F1R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F1R2_FB16                        CAN_F1R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F1R2_FB17_Pos                    (17U)                             
+#define CAN_F1R2_FB17_Msk                    (0x1U << CAN_F1R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F1R2_FB17                        CAN_F1R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F1R2_FB18_Pos                    (18U)                             
+#define CAN_F1R2_FB18_Msk                    (0x1U << CAN_F1R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F1R2_FB18                        CAN_F1R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F1R2_FB19_Pos                    (19U)                             
+#define CAN_F1R2_FB19_Msk                    (0x1U << CAN_F1R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F1R2_FB19                        CAN_F1R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F1R2_FB20_Pos                    (20U)                             
+#define CAN_F1R2_FB20_Msk                    (0x1U << CAN_F1R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F1R2_FB20                        CAN_F1R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F1R2_FB21_Pos                    (21U)                             
+#define CAN_F1R2_FB21_Msk                    (0x1U << CAN_F1R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F1R2_FB21                        CAN_F1R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F1R2_FB22_Pos                    (22U)                             
+#define CAN_F1R2_FB22_Msk                    (0x1U << CAN_F1R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F1R2_FB22                        CAN_F1R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F1R2_FB23_Pos                    (23U)                             
+#define CAN_F1R2_FB23_Msk                    (0x1U << CAN_F1R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F1R2_FB23                        CAN_F1R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F1R2_FB24_Pos                    (24U)                             
+#define CAN_F1R2_FB24_Msk                    (0x1U << CAN_F1R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F1R2_FB24                        CAN_F1R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F1R2_FB25_Pos                    (25U)                             
+#define CAN_F1R2_FB25_Msk                    (0x1U << CAN_F1R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F1R2_FB25                        CAN_F1R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F1R2_FB26_Pos                    (26U)                             
+#define CAN_F1R2_FB26_Msk                    (0x1U << CAN_F1R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F1R2_FB26                        CAN_F1R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F1R2_FB27_Pos                    (27U)                             
+#define CAN_F1R2_FB27_Msk                    (0x1U << CAN_F1R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F1R2_FB27                        CAN_F1R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F1R2_FB28_Pos                    (28U)                             
+#define CAN_F1R2_FB28_Msk                    (0x1U << CAN_F1R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F1R2_FB28                        CAN_F1R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F1R2_FB29_Pos                    (29U)                             
+#define CAN_F1R2_FB29_Msk                    (0x1U << CAN_F1R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F1R2_FB29                        CAN_F1R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F1R2_FB30_Pos                    (30U)                             
+#define CAN_F1R2_FB30_Msk                    (0x1U << CAN_F1R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F1R2_FB30                        CAN_F1R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F1R2_FB31_Pos                    (31U)                             
+#define CAN_F1R2_FB31_Msk                    (0x1U << CAN_F1R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F1R2_FB31                        CAN_F1R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F2R2 register  *******************/
+#define CAN_F2R2_FB0_Pos                     (0U)                              
+#define CAN_F2R2_FB0_Msk                     (0x1U << CAN_F2R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F2R2_FB0                         CAN_F2R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F2R2_FB1_Pos                     (1U)                              
+#define CAN_F2R2_FB1_Msk                     (0x1U << CAN_F2R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F2R2_FB1                         CAN_F2R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F2R2_FB2_Pos                     (2U)                              
+#define CAN_F2R2_FB2_Msk                     (0x1U << CAN_F2R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F2R2_FB2                         CAN_F2R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F2R2_FB3_Pos                     (3U)                              
+#define CAN_F2R2_FB3_Msk                     (0x1U << CAN_F2R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F2R2_FB3                         CAN_F2R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F2R2_FB4_Pos                     (4U)                              
+#define CAN_F2R2_FB4_Msk                     (0x1U << CAN_F2R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F2R2_FB4                         CAN_F2R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F2R2_FB5_Pos                     (5U)                              
+#define CAN_F2R2_FB5_Msk                     (0x1U << CAN_F2R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F2R2_FB5                         CAN_F2R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F2R2_FB6_Pos                     (6U)                              
+#define CAN_F2R2_FB6_Msk                     (0x1U << CAN_F2R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F2R2_FB6                         CAN_F2R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F2R2_FB7_Pos                     (7U)                              
+#define CAN_F2R2_FB7_Msk                     (0x1U << CAN_F2R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F2R2_FB7                         CAN_F2R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F2R2_FB8_Pos                     (8U)                              
+#define CAN_F2R2_FB8_Msk                     (0x1U << CAN_F2R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F2R2_FB8                         CAN_F2R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F2R2_FB9_Pos                     (9U)                              
+#define CAN_F2R2_FB9_Msk                     (0x1U << CAN_F2R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F2R2_FB9                         CAN_F2R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F2R2_FB10_Pos                    (10U)                             
+#define CAN_F2R2_FB10_Msk                    (0x1U << CAN_F2R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F2R2_FB10                        CAN_F2R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F2R2_FB11_Pos                    (11U)                             
+#define CAN_F2R2_FB11_Msk                    (0x1U << CAN_F2R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F2R2_FB11                        CAN_F2R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F2R2_FB12_Pos                    (12U)                             
+#define CAN_F2R2_FB12_Msk                    (0x1U << CAN_F2R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F2R2_FB12                        CAN_F2R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F2R2_FB13_Pos                    (13U)                             
+#define CAN_F2R2_FB13_Msk                    (0x1U << CAN_F2R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F2R2_FB13                        CAN_F2R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F2R2_FB14_Pos                    (14U)                             
+#define CAN_F2R2_FB14_Msk                    (0x1U << CAN_F2R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F2R2_FB14                        CAN_F2R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F2R2_FB15_Pos                    (15U)                             
+#define CAN_F2R2_FB15_Msk                    (0x1U << CAN_F2R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F2R2_FB15                        CAN_F2R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F2R2_FB16_Pos                    (16U)                             
+#define CAN_F2R2_FB16_Msk                    (0x1U << CAN_F2R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F2R2_FB16                        CAN_F2R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F2R2_FB17_Pos                    (17U)                             
+#define CAN_F2R2_FB17_Msk                    (0x1U << CAN_F2R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F2R2_FB17                        CAN_F2R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F2R2_FB18_Pos                    (18U)                             
+#define CAN_F2R2_FB18_Msk                    (0x1U << CAN_F2R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F2R2_FB18                        CAN_F2R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F2R2_FB19_Pos                    (19U)                             
+#define CAN_F2R2_FB19_Msk                    (0x1U << CAN_F2R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F2R2_FB19                        CAN_F2R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F2R2_FB20_Pos                    (20U)                             
+#define CAN_F2R2_FB20_Msk                    (0x1U << CAN_F2R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F2R2_FB20                        CAN_F2R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F2R2_FB21_Pos                    (21U)                             
+#define CAN_F2R2_FB21_Msk                    (0x1U << CAN_F2R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F2R2_FB21                        CAN_F2R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F2R2_FB22_Pos                    (22U)                             
+#define CAN_F2R2_FB22_Msk                    (0x1U << CAN_F2R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F2R2_FB22                        CAN_F2R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F2R2_FB23_Pos                    (23U)                             
+#define CAN_F2R2_FB23_Msk                    (0x1U << CAN_F2R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F2R2_FB23                        CAN_F2R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F2R2_FB24_Pos                    (24U)                             
+#define CAN_F2R2_FB24_Msk                    (0x1U << CAN_F2R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F2R2_FB24                        CAN_F2R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F2R2_FB25_Pos                    (25U)                             
+#define CAN_F2R2_FB25_Msk                    (0x1U << CAN_F2R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F2R2_FB25                        CAN_F2R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F2R2_FB26_Pos                    (26U)                             
+#define CAN_F2R2_FB26_Msk                    (0x1U << CAN_F2R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F2R2_FB26                        CAN_F2R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F2R2_FB27_Pos                    (27U)                             
+#define CAN_F2R2_FB27_Msk                    (0x1U << CAN_F2R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F2R2_FB27                        CAN_F2R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F2R2_FB28_Pos                    (28U)                             
+#define CAN_F2R2_FB28_Msk                    (0x1U << CAN_F2R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F2R2_FB28                        CAN_F2R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F2R2_FB29_Pos                    (29U)                             
+#define CAN_F2R2_FB29_Msk                    (0x1U << CAN_F2R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F2R2_FB29                        CAN_F2R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F2R2_FB30_Pos                    (30U)                             
+#define CAN_F2R2_FB30_Msk                    (0x1U << CAN_F2R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F2R2_FB30                        CAN_F2R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F2R2_FB31_Pos                    (31U)                             
+#define CAN_F2R2_FB31_Msk                    (0x1U << CAN_F2R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F2R2_FB31                        CAN_F2R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F3R2 register  *******************/
+#define CAN_F3R2_FB0_Pos                     (0U)                              
+#define CAN_F3R2_FB0_Msk                     (0x1U << CAN_F3R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F3R2_FB0                         CAN_F3R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F3R2_FB1_Pos                     (1U)                              
+#define CAN_F3R2_FB1_Msk                     (0x1U << CAN_F3R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F3R2_FB1                         CAN_F3R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F3R2_FB2_Pos                     (2U)                              
+#define CAN_F3R2_FB2_Msk                     (0x1U << CAN_F3R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F3R2_FB2                         CAN_F3R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F3R2_FB3_Pos                     (3U)                              
+#define CAN_F3R2_FB3_Msk                     (0x1U << CAN_F3R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F3R2_FB3                         CAN_F3R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F3R2_FB4_Pos                     (4U)                              
+#define CAN_F3R2_FB4_Msk                     (0x1U << CAN_F3R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F3R2_FB4                         CAN_F3R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F3R2_FB5_Pos                     (5U)                              
+#define CAN_F3R2_FB5_Msk                     (0x1U << CAN_F3R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F3R2_FB5                         CAN_F3R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F3R2_FB6_Pos                     (6U)                              
+#define CAN_F3R2_FB6_Msk                     (0x1U << CAN_F3R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F3R2_FB6                         CAN_F3R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F3R2_FB7_Pos                     (7U)                              
+#define CAN_F3R2_FB7_Msk                     (0x1U << CAN_F3R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F3R2_FB7                         CAN_F3R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F3R2_FB8_Pos                     (8U)                              
+#define CAN_F3R2_FB8_Msk                     (0x1U << CAN_F3R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F3R2_FB8                         CAN_F3R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F3R2_FB9_Pos                     (9U)                              
+#define CAN_F3R2_FB9_Msk                     (0x1U << CAN_F3R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F3R2_FB9                         CAN_F3R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F3R2_FB10_Pos                    (10U)                             
+#define CAN_F3R2_FB10_Msk                    (0x1U << CAN_F3R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F3R2_FB10                        CAN_F3R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F3R2_FB11_Pos                    (11U)                             
+#define CAN_F3R2_FB11_Msk                    (0x1U << CAN_F3R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F3R2_FB11                        CAN_F3R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F3R2_FB12_Pos                    (12U)                             
+#define CAN_F3R2_FB12_Msk                    (0x1U << CAN_F3R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F3R2_FB12                        CAN_F3R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F3R2_FB13_Pos                    (13U)                             
+#define CAN_F3R2_FB13_Msk                    (0x1U << CAN_F3R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F3R2_FB13                        CAN_F3R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F3R2_FB14_Pos                    (14U)                             
+#define CAN_F3R2_FB14_Msk                    (0x1U << CAN_F3R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F3R2_FB14                        CAN_F3R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F3R2_FB15_Pos                    (15U)                             
+#define CAN_F3R2_FB15_Msk                    (0x1U << CAN_F3R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F3R2_FB15                        CAN_F3R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F3R2_FB16_Pos                    (16U)                             
+#define CAN_F3R2_FB16_Msk                    (0x1U << CAN_F3R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F3R2_FB16                        CAN_F3R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F3R2_FB17_Pos                    (17U)                             
+#define CAN_F3R2_FB17_Msk                    (0x1U << CAN_F3R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F3R2_FB17                        CAN_F3R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F3R2_FB18_Pos                    (18U)                             
+#define CAN_F3R2_FB18_Msk                    (0x1U << CAN_F3R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F3R2_FB18                        CAN_F3R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F3R2_FB19_Pos                    (19U)                             
+#define CAN_F3R2_FB19_Msk                    (0x1U << CAN_F3R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F3R2_FB19                        CAN_F3R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F3R2_FB20_Pos                    (20U)                             
+#define CAN_F3R2_FB20_Msk                    (0x1U << CAN_F3R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F3R2_FB20                        CAN_F3R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F3R2_FB21_Pos                    (21U)                             
+#define CAN_F3R2_FB21_Msk                    (0x1U << CAN_F3R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F3R2_FB21                        CAN_F3R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F3R2_FB22_Pos                    (22U)                             
+#define CAN_F3R2_FB22_Msk                    (0x1U << CAN_F3R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F3R2_FB22                        CAN_F3R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F3R2_FB23_Pos                    (23U)                             
+#define CAN_F3R2_FB23_Msk                    (0x1U << CAN_F3R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F3R2_FB23                        CAN_F3R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F3R2_FB24_Pos                    (24U)                             
+#define CAN_F3R2_FB24_Msk                    (0x1U << CAN_F3R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F3R2_FB24                        CAN_F3R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F3R2_FB25_Pos                    (25U)                             
+#define CAN_F3R2_FB25_Msk                    (0x1U << CAN_F3R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F3R2_FB25                        CAN_F3R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F3R2_FB26_Pos                    (26U)                             
+#define CAN_F3R2_FB26_Msk                    (0x1U << CAN_F3R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F3R2_FB26                        CAN_F3R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F3R2_FB27_Pos                    (27U)                             
+#define CAN_F3R2_FB27_Msk                    (0x1U << CAN_F3R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F3R2_FB27                        CAN_F3R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F3R2_FB28_Pos                    (28U)                             
+#define CAN_F3R2_FB28_Msk                    (0x1U << CAN_F3R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F3R2_FB28                        CAN_F3R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F3R2_FB29_Pos                    (29U)                             
+#define CAN_F3R2_FB29_Msk                    (0x1U << CAN_F3R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F3R2_FB29                        CAN_F3R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F3R2_FB30_Pos                    (30U)                             
+#define CAN_F3R2_FB30_Msk                    (0x1U << CAN_F3R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F3R2_FB30                        CAN_F3R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F3R2_FB31_Pos                    (31U)                             
+#define CAN_F3R2_FB31_Msk                    (0x1U << CAN_F3R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F3R2_FB31                        CAN_F3R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F4R2 register  *******************/
+#define CAN_F4R2_FB0_Pos                     (0U)                              
+#define CAN_F4R2_FB0_Msk                     (0x1U << CAN_F4R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F4R2_FB0                         CAN_F4R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F4R2_FB1_Pos                     (1U)                              
+#define CAN_F4R2_FB1_Msk                     (0x1U << CAN_F4R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F4R2_FB1                         CAN_F4R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F4R2_FB2_Pos                     (2U)                              
+#define CAN_F4R2_FB2_Msk                     (0x1U << CAN_F4R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F4R2_FB2                         CAN_F4R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F4R2_FB3_Pos                     (3U)                              
+#define CAN_F4R2_FB3_Msk                     (0x1U << CAN_F4R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F4R2_FB3                         CAN_F4R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F4R2_FB4_Pos                     (4U)                              
+#define CAN_F4R2_FB4_Msk                     (0x1U << CAN_F4R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F4R2_FB4                         CAN_F4R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F4R2_FB5_Pos                     (5U)                              
+#define CAN_F4R2_FB5_Msk                     (0x1U << CAN_F4R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F4R2_FB5                         CAN_F4R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F4R2_FB6_Pos                     (6U)                              
+#define CAN_F4R2_FB6_Msk                     (0x1U << CAN_F4R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F4R2_FB6                         CAN_F4R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F4R2_FB7_Pos                     (7U)                              
+#define CAN_F4R2_FB7_Msk                     (0x1U << CAN_F4R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F4R2_FB7                         CAN_F4R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F4R2_FB8_Pos                     (8U)                              
+#define CAN_F4R2_FB8_Msk                     (0x1U << CAN_F4R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F4R2_FB8                         CAN_F4R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F4R2_FB9_Pos                     (9U)                              
+#define CAN_F4R2_FB9_Msk                     (0x1U << CAN_F4R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F4R2_FB9                         CAN_F4R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F4R2_FB10_Pos                    (10U)                             
+#define CAN_F4R2_FB10_Msk                    (0x1U << CAN_F4R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F4R2_FB10                        CAN_F4R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F4R2_FB11_Pos                    (11U)                             
+#define CAN_F4R2_FB11_Msk                    (0x1U << CAN_F4R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F4R2_FB11                        CAN_F4R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F4R2_FB12_Pos                    (12U)                             
+#define CAN_F4R2_FB12_Msk                    (0x1U << CAN_F4R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F4R2_FB12                        CAN_F4R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F4R2_FB13_Pos                    (13U)                             
+#define CAN_F4R2_FB13_Msk                    (0x1U << CAN_F4R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F4R2_FB13                        CAN_F4R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F4R2_FB14_Pos                    (14U)                             
+#define CAN_F4R2_FB14_Msk                    (0x1U << CAN_F4R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F4R2_FB14                        CAN_F4R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F4R2_FB15_Pos                    (15U)                             
+#define CAN_F4R2_FB15_Msk                    (0x1U << CAN_F4R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F4R2_FB15                        CAN_F4R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F4R2_FB16_Pos                    (16U)                             
+#define CAN_F4R2_FB16_Msk                    (0x1U << CAN_F4R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F4R2_FB16                        CAN_F4R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F4R2_FB17_Pos                    (17U)                             
+#define CAN_F4R2_FB17_Msk                    (0x1U << CAN_F4R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F4R2_FB17                        CAN_F4R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F4R2_FB18_Pos                    (18U)                             
+#define CAN_F4R2_FB18_Msk                    (0x1U << CAN_F4R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F4R2_FB18                        CAN_F4R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F4R2_FB19_Pos                    (19U)                             
+#define CAN_F4R2_FB19_Msk                    (0x1U << CAN_F4R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F4R2_FB19                        CAN_F4R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F4R2_FB20_Pos                    (20U)                             
+#define CAN_F4R2_FB20_Msk                    (0x1U << CAN_F4R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F4R2_FB20                        CAN_F4R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F4R2_FB21_Pos                    (21U)                             
+#define CAN_F4R2_FB21_Msk                    (0x1U << CAN_F4R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F4R2_FB21                        CAN_F4R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F4R2_FB22_Pos                    (22U)                             
+#define CAN_F4R2_FB22_Msk                    (0x1U << CAN_F4R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F4R2_FB22                        CAN_F4R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F4R2_FB23_Pos                    (23U)                             
+#define CAN_F4R2_FB23_Msk                    (0x1U << CAN_F4R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F4R2_FB23                        CAN_F4R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F4R2_FB24_Pos                    (24U)                             
+#define CAN_F4R2_FB24_Msk                    (0x1U << CAN_F4R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F4R2_FB24                        CAN_F4R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F4R2_FB25_Pos                    (25U)                             
+#define CAN_F4R2_FB25_Msk                    (0x1U << CAN_F4R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F4R2_FB25                        CAN_F4R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F4R2_FB26_Pos                    (26U)                             
+#define CAN_F4R2_FB26_Msk                    (0x1U << CAN_F4R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F4R2_FB26                        CAN_F4R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F4R2_FB27_Pos                    (27U)                             
+#define CAN_F4R2_FB27_Msk                    (0x1U << CAN_F4R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F4R2_FB27                        CAN_F4R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F4R2_FB28_Pos                    (28U)                             
+#define CAN_F4R2_FB28_Msk                    (0x1U << CAN_F4R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F4R2_FB28                        CAN_F4R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F4R2_FB29_Pos                    (29U)                             
+#define CAN_F4R2_FB29_Msk                    (0x1U << CAN_F4R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F4R2_FB29                        CAN_F4R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F4R2_FB30_Pos                    (30U)                             
+#define CAN_F4R2_FB30_Msk                    (0x1U << CAN_F4R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F4R2_FB30                        CAN_F4R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F4R2_FB31_Pos                    (31U)                             
+#define CAN_F4R2_FB31_Msk                    (0x1U << CAN_F4R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F4R2_FB31                        CAN_F4R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F5R2 register  *******************/
+#define CAN_F5R2_FB0_Pos                     (0U)                              
+#define CAN_F5R2_FB0_Msk                     (0x1U << CAN_F5R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F5R2_FB0                         CAN_F5R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F5R2_FB1_Pos                     (1U)                              
+#define CAN_F5R2_FB1_Msk                     (0x1U << CAN_F5R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F5R2_FB1                         CAN_F5R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F5R2_FB2_Pos                     (2U)                              
+#define CAN_F5R2_FB2_Msk                     (0x1U << CAN_F5R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F5R2_FB2                         CAN_F5R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F5R2_FB3_Pos                     (3U)                              
+#define CAN_F5R2_FB3_Msk                     (0x1U << CAN_F5R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F5R2_FB3                         CAN_F5R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F5R2_FB4_Pos                     (4U)                              
+#define CAN_F5R2_FB4_Msk                     (0x1U << CAN_F5R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F5R2_FB4                         CAN_F5R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F5R2_FB5_Pos                     (5U)                              
+#define CAN_F5R2_FB5_Msk                     (0x1U << CAN_F5R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F5R2_FB5                         CAN_F5R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F5R2_FB6_Pos                     (6U)                              
+#define CAN_F5R2_FB6_Msk                     (0x1U << CAN_F5R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F5R2_FB6                         CAN_F5R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F5R2_FB7_Pos                     (7U)                              
+#define CAN_F5R2_FB7_Msk                     (0x1U << CAN_F5R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F5R2_FB7                         CAN_F5R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F5R2_FB8_Pos                     (8U)                              
+#define CAN_F5R2_FB8_Msk                     (0x1U << CAN_F5R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F5R2_FB8                         CAN_F5R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F5R2_FB9_Pos                     (9U)                              
+#define CAN_F5R2_FB9_Msk                     (0x1U << CAN_F5R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F5R2_FB9                         CAN_F5R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F5R2_FB10_Pos                    (10U)                             
+#define CAN_F5R2_FB10_Msk                    (0x1U << CAN_F5R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F5R2_FB10                        CAN_F5R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F5R2_FB11_Pos                    (11U)                             
+#define CAN_F5R2_FB11_Msk                    (0x1U << CAN_F5R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F5R2_FB11                        CAN_F5R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F5R2_FB12_Pos                    (12U)                             
+#define CAN_F5R2_FB12_Msk                    (0x1U << CAN_F5R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F5R2_FB12                        CAN_F5R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F5R2_FB13_Pos                    (13U)                             
+#define CAN_F5R2_FB13_Msk                    (0x1U << CAN_F5R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F5R2_FB13                        CAN_F5R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F5R2_FB14_Pos                    (14U)                             
+#define CAN_F5R2_FB14_Msk                    (0x1U << CAN_F5R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F5R2_FB14                        CAN_F5R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F5R2_FB15_Pos                    (15U)                             
+#define CAN_F5R2_FB15_Msk                    (0x1U << CAN_F5R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F5R2_FB15                        CAN_F5R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F5R2_FB16_Pos                    (16U)                             
+#define CAN_F5R2_FB16_Msk                    (0x1U << CAN_F5R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F5R2_FB16                        CAN_F5R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F5R2_FB17_Pos                    (17U)                             
+#define CAN_F5R2_FB17_Msk                    (0x1U << CAN_F5R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F5R2_FB17                        CAN_F5R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F5R2_FB18_Pos                    (18U)                             
+#define CAN_F5R2_FB18_Msk                    (0x1U << CAN_F5R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F5R2_FB18                        CAN_F5R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F5R2_FB19_Pos                    (19U)                             
+#define CAN_F5R2_FB19_Msk                    (0x1U << CAN_F5R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F5R2_FB19                        CAN_F5R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F5R2_FB20_Pos                    (20U)                             
+#define CAN_F5R2_FB20_Msk                    (0x1U << CAN_F5R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F5R2_FB20                        CAN_F5R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F5R2_FB21_Pos                    (21U)                             
+#define CAN_F5R2_FB21_Msk                    (0x1U << CAN_F5R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F5R2_FB21                        CAN_F5R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F5R2_FB22_Pos                    (22U)                             
+#define CAN_F5R2_FB22_Msk                    (0x1U << CAN_F5R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F5R2_FB22                        CAN_F5R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F5R2_FB23_Pos                    (23U)                             
+#define CAN_F5R2_FB23_Msk                    (0x1U << CAN_F5R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F5R2_FB23                        CAN_F5R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F5R2_FB24_Pos                    (24U)                             
+#define CAN_F5R2_FB24_Msk                    (0x1U << CAN_F5R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F5R2_FB24                        CAN_F5R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F5R2_FB25_Pos                    (25U)                             
+#define CAN_F5R2_FB25_Msk                    (0x1U << CAN_F5R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F5R2_FB25                        CAN_F5R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F5R2_FB26_Pos                    (26U)                             
+#define CAN_F5R2_FB26_Msk                    (0x1U << CAN_F5R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F5R2_FB26                        CAN_F5R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F5R2_FB27_Pos                    (27U)                             
+#define CAN_F5R2_FB27_Msk                    (0x1U << CAN_F5R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F5R2_FB27                        CAN_F5R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F5R2_FB28_Pos                    (28U)                             
+#define CAN_F5R2_FB28_Msk                    (0x1U << CAN_F5R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F5R2_FB28                        CAN_F5R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F5R2_FB29_Pos                    (29U)                             
+#define CAN_F5R2_FB29_Msk                    (0x1U << CAN_F5R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F5R2_FB29                        CAN_F5R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F5R2_FB30_Pos                    (30U)                             
+#define CAN_F5R2_FB30_Msk                    (0x1U << CAN_F5R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F5R2_FB30                        CAN_F5R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F5R2_FB31_Pos                    (31U)                             
+#define CAN_F5R2_FB31_Msk                    (0x1U << CAN_F5R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F5R2_FB31                        CAN_F5R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F6R2 register  *******************/
+#define CAN_F6R2_FB0_Pos                     (0U)                              
+#define CAN_F6R2_FB0_Msk                     (0x1U << CAN_F6R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F6R2_FB0                         CAN_F6R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F6R2_FB1_Pos                     (1U)                              
+#define CAN_F6R2_FB1_Msk                     (0x1U << CAN_F6R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F6R2_FB1                         CAN_F6R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F6R2_FB2_Pos                     (2U)                              
+#define CAN_F6R2_FB2_Msk                     (0x1U << CAN_F6R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F6R2_FB2                         CAN_F6R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F6R2_FB3_Pos                     (3U)                              
+#define CAN_F6R2_FB3_Msk                     (0x1U << CAN_F6R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F6R2_FB3                         CAN_F6R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F6R2_FB4_Pos                     (4U)                              
+#define CAN_F6R2_FB4_Msk                     (0x1U << CAN_F6R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F6R2_FB4                         CAN_F6R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F6R2_FB5_Pos                     (5U)                              
+#define CAN_F6R2_FB5_Msk                     (0x1U << CAN_F6R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F6R2_FB5                         CAN_F6R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F6R2_FB6_Pos                     (6U)                              
+#define CAN_F6R2_FB6_Msk                     (0x1U << CAN_F6R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F6R2_FB6                         CAN_F6R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F6R2_FB7_Pos                     (7U)                              
+#define CAN_F6R2_FB7_Msk                     (0x1U << CAN_F6R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F6R2_FB7                         CAN_F6R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F6R2_FB8_Pos                     (8U)                              
+#define CAN_F6R2_FB8_Msk                     (0x1U << CAN_F6R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F6R2_FB8                         CAN_F6R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F6R2_FB9_Pos                     (9U)                              
+#define CAN_F6R2_FB9_Msk                     (0x1U << CAN_F6R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F6R2_FB9                         CAN_F6R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F6R2_FB10_Pos                    (10U)                             
+#define CAN_F6R2_FB10_Msk                    (0x1U << CAN_F6R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F6R2_FB10                        CAN_F6R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F6R2_FB11_Pos                    (11U)                             
+#define CAN_F6R2_FB11_Msk                    (0x1U << CAN_F6R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F6R2_FB11                        CAN_F6R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F6R2_FB12_Pos                    (12U)                             
+#define CAN_F6R2_FB12_Msk                    (0x1U << CAN_F6R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F6R2_FB12                        CAN_F6R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F6R2_FB13_Pos                    (13U)                             
+#define CAN_F6R2_FB13_Msk                    (0x1U << CAN_F6R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F6R2_FB13                        CAN_F6R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F6R2_FB14_Pos                    (14U)                             
+#define CAN_F6R2_FB14_Msk                    (0x1U << CAN_F6R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F6R2_FB14                        CAN_F6R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F6R2_FB15_Pos                    (15U)                             
+#define CAN_F6R2_FB15_Msk                    (0x1U << CAN_F6R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F6R2_FB15                        CAN_F6R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F6R2_FB16_Pos                    (16U)                             
+#define CAN_F6R2_FB16_Msk                    (0x1U << CAN_F6R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F6R2_FB16                        CAN_F6R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F6R2_FB17_Pos                    (17U)                             
+#define CAN_F6R2_FB17_Msk                    (0x1U << CAN_F6R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F6R2_FB17                        CAN_F6R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F6R2_FB18_Pos                    (18U)                             
+#define CAN_F6R2_FB18_Msk                    (0x1U << CAN_F6R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F6R2_FB18                        CAN_F6R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F6R2_FB19_Pos                    (19U)                             
+#define CAN_F6R2_FB19_Msk                    (0x1U << CAN_F6R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F6R2_FB19                        CAN_F6R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F6R2_FB20_Pos                    (20U)                             
+#define CAN_F6R2_FB20_Msk                    (0x1U << CAN_F6R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F6R2_FB20                        CAN_F6R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F6R2_FB21_Pos                    (21U)                             
+#define CAN_F6R2_FB21_Msk                    (0x1U << CAN_F6R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F6R2_FB21                        CAN_F6R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F6R2_FB22_Pos                    (22U)                             
+#define CAN_F6R2_FB22_Msk                    (0x1U << CAN_F6R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F6R2_FB22                        CAN_F6R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F6R2_FB23_Pos                    (23U)                             
+#define CAN_F6R2_FB23_Msk                    (0x1U << CAN_F6R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F6R2_FB23                        CAN_F6R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F6R2_FB24_Pos                    (24U)                             
+#define CAN_F6R2_FB24_Msk                    (0x1U << CAN_F6R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F6R2_FB24                        CAN_F6R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F6R2_FB25_Pos                    (25U)                             
+#define CAN_F6R2_FB25_Msk                    (0x1U << CAN_F6R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F6R2_FB25                        CAN_F6R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F6R2_FB26_Pos                    (26U)                             
+#define CAN_F6R2_FB26_Msk                    (0x1U << CAN_F6R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F6R2_FB26                        CAN_F6R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F6R2_FB27_Pos                    (27U)                             
+#define CAN_F6R2_FB27_Msk                    (0x1U << CAN_F6R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F6R2_FB27                        CAN_F6R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F6R2_FB28_Pos                    (28U)                             
+#define CAN_F6R2_FB28_Msk                    (0x1U << CAN_F6R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F6R2_FB28                        CAN_F6R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F6R2_FB29_Pos                    (29U)                             
+#define CAN_F6R2_FB29_Msk                    (0x1U << CAN_F6R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F6R2_FB29                        CAN_F6R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F6R2_FB30_Pos                    (30U)                             
+#define CAN_F6R2_FB30_Msk                    (0x1U << CAN_F6R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F6R2_FB30                        CAN_F6R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F6R2_FB31_Pos                    (31U)                             
+#define CAN_F6R2_FB31_Msk                    (0x1U << CAN_F6R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F6R2_FB31                        CAN_F6R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F7R2 register  *******************/
+#define CAN_F7R2_FB0_Pos                     (0U)                              
+#define CAN_F7R2_FB0_Msk                     (0x1U << CAN_F7R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F7R2_FB0                         CAN_F7R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F7R2_FB1_Pos                     (1U)                              
+#define CAN_F7R2_FB1_Msk                     (0x1U << CAN_F7R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F7R2_FB1                         CAN_F7R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F7R2_FB2_Pos                     (2U)                              
+#define CAN_F7R2_FB2_Msk                     (0x1U << CAN_F7R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F7R2_FB2                         CAN_F7R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F7R2_FB3_Pos                     (3U)                              
+#define CAN_F7R2_FB3_Msk                     (0x1U << CAN_F7R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F7R2_FB3                         CAN_F7R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F7R2_FB4_Pos                     (4U)                              
+#define CAN_F7R2_FB4_Msk                     (0x1U << CAN_F7R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F7R2_FB4                         CAN_F7R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F7R2_FB5_Pos                     (5U)                              
+#define CAN_F7R2_FB5_Msk                     (0x1U << CAN_F7R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F7R2_FB5                         CAN_F7R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F7R2_FB6_Pos                     (6U)                              
+#define CAN_F7R2_FB6_Msk                     (0x1U << CAN_F7R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F7R2_FB6                         CAN_F7R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F7R2_FB7_Pos                     (7U)                              
+#define CAN_F7R2_FB7_Msk                     (0x1U << CAN_F7R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F7R2_FB7                         CAN_F7R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F7R2_FB8_Pos                     (8U)                              
+#define CAN_F7R2_FB8_Msk                     (0x1U << CAN_F7R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F7R2_FB8                         CAN_F7R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F7R2_FB9_Pos                     (9U)                              
+#define CAN_F7R2_FB9_Msk                     (0x1U << CAN_F7R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F7R2_FB9                         CAN_F7R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F7R2_FB10_Pos                    (10U)                             
+#define CAN_F7R2_FB10_Msk                    (0x1U << CAN_F7R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F7R2_FB10                        CAN_F7R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F7R2_FB11_Pos                    (11U)                             
+#define CAN_F7R2_FB11_Msk                    (0x1U << CAN_F7R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F7R2_FB11                        CAN_F7R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F7R2_FB12_Pos                    (12U)                             
+#define CAN_F7R2_FB12_Msk                    (0x1U << CAN_F7R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F7R2_FB12                        CAN_F7R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F7R2_FB13_Pos                    (13U)                             
+#define CAN_F7R2_FB13_Msk                    (0x1U << CAN_F7R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F7R2_FB13                        CAN_F7R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F7R2_FB14_Pos                    (14U)                             
+#define CAN_F7R2_FB14_Msk                    (0x1U << CAN_F7R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F7R2_FB14                        CAN_F7R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F7R2_FB15_Pos                    (15U)                             
+#define CAN_F7R2_FB15_Msk                    (0x1U << CAN_F7R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F7R2_FB15                        CAN_F7R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F7R2_FB16_Pos                    (16U)                             
+#define CAN_F7R2_FB16_Msk                    (0x1U << CAN_F7R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F7R2_FB16                        CAN_F7R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F7R2_FB17_Pos                    (17U)                             
+#define CAN_F7R2_FB17_Msk                    (0x1U << CAN_F7R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F7R2_FB17                        CAN_F7R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F7R2_FB18_Pos                    (18U)                             
+#define CAN_F7R2_FB18_Msk                    (0x1U << CAN_F7R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F7R2_FB18                        CAN_F7R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F7R2_FB19_Pos                    (19U)                             
+#define CAN_F7R2_FB19_Msk                    (0x1U << CAN_F7R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F7R2_FB19                        CAN_F7R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F7R2_FB20_Pos                    (20U)                             
+#define CAN_F7R2_FB20_Msk                    (0x1U << CAN_F7R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F7R2_FB20                        CAN_F7R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F7R2_FB21_Pos                    (21U)                             
+#define CAN_F7R2_FB21_Msk                    (0x1U << CAN_F7R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F7R2_FB21                        CAN_F7R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F7R2_FB22_Pos                    (22U)                             
+#define CAN_F7R2_FB22_Msk                    (0x1U << CAN_F7R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F7R2_FB22                        CAN_F7R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F7R2_FB23_Pos                    (23U)                             
+#define CAN_F7R2_FB23_Msk                    (0x1U << CAN_F7R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F7R2_FB23                        CAN_F7R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F7R2_FB24_Pos                    (24U)                             
+#define CAN_F7R2_FB24_Msk                    (0x1U << CAN_F7R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F7R2_FB24                        CAN_F7R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F7R2_FB25_Pos                    (25U)                             
+#define CAN_F7R2_FB25_Msk                    (0x1U << CAN_F7R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F7R2_FB25                        CAN_F7R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F7R2_FB26_Pos                    (26U)                             
+#define CAN_F7R2_FB26_Msk                    (0x1U << CAN_F7R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F7R2_FB26                        CAN_F7R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F7R2_FB27_Pos                    (27U)                             
+#define CAN_F7R2_FB27_Msk                    (0x1U << CAN_F7R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F7R2_FB27                        CAN_F7R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F7R2_FB28_Pos                    (28U)                             
+#define CAN_F7R2_FB28_Msk                    (0x1U << CAN_F7R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F7R2_FB28                        CAN_F7R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F7R2_FB29_Pos                    (29U)                             
+#define CAN_F7R2_FB29_Msk                    (0x1U << CAN_F7R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F7R2_FB29                        CAN_F7R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F7R2_FB30_Pos                    (30U)                             
+#define CAN_F7R2_FB30_Msk                    (0x1U << CAN_F7R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F7R2_FB30                        CAN_F7R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F7R2_FB31_Pos                    (31U)                             
+#define CAN_F7R2_FB31_Msk                    (0x1U << CAN_F7R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F7R2_FB31                        CAN_F7R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F8R2 register  *******************/
+#define CAN_F8R2_FB0_Pos                     (0U)                              
+#define CAN_F8R2_FB0_Msk                     (0x1U << CAN_F8R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F8R2_FB0                         CAN_F8R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F8R2_FB1_Pos                     (1U)                              
+#define CAN_F8R2_FB1_Msk                     (0x1U << CAN_F8R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F8R2_FB1                         CAN_F8R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F8R2_FB2_Pos                     (2U)                              
+#define CAN_F8R2_FB2_Msk                     (0x1U << CAN_F8R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F8R2_FB2                         CAN_F8R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F8R2_FB3_Pos                     (3U)                              
+#define CAN_F8R2_FB3_Msk                     (0x1U << CAN_F8R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F8R2_FB3                         CAN_F8R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F8R2_FB4_Pos                     (4U)                              
+#define CAN_F8R2_FB4_Msk                     (0x1U << CAN_F8R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F8R2_FB4                         CAN_F8R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F8R2_FB5_Pos                     (5U)                              
+#define CAN_F8R2_FB5_Msk                     (0x1U << CAN_F8R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F8R2_FB5                         CAN_F8R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F8R2_FB6_Pos                     (6U)                              
+#define CAN_F8R2_FB6_Msk                     (0x1U << CAN_F8R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F8R2_FB6                         CAN_F8R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F8R2_FB7_Pos                     (7U)                              
+#define CAN_F8R2_FB7_Msk                     (0x1U << CAN_F8R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F8R2_FB7                         CAN_F8R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F8R2_FB8_Pos                     (8U)                              
+#define CAN_F8R2_FB8_Msk                     (0x1U << CAN_F8R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F8R2_FB8                         CAN_F8R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F8R2_FB9_Pos                     (9U)                              
+#define CAN_F8R2_FB9_Msk                     (0x1U << CAN_F8R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F8R2_FB9                         CAN_F8R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F8R2_FB10_Pos                    (10U)                             
+#define CAN_F8R2_FB10_Msk                    (0x1U << CAN_F8R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F8R2_FB10                        CAN_F8R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F8R2_FB11_Pos                    (11U)                             
+#define CAN_F8R2_FB11_Msk                    (0x1U << CAN_F8R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F8R2_FB11                        CAN_F8R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F8R2_FB12_Pos                    (12U)                             
+#define CAN_F8R2_FB12_Msk                    (0x1U << CAN_F8R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F8R2_FB12                        CAN_F8R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F8R2_FB13_Pos                    (13U)                             
+#define CAN_F8R2_FB13_Msk                    (0x1U << CAN_F8R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F8R2_FB13                        CAN_F8R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F8R2_FB14_Pos                    (14U)                             
+#define CAN_F8R2_FB14_Msk                    (0x1U << CAN_F8R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F8R2_FB14                        CAN_F8R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F8R2_FB15_Pos                    (15U)                             
+#define CAN_F8R2_FB15_Msk                    (0x1U << CAN_F8R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F8R2_FB15                        CAN_F8R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F8R2_FB16_Pos                    (16U)                             
+#define CAN_F8R2_FB16_Msk                    (0x1U << CAN_F8R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F8R2_FB16                        CAN_F8R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F8R2_FB17_Pos                    (17U)                             
+#define CAN_F8R2_FB17_Msk                    (0x1U << CAN_F8R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F8R2_FB17                        CAN_F8R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F8R2_FB18_Pos                    (18U)                             
+#define CAN_F8R2_FB18_Msk                    (0x1U << CAN_F8R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F8R2_FB18                        CAN_F8R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F8R2_FB19_Pos                    (19U)                             
+#define CAN_F8R2_FB19_Msk                    (0x1U << CAN_F8R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F8R2_FB19                        CAN_F8R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F8R2_FB20_Pos                    (20U)                             
+#define CAN_F8R2_FB20_Msk                    (0x1U << CAN_F8R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F8R2_FB20                        CAN_F8R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F8R2_FB21_Pos                    (21U)                             
+#define CAN_F8R2_FB21_Msk                    (0x1U << CAN_F8R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F8R2_FB21                        CAN_F8R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F8R2_FB22_Pos                    (22U)                             
+#define CAN_F8R2_FB22_Msk                    (0x1U << CAN_F8R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F8R2_FB22                        CAN_F8R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F8R2_FB23_Pos                    (23U)                             
+#define CAN_F8R2_FB23_Msk                    (0x1U << CAN_F8R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F8R2_FB23                        CAN_F8R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F8R2_FB24_Pos                    (24U)                             
+#define CAN_F8R2_FB24_Msk                    (0x1U << CAN_F8R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F8R2_FB24                        CAN_F8R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F8R2_FB25_Pos                    (25U)                             
+#define CAN_F8R2_FB25_Msk                    (0x1U << CAN_F8R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F8R2_FB25                        CAN_F8R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F8R2_FB26_Pos                    (26U)                             
+#define CAN_F8R2_FB26_Msk                    (0x1U << CAN_F8R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F8R2_FB26                        CAN_F8R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F8R2_FB27_Pos                    (27U)                             
+#define CAN_F8R2_FB27_Msk                    (0x1U << CAN_F8R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F8R2_FB27                        CAN_F8R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F8R2_FB28_Pos                    (28U)                             
+#define CAN_F8R2_FB28_Msk                    (0x1U << CAN_F8R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F8R2_FB28                        CAN_F8R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F8R2_FB29_Pos                    (29U)                             
+#define CAN_F8R2_FB29_Msk                    (0x1U << CAN_F8R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F8R2_FB29                        CAN_F8R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F8R2_FB30_Pos                    (30U)                             
+#define CAN_F8R2_FB30_Msk                    (0x1U << CAN_F8R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F8R2_FB30                        CAN_F8R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F8R2_FB31_Pos                    (31U)                             
+#define CAN_F8R2_FB31_Msk                    (0x1U << CAN_F8R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F8R2_FB31                        CAN_F8R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F9R2 register  *******************/
+#define CAN_F9R2_FB0_Pos                     (0U)                              
+#define CAN_F9R2_FB0_Msk                     (0x1U << CAN_F9R2_FB0_Pos)        /*!< 0x00000001 */
+#define CAN_F9R2_FB0                         CAN_F9R2_FB0_Msk                  /*!< Filter bit 0 */
+#define CAN_F9R2_FB1_Pos                     (1U)                              
+#define CAN_F9R2_FB1_Msk                     (0x1U << CAN_F9R2_FB1_Pos)        /*!< 0x00000002 */
+#define CAN_F9R2_FB1                         CAN_F9R2_FB1_Msk                  /*!< Filter bit 1 */
+#define CAN_F9R2_FB2_Pos                     (2U)                              
+#define CAN_F9R2_FB2_Msk                     (0x1U << CAN_F9R2_FB2_Pos)        /*!< 0x00000004 */
+#define CAN_F9R2_FB2                         CAN_F9R2_FB2_Msk                  /*!< Filter bit 2 */
+#define CAN_F9R2_FB3_Pos                     (3U)                              
+#define CAN_F9R2_FB3_Msk                     (0x1U << CAN_F9R2_FB3_Pos)        /*!< 0x00000008 */
+#define CAN_F9R2_FB3                         CAN_F9R2_FB3_Msk                  /*!< Filter bit 3 */
+#define CAN_F9R2_FB4_Pos                     (4U)                              
+#define CAN_F9R2_FB4_Msk                     (0x1U << CAN_F9R2_FB4_Pos)        /*!< 0x00000010 */
+#define CAN_F9R2_FB4                         CAN_F9R2_FB4_Msk                  /*!< Filter bit 4 */
+#define CAN_F9R2_FB5_Pos                     (5U)                              
+#define CAN_F9R2_FB5_Msk                     (0x1U << CAN_F9R2_FB5_Pos)        /*!< 0x00000020 */
+#define CAN_F9R2_FB5                         CAN_F9R2_FB5_Msk                  /*!< Filter bit 5 */
+#define CAN_F9R2_FB6_Pos                     (6U)                              
+#define CAN_F9R2_FB6_Msk                     (0x1U << CAN_F9R2_FB6_Pos)        /*!< 0x00000040 */
+#define CAN_F9R2_FB6                         CAN_F9R2_FB6_Msk                  /*!< Filter bit 6 */
+#define CAN_F9R2_FB7_Pos                     (7U)                              
+#define CAN_F9R2_FB7_Msk                     (0x1U << CAN_F9R2_FB7_Pos)        /*!< 0x00000080 */
+#define CAN_F9R2_FB7                         CAN_F9R2_FB7_Msk                  /*!< Filter bit 7 */
+#define CAN_F9R2_FB8_Pos                     (8U)                              
+#define CAN_F9R2_FB8_Msk                     (0x1U << CAN_F9R2_FB8_Pos)        /*!< 0x00000100 */
+#define CAN_F9R2_FB8                         CAN_F9R2_FB8_Msk                  /*!< Filter bit 8 */
+#define CAN_F9R2_FB9_Pos                     (9U)                              
+#define CAN_F9R2_FB9_Msk                     (0x1U << CAN_F9R2_FB9_Pos)        /*!< 0x00000200 */
+#define CAN_F9R2_FB9                         CAN_F9R2_FB9_Msk                  /*!< Filter bit 9 */
+#define CAN_F9R2_FB10_Pos                    (10U)                             
+#define CAN_F9R2_FB10_Msk                    (0x1U << CAN_F9R2_FB10_Pos)       /*!< 0x00000400 */
+#define CAN_F9R2_FB10                        CAN_F9R2_FB10_Msk                 /*!< Filter bit 10 */
+#define CAN_F9R2_FB11_Pos                    (11U)                             
+#define CAN_F9R2_FB11_Msk                    (0x1U << CAN_F9R2_FB11_Pos)       /*!< 0x00000800 */
+#define CAN_F9R2_FB11                        CAN_F9R2_FB11_Msk                 /*!< Filter bit 11 */
+#define CAN_F9R2_FB12_Pos                    (12U)                             
+#define CAN_F9R2_FB12_Msk                    (0x1U << CAN_F9R2_FB12_Pos)       /*!< 0x00001000 */
+#define CAN_F9R2_FB12                        CAN_F9R2_FB12_Msk                 /*!< Filter bit 12 */
+#define CAN_F9R2_FB13_Pos                    (13U)                             
+#define CAN_F9R2_FB13_Msk                    (0x1U << CAN_F9R2_FB13_Pos)       /*!< 0x00002000 */
+#define CAN_F9R2_FB13                        CAN_F9R2_FB13_Msk                 /*!< Filter bit 13 */
+#define CAN_F9R2_FB14_Pos                    (14U)                             
+#define CAN_F9R2_FB14_Msk                    (0x1U << CAN_F9R2_FB14_Pos)       /*!< 0x00004000 */
+#define CAN_F9R2_FB14                        CAN_F9R2_FB14_Msk                 /*!< Filter bit 14 */
+#define CAN_F9R2_FB15_Pos                    (15U)                             
+#define CAN_F9R2_FB15_Msk                    (0x1U << CAN_F9R2_FB15_Pos)       /*!< 0x00008000 */
+#define CAN_F9R2_FB15                        CAN_F9R2_FB15_Msk                 /*!< Filter bit 15 */
+#define CAN_F9R2_FB16_Pos                    (16U)                             
+#define CAN_F9R2_FB16_Msk                    (0x1U << CAN_F9R2_FB16_Pos)       /*!< 0x00010000 */
+#define CAN_F9R2_FB16                        CAN_F9R2_FB16_Msk                 /*!< Filter bit 16 */
+#define CAN_F9R2_FB17_Pos                    (17U)                             
+#define CAN_F9R2_FB17_Msk                    (0x1U << CAN_F9R2_FB17_Pos)       /*!< 0x00020000 */
+#define CAN_F9R2_FB17                        CAN_F9R2_FB17_Msk                 /*!< Filter bit 17 */
+#define CAN_F9R2_FB18_Pos                    (18U)                             
+#define CAN_F9R2_FB18_Msk                    (0x1U << CAN_F9R2_FB18_Pos)       /*!< 0x00040000 */
+#define CAN_F9R2_FB18                        CAN_F9R2_FB18_Msk                 /*!< Filter bit 18 */
+#define CAN_F9R2_FB19_Pos                    (19U)                             
+#define CAN_F9R2_FB19_Msk                    (0x1U << CAN_F9R2_FB19_Pos)       /*!< 0x00080000 */
+#define CAN_F9R2_FB19                        CAN_F9R2_FB19_Msk                 /*!< Filter bit 19 */
+#define CAN_F9R2_FB20_Pos                    (20U)                             
+#define CAN_F9R2_FB20_Msk                    (0x1U << CAN_F9R2_FB20_Pos)       /*!< 0x00100000 */
+#define CAN_F9R2_FB20                        CAN_F9R2_FB20_Msk                 /*!< Filter bit 20 */
+#define CAN_F9R2_FB21_Pos                    (21U)                             
+#define CAN_F9R2_FB21_Msk                    (0x1U << CAN_F9R2_FB21_Pos)       /*!< 0x00200000 */
+#define CAN_F9R2_FB21                        CAN_F9R2_FB21_Msk                 /*!< Filter bit 21 */
+#define CAN_F9R2_FB22_Pos                    (22U)                             
+#define CAN_F9R2_FB22_Msk                    (0x1U << CAN_F9R2_FB22_Pos)       /*!< 0x00400000 */
+#define CAN_F9R2_FB22                        CAN_F9R2_FB22_Msk                 /*!< Filter bit 22 */
+#define CAN_F9R2_FB23_Pos                    (23U)                             
+#define CAN_F9R2_FB23_Msk                    (0x1U << CAN_F9R2_FB23_Pos)       /*!< 0x00800000 */
+#define CAN_F9R2_FB23                        CAN_F9R2_FB23_Msk                 /*!< Filter bit 23 */
+#define CAN_F9R2_FB24_Pos                    (24U)                             
+#define CAN_F9R2_FB24_Msk                    (0x1U << CAN_F9R2_FB24_Pos)       /*!< 0x01000000 */
+#define CAN_F9R2_FB24                        CAN_F9R2_FB24_Msk                 /*!< Filter bit 24 */
+#define CAN_F9R2_FB25_Pos                    (25U)                             
+#define CAN_F9R2_FB25_Msk                    (0x1U << CAN_F9R2_FB25_Pos)       /*!< 0x02000000 */
+#define CAN_F9R2_FB25                        CAN_F9R2_FB25_Msk                 /*!< Filter bit 25 */
+#define CAN_F9R2_FB26_Pos                    (26U)                             
+#define CAN_F9R2_FB26_Msk                    (0x1U << CAN_F9R2_FB26_Pos)       /*!< 0x04000000 */
+#define CAN_F9R2_FB26                        CAN_F9R2_FB26_Msk                 /*!< Filter bit 26 */
+#define CAN_F9R2_FB27_Pos                    (27U)                             
+#define CAN_F9R2_FB27_Msk                    (0x1U << CAN_F9R2_FB27_Pos)       /*!< 0x08000000 */
+#define CAN_F9R2_FB27                        CAN_F9R2_FB27_Msk                 /*!< Filter bit 27 */
+#define CAN_F9R2_FB28_Pos                    (28U)                             
+#define CAN_F9R2_FB28_Msk                    (0x1U << CAN_F9R2_FB28_Pos)       /*!< 0x10000000 */
+#define CAN_F9R2_FB28                        CAN_F9R2_FB28_Msk                 /*!< Filter bit 28 */
+#define CAN_F9R2_FB29_Pos                    (29U)                             
+#define CAN_F9R2_FB29_Msk                    (0x1U << CAN_F9R2_FB29_Pos)       /*!< 0x20000000 */
+#define CAN_F9R2_FB29                        CAN_F9R2_FB29_Msk                 /*!< Filter bit 29 */
+#define CAN_F9R2_FB30_Pos                    (30U)                             
+#define CAN_F9R2_FB30_Msk                    (0x1U << CAN_F9R2_FB30_Pos)       /*!< 0x40000000 */
+#define CAN_F9R2_FB30                        CAN_F9R2_FB30_Msk                 /*!< Filter bit 30 */
+#define CAN_F9R2_FB31_Pos                    (31U)                             
+#define CAN_F9R2_FB31_Msk                    (0x1U << CAN_F9R2_FB31_Pos)       /*!< 0x80000000 */
+#define CAN_F9R2_FB31                        CAN_F9R2_FB31_Msk                 /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F10R2 register  ******************/
+#define CAN_F10R2_FB0_Pos                    (0U)                              
+#define CAN_F10R2_FB0_Msk                    (0x1U << CAN_F10R2_FB0_Pos)       /*!< 0x00000001 */
+#define CAN_F10R2_FB0                        CAN_F10R2_FB0_Msk                 /*!< Filter bit 0 */
+#define CAN_F10R2_FB1_Pos                    (1U)                              
+#define CAN_F10R2_FB1_Msk                    (0x1U << CAN_F10R2_FB1_Pos)       /*!< 0x00000002 */
+#define CAN_F10R2_FB1                        CAN_F10R2_FB1_Msk                 /*!< Filter bit 1 */
+#define CAN_F10R2_FB2_Pos                    (2U)                              
+#define CAN_F10R2_FB2_Msk                    (0x1U << CAN_F10R2_FB2_Pos)       /*!< 0x00000004 */
+#define CAN_F10R2_FB2                        CAN_F10R2_FB2_Msk                 /*!< Filter bit 2 */
+#define CAN_F10R2_FB3_Pos                    (3U)                              
+#define CAN_F10R2_FB3_Msk                    (0x1U << CAN_F10R2_FB3_Pos)       /*!< 0x00000008 */
+#define CAN_F10R2_FB3                        CAN_F10R2_FB3_Msk                 /*!< Filter bit 3 */
+#define CAN_F10R2_FB4_Pos                    (4U)                              
+#define CAN_F10R2_FB4_Msk                    (0x1U << CAN_F10R2_FB4_Pos)       /*!< 0x00000010 */
+#define CAN_F10R2_FB4                        CAN_F10R2_FB4_Msk                 /*!< Filter bit 4 */
+#define CAN_F10R2_FB5_Pos                    (5U)                              
+#define CAN_F10R2_FB5_Msk                    (0x1U << CAN_F10R2_FB5_Pos)       /*!< 0x00000020 */
+#define CAN_F10R2_FB5                        CAN_F10R2_FB5_Msk                 /*!< Filter bit 5 */
+#define CAN_F10R2_FB6_Pos                    (6U)                              
+#define CAN_F10R2_FB6_Msk                    (0x1U << CAN_F10R2_FB6_Pos)       /*!< 0x00000040 */
+#define CAN_F10R2_FB6                        CAN_F10R2_FB6_Msk                 /*!< Filter bit 6 */
+#define CAN_F10R2_FB7_Pos                    (7U)                              
+#define CAN_F10R2_FB7_Msk                    (0x1U << CAN_F10R2_FB7_Pos)       /*!< 0x00000080 */
+#define CAN_F10R2_FB7                        CAN_F10R2_FB7_Msk                 /*!< Filter bit 7 */
+#define CAN_F10R2_FB8_Pos                    (8U)                              
+#define CAN_F10R2_FB8_Msk                    (0x1U << CAN_F10R2_FB8_Pos)       /*!< 0x00000100 */
+#define CAN_F10R2_FB8                        CAN_F10R2_FB8_Msk                 /*!< Filter bit 8 */
+#define CAN_F10R2_FB9_Pos                    (9U)                              
+#define CAN_F10R2_FB9_Msk                    (0x1U << CAN_F10R2_FB9_Pos)       /*!< 0x00000200 */
+#define CAN_F10R2_FB9                        CAN_F10R2_FB9_Msk                 /*!< Filter bit 9 */
+#define CAN_F10R2_FB10_Pos                   (10U)                             
+#define CAN_F10R2_FB10_Msk                   (0x1U << CAN_F10R2_FB10_Pos)      /*!< 0x00000400 */
+#define CAN_F10R2_FB10                       CAN_F10R2_FB10_Msk                /*!< Filter bit 10 */
+#define CAN_F10R2_FB11_Pos                   (11U)                             
+#define CAN_F10R2_FB11_Msk                   (0x1U << CAN_F10R2_FB11_Pos)      /*!< 0x00000800 */
+#define CAN_F10R2_FB11                       CAN_F10R2_FB11_Msk                /*!< Filter bit 11 */
+#define CAN_F10R2_FB12_Pos                   (12U)                             
+#define CAN_F10R2_FB12_Msk                   (0x1U << CAN_F10R2_FB12_Pos)      /*!< 0x00001000 */
+#define CAN_F10R2_FB12                       CAN_F10R2_FB12_Msk                /*!< Filter bit 12 */
+#define CAN_F10R2_FB13_Pos                   (13U)                             
+#define CAN_F10R2_FB13_Msk                   (0x1U << CAN_F10R2_FB13_Pos)      /*!< 0x00002000 */
+#define CAN_F10R2_FB13                       CAN_F10R2_FB13_Msk                /*!< Filter bit 13 */
+#define CAN_F10R2_FB14_Pos                   (14U)                             
+#define CAN_F10R2_FB14_Msk                   (0x1U << CAN_F10R2_FB14_Pos)      /*!< 0x00004000 */
+#define CAN_F10R2_FB14                       CAN_F10R2_FB14_Msk                /*!< Filter bit 14 */
+#define CAN_F10R2_FB15_Pos                   (15U)                             
+#define CAN_F10R2_FB15_Msk                   (0x1U << CAN_F10R2_FB15_Pos)      /*!< 0x00008000 */
+#define CAN_F10R2_FB15                       CAN_F10R2_FB15_Msk                /*!< Filter bit 15 */
+#define CAN_F10R2_FB16_Pos                   (16U)                             
+#define CAN_F10R2_FB16_Msk                   (0x1U << CAN_F10R2_FB16_Pos)      /*!< 0x00010000 */
+#define CAN_F10R2_FB16                       CAN_F10R2_FB16_Msk                /*!< Filter bit 16 */
+#define CAN_F10R2_FB17_Pos                   (17U)                             
+#define CAN_F10R2_FB17_Msk                   (0x1U << CAN_F10R2_FB17_Pos)      /*!< 0x00020000 */
+#define CAN_F10R2_FB17                       CAN_F10R2_FB17_Msk                /*!< Filter bit 17 */
+#define CAN_F10R2_FB18_Pos                   (18U)                             
+#define CAN_F10R2_FB18_Msk                   (0x1U << CAN_F10R2_FB18_Pos)      /*!< 0x00040000 */
+#define CAN_F10R2_FB18                       CAN_F10R2_FB18_Msk                /*!< Filter bit 18 */
+#define CAN_F10R2_FB19_Pos                   (19U)                             
+#define CAN_F10R2_FB19_Msk                   (0x1U << CAN_F10R2_FB19_Pos)      /*!< 0x00080000 */
+#define CAN_F10R2_FB19                       CAN_F10R2_FB19_Msk                /*!< Filter bit 19 */
+#define CAN_F10R2_FB20_Pos                   (20U)                             
+#define CAN_F10R2_FB20_Msk                   (0x1U << CAN_F10R2_FB20_Pos)      /*!< 0x00100000 */
+#define CAN_F10R2_FB20                       CAN_F10R2_FB20_Msk                /*!< Filter bit 20 */
+#define CAN_F10R2_FB21_Pos                   (21U)                             
+#define CAN_F10R2_FB21_Msk                   (0x1U << CAN_F10R2_FB21_Pos)      /*!< 0x00200000 */
+#define CAN_F10R2_FB21                       CAN_F10R2_FB21_Msk                /*!< Filter bit 21 */
+#define CAN_F10R2_FB22_Pos                   (22U)                             
+#define CAN_F10R2_FB22_Msk                   (0x1U << CAN_F10R2_FB22_Pos)      /*!< 0x00400000 */
+#define CAN_F10R2_FB22                       CAN_F10R2_FB22_Msk                /*!< Filter bit 22 */
+#define CAN_F10R2_FB23_Pos                   (23U)                             
+#define CAN_F10R2_FB23_Msk                   (0x1U << CAN_F10R2_FB23_Pos)      /*!< 0x00800000 */
+#define CAN_F10R2_FB23                       CAN_F10R2_FB23_Msk                /*!< Filter bit 23 */
+#define CAN_F10R2_FB24_Pos                   (24U)                             
+#define CAN_F10R2_FB24_Msk                   (0x1U << CAN_F10R2_FB24_Pos)      /*!< 0x01000000 */
+#define CAN_F10R2_FB24                       CAN_F10R2_FB24_Msk                /*!< Filter bit 24 */
+#define CAN_F10R2_FB25_Pos                   (25U)                             
+#define CAN_F10R2_FB25_Msk                   (0x1U << CAN_F10R2_FB25_Pos)      /*!< 0x02000000 */
+#define CAN_F10R2_FB25                       CAN_F10R2_FB25_Msk                /*!< Filter bit 25 */
+#define CAN_F10R2_FB26_Pos                   (26U)                             
+#define CAN_F10R2_FB26_Msk                   (0x1U << CAN_F10R2_FB26_Pos)      /*!< 0x04000000 */
+#define CAN_F10R2_FB26                       CAN_F10R2_FB26_Msk                /*!< Filter bit 26 */
+#define CAN_F10R2_FB27_Pos                   (27U)                             
+#define CAN_F10R2_FB27_Msk                   (0x1U << CAN_F10R2_FB27_Pos)      /*!< 0x08000000 */
+#define CAN_F10R2_FB27                       CAN_F10R2_FB27_Msk                /*!< Filter bit 27 */
+#define CAN_F10R2_FB28_Pos                   (28U)                             
+#define CAN_F10R2_FB28_Msk                   (0x1U << CAN_F10R2_FB28_Pos)      /*!< 0x10000000 */
+#define CAN_F10R2_FB28                       CAN_F10R2_FB28_Msk                /*!< Filter bit 28 */
+#define CAN_F10R2_FB29_Pos                   (29U)                             
+#define CAN_F10R2_FB29_Msk                   (0x1U << CAN_F10R2_FB29_Pos)      /*!< 0x20000000 */
+#define CAN_F10R2_FB29                       CAN_F10R2_FB29_Msk                /*!< Filter bit 29 */
+#define CAN_F10R2_FB30_Pos                   (30U)                             
+#define CAN_F10R2_FB30_Msk                   (0x1U << CAN_F10R2_FB30_Pos)      /*!< 0x40000000 */
+#define CAN_F10R2_FB30                       CAN_F10R2_FB30_Msk                /*!< Filter bit 30 */
+#define CAN_F10R2_FB31_Pos                   (31U)                             
+#define CAN_F10R2_FB31_Msk                   (0x1U << CAN_F10R2_FB31_Pos)      /*!< 0x80000000 */
+#define CAN_F10R2_FB31                       CAN_F10R2_FB31_Msk                /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F11R2 register  ******************/
+#define CAN_F11R2_FB0_Pos                    (0U)                              
+#define CAN_F11R2_FB0_Msk                    (0x1U << CAN_F11R2_FB0_Pos)       /*!< 0x00000001 */
+#define CAN_F11R2_FB0                        CAN_F11R2_FB0_Msk                 /*!< Filter bit 0 */
+#define CAN_F11R2_FB1_Pos                    (1U)                              
+#define CAN_F11R2_FB1_Msk                    (0x1U << CAN_F11R2_FB1_Pos)       /*!< 0x00000002 */
+#define CAN_F11R2_FB1                        CAN_F11R2_FB1_Msk                 /*!< Filter bit 1 */
+#define CAN_F11R2_FB2_Pos                    (2U)                              
+#define CAN_F11R2_FB2_Msk                    (0x1U << CAN_F11R2_FB2_Pos)       /*!< 0x00000004 */
+#define CAN_F11R2_FB2                        CAN_F11R2_FB2_Msk                 /*!< Filter bit 2 */
+#define CAN_F11R2_FB3_Pos                    (3U)                              
+#define CAN_F11R2_FB3_Msk                    (0x1U << CAN_F11R2_FB3_Pos)       /*!< 0x00000008 */
+#define CAN_F11R2_FB3                        CAN_F11R2_FB3_Msk                 /*!< Filter bit 3 */
+#define CAN_F11R2_FB4_Pos                    (4U)                              
+#define CAN_F11R2_FB4_Msk                    (0x1U << CAN_F11R2_FB4_Pos)       /*!< 0x00000010 */
+#define CAN_F11R2_FB4                        CAN_F11R2_FB4_Msk                 /*!< Filter bit 4 */
+#define CAN_F11R2_FB5_Pos                    (5U)                              
+#define CAN_F11R2_FB5_Msk                    (0x1U << CAN_F11R2_FB5_Pos)       /*!< 0x00000020 */
+#define CAN_F11R2_FB5                        CAN_F11R2_FB5_Msk                 /*!< Filter bit 5 */
+#define CAN_F11R2_FB6_Pos                    (6U)                              
+#define CAN_F11R2_FB6_Msk                    (0x1U << CAN_F11R2_FB6_Pos)       /*!< 0x00000040 */
+#define CAN_F11R2_FB6                        CAN_F11R2_FB6_Msk                 /*!< Filter bit 6 */
+#define CAN_F11R2_FB7_Pos                    (7U)                              
+#define CAN_F11R2_FB7_Msk                    (0x1U << CAN_F11R2_FB7_Pos)       /*!< 0x00000080 */
+#define CAN_F11R2_FB7                        CAN_F11R2_FB7_Msk                 /*!< Filter bit 7 */
+#define CAN_F11R2_FB8_Pos                    (8U)                              
+#define CAN_F11R2_FB8_Msk                    (0x1U << CAN_F11R2_FB8_Pos)       /*!< 0x00000100 */
+#define CAN_F11R2_FB8                        CAN_F11R2_FB8_Msk                 /*!< Filter bit 8 */
+#define CAN_F11R2_FB9_Pos                    (9U)                              
+#define CAN_F11R2_FB9_Msk                    (0x1U << CAN_F11R2_FB9_Pos)       /*!< 0x00000200 */
+#define CAN_F11R2_FB9                        CAN_F11R2_FB9_Msk                 /*!< Filter bit 9 */
+#define CAN_F11R2_FB10_Pos                   (10U)                             
+#define CAN_F11R2_FB10_Msk                   (0x1U << CAN_F11R2_FB10_Pos)      /*!< 0x00000400 */
+#define CAN_F11R2_FB10                       CAN_F11R2_FB10_Msk                /*!< Filter bit 10 */
+#define CAN_F11R2_FB11_Pos                   (11U)                             
+#define CAN_F11R2_FB11_Msk                   (0x1U << CAN_F11R2_FB11_Pos)      /*!< 0x00000800 */
+#define CAN_F11R2_FB11                       CAN_F11R2_FB11_Msk                /*!< Filter bit 11 */
+#define CAN_F11R2_FB12_Pos                   (12U)                             
+#define CAN_F11R2_FB12_Msk                   (0x1U << CAN_F11R2_FB12_Pos)      /*!< 0x00001000 */
+#define CAN_F11R2_FB12                       CAN_F11R2_FB12_Msk                /*!< Filter bit 12 */
+#define CAN_F11R2_FB13_Pos                   (13U)                             
+#define CAN_F11R2_FB13_Msk                   (0x1U << CAN_F11R2_FB13_Pos)      /*!< 0x00002000 */
+#define CAN_F11R2_FB13                       CAN_F11R2_FB13_Msk                /*!< Filter bit 13 */
+#define CAN_F11R2_FB14_Pos                   (14U)                             
+#define CAN_F11R2_FB14_Msk                   (0x1U << CAN_F11R2_FB14_Pos)      /*!< 0x00004000 */
+#define CAN_F11R2_FB14                       CAN_F11R2_FB14_Msk                /*!< Filter bit 14 */
+#define CAN_F11R2_FB15_Pos                   (15U)                             
+#define CAN_F11R2_FB15_Msk                   (0x1U << CAN_F11R2_FB15_Pos)      /*!< 0x00008000 */
+#define CAN_F11R2_FB15                       CAN_F11R2_FB15_Msk                /*!< Filter bit 15 */
+#define CAN_F11R2_FB16_Pos                   (16U)                             
+#define CAN_F11R2_FB16_Msk                   (0x1U << CAN_F11R2_FB16_Pos)      /*!< 0x00010000 */
+#define CAN_F11R2_FB16                       CAN_F11R2_FB16_Msk                /*!< Filter bit 16 */
+#define CAN_F11R2_FB17_Pos                   (17U)                             
+#define CAN_F11R2_FB17_Msk                   (0x1U << CAN_F11R2_FB17_Pos)      /*!< 0x00020000 */
+#define CAN_F11R2_FB17                       CAN_F11R2_FB17_Msk                /*!< Filter bit 17 */
+#define CAN_F11R2_FB18_Pos                   (18U)                             
+#define CAN_F11R2_FB18_Msk                   (0x1U << CAN_F11R2_FB18_Pos)      /*!< 0x00040000 */
+#define CAN_F11R2_FB18                       CAN_F11R2_FB18_Msk                /*!< Filter bit 18 */
+#define CAN_F11R2_FB19_Pos                   (19U)                             
+#define CAN_F11R2_FB19_Msk                   (0x1U << CAN_F11R2_FB19_Pos)      /*!< 0x00080000 */
+#define CAN_F11R2_FB19                       CAN_F11R2_FB19_Msk                /*!< Filter bit 19 */
+#define CAN_F11R2_FB20_Pos                   (20U)                             
+#define CAN_F11R2_FB20_Msk                   (0x1U << CAN_F11R2_FB20_Pos)      /*!< 0x00100000 */
+#define CAN_F11R2_FB20                       CAN_F11R2_FB20_Msk                /*!< Filter bit 20 */
+#define CAN_F11R2_FB21_Pos                   (21U)                             
+#define CAN_F11R2_FB21_Msk                   (0x1U << CAN_F11R2_FB21_Pos)      /*!< 0x00200000 */
+#define CAN_F11R2_FB21                       CAN_F11R2_FB21_Msk                /*!< Filter bit 21 */
+#define CAN_F11R2_FB22_Pos                   (22U)                             
+#define CAN_F11R2_FB22_Msk                   (0x1U << CAN_F11R2_FB22_Pos)      /*!< 0x00400000 */
+#define CAN_F11R2_FB22                       CAN_F11R2_FB22_Msk                /*!< Filter bit 22 */
+#define CAN_F11R2_FB23_Pos                   (23U)                             
+#define CAN_F11R2_FB23_Msk                   (0x1U << CAN_F11R2_FB23_Pos)      /*!< 0x00800000 */
+#define CAN_F11R2_FB23                       CAN_F11R2_FB23_Msk                /*!< Filter bit 23 */
+#define CAN_F11R2_FB24_Pos                   (24U)                             
+#define CAN_F11R2_FB24_Msk                   (0x1U << CAN_F11R2_FB24_Pos)      /*!< 0x01000000 */
+#define CAN_F11R2_FB24                       CAN_F11R2_FB24_Msk                /*!< Filter bit 24 */
+#define CAN_F11R2_FB25_Pos                   (25U)                             
+#define CAN_F11R2_FB25_Msk                   (0x1U << CAN_F11R2_FB25_Pos)      /*!< 0x02000000 */
+#define CAN_F11R2_FB25                       CAN_F11R2_FB25_Msk                /*!< Filter bit 25 */
+#define CAN_F11R2_FB26_Pos                   (26U)                             
+#define CAN_F11R2_FB26_Msk                   (0x1U << CAN_F11R2_FB26_Pos)      /*!< 0x04000000 */
+#define CAN_F11R2_FB26                       CAN_F11R2_FB26_Msk                /*!< Filter bit 26 */
+#define CAN_F11R2_FB27_Pos                   (27U)                             
+#define CAN_F11R2_FB27_Msk                   (0x1U << CAN_F11R2_FB27_Pos)      /*!< 0x08000000 */
+#define CAN_F11R2_FB27                       CAN_F11R2_FB27_Msk                /*!< Filter bit 27 */
+#define CAN_F11R2_FB28_Pos                   (28U)                             
+#define CAN_F11R2_FB28_Msk                   (0x1U << CAN_F11R2_FB28_Pos)      /*!< 0x10000000 */
+#define CAN_F11R2_FB28                       CAN_F11R2_FB28_Msk                /*!< Filter bit 28 */
+#define CAN_F11R2_FB29_Pos                   (29U)                             
+#define CAN_F11R2_FB29_Msk                   (0x1U << CAN_F11R2_FB29_Pos)      /*!< 0x20000000 */
+#define CAN_F11R2_FB29                       CAN_F11R2_FB29_Msk                /*!< Filter bit 29 */
+#define CAN_F11R2_FB30_Pos                   (30U)                             
+#define CAN_F11R2_FB30_Msk                   (0x1U << CAN_F11R2_FB30_Pos)      /*!< 0x40000000 */
+#define CAN_F11R2_FB30                       CAN_F11R2_FB30_Msk                /*!< Filter bit 30 */
+#define CAN_F11R2_FB31_Pos                   (31U)                             
+#define CAN_F11R2_FB31_Msk                   (0x1U << CAN_F11R2_FB31_Pos)      /*!< 0x80000000 */
+#define CAN_F11R2_FB31                       CAN_F11R2_FB31_Msk                /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F12R2 register  ******************/
+#define CAN_F12R2_FB0_Pos                    (0U)                              
+#define CAN_F12R2_FB0_Msk                    (0x1U << CAN_F12R2_FB0_Pos)       /*!< 0x00000001 */
+#define CAN_F12R2_FB0                        CAN_F12R2_FB0_Msk                 /*!< Filter bit 0 */
+#define CAN_F12R2_FB1_Pos                    (1U)                              
+#define CAN_F12R2_FB1_Msk                    (0x1U << CAN_F12R2_FB1_Pos)       /*!< 0x00000002 */
+#define CAN_F12R2_FB1                        CAN_F12R2_FB1_Msk                 /*!< Filter bit 1 */
+#define CAN_F12R2_FB2_Pos                    (2U)                              
+#define CAN_F12R2_FB2_Msk                    (0x1U << CAN_F12R2_FB2_Pos)       /*!< 0x00000004 */
+#define CAN_F12R2_FB2                        CAN_F12R2_FB2_Msk                 /*!< Filter bit 2 */
+#define CAN_F12R2_FB3_Pos                    (3U)                              
+#define CAN_F12R2_FB3_Msk                    (0x1U << CAN_F12R2_FB3_Pos)       /*!< 0x00000008 */
+#define CAN_F12R2_FB3                        CAN_F12R2_FB3_Msk                 /*!< Filter bit 3 */
+#define CAN_F12R2_FB4_Pos                    (4U)                              
+#define CAN_F12R2_FB4_Msk                    (0x1U << CAN_F12R2_FB4_Pos)       /*!< 0x00000010 */
+#define CAN_F12R2_FB4                        CAN_F12R2_FB4_Msk                 /*!< Filter bit 4 */
+#define CAN_F12R2_FB5_Pos                    (5U)                              
+#define CAN_F12R2_FB5_Msk                    (0x1U << CAN_F12R2_FB5_Pos)       /*!< 0x00000020 */
+#define CAN_F12R2_FB5                        CAN_F12R2_FB5_Msk                 /*!< Filter bit 5 */
+#define CAN_F12R2_FB6_Pos                    (6U)                              
+#define CAN_F12R2_FB6_Msk                    (0x1U << CAN_F12R2_FB6_Pos)       /*!< 0x00000040 */
+#define CAN_F12R2_FB6                        CAN_F12R2_FB6_Msk                 /*!< Filter bit 6 */
+#define CAN_F12R2_FB7_Pos                    (7U)                              
+#define CAN_F12R2_FB7_Msk                    (0x1U << CAN_F12R2_FB7_Pos)       /*!< 0x00000080 */
+#define CAN_F12R2_FB7                        CAN_F12R2_FB7_Msk                 /*!< Filter bit 7 */
+#define CAN_F12R2_FB8_Pos                    (8U)                              
+#define CAN_F12R2_FB8_Msk                    (0x1U << CAN_F12R2_FB8_Pos)       /*!< 0x00000100 */
+#define CAN_F12R2_FB8                        CAN_F12R2_FB8_Msk                 /*!< Filter bit 8 */
+#define CAN_F12R2_FB9_Pos                    (9U)                              
+#define CAN_F12R2_FB9_Msk                    (0x1U << CAN_F12R2_FB9_Pos)       /*!< 0x00000200 */
+#define CAN_F12R2_FB9                        CAN_F12R2_FB9_Msk                 /*!< Filter bit 9 */
+#define CAN_F12R2_FB10_Pos                   (10U)                             
+#define CAN_F12R2_FB10_Msk                   (0x1U << CAN_F12R2_FB10_Pos)      /*!< 0x00000400 */
+#define CAN_F12R2_FB10                       CAN_F12R2_FB10_Msk                /*!< Filter bit 10 */
+#define CAN_F12R2_FB11_Pos                   (11U)                             
+#define CAN_F12R2_FB11_Msk                   (0x1U << CAN_F12R2_FB11_Pos)      /*!< 0x00000800 */
+#define CAN_F12R2_FB11                       CAN_F12R2_FB11_Msk                /*!< Filter bit 11 */
+#define CAN_F12R2_FB12_Pos                   (12U)                             
+#define CAN_F12R2_FB12_Msk                   (0x1U << CAN_F12R2_FB12_Pos)      /*!< 0x00001000 */
+#define CAN_F12R2_FB12                       CAN_F12R2_FB12_Msk                /*!< Filter bit 12 */
+#define CAN_F12R2_FB13_Pos                   (13U)                             
+#define CAN_F12R2_FB13_Msk                   (0x1U << CAN_F12R2_FB13_Pos)      /*!< 0x00002000 */
+#define CAN_F12R2_FB13                       CAN_F12R2_FB13_Msk                /*!< Filter bit 13 */
+#define CAN_F12R2_FB14_Pos                   (14U)                             
+#define CAN_F12R2_FB14_Msk                   (0x1U << CAN_F12R2_FB14_Pos)      /*!< 0x00004000 */
+#define CAN_F12R2_FB14                       CAN_F12R2_FB14_Msk                /*!< Filter bit 14 */
+#define CAN_F12R2_FB15_Pos                   (15U)                             
+#define CAN_F12R2_FB15_Msk                   (0x1U << CAN_F12R2_FB15_Pos)      /*!< 0x00008000 */
+#define CAN_F12R2_FB15                       CAN_F12R2_FB15_Msk                /*!< Filter bit 15 */
+#define CAN_F12R2_FB16_Pos                   (16U)                             
+#define CAN_F12R2_FB16_Msk                   (0x1U << CAN_F12R2_FB16_Pos)      /*!< 0x00010000 */
+#define CAN_F12R2_FB16                       CAN_F12R2_FB16_Msk                /*!< Filter bit 16 */
+#define CAN_F12R2_FB17_Pos                   (17U)                             
+#define CAN_F12R2_FB17_Msk                   (0x1U << CAN_F12R2_FB17_Pos)      /*!< 0x00020000 */
+#define CAN_F12R2_FB17                       CAN_F12R2_FB17_Msk                /*!< Filter bit 17 */
+#define CAN_F12R2_FB18_Pos                   (18U)                             
+#define CAN_F12R2_FB18_Msk                   (0x1U << CAN_F12R2_FB18_Pos)      /*!< 0x00040000 */
+#define CAN_F12R2_FB18                       CAN_F12R2_FB18_Msk                /*!< Filter bit 18 */
+#define CAN_F12R2_FB19_Pos                   (19U)                             
+#define CAN_F12R2_FB19_Msk                   (0x1U << CAN_F12R2_FB19_Pos)      /*!< 0x00080000 */
+#define CAN_F12R2_FB19                       CAN_F12R2_FB19_Msk                /*!< Filter bit 19 */
+#define CAN_F12R2_FB20_Pos                   (20U)                             
+#define CAN_F12R2_FB20_Msk                   (0x1U << CAN_F12R2_FB20_Pos)      /*!< 0x00100000 */
+#define CAN_F12R2_FB20                       CAN_F12R2_FB20_Msk                /*!< Filter bit 20 */
+#define CAN_F12R2_FB21_Pos                   (21U)                             
+#define CAN_F12R2_FB21_Msk                   (0x1U << CAN_F12R2_FB21_Pos)      /*!< 0x00200000 */
+#define CAN_F12R2_FB21                       CAN_F12R2_FB21_Msk                /*!< Filter bit 21 */
+#define CAN_F12R2_FB22_Pos                   (22U)                             
+#define CAN_F12R2_FB22_Msk                   (0x1U << CAN_F12R2_FB22_Pos)      /*!< 0x00400000 */
+#define CAN_F12R2_FB22                       CAN_F12R2_FB22_Msk                /*!< Filter bit 22 */
+#define CAN_F12R2_FB23_Pos                   (23U)                             
+#define CAN_F12R2_FB23_Msk                   (0x1U << CAN_F12R2_FB23_Pos)      /*!< 0x00800000 */
+#define CAN_F12R2_FB23                       CAN_F12R2_FB23_Msk                /*!< Filter bit 23 */
+#define CAN_F12R2_FB24_Pos                   (24U)                             
+#define CAN_F12R2_FB24_Msk                   (0x1U << CAN_F12R2_FB24_Pos)      /*!< 0x01000000 */
+#define CAN_F12R2_FB24                       CAN_F12R2_FB24_Msk                /*!< Filter bit 24 */
+#define CAN_F12R2_FB25_Pos                   (25U)                             
+#define CAN_F12R2_FB25_Msk                   (0x1U << CAN_F12R2_FB25_Pos)      /*!< 0x02000000 */
+#define CAN_F12R2_FB25                       CAN_F12R2_FB25_Msk                /*!< Filter bit 25 */
+#define CAN_F12R2_FB26_Pos                   (26U)                             
+#define CAN_F12R2_FB26_Msk                   (0x1U << CAN_F12R2_FB26_Pos)      /*!< 0x04000000 */
+#define CAN_F12R2_FB26                       CAN_F12R2_FB26_Msk                /*!< Filter bit 26 */
+#define CAN_F12R2_FB27_Pos                   (27U)                             
+#define CAN_F12R2_FB27_Msk                   (0x1U << CAN_F12R2_FB27_Pos)      /*!< 0x08000000 */
+#define CAN_F12R2_FB27                       CAN_F12R2_FB27_Msk                /*!< Filter bit 27 */
+#define CAN_F12R2_FB28_Pos                   (28U)                             
+#define CAN_F12R2_FB28_Msk                   (0x1U << CAN_F12R2_FB28_Pos)      /*!< 0x10000000 */
+#define CAN_F12R2_FB28                       CAN_F12R2_FB28_Msk                /*!< Filter bit 28 */
+#define CAN_F12R2_FB29_Pos                   (29U)                             
+#define CAN_F12R2_FB29_Msk                   (0x1U << CAN_F12R2_FB29_Pos)      /*!< 0x20000000 */
+#define CAN_F12R2_FB29                       CAN_F12R2_FB29_Msk                /*!< Filter bit 29 */
+#define CAN_F12R2_FB30_Pos                   (30U)                             
+#define CAN_F12R2_FB30_Msk                   (0x1U << CAN_F12R2_FB30_Pos)      /*!< 0x40000000 */
+#define CAN_F12R2_FB30                       CAN_F12R2_FB30_Msk                /*!< Filter bit 30 */
+#define CAN_F12R2_FB31_Pos                   (31U)                             
+#define CAN_F12R2_FB31_Msk                   (0x1U << CAN_F12R2_FB31_Pos)      /*!< 0x80000000 */
+#define CAN_F12R2_FB31                       CAN_F12R2_FB31_Msk                /*!< Filter bit 31 */
+
+/*******************  Bit definition for CAN_F13R2 register  ******************/
+#define CAN_F13R2_FB0_Pos                    (0U)                              
+#define CAN_F13R2_FB0_Msk                    (0x1U << CAN_F13R2_FB0_Pos)       /*!< 0x00000001 */
+#define CAN_F13R2_FB0                        CAN_F13R2_FB0_Msk                 /*!< Filter bit 0 */
+#define CAN_F13R2_FB1_Pos                    (1U)                              
+#define CAN_F13R2_FB1_Msk                    (0x1U << CAN_F13R2_FB1_Pos)       /*!< 0x00000002 */
+#define CAN_F13R2_FB1                        CAN_F13R2_FB1_Msk                 /*!< Filter bit 1 */
+#define CAN_F13R2_FB2_Pos                    (2U)                              
+#define CAN_F13R2_FB2_Msk                    (0x1U << CAN_F13R2_FB2_Pos)       /*!< 0x00000004 */
+#define CAN_F13R2_FB2                        CAN_F13R2_FB2_Msk                 /*!< Filter bit 2 */
+#define CAN_F13R2_FB3_Pos                    (3U)                              
+#define CAN_F13R2_FB3_Msk                    (0x1U << CAN_F13R2_FB3_Pos)       /*!< 0x00000008 */
+#define CAN_F13R2_FB3                        CAN_F13R2_FB3_Msk                 /*!< Filter bit 3 */
+#define CAN_F13R2_FB4_Pos                    (4U)                              
+#define CAN_F13R2_FB4_Msk                    (0x1U << CAN_F13R2_FB4_Pos)       /*!< 0x00000010 */
+#define CAN_F13R2_FB4                        CAN_F13R2_FB4_Msk                 /*!< Filter bit 4 */
+#define CAN_F13R2_FB5_Pos                    (5U)                              
+#define CAN_F13R2_FB5_Msk                    (0x1U << CAN_F13R2_FB5_Pos)       /*!< 0x00000020 */
+#define CAN_F13R2_FB5                        CAN_F13R2_FB5_Msk                 /*!< Filter bit 5 */
+#define CAN_F13R2_FB6_Pos                    (6U)                              
+#define CAN_F13R2_FB6_Msk                    (0x1U << CAN_F13R2_FB6_Pos)       /*!< 0x00000040 */
+#define CAN_F13R2_FB6                        CAN_F13R2_FB6_Msk                 /*!< Filter bit 6 */
+#define CAN_F13R2_FB7_Pos                    (7U)                              
+#define CAN_F13R2_FB7_Msk                    (0x1U << CAN_F13R2_FB7_Pos)       /*!< 0x00000080 */
+#define CAN_F13R2_FB7                        CAN_F13R2_FB7_Msk                 /*!< Filter bit 7 */
+#define CAN_F13R2_FB8_Pos                    (8U)                              
+#define CAN_F13R2_FB8_Msk                    (0x1U << CAN_F13R2_FB8_Pos)       /*!< 0x00000100 */
+#define CAN_F13R2_FB8                        CAN_F13R2_FB8_Msk                 /*!< Filter bit 8 */
+#define CAN_F13R2_FB9_Pos                    (9U)                              
+#define CAN_F13R2_FB9_Msk                    (0x1U << CAN_F13R2_FB9_Pos)       /*!< 0x00000200 */
+#define CAN_F13R2_FB9                        CAN_F13R2_FB9_Msk                 /*!< Filter bit 9 */
+#define CAN_F13R2_FB10_Pos                   (10U)                             
+#define CAN_F13R2_FB10_Msk                   (0x1U << CAN_F13R2_FB10_Pos)      /*!< 0x00000400 */
+#define CAN_F13R2_FB10                       CAN_F13R2_FB10_Msk                /*!< Filter bit 10 */
+#define CAN_F13R2_FB11_Pos                   (11U)                             
+#define CAN_F13R2_FB11_Msk                   (0x1U << CAN_F13R2_FB11_Pos)      /*!< 0x00000800 */
+#define CAN_F13R2_FB11                       CAN_F13R2_FB11_Msk                /*!< Filter bit 11 */
+#define CAN_F13R2_FB12_Pos                   (12U)                             
+#define CAN_F13R2_FB12_Msk                   (0x1U << CAN_F13R2_FB12_Pos)      /*!< 0x00001000 */
+#define CAN_F13R2_FB12                       CAN_F13R2_FB12_Msk                /*!< Filter bit 12 */
+#define CAN_F13R2_FB13_Pos                   (13U)                             
+#define CAN_F13R2_FB13_Msk                   (0x1U << CAN_F13R2_FB13_Pos)      /*!< 0x00002000 */
+#define CAN_F13R2_FB13                       CAN_F13R2_FB13_Msk                /*!< Filter bit 13 */
+#define CAN_F13R2_FB14_Pos                   (14U)                             
+#define CAN_F13R2_FB14_Msk                   (0x1U << CAN_F13R2_FB14_Pos)      /*!< 0x00004000 */
+#define CAN_F13R2_FB14                       CAN_F13R2_FB14_Msk                /*!< Filter bit 14 */
+#define CAN_F13R2_FB15_Pos                   (15U)                             
+#define CAN_F13R2_FB15_Msk                   (0x1U << CAN_F13R2_FB15_Pos)      /*!< 0x00008000 */
+#define CAN_F13R2_FB15                       CAN_F13R2_FB15_Msk                /*!< Filter bit 15 */
+#define CAN_F13R2_FB16_Pos                   (16U)                             
+#define CAN_F13R2_FB16_Msk                   (0x1U << CAN_F13R2_FB16_Pos)      /*!< 0x00010000 */
+#define CAN_F13R2_FB16                       CAN_F13R2_FB16_Msk                /*!< Filter bit 16 */
+#define CAN_F13R2_FB17_Pos                   (17U)                             
+#define CAN_F13R2_FB17_Msk                   (0x1U << CAN_F13R2_FB17_Pos)      /*!< 0x00020000 */
+#define CAN_F13R2_FB17                       CAN_F13R2_FB17_Msk                /*!< Filter bit 17 */
+#define CAN_F13R2_FB18_Pos                   (18U)                             
+#define CAN_F13R2_FB18_Msk                   (0x1U << CAN_F13R2_FB18_Pos)      /*!< 0x00040000 */
+#define CAN_F13R2_FB18                       CAN_F13R2_FB18_Msk                /*!< Filter bit 18 */
+#define CAN_F13R2_FB19_Pos                   (19U)                             
+#define CAN_F13R2_FB19_Msk                   (0x1U << CAN_F13R2_FB19_Pos)      /*!< 0x00080000 */
+#define CAN_F13R2_FB19                       CAN_F13R2_FB19_Msk                /*!< Filter bit 19 */
+#define CAN_F13R2_FB20_Pos                   (20U)                             
+#define CAN_F13R2_FB20_Msk                   (0x1U << CAN_F13R2_FB20_Pos)      /*!< 0x00100000 */
+#define CAN_F13R2_FB20                       CAN_F13R2_FB20_Msk                /*!< Filter bit 20 */
+#define CAN_F13R2_FB21_Pos                   (21U)                             
+#define CAN_F13R2_FB21_Msk                   (0x1U << CAN_F13R2_FB21_Pos)      /*!< 0x00200000 */
+#define CAN_F13R2_FB21                       CAN_F13R2_FB21_Msk                /*!< Filter bit 21 */
+#define CAN_F13R2_FB22_Pos                   (22U)                             
+#define CAN_F13R2_FB22_Msk                   (0x1U << CAN_F13R2_FB22_Pos)      /*!< 0x00400000 */
+#define CAN_F13R2_FB22                       CAN_F13R2_FB22_Msk                /*!< Filter bit 22 */
+#define CAN_F13R2_FB23_Pos                   (23U)                             
+#define CAN_F13R2_FB23_Msk                   (0x1U << CAN_F13R2_FB23_Pos)      /*!< 0x00800000 */
+#define CAN_F13R2_FB23                       CAN_F13R2_FB23_Msk                /*!< Filter bit 23 */
+#define CAN_F13R2_FB24_Pos                   (24U)                             
+#define CAN_F13R2_FB24_Msk                   (0x1U << CAN_F13R2_FB24_Pos)      /*!< 0x01000000 */
+#define CAN_F13R2_FB24                       CAN_F13R2_FB24_Msk                /*!< Filter bit 24 */
+#define CAN_F13R2_FB25_Pos                   (25U)                             
+#define CAN_F13R2_FB25_Msk                   (0x1U << CAN_F13R2_FB25_Pos)      /*!< 0x02000000 */
+#define CAN_F13R2_FB25                       CAN_F13R2_FB25_Msk                /*!< Filter bit 25 */
+#define CAN_F13R2_FB26_Pos                   (26U)                             
+#define CAN_F13R2_FB26_Msk                   (0x1U << CAN_F13R2_FB26_Pos)      /*!< 0x04000000 */
+#define CAN_F13R2_FB26                       CAN_F13R2_FB26_Msk                /*!< Filter bit 26 */
+#define CAN_F13R2_FB27_Pos                   (27U)                             
+#define CAN_F13R2_FB27_Msk                   (0x1U << CAN_F13R2_FB27_Pos)      /*!< 0x08000000 */
+#define CAN_F13R2_FB27                       CAN_F13R2_FB27_Msk                /*!< Filter bit 27 */
+#define CAN_F13R2_FB28_Pos                   (28U)                             
+#define CAN_F13R2_FB28_Msk                   (0x1U << CAN_F13R2_FB28_Pos)      /*!< 0x10000000 */
+#define CAN_F13R2_FB28                       CAN_F13R2_FB28_Msk                /*!< Filter bit 28 */
+#define CAN_F13R2_FB29_Pos                   (29U)                             
+#define CAN_F13R2_FB29_Msk                   (0x1U << CAN_F13R2_FB29_Pos)      /*!< 0x20000000 */
+#define CAN_F13R2_FB29                       CAN_F13R2_FB29_Msk                /*!< Filter bit 29 */
+#define CAN_F13R2_FB30_Pos                   (30U)                             
+#define CAN_F13R2_FB30_Msk                   (0x1U << CAN_F13R2_FB30_Pos)      /*!< 0x40000000 */
+#define CAN_F13R2_FB30                       CAN_F13R2_FB30_Msk                /*!< Filter bit 30 */
+#define CAN_F13R2_FB31_Pos                   (31U)                             
+#define CAN_F13R2_FB31_Msk                   (0x1U << CAN_F13R2_FB31_Pos)      /*!< 0x80000000 */
+#define CAN_F13R2_FB31                       CAN_F13R2_FB31_Msk                /*!< Filter bit 31 */
+
+/******************************************************************************/
+/*                                                                            */
+/*                        Serial Peripheral Interface                         */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for SPI_CR1 register  ********************/
+#define SPI_CR1_CPHA_Pos                    (0U)                               
+#define SPI_CR1_CPHA_Msk                    (0x1U << SPI_CR1_CPHA_Pos)         /*!< 0x00000001 */
+#define SPI_CR1_CPHA                        SPI_CR1_CPHA_Msk                   /*!< Clock Phase */
+#define SPI_CR1_CPOL_Pos                    (1U)                               
+#define SPI_CR1_CPOL_Msk                    (0x1U << SPI_CR1_CPOL_Pos)         /*!< 0x00000002 */
+#define SPI_CR1_CPOL                        SPI_CR1_CPOL_Msk                   /*!< Clock Polarity */
+#define SPI_CR1_MSTR_Pos                    (2U)                               
+#define SPI_CR1_MSTR_Msk                    (0x1U << SPI_CR1_MSTR_Pos)         /*!< 0x00000004 */
+#define SPI_CR1_MSTR                        SPI_CR1_MSTR_Msk                   /*!< Master Selection */
+
+#define SPI_CR1_BR_Pos                      (3U)                               
+#define SPI_CR1_BR_Msk                      (0x7U << SPI_CR1_BR_Pos)           /*!< 0x00000038 */
+#define SPI_CR1_BR                          SPI_CR1_BR_Msk                     /*!< BR[2:0] bits (Baud Rate Control) */
+#define SPI_CR1_BR_0                        (0x1U << SPI_CR1_BR_Pos)           /*!< 0x00000008 */
+#define SPI_CR1_BR_1                        (0x2U << SPI_CR1_BR_Pos)           /*!< 0x00000010 */
+#define SPI_CR1_BR_2                        (0x4U << SPI_CR1_BR_Pos)           /*!< 0x00000020 */
+
+#define SPI_CR1_SPE_Pos                     (6U)                               
+#define SPI_CR1_SPE_Msk                     (0x1U << SPI_CR1_SPE_Pos)          /*!< 0x00000040 */
+#define SPI_CR1_SPE                         SPI_CR1_SPE_Msk                    /*!< SPI Enable */
+#define SPI_CR1_LSBFIRST_Pos                (7U)                               
+#define SPI_CR1_LSBFIRST_Msk                (0x1U << SPI_CR1_LSBFIRST_Pos)     /*!< 0x00000080 */
+#define SPI_CR1_LSBFIRST                    SPI_CR1_LSBFIRST_Msk               /*!< Frame Format */
+#define SPI_CR1_SSI_Pos                     (8U)                               
+#define SPI_CR1_SSI_Msk                     (0x1U << SPI_CR1_SSI_Pos)          /*!< 0x00000100 */
+#define SPI_CR1_SSI                         SPI_CR1_SSI_Msk                    /*!< Internal slave select */
+#define SPI_CR1_SSM_Pos                     (9U)                               
+#define SPI_CR1_SSM_Msk                     (0x1U << SPI_CR1_SSM_Pos)          /*!< 0x00000200 */
+#define SPI_CR1_SSM                         SPI_CR1_SSM_Msk                    /*!< Software slave management */
+#define SPI_CR1_RXONLY_Pos                  (10U)                              
+#define SPI_CR1_RXONLY_Msk                  (0x1U << SPI_CR1_RXONLY_Pos)       /*!< 0x00000400 */
+#define SPI_CR1_RXONLY                      SPI_CR1_RXONLY_Msk                 /*!< Receive only */
+#define SPI_CR1_DFF_Pos                     (11U)                              
+#define SPI_CR1_DFF_Msk                     (0x1U << SPI_CR1_DFF_Pos)          /*!< 0x00000800 */
+#define SPI_CR1_DFF                         SPI_CR1_DFF_Msk                    /*!< Data Frame Format */
+#define SPI_CR1_CRCNEXT_Pos                 (12U)                              
+#define SPI_CR1_CRCNEXT_Msk                 (0x1U << SPI_CR1_CRCNEXT_Pos)      /*!< 0x00001000 */
+#define SPI_CR1_CRCNEXT                     SPI_CR1_CRCNEXT_Msk                /*!< Transmit CRC next */
+#define SPI_CR1_CRCEN_Pos                   (13U)                              
+#define SPI_CR1_CRCEN_Msk                   (0x1U << SPI_CR1_CRCEN_Pos)        /*!< 0x00002000 */
+#define SPI_CR1_CRCEN                       SPI_CR1_CRCEN_Msk                  /*!< Hardware CRC calculation enable */
+#define SPI_CR1_BIDIOE_Pos                  (14U)                              
+#define SPI_CR1_BIDIOE_Msk                  (0x1U << SPI_CR1_BIDIOE_Pos)       /*!< 0x00004000 */
+#define SPI_CR1_BIDIOE                      SPI_CR1_BIDIOE_Msk                 /*!< Output enable in bidirectional mode */
+#define SPI_CR1_BIDIMODE_Pos                (15U)                              
+#define SPI_CR1_BIDIMODE_Msk                (0x1U << SPI_CR1_BIDIMODE_Pos)     /*!< 0x00008000 */
+#define SPI_CR1_BIDIMODE                    SPI_CR1_BIDIMODE_Msk               /*!< Bidirectional data mode enable */
+
+/*******************  Bit definition for SPI_CR2 register  ********************/
+#define SPI_CR2_RXDMAEN_Pos                 (0U)                               
+#define SPI_CR2_RXDMAEN_Msk                 (0x1U << SPI_CR2_RXDMAEN_Pos)      /*!< 0x00000001 */
+#define SPI_CR2_RXDMAEN                     SPI_CR2_RXDMAEN_Msk                /*!< Rx Buffer DMA Enable */
+#define SPI_CR2_TXDMAEN_Pos                 (1U)                               
+#define SPI_CR2_TXDMAEN_Msk                 (0x1U << SPI_CR2_TXDMAEN_Pos)      /*!< 0x00000002 */
+#define SPI_CR2_TXDMAEN                     SPI_CR2_TXDMAEN_Msk                /*!< Tx Buffer DMA Enable */
+#define SPI_CR2_SSOE_Pos                    (2U)                               
+#define SPI_CR2_SSOE_Msk                    (0x1U << SPI_CR2_SSOE_Pos)         /*!< 0x00000004 */
+#define SPI_CR2_SSOE                        SPI_CR2_SSOE_Msk                   /*!< SS Output Enable */
+#define SPI_CR2_ERRIE_Pos                   (5U)                               
+#define SPI_CR2_ERRIE_Msk                   (0x1U << SPI_CR2_ERRIE_Pos)        /*!< 0x00000020 */
+#define SPI_CR2_ERRIE                       SPI_CR2_ERRIE_Msk                  /*!< Error Interrupt Enable */
+#define SPI_CR2_RXNEIE_Pos                  (6U)                               
+#define SPI_CR2_RXNEIE_Msk                  (0x1U << SPI_CR2_RXNEIE_Pos)       /*!< 0x00000040 */
+#define SPI_CR2_RXNEIE                      SPI_CR2_RXNEIE_Msk                 /*!< RX buffer Not Empty Interrupt Enable */
+#define SPI_CR2_TXEIE_Pos                   (7U)                               
+#define SPI_CR2_TXEIE_Msk                   (0x1U << SPI_CR2_TXEIE_Pos)        /*!< 0x00000080 */
+#define SPI_CR2_TXEIE                       SPI_CR2_TXEIE_Msk                  /*!< Tx buffer Empty Interrupt Enable */
+
+/********************  Bit definition for SPI_SR register  ********************/
+#define SPI_SR_RXNE_Pos                     (0U)                               
+#define SPI_SR_RXNE_Msk                     (0x1U << SPI_SR_RXNE_Pos)          /*!< 0x00000001 */
+#define SPI_SR_RXNE                         SPI_SR_RXNE_Msk                    /*!< Receive buffer Not Empty */
+#define SPI_SR_TXE_Pos                      (1U)                               
+#define SPI_SR_TXE_Msk                      (0x1U << SPI_SR_TXE_Pos)           /*!< 0x00000002 */
+#define SPI_SR_TXE                          SPI_SR_TXE_Msk                     /*!< Transmit buffer Empty */
+#define SPI_SR_CHSIDE_Pos                   (2U)                               
+#define SPI_SR_CHSIDE_Msk                   (0x1U << SPI_SR_CHSIDE_Pos)        /*!< 0x00000004 */
+#define SPI_SR_CHSIDE                       SPI_SR_CHSIDE_Msk                  /*!< Channel side */
+#define SPI_SR_UDR_Pos                      (3U)                               
+#define SPI_SR_UDR_Msk                      (0x1U << SPI_SR_UDR_Pos)           /*!< 0x00000008 */
+#define SPI_SR_UDR                          SPI_SR_UDR_Msk                     /*!< Underrun flag */
+#define SPI_SR_CRCERR_Pos                   (4U)                               
+#define SPI_SR_CRCERR_Msk                   (0x1U << SPI_SR_CRCERR_Pos)        /*!< 0x00000010 */
+#define SPI_SR_CRCERR                       SPI_SR_CRCERR_Msk                  /*!< CRC Error flag */
+#define SPI_SR_MODF_Pos                     (5U)                               
+#define SPI_SR_MODF_Msk                     (0x1U << SPI_SR_MODF_Pos)          /*!< 0x00000020 */
+#define SPI_SR_MODF                         SPI_SR_MODF_Msk                    /*!< Mode fault */
+#define SPI_SR_OVR_Pos                      (6U)                               
+#define SPI_SR_OVR_Msk                      (0x1U << SPI_SR_OVR_Pos)           /*!< 0x00000040 */
+#define SPI_SR_OVR                          SPI_SR_OVR_Msk                     /*!< Overrun flag */
+#define SPI_SR_BSY_Pos                      (7U)                               
+#define SPI_SR_BSY_Msk                      (0x1U << SPI_SR_BSY_Pos)           /*!< 0x00000080 */
+#define SPI_SR_BSY                          SPI_SR_BSY_Msk                     /*!< Busy flag */
+
+/********************  Bit definition for SPI_DR register  ********************/
+#define SPI_DR_DR_Pos                       (0U)                               
+#define SPI_DR_DR_Msk                       (0xFFFFU << SPI_DR_DR_Pos)         /*!< 0x0000FFFF */
+#define SPI_DR_DR                           SPI_DR_DR_Msk                      /*!< Data Register */
+
+/*******************  Bit definition for SPI_CRCPR register  ******************/
+#define SPI_CRCPR_CRCPOLY_Pos               (0U)                               
+#define SPI_CRCPR_CRCPOLY_Msk               (0xFFFFU << SPI_CRCPR_CRCPOLY_Pos) /*!< 0x0000FFFF */
+#define SPI_CRCPR_CRCPOLY                   SPI_CRCPR_CRCPOLY_Msk              /*!< CRC polynomial register */
+
+/******************  Bit definition for SPI_RXCRCR register  ******************/
+#define SPI_RXCRCR_RXCRC_Pos                (0U)                               
+#define SPI_RXCRCR_RXCRC_Msk                (0xFFFFU << SPI_RXCRCR_RXCRC_Pos)  /*!< 0x0000FFFF */
+#define SPI_RXCRCR_RXCRC                    SPI_RXCRCR_RXCRC_Msk               /*!< Rx CRC Register */
+
+/******************  Bit definition for SPI_TXCRCR register  ******************/
+#define SPI_TXCRCR_TXCRC_Pos                (0U)                               
+#define SPI_TXCRCR_TXCRC_Msk                (0xFFFFU << SPI_TXCRCR_TXCRC_Pos)  /*!< 0x0000FFFF */
+#define SPI_TXCRCR_TXCRC                    SPI_TXCRCR_TXCRC_Msk               /*!< Tx CRC Register */
+
+/******************  Bit definition for SPI_I2SCFGR register  *****************/
+#define SPI_I2SCFGR_I2SMOD_Pos              (11U)                              
+#define SPI_I2SCFGR_I2SMOD_Msk              (0x1U << SPI_I2SCFGR_I2SMOD_Pos)   /*!< 0x00000800 */
+#define SPI_I2SCFGR_I2SMOD                  SPI_I2SCFGR_I2SMOD_Msk             /*!< I2S mode selection */
+
+
+/******************************************************************************/
+/*                                                                            */
+/*                      Inter-integrated Circuit Interface                    */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for I2C_CR1 register  ********************/
+#define I2C_CR1_PE_Pos                      (0U)                               
+#define I2C_CR1_PE_Msk                      (0x1U << I2C_CR1_PE_Pos)           /*!< 0x00000001 */
+#define I2C_CR1_PE                          I2C_CR1_PE_Msk                     /*!< Peripheral Enable */
+#define I2C_CR1_SMBUS_Pos                   (1U)                               
+#define I2C_CR1_SMBUS_Msk                   (0x1U << I2C_CR1_SMBUS_Pos)        /*!< 0x00000002 */
+#define I2C_CR1_SMBUS                       I2C_CR1_SMBUS_Msk                  /*!< SMBus Mode */
+#define I2C_CR1_SMBTYPE_Pos                 (3U)                               
+#define I2C_CR1_SMBTYPE_Msk                 (0x1U << I2C_CR1_SMBTYPE_Pos)      /*!< 0x00000008 */
+#define I2C_CR1_SMBTYPE                     I2C_CR1_SMBTYPE_Msk                /*!< SMBus Type */
+#define I2C_CR1_ENARP_Pos                   (4U)                               
+#define I2C_CR1_ENARP_Msk                   (0x1U << I2C_CR1_ENARP_Pos)        /*!< 0x00000010 */
+#define I2C_CR1_ENARP                       I2C_CR1_ENARP_Msk                  /*!< ARP Enable */
+#define I2C_CR1_ENPEC_Pos                   (5U)                               
+#define I2C_CR1_ENPEC_Msk                   (0x1U << I2C_CR1_ENPEC_Pos)        /*!< 0x00000020 */
+#define I2C_CR1_ENPEC                       I2C_CR1_ENPEC_Msk                  /*!< PEC Enable */
+#define I2C_CR1_ENGC_Pos                    (6U)                               
+#define I2C_CR1_ENGC_Msk                    (0x1U << I2C_CR1_ENGC_Pos)         /*!< 0x00000040 */
+#define I2C_CR1_ENGC                        I2C_CR1_ENGC_Msk                   /*!< General Call Enable */
+#define I2C_CR1_NOSTRETCH_Pos               (7U)                               
+#define I2C_CR1_NOSTRETCH_Msk               (0x1U << I2C_CR1_NOSTRETCH_Pos)    /*!< 0x00000080 */
+#define I2C_CR1_NOSTRETCH                   I2C_CR1_NOSTRETCH_Msk              /*!< Clock Stretching Disable (Slave mode) */
+#define I2C_CR1_START_Pos                   (8U)                               
+#define I2C_CR1_START_Msk                   (0x1U << I2C_CR1_START_Pos)        /*!< 0x00000100 */
+#define I2C_CR1_START                       I2C_CR1_START_Msk                  /*!< Start Generation */
+#define I2C_CR1_STOP_Pos                    (9U)                               
+#define I2C_CR1_STOP_Msk                    (0x1U << I2C_CR1_STOP_Pos)         /*!< 0x00000200 */
+#define I2C_CR1_STOP                        I2C_CR1_STOP_Msk                   /*!< Stop Generation */
+#define I2C_CR1_ACK_Pos                     (10U)                              
+#define I2C_CR1_ACK_Msk                     (0x1U << I2C_CR1_ACK_Pos)          /*!< 0x00000400 */
+#define I2C_CR1_ACK                         I2C_CR1_ACK_Msk                    /*!< Acknowledge Enable */
+#define I2C_CR1_POS_Pos                     (11U)                              
+#define I2C_CR1_POS_Msk                     (0x1U << I2C_CR1_POS_Pos)          /*!< 0x00000800 */
+#define I2C_CR1_POS                         I2C_CR1_POS_Msk                    /*!< Acknowledge/PEC Position (for data reception) */
+#define I2C_CR1_PEC_Pos                     (12U)                              
+#define I2C_CR1_PEC_Msk                     (0x1U << I2C_CR1_PEC_Pos)          /*!< 0x00001000 */
+#define I2C_CR1_PEC                         I2C_CR1_PEC_Msk                    /*!< Packet Error Checking */
+#define I2C_CR1_ALERT_Pos                   (13U)                              
+#define I2C_CR1_ALERT_Msk                   (0x1U << I2C_CR1_ALERT_Pos)        /*!< 0x00002000 */
+#define I2C_CR1_ALERT                       I2C_CR1_ALERT_Msk                  /*!< SMBus Alert */
+#define I2C_CR1_SWRST_Pos                   (15U)                              
+#define I2C_CR1_SWRST_Msk                   (0x1U << I2C_CR1_SWRST_Pos)        /*!< 0x00008000 */
+#define I2C_CR1_SWRST                       I2C_CR1_SWRST_Msk                  /*!< Software Reset */
+
+/*******************  Bit definition for I2C_CR2 register  ********************/
+#define I2C_CR2_FREQ_Pos                    (0U)                               
+#define I2C_CR2_FREQ_Msk                    (0x3FU << I2C_CR2_FREQ_Pos)        /*!< 0x0000003F */
+#define I2C_CR2_FREQ                        I2C_CR2_FREQ_Msk                   /*!< FREQ[5:0] bits (Peripheral Clock Frequency) */
+#define I2C_CR2_FREQ_0                      (0x01U << I2C_CR2_FREQ_Pos)        /*!< 0x00000001 */
+#define I2C_CR2_FREQ_1                      (0x02U << I2C_CR2_FREQ_Pos)        /*!< 0x00000002 */
+#define I2C_CR2_FREQ_2                      (0x04U << I2C_CR2_FREQ_Pos)        /*!< 0x00000004 */
+#define I2C_CR2_FREQ_3                      (0x08U << I2C_CR2_FREQ_Pos)        /*!< 0x00000008 */
+#define I2C_CR2_FREQ_4                      (0x10U << I2C_CR2_FREQ_Pos)        /*!< 0x00000010 */
+#define I2C_CR2_FREQ_5                      (0x20U << I2C_CR2_FREQ_Pos)        /*!< 0x00000020 */
+
+#define I2C_CR2_ITERREN_Pos                 (8U)                               
+#define I2C_CR2_ITERREN_Msk                 (0x1U << I2C_CR2_ITERREN_Pos)      /*!< 0x00000100 */
+#define I2C_CR2_ITERREN                     I2C_CR2_ITERREN_Msk                /*!< Error Interrupt Enable */
+#define I2C_CR2_ITEVTEN_Pos                 (9U)                               
+#define I2C_CR2_ITEVTEN_Msk                 (0x1U << I2C_CR2_ITEVTEN_Pos)      /*!< 0x00000200 */
+#define I2C_CR2_ITEVTEN                     I2C_CR2_ITEVTEN_Msk                /*!< Event Interrupt Enable */
+#define I2C_CR2_ITBUFEN_Pos                 (10U)                              
+#define I2C_CR2_ITBUFEN_Msk                 (0x1U << I2C_CR2_ITBUFEN_Pos)      /*!< 0x00000400 */
+#define I2C_CR2_ITBUFEN                     I2C_CR2_ITBUFEN_Msk                /*!< Buffer Interrupt Enable */
+#define I2C_CR2_DMAEN_Pos                   (11U)                              
+#define I2C_CR2_DMAEN_Msk                   (0x1U << I2C_CR2_DMAEN_Pos)        /*!< 0x00000800 */
+#define I2C_CR2_DMAEN                       I2C_CR2_DMAEN_Msk                  /*!< DMA Requests Enable */
+#define I2C_CR2_LAST_Pos                    (12U)                              
+#define I2C_CR2_LAST_Msk                    (0x1U << I2C_CR2_LAST_Pos)         /*!< 0x00001000 */
+#define I2C_CR2_LAST                        I2C_CR2_LAST_Msk                   /*!< DMA Last Transfer */
+
+/*******************  Bit definition for I2C_OAR1 register  *******************/
+#define I2C_OAR1_ADD1_7                     ((uint32_t)0x000000FE)             /*!< Interface Address */
+#define I2C_OAR1_ADD8_9                     ((uint32_t)0x00000300)             /*!< Interface Address */
+
+#define I2C_OAR1_ADD0_Pos                   (0U)                               
+#define I2C_OAR1_ADD0_Msk                   (0x1U << I2C_OAR1_ADD0_Pos)        /*!< 0x00000001 */
+#define I2C_OAR1_ADD0                       I2C_OAR1_ADD0_Msk                  /*!< Bit 0 */
+#define I2C_OAR1_ADD1_Pos                   (1U)                               
+#define I2C_OAR1_ADD1_Msk                   (0x1U << I2C_OAR1_ADD1_Pos)        /*!< 0x00000002 */
+#define I2C_OAR1_ADD1                       I2C_OAR1_ADD1_Msk                  /*!< Bit 1 */
+#define I2C_OAR1_ADD2_Pos                   (2U)                               
+#define I2C_OAR1_ADD2_Msk                   (0x1U << I2C_OAR1_ADD2_Pos)        /*!< 0x00000004 */
+#define I2C_OAR1_ADD2                       I2C_OAR1_ADD2_Msk                  /*!< Bit 2 */
+#define I2C_OAR1_ADD3_Pos                   (3U)                               
+#define I2C_OAR1_ADD3_Msk                   (0x1U << I2C_OAR1_ADD3_Pos)        /*!< 0x00000008 */
+#define I2C_OAR1_ADD3                       I2C_OAR1_ADD3_Msk                  /*!< Bit 3 */
+#define I2C_OAR1_ADD4_Pos                   (4U)                               
+#define I2C_OAR1_ADD4_Msk                   (0x1U << I2C_OAR1_ADD4_Pos)        /*!< 0x00000010 */
+#define I2C_OAR1_ADD4                       I2C_OAR1_ADD4_Msk                  /*!< Bit 4 */
+#define I2C_OAR1_ADD5_Pos                   (5U)                               
+#define I2C_OAR1_ADD5_Msk                   (0x1U << I2C_OAR1_ADD5_Pos)        /*!< 0x00000020 */
+#define I2C_OAR1_ADD5                       I2C_OAR1_ADD5_Msk                  /*!< Bit 5 */
+#define I2C_OAR1_ADD6_Pos                   (6U)                               
+#define I2C_OAR1_ADD6_Msk                   (0x1U << I2C_OAR1_ADD6_Pos)        /*!< 0x00000040 */
+#define I2C_OAR1_ADD6                       I2C_OAR1_ADD6_Msk                  /*!< Bit 6 */
+#define I2C_OAR1_ADD7_Pos                   (7U)                               
+#define I2C_OAR1_ADD7_Msk                   (0x1U << I2C_OAR1_ADD7_Pos)        /*!< 0x00000080 */
+#define I2C_OAR1_ADD7                       I2C_OAR1_ADD7_Msk                  /*!< Bit 7 */
+#define I2C_OAR1_ADD8_Pos                   (8U)                               
+#define I2C_OAR1_ADD8_Msk                   (0x1U << I2C_OAR1_ADD8_Pos)        /*!< 0x00000100 */
+#define I2C_OAR1_ADD8                       I2C_OAR1_ADD8_Msk                  /*!< Bit 8 */
+#define I2C_OAR1_ADD9_Pos                   (9U)                               
+#define I2C_OAR1_ADD9_Msk                   (0x1U << I2C_OAR1_ADD9_Pos)        /*!< 0x00000200 */
+#define I2C_OAR1_ADD9                       I2C_OAR1_ADD9_Msk                  /*!< Bit 9 */
+
+#define I2C_OAR1_ADDMODE_Pos                (15U)                              
+#define I2C_OAR1_ADDMODE_Msk                (0x1U << I2C_OAR1_ADDMODE_Pos)     /*!< 0x00008000 */
+#define I2C_OAR1_ADDMODE                    I2C_OAR1_ADDMODE_Msk               /*!< Addressing Mode (Slave mode) */
+
+/*******************  Bit definition for I2C_OAR2 register  *******************/
+#define I2C_OAR2_ENDUAL_Pos                 (0U)                               
+#define I2C_OAR2_ENDUAL_Msk                 (0x1U << I2C_OAR2_ENDUAL_Pos)      /*!< 0x00000001 */
+#define I2C_OAR2_ENDUAL                     I2C_OAR2_ENDUAL_Msk                /*!< Dual addressing mode enable */
+#define I2C_OAR2_ADD2_Pos                   (1U)                               
+#define I2C_OAR2_ADD2_Msk                   (0x7FU << I2C_OAR2_ADD2_Pos)       /*!< 0x000000FE */
+#define I2C_OAR2_ADD2                       I2C_OAR2_ADD2_Msk                  /*!< Interface address */
+
+/*******************  Bit definition for I2C_SR1 register  ********************/
+#define I2C_SR1_SB_Pos                      (0U)                               
+#define I2C_SR1_SB_Msk                      (0x1U << I2C_SR1_SB_Pos)           /*!< 0x00000001 */
+#define I2C_SR1_SB                          I2C_SR1_SB_Msk                     /*!< Start Bit (Master mode) */
+#define I2C_SR1_ADDR_Pos                    (1U)                               
+#define I2C_SR1_ADDR_Msk                    (0x1U << I2C_SR1_ADDR_Pos)         /*!< 0x00000002 */
+#define I2C_SR1_ADDR                        I2C_SR1_ADDR_Msk                   /*!< Address sent (master mode)/matched (slave mode) */
+#define I2C_SR1_BTF_Pos                     (2U)                               
+#define I2C_SR1_BTF_Msk                     (0x1U << I2C_SR1_BTF_Pos)          /*!< 0x00000004 */
+#define I2C_SR1_BTF                         I2C_SR1_BTF_Msk                    /*!< Byte Transfer Finished */
+#define I2C_SR1_ADD10_Pos                   (3U)                               
+#define I2C_SR1_ADD10_Msk                   (0x1U << I2C_SR1_ADD10_Pos)        /*!< 0x00000008 */
+#define I2C_SR1_ADD10                       I2C_SR1_ADD10_Msk                  /*!< 10-bit header sent (Master mode) */
+#define I2C_SR1_STOPF_Pos                   (4U)                               
+#define I2C_SR1_STOPF_Msk                   (0x1U << I2C_SR1_STOPF_Pos)        /*!< 0x00000010 */
+#define I2C_SR1_STOPF                       I2C_SR1_STOPF_Msk                  /*!< Stop detection (Slave mode) */
+#define I2C_SR1_RXNE_Pos                    (6U)                               
+#define I2C_SR1_RXNE_Msk                    (0x1U << I2C_SR1_RXNE_Pos)         /*!< 0x00000040 */
+#define I2C_SR1_RXNE                        I2C_SR1_RXNE_Msk                   /*!< Data Register not Empty (receivers) */
+#define I2C_SR1_TXE_Pos                     (7U)                               
+#define I2C_SR1_TXE_Msk                     (0x1U << I2C_SR1_TXE_Pos)          /*!< 0x00000080 */
+#define I2C_SR1_TXE                         I2C_SR1_TXE_Msk                    /*!< Data Register Empty (transmitters) */
+#define I2C_SR1_BERR_Pos                    (8U)                               
+#define I2C_SR1_BERR_Msk                    (0x1U << I2C_SR1_BERR_Pos)         /*!< 0x00000100 */
+#define I2C_SR1_BERR                        I2C_SR1_BERR_Msk                   /*!< Bus Error */
+#define I2C_SR1_ARLO_Pos                    (9U)                               
+#define I2C_SR1_ARLO_Msk                    (0x1U << I2C_SR1_ARLO_Pos)         /*!< 0x00000200 */
+#define I2C_SR1_ARLO                        I2C_SR1_ARLO_Msk                   /*!< Arbitration Lost (master mode) */
+#define I2C_SR1_AF_Pos                      (10U)                              
+#define I2C_SR1_AF_Msk                      (0x1U << I2C_SR1_AF_Pos)           /*!< 0x00000400 */
+#define I2C_SR1_AF                          I2C_SR1_AF_Msk                     /*!< Acknowledge Failure */
+#define I2C_SR1_OVR_Pos                     (11U)                              
+#define I2C_SR1_OVR_Msk                     (0x1U << I2C_SR1_OVR_Pos)          /*!< 0x00000800 */
+#define I2C_SR1_OVR                         I2C_SR1_OVR_Msk                    /*!< Overrun/Underrun */
+#define I2C_SR1_PECERR_Pos                  (12U)                              
+#define I2C_SR1_PECERR_Msk                  (0x1U << I2C_SR1_PECERR_Pos)       /*!< 0x00001000 */
+#define I2C_SR1_PECERR                      I2C_SR1_PECERR_Msk                 /*!< PEC Error in reception */
+#define I2C_SR1_TIMEOUT_Pos                 (14U)                              
+#define I2C_SR1_TIMEOUT_Msk                 (0x1U << I2C_SR1_TIMEOUT_Pos)      /*!< 0x00004000 */
+#define I2C_SR1_TIMEOUT                     I2C_SR1_TIMEOUT_Msk                /*!< Timeout or Tlow Error */
+#define I2C_SR1_SMBALERT_Pos                (15U)                              
+#define I2C_SR1_SMBALERT_Msk                (0x1U << I2C_SR1_SMBALERT_Pos)     /*!< 0x00008000 */
+#define I2C_SR1_SMBALERT                    I2C_SR1_SMBALERT_Msk               /*!< SMBus Alert */
+
+/*******************  Bit definition for I2C_SR2 register  ********************/
+#define I2C_SR2_MSL_Pos                     (0U)                               
+#define I2C_SR2_MSL_Msk                     (0x1U << I2C_SR2_MSL_Pos)          /*!< 0x00000001 */
+#define I2C_SR2_MSL                         I2C_SR2_MSL_Msk                    /*!< Master/Slave */
+#define I2C_SR2_BUSY_Pos                    (1U)                               
+#define I2C_SR2_BUSY_Msk                    (0x1U << I2C_SR2_BUSY_Pos)         /*!< 0x00000002 */
+#define I2C_SR2_BUSY                        I2C_SR2_BUSY_Msk                   /*!< Bus Busy */
+#define I2C_SR2_TRA_Pos                     (2U)                               
+#define I2C_SR2_TRA_Msk                     (0x1U << I2C_SR2_TRA_Pos)          /*!< 0x00000004 */
+#define I2C_SR2_TRA                         I2C_SR2_TRA_Msk                    /*!< Transmitter/Receiver */
+#define I2C_SR2_GENCALL_Pos                 (4U)                               
+#define I2C_SR2_GENCALL_Msk                 (0x1U << I2C_SR2_GENCALL_Pos)      /*!< 0x00000010 */
+#define I2C_SR2_GENCALL                     I2C_SR2_GENCALL_Msk                /*!< General Call Address (Slave mode) */
+#define I2C_SR2_SMBDEFAULT_Pos              (5U)                               
+#define I2C_SR2_SMBDEFAULT_Msk              (0x1U << I2C_SR2_SMBDEFAULT_Pos)   /*!< 0x00000020 */
+#define I2C_SR2_SMBDEFAULT                  I2C_SR2_SMBDEFAULT_Msk             /*!< SMBus Device Default Address (Slave mode) */
+#define I2C_SR2_SMBHOST_Pos                 (6U)                               
+#define I2C_SR2_SMBHOST_Msk                 (0x1U << I2C_SR2_SMBHOST_Pos)      /*!< 0x00000040 */
+#define I2C_SR2_SMBHOST                     I2C_SR2_SMBHOST_Msk                /*!< SMBus Host Header (Slave mode) */
+#define I2C_SR2_DUALF_Pos                   (7U)                               
+#define I2C_SR2_DUALF_Msk                   (0x1U << I2C_SR2_DUALF_Pos)        /*!< 0x00000080 */
+#define I2C_SR2_DUALF                       I2C_SR2_DUALF_Msk                  /*!< Dual Flag (Slave mode) */
+#define I2C_SR2_PEC_Pos                     (8U)                               
+#define I2C_SR2_PEC_Msk                     (0xFFU << I2C_SR2_PEC_Pos)         /*!< 0x0000FF00 */
+#define I2C_SR2_PEC                         I2C_SR2_PEC_Msk                    /*!< Packet Error Checking Register */
+
+/*******************  Bit definition for I2C_CCR register  ********************/
+#define I2C_CCR_CCR_Pos                     (0U)                               
+#define I2C_CCR_CCR_Msk                     (0xFFFU << I2C_CCR_CCR_Pos)        /*!< 0x00000FFF */
+#define I2C_CCR_CCR                         I2C_CCR_CCR_Msk                    /*!< Clock Control Register in Fast/Standard mode (Master mode) */
+#define I2C_CCR_DUTY_Pos                    (14U)                              
+#define I2C_CCR_DUTY_Msk                    (0x1U << I2C_CCR_DUTY_Pos)         /*!< 0x00004000 */
+#define I2C_CCR_DUTY                        I2C_CCR_DUTY_Msk                   /*!< Fast Mode Duty Cycle */
+#define I2C_CCR_FS_Pos                      (15U)                              
+#define I2C_CCR_FS_Msk                      (0x1U << I2C_CCR_FS_Pos)           /*!< 0x00008000 */
+#define I2C_CCR_FS                          I2C_CCR_FS_Msk                     /*!< I2C Master Mode Selection */
+
+/******************  Bit definition for I2C_TRISE register  *******************/
+#define I2C_TRISE_TRISE_Pos                 (0U)                               
+#define I2C_TRISE_TRISE_Msk                 (0x3FU << I2C_TRISE_TRISE_Pos)     /*!< 0x0000003F */
+#define I2C_TRISE_TRISE                     I2C_TRISE_TRISE_Msk                /*!< Maximum Rise Time in Fast/Standard mode (Master mode) */
+
+/******************************************************************************/
+/*                                                                            */
+/*         Universal Synchronous Asynchronous Receiver Transmitter            */
+/*                                                                            */
+/******************************************************************************/
+
+/*******************  Bit definition for USART_SR register  *******************/
+#define USART_SR_PE_Pos                     (0U)                               
+#define USART_SR_PE_Msk                     (0x1U << USART_SR_PE_Pos)          /*!< 0x00000001 */
+#define USART_SR_PE                         USART_SR_PE_Msk                    /*!< Parity Error */
+#define USART_SR_FE_Pos                     (1U)                               
+#define USART_SR_FE_Msk                     (0x1U << USART_SR_FE_Pos)          /*!< 0x00000002 */
+#define USART_SR_FE                         USART_SR_FE_Msk                    /*!< Framing Error */
+#define USART_SR_NE_Pos                     (2U)                               
+#define USART_SR_NE_Msk                     (0x1U << USART_SR_NE_Pos)          /*!< 0x00000004 */
+#define USART_SR_NE                         USART_SR_NE_Msk                    /*!< Noise Error Flag */
+#define USART_SR_ORE_Pos                    (3U)                               
+#define USART_SR_ORE_Msk                    (0x1U << USART_SR_ORE_Pos)         /*!< 0x00000008 */
+#define USART_SR_ORE                        USART_SR_ORE_Msk                   /*!< OverRun Error */
+#define USART_SR_IDLE_Pos                   (4U)                               
+#define USART_SR_IDLE_Msk                   (0x1U << USART_SR_IDLE_Pos)        /*!< 0x00000010 */
+#define USART_SR_IDLE                       USART_SR_IDLE_Msk                  /*!< IDLE line detected */
+#define USART_SR_RXNE_Pos                   (5U)                               
+#define USART_SR_RXNE_Msk                   (0x1U << USART_SR_RXNE_Pos)        /*!< 0x00000020 */
+#define USART_SR_RXNE                       USART_SR_RXNE_Msk                  /*!< Read Data Register Not Empty */
+#define USART_SR_TC_Pos                     (6U)                               
+#define USART_SR_TC_Msk                     (0x1U << USART_SR_TC_Pos)          /*!< 0x00000040 */
+#define USART_SR_TC                         USART_SR_TC_Msk                    /*!< Transmission Complete */
+#define USART_SR_TXE_Pos                    (7U)                               
+#define USART_SR_TXE_Msk                    (0x1U << USART_SR_TXE_Pos)         /*!< 0x00000080 */
+#define USART_SR_TXE                        USART_SR_TXE_Msk                   /*!< Transmit Data Register Empty */
+#define USART_SR_LBD_Pos                    (8U)                               
+#define USART_SR_LBD_Msk                    (0x1U << USART_SR_LBD_Pos)         /*!< 0x00000100 */
+#define USART_SR_LBD                        USART_SR_LBD_Msk                   /*!< LIN Break Detection Flag */
+#define USART_SR_CTS_Pos                    (9U)                               
+#define USART_SR_CTS_Msk                    (0x1U << USART_SR_CTS_Pos)         /*!< 0x00000200 */
+#define USART_SR_CTS                        USART_SR_CTS_Msk                   /*!< CTS Flag */
+
+/*******************  Bit definition for USART_DR register  *******************/
+#define USART_DR_DR_Pos                     (0U)                               
+#define USART_DR_DR_Msk                     (0x1FFU << USART_DR_DR_Pos)        /*!< 0x000001FF */
+#define USART_DR_DR                         USART_DR_DR_Msk                    /*!< Data value */
+
+/******************  Bit definition for USART_BRR register  *******************/
+#define USART_BRR_DIV_Fraction_Pos          (0U)                               
+#define USART_BRR_DIV_Fraction_Msk          (0xFU << USART_BRR_DIV_Fraction_Pos) /*!< 0x0000000F */
+#define USART_BRR_DIV_Fraction              USART_BRR_DIV_Fraction_Msk         /*!< Fraction of USARTDIV */
+#define USART_BRR_DIV_Mantissa_Pos          (4U)                               
+#define USART_BRR_DIV_Mantissa_Msk          (0xFFFU << USART_BRR_DIV_Mantissa_Pos) /*!< 0x0000FFF0 */
+#define USART_BRR_DIV_Mantissa              USART_BRR_DIV_Mantissa_Msk         /*!< Mantissa of USARTDIV */
+
+/******************  Bit definition for USART_CR1 register  *******************/
+#define USART_CR1_SBK_Pos                   (0U)                               
+#define USART_CR1_SBK_Msk                   (0x1U << USART_CR1_SBK_Pos)        /*!< 0x00000001 */
+#define USART_CR1_SBK                       USART_CR1_SBK_Msk                  /*!< Send Break */
+#define USART_CR1_RWU_Pos                   (1U)                               
+#define USART_CR1_RWU_Msk                   (0x1U << USART_CR1_RWU_Pos)        /*!< 0x00000002 */
+#define USART_CR1_RWU                       USART_CR1_RWU_Msk                  /*!< Receiver wakeup */
+#define USART_CR1_RE_Pos                    (2U)                               
+#define USART_CR1_RE_Msk                    (0x1U << USART_CR1_RE_Pos)         /*!< 0x00000004 */
+#define USART_CR1_RE                        USART_CR1_RE_Msk                   /*!< Receiver Enable */
+#define USART_CR1_TE_Pos                    (3U)                               
+#define USART_CR1_TE_Msk                    (0x1U << USART_CR1_TE_Pos)         /*!< 0x00000008 */
+#define USART_CR1_TE                        USART_CR1_TE_Msk                   /*!< Transmitter Enable */
+#define USART_CR1_IDLEIE_Pos                (4U)                               
+#define USART_CR1_IDLEIE_Msk                (0x1U << USART_CR1_IDLEIE_Pos)     /*!< 0x00000010 */
+#define USART_CR1_IDLEIE                    USART_CR1_IDLEIE_Msk               /*!< IDLE Interrupt Enable */
+#define USART_CR1_RXNEIE_Pos                (5U)                               
+#define USART_CR1_RXNEIE_Msk                (0x1U << USART_CR1_RXNEIE_Pos)     /*!< 0x00000020 */
+#define USART_CR1_RXNEIE                    USART_CR1_RXNEIE_Msk               /*!< RXNE Interrupt Enable */
+#define USART_CR1_TCIE_Pos                  (6U)                               
+#define USART_CR1_TCIE_Msk                  (0x1U << USART_CR1_TCIE_Pos)       /*!< 0x00000040 */
+#define USART_CR1_TCIE                      USART_CR1_TCIE_Msk                 /*!< Transmission Complete Interrupt Enable */
+#define USART_CR1_TXEIE_Pos                 (7U)                               
+#define USART_CR1_TXEIE_Msk                 (0x1U << USART_CR1_TXEIE_Pos)      /*!< 0x00000080 */
+#define USART_CR1_TXEIE                     USART_CR1_TXEIE_Msk                /*!< PE Interrupt Enable */
+#define USART_CR1_PEIE_Pos                  (8U)                               
+#define USART_CR1_PEIE_Msk                  (0x1U << USART_CR1_PEIE_Pos)       /*!< 0x00000100 */
+#define USART_CR1_PEIE                      USART_CR1_PEIE_Msk                 /*!< PE Interrupt Enable */
+#define USART_CR1_PS_Pos                    (9U)                               
+#define USART_CR1_PS_Msk                    (0x1U << USART_CR1_PS_Pos)         /*!< 0x00000200 */
+#define USART_CR1_PS                        USART_CR1_PS_Msk                   /*!< Parity Selection */
+#define USART_CR1_PCE_Pos                   (10U)                              
+#define USART_CR1_PCE_Msk                   (0x1U << USART_CR1_PCE_Pos)        /*!< 0x00000400 */
+#define USART_CR1_PCE                       USART_CR1_PCE_Msk                  /*!< Parity Control Enable */
+#define USART_CR1_WAKE_Pos                  (11U)                              
+#define USART_CR1_WAKE_Msk                  (0x1U << USART_CR1_WAKE_Pos)       /*!< 0x00000800 */
+#define USART_CR1_WAKE                      USART_CR1_WAKE_Msk                 /*!< Wakeup method */
+#define USART_CR1_M_Pos                     (12U)                              
+#define USART_CR1_M_Msk                     (0x1U << USART_CR1_M_Pos)          /*!< 0x00001000 */
+#define USART_CR1_M                         USART_CR1_M_Msk                    /*!< Word length */
+#define USART_CR1_UE_Pos                    (13U)                              
+#define USART_CR1_UE_Msk                    (0x1U << USART_CR1_UE_Pos)         /*!< 0x00002000 */
+#define USART_CR1_UE                        USART_CR1_UE_Msk                   /*!< USART Enable */
+
+/******************  Bit definition for USART_CR2 register  *******************/
+#define USART_CR2_ADD_Pos                   (0U)                               
+#define USART_CR2_ADD_Msk                   (0xFU << USART_CR2_ADD_Pos)        /*!< 0x0000000F */
+#define USART_CR2_ADD                       USART_CR2_ADD_Msk                  /*!< Address of the USART node */
+#define USART_CR2_LBDL_Pos                  (5U)                               
+#define USART_CR2_LBDL_Msk                  (0x1U << USART_CR2_LBDL_Pos)       /*!< 0x00000020 */
+#define USART_CR2_LBDL                      USART_CR2_LBDL_Msk                 /*!< LIN Break Detection Length */
+#define USART_CR2_LBDIE_Pos                 (6U)                               
+#define USART_CR2_LBDIE_Msk                 (0x1U << USART_CR2_LBDIE_Pos)      /*!< 0x00000040 */
+#define USART_CR2_LBDIE                     USART_CR2_LBDIE_Msk                /*!< LIN Break Detection Interrupt Enable */
+#define USART_CR2_LBCL_Pos                  (8U)                               
+#define USART_CR2_LBCL_Msk                  (0x1U << USART_CR2_LBCL_Pos)       /*!< 0x00000100 */
+#define USART_CR2_LBCL                      USART_CR2_LBCL_Msk                 /*!< Last Bit Clock pulse */
+#define USART_CR2_CPHA_Pos                  (9U)                               
+#define USART_CR2_CPHA_Msk                  (0x1U << USART_CR2_CPHA_Pos)       /*!< 0x00000200 */
+#define USART_CR2_CPHA                      USART_CR2_CPHA_Msk                 /*!< Clock Phase */
+#define USART_CR2_CPOL_Pos                  (10U)                              
+#define USART_CR2_CPOL_Msk                  (0x1U << USART_CR2_CPOL_Pos)       /*!< 0x00000400 */
+#define USART_CR2_CPOL                      USART_CR2_CPOL_Msk                 /*!< Clock Polarity */
+#define USART_CR2_CLKEN_Pos                 (11U)                              
+#define USART_CR2_CLKEN_Msk                 (0x1U << USART_CR2_CLKEN_Pos)      /*!< 0x00000800 */
+#define USART_CR2_CLKEN                     USART_CR2_CLKEN_Msk                /*!< Clock Enable */
+
+#define USART_CR2_STOP_Pos                  (12U)                              
+#define USART_CR2_STOP_Msk                  (0x3U << USART_CR2_STOP_Pos)       /*!< 0x00003000 */
+#define USART_CR2_STOP                      USART_CR2_STOP_Msk                 /*!< STOP[1:0] bits (STOP bits) */
+#define USART_CR2_STOP_0                    (0x1U << USART_CR2_STOP_Pos)       /*!< 0x00001000 */
+#define USART_CR2_STOP_1                    (0x2U << USART_CR2_STOP_Pos)       /*!< 0x00002000 */
+
+#define USART_CR2_LINEN_Pos                 (14U)                              
+#define USART_CR2_LINEN_Msk                 (0x1U << USART_CR2_LINEN_Pos)      /*!< 0x00004000 */
+#define USART_CR2_LINEN                     USART_CR2_LINEN_Msk                /*!< LIN mode enable */
+
+/******************  Bit definition for USART_CR3 register  *******************/
+#define USART_CR3_EIE_Pos                   (0U)                               
+#define USART_CR3_EIE_Msk                   (0x1U << USART_CR3_EIE_Pos)        /*!< 0x00000001 */
+#define USART_CR3_EIE                       USART_CR3_EIE_Msk                  /*!< Error Interrupt Enable */
+#define USART_CR3_IREN_Pos                  (1U)                               
+#define USART_CR3_IREN_Msk                  (0x1U << USART_CR3_IREN_Pos)       /*!< 0x00000002 */
+#define USART_CR3_IREN                      USART_CR3_IREN_Msk                 /*!< IrDA mode Enable */
+#define USART_CR3_IRLP_Pos                  (2U)                               
+#define USART_CR3_IRLP_Msk                  (0x1U << USART_CR3_IRLP_Pos)       /*!< 0x00000004 */
+#define USART_CR3_IRLP                      USART_CR3_IRLP_Msk                 /*!< IrDA Low-Power */
+#define USART_CR3_HDSEL_Pos                 (3U)                               
+#define USART_CR3_HDSEL_Msk                 (0x1U << USART_CR3_HDSEL_Pos)      /*!< 0x00000008 */
+#define USART_CR3_HDSEL                     USART_CR3_HDSEL_Msk                /*!< Half-Duplex Selection */
+#define USART_CR3_NACK_Pos                  (4U)                               
+#define USART_CR3_NACK_Msk                  (0x1U << USART_CR3_NACK_Pos)       /*!< 0x00000010 */
+#define USART_CR3_NACK                      USART_CR3_NACK_Msk                 /*!< Smartcard NACK enable */
+#define USART_CR3_SCEN_Pos                  (5U)                               
+#define USART_CR3_SCEN_Msk                  (0x1U << USART_CR3_SCEN_Pos)       /*!< 0x00000020 */
+#define USART_CR3_SCEN                      USART_CR3_SCEN_Msk                 /*!< Smartcard mode enable */
+#define USART_CR3_DMAR_Pos                  (6U)                               
+#define USART_CR3_DMAR_Msk                  (0x1U << USART_CR3_DMAR_Pos)       /*!< 0x00000040 */
+#define USART_CR3_DMAR                      USART_CR3_DMAR_Msk                 /*!< DMA Enable Receiver */
+#define USART_CR3_DMAT_Pos                  (7U)                               
+#define USART_CR3_DMAT_Msk                  (0x1U << USART_CR3_DMAT_Pos)       /*!< 0x00000080 */
+#define USART_CR3_DMAT                      USART_CR3_DMAT_Msk                 /*!< DMA Enable Transmitter */
+#define USART_CR3_RTSE_Pos                  (8U)                               
+#define USART_CR3_RTSE_Msk                  (0x1U << USART_CR3_RTSE_Pos)       /*!< 0x00000100 */
+#define USART_CR3_RTSE                      USART_CR3_RTSE_Msk                 /*!< RTS Enable */
+#define USART_CR3_CTSE_Pos                  (9U)                               
+#define USART_CR3_CTSE_Msk                  (0x1U << USART_CR3_CTSE_Pos)       /*!< 0x00000200 */
+#define USART_CR3_CTSE                      USART_CR3_CTSE_Msk                 /*!< CTS Enable */
+#define USART_CR3_CTSIE_Pos                 (10U)                              
+#define USART_CR3_CTSIE_Msk                 (0x1U << USART_CR3_CTSIE_Pos)      /*!< 0x00000400 */
+#define USART_CR3_CTSIE                     USART_CR3_CTSIE_Msk                /*!< CTS Interrupt Enable */
+
+/******************  Bit definition for USART_GTPR register  ******************/
+#define USART_GTPR_PSC_Pos                  (0U)                               
+#define USART_GTPR_PSC_Msk                  (0xFFU << USART_GTPR_PSC_Pos)      /*!< 0x000000FF */
+#define USART_GTPR_PSC                      USART_GTPR_PSC_Msk                 /*!< PSC[7:0] bits (Prescaler value) */
+#define USART_GTPR_PSC_0                    (0x01U << USART_GTPR_PSC_Pos)      /*!< 0x00000001 */
+#define USART_GTPR_PSC_1                    (0x02U << USART_GTPR_PSC_Pos)      /*!< 0x00000002 */
+#define USART_GTPR_PSC_2                    (0x04U << USART_GTPR_PSC_Pos)      /*!< 0x00000004 */
+#define USART_GTPR_PSC_3                    (0x08U << USART_GTPR_PSC_Pos)      /*!< 0x00000008 */
+#define USART_GTPR_PSC_4                    (0x10U << USART_GTPR_PSC_Pos)      /*!< 0x00000010 */
+#define USART_GTPR_PSC_5                    (0x20U << USART_GTPR_PSC_Pos)      /*!< 0x00000020 */
+#define USART_GTPR_PSC_6                    (0x40U << USART_GTPR_PSC_Pos)      /*!< 0x00000040 */
+#define USART_GTPR_PSC_7                    (0x80U << USART_GTPR_PSC_Pos)      /*!< 0x00000080 */
+
+#define USART_GTPR_GT_Pos                   (8U)                               
+#define USART_GTPR_GT_Msk                   (0xFFU << USART_GTPR_GT_Pos)       /*!< 0x0000FF00 */
+#define USART_GTPR_GT                       USART_GTPR_GT_Msk                  /*!< Guard time value */
+
+/******************************************************************************/
+/*                                                                            */
+/*                                 Debug MCU                                  */
+/*                                                                            */
+/******************************************************************************/
+
+/****************  Bit definition for DBGMCU_IDCODE register  *****************/
+#define DBGMCU_IDCODE_DEV_ID_Pos            (0U)                               
+#define DBGMCU_IDCODE_DEV_ID_Msk            (0xFFFU << DBGMCU_IDCODE_DEV_ID_Pos) /*!< 0x00000FFF */
+#define DBGMCU_IDCODE_DEV_ID                DBGMCU_IDCODE_DEV_ID_Msk           /*!< Device Identifier */
+
+#define DBGMCU_IDCODE_REV_ID_Pos            (16U)                              
+#define DBGMCU_IDCODE_REV_ID_Msk            (0xFFFFU << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0xFFFF0000 */
+#define DBGMCU_IDCODE_REV_ID                DBGMCU_IDCODE_REV_ID_Msk           /*!< REV_ID[15:0] bits (Revision Identifier) */
+#define DBGMCU_IDCODE_REV_ID_0              (0x0001U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x00010000 */
+#define DBGMCU_IDCODE_REV_ID_1              (0x0002U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x00020000 */
+#define DBGMCU_IDCODE_REV_ID_2              (0x0004U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x00040000 */
+#define DBGMCU_IDCODE_REV_ID_3              (0x0008U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x00080000 */
+#define DBGMCU_IDCODE_REV_ID_4              (0x0010U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x00100000 */
+#define DBGMCU_IDCODE_REV_ID_5              (0x0020U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x00200000 */
+#define DBGMCU_IDCODE_REV_ID_6              (0x0040U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x00400000 */
+#define DBGMCU_IDCODE_REV_ID_7              (0x0080U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x00800000 */
+#define DBGMCU_IDCODE_REV_ID_8              (0x0100U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x01000000 */
+#define DBGMCU_IDCODE_REV_ID_9              (0x0200U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x02000000 */
+#define DBGMCU_IDCODE_REV_ID_10             (0x0400U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x04000000 */
+#define DBGMCU_IDCODE_REV_ID_11             (0x0800U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x08000000 */
+#define DBGMCU_IDCODE_REV_ID_12             (0x1000U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x10000000 */
+#define DBGMCU_IDCODE_REV_ID_13             (0x2000U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x20000000 */
+#define DBGMCU_IDCODE_REV_ID_14             (0x4000U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x40000000 */
+#define DBGMCU_IDCODE_REV_ID_15             (0x8000U << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0x80000000 */
+
+/******************  Bit definition for DBGMCU_CR register  *******************/
+#define DBGMCU_CR_DBG_SLEEP_Pos             (0U)                               
+#define DBGMCU_CR_DBG_SLEEP_Msk             (0x1U << DBGMCU_CR_DBG_SLEEP_Pos)  /*!< 0x00000001 */
+#define DBGMCU_CR_DBG_SLEEP                 DBGMCU_CR_DBG_SLEEP_Msk            /*!< Debug Sleep Mode */
+#define DBGMCU_CR_DBG_STOP_Pos              (1U)                               
+#define DBGMCU_CR_DBG_STOP_Msk              (0x1U << DBGMCU_CR_DBG_STOP_Pos)   /*!< 0x00000002 */
+#define DBGMCU_CR_DBG_STOP                  DBGMCU_CR_DBG_STOP_Msk             /*!< Debug Stop Mode */
+#define DBGMCU_CR_DBG_STANDBY_Pos           (2U)                               
+#define DBGMCU_CR_DBG_STANDBY_Msk           (0x1U << DBGMCU_CR_DBG_STANDBY_Pos) /*!< 0x00000004 */
+#define DBGMCU_CR_DBG_STANDBY               DBGMCU_CR_DBG_STANDBY_Msk          /*!< Debug Standby mode */
+#define DBGMCU_CR_TRACE_IOEN_Pos            (5U)                               
+#define DBGMCU_CR_TRACE_IOEN_Msk            (0x1U << DBGMCU_CR_TRACE_IOEN_Pos) /*!< 0x00000020 */
+#define DBGMCU_CR_TRACE_IOEN                DBGMCU_CR_TRACE_IOEN_Msk           /*!< Trace Pin Assignment Control */
+
+#define DBGMCU_CR_TRACE_MODE_Pos            (6U)                               
+#define DBGMCU_CR_TRACE_MODE_Msk            (0x3U << DBGMCU_CR_TRACE_MODE_Pos) /*!< 0x000000C0 */
+#define DBGMCU_CR_TRACE_MODE                DBGMCU_CR_TRACE_MODE_Msk           /*!< TRACE_MODE[1:0] bits (Trace Pin Assignment Control) */
+#define DBGMCU_CR_TRACE_MODE_0              (0x1U << DBGMCU_CR_TRACE_MODE_Pos) /*!< 0x00000040 */
+#define DBGMCU_CR_TRACE_MODE_1              (0x2U << DBGMCU_CR_TRACE_MODE_Pos) /*!< 0x00000080 */
+
+#define DBGMCU_CR_DBG_IWDG_STOP_Pos         (8U)                               
+#define DBGMCU_CR_DBG_IWDG_STOP_Msk         (0x1U << DBGMCU_CR_DBG_IWDG_STOP_Pos) /*!< 0x00000100 */
+#define DBGMCU_CR_DBG_IWDG_STOP             DBGMCU_CR_DBG_IWDG_STOP_Msk        /*!< Debug Independent Watchdog stopped when Core is halted */
+#define DBGMCU_CR_DBG_WWDG_STOP_Pos         (9U)                               
+#define DBGMCU_CR_DBG_WWDG_STOP_Msk         (0x1U << DBGMCU_CR_DBG_WWDG_STOP_Pos) /*!< 0x00000200 */
+#define DBGMCU_CR_DBG_WWDG_STOP             DBGMCU_CR_DBG_WWDG_STOP_Msk        /*!< Debug Window Watchdog stopped when Core is halted */
+#define DBGMCU_CR_DBG_TIM1_STOP_Pos         (10U)                              
+#define DBGMCU_CR_DBG_TIM1_STOP_Msk         (0x1U << DBGMCU_CR_DBG_TIM1_STOP_Pos) /*!< 0x00000400 */
+#define DBGMCU_CR_DBG_TIM1_STOP             DBGMCU_CR_DBG_TIM1_STOP_Msk        /*!< TIM1 counter stopped when core is halted */
+#define DBGMCU_CR_DBG_TIM2_STOP_Pos         (11U)                              
+#define DBGMCU_CR_DBG_TIM2_STOP_Msk         (0x1U << DBGMCU_CR_DBG_TIM2_STOP_Pos) /*!< 0x00000800 */
+#define DBGMCU_CR_DBG_TIM2_STOP             DBGMCU_CR_DBG_TIM2_STOP_Msk        /*!< TIM2 counter stopped when core is halted */
+#define DBGMCU_CR_DBG_TIM3_STOP_Pos         (12U)                              
+#define DBGMCU_CR_DBG_TIM3_STOP_Msk         (0x1U << DBGMCU_CR_DBG_TIM3_STOP_Pos) /*!< 0x00001000 */
+#define DBGMCU_CR_DBG_TIM3_STOP             DBGMCU_CR_DBG_TIM3_STOP_Msk        /*!< TIM3 counter stopped when core is halted */
+#define DBGMCU_CR_DBG_TIM4_STOP_Pos         (13U)                              
+#define DBGMCU_CR_DBG_TIM4_STOP_Msk         (0x1U << DBGMCU_CR_DBG_TIM4_STOP_Pos) /*!< 0x00002000 */
+#define DBGMCU_CR_DBG_TIM4_STOP             DBGMCU_CR_DBG_TIM4_STOP_Msk        /*!< TIM4 counter stopped when core is halted */
+#define DBGMCU_CR_DBG_CAN1_STOP_Pos         (14U)                              
+#define DBGMCU_CR_DBG_CAN1_STOP_Msk         (0x1U << DBGMCU_CR_DBG_CAN1_STOP_Pos) /*!< 0x00004000 */
+#define DBGMCU_CR_DBG_CAN1_STOP             DBGMCU_CR_DBG_CAN1_STOP_Msk        /*!< Debug CAN1 stopped when Core is halted */
+#define DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT_Pos (15U)                             
+#define DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT_Msk (0x1U << DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT_Pos) /*!< 0x00008000 */
+#define DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT    DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT_Msk /*!< SMBUS timeout mode stopped when Core is halted */
+#define DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT_Pos (16U)                             
+#define DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT_Msk (0x1U << DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT_Pos) /*!< 0x00010000 */
+#define DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT    DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT_Msk /*!< SMBUS timeout mode stopped when Core is halted */
+
+/******************************************************************************/
+/*                                                                            */
+/*                      FLASH and Option Bytes Registers                      */
+/*                                                                            */
+/******************************************************************************/
+/*******************  Bit definition for FLASH_ACR register  ******************/
+#define FLASH_ACR_LATENCY_Pos               (0U)                               
+#define FLASH_ACR_LATENCY_Msk               (0x7U << FLASH_ACR_LATENCY_Pos)    /*!< 0x00000007 */
+#define FLASH_ACR_LATENCY                   FLASH_ACR_LATENCY_Msk              /*!< LATENCY[2:0] bits (Latency) */
+#define FLASH_ACR_LATENCY_0                 (0x1U << FLASH_ACR_LATENCY_Pos)    /*!< 0x00000001 */
+#define FLASH_ACR_LATENCY_1                 (0x2U << FLASH_ACR_LATENCY_Pos)    /*!< 0x00000002 */
+#define FLASH_ACR_LATENCY_2                 (0x4U << FLASH_ACR_LATENCY_Pos)    /*!< 0x00000004 */
+
+#define FLASH_ACR_HLFCYA_Pos                (3U)                               
+#define FLASH_ACR_HLFCYA_Msk                (0x1U << FLASH_ACR_HLFCYA_Pos)     /*!< 0x00000008 */
+#define FLASH_ACR_HLFCYA                    FLASH_ACR_HLFCYA_Msk               /*!< Flash Half Cycle Access Enable */
+#define FLASH_ACR_PRFTBE_Pos                (4U)                               
+#define FLASH_ACR_PRFTBE_Msk                (0x1U << FLASH_ACR_PRFTBE_Pos)     /*!< 0x00000010 */
+#define FLASH_ACR_PRFTBE                    FLASH_ACR_PRFTBE_Msk               /*!< Prefetch Buffer Enable */
+#define FLASH_ACR_PRFTBS_Pos                (5U)                               
+#define FLASH_ACR_PRFTBS_Msk                (0x1U << FLASH_ACR_PRFTBS_Pos)     /*!< 0x00000020 */
+#define FLASH_ACR_PRFTBS                    FLASH_ACR_PRFTBS_Msk               /*!< Prefetch Buffer Status */
+
+/******************  Bit definition for FLASH_KEYR register  ******************/
+#define FLASH_KEYR_FKEYR_Pos                (0U)                               
+#define FLASH_KEYR_FKEYR_Msk                (0xFFFFFFFFU << FLASH_KEYR_FKEYR_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_KEYR_FKEYR                    FLASH_KEYR_FKEYR_Msk               /*!< FPEC Key */
+
+#define RDP_KEY_Pos                         (0U)                               
+#define RDP_KEY_Msk                         (0xA5U << RDP_KEY_Pos)             /*!< 0x000000A5 */
+#define RDP_KEY                             RDP_KEY_Msk                        /*!< RDP Key */
+#define FLASH_KEY1_Pos                      (0U)                               
+#define FLASH_KEY1_Msk                      (0x45670123U << FLASH_KEY1_Pos)    /*!< 0x45670123 */
+#define FLASH_KEY1                          FLASH_KEY1_Msk                     /*!< FPEC Key1 */
+#define FLASH_KEY2_Pos                      (0U)                               
+#define FLASH_KEY2_Msk                      (0xCDEF89ABU << FLASH_KEY2_Pos)    /*!< 0xCDEF89AB */
+#define FLASH_KEY2                          FLASH_KEY2_Msk                     /*!< FPEC Key2 */
+
+/*****************  Bit definition for FLASH_OPTKEYR register  ****************/
+#define FLASH_OPTKEYR_OPTKEYR_Pos           (0U)                               
+#define FLASH_OPTKEYR_OPTKEYR_Msk           (0xFFFFFFFFU << FLASH_OPTKEYR_OPTKEYR_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_OPTKEYR_OPTKEYR               FLASH_OPTKEYR_OPTKEYR_Msk          /*!< Option Byte Key */
+
+#define  FLASH_OPTKEY1                       FLASH_KEY1                    /*!< Option Byte Key1 */
+#define  FLASH_OPTKEY2                       FLASH_KEY2                    /*!< Option Byte Key2 */
+
+/******************  Bit definition for FLASH_SR register  ********************/
+#define FLASH_SR_BSY_Pos                    (0U)                               
+#define FLASH_SR_BSY_Msk                    (0x1U << FLASH_SR_BSY_Pos)         /*!< 0x00000001 */
+#define FLASH_SR_BSY                        FLASH_SR_BSY_Msk                   /*!< Busy */
+#define FLASH_SR_PGERR_Pos                  (2U)                               
+#define FLASH_SR_PGERR_Msk                  (0x1U << FLASH_SR_PGERR_Pos)       /*!< 0x00000004 */
+#define FLASH_SR_PGERR                      FLASH_SR_PGERR_Msk                 /*!< Programming Error */
+#define FLASH_SR_WRPRTERR_Pos               (4U)                               
+#define FLASH_SR_WRPRTERR_Msk               (0x1U << FLASH_SR_WRPRTERR_Pos)    /*!< 0x00000010 */
+#define FLASH_SR_WRPRTERR                   FLASH_SR_WRPRTERR_Msk              /*!< Write Protection Error */
+#define FLASH_SR_EOP_Pos                    (5U)                               
+#define FLASH_SR_EOP_Msk                    (0x1U << FLASH_SR_EOP_Pos)         /*!< 0x00000020 */
+#define FLASH_SR_EOP                        FLASH_SR_EOP_Msk                   /*!< End of operation */
+
+/*******************  Bit definition for FLASH_CR register  *******************/
+#define FLASH_CR_PG_Pos                     (0U)                               
+#define FLASH_CR_PG_Msk                     (0x1U << FLASH_CR_PG_Pos)          /*!< 0x00000001 */
+#define FLASH_CR_PG                         FLASH_CR_PG_Msk                    /*!< Programming */
+#define FLASH_CR_PER_Pos                    (1U)                               
+#define FLASH_CR_PER_Msk                    (0x1U << FLASH_CR_PER_Pos)         /*!< 0x00000002 */
+#define FLASH_CR_PER                        FLASH_CR_PER_Msk                   /*!< Page Erase */
+#define FLASH_CR_MER_Pos                    (2U)                               
+#define FLASH_CR_MER_Msk                    (0x1U << FLASH_CR_MER_Pos)         /*!< 0x00000004 */
+#define FLASH_CR_MER                        FLASH_CR_MER_Msk                   /*!< Mass Erase */
+#define FLASH_CR_OPTPG_Pos                  (4U)                               
+#define FLASH_CR_OPTPG_Msk                  (0x1U << FLASH_CR_OPTPG_Pos)       /*!< 0x00000010 */
+#define FLASH_CR_OPTPG                      FLASH_CR_OPTPG_Msk                 /*!< Option Byte Programming */
+#define FLASH_CR_OPTER_Pos                  (5U)                               
+#define FLASH_CR_OPTER_Msk                  (0x1U << FLASH_CR_OPTER_Pos)       /*!< 0x00000020 */
+#define FLASH_CR_OPTER                      FLASH_CR_OPTER_Msk                 /*!< Option Byte Erase */
+#define FLASH_CR_STRT_Pos                   (6U)                               
+#define FLASH_CR_STRT_Msk                   (0x1U << FLASH_CR_STRT_Pos)        /*!< 0x00000040 */
+#define FLASH_CR_STRT                       FLASH_CR_STRT_Msk                  /*!< Start */
+#define FLASH_CR_LOCK_Pos                   (7U)                               
+#define FLASH_CR_LOCK_Msk                   (0x1U << FLASH_CR_LOCK_Pos)        /*!< 0x00000080 */
+#define FLASH_CR_LOCK                       FLASH_CR_LOCK_Msk                  /*!< Lock */
+#define FLASH_CR_OPTWRE_Pos                 (9U)                               
+#define FLASH_CR_OPTWRE_Msk                 (0x1U << FLASH_CR_OPTWRE_Pos)      /*!< 0x00000200 */
+#define FLASH_CR_OPTWRE                     FLASH_CR_OPTWRE_Msk                /*!< Option Bytes Write Enable */
+#define FLASH_CR_ERRIE_Pos                  (10U)                              
+#define FLASH_CR_ERRIE_Msk                  (0x1U << FLASH_CR_ERRIE_Pos)       /*!< 0x00000400 */
+#define FLASH_CR_ERRIE                      FLASH_CR_ERRIE_Msk                 /*!< Error Interrupt Enable */
+#define FLASH_CR_EOPIE_Pos                  (12U)                              
+#define FLASH_CR_EOPIE_Msk                  (0x1U << FLASH_CR_EOPIE_Pos)       /*!< 0x00001000 */
+#define FLASH_CR_EOPIE                      FLASH_CR_EOPIE_Msk                 /*!< End of operation interrupt enable */
+
+/*******************  Bit definition for FLASH_AR register  *******************/
+#define FLASH_AR_FAR_Pos                    (0U)                               
+#define FLASH_AR_FAR_Msk                    (0xFFFFFFFFU << FLASH_AR_FAR_Pos)  /*!< 0xFFFFFFFF */
+#define FLASH_AR_FAR                        FLASH_AR_FAR_Msk                   /*!< Flash Address */
+
+/******************  Bit definition for FLASH_OBR register  *******************/
+#define FLASH_OBR_OPTERR_Pos                (0U)                               
+#define FLASH_OBR_OPTERR_Msk                (0x1U << FLASH_OBR_OPTERR_Pos)     /*!< 0x00000001 */
+#define FLASH_OBR_OPTERR                    FLASH_OBR_OPTERR_Msk               /*!< Option Byte Error */
+#define FLASH_OBR_RDPRT_Pos                 (1U)                               
+#define FLASH_OBR_RDPRT_Msk                 (0x1U << FLASH_OBR_RDPRT_Pos)      /*!< 0x00000002 */
+#define FLASH_OBR_RDPRT                     FLASH_OBR_RDPRT_Msk                /*!< Read protection */
+
+#define FLASH_OBR_IWDG_SW_Pos               (2U)                               
+#define FLASH_OBR_IWDG_SW_Msk               (0x1U << FLASH_OBR_IWDG_SW_Pos)    /*!< 0x00000004 */
+#define FLASH_OBR_IWDG_SW                   FLASH_OBR_IWDG_SW_Msk              /*!< IWDG SW */
+#define FLASH_OBR_nRST_STOP_Pos             (3U)                               
+#define FLASH_OBR_nRST_STOP_Msk             (0x1U << FLASH_OBR_nRST_STOP_Pos)  /*!< 0x00000008 */
+#define FLASH_OBR_nRST_STOP                 FLASH_OBR_nRST_STOP_Msk            /*!< nRST_STOP */
+#define FLASH_OBR_nRST_STDBY_Pos            (4U)                               
+#define FLASH_OBR_nRST_STDBY_Msk            (0x1U << FLASH_OBR_nRST_STDBY_Pos) /*!< 0x00000010 */
+#define FLASH_OBR_nRST_STDBY                FLASH_OBR_nRST_STDBY_Msk           /*!< nRST_STDBY */
+#define FLASH_OBR_USER_Pos                  (2U)                               
+#define FLASH_OBR_USER_Msk                  (0x7U << FLASH_OBR_USER_Pos)       /*!< 0x0000001C */
+#define FLASH_OBR_USER                      FLASH_OBR_USER_Msk                 /*!< User Option Bytes */
+#define FLASH_OBR_DATA0_Pos                 (10U)                              
+#define FLASH_OBR_DATA0_Msk                 (0xFFU << FLASH_OBR_DATA0_Pos)     /*!< 0x0003FC00 */
+#define FLASH_OBR_DATA0                     FLASH_OBR_DATA0_Msk                /*!< Data0 */
+#define FLASH_OBR_DATA1_Pos                 (18U)                              
+#define FLASH_OBR_DATA1_Msk                 (0xFFU << FLASH_OBR_DATA1_Pos)     /*!< 0x03FC0000 */
+#define FLASH_OBR_DATA1                     FLASH_OBR_DATA1_Msk                /*!< Data1 */
+
+/******************  Bit definition for FLASH_WRPR register  ******************/
+#define FLASH_WRPR_WRP_Pos                  (0U)                               
+#define FLASH_WRPR_WRP_Msk                  (0xFFFFFFFFU << FLASH_WRPR_WRP_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_WRPR_WRP                      FLASH_WRPR_WRP_Msk                 /*!< Write Protect */
+
+/*----------------------------------------------------------------------------*/
+
+/******************  Bit definition for FLASH_RDP register  *******************/
+#define FLASH_RDP_RDP_Pos                   (0U)                               
+#define FLASH_RDP_RDP_Msk                   (0xFFU << FLASH_RDP_RDP_Pos)       /*!< 0x000000FF */
+#define FLASH_RDP_RDP                       FLASH_RDP_RDP_Msk                  /*!< Read protection option byte */
+#define FLASH_RDP_nRDP_Pos                  (8U)                               
+#define FLASH_RDP_nRDP_Msk                  (0xFFU << FLASH_RDP_nRDP_Pos)      /*!< 0x0000FF00 */
+#define FLASH_RDP_nRDP                      FLASH_RDP_nRDP_Msk                 /*!< Read protection complemented option byte */
+
+/******************  Bit definition for FLASH_USER register  ******************/
+#define FLASH_USER_USER_Pos                 (16U)                              
+#define FLASH_USER_USER_Msk                 (0xFFU << FLASH_USER_USER_Pos)     /*!< 0x00FF0000 */
+#define FLASH_USER_USER                     FLASH_USER_USER_Msk                /*!< User option byte */
+#define FLASH_USER_nUSER_Pos                (24U)                              
+#define FLASH_USER_nUSER_Msk                (0xFFU << FLASH_USER_nUSER_Pos)    /*!< 0xFF000000 */
+#define FLASH_USER_nUSER                    FLASH_USER_nUSER_Msk               /*!< User complemented option byte */
+
+/******************  Bit definition for FLASH_Data0 register  *****************/
+#define FLASH_DATA0_DATA0_Pos               (0U)                               
+#define FLASH_DATA0_DATA0_Msk               (0xFFU << FLASH_DATA0_DATA0_Pos)   /*!< 0x000000FF */
+#define FLASH_DATA0_DATA0                   FLASH_DATA0_DATA0_Msk              /*!< User data storage option byte */
+#define FLASH_DATA0_nDATA0_Pos              (8U)                               
+#define FLASH_DATA0_nDATA0_Msk              (0xFFU << FLASH_DATA0_nDATA0_Pos)  /*!< 0x0000FF00 */
+#define FLASH_DATA0_nDATA0                  FLASH_DATA0_nDATA0_Msk             /*!< User data storage complemented option byte */
+
+/******************  Bit definition for FLASH_Data1 register  *****************/
+#define FLASH_DATA1_DATA1_Pos               (16U)                              
+#define FLASH_DATA1_DATA1_Msk               (0xFFU << FLASH_DATA1_DATA1_Pos)   /*!< 0x00FF0000 */
+#define FLASH_DATA1_DATA1                   FLASH_DATA1_DATA1_Msk              /*!< User data storage option byte */
+#define FLASH_DATA1_nDATA1_Pos              (24U)                              
+#define FLASH_DATA1_nDATA1_Msk              (0xFFU << FLASH_DATA1_nDATA1_Pos)  /*!< 0xFF000000 */
+#define FLASH_DATA1_nDATA1                  FLASH_DATA1_nDATA1_Msk             /*!< User data storage complemented option byte */
+
+/******************  Bit definition for FLASH_WRP0 register  ******************/
+#define FLASH_WRP0_WRP0_Pos                 (0U)                               
+#define FLASH_WRP0_WRP0_Msk                 (0xFFU << FLASH_WRP0_WRP0_Pos)     /*!< 0x000000FF */
+#define FLASH_WRP0_WRP0                     FLASH_WRP0_WRP0_Msk                /*!< Flash memory write protection option bytes */
+#define FLASH_WRP0_nWRP0_Pos                (8U)                               
+#define FLASH_WRP0_nWRP0_Msk                (0xFFU << FLASH_WRP0_nWRP0_Pos)    /*!< 0x0000FF00 */
+#define FLASH_WRP0_nWRP0                    FLASH_WRP0_nWRP0_Msk               /*!< Flash memory write protection complemented option bytes */
+
+/******************  Bit definition for FLASH_WRP1 register  ******************/
+#define FLASH_WRP1_WRP1_Pos                 (16U)                              
+#define FLASH_WRP1_WRP1_Msk                 (0xFFU << FLASH_WRP1_WRP1_Pos)     /*!< 0x00FF0000 */
+#define FLASH_WRP1_WRP1                     FLASH_WRP1_WRP1_Msk                /*!< Flash memory write protection option bytes */
+#define FLASH_WRP1_nWRP1_Pos                (24U)                              
+#define FLASH_WRP1_nWRP1_Msk                (0xFFU << FLASH_WRP1_nWRP1_Pos)    /*!< 0xFF000000 */
+#define FLASH_WRP1_nWRP1                    FLASH_WRP1_nWRP1_Msk               /*!< Flash memory write protection complemented option bytes */
+
+/******************  Bit definition for FLASH_WRP2 register  ******************/
+#define FLASH_WRP2_WRP2_Pos                 (0U)                               
+#define FLASH_WRP2_WRP2_Msk                 (0xFFU << FLASH_WRP2_WRP2_Pos)     /*!< 0x000000FF */
+#define FLASH_WRP2_WRP2                     FLASH_WRP2_WRP2_Msk                /*!< Flash memory write protection option bytes */
+#define FLASH_WRP2_nWRP2_Pos                (8U)                               
+#define FLASH_WRP2_nWRP2_Msk                (0xFFU << FLASH_WRP2_nWRP2_Pos)    /*!< 0x0000FF00 */
+#define FLASH_WRP2_nWRP2                    FLASH_WRP2_nWRP2_Msk               /*!< Flash memory write protection complemented option bytes */
+
+/******************  Bit definition for FLASH_WRP3 register  ******************/
+#define FLASH_WRP3_WRP3_Pos                 (16U)                              
+#define FLASH_WRP3_WRP3_Msk                 (0xFFU << FLASH_WRP3_WRP3_Pos)     /*!< 0x00FF0000 */
+#define FLASH_WRP3_WRP3                     FLASH_WRP3_WRP3_Msk                /*!< Flash memory write protection option bytes */
+#define FLASH_WRP3_nWRP3_Pos                (24U)                              
+#define FLASH_WRP3_nWRP3_Msk                (0xFFU << FLASH_WRP3_nWRP3_Pos)    /*!< 0xFF000000 */
+#define FLASH_WRP3_nWRP3                    FLASH_WRP3_nWRP3_Msk               /*!< Flash memory write protection complemented option bytes */
+
+
+
+/**
+  * @}
+*/
+
+/**
+  * @}
+*/ 
+
+/** @addtogroup Exported_macro
+  * @{
+  */
+
+/****************************** ADC Instances *********************************/
+#define IS_ADC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == ADC1) || \
+                                       ((INSTANCE) == ADC2))
+
+#define IS_ADC_COMMON_INSTANCE(INSTANCE) ((INSTANCE) == ADC12_COMMON)
+
+#define IS_ADC_MULTIMODE_MASTER_INSTANCE(INSTANCE) ((INSTANCE) == ADC1)
+
+#define IS_ADC_DMA_CAPABILITY_INSTANCE(INSTANCE) ((INSTANCE) == ADC1)
+
+/****************************** CAN Instances *********************************/    
+#define IS_CAN_ALL_INSTANCE(INSTANCE) ((INSTANCE) == CAN1)
+
+/****************************** CRC Instances *********************************/
+#define IS_CRC_ALL_INSTANCE(INSTANCE) ((INSTANCE) == CRC)
+
+/****************************** DAC Instances *********************************/
+
+/****************************** DMA Instances *********************************/
+#define IS_DMA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DMA1_Channel1) || \
+                                       ((INSTANCE) == DMA1_Channel2) || \
+                                       ((INSTANCE) == DMA1_Channel3) || \
+                                       ((INSTANCE) == DMA1_Channel4) || \
+                                       ((INSTANCE) == DMA1_Channel5) || \
+                                       ((INSTANCE) == DMA1_Channel6) || \
+                                       ((INSTANCE) == DMA1_Channel7))
+  
+/******************************* GPIO Instances *******************************/
+#define IS_GPIO_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPIOA) || \
+                                        ((INSTANCE) == GPIOB) || \
+                                        ((INSTANCE) == GPIOC) || \
+                                        ((INSTANCE) == GPIOD) || \
+                                        ((INSTANCE) == GPIOE))
+
+/**************************** GPIO Alternate Function Instances ***************/
+#define IS_GPIO_AF_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/**************************** GPIO Lock Instances *****************************/
+#define IS_GPIO_LOCK_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/******************************** I2C Instances *******************************/
+#define IS_I2C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1) || \
+                                       ((INSTANCE) == I2C2))
+
+/****************************** IWDG Instances ********************************/
+#define IS_IWDG_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == IWDG)
+
+/******************************** SPI Instances *******************************/
+#define IS_SPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1) || \
+                                       ((INSTANCE) == SPI2))
+
+/****************************** START TIM Instances ***************************/
+/****************************** TIM Instances *********************************/
+#define IS_TIM_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_CC1_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_CC2_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_CC3_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_CC4_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_CLOCKSOURCE_TIX_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_OCXREF_CLEAR_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_ENCODER_INTERFACE_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_XOR_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_MASTER_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_SLAVE_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_DMABURST_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_BREAK_INSTANCE(INSTANCE)\
+  ((INSTANCE) == TIM1)
+
+#define IS_TIM_CCX_INSTANCE(INSTANCE, CHANNEL) \
+   ((((INSTANCE) == TIM1) &&                  \
+     (((CHANNEL) == TIM_CHANNEL_1) ||          \
+      ((CHANNEL) == TIM_CHANNEL_2) ||          \
+      ((CHANNEL) == TIM_CHANNEL_3) ||          \
+      ((CHANNEL) == TIM_CHANNEL_4)))           \
+    ||                                         \
+    (((INSTANCE) == TIM2) &&                   \
+     (((CHANNEL) == TIM_CHANNEL_1) ||          \
+      ((CHANNEL) == TIM_CHANNEL_2) ||          \
+      ((CHANNEL) == TIM_CHANNEL_3) ||          \
+      ((CHANNEL) == TIM_CHANNEL_4)))           \
+    ||                                         \
+    (((INSTANCE) == TIM3) &&                   \
+     (((CHANNEL) == TIM_CHANNEL_1) ||          \
+      ((CHANNEL) == TIM_CHANNEL_2) ||          \
+      ((CHANNEL) == TIM_CHANNEL_3) ||          \
+      ((CHANNEL) == TIM_CHANNEL_4)))           \
+    ||                                         \
+    (((INSTANCE) == TIM4) &&                   \
+     (((CHANNEL) == TIM_CHANNEL_1) ||          \
+      ((CHANNEL) == TIM_CHANNEL_2) ||          \
+      ((CHANNEL) == TIM_CHANNEL_3) ||          \
+      ((CHANNEL) == TIM_CHANNEL_4))))
+
+#define IS_TIM_CCXN_INSTANCE(INSTANCE, CHANNEL) \
+    (((INSTANCE) == TIM1) &&                    \
+     (((CHANNEL) == TIM_CHANNEL_1) ||           \
+      ((CHANNEL) == TIM_CHANNEL_2) ||           \
+      ((CHANNEL) == TIM_CHANNEL_3)))
+
+#define IS_TIM_COUNTER_MODE_SELECT_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_REPETITION_COUNTER_INSTANCE(INSTANCE)\
+  ((INSTANCE) == TIM1)
+
+#define IS_TIM_CLOCK_DIVISION_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+
+#define IS_TIM_DMA_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+    
+#define IS_TIM_DMA_CC_INSTANCE(INSTANCE)\
+  (((INSTANCE) == TIM1)    || \
+   ((INSTANCE) == TIM2)    || \
+   ((INSTANCE) == TIM3)    || \
+   ((INSTANCE) == TIM4))
+    
+#define IS_TIM_COMMUTATION_EVENT_INSTANCE(INSTANCE)\
+  ((INSTANCE) == TIM1)
+
+/****************************** END TIM Instances *****************************/
+
+
+/******************** USART Instances : Synchronous mode **********************/                                           
+#define IS_USART_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                     ((INSTANCE) == USART2) || \
+                                     ((INSTANCE) == USART3))
+
+/******************** UART Instances : Asynchronous mode **********************/
+#define IS_UART_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                    ((INSTANCE) == USART2) || \
+                                    ((INSTANCE) == USART3))
+
+/******************** UART Instances : Half-Duplex mode **********************/
+#define IS_UART_HALFDUPLEX_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                               ((INSTANCE) == USART2) || \
+                                               ((INSTANCE) == USART3))
+
+/******************** UART Instances : LIN mode **********************/
+#define IS_UART_LIN_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                        ((INSTANCE) == USART2) || \
+                                        ((INSTANCE) == USART3))
+
+/****************** UART Instances : Hardware Flow control ********************/                                    
+#define IS_UART_HWFLOW_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                           ((INSTANCE) == USART2) || \
+                                           ((INSTANCE) == USART3))
+
+/********************* UART Instances : Smard card mode ***********************/
+#define IS_SMARTCARD_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                         ((INSTANCE) == USART2) || \
+                                         ((INSTANCE) == USART3))
+
+/*********************** UART Instances : IRDA mode ***************************/
+#define IS_IRDA_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                    ((INSTANCE) == USART2) || \
+                                    ((INSTANCE) == USART3))
+
+/***************** UART Instances : Multi-Processor mode **********************/
+#define IS_UART_MULTIPROCESSOR_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                                   ((INSTANCE) == USART2) || \
+                                                   ((INSTANCE) == USART3))
+
+/***************** UART Instances : DMA mode available **********************/
+#define IS_UART_DMA_INSTANCE(INSTANCE) (((INSTANCE) == USART1) || \
+                                        ((INSTANCE) == USART2) || \
+                                        ((INSTANCE) == USART3))
+
+/****************************** RTC Instances *********************************/
+#define IS_RTC_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == RTC)
+
+/**************************** WWDG Instances *****************************/
+#define IS_WWDG_ALL_INSTANCE(INSTANCE)  ((INSTANCE) == WWDG)
+
+/****************************** USB Instances ********************************/
+#define IS_USB_ALL_INSTANCE(INSTANCE)   ((INSTANCE) == USB)
+
+
+
+
+/**
+  * @}
+*/ 
+/******************************************************************************/
+/*  For a painless codes migration between the STM32F1xx device product       */
+/*  lines, the aliases defined below are put in place to overcome the         */
+/*  differences in the interrupt handlers and IRQn definitions.               */
+/*  No need to update developed interrupt code when moving across             */ 
+/*  product lines within the same STM32F1 Family                              */
+/******************************************************************************/
+
+/* Aliases for __IRQn */
+#define ADC1_IRQn               ADC1_2_IRQn
+#define TIM1_BRK_TIM15_IRQn     TIM1_BRK_IRQn
+#define TIM1_BRK_TIM9_IRQn      TIM1_BRK_IRQn
+#define TIM9_IRQn               TIM1_BRK_IRQn
+#define TIM1_TRG_COM_TIM11_IRQn TIM1_TRG_COM_IRQn
+#define TIM1_TRG_COM_TIM17_IRQn TIM1_TRG_COM_IRQn
+#define TIM11_IRQn              TIM1_TRG_COM_IRQn
+#define TIM10_IRQn              TIM1_UP_IRQn
+#define TIM1_UP_TIM16_IRQn      TIM1_UP_IRQn
+#define TIM1_UP_TIM10_IRQn      TIM1_UP_IRQn
+#define CEC_IRQn                USBWakeUp_IRQn
+#define OTG_FS_WKUP_IRQn        USBWakeUp_IRQn
+#define CAN1_TX_IRQn            USB_HP_CAN1_TX_IRQn
+#define USB_HP_IRQn             USB_HP_CAN1_TX_IRQn
+#define USB_LP_IRQn             USB_LP_CAN1_RX0_IRQn
+#define CAN1_RX0_IRQn           USB_LP_CAN1_RX0_IRQn
+
+
+/* Aliases for __IRQHandler */
+#define ADC1_IRQHandler               ADC1_2_IRQHandler
+#define TIM1_BRK_TIM15_IRQHandler     TIM1_BRK_IRQHandler
+#define TIM1_BRK_TIM9_IRQHandler      TIM1_BRK_IRQHandler
+#define TIM9_IRQHandler               TIM1_BRK_IRQHandler
+#define TIM1_TRG_COM_TIM11_IRQHandler TIM1_TRG_COM_IRQHandler
+#define TIM1_TRG_COM_TIM17_IRQHandler TIM1_TRG_COM_IRQHandler
+#define TIM11_IRQHandler              TIM1_TRG_COM_IRQHandler
+#define TIM10_IRQHandler              TIM1_UP_IRQHandler
+#define TIM1_UP_TIM16_IRQHandler      TIM1_UP_IRQHandler
+#define TIM1_UP_TIM10_IRQHandler      TIM1_UP_IRQHandler
+#define CEC_IRQHandler                USBWakeUp_IRQHandler
+#define OTG_FS_WKUP_IRQHandler        USBWakeUp_IRQHandler
+#define CAN1_TX_IRQHandler            USB_HP_CAN1_TX_IRQHandler
+#define USB_HP_IRQHandler             USB_HP_CAN1_TX_IRQHandler
+#define USB_LP_IRQHandler             USB_LP_CAN1_RX0_IRQHandler
+#define CAN1_RX0_IRQHandler           USB_LP_CAN1_RX0_IRQHandler
+
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+
+#ifdef __cplusplus
+  }
+#endif /* __cplusplus */
+  
+#endif /* __STM32F103xB_H */
+  
+  
+  
+  /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,238 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx.h
+  * @author  MCD Application Team
+  * @version V4.1.0
+  * @date    29-April-2016
+  * @brief   CMSIS STM32F1xx Device Peripheral Access Layer Header File. 
+  *
+  *          The file is the unique include file that the application programmer
+  *          is using in the C source code, usually in main.c. This file contains:
+  *            - Configuration section that allows to select:
+  *              - The STM32F1xx device used in the target application
+  *              - To use or not the peripheral’s drivers in application code(i.e. 
+  *                code will be based on direct access to peripheral’s registers 
+  *                rather than drivers API), this option is controlled by 
+  *                "#define USE_HAL_DRIVER"
+  *  
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/** @addtogroup CMSIS
+  * @{
+  */
+
+/** @addtogroup stm32f1xx
+  * @{
+  */
+    
+#ifndef __STM32F1XX_H
+#define __STM32F1XX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif /* __cplusplus */
+  
+/** @addtogroup Library_configuration_section
+  * @{
+  */
+
+/**
+  * @brief STM32 Family
+  */
+#if !defined (STM32F1)
+#define STM32F1
+#endif /* STM32F1 */
+
+/* Uncomment the line below according to the target STM32L device used in your 
+   application 
+  */
+
+#if !defined (STM32F100xB) && !defined (STM32F100xE) && !defined (STM32F101x6) && \
+    !defined (STM32F101xB) && !defined (STM32F101xE) && !defined (STM32F101xG) && !defined (STM32F102x6) && !defined (STM32F102xB) && !defined (STM32F103x6) && \
+    !defined (STM32F103xB) && !defined (STM32F103xE) && !defined (STM32F103xG) && !defined (STM32F105xC) && !defined (STM32F107xC)
+  /* #define STM32F100xB  */   /*!< STM32F100C4, STM32F100R4, STM32F100C6, STM32F100R6, STM32F100C8, STM32F100R8, STM32F100V8, STM32F100CB, STM32F100RB and STM32F100VB */
+  /* #define STM32F100xE */    /*!< STM32F100RC, STM32F100VC, STM32F100ZC, STM32F100RD, STM32F100VD, STM32F100ZD, STM32F100RE, STM32F100VE and STM32F100ZE */
+  /* #define STM32F101x6  */   /*!< STM32F101C4, STM32F101R4, STM32F101T4, STM32F101C6, STM32F101R6 and STM32F101T6 Devices */
+  /* #define STM32F101xB  */   /*!< STM32F101C8, STM32F101R8, STM32F101T8, STM32F101V8, STM32F101CB, STM32F101RB, STM32F101TB and STM32F101VB */
+  /* #define STM32F101xE */    /*!< STM32F101RC, STM32F101VC, STM32F101ZC, STM32F101RD, STM32F101VD, STM32F101ZD, STM32F101RE, STM32F101VE and STM32F101ZE */ 
+  /* #define STM32F101xG  */   /*!< STM32F101RF, STM32F101VF, STM32F101ZF, STM32F101RG, STM32F101VG and STM32F101ZG */
+  /* #define STM32F102x6 */    /*!< STM32F102C4, STM32F102R4, STM32F102C6 and STM32F102R6 */
+  /* #define STM32F102xB  */   /*!< STM32F102C8, STM32F102R8, STM32F102CB and STM32F102RB */
+  /* #define STM32F103x6  */   /*!< STM32F103C4, STM32F103R4, STM32F103T4, STM32F103C6, STM32F103R6 and STM32F103T6 */
+  /* #define STM32F103xB  */   /*!< STM32F103C8, STM32F103R8, STM32F103T8, STM32F103V8, STM32F103CB, STM32F103RB, STM32F103TB and STM32F103VB */
+  /* #define STM32F103xE */    /*!< STM32F103RC, STM32F103VC, STM32F103ZC, STM32F103RD, STM32F103VD, STM32F103ZD, STM32F103RE, STM32F103VE and STM32F103ZE */
+  /* #define STM32F103xG  */   /*!< STM32F103RF, STM32F103VF, STM32F103ZF, STM32F103RG, STM32F103VG and STM32F103ZG */
+  /* #define STM32F105xC */    /*!< STM32F105R8, STM32F105V8, STM32F105RB, STM32F105VB, STM32F105RC and STM32F105VC */
+  /* #define STM32F107xC  */   /*!< STM32F107RB, STM32F107VB, STM32F107RC and STM32F107VC */  
+#endif
+
+/*  Tip: To avoid modifying this file each time you need to switch between these
+        devices, you can define the device in your toolchain compiler preprocessor.
+  */
+  
+#if !defined  (USE_HAL_DRIVER)
+/**
+ * @brief Comment the line below if you will not use the peripherals drivers.
+   In this case, these drivers will not be included and the application code will 
+   be based on direct access to peripherals registers 
+   */
+  /*#define USE_HAL_DRIVER */
+#endif /* USE_HAL_DRIVER */
+
+/**
+  * @brief CMSIS Device version number
+  */
+#define __STM32F1_CMSIS_VERSION_MAIN   (0x04) /*!< [31:24] main version */                                  
+#define __STM32F1_CMSIS_VERSION_SUB1   (0x01) /*!< [23:16] sub1 version */
+#define __STM32F1_CMSIS_VERSION_SUB2   (0x00) /*!< [15:8]  sub2 version */
+#define __STM32F1_CMSIS_VERSION_RC     (0x00) /*!< [7:0]  release candidate */ 
+#define __STM32F1_CMSIS_VERSION        ((__STM32F1_CMSIS_VERSION_MAIN << 24)\
+                                       |(__STM32F1_CMSIS_VERSION_SUB1 << 16)\
+                                       |(__STM32F1_CMSIS_VERSION_SUB2 << 8 )\
+                                       |(__STM32F1_CMSIS_VERSION_RC))
+
+/**
+  * @}
+  */
+
+/** @addtogroup Device_Included
+  * @{
+  */
+
+#if defined(STM32F100xB)
+  #include "stm32f100xb.h"
+#elif defined(STM32F100xE)
+  #include "stm32f100xe.h"
+#elif defined(STM32F101x6)
+  #include "stm32f101x6.h"
+#elif defined(STM32F101xB)
+  #include "stm32f101xb.h"
+#elif defined(STM32F101xE)
+  #include "stm32f101xe.h"
+#elif defined(STM32F101xG)
+  #include "stm32f101xg.h"
+#elif defined(STM32F102x6)
+  #include "stm32f102x6.h"
+#elif defined(STM32F102xB)
+  #include "stm32f102xb.h"
+#elif defined(STM32F103x6)
+  #include "stm32f103x6.h"
+#elif defined(STM32F103xB)
+  #include "stm32f103xb.h"
+#elif defined(STM32F103xE)
+  #include "stm32f103xe.h"
+#elif defined(STM32F103xG)
+  #include "stm32f103xg.h"
+#elif defined(STM32F105xC)
+  #include "stm32f105xc.h"
+#elif defined(STM32F107xC)
+  #include "stm32f107xc.h"
+#else
+ #error "Please select first the target STM32F1xx device used in your application (in stm32f1xx.h file)"
+#endif
+
+/**
+  * @}
+  */
+
+/** @addtogroup Exported_types
+  * @{
+  */  
+typedef enum 
+{
+  RESET = 0, 
+  SET = !RESET
+} FlagStatus, ITStatus;
+
+typedef enum 
+{
+  DISABLE = 0, 
+  ENABLE = !DISABLE
+} FunctionalState;
+#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
+
+typedef enum 
+{
+  ERROR = 0, 
+  SUCCESS = !ERROR
+} ErrorStatus;
+
+/**
+  * @}
+  */
+
+
+/** @addtogroup Exported_macros
+  * @{
+  */
+#define SET_BIT(REG, BIT)     ((REG) |= (BIT))
+
+#define CLEAR_BIT(REG, BIT)   ((REG) &= ~(BIT))
+
+#define READ_BIT(REG, BIT)    ((REG) & (BIT))
+
+#define CLEAR_REG(REG)        ((REG) = (0x0))
+
+#define WRITE_REG(REG, VAL)   ((REG) = (VAL))
+
+#define READ_REG(REG)         ((REG))
+
+#define MODIFY_REG(REG, CLEARMASK, SETMASK)  WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
+
+#define POSITION_VAL(VAL)     (__CLZ(__RBIT(VAL))) 
+
+
+/**
+  * @}
+  */
+
+#if defined (USE_HAL_DRIVER)
+ #include "stm32f1xx_hal.h"
+#endif /* USE_HAL_DRIVER */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __STM32F1xx_H */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+  
+
+
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,116 @@
+/**
+  ******************************************************************************
+  * @file    system_stm32f10x.h
+  * @author  MCD Application Team
+  * @version V4.1.0
+  * @date    29-April-2016
+  * @brief   CMSIS Cortex-M3 Device Peripheral Access Layer System Header File.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/** @addtogroup CMSIS
+  * @{
+  */
+
+/** @addtogroup stm32f10x_system
+  * @{
+  */  
+  
+/**
+  * @brief Define to prevent recursive inclusion
+  */
+#ifndef __SYSTEM_STM32F10X_H
+#define __SYSTEM_STM32F10X_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif 
+
+/** @addtogroup STM32F10x_System_Includes
+  * @{
+  */
+
+/**
+  * @}
+  */
+
+
+/** @addtogroup STM32F10x_System_Exported_types
+  * @{
+  */
+
+extern uint32_t SystemCoreClock;          /*!< System Clock Frequency (Core Clock) */
+extern const uint8_t  AHBPrescTable[16];  /*!< AHB prescalers table values */
+extern const uint8_t  APBPrescTable[8];   /*!< APB prescalers table values */
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F10x_System_Exported_Constants
+  * @{
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F10x_System_Exported_Macros
+  * @{
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F10x_System_Exported_Functions
+  * @{
+  */
+  
+extern void SystemInit(void);
+extern void SystemCoreClockUpdate(void);
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__SYSTEM_STM32F10X_H */
+
+/**
+  * @}
+  */
+  
+/**
+  * @}
+  */  
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,379 @@
+/**
+  *************** (C) COPYRIGHT 2016 STMicroelectronics ************************
+  * @file      startup_stm32f103xb.s
+  * @author    MCD Application Team
+  * @version   V4.1.0
+  * @date      29-April-2016
+  * @brief     STM32F103xB Devices vector table for Atollic toolchain.
+  *            This module performs:
+  *                - Set the initial SP
+  *                - Set the initial PC == Reset_Handler,
+  *                - Set the vector table entries with the exceptions ISR address
+  *                - Configure the clock system   
+  *                - Branches to main in the C library (which eventually
+  *                  calls main()).
+  *            After Reset the Cortex-M3 processor is in Thread mode,
+  *            priority is Privileged, and the Stack is set to Main.
+  ******************************************************************************
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+  .syntax unified
+  .cpu cortex-m3
+  .fpu softvfp
+  .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+
+.equ  BootRAM, 0xF108F85F
+/**
+ * @brief  This is the code that gets called when the processor first
+ *          starts execution following a reset event. Only the absolutely
+ *          necessary set is performed, after which the application
+ *          supplied main() routine is called.
+ * @param  None
+ * @retval : None
+*/
+
+  .section .text.Reset_Handler
+  .weak Reset_Handler
+  .type Reset_Handler, %function
+Reset_Handler:
+
+/* Copy the data segment initializers from flash to SRAM */
+  movs r1, #0
+  b LoopCopyDataInit
+
+CopyDataInit:
+  ldr r3, =_sidata
+  ldr r3, [r3, r1]
+  str r3, [r0, r1]
+  adds r1, r1, #4
+
+LoopCopyDataInit:
+  ldr r0, =_sdata
+  ldr r3, =_edata
+  adds r2, r0, r1
+  cmp r2, r3
+  bcc CopyDataInit
+  ldr r2, =_sbss
+  b LoopFillZerobss
+/* Zero fill the bss segment. */
+FillZerobss:
+  movs r3, #0
+  str r3, [r2], #4
+
+LoopFillZerobss:
+  ldr r3, = _ebss
+  cmp r2, r3
+  bcc FillZerobss
+
+/* Call the clock system intitialization function.*/
+    bl  SystemInit
+/* Call static constructors */
+    bl __libc_init_array
+/* Call the application's entry point.*/
+  bl main
+  bx lr
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief  This is the code that gets called when the processor receives an
+ *         unexpected interrupt.  This simply enters an infinite loop, preserving
+ *         the system state for examination by a debugger.
+ *
+ * @param  None
+ * @retval : None
+*/
+    .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+  b Infinite_Loop
+  .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex M3.  Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+  .section .isr_vector,"a",%progbits
+  .type g_pfnVectors, %object
+  .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+
+  .word _estack
+  .word Reset_Handler
+  .word NMI_Handler
+  .word HardFault_Handler
+  .word MemManage_Handler
+  .word BusFault_Handler
+  .word UsageFault_Handler
+  .word 0
+  .word 0
+  .word 0
+  .word 0
+  .word SVC_Handler
+  .word DebugMon_Handler
+  .word 0
+  .word PendSV_Handler
+  .word SysTick_Handler
+  .word WWDG_IRQHandler
+  .word PVD_IRQHandler
+  .word TAMPER_IRQHandler
+  .word RTC_IRQHandler
+  .word FLASH_IRQHandler
+  .word RCC_IRQHandler
+  .word EXTI0_IRQHandler
+  .word EXTI1_IRQHandler
+  .word EXTI2_IRQHandler
+  .word EXTI3_IRQHandler
+  .word EXTI4_IRQHandler
+  .word DMA1_Channel1_IRQHandler
+  .word DMA1_Channel2_IRQHandler
+  .word DMA1_Channel3_IRQHandler
+  .word DMA1_Channel4_IRQHandler
+  .word DMA1_Channel5_IRQHandler
+  .word DMA1_Channel6_IRQHandler
+  .word DMA1_Channel7_IRQHandler
+  .word ADC1_2_IRQHandler
+  .word USB_HP_CAN1_TX_IRQHandler
+  .word USB_LP_CAN1_RX0_IRQHandler
+  .word CAN1_RX1_IRQHandler
+  .word CAN1_SCE_IRQHandler
+  .word EXTI9_5_IRQHandler
+  .word TIM1_BRK_IRQHandler
+  .word TIM1_UP_IRQHandler
+  .word TIM1_TRG_COM_IRQHandler
+  .word TIM1_CC_IRQHandler
+  .word TIM2_IRQHandler
+  .word TIM3_IRQHandler
+  .word TIM4_IRQHandler
+  .word I2C1_EV_IRQHandler
+  .word I2C1_ER_IRQHandler
+  .word I2C2_EV_IRQHandler
+  .word I2C2_ER_IRQHandler
+  .word SPI1_IRQHandler
+  .word SPI2_IRQHandler
+  .word USART1_IRQHandler
+  .word USART2_IRQHandler
+  .word USART3_IRQHandler
+  .word EXTI15_10_IRQHandler
+  .word RTC_Alarm_IRQHandler
+  .word USBWakeUp_IRQHandler
+  .word 0
+  .word 0
+  .word 0
+  .word 0
+  .word 0
+  .word 0
+  .word 0
+  .word BootRAM          /* @0x108. This is for boot in RAM mode for
+                            STM32F10x Medium Density devices. */
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+
+  .weak NMI_Handler
+  .thumb_set NMI_Handler,Default_Handler
+
+  .weak HardFault_Handler
+  .thumb_set HardFault_Handler,Default_Handler
+
+  .weak MemManage_Handler
+  .thumb_set MemManage_Handler,Default_Handler
+
+  .weak BusFault_Handler
+  .thumb_set BusFault_Handler,Default_Handler
+
+  .weak UsageFault_Handler
+  .thumb_set UsageFault_Handler,Default_Handler
+
+  .weak SVC_Handler
+  .thumb_set SVC_Handler,Default_Handler
+
+  .weak DebugMon_Handler
+  .thumb_set DebugMon_Handler,Default_Handler
+
+  .weak PendSV_Handler
+  .thumb_set PendSV_Handler,Default_Handler
+
+  .weak SysTick_Handler
+  .thumb_set SysTick_Handler,Default_Handler
+
+  .weak WWDG_IRQHandler
+  .thumb_set WWDG_IRQHandler,Default_Handler
+
+  .weak PVD_IRQHandler
+  .thumb_set PVD_IRQHandler,Default_Handler
+
+  .weak TAMPER_IRQHandler
+  .thumb_set TAMPER_IRQHandler,Default_Handler
+
+  .weak RTC_IRQHandler
+  .thumb_set RTC_IRQHandler,Default_Handler
+
+  .weak FLASH_IRQHandler
+  .thumb_set FLASH_IRQHandler,Default_Handler
+
+  .weak RCC_IRQHandler
+  .thumb_set RCC_IRQHandler,Default_Handler
+
+  .weak EXTI0_IRQHandler
+  .thumb_set EXTI0_IRQHandler,Default_Handler
+
+  .weak EXTI1_IRQHandler
+  .thumb_set EXTI1_IRQHandler,Default_Handler
+
+  .weak EXTI2_IRQHandler
+  .thumb_set EXTI2_IRQHandler,Default_Handler
+
+  .weak EXTI3_IRQHandler
+  .thumb_set EXTI3_IRQHandler,Default_Handler
+
+  .weak EXTI4_IRQHandler
+  .thumb_set EXTI4_IRQHandler,Default_Handler
+
+  .weak DMA1_Channel1_IRQHandler
+  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
+
+  .weak DMA1_Channel2_IRQHandler
+  .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
+
+  .weak DMA1_Channel3_IRQHandler
+  .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
+
+  .weak DMA1_Channel4_IRQHandler
+  .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
+
+  .weak DMA1_Channel5_IRQHandler
+  .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
+
+  .weak DMA1_Channel6_IRQHandler
+  .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
+
+  .weak DMA1_Channel7_IRQHandler
+  .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
+
+  .weak ADC1_2_IRQHandler
+  .thumb_set ADC1_2_IRQHandler,Default_Handler
+
+  .weak USB_HP_CAN1_TX_IRQHandler
+  .thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler
+
+  .weak USB_LP_CAN1_RX0_IRQHandler
+  .thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler
+
+  .weak CAN1_RX1_IRQHandler
+  .thumb_set CAN1_RX1_IRQHandler,Default_Handler
+
+  .weak CAN1_SCE_IRQHandler
+  .thumb_set CAN1_SCE_IRQHandler,Default_Handler
+
+  .weak EXTI9_5_IRQHandler
+  .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+  .weak TIM1_BRK_IRQHandler
+  .thumb_set TIM1_BRK_IRQHandler,Default_Handler
+
+  .weak TIM1_UP_IRQHandler
+  .thumb_set TIM1_UP_IRQHandler,Default_Handler
+
+  .weak TIM1_TRG_COM_IRQHandler
+  .thumb_set TIM1_TRG_COM_IRQHandler,Default_Handler
+
+  .weak TIM1_CC_IRQHandler
+  .thumb_set TIM1_CC_IRQHandler,Default_Handler
+
+  .weak TIM2_IRQHandler
+  .thumb_set TIM2_IRQHandler,Default_Handler
+
+  .weak TIM3_IRQHandler
+  .thumb_set TIM3_IRQHandler,Default_Handler
+
+  .weak TIM4_IRQHandler
+  .thumb_set TIM4_IRQHandler,Default_Handler
+
+  .weak I2C1_EV_IRQHandler
+  .thumb_set I2C1_EV_IRQHandler,Default_Handler
+
+  .weak I2C1_ER_IRQHandler
+  .thumb_set I2C1_ER_IRQHandler,Default_Handler
+
+  .weak I2C2_EV_IRQHandler
+  .thumb_set I2C2_EV_IRQHandler,Default_Handler
+
+  .weak I2C2_ER_IRQHandler
+  .thumb_set I2C2_ER_IRQHandler,Default_Handler
+
+  .weak SPI1_IRQHandler
+  .thumb_set SPI1_IRQHandler,Default_Handler
+
+  .weak SPI2_IRQHandler
+  .thumb_set SPI2_IRQHandler,Default_Handler
+
+  .weak USART1_IRQHandler
+  .thumb_set USART1_IRQHandler,Default_Handler
+
+  .weak USART2_IRQHandler
+  .thumb_set USART2_IRQHandler,Default_Handler
+
+  .weak USART3_IRQHandler
+  .thumb_set USART3_IRQHandler,Default_Handler
+
+  .weak EXTI15_10_IRQHandler
+  .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+  .weak RTC_Alarm_IRQHandler
+  .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+  .weak USBWakeUp_IRQHandler
+  .thumb_set USBWakeUp_IRQHandler,Default_Handler
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/arm_common_tables.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,136 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date:        19. October 2015
+* $Revision: 	V.1.4.5 a
+*
+* Project: 	    CMSIS DSP Library
+* Title:	    arm_common_tables.h
+*
+* Description:	This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#ifndef _ARM_COMMON_TABLES_H
+#define _ARM_COMMON_TABLES_H
+
+#include "arm_math.h"
+
+extern const uint16_t armBitRevTable[1024];
+extern const q15_t armRecipTableQ15[64];
+extern const q31_t armRecipTableQ31[64];
+/* extern const q31_t realCoefAQ31[1024]; */
+/* extern const q31_t realCoefBQ31[1024]; */
+extern const float32_t twiddleCoef_16[32];
+extern const float32_t twiddleCoef_32[64];
+extern const float32_t twiddleCoef_64[128];
+extern const float32_t twiddleCoef_128[256];
+extern const float32_t twiddleCoef_256[512];
+extern const float32_t twiddleCoef_512[1024];
+extern const float32_t twiddleCoef_1024[2048];
+extern const float32_t twiddleCoef_2048[4096];
+extern const float32_t twiddleCoef_4096[8192];
+#define twiddleCoef twiddleCoef_4096
+extern const q31_t twiddleCoef_16_q31[24];
+extern const q31_t twiddleCoef_32_q31[48];
+extern const q31_t twiddleCoef_64_q31[96];
+extern const q31_t twiddleCoef_128_q31[192];
+extern const q31_t twiddleCoef_256_q31[384];
+extern const q31_t twiddleCoef_512_q31[768];
+extern const q31_t twiddleCoef_1024_q31[1536];
+extern const q31_t twiddleCoef_2048_q31[3072];
+extern const q31_t twiddleCoef_4096_q31[6144];
+extern const q15_t twiddleCoef_16_q15[24];
+extern const q15_t twiddleCoef_32_q15[48];
+extern const q15_t twiddleCoef_64_q15[96];
+extern const q15_t twiddleCoef_128_q15[192];
+extern const q15_t twiddleCoef_256_q15[384];
+extern const q15_t twiddleCoef_512_q15[768];
+extern const q15_t twiddleCoef_1024_q15[1536];
+extern const q15_t twiddleCoef_2048_q15[3072];
+extern const q15_t twiddleCoef_4096_q15[6144];
+extern const float32_t twiddleCoef_rfft_32[32];
+extern const float32_t twiddleCoef_rfft_64[64];
+extern const float32_t twiddleCoef_rfft_128[128];
+extern const float32_t twiddleCoef_rfft_256[256];
+extern const float32_t twiddleCoef_rfft_512[512];
+extern const float32_t twiddleCoef_rfft_1024[1024];
+extern const float32_t twiddleCoef_rfft_2048[2048];
+extern const float32_t twiddleCoef_rfft_4096[4096];
+
+
+/* floating-point bit reversal tables */
+#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20  )
+#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48  )
+#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56  )
+#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 )
+#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 )
+#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 )
+#define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800)
+#define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808)
+#define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032)
+
+extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH];
+
+/* fixed-point bit reversal tables */
+#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12  )
+#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24  )
+#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56  )
+#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112 )
+#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240 )
+#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480 )
+#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992 )
+#define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984)
+#define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032)
+
+extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH];
+extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH];
+
+/* Tables for Fast Math Sine and Cosine */
+extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1];
+extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1];
+extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1];
+
+#endif /*  ARM_COMMON_TABLES_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/arm_const_structs.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,79 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date:        19. March 2015
+* $Revision: 	V.1.4.5
+*
+* Project: 	    CMSIS DSP Library
+* Title:	    arm_const_structs.h
+*
+* Description:	This file has constant structs that are initialized for
+*              user convenience.  For example, some can be given as
+*              arguments to the arm_cfft_f32() function.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#ifndef _ARM_CONST_STRUCTS_H
+#define _ARM_CONST_STRUCTS_H
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16;
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32;
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64;
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128;
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256;
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512;
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024;
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048;
+   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096;
+
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16;
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32;
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64;
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128;
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256;
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512;
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024;
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048;
+   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096;
+
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16;
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32;
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64;
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128;
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256;
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512;
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024;
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048;
+   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096;
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/arm_math.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,7154 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2015 ARM Limited. All rights reserved.
+*
+* $Date:        20. October 2015
+* $Revision:    V1.4.5 b
+*
+* Project:      CMSIS DSP Library
+* Title:        arm_math.h
+*
+* Description:  Public header file for CMSIS DSP Library
+*
+* Target Processor: Cortex-M7/Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*   - Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*   - Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*   - Neither the name of ARM LIMITED nor the names of its contributors
+*     may be used to endorse or promote products derived from this
+*     software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+ * -------------------------------------------------------------------- */
+
+/**
+   \mainpage CMSIS DSP Software Library
+   *
+   * Introduction
+   * ------------
+   *
+   * This user manual describes the CMSIS DSP software library,
+   * a suite of common signal processing functions for use on Cortex-M processor based devices.
+   *
+   * The library is divided into a number of functions each covering a specific category:
+   * - Basic math functions
+   * - Fast math functions
+   * - Complex math functions
+   * - Filters
+   * - Matrix functions
+   * - Transforms
+   * - Motor control functions
+   * - Statistical functions
+   * - Support functions
+   * - Interpolation functions
+   *
+   * The library has separate functions for operating on 8-bit integers, 16-bit integers,
+   * 32-bit integer and 32-bit floating-point values.
+   *
+   * Using the Library
+   * ------------
+   *
+   * The library installer contains prebuilt versions of the libraries in the <code>Lib</code> folder.
+   * - arm_cortexM7lfdp_math.lib (Little endian and Double Precision Floating Point Unit on Cortex-M7)
+   * - arm_cortexM7bfdp_math.lib (Big endian and Double Precision Floating Point Unit on Cortex-M7)
+   * - arm_cortexM7lfsp_math.lib (Little endian and Single Precision Floating Point Unit on Cortex-M7)
+   * - arm_cortexM7bfsp_math.lib (Big endian and Single Precision Floating Point Unit on Cortex-M7)
+   * - arm_cortexM7l_math.lib (Little endian on Cortex-M7)
+   * - arm_cortexM7b_math.lib (Big endian on Cortex-M7)
+   * - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4)
+   * - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4)
+   * - arm_cortexM4l_math.lib (Little endian on Cortex-M4)
+   * - arm_cortexM4b_math.lib (Big endian on Cortex-M4)
+   * - arm_cortexM3l_math.lib (Little endian on Cortex-M3)
+   * - arm_cortexM3b_math.lib (Big endian on Cortex-M3)
+   * - arm_cortexM0l_math.lib (Little endian on Cortex-M0 / CortexM0+)
+   * - arm_cortexM0b_math.lib (Big endian on Cortex-M0 / CortexM0+)
+   *
+   * The library functions are declared in the public file <code>arm_math.h</code> which is placed in the <code>Include</code> folder.
+   * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single
+   * public header file <code> arm_math.h</code> for Cortex-M7/M4/M3/M0/M0+ with little endian and big endian. Same header file will be used for floating point unit(FPU) variants.
+   * Define the appropriate pre processor MACRO ARM_MATH_CM7 or ARM_MATH_CM4 or  ARM_MATH_CM3 or
+   * ARM_MATH_CM0 or ARM_MATH_CM0PLUS depending on the target processor in the application.
+   *
+   * Examples
+   * --------
+   *
+   * The library ships with a number of examples which demonstrate how to use the library functions.
+   *
+   * Toolchain Support
+   * ------------
+   *
+   * The library has been developed and tested with MDK-ARM version 5.14.0.0
+   * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly.
+   *
+   * Building the Library
+   * ------------
+   *
+   * The library installer contains a project file to re build libraries on MDK-ARM Tool chain in the <code>CMSIS\\DSP_Lib\\Source\\ARM</code> folder.
+   * - arm_cortexM_math.uvprojx
+   *
+   *
+   * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional pre processor MACROs detailed above.
+   *
+   * Pre-processor Macros
+   * ------------
+   *
+   * Each library project have differant pre-processor macros.
+   *
+   * - UNALIGNED_SUPPORT_DISABLE:
+   *
+   * Define macro UNALIGNED_SUPPORT_DISABLE, If the silicon does not support unaligned memory access
+   *
+   * - ARM_MATH_BIG_ENDIAN:
+   *
+   * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.
+   *
+   * - ARM_MATH_MATRIX_CHECK:
+   *
+   * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices
+   *
+   * - ARM_MATH_ROUNDING:
+   *
+   * Define macro ARM_MATH_ROUNDING for rounding on support functions
+   *
+   * - ARM_MATH_CMx:
+   *
+   * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target
+   * and ARM_MATH_CM0 for building library on Cortex-M0 target, ARM_MATH_CM0PLUS for building library on Cortex-M0+ target, and
+   * ARM_MATH_CM7 for building the library on cortex-M7.
+   *
+   * - __FPU_PRESENT:
+   *
+   * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries
+   *
+   * <hr>
+   * CMSIS-DSP in ARM::CMSIS Pack
+   * -----------------------------
+   *
+   * The following files relevant to CMSIS-DSP are present in the <b>ARM::CMSIS</b> Pack directories:
+   * |File/Folder                   |Content                                                                 |
+   * |------------------------------|------------------------------------------------------------------------|
+   * |\b CMSIS\\Documentation\\DSP  | This documentation                                                     |
+   * |\b CMSIS\\DSP_Lib             | Software license agreement (license.txt)                               |
+   * |\b CMSIS\\DSP_Lib\\Examples   | Example projects demonstrating the usage of the library functions      |
+   * |\b CMSIS\\DSP_Lib\\Source     | Source files for rebuilding the library                                |
+   *
+   * <hr>
+   * Revision History of CMSIS-DSP
+   * ------------
+   * Please refer to \ref ChangeLog_pg.
+   *
+   * Copyright Notice
+   * ------------
+   *
+   * Copyright (C) 2010-2015 ARM Limited. All rights reserved.
+   */
+
+
+/**
+ * @defgroup groupMath Basic Math Functions
+ */
+
+/**
+ * @defgroup groupFastMath Fast Math Functions
+ * This set of functions provides a fast approximation to sine, cosine, and square root.
+ * As compared to most of the other functions in the CMSIS math library, the fast math functions
+ * operate on individual values and not arrays.
+ * There are separate functions for Q15, Q31, and floating-point data.
+ *
+ */
+
+/**
+ * @defgroup groupCmplxMath Complex Math Functions
+ * This set of functions operates on complex data vectors.
+ * The data in the complex arrays is stored in an interleaved fashion
+ * (real, imag, real, imag, ...).
+ * In the API functions, the number of samples in a complex array refers
+ * to the number of complex values; the array contains twice this number of
+ * real values.
+ */
+
+/**
+ * @defgroup groupFilters Filtering Functions
+ */
+
+/**
+ * @defgroup groupMatrix Matrix Functions
+ *
+ * This set of functions provides basic matrix math operations.
+ * The functions operate on matrix data structures.  For example,
+ * the type
+ * definition for the floating-point matrix structure is shown
+ * below:
+ * <pre>
+ *     typedef struct
+ *     {
+ *       uint16_t numRows;     // number of rows of the matrix.
+ *       uint16_t numCols;     // number of columns of the matrix.
+ *       float32_t *pData;     // points to the data of the matrix.
+ *     } arm_matrix_instance_f32;
+ * </pre>
+ * There are similar definitions for Q15 and Q31 data types.
+ *
+ * The structure specifies the size of the matrix and then points to
+ * an array of data.  The array is of size <code>numRows X numCols</code>
+ * and the values are arranged in row order.  That is, the
+ * matrix element (i, j) is stored at:
+ * <pre>
+ *     pData[i*numCols + j]
+ * </pre>
+ *
+ * \par Init Functions
+ * There is an associated initialization function for each type of matrix
+ * data structure.
+ * The initialization function sets the values of the internal structure fields.
+ * Refer to the function <code>arm_mat_init_f32()</code>, <code>arm_mat_init_q31()</code>
+ * and <code>arm_mat_init_q15()</code> for floating-point, Q31 and Q15 types,  respectively.
+ *
+ * \par
+ * Use of the initialization function is optional. However, if initialization function is used
+ * then the instance structure cannot be placed into a const data section.
+ * To place the instance structure in a const data
+ * section, manually initialize the data structure.  For example:
+ * <pre>
+ * <code>arm_matrix_instance_f32 S = {nRows, nColumns, pData};</code>
+ * <code>arm_matrix_instance_q31 S = {nRows, nColumns, pData};</code>
+ * <code>arm_matrix_instance_q15 S = {nRows, nColumns, pData};</code>
+ * </pre>
+ * where <code>nRows</code> specifies the number of rows, <code>nColumns</code>
+ * specifies the number of columns, and <code>pData</code> points to the
+ * data array.
+ *
+ * \par Size Checking
+ * By default all of the matrix functions perform size checking on the input and
+ * output matrices.  For example, the matrix addition function verifies that the
+ * two input matrices and the output matrix all have the same number of rows and
+ * columns.  If the size check fails the functions return:
+ * <pre>
+ *     ARM_MATH_SIZE_MISMATCH
+ * </pre>
+ * Otherwise the functions return
+ * <pre>
+ *     ARM_MATH_SUCCESS
+ * </pre>
+ * There is some overhead associated with this matrix size checking.
+ * The matrix size checking is enabled via the \#define
+ * <pre>
+ *     ARM_MATH_MATRIX_CHECK
+ * </pre>
+ * within the library project settings.  By default this macro is defined
+ * and size checking is enabled.  By changing the project settings and
+ * undefining this macro size checking is eliminated and the functions
+ * run a bit faster.  With size checking disabled the functions always
+ * return <code>ARM_MATH_SUCCESS</code>.
+ */
+
+/**
+ * @defgroup groupTransforms Transform Functions
+ */
+
+/**
+ * @defgroup groupController Controller Functions
+ */
+
+/**
+ * @defgroup groupStats Statistics Functions
+ */
+/**
+ * @defgroup groupSupport Support Functions
+ */
+
+/**
+ * @defgroup groupInterpolation Interpolation Functions
+ * These functions perform 1- and 2-dimensional interpolation of data.
+ * Linear interpolation is used for 1-dimensional data and
+ * bilinear interpolation is used for 2-dimensional data.
+ */
+
+/**
+ * @defgroup groupExamples Examples
+ */
+#ifndef _ARM_MATH_H
+#define _ARM_MATH_H
+
+/* ignore some GCC warnings */
+#if defined ( __GNUC__ )
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#pragma GCC diagnostic ignored "-Wconversion"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
+
+#define __CMSIS_GENERIC         /* disable NVIC and Systick functions */
+
+#if defined(ARM_MATH_CM7)
+  #include "core_cm7.h"
+#elif defined (ARM_MATH_CM4)
+  #include "core_cm4.h"
+#elif defined (ARM_MATH_CM3)
+  #include "core_cm3.h"
+#elif defined (ARM_MATH_CM0)
+  #include "core_cm0.h"
+  #define ARM_MATH_CM0_FAMILY
+#elif defined (ARM_MATH_CM0PLUS)
+  #include "core_cm0plus.h"
+  #define ARM_MATH_CM0_FAMILY
+#else
+  #error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0"
+#endif
+
+#undef  __CMSIS_GENERIC         /* enable NVIC and Systick functions */
+#include "string.h"
+#include "math.h"
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+
+  /**
+   * @brief Macros required for reciprocal calculation in Normalized LMS
+   */
+
+#define DELTA_Q31          (0x100)
+#define DELTA_Q15          0x5
+#define INDEX_MASK         0x0000003F
+#ifndef PI
+#define PI                 3.14159265358979f
+#endif
+
+  /**
+   * @brief Macros required for SINE and COSINE Fast math approximations
+   */
+
+#define FAST_MATH_TABLE_SIZE  512
+#define FAST_MATH_Q31_SHIFT   (32 - 10)
+#define FAST_MATH_Q15_SHIFT   (16 - 10)
+#define CONTROLLER_Q31_SHIFT  (32 - 9)
+#define TABLE_SIZE  256
+#define TABLE_SPACING_Q31     0x400000
+#define TABLE_SPACING_Q15     0x80
+
+  /**
+   * @brief Macros required for SINE and COSINE Controller functions
+   */
+  /* 1.31(q31) Fixed value of 2/360 */
+  /* -1 to +1 is divided into 360 values so total spacing is (2/360) */
+#define INPUT_SPACING         0xB60B61
+
+  /**
+   * @brief Macro for Unaligned Support
+   */
+#ifndef UNALIGNED_SUPPORT_DISABLE
+    #define ALIGN4
+#else
+  #if defined  (__GNUC__)
+    #define ALIGN4 __attribute__((aligned(4)))
+  #else
+    #define ALIGN4 __align(4)
+  #endif
+#endif   /* #ifndef UNALIGNED_SUPPORT_DISABLE */
+
+  /**
+   * @brief Error status returned by some functions in the library.
+   */
+
+  typedef enum
+  {
+    ARM_MATH_SUCCESS = 0,                /**< No error */
+    ARM_MATH_ARGUMENT_ERROR = -1,        /**< One or more arguments are incorrect */
+    ARM_MATH_LENGTH_ERROR = -2,          /**< Length of data buffer is incorrect */
+    ARM_MATH_SIZE_MISMATCH = -3,         /**< Size of matrices is not compatible with the operation. */
+    ARM_MATH_NANINF = -4,                /**< Not-a-number (NaN) or infinity is generated */
+    ARM_MATH_SINGULAR = -5,              /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */
+    ARM_MATH_TEST_FAILURE = -6           /**< Test Failed  */
+  } arm_status;
+
+  /**
+   * @brief 8-bit fractional data type in 1.7 format.
+   */
+  typedef int8_t q7_t;
+
+  /**
+   * @brief 16-bit fractional data type in 1.15 format.
+   */
+  typedef int16_t q15_t;
+
+  /**
+   * @brief 32-bit fractional data type in 1.31 format.
+   */
+  typedef int32_t q31_t;
+
+  /**
+   * @brief 64-bit fractional data type in 1.63 format.
+   */
+  typedef int64_t q63_t;
+
+  /**
+   * @brief 32-bit floating-point type definition.
+   */
+  typedef float float32_t;
+
+  /**
+   * @brief 64-bit floating-point type definition.
+   */
+  typedef double float64_t;
+
+  /**
+   * @brief definition to read/write two 16 bit values.
+   */
+#if defined __CC_ARM
+  #define __SIMD32_TYPE int32_t __packed
+  #define CMSIS_UNUSED __attribute__((unused))
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define __SIMD32_TYPE int32_t
+  #define CMSIS_UNUSED __attribute__((unused))
+
+#elif defined __GNUC__
+  #define __SIMD32_TYPE int32_t
+  #define CMSIS_UNUSED __attribute__((unused))
+
+#elif defined __ICCARM__
+  #define __SIMD32_TYPE int32_t __packed
+  #define CMSIS_UNUSED
+
+#elif defined __CSMC__
+  #define __SIMD32_TYPE int32_t
+  #define CMSIS_UNUSED
+
+#elif defined __TASKING__
+  #define __SIMD32_TYPE __unaligned int32_t
+  #define CMSIS_UNUSED
+
+#else
+  #error Unknown compiler
+#endif
+
+#define __SIMD32(addr)        (*(__SIMD32_TYPE **) & (addr))
+#define __SIMD32_CONST(addr)  ((__SIMD32_TYPE *)(addr))
+#define _SIMD32_OFFSET(addr)  (*(__SIMD32_TYPE *)  (addr))
+#define __SIMD64(addr)        (*(int64_t **) & (addr))
+
+#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY)
+  /**
+   * @brief definition to pack two 16 bit values.
+   */
+#define __PKHBT(ARG1, ARG2, ARG3)      ( (((int32_t)(ARG1) <<  0) & (int32_t)0x0000FFFF) | \
+                                         (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000)  )
+#define __PKHTB(ARG1, ARG2, ARG3)      ( (((int32_t)(ARG1) <<  0) & (int32_t)0xFFFF0000) | \
+                                         (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF)  )
+
+#endif
+
+
+   /**
+   * @brief definition to pack four 8 bit values.
+   */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) | \
+                                (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) | \
+                                (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \
+                                (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )
+#else
+
+#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) <<  0) & (int32_t)0x000000FF) | \
+                                (((int32_t)(v2) <<  8) & (int32_t)0x0000FF00) | \
+                                (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \
+                                (((int32_t)(v0) << 24) & (int32_t)0xFF000000)  )
+
+#endif
+
+
+  /**
+   * @brief Clips Q63 to Q31 values.
+   */
+  static __INLINE q31_t clip_q63_to_q31(
+  q63_t x)
+  {
+    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
+      ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x;
+  }
+
+  /**
+   * @brief Clips Q63 to Q15 values.
+   */
+  static __INLINE q15_t clip_q63_to_q15(
+  q63_t x)
+  {
+    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
+      ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15);
+  }
+
+  /**
+   * @brief Clips Q31 to Q7 values.
+   */
+  static __INLINE q7_t clip_q31_to_q7(
+  q31_t x)
+  {
+    return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ?
+      ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x;
+  }
+
+  /**
+   * @brief Clips Q31 to Q15 values.
+   */
+  static __INLINE q15_t clip_q31_to_q15(
+  q31_t x)
+  {
+    return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ?
+      ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x;
+  }
+
+  /**
+   * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format.
+   */
+
+  static __INLINE q63_t mult32x64(
+  q63_t x,
+  q31_t y)
+  {
+    return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +
+            (((q63_t) (x >> 32) * y)));
+  }
+
+/*
+  #if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM   )
+  #define __CLZ __clz
+  #endif
+ */
+/* note: function can be removed when all toolchain support __CLZ for Cortex-M0 */
+#if defined (ARM_MATH_CM0_FAMILY) && ((defined (__ICCARM__))  )
+  static __INLINE uint32_t __CLZ(
+  q31_t data);
+
+  static __INLINE uint32_t __CLZ(
+  q31_t data)
+  {
+    uint32_t count = 0;
+    uint32_t mask = 0x80000000;
+
+    while((data & mask) == 0)
+    {
+      count += 1u;
+      mask = mask >> 1u;
+    }
+
+    return (count);
+  }
+#endif
+
+  /**
+   * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type.
+   */
+
+  static __INLINE uint32_t arm_recip_q31(
+  q31_t in,
+  q31_t * dst,
+  q31_t * pRecipTable)
+  {
+    q31_t out;
+    uint32_t tempVal;
+    uint32_t index, i;
+    uint32_t signBits;
+
+    if(in > 0)
+    {
+      signBits = ((uint32_t) (__CLZ( in) - 1));
+    }
+    else
+    {
+      signBits = ((uint32_t) (__CLZ(-in) - 1));
+    }
+
+    /* Convert input sample to 1.31 format */
+    in = (in << signBits);
+
+    /* calculation of index for initial approximated Val */
+    index = (uint32_t)(in >> 24);
+    index = (index & INDEX_MASK);
+
+    /* 1.31 with exp 1 */
+    out = pRecipTable[index];
+
+    /* calculation of reciprocal value */
+    /* running approximation for two iterations */
+    for (i = 0u; i < 2u; i++)
+    {
+      tempVal = (uint32_t) (((q63_t) in * out) >> 31);
+      tempVal = 0x7FFFFFFFu - tempVal;
+      /*      1.31 with exp 1 */
+      /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */
+      out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30);
+    }
+
+    /* write output */
+    *dst = out;
+
+    /* return num of signbits of out = 1/in value */
+    return (signBits + 1u);
+  }
+
+
+  /**
+   * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type.
+   */
+  static __INLINE uint32_t arm_recip_q15(
+  q15_t in,
+  q15_t * dst,
+  q15_t * pRecipTable)
+  {
+    q15_t out = 0;
+    uint32_t tempVal = 0;
+    uint32_t index = 0, i = 0;
+    uint32_t signBits = 0;
+
+    if(in > 0)
+    {
+      signBits = ((uint32_t)(__CLZ( in) - 17));
+    }
+    else
+    {
+      signBits = ((uint32_t)(__CLZ(-in) - 17));
+    }
+
+    /* Convert input sample to 1.15 format */
+    in = (in << signBits);
+
+    /* calculation of index for initial approximated Val */
+    index = (uint32_t)(in >>  8);
+    index = (index & INDEX_MASK);
+
+    /*      1.15 with exp 1  */
+    out = pRecipTable[index];
+
+    /* calculation of reciprocal value */
+    /* running approximation for two iterations */
+    for (i = 0u; i < 2u; i++)
+    {
+      tempVal = (uint32_t) (((q31_t) in * out) >> 15);
+      tempVal = 0x7FFFu - tempVal;
+      /*      1.15 with exp 1 */
+      out = (q15_t) (((q31_t) out * tempVal) >> 14);
+      /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */
+    }
+
+    /* write output */
+    *dst = out;
+
+    /* return num of signbits of out = 1/in value */
+    return (signBits + 1);
+  }
+
+
+  /*
+   * @brief C custom defined intrinisic function for only M0 processors
+   */
+#if defined(ARM_MATH_CM0_FAMILY)
+  static __INLINE q31_t __SSAT(
+  q31_t x,
+  uint32_t y)
+  {
+    int32_t posMax, negMin;
+    uint32_t i;
+
+    posMax = 1;
+    for (i = 0; i < (y - 1); i++)
+    {
+      posMax = posMax * 2;
+    }
+
+    if(x > 0)
+    {
+      posMax = (posMax - 1);
+
+      if(x > posMax)
+      {
+        x = posMax;
+      }
+    }
+    else
+    {
+      negMin = -posMax;
+
+      if(x < negMin)
+      {
+        x = negMin;
+      }
+    }
+    return (x);
+  }
+#endif /* end of ARM_MATH_CM0_FAMILY */
+
+
+  /*
+   * @brief C custom defined intrinsic function for M3 and M0 processors
+   */
+#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY)
+
+  /*
+   * @brief C custom defined QADD8 for M3 and M0 processors
+   */
+  static __INLINE uint32_t __QADD8(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s, t, u;
+
+    r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
+    s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
+    t = __SSAT(((((q31_t)x <<  8) >> 24) + (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;
+    u = __SSAT(((((q31_t)x      ) >> 24) + (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;
+
+    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QSUB8 for M3 and M0 processors
+   */
+  static __INLINE uint32_t __QSUB8(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s, t, u;
+
+    r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
+    s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
+    t = __SSAT(((((q31_t)x <<  8) >> 24) - (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;
+    u = __SSAT(((((q31_t)x      ) >> 24) - (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;
+
+    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QADD16 for M3 and M0 processors
+   */
+  static __INLINE uint32_t __QADD16(
+  uint32_t x,
+  uint32_t y)
+  {
+/*  q31_t r,     s;  without initialisation 'arm_offset_q15 test' fails  but 'intrinsic' tests pass! for armCC */
+    q31_t r = 0, s = 0;
+
+    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SHADD16 for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SHADD16(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+    s = (((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QSUB16 for M3 and M0 processors
+   */
+  static __INLINE uint32_t __QSUB16(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SHSUB16 for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SHSUB16(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+    s = (((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QASX for M3 and M0 processors
+   */
+  static __INLINE uint32_t __QASX(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
+    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SHASX for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SHASX(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+    s = (((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QSAX for M3 and M0 processors
+   */
+  static __INLINE uint32_t __QSAX(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
+    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SHSAX for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SHSAX(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+    s = (((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SMUSDX for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SMUSDX(
+  uint32_t x,
+  uint32_t y)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));
+  }
+
+  /*
+   * @brief C custom defined SMUADX for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SMUADX(
+  uint32_t x,
+  uint32_t y)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));
+  }
+
+
+  /*
+   * @brief C custom defined QADD for M3 and M0 processors
+   */
+  static __INLINE int32_t __QADD(
+  int32_t x,
+  int32_t y)
+  {
+    return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y)));
+  }
+
+
+  /*
+   * @brief C custom defined QSUB for M3 and M0 processors
+   */
+  static __INLINE int32_t __QSUB(
+  int32_t x,
+  int32_t y)
+  {
+    return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y)));
+  }
+
+
+  /*
+   * @brief C custom defined SMLAD for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SMLAD(
+  uint32_t x,
+  uint32_t y,
+  uint32_t sum)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ( ((q31_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMLADX for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SMLADX(
+  uint32_t x,
+  uint32_t y,
+  uint32_t sum)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ( ((q31_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMLSDX for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SMLSDX(
+  uint32_t x,
+  uint32_t y,
+  uint32_t sum)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ( ((q31_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMLALD for M3 and M0 processors
+   */
+  static __INLINE uint64_t __SMLALD(
+  uint32_t x,
+  uint32_t y,
+  uint64_t sum)
+  {
+/*  return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */
+    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ( ((q63_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMLALDX for M3 and M0 processors
+   */
+  static __INLINE uint64_t __SMLALDX(
+  uint32_t x,
+  uint32_t y,
+  uint64_t sum)
+  {
+/*  return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */
+    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ( ((q63_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMUAD for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SMUAD(
+  uint32_t x,
+  uint32_t y)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMUSD for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SMUSD(
+  uint32_t x,
+  uint32_t y)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) -
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));
+  }
+
+
+  /*
+   * @brief C custom defined SXTB16 for M3 and M0 processors
+   */
+  static __INLINE uint32_t __SXTB16(
+  uint32_t x)
+  {
+    return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) |
+                       ((((q31_t)x <<  8) >>  8) & (q31_t)0xFFFF0000)  ));
+  }
+
+#endif /* defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) */
+
+
+  /**
+   * @brief Instance structure for the Q7 FIR filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;        /**< number of filter coefficients in the filter. */
+    q7_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    q7_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
+  } arm_fir_instance_q7;
+
+  /**
+   * @brief Instance structure for the Q15 FIR filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;         /**< number of filter coefficients in the filter. */
+    q15_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    q15_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
+  } arm_fir_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 FIR filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;         /**< number of filter coefficients in the filter. */
+    q31_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    q31_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps. */
+  } arm_fir_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point FIR filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;     /**< number of filter coefficients in the filter. */
+    float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */
+  } arm_fir_instance_f32;
+
+
+  /**
+   * @brief Processing function for the Q7 FIR filter.
+   * @param[in]  S          points to an instance of the Q7 FIR filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_q7(
+  const arm_fir_instance_q7 * S,
+  q7_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q7 FIR filter.
+   * @param[in,out] S          points to an instance of the Q7 FIR structure.
+   * @param[in]     numTaps    Number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of samples that are processed.
+   */
+  void arm_fir_init_q7(
+  arm_fir_instance_q7 * S,
+  uint16_t numTaps,
+  q7_t * pCoeffs,
+  q7_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 FIR filter.
+   * @param[in]  S          points to an instance of the Q15 FIR structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_q15(
+  const arm_fir_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q15 FIR filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_fast_q15(
+  const arm_fir_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q15 FIR filter.
+   * @param[in,out] S          points to an instance of the Q15 FIR filter structure.
+   * @param[in]     numTaps    Number of filter coefficients in the filter. Must be even and greater than or equal to 4.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of samples that are processed at a time.
+   * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if
+   * <code>numTaps</code> is not a supported value.
+   */
+  arm_status arm_fir_init_q15(
+  arm_fir_instance_q15 * S,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 FIR filter.
+   * @param[in]  S          points to an instance of the Q31 FIR filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_q31(
+  const arm_fir_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q31 FIR structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_fast_q31(
+  const arm_fir_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q31 FIR filter.
+   * @param[in,out] S          points to an instance of the Q31 FIR structure.
+   * @param[in]     numTaps    Number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of samples that are processed at a time.
+   */
+  void arm_fir_init_q31(
+  arm_fir_instance_q31 * S,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the floating-point FIR filter.
+   * @param[in]  S          points to an instance of the floating-point FIR structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_f32(
+  const arm_fir_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the floating-point FIR filter.
+   * @param[in,out] S          points to an instance of the floating-point FIR filter structure.
+   * @param[in]     numTaps    Number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of samples that are processed at a time.
+   */
+  void arm_fir_init_f32(
+  arm_fir_instance_f32 * S,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q15 Biquad cascade filter.
+   */
+  typedef struct
+  {
+    int8_t numStages;        /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+    q15_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
+    q15_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */
+    int8_t postShift;        /**< Additional shift, in bits, applied to each output sample. */
+  } arm_biquad_casd_df1_inst_q15;
+
+  /**
+   * @brief Instance structure for the Q31 Biquad cascade filter.
+   */
+  typedef struct
+  {
+    uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+    q31_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
+    q31_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */
+    uint8_t postShift;       /**< Additional shift, in bits, applied to each output sample. */
+  } arm_biquad_casd_df1_inst_q31;
+
+  /**
+   * @brief Instance structure for the floating-point Biquad cascade filter.
+   */
+  typedef struct
+  {
+    uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+    float32_t *pState;       /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
+    float32_t *pCoeffs;      /**< Points to the array of coefficients.  The array is of length 5*numStages. */
+  } arm_biquad_casd_df1_inst_f32;
+
+
+  /**
+   * @brief Processing function for the Q15 Biquad cascade filter.
+   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_q15(
+  const arm_biquad_casd_df1_inst_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q15 Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the Q15 Biquad cascade structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format
+   */
+  void arm_biquad_cascade_df1_init_q15(
+  arm_biquad_casd_df1_inst_q15 * S,
+  uint8_t numStages,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  int8_t postShift);
+
+
+  /**
+   * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_fast_q15(
+  const arm_biquad_casd_df1_inst_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 Biquad cascade filter
+   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_q31(
+  const arm_biquad_casd_df1_inst_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_fast_q31(
+  const arm_biquad_casd_df1_inst_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q31 Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the Q31 Biquad cascade structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format
+   */
+  void arm_biquad_cascade_df1_init_q31(
+  arm_biquad_casd_df1_inst_q31 * S,
+  uint8_t numStages,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  int8_t postShift);
+
+
+  /**
+   * @brief Processing function for the floating-point Biquad cascade filter.
+   * @param[in]  S          points to an instance of the floating-point Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_f32(
+  const arm_biquad_casd_df1_inst_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the floating-point Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the floating-point Biquad cascade structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   */
+  void arm_biquad_cascade_df1_init_f32(
+  arm_biquad_casd_df1_inst_f32 * S,
+  uint8_t numStages,
+  float32_t * pCoeffs,
+  float32_t * pState);
+
+
+  /**
+   * @brief Instance structure for the floating-point matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    float32_t *pData;     /**< points to the data of the matrix. */
+  } arm_matrix_instance_f32;
+
+
+  /**
+   * @brief Instance structure for the floating-point matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    float64_t *pData;     /**< points to the data of the matrix. */
+  } arm_matrix_instance_f64;
+
+  /**
+   * @brief Instance structure for the Q15 matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    q15_t *pData;         /**< points to the data of the matrix. */
+  } arm_matrix_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    q31_t *pData;         /**< points to the data of the matrix. */
+  } arm_matrix_instance_q31;
+
+
+  /**
+   * @brief Floating-point matrix addition.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_add_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+  arm_matrix_instance_f32 * pDst);
+
+
+  /**
+   * @brief Q15 matrix addition.
+   * @param[in]   pSrcA  points to the first input matrix structure
+   * @param[in]   pSrcB  points to the second input matrix structure
+   * @param[out]  pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_add_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst);
+
+
+  /**
+   * @brief Q31 matrix addition.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_add_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst);
+
+
+  /**
+   * @brief Floating-point, complex, matrix multiplication.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_cmplx_mult_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+  arm_matrix_instance_f32 * pDst);
+
+
+  /**
+   * @brief Q15, complex,  matrix multiplication.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_cmplx_mult_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst,
+  q15_t * pScratch);
+
+
+  /**
+   * @brief Q31, complex, matrix multiplication.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_cmplx_mult_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst);
+
+
+  /**
+   * @brief Floating-point matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_trans_f32(
+  const arm_matrix_instance_f32 * pSrc,
+  arm_matrix_instance_f32 * pDst);
+
+
+  /**
+   * @brief Q15 matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_trans_q15(
+  const arm_matrix_instance_q15 * pSrc,
+  arm_matrix_instance_q15 * pDst);
+
+
+  /**
+   * @brief Q31 matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_trans_q31(
+  const arm_matrix_instance_q31 * pSrc,
+  arm_matrix_instance_q31 * pDst);
+
+
+  /**
+   * @brief Floating-point matrix multiplication
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_mult_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+  arm_matrix_instance_f32 * pDst);
+
+
+  /**
+   * @brief Q15 matrix multiplication
+   * @param[in]  pSrcA   points to the first input matrix structure
+   * @param[in]  pSrcB   points to the second input matrix structure
+   * @param[out] pDst    points to output matrix structure
+   * @param[in]  pState  points to the array for storing intermediate results
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_mult_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst,
+  q15_t * pState);
+
+
+  /**
+   * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA   points to the first input matrix structure
+   * @param[in]  pSrcB   points to the second input matrix structure
+   * @param[out] pDst    points to output matrix structure
+   * @param[in]  pState  points to the array for storing intermediate results
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_mult_fast_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst,
+  q15_t * pState);
+
+
+  /**
+   * @brief Q31 matrix multiplication
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_mult_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst);
+
+
+  /**
+   * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_mult_fast_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst);
+
+
+  /**
+   * @brief Floating-point matrix subtraction
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_sub_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+  arm_matrix_instance_f32 * pDst);
+
+
+  /**
+   * @brief Q15 matrix subtraction
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_sub_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+  arm_matrix_instance_q15 * pDst);
+
+
+  /**
+   * @brief Q31 matrix subtraction
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_sub_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+  arm_matrix_instance_q31 * pDst);
+
+
+  /**
+   * @brief Floating-point matrix scaling.
+   * @param[in]  pSrc   points to the input matrix
+   * @param[in]  scale  scale factor
+   * @param[out] pDst   points to the output matrix
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_scale_f32(
+  const arm_matrix_instance_f32 * pSrc,
+  float32_t scale,
+  arm_matrix_instance_f32 * pDst);
+
+
+  /**
+   * @brief Q15 matrix scaling.
+   * @param[in]  pSrc        points to input matrix
+   * @param[in]  scaleFract  fractional portion of the scale factor
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to output matrix
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_scale_q15(
+  const arm_matrix_instance_q15 * pSrc,
+  q15_t scaleFract,
+  int32_t shift,
+  arm_matrix_instance_q15 * pDst);
+
+
+  /**
+   * @brief Q31 matrix scaling.
+   * @param[in]  pSrc        points to input matrix
+   * @param[in]  scaleFract  fractional portion of the scale factor
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+  arm_status arm_mat_scale_q31(
+  const arm_matrix_instance_q31 * pSrc,
+  q31_t scaleFract,
+  int32_t shift,
+  arm_matrix_instance_q31 * pDst);
+
+
+  /**
+   * @brief  Q31 matrix initialization.
+   * @param[in,out] S         points to an instance of the floating-point matrix structure.
+   * @param[in]     nRows     number of rows in the matrix.
+   * @param[in]     nColumns  number of columns in the matrix.
+   * @param[in]     pData     points to the matrix data array.
+   */
+  void arm_mat_init_q31(
+  arm_matrix_instance_q31 * S,
+  uint16_t nRows,
+  uint16_t nColumns,
+  q31_t * pData);
+
+
+  /**
+   * @brief  Q15 matrix initialization.
+   * @param[in,out] S         points to an instance of the floating-point matrix structure.
+   * @param[in]     nRows     number of rows in the matrix.
+   * @param[in]     nColumns  number of columns in the matrix.
+   * @param[in]     pData     points to the matrix data array.
+   */
+  void arm_mat_init_q15(
+  arm_matrix_instance_q15 * S,
+  uint16_t nRows,
+  uint16_t nColumns,
+  q15_t * pData);
+
+
+  /**
+   * @brief  Floating-point matrix initialization.
+   * @param[in,out] S         points to an instance of the floating-point matrix structure.
+   * @param[in]     nRows     number of rows in the matrix.
+   * @param[in]     nColumns  number of columns in the matrix.
+   * @param[in]     pData     points to the matrix data array.
+   */
+  void arm_mat_init_f32(
+  arm_matrix_instance_f32 * S,
+  uint16_t nRows,
+  uint16_t nColumns,
+  float32_t * pData);
+
+
+
+  /**
+   * @brief Instance structure for the Q15 PID Control.
+   */
+  typedef struct
+  {
+    q15_t A0;           /**< The derived gain, A0 = Kp + Ki + Kd . */
+#ifdef ARM_MATH_CM0_FAMILY
+    q15_t A1;
+    q15_t A2;
+#else
+    q31_t A1;           /**< The derived gain A1 = -Kp - 2Kd | Kd.*/
+#endif
+    q15_t state[3];     /**< The state array of length 3. */
+    q15_t Kp;           /**< The proportional gain. */
+    q15_t Ki;           /**< The integral gain. */
+    q15_t Kd;           /**< The derivative gain. */
+  } arm_pid_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 PID Control.
+   */
+  typedef struct
+  {
+    q31_t A0;            /**< The derived gain, A0 = Kp + Ki + Kd . */
+    q31_t A1;            /**< The derived gain, A1 = -Kp - 2Kd. */
+    q31_t A2;            /**< The derived gain, A2 = Kd . */
+    q31_t state[3];      /**< The state array of length 3. */
+    q31_t Kp;            /**< The proportional gain. */
+    q31_t Ki;            /**< The integral gain. */
+    q31_t Kd;            /**< The derivative gain. */
+  } arm_pid_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point PID Control.
+   */
+  typedef struct
+  {
+    float32_t A0;          /**< The derived gain, A0 = Kp + Ki + Kd . */
+    float32_t A1;          /**< The derived gain, A1 = -Kp - 2Kd. */
+    float32_t A2;          /**< The derived gain, A2 = Kd . */
+    float32_t state[3];    /**< The state array of length 3. */
+    float32_t Kp;          /**< The proportional gain. */
+    float32_t Ki;          /**< The integral gain. */
+    float32_t Kd;          /**< The derivative gain. */
+  } arm_pid_instance_f32;
+
+
+
+  /**
+   * @brief  Initialization function for the floating-point PID Control.
+   * @param[in,out] S               points to an instance of the PID structure.
+   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
+   */
+  void arm_pid_init_f32(
+  arm_pid_instance_f32 * S,
+  int32_t resetStateFlag);
+
+
+  /**
+   * @brief  Reset function for the floating-point PID Control.
+   * @param[in,out] S  is an instance of the floating-point PID Control structure
+   */
+  void arm_pid_reset_f32(
+  arm_pid_instance_f32 * S);
+
+
+  /**
+   * @brief  Initialization function for the Q31 PID Control.
+   * @param[in,out] S               points to an instance of the Q15 PID structure.
+   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
+   */
+  void arm_pid_init_q31(
+  arm_pid_instance_q31 * S,
+  int32_t resetStateFlag);
+
+
+  /**
+   * @brief  Reset function for the Q31 PID Control.
+   * @param[in,out] S   points to an instance of the Q31 PID Control structure
+   */
+
+  void arm_pid_reset_q31(
+  arm_pid_instance_q31 * S);
+
+
+  /**
+   * @brief  Initialization function for the Q15 PID Control.
+   * @param[in,out] S               points to an instance of the Q15 PID structure.
+   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
+   */
+  void arm_pid_init_q15(
+  arm_pid_instance_q15 * S,
+  int32_t resetStateFlag);
+
+
+  /**
+   * @brief  Reset function for the Q15 PID Control.
+   * @param[in,out] S  points to an instance of the q15 PID Control structure
+   */
+  void arm_pid_reset_q15(
+  arm_pid_instance_q15 * S);
+
+
+  /**
+   * @brief Instance structure for the floating-point Linear Interpolate function.
+   */
+  typedef struct
+  {
+    uint32_t nValues;           /**< nValues */
+    float32_t x1;               /**< x1 */
+    float32_t xSpacing;         /**< xSpacing */
+    float32_t *pYData;          /**< pointer to the table of Y values */
+  } arm_linear_interp_instance_f32;
+
+  /**
+   * @brief Instance structure for the floating-point bilinear interpolation function.
+   */
+  typedef struct
+  {
+    uint16_t numRows;   /**< number of rows in the data table. */
+    uint16_t numCols;   /**< number of columns in the data table. */
+    float32_t *pData;   /**< points to the data table. */
+  } arm_bilinear_interp_instance_f32;
+
+   /**
+   * @brief Instance structure for the Q31 bilinear interpolation function.
+   */
+  typedef struct
+  {
+    uint16_t numRows;   /**< number of rows in the data table. */
+    uint16_t numCols;   /**< number of columns in the data table. */
+    q31_t *pData;       /**< points to the data table. */
+  } arm_bilinear_interp_instance_q31;
+
+   /**
+   * @brief Instance structure for the Q15 bilinear interpolation function.
+   */
+  typedef struct
+  {
+    uint16_t numRows;   /**< number of rows in the data table. */
+    uint16_t numCols;   /**< number of columns in the data table. */
+    q15_t *pData;       /**< points to the data table. */
+  } arm_bilinear_interp_instance_q15;
+
+   /**
+   * @brief Instance structure for the Q15 bilinear interpolation function.
+   */
+  typedef struct
+  {
+    uint16_t numRows;   /**< number of rows in the data table. */
+    uint16_t numCols;   /**< number of columns in the data table. */
+    q7_t *pData;        /**< points to the data table. */
+  } arm_bilinear_interp_instance_q7;
+
+
+  /**
+   * @brief Q7 vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_q7(
+  q7_t * pSrcA,
+  q7_t * pSrcB,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q15 vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q31 vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Floating-point vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q15 CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                 /**< length of the FFT. */
+    uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+    uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    q15_t *pTwiddle;                 /**< points to the Sin twiddle factor table. */
+    uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
+    uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+  } arm_cfft_radix2_instance_q15;
+
+/* Deprecated */
+  arm_status arm_cfft_radix2_init_q15(
+  arm_cfft_radix2_instance_q15 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix2_q15(
+  const arm_cfft_radix2_instance_q15 * S,
+  q15_t * pSrc);
+
+
+  /**
+   * @brief Instance structure for the Q15 CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                 /**< length of the FFT. */
+    uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+    uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    q15_t *pTwiddle;                 /**< points to the twiddle factor table. */
+    uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
+    uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+  } arm_cfft_radix4_instance_q15;
+
+/* Deprecated */
+  arm_status arm_cfft_radix4_init_q15(
+  arm_cfft_radix4_instance_q15 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix4_q15(
+  const arm_cfft_radix4_instance_q15 * S,
+  q15_t * pSrc);
+
+  /**
+   * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                 /**< length of the FFT. */
+    uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+    uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    q31_t *pTwiddle;                 /**< points to the Twiddle factor table. */
+    uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
+    uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+  } arm_cfft_radix2_instance_q31;
+
+/* Deprecated */
+  arm_status arm_cfft_radix2_init_q31(
+  arm_cfft_radix2_instance_q31 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix2_q31(
+  const arm_cfft_radix2_instance_q31 * S,
+  q31_t * pSrc);
+
+  /**
+   * @brief Instance structure for the Q31 CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                 /**< length of the FFT. */
+    uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+    uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    q31_t *pTwiddle;                 /**< points to the twiddle factor table. */
+    uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
+    uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+  } arm_cfft_radix4_instance_q31;
+
+/* Deprecated */
+  void arm_cfft_radix4_q31(
+  const arm_cfft_radix4_instance_q31 * S,
+  q31_t * pSrc);
+
+/* Deprecated */
+  arm_status arm_cfft_radix4_init_q31(
+  arm_cfft_radix4_instance_q31 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag);
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                   /**< length of the FFT. */
+    uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+    uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    float32_t *pTwiddle;               /**< points to the Twiddle factor table. */
+    uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
+    uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+    float32_t onebyfftLen;             /**< value of 1/fftLen. */
+  } arm_cfft_radix2_instance_f32;
+
+/* Deprecated */
+  arm_status arm_cfft_radix2_init_f32(
+  arm_cfft_radix2_instance_f32 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix2_f32(
+  const arm_cfft_radix2_instance_f32 * S,
+  float32_t * pSrc);
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                   /**< length of the FFT. */
+    uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+    uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    float32_t *pTwiddle;               /**< points to the Twiddle factor table. */
+    uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
+    uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+    float32_t onebyfftLen;             /**< value of 1/fftLen. */
+  } arm_cfft_radix4_instance_f32;
+
+/* Deprecated */
+  arm_status arm_cfft_radix4_init_f32(
+  arm_cfft_radix4_instance_f32 * S,
+  uint16_t fftLen,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix4_f32(
+  const arm_cfft_radix4_instance_f32 * S,
+  float32_t * pSrc);
+
+  /**
+   * @brief Instance structure for the fixed-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                   /**< length of the FFT. */
+    const q15_t *pTwiddle;             /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
+    uint16_t bitRevLength;             /**< bit reversal table length. */
+  } arm_cfft_instance_q15;
+
+void arm_cfft_q15(
+    const arm_cfft_instance_q15 * S,
+    q15_t * p1,
+    uint8_t ifftFlag,
+    uint8_t bitReverseFlag);
+
+  /**
+   * @brief Instance structure for the fixed-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                   /**< length of the FFT. */
+    const q31_t *pTwiddle;             /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
+    uint16_t bitRevLength;             /**< bit reversal table length. */
+  } arm_cfft_instance_q31;
+
+void arm_cfft_q31(
+    const arm_cfft_instance_q31 * S,
+    q31_t * p1,
+    uint8_t ifftFlag,
+    uint8_t bitReverseFlag);
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+    uint16_t fftLen;                   /**< length of the FFT. */
+    const float32_t *pTwiddle;         /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
+    uint16_t bitRevLength;             /**< bit reversal table length. */
+  } arm_cfft_instance_f32;
+
+  void arm_cfft_f32(
+  const arm_cfft_instance_f32 * S,
+  float32_t * p1,
+  uint8_t ifftFlag,
+  uint8_t bitReverseFlag);
+
+  /**
+   * @brief Instance structure for the Q15 RFFT/RIFFT function.
+   */
+  typedef struct
+  {
+    uint32_t fftLenReal;                      /**< length of the real FFT. */
+    uint8_t ifftFlagR;                        /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
+    uint8_t bitReverseFlagR;                  /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
+    uint32_t twidCoefRModifier;               /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    q15_t *pTwiddleAReal;                     /**< points to the real twiddle factor table. */
+    q15_t *pTwiddleBReal;                     /**< points to the imag twiddle factor table. */
+    const arm_cfft_instance_q15 *pCfft;       /**< points to the complex FFT instance. */
+  } arm_rfft_instance_q15;
+
+  arm_status arm_rfft_init_q15(
+  arm_rfft_instance_q15 * S,
+  uint32_t fftLenReal,
+  uint32_t ifftFlagR,
+  uint32_t bitReverseFlag);
+
+  void arm_rfft_q15(
+  const arm_rfft_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst);
+
+  /**
+   * @brief Instance structure for the Q31 RFFT/RIFFT function.
+   */
+  typedef struct
+  {
+    uint32_t fftLenReal;                        /**< length of the real FFT. */
+    uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
+    uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
+    uint32_t twidCoefRModifier;                 /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    q31_t *pTwiddleAReal;                       /**< points to the real twiddle factor table. */
+    q31_t *pTwiddleBReal;                       /**< points to the imag twiddle factor table. */
+    const arm_cfft_instance_q31 *pCfft;         /**< points to the complex FFT instance. */
+  } arm_rfft_instance_q31;
+
+  arm_status arm_rfft_init_q31(
+  arm_rfft_instance_q31 * S,
+  uint32_t fftLenReal,
+  uint32_t ifftFlagR,
+  uint32_t bitReverseFlag);
+
+  void arm_rfft_q31(
+  const arm_rfft_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst);
+
+  /**
+   * @brief Instance structure for the floating-point RFFT/RIFFT function.
+   */
+  typedef struct
+  {
+    uint32_t fftLenReal;                        /**< length of the real FFT. */
+    uint16_t fftLenBy2;                         /**< length of the complex FFT. */
+    uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
+    uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
+    uint32_t twidCoefRModifier;                     /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    float32_t *pTwiddleAReal;                   /**< points to the real twiddle factor table. */
+    float32_t *pTwiddleBReal;                   /**< points to the imag twiddle factor table. */
+    arm_cfft_radix4_instance_f32 *pCfft;        /**< points to the complex FFT instance. */
+  } arm_rfft_instance_f32;
+
+  arm_status arm_rfft_init_f32(
+  arm_rfft_instance_f32 * S,
+  arm_cfft_radix4_instance_f32 * S_CFFT,
+  uint32_t fftLenReal,
+  uint32_t ifftFlagR,
+  uint32_t bitReverseFlag);
+
+  void arm_rfft_f32(
+  const arm_rfft_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst);
+
+  /**
+   * @brief Instance structure for the floating-point RFFT/RIFFT function.
+   */
+typedef struct
+  {
+    arm_cfft_instance_f32 Sint;      /**< Internal CFFT structure. */
+    uint16_t fftLenRFFT;             /**< length of the real sequence */
+    float32_t * pTwiddleRFFT;        /**< Twiddle factors real stage  */
+  } arm_rfft_fast_instance_f32 ;
+
+arm_status arm_rfft_fast_init_f32 (
+   arm_rfft_fast_instance_f32 * S,
+   uint16_t fftLen);
+
+void arm_rfft_fast_f32(
+  arm_rfft_fast_instance_f32 * S,
+  float32_t * p, float32_t * pOut,
+  uint8_t ifftFlag);
+
+  /**
+   * @brief Instance structure for the floating-point DCT4/IDCT4 function.
+   */
+  typedef struct
+  {
+    uint16_t N;                          /**< length of the DCT4. */
+    uint16_t Nby2;                       /**< half of the length of the DCT4. */
+    float32_t normalize;                 /**< normalizing factor. */
+    float32_t *pTwiddle;                 /**< points to the twiddle factor table. */
+    float32_t *pCosFactor;               /**< points to the cosFactor table. */
+    arm_rfft_instance_f32 *pRfft;        /**< points to the real FFT instance. */
+    arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */
+  } arm_dct4_instance_f32;
+
+
+  /**
+   * @brief  Initialization function for the floating-point DCT4/IDCT4.
+   * @param[in,out] S          points to an instance of floating-point DCT4/IDCT4 structure.
+   * @param[in]     S_RFFT     points to an instance of floating-point RFFT/RIFFT structure.
+   * @param[in]     S_CFFT     points to an instance of floating-point CFFT/CIFFT structure.
+   * @param[in]     N          length of the DCT4.
+   * @param[in]     Nby2       half of the length of the DCT4.
+   * @param[in]     normalize  normalizing factor.
+   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.
+   */
+  arm_status arm_dct4_init_f32(
+  arm_dct4_instance_f32 * S,
+  arm_rfft_instance_f32 * S_RFFT,
+  arm_cfft_radix4_instance_f32 * S_CFFT,
+  uint16_t N,
+  uint16_t Nby2,
+  float32_t normalize);
+
+
+  /**
+   * @brief Processing function for the floating-point DCT4/IDCT4.
+   * @param[in]     S              points to an instance of the floating-point DCT4/IDCT4 structure.
+   * @param[in]     pState         points to state buffer.
+   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
+   */
+  void arm_dct4_f32(
+  const arm_dct4_instance_f32 * S,
+  float32_t * pState,
+  float32_t * pInlineBuffer);
+
+
+  /**
+   * @brief Instance structure for the Q31 DCT4/IDCT4 function.
+   */
+  typedef struct
+  {
+    uint16_t N;                          /**< length of the DCT4. */
+    uint16_t Nby2;                       /**< half of the length of the DCT4. */
+    q31_t normalize;                     /**< normalizing factor. */
+    q31_t *pTwiddle;                     /**< points to the twiddle factor table. */
+    q31_t *pCosFactor;                   /**< points to the cosFactor table. */
+    arm_rfft_instance_q31 *pRfft;        /**< points to the real FFT instance. */
+    arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */
+  } arm_dct4_instance_q31;
+
+
+  /**
+   * @brief  Initialization function for the Q31 DCT4/IDCT4.
+   * @param[in,out] S          points to an instance of Q31 DCT4/IDCT4 structure.
+   * @param[in]     S_RFFT     points to an instance of Q31 RFFT/RIFFT structure
+   * @param[in]     S_CFFT     points to an instance of Q31 CFFT/CIFFT structure
+   * @param[in]     N          length of the DCT4.
+   * @param[in]     Nby2       half of the length of the DCT4.
+   * @param[in]     normalize  normalizing factor.
+   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
+   */
+  arm_status arm_dct4_init_q31(
+  arm_dct4_instance_q31 * S,
+  arm_rfft_instance_q31 * S_RFFT,
+  arm_cfft_radix4_instance_q31 * S_CFFT,
+  uint16_t N,
+  uint16_t Nby2,
+  q31_t normalize);
+
+
+  /**
+   * @brief Processing function for the Q31 DCT4/IDCT4.
+   * @param[in]     S              points to an instance of the Q31 DCT4 structure.
+   * @param[in]     pState         points to state buffer.
+   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
+   */
+  void arm_dct4_q31(
+  const arm_dct4_instance_q31 * S,
+  q31_t * pState,
+  q31_t * pInlineBuffer);
+
+
+  /**
+   * @brief Instance structure for the Q15 DCT4/IDCT4 function.
+   */
+  typedef struct
+  {
+    uint16_t N;                          /**< length of the DCT4. */
+    uint16_t Nby2;                       /**< half of the length of the DCT4. */
+    q15_t normalize;                     /**< normalizing factor. */
+    q15_t *pTwiddle;                     /**< points to the twiddle factor table. */
+    q15_t *pCosFactor;                   /**< points to the cosFactor table. */
+    arm_rfft_instance_q15 *pRfft;        /**< points to the real FFT instance. */
+    arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */
+  } arm_dct4_instance_q15;
+
+
+  /**
+   * @brief  Initialization function for the Q15 DCT4/IDCT4.
+   * @param[in,out] S          points to an instance of Q15 DCT4/IDCT4 structure.
+   * @param[in]     S_RFFT     points to an instance of Q15 RFFT/RIFFT structure.
+   * @param[in]     S_CFFT     points to an instance of Q15 CFFT/CIFFT structure.
+   * @param[in]     N          length of the DCT4.
+   * @param[in]     Nby2       half of the length of the DCT4.
+   * @param[in]     normalize  normalizing factor.
+   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
+   */
+  arm_status arm_dct4_init_q15(
+  arm_dct4_instance_q15 * S,
+  arm_rfft_instance_q15 * S_RFFT,
+  arm_cfft_radix4_instance_q15 * S_CFFT,
+  uint16_t N,
+  uint16_t Nby2,
+  q15_t normalize);
+
+
+  /**
+   * @brief Processing function for the Q15 DCT4/IDCT4.
+   * @param[in]     S              points to an instance of the Q15 DCT4 structure.
+   * @param[in]     pState         points to state buffer.
+   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
+   */
+  void arm_dct4_q15(
+  const arm_dct4_instance_q15 * S,
+  q15_t * pState,
+  q15_t * pInlineBuffer);
+
+
+  /**
+   * @brief Floating-point vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q7 vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_q7(
+  q7_t * pSrcA,
+  q7_t * pSrcB,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q15 vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q31 vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Floating-point vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q7 vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_q7(
+  q7_t * pSrcA,
+  q7_t * pSrcB,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q15 vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q31 vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Multiplies a floating-point vector by a scalar.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  scale      scale factor to be applied
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_scale_f32(
+  float32_t * pSrc,
+  float32_t scale,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Multiplies a Q7 vector by a scalar.
+   * @param[in]  pSrc        points to the input vector
+   * @param[in]  scaleFract  fractional portion of the scale value
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to the output vector
+   * @param[in]  blockSize   number of samples in the vector
+   */
+  void arm_scale_q7(
+  q7_t * pSrc,
+  q7_t scaleFract,
+  int8_t shift,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Multiplies a Q15 vector by a scalar.
+   * @param[in]  pSrc        points to the input vector
+   * @param[in]  scaleFract  fractional portion of the scale value
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to the output vector
+   * @param[in]  blockSize   number of samples in the vector
+   */
+  void arm_scale_q15(
+  q15_t * pSrc,
+  q15_t scaleFract,
+  int8_t shift,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Multiplies a Q31 vector by a scalar.
+   * @param[in]  pSrc        points to the input vector
+   * @param[in]  scaleFract  fractional portion of the scale value
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to the output vector
+   * @param[in]  blockSize   number of samples in the vector
+   */
+  void arm_scale_q31(
+  q31_t * pSrc,
+  q31_t scaleFract,
+  int8_t shift,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q7 vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_q7(
+  q7_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Floating-point vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q15 vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Q31 vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Dot product of floating-point vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  uint32_t blockSize,
+  float32_t * result);
+
+
+  /**
+   * @brief Dot product of Q7 vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_q7(
+  q7_t * pSrcA,
+  q7_t * pSrcB,
+  uint32_t blockSize,
+  q31_t * result);
+
+
+  /**
+   * @brief Dot product of Q15 vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  uint32_t blockSize,
+  q63_t * result);
+
+
+  /**
+   * @brief Dot product of Q31 vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  uint32_t blockSize,
+  q63_t * result);
+
+
+  /**
+   * @brief  Shifts the elements of a Q7 vector a specified number of bits.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_shift_q7(
+  q7_t * pSrc,
+  int8_t shiftBits,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Shifts the elements of a Q15 vector a specified number of bits.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_shift_q15(
+  q15_t * pSrc,
+  int8_t shiftBits,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Shifts the elements of a Q31 vector a specified number of bits.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_shift_q31(
+  q31_t * pSrc,
+  int8_t shiftBits,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Adds a constant offset to a floating-point vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_f32(
+  float32_t * pSrc,
+  float32_t offset,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Adds a constant offset to a Q7 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_q7(
+  q7_t * pSrc,
+  q7_t offset,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Adds a constant offset to a Q15 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_q15(
+  q15_t * pSrc,
+  q15_t offset,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Adds a constant offset to a Q31 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_q31(
+  q31_t * pSrc,
+  q31_t offset,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Negates the elements of a floating-point vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Negates the elements of a Q7 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_q7(
+  q7_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Negates the elements of a Q15 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Negates the elements of a Q31 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Copies the elements of a floating-point vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_copy_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Copies the elements of a Q7 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_copy_q7(
+  q7_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Copies the elements of a Q15 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_copy_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Copies the elements of a Q31 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_copy_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Fills a constant value into a floating-point vector.
+   * @param[in]  value      input value to be filled
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_fill_f32(
+  float32_t value,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Fills a constant value into a Q7 vector.
+   * @param[in]  value      input value to be filled
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_fill_q7(
+  q7_t value,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Fills a constant value into a Q15 vector.
+   * @param[in]  value      input value to be filled
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_fill_q15(
+  q15_t value,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Fills a constant value into a Q31 vector.
+   * @param[in]  value      input value to be filled
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_fill_q31(
+  q31_t value,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+/**
+ * @brief Convolution of floating-point sequences.
+ * @param[in]  pSrcA    points to the first input sequence.
+ * @param[in]  srcALen  length of the first input sequence.
+ * @param[in]  pSrcB    points to the second input sequence.
+ * @param[in]  srcBLen  length of the second input sequence.
+ * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.
+ */
+  void arm_conv_f32(
+  float32_t * pSrcA,
+  uint32_t srcALen,
+  float32_t * pSrcB,
+  uint32_t srcBLen,
+  float32_t * pDst);
+
+
+  /**
+   * @brief Convolution of Q15 sequences.
+   * @param[in]  pSrcA      points to the first input sequence.
+   * @param[in]  srcALen    length of the first input sequence.
+   * @param[in]  pSrcB      points to the second input sequence.
+   * @param[in]  srcBLen    length of the second input sequence.
+   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
+   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).
+   */
+  void arm_conv_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  q15_t * pScratch1,
+  q15_t * pScratch2);
+
+
+/**
+ * @brief Convolution of Q15 sequences.
+ * @param[in]  pSrcA    points to the first input sequence.
+ * @param[in]  srcALen  length of the first input sequence.
+ * @param[in]  pSrcB    points to the second input sequence.
+ * @param[in]  srcBLen  length of the second input sequence.
+ * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.
+ */
+  void arm_conv_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst);
+
+
+  /**
+   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
+   */
+  void arm_conv_fast_q15(
+          q15_t * pSrcA,
+          uint32_t srcALen,
+          q15_t * pSrcB,
+          uint32_t srcBLen,
+          q15_t * pDst);
+
+
+  /**
+   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA      points to the first input sequence.
+   * @param[in]  srcALen    length of the first input sequence.
+   * @param[in]  pSrcB      points to the second input sequence.
+   * @param[in]  srcBLen    length of the second input sequence.
+   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
+   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).
+   */
+  void arm_conv_fast_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  q15_t * pScratch1,
+  q15_t * pScratch2);
+
+
+  /**
+   * @brief Convolution of Q31 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
+   */
+  void arm_conv_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst);
+
+
+  /**
+   * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
+   */
+  void arm_conv_fast_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst);
+
+
+    /**
+   * @brief Convolution of Q7 sequences.
+   * @param[in]  pSrcA      points to the first input sequence.
+   * @param[in]  srcALen    length of the first input sequence.
+   * @param[in]  pSrcB      points to the second input sequence.
+   * @param[in]  srcBLen    length of the second input sequence.
+   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
+   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+   */
+  void arm_conv_opt_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  q15_t * pScratch1,
+  q15_t * pScratch2);
+
+
+  /**
+   * @brief Convolution of Q7 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
+   */
+  void arm_conv_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst);
+
+
+  /**
+   * @brief Partial convolution of floating-point sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_f32(
+  float32_t * pSrcA,
+  uint32_t srcALen,
+  float32_t * pSrcB,
+  uint32_t srcBLen,
+  float32_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q15 sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2);
+
+
+  /**
+   * @brief Partial convolution of Q15 sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_fast_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_fast_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2);
+
+
+  /**
+   * @brief Partial convolution of Q31 sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_fast_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q7 sequences
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @param[in]  pScratch1   points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2   points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_opt_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints,
+  q15_t * pScratch1,
+  q15_t * pScratch2);
+
+
+/**
+   * @brief Partial convolution of Q7 sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  uint32_t firstIndex,
+  uint32_t numPoints);
+
+
+  /**
+   * @brief Instance structure for the Q15 FIR decimator.
+   */
+  typedef struct
+  {
+    uint8_t M;                  /**< decimation factor. */
+    uint16_t numTaps;           /**< number of coefficients in the filter. */
+    q15_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/
+    q15_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+  } arm_fir_decimate_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 FIR decimator.
+   */
+  typedef struct
+  {
+    uint8_t M;                  /**< decimation factor. */
+    uint16_t numTaps;           /**< number of coefficients in the filter. */
+    q31_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/
+    q31_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+  } arm_fir_decimate_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point FIR decimator.
+   */
+  typedef struct
+  {
+    uint8_t M;                  /**< decimation factor. */
+    uint16_t numTaps;           /**< number of coefficients in the filter. */
+    float32_t *pCoeffs;         /**< points to the coefficient array. The array is of length numTaps.*/
+    float32_t *pState;          /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+  } arm_fir_decimate_instance_f32;
+
+
+  /**
+   * @brief Processing function for the floating-point FIR decimator.
+   * @param[in]  S          points to an instance of the floating-point FIR decimator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_decimate_f32(
+  const arm_fir_decimate_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the floating-point FIR decimator.
+   * @param[in,out] S          points to an instance of the floating-point FIR decimator structure.
+   * @param[in]     numTaps    number of coefficients in the filter.
+   * @param[in]     M          decimation factor.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * <code>blockSize</code> is not a multiple of <code>M</code>.
+   */
+  arm_status arm_fir_decimate_init_f32(
+  arm_fir_decimate_instance_f32 * S,
+  uint16_t numTaps,
+  uint8_t M,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 FIR decimator.
+   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_decimate_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_decimate_fast_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q15 FIR decimator.
+   * @param[in,out] S          points to an instance of the Q15 FIR decimator structure.
+   * @param[in]     numTaps    number of coefficients in the filter.
+   * @param[in]     M          decimation factor.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * <code>blockSize</code> is not a multiple of <code>M</code>.
+   */
+  arm_status arm_fir_decimate_init_q15(
+  arm_fir_decimate_instance_q15 * S,
+  uint16_t numTaps,
+  uint8_t M,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 FIR decimator.
+   * @param[in]  S     points to an instance of the Q31 FIR decimator structure.
+   * @param[in]  pSrc  points to the block of input data.
+   * @param[out] pDst  points to the block of output data
+   * @param[in] blockSize number of input samples to process per call.
+   */
+  void arm_fir_decimate_q31(
+  const arm_fir_decimate_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+  /**
+   * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q31 FIR decimator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_decimate_fast_q31(
+  arm_fir_decimate_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q31 FIR decimator.
+   * @param[in,out] S          points to an instance of the Q31 FIR decimator structure.
+   * @param[in]     numTaps    number of coefficients in the filter.
+   * @param[in]     M          decimation factor.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * <code>blockSize</code> is not a multiple of <code>M</code>.
+   */
+  arm_status arm_fir_decimate_init_q31(
+  arm_fir_decimate_instance_q31 * S,
+  uint16_t numTaps,
+  uint8_t M,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q15 FIR interpolator.
+   */
+  typedef struct
+  {
+    uint8_t L;                      /**< upsample factor. */
+    uint16_t phaseLength;           /**< length of each polyphase filter component. */
+    q15_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */
+    q15_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */
+  } arm_fir_interpolate_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 FIR interpolator.
+   */
+  typedef struct
+  {
+    uint8_t L;                      /**< upsample factor. */
+    uint16_t phaseLength;           /**< length of each polyphase filter component. */
+    q31_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */
+    q31_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */
+  } arm_fir_interpolate_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point FIR interpolator.
+   */
+  typedef struct
+  {
+    uint8_t L;                     /**< upsample factor. */
+    uint16_t phaseLength;          /**< length of each polyphase filter component. */
+    float32_t *pCoeffs;            /**< points to the coefficient array. The array is of length L*phaseLength. */
+    float32_t *pState;             /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */
+  } arm_fir_interpolate_instance_f32;
+
+
+  /**
+   * @brief Processing function for the Q15 FIR interpolator.
+   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_interpolate_q15(
+  const arm_fir_interpolate_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q15 FIR interpolator.
+   * @param[in,out] S          points to an instance of the Q15 FIR interpolator structure.
+   * @param[in]     L          upsample factor.
+   * @param[in]     numTaps    number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficient buffer.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
+   */
+  arm_status arm_fir_interpolate_init_q15(
+  arm_fir_interpolate_instance_q15 * S,
+  uint8_t L,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 FIR interpolator.
+   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_interpolate_q31(
+  const arm_fir_interpolate_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q31 FIR interpolator.
+   * @param[in,out] S          points to an instance of the Q31 FIR interpolator structure.
+   * @param[in]     L          upsample factor.
+   * @param[in]     numTaps    number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficient buffer.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
+   */
+  arm_status arm_fir_interpolate_init_q31(
+  arm_fir_interpolate_instance_q31 * S,
+  uint8_t L,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the floating-point FIR interpolator.
+   * @param[in]  S          points to an instance of the floating-point FIR interpolator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_interpolate_f32(
+  const arm_fir_interpolate_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the floating-point FIR interpolator.
+   * @param[in,out] S          points to an instance of the floating-point FIR interpolator structure.
+   * @param[in]     L          upsample factor.
+   * @param[in]     numTaps    number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficient buffer.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
+   */
+  arm_status arm_fir_interpolate_init_f32(
+  arm_fir_interpolate_instance_f32 * S,
+  uint8_t L,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the high precision Q31 Biquad cascade filter.
+   */
+  typedef struct
+  {
+    uint8_t numStages;       /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+    q63_t *pState;           /**< points to the array of state coefficients.  The array is of length 4*numStages. */
+    q31_t *pCoeffs;          /**< points to the array of coefficients.  The array is of length 5*numStages. */
+    uint8_t postShift;       /**< additional shift, in bits, applied to each output sample. */
+  } arm_biquad_cas_df1_32x64_ins_q31;
+
+
+  /**
+   * @param[in]  S          points to an instance of the high precision Q31 Biquad cascade filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cas_df1_32x64_q31(
+  const arm_biquad_cas_df1_32x64_ins_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @param[in,out] S          points to an instance of the high precision Q31 Biquad cascade filter structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     postShift  shift to be applied to the output. Varies according to the coefficients format
+   */
+  void arm_biquad_cas_df1_32x64_init_q31(
+  arm_biquad_cas_df1_32x64_ins_q31 * S,
+  uint8_t numStages,
+  q31_t * pCoeffs,
+  q63_t * pState,
+  uint8_t postShift);
+
+
+  /**
+   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
+   */
+  typedef struct
+  {
+    uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+    float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */
+    float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
+  } arm_biquad_cascade_df2T_instance_f32;
+
+  /**
+   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
+   */
+  typedef struct
+  {
+    uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+    float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 4*numStages. */
+    float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
+  } arm_biquad_cascade_stereo_df2T_instance_f32;
+
+  /**
+   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
+   */
+  typedef struct
+  {
+    uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+    float64_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */
+    float64_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
+  } arm_biquad_cascade_df2T_instance_f64;
+
+
+  /**
+   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in]  S          points to an instance of the filter data structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df2T_f32(
+  const arm_biquad_cascade_df2T_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels
+   * @param[in]  S          points to an instance of the filter data structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_stereo_df2T_f32(
+  const arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in]  S          points to an instance of the filter data structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df2T_f64(
+  const arm_biquad_cascade_df2T_instance_f64 * S,
+  float64_t * pSrc,
+  float64_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the filter data structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   */
+  void arm_biquad_cascade_df2T_init_f32(
+  arm_biquad_cascade_df2T_instance_f32 * S,
+  uint8_t numStages,
+  float32_t * pCoeffs,
+  float32_t * pState);
+
+
+  /**
+   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the filter data structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   */
+  void arm_biquad_cascade_stereo_df2T_init_f32(
+  arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+  uint8_t numStages,
+  float32_t * pCoeffs,
+  float32_t * pState);
+
+
+  /**
+   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the filter data structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   */
+  void arm_biquad_cascade_df2T_init_f64(
+  arm_biquad_cascade_df2T_instance_f64 * S,
+  uint8_t numStages,
+  float64_t * pCoeffs,
+  float64_t * pState);
+
+
+  /**
+   * @brief Instance structure for the Q15 FIR lattice filter.
+   */
+  typedef struct
+  {
+    uint16_t numStages;                  /**< number of filter stages. */
+    q15_t *pState;                       /**< points to the state variable array. The array is of length numStages. */
+    q15_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */
+  } arm_fir_lattice_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 FIR lattice filter.
+   */
+  typedef struct
+  {
+    uint16_t numStages;                  /**< number of filter stages. */
+    q31_t *pState;                       /**< points to the state variable array. The array is of length numStages. */
+    q31_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */
+  } arm_fir_lattice_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point FIR lattice filter.
+   */
+  typedef struct
+  {
+    uint16_t numStages;                  /**< number of filter stages. */
+    float32_t *pState;                   /**< points to the state variable array. The array is of length numStages. */
+    float32_t *pCoeffs;                  /**< points to the coefficient array. The array is of length numStages. */
+  } arm_fir_lattice_instance_f32;
+
+
+  /**
+   * @brief Initialization function for the Q15 FIR lattice filter.
+   * @param[in] S          points to an instance of the Q15 FIR lattice structure.
+   * @param[in] numStages  number of filter stages.
+   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
+   * @param[in] pState     points to the state buffer.  The array is of length numStages.
+   */
+  void arm_fir_lattice_init_q15(
+  arm_fir_lattice_instance_q15 * S,
+  uint16_t numStages,
+  q15_t * pCoeffs,
+  q15_t * pState);
+
+
+  /**
+   * @brief Processing function for the Q15 FIR lattice filter.
+   * @param[in]  S          points to an instance of the Q15 FIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_lattice_q15(
+  const arm_fir_lattice_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for the Q31 FIR lattice filter.
+   * @param[in] S          points to an instance of the Q31 FIR lattice structure.
+   * @param[in] numStages  number of filter stages.
+   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
+   * @param[in] pState     points to the state buffer.   The array is of length numStages.
+   */
+  void arm_fir_lattice_init_q31(
+  arm_fir_lattice_instance_q31 * S,
+  uint16_t numStages,
+  q31_t * pCoeffs,
+  q31_t * pState);
+
+
+  /**
+   * @brief Processing function for the Q31 FIR lattice filter.
+   * @param[in]  S          points to an instance of the Q31 FIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_lattice_q31(
+  const arm_fir_lattice_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+/**
+ * @brief Initialization function for the floating-point FIR lattice filter.
+ * @param[in] S          points to an instance of the floating-point FIR lattice structure.
+ * @param[in] numStages  number of filter stages.
+ * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
+ * @param[in] pState     points to the state buffer.  The array is of length numStages.
+ */
+  void arm_fir_lattice_init_f32(
+  arm_fir_lattice_instance_f32 * S,
+  uint16_t numStages,
+  float32_t * pCoeffs,
+  float32_t * pState);
+
+
+  /**
+   * @brief Processing function for the floating-point FIR lattice filter.
+   * @param[in]  S          points to an instance of the floating-point FIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_lattice_f32(
+  const arm_fir_lattice_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q15 IIR lattice filter.
+   */
+  typedef struct
+  {
+    uint16_t numStages;                  /**< number of stages in the filter. */
+    q15_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */
+    q15_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */
+    q15_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */
+  } arm_iir_lattice_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 IIR lattice filter.
+   */
+  typedef struct
+  {
+    uint16_t numStages;                  /**< number of stages in the filter. */
+    q31_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */
+    q31_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */
+    q31_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */
+  } arm_iir_lattice_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point IIR lattice filter.
+   */
+  typedef struct
+  {
+    uint16_t numStages;                  /**< number of stages in the filter. */
+    float32_t *pState;                   /**< points to the state variable array. The array is of length numStages+blockSize. */
+    float32_t *pkCoeffs;                 /**< points to the reflection coefficient array. The array is of length numStages. */
+    float32_t *pvCoeffs;                 /**< points to the ladder coefficient array. The array is of length numStages+1. */
+  } arm_iir_lattice_instance_f32;
+
+
+  /**
+   * @brief Processing function for the floating-point IIR lattice filter.
+   * @param[in]  S          points to an instance of the floating-point IIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_f32(
+  const arm_iir_lattice_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for the floating-point IIR lattice filter.
+   * @param[in] S          points to an instance of the floating-point IIR lattice structure.
+   * @param[in] numStages  number of stages in the filter.
+   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.
+   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.
+   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize-1.
+   * @param[in] blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_init_f32(
+  arm_iir_lattice_instance_f32 * S,
+  uint16_t numStages,
+  float32_t * pkCoeffs,
+  float32_t * pvCoeffs,
+  float32_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 IIR lattice filter.
+   * @param[in]  S          points to an instance of the Q31 IIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_q31(
+  const arm_iir_lattice_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for the Q31 IIR lattice filter.
+   * @param[in] S          points to an instance of the Q31 IIR lattice structure.
+   * @param[in] numStages  number of stages in the filter.
+   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.
+   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.
+   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize.
+   * @param[in] blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_init_q31(
+  arm_iir_lattice_instance_q31 * S,
+  uint16_t numStages,
+  q31_t * pkCoeffs,
+  q31_t * pvCoeffs,
+  q31_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 IIR lattice filter.
+   * @param[in]  S          points to an instance of the Q15 IIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_q15(
+  const arm_iir_lattice_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+/**
+ * @brief Initialization function for the Q15 IIR lattice filter.
+ * @param[in] S          points to an instance of the fixed-point Q15 IIR lattice structure.
+ * @param[in] numStages  number of stages in the filter.
+ * @param[in] pkCoeffs   points to reflection coefficient buffer.  The array is of length numStages.
+ * @param[in] pvCoeffs   points to ladder coefficient buffer.  The array is of length numStages+1.
+ * @param[in] pState     points to state buffer.  The array is of length numStages+blockSize.
+ * @param[in] blockSize  number of samples to process per call.
+ */
+  void arm_iir_lattice_init_q15(
+  arm_iir_lattice_instance_q15 * S,
+  uint16_t numStages,
+  q15_t * pkCoeffs,
+  q15_t * pvCoeffs,
+  q15_t * pState,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the floating-point LMS filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;    /**< number of coefficients in the filter. */
+    float32_t *pState;   /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    float32_t *pCoeffs;  /**< points to the coefficient array. The array is of length numTaps. */
+    float32_t mu;        /**< step size that controls filter coefficient updates. */
+  } arm_lms_instance_f32;
+
+
+  /**
+   * @brief Processing function for floating-point LMS filter.
+   * @param[in]  S          points to an instance of the floating-point LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_f32(
+  const arm_lms_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pRef,
+  float32_t * pOut,
+  float32_t * pErr,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for floating-point LMS filter.
+   * @param[in] S          points to an instance of the floating-point LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to the coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   */
+  void arm_lms_init_f32(
+  arm_lms_instance_f32 * S,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  float32_t mu,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q15 LMS filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;    /**< number of coefficients in the filter. */
+    q15_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    q15_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */
+    q15_t mu;            /**< step size that controls filter coefficient updates. */
+    uint32_t postShift;  /**< bit shift applied to coefficients. */
+  } arm_lms_instance_q15;
+
+
+  /**
+   * @brief Initialization function for the Q15 LMS filter.
+   * @param[in] S          points to an instance of the Q15 LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to the coefficient buffer.
+   * @param[in] pState     points to the state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   * @param[in] postShift  bit shift applied to coefficients.
+   */
+  void arm_lms_init_q15(
+  arm_lms_instance_q15 * S,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  q15_t mu,
+  uint32_t blockSize,
+  uint32_t postShift);
+
+
+  /**
+   * @brief Processing function for Q15 LMS filter.
+   * @param[in]  S          points to an instance of the Q15 LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_q15(
+  const arm_lms_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pRef,
+  q15_t * pOut,
+  q15_t * pErr,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q31 LMS filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;    /**< number of coefficients in the filter. */
+    q31_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    q31_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */
+    q31_t mu;            /**< step size that controls filter coefficient updates. */
+    uint32_t postShift;  /**< bit shift applied to coefficients. */
+  } arm_lms_instance_q31;
+
+
+  /**
+   * @brief Processing function for Q31 LMS filter.
+   * @param[in]  S          points to an instance of the Q15 LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_q31(
+  const arm_lms_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pRef,
+  q31_t * pOut,
+  q31_t * pErr,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for Q31 LMS filter.
+   * @param[in] S          points to an instance of the Q31 LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   * @param[in] postShift  bit shift applied to coefficients.
+   */
+  void arm_lms_init_q31(
+  arm_lms_instance_q31 * S,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  q31_t mu,
+  uint32_t blockSize,
+  uint32_t postShift);
+
+
+  /**
+   * @brief Instance structure for the floating-point normalized LMS filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;     /**< number of coefficients in the filter. */
+    float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */
+    float32_t mu;         /**< step size that control filter coefficient updates. */
+    float32_t energy;     /**< saves previous frame energy. */
+    float32_t x0;         /**< saves previous input sample. */
+  } arm_lms_norm_instance_f32;
+
+
+  /**
+   * @brief Processing function for floating-point normalized LMS filter.
+   * @param[in]  S          points to an instance of the floating-point normalized LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_norm_f32(
+  arm_lms_norm_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pRef,
+  float32_t * pOut,
+  float32_t * pErr,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for floating-point normalized LMS filter.
+   * @param[in] S          points to an instance of the floating-point LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   */
+  void arm_lms_norm_init_f32(
+  arm_lms_norm_instance_f32 * S,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  float32_t mu,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q31 normalized LMS filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;     /**< number of coefficients in the filter. */
+    q31_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    q31_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */
+    q31_t mu;             /**< step size that controls filter coefficient updates. */
+    uint8_t postShift;    /**< bit shift applied to coefficients. */
+    q31_t *recipTable;    /**< points to the reciprocal initial value table. */
+    q31_t energy;         /**< saves previous frame energy. */
+    q31_t x0;             /**< saves previous input sample. */
+  } arm_lms_norm_instance_q31;
+
+
+  /**
+   * @brief Processing function for Q31 normalized LMS filter.
+   * @param[in]  S          points to an instance of the Q31 normalized LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_norm_q31(
+  arm_lms_norm_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pRef,
+  q31_t * pOut,
+  q31_t * pErr,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for Q31 normalized LMS filter.
+   * @param[in] S          points to an instance of the Q31 normalized LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   * @param[in] postShift  bit shift applied to coefficients.
+   */
+  void arm_lms_norm_init_q31(
+  arm_lms_norm_instance_q31 * S,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  q31_t mu,
+  uint32_t blockSize,
+  uint8_t postShift);
+
+
+  /**
+   * @brief Instance structure for the Q15 normalized LMS filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;     /**< Number of coefficients in the filter. */
+    q15_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    q15_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */
+    q15_t mu;             /**< step size that controls filter coefficient updates. */
+    uint8_t postShift;    /**< bit shift applied to coefficients. */
+    q15_t *recipTable;    /**< Points to the reciprocal initial value table. */
+    q15_t energy;         /**< saves previous frame energy. */
+    q15_t x0;             /**< saves previous input sample. */
+  } arm_lms_norm_instance_q15;
+
+
+  /**
+   * @brief Processing function for Q15 normalized LMS filter.
+   * @param[in]  S          points to an instance of the Q15 normalized LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_norm_q15(
+  arm_lms_norm_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pRef,
+  q15_t * pOut,
+  q15_t * pErr,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for Q15 normalized LMS filter.
+   * @param[in] S          points to an instance of the Q15 normalized LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   * @param[in] postShift  bit shift applied to coefficients.
+   */
+  void arm_lms_norm_init_q15(
+  arm_lms_norm_instance_q15 * S,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  q15_t mu,
+  uint32_t blockSize,
+  uint8_t postShift);
+
+
+  /**
+   * @brief Correlation of floating-point sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+  void arm_correlate_f32(
+  float32_t * pSrcA,
+  uint32_t srcALen,
+  float32_t * pSrcB,
+  uint32_t srcBLen,
+  float32_t * pDst);
+
+
+   /**
+   * @brief Correlation of Q15 sequences
+   * @param[in]  pSrcA     points to the first input sequence.
+   * @param[in]  srcALen   length of the first input sequence.
+   * @param[in]  pSrcB     points to the second input sequence.
+   * @param[in]  srcBLen   length of the second input sequence.
+   * @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   * @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   */
+  void arm_correlate_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  q15_t * pScratch);
+
+
+  /**
+   * @brief Correlation of Q15 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+
+  void arm_correlate_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst);
+
+
+  /**
+   * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+
+  void arm_correlate_fast_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst);
+
+
+  /**
+   * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
+   * @param[in]  pSrcA     points to the first input sequence.
+   * @param[in]  srcALen   length of the first input sequence.
+   * @param[in]  pSrcB     points to the second input sequence.
+   * @param[in]  srcBLen   length of the second input sequence.
+   * @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   * @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   */
+  void arm_correlate_fast_opt_q15(
+  q15_t * pSrcA,
+  uint32_t srcALen,
+  q15_t * pSrcB,
+  uint32_t srcBLen,
+  q15_t * pDst,
+  q15_t * pScratch);
+
+
+  /**
+   * @brief Correlation of Q31 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+  void arm_correlate_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst);
+
+
+  /**
+   * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+  void arm_correlate_fast_q31(
+  q31_t * pSrcA,
+  uint32_t srcALen,
+  q31_t * pSrcB,
+  uint32_t srcBLen,
+  q31_t * pDst);
+
+
+ /**
+   * @brief Correlation of Q7 sequences.
+   * @param[in]  pSrcA      points to the first input sequence.
+   * @param[in]  srcALen    length of the first input sequence.
+   * @param[in]  pSrcB      points to the second input sequence.
+   * @param[in]  srcBLen    length of the second input sequence.
+   * @param[out] pDst       points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+   */
+  void arm_correlate_opt_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst,
+  q15_t * pScratch1,
+  q15_t * pScratch2);
+
+
+  /**
+   * @brief Correlation of Q7 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+  void arm_correlate_q7(
+  q7_t * pSrcA,
+  uint32_t srcALen,
+  q7_t * pSrcB,
+  uint32_t srcBLen,
+  q7_t * pDst);
+
+
+  /**
+   * @brief Instance structure for the floating-point sparse FIR filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;             /**< number of coefficients in the filter. */
+    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
+    float32_t *pState;            /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
+    float32_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
+    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
+    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
+  } arm_fir_sparse_instance_f32;
+
+  /**
+   * @brief Instance structure for the Q31 sparse FIR filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;             /**< number of coefficients in the filter. */
+    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
+    q31_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
+    q31_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/
+    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
+    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
+  } arm_fir_sparse_instance_q31;
+
+  /**
+   * @brief Instance structure for the Q15 sparse FIR filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;             /**< number of coefficients in the filter. */
+    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
+    q15_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
+    q15_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/
+    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
+    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
+  } arm_fir_sparse_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q7 sparse FIR filter.
+   */
+  typedef struct
+  {
+    uint16_t numTaps;             /**< number of coefficients in the filter. */
+    uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
+    q7_t *pState;                 /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
+    q7_t *pCoeffs;                /**< points to the coefficient array. The array is of length numTaps.*/
+    uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
+    int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
+  } arm_fir_sparse_instance_q7;
+
+
+  /**
+   * @brief Processing function for the floating-point sparse FIR filter.
+   * @param[in]  S           points to an instance of the floating-point sparse FIR structure.
+   * @param[in]  pSrc        points to the block of input data.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.
+   * @param[in]  blockSize   number of input samples to process per call.
+   */
+  void arm_fir_sparse_f32(
+  arm_fir_sparse_instance_f32 * S,
+  float32_t * pSrc,
+  float32_t * pDst,
+  float32_t * pScratchIn,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the floating-point sparse FIR filter.
+   * @param[in,out] S          points to an instance of the floating-point sparse FIR structure.
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.
+   * @param[in]     pCoeffs    points to the array of filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     pTapDelay  points to the array of offset times.
+   * @param[in]     maxDelay   maximum offset time supported.
+   * @param[in]     blockSize  number of samples that will be processed per block.
+   */
+  void arm_fir_sparse_init_f32(
+  arm_fir_sparse_instance_f32 * S,
+  uint16_t numTaps,
+  float32_t * pCoeffs,
+  float32_t * pState,
+  int32_t * pTapDelay,
+  uint16_t maxDelay,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 sparse FIR filter.
+   * @param[in]  S           points to an instance of the Q31 sparse FIR structure.
+   * @param[in]  pSrc        points to the block of input data.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.
+   * @param[in]  blockSize   number of input samples to process per call.
+   */
+  void arm_fir_sparse_q31(
+  arm_fir_sparse_instance_q31 * S,
+  q31_t * pSrc,
+  q31_t * pDst,
+  q31_t * pScratchIn,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q31 sparse FIR filter.
+   * @param[in,out] S          points to an instance of the Q31 sparse FIR structure.
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.
+   * @param[in]     pCoeffs    points to the array of filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     pTapDelay  points to the array of offset times.
+   * @param[in]     maxDelay   maximum offset time supported.
+   * @param[in]     blockSize  number of samples that will be processed per block.
+   */
+  void arm_fir_sparse_init_q31(
+  arm_fir_sparse_instance_q31 * S,
+  uint16_t numTaps,
+  q31_t * pCoeffs,
+  q31_t * pState,
+  int32_t * pTapDelay,
+  uint16_t maxDelay,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 sparse FIR filter.
+   * @param[in]  S            points to an instance of the Q15 sparse FIR structure.
+   * @param[in]  pSrc         points to the block of input data.
+   * @param[out] pDst         points to the block of output data
+   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.
+   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.
+   * @param[in]  blockSize    number of input samples to process per call.
+   */
+  void arm_fir_sparse_q15(
+  arm_fir_sparse_instance_q15 * S,
+  q15_t * pSrc,
+  q15_t * pDst,
+  q15_t * pScratchIn,
+  q31_t * pScratchOut,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q15 sparse FIR filter.
+   * @param[in,out] S          points to an instance of the Q15 sparse FIR structure.
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.
+   * @param[in]     pCoeffs    points to the array of filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     pTapDelay  points to the array of offset times.
+   * @param[in]     maxDelay   maximum offset time supported.
+   * @param[in]     blockSize  number of samples that will be processed per block.
+   */
+  void arm_fir_sparse_init_q15(
+  arm_fir_sparse_instance_q15 * S,
+  uint16_t numTaps,
+  q15_t * pCoeffs,
+  q15_t * pState,
+  int32_t * pTapDelay,
+  uint16_t maxDelay,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q7 sparse FIR filter.
+   * @param[in]  S            points to an instance of the Q7 sparse FIR structure.
+   * @param[in]  pSrc         points to the block of input data.
+   * @param[out] pDst         points to the block of output data
+   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.
+   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.
+   * @param[in]  blockSize    number of input samples to process per call.
+   */
+  void arm_fir_sparse_q7(
+  arm_fir_sparse_instance_q7 * S,
+  q7_t * pSrc,
+  q7_t * pDst,
+  q7_t * pScratchIn,
+  q31_t * pScratchOut,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q7 sparse FIR filter.
+   * @param[in,out] S          points to an instance of the Q7 sparse FIR structure.
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.
+   * @param[in]     pCoeffs    points to the array of filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     pTapDelay  points to the array of offset times.
+   * @param[in]     maxDelay   maximum offset time supported.
+   * @param[in]     blockSize  number of samples that will be processed per block.
+   */
+  void arm_fir_sparse_init_q7(
+  arm_fir_sparse_instance_q7 * S,
+  uint16_t numTaps,
+  q7_t * pCoeffs,
+  q7_t * pState,
+  int32_t * pTapDelay,
+  uint16_t maxDelay,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Floating-point sin_cos function.
+   * @param[in]  theta   input value in degrees
+   * @param[out] pSinVal  points to the processed sine output.
+   * @param[out] pCosVal  points to the processed cos output.
+   */
+  void arm_sin_cos_f32(
+  float32_t theta,
+  float32_t * pSinVal,
+  float32_t * pCosVal);
+
+
+  /**
+   * @brief  Q31 sin_cos function.
+   * @param[in]  theta    scaled input value in degrees
+   * @param[out] pSinVal  points to the processed sine output.
+   * @param[out] pCosVal  points to the processed cosine output.
+   */
+  void arm_sin_cos_q31(
+  q31_t theta,
+  q31_t * pSinVal,
+  q31_t * pCosVal);
+
+
+  /**
+   * @brief  Floating-point complex conjugate.
+   * @param[in]  pSrc        points to the input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_conj_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples);
+
+  /**
+   * @brief  Q31 complex conjugate.
+   * @param[in]  pSrc        points to the input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_conj_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Q15 complex conjugate.
+   * @param[in]  pSrc        points to the input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_conj_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Floating-point complex magnitude squared
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_squared_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Q31 complex magnitude squared
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_squared_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Q15 complex magnitude squared
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_squared_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples);
+
+
+ /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup PID PID Motor Control
+   *
+   * A Proportional Integral Derivative (PID) controller is a generic feedback control
+   * loop mechanism widely used in industrial control systems.
+   * A PID controller is the most commonly used type of feedback controller.
+   *
+   * This set of functions implements (PID) controllers
+   * for Q15, Q31, and floating-point data types.  The functions operate on a single sample
+   * of data and each call to the function returns a single processed value.
+   * <code>S</code> points to an instance of the PID control data structure.  <code>in</code>
+   * is the input sample value. The functions return the output value.
+   *
+   * \par Algorithm:
+   * <pre>
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+   *    A0 = Kp + Ki + Kd
+   *    A1 = (-Kp ) - (2 * Kd )
+   *    A2 = Kd  </pre>
+   *
+   * \par
+   * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant
+   *
+   * \par
+   * \image html PID.gif "Proportional Integral Derivative Controller"
+   *
+   * \par
+   * The PID controller calculates an "error" value as the difference between
+   * the measured output and the reference input.
+   * The controller attempts to minimize the error by adjusting the process control inputs.
+   * The proportional value determines the reaction to the current error,
+   * the integral value determines the reaction based on the sum of recent errors,
+   * and the derivative value determines the reaction based on the rate at which the error has been changing.
+   *
+   * \par Instance Structure
+   * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure.
+   * A separate instance structure must be defined for each PID Controller.
+   * There are separate instance structure declarations for each of the 3 supported data types.
+   *
+   * \par Reset Functions
+   * There is also an associated reset function for each data type which clears the state array.
+   *
+   * \par Initialization Functions
+   * There is also an associated initialization function for each data type.
+   * The initialization function performs the following operations:
+   * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains.
+   * - Zeros out the values in the state buffer.
+   *
+   * \par
+   * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.
+   *
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the fixed-point versions of the PID Controller functions.
+   * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup PID
+   * @{
+   */
+
+  /**
+   * @brief  Process function for the floating-point PID Control.
+   * @param[in,out] S   is an instance of the floating-point PID Control structure
+   * @param[in]     in  input sample to process
+   * @return out processed output sample.
+   */
+  static __INLINE float32_t arm_pid_f32(
+  arm_pid_instance_f32 * S,
+  float32_t in)
+  {
+    float32_t out;
+
+    /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]  */
+    out = (S->A0 * in) +
+      (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]);
+
+    /* Update state */
+    S->state[1] = S->state[0];
+    S->state[0] = in;
+    S->state[2] = out;
+
+    /* return to application */
+    return (out);
+
+  }
+
+  /**
+   * @brief  Process function for the Q31 PID Control.
+   * @param[in,out] S  points to an instance of the Q31 PID Control structure
+   * @param[in]     in  input sample to process
+   * @return out processed output sample.
+   *
+   * <b>Scaling and Overflow Behavior:</b>
+   * \par
+   * The function is implemented using an internal 64-bit accumulator.
+   * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.
+   * Thus, if the accumulator result overflows it wraps around rather than clip.
+   * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions.
+   * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.
+   */
+  static __INLINE q31_t arm_pid_q31(
+  arm_pid_instance_q31 * S,
+  q31_t in)
+  {
+    q63_t acc;
+    q31_t out;
+
+    /* acc = A0 * x[n]  */
+    acc = (q63_t) S->A0 * in;
+
+    /* acc += A1 * x[n-1] */
+    acc += (q63_t) S->A1 * S->state[0];
+
+    /* acc += A2 * x[n-2]  */
+    acc += (q63_t) S->A2 * S->state[1];
+
+    /* convert output to 1.31 format to add y[n-1] */
+    out = (q31_t) (acc >> 31u);
+
+    /* out += y[n-1] */
+    out += S->state[2];
+
+    /* Update state */
+    S->state[1] = S->state[0];
+    S->state[0] = in;
+    S->state[2] = out;
+
+    /* return to application */
+    return (out);
+  }
+
+
+  /**
+   * @brief  Process function for the Q15 PID Control.
+   * @param[in,out] S   points to an instance of the Q15 PID Control structure
+   * @param[in]     in  input sample to process
+   * @return out processed output sample.
+   *
+   * <b>Scaling and Overflow Behavior:</b>
+   * \par
+   * The function is implemented using a 64-bit internal accumulator.
+   * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result.
+   * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.
+   * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.
+   * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.
+   * Lastly, the accumulator is saturated to yield a result in 1.15 format.
+   */
+  static __INLINE q15_t arm_pid_q15(
+  arm_pid_instance_q15 * S,
+  q15_t in)
+  {
+    q63_t acc;
+    q15_t out;
+
+#ifndef ARM_MATH_CM0_FAMILY
+    __SIMD32_TYPE *vstate;
+
+    /* Implementation of PID controller */
+
+    /* acc = A0 * x[n]  */
+    acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in);
+
+    /* acc += A1 * x[n-1] + A2 * x[n-2]  */
+    vstate = __SIMD32_CONST(S->state);
+    acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)*vstate, (uint64_t)acc);
+#else
+    /* acc = A0 * x[n]  */
+    acc = ((q31_t) S->A0) * in;
+
+    /* acc += A1 * x[n-1] + A2 * x[n-2]  */
+    acc += (q31_t) S->A1 * S->state[0];
+    acc += (q31_t) S->A2 * S->state[1];
+#endif
+
+    /* acc += y[n-1] */
+    acc += (q31_t) S->state[2] << 15;
+
+    /* saturate the output */
+    out = (q15_t) (__SSAT((acc >> 15), 16));
+
+    /* Update state */
+    S->state[1] = S->state[0];
+    S->state[0] = in;
+    S->state[2] = out;
+
+    /* return to application */
+    return (out);
+  }
+
+  /**
+   * @} end of PID group
+   */
+
+
+  /**
+   * @brief Floating-point matrix inverse.
+   * @param[in]  src   points to the instance of the input floating-point matrix structure.
+   * @param[out] dst   points to the instance of the output floating-point matrix structure.
+   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.
+   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
+   */
+  arm_status arm_mat_inverse_f32(
+  const arm_matrix_instance_f32 * src,
+  arm_matrix_instance_f32 * dst);
+
+
+  /**
+   * @brief Floating-point matrix inverse.
+   * @param[in]  src   points to the instance of the input floating-point matrix structure.
+   * @param[out] dst   points to the instance of the output floating-point matrix structure.
+   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.
+   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
+   */
+  arm_status arm_mat_inverse_f64(
+  const arm_matrix_instance_f64 * src,
+  arm_matrix_instance_f64 * dst);
+
+
+
+  /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup clarke Vector Clarke Transform
+   * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector.
+   * Generally the Clarke transform uses three-phase currents <code>Ia, Ib and Ic</code> to calculate currents
+   * in the two-phase orthogonal stator axis <code>Ialpha</code> and <code>Ibeta</code>.
+   * When <code>Ialpha</code> is superposed with <code>Ia</code> as shown in the figure below
+   * \image html clarke.gif Stator current space vector and its components in (a,b).
+   * and <code>Ia + Ib + Ic = 0</code>, in this condition <code>Ialpha</code> and <code>Ibeta</code>
+   * can be calculated using only <code>Ia</code> and <code>Ib</code>.
+   *
+   * The function operates on a single sample of data and each call to the function returns the processed output.
+   * The library provides separate functions for Q31 and floating-point data types.
+   * \par Algorithm
+   * \image html clarkeFormula.gif
+   * where <code>Ia</code> and <code>Ib</code> are the instantaneous stator phases and
+   * <code>pIalpha</code> and <code>pIbeta</code> are the two coordinates of time invariant vector.
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the Q31 version of the Clarke transform.
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup clarke
+   * @{
+   */
+
+  /**
+   *
+   * @brief  Floating-point Clarke transform
+   * @param[in]  Ia       input three-phase coordinate <code>a</code>
+   * @param[in]  Ib       input three-phase coordinate <code>b</code>
+   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
+   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
+   */
+  static __INLINE void arm_clarke_f32(
+  float32_t Ia,
+  float32_t Ib,
+  float32_t * pIalpha,
+  float32_t * pIbeta)
+  {
+    /* Calculate pIalpha using the equation, pIalpha = Ia */
+    *pIalpha = Ia;
+
+    /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */
+    *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib);
+  }
+
+
+  /**
+   * @brief  Clarke transform for Q31 version
+   * @param[in]  Ia       input three-phase coordinate <code>a</code>
+   * @param[in]  Ib       input three-phase coordinate <code>b</code>
+   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
+   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
+   *
+   * <b>Scaling and Overflow Behavior:</b>
+   * \par
+   * The function is implemented using an internal 32-bit accumulator.
+   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
+   * There is saturation on the addition, hence there is no risk of overflow.
+   */
+  static __INLINE void arm_clarke_q31(
+  q31_t Ia,
+  q31_t Ib,
+  q31_t * pIalpha,
+  q31_t * pIbeta)
+  {
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
+
+    /* Calculating pIalpha from Ia by equation pIalpha = Ia */
+    *pIalpha = Ia;
+
+    /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */
+    product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30);
+
+    /* Intermediate product is calculated by (2/sqrt(3) * Ib) */
+    product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30);
+
+    /* pIbeta is calculated by adding the intermediate products */
+    *pIbeta = __QADD(product1, product2);
+  }
+
+  /**
+   * @} end of clarke group
+   */
+
+  /**
+   * @brief  Converts the elements of the Q7 vector to Q31 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_q7_to_q31(
+  q7_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+
+  /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup inv_clarke Vector Inverse Clarke Transform
+   * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases.
+   *
+   * The function operates on a single sample of data and each call to the function returns the processed output.
+   * The library provides separate functions for Q31 and floating-point data types.
+   * \par Algorithm
+   * \image html clarkeInvFormula.gif
+   * where <code>pIa</code> and <code>pIb</code> are the instantaneous stator phases and
+   * <code>Ialpha</code> and <code>Ibeta</code> are the two coordinates of time invariant vector.
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the Q31 version of the Clarke transform.
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup inv_clarke
+   * @{
+   */
+
+   /**
+   * @brief  Floating-point Inverse Clarke transform
+   * @param[in]  Ialpha  input two-phase orthogonal vector axis alpha
+   * @param[in]  Ibeta   input two-phase orthogonal vector axis beta
+   * @param[out] pIa     points to output three-phase coordinate <code>a</code>
+   * @param[out] pIb     points to output three-phase coordinate <code>b</code>
+   */
+  static __INLINE void arm_inv_clarke_f32(
+  float32_t Ialpha,
+  float32_t Ibeta,
+  float32_t * pIa,
+  float32_t * pIb)
+  {
+    /* Calculating pIa from Ialpha by equation pIa = Ialpha */
+    *pIa = Ialpha;
+
+    /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */
+    *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta;
+  }
+
+
+  /**
+   * @brief  Inverse Clarke transform for Q31 version
+   * @param[in]  Ialpha  input two-phase orthogonal vector axis alpha
+   * @param[in]  Ibeta   input two-phase orthogonal vector axis beta
+   * @param[out] pIa     points to output three-phase coordinate <code>a</code>
+   * @param[out] pIb     points to output three-phase coordinate <code>b</code>
+   *
+   * <b>Scaling and Overflow Behavior:</b>
+   * \par
+   * The function is implemented using an internal 32-bit accumulator.
+   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
+   * There is saturation on the subtraction, hence there is no risk of overflow.
+   */
+  static __INLINE void arm_inv_clarke_q31(
+  q31_t Ialpha,
+  q31_t Ibeta,
+  q31_t * pIa,
+  q31_t * pIb)
+  {
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
+
+    /* Calculating pIa from Ialpha by equation pIa = Ialpha */
+    *pIa = Ialpha;
+
+    /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */
+    product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31);
+
+    /* Intermediate product is calculated by (1/sqrt(3) * pIb) */
+    product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);
+
+    /* pIb is calculated by subtracting the products */
+    *pIb = __QSUB(product2, product1);
+  }
+
+  /**
+   * @} end of inv_clarke group
+   */
+
+  /**
+   * @brief  Converts the elements of the Q7 vector to Q15 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_q7_to_q15(
+  q7_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+
+  /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup park Vector Park Transform
+   *
+   * Forward Park transform converts the input two-coordinate vector to flux and torque components.
+   * The Park transform can be used to realize the transformation of the <code>Ialpha</code> and the <code>Ibeta</code> currents
+   * from the stationary to the moving reference frame and control the spatial relationship between
+   * the stator vector current and rotor flux vector.
+   * If we consider the d axis aligned with the rotor flux, the diagram below shows the
+   * current vector and the relationship from the two reference frames:
+   * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame"
+   *
+   * The function operates on a single sample of data and each call to the function returns the processed output.
+   * The library provides separate functions for Q31 and floating-point data types.
+   * \par Algorithm
+   * \image html parkFormula.gif
+   * where <code>Ialpha</code> and <code>Ibeta</code> are the stator vector components,
+   * <code>pId</code> and <code>pIq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the
+   * cosine and sine values of theta (rotor flux position).
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the Q31 version of the Park transform.
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup park
+   * @{
+   */
+
+  /**
+   * @brief Floating-point Park transform
+   * @param[in]  Ialpha  input two-phase vector coordinate alpha
+   * @param[in]  Ibeta   input two-phase vector coordinate beta
+   * @param[out] pId     points to output   rotor reference frame d
+   * @param[out] pIq     points to output   rotor reference frame q
+   * @param[in]  sinVal  sine value of rotation angle theta
+   * @param[in]  cosVal  cosine value of rotation angle theta
+   *
+   * The function implements the forward Park transform.
+   *
+   */
+  static __INLINE void arm_park_f32(
+  float32_t Ialpha,
+  float32_t Ibeta,
+  float32_t * pId,
+  float32_t * pIq,
+  float32_t sinVal,
+  float32_t cosVal)
+  {
+    /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */
+    *pId = Ialpha * cosVal + Ibeta * sinVal;
+
+    /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */
+    *pIq = -Ialpha * sinVal + Ibeta * cosVal;
+  }
+
+
+  /**
+   * @brief  Park transform for Q31 version
+   * @param[in]  Ialpha  input two-phase vector coordinate alpha
+   * @param[in]  Ibeta   input two-phase vector coordinate beta
+   * @param[out] pId     points to output rotor reference frame d
+   * @param[out] pIq     points to output rotor reference frame q
+   * @param[in]  sinVal  sine value of rotation angle theta
+   * @param[in]  cosVal  cosine value of rotation angle theta
+   *
+   * <b>Scaling and Overflow Behavior:</b>
+   * \par
+   * The function is implemented using an internal 32-bit accumulator.
+   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
+   * There is saturation on the addition and subtraction, hence there is no risk of overflow.
+   */
+  static __INLINE void arm_park_q31(
+  q31_t Ialpha,
+  q31_t Ibeta,
+  q31_t * pId,
+  q31_t * pIq,
+  q31_t sinVal,
+  q31_t cosVal)
+  {
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
+    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */
+
+    /* Intermediate product is calculated by (Ialpha * cosVal) */
+    product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31);
+
+    /* Intermediate product is calculated by (Ibeta * sinVal) */
+    product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31);
+
+
+    /* Intermediate product is calculated by (Ialpha * sinVal) */
+    product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31);
+
+    /* Intermediate product is calculated by (Ibeta * cosVal) */
+    product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31);
+
+    /* Calculate pId by adding the two intermediate products 1 and 2 */
+    *pId = __QADD(product1, product2);
+
+    /* Calculate pIq by subtracting the two intermediate products 3 from 4 */
+    *pIq = __QSUB(product4, product3);
+  }
+
+  /**
+   * @} end of park group
+   */
+
+  /**
+   * @brief  Converts the elements of the Q7 vector to floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q7_to_float(
+  q7_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup inv_park Vector Inverse Park transform
+   * Inverse Park transform converts the input flux and torque components to two-coordinate vector.
+   *
+   * The function operates on a single sample of data and each call to the function returns the processed output.
+   * The library provides separate functions for Q31 and floating-point data types.
+   * \par Algorithm
+   * \image html parkInvFormula.gif
+   * where <code>pIalpha</code> and <code>pIbeta</code> are the stator vector components,
+   * <code>Id</code> and <code>Iq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the
+   * cosine and sine values of theta (rotor flux position).
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the Q31 version of the Park transform.
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup inv_park
+   * @{
+   */
+
+   /**
+   * @brief  Floating-point Inverse Park transform
+   * @param[in]  Id       input coordinate of rotor reference frame d
+   * @param[in]  Iq       input coordinate of rotor reference frame q
+   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
+   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
+   * @param[in]  sinVal   sine value of rotation angle theta
+   * @param[in]  cosVal   cosine value of rotation angle theta
+   */
+  static __INLINE void arm_inv_park_f32(
+  float32_t Id,
+  float32_t Iq,
+  float32_t * pIalpha,
+  float32_t * pIbeta,
+  float32_t sinVal,
+  float32_t cosVal)
+  {
+    /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */
+    *pIalpha = Id * cosVal - Iq * sinVal;
+
+    /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */
+    *pIbeta = Id * sinVal + Iq * cosVal;
+  }
+
+
+  /**
+   * @brief  Inverse Park transform for   Q31 version
+   * @param[in]  Id       input coordinate of rotor reference frame d
+   * @param[in]  Iq       input coordinate of rotor reference frame q
+   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
+   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
+   * @param[in]  sinVal   sine value of rotation angle theta
+   * @param[in]  cosVal   cosine value of rotation angle theta
+   *
+   * <b>Scaling and Overflow Behavior:</b>
+   * \par
+   * The function is implemented using an internal 32-bit accumulator.
+   * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
+   * There is saturation on the addition, hence there is no risk of overflow.
+   */
+  static __INLINE void arm_inv_park_q31(
+  q31_t Id,
+  q31_t Iq,
+  q31_t * pIalpha,
+  q31_t * pIbeta,
+  q31_t sinVal,
+  q31_t cosVal)
+  {
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
+    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */
+
+    /* Intermediate product is calculated by (Id * cosVal) */
+    product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31);
+
+    /* Intermediate product is calculated by (Iq * sinVal) */
+    product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31);
+
+
+    /* Intermediate product is calculated by (Id * sinVal) */
+    product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31);
+
+    /* Intermediate product is calculated by (Iq * cosVal) */
+    product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31);
+
+    /* Calculate pIalpha by using the two intermediate products 1 and 2 */
+    *pIalpha = __QSUB(product1, product2);
+
+    /* Calculate pIbeta by using the two intermediate products 3 and 4 */
+    *pIbeta = __QADD(product4, product3);
+  }
+
+  /**
+   * @} end of Inverse park group
+   */
+
+
+  /**
+   * @brief  Converts the elements of the Q31 vector to floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q31_to_float(
+  q31_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+  /**
+   * @ingroup groupInterpolation
+   */
+
+  /**
+   * @defgroup LinearInterpolate Linear Interpolation
+   *
+   * Linear interpolation is a method of curve fitting using linear polynomials.
+   * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line
+   *
+   * \par
+   * \image html LinearInterp.gif "Linear interpolation"
+   *
+   * \par
+   * A  Linear Interpolate function calculates an output value(y), for the input(x)
+   * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)
+   *
+   * \par Algorithm:
+   * <pre>
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+   *       where x0, x1 are nearest values of input x
+   *             y0, y1 are nearest values to output y
+   * </pre>
+   *
+   * \par
+   * This set of functions implements Linear interpolation process
+   * for Q7, Q15, Q31, and floating-point data types.  The functions operate on a single
+   * sample of data and each call to the function returns a single processed value.
+   * <code>S</code> points to an instance of the Linear Interpolate function data structure.
+   * <code>x</code> is the input sample value. The functions returns the output value.
+   *
+   * \par
+   * if x is outside of the table boundary, Linear interpolation returns first value of the table
+   * if x is below input range and returns last value of table if x is above range.
+   */
+
+  /**
+   * @addtogroup LinearInterpolate
+   * @{
+   */
+
+  /**
+   * @brief  Process function for the floating-point Linear Interpolation Function.
+   * @param[in,out] S  is an instance of the floating-point Linear Interpolation structure
+   * @param[in]     x  input sample to process
+   * @return y processed output sample.
+   *
+   */
+  static __INLINE float32_t arm_linear_interp_f32(
+  arm_linear_interp_instance_f32 * S,
+  float32_t x)
+  {
+    float32_t y;
+    float32_t x0, x1;                            /* Nearest input values */
+    float32_t y0, y1;                            /* Nearest output values */
+    float32_t xSpacing = S->xSpacing;            /* spacing between input values */
+    int32_t i;                                   /* Index variable */
+    float32_t *pYData = S->pYData;               /* pointer to output table */
+
+    /* Calculation of index */
+    i = (int32_t) ((x - S->x1) / xSpacing);
+
+    if(i < 0)
+    {
+      /* Iniatilize output for below specified range as least output value of table */
+      y = pYData[0];
+    }
+    else if((uint32_t)i >= S->nValues)
+    {
+      /* Iniatilize output for above specified range as last output value of table */
+      y = pYData[S->nValues - 1];
+    }
+    else
+    {
+      /* Calculation of nearest input values */
+      x0 = S->x1 +  i      * xSpacing;
+      x1 = S->x1 + (i + 1) * xSpacing;
+
+      /* Read of nearest output values */
+      y0 = pYData[i];
+      y1 = pYData[i + 1];
+
+      /* Calculation of output */
+      y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0));
+
+    }
+
+    /* returns output value */
+    return (y);
+  }
+
+
+   /**
+   *
+   * @brief  Process function for the Q31 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q31 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   *
+   */
+  static __INLINE q31_t arm_linear_interp_q31(
+  q31_t * pYData,
+  q31_t x,
+  uint32_t nValues)
+  {
+    q31_t y;                                     /* output */
+    q31_t y0, y1;                                /* Nearest output values */
+    q31_t fract;                                 /* fractional part */
+    int32_t index;                               /* Index to read nearest output values */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    index = ((x & (q31_t)0xFFF00000) >> 20);
+
+    if(index >= (int32_t)(nValues - 1))
+    {
+      return (pYData[nValues - 1]);
+    }
+    else if(index < 0)
+    {
+      return (pYData[0]);
+    }
+    else
+    {
+      /* 20 bits for the fractional part */
+      /* shift left by 11 to keep fract in 1.31 format */
+      fract = (x & 0x000FFFFF) << 11;
+
+      /* Read two nearest output values from the index in 1.31(q31) format */
+      y0 = pYData[index];
+      y1 = pYData[index + 1];
+
+      /* Calculation of y0 * (1-fract) and y is in 2.30 format */
+      y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));
+
+      /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */
+      y += ((q31_t) (((q63_t) y1 * fract) >> 32));
+
+      /* Convert y to 1.31 format */
+      return (y << 1u);
+    }
+  }
+
+
+  /**
+   *
+   * @brief  Process function for the Q15 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q15 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   *
+   */
+  static __INLINE q15_t arm_linear_interp_q15(
+  q15_t * pYData,
+  q31_t x,
+  uint32_t nValues)
+  {
+    q63_t y;                                     /* output */
+    q15_t y0, y1;                                /* Nearest output values */
+    q31_t fract;                                 /* fractional part */
+    int32_t index;                               /* Index to read nearest output values */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    index = ((x & (int32_t)0xFFF00000) >> 20);
+
+    if(index >= (int32_t)(nValues - 1))
+    {
+      return (pYData[nValues - 1]);
+    }
+    else if(index < 0)
+    {
+      return (pYData[0]);
+    }
+    else
+    {
+      /* 20 bits for the fractional part */
+      /* fract is in 12.20 format */
+      fract = (x & 0x000FFFFF);
+
+      /* Read two nearest output values from the index */
+      y0 = pYData[index];
+      y1 = pYData[index + 1];
+
+      /* Calculation of y0 * (1-fract) and y is in 13.35 format */
+      y = ((q63_t) y0 * (0xFFFFF - fract));
+
+      /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */
+      y += ((q63_t) y1 * (fract));
+
+      /* convert y to 1.15 format */
+      return (q15_t) (y >> 20);
+    }
+  }
+
+
+  /**
+   *
+   * @brief  Process function for the Q7 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q7 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   */
+  static __INLINE q7_t arm_linear_interp_q7(
+  q7_t * pYData,
+  q31_t x,
+  uint32_t nValues)
+  {
+    q31_t y;                                     /* output */
+    q7_t y0, y1;                                 /* Nearest output values */
+    q31_t fract;                                 /* fractional part */
+    uint32_t index;                              /* Index to read nearest output values */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    if (x < 0)
+    {
+      return (pYData[0]);
+    }
+    index = (x >> 20) & 0xfff;
+
+    if(index >= (nValues - 1))
+    {
+      return (pYData[nValues - 1]);
+    }
+    else
+    {
+      /* 20 bits for the fractional part */
+      /* fract is in 12.20 format */
+      fract = (x & 0x000FFFFF);
+
+      /* Read two nearest output values from the index and are in 1.7(q7) format */
+      y0 = pYData[index];
+      y1 = pYData[index + 1];
+
+      /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */
+      y = ((y0 * (0xFFFFF - fract)));
+
+      /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */
+      y += (y1 * fract);
+
+      /* convert y to 1.7(q7) format */
+      return (q7_t) (y >> 20);
+     }
+  }
+
+  /**
+   * @} end of LinearInterpolate group
+   */
+
+  /**
+   * @brief  Fast approximation to the trigonometric sine function for floating-point data.
+   * @param[in] x  input value in radians.
+   * @return  sin(x).
+   */
+  float32_t arm_sin_f32(
+  float32_t x);
+
+
+  /**
+   * @brief  Fast approximation to the trigonometric sine function for Q31 data.
+   * @param[in] x  Scaled input value in radians.
+   * @return  sin(x).
+   */
+  q31_t arm_sin_q31(
+  q31_t x);
+
+
+  /**
+   * @brief  Fast approximation to the trigonometric sine function for Q15 data.
+   * @param[in] x  Scaled input value in radians.
+   * @return  sin(x).
+   */
+  q15_t arm_sin_q15(
+  q15_t x);
+
+
+  /**
+   * @brief  Fast approximation to the trigonometric cosine function for floating-point data.
+   * @param[in] x  input value in radians.
+   * @return  cos(x).
+   */
+  float32_t arm_cos_f32(
+  float32_t x);
+
+
+  /**
+   * @brief Fast approximation to the trigonometric cosine function for Q31 data.
+   * @param[in] x  Scaled input value in radians.
+   * @return  cos(x).
+   */
+  q31_t arm_cos_q31(
+  q31_t x);
+
+
+  /**
+   * @brief  Fast approximation to the trigonometric cosine function for Q15 data.
+   * @param[in] x  Scaled input value in radians.
+   * @return  cos(x).
+   */
+  q15_t arm_cos_q15(
+  q15_t x);
+
+
+  /**
+   * @ingroup groupFastMath
+   */
+
+
+  /**
+   * @defgroup SQRT Square Root
+   *
+   * Computes the square root of a number.
+   * There are separate functions for Q15, Q31, and floating-point data types.
+   * The square root function is computed using the Newton-Raphson algorithm.
+   * This is an iterative algorithm of the form:
+   * <pre>
+   *      x1 = x0 - f(x0)/f'(x0)
+   * </pre>
+   * where <code>x1</code> is the current estimate,
+   * <code>x0</code> is the previous estimate, and
+   * <code>f'(x0)</code> is the derivative of <code>f()</code> evaluated at <code>x0</code>.
+   * For the square root function, the algorithm reduces to:
+   * <pre>
+   *     x0 = in/2                         [initial guess]
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+   * </pre>
+   */
+
+
+  /**
+   * @addtogroup SQRT
+   * @{
+   */
+
+  /**
+   * @brief  Floating-point square root function.
+   * @param[in]  in    input value.
+   * @param[out] pOut  square root of input value.
+   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if
+   * <code>in</code> is negative value and returns zero output for negative values.
+   */
+  static __INLINE arm_status arm_sqrt_f32(
+  float32_t in,
+  float32_t * pOut)
+  {
+    if(in >= 0.0f)
+    {
+
+#if   (__FPU_USED == 1) && defined ( __CC_ARM   )
+      *pOut = __sqrtf(in);
+#elif (__FPU_USED == 1) && (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
+      *pOut = __builtin_sqrtf(in);
+#elif (__FPU_USED == 1) && defined(__GNUC__)
+      *pOut = __builtin_sqrtf(in);
+#elif (__FPU_USED == 1) && defined ( __ICCARM__ ) && (__VER__ >= 6040000)
+      __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in));
+#else
+      *pOut = sqrtf(in);
+#endif
+
+      return (ARM_MATH_SUCCESS);
+    }
+    else
+    {
+      *pOut = 0.0f;
+      return (ARM_MATH_ARGUMENT_ERROR);
+    }
+  }
+
+
+  /**
+   * @brief Q31 square root function.
+   * @param[in]  in    input value.  The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF.
+   * @param[out] pOut  square root of input value.
+   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if
+   * <code>in</code> is negative value and returns zero output for negative values.
+   */
+  arm_status arm_sqrt_q31(
+  q31_t in,
+  q31_t * pOut);
+
+
+  /**
+   * @brief  Q15 square root function.
+   * @param[in]  in    input value.  The range of the input value is [0 +1) or 0x0000 to 0x7FFF.
+   * @param[out] pOut  square root of input value.
+   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if
+   * <code>in</code> is negative value and returns zero output for negative values.
+   */
+  arm_status arm_sqrt_q15(
+  q15_t in,
+  q15_t * pOut);
+
+  /**
+   * @} end of SQRT group
+   */
+
+
+  /**
+   * @brief floating-point Circular write function.
+   */
+  static __INLINE void arm_circularWrite_f32(
+  int32_t * circBuffer,
+  int32_t L,
+  uint16_t * writeOffset,
+  int32_t bufferInc,
+  const int32_t * src,
+  int32_t srcInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0u;
+    int32_t wOffset;
+
+    /* Copy the value of Index pointer that points
+     * to the current location where the input samples to be copied */
+    wOffset = *writeOffset;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while(i > 0u)
+    {
+      /* copy the input sample to the circular buffer */
+      circBuffer[wOffset] = *src;
+
+      /* Update the input pointer */
+      src += srcInc;
+
+      /* Circularly update wOffset.  Watch out for positive and negative value */
+      wOffset += bufferInc;
+      if(wOffset >= L)
+        wOffset -= L;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *writeOffset = (uint16_t)wOffset;
+  }
+
+
+
+  /**
+   * @brief floating-point Circular Read function.
+   */
+  static __INLINE void arm_circularRead_f32(
+  int32_t * circBuffer,
+  int32_t L,
+  int32_t * readOffset,
+  int32_t bufferInc,
+  int32_t * dst,
+  int32_t * dst_base,
+  int32_t dst_length,
+  int32_t dstInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0u;
+    int32_t rOffset, dst_end;
+
+    /* Copy the value of Index pointer that points
+     * to the current location from where the input samples to be read */
+    rOffset = *readOffset;
+    dst_end = (int32_t) (dst_base + dst_length);
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while(i > 0u)
+    {
+      /* copy the sample from the circular buffer to the destination buffer */
+      *dst = circBuffer[rOffset];
+
+      /* Update the input pointer */
+      dst += dstInc;
+
+      if(dst == (int32_t *) dst_end)
+      {
+        dst = dst_base;
+      }
+
+      /* Circularly update rOffset.  Watch out for positive and negative value  */
+      rOffset += bufferInc;
+
+      if(rOffset >= L)
+      {
+        rOffset -= L;
+      }
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *readOffset = rOffset;
+  }
+
+
+  /**
+   * @brief Q15 Circular write function.
+   */
+  static __INLINE void arm_circularWrite_q15(
+  q15_t * circBuffer,
+  int32_t L,
+  uint16_t * writeOffset,
+  int32_t bufferInc,
+  const q15_t * src,
+  int32_t srcInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0u;
+    int32_t wOffset;
+
+    /* Copy the value of Index pointer that points
+     * to the current location where the input samples to be copied */
+    wOffset = *writeOffset;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while(i > 0u)
+    {
+      /* copy the input sample to the circular buffer */
+      circBuffer[wOffset] = *src;
+
+      /* Update the input pointer */
+      src += srcInc;
+
+      /* Circularly update wOffset.  Watch out for positive and negative value */
+      wOffset += bufferInc;
+      if(wOffset >= L)
+        wOffset -= L;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *writeOffset = (uint16_t)wOffset;
+  }
+
+
+  /**
+   * @brief Q15 Circular Read function.
+   */
+  static __INLINE void arm_circularRead_q15(
+  q15_t * circBuffer,
+  int32_t L,
+  int32_t * readOffset,
+  int32_t bufferInc,
+  q15_t * dst,
+  q15_t * dst_base,
+  int32_t dst_length,
+  int32_t dstInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0;
+    int32_t rOffset, dst_end;
+
+    /* Copy the value of Index pointer that points
+     * to the current location from where the input samples to be read */
+    rOffset = *readOffset;
+
+    dst_end = (int32_t) (dst_base + dst_length);
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while(i > 0u)
+    {
+      /* copy the sample from the circular buffer to the destination buffer */
+      *dst = circBuffer[rOffset];
+
+      /* Update the input pointer */
+      dst += dstInc;
+
+      if(dst == (q15_t *) dst_end)
+      {
+        dst = dst_base;
+      }
+
+      /* Circularly update wOffset.  Watch out for positive and negative value */
+      rOffset += bufferInc;
+
+      if(rOffset >= L)
+      {
+        rOffset -= L;
+      }
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *readOffset = rOffset;
+  }
+
+
+  /**
+   * @brief Q7 Circular write function.
+   */
+  static __INLINE void arm_circularWrite_q7(
+  q7_t * circBuffer,
+  int32_t L,
+  uint16_t * writeOffset,
+  int32_t bufferInc,
+  const q7_t * src,
+  int32_t srcInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0u;
+    int32_t wOffset;
+
+    /* Copy the value of Index pointer that points
+     * to the current location where the input samples to be copied */
+    wOffset = *writeOffset;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while(i > 0u)
+    {
+      /* copy the input sample to the circular buffer */
+      circBuffer[wOffset] = *src;
+
+      /* Update the input pointer */
+      src += srcInc;
+
+      /* Circularly update wOffset.  Watch out for positive and negative value */
+      wOffset += bufferInc;
+      if(wOffset >= L)
+        wOffset -= L;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *writeOffset = (uint16_t)wOffset;
+  }
+
+
+  /**
+   * @brief Q7 Circular Read function.
+   */
+  static __INLINE void arm_circularRead_q7(
+  q7_t * circBuffer,
+  int32_t L,
+  int32_t * readOffset,
+  int32_t bufferInc,
+  q7_t * dst,
+  q7_t * dst_base,
+  int32_t dst_length,
+  int32_t dstInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0;
+    int32_t rOffset, dst_end;
+
+    /* Copy the value of Index pointer that points
+     * to the current location from where the input samples to be read */
+    rOffset = *readOffset;
+
+    dst_end = (int32_t) (dst_base + dst_length);
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while(i > 0u)
+    {
+      /* copy the sample from the circular buffer to the destination buffer */
+      *dst = circBuffer[rOffset];
+
+      /* Update the input pointer */
+      dst += dstInc;
+
+      if(dst == (q7_t *) dst_end)
+      {
+        dst = dst_base;
+      }
+
+      /* Circularly update rOffset.  Watch out for positive and negative value */
+      rOffset += bufferInc;
+
+      if(rOffset >= L)
+      {
+        rOffset -= L;
+      }
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *readOffset = rOffset;
+  }
+
+
+  /**
+   * @brief  Sum of the squares of the elements of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_power_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q63_t * pResult);
+
+
+  /**
+   * @brief  Sum of the squares of the elements of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_power_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult);
+
+
+  /**
+   * @brief  Sum of the squares of the elements of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_power_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q63_t * pResult);
+
+
+  /**
+   * @brief  Sum of the squares of the elements of a Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_power_q7(
+  q7_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult);
+
+
+  /**
+   * @brief  Mean value of a Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_mean_q7(
+  q7_t * pSrc,
+  uint32_t blockSize,
+  q7_t * pResult);
+
+
+  /**
+   * @brief  Mean value of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_mean_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult);
+
+
+  /**
+   * @brief  Mean value of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_mean_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult);
+
+
+  /**
+   * @brief  Mean value of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_mean_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult);
+
+
+  /**
+   * @brief  Variance of the elements of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_var_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult);
+
+
+  /**
+   * @brief  Variance of the elements of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_var_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult);
+
+
+  /**
+   * @brief  Variance of the elements of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_var_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult);
+
+
+  /**
+   * @brief  Root Mean Square of the elements of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_rms_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult);
+
+
+  /**
+   * @brief  Root Mean Square of the elements of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_rms_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult);
+
+
+  /**
+   * @brief  Root Mean Square of the elements of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_rms_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult);
+
+
+  /**
+   * @brief  Standard deviation of the elements of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_std_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult);
+
+
+  /**
+   * @brief  Standard deviation of the elements of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_std_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult);
+
+
+  /**
+   * @brief  Standard deviation of the elements of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_std_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult);
+
+
+  /**
+   * @brief  Floating-point complex magnitude
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Q31 complex magnitude
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Q15 complex magnitude
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Q15 complex dot product
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   * @param[out] realResult  real part of the result returned here
+   * @param[out] imagResult  imaginary part of the result returned here
+   */
+  void arm_cmplx_dot_prod_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  uint32_t numSamples,
+  q31_t * realResult,
+  q31_t * imagResult);
+
+
+  /**
+   * @brief  Q31 complex dot product
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   * @param[out] realResult  real part of the result returned here
+   * @param[out] imagResult  imaginary part of the result returned here
+   */
+  void arm_cmplx_dot_prod_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  uint32_t numSamples,
+  q63_t * realResult,
+  q63_t * imagResult);
+
+
+  /**
+   * @brief  Floating-point complex dot product
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   * @param[out] realResult  real part of the result returned here
+   * @param[out] imagResult  imaginary part of the result returned here
+   */
+  void arm_cmplx_dot_prod_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  uint32_t numSamples,
+  float32_t * realResult,
+  float32_t * imagResult);
+
+
+  /**
+   * @brief  Q15 complex-by-real multiplication
+   * @param[in]  pSrcCmplx   points to the complex input vector
+   * @param[in]  pSrcReal    points to the real input vector
+   * @param[out] pCmplxDst   points to the complex output vector
+   * @param[in]  numSamples  number of samples in each vector
+   */
+  void arm_cmplx_mult_real_q15(
+  q15_t * pSrcCmplx,
+  q15_t * pSrcReal,
+  q15_t * pCmplxDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Q31 complex-by-real multiplication
+   * @param[in]  pSrcCmplx   points to the complex input vector
+   * @param[in]  pSrcReal    points to the real input vector
+   * @param[out] pCmplxDst   points to the complex output vector
+   * @param[in]  numSamples  number of samples in each vector
+   */
+  void arm_cmplx_mult_real_q31(
+  q31_t * pSrcCmplx,
+  q31_t * pSrcReal,
+  q31_t * pCmplxDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Floating-point complex-by-real multiplication
+   * @param[in]  pSrcCmplx   points to the complex input vector
+   * @param[in]  pSrcReal    points to the real input vector
+   * @param[out] pCmplxDst   points to the complex output vector
+   * @param[in]  numSamples  number of samples in each vector
+   */
+  void arm_cmplx_mult_real_f32(
+  float32_t * pSrcCmplx,
+  float32_t * pSrcReal,
+  float32_t * pCmplxDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Minimum value of a Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] result     is output pointer
+   * @param[in]  index      is the array index of the minimum value in the input buffer.
+   */
+  void arm_min_q7(
+  q7_t * pSrc,
+  uint32_t blockSize,
+  q7_t * result,
+  uint32_t * index);
+
+
+  /**
+   * @brief  Minimum value of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output pointer
+   * @param[in]  pIndex     is the array index of the minimum value in the input buffer.
+   */
+  void arm_min_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult,
+  uint32_t * pIndex);
+
+
+  /**
+   * @brief  Minimum value of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output pointer
+   * @param[out] pIndex     is the array index of the minimum value in the input buffer.
+   */
+  void arm_min_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult,
+  uint32_t * pIndex);
+
+
+  /**
+   * @brief  Minimum value of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output pointer
+   * @param[out] pIndex     is the array index of the minimum value in the input buffer.
+   */
+  void arm_min_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult,
+  uint32_t * pIndex);
+
+
+/**
+ * @brief Maximum value of a Q7 vector.
+ * @param[in]  pSrc       points to the input buffer
+ * @param[in]  blockSize  length of the input vector
+ * @param[out] pResult    maximum value returned here
+ * @param[out] pIndex     index of maximum value returned here
+ */
+  void arm_max_q7(
+  q7_t * pSrc,
+  uint32_t blockSize,
+  q7_t * pResult,
+  uint32_t * pIndex);
+
+
+/**
+ * @brief Maximum value of a Q15 vector.
+ * @param[in]  pSrc       points to the input buffer
+ * @param[in]  blockSize  length of the input vector
+ * @param[out] pResult    maximum value returned here
+ * @param[out] pIndex     index of maximum value returned here
+ */
+  void arm_max_q15(
+  q15_t * pSrc,
+  uint32_t blockSize,
+  q15_t * pResult,
+  uint32_t * pIndex);
+
+
+/**
+ * @brief Maximum value of a Q31 vector.
+ * @param[in]  pSrc       points to the input buffer
+ * @param[in]  blockSize  length of the input vector
+ * @param[out] pResult    maximum value returned here
+ * @param[out] pIndex     index of maximum value returned here
+ */
+  void arm_max_q31(
+  q31_t * pSrc,
+  uint32_t blockSize,
+  q31_t * pResult,
+  uint32_t * pIndex);
+
+
+/**
+ * @brief Maximum value of a floating-point vector.
+ * @param[in]  pSrc       points to the input buffer
+ * @param[in]  blockSize  length of the input vector
+ * @param[out] pResult    maximum value returned here
+ * @param[out] pIndex     index of maximum value returned here
+ */
+  void arm_max_f32(
+  float32_t * pSrc,
+  uint32_t blockSize,
+  float32_t * pResult,
+  uint32_t * pIndex);
+
+
+  /**
+   * @brief  Q15 complex-by-complex multiplication
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_mult_cmplx_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Q31 complex-by-complex multiplication
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_mult_cmplx_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief  Floating-point complex-by-complex multiplication
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_mult_cmplx_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t numSamples);
+
+
+  /**
+   * @brief Converts the elements of the floating-point vector to Q31 vector.
+   * @param[in]  pSrc       points to the floating-point input vector
+   * @param[out] pDst       points to the Q31 output vector
+   * @param[in]  blockSize  length of the input vector
+   */
+  void arm_float_to_q31(
+  float32_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Converts the elements of the floating-point vector to Q15 vector.
+   * @param[in]  pSrc       points to the floating-point input vector
+   * @param[out] pDst       points to the Q15 output vector
+   * @param[in]  blockSize  length of the input vector
+   */
+  void arm_float_to_q15(
+  float32_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief Converts the elements of the floating-point vector to Q7 vector.
+   * @param[in]  pSrc       points to the floating-point input vector
+   * @param[out] pDst       points to the Q7 output vector
+   * @param[in]  blockSize  length of the input vector
+   */
+  void arm_float_to_q7(
+  float32_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q31 vector to Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q31_to_q15(
+  q31_t * pSrc,
+  q15_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q31 vector to Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q31_to_q7(
+  q31_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q15 vector to floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q15_to_float(
+  q15_t * pSrc,
+  float32_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q15 vector to Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q15_to_q31(
+  q15_t * pSrc,
+  q31_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q15 vector to Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q15_to_q7(
+  q15_t * pSrc,
+  q7_t * pDst,
+  uint32_t blockSize);
+
+
+  /**
+   * @ingroup groupInterpolation
+   */
+
+  /**
+   * @defgroup BilinearInterpolate Bilinear Interpolation
+   *
+   * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid.
+   * The underlying function <code>f(x, y)</code> is sampled on a regular grid and the interpolation process
+   * determines values between the grid points.
+   * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension.
+   * Bilinear interpolation is often used in image processing to rescale images.
+   * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types.
+   *
+   * <b>Algorithm</b>
+   * \par
+   * The instance structure used by the bilinear interpolation functions describes a two dimensional data table.
+   * For floating-point, the instance structure is defined as:
+   * <pre>
+   *   typedef struct
+   *   {
+   *     uint16_t numRows;
+   *     uint16_t numCols;
+   *     float32_t *pData;
+   * } arm_bilinear_interp_instance_f32;
+   * </pre>
+   *
+   * \par
+   * where <code>numRows</code> specifies the number of rows in the table;
+   * <code>numCols</code> specifies the number of columns in the table;
+   * and <code>pData</code> points to an array of size <code>numRows*numCols</code> values.
+   * The data table <code>pTable</code> is organized in row order and the supplied data values fall on integer indexes.
+   * That is, table element (x,y) is located at <code>pTable[x + y*numCols]</code> where x and y are integers.
+   *
+   * \par
+   * Let <code>(x, y)</code> specify the desired interpolation point.  Then define:
+   * <pre>
+   *     XF = floor(x)
+   *     YF = floor(y)
+   * </pre>
+   * \par
+   * The interpolated output point is computed as:
+   * <pre>
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+   * </pre>
+   * Note that the coordinates (x, y) contain integer and fractional components.
+   * The integer components specify which portion of the table to use while the
+   * fractional components control the interpolation processor.
+   *
+   * \par
+   * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output.
+   */
+
+  /**
+   * @addtogroup BilinearInterpolate
+   * @{
+   */
+
+
+  /**
+  *
+  * @brief  Floating-point bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate.
+  * @param[in]     Y  interpolation coordinate.
+  * @return out interpolated value.
+  */
+  static __INLINE float32_t arm_bilinear_interp_f32(
+  const arm_bilinear_interp_instance_f32 * S,
+  float32_t X,
+  float32_t Y)
+  {
+    float32_t out;
+    float32_t f00, f01, f10, f11;
+    float32_t *pData = S->pData;
+    int32_t xIndex, yIndex, index;
+    float32_t xdiff, ydiff;
+    float32_t b1, b2, b3, b4;
+
+    xIndex = (int32_t) X;
+    yIndex = (int32_t) Y;
+
+    /* Care taken for table outside boundary */
+    /* Returns zero output when values are outside table boundary */
+    if(xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 || yIndex > (S->numCols - 1))
+    {
+      return (0);
+    }
+
+    /* Calculation of index for two nearest points in X-direction */
+    index = (xIndex - 1) + (yIndex - 1) * S->numCols;
+
+
+    /* Read two nearest points in X-direction */
+    f00 = pData[index];
+    f01 = pData[index + 1];
+
+    /* Calculation of index for two nearest points in Y-direction */
+    index = (xIndex - 1) + (yIndex) * S->numCols;
+
+
+    /* Read two nearest points in Y-direction */
+    f10 = pData[index];
+    f11 = pData[index + 1];
+
+    /* Calculation of intermediate values */
+    b1 = f00;
+    b2 = f01 - f00;
+    b3 = f10 - f00;
+    b4 = f00 - f01 - f10 + f11;
+
+    /* Calculation of fractional part in X */
+    xdiff = X - xIndex;
+
+    /* Calculation of fractional part in Y */
+    ydiff = Y - yIndex;
+
+    /* Calculation of bi-linear interpolated output */
+    out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;
+
+    /* return to application */
+    return (out);
+  }
+
+
+  /**
+  *
+  * @brief  Q31 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  static __INLINE q31_t arm_bilinear_interp_q31(
+  arm_bilinear_interp_instance_q31 * S,
+  q31_t X,
+  q31_t Y)
+  {
+    q31_t out;                                   /* Temporary output */
+    q31_t acc = 0;                               /* output */
+    q31_t xfract, yfract;                        /* X, Y fractional parts */
+    q31_t x1, x2, y1, y2;                        /* Nearest output values */
+    int32_t rI, cI;                              /* Row and column indices */
+    q31_t *pYData = S->pData;                    /* pointer to output table values */
+    uint32_t nCols = S->numCols;                 /* num of rows */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    rI = ((X & (q31_t)0xFFF00000) >> 20);
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    cI = ((Y & (q31_t)0xFFF00000) >> 20);
+
+    /* Care taken for table outside boundary */
+    /* Returns zero output when values are outside table boundary */
+    if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))
+    {
+      return (0);
+    }
+
+    /* 20 bits for the fractional part */
+    /* shift left xfract by 11 to keep 1.31 format */
+    xfract = (X & 0x000FFFFF) << 11u;
+
+    /* Read two nearest output values from the index */
+    x1 = pYData[(rI) + (int32_t)nCols * (cI)    ];
+    x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1];
+
+    /* 20 bits for the fractional part */
+    /* shift left yfract by 11 to keep 1.31 format */
+    yfract = (Y & 0x000FFFFF) << 11u;
+
+    /* Read two nearest output values from the index */
+    y1 = pYData[(rI) + (int32_t)nCols * (cI + 1)    ];
+    y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1];
+
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */
+    out = ((q31_t) (((q63_t) x1  * (0x7FFFFFFF - xfract)) >> 32));
+    acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));
+
+    /* x2 * (xfract) * (1-yfract)  in 3.29(q29) and adding to acc */
+    out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));
+    acc += ((q31_t) ((q63_t) out * (xfract) >> 32));
+
+    /* y1 * (1 - xfract) * (yfract)  in 3.29(q29) and adding to acc */
+    out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));
+    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
+
+    /* y2 * (xfract) * (yfract)  in 3.29(q29) and adding to acc */
+    out = ((q31_t) ((q63_t) y2 * (xfract) >> 32));
+    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
+
+    /* Convert acc to 1.31(q31) format */
+    return ((q31_t)(acc << 2));
+  }
+
+
+  /**
+  * @brief  Q15 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  static __INLINE q15_t arm_bilinear_interp_q15(
+  arm_bilinear_interp_instance_q15 * S,
+  q31_t X,
+  q31_t Y)
+  {
+    q63_t acc = 0;                               /* output */
+    q31_t out;                                   /* Temporary output */
+    q15_t x1, x2, y1, y2;                        /* Nearest output values */
+    q31_t xfract, yfract;                        /* X, Y fractional parts */
+    int32_t rI, cI;                              /* Row and column indices */
+    q15_t *pYData = S->pData;                    /* pointer to output table values */
+    uint32_t nCols = S->numCols;                 /* num of rows */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    rI = ((X & (q31_t)0xFFF00000) >> 20);
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    cI = ((Y & (q31_t)0xFFF00000) >> 20);
+
+    /* Care taken for table outside boundary */
+    /* Returns zero output when values are outside table boundary */
+    if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))
+    {
+      return (0);
+    }
+
+    /* 20 bits for the fractional part */
+    /* xfract should be in 12.20 format */
+    xfract = (X & 0x000FFFFF);
+
+    /* Read two nearest output values from the index */
+    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];
+    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
+
+    /* 20 bits for the fractional part */
+    /* yfract should be in 12.20 format */
+    yfract = (Y & 0x000FFFFF);
+
+    /* Read two nearest output values from the index */
+    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];
+    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
+
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */
+
+    /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */
+    /* convert 13.35 to 13.31 by right shifting  and out is in 1.31 */
+    out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u);
+    acc = ((q63_t) out * (0xFFFFF - yfract));
+
+    /* x2 * (xfract) * (1-yfract)  in 1.51 and adding to acc */
+    out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u);
+    acc += ((q63_t) out * (xfract));
+
+    /* y1 * (1 - xfract) * (yfract)  in 1.51 and adding to acc */
+    out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u);
+    acc += ((q63_t) out * (yfract));
+
+    /* y2 * (xfract) * (yfract)  in 1.51 and adding to acc */
+    out = (q31_t) (((q63_t) y2 * (xfract)) >> 4u);
+    acc += ((q63_t) out * (yfract));
+
+    /* acc is in 13.51 format and down shift acc by 36 times */
+    /* Convert out to 1.15 format */
+    return ((q15_t)(acc >> 36));
+  }
+
+
+  /**
+  * @brief  Q7 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  static __INLINE q7_t arm_bilinear_interp_q7(
+  arm_bilinear_interp_instance_q7 * S,
+  q31_t X,
+  q31_t Y)
+  {
+    q63_t acc = 0;                               /* output */
+    q31_t out;                                   /* Temporary output */
+    q31_t xfract, yfract;                        /* X, Y fractional parts */
+    q7_t x1, x2, y1, y2;                         /* Nearest output values */
+    int32_t rI, cI;                              /* Row and column indices */
+    q7_t *pYData = S->pData;                     /* pointer to output table values */
+    uint32_t nCols = S->numCols;                 /* num of rows */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    rI = ((X & (q31_t)0xFFF00000) >> 20);
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    cI = ((Y & (q31_t)0xFFF00000) >> 20);
+
+    /* Care taken for table outside boundary */
+    /* Returns zero output when values are outside table boundary */
+    if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))
+    {
+      return (0);
+    }
+
+    /* 20 bits for the fractional part */
+    /* xfract should be in 12.20 format */
+    xfract = (X & (q31_t)0x000FFFFF);
+
+    /* Read two nearest output values from the index */
+    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];
+    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
+
+    /* 20 bits for the fractional part */
+    /* yfract should be in 12.20 format */
+    yfract = (Y & (q31_t)0x000FFFFF);
+
+    /* Read two nearest output values from the index */
+    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];
+    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
+
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */
+    out = ((x1 * (0xFFFFF - xfract)));
+    acc = (((q63_t) out * (0xFFFFF - yfract)));
+
+    /* x2 * (xfract) * (1-yfract)  in 2.22 and adding to acc */
+    out = ((x2 * (0xFFFFF - yfract)));
+    acc += (((q63_t) out * (xfract)));
+
+    /* y1 * (1 - xfract) * (yfract)  in 2.22 and adding to acc */
+    out = ((y1 * (0xFFFFF - xfract)));
+    acc += (((q63_t) out * (yfract)));
+
+    /* y2 * (xfract) * (yfract)  in 2.22 and adding to acc */
+    out = ((y2 * (yfract)));
+    acc += (((q63_t) out * (xfract)));
+
+    /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */
+    return ((q7_t)(acc >> 40));
+  }
+
+  /**
+   * @} end of BilinearInterpolate group
+   */
+
+
+/* SMMLAR */
+#define multAcc_32x32_keep32_R(a, x, y) \
+    a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32)
+
+/* SMMLSR */
+#define multSub_32x32_keep32_R(a, x, y) \
+    a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32)
+
+/* SMMULR */
+#define mult_32x32_keep32_R(a, x, y) \
+    a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32)
+
+/* SMMLA */
+#define multAcc_32x32_keep32(a, x, y) \
+    a += (q31_t) (((q63_t) x * y) >> 32)
+
+/* SMMLS */
+#define multSub_32x32_keep32(a, x, y) \
+    a -= (q31_t) (((q63_t) x * y) >> 32)
+
+/* SMMUL */
+#define mult_32x32_keep32(a, x, y) \
+    a = (q31_t) (((q63_t) x * y ) >> 32)
+
+
+#if defined ( __CC_ARM )
+  /* Enter low optimization region - place directly above function definition */
+  #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)
+    #define LOW_OPTIMIZATION_ENTER \
+       _Pragma ("push")         \
+       _Pragma ("O1")
+  #else
+    #define LOW_OPTIMIZATION_ENTER
+  #endif
+
+  /* Exit low optimization region - place directly after end of function definition */
+  #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)
+    #define LOW_OPTIMIZATION_EXIT \
+       _Pragma ("pop")
+  #else
+    #define LOW_OPTIMIZATION_EXIT
+  #endif
+
+  /* Enter low optimization region - place directly above function definition */
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+
+  /* Exit low optimization region - place directly after end of function definition */
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define LOW_OPTIMIZATION_ENTER
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined(__GNUC__)
+  #define LOW_OPTIMIZATION_ENTER __attribute__(( optimize("-O1") ))
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined(__ICCARM__)
+  /* Enter low optimization region - place directly above function definition */
+  #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)
+    #define LOW_OPTIMIZATION_ENTER \
+       _Pragma ("optimize=low")
+  #else
+    #define LOW_OPTIMIZATION_ENTER
+  #endif
+
+  /* Exit low optimization region - place directly after end of function definition */
+  #define LOW_OPTIMIZATION_EXIT
+
+  /* Enter low optimization region - place directly above function definition */
+  #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)
+    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \
+       _Pragma ("optimize=low")
+  #else
+    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #endif
+
+  /* Exit low optimization region - place directly after end of function definition */
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined(__CSMC__)
+  #define LOW_OPTIMIZATION_ENTER
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined(__TASKING__)
+  #define LOW_OPTIMIZATION_ENTER
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#endif
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+
+#if defined ( __GNUC__ )
+#pragma GCC diagnostic pop
+#endif
+
+#endif /* _ARM_MATH_H */
+
+/**
+ *
+ * End of file.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/cmsis_armcc.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,734 @@
+/**************************************************************************//**
+ * @file     cmsis_armcc.h
+ * @brief    CMSIS Cortex-M Core Function/Instruction Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#ifndef __CMSIS_ARMCC_H
+#define __CMSIS_ARMCC_H
+
+
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677)
+  #error "Please use ARM Compiler Toolchain V4.0.677 or later!"
+#endif
+
+/* ###########################  Core Function Access  ########################### */
+/** \ingroup  CMSIS_Core_FunctionInterface
+    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
+  @{
+ */
+
+/* intrinsic void __enable_irq();     */
+/* intrinsic void __disable_irq();    */
+
+/**
+  \brief   Get Control Register
+  \details Returns the content of the Control Register.
+  \return               Control Register value
+ */
+__STATIC_INLINE uint32_t __get_CONTROL(void)
+{
+  register uint32_t __regControl         __ASM("control");
+  return(__regControl);
+}
+
+
+/**
+  \brief   Set Control Register
+  \details Writes the given value to the Control Register.
+  \param [in]    control  Control Register value to set
+ */
+__STATIC_INLINE void __set_CONTROL(uint32_t control)
+{
+  register uint32_t __regControl         __ASM("control");
+  __regControl = control;
+}
+
+
+/**
+  \brief   Get IPSR Register
+  \details Returns the content of the IPSR Register.
+  \return               IPSR Register value
+ */
+__STATIC_INLINE uint32_t __get_IPSR(void)
+{
+  register uint32_t __regIPSR          __ASM("ipsr");
+  return(__regIPSR);
+}
+
+
+/**
+  \brief   Get APSR Register
+  \details Returns the content of the APSR Register.
+  \return               APSR Register value
+ */
+__STATIC_INLINE uint32_t __get_APSR(void)
+{
+  register uint32_t __regAPSR          __ASM("apsr");
+  return(__regAPSR);
+}
+
+
+/**
+  \brief   Get xPSR Register
+  \details Returns the content of the xPSR Register.
+  \return               xPSR Register value
+ */
+__STATIC_INLINE uint32_t __get_xPSR(void)
+{
+  register uint32_t __regXPSR          __ASM("xpsr");
+  return(__regXPSR);
+}
+
+
+/**
+  \brief   Get Process Stack Pointer
+  \details Returns the current value of the Process Stack Pointer (PSP).
+  \return               PSP Register value
+ */
+__STATIC_INLINE uint32_t __get_PSP(void)
+{
+  register uint32_t __regProcessStackPointer  __ASM("psp");
+  return(__regProcessStackPointer);
+}
+
+
+/**
+  \brief   Set Process Stack Pointer
+  \details Assigns the given value to the Process Stack Pointer (PSP).
+  \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
+{
+  register uint32_t __regProcessStackPointer  __ASM("psp");
+  __regProcessStackPointer = topOfProcStack;
+}
+
+
+/**
+  \brief   Get Main Stack Pointer
+  \details Returns the current value of the Main Stack Pointer (MSP).
+  \return               MSP Register value
+ */
+__STATIC_INLINE uint32_t __get_MSP(void)
+{
+  register uint32_t __regMainStackPointer     __ASM("msp");
+  return(__regMainStackPointer);
+}
+
+
+/**
+  \brief   Set Main Stack Pointer
+  \details Assigns the given value to the Main Stack Pointer (MSP).
+  \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
+{
+  register uint32_t __regMainStackPointer     __ASM("msp");
+  __regMainStackPointer = topOfMainStack;
+}
+
+
+/**
+  \brief   Get Priority Mask
+  \details Returns the current state of the priority mask bit from the Priority Mask Register.
+  \return               Priority Mask value
+ */
+__STATIC_INLINE uint32_t __get_PRIMASK(void)
+{
+  register uint32_t __regPriMask         __ASM("primask");
+  return(__regPriMask);
+}
+
+
+/**
+  \brief   Set Priority Mask
+  \details Assigns the given value to the Priority Mask Register.
+  \param [in]    priMask  Priority Mask
+ */
+__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
+{
+  register uint32_t __regPriMask         __ASM("primask");
+  __regPriMask = (priMask);
+}
+
+
+#if       (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U)
+
+/**
+  \brief   Enable FIQ
+  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+#define __enable_fault_irq                __enable_fiq
+
+
+/**
+  \brief   Disable FIQ
+  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+#define __disable_fault_irq               __disable_fiq
+
+
+/**
+  \brief   Get Base Priority
+  \details Returns the current value of the Base Priority register.
+  \return               Base Priority register value
+ */
+__STATIC_INLINE uint32_t  __get_BASEPRI(void)
+{
+  register uint32_t __regBasePri         __ASM("basepri");
+  return(__regBasePri);
+}
+
+
+/**
+  \brief   Set Base Priority
+  \details Assigns the given value to the Base Priority register.
+  \param [in]    basePri  Base Priority value to set
+ */
+__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
+{
+  register uint32_t __regBasePri         __ASM("basepri");
+  __regBasePri = (basePri & 0xFFU);
+}
+
+
+/**
+  \brief   Set Base Priority with condition
+  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
+           or the new value increases the BASEPRI priority level.
+  \param [in]    basePri  Base Priority value to set
+ */
+__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri)
+{
+  register uint32_t __regBasePriMax      __ASM("basepri_max");
+  __regBasePriMax = (basePri & 0xFFU);
+}
+
+
+/**
+  \brief   Get Fault Mask
+  \details Returns the current value of the Fault Mask register.
+  \return               Fault Mask register value
+ */
+__STATIC_INLINE uint32_t __get_FAULTMASK(void)
+{
+  register uint32_t __regFaultMask       __ASM("faultmask");
+  return(__regFaultMask);
+}
+
+
+/**
+  \brief   Set Fault Mask
+  \details Assigns the given value to the Fault Mask register.
+  \param [in]    faultMask  Fault Mask value to set
+ */
+__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
+{
+  register uint32_t __regFaultMask       __ASM("faultmask");
+  __regFaultMask = (faultMask & (uint32_t)1);
+}
+
+#endif /* (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U) */
+
+
+#if       (__CORTEX_M == 0x04U) || (__CORTEX_M == 0x07U)
+
+/**
+  \brief   Get FPSCR
+  \details Returns the current value of the Floating Point Status/Control register.
+  \return               Floating Point Status/Control register value
+ */
+__STATIC_INLINE uint32_t __get_FPSCR(void)
+{
+#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
+  register uint32_t __regfpscr         __ASM("fpscr");
+  return(__regfpscr);
+#else
+   return(0U);
+#endif
+}
+
+
+/**
+  \brief   Set FPSCR
+  \details Assigns the given value to the Floating Point Status/Control register.
+  \param [in]    fpscr  Floating Point Status/Control value to set
+ */
+__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
+{
+#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
+  register uint32_t __regfpscr         __ASM("fpscr");
+  __regfpscr = (fpscr);
+#endif
+}
+
+#endif /* (__CORTEX_M == 0x04U) || (__CORTEX_M == 0x07U) */
+
+
+
+/*@} end of CMSIS_Core_RegAccFunctions */
+
+
+/* ##########################  Core Instruction Access  ######################### */
+/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
+  Access to dedicated instructions
+  @{
+*/
+
+/**
+  \brief   No Operation
+  \details No Operation does nothing. This instruction can be used for code alignment purposes.
+ */
+#define __NOP                             __nop
+
+
+/**
+  \brief   Wait For Interrupt
+  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
+ */
+#define __WFI                             __wfi
+
+
+/**
+  \brief   Wait For Event
+  \details Wait For Event is a hint instruction that permits the processor to enter
+           a low-power state until one of a number of events occurs.
+ */
+#define __WFE                             __wfe
+
+
+/**
+  \brief   Send Event
+  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
+ */
+#define __SEV                             __sev
+
+
+/**
+  \brief   Instruction Synchronization Barrier
+  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
+           so that all instructions following the ISB are fetched from cache or memory,
+           after the instruction has been completed.
+ */
+#define __ISB() do {\
+                   __schedule_barrier();\
+                   __isb(0xF);\
+                   __schedule_barrier();\
+                } while (0U)
+
+/**
+  \brief   Data Synchronization Barrier
+  \details Acts as a special kind of Data Memory Barrier.
+           It completes when all explicit memory accesses before this instruction complete.
+ */
+#define __DSB() do {\
+                   __schedule_barrier();\
+                   __dsb(0xF);\
+                   __schedule_barrier();\
+                } while (0U)
+
+/**
+  \brief   Data Memory Barrier
+  \details Ensures the apparent order of the explicit memory operations before
+           and after the instruction, without ensuring their completion.
+ */
+#define __DMB() do {\
+                   __schedule_barrier();\
+                   __dmb(0xF);\
+                   __schedule_barrier();\
+                } while (0U)
+
+/**
+  \brief   Reverse byte order (32 bit)
+  \details Reverses the byte order in integer value.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#define __REV                             __rev
+
+
+/**
+  \brief   Reverse byte order (16 bit)
+  \details Reverses the byte order in two unsigned short values.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#ifndef __NO_EMBEDDED_ASM
+__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
+{
+  rev16 r0, r0
+  bx lr
+}
+#endif
+
+/**
+  \brief   Reverse byte order in signed short value
+  \details Reverses the byte order in a signed short value with sign extension to integer.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#ifndef __NO_EMBEDDED_ASM
+__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)
+{
+  revsh r0, r0
+  bx lr
+}
+#endif
+
+
+/**
+  \brief   Rotate Right in unsigned value (32 bit)
+  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
+  \param [in]    value  Value to rotate
+  \param [in]    value  Number of Bits to rotate
+  \return               Rotated value
+ */
+#define __ROR                             __ror
+
+
+/**
+  \brief   Breakpoint
+  \details Causes the processor to enter Debug state.
+           Debug tools can use this to investigate system state when the instruction at a particular address is reached.
+  \param [in]    value  is ignored by the processor.
+                 If required, a debugger can use it to store additional information about the breakpoint.
+ */
+#define __BKPT(value)                       __breakpoint(value)
+
+
+/**
+  \brief   Reverse bit order of value
+  \details Reverses the bit order of the given value.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#if       (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U)
+  #define __RBIT                          __rbit
+#else
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
+{
+  uint32_t result;
+  int32_t s = 4 /*sizeof(v)*/ * 8 - 1; /* extra shift needed at end */
+
+  result = value;                      /* r will be reversed bits of v; first get LSB of v */
+  for (value >>= 1U; value; value >>= 1U)
+  {
+    result <<= 1U;
+    result |= value & 1U;
+    s--;
+  }
+  result <<= s;                        /* shift when v's highest bits are zero */
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Count leading zeros
+  \details Counts the number of leading zeros of a data value.
+  \param [in]  value  Value to count the leading zeros
+  \return             number of leading zeros in value
+ */
+#define __CLZ                             __clz
+
+
+#if       (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U)
+
+/**
+  \brief   LDR Exclusive (8 bit)
+  \details Executes a exclusive LDR instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __LDREXB(ptr)                                                        ((uint8_t ) __ldrex(ptr))
+#else
+  #define __LDREXB(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr))  _Pragma("pop")
+#endif
+
+
+/**
+  \brief   LDR Exclusive (16 bit)
+  \details Executes a exclusive LDR instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __LDREXH(ptr)                                                        ((uint16_t) __ldrex(ptr))
+#else
+  #define __LDREXH(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr))  _Pragma("pop")
+#endif
+
+
+/**
+  \brief   LDR Exclusive (32 bit)
+  \details Executes a exclusive LDR instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __LDREXW(ptr)                                                        ((uint32_t ) __ldrex(ptr))
+#else
+  #define __LDREXW(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr))  _Pragma("pop")
+#endif
+
+
+/**
+  \brief   STR Exclusive (8 bit)
+  \details Executes a exclusive STR instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __STREXB(value, ptr)                                                 __strex(value, ptr)
+#else
+  #define __STREXB(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
+#endif
+
+
+/**
+  \brief   STR Exclusive (16 bit)
+  \details Executes a exclusive STR instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __STREXH(value, ptr)                                                 __strex(value, ptr)
+#else
+  #define __STREXH(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
+#endif
+
+
+/**
+  \brief   STR Exclusive (32 bit)
+  \details Executes a exclusive STR instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
+  #define __STREXW(value, ptr)                                                 __strex(value, ptr)
+#else
+  #define __STREXW(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
+#endif
+
+
+/**
+  \brief   Remove the exclusive lock
+  \details Removes the exclusive lock which is created by LDREX.
+ */
+#define __CLREX                           __clrex
+
+
+/**
+  \brief   Signed Saturate
+  \details Saturates a signed value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (1..32)
+  \return             Saturated value
+ */
+#define __SSAT                            __ssat
+
+
+/**
+  \brief   Unsigned Saturate
+  \details Saturates an unsigned value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (0..31)
+  \return             Saturated value
+ */
+#define __USAT                            __usat
+
+
+/**
+  \brief   Rotate Right with Extend (32 bit)
+  \details Moves each bit of a bitstring right by one bit.
+           The carry input is shifted in at the left end of the bitstring.
+  \param [in]    value  Value to rotate
+  \return               Rotated value
+ */
+#ifndef __NO_EMBEDDED_ASM
+__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value)
+{
+  rrx r0, r0
+  bx lr
+}
+#endif
+
+
+/**
+  \brief   LDRT Unprivileged (8 bit)
+  \details Executes a Unprivileged LDRT instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+#define __LDRBT(ptr)                      ((uint8_t )  __ldrt(ptr))
+
+
+/**
+  \brief   LDRT Unprivileged (16 bit)
+  \details Executes a Unprivileged LDRT instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+#define __LDRHT(ptr)                      ((uint16_t)  __ldrt(ptr))
+
+
+/**
+  \brief   LDRT Unprivileged (32 bit)
+  \details Executes a Unprivileged LDRT instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+#define __LDRT(ptr)                       ((uint32_t ) __ldrt(ptr))
+
+
+/**
+  \brief   STRT Unprivileged (8 bit)
+  \details Executes a Unprivileged STRT instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+#define __STRBT(value, ptr)               __strt(value, ptr)
+
+
+/**
+  \brief   STRT Unprivileged (16 bit)
+  \details Executes a Unprivileged STRT instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+#define __STRHT(value, ptr)               __strt(value, ptr)
+
+
+/**
+  \brief   STRT Unprivileged (32 bit)
+  \details Executes a Unprivileged STRT instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+#define __STRT(value, ptr)                __strt(value, ptr)
+
+#endif /* (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U) */
+
+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
+
+
+/* ###################  Compiler specific Intrinsics  ########################### */
+/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
+  Access to dedicated SIMD instructions
+  @{
+*/
+
+#if (__CORTEX_M >= 0x04U)  /* only for Cortex-M4 and above */
+
+#define __SADD8                           __sadd8
+#define __QADD8                           __qadd8
+#define __SHADD8                          __shadd8
+#define __UADD8                           __uadd8
+#define __UQADD8                          __uqadd8
+#define __UHADD8                          __uhadd8
+#define __SSUB8                           __ssub8
+#define __QSUB8                           __qsub8
+#define __SHSUB8                          __shsub8
+#define __USUB8                           __usub8
+#define __UQSUB8                          __uqsub8
+#define __UHSUB8                          __uhsub8
+#define __SADD16                          __sadd16
+#define __QADD16                          __qadd16
+#define __SHADD16                         __shadd16
+#define __UADD16                          __uadd16
+#define __UQADD16                         __uqadd16
+#define __UHADD16                         __uhadd16
+#define __SSUB16                          __ssub16
+#define __QSUB16                          __qsub16
+#define __SHSUB16                         __shsub16
+#define __USUB16                          __usub16
+#define __UQSUB16                         __uqsub16
+#define __UHSUB16                         __uhsub16
+#define __SASX                            __sasx
+#define __QASX                            __qasx
+#define __SHASX                           __shasx
+#define __UASX                            __uasx
+#define __UQASX                           __uqasx
+#define __UHASX                           __uhasx
+#define __SSAX                            __ssax
+#define __QSAX                            __qsax
+#define __SHSAX                           __shsax
+#define __USAX                            __usax
+#define __UQSAX                           __uqsax
+#define __UHSAX                           __uhsax
+#define __USAD8                           __usad8
+#define __USADA8                          __usada8
+#define __SSAT16                          __ssat16
+#define __USAT16                          __usat16
+#define __UXTB16                          __uxtb16
+#define __UXTAB16                         __uxtab16
+#define __SXTB16                          __sxtb16
+#define __SXTAB16                         __sxtab16
+#define __SMUAD                           __smuad
+#define __SMUADX                          __smuadx
+#define __SMLAD                           __smlad
+#define __SMLADX                          __smladx
+#define __SMLALD                          __smlald
+#define __SMLALDX                         __smlaldx
+#define __SMUSD                           __smusd
+#define __SMUSDX                          __smusdx
+#define __SMLSD                           __smlsd
+#define __SMLSDX                          __smlsdx
+#define __SMLSLD                          __smlsld
+#define __SMLSLDX                         __smlsldx
+#define __SEL                             __sel
+#define __QADD                            __qadd
+#define __QSUB                            __qsub
+
+#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \
+                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )
+
+#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \
+                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )
+
+#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \
+                                                      ((int64_t)(ARG3) << 32U)     ) >> 32U))
+
+#endif /* (__CORTEX_M >= 0x04) */
+/*@} end of group CMSIS_SIMD_intrinsics */
+
+
+#endif /* __CMSIS_ARMCC_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/cmsis_armcc_V6.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1800 @@
+/**************************************************************************//**
+ * @file     cmsis_armcc_V6.h
+ * @brief    CMSIS Cortex-M Core Function/Instruction Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#ifndef __CMSIS_ARMCC_V6_H
+#define __CMSIS_ARMCC_V6_H
+
+
+/* ###########################  Core Function Access  ########################### */
+/** \ingroup  CMSIS_Core_FunctionInterface
+    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
+  @{
+ */
+
+/**
+  \brief   Enable IRQ Interrupts
+  \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __enable_irq(void)
+{
+  __ASM volatile ("cpsie i" : : : "memory");
+}
+
+
+/**
+  \brief   Disable IRQ Interrupts
+  \details Disables IRQ interrupts by setting the I-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __disable_irq(void)
+{
+  __ASM volatile ("cpsid i" : : : "memory");
+}
+
+
+/**
+  \brief   Get Control Register
+  \details Returns the content of the Control Register.
+  \return               Control Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_CONTROL(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, control" : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Control Register (non-secure)
+  \details Returns the content of the non-secure Control Register when in secure mode.
+  \return               non-secure Control Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_CONTROL_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, control_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Control Register
+  \details Writes the given value to the Control Register.
+  \param [in]    control  Control Register value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_CONTROL(uint32_t control)
+{
+  __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Control Register (non-secure)
+  \details Writes the given value to the non-secure Control Register when in secure state.
+  \param [in]    control  Control Register value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_CONTROL_NS(uint32_t control)
+{
+  __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");
+}
+#endif
+
+
+/**
+  \brief   Get IPSR Register
+  \details Returns the content of the IPSR Register.
+  \return               IPSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_IPSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get IPSR Register (non-secure)
+  \details Returns the content of the non-secure IPSR Register when in secure state.
+  \return               IPSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_IPSR_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, ipsr_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Get APSR Register
+  \details Returns the content of the APSR Register.
+  \return               APSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_APSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, apsr" : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get APSR Register (non-secure)
+  \details Returns the content of the non-secure APSR Register when in secure state.
+  \return               APSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_APSR_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, apsr_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Get xPSR Register
+  \details Returns the content of the xPSR Register.
+  \return               xPSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_xPSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get xPSR Register (non-secure)
+  \details Returns the content of the non-secure xPSR Register when in secure state.
+  \return               xPSR Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_xPSR_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, xpsr_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Get Process Stack Pointer
+  \details Returns the current value of the Process Stack Pointer (PSP).
+  \return               PSP Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PSP(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, psp"  : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Process Stack Pointer (non-secure)
+  \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.
+  \return               PSP Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_PSP_NS(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, psp_ns"  : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Process Stack Pointer
+  \details Assigns the given value to the Process Stack Pointer (PSP).
+  \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
+{
+  __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : "sp");
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Process Stack Pointer (non-secure)
+  \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.
+  \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
+{
+  __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : "sp");
+}
+#endif
+
+
+/**
+  \brief   Get Main Stack Pointer
+  \details Returns the current value of the Main Stack Pointer (MSP).
+  \return               MSP Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_MSP(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, msp" : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Main Stack Pointer (non-secure)
+  \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.
+  \return               MSP Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_MSP_NS(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Main Stack Pointer
+  \details Assigns the given value to the Main Stack Pointer (MSP).
+  \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
+{
+  __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : "sp");
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Main Stack Pointer (non-secure)
+  \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.
+  \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
+{
+  __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : "sp");
+}
+#endif
+
+
+/**
+  \brief   Get Priority Mask
+  \details Returns the current state of the priority mask bit from the Priority Mask Register.
+  \return               Priority Mask value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PRIMASK(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, primask" : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Priority Mask (non-secure)
+  \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.
+  \return               Priority Mask value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_PRIMASK_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, primask_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Priority Mask
+  \details Assigns the given value to the Priority Mask Register.
+  \param [in]    priMask  Priority Mask
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
+{
+  __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Priority Mask (non-secure)
+  \details Assigns the given value to the non-secure Priority Mask Register when in secure state.
+  \param [in]    priMask  Priority Mask
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
+{
+  __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");
+}
+#endif
+
+
+#if ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U))  /* ToDo:  ARMCC_V6: check if this is ok for cortex >=3 */
+
+/**
+  \brief   Enable FIQ
+  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __enable_fault_irq(void)
+{
+  __ASM volatile ("cpsie f" : : : "memory");
+}
+
+
+/**
+  \brief   Disable FIQ
+  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __disable_fault_irq(void)
+{
+  __ASM volatile ("cpsid f" : : : "memory");
+}
+
+
+/**
+  \brief   Get Base Priority
+  \details Returns the current value of the Base Priority register.
+  \return               Base Priority register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_BASEPRI(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, basepri" : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Base Priority (non-secure)
+  \details Returns the current value of the non-secure Base Priority register when in secure state.
+  \return               Base Priority register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_BASEPRI_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Base Priority
+  \details Assigns the given value to the Base Priority register.
+  \param [in]    basePri  Base Priority value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_BASEPRI(uint32_t value)
+{
+  __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory");
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Base Priority (non-secure)
+  \details Assigns the given value to the non-secure Base Priority register when in secure state.
+  \param [in]    basePri  Base Priority value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_BASEPRI_NS(uint32_t value)
+{
+  __ASM volatile ("MSR basepri_ns, %0" : : "r" (value) : "memory");
+}
+#endif
+
+
+/**
+  \brief   Set Base Priority with condition
+  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
+           or the new value increases the BASEPRI priority level.
+  \param [in]    basePri  Base Priority value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t value)
+{
+  __ASM volatile ("MSR basepri_max, %0" : : "r" (value) : "memory");
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Base Priority with condition (non_secure)
+  \details Assigns the given value to the non-secure Base Priority register when in secure state only if BASEPRI masking is disabled,
+	       or the new value increases the BASEPRI priority level.
+  \param [in]    basePri  Base Priority value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_BASEPRI_MAX_NS(uint32_t value)
+{
+  __ASM volatile ("MSR basepri_max_ns, %0" : : "r" (value) : "memory");
+}
+#endif
+
+
+/**
+  \brief   Get Fault Mask
+  \details Returns the current value of the Fault Mask register.
+  \return               Fault Mask register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_FAULTMASK(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Fault Mask (non-secure)
+  \details Returns the current value of the non-secure Fault Mask register when in secure state.
+  \return               Fault Mask register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_FAULTMASK_NS(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Fault Mask
+  \details Assigns the given value to the Fault Mask register.
+  \param [in]    faultMask  Fault Mask value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
+{
+  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Fault Mask (non-secure)
+  \details Assigns the given value to the non-secure Fault Mask register when in secure state.
+  \param [in]    faultMask  Fault Mask value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
+{
+  __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");
+}
+#endif
+
+
+#endif /* ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_8M__ == 1U)) */
+
+
+#if (__ARM_ARCH_8M__ == 1U)
+
+/**
+  \brief   Get Process Stack Pointer Limit
+  \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).
+  \return               PSPLIM Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PSPLIM(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, psplim"  : "=r" (result) );
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U) && (__ARM_ARCH_PROFILE == 'M')     /* ToDo:  ARMCC_V6: check predefined macro for mainline */
+/**
+  \brief   Get Process Stack Pointer Limit (non-secure)
+  \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
+  \return               PSPLIM Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_PSPLIM_NS(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, psplim_ns"  : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Process Stack Pointer Limit
+  \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).
+  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
+{
+  __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U) && (__ARM_ARCH_PROFILE == 'M')     /* ToDo:  ARMCC_V6: check predefined macro for mainline */
+/**
+  \brief   Set Process Stack Pointer (non-secure)
+  \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
+  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
+{
+  __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));
+}
+#endif
+
+
+/**
+  \brief   Get Main Stack Pointer Limit
+  \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).
+  \return               MSPLIM Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_MSPLIM(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, msplim" : "=r" (result) );
+
+  return(result);
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U) && (__ARM_ARCH_PROFILE == 'M')     /* ToDo:  ARMCC_V6: check predefined macro for mainline */
+/**
+  \brief   Get Main Stack Pointer Limit (non-secure)
+  \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.
+  \return               MSPLIM Register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_MSPLIM_NS(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Set Main Stack Pointer Limit
+  \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).
+  \param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
+{
+  __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));
+}
+
+
+#if  (__ARM_FEATURE_CMSE == 3U) && (__ARM_ARCH_PROFILE == 'M')     /* ToDo:  ARMCC_V6: check predefined macro for mainline */
+/**
+  \brief   Set Main Stack Pointer Limit (non-secure)
+  \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.
+  \param [in]    MainStackPtrLimit  Main Stack Pointer value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
+{
+  __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));
+}
+#endif
+
+#endif /* (__ARM_ARCH_8M__ == 1U) */
+
+
+#if ((__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U))  /* ToDo:  ARMCC_V6: check if this is ok for cortex >=4 */
+
+/**
+  \brief   Get FPSCR
+  \details eturns the current value of the Floating Point Status/Control register.
+  \return               Floating Point Status/Control register value
+ */
+#define __get_FPSCR      __builtin_arm_get_fpscr
+#if 0
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_FPSCR(void)
+{
+#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
+  uint32_t result;
+
+  __ASM volatile ("");                                 /* Empty asm statement works as a scheduling barrier */
+  __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
+  __ASM volatile ("");
+  return(result);
+#else
+   return(0);
+#endif
+}
+#endif
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get FPSCR (non-secure)
+  \details Returns the current value of the non-secure Floating Point Status/Control register when in secure state.
+  \return               Floating Point Status/Control register value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_FPSCR_NS(void)
+{
+#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
+  uint32_t result;
+
+  __ASM volatile ("");                                 /* Empty asm statement works as a scheduling barrier */
+  __ASM volatile ("VMRS %0, fpscr_ns" : "=r" (result) );
+  __ASM volatile ("");
+  return(result);
+#else
+   return(0);
+#endif
+}
+#endif
+
+
+/**
+  \brief   Set FPSCR
+  \details Assigns the given value to the Floating Point Status/Control register.
+  \param [in]    fpscr  Floating Point Status/Control value to set
+ */
+#define __set_FPSCR      __builtin_arm_set_fpscr
+#if 0
+__attribute__((always_inline)) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
+{
+#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
+  __ASM volatile ("");                                 /* Empty asm statement works as a scheduling barrier */
+  __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");
+  __ASM volatile ("");
+#endif
+}
+#endif
+
+#if  (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set FPSCR (non-secure)
+  \details Assigns the given value to the non-secure Floating Point Status/Control register when in secure state.
+  \param [in]    fpscr  Floating Point Status/Control value to set
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_FPSCR_NS(uint32_t fpscr)
+{
+#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
+  __ASM volatile ("");                                 /* Empty asm statement works as a scheduling barrier */
+  __ASM volatile ("VMSR fpscr_ns, %0" : : "r" (fpscr) : "vfpcc");
+  __ASM volatile ("");
+#endif
+}
+#endif
+
+#endif /* ((__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U)) */
+
+
+
+/*@} end of CMSIS_Core_RegAccFunctions */
+
+
+/* ##########################  Core Instruction Access  ######################### */
+/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
+  Access to dedicated instructions
+  @{
+*/
+
+/* Define macros for porting to both thumb1 and thumb2.
+ * For thumb1, use low register (r0-r7), specified by constraint "l"
+ * Otherwise, use general registers, specified by constraint "r" */
+#if defined (__thumb__) && !defined (__thumb2__)
+#define __CMSIS_GCC_OUT_REG(r) "=l" (r)
+#define __CMSIS_GCC_USE_REG(r) "l" (r)
+#else
+#define __CMSIS_GCC_OUT_REG(r) "=r" (r)
+#define __CMSIS_GCC_USE_REG(r) "r" (r)
+#endif
+
+/**
+  \brief   No Operation
+  \details No Operation does nothing. This instruction can be used for code alignment purposes.
+ */
+#define __NOP          __builtin_arm_nop
+
+/**
+  \brief   Wait For Interrupt
+  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
+ */
+#define __WFI          __builtin_arm_wfi
+
+
+/**
+  \brief   Wait For Event
+  \details Wait For Event is a hint instruction that permits the processor to enter
+           a low-power state until one of a number of events occurs.
+ */
+#define __WFE          __builtin_arm_wfe
+
+
+/**
+  \brief   Send Event
+  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
+ */
+#define __SEV          __builtin_arm_sev
+
+
+/**
+  \brief   Instruction Synchronization Barrier
+  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
+           so that all instructions following the ISB are fetched from cache or memory,
+           after the instruction has been completed.
+ */
+#define __ISB()        __builtin_arm_isb(0xF);
+
+/**
+  \brief   Data Synchronization Barrier
+  \details Acts as a special kind of Data Memory Barrier.
+           It completes when all explicit memory accesses before this instruction complete.
+ */
+#define __DSB()        __builtin_arm_dsb(0xF);
+
+
+/**
+  \brief   Data Memory Barrier
+  \details Ensures the apparent order of the explicit memory operations before
+           and after the instruction, without ensuring their completion.
+ */
+#define __DMB()        __builtin_arm_dmb(0xF);
+
+
+/**
+  \brief   Reverse byte order (32 bit)
+  \details Reverses the byte order in integer value.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#define __REV          __builtin_bswap32
+
+
+/**
+  \brief   Reverse byte order (16 bit)
+  \details Reverses the byte order in two unsigned short values.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+#define __REV16          __builtin_bswap16                           /* ToDo:  ARMCC_V6: check if __builtin_bswap16 could be used */
+#if 0
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV16(uint32_t value)
+{
+  uint32_t result;
+
+  __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return(result);
+}
+#endif
+
+
+/**
+  \brief   Reverse byte order in signed short value
+  \details Reverses the byte order in a signed short value with sign extension to integer.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+                                                          /* ToDo:  ARMCC_V6: check if __builtin_bswap16 could be used */
+__attribute__((always_inline)) __STATIC_INLINE int32_t __REVSH(int32_t value)
+{
+  int32_t result;
+
+  __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return(result);
+}
+
+
+/**
+  \brief   Rotate Right in unsigned value (32 bit)
+  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
+  \param [in]    op1  Value to rotate
+  \param [in]    op2  Number of Bits to rotate
+  \return               Rotated value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
+{
+  return (op1 >> op2) | (op1 << (32U - op2));
+}
+
+
+/**
+  \brief   Breakpoint
+  \details Causes the processor to enter Debug state.
+            Debug tools can use this to investigate system state when the instruction at a particular address is reached.
+    \param [in]    value  is ignored by the processor.
+                   If required, a debugger can use it to store additional information about the breakpoint.
+ */
+#define __BKPT(value)                       __ASM volatile ("bkpt "#value)
+
+
+/**
+  \brief   Reverse bit order of value
+  \details Reverses the bit order of the given value.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+                                                          /* ToDo:  ARMCC_V6: check if __builtin_arm_rbit is supported */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
+{
+  uint32_t result;
+
+#if ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U))  /* ToDo:  ARMCC_V6: check if this is ok for cortex >=3 */
+   __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
+#else
+  int32_t s = 4 /*sizeof(v)*/ * 8 - 1; /* extra shift needed at end */
+
+  result = value;                      /* r will be reversed bits of v; first get LSB of v */
+  for (value >>= 1U; value; value >>= 1U)
+  {
+    result <<= 1U;
+    result |= value & 1U;
+    s--;
+  }
+  result <<= s;                        /* shift when v's highest bits are zero */
+#endif
+  return(result);
+}
+
+
+/**
+  \brief   Count leading zeros
+  \details Counts the number of leading zeros of a data value.
+  \param [in]  value  Value to count the leading zeros
+  \return             number of leading zeros in value
+ */
+#define __CLZ             __builtin_clz
+
+
+#if ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U))  /* ToDo:  ARMCC_V6: check if this is ok for cortex >=3 */
+
+/**
+  \brief   LDR Exclusive (8 bit)
+  \details Executes a exclusive LDR instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+#define __LDREXB        (uint8_t)__builtin_arm_ldrex
+
+
+/**
+  \brief   LDR Exclusive (16 bit)
+  \details Executes a exclusive LDR instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+#define __LDREXH        (uint16_t)__builtin_arm_ldrex
+
+
+/**
+  \brief   LDR Exclusive (32 bit)
+  \details Executes a exclusive LDR instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+#define __LDREXW        (uint32_t)__builtin_arm_ldrex
+
+
+/**
+  \brief   STR Exclusive (8 bit)
+  \details Executes a exclusive STR instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#define __STREXB        (uint32_t)__builtin_arm_strex
+
+
+/**
+  \brief   STR Exclusive (16 bit)
+  \details Executes a exclusive STR instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#define __STREXH        (uint32_t)__builtin_arm_strex
+
+
+/**
+  \brief   STR Exclusive (32 bit)
+  \details Executes a exclusive STR instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#define __STREXW        (uint32_t)__builtin_arm_strex
+
+
+/**
+  \brief   Remove the exclusive lock
+  \details Removes the exclusive lock which is created by LDREX.
+ */
+#define __CLREX             __builtin_arm_clrex
+
+
+/**
+  \brief   Signed Saturate
+  \details Saturates a signed value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (1..32)
+  \return             Saturated value
+ */
+/*#define __SSAT             __builtin_arm_ssat*/
+#define __SSAT(ARG1,ARG2) \
+({                          \
+  int32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("ssat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+
+/**
+  \brief   Unsigned Saturate
+  \details Saturates an unsigned value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (0..31)
+  \return             Saturated value
+ */
+#define __USAT             __builtin_arm_usat
+#if 0
+#define __USAT(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("usat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+#endif
+
+
+/**
+  \brief   Rotate Right with Extend (32 bit)
+  \details Moves each bit of a bitstring right by one bit.
+           The carry input is shifted in at the left end of the bitstring.
+  \param [in]    value  Value to rotate
+  \return               Rotated value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RRX(uint32_t value)
+{
+  uint32_t result;
+
+  __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return(result);
+}
+
+
+/**
+  \brief   LDRT Unprivileged (8 bit)
+  \details Executes a Unprivileged LDRT instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDRBT(volatile uint8_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return ((uint8_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDRT Unprivileged (16 bit)
+  \details Executes a Unprivileged LDRT instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDRHT(volatile uint16_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return ((uint16_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDRT Unprivileged (32 bit)
+  \details Executes a Unprivileged LDRT instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDRT(volatile uint32_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return(result);
+}
+
+
+/**
+  \brief   STRT Unprivileged (8 bit)
+  \details Executes a Unprivileged STRT instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
+{
+   __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   STRT Unprivileged (16 bit)
+  \details Executes a Unprivileged STRT instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
+{
+   __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   STRT Unprivileged (32 bit)
+  \details Executes a Unprivileged STRT instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
+{
+   __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) );
+}
+
+#endif /* ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U)) */
+
+
+#if (__ARM_ARCH_8M__ == 1U)
+
+/**
+  \brief   Load-Acquire (8 bit)
+  \details Executes a LDAB instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDAB(volatile uint8_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return ((uint8_t) result);
+}
+
+
+/**
+  \brief   Load-Acquire (16 bit)
+  \details Executes a LDAH instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDAH(volatile uint16_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return ((uint16_t) result);
+}
+
+
+/**
+  \brief   Load-Acquire (32 bit)
+  \details Executes a LDA instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDA(volatile uint32_t *ptr)
+{
+    uint32_t result;
+
+   __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) );
+   return(result);
+}
+
+
+/**
+  \brief   Store-Release (8 bit)
+  \details Executes a STLB instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
+{
+   __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   Store-Release (16 bit)
+  \details Executes a STLH instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
+{
+   __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   Store-Release (32 bit)
+  \details Executes a STL instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STL(uint32_t value, volatile uint32_t *ptr)
+{
+   __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   Load-Acquire Exclusive (8 bit)
+  \details Executes a LDAB exclusive instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+#define     __LDAEXB                 (uint8_t)__builtin_arm_ldaex
+
+
+/**
+  \brief   Load-Acquire Exclusive (16 bit)
+  \details Executes a LDAH exclusive instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+#define     __LDAEXH                 (uint16_t)__builtin_arm_ldaex
+
+
+/**
+  \brief   Load-Acquire Exclusive (32 bit)
+  \details Executes a LDA exclusive instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+#define     __LDAEX                  (uint32_t)__builtin_arm_ldaex
+
+
+/**
+  \brief   Store-Release Exclusive (8 bit)
+  \details Executes a STLB exclusive instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#define     __STLEXB                 (uint32_t)__builtin_arm_stlex
+
+
+/**
+  \brief   Store-Release Exclusive (16 bit)
+  \details Executes a STLH exclusive instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#define     __STLEXH                 (uint32_t)__builtin_arm_stlex
+
+
+/**
+  \brief   Store-Release Exclusive (32 bit)
+  \details Executes a STL exclusive instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+#define     __STLEX                  (uint32_t)__builtin_arm_stlex
+
+#endif /* (__ARM_ARCH_8M__ == 1U) */
+
+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
+
+
+/* ###################  Compiler specific Intrinsics  ########################### */
+/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
+  Access to dedicated SIMD instructions
+  @{
+*/
+
+#if (__ARM_FEATURE_DSP == 1U)        /* ToDo:  ARMCC_V6: This should be ARCH >= ARMv7-M + SIMD */
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+#define __SSAT16(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+#define __USAT16(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("usat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1)
+{
+  uint32_t result;
+
+  __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1)
+{
+  uint32_t result;
+
+  __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE  int32_t __QADD( int32_t op1,  int32_t op2)
+{
+  int32_t result;
+
+  __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__((always_inline)) __STATIC_INLINE  int32_t __QSUB( int32_t op1,  int32_t op2)
+{
+  int32_t result;
+
+  __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+#define __PKHBT(ARG1,ARG2,ARG3) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
+  __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
+  __RES; \
+ })
+
+#define __PKHTB(ARG1,ARG2,ARG3) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
+  if (ARG3 == 0) \
+    __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2)  ); \
+  else \
+    __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
+  __RES; \
+ })
+
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)
+{
+ int32_t result;
+
+ __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r"  (op1), "r" (op2), "r" (op3) );
+ return(result);
+}
+
+#endif /* (__ARM_FEATURE_DSP == 1U) */
+/*@} end of group CMSIS_SIMD_intrinsics */
+
+
+#endif /* __CMSIS_ARMCC_V6_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/cmsis_gcc.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1373 @@
+/**************************************************************************//**
+ * @file     cmsis_gcc.h
+ * @brief    CMSIS Cortex-M Core Function/Instruction Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#ifndef __CMSIS_GCC_H
+#define __CMSIS_GCC_H
+
+/* ignore some GCC warnings */
+#if defined ( __GNUC__ )
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#pragma GCC diagnostic ignored "-Wconversion"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
+
+
+/* ###########################  Core Function Access  ########################### */
+/** \ingroup  CMSIS_Core_FunctionInterface
+    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
+  @{
+ */
+
+/**
+  \brief   Enable IRQ Interrupts
+  \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)
+{
+  __ASM volatile ("cpsie i" : : : "memory");
+}
+
+
+/**
+  \brief   Disable IRQ Interrupts
+  \details Disables IRQ interrupts by setting the I-bit in the CPSR.
+  Can only be executed in Privileged modes.
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
+{
+  __ASM volatile ("cpsid i" : : : "memory");
+}
+
+
+/**
+  \brief   Get Control Register
+  \details Returns the content of the Control Register.
+  \return               Control Register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, control" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Set Control Register
+  \details Writes the given value to the Control Register.
+  \param [in]    control  Control Register value to set
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)
+{
+  __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
+}
+
+
+/**
+  \brief   Get IPSR Register
+  \details Returns the content of the IPSR Register.
+  \return               IPSR Register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Get APSR Register
+  \details Returns the content of the APSR Register.
+  \return               APSR Register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, apsr" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Get xPSR Register
+  \details Returns the content of the xPSR Register.
+
+    \return               xPSR Register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Get Process Stack Pointer
+  \details Returns the current value of the Process Stack Pointer (PSP).
+  \return               PSP Register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, psp\n"  : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Set Process Stack Pointer
+  \details Assigns the given value to the Process Stack Pointer (PSP).
+  \param [in]    topOfProcStack  Process Stack Pointer value to set
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
+{
+  __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) : "sp");
+}
+
+
+/**
+  \brief   Get Main Stack Pointer
+  \details Returns the current value of the Main Stack Pointer (MSP).
+  \return               MSP Register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)
+{
+  register uint32_t result;
+
+  __ASM volatile ("MRS %0, msp\n" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Set Main Stack Pointer
+  \details Assigns the given value to the Main Stack Pointer (MSP).
+
+    \param [in]    topOfMainStack  Main Stack Pointer value to set
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
+{
+  __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) : "sp");
+}
+
+
+/**
+  \brief   Get Priority Mask
+  \details Returns the current state of the priority mask bit from the Priority Mask Register.
+  \return               Priority Mask value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, primask" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Set Priority Mask
+  \details Assigns the given value to the Priority Mask Register.
+  \param [in]    priMask  Priority Mask
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
+{
+  __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
+}
+
+
+#if       (__CORTEX_M >= 0x03U)
+
+/**
+  \brief   Enable FIQ
+  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)
+{
+  __ASM volatile ("cpsie f" : : : "memory");
+}
+
+
+/**
+  \brief   Disable FIQ
+  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
+           Can only be executed in Privileged modes.
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)
+{
+  __ASM volatile ("cpsid f" : : : "memory");
+}
+
+
+/**
+  \brief   Get Base Priority
+  \details Returns the current value of the Base Priority register.
+  \return               Base Priority register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, basepri" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Set Base Priority
+  \details Assigns the given value to the Base Priority register.
+  \param [in]    basePri  Base Priority value to set
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)
+{
+  __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory");
+}
+
+
+/**
+  \brief   Set Base Priority with condition
+  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
+           or the new value increases the BASEPRI priority level.
+  \param [in]    basePri  Base Priority value to set
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t value)
+{
+  __ASM volatile ("MSR basepri_max, %0" : : "r" (value) : "memory");
+}
+
+
+/**
+  \brief   Get Fault Mask
+  \details Returns the current value of the Fault Mask register.
+  \return               Fault Mask register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)
+{
+  uint32_t result;
+
+  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
+  return(result);
+}
+
+
+/**
+  \brief   Set Fault Mask
+  \details Assigns the given value to the Fault Mask register.
+  \param [in]    faultMask  Fault Mask value to set
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
+{
+  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
+}
+
+#endif /* (__CORTEX_M >= 0x03U) */
+
+
+#if       (__CORTEX_M == 0x04U) || (__CORTEX_M == 0x07U)
+
+/**
+  \brief   Get FPSCR
+  \details Returns the current value of the Floating Point Status/Control register.
+  \return               Floating Point Status/Control register value
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)
+{
+#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
+  uint32_t result;
+
+  /* Empty asm statement works as a scheduling barrier */
+  __ASM volatile ("");
+  __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
+  __ASM volatile ("");
+  return(result);
+#else
+   return(0);
+#endif
+}
+
+
+/**
+  \brief   Set FPSCR
+  \details Assigns the given value to the Floating Point Status/Control register.
+  \param [in]    fpscr  Floating Point Status/Control value to set
+ */
+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
+{
+#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
+  /* Empty asm statement works as a scheduling barrier */
+  __ASM volatile ("");
+  __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");
+  __ASM volatile ("");
+#endif
+}
+
+#endif /* (__CORTEX_M == 0x04U) || (__CORTEX_M == 0x07U) */
+
+
+
+/*@} end of CMSIS_Core_RegAccFunctions */
+
+
+/* ##########################  Core Instruction Access  ######################### */
+/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
+  Access to dedicated instructions
+  @{
+*/
+
+/* Define macros for porting to both thumb1 and thumb2.
+ * For thumb1, use low register (r0-r7), specified by constraint "l"
+ * Otherwise, use general registers, specified by constraint "r" */
+#if defined (__thumb__) && !defined (__thumb2__)
+#define __CMSIS_GCC_OUT_REG(r) "=l" (r)
+#define __CMSIS_GCC_USE_REG(r) "l" (r)
+#else
+#define __CMSIS_GCC_OUT_REG(r) "=r" (r)
+#define __CMSIS_GCC_USE_REG(r) "r" (r)
+#endif
+
+/**
+  \brief   No Operation
+  \details No Operation does nothing. This instruction can be used for code alignment purposes.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __NOP(void)
+{
+  __ASM volatile ("nop");
+}
+
+
+/**
+  \brief   Wait For Interrupt
+  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __WFI(void)
+{
+  __ASM volatile ("wfi");
+}
+
+
+/**
+  \brief   Wait For Event
+  \details Wait For Event is a hint instruction that permits the processor to enter
+    a low-power state until one of a number of events occurs.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __WFE(void)
+{
+  __ASM volatile ("wfe");
+}
+
+
+/**
+  \brief   Send Event
+  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __SEV(void)
+{
+  __ASM volatile ("sev");
+}
+
+
+/**
+  \brief   Instruction Synchronization Barrier
+  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
+           so that all instructions following the ISB are fetched from cache or memory,
+           after the instruction has been completed.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __ISB(void)
+{
+  __ASM volatile ("isb 0xF":::"memory");
+}
+
+
+/**
+  \brief   Data Synchronization Barrier
+  \details Acts as a special kind of Data Memory Barrier.
+           It completes when all explicit memory accesses before this instruction complete.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __DSB(void)
+{
+  __ASM volatile ("dsb 0xF":::"memory");
+}
+
+
+/**
+  \brief   Data Memory Barrier
+  \details Ensures the apparent order of the explicit memory operations before
+           and after the instruction, without ensuring their completion.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __DMB(void)
+{
+  __ASM volatile ("dmb 0xF":::"memory");
+}
+
+
+/**
+  \brief   Reverse byte order (32 bit)
+  \details Reverses the byte order in integer value.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV(uint32_t value)
+{
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+  return __builtin_bswap32(value);
+#else
+  uint32_t result;
+
+  __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return(result);
+#endif
+}
+
+
+/**
+  \brief   Reverse byte order (16 bit)
+  \details Reverses the byte order in two unsigned short values.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV16(uint32_t value)
+{
+  uint32_t result;
+
+  __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return(result);
+}
+
+
+/**
+  \brief   Reverse byte order in signed short value
+  \details Reverses the byte order in a signed short value with sign extension to integer.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+__attribute__((always_inline)) __STATIC_INLINE int32_t __REVSH(int32_t value)
+{
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+  return (short)__builtin_bswap16(value);
+#else
+  int32_t result;
+
+  __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return(result);
+#endif
+}
+
+
+/**
+  \brief   Rotate Right in unsigned value (32 bit)
+  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
+  \param [in]    value  Value to rotate
+  \param [in]    value  Number of Bits to rotate
+  \return               Rotated value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
+{
+  return (op1 >> op2) | (op1 << (32U - op2));
+}
+
+
+/**
+  \brief   Breakpoint
+  \details Causes the processor to enter Debug state.
+           Debug tools can use this to investigate system state when the instruction at a particular address is reached.
+  \param [in]    value  is ignored by the processor.
+                 If required, a debugger can use it to store additional information about the breakpoint.
+ */
+#define __BKPT(value)                       __ASM volatile ("bkpt "#value)
+
+
+/**
+  \brief   Reverse bit order of value
+  \details Reverses the bit order of the given value.
+  \param [in]    value  Value to reverse
+  \return               Reversed value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
+{
+  uint32_t result;
+
+#if       (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U)
+   __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
+#else
+  int32_t s = 4 /*sizeof(v)*/ * 8 - 1; /* extra shift needed at end */
+
+  result = value;                      /* r will be reversed bits of v; first get LSB of v */
+  for (value >>= 1U; value; value >>= 1U)
+  {
+    result <<= 1U;
+    result |= value & 1U;
+    s--;
+  }
+  result <<= s;                        /* shift when v's highest bits are zero */
+#endif
+  return(result);
+}
+
+
+/**
+  \brief   Count leading zeros
+  \details Counts the number of leading zeros of a data value.
+  \param [in]  value  Value to count the leading zeros
+  \return             number of leading zeros in value
+ */
+#define __CLZ             __builtin_clz
+
+
+#if       (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U)
+
+/**
+  \brief   LDR Exclusive (8 bit)
+  \details Executes a exclusive LDR instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)
+{
+    uint32_t result;
+
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+   __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) );
+#else
+    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
+       accepted by assembler. So has to use following less efficient pattern.
+    */
+   __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+#endif
+   return ((uint8_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDR Exclusive (16 bit)
+  \details Executes a exclusive LDR instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)
+{
+    uint32_t result;
+
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+   __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) );
+#else
+    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
+       accepted by assembler. So has to use following less efficient pattern.
+    */
+   __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+#endif
+   return ((uint16_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDR Exclusive (32 bit)
+  \details Executes a exclusive LDR instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
+   return(result);
+}
+
+
+/**
+  \brief   STR Exclusive (8 bit)
+  \details Executes a exclusive STR instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
+{
+   uint32_t result;
+
+   __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );
+   return(result);
+}
+
+
+/**
+  \brief   STR Exclusive (16 bit)
+  \details Executes a exclusive STR instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
+{
+   uint32_t result;
+
+   __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );
+   return(result);
+}
+
+
+/**
+  \brief   STR Exclusive (32 bit)
+  \details Executes a exclusive STR instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+  \return          0  Function succeeded
+  \return          1  Function failed
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
+{
+   uint32_t result;
+
+   __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
+   return(result);
+}
+
+
+/**
+  \brief   Remove the exclusive lock
+  \details Removes the exclusive lock which is created by LDREX.
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __CLREX(void)
+{
+  __ASM volatile ("clrex" ::: "memory");
+}
+
+
+/**
+  \brief   Signed Saturate
+  \details Saturates a signed value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (1..32)
+  \return             Saturated value
+ */
+#define __SSAT(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("ssat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+
+/**
+  \brief   Unsigned Saturate
+  \details Saturates an unsigned value.
+  \param [in]  value  Value to be saturated
+  \param [in]    sat  Bit position to saturate to (0..31)
+  \return             Saturated value
+ */
+#define __USAT(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("usat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+
+/**
+  \brief   Rotate Right with Extend (32 bit)
+  \details Moves each bit of a bitstring right by one bit.
+           The carry input is shifted in at the left end of the bitstring.
+  \param [in]    value  Value to rotate
+  \return               Rotated value
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RRX(uint32_t value)
+{
+  uint32_t result;
+
+  __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
+  return(result);
+}
+
+
+/**
+  \brief   LDRT Unprivileged (8 bit)
+  \details Executes a Unprivileged LDRT instruction for 8 bit value.
+  \param [in]    ptr  Pointer to data
+  \return             value of type uint8_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDRBT(volatile uint8_t *addr)
+{
+    uint32_t result;
+
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+   __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*addr) );
+#else
+    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
+       accepted by assembler. So has to use following less efficient pattern.
+    */
+   __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+#endif
+   return ((uint8_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDRT Unprivileged (16 bit)
+  \details Executes a Unprivileged LDRT instruction for 16 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint16_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDRHT(volatile uint16_t *addr)
+{
+    uint32_t result;
+
+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+   __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*addr) );
+#else
+    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
+       accepted by assembler. So has to use following less efficient pattern.
+    */
+   __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+#endif
+   return ((uint16_t) result);    /* Add explicit type cast here */
+}
+
+
+/**
+  \brief   LDRT Unprivileged (32 bit)
+  \details Executes a Unprivileged LDRT instruction for 32 bit values.
+  \param [in]    ptr  Pointer to data
+  \return        value of type uint32_t at (*ptr)
+ */
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDRT(volatile uint32_t *addr)
+{
+    uint32_t result;
+
+   __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*addr) );
+   return(result);
+}
+
+
+/**
+  \brief   STRT Unprivileged (8 bit)
+  \details Executes a Unprivileged STRT instruction for 8 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STRBT(uint8_t value, volatile uint8_t *addr)
+{
+   __ASM volatile ("strbt %1, %0" : "=Q" (*addr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   STRT Unprivileged (16 bit)
+  \details Executes a Unprivileged STRT instruction for 16 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STRHT(uint16_t value, volatile uint16_t *addr)
+{
+   __ASM volatile ("strht %1, %0" : "=Q" (*addr) : "r" ((uint32_t)value) );
+}
+
+
+/**
+  \brief   STRT Unprivileged (32 bit)
+  \details Executes a Unprivileged STRT instruction for 32 bit values.
+  \param [in]  value  Value to store
+  \param [in]    ptr  Pointer to location
+ */
+__attribute__((always_inline)) __STATIC_INLINE void __STRT(uint32_t value, volatile uint32_t *addr)
+{
+   __ASM volatile ("strt %1, %0" : "=Q" (*addr) : "r" (value) );
+}
+
+#endif /* (__CORTEX_M >= 0x03U) || (__CORTEX_SC >= 300U) */
+
+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
+
+
+/* ###################  Compiler specific Intrinsics  ########################### */
+/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
+  Access to dedicated SIMD instructions
+  @{
+*/
+
+#if (__CORTEX_M >= 0x04U)  /* only for Cortex-M4 and above */
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+#define __SSAT16(ARG1,ARG2) \
+({                          \
+  int32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+#define __USAT16(ARG1,ARG2) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1); \
+  __ASM ("usat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
+  __RES; \
+ })
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1)
+{
+  uint32_t result;
+
+  __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1)
+{
+  uint32_t result;
+
+  __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+  uint32_t result;
+
+  __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)
+{
+  union llreg_u{
+    uint32_t w32[2];
+    uint64_t w64;
+  } llr;
+  llr.w64 = acc;
+
+#ifndef __ARMEB__   /* Little endian */
+  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
+#else               /* Big endian */
+  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#endif
+
+  return(llr.w64);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)
+{
+  uint32_t result;
+
+  __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE  int32_t __QADD( int32_t op1,  int32_t op2)
+{
+  int32_t result;
+
+  __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE  int32_t __QSUB( int32_t op1,  int32_t op2)
+{
+  int32_t result;
+
+  __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+  return(result);
+}
+
+#define __PKHBT(ARG1,ARG2,ARG3) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
+  __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
+  __RES; \
+ })
+
+#define __PKHTB(ARG1,ARG2,ARG3) \
+({                          \
+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
+  if (ARG3 == 0) \
+    __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2)  ); \
+  else \
+    __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
+  __RES; \
+ })
+
+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)
+{
+ int32_t result;
+
+ __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r"  (op1), "r" (op2), "r" (op3) );
+ return(result);
+}
+
+#endif /* (__CORTEX_M >= 0x04) */
+/*@} end of group CMSIS_SIMD_intrinsics */
+
+
+#if defined ( __GNUC__ )
+#pragma GCC diagnostic pop
+#endif
+
+#endif /* __CMSIS_GCC_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_cm0.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,798 @@
+/**************************************************************************//**
+ * @file     core_cm0.h
+ * @brief    CMSIS Cortex-M0 Core Peripheral Access Layer Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CM0_H_GENERIC
+#define __CORE_CM0_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup Cortex_M0
+  @{
+ */
+
+/*  CMSIS CM0 definitions */
+#define __CM0_CMSIS_VERSION_MAIN  (0x04U)                                      /*!< [31:16] CMSIS HAL main version */
+#define __CM0_CMSIS_VERSION_SUB   (0x1EU)                                      /*!< [15:0]  CMSIS HAL sub version */
+#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16U) | \
+                                    __CM0_CMSIS_VERSION_SUB           )        /*!< CMSIS HAL version number */
+
+#define __CORTEX_M                (0x00U)                                      /*!< Cortex-M Core */
+
+
+#if   defined ( __CC_ARM )
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined ( __GNUC__ )
+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __ICCARM__ )
+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TMS470__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TASKING__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __CSMC__ )
+  #define __packed
+  #define __ASM            _asm                                      /*!< asm keyword for COSMIC Compiler */
+  #define __INLINE         inline                                    /*!< inline keyword for COSMIC Compiler. Use -pc99 on compile line */
+  #define __STATIC_INLINE  static inline
+
+#else
+  #error Unknown compiler
+#endif
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    This core does not support an FPU at all
+*/
+#define __FPU_USED       0U
+
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_PCS_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TMS470__ )
+  #if defined __TI_VFP_SUPPORT__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#endif
+
+#include "core_cmInstr.h"                /* Core Instruction Access */
+#include "core_cmFunc.h"                 /* Core Function Access */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM0_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_CM0_H_DEPENDANT
+#define __CORE_CM0_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __CM0_REV
+    #define __CM0_REV               0x0000U
+    #warning "__CM0_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          2U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group Cortex_M0 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
+    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[31U];
+  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[31U];
+  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[31U];
+  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[31U];
+        uint32_t RESERVED4[64U];
+  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */
+}  NVIC_Type;
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+        uint32_t RESERVED0;
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+        uint32_t RESERVED1;
+  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.
+            Therefore they are not covered by the Cortex-M0 header file.
+  @{
+ */
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    ((value << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    ((value & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Cortex-M0 Hardware */
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
+
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
+
+
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+/* Interrupt Priorities are WORD accessible only under ARMv6M                   */
+/* The following MACROS handle generation of the register offset and byte masks */
+#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)
+#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )
+#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )
+
+
+/**
+  \brief   Enable External Interrupt
+  \details Enables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Disable External Interrupt
+  \details Disables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the pending register in the NVIC and returns the pending bit for the specified interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of an external interrupt.
+  \param [in]      IRQn  Interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of an external interrupt.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of an interrupt.
+  \note    The priority cannot be set for every core interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+ */
+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) < 0)
+  {
+    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
+       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
+  }
+  else
+  {
+    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
+       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of an interrupt.
+           The interrupt number can be positive to specify an external (device specific) interrupt,
+           or negative to specify an internal (core) interrupt.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) < 0)
+  {
+    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__STATIC_INLINE void NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                 SCB_AIRCR_SYSRESETREQ_Msk);
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM0_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_cm0plus.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,914 @@
+/**************************************************************************//**
+ * @file     core_cm0plus.h
+ * @brief    CMSIS Cortex-M0+ Core Peripheral Access Layer Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CM0PLUS_H_GENERIC
+#define __CORE_CM0PLUS_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup Cortex-M0+
+  @{
+ */
+
+/*  CMSIS CM0+ definitions */
+#define __CM0PLUS_CMSIS_VERSION_MAIN (0x04U)                                   /*!< [31:16] CMSIS HAL main version */
+#define __CM0PLUS_CMSIS_VERSION_SUB  (0x1EU)                                   /*!< [15:0]  CMSIS HAL sub version */
+#define __CM0PLUS_CMSIS_VERSION      ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \
+                                       __CM0PLUS_CMSIS_VERSION_SUB           ) /*!< CMSIS HAL version number */
+
+#define __CORTEX_M                (0x00U)                                      /*!< Cortex-M Core */
+
+
+#if   defined ( __CC_ARM )
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined ( __GNUC__ )
+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __ICCARM__ )
+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TMS470__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TASKING__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __CSMC__ )
+  #define __packed
+  #define __ASM            _asm                                      /*!< asm keyword for COSMIC Compiler */
+  #define __INLINE         inline                                    /*!< inline keyword for COSMIC Compiler. Use -pc99 on compile line */
+  #define __STATIC_INLINE  static inline
+
+#else
+  #error Unknown compiler
+#endif
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    This core does not support an FPU at all
+*/
+#define __FPU_USED       0U
+
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_PCS_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TMS470__ )
+  #if defined __TI_VFP_SUPPORT__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#endif
+
+#include "core_cmInstr.h"                /* Core Instruction Access */
+#include "core_cmFunc.h"                 /* Core Function Access */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM0PLUS_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_CM0PLUS_H_DEPENDANT
+#define __CORE_CM0PLUS_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __CM0PLUS_REV
+    #define __CM0PLUS_REV             0x0000U
+    #warning "__CM0PLUS_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __MPU_PRESENT
+    #define __MPU_PRESENT             0U
+    #warning "__MPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __VTOR_PRESENT
+    #define __VTOR_PRESENT            0U
+    #warning "__VTOR_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          2U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group Cortex-M0+ */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+  - Core MPU Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
+    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */
+#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[31U];
+  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[31U];
+  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[31U];
+  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[31U];
+        uint32_t RESERVED4[64U];
+  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */
+}  NVIC_Type;
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+#if (__VTOR_PRESENT == 1U)
+  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
+#else
+        uint32_t RESERVED0;
+#endif
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+        uint32_t RESERVED1;
+  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+#if (__VTOR_PRESENT == 1U)
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_VTOR_TBLOFF_Pos                 8U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */
+#endif
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+#if (__MPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_MPU     Memory Protection Unit (MPU)
+  \brief    Type definitions for the Memory Protection Unit (MPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory Protection Unit (MPU).
+ */
+typedef struct
+{
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */
+  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */
+} MPU_Type;
+
+/* MPU Type Register Definitions */
+#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */
+
+#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */
+
+#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */
+#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */
+
+/* MPU Control Register Definitions */
+#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */
+
+#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */
+
+#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */
+#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */
+
+/* MPU Region Number Register Definitions */
+#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */
+#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */
+
+/* MPU Region Base Address Register Definitions */
+#define MPU_RBAR_ADDR_Pos                   8U                                            /*!< MPU RBAR: ADDR Position */
+#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << MPU_RBAR_ADDR_Pos)              /*!< MPU RBAR: ADDR Mask */
+
+#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */
+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */
+
+#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */
+#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */
+
+/* MPU Region Attribute and Size Register Definitions */
+#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */
+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */
+
+#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */
+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */
+
+#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */
+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */
+
+#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */
+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */
+
+#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */
+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */
+
+#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */
+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */
+
+#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */
+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */
+
+#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */
+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */
+
+#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */
+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */
+
+#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */
+#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */
+
+/*@} end of group CMSIS_MPU */
+#endif
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.
+            Therefore they are not covered by the Cortex-M0+ header file.
+  @{
+ */
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    ((value << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    ((value & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Cortex-M0+ Hardware */
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
+
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
+
+#if (__MPU_PRESENT == 1U)
+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */
+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */
+#endif
+
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+/* Interrupt Priorities are WORD accessible only under ARMv6M                   */
+/* The following MACROS handle generation of the register offset and byte masks */
+#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)
+#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )
+#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )
+
+
+/**
+  \brief   Enable External Interrupt
+  \details Enables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Disable External Interrupt
+  \details Disables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the pending register in the NVIC and returns the pending bit for the specified interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of an external interrupt.
+  \param [in]      IRQn  Interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of an external interrupt.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of an interrupt.
+  \note    The priority cannot be set for every core interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+ */
+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) < 0)
+  {
+    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
+       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
+  }
+  else
+  {
+    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
+       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of an interrupt.
+           The interrupt number can be positive to specify an external (device specific) interrupt,
+           or negative to specify an internal (core) interrupt.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) < 0)
+  {
+    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__STATIC_INLINE void NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                 SCB_AIRCR_SYSRESETREQ_Msk);
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM0PLUS_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_cm3.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1763 @@
+/**************************************************************************//**
+ * @file     core_cm3.h
+ * @brief    CMSIS Cortex-M3 Core Peripheral Access Layer Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CM3_H_GENERIC
+#define __CORE_CM3_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup Cortex_M3
+  @{
+ */
+
+/*  CMSIS CM3 definitions */
+#define __CM3_CMSIS_VERSION_MAIN  (0x04U)                                      /*!< [31:16] CMSIS HAL main version */
+#define __CM3_CMSIS_VERSION_SUB   (0x1EU)                                      /*!< [15:0]  CMSIS HAL sub version */
+#define __CM3_CMSIS_VERSION       ((__CM3_CMSIS_VERSION_MAIN << 16U) | \
+                                    __CM3_CMSIS_VERSION_SUB           )        /*!< CMSIS HAL version number */
+
+#define __CORTEX_M                (0x03U)                                      /*!< Cortex-M Core */
+
+
+#if   defined ( __CC_ARM )
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined ( __GNUC__ )
+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __ICCARM__ )
+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TMS470__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TASKING__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __CSMC__ )
+  #define __packed
+  #define __ASM            _asm                                      /*!< asm keyword for COSMIC Compiler */
+  #define __INLINE         inline                                    /*!< inline keyword for COSMIC Compiler. Use -pc99 on compile line */
+  #define __STATIC_INLINE  static inline
+
+#else
+  #error Unknown compiler
+#endif
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    This core does not support an FPU at all
+*/
+#define __FPU_USED       0U
+
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_PCS_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TMS470__ )
+  #if defined __TI_VFP_SUPPORT__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#endif
+
+#include "core_cmInstr.h"                /* Core Instruction Access */
+#include "core_cmFunc.h"                 /* Core Function Access */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM3_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_CM3_H_DEPENDANT
+#define __CORE_CM3_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __CM3_REV
+    #define __CM3_REV               0x0200U
+    #warning "__CM3_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __MPU_PRESENT
+    #define __MPU_PRESENT             0U
+    #warning "__MPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          4U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group Cortex_M3 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+  - Core Debug Register
+  - Core MPU Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */
+#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */
+#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */
+
+#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */
+#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
+    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */
+#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[24U];
+  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[24U];
+  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[24U];
+  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[24U];
+  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */
+        uint32_t RESERVED4[56U];
+  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */
+        uint32_t RESERVED5[644U];
+  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */
+}  NVIC_Type;
+
+/* Software Triggered Interrupt Register Definitions */
+#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */
+#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */
+  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */
+  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */
+  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */
+  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */
+  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
+  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */
+  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */
+  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
+  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
+        uint32_t RESERVED0[5U];
+  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */
+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Vector Table Offset Register Definitions */
+#if (__CM3_REV < 0x0201U)                   /* core r2p1 */
+#define SCB_VTOR_TBLBASE_Pos               29U                                            /*!< SCB VTOR: TBLBASE Position */
+#define SCB_VTOR_TBLBASE_Msk               (1UL << SCB_VTOR_TBLBASE_Pos)                  /*!< SCB VTOR: TBLBASE Mask */
+
+#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */
+#else
+#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */
+#endif
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */
+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */
+#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+
+#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */
+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */
+
+#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */
+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */
+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */
+
+#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */
+#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */
+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */
+
+#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */
+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */
+
+#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */
+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */
+
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */
+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */
+
+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */
+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */
+
+#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */
+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */
+
+#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */
+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */
+
+#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */
+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */
+
+#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */
+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */
+
+#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */
+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */
+
+#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */
+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */
+
+#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */
+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */
+
+#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */
+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */
+
+/* SCB Configurable Fault Status Register Definitions */
+#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */
+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */
+
+#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */
+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */
+
+#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */
+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */
+
+/* SCB Hard Fault Status Register Definitions */
+#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */
+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */
+
+#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */
+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */
+
+#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */
+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */
+
+/* SCB Debug Fault Status Register Definitions */
+#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */
+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */
+
+#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */
+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */
+
+#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */
+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */
+
+#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */
+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */
+
+#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */
+#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)
+  \brief    Type definitions for the System Control and ID Register not in the SCB
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control and ID Register not in the SCB.
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */
+#if ((defined __CM3_REV) && (__CM3_REV >= 0x200U))
+  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */
+#else
+        uint32_t RESERVED1[1U];
+#endif
+} SCnSCB_Type;
+
+/* Interrupt Controller Type Register Definitions */
+#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */
+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */
+
+/* Auxiliary Control Register Definitions */
+
+#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */
+#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */
+
+#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1U                                         /*!< ACTLR: DISDEFWBUF Position */
+#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */
+
+#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */
+#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */
+
+/*@} end of group CMSIS_SCnotSCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)
+  \brief    Type definitions for the Instrumentation Trace Macrocell (ITM)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).
+ */
+typedef struct
+{
+  __OM  union
+  {
+    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */
+    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */
+    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */
+  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */
+        uint32_t RESERVED0[864U];
+  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */
+        uint32_t RESERVED1[15U];
+  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */
+        uint32_t RESERVED2[15U];
+  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */
+        uint32_t RESERVED3[29U];
+  __OM  uint32_t IWR;                    /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register */
+  __IM  uint32_t IRR;                    /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register */
+  __IOM uint32_t IMCR;                   /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register */
+        uint32_t RESERVED4[43U];
+  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */
+        uint32_t RESERVED5[6U];
+  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */
+  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */
+  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */
+  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */
+  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */
+  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */
+  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */
+  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */
+  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */
+  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */
+  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */
+  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */
+} ITM_Type;
+
+/* ITM Trace Privilege Register Definitions */
+#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */
+#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */
+
+/* ITM Trace Control Register Definitions */
+#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */
+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */
+
+#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */
+#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */
+
+#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */
+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */
+
+#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */
+#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */
+
+#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */
+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */
+
+#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */
+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */
+
+#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */
+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */
+
+#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */
+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */
+
+#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */
+#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */
+
+/* ITM Integration Write Register Definitions */
+#define ITM_IWR_ATVALIDM_Pos                0U                                            /*!< ITM IWR: ATVALIDM Position */
+#define ITM_IWR_ATVALIDM_Msk               (1UL /*<< ITM_IWR_ATVALIDM_Pos*/)              /*!< ITM IWR: ATVALIDM Mask */
+
+/* ITM Integration Read Register Definitions */
+#define ITM_IRR_ATREADYM_Pos                0U                                            /*!< ITM IRR: ATREADYM Position */
+#define ITM_IRR_ATREADYM_Msk               (1UL /*<< ITM_IRR_ATREADYM_Pos*/)              /*!< ITM IRR: ATREADYM Mask */
+
+/* ITM Integration Mode Control Register Definitions */
+#define ITM_IMCR_INTEGRATION_Pos            0U                                            /*!< ITM IMCR: INTEGRATION Position */
+#define ITM_IMCR_INTEGRATION_Msk           (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/)          /*!< ITM IMCR: INTEGRATION Mask */
+
+/* ITM Lock Status Register Definitions */
+#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */
+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */
+
+#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */
+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */
+
+#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */
+#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */
+
+/*@}*/ /* end of group CMSIS_ITM */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)
+  \brief    Type definitions for the Data Watchpoint and Trace (DWT)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */
+  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */
+  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */
+  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */
+  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */
+  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */
+  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */
+  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */
+  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */
+  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */
+  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */
+  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */
+  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */
+        uint32_t RESERVED1[1U];
+  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */
+  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */
+  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */
+        uint32_t RESERVED2[1U];
+  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */
+  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */
+  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */
+} DWT_Type;
+
+/* DWT Control Register Definitions */
+#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */
+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */
+
+#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */
+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */
+
+#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */
+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */
+
+#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */
+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */
+
+#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */
+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */
+
+#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */
+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */
+
+#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */
+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */
+
+#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */
+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */
+
+#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */
+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */
+
+#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */
+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */
+
+#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */
+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */
+
+#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */
+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */
+
+#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */
+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */
+
+#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */
+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */
+
+#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */
+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */
+
+#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */
+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */
+
+#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */
+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */
+
+#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */
+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */
+
+/* DWT CPI Count Register Definitions */
+#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */
+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */
+
+/* DWT Exception Overhead Count Register Definitions */
+#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */
+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */
+
+/* DWT Sleep Count Register Definitions */
+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */
+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */
+
+/* DWT LSU Count Register Definitions */
+#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */
+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */
+
+/* DWT Folded-instruction Count Register Definitions */
+#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */
+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */
+
+/* DWT Comparator Mask Register Definitions */
+#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */
+#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */
+
+/* DWT Comparator Function Register Definitions */
+#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */
+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */
+
+#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */
+#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */
+
+#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */
+#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */
+
+#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */
+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */
+
+#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */
+#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */
+
+#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */
+#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */
+
+#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */
+#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */
+
+#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */
+#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */
+
+#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */
+#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */
+
+/*@}*/ /* end of group CMSIS_DWT */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_TPI     Trace Port Interface (TPI)
+  \brief    Type definitions for the Trace Port Interface (TPI)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Trace Port Interface Register (TPI).
+ */
+typedef struct
+{
+  __IOM uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */
+  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */
+        uint32_t RESERVED1[55U];
+  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */
+        uint32_t RESERVED2[131U];
+  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */
+  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */
+  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */
+        uint32_t RESERVED3[759U];
+  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER */
+  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */
+  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */
+        uint32_t RESERVED4[1U];
+  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */
+  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */
+  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */
+        uint32_t RESERVED5[39U];
+  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */
+  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */
+        uint32_t RESERVED7[8U];
+  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */
+  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */
+} TPI_Type;
+
+/* TPI Asynchronous Clock Prescaler Register Definitions */
+#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */
+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */
+
+/* TPI Selected Pin Protocol Register Definitions */
+#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */
+#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */
+
+/* TPI Formatter and Flush Status Register Definitions */
+#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */
+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */
+
+#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */
+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */
+
+#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */
+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */
+
+#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */
+#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */
+
+/* TPI Formatter and Flush Control Register Definitions */
+#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */
+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */
+
+#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */
+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */
+
+/* TPI TRIGGER Register Definitions */
+#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */
+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */
+
+/* TPI Integration ETM Data Register Definitions (FIFO0) */
+#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */
+#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */
+
+#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */
+#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */
+
+#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */
+#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */
+
+#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */
+#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */
+
+#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */
+#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */
+
+#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */
+#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */
+
+#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */
+#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */
+
+/* TPI ITATBCTR2 Register Definitions */
+#define TPI_ITATBCTR2_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR2: ATREADY Position */
+#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/)    /*!< TPI ITATBCTR2: ATREADY Mask */
+
+/* TPI Integration ITM Data Register Definitions (FIFO1) */
+#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */
+#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */
+
+#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */
+#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */
+
+#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */
+#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */
+
+#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */
+#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */
+
+#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */
+#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */
+
+#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */
+#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */
+
+#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */
+#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */
+
+/* TPI ITATBCTR0 Register Definitions */
+#define TPI_ITATBCTR0_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR0: ATREADY Position */
+#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/)    /*!< TPI ITATBCTR0: ATREADY Mask */
+
+/* TPI Integration Mode Control Register Definitions */
+#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */
+#define TPI_ITCTRL_Mode_Msk                (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */
+
+/* TPI DEVID Register Definitions */
+#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */
+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */
+
+#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */
+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */
+
+#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */
+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */
+
+#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */
+#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */
+
+#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */
+#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */
+
+#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */
+#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */
+
+/* TPI DEVTYPE Register Definitions */
+#define TPI_DEVTYPE_MajorType_Pos           4U                                         /*!< TPI DEVTYPE: MajorType Position */
+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */
+
+#define TPI_DEVTYPE_SubType_Pos             0U                                         /*!< TPI DEVTYPE: SubType Position */
+#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */
+
+/*@}*/ /* end of group CMSIS_TPI */
+
+
+#if (__MPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_MPU     Memory Protection Unit (MPU)
+  \brief    Type definitions for the Memory Protection Unit (MPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory Protection Unit (MPU).
+ */
+typedef struct
+{
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */
+  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */
+  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */
+  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */
+  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */
+} MPU_Type;
+
+/* MPU Type Register Definitions */
+#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */
+
+#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */
+
+#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */
+#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */
+
+/* MPU Control Register Definitions */
+#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */
+
+#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */
+
+#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */
+#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */
+
+/* MPU Region Number Register Definitions */
+#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */
+#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */
+
+/* MPU Region Base Address Register Definitions */
+#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */
+#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */
+
+#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */
+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */
+
+#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */
+#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */
+
+/* MPU Region Attribute and Size Register Definitions */
+#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */
+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */
+
+#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */
+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */
+
+#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */
+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */
+
+#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */
+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */
+
+#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */
+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */
+
+#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */
+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */
+
+#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */
+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */
+
+#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */
+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */
+
+#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */
+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */
+
+#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */
+#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */
+
+/*@} end of group CMSIS_MPU */
+#endif
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    Type definitions for the Core Debug Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Core Debug Register (CoreDebug).
+ */
+typedef struct
+{
+  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */
+  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */
+  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */
+  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */
+} CoreDebug_Type;
+
+/* Debug Halting Control and Status Register Definitions */
+#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */
+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */
+
+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */
+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */
+
+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */
+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */
+
+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */
+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */
+
+#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */
+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */
+
+#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */
+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */
+
+#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */
+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */
+
+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */
+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */
+
+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */
+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */
+
+#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */
+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */
+
+#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */
+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */
+
+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */
+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */
+
+/* Debug Core Register Selector Register Definitions */
+#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */
+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */
+
+#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */
+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */
+
+/* Debug Exception and Monitor Control Register Definitions */
+#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */
+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */
+
+#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */
+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */
+
+#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */
+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */
+
+#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */
+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */
+
+#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */
+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */
+
+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */
+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */
+
+#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */
+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */
+
+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */
+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */
+
+#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */
+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */
+
+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */
+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */
+
+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */
+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */
+
+#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */
+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */
+
+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */
+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */
+
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    ((value << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    ((value & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Cortex-M3 Hardware */
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
+#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */
+#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */
+#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */
+#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
+
+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
+#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */
+#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */
+#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */
+#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */
+
+#if (__MPU_PRESENT == 1U)
+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */
+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */
+#endif
+
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Debug Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+/**
+  \brief   Set Priority Grouping
+  \details Sets the priority grouping field using the required unlock sequence.
+           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.
+           Only values from 0..7 are used.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]      PriorityGroup  Priority grouping field.
+ */
+__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+  uint32_t reg_value;
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
+
+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */
+  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */
+  reg_value  =  (reg_value                                   |
+                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                (PriorityGroupTmp << 8U)                      );              /* Insert write key and priorty group */
+  SCB->AIRCR =  reg_value;
+}
+
+
+/**
+  \brief   Get Priority Grouping
+  \details Reads the priority grouping field from the NVIC Interrupt Controller.
+  \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)
+{
+  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+}
+
+
+/**
+  \brief   Enable External Interrupt
+  \details Enables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Disable External Interrupt
+  \details Disables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the pending register in the NVIC and returns the pending bit for the specified interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of an external interrupt.
+  \param [in]      IRQn  Interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of an external interrupt.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Active Interrupt
+  \details Reads the active register in NVIC and returns the active bit.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not active.
+  \return             1  Interrupt status is active.
+ */
+__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->IABR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of an interrupt.
+  \note    The priority cannot be set for every core interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+ */
+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) < 0)
+  {
+    SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+  else
+  {
+    NVIC->IP[((uint32_t)(int32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of an interrupt.
+           The interrupt number can be positive to specify an external (device specific) interrupt,
+           or negative to specify an internal (core) interrupt.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) < 0)
+  {
+    return(((uint32_t)SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return(((uint32_t)NVIC->IP[((uint32_t)(int32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   Encode Priority
+  \details Encodes the priority for an interrupt with the given priority group,
+           preemptive priority value, and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]     PriorityGroup  Used priority group.
+  \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
+  \param [in]       SubPriority  Subpriority value (starting from 0).
+  \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  return (
+           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
+         );
+}
+
+
+/**
+  \brief   Decode Priority
+  \details Decodes an interrupt priority value with a given priority group to
+           preemptive priority value and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
+  \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().
+  \param [in]     PriorityGroup  Used priority group.
+  \param [out] pPreemptPriority  Preemptive priority value (starting from 0).
+  \param [out]     pSubPriority  Subpriority value (starting from 0).
+ */
+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
+  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__STATIC_INLINE void NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |
+                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
+                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+/* ##################################### Debug In/Output function ########################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_core_DebugFunctions ITM Functions
+  \brief    Functions that access the ITM debug interface.
+  @{
+ */
+
+extern volatile int32_t ITM_RxBuffer;                    /*!< External variable to receive characters. */
+#define                 ITM_RXBUFFER_EMPTY   0x5AA55AA5U /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
+
+
+/**
+  \brief   ITM Send Character
+  \details Transmits a character via the ITM channel 0, and
+           \li Just returns when no debugger is connected that has booked the output.
+           \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.
+  \param [in]     ch  Character to transmit.
+  \returns            Character to transmit.
+ */
+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
+{
+  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */
+      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */
+  {
+    while (ITM->PORT[0U].u32 == 0UL)
+    {
+      __NOP();
+    }
+    ITM->PORT[0U].u8 = (uint8_t)ch;
+  }
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Receive Character
+  \details Inputs a character via the external variable \ref ITM_RxBuffer.
+  \return             Received character.
+  \return         -1  No character pending.
+ */
+__STATIC_INLINE int32_t ITM_ReceiveChar (void)
+{
+  int32_t ch = -1;                           /* no character available */
+
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)
+  {
+    ch = ITM_RxBuffer;
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
+  }
+
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Check Character
+  \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.
+  \return          0  No character available.
+  \return          1  Character available.
+ */
+__STATIC_INLINE int32_t ITM_CheckChar (void)
+{
+
+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)
+  {
+    return (0);                              /* no character available */
+  }
+  else
+  {
+    return (1);                              /*    character available */
+  }
+}
+
+/*@} end of CMSIS_core_DebugFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM3_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_cm4.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1937 @@
+/**************************************************************************//**
+ * @file     core_cm4.h
+ * @brief    CMSIS Cortex-M4 Core Peripheral Access Layer Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CM4_H_GENERIC
+#define __CORE_CM4_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup Cortex_M4
+  @{
+ */
+
+/*  CMSIS CM4 definitions */
+#define __CM4_CMSIS_VERSION_MAIN  (0x04U)                                      /*!< [31:16] CMSIS HAL main version */
+#define __CM4_CMSIS_VERSION_SUB   (0x1EU)                                      /*!< [15:0]  CMSIS HAL sub version */
+#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16U) | \
+                                    __CM4_CMSIS_VERSION_SUB           )        /*!< CMSIS HAL version number */
+
+#define __CORTEX_M                (0x04U)                                      /*!< Cortex-M Core */
+
+
+#if   defined ( __CC_ARM )
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined ( __GNUC__ )
+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __ICCARM__ )
+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TMS470__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TASKING__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __CSMC__ )
+  #define __packed
+  #define __ASM            _asm                                      /*!< asm keyword for COSMIC Compiler */
+  #define __INLINE         inline                                    /*!< inline keyword for COSMIC Compiler. Use -pc99 on compile line */
+  #define __STATIC_INLINE  static inline
+
+#else
+  #error Unknown compiler
+#endif
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.
+*/
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_PCS_VFP
+    #if (__FPU_PRESENT == 1)
+      #define __FPU_USED       1U
+    #else
+      #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __TMS470__ )
+  #if defined __TI_VFP_SUPPORT__
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#endif
+
+#include "core_cmInstr.h"                /* Core Instruction Access */
+#include "core_cmFunc.h"                 /* Core Function Access */
+#include "core_cmSimd.h"                 /* Compiler specific SIMD Intrinsics */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM4_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_CM4_H_DEPENDANT
+#define __CORE_CM4_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __CM4_REV
+    #define __CM4_REV               0x0000U
+    #warning "__CM4_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __FPU_PRESENT
+    #define __FPU_PRESENT             0U
+    #warning "__FPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __MPU_PRESENT
+    #define __MPU_PRESENT             0U
+    #warning "__MPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          4U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group Cortex_M4 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+  - Core Debug Register
+  - Core MPU Register
+  - Core FPU Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */
+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */
+#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */
+
+#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */
+#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */
+    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */
+#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */
+
+#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */
+#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */
+#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
+    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag */
+    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */
+#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */
+
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */
+#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[24U];
+  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[24U];
+  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[24U];
+  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[24U];
+  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */
+        uint32_t RESERVED4[56U];
+  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */
+        uint32_t RESERVED5[644U];
+  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */
+}  NVIC_Type;
+
+/* Software Triggered Interrupt Register Definitions */
+#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */
+#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */
+  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */
+  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */
+  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */
+  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */
+  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
+  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */
+  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */
+  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
+  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
+        uint32_t RESERVED0[5U];
+  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */
+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Vector Table Offset Register Definitions */
+#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */
+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */
+#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+
+#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */
+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */
+
+#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */
+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */
+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */
+
+#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */
+#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */
+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */
+
+#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */
+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */
+
+#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */
+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */
+
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */
+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */
+
+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */
+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */
+
+#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */
+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */
+
+#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */
+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */
+
+#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */
+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */
+
+#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */
+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */
+
+#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */
+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */
+
+#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */
+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */
+
+#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */
+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */
+
+#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */
+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */
+
+/* SCB Configurable Fault Status Register Definitions */
+#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */
+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */
+
+#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */
+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */
+
+#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */
+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */
+
+/* SCB Hard Fault Status Register Definitions */
+#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */
+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */
+
+#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */
+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */
+
+#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */
+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */
+
+/* SCB Debug Fault Status Register Definitions */
+#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */
+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */
+
+#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */
+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */
+
+#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */
+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */
+
+#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */
+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */
+
+#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */
+#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)
+  \brief    Type definitions for the System Control and ID Register not in the SCB
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control and ID Register not in the SCB.
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */
+  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */
+} SCnSCB_Type;
+
+/* Interrupt Controller Type Register Definitions */
+#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */
+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */
+
+/* Auxiliary Control Register Definitions */
+#define SCnSCB_ACTLR_DISOOFP_Pos            9U                                         /*!< ACTLR: DISOOFP Position */
+#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */
+
+#define SCnSCB_ACTLR_DISFPCA_Pos            8U                                         /*!< ACTLR: DISFPCA Position */
+#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */
+
+#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */
+#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */
+
+#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1U                                         /*!< ACTLR: DISDEFWBUF Position */
+#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */
+
+#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */
+#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */
+
+/*@} end of group CMSIS_SCnotSCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)
+  \brief    Type definitions for the Instrumentation Trace Macrocell (ITM)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).
+ */
+typedef struct
+{
+  __OM  union
+  {
+    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */
+    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */
+    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */
+  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */
+        uint32_t RESERVED0[864U];
+  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */
+        uint32_t RESERVED1[15U];
+  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */
+        uint32_t RESERVED2[15U];
+  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */
+        uint32_t RESERVED3[29U];
+  __OM  uint32_t IWR;                    /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register */
+  __IM  uint32_t IRR;                    /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register */
+  __IOM uint32_t IMCR;                   /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register */
+        uint32_t RESERVED4[43U];
+  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */
+        uint32_t RESERVED5[6U];
+  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */
+  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */
+  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */
+  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */
+  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */
+  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */
+  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */
+  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */
+  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */
+  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */
+  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */
+  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */
+} ITM_Type;
+
+/* ITM Trace Privilege Register Definitions */
+#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */
+#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */
+
+/* ITM Trace Control Register Definitions */
+#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */
+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */
+
+#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */
+#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */
+
+#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */
+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */
+
+#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */
+#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */
+
+#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */
+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */
+
+#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */
+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */
+
+#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */
+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */
+
+#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */
+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */
+
+#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */
+#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */
+
+/* ITM Integration Write Register Definitions */
+#define ITM_IWR_ATVALIDM_Pos                0U                                            /*!< ITM IWR: ATVALIDM Position */
+#define ITM_IWR_ATVALIDM_Msk               (1UL /*<< ITM_IWR_ATVALIDM_Pos*/)              /*!< ITM IWR: ATVALIDM Mask */
+
+/* ITM Integration Read Register Definitions */
+#define ITM_IRR_ATREADYM_Pos                0U                                            /*!< ITM IRR: ATREADYM Position */
+#define ITM_IRR_ATREADYM_Msk               (1UL /*<< ITM_IRR_ATREADYM_Pos*/)              /*!< ITM IRR: ATREADYM Mask */
+
+/* ITM Integration Mode Control Register Definitions */
+#define ITM_IMCR_INTEGRATION_Pos            0U                                            /*!< ITM IMCR: INTEGRATION Position */
+#define ITM_IMCR_INTEGRATION_Msk           (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/)          /*!< ITM IMCR: INTEGRATION Mask */
+
+/* ITM Lock Status Register Definitions */
+#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */
+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */
+
+#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */
+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */
+
+#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */
+#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */
+
+/*@}*/ /* end of group CMSIS_ITM */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)
+  \brief    Type definitions for the Data Watchpoint and Trace (DWT)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */
+  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */
+  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */
+  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */
+  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */
+  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */
+  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */
+  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */
+  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */
+  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */
+  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */
+  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */
+  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */
+        uint32_t RESERVED1[1U];
+  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */
+  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */
+  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */
+        uint32_t RESERVED2[1U];
+  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */
+  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */
+  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */
+} DWT_Type;
+
+/* DWT Control Register Definitions */
+#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */
+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */
+
+#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */
+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */
+
+#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */
+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */
+
+#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */
+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */
+
+#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */
+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */
+
+#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */
+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */
+
+#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */
+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */
+
+#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */
+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */
+
+#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */
+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */
+
+#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */
+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */
+
+#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */
+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */
+
+#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */
+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */
+
+#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */
+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */
+
+#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */
+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */
+
+#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */
+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */
+
+#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */
+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */
+
+#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */
+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */
+
+#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */
+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */
+
+/* DWT CPI Count Register Definitions */
+#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */
+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */
+
+/* DWT Exception Overhead Count Register Definitions */
+#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */
+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */
+
+/* DWT Sleep Count Register Definitions */
+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */
+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */
+
+/* DWT LSU Count Register Definitions */
+#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */
+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */
+
+/* DWT Folded-instruction Count Register Definitions */
+#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */
+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */
+
+/* DWT Comparator Mask Register Definitions */
+#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */
+#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */
+
+/* DWT Comparator Function Register Definitions */
+#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */
+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */
+
+#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */
+#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */
+
+#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */
+#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */
+
+#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */
+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */
+
+#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */
+#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */
+
+#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */
+#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */
+
+#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */
+#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */
+
+#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */
+#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */
+
+#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */
+#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */
+
+/*@}*/ /* end of group CMSIS_DWT */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_TPI     Trace Port Interface (TPI)
+  \brief    Type definitions for the Trace Port Interface (TPI)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Trace Port Interface Register (TPI).
+ */
+typedef struct
+{
+  __IOM uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */
+  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */
+        uint32_t RESERVED1[55U];
+  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */
+        uint32_t RESERVED2[131U];
+  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */
+  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */
+  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */
+        uint32_t RESERVED3[759U];
+  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER */
+  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */
+  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */
+        uint32_t RESERVED4[1U];
+  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */
+  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */
+  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */
+        uint32_t RESERVED5[39U];
+  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */
+  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */
+        uint32_t RESERVED7[8U];
+  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */
+  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */
+} TPI_Type;
+
+/* TPI Asynchronous Clock Prescaler Register Definitions */
+#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */
+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */
+
+/* TPI Selected Pin Protocol Register Definitions */
+#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */
+#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */
+
+/* TPI Formatter and Flush Status Register Definitions */
+#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */
+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */
+
+#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */
+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */
+
+#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */
+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */
+
+#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */
+#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */
+
+/* TPI Formatter and Flush Control Register Definitions */
+#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */
+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */
+
+#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */
+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */
+
+/* TPI TRIGGER Register Definitions */
+#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */
+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */
+
+/* TPI Integration ETM Data Register Definitions (FIFO0) */
+#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */
+#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */
+
+#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */
+#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */
+
+#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */
+#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */
+
+#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */
+#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */
+
+#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */
+#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */
+
+#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */
+#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */
+
+#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */
+#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */
+
+/* TPI ITATBCTR2 Register Definitions */
+#define TPI_ITATBCTR2_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR2: ATREADY Position */
+#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/)    /*!< TPI ITATBCTR2: ATREADY Mask */
+
+/* TPI Integration ITM Data Register Definitions (FIFO1) */
+#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */
+#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */
+
+#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */
+#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */
+
+#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */
+#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */
+
+#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */
+#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */
+
+#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */
+#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */
+
+#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */
+#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */
+
+#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */
+#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */
+
+/* TPI ITATBCTR0 Register Definitions */
+#define TPI_ITATBCTR0_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR0: ATREADY Position */
+#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/)    /*!< TPI ITATBCTR0: ATREADY Mask */
+
+/* TPI Integration Mode Control Register Definitions */
+#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */
+#define TPI_ITCTRL_Mode_Msk                (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */
+
+/* TPI DEVID Register Definitions */
+#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */
+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */
+
+#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */
+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */
+
+#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */
+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */
+
+#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */
+#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */
+
+#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */
+#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */
+
+#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */
+#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */
+
+/* TPI DEVTYPE Register Definitions */
+#define TPI_DEVTYPE_MajorType_Pos           4U                                         /*!< TPI DEVTYPE: MajorType Position */
+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */
+
+#define TPI_DEVTYPE_SubType_Pos             0U                                         /*!< TPI DEVTYPE: SubType Position */
+#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */
+
+/*@}*/ /* end of group CMSIS_TPI */
+
+
+#if (__MPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_MPU     Memory Protection Unit (MPU)
+  \brief    Type definitions for the Memory Protection Unit (MPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory Protection Unit (MPU).
+ */
+typedef struct
+{
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */
+  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */
+  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */
+  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */
+  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */
+} MPU_Type;
+
+/* MPU Type Register Definitions */
+#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */
+
+#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */
+
+#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */
+#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */
+
+/* MPU Control Register Definitions */
+#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */
+
+#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */
+
+#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */
+#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */
+
+/* MPU Region Number Register Definitions */
+#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */
+#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */
+
+/* MPU Region Base Address Register Definitions */
+#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */
+#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */
+
+#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */
+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */
+
+#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */
+#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */
+
+/* MPU Region Attribute and Size Register Definitions */
+#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */
+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */
+
+#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */
+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */
+
+#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */
+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */
+
+#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */
+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */
+
+#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */
+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */
+
+#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */
+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */
+
+#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */
+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */
+
+#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */
+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */
+
+#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */
+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */
+
+#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */
+#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */
+
+/*@} end of group CMSIS_MPU */
+#endif
+
+
+#if (__FPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_FPU     Floating Point Unit (FPU)
+  \brief    Type definitions for the Floating Point Unit (FPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Floating Point Unit (FPU).
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */
+  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */
+  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */
+  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */
+  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */
+} FPU_Type;
+
+/* Floating-Point Context Control Register Definitions */
+#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */
+#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */
+
+#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */
+#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */
+
+#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */
+#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */
+
+#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */
+#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */
+
+#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */
+#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */
+
+#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */
+#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */
+
+#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */
+#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */
+
+#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */
+#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */
+
+#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */
+#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */
+
+/* Floating-Point Context Address Register Definitions */
+#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */
+#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */
+
+/* Floating-Point Default Status Control Register Definitions */
+#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */
+#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */
+
+#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */
+#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */
+
+#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */
+#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */
+
+#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */
+#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */
+
+/* Media and FP Feature Register 0 Definitions */
+#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */
+#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */
+
+#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */
+#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */
+
+#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */
+#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */
+
+#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */
+#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */
+
+#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */
+#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */
+
+#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */
+#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */
+
+#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */
+#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */
+
+#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */
+#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */
+
+/* Media and FP Feature Register 1 Definitions */
+#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */
+#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */
+
+#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */
+#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */
+
+#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */
+#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */
+
+#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */
+#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */
+
+/*@} end of group CMSIS_FPU */
+#endif
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    Type definitions for the Core Debug Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Core Debug Register (CoreDebug).
+ */
+typedef struct
+{
+  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */
+  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */
+  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */
+  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */
+} CoreDebug_Type;
+
+/* Debug Halting Control and Status Register Definitions */
+#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */
+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */
+
+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */
+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */
+
+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */
+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */
+
+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */
+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */
+
+#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */
+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */
+
+#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */
+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */
+
+#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */
+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */
+
+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */
+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */
+
+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */
+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */
+
+#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */
+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */
+
+#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */
+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */
+
+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */
+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */
+
+/* Debug Core Register Selector Register Definitions */
+#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */
+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */
+
+#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */
+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */
+
+/* Debug Exception and Monitor Control Register Definitions */
+#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */
+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */
+
+#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */
+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */
+
+#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */
+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */
+
+#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */
+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */
+
+#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */
+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */
+
+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */
+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */
+
+#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */
+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */
+
+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */
+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */
+
+#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */
+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */
+
+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */
+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */
+
+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */
+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */
+
+#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */
+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */
+
+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */
+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */
+
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    ((value << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    ((value & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Cortex-M4 Hardware */
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
+#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */
+#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */
+#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */
+#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
+
+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
+#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */
+#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */
+#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */
+#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */
+
+#if (__MPU_PRESENT == 1U)
+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */
+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */
+#endif
+
+#if (__FPU_PRESENT == 1U)
+  #define FPU_BASE          (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit */
+  #define FPU               ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit */
+#endif
+
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Debug Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+/**
+  \brief   Set Priority Grouping
+  \details Sets the priority grouping field using the required unlock sequence.
+           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.
+           Only values from 0..7 are used.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]      PriorityGroup  Priority grouping field.
+ */
+__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+  uint32_t reg_value;
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
+
+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */
+  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */
+  reg_value  =  (reg_value                                   |
+                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                (PriorityGroupTmp << 8U)                      );              /* Insert write key and priorty group */
+  SCB->AIRCR =  reg_value;
+}
+
+
+/**
+  \brief   Get Priority Grouping
+  \details Reads the priority grouping field from the NVIC Interrupt Controller.
+  \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)
+{
+  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+}
+
+
+/**
+  \brief   Enable External Interrupt
+  \details Enables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Disable External Interrupt
+  \details Disables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the pending register in the NVIC and returns the pending bit for the specified interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of an external interrupt.
+  \param [in]      IRQn  Interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of an external interrupt.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Active Interrupt
+  \details Reads the active register in NVIC and returns the active bit.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not active.
+  \return             1  Interrupt status is active.
+ */
+__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->IABR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of an interrupt.
+  \note    The priority cannot be set for every core interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+ */
+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) < 0)
+  {
+    SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+  else
+  {
+    NVIC->IP[((uint32_t)(int32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of an interrupt.
+           The interrupt number can be positive to specify an external (device specific) interrupt,
+           or negative to specify an internal (core) interrupt.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) < 0)
+  {
+    return(((uint32_t)SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return(((uint32_t)NVIC->IP[((uint32_t)(int32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   Encode Priority
+  \details Encodes the priority for an interrupt with the given priority group,
+           preemptive priority value, and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]     PriorityGroup  Used priority group.
+  \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
+  \param [in]       SubPriority  Subpriority value (starting from 0).
+  \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  return (
+           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
+         );
+}
+
+
+/**
+  \brief   Decode Priority
+  \details Decodes an interrupt priority value with a given priority group to
+           preemptive priority value and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
+  \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().
+  \param [in]     PriorityGroup  Used priority group.
+  \param [out] pPreemptPriority  Preemptive priority value (starting from 0).
+  \param [out]     pSubPriority  Subpriority value (starting from 0).
+ */
+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
+  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__STATIC_INLINE void NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |
+                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
+                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+/* ##################################### Debug In/Output function ########################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_core_DebugFunctions ITM Functions
+  \brief    Functions that access the ITM debug interface.
+  @{
+ */
+
+extern volatile int32_t ITM_RxBuffer;                    /*!< External variable to receive characters. */
+#define                 ITM_RXBUFFER_EMPTY   0x5AA55AA5U /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
+
+
+/**
+  \brief   ITM Send Character
+  \details Transmits a character via the ITM channel 0, and
+           \li Just returns when no debugger is connected that has booked the output.
+           \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.
+  \param [in]     ch  Character to transmit.
+  \returns            Character to transmit.
+ */
+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
+{
+  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */
+      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */
+  {
+    while (ITM->PORT[0U].u32 == 0UL)
+    {
+      __NOP();
+    }
+    ITM->PORT[0U].u8 = (uint8_t)ch;
+  }
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Receive Character
+  \details Inputs a character via the external variable \ref ITM_RxBuffer.
+  \return             Received character.
+  \return         -1  No character pending.
+ */
+__STATIC_INLINE int32_t ITM_ReceiveChar (void)
+{
+  int32_t ch = -1;                           /* no character available */
+
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)
+  {
+    ch = ITM_RxBuffer;
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
+  }
+
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Check Character
+  \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.
+  \return          0  No character available.
+  \return          1  Character available.
+ */
+__STATIC_INLINE int32_t ITM_CheckChar (void)
+{
+
+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)
+  {
+    return (0);                              /* no character available */
+  }
+  else
+  {
+    return (1);                              /*    character available */
+  }
+}
+
+/*@} end of CMSIS_core_DebugFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM4_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_cm7.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,2512 @@
+/**************************************************************************//**
+ * @file     core_cm7.h
+ * @brief    CMSIS Cortex-M7 Core Peripheral Access Layer Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CM7_H_GENERIC
+#define __CORE_CM7_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup Cortex_M7
+  @{
+ */
+
+/*  CMSIS CM7 definitions */
+#define __CM7_CMSIS_VERSION_MAIN  (0x04U)                                      /*!< [31:16] CMSIS HAL main version */
+#define __CM7_CMSIS_VERSION_SUB   (0x1EU)                                      /*!< [15:0]  CMSIS HAL sub version */
+#define __CM7_CMSIS_VERSION       ((__CM7_CMSIS_VERSION_MAIN << 16U) | \
+                                    __CM7_CMSIS_VERSION_SUB           )        /*!< CMSIS HAL version number */
+
+#define __CORTEX_M                (0x07U)                                      /*!< Cortex-M Core */
+
+
+#if   defined ( __CC_ARM )
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined ( __GNUC__ )
+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __ICCARM__ )
+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TMS470__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TASKING__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __CSMC__ )
+  #define __packed
+  #define __ASM            _asm                                      /*!< asm keyword for COSMIC Compiler */
+  #define __INLINE         inline                                    /*!< inline keyword for COSMIC Compiler. Use -pc99 on compile line */
+  #define __STATIC_INLINE  static inline
+
+#else
+  #error Unknown compiler
+#endif
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.
+*/
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_PCS_VFP
+    #if (__FPU_PRESENT == 1)
+      #define __FPU_USED       1U
+    #else
+      #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __TMS470__ )
+  #if defined __TI_VFP_SUPPORT__
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #if (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#endif
+
+#include "core_cmInstr.h"                /* Core Instruction Access */
+#include "core_cmFunc.h"                 /* Core Function Access */
+#include "core_cmSimd.h"                 /* Compiler specific SIMD Intrinsics */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM7_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_CM7_H_DEPENDANT
+#define __CORE_CM7_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __CM7_REV
+    #define __CM7_REV               0x0000U
+    #warning "__CM7_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __FPU_PRESENT
+    #define __FPU_PRESENT             0U
+    #warning "__FPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __MPU_PRESENT
+    #define __MPU_PRESENT             0U
+    #warning "__MPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __ICACHE_PRESENT
+    #define __ICACHE_PRESENT          0U
+    #warning "__ICACHE_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __DCACHE_PRESENT
+    #define __DCACHE_PRESENT          0U
+    #warning "__DCACHE_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __DTCM_PRESENT
+    #define __DTCM_PRESENT            0U
+    #warning "__DTCM_PRESENT        not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          3U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group Cortex_M7 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+  - Core Debug Register
+  - Core MPU Register
+  - Core FPU Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */
+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */
+#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */
+
+#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */
+#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */
+    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */
+#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */
+
+#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */
+#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */
+#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
+    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag */
+    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */
+#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */
+
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */
+#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[24U];
+  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[24U];
+  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[24U];
+  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[24U];
+  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */
+        uint32_t RESERVED4[56U];
+  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */
+        uint32_t RESERVED5[644U];
+  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */
+}  NVIC_Type;
+
+/* Software Triggered Interrupt Register Definitions */
+#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */
+#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */
+  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */
+  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */
+  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */
+  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */
+  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
+  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */
+  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */
+  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t ID_MFR[4U];             /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
+  __IM  uint32_t ID_ISAR[5U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
+        uint32_t RESERVED0[1U];
+  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */
+  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */
+  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */
+  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */
+  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
+        uint32_t RESERVED3[93U];
+  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */
+        uint32_t RESERVED4[15U];
+  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */
+  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */
+  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 1 */
+        uint32_t RESERVED5[1U];
+  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */
+        uint32_t RESERVED6[1U];
+  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */
+  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */
+  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */
+  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */
+  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */
+  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */
+  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */
+  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */
+        uint32_t RESERVED7[6U];
+  __IOM uint32_t ITCMCR;                 /*!< Offset: 0x290 (R/W)  Instruction Tightly-Coupled Memory Control Register */
+  __IOM uint32_t DTCMCR;                 /*!< Offset: 0x294 (R/W)  Data Tightly-Coupled Memory Control Registers */
+  __IOM uint32_t AHBPCR;                 /*!< Offset: 0x298 (R/W)  AHBP Control Register */
+  __IOM uint32_t CACR;                   /*!< Offset: 0x29C (R/W)  L1 Cache Control Register */
+  __IOM uint32_t AHBSCR;                 /*!< Offset: 0x2A0 (R/W)  AHB Slave Control Register */
+        uint32_t RESERVED8[1U];
+  __IOM uint32_t ABFSR;                  /*!< Offset: 0x2A8 (R/W)  Auxiliary Bus Fault Status Register */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */
+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Vector Table Offset Register Definitions */
+#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */
+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */
+#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_BP_Pos                      18U                                           /*!< SCB CCR: Branch prediction enable bit Position */
+#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: Branch prediction enable bit Mask */
+
+#define SCB_CCR_IC_Pos                      17U                                           /*!< SCB CCR: Instruction cache enable bit Position */
+#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: Instruction cache enable bit Mask */
+
+#define SCB_CCR_DC_Pos                      16U                                           /*!< SCB CCR: Cache enable bit Position */
+#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: Cache enable bit Mask */
+
+#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+
+#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */
+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */
+
+#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */
+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */
+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */
+
+#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */
+#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */
+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */
+
+#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */
+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */
+
+#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */
+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */
+
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */
+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */
+
+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */
+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */
+
+#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */
+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */
+
+#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */
+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */
+
+#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */
+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */
+
+#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */
+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */
+
+#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */
+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */
+
+#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */
+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */
+
+#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */
+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */
+
+#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */
+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */
+
+/* SCB Configurable Fault Status Register Definitions */
+#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */
+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */
+
+#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */
+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */
+
+#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */
+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */
+
+/* SCB Hard Fault Status Register Definitions */
+#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */
+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */
+
+#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */
+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */
+
+#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */
+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */
+
+/* SCB Debug Fault Status Register Definitions */
+#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */
+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */
+
+#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */
+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */
+
+#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */
+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */
+
+#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */
+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */
+
+#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */
+#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */
+
+/* SCB Cache Level ID Register Definitions */
+#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */
+#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */
+
+#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */
+#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */
+
+/* SCB Cache Type Register Definitions */
+#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */
+#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */
+
+#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */
+#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */
+
+#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */
+#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */
+
+#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */
+#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */
+
+#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */
+#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */
+
+/* SCB Cache Size ID Register Definitions */
+#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */
+#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */
+
+#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */
+#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */
+
+#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */
+#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */
+
+#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */
+#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */
+
+#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */
+#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */
+
+#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */
+#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */
+
+#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */
+#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */
+
+/* SCB Cache Size Selection Register Definitions */
+#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */
+#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */
+
+#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */
+#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */
+
+/* SCB Software Triggered Interrupt Register Definitions */
+#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */
+#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */
+
+/* SCB D-Cache Invalidate by Set-way Register Definitions */
+#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */
+#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */
+
+#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */
+#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */
+
+/* SCB D-Cache Clean by Set-way Register Definitions */
+#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */
+#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */
+
+#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */
+#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */
+
+/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */
+#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */
+#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */
+
+#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */
+#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */
+
+/* Instruction Tightly-Coupled Memory Control Register Definitions */
+#define SCB_ITCMCR_SZ_Pos                   3U                                            /*!< SCB ITCMCR: SZ Position */
+#define SCB_ITCMCR_SZ_Msk                  (0xFUL << SCB_ITCMCR_SZ_Pos)                   /*!< SCB ITCMCR: SZ Mask */
+
+#define SCB_ITCMCR_RETEN_Pos                2U                                            /*!< SCB ITCMCR: RETEN Position */
+#define SCB_ITCMCR_RETEN_Msk               (1UL << SCB_ITCMCR_RETEN_Pos)                  /*!< SCB ITCMCR: RETEN Mask */
+
+#define SCB_ITCMCR_RMW_Pos                  1U                                            /*!< SCB ITCMCR: RMW Position */
+#define SCB_ITCMCR_RMW_Msk                 (1UL << SCB_ITCMCR_RMW_Pos)                    /*!< SCB ITCMCR: RMW Mask */
+
+#define SCB_ITCMCR_EN_Pos                   0U                                            /*!< SCB ITCMCR: EN Position */
+#define SCB_ITCMCR_EN_Msk                  (1UL /*<< SCB_ITCMCR_EN_Pos*/)                 /*!< SCB ITCMCR: EN Mask */
+
+/* Data Tightly-Coupled Memory Control Register Definitions */
+#define SCB_DTCMCR_SZ_Pos                   3U                                            /*!< SCB DTCMCR: SZ Position */
+#define SCB_DTCMCR_SZ_Msk                  (0xFUL << SCB_DTCMCR_SZ_Pos)                   /*!< SCB DTCMCR: SZ Mask */
+
+#define SCB_DTCMCR_RETEN_Pos                2U                                            /*!< SCB DTCMCR: RETEN Position */
+#define SCB_DTCMCR_RETEN_Msk               (1UL << SCB_DTCMCR_RETEN_Pos)                   /*!< SCB DTCMCR: RETEN Mask */
+
+#define SCB_DTCMCR_RMW_Pos                  1U                                            /*!< SCB DTCMCR: RMW Position */
+#define SCB_DTCMCR_RMW_Msk                 (1UL << SCB_DTCMCR_RMW_Pos)                    /*!< SCB DTCMCR: RMW Mask */
+
+#define SCB_DTCMCR_EN_Pos                   0U                                            /*!< SCB DTCMCR: EN Position */
+#define SCB_DTCMCR_EN_Msk                  (1UL /*<< SCB_DTCMCR_EN_Pos*/)                 /*!< SCB DTCMCR: EN Mask */
+
+/* AHBP Control Register Definitions */
+#define SCB_AHBPCR_SZ_Pos                   1U                                            /*!< SCB AHBPCR: SZ Position */
+#define SCB_AHBPCR_SZ_Msk                  (7UL << SCB_AHBPCR_SZ_Pos)                     /*!< SCB AHBPCR: SZ Mask */
+
+#define SCB_AHBPCR_EN_Pos                   0U                                            /*!< SCB AHBPCR: EN Position */
+#define SCB_AHBPCR_EN_Msk                  (1UL /*<< SCB_AHBPCR_EN_Pos*/)                 /*!< SCB AHBPCR: EN Mask */
+
+/* L1 Cache Control Register Definitions */
+#define SCB_CACR_FORCEWT_Pos                2U                                            /*!< SCB CACR: FORCEWT Position */
+#define SCB_CACR_FORCEWT_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: FORCEWT Mask */
+
+#define SCB_CACR_ECCEN_Pos                  1U                                            /*!< SCB CACR: ECCEN Position */
+#define SCB_CACR_ECCEN_Msk                 (1UL << SCB_CACR_ECCEN_Pos)                    /*!< SCB CACR: ECCEN Mask */
+
+#define SCB_CACR_SIWT_Pos                   0U                                            /*!< SCB CACR: SIWT Position */
+#define SCB_CACR_SIWT_Msk                  (1UL /*<< SCB_CACR_SIWT_Pos*/)                 /*!< SCB CACR: SIWT Mask */
+
+/* AHBS Control Register Definitions */
+#define SCB_AHBSCR_INITCOUNT_Pos           11U                                            /*!< SCB AHBSCR: INITCOUNT Position */
+#define SCB_AHBSCR_INITCOUNT_Msk           (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos)           /*!< SCB AHBSCR: INITCOUNT Mask */
+
+#define SCB_AHBSCR_TPRI_Pos                 2U                                            /*!< SCB AHBSCR: TPRI Position */
+#define SCB_AHBSCR_TPRI_Msk                (0x1FFUL << SCB_AHBPCR_TPRI_Pos)               /*!< SCB AHBSCR: TPRI Mask */
+
+#define SCB_AHBSCR_CTL_Pos                  0U                                            /*!< SCB AHBSCR: CTL Position*/
+#define SCB_AHBSCR_CTL_Msk                 (3UL /*<< SCB_AHBPCR_CTL_Pos*/)                /*!< SCB AHBSCR: CTL Mask */
+
+/* Auxiliary Bus Fault Status Register Definitions */
+#define SCB_ABFSR_AXIMTYPE_Pos              8U                                            /*!< SCB ABFSR: AXIMTYPE Position*/
+#define SCB_ABFSR_AXIMTYPE_Msk             (3UL << SCB_ABFSR_AXIMTYPE_Pos)                /*!< SCB ABFSR: AXIMTYPE Mask */
+
+#define SCB_ABFSR_EPPB_Pos                  4U                                            /*!< SCB ABFSR: EPPB Position*/
+#define SCB_ABFSR_EPPB_Msk                 (1UL << SCB_ABFSR_EPPB_Pos)                    /*!< SCB ABFSR: EPPB Mask */
+
+#define SCB_ABFSR_AXIM_Pos                  3U                                            /*!< SCB ABFSR: AXIM Position*/
+#define SCB_ABFSR_AXIM_Msk                 (1UL << SCB_ABFSR_AXIM_Pos)                    /*!< SCB ABFSR: AXIM Mask */
+
+#define SCB_ABFSR_AHBP_Pos                  2U                                            /*!< SCB ABFSR: AHBP Position*/
+#define SCB_ABFSR_AHBP_Msk                 (1UL << SCB_ABFSR_AHBP_Pos)                    /*!< SCB ABFSR: AHBP Mask */
+
+#define SCB_ABFSR_DTCM_Pos                  1U                                            /*!< SCB ABFSR: DTCM Position*/
+#define SCB_ABFSR_DTCM_Msk                 (1UL << SCB_ABFSR_DTCM_Pos)                    /*!< SCB ABFSR: DTCM Mask */
+
+#define SCB_ABFSR_ITCM_Pos                  0U                                            /*!< SCB ABFSR: ITCM Position*/
+#define SCB_ABFSR_ITCM_Msk                 (1UL /*<< SCB_ABFSR_ITCM_Pos*/)                /*!< SCB ABFSR: ITCM Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)
+  \brief    Type definitions for the System Control and ID Register not in the SCB
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control and ID Register not in the SCB.
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */
+  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */
+} SCnSCB_Type;
+
+/* Interrupt Controller Type Register Definitions */
+#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */
+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */
+
+/* Auxiliary Control Register Definitions */
+#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos    12U                                         /*!< ACTLR: DISITMATBFLUSH Position */
+#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk    (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos)    /*!< ACTLR: DISITMATBFLUSH Mask */
+
+#define SCnSCB_ACTLR_DISRAMODE_Pos         11U                                         /*!< ACTLR: DISRAMODE Position */
+#define SCnSCB_ACTLR_DISRAMODE_Msk         (1UL << SCnSCB_ACTLR_DISRAMODE_Pos)         /*!< ACTLR: DISRAMODE Mask */
+
+#define SCnSCB_ACTLR_FPEXCODIS_Pos         10U                                         /*!< ACTLR: FPEXCODIS Position */
+#define SCnSCB_ACTLR_FPEXCODIS_Msk         (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos)         /*!< ACTLR: FPEXCODIS Mask */
+
+#define SCnSCB_ACTLR_DISFOLD_Pos            2U                                         /*!< ACTLR: DISFOLD Position */
+#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */
+
+#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */
+#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */
+
+/*@} end of group CMSIS_SCnotSCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)
+  \brief    Type definitions for the Instrumentation Trace Macrocell (ITM)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).
+ */
+typedef struct
+{
+  __OM  union
+  {
+    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */
+    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */
+    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */
+  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */
+        uint32_t RESERVED0[864U];
+  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */
+        uint32_t RESERVED1[15U];
+  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */
+        uint32_t RESERVED2[15U];
+  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */
+        uint32_t RESERVED3[29U];
+  __OM  uint32_t IWR;                    /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register */
+  __IM  uint32_t IRR;                    /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register */
+  __IOM uint32_t IMCR;                   /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register */
+        uint32_t RESERVED4[43U];
+  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */
+        uint32_t RESERVED5[6U];
+  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */
+  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */
+  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */
+  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */
+  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */
+  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */
+  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */
+  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */
+  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */
+  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */
+  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */
+  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */
+} ITM_Type;
+
+/* ITM Trace Privilege Register Definitions */
+#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */
+#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */
+
+/* ITM Trace Control Register Definitions */
+#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */
+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */
+
+#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */
+#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */
+
+#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */
+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */
+
+#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */
+#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */
+
+#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */
+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */
+
+#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */
+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */
+
+#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */
+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */
+
+#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */
+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */
+
+#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */
+#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */
+
+/* ITM Integration Write Register Definitions */
+#define ITM_IWR_ATVALIDM_Pos                0U                                            /*!< ITM IWR: ATVALIDM Position */
+#define ITM_IWR_ATVALIDM_Msk               (1UL /*<< ITM_IWR_ATVALIDM_Pos*/)              /*!< ITM IWR: ATVALIDM Mask */
+
+/* ITM Integration Read Register Definitions */
+#define ITM_IRR_ATREADYM_Pos                0U                                            /*!< ITM IRR: ATREADYM Position */
+#define ITM_IRR_ATREADYM_Msk               (1UL /*<< ITM_IRR_ATREADYM_Pos*/)              /*!< ITM IRR: ATREADYM Mask */
+
+/* ITM Integration Mode Control Register Definitions */
+#define ITM_IMCR_INTEGRATION_Pos            0U                                            /*!< ITM IMCR: INTEGRATION Position */
+#define ITM_IMCR_INTEGRATION_Msk           (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/)          /*!< ITM IMCR: INTEGRATION Mask */
+
+/* ITM Lock Status Register Definitions */
+#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */
+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */
+
+#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */
+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */
+
+#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */
+#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */
+
+/*@}*/ /* end of group CMSIS_ITM */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)
+  \brief    Type definitions for the Data Watchpoint and Trace (DWT)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */
+  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */
+  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */
+  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */
+  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */
+  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */
+  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */
+  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */
+  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */
+  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */
+  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */
+  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */
+  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */
+        uint32_t RESERVED1[1U];
+  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */
+  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */
+  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */
+        uint32_t RESERVED2[1U];
+  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */
+  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */
+  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */
+        uint32_t RESERVED3[981U];
+  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 (  W)  Lock Access Register */
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */
+} DWT_Type;
+
+/* DWT Control Register Definitions */
+#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */
+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */
+
+#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */
+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */
+
+#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */
+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */
+
+#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */
+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */
+
+#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */
+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */
+
+#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */
+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */
+
+#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */
+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */
+
+#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */
+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */
+
+#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */
+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */
+
+#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */
+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */
+
+#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */
+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */
+
+#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */
+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */
+
+#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */
+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */
+
+#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */
+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */
+
+#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */
+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */
+
+#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */
+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */
+
+#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */
+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */
+
+#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */
+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */
+
+/* DWT CPI Count Register Definitions */
+#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */
+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */
+
+/* DWT Exception Overhead Count Register Definitions */
+#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */
+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */
+
+/* DWT Sleep Count Register Definitions */
+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */
+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */
+
+/* DWT LSU Count Register Definitions */
+#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */
+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */
+
+/* DWT Folded-instruction Count Register Definitions */
+#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */
+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */
+
+/* DWT Comparator Mask Register Definitions */
+#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */
+#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */
+
+/* DWT Comparator Function Register Definitions */
+#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */
+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */
+
+#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */
+#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */
+
+#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */
+#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */
+
+#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */
+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */
+
+#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */
+#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */
+
+#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */
+#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */
+
+#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */
+#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */
+
+#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */
+#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */
+
+#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */
+#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */
+
+/*@}*/ /* end of group CMSIS_DWT */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_TPI     Trace Port Interface (TPI)
+  \brief    Type definitions for the Trace Port Interface (TPI)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Trace Port Interface Register (TPI).
+ */
+typedef struct
+{
+  __IOM uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */
+  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */
+        uint32_t RESERVED1[55U];
+  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */
+        uint32_t RESERVED2[131U];
+  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */
+  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */
+  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */
+        uint32_t RESERVED3[759U];
+  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER */
+  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */
+  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */
+        uint32_t RESERVED4[1U];
+  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */
+  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */
+  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */
+        uint32_t RESERVED5[39U];
+  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */
+  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */
+        uint32_t RESERVED7[8U];
+  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */
+  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */
+} TPI_Type;
+
+/* TPI Asynchronous Clock Prescaler Register Definitions */
+#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */
+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */
+
+/* TPI Selected Pin Protocol Register Definitions */
+#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */
+#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */
+
+/* TPI Formatter and Flush Status Register Definitions */
+#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */
+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */
+
+#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */
+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */
+
+#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */
+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */
+
+#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */
+#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */
+
+/* TPI Formatter and Flush Control Register Definitions */
+#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */
+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */
+
+#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */
+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */
+
+/* TPI TRIGGER Register Definitions */
+#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */
+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */
+
+/* TPI Integration ETM Data Register Definitions (FIFO0) */
+#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */
+#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */
+
+#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */
+#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */
+
+#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */
+#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */
+
+#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */
+#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */
+
+#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */
+#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */
+
+#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */
+#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */
+
+#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */
+#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */
+
+/* TPI ITATBCTR2 Register Definitions */
+#define TPI_ITATBCTR2_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR2: ATREADY Position */
+#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/)    /*!< TPI ITATBCTR2: ATREADY Mask */
+
+/* TPI Integration ITM Data Register Definitions (FIFO1) */
+#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */
+#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */
+
+#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */
+#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */
+
+#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */
+#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */
+
+#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */
+#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */
+
+#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */
+#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */
+
+#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */
+#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */
+
+#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */
+#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */
+
+/* TPI ITATBCTR0 Register Definitions */
+#define TPI_ITATBCTR0_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR0: ATREADY Position */
+#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/)    /*!< TPI ITATBCTR0: ATREADY Mask */
+
+/* TPI Integration Mode Control Register Definitions */
+#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */
+#define TPI_ITCTRL_Mode_Msk                (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */
+
+/* TPI DEVID Register Definitions */
+#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */
+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */
+
+#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */
+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */
+
+#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */
+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */
+
+#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */
+#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */
+
+#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */
+#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */
+
+#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */
+#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */
+
+/* TPI DEVTYPE Register Definitions */
+#define TPI_DEVTYPE_MajorType_Pos           4U                                         /*!< TPI DEVTYPE: MajorType Position */
+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */
+
+#define TPI_DEVTYPE_SubType_Pos             0U                                         /*!< TPI DEVTYPE: SubType Position */
+#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */
+
+/*@}*/ /* end of group CMSIS_TPI */
+
+
+#if (__MPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_MPU     Memory Protection Unit (MPU)
+  \brief    Type definitions for the Memory Protection Unit (MPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory Protection Unit (MPU).
+ */
+typedef struct
+{
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */
+  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */
+  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */
+  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */
+  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */
+} MPU_Type;
+
+/* MPU Type Register Definitions */
+#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */
+
+#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */
+
+#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */
+#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */
+
+/* MPU Control Register Definitions */
+#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */
+
+#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */
+
+#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */
+#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */
+
+/* MPU Region Number Register Definitions */
+#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */
+#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */
+
+/* MPU Region Base Address Register Definitions */
+#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */
+#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */
+
+#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */
+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */
+
+#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */
+#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */
+
+/* MPU Region Attribute and Size Register Definitions */
+#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */
+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */
+
+#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */
+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */
+
+#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */
+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */
+
+#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */
+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */
+
+#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */
+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */
+
+#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */
+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */
+
+#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */
+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */
+
+#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */
+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */
+
+#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */
+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */
+
+#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */
+#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */
+
+/*@} end of group CMSIS_MPU */
+#endif
+
+
+#if (__FPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_FPU     Floating Point Unit (FPU)
+  \brief    Type definitions for the Floating Point Unit (FPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Floating Point Unit (FPU).
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */
+  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */
+  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */
+  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0 */
+  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1 */
+  __IM  uint32_t MVFR2;                  /*!< Offset: 0x018 (R/ )  Media and FP Feature Register 2 */
+} FPU_Type;
+
+/* Floating-Point Context Control Register Definitions */
+#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */
+#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */
+
+#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */
+#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */
+
+#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */
+#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */
+
+#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */
+#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */
+
+#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */
+#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */
+
+#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */
+#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */
+
+#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */
+#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */
+
+#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */
+#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */
+
+#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */
+#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */
+
+/* Floating-Point Context Address Register Definitions */
+#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */
+#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */
+
+/* Floating-Point Default Status Control Register Definitions */
+#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */
+#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */
+
+#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */
+#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */
+
+#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */
+#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */
+
+#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */
+#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */
+
+/* Media and FP Feature Register 0 Definitions */
+#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */
+#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */
+
+#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */
+#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */
+
+#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */
+#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */
+
+#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */
+#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */
+
+#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */
+#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */
+
+#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */
+#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */
+
+#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */
+#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */
+
+#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */
+#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */
+
+/* Media and FP Feature Register 1 Definitions */
+#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */
+#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */
+
+#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */
+#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */
+
+#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */
+#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */
+
+#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */
+#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */
+
+/* Media and FP Feature Register 2 Definitions */
+
+/*@} end of group CMSIS_FPU */
+#endif
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    Type definitions for the Core Debug Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Core Debug Register (CoreDebug).
+ */
+typedef struct
+{
+  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */
+  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */
+  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */
+  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */
+} CoreDebug_Type;
+
+/* Debug Halting Control and Status Register Definitions */
+#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */
+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */
+
+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */
+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */
+
+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */
+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */
+
+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */
+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */
+
+#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */
+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */
+
+#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */
+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */
+
+#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */
+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */
+
+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */
+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */
+
+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */
+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */
+
+#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */
+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */
+
+#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */
+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */
+
+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */
+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */
+
+/* Debug Core Register Selector Register Definitions */
+#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */
+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */
+
+#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */
+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */
+
+/* Debug Exception and Monitor Control Register Definitions */
+#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */
+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */
+
+#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */
+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */
+
+#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */
+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */
+
+#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */
+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */
+
+#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */
+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */
+
+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */
+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */
+
+#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */
+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */
+
+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */
+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */
+
+#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */
+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */
+
+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */
+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */
+
+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */
+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */
+
+#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */
+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */
+
+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */
+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */
+
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    ((value << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    ((value & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Cortex-M4 Hardware */
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
+#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */
+#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */
+#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */
+#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
+
+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
+#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */
+#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */
+#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */
+#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */
+
+#if (__MPU_PRESENT == 1U)
+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */
+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */
+#endif
+
+#if (__FPU_PRESENT == 1U)
+  #define FPU_BASE          (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit */
+  #define FPU               ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit */
+#endif
+
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Debug Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+/**
+  \brief   Set Priority Grouping
+  \details Sets the priority grouping field using the required unlock sequence.
+           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.
+           Only values from 0..7 are used.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]      PriorityGroup  Priority grouping field.
+ */
+__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+  uint32_t reg_value;
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
+
+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */
+  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */
+  reg_value  =  (reg_value                                   |
+                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                (PriorityGroupTmp << 8U)                      );              /* Insert write key and priorty group */
+  SCB->AIRCR =  reg_value;
+}
+
+
+/**
+  \brief   Get Priority Grouping
+  \details Reads the priority grouping field from the NVIC Interrupt Controller.
+  \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)
+{
+  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+}
+
+
+/**
+  \brief   Enable External Interrupt
+  \details Enables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Disable External Interrupt
+  \details Disables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the pending register in the NVIC and returns the pending bit for the specified interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of an external interrupt.
+  \param [in]      IRQn  Interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of an external interrupt.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Active Interrupt
+  \details Reads the active register in NVIC and returns the active bit.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not active.
+  \return             1  Interrupt status is active.
+ */
+__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->IABR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of an interrupt.
+  \note    The priority cannot be set for every core interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+ */
+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) < 0)
+  {
+    SCB->SHPR[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+  else
+  {
+    NVIC->IP[((uint32_t)(int32_t)IRQn)]                = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of an interrupt.
+           The interrupt number can be positive to specify an external (device specific) interrupt,
+           or negative to specify an internal (core) interrupt.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) < 0)
+  {
+    return(((uint32_t)SCB->SHPR[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return(((uint32_t)NVIC->IP[((uint32_t)(int32_t)IRQn)]                >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   Encode Priority
+  \details Encodes the priority for an interrupt with the given priority group,
+           preemptive priority value, and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]     PriorityGroup  Used priority group.
+  \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
+  \param [in]       SubPriority  Subpriority value (starting from 0).
+  \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  return (
+           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
+         );
+}
+
+
+/**
+  \brief   Decode Priority
+  \details Decodes an interrupt priority value with a given priority group to
+           preemptive priority value and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
+  \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().
+  \param [in]     PriorityGroup  Used priority group.
+  \param [out] pPreemptPriority  Preemptive priority value (starting from 0).
+  \param [out]     pSubPriority  Subpriority value (starting from 0).
+ */
+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
+  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__STATIC_INLINE void NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |
+                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
+                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+
+/* ##########################  FPU functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_FpuFunctions FPU Functions
+  \brief    Function that provides FPU type.
+  @{
+ */
+
+/**
+  \brief   get FPU type
+  \details returns the FPU type
+  \returns
+   - \b  0: No FPU
+   - \b  1: Single precision FPU
+   - \b  2: Double + Single precision FPU
+ */
+__STATIC_INLINE uint32_t SCB_GetFPUType(void)
+{
+  uint32_t mvfr0;
+
+  mvfr0 = SCB->MVFR0;
+  if        ((mvfr0 & 0x00000FF0UL) == 0x220UL)
+  {
+    return 2UL;           /* Double + Single precision FPU */
+  }
+  else if ((mvfr0 & 0x00000FF0UL) == 0x020UL)
+  {
+    return 1UL;           /* Single precision FPU */
+  }
+  else
+  {
+    return 0UL;           /* No FPU */
+  }
+}
+
+
+/*@} end of CMSIS_Core_FpuFunctions */
+
+
+
+/* ##########################  Cache functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_CacheFunctions Cache Functions
+  \brief    Functions that configure Instruction and Data cache.
+  @{
+ */
+
+/* Cache Size ID Register Macros */
+#define CCSIDR_WAYS(x)         (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos)
+#define CCSIDR_SETS(x)         (((x) & SCB_CCSIDR_NUMSETS_Msk      ) >> SCB_CCSIDR_NUMSETS_Pos      )
+
+
+/**
+  \brief   Enable I-Cache
+  \details Turns on I-Cache
+  */
+__STATIC_INLINE void SCB_EnableICache (void)
+{
+  #if (__ICACHE_PRESENT == 1U)
+    __DSB();
+    __ISB();
+    SCB->ICIALLU = 0UL;                     /* invalidate I-Cache */
+    SCB->CCR |=  (uint32_t)SCB_CCR_IC_Msk;  /* enable I-Cache */
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Disable I-Cache
+  \details Turns off I-Cache
+  */
+__STATIC_INLINE void SCB_DisableICache (void)
+{
+  #if (__ICACHE_PRESENT == 1U)
+    __DSB();
+    __ISB();
+    SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk;  /* disable I-Cache */
+    SCB->ICIALLU = 0UL;                     /* invalidate I-Cache */
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Invalidate I-Cache
+  \details Invalidates I-Cache
+  */
+__STATIC_INLINE void SCB_InvalidateICache (void)
+{
+  #if (__ICACHE_PRESENT == 1U)
+    __DSB();
+    __ISB();
+    SCB->ICIALLU = 0UL;
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Enable D-Cache
+  \details Turns on D-Cache
+  */
+__STATIC_INLINE void SCB_EnableDCache (void)
+{
+  #if (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = (0U << 1U) | 0U;          /* Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* invalidate D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |
+                      ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways--);
+    } while(sets--);
+    __DSB();
+
+    SCB->CCR |=  (uint32_t)SCB_CCR_DC_Msk;  /* enable D-Cache */
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Disable D-Cache
+  \details Turns off D-Cache
+  */
+__STATIC_INLINE void SCB_DisableDCache (void)
+{
+  #if (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = (0U << 1U) | 0U;          /* Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+    SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk;  /* disable D-Cache */
+
+                                            /* clean & invalidate D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |
+                       ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways--);
+    } while(sets--);
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Invalidate D-Cache
+  \details Invalidates D-Cache
+  */
+__STATIC_INLINE void SCB_InvalidateDCache (void)
+{
+  #if (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = (0U << 1U) | 0U;          /* Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* invalidate D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |
+                      ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways--);
+    } while(sets--);
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Clean D-Cache
+  \details Cleans D-Cache
+  */
+__STATIC_INLINE void SCB_CleanDCache (void)
+{
+  #if (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = (0U << 1U) | 0U;          /* Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* clean D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) |
+                      ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways--);
+    } while(sets--);
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Clean & Invalidate D-Cache
+  \details Cleans and Invalidates D-Cache
+  */
+__STATIC_INLINE void SCB_CleanInvalidateDCache (void)
+{
+  #if (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = (0U << 1U) | 0U;          /* Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* clean & invalidate D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |
+                       ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways--);
+    } while(sets--);
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   D-Cache Invalidate by address
+  \details Invalidates D-Cache for the given address
+  \param[in]   addr    address (aligned to 32-byte boundary)
+  \param[in]   dsize   size of memory block (in number of bytes)
+*/
+__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize)
+{
+  #if (__DCACHE_PRESENT == 1U)
+     int32_t op_size = dsize;
+    uint32_t op_addr = (uint32_t)addr;
+     int32_t linesize = 32U;                /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */
+
+    __DSB();
+
+    while (op_size > 0) {
+      SCB->DCIMVAC = op_addr;
+      op_addr += linesize;
+      op_size -= linesize;
+    }
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   D-Cache Clean by address
+  \details Cleans D-Cache for the given address
+  \param[in]   addr    address (aligned to 32-byte boundary)
+  \param[in]   dsize   size of memory block (in number of bytes)
+*/
+__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize)
+{
+  #if (__DCACHE_PRESENT == 1)
+     int32_t op_size = dsize;
+    uint32_t op_addr = (uint32_t) addr;
+     int32_t linesize = 32U;                /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */
+
+    __DSB();
+
+    while (op_size > 0) {
+      SCB->DCCMVAC = op_addr;
+      op_addr += linesize;
+      op_size -= linesize;
+    }
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   D-Cache Clean and Invalidate by address
+  \details Cleans and invalidates D_Cache for the given address
+  \param[in]   addr    address (aligned to 32-byte boundary)
+  \param[in]   dsize   size of memory block (in number of bytes)
+*/
+__STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize)
+{
+  #if (__DCACHE_PRESENT == 1U)
+     int32_t op_size = dsize;
+    uint32_t op_addr = (uint32_t) addr;
+     int32_t linesize = 32U;                /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */
+
+    __DSB();
+
+    while (op_size > 0) {
+      SCB->DCCIMVAC = op_addr;
+      op_addr += linesize;
+      op_size -= linesize;
+    }
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/*@} end of CMSIS_Core_CacheFunctions */
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+/* ##################################### Debug In/Output function ########################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_core_DebugFunctions ITM Functions
+  \brief    Functions that access the ITM debug interface.
+  @{
+ */
+
+extern volatile int32_t ITM_RxBuffer;                    /*!< External variable to receive characters. */
+#define                 ITM_RXBUFFER_EMPTY   0x5AA55AA5U /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
+
+
+/**
+  \brief   ITM Send Character
+  \details Transmits a character via the ITM channel 0, and
+           \li Just returns when no debugger is connected that has booked the output.
+           \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.
+  \param [in]     ch  Character to transmit.
+  \returns            Character to transmit.
+ */
+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
+{
+  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */
+      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */
+  {
+    while (ITM->PORT[0U].u32 == 0UL)
+    {
+      __NOP();
+    }
+    ITM->PORT[0U].u8 = (uint8_t)ch;
+  }
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Receive Character
+  \details Inputs a character via the external variable \ref ITM_RxBuffer.
+  \return             Received character.
+  \return         -1  No character pending.
+ */
+__STATIC_INLINE int32_t ITM_ReceiveChar (void)
+{
+  int32_t ch = -1;                           /* no character available */
+
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)
+  {
+    ch = ITM_RxBuffer;
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
+  }
+
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Check Character
+  \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.
+  \return          0  No character available.
+  \return          1  Character available.
+ */
+__STATIC_INLINE int32_t ITM_CheckChar (void)
+{
+
+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)
+  {
+    return (0);                              /* no character available */
+  }
+  else
+  {
+    return (1);                              /*    character available */
+  }
+}
+
+/*@} end of CMSIS_core_DebugFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM7_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_cmFunc.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,87 @@
+/**************************************************************************//**
+ * @file     core_cmFunc.h
+ * @brief    CMSIS Cortex-M Core Function Access Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CMFUNC_H
+#define __CORE_CMFUNC_H
+
+
+/* ###########################  Core Function Access  ########################### */
+/** \ingroup  CMSIS_Core_FunctionInterface
+    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
+  @{
+*/
+
+/*------------------ RealView Compiler -----------------*/
+#if   defined ( __CC_ARM )
+  #include "cmsis_armcc.h"
+
+/*------------------ ARM Compiler V6 -------------------*/
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #include "cmsis_armcc_V6.h"
+
+/*------------------ GNU Compiler ----------------------*/
+#elif defined ( __GNUC__ )
+  #include "cmsis_gcc.h"
+
+/*------------------ ICC Compiler ----------------------*/
+#elif defined ( __ICCARM__ )
+  #include <cmsis_iar.h>
+
+/*------------------ TI CCS Compiler -------------------*/
+#elif defined ( __TMS470__ )
+  #include <cmsis_ccs.h>
+
+/*------------------ TASKING Compiler ------------------*/
+#elif defined ( __TASKING__ )
+  /*
+   * The CMSIS functions have been implemented as intrinsics in the compiler.
+   * Please use "carm -?i" to get an up to date list of all intrinsics,
+   * Including the CMSIS ones.
+   */
+
+/*------------------ COSMIC Compiler -------------------*/
+#elif defined ( __CSMC__ )
+  #include <cmsis_csm.h>
+
+#endif
+
+/*@} end of CMSIS_Core_RegAccFunctions */
+
+#endif /* __CORE_CMFUNC_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_cmInstr.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,87 @@
+/**************************************************************************//**
+ * @file     core_cmInstr.h
+ * @brief    CMSIS Cortex-M Core Instruction Access Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CMINSTR_H
+#define __CORE_CMINSTR_H
+
+
+/* ##########################  Core Instruction Access  ######################### */
+/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
+  Access to dedicated instructions
+  @{
+*/
+
+/*------------------ RealView Compiler -----------------*/
+#if   defined ( __CC_ARM )
+  #include "cmsis_armcc.h"
+
+/*------------------ ARM Compiler V6 -------------------*/
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #include "cmsis_armcc_V6.h"
+
+/*------------------ GNU Compiler ----------------------*/
+#elif defined ( __GNUC__ )
+  #include "cmsis_gcc.h"
+
+/*------------------ ICC Compiler ----------------------*/
+#elif defined ( __ICCARM__ )
+  #include <cmsis_iar.h>
+
+/*------------------ TI CCS Compiler -------------------*/
+#elif defined ( __TMS470__ )
+  #include <cmsis_ccs.h>
+
+/*------------------ TASKING Compiler ------------------*/
+#elif defined ( __TASKING__ )
+  /*
+   * The CMSIS functions have been implemented as intrinsics in the compiler.
+   * Please use "carm -?i" to get an up to date list of all intrinsics,
+   * Including the CMSIS ones.
+   */
+
+/*------------------ COSMIC Compiler -------------------*/
+#elif defined ( __CSMC__ )
+  #include <cmsis_csm.h>
+
+#endif
+
+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
+
+#endif /* __CORE_CMINSTR_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_cmSimd.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,96 @@
+/**************************************************************************//**
+ * @file     core_cmSimd.h
+ * @brief    CMSIS Cortex-M SIMD Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_CMSIMD_H
+#define __CORE_CMSIMD_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+
+/* ###################  Compiler specific Intrinsics  ########################### */
+/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
+  Access to dedicated SIMD instructions
+  @{
+*/
+
+/*------------------ RealView Compiler -----------------*/
+#if   defined ( __CC_ARM )
+  #include "cmsis_armcc.h"
+
+/*------------------ ARM Compiler V6 -------------------*/
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #include "cmsis_armcc_V6.h"
+
+/*------------------ GNU Compiler ----------------------*/
+#elif defined ( __GNUC__ )
+  #include "cmsis_gcc.h"
+
+/*------------------ ICC Compiler ----------------------*/
+#elif defined ( __ICCARM__ )
+  #include <cmsis_iar.h>
+
+/*------------------ TI CCS Compiler -------------------*/
+#elif defined ( __TMS470__ )
+  #include <cmsis_ccs.h>
+
+/*------------------ TASKING Compiler ------------------*/
+#elif defined ( __TASKING__ )
+  /*
+   * The CMSIS functions have been implemented as intrinsics in the compiler.
+   * Please use "carm -?i" to get an up to date list of all intrinsics,
+   * Including the CMSIS ones.
+   */
+
+/*------------------ COSMIC Compiler -------------------*/
+#elif defined ( __CSMC__ )
+  #include <cmsis_csm.h>
+
+#endif
+
+/*@} end of group CMSIS_SIMD_intrinsics */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CMSIMD_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_sc000.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,926 @@
+/**************************************************************************//**
+ * @file     core_sc000.h
+ * @brief    CMSIS SC000 Core Peripheral Access Layer Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_SC000_H_GENERIC
+#define __CORE_SC000_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup SC000
+  @{
+ */
+
+/*  CMSIS SC000 definitions */
+#define __SC000_CMSIS_VERSION_MAIN  (0x04U)                                    /*!< [31:16] CMSIS HAL main version */
+#define __SC000_CMSIS_VERSION_SUB   (0x1EU)                                    /*!< [15:0]  CMSIS HAL sub version */
+#define __SC000_CMSIS_VERSION       ((__SC000_CMSIS_VERSION_MAIN << 16U) | \
+                                      __SC000_CMSIS_VERSION_SUB           )    /*!< CMSIS HAL version number */
+
+#define __CORTEX_SC                 (000U)                                     /*!< Cortex secure core */
+
+
+#if   defined ( __CC_ARM )
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined ( __GNUC__ )
+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __ICCARM__ )
+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TMS470__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TASKING__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __CSMC__ )
+  #define __packed
+  #define __ASM            _asm                                      /*!< asm keyword for COSMIC Compiler */
+  #define __INLINE         inline                                    /*!< inline keyword for COSMIC Compiler. Use -pc99 on compile line */
+  #define __STATIC_INLINE  static inline
+
+#else
+  #error Unknown compiler
+#endif
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    This core does not support an FPU at all
+*/
+#define __FPU_USED       0U
+
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_PCS_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TMS470__ )
+  #if defined __TI_VFP_SUPPORT__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#endif
+
+#include "core_cmInstr.h"                /* Core Instruction Access */
+#include "core_cmFunc.h"                 /* Core Function Access */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_SC000_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_SC000_H_DEPENDANT
+#define __CORE_SC000_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __SC000_REV
+    #define __SC000_REV             0x0000U
+    #warning "__SC000_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __MPU_PRESENT
+    #define __MPU_PRESENT             0U
+    #warning "__MPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          2U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group SC000 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+  - Core MPU Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
+    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[31U];
+  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[31U];
+  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[31U];
+  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[31U];
+        uint32_t RESERVED4[64U];
+  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */
+}  NVIC_Type;
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+        uint32_t RESERVED1[154U];
+  __IOM uint32_t SFCR;                   /*!< Offset: 0x290 (R/W)  Security Features Control Register */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)
+  \brief    Type definitions for the System Control and ID Register not in the SCB
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control and ID Register not in the SCB.
+ */
+typedef struct
+{
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */
+} SCnSCB_Type;
+
+/* Auxiliary Control Register Definitions */
+#define SCnSCB_ACTLR_DISMCYCINT_Pos         0U                                         /*!< ACTLR: DISMCYCINT Position */
+#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/)    /*!< ACTLR: DISMCYCINT Mask */
+
+/*@} end of group CMSIS_SCnotSCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+#if (__MPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_MPU     Memory Protection Unit (MPU)
+  \brief    Type definitions for the Memory Protection Unit (MPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory Protection Unit (MPU).
+ */
+typedef struct
+{
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */
+  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */
+} MPU_Type;
+
+/* MPU Type Register Definitions */
+#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */
+
+#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */
+
+#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */
+#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */
+
+/* MPU Control Register Definitions */
+#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */
+
+#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */
+
+#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */
+#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */
+
+/* MPU Region Number Register Definitions */
+#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */
+#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */
+
+/* MPU Region Base Address Register Definitions */
+#define MPU_RBAR_ADDR_Pos                   8U                                            /*!< MPU RBAR: ADDR Position */
+#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << MPU_RBAR_ADDR_Pos)              /*!< MPU RBAR: ADDR Mask */
+
+#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */
+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */
+
+#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */
+#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */
+
+/* MPU Region Attribute and Size Register Definitions */
+#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */
+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */
+
+#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */
+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */
+
+#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */
+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */
+
+#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */
+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */
+
+#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */
+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */
+
+#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */
+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */
+
+#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */
+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */
+
+#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */
+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */
+
+#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */
+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */
+
+#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */
+#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */
+
+/*@} end of group CMSIS_MPU */
+#endif
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.
+            Therefore they are not covered by the SC000 header file.
+  @{
+ */
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    ((value << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    ((value & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of SC000 Hardware */
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
+
+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
+
+#if (__MPU_PRESENT == 1U)
+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */
+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */
+#endif
+
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+/* Interrupt Priorities are WORD accessible only under ARMv6M                   */
+/* The following MACROS handle generation of the register offset and byte masks */
+#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)
+#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )
+#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )
+
+
+/**
+  \brief   Enable External Interrupt
+  \details Enables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Disable External Interrupt
+  \details Disables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the pending register in the NVIC and returns the pending bit for the specified interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of an external interrupt.
+  \param [in]      IRQn  Interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of an external interrupt.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of an interrupt.
+  \note    The priority cannot be set for every core interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+ */
+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) < 0)
+  {
+    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
+       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
+  }
+  else
+  {
+    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
+       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of an interrupt.
+           The interrupt number can be positive to specify an external (device specific) interrupt,
+           or negative to specify an internal (core) interrupt.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) < 0)
+  {
+    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__STATIC_INLINE void NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                 SCB_AIRCR_SYSRESETREQ_Msk);
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_SC000_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/Include/core_sc300.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1745 @@
+/**************************************************************************//**
+ * @file     core_sc300.h
+ * @brief    CMSIS SC300 Core Peripheral Access Layer Header File
+ * @version  V4.30
+ * @date     20. October 2015
+ ******************************************************************************/
+/* Copyright (c) 2009 - 2015 ARM LIMITED
+
+   All rights reserved.
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   - Neither the name of ARM nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+   *
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   ---------------------------------------------------------------------------*/
+
+
+#if   defined ( __ICCARM__ )
+ #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #pragma clang system_header   /* treat file as system include file */
+#endif
+
+#ifndef __CORE_SC300_H_GENERIC
+#define __CORE_SC300_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup SC3000
+  @{
+ */
+
+/*  CMSIS SC300 definitions */
+#define __SC300_CMSIS_VERSION_MAIN  (0x04U)                                    /*!< [31:16] CMSIS HAL main version */
+#define __SC300_CMSIS_VERSION_SUB   (0x1EU)                                    /*!< [15:0]  CMSIS HAL sub version */
+#define __SC300_CMSIS_VERSION       ((__SC300_CMSIS_VERSION_MAIN << 16U) | \
+                                      __SC300_CMSIS_VERSION_SUB           )    /*!< CMSIS HAL version number */
+
+#define __CORTEX_SC                 (300U)                                     /*!< Cortex secure core */
+
+
+#if   defined ( __CC_ARM )
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler */
+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler */
+  #define __STATIC_INLINE  static __inline
+
+#elif defined ( __GNUC__ )
+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __ICCARM__ )
+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TMS470__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __TASKING__ )
+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler */
+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler */
+  #define __STATIC_INLINE  static inline
+
+#elif defined ( __CSMC__ )
+  #define __packed
+  #define __ASM            _asm                                      /*!< asm keyword for COSMIC Compiler */
+  #define __INLINE         inline                                    /*!< inline keyword for COSMIC Compiler. Use -pc99 on compile line */
+  #define __STATIC_INLINE  static inline
+
+#else
+  #error Unknown compiler
+#endif
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    This core does not support an FPU at all
+*/
+#define __FPU_USED       0U
+
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_PCS_VFP
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TMS470__ )
+  #if defined __TI_VFP_SUPPORT__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+  #endif
+
+#endif
+
+#include "core_cmInstr.h"                /* Core Instruction Access */
+#include "core_cmFunc.h"                 /* Core Function Access */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_SC300_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_SC300_H_DEPENDANT
+#define __CORE_SC300_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __SC300_REV
+    #define __SC300_REV               0x0000U
+    #warning "__SC300_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __MPU_PRESENT
+    #define __MPU_PRESENT             0U
+    #warning "__MPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          4U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group SC300 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+  - Core Debug Register
+  - Core MPU Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */
+#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */
+#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */
+
+#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */
+#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
+    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */
+#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[24U];
+  __IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[24U];
+  __IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[24U];
+  __IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[24U];
+  __IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */
+        uint32_t RESERVED4[56U];
+  __IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */
+        uint32_t RESERVED5[644U];
+  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */
+}  NVIC_Type;
+
+/* Software Triggered Interrupt Register Definitions */
+#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */
+#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+  __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */
+  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */
+  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */
+  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */
+  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */
+  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
+  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */
+  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */
+  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
+  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
+        uint32_t RESERVED0[5U];
+  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
+        uint32_t RESERVED1[129U];
+  __IOM uint32_t SFCR;                   /*!< Offset: 0x290 (R/W)  Security Features Control Register */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */
+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Vector Table Offset Register Definitions */
+#define SCB_VTOR_TBLBASE_Pos               29U                                            /*!< SCB VTOR: TBLBASE Position */
+#define SCB_VTOR_TBLBASE_Msk               (1UL << SCB_VTOR_TBLBASE_Pos)                  /*!< SCB VTOR: TBLBASE Mask */
+
+#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */
+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+#define SCB_AIRCR_VECTRESET_Pos             0U                                            /*!< SCB AIRCR: VECTRESET Position */
+#define SCB_AIRCR_VECTRESET_Msk            (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/)           /*!< SCB AIRCR: VECTRESET Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+
+#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */
+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */
+
+#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */
+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */
+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */
+
+#define SCB_CCR_NONBASETHRDENA_Pos          0U                                            /*!< SCB CCR: NONBASETHRDENA Position */
+#define SCB_CCR_NONBASETHRDENA_Msk         (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/)        /*!< SCB CCR: NONBASETHRDENA Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */
+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */
+
+#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */
+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */
+
+#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */
+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */
+
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */
+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */
+
+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */
+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */
+
+#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */
+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */
+
+#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */
+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */
+
+#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */
+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */
+
+#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */
+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */
+
+#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */
+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */
+
+#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */
+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */
+
+#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */
+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */
+
+#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */
+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */
+
+/* SCB Configurable Fault Status Register Definitions */
+#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */
+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */
+
+#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */
+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */
+
+#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */
+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */
+
+/* SCB Hard Fault Status Register Definitions */
+#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */
+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */
+
+#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */
+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */
+
+#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */
+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */
+
+/* SCB Debug Fault Status Register Definitions */
+#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */
+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */
+
+#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */
+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */
+
+#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */
+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */
+
+#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */
+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */
+
+#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */
+#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)
+  \brief    Type definitions for the System Control and ID Register not in the SCB
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control and ID Register not in the SCB.
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */
+        uint32_t RESERVED1[1U];
+} SCnSCB_Type;
+
+/* Interrupt Controller Type Register Definitions */
+#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */
+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_SCnotSCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)
+  \brief    Type definitions for the Instrumentation Trace Macrocell (ITM)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).
+ */
+typedef struct
+{
+  __OM  union
+  {
+    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */
+    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */
+    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */
+  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */
+        uint32_t RESERVED0[864U];
+  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */
+        uint32_t RESERVED1[15U];
+  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */
+        uint32_t RESERVED2[15U];
+  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */
+        uint32_t RESERVED3[29U];
+  __OM  uint32_t IWR;                    /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register */
+  __IM  uint32_t IRR;                    /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register */
+  __IOM uint32_t IMCR;                   /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register */
+        uint32_t RESERVED4[43U];
+  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */
+        uint32_t RESERVED5[6U];
+  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */
+  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */
+  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */
+  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */
+  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */
+  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */
+  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */
+  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */
+  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */
+  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */
+  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */
+  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */
+} ITM_Type;
+
+/* ITM Trace Privilege Register Definitions */
+#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */
+#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */
+
+/* ITM Trace Control Register Definitions */
+#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */
+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */
+
+#define ITM_TCR_TraceBusID_Pos             16U                                            /*!< ITM TCR: ATBID Position */
+#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */
+
+#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */
+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */
+
+#define ITM_TCR_TSPrescale_Pos              8U                                            /*!< ITM TCR: TSPrescale Position */
+#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */
+
+#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */
+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */
+
+#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */
+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */
+
+#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */
+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */
+
+#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */
+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */
+
+#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */
+#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */
+
+/* ITM Integration Write Register Definitions */
+#define ITM_IWR_ATVALIDM_Pos                0U                                            /*!< ITM IWR: ATVALIDM Position */
+#define ITM_IWR_ATVALIDM_Msk               (1UL /*<< ITM_IWR_ATVALIDM_Pos*/)              /*!< ITM IWR: ATVALIDM Mask */
+
+/* ITM Integration Read Register Definitions */
+#define ITM_IRR_ATREADYM_Pos                0U                                            /*!< ITM IRR: ATREADYM Position */
+#define ITM_IRR_ATREADYM_Msk               (1UL /*<< ITM_IRR_ATREADYM_Pos*/)              /*!< ITM IRR: ATREADYM Mask */
+
+/* ITM Integration Mode Control Register Definitions */
+#define ITM_IMCR_INTEGRATION_Pos            0U                                            /*!< ITM IMCR: INTEGRATION Position */
+#define ITM_IMCR_INTEGRATION_Msk           (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/)          /*!< ITM IMCR: INTEGRATION Mask */
+
+/* ITM Lock Status Register Definitions */
+#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */
+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */
+
+#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */
+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */
+
+#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */
+#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */
+
+/*@}*/ /* end of group CMSIS_ITM */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)
+  \brief    Type definitions for the Data Watchpoint and Trace (DWT)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */
+  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */
+  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */
+  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */
+  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */
+  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */
+  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */
+  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */
+  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */
+  __IOM uint32_t MASK0;                  /*!< Offset: 0x024 (R/W)  Mask Register 0 */
+  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */
+  __IOM uint32_t MASK1;                  /*!< Offset: 0x034 (R/W)  Mask Register 1 */
+  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */
+        uint32_t RESERVED1[1U];
+  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */
+  __IOM uint32_t MASK2;                  /*!< Offset: 0x044 (R/W)  Mask Register 2 */
+  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */
+        uint32_t RESERVED2[1U];
+  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */
+  __IOM uint32_t MASK3;                  /*!< Offset: 0x054 (R/W)  Mask Register 3 */
+  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */
+} DWT_Type;
+
+/* DWT Control Register Definitions */
+#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */
+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */
+
+#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */
+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */
+
+#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */
+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */
+
+#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */
+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */
+
+#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */
+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */
+
+#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */
+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */
+
+#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */
+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */
+
+#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */
+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */
+
+#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */
+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */
+
+#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */
+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */
+
+#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */
+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */
+
+#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */
+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */
+
+#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */
+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */
+
+#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */
+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */
+
+#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */
+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */
+
+#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */
+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */
+
+#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */
+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */
+
+#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */
+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */
+
+/* DWT CPI Count Register Definitions */
+#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */
+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */
+
+/* DWT Exception Overhead Count Register Definitions */
+#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */
+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */
+
+/* DWT Sleep Count Register Definitions */
+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */
+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */
+
+/* DWT LSU Count Register Definitions */
+#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */
+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */
+
+/* DWT Folded-instruction Count Register Definitions */
+#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */
+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */
+
+/* DWT Comparator Mask Register Definitions */
+#define DWT_MASK_MASK_Pos                   0U                                         /*!< DWT MASK: MASK Position */
+#define DWT_MASK_MASK_Msk                  (0x1FUL /*<< DWT_MASK_MASK_Pos*/)           /*!< DWT MASK: MASK Mask */
+
+/* DWT Comparator Function Register Definitions */
+#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */
+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */
+
+#define DWT_FUNCTION_DATAVADDR1_Pos        16U                                         /*!< DWT FUNCTION: DATAVADDR1 Position */
+#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */
+
+#define DWT_FUNCTION_DATAVADDR0_Pos        12U                                         /*!< DWT FUNCTION: DATAVADDR0 Position */
+#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */
+
+#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */
+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */
+
+#define DWT_FUNCTION_LNK1ENA_Pos            9U                                         /*!< DWT FUNCTION: LNK1ENA Position */
+#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */
+
+#define DWT_FUNCTION_DATAVMATCH_Pos         8U                                         /*!< DWT FUNCTION: DATAVMATCH Position */
+#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */
+
+#define DWT_FUNCTION_CYCMATCH_Pos           7U                                         /*!< DWT FUNCTION: CYCMATCH Position */
+#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */
+
+#define DWT_FUNCTION_EMITRANGE_Pos          5U                                         /*!< DWT FUNCTION: EMITRANGE Position */
+#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */
+
+#define DWT_FUNCTION_FUNCTION_Pos           0U                                         /*!< DWT FUNCTION: FUNCTION Position */
+#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/)    /*!< DWT FUNCTION: FUNCTION Mask */
+
+/*@}*/ /* end of group CMSIS_DWT */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_TPI     Trace Port Interface (TPI)
+  \brief    Type definitions for the Trace Port Interface (TPI)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Trace Port Interface Register (TPI).
+ */
+typedef struct
+{
+  __IOM uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */
+  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */
+        uint32_t RESERVED1[55U];
+  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */
+        uint32_t RESERVED2[131U];
+  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */
+  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */
+  __IM  uint32_t FSCR;                   /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */
+        uint32_t RESERVED3[759U];
+  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER */
+  __IM  uint32_t FIFO0;                  /*!< Offset: 0xEEC (R/ )  Integration ETM Data */
+  __IM  uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */
+        uint32_t RESERVED4[1U];
+  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */
+  __IM  uint32_t FIFO1;                  /*!< Offset: 0xEFC (R/ )  Integration ITM Data */
+  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */
+        uint32_t RESERVED5[39U];
+  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */
+  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */
+        uint32_t RESERVED7[8U];
+  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */
+  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */
+} TPI_Type;
+
+/* TPI Asynchronous Clock Prescaler Register Definitions */
+#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */
+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */
+
+/* TPI Selected Pin Protocol Register Definitions */
+#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */
+#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */
+
+/* TPI Formatter and Flush Status Register Definitions */
+#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */
+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */
+
+#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */
+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */
+
+#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */
+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */
+
+#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */
+#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */
+
+/* TPI Formatter and Flush Control Register Definitions */
+#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */
+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */
+
+#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */
+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */
+
+/* TPI TRIGGER Register Definitions */
+#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */
+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */
+
+/* TPI Integration ETM Data Register Definitions (FIFO0) */
+#define TPI_FIFO0_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO0: ITM_ATVALID Position */
+#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */
+
+#define TPI_FIFO0_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO0: ITM_bytecount Position */
+#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */
+
+#define TPI_FIFO0_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO0: ETM_ATVALID Position */
+#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */
+
+#define TPI_FIFO0_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO0: ETM_bytecount Position */
+#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */
+
+#define TPI_FIFO0_ETM2_Pos                 16U                                         /*!< TPI FIFO0: ETM2 Position */
+#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */
+
+#define TPI_FIFO0_ETM1_Pos                  8U                                         /*!< TPI FIFO0: ETM1 Position */
+#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */
+
+#define TPI_FIFO0_ETM0_Pos                  0U                                         /*!< TPI FIFO0: ETM0 Position */
+#define TPI_FIFO0_ETM0_Msk                 (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/)          /*!< TPI FIFO0: ETM0 Mask */
+
+/* TPI ITATBCTR2 Register Definitions */
+#define TPI_ITATBCTR2_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR2: ATREADY Position */
+#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/)    /*!< TPI ITATBCTR2: ATREADY Mask */
+
+/* TPI Integration ITM Data Register Definitions (FIFO1) */
+#define TPI_FIFO1_ITM_ATVALID_Pos          29U                                         /*!< TPI FIFO1: ITM_ATVALID Position */
+#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */
+
+#define TPI_FIFO1_ITM_bytecount_Pos        27U                                         /*!< TPI FIFO1: ITM_bytecount Position */
+#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */
+
+#define TPI_FIFO1_ETM_ATVALID_Pos          26U                                         /*!< TPI FIFO1: ETM_ATVALID Position */
+#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */
+
+#define TPI_FIFO1_ETM_bytecount_Pos        24U                                         /*!< TPI FIFO1: ETM_bytecount Position */
+#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */
+
+#define TPI_FIFO1_ITM2_Pos                 16U                                         /*!< TPI FIFO1: ITM2 Position */
+#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */
+
+#define TPI_FIFO1_ITM1_Pos                  8U                                         /*!< TPI FIFO1: ITM1 Position */
+#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */
+
+#define TPI_FIFO1_ITM0_Pos                  0U                                         /*!< TPI FIFO1: ITM0 Position */
+#define TPI_FIFO1_ITM0_Msk                 (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/)          /*!< TPI FIFO1: ITM0 Mask */
+
+/* TPI ITATBCTR0 Register Definitions */
+#define TPI_ITATBCTR0_ATREADY_Pos           0U                                         /*!< TPI ITATBCTR0: ATREADY Position */
+#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/)    /*!< TPI ITATBCTR0: ATREADY Mask */
+
+/* TPI Integration Mode Control Register Definitions */
+#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */
+#define TPI_ITCTRL_Mode_Msk                (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */
+
+/* TPI DEVID Register Definitions */
+#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */
+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */
+
+#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */
+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */
+
+#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */
+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */
+
+#define TPI_DEVID_MinBufSz_Pos              6U                                         /*!< TPI DEVID: MinBufSz Position */
+#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */
+
+#define TPI_DEVID_AsynClkIn_Pos             5U                                         /*!< TPI DEVID: AsynClkIn Position */
+#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */
+
+#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */
+#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */
+
+/* TPI DEVTYPE Register Definitions */
+#define TPI_DEVTYPE_MajorType_Pos           4U                                         /*!< TPI DEVTYPE: MajorType Position */
+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */
+
+#define TPI_DEVTYPE_SubType_Pos             0U                                         /*!< TPI DEVTYPE: SubType Position */
+#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */
+
+/*@}*/ /* end of group CMSIS_TPI */
+
+
+#if (__MPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_MPU     Memory Protection Unit (MPU)
+  \brief    Type definitions for the Memory Protection Unit (MPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory Protection Unit (MPU).
+ */
+typedef struct
+{
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */
+  __IOM uint32_t RASR;                   /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register */
+  __IOM uint32_t RASR_A1;                /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register */
+  __IOM uint32_t RASR_A2;                /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */
+  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register */
+  __IOM uint32_t RASR_A3;                /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */
+} MPU_Type;
+
+/* MPU Type Register Definitions */
+#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */
+
+#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */
+
+#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */
+#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */
+
+/* MPU Control Register Definitions */
+#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */
+
+#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */
+
+#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */
+#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */
+
+/* MPU Region Number Register Definitions */
+#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */
+#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */
+
+/* MPU Region Base Address Register Definitions */
+#define MPU_RBAR_ADDR_Pos                   5U                                            /*!< MPU RBAR: ADDR Position */
+#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */
+
+#define MPU_RBAR_VALID_Pos                  4U                                            /*!< MPU RBAR: VALID Position */
+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */
+
+#define MPU_RBAR_REGION_Pos                 0U                                            /*!< MPU RBAR: REGION Position */
+#define MPU_RBAR_REGION_Msk                (0xFUL /*<< MPU_RBAR_REGION_Pos*/)             /*!< MPU RBAR: REGION Mask */
+
+/* MPU Region Attribute and Size Register Definitions */
+#define MPU_RASR_ATTRS_Pos                 16U                                            /*!< MPU RASR: MPU Region Attribute field Position */
+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */
+
+#define MPU_RASR_XN_Pos                    28U                                            /*!< MPU RASR: ATTRS.XN Position */
+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */
+
+#define MPU_RASR_AP_Pos                    24U                                            /*!< MPU RASR: ATTRS.AP Position */
+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */
+
+#define MPU_RASR_TEX_Pos                   19U                                            /*!< MPU RASR: ATTRS.TEX Position */
+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */
+
+#define MPU_RASR_S_Pos                     18U                                            /*!< MPU RASR: ATTRS.S Position */
+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */
+
+#define MPU_RASR_C_Pos                     17U                                            /*!< MPU RASR: ATTRS.C Position */
+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */
+
+#define MPU_RASR_B_Pos                     16U                                            /*!< MPU RASR: ATTRS.B Position */
+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */
+
+#define MPU_RASR_SRD_Pos                    8U                                            /*!< MPU RASR: Sub-Region Disable Position */
+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */
+
+#define MPU_RASR_SIZE_Pos                   1U                                            /*!< MPU RASR: Region Size Field Position */
+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */
+
+#define MPU_RASR_ENABLE_Pos                 0U                                            /*!< MPU RASR: Region enable bit Position */
+#define MPU_RASR_ENABLE_Msk                (1UL /*<< MPU_RASR_ENABLE_Pos*/)               /*!< MPU RASR: Region enable bit Disable Mask */
+
+/*@} end of group CMSIS_MPU */
+#endif
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    Type definitions for the Core Debug Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Core Debug Register (CoreDebug).
+ */
+typedef struct
+{
+  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */
+  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */
+  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */
+  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */
+} CoreDebug_Type;
+
+/* Debug Halting Control and Status Register Definitions */
+#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< CoreDebug DHCSR: DBGKEY Position */
+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */
+
+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< CoreDebug DHCSR: S_RESET_ST Position */
+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */
+
+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< CoreDebug DHCSR: S_RETIRE_ST Position */
+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */
+
+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< CoreDebug DHCSR: S_LOCKUP Position */
+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */
+
+#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< CoreDebug DHCSR: S_SLEEP Position */
+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */
+
+#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< CoreDebug DHCSR: S_HALT Position */
+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */
+
+#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< CoreDebug DHCSR: S_REGRDY Position */
+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */
+
+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< CoreDebug DHCSR: C_SNAPSTALL Position */
+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */
+
+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< CoreDebug DHCSR: C_MASKINTS Position */
+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */
+
+#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< CoreDebug DHCSR: C_STEP Position */
+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */
+
+#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< CoreDebug DHCSR: C_HALT Position */
+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */
+
+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< CoreDebug DHCSR: C_DEBUGEN Position */
+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< CoreDebug DHCSR: C_DEBUGEN Mask */
+
+/* Debug Core Register Selector Register Definitions */
+#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< CoreDebug DCRSR: REGWnR Position */
+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */
+
+#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< CoreDebug DCRSR: REGSEL Position */
+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< CoreDebug DCRSR: REGSEL Mask */
+
+/* Debug Exception and Monitor Control Register Definitions */
+#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< CoreDebug DEMCR: TRCENA Position */
+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */
+
+#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< CoreDebug DEMCR: MON_REQ Position */
+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */
+
+#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< CoreDebug DEMCR: MON_STEP Position */
+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */
+
+#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< CoreDebug DEMCR: MON_PEND Position */
+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */
+
+#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< CoreDebug DEMCR: MON_EN Position */
+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */
+
+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< CoreDebug DEMCR: VC_HARDERR Position */
+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */
+
+#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< CoreDebug DEMCR: VC_INTERR Position */
+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */
+
+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< CoreDebug DEMCR: VC_BUSERR Position */
+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */
+
+#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< CoreDebug DEMCR: VC_STATERR Position */
+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */
+
+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< CoreDebug DEMCR: VC_CHKERR Position */
+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */
+
+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< CoreDebug DEMCR: VC_NOCPERR Position */
+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */
+
+#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< CoreDebug DEMCR: VC_MMERR Position */
+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */
+
+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< CoreDebug DEMCR: VC_CORERESET Position */
+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< CoreDebug DEMCR: VC_CORERESET Mask */
+
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    ((value << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    ((value & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Cortex-M3 Hardware */
+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
+#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address */
+#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address */
+#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address */
+#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address */
+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
+
+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */
+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
+#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct */
+#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct */
+#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct */
+#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct */
+
+#if (__MPU_PRESENT == 1U)
+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit */
+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit */
+#endif
+
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Debug Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+/**
+  \brief   Set Priority Grouping
+  \details Sets the priority grouping field using the required unlock sequence.
+           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.
+           Only values from 0..7 are used.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]      PriorityGroup  Priority grouping field.
+ */
+__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+  uint32_t reg_value;
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
+
+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */
+  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */
+  reg_value  =  (reg_value                                   |
+                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                (PriorityGroupTmp << 8U)                      );              /* Insert write key and priorty group */
+  SCB->AIRCR =  reg_value;
+}
+
+
+/**
+  \brief   Get Priority Grouping
+  \details Reads the priority grouping field from the NVIC Interrupt Controller.
+  \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)
+{
+  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+}
+
+
+/**
+  \brief   Enable External Interrupt
+  \details Enables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Disable External Interrupt
+  \details Disables a device-specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the pending register in the NVIC and returns the pending bit for the specified interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of an external interrupt.
+  \param [in]      IRQn  Interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of an external interrupt.
+  \param [in]      IRQn  External interrupt number. Value cannot be negative.
+ */
+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  NVIC->ICPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+}
+
+
+/**
+  \brief   Get Active Interrupt
+  \details Reads the active register in NVIC and returns the active bit.
+  \param [in]      IRQn  Interrupt number.
+  \return             0  Interrupt status is not active.
+  \return             1  Interrupt status is active.
+ */
+__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)
+{
+  return((uint32_t)(((NVIC->IABR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+}
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of an interrupt.
+  \note    The priority cannot be set for every core interrupt.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+ */
+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) < 0)
+  {
+    SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+  else
+  {
+    NVIC->IP[((uint32_t)(int32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of an interrupt.
+           The interrupt number can be positive to specify an external (device specific) interrupt,
+           or negative to specify an internal (core) interrupt.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) < 0)
+  {
+    return(((uint32_t)SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return(((uint32_t)NVIC->IP[((uint32_t)(int32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   Encode Priority
+  \details Encodes the priority for an interrupt with the given priority group,
+           preemptive priority value, and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]     PriorityGroup  Used priority group.
+  \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
+  \param [in]       SubPriority  Subpriority value (starting from 0).
+  \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  return (
+           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
+         );
+}
+
+
+/**
+  \brief   Decode Priority
+  \details Decodes an interrupt priority value with a given priority group to
+           preemptive priority value and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
+  \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().
+  \param [in]     PriorityGroup  Used priority group.
+  \param [out] pPreemptPriority  Preemptive priority value (starting from 0).
+  \param [out]     pSubPriority  Subpriority value (starting from 0).
+ */
+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
+  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__STATIC_INLINE void NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |
+                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
+                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+/* ##################################### Debug In/Output function ########################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_core_DebugFunctions ITM Functions
+  \brief    Functions that access the ITM debug interface.
+  @{
+ */
+
+extern volatile int32_t ITM_RxBuffer;                    /*!< External variable to receive characters. */
+#define                 ITM_RXBUFFER_EMPTY   0x5AA55AA5U /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
+
+
+/**
+  \brief   ITM Send Character
+  \details Transmits a character via the ITM channel 0, and
+           \li Just returns when no debugger is connected that has booked the output.
+           \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.
+  \param [in]     ch  Character to transmit.
+  \returns            Character to transmit.
+ */
+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
+{
+  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */
+      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */
+  {
+    while (ITM->PORT[0U].u32 == 0UL)
+    {
+      __NOP();
+    }
+    ITM->PORT[0U].u8 = (uint8_t)ch;
+  }
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Receive Character
+  \details Inputs a character via the external variable \ref ITM_RxBuffer.
+  \return             Received character.
+  \return         -1  No character pending.
+ */
+__STATIC_INLINE int32_t ITM_ReceiveChar (void)
+{
+  int32_t ch = -1;                           /* no character available */
+
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)
+  {
+    ch = ITM_RxBuffer;
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
+  }
+
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Check Character
+  \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.
+  \return          0  No character available.
+  \return          1  Character available.
+ */
+__STATIC_INLINE int32_t ITM_CheckChar (void)
+{
+
+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)
+  {
+    return (0);                              /* no character available */
+  }
+  else
+  {
+    return (1);                              /*    character available */
+  }
+}
+
+/*@} end of CMSIS_core_DebugFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_SC300_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/CMSIS/RTOS/Template/cmsis_os.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,707 @@
+/* ----------------------------------------------------------------------
+ * $Date:        5. February 2013
+ * $Revision:    V1.02
+ *
+ * Project:      CMSIS-RTOS API
+ * Title:        cmsis_os.h template header file
+ *
+ * Version 0.02
+ *    Initial Proposal Phase
+ * Version 0.03
+ *    osKernelStart added, optional feature: main started as thread
+ *    osSemaphores have standard behavior
+ *    osTimerCreate does not start the timer, added osTimerStart
+ *    osThreadPass is renamed to osThreadYield
+ * Version 1.01
+ *    Support for C++ interface
+ *     - const attribute removed from the osXxxxDef_t typedef's
+ *     - const attribute added to the osXxxxDef macros
+ *    Added: osTimerDelete, osMutexDelete, osSemaphoreDelete
+ *    Added: osKernelInitialize
+ * Version 1.02
+ *    Control functions for short timeouts in microsecond resolution:
+ *    Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec
+ *    Removed: osSignalGet 
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 2013 ARM LIMITED
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used
+ *    to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+ 
+ 
+#ifndef _CMSIS_OS_H
+#define _CMSIS_OS_H
+ 
+/// \note MUST REMAIN UNCHANGED: \b osCMSIS identifies the CMSIS-RTOS API version.
+#define osCMSIS           0x10002      ///< API version (main [31:16] .sub [15:0])
+ 
+/// \note CAN BE CHANGED: \b osCMSIS_KERNEL identifies the underlying RTOS kernel and version number.
+#define osCMSIS_KERNEL    0x10000	   ///< RTOS identification and version (main [31:16] .sub [15:0])
+ 
+/// \note MUST REMAIN UNCHANGED: \b osKernelSystemId shall be consistent in every CMSIS-RTOS.
+#define osKernelSystemId "KERNEL V1.00"   ///< RTOS identification string
+ 
+/// \note MUST REMAIN UNCHANGED: \b osFeature_xxx shall be consistent in every CMSIS-RTOS.
+#define osFeature_MainThread   1       ///< main thread      1=main can be thread, 0=not available
+#define osFeature_Pool         1       ///< Memory Pools:    1=available, 0=not available
+#define osFeature_MailQ        1       ///< Mail Queues:     1=available, 0=not available
+#define osFeature_MessageQ     1       ///< Message Queues:  1=available, 0=not available
+#define osFeature_Signals      8       ///< maximum number of Signal Flags available per thread
+#define osFeature_Semaphore    30      ///< maximum count for \ref osSemaphoreCreate function
+#define osFeature_Wait         1       ///< osWait function: 1=available, 0=not available
+#define osFeature_SysTick      1       ///< osKernelSysTick functions: 1=available, 0=not available
+ 
+#include <stdint.h>
+#include <stddef.h>
+ 
+#ifdef  __cplusplus
+extern "C"
+{
+#endif
+ 
+ 
+// ==== Enumeration, structures, defines ====
+ 
+/// Priority used for thread control.
+/// \note MUST REMAIN UNCHANGED: \b osPriority shall be consistent in every CMSIS-RTOS.
+typedef enum  {
+  osPriorityIdle          = -3,          ///< priority: idle (lowest)
+  osPriorityLow           = -2,          ///< priority: low
+  osPriorityBelowNormal   = -1,          ///< priority: below normal
+  osPriorityNormal        =  0,          ///< priority: normal (default)
+  osPriorityAboveNormal   = +1,          ///< priority: above normal
+  osPriorityHigh          = +2,          ///< priority: high
+  osPriorityRealtime      = +3,          ///< priority: realtime (highest)
+  osPriorityError         =  0x84        ///< system cannot determine priority or thread has illegal priority
+} osPriority;
+ 
+/// Timeout value.
+/// \note MUST REMAIN UNCHANGED: \b osWaitForever shall be consistent in every CMSIS-RTOS.
+#define osWaitForever     0xFFFFFFFF     ///< wait forever timeout value
+ 
+/// Status code values returned by CMSIS-RTOS functions.
+/// \note MUST REMAIN UNCHANGED: \b osStatus shall be consistent in every CMSIS-RTOS.
+typedef enum  {
+  osOK                    =     0,       ///< function completed; no error or event occurred.
+  osEventSignal           =  0x08,       ///< function completed; signal event occurred.
+  osEventMessage          =  0x10,       ///< function completed; message event occurred.
+  osEventMail             =  0x20,       ///< function completed; mail event occurred.
+  osEventTimeout          =  0x40,       ///< function completed; timeout occurred.
+  osErrorParameter        =  0x80,       ///< parameter error: a mandatory parameter was missing or specified an incorrect object.
+  osErrorResource         =  0x81,       ///< resource not available: a specified resource was not available.
+  osErrorTimeoutResource  =  0xC1,       ///< resource not available within given time: a specified resource was not available within the timeout period.
+  osErrorISR              =  0x82,       ///< not allowed in ISR context: the function cannot be called from interrupt service routines.
+  osErrorISRRecursive     =  0x83,       ///< function called multiple times from ISR with same object.
+  osErrorPriority         =  0x84,       ///< system cannot determine priority or thread has illegal priority.
+  osErrorNoMemory         =  0x85,       ///< system is out of memory: it was impossible to allocate or reserve memory for the operation.
+  osErrorValue            =  0x86,       ///< value of a parameter is out of range.
+  osErrorOS               =  0xFF,       ///< unspecified RTOS error: run-time error but no other error message fits.
+  os_status_reserved      =  0x7FFFFFFF  ///< prevent from enum down-size compiler optimization.
+} osStatus;
+ 
+ 
+/// Timer type value for the timer definition.
+/// \note MUST REMAIN UNCHANGED: \b os_timer_type shall be consistent in every CMSIS-RTOS.
+typedef enum  {
+  osTimerOnce             =     0,       ///< one-shot timer
+  osTimerPeriodic         =     1        ///< repeating timer
+} os_timer_type;
+ 
+/// Entry point of a thread.
+/// \note MUST REMAIN UNCHANGED: \b os_pthread shall be consistent in every CMSIS-RTOS.
+typedef void (*os_pthread) (void const *argument);
+ 
+/// Entry point of a timer call back function.
+/// \note MUST REMAIN UNCHANGED: \b os_ptimer shall be consistent in every CMSIS-RTOS.
+typedef void (*os_ptimer) (void const *argument);
+ 
+// >>> the following data type definitions may shall adapted towards a specific RTOS
+ 
+/// Thread ID identifies the thread (pointer to a thread control block).
+/// \note CAN BE CHANGED: \b os_thread_cb is implementation specific in every CMSIS-RTOS.
+typedef struct os_thread_cb *osThreadId;
+ 
+/// Timer ID identifies the timer (pointer to a timer control block).
+/// \note CAN BE CHANGED: \b os_timer_cb is implementation specific in every CMSIS-RTOS.
+typedef struct os_timer_cb *osTimerId;
+ 
+/// Mutex ID identifies the mutex (pointer to a mutex control block).
+/// \note CAN BE CHANGED: \b os_mutex_cb is implementation specific in every CMSIS-RTOS.
+typedef struct os_mutex_cb *osMutexId;
+ 
+/// Semaphore ID identifies the semaphore (pointer to a semaphore control block).
+/// \note CAN BE CHANGED: \b os_semaphore_cb is implementation specific in every CMSIS-RTOS.
+typedef struct os_semaphore_cb *osSemaphoreId;
+ 
+/// Pool ID identifies the memory pool (pointer to a memory pool control block).
+/// \note CAN BE CHANGED: \b os_pool_cb is implementation specific in every CMSIS-RTOS.
+typedef struct os_pool_cb *osPoolId;
+ 
+/// Message ID identifies the message queue (pointer to a message queue control block).
+/// \note CAN BE CHANGED: \b os_messageQ_cb is implementation specific in every CMSIS-RTOS.
+typedef struct os_messageQ_cb *osMessageQId;
+ 
+/// Mail ID identifies the mail queue (pointer to a mail queue control block).
+/// \note CAN BE CHANGED: \b os_mailQ_cb is implementation specific in every CMSIS-RTOS.
+typedef struct os_mailQ_cb *osMailQId;
+ 
+ 
+/// Thread Definition structure contains startup information of a thread.
+/// \note CAN BE CHANGED: \b os_thread_def is implementation specific in every CMSIS-RTOS.
+typedef struct os_thread_def  {
+  os_pthread               pthread;    ///< start address of thread function
+  osPriority             tpriority;    ///< initial thread priority
+  uint32_t               instances;    ///< maximum number of instances of that thread function
+  uint32_t               stacksize;    ///< stack size requirements in bytes; 0 is default stack size
+} osThreadDef_t;
+ 
+/// Timer Definition structure contains timer parameters.
+/// \note CAN BE CHANGED: \b os_timer_def is implementation specific in every CMSIS-RTOS.
+typedef struct os_timer_def  {
+  os_ptimer                 ptimer;    ///< start address of a timer function
+} osTimerDef_t;
+ 
+/// Mutex Definition structure contains setup information for a mutex.
+/// \note CAN BE CHANGED: \b os_mutex_def is implementation specific in every CMSIS-RTOS.
+typedef struct os_mutex_def  {
+  uint32_t                   dummy;    ///< dummy value.
+} osMutexDef_t;
+ 
+/// Semaphore Definition structure contains setup information for a semaphore.
+/// \note CAN BE CHANGED: \b os_semaphore_def is implementation specific in every CMSIS-RTOS.
+typedef struct os_semaphore_def  {
+  uint32_t                   dummy;    ///< dummy value.
+} osSemaphoreDef_t;
+ 
+/// Definition structure for memory block allocation.
+/// \note CAN BE CHANGED: \b os_pool_def is implementation specific in every CMSIS-RTOS.
+typedef struct os_pool_def  {
+  uint32_t                 pool_sz;    ///< number of items (elements) in the pool
+  uint32_t                 item_sz;    ///< size of an item
+  void                       *pool;    ///< pointer to memory for pool
+} osPoolDef_t;
+ 
+/// Definition structure for message queue.
+/// \note CAN BE CHANGED: \b os_messageQ_def is implementation specific in every CMSIS-RTOS.
+typedef struct os_messageQ_def  {
+  uint32_t                queue_sz;    ///< number of elements in the queue
+  uint32_t                 item_sz;    ///< size of an item
+  void                       *pool;    ///< memory array for messages
+} osMessageQDef_t;
+ 
+/// Definition structure for mail queue.
+/// \note CAN BE CHANGED: \b os_mailQ_def is implementation specific in every CMSIS-RTOS.
+typedef struct os_mailQ_def  {
+  uint32_t                queue_sz;    ///< number of elements in the queue
+  uint32_t                 item_sz;    ///< size of an item
+  void                       *pool;    ///< memory array for mail
+} osMailQDef_t;
+ 
+/// Event structure contains detailed information about an event.
+/// \note MUST REMAIN UNCHANGED: \b os_event shall be consistent in every CMSIS-RTOS.
+///       However the struct may be extended at the end.
+typedef struct  {
+  osStatus                 status;     ///< status code: event or error information
+  union  {
+    uint32_t                    v;     ///< message as 32-bit value
+    void                       *p;     ///< message or mail as void pointer
+    int32_t               signals;     ///< signal flags
+  } value;                             ///< event value
+  union  {
+    osMailQId             mail_id;     ///< mail id obtained by \ref osMailCreate
+    osMessageQId       message_id;     ///< message id obtained by \ref osMessageCreate
+  } def;                               ///< event definition
+} osEvent;
+ 
+ 
+//  ==== Kernel Control Functions ====
+ 
+/// Initialize the RTOS Kernel for creating objects.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osKernelInitialize shall be consistent in every CMSIS-RTOS.
+osStatus osKernelInitialize (void);
+ 
+/// Start the RTOS Kernel.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osKernelStart shall be consistent in every CMSIS-RTOS.
+osStatus osKernelStart (void);
+ 
+/// Check if the RTOS kernel is already started.
+/// \note MUST REMAIN UNCHANGED: \b osKernelRunning shall be consistent in every CMSIS-RTOS.
+/// \return 0 RTOS is not started, 1 RTOS is started.
+int32_t osKernelRunning(void);
+ 
+#if (defined (osFeature_SysTick)  &&  (osFeature_SysTick != 0))     // System Timer available
+ 
+/// Get the RTOS kernel system timer counter 
+/// \note MUST REMAIN UNCHANGED: \b osKernelSysTick shall be consistent in every CMSIS-RTOS.
+/// \return RTOS kernel system timer as 32-bit value 
+uint32_t osKernelSysTick (void);
+ 
+/// The RTOS kernel system timer frequency in Hz
+/// \note Reflects the system timer setting and is typically defined in a configuration file.
+#define osKernelSysTickFrequency 100000000
+ 
+/// Convert a microseconds value to a RTOS kernel system timer value.
+/// \param         microsec     time value in microseconds.
+/// \return time value normalized to the \ref osKernelSysTickFrequency
+#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000)
+ 
+#endif    // System Timer available
+ 
+//  ==== Thread Management ====
+ 
+/// Create a Thread Definition with function, priority, and stack requirements.
+/// \param         name         name of the thread function.
+/// \param         priority     initial priority of the thread function.
+/// \param         instances    number of possible thread instances.
+/// \param         stacksz      stack size (in bytes) requirements for the thread function.
+/// \note CAN BE CHANGED: The parameters to \b osThreadDef shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#if defined (osObjectsExternal)  // object is external
+#define osThreadDef(name, priority, instances, stacksz)  \
+extern const osThreadDef_t os_thread_def_##name
+#else                            // define the object
+#define osThreadDef(name, priority, instances, stacksz)  \
+const osThreadDef_t os_thread_def_##name = \
+{ (name), (priority), (instances), (stacksz)  }
+#endif
+ 
+/// Access a Thread definition.
+/// \param         name          name of the thread definition object.
+/// \note CAN BE CHANGED: The parameter to \b osThread shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#define osThread(name)  \
+&os_thread_def_##name
+ 
+/// Create a thread and add it to Active Threads and set it to state READY.
+/// \param[in]     thread_def    thread definition referenced with \ref osThread.
+/// \param[in]     argument      pointer that is passed to the thread function as start argument.
+/// \return thread ID for reference by other functions or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osThreadCreate shall be consistent in every CMSIS-RTOS.
+osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument);
+ 
+/// Return the thread ID of the current running thread.
+/// \return thread ID for reference by other functions or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osThreadGetId shall be consistent in every CMSIS-RTOS.
+osThreadId osThreadGetId (void);
+ 
+/// Terminate execution of a thread and remove it from Active Threads.
+/// \param[in]     thread_id   thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osThreadTerminate shall be consistent in every CMSIS-RTOS.
+osStatus osThreadTerminate (osThreadId thread_id);
+ 
+/// Pass control to next thread that is in state \b READY.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osThreadYield shall be consistent in every CMSIS-RTOS.
+osStatus osThreadYield (void);
+ 
+/// Change priority of an active thread.
+/// \param[in]     thread_id     thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.
+/// \param[in]     priority      new priority value for the thread function.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osThreadSetPriority shall be consistent in every CMSIS-RTOS.
+osStatus osThreadSetPriority (osThreadId thread_id, osPriority priority);
+ 
+/// Get current priority of an active thread.
+/// \param[in]     thread_id     thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.
+/// \return current priority value of the thread function.
+/// \note MUST REMAIN UNCHANGED: \b osThreadGetPriority shall be consistent in every CMSIS-RTOS.
+osPriority osThreadGetPriority (osThreadId thread_id);
+ 
+ 
+//  ==== Generic Wait Functions ====
+ 
+/// Wait for Timeout (Time Delay).
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue "time delay" value
+/// \return status code that indicates the execution status of the function.
+osStatus osDelay (uint32_t millisec);
+ 
+#if (defined (osFeature_Wait)  &&  (osFeature_Wait != 0))     // Generic Wait available
+ 
+/// Wait for Signal, Message, Mail, or Timeout.
+/// \param[in] millisec          \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out
+/// \return event that contains signal, message, or mail information or error code.
+/// \note MUST REMAIN UNCHANGED: \b osWait shall be consistent in every CMSIS-RTOS.
+osEvent osWait (uint32_t millisec);
+ 
+#endif  // Generic Wait available
+ 
+ 
+//  ==== Timer Management Functions ====
+/// Define a Timer object.
+/// \param         name          name of the timer object.
+/// \param         function      name of the timer call back function.
+/// \note CAN BE CHANGED: The parameter to \b osTimerDef shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#if defined (osObjectsExternal)  // object is external
+#define osTimerDef(name, function)  \
+extern const osTimerDef_t os_timer_def_##name
+#else                            // define the object
+#define osTimerDef(name, function)  \
+const osTimerDef_t os_timer_def_##name = \
+{ (function) }
+#endif
+ 
+/// Access a Timer definition.
+/// \param         name          name of the timer object.
+/// \note CAN BE CHANGED: The parameter to \b osTimer shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#define osTimer(name) \
+&os_timer_def_##name
+ 
+/// Create a timer.
+/// \param[in]     timer_def     timer object referenced with \ref osTimer.
+/// \param[in]     type          osTimerOnce for one-shot or osTimerPeriodic for periodic behavior.
+/// \param[in]     argument      argument to the timer call back function.
+/// \return timer ID for reference by other functions or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osTimerCreate shall be consistent in every CMSIS-RTOS.
+osTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument);
+ 
+/// Start or restart a timer.
+/// \param[in]     timer_id      timer ID obtained by \ref osTimerCreate.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue "time delay" value of the timer.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osTimerStart shall be consistent in every CMSIS-RTOS.
+osStatus osTimerStart (osTimerId timer_id, uint32_t millisec);
+ 
+/// Stop the timer.
+/// \param[in]     timer_id      timer ID obtained by \ref osTimerCreate.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osTimerStop shall be consistent in every CMSIS-RTOS.
+osStatus osTimerStop (osTimerId timer_id);
+ 
+/// Delete a timer that was created by \ref osTimerCreate.
+/// \param[in]     timer_id      timer ID obtained by \ref osTimerCreate.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osTimerDelete shall be consistent in every CMSIS-RTOS.
+osStatus osTimerDelete (osTimerId timer_id);
+ 
+ 
+//  ==== Signal Management ====
+ 
+/// Set the specified Signal Flags of an active thread.
+/// \param[in]     thread_id     thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.
+/// \param[in]     signals       specifies the signal flags of the thread that should be set.
+/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.
+/// \note MUST REMAIN UNCHANGED: \b osSignalSet shall be consistent in every CMSIS-RTOS.
+int32_t osSignalSet (osThreadId thread_id, int32_t signals);
+ 
+/// Clear the specified Signal Flags of an active thread.
+/// \param[in]     thread_id     thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.
+/// \param[in]     signals       specifies the signal flags of the thread that shall be cleared.
+/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR.
+/// \note MUST REMAIN UNCHANGED: \b osSignalClear shall be consistent in every CMSIS-RTOS.
+int32_t osSignalClear (osThreadId thread_id, int32_t signals);
+ 
+/// Wait for one or more Signal Flags to become signaled for the current \b RUNNING thread.
+/// \param[in]     signals       wait until all specified signal flags set or 0 for any single signal flag.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
+/// \return event flag information or error code.
+/// \note MUST REMAIN UNCHANGED: \b osSignalWait shall be consistent in every CMSIS-RTOS.
+osEvent osSignalWait (int32_t signals, uint32_t millisec);
+ 
+ 
+//  ==== Mutex Management ====
+ 
+/// Define a Mutex.
+/// \param         name          name of the mutex object.
+/// \note CAN BE CHANGED: The parameter to \b osMutexDef shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#if defined (osObjectsExternal)  // object is external
+#define osMutexDef(name)  \
+extern const osMutexDef_t os_mutex_def_##name
+#else                            // define the object
+#define osMutexDef(name)  \
+const osMutexDef_t os_mutex_def_##name = { 0 }
+#endif
+ 
+/// Access a Mutex definition.
+/// \param         name          name of the mutex object.
+/// \note CAN BE CHANGED: The parameter to \b osMutex shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#define osMutex(name)  \
+&os_mutex_def_##name
+ 
+/// Create and Initialize a Mutex object.
+/// \param[in]     mutex_def     mutex definition referenced with \ref osMutex.
+/// \return mutex ID for reference by other functions or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osMutexCreate shall be consistent in every CMSIS-RTOS.
+osMutexId osMutexCreate (const osMutexDef_t *mutex_def);
+ 
+/// Wait until a Mutex becomes available.
+/// \param[in]     mutex_id      mutex ID obtained by \ref osMutexCreate.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osMutexWait shall be consistent in every CMSIS-RTOS.
+osStatus osMutexWait (osMutexId mutex_id, uint32_t millisec);
+ 
+/// Release a Mutex that was obtained by \ref osMutexWait.
+/// \param[in]     mutex_id      mutex ID obtained by \ref osMutexCreate.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osMutexRelease shall be consistent in every CMSIS-RTOS.
+osStatus osMutexRelease (osMutexId mutex_id);
+ 
+/// Delete a Mutex that was created by \ref osMutexCreate.
+/// \param[in]     mutex_id      mutex ID obtained by \ref osMutexCreate.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osMutexDelete shall be consistent in every CMSIS-RTOS.
+osStatus osMutexDelete (osMutexId mutex_id);
+ 
+ 
+//  ==== Semaphore Management Functions ====
+ 
+#if (defined (osFeature_Semaphore)  &&  (osFeature_Semaphore != 0))     // Semaphore available
+ 
+/// Define a Semaphore object.
+/// \param         name          name of the semaphore object.
+/// \note CAN BE CHANGED: The parameter to \b osSemaphoreDef shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#if defined (osObjectsExternal)  // object is external
+#define osSemaphoreDef(name)  \
+extern const osSemaphoreDef_t os_semaphore_def_##name
+#else                            // define the object
+#define osSemaphoreDef(name)  \
+const osSemaphoreDef_t os_semaphore_def_##name = { 0 }
+#endif
+ 
+/// Access a Semaphore definition.
+/// \param         name          name of the semaphore object.
+/// \note CAN BE CHANGED: The parameter to \b osSemaphore shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#define osSemaphore(name)  \
+&os_semaphore_def_##name
+ 
+/// Create and Initialize a Semaphore object used for managing resources.
+/// \param[in]     semaphore_def semaphore definition referenced with \ref osSemaphore.
+/// \param[in]     count         number of available resources.
+/// \return semaphore ID for reference by other functions or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osSemaphoreCreate shall be consistent in every CMSIS-RTOS.
+osSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count);
+ 
+/// Wait until a Semaphore token becomes available.
+/// \param[in]     semaphore_id  semaphore object referenced with \ref osSemaphoreCreate.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
+/// \return number of available tokens, or -1 in case of incorrect parameters.
+/// \note MUST REMAIN UNCHANGED: \b osSemaphoreWait shall be consistent in every CMSIS-RTOS.
+int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec);
+ 
+/// Release a Semaphore token.
+/// \param[in]     semaphore_id  semaphore object referenced with \ref osSemaphoreCreate.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osSemaphoreRelease shall be consistent in every CMSIS-RTOS.
+osStatus osSemaphoreRelease (osSemaphoreId semaphore_id);
+ 
+/// Delete a Semaphore that was created by \ref osSemaphoreCreate.
+/// \param[in]     semaphore_id  semaphore object referenced with \ref osSemaphoreCreate.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osSemaphoreDelete shall be consistent in every CMSIS-RTOS.
+osStatus osSemaphoreDelete (osSemaphoreId semaphore_id);
+ 
+#endif     // Semaphore available
+ 
+ 
+//  ==== Memory Pool Management Functions ====
+ 
+#if (defined (osFeature_Pool)  &&  (osFeature_Pool != 0))  // Memory Pool Management available
+ 
+/// \brief Define a Memory Pool.
+/// \param         name          name of the memory pool.
+/// \param         no            maximum number of blocks (objects) in the memory pool.
+/// \param         type          data type of a single block (object).
+/// \note CAN BE CHANGED: The parameter to \b osPoolDef shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#if defined (osObjectsExternal)  // object is external
+#define osPoolDef(name, no, type)   \
+extern const osPoolDef_t os_pool_def_##name
+#else                            // define the object
+#define osPoolDef(name, no, type)   \
+const osPoolDef_t os_pool_def_##name = \
+{ (no), sizeof(type), NULL }
+#endif
+ 
+/// \brief Access a Memory Pool definition.
+/// \param         name          name of the memory pool
+/// \note CAN BE CHANGED: The parameter to \b osPool shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#define osPool(name) \
+&os_pool_def_##name
+ 
+/// Create and Initialize a memory pool.
+/// \param[in]     pool_def      memory pool definition referenced with \ref osPool.
+/// \return memory pool ID for reference by other functions or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osPoolCreate shall be consistent in every CMSIS-RTOS.
+osPoolId osPoolCreate (const osPoolDef_t *pool_def);
+ 
+/// Allocate a memory block from a memory pool.
+/// \param[in]     pool_id       memory pool ID obtain referenced with \ref osPoolCreate.
+/// \return address of the allocated memory block or NULL in case of no memory available.
+/// \note MUST REMAIN UNCHANGED: \b osPoolAlloc shall be consistent in every CMSIS-RTOS.
+void *osPoolAlloc (osPoolId pool_id);
+ 
+/// Allocate a memory block from a memory pool and set memory block to zero.
+/// \param[in]     pool_id       memory pool ID obtain referenced with \ref osPoolCreate.
+/// \return address of the allocated memory block or NULL in case of no memory available.
+/// \note MUST REMAIN UNCHANGED: \b osPoolCAlloc shall be consistent in every CMSIS-RTOS.
+void *osPoolCAlloc (osPoolId pool_id);
+ 
+/// Return an allocated memory block back to a specific memory pool.
+/// \param[in]     pool_id       memory pool ID obtain referenced with \ref osPoolCreate.
+/// \param[in]     block         address of the allocated memory block that is returned to the memory pool.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osPoolFree shall be consistent in every CMSIS-RTOS.
+osStatus osPoolFree (osPoolId pool_id, void *block);
+ 
+#endif   // Memory Pool Management available
+ 
+ 
+//  ==== Message Queue Management Functions ====
+ 
+#if (defined (osFeature_MessageQ)  &&  (osFeature_MessageQ != 0))     // Message Queues available
+ 
+/// \brief Create a Message Queue Definition.
+/// \param         name          name of the queue.
+/// \param         queue_sz      maximum number of messages in the queue.
+/// \param         type          data type of a single message element (for debugger).
+/// \note CAN BE CHANGED: The parameter to \b osMessageQDef shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#if defined (osObjectsExternal)  // object is external
+#define osMessageQDef(name, queue_sz, type)   \
+extern const osMessageQDef_t os_messageQ_def_##name
+#else                            // define the object
+#define osMessageQDef(name, queue_sz, type)   \
+const osMessageQDef_t os_messageQ_def_##name = \
+{ (queue_sz), sizeof (type)  }
+#endif
+ 
+/// \brief Access a Message Queue Definition.
+/// \param         name          name of the queue
+/// \note CAN BE CHANGED: The parameter to \b osMessageQ shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#define osMessageQ(name) \
+&os_messageQ_def_##name
+ 
+/// Create and Initialize a Message Queue.
+/// \param[in]     queue_def     queue definition referenced with \ref osMessageQ.
+/// \param[in]     thread_id     thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL.
+/// \return message queue ID for reference by other functions or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osMessageCreate shall be consistent in every CMSIS-RTOS.
+osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id);
+ 
+/// Put a Message to a Queue.
+/// \param[in]     queue_id      message queue ID obtained with \ref osMessageCreate.
+/// \param[in]     info          message information.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osMessagePut shall be consistent in every CMSIS-RTOS.
+osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec);
+ 
+/// Get a Message or Wait for a Message from a Queue.
+/// \param[in]     queue_id      message queue ID obtained with \ref osMessageCreate.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
+/// \return event information that includes status code.
+/// \note MUST REMAIN UNCHANGED: \b osMessageGet shall be consistent in every CMSIS-RTOS.
+osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec);
+ 
+#endif     // Message Queues available
+ 
+ 
+//  ==== Mail Queue Management Functions ====
+ 
+#if (defined (osFeature_MailQ)  &&  (osFeature_MailQ != 0))     // Mail Queues available
+ 
+/// \brief Create a Mail Queue Definition.
+/// \param         name          name of the queue
+/// \param         queue_sz      maximum number of messages in queue
+/// \param         type          data type of a single message element
+/// \note CAN BE CHANGED: The parameter to \b osMailQDef shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#if defined (osObjectsExternal)  // object is external
+#define osMailQDef(name, queue_sz, type) \
+extern const osMailQDef_t os_mailQ_def_##name
+#else                            // define the object
+#define osMailQDef(name, queue_sz, type) \
+const osMailQDef_t os_mailQ_def_##name =  \
+{ (queue_sz), sizeof (type) }
+#endif
+ 
+/// \brief Access a Mail Queue Definition.
+/// \param         name          name of the queue
+/// \note CAN BE CHANGED: The parameter to \b osMailQ shall be consistent but the
+///       macro body is implementation specific in every CMSIS-RTOS.
+#define osMailQ(name)  \
+&os_mailQ_def_##name
+ 
+/// Create and Initialize mail queue.
+/// \param[in]     queue_def     reference to the mail queue definition obtain with \ref osMailQ
+/// \param[in]     thread_id     thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL.
+/// \return mail queue ID for reference by other functions or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osMailCreate shall be consistent in every CMSIS-RTOS.
+osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id);
+ 
+/// Allocate a memory block from a mail.
+/// \param[in]     queue_id      mail queue ID obtained with \ref osMailCreate.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out
+/// \return pointer to memory block that can be filled with mail or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osMailAlloc shall be consistent in every CMSIS-RTOS.
+void *osMailAlloc (osMailQId queue_id, uint32_t millisec);
+ 
+/// Allocate a memory block from a mail and set memory block to zero.
+/// \param[in]     queue_id      mail queue ID obtained with \ref osMailCreate.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out
+/// \return pointer to memory block that can be filled with mail or NULL in case of error.
+/// \note MUST REMAIN UNCHANGED: \b osMailCAlloc shall be consistent in every CMSIS-RTOS.
+void *osMailCAlloc (osMailQId queue_id, uint32_t millisec);
+ 
+/// Put a mail to a queue.
+/// \param[in]     queue_id      mail queue ID obtained with \ref osMailCreate.
+/// \param[in]     mail          memory block previously allocated with \ref osMailAlloc or \ref osMailCAlloc.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osMailPut shall be consistent in every CMSIS-RTOS.
+osStatus osMailPut (osMailQId queue_id, void *mail);
+ 
+/// Get a mail from a queue.
+/// \param[in]     queue_id      mail queue ID obtained with \ref osMailCreate.
+/// \param[in]     millisec      \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out
+/// \return event that contains mail information or error code.
+/// \note MUST REMAIN UNCHANGED: \b osMailGet shall be consistent in every CMSIS-RTOS.
+osEvent osMailGet (osMailQId queue_id, uint32_t millisec);
+ 
+/// Free a memory block from a mail.
+/// \param[in]     queue_id      mail queue ID obtained with \ref osMailCreate.
+/// \param[in]     mail          pointer to the memory block that was obtained with \ref osMailGet.
+/// \return status code that indicates the execution status of the function.
+/// \note MUST REMAIN UNCHANGED: \b osMailFree shall be consistent in every CMSIS-RTOS.
+osStatus osMailFree (osMailQId queue_id, void *mail);
+ 
+#endif  // Mail Queues available
+ 
+ 
+#ifdef  __cplusplus
+}
+#endif
+ 
+#endif  // _CMSIS_OS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,3123 @@
+/**
+  ******************************************************************************
+  * @file    stm32_hal_legacy.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   This file contains aliases definition for the STM32Cube HAL constants 
+  *          macros and functions maintained for legacy purpose.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32_HAL_LEGACY
+#define __STM32_HAL_LEGACY
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/** @defgroup HAL_AES_Aliased_Defines HAL CRYP Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define AES_FLAG_RDERR                  CRYP_FLAG_RDERR
+#define AES_FLAG_WRERR                  CRYP_FLAG_WRERR
+#define AES_CLEARFLAG_CCF               CRYP_CLEARFLAG_CCF
+#define AES_CLEARFLAG_RDERR             CRYP_CLEARFLAG_RDERR
+#define AES_CLEARFLAG_WRERR             CRYP_CLEARFLAG_WRERR
+
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_ADC_Aliased_Defines HAL ADC Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define ADC_RESOLUTION12b               ADC_RESOLUTION_12B
+#define ADC_RESOLUTION10b               ADC_RESOLUTION_10B
+#define ADC_RESOLUTION8b                ADC_RESOLUTION_8B
+#define ADC_RESOLUTION6b                ADC_RESOLUTION_6B
+#define OVR_DATA_OVERWRITTEN            ADC_OVR_DATA_OVERWRITTEN
+#define OVR_DATA_PRESERVED              ADC_OVR_DATA_PRESERVED
+#define EOC_SINGLE_CONV                 ADC_EOC_SINGLE_CONV
+#define EOC_SEQ_CONV                    ADC_EOC_SEQ_CONV
+#define EOC_SINGLE_SEQ_CONV             ADC_EOC_SINGLE_SEQ_CONV
+#define REGULAR_GROUP                   ADC_REGULAR_GROUP
+#define INJECTED_GROUP                  ADC_INJECTED_GROUP
+#define REGULAR_INJECTED_GROUP          ADC_REGULAR_INJECTED_GROUP
+#define AWD_EVENT                       ADC_AWD_EVENT
+#define AWD1_EVENT                      ADC_AWD1_EVENT
+#define AWD2_EVENT                      ADC_AWD2_EVENT
+#define AWD3_EVENT                      ADC_AWD3_EVENT
+#define OVR_EVENT                       ADC_OVR_EVENT
+#define JQOVF_EVENT                     ADC_JQOVF_EVENT
+#define ALL_CHANNELS                    ADC_ALL_CHANNELS
+#define REGULAR_CHANNELS                ADC_REGULAR_CHANNELS
+#define INJECTED_CHANNELS               ADC_INJECTED_CHANNELS
+#define SYSCFG_FLAG_SENSOR_ADC          ADC_FLAG_SENSOR
+#define SYSCFG_FLAG_VREF_ADC            ADC_FLAG_VREFINT
+#define ADC_CLOCKPRESCALER_PCLK_DIV1    ADC_CLOCK_SYNC_PCLK_DIV1
+#define ADC_CLOCKPRESCALER_PCLK_DIV2    ADC_CLOCK_SYNC_PCLK_DIV2
+#define ADC_CLOCKPRESCALER_PCLK_DIV4    ADC_CLOCK_SYNC_PCLK_DIV4
+#define ADC_CLOCKPRESCALER_PCLK_DIV6    ADC_CLOCK_SYNC_PCLK_DIV6
+#define ADC_CLOCKPRESCALER_PCLK_DIV8    ADC_CLOCK_SYNC_PCLK_DIV8
+#define ADC_EXTERNALTRIG0_T6_TRGO       ADC_EXTERNALTRIGCONV_T6_TRGO 
+#define ADC_EXTERNALTRIG1_T21_CC2       ADC_EXTERNALTRIGCONV_T21_CC2 
+#define ADC_EXTERNALTRIG2_T2_TRGO       ADC_EXTERNALTRIGCONV_T2_TRGO 
+#define ADC_EXTERNALTRIG3_T2_CC4        ADC_EXTERNALTRIGCONV_T2_CC4  
+#define ADC_EXTERNALTRIG4_T22_TRGO      ADC_EXTERNALTRIGCONV_T22_TRGO
+#define ADC_EXTERNALTRIG7_EXT_IT11      ADC_EXTERNALTRIGCONV_EXT_IT11
+#define ADC_CLOCK_ASYNC                 ADC_CLOCK_ASYNC_DIV1
+#define ADC_EXTERNALTRIG_EDGE_NONE      ADC_EXTERNALTRIGCONVEDGE_NONE
+#define ADC_EXTERNALTRIG_EDGE_RISING    ADC_EXTERNALTRIGCONVEDGE_RISING
+#define ADC_EXTERNALTRIG_EDGE_FALLING   ADC_EXTERNALTRIGCONVEDGE_FALLING
+#define ADC_EXTERNALTRIG_EDGE_RISINGFALLING ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING
+#define ADC_SAMPLETIME_2CYCLE_5         ADC_SAMPLETIME_2CYCLES_5
+
+#define HAL_ADC_STATE_BUSY_REG          HAL_ADC_STATE_REG_BUSY
+#define HAL_ADC_STATE_BUSY_INJ          HAL_ADC_STATE_INJ_BUSY
+#define HAL_ADC_STATE_EOC_REG           HAL_ADC_STATE_REG_EOC
+#define HAL_ADC_STATE_EOC_INJ           HAL_ADC_STATE_INJ_EOC
+#define HAL_ADC_STATE_ERROR             HAL_ADC_STATE_ERROR_INTERNAL
+#define HAL_ADC_STATE_BUSY              HAL_ADC_STATE_BUSY_INTERNAL
+#define HAL_ADC_STATE_AWD               HAL_ADC_STATE_AWD1 
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_CEC_Aliased_Defines HAL CEC Aliased Defines maintained for legacy purpose
+  * @{
+  */ 
+  
+#define __HAL_CEC_GET_IT __HAL_CEC_GET_FLAG 
+
+/**
+  * @}
+  */   
+   
+/** @defgroup HAL_COMP_Aliased_Defines HAL COMP Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define COMP_WINDOWMODE_DISABLED       COMP_WINDOWMODE_DISABLE
+#define COMP_WINDOWMODE_ENABLED        COMP_WINDOWMODE_ENABLE
+#define COMP_EXTI_LINE_COMP1_EVENT     COMP_EXTI_LINE_COMP1
+#define COMP_EXTI_LINE_COMP2_EVENT     COMP_EXTI_LINE_COMP2
+#define COMP_EXTI_LINE_COMP3_EVENT     COMP_EXTI_LINE_COMP3
+#define COMP_EXTI_LINE_COMP4_EVENT     COMP_EXTI_LINE_COMP4
+#define COMP_EXTI_LINE_COMP5_EVENT     COMP_EXTI_LINE_COMP5
+#define COMP_EXTI_LINE_COMP6_EVENT     COMP_EXTI_LINE_COMP6
+#define COMP_EXTI_LINE_COMP7_EVENT     COMP_EXTI_LINE_COMP7
+#define COMP_OUTPUT_COMP6TIM2OCREFCLR  COMP_OUTPUT_COMP6_TIM2OCREFCLR
+#if defined(STM32F373xC) || defined(STM32F378xx)
+#define COMP_OUTPUT_TIM3IC1            COMP_OUTPUT_COMP1_TIM3IC1
+#define COMP_OUTPUT_TIM3OCREFCLR       COMP_OUTPUT_COMP1_TIM3OCREFCLR
+#endif /* STM32F373xC || STM32F378xx */
+
+#if defined(STM32L0) || defined(STM32L4)
+#define COMP_WINDOWMODE_ENABLE         COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON
+
+#define COMP_NONINVERTINGINPUT_IO1      COMP_INPUT_PLUS_IO1
+#define COMP_NONINVERTINGINPUT_IO2      COMP_INPUT_PLUS_IO2
+#define COMP_NONINVERTINGINPUT_IO3      COMP_INPUT_PLUS_IO3
+ 
+#define COMP_INVERTINGINPUT_1_4VREFINT  COMP_INPUT_MINUS_1_4VREFINT
+#define COMP_INVERTINGINPUT_1_2VREFINT  COMP_INPUT_MINUS_1_2VREFINT
+#define COMP_INVERTINGINPUT_3_4VREFINT  COMP_INPUT_MINUS_3_4VREFINT
+#define COMP_INVERTINGINPUT_VREFINT     COMP_INPUT_MINUS_VREFINT
+#define COMP_INVERTINGINPUT_DAC1_CH1    COMP_INPUT_MINUS_DAC1_CH1
+#define COMP_INVERTINGINPUT_DAC1_CH2    COMP_INPUT_MINUS_DAC1_CH2
+#define COMP_INVERTINGINPUT_DAC1        COMP_INPUT_MINUS_DAC1_CH1
+#define COMP_INVERTINGINPUT_DAC2        COMP_INPUT_MINUS_DAC1_CH2
+#define COMP_INVERTINGINPUT_IO1         COMP_INPUT_MINUS_IO1
+#define COMP_INVERTINGINPUT_IO2         COMP_INPUT_MINUS_IO2
+#define COMP_INVERTINGINPUT_IO3         COMP_INPUT_MINUS_IO3
+#define COMP_INVERTINGINPUT_IO4         COMP_INPUT_MINUS_IO4
+#define COMP_INVERTINGINPUT_IO5         COMP_INPUT_MINUS_IO5
+
+#define COMP_OUTPUTLEVEL_LOW            COMP_OUTPUT_LEVEL_LOW
+#define COMP_OUTPUTLEVEL_HIGH           COMP_OUTPUT_LEVEL_HIGH
+
+/* Note: Literal "COMP_FLAG_LOCK" kept for legacy purpose.                    */
+/*       To check COMP lock state, use macro "__HAL_COMP_IS_LOCKED()".        */
+#if defined(COMP_CSR_LOCK)
+#define COMP_FLAG_LOCK                 COMP_CSR_LOCK
+#elif defined(COMP_CSR_COMP1LOCK)
+#define COMP_FLAG_LOCK                 COMP_CSR_COMP1LOCK
+#elif defined(COMP_CSR_COMPxLOCK)
+#define COMP_FLAG_LOCK                 COMP_CSR_COMPxLOCK
+#endif
+
+#if defined(STM32L4)
+#define COMP_BLANKINGSRCE_TIM1OC5        COMP_BLANKINGSRC_TIM1_OC5_COMP1
+#define COMP_BLANKINGSRCE_TIM2OC3        COMP_BLANKINGSRC_TIM2_OC3_COMP1
+#define COMP_BLANKINGSRCE_TIM3OC3        COMP_BLANKINGSRC_TIM3_OC3_COMP1
+#define COMP_BLANKINGSRCE_TIM3OC4        COMP_BLANKINGSRC_TIM3_OC4_COMP2
+#define COMP_BLANKINGSRCE_TIM8OC5        COMP_BLANKINGSRC_TIM8_OC5_COMP2
+#define COMP_BLANKINGSRCE_TIM15OC1       COMP_BLANKINGSRC_TIM15_OC1_COMP2
+#define COMP_BLANKINGSRCE_NONE           COMP_BLANKINGSRC_NONE
+#endif
+
+#if defined(STM32L0)
+#define COMP_MODE_HIGHSPEED              COMP_POWERMODE_MEDIUMSPEED
+#define COMP_MODE_LOWSPEED               COMP_POWERMODE_ULTRALOWPOWER
+#else
+#define COMP_MODE_HIGHSPEED              COMP_POWERMODE_HIGHSPEED
+#define COMP_MODE_MEDIUMSPEED            COMP_POWERMODE_MEDIUMSPEED
+#define COMP_MODE_LOWPOWER               COMP_POWERMODE_LOWPOWER
+#define COMP_MODE_ULTRALOWPOWER          COMP_POWERMODE_ULTRALOWPOWER
+#endif
+
+#endif
+/**
+  * @}
+  */
+
+/** @defgroup HAL_CORTEX_Aliased_Defines HAL CORTEX Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define __HAL_CORTEX_SYSTICKCLK_CONFIG HAL_SYSTICK_CLKSourceConfig
+/**
+  * @}
+  */
+
+/** @defgroup HAL_CRC_Aliased_Defines HAL CRC Aliased Defines maintained for legacy purpose
+  * @{
+  */
+  
+#define CRC_OUTPUTDATA_INVERSION_DISABLED    CRC_OUTPUTDATA_INVERSION_DISABLE
+#define CRC_OUTPUTDATA_INVERSION_ENABLED     CRC_OUTPUTDATA_INVERSION_ENABLE
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_DAC_Aliased_Defines HAL DAC Aliased Defines maintained for legacy purpose
+  * @{
+  */
+
+#define DAC1_CHANNEL_1                                  DAC_CHANNEL_1
+#define DAC1_CHANNEL_2                                  DAC_CHANNEL_2
+#define DAC2_CHANNEL_1                                  DAC_CHANNEL_1
+#define DAC_WAVE_NONE                                   ((uint32_t)0x00000000U)
+#define DAC_WAVE_NOISE                                  ((uint32_t)DAC_CR_WAVE1_0)
+#define DAC_WAVE_TRIANGLE                               ((uint32_t)DAC_CR_WAVE1_1)                           
+#define DAC_WAVEGENERATION_NONE                         DAC_WAVE_NONE
+#define DAC_WAVEGENERATION_NOISE                        DAC_WAVE_NOISE
+#define DAC_WAVEGENERATION_TRIANGLE                     DAC_WAVE_TRIANGLE
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_DMA_Aliased_Defines HAL DMA Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define HAL_REMAPDMA_ADC_DMA_CH2                DMA_REMAP_ADC_DMA_CH2       
+#define HAL_REMAPDMA_USART1_TX_DMA_CH4          DMA_REMAP_USART1_TX_DMA_CH4 
+#define HAL_REMAPDMA_USART1_RX_DMA_CH5          DMA_REMAP_USART1_RX_DMA_CH5   
+#define HAL_REMAPDMA_TIM16_DMA_CH4              DMA_REMAP_TIM16_DMA_CH4       
+#define HAL_REMAPDMA_TIM17_DMA_CH2              DMA_REMAP_TIM17_DMA_CH2       
+#define HAL_REMAPDMA_USART3_DMA_CH32            DMA_REMAP_USART3_DMA_CH32
+#define HAL_REMAPDMA_TIM16_DMA_CH6              DMA_REMAP_TIM16_DMA_CH6
+#define HAL_REMAPDMA_TIM17_DMA_CH7              DMA_REMAP_TIM17_DMA_CH7      
+#define HAL_REMAPDMA_SPI2_DMA_CH67              DMA_REMAP_SPI2_DMA_CH67  
+#define HAL_REMAPDMA_USART2_DMA_CH67            DMA_REMAP_USART2_DMA_CH67 
+#define HAL_REMAPDMA_USART3_DMA_CH32            DMA_REMAP_USART3_DMA_CH32  
+#define HAL_REMAPDMA_I2C1_DMA_CH76              DMA_REMAP_I2C1_DMA_CH76   
+#define HAL_REMAPDMA_TIM1_DMA_CH6               DMA_REMAP_TIM1_DMA_CH6     
+#define HAL_REMAPDMA_TIM2_DMA_CH7               DMA_REMAP_TIM2_DMA_CH7      
+#define HAL_REMAPDMA_TIM3_DMA_CH6               DMA_REMAP_TIM3_DMA_CH6    
+  
+#define IS_HAL_REMAPDMA                          IS_DMA_REMAP  
+#define __HAL_REMAPDMA_CHANNEL_ENABLE            __HAL_DMA_REMAP_CHANNEL_ENABLE
+#define __HAL_REMAPDMA_CHANNEL_DISABLE           __HAL_DMA_REMAP_CHANNEL_DISABLE
+  
+  
+  
+/**
+  * @}
+  */
+
+/** @defgroup HAL_FLASH_Aliased_Defines HAL FLASH Aliased Defines maintained for legacy purpose
+  * @{
+  */
+  
+#define TYPEPROGRAM_BYTE              FLASH_TYPEPROGRAM_BYTE
+#define TYPEPROGRAM_HALFWORD          FLASH_TYPEPROGRAM_HALFWORD
+#define TYPEPROGRAM_WORD              FLASH_TYPEPROGRAM_WORD
+#define TYPEPROGRAM_DOUBLEWORD        FLASH_TYPEPROGRAM_DOUBLEWORD
+#define TYPEERASE_SECTORS             FLASH_TYPEERASE_SECTORS
+#define TYPEERASE_PAGES               FLASH_TYPEERASE_PAGES
+#define TYPEERASE_PAGEERASE           FLASH_TYPEERASE_PAGES
+#define TYPEERASE_MASSERASE           FLASH_TYPEERASE_MASSERASE
+#define WRPSTATE_DISABLE              OB_WRPSTATE_DISABLE
+#define WRPSTATE_ENABLE               OB_WRPSTATE_ENABLE
+#define HAL_FLASH_TIMEOUT_VALUE       FLASH_TIMEOUT_VALUE
+#define OBEX_PCROP                    OPTIONBYTE_PCROP
+#define OBEX_BOOTCONFIG               OPTIONBYTE_BOOTCONFIG
+#define PCROPSTATE_DISABLE            OB_PCROP_STATE_DISABLE
+#define PCROPSTATE_ENABLE             OB_PCROP_STATE_ENABLE
+#define TYPEERASEDATA_BYTE            FLASH_TYPEERASEDATA_BYTE
+#define TYPEERASEDATA_HALFWORD        FLASH_TYPEERASEDATA_HALFWORD
+#define TYPEERASEDATA_WORD            FLASH_TYPEERASEDATA_WORD
+#define TYPEPROGRAMDATA_BYTE          FLASH_TYPEPROGRAMDATA_BYTE
+#define TYPEPROGRAMDATA_HALFWORD      FLASH_TYPEPROGRAMDATA_HALFWORD
+#define TYPEPROGRAMDATA_WORD          FLASH_TYPEPROGRAMDATA_WORD
+#define TYPEPROGRAMDATA_FASTBYTE      FLASH_TYPEPROGRAMDATA_FASTBYTE
+#define TYPEPROGRAMDATA_FASTHALFWORD  FLASH_TYPEPROGRAMDATA_FASTHALFWORD
+#define TYPEPROGRAMDATA_FASTWORD      FLASH_TYPEPROGRAMDATA_FASTWORD
+#define PAGESIZE                      FLASH_PAGE_SIZE
+#define TYPEPROGRAM_FASTBYTE          FLASH_TYPEPROGRAM_BYTE
+#define TYPEPROGRAM_FASTHALFWORD      FLASH_TYPEPROGRAM_HALFWORD
+#define TYPEPROGRAM_FASTWORD          FLASH_TYPEPROGRAM_WORD
+#define VOLTAGE_RANGE_1               FLASH_VOLTAGE_RANGE_1
+#define VOLTAGE_RANGE_2               FLASH_VOLTAGE_RANGE_2
+#define VOLTAGE_RANGE_3               FLASH_VOLTAGE_RANGE_3
+#define VOLTAGE_RANGE_4               FLASH_VOLTAGE_RANGE_4
+#define TYPEPROGRAM_FAST              FLASH_TYPEPROGRAM_FAST
+#define TYPEPROGRAM_FAST_AND_LAST     FLASH_TYPEPROGRAM_FAST_AND_LAST
+#define WRPAREA_BANK1_AREAA           OB_WRPAREA_BANK1_AREAA
+#define WRPAREA_BANK1_AREAB           OB_WRPAREA_BANK1_AREAB
+#define WRPAREA_BANK2_AREAA           OB_WRPAREA_BANK2_AREAA
+#define WRPAREA_BANK2_AREAB           OB_WRPAREA_BANK2_AREAB
+#define IWDG_STDBY_FREEZE             OB_IWDG_STDBY_FREEZE
+#define IWDG_STDBY_ACTIVE             OB_IWDG_STDBY_RUN
+#define IWDG_STOP_FREEZE              OB_IWDG_STOP_FREEZE
+#define IWDG_STOP_ACTIVE              OB_IWDG_STOP_RUN
+#define FLASH_ERROR_NONE              HAL_FLASH_ERROR_NONE
+#define FLASH_ERROR_RD                HAL_FLASH_ERROR_RD
+#define FLASH_ERROR_PG                HAL_FLASH_ERROR_PROG
+#define FLASH_ERROR_PGP               HAL_FLASH_ERROR_PGS
+#define FLASH_ERROR_WRP               HAL_FLASH_ERROR_WRP
+#define FLASH_ERROR_OPTV              HAL_FLASH_ERROR_OPTV
+#define FLASH_ERROR_OPTVUSR           HAL_FLASH_ERROR_OPTVUSR
+#define FLASH_ERROR_PROG              HAL_FLASH_ERROR_PROG
+#define FLASH_ERROR_OP                HAL_FLASH_ERROR_OPERATION
+#define FLASH_ERROR_PGA               HAL_FLASH_ERROR_PGA
+#define FLASH_ERROR_SIZE              HAL_FLASH_ERROR_SIZE
+#define FLASH_ERROR_SIZ               HAL_FLASH_ERROR_SIZE
+#define FLASH_ERROR_PGS               HAL_FLASH_ERROR_PGS
+#define FLASH_ERROR_MIS               HAL_FLASH_ERROR_MIS
+#define FLASH_ERROR_FAST              HAL_FLASH_ERROR_FAST
+#define FLASH_ERROR_FWWERR            HAL_FLASH_ERROR_FWWERR
+#define FLASH_ERROR_NOTZERO           HAL_FLASH_ERROR_NOTZERO
+#define FLASH_ERROR_OPERATION         HAL_FLASH_ERROR_OPERATION
+#define FLASH_ERROR_ERS               HAL_FLASH_ERROR_ERS
+#define OB_WDG_SW                     OB_IWDG_SW
+#define OB_WDG_HW                     OB_IWDG_HW
+#define OB_SDADC12_VDD_MONITOR_SET    OB_SDACD_VDD_MONITOR_SET
+#define OB_SDADC12_VDD_MONITOR_RESET  OB_SDACD_VDD_MONITOR_RESET
+#define OB_RAM_PARITY_CHECK_SET       OB_SRAM_PARITY_SET
+#define OB_RAM_PARITY_CHECK_RESET     OB_SRAM_PARITY_RESET
+#define IS_OB_SDADC12_VDD_MONITOR     IS_OB_SDACD_VDD_MONITOR
+#define OB_RDP_LEVEL0                 OB_RDP_LEVEL_0
+#define OB_RDP_LEVEL1                 OB_RDP_LEVEL_1
+#define OB_RDP_LEVEL2                 OB_RDP_LEVEL_2
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_SYSCFG_Aliased_Defines HAL SYSCFG Aliased Defines maintained for legacy purpose
+  * @{
+  */
+  
+#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA9    I2C_FASTMODEPLUS_PA9
+#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA10   I2C_FASTMODEPLUS_PA10
+#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB6    I2C_FASTMODEPLUS_PB6
+#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB7    I2C_FASTMODEPLUS_PB7
+#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB8    I2C_FASTMODEPLUS_PB8
+#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB9    I2C_FASTMODEPLUS_PB9
+#define HAL_SYSCFG_FASTMODEPLUS_I2C1       I2C_FASTMODEPLUS_I2C1
+#define HAL_SYSCFG_FASTMODEPLUS_I2C2       I2C_FASTMODEPLUS_I2C2
+#define HAL_SYSCFG_FASTMODEPLUS_I2C3       I2C_FASTMODEPLUS_I2C3
+/**
+  * @}
+  */
+  
+
+/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose
+  * @{
+  */
+#if defined(STM32L4) || defined(STM32F7)
+#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE       FMC_NAND_WAIT_FEATURE_DISABLE
+#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE        FMC_NAND_WAIT_FEATURE_ENABLE
+#define FMC_NAND_PCC_MEM_BUS_WIDTH_8            FMC_NAND_MEM_BUS_WIDTH_8
+#define FMC_NAND_PCC_MEM_BUS_WIDTH_16           FMC_NAND_MEM_BUS_WIDTH_16
+#else
+#define FMC_NAND_WAIT_FEATURE_DISABLE           FMC_NAND_PCC_WAIT_FEATURE_DISABLE
+#define FMC_NAND_WAIT_FEATURE_ENABLE            FMC_NAND_PCC_WAIT_FEATURE_ENABLE
+#define FMC_NAND_MEM_BUS_WIDTH_8                FMC_NAND_PCC_MEM_BUS_WIDTH_8
+#define FMC_NAND_MEM_BUS_WIDTH_16               FMC_NAND_PCC_MEM_BUS_WIDTH_16
+#endif
+/**
+  * @}
+  */
+
+/** @defgroup LL_FSMC_Aliased_Defines LL FSMC Aliased Defines maintained for legacy purpose
+  * @{
+  */
+  
+#define FSMC_NORSRAM_TYPEDEF                      FSMC_NORSRAM_TypeDef
+#define FSMC_NORSRAM_EXTENDED_TYPEDEF             FSMC_NORSRAM_EXTENDED_TypeDef
+/**
+  * @}
+  */
+
+/** @defgroup HAL_GPIO_Aliased_Macros HAL GPIO Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define GET_GPIO_SOURCE                           GPIO_GET_INDEX
+#define GET_GPIO_INDEX                            GPIO_GET_INDEX
+
+#if defined(STM32F4)
+#define GPIO_AF12_SDMMC                           GPIO_AF12_SDIO
+#define GPIO_AF12_SDMMC1                          GPIO_AF12_SDIO
+#endif
+
+#if defined(STM32F7)
+#define GPIO_AF12_SDIO                            GPIO_AF12_SDMMC1
+#define GPIO_AF12_SDMMC                           GPIO_AF12_SDMMC1
+#endif
+
+#if defined(STM32L4)
+#define GPIO_AF12_SDIO                            GPIO_AF12_SDMMC1
+#define GPIO_AF12_SDMMC                           GPIO_AF12_SDMMC1
+#endif
+
+#define GPIO_AF0_LPTIM                            GPIO_AF0_LPTIM1
+#define GPIO_AF1_LPTIM                            GPIO_AF1_LPTIM1
+#define GPIO_AF2_LPTIM                            GPIO_AF2_LPTIM1
+
+#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7)
+#define  GPIO_SPEED_LOW                           GPIO_SPEED_FREQ_LOW     
+#define  GPIO_SPEED_MEDIUM                        GPIO_SPEED_FREQ_MEDIUM     
+#define  GPIO_SPEED_FAST                          GPIO_SPEED_FREQ_HIGH     
+#define  GPIO_SPEED_HIGH                          GPIO_SPEED_FREQ_VERY_HIGH       
+#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 */
+
+#if defined(STM32L1) 
+ #define  GPIO_SPEED_VERY_LOW    GPIO_SPEED_FREQ_LOW     
+ #define  GPIO_SPEED_LOW         GPIO_SPEED_FREQ_MEDIUM     
+ #define  GPIO_SPEED_MEDIUM      GPIO_SPEED_FREQ_HIGH     
+ #define  GPIO_SPEED_HIGH        GPIO_SPEED_FREQ_VERY_HIGH     
+#endif /* STM32L1 */
+
+#if defined(STM32F0) || defined(STM32F3) || defined(STM32F1)
+ #define  GPIO_SPEED_LOW    GPIO_SPEED_FREQ_LOW
+ #define  GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM
+ #define  GPIO_SPEED_HIGH   GPIO_SPEED_FREQ_HIGH
+#endif /* STM32F0 || STM32F3 || STM32F1 */
+
+#define GPIO_AF6_DFSDM                            GPIO_AF6_DFSDM1
+/**
+  * @}
+  */
+
+/** @defgroup HAL_HRTIM_Aliased_Macros HAL HRTIM Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define HRTIM_TIMDELAYEDPROTECTION_DISABLED           HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED
+#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_EEV68  HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_EEV6
+#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_EEV68  HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_EEV6
+#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV68  HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV6
+#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68     HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV6
+#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_DEEV7
+#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_DEEV7
+#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV79  HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV7
+#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79     HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV7
+   
+#define __HAL_HRTIM_SetCounter        __HAL_HRTIM_SETCOUNTER
+#define __HAL_HRTIM_GetCounter        __HAL_HRTIM_GETCOUNTER
+#define __HAL_HRTIM_SetPeriod         __HAL_HRTIM_SETPERIOD
+#define __HAL_HRTIM_GetPeriod         __HAL_HRTIM_GETPERIOD
+#define __HAL_HRTIM_SetClockPrescaler __HAL_HRTIM_SETCLOCKPRESCALER
+#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER
+#define __HAL_HRTIM_SetCompare        __HAL_HRTIM_SETCOMPARE
+#define __HAL_HRTIM_GetCompare        __HAL_HRTIM_GETCOMPARE
+/**
+  * @}
+  */
+
+/** @defgroup HAL_I2C_Aliased_Defines HAL I2C Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define I2C_DUALADDRESS_DISABLED                I2C_DUALADDRESS_DISABLE
+#define I2C_DUALADDRESS_ENABLED                 I2C_DUALADDRESS_ENABLE
+#define I2C_GENERALCALL_DISABLED                I2C_GENERALCALL_DISABLE
+#define I2C_GENERALCALL_ENABLED                 I2C_GENERALCALL_ENABLE
+#define I2C_NOSTRETCH_DISABLED                  I2C_NOSTRETCH_DISABLE
+#define I2C_NOSTRETCH_ENABLED                   I2C_NOSTRETCH_ENABLE
+#define I2C_ANALOGFILTER_ENABLED                I2C_ANALOGFILTER_ENABLE
+#define I2C_ANALOGFILTER_DISABLED               I2C_ANALOGFILTER_DISABLE
+#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32G0) || defined(STM32L4) || defined(STM32L1) || defined(STM32F7)
+#define HAL_I2C_STATE_MEM_BUSY_TX               HAL_I2C_STATE_BUSY_TX
+#define HAL_I2C_STATE_MEM_BUSY_RX               HAL_I2C_STATE_BUSY_RX
+#define HAL_I2C_STATE_MASTER_BUSY_TX            HAL_I2C_STATE_BUSY_TX
+#define HAL_I2C_STATE_MASTER_BUSY_RX            HAL_I2C_STATE_BUSY_RX
+#define HAL_I2C_STATE_SLAVE_BUSY_TX             HAL_I2C_STATE_BUSY_TX
+#define HAL_I2C_STATE_SLAVE_BUSY_RX             HAL_I2C_STATE_BUSY_RX
+#endif
+/**
+  * @}
+  */
+
+/** @defgroup HAL_IRDA_Aliased_Defines HAL IRDA Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define IRDA_ONE_BIT_SAMPLE_DISABLED            IRDA_ONE_BIT_SAMPLE_DISABLE
+#define IRDA_ONE_BIT_SAMPLE_ENABLED             IRDA_ONE_BIT_SAMPLE_ENABLE
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_IWDG_Aliased_Defines HAL IWDG Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define KR_KEY_RELOAD                   IWDG_KEY_RELOAD
+#define KR_KEY_ENABLE                   IWDG_KEY_ENABLE
+#define KR_KEY_EWA                      IWDG_KEY_WRITE_ACCESS_ENABLE
+#define KR_KEY_DWA                      IWDG_KEY_WRITE_ACCESS_DISABLE
+/**
+  * @}
+  */
+
+/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose
+  * @{
+  */
+
+#define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSISTION LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION
+#define LPTIM_CLOCKSAMPLETIME_2TRANSISTIONS     LPTIM_CLOCKSAMPLETIME_2TRANSITIONS
+#define LPTIM_CLOCKSAMPLETIME_4TRANSISTIONS     LPTIM_CLOCKSAMPLETIME_4TRANSITIONS
+#define LPTIM_CLOCKSAMPLETIME_8TRANSISTIONS     LPTIM_CLOCKSAMPLETIME_8TRANSITIONS
+
+#define LPTIM_CLOCKPOLARITY_RISINGEDGE          LPTIM_CLOCKPOLARITY_RISING
+#define LPTIM_CLOCKPOLARITY_FALLINGEDGE         LPTIM_CLOCKPOLARITY_FALLING
+#define LPTIM_CLOCKPOLARITY_BOTHEDGES           LPTIM_CLOCKPOLARITY_RISING_FALLING
+
+#define LPTIM_TRIGSAMPLETIME_DIRECTTRANSISTION  LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION
+#define LPTIM_TRIGSAMPLETIME_2TRANSISTIONS      LPTIM_TRIGSAMPLETIME_2TRANSITIONS
+#define LPTIM_TRIGSAMPLETIME_4TRANSISTIONS      LPTIM_TRIGSAMPLETIME_4TRANSITIONS
+#define LPTIM_TRIGSAMPLETIME_8TRANSISTIONS      LPTIM_TRIGSAMPLETIME_8TRANSITIONS        
+
+/* The following 3 definition have also been present in a temporary version of lptim.h */
+/* They need to be renamed also to the right name, just in case */
+#define LPTIM_TRIGSAMPLETIME_2TRANSITION        LPTIM_TRIGSAMPLETIME_2TRANSITIONS
+#define LPTIM_TRIGSAMPLETIME_4TRANSITION        LPTIM_TRIGSAMPLETIME_4TRANSITIONS
+#define LPTIM_TRIGSAMPLETIME_8TRANSITION        LPTIM_TRIGSAMPLETIME_8TRANSITIONS
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_NAND_Aliased_Defines HAL NAND Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define HAL_NAND_Read_Page              HAL_NAND_Read_Page_8b
+#define HAL_NAND_Write_Page             HAL_NAND_Write_Page_8b
+#define HAL_NAND_Read_SpareArea         HAL_NAND_Read_SpareArea_8b
+#define HAL_NAND_Write_SpareArea        HAL_NAND_Write_SpareArea_8b
+
+#define NAND_AddressTypedef             NAND_AddressTypeDef
+
+#define __ARRAY_ADDRESS                 ARRAY_ADDRESS
+#define __ADDR_1st_CYCLE                ADDR_1ST_CYCLE
+#define __ADDR_2nd_CYCLE                ADDR_2ND_CYCLE
+#define __ADDR_3rd_CYCLE                ADDR_3RD_CYCLE
+#define __ADDR_4th_CYCLE                ADDR_4TH_CYCLE
+/**
+  * @}
+  */
+   
+/** @defgroup HAL_NOR_Aliased_Defines HAL NOR Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define NOR_StatusTypedef              HAL_NOR_StatusTypeDef
+#define NOR_SUCCESS                    HAL_NOR_STATUS_SUCCESS
+#define NOR_ONGOING                    HAL_NOR_STATUS_ONGOING
+#define NOR_ERROR                      HAL_NOR_STATUS_ERROR
+#define NOR_TIMEOUT                    HAL_NOR_STATUS_TIMEOUT
+
+#define __NOR_WRITE                    NOR_WRITE
+#define __NOR_ADDR_SHIFT               NOR_ADDR_SHIFT
+/**
+  * @}
+  */
+
+/** @defgroup HAL_OPAMP_Aliased_Defines HAL OPAMP Aliased Defines maintained for legacy purpose
+  * @{
+  */
+
+#define OPAMP_NONINVERTINGINPUT_VP0           OPAMP_NONINVERTINGINPUT_IO0
+#define OPAMP_NONINVERTINGINPUT_VP1           OPAMP_NONINVERTINGINPUT_IO1
+#define OPAMP_NONINVERTINGINPUT_VP2           OPAMP_NONINVERTINGINPUT_IO2
+#define OPAMP_NONINVERTINGINPUT_VP3           OPAMP_NONINVERTINGINPUT_IO3
+                                              
+#define OPAMP_SEC_NONINVERTINGINPUT_VP0       OPAMP_SEC_NONINVERTINGINPUT_IO0
+#define OPAMP_SEC_NONINVERTINGINPUT_VP1       OPAMP_SEC_NONINVERTINGINPUT_IO1
+#define OPAMP_SEC_NONINVERTINGINPUT_VP2       OPAMP_SEC_NONINVERTINGINPUT_IO2
+#define OPAMP_SEC_NONINVERTINGINPUT_VP3       OPAMP_SEC_NONINVERTINGINPUT_IO3   
+
+#define OPAMP_INVERTINGINPUT_VM0              OPAMP_INVERTINGINPUT_IO0
+#define OPAMP_INVERTINGINPUT_VM1              OPAMP_INVERTINGINPUT_IO1
+
+#define IOPAMP_INVERTINGINPUT_VM0             OPAMP_INVERTINGINPUT_IO0
+#define IOPAMP_INVERTINGINPUT_VM1             OPAMP_INVERTINGINPUT_IO1
+
+#define OPAMP_SEC_INVERTINGINPUT_VM0          OPAMP_SEC_INVERTINGINPUT_IO0
+#define OPAMP_SEC_INVERTINGINPUT_VM1          OPAMP_SEC_INVERTINGINPUT_IO1    
+
+#define OPAMP_INVERTINGINPUT_VINM             OPAMP_SEC_INVERTINGINPUT_IO1
+                                                                      
+#define OPAMP_PGACONNECT_NO                   OPAMP_PGA_CONNECT_INVERTINGINPUT_NO             
+#define OPAMP_PGACONNECT_VM0                  OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0            
+#define OPAMP_PGACONNECT_VM1                  OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1          
+                                                        
+/**
+  * @}
+  */
+
+/** @defgroup HAL_I2S_Aliased_Defines HAL I2S Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define I2S_STANDARD_PHILLIPS      I2S_STANDARD_PHILIPS
+#if defined(STM32F7) 
+  #define I2S_CLOCK_SYSCLK           I2S_CLOCK_PLL
+#endif
+/**
+  * @}
+  */
+
+/** @defgroup HAL_PCCARD_Aliased_Defines HAL PCCARD Aliased Defines maintained for legacy purpose
+  * @{
+  */
+
+/* Compact Flash-ATA registers description */
+#define CF_DATA                       ATA_DATA                
+#define CF_SECTOR_COUNT               ATA_SECTOR_COUNT        
+#define CF_SECTOR_NUMBER              ATA_SECTOR_NUMBER       
+#define CF_CYLINDER_LOW               ATA_CYLINDER_LOW        
+#define CF_CYLINDER_HIGH              ATA_CYLINDER_HIGH       
+#define CF_CARD_HEAD                  ATA_CARD_HEAD           
+#define CF_STATUS_CMD                 ATA_STATUS_CMD          
+#define CF_STATUS_CMD_ALTERNATE       ATA_STATUS_CMD_ALTERNATE
+#define CF_COMMON_DATA_AREA           ATA_COMMON_DATA_AREA    
+
+/* Compact Flash-ATA commands */
+#define CF_READ_SECTOR_CMD            ATA_READ_SECTOR_CMD 
+#define CF_WRITE_SECTOR_CMD           ATA_WRITE_SECTOR_CMD
+#define CF_ERASE_SECTOR_CMD           ATA_ERASE_SECTOR_CMD
+#define CF_IDENTIFY_CMD               ATA_IDENTIFY_CMD
+
+#define PCCARD_StatusTypedef          HAL_PCCARD_StatusTypeDef
+#define PCCARD_SUCCESS                HAL_PCCARD_STATUS_SUCCESS
+#define PCCARD_ONGOING                HAL_PCCARD_STATUS_ONGOING
+#define PCCARD_ERROR                  HAL_PCCARD_STATUS_ERROR
+#define PCCARD_TIMEOUT                HAL_PCCARD_STATUS_TIMEOUT
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_RTC_Aliased_Defines HAL RTC Aliased Defines maintained for legacy purpose
+  * @{
+  */
+  
+#define FORMAT_BIN                  RTC_FORMAT_BIN
+#define FORMAT_BCD                  RTC_FORMAT_BCD
+
+#define RTC_ALARMSUBSECONDMASK_None     RTC_ALARMSUBSECONDMASK_NONE
+#define RTC_TAMPERERASEBACKUP_ENABLED   RTC_TAMPER_ERASE_BACKUP_ENABLE
+#define RTC_TAMPERERASEBACKUP_DISABLED  RTC_TAMPER_ERASE_BACKUP_DISABLE
+#define RTC_TAMPERMASK_FLAG_DISABLED    RTC_TAMPERMASK_FLAG_DISABLE
+#define RTC_TAMPERMASK_FLAG_ENABLED     RTC_TAMPERMASK_FLAG_ENABLE
+
+#define RTC_MASKTAMPERFLAG_DISABLED     RTC_TAMPERMASK_FLAG_DISABLE 
+#define RTC_MASKTAMPERFLAG_ENABLED      RTC_TAMPERMASK_FLAG_ENABLE 
+#define RTC_TAMPERERASEBACKUP_ENABLED   RTC_TAMPER_ERASE_BACKUP_ENABLE
+#define RTC_TAMPERERASEBACKUP_DISABLED  RTC_TAMPER_ERASE_BACKUP_DISABLE 
+#define RTC_MASKTAMPERFLAG_DISABLED     RTC_TAMPERMASK_FLAG_DISABLE 
+#define RTC_MASKTAMPERFLAG_ENABLED      RTC_TAMPERMASK_FLAG_ENABLE
+#define RTC_TAMPER1_2_INTERRUPT         RTC_ALL_TAMPER_INTERRUPT 
+#define RTC_TAMPER1_2_3_INTERRUPT       RTC_ALL_TAMPER_INTERRUPT 
+
+#define RTC_TIMESTAMPPIN_PC13  RTC_TIMESTAMPPIN_DEFAULT
+#define RTC_TIMESTAMPPIN_PA0 RTC_TIMESTAMPPIN_POS1 
+#define RTC_TIMESTAMPPIN_PI8 RTC_TIMESTAMPPIN_POS1
+#define RTC_TIMESTAMPPIN_PC1   RTC_TIMESTAMPPIN_POS2
+
+#define RTC_OUTPUT_REMAP_PC13  RTC_OUTPUT_REMAP_NONE
+#define RTC_OUTPUT_REMAP_PB14  RTC_OUTPUT_REMAP_POS1
+#define RTC_OUTPUT_REMAP_PB2   RTC_OUTPUT_REMAP_POS1
+
+#define RTC_TAMPERPIN_PC13 RTC_TAMPERPIN_DEFAULT 
+#define RTC_TAMPERPIN_PA0  RTC_TAMPERPIN_POS1 
+#define RTC_TAMPERPIN_PI8  RTC_TAMPERPIN_POS1
+
+/**
+  * @}
+  */
+
+  
+/** @defgroup HAL_SMARTCARD_Aliased_Defines HAL SMARTCARD Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define SMARTCARD_NACK_ENABLED                  SMARTCARD_NACK_ENABLE
+#define SMARTCARD_NACK_DISABLED                 SMARTCARD_NACK_DISABLE
+
+#define SMARTCARD_ONEBIT_SAMPLING_DISABLED      SMARTCARD_ONE_BIT_SAMPLE_DISABLE
+#define SMARTCARD_ONEBIT_SAMPLING_ENABLED       SMARTCARD_ONE_BIT_SAMPLE_ENABLE
+#define SMARTCARD_ONEBIT_SAMPLING_DISABLE       SMARTCARD_ONE_BIT_SAMPLE_DISABLE
+#define SMARTCARD_ONEBIT_SAMPLING_ENABLE        SMARTCARD_ONE_BIT_SAMPLE_ENABLE
+
+#define SMARTCARD_TIMEOUT_DISABLED              SMARTCARD_TIMEOUT_DISABLE
+#define SMARTCARD_TIMEOUT_ENABLED               SMARTCARD_TIMEOUT_ENABLE
+
+#define SMARTCARD_LASTBIT_DISABLED              SMARTCARD_LASTBIT_DISABLE
+#define SMARTCARD_LASTBIT_ENABLED               SMARTCARD_LASTBIT_ENABLE
+/**
+  * @}
+  */
+
+  
+/** @defgroup HAL_SMBUS_Aliased_Defines HAL SMBUS Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define SMBUS_DUALADDRESS_DISABLED      SMBUS_DUALADDRESS_DISABLE
+#define SMBUS_DUALADDRESS_ENABLED       SMBUS_DUALADDRESS_ENABLE
+#define SMBUS_GENERALCALL_DISABLED      SMBUS_GENERALCALL_DISABLE
+#define SMBUS_GENERALCALL_ENABLED       SMBUS_GENERALCALL_ENABLE
+#define SMBUS_NOSTRETCH_DISABLED        SMBUS_NOSTRETCH_DISABLE
+#define SMBUS_NOSTRETCH_ENABLED         SMBUS_NOSTRETCH_ENABLE
+#define SMBUS_ANALOGFILTER_ENABLED      SMBUS_ANALOGFILTER_ENABLE
+#define SMBUS_ANALOGFILTER_DISABLED     SMBUS_ANALOGFILTER_DISABLE
+#define SMBUS_PEC_DISABLED              SMBUS_PEC_DISABLE
+#define SMBUS_PEC_ENABLED               SMBUS_PEC_ENABLE
+#define HAL_SMBUS_STATE_SLAVE_LISTEN    HAL_SMBUS_STATE_LISTEN
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_SPI_Aliased_Defines HAL SPI Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define SPI_TIMODE_DISABLED             SPI_TIMODE_DISABLE
+#define SPI_TIMODE_ENABLED              SPI_TIMODE_ENABLE
+
+#define SPI_CRCCALCULATION_DISABLED     SPI_CRCCALCULATION_DISABLE
+#define SPI_CRCCALCULATION_ENABLED      SPI_CRCCALCULATION_ENABLE
+
+#define SPI_NSS_PULSE_DISABLED          SPI_NSS_PULSE_DISABLE
+#define SPI_NSS_PULSE_ENABLED           SPI_NSS_PULSE_ENABLE
+
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_TIM_Aliased_Defines HAL TIM Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define CCER_CCxE_MASK                   TIM_CCER_CCxE_MASK
+#define CCER_CCxNE_MASK                  TIM_CCER_CCxNE_MASK
+  
+#define TIM_DMABase_CR1                  TIM_DMABASE_CR1
+#define TIM_DMABase_CR2                  TIM_DMABASE_CR2
+#define TIM_DMABase_SMCR                 TIM_DMABASE_SMCR
+#define TIM_DMABase_DIER                 TIM_DMABASE_DIER
+#define TIM_DMABase_SR                   TIM_DMABASE_SR
+#define TIM_DMABase_EGR                  TIM_DMABASE_EGR
+#define TIM_DMABase_CCMR1                TIM_DMABASE_CCMR1
+#define TIM_DMABase_CCMR2                TIM_DMABASE_CCMR2
+#define TIM_DMABase_CCER                 TIM_DMABASE_CCER
+#define TIM_DMABase_CNT                  TIM_DMABASE_CNT
+#define TIM_DMABase_PSC                  TIM_DMABASE_PSC
+#define TIM_DMABase_ARR                  TIM_DMABASE_ARR
+#define TIM_DMABase_RCR                  TIM_DMABASE_RCR
+#define TIM_DMABase_CCR1                 TIM_DMABASE_CCR1
+#define TIM_DMABase_CCR2                 TIM_DMABASE_CCR2
+#define TIM_DMABase_CCR3                 TIM_DMABASE_CCR3
+#define TIM_DMABase_CCR4                 TIM_DMABASE_CCR4
+#define TIM_DMABase_BDTR                 TIM_DMABASE_BDTR
+#define TIM_DMABase_DCR                  TIM_DMABASE_DCR
+#define TIM_DMABase_DMAR                 TIM_DMABASE_DMAR
+#define TIM_DMABase_OR1                  TIM_DMABASE_OR1
+#define TIM_DMABase_CCMR3                TIM_DMABASE_CCMR3
+#define TIM_DMABase_CCR5                 TIM_DMABASE_CCR5
+#define TIM_DMABase_CCR6                 TIM_DMABASE_CCR6
+#define TIM_DMABase_OR2                  TIM_DMABASE_OR2
+#define TIM_DMABase_OR3                  TIM_DMABASE_OR3
+#define TIM_DMABase_OR                   TIM_DMABASE_OR
+
+#define TIM_EventSource_Update           TIM_EVENTSOURCE_UPDATE
+#define TIM_EventSource_CC1              TIM_EVENTSOURCE_CC1
+#define TIM_EventSource_CC2              TIM_EVENTSOURCE_CC2
+#define TIM_EventSource_CC3              TIM_EVENTSOURCE_CC3
+#define TIM_EventSource_CC4              TIM_EVENTSOURCE_CC4
+#define TIM_EventSource_COM              TIM_EVENTSOURCE_COM
+#define TIM_EventSource_Trigger          TIM_EVENTSOURCE_TRIGGER
+#define TIM_EventSource_Break            TIM_EVENTSOURCE_BREAK
+#define TIM_EventSource_Break2           TIM_EVENTSOURCE_BREAK2
+
+#define TIM_DMABurstLength_1Transfer     TIM_DMABURSTLENGTH_1TRANSFER
+#define TIM_DMABurstLength_2Transfers    TIM_DMABURSTLENGTH_2TRANSFERS
+#define TIM_DMABurstLength_3Transfers    TIM_DMABURSTLENGTH_3TRANSFERS
+#define TIM_DMABurstLength_4Transfers    TIM_DMABURSTLENGTH_4TRANSFERS
+#define TIM_DMABurstLength_5Transfers    TIM_DMABURSTLENGTH_5TRANSFERS
+#define TIM_DMABurstLength_6Transfers    TIM_DMABURSTLENGTH_6TRANSFERS
+#define TIM_DMABurstLength_7Transfers    TIM_DMABURSTLENGTH_7TRANSFERS
+#define TIM_DMABurstLength_8Transfers    TIM_DMABURSTLENGTH_8TRANSFERS
+#define TIM_DMABurstLength_9Transfers    TIM_DMABURSTLENGTH_9TRANSFERS
+#define TIM_DMABurstLength_10Transfers   TIM_DMABURSTLENGTH_10TRANSFERS
+#define TIM_DMABurstLength_11Transfers   TIM_DMABURSTLENGTH_11TRANSFERS
+#define TIM_DMABurstLength_12Transfers   TIM_DMABURSTLENGTH_12TRANSFERS
+#define TIM_DMABurstLength_13Transfers   TIM_DMABURSTLENGTH_13TRANSFERS
+#define TIM_DMABurstLength_14Transfers   TIM_DMABURSTLENGTH_14TRANSFERS
+#define TIM_DMABurstLength_15Transfers   TIM_DMABURSTLENGTH_15TRANSFERS
+#define TIM_DMABurstLength_16Transfers   TIM_DMABURSTLENGTH_16TRANSFERS
+#define TIM_DMABurstLength_17Transfers   TIM_DMABURSTLENGTH_17TRANSFERS
+#define TIM_DMABurstLength_18Transfers   TIM_DMABURSTLENGTH_18TRANSFERS
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_TSC_Aliased_Defines HAL TSC Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define TSC_SYNC_POL_FALL        TSC_SYNC_POLARITY_FALLING
+#define TSC_SYNC_POL_RISE_HIGH   TSC_SYNC_POLARITY_RISING
+/**
+  * @}
+  */
+
+/** @defgroup HAL_UART_Aliased_Defines HAL UART Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define UART_ONEBIT_SAMPLING_DISABLED   UART_ONE_BIT_SAMPLE_DISABLE
+#define UART_ONEBIT_SAMPLING_ENABLED    UART_ONE_BIT_SAMPLE_ENABLE
+#define UART_ONE_BIT_SAMPLE_DISABLED    UART_ONE_BIT_SAMPLE_DISABLE
+#define UART_ONE_BIT_SAMPLE_ENABLED     UART_ONE_BIT_SAMPLE_ENABLE
+
+#define __HAL_UART_ONEBIT_ENABLE        __HAL_UART_ONE_BIT_SAMPLE_ENABLE
+#define __HAL_UART_ONEBIT_DISABLE       __HAL_UART_ONE_BIT_SAMPLE_DISABLE
+
+#define __DIV_SAMPLING16                UART_DIV_SAMPLING16
+#define __DIVMANT_SAMPLING16            UART_DIVMANT_SAMPLING16
+#define __DIVFRAQ_SAMPLING16            UART_DIVFRAQ_SAMPLING16
+#define __UART_BRR_SAMPLING16           UART_BRR_SAMPLING16
+
+#define __DIV_SAMPLING8                 UART_DIV_SAMPLING8
+#define __DIVMANT_SAMPLING8             UART_DIVMANT_SAMPLING8
+#define __DIVFRAQ_SAMPLING8             UART_DIVFRAQ_SAMPLING8
+#define __UART_BRR_SAMPLING8            UART_BRR_SAMPLING8
+
+#define UART_WAKEUPMETHODE_IDLELINE     UART_WAKEUPMETHOD_IDLELINE
+#define UART_WAKEUPMETHODE_ADDRESSMARK  UART_WAKEUPMETHOD_ADDRESSMARK
+
+/**
+  * @}
+  */
+
+  
+/** @defgroup HAL_USART_Aliased_Defines HAL USART Aliased Defines maintained for legacy purpose
+  * @{
+  */
+
+#define USART_CLOCK_DISABLED            USART_CLOCK_DISABLE
+#define USART_CLOCK_ENABLED             USART_CLOCK_ENABLE
+
+#define USARTNACK_ENABLED               USART_NACK_ENABLE
+#define USARTNACK_DISABLED              USART_NACK_DISABLE
+/**
+  * @}
+  */
+
+/** @defgroup HAL_WWDG_Aliased_Defines HAL WWDG Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define CFR_BASE                    WWDG_CFR_BASE
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_CAN_Aliased_Defines HAL CAN Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define CAN_FilterFIFO0             CAN_FILTER_FIFO0
+#define CAN_FilterFIFO1             CAN_FILTER_FIFO1
+#define CAN_IT_RQCP0                CAN_IT_TME
+#define CAN_IT_RQCP1                CAN_IT_TME
+#define CAN_IT_RQCP2                CAN_IT_TME
+#define INAK_TIMEOUT                CAN_TIMEOUT_VALUE
+#define SLAK_TIMEOUT                CAN_TIMEOUT_VALUE
+#define CAN_TXSTATUS_FAILED         ((uint8_t)0x00U)
+#define CAN_TXSTATUS_OK             ((uint8_t)0x01U)
+#define CAN_TXSTATUS_PENDING        ((uint8_t)0x02U)
+
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_ETH_Aliased_Defines HAL ETH Aliased Defines maintained for legacy purpose
+  * @{
+  */
+
+#define VLAN_TAG                ETH_VLAN_TAG
+#define MIN_ETH_PAYLOAD         ETH_MIN_ETH_PAYLOAD
+#define MAX_ETH_PAYLOAD         ETH_MAX_ETH_PAYLOAD
+#define JUMBO_FRAME_PAYLOAD     ETH_JUMBO_FRAME_PAYLOAD
+#define MACMIIAR_CR_MASK        ETH_MACMIIAR_CR_MASK
+#define MACCR_CLEAR_MASK        ETH_MACCR_CLEAR_MASK
+#define MACFCR_CLEAR_MASK       ETH_MACFCR_CLEAR_MASK
+#define DMAOMR_CLEAR_MASK       ETH_DMAOMR_CLEAR_MASK
+
+#define ETH_MMCCR              ((uint32_t)0x00000100U)  
+#define ETH_MMCRIR             ((uint32_t)0x00000104U)  
+#define ETH_MMCTIR             ((uint32_t)0x00000108U)  
+#define ETH_MMCRIMR            ((uint32_t)0x0000010CU)  
+#define ETH_MMCTIMR            ((uint32_t)0x00000110U)  
+#define ETH_MMCTGFSCCR         ((uint32_t)0x0000014CU)  
+#define ETH_MMCTGFMSCCR        ((uint32_t)0x00000150U)  
+#define ETH_MMCTGFCR           ((uint32_t)0x00000168U)  
+#define ETH_MMCRFCECR          ((uint32_t)0x00000194U)  
+#define ETH_MMCRFAECR          ((uint32_t)0x00000198U)  
+#define ETH_MMCRGUFCR          ((uint32_t)0x000001C4U)
+ 
+#define ETH_MAC_TXFIFO_FULL          ((uint32_t)0x02000000)  /* Tx FIFO full */
+#define ETH_MAC_TXFIFONOT_EMPTY      ((uint32_t)0x01000000)  /* Tx FIFO not empty */
+#define ETH_MAC_TXFIFO_WRITE_ACTIVE  ((uint32_t)0x00400000)  /* Tx FIFO write active */
+#define ETH_MAC_TXFIFO_IDLE     ((uint32_t)0x00000000)  /* Tx FIFO read status: Idle */
+#define ETH_MAC_TXFIFO_READ     ((uint32_t)0x00100000)  /* Tx FIFO read status: Read (transferring data to the MAC transmitter) */
+#define ETH_MAC_TXFIFO_WAITING  ((uint32_t)0x00200000)  /* Tx FIFO read status: Waiting for TxStatus from MAC transmitter */
+#define ETH_MAC_TXFIFO_WRITING  ((uint32_t)0x00300000)  /* Tx FIFO read status: Writing the received TxStatus or flushing the TxFIFO */
+#define ETH_MAC_TRANSMISSION_PAUSE     ((uint32_t)0x00080000)  /* MAC transmitter in pause */
+#define ETH_MAC_TRANSMITFRAMECONTROLLER_IDLE            ((uint32_t)0x00000000)  /* MAC transmit frame controller: Idle */
+#define ETH_MAC_TRANSMITFRAMECONTROLLER_WAITING         ((uint32_t)0x00020000)  /* MAC transmit frame controller: Waiting for Status of previous frame or IFG/backoff period to be over */
+#define ETH_MAC_TRANSMITFRAMECONTROLLER_GENRATING_PCF   ((uint32_t)0x00040000)  /* MAC transmit frame controller: Generating and transmitting a Pause control frame (in full duplex mode) */
+#define ETH_MAC_TRANSMITFRAMECONTROLLER_TRANSFERRING    ((uint32_t)0x00060000)  /* MAC transmit frame controller: Transferring input frame for transmission */
+#define ETH_MAC_MII_TRANSMIT_ACTIVE      ((uint32_t)0x00010000)  /* MAC MII transmit engine active */
+#define ETH_MAC_RXFIFO_EMPTY             ((uint32_t)0x00000000)  /* Rx FIFO fill level: empty */
+#define ETH_MAC_RXFIFO_BELOW_THRESHOLD   ((uint32_t)0x00000100)  /* Rx FIFO fill level: fill-level below flow-control de-activate threshold */
+#define ETH_MAC_RXFIFO_ABOVE_THRESHOLD   ((uint32_t)0x00000200)  /* Rx FIFO fill level: fill-level above flow-control activate threshold */
+#define ETH_MAC_RXFIFO_FULL              ((uint32_t)0x00000300)  /* Rx FIFO fill level: full */
+#if defined(STM32F1)
+#else
+#define ETH_MAC_READCONTROLLER_IDLE               ((uint32_t)0x00000000)  /* Rx FIFO read controller IDLE state */
+#define ETH_MAC_READCONTROLLER_READING_DATA       ((uint32_t)0x00000020)  /* Rx FIFO read controller Reading frame data */
+#define ETH_MAC_READCONTROLLER_READING_STATUS     ((uint32_t)0x00000040)  /* Rx FIFO read controller Reading frame status (or time-stamp) */
+#endif
+#define ETH_MAC_READCONTROLLER_FLUSHING           ((uint32_t)0x00000060)  /* Rx FIFO read controller Flushing the frame data and status */
+#define ETH_MAC_RXFIFO_WRITE_ACTIVE     ((uint32_t)0x00000010)  /* Rx FIFO write controller active */
+#define ETH_MAC_SMALL_FIFO_NOTACTIVE    ((uint32_t)0x00000000)  /* MAC small FIFO read / write controllers not active */
+#define ETH_MAC_SMALL_FIFO_READ_ACTIVE  ((uint32_t)0x00000002)  /* MAC small FIFO read controller active */
+#define ETH_MAC_SMALL_FIFO_WRITE_ACTIVE ((uint32_t)0x00000004)  /* MAC small FIFO write controller active */
+#define ETH_MAC_SMALL_FIFO_RW_ACTIVE    ((uint32_t)0x00000006)  /* MAC small FIFO read / write controllers active */
+#define ETH_MAC_MII_RECEIVE_PROTOCOL_ACTIVE   ((uint32_t)0x00000001)  /* MAC MII receive protocol engine active */
+
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_DCMI_Aliased_Defines HAL DCMI Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define HAL_DCMI_ERROR_OVF      HAL_DCMI_ERROR_OVR
+#define DCMI_IT_OVF             DCMI_IT_OVR
+#define DCMI_FLAG_OVFRI         DCMI_FLAG_OVRRI
+#define DCMI_FLAG_OVFMI         DCMI_FLAG_OVRMI
+
+#define HAL_DCMI_ConfigCROP     HAL_DCMI_ConfigCrop
+#define HAL_DCMI_EnableCROP     HAL_DCMI_EnableCrop
+#define HAL_DCMI_DisableCROP    HAL_DCMI_DisableCrop
+
+/**
+  * @}
+  */  
+  
+#if defined(STM32L4xx) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) ||\
+    defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
+/** @defgroup HAL_DMA2D_Aliased_Defines HAL DMA2D Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define DMA2D_ARGB8888          DMA2D_OUTPUT_ARGB8888
+#define DMA2D_RGB888            DMA2D_OUTPUT_RGB888  
+#define DMA2D_RGB565            DMA2D_OUTPUT_RGB565  
+#define DMA2D_ARGB1555          DMA2D_OUTPUT_ARGB1555
+#define DMA2D_ARGB4444          DMA2D_OUTPUT_ARGB4444
+
+#define CM_ARGB8888             DMA2D_INPUT_ARGB8888
+#define CM_RGB888               DMA2D_INPUT_RGB888  
+#define CM_RGB565               DMA2D_INPUT_RGB565  
+#define CM_ARGB1555             DMA2D_INPUT_ARGB1555
+#define CM_ARGB4444             DMA2D_INPUT_ARGB4444
+#define CM_L8                   DMA2D_INPUT_L8      
+#define CM_AL44                 DMA2D_INPUT_AL44    
+#define CM_AL88                 DMA2D_INPUT_AL88    
+#define CM_L4                   DMA2D_INPUT_L4      
+#define CM_A8                   DMA2D_INPUT_A8      
+#define CM_A4                   DMA2D_INPUT_A4      
+/**
+  * @}
+  */    
+#endif  /* STM32L4xx ||  STM32F7*/
+
+/** @defgroup HAL_PPP_Aliased_Defines HAL PPP Aliased Defines maintained for legacy purpose
+  * @{
+  */
+  
+/**
+  * @}
+  */
+
+/* Exported functions --------------------------------------------------------*/
+
+/** @defgroup HAL_CRYP_Aliased_Functions HAL CRYP Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#define HAL_CRYP_ComputationCpltCallback     HAL_CRYPEx_ComputationCpltCallback
+/**
+  * @}
+  */  
+
+/** @defgroup HAL_HASH_Aliased_Functions HAL HASH Aliased Functions maintained for legacy purpose
+  * @{
+  */ 
+#define HAL_HASH_STATETypeDef        HAL_HASH_StateTypeDef
+#define HAL_HASHPhaseTypeDef         HAL_HASH_PhaseTypeDef
+#define HAL_HMAC_MD5_Finish          HAL_HASH_MD5_Finish
+#define HAL_HMAC_SHA1_Finish         HAL_HASH_SHA1_Finish
+#define HAL_HMAC_SHA224_Finish       HAL_HASH_SHA224_Finish
+#define HAL_HMAC_SHA256_Finish       HAL_HASH_SHA256_Finish
+
+/*HASH Algorithm Selection*/
+
+#define HASH_AlgoSelection_SHA1      HASH_ALGOSELECTION_SHA1 
+#define HASH_AlgoSelection_SHA224    HASH_ALGOSELECTION_SHA224
+#define HASH_AlgoSelection_SHA256    HASH_ALGOSELECTION_SHA256
+#define HASH_AlgoSelection_MD5       HASH_ALGOSELECTION_MD5
+
+#define HASH_AlgoMode_HASH         HASH_ALGOMODE_HASH 
+#define HASH_AlgoMode_HMAC         HASH_ALGOMODE_HMAC
+
+#define HASH_HMACKeyType_ShortKey  HASH_HMAC_KEYTYPE_SHORTKEY
+#define HASH_HMACKeyType_LongKey   HASH_HMAC_KEYTYPE_LONGKEY
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_Aliased_Functions HAL Generic Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#define HAL_EnableDBGSleepMode HAL_DBGMCU_EnableDBGSleepMode
+#define HAL_DisableDBGSleepMode HAL_DBGMCU_DisableDBGSleepMode
+#define HAL_EnableDBGStopMode HAL_DBGMCU_EnableDBGStopMode
+#define HAL_DisableDBGStopMode HAL_DBGMCU_DisableDBGStopMode
+#define HAL_EnableDBGStandbyMode HAL_DBGMCU_EnableDBGStandbyMode
+#define HAL_DisableDBGStandbyMode HAL_DBGMCU_DisableDBGStandbyMode
+#define HAL_DBG_LowPowerConfig(Periph, cmd) (((cmd)==ENABLE)? HAL_DBGMCU_DBG_EnableLowPowerConfig(Periph) : HAL_DBGMCU_DBG_DisableLowPowerConfig(Periph))
+#define HAL_VREFINT_OutputSelect  HAL_SYSCFG_VREFINT_OutputSelect
+#define HAL_Lock_Cmd(cmd) (((cmd)==ENABLE) ? HAL_SYSCFG_Enable_Lock_VREFINT() : HAL_SYSCFG_Disable_Lock_VREFINT())
+#if defined(STM32L0)
+#else
+#define HAL_VREFINT_Cmd(cmd) (((cmd)==ENABLE)? HAL_SYSCFG_EnableVREFINT() : HAL_SYSCFG_DisableVREFINT())
+#endif
+#define HAL_ADC_EnableBuffer_Cmd(cmd)  (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
+#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ?  HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
+/**
+  * @}
+  */
+
+/** @defgroup HAL_FLASH_Aliased_Functions HAL FLASH Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#define FLASH_HalfPageProgram      HAL_FLASHEx_HalfPageProgram
+#define FLASH_EnableRunPowerDown   HAL_FLASHEx_EnableRunPowerDown
+#define FLASH_DisableRunPowerDown  HAL_FLASHEx_DisableRunPowerDown
+#define HAL_DATA_EEPROMEx_Unlock   HAL_FLASHEx_DATAEEPROM_Unlock
+#define HAL_DATA_EEPROMEx_Lock     HAL_FLASHEx_DATAEEPROM_Lock
+#define HAL_DATA_EEPROMEx_Erase    HAL_FLASHEx_DATAEEPROM_Erase
+#define HAL_DATA_EEPROMEx_Program  HAL_FLASHEx_DATAEEPROM_Program
+
+ /**
+  * @}
+  */
+
+/** @defgroup HAL_I2C_Aliased_Functions HAL I2C Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#define HAL_I2CEx_AnalogFilter_Config         HAL_I2CEx_ConfigAnalogFilter
+#define HAL_I2CEx_DigitalFilter_Config        HAL_I2CEx_ConfigDigitalFilter
+#define HAL_FMPI2CEx_AnalogFilter_Config      HAL_FMPI2CEx_ConfigAnalogFilter
+#define HAL_FMPI2CEx_DigitalFilter_Config     HAL_FMPI2CEx_ConfigDigitalFilter
+
+#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
+ /**
+  * @}
+  */
+
+/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose
+  * @{
+  */
+#define HAL_PWR_PVDConfig                             HAL_PWR_ConfigPVD
+#define HAL_PWR_DisableBkUpReg                        HAL_PWREx_DisableBkUpReg
+#define HAL_PWR_DisableFlashPowerDown                 HAL_PWREx_DisableFlashPowerDown
+#define HAL_PWR_DisableVddio2Monitor                  HAL_PWREx_DisableVddio2Monitor
+#define HAL_PWR_EnableBkUpReg                         HAL_PWREx_EnableBkUpReg
+#define HAL_PWR_EnableFlashPowerDown                  HAL_PWREx_EnableFlashPowerDown
+#define HAL_PWR_EnableVddio2Monitor                   HAL_PWREx_EnableVddio2Monitor
+#define HAL_PWR_PVD_PVM_IRQHandler                    HAL_PWREx_PVD_PVM_IRQHandler
+#define HAL_PWR_PVDLevelConfig                        HAL_PWR_ConfigPVD
+#define HAL_PWR_Vddio2Monitor_IRQHandler              HAL_PWREx_Vddio2Monitor_IRQHandler
+#define HAL_PWR_Vddio2MonitorCallback                 HAL_PWREx_Vddio2MonitorCallback
+#define HAL_PWREx_ActivateOverDrive                   HAL_PWREx_EnableOverDrive
+#define HAL_PWREx_DeactivateOverDrive                 HAL_PWREx_DisableOverDrive
+#define HAL_PWREx_DisableSDADCAnalog                  HAL_PWREx_DisableSDADC
+#define HAL_PWREx_EnableSDADCAnalog                   HAL_PWREx_EnableSDADC
+#define HAL_PWREx_PVMConfig                           HAL_PWREx_ConfigPVM
+
+#define PWR_MODE_NORMAL                               PWR_PVD_MODE_NORMAL
+#define PWR_MODE_IT_RISING                            PWR_PVD_MODE_IT_RISING
+#define PWR_MODE_IT_FALLING                           PWR_PVD_MODE_IT_FALLING
+#define PWR_MODE_IT_RISING_FALLING                    PWR_PVD_MODE_IT_RISING_FALLING
+#define PWR_MODE_EVENT_RISING                         PWR_PVD_MODE_EVENT_RISING
+#define PWR_MODE_EVENT_FALLING                        PWR_PVD_MODE_EVENT_FALLING
+#define PWR_MODE_EVENT_RISING_FALLING                 PWR_PVD_MODE_EVENT_RISING_FALLING
+
+#define CR_OFFSET_BB                                  PWR_CR_OFFSET_BB
+#define CSR_OFFSET_BB                                 PWR_CSR_OFFSET_BB
+
+#define DBP_BitNumber                                 DBP_BIT_NUMBER
+#define PVDE_BitNumber                                PVDE_BIT_NUMBER
+#define PMODE_BitNumber                               PMODE_BIT_NUMBER
+#define EWUP_BitNumber                                EWUP_BIT_NUMBER
+#define FPDS_BitNumber                                FPDS_BIT_NUMBER
+#define ODEN_BitNumber                                ODEN_BIT_NUMBER
+#define ODSWEN_BitNumber                              ODSWEN_BIT_NUMBER
+#define MRLVDS_BitNumber                              MRLVDS_BIT_NUMBER
+#define LPLVDS_BitNumber                              LPLVDS_BIT_NUMBER
+#define BRE_BitNumber                                 BRE_BIT_NUMBER
+
+#define PWR_MODE_EVT                                  PWR_PVD_MODE_NORMAL
+ 
+ /**
+  * @}
+  */  
+  
+/** @defgroup HAL_SMBUS_Aliased_Functions HAL SMBUS Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#define HAL_SMBUS_Slave_Listen_IT          HAL_SMBUS_EnableListen_IT
+#define HAL_SMBUS_SlaveAddrCallback        HAL_SMBUS_AddrCallback         
+#define HAL_SMBUS_SlaveListenCpltCallback  HAL_SMBUS_ListenCpltCallback   
+/**
+  * @}
+  */
+
+/** @defgroup HAL_SPI_Aliased_Functions HAL SPI Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#define HAL_SPI_FlushRxFifo                HAL_SPIEx_FlushRxFifo
+/**
+  * @}
+  */  
+
+/** @defgroup HAL_TIM_Aliased_Functions HAL TIM Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#define HAL_TIM_DMADelayPulseCplt                       TIM_DMADelayPulseCplt
+#define HAL_TIM_DMAError                                TIM_DMAError
+#define HAL_TIM_DMACaptureCplt                          TIM_DMACaptureCplt
+#define HAL_TIMEx_DMACommutationCplt                    TIMEx_DMACommutationCplt
+/**
+  * @}
+  */
+   
+/** @defgroup HAL_UART_Aliased_Functions HAL UART Aliased Functions maintained for legacy purpose
+  * @{
+  */ 
+#define HAL_UART_WakeupCallback HAL_UARTEx_WakeupCallback
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_LTDC_Aliased_Functions HAL LTDC Aliased Functions maintained for legacy purpose
+  * @{
+  */ 
+#define HAL_LTDC_LineEvenCallback HAL_LTDC_LineEventCallback
+/**
+  * @}
+  */  
+   
+  
+/** @defgroup HAL_PPP_Aliased_Functions HAL PPP Aliased Functions maintained for legacy purpose
+  * @{
+  */
+  
+/**
+  * @}
+  */
+
+/* Exported macros ------------------------------------------------------------*/
+
+/** @defgroup HAL_AES_Aliased_Macros HAL CRYP Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define AES_IT_CC                      CRYP_IT_CC
+#define AES_IT_ERR                     CRYP_IT_ERR
+#define AES_FLAG_CCF                   CRYP_FLAG_CCF
+/**
+  * @}
+  */  
+  
+/** @defgroup HAL_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __HAL_GET_BOOT_MODE                   __HAL_SYSCFG_GET_BOOT_MODE
+#define __HAL_REMAPMEMORY_FLASH               __HAL_SYSCFG_REMAPMEMORY_FLASH
+#define __HAL_REMAPMEMORY_SYSTEMFLASH         __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH
+#define __HAL_REMAPMEMORY_SRAM                __HAL_SYSCFG_REMAPMEMORY_SRAM
+#define __HAL_REMAPMEMORY_FMC                 __HAL_SYSCFG_REMAPMEMORY_FMC
+#define __HAL_REMAPMEMORY_FMC_SDRAM           __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM 
+#define __HAL_REMAPMEMORY_FSMC                __HAL_SYSCFG_REMAPMEMORY_FSMC
+#define __HAL_REMAPMEMORY_QUADSPI             __HAL_SYSCFG_REMAPMEMORY_QUADSPI
+#define __HAL_FMC_BANK                        __HAL_SYSCFG_FMC_BANK
+#define __HAL_GET_FLAG                        __HAL_SYSCFG_GET_FLAG
+#define __HAL_CLEAR_FLAG                      __HAL_SYSCFG_CLEAR_FLAG
+#define __HAL_VREFINT_OUT_ENABLE              __HAL_SYSCFG_VREFINT_OUT_ENABLE
+#define __HAL_VREFINT_OUT_DISABLE             __HAL_SYSCFG_VREFINT_OUT_DISABLE
+
+#define SYSCFG_FLAG_VREF_READY                SYSCFG_FLAG_VREFINT_READY
+#define SYSCFG_FLAG_RC48                      RCC_FLAG_HSI48
+#define IS_SYSCFG_FASTMODEPLUS_CONFIG         IS_I2C_FASTMODEPLUS
+#define UFB_MODE_BitNumber                    UFB_MODE_BIT_NUMBER
+#define CMP_PD_BitNumber                      CMP_PD_BIT_NUMBER
+
+/**
+  * @}
+  */
+
+   
+/** @defgroup HAL_ADC_Aliased_Macros HAL ADC Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __ADC_ENABLE                                     __HAL_ADC_ENABLE
+#define __ADC_DISABLE                                    __HAL_ADC_DISABLE
+#define __HAL_ADC_ENABLING_CONDITIONS                    ADC_ENABLING_CONDITIONS
+#define __HAL_ADC_DISABLING_CONDITIONS                   ADC_DISABLING_CONDITIONS
+#define __HAL_ADC_IS_ENABLED                             ADC_IS_ENABLE
+#define __ADC_IS_ENABLED                                 ADC_IS_ENABLE
+#define __HAL_ADC_IS_SOFTWARE_START_REGULAR              ADC_IS_SOFTWARE_START_REGULAR
+#define __HAL_ADC_IS_SOFTWARE_START_INJECTED             ADC_IS_SOFTWARE_START_INJECTED
+#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED
+#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR          ADC_IS_CONVERSION_ONGOING_REGULAR
+#define __HAL_ADC_IS_CONVERSION_ONGOING_INJECTED         ADC_IS_CONVERSION_ONGOING_INJECTED
+#define __HAL_ADC_IS_CONVERSION_ONGOING                  ADC_IS_CONVERSION_ONGOING
+#define __HAL_ADC_CLEAR_ERRORCODE                        ADC_CLEAR_ERRORCODE
+
+#define __HAL_ADC_GET_RESOLUTION                         ADC_GET_RESOLUTION
+#define __HAL_ADC_JSQR_RK                                ADC_JSQR_RK
+#define __HAL_ADC_CFGR_AWD1CH                            ADC_CFGR_AWD1CH_SHIFT
+#define __HAL_ADC_CFGR_AWD23CR                           ADC_CFGR_AWD23CR
+#define __HAL_ADC_CFGR_INJECT_AUTO_CONVERSION            ADC_CFGR_INJECT_AUTO_CONVERSION
+#define __HAL_ADC_CFGR_INJECT_CONTEXT_QUEUE              ADC_CFGR_INJECT_CONTEXT_QUEUE
+#define __HAL_ADC_CFGR_INJECT_DISCCONTINUOUS             ADC_CFGR_INJECT_DISCCONTINUOUS
+#define __HAL_ADC_CFGR_REG_DISCCONTINUOUS                ADC_CFGR_REG_DISCCONTINUOUS
+#define __HAL_ADC_CFGR_DISCONTINUOUS_NUM                 ADC_CFGR_DISCONTINUOUS_NUM
+#define __HAL_ADC_CFGR_AUTOWAIT                          ADC_CFGR_AUTOWAIT
+#define __HAL_ADC_CFGR_CONTINUOUS                        ADC_CFGR_CONTINUOUS
+#define __HAL_ADC_CFGR_OVERRUN                           ADC_CFGR_OVERRUN
+#define __HAL_ADC_CFGR_DMACONTREQ                        ADC_CFGR_DMACONTREQ
+#define __HAL_ADC_CFGR_EXTSEL                            ADC_CFGR_EXTSEL_SET
+#define __HAL_ADC_JSQR_JEXTSEL                           ADC_JSQR_JEXTSEL_SET
+#define __HAL_ADC_OFR_CHANNEL                            ADC_OFR_CHANNEL
+#define __HAL_ADC_DIFSEL_CHANNEL                         ADC_DIFSEL_CHANNEL
+#define __HAL_ADC_CALFACT_DIFF_SET                       ADC_CALFACT_DIFF_SET
+#define __HAL_ADC_CALFACT_DIFF_GET                       ADC_CALFACT_DIFF_GET
+#define __HAL_ADC_TRX_HIGHTHRESHOLD                      ADC_TRX_HIGHTHRESHOLD
+
+#define __HAL_ADC_OFFSET_SHIFT_RESOLUTION                ADC_OFFSET_SHIFT_RESOLUTION
+#define __HAL_ADC_AWD1THRESHOLD_SHIFT_RESOLUTION         ADC_AWD1THRESHOLD_SHIFT_RESOLUTION
+#define __HAL_ADC_AWD23THRESHOLD_SHIFT_RESOLUTION        ADC_AWD23THRESHOLD_SHIFT_RESOLUTION
+#define __HAL_ADC_COMMON_REGISTER                        ADC_COMMON_REGISTER
+#define __HAL_ADC_COMMON_CCR_MULTI                       ADC_COMMON_CCR_MULTI
+#define __HAL_ADC_MULTIMODE_IS_ENABLED                   ADC_MULTIMODE_IS_ENABLE
+#define __ADC_MULTIMODE_IS_ENABLED                       ADC_MULTIMODE_IS_ENABLE
+#define __HAL_ADC_NONMULTIMODE_OR_MULTIMODEMASTER        ADC_NONMULTIMODE_OR_MULTIMODEMASTER
+#define __HAL_ADC_COMMON_ADC_OTHER                       ADC_COMMON_ADC_OTHER
+#define __HAL_ADC_MULTI_SLAVE                            ADC_MULTI_SLAVE
+
+#define __HAL_ADC_SQR1_L                                 ADC_SQR1_L_SHIFT
+#define __HAL_ADC_JSQR_JL                                ADC_JSQR_JL_SHIFT
+#define __HAL_ADC_JSQR_RK_JL                             ADC_JSQR_RK_JL
+#define __HAL_ADC_CR1_DISCONTINUOUS_NUM                  ADC_CR1_DISCONTINUOUS_NUM
+#define __HAL_ADC_CR1_SCAN                               ADC_CR1_SCAN_SET
+#define __HAL_ADC_CONVCYCLES_MAX_RANGE                   ADC_CONVCYCLES_MAX_RANGE
+#define __HAL_ADC_CLOCK_PRESCALER_RANGE                  ADC_CLOCK_PRESCALER_RANGE
+#define __HAL_ADC_GET_CLOCK_PRESCALER                    ADC_GET_CLOCK_PRESCALER
+
+#define __HAL_ADC_SQR1                                   ADC_SQR1
+#define __HAL_ADC_SMPR1                                  ADC_SMPR1
+#define __HAL_ADC_SMPR2                                  ADC_SMPR2
+#define __HAL_ADC_SQR3_RK                                ADC_SQR3_RK
+#define __HAL_ADC_SQR2_RK                                ADC_SQR2_RK
+#define __HAL_ADC_SQR1_RK                                ADC_SQR1_RK
+#define __HAL_ADC_CR2_CONTINUOUS                         ADC_CR2_CONTINUOUS
+#define __HAL_ADC_CR1_DISCONTINUOUS                      ADC_CR1_DISCONTINUOUS
+#define __HAL_ADC_CR1_SCANCONV                           ADC_CR1_SCANCONV
+#define __HAL_ADC_CR2_EOCSelection                       ADC_CR2_EOCSelection
+#define __HAL_ADC_CR2_DMAContReq                         ADC_CR2_DMAContReq
+#define __HAL_ADC_GET_RESOLUTION                         ADC_GET_RESOLUTION
+#define __HAL_ADC_JSQR                                   ADC_JSQR
+
+#define __HAL_ADC_CHSELR_CHANNEL                         ADC_CHSELR_CHANNEL
+#define __HAL_ADC_CFGR1_REG_DISCCONTINUOUS               ADC_CFGR1_REG_DISCCONTINUOUS
+#define __HAL_ADC_CFGR1_AUTOOFF                          ADC_CFGR1_AUTOOFF
+#define __HAL_ADC_CFGR1_AUTOWAIT                         ADC_CFGR1_AUTOWAIT
+#define __HAL_ADC_CFGR1_CONTINUOUS                       ADC_CFGR1_CONTINUOUS
+#define __HAL_ADC_CFGR1_OVERRUN                          ADC_CFGR1_OVERRUN
+#define __HAL_ADC_CFGR1_SCANDIR                          ADC_CFGR1_SCANDIR
+#define __HAL_ADC_CFGR1_DMACONTREQ                       ADC_CFGR1_DMACONTREQ
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __HAL_DHR12R1_ALIGNEMENT                        DAC_DHR12R1_ALIGNMENT
+#define __HAL_DHR12R2_ALIGNEMENT                        DAC_DHR12R2_ALIGNMENT
+#define __HAL_DHR12RD_ALIGNEMENT                        DAC_DHR12RD_ALIGNMENT
+#define IS_DAC_GENERATE_WAVE                            IS_DAC_WAVE
+
+/**
+  * @}
+  */
+   
+/** @defgroup HAL_DBGMCU_Aliased_Macros HAL DBGMCU Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __HAL_FREEZE_TIM1_DBGMCU __HAL_DBGMCU_FREEZE_TIM1
+#define __HAL_UNFREEZE_TIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM1
+#define __HAL_FREEZE_TIM2_DBGMCU __HAL_DBGMCU_FREEZE_TIM2
+#define __HAL_UNFREEZE_TIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM2
+#define __HAL_FREEZE_TIM3_DBGMCU __HAL_DBGMCU_FREEZE_TIM3
+#define __HAL_UNFREEZE_TIM3_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM3
+#define __HAL_FREEZE_TIM4_DBGMCU __HAL_DBGMCU_FREEZE_TIM4
+#define __HAL_UNFREEZE_TIM4_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM4
+#define __HAL_FREEZE_TIM5_DBGMCU __HAL_DBGMCU_FREEZE_TIM5
+#define __HAL_UNFREEZE_TIM5_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM5
+#define __HAL_FREEZE_TIM6_DBGMCU __HAL_DBGMCU_FREEZE_TIM6
+#define __HAL_UNFREEZE_TIM6_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM6
+#define __HAL_FREEZE_TIM7_DBGMCU __HAL_DBGMCU_FREEZE_TIM7
+#define __HAL_UNFREEZE_TIM7_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM7
+#define __HAL_FREEZE_TIM8_DBGMCU __HAL_DBGMCU_FREEZE_TIM8
+#define __HAL_UNFREEZE_TIM8_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM8
+
+#define __HAL_FREEZE_TIM9_DBGMCU __HAL_DBGMCU_FREEZE_TIM9
+#define __HAL_UNFREEZE_TIM9_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM9
+#define __HAL_FREEZE_TIM10_DBGMCU __HAL_DBGMCU_FREEZE_TIM10
+#define __HAL_UNFREEZE_TIM10_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM10
+#define __HAL_FREEZE_TIM11_DBGMCU __HAL_DBGMCU_FREEZE_TIM11
+#define __HAL_UNFREEZE_TIM11_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM11
+#define __HAL_FREEZE_TIM12_DBGMCU __HAL_DBGMCU_FREEZE_TIM12
+#define __HAL_UNFREEZE_TIM12_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM12
+#define __HAL_FREEZE_TIM13_DBGMCU __HAL_DBGMCU_FREEZE_TIM13
+#define __HAL_UNFREEZE_TIM13_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM13
+#define __HAL_FREEZE_TIM14_DBGMCU __HAL_DBGMCU_FREEZE_TIM14
+#define __HAL_UNFREEZE_TIM14_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM14
+#define __HAL_FREEZE_CAN2_DBGMCU __HAL_DBGMCU_FREEZE_CAN2
+#define __HAL_UNFREEZE_CAN2_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN2
+
+
+#define __HAL_FREEZE_TIM15_DBGMCU __HAL_DBGMCU_FREEZE_TIM15
+#define __HAL_UNFREEZE_TIM15_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM15
+#define __HAL_FREEZE_TIM16_DBGMCU __HAL_DBGMCU_FREEZE_TIM16
+#define __HAL_UNFREEZE_TIM16_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM16
+#define __HAL_FREEZE_TIM17_DBGMCU __HAL_DBGMCU_FREEZE_TIM17
+#define __HAL_UNFREEZE_TIM17_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM17
+#define __HAL_FREEZE_RTC_DBGMCU __HAL_DBGMCU_FREEZE_RTC
+#define __HAL_UNFREEZE_RTC_DBGMCU __HAL_DBGMCU_UNFREEZE_RTC
+#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG
+#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_WWDG
+#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG
+#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_IWDG
+#define __HAL_FREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT
+#define __HAL_UNFREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT
+#define __HAL_FREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT
+#define __HAL_UNFREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT
+#define __HAL_FREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT
+#define __HAL_UNFREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT
+#define __HAL_FREEZE_CAN1_DBGMCU __HAL_DBGMCU_FREEZE_CAN1
+#define __HAL_UNFREEZE_CAN1_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN1
+#define __HAL_FREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM1
+#define __HAL_UNFREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM1
+#define __HAL_FREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM2
+#define __HAL_UNFREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM2
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_COMP_Aliased_Macros HAL COMP Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#if defined(STM32F3)
+#define COMP_START                                       __HAL_COMP_ENABLE
+#define COMP_STOP                                        __HAL_COMP_DISABLE
+#define COMP_LOCK                                        __HAL_COMP_LOCK
+   
+#if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
+#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \
+                                                          __HAL_COMP_COMP6_EXTI_ENABLE_IT())
+#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \
+                                                          __HAL_COMP_COMP6_EXTI_DISABLE_IT())
+#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \
+                                                          __HAL_COMP_COMP6_EXTI_GET_FLAG())
+#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \
+                                                          __HAL_COMP_COMP6_EXTI_CLEAR_FLAG())
+# endif
+# if defined(STM32F302xE) || defined(STM32F302xC)
+#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \
+                                                          __HAL_COMP_COMP6_EXTI_ENABLE_IT())
+#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \
+                                                          __HAL_COMP_COMP6_EXTI_DISABLE_IT())
+#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \
+                                                          __HAL_COMP_COMP6_EXTI_GET_FLAG())
+#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \
+                                                          __HAL_COMP_COMP6_EXTI_CLEAR_FLAG())
+# endif
+# if defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F303xC) || defined(STM32F358xx)
+#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP7_EXTI_ENABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_RISING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP7_EXTI_DISABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP7_EXTI_ENABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP7_EXTI_DISABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_IT() : \
+                                                          __HAL_COMP_COMP7_EXTI_ENABLE_IT())
+#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_IT() : \
+                                                          ((__EXTILINE__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_IT() : \
+                                                          __HAL_COMP_COMP7_EXTI_DISABLE_IT())
+#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_GET_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_GET_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_GET_FLAG() : \
+                                                          __HAL_COMP_COMP7_EXTI_GET_FLAG())
+#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_CLEAR_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_CLEAR_FLAG() : \
+                                                          ((__FLAG__)  == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_CLEAR_FLAG() : \
+                                                          __HAL_COMP_COMP7_EXTI_CLEAR_FLAG())
+# endif
+# if defined(STM32F373xC) ||defined(STM32F378xx)
+#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \
+                                                          __HAL_COMP_COMP2_EXTI_ENABLE_IT())
+#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \
+                                                          __HAL_COMP_COMP2_EXTI_DISABLE_IT())
+#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \
+                                                          __HAL_COMP_COMP2_EXTI_GET_FLAG())
+#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \
+                                                          __HAL_COMP_COMP2_EXTI_CLEAR_FLAG())
+# endif
+#else
+#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \
+                                                          __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__)  (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \
+                                                          __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE())
+#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__)          (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \
+                                                          __HAL_COMP_COMP2_EXTI_ENABLE_IT())
+#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__)         (((__EXTILINE__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \
+                                                          __HAL_COMP_COMP2_EXTI_DISABLE_IT())
+#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__)               (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \
+                                                          __HAL_COMP_COMP2_EXTI_GET_FLAG())
+#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)             (((__FLAG__)  == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \
+                                                          __HAL_COMP_COMP2_EXTI_CLEAR_FLAG())
+#endif
+
+#define __HAL_COMP_GET_EXTI_LINE  COMP_GET_EXTI_LINE
+
+#if defined(STM32L0) || defined(STM32L4)
+/* Note: On these STM32 families, the only argument of this macro             */
+/*       is COMP_FLAG_LOCK.                                                   */
+/*       This macro is replaced by __HAL_COMP_IS_LOCKED with only HAL handle  */
+/*       argument.                                                            */
+#define __HAL_COMP_GET_FLAG(__HANDLE__, __FLAG__)  (__HAL_COMP_IS_LOCKED(__HANDLE__))
+#endif
+/**
+  * @}
+  */
+
+#if defined(STM32L0) || defined(STM32L4)
+/** @defgroup HAL_COMP_Aliased_Functions HAL COMP Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#define HAL_COMP_Start_IT       HAL_COMP_Start /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */
+#define HAL_COMP_Stop_IT        HAL_COMP_Stop  /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */
+/**
+  * @}
+  */
+#endif
+
+/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose
+  * @{
+  */
+
+#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_WAVE_NONE) || \
+                          ((WAVE) == DAC_WAVE_NOISE)|| \
+                          ((WAVE) == DAC_WAVE_TRIANGLE))
+  
+/**
+  * @}
+  */
+
+/** @defgroup HAL_FLASH_Aliased_Macros HAL FLASH Aliased Macros maintained for legacy purpose
+  * @{
+  */
+
+#define IS_WRPAREA          IS_OB_WRPAREA
+#define IS_TYPEPROGRAM      IS_FLASH_TYPEPROGRAM
+#define IS_TYPEPROGRAMFLASH IS_FLASH_TYPEPROGRAM
+#define IS_TYPEERASE        IS_FLASH_TYPEERASE
+#define IS_NBSECTORS        IS_FLASH_NBSECTORS
+#define IS_OB_WDG_SOURCE    IS_OB_IWDG_SOURCE
+
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_I2C_Aliased_Macros HAL I2C Aliased Macros maintained for legacy purpose
+  * @{
+  */
+  
+#define __HAL_I2C_RESET_CR2             I2C_RESET_CR2
+#define __HAL_I2C_GENERATE_START        I2C_GENERATE_START
+#define __HAL_I2C_FREQ_RANGE            I2C_FREQ_RANGE
+#define __HAL_I2C_RISE_TIME             I2C_RISE_TIME
+#define __HAL_I2C_SPEED_STANDARD        I2C_SPEED_STANDARD
+#define __HAL_I2C_SPEED_FAST            I2C_SPEED_FAST
+#define __HAL_I2C_SPEED                 I2C_SPEED
+#define __HAL_I2C_7BIT_ADD_WRITE        I2C_7BIT_ADD_WRITE
+#define __HAL_I2C_7BIT_ADD_READ         I2C_7BIT_ADD_READ
+#define __HAL_I2C_10BIT_ADDRESS         I2C_10BIT_ADDRESS
+#define __HAL_I2C_10BIT_HEADER_WRITE    I2C_10BIT_HEADER_WRITE
+#define __HAL_I2C_10BIT_HEADER_READ     I2C_10BIT_HEADER_READ
+#define __HAL_I2C_MEM_ADD_MSB           I2C_MEM_ADD_MSB
+#define __HAL_I2C_MEM_ADD_LSB           I2C_MEM_ADD_LSB
+#define __HAL_I2C_FREQRANGE             I2C_FREQRANGE
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_I2S_Aliased_Macros HAL I2S Aliased Macros maintained for legacy purpose
+  * @{
+  */
+  
+#define IS_I2S_INSTANCE                 IS_I2S_ALL_INSTANCE
+#define IS_I2S_INSTANCE_EXT             IS_I2S_ALL_INSTANCE_EXT
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_IRDA_Aliased_Macros HAL IRDA Aliased Macros maintained for legacy purpose
+  * @{
+  */
+  
+#define __IRDA_DISABLE                  __HAL_IRDA_DISABLE
+#define __IRDA_ENABLE                   __HAL_IRDA_ENABLE
+
+#define __HAL_IRDA_GETCLOCKSOURCE       IRDA_GETCLOCKSOURCE
+#define __HAL_IRDA_MASK_COMPUTATION     IRDA_MASK_COMPUTATION
+#define __IRDA_GETCLOCKSOURCE           IRDA_GETCLOCKSOURCE
+#define __IRDA_MASK_COMPUTATION         IRDA_MASK_COMPUTATION
+
+#define IS_IRDA_ONEBIT_SAMPLE           IS_IRDA_ONE_BIT_SAMPLE                  
+
+
+/**
+  * @}
+  */
+
+
+/** @defgroup HAL_IWDG_Aliased_Macros HAL IWDG Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __HAL_IWDG_ENABLE_WRITE_ACCESS  IWDG_ENABLE_WRITE_ACCESS
+#define __HAL_IWDG_DISABLE_WRITE_ACCESS IWDG_DISABLE_WRITE_ACCESS
+/**
+  * @}
+  */
+
+
+/** @defgroup HAL_LPTIM_Aliased_Macros HAL LPTIM Aliased Macros maintained for legacy purpose
+  * @{
+  */
+
+#define __HAL_LPTIM_ENABLE_INTERRUPT    __HAL_LPTIM_ENABLE_IT
+#define __HAL_LPTIM_DISABLE_INTERRUPT   __HAL_LPTIM_DISABLE_IT
+#define __HAL_LPTIM_GET_ITSTATUS        __HAL_LPTIM_GET_IT_SOURCE
+
+/**
+  * @}
+  */
+  
+  
+/** @defgroup HAL_OPAMP_Aliased_Macros HAL OPAMP Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __OPAMP_CSR_OPAXPD                OPAMP_CSR_OPAXPD
+#define __OPAMP_CSR_S3SELX                OPAMP_CSR_S3SELX
+#define __OPAMP_CSR_S4SELX                OPAMP_CSR_S4SELX
+#define __OPAMP_CSR_S5SELX                OPAMP_CSR_S5SELX
+#define __OPAMP_CSR_S6SELX                OPAMP_CSR_S6SELX
+#define __OPAMP_CSR_OPAXCAL_L             OPAMP_CSR_OPAXCAL_L
+#define __OPAMP_CSR_OPAXCAL_H             OPAMP_CSR_OPAXCAL_H
+#define __OPAMP_CSR_OPAXLPM               OPAMP_CSR_OPAXLPM
+#define __OPAMP_CSR_ALL_SWITCHES          OPAMP_CSR_ALL_SWITCHES
+#define __OPAMP_CSR_ANAWSELX              OPAMP_CSR_ANAWSELX
+#define __OPAMP_CSR_OPAXCALOUT            OPAMP_CSR_OPAXCALOUT
+#define __OPAMP_OFFSET_TRIM_BITSPOSITION  OPAMP_OFFSET_TRIM_BITSPOSITION
+#define __OPAMP_OFFSET_TRIM_SET           OPAMP_OFFSET_TRIM_SET
+
+/**
+  * @}
+  */
+
+
+/** @defgroup HAL_PWR_Aliased_Macros HAL PWR Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __HAL_PVD_EVENT_DISABLE                                  __HAL_PWR_PVD_EXTI_DISABLE_EVENT
+#define __HAL_PVD_EVENT_ENABLE                                   __HAL_PWR_PVD_EXTI_ENABLE_EVENT
+#define __HAL_PVD_EXTI_FALLINGTRIGGER_DISABLE                    __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE
+#define __HAL_PVD_EXTI_FALLINGTRIGGER_ENABLE                     __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE
+#define __HAL_PVD_EXTI_RISINGTRIGGER_DISABLE                     __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE
+#define __HAL_PVD_EXTI_RISINGTRIGGER_ENABLE                      __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE
+#define __HAL_PVM_EVENT_DISABLE                                  __HAL_PWR_PVM_EVENT_DISABLE
+#define __HAL_PVM_EVENT_ENABLE                                   __HAL_PWR_PVM_EVENT_ENABLE
+#define __HAL_PVM_EXTI_FALLINGTRIGGER_DISABLE                    __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_DISABLE
+#define __HAL_PVM_EXTI_FALLINGTRIGGER_ENABLE                     __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_ENABLE
+#define __HAL_PVM_EXTI_RISINGTRIGGER_DISABLE                     __HAL_PWR_PVM_EXTI_RISINGTRIGGER_DISABLE
+#define __HAL_PVM_EXTI_RISINGTRIGGER_ENABLE                      __HAL_PWR_PVM_EXTI_RISINGTRIGGER_ENABLE
+#define __HAL_PWR_INTERNALWAKEUP_DISABLE                         HAL_PWREx_DisableInternalWakeUpLine
+#define __HAL_PWR_INTERNALWAKEUP_ENABLE                          HAL_PWREx_EnableInternalWakeUpLine
+#define __HAL_PWR_PULL_UP_DOWN_CONFIG_DISABLE                    HAL_PWREx_DisablePullUpPullDownConfig
+#define __HAL_PWR_PULL_UP_DOWN_CONFIG_ENABLE                     HAL_PWREx_EnablePullUpPullDownConfig
+#define __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER()                  do { __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); } while(0)
+#define __HAL_PWR_PVD_EXTI_EVENT_DISABLE                         __HAL_PWR_PVD_EXTI_DISABLE_EVENT
+#define __HAL_PWR_PVD_EXTI_EVENT_ENABLE                          __HAL_PWR_PVD_EXTI_ENABLE_EVENT
+#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_DISABLE                __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE
+#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_ENABLE                 __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE
+#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_DISABLE                 __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE
+#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_ENABLE                  __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE
+#define __HAL_PWR_PVD_EXTI_SET_FALLING_EGDE_TRIGGER              __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE
+#define __HAL_PWR_PVD_EXTI_SET_RISING_EDGE_TRIGGER               __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE
+#define __HAL_PWR_PVM_DISABLE()                                  do { HAL_PWREx_DisablePVM1();HAL_PWREx_DisablePVM2();HAL_PWREx_DisablePVM3();HAL_PWREx_DisablePVM4(); } while(0)
+#define __HAL_PWR_PVM_ENABLE()                                   do { HAL_PWREx_EnablePVM1();HAL_PWREx_EnablePVM2();HAL_PWREx_EnablePVM3();HAL_PWREx_EnablePVM4(); } while(0)
+#define __HAL_PWR_SRAM2CONTENT_PRESERVE_DISABLE                  HAL_PWREx_DisableSRAM2ContentRetention
+#define __HAL_PWR_SRAM2CONTENT_PRESERVE_ENABLE                   HAL_PWREx_EnableSRAM2ContentRetention
+#define __HAL_PWR_VDDIO2_DISABLE                                 HAL_PWREx_DisableVddIO2
+#define __HAL_PWR_VDDIO2_ENABLE                                  HAL_PWREx_EnableVddIO2
+#define __HAL_PWR_VDDIO2_EXTI_CLEAR_EGDE_TRIGGER                 __HAL_PWR_VDDIO2_EXTI_DISABLE_FALLING_EDGE
+#define __HAL_PWR_VDDIO2_EXTI_SET_FALLING_EGDE_TRIGGER           __HAL_PWR_VDDIO2_EXTI_ENABLE_FALLING_EDGE
+#define __HAL_PWR_VDDUSB_DISABLE                                 HAL_PWREx_DisableVddUSB
+#define __HAL_PWR_VDDUSB_ENABLE                                  HAL_PWREx_EnableVddUSB
+
+#if defined (STM32F4)
+#define __HAL_PVD_EXTI_ENABLE_IT(PWR_EXTI_LINE_PVD)         __HAL_PWR_PVD_EXTI_ENABLE_IT()
+#define __HAL_PVD_EXTI_DISABLE_IT(PWR_EXTI_LINE_PVD)        __HAL_PWR_PVD_EXTI_DISABLE_IT()
+#define __HAL_PVD_EXTI_GET_FLAG(PWR_EXTI_LINE_PVD)          __HAL_PWR_PVD_EXTI_GET_FLAG()   
+#define __HAL_PVD_EXTI_CLEAR_FLAG(PWR_EXTI_LINE_PVD)        __HAL_PWR_PVD_EXTI_CLEAR_FLAG()
+#define __HAL_PVD_EXTI_GENERATE_SWIT(PWR_EXTI_LINE_PVD)     __HAL_PWR_PVD_EXTI_GENERATE_SWIT()
+#else
+#define __HAL_PVD_EXTI_CLEAR_FLAG                                __HAL_PWR_PVD_EXTI_CLEAR_FLAG
+#define __HAL_PVD_EXTI_DISABLE_IT                                __HAL_PWR_PVD_EXTI_DISABLE_IT
+#define __HAL_PVD_EXTI_ENABLE_IT                                 __HAL_PWR_PVD_EXTI_ENABLE_IT
+#define __HAL_PVD_EXTI_GENERATE_SWIT                             __HAL_PWR_PVD_EXTI_GENERATE_SWIT
+#define __HAL_PVD_EXTI_GET_FLAG                                  __HAL_PWR_PVD_EXTI_GET_FLAG 
+#endif /* STM32F4 */
+/**   
+  * @}
+  */  
+  
+  
+/** @defgroup HAL_RCC_Aliased HAL RCC Aliased maintained for legacy purpose
+  * @{
+  */
+  
+#define RCC_StopWakeUpClock_MSI     RCC_STOP_WAKEUPCLOCK_MSI
+#define RCC_StopWakeUpClock_HSI     RCC_STOP_WAKEUPCLOCK_HSI
+
+#define HAL_RCC_CCSCallback HAL_RCC_CSSCallback
+#define HAL_RC48_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_RCCEx_EnableHSI48_VREFINT() : HAL_RCCEx_DisableHSI48_VREFINT())
+
+#define __ADC_CLK_DISABLE __HAL_RCC_ADC_CLK_DISABLE
+#define __ADC_CLK_ENABLE __HAL_RCC_ADC_CLK_ENABLE
+#define __ADC_CLK_SLEEP_DISABLE __HAL_RCC_ADC_CLK_SLEEP_DISABLE
+#define __ADC_CLK_SLEEP_ENABLE __HAL_RCC_ADC_CLK_SLEEP_ENABLE
+#define __ADC_FORCE_RESET __HAL_RCC_ADC_FORCE_RESET
+#define __ADC_RELEASE_RESET __HAL_RCC_ADC_RELEASE_RESET
+#define __ADC1_CLK_DISABLE        __HAL_RCC_ADC1_CLK_DISABLE
+#define __ADC1_CLK_ENABLE         __HAL_RCC_ADC1_CLK_ENABLE
+#define __ADC1_FORCE_RESET        __HAL_RCC_ADC1_FORCE_RESET
+#define __ADC1_RELEASE_RESET      __HAL_RCC_ADC1_RELEASE_RESET
+#define __ADC1_CLK_SLEEP_ENABLE   __HAL_RCC_ADC1_CLK_SLEEP_ENABLE  
+#define __ADC1_CLK_SLEEP_DISABLE  __HAL_RCC_ADC1_CLK_SLEEP_DISABLE  
+#define __ADC2_CLK_DISABLE __HAL_RCC_ADC2_CLK_DISABLE
+#define __ADC2_CLK_ENABLE __HAL_RCC_ADC2_CLK_ENABLE
+#define __ADC2_FORCE_RESET __HAL_RCC_ADC2_FORCE_RESET
+#define __ADC2_RELEASE_RESET __HAL_RCC_ADC2_RELEASE_RESET
+#define __ADC3_CLK_DISABLE __HAL_RCC_ADC3_CLK_DISABLE
+#define __ADC3_CLK_ENABLE __HAL_RCC_ADC3_CLK_ENABLE
+#define __ADC3_FORCE_RESET __HAL_RCC_ADC3_FORCE_RESET
+#define __ADC3_RELEASE_RESET __HAL_RCC_ADC3_RELEASE_RESET
+#define __AES_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE
+#define __AES_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE
+#define __AES_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE
+#define __AES_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE
+#define __AES_FORCE_RESET __HAL_RCC_AES_FORCE_RESET
+#define __AES_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET
+#define __CRYP_CLK_SLEEP_ENABLE      __HAL_RCC_CRYP_CLK_SLEEP_ENABLE
+#define __CRYP_CLK_SLEEP_DISABLE  __HAL_RCC_CRYP_CLK_SLEEP_DISABLE
+#define __CRYP_CLK_ENABLE  __HAL_RCC_CRYP_CLK_ENABLE
+#define __CRYP_CLK_DISABLE  __HAL_RCC_CRYP_CLK_DISABLE
+#define __CRYP_FORCE_RESET  __HAL_RCC_CRYP_FORCE_RESET
+#define __CRYP_RELEASE_RESET  __HAL_RCC_CRYP_RELEASE_RESET
+#define __AFIO_CLK_DISABLE __HAL_RCC_AFIO_CLK_DISABLE
+#define __AFIO_CLK_ENABLE __HAL_RCC_AFIO_CLK_ENABLE
+#define __AFIO_FORCE_RESET __HAL_RCC_AFIO_FORCE_RESET
+#define __AFIO_RELEASE_RESET __HAL_RCC_AFIO_RELEASE_RESET
+#define __AHB_FORCE_RESET __HAL_RCC_AHB_FORCE_RESET
+#define __AHB_RELEASE_RESET __HAL_RCC_AHB_RELEASE_RESET
+#define __AHB1_FORCE_RESET __HAL_RCC_AHB1_FORCE_RESET
+#define __AHB1_RELEASE_RESET __HAL_RCC_AHB1_RELEASE_RESET
+#define __AHB2_FORCE_RESET __HAL_RCC_AHB2_FORCE_RESET
+#define __AHB2_RELEASE_RESET __HAL_RCC_AHB2_RELEASE_RESET
+#define __AHB3_FORCE_RESET __HAL_RCC_AHB3_FORCE_RESET
+#define __AHB3_RELEASE_RESET __HAL_RCC_AHB3_RELEASE_RESET
+#define __APB1_FORCE_RESET __HAL_RCC_APB1_FORCE_RESET
+#define __APB1_RELEASE_RESET __HAL_RCC_APB1_RELEASE_RESET
+#define __APB2_FORCE_RESET __HAL_RCC_APB2_FORCE_RESET
+#define __APB2_RELEASE_RESET __HAL_RCC_APB2_RELEASE_RESET
+#define __BKP_CLK_DISABLE __HAL_RCC_BKP_CLK_DISABLE
+#define __BKP_CLK_ENABLE __HAL_RCC_BKP_CLK_ENABLE
+#define __BKP_FORCE_RESET __HAL_RCC_BKP_FORCE_RESET
+#define __BKP_RELEASE_RESET __HAL_RCC_BKP_RELEASE_RESET
+#define __CAN1_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE
+#define __CAN1_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE
+#define __CAN1_CLK_SLEEP_DISABLE __HAL_RCC_CAN1_CLK_SLEEP_DISABLE
+#define __CAN1_CLK_SLEEP_ENABLE __HAL_RCC_CAN1_CLK_SLEEP_ENABLE
+#define __CAN1_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET
+#define __CAN1_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET
+#define __CAN_CLK_DISABLE         __HAL_RCC_CAN1_CLK_DISABLE
+#define __CAN_CLK_ENABLE          __HAL_RCC_CAN1_CLK_ENABLE
+#define __CAN_FORCE_RESET         __HAL_RCC_CAN1_FORCE_RESET
+#define __CAN_RELEASE_RESET       __HAL_RCC_CAN1_RELEASE_RESET
+#define __CAN2_CLK_DISABLE __HAL_RCC_CAN2_CLK_DISABLE
+#define __CAN2_CLK_ENABLE __HAL_RCC_CAN2_CLK_ENABLE
+#define __CAN2_FORCE_RESET __HAL_RCC_CAN2_FORCE_RESET
+#define __CAN2_RELEASE_RESET __HAL_RCC_CAN2_RELEASE_RESET
+#define __CEC_CLK_DISABLE __HAL_RCC_CEC_CLK_DISABLE
+#define __CEC_CLK_ENABLE __HAL_RCC_CEC_CLK_ENABLE
+#define __COMP_CLK_DISABLE        __HAL_RCC_COMP_CLK_DISABLE
+#define __COMP_CLK_ENABLE         __HAL_RCC_COMP_CLK_ENABLE
+#define __COMP_FORCE_RESET        __HAL_RCC_COMP_FORCE_RESET
+#define __COMP_RELEASE_RESET      __HAL_RCC_COMP_RELEASE_RESET
+#define __COMP_CLK_SLEEP_ENABLE   __HAL_RCC_COMP_CLK_SLEEP_ENABLE
+#define __COMP_CLK_SLEEP_DISABLE  __HAL_RCC_COMP_CLK_SLEEP_DISABLE
+#define __CEC_FORCE_RESET __HAL_RCC_CEC_FORCE_RESET
+#define __CEC_RELEASE_RESET __HAL_RCC_CEC_RELEASE_RESET
+#define __CRC_CLK_DISABLE __HAL_RCC_CRC_CLK_DISABLE
+#define __CRC_CLK_ENABLE __HAL_RCC_CRC_CLK_ENABLE
+#define __CRC_CLK_SLEEP_DISABLE __HAL_RCC_CRC_CLK_SLEEP_DISABLE
+#define __CRC_CLK_SLEEP_ENABLE __HAL_RCC_CRC_CLK_SLEEP_ENABLE
+#define __CRC_FORCE_RESET __HAL_RCC_CRC_FORCE_RESET
+#define __CRC_RELEASE_RESET __HAL_RCC_CRC_RELEASE_RESET
+#define __DAC_CLK_DISABLE __HAL_RCC_DAC_CLK_DISABLE
+#define __DAC_CLK_ENABLE __HAL_RCC_DAC_CLK_ENABLE
+#define __DAC_FORCE_RESET __HAL_RCC_DAC_FORCE_RESET
+#define __DAC_RELEASE_RESET __HAL_RCC_DAC_RELEASE_RESET
+#define __DAC1_CLK_DISABLE __HAL_RCC_DAC1_CLK_DISABLE
+#define __DAC1_CLK_ENABLE __HAL_RCC_DAC1_CLK_ENABLE
+#define __DAC1_CLK_SLEEP_DISABLE __HAL_RCC_DAC1_CLK_SLEEP_DISABLE
+#define __DAC1_CLK_SLEEP_ENABLE __HAL_RCC_DAC1_CLK_SLEEP_ENABLE
+#define __DAC1_FORCE_RESET __HAL_RCC_DAC1_FORCE_RESET
+#define __DAC1_RELEASE_RESET __HAL_RCC_DAC1_RELEASE_RESET
+#define __DBGMCU_CLK_ENABLE     __HAL_RCC_DBGMCU_CLK_ENABLE
+#define __DBGMCU_CLK_DISABLE     __HAL_RCC_DBGMCU_CLK_DISABLE
+#define __DBGMCU_FORCE_RESET    __HAL_RCC_DBGMCU_FORCE_RESET
+#define __DBGMCU_RELEASE_RESET  __HAL_RCC_DBGMCU_RELEASE_RESET
+#define __DFSDM_CLK_DISABLE __HAL_RCC_DFSDM_CLK_DISABLE
+#define __DFSDM_CLK_ENABLE __HAL_RCC_DFSDM_CLK_ENABLE
+#define __DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE
+#define __DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE
+#define __DFSDM_FORCE_RESET __HAL_RCC_DFSDM_FORCE_RESET
+#define __DFSDM_RELEASE_RESET __HAL_RCC_DFSDM_RELEASE_RESET
+#define __DMA1_CLK_DISABLE __HAL_RCC_DMA1_CLK_DISABLE
+#define __DMA1_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE
+#define __DMA1_CLK_SLEEP_DISABLE __HAL_RCC_DMA1_CLK_SLEEP_DISABLE
+#define __DMA1_CLK_SLEEP_ENABLE __HAL_RCC_DMA1_CLK_SLEEP_ENABLE
+#define __DMA1_FORCE_RESET __HAL_RCC_DMA1_FORCE_RESET
+#define __DMA1_RELEASE_RESET __HAL_RCC_DMA1_RELEASE_RESET
+#define __DMA2_CLK_DISABLE __HAL_RCC_DMA2_CLK_DISABLE
+#define __DMA2_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
+#define __DMA2_CLK_SLEEP_DISABLE __HAL_RCC_DMA2_CLK_SLEEP_DISABLE
+#define __DMA2_CLK_SLEEP_ENABLE __HAL_RCC_DMA2_CLK_SLEEP_ENABLE
+#define __DMA2_FORCE_RESET __HAL_RCC_DMA2_FORCE_RESET
+#define __DMA2_RELEASE_RESET __HAL_RCC_DMA2_RELEASE_RESET
+#define __ETHMAC_CLK_DISABLE __HAL_RCC_ETHMAC_CLK_DISABLE
+#define __ETHMAC_CLK_ENABLE __HAL_RCC_ETHMAC_CLK_ENABLE
+#define __ETHMAC_FORCE_RESET __HAL_RCC_ETHMAC_FORCE_RESET
+#define __ETHMAC_RELEASE_RESET __HAL_RCC_ETHMAC_RELEASE_RESET
+#define __ETHMACRX_CLK_DISABLE __HAL_RCC_ETHMACRX_CLK_DISABLE
+#define __ETHMACRX_CLK_ENABLE __HAL_RCC_ETHMACRX_CLK_ENABLE
+#define __ETHMACTX_CLK_DISABLE __HAL_RCC_ETHMACTX_CLK_DISABLE
+#define __ETHMACTX_CLK_ENABLE __HAL_RCC_ETHMACTX_CLK_ENABLE
+#define __FIREWALL_CLK_DISABLE __HAL_RCC_FIREWALL_CLK_DISABLE
+#define __FIREWALL_CLK_ENABLE __HAL_RCC_FIREWALL_CLK_ENABLE
+#define __FLASH_CLK_DISABLE __HAL_RCC_FLASH_CLK_DISABLE
+#define __FLASH_CLK_ENABLE __HAL_RCC_FLASH_CLK_ENABLE
+#define __FLASH_CLK_SLEEP_DISABLE __HAL_RCC_FLASH_CLK_SLEEP_DISABLE
+#define __FLASH_CLK_SLEEP_ENABLE __HAL_RCC_FLASH_CLK_SLEEP_ENABLE
+#define __FLASH_FORCE_RESET __HAL_RCC_FLASH_FORCE_RESET
+#define __FLASH_RELEASE_RESET __HAL_RCC_FLASH_RELEASE_RESET
+#define __FLITF_CLK_DISABLE       __HAL_RCC_FLITF_CLK_DISABLE
+#define __FLITF_CLK_ENABLE        __HAL_RCC_FLITF_CLK_ENABLE
+#define __FLITF_FORCE_RESET       __HAL_RCC_FLITF_FORCE_RESET
+#define __FLITF_RELEASE_RESET     __HAL_RCC_FLITF_RELEASE_RESET
+#define __FLITF_CLK_SLEEP_ENABLE  __HAL_RCC_FLITF_CLK_SLEEP_ENABLE
+#define __FLITF_CLK_SLEEP_DISABLE __HAL_RCC_FLITF_CLK_SLEEP_DISABLE
+#define __FMC_CLK_DISABLE __HAL_RCC_FMC_CLK_DISABLE
+#define __FMC_CLK_ENABLE __HAL_RCC_FMC_CLK_ENABLE
+#define __FMC_CLK_SLEEP_DISABLE __HAL_RCC_FMC_CLK_SLEEP_DISABLE
+#define __FMC_CLK_SLEEP_ENABLE __HAL_RCC_FMC_CLK_SLEEP_ENABLE
+#define __FMC_FORCE_RESET __HAL_RCC_FMC_FORCE_RESET
+#define __FMC_RELEASE_RESET __HAL_RCC_FMC_RELEASE_RESET
+#define __FSMC_CLK_DISABLE __HAL_RCC_FSMC_CLK_DISABLE
+#define __FSMC_CLK_ENABLE __HAL_RCC_FSMC_CLK_ENABLE
+#define __GPIOA_CLK_DISABLE __HAL_RCC_GPIOA_CLK_DISABLE
+#define __GPIOA_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define __GPIOA_CLK_SLEEP_DISABLE __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE
+#define __GPIOA_CLK_SLEEP_ENABLE __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE
+#define __GPIOA_FORCE_RESET __HAL_RCC_GPIOA_FORCE_RESET
+#define __GPIOA_RELEASE_RESET __HAL_RCC_GPIOA_RELEASE_RESET
+#define __GPIOB_CLK_DISABLE __HAL_RCC_GPIOB_CLK_DISABLE
+#define __GPIOB_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define __GPIOB_CLK_SLEEP_DISABLE __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE
+#define __GPIOB_CLK_SLEEP_ENABLE __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE
+#define __GPIOB_FORCE_RESET __HAL_RCC_GPIOB_FORCE_RESET
+#define __GPIOB_RELEASE_RESET __HAL_RCC_GPIOB_RELEASE_RESET
+#define __GPIOC_CLK_DISABLE __HAL_RCC_GPIOC_CLK_DISABLE
+#define __GPIOC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE
+#define __GPIOC_CLK_SLEEP_DISABLE __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE
+#define __GPIOC_CLK_SLEEP_ENABLE __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE
+#define __GPIOC_FORCE_RESET __HAL_RCC_GPIOC_FORCE_RESET
+#define __GPIOC_RELEASE_RESET __HAL_RCC_GPIOC_RELEASE_RESET
+#define __GPIOD_CLK_DISABLE __HAL_RCC_GPIOD_CLK_DISABLE
+#define __GPIOD_CLK_ENABLE __HAL_RCC_GPIOD_CLK_ENABLE
+#define __GPIOD_CLK_SLEEP_DISABLE __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE
+#define __GPIOD_CLK_SLEEP_ENABLE __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE
+#define __GPIOD_FORCE_RESET __HAL_RCC_GPIOD_FORCE_RESET
+#define __GPIOD_RELEASE_RESET __HAL_RCC_GPIOD_RELEASE_RESET
+#define __GPIOE_CLK_DISABLE __HAL_RCC_GPIOE_CLK_DISABLE
+#define __GPIOE_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE
+#define __GPIOE_CLK_SLEEP_DISABLE __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE
+#define __GPIOE_CLK_SLEEP_ENABLE __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE
+#define __GPIOE_FORCE_RESET __HAL_RCC_GPIOE_FORCE_RESET
+#define __GPIOE_RELEASE_RESET __HAL_RCC_GPIOE_RELEASE_RESET
+#define __GPIOF_CLK_DISABLE __HAL_RCC_GPIOF_CLK_DISABLE
+#define __GPIOF_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE
+#define __GPIOF_CLK_SLEEP_DISABLE __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE
+#define __GPIOF_CLK_SLEEP_ENABLE __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE
+#define __GPIOF_FORCE_RESET __HAL_RCC_GPIOF_FORCE_RESET
+#define __GPIOF_RELEASE_RESET __HAL_RCC_GPIOF_RELEASE_RESET
+#define __GPIOG_CLK_DISABLE __HAL_RCC_GPIOG_CLK_DISABLE
+#define __GPIOG_CLK_ENABLE __HAL_RCC_GPIOG_CLK_ENABLE
+#define __GPIOG_CLK_SLEEP_DISABLE __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE
+#define __GPIOG_CLK_SLEEP_ENABLE __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE
+#define __GPIOG_FORCE_RESET __HAL_RCC_GPIOG_FORCE_RESET
+#define __GPIOG_RELEASE_RESET __HAL_RCC_GPIOG_RELEASE_RESET
+#define __GPIOH_CLK_DISABLE __HAL_RCC_GPIOH_CLK_DISABLE
+#define __GPIOH_CLK_ENABLE __HAL_RCC_GPIOH_CLK_ENABLE
+#define __GPIOH_CLK_SLEEP_DISABLE __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE
+#define __GPIOH_CLK_SLEEP_ENABLE __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE
+#define __GPIOH_FORCE_RESET __HAL_RCC_GPIOH_FORCE_RESET
+#define __GPIOH_RELEASE_RESET __HAL_RCC_GPIOH_RELEASE_RESET
+#define __I2C1_CLK_DISABLE __HAL_RCC_I2C1_CLK_DISABLE
+#define __I2C1_CLK_ENABLE __HAL_RCC_I2C1_CLK_ENABLE
+#define __I2C1_CLK_SLEEP_DISABLE __HAL_RCC_I2C1_CLK_SLEEP_DISABLE
+#define __I2C1_CLK_SLEEP_ENABLE __HAL_RCC_I2C1_CLK_SLEEP_ENABLE
+#define __I2C1_FORCE_RESET __HAL_RCC_I2C1_FORCE_RESET
+#define __I2C1_RELEASE_RESET __HAL_RCC_I2C1_RELEASE_RESET
+#define __I2C2_CLK_DISABLE __HAL_RCC_I2C2_CLK_DISABLE
+#define __I2C2_CLK_ENABLE __HAL_RCC_I2C2_CLK_ENABLE
+#define __I2C2_CLK_SLEEP_DISABLE __HAL_RCC_I2C2_CLK_SLEEP_DISABLE
+#define __I2C2_CLK_SLEEP_ENABLE __HAL_RCC_I2C2_CLK_SLEEP_ENABLE
+#define __I2C2_FORCE_RESET __HAL_RCC_I2C2_FORCE_RESET
+#define __I2C2_RELEASE_RESET __HAL_RCC_I2C2_RELEASE_RESET
+#define __I2C3_CLK_DISABLE __HAL_RCC_I2C3_CLK_DISABLE
+#define __I2C3_CLK_ENABLE __HAL_RCC_I2C3_CLK_ENABLE
+#define __I2C3_CLK_SLEEP_DISABLE __HAL_RCC_I2C3_CLK_SLEEP_DISABLE
+#define __I2C3_CLK_SLEEP_ENABLE __HAL_RCC_I2C3_CLK_SLEEP_ENABLE
+#define __I2C3_FORCE_RESET __HAL_RCC_I2C3_FORCE_RESET
+#define __I2C3_RELEASE_RESET __HAL_RCC_I2C3_RELEASE_RESET
+#define __LCD_CLK_DISABLE __HAL_RCC_LCD_CLK_DISABLE
+#define __LCD_CLK_ENABLE __HAL_RCC_LCD_CLK_ENABLE
+#define __LCD_CLK_SLEEP_DISABLE __HAL_RCC_LCD_CLK_SLEEP_DISABLE
+#define __LCD_CLK_SLEEP_ENABLE __HAL_RCC_LCD_CLK_SLEEP_ENABLE
+#define __LCD_FORCE_RESET __HAL_RCC_LCD_FORCE_RESET
+#define __LCD_RELEASE_RESET __HAL_RCC_LCD_RELEASE_RESET
+#define __LPTIM1_CLK_DISABLE __HAL_RCC_LPTIM1_CLK_DISABLE
+#define __LPTIM1_CLK_ENABLE __HAL_RCC_LPTIM1_CLK_ENABLE
+#define __LPTIM1_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE
+#define __LPTIM1_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE
+#define __LPTIM1_FORCE_RESET __HAL_RCC_LPTIM1_FORCE_RESET
+#define __LPTIM1_RELEASE_RESET __HAL_RCC_LPTIM1_RELEASE_RESET
+#define __LPTIM2_CLK_DISABLE __HAL_RCC_LPTIM2_CLK_DISABLE
+#define __LPTIM2_CLK_ENABLE __HAL_RCC_LPTIM2_CLK_ENABLE
+#define __LPTIM2_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE
+#define __LPTIM2_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE
+#define __LPTIM2_FORCE_RESET __HAL_RCC_LPTIM2_FORCE_RESET
+#define __LPTIM2_RELEASE_RESET __HAL_RCC_LPTIM2_RELEASE_RESET
+#define __LPUART1_CLK_DISABLE __HAL_RCC_LPUART1_CLK_DISABLE
+#define __LPUART1_CLK_ENABLE __HAL_RCC_LPUART1_CLK_ENABLE
+#define __LPUART1_CLK_SLEEP_DISABLE __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE
+#define __LPUART1_CLK_SLEEP_ENABLE __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE
+#define __LPUART1_FORCE_RESET __HAL_RCC_LPUART1_FORCE_RESET
+#define __LPUART1_RELEASE_RESET __HAL_RCC_LPUART1_RELEASE_RESET
+#define __OPAMP_CLK_DISABLE __HAL_RCC_OPAMP_CLK_DISABLE
+#define __OPAMP_CLK_ENABLE __HAL_RCC_OPAMP_CLK_ENABLE
+#define __OPAMP_CLK_SLEEP_DISABLE __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE
+#define __OPAMP_CLK_SLEEP_ENABLE __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE
+#define __OPAMP_FORCE_RESET __HAL_RCC_OPAMP_FORCE_RESET
+#define __OPAMP_RELEASE_RESET __HAL_RCC_OPAMP_RELEASE_RESET
+#define __OTGFS_CLK_DISABLE __HAL_RCC_OTGFS_CLK_DISABLE
+#define __OTGFS_CLK_ENABLE __HAL_RCC_OTGFS_CLK_ENABLE
+#define __OTGFS_CLK_SLEEP_DISABLE __HAL_RCC_OTGFS_CLK_SLEEP_DISABLE
+#define __OTGFS_CLK_SLEEP_ENABLE __HAL_RCC_OTGFS_CLK_SLEEP_ENABLE
+#define __OTGFS_FORCE_RESET __HAL_RCC_OTGFS_FORCE_RESET
+#define __OTGFS_RELEASE_RESET __HAL_RCC_OTGFS_RELEASE_RESET
+#define __PWR_CLK_DISABLE __HAL_RCC_PWR_CLK_DISABLE
+#define __PWR_CLK_ENABLE __HAL_RCC_PWR_CLK_ENABLE
+#define __PWR_CLK_SLEEP_DISABLE __HAL_RCC_PWR_CLK_SLEEP_DISABLE
+#define __PWR_CLK_SLEEP_ENABLE __HAL_RCC_PWR_CLK_SLEEP_ENABLE
+#define __PWR_FORCE_RESET __HAL_RCC_PWR_FORCE_RESET
+#define __PWR_RELEASE_RESET __HAL_RCC_PWR_RELEASE_RESET
+#define __QSPI_CLK_DISABLE __HAL_RCC_QSPI_CLK_DISABLE
+#define __QSPI_CLK_ENABLE __HAL_RCC_QSPI_CLK_ENABLE
+#define __QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QSPI_CLK_SLEEP_DISABLE
+#define __QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QSPI_CLK_SLEEP_ENABLE
+#define __QSPI_FORCE_RESET __HAL_RCC_QSPI_FORCE_RESET
+#define __QSPI_RELEASE_RESET __HAL_RCC_QSPI_RELEASE_RESET
+#define __RNG_CLK_DISABLE __HAL_RCC_RNG_CLK_DISABLE
+#define __RNG_CLK_ENABLE __HAL_RCC_RNG_CLK_ENABLE
+#define __RNG_CLK_SLEEP_DISABLE __HAL_RCC_RNG_CLK_SLEEP_DISABLE
+#define __RNG_CLK_SLEEP_ENABLE __HAL_RCC_RNG_CLK_SLEEP_ENABLE
+#define __RNG_FORCE_RESET __HAL_RCC_RNG_FORCE_RESET
+#define __RNG_RELEASE_RESET __HAL_RCC_RNG_RELEASE_RESET
+#define __SAI1_CLK_DISABLE __HAL_RCC_SAI1_CLK_DISABLE
+#define __SAI1_CLK_ENABLE __HAL_RCC_SAI1_CLK_ENABLE
+#define __SAI1_CLK_SLEEP_DISABLE __HAL_RCC_SAI1_CLK_SLEEP_DISABLE
+#define __SAI1_CLK_SLEEP_ENABLE __HAL_RCC_SAI1_CLK_SLEEP_ENABLE
+#define __SAI1_FORCE_RESET __HAL_RCC_SAI1_FORCE_RESET
+#define __SAI1_RELEASE_RESET __HAL_RCC_SAI1_RELEASE_RESET
+#define __SAI2_CLK_DISABLE __HAL_RCC_SAI2_CLK_DISABLE
+#define __SAI2_CLK_ENABLE __HAL_RCC_SAI2_CLK_ENABLE
+#define __SAI2_CLK_SLEEP_DISABLE __HAL_RCC_SAI2_CLK_SLEEP_DISABLE
+#define __SAI2_CLK_SLEEP_ENABLE __HAL_RCC_SAI2_CLK_SLEEP_ENABLE
+#define __SAI2_FORCE_RESET __HAL_RCC_SAI2_FORCE_RESET
+#define __SAI2_RELEASE_RESET __HAL_RCC_SAI2_RELEASE_RESET
+#define __SDIO_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE
+#define __SDIO_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE
+#define __SDMMC_CLK_DISABLE __HAL_RCC_SDMMC_CLK_DISABLE
+#define __SDMMC_CLK_ENABLE __HAL_RCC_SDMMC_CLK_ENABLE
+#define __SDMMC_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC_CLK_SLEEP_DISABLE
+#define __SDMMC_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC_CLK_SLEEP_ENABLE
+#define __SDMMC_FORCE_RESET __HAL_RCC_SDMMC_FORCE_RESET
+#define __SDMMC_RELEASE_RESET __HAL_RCC_SDMMC_RELEASE_RESET
+#define __SPI1_CLK_DISABLE __HAL_RCC_SPI1_CLK_DISABLE
+#define __SPI1_CLK_ENABLE __HAL_RCC_SPI1_CLK_ENABLE
+#define __SPI1_CLK_SLEEP_DISABLE __HAL_RCC_SPI1_CLK_SLEEP_DISABLE
+#define __SPI1_CLK_SLEEP_ENABLE __HAL_RCC_SPI1_CLK_SLEEP_ENABLE
+#define __SPI1_FORCE_RESET __HAL_RCC_SPI1_FORCE_RESET
+#define __SPI1_RELEASE_RESET __HAL_RCC_SPI1_RELEASE_RESET
+#define __SPI2_CLK_DISABLE __HAL_RCC_SPI2_CLK_DISABLE
+#define __SPI2_CLK_ENABLE __HAL_RCC_SPI2_CLK_ENABLE
+#define __SPI2_CLK_SLEEP_DISABLE __HAL_RCC_SPI2_CLK_SLEEP_DISABLE
+#define __SPI2_CLK_SLEEP_ENABLE __HAL_RCC_SPI2_CLK_SLEEP_ENABLE
+#define __SPI2_FORCE_RESET __HAL_RCC_SPI2_FORCE_RESET
+#define __SPI2_RELEASE_RESET __HAL_RCC_SPI2_RELEASE_RESET
+#define __SPI3_CLK_DISABLE __HAL_RCC_SPI3_CLK_DISABLE
+#define __SPI3_CLK_ENABLE __HAL_RCC_SPI3_CLK_ENABLE
+#define __SPI3_CLK_SLEEP_DISABLE __HAL_RCC_SPI3_CLK_SLEEP_DISABLE
+#define __SPI3_CLK_SLEEP_ENABLE __HAL_RCC_SPI3_CLK_SLEEP_ENABLE
+#define __SPI3_FORCE_RESET __HAL_RCC_SPI3_FORCE_RESET
+#define __SPI3_RELEASE_RESET __HAL_RCC_SPI3_RELEASE_RESET
+#define __SRAM_CLK_DISABLE __HAL_RCC_SRAM_CLK_DISABLE
+#define __SRAM_CLK_ENABLE __HAL_RCC_SRAM_CLK_ENABLE
+#define __SRAM1_CLK_SLEEP_DISABLE __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE
+#define __SRAM1_CLK_SLEEP_ENABLE __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE
+#define __SRAM2_CLK_SLEEP_DISABLE __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE
+#define __SRAM2_CLK_SLEEP_ENABLE __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE
+#define __SWPMI1_CLK_DISABLE __HAL_RCC_SWPMI1_CLK_DISABLE
+#define __SWPMI1_CLK_ENABLE __HAL_RCC_SWPMI1_CLK_ENABLE
+#define __SWPMI1_CLK_SLEEP_DISABLE __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE
+#define __SWPMI1_CLK_SLEEP_ENABLE __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE
+#define __SWPMI1_FORCE_RESET __HAL_RCC_SWPMI1_FORCE_RESET
+#define __SWPMI1_RELEASE_RESET __HAL_RCC_SWPMI1_RELEASE_RESET
+#define __SYSCFG_CLK_DISABLE __HAL_RCC_SYSCFG_CLK_DISABLE
+#define __SYSCFG_CLK_ENABLE __HAL_RCC_SYSCFG_CLK_ENABLE
+#define __SYSCFG_CLK_SLEEP_DISABLE __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE
+#define __SYSCFG_CLK_SLEEP_ENABLE __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE
+#define __SYSCFG_FORCE_RESET __HAL_RCC_SYSCFG_FORCE_RESET
+#define __SYSCFG_RELEASE_RESET __HAL_RCC_SYSCFG_RELEASE_RESET
+#define __TIM1_CLK_DISABLE __HAL_RCC_TIM1_CLK_DISABLE
+#define __TIM1_CLK_ENABLE __HAL_RCC_TIM1_CLK_ENABLE
+#define __TIM1_CLK_SLEEP_DISABLE __HAL_RCC_TIM1_CLK_SLEEP_DISABLE
+#define __TIM1_CLK_SLEEP_ENABLE __HAL_RCC_TIM1_CLK_SLEEP_ENABLE
+#define __TIM1_FORCE_RESET __HAL_RCC_TIM1_FORCE_RESET
+#define __TIM1_RELEASE_RESET __HAL_RCC_TIM1_RELEASE_RESET
+#define __TIM10_CLK_DISABLE __HAL_RCC_TIM10_CLK_DISABLE
+#define __TIM10_CLK_ENABLE __HAL_RCC_TIM10_CLK_ENABLE
+#define __TIM10_FORCE_RESET __HAL_RCC_TIM10_FORCE_RESET
+#define __TIM10_RELEASE_RESET __HAL_RCC_TIM10_RELEASE_RESET
+#define __TIM11_CLK_DISABLE __HAL_RCC_TIM11_CLK_DISABLE
+#define __TIM11_CLK_ENABLE __HAL_RCC_TIM11_CLK_ENABLE
+#define __TIM11_FORCE_RESET __HAL_RCC_TIM11_FORCE_RESET
+#define __TIM11_RELEASE_RESET __HAL_RCC_TIM11_RELEASE_RESET
+#define __TIM12_CLK_DISABLE __HAL_RCC_TIM12_CLK_DISABLE
+#define __TIM12_CLK_ENABLE __HAL_RCC_TIM12_CLK_ENABLE
+#define __TIM12_FORCE_RESET __HAL_RCC_TIM12_FORCE_RESET
+#define __TIM12_RELEASE_RESET __HAL_RCC_TIM12_RELEASE_RESET
+#define __TIM13_CLK_DISABLE __HAL_RCC_TIM13_CLK_DISABLE
+#define __TIM13_CLK_ENABLE __HAL_RCC_TIM13_CLK_ENABLE
+#define __TIM13_FORCE_RESET __HAL_RCC_TIM13_FORCE_RESET
+#define __TIM13_RELEASE_RESET __HAL_RCC_TIM13_RELEASE_RESET
+#define __TIM14_CLK_DISABLE __HAL_RCC_TIM14_CLK_DISABLE
+#define __TIM14_CLK_ENABLE __HAL_RCC_TIM14_CLK_ENABLE
+#define __TIM14_FORCE_RESET __HAL_RCC_TIM14_FORCE_RESET
+#define __TIM14_RELEASE_RESET __HAL_RCC_TIM14_RELEASE_RESET
+#define __TIM15_CLK_DISABLE __HAL_RCC_TIM15_CLK_DISABLE
+#define __TIM15_CLK_ENABLE __HAL_RCC_TIM15_CLK_ENABLE
+#define __TIM15_CLK_SLEEP_DISABLE __HAL_RCC_TIM15_CLK_SLEEP_DISABLE
+#define __TIM15_CLK_SLEEP_ENABLE __HAL_RCC_TIM15_CLK_SLEEP_ENABLE
+#define __TIM15_FORCE_RESET __HAL_RCC_TIM15_FORCE_RESET
+#define __TIM15_RELEASE_RESET __HAL_RCC_TIM15_RELEASE_RESET
+#define __TIM16_CLK_DISABLE __HAL_RCC_TIM16_CLK_DISABLE
+#define __TIM16_CLK_ENABLE __HAL_RCC_TIM16_CLK_ENABLE
+#define __TIM16_CLK_SLEEP_DISABLE __HAL_RCC_TIM16_CLK_SLEEP_DISABLE
+#define __TIM16_CLK_SLEEP_ENABLE __HAL_RCC_TIM16_CLK_SLEEP_ENABLE
+#define __TIM16_FORCE_RESET __HAL_RCC_TIM16_FORCE_RESET
+#define __TIM16_RELEASE_RESET __HAL_RCC_TIM16_RELEASE_RESET
+#define __TIM17_CLK_DISABLE __HAL_RCC_TIM17_CLK_DISABLE
+#define __TIM17_CLK_ENABLE __HAL_RCC_TIM17_CLK_ENABLE
+#define __TIM17_CLK_SLEEP_DISABLE __HAL_RCC_TIM17_CLK_SLEEP_DISABLE
+#define __TIM17_CLK_SLEEP_ENABLE __HAL_RCC_TIM17_CLK_SLEEP_ENABLE
+#define __TIM17_FORCE_RESET __HAL_RCC_TIM17_FORCE_RESET
+#define __TIM17_RELEASE_RESET __HAL_RCC_TIM17_RELEASE_RESET
+#define __TIM2_CLK_DISABLE __HAL_RCC_TIM2_CLK_DISABLE
+#define __TIM2_CLK_ENABLE __HAL_RCC_TIM2_CLK_ENABLE
+#define __TIM2_CLK_SLEEP_DISABLE __HAL_RCC_TIM2_CLK_SLEEP_DISABLE
+#define __TIM2_CLK_SLEEP_ENABLE __HAL_RCC_TIM2_CLK_SLEEP_ENABLE
+#define __TIM2_FORCE_RESET __HAL_RCC_TIM2_FORCE_RESET
+#define __TIM2_RELEASE_RESET __HAL_RCC_TIM2_RELEASE_RESET
+#define __TIM3_CLK_DISABLE __HAL_RCC_TIM3_CLK_DISABLE
+#define __TIM3_CLK_ENABLE __HAL_RCC_TIM3_CLK_ENABLE
+#define __TIM3_CLK_SLEEP_DISABLE __HAL_RCC_TIM3_CLK_SLEEP_DISABLE
+#define __TIM3_CLK_SLEEP_ENABLE __HAL_RCC_TIM3_CLK_SLEEP_ENABLE
+#define __TIM3_FORCE_RESET __HAL_RCC_TIM3_FORCE_RESET
+#define __TIM3_RELEASE_RESET __HAL_RCC_TIM3_RELEASE_RESET
+#define __TIM4_CLK_DISABLE __HAL_RCC_TIM4_CLK_DISABLE
+#define __TIM4_CLK_ENABLE __HAL_RCC_TIM4_CLK_ENABLE
+#define __TIM4_CLK_SLEEP_DISABLE __HAL_RCC_TIM4_CLK_SLEEP_DISABLE
+#define __TIM4_CLK_SLEEP_ENABLE __HAL_RCC_TIM4_CLK_SLEEP_ENABLE
+#define __TIM4_FORCE_RESET __HAL_RCC_TIM4_FORCE_RESET
+#define __TIM4_RELEASE_RESET __HAL_RCC_TIM4_RELEASE_RESET
+#define __TIM5_CLK_DISABLE __HAL_RCC_TIM5_CLK_DISABLE
+#define __TIM5_CLK_ENABLE __HAL_RCC_TIM5_CLK_ENABLE
+#define __TIM5_CLK_SLEEP_DISABLE __HAL_RCC_TIM5_CLK_SLEEP_DISABLE
+#define __TIM5_CLK_SLEEP_ENABLE __HAL_RCC_TIM5_CLK_SLEEP_ENABLE
+#define __TIM5_FORCE_RESET __HAL_RCC_TIM5_FORCE_RESET
+#define __TIM5_RELEASE_RESET __HAL_RCC_TIM5_RELEASE_RESET
+#define __TIM6_CLK_DISABLE __HAL_RCC_TIM6_CLK_DISABLE
+#define __TIM6_CLK_ENABLE __HAL_RCC_TIM6_CLK_ENABLE
+#define __TIM6_CLK_SLEEP_DISABLE __HAL_RCC_TIM6_CLK_SLEEP_DISABLE
+#define __TIM6_CLK_SLEEP_ENABLE __HAL_RCC_TIM6_CLK_SLEEP_ENABLE
+#define __TIM6_FORCE_RESET __HAL_RCC_TIM6_FORCE_RESET
+#define __TIM6_RELEASE_RESET __HAL_RCC_TIM6_RELEASE_RESET
+#define __TIM7_CLK_DISABLE __HAL_RCC_TIM7_CLK_DISABLE
+#define __TIM7_CLK_ENABLE __HAL_RCC_TIM7_CLK_ENABLE
+#define __TIM7_CLK_SLEEP_DISABLE __HAL_RCC_TIM7_CLK_SLEEP_DISABLE
+#define __TIM7_CLK_SLEEP_ENABLE __HAL_RCC_TIM7_CLK_SLEEP_ENABLE
+#define __TIM7_FORCE_RESET __HAL_RCC_TIM7_FORCE_RESET
+#define __TIM7_RELEASE_RESET __HAL_RCC_TIM7_RELEASE_RESET
+#define __TIM8_CLK_DISABLE __HAL_RCC_TIM8_CLK_DISABLE
+#define __TIM8_CLK_ENABLE __HAL_RCC_TIM8_CLK_ENABLE
+#define __TIM8_CLK_SLEEP_DISABLE __HAL_RCC_TIM8_CLK_SLEEP_DISABLE
+#define __TIM8_CLK_SLEEP_ENABLE __HAL_RCC_TIM8_CLK_SLEEP_ENABLE
+#define __TIM8_FORCE_RESET __HAL_RCC_TIM8_FORCE_RESET
+#define __TIM8_RELEASE_RESET __HAL_RCC_TIM8_RELEASE_RESET
+#define __TIM9_CLK_DISABLE __HAL_RCC_TIM9_CLK_DISABLE
+#define __TIM9_CLK_ENABLE __HAL_RCC_TIM9_CLK_ENABLE
+#define __TIM9_FORCE_RESET __HAL_RCC_TIM9_FORCE_RESET
+#define __TIM9_RELEASE_RESET __HAL_RCC_TIM9_RELEASE_RESET
+#define __TSC_CLK_DISABLE __HAL_RCC_TSC_CLK_DISABLE
+#define __TSC_CLK_ENABLE __HAL_RCC_TSC_CLK_ENABLE
+#define __TSC_CLK_SLEEP_DISABLE __HAL_RCC_TSC_CLK_SLEEP_DISABLE
+#define __TSC_CLK_SLEEP_ENABLE __HAL_RCC_TSC_CLK_SLEEP_ENABLE
+#define __TSC_FORCE_RESET __HAL_RCC_TSC_FORCE_RESET
+#define __TSC_RELEASE_RESET __HAL_RCC_TSC_RELEASE_RESET
+#define __UART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE
+#define __UART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE
+#define __UART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE
+#define __UART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE
+#define __UART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET
+#define __UART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET
+#define __UART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE
+#define __UART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE
+#define __UART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE
+#define __UART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE
+#define __UART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET
+#define __UART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET
+#define __USART1_CLK_DISABLE __HAL_RCC_USART1_CLK_DISABLE
+#define __USART1_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE
+#define __USART1_CLK_SLEEP_DISABLE __HAL_RCC_USART1_CLK_SLEEP_DISABLE
+#define __USART1_CLK_SLEEP_ENABLE __HAL_RCC_USART1_CLK_SLEEP_ENABLE
+#define __USART1_FORCE_RESET __HAL_RCC_USART1_FORCE_RESET
+#define __USART1_RELEASE_RESET __HAL_RCC_USART1_RELEASE_RESET
+#define __USART2_CLK_DISABLE __HAL_RCC_USART2_CLK_DISABLE
+#define __USART2_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE
+#define __USART2_CLK_SLEEP_DISABLE __HAL_RCC_USART2_CLK_SLEEP_DISABLE
+#define __USART2_CLK_SLEEP_ENABLE __HAL_RCC_USART2_CLK_SLEEP_ENABLE
+#define __USART2_FORCE_RESET __HAL_RCC_USART2_FORCE_RESET
+#define __USART2_RELEASE_RESET __HAL_RCC_USART2_RELEASE_RESET
+#define __USART3_CLK_DISABLE __HAL_RCC_USART3_CLK_DISABLE
+#define __USART3_CLK_ENABLE __HAL_RCC_USART3_CLK_ENABLE
+#define __USART3_CLK_SLEEP_DISABLE __HAL_RCC_USART3_CLK_SLEEP_DISABLE
+#define __USART3_CLK_SLEEP_ENABLE __HAL_RCC_USART3_CLK_SLEEP_ENABLE
+#define __USART3_FORCE_RESET __HAL_RCC_USART3_FORCE_RESET
+#define __USART3_RELEASE_RESET __HAL_RCC_USART3_RELEASE_RESET
+#define __USART4_CLK_DISABLE        __HAL_RCC_USART4_CLK_DISABLE
+#define __USART4_CLK_ENABLE         __HAL_RCC_USART4_CLK_ENABLE
+#define __USART4_CLK_SLEEP_ENABLE   __HAL_RCC_USART4_CLK_SLEEP_ENABLE
+#define __USART4_CLK_SLEEP_DISABLE  __HAL_RCC_USART4_CLK_SLEEP_DISABLE 
+#define __USART4_FORCE_RESET        __HAL_RCC_USART4_FORCE_RESET
+#define __USART4_RELEASE_RESET      __HAL_RCC_USART4_RELEASE_RESET
+#define __USART5_CLK_DISABLE        __HAL_RCC_USART5_CLK_DISABLE
+#define __USART5_CLK_ENABLE         __HAL_RCC_USART5_CLK_ENABLE
+#define __USART5_CLK_SLEEP_ENABLE   __HAL_RCC_USART5_CLK_SLEEP_ENABLE
+#define __USART5_CLK_SLEEP_DISABLE  __HAL_RCC_USART5_CLK_SLEEP_DISABLE 
+#define __USART5_FORCE_RESET        __HAL_RCC_USART5_FORCE_RESET
+#define __USART5_RELEASE_RESET      __HAL_RCC_USART5_RELEASE_RESET
+#define __USART7_CLK_DISABLE        __HAL_RCC_USART7_CLK_DISABLE
+#define __USART7_CLK_ENABLE         __HAL_RCC_USART7_CLK_ENABLE
+#define __USART7_FORCE_RESET        __HAL_RCC_USART7_FORCE_RESET
+#define __USART7_RELEASE_RESET      __HAL_RCC_USART7_RELEASE_RESET
+#define __USART8_CLK_DISABLE        __HAL_RCC_USART8_CLK_DISABLE
+#define __USART8_CLK_ENABLE         __HAL_RCC_USART8_CLK_ENABLE
+#define __USART8_FORCE_RESET        __HAL_RCC_USART8_FORCE_RESET
+#define __USART8_RELEASE_RESET      __HAL_RCC_USART8_RELEASE_RESET
+#define __USB_CLK_DISABLE         __HAL_RCC_USB_CLK_DISABLE
+#define __USB_CLK_ENABLE          __HAL_RCC_USB_CLK_ENABLE
+#define __USB_FORCE_RESET         __HAL_RCC_USB_FORCE_RESET
+#define __USB_CLK_SLEEP_ENABLE    __HAL_RCC_USB_CLK_SLEEP_ENABLE
+#define __USB_CLK_SLEEP_DISABLE   __HAL_RCC_USB_CLK_SLEEP_DISABLE
+#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE
+#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
+#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET
+#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE
+#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE
+#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE
+#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE
+#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET
+#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET
+#define __TIM21_CLK_ENABLE   __HAL_RCC_TIM21_CLK_ENABLE
+#define __TIM21_CLK_DISABLE   __HAL_RCC_TIM21_CLK_DISABLE
+#define __TIM21_FORCE_RESET   __HAL_RCC_TIM21_FORCE_RESET
+#define __TIM21_RELEASE_RESET  __HAL_RCC_TIM21_RELEASE_RESET
+#define __TIM21_CLK_SLEEP_ENABLE   __HAL_RCC_TIM21_CLK_SLEEP_ENABLE
+#define __TIM21_CLK_SLEEP_DISABLE   __HAL_RCC_TIM21_CLK_SLEEP_DISABLE
+#define __TIM22_CLK_ENABLE   __HAL_RCC_TIM22_CLK_ENABLE
+#define __TIM22_CLK_DISABLE   __HAL_RCC_TIM22_CLK_DISABLE
+#define __TIM22_FORCE_RESET   __HAL_RCC_TIM22_FORCE_RESET
+#define __TIM22_RELEASE_RESET  __HAL_RCC_TIM22_RELEASE_RESET
+#define __TIM22_CLK_SLEEP_ENABLE   __HAL_RCC_TIM22_CLK_SLEEP_ENABLE
+#define __TIM22_CLK_SLEEP_DISABLE   __HAL_RCC_TIM22_CLK_SLEEP_DISABLE
+#define __CRS_CLK_DISABLE __HAL_RCC_CRS_CLK_DISABLE
+#define __CRS_CLK_ENABLE __HAL_RCC_CRS_CLK_ENABLE
+#define __CRS_CLK_SLEEP_DISABLE __HAL_RCC_CRS_CLK_SLEEP_DISABLE
+#define __CRS_CLK_SLEEP_ENABLE __HAL_RCC_CRS_CLK_SLEEP_ENABLE
+#define __CRS_FORCE_RESET __HAL_RCC_CRS_FORCE_RESET
+#define __CRS_RELEASE_RESET __HAL_RCC_CRS_RELEASE_RESET
+#define __RCC_BACKUPRESET_FORCE __HAL_RCC_BACKUPRESET_FORCE
+#define __RCC_BACKUPRESET_RELEASE __HAL_RCC_BACKUPRESET_RELEASE
+
+#define __USB_OTG_FS_FORCE_RESET  __HAL_RCC_USB_OTG_FS_FORCE_RESET
+#define __USB_OTG_FS_RELEASE_RESET  __HAL_RCC_USB_OTG_FS_RELEASE_RESET
+#define __USB_OTG_FS_CLK_SLEEP_ENABLE  __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE
+#define __USB_OTG_FS_CLK_SLEEP_DISABLE  __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE
+#define __USB_OTG_HS_CLK_DISABLE  __HAL_RCC_USB_OTG_HS_CLK_DISABLE
+#define __USB_OTG_HS_CLK_ENABLE          __HAL_RCC_USB_OTG_HS_CLK_ENABLE
+#define __USB_OTG_HS_ULPI_CLK_ENABLE  __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE
+#define __USB_OTG_HS_ULPI_CLK_DISABLE  __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE  
+#define __TIM9_CLK_SLEEP_ENABLE          __HAL_RCC_TIM9_CLK_SLEEP_ENABLE
+#define __TIM9_CLK_SLEEP_DISABLE  __HAL_RCC_TIM9_CLK_SLEEP_DISABLE  
+#define __TIM10_CLK_SLEEP_ENABLE  __HAL_RCC_TIM10_CLK_SLEEP_ENABLE
+#define __TIM10_CLK_SLEEP_DISABLE  __HAL_RCC_TIM10_CLK_SLEEP_DISABLE  
+#define __TIM11_CLK_SLEEP_ENABLE  __HAL_RCC_TIM11_CLK_SLEEP_ENABLE
+#define __TIM11_CLK_SLEEP_DISABLE  __HAL_RCC_TIM11_CLK_SLEEP_DISABLE  
+#define __ETHMACPTP_CLK_SLEEP_ENABLE  __HAL_RCC_ETHMACPTP_CLK_SLEEP_ENABLE
+#define __ETHMACPTP_CLK_SLEEP_DISABLE  __HAL_RCC_ETHMACPTP_CLK_SLEEP_DISABLE
+#define __ETHMACPTP_CLK_ENABLE          __HAL_RCC_ETHMACPTP_CLK_ENABLE
+#define __ETHMACPTP_CLK_DISABLE          __HAL_RCC_ETHMACPTP_CLK_DISABLE  
+#define __HASH_CLK_ENABLE          __HAL_RCC_HASH_CLK_ENABLE
+#define __HASH_FORCE_RESET          __HAL_RCC_HASH_FORCE_RESET
+#define __HASH_RELEASE_RESET          __HAL_RCC_HASH_RELEASE_RESET
+#define __HASH_CLK_SLEEP_ENABLE          __HAL_RCC_HASH_CLK_SLEEP_ENABLE
+#define __HASH_CLK_SLEEP_DISABLE  __HAL_RCC_HASH_CLK_SLEEP_DISABLE
+#define __HASH_CLK_DISABLE            __HAL_RCC_HASH_CLK_DISABLE  
+#define __SPI5_CLK_ENABLE          __HAL_RCC_SPI5_CLK_ENABLE
+#define __SPI5_CLK_DISABLE              __HAL_RCC_SPI5_CLK_DISABLE
+#define __SPI5_FORCE_RESET          __HAL_RCC_SPI5_FORCE_RESET
+#define __SPI5_RELEASE_RESET          __HAL_RCC_SPI5_RELEASE_RESET
+#define __SPI5_CLK_SLEEP_ENABLE          __HAL_RCC_SPI5_CLK_SLEEP_ENABLE
+#define __SPI5_CLK_SLEEP_DISABLE  __HAL_RCC_SPI5_CLK_SLEEP_DISABLE  
+#define __SPI6_CLK_ENABLE          __HAL_RCC_SPI6_CLK_ENABLE
+#define __SPI6_CLK_DISABLE          __HAL_RCC_SPI6_CLK_DISABLE
+#define __SPI6_FORCE_RESET          __HAL_RCC_SPI6_FORCE_RESET
+#define __SPI6_RELEASE_RESET         __HAL_RCC_SPI6_RELEASE_RESET
+#define __SPI6_CLK_SLEEP_ENABLE          __HAL_RCC_SPI6_CLK_SLEEP_ENABLE
+#define __SPI6_CLK_SLEEP_DISABLE  __HAL_RCC_SPI6_CLK_SLEEP_DISABLE  
+#define __LTDC_CLK_ENABLE          __HAL_RCC_LTDC_CLK_ENABLE
+#define __LTDC_CLK_DISABLE          __HAL_RCC_LTDC_CLK_DISABLE
+#define __LTDC_FORCE_RESET          __HAL_RCC_LTDC_FORCE_RESET
+#define __LTDC_RELEASE_RESET          __HAL_RCC_LTDC_RELEASE_RESET
+#define __LTDC_CLK_SLEEP_ENABLE          __HAL_RCC_LTDC_CLK_SLEEP_ENABLE  
+#define __ETHMAC_CLK_SLEEP_ENABLE  __HAL_RCC_ETHMAC_CLK_SLEEP_ENABLE
+#define __ETHMAC_CLK_SLEEP_DISABLE  __HAL_RCC_ETHMAC_CLK_SLEEP_DISABLE  
+#define __ETHMACTX_CLK_SLEEP_ENABLE  __HAL_RCC_ETHMACTX_CLK_SLEEP_ENABLE
+#define __ETHMACTX_CLK_SLEEP_DISABLE  __HAL_RCC_ETHMACTX_CLK_SLEEP_DISABLE  
+#define __ETHMACRX_CLK_SLEEP_ENABLE  __HAL_RCC_ETHMACRX_CLK_SLEEP_ENABLE
+#define __ETHMACRX_CLK_SLEEP_DISABLE  __HAL_RCC_ETHMACRX_CLK_SLEEP_DISABLE  
+#define __TIM12_CLK_SLEEP_ENABLE  __HAL_RCC_TIM12_CLK_SLEEP_ENABLE
+#define __TIM12_CLK_SLEEP_DISABLE  __HAL_RCC_TIM12_CLK_SLEEP_DISABLE  
+#define __TIM13_CLK_SLEEP_ENABLE  __HAL_RCC_TIM13_CLK_SLEEP_ENABLE
+#define __TIM13_CLK_SLEEP_DISABLE  __HAL_RCC_TIM13_CLK_SLEEP_DISABLE  
+#define __TIM14_CLK_SLEEP_ENABLE  __HAL_RCC_TIM14_CLK_SLEEP_ENABLE
+#define __TIM14_CLK_SLEEP_DISABLE  __HAL_RCC_TIM14_CLK_SLEEP_DISABLE  
+#define __BKPSRAM_CLK_ENABLE          __HAL_RCC_BKPSRAM_CLK_ENABLE
+#define __BKPSRAM_CLK_DISABLE          __HAL_RCC_BKPSRAM_CLK_DISABLE
+#define __BKPSRAM_CLK_SLEEP_ENABLE  __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE
+#define __BKPSRAM_CLK_SLEEP_DISABLE  __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE  
+#define __CCMDATARAMEN_CLK_ENABLE  __HAL_RCC_CCMDATARAMEN_CLK_ENABLE
+#define __CCMDATARAMEN_CLK_DISABLE  __HAL_RCC_CCMDATARAMEN_CLK_DISABLE  
+#define __USART6_CLK_ENABLE          __HAL_RCC_USART6_CLK_ENABLE
+#define __USART6_CLK_DISABLE          __HAL_RCC_USART6_CLK_DISABLE
+#define __USART6_FORCE_RESET        __HAL_RCC_USART6_FORCE_RESET
+#define __USART6_RELEASE_RESET        __HAL_RCC_USART6_RELEASE_RESET
+#define __USART6_CLK_SLEEP_ENABLE  __HAL_RCC_USART6_CLK_SLEEP_ENABLE
+#define __USART6_CLK_SLEEP_DISABLE  __HAL_RCC_USART6_CLK_SLEEP_DISABLE  
+#define __SPI4_CLK_ENABLE          __HAL_RCC_SPI4_CLK_ENABLE
+#define __SPI4_CLK_DISABLE          __HAL_RCC_SPI4_CLK_DISABLE
+#define __SPI4_FORCE_RESET          __HAL_RCC_SPI4_FORCE_RESET
+#define __SPI4_RELEASE_RESET        __HAL_RCC_SPI4_RELEASE_RESET
+#define __SPI4_CLK_SLEEP_ENABLE   __HAL_RCC_SPI4_CLK_SLEEP_ENABLE
+#define __SPI4_CLK_SLEEP_DISABLE  __HAL_RCC_SPI4_CLK_SLEEP_DISABLE  
+#define __GPIOI_CLK_ENABLE          __HAL_RCC_GPIOI_CLK_ENABLE
+#define __GPIOI_CLK_DISABLE          __HAL_RCC_GPIOI_CLK_DISABLE
+#define __GPIOI_FORCE_RESET          __HAL_RCC_GPIOI_FORCE_RESET
+#define __GPIOI_RELEASE_RESET          __HAL_RCC_GPIOI_RELEASE_RESET
+#define __GPIOI_CLK_SLEEP_ENABLE  __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE
+#define __GPIOI_CLK_SLEEP_DISABLE  __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE  
+#define __GPIOJ_CLK_ENABLE          __HAL_RCC_GPIOJ_CLK_ENABLE
+#define __GPIOJ_CLK_DISABLE          __HAL_RCC_GPIOJ_CLK_DISABLE
+#define __GPIOJ_FORCE_RESET         __HAL_RCC_GPIOJ_FORCE_RESET
+#define __GPIOJ_RELEASE_RESET          __HAL_RCC_GPIOJ_RELEASE_RESET
+#define __GPIOJ_CLK_SLEEP_ENABLE  __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE
+#define __GPIOJ_CLK_SLEEP_DISABLE  __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE  
+#define __GPIOK_CLK_ENABLE          __HAL_RCC_GPIOK_CLK_ENABLE
+#define __GPIOK_CLK_DISABLE          __HAL_RCC_GPIOK_CLK_DISABLE
+#define __GPIOK_RELEASE_RESET          __HAL_RCC_GPIOK_RELEASE_RESET
+#define __GPIOK_CLK_SLEEP_ENABLE  __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE
+#define __GPIOK_CLK_SLEEP_DISABLE  __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE  
+#define __ETH_CLK_ENABLE          __HAL_RCC_ETH_CLK_ENABLE
+#define __ETH_CLK_DISABLE          __HAL_RCC_ETH_CLK_DISABLE  
+#define __DCMI_CLK_ENABLE          __HAL_RCC_DCMI_CLK_ENABLE
+#define __DCMI_CLK_DISABLE          __HAL_RCC_DCMI_CLK_DISABLE
+#define __DCMI_FORCE_RESET          __HAL_RCC_DCMI_FORCE_RESET
+#define __DCMI_RELEASE_RESET          __HAL_RCC_DCMI_RELEASE_RESET
+#define __DCMI_CLK_SLEEP_ENABLE   __HAL_RCC_DCMI_CLK_SLEEP_ENABLE
+#define __DCMI_CLK_SLEEP_DISABLE  __HAL_RCC_DCMI_CLK_SLEEP_DISABLE  
+#define __UART7_CLK_ENABLE          __HAL_RCC_UART7_CLK_ENABLE
+#define __UART7_CLK_DISABLE          __HAL_RCC_UART7_CLK_DISABLE
+#define __UART7_RELEASE_RESET       __HAL_RCC_UART7_RELEASE_RESET
+#define __UART7_FORCE_RESET       __HAL_RCC_UART7_FORCE_RESET
+#define __UART7_CLK_SLEEP_ENABLE  __HAL_RCC_UART7_CLK_SLEEP_ENABLE
+#define __UART7_CLK_SLEEP_DISABLE  __HAL_RCC_UART7_CLK_SLEEP_DISABLE  
+#define __UART8_CLK_ENABLE          __HAL_RCC_UART8_CLK_ENABLE
+#define __UART8_CLK_DISABLE          __HAL_RCC_UART8_CLK_DISABLE
+#define __UART8_FORCE_RESET          __HAL_RCC_UART8_FORCE_RESET
+#define __UART8_RELEASE_RESET          __HAL_RCC_UART8_RELEASE_RESET
+#define __UART8_CLK_SLEEP_ENABLE  __HAL_RCC_UART8_CLK_SLEEP_ENABLE
+#define __UART8_CLK_SLEEP_DISABLE  __HAL_RCC_UART8_CLK_SLEEP_DISABLE  
+#define __OTGHS_CLK_SLEEP_ENABLE  __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE
+#define __OTGHS_CLK_SLEEP_DISABLE  __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE
+#define __OTGHS_FORCE_RESET          __HAL_RCC_USB_OTG_HS_FORCE_RESET
+#define __OTGHS_RELEASE_RESET          __HAL_RCC_USB_OTG_HS_RELEASE_RESET  
+#define __OTGHSULPI_CLK_SLEEP_ENABLE  __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE
+#define __OTGHSULPI_CLK_SLEEP_DISABLE  __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE
+#define __HAL_RCC_OTGHS_CLK_SLEEP_ENABLE  __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE
+#define __HAL_RCC_OTGHS_CLK_SLEEP_DISABLE  __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE
+#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_ENABLED
+#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_DISABLED
+#define __HAL_RCC_OTGHS_FORCE_RESET          __HAL_RCC_USB_OTG_HS_FORCE_RESET
+#define __HAL_RCC_OTGHS_RELEASE_RESET          __HAL_RCC_USB_OTG_HS_RELEASE_RESET  
+#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_ENABLE      __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE
+#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_DISABLE     __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE 
+#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_ENABLED  __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED
+#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED   
+#define __CRYP_FORCE_RESET             __HAL_RCC_CRYP_FORCE_RESET  
+#define __SRAM3_CLK_SLEEP_ENABLE       __HAL_RCC_SRAM3_CLK_SLEEP_ENABLE  
+#define __CAN2_CLK_SLEEP_ENABLE        __HAL_RCC_CAN2_CLK_SLEEP_ENABLE
+#define __CAN2_CLK_SLEEP_DISABLE       __HAL_RCC_CAN2_CLK_SLEEP_DISABLE  
+#define __DAC_CLK_SLEEP_ENABLE         __HAL_RCC_DAC_CLK_SLEEP_ENABLE
+#define __DAC_CLK_SLEEP_DISABLE        __HAL_RCC_DAC_CLK_SLEEP_DISABLE  
+#define __ADC2_CLK_SLEEP_ENABLE        __HAL_RCC_ADC2_CLK_SLEEP_ENABLE
+#define __ADC2_CLK_SLEEP_DISABLE       __HAL_RCC_ADC2_CLK_SLEEP_DISABLE  
+#define __ADC3_CLK_SLEEP_ENABLE        __HAL_RCC_ADC3_CLK_SLEEP_ENABLE
+#define __ADC3_CLK_SLEEP_DISABLE       __HAL_RCC_ADC3_CLK_SLEEP_DISABLE  
+#define __FSMC_FORCE_RESET             __HAL_RCC_FSMC_FORCE_RESET
+#define __FSMC_RELEASE_RESET           __HAL_RCC_FSMC_RELEASE_RESET
+#define __FSMC_CLK_SLEEP_ENABLE        __HAL_RCC_FSMC_CLK_SLEEP_ENABLE
+#define __FSMC_CLK_SLEEP_DISABLE       __HAL_RCC_FSMC_CLK_SLEEP_DISABLE  
+#define __SDIO_FORCE_RESET             __HAL_RCC_SDIO_FORCE_RESET
+#define __SDIO_RELEASE_RESET           __HAL_RCC_SDIO_RELEASE_RESET
+#define __SDIO_CLK_SLEEP_DISABLE       __HAL_RCC_SDIO_CLK_SLEEP_DISABLE
+#define __SDIO_CLK_SLEEP_ENABLE        __HAL_RCC_SDIO_CLK_SLEEP_ENABLE  
+#define __DMA2D_CLK_ENABLE             __HAL_RCC_DMA2D_CLK_ENABLE
+#define __DMA2D_CLK_DISABLE            __HAL_RCC_DMA2D_CLK_DISABLE
+#define __DMA2D_FORCE_RESET            __HAL_RCC_DMA2D_FORCE_RESET
+#define __DMA2D_RELEASE_RESET          __HAL_RCC_DMA2D_RELEASE_RESET
+#define __DMA2D_CLK_SLEEP_ENABLE       __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE
+#define __DMA2D_CLK_SLEEP_DISABLE      __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE
+
+/* alias define maintained for legacy */
+#define __HAL_RCC_OTGFS_FORCE_RESET    __HAL_RCC_USB_OTG_FS_FORCE_RESET
+#define __HAL_RCC_OTGFS_RELEASE_RESET  __HAL_RCC_USB_OTG_FS_RELEASE_RESET
+
+#define __ADC12_CLK_ENABLE          __HAL_RCC_ADC12_CLK_ENABLE
+#define __ADC12_CLK_DISABLE         __HAL_RCC_ADC12_CLK_DISABLE
+#define __ADC34_CLK_ENABLE          __HAL_RCC_ADC34_CLK_ENABLE
+#define __ADC34_CLK_DISABLE         __HAL_RCC_ADC34_CLK_DISABLE
+#define __ADC12_CLK_ENABLE          __HAL_RCC_ADC12_CLK_ENABLE
+#define __ADC12_CLK_DISABLE         __HAL_RCC_ADC12_CLK_DISABLE
+#define __DAC2_CLK_ENABLE           __HAL_RCC_DAC2_CLK_ENABLE
+#define __DAC2_CLK_DISABLE          __HAL_RCC_DAC2_CLK_DISABLE
+#define __TIM18_CLK_ENABLE          __HAL_RCC_TIM18_CLK_ENABLE
+#define __TIM18_CLK_DISABLE         __HAL_RCC_TIM18_CLK_DISABLE
+#define __TIM19_CLK_ENABLE          __HAL_RCC_TIM19_CLK_ENABLE
+#define __TIM19_CLK_DISABLE         __HAL_RCC_TIM19_CLK_DISABLE
+#define __TIM20_CLK_ENABLE          __HAL_RCC_TIM20_CLK_ENABLE
+#define __TIM20_CLK_DISABLE         __HAL_RCC_TIM20_CLK_DISABLE
+#define __HRTIM1_CLK_ENABLE         __HAL_RCC_HRTIM1_CLK_ENABLE
+#define __HRTIM1_CLK_DISABLE        __HAL_RCC_HRTIM1_CLK_DISABLE
+#define __SDADC1_CLK_ENABLE         __HAL_RCC_SDADC1_CLK_ENABLE
+#define __SDADC2_CLK_ENABLE         __HAL_RCC_SDADC2_CLK_ENABLE
+#define __SDADC3_CLK_ENABLE         __HAL_RCC_SDADC3_CLK_ENABLE
+#define __SDADC1_CLK_DISABLE        __HAL_RCC_SDADC1_CLK_DISABLE
+#define __SDADC2_CLK_DISABLE        __HAL_RCC_SDADC2_CLK_DISABLE
+#define __SDADC3_CLK_DISABLE        __HAL_RCC_SDADC3_CLK_DISABLE
+
+#define __ADC12_FORCE_RESET         __HAL_RCC_ADC12_FORCE_RESET
+#define __ADC12_RELEASE_RESET       __HAL_RCC_ADC12_RELEASE_RESET
+#define __ADC34_FORCE_RESET         __HAL_RCC_ADC34_FORCE_RESET
+#define __ADC34_RELEASE_RESET       __HAL_RCC_ADC34_RELEASE_RESET
+#define __ADC12_FORCE_RESET         __HAL_RCC_ADC12_FORCE_RESET
+#define __ADC12_RELEASE_RESET       __HAL_RCC_ADC12_RELEASE_RESET
+#define __DAC2_FORCE_RESET          __HAL_RCC_DAC2_FORCE_RESET
+#define __DAC2_RELEASE_RESET        __HAL_RCC_DAC2_RELEASE_RESET
+#define __TIM18_FORCE_RESET         __HAL_RCC_TIM18_FORCE_RESET
+#define __TIM18_RELEASE_RESET       __HAL_RCC_TIM18_RELEASE_RESET
+#define __TIM19_FORCE_RESET         __HAL_RCC_TIM19_FORCE_RESET
+#define __TIM19_RELEASE_RESET       __HAL_RCC_TIM19_RELEASE_RESET
+#define __TIM20_FORCE_RESET         __HAL_RCC_TIM20_FORCE_RESET
+#define __TIM20_RELEASE_RESET       __HAL_RCC_TIM20_RELEASE_RESET
+#define __HRTIM1_FORCE_RESET        __HAL_RCC_HRTIM1_FORCE_RESET
+#define __HRTIM1_RELEASE_RESET      __HAL_RCC_HRTIM1_RELEASE_RESET
+#define __SDADC1_FORCE_RESET        __HAL_RCC_SDADC1_FORCE_RESET
+#define __SDADC2_FORCE_RESET        __HAL_RCC_SDADC2_FORCE_RESET
+#define __SDADC3_FORCE_RESET        __HAL_RCC_SDADC3_FORCE_RESET
+#define __SDADC1_RELEASE_RESET      __HAL_RCC_SDADC1_RELEASE_RESET
+#define __SDADC2_RELEASE_RESET      __HAL_RCC_SDADC2_RELEASE_RESET
+#define __SDADC3_RELEASE_RESET      __HAL_RCC_SDADC3_RELEASE_RESET
+
+#define __ADC1_IS_CLK_ENABLED       __HAL_RCC_ADC1_IS_CLK_ENABLED
+#define __ADC1_IS_CLK_DISABLED      __HAL_RCC_ADC1_IS_CLK_DISABLED
+#define __ADC12_IS_CLK_ENABLED      __HAL_RCC_ADC12_IS_CLK_ENABLED
+#define __ADC12_IS_CLK_DISABLED     __HAL_RCC_ADC12_IS_CLK_DISABLED
+#define __ADC34_IS_CLK_ENABLED      __HAL_RCC_ADC34_IS_CLK_ENABLED
+#define __ADC34_IS_CLK_DISABLED     __HAL_RCC_ADC34_IS_CLK_DISABLED
+#define __CEC_IS_CLK_ENABLED        __HAL_RCC_CEC_IS_CLK_ENABLED
+#define __CEC_IS_CLK_DISABLED       __HAL_RCC_CEC_IS_CLK_DISABLED
+#define __CRC_IS_CLK_ENABLED        __HAL_RCC_CRC_IS_CLK_ENABLED
+#define __CRC_IS_CLK_DISABLED       __HAL_RCC_CRC_IS_CLK_DISABLED
+#define __DAC1_IS_CLK_ENABLED       __HAL_RCC_DAC1_IS_CLK_ENABLED
+#define __DAC1_IS_CLK_DISABLED      __HAL_RCC_DAC1_IS_CLK_DISABLED
+#define __DAC2_IS_CLK_ENABLED       __HAL_RCC_DAC2_IS_CLK_ENABLED
+#define __DAC2_IS_CLK_DISABLED      __HAL_RCC_DAC2_IS_CLK_DISABLED
+#define __DMA1_IS_CLK_ENABLED       __HAL_RCC_DMA1_IS_CLK_ENABLED
+#define __DMA1_IS_CLK_DISABLED      __HAL_RCC_DMA1_IS_CLK_DISABLED
+#define __DMA2_IS_CLK_ENABLED       __HAL_RCC_DMA2_IS_CLK_ENABLED
+#define __DMA2_IS_CLK_DISABLED      __HAL_RCC_DMA2_IS_CLK_DISABLED
+#define __FLITF_IS_CLK_ENABLED      __HAL_RCC_FLITF_IS_CLK_ENABLED
+#define __FLITF_IS_CLK_DISABLED     __HAL_RCC_FLITF_IS_CLK_DISABLED
+#define __FMC_IS_CLK_ENABLED        __HAL_RCC_FMC_IS_CLK_ENABLED
+#define __FMC_IS_CLK_DISABLED       __HAL_RCC_FMC_IS_CLK_DISABLED
+#define __GPIOA_IS_CLK_ENABLED      __HAL_RCC_GPIOA_IS_CLK_ENABLED
+#define __GPIOA_IS_CLK_DISABLED     __HAL_RCC_GPIOA_IS_CLK_DISABLED
+#define __GPIOB_IS_CLK_ENABLED      __HAL_RCC_GPIOB_IS_CLK_ENABLED
+#define __GPIOB_IS_CLK_DISABLED     __HAL_RCC_GPIOB_IS_CLK_DISABLED
+#define __GPIOC_IS_CLK_ENABLED      __HAL_RCC_GPIOC_IS_CLK_ENABLED
+#define __GPIOC_IS_CLK_DISABLED     __HAL_RCC_GPIOC_IS_CLK_DISABLED
+#define __GPIOD_IS_CLK_ENABLED      __HAL_RCC_GPIOD_IS_CLK_ENABLED
+#define __GPIOD_IS_CLK_DISABLED     __HAL_RCC_GPIOD_IS_CLK_DISABLED
+#define __GPIOE_IS_CLK_ENABLED      __HAL_RCC_GPIOE_IS_CLK_ENABLED
+#define __GPIOE_IS_CLK_DISABLED     __HAL_RCC_GPIOE_IS_CLK_DISABLED
+#define __GPIOF_IS_CLK_ENABLED      __HAL_RCC_GPIOF_IS_CLK_ENABLED
+#define __GPIOF_IS_CLK_DISABLED     __HAL_RCC_GPIOF_IS_CLK_DISABLED
+#define __GPIOG_IS_CLK_ENABLED      __HAL_RCC_GPIOG_IS_CLK_ENABLED
+#define __GPIOG_IS_CLK_DISABLED     __HAL_RCC_GPIOG_IS_CLK_DISABLED
+#define __GPIOH_IS_CLK_ENABLED      __HAL_RCC_GPIOH_IS_CLK_ENABLED
+#define __GPIOH_IS_CLK_DISABLED     __HAL_RCC_GPIOH_IS_CLK_DISABLED
+#define __HRTIM1_IS_CLK_ENABLED     __HAL_RCC_HRTIM1_IS_CLK_ENABLED
+#define __HRTIM1_IS_CLK_DISABLED    __HAL_RCC_HRTIM1_IS_CLK_DISABLED
+#define __I2C1_IS_CLK_ENABLED       __HAL_RCC_I2C1_IS_CLK_ENABLED
+#define __I2C1_IS_CLK_DISABLED      __HAL_RCC_I2C1_IS_CLK_DISABLED
+#define __I2C2_IS_CLK_ENABLED       __HAL_RCC_I2C2_IS_CLK_ENABLED
+#define __I2C2_IS_CLK_DISABLED      __HAL_RCC_I2C2_IS_CLK_DISABLED
+#define __I2C3_IS_CLK_ENABLED       __HAL_RCC_I2C3_IS_CLK_ENABLED
+#define __I2C3_IS_CLK_DISABLED      __HAL_RCC_I2C3_IS_CLK_DISABLED
+#define __PWR_IS_CLK_ENABLED        __HAL_RCC_PWR_IS_CLK_ENABLED
+#define __PWR_IS_CLK_DISABLED       __HAL_RCC_PWR_IS_CLK_DISABLED
+#define __SYSCFG_IS_CLK_ENABLED     __HAL_RCC_SYSCFG_IS_CLK_ENABLED
+#define __SYSCFG_IS_CLK_DISABLED    __HAL_RCC_SYSCFG_IS_CLK_DISABLED
+#define __SPI1_IS_CLK_ENABLED       __HAL_RCC_SPI1_IS_CLK_ENABLED
+#define __SPI1_IS_CLK_DISABLED      __HAL_RCC_SPI1_IS_CLK_DISABLED
+#define __SPI2_IS_CLK_ENABLED       __HAL_RCC_SPI2_IS_CLK_ENABLED
+#define __SPI2_IS_CLK_DISABLED      __HAL_RCC_SPI2_IS_CLK_DISABLED
+#define __SPI3_IS_CLK_ENABLED       __HAL_RCC_SPI3_IS_CLK_ENABLED
+#define __SPI3_IS_CLK_DISABLED      __HAL_RCC_SPI3_IS_CLK_DISABLED
+#define __SPI4_IS_CLK_ENABLED       __HAL_RCC_SPI4_IS_CLK_ENABLED
+#define __SPI4_IS_CLK_DISABLED      __HAL_RCC_SPI4_IS_CLK_DISABLED
+#define __SDADC1_IS_CLK_ENABLED     __HAL_RCC_SDADC1_IS_CLK_ENABLED
+#define __SDADC1_IS_CLK_DISABLED    __HAL_RCC_SDADC1_IS_CLK_DISABLED
+#define __SDADC2_IS_CLK_ENABLED     __HAL_RCC_SDADC2_IS_CLK_ENABLED
+#define __SDADC2_IS_CLK_DISABLED    __HAL_RCC_SDADC2_IS_CLK_DISABLED
+#define __SDADC3_IS_CLK_ENABLED     __HAL_RCC_SDADC3_IS_CLK_ENABLED
+#define __SDADC3_IS_CLK_DISABLED    __HAL_RCC_SDADC3_IS_CLK_DISABLED
+#define __SRAM_IS_CLK_ENABLED       __HAL_RCC_SRAM_IS_CLK_ENABLED
+#define __SRAM_IS_CLK_DISABLED      __HAL_RCC_SRAM_IS_CLK_DISABLED
+#define __TIM1_IS_CLK_ENABLED       __HAL_RCC_TIM1_IS_CLK_ENABLED
+#define __TIM1_IS_CLK_DISABLED      __HAL_RCC_TIM1_IS_CLK_DISABLED
+#define __TIM2_IS_CLK_ENABLED       __HAL_RCC_TIM2_IS_CLK_ENABLED
+#define __TIM2_IS_CLK_DISABLED      __HAL_RCC_TIM2_IS_CLK_DISABLED
+#define __TIM3_IS_CLK_ENABLED       __HAL_RCC_TIM3_IS_CLK_ENABLED
+#define __TIM3_IS_CLK_DISABLED      __HAL_RCC_TIM3_IS_CLK_DISABLED
+#define __TIM4_IS_CLK_ENABLED       __HAL_RCC_TIM4_IS_CLK_ENABLED
+#define __TIM4_IS_CLK_DISABLED      __HAL_RCC_TIM4_IS_CLK_DISABLED
+#define __TIM5_IS_CLK_ENABLED       __HAL_RCC_TIM5_IS_CLK_ENABLED
+#define __TIM5_IS_CLK_DISABLED      __HAL_RCC_TIM5_IS_CLK_DISABLED
+#define __TIM6_IS_CLK_ENABLED       __HAL_RCC_TIM6_IS_CLK_ENABLED
+#define __TIM6_IS_CLK_DISABLED      __HAL_RCC_TIM6_IS_CLK_DISABLED
+#define __TIM7_IS_CLK_ENABLED       __HAL_RCC_TIM7_IS_CLK_ENABLED
+#define __TIM7_IS_CLK_DISABLED      __HAL_RCC_TIM7_IS_CLK_DISABLED
+#define __TIM8_IS_CLK_ENABLED       __HAL_RCC_TIM8_IS_CLK_ENABLED
+#define __TIM8_IS_CLK_DISABLED      __HAL_RCC_TIM8_IS_CLK_DISABLED
+#define __TIM12_IS_CLK_ENABLED      __HAL_RCC_TIM12_IS_CLK_ENABLED
+#define __TIM12_IS_CLK_DISABLED     __HAL_RCC_TIM12_IS_CLK_DISABLED
+#define __TIM13_IS_CLK_ENABLED      __HAL_RCC_TIM13_IS_CLK_ENABLED
+#define __TIM13_IS_CLK_DISABLED     __HAL_RCC_TIM13_IS_CLK_DISABLED
+#define __TIM14_IS_CLK_ENABLED      __HAL_RCC_TIM14_IS_CLK_ENABLED
+#define __TIM14_IS_CLK_DISABLED     __HAL_RCC_TIM14_IS_CLK_DISABLED
+#define __TIM15_IS_CLK_ENABLED      __HAL_RCC_TIM15_IS_CLK_ENABLED
+#define __TIM15_IS_CLK_DISABLED     __HAL_RCC_TIM15_IS_CLK_DISABLED
+#define __TIM16_IS_CLK_ENABLED      __HAL_RCC_TIM16_IS_CLK_ENABLED
+#define __TIM16_IS_CLK_DISABLED     __HAL_RCC_TIM16_IS_CLK_DISABLED
+#define __TIM17_IS_CLK_ENABLED      __HAL_RCC_TIM17_IS_CLK_ENABLED
+#define __TIM17_IS_CLK_DISABLED     __HAL_RCC_TIM17_IS_CLK_DISABLED
+#define __TIM18_IS_CLK_ENABLED      __HAL_RCC_TIM18_IS_CLK_ENABLED
+#define __TIM18_IS_CLK_DISABLED     __HAL_RCC_TIM18_IS_CLK_DISABLED
+#define __TIM19_IS_CLK_ENABLED      __HAL_RCC_TIM19_IS_CLK_ENABLED
+#define __TIM19_IS_CLK_DISABLED     __HAL_RCC_TIM19_IS_CLK_DISABLED
+#define __TIM20_IS_CLK_ENABLED      __HAL_RCC_TIM20_IS_CLK_ENABLED
+#define __TIM20_IS_CLK_DISABLED     __HAL_RCC_TIM20_IS_CLK_DISABLED
+#define __TSC_IS_CLK_ENABLED        __HAL_RCC_TSC_IS_CLK_ENABLED
+#define __TSC_IS_CLK_DISABLED       __HAL_RCC_TSC_IS_CLK_DISABLED
+#define __UART4_IS_CLK_ENABLED      __HAL_RCC_UART4_IS_CLK_ENABLED
+#define __UART4_IS_CLK_DISABLED     __HAL_RCC_UART4_IS_CLK_DISABLED
+#define __UART5_IS_CLK_ENABLED      __HAL_RCC_UART5_IS_CLK_ENABLED
+#define __UART5_IS_CLK_DISABLED     __HAL_RCC_UART5_IS_CLK_DISABLED
+#define __USART1_IS_CLK_ENABLED     __HAL_RCC_USART1_IS_CLK_ENABLED
+#define __USART1_IS_CLK_DISABLED    __HAL_RCC_USART1_IS_CLK_DISABLED
+#define __USART2_IS_CLK_ENABLED     __HAL_RCC_USART2_IS_CLK_ENABLED
+#define __USART2_IS_CLK_DISABLED    __HAL_RCC_USART2_IS_CLK_DISABLED
+#define __USART3_IS_CLK_ENABLED     __HAL_RCC_USART3_IS_CLK_ENABLED
+#define __USART3_IS_CLK_DISABLED    __HAL_RCC_USART3_IS_CLK_DISABLED
+#define __USB_IS_CLK_ENABLED        __HAL_RCC_USB_IS_CLK_ENABLED
+#define __USB_IS_CLK_DISABLED       __HAL_RCC_USB_IS_CLK_DISABLED
+#define __WWDG_IS_CLK_ENABLED       __HAL_RCC_WWDG_IS_CLK_ENABLED
+#define __WWDG_IS_CLK_DISABLED      __HAL_RCC_WWDG_IS_CLK_DISABLED
+
+#if defined(STM32F4)
+#define __HAL_RCC_SDMMC1_FORCE_RESET       __HAL_RCC_SDIO_FORCE_RESET
+#define __HAL_RCC_SDMMC1_RELEASE_RESET     __HAL_RCC_SDIO_RELEASE_RESET
+#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE  __HAL_RCC_SDIO_CLK_SLEEP_ENABLE
+#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE
+#define __HAL_RCC_SDMMC1_CLK_ENABLE        __HAL_RCC_SDIO_CLK_ENABLE
+#define __HAL_RCC_SDMMC1_CLK_DISABLE       __HAL_RCC_SDIO_CLK_DISABLE
+#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED    __HAL_RCC_SDIO_IS_CLK_ENABLED
+#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED   __HAL_RCC_SDIO_IS_CLK_DISABLED
+#define Sdmmc1ClockSelection               SdioClockSelection
+#define RCC_PERIPHCLK_SDMMC1               RCC_PERIPHCLK_SDIO
+#define RCC_SDMMC1CLKSOURCE_CLK48          RCC_SDIOCLKSOURCE_CK48
+#define RCC_SDMMC1CLKSOURCE_SYSCLK         RCC_SDIOCLKSOURCE_SYSCLK
+#define __HAL_RCC_SDMMC1_CONFIG            __HAL_RCC_SDIO_CONFIG
+#define __HAL_RCC_GET_SDMMC1_SOURCE        __HAL_RCC_GET_SDIO_SOURCE
+#endif
+
+#if defined(STM32F7) || defined(STM32L4)
+#define __HAL_RCC_SDIO_FORCE_RESET         __HAL_RCC_SDMMC1_FORCE_RESET
+#define __HAL_RCC_SDIO_RELEASE_RESET       __HAL_RCC_SDMMC1_RELEASE_RESET
+#define __HAL_RCC_SDIO_CLK_SLEEP_ENABLE    __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE
+#define __HAL_RCC_SDIO_CLK_SLEEP_DISABLE   __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE
+#define __HAL_RCC_SDIO_CLK_ENABLE          __HAL_RCC_SDMMC1_CLK_ENABLE
+#define __HAL_RCC_SDIO_CLK_DISABLE         __HAL_RCC_SDMMC1_CLK_DISABLE
+#define __HAL_RCC_SDIO_IS_CLK_ENABLED      __HAL_RCC_SDMMC1_IS_CLK_ENABLED
+#define __HAL_RCC_SDIO_IS_CLK_DISABLED     __HAL_RCC_SDMMC1_IS_CLK_DISABLED
+#define SdioClockSelection                 Sdmmc1ClockSelection
+#define RCC_PERIPHCLK_SDIO                 RCC_PERIPHCLK_SDMMC1
+#define __HAL_RCC_SDIO_CONFIG              __HAL_RCC_SDMMC1_CONFIG
+#define __HAL_RCC_GET_SDIO_SOURCE          __HAL_RCC_GET_SDMMC1_SOURCE	
+#endif
+
+#if defined(STM32F7)
+#define RCC_SDIOCLKSOURCE_CLK48             RCC_SDMMC1CLKSOURCE_CLK48
+#define RCC_SDIOCLKSOURCE_SYSCLK           RCC_SDMMC1CLKSOURCE_SYSCLK
+#endif
+
+#define __HAL_RCC_I2SCLK            __HAL_RCC_I2S_CONFIG
+#define __HAL_RCC_I2SCLK_CONFIG     __HAL_RCC_I2S_CONFIG
+
+#define __RCC_PLLSRC                RCC_GET_PLL_OSCSOURCE
+
+#define IS_RCC_MSIRANGE             IS_RCC_MSI_CLOCK_RANGE
+#define IS_RCC_RTCCLK_SOURCE        IS_RCC_RTCCLKSOURCE
+#define IS_RCC_SYSCLK_DIV           IS_RCC_HCLK
+#define IS_RCC_HCLK_DIV             IS_RCC_PCLK
+#define IS_RCC_PERIPHCLK            IS_RCC_PERIPHCLOCK
+
+#define RCC_IT_HSI14                RCC_IT_HSI14RDY
+
+#if defined(STM32L0)
+#define RCC_IT_LSECSS              RCC_IT_CSSLSE 
+#define RCC_IT_CSS                 RCC_IT_CSSHSE
+#endif
+
+#define IS_RCC_MCOSOURCE            IS_RCC_MCO1SOURCE
+#define __HAL_RCC_MCO_CONFIG        __HAL_RCC_MCO1_CONFIG
+#define RCC_MCO_NODIV               RCC_MCODIV_1
+#define RCC_MCO_DIV1                RCC_MCODIV_1
+#define RCC_MCO_DIV2                RCC_MCODIV_2
+#define RCC_MCO_DIV4                RCC_MCODIV_4
+#define RCC_MCO_DIV8                RCC_MCODIV_8
+#define RCC_MCO_DIV16               RCC_MCODIV_16
+#define RCC_MCO_DIV32               RCC_MCODIV_32
+#define RCC_MCO_DIV64               RCC_MCODIV_64
+#define RCC_MCO_DIV128              RCC_MCODIV_128
+#define RCC_MCOSOURCE_NONE          RCC_MCO1SOURCE_NOCLOCK
+#define RCC_MCOSOURCE_LSI           RCC_MCO1SOURCE_LSI
+#define RCC_MCOSOURCE_LSE           RCC_MCO1SOURCE_LSE
+#define RCC_MCOSOURCE_SYSCLK        RCC_MCO1SOURCE_SYSCLK
+#define RCC_MCOSOURCE_HSI           RCC_MCO1SOURCE_HSI
+#define RCC_MCOSOURCE_HSI14         RCC_MCO1SOURCE_HSI14
+#define RCC_MCOSOURCE_HSI48         RCC_MCO1SOURCE_HSI48
+#define RCC_MCOSOURCE_HSE           RCC_MCO1SOURCE_HSE
+#define RCC_MCOSOURCE_PLLCLK_DIV1   RCC_MCO1SOURCE_PLLCLK
+#define RCC_MCOSOURCE_PLLCLK_NODIV  RCC_MCO1SOURCE_PLLCLK
+#define RCC_MCOSOURCE_PLLCLK_DIV2   RCC_MCO1SOURCE_PLLCLK_DIV2
+
+#define RCC_RTCCLKSOURCE_NONE       RCC_RTCCLKSOURCE_NO_CLK
+
+#define RCC_USBCLK_PLLSAI1          RCC_USBCLKSOURCE_PLLSAI1
+#define RCC_USBCLK_PLL              RCC_USBCLKSOURCE_PLL
+#define RCC_USBCLK_MSI              RCC_USBCLKSOURCE_MSI
+#define RCC_USBCLKSOURCE_PLLCLK     RCC_USBCLKSOURCE_PLL
+#define RCC_USBPLLCLK_DIV1          RCC_USBCLKSOURCE_PLL
+#define RCC_USBPLLCLK_DIV1_5        RCC_USBCLKSOURCE_PLL_DIV1_5
+#define RCC_USBPLLCLK_DIV2          RCC_USBCLKSOURCE_PLL_DIV2
+#define RCC_USBPLLCLK_DIV3          RCC_USBCLKSOURCE_PLL_DIV3
+
+#define HSION_BitNumber        RCC_HSION_BIT_NUMBER
+#define HSION_BITNUMBER        RCC_HSION_BIT_NUMBER
+#define HSEON_BitNumber        RCC_HSEON_BIT_NUMBER
+#define HSEON_BITNUMBER        RCC_HSEON_BIT_NUMBER
+#define MSION_BITNUMBER        RCC_MSION_BIT_NUMBER
+#define CSSON_BitNumber        RCC_CSSON_BIT_NUMBER
+#define CSSON_BITNUMBER        RCC_CSSON_BIT_NUMBER
+#define PLLON_BitNumber        RCC_PLLON_BIT_NUMBER
+#define PLLON_BITNUMBER        RCC_PLLON_BIT_NUMBER
+#define PLLI2SON_BitNumber     RCC_PLLI2SON_BIT_NUMBER
+#define I2SSRC_BitNumber       RCC_I2SSRC_BIT_NUMBER
+#define RTCEN_BitNumber        RCC_RTCEN_BIT_NUMBER
+#define RTCEN_BITNUMBER        RCC_RTCEN_BIT_NUMBER
+#define BDRST_BitNumber        RCC_BDRST_BIT_NUMBER
+#define BDRST_BITNUMBER        RCC_BDRST_BIT_NUMBER
+#define RTCRST_BITNUMBER       RCC_RTCRST_BIT_NUMBER
+#define LSION_BitNumber        RCC_LSION_BIT_NUMBER
+#define LSION_BITNUMBER        RCC_LSION_BIT_NUMBER
+#define LSEON_BitNumber        RCC_LSEON_BIT_NUMBER
+#define LSEON_BITNUMBER        RCC_LSEON_BIT_NUMBER
+#define LSEBYP_BITNUMBER       RCC_LSEBYP_BIT_NUMBER
+#define PLLSAION_BitNumber     RCC_PLLSAION_BIT_NUMBER
+#define TIMPRE_BitNumber       RCC_TIMPRE_BIT_NUMBER
+#define RMVF_BitNumber         RCC_RMVF_BIT_NUMBER
+#define RMVF_BITNUMBER         RCC_RMVF_BIT_NUMBER
+#define RCC_CR2_HSI14TRIM_BitNumber RCC_HSI14TRIM_BIT_NUMBER
+#define CR_BYTE2_ADDRESS       RCC_CR_BYTE2_ADDRESS
+#define CIR_BYTE1_ADDRESS      RCC_CIR_BYTE1_ADDRESS
+#define CIR_BYTE2_ADDRESS      RCC_CIR_BYTE2_ADDRESS
+#define BDCR_BYTE0_ADDRESS     RCC_BDCR_BYTE0_ADDRESS
+#define DBP_TIMEOUT_VALUE      RCC_DBP_TIMEOUT_VALUE
+#define LSE_TIMEOUT_VALUE      RCC_LSE_TIMEOUT_VALUE
+
+#define CR_HSION_BB            RCC_CR_HSION_BB
+#define CR_CSSON_BB            RCC_CR_CSSON_BB
+#define CR_PLLON_BB            RCC_CR_PLLON_BB
+#define CR_PLLI2SON_BB         RCC_CR_PLLI2SON_BB
+#define CR_MSION_BB            RCC_CR_MSION_BB
+#define CSR_LSION_BB           RCC_CSR_LSION_BB
+#define CSR_LSEON_BB           RCC_CSR_LSEON_BB
+#define CSR_LSEBYP_BB          RCC_CSR_LSEBYP_BB
+#define CSR_RTCEN_BB           RCC_CSR_RTCEN_BB
+#define CSR_RTCRST_BB          RCC_CSR_RTCRST_BB
+#define CFGR_I2SSRC_BB         RCC_CFGR_I2SSRC_BB
+#define BDCR_RTCEN_BB          RCC_BDCR_RTCEN_BB
+#define BDCR_BDRST_BB          RCC_BDCR_BDRST_BB
+#define CR_HSEON_BB            RCC_CR_HSEON_BB
+#define CSR_RMVF_BB            RCC_CSR_RMVF_BB
+#define CR_PLLSAION_BB         RCC_CR_PLLSAION_BB
+#define DCKCFGR_TIMPRE_BB      RCC_DCKCFGR_TIMPRE_BB
+
+#define __HAL_RCC_CRS_ENABLE_FREQ_ERROR_COUNTER     __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE
+#define __HAL_RCC_CRS_DISABLE_FREQ_ERROR_COUNTER    __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE
+#define __HAL_RCC_CRS_ENABLE_AUTOMATIC_CALIB        __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE
+#define __HAL_RCC_CRS_DISABLE_AUTOMATIC_CALIB       __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE
+#define __HAL_RCC_CRS_CALCULATE_RELOADVALUE         __HAL_RCC_CRS_RELOADVALUE_CALCULATE
+
+#define __HAL_RCC_GET_IT_SOURCE                     __HAL_RCC_GET_IT
+
+#define RCC_CRS_SYNCWARM       RCC_CRS_SYNCWARN
+#define RCC_CRS_TRIMOV         RCC_CRS_TRIMOVF
+
+#define RCC_PERIPHCLK_CK48               RCC_PERIPHCLK_CLK48
+#define RCC_CK48CLKSOURCE_PLLQ           RCC_CLK48CLKSOURCE_PLLQ
+#define RCC_CK48CLKSOURCE_PLLSAIP        RCC_CLK48CLKSOURCE_PLLSAIP
+#define RCC_CK48CLKSOURCE_PLLI2SQ        RCC_CLK48CLKSOURCE_PLLI2SQ
+#define IS_RCC_CK48CLKSOURCE             IS_RCC_CLK48CLKSOURCE
+#define RCC_SDIOCLKSOURCE_CK48           RCC_SDIOCLKSOURCE_CLK48
+
+#define __HAL_RCC_DFSDM_CLK_ENABLE             __HAL_RCC_DFSDM1_CLK_ENABLE
+#define __HAL_RCC_DFSDM_CLK_DISABLE            __HAL_RCC_DFSDM1_CLK_DISABLE
+#define __HAL_RCC_DFSDM_IS_CLK_ENABLED         __HAL_RCC_DFSDM1_IS_CLK_ENABLED
+#define __HAL_RCC_DFSDM_IS_CLK_DISABLED        __HAL_RCC_DFSDM1_IS_CLK_DISABLED
+#define __HAL_RCC_DFSDM_FORCE_RESET            __HAL_RCC_DFSDM1_FORCE_RESET
+#define __HAL_RCC_DFSDM_RELEASE_RESET          __HAL_RCC_DFSDM1_RELEASE_RESET
+#define __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE       __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE
+#define __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE      __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE
+#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_ENABLED   __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED
+#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_DISABLED  __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED
+#define DfsdmClockSelection         Dfsdm1ClockSelection
+#define RCC_PERIPHCLK_DFSDM         RCC_PERIPHCLK_DFSDM1
+#define RCC_DFSDMCLKSOURCE_PCLK     RCC_DFSDM1CLKSOURCE_PCLK
+#define RCC_DFSDMCLKSOURCE_SYSCLK   RCC_DFSDM1CLKSOURCE_SYSCLK
+#define __HAL_RCC_DFSDM_CONFIG      __HAL_RCC_DFSDM1_CONFIG
+#define __HAL_RCC_GET_DFSDM_SOURCE  __HAL_RCC_GET_DFSDM1_SOURCE
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_RNG_Aliased_Macros HAL RNG Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define  HAL_RNG_ReadyCallback(__HANDLE__)  HAL_RNG_ReadyDataCallback((__HANDLE__), uint32_t random32bit)                                       
+
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
+  * @{
+  */
+  
+#define __HAL_RTC_CLEAR_FLAG                      __HAL_RTC_EXTI_CLEAR_FLAG
+#define __HAL_RTC_DISABLE_IT                      __HAL_RTC_EXTI_DISABLE_IT
+#define __HAL_RTC_ENABLE_IT                       __HAL_RTC_EXTI_ENABLE_IT
+
+#if defined (STM32F1)
+#define __HAL_RTC_EXTI_CLEAR_FLAG(RTC_EXTI_LINE_ALARM_EVENT)  __HAL_RTC_ALARM_EXTI_CLEAR_FLAG()
+
+#define __HAL_RTC_EXTI_ENABLE_IT(RTC_EXTI_LINE_ALARM_EVENT)   __HAL_RTC_ALARM_EXTI_ENABLE_IT()
+
+#define __HAL_RTC_EXTI_DISABLE_IT(RTC_EXTI_LINE_ALARM_EVENT)  __HAL_RTC_ALARM_EXTI_DISABLE_IT()
+
+#define __HAL_RTC_EXTI_GET_FLAG(RTC_EXTI_LINE_ALARM_EVENT)    __HAL_RTC_ALARM_EXTI_GET_FLAG()
+
+#define __HAL_RTC_EXTI_GENERATE_SWIT(RTC_EXTI_LINE_ALARM_EVENT)   __HAL_RTC_ALARM_EXTI_GENERATE_SWIT()
+#else
+#define __HAL_RTC_EXTI_CLEAR_FLAG(__EXTI_LINE__)  (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() : \
+                                                   (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() : \
+                                                      __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()))
+#define __HAL_RTC_EXTI_ENABLE_IT(__EXTI_LINE__)   (((__EXTI_LINE__)  == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_ENABLE_IT() : \
+                                                  (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() : \
+                                                      __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()))
+#define __HAL_RTC_EXTI_DISABLE_IT(__EXTI_LINE__)  (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_DISABLE_IT() : \
+                                                  (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() : \
+                                                      __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()))
+#define __HAL_RTC_EXTI_GET_FLAG(__EXTI_LINE__)    (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GET_FLAG() : \
+                                                  (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() : \
+                                                      __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()))
+#define __HAL_RTC_EXTI_GENERATE_SWIT(__EXTI_LINE__)   (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() : \
+                                                      (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() :  \
+                                                          __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()))
+#endif   /* STM32F1 */
+
+#define IS_ALARM                                  IS_RTC_ALARM
+#define IS_ALARM_MASK                             IS_RTC_ALARM_MASK
+#define IS_TAMPER                                 IS_RTC_TAMPER
+#define IS_TAMPER_ERASE_MODE                      IS_RTC_TAMPER_ERASE_MODE
+#define IS_TAMPER_FILTER                          IS_RTC_TAMPER_FILTER 
+#define IS_TAMPER_INTERRUPT                       IS_RTC_TAMPER_INTERRUPT
+#define IS_TAMPER_MASKFLAG_STATE                  IS_RTC_TAMPER_MASKFLAG_STATE
+#define IS_TAMPER_PRECHARGE_DURATION              IS_RTC_TAMPER_PRECHARGE_DURATION
+#define IS_TAMPER_PULLUP_STATE                    IS_RTC_TAMPER_PULLUP_STATE
+#define IS_TAMPER_SAMPLING_FREQ                   IS_RTC_TAMPER_SAMPLING_FREQ
+#define IS_TAMPER_TIMESTAMPONTAMPER_DETECTION     IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION
+#define IS_TAMPER_TRIGGER                         IS_RTC_TAMPER_TRIGGER
+#define IS_WAKEUP_CLOCK                           IS_RTC_WAKEUP_CLOCK
+#define IS_WAKEUP_COUNTER                         IS_RTC_WAKEUP_COUNTER
+
+#define __RTC_WRITEPROTECTION_ENABLE  __HAL_RTC_WRITEPROTECTION_ENABLE
+#define __RTC_WRITEPROTECTION_DISABLE  __HAL_RTC_WRITEPROTECTION_DISABLE
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_SD_Aliased_Macros HAL SD Aliased Macros maintained for legacy purpose
+  * @{
+  */
+
+#define SD_OCR_CID_CSD_OVERWRIETE   SD_OCR_CID_CSD_OVERWRITE
+#define SD_CMD_SD_APP_STAUS         SD_CMD_SD_APP_STATUS
+
+#if defined(STM32F4)
+#define  SD_SDMMC_DISABLED          SD_SDIO_DISABLED
+#define  SD_SDMMC_FUNCTION_BUSY     SD_SDIO_FUNCTION_BUSY     
+#define  SD_SDMMC_FUNCTION_FAILED   SD_SDIO_FUNCTION_FAILED   
+#define  SD_SDMMC_UNKNOWN_FUNCTION  SD_SDIO_UNKNOWN_FUNCTION  
+#define  SD_CMD_SDMMC_SEN_OP_COND   SD_CMD_SDIO_SEN_OP_COND   
+#define  SD_CMD_SDMMC_RW_DIRECT     SD_CMD_SDIO_RW_DIRECT     
+#define  SD_CMD_SDMMC_RW_EXTENDED   SD_CMD_SDIO_RW_EXTENDED   
+#define  __HAL_SD_SDMMC_ENABLE      __HAL_SD_SDIO_ENABLE      
+#define  __HAL_SD_SDMMC_DISABLE     __HAL_SD_SDIO_DISABLE     
+#define  __HAL_SD_SDMMC_DMA_ENABLE  __HAL_SD_SDIO_DMA_ENABLE  
+#define  __HAL_SD_SDMMC_DMA_DISABLE __HAL_SD_SDIO_DMA_DISABL  
+#define  __HAL_SD_SDMMC_ENABLE_IT   __HAL_SD_SDIO_ENABLE_IT   
+#define  __HAL_SD_SDMMC_DISABLE_IT  __HAL_SD_SDIO_DISABLE_IT  
+#define  __HAL_SD_SDMMC_GET_FLAG    __HAL_SD_SDIO_GET_FLAG    
+#define  __HAL_SD_SDMMC_CLEAR_FLAG  __HAL_SD_SDIO_CLEAR_FLAG  
+#define  __HAL_SD_SDMMC_GET_IT      __HAL_SD_SDIO_GET_IT      
+#define  __HAL_SD_SDMMC_CLEAR_IT    __HAL_SD_SDIO_CLEAR_IT    
+#define  SDMMC_STATIC_FLAGS         SDIO_STATIC_FLAGS	       
+#define  SDMMC_CMD0TIMEOUT          SDIO_CMD0TIMEOUT	       
+#define  SD_SDMMC_SEND_IF_COND      SD_SDIO_SEND_IF_COND
+/* alias CMSIS */
+#define  SDMMC1_IRQn                SDIO_IRQn
+#define  SDMMC1_IRQHandler          SDIO_IRQHandler
+#endif
+
+#if defined(STM32F7) || defined(STM32L4)
+#define  SD_SDIO_DISABLED           SD_SDMMC_DISABLED
+#define  SD_SDIO_FUNCTION_BUSY      SD_SDMMC_FUNCTION_BUSY    
+#define  SD_SDIO_FUNCTION_FAILED    SD_SDMMC_FUNCTION_FAILED  
+#define  SD_SDIO_UNKNOWN_FUNCTION   SD_SDMMC_UNKNOWN_FUNCTION
+#define  SD_CMD_SDIO_SEN_OP_COND    SD_CMD_SDMMC_SEN_OP_COND
+#define  SD_CMD_SDIO_RW_DIRECT      SD_CMD_SDMMC_RW_DIRECT
+#define  SD_CMD_SDIO_RW_EXTENDED    SD_CMD_SDMMC_RW_EXTENDED
+#define  __HAL_SD_SDIO_ENABLE       __HAL_SD_SDMMC_ENABLE
+#define  __HAL_SD_SDIO_DISABLE      __HAL_SD_SDMMC_DISABLE
+#define  __HAL_SD_SDIO_DMA_ENABLE   __HAL_SD_SDMMC_DMA_ENABLE
+#define  __HAL_SD_SDIO_DMA_DISABL   __HAL_SD_SDMMC_DMA_DISABLE
+#define  __HAL_SD_SDIO_ENABLE_IT    __HAL_SD_SDMMC_ENABLE_IT
+#define  __HAL_SD_SDIO_DISABLE_IT   __HAL_SD_SDMMC_DISABLE_IT
+#define  __HAL_SD_SDIO_GET_FLAG     __HAL_SD_SDMMC_GET_FLAG
+#define  __HAL_SD_SDIO_CLEAR_FLAG   __HAL_SD_SDMMC_CLEAR_FLAG
+#define  __HAL_SD_SDIO_GET_IT       __HAL_SD_SDMMC_GET_IT
+#define  __HAL_SD_SDIO_CLEAR_IT     __HAL_SD_SDMMC_CLEAR_IT
+#define  SDIO_STATIC_FLAGS	        SDMMC_STATIC_FLAGS
+#define  SDIO_CMD0TIMEOUT	          SDMMC_CMD0TIMEOUT
+#define  SD_SDIO_SEND_IF_COND	      SD_SDMMC_SEND_IF_COND
+/* alias CMSIS for compatibilities */
+#define  SDIO_IRQn                  SDMMC1_IRQn
+#define  SDIO_IRQHandler            SDMMC1_IRQHandler
+#endif
+/**
+  * @}
+  */
+
+/** @defgroup HAL_SMARTCARD_Aliased_Macros HAL SMARTCARD Aliased Macros maintained for legacy purpose
+  * @{
+  */
+
+#define __SMARTCARD_ENABLE_IT           __HAL_SMARTCARD_ENABLE_IT
+#define __SMARTCARD_DISABLE_IT          __HAL_SMARTCARD_DISABLE_IT
+#define __SMARTCARD_ENABLE              __HAL_SMARTCARD_ENABLE
+#define __SMARTCARD_DISABLE             __HAL_SMARTCARD_DISABLE
+#define __SMARTCARD_DMA_REQUEST_ENABLE  __HAL_SMARTCARD_DMA_REQUEST_ENABLE
+#define __SMARTCARD_DMA_REQUEST_DISABLE __HAL_SMARTCARD_DMA_REQUEST_DISABLE
+
+#define __HAL_SMARTCARD_GETCLOCKSOURCE  SMARTCARD_GETCLOCKSOURCE
+#define __SMARTCARD_GETCLOCKSOURCE      SMARTCARD_GETCLOCKSOURCE
+
+#define IS_SMARTCARD_ONEBIT_SAMPLING    IS_SMARTCARD_ONE_BIT_SAMPLE                  
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_SMBUS_Aliased_Macros HAL SMBUS Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __HAL_SMBUS_RESET_CR1           SMBUS_RESET_CR1
+#define __HAL_SMBUS_RESET_CR2           SMBUS_RESET_CR2
+#define __HAL_SMBUS_GENERATE_START      SMBUS_GENERATE_START
+#define __HAL_SMBUS_GET_ADDR_MATCH      SMBUS_GET_ADDR_MATCH
+#define __HAL_SMBUS_GET_DIR             SMBUS_GET_DIR
+#define __HAL_SMBUS_GET_STOP_MODE       SMBUS_GET_STOP_MODE
+#define __HAL_SMBUS_GET_PEC_MODE        SMBUS_GET_PEC_MODE
+#define __HAL_SMBUS_GET_ALERT_ENABLED   SMBUS_GET_ALERT_ENABLED
+/**
+  * @}
+  */
+
+/** @defgroup HAL_SPI_Aliased_Macros HAL SPI Aliased Macros maintained for legacy purpose
+  * @{
+  */
+
+#define __HAL_SPI_1LINE_TX              SPI_1LINE_TX
+#define __HAL_SPI_1LINE_RX              SPI_1LINE_RX
+#define __HAL_SPI_RESET_CRC             SPI_RESET_CRC
+
+/**
+  * @}
+  */
+  
+/** @defgroup HAL_UART_Aliased_Macros HAL UART Aliased Macros maintained for legacy purpose
+  * @{
+  */
+
+#define __HAL_UART_GETCLOCKSOURCE       UART_GETCLOCKSOURCE
+#define __HAL_UART_MASK_COMPUTATION     UART_MASK_COMPUTATION
+#define __UART_GETCLOCKSOURCE           UART_GETCLOCKSOURCE
+#define __UART_MASK_COMPUTATION         UART_MASK_COMPUTATION
+
+#define IS_UART_WAKEUPMETHODE           IS_UART_WAKEUPMETHOD
+
+#define IS_UART_ONEBIT_SAMPLE           IS_UART_ONE_BIT_SAMPLE                  
+#define IS_UART_ONEBIT_SAMPLING         IS_UART_ONE_BIT_SAMPLE                  
+
+/**
+  * @}
+  */
+
+
+/** @defgroup HAL_USART_Aliased_Macros HAL USART Aliased Macros maintained for legacy purpose
+  * @{
+  */
+
+#define __USART_ENABLE_IT               __HAL_USART_ENABLE_IT
+#define __USART_DISABLE_IT              __HAL_USART_DISABLE_IT
+#define __USART_ENABLE                  __HAL_USART_ENABLE
+#define __USART_DISABLE                 __HAL_USART_DISABLE
+
+#define __HAL_USART_GETCLOCKSOURCE      USART_GETCLOCKSOURCE
+#define __USART_GETCLOCKSOURCE          USART_GETCLOCKSOURCE
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_USB_Aliased_Macros HAL USB Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define USB_EXTI_LINE_WAKEUP                               USB_WAKEUP_EXTI_LINE
+
+#define USB_FS_EXTI_TRIGGER_RISING_EDGE                    USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE
+#define USB_FS_EXTI_TRIGGER_FALLING_EDGE                   USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE
+#define USB_FS_EXTI_TRIGGER_BOTH_EDGE                      USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE
+#define USB_FS_EXTI_LINE_WAKEUP                            USB_OTG_FS_WAKEUP_EXTI_LINE
+
+#define USB_HS_EXTI_TRIGGER_RISING_EDGE                    USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE
+#define USB_HS_EXTI_TRIGGER_FALLING_EDGE                   USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE
+#define USB_HS_EXTI_TRIGGER_BOTH_EDGE                      USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE
+#define USB_HS_EXTI_LINE_WAKEUP                            USB_OTG_HS_WAKEUP_EXTI_LINE
+
+#define __HAL_USB_EXTI_ENABLE_IT                           __HAL_USB_WAKEUP_EXTI_ENABLE_IT
+#define __HAL_USB_EXTI_DISABLE_IT                          __HAL_USB_WAKEUP_EXTI_DISABLE_IT
+#define __HAL_USB_EXTI_GET_FLAG                            __HAL_USB_WAKEUP_EXTI_GET_FLAG
+#define __HAL_USB_EXTI_CLEAR_FLAG                          __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG
+#define __HAL_USB_EXTI_SET_RISING_EDGE_TRIGGER             __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE
+#define __HAL_USB_EXTI_SET_FALLING_EDGE_TRIGGER            __HAL_USB_WAKEUP_EXTI_ENABLE_FALLING_EDGE
+#define __HAL_USB_EXTI_SET_FALLINGRISING_TRIGGER           __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE
+
+#define __HAL_USB_FS_EXTI_ENABLE_IT                        __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT
+#define __HAL_USB_FS_EXTI_DISABLE_IT                       __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT
+#define __HAL_USB_FS_EXTI_GET_FLAG                         __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG
+#define __HAL_USB_FS_EXTI_CLEAR_FLAG                       __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG
+#define __HAL_USB_FS_EXTI_SET_RISING_EGDE_TRIGGER          __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE
+#define __HAL_USB_FS_EXTI_SET_FALLING_EGDE_TRIGGER         __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_FALLING_EDGE
+#define __HAL_USB_FS_EXTI_SET_FALLINGRISING_TRIGGER        __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE
+#define __HAL_USB_FS_EXTI_GENERATE_SWIT                    __HAL_USB_OTG_FS_WAKEUP_EXTI_GENERATE_SWIT
+
+#define __HAL_USB_HS_EXTI_ENABLE_IT                        __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT
+#define __HAL_USB_HS_EXTI_DISABLE_IT                       __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT
+#define __HAL_USB_HS_EXTI_GET_FLAG                         __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG
+#define __HAL_USB_HS_EXTI_CLEAR_FLAG                       __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG
+#define __HAL_USB_HS_EXTI_SET_RISING_EGDE_TRIGGER          __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE
+#define __HAL_USB_HS_EXTI_SET_FALLING_EGDE_TRIGGER         __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_FALLING_EDGE
+#define __HAL_USB_HS_EXTI_SET_FALLINGRISING_TRIGGER        __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE
+#define __HAL_USB_HS_EXTI_GENERATE_SWIT                    __HAL_USB_OTG_HS_WAKEUP_EXTI_GENERATE_SWIT
+
+#define HAL_PCD_ActiveRemoteWakeup                         HAL_PCD_ActivateRemoteWakeup
+#define HAL_PCD_DeActiveRemoteWakeup                       HAL_PCD_DeActivateRemoteWakeup
+
+#define HAL_PCD_SetTxFiFo                                  HAL_PCDEx_SetTxFiFo
+#define HAL_PCD_SetRxFiFo                                  HAL_PCDEx_SetRxFiFo
+/**
+  * @}
+  */
+
+/** @defgroup HAL_TIM_Aliased_Macros HAL TIM Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __HAL_TIM_SetICPrescalerValue   TIM_SET_ICPRESCALERVALUE
+#define __HAL_TIM_ResetICPrescalerValue TIM_RESET_ICPRESCALERVALUE
+
+#define TIM_GET_ITSTATUS                __HAL_TIM_GET_IT_SOURCE
+#define TIM_GET_CLEAR_IT                __HAL_TIM_CLEAR_IT
+
+#define __HAL_TIM_GET_ITSTATUS          __HAL_TIM_GET_IT_SOURCE
+
+#define __HAL_TIM_DIRECTION_STATUS      __HAL_TIM_IS_TIM_COUNTING_DOWN
+#define __HAL_TIM_PRESCALER             __HAL_TIM_SET_PRESCALER
+#define __HAL_TIM_SetCounter            __HAL_TIM_SET_COUNTER
+#define __HAL_TIM_GetCounter            __HAL_TIM_GET_COUNTER
+#define __HAL_TIM_SetAutoreload         __HAL_TIM_SET_AUTORELOAD
+#define __HAL_TIM_GetAutoreload         __HAL_TIM_GET_AUTORELOAD
+#define __HAL_TIM_SetClockDivision      __HAL_TIM_SET_CLOCKDIVISION
+#define __HAL_TIM_GetClockDivision      __HAL_TIM_GET_CLOCKDIVISION
+#define __HAL_TIM_SetICPrescaler        __HAL_TIM_SET_ICPRESCALER
+#define __HAL_TIM_GetICPrescaler        __HAL_TIM_GET_ICPRESCALER
+#define __HAL_TIM_SetCompare            __HAL_TIM_SET_COMPARE
+#define __HAL_TIM_GetCompare            __HAL_TIM_GET_COMPARE
+
+#define TIM_BREAKINPUTSOURCE_DFSDM  TIM_BREAKINPUTSOURCE_DFSDM1
+/**
+  * @}
+  */
+
+/** @defgroup HAL_ETH_Aliased_Macros HAL ETH Aliased Macros maintained for legacy purpose
+  * @{
+  */
+  
+#define __HAL_ETH_EXTI_ENABLE_IT                   __HAL_ETH_WAKEUP_EXTI_ENABLE_IT
+#define __HAL_ETH_EXTI_DISABLE_IT                  __HAL_ETH_WAKEUP_EXTI_DISABLE_IT
+#define __HAL_ETH_EXTI_GET_FLAG                    __HAL_ETH_WAKEUP_EXTI_GET_FLAG
+#define __HAL_ETH_EXTI_CLEAR_FLAG                  __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG
+#define __HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER     __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE_TRIGGER
+#define __HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER    __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE_TRIGGER
+#define __HAL_ETH_EXTI_SET_FALLINGRISING_TRIGGER   __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER
+
+#define ETH_PROMISCIOUSMODE_ENABLE   ETH_PROMISCUOUS_MODE_ENABLE 
+#define ETH_PROMISCIOUSMODE_DISABLE  ETH_PROMISCUOUS_MODE_DISABLE
+#define IS_ETH_PROMISCIOUS_MODE      IS_ETH_PROMISCUOUS_MODE
+/**
+  * @}
+  */
+
+/** @defgroup HAL_LTDC_Aliased_Macros HAL LTDC Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define __HAL_LTDC_LAYER LTDC_LAYER
+/**
+  * @}
+  */
+
+/** @defgroup HAL_SAI_Aliased_Macros HAL SAI Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#define SAI_OUTPUTDRIVE_DISABLED          SAI_OUTPUTDRIVE_DISABLE
+#define SAI_OUTPUTDRIVE_ENABLED           SAI_OUTPUTDRIVE_ENABLE
+#define SAI_MASTERDIVIDER_ENABLED         SAI_MASTERDIVIDER_ENABLE
+#define SAI_MASTERDIVIDER_DISABLED        SAI_MASTERDIVIDER_DISABLE
+#define SAI_STREOMODE                     SAI_STEREOMODE
+#define SAI_FIFOStatus_Empty              SAI_FIFOSTATUS_EMPTY
+#define SAI_FIFOStatus_Less1QuarterFull   SAI_FIFOSTATUS_LESS1QUARTERFULL
+#define SAI_FIFOStatus_1QuarterFull       SAI_FIFOSTATUS_1QUARTERFULL
+#define SAI_FIFOStatus_HalfFull           SAI_FIFOSTATUS_HALFFULL
+#define SAI_FIFOStatus_3QuartersFull      SAI_FIFOSTATUS_3QUARTERFULL
+#define SAI_FIFOStatus_Full               SAI_FIFOSTATUS_FULL
+#define IS_SAI_BLOCK_MONO_STREO_MODE      IS_SAI_BLOCK_MONO_STEREO_MODE
+#define SAI_SYNCHRONOUS_EXT               SAI_SYNCHRONOUS_EXT_SAI1
+#define SAI_SYNCEXT_IN_ENABLE             SAI_SYNCEXT_OUTBLOCKA_ENABLE
+/**
+  * @}
+  */
+
+
+/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose
+  * @{
+  */
+  
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ___STM32_HAL_LEGACY */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,328 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   This file contains all the functions prototypes for the HAL 
+  *          module driver.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_H
+#define __STM32F1xx_HAL_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_conf.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup HAL
+  * @{
+  */ 
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* Exported macro ------------------------------------------------------------*/
+
+/** @defgroup HAL_Exported_Macros HAL Exported Macros
+  * @{
+  */
+
+/** @defgroup DBGMCU_Freeze_Unfreeze Freeze Unfreeze Peripherals in Debug mode
+  * @brief   Freeze/Unfreeze Peripherals in Debug mode 
+  * Note: On devices STM32F10xx8 and STM32F10xxB,
+  *                  STM32F101xC/D/E and STM32F103xC/D/E,
+  *                  STM32F101xF/G and STM32F103xF/G
+  *                  STM32F10xx4 and STM32F10xx6
+  *       Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in 
+  *       debug mode (not accessible by the user software in normal mode).
+  *       Refer to errata sheet of these devices for more details.
+  * @{
+  */
+   
+/* Peripherals on APB1 */
+/**
+  * @brief  TIM2 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM2()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM2_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM2()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM2_STOP)
+
+/**
+  * @brief  TIM3 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM3()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM3_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM3()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM3_STOP)
+
+#if defined (DBGMCU_CR_DBG_TIM4_STOP)
+/**
+  * @brief  TIM4 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM4()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM4_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM4()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM4_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM5_STOP)
+/**
+  * @brief  TIM5 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM5()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM5_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM5()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM5_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM6_STOP)
+/**
+  * @brief  TIM6 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM6()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM6_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM6()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM6_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM7_STOP)
+/**
+  * @brief  TIM7 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM7()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM7_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM7()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM7_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM12_STOP)
+/**
+  * @brief  TIM12 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM12()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM12_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM12()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM12_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM13_STOP)
+/**
+  * @brief  TIM13 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM13()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM13_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM13()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM13_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM14_STOP)
+/**
+  * @brief  TIM14 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM14()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM14_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM14()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM14_STOP)
+#endif
+
+/**
+  * @brief  WWDG Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_WWDG()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_WWDG_STOP)
+#define __HAL_DBGMCU_UNFREEZE_WWDG()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_WWDG_STOP)
+
+/**
+  * @brief  IWDG Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_IWDG()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_IWDG_STOP)
+#define __HAL_DBGMCU_UNFREEZE_IWDG()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_IWDG_STOP)
+
+/**
+  * @brief  I2C1 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT()    SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT)
+#define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT()  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT)
+
+#if defined (DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT)
+/**
+  * @brief  I2C2 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT()    SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT)
+#define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT()  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT)
+#endif
+
+#if defined (DBGMCU_CR_DBG_CAN1_STOP)
+/**
+  * @brief  CAN1 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_CAN1()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CAN1_STOP)
+#define __HAL_DBGMCU_UNFREEZE_CAN1()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CAN1_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_CAN2_STOP)
+/**
+  * @brief  CAN2 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_CAN2()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CAN2_STOP)
+#define __HAL_DBGMCU_UNFREEZE_CAN2()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CAN2_STOP)
+#endif   
+   
+/* Peripherals on APB2 */
+#if defined (DBGMCU_CR_DBG_TIM1_STOP)
+/**
+  * @brief  TIM1 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM1()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM1_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM1()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM1_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM8_STOP)
+/**
+  * @brief  TIM8 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM8()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM8_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM8()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM8_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM9_STOP)
+/**
+  * @brief  TIM9 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM9()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM9_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM9()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM9_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM10_STOP)
+/**
+  * @brief  TIM10 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM10()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM10_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM10()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM10_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM11_STOP)
+/**
+  * @brief  TIM11 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM11()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM11_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM11()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM11_STOP)
+#endif
+
+
+#if defined (DBGMCU_CR_DBG_TIM15_STOP)
+/**
+  * @brief  TIM15 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM15()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM15_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM15()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM15_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM16_STOP)
+/**
+  * @brief  TIM16 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM16()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM16_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM16()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM16_STOP)
+#endif
+
+#if defined (DBGMCU_CR_DBG_TIM17_STOP)
+/**
+  * @brief  TIM17 Peripherals Debug mode 
+  */
+#define __HAL_DBGMCU_FREEZE_TIM17()            SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM17_STOP)
+#define __HAL_DBGMCU_UNFREEZE_TIM17()          CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TIM17_STOP)
+#endif
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Exported functions --------------------------------------------------------*/
+
+/** @addtogroup HAL_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup HAL_Exported_Functions_Group1
+  * @{
+  */
+
+/* Initialization and de-initialization functions  ******************************/
+HAL_StatusTypeDef HAL_Init(void);
+HAL_StatusTypeDef HAL_DeInit(void);
+void              HAL_MspInit(void);
+void              HAL_MspDeInit(void);
+HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority);
+
+/**
+  * @}
+  */
+
+/** @addtogroup HAL_Exported_Functions_Group2
+  * @{
+  */
+
+/* Peripheral Control functions  ************************************************/
+void              HAL_IncTick(void);
+void              HAL_Delay(__IO uint32_t Delay);
+uint32_t          HAL_GetTick(void);
+void              HAL_SuspendTick(void);
+void              HAL_ResumeTick(void);
+uint32_t          HAL_GetHalVersion(void);
+uint32_t          HAL_GetREVID(void);
+uint32_t          HAL_GetDEVID(void);
+void              HAL_DBGMCU_EnableDBGSleepMode(void);
+void              HAL_DBGMCU_DisableDBGSleepMode(void);
+void              HAL_DBGMCU_EnableDBGStopMode(void);
+void              HAL_DBGMCU_DisableDBGStopMode(void);
+void              HAL_DBGMCU_EnableDBGStandbyMode(void);
+void              HAL_DBGMCU_DisableDBGStandbyMode(void);
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */ 
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,476 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_cortex.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of CORTEX HAL module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_CORTEX_H
+#define __STM32F1xx_HAL_CORTEX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup CORTEX
+  * @{
+  */ 
+/* Exported types ------------------------------------------------------------*/
+/** @defgroup CORTEX_Exported_Types Cortex Exported Types
+  * @{
+  */
+
+#if (__MPU_PRESENT == 1)
+/** @defgroup CORTEX_MPU_Region_Initialization_Structure_definition MPU Region Initialization Structure Definition
+  * @brief  MPU Region initialization structure 
+  * @{
+  */
+typedef struct
+{
+  uint8_t                Enable;                /*!< Specifies the status of the region. 
+                                                     This parameter can be a value of @ref CORTEX_MPU_Region_Enable                 */
+  uint8_t                Number;                /*!< Specifies the number of the region to protect. 
+                                                     This parameter can be a value of @ref CORTEX_MPU_Region_Number                 */
+  uint32_t               BaseAddress;           /*!< Specifies the base address of the region to protect.                           */
+  uint8_t                Size;                  /*!< Specifies the size of the region to protect. 
+                                                     This parameter can be a value of @ref CORTEX_MPU_Region_Size                   */
+  uint8_t                SubRegionDisable;      /*!< Specifies the number of the subregion protection to disable. 
+                                                     This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF    */         
+  uint8_t                TypeExtField;          /*!< Specifies the TEX field level.
+                                                     This parameter can be a value of @ref CORTEX_MPU_TEX_Levels                    */                 
+  uint8_t                AccessPermission;      /*!< Specifies the region access permission type. 
+                                                     This parameter can be a value of @ref CORTEX_MPU_Region_Permission_Attributes  */
+  uint8_t                DisableExec;           /*!< Specifies the instruction access status. 
+                                                     This parameter can be a value of @ref CORTEX_MPU_Instruction_Access            */
+  uint8_t                IsShareable;           /*!< Specifies the shareability status of the protected region. 
+                                                     This parameter can be a value of @ref CORTEX_MPU_Access_Shareable              */
+  uint8_t                IsCacheable;           /*!< Specifies the cacheable status of the region protected. 
+                                                     This parameter can be a value of @ref CORTEX_MPU_Access_Cacheable              */
+  uint8_t                IsBufferable;          /*!< Specifies the bufferable status of the protected region. 
+                                                     This parameter can be a value of @ref CORTEX_MPU_Access_Bufferable             */
+}MPU_Region_InitTypeDef;
+/**
+  * @}
+  */
+#endif /* __MPU_PRESENT */
+
+/**
+  * @}
+  */
+
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants
+  * @{
+  */
+
+
+/** @defgroup CORTEX_Preemption_Priority_Group  CORTEX Preemption Priority Group 
+  * @{
+  */
+
+#define NVIC_PRIORITYGROUP_0         ((uint32_t)0x00000007) /*!< 0 bits for pre-emption priority
+                                                                 4 bits for subpriority */
+#define NVIC_PRIORITYGROUP_1         ((uint32_t)0x00000006) /*!< 1 bits for pre-emption priority
+                                                                 3 bits for subpriority */
+#define NVIC_PRIORITYGROUP_2         ((uint32_t)0x00000005) /*!< 2 bits for pre-emption priority
+                                                                 2 bits for subpriority */
+#define NVIC_PRIORITYGROUP_3         ((uint32_t)0x00000004) /*!< 3 bits for pre-emption priority
+                                                                 1 bits for subpriority */
+#define NVIC_PRIORITYGROUP_4         ((uint32_t)0x00000003) /*!< 4 bits for pre-emption priority
+                                                                 0 bits for subpriority */
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_SysTick_clock_source CORTEX SysTick clock source
+  * @{
+  */
+#define SYSTICK_CLKSOURCE_HCLK_DIV8    ((uint32_t)0x00000000)
+#define SYSTICK_CLKSOURCE_HCLK         ((uint32_t)0x00000004)
+
+/**
+  * @}
+  */
+
+#if (__MPU_PRESENT == 1)
+/** @defgroup CORTEX_MPU_HFNMI_PRIVDEF_Control MPU HFNMI and PRIVILEGED Access control
+  * @{
+  */
+#define  MPU_HFNMI_PRIVDEF_NONE      ((uint32_t)0x00000000)  
+#define  MPU_HARDFAULT_NMI           ((uint32_t)0x00000002)
+#define  MPU_PRIVILEGED_DEFAULT      ((uint32_t)0x00000004)
+#define  MPU_HFNMI_PRIVDEF           ((uint32_t)0x00000006)
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_MPU_Region_Enable CORTEX MPU Region Enable
+  * @{
+  */
+#define  MPU_REGION_ENABLE     ((uint8_t)0x01)
+#define  MPU_REGION_DISABLE    ((uint8_t)0x00)
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_MPU_Instruction_Access CORTEX MPU Instruction Access
+  * @{
+  */
+#define  MPU_INSTRUCTION_ACCESS_ENABLE      ((uint8_t)0x00)
+#define  MPU_INSTRUCTION_ACCESS_DISABLE     ((uint8_t)0x01)
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_MPU_Access_Shareable CORTEX MPU Instruction Access Shareable
+  * @{
+  */
+#define  MPU_ACCESS_SHAREABLE        ((uint8_t)0x01)
+#define  MPU_ACCESS_NOT_SHAREABLE    ((uint8_t)0x00)
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_MPU_Access_Cacheable CORTEX MPU Instruction Access Cacheable
+  * @{
+  */
+#define  MPU_ACCESS_CACHEABLE         ((uint8_t)0x01)
+#define  MPU_ACCESS_NOT_CACHEABLE     ((uint8_t)0x00)
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_MPU_Access_Bufferable CORTEX MPU Instruction Access Bufferable
+  * @{
+  */
+#define  MPU_ACCESS_BUFFERABLE         ((uint8_t)0x01)
+#define  MPU_ACCESS_NOT_BUFFERABLE     ((uint8_t)0x00)
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_MPU_TEX_Levels MPU TEX Levels
+  * @{
+  */
+#define  MPU_TEX_LEVEL0    ((uint8_t)0x00)
+#define  MPU_TEX_LEVEL1    ((uint8_t)0x01)
+#define  MPU_TEX_LEVEL2    ((uint8_t)0x02)
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_MPU_Region_Size CORTEX MPU Region Size
+  * @{
+  */
+#define   MPU_REGION_SIZE_32B      ((uint8_t)0x04)
+#define   MPU_REGION_SIZE_64B      ((uint8_t)0x05)
+#define   MPU_REGION_SIZE_128B     ((uint8_t)0x06) 
+#define   MPU_REGION_SIZE_256B     ((uint8_t)0x07) 
+#define   MPU_REGION_SIZE_512B     ((uint8_t)0x08) 
+#define   MPU_REGION_SIZE_1KB      ((uint8_t)0x09)  
+#define   MPU_REGION_SIZE_2KB      ((uint8_t)0x0A)
+#define   MPU_REGION_SIZE_4KB      ((uint8_t)0x0B) 
+#define   MPU_REGION_SIZE_8KB      ((uint8_t)0x0C) 
+#define   MPU_REGION_SIZE_16KB     ((uint8_t)0x0D) 
+#define   MPU_REGION_SIZE_32KB     ((uint8_t)0x0E) 
+#define   MPU_REGION_SIZE_64KB     ((uint8_t)0x0F) 
+#define   MPU_REGION_SIZE_128KB    ((uint8_t)0x10)
+#define   MPU_REGION_SIZE_256KB    ((uint8_t)0x11)
+#define   MPU_REGION_SIZE_512KB    ((uint8_t)0x12)
+#define   MPU_REGION_SIZE_1MB      ((uint8_t)0x13) 
+#define   MPU_REGION_SIZE_2MB      ((uint8_t)0x14) 
+#define   MPU_REGION_SIZE_4MB      ((uint8_t)0x15) 
+#define   MPU_REGION_SIZE_8MB      ((uint8_t)0x16) 
+#define   MPU_REGION_SIZE_16MB     ((uint8_t)0x17)
+#define   MPU_REGION_SIZE_32MB     ((uint8_t)0x18)
+#define   MPU_REGION_SIZE_64MB     ((uint8_t)0x19)
+#define   MPU_REGION_SIZE_128MB    ((uint8_t)0x1A)
+#define   MPU_REGION_SIZE_256MB    ((uint8_t)0x1B)
+#define   MPU_REGION_SIZE_512MB    ((uint8_t)0x1C)
+#define   MPU_REGION_SIZE_1GB      ((uint8_t)0x1D) 
+#define   MPU_REGION_SIZE_2GB      ((uint8_t)0x1E) 
+#define   MPU_REGION_SIZE_4GB      ((uint8_t)0x1F)
+/**                                
+  * @}
+  */
+   
+/** @defgroup CORTEX_MPU_Region_Permission_Attributes CORTEX MPU Region Permission Attributes 
+  * @{
+  */
+#define  MPU_REGION_NO_ACCESS      ((uint8_t)0x00)  
+#define  MPU_REGION_PRIV_RW        ((uint8_t)0x01) 
+#define  MPU_REGION_PRIV_RW_URO    ((uint8_t)0x02)  
+#define  MPU_REGION_FULL_ACCESS    ((uint8_t)0x03)  
+#define  MPU_REGION_PRIV_RO        ((uint8_t)0x05) 
+#define  MPU_REGION_PRIV_RO_URO    ((uint8_t)0x06)
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_MPU_Region_Number CORTEX MPU Region Number
+  * @{
+  */
+#define  MPU_REGION_NUMBER0    ((uint8_t)0x00)  
+#define  MPU_REGION_NUMBER1    ((uint8_t)0x01) 
+#define  MPU_REGION_NUMBER2    ((uint8_t)0x02)  
+#define  MPU_REGION_NUMBER3    ((uint8_t)0x03)  
+#define  MPU_REGION_NUMBER4    ((uint8_t)0x04) 
+#define  MPU_REGION_NUMBER5    ((uint8_t)0x05)
+#define  MPU_REGION_NUMBER6    ((uint8_t)0x06)
+#define  MPU_REGION_NUMBER7    ((uint8_t)0x07)
+/**
+  * @}
+  */
+#endif /* __MPU_PRESENT */
+
+/**
+  * @}
+  */
+  
+
+/* Private macro -------------------------------------------------------------*/
+/** @defgroup CORTEX_Private_Macros CORTEX Private Macros
+  * @{
+  */  
+
+/** @defgroup CORTEX_Preemption_Priority_Group_Macro  CORTEX Preemption Priority Group 
+  * @{
+  */
+#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PRIORITYGROUP_0) || \
+                                       ((GROUP) == NVIC_PRIORITYGROUP_1) || \
+                                       ((GROUP) == NVIC_PRIORITYGROUP_2) || \
+                                       ((GROUP) == NVIC_PRIORITYGROUP_3) || \
+                                       ((GROUP) == NVIC_PRIORITYGROUP_4))
+
+#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY)  ((PRIORITY) < 0x10)
+ 
+#define IS_NVIC_SUB_PRIORITY(PRIORITY)  ((PRIORITY) < 0x10)
+
+#define IS_NVIC_DEVICE_IRQ(IRQ)  ((IRQ) >= 0x00)
+
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_SysTick_clock_source_Macro_Private CORTEX SysTick clock source
+  * @{
+  */                       
+#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \
+                                       ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8))
+/**
+  * @}
+  */
+#if (__MPU_PRESENT == 1)
+#define IS_MPU_REGION_ENABLE(STATE) (((STATE) == MPU_REGION_ENABLE) || \
+                                     ((STATE) == MPU_REGION_DISABLE))
+
+#define IS_MPU_INSTRUCTION_ACCESS(STATE) (((STATE) == MPU_INSTRUCTION_ACCESS_ENABLE) || \
+                                          ((STATE) == MPU_INSTRUCTION_ACCESS_DISABLE))
+
+#define IS_MPU_ACCESS_SHAREABLE(STATE)   (((STATE) == MPU_ACCESS_SHAREABLE) || \
+                                          ((STATE) == MPU_ACCESS_NOT_SHAREABLE))
+
+#define IS_MPU_ACCESS_CACHEABLE(STATE)   (((STATE) == MPU_ACCESS_CACHEABLE) || \
+                                          ((STATE) == MPU_ACCESS_NOT_CACHEABLE))
+
+#define IS_MPU_ACCESS_BUFFERABLE(STATE)   (((STATE) == MPU_ACCESS_BUFFERABLE) || \
+                                          ((STATE) == MPU_ACCESS_NOT_BUFFERABLE))
+
+#define IS_MPU_TEX_LEVEL(TYPE) (((TYPE) == MPU_TEX_LEVEL0)  || \
+                                ((TYPE) == MPU_TEX_LEVEL1)  || \
+                                ((TYPE) == MPU_TEX_LEVEL2))
+
+#define IS_MPU_REGION_PERMISSION_ATTRIBUTE(TYPE) (((TYPE) == MPU_REGION_NO_ACCESS)   || \
+                                                  ((TYPE) == MPU_REGION_PRIV_RW)     || \
+                                                  ((TYPE) == MPU_REGION_PRIV_RW_URO) || \
+                                                  ((TYPE) == MPU_REGION_FULL_ACCESS) || \
+                                                  ((TYPE) == MPU_REGION_PRIV_RO)     || \
+                                                  ((TYPE) == MPU_REGION_PRIV_RO_URO))
+
+#define IS_MPU_REGION_NUMBER(NUMBER)    (((NUMBER) == MPU_REGION_NUMBER0) || \
+                                         ((NUMBER) == MPU_REGION_NUMBER1) || \
+                                         ((NUMBER) == MPU_REGION_NUMBER2) || \
+                                         ((NUMBER) == MPU_REGION_NUMBER3) || \
+                                         ((NUMBER) == MPU_REGION_NUMBER4) || \
+                                         ((NUMBER) == MPU_REGION_NUMBER5) || \
+                                         ((NUMBER) == MPU_REGION_NUMBER6) || \
+                                         ((NUMBER) == MPU_REGION_NUMBER7))
+
+#define IS_MPU_REGION_SIZE(SIZE)    (((SIZE) == MPU_REGION_SIZE_32B)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_64B)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_128B)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_256B)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_512B)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_1KB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_2KB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_4KB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_8KB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_16KB)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_32KB)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_64KB)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_128KB) || \
+                                     ((SIZE) == MPU_REGION_SIZE_256KB) || \
+                                     ((SIZE) == MPU_REGION_SIZE_512KB) || \
+                                     ((SIZE) == MPU_REGION_SIZE_1MB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_2MB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_4MB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_8MB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_16MB)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_32MB)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_64MB)  || \
+                                     ((SIZE) == MPU_REGION_SIZE_128MB) || \
+                                     ((SIZE) == MPU_REGION_SIZE_256MB) || \
+                                     ((SIZE) == MPU_REGION_SIZE_512MB) || \
+                                     ((SIZE) == MPU_REGION_SIZE_1GB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_2GB)   || \
+                                     ((SIZE) == MPU_REGION_SIZE_4GB))
+
+#define IS_MPU_SUB_REGION_DISABLE(SUBREGION)  ((SUBREGION) < (uint16_t)0x00FF)
+#endif /* __MPU_PRESENT */
+
+/**
+  * @}
+  */
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup CORTEX_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup CORTEX_Exported_Functions_Group1
+  * @{
+  */  
+/* Initialization and de-initialization functions *****************************/
+void     HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup);
+void     HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority);
+void     HAL_NVIC_EnableIRQ(IRQn_Type IRQn);
+void     HAL_NVIC_DisableIRQ(IRQn_Type IRQn);
+void     HAL_NVIC_SystemReset(void);
+uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb);
+/**
+  * @}
+  */
+
+/** @addtogroup CORTEX_Exported_Functions_Group2
+  * @{
+  */ 
+/* Peripheral Control functions ***********************************************/
+#if (__MPU_PRESENT == 1)
+void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init);
+#endif /* __MPU_PRESENT */
+uint32_t HAL_NVIC_GetPriorityGrouping(void);
+void     HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority);
+uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn);
+void     HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn);
+void     HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn);
+uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn);
+void     HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource);
+void     HAL_SYSTICK_IRQHandler(void);
+void     HAL_SYSTICK_Callback(void);
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+                                                                               
+/* Private functions ---------------------------------------------------------*/   
+/** @defgroup CORTEX_Private_Functions CORTEX Private Functions
+  * @brief    CORTEX private  functions 
+  * @{
+  */
+
+#if (__MPU_PRESENT == 1)
+/**
+  * @brief  Disables the MPU
+  * @retval None
+  */
+__STATIC_INLINE void HAL_MPU_Disable(void)
+{
+  /* Disable fault exceptions */
+  SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk;
+  
+  /* Disable the MPU */
+  MPU->CTRL  &= ~MPU_CTRL_ENABLE_Msk;
+}
+
+/**
+  * @brief  Enables the MPU
+  * @param  MPU_Control: Specifies the control mode of the MPU during hard fault, 
+  *          NMI, FAULTMASK and privileged accessto the default memory 
+  *          This parameter can be one of the following values:
+  *            @arg MPU_HFNMI_PRIVDEF_NONE
+  *            @arg MPU_HARDFAULT_NMI
+  *            @arg MPU_PRIVILEGED_DEFAULT
+  *            @arg MPU_HFNMI_PRIVDEF
+  * @retval None
+  */
+__STATIC_INLINE void HAL_MPU_Enable(uint32_t MPU_Control)
+{
+  /* Enable the MPU */
+  MPU->CTRL   = MPU_Control | MPU_CTRL_ENABLE_Msk;
+  
+  /* Enable fault exceptions */
+  SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk;
+}
+#endif /* __MPU_PRESENT */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_CORTEX_H */
+ 
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,214 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_def.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   This file contains HAL common defines, enumeration, macros and 
+  *          structures definitions. 
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_DEF
+#define __STM32F1xx_HAL_DEF
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx.h"
+#include "Legacy/stm32_hal_legacy.h"
+#include <stdio.h>
+
+/* Exported types ------------------------------------------------------------*/
+
+/** 
+  * @brief  HAL Status structures definition  
+  */  
+typedef enum 
+{
+  HAL_OK       = 0x00,
+  HAL_ERROR    = 0x01,
+  HAL_BUSY     = 0x02,
+  HAL_TIMEOUT  = 0x03
+} HAL_StatusTypeDef;
+
+/** 
+  * @brief  HAL Lock structures definition  
+  */
+typedef enum 
+{
+  HAL_UNLOCKED = 0x00,
+  HAL_LOCKED   = 0x01  
+} HAL_LockTypeDef;
+
+/* Exported macro ------------------------------------------------------------*/
+
+#define HAL_MAX_DELAY      0xFFFFFFFF
+
+#define HAL_IS_BIT_SET(REG, BIT)         (((REG) & (BIT)) != RESET)
+#define HAL_IS_BIT_CLR(REG, BIT)         (((REG) & (BIT)) == RESET)
+
+#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD_, __DMA_HANDLE_)           \
+                        do{                                                  \
+                              (__HANDLE__)->__PPP_DMA_FIELD_ = &(__DMA_HANDLE_); \
+                              (__DMA_HANDLE_).Parent = (__HANDLE__);             \
+                          } while(0)
+
+#define UNUSED(x) ((void)(x))
+
+/** @brief Reset the Handle's State field.
+  * @param __HANDLE__: specifies the Peripheral Handle.
+  * @note  This macro can be used for the following purpose: 
+  *          - When the Handle is declared as local variable; before passing it as parameter
+  *            to HAL_PPP_Init() for the first time, it is mandatory to use this macro 
+  *            to set to 0 the Handle's "State" field.
+  *            Otherwise, "State" field may have any random value and the first time the function 
+  *            HAL_PPP_Init() is called, the low level hardware initialization will be missed
+  *            (i.e. HAL_PPP_MspInit() will not be executed).
+  *          - When there is a need to reconfigure the low level hardware: instead of calling
+  *            HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init().
+  *            In this later function, when the Handle's "State" field is set to 0, it will execute the function
+  *            HAL_PPP_MspInit() which will reconfigure the low level hardware.
+  * @retval None
+  */
+#define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0)
+
+#if (USE_RTOS == 1)
+  #error " USE_RTOS should be 0 in the current HAL release "
+#else
+  #define __HAL_LOCK(__HANDLE__)                                           \
+                                do{                                        \
+                                    if((__HANDLE__)->Lock == HAL_LOCKED)  \
+                                    {                                      \
+                                       return HAL_BUSY;                    \
+                                    }                                      \
+                                    else                                   \
+                                    {                                      \
+                                       (__HANDLE__)->Lock = HAL_LOCKED;    \
+                                    }                                      \
+                                  }while (0)
+
+  #define __HAL_UNLOCK(__HANDLE__)                                          \
+                                  do{                                       \
+                                      (__HANDLE__)->Lock = HAL_UNLOCKED;   \
+                                    }while (0)
+#endif /* USE_RTOS */
+
+#if  defined ( __GNUC__ )
+  #ifndef __weak
+    #define __weak   __attribute__((weak))
+  #endif /* __weak */
+  #ifndef __packed
+    #define __packed __attribute__((__packed__))
+  #endif /* __packed */
+#endif /* __GNUC__ */
+
+
+/* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */
+#if defined   (__GNUC__)        /* GNU Compiler */
+  #ifndef __ALIGN_END
+    #define __ALIGN_END    __attribute__ ((aligned (4)))
+  #endif /* __ALIGN_END */
+  #ifndef __ALIGN_BEGIN  
+    #define __ALIGN_BEGIN
+  #endif /* __ALIGN_BEGIN */
+#else
+  #ifndef __ALIGN_END
+    #define __ALIGN_END
+  #endif /* __ALIGN_END */
+  #ifndef __ALIGN_BEGIN      
+    #if defined   (__CC_ARM)      /* ARM Compiler */
+      #define __ALIGN_BEGIN    __align(4)  
+    #elif defined (__ICCARM__)    /* IAR Compiler */
+      #define __ALIGN_BEGIN 
+    #endif /* __CC_ARM */
+  #endif /* __ALIGN_BEGIN */
+#endif /* __GNUC__ */
+
+/** 
+  * @brief  __RAM_FUNC definition
+  */ 
+#if defined ( __CC_ARM   )
+/* ARM Compiler
+   ------------
+   RAM functions are defined using the toolchain options. 
+   Functions that are executed in RAM should reside in a separate source module.
+   Using the 'Options for File' dialog you can simply change the 'Code / Const' 
+   area of a module to a memory space in physical RAM.
+   Available memory areas are declared in the 'Target' tab of the 'Options for Target'
+   dialog. 
+*/
+#define __RAM_FUNC HAL_StatusTypeDef 
+
+#elif defined ( __ICCARM__ )
+/* ICCARM Compiler
+   ---------------
+   RAM functions are defined using a specific toolchain keyword "__ramfunc". 
+*/
+#define __RAM_FUNC __ramfunc HAL_StatusTypeDef
+
+#elif defined   (  __GNUC__  )
+/* GNU Compiler
+   ------------
+  RAM functions are defined using a specific toolchain attribute 
+   "__attribute__((section(".RamFunc")))".
+*/
+#define __RAM_FUNC HAL_StatusTypeDef  __attribute__((section(".RamFunc")))
+
+#endif
+
+/** 
+  * @brief  __NOINLINE definition
+  */ 
+#if defined ( __CC_ARM   ) || defined   (  __GNUC__  )
+/* ARM & GNUCompiler 
+   ---------------- 
+*/
+#define __NOINLINE __attribute__ ( (noinline) )  
+
+#elif defined ( __ICCARM__ )
+/* ICCARM Compiler
+   ---------------
+*/
+#define __NOINLINE _Pragma("optimize = no_inline")
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ___STM32F1xx_HAL_DEF */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,480 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_dma.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of DMA HAL module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_DMA_H
+#define __STM32F1xx_HAL_DMA_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup DMA
+  * @{
+  */ 
+
+/* Exported types ------------------------------------------------------------*/
+
+/** @defgroup DMA_Exported_Types DMA Exported Types
+  * @{
+  */
+   
+/** 
+  * @brief  DMA Configuration Structure definition
+  */
+typedef struct
+{
+  uint32_t Direction;                 /*!< Specifies if the data will be transferred from memory to peripheral, 
+                                           from memory to memory or from peripheral to memory.
+                                           This parameter can be a value of @ref DMA_Data_transfer_direction */
+
+  uint32_t PeriphInc;                 /*!< Specifies whether the Peripheral address register should be incremented or not.
+                                           This parameter can be a value of @ref DMA_Peripheral_incremented_mode */
+                               
+  uint32_t MemInc;                    /*!< Specifies whether the memory address register should be incremented or not.
+                                           This parameter can be a value of @ref DMA_Memory_incremented_mode */
+  
+  uint32_t PeriphDataAlignment;       /*!< Specifies the Peripheral data width.
+                                           This parameter can be a value of @ref DMA_Peripheral_data_size */
+
+  uint32_t MemDataAlignment;          /*!< Specifies the Memory data width.
+                                           This parameter can be a value of @ref DMA_Memory_data_size */
+                               
+  uint32_t Mode;                      /*!< Specifies the operation mode of the DMAy Channelx.
+                                           This parameter can be a value of @ref DMA_mode
+                                           @note The circular buffer mode cannot be used if the memory-to-memory
+                                                 data transfer is configured on the selected Channel */ 
+
+  uint32_t Priority;                   /*!< Specifies the software priority for the DMAy Channelx.
+                                            This parameter can be a value of @ref DMA_Priority_level */
+} DMA_InitTypeDef;
+
+/** 
+  * @brief DMA Configuration enumeration values definition
+  */  
+typedef enum 
+{
+  DMA_MODE            = 0,      /*!< Control related DMA mode Parameter in DMA_InitTypeDef        */
+  DMA_PRIORITY        = 1,      /*!< Control related priority level Parameter in DMA_InitTypeDef  */
+  
+} DMA_ControlTypeDef;
+
+/**
+  * @brief  HAL DMA State structures definition  
+  */
+typedef enum
+{
+  HAL_DMA_STATE_RESET             = 0x00,  /*!< DMA not yet initialized or disabled */
+  HAL_DMA_STATE_READY             = 0x01,  /*!< DMA initialized and ready for use   */
+  HAL_DMA_STATE_READY_HALF        = 0x11,  /*!< DMA Half process success            */
+  HAL_DMA_STATE_BUSY              = 0x02,  /*!< DMA process is ongoing              */
+  HAL_DMA_STATE_TIMEOUT           = 0x03,  /*!< DMA timeout state                   */
+  HAL_DMA_STATE_ERROR             = 0x04,  /*!< DMA error state                     */
+}HAL_DMA_StateTypeDef;
+
+/** 
+  * @brief  HAL DMA Error Code structure definition
+  */
+typedef enum
+{
+  HAL_DMA_FULL_TRANSFER      = 0x00,    /*!< Full transfer     */
+  HAL_DMA_HALF_TRANSFER      = 0x01,    /*!< Half Transfer     */
+}HAL_DMA_LevelCompleteTypeDef;
+
+/** 
+  * @brief  DMA handle Structure definition
+  */
+typedef struct __DMA_HandleTypeDef
+{
+  DMA_Channel_TypeDef   *Instance;                       /*!< Register base address                  */
+  
+  DMA_InitTypeDef       Init;                            /*!< DMA communication parameters           */ 
+  
+  HAL_LockTypeDef       Lock;                            /*!< DMA locking object                     */  
+  
+  HAL_DMA_StateTypeDef  State;                           /*!< DMA transfer state                     */
+  
+  void                  *Parent;                                                      /*!< Parent object state                    */  
+  
+  void                  (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma);     /*!< DMA transfer complete callback         */
+  
+  void                  (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA Half transfer complete callback    */
+  
+  void                  (* XferErrorCallback)( struct __DMA_HandleTypeDef * hdma);    /*!< DMA transfer error callback            */
+  
+  __IO uint32_t         ErrorCode;                                                    /*!< DMA Error code                         */
+} DMA_HandleTypeDef;    
+/**
+  * @}
+  */
+
+/* Exported constants --------------------------------------------------------*/
+
+/** @defgroup DMA_Exported_Constants DMA Exported Constants
+  * @{
+  */
+
+/** @defgroup DMA_Error_Code DMA Error Code
+  * @{
+  */
+ #define HAL_DMA_ERROR_NONE      ((uint32_t)0x00)    /*!< No error             */
+ #define HAL_DMA_ERROR_TE        ((uint32_t)0x01)    /*!< Transfer error       */
+ #define HAL_DMA_ERROR_TIMEOUT   ((uint32_t)0x20)    /*!< Timeout error        */
+
+/**
+  * @}
+  */
+
+/** @defgroup DMA_Data_transfer_direction DMA Data transfer direction
+  * @{
+  */ 
+#define DMA_PERIPH_TO_MEMORY         ((uint32_t)0x00000000)      /*!< Peripheral to memory direction */
+#define DMA_MEMORY_TO_PERIPH         ((uint32_t)DMA_CCR_DIR)     /*!< Memory to peripheral direction */
+#define DMA_MEMORY_TO_MEMORY         ((uint32_t)DMA_CCR_MEM2MEM) /*!< Memory to memory direction     */
+
+/**
+  * @}
+  */
+
+/** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode
+  * @{
+  */ 
+#define DMA_PINC_ENABLE        ((uint32_t)DMA_CCR_PINC)   /*!< Peripheral increment mode Enable */
+#define DMA_PINC_DISABLE       ((uint32_t)0x00000000)     /*!< Peripheral increment mode Disable */
+/**
+  * @}
+  */ 
+
+/** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode
+  * @{
+  */ 
+#define DMA_MINC_ENABLE         ((uint32_t)DMA_CCR_MINC)   /*!< Memory increment mode Enable  */
+#define DMA_MINC_DISABLE        ((uint32_t)0x00000000)     /*!< Memory increment mode Disable */
+/**
+  * @}
+  */
+
+/** @defgroup DMA_Peripheral_data_size DMA Peripheral data size
+  * @{
+  */ 
+#define DMA_PDATAALIGN_BYTE          ((uint32_t)0x00000000)        /*!< Peripheral data alignment: Byte     */
+#define DMA_PDATAALIGN_HALFWORD      ((uint32_t)DMA_CCR_PSIZE_0)   /*!< Peripheral data alignment: HalfWord */
+#define DMA_PDATAALIGN_WORD          ((uint32_t)DMA_CCR_PSIZE_1)   /*!< Peripheral data alignment: Word     */
+/**
+  * @}
+  */ 
+
+/** @defgroup DMA_Memory_data_size DMA Memory data size
+  * @{ 
+  */
+#define DMA_MDATAALIGN_BYTE          ((uint32_t)0x00000000)        /*!< Memory data alignment: Byte     */
+#define DMA_MDATAALIGN_HALFWORD      ((uint32_t)DMA_CCR_MSIZE_0)   /*!< Memory data alignment: HalfWord */
+#define DMA_MDATAALIGN_WORD          ((uint32_t)DMA_CCR_MSIZE_1)   /*!< Memory data alignment: Word     */
+/**
+  * @}
+  */
+
+/** @defgroup DMA_mode DMA mode
+  * @{
+  */ 
+#define DMA_NORMAL         ((uint32_t)0x00000000)       /*!< Normal mode                  */
+#define DMA_CIRCULAR       ((uint32_t)DMA_CCR_CIRC)     /*!< Circular mode                */
+/**
+  * @}
+  */
+
+/** @defgroup DMA_Priority_level DMA Priority level
+  * @{
+  */
+#define DMA_PRIORITY_LOW             ((uint32_t)0x00000000)     /*!< Priority level : Low       */
+#define DMA_PRIORITY_MEDIUM          ((uint32_t)DMA_CCR_PL_0)   /*!< Priority level : Medium    */
+#define DMA_PRIORITY_HIGH            ((uint32_t)DMA_CCR_PL_1)   /*!< Priority level : High      */
+#define DMA_PRIORITY_VERY_HIGH       ((uint32_t)DMA_CCR_PL)     /*!< Priority level : Very_High */
+/**
+  * @}
+  */ 
+
+
+/** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions
+  * @{
+  */
+#define DMA_IT_TC                         ((uint32_t)DMA_CCR_TCIE)
+#define DMA_IT_HT                         ((uint32_t)DMA_CCR_HTIE)
+#define DMA_IT_TE                         ((uint32_t)DMA_CCR_TEIE)
+/**
+  * @}
+  */
+
+/** @defgroup DMA_flag_definitions DMA flag definitions
+  * @{
+  */ 
+#define DMA_FLAG_GL1                      ((uint32_t)0x00000001)
+#define DMA_FLAG_TC1                      ((uint32_t)0x00000002)
+#define DMA_FLAG_HT1                      ((uint32_t)0x00000004)
+#define DMA_FLAG_TE1                      ((uint32_t)0x00000008)
+#define DMA_FLAG_GL2                      ((uint32_t)0x00000010)
+#define DMA_FLAG_TC2                      ((uint32_t)0x00000020)
+#define DMA_FLAG_HT2                      ((uint32_t)0x00000040)
+#define DMA_FLAG_TE2                      ((uint32_t)0x00000080)
+#define DMA_FLAG_GL3                      ((uint32_t)0x00000100)
+#define DMA_FLAG_TC3                      ((uint32_t)0x00000200)
+#define DMA_FLAG_HT3                      ((uint32_t)0x00000400)
+#define DMA_FLAG_TE3                      ((uint32_t)0x00000800)
+#define DMA_FLAG_GL4                      ((uint32_t)0x00001000)
+#define DMA_FLAG_TC4                      ((uint32_t)0x00002000)
+#define DMA_FLAG_HT4                      ((uint32_t)0x00004000)
+#define DMA_FLAG_TE4                      ((uint32_t)0x00008000)
+#define DMA_FLAG_GL5                      ((uint32_t)0x00010000)
+#define DMA_FLAG_TC5                      ((uint32_t)0x00020000)
+#define DMA_FLAG_HT5                      ((uint32_t)0x00040000)
+#define DMA_FLAG_TE5                      ((uint32_t)0x00080000)
+#define DMA_FLAG_GL6                      ((uint32_t)0x00100000)
+#define DMA_FLAG_TC6                      ((uint32_t)0x00200000)
+#define DMA_FLAG_HT6                      ((uint32_t)0x00400000)
+#define DMA_FLAG_TE6                      ((uint32_t)0x00800000)
+#define DMA_FLAG_GL7                      ((uint32_t)0x01000000)
+#define DMA_FLAG_TC7                      ((uint32_t)0x02000000)
+#define DMA_FLAG_HT7                      ((uint32_t)0x04000000)
+#define DMA_FLAG_TE7                      ((uint32_t)0x08000000)
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+ 
+
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup DMA_Exported_Macros DMA Exported Macros
+  * @{
+  */
+
+/** @brief  Reset DMA handle state
+  * @param  __HANDLE__: DMA handle.
+  * @retval None
+  */
+#define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET)
+
+/**
+  * @brief  Enable the specified DMA Channel.
+  * @param  __HANDLE__: DMA handle
+  * @retval None.
+  */
+#define __HAL_DMA_ENABLE(__HANDLE__)        (SET_BIT((__HANDLE__)->Instance->CCR, DMA_CCR_EN))
+
+/**
+  * @brief  Disable the specified DMA Channel.
+  * @param  __HANDLE__: DMA handle
+  * @retval None.
+  */
+#define __HAL_DMA_DISABLE(__HANDLE__)       (CLEAR_BIT((__HANDLE__)->Instance->CCR, DMA_CCR_EN))
+
+
+/* Interrupt & Flag management */
+
+/**
+  * @brief  Enables the specified DMA Channel interrupts.
+  * @param  __HANDLE__: DMA handle
+  * @param __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled. 
+  *          This parameter can be any combination of the following values:
+  *            @arg DMA_IT_TC:  Transfer complete interrupt mask
+  *            @arg DMA_IT_HT:  Half transfer complete interrupt mask
+  *            @arg DMA_IT_TE:  Transfer error interrupt mask
+  * @retval None
+  */
+#define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__)   (SET_BIT((__HANDLE__)->Instance->CCR, (__INTERRUPT__)))
+
+/**
+  * @brief  Disables the specified DMA Channel interrupts.
+  * @param  __HANDLE__: DMA handle
+  * @param  __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled. 
+  *          This parameter can be any combination of the following values:
+  *            @arg DMA_IT_TC:  Transfer complete interrupt mask
+  *            @arg DMA_IT_HT:  Half transfer complete interrupt mask
+  *            @arg DMA_IT_TE:  Transfer error interrupt mask
+  * @retval None
+  */
+#define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__)  (CLEAR_BIT((__HANDLE__)->Instance->CCR , (__INTERRUPT__)))
+
+/**
+  * @brief  Checks whether the specified DMA Channel interrupt is enabled or disabled.
+  * @param  __HANDLE__: DMA handle
+  * @param  __INTERRUPT__: specifies the DMA interrupt source to check.
+  *          This parameter can be one of the following values:
+  *            @arg DMA_IT_TC:  Transfer complete interrupt mask
+  *            @arg DMA_IT_HT:  Half transfer complete interrupt mask
+  *            @arg DMA_IT_TE:  Transfer error interrupt mask
+  * @retval The state of DMA_IT (SET or RESET).
+  */
+#define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  ((((__HANDLE__)->Instance->CCR & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
+
+/**
+  * @brief  Returns the number of remaining data units in the current DMAy Channelx transfer.
+  * @param  __HANDLE__: DMA handle
+  *   
+  * @retval The number of remaining data units in the current DMA Channel transfer.
+  */
+#define __HAL_DMA_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNDTR)
+
+/**
+  * @}
+  */
+
+/* Include DMA HAL Extension module */
+#include "stm32f1xx_hal_dma_ex.h"   
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup DMA_Exported_Functions DMA Exported Functions
+  * @{
+  */
+
+/** @addtogroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions 
+  * @{
+  */
+/* Initialization and de-initialization functions *****************************/
+HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma);
+HAL_StatusTypeDef HAL_DMA_DeInit (DMA_HandleTypeDef *hdma);
+/**
+  * @}
+  */
+
+/** @addtogroup DMA_Exported_Functions_Group2 Input and Output operation functions 
+  * @{
+  */
+/* IO operation functions *****************************************************/
+HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
+HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
+HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);
+HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t Timeout);
+void              HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma);
+/**
+  * @}
+  */
+
+/** @addtogroup DMA_Exported_Functions_Group3 Peripheral State functions
+  * @{
+  */
+/* Peripheral State and Error functions ***************************************/
+HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma);
+uint32_t             HAL_DMA_GetError(DMA_HandleTypeDef *hdma);
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Private Constants -------------------------------------------------------------*/
+/** @defgroup DMA_Private_Constants DMA Private Constants
+  * @brief    DMA private defines and constants 
+  * @{
+  */
+/**
+  * @}
+  */ 
+
+/* Private macros ------------------------------------------------------------*/
+/** @defgroup DMA_Private_Macros DMA Private Macros
+  * @brief    DMA private macros 
+  * @{
+  */
+
+#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1) && ((SIZE) < 0x10000))
+
+#define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \
+                                     ((DIRECTION) == DMA_MEMORY_TO_PERIPH)  || \
+                                     ((DIRECTION) == DMA_MEMORY_TO_MEMORY)) 
+
+#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \
+                                            ((STATE) == DMA_PINC_DISABLE))
+
+#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE)  || \
+                                        ((STATE) == DMA_MINC_DISABLE))
+
+#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE)     || \
+                                           ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \
+                                           ((SIZE) == DMA_PDATAALIGN_WORD))
+
+#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE)     || \
+                                       ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \
+                                       ((SIZE) == DMA_MDATAALIGN_WORD ))
+
+#define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL )  || \
+                           ((MODE) == DMA_CIRCULAR)) 
+
+#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW )   || \
+                                   ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \
+                                   ((PRIORITY) == DMA_PRIORITY_HIGH)   || \
+                                   ((PRIORITY) == DMA_PRIORITY_VERY_HIGH)) 
+
+/**
+  * @}
+  */ 
+
+/* Private functions ---------------------------------------------------------*/
+/** @defgroup DMA_Private_Functions DMA Private Functions
+  * @brief    DMA private  functions 
+  * @{
+  */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_DMA_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,260 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_dma_ex.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of DMA HAL extension module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_DMA_EX_H
+#define __STM32F1xx_HAL_DMA_EX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup DMAEx DMAEx
+  * @{
+  */ 
+
+/* Exported types ------------------------------------------------------------*/ 
+/* Exported constants --------------------------------------------------------*/
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup DMAEx_Exported_Macros DMA Extended Exported Macros
+  * @{
+  */
+/* Interrupt & Flag management */
+#if defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || \
+    defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
+/** @defgroup DMAEx_High_density_XL_density_Product_devices DMAEx High density and XL density product devices
+  * @{
+  */
+
+/**
+  * @brief  Returns the current DMA Channel transfer complete flag.
+  * @param  __HANDLE__: DMA handle
+  * @retval The specified transfer complete flag index.
+  */
+#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \
+(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_TC7 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TC1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TC2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TC3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TC4 :\
+   DMA_FLAG_TC5)
+
+/**
+  * @brief  Returns the current DMA Channel half transfer complete flag.
+  * @param  __HANDLE__: DMA handle
+  * @retval The specified half transfer complete flag index.
+  */      
+#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\
+(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_HT7 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_HT1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_HT2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_HT3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_HT4 :\
+   DMA_FLAG_HT5)
+
+/**
+  * @brief  Returns the current DMA Channel transfer error flag.
+  * @param  __HANDLE__: DMA handle
+  * @retval The specified transfer error flag index.
+  */
+#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\
+(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_TE7 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TE1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TE2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TE3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TE4 :\
+   DMA_FLAG_TE5)
+
+/**
+  * @brief  Get the DMA Channel pending flags.
+  * @param  __HANDLE__: DMA handle
+  * @param  __FLAG__: Get the specified flag.
+  *          This parameter can be any combination of the following values:
+  *            @arg DMA_FLAG_TCx:  Transfer complete flag
+  *            @arg DMA_FLAG_HTx:  Half transfer complete flag
+  *            @arg DMA_FLAG_TEx:  Transfer error flag
+  *         Where x can be 1_7 or 1_5 (depending on DMA1 or DMA2) to select the DMA Channel flag.   
+  * @retval The state of FLAG (SET or RESET).
+  */
+#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\
+(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Channel7)? (DMA2->ISR & (__FLAG__)) :\
+  (DMA1->ISR & (__FLAG__)))
+
+/**
+  * @brief  Clears the DMA Channel pending flags.
+  * @param  __HANDLE__: DMA handle
+  * @param  __FLAG__: specifies the flag to clear.
+  *          This parameter can be any combination of the following values:
+  *            @arg DMA_FLAG_TCx:  Transfer complete flag
+  *            @arg DMA_FLAG_HTx:  Half transfer complete flag
+  *            @arg DMA_FLAG_TEx:  Transfer error flag
+  *         Where x can be 1_7 or 1_5 (depending on DMA1 or DMA2) to select the DMA Channel flag.   
+  * @retval None
+  */
+#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \
+(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Channel7)? (DMA2->IFCR = (__FLAG__)) :\
+  (DMA1->IFCR = (__FLAG__)))
+
+/**
+  * @}
+  */
+
+#else
+/** @defgroup DMA_Low_density_Medium_density_Product_devices DMA Low density and Medium density product devices
+  * @{
+  */
+
+/**
+  * @brief  Returns the current DMA Channel transfer complete flag.
+  * @param  __HANDLE__: DMA handle
+  * @retval The specified transfer complete flag index.
+  */
+#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \
+(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\
+   DMA_FLAG_TC7)
+
+/**
+  * @brief  Returns the current DMA Channel half transfer complete flag.
+  * @param  __HANDLE__: DMA handle
+  * @retval The specified half transfer complete flag index.
+  */      
+#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\
+(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\
+   DMA_FLAG_HT7)
+
+/**
+  * @brief  Returns the current DMA Channel transfer error flag.
+  * @param  __HANDLE__: DMA handle
+  * @retval The specified transfer error flag index.
+  */
+#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\
+(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\
+ ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\
+   DMA_FLAG_TE7)
+
+/**
+  * @brief  Get the DMA Channel pending flags.
+  * @param  __HANDLE__: DMA handle
+  * @param  __FLAG__: Get the specified flag.
+  *          This parameter can be any combination of the following values:
+  *            @arg DMA_FLAG_TCx:  Transfer complete flag
+  *            @arg DMA_FLAG_HTx:  Half transfer complete flag
+  *            @arg DMA_FLAG_TEx:  Transfer error flag
+  *         Where x can be 1_7 to select the DMA Channel flag.   
+  * @retval The state of FLAG (SET or RESET).
+  */
+
+#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)   (DMA1->ISR & (__FLAG__))
+
+/**
+  * @brief  Clears the DMA Channel pending flags.
+  * @param  __HANDLE__: DMA handle
+  * @param  __FLAG__: specifies the flag to clear.
+  *          This parameter can be any combination of the following values:
+  *            @arg DMA_FLAG_TCx:  Transfer complete flag
+  *            @arg DMA_FLAG_HTx:  Half transfer complete flag
+  *            @arg DMA_FLAG_TEx:  Transfer error flag
+  *         Where x can be 1_7 to select the DMA Channel flag.   
+  * @retval None
+  */
+#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (DMA1->IFCR = (__FLAG__))
+
+/**
+  * @}
+  */
+
+#endif
+  
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || */
+       /* STM32F103xG || STM32F105xC || STM32F107xC */
+
+#endif /* __STM32F1xx_HAL_DMA_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,348 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_flash.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of Flash HAL module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************  
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_FLASH_H
+#define __STM32F1xx_HAL_FLASH_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+   
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup FLASH
+  * @{
+  */
+  
+/** @addtogroup FLASH_Private_Constants
+  * @{
+  */
+#define FLASH_TIMEOUT_VALUE   ((uint32_t)50000)/* 50 s */
+/**
+  * @}
+  */
+
+/** @addtogroup FLASH_Private_Macros
+  * @{
+  */
+
+#define IS_FLASH_TYPEPROGRAM(VALUE)  (((VALUE) == FLASH_TYPEPROGRAM_HALFWORD) || \
+                                      ((VALUE) == FLASH_TYPEPROGRAM_WORD)     || \
+                                      ((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD))  
+
+#if   defined(FLASH_ACR_LATENCY)
+#define IS_FLASH_LATENCY(__LATENCY__) (((__LATENCY__) == FLASH_LATENCY_0) || \
+                                       ((__LATENCY__) == FLASH_LATENCY_1) || \
+                                       ((__LATENCY__) == FLASH_LATENCY_2))
+
+#else
+#define IS_FLASH_LATENCY(__LATENCY__)   ((__LATENCY__) == FLASH_LATENCY_0)
+#endif /* FLASH_ACR_LATENCY */
+/**
+  * @}
+  */  
+
+/* Exported types ------------------------------------------------------------*/ 
+/** @defgroup FLASH_Exported_Types FLASH Exported Types
+  * @{
+  */  
+
+
+/**
+  * @brief  FLASH Procedure structure definition
+  */
+typedef enum 
+{
+  FLASH_PROC_NONE              = 0, 
+  FLASH_PROC_PAGEERASE         = 1,
+  FLASH_PROC_MASSERASE         = 2,
+  FLASH_PROC_PROGRAMHALFWORD   = 3,
+  FLASH_PROC_PROGRAMWORD       = 4,
+  FLASH_PROC_PROGRAMDOUBLEWORD = 5
+} FLASH_ProcedureTypeDef;
+
+/** 
+  * @brief  FLASH handle Structure definition  
+  */
+typedef struct
+{
+  __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /*!< Internal variable to indicate which procedure is ongoing or not in IT context */
+  
+  __IO uint32_t               DataRemaining;    /*!< Internal variable to save the remaining pages to erase or half-word to program in IT context */
+
+  __IO uint32_t               Address;          /*!< Internal variable to save address selected for program or erase */
+
+  __IO uint64_t               Data;             /*!< Internal variable to save data to be programmed */
+
+  HAL_LockTypeDef             Lock;             /*!< FLASH locking object                */
+
+  __IO uint32_t               ErrorCode;        /*!< FLASH error code                    
+                                                     This parameter can be a value of @ref FLASH_Error_Codes  */
+} FLASH_ProcessTypeDef;
+
+/**
+  * @}
+  */
+
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup FLASH_Exported_Constants FLASH Exported Constants
+  * @{
+  */  
+
+/** @defgroup FLASH_Error_Codes FLASH Error Codes
+  * @{
+  */
+
+#define HAL_FLASH_ERROR_NONE      ((uint32_t)0x00)  /*!< No error */
+#define HAL_FLASH_ERROR_PROG      ((uint32_t)0x01)  /*!< Programming error */
+#define HAL_FLASH_ERROR_WRP       ((uint32_t)0x02)  /*!< Write protection error */
+#define HAL_FLASH_ERROR_OPTV      ((uint32_t)0x04)  /*!< Option validity error */
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASH_Type_Program FLASH Type Program
+  * @{
+  */ 
+#define FLASH_TYPEPROGRAM_HALFWORD   ((uint32_t)0x01)  /*!<Program a half-word (16-bit) at a specified address.*/
+#define FLASH_TYPEPROGRAM_WORD       ((uint32_t)0x02)  /*!<Program a word (32-bit) at a specified address.*/
+#define FLASH_TYPEPROGRAM_DOUBLEWORD ((uint32_t)0x03)  /*!<Program a double word (64-bit) at a specified address*/
+
+/**
+  * @}
+  */
+
+#if   defined(FLASH_ACR_LATENCY)
+/** @defgroup FLASH_Latency FLASH Latency
+  * @{
+  */
+#define FLASH_LATENCY_0            ((uint32_t)0x00000000)    /*!< FLASH Zero Latency cycle */
+#define FLASH_LATENCY_1            FLASH_ACR_LATENCY_0       /*!< FLASH One Latency cycle */
+#define FLASH_LATENCY_2            FLASH_ACR_LATENCY_1       /*!< FLASH Two Latency cycles */
+
+/**
+  * @}
+  */
+
+#else
+/** @defgroup FLASH_Latency FLASH Latency
+  * @{
+  */
+#define FLASH_LATENCY_0            ((uint32_t)0x00000000)    /*!< FLASH Zero Latency cycle */
+
+/**
+  * @}
+  */
+
+#endif /* FLASH_ACR_LATENCY */
+/**
+  * @}
+  */  
+  
+/* Exported macro ------------------------------------------------------------*/
+
+/** @defgroup FLASH_Exported_Macros FLASH Exported Macros
+ *  @brief macros to control FLASH features 
+ *  @{
+ */
+ 
+/** @defgroup FLASH_Half_Cycle FLASH Half Cycle
+ *  @brief macros to handle FLASH half cycle
+ * @{
+ */
+
+/**
+  * @brief  Enable the FLASH half cycle access.
+  * @note   half cycle access can only be used with a low-frequency clock of less than
+            8 MHz that can be obtained with the use of HSI or HSE but not of PLL.
+  * @retval None
+  */
+#define __HAL_FLASH_HALF_CYCLE_ACCESS_ENABLE()  (FLASH->ACR |= FLASH_ACR_HLFCYA)
+
+/**
+  * @brief  Disable the FLASH half cycle access.
+  * @note   half cycle access can only be used with a low-frequency clock of less than
+            8 MHz that can be obtained with the use of HSI or HSE but not of PLL.
+  * @retval None
+  */
+#define __HAL_FLASH_HALF_CYCLE_ACCESS_DISABLE() (FLASH->ACR &= (~FLASH_ACR_HLFCYA))
+
+/**
+  * @}
+  */
+
+#if defined(FLASH_ACR_LATENCY)
+/** @defgroup FLASH_EM_Latency FLASH Latency
+ *  @brief macros to handle FLASH Latency
+ * @{
+ */ 
+  
+/**
+  * @brief  Set the FLASH Latency.
+  * @param  __LATENCY__ FLASH Latency                   
+  *         The value of this parameter depend on device used within the same series
+  * @retval None
+  */ 
+#define __HAL_FLASH_SET_LATENCY(__LATENCY__)    (FLASH->ACR = (FLASH->ACR&(~FLASH_ACR_LATENCY)) | (__LATENCY__))
+
+
+/**
+  * @brief  Get the FLASH Latency.
+  * @retval FLASH Latency                   
+  *         The value of this parameter depend on device used within the same series
+  */ 
+#define __HAL_FLASH_GET_LATENCY()     (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))
+
+/**
+  * @}
+  */
+
+#endif /* FLASH_ACR_LATENCY */
+/** @defgroup FLASH_Prefetch FLASH Prefetch
+ *  @brief macros to handle FLASH Prefetch buffer
+ * @{
+ */   
+/**
+  * @brief  Enable the FLASH prefetch buffer.
+  * @retval None
+  */ 
+#define __HAL_FLASH_PREFETCH_BUFFER_ENABLE()    (FLASH->ACR |= FLASH_ACR_PRFTBE)
+
+/**
+  * @brief  Disable the FLASH prefetch buffer.
+  * @retval None
+  */
+#define __HAL_FLASH_PREFETCH_BUFFER_DISABLE()   (FLASH->ACR &= (~FLASH_ACR_PRFTBE))
+
+/**
+  * @}
+  */
+  
+/**
+  * @}
+  */ 
+
+/* Include FLASH HAL Extended module */
+#include "stm32f1xx_hal_flash_ex.h"  
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup FLASH_Exported_Functions
+  * @{
+  */
+  
+/** @addtogroup FLASH_Exported_Functions_Group1
+  * @{
+  */
+/* IO operation functions *****************************************************/
+HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
+HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
+
+/* FLASH IRQ handler function */
+void       HAL_FLASH_IRQHandler(void);
+/* Callbacks in non blocking modes */ 
+void       HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);
+void       HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);
+
+/**
+  * @}
+  */
+
+/** @addtogroup FLASH_Exported_Functions_Group2
+  * @{
+  */
+/* Peripheral Control functions ***********************************************/
+HAL_StatusTypeDef HAL_FLASH_Unlock(void);
+HAL_StatusTypeDef HAL_FLASH_Lock(void);
+HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
+HAL_StatusTypeDef HAL_FLASH_OB_Lock(void);
+HAL_StatusTypeDef HAL_FLASH_OB_Launch(void);
+
+/**
+  * @}
+  */
+
+/** @addtogroup FLASH_Exported_Functions_Group3
+  * @{
+  */
+/* Peripheral State and Error functions ***************************************/
+uint32_t HAL_FLASH_GetError(void);
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Private function -------------------------------------------------*/
+/** @addtogroup FLASH_Private_Functions
+ * @{
+ */
+void                    FLASH_PageErase(uint32_t PageAddress);
+HAL_StatusTypeDef       FLASH_WaitForLastOperation(uint32_t Timeout);
+#if defined(FLASH_BANK2_END)
+HAL_StatusTypeDef       FLASH_WaitForLastOperationBank2(uint32_t Timeout);
+#endif /* FLASH_BANK2_END */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_FLASH_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,804 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_flash_ex.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of Flash HAL Extended module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_FLASH_EX_H
+#define __STM32F1xx_HAL_FLASH_EX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup FLASHEx
+  * @{
+  */ 
+
+/** @addtogroup FLASHEx_Private_Constants
+  * @{
+  */
+
+#define FLASH_SIZE_DATA_REGISTER ((uint32_t)0x1FFFF7E0)
+#define OBR_REG_INDEX            ((uint32_t)1)
+#define SR_FLAG_MASK             ((uint32_t)(FLASH_SR_BSY | FLASH_SR_PGERR | FLASH_SR_WRPRTERR | FLASH_SR_EOP))
+
+/**
+  * @}
+  */  
+
+/** @addtogroup FLASHEx_Private_Macros
+  * @{
+  */
+
+#define IS_FLASH_TYPEERASE(VALUE)   (((VALUE) == FLASH_TYPEERASE_PAGES) || ((VALUE) == FLASH_TYPEERASE_MASSERASE))
+
+#define IS_OPTIONBYTE(VALUE)        (((VALUE) <= (OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER | OPTIONBYTE_DATA)))
+
+#define IS_WRPSTATE(VALUE)          (((VALUE) == OB_WRPSTATE_DISABLE) || ((VALUE) == OB_WRPSTATE_ENABLE))  
+
+#define IS_OB_RDP_LEVEL(LEVEL)      (((LEVEL) == OB_RDP_LEVEL_0) || ((LEVEL) == OB_RDP_LEVEL_1))
+
+#define IS_OB_DATA_ADDRESS(ADDRESS) (((ADDRESS) == OB_DATA_ADDRESS_DATA0) || ((ADDRESS) == OB_DATA_ADDRESS_DATA1)) 
+
+#define IS_OB_IWDG_SOURCE(SOURCE)   (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW))
+
+#define IS_OB_STOP_SOURCE(SOURCE)   (((SOURCE) == OB_STOP_NO_RST) || ((SOURCE) == OB_STOP_RST))
+
+#define IS_OB_STDBY_SOURCE(SOURCE)  (((SOURCE) == OB_STDBY_NO_RST) || ((SOURCE) == OB_STDBY_RST))
+
+#if defined(FLASH_BANK2_END)
+#define IS_OB_BOOT1(BOOT1)         (((BOOT1) == OB_BOOT1_RESET) || ((BOOT1) == OB_BOOT1_SET))
+#endif /* FLASH_BANK2_END */
+
+/* Low Density */
+#if (defined(STM32F101x6) || defined(STM32F102x6) || defined(STM32F103x6))
+#define IS_FLASH_NB_PAGES(ADDRESS,NBPAGES) (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x20) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x08007FFF) : \
+                                           ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x08003FFF))
+#endif /* STM32F101x6 || STM32F102x6 || STM32F103x6 */
+
+/* Medium Density */
+#if (defined(STM32F100xB) || defined(STM32F101xB) || defined(STM32F102xB) || defined(STM32F103xB))
+#define IS_FLASH_NB_PAGES(ADDRESS,NBPAGES) (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x80) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x0801FFFF) : \
+                                           (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x40) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x0800FFFF) : \
+                                           (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x20) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x08007FFF) : \
+                                           ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x08003FFF))))
+#endif /* STM32F100xB || STM32F101xB || STM32F102xB || STM32F103xB*/
+
+/* High Density */
+#if (defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F103xE))
+#define IS_FLASH_NB_PAGES(ADDRESS,NBPAGES) (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x200) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x0807FFFF) : \
+                                           (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x180) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x0805FFFF) : \
+                                           ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x0803FFFF)))
+#endif /* STM32F100xE || STM32F101xE || STM32F103xE */
+
+/* XL Density */
+#if defined(FLASH_BANK2_END)
+#define IS_FLASH_NB_PAGES(ADDRESS,NBPAGES) (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x400) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x080FFFFF) : \
+                                           ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x080BFFFF))
+#endif /* FLASH_BANK2_END */
+
+/* Connectivity Line */
+#if (defined(STM32F105xC) || defined(STM32F107xC))
+#define IS_FLASH_NB_PAGES(ADDRESS,NBPAGES) (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x100) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x0803FFFF) : \
+                                           (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) ==  0x80) ? ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x0801FFFF) : \
+                                           ((ADDRESS)+((NBPAGES)*FLASH_PAGE_SIZE)-1 <= 0x0800FFFF)))
+#endif /* STM32F105xC || STM32F107xC */
+
+#define IS_OB_WRP(PAGE) (((PAGE) != 0x0000000))
+
+#if defined(FLASH_BANK2_END)
+#define IS_FLASH_BANK(BANK) (((BANK) == FLASH_BANK_1)  || \
+                             ((BANK) == FLASH_BANK_2)  || \
+                             ((BANK) == FLASH_BANK_BOTH))
+#else
+#define IS_FLASH_BANK(BANK) (((BANK) == FLASH_BANK_1))
+#endif /* FLASH_BANK2_END */
+
+/* Low Density */
+#if (defined(STM32F101x6) || defined(STM32F102x6) || defined(STM32F103x6))
+#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS)  (((ADDRESS) >= FLASH_BASE) && (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x20) ? \
+                                            ((ADDRESS) <= FLASH_BANK1_END) :  ((ADDRESS) <= 0x08003FFF)))
+
+#endif /* STM32F101x6 || STM32F102x6 || STM32F103x6 */
+
+/* Medium Density */
+#if (defined(STM32F100xB) || defined(STM32F101xB) || defined(STM32F102xB) || defined(STM32F103xB))
+#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS) (((ADDRESS) >= FLASH_BASE) && (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x80) ? \
+                                           ((ADDRESS) <= FLASH_BANK1_END) :  (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x40) ? \
+                                           ((ADDRESS) <= 0x0800FFFF) :  (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x20) ? \
+                                           ((ADDRESS) <= 0x08007FFF) :  ((ADDRESS) <= 0x08003FFF)))))
+
+#endif /* STM32F100xB || STM32F101xB || STM32F102xB || STM32F103xB*/
+
+/* High Density */
+#if (defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F103xE))
+#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS) (((ADDRESS) >= FLASH_BASE) && (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x200) ? \
+                                           ((ADDRESS) <= FLASH_BANK1_END) :  (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x180) ? \
+                                           ((ADDRESS) <= 0x0805FFFF) :  ((ADDRESS) <= 0x0803FFFF))))
+
+#endif /* STM32F100xE || STM32F101xE || STM32F103xE */
+
+/* XL Density */
+#if defined(FLASH_BANK2_END)
+#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS) (((ADDRESS) >= FLASH_BASE) && (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x400) ? \
+                                           ((ADDRESS) <= FLASH_BANK2_END) :  ((ADDRESS) <= 0x080BFFFF)))
+
+#endif /* FLASH_BANK2_END */
+
+/* Connectivity Line */
+#if (defined(STM32F105xC) || defined(STM32F107xC))
+#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS) (((ADDRESS) >= FLASH_BASE) && (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x100) ? \
+                                           ((ADDRESS) <= FLASH_BANK1_END) :  (((*((uint16_t *)FLASH_SIZE_DATA_REGISTER)) == 0x80) ? \
+                                           ((ADDRESS) <= 0x0801FFFF) :  ((ADDRESS) <= 0x0800FFFF))))
+
+#endif /* STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */  
+
+/* Exported types ------------------------------------------------------------*/ 
+/** @defgroup FLASHEx_Exported_Types FLASHEx Exported Types
+  * @{
+  */  
+
+/**
+  * @brief  FLASH Erase structure definition
+  */
+typedef struct
+{
+  uint32_t TypeErase;   /*!< TypeErase: Mass erase or page erase.
+                             This parameter can be a value of @ref FLASHEx_Type_Erase */
+  
+  uint32_t Banks;       /*!< Select banks to erase when Mass erase is enabled.
+                             This parameter must be a value of @ref FLASHEx_Banks */    
+  
+  uint32_t PageAddress; /*!< PageAdress: Initial FLASH page address to erase when mass erase is disabled
+                             This parameter must be a number between Min_Data = 0x08000000 and Max_Data = FLASH_BANKx_END 
+                             (x = 1 or 2 depending on devices)*/
+  
+  uint32_t NbPages;     /*!< NbPages: Number of pagess to be erased.
+                             This parameter must be a value between Min_Data = 1 and Max_Data = (max number of pages - value of initial page)*/
+                                                          
+} FLASH_EraseInitTypeDef;
+
+/**
+  * @brief  FLASH Options bytes program structure definition
+  */
+typedef struct
+{
+  uint32_t OptionType;  /*!< OptionType: Option byte to be configured.
+                             This parameter can be a value of @ref FLASHEx_OB_Type */
+
+  uint32_t WRPState;    /*!< WRPState: Write protection activation or deactivation.
+                             This parameter can be a value of @ref FLASHEx_OB_WRP_State */
+
+  uint32_t WRPPage;     /*!< WRPPage: specifies the page(s) to be write protected
+                             This parameter can be a value of @ref FLASHEx_OB_Write_Protection */
+
+  uint32_t Banks;        /*!< Select banks for WRP activation/deactivation of all sectors.
+                              This parameter must be a value of @ref FLASHEx_Banks */ 
+    
+  uint8_t RDPLevel;     /*!< RDPLevel: Set the read protection level..
+                             This parameter can be a value of @ref FLASHEx_OB_Read_Protection */
+
+#if defined(FLASH_BANK2_END)
+  uint8_t USERConfig;   /*!< USERConfig: Program the FLASH User Option Byte: 
+                             IWDG / STOP / STDBY / BOOT1
+                             This parameter can be a combination of @ref FLASHEx_OB_IWatchdog, @ref FLASHEx_OB_nRST_STOP, 
+                             @ref FLASHEx_OB_nRST_STDBY, @ref FLASHEx_OB_BOOT1 */
+#else
+  uint8_t USERConfig;   /*!< USERConfig: Program the FLASH User Option Byte: 
+                             IWDG / STOP / STDBY
+                             This parameter can be a combination of @ref FLASHEx_OB_IWatchdog, @ref FLASHEx_OB_nRST_STOP, 
+                             @ref FLASHEx_OB_nRST_STDBY */
+#endif /* FLASH_BANK2_END */
+
+  uint32_t DATAAddress; /*!< DATAAddress: Address of the option byte DATA to be programmed
+                             This parameter can be a value of @ref FLASHEx_OB_Data_Address */
+  
+  uint8_t DATAData;     /*!< DATAData: Data to be stored in the option byte DATA
+                             This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */
+} FLASH_OBProgramInitTypeDef;
+
+/**
+  * @}
+  */
+
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup FLASHEx_Exported_Constants FLASHEx Exported Constants
+  * @{
+  */  
+
+/** @defgroup FLASHEx_Constants FLASH Constants
+  * @{
+  */ 
+
+/** @defgroup FLASHEx_Page_Size Page Size
+  * @{
+  */ 
+#if (defined(STM32F101x6) || defined(STM32F102x6) || defined(STM32F103x6) || defined(STM32F100xB) || defined(STM32F101xB) || defined(STM32F102xB) || defined(STM32F103xB))
+#define FLASH_PAGE_SIZE          ((uint32_t)0x400)
+#endif /* STM32F101x6 || STM32F102x6 || STM32F103x6 */
+       /* STM32F100xB || STM32F101xB || STM32F102xB || STM32F103xB */
+
+#if (defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG) || defined(STM32F103xG) || defined(STM32F105xC) || defined(STM32F107xC))
+#define FLASH_PAGE_SIZE          ((uint32_t)0x800)
+#endif /* STM32F100xB || STM32F101xB || STM32F102xB || STM32F103xB */
+       /* STM32F101xG || STM32F103xG */ 
+       /* STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASHEx_Type_Erase Type Erase
+  * @{
+  */ 
+#define FLASH_TYPEERASE_PAGES     ((uint32_t)0x00)  /*!<Pages erase only*/
+#define FLASH_TYPEERASE_MASSERASE ((uint32_t)0x02)  /*!<Flash mass erase activation*/
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASHEx_Banks Banks
+  * @{
+  */
+#if defined(FLASH_BANK2_END)
+#define FLASH_BANK_1     ((uint32_t)1) /*!< Bank 1   */
+#define FLASH_BANK_2     ((uint32_t)2) /*!< Bank 2   */
+#define FLASH_BANK_BOTH  ((uint32_t)FLASH_BANK_1 | FLASH_BANK_2) /*!< Bank1 and Bank2  */
+
+#else
+#define FLASH_BANK_1     ((uint32_t)1) /*!< Bank 1   */
+#endif
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASHEx_OptionByte_Constants Option Byte Constants
+  * @{
+  */ 
+
+/** @defgroup FLASHEx_OB_Type Option Bytes Type
+  * @{
+  */
+#define OPTIONBYTE_WRP            ((uint32_t)0x01)  /*!<WRP option byte configuration*/
+#define OPTIONBYTE_RDP            ((uint32_t)0x02)  /*!<RDP option byte configuration*/
+#define OPTIONBYTE_USER           ((uint32_t)0x04)  /*!<USER option byte configuration*/
+#define OPTIONBYTE_DATA           ((uint32_t)0x08)  /*!<DATA option byte configuration*/
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASHEx_OB_WRP_State Option Byte WRP State
+  * @{
+  */ 
+#define OB_WRPSTATE_DISABLE       ((uint32_t)0x00)  /*!<Disable the write protection of the desired pages*/
+#define OB_WRPSTATE_ENABLE        ((uint32_t)0x01)  /*!<Enable the write protection of the desired pagess*/
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASHEx_OB_Write_Protection Option Bytes Write Protection
+  * @{
+  */
+/* STM32 Low and Medium density devices */
+#if  defined(STM32F101x6) || defined(STM32F102x6) || defined(STM32F103x6) \
+  || defined(STM32F100xB) || defined(STM32F101xB) || defined(STM32F102xB) \
+  || defined(STM32F103xB)
+#define OB_WRP_PAGES0TO3               ((uint32_t)0x00000001) /*!< Write protection of page 0 to 3 */
+#define OB_WRP_PAGES4TO7               ((uint32_t)0x00000002) /*!< Write protection of page 4 to 7 */
+#define OB_WRP_PAGES8TO11              ((uint32_t)0x00000004) /*!< Write protection of page 8 to 11 */
+#define OB_WRP_PAGES12TO15             ((uint32_t)0x00000008) /*!< Write protection of page 12 to 15 */
+#define OB_WRP_PAGES16TO19             ((uint32_t)0x00000010) /*!< Write protection of page 16 to 19 */
+#define OB_WRP_PAGES20TO23             ((uint32_t)0x00000020) /*!< Write protection of page 20 to 23 */
+#define OB_WRP_PAGES24TO27             ((uint32_t)0x00000040) /*!< Write protection of page 24 to 27 */
+#define OB_WRP_PAGES28TO31             ((uint32_t)0x00000080) /*!< Write protection of page 28 to 31 */
+#endif /* STM32F101x6 || STM32F102x6 || STM32F103x6 */
+       /* STM32F100xB || STM32F101xB || STM32F102xB || STM32F103xB */
+       
+/* STM32 Medium-density devices */
+#if  defined(STM32F100xB) || defined(STM32F101xB) || defined(STM32F102xB) || defined(STM32F103xB)
+#define OB_WRP_PAGES32TO35             ((uint32_t)0x00000100) /*!< Write protection of page 32 to 35 */
+#define OB_WRP_PAGES36TO39             ((uint32_t)0x00000200) /*!< Write protection of page 36 to 39 */
+#define OB_WRP_PAGES40TO43             ((uint32_t)0x00000400) /*!< Write protection of page 40 to 43 */
+#define OB_WRP_PAGES44TO47             ((uint32_t)0x00000800) /*!< Write protection of page 44 to 47 */
+#define OB_WRP_PAGES48TO51             ((uint32_t)0x00001000) /*!< Write protection of page 48 to 51 */
+#define OB_WRP_PAGES52TO55             ((uint32_t)0x00002000) /*!< Write protection of page 52 to 55 */
+#define OB_WRP_PAGES56TO59             ((uint32_t)0x00004000) /*!< Write protection of page 56 to 59 */
+#define OB_WRP_PAGES60TO63             ((uint32_t)0x00008000) /*!< Write protection of page 60 to 63 */
+#define OB_WRP_PAGES64TO67             ((uint32_t)0x00010000) /*!< Write protection of page 64 to 67 */
+#define OB_WRP_PAGES68TO71             ((uint32_t)0x00020000) /*!< Write protection of page 68 to 71 */
+#define OB_WRP_PAGES72TO75             ((uint32_t)0x00040000) /*!< Write protection of page 72 to 75 */
+#define OB_WRP_PAGES76TO79             ((uint32_t)0x00080000) /*!< Write protection of page 76 to 79 */
+#define OB_WRP_PAGES80TO83             ((uint32_t)0x00100000) /*!< Write protection of page 80 to 83 */
+#define OB_WRP_PAGES84TO87             ((uint32_t)0x00200000) /*!< Write protection of page 84 to 87 */
+#define OB_WRP_PAGES88TO91             ((uint32_t)0x00400000) /*!< Write protection of page 88 to 91 */
+#define OB_WRP_PAGES92TO95             ((uint32_t)0x00800000) /*!< Write protection of page 92 to 95 */
+#define OB_WRP_PAGES96TO99             ((uint32_t)0x01000000) /*!< Write protection of page 96 to 99 */
+#define OB_WRP_PAGES100TO103           ((uint32_t)0x02000000) /*!< Write protection of page 100 to 103 */
+#define OB_WRP_PAGES104TO107           ((uint32_t)0x04000000) /*!< Write protection of page 104 to 107 */
+#define OB_WRP_PAGES108TO111           ((uint32_t)0x08000000) /*!< Write protection of page 108 to 111 */
+#define OB_WRP_PAGES112TO115           ((uint32_t)0x10000000) /*!< Write protection of page 112 to 115 */
+#define OB_WRP_PAGES116TO119           ((uint32_t)0x20000000) /*!< Write protection of page 115 to 119 */
+#define OB_WRP_PAGES120TO123           ((uint32_t)0x40000000) /*!< Write protection of page 120 to 123 */
+#define OB_WRP_PAGES124TO127           ((uint32_t)0x80000000) /*!< Write protection of page 124 to 127 */
+#endif /* STM32F100xB || STM32F101xB || STM32F102xB || STM32F103xB */
+
+
+/* STM32 High-density, XL-density and Connectivity line devices */
+#if  defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F103xE) \
+  || defined(STM32F101xG) || defined(STM32F103xG) \
+  || defined(STM32F105xC) || defined(STM32F107xC)
+#define OB_WRP_PAGES0TO1               ((uint32_t)0x00000001) /*!< Write protection of page 0 TO 1 */
+#define OB_WRP_PAGES2TO3               ((uint32_t)0x00000002) /*!< Write protection of page 2 TO 3 */
+#define OB_WRP_PAGES4TO5               ((uint32_t)0x00000004) /*!< Write protection of page 4 TO 5 */
+#define OB_WRP_PAGES6TO7               ((uint32_t)0x00000008) /*!< Write protection of page 6 TO 7 */
+#define OB_WRP_PAGES8TO9               ((uint32_t)0x00000010) /*!< Write protection of page 8 TO 9 */
+#define OB_WRP_PAGES10TO11             ((uint32_t)0x00000020) /*!< Write protection of page 10 TO 11 */
+#define OB_WRP_PAGES12TO13             ((uint32_t)0x00000040) /*!< Write protection of page 12 TO 13 */
+#define OB_WRP_PAGES14TO15             ((uint32_t)0x00000080) /*!< Write protection of page 14 TO 15 */
+#define OB_WRP_PAGES16TO17             ((uint32_t)0x00000100) /*!< Write protection of page 16 TO 17 */
+#define OB_WRP_PAGES18TO19             ((uint32_t)0x00000200) /*!< Write protection of page 18 TO 19 */
+#define OB_WRP_PAGES20TO21             ((uint32_t)0x00000400) /*!< Write protection of page 20 TO 21 */
+#define OB_WRP_PAGES22TO23             ((uint32_t)0x00000800) /*!< Write protection of page 22 TO 23 */
+#define OB_WRP_PAGES24TO25             ((uint32_t)0x00001000) /*!< Write protection of page 24 TO 25 */
+#define OB_WRP_PAGES26TO27             ((uint32_t)0x00002000) /*!< Write protection of page 26 TO 27 */
+#define OB_WRP_PAGES28TO29             ((uint32_t)0x00004000) /*!< Write protection of page 28 TO 29 */
+#define OB_WRP_PAGES30TO31             ((uint32_t)0x00008000) /*!< Write protection of page 30 TO 31 */
+#define OB_WRP_PAGES32TO33             ((uint32_t)0x00010000) /*!< Write protection of page 32 TO 33 */
+#define OB_WRP_PAGES34TO35             ((uint32_t)0x00020000) /*!< Write protection of page 34 TO 35 */
+#define OB_WRP_PAGES36TO37             ((uint32_t)0x00040000) /*!< Write protection of page 36 TO 37 */
+#define OB_WRP_PAGES38TO39             ((uint32_t)0x00080000) /*!< Write protection of page 38 TO 39 */
+#define OB_WRP_PAGES40TO41             ((uint32_t)0x00100000) /*!< Write protection of page 40 TO 41 */
+#define OB_WRP_PAGES42TO43             ((uint32_t)0x00200000) /*!< Write protection of page 42 TO 43 */
+#define OB_WRP_PAGES44TO45             ((uint32_t)0x00400000) /*!< Write protection of page 44 TO 45 */
+#define OB_WRP_PAGES46TO47             ((uint32_t)0x00800000) /*!< Write protection of page 46 TO 47 */
+#define OB_WRP_PAGES48TO49             ((uint32_t)0x01000000) /*!< Write protection of page 48 TO 49 */
+#define OB_WRP_PAGES50TO51             ((uint32_t)0x02000000) /*!< Write protection of page 50 TO 51 */
+#define OB_WRP_PAGES52TO53             ((uint32_t)0x04000000) /*!< Write protection of page 52 TO 53 */
+#define OB_WRP_PAGES54TO55             ((uint32_t)0x08000000) /*!< Write protection of page 54 TO 55 */
+#define OB_WRP_PAGES56TO57             ((uint32_t)0x10000000) /*!< Write protection of page 56 TO 57 */
+#define OB_WRP_PAGES58TO59             ((uint32_t)0x20000000) /*!< Write protection of page 58 TO 59 */
+#define OB_WRP_PAGES60TO61             ((uint32_t)0x40000000) /*!< Write protection of page 60 TO 61 */
+#define OB_WRP_PAGES62TO127            ((uint32_t)0x80000000) /*!< Write protection of page 62 TO 127 */
+#define OB_WRP_PAGES62TO255            ((uint32_t)0x80000000) /*!< Write protection of page 62 TO 255 */
+#define OB_WRP_PAGES62TO511            ((uint32_t)0x80000000) /*!< Write protection of page 62 TO 511 */
+#endif /* STM32F100xB || STM32F101xB || STM32F102xB || STM32F103xB */
+       /* STM32F101xG || STM32F103xG */ 
+       /* STM32F105xC || STM32F107xC */
+
+#define OB_WRP_ALLPAGES                ((uint32_t)0xFFFFFFFF) /*!< Write protection of all Pages */
+ 
+/* Low Density */
+#if  defined(STM32F101x6) || defined(STM32F102x6) || defined(STM32F103x6)
+#define OB_WRP_PAGES0TO31MASK          ((uint32_t)0x000000FF)
+#endif /* STM32F101x6 || STM32F102x6 || STM32F103x6 */
+
+/* Medium Density */
+#if  defined(STM32F100xB) || defined(STM32F101xB) || defined(STM32F102xB) || defined(STM32F103xB)
+#define OB_WRP_PAGES0TO31MASK          ((uint32_t)0x000000FF)
+#define OB_WRP_PAGES32TO63MASK         ((uint32_t)0x0000FF00)
+#define OB_WRP_PAGES64TO95MASK         ((uint32_t)0x00FF0000)
+#define OB_WRP_PAGES96TO127MASK        ((uint32_t)0xFF000000)
+#endif /* STM32F100xB || STM32F101xB || STM32F102xB || STM32F103xB*/
+       
+/* High Density */
+#if  defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F103xE)  
+#define OB_WRP_PAGES0TO15MASK          ((uint32_t)0x000000FF)
+#define OB_WRP_PAGES16TO31MASK         ((uint32_t)0x0000FF00)
+#define OB_WRP_PAGES32TO47MASK         ((uint32_t)0x00FF0000)
+#define OB_WRP_PAGES48TO255MASK        ((uint32_t)0xFF000000)
+#endif /* STM32F100xE || STM32F101xE || STM32F103xE */
+
+/* XL Density */
+#if  defined(STM32F101xG) || defined(STM32F103xG) 
+#define OB_WRP_PAGES0TO15MASK          ((uint32_t)0x000000FF)
+#define OB_WRP_PAGES16TO31MASK         ((uint32_t)0x0000FF00)
+#define OB_WRP_PAGES32TO47MASK         ((uint32_t)0x00FF0000)
+#define OB_WRP_PAGES48TO511MASK        ((uint32_t)0xFF000000)
+#endif /* STM32F101xG || STM32F103xG */
+      
+/* Connectivity line devices */
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define OB_WRP_PAGES0TO15MASK          ((uint32_t)0x000000FF)
+#define OB_WRP_PAGES16TO31MASK         ((uint32_t)0x0000FF00)
+#define OB_WRP_PAGES32TO47MASK         ((uint32_t)0x00FF0000)
+#define OB_WRP_PAGES48TO127MASK        ((uint32_t)0xFF000000)
+#endif /* STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASHEx_OB_Read_Protection Option Byte Read Protection
+  * @{
+  */
+#define OB_RDP_LEVEL_0            ((uint8_t)0xA5)
+#define OB_RDP_LEVEL_1            ((uint8_t)0x00)
+/**
+  * @}
+  */
+  
+/** @defgroup FLASHEx_OB_IWatchdog Option Byte IWatchdog
+  * @{
+  */ 
+#define OB_IWDG_SW                ((uint16_t)0x0001)  /*!< Software IWDG selected */
+#define OB_IWDG_HW                ((uint16_t)0x0000)  /*!< Hardware IWDG selected */
+/**
+  * @}
+  */
+
+/** @defgroup FLASHEx_OB_nRST_STOP Option Byte nRST STOP
+  * @{
+  */ 
+#define OB_STOP_NO_RST            ((uint16_t)0x0002) /*!< No reset generated when entering in STOP */
+#define OB_STOP_RST               ((uint16_t)0x0000) /*!< Reset generated when entering in STOP */
+/**
+  * @}
+  */ 
+
+/** @defgroup FLASHEx_OB_nRST_STDBY Option Byte nRST STDBY
+  * @{
+  */ 
+#define OB_STDBY_NO_RST           ((uint16_t)0x0004) /*!< No reset generated when entering in STANDBY */
+#define OB_STDBY_RST              ((uint16_t)0x0000) /*!< Reset generated when entering in STANDBY */
+/**
+  * @}
+  */
+
+#if defined(FLASH_BANK2_END)
+/** @defgroup FLASHEx_OB_BOOT1 Option Byte BOOT1
+  * @{
+  */
+#define OB_BOOT1_RESET            ((uint16_t)0x0000) /*!< BOOT1 Reset */
+#define OB_BOOT1_SET              ((uint16_t)0x0008) /*!< BOOT1 Set */
+/**
+  * @}
+  */
+#endif /* FLASH_BANK2_END */
+
+/** @defgroup FLASHEx_OB_Data_Address  Option Byte Data Address
+  * @{
+  */
+#define OB_DATA_ADDRESS_DATA0     ((uint32_t)0x1FFFF804)
+#define OB_DATA_ADDRESS_DATA1     ((uint32_t)0x1FFFF806)
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup FLASHEx_Constants
+  * @{
+  */ 
+
+/** @defgroup FLASH_Flag_definition Flag definition
+  * @brief Flag definition
+  * @{
+  */
+#if defined(FLASH_BANK2_END)
+ #define FLASH_FLAG_BSY             FLASH_FLAG_BSY_BANK1       /*!< FLASH Bank1 Busy flag                   */ 
+ #define FLASH_FLAG_PGERR           FLASH_FLAG_PGERR_BANK1     /*!< FLASH Bank1 Programming error flag      */
+ #define FLASH_FLAG_WRPERR          FLASH_FLAG_WRPERR_BANK1    /*!< FLASH Bank1 Write protected error flag  */
+ #define FLASH_FLAG_EOP             FLASH_FLAG_EOP_BANK1       /*!< FLASH Bank1 End of Operation flag       */
+
+ #define FLASH_FLAG_BSY_BANK1       FLASH_SR_BSY               /*!< FLASH Bank1 Busy flag                   */ 
+ #define FLASH_FLAG_PGERR_BANK1     FLASH_SR_PGERR             /*!< FLASH Bank1 Programming error flag      */
+ #define FLASH_FLAG_WRPERR_BANK1    FLASH_SR_WRPRTERR          /*!< FLASH Bank1 Write protected error flag  */
+ #define FLASH_FLAG_EOP_BANK1       FLASH_SR_EOP               /*!< FLASH Bank1 End of Operation flag       */
+       
+ #define FLASH_FLAG_BSY_BANK2       (FLASH_SR2_BSY << 16)      /*!< FLASH Bank2 Busy flag                   */ 
+ #define FLASH_FLAG_PGERR_BANK2     (FLASH_SR2_PGERR << 16)    /*!< FLASH Bank2 Programming error flag      */
+ #define FLASH_FLAG_WRPERR_BANK2    (FLASH_SR2_WRPRTERR << 16) /*!< FLASH Bank2 Write protected error flag  */
+ #define FLASH_FLAG_EOP_BANK2       (FLASH_SR2_EOP << 16)      /*!< FLASH Bank2 End of Operation flag       */
+
+#else  
+
+ #define FLASH_FLAG_BSY             FLASH_SR_BSY              /*!< FLASH Busy flag                          */ 
+ #define FLASH_FLAG_PGERR           FLASH_SR_PGERR            /*!< FLASH Programming error flag             */
+ #define FLASH_FLAG_WRPERR          FLASH_SR_WRPRTERR         /*!< FLASH Write protected error flag         */
+ #define FLASH_FLAG_EOP             FLASH_SR_EOP              /*!< FLASH End of Operation flag              */
+
+#endif
+ #define FLASH_FLAG_OPTVERR         ((OBR_REG_INDEX << 8 | FLASH_OBR_OPTERR)) /*!< Option Byte Error        */
+/**
+  * @}
+  */
+  
+/** @defgroup FLASH_Interrupt_definition Interrupt definition
+  * @brief FLASH Interrupt definition
+  * @{
+  */
+#if defined(FLASH_BANK2_END)
+ #define FLASH_IT_EOP               FLASH_IT_EOP_BANK1        /*!< End of FLASH Operation Interrupt source Bank1 */
+ #define FLASH_IT_ERR               FLASH_IT_ERR_BANK1        /*!< Error Interrupt source Bank1                  */
+
+ #define FLASH_IT_EOP_BANK1         FLASH_CR_EOPIE            /*!< End of FLASH Operation Interrupt source Bank1 */
+ #define FLASH_IT_ERR_BANK1         FLASH_CR_ERRIE            /*!< Error Interrupt source Bank1                  */
+
+ #define FLASH_IT_EOP_BANK2         (FLASH_CR2_EOPIE << 16)   /*!< End of FLASH Operation Interrupt source Bank2 */
+ #define FLASH_IT_ERR_BANK2         (FLASH_CR2_ERRIE << 16)   /*!< Error Interrupt source Bank2                  */
+
+#else
+
+ #define FLASH_IT_EOP               FLASH_CR_EOPIE          /*!< End of FLASH Operation Interrupt source */
+ #define FLASH_IT_ERR               FLASH_CR_ERRIE          /*!< Error Interrupt source                  */
+
+#endif
+/**
+  * @}
+  */  
+
+/**
+  * @}
+  */
+  
+
+/**
+  * @}
+  */
+
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup FLASHEx_Exported_Macros FLASHEx Exported Macros
+  * @{
+  */
+
+/** @defgroup FLASH_Interrupt Interrupt
+ *  @brief macros to handle FLASH interrupts
+ * @{
+ */ 
+
+#if defined(FLASH_BANK2_END)
+/**
+  * @brief  Enable the specified FLASH interrupt.
+  * @param  __INTERRUPT__  FLASH interrupt 
+  *     This parameter can be any combination of the following values:
+  *     @arg @ref FLASH_IT_EOP_BANK1 End of FLASH Operation Interrupt on bank1
+  *     @arg @ref FLASH_IT_ERR_BANK1 Error Interrupt on bank1
+  *     @arg @ref FLASH_IT_EOP_BANK2 End of FLASH Operation Interrupt on bank2
+  *     @arg @ref FLASH_IT_ERR_BANK2 Error Interrupt on bank2
+  * @retval none
+  */ 
+#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__)  do { \
+                          /* Enable Bank1 IT */ \
+                          SET_BIT(FLASH->CR, ((__INTERRUPT__) & 0x0000FFFF)); \
+                          /* Enable Bank2 IT */ \
+                          SET_BIT(FLASH->CR2, ((__INTERRUPT__) >> 16)); \
+                    } while(0)
+
+/**
+  * @brief  Disable the specified FLASH interrupt.
+  * @param  __INTERRUPT__  FLASH interrupt 
+  *     This parameter can be any combination of the following values:
+  *     @arg @ref FLASH_IT_EOP_BANK1 End of FLASH Operation Interrupt on bank1
+  *     @arg @ref FLASH_IT_ERR_BANK1 Error Interrupt on bank1
+  *     @arg @ref FLASH_IT_EOP_BANK2 End of FLASH Operation Interrupt on bank2
+  *     @arg @ref FLASH_IT_ERR_BANK2 Error Interrupt on bank2
+  * @retval none
+  */ 
+#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__)  do { \
+                          /* Disable Bank1 IT */ \
+                          CLEAR_BIT(FLASH->CR, ((__INTERRUPT__) & 0x0000FFFF)); \
+                          /* Disable Bank2 IT */ \
+                          CLEAR_BIT(FLASH->CR2, ((__INTERRUPT__) >> 16)); \
+                    } while(0)
+
+/**
+  * @brief  Get the specified FLASH flag status. 
+  * @param  __FLAG__ specifies the FLASH flag to check.
+  *          This parameter can be one of the following values:
+  *            @arg @ref FLASH_FLAG_EOP_BANK1    FLASH End of Operation flag on bank1
+  *            @arg @ref FLASH_FLAG_WRPERR_BANK1 FLASH Write protected error flag on bank1
+  *            @arg @ref FLASH_FLAG_PGERR_BANK1  FLASH Programming error flag on bank1
+  *            @arg @ref FLASH_FLAG_BSY_BANK1    FLASH Busy flag on bank1
+  *            @arg @ref FLASH_FLAG_EOP_BANK2    FLASH End of Operation flag on bank2
+  *            @arg @ref FLASH_FLAG_WRPERR_BANK2 FLASH Write protected error flag on bank2
+  *            @arg @ref FLASH_FLAG_PGERR_BANK2  FLASH Programming error flag on bank2
+  *            @arg @ref FLASH_FLAG_BSY_BANK2    FLASH Busy flag on bank2
+  *            @arg @ref FLASH_FLAG_OPTVERR  Loaded OB and its complement do not match
+  * @retval The new state of __FLAG__ (SET or RESET).
+  */
+#define __HAL_FLASH_GET_FLAG(__FLAG__) (((__FLAG__) == FLASH_FLAG_OPTVERR) ? \
+                                            (FLASH->OBR & FLASH_OBR_OPTERR) : \
+                                        ((((__FLAG__) & SR_FLAG_MASK) != RESET)? \
+                                            (FLASH->SR & ((__FLAG__) & SR_FLAG_MASK)) : \
+                                            (FLASH->SR2 & ((__FLAG__) >> 16))))
+
+/**
+  * @brief  Clear the specified FLASH flag.
+  * @param  __FLAG__ specifies the FLASH flags to clear.
+  *          This parameter can be any combination of the following values:
+  *            @arg @ref FLASH_FLAG_EOP_BANK1    FLASH End of Operation flag on bank1
+  *            @arg @ref FLASH_FLAG_WRPERR_BANK1 FLASH Write protected error flag on bank1
+  *            @arg @ref FLASH_FLAG_PGERR_BANK1  FLASH Programming error flag on bank1
+  *            @arg @ref FLASH_FLAG_BSY_BANK1    FLASH Busy flag on bank1
+  *            @arg @ref FLASH_FLAG_EOP_BANK2    FLASH End of Operation flag on bank2
+  *            @arg @ref FLASH_FLAG_WRPERR_BANK2 FLASH Write protected error flag on bank2
+  *            @arg @ref FLASH_FLAG_PGERR_BANK2  FLASH Programming error flag on bank2
+  *            @arg @ref FLASH_FLAG_BSY_BANK2    FLASH Busy flag on bank2
+  *            @arg @ref FLASH_FLAG_OPTVERR  Loaded OB and its complement do not match
+  * @retval none
+  */
+#define __HAL_FLASH_CLEAR_FLAG(__FLAG__)  do { \
+                          /* Clear FLASH_FLAG_OPTVERR flag */ \
+                          if ((__FLAG__) == FLASH_FLAG_OPTVERR) \
+                          { \
+                            CLEAR_BIT(FLASH->OBR, FLASH_OBR_OPTERR); \
+                          } \
+                          else { \
+                          /* Clear Flag in Bank1 */ \
+                          if (((__FLAG__) & SR_FLAG_MASK) != RESET) \
+                          { \
+                            FLASH->SR  = ((__FLAG__) & SR_FLAG_MASK); \
+                          } \
+                          /* Clear Flag in Bank2 */ \
+                          if (((__FLAG__) >> 16) != RESET) \
+                          { \
+                            FLASH->SR2 = ((__FLAG__) >> 16); \
+                          } \
+                          } \
+                    } while(0)
+#else
+/**
+  * @brief  Enable the specified FLASH interrupt.
+  * @param  __INTERRUPT__  FLASH interrupt 
+  *         This parameter can be any combination of the following values:
+  *     @arg @ref FLASH_IT_EOP End of FLASH Operation Interrupt
+  *     @arg @ref FLASH_IT_ERR Error Interrupt    
+  * @retval none
+  */ 
+#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__)  (FLASH->CR |= (__INTERRUPT__))
+
+/**
+  * @brief  Disable the specified FLASH interrupt.
+  * @param  __INTERRUPT__  FLASH interrupt 
+  *         This parameter can be any combination of the following values:
+  *     @arg @ref FLASH_IT_EOP End of FLASH Operation Interrupt
+  *     @arg @ref FLASH_IT_ERR Error Interrupt    
+  * @retval none
+  */ 
+#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__)   (FLASH->CR &= ~(__INTERRUPT__))
+
+/**
+  * @brief  Get the specified FLASH flag status. 
+  * @param  __FLAG__ specifies the FLASH flag to check.
+  *          This parameter can be one of the following values:
+  *            @arg @ref FLASH_FLAG_EOP    FLASH End of Operation flag 
+  *            @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag 
+  *            @arg @ref FLASH_FLAG_PGERR  FLASH Programming error flag
+  *            @arg @ref FLASH_FLAG_BSY    FLASH Busy flag
+  *            @arg @ref FLASH_FLAG_OPTVERR  Loaded OB and its complement do not match
+  * @retval The new state of __FLAG__ (SET or RESET).
+  */
+#define __HAL_FLASH_GET_FLAG(__FLAG__)  (((__FLAG__) == FLASH_FLAG_OPTVERR) ? \
+                                            (FLASH->OBR & FLASH_OBR_OPTERR) : \
+                                            (FLASH->SR & (__FLAG__)))
+/**
+  * @brief  Clear the specified FLASH flag.
+  * @param  __FLAG__ specifies the FLASH flags to clear.
+  *          This parameter can be any combination of the following values:
+  *            @arg @ref FLASH_FLAG_EOP    FLASH End of Operation flag 
+  *            @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag 
+  *            @arg @ref FLASH_FLAG_PGERR  FLASH Programming error flag 
+  *            @arg @ref FLASH_FLAG_OPTVERR  Loaded OB and its complement do not match
+  * @retval none
+  */
+#define __HAL_FLASH_CLEAR_FLAG(__FLAG__)   do { \
+                          /* Clear FLASH_FLAG_OPTVERR flag */ \
+                          if ((__FLAG__) == FLASH_FLAG_OPTVERR) \
+                          { \
+                            CLEAR_BIT(FLASH->OBR, FLASH_OBR_OPTERR); \
+                          } \
+                          else { \
+                            /* Clear Flag in Bank1 */ \
+                            FLASH->SR  = (__FLAG__); \
+                          } \
+                    } while(0)
+
+#endif
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup FLASHEx_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup FLASHEx_Exported_Functions_Group1
+  * @{
+  */
+/* IO operation functions *****************************************************/
+HAL_StatusTypeDef  HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError);
+HAL_StatusTypeDef  HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit);
+
+/**
+  * @}
+  */
+
+/** @addtogroup FLASHEx_Exported_Functions_Group2
+  * @{
+  */
+/* Peripheral Control functions ***********************************************/
+HAL_StatusTypeDef  HAL_FLASHEx_OBErase(void);
+HAL_StatusTypeDef  HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit);
+void               HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit);
+uint32_t           HAL_FLASHEx_OBGetUserData(uint32_t DATAAdress);
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_FLASH_EX_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,324 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_gpio.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of GPIO HAL module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_GPIO_H
+#define __STM32F1xx_HAL_GPIO_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup GPIO
+  * @{
+  */ 
+
+/* Exported types ------------------------------------------------------------*/
+/** @defgroup GPIO_Exported_Types GPIO Exported Types
+  * @{
+  */ 
+
+/** 
+  * @brief   GPIO Init structure definition  
+  */ 
+typedef struct
+{
+  uint32_t Pin;       /*!< Specifies the GPIO pins to be configured.
+                           This parameter can be any value of @ref GPIO_pins_define */
+
+  uint32_t Mode;      /*!< Specifies the operating mode for the selected pins.
+                           This parameter can be a value of @ref GPIO_mode_define */
+                           
+  uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
+                           This parameter can be a value of @ref GPIO_pull_define */
+                           
+  uint32_t Speed;     /*!< Specifies the speed for the selected pins.
+                           This parameter can be a value of @ref GPIO_speed_define */
+}GPIO_InitTypeDef;
+ 
+/** 
+  * @brief  GPIO Bit SET and Bit RESET enumeration 
+  */
+typedef enum
+{ 
+  GPIO_PIN_RESET = 0,
+  GPIO_PIN_SET
+}GPIO_PinState;
+
+/**
+  * @}
+  */
+
+
+/* Exported constants --------------------------------------------------------*/
+
+/** @defgroup GPIO_Exported_Constants GPIO Exported Constants
+  * @{
+  */ 
+
+/** @defgroup GPIO_pins_define GPIO pins define
+  * @{
+  */ 
+#define GPIO_PIN_0                 ((uint16_t)0x0001)  /* Pin 0 selected    */
+#define GPIO_PIN_1                 ((uint16_t)0x0002)  /* Pin 1 selected    */
+#define GPIO_PIN_2                 ((uint16_t)0x0004)  /* Pin 2 selected    */
+#define GPIO_PIN_3                 ((uint16_t)0x0008)  /* Pin 3 selected    */
+#define GPIO_PIN_4                 ((uint16_t)0x0010)  /* Pin 4 selected    */
+#define GPIO_PIN_5                 ((uint16_t)0x0020)  /* Pin 5 selected    */
+#define GPIO_PIN_6                 ((uint16_t)0x0040)  /* Pin 6 selected    */
+#define GPIO_PIN_7                 ((uint16_t)0x0080)  /* Pin 7 selected    */
+#define GPIO_PIN_8                 ((uint16_t)0x0100)  /* Pin 8 selected    */
+#define GPIO_PIN_9                 ((uint16_t)0x0200)  /* Pin 9 selected    */
+#define GPIO_PIN_10                ((uint16_t)0x0400)  /* Pin 10 selected   */
+#define GPIO_PIN_11                ((uint16_t)0x0800)  /* Pin 11 selected   */
+#define GPIO_PIN_12                ((uint16_t)0x1000)  /* Pin 12 selected   */
+#define GPIO_PIN_13                ((uint16_t)0x2000)  /* Pin 13 selected   */
+#define GPIO_PIN_14                ((uint16_t)0x4000)  /* Pin 14 selected   */
+#define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 selected   */
+#define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* All pins selected */
+
+#define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */
+/**
+  * @}
+  */ 
+
+     
+/** @defgroup GPIO_mode_define GPIO mode define
+  * @brief GPIO Configuration Mode 
+  *        Elements values convention: 0xX0yz00YZ
+  *           - X  : GPIO mode or EXTI Mode
+  *           - y  : External IT or Event trigger detection 
+  *           - z  : IO configuration on External IT or Event
+  *           - Y  : Output type (Push Pull or Open Drain)
+  *           - Z  : IO Direction mode (Input, Output, Alternate or Analog)
+  * @{
+  */ 
+#define  GPIO_MODE_INPUT                        ((uint32_t)0x00000000)   /*!< Input Floating Mode                   */
+#define  GPIO_MODE_OUTPUT_PP                    ((uint32_t)0x00000001)   /*!< Output Push Pull Mode                 */
+#define  GPIO_MODE_OUTPUT_OD                    ((uint32_t)0x00000011)   /*!< Output Open Drain Mode                */
+#define  GPIO_MODE_AF_PP                        ((uint32_t)0x00000002)   /*!< Alternate Function Push Pull Mode     */
+#define  GPIO_MODE_AF_OD                        ((uint32_t)0x00000012)   /*!< Alternate Function Open Drain Mode    */
+#define  GPIO_MODE_AF_INPUT                     GPIO_MODE_INPUT          /*!< Alternate Function Input Mode         */
+
+#define  GPIO_MODE_ANALOG                       ((uint32_t)0x00000003)   /*!< Analog Mode  */
+    
+#define  GPIO_MODE_IT_RISING                    ((uint32_t)0x10110000)   /*!< External Interrupt Mode with Rising edge trigger detection          */
+#define  GPIO_MODE_IT_FALLING                   ((uint32_t)0x10210000)   /*!< External Interrupt Mode with Falling edge trigger detection         */
+#define  GPIO_MODE_IT_RISING_FALLING            ((uint32_t)0x10310000)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */
+ 
+#define  GPIO_MODE_EVT_RISING                   ((uint32_t)0x10120000)   /*!< External Event Mode with Rising edge trigger detection               */
+#define  GPIO_MODE_EVT_FALLING                  ((uint32_t)0x10220000)   /*!< External Event Mode with Falling edge trigger detection              */
+#define  GPIO_MODE_EVT_RISING_FALLING           ((uint32_t)0x10320000)   /*!< External Event Mode with Rising/Falling edge trigger detection       */
+
+/**
+  * @}
+  */
+                                                    
+                                                         
+/** @defgroup GPIO_speed_define GPIO speed define
+  * @brief GPIO Output Maximum frequency
+  * @{
+  */  
+#define  GPIO_SPEED_FREQ_LOW              (GPIO_CRL_MODE0_1) /*!< Low speed */
+#define  GPIO_SPEED_FREQ_MEDIUM           (GPIO_CRL_MODE0_0) /*!< Medium speed */
+#define  GPIO_SPEED_FREQ_HIGH             (GPIO_CRL_MODE0)   /*!< High speed */
+
+/**
+  * @}
+  */
+
+
+ /** @defgroup GPIO_pull_define GPIO pull define
+   * @brief GPIO Pull-Up or Pull-Down Activation
+   * @{
+   */  
+#define  GPIO_NOPULL        ((uint32_t)0x00000000)   /*!< No Pull-up or Pull-down activation  */
+#define  GPIO_PULLUP        ((uint32_t)0x00000001)   /*!< Pull-up activation                  */
+#define  GPIO_PULLDOWN      ((uint32_t)0x00000002)   /*!< Pull-down activation                */
+
+/**
+  * @}
+  */
+  
+/**
+  * @}
+  */
+
+
+/* Private macros --------------------------------------------------------*/
+/** @addtogroup GPIO_Private_Macros
+  * @{
+  */
+
+#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
+
+#define IS_GPIO_PIN(PIN)           (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00)
+
+#define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \
+                            ((PULL) == GPIO_PULLDOWN))
+                            
+#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW) || \
+                              ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || ((SPEED) == GPIO_SPEED_FREQ_HIGH))
+
+#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT)              ||\
+                            ((MODE) == GPIO_MODE_OUTPUT_PP)          ||\
+                            ((MODE) == GPIO_MODE_OUTPUT_OD)          ||\
+                            ((MODE) == GPIO_MODE_AF_PP)              ||\
+                            ((MODE) == GPIO_MODE_AF_OD)              ||\
+                            ((MODE) == GPIO_MODE_IT_RISING)          ||\
+                            ((MODE) == GPIO_MODE_IT_FALLING)         ||\
+                            ((MODE) == GPIO_MODE_IT_RISING_FALLING)  ||\
+                            ((MODE) == GPIO_MODE_EVT_RISING)         ||\
+                            ((MODE) == GPIO_MODE_EVT_FALLING)        ||\
+                            ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\
+                            ((MODE) == GPIO_MODE_ANALOG))
+
+/**
+  * @}
+  */
+
+
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup GPIO_Exported_Macros GPIO Exported Macros
+  * @{
+  */
+
+/**
+  * @brief  Checks whether the specified EXTI line flag is set or not.
+  * @param  __EXTI_LINE__: specifies the EXTI line flag to check.
+  *         This parameter can be GPIO_PIN_x where x can be(0..15)
+  * @retval The new state of __EXTI_LINE__ (SET or RESET).
+  */
+#define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))   
+     
+/**
+  * @brief  Clears the EXTI's line pending flags.
+  * @param  __EXTI_LINE__: specifies the EXTI lines flags to clear.
+  *         This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
+  * @retval None
+  */
+#define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))
+
+/**
+  * @brief  Checks whether the specified EXTI line is asserted or not.
+  * @param  __EXTI_LINE__: specifies the EXTI line to check.
+  *          This parameter can be GPIO_PIN_x where x can be(0..15)
+  * @retval The new state of __EXTI_LINE__ (SET or RESET).
+  */
+#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))   
+     
+/**
+  * @brief  Clears the EXTI's line pending bits.
+  * @param  __EXTI_LINE__: specifies the EXTI lines to clear.
+  *          This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
+  * @retval None
+  */
+#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))
+
+/**
+  * @brief  Generates a Software interrupt on selected EXTI line.
+  * @param  __EXTI_LINE__: specifies the EXTI line to check.
+  *          This parameter can be GPIO_PIN_x where x can be(0..15)
+  * @retval None
+  */
+#define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__))
+
+/* Include GPIO HAL Extension module */
+#include "stm32f1xx_hal_gpio_ex.h"
+
+/**
+  * @}
+  */
+
+
+
+/* Exported functions --------------------------------------------------------*/ 
+/* Initialization and de-initialization functions *******************************/
+/** @addtogroup GPIO_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup GPIO_Exported_Functions_Group1
+  * @{
+  */
+void  HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);
+void  HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);
+/**
+  * @}
+  */
+
+/* IO operation functions *******************************************************/
+/** @addtogroup GPIO_Exported_Functions_Group2
+  * @{
+  */
+GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
+void          HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
+void          HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
+HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
+void          HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
+void          HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */ 
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_GPIO_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,887 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_gpio_ex.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of GPIO HAL Extension module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_GPIO_EX_H
+#define __STM32F1xx_HAL_GPIO_EX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup GPIOEx GPIOEx
+  * @{
+  */ 
+
+/* Exported types ------------------------------------------------------------*/
+
+/* Exported constants --------------------------------------------------------*/
+
+/** @defgroup GPIOEx_Exported_Constants GPIOEx Exported Constants
+  * @{
+  */ 
+  
+/** @defgroup GPIOEx_EVENTOUT EVENTOUT Cortex Configuration
+  * @brief This section propose definition to use the Cortex EVENTOUT signal.
+  * @{
+  */
+  
+/** @defgroup GPIOEx_EVENTOUT_PIN EVENTOUT Pin 
+  * @{
+  */
+  
+#define AFIO_EVENTOUT_PIN_0  AFIO_EVCR_PIN_PX0 /*!< EVENTOUT on pin 0 */
+#define AFIO_EVENTOUT_PIN_1  AFIO_EVCR_PIN_PX1 /*!< EVENTOUT on pin 1 */
+#define AFIO_EVENTOUT_PIN_2  AFIO_EVCR_PIN_PX2 /*!< EVENTOUT on pin 2 */
+#define AFIO_EVENTOUT_PIN_3  AFIO_EVCR_PIN_PX3 /*!< EVENTOUT on pin 3 */
+#define AFIO_EVENTOUT_PIN_4  AFIO_EVCR_PIN_PX4 /*!< EVENTOUT on pin 4 */
+#define AFIO_EVENTOUT_PIN_5  AFIO_EVCR_PIN_PX5 /*!< EVENTOUT on pin 5 */
+#define AFIO_EVENTOUT_PIN_6  AFIO_EVCR_PIN_PX6 /*!< EVENTOUT on pin 6 */
+#define AFIO_EVENTOUT_PIN_7  AFIO_EVCR_PIN_PX7 /*!< EVENTOUT on pin 7 */
+#define AFIO_EVENTOUT_PIN_8  AFIO_EVCR_PIN_PX8 /*!< EVENTOUT on pin 8 */
+#define AFIO_EVENTOUT_PIN_9  AFIO_EVCR_PIN_PX9 /*!< EVENTOUT on pin 9 */
+#define AFIO_EVENTOUT_PIN_10 AFIO_EVCR_PIN_PX10 /*!< EVENTOUT on pin 10 */
+#define AFIO_EVENTOUT_PIN_11 AFIO_EVCR_PIN_PX11 /*!< EVENTOUT on pin 11 */
+#define AFIO_EVENTOUT_PIN_12 AFIO_EVCR_PIN_PX12 /*!< EVENTOUT on pin 12 */
+#define AFIO_EVENTOUT_PIN_13 AFIO_EVCR_PIN_PX13 /*!< EVENTOUT on pin 13 */
+#define AFIO_EVENTOUT_PIN_14 AFIO_EVCR_PIN_PX14 /*!< EVENTOUT on pin 14 */
+#define AFIO_EVENTOUT_PIN_15 AFIO_EVCR_PIN_PX15 /*!< EVENTOUT on pin 15 */
+
+#define IS_AFIO_EVENTOUT_PIN(__PIN__) (((__PIN__) == AFIO_EVENTOUT_PIN_0) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_1) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_2) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_3) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_4) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_5) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_6) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_7) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_8) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_9) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_10) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_11) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_12) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_13) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_14) || \
+                                       ((__PIN__) == AFIO_EVENTOUT_PIN_15))
+/**
+  * @}
+  */ 
+  
+/** @defgroup GPIOEx_EVENTOUT_PORT EVENTOUT Port
+  * @{
+  */
+  
+#define AFIO_EVENTOUT_PORT_A AFIO_EVCR_PORT_PA /*!< EVENTOUT on port A */
+#define AFIO_EVENTOUT_PORT_B AFIO_EVCR_PORT_PB /*!< EVENTOUT on port B */
+#define AFIO_EVENTOUT_PORT_C AFIO_EVCR_PORT_PC /*!< EVENTOUT on port C */
+#define AFIO_EVENTOUT_PORT_D AFIO_EVCR_PORT_PD /*!< EVENTOUT on port D */
+#define AFIO_EVENTOUT_PORT_E AFIO_EVCR_PORT_PE /*!< EVENTOUT on port E */
+
+#define IS_AFIO_EVENTOUT_PORT(__PORT__) (((__PORT__) == AFIO_EVENTOUT_PORT_A) || \
+                                         ((__PORT__) == AFIO_EVENTOUT_PORT_B) || \
+                                         ((__PORT__) == AFIO_EVENTOUT_PORT_C) || \
+                                         ((__PORT__) == AFIO_EVENTOUT_PORT_D) || \
+                                         ((__PORT__) == AFIO_EVENTOUT_PORT_E))
+/**
+  * @}
+  */
+  
+/**
+  * @}
+  */
+
+/** @defgroup GPIOEx_AFIO_AF_REMAPPING Alternate Function Remapping
+  * @brief This section propose definition to remap the alternate function to some other port/pins.
+  * @{
+  */
+  
+/**
+  * @brief Enable the remapping of SPI1 alternate function NSS, SCK, MISO and MOSI.
+  * @note  ENABLE: Remap     (NSS/PA15, SCK/PB3, MISO/PB4, MOSI/PB5)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_SPI1_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_SPI1_REMAP)
+
+/**
+  * @brief Disable the remapping of SPI1 alternate function NSS, SCK, MISO and MOSI.
+  * @note  DISABLE: No remap (NSS/PA4,  SCK/PA5, MISO/PA6, MOSI/PA7)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_SPI1_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_SPI1_REMAP)
+
+/**
+  * @brief Enable the remapping of I2C1 alternate function SCL and SDA.
+  * @note  ENABLE: Remap     (SCL/PB8, SDA/PB9)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_I2C1_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_I2C1_REMAP)
+
+/**
+  * @brief Disable the remapping of I2C1 alternate function SCL and SDA.
+  * @note  DISABLE: No remap (SCL/PB6, SDA/PB7)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_I2C1_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_I2C1_REMAP)
+
+/**
+  * @brief Enable the remapping of USART1 alternate function TX and RX.
+  * @note  ENABLE: Remap     (TX/PB6, RX/PB7)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_USART1_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_USART1_REMAP)
+
+/**
+  * @brief Disable the remapping of USART1 alternate function TX and RX.
+  * @note  DISABLE: No remap (TX/PA9, RX/PA10)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_USART1_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_USART1_REMAP)
+
+/**
+  * @brief Enable the remapping of USART2 alternate function CTS, RTS, CK, TX and RX.
+  * @note  ENABLE: Remap     (CTS/PD3, RTS/PD4, TX/PD5, RX/PD6, CK/PD7)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_USART2_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_USART2_REMAP)
+
+/**
+  * @brief Disable the remapping of USART2 alternate function CTS, RTS, CK, TX and RX.
+  * @note  DISABLE: No remap (CTS/PA0, RTS/PA1, TX/PA2, RX/PA3, CK/PA4)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_USART2_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_USART2_REMAP)
+
+/**
+  * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX.
+  * @note  ENABLE: Full remap     (TX/PD8,  RX/PD9,  CK/PD10, CTS/PD11, RTS/PD12)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_USART3_ENABLE()  MODIFY_REG(AFIO->MAPR, AFIO_MAPR_USART3_REMAP, AFIO_MAPR_USART3_REMAP_FULLREMAP)
+
+/**
+  * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX.
+  * @note  PARTIAL: Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_USART3_PARTIAL() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_USART3_REMAP, AFIO_MAPR_USART3_REMAP_PARTIALREMAP)
+
+/**
+  * @brief Disable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX.
+  * @note  DISABLE: No remap      (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_USART3_DISABLE() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_USART3_REMAP, AFIO_MAPR_USART3_REMAP_NOREMAP)
+
+/**
+  * @brief Enable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN)
+  * @note  ENABLE: Full remap     (ETR/PE7,  CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8,  CH2N/PE10, CH3N/PE12)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM1_ENABLE()  MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM1_REMAP, AFIO_MAPR_TIM1_REMAP_FULLREMAP)
+
+/**
+  * @brief Enable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN)
+  * @note  PARTIAL: Partial remap (ETR/PA12, CH1/PA8, CH2/PA9,  CH3/PA10, CH4/PA11, BKIN/PA6,  CH1N/PA7,  CH2N/PB0,  CH3N/PB1)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM1_PARTIAL() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM1_REMAP, AFIO_MAPR_TIM1_REMAP_PARTIALREMAP)
+
+/**
+  * @brief Disable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN)
+  * @note  DISABLE: No remap      (ETR/PA12, CH1/PA8, CH2/PA9,  CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM1_DISABLE() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM1_REMAP, AFIO_MAPR_TIM1_REMAP_NOREMAP)
+
+/**
+  * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR)
+  * @note  ENABLE: Full remap       (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM2_ENABLE()    MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM2_REMAP, AFIO_MAPR_TIM2_REMAP_FULLREMAP)
+
+/**
+  * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR)
+  * @note  PARTIAL_2: Partial remap (CH1/ETR/PA0,  CH2/PA1, CH3/PB10, CH4/PB11)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM2_PARTIAL_2() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM2_REMAP, AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2)
+
+/**
+  * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR)
+  * @note  PARTIAL_1: Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2,  CH4/PA3)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM2_PARTIAL_1() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM2_REMAP, AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1)
+
+/**
+  * @brief Disable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR)
+  * @note  DISABLE: No remap        (CH1/ETR/PA0,  CH2/PA1, CH3/PA2,  CH4/PA3)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM2_DISABLE()   MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM2_REMAP, AFIO_MAPR_TIM2_REMAP_NOREMAP)
+
+/**
+  * @brief Enable the remapping of TIM3 alternate function channels 1 to 4
+  * @note  ENABLE: Full remap     (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9)
+  * @note  TIM3_ETR on PE0 is not re-mapped.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM3_ENABLE()  MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM3_REMAP, AFIO_MAPR_TIM3_REMAP_FULLREMAP)
+
+/**
+  * @brief Enable the remapping of TIM3 alternate function channels 1 to 4
+  * @note  PARTIAL: Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1)
+  * @note  TIM3_ETR on PE0 is not re-mapped.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM3_PARTIAL() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM3_REMAP, AFIO_MAPR_TIM3_REMAP_PARTIALREMAP)
+
+/**
+  * @brief Disable the remapping of TIM3 alternate function channels 1 to 4
+  * @note  DISABLE: No remap      (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1)
+  * @note  TIM3_ETR on PE0 is not re-mapped.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM3_DISABLE() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_TIM3_REMAP, AFIO_MAPR_TIM3_REMAP_NOREMAP)
+
+/**
+  * @brief Enable the remapping of TIM4 alternate function channels 1 to 4.
+  * @note  ENABLE: Full remap (TIM4_CH1/PD12, TIM4_CH2/PD13, TIM4_CH3/PD14, TIM4_CH4/PD15)
+  * @note  TIM4_ETR on PE0 is not re-mapped.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM4_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM4_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM4 alternate function channels 1 to 4.
+  * @note  DISABLE: No remap  (TIM4_CH1/PB6,  TIM4_CH2/PB7,  TIM4_CH3/PB8,  TIM4_CH4/PB9)
+  * @note  TIM4_ETR on PE0 is not re-mapped.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM4_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_TIM4_REMAP)
+
+#if defined(AFIO_MAPR_CAN_REMAP_REMAP1)
+
+/**
+  * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface.
+  * @note  CASE 1: CAN_RX mapped to PA11, CAN_TX mapped to PA12
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_CAN1_1() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_CAN_REMAP, AFIO_MAPR_CAN_REMAP_REMAP1)
+
+/**
+  * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface.
+  * @note  CASE 2: CAN_RX mapped to PB8,  CAN_TX mapped to PB9 (not available on 36-pin package)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_CAN1_2() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_CAN_REMAP, AFIO_MAPR_CAN_REMAP_REMAP2)
+
+/**
+  * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface.
+  * @note  CASE 3: CAN_RX mapped to PD0,  CAN_TX mapped to PD1
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_CAN1_3() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_CAN_REMAP, AFIO_MAPR_CAN_REMAP_REMAP3)
+#endif
+
+/**
+  * @brief Enable the remapping of PD0 and PD1. When the HSE oscillator is not used 
+  *        (application running on internal 8 MHz RC) PD0 and PD1 can be mapped on OSC_IN and 
+  *        OSC_OUT. This is available only on 36, 48 and 64 pins packages (PD0 and PD1 are available 
+  *        on 100-pin and 144-pin packages, no need for remapping).
+  * @note  ENABLE: PD0 remapped on OSC_IN, PD1 remapped on OSC_OUT.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_PD01_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_PD01_REMAP)
+
+/**
+  * @brief Disable the remapping of PD0 and PD1. When the HSE oscillator is not used 
+  *        (application running on internal 8 MHz RC) PD0 and PD1 can be mapped on OSC_IN and 
+  *        OSC_OUT. This is available only on 36, 48 and 64 pins packages (PD0 and PD1 are available 
+  *        on 100-pin and 144-pin packages, no need for remapping).
+  * @note  DISABLE: No remapping of PD0 and PD1
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_PD01_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_PD01_REMAP)
+
+#if defined(AFIO_MAPR_TIM5CH4_IREMAP)
+/**
+  * @brief Enable the remapping of TIM5CH4.
+  * @note  ENABLE: LSI internal clock is connected to TIM5_CH4 input for calibration purpose.
+  * @note  This function is available only in high density value line devices.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM5CH4_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM5CH4_IREMAP)
+
+/**
+  * @brief Disable the remapping of TIM5CH4.
+  * @note  DISABLE: TIM5_CH4 is connected to PA3
+  * @note  This function is available only in high density value line devices.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM5CH4_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_TIM5CH4_IREMAP)
+#endif
+
+#if defined(AFIO_MAPR_ETH_REMAP)
+/**
+  * @brief Enable the remapping of Ethernet MAC connections with the PHY.
+  * @note  ENABLE: Remap     (RX_DV-CRS_DV/PD8, RXD0/PD9, RXD1/PD10, RXD2/PD11, RXD3/PD12)
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ETH_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_ETH_REMAP)
+
+/**
+  * @brief Disable the remapping of Ethernet MAC connections with the PHY.
+  * @note  DISABLE: No remap (RX_DV-CRS_DV/PA7, RXD0/PC4, RXD1/PC5,  RXD2/PB0,  RXD3/PB1)
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ETH_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_ETH_REMAP)
+#endif
+
+#if defined(AFIO_MAPR_CAN2_REMAP)
+
+/**
+  * @brief Enable the remapping of CAN2 alternate function CAN2_RX and CAN2_TX.
+  * @note  ENABLE: Remap     (CAN2_RX/PB5,  CAN2_TX/PB6)
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_CAN2_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_CAN2_REMAP)
+
+/**
+  * @brief Disable the remapping of CAN2 alternate function CAN2_RX and CAN2_TX.
+  * @note  DISABLE: No remap (CAN2_RX/PB12, CAN2_TX/PB13)
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_CAN2_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_CAN2_REMAP)
+#endif
+
+#if defined(AFIO_MAPR_MII_RMII_SEL)
+/**
+  * @brief Configures the Ethernet MAC internally for use with an external MII or RMII PHY.
+  * @note  ETH_RMII: Configure Ethernet MAC for connection with an RMII PHY
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_ETH_RMII() SET_BIT(AFIO->MAPR, AFIO_MAPR_MII_RMII_SEL)
+
+/**
+  * @brief Configures the Ethernet MAC internally for use with an external MII or RMII PHY.
+  * @note  ETH_MII: Configure Ethernet MAC for connection with an MII PHY
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_ETH_MII()  CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_MII_RMII_SEL)
+#endif
+
+/**
+  * @brief Enable the remapping of ADC1_ETRGINJ (ADC 1 External trigger injected conversion).
+  * @note  ENABLE: ADC1 External Event injected conversion is connected to TIM8 Channel4.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ADC1_ETRGINJ_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGINJ_REMAP)
+
+/**
+  * @brief Disable the remapping of ADC1_ETRGINJ (ADC 1 External trigger injected conversion).
+  * @note  DISABLE: ADC1 External trigger injected conversion is connected to EXTI15
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ADC1_ETRGINJ_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGINJ_REMAP)
+
+/**
+  * @brief Enable the remapping of ADC1_ETRGREG (ADC 1 External trigger regular conversion).
+  * @note  ENABLE: ADC1 External Event regular conversion is connected to TIM8 TRG0.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ADC1_ETRGREG_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGREG_REMAP)
+
+/**
+  * @brief Disable the remapping of ADC1_ETRGREG (ADC 1 External trigger regular conversion).
+  * @note  DISABLE: ADC1 External trigger regular conversion is connected to EXTI11
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ADC1_ETRGREG_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGREG_REMAP)
+
+#if defined(AFIO_MAPR_ADC2_ETRGINJ_REMAP)
+
+/**
+  * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger injected conversion).
+  * @note  ENABLE: ADC2 External Event injected conversion is connected to TIM8 Channel4.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ADC2_ETRGINJ_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGINJ_REMAP)
+
+/**
+  * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger injected conversion).
+  * @note  DISABLE: ADC2 External trigger injected conversion is connected to EXTI15
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ADC2_ETRGINJ_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGINJ_REMAP)
+#endif
+
+#if defined (AFIO_MAPR_ADC2_ETRGREG_REMAP)
+
+/**
+  * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion).
+  * @note  ENABLE: ADC2 External Event regular conversion is connected to TIM8 TRG0.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ADC2_ETRGREG_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGREG_REMAP)
+
+/**
+  * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion).
+  * @note  DISABLE: ADC2 External trigger regular conversion is connected to EXTI11
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_ADC2_ETRGREG_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGREG_REMAP)
+#endif
+
+/**
+  * @brief Enable the Serial wire JTAG configuration
+  * @note  ENABLE: Full SWJ (JTAG-DP + SW-DP): Reset State
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_SWJ_ENABLE()   MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_RESET)
+
+/**
+  * @brief Enable the Serial wire JTAG configuration
+  * @note  NONJTRST: Full SWJ (JTAG-DP + SW-DP) but without NJTRST
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_SWJ_NONJTRST() MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_NOJNTRST)
+
+/**
+  * @brief Enable the Serial wire JTAG configuration
+  * @note  NOJTAG: JTAG-DP Disabled and SW-DP Enabled
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_SWJ_NOJTAG()   MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_JTAGDISABLE)
+
+/**
+  * @brief Disable the Serial wire JTAG configuration
+  * @note  DISABLE: JTAG-DP Disabled and SW-DP Disabled
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_SWJ_DISABLE()  MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_DISABLE)
+
+#if defined(AFIO_MAPR_SPI3_REMAP)
+
+/**
+  * @brief Enable the remapping of SPI3 alternate functions SPI3_NSS/I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD.
+  * @note  ENABLE: Remap     (SPI3_NSS-I2S3_WS/PA4,  SPI3_SCK-I2S3_CK/PC10, SPI3_MISO/PC11, SPI3_MOSI-I2S3_SD/PC12)
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_SPI3_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_SPI3_REMAP)
+
+/**
+  * @brief Disable the remapping of SPI3 alternate functions SPI3_NSS/I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD.
+  * @note  DISABLE: No remap (SPI3_NSS-I2S3_WS/PA15, SPI3_SCK-I2S3_CK/PB3,  SPI3_MISO/PB4,  SPI3_MOSI-I2S3_SD/PB5).
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_SPI3_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_SPI3_REMAP)
+#endif
+
+#if defined(AFIO_MAPR_TIM2ITR1_IREMAP)
+
+/**
+  * @brief Control of TIM2_ITR1 internal mapping.
+  * @note  TO_USB: Connect USB OTG SOF (Start of Frame) output to TIM2_ITR1 for calibration purposes.
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_TIM2ITR1_TO_USB() SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM2ITR1_IREMAP)
+
+/**
+  * @brief Control of TIM2_ITR1 internal mapping.
+  * @note  TO_ETH: Connect TIM2_ITR1 internally to the Ethernet PTP output for calibration purposes.
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_TIM2ITR1_TO_ETH() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_TIM2ITR1_IREMAP)
+#endif
+
+#if defined(AFIO_MAPR_PTP_PPS_REMAP)
+
+/**
+  * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion).
+  * @note  ENABLE: PTP_PPS is output on PB5 pin.
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_ETH_PTP_PPS_ENABLE()  SET_BIT(AFIO->MAPR, AFIO_MAPR_PTP_PPS_REMAP)
+
+/**
+  * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion).
+  * @note  DISABLE: PTP_PPS not output on PB5 pin.
+  * @note  This bit is available only in connectivity line devices and is reserved otherwise.
+  * @retval None
+  */
+#define __HAL_AFIO_ETH_PTP_PPS_DISABLE() CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_PTP_PPS_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM9_REMAP)
+
+/**
+  * @brief Enable the remapping of TIM9_CH1 and TIM9_CH2.
+  * @note  ENABLE: Remap     (TIM9_CH1 on PE5 and TIM9_CH2 on PE6).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM9_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM9_CH1 and TIM9_CH2.
+  * @note  DISABLE: No remap (TIM9_CH1 on PA2 and TIM9_CH2 on PA3).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM9_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM10_REMAP)
+
+/**
+  * @brief Enable the remapping of TIM10_CH1.
+  * @note  ENABLE: Remap     (TIM10_CH1 on PF6).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM10_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM10_CH1.
+  * @note  DISABLE: No remap (TIM10_CH1 on PB8).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM10_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM11_REMAP)
+/**
+  * @brief Enable the remapping of TIM11_CH1.
+  * @note  ENABLE: Remap     (TIM11_CH1 on PF7).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM11_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM11_CH1.
+  * @note  DISABLE: No remap (TIM11_CH1 on PB9).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM11_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM13_REMAP)
+
+/**
+  * @brief Enable the remapping of TIM13_CH1.
+  * @note  ENABLE: Remap     STM32F100:(TIM13_CH1 on PF8). Others:(TIM13_CH1 on PB0).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM13_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM13_CH1.
+  * @note  DISABLE: No remap STM32F100:(TIM13_CH1 on PA6). Others:(TIM13_CH1 on PC8).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM13_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM14_REMAP)
+
+/**
+  * @brief Enable the remapping of TIM14_CH1.
+  * @note  ENABLE: Remap     STM32F100:(TIM14_CH1 on PB1). Others:(TIM14_CH1 on PF9).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM14_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM14_CH1.
+  * @note  DISABLE: No remap STM32F100:(TIM14_CH1 on PC9). Others:(TIM14_CH1 on PA7).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM14_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_FSMC_NADV_REMAP)
+
+/**
+  * @brief Controls the use of the optional FSMC_NADV signal.
+  * @note  DISCONNECTED: The NADV signal is not connected. The I/O pin can be used by another peripheral.
+  * @retval None
+  */
+#define __HAL_AFIO_FSMCNADV_DISCONNECTED() SET_BIT(AFIO->MAPR2, AFIO_MAPR2_FSMC_NADV_REMAP)
+
+/**
+  * @brief Controls the use of the optional FSMC_NADV signal.
+  * @note  CONNECTED: The NADV signal is connected to the output (default).
+  * @retval None
+  */
+#define __HAL_AFIO_FSMCNADV_CONNECTED()    CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_FSMC_NADV_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM15_REMAP)
+
+/**
+  * @brief Enable the remapping of TIM15_CH1 and TIM15_CH2.
+  * @note  ENABLE: Remap     (TIM15_CH1 on PB14 and TIM15_CH2 on PB15).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM15_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM15_CH1 and TIM15_CH2.
+  * @note  DISABLE: No remap (TIM15_CH1 on PA2  and TIM15_CH2 on PA3).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM15_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM16_REMAP)
+
+/**
+  * @brief Enable the remapping of TIM16_CH1.
+  * @note  ENABLE: Remap     (TIM16_CH1 on PA6).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM16_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM16_CH1.
+  * @note  DISABLE: No remap (TIM16_CH1 on PB8).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM16_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM17_REMAP)
+
+/**
+  * @brief Enable the remapping of TIM17_CH1.
+  * @note  ENABLE: Remap     (TIM17_CH1 on PA7).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM17_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM17_CH1.
+  * @note  DISABLE: No remap (TIM17_CH1 on PB9).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM17_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_CEC_REMAP)
+
+/**
+  * @brief Enable the remapping of CEC.
+  * @note  ENABLE: Remap     (CEC on PB10).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_CEC_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP)
+
+/**
+  * @brief Disable the remapping of CEC.
+  * @note  DISABLE: No remap (CEC on PB8).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_CEC_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM1_DMA_REMAP)
+
+/**
+  * @brief Controls the mapping of the TIM1_CH1 TIM1_CH2 DMA requests onto the DMA1 channels.
+  * @note  ENABLE: Remap (TIM1_CH1 DMA request/DMA1 Channel6, TIM1_CH2 DMA request/DMA1 Channel6)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM1DMA_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP)
+
+/**
+  * @brief Controls the mapping of the TIM1_CH1 TIM1_CH2 DMA requests onto the DMA1 channels.
+  * @note  DISABLE: No remap (TIM1_CH1 DMA request/DMA1 Channel2, TIM1_CH2 DMA request/DMA1 Channel3).
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM1DMA_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM67_DAC_DMA_REMAP)
+
+/**
+  * @brief Controls the mapping of the TIM6_DAC1 and TIM7_DAC2 DMA requests onto the DMA1 channels.
+  * @note  ENABLE: Remap (TIM6_DAC1 DMA request/DMA1 Channel3, TIM7_DAC2 DMA request/DMA1 Channel4)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM67DACDMA_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP)
+
+/**
+  * @brief Controls the mapping of the TIM6_DAC1 and TIM7_DAC2 DMA requests onto the DMA1 channels.
+  * @note  DISABLE: No remap (TIM6_DAC1 DMA request/DMA2 Channel3, TIM7_DAC2 DMA request/DMA2 Channel4)
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM67DACDMA_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_TIM12_REMAP)
+
+/**
+  * @brief Enable the remapping of TIM12_CH1 and TIM12_CH2.
+  * @note  ENABLE: Remap     (TIM12_CH1 on PB12 and TIM12_CH2 on PB13).
+  * @note  This bit is available only in high density value line devices.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM12_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP)
+
+/**
+  * @brief Disable the remapping of TIM12_CH1 and TIM12_CH2.
+  * @note  DISABLE: No remap (TIM12_CH1 on PC4  and TIM12_CH2 on PC5).
+  * @note  This bit is available only in high density value line devices.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_TIM12_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP)
+#endif
+
+#if defined(AFIO_MAPR2_MISC_REMAP)
+
+/**
+  * @brief Miscellaneous features remapping.
+  *        This bit is set and cleared by software. It controls miscellaneous features.
+  *        The DMA2 channel 5 interrupt position in the vector table.
+  *        The timer selection for DAC trigger 3 (TSEL[2:0] = 011, for more details refer to the DAC_CR register).
+  * @note  ENABLE: DMA2 channel 5 interrupt is mapped separately at position 60 and TIM15 TRGO event is
+  *        selected as DAC Trigger 3, TIM15 triggers TIM1/3.
+  * @note  This bit is available only in high density value line devices.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_MISC_ENABLE()  SET_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP)
+
+/**
+  * @brief Miscellaneous features remapping.
+  *        This bit is set and cleared by software. It controls miscellaneous features.
+  *        The DMA2 channel 5 interrupt position in the vector table.
+  *        The timer selection for DAC trigger 3 (TSEL[2:0] = 011, for more details refer to the DAC_CR register).
+  * @note  DISABLE: DMA2 channel 5 interrupt is mapped with DMA2 channel 4 at position 59, TIM5 TRGO
+  *        event is selected as DAC Trigger 3, TIM5 triggers TIM1/3.
+  * @note  This bit is available only in high density value line devices.
+  * @retval None
+  */
+#define __HAL_AFIO_REMAP_MISC_DISABLE() CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP)
+#endif
+
+/**
+  * @}
+  */ 
+  
+/**
+  * @}
+  */
+  
+/** @defgroup GPIOEx_Private_Macros GPIOEx Private Macros
+  * @{
+  */
+#if defined(STM32F101x6) || defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)
+#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
+                                   ((__GPIOx__) == (GPIOB))? 1U :\
+                                   ((__GPIOx__) == (GPIOC))? 2U :3U)
+#elif defined(STM32F100xB) || defined(STM32F101xB) || defined(STM32F103xB) || defined(STM32F105xC) || defined(STM32F107xC)
+#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
+                                   ((__GPIOx__) == (GPIOB))? 1U :\
+                                   ((__GPIOx__) == (GPIOC))? 2U :\
+                                   ((__GPIOx__) == (GPIOD))? 3U :4U)
+#elif defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
+                                   ((__GPIOx__) == (GPIOB))? 1U :\
+                                   ((__GPIOx__) == (GPIOC))? 2U :\
+                                   ((__GPIOx__) == (GPIOD))? 3U :\
+                                   ((__GPIOx__) == (GPIOE))? 4U :\
+                                   ((__GPIOx__) == (GPIOF))? 5U :6U)
+#endif
+
+/**
+  * @}
+  */
+
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions --------------------------------------------------------*/
+
+/** @addtogroup GPIOEx_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup GPIOEx_Exported_Functions_Group1
+  * @{
+  */
+void HAL_GPIOEx_ConfigEventout(uint32_t GPIO_PortSource, uint32_t GPIO_PinSource);
+void HAL_GPIOEx_EnableEventout(void);
+void HAL_GPIOEx_DisableEventout(void);
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */ 
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_GPIO_EX_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,406 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_pwr.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of PWR HAL module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_PWR_H
+#define __STM32F1xx_HAL_PWR_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup PWR
+  * @{
+  */
+
+/* Exported types ------------------------------------------------------------*/
+
+/** @defgroup PWR_Exported_Types PWR Exported Types
+  * @{
+  */ 
+
+/**
+  * @brief  PWR PVD configuration structure definition
+  */
+typedef struct
+{
+  uint32_t PVDLevel;   /*!< PVDLevel: Specifies the PVD detection level.
+                            This parameter can be a value of @ref PWR_PVD_detection_level */
+
+  uint32_t Mode;      /*!< Mode: Specifies the operating mode for the selected pins.
+                           This parameter can be a value of @ref PWR_PVD_Mode */
+}PWR_PVDTypeDef;
+
+
+/**
+  * @}
+  */
+
+
+/* Internal constants --------------------------------------------------------*/
+
+/** @addtogroup PWR_Private_Constants
+  * @{
+  */ 
+
+#define PWR_EXTI_LINE_PVD  ((uint32_t)0x00010000)  /*!< External interrupt line 16 Connected to the PVD EXTI Line */
+
+/**
+  * @}
+  */
+
+ 
+/* Exported constants --------------------------------------------------------*/
+
+/** @defgroup PWR_Exported_Constants PWR Exported Constants
+  * @{
+  */ 
+
+/** @defgroup PWR_PVD_detection_level PWR PVD detection level
+  * @{
+  */
+#define PWR_PVDLEVEL_0                  PWR_CR_PLS_2V2
+#define PWR_PVDLEVEL_1                  PWR_CR_PLS_2V3
+#define PWR_PVDLEVEL_2                  PWR_CR_PLS_2V4
+#define PWR_PVDLEVEL_3                  PWR_CR_PLS_2V5
+#define PWR_PVDLEVEL_4                  PWR_CR_PLS_2V6
+#define PWR_PVDLEVEL_5                  PWR_CR_PLS_2V7
+#define PWR_PVDLEVEL_6                  PWR_CR_PLS_2V8
+#define PWR_PVDLEVEL_7                  PWR_CR_PLS_2V9 
+                                                          
+/**
+  * @}
+  */
+
+/** @defgroup PWR_PVD_Mode PWR PVD Mode
+  * @{
+  */
+#define PWR_PVD_MODE_NORMAL                 ((uint32_t)0x00000000)   /*!< basic mode is used */
+#define PWR_PVD_MODE_IT_RISING              ((uint32_t)0x00010001)   /*!< External Interrupt Mode with Rising edge trigger detection */
+#define PWR_PVD_MODE_IT_FALLING             ((uint32_t)0x00010002)   /*!< External Interrupt Mode with Falling edge trigger detection */
+#define PWR_PVD_MODE_IT_RISING_FALLING      ((uint32_t)0x00010003)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection */
+#define PWR_PVD_MODE_EVENT_RISING           ((uint32_t)0x00020001)   /*!< Event Mode with Rising edge trigger detection */
+#define PWR_PVD_MODE_EVENT_FALLING          ((uint32_t)0x00020002)   /*!< Event Mode with Falling edge trigger detection */
+#define PWR_PVD_MODE_EVENT_RISING_FALLING   ((uint32_t)0x00020003)   /*!< Event Mode with Rising/Falling edge trigger detection */
+
+/**
+  * @}
+  */
+
+
+/** @defgroup PWR_WakeUp_Pins PWR WakeUp Pins
+  * @{
+  */
+
+#define PWR_WAKEUP_PIN1                 PWR_CSR_EWUP
+
+/**
+  * @}
+  */
+
+/** @defgroup PWR_Regulator_state_in_SLEEP_STOP_mode PWR Regulator state in SLEEP/STOP mode
+  * @{
+  */
+#define PWR_MAINREGULATOR_ON                        ((uint32_t)0x00000000)
+#define PWR_LOWPOWERREGULATOR_ON                    PWR_CR_LPDS
+
+/**
+  * @}
+  */
+
+/** @defgroup PWR_SLEEP_mode_entry PWR SLEEP mode entry
+  * @{
+  */
+#define PWR_SLEEPENTRY_WFI              ((uint8_t)0x01)
+#define PWR_SLEEPENTRY_WFE              ((uint8_t)0x02)
+
+/**
+  * @}
+  */
+
+/** @defgroup PWR_STOP_mode_entry PWR STOP mode entry
+  * @{
+  */
+#define PWR_STOPENTRY_WFI               ((uint8_t)0x01)
+#define PWR_STOPENTRY_WFE               ((uint8_t)0x02)
+
+/**
+  * @}
+  */
+
+/** @defgroup PWR_Flag PWR Flag
+  * @{
+  */
+#define PWR_FLAG_WU                     PWR_CSR_WUF
+#define PWR_FLAG_SB                     PWR_CSR_SBF
+#define PWR_FLAG_PVDO                   PWR_CSR_PVDO
+
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup PWR_Exported_Macros PWR Exported Macros
+  * @{
+  */
+
+/** @brief  Check PWR flag is set or not.
+  * @param  __FLAG__: specifies the flag to check.
+  *           This parameter can be one of the following values:
+  *            @arg PWR_FLAG_WU: Wake Up flag. This flag indicates that a wakeup event
+  *                  was received from the WKUP pin or from the RTC alarm
+  *                  An additional wakeup event is detected if the WKUP pin is enabled
+  *                  (by setting the EWUP bit) when the WKUP pin level is already high.
+  *            @arg PWR_FLAG_SB: StandBy flag. This flag indicates that the system was
+  *                  resumed from StandBy mode.
+  *            @arg PWR_FLAG_PVDO: PVD Output. This flag is valid only if PVD is enabled
+  *                  by the HAL_PWR_EnablePVD() function. The PVD is stopped by Standby mode
+  *                  For this reason, this bit is equal to 0 after Standby or reset
+  *                  until the PVDE bit is set.
+  * @retval The new state of __FLAG__ (TRUE or FALSE).
+  */
+#define __HAL_PWR_GET_FLAG(__FLAG__) ((PWR->CSR & (__FLAG__)) == (__FLAG__))
+
+/** @brief  Clear the PWR's pending flags.
+  * @param  __FLAG__: specifies the flag to clear.
+  *          This parameter can be one of the following values:
+  *            @arg PWR_FLAG_WU: Wake Up flag
+  *            @arg PWR_FLAG_SB: StandBy flag
+  */
+#define __HAL_PWR_CLEAR_FLAG(__FLAG__) SET_BIT(PWR->CR, ((__FLAG__) << 2))
+
+/**
+  * @brief Enable interrupt on PVD Exti Line 16.
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_ENABLE_IT()      SET_BIT(EXTI->IMR, PWR_EXTI_LINE_PVD)
+
+/**
+  * @brief Disable interrupt on PVD Exti Line 16. 
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_DISABLE_IT()     CLEAR_BIT(EXTI->IMR, PWR_EXTI_LINE_PVD)
+
+/**
+  * @brief Enable event on PVD Exti Line 16.
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_ENABLE_EVENT()   SET_BIT(EXTI->EMR, PWR_EXTI_LINE_PVD)
+
+/**
+  * @brief Disable event on PVD Exti Line 16.
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_DISABLE_EVENT()  CLEAR_BIT(EXTI->EMR, PWR_EXTI_LINE_PVD)
+
+
+/**
+  * @brief  PVD EXTI line configuration: set falling edge trigger.  
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE()  SET_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD)
+
+
+/**
+  * @brief Disable the PVD Extended Interrupt Falling Trigger.
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD)
+
+
+/**
+  * @brief  PVD EXTI line configuration: set rising edge trigger.
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE()   SET_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD)
+
+/**
+  * @brief Disable the PVD Extended Interrupt Rising Trigger.
+  * This parameter can be:
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD)
+
+/**
+  * @brief  PVD EXTI line configuration: set rising & falling edge trigger.
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE()   __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE();
+
+/**
+  * @brief Disable the PVD Extended Interrupt Rising & Falling Trigger.
+  * This parameter can be:
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE()  __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE();
+
+
+
+/**
+  * @brief Check whether the specified PVD EXTI interrupt flag is set or not.
+  * @retval EXTI PVD Line Status.
+  */
+#define __HAL_PWR_PVD_EXTI_GET_FLAG()       (EXTI->PR & (PWR_EXTI_LINE_PVD))
+
+/**
+  * @brief Clear the PVD EXTI flag.
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_CLEAR_FLAG()     (EXTI->PR = (PWR_EXTI_LINE_PVD))
+
+/**
+  * @brief Generate a Software interrupt on selected EXTI line.
+  * @retval None.
+  */
+#define __HAL_PWR_PVD_EXTI_GENERATE_SWIT()  SET_BIT(EXTI->SWIER, PWR_EXTI_LINE_PVD)
+/**
+  * @}
+  */
+
+/* Private macro -------------------------------------------------------------*/
+/** @defgroup PWR_Private_Macros PWR Private Macros
+  * @{
+  */
+#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLEVEL_0) || ((LEVEL) == PWR_PVDLEVEL_1)|| \
+                                 ((LEVEL) == PWR_PVDLEVEL_2) || ((LEVEL) == PWR_PVDLEVEL_3)|| \
+                                 ((LEVEL) == PWR_PVDLEVEL_4) || ((LEVEL) == PWR_PVDLEVEL_5)|| \
+                                 ((LEVEL) == PWR_PVDLEVEL_6) || ((LEVEL) == PWR_PVDLEVEL_7))
+
+
+#define IS_PWR_PVD_MODE(MODE) (((MODE) == PWR_PVD_MODE_IT_RISING)|| ((MODE) == PWR_PVD_MODE_IT_FALLING) || \
+                              ((MODE) == PWR_PVD_MODE_IT_RISING_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING) || \
+                              ((MODE) == PWR_PVD_MODE_EVENT_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING_FALLING) || \
+                              ((MODE) == PWR_PVD_MODE_NORMAL)) 
+
+#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1))
+
+#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON) || \
+                                     ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON))
+
+#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || ((ENTRY) == PWR_SLEEPENTRY_WFE))
+
+#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || ((ENTRY) == PWR_STOPENTRY_WFE))
+
+/**
+  * @}
+  */
+
+
+
+/* Exported functions --------------------------------------------------------*/
+
+/** @addtogroup PWR_Exported_Functions PWR Exported Functions
+  * @{
+  */
+  
+/** @addtogroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions 
+  * @{
+  */
+
+/* Initialization and de-initialization functions *******************************/
+void HAL_PWR_DeInit(void);
+void HAL_PWR_EnableBkUpAccess(void);
+void HAL_PWR_DisableBkUpAccess(void);
+
+/**
+  * @}
+  */
+
+/** @addtogroup PWR_Exported_Functions_Group2 Peripheral Control functions 
+  * @{
+  */
+
+/* Peripheral Control functions  ************************************************/
+void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD);
+/* #define HAL_PWR_ConfigPVD 12*/
+void HAL_PWR_EnablePVD(void);
+void HAL_PWR_DisablePVD(void);
+
+/* WakeUp pins configuration functions ****************************************/
+void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinx);
+void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx);
+
+/* Low Power modes configuration functions ************************************/
+void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry);
+void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry);
+void HAL_PWR_EnterSTANDBYMode(void);
+
+void HAL_PWR_EnableSleepOnExit(void);
+void HAL_PWR_DisableSleepOnExit(void);
+void HAL_PWR_EnableSEVOnPend(void);
+void HAL_PWR_DisableSEVOnPend(void);
+
+
+
+void HAL_PWR_PVD_IRQHandler(void);
+void HAL_PWR_PVDCallback(void);
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __STM32F1xx_HAL_PWR_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1395 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_rcc.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of RCC HAL module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_RCC_H
+#define __STM32F1xx_HAL_RCC_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup RCC
+  * @{
+  */
+
+/** @addtogroup RCC_Private_Constants
+  * @{
+  */
+
+/** @defgroup RCC_Timeout RCC Timeout
+  * @{
+  */ 
+  
+/* Disable Backup domain write protection state change timeout */
+#define RCC_DBP_TIMEOUT_VALUE  ((uint32_t)100)       /* 100 ms */
+/* LSE state change timeout */
+#define RCC_LSE_TIMEOUT_VALUE      LSE_STARTUP_TIMEOUT
+#define CLOCKSWITCH_TIMEOUT_VALUE  ((uint32_t)5000)  /* 5 s    */
+#define HSE_TIMEOUT_VALUE          HSE_STARTUP_TIMEOUT
+#define HSI_TIMEOUT_VALUE         ((uint32_t)2)      /* 2 ms (minimum Tick + 1) */
+#define LSI_TIMEOUT_VALUE         ((uint32_t)2)      /* 2 ms (minimum Tick + 1) */
+#define PLL_TIMEOUT_VALUE         ((uint32_t)2)      /* 2 ms (minimum Tick + 1) */
+#define LSI_VALUE                 ((uint32_t)40000)  /* 40kHz */
+/**
+  * @}
+  */
+  
+/** @defgroup RCC_Register_Offset Register offsets
+  * @{
+  */
+#define RCC_OFFSET                (RCC_BASE - PERIPH_BASE)
+#define RCC_CR_OFFSET             0x00
+#define RCC_CFGR_OFFSET           0x04
+#define RCC_CIR_OFFSET            0x08
+#define RCC_BDCR_OFFSET           0x20
+#define RCC_CSR_OFFSET            0x24
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_BitAddress_AliasRegion BitAddress AliasRegion
+  * @brief RCC registers bit address in the alias region
+  * @{
+  */
+#define RCC_CR_OFFSET_BB          (RCC_OFFSET + RCC_CR_OFFSET)
+#define RCC_CFGR_OFFSET_BB        (RCC_OFFSET + RCC_CFGR_OFFSET)
+#define RCC_CIR_OFFSET_BB         (RCC_OFFSET + RCC_CIR_OFFSET)
+#define RCC_BDCR_OFFSET_BB        (RCC_OFFSET + RCC_BDCR_OFFSET)
+#define RCC_CSR_OFFSET_BB         (RCC_OFFSET + RCC_CSR_OFFSET)
+
+/* --- CR Register ---*/
+/* Alias word address of HSION bit */
+#define RCC_HSION_BIT_NUMBER      POSITION_VAL(RCC_CR_HSION)
+#define RCC_CR_HSION_BB           ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32) + (RCC_HSION_BIT_NUMBER * 4)))
+/* Alias word address of HSEON bit */
+#define RCC_HSEON_BIT_NUMBER      POSITION_VAL(RCC_CR_HSEON)
+#define RCC_CR_HSEON_BB           ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32) + (RCC_HSEON_BIT_NUMBER * 4)))
+/* Alias word address of CSSON bit */
+#define RCC_CSSON_BIT_NUMBER      POSITION_VAL(RCC_CR_CSSON)
+#define RCC_CR_CSSON_BB           ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32) + (RCC_CSSON_BIT_NUMBER * 4)))
+/* Alias word address of PLLON bit */
+#define RCC_PLLON_BIT_NUMBER      POSITION_VAL(RCC_CR_PLLON)
+#define RCC_CR_PLLON_BB           ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32) + (RCC_PLLON_BIT_NUMBER * 4)))
+
+/* --- CSR Register ---*/
+/* Alias word address of LSION bit */
+#define RCC_LSION_BIT_NUMBER      POSITION_VAL(RCC_CSR_LSION)
+#define RCC_CSR_LSION_BB          ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32) + (RCC_LSION_BIT_NUMBER * 4)))
+
+/* Alias word address of RMVF bit */
+#define RCC_RMVF_BIT_NUMBER       POSITION_VAL(RCC_CSR_RMVF)
+#define RCC_CSR_RMVF_BB           ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32) + (RCC_RMVF_BIT_NUMBER * 4)))
+
+/* --- BDCR Registers ---*/
+/* Alias word address of LSEON bit */
+#define RCC_LSEON_BIT_NUMBER      POSITION_VAL(RCC_BDCR_LSEON)
+#define RCC_BDCR_LSEON_BB          ((uint32_t)(PERIPH_BB_BASE + (RCC_BDCR_OFFSET_BB * 32) + (RCC_LSEON_BIT_NUMBER * 4)))
+
+/* Alias word address of LSEON bit */
+#define RCC_LSEBYP_BIT_NUMBER     POSITION_VAL(RCC_BDCR_LSEBYP)
+#define RCC_BDCR_LSEBYP_BB         ((uint32_t)(PERIPH_BB_BASE + (RCC_BDCR_OFFSET_BB * 32) + (RCC_LSEBYP_BIT_NUMBER * 4)))
+
+/* Alias word address of RTCEN bit */
+#define RCC_RTCEN_BIT_NUMBER      POSITION_VAL(RCC_BDCR_RTCEN)
+#define RCC_BDCR_RTCEN_BB          ((uint32_t)(PERIPH_BB_BASE + (RCC_BDCR_OFFSET_BB * 32) + (RCC_RTCEN_BIT_NUMBER * 4)))
+
+/* Alias word address of BDRST bit */
+#define RCC_BDRST_BIT_NUMBER          POSITION_VAL(RCC_BDCR_BDRST)
+#define RCC_BDCR_BDRST_BB         ((uint32_t)(PERIPH_BB_BASE + (RCC_BDCR_OFFSET_BB * 32) + (RCC_BDRST_BIT_NUMBER * 4)))
+
+/**
+  * @}
+  */
+  
+/* CR register byte 2 (Bits[23:16]) base address */
+#define RCC_CR_BYTE2_ADDRESS          ((uint32_t)(RCC_BASE + RCC_CR_OFFSET + 0x02))
+
+/* CIR register byte 1 (Bits[15:8]) base address */
+#define RCC_CIR_BYTE1_ADDRESS     ((uint32_t)(RCC_BASE + RCC_CIR_OFFSET + 0x01))
+
+/* CIR register byte 2 (Bits[23:16]) base address */
+#define RCC_CIR_BYTE2_ADDRESS     ((uint32_t)(RCC_BASE + RCC_CIR_OFFSET + 0x02))
+
+/* Defines used for Flags */
+#define CR_REG_INDEX                     ((uint8_t)1)
+#define BDCR_REG_INDEX                   ((uint8_t)2)
+#define CSR_REG_INDEX                    ((uint8_t)3)
+
+#define RCC_FLAG_MASK                    ((uint8_t)0x1F)
+
+/**
+  * @}
+  */
+
+/** @addtogroup RCC_Private_Macros
+  * @{
+  */
+/** @defgroup RCC_Alias_For_Legacy Alias define maintained for legacy
+  * @{
+  */
+#define __HAL_RCC_SYSCFG_CLK_DISABLE    __HAL_RCC_AFIO_CLK_DISABLE
+#define __HAL_RCC_SYSCFG_CLK_ENABLE     __HAL_RCC_AFIO_CLK_ENABLE
+#define __HAL_RCC_SYSCFG_FORCE_RESET    __HAL_RCC_AFIO_FORCE_RESET
+#define __HAL_RCC_SYSCFG_RELEASE_RESET  __HAL_RCC_AFIO_RELEASE_RESET
+/**
+  * @}
+  */
+
+#define IS_RCC_PLLSOURCE(__SOURCE__) (((__SOURCE__) == RCC_PLLSOURCE_HSI_DIV2) || \
+                                      ((__SOURCE__) == RCC_PLLSOURCE_HSE))
+#define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE)                           || \
+                                               (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \
+                                               (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \
+                                               (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \
+                                               (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE))
+#define IS_RCC_HSE(__HSE__) (((__HSE__) == RCC_HSE_OFF) || ((__HSE__) == RCC_HSE_ON) || \
+                             ((__HSE__) == RCC_HSE_BYPASS))
+#define IS_RCC_LSE(__LSE__) (((__LSE__) == RCC_LSE_OFF) || ((__LSE__) == RCC_LSE_ON) || \
+                             ((__LSE__) == RCC_LSE_BYPASS))
+#define IS_RCC_HSI(__HSI__) (((__HSI__) == RCC_HSI_OFF) || ((__HSI__) == RCC_HSI_ON))
+#define IS_RCC_CALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= 0x1F)
+#define IS_RCC_LSI(__LSI__) (((__LSI__) == RCC_LSI_OFF) || ((__LSI__) == RCC_LSI_ON))
+#define IS_RCC_PLL(__PLL__) (((__PLL__) == RCC_PLL_NONE) || ((__PLL__) == RCC_PLL_OFF) || \
+                             ((__PLL__) == RCC_PLL_ON))
+
+#define IS_RCC_CLOCKTYPE(CLK) ((((CLK) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) || \
+                               (((CLK) & RCC_CLOCKTYPE_HCLK)   == RCC_CLOCKTYPE_HCLK)   || \
+                               (((CLK) & RCC_CLOCKTYPE_PCLK1)  == RCC_CLOCKTYPE_PCLK1)  || \
+                               (((CLK) & RCC_CLOCKTYPE_PCLK2)  == RCC_CLOCKTYPE_PCLK2))
+#define IS_RCC_SYSCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_SYSCLKSOURCE_HSI) || \
+                                         ((__SOURCE__) == RCC_SYSCLKSOURCE_HSE) || \
+                                         ((__SOURCE__) == RCC_SYSCLKSOURCE_PLLCLK))
+#define IS_RCC_SYSCLKSOURCE_STATUS(__SOURCE__) (((__SOURCE__) == RCC_SYSCLKSOURCE_STATUS_HSI) || \
+                                                ((__SOURCE__) == RCC_SYSCLKSOURCE_STATUS_HSE) || \
+                                                ((__SOURCE__) == RCC_SYSCLKSOURCE_STATUS_PLLCLK))
+#define IS_RCC_HCLK(__HCLK__) (((__HCLK__) == RCC_SYSCLK_DIV1) || ((__HCLK__) == RCC_SYSCLK_DIV2) || \
+                               ((__HCLK__) == RCC_SYSCLK_DIV4) || ((__HCLK__) == RCC_SYSCLK_DIV8) || \
+                               ((__HCLK__) == RCC_SYSCLK_DIV16) || ((__HCLK__) == RCC_SYSCLK_DIV64) || \
+                               ((__HCLK__) == RCC_SYSCLK_DIV128) || ((__HCLK__) == RCC_SYSCLK_DIV256) || \
+                               ((__HCLK__) == RCC_SYSCLK_DIV512))
+#define IS_RCC_PCLK(__PCLK__) (((__PCLK__) == RCC_HCLK_DIV1) || ((__PCLK__) == RCC_HCLK_DIV2) || \
+                               ((__PCLK__) == RCC_HCLK_DIV4) || ((__PCLK__) == RCC_HCLK_DIV8) || \
+                               ((__PCLK__) == RCC_HCLK_DIV16))
+#define IS_RCC_MCO(__MCO__)  ((__MCO__) == RCC_MCO)
+#define IS_RCC_MCODIV(__DIV__) (((__DIV__) == RCC_MCODIV_1)) 
+#define IS_RCC_RTCCLKSOURCE(__SOURCE__)  (((__SOURCE__) == RCC_RTCCLKSOURCE_NO_CLK) || \
+                                          ((__SOURCE__) == RCC_RTCCLKSOURCE_LSE)  || \
+                                          ((__SOURCE__) == RCC_RTCCLKSOURCE_LSI)  || \
+                                          ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV128))
+
+/**
+  * @}
+  */
+
+/* Exported types ------------------------------------------------------------*/
+
+/** @defgroup RCC_Exported_Types RCC Exported Types
+  * @{
+  */
+
+/** 
+  * @brief  RCC PLL configuration structure definition  
+  */
+typedef struct
+{
+  uint32_t PLLState;      /*!< PLLState: The new state of the PLL.
+                              This parameter can be a value of @ref RCC_PLL_Config */
+
+  uint32_t PLLSource;     /*!< PLLSource: PLL entry clock source.
+                              This parameter must be a value of @ref RCC_PLL_Clock_Source */          
+
+  uint32_t PLLMUL;        /*!< PLLMUL: Multiplication factor for PLL VCO input clock
+                              This parameter must be a value of @ref RCCEx_PLL_Multiplication_Factor */
+} RCC_PLLInitTypeDef;
+   
+/**
+  * @brief  RCC System, AHB and APB busses clock configuration structure definition  
+  */
+typedef struct
+{
+  uint32_t ClockType;             /*!< The clock to be configured.
+                                       This parameter can be a value of @ref RCC_System_Clock_Type */
+
+  uint32_t SYSCLKSource;          /*!< The clock source (SYSCLKS) used as system clock.
+                                       This parameter can be a value of @ref RCC_System_Clock_Source */
+
+  uint32_t AHBCLKDivider;         /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK).
+                                       This parameter can be a value of @ref RCC_AHB_Clock_Source */
+
+  uint32_t APB1CLKDivider;        /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK).
+                                       This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */
+
+  uint32_t APB2CLKDivider;        /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK).
+                                       This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */
+} RCC_ClkInitTypeDef;
+
+/**
+  * @}
+  */
+
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup RCC_Exported_Constants RCC Exported Constants
+  * @{
+  */
+
+/** @defgroup RCC_PLL_Clock_Source PLL Clock Source
+  * @{
+  */
+
+#define RCC_PLLSOURCE_HSI_DIV2      ((uint32_t)0x00000000)     /*!< HSI clock divided by 2 selected as PLL entry clock source */
+#define RCC_PLLSOURCE_HSE           RCC_CFGR_PLLSRC            /*!< HSE clock selected as PLL entry clock source */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_Oscillator_Type Oscillator Type
+  * @{
+  */
+#define RCC_OSCILLATORTYPE_NONE            ((uint32_t)0x00000000)
+#define RCC_OSCILLATORTYPE_HSE             ((uint32_t)0x00000001)
+#define RCC_OSCILLATORTYPE_HSI             ((uint32_t)0x00000002)
+#define RCC_OSCILLATORTYPE_LSE             ((uint32_t)0x00000004)
+#define RCC_OSCILLATORTYPE_LSI             ((uint32_t)0x00000008)
+/**
+  * @}
+  */
+
+/** @defgroup RCC_HSE_Config HSE Config
+  * @{
+  */
+#define RCC_HSE_OFF                      ((uint32_t)0x00000000)                     /*!< HSE clock deactivation */
+#define RCC_HSE_ON                       RCC_CR_HSEON                               /*!< HSE clock activation */
+#define RCC_HSE_BYPASS                   ((uint32_t)(RCC_CR_HSEBYP | RCC_CR_HSEON)) /*!< External clock source for HSE clock */
+/**
+  * @}
+  */
+
+/** @defgroup RCC_LSE_Config LSE Config
+  * @{
+  */
+#define RCC_LSE_OFF                      ((uint32_t)0x00000000)                       /*!< LSE clock deactivation */
+#define RCC_LSE_ON                       RCC_BDCR_LSEON                                /*!< LSE clock activation */
+#define RCC_LSE_BYPASS                   ((uint32_t)(RCC_BDCR_LSEBYP | RCC_BDCR_LSEON)) /*!< External clock source for LSE clock */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_HSI_Config HSI Config
+  * @{
+  */
+#define RCC_HSI_OFF                      ((uint32_t)0x00000000)           /*!< HSI clock deactivation */
+#define RCC_HSI_ON                       RCC_CR_HSION                     /*!< HSI clock activation */
+
+#define RCC_HSICALIBRATION_DEFAULT       ((uint32_t)0x10)         /* Default HSI calibration trimming value */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_LSI_Config LSI Config
+  * @{
+  */
+#define RCC_LSI_OFF                      ((uint32_t)0x00000000)   /*!< LSI clock deactivation */
+#define RCC_LSI_ON                       RCC_CSR_LSION            /*!< LSI clock activation */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_PLL_Config PLL Config
+  * @{
+  */
+#define RCC_PLL_NONE                      ((uint32_t)0x00000000)  /*!< PLL is not configured */
+#define RCC_PLL_OFF                       ((uint32_t)0x00000001)  /*!< PLL deactivation */
+#define RCC_PLL_ON                        ((uint32_t)0x00000002)  /*!< PLL activation */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_System_Clock_Type System Clock Type
+  * @{
+  */
+#define RCC_CLOCKTYPE_SYSCLK             ((uint32_t)0x00000001) /*!< SYSCLK to configure */
+#define RCC_CLOCKTYPE_HCLK               ((uint32_t)0x00000002) /*!< HCLK to configure */
+#define RCC_CLOCKTYPE_PCLK1              ((uint32_t)0x00000004) /*!< PCLK1 to configure */
+#define RCC_CLOCKTYPE_PCLK2              ((uint32_t)0x00000008) /*!< PCLK2 to configure */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_System_Clock_Source System Clock Source
+  * @{
+  */
+#define RCC_SYSCLKSOURCE_HSI             RCC_CFGR_SW_HSI /*!< HSI selected as system clock */
+#define RCC_SYSCLKSOURCE_HSE             RCC_CFGR_SW_HSE /*!< HSE selected as system clock */
+#define RCC_SYSCLKSOURCE_PLLCLK          RCC_CFGR_SW_PLL /*!< PLL selected as system clock */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_System_Clock_Source_Status System Clock Source Status
+  * @{
+  */
+#define RCC_SYSCLKSOURCE_STATUS_HSI      RCC_CFGR_SWS_HSI            /*!< HSI used as system clock */
+#define RCC_SYSCLKSOURCE_STATUS_HSE      RCC_CFGR_SWS_HSE            /*!< HSE used as system clock */
+#define RCC_SYSCLKSOURCE_STATUS_PLLCLK   RCC_CFGR_SWS_PLL            /*!< PLL used as system clock */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_AHB_Clock_Source AHB Clock Source
+  * @{
+  */
+#define RCC_SYSCLK_DIV1                  RCC_CFGR_HPRE_DIV1   /*!< SYSCLK not divided */
+#define RCC_SYSCLK_DIV2                  RCC_CFGR_HPRE_DIV2   /*!< SYSCLK divided by 2 */
+#define RCC_SYSCLK_DIV4                  RCC_CFGR_HPRE_DIV4   /*!< SYSCLK divided by 4 */
+#define RCC_SYSCLK_DIV8                  RCC_CFGR_HPRE_DIV8   /*!< SYSCLK divided by 8 */
+#define RCC_SYSCLK_DIV16                 RCC_CFGR_HPRE_DIV16  /*!< SYSCLK divided by 16 */
+#define RCC_SYSCLK_DIV64                 RCC_CFGR_HPRE_DIV64  /*!< SYSCLK divided by 64 */
+#define RCC_SYSCLK_DIV128                RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */
+#define RCC_SYSCLK_DIV256                RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */
+#define RCC_SYSCLK_DIV512                RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */
+
+/**
+  * @}
+  */
+  
+/** @defgroup RCC_APB1_APB2_Clock_Source APB1 APB2 Clock Source
+  * @{
+  */
+#define RCC_HCLK_DIV1                    RCC_CFGR_PPRE1_DIV1  /*!< HCLK not divided */
+#define RCC_HCLK_DIV2                    RCC_CFGR_PPRE1_DIV2  /*!< HCLK divided by 2 */
+#define RCC_HCLK_DIV4                    RCC_CFGR_PPRE1_DIV4  /*!< HCLK divided by 4 */
+#define RCC_HCLK_DIV8                    RCC_CFGR_PPRE1_DIV8  /*!< HCLK divided by 8 */
+#define RCC_HCLK_DIV16                   RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_RTC_Clock_Source RTC Clock Source
+  * @{
+  */
+#define RCC_RTCCLKSOURCE_NO_CLK          ((uint32_t)0x00000000)                 /*!< No clock */
+#define RCC_RTCCLKSOURCE_LSE             RCC_BDCR_RTCSEL_LSE                  /*!< LSE oscillator clock used as RTC clock */
+#define RCC_RTCCLKSOURCE_LSI             RCC_BDCR_RTCSEL_LSI                  /*!< LSI oscillator clock used as RTC clock */
+#define RCC_RTCCLKSOURCE_HSE_DIV128      RCC_BDCR_RTCSEL_HSE                    /*!< HSE oscillator clock divided by 128 used as RTC clock */
+/**
+  * @}
+  */
+
+
+/** @defgroup RCC_MCO_Index MCO Index
+  * @{
+  */
+#define RCC_MCO1                         ((uint32_t)0x00000000)
+#define RCC_MCO                          RCC_MCO1               /*!< MCO1 to be compliant with other families with 2 MCOs*/
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_MCOx_Clock_Prescaler MCO Clock Prescaler
+  * @{
+  */
+#define RCC_MCODIV_1                    ((uint32_t)0x00000000)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_Interrupt Interrupts
+  * @{
+  */
+#define RCC_IT_LSIRDY                    ((uint8_t)RCC_CIR_LSIRDYF)   /*!< LSI Ready Interrupt flag */
+#define RCC_IT_LSERDY                    ((uint8_t)RCC_CIR_LSERDYF)   /*!< LSE Ready Interrupt flag */
+#define RCC_IT_HSIRDY                    ((uint8_t)RCC_CIR_HSIRDYF)   /*!< HSI Ready Interrupt flag */
+#define RCC_IT_HSERDY                    ((uint8_t)RCC_CIR_HSERDYF)   /*!< HSE Ready Interrupt flag */
+#define RCC_IT_PLLRDY                    ((uint8_t)RCC_CIR_PLLRDYF)   /*!< PLL Ready Interrupt flag */
+#define RCC_IT_CSS                       ((uint8_t)RCC_CIR_CSSF)      /*!< Clock Security System Interrupt flag */
+/**
+  * @}
+  */ 
+  
+/** @defgroup RCC_Flag Flags
+  *        Elements values convention: XXXYYYYYb
+  *           - YYYYY  : Flag position in the register
+  *           - XXX  : Register index
+  *                 - 001: CR register
+  *                 - 010: BDCR register
+  *                 - 011: CSR register
+  * @{
+  */
+/* Flags in the CR register */
+#define RCC_FLAG_HSIRDY                  ((uint8_t)((CR_REG_INDEX << 5) | POSITION_VAL(RCC_CR_HSIRDY))) /*!< Internal High Speed clock ready flag */
+#define RCC_FLAG_HSERDY                  ((uint8_t)((CR_REG_INDEX << 5) | POSITION_VAL(RCC_CR_HSERDY))) /*!< External High Speed clock ready flag */
+#define RCC_FLAG_PLLRDY                  ((uint8_t)((CR_REG_INDEX << 5) | POSITION_VAL(RCC_CR_PLLRDY))) /*!< PLL clock ready flag */
+
+/* Flags in the CSR register */
+#define RCC_FLAG_LSIRDY                  ((uint8_t)((CSR_REG_INDEX << 5) | POSITION_VAL(RCC_CSR_LSIRDY)))   /*!< Internal Low Speed oscillator Ready */
+#define RCC_FLAG_PINRST                  ((uint8_t)((CSR_REG_INDEX << 5) | POSITION_VAL(RCC_CSR_PINRSTF)))  /*!< PIN reset flag */
+#define RCC_FLAG_PORRST                  ((uint8_t)((CSR_REG_INDEX << 5) | POSITION_VAL(RCC_CSR_PORRSTF)))  /*!< POR/PDR reset flag */
+#define RCC_FLAG_SFTRST                  ((uint8_t)((CSR_REG_INDEX << 5) | POSITION_VAL(RCC_CSR_SFTRSTF)))  /*!< Software Reset flag */
+#define RCC_FLAG_IWDGRST                 ((uint8_t)((CSR_REG_INDEX << 5) | POSITION_VAL(RCC_CSR_IWDGRSTF))) /*!< Independent Watchdog reset flag */
+#define RCC_FLAG_WWDGRST                 ((uint8_t)((CSR_REG_INDEX << 5) | POSITION_VAL(RCC_CSR_WWDGRSTF))) /*!< Window watchdog reset flag */
+#define RCC_FLAG_LPWRRST                 ((uint8_t)((CSR_REG_INDEX << 5) | POSITION_VAL(RCC_CSR_LPWRRSTF))) /*!< Low-Power reset flag */
+
+/* Flags in the BDCR register */
+#define RCC_FLAG_LSERDY                  ((uint8_t)((BDCR_REG_INDEX << 5) | POSITION_VAL(RCC_BDCR_LSERDY))) /*!< External Low Speed oscillator Ready */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Exported macro ------------------------------------------------------------*/
+
+/** @defgroup RCC_Exported_Macros RCC Exported Macros
+  * @{
+  */
+
+/** @defgroup RCC_Peripheral_Clock_Enable_Disable Peripheral Clock Enable Disable
+  * @brief  Enable or disable the AHB1 peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before 
+  *         using it.   
+  * @{
+  */
+#define __HAL_RCC_DMA1_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_SRAM_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_SRAMEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_SRAMEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_FLITF_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_FLITFEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FLITFEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_CRC_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_DMA1_CLK_DISABLE()      (RCC->AHBENR &= ~(RCC_AHBENR_DMA1EN))
+#define __HAL_RCC_SRAM_CLK_DISABLE()      (RCC->AHBENR &= ~(RCC_AHBENR_SRAMEN))
+#define __HAL_RCC_FLITF_CLK_DISABLE()     (RCC->AHBENR &= ~(RCC_AHBENR_FLITFEN))
+#define __HAL_RCC_CRC_CLK_DISABLE()       (RCC->AHBENR &= ~(RCC_AHBENR_CRCEN))
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_AHB_Peripheral_Clock_Enable_Disable_Status AHB Peripheral Clock Enable Disable Status
+  * @brief  Get the enable or disable status of the AHB peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before
+  *         using it.
+  * @{
+  */
+
+#define __HAL_RCC_DMA1_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_DMA1EN)) != RESET)
+#define __HAL_RCC_DMA1_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_DMA1EN)) == RESET)
+#define __HAL_RCC_SRAM_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_SRAMEN)) != RESET)
+#define __HAL_RCC_SRAM_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_SRAMEN)) == RESET)
+#define __HAL_RCC_FLITF_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_FLITFEN)) != RESET)
+#define __HAL_RCC_FLITF_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_FLITFEN)) == RESET)
+#define __HAL_RCC_CRC_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_CRCEN)) != RESET)
+#define __HAL_RCC_CRC_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_CRCEN)) == RESET)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Clock Enable Disable
+  * @brief  Enable or disable the Low Speed APB (APB1) peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before 
+  *         using it. 
+  * @{   
+  */
+#define __HAL_RCC_TIM2_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM3_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_WWDG_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_USART2_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_I2C1_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_BKP_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_BKPEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_BKPEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_PWR_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM2_CLK_DISABLE()      (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM2EN))
+#define __HAL_RCC_TIM3_CLK_DISABLE()      (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM3EN))
+#define __HAL_RCC_WWDG_CLK_DISABLE()      (RCC->APB1ENR &= ~(RCC_APB1ENR_WWDGEN))
+#define __HAL_RCC_USART2_CLK_DISABLE()    (RCC->APB1ENR &= ~(RCC_APB1ENR_USART2EN))
+#define __HAL_RCC_I2C1_CLK_DISABLE()      (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C1EN))
+
+#define __HAL_RCC_BKP_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_BKPEN))
+#define __HAL_RCC_PWR_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_PWREN))
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_APB1_Peripheral_Clock_Enable_Disable_Status APB1 Peripheral Clock Enable Disable Status
+  * @brief  Get the enable or disable status of the APB1 peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before
+  *         using it.
+  * @{
+  */
+
+#define __HAL_RCC_TIM2_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM2EN)) != RESET)
+#define __HAL_RCC_TIM2_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM2EN)) == RESET)
+#define __HAL_RCC_TIM3_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM3EN)) != RESET)
+#define __HAL_RCC_TIM3_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM3EN)) == RESET)
+#define __HAL_RCC_WWDG_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_WWDGEN)) != RESET)
+#define __HAL_RCC_WWDG_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_WWDGEN)) == RESET)
+#define __HAL_RCC_USART2_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_USART2EN)) != RESET)
+#define __HAL_RCC_USART2_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_USART2EN)) == RESET)
+#define __HAL_RCC_I2C1_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_I2C1EN)) != RESET)
+#define __HAL_RCC_I2C1_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_I2C1EN)) == RESET)
+#define __HAL_RCC_BKP_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_BKPEN)) != RESET)
+#define __HAL_RCC_BKP_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_BKPEN)) == RESET)
+#define __HAL_RCC_PWR_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_PWREN)) != RESET)
+#define __HAL_RCC_PWR_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_PWREN)) == RESET)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Clock Enable Disable
+  * @brief  Enable or disable the High Speed APB (APB2) peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before 
+  *         using it.
+  * @{   
+  */
+#define __HAL_RCC_AFIO_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_AFIOEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_AFIOEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOA_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPAEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPAEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOB_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPBEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPBEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOC_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPCEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPCEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOD_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_ADC1_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM1_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_SPI1_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_USART1_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\
+                                        /* Delay after an RCC peripheral clock enabling */\
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_AFIO_CLK_DISABLE()      (RCC->APB2ENR &= ~(RCC_APB2ENR_AFIOEN))
+#define __HAL_RCC_GPIOA_CLK_DISABLE()     (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPAEN))
+#define __HAL_RCC_GPIOB_CLK_DISABLE()     (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPBEN))
+#define __HAL_RCC_GPIOC_CLK_DISABLE()     (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPCEN))
+#define __HAL_RCC_GPIOD_CLK_DISABLE()     (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPDEN))
+#define __HAL_RCC_ADC1_CLK_DISABLE()      (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC1EN))
+
+#define __HAL_RCC_TIM1_CLK_DISABLE()      (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM1EN))
+#define __HAL_RCC_SPI1_CLK_DISABLE()      (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI1EN))
+#define __HAL_RCC_USART1_CLK_DISABLE()    (RCC->APB2ENR &= ~(RCC_APB2ENR_USART1EN))
+
+/**
+  * @}
+  */
+  
+/** @defgroup RCC_APB2_Peripheral_Clock_Enable_Disable_Status APB2 Peripheral Clock Enable Disable Status
+  * @brief  Get the enable or disable status of the APB2 peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before
+  *         using it.
+  * @{
+  */
+
+#define __HAL_RCC_AFIO_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_AFIOEN)) != RESET)
+#define __HAL_RCC_AFIO_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_AFIOEN)) == RESET)
+#define __HAL_RCC_GPIOA_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPAEN)) != RESET)
+#define __HAL_RCC_GPIOA_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPAEN)) == RESET)
+#define __HAL_RCC_GPIOB_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPBEN)) != RESET)
+#define __HAL_RCC_GPIOB_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPBEN)) == RESET)
+#define __HAL_RCC_GPIOC_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPCEN)) != RESET)
+#define __HAL_RCC_GPIOC_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPCEN)) == RESET)
+#define __HAL_RCC_GPIOD_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPDEN)) != RESET)
+#define __HAL_RCC_GPIOD_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPDEN)) == RESET)
+#define __HAL_RCC_ADC1_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_ADC1EN)) != RESET)
+#define __HAL_RCC_ADC1_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_ADC1EN)) == RESET)
+#define __HAL_RCC_TIM1_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_TIM1EN)) != RESET)
+#define __HAL_RCC_TIM1_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_TIM1EN)) == RESET)
+#define __HAL_RCC_SPI1_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_SPI1EN)) != RESET)
+#define __HAL_RCC_SPI1_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_SPI1EN)) == RESET)
+#define __HAL_RCC_USART1_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_USART1EN)) != RESET)
+#define __HAL_RCC_USART1_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_USART1EN)) == RESET)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_APB1_Force_Release_Reset APB1 Force Release Reset
+  * @brief  Force or release APB1 peripheral reset.
+  * @{   
+  */
+#define __HAL_RCC_APB1_FORCE_RESET()       (RCC->APB2RSTR = 0xFFFFFFFFU)  
+#define __HAL_RCC_TIM2_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM2RST))
+#define __HAL_RCC_TIM3_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM3RST))
+#define __HAL_RCC_WWDG_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_WWDGRST))
+#define __HAL_RCC_USART2_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_USART2RST))
+#define __HAL_RCC_I2C1_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C1RST))
+
+#define __HAL_RCC_BKP_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_BKPRST))
+#define __HAL_RCC_PWR_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_PWRRST))
+
+#define __HAL_RCC_APB1_RELEASE_RESET()      (RCC->APB1RSTR = 0x00)  
+#define __HAL_RCC_TIM2_RELEASE_RESET()       (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM2RST))
+#define __HAL_RCC_TIM3_RELEASE_RESET()       (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM3RST))
+#define __HAL_RCC_WWDG_RELEASE_RESET()       (RCC->APB1RSTR &= ~(RCC_APB1RSTR_WWDGRST))
+#define __HAL_RCC_USART2_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USART2RST))
+#define __HAL_RCC_I2C1_RELEASE_RESET()       (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C1RST))
+
+#define __HAL_RCC_BKP_RELEASE_RESET()        (RCC->APB1RSTR &= ~(RCC_APB1RSTR_BKPRST))
+#define __HAL_RCC_PWR_RELEASE_RESET()        (RCC->APB1RSTR &= ~(RCC_APB1RSTR_PWRRST))
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_APB2_Force_Release_Reset APB2 Force Release Reset
+  * @brief  Force or release APB2 peripheral reset.
+  * @{   
+  */
+#define __HAL_RCC_APB2_FORCE_RESET()       (RCC->APB2RSTR = 0xFFFFFFFFU)  
+#define __HAL_RCC_AFIO_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_AFIORST))
+#define __HAL_RCC_GPIOA_FORCE_RESET()      (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPARST))
+#define __HAL_RCC_GPIOB_FORCE_RESET()      (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPBRST))
+#define __HAL_RCC_GPIOC_FORCE_RESET()      (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPCRST))
+#define __HAL_RCC_GPIOD_FORCE_RESET()      (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPDRST))
+#define __HAL_RCC_ADC1_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_ADC1RST))
+
+#define __HAL_RCC_TIM1_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM1RST))
+#define __HAL_RCC_SPI1_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI1RST))
+#define __HAL_RCC_USART1_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_USART1RST))
+
+#define __HAL_RCC_APB2_RELEASE_RESET()      (RCC->APB2RSTR = 0x00)  
+#define __HAL_RCC_AFIO_RELEASE_RESET()       (RCC->APB2RSTR &= ~(RCC_APB2RSTR_AFIORST))
+#define __HAL_RCC_GPIOA_RELEASE_RESET()      (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPARST))
+#define __HAL_RCC_GPIOB_RELEASE_RESET()      (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPBRST))
+#define __HAL_RCC_GPIOC_RELEASE_RESET()      (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPCRST))
+#define __HAL_RCC_GPIOD_RELEASE_RESET()      (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPDRST))
+#define __HAL_RCC_ADC1_RELEASE_RESET()       (RCC->APB2RSTR &= ~(RCC_APB2RSTR_ADC1RST))
+
+#define __HAL_RCC_TIM1_RELEASE_RESET()       (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM1RST))
+#define __HAL_RCC_SPI1_RELEASE_RESET()       (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI1RST))
+#define __HAL_RCC_USART1_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_USART1RST))
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_HSI_Configuration HSI Configuration
+  * @{   
+  */
+
+/** @brief  Macros to enable or disable the Internal High Speed oscillator (HSI).
+  * @note   The HSI is stopped by hardware when entering STOP and STANDBY modes.
+  * @note   HSI can not be stopped if it is used as system clock source. In this case,
+  *         you have to select another source of the system clock then stop the HSI.  
+  * @note   After enabling the HSI, the application software should wait on HSIRDY
+  *         flag to be set indicating that HSI clock is stable and can be used as
+  *         system clock source.  
+  * @note   When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator
+  *         clock cycles.  
+  */
+#define __HAL_RCC_HSI_ENABLE()  (*(__IO uint32_t *) RCC_CR_HSION_BB = ENABLE)
+#define __HAL_RCC_HSI_DISABLE() (*(__IO uint32_t *) RCC_CR_HSION_BB = DISABLE)
+
+/** @brief  Macro to adjust the Internal High Speed oscillator (HSI) calibration value.
+  * @note   The calibration is used to compensate for the variations in voltage
+  *         and temperature that influence the frequency of the internal HSI RC.
+  * @param  _HSICALIBRATIONVALUE_ specifies the calibration trimming value.
+  *         (default is RCC_HSICALIBRATION_DEFAULT).
+  *         This parameter must be a number between 0 and 0x1F.
+  */  
+#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(_HSICALIBRATIONVALUE_) \
+          (MODIFY_REG(RCC->CR, RCC_CR_HSITRIM, (uint32_t)(_HSICALIBRATIONVALUE_) << POSITION_VAL(RCC_CR_HSITRIM)))
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_LSI_Configuration  LSI Configuration
+  * @{   
+  */
+
+/** @brief Macro to enable the Internal Low Speed oscillator (LSI).
+  * @note   After enabling the LSI, the application software should wait on 
+  *         LSIRDY flag to be set indicating that LSI clock is stable and can
+  *         be used to clock the IWDG and/or the RTC.
+  */
+#define __HAL_RCC_LSI_ENABLE()  (*(__IO uint32_t *) RCC_CSR_LSION_BB = ENABLE)
+
+/** @brief Macro to disable the Internal Low Speed oscillator (LSI).
+  * @note   LSI can not be disabled if the IWDG is running.  
+  * @note   When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator
+  *         clock cycles. 
+  */
+#define __HAL_RCC_LSI_DISABLE() (*(__IO uint32_t *) RCC_CSR_LSION_BB = DISABLE)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_HSE_Configuration HSE Configuration
+  * @{   
+  */
+
+/**
+  * @brief  Macro to configure the External High Speed oscillator (HSE).
+  * @note   Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not
+  *         supported by this macro. User should request a transition to HSE Off
+  *         first and then HSE On or HSE Bypass.
+  * @note   After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application
+  *         software should wait on HSERDY flag to be set indicating that HSE clock
+  *         is stable and can be used to clock the PLL and/or system clock.
+  * @note   HSE state can not be changed if it is used directly or through the
+  *         PLL as system clock. In this case, you have to select another source
+  *         of the system clock then change the HSE state (ex. disable it).
+  * @note   The HSE is stopped by hardware when entering STOP and STANDBY modes.
+  * @note   This function reset the CSSON bit, so if the clock security system(CSS)
+  *         was previously enabled you have to enable it again after calling this
+  *         function.
+  * @param  __STATE__ specifies the new state of the HSE.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_HSE_OFF turn OFF the HSE oscillator, HSERDY flag goes low after
+  *                              6 HSE oscillator clock cycles.
+  *            @arg @ref RCC_HSE_ON turn ON the HSE oscillator
+  *            @arg @ref RCC_HSE_BYPASS HSE oscillator bypassed with external clock
+  */
+#define __HAL_RCC_HSE_CONFIG(__STATE__)                                     \
+                    do{                                                     \
+                      if ((__STATE__) == RCC_HSE_ON)                        \
+                      {                                                     \
+                        SET_BIT(RCC->CR, RCC_CR_HSEON);                     \
+                      }                                                     \
+                      else if ((__STATE__) == RCC_HSE_OFF)                  \
+                      {                                                     \
+                        CLEAR_BIT(RCC->CR, RCC_CR_HSEON);                   \
+                        CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);                  \
+                      }                                                     \
+                      else if ((__STATE__) == RCC_HSE_BYPASS)               \
+                      {                                                     \
+                        SET_BIT(RCC->CR, RCC_CR_HSEBYP);                    \
+                        SET_BIT(RCC->CR, RCC_CR_HSEON);                     \
+                      }                                                     \
+                      else                                                  \
+                      {                                                     \
+                        CLEAR_BIT(RCC->CR, RCC_CR_HSEON);                   \
+                        CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);                  \
+                      }                                                     \
+                    }while(0)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_LSE_Configuration LSE Configuration
+  * @{   
+  */
+
+/**
+  * @brief  Macro to configure the External Low Speed oscillator (LSE).
+  * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not supported by this macro. 
+  * @note   As the LSE is in the Backup domain and write access is denied to
+  *         this domain after reset, you have to enable write access using 
+  *         @ref HAL_PWR_EnableBkUpAccess() function before to configure the LSE
+  *         (to be done once after reset).  
+  * @note   After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application
+  *         software should wait on LSERDY flag to be set indicating that LSE clock
+  *         is stable and can be used to clock the RTC.
+  * @param  __STATE__ specifies the new state of the LSE.
+  *         This parameter can be one of the following values:
+  *            @arg @ref RCC_LSE_OFF turn OFF the LSE oscillator, LSERDY flag goes low after
+  *                              6 LSE oscillator clock cycles.
+  *            @arg @ref RCC_LSE_ON turn ON the LSE oscillator.
+  *            @arg @ref RCC_LSE_BYPASS LSE oscillator bypassed with external clock.
+  */
+#define __HAL_RCC_LSE_CONFIG(__STATE__)                                     \
+                    do{                                                     \
+                      if ((__STATE__) == RCC_LSE_ON)                        \
+                      {                                                     \
+                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);                   \
+                      }                                                     \
+                      else if ((__STATE__) == RCC_LSE_OFF)                  \
+                      {                                                     \
+                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON);                 \
+                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);                \
+                      }                                                     \
+                      else if ((__STATE__) == RCC_LSE_BYPASS)               \
+                      {                                                     \
+                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);                  \
+                        SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);                   \
+                      }                                                     \
+                      else                                                  \
+                      {                                                     \
+                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON);                 \
+                        CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);                \
+                      }                                                     \
+                    }while(0)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_PLL_Configuration PLL Configuration
+  * @{   
+  */
+
+/** @brief Macro to enable the main PLL.
+  * @note   After enabling the main PLL, the application software should wait on 
+  *         PLLRDY flag to be set indicating that PLL clock is stable and can
+  *         be used as system clock source.
+  * @note   The main PLL is disabled by hardware when entering STOP and STANDBY modes.
+  */
+#define __HAL_RCC_PLL_ENABLE()          (*(__IO uint32_t *) RCC_CR_PLLON_BB = ENABLE)
+
+/** @brief Macro to disable the main PLL.
+  * @note   The main PLL can not be disabled if it is used as system clock source
+  */
+#define __HAL_RCC_PLL_DISABLE()         (*(__IO uint32_t *) RCC_CR_PLLON_BB = DISABLE)
+
+/** @brief Macro to configure the main PLL clock source and multiplication factors.
+  * @note   This function must be used only when the main PLL is disabled.
+  *  
+  * @param  __RCC_PLLSOURCE__ specifies the PLL entry clock source.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_PLLSOURCE_HSI_DIV2 HSI oscillator clock selected as PLL clock entry
+  *            @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry
+  * @param  __PLLMUL__ specifies the multiplication factor for PLL VCO output clock
+  *          This parameter can be one of the following values:
+  *             @arg @ref RCC_PLL_MUL4   PLLVCO = PLL clock entry x 4
+  *             @arg @ref RCC_PLL_MUL6   PLLVCO = PLL clock entry x 6
+  @if STM32F105xC
+  *             @arg @ref RCC_PLL_MUL6_5 PLLVCO = PLL clock entry x 6.5
+  @elseif STM32F107xC
+  *             @arg @ref RCC_PLL_MUL6_5 PLLVCO = PLL clock entry x 6.5
+  @else
+  *             @arg @ref RCC_PLL_MUL2   PLLVCO = PLL clock entry x 2
+  *             @arg @ref RCC_PLL_MUL3   PLLVCO = PLL clock entry x 3
+  *             @arg @ref RCC_PLL_MUL10  PLLVCO = PLL clock entry x 10
+  *             @arg @ref RCC_PLL_MUL11  PLLVCO = PLL clock entry x 11
+  *             @arg @ref RCC_PLL_MUL12  PLLVCO = PLL clock entry x 12
+  *             @arg @ref RCC_PLL_MUL13  PLLVCO = PLL clock entry x 13
+  *             @arg @ref RCC_PLL_MUL14  PLLVCO = PLL clock entry x 14
+  *             @arg @ref RCC_PLL_MUL15  PLLVCO = PLL clock entry x 15
+  *             @arg @ref RCC_PLL_MUL16  PLLVCO = PLL clock entry x 16
+  @endif
+  *             @arg @ref RCC_PLL_MUL8   PLLVCO = PLL clock entry x 8
+  *             @arg @ref RCC_PLL_MUL9   PLLVCO = PLL clock entry x 9
+  *   
+  */
+#define __HAL_RCC_PLL_CONFIG(__RCC_PLLSOURCE__, __PLLMUL__)\
+          MODIFY_REG(RCC->CFGR, (RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL),((__RCC_PLLSOURCE__) | (__PLLMUL__) ))
+
+/** @brief  Get oscillator clock selected as PLL input clock
+  * @retval The clock source used for PLL entry. The returned value can be one
+  *         of the following:
+  *             @arg @ref RCC_PLLSOURCE_HSI_DIV2 HSI oscillator clock selected as PLL input clock
+  *             @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL input clock
+  */
+#define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PLLSRC)))
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_Get_Clock_source Get Clock source
+  * @{   
+  */
+
+/**
+  * @brief  Macro to configure the system clock source.
+  * @param  __SYSCLKSOURCE__ specifies the system clock source.
+  *          This parameter can be one of the following values:
+  *              @arg @ref RCC_SYSCLKSOURCE_HSI HSI oscillator is used as system clock source.
+  *              @arg @ref RCC_SYSCLKSOURCE_HSE HSE oscillator is used as system clock source.
+  *              @arg @ref RCC_SYSCLKSOURCE_PLLCLK PLL output is used as system clock source.
+  */
+#define __HAL_RCC_SYSCLK_CONFIG(__SYSCLKSOURCE__) \
+                  MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__SYSCLKSOURCE__))
+
+/** @brief  Macro to get the clock source used as system clock.
+  * @retval The clock source used as system clock. The returned value can be one
+  *         of the following:
+  *             @arg @ref RCC_SYSCLKSOURCE_STATUS_HSI HSI used as system clock
+  *             @arg @ref RCC_SYSCLKSOURCE_STATUS_HSE HSE used as system clock
+  *             @arg @ref RCC_SYSCLKSOURCE_STATUS_PLLCLK PLL used as system clock
+  */
+#define __HAL_RCC_GET_SYSCLK_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR,RCC_CFGR_SWS)))
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_MCOx_Clock_Config RCC Extended MCOx Clock Config
+  * @{   
+  */ 
+
+#if   defined(RCC_CFGR_MCO_3)
+/** @brief  Macro to configure the MCO clock.
+  * @param  __MCOCLKSOURCE__ specifies the MCO clock source.
+  *         This parameter can be one of the following values:
+  *            @arg @ref RCC_MCO1SOURCE_NOCLOCK      No clock selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_SYSCLK       System clock (SYSCLK) selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_HSI          HSI selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_HSE          HSE selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_PLLCLK       PLL clock divided by 2 selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_PLL2CLK      PLL2 clock selected by 2 selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_PLL3CLK_DIV2 PLL3 clock divided by 2 selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_EXT_HSE XT1  external 3-25 MHz oscillator clock selected (for Ethernet) as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_PLL3CLK      PLL3 clock selected (for Ethernet) as MCO clock
+  * @param  __MCODIV__ specifies the MCO clock prescaler.
+  *         This parameter can be one of the following values:
+  *            @arg @ref RCC_MCODIV_1 No division applied on MCO clock source
+  */
+#else
+/** @brief  Macro to configure the MCO clock.
+  * @param  __MCOCLKSOURCE__ specifies the MCO clock source.
+  *         This parameter can be one of the following values:
+  *            @arg @ref RCC_MCO1SOURCE_NOCLOCK No clock selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_SYSCLK  System clock (SYSCLK) selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_HSI HSI selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_HSE HSE selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_PLLCLK  PLL clock divided by 2 selected as MCO clock
+  * @param  __MCODIV__ specifies the MCO clock prescaler.
+  *         This parameter can be one of the following values:
+  *            @arg @ref RCC_MCODIV_1 No division applied on MCO clock source
+  */
+#endif
+
+#define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \
+                 MODIFY_REG(RCC->CFGR, RCC_CFGR_MCO, (__MCOCLKSOURCE__))
+
+
+/**
+  * @}
+  */
+
+  /** @defgroup RCC_RTC_Clock_Configuration RCC RTC Clock Configuration
+  * @{   
+  */
+
+/** @brief Macro to configure the RTC clock (RTCCLK).
+  * @note   As the RTC clock configuration bits are in the Backup domain and write
+  *         access is denied to this domain after reset, you have to enable write
+  *         access using the Power Backup Access macro before to configure
+  *         the RTC clock source (to be done once after reset).    
+  * @note   Once the RTC clock is configured it can't be changed unless the  
+  *         Backup domain is reset using @ref __HAL_RCC_BACKUPRESET_FORCE() macro, or by
+  *         a Power On Reset (POR).
+  *
+  * @param  __RTC_CLKSOURCE__ specifies the RTC clock source.
+  *          This parameter can be one of the following values:
+  *             @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock
+  *             @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock
+  *             @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock
+  *             @arg @ref RCC_RTCCLKSOURCE_HSE_DIV128 HSE divided by 128 selected as RTC clock
+  * @note   If the LSE or LSI is used as RTC clock source, the RTC continues to
+  *         work in STOP and STANDBY modes, and can be used as wakeup source.
+  *         However, when the HSE clock is used as RTC clock source, the RTC
+  *         cannot be used in STOP and STANDBY modes.    
+  * @note   The maximum input clock frequency for RTC is 1MHz (when using HSE as
+  *         RTC clock source).
+  */
+#define __HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__) MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, (__RTC_CLKSOURCE__))
+                                                   
+/** @brief Macro to get the RTC clock source.
+  * @retval The clock source can be one of the following values:
+  *            @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock
+  *            @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock
+  *            @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock
+  *            @arg @ref RCC_RTCCLKSOURCE_HSE_DIV128 HSE divided by 128 selected as RTC clock
+  */
+#define __HAL_RCC_GET_RTC_SOURCE() (READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL))
+
+/** @brief Macro to enable the the RTC clock.
+  * @note   These macros must be used only after the RTC clock source was selected.
+  */
+#define __HAL_RCC_RTC_ENABLE()          (*(__IO uint32_t *) RCC_BDCR_RTCEN_BB = ENABLE)
+
+/** @brief Macro to disable the the RTC clock.
+  * @note  These macros must be used only after the RTC clock source was selected.
+  */
+#define __HAL_RCC_RTC_DISABLE()         (*(__IO uint32_t *) RCC_BDCR_RTCEN_BB = DISABLE)
+
+/** @brief  Macro to force the Backup domain reset.
+  * @note   This function resets the RTC peripheral (including the backup registers)
+  *         and the RTC clock source selection in RCC_BDCR register.
+  */
+#define __HAL_RCC_BACKUPRESET_FORCE()   (*(__IO uint32_t *) RCC_BDCR_BDRST_BB = ENABLE)
+
+/** @brief  Macros to release the Backup domain reset.
+  */
+#define __HAL_RCC_BACKUPRESET_RELEASE() (*(__IO uint32_t *) RCC_BDCR_BDRST_BB = DISABLE)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management
+  * @brief macros to manage the specified RCC Flags and interrupts.
+  * @{
+  */
+
+/** @brief Enable RCC interrupt.
+  * @param  __INTERRUPT__ specifies the RCC interrupt sources to be enabled.
+  *          This parameter can be any combination of the following values:
+  *            @arg @ref RCC_IT_LSIRDY LSI ready interrupt
+  *            @arg @ref RCC_IT_LSERDY LSE ready interrupt
+  *            @arg @ref RCC_IT_HSIRDY HSI ready interrupt
+  *            @arg @ref RCC_IT_HSERDY HSE ready interrupt
+  *            @arg @ref RCC_IT_PLLRDY main PLL ready interrupt
+  @if STM32F105xx
+  *            @arg @ref RCC_IT_PLL2RDY Main PLL2 ready interrupt.
+  *            @arg @ref RCC_IT_PLLI2S2RDY Main PLLI2S ready interrupt.
+  @elsif STM32F107xx
+  *            @arg @ref RCC_IT_PLL2RDY Main PLL2 ready interrupt.
+  *            @arg @ref RCC_IT_PLLI2S2RDY Main PLLI2S ready interrupt.
+  @endif
+  */
+#define __HAL_RCC_ENABLE_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE1_ADDRESS |= (__INTERRUPT__))
+
+/** @brief Disable RCC interrupt.
+  * @param  __INTERRUPT__ specifies the RCC interrupt sources to be disabled.
+  *          This parameter can be any combination of the following values:
+  *            @arg @ref RCC_IT_LSIRDY LSI ready interrupt
+  *            @arg @ref RCC_IT_LSERDY LSE ready interrupt
+  *            @arg @ref RCC_IT_HSIRDY HSI ready interrupt
+  *            @arg @ref RCC_IT_HSERDY HSE ready interrupt
+  *            @arg @ref RCC_IT_PLLRDY main PLL ready interrupt
+  @if STM32F105xx
+  *            @arg @ref RCC_IT_PLL2RDY Main PLL2 ready interrupt.
+  *            @arg @ref RCC_IT_PLLI2S2RDY Main PLLI2S ready interrupt.
+  @elsif STM32F107xx
+  *            @arg @ref RCC_IT_PLL2RDY Main PLL2 ready interrupt.
+  *            @arg @ref RCC_IT_PLLI2S2RDY Main PLLI2S ready interrupt.
+  @endif
+  */
+#define __HAL_RCC_DISABLE_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE1_ADDRESS &= (uint8_t)(~(__INTERRUPT__)))
+
+/** @brief Clear the RCC's interrupt pending bits.
+  * @param  __INTERRUPT__ specifies the interrupt pending bit to clear.
+  *          This parameter can be any combination of the following values:
+  *            @arg @ref RCC_IT_LSIRDY LSI ready interrupt.
+  *            @arg @ref RCC_IT_LSERDY LSE ready interrupt.
+  *            @arg @ref RCC_IT_HSIRDY HSI ready interrupt.
+  *            @arg @ref RCC_IT_HSERDY HSE ready interrupt.
+  *            @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt.
+  @if STM32F105xx
+  *            @arg @ref RCC_IT_PLL2RDY Main PLL2 ready interrupt.
+  *            @arg @ref RCC_IT_PLLI2S2RDY Main PLLI2S ready interrupt.
+  @elsif STM32F107xx
+  *            @arg @ref RCC_IT_PLL2RDY Main PLL2 ready interrupt.
+  *            @arg @ref RCC_IT_PLLI2S2RDY Main PLLI2S ready interrupt.
+  @endif
+  *            @arg @ref RCC_IT_CSS Clock Security System interrupt
+  */
+#define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE2_ADDRESS = (__INTERRUPT__))
+
+/** @brief Check the RCC's interrupt has occurred or not.
+  * @param  __INTERRUPT__ specifies the RCC interrupt source to check.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_IT_LSIRDY LSI ready interrupt.
+  *            @arg @ref RCC_IT_LSERDY LSE ready interrupt.
+  *            @arg @ref RCC_IT_HSIRDY HSI ready interrupt.
+  *            @arg @ref RCC_IT_HSERDY HSE ready interrupt.
+  *            @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt.
+  @if STM32F105xx
+  *            @arg @ref RCC_IT_PLL2RDY Main PLL2 ready interrupt.
+  *            @arg @ref RCC_IT_PLLI2S2RDY Main PLLI2S ready interrupt.
+  @elsif STM32F107xx
+  *            @arg @ref RCC_IT_PLL2RDY Main PLL2 ready interrupt.
+  *            @arg @ref RCC_IT_PLLI2S2RDY Main PLLI2S ready interrupt.
+  @endif
+  *            @arg @ref RCC_IT_CSS Clock Security System interrupt
+  * @retval The new state of __INTERRUPT__ (TRUE or FALSE).
+  */
+#define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIR & (__INTERRUPT__)) == (__INTERRUPT__))
+
+/** @brief Set RMVF bit to clear the reset flags.
+  *         The reset flags are RCC_FLAG_PINRST, RCC_FLAG_PORRST, RCC_FLAG_SFTRST,
+  *         RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST, RCC_FLAG_LPWRRST
+  */
+#define __HAL_RCC_CLEAR_RESET_FLAGS() (*(__IO uint32_t *)RCC_CSR_RMVF_BB = ENABLE)
+
+/** @brief  Check RCC flag is set or not.
+  * @param  __FLAG__ specifies the flag to check.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_FLAG_HSIRDY HSI oscillator clock ready.
+  *            @arg @ref RCC_FLAG_HSERDY HSE oscillator clock ready.
+  *            @arg @ref RCC_FLAG_PLLRDY Main PLL clock ready.
+  @if STM32F105xx
+  *            @arg @ref RCC_FLAG_PLL2RDY Main PLL2 clock ready.
+  *            @arg @ref RCC_FLAG_PLLI2SRDY Main PLLI2S clock ready.
+  @elsif STM32F107xx
+  *            @arg @ref RCC_FLAG_PLL2RDY Main PLL2 clock ready.
+  *            @arg @ref RCC_FLAG_PLLI2SRDY Main PLLI2S clock ready.
+  @endif
+  *            @arg @ref RCC_FLAG_LSERDY LSE oscillator clock ready.
+  *            @arg @ref RCC_FLAG_LSIRDY LSI oscillator clock ready.
+  *            @arg @ref RCC_FLAG_PINRST  Pin reset.
+  *            @arg @ref RCC_FLAG_PORRST  POR/PDR reset.
+  *            @arg @ref RCC_FLAG_SFTRST  Software reset.
+  *            @arg @ref RCC_FLAG_IWDGRST Independent Watchdog reset.
+  *            @arg @ref RCC_FLAG_WWDGRST Window Watchdog reset.
+  *            @arg @ref RCC_FLAG_LPWRRST Low Power reset.
+  * @retval The new state of __FLAG__ (TRUE or FALSE).
+  */
+#define __HAL_RCC_GET_FLAG(__FLAG__) (((((__FLAG__) >> 5) == CR_REG_INDEX)?   RCC->CR   : \
+                                      ((((__FLAG__) >> 5) == BDCR_REG_INDEX)? RCC->BDCR : \
+                                                                              RCC->CSR)) & ((uint32_t)1 << ((__FLAG__) & RCC_FLAG_MASK)))
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Include RCC HAL Extension module */
+#include "stm32f1xx_hal_rcc_ex.h"
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup RCC_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup RCC_Exported_Functions_Group1
+  * @{
+  */
+
+/* Initialization and de-initialization functions  ******************************/
+void              HAL_RCC_DeInit(void);
+HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct);
+HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, uint32_t FLatency);
+
+/**
+  * @}
+  */
+
+/** @addtogroup RCC_Exported_Functions_Group2
+  * @{
+  */
+
+/* Peripheral Control functions  ************************************************/
+void              HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv);
+void              HAL_RCC_EnableCSS(void);
+void              HAL_RCC_DisableCSS(void);
+uint32_t          HAL_RCC_GetSysClockFreq(void);
+uint32_t          HAL_RCC_GetHCLKFreq(void);
+uint32_t          HAL_RCC_GetPCLK1Freq(void);
+uint32_t          HAL_RCC_GetPCLK2Freq(void);
+void              HAL_RCC_GetOscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct);
+void              HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, uint32_t *pFLatency);
+
+/* CSS NMI IRQ handler */
+void              HAL_RCC_NMI_IRQHandler(void);
+
+/* User Callbacks in non blocking mode (IT mode) */
+void              HAL_RCC_CSSCallback(void);
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_RCC_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1926 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_rcc_ex.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of RCC HAL Extension module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_RCC_EX_H
+#define __STM32F1xx_HAL_RCC_EX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup RCCEx
+  * @{
+  */ 
+
+/** @addtogroup RCCEx_Private_Constants
+ * @{
+ */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+
+/* Alias word address of PLLI2SON bit */
+#define PLLI2SON_BITNUMBER           POSITION_VAL(RCC_CR_PLL3ON)
+#define RCC_CR_PLLI2SON_BB           ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32) + (PLLI2SON_BITNUMBER * 4)))
+/* Alias word address of PLL2ON bit */
+#define PLL2ON_BITNUMBER             POSITION_VAL(RCC_CR_PLL2ON)
+#define RCC_CR_PLL2ON_BB             ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32) + (PLL2ON_BITNUMBER * 4)))
+
+#define PLLI2S_TIMEOUT_VALUE         ((uint32_t)100)  /* 100 ms */
+#define PLL2_TIMEOUT_VALUE           ((uint32_t)100)  /* 100 ms */
+
+#endif /* STM32F105xC || STM32F107xC */
+
+
+#define CR_REG_INDEX                 ((uint8_t)1)    
+
+/**
+  * @}
+  */
+
+/** @addtogroup RCCEx_Private_Macros
+ * @{
+ */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define IS_RCC_PREDIV1_SOURCE(__SOURCE__) (((__SOURCE__) == RCC_PREDIV1_SOURCE_HSE) || \
+                                           ((__SOURCE__) == RCC_PREDIV1_SOURCE_PLL2))
+#endif /* STM32F105xC || STM32F107xC */
+
+#if defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F100xB)\
+ || defined(STM32F100xE)
+#define IS_RCC_HSE_PREDIV(__DIV__) (((__DIV__) == RCC_HSE_PREDIV_DIV1)  || ((__DIV__) == RCC_HSE_PREDIV_DIV2)  || \
+                                    ((__DIV__) == RCC_HSE_PREDIV_DIV3)  || ((__DIV__) == RCC_HSE_PREDIV_DIV4)  || \
+                                    ((__DIV__) == RCC_HSE_PREDIV_DIV5)  || ((__DIV__) == RCC_HSE_PREDIV_DIV6)  || \
+                                    ((__DIV__) == RCC_HSE_PREDIV_DIV7)  || ((__DIV__) == RCC_HSE_PREDIV_DIV8)  || \
+                                    ((__DIV__) == RCC_HSE_PREDIV_DIV9)  || ((__DIV__) == RCC_HSE_PREDIV_DIV10) || \
+                                    ((__DIV__) == RCC_HSE_PREDIV_DIV11) || ((__DIV__) == RCC_HSE_PREDIV_DIV12) || \
+                                    ((__DIV__) == RCC_HSE_PREDIV_DIV13) || ((__DIV__) == RCC_HSE_PREDIV_DIV14) || \
+                                    ((__DIV__) == RCC_HSE_PREDIV_DIV15) || ((__DIV__) == RCC_HSE_PREDIV_DIV16))
+
+#else
+#define IS_RCC_HSE_PREDIV(__DIV__) (((__DIV__) == RCC_HSE_PREDIV_DIV1)  || ((__DIV__) == RCC_HSE_PREDIV_DIV2))
+#endif /* STM32F105xC || STM32F107xC || STM32F100xB || STM32F100xE */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define IS_RCC_PLL_MUL(__MUL__) (((__MUL__) == RCC_PLL_MUL4)  || ((__MUL__) == RCC_PLL_MUL5) || \
+                                 ((__MUL__) == RCC_PLL_MUL6)  || ((__MUL__) == RCC_PLL_MUL7) || \
+                                 ((__MUL__) == RCC_PLL_MUL8)  || ((__MUL__) == RCC_PLL_MUL9) || \
+                                 ((__MUL__) == RCC_PLL_MUL6_5))
+
+#define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK)  || ((__SOURCE__) == RCC_MCO1SOURCE_HSI) \
+                                    || ((__SOURCE__) == RCC_MCO1SOURCE_HSE)     || ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) \
+                                    || ((__SOURCE__) == RCC_MCO1SOURCE_PLL2CLK) || ((__SOURCE__) == RCC_MCO1SOURCE_PLL3CLK) \
+                                    || ((__SOURCE__) == RCC_MCO1SOURCE_PLL3CLK_DIV2) || ((__SOURCE__) == RCC_MCO1SOURCE_EXT_HSE) \
+                                    || ((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK))
+
+#else
+#define IS_RCC_PLL_MUL(__MUL__) (((__MUL__) == RCC_PLL_MUL2)  || ((__MUL__) == RCC_PLL_MUL3)  || \
+                                 ((__MUL__) == RCC_PLL_MUL4)  || ((__MUL__) == RCC_PLL_MUL5)  || \
+                                 ((__MUL__) == RCC_PLL_MUL6)  || ((__MUL__) == RCC_PLL_MUL7)  || \
+                                 ((__MUL__) == RCC_PLL_MUL8)  || ((__MUL__) == RCC_PLL_MUL9)  || \
+                                 ((__MUL__) == RCC_PLL_MUL10) || ((__MUL__) == RCC_PLL_MUL11) || \
+                                 ((__MUL__) == RCC_PLL_MUL12) || ((__MUL__) == RCC_PLL_MUL13) || \
+                                 ((__MUL__) == RCC_PLL_MUL14) || ((__MUL__) == RCC_PLL_MUL15) || \
+                                 ((__MUL__) == RCC_PLL_MUL16))
+
+#define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK)  || ((__SOURCE__) == RCC_MCO1SOURCE_HSI) \
+                                    || ((__SOURCE__) == RCC_MCO1SOURCE_HSE)     || ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) \
+                                    || ((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK))
+
+#endif /* STM32F105xC || STM32F107xC*/
+
+#define IS_RCC_ADCPLLCLK_DIV(__ADCCLK__) (((__ADCCLK__) == RCC_ADCPCLK2_DIV2)  || ((__ADCCLK__) == RCC_ADCPCLK2_DIV4)   || \
+                                          ((__ADCCLK__) == RCC_ADCPCLK2_DIV6)  || ((__ADCCLK__) == RCC_ADCPCLK2_DIV8))
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define IS_RCC_I2S2CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_I2S2CLKSOURCE_SYSCLK)  || ((__SOURCE__) == RCC_I2S2CLKSOURCE_PLLI2S_VCO))
+
+#define IS_RCC_I2S3CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_I2S3CLKSOURCE_SYSCLK)  || ((__SOURCE__) == RCC_I2S3CLKSOURCE_PLLI2S_VCO))
+
+#define IS_RCC_USBPLLCLK_DIV(__USBCLK__) (((__USBCLK__) == RCC_USBCLKSOURCE_PLL_DIV2)  || ((__USBCLK__) == RCC_USBCLKSOURCE_PLL_DIV3))
+
+#define IS_RCC_PLLI2S_MUL(__MUL__) (((__MUL__) == RCC_PLLI2S_MUL8)   || ((__MUL__) == RCC_PLLI2S_MUL9)  || \
+                                    ((__MUL__) == RCC_PLLI2S_MUL10)  || ((__MUL__) == RCC_PLLI2S_MUL11)  || \
+                                    ((__MUL__) == RCC_PLLI2S_MUL12)  || ((__MUL__) == RCC_PLLI2S_MUL13)  || \
+                                    ((__MUL__) == RCC_PLLI2S_MUL14)  || ((__MUL__) == RCC_PLLI2S_MUL16)  || \
+                                    ((__MUL__) == RCC_PLLI2S_MUL20))
+
+#define IS_RCC_HSE_PREDIV2(__DIV__) (((__DIV__) == RCC_HSE_PREDIV2_DIV1)  || ((__DIV__) == RCC_HSE_PREDIV2_DIV2)  || \
+                                     ((__DIV__) == RCC_HSE_PREDIV2_DIV3)  || ((__DIV__) == RCC_HSE_PREDIV2_DIV4)  || \
+                                     ((__DIV__) == RCC_HSE_PREDIV2_DIV5)  || ((__DIV__) == RCC_HSE_PREDIV2_DIV6)  || \
+                                     ((__DIV__) == RCC_HSE_PREDIV2_DIV7)  || ((__DIV__) == RCC_HSE_PREDIV2_DIV8)  || \
+                                     ((__DIV__) == RCC_HSE_PREDIV2_DIV9)  || ((__DIV__) == RCC_HSE_PREDIV2_DIV10) || \
+                                     ((__DIV__) == RCC_HSE_PREDIV2_DIV11) || ((__DIV__) == RCC_HSE_PREDIV2_DIV12) || \
+                                     ((__DIV__) == RCC_HSE_PREDIV2_DIV13) || ((__DIV__) == RCC_HSE_PREDIV2_DIV14) || \
+                                     ((__DIV__) == RCC_HSE_PREDIV2_DIV15) || ((__DIV__) == RCC_HSE_PREDIV2_DIV16))
+
+#define IS_RCC_PLL2(__PLL__) (((__PLL__) == RCC_PLL2_NONE) || ((__PLL__) == RCC_PLL2_OFF) || \
+                              ((__PLL__) == RCC_PLL2_ON))
+
+#define IS_RCC_PLL2_MUL(__MUL__) (((__MUL__) == RCC_PLL2_MUL8)  || ((__MUL__) == RCC_PLL2_MUL9)  || \
+                                  ((__MUL__) == RCC_PLL2_MUL10)  || ((__MUL__) == RCC_PLL2_MUL11)  || \
+                                  ((__MUL__) == RCC_PLL2_MUL12)  || ((__MUL__) == RCC_PLL2_MUL13)  || \
+                                  ((__MUL__) == RCC_PLL2_MUL14)  || ((__MUL__) == RCC_PLL2_MUL16)  || \
+                                  ((__MUL__) == RCC_PLL2_MUL20))
+
+#define IS_RCC_PERIPHCLOCK(__SELECTION__)  \
+               ((((__SELECTION__) & RCC_PERIPHCLK_RTC)  == RCC_PERIPHCLK_RTC)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_ADC)  == RCC_PERIPHCLK_ADC)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_I2S2)  == RCC_PERIPHCLK_I2S2)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_I2S3)   == RCC_PERIPHCLK_I2S3)   || \
+                (((__SELECTION__) & RCC_PERIPHCLK_USB)   == RCC_PERIPHCLK_USB))
+
+#elif defined(STM32F103xE) || defined(STM32F103xG)
+
+#define IS_RCC_I2S2CLKSOURCE(__SOURCE__) ((__SOURCE__) == RCC_I2S2CLKSOURCE_SYSCLK)
+
+#define IS_RCC_I2S3CLKSOURCE(__SOURCE__) ((__SOURCE__) == RCC_I2S3CLKSOURCE_SYSCLK)
+
+#define IS_RCC_PERIPHCLOCK(__SELECTION__)  \
+               ((((__SELECTION__) & RCC_PERIPHCLK_RTC)  == RCC_PERIPHCLK_RTC)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_ADC)  == RCC_PERIPHCLK_ADC)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_I2S2) == RCC_PERIPHCLK_I2S2)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_I2S3) == RCC_PERIPHCLK_I2S3)   || \
+                (((__SELECTION__) & RCC_PERIPHCLK_USB)  == RCC_PERIPHCLK_USB))
+
+
+#elif defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB)
+
+#define IS_RCC_PERIPHCLOCK(__SELECTION__)  \
+               ((((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB))
+
+#else
+
+#define IS_RCC_PERIPHCLOCK(__SELECTION__)  \
+               ((((__SELECTION__) & RCC_PERIPHCLK_RTC)  == RCC_PERIPHCLK_RTC)  || \
+                (((__SELECTION__) & RCC_PERIPHCLK_ADC)  == RCC_PERIPHCLK_ADC))
+
+#endif /* STM32F105xC || STM32F107xC */
+
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
+
+#define IS_RCC_USBPLLCLK_DIV(__USBCLK__) (((__USBCLK__) == RCC_USBCLKSOURCE_PLL)  || ((__USBCLK__) == RCC_USBCLKSOURCE_PLL_DIV1_5))
+
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG */
+
+/**
+  * @}
+  */
+
+/* Exported types ------------------------------------------------------------*/ 
+
+/** @defgroup RCCEx_Exported_Types RCCEx Exported Types
+  * @{
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** 
+  * @brief  RCC PLL2 configuration structure definition  
+  */
+typedef struct
+{
+  uint32_t PLL2State;     /*!< The new state of the PLL2.
+                              This parameter can be a value of @ref RCCEx_PLL2_Config */
+
+  uint32_t PLL2MUL;         /*!< PLL2MUL: Multiplication factor for PLL2 VCO input clock
+                              This parameter must be a value of @ref RCCEx_PLL2_Multiplication_Factor*/        
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  uint32_t HSEPrediv2Value;       /*!<  The Prediv2 factor value.
+                                       This parameter can be a value of @ref RCCEx_Prediv2_Factor */
+
+#endif /* STM32F105xC || STM32F107xC */
+} RCC_PLL2InitTypeDef;
+
+#endif /* STM32F105xC || STM32F107xC */
+
+/** 
+  * @brief  RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition  
+  */
+typedef struct
+{
+  uint32_t OscillatorType;       /*!< The oscillators to be configured.
+                                       This parameter can be a value of @ref RCC_Oscillator_Type */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  uint32_t Prediv1Source;       /*!<  The Prediv1 source value.
+                                       This parameter can be a value of @ref RCCEx_Prediv1_Source */
+#endif /* STM32F105xC || STM32F107xC */
+
+  uint32_t HSEState;              /*!< The new state of the HSE.
+                                       This parameter can be a value of @ref RCC_HSE_Config */
+                          
+  uint32_t HSEPredivValue;       /*!<  The Prediv1 factor value (named PREDIV1 or PLLXTPRE in RM)
+                                       This parameter can be a value of @ref RCCEx_Prediv1_Factor */
+
+  uint32_t LSEState;              /*!<  The new state of the LSE.
+                                        This parameter can be a value of @ref RCC_LSE_Config */
+                                          
+  uint32_t HSIState;              /*!< The new state of the HSI.
+                                       This parameter can be a value of @ref RCC_HSI_Config */
+
+  uint32_t HSICalibrationValue;   /*!< The HSI calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT).
+                                       This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x1F */
+                               
+  uint32_t LSIState;              /*!<  The new state of the LSI.
+                                        This parameter can be a value of @ref RCC_LSI_Config */
+
+  RCC_PLLInitTypeDef PLL;         /*!< PLL structure parameters */      
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  RCC_PLL2InitTypeDef PLL2;         /*!< PLL2 structure parameters */      
+#endif /* STM32F105xC || STM32F107xC */
+} RCC_OscInitTypeDef;
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** 
+  * @brief  RCC PLLI2S configuration structure definition  
+  */
+typedef struct
+{
+  uint32_t PLLI2SMUL;         /*!< PLLI2SMUL: Multiplication factor for PLLI2S VCO input clock
+                              This parameter must be a value of @ref RCCEx_PLLI2S_Multiplication_Factor*/        
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  uint32_t HSEPrediv2Value;       /*!<  The Prediv2 factor value.
+                                       This parameter can be a value of @ref RCCEx_Prediv2_Factor */
+
+#endif /* STM32F105xC || STM32F107xC */
+} RCC_PLLI2SInitTypeDef;
+#endif /* STM32F105xC || STM32F107xC */
+
+/** 
+  * @brief  RCC extended clocks structure definition  
+  */
+typedef struct
+{
+  uint32_t PeriphClockSelection;      /*!< The Extended Clock to be configured.
+                                       This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */
+
+  uint32_t RTCClockSelection;         /*!< specifies the RTC clock source.
+                                       This parameter can be a value of @ref RCC_RTC_Clock_Source */
+
+  uint32_t AdcClockSelection;         /*!< ADC clock source      
+                                       This parameter can be a value of @ref RCCEx_ADC_Prescaler */
+
+#if defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC)\
+ || defined(STM32F107xC)
+  uint32_t I2s2ClockSelection;         /*!< I2S2 clock source
+                                       This parameter can be a value of @ref RCCEx_I2S2_Clock_Source */
+
+  uint32_t I2s3ClockSelection;         /*!< I2S3 clock source
+                                       This parameter can be a value of @ref RCCEx_I2S3_Clock_Source */
+  
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  RCC_PLLI2SInitTypeDef PLLI2S;  /*!< PLL I2S structure parameters 
+                                      This parameter will be used only when PLLI2S is selected as Clock Source I2S2 or I2S3 */
+
+#endif /* STM32F105xC || STM32F107xC */
+#endif /* STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+  uint32_t UsbClockSelection;         /*!< USB clock source      
+                                       This parameter can be a value of @ref RCCEx_USB_Prescaler */
+
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+} RCC_PeriphCLKInitTypeDef;
+
+/**
+  * @}
+  */
+
+/* Exported constants --------------------------------------------------------*/
+
+/** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants
+  * @{
+  */
+
+/** @defgroup RCCEx_Periph_Clock_Selection Periph Clock Selection
+  * @{
+  */
+#define RCC_PERIPHCLK_RTC           ((uint32_t)0x00000001)
+#define RCC_PERIPHCLK_ADC           ((uint32_t)0x00000002)
+#if defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC)\
+ || defined(STM32F107xC)
+#define RCC_PERIPHCLK_I2S2          ((uint32_t)0x00000004)
+#define RCC_PERIPHCLK_I2S3          ((uint32_t)0x00000008)
+#endif /* STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+#define RCC_PERIPHCLK_USB          ((uint32_t)0x00000010)
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_ADC_Prescaler ADC Prescaler
+  * @{
+  */
+#define RCC_ADCPCLK2_DIV2              RCC_CFGR_ADCPRE_DIV2
+#define RCC_ADCPCLK2_DIV4              RCC_CFGR_ADCPRE_DIV4
+#define RCC_ADCPCLK2_DIV6              RCC_CFGR_ADCPRE_DIV6
+#define RCC_ADCPCLK2_DIV8              RCC_CFGR_ADCPRE_DIV8
+
+/**
+  * @}
+  */
+
+#if defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC)\
+ || defined(STM32F107xC)
+/** @defgroup RCCEx_I2S2_Clock_Source I2S2 Clock Source
+  * @{
+  */
+#define RCC_I2S2CLKSOURCE_SYSCLK              ((uint32_t)0x00000000)
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define RCC_I2S2CLKSOURCE_PLLI2S_VCO            RCC_CFGR2_I2S2SRC
+#endif /* STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_I2S3_Clock_Source I2S3 Clock Source
+  * @{
+  */
+#define RCC_I2S3CLKSOURCE_SYSCLK              ((uint32_t)0x00000000)
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define RCC_I2S3CLKSOURCE_PLLI2S_VCO            RCC_CFGR2_I2S3SRC
+#endif /* STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */
+
+#endif /* STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
+
+/** @defgroup RCCEx_USB_Prescaler USB Prescaler
+  * @{
+  */
+#define RCC_USBCLKSOURCE_PLL              RCC_CFGR_USBPRE
+#define RCC_USBCLKSOURCE_PLL_DIV1_5            ((uint32_t)0x00000000)
+
+/**
+  * @}
+  */
+
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG */
+
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** @defgroup RCCEx_USB_Prescaler USB Prescaler
+  * @{
+  */
+#define RCC_USBCLKSOURCE_PLL_DIV2              RCC_CFGR_OTGFSPRE
+#define RCC_USBCLKSOURCE_PLL_DIV3              ((uint32_t)0x00000000)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_PLLI2S_Multiplication_Factor PLLI2S Multiplication Factor
+  * @{
+  */
+
+#define RCC_PLLI2S_MUL8                   RCC_CFGR2_PLL3MUL8   /*!< PLLI2S input clock * 8 */
+#define RCC_PLLI2S_MUL9                   RCC_CFGR2_PLL3MUL9   /*!< PLLI2S input clock * 9 */
+#define RCC_PLLI2S_MUL10                  RCC_CFGR2_PLL3MUL10  /*!< PLLI2S input clock * 10 */
+#define RCC_PLLI2S_MUL11                  RCC_CFGR2_PLL3MUL11  /*!< PLLI2S input clock * 11 */
+#define RCC_PLLI2S_MUL12                  RCC_CFGR2_PLL3MUL12  /*!< PLLI2S input clock * 12 */
+#define RCC_PLLI2S_MUL13                  RCC_CFGR2_PLL3MUL13  /*!< PLLI2S input clock * 13 */
+#define RCC_PLLI2S_MUL14                  RCC_CFGR2_PLL3MUL14  /*!< PLLI2S input clock * 14 */
+#define RCC_PLLI2S_MUL16                  RCC_CFGR2_PLL3MUL16  /*!< PLLI2S input clock * 16 */
+#define RCC_PLLI2S_MUL20                  RCC_CFGR2_PLL3MUL20  /*!< PLLI2S input clock * 20 */
+
+/**
+  * @}
+  */
+#endif /* STM32F105xC || STM32F107xC */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** @defgroup RCCEx_Prediv1_Source Prediv1 Source
+  * @{
+  */
+
+#define RCC_PREDIV1_SOURCE_HSE           RCC_CFGR2_PREDIV1SRC_HSE
+#define RCC_PREDIV1_SOURCE_PLL2          RCC_CFGR2_PREDIV1SRC_PLL2
+
+/**
+  * @}
+  */
+#endif /* STM32F105xC || STM32F107xC */
+
+/** @defgroup RCCEx_Prediv1_Factor HSE Prediv1 Factor
+  * @{
+  */
+
+#define RCC_HSE_PREDIV_DIV1              ((uint32_t)0x00000000)
+
+#if defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F100xB)\
+ || defined(STM32F100xE)
+#define RCC_HSE_PREDIV_DIV2              RCC_CFGR2_PREDIV1_DIV2
+#define RCC_HSE_PREDIV_DIV3              RCC_CFGR2_PREDIV1_DIV3
+#define RCC_HSE_PREDIV_DIV4              RCC_CFGR2_PREDIV1_DIV4
+#define RCC_HSE_PREDIV_DIV5              RCC_CFGR2_PREDIV1_DIV5
+#define RCC_HSE_PREDIV_DIV6              RCC_CFGR2_PREDIV1_DIV6
+#define RCC_HSE_PREDIV_DIV7              RCC_CFGR2_PREDIV1_DIV7
+#define RCC_HSE_PREDIV_DIV8              RCC_CFGR2_PREDIV1_DIV8
+#define RCC_HSE_PREDIV_DIV9              RCC_CFGR2_PREDIV1_DIV9
+#define RCC_HSE_PREDIV_DIV10             RCC_CFGR2_PREDIV1_DIV10
+#define RCC_HSE_PREDIV_DIV11             RCC_CFGR2_PREDIV1_DIV11
+#define RCC_HSE_PREDIV_DIV12             RCC_CFGR2_PREDIV1_DIV12
+#define RCC_HSE_PREDIV_DIV13             RCC_CFGR2_PREDIV1_DIV13
+#define RCC_HSE_PREDIV_DIV14             RCC_CFGR2_PREDIV1_DIV14
+#define RCC_HSE_PREDIV_DIV15             RCC_CFGR2_PREDIV1_DIV15
+#define RCC_HSE_PREDIV_DIV16             RCC_CFGR2_PREDIV1_DIV16
+#else
+#define RCC_HSE_PREDIV_DIV2              RCC_CFGR_PLLXTPRE
+#endif /* STM32F105xC || STM32F107xC || STM32F100xB || STM32F100xE */
+
+/**
+  * @}
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** @defgroup RCCEx_Prediv2_Factor HSE Prediv2 Factor
+  * @{
+  */
+
+#define RCC_HSE_PREDIV2_DIV1                RCC_CFGR2_PREDIV2_DIV1   /*!< PREDIV2 input clock not divided */
+#define RCC_HSE_PREDIV2_DIV2                RCC_CFGR2_PREDIV2_DIV2   /*!< PREDIV2 input clock divided by 2 */
+#define RCC_HSE_PREDIV2_DIV3                RCC_CFGR2_PREDIV2_DIV3   /*!< PREDIV2 input clock divided by 3 */
+#define RCC_HSE_PREDIV2_DIV4                RCC_CFGR2_PREDIV2_DIV4   /*!< PREDIV2 input clock divided by 4 */
+#define RCC_HSE_PREDIV2_DIV5                RCC_CFGR2_PREDIV2_DIV5   /*!< PREDIV2 input clock divided by 5 */
+#define RCC_HSE_PREDIV2_DIV6                RCC_CFGR2_PREDIV2_DIV6   /*!< PREDIV2 input clock divided by 6 */
+#define RCC_HSE_PREDIV2_DIV7                RCC_CFGR2_PREDIV2_DIV7   /*!< PREDIV2 input clock divided by 7 */
+#define RCC_HSE_PREDIV2_DIV8                RCC_CFGR2_PREDIV2_DIV8   /*!< PREDIV2 input clock divided by 8 */
+#define RCC_HSE_PREDIV2_DIV9                RCC_CFGR2_PREDIV2_DIV9   /*!< PREDIV2 input clock divided by 9 */
+#define RCC_HSE_PREDIV2_DIV10               RCC_CFGR2_PREDIV2_DIV10  /*!< PREDIV2 input clock divided by 10 */
+#define RCC_HSE_PREDIV2_DIV11               RCC_CFGR2_PREDIV2_DIV11  /*!< PREDIV2 input clock divided by 11 */
+#define RCC_HSE_PREDIV2_DIV12               RCC_CFGR2_PREDIV2_DIV12  /*!< PREDIV2 input clock divided by 12 */
+#define RCC_HSE_PREDIV2_DIV13               RCC_CFGR2_PREDIV2_DIV13  /*!< PREDIV2 input clock divided by 13 */
+#define RCC_HSE_PREDIV2_DIV14               RCC_CFGR2_PREDIV2_DIV14  /*!< PREDIV2 input clock divided by 14 */
+#define RCC_HSE_PREDIV2_DIV15               RCC_CFGR2_PREDIV2_DIV15  /*!< PREDIV2 input clock divided by 15 */
+#define RCC_HSE_PREDIV2_DIV16               RCC_CFGR2_PREDIV2_DIV16  /*!< PREDIV2 input clock divided by 16 */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_PLL2_Config PLL Config
+  * @{
+  */
+#define RCC_PLL2_NONE                      ((uint32_t)0x00000000)
+#define RCC_PLL2_OFF                       ((uint32_t)0x00000001)
+#define RCC_PLL2_ON                        ((uint32_t)0x00000002)
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_PLL2_Multiplication_Factor PLL2 Multiplication Factor
+  * @{
+  */
+
+#define RCC_PLL2_MUL8                   RCC_CFGR2_PLL2MUL8   /*!< PLL2 input clock * 8 */
+#define RCC_PLL2_MUL9                   RCC_CFGR2_PLL2MUL9   /*!< PLL2 input clock * 9 */
+#define RCC_PLL2_MUL10                  RCC_CFGR2_PLL2MUL10  /*!< PLL2 input clock * 10 */
+#define RCC_PLL2_MUL11                  RCC_CFGR2_PLL2MUL11  /*!< PLL2 input clock * 11 */
+#define RCC_PLL2_MUL12                  RCC_CFGR2_PLL2MUL12  /*!< PLL2 input clock * 12 */
+#define RCC_PLL2_MUL13                  RCC_CFGR2_PLL2MUL13  /*!< PLL2 input clock * 13 */
+#define RCC_PLL2_MUL14                  RCC_CFGR2_PLL2MUL14  /*!< PLL2 input clock * 14 */
+#define RCC_PLL2_MUL16                  RCC_CFGR2_PLL2MUL16  /*!< PLL2 input clock * 16 */
+#define RCC_PLL2_MUL20                  RCC_CFGR2_PLL2MUL20  /*!< PLL2 input clock * 20 */
+
+/**
+  * @}
+  */
+
+#endif /* STM32F105xC || STM32F107xC */
+
+/** @defgroup RCCEx_PLL_Multiplication_Factor PLL Multiplication Factor
+  * @{
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#else
+#define RCC_PLL_MUL2                    RCC_CFGR_PLLMULL2
+#define RCC_PLL_MUL3                    RCC_CFGR_PLLMULL3
+#endif /* STM32F105xC || STM32F107xC */
+#define RCC_PLL_MUL4                    RCC_CFGR_PLLMULL4
+#define RCC_PLL_MUL5                    RCC_CFGR_PLLMULL5
+#define RCC_PLL_MUL6                    RCC_CFGR_PLLMULL6
+#define RCC_PLL_MUL7                    RCC_CFGR_PLLMULL7
+#define RCC_PLL_MUL8                    RCC_CFGR_PLLMULL8
+#define RCC_PLL_MUL9                    RCC_CFGR_PLLMULL9
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define RCC_PLL_MUL6_5                  RCC_CFGR_PLLMULL6_5
+#else
+#define RCC_PLL_MUL10                   RCC_CFGR_PLLMULL10
+#define RCC_PLL_MUL11                   RCC_CFGR_PLLMULL11
+#define RCC_PLL_MUL12                   RCC_CFGR_PLLMULL12
+#define RCC_PLL_MUL13                   RCC_CFGR_PLLMULL13
+#define RCC_PLL_MUL14                   RCC_CFGR_PLLMULL14
+#define RCC_PLL_MUL15                   RCC_CFGR_PLLMULL15
+#define RCC_PLL_MUL16                   RCC_CFGR_PLLMULL16
+#endif /* STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_MCO1_Clock_Source MCO1 Clock Source
+  * @{
+  */
+#define RCC_MCO1SOURCE_NOCLOCK           ((uint32_t)RCC_CFGR_MCO_NOCLOCK)
+#define RCC_MCO1SOURCE_SYSCLK            ((uint32_t)RCC_CFGR_MCO_SYSCLK)
+#define RCC_MCO1SOURCE_HSI               ((uint32_t)RCC_CFGR_MCO_HSI)
+#define RCC_MCO1SOURCE_HSE               ((uint32_t)RCC_CFGR_MCO_HSE)
+#define RCC_MCO1SOURCE_PLLCLK            ((uint32_t)RCC_CFGR_MCO_PLLCLK_DIV2)
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define RCC_MCO1SOURCE_PLL2CLK           ((uint32_t)RCC_CFGR_MCO_PLL2CLK)
+#define RCC_MCO1SOURCE_PLL3CLK_DIV2      ((uint32_t)RCC_CFGR_MCO_PLL3CLK_DIV2)
+#define RCC_MCO1SOURCE_EXT_HSE           ((uint32_t)RCC_CFGR_MCO_EXT_HSE)
+#define RCC_MCO1SOURCE_PLL3CLK           ((uint32_t)RCC_CFGR_MCO_PLL3CLK)
+#endif /* STM32F105xC || STM32F107xC*/
+/**
+  * @}
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** @defgroup RCCEx_Interrupt RCCEx Interrupt
+  * @{
+  */
+#define RCC_IT_PLL2RDY                   ((uint8_t)RCC_CIR_PLL2RDYF)
+#define RCC_IT_PLLI2SRDY                 ((uint8_t)RCC_CIR_PLL3RDYF)
+/**
+  * @}
+  */  
+
+/** @defgroup RCCEx_Flag RCCEx Flag
+  *        Elements values convention: 0XXYYYYYb
+  *           - YYYYY  : Flag position in the register
+  *           - XX  : Register index
+  *                 - 01: CR register
+  * @{
+  */
+/* Flags in the CR register */
+#define RCC_FLAG_PLL2RDY                  ((uint8_t)((CR_REG_INDEX << 5) | POSITION_VAL(RCC_CR_PLL2RDY)))
+#define RCC_FLAG_PLLI2SRDY                ((uint8_t)((CR_REG_INDEX << 5) | POSITION_VAL(RCC_CR_PLL3RDY)))
+/**
+  * @}
+  */ 
+#endif /* STM32F105xC || STM32F107xC*/
+
+/**
+  * @}
+  */
+
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros
+ * @{
+ */
+
+/** @defgroup RCCEx_Peripheral_Clock_Enable_Disable Peripheral Clock Enable Disable
+  * @brief  Enable or disable the AHB1 peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before 
+  *         using it.   
+  * @{
+  */
+
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG) || defined(STM32F105xC) || defined  (STM32F107xC)\
+ || defined  (STM32F100xE)
+#define __HAL_RCC_DMA2_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_DMA2_CLK_DISABLE()        (RCC->AHBENR &= ~(RCC_AHBENR_DMA2EN))
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG || STM32F105xC || STM32F107xC || STM32F100xE */
+
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG) || defined  (STM32F100xE)
+#define __HAL_RCC_FSMC_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_FSMC_CLK_DISABLE()        (RCC->AHBENR &= ~(RCC_AHBENR_FSMCEN))
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG || STM32F100xE */
+
+#if defined(STM32F103xE) || defined(STM32F103xG)
+#define __HAL_RCC_SDIO_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_SDIOEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_SDIOEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+
+#define __HAL_RCC_SDIO_CLK_DISABLE()        (RCC->AHBENR &= ~(RCC_AHBENR_SDIOEN))
+#endif /* STM32F103xE || STM32F103xG */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_USB_OTG_FS_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_OTGFSEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_OTGFSEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+
+#define __HAL_RCC_USB_OTG_FS_CLK_DISABLE()       (RCC->AHBENR &= ~(RCC_AHBENR_OTGFSEN))
+#endif /* STM32F105xC || STM32F107xC*/
+
+#if defined(STM32F107xC)
+#define __HAL_RCC_ETHMAC_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_ETHMACEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_ETHMACEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_ETHMACTX_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_ETHMACTXEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_ETHMACTXEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_ETHMACRX_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_ETHMACRXEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_ETHMACRXEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_ETHMAC_CLK_DISABLE()      (RCC->AHBENR &= ~(RCC_AHBENR_ETHMACEN))
+#define __HAL_RCC_ETHMACTX_CLK_DISABLE()    (RCC->AHBENR &= ~(RCC_AHBENR_ETHMACTXEN))
+#define __HAL_RCC_ETHMACRX_CLK_DISABLE()    (RCC->AHBENR &= ~(RCC_AHBENR_ETHMACRXEN))
+
+/**
+  * @brief  Enable ETHERNET clock.
+  */
+#define __HAL_RCC_ETH_CLK_ENABLE() do {                                     \
+                                        __HAL_RCC_ETHMAC_CLK_ENABLE();      \
+                                        __HAL_RCC_ETHMACTX_CLK_ENABLE();    \
+                                        __HAL_RCC_ETHMACRX_CLK_ENABLE();    \
+                                      } while(0)
+/**
+  * @brief  Disable ETHERNET clock.
+  */
+#define __HAL_RCC_ETH_CLK_DISABLE()  do {                                      \
+                                          __HAL_RCC_ETHMACTX_CLK_DISABLE();    \
+                                          __HAL_RCC_ETHMACRX_CLK_DISABLE();    \
+                                          __HAL_RCC_ETHMAC_CLK_DISABLE();      \
+                                        } while(0)
+                                     
+#endif /* STM32F107xC*/
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_AHB1_Peripheral_Clock_Enable_Disable_Status AHB1 Peripheral Clock Enable Disable Status
+  * @brief  Get the enable or disable status of the AHB1 peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before
+  *         using it.
+  * @{
+  */
+
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG) || defined(STM32F105xC) || defined  (STM32F107xC)\
+ || defined  (STM32F100xE)
+#define __HAL_RCC_DMA2_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_DMA2EN)) != RESET)
+#define __HAL_RCC_DMA2_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_DMA2EN)) == RESET)
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG || STM32F105xC || STM32F107xC || STM32F100xE */
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG) || defined  (STM32F100xE)
+#define __HAL_RCC_FSMC_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_FSMCEN)) != RESET)
+#define __HAL_RCC_FSMC_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_FSMCEN)) == RESET)
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG || STM32F100xE */
+#if defined(STM32F103xE) || defined(STM32F103xG)
+#define __HAL_RCC_SDIO_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_SDIOEN)) != RESET)
+#define __HAL_RCC_SDIO_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_SDIOEN)) == RESET)
+#endif /* STM32F103xE || STM32F103xG */
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_USB_OTG_FS_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_OTGFSEN)) != RESET)
+#define __HAL_RCC_USB_OTG_FS_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_OTGFSEN)) == RESET)
+#endif /* STM32F105xC || STM32F107xC*/
+#if defined(STM32F107xC)
+#define __HAL_RCC_ETHMAC_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_ETHMACEN)) != RESET)
+#define __HAL_RCC_ETHMAC_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_ETHMACEN)) == RESET)
+#define __HAL_RCC_ETHMACTX_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_ETHMACTXEN)) != RESET)
+#define __HAL_RCC_ETHMACTX_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_ETHMACTXEN)) == RESET)
+#define __HAL_RCC_ETHMACRX_IS_CLK_ENABLED()       ((RCC->AHBENR & (RCC_AHBENR_ETHMACRXEN)) != RESET)
+#define __HAL_RCC_ETHMACRX_IS_CLK_DISABLED()      ((RCC->AHBENR & (RCC_AHBENR_ETHMACRXEN)) == RESET)
+#endif /* STM32F107xC*/
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_APB1_Clock_Enable_Disable APB1 Clock Enable Disable
+  * @brief  Enable or disable the Low Speed APB (APB1) peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before 
+  *         using it. 
+  * @{   
+  */
+
+#if defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE)\
+ || defined(STM32F103xG) || defined(STM32F105xC) ||defined(STM32F107xC)
+#define __HAL_RCC_CAN1_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN1EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN1EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_CAN1_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_CAN1EN))
+#endif /* STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F100xB) || defined(STM32F100xE) || defined(STM32F101xB)\
+ || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F102xB)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_TIM4_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM4EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM4EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_SPI2_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_USART3_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_I2C2_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM4_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM4EN))
+#define __HAL_RCC_SPI2_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI2EN))
+#define __HAL_RCC_USART3_CLK_DISABLE()      (RCC->APB1ENR &= ~(RCC_APB1ENR_USART3EN))
+#define __HAL_RCC_I2C2_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C2EN))
+#endif /* STM32F100xB || STM32F101xB || STM32F101xE || (...) || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
+#define __HAL_RCC_USB_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USBEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USBEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_USB_CLK_DISABLE()         (RCC->APB1ENR &= ~(RCC_APB1ENR_USBEN))
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG */
+
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG) || defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_TIM5_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM6_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM7_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_SPI3_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_UART4_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_UART5_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_DAC_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM5_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM5EN))
+#define __HAL_RCC_TIM6_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM6EN))
+#define __HAL_RCC_TIM7_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM7EN))
+#define __HAL_RCC_SPI3_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI3EN))
+#define __HAL_RCC_UART4_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_UART4EN))
+#define __HAL_RCC_UART5_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_UART5EN))
+#define __HAL_RCC_DAC_CLK_DISABLE()         (RCC->APB1ENR &= ~(RCC_APB1ENR_DACEN))
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || (...) || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F100xB) || defined  (STM32F100xE)
+#define __HAL_RCC_TIM6_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM7_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_DAC_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_CEC_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CECEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CECEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM6_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM6EN))
+#define __HAL_RCC_TIM7_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM7EN))
+#define __HAL_RCC_DAC_CLK_DISABLE()         (RCC->APB1ENR &= ~(RCC_APB1ENR_DACEN))
+#define __HAL_RCC_CEC_CLK_DISABLE()         (RCC->APB1ENR &= ~(RCC_APB1ENR_CECEN))
+#endif /* STM32F100xB || STM32F100xE */
+
+#ifdef STM32F100xE
+#define __HAL_RCC_TIM5_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM12_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM12EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM12EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM13_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM13EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM13EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM14_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_SPI3_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_UART4_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_UART5_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM5_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM5EN))
+#define __HAL_RCC_TIM12_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM12EN))
+#define __HAL_RCC_TIM13_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM13EN))
+#define __HAL_RCC_TIM14_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM14EN))
+#define __HAL_RCC_SPI3_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI3EN))
+#define __HAL_RCC_UART4_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_UART4EN))
+#define __HAL_RCC_UART5_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_UART5EN))
+#endif /* STM32F100xE */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_CAN2_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN2EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN2EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_CAN2_CLK_DISABLE()        (RCC->APB1ENR &= ~(RCC_APB1ENR_CAN2EN))
+#endif /* STM32F105xC || STM32F107xC */
+
+#if defined(STM32F101xG) || defined(STM32F103xG)
+#define __HAL_RCC_TIM12_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM12EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM12EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM13_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM13EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM13EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM14_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM12_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM12EN))
+#define __HAL_RCC_TIM13_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM13EN))
+#define __HAL_RCC_TIM14_CLK_DISABLE()       (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM14EN))
+#endif /* STM32F101xG || STM32F103xG*/
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_APB1_Peripheral_Clock_Enable_Disable_Status APB1 Peripheral Clock Enable Disable Status
+  * @brief  Get the enable or disable status of the APB1 peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before
+  *         using it.
+  * @{
+  */
+
+#if defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE)\
+ || defined(STM32F103xG) || defined(STM32F105xC) ||defined(STM32F107xC)
+#define __HAL_RCC_CAN1_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_CAN1EN)) != RESET)
+#define __HAL_RCC_CAN1_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_CAN1EN)) == RESET)
+#endif /* STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+#if defined(STM32F100xB) || defined(STM32F100xE) || defined(STM32F101xB)\
+ || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F102xB)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_TIM4_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM4EN)) != RESET)
+#define __HAL_RCC_TIM4_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM4EN)) == RESET)
+#define __HAL_RCC_SPI2_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_SPI2EN)) != RESET)
+#define __HAL_RCC_SPI2_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_SPI2EN)) == RESET)
+#define __HAL_RCC_USART3_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_USART3EN)) != RESET)
+#define __HAL_RCC_USART3_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_USART3EN)) == RESET)
+#define __HAL_RCC_I2C2_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_I2C2EN)) != RESET)
+#define __HAL_RCC_I2C2_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_I2C2EN)) == RESET)
+#endif /* STM32F100xB || STM32F101xB || STM32F101xE || (...) || STM32F105xC || STM32F107xC */
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
+#define __HAL_RCC_USB_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_USBEN)) != RESET)
+#define __HAL_RCC_USB_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_USBEN)) == RESET)
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG */
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG) || defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_TIM5_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) != RESET)
+#define __HAL_RCC_TIM5_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) == RESET)
+#define __HAL_RCC_TIM6_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) != RESET)
+#define __HAL_RCC_TIM6_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) == RESET)
+#define __HAL_RCC_TIM7_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) != RESET)
+#define __HAL_RCC_TIM7_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) == RESET)
+#define __HAL_RCC_SPI3_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) != RESET)
+#define __HAL_RCC_SPI3_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) == RESET)
+#define __HAL_RCC_UART4_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) != RESET)
+#define __HAL_RCC_UART4_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) == RESET)
+#define __HAL_RCC_UART5_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) != RESET)
+#define __HAL_RCC_UART5_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) == RESET)
+#define __HAL_RCC_DAC_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) != RESET)
+#define __HAL_RCC_DAC_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) == RESET)
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || (...) || STM32F105xC || STM32F107xC */
+#if defined(STM32F100xB) || defined  (STM32F100xE)
+#define __HAL_RCC_TIM6_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) != RESET)
+#define __HAL_RCC_TIM6_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) == RESET)
+#define __HAL_RCC_TIM7_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) != RESET)
+#define __HAL_RCC_TIM7_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) == RESET)
+#define __HAL_RCC_DAC_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) != RESET)
+#define __HAL_RCC_DAC_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) == RESET)
+#define __HAL_RCC_CEC_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_CECEN)) != RESET)
+#define __HAL_RCC_CEC_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_CECEN)) == RESET)
+#endif /* STM32F100xB || STM32F100xE */
+#ifdef STM32F100xE
+#define __HAL_RCC_TIM5_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) != RESET)
+#define __HAL_RCC_TIM5_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) == RESET)
+#define __HAL_RCC_TIM12_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM12EN)) != RESET)
+#define __HAL_RCC_TIM12_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM12EN)) == RESET)
+#define __HAL_RCC_TIM13_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM13EN)) != RESET)
+#define __HAL_RCC_TIM13_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM13EN)) == RESET)
+#define __HAL_RCC_TIM14_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM14EN)) != RESET)
+#define __HAL_RCC_TIM14_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM14EN)) == RESET)
+#define __HAL_RCC_SPI3_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) != RESET)
+#define __HAL_RCC_SPI3_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) == RESET)
+#define __HAL_RCC_UART4_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) != RESET)
+#define __HAL_RCC_UART4_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) == RESET)
+#define __HAL_RCC_UART5_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) != RESET)
+#define __HAL_RCC_UART5_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) == RESET)
+#define __HAL_RCC_CAN2_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_CAN2EN)) != RESET)
+#define __HAL_RCC_CAN2_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_CAN2EN)) == RESET)
+#endif /* STM32F100xE */
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_TIM12_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM12EN)) != RESET)
+#define __HAL_RCC_TIM12_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM12EN)) == RESET)
+#endif /* STM32F105xC || STM32F107xC */
+#if defined(STM32F101xG) || defined(STM32F103xG)
+#define __HAL_RCC_TIM13_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM13EN)) != RESET)
+#define __HAL_RCC_TIM13_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM13EN)) == RESET)
+#define __HAL_RCC_TIM14_IS_CLK_ENABLED()       ((RCC->APB1ENR & (RCC_APB1ENR_TIM14EN)) != RESET)
+#define __HAL_RCC_TIM14_IS_CLK_DISABLED()      ((RCC->APB1ENR & (RCC_APB1ENR_TIM14EN)) == RESET)
+#endif /* STM32F101xG || STM32F103xG*/
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_APB2_Clock_Enable_Disable APB2 Clock Enable Disable
+  * @brief  Enable or disable the High Speed APB (APB2) peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before 
+  *         using it.
+  * @{   
+  */
+
+#if defined(STM32F101xG) || defined(STM32F103x6) || defined(STM32F103xB)\
+ || defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F103xE)\
+ || defined(STM32F103xG)
+#define __HAL_RCC_ADC2_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC2EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC2EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_ADC2_CLK_DISABLE()        (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC2EN))
+#endif /* STM32F101xG || STM32F103x6 || STM32F103xB || STM32F105xC || STM32F107xC || STM32F103xE || STM32F103xG */
+
+#if defined(STM32F100xB) || defined(STM32F100xE)
+#define __HAL_RCC_TIM15_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM16_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM17_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM15_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM15EN))
+#define __HAL_RCC_TIM16_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM16EN))
+#define __HAL_RCC_TIM17_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM17EN))
+#endif /* STM32F100xB || STM32F100xE */
+
+#if defined(STM32F100xE) || defined(STM32F101xB) || defined(STM32F101xE)\
+ || defined(STM32F101xG) || defined(STM32F100xB) || defined(STM32F103xB)\
+ || defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC)\
+ || defined(STM32F107xC)
+#define __HAL_RCC_GPIOE_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPEEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPEEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOE_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPEEN))
+#endif /* STM32F101x6 || STM32F101xB || STM32F101xE || (...) || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG)
+#define __HAL_RCC_GPIOF_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPFEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPFEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOG_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPGEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPGEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOF_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPFEN))
+#define __HAL_RCC_GPIOG_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPGEN))
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG*/
+
+#if defined(STM32F103xE) || defined(STM32F103xG)
+#define __HAL_RCC_TIM8_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_ADC3_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC3EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC3EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM8_CLK_DISABLE()        (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM8EN))
+#define __HAL_RCC_ADC3_CLK_DISABLE()        (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC3EN))
+#endif /* STM32F103xE || STM32F103xG */
+
+#if defined(STM32F100xE)
+#define __HAL_RCC_GPIOF_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPFEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPFEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOG_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPGEN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPGEN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_GPIOF_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPFEN))
+#define __HAL_RCC_GPIOG_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_IOPGEN))
+#endif /* STM32F100xE */
+
+#if defined(STM32F101xG) || defined(STM32F103xG)
+#define __HAL_RCC_TIM9_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM9EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM9EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM10_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM10EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM10EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM11_CLK_ENABLE()   do { \
+                                        __IO uint32_t tmpreg; \
+                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM11EN);\
+                                        /* Delay after an RCC peripheral clock enabling */ \
+                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM11EN);\
+                                        UNUSED(tmpreg); \
+                                      } while(0)
+
+#define __HAL_RCC_TIM9_CLK_DISABLE()        (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM9EN))
+#define __HAL_RCC_TIM10_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM10EN))
+#define __HAL_RCC_TIM11_CLK_DISABLE()       (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM11EN))
+#endif /* STM32F101xG || STM32F103xG */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_APB2_Peripheral_Clock_Enable_Disable_Status APB2 Peripheral Clock Enable Disable Status
+  * @brief  Get the enable or disable status of the APB2 peripheral clock.
+  * @note   After reset, the peripheral clock (used for registers read/write access)
+  *         is disabled and the application software has to enable this clock before
+  *         using it.
+  * @{
+  */
+
+#if defined(STM32F101xG) || defined(STM32F103x6) || defined(STM32F103xB)\
+ || defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F103xE)\
+ || defined(STM32F103xG)
+#define __HAL_RCC_ADC2_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_ADC2EN)) != RESET)
+#define __HAL_RCC_ADC2_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_ADC2EN)) == RESET)
+#endif /* STM32F101xG || STM32F103x6 || STM32F103xB || STM32F105xC || STM32F107xC || STM32F103xE || STM32F103xG */
+#if defined(STM32F100xB) || defined(STM32F100xE)
+#define __HAL_RCC_TIM15_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_TIM15EN)) != RESET)
+#define __HAL_RCC_TIM15_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_TIM15EN)) == RESET)
+#define __HAL_RCC_TIM16_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_TIM16EN)) != RESET)
+#define __HAL_RCC_TIM16_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_TIM16EN)) == RESET)
+#define __HAL_RCC_TIM17_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_TIM17EN)) != RESET)
+#define __HAL_RCC_TIM17_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_TIM17EN)) == RESET)
+#endif /* STM32F100xB || STM32F100xE */
+#if defined(STM32F100xE) || defined(STM32F101xB) || defined(STM32F101xE)\
+ || defined(STM32F101xG) || defined(STM32F100xB) || defined(STM32F103xB)\
+ || defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC)\
+ || defined(STM32F107xC)
+#define __HAL_RCC_GPIOE_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPEEN)) != RESET)
+#define __HAL_RCC_GPIOE_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPEEN)) == RESET)
+#endif /* STM32F101x6 || STM32F101xB || STM32F101xE || (...) || STM32F105xC || STM32F107xC */
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG)
+#define __HAL_RCC_GPIOF_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPFEN)) != RESET)
+#define __HAL_RCC_GPIOF_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPFEN)) == RESET)
+#define __HAL_RCC_GPIOG_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPGEN)) != RESET)
+#define __HAL_RCC_GPIOG_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPGEN)) == RESET)
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG*/
+#if defined(STM32F103xE) || defined(STM32F103xG)
+#define __HAL_RCC_TIM8_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_TIM8EN)) != RESET)
+#define __HAL_RCC_TIM8_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_TIM8EN)) == RESET)
+#define __HAL_RCC_ADC3_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_ADC3EN)) != RESET)
+#define __HAL_RCC_ADC3_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_ADC3EN)) == RESET)
+#endif /* STM32F103xE || STM32F103xG */
+#if defined(STM32F100xE)
+#define __HAL_RCC_GPIOF_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPFEN)) != RESET)
+#define __HAL_RCC_GPIOF_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPFEN)) == RESET)
+#define __HAL_RCC_GPIOG_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_IOPGEN)) != RESET)
+#define __HAL_RCC_GPIOG_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_IOPGEN)) == RESET)
+#endif /* STM32F100xE */
+#if defined(STM32F101xG) || defined(STM32F103xG)
+#define __HAL_RCC_TIM9_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_TIM9EN)) != RESET)
+#define __HAL_RCC_TIM9_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_TIM9EN)) == RESET)
+#define __HAL_RCC_TIM10_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_TIM10EN)) != RESET)
+#define __HAL_RCC_TIM10_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_TIM10EN)) == RESET)
+#define __HAL_RCC_TIM11_IS_CLK_ENABLED()       ((RCC->APB2ENR & (RCC_APB2ENR_TIM11EN)) != RESET)
+#define __HAL_RCC_TIM11_IS_CLK_DISABLED()      ((RCC->APB2ENR & (RCC_APB2ENR_TIM11EN)) == RESET)
+#endif /* STM32F101xG || STM32F103xG */
+
+/**
+  * @}
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** @defgroup RCCEx_Peripheral_Clock_Force_Release Peripheral Clock Force Release
+  * @brief  Force or release AHB peripheral reset.
+  * @{
+  */  
+#define __HAL_RCC_AHB_FORCE_RESET()         (RCC->AHBRSTR = 0xFFFFFFFFU)
+#define __HAL_RCC_USB_OTG_FS_FORCE_RESET()       (RCC->AHBRSTR |= (RCC_AHBRSTR_OTGFSRST))
+#if defined(STM32F107xC)
+#define __HAL_RCC_ETHMAC_FORCE_RESET()      (RCC->AHBRSTR |= (RCC_AHBRSTR_ETHMACRST))
+#endif /* STM32F107xC */
+
+#define __HAL_RCC_AHB_RELEASE_RESET()       (RCC->AHBRSTR = 0x00)
+#define __HAL_RCC_USB_OTG_FS_RELEASE_RESET()     (RCC->AHBRSTR &= ~(RCC_AHBRSTR_OTGFSRST))
+#if defined(STM32F107xC)
+#define __HAL_RCC_ETHMAC_RELEASE_RESET()    (RCC->AHBRSTR &= ~(RCC_AHBRSTR_ETHMACRST))
+#endif /* STM32F107xC */
+
+/**
+  * @}
+  */
+#endif /* STM32F105xC || STM32F107xC */
+
+/** @defgroup RCCEx_APB1_Force_Release_Reset APB1 Force Release Reset
+  * @brief  Force or release APB1 peripheral reset.
+  * @{   
+  */
+
+#if defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE)\
+ || defined(STM32F103xG) || defined(STM32F105xC) ||defined(STM32F107xC)
+#define __HAL_RCC_CAN1_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_CAN1RST))
+
+#define __HAL_RCC_CAN1_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CAN1RST))
+#endif /* STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F100xB) || defined(STM32F100xE) || defined(STM32F101xB)\
+ || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F102xB)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_TIM4_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM4RST))
+#define __HAL_RCC_SPI2_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI2RST))
+#define __HAL_RCC_USART3_FORCE_RESET()      (RCC->APB1RSTR |= (RCC_APB1RSTR_USART3RST))
+#define __HAL_RCC_I2C2_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C2RST))
+
+#define __HAL_RCC_TIM4_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM4RST))
+#define __HAL_RCC_SPI2_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI2RST))
+#define __HAL_RCC_USART3_RELEASE_RESET()    (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USART3RST))
+#define __HAL_RCC_I2C2_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C2RST))
+#endif /* STM32F100xB || STM32F101xB || STM32F101xE || (...) || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
+#define __HAL_RCC_USB_FORCE_RESET()         (RCC->APB1RSTR |= (RCC_APB1RSTR_USBRST))
+#define __HAL_RCC_USB_RELEASE_RESET()       (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USBRST))
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG */
+
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG) || defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_TIM5_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM5RST))
+#define __HAL_RCC_TIM6_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST))
+#define __HAL_RCC_TIM7_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM7RST))
+#define __HAL_RCC_SPI3_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI3RST))
+#define __HAL_RCC_UART4_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_UART4RST))
+#define __HAL_RCC_UART5_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_UART5RST))
+#define __HAL_RCC_DAC_FORCE_RESET()         (RCC->APB1RSTR |= (RCC_APB1RSTR_DACRST))
+
+#define __HAL_RCC_TIM5_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM5RST))
+#define __HAL_RCC_TIM6_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM6RST))
+#define __HAL_RCC_TIM7_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM7RST))
+#define __HAL_RCC_SPI3_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI3RST))
+#define __HAL_RCC_UART4_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART4RST))
+#define __HAL_RCC_UART5_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART5RST))
+#define __HAL_RCC_DAC_RELEASE_RESET()       (RCC->APB1RSTR &= ~(RCC_APB1RSTR_DACRST))
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || (...) || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F100xB) || defined  (STM32F100xE)
+#define __HAL_RCC_TIM6_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST))
+#define __HAL_RCC_TIM7_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM7RST))
+#define __HAL_RCC_DAC_FORCE_RESET()         (RCC->APB1RSTR |= (RCC_APB1RSTR_DACRST))
+#define __HAL_RCC_CEC_FORCE_RESET()         (RCC->APB1RSTR |= (RCC_APB1RSTR_CECRST))
+
+#define __HAL_RCC_TIM6_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM6RST))
+#define __HAL_RCC_TIM7_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM7RST))
+#define __HAL_RCC_DAC_RELEASE_RESET()       (RCC->APB1RSTR &= ~(RCC_APB1RSTR_DACRST))
+#define __HAL_RCC_CEC_RELEASE_RESET()       (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CECRST))
+#endif /* STM32F100xB || STM32F100xE */
+
+#if defined  (STM32F100xE)
+#define __HAL_RCC_TIM5_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM5RST))
+#define __HAL_RCC_TIM12_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM12RST))
+#define __HAL_RCC_TIM13_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM13RST))
+#define __HAL_RCC_TIM14_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM14RST))
+#define __HAL_RCC_SPI3_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI3RST))
+#define __HAL_RCC_UART4_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_UART4RST))
+#define __HAL_RCC_UART5_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_UART5RST))
+
+#define __HAL_RCC_TIM5_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM5RST))
+#define __HAL_RCC_TIM12_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM12RST))
+#define __HAL_RCC_TIM13_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM13RST))
+#define __HAL_RCC_TIM14_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM14RST))
+#define __HAL_RCC_SPI3_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI3RST))
+#define __HAL_RCC_UART4_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART4RST))
+#define __HAL_RCC_UART5_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART5RST))
+#endif /* STM32F100xE */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+#define __HAL_RCC_CAN2_FORCE_RESET()        (RCC->APB1RSTR |= (RCC_APB1RSTR_CAN2RST))
+
+#define __HAL_RCC_CAN2_RELEASE_RESET()      (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CAN2RST))
+#endif /* STM32F105xC || STM32F107xC */
+
+#if defined(STM32F101xG) || defined(STM32F103xG)
+#define __HAL_RCC_TIM12_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM12RST))
+#define __HAL_RCC_TIM13_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM13RST))
+#define __HAL_RCC_TIM14_FORCE_RESET()       (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM14RST))
+
+#define __HAL_RCC_TIM12_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM12RST))
+#define __HAL_RCC_TIM13_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM13RST))
+#define __HAL_RCC_TIM14_RELEASE_RESET()     (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM14RST))
+#endif /* STM32F101xG || STM32F103xG */
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_APB2_Force_Release_Reset APB2 Force Release Reset
+  * @brief  Force or release APB2 peripheral reset.
+  * @{   
+  */
+
+#if defined(STM32F101xG) || defined(STM32F103x6) || defined(STM32F103xB)\
+ || defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F103xE)\
+ || defined(STM32F103xG)
+#define __HAL_RCC_ADC2_FORCE_RESET()        (RCC->APB2RSTR |= (RCC_APB2RSTR_ADC2RST))
+
+#define __HAL_RCC_ADC2_RELEASE_RESET()      (RCC->APB2RSTR &= ~(RCC_APB2RSTR_ADC2RST))
+#endif /* STM32F101xG || STM32F103x6 || STM32F103xB || STM32F105xC || STM32F107xC || STM32F103xE || STM32F103xG */
+
+#if defined(STM32F100xB) || defined(STM32F100xE)
+#define __HAL_RCC_TIM15_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM15RST))
+#define __HAL_RCC_TIM16_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM16RST))
+#define __HAL_RCC_TIM17_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM17RST))
+
+#define __HAL_RCC_TIM15_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM15RST))
+#define __HAL_RCC_TIM16_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM16RST))
+#define __HAL_RCC_TIM17_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM17RST))
+#endif /* STM32F100xB || STM32F100xE */
+
+#if defined(STM32F100xE) || defined(STM32F101xB) || defined(STM32F101xE)\
+ || defined(STM32F101xG) || defined(STM32F100xB) || defined(STM32F103xB)\
+ || defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC)\
+ || defined(STM32F107xC)
+#define __HAL_RCC_GPIOE_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPERST))
+
+#define __HAL_RCC_GPIOE_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPERST))
+#endif /* STM32F101x6 || STM32F101xB || STM32F101xE || (...) || STM32F105xC || STM32F107xC */
+
+#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG)\
+ || defined(STM32F103xG)
+#define __HAL_RCC_GPIOF_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPFRST))
+#define __HAL_RCC_GPIOG_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPGRST))
+
+#define __HAL_RCC_GPIOF_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPFRST))
+#define __HAL_RCC_GPIOG_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPGRST))
+#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG*/
+
+#if defined(STM32F103xE) || defined(STM32F103xG)
+#define __HAL_RCC_TIM8_FORCE_RESET()        (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM8RST))
+#define __HAL_RCC_ADC3_FORCE_RESET()        (RCC->APB2RSTR |= (RCC_APB2RSTR_ADC3RST))
+
+#define __HAL_RCC_TIM8_RELEASE_RESET()      (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM8RST))
+#define __HAL_RCC_ADC3_RELEASE_RESET()      (RCC->APB2RSTR &= ~(RCC_APB2RSTR_ADC3RST))
+#endif /* STM32F103xE || STM32F103xG */
+
+#if defined(STM32F100xE)
+#define __HAL_RCC_GPIOF_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPFRST))
+#define __HAL_RCC_GPIOG_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_IOPGRST))
+
+#define __HAL_RCC_GPIOF_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPFRST))
+#define __HAL_RCC_GPIOG_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_IOPGRST))
+#endif /* STM32F100xE */
+
+#if defined(STM32F101xG) || defined(STM32F103xG)
+#define __HAL_RCC_TIM9_FORCE_RESET()        (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM9RST))
+#define __HAL_RCC_TIM10_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM10RST))
+#define __HAL_RCC_TIM11_FORCE_RESET()       (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM11RST))
+
+#define __HAL_RCC_TIM9_RELEASE_RESET()      (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM9RST))
+#define __HAL_RCC_TIM10_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM10RST))
+#define __HAL_RCC_TIM11_RELEASE_RESET()     (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM11RST))
+#endif /* STM32F101xG || STM32F103xG*/
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_HSE_Configuration HSE Configuration
+  * @{   
+  */ 
+
+#if defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F100xB)\
+ || defined(STM32F100xE)
+/**
+  * @brief  Macro to configure the External High Speed oscillator (HSE) Predivision factor for PLL.
+  * @note   Predivision factor can not be changed if PLL is used as system clock
+  *         In this case, you have to select another source of the system clock, disable the PLL and
+  *         then change the HSE predivision factor.
+  * @param  __HSE_PREDIV_VALUE__ specifies the division value applied to HSE.
+  *         This parameter must be a number between RCC_HSE_PREDIV_DIV1 and RCC_HSE_PREDIV_DIV16.
+  */
+#define __HAL_RCC_HSE_PREDIV_CONFIG(__HSE_PREDIV_VALUE__) MODIFY_REG(RCC->CFGR2, RCC_CFGR2_PREDIV1, (uint32_t)(__HSE_PREDIV_VALUE__))
+#else
+/**
+  * @brief  Macro to configure the External High Speed oscillator (HSE) Predivision factor for PLL.
+  * @note   Predivision factor can not be changed if PLL is used as system clock
+  *         In this case, you have to select another source of the system clock, disable the PLL and
+  *         then change the HSE predivision factor.
+  * @param  __HSE_PREDIV_VALUE__ specifies the division value applied to HSE.
+  *         This parameter must be a number between RCC_HSE_PREDIV_DIV1 and RCC_HSE_PREDIV_DIV2.
+  */
+#define __HAL_RCC_HSE_PREDIV_CONFIG(__HSE_PREDIV_VALUE__) \
+                  MODIFY_REG(RCC->CFGR,RCC_CFGR_PLLXTPRE, (uint32_t)(__HSE_PREDIV_VALUE__))
+
+#endif /* STM32F105xC || STM32F107xC */
+
+#if defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F100xB)\
+ || defined(STM32F100xE)
+/**
+  * @brief  Macro to get prediv1 factor for PLL.
+  */
+#define __HAL_RCC_HSE_GET_PREDIV() READ_BIT(RCC->CFGR2, RCC_CFGR2_PREDIV1)
+
+#else
+/**
+  * @brief  Macro to get prediv1 factor for PLL.
+  */
+#define __HAL_RCC_HSE_GET_PREDIV() READ_BIT(RCC->CFGR, RCC_CFGR_PLLXTPRE)
+
+#endif /* STM32F105xC || STM32F107xC || STM32F100xB || STM32F100xE */
+
+/**
+  * @}
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** @defgroup RCCEx_PLLI2S_Configuration PLLI2S Configuration
+  * @{   
+  */ 
+
+/** @brief Macros to enable the main PLLI2S.
+  * @note   After enabling the main PLLI2S, the application software should wait on 
+  *         PLLI2SRDY flag to be set indicating that PLLI2S clock is stable and can
+  *         be used as system clock source.
+  * @note   The main PLLI2S is disabled by hardware when entering STOP and STANDBY modes.
+  */
+#define __HAL_RCC_PLLI2S_ENABLE()          (*(__IO uint32_t *) RCC_CR_PLLI2SON_BB = ENABLE)
+
+/** @brief Macros to disable the main PLLI2S.
+  * @note   The main PLLI2S is disabled by hardware when entering STOP and STANDBY modes.
+  */
+#define __HAL_RCC_PLLI2S_DISABLE()         (*(__IO uint32_t *) RCC_CR_PLLI2SON_BB = DISABLE)
+
+/** @brief macros to configure the main PLLI2S multiplication factor.
+  * @note   This function must be used only when the main PLLI2S is disabled.
+  *  
+  * @param  __PLLI2SMUL__ specifies the multiplication factor for PLLI2S VCO output clock
+  *          This parameter can be one of the following values:
+  *             @arg @ref RCC_PLLI2S_MUL8 PLLI2SVCO = PLLI2S clock entry x 8
+  *             @arg @ref RCC_PLLI2S_MUL9 PLLI2SVCO = PLLI2S clock entry x 9
+  *             @arg @ref RCC_PLLI2S_MUL10 PLLI2SVCO = PLLI2S clock entry x 10
+  *             @arg @ref RCC_PLLI2S_MUL11 PLLI2SVCO = PLLI2S clock entry x 11
+  *             @arg @ref RCC_PLLI2S_MUL12 PLLI2SVCO = PLLI2S clock entry x 12
+  *             @arg @ref RCC_PLLI2S_MUL13 PLLI2SVCO = PLLI2S clock entry x 13
+  *             @arg @ref RCC_PLLI2S_MUL14 PLLI2SVCO = PLLI2S clock entry x 14
+  *             @arg @ref RCC_PLLI2S_MUL16 PLLI2SVCO = PLLI2S clock entry x 16
+  *             @arg @ref RCC_PLLI2S_MUL20 PLLI2SVCO = PLLI2S clock entry x 20
+  *   
+  */
+#define __HAL_RCC_PLLI2S_CONFIG(__PLLI2SMUL__)\
+          MODIFY_REG(RCC->CFGR2, RCC_CFGR2_PLL3MUL,(__PLLI2SMUL__))
+
+/**
+  * @}
+  */
+
+#endif /* STM32F105xC || STM32F107xC */
+
+/** @defgroup RCCEx_Peripheral_Configuration Peripheral Configuration
+  * @brief  Macros to configure clock source of different peripherals.
+  * @{
+  */  
+
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
+/** @brief  Macro to configure the USB clock.
+  * @param  __USBCLKSOURCE__ specifies the USB clock source.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_USBCLKSOURCE_PLL PLL clock divided by 1 selected as USB clock
+  *            @arg @ref RCC_USBCLKSOURCE_PLL_DIV1_5 PLL clock divided by 1.5 selected as USB clock
+  */
+#define __HAL_RCC_USB_CONFIG(__USBCLKSOURCE__) \
+                  MODIFY_REG(RCC->CFGR, RCC_CFGR_USBPRE, (uint32_t)(__USBCLKSOURCE__))
+
+/** @brief  Macro to get the USB clock (USBCLK).
+  * @retval The clock source can be one of the following values:
+  *            @arg @ref RCC_USBCLKSOURCE_PLL PLL clock divided by 1 selected as USB clock
+  *            @arg @ref RCC_USBCLKSOURCE_PLL_DIV1_5 PLL clock divided by 1.5 selected as USB clock
+  */
+#define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_USBPRE)))
+
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+
+/** @brief  Macro to configure the USB OTSclock.
+  * @param  __USBCLKSOURCE__ specifies the USB clock source.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_USBCLKSOURCE_PLL_DIV2 PLL clock divided by 2 selected as USB OTG FS clock
+  *            @arg @ref RCC_USBCLKSOURCE_PLL_DIV3 PLL clock divided by 3 selected as USB OTG FS clock
+  */
+#define __HAL_RCC_USB_CONFIG(__USBCLKSOURCE__) \
+                  MODIFY_REG(RCC->CFGR, RCC_CFGR_OTGFSPRE, (uint32_t)(__USBCLKSOURCE__))
+
+/** @brief  Macro to get the USB clock (USBCLK).
+  * @retval The clock source can be one of the following values:
+  *            @arg @ref RCC_USBCLKSOURCE_PLL_DIV2 PLL clock divided by 2 selected as USB OTG FS clock
+  *            @arg @ref RCC_USBCLKSOURCE_PLL_DIV3 PLL clock divided by 3 selected as USB OTG FS clock
+  */
+#define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_OTGFSPRE)))
+
+#endif /* STM32F105xC || STM32F107xC */
+
+/** @brief  Macro to configure the ADCx clock (x=1 to 3 depending on devices).
+  * @param  __ADCCLKSOURCE__ specifies the ADC clock source.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_ADCPCLK2_DIV2 PCLK2 clock divided by 2 selected as ADC clock
+  *            @arg @ref RCC_ADCPCLK2_DIV4 PCLK2 clock divided by 4 selected as ADC clock
+  *            @arg @ref RCC_ADCPCLK2_DIV6 PCLK2 clock divided by 6 selected as ADC clock
+  *            @arg @ref RCC_ADCPCLK2_DIV8 PCLK2 clock divided by 8 selected as ADC clock
+  */
+#define __HAL_RCC_ADC_CONFIG(__ADCCLKSOURCE__) \
+                  MODIFY_REG(RCC->CFGR, RCC_CFGR_ADCPRE, (uint32_t)(__ADCCLKSOURCE__))
+
+/** @brief  Macro to get the ADC clock (ADCxCLK, x=1 to 3 depending on devices).
+  * @retval The clock source can be one of the following values:
+  *            @arg @ref RCC_ADCPCLK2_DIV2 PCLK2 clock divided by 2 selected as ADC clock
+  *            @arg @ref RCC_ADCPCLK2_DIV4 PCLK2 clock divided by 4 selected as ADC clock
+  *            @arg @ref RCC_ADCPCLK2_DIV6 PCLK2 clock divided by 6 selected as ADC clock
+  *            @arg @ref RCC_ADCPCLK2_DIV8 PCLK2 clock divided by 8 selected as ADC clock
+  */
+#define __HAL_RCC_GET_ADC_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_ADCPRE)))
+
+/**
+  * @}
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+
+/** @addtogroup RCCEx_HSE_Configuration
+  * @{   
+  */ 
+
+/**
+  * @brief  Macro to configure the PLL2 & PLLI2S Predivision factor.
+  * @note   Predivision factor can not be changed if PLL2 is used indirectly as system clock
+  *         In this case, you have to select another source of the system clock, disable the PLL2 and PLLI2S and
+  *         then change the PREDIV2 factor.
+  * @param  __HSE_PREDIV2_VALUE__ specifies the PREDIV2 value applied to PLL2 & PLLI2S.
+  *         This parameter must be a number between RCC_HSE_PREDIV2_DIV1 and RCC_HSE_PREDIV2_DIV16.
+  */
+#define __HAL_RCC_HSE_PREDIV2_CONFIG(__HSE_PREDIV2_VALUE__) \
+                  MODIFY_REG(RCC->CFGR2, RCC_CFGR2_PREDIV2, (uint32_t)(__HSE_PREDIV2_VALUE__))
+                  
+/**
+  * @brief  Macro to get prediv2 factor for PLL2 & PLL3.
+  */
+#define __HAL_RCC_HSE_GET_PREDIV2() READ_BIT(RCC->CFGR2, RCC_CFGR2_PREDIV2)
+
+/**
+  * @}
+  */
+
+/** @addtogroup RCCEx_PLLI2S_Configuration
+  * @{   
+  */ 
+
+/** @brief Macros to enable the main PLL2.
+  * @note   After enabling the main PLL2, the application software should wait on 
+  *         PLL2RDY flag to be set indicating that PLL2 clock is stable and can
+  *         be used as system clock source.
+  * @note   The main PLL2 is disabled by hardware when entering STOP and STANDBY modes.
+  */
+#define __HAL_RCC_PLL2_ENABLE()          (*(__IO uint32_t *) RCC_CR_PLL2ON_BB = ENABLE)
+
+/** @brief Macros to disable the main PLL2.
+  * @note   The main PLL2 can not be disabled if it is used indirectly as system clock source
+  * @note   The main PLL2 is disabled by hardware when entering STOP and STANDBY modes.
+  */
+#define __HAL_RCC_PLL2_DISABLE()         (*(__IO uint32_t *) RCC_CR_PLL2ON_BB = DISABLE)
+
+/** @brief macros to configure the main PLL2 multiplication factor.
+  * @note   This function must be used only when the main PLL2 is disabled.
+  *  
+  * @param  __PLL2MUL__ specifies the multiplication factor for PLL2 VCO output clock
+  *          This parameter can be one of the following values:
+  *             @arg @ref RCC_PLL2_MUL8 PLL2VCO = PLL2 clock entry x 8
+  *             @arg @ref RCC_PLL2_MUL9 PLL2VCO = PLL2 clock entry x 9
+  *             @arg @ref RCC_PLL2_MUL10 PLL2VCO = PLL2 clock entry x 10
+  *             @arg @ref RCC_PLL2_MUL11 PLL2VCO = PLL2 clock entry x 11
+  *             @arg @ref RCC_PLL2_MUL12 PLL2VCO = PLL2 clock entry x 12
+  *             @arg @ref RCC_PLL2_MUL13 PLL2VCO = PLL2 clock entry x 13
+  *             @arg @ref RCC_PLL2_MUL14 PLL2VCO = PLL2 clock entry x 14
+  *             @arg @ref RCC_PLL2_MUL16 PLL2VCO = PLL2 clock entry x 16
+  *             @arg @ref RCC_PLL2_MUL20 PLL2VCO = PLL2 clock entry x 20
+  *   
+  */
+#define __HAL_RCC_PLL2_CONFIG(__PLL2MUL__)\
+          MODIFY_REG(RCC->CFGR2, RCC_CFGR2_PLL2MUL,(__PLL2MUL__))
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_I2S_Configuration I2S Configuration
+  * @brief  Macros to configure clock source of I2S peripherals.
+  * @{
+  */  
+
+/** @brief  Macro to configure the I2S2 clock.
+  * @param  __I2S2CLKSOURCE__ specifies the I2S2 clock source.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_I2S2CLKSOURCE_SYSCLK system clock selected as I2S3 clock entry
+  *            @arg @ref RCC_I2S2CLKSOURCE_PLLI2S_VCO PLLI2S VCO clock selected as I2S3 clock entry
+  */
+#define __HAL_RCC_I2S2_CONFIG(__I2S2CLKSOURCE__) \
+                  MODIFY_REG(RCC->CFGR2, RCC_CFGR2_I2S2SRC, (uint32_t)(__I2S2CLKSOURCE__))
+
+/** @brief  Macro to get the I2S2 clock (I2S2CLK).
+  * @retval The clock source can be one of the following values:
+  *            @arg @ref RCC_I2S2CLKSOURCE_SYSCLK system clock selected as I2S3 clock entry
+  *            @arg @ref RCC_I2S2CLKSOURCE_PLLI2S_VCO PLLI2S VCO clock selected as I2S3 clock entry
+  */
+#define __HAL_RCC_GET_I2S2_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR2, RCC_CFGR2_I2S2SRC)))
+
+/** @brief  Macro to configure the I2S3 clock.
+  * @param  __I2S2CLKSOURCE__ specifies the I2S3 clock source.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_I2S3CLKSOURCE_SYSCLK system clock selected as I2S3 clock entry
+  *            @arg @ref RCC_I2S3CLKSOURCE_PLLI2S_VCO PLLI2S VCO clock selected as I2S3 clock entry
+  */
+#define __HAL_RCC_I2S3_CONFIG(__I2S2CLKSOURCE__) \
+                  MODIFY_REG(RCC->CFGR2, RCC_CFGR2_I2S3SRC, (uint32_t)(__I2S2CLKSOURCE__))
+
+/** @brief  Macro to get the I2S3 clock (I2S3CLK).
+  * @retval The clock source can be one of the following values:
+  *            @arg @ref RCC_I2S3CLKSOURCE_SYSCLK system clock selected as I2S3 clock entry
+  *            @arg @ref RCC_I2S3CLKSOURCE_PLLI2S_VCO PLLI2S VCO clock selected as I2S3 clock entry
+  */
+#define __HAL_RCC_GET_I2S3_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR2, RCC_CFGR2_I2S3SRC)))
+
+/**
+  * @}
+  */
+
+#endif /* STM32F105xC || STM32F107xC */
+/**
+  * @}
+  */
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup RCCEx_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup RCCEx_Exported_Functions_Group1
+  * @{
+  */
+
+HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit);
+void              HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit);
+uint32_t          HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk);
+
+/**
+  * @}
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** @addtogroup RCCEx_Exported_Functions_Group2
+  * @{
+  */
+HAL_StatusTypeDef HAL_RCCEx_EnablePLLI2S(RCC_PLLI2SInitTypeDef  *PLLI2SInit);
+HAL_StatusTypeDef HAL_RCCEx_DisablePLLI2S(void);
+
+/**
+  * @}
+  */
+
+/** @addtogroup RCCEx_Exported_Functions_Group3
+  * @{
+  */
+HAL_StatusTypeDef HAL_RCCEx_EnablePLL2(RCC_PLL2InitTypeDef  *PLL2Init);
+HAL_StatusTypeDef HAL_RCCEx_DisablePLL2(void);
+
+/**
+  * @}
+  */
+#endif /* STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+  
+/**
+  * @}
+  */
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_RCC_EX_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1767 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_tim.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of TIM HAL module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_TIM_H
+#define __STM32F1xx_HAL_TIM_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup TIM
+  * @{
+  */
+
+/* Exported types ------------------------------------------------------------*/
+/** @defgroup TIM_Exported_Types TIM Exported Types
+  * @{
+  */
+/**
+  * @brief  TIM Time base Configuration Structure definition
+  */
+typedef struct
+{
+  uint32_t Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
+                                   This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
+
+  uint32_t CounterMode;       /*!< Specifies the counter mode.
+                                   This parameter can be a value of @ref TIM_Counter_Mode */
+
+  uint32_t Period;            /*!< Specifies the period value to be loaded into the active
+                                   Auto-Reload Register at the next update event.
+                                   This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.  */
+
+  uint32_t ClockDivision;     /*!< Specifies the clock division.
+                                   This parameter can be a value of @ref TIM_ClockDivision */
+
+  uint32_t RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
+                                    reaches zero, an update event is generated and counting restarts
+                                    from the RCR value (N).
+                                    This means in PWM mode that (N+1) corresponds to:
+                                        - the number of PWM periods in edge-aligned mode
+                                        - the number of half PWM period in center-aligned mode
+                                     This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
+                                     @note This parameter is valid only for TIM1 and TIM8. */
+} TIM_Base_InitTypeDef;
+
+/**
+  * @brief  TIM Output Compare Configuration Structure definition
+  */
+typedef struct
+{
+  uint32_t OCMode;        /*!< Specifies the TIM mode.
+                               This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */
+
+  uint32_t Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
+                               This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
+
+  uint32_t OCPolarity;    /*!< Specifies the output polarity.
+                               This parameter can be a value of @ref TIM_Output_Compare_Polarity */
+
+  uint32_t OCNPolarity;   /*!< Specifies the complementary output polarity.
+                               This parameter can be a value of @ref TIM_Output_Compare_N_Polarity
+                               @note This parameter is valid only for TIM1 and TIM8. */
+
+  uint32_t OCFastMode;   /*!< Specifies the Fast mode state.
+                               This parameter can be a value of @ref TIM_Output_Fast_State
+                               @note This parameter is valid only in PWM1 and PWM2 mode. */
+
+
+  uint32_t OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
+                               This parameter can be a value of @ref TIM_Output_Compare_Idle_State
+                               @note This parameter is valid only for TIM1 and TIM8. */
+
+  uint32_t OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
+                               This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State
+                               @note This parameter is valid only for TIM1 and TIM8. */
+} TIM_OC_InitTypeDef;
+
+/**
+  * @brief  TIM One Pulse Mode Configuration Structure definition
+  */
+typedef struct
+{
+  uint32_t OCMode;        /*!< Specifies the TIM mode.
+                               This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */
+
+  uint32_t Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
+                               This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
+
+  uint32_t OCPolarity;    /*!< Specifies the output polarity.
+                               This parameter can be a value of @ref TIM_Output_Compare_Polarity */
+
+  uint32_t OCNPolarity;   /*!< Specifies the complementary output polarity.
+                               This parameter can be a value of @ref TIM_Output_Compare_N_Polarity
+                               @note This parameter is valid only for TIM1 and TIM8. */
+
+  uint32_t OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
+                               This parameter can be a value of @ref TIM_Output_Compare_Idle_State
+                               @note This parameter is valid only for TIM1 and TIM8. */
+
+  uint32_t OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
+                               This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State
+                               @note This parameter is valid only for TIM1 and TIM8. */
+
+  uint32_t ICPolarity;    /*!< Specifies the active edge of the input signal.
+                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */
+
+  uint32_t ICSelection;   /*!< Specifies the input.
+                              This parameter can be a value of @ref TIM_Input_Capture_Selection */
+
+  uint32_t ICFilter;      /*!< Specifies the input capture filter.
+                              This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+} TIM_OnePulse_InitTypeDef;
+
+
+/**
+  * @brief  TIM Input Capture Configuration Structure definition
+  */
+typedef struct
+{
+  uint32_t  ICPolarity;   /*!< Specifies the active edge of the input signal.
+                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */
+
+  uint32_t ICSelection;  /*!< Specifies the input.
+                              This parameter can be a value of @ref TIM_Input_Capture_Selection */
+
+  uint32_t ICPrescaler;  /*!< Specifies the Input Capture Prescaler.
+                              This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
+
+  uint32_t ICFilter;     /*!< Specifies the input capture filter.
+                              This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+} TIM_IC_InitTypeDef;
+
+/**
+  * @brief  TIM Encoder Configuration Structure definition
+  */
+typedef struct
+{
+  uint32_t EncoderMode;   /*!< Specifies the active edge of the input signal.
+                               This parameter can be a value of @ref TIM_Encoder_Mode */
+
+  uint32_t IC1Polarity;   /*!< Specifies the active edge of the input signal.
+                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */
+
+  uint32_t IC1Selection;  /*!< Specifies the input.
+                               This parameter can be a value of @ref TIM_Input_Capture_Selection */
+
+  uint32_t IC1Prescaler;  /*!< Specifies the Input Capture Prescaler.
+                               This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
+
+  uint32_t IC1Filter;     /*!< Specifies the input capture filter.
+                               This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+
+  uint32_t IC2Polarity;   /*!< Specifies the active edge of the input signal.
+                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */
+
+  uint32_t IC2Selection;  /*!< Specifies the input.
+                              This parameter can be a value of @ref TIM_Input_Capture_Selection */
+
+  uint32_t IC2Prescaler;  /*!< Specifies the Input Capture Prescaler.
+                               This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
+
+  uint32_t IC2Filter;     /*!< Specifies the input capture filter.
+                               This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+} TIM_Encoder_InitTypeDef;
+
+
+/**
+  * @brief  TIM Clock Configuration Handle Structure definition
+  */
+typedef struct
+{
+  uint32_t ClockSource;     /*!< TIM clock sources
+                                 This parameter can be a value of @ref TIM_Clock_Source */
+  uint32_t ClockPolarity;   /*!< TIM clock polarity
+                                 This parameter can be a value of @ref TIM_Clock_Polarity */
+  uint32_t ClockPrescaler;  /*!< TIM clock prescaler
+                                 This parameter can be a value of @ref TIM_Clock_Prescaler */
+  uint32_t ClockFilter;    /*!< TIM clock filter
+                                This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+}TIM_ClockConfigTypeDef;
+
+/**
+  * @brief  TIM Clear Input Configuration Handle Structure definition
+  */
+typedef struct
+{
+  uint32_t ClearInputState;      /*!< TIM clear Input state
+                                      This parameter can be ENABLE or DISABLE */
+  uint32_t ClearInputSource;     /*!< TIM clear Input sources
+                                      This parameter can be a value of @ref TIM_ClearInput_Source */
+  uint32_t ClearInputPolarity;   /*!< TIM Clear Input polarity
+                                      This parameter can be a value of @ref TIM_ClearInput_Polarity */
+  uint32_t ClearInputPrescaler;  /*!< TIM Clear Input prescaler
+                                      This parameter can be a value of @ref TIM_ClearInput_Prescaler */
+  uint32_t ClearInputFilter;    /*!< TIM Clear Input filter
+                                     This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+}TIM_ClearInputConfigTypeDef;
+
+/**
+  * @brief  TIM Slave configuration Structure definition
+  */
+typedef struct {
+  uint32_t  SlaveMode;      /*!< Slave mode selection
+                               This parameter can be a value of @ref TIM_Slave_Mode */
+  uint32_t  InputTrigger;      /*!< Input Trigger source
+                                  This parameter can be a value of @ref TIM_Trigger_Selection */
+  uint32_t  TriggerPolarity;   /*!< Input Trigger polarity
+                                  This parameter can be a value of @ref TIM_Trigger_Polarity */
+  uint32_t  TriggerPrescaler;  /*!< Input trigger prescaler
+                                  This parameter can be a value of @ref TIM_Trigger_Prescaler */
+  uint32_t  TriggerFilter;     /*!< Input trigger filter
+                                  This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+
+}TIM_SlaveConfigTypeDef;
+
+/**
+  * @brief  HAL State structures definition
+  */
+typedef enum
+{
+  HAL_TIM_STATE_RESET             = 0x00,    /*!< Peripheral not yet initialized or disabled  */
+  HAL_TIM_STATE_READY             = 0x01,    /*!< Peripheral Initialized and ready for use    */
+  HAL_TIM_STATE_BUSY              = 0x02,    /*!< An internal process is ongoing              */
+  HAL_TIM_STATE_TIMEOUT           = 0x03,    /*!< Timeout state                               */
+  HAL_TIM_STATE_ERROR             = 0x04     /*!< Reception process is ongoing                */
+}HAL_TIM_StateTypeDef;
+
+/**
+  * @brief  HAL Active channel structures definition
+  */
+typedef enum
+{
+  HAL_TIM_ACTIVE_CHANNEL_1        = 0x01,    /*!< The active channel is 1     */
+  HAL_TIM_ACTIVE_CHANNEL_2        = 0x02,    /*!< The active channel is 2     */
+  HAL_TIM_ACTIVE_CHANNEL_3        = 0x04,    /*!< The active channel is 3     */
+  HAL_TIM_ACTIVE_CHANNEL_4        = 0x08,    /*!< The active channel is 4     */
+  HAL_TIM_ACTIVE_CHANNEL_CLEARED  = 0x00    /*!< All active channels cleared */
+}HAL_TIM_ActiveChannel;
+
+/**
+  * @brief  TIM Time Base Handle Structure definition
+  */
+typedef struct
+{
+  TIM_TypeDef              *Instance;     /*!< Register base address             */
+  TIM_Base_InitTypeDef     Init;          /*!< TIM Time Base required parameters */
+  HAL_TIM_ActiveChannel    Channel;       /*!< Active channel                    */
+  DMA_HandleTypeDef        *hdma[7];      /*!< DMA Handlers array
+                                             This array is accessed by a @ref TIM_DMA_Handle_index */
+  HAL_LockTypeDef          Lock;          /*!< Locking object                    */
+  __IO HAL_TIM_StateTypeDef   State;         /*!< TIM operation state               */
+}TIM_HandleTypeDef;
+
+/**
+  * @}
+  */
+
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup TIM_Exported_Constants TIM Exported Constants
+  * @{
+  */
+
+/** @defgroup TIM_Input_Channel_Polarity TIM Input Channel Polarity
+  * @{
+  */
+#define  TIM_INPUTCHANNELPOLARITY_RISING      ((uint32_t)0x00000000)            /*!< Polarity for TIx source */
+#define  TIM_INPUTCHANNELPOLARITY_FALLING     (TIM_CCER_CC1P)                   /*!< Polarity for TIx source */
+#define  TIM_INPUTCHANNELPOLARITY_BOTHEDGE    (TIM_CCER_CC1P | TIM_CCER_CC1NP)  /*!< Polarity for TIx source */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_ETR_Polarity TIM ETR Polarity
+  * @{
+  */
+#define TIM_ETRPOLARITY_INVERTED              (TIM_SMCR_ETP)                    /*!< Polarity for ETR source */
+#define TIM_ETRPOLARITY_NONINVERTED           ((uint32_t)0x0000)                /*!< Polarity for ETR source */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_ETR_Prescaler TIM ETR Prescaler
+  * @{
+  */
+#define TIM_ETRPRESCALER_DIV1                 ((uint32_t)0x0000)                /*!< No prescaler is used */
+#define TIM_ETRPRESCALER_DIV2                 (TIM_SMCR_ETPS_0)                 /*!< ETR input source is divided by 2 */
+#define TIM_ETRPRESCALER_DIV4                 (TIM_SMCR_ETPS_1)                 /*!< ETR input source is divided by 4 */
+#define TIM_ETRPRESCALER_DIV8                 (TIM_SMCR_ETPS)                   /*!< ETR input source is divided by 8 */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Counter_Mode TIM Counter Mode
+  * @{
+  */
+#define TIM_COUNTERMODE_UP                 ((uint32_t)0x0000)
+#define TIM_COUNTERMODE_DOWN               TIM_CR1_DIR
+#define TIM_COUNTERMODE_CENTERALIGNED1     TIM_CR1_CMS_0
+#define TIM_COUNTERMODE_CENTERALIGNED2     TIM_CR1_CMS_1
+#define TIM_COUNTERMODE_CENTERALIGNED3     TIM_CR1_CMS
+/**
+  * @}
+  */
+
+/** @defgroup TIM_ClockDivision TIM ClockDivision
+  * @{
+  */
+#define TIM_CLOCKDIVISION_DIV1                       ((uint32_t)0x0000)
+#define TIM_CLOCKDIVISION_DIV2                       (TIM_CR1_CKD_0)
+#define TIM_CLOCKDIVISION_DIV4                       (TIM_CR1_CKD_1)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Output_Compare_and_PWM_modes TIM Output Compare and PWM modes
+  * @{
+  */
+#define TIM_OCMODE_TIMING                   ((uint32_t)0x0000)
+#define TIM_OCMODE_ACTIVE                   (TIM_CCMR1_OC1M_0)
+#define TIM_OCMODE_INACTIVE                 (TIM_CCMR1_OC1M_1)
+#define TIM_OCMODE_TOGGLE                   (TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_1)
+#define TIM_OCMODE_PWM1                     (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2)
+#define TIM_OCMODE_PWM2                     (TIM_CCMR1_OC1M)
+#define TIM_OCMODE_FORCED_ACTIVE            (TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_2)
+#define TIM_OCMODE_FORCED_INACTIVE          (TIM_CCMR1_OC1M_2)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Output_Compare_State TIM Output Compare State
+  * @{
+  */
+#define TIM_OUTPUTSTATE_DISABLE            ((uint32_t)0x0000)
+#define TIM_OUTPUTSTATE_ENABLE             (TIM_CCER_CC1E)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Output_Fast_State TIM Output Fast State
+  * @{
+  */
+#define TIM_OCFAST_DISABLE                ((uint32_t)0x0000)
+#define TIM_OCFAST_ENABLE                 (TIM_CCMR1_OC1FE)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State
+  * @{
+  */
+#define TIM_OUTPUTNSTATE_DISABLE            ((uint32_t)0x0000)
+#define TIM_OUTPUTNSTATE_ENABLE             (TIM_CCER_CC1NE)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity
+  * @{
+  */
+#define TIM_OCPOLARITY_HIGH                ((uint32_t)0x0000)
+#define TIM_OCPOLARITY_LOW                 (TIM_CCER_CC1P)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Output_Compare_N_Polarity TIM Complementary Output Compare Polarity
+  * @{
+  */
+#define TIM_OCNPOLARITY_HIGH               ((uint32_t)0x0000)
+#define TIM_OCNPOLARITY_LOW                (TIM_CCER_CC1NP)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Output_Compare_Idle_State TIM Output Compare Idle State
+  * @{
+  */
+#define TIM_OCIDLESTATE_SET                (TIM_CR2_OIS1)
+#define TIM_OCIDLESTATE_RESET              ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Output_Compare_N_Idle_State TIM Complementary Output Compare Idle State
+  * @{
+  */
+#define TIM_OCNIDLESTATE_SET               (TIM_CR2_OIS1N)
+#define TIM_OCNIDLESTATE_RESET             ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Channel TIM Channel
+  * @{
+  */
+#define TIM_CHANNEL_1                      ((uint32_t)0x0000)
+#define TIM_CHANNEL_2                      ((uint32_t)0x0004)
+#define TIM_CHANNEL_3                      ((uint32_t)0x0008)
+#define TIM_CHANNEL_4                      ((uint32_t)0x000C)
+#define TIM_CHANNEL_ALL                    ((uint32_t)0x0018)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Input_Capture_Polarity TIM Input Capture Polarity
+  * @{
+  */
+#define  TIM_ICPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING
+#define  TIM_ICPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING
+#define  TIM_ICPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
+  * @{
+  */
+#define TIM_ICSELECTION_DIRECTTI           (TIM_CCMR1_CC1S_0)   /*!< TIM Input 1, 2, 3 or 4 is selected to be
+                                                                               connected to IC1, IC2, IC3 or IC4, respectively */
+#define TIM_ICSELECTION_INDIRECTTI         (TIM_CCMR1_CC1S_1)   /*!< TIM Input 1, 2, 3 or 4 is selected to be
+                                                                               connected to IC2, IC1, IC4 or IC3, respectively */
+#define TIM_ICSELECTION_TRC                (TIM_CCMR1_CC1S)     /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Input_Capture_Prescaler TIM Input Capture Prescaler
+  * @{
+  */
+#define TIM_ICPSC_DIV1                     ((uint32_t)0x0000)                 /*!< Capture performed each time an edge is detected on the capture input */
+#define TIM_ICPSC_DIV2                     (TIM_CCMR1_IC1PSC_0)     /*!< Capture performed once every 2 events */
+#define TIM_ICPSC_DIV4                     (TIM_CCMR1_IC1PSC_1)     /*!< Capture performed once every 4 events */
+#define TIM_ICPSC_DIV8                     (TIM_CCMR1_IC1PSC)       /*!< Capture performed once every 8 events */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode
+  * @{
+  */
+#define TIM_OPMODE_SINGLE                  (TIM_CR1_OPM)
+#define TIM_OPMODE_REPETITIVE              ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Encoder_Mode TIM Encoder Mode
+  * @{
+  */
+#define TIM_ENCODERMODE_TI1                (TIM_SMCR_SMS_0)
+#define TIM_ENCODERMODE_TI2                (TIM_SMCR_SMS_1)
+#define TIM_ENCODERMODE_TI12               (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Interrupt_definition TIM Interrupt Definition
+  * @{
+  */
+#define TIM_IT_UPDATE           (TIM_DIER_UIE)
+#define TIM_IT_CC1              (TIM_DIER_CC1IE)
+#define TIM_IT_CC2              (TIM_DIER_CC2IE)
+#define TIM_IT_CC3              (TIM_DIER_CC3IE)
+#define TIM_IT_CC4              (TIM_DIER_CC4IE)
+#define TIM_IT_COM              (TIM_DIER_COMIE)
+#define TIM_IT_TRIGGER          (TIM_DIER_TIE)
+#define TIM_IT_BREAK            (TIM_DIER_BIE)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Commutation_Source  TIM Commutation Source
+  * @{
+  */
+#define TIM_COMMUTATION_TRGI              (TIM_CR2_CCUS)
+#define TIM_COMMUTATION_SOFTWARE          ((uint32_t)0x0000)
+
+/**
+  * @}
+  */
+
+/** @defgroup TIM_DMA_sources TIM DMA Sources
+  * @{
+  */
+#define TIM_DMA_UPDATE                     (TIM_DIER_UDE)
+#define TIM_DMA_CC1                        (TIM_DIER_CC1DE)
+#define TIM_DMA_CC2                        (TIM_DIER_CC2DE)
+#define TIM_DMA_CC3                        (TIM_DIER_CC3DE)
+#define TIM_DMA_CC4                        (TIM_DIER_CC4DE)
+#define TIM_DMA_COM                        (TIM_DIER_COMDE)
+#define TIM_DMA_TRIGGER                    (TIM_DIER_TDE)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Event_Source TIM Event Source
+  * @{
+  */
+#define TIM_EVENTSOURCE_UPDATE              TIM_EGR_UG
+#define TIM_EVENTSOURCE_CC1                 TIM_EGR_CC1G
+#define TIM_EVENTSOURCE_CC2                 TIM_EGR_CC2G
+#define TIM_EVENTSOURCE_CC3                 TIM_EGR_CC3G
+#define TIM_EVENTSOURCE_CC4                 TIM_EGR_CC4G
+#define TIM_EVENTSOURCE_COM                 TIM_EGR_COMG
+#define TIM_EVENTSOURCE_TRIGGER             TIM_EGR_TG
+#define TIM_EVENTSOURCE_BREAK               TIM_EGR_BG
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Flag_definition TIM Flag Definition
+  * @{
+  */
+#define TIM_FLAG_UPDATE                    (TIM_SR_UIF)
+#define TIM_FLAG_CC1                       (TIM_SR_CC1IF)
+#define TIM_FLAG_CC2                       (TIM_SR_CC2IF)
+#define TIM_FLAG_CC3                       (TIM_SR_CC3IF)
+#define TIM_FLAG_CC4                       (TIM_SR_CC4IF)
+#define TIM_FLAG_COM                       (TIM_SR_COMIF)
+#define TIM_FLAG_TRIGGER                   (TIM_SR_TIF)
+#define TIM_FLAG_BREAK                     (TIM_SR_BIF)
+#define TIM_FLAG_CC1OF                     (TIM_SR_CC1OF)
+#define TIM_FLAG_CC2OF                     (TIM_SR_CC2OF)
+#define TIM_FLAG_CC3OF                     (TIM_SR_CC3OF)
+#define TIM_FLAG_CC4OF                     (TIM_SR_CC4OF)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Clock_Source TIM Clock Source
+  * @{
+  */
+#define	TIM_CLOCKSOURCE_ETRMODE2    (TIM_SMCR_ETPS_1)
+#define	TIM_CLOCKSOURCE_INTERNAL    (TIM_SMCR_ETPS_0)
+#define	TIM_CLOCKSOURCE_ITR0        ((uint32_t)0x0000)
+#define	TIM_CLOCKSOURCE_ITR1        (TIM_SMCR_TS_0)
+#define	TIM_CLOCKSOURCE_ITR2        (TIM_SMCR_TS_1)
+#define	TIM_CLOCKSOURCE_ITR3        (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)
+#define	TIM_CLOCKSOURCE_TI1ED       (TIM_SMCR_TS_2)
+#define	TIM_CLOCKSOURCE_TI1         (TIM_SMCR_TS_0 | TIM_SMCR_TS_2)
+#define	TIM_CLOCKSOURCE_TI2         (TIM_SMCR_TS_1 | TIM_SMCR_TS_2)
+#define	TIM_CLOCKSOURCE_ETRMODE1    (TIM_SMCR_TS)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Clock_Polarity TIM Clock Polarity
+  * @{
+  */
+#define TIM_CLOCKPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED          /*!< Polarity for ETRx clock sources */
+#define TIM_CLOCKPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED       /*!< Polarity for ETRx clock sources */
+#define TIM_CLOCKPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING   /*!< Polarity for TIx clock sources */
+#define TIM_CLOCKPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING   /*!< Polarity for TIx clock sources */
+#define TIM_CLOCKPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE  /*!< Polarity for TIx clock sources */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Clock_Prescaler TIM Clock Prescaler
+  * @{
+  */
+#define TIM_CLOCKPRESCALER_DIV1                 TIM_ETRPRESCALER_DIV1     /*!< No prescaler is used */
+#define TIM_CLOCKPRESCALER_DIV2                 TIM_ETRPRESCALER_DIV2     /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */
+#define TIM_CLOCKPRESCALER_DIV4                 TIM_ETRPRESCALER_DIV4     /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */
+#define TIM_CLOCKPRESCALER_DIV8                 TIM_ETRPRESCALER_DIV8     /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_ClearInput_Source TIM ClearInput Source
+  * @{
+  */
+#define TIM_CLEARINPUTSOURCE_ETR           ((uint32_t)0x0001)
+#define TIM_CLEARINPUTSOURCE_OCREFCLR      ((uint32_t)0x0002)
+#define TIM_CLEARINPUTSOURCE_NONE          ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_ClearInput_Polarity TIM Clear Input Polarity
+  * @{
+  */
+#define TIM_CLEARINPUTPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED                    /*!< Polarity for ETRx pin */
+#define TIM_CLEARINPUTPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED                          /*!< Polarity for ETRx pin */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler
+  * @{
+  */
+#define TIM_CLEARINPUTPRESCALER_DIV1                    TIM_ETRPRESCALER_DIV1      /*!< No prescaler is used */
+#define TIM_CLEARINPUTPRESCALER_DIV2                    TIM_ETRPRESCALER_DIV2      /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */
+#define TIM_CLEARINPUTPRESCALER_DIV4                    TIM_ETRPRESCALER_DIV4      /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */
+#define TIM_CLEARINPUTPRESCALER_DIV8                    TIM_ETRPRESCALER_DIV8        /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state TIM OSSR Off State Selection for Run mode state
+  * @{
+  */
+#define TIM_OSSR_ENABLE         (TIM_BDTR_OSSR)
+#define TIM_OSSR_DISABLE              ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state TIM OSSI Off State Selection for Idle mode state
+  * @{
+  */
+#define TIM_OSSI_ENABLE	       (TIM_BDTR_OSSI)
+#define TIM_OSSI_DISABLE            ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Lock_level TIM Lock level
+  * @{
+  */
+#define TIM_LOCKLEVEL_OFF	   ((uint32_t)0x0000)
+#define TIM_LOCKLEVEL_1            (TIM_BDTR_LOCK_0)
+#define TIM_LOCKLEVEL_2            (TIM_BDTR_LOCK_1)
+#define TIM_LOCKLEVEL_3            (TIM_BDTR_LOCK)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Break_Input_enable_disable TIM Break Input Enable Disable
+  * @{
+  */
+#define TIM_BREAK_ENABLE          (TIM_BDTR_BKE)
+#define TIM_BREAK_DISABLE         ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Break_Polarity TIM Break Input Polarity
+  * @{
+  */
+#define TIM_BREAKPOLARITY_LOW        ((uint32_t)0x0000)
+#define TIM_BREAKPOLARITY_HIGH       (TIM_BDTR_BKP)
+/**
+  * @}
+  */
+/** @defgroup TIM_AOE_Bit_Set_Reset TIM Automatic Output Enable
+  * @{
+  */
+#define TIM_AUTOMATICOUTPUT_ENABLE           (TIM_BDTR_AOE)
+#define	TIM_AUTOMATICOUTPUT_DISABLE          ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection
+  * @{
+  */
+#define	TIM_TRGO_RESET            ((uint32_t)0x0000)
+#define	TIM_TRGO_ENABLE           (TIM_CR2_MMS_0)
+#define	TIM_TRGO_UPDATE           (TIM_CR2_MMS_1)
+#define	TIM_TRGO_OC1              ((TIM_CR2_MMS_1 | TIM_CR2_MMS_0))
+#define	TIM_TRGO_OC1REF           (TIM_CR2_MMS_2)
+#define	TIM_TRGO_OC2REF           ((TIM_CR2_MMS_2 | TIM_CR2_MMS_0))
+#define	TIM_TRGO_OC3REF           ((TIM_CR2_MMS_2 | TIM_CR2_MMS_1))
+#define	TIM_TRGO_OC4REF           ((TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0))
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Slave_Mode TIM Slave Mode
+  * @{
+  */
+#define TIM_SLAVEMODE_DISABLE              ((uint32_t)0x0000)
+#define TIM_SLAVEMODE_RESET                ((uint32_t)0x0004)
+#define TIM_SLAVEMODE_GATED                ((uint32_t)0x0005)
+#define TIM_SLAVEMODE_TRIGGER              ((uint32_t)0x0006)
+#define TIM_SLAVEMODE_EXTERNAL1            ((uint32_t)0x0007)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Master_Slave_Mode TIM Master Slave Mode
+  * @{
+  */
+#define TIM_MASTERSLAVEMODE_ENABLE          ((uint32_t)0x0080)
+#define TIM_MASTERSLAVEMODE_DISABLE         ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Trigger_Selection TIM Trigger Selection
+  * @{
+  */
+#define TIM_TS_ITR0                        ((uint32_t)0x0000)
+#define TIM_TS_ITR1                        ((uint32_t)0x0010)
+#define TIM_TS_ITR2                        ((uint32_t)0x0020)
+#define TIM_TS_ITR3                        ((uint32_t)0x0030)
+#define TIM_TS_TI1F_ED                     ((uint32_t)0x0040)
+#define TIM_TS_TI1FP1                      ((uint32_t)0x0050)
+#define TIM_TS_TI2FP2                      ((uint32_t)0x0060)
+#define TIM_TS_ETRF                        ((uint32_t)0x0070)
+#define TIM_TS_NONE                        ((uint32_t)0xFFFF)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity
+  * @{
+  */
+#define TIM_TRIGGERPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED      /*!< Polarity for ETRx trigger sources */
+#define TIM_TRIGGERPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED   /*!< Polarity for ETRx trigger sources */
+#define TIM_TRIGGERPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING        /*!< Polarity for TIxFPx or TI1_ED trigger sources */
+#define TIM_TRIGGERPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING       /*!< Polarity for TIxFPx or TI1_ED trigger sources */
+#define TIM_TRIGGERPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE      /*!< Polarity for TIxFPx or TI1_ED trigger sources */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler
+  * @{
+  */
+#define TIM_TRIGGERPRESCALER_DIV1             TIM_ETRPRESCALER_DIV1     /*!< No prescaler is used */
+#define TIM_TRIGGERPRESCALER_DIV2             TIM_ETRPRESCALER_DIV2     /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */
+#define TIM_TRIGGERPRESCALER_DIV4             TIM_ETRPRESCALER_DIV4     /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */
+#define TIM_TRIGGERPRESCALER_DIV8             TIM_ETRPRESCALER_DIV8     /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_TI1_Selection TIM TI1 Input Selection
+  * @{
+  */
+#define TIM_TI1SELECTION_CH1                ((uint32_t)0x0000)
+#define TIM_TI1SELECTION_XORCOMBINATION     (TIM_CR2_TI1S)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_DMA_Base_address TIM DMA Base Address
+  * @{
+  */
+#define TIM_DMABASE_CR1                    (0x00000000)
+#define TIM_DMABASE_CR2                    (0x00000001)
+#define TIM_DMABASE_SMCR                   (0x00000002)
+#define TIM_DMABASE_DIER                   (0x00000003)
+#define TIM_DMABASE_SR                     (0x00000004)
+#define TIM_DMABASE_EGR                    (0x00000005)
+#define TIM_DMABASE_CCMR1                  (0x00000006)
+#define TIM_DMABASE_CCMR2                  (0x00000007)
+#define TIM_DMABASE_CCER                   (0x00000008)
+#define TIM_DMABASE_CNT                    (0x00000009)
+#define TIM_DMABASE_PSC                    (0x0000000A)
+#define TIM_DMABASE_ARR                    (0x0000000B)
+#define TIM_DMABASE_RCR                    (0x0000000C)
+#define TIM_DMABASE_CCR1                   (0x0000000D)
+#define TIM_DMABASE_CCR2                   (0x0000000E)
+#define TIM_DMABASE_CCR3                   (0x0000000F)
+#define TIM_DMABASE_CCR4                   (0x00000010)
+#define TIM_DMABASE_BDTR                   (0x00000011)
+#define TIM_DMABASE_DCR                    (0x00000012)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_DMA_Burst_Length TIM DMA Burst Length
+  * @{
+  */
+#define TIM_DMABURSTLENGTH_1TRANSFER           (0x00000000)
+#define TIM_DMABURSTLENGTH_2TRANSFERS          (0x00000100)
+#define TIM_DMABURSTLENGTH_3TRANSFERS          (0x00000200)
+#define TIM_DMABURSTLENGTH_4TRANSFERS          (0x00000300)
+#define TIM_DMABURSTLENGTH_5TRANSFERS          (0x00000400)
+#define TIM_DMABURSTLENGTH_6TRANSFERS          (0x00000500)
+#define TIM_DMABURSTLENGTH_7TRANSFERS          (0x00000600)
+#define TIM_DMABURSTLENGTH_8TRANSFERS          (0x00000700)
+#define TIM_DMABURSTLENGTH_9TRANSFERS          (0x00000800)
+#define TIM_DMABURSTLENGTH_10TRANSFERS         (0x00000900)
+#define TIM_DMABURSTLENGTH_11TRANSFERS         (0x00000A00)
+#define TIM_DMABURSTLENGTH_12TRANSFERS         (0x00000B00)
+#define TIM_DMABURSTLENGTH_13TRANSFERS         (0x00000C00)
+#define TIM_DMABURSTLENGTH_14TRANSFERS         (0x00000D00)
+#define TIM_DMABURSTLENGTH_15TRANSFERS         (0x00000E00)
+#define TIM_DMABURSTLENGTH_16TRANSFERS         (0x00000F00)
+#define TIM_DMABURSTLENGTH_17TRANSFERS         (0x00001000)
+#define TIM_DMABURSTLENGTH_18TRANSFERS         (0x00001100)
+/**
+  * @}
+  */
+
+/** @defgroup TIM_DMA_Handle_index TIM DMA Handle Index
+  * @{
+  */
+#define TIM_DMA_ID_UPDATE                ((uint16_t) 0x0)       /*!< Index of the DMA handle used for Update DMA requests */
+#define TIM_DMA_ID_CC1                   ((uint16_t) 0x1)       /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */
+#define TIM_DMA_ID_CC2                   ((uint16_t) 0x2)       /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */
+#define TIM_DMA_ID_CC3                   ((uint16_t) 0x3)       /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */
+#define TIM_DMA_ID_CC4                   ((uint16_t) 0x4)       /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */
+#define TIM_DMA_ID_COMMUTATION           ((uint16_t) 0x5)       /*!< Index of the DMA handle used for Commutation DMA requests */
+#define TIM_DMA_ID_TRIGGER               ((uint16_t) 0x6)       /*!< Index of the DMA handle used for Trigger DMA requests */
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Channel_CC_State TIM Capture/Compare Channel State
+  * @{
+  */
+#define TIM_CCx_ENABLE                   ((uint32_t)0x0001)
+#define TIM_CCx_DISABLE                  ((uint32_t)0x0000)
+#define TIM_CCxN_ENABLE                  ((uint32_t)0x0004)
+#define TIM_CCxN_DISABLE                 ((uint32_t)0x0000)
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Private Constants -----------------------------------------------------------*/
+/** @defgroup TIM_Private_Constants TIM Private Constants
+  * @{
+  */
+
+/* The counter of a timer instance is disabled only if all the CCx and CCxN
+   channels have been disabled */
+#define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E))
+#define TIM_CCER_CCxNE_MASK ((uint32_t)(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE))
+
+/**
+  * @}
+  */
+
+/* Private Macros -----------------------------------------------------------*/
+/** @defgroup TIM_Private_Macros TIM Private Macros
+ * @{
+ */
+
+#define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_COUNTERMODE_UP)              || \
+                                   ((MODE) == TIM_COUNTERMODE_DOWN)            || \
+                                   ((MODE) == TIM_COUNTERMODE_CENTERALIGNED1)  || \
+                                   ((MODE) == TIM_COUNTERMODE_CENTERALIGNED2)  || \
+                                   ((MODE) == TIM_COUNTERMODE_CENTERALIGNED3))
+
+#define IS_TIM_CLOCKDIVISION_DIV(DIV) (((DIV) == TIM_CLOCKDIVISION_DIV1) || \
+                                       ((DIV) == TIM_CLOCKDIVISION_DIV2) || \
+                                       ((DIV) == TIM_CLOCKDIVISION_DIV4))
+
+#define IS_TIM_PWM_MODE(MODE) (((MODE) == TIM_OCMODE_PWM1) || \
+                               ((MODE) == TIM_OCMODE_PWM2))
+                              
+#define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMODE_TIMING)       || \
+                          ((MODE) == TIM_OCMODE_ACTIVE)           || \
+                          ((MODE) == TIM_OCMODE_INACTIVE)         || \
+                          ((MODE) == TIM_OCMODE_TOGGLE)           || \
+                          ((MODE) == TIM_OCMODE_FORCED_ACTIVE)    || \
+                          ((MODE) == TIM_OCMODE_FORCED_INACTIVE))
+
+#define IS_TIM_FAST_STATE(STATE) (((STATE) == TIM_OCFAST_DISABLE) || \
+                                  ((STATE) == TIM_OCFAST_ENABLE))
+
+#define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPOLARITY_HIGH) || \
+                                      ((POLARITY) == TIM_OCPOLARITY_LOW))
+
+#define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPOLARITY_HIGH) || \
+                                       ((POLARITY) == TIM_OCNPOLARITY_LOW))
+
+#define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIDLESTATE_SET) || \
+                                    ((STATE) == TIM_OCIDLESTATE_RESET))
+
+#define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIDLESTATE_SET) || \
+                                     ((STATE) == TIM_OCNIDLESTATE_RESET))
+
+#define IS_TIM_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
+                                  ((CHANNEL) == TIM_CHANNEL_2) || \
+                                  ((CHANNEL) == TIM_CHANNEL_3) || \
+                                  ((CHANNEL) == TIM_CHANNEL_4) || \
+                                  ((CHANNEL) == TIM_CHANNEL_ALL))
+                                 
+#define IS_TIM_OPM_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
+                                      ((CHANNEL) == TIM_CHANNEL_2))                                       
+                                      
+#define IS_TIM_COMPLEMENTARY_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
+                                                ((CHANNEL) == TIM_CHANNEL_2) || \
+                                                ((CHANNEL) == TIM_CHANNEL_3))
+
+#define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPOLARITY_RISING)   || \
+                                      ((POLARITY) == TIM_ICPOLARITY_FALLING)  || \
+                                      ((POLARITY) == TIM_ICPOLARITY_BOTHEDGE))
+
+#define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSELECTION_DIRECTTI)   || \
+                                        ((SELECTION) == TIM_ICSELECTION_INDIRECTTI) || \
+                                        ((SELECTION) == TIM_ICSELECTION_TRC))
+
+#define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \
+                                        ((PRESCALER) == TIM_ICPSC_DIV2) || \
+                                        ((PRESCALER) == TIM_ICPSC_DIV4) || \
+                                        ((PRESCALER) == TIM_ICPSC_DIV8))
+
+#define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMODE_SINGLE) || \
+                               ((MODE) == TIM_OPMODE_REPETITIVE))
+
+#define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_ENCODERMODE_TI1) || \
+                                   ((MODE) == TIM_ENCODERMODE_TI2) || \
+                                   ((MODE) == TIM_ENCODERMODE_TI12))   
+
+#define IS_TIM_DMA_SOURCE(SOURCE) ((((SOURCE) & 0xFFFF80FF) == 0x00000000) && ((SOURCE) != 0x00000000))
+
+#define IS_TIM_EVENT_SOURCE(SOURCE) ((((SOURCE) & 0xFFFFFF00) == 0x00000000) && ((SOURCE) != 0x00000000))
+
+#define IS_TIM_CLOCKSOURCE(CLOCK) (((CLOCK) == TIM_CLOCKSOURCE_INTERNAL) || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_ETRMODE2) || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_ITR0)     || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_ITR1)     || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_ITR2)     || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_ITR3)     || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_TI1ED)    || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_TI1)      || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_TI2)      || \
+                                   ((CLOCK) == TIM_CLOCKSOURCE_ETRMODE1))
+
+#define IS_TIM_CLOCKPOLARITY(POLARITY) (((POLARITY) == TIM_CLOCKPOLARITY_INVERTED)    || \
+                                        ((POLARITY) == TIM_CLOCKPOLARITY_NONINVERTED) || \
+                                        ((POLARITY) == TIM_CLOCKPOLARITY_RISING)      || \
+                                        ((POLARITY) == TIM_CLOCKPOLARITY_FALLING)     || \
+                                        ((POLARITY) == TIM_CLOCKPOLARITY_BOTHEDGE))
+
+#define IS_TIM_CLOCKPRESCALER(PRESCALER) (((PRESCALER) == TIM_CLOCKPRESCALER_DIV1) || \
+                                          ((PRESCALER) == TIM_CLOCKPRESCALER_DIV2) || \
+                                          ((PRESCALER) == TIM_CLOCKPRESCALER_DIV4) || \
+                                          ((PRESCALER) == TIM_CLOCKPRESCALER_DIV8)) 
+
+#define IS_TIM_CLOCKFILTER(ICFILTER)       ((ICFILTER) <= 0xF) 
+
+#define IS_TIM_CLEARINPUT_SOURCE(SOURCE) (((SOURCE) == TIM_CLEARINPUTSOURCE_ETR)      || \
+                                          ((SOURCE) == TIM_CLEARINPUTSOURCE_OCREFCLR) || \
+                                          ((SOURCE) == TIM_CLEARINPUTSOURCE_NONE))
+
+#define IS_TIM_CLEARINPUT_POLARITY(POLARITY) (((POLARITY) == TIM_CLEARINPUTPOLARITY_INVERTED) || \
+                                              ((POLARITY) == TIM_CLEARINPUTPOLARITY_NONINVERTED))
+
+#define IS_TIM_CLEARINPUT_PRESCALER(PRESCALER)   (((PRESCALER) == TIM_CLEARINPUTPRESCALER_DIV1) || \
+                                                  ((PRESCALER) == TIM_CLEARINPUTPRESCALER_DIV2) || \
+                                                  ((PRESCALER) == TIM_CLEARINPUTPRESCALER_DIV4) || \
+                                                  ((PRESCALER) == TIM_CLEARINPUTPRESCALER_DIV8))
+
+#define IS_TIM_CLEARINPUT_FILTER(ICFILTER) ((ICFILTER) <= 0xF)
+
+#define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSR_ENABLE) || \
+                                  ((STATE) == TIM_OSSR_DISABLE))
+
+#define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSI_ENABLE) || \
+                                  ((STATE) == TIM_OSSI_DISABLE))
+
+#define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLEVEL_OFF) || \
+                                  ((LEVEL) == TIM_LOCKLEVEL_1)   || \
+                                  ((LEVEL) == TIM_LOCKLEVEL_2)   || \
+                                  ((LEVEL) == TIM_LOCKLEVEL_3))
+
+#define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_BREAK_ENABLE) || \
+                                   ((STATE) == TIM_BREAK_DISABLE))
+
+#define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BREAKPOLARITY_LOW) || \
+                                         ((POLARITY) == TIM_BREAKPOLARITY_HIGH))
+
+#define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AUTOMATICOUTPUT_ENABLE) || \
+                                              ((STATE) == TIM_AUTOMATICOUTPUT_DISABLE))
+
+#define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGO_RESET)  || \
+                                    ((SOURCE) == TIM_TRGO_ENABLE) || \
+                                    ((SOURCE) == TIM_TRGO_UPDATE) || \
+                                    ((SOURCE) == TIM_TRGO_OC1)    || \
+                                    ((SOURCE) == TIM_TRGO_OC1REF) || \
+                                    ((SOURCE) == TIM_TRGO_OC2REF) || \
+                                    ((SOURCE) == TIM_TRGO_OC3REF) || \
+                                    ((SOURCE) == TIM_TRGO_OC4REF))
+
+#define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SLAVEMODE_DISABLE) || \
+                                 ((MODE) == TIM_SLAVEMODE_GATED)   || \
+                                 ((MODE) == TIM_SLAVEMODE_RESET)   || \
+                                 ((MODE) == TIM_SLAVEMODE_TRIGGER) || \
+                                 ((MODE) == TIM_SLAVEMODE_EXTERNAL1))
+
+#define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MASTERSLAVEMODE_ENABLE) || \
+                                 ((STATE) == TIM_MASTERSLAVEMODE_DISABLE))
+
+#define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0)    || \
+                                             ((SELECTION) == TIM_TS_ITR1)    || \
+                                             ((SELECTION) == TIM_TS_ITR2)    || \
+                                             ((SELECTION) == TIM_TS_ITR3)    || \
+                                             ((SELECTION) == TIM_TS_TI1F_ED) || \
+                                             ((SELECTION) == TIM_TS_TI1FP1)  || \
+                                             ((SELECTION) == TIM_TS_TI2FP2)  || \
+                                             ((SELECTION) == TIM_TS_ETRF))
+
+#define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
+                                                           ((SELECTION) == TIM_TS_ITR1) || \
+                                                           ((SELECTION) == TIM_TS_ITR2) || \
+                                                           ((SELECTION) == TIM_TS_ITR3) || \
+                                                           ((SELECTION) == TIM_TS_NONE))
+
+#define IS_TIM_TRIGGERPOLARITY(POLARITY)     (((POLARITY) == TIM_TRIGGERPOLARITY_INVERTED   ) || \
+                                              ((POLARITY) == TIM_TRIGGERPOLARITY_NONINVERTED) || \
+                                              ((POLARITY) == TIM_TRIGGERPOLARITY_RISING     ) || \
+                                              ((POLARITY) == TIM_TRIGGERPOLARITY_FALLING    ) || \
+                                              ((POLARITY) == TIM_TRIGGERPOLARITY_BOTHEDGE   ))
+
+#define IS_TIM_TRIGGERPRESCALER(PRESCALER)  (((PRESCALER) == TIM_TRIGGERPRESCALER_DIV1) || \
+                                             ((PRESCALER) == TIM_TRIGGERPRESCALER_DIV2) || \
+                                             ((PRESCALER) == TIM_TRIGGERPRESCALER_DIV4) || \
+                                             ((PRESCALER) == TIM_TRIGGERPRESCALER_DIV8))
+
+#define IS_TIM_TRIGGERFILTER(ICFILTER)     ((ICFILTER) <= 0xF)
+
+#define IS_TIM_TI1SELECTION(TI1SELECTION)   (((TI1SELECTION) == TIM_TI1SELECTION_CH1)            || \
+                                             ((TI1SELECTION) == TIM_TI1SELECTION_XORCOMBINATION))
+
+#define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABASE_CR1)   || \
+                               ((BASE) == TIM_DMABASE_CR2)   || \
+                               ((BASE) == TIM_DMABASE_SMCR)  || \
+                               ((BASE) == TIM_DMABASE_DIER)  || \
+                               ((BASE) == TIM_DMABASE_SR)    || \
+                               ((BASE) == TIM_DMABASE_EGR)   || \
+                               ((BASE) == TIM_DMABASE_CCMR1) || \
+                               ((BASE) == TIM_DMABASE_CCMR2) || \
+                               ((BASE) == TIM_DMABASE_CCER)  || \
+                               ((BASE) == TIM_DMABASE_CNT)   || \
+                               ((BASE) == TIM_DMABASE_PSC)   || \
+                               ((BASE) == TIM_DMABASE_ARR)   || \
+                               ((BASE) == TIM_DMABASE_RCR)   || \
+                               ((BASE) == TIM_DMABASE_CCR1)  || \
+                               ((BASE) == TIM_DMABASE_CCR2)  || \
+                               ((BASE) == TIM_DMABASE_CCR3)  || \
+                               ((BASE) == TIM_DMABASE_CCR4)  || \
+                               ((BASE) == TIM_DMABASE_BDTR)  || \
+                               ((BASE) == TIM_DMABASE_DCR))
+
+#define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABURSTLENGTH_1TRANSFER)   || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_2TRANSFERS)  || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_3TRANSFERS)  || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_4TRANSFERS)  || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_5TRANSFERS)  || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_6TRANSFERS)  || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_7TRANSFERS)  || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_8TRANSFERS)  || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_9TRANSFERS)  || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_10TRANSFERS) || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_11TRANSFERS) || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_12TRANSFERS) || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_13TRANSFERS) || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_14TRANSFERS) || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_15TRANSFERS) || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_16TRANSFERS) || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_17TRANSFERS) || \
+                                   ((LENGTH) == TIM_DMABURSTLENGTH_18TRANSFERS))
+
+#define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF)
+
+/** @brief Set TIM IC prescaler
+  * @param  __HANDLE__: TIM handle
+  * @param  __CHANNEL__: specifies TIM Channel
+  * @param  __ICPSC__: specifies the prescaler value.
+  * @retval None
+  */
+#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
+(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
+ ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8)) :\
+ ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
+ ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8)))
+
+/** @brief Reset TIM IC prescaler
+  * @param  __HANDLE__: TIM handle
+  * @param  __CHANNEL__: specifies TIM Channel
+  * @retval None
+  */
+#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
+(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\
+ ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\
+ ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\
+ ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC))
+
+
+/** @brief Set TIM IC polarity
+  * @param  __HANDLE__: TIM handle
+  * @param  __CHANNEL__: specifies TIM Channel
+  * @param  __POLARITY__: specifies TIM Channel Polarity
+  * @retval None
+  */
+#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
+(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
+ ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4)) :\
+ ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8)) :\
+ ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12) & TIM_CCER_CC4P)))
+
+/** @brief Reset TIM IC polarity
+  * @param  __HANDLE__: TIM handle
+  * @param  __CHANNEL__: specifies TIM Channel
+  * @retval None
+  */
+#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
+(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
+ ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
+ ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
+ ((__HANDLE__)->Instance->CCER &= (uint16_t)~TIM_CCER_CC4P))
+
+/**
+  * @}
+  */
+
+/* Private Functions --------------------------------------------------------*/
+/** @addtogroup TIM_Private_Functions
+ * @{
+ */
+void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
+void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
+void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
+void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma);
+void TIM_DMAError(DMA_HandleTypeDef *hdma);
+void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma);
+void TIM_CCxChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelState);
+/**
+  * @}
+  */
+
+/* Exported macros -----------------------------------------------------------*/
+/** @defgroup TIM_Exported_Macros TIM Exported Macros
+  * @{
+  */
+
+/** @brief  Reset TIM handle state
+  * @param  __HANDLE__: TIM handle.
+  * @retval None
+  */
+#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_TIM_STATE_RESET)
+
+/**
+  * @brief  Enable the TIM peripheral.
+  * @param  __HANDLE__: TIM handle
+  * @retval None
+ */
+#define __HAL_TIM_ENABLE(__HANDLE__)                 ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN))
+
+/**
+  * @brief  Enable the TIM main Output.
+  * @param  __HANDLE__: TIM handle
+  * @retval None
+  */
+#define __HAL_TIM_MOE_ENABLE(__HANDLE__)             ((__HANDLE__)->Instance->BDTR|=(TIM_BDTR_MOE))
+
+/**
+  * @brief  Disable the TIM peripheral.
+  * @param  __HANDLE__: TIM handle
+  * @retval None
+  */
+#define __HAL_TIM_DISABLE(__HANDLE__) \
+                        do { \
+                          if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0) \
+                            { \
+                            if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0) \
+                            { \
+                              (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
+                            } \
+                          } \
+                        } while(0)
+/* The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN
+   channels have been disabled */
+/**
+  * @brief  Disable the TIM main Output.
+  * @param  __HANDLE__: TIM handle
+  * @retval None
+  * @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled
+  */
+#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
+                        do { \
+                          if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0) \
+                          { \
+                            if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0) \
+                            { \
+                              (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
+                            } \
+                            } \
+                        } while(0)
+
+/**
+  * @brief  Enables the specified TIM interrupt.
+  * @param  __HANDLE__: specifies the TIM Handle.
+  * @param  __INTERRUPT__: specifies the TIM interrupt source to enable.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_IT_UPDATE: Update interrupt
+  *            @arg TIM_IT_CC1:   Capture/Compare 1 interrupt
+  *            @arg TIM_IT_CC2:  Capture/Compare 2 interrupt
+  *            @arg TIM_IT_CC3:  Capture/Compare 3 interrupt
+  *            @arg TIM_IT_CC4:  Capture/Compare 4 interrupt
+  *            @arg TIM_IT_COM:   Commutation interrupt
+  *            @arg TIM_IT_TRIGGER: Trigger interrupt
+  *            @arg TIM_IT_BREAK: Break interrupt
+  * @retval None
+  */
+#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__))
+
+/**
+  * @brief  Disables the specified TIM interrupt.
+  * @param  __HANDLE__: specifies the TIM Handle.
+  * @param  __INTERRUPT__: specifies the TIM interrupt source to disable.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_IT_UPDATE: Update interrupt
+  *            @arg TIM_IT_CC1:   Capture/Compare 1 interrupt
+  *            @arg TIM_IT_CC2:  Capture/Compare 2 interrupt
+  *            @arg TIM_IT_CC3:  Capture/Compare 3 interrupt
+  *            @arg TIM_IT_CC4:  Capture/Compare 4 interrupt
+  *            @arg TIM_IT_COM:   Commutation interrupt
+  *            @arg TIM_IT_TRIGGER: Trigger interrupt
+  *            @arg TIM_IT_BREAK: Break interrupt
+  * @retval None
+  */
+#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__))
+
+/**
+  * @brief  Enables the specified DMA request.
+  * @param  __HANDLE__: specifies the TIM Handle.
+  * @param  __DMA__: specifies the TIM DMA request to enable.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_DMA_UPDATE: Update DMA request
+  *            @arg TIM_DMA_CC1:   Capture/Compare 1 DMA request
+  *            @arg TIM_DMA_CC2:  Capture/Compare 2 DMA request
+  *            @arg TIM_DMA_CC3:  Capture/Compare 3 DMA request
+  *            @arg TIM_DMA_CC4:  Capture/Compare 4 DMA request
+  *            @arg TIM_DMA_COM:   Commutation DMA request
+  *            @arg TIM_DMA_TRIGGER: Trigger DMA request
+  * @retval None
+  */
+#define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__)         ((__HANDLE__)->Instance->DIER |= (__DMA__))
+
+/**
+  * @brief  Disables the specified DMA request.
+  * @param  __HANDLE__: specifies the TIM Handle.
+  * @param  __DMA__: specifies the TIM DMA request to disable.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_DMA_UPDATE: Update DMA request
+  *            @arg TIM_DMA_CC1:   Capture/Compare 1 DMA request
+  *            @arg TIM_DMA_CC2:  Capture/Compare 2 DMA request
+  *            @arg TIM_DMA_CC3:  Capture/Compare 3 DMA request
+  *            @arg TIM_DMA_CC4:  Capture/Compare 4 DMA request
+  *            @arg TIM_DMA_COM:   Commutation DMA request
+  *            @arg TIM_DMA_TRIGGER: Trigger DMA request
+  * @retval None
+  */
+#define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__)        ((__HANDLE__)->Instance->DIER &= ~(__DMA__))
+
+/**
+  * @brief  Checks whether the specified TIM interrupt flag is set or not.
+  * @param  __HANDLE__: specifies the TIM Handle.
+  * @param  __FLAG__: specifies the TIM interrupt flag to check.
+  *        This parameter can be one of the following values:
+  *            @arg TIM_FLAG_UPDATE: Update interrupt flag
+  *            @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag
+  *            @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag
+  *            @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag
+  *            @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag
+  *            @arg TIM_FLAG_COM:  Commutation interrupt flag
+  *            @arg TIM_FLAG_TRIGGER: Trigger interrupt flag
+  *            @arg TIM_FLAG_BREAK: Break interrupt flag   
+  *            @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag
+  *            @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag
+  *            @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag
+  *            @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag
+  * @retval The new state of __FLAG__ (TRUE or FALSE).
+  */
+#define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__)          (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__))
+
+/**
+  * @brief  Clears the specified TIM interrupt flag.
+  * @param  __HANDLE__: specifies the TIM Handle.
+  * @param  __FLAG__: specifies the TIM interrupt flag to clear.
+  *        This parameter can be one of the following values:
+  *            @arg TIM_FLAG_UPDATE: Update interrupt flag
+  *            @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag
+  *            @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag
+  *            @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag
+  *            @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag
+  *            @arg TIM_FLAG_COM:  Commutation interrupt flag
+  *            @arg TIM_FLAG_TRIGGER: Trigger interrupt flag
+  *            @arg TIM_FLAG_BREAK: Break interrupt flag   
+  *            @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag
+  *            @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag
+  *            @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag
+  *            @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag
+  * @retval The new state of __FLAG__ (TRUE or FALSE).
+  */
+#define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__)        ((__HANDLE__)->Instance->SR = ~(__FLAG__))
+
+/**
+  * @brief  Checks whether the specified TIM interrupt has occurred or not.
+  * @param  __HANDLE__: TIM handle
+  * @param  __INTERRUPT__: specifies the TIM interrupt source to check.
+  * @retval The state of TIM_IT (SET or RESET).
+  */
+#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
+
+/**
+  * @brief Clear the TIM interrupt pending bits
+  * @param  __HANDLE__: TIM handle
+  * @param  __INTERRUPT__: specifies the interrupt pending bit to clear.
+  * @retval None
+  */
+#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__)     ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
+
+/**
+  * @brief  Indicates whether or not the TIM Counter is used as downcounter
+  * @param  __HANDLE__: TIM handle.
+  * @retval False (Counter used as upcounter) or True (Counter used as downcounter)
+  * @note This macro is particularly usefull to get the counting mode when the timer operates in Center-aligned mode or Encoder
+mode.
+  */
+#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__)            (((__HANDLE__)->Instance->CR1 & (TIM_CR1_DIR)) == (TIM_CR1_DIR))
+
+/**
+  * @brief  Sets the TIM active prescaler register value on update event.
+  * @param  __HANDLE__: TIM handle.
+  * @param  __PRESC__: specifies the active prescaler register new value.
+  * @retval None
+  */
+#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__)       ((__HANDLE__)->Instance->PSC = (__PRESC__))
+
+/**
+  * @brief  Sets the TIM Capture Compare Register value on runtime without
+  *         calling another time ConfigChannel function.
+  * @param  __HANDLE__: TIM handle.
+  * @param  __CHANNEL__ : TIM Channels to be configured.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @param  __COMPARE__: specifies the Capture Compare register new value.
+  * @retval None
+  */
+#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
+(*(__IO uint32_t *)(&((__HANDLE__)->Instance->CCR1) + ((__CHANNEL__) >> 2)) = (__COMPARE__))
+
+/**
+  * @brief  Gets the TIM Capture Compare Register value on runtime
+  * @param  __HANDLE__: TIM handle.
+  * @param  __CHANNEL__ : TIM Channel associated with the capture compare register
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: get capture/compare 1 register value
+  *            @arg TIM_CHANNEL_2: get capture/compare 2 register value
+  *            @arg TIM_CHANNEL_3: get capture/compare 3 register value
+  *            @arg TIM_CHANNEL_4: get capture/compare 4 register value
+  * @retval None
+  */
+#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
+  (*(__IO uint32_t *)(&((__HANDLE__)->Instance->CCR1) + ((__CHANNEL__) >> 2)))
+
+/**
+  * @brief  Sets the TIM Counter Register value on runtime.
+  * @param  __HANDLE__: TIM handle.
+  * @param  __COUNTER__: specifies the Counter register new value.
+  * @retval None
+  */
+#define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__)  ((__HANDLE__)->Instance->CNT = (__COUNTER__))
+
+/**
+  * @brief  Gets the TIM Counter Register value on runtime.
+  * @param  __HANDLE__: TIM handle.
+  * @retval None
+  */
+#define __HAL_TIM_GET_COUNTER(__HANDLE__) \
+   ((__HANDLE__)->Instance->CNT)
+
+/**
+  * @brief  Sets the TIM Autoreload Register value on runtime without calling
+  *         another time any Init function.
+  * @param  __HANDLE__: TIM handle.
+  * @param  __AUTORELOAD__: specifies the Counter register new value.
+  * @retval None
+  */
+#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
+                        do{                                                    \
+                              (__HANDLE__)->Instance->ARR = (__AUTORELOAD__);  \
+                              (__HANDLE__)->Init.Period = (__AUTORELOAD__);    \
+                          } while(0)
+
+/**
+  * @brief  Gets the TIM Autoreload Register value on runtime
+  * @param  __HANDLE__: TIM handle.
+  * @retval None
+  */
+#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) \
+   ((__HANDLE__)->Instance->ARR)
+
+/**
+  * @brief  Sets the TIM Clock Division value on runtime without calling
+  *         another time any Init function.
+  * @param  __HANDLE__: TIM handle.
+  * @param  __CKD__: specifies the clock division value.
+  *          This parameter can be one of the following value:
+  *            @arg TIM_CLOCKDIVISION_DIV1
+  *            @arg TIM_CLOCKDIVISION_DIV2
+  *            @arg TIM_CLOCKDIVISION_DIV4
+  * @retval None
+  */
+#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
+                        do{                                                    \
+                              (__HANDLE__)->Instance->CR1 &= (uint16_t)(~TIM_CR1_CKD);  \
+                              (__HANDLE__)->Instance->CR1 |= (__CKD__);                   \
+                              (__HANDLE__)->Init.ClockDivision = (__CKD__);             \
+                          } while(0)
+
+/**
+  * @brief  Gets the TIM Clock Division value on runtime
+  * @param  __HANDLE__: TIM handle.
+  * @retval None
+  */
+#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__)  \
+   ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
+
+/**
+  * @brief  Sets the TIM Input Capture prescaler on runtime without calling
+  *         another time HAL_TIM_IC_ConfigChannel() function.
+  * @param  __HANDLE__: TIM handle.
+  * @param  __CHANNEL__ : TIM Channels to be configured.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @param  __ICPSC__: specifies the Input Capture4 prescaler new value.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICPSC_DIV1: no prescaler
+  *            @arg TIM_ICPSC_DIV2: capture is done once every 2 events
+  *            @arg TIM_ICPSC_DIV4: capture is done once every 4 events
+  *            @arg TIM_ICPSC_DIV8: capture is done once every 8 events
+  * @retval None
+  */
+#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
+                        do{                                                    \
+                              TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__));  \
+                              TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
+                          } while(0)
+
+/**
+  * @brief  Gets the TIM Input Capture prescaler on runtime
+  * @param  __HANDLE__: TIM handle.
+  * @param  __CHANNEL__: TIM Channels to be configured.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: get input capture 1 prescaler value
+  *            @arg TIM_CHANNEL_2: get input capture 2 prescaler value
+  *            @arg TIM_CHANNEL_3: get input capture 3 prescaler value
+  *            @arg TIM_CHANNEL_4: get input capture 4 prescaler value
+  * @retval None
+  */
+#define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__)  \
+  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\
+   ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8) :\
+   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\
+   (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8)
+
+/**
+  * @brief  Set the Update Request Source (URS) bit of the TIMx_CR1 register
+  * @param  __HANDLE__: TIM handle.
+  * @note  When the USR bit of the TIMx_CR1 register is set, only counter
+  *        overflow/underflow generates an update interrupt or DMA request (if
+  *        enabled)
+  * @retval None
+  */
+#define __HAL_TIM_URS_ENABLE(__HANDLE__) \
+    ((__HANDLE__)->Instance->CR1|= (TIM_CR1_URS))
+
+/**
+  * @brief  Reset the Update Request Source (URS) bit of the TIMx_CR1 register
+  * @param  __HANDLE__: TIM handle.
+  * @note  When the USR bit of the TIMx_CR1 register is reset, any of the
+  *        following events generate an update interrupt or DMA request (if
+  *        enabled):
+  *          (+) Counter overflow/underflow
+  *          (+) Setting the UG bit
+  *          (+) Update generation through the slave mode controller
+  * @retval None
+  */
+#define __HAL_TIM_URS_DISABLE(__HANDLE__) \
+      ((__HANDLE__)->Instance->CR1&=~(TIM_CR1_URS))
+
+/**
+  * @brief  Sets the TIM Capture x input polarity on runtime.
+  * @param  __HANDLE__: TIM handle.
+  * @param  __CHANNEL__: TIM Channels to be configured.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @param  __POLARITY__: Polarity for TIx source   
+  *            @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge
+  *            @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge
+  *            @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge
+  * @note  The polarity TIM_INPUTCHANNELPOLARITY_BOTHEDGE is not authorized  for TIM Channel 4.     
+  * @retval None
+  */
+#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__)    \
+        do{                                                                     \
+          TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__));               \
+          TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
+        }while(0)
+
+/**
+  * @}
+  */
+
+/* Include TIM HAL Extension module */
+#include "stm32f1xx_hal_tim_ex.h"
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup TIM_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group1
+ * @{
+ */
+/* Time Base functions ********************************************************/
+HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim);
+HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim);
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);
+HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim);
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
+HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);
+/* Non-Blocking mode: DMA */
+HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
+HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim);
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group2
+ * @{
+ */
+/* Timer Output Compare functions **********************************************/
+HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim);
+HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim);
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: DMA */
+HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
+HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
+
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group3
+ * @{
+ */
+/* Timer PWM functions *********************************************************/
+HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim);
+HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim);
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: DMA */
+HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
+HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group4
+ * @{
+ */
+/* Timer Input Capture functions ***********************************************/
+HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim);
+HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim);
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: DMA */
+HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
+HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group5
+ * @{
+ */
+/* Timer One Pulse functions ***************************************************/
+HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode);
+HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim);
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
+HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
+HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group6
+ * @{
+ */
+/* Timer Encoder functions *****************************************************/
+HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef* sConfig);
+HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim);
+void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim);
+ /* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: DMA */
+HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length);
+HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
+
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group7
+ * @{
+ */
+/* Interrupt Handler functions  **********************************************/
+void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim);
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group8
+ * @{
+ */
+/* Control functions  *********************************************************/
+HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef* sConfig, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef* sConfig, uint32_t OutputChannel,  uint32_t InputChannel);
+HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef * sClearInputConfig, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef * sClockSourceConfig);
+HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
+HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchronization(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef * sSlaveConfig);
+HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchronization_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef * sSlaveConfig);
+HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
+                                              uint32_t  *BurstBuffer, uint32_t  BurstLength);
+HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
+HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
+                                              uint32_t  *BurstBuffer, uint32_t  BurstLength);
+HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
+HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
+uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
+
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group9
+ * @{
+ */
+/* Callback in non blocking modes (Interrupt and DMA) *************************/
+void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
+void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);
+void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);
+void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim);
+void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);
+void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Exported_Functions_Group10
+ * @{
+ */
+/* Peripheral State functions  **************************************************/
+HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim);
+HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim);
+HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim);
+HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim);
+HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim);
+HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim);
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_TIM_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,312 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_tim_ex.h
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Header file of TIM HAL Extension module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_TIM_EX_H
+#define __STM32F1xx_HAL_TIM_EX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal_def.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup TIMEx
+  * @{
+  */ 
+
+/* Exported types ------------------------------------------------------------*/ 
+/** @defgroup TIMEx_Exported_Types TIMEx Exported Types
+  * @{
+  */
+
+
+/** 
+  * @brief  TIM Hall sensor Configuration Structure definition  
+  */
+
+typedef struct
+{
+                                  
+  uint32_t IC1Polarity;            /*!< Specifies the active edge of the input signal.
+                                        This parameter can be a value of @ref TIM_Input_Capture_Polarity */
+                                                                   
+  uint32_t IC1Prescaler;        /*!< Specifies the Input Capture Prescaler.
+                                     This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
+                                  
+  uint32_t IC1Filter;           /*!< Specifies the input capture filter.
+                                     This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */  
+  uint32_t Commutation_Delay;  /*!< Specifies the pulse value to be loaded into the Capture Compare Register. 
+                                    This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */                              
+} TIM_HallSensor_InitTypeDef;
+
+
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+
+/** 
+  * @brief  TIM Break and Dead time configuration Structure definition  
+  */ 
+typedef struct
+{
+  uint32_t OffStateRunMode;       /*!< TIM off state in run mode
+                                     This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */
+  uint32_t OffStateIDLEMode;      /*!< TIM off state in IDLE mode
+                                     This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */
+  uint32_t LockLevel;             /*!< TIM Lock level
+                                     This parameter can be a value of @ref TIM_Lock_level */                             
+  uint32_t DeadTime;              /*!< TIM dead Time 
+                                     This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */
+  uint32_t BreakState;            /*!< TIM Break State 
+                                     This parameter can be a value of @ref TIM_Break_Input_enable_disable */
+  uint32_t BreakPolarity;         /*!< TIM Break input polarity 
+                                     This parameter can be a value of @ref TIM_Break_Polarity */
+  uint32_t AutomaticOutput;       /*!< TIM Automatic Output Enable state 
+                                     This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */           
+} TIM_BreakDeadTimeConfigTypeDef;
+
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+/** 
+  * @brief  TIM Master configuration Structure definition  
+  */ 
+typedef struct {
+  uint32_t  MasterOutputTrigger;   /*!< Trigger output (TRGO) selection 
+                                      This parameter can be a value of @ref TIM_Master_Mode_Selection */ 
+  uint32_t  MasterSlaveMode;       /*!< Master/slave mode selection 
+                                      This parameter can be a value of @ref TIM_Master_Slave_Mode */
+}TIM_MasterConfigTypeDef;
+
+/**
+  * @}
+  */ 
+
+/* Exported constants --------------------------------------------------------*/
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+/** @defgroup TIMEx_Exported_Constants TIMEx Exported Constants
+  * @{
+  */
+    
+/** @defgroup TIMEx_Clock_Filter TIMEx Clock Filter
+  * @{
+  */
+#define IS_TIM_DEADTIME(DEADTIME)      ((DEADTIME) <= 0xFF)          /*!< BreakDead Time */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+/* Exported macro ------------------------------------------------------------*/
+
+/* Exported functions --------------------------------------------------------*/
+/** @addtogroup TIMEx_Exported_Functions
+  * @{
+  */
+
+/** @addtogroup TIMEx_Exported_Functions_Group1
+  * @{
+ */
+/* Timer Hall Sensor functions  **********************************************/
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef* sConfig);
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);
+
+void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim);
+void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim);
+
+ /* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim);
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim);
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim);
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim);
+/* Non-Blocking mode: DMA */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim);
+/**
+  * @}
+  */
+
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+
+/** @addtogroup TIMEx_Exported_Functions_Group2
+ * @{
+ */
+/* Timer Complementary Output Compare functions  *****************************/
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
+
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+
+/* Non-Blocking mode: DMA */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
+HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
+/**
+  * @}
+  */
+
+/** @addtogroup TIMEx_Exported_Functions_Group3
+ * @{
+ */
+/* Timer Complementary PWM functions  ****************************************/
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
+
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
+/* Non-Blocking mode: DMA */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
+/**
+  * @}
+  */
+
+/** @addtogroup TIMEx_Exported_Functions_Group4
+ * @{
+ */
+/* Timer Complementary One Pulse functions  **********************************/
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
+HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
+
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
+HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
+/**
+  * @}
+  */
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+/** @addtogroup TIMEx_Exported_Functions_Group5
+ * @{
+ */
+/* Extended Control functions  ************************************************/
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource);
+HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_IT(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource);
+HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_DMA(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource);
+HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef * sMasterConfig);
+/**
+  * @}
+  */
+
+/** @addtogroup TIMEx_Exported_Functions_Group6
+  * @{
+  */
+/* Extension Callback *********************************************************/
+void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef *htim);
+void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim);
+/**
+  * @}
+  */
+
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+/** @addtogroup TIMEx_Exported_Functions_Group7
+  * @{
+  */
+/* Extension Peripheral State functions  **************************************/
+HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim);
+/**
+  * @}
+  */
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+/**
+  * @}
+  */ 
+/* End of exported functions -------------------------------------------------*/
+
+/* Private functions----------------------------------------------------------*/
+/** @defgroup TIMEx_Private_Functions TIMEx Private Functions
+* @{
+*/
+void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
+/**
+* @}
+*/ 
+/* End of private functions --------------------------------------------------*/
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */
+  
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __STM32F1xx_HAL_TIM_EX_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,526 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   HAL module driver.
+  *          This is the common part of the HAL initialization
+  *
+  @verbatim
+  ==============================================================================
+                     ##### How to use this driver #####
+  ==============================================================================
+    [..]
+    The common HAL driver contains a set of generic and common APIs that can be
+    used by the PPP peripheral drivers and the user to start using the HAL. 
+    [..]
+    The HAL contains two APIs' categories: 
+         (+) Common HAL APIs
+         (+) Services HAL APIs
+
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup HAL HAL
+  * @brief HAL module driver.
+  * @{
+  */
+
+#ifdef HAL_MODULE_ENABLED
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+
+/** @defgroup HAL_Private_Constants HAL Private Constants
+  * @{
+  */
+
+/**
+ * @brief STM32F1xx HAL Driver version number
+   */
+#define __STM32F1xx_HAL_VERSION_MAIN   (0x01) /*!< [31:24] main version */
+#define __STM32F1xx_HAL_VERSION_SUB1   (0x00) /*!< [23:16] sub1 version */
+#define __STM32F1xx_HAL_VERSION_SUB2   (0x04) /*!< [15:8]  sub2 version */
+#define __STM32F1xx_HAL_VERSION_RC     (0x00) /*!< [7:0]  release candidate */
+#define __STM32F1xx_HAL_VERSION         ((__STM32F1xx_HAL_VERSION_MAIN << 24)\
+                                        |(__STM32F1xx_HAL_VERSION_SUB1 << 16)\
+                                        |(__STM32F1xx_HAL_VERSION_SUB2 << 8 )\
+                                        |(__STM32F1xx_HAL_VERSION_RC))
+
+#define IDCODE_DEVID_MASK    ((uint32_t)0x00000FFF)
+
+/**
+  * @}
+  */
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+/** @defgroup HAL_Private_Variables HAL Private Variables
+  * @{
+  */
+
+static __IO uint32_t uwTick;
+
+/**
+  * @}
+  */
+
+/* Private function prototypes -----------------------------------------------*/
+/* Exported functions ---------------------------------------------------------*/
+
+/** @defgroup HAL_Exported_Functions HAL Exported Functions
+  * @{
+  */
+
+/** @defgroup HAL_Exported_Functions_Group1 Initialization and de-initialization Functions 
+ *  @brief    Initialization and de-initialization functions
+ *
+@verbatim
+ ===============================================================================
+              ##### Initialization and de-initialization functions #####
+ ===============================================================================
+   [..]  This section provides functions allowing to:
+      (+) Initializes the Flash interface, the NVIC allocation and initial clock 
+          configuration. It initializes the source of time base also when timeout 
+          is needed and the backup domain when enabled.
+      (+) de-Initializes common part of the HAL.
+      (+) Configure The time base source to have 1ms time base with a dedicated 
+          Tick interrupt priority. 
+        (++) Systick timer is used by default as source of time base, but user 
+             can eventually implement his proper time base source (a general purpose 
+             timer for example or other time source), keeping in mind that Time base 
+             duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and 
+             handled in milliseconds basis.
+        (++) Time base configuration function (HAL_InitTick ()) is called automatically 
+             at the beginning of the program after reset by HAL_Init() or at any time 
+             when clock is configured, by HAL_RCC_ClockConfig(). 
+        (++) Source of time base is configured  to generate interrupts at regular 
+             time intervals. Care must be taken if HAL_Delay() is called from a 
+             peripheral ISR process, the Tick interrupt line must have higher priority 
+            (numerically lower) than the peripheral interrupt. Otherwise the caller 
+            ISR process will be blocked. 
+       (++) functions affecting time base configurations are declared as __Weak  
+             to make  override possible  in case of other  implementations in user file.
+ 
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief This function configures the Flash prefetch, 
+  *        Configures time base source, NVIC and Low level hardware
+  * @note This function is called at the beginning of program after reset and before 
+  *       the clock configuration
+  * @note The time base configuration is based on MSI clock when exiting from Reset.
+  *       Once done, time base tick start incrementing.
+  *        In the default implementation,Systick is used as source of time base.
+  *       The tick variable is incremented each 1ms in its ISR.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_Init(void)
+{
+  /* Configure Flash prefetch */
+#if (PREFETCH_ENABLE != 0)
+#if defined(STM32F101x6) || defined(STM32F101xB) || defined(STM32F101xE) || defined(STM32F101xG) || \
+    defined(STM32F102x6) || defined(STM32F102xB) || \
+    defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \
+    defined(STM32F105xC) || defined(STM32F107xC)
+
+  /* Prefetch buffer is not available on value line devices */
+  __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
+#endif
+#endif /* PREFETCH_ENABLE */
+
+  /* Set Interrupt Group Priority */
+  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
+
+  /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */
+  HAL_InitTick(TICK_INT_PRIORITY);
+
+  /* Init the low level hardware */
+  HAL_MspInit();
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief This function de-Initializes common part of the HAL and stops the source
+  *        of time base.
+  * @note This function is optional.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_DeInit(void)
+{
+  /* Reset of all peripherals */
+  __HAL_RCC_APB1_FORCE_RESET();
+  __HAL_RCC_APB1_RELEASE_RESET();
+
+  __HAL_RCC_APB2_FORCE_RESET();
+  __HAL_RCC_APB2_RELEASE_RESET();
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  __HAL_RCC_AHB_FORCE_RESET();
+  __HAL_RCC_AHB_RELEASE_RESET();
+#endif
+  
+  /* De-Init the low level hardware */
+  HAL_MspDeInit();
+    
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the MSP.
+  * @retval None
+  */
+__weak void HAL_MspInit(void)
+{
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_MspInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  DeInitializes the MSP.
+  * @retval None
+  */
+__weak void HAL_MspDeInit(void)
+{
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_MspDeInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief This function configures the source of the time base. 
+  *        The time source is configured  to have 1ms time base with a dedicated 
+  *        Tick interrupt priority.
+  * @note This function is called  automatically at the beginning of program after
+  *       reset by HAL_Init() or at any time when clock is reconfigured  by HAL_RCC_ClockConfig(). 
+  * @note In the default implementation, SysTick timer is the source of time base. 
+  *       It is used to generate interrupts at regular time intervals. 
+  *       Care must be taken if HAL_Delay() is called from a peripheral ISR process, 
+  *       The the SysTick interrupt must have higher priority (numerically lower) 
+  *       than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
+  *       The function is declared as __Weak  to be overwritten  in case of other
+  *       implementation  in user file.
+  * @param TickPriority: Tick interrupt priority.
+  * @retval HAL status
+  */
+__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
+{
+  /*Configure the SysTick to have interrupt in 1ms time basis*/
+  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
+
+  /*Configure the SysTick IRQ priority */
+  HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority ,0);
+
+   /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup HAL_Exported_Functions_Group2 HAL Control functions 
+ *  @brief    HAL Control functions
+ *
+@verbatim
+ ===============================================================================
+                      ##### HAL Control functions #####
+ ===============================================================================
+    [..]  This section provides functions allowing to:
+      (+) Provide a tick value in millisecond
+      (+) Provide a blocking delay in millisecond
+      (+) Suspend the time base source interrupt
+      (+) Resume the time base source interrupt
+      (+) Get the HAL API driver version
+      (+) Get the device identifier
+      (+) Get the device revision identifier
+      (+) Enable/Disable Debug module during Sleep mode
+      (+) Enable/Disable Debug module during STOP mode
+      (+) Enable/Disable Debug module during STANDBY mode
+      
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief This function is called to increment  a global variable "uwTick"
+  *        used as application time base.
+  * @note In the default implementation, this variable is incremented each 1ms
+  *       in Systick ISR.
+  * @note This function is declared as __weak to be overwritten in case of other 
+  *      implementations in user file.
+  * @retval None
+  */
+__weak void HAL_IncTick(void)
+{
+  uwTick++;
+}
+
+/**
+  * @brief Provides a tick value in millisecond.
+  * @note   This function is declared as __weak  to be overwritten  in case of other 
+  *       implementations in user file.
+  * @retval tick value
+  */
+__weak uint32_t HAL_GetTick(void)
+{
+  return uwTick;
+}
+
+/**
+  * @brief This function provides accurate delay (in milliseconds) based 
+  *        on variable incremented.
+  * @note In the default implementation , SysTick timer is the source of time base.
+  *       It is used to generate interrupts at regular time intervals where uwTick
+  *       is incremented.
+  * @note ThiS function is declared as __weak to be overwritten in case of other
+  *       implementations in user file.
+  * @param Delay: specifies the delay time length, in milliseconds.
+  * @retval None
+  */
+__weak void HAL_Delay(__IO uint32_t Delay)
+{
+  uint32_t tickstart = 0;
+  tickstart = HAL_GetTick();
+  while((HAL_GetTick() - tickstart) < Delay)
+  {
+  }
+}
+
+/**
+  * @brief Suspend Tick increment.
+  * @note In the default implementation , SysTick timer is the source of time base. It is
+  *       used to generate interrupts at regular time intervals. Once HAL_SuspendTick()
+  *       is called, the the SysTick interrupt will be disabled and so Tick increment 
+  *       is suspended.
+  * @note This function is declared as __weak to be overwritten in case of other
+  *       implementations in user file.
+  * @retval None
+  */
+__weak void HAL_SuspendTick(void)
+{
+  /* Disable SysTick Interrupt */
+  CLEAR_BIT(SysTick->CTRL,SysTick_CTRL_TICKINT_Msk);
+}
+
+/**
+  * @brief Resume Tick increment.
+  * @note In the default implementation , SysTick timer is the source of time base. It is
+  *       used to generate interrupts at regular time intervals. Once HAL_ResumeTick()
+  *       is called, the the SysTick interrupt will be enabled and so Tick increment 
+  *       is resumed.
+  * @note This function is declared as __weak  to be overwritten  in case of other
+  *       implementations in user file.
+  * @retval None
+  */
+__weak void HAL_ResumeTick(void)
+{
+  /* Enable SysTick Interrupt */
+  SET_BIT(SysTick->CTRL,SysTick_CTRL_TICKINT_Msk);
+}
+
+/**
+  * @brief  This method returns the HAL revision
+  * @retval version: 0xXYZR (8bits for each decimal, R for RC)
+  */
+uint32_t HAL_GetHalVersion(void)
+{
+ return __STM32F1xx_HAL_VERSION;
+}
+
+/**
+  * @brief Returns the device revision identifier.
+  * Note: On devices STM32F10xx8 and STM32F10xxB,
+  *                  STM32F101xC/D/E and STM32F103xC/D/E,
+  *                  STM32F101xF/G and STM32F103xF/G
+  *                  STM32F10xx4 and STM32F10xx6
+  *       Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in 
+  *       debug mode (not accessible by the user software in normal mode).
+  *       Refer to errata sheet of these devices for more details.
+  * @retval Device revision identifier
+  */
+uint32_t HAL_GetREVID(void)
+{
+  return((DBGMCU->IDCODE) >> POSITION_VAL(DBGMCU_IDCODE_REV_ID));
+}
+
+/**
+  * @brief  Returns the device identifier.
+  * Note: On devices STM32F10xx8 and STM32F10xxB,
+  *                  STM32F101xC/D/E and STM32F103xC/D/E,
+  *                  STM32F101xF/G and STM32F103xF/G
+  *                  STM32F10xx4 and STM32F10xx6
+  *       Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in 
+  *       debug mode (not accessible by the user software in normal mode).
+  *       Refer to errata sheet of these devices for more details.
+  * @retval Device identifier
+  */
+uint32_t HAL_GetDEVID(void)
+{
+   return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK);
+}
+
+/**
+  * @brief  Enable the Debug Module during SLEEP mode
+  * @retval None
+  */
+void HAL_DBGMCU_EnableDBGSleepMode(void)
+{
+  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
+}
+
+/**
+  * @brief  Disable the Debug Module during SLEEP mode
+  * Note: On devices STM32F10xx8 and STM32F10xxB,
+  *                  STM32F101xC/D/E and STM32F103xC/D/E,
+  *                  STM32F101xF/G and STM32F103xF/G
+  *                  STM32F10xx4 and STM32F10xx6
+  *       Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in 
+  *       debug mode (not accessible by the user software in normal mode).
+  *       Refer to errata sheet of these devices for more details.
+  * @retval None
+  */
+void HAL_DBGMCU_DisableDBGSleepMode(void)
+{
+  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
+}
+
+/**
+  * @brief  Enable the Debug Module during STOP mode
+  * Note: On devices STM32F10xx8 and STM32F10xxB,
+  *                  STM32F101xC/D/E and STM32F103xC/D/E,
+  *                  STM32F101xF/G and STM32F103xF/G
+  *                  STM32F10xx4 and STM32F10xx6
+  *       Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in 
+  *       debug mode (not accessible by the user software in normal mode).
+  *       Refer to errata sheet of these devices for more details.
+  * Note: On all STM32F1 devices:
+  *       If the system tick timer interrupt is enabled during the Stop mode 
+  *       debug (DBG_STOP bit set in the DBGMCU_CR register ), it will wakeup
+  *       the system from Stop mode.
+  *       Workaround: To debug the Stop mode, disable the system tick timer 
+  *       interrupt.
+  *       Refer to errata sheet of these devices for more details.
+  * Note: On all STM32F1 devices:
+  *       If the system tick timer interrupt is enabled during the Stop mode  
+  *       debug (DBG_STOP bit set in the DBGMCU_CR register ), it will wakeup
+  *       the system from Stop mode.
+  *       Workaround: To debug the Stop mode, disable the system tick timer
+  *       interrupt.
+  *       Refer to errata sheet of these devices for more details.
+  * @retval None
+  */
+void HAL_DBGMCU_EnableDBGStopMode(void)
+{
+  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
+}
+
+/**
+  * @brief  Disable the Debug Module during STOP mode
+  * Note: On devices STM32F10xx8 and STM32F10xxB,
+  *                  STM32F101xC/D/E and STM32F103xC/D/E,
+  *                  STM32F101xF/G and STM32F103xF/G
+  *                  STM32F10xx4 and STM32F10xx6
+  *       Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in 
+  *       debug mode (not accessible by the user software in normal mode).
+  *       Refer to errata sheet of these devices for more details.
+  * @retval None
+  */
+void HAL_DBGMCU_DisableDBGStopMode(void)
+{
+  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
+}
+
+/**
+  * @brief  Enable the Debug Module during STANDBY mode
+  * Note: On devices STM32F10xx8 and STM32F10xxB,
+  *                  STM32F101xC/D/E and STM32F103xC/D/E,
+  *                  STM32F101xF/G and STM32F103xF/G
+  *                  STM32F10xx4 and STM32F10xx6
+  *       Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in 
+  *       debug mode (not accessible by the user software in normal mode).
+  *       Refer to errata sheet of these devices for more details.
+  * @retval None
+  */
+void HAL_DBGMCU_EnableDBGStandbyMode(void)
+{
+  SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
+}
+
+/**
+  * @brief  Disable the Debug Module during STANDBY mode
+  * Note: On devices STM32F10xx8 and STM32F10xxB,
+  *                  STM32F101xC/D/E and STM32F103xC/D/E,
+  *                  STM32F101xF/G and STM32F103xF/G
+  *                  STM32F10xx4 and STM32F10xx6
+  *       Debug registers DBGMCU_IDCODE and DBGMCU_CR are accessible only in 
+  *       debug mode (not accessible by the user software in normal mode).
+  *       Refer to errata sheet of these devices for more details.
+  * @retval None
+  */
+void HAL_DBGMCU_DisableDBGStandbyMode(void)
+{
+  CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#endif /* HAL_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,494 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_cortex.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   CORTEX HAL module driver.
+  *
+  *          This file provides firmware functions to manage the following
+  *          functionalities of the CORTEX:
+  *           + Initialization and de-initialization functions
+  *           + Peripheral Control functions
+  *          
+  *  @verbatim    
+  ==============================================================================
+                        ##### How to use this driver #####
+  ==============================================================================
+
+    [..]  
+    *** How to configure Interrupts using Cortex HAL driver ***
+    ===========================================================
+    [..]     
+    This section provide functions allowing to configure the NVIC interrupts (IRQ).
+    The Cortex-M3 exceptions are managed by CMSIS functions.
+   
+    (#) Configure the NVIC Priority Grouping using HAL_NVIC_SetPriorityGrouping()
+        function according to the following table.
+
+     The table below gives the allowed values of the pre-emption priority and subpriority according
+     to the Priority Grouping configuration performed by HAL_NVIC_SetPriorityGrouping() function.
+       ==========================================================================================================================
+         NVIC_PriorityGroup   | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority  |       Description
+       ==========================================================================================================================
+        NVIC_PRIORITYGROUP_0  |                0                  |            0-15             | 0 bits for pre-emption priority
+                              |                                   |                             | 4 bits for subpriority
+       --------------------------------------------------------------------------------------------------------------------------
+        NVIC_PRIORITYGROUP_1  |                0-1                |            0-7              | 1 bits for pre-emption priority
+                              |                                   |                             | 3 bits for subpriority
+       --------------------------------------------------------------------------------------------------------------------------    
+        NVIC_PRIORITYGROUP_2  |                0-3                |            0-3              | 2 bits for pre-emption priority
+                              |                                   |                             | 2 bits for subpriority
+       --------------------------------------------------------------------------------------------------------------------------    
+        NVIC_PRIORITYGROUP_3  |                0-7                |            0-1              | 3 bits for pre-emption priority
+                              |                                   |                             | 1 bits for subpriority
+       --------------------------------------------------------------------------------------------------------------------------    
+        NVIC_PRIORITYGROUP_4  |                0-15               |            0                | 4 bits for pre-emption priority
+                              |                                   |                             | 0 bits for subpriority                       
+       ==========================================================================================================================
+     (#)  Configure the priority of the selected IRQ Channels using HAL_NVIC_SetPriority() 
+
+     (#)  Enable the selected IRQ Channels using HAL_NVIC_EnableIRQ() 
+      
+
+     -@- When the NVIC_PRIORITYGROUP_0 is selected, IRQ pre-emption is no more possible. 
+         The pending IRQ priority will be managed only by the sub priority.
+   
+     -@- IRQ priority order (sorted by highest to lowest priority):
+        (+@) Lowest pre-emption priority
+        (+@) Lowest sub priority
+        (+@) Lowest hardware priority (IRQ number)
+ 
+    [..]  
+    *** How to configure Systick using Cortex HAL driver ***
+    ========================================================
+    [..]
+    Setup SysTick Timer for 1 msec interrupts.
+           
+   (+) The HAL_SYSTICK_Config()function calls the SysTick_Config() function which
+       is a CMSIS function that:
+        (++) Configures the SysTick Reload register with value passed as function parameter.
+        (++) Configures the SysTick IRQ priority to the lowest value (0x0F).
+        (++) Resets the SysTick Counter register.
+        (++) Configures the SysTick Counter clock source to be Core Clock Source (HCLK).
+        (++) Enables the SysTick Interrupt.
+        (++) Starts the SysTick Counter.
+    
+   (+) You can change the SysTick Clock source to be HCLK_Div8 by calling the function
+       HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the
+       HAL_SYSTICK_Config() function call.
+
+   (+) You can change the SysTick IRQ priority by calling the
+       HAL_NVIC_SetPriority(SysTick_IRQn,...) function just after the HAL_SYSTICK_Config() function 
+       call. The HAL_NVIC_SetPriority() call the NVIC_SetPriority() function which is a CMSIS function.
+
+   (+) To adjust the SysTick time base, use the following formula:
+                            
+       Reload Value = SysTick Counter Clock (Hz) x  Desired Time base (s)
+       (++) Reload Value is the parameter to be passed for HAL_SYSTICK_Config() function
+       (++) Reload Value should not exceed 0xFFFFFF
+   
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup CORTEX CORTEX
+  * @brief CORTEX HAL module driver
+  * @{
+  */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/* Private functions ---------------------------------------------------------*/
+
+/** @defgroup CORTEX_Exported_Functions CORTEX Exported Functions
+  * @{
+  */
+
+
+/** @defgroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions
+ *  @brief    Initialization and Configuration functions 
+ *
+@verbatim    
+  ==============================================================================
+              ##### Initialization and de-initialization functions #####
+  ==============================================================================
+    [..]
+      This section provide the Cortex HAL driver functions allowing to configure Interrupts
+      Systick functionalities 
+
+@endverbatim
+  * @{
+  */
+
+
+/**
+  * @brief  Sets the priority grouping field (pre-emption priority and subpriority)
+  *         using the required unlock sequence.
+  * @param  PriorityGroup: The priority grouping bits length. 
+  *         This parameter can be one of the following values:
+  *         @arg NVIC_PRIORITYGROUP_0: 0 bits for pre-emption priority
+  *                                    4 bits for subpriority
+  *         @arg NVIC_PRIORITYGROUP_1: 1 bits for pre-emption priority
+  *                                    3 bits for subpriority
+  *         @arg NVIC_PRIORITYGROUP_2: 2 bits for pre-emption priority
+  *                                    2 bits for subpriority
+  *         @arg NVIC_PRIORITYGROUP_3: 3 bits for pre-emption priority
+  *                                    1 bits for subpriority
+  *         @arg NVIC_PRIORITYGROUP_4: 4 bits for pre-emption priority
+  *                                    0 bits for subpriority
+  * @note   When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. 
+  *         The pending IRQ priority will be managed only by the subpriority. 
+  * @retval None
+  */
+void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+  /* Check the parameters */
+  assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
+  
+  /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
+  NVIC_SetPriorityGrouping(PriorityGroup);
+}
+
+/**
+  * @brief  Sets the priority of an interrupt.
+  * @param  IRQn: External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))
+  * @param  PreemptPriority: The pre-emption priority for the IRQn channel.
+  *         This parameter can be a value between 0 and 15
+  *         A lower priority value indicates a higher priority 
+  * @param  SubPriority: the subpriority level for the IRQ channel.
+  *         This parameter can be a value between 0 and 15
+  *         A lower priority value indicates a higher priority.          
+  * @retval None
+  */
+void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+  uint32_t prioritygroup = 0x00;
+  
+  /* Check the parameters */
+  assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
+  assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
+  
+  prioritygroup = NVIC_GetPriorityGrouping();
+  
+  NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
+}
+
+/**
+  * @brief  Enables a device specific interrupt in the NVIC interrupt controller.
+  * @note   To configure interrupts priority correctly, the NVIC_PriorityGroupConfig()
+  *         function should be called before. 
+  * @param  IRQn External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))
+  * @retval None
+  */
+void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  /* Check the parameters */
+  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
+
+  /* Enable interrupt */
+  NVIC_EnableIRQ(IRQn);
+}
+
+/**
+  * @brief  Disables a device specific interrupt in the NVIC interrupt controller.
+  * @param  IRQn External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))  
+  * @retval None
+  */
+void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  /* Check the parameters */
+  assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
+
+
+  /* Disable interrupt */
+  NVIC_DisableIRQ(IRQn);
+}
+
+/**
+  * @brief  Initiates a system reset request to reset the MCU.
+  * @retval None
+  */
+void HAL_NVIC_SystemReset(void)
+{
+  /* System Reset */
+  NVIC_SystemReset();
+}
+
+/**
+  * @brief  Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+  *         Counter is in free running mode to generate periodic interrupts.
+  * @param  TicksNumb: Specifies the ticks Number of ticks between two interrupts.
+  * @retval status:  - 0  Function succeeded.
+  *                  - 1  Function failed.
+  */
+uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
+{
+   return SysTick_Config(TicksNumb);
+}
+/**
+  * @}
+  */
+
+/** @defgroup CORTEX_Exported_Functions_Group2 Peripheral Control functions
+ *  @brief    Cortex control functions 
+ *
+@verbatim   
+  ==============================================================================
+                      ##### Peripheral Control functions #####
+  ==============================================================================
+    [..]
+      This subsection provides a set of functions allowing to control the CORTEX
+      (NVIC, SYSTICK, MPU) functionalities. 
+ 
+      
+@endverbatim
+  * @{
+  */
+
+#if (__MPU_PRESENT == 1)
+/**
+  * @brief  Initializes and configures the Region and the memory to be protected.
+  * @param  MPU_Init: Pointer to a MPU_Region_InitTypeDef structure that contains
+  *                the initialization and configuration information.
+  * @retval None
+  */
+void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init)
+{
+  /* Check the parameters */
+  assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number));
+  assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable));
+
+  /* Set the Region number */
+  MPU->RNR = MPU_Init->Number;
+
+  if ((MPU_Init->Enable) != RESET)
+  {
+    /* Check the parameters */
+    assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec));
+    assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission));
+    assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField));
+    assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable));
+    assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable));
+    assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable));
+    assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable));
+    assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size));
+    
+    MPU->RBAR = MPU_Init->BaseAddress;
+    MPU->RASR = ((uint32_t)MPU_Init->DisableExec             << MPU_RASR_XN_Pos)   |
+                ((uint32_t)MPU_Init->AccessPermission        << MPU_RASR_AP_Pos)   |
+                ((uint32_t)MPU_Init->TypeExtField            << MPU_RASR_TEX_Pos)  |
+                ((uint32_t)MPU_Init->IsShareable             << MPU_RASR_S_Pos)    |
+                ((uint32_t)MPU_Init->IsCacheable             << MPU_RASR_C_Pos)    |
+                ((uint32_t)MPU_Init->IsBufferable            << MPU_RASR_B_Pos)    |
+                ((uint32_t)MPU_Init->SubRegionDisable        << MPU_RASR_SRD_Pos)  |
+                ((uint32_t)MPU_Init->Size                    << MPU_RASR_SIZE_Pos) |
+                ((uint32_t)MPU_Init->Enable                  << MPU_RASR_ENABLE_Pos);
+  }
+  else
+  {
+    MPU->RBAR = 0x00;
+    MPU->RASR = 0x00;
+  }
+}
+#endif /* __MPU_PRESENT */
+
+/**
+  * @brief  Gets the priority grouping field from the NVIC Interrupt Controller.
+  * @retval Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field)
+  */
+uint32_t HAL_NVIC_GetPriorityGrouping(void)
+{
+  /* Get the PRIGROUP[10:8] field value */
+  return NVIC_GetPriorityGrouping();
+}
+
+/**
+  * @brief  Gets the priority of an interrupt.
+  * @param  IRQn: External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))
+  * @param   PriorityGroup: the priority grouping bits length.
+  *         This parameter can be one of the following values:
+  *           @arg NVIC_PRIORITYGROUP_0: 0 bits for pre-emption priority
+  *                                      4 bits for subpriority
+  *           @arg NVIC_PRIORITYGROUP_1: 1 bits for pre-emption priority
+  *                                      3 bits for subpriority
+  *           @arg NVIC_PRIORITYGROUP_2: 2 bits for pre-emption priority
+  *                                      2 bits for subpriority
+  *           @arg NVIC_PRIORITYGROUP_3: 3 bits for pre-emption priority
+  *                                      1 bits for subpriority
+  *           @arg NVIC_PRIORITYGROUP_4: 4 bits for pre-emption priority
+  *                                      0 bits for subpriority
+  * @param  pPreemptPriority: Pointer on the Preemptive priority value (starting from 0).
+  * @param  pSubPriority: Pointer on the Subpriority value (starting from 0).
+  * @retval None
+  */
+void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)
+{
+  /* Check the parameters */
+  assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
+ /* Get priority for Cortex-M system or device specific interrupts */
+  NVIC_DecodePriority(NVIC_GetPriority(IRQn), PriorityGroup, pPreemptPriority, pSubPriority);
+}
+
+/**
+  * @brief  Sets Pending bit of an external interrupt.
+  * @param  IRQn External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))  
+  * @retval None
+  */
+void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{ 
+  /* Set interrupt pending */
+  NVIC_SetPendingIRQ(IRQn);
+}
+
+/**
+  * @brief Gets Pending Interrupt (reads the pending register in the NVIC 
+  *         and returns the pending bit for the specified interrupt).
+  * @param IRQn External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))  
+  * @retval status: - 0  Interrupt status is not pending.
+  *                 - 1  Interrupt status is pending.
+  */
+uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{ 
+  /* Return 1 if pending else 0 */
+  return NVIC_GetPendingIRQ(IRQn);
+}
+
+/**
+  * @brief Clears the pending bit of an external interrupt.
+  * @param IRQn External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))  
+  * @retval None
+  */
+void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{ 
+  /* Clear pending interrupt */
+  NVIC_ClearPendingIRQ(IRQn);
+}
+
+/**
+  * @brief Gets active interrupt ( reads the active register in NVIC and returns the active bit).
+  * @param IRQn External interrupt number
+  *         This parameter can be an enumerator of IRQn_Type enumeration
+  *         (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))  
+  * @retval status: - 0  Interrupt status is not pending.
+  *                 - 1  Interrupt status is pending.
+  */
+uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn)
+{ 
+  /* Return 1 if active else 0 */
+  return NVIC_GetActive(IRQn);
+}
+
+/**
+  * @brief  Configures the SysTick clock source.
+  * @param  CLKSource: specifies the SysTick clock source.
+  *         This parameter can be one of the following values:
+  *             @arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source.
+  *             @arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source.
+  * @retval None
+  */
+void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource)
+{
+  /* Check the parameters */
+  assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource));
+  if (CLKSource == SYSTICK_CLKSOURCE_HCLK)
+  {
+    SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK;
+  }
+  else
+  {
+    SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK;
+  }
+}
+
+/**
+  * @brief  This function handles SYSTICK interrupt request.
+  * @retval None
+  */
+void HAL_SYSTICK_IRQHandler(void)
+{
+  HAL_SYSTICK_Callback();
+}
+
+/**
+  * @brief  SYSTICK callback.
+  * @retval None
+  */
+__weak void HAL_SYSTICK_Callback(void)
+{
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_SYSTICK_Callback could be implemented in the user file
+   */
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,709 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_dma.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   DMA HAL module driver.
+  *    
+  *          This file provides firmware functions to manage the following 
+  *          functionalities of the Direct Memory Access (DMA) peripheral:
+  *           + Initialization and de-initialization functions
+  *           + IO operation functions
+  *           + Peripheral State and errors functions
+  @verbatim     
+  ==============================================================================      
+                        ##### How to use this driver #####
+  ============================================================================== 
+  [..]
+   (#) Enable and configure the peripheral to be connected to the DMA Channel
+       (except for internal SRAM / FLASH memories: no initialization is 
+       necessary) please refer to Reference manual for connection between peripherals
+       and DMA requests.
+
+   (#) For a given Channel, program the required configuration through the following parameters:   
+       Transfer Direction, Source and Destination data formats, 
+       Circular or Normal mode, Channel Priority level, Source and Destination Increment mode, 
+       using HAL_DMA_Init() function.
+
+   (#) Use HAL_DMA_GetState() function to return the DMA state and HAL_DMA_GetError() in case of error 
+       detection.
+                    
+   (#) Use HAL_DMA_Abort() function to abort the current transfer
+                   
+     -@-   In Memory-to-Memory transfer mode, Circular mode is not allowed.
+     *** Polling mode IO operation ***
+     =================================   
+    [..] 
+      (+) Use HAL_DMA_Start() to start DMA transfer after the configuration of Source 
+          address and destination address and the Length of data to be transferred
+      (+) Use HAL_DMA_PollForTransfer() to poll for the end of current transfer, in this  
+          case a fixed Timeout can be configured by User depending from his application.
+
+     *** Interrupt mode IO operation ***    
+     =================================== 
+    [..]
+      (+) Configure the DMA interrupt priority using HAL_NVIC_SetPriority()
+      (+) Enable the DMA IRQ handler using HAL_NVIC_EnableIRQ() 
+      (+) Use HAL_DMA_Start_IT() to start DMA transfer after the configuration of  
+          Source address and destination address and the Length of data to be transferred. 
+          In this case the DMA interrupt is configured 
+      (+) Use HAL_DMAy_Channelx_IRQHandler() called under DMA_IRQHandler() Interrupt subroutine
+      (+) At the end of data transfer HAL_DMA_IRQHandler() function is executed and user can 
+          add his own function by customization of function pointer XferCpltCallback and 
+          XferErrorCallback (i.e a member of DMA handle structure). 
+
+     *** DMA HAL driver macros list ***
+     ============================================= 
+     [..]
+       Below the list of most used macros in DMA HAL driver.
+
+       (+) __HAL_DMA_ENABLE: Enable the specified DMA Channel.
+       (+) __HAL_DMA_DISABLE: Disable the specified DMA Channel.
+       (+) __HAL_DMA_GET_FLAG: Get the DMA Channel pending flags.
+       (+) __HAL_DMA_CLEAR_FLAG: Clear the DMA Channel pending flags.
+       (+) __HAL_DMA_ENABLE_IT: Enable the specified DMA Channel interrupts.
+       (+) __HAL_DMA_DISABLE_IT: Disable the specified DMA Channel interrupts.
+       (+) __HAL_DMA_GET_IT_SOURCE: Check whether the specified DMA Channel interrupt has occurred or not. 
+
+     [..] 
+      (@) You can refer to the DMA HAL driver header file for more useful macros  
+
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup DMA DMA
+  * @brief DMA HAL module driver
+  * @{
+  */
+
+#ifdef HAL_DMA_MODULE_ENABLED
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/** @defgroup DMA_Private_Constants DMA Private Constants
+  * @{
+  */
+#define HAL_TIMEOUT_DMA_ABORT    ((uint32_t)1000)  /* 1s */
+/**
+  * @}
+  */
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/** @defgroup DMA_Private_Functions DMA Private Functions
+  * @{
+  */
+static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
+/**
+  * @}
+  */
+
+/* Exported functions ---------------------------------------------------------*/
+
+/** @defgroup DMA_Exported_Functions DMA Exported Functions
+  * @{
+  */
+
+/** @defgroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions
+ *  @brief   Initialization and de-initialization functions 
+ *
+@verbatim   
+ ===============================================================================
+             ##### Initialization and de-initialization functions  #####
+ ===============================================================================  
+    [..]
+    This section provides functions allowing to initialize the DMA Channel source
+    and destination addresses, incrementation and data sizes, transfer direction, 
+    circular/normal mode selection, memory-to-memory mode selection and Channel priority value.
+    [..]
+    The HAL_DMA_Init() function follows the DMA configuration procedures as described in
+    reference manual.  
+
+@endverbatim
+  * @{
+  */
+  
+/**
+  * @brief  Initializes the DMA according to the specified
+  *         parameters in the DMA_InitTypeDef and create the associated handle.
+  * @param  hdma: Pointer to a DMA_HandleTypeDef structure that contains
+  *               the configuration information for the specified DMA Channel.  
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)
+{ 
+  uint32_t tmp = 0;
+  
+  /* Check the DMA handle allocation */
+  if(hdma == NULL)
+  {
+    return HAL_ERROR;
+  }
+  
+  /* Check the parameters */
+  assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance));
+  assert_param(IS_DMA_DIRECTION(hdma->Init.Direction));
+  assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc));
+  assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc));
+  assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment));
+  assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment));
+  assert_param(IS_DMA_MODE(hdma->Init.Mode));
+  assert_param(IS_DMA_PRIORITY(hdma->Init.Priority));
+  
+  if(hdma->State == HAL_DMA_STATE_RESET)
+  {  
+    /* Allocate lock resource and initialize it */
+    hdma->Lock = HAL_UNLOCKED;
+  }
+  
+  /* Change DMA peripheral state */
+  hdma->State = HAL_DMA_STATE_BUSY;
+
+  /* Get the CR register value */
+  tmp = hdma->Instance->CCR;
+  
+  /* Clear PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR bits */
+  tmp &= ((uint32_t)~(DMA_CCR_PL    | DMA_CCR_MSIZE  | DMA_CCR_PSIZE  | \
+                      DMA_CCR_MINC  | DMA_CCR_PINC   | DMA_CCR_CIRC   | \
+                      DMA_CCR_DIR));
+  
+  /* Prepare the DMA Channel configuration */
+  tmp |=  hdma->Init.Direction        |
+          hdma->Init.PeriphInc           | hdma->Init.MemInc           |
+          hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment |
+          hdma->Init.Mode                | hdma->Init.Priority;
+
+  /* Write to DMA Channel CR register */
+  hdma->Instance->CCR = tmp;  
+  
+  /* Initialise the error code */
+  hdma->ErrorCode = HAL_DMA_ERROR_NONE;
+
+  /* Initialize the DMA state*/
+  hdma->State = HAL_DMA_STATE_READY;
+  
+  return HAL_OK;
+}
+
+/**
+  * @brief  DeInitializes the DMA peripheral 
+  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains
+  *               the configuration information for the specified DMA Channel.  
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma)
+{
+  /* Check the DMA handle allocation */
+  if(hdma == NULL)
+  {
+    return HAL_ERROR;
+  }
+  
+  /* Check the parameters */
+  assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance));
+
+  /* Check the DMA peripheral state */
+  if(hdma->State == HAL_DMA_STATE_BUSY)
+  {
+     return HAL_ERROR;
+  }
+
+  /* Disable the selected DMA Channelx */
+  __HAL_DMA_DISABLE(hdma);
+  
+  /* Reset DMA Channel control register */
+  hdma->Instance->CCR  = 0;
+  
+  /* Reset DMA Channel Number of Data to Transfer register */
+  hdma->Instance->CNDTR = 0;
+  
+  /* Reset DMA Channel peripheral address register */
+  hdma->Instance->CPAR  = 0;
+  
+  /* Reset DMA Channel memory address register */
+  hdma->Instance->CMAR = 0;
+
+  /* Clear all flags */
+  __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma));
+  __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma));
+  __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma));
+  
+  /* Initialize the error code */
+  hdma->ErrorCode = HAL_DMA_ERROR_NONE;
+
+  /* Initialize the DMA state */
+  hdma->State = HAL_DMA_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(hdma);
+
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup DMA_Exported_Functions_Group2 Input and Output operation functions 
+ *  @brief   I/O operation functions  
+ *
+@verbatim   
+ ===============================================================================
+                      #####  IO operation functions  #####
+ ===============================================================================  
+    [..]  This section provides functions allowing to:
+      (+) Configure the source, destination address and data length and Start DMA transfer
+      (+) Configure the source, destination address and data length and 
+          Start DMA transfer with interrupt
+      (+) Abort DMA transfer
+      (+) Poll for transfer complete
+      (+) Handle DMA interrupt request  
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Starts the DMA Transfer.
+  * @param  hdma      : pointer to a DMA_HandleTypeDef structure that contains
+  *                     the configuration information for the specified DMA Channel.  
+  * @param  SrcAddress: The source memory Buffer address
+  * @param  DstAddress: The destination memory Buffer address
+  * @param  DataLength: The length of data to be transferred from source to destination
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
+{
+  /* Process locked */
+  __HAL_LOCK(hdma);
+
+  /* Change DMA peripheral state */
+  hdma->State = HAL_DMA_STATE_BUSY;
+
+   /* Check the parameters */
+  assert_param(IS_DMA_BUFFER_SIZE(DataLength));
+  
+  /* Disable the peripheral */
+  __HAL_DMA_DISABLE(hdma);
+  
+  /* Configure the source, destination address and the data length */
+  DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength);
+
+  /* Enable the Peripheral */
+  __HAL_DMA_ENABLE(hdma);
+
+  return HAL_OK; 
+}
+
+/**
+  * @brief  Start the DMA Transfer with interrupt enabled.
+  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains
+  *                     the configuration information for the specified DMA Channel.  
+  * @param  SrcAddress: The source memory Buffer address
+  * @param  DstAddress: The destination memory Buffer address
+  * @param  DataLength: The length of data to be transferred from source to destination
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
+{
+  /* Process locked */
+  __HAL_LOCK(hdma);
+
+  /* Change DMA peripheral state */
+  hdma->State = HAL_DMA_STATE_BUSY;
+
+   /* Check the parameters */
+  assert_param(IS_DMA_BUFFER_SIZE(DataLength));
+  
+  /* Disable the peripheral */
+  __HAL_DMA_DISABLE(hdma);
+  
+  /* Configure the source, destination address and the data length */
+  DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength);
+  
+  /* Enable the transfer complete interrupt */
+  __HAL_DMA_ENABLE_IT(hdma, DMA_IT_TC);
+
+  /* Enable the Half transfer complete interrupt */
+  __HAL_DMA_ENABLE_IT(hdma, DMA_IT_HT);  
+
+  /* Enable the transfer Error interrupt */
+  __HAL_DMA_ENABLE_IT(hdma, DMA_IT_TE);
+  
+   /* Enable the Peripheral */
+  __HAL_DMA_ENABLE(hdma);
+  
+  return HAL_OK;
+} 
+
+/**
+  * @brief  Aborts the DMA Transfer.
+  * @param  hdma  : pointer to a DMA_HandleTypeDef structure that contains
+  *                 the configuration information for the specified DMA Channel.
+  *                   
+  * @note  After disabling a DMA Channel, a check for wait until the DMA Channel is 
+  *        effectively disabled is added. If a Channel is disabled 
+  *        while a data transfer is ongoing, the current data will be transferred
+  *        and the Channel will be effectively disabled only after the transfer of
+  *        this single data is finished.  
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
+{
+  uint32_t tickstart = 0x00;
+  
+  /* Disable the channel */
+  __HAL_DMA_DISABLE(hdma);
+
+  /* Get tick */
+  tickstart = HAL_GetTick();
+  
+  /* Check if the DMA Channel is effectively disabled */
+  while((hdma->Instance->CCR & DMA_CCR_EN) != 0)
+  {
+    /* Check for the Timeout */
+    if((HAL_GetTick() - tickstart) > HAL_TIMEOUT_DMA_ABORT)
+    {
+      /* Update error code */
+      SET_BIT(hdma->ErrorCode, HAL_DMA_ERROR_TIMEOUT);
+
+      /* Change the DMA state */
+      hdma->State = HAL_DMA_STATE_TIMEOUT;
+
+      /* Process Unlocked */
+      __HAL_UNLOCK(hdma);
+
+      return HAL_TIMEOUT;
+    }
+  }
+  /* Change the DMA state */
+  hdma->State = HAL_DMA_STATE_READY;
+  
+  /* Process Unlocked */
+  __HAL_UNLOCK(hdma);
+  
+  return HAL_OK;
+}
+
+/**
+  * @brief  Polling for transfer complete.
+  * @param  hdma:    pointer to a DMA_HandleTypeDef structure that contains
+  *                  the configuration information for the specified DMA Channel.
+  * @param  CompleteLevel: Specifies the DMA level complete.  
+  * @param  Timeout:       Timeout duration.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t Timeout)
+{
+  uint32_t temp;
+  uint32_t tickstart = 0x00;
+  
+  /* Get the level transfer complete flag */
+  if(CompleteLevel == HAL_DMA_FULL_TRANSFER)
+  {
+    /* Transfer Complete flag */
+    temp = __HAL_DMA_GET_TC_FLAG_INDEX(hdma);
+  }
+  else
+  {
+    /* Half Transfer Complete flag */
+    temp = __HAL_DMA_GET_HT_FLAG_INDEX(hdma);
+  }
+
+  /* Get tick */
+  tickstart = HAL_GetTick();
+
+  while(__HAL_DMA_GET_FLAG(hdma, temp) == RESET)
+  {
+    if((__HAL_DMA_GET_FLAG(hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)) != RESET))
+    {      
+      /* Clear the transfer error flags */
+      __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma));
+      
+      /* Update error code */
+      SET_BIT(hdma->ErrorCode, HAL_DMA_ERROR_TE);
+
+      /* Change the DMA state */
+      hdma->State= HAL_DMA_STATE_ERROR;
+      
+      /* Process Unlocked */
+      __HAL_UNLOCK(hdma);
+      
+      return HAL_ERROR;
+    }
+    /* Check for the Timeout */
+    if(Timeout != HAL_MAX_DELAY)
+    {
+      if((Timeout == 0) || ((HAL_GetTick() - tickstart) > Timeout))
+      {
+        /* Update error code */
+        SET_BIT(hdma->ErrorCode, HAL_DMA_ERROR_TIMEOUT);
+        
+        /* Change the DMA state */
+        hdma->State = HAL_DMA_STATE_TIMEOUT;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(hdma);
+        
+        return HAL_TIMEOUT;
+      }
+    }
+  }
+
+  if(CompleteLevel == HAL_DMA_FULL_TRANSFER)
+  {
+    /* Clear the transfer complete flag */
+    __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma));
+
+    /* The selected Channelx EN bit is cleared (DMA is disabled and 
+    all transfers are complete) */
+    hdma->State = HAL_DMA_STATE_READY;
+
+  }
+  else
+  { 
+    /* Clear the half transfer complete flag */
+    __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma));
+  
+    /* The selected Channelx EN bit is cleared (DMA is disabled and 
+    all transfers of half buffer are complete) */
+    hdma->State = HAL_DMA_STATE_READY_HALF;
+  }
+  
+  /* Process unlocked */
+  __HAL_UNLOCK(hdma);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Handles DMA interrupt request.
+  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains
+  *               the configuration information for the specified DMA Channel.  
+  * @retval None
+  */
+void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
+{
+  /* Transfer Error Interrupt management ***************************************/
+  if(__HAL_DMA_GET_FLAG(hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)) != RESET)
+  {
+    if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != RESET)
+    {
+      /* Disable the transfer error interrupt */
+      __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE);
+      
+      /* Clear the transfer error flag */
+      __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma));
+      
+      /* Update error code */
+      SET_BIT(hdma->ErrorCode, HAL_DMA_ERROR_TE);
+      
+      /* Change the DMA state */
+      hdma->State = HAL_DMA_STATE_ERROR;
+      
+      /* Process Unlocked */
+      __HAL_UNLOCK(hdma); 
+      
+      if (hdma->XferErrorCallback != NULL)
+      {
+        /* Transfer error callback */
+        hdma->XferErrorCallback(hdma);
+      }
+    }
+  }
+
+  /* Half Transfer Complete Interrupt management ******************************/
+  if(__HAL_DMA_GET_FLAG(hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)) != RESET)
+  {
+    if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_HT) != RESET)
+    { 
+      /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */
+      if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0)
+      {
+        /* Disable the half transfer interrupt */
+        __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT);
+      }
+      /* Clear the half transfer complete flag */
+      __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma));
+
+      /* Change DMA peripheral state */
+      hdma->State = HAL_DMA_STATE_READY_HALF;
+
+      if(hdma->XferHalfCpltCallback != NULL)
+      {
+        /* Half transfer callback */
+        hdma->XferHalfCpltCallback(hdma);
+      }
+    }
+  }
+  
+  /* Transfer Complete Interrupt management ***********************************/
+  if(__HAL_DMA_GET_FLAG(hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma)) != RESET)
+  {
+    if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != RESET)
+    {
+      if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0)
+      {
+        /* Disable the transfer complete interrupt */
+        __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TC);
+      }
+      /* Clear the transfer complete flag */
+      __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma));
+    
+      /* Update error code */
+      SET_BIT(hdma->ErrorCode, HAL_DMA_ERROR_NONE);
+
+      /* Change the DMA state */
+      hdma->State = HAL_DMA_STATE_READY;
+    
+      /* Process Unlocked */
+      __HAL_UNLOCK(hdma);
+    
+      if(hdma->XferCpltCallback != NULL)
+      {       
+        /* Transfer complete callback */
+        hdma->XferCpltCallback(hdma);
+      }
+    }
+  }
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup DMA_Exported_Functions_Group3 Peripheral State functions
+ *  @brief    Peripheral State functions 
+ *
+@verbatim   
+ ===============================================================================
+                    ##### State and Errors functions #####
+ ===============================================================================
+    [..]
+    This subsection provides functions allowing to
+      (+) Check the DMA state
+      (+) Get error code
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Returns the DMA state.
+  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains
+  *               the configuration information for the specified DMA Channel.  
+  * @retval HAL state
+  */
+HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma)
+{
+  return hdma->State;
+}
+
+/**
+  * @brief  Return the DMA error code
+  * @param  hdma : pointer to a DMA_HandleTypeDef structure that contains
+  *              the configuration information for the specified DMA Channel.
+  * @retval DMA Error Code
+  */
+uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)
+{
+  return hdma->ErrorCode;
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup DMA_Private_Functions DMA Private Functions
+  * @{
+  */
+
+/**
+  * @brief  Sets the DMA Transfer parameter.
+  * @param  hdma:       pointer to a DMA_HandleTypeDef structure that contains
+  *                     the configuration information for the specified DMA Channel.  
+  * @param  SrcAddress: The source memory Buffer address
+  * @param  DstAddress: The destination memory Buffer address
+  * @param  DataLength: The length of data to be transferred from source to destination
+  * @retval HAL status
+  */
+static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
+{
+  /* Configure DMA Channel data length */
+  hdma->Instance->CNDTR = DataLength;
+  
+  /* Peripheral to Memory */
+  if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)
+  {
+    /* Configure DMA Channel destination address */
+    hdma->Instance->CPAR = DstAddress;
+    
+    /* Configure DMA Channel source address */
+    hdma->Instance->CMAR = SrcAddress;
+  }
+  /* Memory to Peripheral */
+  else
+  {
+    /* Configure DMA Channel source address */
+    hdma->Instance->CPAR = SrcAddress;
+    
+    /* Configure DMA Channel destination address */
+    hdma->Instance->CMAR = DstAddress;
+  }
+}
+
+/**
+  * @}
+  */
+
+#endif /* HAL_DMA_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,974 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_flash.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   FLASH HAL module driver.
+  *          This file provides firmware functions to manage the following 
+  *          functionalities of the internal FLASH memory:
+  *           + Program operations functions
+  *           + Memory Control functions 
+  *           + Peripheral State functions
+  *         
+  @verbatim
+  ==============================================================================
+                        ##### FLASH peripheral features #####
+  ==============================================================================
+  [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses 
+       to the Flash memory. It implements the erase and program Flash memory operations 
+       and the read and write protection mechanisms.
+
+  [..] The Flash memory interface accelerates code execution with a system of instruction
+      prefetch. 
+
+  [..] The FLASH main features are:
+      (+) Flash memory read operations
+      (+) Flash memory program/erase operations
+      (+) Read / write protections
+      (+) Prefetch on I-Code
+      (+) Option Bytes programming
+
+
+                     ##### How to use this driver #####
+  ==============================================================================
+  [..]                             
+      This driver provides functions and macros to configure and program the FLASH 
+      memory of all STM32F1xx devices.
+    
+      (#) FLASH Memory I/O Programming functions: this group includes all needed
+          functions to erase and program the main memory:
+        (++) Lock and Unlock the FLASH interface
+        (++) Erase function: Erase page, erase all pages
+        (++) Program functions: half word, word and doubleword
+    
+      (#) FLASH Option Bytes Programming functions: this group includes all needed
+          functions to manage the Option Bytes:
+        (++) Lock and Unlock the Option Bytes
+        (++) Set/Reset the write protection
+        (++) Set the Read protection Level
+        (++) Program the user Option Bytes
+        (++) Launch the Option Bytes loader
+        (++) Erase Option Bytes
+        (++) Program the data Option Bytes
+        (++) Get the Write protection.
+        (++) Get the user option bytes.
+    
+      (#) Interrupts and flags management functions : this group 
+          includes all needed functions to:
+        (++) Handle FLASH interrupts
+        (++) Wait for last FLASH operation according to its status
+        (++) Get error flag status           
+
+  [..] In addition to these function, this driver includes a set of macros allowing
+       to handle the following operations:
+      
+      (+) Set/Get the latency
+      (+) Enable/Disable the prefetch buffer
+      (+) Enable/Disable the half cycle access
+      (+) Enable/Disable the FLASH interrupts
+      (+) Monitor the FLASH flags status
+          
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************  
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+
+/** @defgroup FLASH FLASH
+  * @brief FLASH HAL module driver
+  * @{
+  */
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/** @defgroup FLASH_Private_Constants FLASH Private Constants
+  * @{
+  */
+/**
+  * @}
+  */
+
+/* Private macro ---------------------------- ---------------------------------*/
+/** @defgroup FLASH_Private_Macros FLASH Private Macros
+  * @{
+  */
+ 
+/**
+  * @}
+  */
+
+/* Private variables ---------------------------------------------------------*/
+/** @defgroup FLASH_Private_Variables FLASH Private Variables
+  * @{
+  */
+/* Variables used for Erase pages under interruption*/
+FLASH_ProcessTypeDef pFlash;
+/**
+  * @}
+  */
+
+/* Private function prototypes -----------------------------------------------*/
+/** @defgroup FLASH_Private_Functions FLASH Private Functions
+  * @{
+  */
+static  void   FLASH_Program_HalfWord(uint32_t Address, uint16_t Data);
+static  void   FLASH_SetErrorCode(void);
+/**
+  * @}
+  */
+
+/* Exported functions ---------------------------------------------------------*/
+/** @defgroup FLASH_Exported_Functions FLASH Exported Functions
+  * @{
+  */
+  
+/** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions 
+  *  @brief   Programming operation functions 
+  *
+@verbatim   
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Program halfword, word or double word at a specified address
+  * @note   The function HAL_FLASH_Unlock() should be called before to unlock the FLASH interface
+  *         The function HAL_FLASH_Lock() should be called after to lock the FLASH interface
+  *
+  * @note   If an erase and a program operations are requested simultaneously,    
+  *         the erase operation is performed before the program one.
+  *  
+  * @note   FLASH should be previously erased before new programmation (only exception to this 
+  *         is when 0x0000 is programmed)
+  *
+  * @param  TypeProgram:  Indicate the way to program at a specified address.
+  *                       This parameter can be a value of @ref FLASH_Type_Program
+  * @param  Address:      Specifies the address to be programmed.
+  * @param  Data:         Specifies the data to be programmed
+  * 
+  * @retval HAL_StatusTypeDef HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
+{
+  HAL_StatusTypeDef status = HAL_ERROR;
+  uint8_t index = 0;
+  uint8_t nbiterations = 0;
+  
+  /* Process Locked */
+  __HAL_LOCK(&pFlash);
+
+  /* Check the parameters */
+  assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
+  assert_param(IS_FLASH_PROGRAM_ADDRESS(Address));
+
+#if defined(FLASH_BANK2_END)
+  if(Address <= FLASH_BANK1_END)
+  {
+#endif /* FLASH_BANK2_END */
+    /* Wait for last operation to be completed */
+    status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+#if defined(FLASH_BANK2_END)
+  }
+  else
+  {
+    /* Wait for last operation to be completed */
+    status = FLASH_WaitForLastOperationBank2((uint32_t)FLASH_TIMEOUT_VALUE);
+  }
+#endif /* FLASH_BANK2_END */
+  
+  if(status == HAL_OK)
+  {
+    if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD)
+    {
+      /* Program halfword (16-bit) at a specified address. */
+      nbiterations = 1;
+    }
+    else if(TypeProgram == FLASH_TYPEPROGRAM_WORD)
+    {
+      /* Program word (32-bit = 2*16-bit) at a specified address. */
+      nbiterations = 2;
+    }
+    else
+    {
+      /* Program double word (64-bit = 4*16-bit) at a specified address. */
+      nbiterations = 4;
+    }
+
+    for (index = 0; index < nbiterations; index++)
+    {
+      FLASH_Program_HalfWord((Address + (2*index)), (uint16_t)(Data >> (16*index)));
+
+#if defined(FLASH_BANK2_END)
+      if(Address <= FLASH_BANK1_END)
+      {
+#endif /* FLASH_BANK2_END */
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+    
+        /* If the program operation is completed, disable the PG Bit */
+        CLEAR_BIT(FLASH->CR, FLASH_CR_PG);
+#if defined(FLASH_BANK2_END)
+      }
+      else
+      {
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperationBank2((uint32_t)FLASH_TIMEOUT_VALUE);
+        
+        /* If the program operation is completed, disable the PG Bit */
+        CLEAR_BIT(FLASH->CR2, FLASH_CR2_PG);
+      }
+#endif /* FLASH_BANK2_END */
+      /* In case of error, stop programation procedure */
+      if (status != HAL_OK)
+      {
+        break;
+      }
+    }
+  }
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(&pFlash);
+
+  return status;
+}
+
+/**
+  * @brief  Program halfword, word or double word at a specified address  with interrupt enabled.
+  * @note   The function HAL_FLASH_Unlock() should be called before to unlock the FLASH interface
+  *         The function HAL_FLASH_Lock() should be called after to lock the FLASH interface
+  *
+  * @note   If an erase and a program operations are requested simultaneously,    
+  *         the erase operation is performed before the program one.
+  *
+  * @param  TypeProgram: Indicate the way to program at a specified address.
+  *                      This parameter can be a value of @ref FLASH_Type_Program
+  * @param  Address:     Specifies the address to be programmed.
+  * @param  Data:        Specifies the data to be programmed
+  * 
+  * @retval HAL_StatusTypeDef HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
+{
+  HAL_StatusTypeDef status = HAL_OK;
+  
+  /* Process Locked */
+  __HAL_LOCK(&pFlash);
+
+  /* Check the parameters */
+  assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
+  assert_param(IS_FLASH_PROGRAM_ADDRESS(Address));
+
+#if defined(FLASH_BANK2_END)
+  /* If procedure already ongoing, reject the next one */
+  if (pFlash.ProcedureOnGoing != FLASH_PROC_NONE)
+  {
+    return HAL_ERROR;
+  }
+  
+  if(Address <= FLASH_BANK1_END)
+  {
+    /* Enable End of FLASH Operation and Error source interrupts */
+    __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP_BANK1 | FLASH_IT_ERR_BANK1);
+
+  }else
+  {
+    /* Enable End of FLASH Operation and Error source interrupts */
+    __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP_BANK2 | FLASH_IT_ERR_BANK2);
+  }
+#else
+  /* Enable End of FLASH Operation and Error source interrupts */
+  __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR);
+#endif /* FLASH_BANK2_END */
+  
+  pFlash.Address = Address;
+  pFlash.Data = Data;
+
+  if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD)
+  {
+    pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAMHALFWORD;
+    /*Program halfword (16-bit) at a specified address.*/
+    pFlash.DataRemaining = 1;
+  }
+  else if(TypeProgram == FLASH_TYPEPROGRAM_WORD)
+  {
+    pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAMWORD;
+    /*Program word (32-bit : 2*16-bit) at a specified address.*/
+    pFlash.DataRemaining = 2;
+  }
+  else
+  {
+    pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAMDOUBLEWORD;
+    /*Program double word (64-bit : 4*16-bit) at a specified address.*/
+    pFlash.DataRemaining = 4;
+  }
+
+  /*Program halfword (16-bit) at a specified address.*/
+  FLASH_Program_HalfWord(Address, (uint16_t)Data);
+
+  return status;
+}
+
+/**
+  * @brief This function handles FLASH interrupt request.
+  * @retval None
+  */
+void HAL_FLASH_IRQHandler(void)
+{
+  uint32_t addresstmp = 0;
+  
+  /* Check FLASH operation error flags */
+#if defined(FLASH_BANK2_END)
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR_BANK1) || __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR_BANK1) || \
+    (__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR_BANK2) || __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR_BANK2)))
+#else
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) ||__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR))
+#endif /* FLASH_BANK2_END */
+  {
+    /*return the faulty address*/
+    addresstmp = pFlash.Address;
+    /* Reset address */
+    pFlash.Address = 0xFFFFFFFF;
+  
+    /*Save the Error code*/
+    FLASH_SetErrorCode();
+    
+    /* FLASH error interrupt user callback */
+    HAL_FLASH_OperationErrorCallback(addresstmp);
+
+    /* Stop the procedure ongoing*/
+    pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
+  }
+
+  /* Check FLASH End of Operation flag  */
+#if defined(FLASH_BANK2_END)
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP_BANK1))
+  {
+    /* Clear FLASH End of Operation pending bit */
+    __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP_BANK1);
+#else
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
+  {
+    /* Clear FLASH End of Operation pending bit */
+    __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
+#endif /* FLASH_BANK2_END */
+    
+    /* Process can continue only if no error detected */
+    if(pFlash.ProcedureOnGoing != FLASH_PROC_NONE)
+    {
+      if(pFlash.ProcedureOnGoing == FLASH_PROC_PAGEERASE)
+      {
+        /* Nb of pages to erased can be decreased */
+        pFlash.DataRemaining--;
+
+        /* Check if there are still pages to erase*/
+        if(pFlash.DataRemaining != 0)
+        {
+          addresstmp = pFlash.Address;
+          /*Indicate user which sector has been erased*/
+          HAL_FLASH_EndOfOperationCallback(addresstmp);
+
+          /*Increment sector number*/
+          addresstmp = pFlash.Address + FLASH_PAGE_SIZE;
+          pFlash.Address = addresstmp;
+
+          /* If the erase operation is completed, disable the PER Bit */
+          CLEAR_BIT(FLASH->CR, FLASH_CR_PER);
+
+          FLASH_PageErase(addresstmp);
+        }
+        else
+        {
+          /*No more pages to Erase, user callback can be called.*/
+          /*Reset Sector and stop Erase pages procedure*/
+          pFlash.Address = addresstmp = 0xFFFFFFFF;
+          pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
+          /* FLASH EOP interrupt user callback */
+          HAL_FLASH_EndOfOperationCallback(addresstmp);
+        }
+      }
+      else if(pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE)
+      {
+        /* Operation is completed, disable the MER Bit */
+        CLEAR_BIT(FLASH->CR, FLASH_CR_MER);
+
+#if defined(FLASH_BANK2_END)
+        /* Stop Mass Erase procedure if no pending mass erase on other bank */
+        if (HAL_IS_BIT_CLR(FLASH->CR2, FLASH_CR2_MER))
+        {
+#endif /* FLASH_BANK2_END */
+          /* MassErase ended. Return the selected bank*/
+          /* FLASH EOP interrupt user callback */
+          HAL_FLASH_EndOfOperationCallback(0);
+
+          /* Stop Mass Erase procedure*/
+          pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
+        }
+#if defined(FLASH_BANK2_END)
+      }
+#endif /* FLASH_BANK2_END */
+      else
+      {
+        /* Nb of 16-bit data to program can be decreased */
+        pFlash.DataRemaining--;
+        
+        /* Check if there are still 16-bit data to program */
+        if(pFlash.DataRemaining != 0)
+        {
+          /* Increment address to 16-bit */
+          pFlash.Address += 2;
+          addresstmp = pFlash.Address;
+          
+          /* Shift to have next 16-bit data */
+          pFlash.Data = (pFlash.Data >> 16);
+          
+          /* Operation is completed, disable the PG Bit */
+          CLEAR_BIT(FLASH->CR, FLASH_CR_PG);
+
+          /*Program halfword (16-bit) at a specified address.*/
+          FLASH_Program_HalfWord(addresstmp, (uint16_t)pFlash.Data);
+        }
+        else
+        {
+          /*Program ended. Return the selected address*/
+          /* FLASH EOP interrupt user callback */
+          if (pFlash.ProcedureOnGoing == FLASH_PROC_PROGRAMHALFWORD)
+          {
+            HAL_FLASH_EndOfOperationCallback(pFlash.Address);
+          }
+          else if (pFlash.ProcedureOnGoing == FLASH_PROC_PROGRAMWORD)
+          {
+            HAL_FLASH_EndOfOperationCallback(pFlash.Address - 2);
+          }
+          else 
+          {
+            HAL_FLASH_EndOfOperationCallback(pFlash.Address - 6);
+          }
+        
+          /* Reset Address and stop Program procedure*/
+          pFlash.Address = 0xFFFFFFFF;
+          pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
+        }
+      }
+    }
+  }
+  
+#if defined(FLASH_BANK2_END)
+  /* Check FLASH End of Operation flag  */
+  if(__HAL_FLASH_GET_FLAG( FLASH_FLAG_EOP_BANK2))
+  {
+    /* Clear FLASH End of Operation pending bit */
+    __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP_BANK2);
+    
+    /* Process can continue only if no error detected */
+    if(pFlash.ProcedureOnGoing != FLASH_PROC_NONE)
+    {
+      if(pFlash.ProcedureOnGoing == FLASH_PROC_PAGEERASE)
+      {
+        /* Nb of pages to erased can be decreased */
+        pFlash.DataRemaining--;
+        
+        /* Check if there are still pages to erase*/
+        if(pFlash.DataRemaining != 0)
+        {
+          /* Indicate user which page address has been erased*/
+          HAL_FLASH_EndOfOperationCallback(pFlash.Address);
+        
+          /* Increment page address to next page */
+          pFlash.Address += FLASH_PAGE_SIZE;
+          addresstmp = pFlash.Address;
+
+          /* Operation is completed, disable the PER Bit */
+          CLEAR_BIT(FLASH->CR2, FLASH_CR2_PER);
+
+          FLASH_PageErase(addresstmp);
+        }
+        else
+        {
+          /*No more pages to Erase*/
+          
+          /*Reset Address and stop Erase pages procedure*/
+          pFlash.Address = 0xFFFFFFFF;
+          pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
+
+          /* FLASH EOP interrupt user callback */
+          HAL_FLASH_EndOfOperationCallback(pFlash.Address);
+        }
+      }
+      else if(pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE)
+      {
+        /* Operation is completed, disable the MER Bit */
+        CLEAR_BIT(FLASH->CR2, FLASH_CR2_MER);
+
+        if (HAL_IS_BIT_CLR(FLASH->CR, FLASH_CR_MER))
+        {
+          /* MassErase ended. Return the selected bank*/
+          /* FLASH EOP interrupt user callback */
+          HAL_FLASH_EndOfOperationCallback(0);
+        
+          pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
+        }
+      }
+      else
+      {
+        /* Nb of 16-bit data to program can be decreased */
+        pFlash.DataRemaining--;
+        
+        /* Check if there are still 16-bit data to program */
+        if(pFlash.DataRemaining != 0)
+        {
+          /* Increment address to 16-bit */
+          pFlash.Address += 2;
+          addresstmp = pFlash.Address;
+          
+          /* Shift to have next 16-bit data */
+          pFlash.Data = (pFlash.Data >> 16);
+          
+          /* Operation is completed, disable the PG Bit */
+          CLEAR_BIT(FLASH->CR2, FLASH_CR2_PG);
+
+          /*Program halfword (16-bit) at a specified address.*/
+          FLASH_Program_HalfWord(addresstmp, (uint16_t)pFlash.Data);
+        }
+        else
+        {
+          /*Program ended. Return the selected address*/
+          /* FLASH EOP interrupt user callback */
+          if (pFlash.ProcedureOnGoing == FLASH_PROC_PROGRAMHALFWORD)
+          {
+            HAL_FLASH_EndOfOperationCallback(pFlash.Address);
+          }
+          else if (pFlash.ProcedureOnGoing == FLASH_PROC_PROGRAMWORD)
+          {
+            HAL_FLASH_EndOfOperationCallback(pFlash.Address-2);
+          }
+          else 
+          {
+            HAL_FLASH_EndOfOperationCallback(pFlash.Address-6);
+          }
+          
+          /* Reset Address and stop Program procedure*/
+          pFlash.Address = 0xFFFFFFFF;
+          pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
+        }
+      }
+    }
+  }
+#endif 
+
+  if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE)
+  {
+#if defined(FLASH_BANK2_END)
+    /* Operation is completed, disable the PG, PER and MER Bits for both bank */
+    CLEAR_BIT(FLASH->CR, (FLASH_CR_PG | FLASH_CR_PER | FLASH_CR_MER));
+    CLEAR_BIT(FLASH->CR2, (FLASH_CR2_PG | FLASH_CR2_PER | FLASH_CR2_MER));  
+  
+    /* Disable End of FLASH Operation and Error source interrupts for both banks */
+    __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP_BANK1 | FLASH_IT_ERR_BANK1 | FLASH_IT_EOP_BANK2 | FLASH_IT_ERR_BANK2);
+#else
+    /* Operation is completed, disable the PG, PER and MER Bits */
+    CLEAR_BIT(FLASH->CR, (FLASH_CR_PG | FLASH_CR_PER | FLASH_CR_MER));
+
+    /* Disable End of FLASH Operation and Error source interrupts */
+    __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR);
+#endif /* FLASH_BANK2_END */
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(&pFlash);
+  }
+}
+
+
+/**
+  * @brief  FLASH end of operation interrupt callback
+  * @param  ReturnValue: The value saved in this parameter depends on the ongoing procedure
+  *                 - Mass Erase: No return value expected
+  *                 - Pages Erase: Address of the page which has been erased 
+  *                    (if 0xFFFFFFFF, it means that all the selected pages have been erased)
+  *                 - Program: Address which was selected for data program
+  * @retval none
+  */
+__weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(ReturnValue);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_FLASH_EndOfOperationCallback could be implemented in the user file
+   */ 
+}
+
+/**
+  * @brief  FLASH operation error interrupt callback
+  * @param  ReturnValue: The value saved in this parameter depends on the ongoing procedure
+  *                 - Mass Erase: No return value expected
+  *                 - Pages Erase: Address of the page which returned an error
+  *                 - Program: Address which was selected for data program
+  * @retval none
+  */
+__weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(ReturnValue);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_FLASH_OperationErrorCallback could be implemented in the user file
+   */ 
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions 
+ *  @brief   management functions 
+ *
+@verbatim   
+ ===============================================================================
+                      ##### Peripheral Control functions #####
+ ===============================================================================  
+    [..]
+    This subsection provides a set of functions allowing to control the FLASH 
+    memory operations.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Unlock the FLASH control register access
+  * @retval HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASH_Unlock(void)
+{
+  if (HAL_IS_BIT_SET(FLASH->CR, FLASH_CR_LOCK))
+  {
+    /* Authorize the FLASH Registers access */
+    WRITE_REG(FLASH->KEYR, FLASH_KEY1);
+    WRITE_REG(FLASH->KEYR, FLASH_KEY2);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+#if defined(FLASH_BANK2_END)
+  if (HAL_IS_BIT_SET(FLASH->CR2, FLASH_CR2_LOCK))
+  {
+    /* Authorize the FLASH BANK2 Registers access */
+    WRITE_REG(FLASH->KEYR2, FLASH_KEY1);
+    WRITE_REG(FLASH->KEYR2, FLASH_KEY2);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+  
+#endif /* FLASH_BANK2_END */
+  return HAL_OK; 
+}
+
+/**
+  * @brief  Locks the FLASH control register access
+  * @retval HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASH_Lock(void)
+{
+  /* Set the LOCK Bit to lock the FLASH Registers access */
+  SET_BIT(FLASH->CR, FLASH_CR_LOCK);
+  
+#if defined(FLASH_BANK2_END)
+  /* Set the LOCK Bit to lock the FLASH BANK2 Registers access */
+  SET_BIT(FLASH->CR2, FLASH_CR2_LOCK);
+#endif /* FLASH_BANK2_END */
+
+  return HAL_OK;  
+}
+
+
+/**
+  * @brief  Unlock the FLASH Option Control Registers access.
+  * @retval HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)
+{
+  if (HAL_IS_BIT_CLR(FLASH->CR, FLASH_CR_OPTWRE))
+  {
+    /* Authorizes the Option Byte register programming */
+    WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY1);
+    WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }  
+  
+  return HAL_OK;  
+}
+
+/**
+  * @brief  Lock the FLASH Option Control Registers access.
+  * @retval HAL Status 
+  */
+HAL_StatusTypeDef HAL_FLASH_OB_Lock(void)
+{
+  /* Clear the OPTWRE Bit to lock the FLASH Option Byte Registers access */
+  CLEAR_BIT(FLASH->CR, FLASH_CR_OPTWRE);
+  
+  return HAL_OK;  
+}
+  
+/**
+  * @brief  Launch the option byte loading.
+  * @note   This function will reset automatically the MCU.
+  * @retval HAL_StatusTypeDef HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)
+{
+  /* Initiates a system reset request to launch the option byte loading */
+  HAL_NVIC_SystemReset();
+  
+  return HAL_OK;  
+}
+
+/**
+  * @}
+  */  
+
+/** @defgroup FLASH_Exported_Functions_Group3 Peripheral State functions 
+ *  @brief   Peripheral State functions 
+ *
+@verbatim   
+ ===============================================================================
+                      ##### Peripheral State functions #####
+ ===============================================================================  
+    [..]
+    This subsection permit to get in run-time the status of the FLASH peripheral.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Get the specific FLASH error flag.
+  * @retval FLASH_ErrorCode: The returned value can be:
+  *            @ref FLASH_Error_Codes
+  */
+uint32_t HAL_FLASH_GetError(void)
+{ 
+   return pFlash.ErrorCode;
+}  
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup FLASH_Private_Functions
+ * @{
+ */
+
+/**
+  * @brief  Program a half-word (16-bit) at a specified address.
+  * @param  Address: specifies the address to be programmed.
+  * @param  Data: specifies the data to be programmed.
+  * @retval None
+  */
+static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data)
+{
+  /* Clean the error context */
+  pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+  
+#if defined(FLASH_BANK2_END)
+  if(Address <= FLASH_BANK1_END)
+  {
+#endif /* FLASH_BANK2_END */
+    /* Proceed to program the new data */
+    SET_BIT(FLASH->CR, FLASH_CR_PG);
+#if defined(FLASH_BANK2_END)
+  }
+  else
+  {
+    /* Proceed to program the new data */
+    SET_BIT(FLASH->CR2, FLASH_CR2_PG);
+  }
+#endif /* FLASH_BANK2_END */
+
+  /* Write data in the address */
+  *(__IO uint16_t*)Address = Data;
+}
+
+/**
+  * @brief  Wait for a FLASH operation to complete.
+  * @param  Timeout: maximum flash operation timeout
+  * @retval HAL_StatusTypeDef HAL Status
+  */
+HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
+{
+  /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
+     Even if the FLASH operation fails, the BUSY flag will be reset and an error
+     flag will be set */
+     
+  uint32_t tickstart = HAL_GetTick();
+     
+  while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) 
+  { 
+    if (Timeout != HAL_MAX_DELAY)
+    {
+      if((Timeout == 0) || ((HAL_GetTick()-tickstart) > Timeout))
+      {
+        return HAL_TIMEOUT;
+      }
+    }
+  }
+  
+  /* Check FLASH End of Operation flag  */
+  if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
+  {
+    /* Clear FLASH End of Operation pending bit */
+    __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
+  }
+  
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR)  || 
+     __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 
+     __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR))
+  {
+    /*Save the error code*/
+    FLASH_SetErrorCode();
+    return HAL_ERROR;
+  }
+
+  /* If there is no error flag set */
+  return HAL_OK;
+}
+
+#if defined(FLASH_BANK2_END)
+/**
+  * @brief  Wait for a FLASH BANK2 operation to complete.
+  * @param  Timeout: maximum flash operation timeout
+  * @retval HAL_StatusTypeDef HAL Status
+  */
+HAL_StatusTypeDef FLASH_WaitForLastOperationBank2(uint32_t Timeout)
+{ 
+  /* Wait for the FLASH BANK2 operation to complete by polling on BUSY flag to be reset.
+     Even if the FLASH BANK2 operation fails, the BUSY flag will be reset and an error
+     flag will be set */
+     
+  uint32_t tickstart = HAL_GetTick();
+     
+  while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY_BANK2)) 
+  { 
+    if (Timeout != HAL_MAX_DELAY)
+    {
+      if((Timeout == 0) || ((HAL_GetTick()-tickstart) > Timeout))
+      {
+        return HAL_TIMEOUT;
+      }
+    }
+  }
+  
+  /* Check FLASH End of Operation flag  */
+  if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP_BANK2))
+  {
+    /* Clear FLASH End of Operation pending bit */
+    __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP_BANK2);
+  }
+
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR_BANK2) || __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR_BANK2))
+  {
+    /*Save the error code*/
+    FLASH_SetErrorCode();
+    return HAL_ERROR;
+  }
+
+  /* If there is an error flag set */
+  return HAL_OK;
+  
+}
+#endif /* FLASH_BANK2_END */
+
+/**
+  * @brief  Set the specific FLASH error flag.
+  * @retval None
+  */
+static void FLASH_SetErrorCode(void)
+{ 
+#if defined(FLASH_BANK2_END)
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR_BANK2))
+#else
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR))
+#endif /* FLASH_BANK2_END */
+  {
+    pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP;
+  }
+#if defined(FLASH_BANK2_END)
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR) || __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR_BANK2))
+#else
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR))
+#endif /* FLASH_BANK2_END */
+  {
+     pFlash.ErrorCode |= HAL_FLASH_ERROR_PROG;
+  }
+
+  if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR))
+  {
+     pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV;
+     __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR);
+  }
+
+  /* Clear FLASH error pending bits */
+#if defined(FLASH_BANK2_END)
+  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR | FLASH_FLAG_WRPERR_BANK2 | FLASH_FLAG_PGERR | FLASH_FLAG_PGERR_BANK2);
+#else
+  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR);
+#endif /* FLASH_BANK2_END */
+}  
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1140 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_flash_ex.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Extended FLASH HAL module driver.
+  *    
+  *          This file provides firmware functions to manage the following 
+  *          functionalities of the FLASH peripheral:
+  *           + Extended Initialization/de-initialization functions
+  *           + Extended I/O operation functions
+  *           + Extended Peripheral Control functions 
+  *         
+  @verbatim
+  ==============================================================================
+               ##### Flash peripheral extended features  #####
+  ==============================================================================
+           
+                      ##### How to use this driver #####
+  ==============================================================================
+  [..] This driver provides functions to configure and program the FLASH memory 
+       of all STM32F1xxx devices. It includes
+       
+        (++) Set/Reset the write protection
+        (++) Program the user Option Bytes
+        (++) Get the Read protection Level
+  
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************  
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+#ifdef HAL_FLASH_MODULE_ENABLED
+
+/** @addtogroup FLASH
+  * @{
+  */
+/** @addtogroup FLASH_Private_Variables
+ * @{
+ */
+/* Variables used for Erase pages under interruption*/
+extern FLASH_ProcessTypeDef pFlash;
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+  
+/** @defgroup FLASHEx FLASHEx
+  * @brief FLASH HAL Extension module driver
+  * @{
+  */
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/** @defgroup FLASHEx_Private_Constants FLASHEx Private Constants
+ * @{
+ */
+#define FLASH_POSITION_IWDGSW_BIT        (uint32_t)POSITION_VAL(FLASH_OBR_IWDG_SW)
+#define FLASH_POSITION_OB_USERDATA0_BIT  (uint32_t)POSITION_VAL(FLASH_OBR_DATA0)
+#define FLASH_POSITION_OB_USERDATA1_BIT  (uint32_t)POSITION_VAL(FLASH_OBR_DATA1)
+/**
+  * @}
+  */
+
+/* Private macro -------------------------------------------------------------*/
+/** @defgroup FLASHEx_Private_Macros FLASHEx Private Macros
+  * @{
+  */
+/**
+  * @}
+  */ 
+
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/** @defgroup FLASHEx_Private_Functions FLASHEx Private Functions
+ * @{
+ */
+/* Erase operations */
+static void              FLASH_MassErase(uint32_t Banks);
+
+/* Option bytes control */
+static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WriteProtectPage);
+static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WriteProtectPage);
+static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t ReadProtectLevel);
+static HAL_StatusTypeDef FLASH_OB_UserConfig(uint8_t UserConfig);
+static HAL_StatusTypeDef FLASH_OB_ProgramData(uint32_t Address, uint8_t Data);
+static uint32_t          FLASH_OB_GetWRP(void);
+static uint32_t          FLASH_OB_GetRDP(void);
+static uint8_t           FLASH_OB_GetUser(void);
+
+/**
+  * @}
+  */
+
+/* Exported functions ---------------------------------------------------------*/
+/** @defgroup FLASHEx_Exported_Functions FLASHEx Exported Functions
+  * @{
+  */
+  
+/** @defgroup FLASHEx_Exported_Functions_Group1 FLASHEx Memory Erasing functions
+ *  @brief   FLASH Memory Erasing functions
+  *
+@verbatim   
+  ==============================================================================
+                ##### FLASH Erasing Programming functions ##### 
+  ==============================================================================
+
+    [..] The FLASH Memory Erasing functions, includes the following functions:
+    (+) @ref HAL_FLASHEx_Erase: return only when erase has been done
+    (+) @ref HAL_FLASHEx_Erase_IT: end of erase is done when @ref HAL_FLASH_EndOfOperationCallback 
+        is called with parameter 0xFFFFFFFF
+
+    [..] Any operation of erase should follow these steps:
+    (#) Call the @ref HAL_FLASH_Unlock() function to enable the flash control register and 
+        program memory access.
+    (#) Call the desired function to erase page.
+    (#) Call the @ref HAL_FLASH_Lock() to disable the flash program memory access 
+       (recommended to protect the FLASH memory against possible unwanted operation).
+
+@endverbatim
+  * @{
+  */
+  
+
+/**
+  * @brief  Perform a mass erase or erase the specified FLASH memory pages
+  * @note   To correctly run this function, the @ref HAL_FLASH_Unlock() function
+  *         must be called before.
+  *         Call the @ref HAL_FLASH_Lock() to disable the flash memory access 
+  *         (recommended to protect the FLASH memory against possible unwanted operation)
+  * @param[in]  pEraseInit pointer to an FLASH_EraseInitTypeDef structure that
+  *         contains the configuration information for the erasing.
+  *
+  * @param[out]  PageError pointer to variable  that
+  *         contains the configuration information on faulty page in case of error
+  *         (0xFFFFFFFF means that all the pages have been correctly erased)
+  *
+  * @retval HAL_StatusTypeDef HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError)
+{
+  HAL_StatusTypeDef status = HAL_ERROR;
+  uint32_t address = 0;
+
+  /* Process Locked */
+  __HAL_LOCK(&pFlash);
+
+  /* Check the parameters */
+  assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase));
+
+  if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE)
+  {
+#if defined(FLASH_BANK2_END)
+    if (pEraseInit->Banks == FLASH_BANK_BOTH)
+    {
+      /* Mass Erase requested for Bank1 and Bank2 */
+      /* Wait for last operation to be completed */
+      if ((FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK) && \
+          (FLASH_WaitForLastOperationBank2((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK))
+      {
+        /*Mass erase to be done*/
+        FLASH_MassErase(FLASH_BANK_BOTH);
+        
+        /* Wait for last operation to be completed */
+        if ((FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK) && \
+            (FLASH_WaitForLastOperationBank2((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK))
+        {
+          status = HAL_OK;
+        }
+        
+        /* If the erase operation is completed, disable the MER Bit */
+        CLEAR_BIT(FLASH->CR, FLASH_CR_MER);
+        CLEAR_BIT(FLASH->CR2, FLASH_CR2_MER);
+      }
+    }
+    else if (pEraseInit->Banks == FLASH_BANK_2)
+    {
+      /* Mass Erase requested for Bank2 */
+      /* Wait for last operation to be completed */
+      if (FLASH_WaitForLastOperationBank2((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK)
+      {
+        /*Mass erase to be done*/
+        FLASH_MassErase(FLASH_BANK_2);
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperationBank2((uint32_t)FLASH_TIMEOUT_VALUE);
+        
+        /* If the erase operation is completed, disable the MER Bit */
+        CLEAR_BIT(FLASH->CR2, FLASH_CR2_MER);
+      }
+    }
+    else 
+#endif /* FLASH_BANK2_END */
+    {
+      /* Mass Erase requested for Bank1 */
+      /* Wait for last operation to be completed */
+      if (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK)
+      {
+        /*Mass erase to be done*/
+        FLASH_MassErase(FLASH_BANK_1);
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+        
+        /* If the erase operation is completed, disable the MER Bit */
+        CLEAR_BIT(FLASH->CR, FLASH_CR_MER);
+      }
+    }
+  }
+  else
+  {
+    /* Page Erase is requested */
+    /* Check the parameters */
+    assert_param(IS_FLASH_PROGRAM_ADDRESS(pEraseInit->PageAddress));
+    assert_param(IS_FLASH_NB_PAGES(pEraseInit->PageAddress, pEraseInit->NbPages));
+    
+#if defined(FLASH_BANK2_END)
+    /* Page Erase requested on address located on bank2 */
+    if(pEraseInit->PageAddress > FLASH_BANK1_END)
+    {   
+      /* Wait for last operation to be completed */
+      if (FLASH_WaitForLastOperationBank2((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK)
+      {
+        /*Initialization of PageError variable*/
+        *PageError = 0xFFFFFFFF;
+        
+        /* Erase by page by page to be done*/
+        for(address = pEraseInit->PageAddress;
+            address < (pEraseInit->PageAddress + (pEraseInit->NbPages)*FLASH_PAGE_SIZE);
+            address += FLASH_PAGE_SIZE)
+        {
+          FLASH_PageErase(address);
+          
+          /* Wait for last operation to be completed */
+          status = FLASH_WaitForLastOperationBank2((uint32_t)FLASH_TIMEOUT_VALUE);
+          
+          /* If the erase operation is completed, disable the PER Bit */
+          CLEAR_BIT(FLASH->CR2, FLASH_CR2_PER);
+          
+          if (status != HAL_OK)
+          {
+            /* In case of error, stop erase procedure and return the faulty address */
+            *PageError = address;
+            break;
+          }
+        }
+      }
+    }
+    else
+#endif /* FLASH_BANK2_END */
+   {
+      /* Page Erase requested on address located on bank1 */
+      /* Wait for last operation to be completed */
+      if (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK)
+      {
+        /*Initialization of PageError variable*/
+        *PageError = 0xFFFFFFFF;
+        
+        /* Erase page by page to be done*/
+        for(address = pEraseInit->PageAddress;
+            address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress);
+            address += FLASH_PAGE_SIZE)
+        {
+          FLASH_PageErase(address);
+          
+          /* Wait for last operation to be completed */
+          status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+          
+          /* If the erase operation is completed, disable the PER Bit */
+          CLEAR_BIT(FLASH->CR, FLASH_CR_PER);
+          
+          if (status != HAL_OK)
+          {
+            /* In case of error, stop erase procedure and return the faulty address */
+            *PageError = address;
+            break;
+          }
+        }
+      }
+    }
+  }
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(&pFlash);
+
+  return status;
+}
+
+/**
+  * @brief  Perform a mass erase or erase the specified FLASH memory pages with interrupt enabled
+  * @note   To correctly run this function, the @ref HAL_FLASH_Unlock() function
+  *         must be called before.
+  *         Call the @ref HAL_FLASH_Lock() to disable the flash memory access 
+  *         (recommended to protect the FLASH memory against possible unwanted operation)
+  * @param  pEraseInit pointer to an FLASH_EraseInitTypeDef structure that
+  *         contains the configuration information for the erasing.
+  *
+  * @retval HAL_StatusTypeDef HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit)
+{
+  HAL_StatusTypeDef status = HAL_OK;
+
+  /* Process Locked */
+  __HAL_LOCK(&pFlash);
+
+  /* If procedure already ongoing, reject the next one */
+  if (pFlash.ProcedureOnGoing != FLASH_PROC_NONE)
+  {
+    return HAL_ERROR;
+  }
+  
+  /* Check the parameters */
+  assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase));
+
+  /* Enable End of FLASH Operation and Error source interrupts */
+  __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR);
+
+#if defined(FLASH_BANK2_END)
+  /* Enable End of FLASH Operation and Error source interrupts */
+  __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP_BANK2 | FLASH_IT_ERR_BANK2);
+  
+#endif
+  if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE)
+  {
+    /*Mass erase to be done*/
+    pFlash.ProcedureOnGoing = FLASH_PROC_MASSERASE;
+        FLASH_MassErase(pEraseInit->Banks);
+  }
+  else
+  {
+    /* Erase by page to be done*/
+
+    /* Check the parameters */
+    assert_param(IS_FLASH_PROGRAM_ADDRESS(pEraseInit->PageAddress));
+    assert_param(IS_FLASH_NB_PAGES(pEraseInit->PageAddress, pEraseInit->NbPages));
+
+    pFlash.ProcedureOnGoing = FLASH_PROC_PAGEERASE;
+    pFlash.DataRemaining = pEraseInit->NbPages;
+    pFlash.Address = pEraseInit->PageAddress;
+
+    /*Erase 1st page and wait for IT*/
+    FLASH_PageErase(pEraseInit->PageAddress);
+  }
+
+  return status;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup FLASHEx_Exported_Functions_Group2 Option Bytes Programming functions
+ *  @brief   Option Bytes Programming functions
+  *
+@verbatim   
+  ==============================================================================
+                ##### Option Bytes Programming functions ##### 
+  ==============================================================================  
+    [..]
+    This subsection provides a set of functions allowing to control the FLASH 
+    option bytes operations.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Erases the FLASH option bytes.
+  * @note   This functions erases all option bytes except the Read protection (RDP).
+  *         The function @ref HAL_FLASH_Unlock() should be called before to unlock the FLASH interface
+  *         The function @ref HAL_FLASH_OB_Unlock() should be called before to unlock the options bytes
+  *         The function @ref HAL_FLASH_OB_Launch() should be called after to force the reload of the options bytes
+  *         (system reset will occur)
+  * @retval HAL status
+  */
+
+HAL_StatusTypeDef HAL_FLASHEx_OBErase(void)
+{
+  uint8_t rdptmp = OB_RDP_LEVEL_0;
+  HAL_StatusTypeDef status = HAL_ERROR;
+
+  /* Get the actual read protection Option Byte value */
+  rdptmp = FLASH_OB_GetRDP();
+
+  /* Wait for last operation to be completed */
+  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+
+  if(status == HAL_OK)
+  {
+    /* Clean the error context */
+    pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+
+    /* If the previous operation is completed, proceed to erase the option bytes */
+    SET_BIT(FLASH->CR, FLASH_CR_OPTER);
+    SET_BIT(FLASH->CR, FLASH_CR_STRT);
+
+    /* Wait for last operation to be completed */
+    status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+
+    /* If the erase operation is completed, disable the OPTER Bit */
+    CLEAR_BIT(FLASH->CR, FLASH_CR_OPTER);
+
+    if(status == HAL_OK)
+    {
+      /* Restore the last read protection Option Byte value */
+      status = FLASH_OB_RDP_LevelConfig(rdptmp);
+    }
+  }
+
+  /* Return the erase status */
+  return status;
+}
+
+/**
+  * @brief  Program option bytes
+  * @note   The function @ref HAL_FLASH_Unlock() should be called before to unlock the FLASH interface
+  *         The function @ref HAL_FLASH_OB_Unlock() should be called before to unlock the options bytes
+  *         The function @ref HAL_FLASH_OB_Launch() should be called after to force the reload of the options bytes
+  *         (system reset will occur)
+  *
+  * @param  pOBInit pointer to an FLASH_OBInitStruct structure that
+  *         contains the configuration information for the programming.
+  *
+  * @retval HAL_StatusTypeDef HAL Status
+  */
+HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit)
+{
+  HAL_StatusTypeDef status = HAL_ERROR;
+
+  /* Process Locked */
+  __HAL_LOCK(&pFlash);
+
+  /* Check the parameters */
+  assert_param(IS_OPTIONBYTE(pOBInit->OptionType));
+
+  /* Write protection configuration */
+  if((pOBInit->OptionType & OPTIONBYTE_WRP) == OPTIONBYTE_WRP)
+  {
+    assert_param(IS_WRPSTATE(pOBInit->WRPState));
+    if (pOBInit->WRPState == OB_WRPSTATE_ENABLE)
+    {
+      /* Enable of Write protection on the selected page */
+      status = FLASH_OB_EnableWRP(pOBInit->WRPPage);
+    }
+    else
+    {
+      /* Disable of Write protection on the selected page */
+      status = FLASH_OB_DisableWRP(pOBInit->WRPPage);
+    }
+    if (status != HAL_OK)
+    {
+      /* Process Unlocked */
+      __HAL_UNLOCK(&pFlash);
+      return status;
+    }
+  }
+
+  /* Read protection configuration */
+  if((pOBInit->OptionType & OPTIONBYTE_RDP) == OPTIONBYTE_RDP)
+  {
+    status = FLASH_OB_RDP_LevelConfig(pOBInit->RDPLevel);
+    if (status != HAL_OK)
+    {
+      /* Process Unlocked */
+      __HAL_UNLOCK(&pFlash);
+      return status;
+    }
+  }
+
+  /* USER configuration */
+  if((pOBInit->OptionType & OPTIONBYTE_USER) == OPTIONBYTE_USER)
+  {
+    status = FLASH_OB_UserConfig(pOBInit->USERConfig);
+    if (status != HAL_OK)
+    {
+      /* Process Unlocked */
+      __HAL_UNLOCK(&pFlash);
+      return status;
+    }
+  }
+
+  /* DATA configuration*/
+  if((pOBInit->OptionType & OPTIONBYTE_DATA) == OPTIONBYTE_DATA)
+  {
+    status = FLASH_OB_ProgramData(pOBInit->DATAAddress, pOBInit->DATAData);
+    if (status != HAL_OK)
+    {
+      /* Process Unlocked */
+      __HAL_UNLOCK(&pFlash);
+      return status;
+    }
+  }
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(&pFlash);
+
+  return status;
+}
+
+/**
+  * @brief  Get the Option byte configuration
+  * @param  pOBInit pointer to an FLASH_OBInitStruct structure that
+  *         contains the configuration information for the programming.
+  *
+  * @retval None
+  */
+void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit)
+{
+  pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER;
+
+  /*Get WRP*/
+  pOBInit->WRPPage = FLASH_OB_GetWRP();
+
+  /*Get RDP Level*/
+  pOBInit->RDPLevel = FLASH_OB_GetRDP();
+
+  /*Get USER*/
+  pOBInit->USERConfig = FLASH_OB_GetUser();
+}
+
+/**
+  * @brief  Get the Option byte user data
+  * @param  DATAAdress Address of the option byte DATA
+  *          This parameter can be one of the following values:
+  *            @arg @ref OB_DATA_ADDRESS_DATA0
+  *            @arg @ref OB_DATA_ADDRESS_DATA1
+  * @retval Value programmed in USER data
+  */
+uint32_t HAL_FLASHEx_OBGetUserData(uint32_t DATAAdress)
+{
+  uint32_t value = 0;
+  
+  if (DATAAdress == OB_DATA_ADDRESS_DATA0)
+  {
+    /* Get value programmed in OB USER Data0 */
+    value = READ_BIT(FLASH->OBR, FLASH_OBR_DATA0) >> FLASH_POSITION_OB_USERDATA0_BIT;
+  }
+  else
+  {
+    /* Get value programmed in OB USER Data1 */
+    value = READ_BIT(FLASH->OBR, FLASH_OBR_DATA1) >> FLASH_POSITION_OB_USERDATA1_BIT;
+  }
+  
+  return value;
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup FLASHEx_Private_Functions
+ * @{
+ */
+
+/**
+  * @brief  Full erase of FLASH memory Bank 
+  * @param  Banks Banks to be erased
+  *          This parameter can be one of the following values:
+  *            @arg @ref FLASH_BANK_1 Bank1 to be erased
+  @if STM32F101xG
+  *            @arg @ref FLASH_BANK_2 Bank2 to be erased
+  *            @arg @ref FLASH_BANK_BOTH Bank1 and Bank2 to be erased
+  @endif
+  @if STM32F103xG
+  *            @arg @ref FLASH_BANK_2 Bank2 to be erased
+  *            @arg @ref FLASH_BANK_BOTH Bank1 and Bank2 to be erased
+  @endif
+  *
+  * @retval None
+  */
+static void FLASH_MassErase(uint32_t Banks)
+{
+  /* Check the parameters */
+  assert_param(IS_FLASH_BANK(Banks));
+
+  /* Clean the error context */
+  pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+
+#if defined(FLASH_BANK2_END)
+  if(Banks == FLASH_BANK_BOTH)
+  {
+    /* bank1 & bank2 will be erased*/
+    SET_BIT(FLASH->CR, FLASH_CR_MER);
+    SET_BIT(FLASH->CR2, FLASH_CR2_MER);
+    SET_BIT(FLASH->CR, FLASH_CR_STRT);
+    SET_BIT(FLASH->CR2, FLASH_CR2_STRT);
+  }
+  else if(Banks == FLASH_BANK_2)
+  {
+    /*Only bank2 will be erased*/
+    SET_BIT(FLASH->CR2, FLASH_CR2_MER);
+    SET_BIT(FLASH->CR2, FLASH_CR2_STRT);
+  }
+  else
+  {
+#endif /* FLASH_BANK2_END */
+    /* Only bank1 will be erased*/
+    SET_BIT(FLASH->CR, FLASH_CR_MER);
+    SET_BIT(FLASH->CR, FLASH_CR_STRT);
+#if defined(FLASH_BANK2_END)
+  }
+#endif /* FLASH_BANK2_END */
+}
+
+/**
+  * @brief  Enable the write protection of the desired pages
+  * @note   An option byte erase is done automatically in this function. 
+  * @note   When the memory read protection level is selected (RDP level = 1), 
+  *         it is not possible to program or erase the flash page i if
+  *         debug features are connected or boot code is executed in RAM, even if nWRPi = 1 
+  * 
+  * @param  WriteProtectPage specifies the page(s) to be write protected.
+  *         The value of this parameter depend on device used within the same series 
+  * @retval HAL status 
+  */
+static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WriteProtectPage)
+{
+  HAL_StatusTypeDef status = HAL_OK;
+  uint16_t WRP0_Data = 0xFFFF;
+#if defined(FLASH_WRP1_WRP1)
+  uint16_t WRP1_Data = 0xFFFF;
+#endif /* FLASH_WRP1_WRP1 */
+#if defined(FLASH_WRP2_WRP2)
+  uint16_t WRP2_Data = 0xFFFF;
+#endif /* FLASH_WRP2_WRP2 */
+#if defined(FLASH_WRP3_WRP3)
+  uint16_t WRP3_Data = 0xFFFF;
+#endif /* FLASH_WRP3_WRP3 */
+  
+  /* Check the parameters */
+  assert_param(IS_OB_WRP(WriteProtectPage));
+    
+  /* Get current write protected pages and the new pages to be protected ******/
+  WriteProtectPage = (uint32_t)(~((~FLASH_OB_GetWRP()) | WriteProtectPage));
+  
+#if defined(OB_WRP_PAGES0TO15MASK)
+  WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO15MASK);
+#elif defined(OB_WRP_PAGES0TO31MASK)
+  WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO31MASK);
+#endif /* OB_WRP_PAGES0TO31MASK */
+  
+#if defined(OB_WRP_PAGES16TO31MASK)
+  WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES16TO31MASK) >> 8);
+#elif defined(OB_WRP_PAGES32TO63MASK)
+  WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO63MASK) >> 8);
+#endif /* OB_WRP_PAGES32TO63MASK */
+ 
+#if defined(OB_WRP_PAGES64TO95MASK)
+  WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES64TO95MASK) >> 16);
+#endif /* OB_WRP_PAGES64TO95MASK */
+#if defined(OB_WRP_PAGES32TO47MASK)
+  WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO47MASK) >> 16);
+#endif /* OB_WRP_PAGES32TO47MASK */
+
+#if defined(OB_WRP_PAGES96TO127MASK)
+  WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES96TO127MASK) >> 24); 
+#elif defined(OB_WRP_PAGES48TO255MASK)
+  WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO255MASK) >> 24); 
+#elif defined(OB_WRP_PAGES48TO511MASK)
+  WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO511MASK) >> 24); 
+#elif defined(OB_WRP_PAGES48TO127MASK)
+  WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO127MASK) >> 24); 
+#endif /* OB_WRP_PAGES96TO127MASK */
+  
+  /* Wait for last operation to be completed */
+  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+
+  if(status == HAL_OK)
+  { 
+    /* Clean the error context */
+    pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+
+    /* To be able to write again option byte, need to perform a option byte erase */
+    status = HAL_FLASHEx_OBErase();
+    if (status == HAL_OK)  
+    {
+      /* Enable write protection */
+      SET_BIT(FLASH->CR, FLASH_CR_OPTPG);
+
+#if defined(FLASH_WRP0_WRP0)
+      if(WRP0_Data != 0xFF)
+      {
+        OB->WRP0 &= WRP0_Data;
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+      }
+#endif /* FLASH_WRP0_WRP0 */
+
+#if defined(FLASH_WRP1_WRP1)
+      if((status == HAL_OK) && (WRP1_Data != 0xFF))
+      {
+        OB->WRP1 &= WRP1_Data;
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+      }
+#endif /* FLASH_WRP1_WRP1 */
+
+#if defined(FLASH_WRP2_WRP2)
+      if((status == HAL_OK) && (WRP2_Data != 0xFF))
+      {
+        OB->WRP2 &= WRP2_Data;
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+      }
+#endif /* FLASH_WRP2_WRP2 */
+
+#if defined(FLASH_WRP3_WRP3)
+      if((status == HAL_OK) && (WRP3_Data != 0xFF))
+      {
+        OB->WRP3 &= WRP3_Data;
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+      }
+#endif /* FLASH_WRP3_WRP3 */
+
+      /* if the program operation is completed, disable the OPTPG Bit */
+      CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG);
+    }
+  }
+  
+  return status;
+}
+
+/**
+  * @brief  Disable the write protection of the desired pages
+  * @note   An option byte erase is done automatically in this function. 
+  * @note   When the memory read protection level is selected (RDP level = 1), 
+  *         it is not possible to program or erase the flash page i if   
+  *         debug features are connected or boot code is executed in RAM, even if nWRPi = 1 
+  * 
+  * @param  WriteProtectPage specifies the page(s) to be write unprotected.
+  *         The value of this parameter depend on device used within the same series 
+  * @retval HAL status 
+  */
+static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WriteProtectPage)
+{
+  HAL_StatusTypeDef status = HAL_OK;
+  uint16_t WRP0_Data = 0xFFFF;
+#if defined(FLASH_WRP1_WRP1)
+  uint16_t WRP1_Data = 0xFFFF;
+#endif /* FLASH_WRP1_WRP1 */
+#if defined(FLASH_WRP2_WRP2)
+  uint16_t WRP2_Data = 0xFFFF;
+#endif /* FLASH_WRP2_WRP2 */
+#if defined(FLASH_WRP3_WRP3)
+  uint16_t WRP3_Data = 0xFFFF;
+#endif /* FLASH_WRP3_WRP3 */
+  
+  /* Check the parameters */
+  assert_param(IS_OB_WRP(WriteProtectPage));
+
+  /* Get current write protected pages and the new pages to be unprotected ******/
+  WriteProtectPage = (FLASH_OB_GetWRP() | WriteProtectPage);
+
+#if defined(OB_WRP_PAGES0TO15MASK)
+  WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO15MASK);
+#elif defined(OB_WRP_PAGES0TO31MASK)
+  WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO31MASK);
+#endif /* OB_WRP_PAGES0TO31MASK */
+  
+#if defined(OB_WRP_PAGES16TO31MASK)
+  WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES16TO31MASK) >> 8);
+#elif defined(OB_WRP_PAGES32TO63MASK)
+  WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO63MASK) >> 8);
+#endif /* OB_WRP_PAGES32TO63MASK */
+ 
+#if defined(OB_WRP_PAGES64TO95MASK)
+  WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES64TO95MASK) >> 16);
+#endif /* OB_WRP_PAGES64TO95MASK */
+#if defined(OB_WRP_PAGES32TO47MASK)
+  WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO47MASK) >> 16);
+#endif /* OB_WRP_PAGES32TO47MASK */
+
+#if defined(OB_WRP_PAGES96TO127MASK)
+  WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES96TO127MASK) >> 24); 
+#elif defined(OB_WRP_PAGES48TO255MASK)
+  WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO255MASK) >> 24); 
+#elif defined(OB_WRP_PAGES48TO511MASK)
+  WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO511MASK) >> 24); 
+#elif defined(OB_WRP_PAGES48TO127MASK)
+  WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO127MASK) >> 24); 
+#endif /* OB_WRP_PAGES96TO127MASK */
+
+    
+  /* Wait for last operation to be completed */
+  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+
+  if(status == HAL_OK)
+  { 
+    /* Clean the error context */
+    pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+
+    /* To be able to write again option byte, need to perform a option byte erase */
+    status = HAL_FLASHEx_OBErase();
+    if (status == HAL_OK)  
+    {
+      SET_BIT(FLASH->CR, FLASH_CR_OPTPG);
+
+#if defined(FLASH_WRP0_WRP0)
+      if(WRP0_Data != 0xFF)
+      {
+        OB->WRP0 |= WRP0_Data;
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+      }
+#endif /* FLASH_WRP0_WRP0 */
+
+#if defined(FLASH_WRP1_WRP1)
+      if((status == HAL_OK) && (WRP1_Data != 0xFF))
+      {
+        OB->WRP1 |= WRP1_Data;
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+      }
+#endif /* FLASH_WRP1_WRP1 */
+
+#if defined(FLASH_WRP2_WRP2)
+      if((status == HAL_OK) && (WRP2_Data != 0xFF))
+      {
+        OB->WRP2 |= WRP2_Data;
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+      }
+#endif /* FLASH_WRP2_WRP2 */
+
+#if defined(FLASH_WRP3_WRP3)
+      if((status == HAL_OK) && (WRP3_Data != 0xFF))
+      {
+        OB->WRP3 |= WRP3_Data;
+        
+        /* Wait for last operation to be completed */
+        status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+      }
+#endif /* FLASH_WRP3_WRP3 */
+
+      /* if the program operation is completed, disable the OPTPG Bit */
+      CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG);
+    }
+  }
+  return status;
+}
+
+/**
+  * @brief  Set the read protection level.
+  * @param  ReadProtectLevel specifies the read protection level.
+  *         This parameter can be one of the following values:
+  *            @arg @ref OB_RDP_LEVEL_0 No protection
+  *            @arg @ref OB_RDP_LEVEL_1 Read protection of the memory
+  * @retval HAL status
+  */
+static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t ReadProtectLevel)
+{
+  HAL_StatusTypeDef status = HAL_OK;
+  
+  /* Check the parameters */
+  assert_param(IS_OB_RDP_LEVEL(ReadProtectLevel));
+  
+  /* Wait for last operation to be completed */
+  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+  
+  if(status == HAL_OK)
+  { 
+    /* Clean the error context */
+    pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+    
+    /* If the previous operation is completed, proceed to erase the option bytes */
+    SET_BIT(FLASH->CR, FLASH_CR_OPTER);
+    SET_BIT(FLASH->CR, FLASH_CR_STRT);
+
+    /* Wait for last operation to be completed */
+    status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+
+    /* If the erase operation is completed, disable the OPTER Bit */
+    CLEAR_BIT(FLASH->CR, FLASH_CR_OPTER);
+
+    if(status == HAL_OK)
+    {
+      /* Enable the Option Bytes Programming operation */
+      SET_BIT(FLASH->CR, FLASH_CR_OPTPG);
+      
+      WRITE_REG(OB->RDP, ReadProtectLevel);
+      
+      /* Wait for last operation to be completed */
+      status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 
+      
+      /* if the program operation is completed, disable the OPTPG Bit */
+      CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG);
+    }
+  }
+  
+  return status;
+}
+
+/**
+  * @brief  Program the FLASH User Option Byte.    
+  * @note   Programming of the OB should be performed only after an erase (otherwise PGERR occurs)
+  * @param  UserConfig The FLASH User Option Bytes values FLASH_OBR_IWDG_SW(Bit2), 
+  *         FLASH_OBR_nRST_STOP(Bit3),FLASH_OBR_nRST_STDBY(Bit4).
+  *         And BFBF2(Bit5) for STM32F101xG and STM32F103xG . 
+  * @retval HAL status
+  */
+static HAL_StatusTypeDef FLASH_OB_UserConfig(uint8_t UserConfig)
+{
+  HAL_StatusTypeDef status = HAL_OK;
+
+  /* Check the parameters */
+  assert_param(IS_OB_IWDG_SOURCE((UserConfig&OB_IWDG_SW)));
+  assert_param(IS_OB_STOP_SOURCE((UserConfig&OB_STOP_NO_RST)));
+  assert_param(IS_OB_STDBY_SOURCE((UserConfig&OB_STDBY_NO_RST)));
+#if defined(FLASH_BANK2_END)
+  assert_param(IS_OB_BOOT1((UserConfig&OB_BOOT1_SET)));
+#endif /* FLASH_BANK2_END */
+
+  /* Wait for last operation to be completed */
+  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+  
+  if(status == HAL_OK)
+  {     
+    /* Clean the error context */
+    pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+
+    /* Enable the Option Bytes Programming operation */
+    SET_BIT(FLASH->CR, FLASH_CR_OPTPG); 
+ 
+#if defined(FLASH_BANK2_END)
+    OB->USER = (UserConfig | 0xF0);
+#else
+    OB->USER = (UserConfig | 0x88);
+#endif /* FLASH_BANK2_END */
+
+    /* Wait for last operation to be completed */
+    status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+
+    /* if the program operation is completed, disable the OPTPG Bit */
+    CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG);
+  }
+  
+  return status; 
+}
+
+/**
+  * @brief  Programs a half word at a specified Option Byte Data address.
+  * @note   The function @ref HAL_FLASH_Unlock() should be called before to unlock the FLASH interface
+  *         The function @ref HAL_FLASH_OB_Unlock() should be called before to unlock the options bytes
+  *         The function @ref HAL_FLASH_OB_Launch() should be called after to force the reload of the options bytes 
+  *         (system reset will occur)
+  *         Programming of the OB should be performed only after an erase (otherwise PGERR occurs)
+  * @param  Address specifies the address to be programmed.
+  *         This parameter can be 0x1FFFF804 or 0x1FFFF806. 
+  * @param  Data specifies the data to be programmed.
+  * @retval HAL status
+  */
+static HAL_StatusTypeDef FLASH_OB_ProgramData(uint32_t Address, uint8_t Data)
+{
+  HAL_StatusTypeDef status = HAL_ERROR;
+  
+  /* Check the parameters */
+  assert_param(IS_OB_DATA_ADDRESS(Address));
+  
+  /* Wait for last operation to be completed */
+  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+  
+  if(status == HAL_OK)
+  {
+    /* Clean the error context */
+    pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+
+    /* Enables the Option Bytes Programming operation */
+    SET_BIT(FLASH->CR, FLASH_CR_OPTPG); 
+    *(__IO uint16_t*)Address = Data;
+    
+    /* Wait for last operation to be completed */
+    status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
+    
+    /* If the program operation is completed, disable the OPTPG Bit */
+    CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG);
+  }
+  /* Return the Option Byte Data Program Status */
+  return status;
+}
+
+/**
+  * @brief  Return the FLASH Write Protection Option Bytes value.
+  * @retval The FLASH Write Protection Option Bytes value
+  */
+static uint32_t FLASH_OB_GetWRP(void)
+{
+  /* Return the FLASH write protection Register value */
+  return (uint32_t)(READ_REG(FLASH->WRPR));
+}
+
+/**
+  * @brief  Returns the FLASH Read Protection level.
+  * @retval FLASH ReadOut Protection Status:
+  *         This parameter can be one of the following values:
+  *            @arg @ref OB_RDP_LEVEL_0 No protection
+  *            @arg @ref OB_RDP_LEVEL_1 Read protection of the memory
+  */
+static uint32_t FLASH_OB_GetRDP(void)
+{
+  uint32_t readstatus = OB_RDP_LEVEL_0;
+  uint32_t tmp_reg = 0;
+  
+  /* Read RDP level bits */
+  tmp_reg = READ_BIT(FLASH->OBR, FLASH_OBR_RDPRT);
+
+  if (tmp_reg == FLASH_OBR_RDPRT)
+  {
+    readstatus = OB_RDP_LEVEL_1;
+  }
+  else 
+  {
+    readstatus = OB_RDP_LEVEL_0;
+  }
+
+  return readstatus;
+}
+
+/**
+  * @brief  Return the FLASH User Option Byte value.
+  * @retval The FLASH User Option Bytes values: FLASH_OBR_IWDG_SW(Bit2), 
+  *         FLASH_OBR_nRST_STOP(Bit3),FLASH_OBR_nRST_STDBY(Bit4).
+  *         And FLASH_OBR_BFB2(Bit5) for STM32F101xG and STM32F103xG . 
+  */
+static uint8_t FLASH_OB_GetUser(void)
+{
+  /* Return the User Option Byte */
+  return (uint8_t)((READ_REG(FLASH->OBR) & FLASH_OBR_USER) >> FLASH_POSITION_IWDGSW_BIT);
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup FLASH
+  * @{
+  */
+
+/** @addtogroup FLASH_Private_Functions
+ * @{
+ */
+
+/**
+  * @brief  Erase the specified FLASH memory page
+  * @param  PageAddress FLASH page to erase
+  *         The value of this parameter depend on device used within the same series      
+  * 
+  * @retval None
+  */
+void FLASH_PageErase(uint32_t PageAddress)
+{
+  /* Clean the error context */
+  pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
+
+#if defined(FLASH_BANK2_END)
+  if(PageAddress > FLASH_BANK1_END)
+  { 
+    /* Proceed to erase the page */
+    SET_BIT(FLASH->CR2, FLASH_CR2_PER);
+    WRITE_REG(FLASH->AR2, PageAddress);
+    SET_BIT(FLASH->CR2, FLASH_CR2_STRT);
+  }
+  else
+  {
+#endif /* FLASH_BANK2_END */
+    /* Proceed to erase the page */
+    SET_BIT(FLASH->CR, FLASH_CR_PER);
+    WRITE_REG(FLASH->AR, PageAddress);
+    SET_BIT(FLASH->CR, FLASH_CR_STRT);
+#if defined(FLASH_BANK2_END)
+  }
+#endif /* FLASH_BANK2_END */
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#endif /* HAL_FLASH_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,597 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_gpio.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   GPIO HAL module driver.
+  *         This file provides firmware functions to manage the following 
+  *          functionalities of the General Purpose Input/Output (GPIO) peripheral:
+  *           + Initialization and de-initialization functions
+  *           + IO operation functions
+  *         
+  @verbatim
+  ==============================================================================
+                    ##### GPIO Peripheral features #####
+  ==============================================================================         
+  [..] 
+  Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each
+  port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software
+  in several modes:
+  (+) Input mode 
+  (+) Analog mode
+  (+) Output mode
+  (+) Alternate function mode
+  (+) External interrupt/event lines
+
+  [..]  
+  During and just after reset, the alternate functions and external interrupt  
+  lines are not active and the I/O ports are configured in input floating mode.
+  
+  [..]   
+  All GPIO pins have weak internal pull-up and pull-down resistors, which can be 
+  activated or not.
+
+  [..]
+  In Output or Alternate mode, each IO can be configured on open-drain or push-pull
+  type and the IO speed can be selected depending on the VDD value.
+
+  [..]  
+  All ports have external interrupt/event capability. To use external interrupt 
+  lines, the port must be configured in input mode. All available GPIO pins are 
+  connected to the 16 external interrupt/event lines from EXTI0 to EXTI15.
+  
+  [..]  
+  The external interrupt/event controller consists of up to 20 edge detectors in connectivity
+  line devices, or 19 edge detectors in other devices for generating event/interrupt requests.
+  Each input line can be independently configured to select the type (event or interrupt) and
+  the corresponding trigger event (rising or falling or both). Each line can also masked
+  independently. A pending register maintains the status line of the interrupt requests
+ 
+                     ##### How to use this driver #####
+  ==============================================================================  
+ [..]             
+   (#) Enable the GPIO APB2 clock using the following function : __HAL_RCC_GPIOx_CLK_ENABLE(). 
+   
+   (#) Configure the GPIO pin(s) using HAL_GPIO_Init().
+       (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure
+       (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef 
+            structure.
+       (++) In case of Output or alternate function mode selection: the speed is 
+            configured through "Speed" member from GPIO_InitTypeDef structure
+       (++) Analog mode is required when a pin is to be used as ADC channel 
+            or DAC output.
+       (++) In case of external interrupt/event selection the "Mode" member from 
+            GPIO_InitTypeDef structure select the type (interrupt or event) and 
+            the corresponding trigger event (rising or falling or both).
+   
+   (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority 
+       mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using
+       HAL_NVIC_EnableIRQ().
+         
+   (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin().
+            
+   (#) To set/reset the level of a pin configured in output mode use 
+       HAL_GPIO_WritePin()/HAL_GPIO_TogglePin().
+  
+   (#) To lock pin configuration until next reset use HAL_GPIO_LockPin().
+                 
+   (#) During and just after reset, the alternate functions are not 
+       active and the GPIO pins are configured in input floating mode (except JTAG
+       pins).
+  
+   (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose 
+       (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has 
+       priority over the GPIO function.
+  
+   (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as 
+       general purpose PD0 and PD1, respectively, when the HSE oscillator is off. 
+       The HSE has priority over the GPIO function.
+  
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************  
+  */ 
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup GPIO GPIO
+  * @brief GPIO HAL module driver
+  * @{
+  */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/** @defgroup GPIO_Private_Constants GPIO Private Constants
+  * @{
+  */
+  
+#define GPIO_MODE             ((uint32_t)0x00000003)
+#define EXTI_MODE             ((uint32_t)0x10000000)
+#define GPIO_MODE_IT          ((uint32_t)0x00010000)
+#define GPIO_MODE_EVT         ((uint32_t)0x00020000)
+#define RISING_EDGE           ((uint32_t)0x00100000) 
+#define FALLING_EDGE          ((uint32_t)0x00200000) 
+#define GPIO_OUTPUT_TYPE      ((uint32_t)0x00000010) 
+#define GPIO_NUMBER           ((uint32_t)16)
+
+/* Definitions for bit manipulation of CRL and CRH register */
+#define  GPIO_CR_MODE_INPUT         ((uint32_t)0x00000000) /*!< 00: Input mode (reset state)  */
+#define  GPIO_CR_CNF_ANALOG         ((uint32_t)0x00000000) /*!< 00: Analog mode  */
+#define  GPIO_CR_CNF_INPUT_FLOATING ((uint32_t)0x00000004) /*!< 01: Floating input (reset state)  */
+#define  GPIO_CR_CNF_INPUT_PU_PD    ((uint32_t)0x00000008) /*!< 10: Input with pull-up / pull-down  */
+#define  GPIO_CR_CNF_GP_OUTPUT_PP   ((uint32_t)0x00000000) /*!< 00: General purpose output push-pull  */
+#define  GPIO_CR_CNF_GP_OUTPUT_OD   ((uint32_t)0x00000004) /*!< 01: General purpose output Open-drain  */
+#define  GPIO_CR_CNF_AF_OUTPUT_PP   ((uint32_t)0x00000008) /*!< 10: Alternate function output Push-pull  */
+#define  GPIO_CR_CNF_AF_OUTPUT_OD   ((uint32_t)0x0000000C) /*!< 11: Alternate function output Open-drain  */
+ 
+/**
+  * @}
+  */
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/* Private functions ---------------------------------------------------------*/
+
+/** @defgroup GPIO_Exported_Functions GPIO Exported Functions
+  * @{
+  */
+
+/** @defgroup GPIO_Exported_Functions_Group1 Initialization and deinitialization functions
+ *  @brief    Initialization and Configuration functions
+ *
+@verbatim    
+ ===============================================================================
+              ##### Initialization and deinitialization functions #####
+ ===============================================================================
+  [..]
+    This section provides functions allowing to initialize and de-initialize the GPIOs
+    to be ready for use.
+ 
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init.
+  * @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
+  * @param  GPIO_Init: pointer to a GPIO_InitTypeDef structure that contains
+  *         the configuration information for the specified GPIO peripheral.
+  * @retval None
+  */
+void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)
+{
+  uint32_t position;
+  uint32_t ioposition = 0x00;
+  uint32_t iocurrent = 0x00;
+  uint32_t temp = 0x00;
+  uint32_t config = 0x00;
+  __IO uint32_t *configregister; /* Store the address of CRL or CRH register based on pin number */
+  uint32_t registeroffset = 0; /* offset used during computation of CNF and MODE bits placement inside CRL or CRH register */
+  
+  /* Check the parameters */
+  assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
+  assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
+  assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
+
+  /* Configure the port pins */
+  for (position = 0; position < GPIO_NUMBER; position++)
+  {
+    /* Get the IO position */
+    ioposition = ((uint32_t)0x01) << position;
+    
+    /* Get the current IO position */
+    iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
+
+    if (iocurrent == ioposition)
+    {
+      /* Check the Alternate function parameters */
+      assert_param(IS_GPIO_AF_INSTANCE(GPIOx));
+
+      /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */
+      switch (GPIO_Init->Mode)
+      {
+        /* If we are configuring the pin in OUTPUT push-pull mode */
+        case GPIO_MODE_OUTPUT_PP:
+          /* Check the GPIO speed parameter */
+          assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
+          config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP;
+          break;
+          
+        /* If we are configuring the pin in OUTPUT open-drain mode */
+        case GPIO_MODE_OUTPUT_OD:
+          /* Check the GPIO speed parameter */
+          assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
+          config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD;
+          break;
+          
+        /* If we are configuring the pin in ALTERNATE FUNCTION push-pull mode */
+        case GPIO_MODE_AF_PP:
+          /* Check the GPIO speed parameter */
+          assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
+          config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP;
+          break;
+          
+        /* If we are configuring the pin in ALTERNATE FUNCTION open-drain mode */
+        case GPIO_MODE_AF_OD:
+          /* Check the GPIO speed parameter */
+          assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
+          config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD;
+          break;
+          
+        /* If we are configuring the pin in INPUT (also applicable to EVENT and IT mode) */
+        case GPIO_MODE_INPUT:
+        case GPIO_MODE_IT_RISING:
+        case GPIO_MODE_IT_FALLING:
+        case GPIO_MODE_IT_RISING_FALLING:
+        case GPIO_MODE_EVT_RISING:
+        case GPIO_MODE_EVT_FALLING:
+        case GPIO_MODE_EVT_RISING_FALLING:
+          /* Check the GPIO pull parameter */
+          assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
+          if(GPIO_Init->Pull == GPIO_NOPULL)
+          {  
+            config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING;
+          }
+          else if(GPIO_Init->Pull == GPIO_PULLUP)
+          {
+            config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD;
+            
+            /* Set the corresponding ODR bit */
+            GPIOx->BSRR = ioposition;
+          }
+          else /* GPIO_PULLDOWN */
+          {
+            config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD;
+            
+            /* Reset the corresponding ODR bit */
+            GPIOx->BRR = ioposition;
+          }
+          break; 
+          
+        /* If we are configuring the pin in INPUT analog mode */
+        case GPIO_MODE_ANALOG:
+            config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG;
+          break;
+        
+        /* Parameters are checked with assert_param */
+        default:
+          break;
+      }
+      
+      /* Check if the current bit belongs to first half or last half of the pin count number
+       in order to address CRH or CRL register*/
+      configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL     : &GPIOx->CRH;
+      registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2) : ((position - 8) << 2);
+      
+      /* Apply the new configuration of the pin to the register */
+      MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset ), (config << registeroffset));
+      
+      /*--------------------- EXTI Mode Configuration ------------------------*/
+      /* Configure the External Interrupt or event for the current IO */
+      if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) 
+      {
+        /* Enable AFIO Clock */
+        __HAL_RCC_AFIO_CLK_ENABLE();
+        temp = AFIO->EXTICR[position >> 2];
+        CLEAR_BIT(temp, ((uint32_t)0x0F) << (4 * (position & 0x03)));
+        SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)));
+        AFIO->EXTICR[position >> 2] = temp;
+        
+
+        /* Configure the interrupt mask */
+        if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
+        {
+          SET_BIT(EXTI->IMR, iocurrent); 
+        } 
+        else
+        {
+          CLEAR_BIT(EXTI->IMR, iocurrent); 
+        } 
+        
+        /* Configure the event mask */
+        if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
+        {
+          SET_BIT(EXTI->EMR, iocurrent); 
+        } 
+        else
+        {
+          CLEAR_BIT(EXTI->EMR, iocurrent); 
+        }
+        
+        /* Enable or disable the rising trigger */
+        if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
+        {
+          SET_BIT(EXTI->RTSR, iocurrent); 
+        } 
+        else
+        {
+          CLEAR_BIT(EXTI->RTSR, iocurrent); 
+        }
+        
+        /* Enable or disable the falling trigger */
+        if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
+        {
+          SET_BIT(EXTI->FTSR, iocurrent); 
+        } 
+        else
+        {
+          CLEAR_BIT(EXTI->FTSR, iocurrent); 
+        }
+      }
+    }
+  }
+}
+
+/**
+  * @brief  De-initializes the GPIOx peripheral registers to their default reset values.
+  * @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
+  * @param  GPIO_Pin: specifies the port bit to be written.
+  *         This parameter can be one of GPIO_PIN_x where x can be (0..15).
+  * @retval None
+  */
+void HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin)
+{ 
+  uint32_t position = 0x00;
+  uint32_t iocurrent = 0x00;
+  uint32_t tmp = 0x00;
+  __IO uint32_t *configregister; /* Store the address of CRL or CRH register based on pin number */
+  uint32_t registeroffset = 0;
+ 
+  /* Check the parameters */
+  assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
+  assert_param(IS_GPIO_PIN(GPIO_Pin));
+
+  /* Configure the port pins */
+  while ((GPIO_Pin >> position) != 0)
+  {
+    /* Get current io position */
+    iocurrent = (GPIO_Pin) & ((uint32_t)1 << position);
+
+    if (iocurrent)
+    {
+      /*------------------------- GPIO Mode Configuration --------------------*/
+      /* Check if the current bit belongs to first half or last half of the pin count number
+       in order to address CRH or CRL register */
+      configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL     : &GPIOx->CRH;
+      registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2) : ((position - 8) << 2);
+      
+      /* CRL/CRH default value is floating input(0x04) shifted to correct position */
+      MODIFY_REG(*configregister, ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset ), GPIO_CRL_CNF0_0 << registeroffset);
+      
+      /* ODR default value is 0 */
+      CLEAR_BIT(GPIOx->ODR, iocurrent);
+      
+      /*------------------------- EXTI Mode Configuration --------------------*/
+      /* Clear the External Interrupt or Event for the current IO */
+      
+      tmp = AFIO->EXTICR[position >> 2];
+      tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));
+      if(tmp == (GPIO_GET_INDEX(GPIOx) << (4 * (position & 0x03))))
+      {
+        tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
+        CLEAR_BIT(AFIO->EXTICR[position >> 2], tmp);
+          
+        /* Clear EXTI line configuration */
+        CLEAR_BIT(EXTI->IMR, (uint32_t)iocurrent);
+        CLEAR_BIT(EXTI->EMR, (uint32_t)iocurrent);
+        
+        /* Clear Rising Falling edge configuration */
+        CLEAR_BIT(EXTI->RTSR, (uint32_t)iocurrent);
+        CLEAR_BIT(EXTI->FTSR, (uint32_t)iocurrent);
+      }
+    }
+    
+    position++;
+  }
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup GPIO_Exported_Functions_Group2 IO operation functions 
+ *  @brief   GPIO Read and Write 
+ *
+@verbatim   
+ ===============================================================================
+                       ##### IO operation functions #####
+ ===============================================================================
+  [..]
+    This subsection provides a set of functions allowing to manage the GPIOs.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  Reads the specified input port pin.
+  * @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
+  * @param  GPIO_Pin: specifies the port bit to read.
+  *         This parameter can be GPIO_PIN_x where x can be (0..15).
+  * @retval The input port pin value.
+  */
+GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
+{
+  GPIO_PinState bitstatus;
+
+  /* Check the parameters */
+  assert_param(IS_GPIO_PIN(GPIO_Pin));
+
+  if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET)
+  {
+    bitstatus = GPIO_PIN_SET;
+  }
+  else
+  {
+    bitstatus = GPIO_PIN_RESET;
+  }
+  return bitstatus;
+}
+
+/**
+  * @brief  Sets or clears the selected data port bit.
+  * 
+  * @note   This function uses GPIOx_BSRR register to allow atomic read/modify 
+  *         accesses. In this way, there is no risk of an IRQ occurring between
+  *         the read and the modify access.
+  *               
+  * @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
+  * @param  GPIO_Pin: specifies the port bit to be written.
+  *          This parameter can be one of GPIO_PIN_x where x can be (0..15).
+  * @param  PinState: specifies the value to be written to the selected bit.
+  *          This parameter can be one of the GPIO_PinState enum values:
+  *            @arg GPIO_BIT_RESET: to clear the port pin
+  *            @arg GPIO_BIT_SET: to set the port pin
+  * @retval None
+  */
+void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
+{
+  /* Check the parameters */
+  assert_param(IS_GPIO_PIN(GPIO_Pin));
+  assert_param(IS_GPIO_PIN_ACTION(PinState));
+
+  if(PinState != GPIO_PIN_RESET)
+  {
+    GPIOx->BSRR = GPIO_Pin;
+  }
+  else
+  {
+    GPIOx->BSRR = (uint32_t)GPIO_Pin << 16;
+  }
+}
+
+/**
+  * @brief  Toggles the specified GPIO pin
+  * @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral 
+  * @param  GPIO_Pin: Specifies the pins to be toggled.
+  * @retval None
+  */
+void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
+{
+  /* Check the parameters */
+  assert_param(IS_GPIO_PIN(GPIO_Pin));
+
+  GPIOx->ODR ^= GPIO_Pin;
+}
+
+/**
+* @brief  Locks GPIO Pins configuration registers.
+* @note   The locking mechanism allows the IO configuration to be frozen. When the LOCK sequence
+*         has been applied on a port bit, it is no longer possible to modify the value of the port bit until
+*         the next reset.
+* @param  GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
+* @param  GPIO_Pin: specifies the port bit to be locked.
+*         This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
+* @retval None
+*/
+HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
+{
+  __IO uint32_t tmp = GPIO_LCKR_LCKK;
+
+  /* Check the parameters */
+  assert_param(IS_GPIO_LOCK_INSTANCE(GPIOx));
+  assert_param(IS_GPIO_PIN(GPIO_Pin));
+
+  /* Apply lock key write sequence */
+  SET_BIT(tmp, GPIO_Pin);
+  /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */
+  GPIOx->LCKR = tmp;
+  /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */
+  GPIOx->LCKR = GPIO_Pin;
+  /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */
+  GPIOx->LCKR = tmp;
+  /* Read LCKK bit*/
+  tmp = GPIOx->LCKR;
+
+  if((uint32_t)(GPIOx->LCKR & GPIO_LCKR_LCKK))
+  {
+    return HAL_OK;
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+}
+
+/**
+  * @brief This function handles EXTI interrupt request.
+  * @param GPIO_Pin: Specifies the pins connected EXTI line
+  * @retval None
+  */
+void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
+{
+  /* EXTI line interrupt detected */
+  if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) 
+  { 
+    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
+    HAL_GPIO_EXTI_Callback(GPIO_Pin);
+  }
+}
+
+/**
+  * @brief  EXTI line detection callback
+  * @param GPIO_Pin: Specifies the pins connected EXTI line
+  * @retval None
+  */
+__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(GPIO_Pin);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_GPIO_EXTI_Callback could be implemented in the user file
+   */ 
+}
+
+/**
+  * @}
+  */
+
+
+/**
+  * @}
+  */
+
+#endif /* HAL_GPIO_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,145 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_gpio_ex.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   GPIO Extension HAL module driver.
+  *         This file provides firmware functions to manage the following 
+  *          functionalities of the General Purpose Input/Output (GPIO) extension peripheral.
+  *           + Extended features functions
+  *         
+  @verbatim
+  ==============================================================================
+                    ##### GPIO Peripheral extension features #####
+  ==============================================================================         
+  [..] GPIO module on STM32F1 family, manage also the AFIO register:
+       (+) Possibility to use the EVENTOUT Cortex feature
+   
+                     ##### How to use this driver #####
+  ==============================================================================
+  [..] This driver provides functions to use EVENTOUT Cortex feature
+    (#) Configure EVENTOUT Cortex feature using the function HAL_GPIOEx_ConfigEventout()
+    (#) Activate EVENTOUT Cortex feature using the HAL_GPIOEx_EnableEventout()
+    (#) Deactivate EVENTOUT Cortex feature using the HAL_GPIOEx_DisableEventout()
+ 
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************  
+  */ 
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup GPIOEx GPIOEx
+  * @brief GPIO HAL module driver
+  * @{
+  */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+
+/** @defgroup GPIOEx_Exported_Functions GPIOEx Exported Functions
+  * @{
+  */
+
+/** @defgroup GPIOEx_Exported_Functions_Group1 Extended features functions
+ *  @brief    Extended features functions 
+ *
+@verbatim   
+  ==============================================================================
+                 ##### Extended features functions #####
+  ==============================================================================  
+    [..]  This section provides functions allowing to:
+    (+) Configure EVENTOUT Cortex feature using the function HAL_GPIOEx_ConfigEventout()
+    (+) Activate EVENTOUT Cortex feature using the HAL_GPIOEx_EnableEventout()
+    (+) Deactivate EVENTOUT Cortex feature using the HAL_GPIOEx_DisableEventout()
+                     
+@endverbatim
+  * @{
+  */
+  
+/**
+  * @brief  Configures the port and pin on which the EVENTOUT Cortex signal will be connected.
+  * @param  GPIO_PortSource Select the port used to output the Cortex EVENTOUT signal.
+  *   This parameter can be a value of @ref GPIOEx_EVENTOUT_PORT.
+  * @param  GPIO_PinSource Select the pin used to output the Cortex EVENTOUT signal.
+  *   This parameter can be a value of @ref GPIOEx_EVENTOUT_PIN.
+  * @retval None
+  */  
+void HAL_GPIOEx_ConfigEventout(uint32_t GPIO_PortSource, uint32_t GPIO_PinSource)
+{
+  /* Verify the parameters */
+  assert_param(IS_AFIO_EVENTOUT_PORT(GPIO_PortSource));
+  assert_param(IS_AFIO_EVENTOUT_PIN(GPIO_PinSource));
+  
+  /* Apply the new configuration */
+  MODIFY_REG(AFIO->EVCR, (AFIO_EVCR_PORT)|(AFIO_EVCR_PIN), (GPIO_PortSource)|(GPIO_PinSource));
+}
+
+/**
+  * @brief  Enables the Event Output.
+  * @retval None
+  */
+void HAL_GPIOEx_EnableEventout(void)
+{
+  SET_BIT(AFIO->EVCR, AFIO_EVCR_EVOE);
+}
+
+/**
+  * @brief  Disables the Event Output.
+  * @retval None
+  */
+void HAL_GPIOEx_DisableEventout(void)
+{
+  CLEAR_BIT(AFIO->EVCR, AFIO_EVCR_EVOE);
+}
+
+/**
+  * @}
+  */
+  
+/**
+  * @}
+  */
+  
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,636 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_pwr.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   PWR HAL module driver.
+  *
+  *          This file provides firmware functions to manage the following
+  *          functionalities of the Power Controller (PWR) peripheral:
+  *           + Initialization/de-initialization functions
+  *           + Peripheral Control functions 
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup PWR PWR
+  * @brief    PWR HAL module driver
+  * @{
+  */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+
+/** @defgroup PWR_Private_Constants PWR Private Constants
+  * @{
+  */
+  
+/** @defgroup PWR_PVD_Mode_Mask PWR PVD Mode Mask
+  * @{
+  */ 
+#define PVD_MODE_IT               ((uint32_t)0x00010000)
+#define PVD_MODE_EVT              ((uint32_t)0x00020000)
+#define PVD_RISING_EDGE           ((uint32_t)0x00000001)
+#define PVD_FALLING_EDGE          ((uint32_t)0x00000002)
+/**
+  * @}
+  */
+
+
+/** @defgroup PWR_register_alias_address PWR Register alias address
+  * @{
+  */ 
+/* ------------- PWR registers bit address in the alias region ---------------*/
+#define PWR_OFFSET               (PWR_BASE - PERIPH_BASE)
+#define PWR_CR_OFFSET            0x00
+#define PWR_CSR_OFFSET           0x04
+#define PWR_CR_OFFSET_BB         (PWR_OFFSET + PWR_CR_OFFSET)
+#define PWR_CSR_OFFSET_BB        (PWR_OFFSET + PWR_CSR_OFFSET)
+/**
+  * @}
+  */
+   
+/** @defgroup PWR_CR_register_alias PWR CR Register alias address
+  * @{
+  */  
+/* --- CR Register ---*/
+/* Alias word address of LPSDSR bit */
+#define LPSDSR_BIT_NUMBER        POSITION_VAL(PWR_CR_LPDS)
+#define CR_LPSDSR_BB             ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (LPSDSR_BIT_NUMBER * 4)))
+
+/* Alias word address of DBP bit */
+#define DBP_BIT_NUMBER            POSITION_VAL(PWR_CR_DBP)
+#define CR_DBP_BB                ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (DBP_BIT_NUMBER * 4)))
+
+/* Alias word address of PVDE bit */
+#define PVDE_BIT_NUMBER           POSITION_VAL(PWR_CR_PVDE)
+#define CR_PVDE_BB               ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (PVDE_BIT_NUMBER * 4)))
+
+/**
+  * @}
+  */
+
+/** @defgroup PWR_CSR_register_alias PWR CSR Register alias address
+  * @{
+  */
+
+/* --- CSR Register ---*/
+/* Alias word address of EWUP1 bit */
+#define CSR_EWUP_BB(VAL)         ((uint32_t)(PERIPH_BB_BASE + (PWR_CSR_OFFSET_BB * 32) + (POSITION_VAL(VAL) * 4)))
+/**
+  * @}
+  */
+  
+/**
+  * @}
+  */
+
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/** @defgroup PWR_Private_Functions PWR Private Functions
+ * brief   WFE cortex command overloaded for HAL_PWR_EnterSTOPMode usage only (see Workaround section)
+ * @{
+ */
+static void PWR_OverloadWfe(void);
+
+/* Private functions ---------------------------------------------------------*/
+__NOINLINE
+static void PWR_OverloadWfe(void)
+{
+  __asm volatile( "wfe" );
+  __asm volatile( "nop" );
+}
+
+/**
+  * @}
+  */
+
+
+/** @defgroup PWR_Exported_Functions PWR Exported Functions
+  * @{
+  */
+
+/** @defgroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions 
+  *  @brief   Initialization and de-initialization functions
+  *
+@verbatim
+ ===============================================================================
+              ##### Initialization and de-initialization functions #####
+ ===============================================================================
+    [..]
+      After reset, the backup domain (RTC registers, RTC backup data
+      registers) is protected against possible unwanted
+      write accesses.
+      To enable access to the RTC Domain and RTC registers, proceed as follows:
+        (+) Enable the Power Controller (PWR) APB1 interface clock using the
+            __HAL_RCC_PWR_CLK_ENABLE() macro.
+        (+) Enable access to RTC domain using the HAL_PWR_EnableBkUpAccess() function.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Deinitializes the PWR peripheral registers to their default reset values.  
+  * @retval None
+  */
+void HAL_PWR_DeInit(void)
+{
+  __HAL_RCC_PWR_FORCE_RESET();
+  __HAL_RCC_PWR_RELEASE_RESET();
+}
+
+/**
+  * @brief  Enables access to the backup domain (RTC registers, RTC
+  *         backup data registers ).
+  * @note   If the HSE divided by 128 is used as the RTC clock, the
+  *         Backup Domain Access should be kept enabled.
+  * @retval None
+  */
+void HAL_PWR_EnableBkUpAccess(void)
+{
+  /* Enable access to RTC and backup registers */
+  *(__IO uint32_t *) CR_DBP_BB = (uint32_t)ENABLE;
+}
+
+/**
+  * @brief  Disables access to the backup domain (RTC registers, RTC
+  *         backup data registers).
+  * @note   If the HSE divided by 128 is used as the RTC clock, the
+  *         Backup Domain Access should be kept enabled.
+  * @retval None
+  */
+void HAL_PWR_DisableBkUpAccess(void)
+{
+  /* Disable access to RTC and backup registers */
+  *(__IO uint32_t *) CR_DBP_BB = (uint32_t)DISABLE;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup PWR_Exported_Functions_Group2 Peripheral Control functions 
+  * @brief    Low Power modes configuration functions
+  *
+@verbatim
+ ===============================================================================
+                 ##### Peripheral Control functions #####
+ ===============================================================================
+     
+    *** PVD configuration ***
+    =========================
+    [..]
+      (+) The PVD is used to monitor the VDD power supply by comparing it to a
+          threshold selected by the PVD Level (PLS[2:0] bits in the PWR_CR).
+
+      (+) A PVDO flag is available to indicate if VDD/VDDA is higher or lower
+          than the PVD threshold. This event is internally connected to the EXTI
+          line16 and can generate an interrupt if enabled. This is done through
+          __HAL_PVD_EXTI_ENABLE_IT() macro.
+      (+) The PVD is stopped in Standby mode.
+
+    *** WakeUp pin configuration ***
+    ================================
+    [..]
+      (+) WakeUp pin is used to wake up the system from Standby mode. This pin is
+          forced in input pull-down configuration and is active on rising edges.
+      (+) There is one WakeUp pin:
+          WakeUp Pin 1 on PA.00.
+
+    [..]
+
+    *** Low Power modes configuration ***
+    =====================================
+     [..]
+      The device features 3 low-power modes:
+      (+) Sleep mode: CPU clock off, all peripherals including Cortex-M3 core peripherals like 
+                      NVIC, SysTick, etc. are kept running
+      (+) Stop mode: All clocks are stopped
+      (+) Standby mode: 1.8V domain powered off
+  
+  
+   *** Sleep mode ***
+   ==================
+    [..]
+      (+) Entry:
+          The Sleep mode is entered by using the HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFx)
+              functions with
+          (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction
+          (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction
+     
+      (+) Exit:
+        (++) WFI entry mode, Any peripheral interrupt acknowledged by the nested vectored interrupt
+             controller (NVIC) can wake up the device from Sleep mode.
+        (++) WFE entry mode, Any wakeup event can wake up the device from Sleep mode.
+           (+++) Any peripheral interrupt w/o NVIC configuration & SEVONPEND bit set in the Cortex (HAL_PWR_EnableSEVOnPend)
+           (+++) Any EXTI Line (Internal or External) configured in Event mode
+
+   *** Stop mode ***
+   =================
+    [..]
+      The Stop mode is based on the Cortex-M3 deepsleep mode combined with peripheral
+      clock gating. The voltage regulator can be configured either in normal or low-power mode.
+      In Stop mode, all clocks in the 1.8 V domain are stopped, the PLL, the HSI and the HSE RC 
+      oscillators are disabled. SRAM and register contents are preserved.
+      In Stop mode, all I/O pins keep the same state as in Run mode.
+
+      (+) Entry:
+           The Stop mode is entered using the HAL_PWR_EnterSTOPMode(PWR_REGULATOR_VALUE, PWR_SLEEPENTRY_WFx )
+             function with:
+          (++) PWR_REGULATOR_VALUE= PWR_MAINREGULATOR_ON: Main regulator ON.
+          (++) PWR_REGULATOR_VALUE= PWR_LOWPOWERREGULATOR_ON: Low Power regulator ON.
+          (++) PWR_SLEEPENTRY_WFx= PWR_SLEEPENTRY_WFI: enter STOP mode with WFI instruction
+          (++) PWR_SLEEPENTRY_WFx= PWR_SLEEPENTRY_WFE: enter STOP mode with WFE instruction
+      (+) Exit:
+          (++) WFI entry mode, Any EXTI Line (Internal or External) configured in Interrupt mode with NVIC configured
+          (++) WFE entry mode, Any EXTI Line (Internal or External) configured in Event mode.
+
+   *** Standby mode ***
+   ====================
+     [..]
+      The Standby mode allows to achieve the lowest power consumption. It is based on the
+      Cortex-M3 deepsleep mode, with the voltage regulator disabled. The 1.8 V domain is 
+      consequently powered off. The PLL, the HSI oscillator and the HSE oscillator are also 
+      switched off. SRAM and register contents are lost except for registers in the Backup domain 
+      and Standby circuitry
+      
+      (+) Entry:
+        (++) The Standby mode is entered using the HAL_PWR_EnterSTANDBYMode() function.
+      (+) Exit:
+        (++) WKUP pin rising edge, RTC alarm event rising edge, external Reset in 
+             NRSTpin, IWDG Reset
+
+   *** Auto-wakeup (AWU) from low-power mode ***
+       =============================================
+       [..]
+        
+       (+) The MCU can be woken up from low-power mode by an RTC Alarm event, 
+           without depending on an external interrupt (Auto-wakeup mode).
+   
+       (+) RTC auto-wakeup (AWU) from the Stop and Standby modes
+
+           (++) To wake up from the Stop mode with an RTC alarm event, it is necessary to 
+                configure the RTC to generate the RTC alarm using the HAL_RTC_SetAlarm_IT() function.
+
+   *** PWR Workarounds linked to Silicon Limitation ***
+       ====================================================
+       [..]
+       Below the list of all silicon limitations known on STM32F1xx prouct.
+
+       (#)Workarounds Implemented inside PWR HAL Driver
+          (##)Debugging Stop mode with WFE entry - overloaded the WFE by an internal function    
+        
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Configures the voltage threshold detected by the Power Voltage Detector(PVD).
+  * @param  sConfigPVD: pointer to an PWR_PVDTypeDef structure that contains the configuration
+  *         information for the PVD.
+  * @note   Refer to the electrical characteristics of your device datasheet for
+  *         more details about the voltage threshold corresponding to each
+  *         detection level.
+  * @retval None
+  */
+void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD)
+{
+  /* Check the parameters */
+  assert_param(IS_PWR_PVD_LEVEL(sConfigPVD->PVDLevel));
+  assert_param(IS_PWR_PVD_MODE(sConfigPVD->Mode));
+
+  /* Set PLS[7:5] bits according to PVDLevel value */
+  MODIFY_REG(PWR->CR, PWR_CR_PLS, sConfigPVD->PVDLevel);
+  
+  /* Clear any previous config. Keep it clear if no event or IT mode is selected */
+  __HAL_PWR_PVD_EXTI_DISABLE_EVENT();
+  __HAL_PWR_PVD_EXTI_DISABLE_IT();
+  __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); 
+  __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();
+
+  /* Configure interrupt mode */
+  if((sConfigPVD->Mode & PVD_MODE_IT) == PVD_MODE_IT)
+  {
+    __HAL_PWR_PVD_EXTI_ENABLE_IT();
+  }
+  
+  /* Configure event mode */
+  if((sConfigPVD->Mode & PVD_MODE_EVT) == PVD_MODE_EVT)
+  {
+    __HAL_PWR_PVD_EXTI_ENABLE_EVENT();
+  }
+  
+  /* Configure the edge */
+  if((sConfigPVD->Mode & PVD_RISING_EDGE) == PVD_RISING_EDGE)
+  {
+    __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE();
+  }
+  
+  if((sConfigPVD->Mode & PVD_FALLING_EDGE) == PVD_FALLING_EDGE)
+  {
+    __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE();
+  }
+}
+
+/**
+  * @brief  Enables the Power Voltage Detector(PVD).
+  * @retval None
+  */
+void HAL_PWR_EnablePVD(void)
+{
+  /* Enable the power voltage detector */
+  *(__IO uint32_t *) CR_PVDE_BB = (uint32_t)ENABLE;
+}
+
+/**
+  * @brief  Disables the Power Voltage Detector(PVD).
+  * @retval None
+  */
+void HAL_PWR_DisablePVD(void)
+{
+  /* Disable the power voltage detector */
+  *(__IO uint32_t *) CR_PVDE_BB = (uint32_t)DISABLE;
+}
+
+/**
+  * @brief Enables the WakeUp PINx functionality.
+  * @param WakeUpPinx: Specifies the Power Wake-Up pin to enable.
+  *        This parameter can be one of the following values:
+  *           @arg PWR_WAKEUP_PIN1
+  * @retval None
+  */
+void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinx)
+{
+  /* Check the parameter */
+  assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx));
+  /* Enable the EWUPx pin */
+  *(__IO uint32_t *) CSR_EWUP_BB(WakeUpPinx) = (uint32_t)ENABLE;
+}
+
+/**
+  * @brief Disables the WakeUp PINx functionality.
+  * @param WakeUpPinx: Specifies the Power Wake-Up pin to disable.
+  *        This parameter can be one of the following values:
+  *           @arg PWR_WAKEUP_PIN1
+  * @retval None
+  */
+void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx)
+{
+  /* Check the parameter */
+  assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx));
+  /* Disable the EWUPx pin */
+  *(__IO uint32_t *) CSR_EWUP_BB(WakeUpPinx) = (uint32_t)DISABLE;
+}
+
+/**
+  * @brief Enters Sleep mode.
+  * @note  In Sleep mode, all I/O pins keep the same state as in Run mode.
+  * @param Regulator: Regulator state as no effect in SLEEP mode -  allows to support portability from legacy software
+  * @param SLEEPEntry: Specifies if SLEEP mode is entered with WFI or WFE instruction.
+  *           When WFI entry is used, tick interrupt have to be disabled if not desired as 
+  *           the interrupt wake up source.
+  *           This parameter can be one of the following values:
+  *            @arg PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction
+  *            @arg PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction
+  * @retval None
+  */
+void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry)
+{
+  /* Check the parameters */
+  /* No check on Regulator because parameter not used in SLEEP mode */
+  assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry));
+
+  /* Clear SLEEPDEEP bit of Cortex System Control Register */
+  CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk));
+
+  /* Select SLEEP mode entry -------------------------------------------------*/
+  if(SLEEPEntry == PWR_SLEEPENTRY_WFI)
+  {
+    /* Request Wait For Interrupt */
+    __WFI();
+  }
+  else
+  {
+    /* Request Wait For Event */
+    __SEV();
+    __WFE();
+    __WFE();
+  }
+}
+
+/**
+  * @brief Enters Stop mode. 
+  * @note  In Stop mode, all I/O pins keep the same state as in Run mode.
+  * @note  When exiting Stop mode by using an interrupt or a wakeup event,
+  *        HSI RC oscillator is selected as system clock.
+  * @note  When the voltage regulator operates in low power mode, an additional
+  *         startup delay is incurred when waking up from Stop mode. 
+  *         By keeping the internal regulator ON during Stop mode, the consumption
+  *         is higher although the startup time is reduced.    
+  * @param Regulator: Specifies the regulator state in Stop mode.
+  *          This parameter can be one of the following values:
+  *            @arg PWR_MAINREGULATOR_ON: Stop mode with regulator ON
+  *            @arg PWR_LOWPOWERREGULATOR_ON: Stop mode with low power regulator ON
+  * @param STOPEntry: Specifies if Stop mode in entered with WFI or WFE instruction.
+  *          This parameter can be one of the following values:
+  *            @arg PWR_STOPENTRY_WFI: Enter Stop mode with WFI instruction
+  *            @arg PWR_STOPENTRY_WFE: Enter Stop mode with WFE instruction   
+  * @retval None
+  */
+void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry)
+{
+  /* Check the parameters */
+  assert_param(IS_PWR_REGULATOR(Regulator));
+  assert_param(IS_PWR_STOP_ENTRY(STOPEntry));
+
+  /* Clear PDDS bit in PWR register to specify entering in STOP mode when CPU enter in Deepsleep */ 
+  CLEAR_BIT(PWR->CR,  PWR_CR_PDDS);
+
+  /* Select the voltage regulator mode by setting LPDS bit in PWR register according to Regulator parameter value */
+  MODIFY_REG(PWR->CR, PWR_CR_LPDS, Regulator);
+
+  /* Set SLEEPDEEP bit of Cortex System Control Register */
+  SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk));
+
+  /* Select Stop mode entry --------------------------------------------------*/
+  if(STOPEntry == PWR_STOPENTRY_WFI)
+  {
+    /* Request Wait For Interrupt */
+    __WFI();
+  }
+  else
+  {
+    /* Request Wait For Event */
+    __SEV();
+    PWR_OverloadWfe(); /* WFE redefine locally */
+    PWR_OverloadWfe(); /* WFE redefine locally */
+  }
+  /* Reset SLEEPDEEP bit of Cortex System Control Register */
+  CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk));
+}
+
+/**
+  * @brief Enters Standby mode.
+  * @note  In Standby mode, all I/O pins are high impedance except for:
+  *          - Reset pad (still available) 
+  *          - TAMPER pin if configured for tamper or calibration out.
+  *          - WKUP pin (PA0) if enabled.
+  * @retval None
+  */
+void HAL_PWR_EnterSTANDBYMode(void)
+{
+  /* Select Standby mode */
+  SET_BIT(PWR->CR, PWR_CR_PDDS);
+
+  /* Set SLEEPDEEP bit of Cortex System Control Register */
+  SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk));
+
+  /* This option is used to ensure that store operations are completed */
+#if defined ( __CC_ARM)
+  __force_stores();
+#endif
+  /* Request Wait For Interrupt */
+  __WFI();
+}
+
+
+/**
+  * @brief Indicates Sleep-On-Exit when returning from Handler mode to Thread mode. 
+  * @note Set SLEEPONEXIT bit of SCR register. When this bit is set, the processor 
+  *       re-enters SLEEP mode when an interruption handling is over.
+  *       Setting this bit is useful when the processor is expected to run only on
+  *       interruptions handling.         
+  * @retval None
+  */
+void HAL_PWR_EnableSleepOnExit(void)
+{
+  /* Set SLEEPONEXIT bit of Cortex System Control Register */
+  SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk));
+}
+
+
+/**
+  * @brief Disables Sleep-On-Exit feature when returning from Handler mode to Thread mode. 
+  * @note Clears SLEEPONEXIT bit of SCR register. When this bit is set, the processor 
+  *       re-enters SLEEP mode when an interruption handling is over.          
+  * @retval None
+  */
+void HAL_PWR_DisableSleepOnExit(void)
+{
+  /* Clear SLEEPONEXIT bit of Cortex System Control Register */
+  CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk));
+}
+
+
+/**
+  * @brief Enables CORTEX M3 SEVONPEND bit. 
+  * @note Sets SEVONPEND bit of SCR register. When this bit is set, this causes 
+  *       WFE to wake up when an interrupt moves from inactive to pended.
+  * @retval None
+  */
+void HAL_PWR_EnableSEVOnPend(void)
+{
+  /* Set SEVONPEND bit of Cortex System Control Register */
+  SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk));
+}
+
+
+/**
+  * @brief Disables CORTEX M3 SEVONPEND bit. 
+  * @note Clears SEVONPEND bit of SCR register. When this bit is set, this causes 
+  *       WFE to wake up when an interrupt moves from inactive to pended.         
+  * @retval None
+  */
+void HAL_PWR_DisableSEVOnPend(void)
+{
+  /* Clear SEVONPEND bit of Cortex System Control Register */
+  CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk));
+}
+
+
+
+/**
+  * @brief  This function handles the PWR PVD interrupt request.
+  * @note   This API should be called under the PVD_IRQHandler().
+  * @retval None
+  */
+void HAL_PWR_PVD_IRQHandler(void)
+{
+  /* Check PWR exti flag */
+  if(__HAL_PWR_PVD_EXTI_GET_FLAG() != RESET)
+  {
+    /* PWR PVD interrupt user callback */
+    HAL_PWR_PVDCallback();
+
+    /* Clear PWR Exti pending bit */
+    __HAL_PWR_PVD_EXTI_CLEAR_FLAG();
+  }
+}
+
+/**
+  * @brief  PWR PVD interrupt callback
+  * @retval None
+  */
+__weak void HAL_PWR_PVDCallback(void)
+{
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_PWR_PVDCallback could be implemented in the user file
+   */ 
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#endif /* HAL_PWR_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1270 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_rcc.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   RCC HAL module driver.
+  *          This file provides firmware functions to manage the following 
+  *          functionalities of the Reset and Clock Control (RCC) peripheral:
+  *           + Initialization and de-initialization functions
+  *           + Peripheral Control functions
+  *       
+  @verbatim                
+  ==============================================================================
+                      ##### RCC specific features #####
+  ==============================================================================
+    [..]  
+      After reset the device is running from Internal High Speed oscillator
+      (HSI 8MHz) with Flash 0 wait state, Flash prefetch buffer is enabled, 
+      and all peripherals are off except internal SRAM, Flash and JTAG.
+      (+) There is no prescaler on High speed (AHB) and Low speed (APB) buses;
+          all peripherals mapped on these buses are running at HSI speed.
+      (+) The clock for all peripherals is switched off, except the SRAM and FLASH.
+      (+) All GPIOs are in input floating state, except the JTAG pins which
+          are assigned to be used for debug purpose.
+    [..] Once the device started from reset, the user application has to:
+      (+) Configure the clock source to be used to drive the System clock
+          (if the application needs higher frequency/performance)
+      (+) Configure the System clock frequency and Flash settings  
+      (+) Configure the AHB and APB buses prescalers
+      (+) Enable the clock for the peripheral(s) to be used
+      (+) Configure the clock source(s) for peripherals whose clocks are not
+          derived from the System clock (I2S, RTC, ADC, USB OTG FS) 
+
+                      ##### RCC Limitations #####
+  ==============================================================================
+    [..]  
+      A delay between an RCC peripheral clock enable and the effective peripheral 
+      enabling should be taken into account in order to manage the peripheral read/write 
+      from/to registers.
+      (+) This delay depends on the peripheral mapping.
+        (++) AHB & APB peripherals, 1 dummy read is necessary
+
+    [..]  
+      Workarounds:
+      (#) For AHB & APB peripherals, a dummy read to the peripheral register has been
+          inserted in each __HAL_RCC_PPP_CLK_ENABLE() macro.
+
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************  
+*/
+  
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup RCC RCC
+* @brief RCC HAL module driver
+  * @{
+  */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/** @defgroup RCC_Private_Constants RCC Private Constants
+ * @{
+ */
+/* Bits position in  in the CFGR register */
+#define RCC_CFGR_HPRE_BITNUMBER           POSITION_VAL(RCC_CFGR_HPRE)
+#define RCC_CFGR_PPRE1_BITNUMBER          POSITION_VAL(RCC_CFGR_PPRE1)
+#define RCC_CFGR_PPRE2_BITNUMBER          POSITION_VAL(RCC_CFGR_PPRE2)
+/**
+  * @}
+  */
+/* Private macro -------------------------------------------------------------*/
+/** @defgroup RCC_Private_Macros RCC Private Macros
+  * @{
+  */
+
+#define MCO1_CLK_ENABLE()     __HAL_RCC_GPIOA_CLK_ENABLE()
+#define MCO1_GPIO_PORT        GPIOA
+#define MCO1_PIN              GPIO_PIN_8
+
+/**
+  * @}
+  */
+
+/* Private variables ---------------------------------------------------------*/
+/** @defgroup RCC_Private_Variables RCC Private Variables
+  * @{
+  */
+/**
+  * @}
+  */
+
+/* Private function prototypes -----------------------------------------------*/
+/* Exported functions ---------------------------------------------------------*/
+
+/** @defgroup RCC_Exported_Functions RCC Exported Functions
+  * @{
+  */
+
+/** @defgroup RCC_Exported_Functions_Group1 Initialization and de-initialization functions 
+  *  @brief    Initialization and Configuration functions 
+  *
+  @verbatim    
+  ===============================================================================
+           ##### Initialization and de-initialization functions #####
+  ===============================================================================
+    [..]
+      This section provides functions allowing to configure the internal/external oscillators
+      (HSE, HSI, LSE, LSI, PLL, CSS and MCO) and the System buses clocks (SYSCLK, AHB, APB1
+      and APB2).
+
+    [..] Internal/external clock and PLL configuration
+      (#) HSI (high-speed internal), 8 MHz factory-trimmed RC used directly or through
+          the PLL as System clock source.
+      (#) LSI (low-speed internal), ~40 KHz low consumption RC used as IWDG and/or RTC
+          clock source.
+
+      (#) HSE (high-speed external), 4 to 24 MHz (STM32F100xx) or 4 to 16 MHz (STM32F101x/STM32F102x/STM32F103x) or 3 to 25 MHz (STM32F105x/STM32F107x)  crystal oscillator used directly or
+          through the PLL as System clock source. Can be used also as RTC clock source.
+
+      (#) LSE (low-speed external), 32 KHz oscillator used as RTC clock source.   
+
+      (#) PLL (clocked by HSI or HSE), featuring different output clocks:
+        (++) The first output is used to generate the high speed system clock (up to 72 MHz for STM32F10xxx or up to 24 MHz for STM32F100xx)
+        (++) The second output is used to generate the clock for the USB OTG FS (48 MHz)
+
+      (#) CSS (Clock security system), once enable using the macro __HAL_RCC_CSS_ENABLE()
+          and if a HSE clock failure occurs(HSE used directly or through PLL as System 
+          clock source), the System clocks automatically switched to HSI and an interrupt
+          is generated if enabled. The interrupt is linked to the Cortex-M3 NMI 
+          (Non-Maskable Interrupt) exception vector.   
+
+      (#) MCO1 (microcontroller clock output), used to output SYSCLK, HSI,  
+          HSE or PLL clock (divided by 2) on PA8 pin + PLL2CLK, PLL3CLK/2, PLL3CLK and XTI for STM32F105x/STM32F107x
+
+    [..] System, AHB and APB buses clocks configuration
+      (#) Several clock sources can be used to drive the System clock (SYSCLK): HSI,
+          HSE and PLL.
+          The AHB clock (HCLK) is derived from System clock through configurable
+          prescaler and used to clock the CPU, memory and peripherals mapped
+          on AHB bus (DMA, GPIO...). APB1 (PCLK1) and APB2 (PCLK2) clocks are derived
+          from AHB clock through configurable prescalers and used to clock
+          the peripherals mapped on these buses. You can use
+          "@ref HAL_RCC_GetSysClockFreq()" function to retrieve the frequencies of these clocks.
+
+      -@- All the peripheral clocks are derived from the System clock (SYSCLK) except:
+          (+@) RTC: RTC clock can be derived either from the LSI, LSE or HSE clock
+              divided by 128. 
+          (+@) USB OTG FS and RTC: USB OTG FS require a frequency equal to 48 MHz
+              to work correctly. This clock is derived of the main PLL through PLL Multiplier.
+          (+@) I2S interface on STM32F105x/STM32F107x can be derived from PLL3CLK
+          (+@) IWDG clock which is always the LSI clock.
+
+      (#) For STM32F10xxx, the maximum frequency of the SYSCLK and HCLK/PCLK2 is 72 MHz, PCLK1 36 MHz.
+          For STM32F100xx, the maximum frequency of the SYSCLK and HCLK/PCLK1/PCLK2 is 24 MHz.  
+          Depending on the SYSCLK frequency, the flash latency should be adapted accordingly.
+  @endverbatim
+  * @{
+  */
+  
+/*
+  Additional consideration on the SYSCLK based on Latency settings:
+        +-----------------------------------------------+
+        | Latency       | SYSCLK clock frequency (MHz)  |
+        |---------------|-------------------------------|
+        |0WS(1CPU cycle)|       0 < SYSCLK <= 24        |
+        |---------------|-------------------------------|
+        |1WS(2CPU cycle)|      24 < SYSCLK <= 48        |
+        |---------------|-------------------------------|
+        |2WS(3CPU cycle)|      48 < SYSCLK <= 72        |
+        +-----------------------------------------------+
+  */
+
+/**
+  * @brief  Resets the RCC clock configuration to the default reset state.
+  * @note   The default reset state of the clock configuration is given below:
+  *            - HSI ON and used as system clock source
+  *            - HSE and PLL OFF
+  *            - AHB, APB1 and APB2 prescaler set to 1.
+  *            - CSS and MCO1 OFF
+  *            - All interrupts disabled
+  * @note   This function does not modify the configuration of the
+  *            - Peripheral clocks
+  *            - LSI, LSE and RTC clocks
+  * @retval None
+  */
+void HAL_RCC_DeInit(void)
+{
+  /* Switch SYSCLK to HSI */
+  CLEAR_BIT(RCC->CFGR, RCC_CFGR_SW);
+
+  /* Reset HSEON, CSSON, & PLLON bits */
+  CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_CSSON | RCC_CR_PLLON);
+  
+  /* Reset HSEBYP bit */
+  CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);
+  
+  /* Reset CFGR register */
+  CLEAR_REG(RCC->CFGR);
+  
+  /* Set HSITRIM bits to the reset value */
+  MODIFY_REG(RCC->CR, RCC_CR_HSITRIM, ((uint32_t)0x10 << POSITION_VAL(RCC_CR_HSITRIM)));
+  
+#if (defined(STM32F105xC) || defined(STM32F107xC) || defined (STM32F100xB) || defined (STM32F100xE))
+  /* Reset CFGR2 register */
+  CLEAR_REG(RCC->CFGR2);
+
+#endif /* STM32F105xC || STM32F107xC || STM32F100xB || STM32F100xE */
+  /* Disable all interrupts */
+  CLEAR_REG(RCC->CIR);
+
+  /* Update the SystemCoreClock global variable */
+  SystemCoreClock = HSI_VALUE;
+}
+
+/**
+  * @brief  Initializes the RCC Oscillators according to the specified parameters in the
+  *         RCC_OscInitTypeDef.
+  * @param  RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that
+  *         contains the configuration information for the RCC Oscillators.
+  * @note   The PLL is not disabled when used as system clock.
+  * @note   The PLL is not disabled when USB OTG FS clock is enabled (specific to devices with USB FS)
+  * @note   Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not
+  *         supported by this macro. User should request a transition to LSE Off
+  *         first and then LSE On or LSE Bypass.
+  * @note   Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not
+  *         supported by this macro. User should request a transition to HSE Off
+  *         first and then HSE On or HSE Bypass.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct)
+{
+   uint32_t tickstart = 0;
+  
+  /* Check the parameters */
+  assert_param(RCC_OscInitStruct != NULL);
+  assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
+  
+  /*------------------------------- HSE Configuration ------------------------*/ 
+  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
+        
+    /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */
+    if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) 
+       || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE)))
+    {
+      if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
+      {
+        return HAL_ERROR;
+      }
+    }
+    else
+    {
+      /* Set the new HSE configuration ---------------------------------------*/
+      __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
+      
+
+       /* Check the HSE State */
+      if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
+      {
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till HSE is ready */
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+      }
+      else
+      {
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till HSE is disabled */
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
+        {
+           if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+      }
+    }
+  }
+  /*----------------------------- HSI Configuration --------------------------*/ 
+  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
+    assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
+    
+    /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ 
+    if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) 
+       || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI_DIV2)))
+    {
+      /* When HSI is used as system clock it will not disabled */
+      if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
+      {
+        return HAL_ERROR;
+      }
+      /* Otherwise, just the calibration is allowed */
+      else
+      {
+        /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
+        __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
+      }
+    }
+    else
+    {
+      /* Check the HSI State */
+      if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF)
+      {
+       /* Enable the Internal High Speed oscillator (HSI). */
+        __HAL_RCC_HSI_ENABLE();
+        
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till HSI is ready */
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+                
+        /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
+        __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
+      }
+      else
+      {
+        /* Disable the Internal High Speed oscillator (HSI). */
+        __HAL_RCC_HSI_DISABLE();
+        
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till HSI is disabled */
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+      }
+    }
+  }
+  /*------------------------------ LSI Configuration -------------------------*/ 
+  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
+    
+    /* Check the LSI State */
+    if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF)
+    {
+      /* Enable the Internal Low Speed oscillator (LSI). */
+      __HAL_RCC_LSI_ENABLE();
+      
+      /* Get Start Tick */
+      tickstart = HAL_GetTick();
+      
+      /* Wait till LSI is ready */  
+      while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
+      {
+        if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+      /*  To have a fully stabilized clock in the specified range, a software delay of 1ms 
+          should be added.*/
+      HAL_Delay(1);
+    }
+    else
+    {
+      /* Disable the Internal Low Speed oscillator (LSI). */
+      __HAL_RCC_LSI_DISABLE();
+      
+      /* Get Start Tick */
+      tickstart = HAL_GetTick();
+      
+      /* Wait till LSI is disabled */  
+      while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
+      {
+        if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+    }
+  }
+  /*------------------------------ LSE Configuration -------------------------*/ 
+  if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
+
+    /* Enable Power Clock*/
+      __HAL_RCC_PWR_CLK_ENABLE();
+    
+      /* Enable write access to Backup domain */
+      SET_BIT(PWR->CR, PWR_CR_DBP);
+      
+      /* Wait for Backup domain Write protection disable */
+      tickstart = HAL_GetTick();
+
+    while((PWR->CR & PWR_CR_DBP) == RESET)
+      {
+        if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+
+    /* Set the new LSE configuration -----------------------------------------*/
+    __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
+    /* Check the LSE State */
+    if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF)
+    {
+      /* Get Start Tick */
+      tickstart = HAL_GetTick();
+      
+      /* Wait till LSE is ready */  
+      while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
+      {
+        if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+    }
+    else
+    {
+      /* Get Start Tick */
+      tickstart = HAL_GetTick();
+      
+      /* Wait till LSE is disabled */  
+      while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
+      {
+        if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+    }
+  }
+
+#if defined(RCC_CR_PLL2ON)
+  /*-------------------------------- PLL2 Configuration -----------------------*/
+  /* Check the parameters */
+  assert_param(IS_RCC_PLL2(RCC_OscInitStruct->PLL2.PLL2State));
+  if ((RCC_OscInitStruct->PLL2.PLL2State) != RCC_PLL2_NONE)
+  {
+    /* This bit can not be cleared if the PLL2 clock is used indirectly as system 
+      clock (i.e. it is used as PLL clock entry that is used as system clock). */
+    if((__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE) && \
+        (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && \
+        ((READ_BIT(RCC->CFGR2,RCC_CFGR2_PREDIV1SRC)) == RCC_CFGR2_PREDIV1SRC_PLL2))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      if((RCC_OscInitStruct->PLL2.PLL2State) == RCC_PLL2_ON)
+      {
+        /* Check the parameters */
+        assert_param(IS_RCC_PLL2_MUL(RCC_OscInitStruct->PLL2.PLL2MUL));
+        assert_param(IS_RCC_HSE_PREDIV2(RCC_OscInitStruct->PLL2.HSEPrediv2Value));
+
+        /* Prediv2 can be written only when the PLLI2S is disabled. */
+        /* Return an error only if new value is different from the programmed value */
+        if (HAL_IS_BIT_SET(RCC->CR,RCC_CR_PLL3ON) && \
+          (__HAL_RCC_HSE_GET_PREDIV2() != RCC_OscInitStruct->PLL2.HSEPrediv2Value))
+        {
+          return HAL_ERROR;
+        }
+        
+        /* Disable the main PLL2. */
+        __HAL_RCC_PLL2_DISABLE();
+        
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till PLL2 is disabled */
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY) != RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+        
+        /* Configure the HSE prediv2 factor --------------------------------*/
+        __HAL_RCC_HSE_PREDIV2_CONFIG(RCC_OscInitStruct->PLL2.HSEPrediv2Value);
+
+        /* Configure the main PLL2 multiplication factors. */
+        __HAL_RCC_PLL2_CONFIG(RCC_OscInitStruct->PLL2.PLL2MUL);
+        
+        /* Enable the main PLL2. */
+        __HAL_RCC_PLL2_ENABLE();
+        
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till PLL2 is ready */
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY)  == RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+      }
+      else
+      {
+       /* Set PREDIV1 source to HSE */
+        CLEAR_BIT(RCC->CFGR2, RCC_CFGR2_PREDIV1SRC);
+
+        /* Disable the main PLL2. */
+        __HAL_RCC_PLL2_DISABLE();
+ 
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till PLL2 is disabled */  
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY)  != RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+      }
+    }
+  }
+
+#endif /* RCC_CR_PLL2ON */
+  /*-------------------------------- PLL Configuration -----------------------*/
+  /* Check the parameters */
+  assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
+  if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
+  {
+    /* Check if the PLL is used as system clock or not */
+    if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
+    { 
+      if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
+      {
+        /* Check the parameters */
+        assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
+        assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL));
+  
+        /* Disable the main PLL. */
+        __HAL_RCC_PLL_DISABLE();
+        
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till PLL is disabled */
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY)  != RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+
+        /* Configure the HSE prediv factor --------------------------------*/
+        /* It can be written only when the PLL is disabled. Not used in PLL source is different than HSE */
+        if(RCC_OscInitStruct->PLL.PLLSource == RCC_PLLSOURCE_HSE)
+        {
+          /* Check the parameter */
+          assert_param(IS_RCC_HSE_PREDIV(RCC_OscInitStruct->HSEPredivValue));
+#if defined(RCC_CFGR2_PREDIV1SRC)
+          assert_param(IS_RCC_PREDIV1_SOURCE(RCC_OscInitStruct->Prediv1Source));
+          
+          /* Set PREDIV1 source */
+          SET_BIT(RCC->CFGR2, RCC_OscInitStruct->Prediv1Source);
+#endif /* RCC_CFGR2_PREDIV1SRC */
+
+          /* Set PREDIV1 Value */
+          __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue);
+        }
+
+        /* Configure the main PLL clock source and multiplication factors. */
+        __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
+                             RCC_OscInitStruct->PLL.PLLMUL);
+        /* Enable the main PLL. */
+        __HAL_RCC_PLL_ENABLE();
+        
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till PLL is ready */
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY)  == RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+      }
+      else
+      {
+        /* Disable the main PLL. */
+        __HAL_RCC_PLL_DISABLE();
+ 
+        /* Get Start Tick */
+        tickstart = HAL_GetTick();
+        
+        /* Wait till PLL is disabled */  
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY)  != RESET)
+        {
+          if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }
+        }
+      }
+    }
+    else
+    {
+      return HAL_ERROR;
+    }
+  }
+  
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the CPU, AHB and APB buses clocks according to the specified 
+  *         parameters in the RCC_ClkInitStruct.
+  * @param  RCC_ClkInitStruct pointer to an RCC_OscInitTypeDef structure that
+  *         contains the configuration information for the RCC peripheral.
+  * @param  FLatency FLASH Latency                   
+  *          The value of this parameter depend on device used within the same series
+  * @note   The SystemCoreClock CMSIS variable is used to store System Clock Frequency 
+  *         and updated by @ref HAL_RCC_GetHCLKFreq() function called within this function
+  *
+  * @note   The HSI is used (enabled by hardware) as system clock source after
+  *         start-up from Reset, wake-up from STOP and STANDBY mode, or in case
+  *         of failure of the HSE used directly or indirectly as system clock
+  *         (if the Clock Security System CSS is enabled).
+  *           
+  * @note   A switch from one clock source to another occurs only if the target
+  *         clock source is ready (clock stable after start-up delay or PLL locked). 
+  *         If a clock source which is not yet ready is selected, the switch will
+  *         occur when the clock source will be ready. 
+  *         You can use @ref HAL_RCC_GetClockConfig() function to know which clock is
+  *         currently used as system clock source.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, uint32_t FLatency)
+{
+  uint32_t tickstart = 0;
+  
+  /* Check the parameters */
+  assert_param(RCC_ClkInitStruct != NULL);
+  assert_param(IS_RCC_CLOCKTYPE(RCC_ClkInitStruct->ClockType));
+  assert_param(IS_FLASH_LATENCY(FLatency));
+
+  /* To correctly read data from FLASH memory, the number of wait states (LATENCY) 
+  must be correctly programmed according to the frequency of the CPU clock 
+    (HCLK) of the device. */
+
+#if defined(FLASH_ACR_LATENCY)
+  /* Increasing the number of wait states because of higher CPU frequency */
+  if(FLatency > (FLASH->ACR & FLASH_ACR_LATENCY))
+  {    
+    /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
+    __HAL_FLASH_SET_LATENCY(FLatency);
+    
+    /* Check that the new number of wait states is taken into account to access the Flash
+    memory by reading the FLASH_ACR register */
+    if((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency)
+    {
+      return HAL_ERROR;
+    }
+  }
+
+#endif /* FLASH_ACR_LATENCY */
+  /*-------------------------- HCLK Configuration --------------------------*/
+  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
+  {
+    assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));
+    MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
+  }
+
+  /*------------------------- SYSCLK Configuration ---------------------------*/ 
+  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
+  {    
+    assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
+    
+    /* HSE is selected as System Clock Source */
+    if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
+    {
+      /* Check the HSE ready flag */  
+      if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
+      {
+        return HAL_ERROR;
+      }
+    }
+    /* PLL is selected as System Clock Source */
+    else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
+    {
+      /* Check the PLL ready flag */  
+      if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
+      {
+        return HAL_ERROR;
+      }
+    }
+    /* HSI is selected as System Clock Source */
+    else
+    {
+      /* Check the HSI ready flag */  
+      if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
+      {
+        return HAL_ERROR;
+      }
+    }
+    __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
+
+    /* Get Start Tick */
+    tickstart = HAL_GetTick();
+    
+    if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
+    {
+      while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE)
+      {
+        if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+    }
+    else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
+    {
+      while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
+      {
+        if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+    }
+    else
+    {
+      while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI)
+      {
+        if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+    }      
+  }    
+#if defined(FLASH_ACR_LATENCY)
+  /* Decreasing the number of wait states because of lower CPU frequency */
+  if(FLatency < (FLASH->ACR & FLASH_ACR_LATENCY))
+  {    
+    /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
+    __HAL_FLASH_SET_LATENCY(FLatency);
+    
+    /* Check that the new number of wait states is taken into account to access the Flash
+    memory by reading the FLASH_ACR register */
+    if((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency)
+    {
+      return HAL_ERROR;
+    }
+  }    
+#endif /* FLASH_ACR_LATENCY */
+
+  /*-------------------------- PCLK1 Configuration ---------------------------*/ 
+  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
+  {
+    assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
+    MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
+  }
+  
+  /*-------------------------- PCLK2 Configuration ---------------------------*/ 
+  if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
+  {
+    assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
+    MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
+  }
+ 
+  /* Update the SystemCoreClock global variable */
+  SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_BITNUMBER];
+
+  /* Configure the source of time base considering new system clocks settings*/
+  HAL_InitTick (TICK_INT_PRIORITY);
+  
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup RCC_Exported_Functions_Group2 Peripheral Control functions
+  *  @brief   RCC clocks control functions
+  *
+  @verbatim   
+  ===============================================================================
+                  ##### Peripheral Control functions #####
+  ===============================================================================  
+    [..]
+    This subsection provides a set of functions allowing to control the RCC Clocks 
+    frequencies.
+
+  @endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Selects the clock source to output on MCO pin.
+  * @note   MCO pin should be configured in alternate function mode.
+  * @param  RCC_MCOx specifies the output direction for the clock source.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_MCO1 Clock source to output on MCO1 pin(PA8).
+  * @param  RCC_MCOSource specifies the clock source to output.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_MCO1SOURCE_NOCLOCK     No clock selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_SYSCLK      System clock selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_HSI         HSI selected as MCO clock
+  *            @arg @ref RCC_MCO1SOURCE_HSE         HSE selected as MCO clock
+  @if STM32F105xC
+  *            @arg @ref RCC_MCO1SOURCE_PLLCLK       PLL clock divided by 2 selected as MCO source
+  *            @arg @ref RCC_MCO1SOURCE_PLL2CLK      PLL2 clock selected as MCO source
+  *            @arg @ref RCC_MCO1SOURCE_PLL3CLK_DIV2 PLL3 clock divided by 2 selected as MCO source
+  *            @arg @ref RCC_MCO1SOURCE_EXT_HSE      XT1 external 3-25 MHz oscillator clock selected as MCO source
+  *            @arg @ref RCC_MCO1SOURCE_PLL3CLK      PLL3 clock selected as MCO source
+  @endif
+  @if STM32F107xC
+  *            @arg @ref RCC_MCO1SOURCE_PLLCLK       PLL clock divided by 2 selected as MCO source
+  *            @arg @ref RCC_MCO1SOURCE_PLL2CLK      PLL2 clock selected as MCO source
+  *            @arg @ref RCC_MCO1SOURCE_PLL3CLK_DIV2 PLL3 clock divided by 2 selected as MCO source
+  *            @arg @ref RCC_MCO1SOURCE_EXT_HSE XT1  external 3-25 MHz oscillator clock selected as MCO source
+  *            @arg @ref RCC_MCO1SOURCE_PLL3CLK      PLL3 clock selected as MCO source
+  @endif
+  * @param  RCC_MCODiv specifies the MCO DIV.
+  *          This parameter can be one of the following values:
+  *            @arg @ref RCC_MCODIV_1 no division applied to MCO clock
+  * @retval None
+  */
+void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv)
+{
+  GPIO_InitTypeDef gpio = {0};
+
+  /* Check the parameters */
+  assert_param(IS_RCC_MCO(RCC_MCOx));
+  assert_param(IS_RCC_MCODIV(RCC_MCODiv));
+  assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));
+  
+  /* Configure the MCO1 pin in alternate function mode */
+  gpio.Mode      = GPIO_MODE_AF_PP;
+  gpio.Speed     = GPIO_SPEED_FREQ_HIGH;
+  gpio.Pull      = GPIO_NOPULL;
+  gpio.Pin       = MCO1_PIN;
+
+  /* MCO1 Clock Enable */
+  MCO1_CLK_ENABLE();
+  
+  HAL_GPIO_Init(MCO1_GPIO_PORT, &gpio);
+  
+  /* Configure the MCO clock source */
+  __HAL_RCC_MCO1_CONFIG(RCC_MCOSource, RCC_MCODiv);
+}
+
+/**
+  * @brief  Enables the Clock Security System.
+  * @note   If a failure is detected on the HSE oscillator clock, this oscillator
+  *         is automatically disabled and an interrupt is generated to inform the
+  *         software about the failure (Clock Security System Interrupt, CSSI),
+  *         allowing the MCU to perform rescue operations. The CSSI is linked to 
+  *         the Cortex-M3 NMI (Non-Maskable Interrupt) exception vector.  
+  * @retval None
+  */
+void HAL_RCC_EnableCSS(void)
+{
+  *(__IO uint32_t *) RCC_CR_CSSON_BB = (uint32_t)ENABLE;
+}
+
+/**
+  * @brief  Disables the Clock Security System.
+  * @retval None
+  */
+void HAL_RCC_DisableCSS(void)
+{
+  *(__IO uint32_t *) RCC_CR_CSSON_BB = (uint32_t)DISABLE;
+}
+
+/**
+  * @brief  Returns the SYSCLK frequency     
+  * @note   The system frequency computed by this function is not the real 
+  *         frequency in the chip. It is calculated based on the predefined 
+  *         constant and the selected clock source:
+  * @note     If SYSCLK source is HSI, function returns values based on HSI_VALUE(*)
+  * @note     If SYSCLK source is HSE, function returns a value based on HSE_VALUE
+  *           divided by PREDIV factor(**)
+  * @note     If SYSCLK source is PLL, function returns a value based on HSE_VALUE
+  *           divided by PREDIV factor(**) or HSI_VALUE(*) multiplied by the PLL factor.
+  * @note     (*) HSI_VALUE is a constant defined in stm32f1xx_hal_conf.h file (default value
+  *               8 MHz) but the real value may vary depending on the variations
+  *               in voltage and temperature.
+  * @note     (**) HSE_VALUE is a constant defined in stm32f1xx_hal_conf.h file (default value
+  *                8 MHz), user has to ensure that HSE_VALUE is same as the real
+  *                frequency of the crystal used. Otherwise, this function may
+  *                have wrong result.
+  *                  
+  * @note   The result of this function could be not correct when using fractional
+  *         value for HSE crystal.
+  *           
+  * @note   This function can be used by the user application to compute the 
+  *         baud-rate for the communication peripherals or configure other parameters.
+  *           
+  * @note   Each time SYSCLK changes, this function must be called to update the
+  *         right SYSCLK value. Otherwise, any configuration based on this function will be incorrect.
+  *         
+  * @retval SYSCLK frequency
+  */
+uint32_t HAL_RCC_GetSysClockFreq(void)
+{
+#if   defined(RCC_CFGR2_PREDIV1SRC)
+  const uint8_t aPLLMULFactorTable[12] = {0, 0, 4,  5,  6,  7,  8,  9, 0, 0, 0, 13};
+  const uint8_t aPredivFactorTable[16] = { 1, 2,  3,  4,  5,  6,  7,  8, 9,10, 11, 12, 13, 14, 15, 16};
+#else
+  const uint8_t aPLLMULFactorTable[16] = { 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 16};
+#if defined(RCC_CFGR2_PREDIV1)
+  const uint8_t aPredivFactorTable[16] = { 1, 2,  3,  4,  5,  6,  7,  8, 9,10, 11, 12, 13, 14, 15, 16};
+#else
+  const uint8_t aPredivFactorTable[2] = { 1, 2};
+#endif /*RCC_CFGR2_PREDIV1*/
+
+#endif
+  uint32_t tmpreg = 0, prediv = 0, pllclk = 0, pllmul = 0;
+  uint32_t sysclockfreq = 0;
+#if defined(RCC_CFGR2_PREDIV1SRC)
+  uint32_t prediv2 = 0, pll2mul = 0;
+#endif /*RCC_CFGR2_PREDIV1SRC*/
+  
+  tmpreg = RCC->CFGR;
+  
+  /* Get SYSCLK source -------------------------------------------------------*/
+  switch (tmpreg & RCC_CFGR_SWS)
+  {
+    case RCC_SYSCLKSOURCE_STATUS_HSE:  /* HSE used as system clock */
+    {
+      sysclockfreq = HSE_VALUE;
+      break;
+    }
+    case RCC_SYSCLKSOURCE_STATUS_PLLCLK:  /* PLL used as system clock */
+    {
+      pllmul = aPLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMULL) >> POSITION_VAL(RCC_CFGR_PLLMULL)];
+      if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2)
+      {
+#if defined(RCC_CFGR2_PREDIV1)
+        prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> POSITION_VAL(RCC_CFGR2_PREDIV1)];
+#else
+        prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR & RCC_CFGR_PLLXTPRE) >> POSITION_VAL(RCC_CFGR_PLLXTPRE)];
+#endif /*RCC_CFGR2_PREDIV1*/
+#if defined(RCC_CFGR2_PREDIV1SRC)
+
+        if(HAL_IS_BIT_SET(RCC->CFGR2, RCC_CFGR2_PREDIV1SRC))
+        {
+          /* PLL2 selected as Prediv1 source */
+          /* PLLCLK = PLL2CLK / PREDIV1 * PLLMUL with PLL2CLK = HSE/PREDIV2 * PLL2MUL */
+          prediv2 = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> POSITION_VAL(RCC_CFGR2_PREDIV2)) + 1;
+          pll2mul = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> POSITION_VAL(RCC_CFGR2_PLL2MUL)) + 2;
+          pllclk = (uint32_t)((((HSE_VALUE / prediv2) * pll2mul) / prediv) * pllmul);
+        }
+        else
+        {
+          /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */
+          pllclk = (uint32_t)((HSE_VALUE / prediv) * pllmul);
+        }
+        
+        /* If PLLMUL was set to 13 means that it was to cover the case PLLMUL 6.5 (avoid using float) */
+        /* In this case need to divide pllclk by 2 */
+        if (pllmul == aPLLMULFactorTable[(uint32_t)(RCC_CFGR_PLLMULL6_5) >> POSITION_VAL(RCC_CFGR_PLLMULL)])
+        {
+            pllclk = pllclk / 2;
+        }
+#else
+        /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */
+        pllclk = (uint32_t)((HSE_VALUE / prediv) * pllmul);
+#endif /*RCC_CFGR2_PREDIV1SRC*/
+      }
+      else
+      {
+        /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */
+        pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul);
+      }
+      sysclockfreq = pllclk;
+      break;
+    }
+    case RCC_SYSCLKSOURCE_STATUS_HSI:  /* HSI used as system clock source */
+    default: /* HSI used as system clock */
+    {
+      sysclockfreq = HSI_VALUE;
+      break;
+    }
+  }
+  return sysclockfreq;
+}
+
+/**
+  * @brief  Returns the HCLK frequency     
+  * @note   Each time HCLK changes, this function must be called to update the
+  *         right HCLK value. Otherwise, any configuration based on this function will be incorrect.
+  * 
+  * @note   The SystemCoreClock CMSIS variable is used to store System Clock Frequency 
+  *         and updated within this function
+  * @retval HCLK frequency
+  */
+uint32_t HAL_RCC_GetHCLKFreq(void)
+{
+  return SystemCoreClock;
+}
+
+/**
+  * @brief  Returns the PCLK1 frequency     
+  * @note   Each time PCLK1 changes, this function must be called to update the
+  *         right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.
+  * @retval PCLK1 frequency
+  */
+uint32_t HAL_RCC_GetPCLK1Freq(void)
+{
+  /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
+  return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_BITNUMBER]);
+}    
+
+/**
+  * @brief  Returns the PCLK2 frequency     
+  * @note   Each time PCLK2 changes, this function must be called to update the
+  *         right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.
+  * @retval PCLK2 frequency
+  */
+uint32_t HAL_RCC_GetPCLK2Freq(void)
+{
+  /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
+  return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_BITNUMBER]);
+} 
+
+/**
+  * @brief  Configures the RCC_OscInitStruct according to the internal 
+  * RCC configuration registers.
+  * @param  RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that 
+  * will be configured.
+  * @retval None
+  */
+void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct)
+{
+  /* Check the parameters */
+  assert_param(RCC_OscInitStruct != NULL);
+
+  /* Set all possible values for the Oscillator type parameter ---------------*/
+  RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI  \
+                  | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
+
+#if defined(RCC_CFGR2_PREDIV1SRC)
+  /* Get the Prediv1 source --------------------------------------------------*/
+  RCC_OscInitStruct->Prediv1Source = READ_BIT(RCC->CFGR2,RCC_CFGR2_PREDIV1SRC);
+#endif /* RCC_CFGR2_PREDIV1SRC */
+
+  /* Get the HSE configuration -----------------------------------------------*/
+  if((RCC->CR &RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
+  {
+    RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;
+  }
+  else if((RCC->CR &RCC_CR_HSEON) == RCC_CR_HSEON)
+  {
+    RCC_OscInitStruct->HSEState = RCC_HSE_ON;
+  }
+  else
+  {
+    RCC_OscInitStruct->HSEState = RCC_HSE_OFF;
+  }
+  RCC_OscInitStruct->HSEPredivValue = __HAL_RCC_HSE_GET_PREDIV();
+
+  /* Get the HSI configuration -----------------------------------------------*/
+  if((RCC->CR &RCC_CR_HSION) == RCC_CR_HSION)
+  {
+    RCC_OscInitStruct->HSIState = RCC_HSI_ON;
+  }
+  else
+  {
+    RCC_OscInitStruct->HSIState = RCC_HSI_OFF;
+  }
+  
+  RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR & RCC_CR_HSITRIM) >> POSITION_VAL(RCC_CR_HSITRIM));
+  
+  /* Get the LSE configuration -----------------------------------------------*/
+  if((RCC->BDCR &RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
+  {
+    RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;
+  }
+  else if((RCC->BDCR &RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
+  {
+    RCC_OscInitStruct->LSEState = RCC_LSE_ON;
+  }
+  else
+  {
+    RCC_OscInitStruct->LSEState = RCC_LSE_OFF;
+  }
+  
+  /* Get the LSI configuration -----------------------------------------------*/
+  if((RCC->CSR &RCC_CSR_LSION) == RCC_CSR_LSION)
+  {
+    RCC_OscInitStruct->LSIState = RCC_LSI_ON;
+  }
+  else
+  {
+    RCC_OscInitStruct->LSIState = RCC_LSI_OFF;
+  }
+  
+
+  /* Get the PLL configuration -----------------------------------------------*/
+  if((RCC->CR &RCC_CR_PLLON) == RCC_CR_PLLON)
+  {
+    RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;
+  }
+  else
+  {
+    RCC_OscInitStruct->PLL.PLLState = RCC_PLL_OFF;
+  }
+  RCC_OscInitStruct->PLL.PLLSource = (uint32_t)(RCC->CFGR & RCC_CFGR_PLLSRC);
+  RCC_OscInitStruct->PLL.PLLMUL = (uint32_t)(RCC->CFGR & RCC_CFGR_PLLMULL);
+#if defined(RCC_CR_PLL2ON)
+  /* Get the PLL2 configuration -----------------------------------------------*/
+  if((RCC->CR &RCC_CR_PLL2ON) == RCC_CR_PLL2ON)
+  {
+    RCC_OscInitStruct->PLL2.PLL2State = RCC_PLL2_ON;
+  }
+  else
+  {
+    RCC_OscInitStruct->PLL2.PLL2State = RCC_PLL2_OFF;
+  }
+  RCC_OscInitStruct->PLL2.HSEPrediv2Value = __HAL_RCC_HSE_GET_PREDIV2();
+  RCC_OscInitStruct->PLL2.PLL2MUL = (uint32_t)(RCC->CFGR2 & RCC_CFGR2_PLL2MUL);
+#endif /* RCC_CR_PLL2ON */
+}
+
+/**
+  * @brief  Get the RCC_ClkInitStruct according to the internal 
+  * RCC configuration registers.
+  * @param  RCC_ClkInitStruct pointer to an RCC_ClkInitTypeDef structure that 
+  * contains the current clock configuration.
+  * @param  pFLatency Pointer on the Flash Latency.
+  * @retval None
+  */
+void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, uint32_t *pFLatency)
+{
+  /* Check the parameters */
+  assert_param(RCC_ClkInitStruct != NULL);
+  assert_param(pFLatency != NULL);
+
+  /* Set all possible values for the Clock type parameter --------------------*/
+  RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
+  
+  /* Get the SYSCLK configuration --------------------------------------------*/ 
+  RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW);
+  
+  /* Get the HCLK configuration ----------------------------------------------*/ 
+  RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); 
+  
+  /* Get the APB1 configuration ----------------------------------------------*/ 
+  RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1);   
+  
+  /* Get the APB2 configuration ----------------------------------------------*/ 
+  RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3);
+  
+#if   defined(FLASH_ACR_LATENCY)
+  /* Get the Flash Wait State (Latency) configuration ------------------------*/   
+  *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY); 
+#else
+  /* For VALUE lines devices, only LATENCY_0 can be set*/
+  *pFLatency = (uint32_t)FLASH_LATENCY_0; 
+#endif
+}
+
+/**
+  * @brief This function handles the RCC CSS interrupt request.
+  * @note This API should be called under the NMI_Handler().
+  * @retval None
+  */
+void HAL_RCC_NMI_IRQHandler(void)
+{
+  /* Check RCC CSSF flag  */
+  if(__HAL_RCC_GET_IT(RCC_IT_CSS))
+  {
+    /* RCC Clock Security System interrupt user callback */
+    HAL_RCC_CSSCallback();
+    
+    /* Clear RCC CSS pending bit */
+    __HAL_RCC_CLEAR_IT(RCC_IT_CSS);
+  }
+}
+
+/**
+  * @brief  RCC Clock Security System interrupt callback
+  * @retval none
+  */
+__weak void HAL_RCC_CSSCallback(void)
+{
+  /* NOTE : This function Should not be modified, when the callback is needed,
+    the HAL_RCC_CSSCallback could be implemented in the user file
+    */ 
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#endif /* HAL_RCC_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,870 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_rcc_ex.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   Extended RCC HAL module driver.
+  *          This file provides firmware functions to manage the following 
+  *          functionalities RCC extension peripheral:
+  *           + Extended Peripheral Control functions
+  *  
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************  
+  */ 
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+
+/** @defgroup RCCEx RCCEx
+  * @brief RCC Extension HAL module driver.
+  * @{
+  */
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/** @defgroup RCCEx_Private_Constants RCCEx Private Constants
+ * @{
+ */
+/**
+  * @}
+  */
+
+/* Private macro -------------------------------------------------------------*/
+/** @defgroup RCCEx_Private_Macros RCCEx Private Macros
+ * @{
+ */
+/**
+  * @}
+  */
+
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/* Private functions ---------------------------------------------------------*/
+
+/** @defgroup RCCEx_Exported_Functions RCCEx Exported Functions
+  * @{
+  */
+
+/** @defgroup RCCEx_Exported_Functions_Group1 Peripheral Control functions 
+ *  @brief  Extended Peripheral Control functions  
+ *
+@verbatim   
+ ===============================================================================
+                ##### Extended Peripheral Control functions  #####
+ ===============================================================================  
+    [..]
+    This subsection provides a set of functions allowing to control the RCC Clocks 
+    frequencies.
+    [..] 
+    (@) Important note: Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to
+        select the RTC clock source; in this case the Backup domain will be reset in  
+        order to modify the RTC Clock source, as consequence RTC registers (including 
+        the backup registers) are set to their reset values.
+      
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Initializes the RCC extended peripherals clocks according to the specified parameters in the
+  *         RCC_PeriphCLKInitTypeDef.
+  * @param  PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that
+  *         contains the configuration information for the Extended Peripherals clocks(RTC clock).
+  *
+  * @note   Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select 
+  *         the RTC clock source; in this case the Backup domain will be reset in  
+  *         order to modify the RTC Clock source, as consequence RTC registers (including 
+  *         the backup registers) are set to their reset values.
+  *
+  * @note   In case of STM32F105xC or STM32F107xC devices, PLLI2S will be enabled if requested on 
+  *         one of 2 I2S interfaces. When PLLI2S is enabled, you need to call HAL_RCCEx_DisablePLLI2S to
+  *         manually disable it.
+  *
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit)
+{
+  uint32_t tickstart = 0, temp_reg = 0;
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  uint32_t  pllactive = 0;
+#endif /* STM32F105xC || STM32F107xC */
+
+  /* Check the parameters */
+  assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
+  
+  /*------------------------------- RTC/LCD Configuration ------------------------*/ 
+  if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))
+  {
+    /* check for RTC Parameters used to output RTCCLK */
+    assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));
+
+    /* Enable Power Clock*/
+    __HAL_RCC_PWR_CLK_ENABLE();
+    
+    /* Enable write access to Backup domain */
+    SET_BIT(PWR->CR, PWR_CR_DBP);
+    
+    /* Wait for Backup domain Write protection disable */
+    tickstart = HAL_GetTick();
+    
+    while((PWR->CR & PWR_CR_DBP) == RESET)
+    {
+      if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
+      {
+        return HAL_TIMEOUT;
+      }      
+    }
+      
+    /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ 
+    temp_reg = (RCC->BDCR & RCC_BDCR_RTCSEL);
+    if((temp_reg != 0x00000000U) && (temp_reg != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)))
+    {
+      /* Store the content of BDCR register before the reset of Backup Domain */
+      temp_reg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
+      /* RTC Clock selection can be changed only if the Backup Domain is reset */
+      __HAL_RCC_BACKUPRESET_FORCE();
+      __HAL_RCC_BACKUPRESET_RELEASE();
+      /* Restore the Content of BDCR register */
+      RCC->BDCR = temp_reg;
+
+      /* Wait for LSERDY if LSE was enabled */
+      if (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSEON))
+      {
+        /* Get timeout */
+        tickstart = HAL_GetTick();
+      
+        /* Wait till LSE is ready */  
+        while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
+        {
+          if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
+          {
+            return HAL_TIMEOUT;
+          }      
+        }  
+      }
+    }
+    __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); 
+  }
+
+  /*------------------------------ ADC clock Configuration ------------------*/ 
+  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC)
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_ADCPLLCLK_DIV(PeriphClkInit->AdcClockSelection));
+    
+    /* Configure the ADC clock source */
+    __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection);
+  }
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  /*------------------------------ I2S2 Configuration ------------------------*/ 
+  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S2) == RCC_PERIPHCLK_I2S2)
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_I2S2CLKSOURCE(PeriphClkInit->I2s2ClockSelection));
+
+    /* Configure the I2S2 clock source */
+    __HAL_RCC_I2S2_CONFIG(PeriphClkInit->I2s2ClockSelection);
+  }
+
+  /*------------------------------ I2S3 Configuration ------------------------*/ 
+  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S3) == RCC_PERIPHCLK_I2S3)
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_I2S3CLKSOURCE(PeriphClkInit->I2s3ClockSelection));
+    
+    /* Configure the I2S3 clock source */
+    __HAL_RCC_I2S3_CONFIG(PeriphClkInit->I2s3ClockSelection);
+  }
+
+  /*------------------------------ PLL I2S Configuration ----------------------*/ 
+  /* Check that PLLI2S need to be enabled */
+  if (HAL_IS_BIT_SET(RCC->CFGR2, RCC_CFGR2_I2S2SRC) || HAL_IS_BIT_SET(RCC->CFGR2, RCC_CFGR2_I2S3SRC))
+  {
+    /* Update flag to indicate that PLL I2S should be active */
+    pllactive = 1;
+  }
+
+  /* Check if PLL I2S need to be enabled */
+  if (pllactive == 1)
+  {
+    /* Enable PLL I2S only if not active */
+    if (HAL_IS_BIT_CLR(RCC->CR, RCC_CR_PLL3ON))
+    {
+      /* Check the parameters */
+      assert_param(IS_RCC_PLLI2S_MUL(PeriphClkInit->PLLI2S.PLLI2SMUL));
+      assert_param(IS_RCC_HSE_PREDIV2(PeriphClkInit->PLLI2S.HSEPrediv2Value));
+
+      /* Prediv2 can be written only when the PLL2 is disabled. */
+      /* Return an error only if new value is different from the programmed value */
+      if (HAL_IS_BIT_SET(RCC->CR,RCC_CR_PLL2ON) && \
+        (__HAL_RCC_HSE_GET_PREDIV2() != PeriphClkInit->PLLI2S.HSEPrediv2Value))
+      {
+        return HAL_ERROR;
+      }
+
+      /* Configure the HSE prediv2 factor --------------------------------*/
+      __HAL_RCC_HSE_PREDIV2_CONFIG(PeriphClkInit->PLLI2S.HSEPrediv2Value);
+
+      /* Configure the main PLLI2S multiplication factors. */
+      __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SMUL);
+      
+      /* Enable the main PLLI2S. */
+      __HAL_RCC_PLLI2S_ENABLE();
+      
+      /* Get Start Tick*/
+      tickstart = HAL_GetTick();
+      
+      /* Wait till PLLI2S is ready */
+      while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY)  == RESET)
+      {
+        if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE)
+        {
+          return HAL_TIMEOUT;
+        }
+      }
+    }
+    else
+    {
+      /* Return an error only if user wants to change the PLLI2SMUL whereas PLLI2S is active */
+      if (READ_BIT(RCC->CFGR2, RCC_CFGR2_PLL3MUL) != PeriphClkInit->PLLI2S.PLLI2SMUL)
+      {
+          return HAL_ERROR;
+      }
+    }
+  }
+#endif /* STM32F105xC || STM32F107xC */
+
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+  /*------------------------------ USB clock Configuration ------------------*/ 
+  if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB)
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_USBPLLCLK_DIV(PeriphClkInit->UsbClockSelection));
+    
+    /* Configure the USB clock source */
+    __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection);
+  }
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Get the PeriphClkInit according to the internal
+  * RCC configuration registers.
+  * @param  PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that 
+  *         returns the configuration information for the Extended Peripherals clocks(RTC, I2S, ADC clocks).
+  * @retval None
+  */
+void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit)
+{
+  uint32_t srcclk = 0;
+  
+  /* Set all possible values for the extended clock type parameter------------*/
+  PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_RTC;
+
+  /* Get the RTC configuration -----------------------------------------------*/
+  srcclk = __HAL_RCC_GET_RTC_SOURCE();
+  /* Source clock is LSE or LSI*/
+  PeriphClkInit->RTCClockSelection = srcclk;
+
+  /* Get the ADC clock configuration -----------------------------------------*/
+  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_ADC;
+  PeriphClkInit->AdcClockSelection = __HAL_RCC_GET_ADC_SOURCE();
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  /* Get the I2S2 clock configuration -----------------------------------------*/
+  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2S2;
+  PeriphClkInit->I2s2ClockSelection = __HAL_RCC_GET_I2S2_SOURCE();
+
+  /* Get the I2S3 clock configuration -----------------------------------------*/
+  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2S3;
+  PeriphClkInit->I2s3ClockSelection = __HAL_RCC_GET_I2S3_SOURCE();
+
+#endif /* STM32F105xC || STM32F107xC */
+
+#if defined(STM32F103xE) || defined(STM32F103xG)
+  /* Get the I2S2 clock configuration -----------------------------------------*/
+  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2S2;
+  PeriphClkInit->I2s2ClockSelection = RCC_I2S2CLKSOURCE_SYSCLK;
+
+  /* Get the I2S3 clock configuration -----------------------------------------*/
+  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2S3;
+  PeriphClkInit->I2s3ClockSelection = RCC_I2S3CLKSOURCE_SYSCLK;
+
+#endif /* STM32F103xE || STM32F103xG */
+
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+  /* Get the USB clock configuration -----------------------------------------*/
+  PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_USB;
+  PeriphClkInit->UsbClockSelection = __HAL_RCC_GET_USB_SOURCE();
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+}
+
+/**
+  * @brief  Returns the peripheral clock frequency
+  * @note   Returns 0 if peripheral clock is unknown
+  * @param  PeriphClk Peripheral clock identifier
+  *         This parameter can be one of the following values:
+  *            @arg @ref RCC_PERIPHCLK_RTC  RTC peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_ADC  ADC peripheral clock
+  @if STM32F103xE
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  @endif
+  @if STM32F103xG
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  @endif
+  @if STM32F105xC
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_USB  USB peripheral clock
+  @endif
+  @if STM32F107xC
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S3 I2S3 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock
+  *            @arg @ref RCC_PERIPHCLK_USB  USB peripheral clock
+  @endif
+  @if STM32F102xx
+  *            @arg @ref RCC_PERIPHCLK_USB  USB peripheral clock
+  @endif
+  @if STM32F103xx
+  *            @arg @ref RCC_PERIPHCLK_USB  USB peripheral clock
+  @endif
+  * @retval Frequency in Hz (0: means that no available frequency for the peripheral)
+  */
+uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk)
+{
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  const uint8_t aPLLMULFactorTable[12] = {0, 0, 4,  5,  6,  7,  8,  9, 0, 0, 0, 13};
+  const uint8_t aPredivFactorTable[16] = { 1, 2,  3,  4,  5,  6,  7,  8, 9,10, 11, 12, 13, 14, 15, 16};
+#else
+  const uint8_t aPLLMULFactorTable[16] = { 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 16};
+  const uint8_t aPredivFactorTable[2] = { 1, 2};
+#endif
+#endif
+  uint32_t temp_reg = 0, frequency = 0;
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+  uint32_t prediv1 = 0, pllclk = 0, pllmul = 0;
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  uint32_t pll2mul = 0, pll3mul = 0, prediv2 = 0;
+#endif /* STM32F105xC || STM32F107xC */
+
+  /* Check the parameters */
+  assert_param(IS_RCC_PERIPHCLOCK(PeriphClk));
+  
+  switch (PeriphClk)
+  {
+#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
+ || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
+ || defined(STM32F105xC) || defined(STM32F107xC)
+  case RCC_PERIPHCLK_USB:  
+    {
+      /* Get RCC configuration ------------------------------------------------------*/
+      temp_reg = RCC->CFGR;
+  
+      /* Check if PLL is enabled */
+      if (HAL_IS_BIT_SET(RCC->CR,RCC_CR_PLLON))
+      {
+        pllmul = aPLLMULFactorTable[(uint32_t)(temp_reg & RCC_CFGR_PLLMULL) >> POSITION_VAL(RCC_CFGR_PLLMULL)];
+        if ((temp_reg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2)
+        {
+#if defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F100xB)\
+ || defined(STM32F100xE)
+          prediv1 = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> POSITION_VAL(RCC_CFGR2_PREDIV1)];
+#else
+          prediv1 = aPredivFactorTable[(uint32_t)(RCC->CFGR & RCC_CFGR_PLLXTPRE) >> POSITION_VAL(RCC_CFGR_PLLXTPRE)];
+#endif /* STM32F105xC || STM32F107xC || STM32F100xB || STM32F100xE */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+          if(HAL_IS_BIT_SET(RCC->CFGR2, RCC_CFGR2_PREDIV1SRC))
+          {
+            /* PLL2 selected as Prediv1 source */
+            /* PLLCLK = PLL2CLK / PREDIV1 * PLLMUL with PLL2CLK = HSE/PREDIV2 * PLL2MUL */
+            prediv2 = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> POSITION_VAL(RCC_CFGR2_PREDIV2)) + 1;
+            pll2mul = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> POSITION_VAL(RCC_CFGR2_PLL2MUL)) + 2;
+            pllclk = (uint32_t)((((HSE_VALUE / prediv2) * pll2mul) / prediv1) * pllmul);
+          }
+          else
+          {
+            /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */
+            pllclk = (uint32_t)((HSE_VALUE / prediv1) * pllmul);
+          }
+          
+          /* If PLLMUL was set to 13 means that it was to cover the case PLLMUL 6.5 (avoid using float) */
+          /* In this case need to divide pllclk by 2 */
+          if (pllmul == aPLLMULFactorTable[(uint32_t)(RCC_CFGR_PLLMULL6_5) >> POSITION_VAL(RCC_CFGR_PLLMULL)])
+          {
+              pllclk = pllclk / 2;
+          }
+#else
+          if ((temp_reg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2)
+          {
+            /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */
+            pllclk = (uint32_t)((HSE_VALUE / prediv1) * pllmul);
+          }
+#endif /* STM32F105xC || STM32F107xC */
+        }
+        else
+        {
+          /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */
+          pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul);
+        }
+
+        /* Calcul of the USB frequency*/
+#if defined(STM32F105xC) || defined(STM32F107xC)
+        /* USBCLK = PLLVCO = (2 x PLLCLK) / USB prescaler */
+        if (__HAL_RCC_GET_USB_SOURCE() == RCC_USBCLKSOURCE_PLL_DIV2)
+        {
+          /* Prescaler of 2 selected for USB */ 
+          frequency = pllclk;
+        }
+        else
+        {
+          /* Prescaler of 3 selected for USB */ 
+          frequency = (2 * pllclk) / 3;
+        }
+#else
+        /* USBCLK = PLLCLK / USB prescaler */
+        if (__HAL_RCC_GET_USB_SOURCE() == RCC_USBCLKSOURCE_PLL)
+        {
+          /* No prescaler selected for USB */
+          frequency = pllclk;
+        }
+        else
+        {
+          /* Prescaler of 1.5 selected for USB */ 
+          frequency = (pllclk * 2) / 3;
+        }
+#endif
+      }
+      break;
+    }
+#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+#if defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC)\
+ || defined(STM32F107xC)
+  case RCC_PERIPHCLK_I2S2:  
+    {
+#if defined(STM32F103xE) || defined(STM32F103xG)
+      /* SYSCLK used as source clock for I2S2 */
+      frequency = HAL_RCC_GetSysClockFreq();
+#else
+      if (__HAL_RCC_GET_I2S2_SOURCE() == RCC_I2S2CLKSOURCE_SYSCLK)
+      {
+        /* SYSCLK used as source clock for I2S2 */
+        frequency = HAL_RCC_GetSysClockFreq();
+      }
+      else
+      {
+         /* Check if PLLI2S is enabled */
+        if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3ON))
+        {
+          /* PLLI2SVCO = 2 * PLLI2SCLK = 2 * (HSE/PREDIV2 * PLL3MUL) */
+          prediv2 = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> POSITION_VAL(RCC_CFGR2_PREDIV2)) + 1;
+          pll3mul = ((RCC->CFGR2 & RCC_CFGR2_PLL3MUL) >> POSITION_VAL(RCC_CFGR2_PLL3MUL)) + 2;
+          frequency = (uint32_t)(2 * ((HSE_VALUE / prediv2) * pll3mul));
+        }
+      }
+#endif /* STM32F103xE || STM32F103xG */
+      break;
+    }
+  case RCC_PERIPHCLK_I2S3:
+    {
+#if defined(STM32F103xE) || defined(STM32F103xG)
+      /* SYSCLK used as source clock for I2S3 */
+      frequency = HAL_RCC_GetSysClockFreq();
+#else
+      if (__HAL_RCC_GET_I2S3_SOURCE() == RCC_I2S3CLKSOURCE_SYSCLK)
+      {
+        /* SYSCLK used as source clock for I2S3 */
+        frequency = HAL_RCC_GetSysClockFreq();
+      }
+      else
+      {
+         /* Check if PLLI2S is enabled */
+        if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3ON))
+        {
+          /* PLLI2SVCO = 2 * PLLI2SCLK = 2 * (HSE/PREDIV2 * PLL3MUL) */
+          prediv2 = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> POSITION_VAL(RCC_CFGR2_PREDIV2)) + 1;
+          pll3mul = ((RCC->CFGR2 & RCC_CFGR2_PLL3MUL) >> POSITION_VAL(RCC_CFGR2_PLL3MUL)) + 2;
+          frequency = (uint32_t)(2 * ((HSE_VALUE / prediv2) * pll3mul));
+        }
+      }
+#endif /* STM32F103xE || STM32F103xG */
+      break;
+    }
+#endif /* STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
+  case RCC_PERIPHCLK_RTC:  
+    {
+      /* Get RCC BDCR configuration ------------------------------------------------------*/
+      temp_reg = RCC->BDCR;
+
+      /* Check if LSE is ready if RTC clock selection is LSE */
+      if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_LSE) && (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSERDY)))
+      {
+        frequency = LSE_VALUE;
+      }
+      /* Check if LSI is ready if RTC clock selection is LSI */
+      else if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_LSI) && (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY)))
+      {
+        frequency = LSI_VALUE;
+      }
+      else if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_HSE_DIV128) && (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)))
+      {
+        frequency = HSE_VALUE / 128;
+      }
+      /* Clock not enabled for RTC*/
+      else
+      {
+        frequency = 0;
+      }
+      break;
+    }
+  case RCC_PERIPHCLK_ADC:  
+    {
+      frequency = HAL_RCC_GetPCLK2Freq() / (((__HAL_RCC_GET_ADC_SOURCE() >> POSITION_VAL(RCC_CFGR_ADCPRE_DIV4)) + 1) * 2);
+      break;
+    }
+  default: 
+    {
+      break;
+    }
+  }
+  return(frequency);
+}
+
+/**
+  * @}
+  */
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+/** @defgroup RCCEx_Exported_Functions_Group2 PLLI2S Management function
+ *  @brief  PLLI2S Management functions
+ *
+@verbatim   
+ ===============================================================================
+                ##### Extended PLLI2S Management functions  #####
+ ===============================================================================  
+    [..]
+    This subsection provides a set of functions allowing to control the PLLI2S
+    activation or deactivation
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Enable PLLI2S
+  * @param  PLLI2SInit pointer to an RCC_PLLI2SInitTypeDef structure that
+  *         contains the configuration information for the PLLI2S
+  * @note   The PLLI2S configuration not modified if used by I2S2 or I2S3 Interface.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RCCEx_EnablePLLI2S(RCC_PLLI2SInitTypeDef  *PLLI2SInit)
+{
+  uint32_t tickstart = 0;
+
+  /* Check that PLL I2S has not been already enabled by I2S2 or I2S3*/
+  if (HAL_IS_BIT_CLR(RCC->CFGR2, RCC_CFGR2_I2S2SRC) && HAL_IS_BIT_CLR(RCC->CFGR2, RCC_CFGR2_I2S3SRC))
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_PLLI2S_MUL(PLLI2SInit->PLLI2SMUL));
+    assert_param(IS_RCC_HSE_PREDIV2(PLLI2SInit->HSEPrediv2Value));
+
+    /* Prediv2 can be written only when the PLL2 is disabled. */
+    /* Return an error only if new value is different from the programmed value */
+    if (HAL_IS_BIT_SET(RCC->CR,RCC_CR_PLL2ON) && \
+      (__HAL_RCC_HSE_GET_PREDIV2() != PLLI2SInit->HSEPrediv2Value))
+    {
+      return HAL_ERROR;
+    }
+
+    /* Disable the main PLLI2S. */
+    __HAL_RCC_PLLI2S_DISABLE();
+
+    /* Get Start Tick*/
+    tickstart = HAL_GetTick();
+    
+    /* Wait till PLLI2S is ready */  
+    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY)  != RESET)
+    {
+      if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE)
+      {
+        return HAL_TIMEOUT;
+      }
+    }
+
+    /* Configure the HSE prediv2 factor --------------------------------*/
+    __HAL_RCC_HSE_PREDIV2_CONFIG(PLLI2SInit->HSEPrediv2Value);
+    
+
+    /* Configure the main PLLI2S multiplication factors. */
+    __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->PLLI2SMUL);
+    
+    /* Enable the main PLLI2S. */
+    __HAL_RCC_PLLI2S_ENABLE();
+    
+    /* Get Start Tick*/
+    tickstart = HAL_GetTick();
+    
+    /* Wait till PLLI2S is ready */
+    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY)  == RESET)
+    {
+      if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE)
+      {
+        return HAL_TIMEOUT;
+      }
+    }
+  }
+  else
+  {
+    /* PLLI2S cannot be modified as already used by I2S2 or I2S3 */
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Disable PLLI2S
+  * @note   PLLI2S is not disabled if used by I2S2 or I2S3 Interface.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RCCEx_DisablePLLI2S(void)
+{
+  uint32_t tickstart = 0;
+
+  /* Disable PLL I2S as not requested by I2S2 or I2S3*/
+  if (HAL_IS_BIT_CLR(RCC->CFGR2, RCC_CFGR2_I2S2SRC) && HAL_IS_BIT_CLR(RCC->CFGR2, RCC_CFGR2_I2S3SRC))
+  {
+    /* Disable the main PLLI2S. */
+    __HAL_RCC_PLLI2S_DISABLE();
+
+    /* Get Start Tick*/
+    tickstart = HAL_GetTick();
+    
+    /* Wait till PLLI2S is ready */  
+    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY)  != RESET)
+    {
+      if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE)
+      {
+        return HAL_TIMEOUT;
+      }
+    }
+  }
+  else
+  {
+    /* PLLI2S is currently used by I2S2 or I2S3. Cannot be disabled.*/
+    return HAL_ERROR;
+  }
+  
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup RCCEx_Exported_Functions_Group3 PLL2 Management function
+ *  @brief  PLL2 Management functions
+ *
+@verbatim   
+ ===============================================================================
+                ##### Extended PLL2 Management functions  #####
+ ===============================================================================  
+    [..]
+    This subsection provides a set of functions allowing to control the PLL2
+    activation or deactivation
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Enable PLL2
+  * @param  PLL2Init pointer to an RCC_PLL2InitTypeDef structure that
+  *         contains the configuration information for the PLL2
+  * @note   The PLL2 configuration not modified if used indirectly as system clock.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RCCEx_EnablePLL2(RCC_PLL2InitTypeDef  *PLL2Init)
+{
+  uint32_t tickstart = 0;
+
+  /* This bit can not be cleared if the PLL2 clock is used indirectly as system 
+    clock (i.e. it is used as PLL clock entry that is used as system clock). */
+  if((__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE) && \
+        (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && \
+        ((READ_BIT(RCC->CFGR2,RCC_CFGR2_PREDIV1SRC)) == RCC_CFGR2_PREDIV1SRC_PLL2))
+  {
+    return HAL_ERROR;
+  }
+  else
+  {
+    /* Check the parameters */
+    assert_param(IS_RCC_PLL2_MUL(PLL2Init->PLL2MUL));
+    assert_param(IS_RCC_HSE_PREDIV2(PLL2Init->HSEPrediv2Value));
+
+    /* Prediv2 can be written only when the PLLI2S is disabled. */
+    /* Return an error only if new value is different from the programmed value */
+    if (HAL_IS_BIT_SET(RCC->CR,RCC_CR_PLL3ON) && \
+      (__HAL_RCC_HSE_GET_PREDIV2() != PLL2Init->HSEPrediv2Value))
+    {
+      return HAL_ERROR;
+    }
+
+    /* Disable the main PLL2. */
+    __HAL_RCC_PLL2_DISABLE();
+    
+    /* Get Start Tick*/
+    tickstart = HAL_GetTick();
+    
+    /* Wait till PLL2 is disabled */
+    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY) != RESET)
+    {
+      if((HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE)
+      {
+        return HAL_TIMEOUT;
+      }
+    }
+    
+    /* Configure the HSE prediv2 factor --------------------------------*/
+    __HAL_RCC_HSE_PREDIV2_CONFIG(PLL2Init->HSEPrediv2Value);
+
+    /* Configure the main PLL2 multiplication factors. */
+    __HAL_RCC_PLL2_CONFIG(PLL2Init->PLL2MUL);
+    
+    /* Enable the main PLL2. */
+    __HAL_RCC_PLL2_ENABLE();
+    
+    /* Get Start Tick*/
+    tickstart = HAL_GetTick();
+    
+    /* Wait till PLL2 is ready */
+    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY)  == RESET)
+    {
+      if((HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE)
+      {
+        return HAL_TIMEOUT;
+      }
+    }
+  }
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Disable PLL2
+  * @note   PLL2 is not disabled if used indirectly as system clock.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RCCEx_DisablePLL2(void)
+{
+  uint32_t tickstart = 0;
+
+  /* This bit can not be cleared if the PLL2 clock is used indirectly as system 
+    clock (i.e. it is used as PLL clock entry that is used as system clock). */
+  if((__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE) && \
+        (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && \
+        ((READ_BIT(RCC->CFGR2,RCC_CFGR2_PREDIV1SRC)) == RCC_CFGR2_PREDIV1SRC_PLL2))
+  {
+    return HAL_ERROR;
+  }
+  else
+  {
+    /* Disable the main PLL2. */
+    __HAL_RCC_PLL2_DISABLE();
+
+    /* Get Start Tick*/
+    tickstart = HAL_GetTick();
+    
+    /* Wait till PLL2 is disabled */  
+    while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY)  != RESET)
+    {
+      if((HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE)
+      {
+        return HAL_TIMEOUT;
+      }
+    }
+  }
+
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+#endif /* STM32F105xC || STM32F107xC */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,5379 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_tim.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   TIM HAL module driver
+  *          This file provides firmware functions to manage the following 
+  *          functionalities of the Timer (TIM) peripheral:
+  *           + Time Base Initialization
+  *           + Time Base Start
+  *           + Time Base Start Interruption
+  *           + Time Base Start DMA
+  *           + Time Output Compare/PWM Initialization
+  *           + Time Output Compare/PWM Channel Configuration
+  *           + Time Output Compare/PWM  Start
+  *           + Time Output Compare/PWM  Start Interruption
+  *           + Time Output Compare/PWM Start DMA
+  *           + Time Input Capture Initialization
+  *           + Time Input Capture Channel Configuration
+  *           + Time Input Capture Start
+  *           + Time Input Capture Start Interruption 
+  *           + Time Input Capture Start DMA
+  *           + Time One Pulse Initialization
+  *           + Time One Pulse Channel Configuration
+  *           + Time One Pulse Start 
+  *           + Time Encoder Interface Initialization
+  *           + Time Encoder Interface Start
+  *           + Time Encoder Interface Start Interruption
+  *           + Time Encoder Interface Start DMA
+  *           + Commutation Event configuration with Interruption and DMA
+  *           + Time OCRef clear configuration
+  *           + Time External Clock configuration
+  @verbatim
+  ==============================================================================
+                      ##### TIMER Generic features #####
+  ==============================================================================
+  [..] The Timer features include:
+       (#) 16-bit up, down, up/down auto-reload counter.
+       (#) 16-bit programmable prescaler allowing dividing (also on the fly) the 
+           counter clock frequency either by any factor between 1 and 65536.
+       (#) Up to 4 independent channels for:
+           (++) Input Capture
+           (++) Output Compare
+           (++) PWM generation (Edge and Center-aligned Mode)
+           (++) One-pulse mode output 
+
+            ##### How to use this driver #####
+  ==============================================================================
+    [..]
+     (#) Initialize the TIM low level resources by implementing the following functions 
+         depending from feature used :
+           (++) Time Base : HAL_TIM_Base_MspInit()
+           (++) Input Capture : HAL_TIM_IC_MspInit()
+           (++) Output Compare : HAL_TIM_OC_MspInit()
+           (++) PWM generation : HAL_TIM_PWM_MspInit()
+           (++) One-pulse mode output : HAL_TIM_OnePulse_MspInit()
+           (++) Encoder mode output : HAL_TIM_Encoder_MspInit()
+
+     (#) Initialize the TIM low level resources :
+        (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE();
+        (##) TIM pins configuration
+            (+++) Enable the clock for the TIM GPIOs using the following function:
+             __HAL_RCC_GPIOx_CLK_ENABLE();
+            (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();
+
+     (#) The external Clock can be configured, if needed (the default clock is the 
+         internal clock from the APBx), using the following function:
+         HAL_TIM_ConfigClockSource, the clock configuration should be done before 
+         any start function.
+
+     (#) Configure the TIM in the desired functioning mode using one of the 
+       Initialization function of this driver:
+       (++) HAL_TIM_Base_Init: to use the Timer to generate a simple time base
+       (++) HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate an 
+            Output Compare signal.
+       (++) HAL_TIM_PWM_Init and HAL_TIM_PWM_ConfigChannel: to use the Timer to generate a 
+            PWM signal.
+       (++) HAL_TIM_IC_Init and HAL_TIM_IC_ConfigChannel: to use the Timer to measure an 
+            external signal.
+         (++) HAL_TIM_OnePulse_Init and HAL_TIM_OnePulse_ConfigChannel: to use the Timer 
+              in One Pulse Mode.
+       (++) HAL_TIM_Encoder_Init: to use the Timer Encoder Interface.
+
+     (#) Activate the TIM peripheral using one of the start functions depending from the feature used:
+           (++) Time Base : HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT()
+           (++) Input Capture :  HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT()
+           (++) Output Compare : HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT()
+           (++) PWM generation : HAL_TIM_PWM_Start(), HAL_TIM_PWM_Start_DMA(), HAL_TIM_PWM_Start_IT()
+           (++) One-pulse mode output : HAL_TIM_OnePulse_Start(), HAL_TIM_OnePulse_Start_IT()
+           (++) Encoder mode output : HAL_TIM_Encoder_Start(), HAL_TIM_Encoder_Start_DMA(), HAL_TIM_Encoder_Start_IT().
+
+     (#) The DMA Burst is managed with the two following functions:
+         HAL_TIM_DMABurst_WriteStart()
+         HAL_TIM_DMABurst_ReadStart()
+
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup TIM TIM
+  * @brief TIM HAL module driver
+  * @{
+  */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/** @defgroup TIM_Private_Functions TIM Private Functions
+  * @{
+  */
+static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
+static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
+static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
+static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter);
+static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
+                       uint32_t TIM_ICFilter);
+static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter);
+static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
+                       uint32_t TIM_ICFilter);
+static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
+                       uint32_t TIM_ICFilter);
+static void TIM_ETR_SetConfig(TIM_TypeDef* TIMx, uint32_t TIM_ExtTRGPrescaler,
+                       uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter);
+static void TIM_ITRx_SetConfig(TIM_TypeDef* TIMx, uint16_t InputTriggerSource);
+static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma);
+static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);
+static void TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
+                                     TIM_SlaveConfigTypeDef * sSlaveConfig);
+
+/**
+  * @}
+  */
+
+/* Exported functions ---------------------------------------------------------*/
+
+/** @defgroup TIM_Exported_Functions TIM Exported Functions
+  * @{
+  */
+
+/** @defgroup TIM_Exported_Functions_Group1 Time Base functions 
+ *  @brief    Time Base functions 
+ *
+@verbatim 
+  ==============================================================================
+              ##### Time Base functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Initialize and configure the TIM base.
+    (+) De-initialize the TIM base.
+    (+) Start the Time Base.
+    (+) Stop the Time Base.
+    (+) Start the Time Base and enable interrupt.
+    (+) Stop the Time Base and disable interrupt.
+    (+) Start the Time Base and enable DMA transfer.
+    (+) Stop the Time Base and disable DMA transfer.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  Initializes the TIM Time base Unit according to the specified
+  *         parameters in the TIM_HandleTypeDef and create the associated handle.
+  * @param  htim : TIM Base handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
+{
+  /* Check the TIM handle allocation */
+  if(htim == NULL)
+  {
+    return HAL_ERROR;
+  }
+
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
+  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+
+  if(htim->State == HAL_TIM_STATE_RESET)
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+    
+    /* Init the low level hardware : GPIO, CLOCK, NVIC */
+    HAL_TIM_Base_MspInit(htim);
+  }
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Set the Time Base configuration */
+  TIM_Base_SetConfig(htim->Instance, &htim->Init);
+
+  /* Initialize the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  DeInitializes the TIM Base peripheral 
+  * @param  htim : TIM Base handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Disable the TIM Peripheral Clock */
+  __HAL_TIM_DISABLE(htim);
+
+  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
+  HAL_TIM_Base_MspDeInit(htim);
+
+  /* Change TIM state */
+  htim->State = HAL_TIM_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM Base MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_Base_MspInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  DeInitializes TIM Base MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_Base_MspDeInit could be implemented in the user file
+   */
+}
+
+
+/**
+  * @brief  Starts the TIM Base generation.
+  * @param  htim : TIM handle
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Change the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Base generation.
+  * @param  htim : TIM handle
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Base generation in interrupt mode.
+  * @param  htim : TIM handle
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+   /* Enable the TIM Update interrupt */
+   __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
+
+   /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Base generation in interrupt mode.
+  * @param  htim : TIM handle
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+  /* Disable the TIM Update interrupt */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Base generation in DMA mode.
+  * @param  htim : TIM handle
+  * @param  pData : The source Buffer address.
+  * @param  Length : The length of data to be transferred from memory to peripheral.
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if((pData == 0 ) && (Length > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+  /* Set the DMA Period elapsed callback */
+  htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;
+
+  /* Set the DMA error callback */
+  htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;
+
+  /* Enable the DMA channel */
+  HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR, Length);
+
+  /* Enable the TIM Update DMA request */
+  __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_UPDATE);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Base generation in DMA mode.
+  * @param  htim : TIM handle
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
+
+  /* Disable the TIM Update DMA request */
+  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_UPDATE);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Exported_Functions_Group2 Time Output Compare functions 
+ *  @brief    Time Output Compare functions 
+ *
+@verbatim 
+  ==============================================================================
+                  ##### Time Output Compare functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Initialize and configure the TIM Output Compare.
+    (+) De-initialize the TIM Output Compare.
+    (+) Start the Time Output Compare.
+    (+) Stop the Time Output Compare.
+    (+) Start the Time Output Compare and enable interrupt.
+    (+) Stop the Time Output Compare and disable interrupt.
+    (+) Start the Time Output Compare and enable DMA transfer.
+    (+) Stop the Time Output Compare and disable DMA transfer.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  Initializes the TIM Output Compare according to the specified
+  *         parameters in the TIM_HandleTypeDef and create the associated handle.
+  * @param  htim : TIM Output Compare handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef* htim)
+{
+  /* Check the TIM handle allocation */
+  if(htim == NULL)
+  {
+    return HAL_ERROR;
+  }
+
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
+  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+
+  if(htim->State == HAL_TIM_STATE_RESET)
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+    
+    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
+    HAL_TIM_OC_MspInit(htim);
+  }
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Init the base time for the Output Compare */
+  TIM_Base_SetConfig(htim->Instance,  &htim->Init);
+
+  /* Initialize the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  DeInitializes the TIM peripheral 
+  * @param  htim : TIM Output Compare handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+   htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Disable the TIM Peripheral Clock */
+  __HAL_TIM_DISABLE(htim);
+
+  /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */
+  HAL_TIM_OC_MspDeInit(htim);
+
+  /* Change TIM state */
+  htim->State = HAL_TIM_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM Output Compare MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_OC_MspInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  DeInitializes TIM Output Compare MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_OC_MspDeInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Starts the TIM Output Compare signal generation.
+  * @param  htim : TIM Output Compare handle 
+  * @param  Channel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected 
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  /* Enable the Output compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Enable the main output */
+    __HAL_TIM_MOE_ENABLE(htim);
+  }
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Output Compare signal generation.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  /* Disable the Output compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Output Compare signal generation in interrupt mode.
+  * @param  htim : TIM OC handle
+  * @param  Channel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Enable the TIM Capture/Compare 1 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Enable the TIM Capture/Compare 2 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Enable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Enable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the Output compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Enable the main output */
+    __HAL_TIM_MOE_ENABLE(htim);
+  }
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Output Compare signal generation in interrupt mode.
+  * @param  htim : TIM Output Compare handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Capture/Compare 1 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Capture/Compare 2 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the Output compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Output Compare signal generation in DMA mode.
+  * @param  htim : TIM Output Compare handle
+  * @param  Channel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @param  pData : The source Buffer address.
+  * @param  Length : The length of data to be transferred from memory to TIM peripheral
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if(((uint32_t)pData == 0 ) && (Length > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
+
+      /* Enable the TIM Capture/Compare 1 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
+
+      /* Enable the TIM Capture/Compare 2 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
+
+      /* Enable the TIM Capture/Compare 3 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+     /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
+
+      /* Enable the TIM Capture/Compare 4 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the Output compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Enable the main output */
+    __HAL_TIM_MOE_ENABLE(htim);
+  }
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Output Compare signal generation in DMA mode.
+  * @param  htim : TIM Output Compare handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Capture/Compare 1 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Capture/Compare 2 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Capture/Compare 3 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the Output compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Exported_Functions_Group3 Time PWM functions 
+ *  @brief    Time PWM functions 
+ *
+@verbatim 
+  ==============================================================================
+                          ##### Time PWM functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Initialize and configure the TIM PWM.
+    (+) De-initialize the TIM PWM.
+    (+) Start the Time PWM.
+    (+) Stop the Time PWM.
+    (+) Start the Time PWM and enable interrupt.
+    (+) Stop the Time PWM and disable interrupt.
+    (+) Start the Time PWM and enable DMA transfer.
+    (+) Stop the Time PWM and disable DMA transfer.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  Initializes the TIM PWM Time Base according to the specified
+  *         parameters in the TIM_HandleTypeDef and create the associated handle.
+  * @param  htim : TIM handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim)
+{
+  /* Check the TIM handle allocation */
+  if(htim == NULL)
+  {
+    return HAL_ERROR;
+  }
+
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
+  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+
+  if(htim->State == HAL_TIM_STATE_RESET)
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+    
+    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
+    HAL_TIM_PWM_MspInit(htim);
+  }
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Init the base time for the PWM */
+  TIM_Base_SetConfig(htim->Instance, &htim->Init);
+
+  /* Initialize the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  DeInitializes the TIM peripheral 
+  * @param  htim : TIM handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Disable the TIM Peripheral Clock */
+  __HAL_TIM_DISABLE(htim);
+
+  /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */
+  HAL_TIM_PWM_MspDeInit(htim);
+
+  /* Change TIM state */
+  htim->State = HAL_TIM_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM PWM MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_PWM_MspInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  DeInitializes TIM PWM MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_PWM_MspDeInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Starts the PWM signal generation.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  /* Enable the Capture compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Enable the main output */
+    __HAL_TIM_MOE_ENABLE(htim);
+  }
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the PWM signal generation.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channels to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  /* Disable the Capture compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the PWM signal generation in interrupt mode.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Enable the TIM Capture/Compare 1 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Enable the TIM Capture/Compare 2 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Enable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Enable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the Capture compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Enable the main output */
+    __HAL_TIM_MOE_ENABLE(htim);
+  }
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the PWM signal generation in interrupt mode.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channels to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT (TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Capture/Compare 1 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Capture/Compare 2 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the Capture compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM PWM signal generation in DMA mode.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @param  pData : The source Buffer address.
+  * @param  Length : The length of data to be transferred from memory to TIM peripheral
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if(((uint32_t)pData == 0 ) && (Length > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
+
+      /* Enable the TIM Capture/Compare 1 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
+
+      /* Enable the TIM Capture/Compare 2 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
+
+      /* Enable the TIM Output Capture/Compare 3 request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+     /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
+
+      /* Enable the TIM Capture/Compare 4 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the Capture compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Enable the main output */
+    __HAL_TIM_MOE_ENABLE(htim);
+  }
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM PWM signal generation in DMA mode.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channels to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Capture/Compare 1 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Capture/Compare 2 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Capture/Compare 3 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the Capture compare channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Exported_Functions_Group4 Time Input Capture functions 
+ *  @brief    Time Input Capture functions 
+ *
+@verbatim 
+  ==============================================================================
+              ##### Time Input Capture functions #####
+  ==============================================================================
+ [..]
+   This section provides functions allowing to:
+   (+) Initialize and configure the TIM Input Capture.
+   (+) De-initialize the TIM Input Capture.
+   (+) Start the Time Input Capture.
+   (+) Stop the Time Input Capture.
+   (+) Start the Time Input Capture and enable interrupt.
+   (+) Stop the Time Input Capture and disable interrupt.
+   (+) Start the Time Input Capture and enable DMA transfer.
+   (+) Stop the Time Input Capture and disable DMA transfer.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  Initializes the TIM Input Capture Time base according to the specified
+  *         parameters in the TIM_HandleTypeDef and create the associated handle.
+  * @param  htim : TIM Input Capture handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim)
+{
+  /* Check the TIM handle allocation */
+  if(htim == NULL)
+  {
+    return HAL_ERROR;
+  }
+
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
+  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+
+  if(htim->State == HAL_TIM_STATE_RESET)
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+    
+    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
+    HAL_TIM_IC_MspInit(htim);
+  }
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Init the base time for the input capture */
+  TIM_Base_SetConfig(htim->Instance, &htim->Init);
+
+  /* Initialize the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  DeInitializes the TIM peripheral 
+  * @param  htim : TIM Input Capture handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Disable the TIM Peripheral Clock */
+  __HAL_TIM_DISABLE(htim);
+
+  /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */
+  HAL_TIM_IC_MspDeInit(htim);
+
+  /* Change TIM state */
+  htim->State = HAL_TIM_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM Input Capture MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_IC_MspInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  DeInitializes TIM Input Capture MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_IC_MspDeInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Starts the TIM Input Capture measurement.
+  * @param  htim : TIM Input Capture handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_IC_Start (TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  /* Enable the Input Capture channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Input Capture measurement.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channels to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  /* Disable the Input Capture channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Input Capture measurement in interrupt mode.
+  * @param  htim : TIM Input Capture handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_IC_Start_IT (TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Enable the TIM Capture/Compare 1 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Enable the TIM Capture/Compare 2 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Enable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Enable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+  /* Enable the Input Capture channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Input Capture measurement in interrupt mode.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channels to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Capture/Compare 1 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Capture/Compare 2 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the Input Capture channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Input Capture measurement in DMA mode.
+  * @param  htim : TIM Input Capture handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @param  pData : The destination Buffer address.
+  * @param  Length : The length of data to be transferred from TIM peripheral to memory.
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+  assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if((pData == 0 ) && (Length > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length);
+
+      /* Enable the TIM Capture/Compare 1 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData, Length);
+
+      /* Enable the TIM Capture/Compare 2  DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData, Length);
+
+      /* Enable the TIM Capture/Compare 3  DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData, Length);
+
+      /* Enable the TIM Capture/Compare 4  DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the Input Capture channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Input Capture measurement in DMA mode.
+  * @param  htim : TIM Input Capture handle
+  * @param  Channel : TIM Channels to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
+  assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Capture/Compare 1 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Capture/Compare 2 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Capture/Compare 3  DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Capture/Compare 4  DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the Input Capture channel */
+  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Exported_Functions_Group5 Time One Pulse functions 
+ *  @brief    Time One Pulse functions 
+ *
+@verbatim 
+  ==============================================================================
+                        ##### Time One Pulse functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Initialize and configure the TIM One Pulse.
+    (+) De-initialize the TIM One Pulse.
+    (+) Start the Time One Pulse.
+    (+) Stop the Time One Pulse.
+    (+) Start the Time One Pulse and enable interrupt.
+    (+) Stop the Time One Pulse and disable interrupt.
+    (+) Start the Time One Pulse and enable DMA transfer.
+    (+) Stop the Time One Pulse and disable DMA transfer.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  Initializes the TIM One Pulse Time Base according to the specified
+  *         parameters in the TIM_HandleTypeDef and create the associated handle.
+  * @param  htim : TIM OnePulse handle
+  * @param  OnePulseMode : Select the One pulse mode.
+  *         This parameter can be one of the following values:
+  *            @arg TIM_OPMODE_SINGLE: Only one pulse will be generated.
+  *            @arg TIM_OPMODE_REPETITIVE: Repetitive pulses wil be generated.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode)
+{
+  /* Check the TIM handle allocation */
+  if(htim == NULL)
+  {
+    return HAL_ERROR;
+  }
+
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
+  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+  assert_param(IS_TIM_OPM_MODE(OnePulseMode));
+
+  if(htim->State == HAL_TIM_STATE_RESET)
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+    
+    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
+    HAL_TIM_OnePulse_MspInit(htim);
+  }
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Configure the Time base in the One Pulse Mode */
+  TIM_Base_SetConfig(htim->Instance, &htim->Init);
+
+  /* Reset the OPM Bit */
+  htim->Instance->CR1 &= ~TIM_CR1_OPM;
+
+  /* Configure the OPM Mode */
+  htim->Instance->CR1 |= OnePulseMode;
+
+  /* Initialize the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  DeInitializes the TIM One Pulse 
+  * @param  htim : TIM One Pulse handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Disable the TIM Peripheral Clock */
+  __HAL_TIM_DISABLE(htim);
+
+  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
+  HAL_TIM_OnePulse_MspDeInit(htim);
+
+  /* Change TIM state */
+  htim->State = HAL_TIM_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM One Pulse MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_OnePulse_MspInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  DeInitializes TIM One Pulse MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_OnePulse_MspDeInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Starts the TIM One Pulse signal generation.
+  * @param  htim : TIM One Pulse handle
+  * @param  OutputChannel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
+{
+  /* Enable the Capture compare and the Input Capture channels 
+    (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)
+    if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and
+    if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output 
+    in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together 
+
+    No need to enable the counter, it's enabled automatically by hardware 
+    (the counter starts in response to a stimulus and generate a pulse */
+
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Enable the main output */
+    __HAL_TIM_MOE_ENABLE(htim);
+  }
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM One Pulse signal generation.
+  * @param  htim : TIM One Pulse handle
+  * @param  OutputChannel : TIM Channels to be disable
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
+{
+  /* Disable the Capture compare and the Input Capture channels
+  (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)
+  if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and
+  if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output 
+  in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */
+
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM One Pulse signal generation in interrupt mode.
+  * @param  htim : TIM One Pulse handle
+  * @param  OutputChannel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
+{
+  /* Enable the Capture compare and the Input Capture channels 
+    (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)
+    if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and
+    if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output 
+    in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together 
+
+    No need to enable the counter, it's enabled automatically by hardware 
+    (the counter starts in response to a stimulus and generate a pulse */
+
+  /* Enable the TIM Capture/Compare 1 interrupt */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+
+  /* Enable the TIM Capture/Compare 2 interrupt */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Enable the main output */
+    __HAL_TIM_MOE_ENABLE(htim);
+  }
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM One Pulse signal generation in interrupt mode.
+  * @param  htim : TIM One Pulse handle
+  * @param  OutputChannel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
+{
+  /* Disable the TIM Capture/Compare 1 interrupt */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+
+  /* Disable the TIM Capture/Compare 2 interrupt */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+
+  /* Disable the Capture compare and the Input Capture channels 
+  (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)
+  if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and
+  if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output 
+  in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
+
+  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  {
+    /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+  }
+
+  /* Disable the Peripheral */
+   __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Exported_Functions_Group6 Time Encoder functions 
+ *  @brief    Time Encoder functions 
+ *
+@verbatim 
+  ==============================================================================
+                          ##### Time Encoder functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Initialize and configure the TIM Encoder.
+    (+) De-initialize the TIM Encoder.
+    (+) Start the Time Encoder.
+    (+) Stop the Time Encoder.
+    (+) Start the Time Encoder and enable interrupt.
+    (+) Stop the Time Encoder and disable interrupt.
+    (+) Start the Time Encoder and enable DMA transfer.
+    (+) Stop the Time Encoder and disable DMA transfer.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  Initializes the TIM Encoder Interface and create the associated handle.
+  * @param  htim : TIM Encoder Interface handle
+  * @param  sConfig : TIM Encoder Interface configuration structure
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef* sConfig)
+{
+  uint32_t tmpsmcr = 0;
+  uint32_t tmpccmr1 = 0;
+  uint32_t tmpccer = 0;
+
+  /* Check the TIM handle allocation */
+  if(htim == NULL)
+  {
+    return HAL_ERROR;
+  }
+
+  /* Check the parameters */
+  assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));
+  assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));
+  assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));
+  assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
+  assert_param(IS_TIM_IC_POLARITY(sConfig->IC2Polarity));
+  assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
+  assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
+  assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
+  assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter));
+
+  if(htim->State == HAL_TIM_STATE_RESET)
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+    
+    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
+    HAL_TIM_Encoder_MspInit(htim);
+  }
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Reset the SMS bits */
+  htim->Instance->SMCR &= ~TIM_SMCR_SMS;
+
+  /* Configure the Time base in the Encoder Mode */
+  TIM_Base_SetConfig(htim->Instance, &htim->Init);
+
+  /* Get the TIMx SMCR register value */
+  tmpsmcr = htim->Instance->SMCR;
+
+  /* Get the TIMx CCMR1 register value */
+  tmpccmr1 = htim->Instance->CCMR1;
+
+  /* Get the TIMx CCER register value */
+  tmpccer = htim->Instance->CCER;
+
+  /* Set the encoder Mode */
+  tmpsmcr |= sConfig->EncoderMode;
+
+  /* Select the Capture Compare 1 and the Capture Compare 2 as input */
+  tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S);
+  tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8));
+
+  /* Set the the Capture Compare 1 and the Capture Compare 2 prescalers and filters */
+  tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC);
+  tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F);
+  tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8);
+  tmpccmr1 |= (sConfig->IC1Filter << 4) | (sConfig->IC2Filter << 12);
+
+  /* Set the TI1 and the TI2 Polarities */
+  tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);
+  tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP);
+  tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4);
+
+  /* Write to TIMx SMCR */
+  htim->Instance->SMCR = tmpsmcr;
+
+  /* Write to TIMx CCMR1 */
+  htim->Instance->CCMR1 = tmpccmr1;
+
+  /* Write to TIMx CCER */
+  htim->Instance->CCER = tmpccer;
+
+  /* Initialize the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  return HAL_OK;
+}
+
+
+/**
+  * @brief  DeInitializes the TIM Encoder interface 
+  * @param  htim : TIM Encoder handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Disable the TIM Peripheral Clock */
+  __HAL_TIM_DISABLE(htim);
+
+  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
+  HAL_TIM_Encoder_MspDeInit(htim);
+
+  /* Change TIM state */
+  htim->State = HAL_TIM_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM Encoder Interface MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_Encoder_MspInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  DeInitializes TIM Encoder Interface MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_Encoder_MspDeInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Starts the TIM Encoder Interface.
+  * @param  htim : TIM Encoder Interface handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+  /* Enable the encoder interface channels */
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+      break;
+  }
+    case TIM_CHANNEL_2:
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+      break;
+  }
+    default :
+  {
+     TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+     TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+     break;
+    }
+  }
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Encoder Interface.
+  * @param  htim : TIM Encoder Interface handle
+  * @param  Channel : TIM Channels to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+    assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+   /* Disable the Input Capture channels 1 and 2
+    (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+  {
+     TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+      break;
+  }
+    case TIM_CHANNEL_2:
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
+      break;
+  }
+    default :
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
+     break;
+    }
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Encoder Interface in interrupt mode.
+  * @param  htim : TIM Encoder Interface handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+  /* Enable the encoder interface channels */
+  /* Enable the capture compare Interrupts 1 and/or 2 */
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+    __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+      break;
+  }
+    case TIM_CHANNEL_2:
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+    __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+      break;
+  }
+    default :
+  {
+     TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+     TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+     __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+     __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+     break;
+    }
+  }
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Encoder Interface in interrupt mode.
+  * @param  htim : TIM Encoder Interface handle
+  * @param  Channel : TIM Channels to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+  /* Disable the Input Capture channels 1 and 2
+    (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
+  if(Channel == TIM_CHANNEL_1)
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+
+    /* Disable the capture compare Interrupts 1 */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+  }
+  else if(Channel == TIM_CHANNEL_2)
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
+
+    /* Disable the capture compare Interrupts 2 */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+  }
+  else
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
+
+    /* Disable the capture compare Interrupts 1 and 2 */
+    __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+    __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Encoder Interface in DMA mode.
+  * @param  htim : TIM Encoder Interface handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
+  * @param  pData1 : The destination Buffer address for IC1.
+  * @param  pData2 : The destination Buffer address for IC2.
+  * @param  Length : The length of data to be transferred from TIM peripheral to memory.
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if((((pData1 == 0) || (pData2 == 0) )) && (Length > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t )pData1, Length);
+
+      /* Enable the TIM Input Capture DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
+
+      /* Enable the Peripheral */
+      __HAL_TIM_ENABLE(htim);
+
+      /* Enable the Capture compare channel */
+      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError;
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, Length);
+
+      /* Enable the TIM Input Capture  DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
+
+      /* Enable the Peripheral */
+      __HAL_TIM_ENABLE(htim);
+
+      /* Enable the Capture compare channel */
+      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+    }
+    break;
+
+    case TIM_CHANNEL_ALL:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, Length);
+
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, Length);
+
+     /* Enable the Peripheral */
+      __HAL_TIM_ENABLE(htim);
+
+      /* Enable the Capture compare channel */
+      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+
+      /* Enable the TIM Input Capture  DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
+      /* Enable the TIM Input Capture  DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    default:
+    break;
+  }
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Encoder Interface in DMA mode.
+  * @param  htim : TIM Encoder Interface handle
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
+  * @retval HAL status
+*/
+HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
+
+  /* Disable the Input Capture channels 1 and 2
+    (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
+  if(Channel == TIM_CHANNEL_1)
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+
+    /* Disable the capture compare DMA Request 1 */
+    __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
+  }
+  else if(Channel == TIM_CHANNEL_2)
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
+
+    /* Disable the capture compare DMA Request 2 */
+    __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
+  }
+  else
+  {
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+    TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
+
+    /* Disable the capture compare DMA Request 1 and 2 */
+    __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
+    __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
+  }
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management 
+ *  @brief    IRQ handler management 
+ *
+@verbatim 
+  ==============================================================================
+                        ##### IRQ handler management #####
+  ==============================================================================
+  [..]
+    This section provides Timer IRQ handler function.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  This function handles TIM interrupts requests.
+  * @param  htim : TIM  handle
+  * @retval None
+  */
+void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
+{
+  /* Capture compare 1 event */
+  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) !=RESET)
+    {
+      {
+        __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
+        htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
+
+        /* Input capture event */
+        if((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00)
+        {
+          HAL_TIM_IC_CaptureCallback(htim);
+        }
+        /* Output compare event */
+        else
+        {
+          HAL_TIM_OC_DelayElapsedCallback(htim);
+          HAL_TIM_PWM_PulseFinishedCallback(htim);
+        }
+        htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
+      }
+    }
+  }
+  /* Capture compare 2 event */
+  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) !=RESET)
+    {
+      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);
+      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
+      /* Input capture event */
+      if((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00)
+      {
+        HAL_TIM_IC_CaptureCallback(htim);
+      }
+      /* Output compare event */
+      else
+      {
+        HAL_TIM_OC_DelayElapsedCallback(htim);
+        HAL_TIM_PWM_PulseFinishedCallback(htim);
+      }
+      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
+    }
+  }
+  /* Capture compare 3 event */
+  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) !=RESET)
+    {
+      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);
+      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
+      /* Input capture event */
+      if((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00)
+      {
+        HAL_TIM_IC_CaptureCallback(htim);
+      }
+      /* Output compare event */
+      else
+      {
+        HAL_TIM_OC_DelayElapsedCallback(htim);
+        HAL_TIM_PWM_PulseFinishedCallback(htim);
+      }
+      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
+    }
+  }
+  /* Capture compare 4 event */
+  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) !=RESET)
+    {
+      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
+      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
+      /* Input capture event */
+      if((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00)
+      {
+        HAL_TIM_IC_CaptureCallback(htim);
+      }
+      /* Output compare event */
+      else
+      {
+        HAL_TIM_OC_DelayElapsedCallback(htim);
+        HAL_TIM_PWM_PulseFinishedCallback(htim);
+      }
+      htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
+    }
+  }
+  /* TIM Update event */
+  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) !=RESET)
+    {
+      __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
+      HAL_TIM_PeriodElapsedCallback(htim);
+    }
+  }
+  /* TIM Break input event */
+  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) !=RESET)
+    {
+      __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK);
+      HAL_TIMEx_BreakCallback(htim);
+    }
+  }
+  /* TIM Trigger detection event */
+  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) !=RESET)
+    {
+      __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);
+      HAL_TIM_TriggerCallback(htim);
+    }
+  }
+  /* TIM commutation event */
+  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET)
+  {
+    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) !=RESET)
+    {
+      __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM);
+      HAL_TIMEx_CommutationCallback(htim);
+    }
+  }
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Exported_Functions_Group8 Peripheral Control functions
+ *  @brief   	Peripheral Control functions 
+ *
+@verbatim 
+  ==============================================================================
+                   ##### Peripheral Control functions #####
+  ==============================================================================
+ [..]
+   This section provides functions allowing to:
+      (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode.
+      (+) Configure External Clock source.
+      (+) Configure Complementary channels, break features and dead time.
+      (+) Configure Master and the Slave synchronization.
+      (+) Configure the DMA Burst Mode.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Initializes the TIM Output Compare Channels according to the specified
+  *         parameters in the TIM_OC_InitTypeDef.
+  * @param  htim : TIM Output Compare handle
+  * @param  sConfig : TIM Output Compare configuration structure
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected 
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CHANNELS(Channel));
+  assert_param(IS_TIM_OC_MODE(sConfig->OCMode));
+  assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));
+
+  /* Check input state */
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+      /* Configure the TIM Channel 1 in Output Compare */
+      TIM_OC1_SetConfig(htim->Instance, sConfig);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+      /* Configure the TIM Channel 2 in Output Compare */
+      TIM_OC2_SetConfig(htim->Instance, sConfig);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+       assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
+      /* Configure the TIM Channel 3 in Output Compare */
+      TIM_OC3_SetConfig(htim->Instance, sConfig);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
+       /* Configure the TIM Channel 4 in Output Compare */
+       TIM_OC4_SetConfig(htim->Instance, sConfig);
+    }
+    break;
+
+    default:
+    break;
+  }
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM Input Capture Channels according to the specified
+  *         parameters in the TIM_IC_InitTypeDef.
+  * @param  htim : TIM IC handle
+  * @param  sConfig : TIM Input Capture configuration structure
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected 
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef* sConfig, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity));
+  assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection));
+  assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler));
+  assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter));
+
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  if (Channel == TIM_CHANNEL_1)
+  {
+    /* TI1 Configuration */
+    TIM_TI1_SetConfig(htim->Instance,
+               sConfig->ICPolarity,
+               sConfig->ICSelection,
+               sConfig->ICFilter);
+
+    /* Reset the IC1PSC Bits */
+    htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
+
+    /* Set the IC1PSC value */
+    htim->Instance->CCMR1 |= sConfig->ICPrescaler;
+  }
+  else if (Channel == TIM_CHANNEL_2)
+  {
+    /* TI2 Configuration */
+    assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+    TIM_TI2_SetConfig(htim->Instance,
+                      sConfig->ICPolarity,
+                      sConfig->ICSelection,
+                      sConfig->ICFilter);
+
+    /* Reset the IC2PSC Bits */
+    htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;
+
+    /* Set the IC2PSC value */
+    htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8);
+  }
+  else if (Channel == TIM_CHANNEL_3)
+  {
+    /* TI3 Configuration */
+    assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
+
+    TIM_TI3_SetConfig(htim->Instance,
+               sConfig->ICPolarity,
+               sConfig->ICSelection,
+               sConfig->ICFilter);
+
+    /* Reset the IC3PSC Bits */
+    htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC;
+
+    /* Set the IC3PSC value */
+    htim->Instance->CCMR2 |= sConfig->ICPrescaler;
+  }
+  else
+  {
+    /* TI4 Configuration */
+    assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
+
+    TIM_TI4_SetConfig(htim->Instance,
+               sConfig->ICPolarity,
+               sConfig->ICSelection,
+               sConfig->ICFilter);
+
+    /* Reset the IC4PSC Bits */
+    htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC;
+
+    /* Set the IC4PSC value */
+    htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8);
+  }
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM PWM  channels according to the specified
+  *         parameters in the TIM_OC_InitTypeDef.
+  * @param  htim : TIM handle
+  * @param  sConfig : TIM PWM configuration structure
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel)
+{
+  __HAL_LOCK(htim);
+
+  /* Check the parameters */
+  assert_param(IS_TIM_CHANNELS(Channel));
+  assert_param(IS_TIM_PWM_MODE(sConfig->OCMode));
+  assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));
+  assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode));
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+      /* Configure the Channel 1 in PWM mode */
+      TIM_OC1_SetConfig(htim->Instance, sConfig);
+
+      /* Set the Preload enable bit for channel1 */
+      htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE;
+
+      /* Configure the Output Fast mode */
+      htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE;
+      htim->Instance->CCMR1 |= sConfig->OCFastMode;
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+      /* Configure the Channel 2 in PWM mode */
+      TIM_OC2_SetConfig(htim->Instance, sConfig);
+
+      /* Set the Preload enable bit for channel2 */
+      htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE;
+
+      /* Configure the Output Fast mode */
+      htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE;
+      htim->Instance->CCMR1 |= sConfig->OCFastMode << 8;
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
+      /* Configure the Channel 3 in PWM mode */
+      TIM_OC3_SetConfig(htim->Instance, sConfig);
+
+      /* Set the Preload enable bit for channel3 */
+      htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE;
+
+     /* Configure the Output Fast mode */
+      htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE;
+      htim->Instance->CCMR2 |= sConfig->OCFastMode;
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
+      /* Configure the Channel 4 in PWM mode */
+      TIM_OC4_SetConfig(htim->Instance, sConfig);
+
+      /* Set the Preload enable bit for channel4 */
+      htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE;
+
+     /* Configure the Output Fast mode */
+      htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE;
+      htim->Instance->CCMR2 |= sConfig->OCFastMode << 8;
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM One Pulse Channels according to the specified
+  *         parameters in the TIM_OnePulse_InitTypeDef.
+  * @param  htim : TIM One Pulse handle
+  * @param  sConfig : TIM One Pulse configuration structure
+  * @param  OutputChannel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @param  InputChannel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim,  TIM_OnePulse_InitTypeDef* sConfig, uint32_t OutputChannel,  uint32_t InputChannel)
+{
+  TIM_OC_InitTypeDef temp1;
+
+  /* Check the parameters */
+  assert_param(IS_TIM_OPM_CHANNELS(OutputChannel));
+  assert_param(IS_TIM_OPM_CHANNELS(InputChannel));
+
+  if(OutputChannel != InputChannel)
+  {
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Extract the Ouput compare configuration from sConfig structure */
+  temp1.OCMode = sConfig->OCMode;
+  temp1.Pulse = sConfig->Pulse;
+  temp1.OCPolarity = sConfig->OCPolarity;
+  temp1.OCNPolarity = sConfig->OCNPolarity;
+  temp1.OCIdleState = sConfig->OCIdleState;
+  temp1.OCNIdleState = sConfig->OCNIdleState;
+
+    switch (OutputChannel)
+  {
+    case TIM_CHANNEL_1:
+    {
+        assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+
+      TIM_OC1_SetConfig(htim->Instance, &temp1);
+    }
+    break;
+    case TIM_CHANNEL_2:
+    {
+        assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+      TIM_OC2_SetConfig(htim->Instance, &temp1);
+    }
+    break;
+    default:
+    break;
+  }
+  switch (InputChannel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+
+      TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity,
+                        sConfig->ICSelection, sConfig->ICFilter);
+
+      /* Reset the IC1PSC Bits */
+    htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
+
+      /* Select the Trigger source */
+        htim->Instance->SMCR &= ~TIM_SMCR_TS;
+      htim->Instance->SMCR |= TIM_TS_TI1FP1;
+
+      /* Select the Slave Mode */
+        htim->Instance->SMCR &= ~TIM_SMCR_SMS;
+      htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;
+    }
+    break;
+    case TIM_CHANNEL_2:
+    {
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+      TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity,
+                 sConfig->ICSelection, sConfig->ICFilter);
+
+      /* Reset the IC2PSC Bits */
+        htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;
+
+      /* Select the Trigger source */
+        htim->Instance->SMCR &= ~TIM_SMCR_TS;
+      htim->Instance->SMCR |= TIM_TS_TI2FP2;
+
+      /* Select the Slave Mode */
+        htim->Instance->SMCR &= ~TIM_SMCR_SMS;
+      htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+  else
+  {
+    return HAL_ERROR;
+  }
+}
+
+/**
+  * @brief  Configure the DMA Burst to transfer Data from the memory to the TIM peripheral 
+  * @param  htim : TIM handle
+  * @param  BurstBaseAddress : TIM Base address from where the DMA will start the Data write
+  *         This parameter can be one of the following values:
+  *            @arg TIM_DMABASE_CR1 
+  *            @arg TIM_DMABASE_CR2
+  *            @arg TIM_DMABASE_SMCR
+  *            @arg TIM_DMABASE_DIER
+  *            @arg TIM_DMABASE_SR
+  *            @arg TIM_DMABASE_EGR
+  *            @arg TIM_DMABASE_CCMR1
+  *            @arg TIM_DMABASE_CCMR2
+  *            @arg TIM_DMABASE_CCER
+  *            @arg TIM_DMABASE_CNT 
+  *            @arg TIM_DMABASE_PSC 
+  *            @arg TIM_DMABASE_ARR
+  *            @arg TIM_DMABASE_RCR
+  *            @arg TIM_DMABASE_CCR1
+  *            @arg TIM_DMABASE_CCR2
+  *            @arg TIM_DMABASE_CCR3 
+  *            @arg TIM_DMABASE_CCR4
+  *            @arg TIM_DMABASE_BDTR
+  *            @arg TIM_DMABASE_DCR
+  * @param  BurstRequestSrc : TIM DMA Request sources
+  *         This parameter can be one of the following values:
+  *            @arg TIM_DMA_UPDATE: TIM update Interrupt source
+  *            @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source
+  *            @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source
+  *            @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source
+  *            @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source
+  *            @arg TIM_DMA_COM: TIM Commutation DMA source
+  *            @arg TIM_DMA_TRIGGER: TIM Trigger DMA source
+  * @param  BurstBuffer : The Buffer address.
+  * @param  BurstLength : DMA Burst length. This parameter can be one value
+  *         between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,
+                                              uint32_t* BurstBuffer, uint32_t  BurstLength)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));
+  assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
+  assert_param(IS_TIM_DMA_LENGTH(BurstLength));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if((BurstBuffer == 0 ) && (BurstLength > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+  switch(BurstRequestSrc)
+  {
+    case TIM_DMA_UPDATE:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_CC1:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback =  TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_CC2:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback =  TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_CC3:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback =  TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_CC4:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback =  TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_COM:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback =  TIMEx_DMACommutationCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_TRIGGER:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    default:
+    break;
+  }
+   /* configure the DMA Burst Mode */
+   htim->Instance->DCR = BurstBaseAddress | BurstLength;
+
+   /* Enable the TIM DMA Request */
+   __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);
+
+   htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM DMA Burst mode 
+  * @param  htim : TIM handle
+  * @param  BurstRequestSrc : TIM DMA Request sources to disable
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
+
+  /* Abort the DMA transfer (at least disable the DMA channel) */
+  switch(BurstRequestSrc)
+  {
+    case TIM_DMA_UPDATE:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_UPDATE]);
+    }
+    break;
+    case TIM_DMA_CC1:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC1]);
+    }
+    break;
+    case TIM_DMA_CC2:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC2]);
+    }
+    break;
+    case TIM_DMA_CC3:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC3]);
+    }
+    break;
+    case TIM_DMA_CC4:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC4]);
+    }
+    break;
+    case TIM_DMA_COM:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_COMMUTATION]);
+    }
+    break;
+    case TIM_DMA_TRIGGER:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_TRIGGER]);
+    }
+    break;
+    default:
+    break;
+  }
+
+  /* Disable the TIM Update DMA request */
+  __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Configure the DMA Burst to transfer Data from the TIM peripheral to the memory 
+  * @param  htim : TIM handle
+  * @param  BurstBaseAddress : TIM Base address from where the DMA will starts the Data read
+  *         This parameter can be one of the following values:
+  *            @arg TIM_DMABASE_CR1 
+  *            @arg TIM_DMABASE_CR2
+  *            @arg TIM_DMABASE_SMCR
+  *            @arg TIM_DMABASE_DIER
+  *            @arg TIM_DMABASE_SR
+  *            @arg TIM_DMABASE_EGR
+  *            @arg TIM_DMABASE_CCMR1
+  *            @arg TIM_DMABASE_CCMR2
+  *            @arg TIM_DMABASE_CCER
+  *            @arg TIM_DMABASE_CNT 
+  *            @arg TIM_DMABASE_PSC 
+  *            @arg TIM_DMABASE_ARR
+  *            @arg TIM_DMABASE_RCR
+  *            @arg TIM_DMABASE_CCR1
+  *            @arg TIM_DMABASE_CCR2
+  *            @arg TIM_DMABASE_CCR3 
+  *            @arg TIM_DMABASE_CCR4
+  *            @arg TIM_DMABASE_BDTR
+  *            @arg TIM_DMABASE_DCR
+  * @param  BurstRequestSrc : TIM DMA Request sources
+  *         This parameter can be one of the following values:
+  *            @arg TIM_DMA_UPDATE: TIM update Interrupt source
+  *            @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source
+  *            @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source
+  *            @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source
+  *            @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source
+  *            @arg TIM_DMA_COM: TIM Commutation DMA source
+  *            @arg TIM_DMA_TRIGGER: TIM Trigger DMA source
+  * @param  BurstBuffer : The Buffer address.
+  * @param  BurstLength : DMA Burst length. This parameter can be one value
+  *         between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,
+                                             uint32_t  *BurstBuffer, uint32_t  BurstLength)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));
+  assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
+  assert_param(IS_TIM_DMA_LENGTH(BurstLength));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if((BurstBuffer == 0 ) && (BurstLength > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+  switch(BurstRequestSrc)
+  {
+    case TIM_DMA_UPDATE:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+       HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_CC1:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback =  TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_CC2:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback =  TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_CC3:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback =  TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_CC4:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback =  TIM_DMACaptureCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_COM:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback =  TIMEx_DMACommutationCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    case TIM_DMA_TRIGGER:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
+    }
+    break;
+    default:
+    break;
+  }
+
+  /* configure the DMA Burst Mode */
+  htim->Instance->DCR = BurstBaseAddress | BurstLength;
+
+  /* Enable the TIM DMA Request */
+  __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stop the DMA burst reading 
+  * @param  htim : TIM handle
+  * @param  BurstRequestSrc : TIM DMA Request sources to disable.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
+
+  /* Abort the DMA transfer (at least disable the DMA channel) */
+  switch(BurstRequestSrc)
+  {
+    case TIM_DMA_UPDATE:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_UPDATE]);
+    }
+    break;
+    case TIM_DMA_CC1:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC1]);
+    }
+    break;
+    case TIM_DMA_CC2:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC2]);
+    }
+    break;
+    case TIM_DMA_CC3:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC3]);
+    }
+    break;
+    case TIM_DMA_CC4:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC4]);
+    }
+    break;
+    case TIM_DMA_COM:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_COMMUTATION]);
+    }
+    break;
+    case TIM_DMA_TRIGGER:
+    {
+      HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_TRIGGER]);
+    }
+    break;
+    default:
+    break;
+  }
+
+  /* Disable the TIM Update DMA request */
+  __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Generate a software event
+  * @param  htim : TIM handle
+  * @param  EventSource : specifies the event source.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_EVENTSOURCE_UPDATE: Timer update Event source
+  *            @arg TIM_EVENTSOURCE_CC1: Timer Capture Compare 1 Event source
+  *            @arg TIM_EVENTSOURCE_CC2: Timer Capture Compare 2 Event source
+  *            @arg TIM_EVENTSOURCE_CC3: Timer Capture Compare 3 Event source
+  *            @arg TIM_EVENTSOURCE_CC4: Timer Capture Compare 4 Event source
+  *            @arg TIM_EVENTSOURCE_COM: Timer COM event source 
+  *            @arg TIM_EVENTSOURCE_TRIGGER: Timer Trigger Event source
+  *            @arg TIM_EVENTSOURCE_BREAK: Timer Break event source
+  * @note TIM6 and TIM7 can only generate an update event.
+  * @note TIM_EVENTSOURCE_COM and TIM_EVENTSOURCE_BREAK are used only with TIM1, TIM15, TIM16 and TIM17.
+  * @retval HAL status
+  */
+
+HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_EVENT_SOURCE(EventSource));
+
+  /* Process Locked */
+  __HAL_LOCK(htim);
+
+  /* Change the TIM state */
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Set the event sources */
+  htim->Instance->EGR = EventSource;
+
+  /* Change the TIM state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Configures the OCRef clear feature
+  * @param  htim : TIM handle
+  * @param  sClearInputConfig : pointer to a TIM_ClearInputConfigTypeDef structure that
+  *         contains the OCREF clear feature and parameters for the TIM peripheral.
+  * @param  Channel : specifies the TIM Channel
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1
+  *            @arg TIM_CHANNEL_2: TIM Channel 2
+  *            @arg TIM_CHANNEL_3: TIM Channel 3
+  *            @arg TIM_CHANNEL_4: TIM Channel 4
+  * @retval HAL status
+  */ 
+HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef * sClearInputConfig, uint32_t Channel)
+{
+  uint32_t tmpsmcr = 0;
+
+  /* Check the parameters */
+  assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource));
+  assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity));
+  assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler));
+  assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter));
+
+  /* Process Locked */
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  switch (sClearInputConfig->ClearInputSource)
+  {
+    case TIM_CLEARINPUTSOURCE_NONE:
+    {
+      /* Clear the OCREF clear selection bit */
+      tmpsmcr &= ~TIM_SMCR_OCCS;
+
+      /* Clear the ETR Bits */
+      tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
+
+      /* Set TIMx_SMCR */
+      htim->Instance->SMCR = tmpsmcr;
+   }
+    break;
+
+    case TIM_CLEARINPUTSOURCE_ETR:
+    {
+      TIM_ETR_SetConfig(htim->Instance,
+                        sClearInputConfig->ClearInputPrescaler,
+                        sClearInputConfig->ClearInputPolarity,
+                        sClearInputConfig->ClearInputFilter);
+
+      /* Set the OCREF clear selection bit */
+      htim->Instance->SMCR |= TIM_SMCR_OCCS;
+    }
+    break;
+    default:
+    break;
+  }
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+      {
+        if(sClearInputConfig->ClearInputState != RESET)
+        {
+          /* Enable the Ocref clear feature for Channel 1 */
+          htim->Instance->CCMR1 |= TIM_CCMR1_OC1CE;
+        }
+        else
+        {
+          /* Disable the Ocref clear feature for Channel 1 */
+        htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1CE;
+        }
+      }
+      break;
+    case TIM_CHANNEL_2:
+      {
+        assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+        if(sClearInputConfig->ClearInputState != RESET)
+        {
+          /* Enable the Ocref clear feature for Channel 2 */
+          htim->Instance->CCMR1 |= TIM_CCMR1_OC2CE;
+        }
+        else
+        {
+          /* Disable the Ocref clear feature for Channel 2 */
+          htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2CE;
+        }
+      }
+    break;
+    case TIM_CHANNEL_3:
+      {
+        assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
+        if(sClearInputConfig->ClearInputState != RESET)
+        {
+          /* Enable the Ocref clear feature for Channel 3 */
+          htim->Instance->CCMR2 |= TIM_CCMR2_OC3CE;
+        }
+        else
+        {
+          /* Disable the Ocref clear feature for Channel 3 */
+        htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3CE;
+        }
+      }
+    break;
+    case TIM_CHANNEL_4:
+      {
+        assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
+        if(sClearInputConfig->ClearInputState != RESET)
+        {
+          /* Enable the Ocref clear feature for Channel 4 */
+          htim->Instance->CCMR2 |= TIM_CCMR2_OC4CE;
+        }
+        else
+        {
+          /* Disable the Ocref clear feature for Channel 4 */
+        htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4CE;
+        }
+      }
+    break;
+    default:
+    break;
+  }
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief   Configures the clock source to be used
+  * @param  htim : TIM handle
+  * @param  sClockSourceConfig : pointer to a TIM_ClockConfigTypeDef structure that
+  *         contains the clock source information for the TIM peripheral.
+  * @retval HAL status
+  */ 
+HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef * sClockSourceConfig)
+{
+  uint32_t tmpsmcr = 0;
+
+  /* Process Locked */
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Check the parameters */
+  assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource));
+
+  /* Reset the SMS, TS, ECE, ETPS and ETRF bits */
+  tmpsmcr = htim->Instance->SMCR;
+  tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS);
+  tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
+  htim->Instance->SMCR = tmpsmcr;
+
+  switch (sClockSourceConfig->ClockSource)
+  {
+  case TIM_CLOCKSOURCE_INTERNAL:
+    {
+      assert_param(IS_TIM_INSTANCE(htim->Instance));
+      /* Disable slave mode to clock the prescaler directly with the internal clock */
+      htim->Instance->SMCR &= ~TIM_SMCR_SMS;
+    }
+    break;
+
+  case TIM_CLOCKSOURCE_ETRMODE1:
+    {
+      /* Check whether or not the timer instance supports external trigger input mode 1 (ETRF)*/
+      assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance));
+
+      /* Check ETR input conditioning related parameters */
+      assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler));
+      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));
+      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));
+      
+      /* Configure the ETR Clock source */
+      TIM_ETR_SetConfig(htim->Instance,
+                        sClockSourceConfig->ClockPrescaler,
+                        sClockSourceConfig->ClockPolarity,
+                        sClockSourceConfig->ClockFilter);
+      /* Get the TIMx SMCR register value */
+      tmpsmcr = htim->Instance->SMCR;
+      /* Reset the SMS and TS Bits */
+      tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS);
+      /* Select the External clock mode1 and the ETRF trigger */
+      tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1);
+      /* Write to TIMx SMCR */
+      htim->Instance->SMCR = tmpsmcr;
+    }
+    break;
+
+  case TIM_CLOCKSOURCE_ETRMODE2:
+    {
+      /* Check whether or not the timer instance supports external trigger input mode 2 (ETRF)*/
+      assert_param(IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(htim->Instance));
+
+      /* Check ETR input conditioning related parameters */
+      assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler));
+      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));
+      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));
+      
+      /* Configure the ETR Clock source */
+      TIM_ETR_SetConfig(htim->Instance,
+                        sClockSourceConfig->ClockPrescaler,
+                        sClockSourceConfig->ClockPolarity,
+                        sClockSourceConfig->ClockFilter);
+      /* Enable the External clock mode2 */
+      htim->Instance->SMCR |= TIM_SMCR_ECE;
+    }
+    break;
+
+  case TIM_CLOCKSOURCE_TI1:
+    {
+      /* Check whether or not the timer instance supports external clock mode 1 */
+      assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));
+
+      /* Check TI1 input conditioning related parameters */
+      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));
+      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));
+      
+      TIM_TI1_ConfigInputStage(htim->Instance,
+                               sClockSourceConfig->ClockPolarity,
+                               sClockSourceConfig->ClockFilter);
+      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1);
+    }
+    break;
+  case TIM_CLOCKSOURCE_TI2:
+    {
+      /* Check whether or not the timer instance supports external clock mode 1 (ETRF)*/
+      assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));
+
+       /* Check TI2 input conditioning related parameters */
+      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));
+      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));
+
+      TIM_TI2_ConfigInputStage(htim->Instance,
+                               sClockSourceConfig->ClockPolarity,
+                               sClockSourceConfig->ClockFilter);
+      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2);
+    }
+    break;
+  case TIM_CLOCKSOURCE_TI1ED:
+    {
+      /* Check whether or not the timer instance supports external clock mode 1 */
+      assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance));
+
+      /* Check TI1 input conditioning related parameters */
+      assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));
+      assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));
+
+      TIM_TI1_ConfigInputStage(htim->Instance,
+                               sClockSourceConfig->ClockPolarity,
+                               sClockSourceConfig->ClockFilter);
+      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED);
+    }
+    break;
+  case TIM_CLOCKSOURCE_ITR0:
+    {
+      /* Check whether or not the timer instance supports external clock mode 1 */
+      assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance));
+
+      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_ITR0);
+    }
+    break;
+  case TIM_CLOCKSOURCE_ITR1:
+    {
+      /* Check whether or not the timer instance supports external clock mode 1 */
+      assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance));
+
+      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_ITR1);
+    }
+    break;
+  case TIM_CLOCKSOURCE_ITR2:
+    {
+      /* Check whether or not the timer instance supports external clock mode 1 */
+      assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance));
+
+      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_ITR2);
+    }
+    break;
+  case TIM_CLOCKSOURCE_ITR3:
+    {
+      /* Check whether or not the timer instance supports external clock mode 1 */
+      assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance));
+
+      TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_ITR3);
+    }
+    break;
+
+  default:
+    break;
+  }
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Selects the signal connected to the TI1 input: direct from CH1_input
+  *         or a XOR combination between CH1_input, CH2_input & CH3_input
+  * @param  htim : TIM handle.
+  * @param  TI1_Selection : Indicate whether or not channel 1 is connected to the
+  *         output of a XOR gate.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_TI1SELECTION_CH1: The TIMx_CH1 pin is connected to TI1 input
+  *            @arg TIM_TI1SELECTION_XORCOMBINATION: The TIMx_CH1, CH2 and CH3
+  *            pins are connected to the TI1 input (XOR combination)
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection)
+{
+  uint32_t tmpcr2 = 0;
+
+  /* Check the parameters */
+  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_TI1SELECTION(TI1_Selection));
+
+  /* Get the TIMx CR2 register value */
+  tmpcr2 = htim->Instance->CR2;
+
+  /* Reset the TI1 selection */
+  tmpcr2 &= ~TIM_CR2_TI1S;
+
+  /* Set the the TI1 selection */
+  tmpcr2 |= TI1_Selection;
+
+  /* Write to TIMxCR2 */
+  htim->Instance->CR2 = tmpcr2;
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Configures the TIM in Slave mode
+  * @param  htim : TIM handle.
+  * @param  sSlaveConfig : pointer to a TIM_SlaveConfigTypeDef structure that
+  *         contains the selected trigger (internal trigger input, filtered
+  *         timer input or external trigger input) and the ) and the Slave 
+  *         mode (Disable, Reset, Gated, Trigger, External clock mode 1).
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchronization(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef * sSlaveConfig)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode));
+  assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger));
+
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  TIM_SlaveTimer_SetConfig(htim, sSlaveConfig);
+
+  /* Disable Trigger Interrupt */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER);
+
+  /* Disable Trigger DMA request */
+  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER);
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+    }
+
+/**
+  * @brief  Configures the TIM in Slave mode in interrupt mode
+  * @param  htim: TIM handle.
+  * @param  sSlaveConfig: pointer to a TIM_SlaveConfigTypeDef structure that
+  *         contains the selected trigger (internal trigger input, filtered
+  *         timer input or external trigger input) and the ) and the Slave 
+  *         mode (Disable, Reset, Gated, Trigger, External clock mode 1).
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchronization_IT(TIM_HandleTypeDef *htim,
+                                                        TIM_SlaveConfigTypeDef * sSlaveConfig)
+    {
+      /* Check the parameters */
+  assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode));
+  assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger));
+
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  TIM_SlaveTimer_SetConfig(htim, sSlaveConfig);
+
+  /* Enable Trigger Interrupt */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_TRIGGER);
+
+  /* Disable Trigger DMA request */
+  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER);
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Read the captured value from Capture Compare unit
+  * @param  htim : TIM handle.
+  * @param  Channel : TIM Channels to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1 : TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2 : TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3 : TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4 : TIM Channel 4 selected
+  * @retval Captured value
+  */
+uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  uint32_t tmpreg = 0;
+
+  __HAL_LOCK(htim);
+
+  switch (Channel)
+  {
+  case TIM_CHANNEL_1:
+    {
+      /* Check the parameters */
+      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+
+      /* Return the capture 1 value */
+      tmpreg =  htim->Instance->CCR1;
+
+      break;
+    }
+  case TIM_CHANNEL_2:
+    {
+      /* Check the parameters */
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+      /* Return the capture 2 value */
+      tmpreg =   htim->Instance->CCR2;
+
+      break;
+    }
+
+  case TIM_CHANNEL_3:
+    {
+      /* Check the parameters */
+      assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
+
+      /* Return the capture 3 value */
+      tmpreg =   htim->Instance->CCR3;
+
+      break;
+    }
+
+  case TIM_CHANNEL_4:
+    {
+      /* Check the parameters */
+      assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
+
+      /* Return the capture 4 value */
+      tmpreg =   htim->Instance->CCR4;
+
+      break;
+    }
+
+  default:
+    break;
+  }
+
+  __HAL_UNLOCK(htim);
+  return tmpreg;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions
+ *  @brief    TIM Callbacks functions 
+ *
+@verbatim 
+  ==============================================================================
+                        ##### TIM Callbacks functions #####
+  ==============================================================================
+ [..]
+   This section provides TIM callback functions:
+   (+) Timer Period elapsed callback
+   (+) Timer Output Compare callback
+   (+) Timer Input capture callback
+   (+) Timer Trigger callback
+   (+) Timer Error callback
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Period elapsed callback in non blocking mode 
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the __HAL_TIM_PeriodElapsedCallback could be implemented in the user file
+   */
+
+}
+/**
+  * @brief  Output Compare callback in non blocking mode 
+  * @param  htim : TIM OC handle
+  * @retval None
+  */
+__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the __HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file
+   */
+}
+/**
+  * @brief  Input Capture callback in non blocking mode 
+  * @param  htim : TIM IC handle
+  * @retval None
+  */
+__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the __HAL_TIM_IC_CaptureCallback could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  PWM Pulse finished callback in non blocking mode 
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the __HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Hall Trigger detection callback in non blocking mode 
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_TriggerCallback could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Timer error callback in non blocking mode 
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIM_ErrorCallback could be implemented in the user file
+   */
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIM_Exported_Functions_Group10 Peripheral State functions 
+ *  @brief   Peripheral State functions 
+ *
+@verbatim 
+  ==============================================================================
+                        ##### Peripheral State functions #####
+  ==============================================================================
+    [..]
+    This subsection permit to get in run-time the status of the peripheral 
+    and the data flow.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Return the TIM Base state
+  * @param  htim : TIM Base handle
+  * @retval HAL state
+  */
+HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim)
+{
+  return htim->State;
+}
+
+/**
+  * @brief  Return the TIM OC state
+  * @param  htim : TIM Ouput Compare handle
+  * @retval HAL state
+  */
+HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim)
+{
+  return htim->State;
+}
+
+/**
+  * @brief  Return the TIM PWM state
+  * @param  htim : TIM handle
+  * @retval HAL state
+  */
+HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim)
+{
+  return htim->State;
+}
+
+/**
+  * @brief  Return the TIM Input Capture state
+  * @param  htim : TIM IC handle
+  * @retval HAL state
+  */
+HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim)
+{
+  return htim->State;
+}
+
+/**
+  * @brief  Return the TIM One Pulse Mode state
+  * @param  htim : TIM OPM handle
+  * @retval HAL state
+  */
+HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim)
+{
+  return htim->State;
+}
+
+/**
+  * @brief  Return the TIM Encoder Mode state
+  * @param  htim : TIM Encoder handle
+  * @retval HAL state
+  */
+HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim)
+{
+  return htim->State;
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup TIM_Private_Functions
+  * @{
+  */
+
+/**
+  * @brief  TIM DMA error callback 
+  * @param  hdma : pointer to DMA handle.
+  * @retval None
+  */
+void TIM_DMAError(DMA_HandleTypeDef *hdma)
+{
+  TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+
+  htim->State= HAL_TIM_STATE_READY;
+
+  HAL_TIM_ErrorCallback(htim);
+}
+
+/**
+  * @brief  TIM DMA Delay Pulse complete callback.
+  * @param  hdma : pointer to DMA handle.
+  * @retval None
+  */
+void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma)
+{
+  TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+
+  htim->State= HAL_TIM_STATE_READY;
+
+  if (hdma == htim->hdma[TIM_DMA_ID_CC1])
+  {
+    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
+  }
+  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])
+  {
+    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
+  }
+  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])
+  {
+    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
+  }
+  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])
+  {
+    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
+  }
+
+  HAL_TIM_PWM_PulseFinishedCallback(htim);
+
+  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
+}
+/**
+  * @brief  TIM DMA Capture complete callback.
+  * @param  hdma : pointer to DMA handle.
+  * @retval None
+  */
+void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma)
+{
+  TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+
+  htim->State= HAL_TIM_STATE_READY;
+
+  if (hdma == htim->hdma[TIM_DMA_ID_CC1])
+  {
+    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
+  }
+  else if (hdma == htim->hdma[TIM_DMA_ID_CC2])
+  {
+    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
+  }
+  else if (hdma == htim->hdma[TIM_DMA_ID_CC3])
+  {
+    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
+  }
+  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])
+  {
+    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
+  }
+
+  HAL_TIM_IC_CaptureCallback(htim);
+
+  htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
+}
+
+/**
+  * @brief  TIM DMA Period Elapse complete callback.
+  * @param  hdma : pointer to DMA handle.
+  * @retval None
+  */
+static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma)
+{
+  TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+
+  htim->State= HAL_TIM_STATE_READY;
+
+  HAL_TIM_PeriodElapsedCallback(htim);
+}
+
+/**
+  * @brief  TIM DMA Trigger callback.
+  * @param  hdma : pointer to DMA handle.
+  * @retval None
+  */
+static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma)
+{
+  TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+
+  htim->State= HAL_TIM_STATE_READY;
+
+  HAL_TIM_TriggerCallback(htim);
+}
+
+/**
+  * @brief  Time Base configuration
+  * @param  TIMx : TIM periheral
+  * @param  Structure : TIM Base configuration structure
+  * @retval None
+  */
+void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
+{
+  uint32_t tmpcr1 = 0;
+  tmpcr1 = TIMx->CR1;
+
+  /* Set TIM Time Base Unit parameters ---------------------------------------*/
+  if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
+  {
+    /* Select the Counter Mode */
+    tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
+    tmpcr1 |= Structure->CounterMode;
+  }
+
+  if(IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
+  {
+    /* Set the clock division */
+    tmpcr1 &= ~TIM_CR1_CKD;
+    tmpcr1 |= (uint32_t)Structure->ClockDivision;
+  }
+
+  TIMx->CR1 = tmpcr1;
+
+  /* Set the Autoreload value */
+  TIMx->ARR = (uint32_t)Structure->Period ;
+
+  /* Set the Prescaler value */
+  TIMx->PSC = (uint32_t)Structure->Prescaler;
+
+  if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
+  {
+    /* Set the Repetition Counter value */
+    TIMx->RCR = Structure->RepetitionCounter;
+  }
+
+  /* Generate an update event to reload the Prescaler 
+     and the repetition counter(only for TIM1 and TIM8) value immediatly */
+  TIMx->EGR = TIM_EGR_UG;
+}
+
+/**
+  * @brief  Time Ouput Compare 1 configuration
+  * @param  TIMx to select the TIM peripheral
+  * @param  OC_Config : The ouput configuration structure
+  * @retval None
+  */
+static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
+{
+  uint32_t tmpccmrx = 0;
+  uint32_t tmpccer = 0;
+  uint32_t tmpcr2 = 0;
+
+   /* Disable the Channel 1: Reset the CC1E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC1E;
+
+  /* Get the TIMx CCER register value */
+  tmpccer = TIMx->CCER;
+  /* Get the TIMx CR2 register value */
+  tmpcr2 =  TIMx->CR2;
+
+  /* Get the TIMx CCMR1 register value */
+  tmpccmrx = TIMx->CCMR1;
+
+  /* Reset the Output Compare Mode Bits */
+  tmpccmrx &= ~TIM_CCMR1_OC1M;
+  tmpccmrx &= ~TIM_CCMR1_CC1S;
+  /* Select the Output Compare Mode */
+  tmpccmrx |= OC_Config->OCMode;
+
+  /* Reset the Output Polarity level */
+  tmpccer &= ~TIM_CCER_CC1P;
+  /* Set the Output Compare Polarity */
+  tmpccer |= OC_Config->OCPolarity;
+
+  if(IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1))
+  {
+    /* Check parameters */
+    assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));
+
+    /* Reset the Output N Polarity level */
+    tmpccer &= ~TIM_CCER_CC1NP;
+    /* Set the Output N Polarity */
+    tmpccer |= OC_Config->OCNPolarity;
+    /* Reset the Output N State */
+    tmpccer &= ~TIM_CCER_CC1NE;
+  }
+
+  if(IS_TIM_BREAK_INSTANCE(TIMx))
+  {
+    /* Check parameters */
+    assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));
+    assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));
+
+    /* Reset the Output Compare and Output Compare N IDLE State */
+    tmpcr2 &= ~TIM_CR2_OIS1;
+    tmpcr2 &= ~TIM_CR2_OIS1N;
+    /* Set the Output Idle state */
+    tmpcr2 |= OC_Config->OCIdleState;
+    /* Set the Output N Idle state */
+    tmpcr2 |= OC_Config->OCNIdleState;
+  }
+  /* Write to TIMx CR2 */
+  TIMx->CR2 = tmpcr2;
+
+  /* Write to TIMx CCMR1 */
+  TIMx->CCMR1 = tmpccmrx;
+
+  /* Set the Capture Compare Register value */
+  TIMx->CCR1 = OC_Config->Pulse;
+
+  /* Write to TIMx CCER */
+  TIMx->CCER = tmpccer;
+}
+
+/**
+  * @brief  Time Ouput Compare 2 configuration
+  * @param  TIMx  to select the TIM peripheral
+  * @param  OC_Config : The ouput configuration structure
+  * @retval None
+  */
+void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
+{
+  uint32_t tmpccmrx = 0;
+  uint32_t tmpccer = 0;
+  uint32_t tmpcr2 = 0;
+
+  /* Disable the Channel 2: Reset the CC2E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC2E;
+
+  /* Get the TIMx CCER register value */
+  tmpccer = TIMx->CCER;
+  /* Get the TIMx CR2 register value */
+  tmpcr2 =  TIMx->CR2;
+
+  /* Get the TIMx CCMR1 register value */
+  tmpccmrx = TIMx->CCMR1;
+
+  /* Reset the Output Compare mode and Capture/Compare selection Bits */
+  tmpccmrx &= ~TIM_CCMR1_OC2M;
+  tmpccmrx &= ~TIM_CCMR1_CC2S;
+
+  /* Select the Output Compare Mode */
+  tmpccmrx |= (OC_Config->OCMode << 8);
+
+  /* Reset the Output Polarity level */
+  tmpccer &= ~TIM_CCER_CC2P;
+  /* Set the Output Compare Polarity */
+  tmpccer |= (OC_Config->OCPolarity << 4);
+
+  if(IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2))
+  {
+    assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));
+
+    /* Reset the Output N Polarity level */
+    tmpccer &= ~TIM_CCER_CC2NP;
+    /* Set the Output N Polarity */
+    tmpccer |= (OC_Config->OCNPolarity << 4);
+    /* Reset the Output N State */
+    tmpccer &= ~TIM_CCER_CC2NE;
+
+  }
+
+  if(IS_TIM_BREAK_INSTANCE(TIMx))
+  {
+    /* Check parameters */
+    assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));
+    assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));
+
+    /* Reset the Output Compare and Output Compare N IDLE State */
+    tmpcr2 &= ~TIM_CR2_OIS2;
+    tmpcr2 &= ~TIM_CR2_OIS2N;
+    /* Set the Output Idle state */
+    tmpcr2 |= (OC_Config->OCIdleState << 2);
+    /* Set the Output N Idle state */
+    tmpcr2 |= (OC_Config->OCNIdleState << 2);
+  }
+
+  /* Write to TIMx CR2 */
+  TIMx->CR2 = tmpcr2;
+
+  /* Write to TIMx CCMR1 */
+  TIMx->CCMR1 = tmpccmrx;
+
+  /* Set the Capture Compare Register value */
+  TIMx->CCR2 = OC_Config->Pulse;
+
+  /* Write to TIMx CCER */
+  TIMx->CCER = tmpccer;
+}
+
+/**
+  * @brief  Time Ouput Compare 3 configuration
+  * @param  TIMx  to select the TIM peripheral
+  * @param  OC_Config : The ouput configuration structure
+  * @retval None
+  */
+static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
+{
+  uint32_t tmpccmrx = 0;
+  uint32_t tmpccer = 0;
+  uint32_t tmpcr2 = 0;
+
+  /* Disable the Channel 3: Reset the CC2E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC3E;
+
+  /* Get the TIMx CCER register value */
+  tmpccer = TIMx->CCER;
+  /* Get the TIMx CR2 register value */
+  tmpcr2 =  TIMx->CR2;
+
+  /* Get the TIMx CCMR2 register value */
+  tmpccmrx = TIMx->CCMR2;
+
+  /* Reset the Output Compare mode and Capture/Compare selection Bits */
+  tmpccmrx &= ~TIM_CCMR2_OC3M;
+  tmpccmrx &= ~TIM_CCMR2_CC3S;
+  /* Select the Output Compare Mode */
+  tmpccmrx |= OC_Config->OCMode;
+
+  /* Reset the Output Polarity level */
+  tmpccer &= ~TIM_CCER_CC3P;
+  /* Set the Output Compare Polarity */
+  tmpccer |= (OC_Config->OCPolarity << 8);
+
+  if(IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3))
+  {
+    assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity));
+
+    /* Reset the Output N Polarity level */
+    tmpccer &= ~TIM_CCER_CC3NP;
+    /* Set the Output N Polarity */
+    tmpccer |= (OC_Config->OCNPolarity << 8);
+    /* Reset the Output N State */
+    tmpccer &= ~TIM_CCER_CC3NE;
+  }
+
+  if(IS_TIM_BREAK_INSTANCE(TIMx))
+  {
+    /* Check parameters */
+    assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState));
+    assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));
+
+    /* Reset the Output Compare and Output Compare N IDLE State */
+    tmpcr2 &= ~TIM_CR2_OIS3;
+    tmpcr2 &= ~TIM_CR2_OIS3N;
+    /* Set the Output Idle state */
+    tmpcr2 |= (OC_Config->OCIdleState << 4);
+    /* Set the Output N Idle state */
+    tmpcr2 |= (OC_Config->OCNIdleState << 4);
+  }
+
+  /* Write to TIMx CR2 */
+  TIMx->CR2 = tmpcr2;
+
+  /* Write to TIMx CCMR2 */
+  TIMx->CCMR2 = tmpccmrx;
+
+  /* Set the Capture Compare Register value */
+  TIMx->CCR3 = OC_Config->Pulse;
+
+  /* Write to TIMx CCER */
+  TIMx->CCER = tmpccer;
+}
+
+/**
+  * @brief  Time Ouput Compare 4 configuration
+  * @param  TIMx  to select the TIM peripheral
+  * @param  OC_Config : The ouput configuration structure
+  * @retval None
+  */
+static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
+{
+  uint32_t tmpccmrx = 0;
+  uint32_t tmpccer = 0;
+  uint32_t tmpcr2 = 0;
+
+  /* Disable the Channel 4: Reset the CC4E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC4E;
+
+  /* Get the TIMx CCER register value */
+  tmpccer = TIMx->CCER;
+  /* Get the TIMx CR2 register value */
+  tmpcr2 =  TIMx->CR2;
+
+  /* Get the TIMx CCMR2 register value */
+  tmpccmrx = TIMx->CCMR2;
+
+  /* Reset the Output Compare mode and Capture/Compare selection Bits */
+  tmpccmrx &= ~TIM_CCMR2_OC4M;
+  tmpccmrx &= ~TIM_CCMR2_CC4S;
+
+  /* Select the Output Compare Mode */
+  tmpccmrx |= (OC_Config->OCMode << 8);
+
+  /* Reset the Output Polarity level */
+  tmpccer &= ~TIM_CCER_CC4P;
+  /* Set the Output Compare Polarity */
+  tmpccer |= (OC_Config->OCPolarity << 12);
+
+  if(IS_TIM_BREAK_INSTANCE(TIMx))
+  {
+    assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState));
+
+   /* Reset the Output Compare IDLE State */
+    tmpcr2 &= ~TIM_CR2_OIS4;
+    /* Set the Output Idle state */
+    tmpcr2 |= (OC_Config->OCIdleState << 6);
+  }
+
+  /* Write to TIMx CR2 */
+  TIMx->CR2 = tmpcr2;
+
+  /* Write to TIMx CCMR2 */
+  TIMx->CCMR2 = tmpccmrx;
+
+  /* Set the Capture Compare Register value */
+  TIMx->CCR4 = OC_Config->Pulse;
+
+  /* Write to TIMx CCER */
+  TIMx->CCER = tmpccer;
+}
+
+
+/**
+  * @brief  Time Slave configuration
+  * @param  htim: pointer to a TIM_HandleTypeDef structure that contains
+  *                the configuration information for TIM module.
+  * @param  sSlaveConfig: The slave configuration structure
+  * @retval None
+  */
+static void TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
+                              TIM_SlaveConfigTypeDef * sSlaveConfig)
+{
+  uint32_t tmpsmcr = 0;
+  uint32_t tmpccmr1 = 0;
+  uint32_t tmpccer = 0;
+
+  /* Get the TIMx SMCR register value */
+  tmpsmcr = htim->Instance->SMCR;
+
+  /* Reset the Trigger Selection Bits */
+  tmpsmcr &= ~TIM_SMCR_TS;
+  /* Set the Input Trigger source */
+  tmpsmcr |= sSlaveConfig->InputTrigger;
+
+  /* Reset the slave mode Bits */
+  tmpsmcr &= ~TIM_SMCR_SMS;
+  /* Set the slave mode */
+  tmpsmcr |= sSlaveConfig->SlaveMode;
+
+  /* Write to TIMx SMCR */
+  htim->Instance->SMCR = tmpsmcr;
+
+  /* Configure the trigger prescaler, filter, and polarity */
+  switch (sSlaveConfig->InputTrigger)
+  {
+  case TIM_TS_ETRF:
+    {
+      /* Check the parameters */
+      assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance));
+      assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler));
+      assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));
+      assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));
+      /* Configure the ETR Trigger source */
+      TIM_ETR_SetConfig(htim->Instance,
+                        sSlaveConfig->TriggerPrescaler,
+                        sSlaveConfig->TriggerPolarity,
+                        sSlaveConfig->TriggerFilter);
+    }
+    break;
+
+  case TIM_TS_TI1F_ED:
+    {
+      /* Check the parameters */
+      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+      assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));
+
+      /* Disable the Channel 1: Reset the CC1E Bit */
+      tmpccer = htim->Instance->CCER;
+      htim->Instance->CCER &= ~TIM_CCER_CC1E;
+      tmpccmr1 = htim->Instance->CCMR1;
+
+      /* Set the filter */
+      tmpccmr1 &= ~TIM_CCMR1_IC1F;
+      tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4);
+
+      /* Write to TIMx CCMR1 and CCER registers */
+      htim->Instance->CCMR1 = tmpccmr1;
+      htim->Instance->CCER = tmpccer;
+
+    }
+    break;
+
+  case TIM_TS_TI1FP1:
+    {
+      /* Check the parameters */
+      assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+      assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));
+      assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));
+
+      /* Configure TI1 Filter and Polarity */
+      TIM_TI1_ConfigInputStage(htim->Instance,
+                               sSlaveConfig->TriggerPolarity,
+                               sSlaveConfig->TriggerFilter);
+    }
+    break;
+
+  case TIM_TS_TI2FP2:
+    {
+      /* Check the parameters */
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+      assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));
+      assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));
+
+      /* Configure TI2 Filter and Polarity */
+      TIM_TI2_ConfigInputStage(htim->Instance,
+                                sSlaveConfig->TriggerPolarity,
+                                sSlaveConfig->TriggerFilter);
+    }
+    break;
+
+  case TIM_TS_ITR0:
+    {
+      /* Check the parameter */
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+    }
+    break;
+
+  case TIM_TS_ITR1:
+    {
+      /* Check the parameter */
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+    }
+    break;
+
+  case TIM_TS_ITR2:
+    {
+      /* Check the parameter */
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+    }
+    break;
+
+  case TIM_TS_ITR3:
+    {
+      /* Check the parameter */
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+    }
+    break;
+
+  default:
+    break;
+  }
+}
+
+/**
+  * @brief  Configure the TI1 as Input.
+  * @param  TIMx  to select the TIM peripheral.
+  * @param  TIM_ICPolarity : The Input Polarity.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICPOLARITY_RISING
+  *            @arg TIM_ICPOLARITY_FALLING
+  *            @arg TIM_ICPOLARITY_BOTHEDGE
+  * @param  TIM_ICSelection : specifies the input to be used.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICSELECTION_DIRECTTI:    TIM Input 1 is selected to be connected to IC1.
+  *            @arg TIM_ICSELECTION_INDIRECTTI:  TIM Input 1 is selected to be connected to IC2.
+  *            @arg TIM_ICSELECTION_TRC:         TIM Input 1 is selected to be connected to TRC.
+  * @param  TIM_ICFilter : Specifies the Input Capture Filter.
+  *          This parameter must be a value between 0x00 and 0x0F.
+  * @retval None
+  * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI2FP1 
+  *       (on channel2 path) is used as the input signal. Therefore CCMR1 must be 
+  *        protected against un-initialized filter and polarity values.
+  */
+void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
+                       uint32_t TIM_ICFilter)
+{
+  uint32_t tmpccmr1 = 0;
+  uint32_t tmpccer = 0;
+
+  /* Disable the Channel 1: Reset the CC1E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC1E;
+  tmpccmr1 = TIMx->CCMR1;
+  tmpccer = TIMx->CCER;
+
+  /* Select the Input */
+  if(IS_TIM_CC2_INSTANCE(TIMx) != RESET)
+  {
+    tmpccmr1 &= ~TIM_CCMR1_CC1S;
+    tmpccmr1 |= TIM_ICSelection;
+  }
+  else
+  {
+    tmpccmr1 |= TIM_CCMR1_CC1S_0;
+  }
+
+  /* Set the filter */
+  tmpccmr1 &= ~TIM_CCMR1_IC1F;
+  tmpccmr1 |= ((TIM_ICFilter << 4) & TIM_CCMR1_IC1F);
+
+  /* Select the Polarity and set the CC1E Bit */
+  tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);
+  tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP));
+
+  /* Write to TIMx CCMR1 and CCER registers */
+  TIMx->CCMR1 = tmpccmr1;
+  TIMx->CCER = tmpccer;
+}
+
+/**
+  * @brief  Configure the Polarity and Filter for TI1.
+  * @param  TIMx  to select the TIM peripheral.
+  * @param  TIM_ICPolarity : The Input Polarity.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICPOLARITY_RISING   
+  *            @arg TIM_ICPOLARITY_FALLING  
+  *            @arg TIM_ICPOLARITY_BOTHEDGE 
+  * @param  TIM_ICFilter : Specifies the Input Capture Filter.
+  *          This parameter must be a value between 0x00 and 0x0F.
+  * @retval None
+  */
+static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)
+{
+  uint32_t tmpccmr1 = 0;
+  uint32_t tmpccer = 0;
+
+  /* Disable the Channel 1: Reset the CC1E Bit */
+  tmpccer = TIMx->CCER;
+  TIMx->CCER &= ~TIM_CCER_CC1E;
+  tmpccmr1 = TIMx->CCMR1;
+
+  /* Set the filter */
+  tmpccmr1 &= ~TIM_CCMR1_IC1F;
+  tmpccmr1 |= (TIM_ICFilter << 4);
+
+  /* Select the Polarity and set the CC1E Bit */
+  tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);
+  tmpccer |= TIM_ICPolarity;
+
+  /* Write to TIMx CCMR1 and CCER registers */
+  TIMx->CCMR1 = tmpccmr1;
+  TIMx->CCER = tmpccer;
+}
+
+/**
+  * @brief  Configure the TI2 as Input.
+  * @param  TIMx  to select the TIM peripheral
+  * @param  TIM_ICPolarity : The Input Polarity.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICPOLARITY_RISING   
+  *            @arg TIM_ICPOLARITY_FALLING  
+  *            @arg TIM_ICPOLARITY_BOTHEDGE 
+  * @param  TIM_ICSelection : specifies the input to be used.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICSELECTION_DIRECTTI:   TIM Input 2 is selected to be connected to IC2.
+  *            @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 2 is selected to be connected to IC1.
+  *            @arg TIM_ICSELECTION_TRC:        TIM Input 2 is selected to be connected to TRC.
+  * @param  TIM_ICFilter : Specifies the Input Capture Filter.
+  *          This parameter must be a value between 0x00 and 0x0F.
+  * @retval None
+  * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI1FP2 
+  *       (on channel1 path) is used as the input signal. Therefore CCMR1 must be 
+  *        protected against un-initialized filter and polarity values.
+  */
+static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
+                       uint32_t TIM_ICFilter)
+{
+  uint32_t tmpccmr1 = 0;
+  uint32_t tmpccer = 0;
+
+  /* Disable the Channel 2: Reset the CC2E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC2E;
+  tmpccmr1 = TIMx->CCMR1;
+  tmpccer = TIMx->CCER;
+
+  /* Select the Input */
+  tmpccmr1 &= ~TIM_CCMR1_CC2S;
+  tmpccmr1 |= (TIM_ICSelection << 8);
+
+  /* Set the filter */
+  tmpccmr1 &= ~TIM_CCMR1_IC2F;
+  tmpccmr1 |= ((TIM_ICFilter << 12) & TIM_CCMR1_IC2F);
+
+  /* Select the Polarity and set the CC2E Bit */
+  tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);
+  tmpccer |= ((TIM_ICPolarity << 4) & (TIM_CCER_CC2P | TIM_CCER_CC2NP));
+
+  /* Write to TIMx CCMR1 and CCER registers */
+  TIMx->CCMR1 = tmpccmr1 ;
+  TIMx->CCER = tmpccer;
+}
+
+/**
+  * @brief  Configure the Polarity and Filter for TI2.
+  * @param  TIMx  to select the TIM peripheral.
+  * @param  TIM_ICPolarity : The Input Polarity.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICPOLARITY_RISING  
+  *            @arg TIM_ICPOLARITY_FALLING 
+  *            @arg TIM_ICPOLARITY_BOTHEDGE
+  * @param  TIM_ICFilter : Specifies the Input Capture Filter.
+  *          This parameter must be a value between 0x00 and 0x0F.
+  * @retval None
+  */
+static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)
+{
+  uint32_t tmpccmr1 = 0;
+  uint32_t tmpccer = 0;
+
+  /* Disable the Channel 2: Reset the CC2E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC2E;
+  tmpccmr1 = TIMx->CCMR1;
+  tmpccer = TIMx->CCER;
+
+  /* Set the filter */
+  tmpccmr1 &= ~TIM_CCMR1_IC2F;
+  tmpccmr1 |= (TIM_ICFilter << 12);
+
+  /* Select the Polarity and set the CC2E Bit */
+  tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);
+  tmpccer |= (TIM_ICPolarity << 4);
+
+  /* Write to TIMx CCMR1 and CCER registers */
+  TIMx->CCMR1 = tmpccmr1 ;
+  TIMx->CCER = tmpccer;
+}
+
+/**
+  * @brief  Configure the TI3 as Input.
+  * @param  TIMx  to select the TIM peripheral
+  * @param  TIM_ICPolarity : The Input Polarity.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICPOLARITY_RISING  
+  *            @arg TIM_ICPOLARITY_FALLING 
+  *            @arg TIM_ICPOLARITY_BOTHEDGE
+  * @param  TIM_ICSelection : specifies the input to be used.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICSELECTION_DIRECTTI:   TIM Input 3 is selected to be connected to IC3.
+  *            @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 3 is selected to be connected to IC4.
+  *            @arg TIM_ICSELECTION_TRC:        TIM Input 3 is selected to be connected to TRC.
+  * @param  TIM_ICFilter : Specifies the Input Capture Filter.
+  *          This parameter must be a value between 0x00 and 0x0F.
+  * @retval None
+  * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI3FP4 
+  *       (on channel1 path) is used as the input signal. Therefore CCMR2 must be 
+  *        protected against un-initialized filter and polarity values.
+  */
+static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
+                       uint32_t TIM_ICFilter)
+{
+  uint32_t tmpccmr2 = 0;
+  uint32_t tmpccer = 0;
+
+  /* Disable the Channel 3: Reset the CC3E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC3E;
+  tmpccmr2 = TIMx->CCMR2;
+  tmpccer = TIMx->CCER;
+
+  /* Select the Input */
+  tmpccmr2 &= ~TIM_CCMR2_CC3S;
+  tmpccmr2 |= TIM_ICSelection;
+
+  /* Set the filter */
+  tmpccmr2 &= ~TIM_CCMR2_IC3F;
+  tmpccmr2 |= ((TIM_ICFilter << 4) & TIM_CCMR2_IC3F);
+
+  /* Select the Polarity and set the CC3E Bit */
+  tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP);
+  tmpccer |= ((TIM_ICPolarity << 8) & (TIM_CCER_CC3P | TIM_CCER_CC3NP));
+
+  /* Write to TIMx CCMR2 and CCER registers */
+  TIMx->CCMR2 = tmpccmr2;
+  TIMx->CCER = tmpccer;
+}
+
+/**
+  * @brief  Configure the TI4 as Input.
+  * @param  TIMx to select the TIM peripheral
+  * @param  TIM_ICPolarity : The Input Polarity.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICPOLARITY_RISING  
+  *            @arg TIM_ICPOLARITY_FALLING 
+  *            @arg TIM_ICPOLARITY_BOTHEDGE
+  * @param  TIM_ICSelection : specifies the input to be used.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ICSELECTION_DIRECTTI:   TIM Input 4 is selected to be connected to IC4.
+  *            @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 4 is selected to be connected to IC3.
+  *            @arg TIM_ICSELECTION_TRC:        TIM Input 4 is selected to be connected to TRC.
+  * @param  TIM_ICFilter : Specifies the Input Capture Filter.
+  *          This parameter must be a value between 0x00 and 0x0F.
+  * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI4FP3 
+  *       (on channel1 path) is used as the input signal. Therefore CCMR2 must be 
+  *        protected against un-initialized filter and polarity values.
+  * @retval None
+  */
+static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
+                       uint32_t TIM_ICFilter)
+{
+  uint32_t tmpccmr2 = 0;
+  uint32_t tmpccer = 0;
+
+  /* Disable the Channel 4: Reset the CC4E Bit */
+  TIMx->CCER &= ~TIM_CCER_CC4E;
+  tmpccmr2 = TIMx->CCMR2;
+  tmpccer = TIMx->CCER;
+
+  /* Select the Input */
+  tmpccmr2 &= ~TIM_CCMR2_CC4S;
+  tmpccmr2 |= (TIM_ICSelection << 8);
+
+  /* Set the filter */
+  tmpccmr2 &= ~TIM_CCMR2_IC4F;
+  tmpccmr2 |= ((TIM_ICFilter << 12) & TIM_CCMR2_IC4F);
+
+  /* Select the Polarity and set the CC4E Bit */
+  tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP);
+  tmpccer |= ((TIM_ICPolarity << 12) & (TIM_CCER_CC4P | TIM_CCER_CC4NP));
+
+  /* Write to TIMx CCMR2 and CCER registers */
+  TIMx->CCMR2 = tmpccmr2;
+  TIMx->CCER = tmpccer ;
+}
+
+/**
+  * @brief  Selects the Input Trigger source
+  * @param  TIMx  to select the TIM peripheral
+  * @param  InputTriggerSource : The Input Trigger source.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_TS_ITR0 : Internal Trigger 0
+  *            @arg TIM_TS_ITR1 : Internal Trigger 1
+  *            @arg TIM_TS_ITR2 : Internal Trigger 2
+  *            @arg TIM_TS_ITR3 : Internal Trigger 3
+  *            @arg TIM_TS_TI1F_ED : TI1 Edge Detector
+  *            @arg TIM_TS_TI1FP1 : Filtered Timer Input 1
+  *            @arg TIM_TS_TI2FP2 : Filtered Timer Input 2
+  *            @arg TIM_TS_ETRF : External Trigger input
+  * @retval None
+  */
+static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint16_t InputTriggerSource)
+{
+  uint32_t tmpsmcr = 0;
+
+   /* Get the TIMx SMCR register value */
+   tmpsmcr = TIMx->SMCR;
+   /* Reset the TS Bits */
+   tmpsmcr &= ~TIM_SMCR_TS;
+   /* Set the Input Trigger source and the slave mode*/
+   tmpsmcr |= InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1;
+   /* Write to TIMx SMCR */
+   TIMx->SMCR = tmpsmcr;
+}
+/**
+  * @brief  Configures the TIMx External Trigger (ETR).
+  * @param  TIMx  to select the TIM peripheral
+  * @param  TIM_ExtTRGPrescaler : The external Trigger Prescaler.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ETRPRESCALER_DIV1: ETRP Prescaler OFF.
+  *            @arg TIM_ETRPRESCALER_DIV2: ETRP frequency divided by 2.
+  *            @arg TIM_ETRPRESCALER_DIV4: ETRP frequency divided by 4.
+  *            @arg TIM_ETRPRESCALER_DIV8: ETRP frequency divided by 8.
+  * @param  TIM_ExtTRGPolarity : The external Trigger Polarity.
+  *          This parameter can be one of the following values:
+  *            @arg TIM_ETRPOLARITY_INVERTED: active low or falling edge active.
+  *            @arg TIM_ETRPOLARITY_NONINVERTED: active high or rising edge active.
+  * @param  ExtTRGFilter : External Trigger Filter.
+  *          This parameter must be a value between 0x00 and 0x0F
+  * @retval None
+  */
+static void TIM_ETR_SetConfig(TIM_TypeDef* TIMx, uint32_t TIM_ExtTRGPrescaler,
+                       uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter)
+{
+  uint32_t tmpsmcr = 0;
+
+  tmpsmcr = TIMx->SMCR;
+
+  /* Reset the ETR Bits */
+  tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
+
+  /* Set the Prescaler, the Filter value and the Polarity */
+  tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8)));
+
+  /* Write to TIMx SMCR */
+  TIMx->SMCR = tmpsmcr;
+}
+
+/**
+  * @brief  Enables or disables the TIM Capture Compare Channel x.
+  * @param  TIMx  to select the TIM peripheral
+  * @param  Channel : specifies the TIM Channel
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1
+  *            @arg TIM_CHANNEL_2: TIM Channel 2
+  *            @arg TIM_CHANNEL_3: TIM Channel 3
+  *            @arg TIM_CHANNEL_4: TIM Channel 4
+  * @param  ChannelState : specifies the TIM Channel CCxE bit new state.
+  *          This parameter can be: TIM_CCx_ENABLE or TIM_CCx_Disable.
+  * @retval None
+  */
+void TIM_CCxChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelState)
+{
+  uint32_t tmp = 0;
+
+  /* Check the parameters */
+  assert_param(IS_TIM_CC1_INSTANCE(TIMx));
+  assert_param(IS_TIM_CHANNELS(Channel));
+
+  tmp = TIM_CCER_CC1E << Channel;
+
+  /* Reset the CCxE Bit */
+  TIMx->CCER &= ~tmp;
+
+  /* Set or reset the CCxE Bit */
+  TIMx->CCER |=  (uint32_t)(ChannelState << Channel);
+}
+
+/**
+  * @}
+  */
+
+#endif /* HAL_TIM_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,1857 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_tim_ex.c
+  * @author  MCD Application Team
+  * @version V1.0.4
+  * @date    29-April-2016
+  * @brief   TIM HAL module driver.
+  *          This file provides firmware functions to manage the following
+  *          functionalities of the Timer Extended peripheral:
+  *           + Time Hall Sensor Interface Initialization
+  *           + Time Hall Sensor Interface Start
+  *           + Time Complementary signal bread and dead time configuration
+  *           + Time Master and Slave synchronization configuration
+  *           + Timer remapping capabilities configuration
+  @verbatim
+  ==============================================================================
+                      ##### TIMER Extended features #####
+  ==============================================================================
+  [..]
+    The Timer Extended features include:
+    (#) Complementary outputs with programmable dead-time for :
+        (++) Output Compare
+        (++) PWM generation (Edge and Center-aligned Mode)
+        (++) One-pulse mode output
+    (#) Synchronization circuit to control the timer with external signals and to
+        interconnect several timers together.
+    (#) Break input to put the timer output signals in reset state or in a known state.
+    (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for
+        positioning purposes
+
+            ##### How to use this driver #####
+  ==============================================================================
+    [..]
+     (#) Initialize the TIM low level resources by implementing the following functions
+         depending from feature used :
+           (++) Complementary Output Compare : HAL_TIM_OC_MspInit()
+           (++) Complementary PWM generation : HAL_TIM_PWM_MspInit()
+           (++) Complementary One-pulse mode output : HAL_TIM_OnePulse_MspInit()
+           (++) Hall Sensor output : HAL_TIMEx_HallSensor_MspInit()
+
+     (#) Initialize the TIM low level resources :
+        (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE();
+        (##) TIM pins configuration
+            (+++) Enable the clock for the TIM GPIOs using the following function:
+              __HAL_RCC_GPIOx_CLK_ENABLE();
+            (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();
+
+     (#) The external Clock can be configured, if needed (the default clock is the
+         internal clock from the APBx), using the following function:
+         HAL_TIM_ConfigClockSource, the clock configuration should be done before
+         any start function.
+
+     (#) Configure the TIM in the desired functioning mode using one of the
+         initialization function of this driver:
+          (++) HAL_TIMEx_HallSensor_Init and HAL_TIMEx_ConfigCommutationEvent: to use the
+              Timer Hall Sensor Interface and the commutation event with the corresponding
+              Interrupt and DMA request if needed (Note that One Timer is used to interface
+             with the Hall sensor Interface and another Timer should be used to use
+             the commutation event).
+
+     (#) Activate the TIM peripheral using one of the start functions:
+           (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(), HAL_TIMEx_OCN_Start_IT()
+           (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(), HAL_TIMEx_PWMN_Start_IT()
+           (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePulseN_Start_IT()
+           (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(), HAL_TIMEx_HallSensor_Start_IT().
+
+
+  @endverbatim
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+*/
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/** @addtogroup STM32F1xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup TIMEx TIMEx
+  * @brief TIM Extended HAL module driver
+  * @{
+  */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+/** @defgroup TIMEx_Private_Functions TIMEx Private Functions
+  * @{
+  */
+static void TIM_CCxNChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelNState);
+/**
+  * @}
+  */
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+/* Exported functions ---------------------------------------------------------*/
+
+/** @defgroup TIMEx_Exported_Functions TIMEx Exported Functions
+  * @{
+  */
+
+
+/** @defgroup TIMEx_Exported_Functions_Group1 Timer Hall Sensor functions
+ *  @brief    Timer Hall Sensor functions
+ *
+@verbatim
+  ==============================================================================
+                      ##### Timer Hall Sensor functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Initialize and configure TIM HAL Sensor.
+    (+) De-initialize TIM HAL Sensor.
+    (+) Start the Hall Sensor Interface.
+    (+) Stop the Hall Sensor Interface.
+    (+) Start the Hall Sensor Interface and enable interrupts.
+    (+) Stop the Hall Sensor Interface and disable interrupts.
+    (+) Start the Hall Sensor Interface and enable DMA transfers.
+    (+) Stop the Hall Sensor Interface and disable DMA transfers.
+
+@endverbatim
+  * @{
+  */
+/**
+  * @brief  Initializes the TIM Hall Sensor Interface and create the associated handle.
+  * @param  htim : TIM Encoder Interface handle
+  * @param  sConfig : TIM Hall Sensor configuration structure
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef* sConfig)
+{
+  TIM_OC_InitTypeDef OC_Config;
+
+  /* Check the TIM handle allocation */
+  if(htim == NULL)
+  {
+    return HAL_ERROR;
+  }
+
+  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
+  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+  assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
+  assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
+  assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
+
+  if(htim->State == HAL_TIM_STATE_RESET)
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+    
+    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
+    HAL_TIMEx_HallSensor_MspInit(htim);
+  }
+
+  /* Set the TIM state */
+  htim->State= HAL_TIM_STATE_BUSY;
+
+  /* Configure the Time base in the Encoder Mode */
+  TIM_Base_SetConfig(htim->Instance, &htim->Init);
+
+  /* Configure the Channel 1 as Input Channel to interface with the three Outputs of the  Hall sensor */
+  TIM_TI1_SetConfig(htim->Instance, sConfig->IC1Polarity, TIM_ICSELECTION_TRC, sConfig->IC1Filter);
+
+  /* Reset the IC1PSC Bits */
+  htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
+  /* Set the IC1PSC value */
+  htim->Instance->CCMR1 |= sConfig->IC1Prescaler;
+
+  /* Enable the Hall sensor interface (XOR function of the three inputs) */
+  htim->Instance->CR2 |= TIM_CR2_TI1S;
+
+  /* Select the TIM_TS_TI1F_ED signal as Input trigger for the TIM */
+  htim->Instance->SMCR &= ~TIM_SMCR_TS;
+  htim->Instance->SMCR |= TIM_TS_TI1F_ED;
+
+  /* Use the TIM_TS_TI1F_ED signal to reset the TIM counter each edge detection */
+  htim->Instance->SMCR &= ~TIM_SMCR_SMS;
+  htim->Instance->SMCR |= TIM_SLAVEMODE_RESET;
+
+  /* Program channel 2 in PWM 2 mode with the desired Commutation_Delay*/
+  OC_Config.OCFastMode = TIM_OCFAST_DISABLE;
+  OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET;
+  OC_Config.OCMode = TIM_OCMODE_PWM2;
+  OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET;
+  OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH;
+  OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH;
+  OC_Config.Pulse = sConfig->Commutation_Delay;
+
+  TIM_OC2_SetConfig(htim->Instance, &OC_Config);
+
+  /* Select OC2REF as trigger output on TRGO: write the MMS bits in the TIMx_CR2
+    register to 101 */
+  htim->Instance->CR2 &= ~TIM_CR2_MMS;
+  htim->Instance->CR2 |= TIM_TRGO_OC2REF;
+
+  /* Initialize the TIM state*/
+  htim->State= HAL_TIM_STATE_READY;
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  DeInitializes the TIM Hall Sensor interface
+  * @param  htim : TIM Hall Sensor handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Disable the TIM Peripheral Clock */
+  __HAL_TIM_DISABLE(htim);
+
+  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
+  HAL_TIMEx_HallSensor_MspDeInit(htim);
+
+  /* Change TIM state */
+  htim->State = HAL_TIM_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the TIM Hall Sensor MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIMEx_HallSensor_MspInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  DeInitializes TIM Hall Sensor MSP.
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIMEx_HallSensor_MspDeInit could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Starts the TIM Hall Sensor Interface.
+  * @param  htim : TIM Hall Sensor handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
+
+  /* Enable the Input Capture channel 1
+    (in the Hall Sensor Interface the 3 possible channels that are used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Hall sensor Interface.
+  * @param  htim : TIM Hall Sensor handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
+
+  /* Disable the Input Capture channel 1
+    (in the Hall Sensor Interface the 3 possible channels that are used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Hall Sensor Interface in interrupt mode.
+  * @param  htim : TIM Hall Sensor handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
+
+  /* Enable the capture compare Interrupts 1 event */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+
+  /* Enable the Input Capture channel 1
+    (in the Hall Sensor Interface the 3 possible channels that are used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Hall Sensor Interface in interrupt mode.
+  * @param  htim : TIM handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
+
+  /* Disable the Input Capture channel 1
+    (in the Hall Sensor Interface the 3 possible channels that are used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+
+  /* Disable the capture compare Interrupts event */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Hall Sensor Interface in DMA mode.
+  * @param  htim : TIM Hall Sensor handle
+  * @param  pData : The destination Buffer address.
+  * @param  Length : The length of data to be transferred from TIM peripheral to memory.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
+
+   if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if(((uint32_t)pData == 0 ) && (Length > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+  /* Enable the Input Capture channel 1
+    (in the Hall Sensor Interface the 3 possible channels that are used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+
+  /* Set the DMA Input Capture 1 Callback */
+  htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
+  /* Set the DMA error callback */
+  htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+  /* Enable the DMA channel for Capture 1*/
+  HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length);
+
+  /* Enable the capture compare 1 Interrupt */
+  __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Hall Sensor Interface in DMA mode.
+  * @param  htim : TIM handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
+
+  /* Disable the Input Capture channel 1
+    (in the Hall Sensor Interface the 3 possible channels that are used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
+
+
+  /* Disable the capture compare Interrupts 1 event */
+  __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+
+/** @defgroup TIMEx_Exported_Functions_Group2 Timer Complementary Output Compare functions
+ *  @brief    Timer Complementary Output Compare functions
+ *
+@verbatim
+  ==============================================================================
+              ##### Timer Complementary Output Compare functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Start the Complementary Output Compare/PWM.
+    (+) Stop the Complementary Output Compare/PWM.
+    (+) Start the Complementary Output Compare/PWM and enable interrupts.
+    (+) Stop the Complementary Output Compare/PWM and disable interrupts.
+    (+) Start the Complementary Output Compare/PWM and enable DMA transfers.
+    (+) Stop the Complementary Output Compare/PWM and disable DMA transfers.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Starts the TIM Output Compare signal generation on the complementary
+  *         output.
+  * @param  htim : TIM Output Compare handle
+  * @param  Channel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  /* Enable the Capture compare channel N */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+  /* Enable the Main Ouput */
+  __HAL_TIM_MOE_ENABLE(htim);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Output Compare signal generation on the complementary
+  *         output.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  /* Disable the Capture compare channel N */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+
+  /* Disable the Main Ouput */
+  __HAL_TIM_MOE_DISABLE(htim);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Output Compare signal generation in interrupt mode
+  *         on the complementary output.
+  * @param  htim : TIM OC handle
+  * @param  Channel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Enable the TIM Output Compare interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Enable the TIM Output Compare interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Enable the TIM Output Compare interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Enable the TIM Output Compare interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the TIM Break interrupt */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
+
+  /* Enable the Capture compare channel N */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+  /* Enable the Main Ouput */
+  __HAL_TIM_MOE_ENABLE(htim);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Output Compare signal generation in interrupt mode
+  *         on the complementary output.
+  * @param  htim : TIM Output Compare handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  uint32_t tmpccer = 0;
+
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Output Compare interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Output Compare interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Output Compare interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Output Compare interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the Capture compare channel N */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+
+  /* Disable the TIM Break interrupt (only if no more channel is active) */
+  tmpccer = htim->Instance->CCER;
+  if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == RESET)
+  {
+    __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
+  }
+
+  /* Disable the Main Ouput */
+  __HAL_TIM_MOE_DISABLE(htim);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM Output Compare signal generation in DMA mode
+  *         on the complementary output.
+  * @param  htim : TIM Output Compare handle
+  * @param  Channel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @param  pData : The source Buffer address.
+  * @param  Length : The length of data to be transferred from memory to TIM peripheral
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if(((uint32_t)pData == 0 ) && (Length > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
+
+      /* Enable the TIM Output Compare DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
+
+      /* Enable the TIM Output Compare DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+{
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
+
+      /* Enable the TIM Output Compare DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+     /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
+
+      /* Enable the TIM Output Compare DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the Capture compare channel N */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+  /* Enable the Main Ouput */
+  __HAL_TIM_MOE_ENABLE(htim);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM Output Compare signal generation in DMA mode
+  *         on the complementary output.
+  * @param  htim : TIM Output Compare handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Output Compare DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Output Compare DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Output Compare DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Output Compare interrupt */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the Capture compare channel N */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+
+  /* Disable the Main Ouput */
+  __HAL_TIM_MOE_DISABLE(htim);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIMEx_Exported_Functions_Group3 Timer Complementary PWM functions
+ *  @brief    Timer Complementary PWM functions
+ *
+@verbatim
+  ==============================================================================
+                 ##### Timer Complementary PWM functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Start the Complementary PWM.
+    (+) Stop the Complementary PWM.
+    (+) Start the Complementary PWM and enable interrupts.
+    (+) Stop the Complementary PWM and disable interrupts.
+    (+) Start the Complementary PWM and enable DMA transfers.
+    (+) Stop the Complementary PWM and disable DMA transfers.
+    (+) Start the Complementary Input Capture measurement.
+    (+) Stop the Complementary Input Capture.
+    (+) Start the Complementary Input Capture and enable interrupts.
+    (+) Stop the Complementary Input Capture and disable interrupts.
+    (+) Start the Complementary Input Capture and enable DMA transfers.
+    (+) Stop the Complementary Input Capture and disable DMA transfers.
+    (+) Start the Complementary One Pulse generation.
+    (+) Stop the Complementary One Pulse.
+    (+) Start the Complementary One Pulse and enable interrupts.
+    (+) Stop the Complementary One Pulse and disable interrupts.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Starts the PWM signal generation on the complementary output.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  /* Enable the complementary PWM output  */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+  /* Enable the Main Ouput */
+  __HAL_TIM_MOE_ENABLE(htim);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the PWM signal generation on the complementary output.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  /* Disable the complementary PWM output  */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+
+  /* Disable the Main Ouput */
+  __HAL_TIM_MOE_DISABLE(htim);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the PWM signal generation in interrupt mode on the
+  *         complementary output.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Enable the TIM Capture/Compare 1 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Enable the TIM Capture/Compare 2 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Enable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Enable the TIM Capture/Compare 4 interrupt */
+      __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the TIM Break interrupt */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
+
+  /* Enable the complementary PWM output  */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+  /* Enable the Main Ouput */
+  __HAL_TIM_MOE_ENABLE(htim);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the PWM signal generation in interrupt mode on the
+  *         complementary output.
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT (TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  uint32_t tmpccer = 0;
+
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Capture/Compare 1 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Capture/Compare 2 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Capture/Compare 3 interrupt */
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the complementary PWM output  */
+  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+
+  /* Disable the TIM Break interrupt (only if no more channel is active) */
+  tmpccer = htim->Instance->CCER;
+  if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == RESET)
+  {
+    __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
+  }
+
+  /* Disable the Main Ouput */
+  __HAL_TIM_MOE_DISABLE(htim);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM PWM signal generation in DMA mode on the
+  *         complementary output
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @param  pData : The source Buffer address.
+  * @param  Length : The length of data to be transferred from memory to TIM peripheral
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  if((htim->State == HAL_TIM_STATE_BUSY))
+  {
+     return HAL_BUSY;
+  }
+  else if((htim->State == HAL_TIM_STATE_READY))
+  {
+    if(((uint32_t)pData == 0 ) && (Length > 0))
+    {
+      return HAL_ERROR;
+    }
+    else
+    {
+      htim->State = HAL_TIM_STATE_BUSY;
+    }
+  }
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
+
+      /* Enable the TIM Capture/Compare 1 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
+
+      /* Enable the TIM Capture/Compare 2 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
+
+      /* Enable the TIM Capture/Compare 3 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+     /* Set the DMA Period elapsed callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;
+
+      /* Set the DMA error callback */
+      htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
+
+      /* Enable the DMA channel */
+      HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
+
+      /* Enable the TIM Capture/Compare 4 DMA request */
+      __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Enable the complementary PWM output  */
+     TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+  /* Enable the Main Ouput */
+    __HAL_TIM_MOE_ENABLE(htim);
+
+  /* Enable the Peripheral */
+  __HAL_TIM_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM PWM signal generation in DMA mode on the complementary
+  *         output
+  * @param  htim : TIM handle
+  * @param  Channel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
+  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
+
+  switch (Channel)
+  {
+    case TIM_CHANNEL_1:
+    {
+      /* Disable the TIM Capture/Compare 1 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
+    }
+    break;
+
+    case TIM_CHANNEL_2:
+    {
+      /* Disable the TIM Capture/Compare 2 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
+    }
+    break;
+
+    case TIM_CHANNEL_3:
+    {
+      /* Disable the TIM Capture/Compare 3 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
+    }
+    break;
+
+    case TIM_CHANNEL_4:
+    {
+      /* Disable the TIM Capture/Compare 4 DMA request */
+      __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
+    }
+    break;
+
+    default:
+    break;
+  }
+
+  /* Disable the complementary PWM output */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+
+  /* Disable the Main Ouput */
+    __HAL_TIM_MOE_DISABLE(htim);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIMEx_Exported_Functions_Group4 Timer Complementary One Pulse functions
+ *  @brief    Timer Complementary One Pulse functions
+ *
+@verbatim
+  ==============================================================================
+                ##### Timer Complementary One Pulse functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Start the Complementary One Pulse generation.
+    (+) Stop the Complementary One Pulse.
+    (+) Start the Complementary One Pulse and enable interrupts.
+    (+) Stop the Complementary One Pulse and disable interrupts.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Starts the TIM One Pulse signal generation on the complemetary
+  *         output.
+  * @param  htim : TIM One Pulse handle
+  * @param  OutputChannel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
+  {
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
+
+  /* Enable the complementary One Pulse output */
+  TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);
+
+  /* Enable the Main Ouput */
+  __HAL_TIM_MOE_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stops the TIM One Pulse signal generation on the complementary
+  *         output.
+  * @param  htim : TIM One Pulse handle
+  * @param  OutputChannel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
+{
+
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
+
+  /* Disable the complementary One Pulse output */
+  TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);
+
+  /* Disable the Main Ouput */
+  __HAL_TIM_MOE_DISABLE(htim);
+
+  /* Disable the Peripheral */
+  __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Starts the TIM One Pulse signal generation in interrupt mode on the
+  *         complementary channel.
+  * @param  htim : TIM One Pulse handle
+  * @param  OutputChannel : TIM Channel to be enabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
+
+  /* Enable the TIM Capture/Compare 1 interrupt */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
+
+  /* Enable the TIM Capture/Compare 2 interrupt */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
+
+  /* Enable the complementary One Pulse output */
+  TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);
+
+  /* Enable the Main Ouput */
+  __HAL_TIM_MOE_ENABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+  }
+
+/**
+  * @brief  Stops the TIM One Pulse signal generation in interrupt mode on the
+  *         complementary channel.
+  * @param  htim : TIM One Pulse handle
+  * @param  OutputChannel : TIM Channel to be disabled
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
+  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
+
+  /* Disable the TIM Capture/Compare 1 interrupt */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
+
+  /* Disable the TIM Capture/Compare 2 interrupt */
+  __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
+
+  /* Disable the complementary One Pulse output */
+  TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);
+
+  /* Disable the Main Ouput */
+  __HAL_TIM_MOE_DISABLE(htim);
+
+  /* Disable the Peripheral */
+   __HAL_TIM_DISABLE(htim);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+/** @defgroup TIMEx_Exported_Functions_Group5 Peripheral Control functions
+ *  @brief   	Peripheral Control functions
+ *
+@verbatim
+  ==============================================================================
+                    ##### Peripheral Control functions #####
+  ==============================================================================
+  [..]
+    This section provides functions allowing to:
+    (+) Configure the commutation event in case of use of the Hall sensor interface.
+      (+) Configure Complementary channels, break features and dead time.
+      (+) Configure Master synchronization.
+
+@endverbatim
+  * @{
+  */
+
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+
+/**
+  * @brief  Configure the TIM commutation event sequence.
+  * @note: this function is mandatory to use the commutation event in order to
+  *        update the configuration at each commutation detection on the TRGI input of the Timer,
+  *        the typical use of this feature is with the use of another Timer(interface Timer)
+  *        configured in Hall sensor interface, this interface Timer will generate the
+  *        commutation at its TRGO output (connected to Timer used in this function) each time
+  *        the TI1 of the Interface Timer detect a commutation at its input TI1.
+  * @param  htim : TIM handle
+  * @param  InputTrigger : the Internal trigger corresponding to the Timer Interfacing with the Hall sensor
+  *          This parameter can be one of the following values:
+  *            @arg TIM_TS_ITR0: Internal trigger 0 selected
+  *            @arg TIM_TS_ITR1: Internal trigger 1 selected
+  *            @arg TIM_TS_ITR2: Internal trigger 2 selected
+  *            @arg TIM_TS_ITR3: Internal trigger 3 selected
+  *            @arg TIM_TS_NONE: No trigger is needed
+  * @param  CommutationSource : the Commutation Event source
+  *          This parameter can be one of the following values:
+  *            @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
+  *            @arg TIM_COMMUTATION_SOFTWARE:  Commutation source is set by software using the COMG bit
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
+
+  __HAL_LOCK(htim);
+
+  if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
+      (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
+  {
+    /* Select the Input trigger */
+    htim->Instance->SMCR &= ~TIM_SMCR_TS;
+    htim->Instance->SMCR |= InputTrigger;
+  }
+
+  /* Select the Capture Compare preload feature */
+  htim->Instance->CR2 |= TIM_CR2_CCPC;
+  /* Select the Commutation event source */
+  htim->Instance->CR2 &= ~TIM_CR2_CCUS;
+  htim->Instance->CR2 |= CommutationSource;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Configure the TIM commutation event sequence with interrupt.
+  * @note: this function is mandatory to use the commutation event in order to
+  *        update the configuration at each commutation detection on the TRGI input of the Timer,
+  *        the typical use of this feature is with the use of another Timer(interface Timer)
+  *        configured in Hall sensor interface, this interface Timer will generate the
+  *        commutation at its TRGO output (connected to Timer used in this function) each time
+  *        the TI1 of the Interface Timer detect a commutation at its input TI1.
+  * @param  htim : TIM handle
+  * @param  InputTrigger : the Internal trigger corresponding to the Timer Interfacing with the Hall sensor
+  *          This parameter can be one of the following values:
+  *            @arg TIM_TS_ITR0: Internal trigger 0 selected
+  *            @arg TIM_TS_ITR1: Internal trigger 1 selected
+  *            @arg TIM_TS_ITR2: Internal trigger 2 selected
+  *            @arg TIM_TS_ITR3: Internal trigger 3 selected
+  *            @arg TIM_TS_NONE: No trigger is needed
+  * @param  CommutationSource : the Commutation Event source
+  *          This parameter can be one of the following values:
+  *            @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
+  *            @arg TIM_COMMUTATION_SOFTWARE:  Commutation source is set by software using the COMG bit
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_IT(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
+
+  __HAL_LOCK(htim);
+
+  if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
+      (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
+  {
+    /* Select the Input trigger */
+    htim->Instance->SMCR &= ~TIM_SMCR_TS;
+    htim->Instance->SMCR |= InputTrigger;
+  }
+
+  /* Select the Capture Compare preload feature */
+  htim->Instance->CR2 |= TIM_CR2_CCPC;
+  /* Select the Commutation event source */
+  htim->Instance->CR2 &= ~TIM_CR2_CCUS;
+  htim->Instance->CR2 |= CommutationSource;
+
+  /* Enable the Commutation Interrupt Request */
+  __HAL_TIM_ENABLE_IT(htim, TIM_IT_COM);
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Configure the TIM commutation event sequence with DMA.
+  * @note: this function is mandatory to use the commutation event in order to
+  *        update the configuration at each commutation detection on the TRGI input of the Timer,
+  *        the typical use of this feature is with the use of another Timer(interface Timer)
+  *        configured in Hall sensor interface, this interface Timer will generate the
+  *        commutation at its TRGO output (connected to Timer used in this function) each time
+  *        the TI1 of the Interface Timer detect a commutation at its input TI1.
+  * @note: The user should configure the DMA in his own software, in This function only the COMDE bit is set
+  * @param  htim : TIM handle
+  * @param  InputTrigger : the Internal trigger corresponding to the Timer Interfacing with the Hall sensor
+  *          This parameter can be one of the following values:
+  *            @arg TIM_TS_ITR0: Internal trigger 0 selected
+  *            @arg TIM_TS_ITR1: Internal trigger 1 selected
+  *            @arg TIM_TS_ITR2: Internal trigger 2 selected
+  *            @arg TIM_TS_ITR3: Internal trigger 3 selected
+  *            @arg TIM_TS_NONE: No trigger is needed
+  * @param  CommutationSource : the Commutation Event source
+  *          This parameter can be one of the following values:
+  *            @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
+  *            @arg TIM_COMMUTATION_SOFTWARE:  Commutation source is set by software using the COMG bit
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_DMA(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
+
+  __HAL_LOCK(htim);
+
+  if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
+      (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
+  {
+    /* Select the Input trigger */
+    htim->Instance->SMCR &= ~TIM_SMCR_TS;
+    htim->Instance->SMCR |= InputTrigger;
+  }
+
+  /* Select the Capture Compare preload feature */
+  htim->Instance->CR2 |= TIM_CR2_CCPC;
+  /* Select the Commutation event source */
+  htim->Instance->CR2 &= ~TIM_CR2_CCUS;
+  htim->Instance->CR2 |= CommutationSource;
+
+  /* Enable the Commutation DMA Request */
+  /* Set the DMA Commutation Callback */
+  htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt;
+  /* Set the DMA error callback */
+  htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError;
+
+  /* Enable the Commutation DMA Request */
+  __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_COM);
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief   Configures the Break feature, dead time, Lock level, OSSI/OSSR State
+  *          and the AOE(automatic output enable).
+  * @param  htim : TIM handle
+  * @param  sBreakDeadTimeConfig : pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that
+  *         contains the BDTR Register configuration  information for the TIM peripheral.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
+                                                TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode));
+  assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode));
+  assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel));
+  assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime));
+  assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState));
+  assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity));
+  assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput));
+
+  /* Process Locked */
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State,
+     the OSSI State, the dead time value and the Automatic Output Enable Bit */
+  htim->Instance->BDTR = (uint32_t)sBreakDeadTimeConfig->OffStateRunMode  |
+                                   sBreakDeadTimeConfig->OffStateIDLEMode |
+                                   sBreakDeadTimeConfig->LockLevel        |
+                                   sBreakDeadTimeConfig->DeadTime         |
+                                   sBreakDeadTimeConfig->BreakState       |
+                                   sBreakDeadTimeConfig->BreakPolarity    |
+                                   sBreakDeadTimeConfig->AutomaticOutput;
+
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+/**
+  * @brief  Configures the TIM in master mode.
+  * @param  htim : TIM handle.
+  * @param  sMasterConfig : pointer to a TIM_MasterConfigTypeDef structure that
+  *         contains the selected trigger output (TRGO) and the Master/Slave
+  *         mode.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef * sMasterConfig)
+{
+  /* Check the parameters */
+  assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
+  assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
+
+  __HAL_LOCK(htim);
+
+  htim->State = HAL_TIM_STATE_BUSY;
+
+  /* Reset the MMS Bits */
+  htim->Instance->CR2 &= ~TIM_CR2_MMS;
+  /* Select the TRGO source */
+  htim->Instance->CR2 |=  sMasterConfig->MasterOutputTrigger;
+
+  /* Reset the MSM Bit */
+  htim->Instance->SMCR &= ~TIM_SMCR_MSM;
+  /* Set or Reset the MSM Bit */
+  htim->Instance->SMCR |= sMasterConfig->MasterSlaveMode;
+
+  htim->State = HAL_TIM_STATE_READY;
+
+  __HAL_UNLOCK(htim);
+
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup TIMEx_Exported_Functions_Group6 Extension Callbacks functions
+ *  @brief   Extension Callbacks functions
+ *
+@verbatim
+  ==============================================================================
+                    ##### Extension Callbacks functions #####
+  ==============================================================================
+  [..]
+    This section provides Extension TIM callback functions:
+    (+) Timer Commutation callback
+    (+) Timer Break callback
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Hall commutation changed callback in non blocking mode
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIMEx_CommutationCallback could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  Hall Break detection callback in non blocking mode
+  * @param  htim : TIM handle
+  * @retval None
+  */
+__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(htim);
+  /* NOTE : This function Should not be modified, when the callback is needed,
+            the HAL_TIMEx_BreakCallback could be implemented in the user file
+   */
+}
+
+/**
+  * @brief  TIM DMA Commutation callback.
+  * @param  hdma : pointer to DMA handle.
+  * @retval None
+  */
+void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma)
+{
+  TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+
+  htim->State= HAL_TIM_STATE_READY;
+
+  HAL_TIMEx_CommutationCallback(htim);
+}
+
+/**
+  * @}
+  */
+
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+
+/** @defgroup TIMEx_Exported_Functions_Group7 Extension Peripheral State functions
+ *  @brief   Extension Peripheral State functions
+ *
+@verbatim
+  ==============================================================================
+                ##### Extension Peripheral State functions #####
+  ==============================================================================
+  [..]
+    This subsection permit to get in run-time the status of the peripheral
+    and the data flow.
+
+@endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Return the TIM Hall Sensor interface state
+  * @param  htim : TIM Hall Sensor handle
+  * @retval HAL state
+  */
+HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim)
+{
+  return htim->State;
+}
+
+/**
+  * @}
+  */
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+/**
+  * @}
+  */
+
+#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
+    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
+    defined (STM32F105xC) || defined (STM32F107xC)
+
+/** @addtogroup TIMEx_Private_Functions
+  * @{
+  */
+
+/**
+  * @brief  Enables or disables the TIM Capture Compare Channel xN.
+  * @param  TIMx  to select the TIM peripheral
+  * @param  Channel : specifies the TIM Channel
+  *          This parameter can be one of the following values:
+  *            @arg TIM_Channel_1: TIM Channel 1
+  *            @arg TIM_Channel_2: TIM Channel 2
+  *            @arg TIM_Channel_3: TIM Channel 3
+  * @param  ChannelNState : specifies the TIM Channel CCxNE bit new state.
+  *          This parameter can be: TIM_CCxN_ENABLE or TIM_CCxN_Disable.
+  * @retval None
+  */
+static void TIM_CCxNChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelNState)
+{
+  uint32_t tmp = 0;
+
+  tmp = TIM_CCER_CC1NE << Channel;
+
+  /* Reset the CCxNE Bit */
+  TIMx->CCER &=  ~tmp;
+
+  /* Set or reset the CCxNE Bit */
+  TIMx->CCER |=  (uint32_t)(ChannelNState << Channel);
+}
+
+/**
+  * @}
+  */
+
+#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
+       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
+       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
+
+#endif /* HAL_TIM_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/EWARM/Project.eww	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workspace>
+  <project>
+    <path>$WS_DIR$\f103c8.ewp</path>
+  </project>
+  <batchBuild />
+</workspace>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/EWARM/f103c8.ewd	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,493 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>f103c8</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>22</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state />
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state />
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state />
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state />
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>4.41A</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>STLINK_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state />
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state />
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state />
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state />
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state />
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state />
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state />
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state />
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state />
+        </option>
+      </data>
+    </settings>
+	<settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>13</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$TOOLKIT_DIR$\cspycommmmmmmmmmmm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>5</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state />
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state />
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <!--<option>
+          <name>OCJLinkTraceSource</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>-->
+      </data>
+    </settings>
+	<settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>8.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+	<debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+ </project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/EWARM/f103c8.ewp	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,8021 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>f103c8</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>f103c8/Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>f103c8/Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>f103c8/List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>19</version>
+          <state />
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state />
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state />
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>3</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>4.41A</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.30.1.53141</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>STM32F103C8	ST STM32F103C8</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>011111111111111110111111111111111111111111111010110100111111111111110111111111111111111111111111111111110111111011111111111111111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>21</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>21</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>USE_HAL_DRIVER</state>
+        <state>STM32F103xB</state></option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state />
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state />
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>1111111</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state />
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state />
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+        <state>$PROJ_DIR$/../Inc</state><state>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Inc</state><state>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy</state><state>$PROJ_DIR$/../Drivers/CMSIS/Device/ST/STM32F1xx/Include</state><state>$PROJ_DIR$/../Drivers/CMSIS/Include</state></option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state />
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state />
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state />
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state />
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state />
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state />
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>Project.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions />
+        <cmdline />
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data />
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild />
+        <postbuild />
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>14</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>f103c8.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$/stm32f103xb_flash.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlgo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state />
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state />
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state />
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data />
+    </settings>
+  </configuration>
+  
+  <group>
+    <name>Application</name>
+    <excluded>
+      <configuration />
+    </excluded>
+    <file>
+      <name />
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file>
+    <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+  <group>
+    <name>EWARM</name>
+    <excluded>
+      <configuration />
+    </excluded>
+    <file>
+      <name />
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file>
+    <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+  <file>
+      <name>$PROJ_DIR$/../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xb.s</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file></group><group>
+    <name>User</name>
+    <excluded>
+      <configuration />
+    </excluded>
+    <file>
+      <name />
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file>
+    <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+  <file>
+      <name>$PROJ_DIR$/../Src/stm32f1xx_it.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Src/main.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Src/stm32f1xx_hal_msp.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file></group></group><group>
+    <name>Drivers</name>
+    <excluded>
+      <configuration />
+    </excluded>
+    <file>
+      <name />
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file>
+    <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+  <group>
+    <name>STM32F1xx_HAL_Driver</name>
+    <excluded>
+      <configuration />
+    </excluded>
+    <file>
+      <name />
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file>
+    <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+  <file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file><file>
+      <name>$PROJ_DIR$/../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file></group><group>
+    <name>CMSIS</name>
+    <excluded>
+      <configuration />
+    </excluded>
+    <file>
+      <name />
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file>
+    <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+  <file>
+      <name>$PROJ_DIR$/../Src/system_stm32f1xx.c</name>
+	  <excluded>
+      <configuration />
+    </excluded>
+	   <configuration>
+      <name />
+      <settings>
+        <name>ICCARM</name>
+        <data>
+          <version>28</version>
+          <wantNonLocal>0</wantNonLocal>
+          <debug>1</debug>
+          <option>
+            <name>CCOptimizationNoSizeConstraints</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDefines</name>
+            <state />
+          </option>
+          <option>
+            <name>CCPreprocFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocComments</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPreprocLine</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMnemonics</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListCMessages</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssFile</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCListAssSource</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCEnableRemarks</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagSuppress</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagRemark</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagWarning</name>
+            <state />
+          </option>
+          <option>
+            <name>CCDiagError</name>
+            <state />
+          </option>
+          <option>
+            <name>CCObjPrefix</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCAllowList</name>
+            <version>1</version>
+            <state>1111111</state>
+          </option>
+          <option>
+            <name>CCDebugInfo</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IEndianMode</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IExtraOptionsCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IExtraOptions</name>
+            <state />
+          </option>
+          <option>
+            <name>CCLangConformance</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCSignedPlainChar</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCRequirePrototypes</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCMultibyteSupport</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCDiagWarnAreErr</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCompilerRuntimeInfo</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IFpuProcessor</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>OutputFile</name>
+            <state>$FILE_BNAME$.o</state>
+          </option>
+          <option>
+            <name>CCLibConfigHeader</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>PreInclude</name>
+            <state />
+          </option>
+          <option>
+            <name>CompilerMisraOverride</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCIncludePath2</name>
+            <state />
+            
+          </option>
+          <option>
+            <name>CCStdIncCheck</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCCodeSection</name>
+            <state>.text</state>
+          </option>
+          <option>
+            <name>IInterwork2</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IProcessorMode2</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevel</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CCOptStrategy</name>
+            <version>0</version>
+            <state>1</state>
+          </option>
+          <option>
+            <name>CCOptLevelSlave</name>
+            <state>3</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules98</name>
+            <version>0</version>
+            <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+          </option>
+          <option>
+            <name>CompilerMisraRules04</name>
+            <version>0</version>
+            <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+          </option>
+          <option>
+            <name>CCPosIndRopi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndRwpi</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>CCPosIndNoDynInit</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccLang</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccAllowVLA</name>
+            <state>0</state>
+          </option>
+          <option>
+            <name>IccCppDialect</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccExceptions</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccRTTI</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccStaticDestr</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCppInlineSemantics</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccCmsis</name>
+            <state>1</state>
+          </option>
+          <option>
+            <name>IccFloatSemantics</name>
+            <state>0</state>
+          </option>
+        </data>
+      </settings>
+    </configuration>
+    </file></group></group></project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/EWARM/stm32f103xb_flash.icf	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,31 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x08000000;
+/*-Memory Regions-*/
+define symbol __ICFEDIT_region_ROM_start__   = 0x08000000 ;
+define symbol __ICFEDIT_region_ROM_end__     = 0x0801FFFF;
+define symbol __ICFEDIT_region_RAM_start__   = 0x20000000;
+define symbol __ICFEDIT_region_RAM_end__     = 0x20004FFF;
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x400;
+define symbol __ICFEDIT_size_heap__ = 0x200;
+/**** End of ICF editor section. ###ICF###*/
+
+
+define memory mem with size = 4G;
+define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
+define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
+
+define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
+define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
+
+initialize by copy { readwrite };
+do not initialize  { section .noinit };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region   { readonly };
+place in RAM_region   { readwrite,
+                        block CSTACK, block HEAP };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/EWARM/stm32f103xb_sram.icf	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,31 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x20000000;
+/*-Memory Regions-*/
+define symbol __ICFEDIT_region_ROM_start__ = 0x20000000 ;
+define symbol __ICFEDIT_region_ROM_end__   = 0x200013FF;
+define symbol __ICFEDIT_region_RAM_start__ = 0x20001400;
+define symbol __ICFEDIT_region_RAM_end__     = 0x20004FFF;
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x400;
+define symbol __ICFEDIT_size_heap__ = 0x200;
+/**** End of ICF editor section. ###ICF###*/
+
+
+define memory mem with size = 4G;
+define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
+define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
+
+define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
+define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
+
+initialize by copy { readwrite };
+do not initialize  { section .noinit };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region   { readonly };
+place in RAM_region   { readwrite,
+                        block CSTACK, block HEAP };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Inc/main.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,57 @@
+/**
+  ******************************************************************************
+  * File Name          : main.h
+  * Description        : This file contains the common defines of the application
+  ******************************************************************************
+  *
+  * COPYRIGHT(c) 2017 STMicroelectronics
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+  /* Includes ------------------------------------------------------------------*/
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private define ------------------------------------------------------------*/
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+*/ 
+
+#endif /* __MAIN_H */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Inc/stm32f1xx_hal_conf.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,350 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_hal_conf.h
+  * @brief   HAL configuration file.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_CONF_H
+#define __STM32F1xx_HAL_CONF_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "main.h"
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* ########################## Module Selection ############################## */
+/**
+  * @brief This is the list of modules to be used in the HAL driver 
+  */
+#define HAL_MODULE_ENABLED  
+/*#define HAL_ADC_MODULE_ENABLED   */
+/*#define HAL_CAN_MODULE_ENABLED   */
+/*#define HAL_CEC_MODULE_ENABLED   */
+/*#define HAL_CORTEX_MODULE_ENABLED   */
+/*#define HAL_CRC_MODULE_ENABLED   */
+/*#define HAL_DAC_MODULE_ENABLED   */
+/*#define HAL_DMA_MODULE_ENABLED   */
+/*#define HAL_ETH_MODULE_ENABLED   */
+/*#define HAL_FLASH_MODULE_ENABLED   */
+#define HAL_GPIO_MODULE_ENABLED
+/*#define HAL_I2C_MODULE_ENABLED   */
+/*#define HAL_I2S_MODULE_ENABLED   */
+/*#define HAL_IRDA_MODULE_ENABLED   */
+/*#define HAL_IWDG_MODULE_ENABLED   */
+/*#define HAL_NOR_MODULE_ENABLED   */
+/*#define HAL_NAND_MODULE_ENABLED   */
+/*#define HAL_PCCARD_MODULE_ENABLED   */
+/*#define HAL_PCD_MODULE_ENABLED   */
+/*#define HAL_HCD_MODULE_ENABLED   */
+/*#define HAL_PWR_MODULE_ENABLED   */
+/*#define HAL_RCC_MODULE_ENABLED   */
+/*#define HAL_RTC_MODULE_ENABLED   */
+/*#define HAL_SD_MODULE_ENABLED   */
+/*#define HAL_SDRAM_MODULE_ENABLED   */
+/*#define HAL_SMARTCARD_MODULE_ENABLED   */
+/*#define HAL_SPI_MODULE_ENABLED   */
+/*#define HAL_SRAM_MODULE_ENABLED   */
+#define HAL_TIM_MODULE_ENABLED
+/*#define HAL_UART_MODULE_ENABLED   */
+/*#define HAL_USART_MODULE_ENABLED   */
+/*#define HAL_WWDG_MODULE_ENABLED   */
+
+#define HAL_CORTEX_MODULE_ENABLED
+#define HAL_DMA_MODULE_ENABLED
+#define HAL_FLASH_MODULE_ENABLED
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED
+
+/* ########################## Oscillator Values adaptation ####################*/
+/**
+  * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+  *        This value is used by the RCC HAL module to compute the system frequency
+  *        (when HSE is used as system clock source, directly or through the PLL).  
+  */
+#if !defined  (HSE_VALUE) 
+  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined  (HSE_STARTUP_TIMEOUT)
+  #define HSE_STARTUP_TIMEOUT    ((uint32_t)100)   /*!< Time out for HSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+  * @brief Internal High Speed oscillator (HSI) value.
+  *        This value is used by the RCC HAL module to compute the system frequency
+  *        (when HSI is used as system clock source, directly or through the PLL). 
+  */
+#if !defined  (HSI_VALUE)
+  #define HSI_VALUE    ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+  * @brief External Low Speed oscillator (LSE) value.
+  *        This value is used by the UART, RTC HAL module to compute the system frequency
+  */
+#if !defined  (LSE_VALUE)
+  #define LSE_VALUE    ((uint32_t)32768) /*!< Value of the External oscillator in Hz*/
+#endif /* LSE_VALUE */
+
+#if !defined  (LSE_STARTUP_TIMEOUT)
+  #define LSE_STARTUP_TIMEOUT    ((uint32_t)5000)   /*!< Time out for LSE start up, in ms */
+#endif /* LSE_STARTUP_TIMEOUT */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+   ===  you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+  * @brief This is the HAL system configuration section
+  */     
+#define  VDD_VALUE                    ((uint32_t)3300) /*!< Value of VDD in mv */           
+#define  TICK_INT_PRIORITY            ((uint32_t)0)    /*!< tick interrupt priority (lowest by default)  */            
+#define  USE_RTOS                     0
+#define  PREFETCH_ENABLE              1
+
+/* ########################## Assert Selection ############################## */
+/**
+  * @brief Uncomment the line below to expanse the "assert_param" macro in the 
+  *        HAL drivers code
+  */
+/* #define USE_FULL_ASSERT    1 */
+
+/* ################## Ethernet peripheral configuration ##################### */
+
+/* Section 1 : Ethernet peripheral configuration */
+
+/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
+#define MAC_ADDR0   2
+#define MAC_ADDR1   0
+#define MAC_ADDR2   0
+#define MAC_ADDR3   0
+#define MAC_ADDR4   0
+#define MAC_ADDR5   0
+
+/* Definition of the Ethernet driver buffers size and count */   
+#define ETH_RX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for receive               */
+#define ETH_TX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for transmit              */
+#define ETH_RXBUFNB                    ((uint32_t)8)       /* 4 Rx buffers of size ETH_RX_BUF_SIZE  */
+#define ETH_TXBUFNB                    ((uint32_t)4)       /* 4 Tx buffers of size ETH_TX_BUF_SIZE  */
+
+/* Section 2: PHY configuration section */
+
+/* DP83848_PHY_ADDRESS Address*/ 
+#define DP83848_PHY_ADDRESS           0x01U
+/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ 
+#define PHY_RESET_DELAY                 ((uint32_t)0x000000FF)
+/* PHY Configuration delay */
+#define PHY_CONFIG_DELAY                ((uint32_t)0x00000FFF)
+
+#define PHY_READ_TO                     ((uint32_t)0x0000FFFF)
+#define PHY_WRITE_TO                    ((uint32_t)0x0000FFFF)
+
+/* Section 3: Common PHY Registers */
+
+#define PHY_BCR                         ((uint16_t)0x00)    /*!< Transceiver Basic Control Register   */
+#define PHY_BSR                         ((uint16_t)0x01)    /*!< Transceiver Basic Status Register    */
+ 
+#define PHY_RESET                       ((uint16_t)0x8000)  /*!< PHY Reset */
+#define PHY_LOOPBACK                    ((uint16_t)0x4000)  /*!< Select loop-back mode */
+#define PHY_FULLDUPLEX_100M             ((uint16_t)0x2100)  /*!< Set the full-duplex mode at 100 Mb/s */
+#define PHY_HALFDUPLEX_100M             ((uint16_t)0x2000)  /*!< Set the half-duplex mode at 100 Mb/s */
+#define PHY_FULLDUPLEX_10M              ((uint16_t)0x0100)  /*!< Set the full-duplex mode at 10 Mb/s  */
+#define PHY_HALFDUPLEX_10M              ((uint16_t)0x0000)  /*!< Set the half-duplex mode at 10 Mb/s  */
+#define PHY_AUTONEGOTIATION             ((uint16_t)0x1000)  /*!< Enable auto-negotiation function     */
+#define PHY_RESTART_AUTONEGOTIATION     ((uint16_t)0x0200)  /*!< Restart auto-negotiation function    */
+#define PHY_POWERDOWN                   ((uint16_t)0x0800)  /*!< Select the power down mode           */
+#define PHY_ISOLATE                     ((uint16_t)0x0400)  /*!< Isolate PHY from MII                 */
+
+#define PHY_AUTONEGO_COMPLETE           ((uint16_t)0x0020)  /*!< Auto-Negotiation process completed   */
+#define PHY_LINKED_STATUS               ((uint16_t)0x0004)  /*!< Valid link established               */
+#define PHY_JABBER_DETECTION            ((uint16_t)0x0002)  /*!< Jabber condition detected            */
+  
+/* Section 4: Extended PHY Registers */
+#define PHY_SR                          ((uint16_t)0x10U)    /*!< PHY status register Offset                      */
+
+#define PHY_SPEED_STATUS                ((uint16_t)0x0002U)  /*!< PHY Speed mask                                  */
+#define PHY_DUPLEX_STATUS               ((uint16_t)0x0004U)  /*!< PHY Duplex mask                                 */
+
+/* Includes ------------------------------------------------------------------*/
+/**
+  * @brief Include module's header file 
+  */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+ #include "stm32f1xx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+ #include "stm32f1xx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+   
+#ifdef HAL_DMA_MODULE_ENABLED
+  #include "stm32f1xx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+   
+#ifdef HAL_ETH_MODULE_ENABLED
+  #include "stm32f1xx_hal_eth.h"
+#endif /* HAL_ETH_MODULE_ENABLED */  
+   
+#ifdef HAL_CAN_MODULE_ENABLED
+ #include "stm32f1xx_hal_can.h"
+#endif /* HAL_CAN_MODULE_ENABLED */
+
+#ifdef HAL_CEC_MODULE_ENABLED
+ #include "stm32f1xx_hal_cec.h"
+#endif /* HAL_CEC_MODULE_ENABLED */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+ #include "stm32f1xx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+ #include "stm32f1xx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+ #include "stm32f1xx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_DAC_MODULE_ENABLED
+ #include "stm32f1xx_hal_dac.h"
+#endif /* HAL_DAC_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+ #include "stm32f1xx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+#ifdef HAL_SRAM_MODULE_ENABLED
+ #include "stm32f1xx_hal_sram.h"
+#endif /* HAL_SRAM_MODULE_ENABLED */
+
+#ifdef HAL_NOR_MODULE_ENABLED
+ #include "stm32f1xx_hal_nor.h"
+#endif /* HAL_NOR_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+ #include "stm32f1xx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_I2S_MODULE_ENABLED
+ #include "stm32f1xx_hal_i2s.h"
+#endif /* HAL_I2S_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+ #include "stm32f1xx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+ #include "stm32f1xx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+ #include "stm32f1xx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_PCCARD_MODULE_ENABLED
+ #include "stm32f1xx_hal_pccard.h"
+#endif /* HAL_PCCARD_MODULE_ENABLED */ 
+
+#ifdef HAL_SD_MODULE_ENABLED
+ #include "stm32f1xx_hal_sd.h"
+#endif /* HAL_SD_MODULE_ENABLED */  
+
+#ifdef HAL_NAND_MODULE_ENABLED
+ #include "stm32f1xx_hal_nand.h"
+#endif /* HAL_NAND_MODULE_ENABLED */     
+
+#ifdef HAL_SPI_MODULE_ENABLED
+ #include "stm32f1xx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+ #include "stm32f1xx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+ #include "stm32f1xx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+ #include "stm32f1xx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+ #include "stm32f1xx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+ #include "stm32f1xx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+ #include "stm32f1xx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+ #include "stm32f1xx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_HCD_MODULE_ENABLED
+ #include "stm32f1xx_hal_hcd.h"
+#endif /* HAL_HCD_MODULE_ENABLED */   
+   
+
+/* Exported macro ------------------------------------------------------------*/
+#ifdef  USE_FULL_ASSERT
+/**
+  * @brief  The assert_param macro is used for function's parameters check.
+  * @param  expr: If expr is false, it calls assert_failed function
+  *         which reports the name of the source file and the source
+  *         line number of the call that failed. 
+  *         If expr is true, it returns no value.
+  * @retval None
+  */
+  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+  void assert_failed(uint8_t* file, uint32_t line);
+#else
+  #define assert_param(expr) ((void)0)
+#endif /* USE_FULL_ASSERT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_HAL_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Inc/stm32f1xx_it.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,64 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_it.h
+  * @brief   This file contains the headers of the interrupt handlers.
+  ******************************************************************************
+  *
+  * COPYRIGHT(c) 2017 STMicroelectronics
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_IT_H
+#define __STM32F1xx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif 
+
+/* Includes ------------------------------------------------------------------*/
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void SVC_Handler(void);
+void DebugMon_Handler(void);
+void PendSV_Handler(void);
+void SysTick_Handler(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_IT_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/STM32F103C8_FLASH.ld	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,168 @@
+/*
+*****************************************************************************
+**
+
+**  File        : stm32_flash.ld
+**
+**  Abstract    : Linker script for STM32F103C8 Device with
+**                64KByte FLASH, 20KByte RAM
+**
+**                Set heap size, stack size and stack location according
+**                to application requirements.
+**
+**                Set memory bank area and size if external memory is used.
+**
+**  Target      : STMicroelectronics STM32
+**
+**  Environment : Atollic TrueSTUDIO(R)
+**
+**  Distribution: The file is distributed as is, without any warranty
+**                of any kind.
+**
+**  (c)Copyright Atollic AB.
+**  You may use this file as-is or modify it according to the needs of your
+**  project. This file may only be built (assembled or compiled and linked)
+**  using the Atollic TrueSTUDIO(R) product. The use of this file together
+**  with other tools than Atollic TrueSTUDIO(R) is not permitted.
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20005000;    /* end of RAM */
+/* Generate a link error if heap and stack don't fit into RAM */
+_Min_Heap_Size = 0x200;      /* required amount of heap  */
+_Min_Stack_Size = 0x400; /* required amount of stack */
+
+/* Specify the memory areas */
+MEMORY
+{
+RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 20K
+FLASH (rx)      : ORIGIN = 0x8000000, LENGTH = 64K
+}
+
+/* Define output sections */
+SECTIONS
+{
+  /* The startup code goes first into FLASH */
+  .isr_vector :
+  {
+    . = ALIGN(4);
+    KEEP(*(.isr_vector)) /* Startup code */
+    . = ALIGN(4);
+  } >FLASH
+
+  /* The program code and other data goes into FLASH */
+  .text :
+  {
+    . = ALIGN(4);
+    *(.text)           /* .text sections (code) */
+    *(.text*)          /* .text* sections (code) */
+    *(.glue_7)         /* glue arm to thumb code */
+    *(.glue_7t)        /* glue thumb to arm code */
+    *(.eh_frame)
+
+    KEEP (*(.init))
+    KEEP (*(.fini))
+
+    . = ALIGN(4);
+    _etext = .;        /* define a global symbols at end of code */
+  } >FLASH
+
+  /* Constant data goes into FLASH */
+  .rodata :
+  {
+    . = ALIGN(4);
+    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
+    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
+    . = ALIGN(4);
+  } >FLASH
+
+  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+  .ARM : {
+    __exidx_start = .;
+    *(.ARM.exidx*)
+    __exidx_end = .;
+  } >FLASH
+
+  .preinit_array     :
+  {
+    PROVIDE_HIDDEN (__preinit_array_start = .);
+    KEEP (*(.preinit_array*))
+    PROVIDE_HIDDEN (__preinit_array_end = .);
+  } >FLASH
+  .init_array :
+  {
+    PROVIDE_HIDDEN (__init_array_start = .);
+    KEEP (*(SORT(.init_array.*)))
+    KEEP (*(.init_array*))
+    PROVIDE_HIDDEN (__init_array_end = .);
+  } >FLASH
+  .fini_array :
+  {
+    PROVIDE_HIDDEN (__fini_array_start = .);
+    KEEP (*(SORT(.fini_array.*)))
+    KEEP (*(.fini_array*))
+    PROVIDE_HIDDEN (__fini_array_end = .);
+  } >FLASH
+
+  /* used by the startup to initialize data */
+  _sidata = LOADADDR(.data);
+
+  /* Initialized data sections goes into RAM, load LMA copy after code */
+  .data : 
+  {
+    . = ALIGN(4);
+    _sdata = .;        /* create a global symbol at data start */
+    *(.data)           /* .data sections */
+    *(.data*)          /* .data* sections */
+
+    . = ALIGN(4);
+    _edata = .;        /* define a global symbol at data end */
+  } >RAM AT> FLASH
+
+  
+  /* Uninitialized data section */
+  . = ALIGN(4);
+  .bss :
+  {
+    /* This is used by the startup in order to initialize the .bss secion */
+    _sbss = .;         /* define a global symbol at bss start */
+    __bss_start__ = _sbss;
+    *(.bss)
+    *(.bss*)
+    *(COMMON)
+
+    . = ALIGN(4);
+    _ebss = .;         /* define a global symbol at bss end */
+    __bss_end__ = _ebss;
+  } >RAM
+
+  /* User_heap_stack section, used to check that there is enough RAM left */
+  ._user_heap_stack :
+  {
+    . = ALIGN(4);
+    PROVIDE ( end = . );
+    PROVIDE ( _end = . );
+    . = . + _Min_Heap_Size;
+    . = . + _Min_Stack_Size;
+    . = ALIGN(4);
+  } >RAM
+
+  
+
+  /* Remove information from the standard libraries */
+  /DISCARD/ :
+  {
+    libc.a ( * )
+    libm.a ( * )
+    libgcc.a ( * )
+  }
+
+  .ARM.attributes 0 : { *(.ARM.attributes) }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Src/main.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,272 @@
+/**
+  ******************************************************************************
+  * File Name          : main.c
+  * Description        : Main program body
+  ******************************************************************************
+  *
+  * COPYRIGHT(c) 2017 STMicroelectronics
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32f1xx_hal.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private variables ---------------------------------------------------------*/
+TIM_HandleTypeDef htim4;
+
+/* USER CODE BEGIN PV */
+/* Private variables ---------------------------------------------------------*/
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+void Error_Handler(void);
+static void MX_GPIO_Init(void);
+static void MX_TIM4_Init(void);                                    
+void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
+                                
+
+/* USER CODE BEGIN PFP */
+/* Private function prototypes -----------------------------------------------*/
+
+/* USER CODE END PFP */
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+int main(void)
+{
+
+  /* USER CODE BEGIN 1 */
+
+  /* USER CODE END 1 */
+
+  /* MCU Configuration----------------------------------------------------------*/
+
+  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+  HAL_Init();
+
+  /* Configure the system clock */
+  SystemClock_Config();
+
+  /* Initialize all configured peripherals */
+  MX_GPIO_Init();
+  MX_TIM4_Init();
+
+  /* USER CODE BEGIN 2 */
+
+  /* USER CODE END 2 */
+
+  /* Infinite loop */
+  /* USER CODE BEGIN WHILE */
+  while (1)
+  {
+  /* USER CODE END WHILE */
+
+  /* USER CODE BEGIN 3 */
+
+  }
+  /* USER CODE END 3 */
+
+}
+
+/** System Clock Configuration
+*/
+void SystemClock_Config(void)
+{
+
+  RCC_OscInitTypeDef RCC_OscInitStruct;
+  RCC_ClkInitTypeDef RCC_ClkInitStruct;
+
+    /**Initializes the CPU, AHB and APB busses clocks 
+    */
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+  RCC_OscInitStruct.HSICalibrationValue = 16;
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+    /**Initializes the CPU, AHB and APB busses clocks 
+    */
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+    /**Configure the Systick interrupt time 
+    */
+  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
+
+    /**Configure the Systick 
+    */
+  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
+
+  /* SysTick_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
+}
+
+/* TIM4 init function */
+static void MX_TIM4_Init(void)
+{
+
+  TIM_ClockConfigTypeDef sClockSourceConfig;
+  TIM_MasterConfigTypeDef sMasterConfig;
+  TIM_OC_InitTypeDef sConfigOC;
+
+  htim4.Instance = TIM4;
+  htim4.Init.Prescaler = 0;
+  htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
+  htim4.Init.Period = 0;
+  htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+  if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
+  if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  sConfigOC.OCMode = TIM_OCMODE_PWM1;
+  sConfigOC.Pulse = 0;
+  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
+  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
+  if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  HAL_TIM_MspPostInit(&htim4);
+
+}
+
+/** Configure pins as 
+        * Analog 
+        * Input 
+        * Output
+        * EVENT_OUT
+        * EXTI
+*/
+static void MX_GPIO_Init(void)
+{
+
+  GPIO_InitTypeDef GPIO_InitStruct;
+
+  /* GPIO Ports Clock Enable */
+  __HAL_RCC_GPIOC_CLK_ENABLE();
+  __HAL_RCC_GPIOD_CLK_ENABLE();
+  __HAL_RCC_GPIOA_CLK_ENABLE();
+  __HAL_RCC_GPIOB_CLK_ENABLE();
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin : PA5 */
+  GPIO_InitStruct.Pin = GPIO_PIN_5;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+}
+
+/* USER CODE BEGIN 4 */
+
+/* USER CODE END 4 */
+
+/**
+  * @brief  This function is executed in case of error occurrence.
+  * @param  None
+  * @retval None
+  */
+void Error_Handler(void)
+{
+  /* USER CODE BEGIN Error_Handler */
+  /* User can add his own implementation to report the HAL error return state */
+  while(1) 
+  {
+  }
+  /* USER CODE END Error_Handler */ 
+}
+
+#ifdef USE_FULL_ASSERT
+
+/**
+   * @brief Reports the name of the source file and the source line number
+   * where the assert_param error has occurred.
+   * @param file: pointer to the source file name
+   * @param line: assert_param error line source number
+   * @retval None
+   */
+void assert_failed(uint8_t* file, uint32_t line)
+{
+  /* USER CODE BEGIN 6 */
+  /* User can add his own implementation to report the file name and line number,
+    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+  /* USER CODE END 6 */
+
+}
+
+#endif
+
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+*/ 
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Src/stm32f1xx_hal_msp.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,150 @@
+/**
+  ******************************************************************************
+  * File Name          : stm32f1xx_hal_msp.c
+  * Description        : This file provides code for the MSP Initialization 
+  *                      and de-Initialization codes.
+  ******************************************************************************
+  *
+  * COPYRIGHT(c) 2017 STMicroelectronics
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+extern void Error_Handler(void);
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+/**
+  * Initializes the Global MSP.
+  */
+void HAL_MspInit(void)
+{
+  /* USER CODE BEGIN MspInit 0 */
+
+  /* USER CODE END MspInit 0 */
+
+  __HAL_RCC_AFIO_CLK_ENABLE();
+
+  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
+
+  /* System interrupt init*/
+  /* MemoryManagement_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(MemoryManagement_IRQn, 0, 0);
+  /* BusFault_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(BusFault_IRQn, 0, 0);
+  /* UsageFault_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(UsageFault_IRQn, 0, 0);
+  /* SVCall_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(SVCall_IRQn, 0, 0);
+  /* DebugMonitor_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DebugMonitor_IRQn, 0, 0);
+  /* PendSV_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(PendSV_IRQn, 0, 0);
+  /* SysTick_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
+
+    /**DISABLE: JTAG-DP Disabled and SW-DP Disabled 
+    */
+  __HAL_AFIO_REMAP_SWJ_DISABLE();
+
+  /* USER CODE BEGIN MspInit 1 */
+
+  /* USER CODE END MspInit 1 */
+}
+
+void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
+{
+
+  if(htim_base->Instance==TIM4)
+  {
+  /* USER CODE BEGIN TIM4_MspInit 0 */
+
+  /* USER CODE END TIM4_MspInit 0 */
+    /* Peripheral clock enable */
+    __HAL_RCC_TIM4_CLK_ENABLE();
+  /* USER CODE BEGIN TIM4_MspInit 1 */
+
+  /* USER CODE END TIM4_MspInit 1 */
+  }
+
+}
+
+void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
+{
+
+  GPIO_InitTypeDef GPIO_InitStruct;
+  if(htim->Instance==TIM4)
+  {
+  /* USER CODE BEGIN TIM4_MspPostInit 0 */
+
+  /* USER CODE END TIM4_MspPostInit 0 */
+  
+    /**TIM4 GPIO Configuration    
+    PB6     ------> TIM4_CH1 
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_6;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /* USER CODE BEGIN TIM4_MspPostInit 1 */
+
+  /* USER CODE END TIM4_MspPostInit 1 */
+  }
+
+}
+
+void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
+{
+
+  if(htim_base->Instance==TIM4)
+  {
+  /* USER CODE BEGIN TIM4_MspDeInit 0 */
+
+  /* USER CODE END TIM4_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_TIM4_CLK_DISABLE();
+  }
+  /* USER CODE BEGIN TIM4_MspDeInit 1 */
+
+  /* USER CODE END TIM4_MspDeInit 1 */
+
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Src/stm32f1xx_it.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,189 @@
+/**
+  ******************************************************************************
+  * @file    stm32f1xx_it.c
+  * @brief   Interrupt Service Routines.
+  ******************************************************************************
+  *
+  * COPYRIGHT(c) 2017 STMicroelectronics
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+#include "stm32f1xx.h"
+#include "stm32f1xx_it.h"
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+
+/******************************************************************************/
+/*            Cortex-M3 Processor Interruption and Exception Handlers         */ 
+/******************************************************************************/
+
+/**
+* @brief This function handles Non maskable interrupt.
+*/
+void NMI_Handler(void)
+{
+  /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+  /* USER CODE END NonMaskableInt_IRQn 0 */
+  /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+
+  /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+* @brief This function handles Hard fault interrupt.
+*/
+void HardFault_Handler(void)
+{
+  /* USER CODE BEGIN HardFault_IRQn 0 */
+
+  /* USER CODE END HardFault_IRQn 0 */
+  while (1)
+  {
+  }
+  /* USER CODE BEGIN HardFault_IRQn 1 */
+
+  /* USER CODE END HardFault_IRQn 1 */
+}
+
+/**
+* @brief This function handles Memory management fault.
+*/
+void MemManage_Handler(void)
+{
+  /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+  /* USER CODE END MemoryManagement_IRQn 0 */
+  while (1)
+  {
+  }
+  /* USER CODE BEGIN MemoryManagement_IRQn 1 */
+
+  /* USER CODE END MemoryManagement_IRQn 1 */
+}
+
+/**
+* @brief This function handles Prefetch fault, memory access fault.
+*/
+void BusFault_Handler(void)
+{
+  /* USER CODE BEGIN BusFault_IRQn 0 */
+
+  /* USER CODE END BusFault_IRQn 0 */
+  while (1)
+  {
+  }
+  /* USER CODE BEGIN BusFault_IRQn 1 */
+
+  /* USER CODE END BusFault_IRQn 1 */
+}
+
+/**
+* @brief This function handles Undefined instruction or illegal state.
+*/
+void UsageFault_Handler(void)
+{
+  /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+  /* USER CODE END UsageFault_IRQn 0 */
+  while (1)
+  {
+  }
+  /* USER CODE BEGIN UsageFault_IRQn 1 */
+
+  /* USER CODE END UsageFault_IRQn 1 */
+}
+
+/**
+* @brief This function handles System service call via SWI instruction.
+*/
+void SVC_Handler(void)
+{
+  /* USER CODE BEGIN SVCall_IRQn 0 */
+
+  /* USER CODE END SVCall_IRQn 0 */
+  /* USER CODE BEGIN SVCall_IRQn 1 */
+
+  /* USER CODE END SVCall_IRQn 1 */
+}
+
+/**
+* @brief This function handles Debug monitor.
+*/
+void DebugMon_Handler(void)
+{
+  /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+  /* USER CODE END DebugMonitor_IRQn 0 */
+  /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+  /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+* @brief This function handles Pendable request for system service.
+*/
+void PendSV_Handler(void)
+{
+  /* USER CODE BEGIN PendSV_IRQn 0 */
+
+  /* USER CODE END PendSV_IRQn 0 */
+  /* USER CODE BEGIN PendSV_IRQn 1 */
+
+  /* USER CODE END PendSV_IRQn 1 */
+}
+
+/**
+* @brief This function handles System tick timer.
+*/
+void SysTick_Handler(void)
+{
+  /* USER CODE BEGIN SysTick_IRQn 0 */
+
+  /* USER CODE END SysTick_IRQn 0 */
+  HAL_IncTick();
+  HAL_SYSTICK_IRQHandler();
+  /* USER CODE BEGIN SysTick_IRQn 1 */
+
+  /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32F1xx Peripheral Interrupt Handlers                                    */
+/* Add here the Interrupt Handlers for the used peripherals.                  */
+/* For the available peripheral interrupt handler names,                      */
+/* please refer to the startup file (startup_stm32f1xx.s).                    */
+/******************************************************************************/
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/Src/system_stm32f1xx.c	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,448 @@
+/**
+  ******************************************************************************
+  * @file    system_stm32f1xx.c
+  * @author  MCD Application Team
+  * @version V4.1.0
+  * @date    29-April-2016
+  * @brief   CMSIS Cortex-M3 Device Peripheral Access Layer System Source File.
+  * 
+  * 1.  This file provides two functions and one global variable to be called from 
+  *     user application:
+  *      - SystemInit(): Setups the system clock (System clock source, PLL Multiplier
+  *                      factors, AHB/APBx prescalers and Flash settings). 
+  *                      This function is called at startup just after reset and 
+  *                      before branch to main program. This call is made inside
+  *                      the "startup_stm32f1xx_xx.s" file.
+  *
+  *      - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
+  *                                  by the user application to setup the SysTick 
+  *                                  timer or configure other parameters.
+  *                                     
+  *      - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
+  *                                 be called whenever the core clock is changed
+  *                                 during program execution.
+  *
+  * 2. After each device reset the HSI (8 MHz) is used as system clock source.
+  *    Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to
+  *    configure the system clock before to branch to main program.
+  *
+  * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on
+  *    the product used), refer to "HSE_VALUE". 
+  *    When HSE is used as system clock source, directly or through PLL, and you
+  *    are using different crystal you have to adapt the HSE value to your own
+  *    configuration.
+  *        
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/** @addtogroup CMSIS
+  * @{
+  */
+
+/** @addtogroup stm32f1xx_system
+  * @{
+  */  
+  
+/** @addtogroup STM32F1xx_System_Private_Includes
+  * @{
+  */
+
+#include "stm32f1xx.h"
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F1xx_System_Private_TypesDefinitions
+  * @{
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F1xx_System_Private_Defines
+  * @{
+  */
+
+#if !defined  (HSE_VALUE) 
+  #define HSE_VALUE    ((uint32_t)8000000) /*!< Default value of the External oscillator in Hz.
+                                                This value can be provided and adapted by the user application. */
+#endif /* HSE_VALUE */
+
+#if !defined  (HSI_VALUE)
+  #define HSI_VALUE    ((uint32_t)8000000) /*!< Default value of the Internal oscillator in Hz.
+                                                This value can be provided and adapted by the user application. */
+#endif /* HSI_VALUE */
+
+/*!< Uncomment the following line if you need to use external SRAM  */ 
+#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+/* #define DATA_IN_ExtSRAM */
+#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+     Internal SRAM. */ 
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET  0x0 /*!< Vector Table base offset field. 
+                                  This value must be a multiple of 0x200. */
+
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F1xx_System_Private_Macros
+  * @{
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F1xx_System_Private_Variables
+  * @{
+  */
+
+/*******************************************************************************
+*  Clock Definitions
+*******************************************************************************/
+#if defined(STM32F100xB) ||defined(STM32F100xE)
+  uint32_t SystemCoreClock         = 24000000;        /*!< System Clock Frequency (Core Clock) */
+#else /*!< HSI Selected as System Clock source */
+  uint32_t SystemCoreClock         = 72000000;        /*!< System Clock Frequency (Core Clock) */
+#endif
+
+const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+const uint8_t APBPrescTable[8] =  {0, 0, 0, 0, 1, 2, 3, 4};
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes
+  * @{
+  */
+
+#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+#ifdef DATA_IN_ExtSRAM
+  static void SystemInit_ExtMemCtl(void); 
+#endif /* DATA_IN_ExtSRAM */
+#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
+
+/**
+  * @}
+  */
+
+/** @addtogroup STM32F1xx_System_Private_Functions
+  * @{
+  */
+
+/**
+  * @brief  Setup the microcontroller system
+  *         Initialize the Embedded Flash Interface, the PLL and update the 
+  *         SystemCoreClock variable.
+  * @note   This function should be used only after reset.
+  * @param  None
+  * @retval None
+  */
+void SystemInit (void)
+{
+  /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
+  /* Set HSION bit */
+  RCC->CR |= (uint32_t)0x00000001;
+
+  /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
+#if !defined(STM32F105xC) && !defined(STM32F107xC)
+  RCC->CFGR &= (uint32_t)0xF8FF0000;
+#else
+  RCC->CFGR &= (uint32_t)0xF0FF0000;
+#endif /* STM32F105xC */   
+  
+  /* Reset HSEON, CSSON and PLLON bits */
+  RCC->CR &= (uint32_t)0xFEF6FFFF;
+
+  /* Reset HSEBYP bit */
+  RCC->CR &= (uint32_t)0xFFFBFFFF;
+
+  /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
+  RCC->CFGR &= (uint32_t)0xFF80FFFF;
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  /* Reset PLL2ON and PLL3ON bits */
+  RCC->CR &= (uint32_t)0xEBFFFFFF;
+
+  /* Disable all interrupts and clear pending bits  */
+  RCC->CIR = 0x00FF0000;
+
+  /* Reset CFGR2 register */
+  RCC->CFGR2 = 0x00000000;
+#elif defined(STM32F100xB) || defined(STM32F100xE)
+  /* Disable all interrupts and clear pending bits  */
+  RCC->CIR = 0x009F0000;
+
+  /* Reset CFGR2 register */
+  RCC->CFGR2 = 0x00000000;      
+#else
+  /* Disable all interrupts and clear pending bits  */
+  RCC->CIR = 0x009F0000;
+#endif /* STM32F105xC */
+    
+#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+  #ifdef DATA_IN_ExtSRAM
+    SystemInit_ExtMemCtl(); 
+  #endif /* DATA_IN_ExtSRAM */
+#endif 
+
+#ifdef VECT_TAB_SRAM
+  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
+#else
+  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
+#endif 
+}
+
+/**
+  * @brief  Update SystemCoreClock variable according to Clock Register Values.
+  *         The SystemCoreClock variable contains the core clock (HCLK), it can
+  *         be used by the user application to setup the SysTick timer or configure
+  *         other parameters.
+  *           
+  * @note   Each time the core clock (HCLK) changes, this function must be called
+  *         to update SystemCoreClock variable value. Otherwise, any configuration
+  *         based on this variable will be incorrect.         
+  *     
+  * @note   - The system frequency computed by this function is not the real 
+  *           frequency in the chip. It is calculated based on the predefined 
+  *           constant and the selected clock source:
+  *             
+  *           - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
+  *                                              
+  *           - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
+  *                          
+  *           - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) 
+  *             or HSI_VALUE(*) multiplied by the PLL factors.
+  *         
+  *         (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value
+  *             8 MHz) but the real value may vary depending on the variations
+  *             in voltage and temperature.   
+  *    
+  *         (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value
+  *              8 MHz or 25 MHz, depending on the product used), user has to ensure
+  *              that HSE_VALUE is same as the real frequency of the crystal used.
+  *              Otherwise, this function may have wrong result.
+  *                
+  *         - The result of this function could be not correct when using fractional
+  *           value for HSE crystal.
+  * @param  None
+  * @retval None
+  */
+void SystemCoreClockUpdate (void)
+{
+  uint32_t tmp = 0, pllmull = 0, pllsource = 0;
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+  uint32_t prediv1source = 0, prediv1factor = 0, prediv2factor = 0, pll2mull = 0;
+#endif /* STM32F105xC */
+
+#if defined(STM32F100xB) || defined(STM32F100xE)
+  uint32_t prediv1factor = 0;
+#endif /* STM32F100xB or STM32F100xE */
+    
+  /* Get SYSCLK source -------------------------------------------------------*/
+  tmp = RCC->CFGR & RCC_CFGR_SWS;
+  
+  switch (tmp)
+  {
+    case 0x00:  /* HSI used as system clock */
+      SystemCoreClock = HSI_VALUE;
+      break;
+    case 0x04:  /* HSE used as system clock */
+      SystemCoreClock = HSE_VALUE;
+      break;
+    case 0x08:  /* PLL used as system clock */
+
+      /* Get PLL clock source and multiplication factor ----------------------*/
+      pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
+      pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
+      
+#if !defined(STM32F105xC) && !defined(STM32F107xC)      
+      pllmull = ( pllmull >> 18) + 2;
+      
+      if (pllsource == 0x00)
+      {
+        /* HSI oscillator clock divided by 2 selected as PLL clock entry */
+        SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
+      }
+      else
+      {
+ #if defined(STM32F100xB) || defined(STM32F100xE)
+       prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1;
+       /* HSE oscillator clock selected as PREDIV1 clock entry */
+       SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; 
+ #else
+        /* HSE selected as PLL clock entry */
+        if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET)
+        {/* HSE oscillator clock divided by 2 */
+          SystemCoreClock = (HSE_VALUE >> 1) * pllmull;
+        }
+        else
+        {
+          SystemCoreClock = HSE_VALUE * pllmull;
+        }
+ #endif
+      }
+#else
+      pllmull = pllmull >> 18;
+      
+      if (pllmull != 0x0D)
+      {
+         pllmull += 2;
+      }
+      else
+      { /* PLL multiplication factor = PLL input clock * 6.5 */
+        pllmull = 13 / 2; 
+      }
+            
+      if (pllsource == 0x00)
+      {
+        /* HSI oscillator clock divided by 2 selected as PLL clock entry */
+        SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
+      }
+      else
+      {/* PREDIV1 selected as PLL clock entry */
+        
+        /* Get PREDIV1 clock source and division factor */
+        prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC;
+        prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1;
+        
+        if (prediv1source == 0)
+        { 
+          /* HSE oscillator clock selected as PREDIV1 clock entry */
+          SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull;          
+        }
+        else
+        {/* PLL2 clock selected as PREDIV1 clock entry */
+          
+          /* Get PREDIV2 division factor and PLL2 multiplication factor */
+          prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4) + 1;
+          pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8 ) + 2; 
+          SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull;                         
+        }
+      }
+#endif /* STM32F105xC */ 
+      break;
+
+    default:
+      SystemCoreClock = HSI_VALUE;
+      break;
+  }
+  
+  /* Compute HCLK clock frequency ----------------*/
+  /* Get HCLK prescaler */
+  tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
+  /* HCLK clock frequency */
+  SystemCoreClock >>= tmp;  
+}
+
+#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+/**
+  * @brief  Setup the external memory controller. Called in startup_stm32f1xx.s 
+  *          before jump to __main
+  * @param  None
+  * @retval None
+  */ 
+#ifdef DATA_IN_ExtSRAM
+/**
+  * @brief  Setup the external memory controller. 
+  *         Called in startup_stm32f1xx_xx.s/.c before jump to main.
+  *         This function configures the external SRAM mounted on STM3210E-EVAL
+  *         board (STM32 High density devices). This SRAM will be used as program
+  *         data memory (including heap and stack).
+  * @param  None
+  * @retval None
+  */ 
+void SystemInit_ExtMemCtl(void) 
+{
+  __IO uint32_t tmpreg;
+  /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is 
+    required, then adjust the Register Addresses */
+
+  /* Enable FSMC clock */
+  RCC->AHBENR = 0x00000114;
+
+  /* Delay after an RCC peripheral clock enabling */
+  tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN);
+  
+  /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */
+  RCC->APB2ENR = 0x000001E0;
+  
+  /* Delay after an RCC peripheral clock enabling */
+  tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN);
+
+  (void)(tmpreg);
+  
+/* ---------------  SRAM Data lines, NOE and NWE configuration ---------------*/
+/*----------------  SRAM Address lines configuration -------------------------*/
+/*----------------  NOE and NWE configuration --------------------------------*/  
+/*----------------  NE3 configuration ----------------------------------------*/
+/*----------------  NBL0, NBL1 configuration ---------------------------------*/
+  
+  GPIOD->CRL = 0x44BB44BB;  
+  GPIOD->CRH = 0xBBBBBBBB;
+
+  GPIOE->CRL = 0xB44444BB;  
+  GPIOE->CRH = 0xBBBBBBBB;
+
+  GPIOF->CRL = 0x44BBBBBB;  
+  GPIOF->CRH = 0xBBBB4444;
+
+  GPIOG->CRL = 0x44BBBBBB;  
+  GPIOG->CRH = 0x444B4B44;
+   
+/*----------------  FSMC Configuration ---------------------------------------*/  
+/*----------------  Enable FSMC Bank1_SRAM Bank ------------------------------*/
+  
+  FSMC_Bank1->BTCR[4] = 0x00001091;
+  FSMC_Bank1->BTCR[5] = 0x00110212;
+}
+#endif /* DATA_IN_ExtSRAM */
+#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+  
+/**
+  * @}
+  */    
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/f103c8.elf.launch	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="com.atollic.hardwaredebug.launch.launchConfigurationType">
+<stringAttribute key="com.atollic.hardwaredebug.jlink_common.cpu_core" value="Cortex-M" />
+<stringAttribute key="com.atollic.hardwaredebug.jlink_common.device" value="STM32F103C8" />
+<stringAttribute key="com.atollic.hardwaredebug.jlink_common.endian" value="little" />
+<stringAttribute key="com.atollic.hardwaredebug.jlink_common.init_speed" value="4000" />
+<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_auto" value="true" />
+<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_irpre" value="0" />
+<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_pos" value="0" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.analyzeCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#xD;&#xA;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#xD;&#xA;monitor flash set_parallelism_mode 2&#xD;&#xA;&#xD;&#xA;# Load the program executable&#xD;&#xA;load&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#xD;&#xA;set *0xE0042004 = (*0xE0042004) | 0x7&#xD;&#xA;# Start the executable&#xD;&#xA;continue" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.enable_swv" value="false" />
+<intAttribute key="com.atollic.hardwaredebug.launch.formatVersion" value="2" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.ipAddress" value="localhost" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.jtagDevice" value="ST-LINK" />
+<intAttribute key="com.atollic.hardwaredebug.launch.portNumber" value="61234" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.remoteCommand" value="target extended-remote" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#xD;&#xA;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#xD;&#xA;monitor flash set_parallelism_mode 2&#xD;&#xA;&#xD;&#xA;# Load the program executable&#xD;&#xA;load&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#xD;&#xA;set *0xE0042004 = (*0xE0042004) | 0x7&#xD;&#xA;# Set a breakpoint at main().&#xD;&#xA;tbreak main&#xD;&#xA;&#xD;&#xA;# Run to the breakpoint.&#xD;&#xA;continue" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value="-p 61234 -l 1 -d" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.startServer" value="true" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.swd_mode" value="true" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.swv_port" value="61235" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="120" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="120000000" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.swv_wait_for_sync" value="true" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.useRemoteTarget" value="true" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.verifyCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#xD;&#xA;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#xD;&#xA;monitor flash set_parallelism_mode 2&#xD;&#xA;&#xD;&#xA;# Load the program executable&#xD;&#xA;load&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#xD;&#xA;set *0xE0042004 = (*0xE0042004) | 0x7&#xD;&#xA;# The executable starts automatically" />
+<booleanAttribute key="com.atollic.hardwaredebug.stlink.enable_logging" value="false" />
+<stringAttribute key="com.atollic.hardwaredebug.stlink.log_file" value="/home/sergey/Projects/ARM_workspace_7.0/f103c8/\Debug\st-link_gdbserver_log.txt" />
+<booleanAttribute key="com.atollic.hardwaredebug.stlink.verify_flash" value="false" />
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb" />
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="Standard (Windows)" />
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi" />
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false" />
+<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb" />
+<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2" />
+<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/f103c8.elf" />
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="f103c8" />
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="" />
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/f103c8" />
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4" />
+</listAttribute>
+<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#xD;&#xA;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#xD;&#xA;" />
+</launchConfiguration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/f103c8/f103c8.ioc	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,96 @@
+#MicroXplorer Configuration settings - do not modify
+File.Version=6
+KeepUserPlacement=false
+Mcu.Family=STM32F1
+Mcu.IP0=NVIC
+Mcu.IP1=RCC
+Mcu.IP2=SYS
+Mcu.IP3=TIM4
+Mcu.IPNb=4
+Mcu.Name=STM32F103C(8-B)Tx
+Mcu.Package=LQFP48
+Mcu.Pin0=PC14-OSC32_IN
+Mcu.Pin1=PC15-OSC32_OUT
+Mcu.Pin2=PD0-OSC_IN
+Mcu.Pin3=PD1-OSC_OUT
+Mcu.Pin4=PA5
+Mcu.Pin5=PB6
+Mcu.Pin6=VP_SYS_VS_ND
+Mcu.Pin7=VP_SYS_VS_Systick
+Mcu.Pin8=VP_TIM4_VS_ClockSourceINT
+Mcu.PinsNb=9
+Mcu.UserConstants=
+Mcu.UserName=STM32F103C8Tx
+MxCube.Version=4.18.0
+MxDb.Version=DB.4.0.180
+NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true
+NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true
+NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true
+NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true
+NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true
+NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true
+NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
+NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true
+NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true
+NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true
+PA5.Locked=true
+PA5.Signal=GPIO_Output
+PB6.Signal=S_TIM4_CH1
+PC14-OSC32_IN.Mode=LSE-External-Oscillator
+PC14-OSC32_IN.Signal=RCC_OSC32_IN
+PC15-OSC32_OUT.Mode=LSE-External-Oscillator
+PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
+PCC.Checker=false
+PCC.Line=STM32F103
+PCC.MCU=STM32F103C(8-B)Tx
+PCC.MXVersion=4.18.0
+PCC.PartNumber=STM32F103C8Tx
+PCC.Seq0=0
+PCC.Series=STM32F1
+PCC.Temperature=25
+PCC.Vdd=3.3
+PD0-OSC_IN.Mode=HSE-External-Oscillator
+PD0-OSC_IN.Signal=RCC_OSC_IN
+PD1-OSC_OUT.Mode=HSE-External-Oscillator
+PD1-OSC_OUT.Signal=RCC_OSC_OUT
+ProjectManager.AskForMigrate=true
+ProjectManager.BackupPrevious=false
+ProjectManager.CompilerOptimize=2
+ProjectManager.ComputerToolchain=false
+ProjectManager.CoupleFile=false
+ProjectManager.CustomerFirmwarePackage=/home/sergey/STM32Cube/Repository/STM32Cube_FW_F1_V1.4.0
+ProjectManager.DefaultFWLocation=true
+ProjectManager.DeletePrevious=true
+ProjectManager.DeviceId=STM32F103C8Tx
+ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.4.0
+ProjectManager.FreePins=false
+ProjectManager.HalAssertFull=false
+ProjectManager.HeapSize=0x200
+ProjectManager.KeepUserCode=true
+ProjectManager.LastFirmware=true
+ProjectManager.LibraryCopy=1
+ProjectManager.PreviousToolchain=TrueSTUDIO
+ProjectManager.ProjectBuild=false
+ProjectManager.ProjectFileName=f103c8.ioc
+ProjectManager.ProjectName=f103c8
+ProjectManager.StackSize=0x400
+ProjectManager.TargetToolchain=TrueSTUDIO
+ProjectManager.ToolChainLocation=/home/sergey/Projects/ARM_workspace_7.0/f103c8
+ProjectManager.UnderRoot=true
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL,2-SystemClock_Config-RCC-false-HAL,3-MX_TIM4_Init-TIM4-false-HAL
+RCC.APB1Freq_Value=8000000
+RCC.APB2Freq_Value=8000000
+RCC.FamilyName=M
+RCC.IPParameters=APB1Freq_Value,APB2Freq_Value,FamilyName,PLLCLKFreq_Value,PLLMCOFreq_Value,TimSysFreq_Value
+RCC.PLLCLKFreq_Value=8000000
+RCC.PLLMCOFreq_Value=4000000
+RCC.TimSysFreq_Value=8000000
+SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1
+SH.S_TIM4_CH1.ConfNb=1
+VP_SYS_VS_ND.Mode=No_Debug
+VP_SYS_VS_ND.Signal=SYS_VS_ND
+VP_SYS_VS_Systick.Mode=SysTick
+VP_SYS_VS_Systick.Signal=SYS_VS_Systick
+VP_TIM4_VS_ClockSourceINT.Mode=Internal
+VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
+board=f103c8
--- a/halpp/include/gpio.h	Fri Jan 13 02:11:02 2017 +0300
+++ b/halpp/include/gpio.h	Mon Jan 16 11:04:47 2017 +0300
@@ -1,14 +1,66 @@
 #pragma once
 
 namespace halpp {
+	typedef enum {
+		GpioSpeedLow = 0, // below 5 MHz
+		GpioSpeedMedium = 1, // 5-25 MHz
+		GpioSpeedHigh = 2, // 25-50 MHz
+		GpioSpeedVeryHigh = 3 // above 50 MHz
+	} GpioSpeed;
 
-	template <typename TTraits> class TGpio {
+	typedef enum {
+		GpioModeInput = 0,
+		GpioModeOutput = 1,
+		GpioModeAlternative = 2
+	} GpioMode;
+
+	typedef enum {
+		GpioNoPull = 0,
+		GpioPullUp = 1,
+		GpioPullDown = 2,
+	} GpioPullMode;
+
+	typedef enum {
+		GpioPushPull = 0,
+		GpioOpenDrain = 1
+	} GpioOutputType;
+
+	template <typename TDev> class TGpio {
+		TDev& m_dev;
+
+		explicit TGpio(const TGpio& ref);
 	public:
+		TGpio(TDev& dev) : m_dev(dev) {
 
+		}
+
+		void SetPinSpeed(unsigned short pin, GpioSpeed speed) {
+			m_dev.OSPEEDR = (m_dev.OSPEED & (~(3U << (pin * 2)))) | (speed << (pin * 2));
+		}
+
+		void SetPinMode(unsigned short pin, GpioMode mode) {
+			m_dev.MODER = (m_dev.MODER & (~(3U << (pin * 2)))) | (mode << (pin * 2));
+		}
+
+		void SetPinPullMode(unsigned short pin, GpioPullMode mode) {
+			m_dev.PUPDR = (m_dev.PUPDR & (~(3U << (pin * 2)))) | (mode << (pin * 2));
+		}
+
+		void SetPinOutputType(unsigned short pin, GpioOutputType type) {
+			m_dev.OTYPER = (m_dev.OTYPER & (~(1U << pin))) | (type << pin);
+		}
+
+		void TooglePin(unsigned short pin) {
+			m_dev.ODR ^= 1U << pin;
+		}
+
+		void WritePin(unsigned short pin, unsigned short value) {
+			m_dev.ODR = (m_dev.ODR & (~(1U << pin))) | ((value & 1U) << pin);
+		}
 
 	};
 
-	template <typename TGpio, unsigned short Pin> class TGpioPin {
+	template <typename TG, unsigned short Pin> class TGpioPin {
 
 	};
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/halpp/include/rcc.h	Mon Jan 16 11:04:47 2017 +0300
@@ -0,0 +1,5 @@
+#pragma once
+
+namespace halpp {
+
+}
--- a/l476rg-hal-test/src/main.cpp	Fri Jan 13 02:11:02 2017 +0300
+++ b/l476rg-hal-test/src/main.cpp	Mon Jan 16 11:04:47 2017 +0300
@@ -1,34 +1,34 @@
 /*
-******************************************************************************
-File:     main.c
-Info:     Generated by Atollic TrueSTUDIO(R) 7.0.1   2017-01-12
+ ******************************************************************************
+ File:     main.c
+ Info:     Generated by Atollic TrueSTUDIO(R) 7.0.1   2017-01-12
 
-The MIT License (MIT)
-Copyright (c) 2009-2016 Atollic AB
+ The MIT License (MIT)
+ Copyright (c) 2009-2016 Atollic AB
 
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-******************************************************************************
-*/
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+ ******************************************************************************
+ */
 
 /* Includes */
 #include "stm32l4xx.h"
-#include "msp.h"
+#include "gpio.h"
 
 /* Private macro */
 /* Private variables */
@@ -36,32 +36,96 @@
 /* Private functions */
 
 /**
-**===========================================================================
-**
-**  Abstract: main program
-**
-**===========================================================================
-*/
-int main(void)
-{
-  int i = 0;
+ **===========================================================================
+ **
+ **  Abstract: main program
+ **
+ **===========================================================================
+ */
+
+using namespace halpp;
+
+template<typename TDev, unsigned short PIN> class TLed {
+	TDev& m_dev;
+public:
+	TLed(TDev& dev) :
+			m_dev(dev) {
+
+	}
+
+	void Init() const {
+		m_dev.SetPinMode(5, halpp::GpioModeOutput);
+		m_dev.SetPinOutputType(5, halpp::GpioOutputType::GpioPushPull);
+		m_dev.SetPinPullMode(5, halpp::GpioPullMode::GpioNoPull);
+	}
+
+	void Set() const {
+		m_dev.WritePin(PIN, 1);
+	}
+
+	void Reset() const {
+		m_dev.WritePin(PIN, 0);
+	}
+
+	void Toogle() const {
+		m_dev.TooglePin(PIN);
+	}
+};
+
+class AHB2Bus {
+public:
+	static void Enable(unsigned int flag) {
+		RCC->AHB2ENR |= flag;
+	}
+};
 
-  /**
-  *  IMPORTANT NOTE!
-  *  The symbol VECT_TAB_SRAM needs to be defined when building the project
-  *  if code has been located to RAM and interrupts are used. 
-  *  Otherwise the interrupt table located in flash will be used.
-  *  See also the <system_*.c> file and how the SystemInit() function updates 
-  *  SCB->VTOR register.  
-  *  E.g.  SCB->VTOR = 0x20000000;  
-  */
+template<typename TBus, unsigned short ENF> class TDevice {
+public:
+	static void Enable() {
+		TBus::Enable(ENF);
+	}
+};
+
+class GpioA : public TGpio<GPIO_TypeDef>, public TDevice<AHB2Bus, RCC_AHB2ENR_GPIOAEN> {
+	static GpioA m_instance;
+	typedef TGpio<GPIO_TypeDef> GpioBase;
+public:
+
+	GpioA(GPIO_TypeDef& dev) : GpioBase(dev) {
+
+	}
+
+	static GpioA& instance() {
+		return m_instance;
+	}
+};
+
+GpioA GpioA::m_instance(*GPIOA);
+
+int main(void) {
 
-  /* TODO - Add your application code here */
+	/**
+	 *  IMPORTANT NOTE!
+	 *  The symbol VECT_TAB_SRAM needs to be defined when building the project
+	 *  if code has been located to RAM and interrupts are used.
+	 *  Otherwise the interrupt table located in flash will be used.
+	 *  See also the <system_*.c> file and how the SystemInit() function updates
+	 *  SCB->VTOR register.
+	 *  E.g.  SCB->VTOR = 0x20000000;
+	 */
+
+	/* TODO - Add your application code here */
 
-  /* Infinite loop */
-  while (1)
-  {
-	  Hardware::pwm1.SetPulse(150);
-	i++;
-  }
+	GpioA::Enable();
+
+	TLed<halpp::TGpio<GPIO_TypeDef>, 5> led1(GpioA::instance());
+	led1.Init();
+
+	/* Infinite loop */
+	while (1) {
+		led1.Toogle();
+
+		for (int i = 0; i < 1000000; i++) {
+		}
+	}
 }
--- a/l476rg-hal-test/src/msp.cpp	Fri Jan 13 02:11:02 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-#include "msp.h"
-
-Hardware::PwmChannel1 Hardware::pwm1(*TIM3);
--- a/l476rg/.mxproject	Fri Jan 13 02:11:02 2017 +0300
+++ b/l476rg/.mxproject	Mon Jan 16 11:04:47 2017 +0300
@@ -8,6 +8,6 @@
 LibFiles=Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_def.h;Drivers/STM32L4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ramfunc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_cortex.h;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/cmsis_gcc.h;
 
 [PreviousUsedTStudioFiles]
-SourceFiles=../Src/main.c;../Src/gpio.c;../Src/tim.c;../Src/usart.c;../Src/stm32l4xx_it.c;../Src/stm32l4xx_hal_msp.c;../Src/stm32l4xx_hal_timebase_TIM.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;../Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;../Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l476xx.s;
+SourceFiles=../Src/main.c;../Src/gpio.c;../Src/usart.c;../Src/stm32l4xx_it.c;../Src/stm32l4xx_hal_msp.c;../Src/stm32l4xx_hal_timebase_TIM.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;../Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;../Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l476xx.s;
 HeaderPath=../Drivers/STM32L4xx_HAL_Driver/Inc;../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32L4xx/Include;../Drivers/CMSIS/Include;
 
--- a/l476rg/Inc/tim.h	Fri Jan 13 02:11:02 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/**
-  ******************************************************************************
-  * File Name          : TIM.h
-  * Description        : This file provides code for the configuration
-  *                      of the TIM instances.
-  ******************************************************************************
-  *
-  * COPYRIGHT(c) 2017 STMicroelectronics
-  *
-  * Redistribution and use in source and binary forms, with or without modification,
-  * are permitted provided that the following conditions are met:
-  *   1. Redistributions of source code must retain the above copyright notice,
-  *      this list of conditions and the following disclaimer.
-  *   2. Redistributions in binary form must reproduce the above copyright notice,
-  *      this list of conditions and the following disclaimer in the documentation
-  *      and/or other materials provided with the distribution.
-  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-  *      may be used to endorse or promote products derived from this software
-  *      without specific prior written permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  *
-  ******************************************************************************
-  */
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __tim_H
-#define __tim_H
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32l4xx_hal.h"
-#include "main.h"
-
-/* USER CODE BEGIN Includes */
-
-/* USER CODE END Includes */
-
-extern TIM_HandleTypeDef htim2;
-
-/* USER CODE BEGIN Private defines */
-
-/* USER CODE END Private defines */
-
-extern void Error_Handler(void);
-
-void MX_TIM2_Init(void);
-                    
-void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
-                
-
-/* USER CODE BEGIN Prototypes */
-
-/* USER CODE END Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /*__ tim_H */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- a/l476rg/Src/gpio.c	Fri Jan 13 02:11:02 2017 +0300
+++ b/l476rg/Src/gpio.c	Mon Jan 16 11:04:47 2017 +0300
@@ -69,6 +69,16 @@
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
 
+  /*Configure GPIO pin : PA5 */
+  GPIO_InitStruct.Pin = GPIO_PIN_5;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
+
 }
 
 /* USER CODE BEGIN 2 */
--- a/l476rg/Src/main.c	Fri Jan 13 02:11:02 2017 +0300
+++ b/l476rg/Src/main.c	Mon Jan 16 11:04:47 2017 +0300
@@ -33,7 +33,6 @@
 /* Includes ------------------------------------------------------------------*/
 #include "main.h"
 #include "stm32l4xx_hal.h"
-#include "tim.h"
 #include "usart.h"
 #include "gpio.h"
 
@@ -79,7 +78,6 @@
   /* Initialize all configured peripherals */
   MX_GPIO_Init();
   MX_USART2_UART_Init();
-  MX_TIM2_Init();
 
   /* USER CODE BEGIN 2 */
 
--- a/l476rg/Src/tim.c	Fri Jan 13 02:11:02 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/**
-  ******************************************************************************
-  * File Name          : TIM.c
-  * Description        : This file provides code for the configuration
-  *                      of the TIM instances.
-  ******************************************************************************
-  *
-  * COPYRIGHT(c) 2017 STMicroelectronics
-  *
-  * Redistribution and use in source and binary forms, with or without modification,
-  * are permitted provided that the following conditions are met:
-  *   1. Redistributions of source code must retain the above copyright notice,
-  *      this list of conditions and the following disclaimer.
-  *   2. Redistributions in binary form must reproduce the above copyright notice,
-  *      this list of conditions and the following disclaimer in the documentation
-  *      and/or other materials provided with the distribution.
-  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-  *      may be used to endorse or promote products derived from this software
-  *      without specific prior written permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "tim.h"
-
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-
-TIM_HandleTypeDef htim2;
-
-/* TIM2 init function */
-void MX_TIM2_Init(void)
-{
-  TIM_MasterConfigTypeDef sMasterConfig;
-  TIM_OC_InitTypeDef sConfigOC;
-
-  htim2.Instance = TIM2;
-  htim2.Init.Prescaler = 799;
-  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
-  htim2.Init.Period = 99;
-  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
-  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
-  {
-    Error_Handler();
-  }
-
-  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
-  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
-  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
-  {
-    Error_Handler();
-  }
-
-  sConfigOC.OCMode = TIM_OCMODE_PWM1;
-  sConfigOC.Pulse = 29;
-  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
-  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
-  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
-  {
-    Error_Handler();
-  }
-
-  HAL_TIM_MspPostInit(&htim2);
-
-}
-
-void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle)
-{
-
-  if(tim_pwmHandle->Instance==TIM2)
-  {
-  /* USER CODE BEGIN TIM2_MspInit 0 */
-
-  /* USER CODE END TIM2_MspInit 0 */
-    /* Peripheral clock enable */
-    __HAL_RCC_TIM2_CLK_ENABLE();
-  /* USER CODE BEGIN TIM2_MspInit 1 */
-
-  /* USER CODE END TIM2_MspInit 1 */
-  }
-}
-void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
-{
-
-  GPIO_InitTypeDef GPIO_InitStruct;
-  if(timHandle->Instance==TIM2)
-  {
-  /* USER CODE BEGIN TIM2_MspPostInit 0 */
-
-  /* USER CODE END TIM2_MspPostInit 0 */
-  
-    /**TIM2 GPIO Configuration    
-    PA5     ------> TIM2_CH1 
-    */
-    GPIO_InitStruct.Pin = GPIO_PIN_5;
-    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-    GPIO_InitStruct.Pull = GPIO_NOPULL;
-    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-    GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
-    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
-  /* USER CODE BEGIN TIM2_MspPostInit 1 */
-
-  /* USER CODE END TIM2_MspPostInit 1 */
-  }
-
-}
-
-void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle)
-{
-
-  if(tim_pwmHandle->Instance==TIM2)
-  {
-  /* USER CODE BEGIN TIM2_MspDeInit 0 */
-
-  /* USER CODE END TIM2_MspDeInit 0 */
-    /* Peripheral clock disable */
-    __HAL_RCC_TIM2_CLK_DISABLE();
-  }
-  /* USER CODE BEGIN TIM2_MspDeInit 1 */
-
-  /* USER CODE END TIM2_MspDeInit 1 */
-} 
-
-/* USER CODE BEGIN 1 */
-
-/* USER CODE END 1 */
-
-/**
-  * @}
-  */
-
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- a/l476rg/l476rg.elf.launch	Fri Jan 13 02:11:02 2017 +0300
+++ b/l476rg/l476rg.elf.launch	Mon Jan 16 11:04:47 2017 +0300
@@ -1,50 +1,50 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="com.atollic.hardwaredebug.launch.launchConfigurationType">
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.cpu_core" value="Cortex-M"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.device" value="STM32L476RG"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.endian" value="little"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.init_speed" value="4000"/>
-<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_auto" value="true"/>
-<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_irpre" value="0"/>
-<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_pos" value="0"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.analyzeCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#13;&#10;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#13;&#10;monitor flash set_parallelism_mode 2&#13;&#10;&#13;&#10;# Load the program executable&#13;&#10;load&#9;&#9;&#13;&#10;&#13;&#10;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#13;&#10;set *0xE0042004 = (*0xE0042004) | 0x7&#13;&#10;# Start the executable&#13;&#10;continue"/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.enable_swv" value="false"/>
-<intAttribute key="com.atollic.hardwaredebug.launch.formatVersion" value="2"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.hwinitCommands" value="# Initialize your hardware here&#10;"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.ipAddress" value="localhost"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.jtagDevice" value="ST-LINK"/>
-<intAttribute key="com.atollic.hardwaredebug.launch.portNumber" value="61234"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.remoteCommand" value="target extended-remote"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#13;&#10;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#13;&#10;monitor flash set_parallelism_mode 2&#13;&#10;&#13;&#10;# Load the program executable&#13;&#10;load&#9;&#9;&#13;&#10;&#13;&#10;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#13;&#10;set *0xE0042004 = (*0xE0042004) | 0x7&#13;&#10;# Set a breakpoint at main().&#13;&#10;tbreak main&#13;&#10;&#13;&#10;# Run to the breakpoint.&#13;&#10;continue"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value="-p 61234 -l 1 -d -s"/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.startServer" value="true"/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.swd_mode" value="true"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.swv_port" value="61235"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="120"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="120000000"/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.swv_wait_for_sync" value="true"/>
-<intAttribute key="com.atollic.hardwaredebug.launch.trace_system" value="0"/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.useRemoteTarget" value="true"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.verifyCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#13;&#10;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#13;&#10;monitor flash set_parallelism_mode 2&#13;&#10;&#13;&#10;# Load the program executable&#13;&#10;load&#9;&#9;&#13;&#10;&#13;&#10;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#13;&#10;set *0xE0042004 = (*0xE0042004) | 0x7&#13;&#10;# The executable starts automatically"/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.verify_flash_download" value="true"/>
-<booleanAttribute key="com.atollic.hardwaredebug.stlink.enable_logging" value="false"/>
-<stringAttribute key="com.atollic.hardwaredebug.stlink.log_file" value="/home/sergey/Projects/ARM_workspace_7.0/l476rg/\Debug\st-link_gdbserver_log.txt"/>
-<booleanAttribute key="com.atollic.hardwaredebug.stlink.verify_flash" value="false"/>
-<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb"/>
-<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="Standard (Windows)"/>
-<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>
-<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
-<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb"/>
-<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
-<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/l476rg.elf"/>
-<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="l476rg"/>
-<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/l476rg"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#13;&#10;"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="com.atollic.hardwaredebug.launch.launchConfigurationType">
+<stringAttribute key="com.atollic.hardwaredebug.jlink_common.cpu_core" value="Cortex-M" />
+<stringAttribute key="com.atollic.hardwaredebug.jlink_common.device" value="STM32L476RG" />
+<stringAttribute key="com.atollic.hardwaredebug.jlink_common.endian" value="little" />
+<stringAttribute key="com.atollic.hardwaredebug.jlink_common.init_speed" value="4000" />
+<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_auto" value="true" />
+<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_irpre" value="0" />
+<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_pos" value="0" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.analyzeCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#xD;&#xA;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#xD;&#xA;monitor flash set_parallelism_mode 2&#xD;&#xA;&#xD;&#xA;# Load the program executable&#xD;&#xA;load&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#xD;&#xA;set *0xE0042004 = (*0xE0042004) | 0x7&#xD;&#xA;# Start the executable&#xD;&#xA;continue" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.enable_swv" value="false" />
+<intAttribute key="com.atollic.hardwaredebug.launch.formatVersion" value="2" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.hwinitCommands" value="# Initialize your hardware here&#xA;" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.ipAddress" value="localhost" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.jtagDevice" value="ST-LINK" />
+<intAttribute key="com.atollic.hardwaredebug.launch.portNumber" value="61234" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.remoteCommand" value="target extended-remote" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#xD;&#xA;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#xD;&#xA;monitor flash set_parallelism_mode 2&#xD;&#xA;&#xD;&#xA;# Load the program executable&#xD;&#xA;load&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#xD;&#xA;set *0xE0042004 = (*0xE0042004) | 0x7&#xD;&#xA;# Set a breakpoint at main().&#xD;&#xA;tbreak main&#xD;&#xA;&#xD;&#xA;# Run to the breakpoint.&#xD;&#xA;continue" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value="-p 61234 -l 1 -d -s" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.startServer" value="true" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.swd_mode" value="true" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.swv_port" value="61235" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="120" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="120000000" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.swv_wait_for_sync" value="true" />
+<intAttribute key="com.atollic.hardwaredebug.launch.trace_system" value="0" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.useRemoteTarget" value="true" />
+<stringAttribute key="com.atollic.hardwaredebug.launch.verifyCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#xD;&#xA;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#xD;&#xA;monitor flash set_parallelism_mode 2&#xD;&#xA;&#xD;&#xA;# Load the program executable&#xD;&#xA;load&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#xD;&#xA;set *0xE0042004 = (*0xE0042004) | 0x7&#xD;&#xA;# The executable starts automatically" />
+<booleanAttribute key="com.atollic.hardwaredebug.launch.verify_flash_download" value="true" />
+<booleanAttribute key="com.atollic.hardwaredebug.stlink.enable_logging" value="false" />
+<stringAttribute key="com.atollic.hardwaredebug.stlink.log_file" value="/home/sergey/Projects/ARM_workspace_7.0/l476rg/\Debug\st-link_gdbserver_log.txt" />
+<booleanAttribute key="com.atollic.hardwaredebug.stlink.verify_flash" value="false" />
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb" />
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="Standard (Windows)" />
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi" />
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false" />
+<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb" />
+<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2" />
+<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/l476rg.elf" />
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="l476rg" />
+<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false" />
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="" />
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/l476rg" />
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4" />
+</listAttribute>
+<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#xD;&#xA;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#xD;&#xA;" />
+</launchConfiguration>
--- a/l476rg/l476rg.ioc	Fri Jan 13 02:11:02 2017 +0300
+++ b/l476rg/l476rg.ioc	Mon Jan 16 11:04:47 2017 +0300
@@ -5,9 +5,8 @@
 Mcu.IP0=NVIC
 Mcu.IP1=RCC
 Mcu.IP2=SYS
-Mcu.IP3=TIM2
-Mcu.IP4=USART2
-Mcu.IPNb=5
+Mcu.IP3=USART2
+Mcu.IPNb=4
 Mcu.Name=STM32L476R(C-E-G)Tx
 Mcu.Package=LQFP64
 Mcu.Pin0=PC13
@@ -65,7 +64,7 @@
 PA3.Mode=Asynchronous
 PA3.Signal=USART2_RX
 PA5.Locked=true
-PA5.Signal=S_TIM2_CH1
+PA5.Signal=GPIO_Output
 PB3.GPIOParameters=GPIO_Label
 PB3.GPIO_Label=SWO
 PB3.Locked=true
@@ -119,7 +118,7 @@
 ProjectManager.TargetToolchain=TrueSTUDIO
 ProjectManager.ToolChainLocation=/home/sergey/Projects/ARM_workspace_7.0/l476rg
 ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL,2-SystemClock_Config-RCC-false-HAL,3-MX_USART2_UART_Init-USART2-false-HAL,4-MX_TIM2_Init-TIM2-false-HAL
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL,2-SystemClock_Config-RCC-false-HAL,3-MX_USART2_UART_Init-USART2-false-HAL
 RCC.ADCFreq_Value=64000000
 RCC.AHBFreq_Value=80000000
 RCC.APB1Freq_Value=80000000
@@ -175,12 +174,6 @@
 RCC.VCOSAI2OutputFreq_Value=128000000
 SH.GPXTI13.0=GPIO_EXTI13
 SH.GPXTI13.ConfNb=1
-SH.S_TIM2_CH1.0=TIM2_CH1,PWM Generation1 CH1
-SH.S_TIM2_CH1.ConfNb=1
-TIM2.IPParameters=Prescaler,Period,Pulse-PWM Generation1 CH1
-TIM2.Period=99
-TIM2.Prescaler=799
-TIM2.Pulse-PWM\ Generation1\ CH1=29
 USART2.IPParameters=WordLength
 USART2.WordLength=UART_WORDLENGTH_8B
 VP_SYS_VS_tim6.Mode=TIM6